From xen-devel-bounces@lists.xenproject.org Sun Nov 01 01:55:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 01:55:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467093.1676566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNKme-0006tn-LL; Sun, 01 Nov 2026 01:54:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467093.1676566; Sun, 01 Nov 2026 01:54:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNKme-0006tf-GI; Sun, 01 Nov 2026 01:54:56 +0000
Received: by outflank-mailman (input) for mailman id 1467093;
 Sun, 01 Nov 2026 01:54:55 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <takakura@valinux.co.jp>) id 1xNKmc-0006tZ-BJ
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 01:54:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNKmb-00GjsX-HI
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 02:54:53 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae69b5c-8faa-0a2a0a5109dd-0a2a450a9780-24
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 02:54:51 +0100
Received: from [52.101.125.135]
 (helo=TYVP286CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae69be8-f2d2-0a2a450a0019-34657d875f53-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 02:54:50 +0100
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19) by TY6P286MB7882.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:405:3a4::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.11; Sun, 1 Nov
 2026 01:54:46 +0000
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82]) by TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82%5]) with mapi id 15.21.0569.010; Sun, 1 Nov 2026
 01:54:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" 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=jI4Cz6b0qjNjo00eoVNVJ8m7iV5vxXO+M/7qyry6kfX8fcrLdvS07BvTl0oxWzKXHrpGgYh4BR7ByRpGiJBEGYwRa9tYt7BOiCiXg6EeDDxDUlsuD0V8RVJHIGn8hj35Jk46ZC+l/iHs3nFzL4L16dNnWjbmqq7XeTOu2yRhoaBG7Zuc+xpWQTmIGdCPJOBTDZNzcxcMAk41vJ0rvgQT/zpMJ37fHwIItqacFxeajxWdpHf9Mc3Hl717Lstm8RN74/dDaqU/njvERrfWj2h0kqwfW8kZn/qcbiJyTnRNTeURANDYCGv4LHw3rblpgZG5mucwPzmO4Gy1NDukmOKd8Q==
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=sL5SxGpPzhzvX7dPFXAB/JSuM8gKeu9uYyfyp54+tP0=;
 b=iJ3sCsIJmIbMVw33ZXLJAz23ErgJfAWo5O6RhdhinRTe7Az0n5NKE86IEhpovfvo82cA5PqRjMb3RqOpDYrpjNJbO6iNDLlv0yn+fCFokoJnJM5ZKusxhM4tOPzVYb5EodmTTi7F1XwEZ4OtbwYH/wihNcA3YRyqS6dgAJh/oIxZ3Rdf694LzUod0W+vnLVYpW3aYE4gihBCbPKNQFZLVsYkHPwLRNjsuXTxccZa1aqM8kTesAB/sYd5Pt2Fe1faW5pteHfqNGrum6ZXxOYazN0lgsm3kRPy6tR2a9WEW2+9Hcou+Fz8grTl1/ioPtfLOjnBtZsuXAEl6V+Vz+HmxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=valinux.co.jp; dmarc=pass action=none
 header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sL5SxGpPzhzvX7dPFXAB/JSuM8gKeu9uYyfyp54+tP0=;
 b=pW0xiT/k0yu2y/v8jROX0yA6Zj8xFclXu0zX7t/CT4Uu7AciJ+DcgSQXJhNx43j4m+7vtYPCQlIH74FykQlm5+4Y5ij+TFVeOddRjuJvaFJhphAYKCoc5qSWMbYOu9HJNdYL7/jxwSnY9WtbU/IA/+hrkc7cCo8FLlf76lpYD5k=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=valinux.co.jp;
From: Ryo Takakura <takakura@valinux.co.jp>
To: jbeulich@suse.com
Cc: takakura@valinux.co.jp,
	xen-devel@lists.xenproject.org
Subject: Re: [RFC 0/5] Introduce dynamic tracer using Livepatch
Date: Sun,  1 Nov 2026 10:54:24 +0900
Message-Id: <20261101015424.2736-1-takakura@valinux.co.jp>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <7028568e-8b24-417e-9fe8-f0a4d4f8b0a6@suse.com>
References: <7028568e-8b24-417e-9fe8-f0a4d4f8b0a6@suse.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: OS7PR01CA0175.jpnprd01.prod.outlook.com
 (2603:1096:604:24c::12) To TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: TY5P286MB319683:EE_|TY6P286MB7882:EE_
X-MS-Office365-Filtering-Correlation-Id: 772b6d60-feb7-4f6a-e914-08df37bb1aec
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|10067099003|18002099003|22082099003|56012099006|261021121427099003|261021123027099003|261022075727099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	uPrttFBlPgdJrulRX/NETWjSfuMbyfTRhGEa39SN1kWzlMmdMG7GlucJ7JiqWVVb5UOzg/Bt1oOn5Kkh4VLn8osA/5rKGNYI5VBOrtNAtllQMSlfcWHdd5QowzCGuUZ9DD/jCeilFzRutavAyP8J31cfbsirK6AaSaH/SFlNCjmvulkhkk6tYOo+heUJtFc1wp2yQgogyAq7tT3a2qRbNInanxnTbgRZfKogRovCJ/0Lby7zMimRy6H3zc0IwT7vm02lhbpyW3o8/RqA6ySJjFVVuHKtzokUMx/hphBCNe5WMkd2Ze9SwyqihFGt2T+Pspgov6bHrUKQPQIy8oCgQUQMNu8UosdtJj7+2PhwpKqqJmTM6iBFBTZgP3AcElz05OnKD41wLpveJOcfHX8w3eFSqAAuOvp1qlsr/41DK+SHpA57o2Dg9r4UmRYuA+wQUR4YIZChEcFc7IU2Wgwmqhx+u+ts7p5podoy0nU3bp2lmNtuhgJjbqRn5NsajmUzCV1FIgcR9VAhufJwRkHA/LCw/zJteYmScthnRX9iTWumwvAy7ZjwQIIHTI4SyFBuEzuzcPVa36T5uhFejsu0wHPiqc1aAwiVC84e335qbXVXRy6qLVtmp+YBvASK0E98DxDYHA9PxDm1f43cvr4FZk6MTyxOKu3HW9h41urTPsE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(10067099003)(18002099003)(22082099003)(56012099006)(261021121427099003)(261021123027099003)(261022075727099003)(261009223027099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?ItLJnYplimx0xz+qx35znC9R4X729PNgLPf1+6iLhToTR+AGCqsjX1h9UW+8?=
 =?us-ascii?Q?7Ls/le9sV9vZOxu1qIbvLRlHEFejeGhkE5s/qUDNJC9BlYL904tYQVhLvv7Z?=
 =?us-ascii?Q?BngyZ5RTDpFTaWGDRTKSY4eA2Rsi/ImZ7cMPFCKigKQVzjxAwW8wcCR+DUN0?=
 =?us-ascii?Q?q7XxpSo9R1o92tnJZqB/VKbBnnvGcLyEG8Qms/FR1F3QrnSAH/ZCdpC1dY42?=
 =?us-ascii?Q?yvaplOCdFqQIwFaOmyiMsw1O48z5h1Bqq8icsNJJWMWK43lLES//+oHbWPGB?=
 =?us-ascii?Q?sOUPtoTjdOUkDseqKYX82kEdmJyQx/W8rvrYl2MCF5/Glv+crlfuAP+Z4hCR?=
 =?us-ascii?Q?cqEhqXpDxjdBITRGRg+PHIgEUhWJ6jUfgORYvK2mm5piabb038ovh0z/ap12?=
 =?us-ascii?Q?plceYtnEKXmNu50k80CVhpzzFcfzwfRxowxJZqcY1o0cgIXmLy/sRv7lOgQY?=
 =?us-ascii?Q?jfmP+d41wdw0+1WeAyjjn5jzgbGfwdNu5AMu57IgyzdVzD99RH2oyLEnPxri?=
 =?us-ascii?Q?+dtLlaHDVT0Z6cpaYiQxgmsI7P42tdY61lTEoMILwE/O7smYXjEE2FNamAdZ?=
 =?us-ascii?Q?W23kw7Yvow/4j2GMR1NgSgPj7D7M10TecW2lmK39qKp+oqwOKmuaw7aWTvN0?=
 =?us-ascii?Q?kNu8wIFHkGWDoW9WPRkTjlXklJSiEr5l9sdz7IFHu/+5koIY/K4VZqRM/ZfU?=
 =?us-ascii?Q?isf48YQ2z7US6OUWoDXZLzMQZu6tVkA9vfiPUT5cFehRu+3AjBatFLZ1Fa6a?=
 =?us-ascii?Q?XP2OyDTrbfD/GpTwzz7sR+6ZvcGYkWyyJz4PNkvCwuQIneTfuErojB+9UNzM?=
 =?us-ascii?Q?ehP2FxKzK1stqtpbECLk9wYbKYvlDB52YPlWC/K/fQwWDbY+O4eXT9k6s+tI?=
 =?us-ascii?Q?WA6xEkb23jsKMRBeCOCOMa/6To974BR4kq+6teS4qYB3TlaoKwgH6gS9WNVw?=
 =?us-ascii?Q?uImcIv/5F8f21gtGwdTetEGrOPSileUaMmt7cTakkloHV9O0ipqE+fbSNGVk?=
 =?us-ascii?Q?11BHFKtTy5re9iFI5uyGFq+R1sD2qhPCqO1HYPDh3j6uIKzrtjDWJv3kmawv?=
 =?us-ascii?Q?gi5BwXkFv40Ya87HRWloyivX9nn41Ig7PwZ/OC2s55uUz/OBRL/Be9RyAny2?=
 =?us-ascii?Q?j8NXovy4HEdCCmv8jFlu15j92xv6hwbGVyeDoHz+e4hgNX86sMvJNzeySyhu?=
 =?us-ascii?Q?E/3WZ1b3160LSXbuHrQgbNy7J7odt7SSS0XS9rVtwK1OYrRH8cSCdsOy9Jf+?=
 =?us-ascii?Q?I2LlGApwMNAZ626+cqwzGcBr2stY+DwB1oEbu3+c8h5IpSjLRAWmSj3s8B0q?=
 =?us-ascii?Q?lhYU3dzMPhA2XkMgyrH+eCi1SU2Y8ItTyEusZ//SHmj7sJCoq2W3Cpe8AB8u?=
 =?us-ascii?Q?QOtnL5dbGPFgzhi3OxnzgrlBcK6ii+yrqfOeBVhtLiCdUjy3EdPXXsrJPGxy?=
 =?us-ascii?Q?/lXL6GG8l7a2jYQLb570L4GGvj6DKHYLuojOugrWw3D3E+RnPEMIM8Lj0tlX?=
 =?us-ascii?Q?GWVDEhmOUVImZqGuOXL//zdbrPLkHh4X1+kKmuP7k/8EE42UTlCBbJXuPrv3?=
 =?us-ascii?Q?HJbMk9hvujoBKe+HHbEENt6/l0pN63ESrYHWqxQC/ijMosc3q+zBxI5M3Z0x?=
 =?us-ascii?Q?xWZ+++YYLlwype0T9mtcKJtPEs2xBAfcjuk0wbDe3rz2q1Eg2hYxYJPzlwWp?=
 =?us-ascii?Q?/DpxqONSKLcec6GppBpRBLsTVLk7y3I9wDO6I6YAPf00Xysf4Ahg/m+TjgeT?=
 =?us-ascii?Q?EQ6DYt+wIg=3D=3D?=
X-OriginatorOrg: valinux.co.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: 772b6d60-feb7-4f6a-e914-08df37bb1aec
X-MS-Exchange-CrossTenant-AuthSource: TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2026 01:54:46.0739
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 8fu7Pkh6pbRzwNeh8UED88lkmGpYDmEJEbygYSvnYodPMhJmEDAjbyRSp0UII50AbVsJpWe5655MVJwAIVc+KA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY6P286MB7882
X-purgate-ID: tlsNG-4011c0/1793498091-4BCD3CFC-41CD45B8/0/0
X-purgate-type: clean
X-purgate-size: 2110

Hi, Jan!

Thank you for taking a look at the series.

On, Fri, 30 Oct 2026 11:31:23 +0100, Jan Beulich wrote:
>On 23.10.2026 06:48, Ryo Takakura wrote:
>> Ryo Takakura (5):
>>   xen/arm64: livepatch: enable attaching callbacks
>>   xen/livepatch: Allow tracers to schedule livepatch
>>   xen/tracing: prepare a livepatch payload and its controling interface
>>   xen/tracing: Add a function tracer
>>   xen/x86: livepatch: enable attaching callbacks
>> 
>>  xen/arch/arm/Kconfig                  |  13 +
>>  xen/arch/arm/arch.mk                  |   3 +
>>  xen/arch/arm/arm64/Makefile           |   1 +
>>  xen/arch/arm/arm64/insn.c             |   5 +
>>  xen/arch/arm/arm64/livepatch-asm.S    |  68 +++
>>  xen/arch/arm/arm64/livepatch.c        |  39 ++
>>  xen/arch/arm/include/asm/arm64/insn.h |   1 +
>>  xen/arch/arm/xen.lds.S                |   5 +
>>  xen/arch/x86/Kconfig                  |  13 +
>>  xen/arch/x86/Makefile                 |   1 +
>>  xen/arch/x86/arch.mk                  |   3 +
>>  xen/arch/x86/livepatch-asm.S          |  60 +++
>>  xen/arch/x86/livepatch.c              |  33 ++
>>  xen/arch/x86/xen.lds.S                |   5 +
>>  xen/common/Kconfig                    |  12 +
>>  xen/common/Makefile                   |   6 +
>>  xen/common/function_trace.c           | 274 ++++++++++
>>  xen/common/hypfs_trace.c              | 743 ++++++++++++++++++++++++++
>>  xen/common/livepatch.c                | 137 ++++-
>>  xen/include/xen/hypfs_trace.h         |  42 ++
>>  xen/include/xen/livepatch.h           |  14 +
>>  xen/include/xen/livepatch_payload.h   |   7 +-
>>  22 files changed, 1478 insertions(+), 7 deletions(-)
>>  create mode 100644 xen/arch/arm/arm64/livepatch-asm.S
>>  create mode 100644 xen/arch/x86/livepatch-asm.S
>>  create mode 100644 xen/common/function_trace.c
>>  create mode 100644 xen/common/hypfs_trace.c
>>  create mode 100644 xen/include/xen/hypfs_trace.h
>
>Nit: Dashes in favor of underscores please in new files' names.

Understood. I'll rename them in the next version.

Sincerely,
Ryo Takakura


From xen-devel-bounces@lists.xenproject.org Sun Nov 01 03:11:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 03:11:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467126.1676574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNLys-0007Ap-2T; Sun, 01 Nov 2026 03:11:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467126.1676574; Sun, 01 Nov 2026 03:11:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNLyr-0007Ai-W3; Sun, 01 Nov 2026 03:11:37 +0000
Received: by outflank-mailman (input) for mailman id 1467126;
 Sun, 01 Nov 2026 03:11:37 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xNLyr-0007Ac-3q
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 03:11:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNLyq-00HNKd-DI
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 04:11:36 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae6ad62-e002-0a2a0a5209dd-0a2a45049a4e-34
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 04:11:36 +0100
Received: from [209.85.208.52] (helo=mail-ed1-f52.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae6ade8-b57f-0a2a45040019-d155d034e4b0-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 04:11:36 +0100
Received: by mail-ed1-f52.google.com with SMTP id
 4fb4d7f45d1cf-6b2237b596cso3823931a12.0
 for <xen-devel@lists.xenproject.org>; Sat, 31 Oct 2026 20:11:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793502696; cv=none;
        d=google.com; s=arc-20260327;
        b=NaumzC6sXzakUIXBtsX7ihUoBHz3FWeDQenvdbgwWRscmWLc28FmJbShsLKDfV6Jop
         qNI43ihfwBX+tiNr3E4JeIV7SUavij+IXW+n+lIIHg5R+iG9tTsjQ9x4Wr4JkxJaeyZp
         114LCeldopUds3+JoLOlraevVg4xNGdNBWjENi+68oU2ka10Te1c3W3qlkA9f2x8yVyi
         9RbHNL1CxsAMJ/+7u6HtprfwtBFpJ1ED4U0vjvc+6S+RRrt4m3ABUcZt84TcunMqAM/o
         17zwUmHpqlyp+FW4tmj8TKkvQhg9rEgo0HbJQZGhNcTg3Ve0OHr1t/JERUWbDYw5LIdA
         A9yw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=vhYx8NCTJ3gLuFoY2YcO8xoKIGGtbLmWpknfBd4Xk+g=;
        fh=kdsjTlqf/BJQA81FXUx/qHxqjNjs3jRj3RGoPk1XFRk=;
        b=hmPuxWqbk/vkAVtNTKfmOgMumtdUUD3HX1WX/02wVJUB4GDqMvPJPk8ueJEVY1HkaS
         Kh8g6C2Gvrj5T/rW0PK32/YdhNZ3Msde83fvQ3yA/6wxZD+6ukyQSUaFyckdbdPIP82p
         /sEN1rQC8X1isNVkbsw5zU+AsgOsg04+kcwkMozuHwF/fknrFxr0stUDl6Vs0pbcDOU5
         yLAO1MUdLMjCECZc8ZMyipVVFMxgHRqoHeRd/6WdNvt2ih6fHcJ49P+zFV7FFmMsLcsd
         lO6Mcyr7yMASZt13bspysspmbHTy1x1AhY+VWpJpbkDIthJehWRevOKqmZw59j49cf0B
         PlLQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793502696; x=1794107496; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=vhYx8NCTJ3gLuFoY2YcO8xoKIGGtbLmWpknfBd4Xk+g=;
        b=PXqFcB7xO7Oc/Iom6sL7QhQXGU9TTT1vFrO6HIJ3P9XifE0jv1ty+0Y/xX0acoDwnt
         rs9jsNFQaeGemF1Zd/nlzAxRuNkDjWukQO/jqJBbdAVIiZqlYmjzJ4sWUnLUbGqbV8+x
         ol5Y4DXYFcTXC34hNwyKZEDwpnVObiQoj6jU/VK5u4hVmFItB/1qMo0ejOvCtFsLRW8a
         lg/saRu9wcexF91M50FXGlk/0u5tRPpB46Jj78qyWxLr5lbJQPNIEAgJGcAnp1msAM+s
         McyyC6YQcpGbUcm9nyDNYUwRG4sYVBqUmgOcjSC2qanwh4QEU3EUmcaf6zNbilCDR7gR
         ZM8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793502696; x=1794107496;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=vhYx8NCTJ3gLuFoY2YcO8xoKIGGtbLmWpknfBd4Xk+g=;
        b=iVEzbgDgIISS1JUKXMJWuNB3Meuzb4DQ9m5HQAzq2mqJr2DRVu8qMlI7qTIT+1paIC
         x6X8vfscCh/VvadjFv+j2HVi+H4u9qKGGvs+eJ4xd64eCk7pzD3hmZEzYeA5FX6Bj56l
         HmboaNqCDm0SAkUDcqdNafI/+Rg+MitpUs4oXJCMPpIC1xaBcjKSy0jNMI6Mg2bbLVhO
         EepBxJsE2krPId3hJ2+3dApLNyKAemDnffhCob56UF9Uj7sZ40szCynDSmqAFwaEzQqB
         KWq+l1qbbW56yu63XQVQfAyHgZKRoXV2Uy/r2K0OUCZci4tcTKU5LxY/+CI9nM0sxMdk
         X3Iw==
X-Forwarded-Encrypted: i=1; AKwUvBznO4gquHrfvaHZRaNVSCQXGCWfCKqNDajSzupyPwI7TxqNHaeFW0bo1t1bBxUMUKCcZDCb8dvDd8M=@lists.xenproject.org
X-Gm-Message-State: AFq9FYKEPnDkcFv1FVd/VR3mQimCF1PDShAQA4RcHg/CdrFVyS7f109N
	wkA1LNVbM51EDeNKZcFUTA2UotXUPOKXe564SAVcMqYIxCehR/JrjbawDjduXCoeyI8HGDYUz/c
	sGx1dxNAzXmPPAxeY3uf0sgIwhwRitH4=
X-Gm-Gg: AYBFou2x+hhRloVpkRh8yxPhIXMwBzkkTHmtLeiWPffLyuuYvUHArfy5CFXM07Wx/u8
	6IKI3w2LxX2gXftQBW6wBUw86sic1RvLiT9hau6WJNqxr722leL2G0OqT1GvmVD9/nv7e9cPeR1
	2ehO/ROiKS1BNhAYBVcl1GmzPXnsEGog3xWJ+cLY6q2OMJBe2FNVDkBRA3ZF4ihCE9GvBEnVa+D
	ECjo/DpfRLv4pHseF1H20Pt/SyDfp4qmePihCgV1G63FdBaNNJuL05+9mw/Tz3rHmSSzTA4tXJn
	e9QPHeCIjJZQWPTMKtck1YoKY5ncSoYXNNkelleT1azrNZaQrXYKh9wnHJhJ9v56GHFVMTRECYg
	1tylov9Vqp3vWkeWVMN8Hvsn3e1eqzSOudpZD
X-Received: by 2002:a05:6402:1f45:b0:6b4:59d0:7294 with SMTP id
 4fb4d7f45d1cf-6b4d4c6fdd6mr4363005a12.31.1793502695567; Sat, 31 Oct 2026
 20:11:35 -0700 (PDT)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu>
In-Reply-To: <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Sun, 1 Nov 2026 11:11:23 +0800
X-Gm-Features: AclHuK8ADYiZfnAadMiHgWxlPjajz8RpFN0nm2TYzD60cICsbmJtIpy63UnxYO4
Message-ID: <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1793502696-532CCB50-2D03300C/0/0
X-purgate-type: clean
X-purgate-size: 5856

On Sun, Nov 1, 2026 at 7:29=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> > On Sun, Nov 1, 2026 at 1:06=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> >>
> >> On Sat, 31 Oct 2026, Yonggang Luo wrote:
> >>> On Sat, Oct 31, 2026 at 8:42=E2=80=AFPM BALATON Zoltan <balaton@eik.b=
me.hu> wrote:
> >>>>
> >>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
> >>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and =
the
> >>>>>>> type_init
> >>>>>>> function that calls type_register_static(). A later change needs =
to
> >>>>>>> pass a
> >>>>>>
> >>>>>> That's the point of the macro to hide the boiler plate code.
> >>>>>>
> >>>>>>> target mask into that registration, and the macros have no parame=
ter
> >>>>>>> for it.
> >>>>>>
> >>>>>> Couldn't you just change the macros to take that parameter instead=
 of
> >>>>>> expanding it everywhere?
> >>>>>>
> >>>>>
> >>>>> Problem of macros is that they don't have default parameters, so yo=
u
> >>>>> need variants for everything:
> >>>>>
> >>>>> DEFINE_MACHINE
> >>>>> DEFINE_MACHINE_EXTENDED
> >>>>> DEFINE_MACHINE_WITH_INTERFACES
> >>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>>>> and now would need a new variant, with variant for other existing o=
nes.
> >>>>>
> >>>>> In the end, it's just simpler to remove this and add the boilerplat=
e.
> >>>>> It's written once and never modified, so using a macro just save ty=
ping
> >>>>> those lines once.
> >>>>>
> >>>>>> Regards,
> >>>>>> BALATON Zoltan
> >>>>>>
> >>>>>>> This series expands every caller first, with no behavior change, =
so the
> >>>>>>> follow-up only replaces the type_register_static() call.
> >>>>>>>
> >>>>>>> Each machine file gains a class_init function, a TypeInfo, and a
> >>>>>>> type_init
> >>>>>>> function that calls type_register_static(). The last patch remove=
s
> >>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core/b=
oards.h.
> >>>>
> >>>> Macros help reading the code not saving typing. If the actual
> >>>> functionality is buried in a lot of boiler plate it's harder to unde=
rstand
> >>>> and spot bugs so putting the unintresting boiler plate behind a macr=
o is
> >>>> better even if you need a separate version for different cases. Then=
 the
> >>>> code that uses the macro will be much more obvious and not just a lo=
t of
> >>>
> >>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* are
> >>> not defined properly
> >>> that causes them to not be extended easily.
> >>>
> >>> DEFINE_TYPES is another example, use them can extend easily, how abou=
t
> >>> always use DEFINE_TYPES?
> >>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_MAC=
HINE*?
> >>
> >> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
> >> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't you =
add
> >> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for machi=
nes
> >> that need it, or if it's needed by all machines then make the new
> >> parameter required and add it to all convenience wrappers too so you c=
an
> >> keep using DEFINE_MACHINE* and just need to add one parameter to it in
> >> machines?
> >
> > That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
> > calls to it also need
> > to be changed, that means touch many $target_arch files. currently
> > it's 13. But after these
>
> That's not different from expanding the macro which would touch the same
> files.
>
> > changes, there will be much more usage on it, and if we want to add
> > more parameters or attributes
> > to it, it will be a new tree-wide change.
>
> Do you expect to need more parameters? Can't you add them at once then?
>
> > And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
> > explicit defined for
> > DEFINE_TYPES
>
> My point is that keeping the boiler plate as little as possible makes the
> code more readable. DEFINE_TYPES hides some of the boiler plate,
> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would expose
> some even if it's better than no macro at all.
>
> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED that
> need to be added?

Hi BALATON
the things we faced is we first is to add TypeInfo::is_available parameter =
to
DEFINE_MACHINE_EXTENDED, and have more usage of it.
Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED, thi=
s is
a prepare to remove TypeInfo::is_available parameter from
DEFINE_MACHINE_EXTENDED,

And finally, once all usage of TypeInfo::is_available can be replaced with
targets:uint64_t, then we finally need to remove
TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,

That's what I am facing now. And the explicit
static const TypeInfo xxx_machine_typeinfo =3D {
    .name       =3D MACHINE_TYPE_NAME("xxx"),
    .parent     =3D TYPE_MACHINE,
    .class_init =3D xxx_machine_class_init,
};

Will help me avoid the issue. And I think this is a little boilerplate
and very explicit.


And the
    .instance_size =3D sizeof(MachineState),
is indeed not needed, they sharing TYPE_MACHINE's sizeof(MachineState)
is enough.
Even though DEFINE_MACHINE expands to .instance_size =3D
sizeof(MachineState), and it's redundant.
So I think convert to DEFINE_TYPES would be a good alternative to this
issue, less boilerplate(not none)
And dealt with the issue we faced.

What do you think about this idea, BALATON

>
> Regards,
> BALATON Zoltan



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Sun Nov 01 03:27:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 03:27:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467135.1676583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNMDs-0000Or-7k; Sun, 01 Nov 2026 03:27:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467135.1676583; Sun, 01 Nov 2026 03:27:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNMDs-0000Ok-4u; Sun, 01 Nov 2026 03:27:08 +0000
Received: by outflank-mailman (input) for mailman id 1467135;
 Sun, 01 Nov 2026 03:27:07 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xNMDr-0000Oe-AX
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 03:27:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNMDq-000hLp-GW
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 04:27:06 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae6b16c-e002-0a2a0a5209dd-0a2a45018560-4
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 04:27:06 +0100
Received: from [209.85.218.44] (helo=mail-ej1-f44.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae6b18a-5984-0a2a45010019-d155da2cd5e4-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 04:27:06 +0100
Received: by mail-ej1-f44.google.com with SMTP id
 a640c23a62f3a-c49b431f022so269896466b.1
 for <xen-devel@lists.xenproject.org>; Sat, 31 Oct 2026 20:27:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793503626; cv=none;
        d=google.com; s=arc-20260327;
        b=WQsVB7HQqZZP8VMBTrZklGZI+6mY0pUy/ibFXjTdivApw5HvZGTTWKxKpSh103Wrpj
         nGEONRkT5+ImcYcOPvAKQ4yBUHd/kbtc69qXb2FPR9uUgRn2Hm73Cv844cq6p0VaMPPR
         d9tMmMof+ek0CWfvo99vCJqydyv+wCpvwl4OmReJwp7+D9SbESBocO734ZcG40zpjdnp
         mtZjBdy8JLH7svA7PUzbeFpm5hNdugEf1r1KHhk6+tuK9oCACY4lYAwT/pHmSPKDbEUU
         LFEyFXHyRIi/la64UL7F8NW6ndBDvSCynwbcEsKIApQCYuoKXuUsL/vtw641wZAbarJm
         ry8Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=DWO0Oi5z9yO5iNhbmEE3jx4kds9djaRbLYHcUT+/GCc=;
        fh=I4lCl8Juol8+VLUalVUojFNILuLgyULvPxD0v1k0fnI=;
        b=eYkv+DNoi/1KQU12nAUdWVqjnODsM+RCgW1esVm8CaWYnKeStquUwS8g/gmEILzrXE
         Q7cysxWrD+V9hcKl4NkRCmm7ybp406NCRytwttXgfC6F2JFL55xeJsb2b/yqNh/xcwyZ
         lrOPno8aZWpoIP031S4rgTdyEXgtHnjKdtzn3USAzn9Y1Shf4nY09LZ0+KyFFW42vTOE
         IaH1Px6GDp7yt565D5j8Nx4sD9o2n0kVpFMA96Q1UamDADx8/TJal3OJUPizO8J5sj9v
         sasb4o3o67PTN6npT87qhXr8q0RiXsSEos1nOHfRjlwrqLNt6N0ZuG7E0G7tYq8Fpwf0
         07yA==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793503626; x=1794108426; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=DWO0Oi5z9yO5iNhbmEE3jx4kds9djaRbLYHcUT+/GCc=;
        b=uCHhiIkMOd64iboqH7OccKyvhbu6XjK0XG+DUzTrC4lMWubu4/pVibZmaLqonlyjZj
         /fJKvuNNwGQBlr06DPmPYgd7AyslEok8/0fLqSQ+AKFLMlW/vDPcnesLUcqoTQBHiEi1
         viXvUO1/u1yE4qz15W79XLjW0IczNrhxhK+K9aK/yW8kGSaN7bCedH23E3u9R8Afracb
         eQsMZ0gPfsuFxGOwKH3dQx7mBKzsAU0iSAol2NiVqvc++cjofv/CShzN3Mn47Z/Ckc4I
         ocvU8M46sOEbTqgpJPNEqken3m5b9M+FGF6c+42pjbKRygMa/fdEE5WRmsx9kF2b+kh1
         8LXQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793503626; x=1794108426;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=DWO0Oi5z9yO5iNhbmEE3jx4kds9djaRbLYHcUT+/GCc=;
        b=08cupQ8w7WUciSxkXmk3/K86YKau7DNZBlMnNRncqjqNn7tvtfH3Cd65ph5t9X+Jtt
         ZfXR693D6r7LKgE53IQOJvgs0Nlbk27fPd/yFAUaisdVmbWcwrCChYMYbTxPl5JzYVut
         h/nmlu8nt5pSZNdK4hB+hDdgMqLYjIx+y+TJwRH6tMZArjm6OmW66nIarp8HmhL33DiU
         klPoTfqWnoTgKkrlC35X+cT9e8JOPIuj0ZRkHy2oaGB53VmkaQfQH6D/4cr39jdfZco2
         zPYKuOWp74ygd5qQOOf86zeA2SCy6/pf6pKD5zdArF2/qLYb69UckWAFRnT5buJLd8j/
         5yEA==
X-Forwarded-Encrypted: i=1; AKwUvBwa9I+j0zG5cZASRXejvWPkyQvGGrsVQ6INTSejxlYSqRZYqDrSnkCGkWUqGNOuG4b5K+AAYz4/OB4=@lists.xenproject.org
X-Gm-Message-State: AFq9FYLcgqWxNUlxzYHJ9vmDqEGRcsy2PVhinEw24thBkitWQ/Tn25MA
	z7LCBm+CzjblISo/UIHF8olOPF9d0LKg7bLVLQDCEPu1ORYJrXTz/FXk/gUf9Swn44wDycGCG9Q
	dqVX0xS4zMmZW2/BncR60QK7wMngHD0M=
X-Gm-Gg: AYBFou2bSGkyop4ztg/87VhvHQYYlBNTB5E/VLiv5/2w35UzLgqiHhKhm17LRqb7jSK
	onqqCSApbmIyuoiReRyvmJRxL2+o1mPqiD0jc/Czn/O7kyAv0gQODAFZHcHZgCmX0rtiqR5Evgh
	PS0Mc6tvB3uM7P1Sax1nfW58Aq1iY3Rer1AbIj6iZUTsyc60Emygf+asw3LrJNUnJz48VAQiHJR
	ocGZmIOMqI4EIvREldRNFKzCxQNXknK4yjo1pxunVEzWe7a1DlCBhtlpLTB2vgUjQM016jZ2EmX
	vGSGURrqZb5JFwh4hOdZYQ6EEnJFFajQPqIPhbReozI5wcWGzHLOiWJXnsC0k0Mx8X01If3gZZw
	lrlSQDWEZ9y14O9Z9fmEMYzEFKzBb1Kiya1tg9Q==
X-Received: by 2002:a17:907:6d05:b0:c3f:c856:fb7a with SMTP id
 a640c23a62f3a-c4ca793baa3mr525308866b.3.1793503625809; Sat, 31 Oct 2026
 20:27:05 -0700 (PDT)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu>
In-Reply-To: <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Sun, 1 Nov 2026 11:26:53 +0800
X-Gm-Features: AclHuK9057t8H_kvHtA0m7bf23Rw45MDO_-qUsQ8r90mDc2w3RogzzSts7xwUEo
Message-ID: <CAE2XoE-fkc-PqKsx4Lf+RdHxqctAS2TSuqueGFrnea2jaiQXnA@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d62444/1793503626-C495A757-F67212D7/0/0
X-purgate-type: clean
X-purgate-size: 4955

On Sun, Nov 1, 2026 at 7:29=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> > On Sun, Nov 1, 2026 at 1:06=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> >>
> >> On Sat, 31 Oct 2026, Yonggang Luo wrote:
> >>> On Sat, Oct 31, 2026 at 8:42=E2=80=AFPM BALATON Zoltan <balaton@eik.b=
me.hu> wrote:
> >>>>
> >>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
> >>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and =
the
> >>>>>>> type_init
> >>>>>>> function that calls type_register_static(). A later change needs =
to
> >>>>>>> pass a
> >>>>>>
> >>>>>> That's the point of the macro to hide the boiler plate code.
> >>>>>>
> >>>>>>> target mask into that registration, and the macros have no parame=
ter
> >>>>>>> for it.
> >>>>>>
> >>>>>> Couldn't you just change the macros to take that parameter instead=
 of
> >>>>>> expanding it everywhere?
> >>>>>>
> >>>>>
> >>>>> Problem of macros is that they don't have default parameters, so yo=
u
> >>>>> need variants for everything:
> >>>>>
> >>>>> DEFINE_MACHINE
> >>>>> DEFINE_MACHINE_EXTENDED
> >>>>> DEFINE_MACHINE_WITH_INTERFACES
> >>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>>>> and now would need a new variant, with variant for other existing o=
nes.
> >>>>>
> >>>>> In the end, it's just simpler to remove this and add the boilerplat=
e.
> >>>>> It's written once and never modified, so using a macro just save ty=
ping
> >>>>> those lines once.
> >>>>>
> >>>>>> Regards,
> >>>>>> BALATON Zoltan
> >>>>>>
> >>>>>>> This series expands every caller first, with no behavior change, =
so the
> >>>>>>> follow-up only replaces the type_register_static() call.
> >>>>>>>
> >>>>>>> Each machine file gains a class_init function, a TypeInfo, and a
> >>>>>>> type_init
> >>>>>>> function that calls type_register_static(). The last patch remove=
s
> >>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core/b=
oards.h.
> >>>>
> >>>> Macros help reading the code not saving typing. If the actual
> >>>> functionality is buried in a lot of boiler plate it's harder to unde=
rstand
> >>>> and spot bugs so putting the unintresting boiler plate behind a macr=
o is
> >>>> better even if you need a separate version for different cases. Then=
 the
> >>>> code that uses the macro will be much more obvious and not just a lo=
t of
> >>>
> >>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* are
> >>> not defined properly
> >>> that causes them to not be extended easily.
> >>>
> >>> DEFINE_TYPES is another example, use them can extend easily, how abou=
t
> >>> always use DEFINE_TYPES?
> >>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_MAC=
HINE*?
> >>
> >> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
> >> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't you =
add
> >> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for machi=
nes
> >> that need it, or if it's needed by all machines then make the new
> >> parameter required and add it to all convenience wrappers too so you c=
an
> >> keep using DEFINE_MACHINE* and just need to add one parameter to it in
> >> machines?
> >
> > That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
> > calls to it also need
> > to be changed, that means touch many $target_arch files. currently
> > it's 13. But after these
>
> That's not different from expanding the macro which would touch the same
> files.
>
> > changes, there will be much more usage on it, and if we want to add
> > more parameters or attributes
> > to it, it will be a new tree-wide change.
>
> Do you expect to need more parameters? Can't you add them at once then?
>
> > And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
> > explicit defined for
> > DEFINE_TYPES
>
> My point is that keeping the boiler plate as little as possible makes the
This is also what I want, makes the code more readable and little boiler pl=
ate.
> code more readable. DEFINE_TYPES hides some of the boiler plate,

The DEFINE_TYPES would be like this:

static const TypeInfo dp264_types[] =3D {
    {
        .name       =3D MACHINE_TYPE_NAME("clipper"),
        .parent     =3D TYPE_MACHINE,
        .class_init =3D clipper_machine_class_init,
    },
};

DEFINE_TYPES(dp264_types)


> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would expose
> some even if it's better than no macro at all.
>
> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED that
> need to be added?
>
> Regards,
> BALATON Zoltan



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Sun Nov 01 09:08:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 09:08:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1466758.1676594 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNRXm-0007Gc-SX; Sun, 01 Nov 2026 09:08:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1466758.1676594; Sun, 01 Nov 2026 09:08:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNRXm-0007GV-Nx; Sun, 01 Nov 2026 09:08:02 +0000
Received: by outflank-mailman (input) for mailman id 1466758;
 Sat, 31 Oct 2026 13:22:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <hippalectryon@protonmail.com>) id 1xN92f-0000yh-P0
 for xen-devel@lists.xenproject.org; Sat, 31 Oct 2026 13:22:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xN92e-00CGf8-RT
 for xen-devel@lists.xenproject.org; Sat, 31 Oct 2026 14:22:40 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <hippalectryon@protonmail.com>)
 id 6ae5eb81-e002-0a2a0a5209dd-0a2a4504deec-24
 for <xen-devel@lists.xenproject.org>; Sat, 31 Oct 2026 14:22:40 +0100
Received: from [109.224.244.28] (helo=mail-24428.protonmail.ch)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <hippalectryon@protonmail.com>)
 id 6ae5eba0-b57f-0a2a45040019-6de0f41c8a5f-3
 for <xen-devel@lists.xenproject.org>; Sat, 31 Oct 2026 14:22:40 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=protonmail3 header.d=protonmail.com header.i="@protonmail.com" header.h="Date:To:From:Cc:Subject:Message-ID:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
	s=protonmail3; t=1793452959; x=1793712159;
	bh=Pyv3gFJcRcLxJPgmWMAiEaUERPQvoCSqmhyXW8/Iubw=;
	h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date:
	 Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector;
	b=UMXRmLLAFOg60ScsSxvNjj06tAJNsC7BBhQ2DWVZFomD9a/QKNQL5pn+tDygUdhpB
	 sPmJaMcSquyZD3ehMr/FuZcunU6EqZS2SoEuJCm/YcVswzeTP497WZGpgiOyFWVef+
	 M4SErhiAFvD+DpnJOcIPNprGfsFjx76U+MN/Mqjza7H1ZkutET8olnOoYlGMIQ8PHD
	 AZcTNCAN1dg5uvNKfueCPqgL6lI6pN3v9wdAGgfsxP66Ws4Uddvc7LP4irLXH0XMxM
	 NJ+dB9648/GwL4yL3ToNUt2GzYNVAYzcV5c3zS0El6Fb25LbT0uAbxSaTh1NknXu/E
	 yLMJujWjF96QQ==
Date: Sat, 31 Oct 2026 13:22:34 +0000
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
From: hippalectryon@protonmail.com
Cc: "jbeulich@suse.com" <jbeulich@suse.com>, "andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>, "roger@xenproject.org" <roger@xenproject.org>
Subject: x86/p2m: mapping a grant of a domain's own page on HVM/PVH  unmaps the original gfn
Message-ID: <2DneAh-CXJlcHA5aISMPcKJm8Q8kOW2_02w_fam2if2BB1WKUlNRB7RLXeSEJWSUvIwhUBQwvGFytpWa-avIgPdmGb7qYPViE9jDnXyrnsM=@protonmail.com>
Feedback-ID: 1135737:user:proton
X-Pm-Message-ID: 9b41e0315081ef224e0554c8d1c04f9b2c1d5a81
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1793452960-52ECEB50-C3C9BC48/0/0
X-purgate-type: clean
X-purgate-size: 3404

Hello,

On x86 HVM/PVH, when a domain maps a grant that it issued to itself
(granting domid =3D=3D own domid), the original gfn of the granted page
loses its backing. I ran into this while looking at why Qubes OS
blocks vchan connections from a domain to itself:
https://github.com/QubesOS/qubes-issues/issues/951

I tested this on Xen 4.19.5 (Qubes OS R4.3 build, running nested)
with a PVH Linux 6.18 guest, from inside the guest using libxengnttab
(gntalloc + gntdev) and libxenevtchn with the guest's own domid as the
peer. Here's what I see:

- xengntshr_share_pages() to own domid, then
  xengnttab_map_grant_ref() of that ref: both succeed.
- The new mapping reads the page's old contents (zeros). The
  granter's own mapping of the page then reads all 0xff, and writes
  through it are lost. This stays the case after unmap.
- Seconds later the guest oopses in fork (__split_huge_pmd_locked, a
  page table entry read as all ones): Linux reused the lost frame as a
  page table.
- With libxenvchan the server reads the ring's cli_live byte as 0xff
  and both sides hang.
- Event channels bound to self work fine. Without the map step the
  shared page behaves normally.

Reading the code, I believe the cause is in p2m_add_page(), which the
grant map reaches via create_grant_p2m_mapping(). Its second loop
looks up the M2P entry of every frame owned by d, and if the frame is
already mapped at another gfn, it treats the new mapping as a move and
calls p2m_remove_entry() on the old gfn. For a foreign grant owner !=3D d
and the loop skips it, but for a grant of d's own page the original gfn
gets removed. On unmap, replace_grant_p2m_mapping() only removes the
grant entry, so the original gfn never comes back.

The check dates from b37d30c8fc ("Mapping grant references into HVM
guests, take 2"), whose comment said "If we get here, we know the
local domain owns the page, so it can't have been grant mapped in".

This change fixes it for me. I tested it on 4.19.5 with the Qubes
patches, and it applies to current staging:

--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ p2m_add_page()
-        if ( owner !=3D d )
+        /*
+         * A grant mapping of a domain's own page adds a second gfn for it=
;
+         * the page must stay mapped at its original gfn.
+         */
+        if ( owner !=3D d || p2m_is_grant(t) )
             continue;

p2m_add_page() already leaves M2P alone for grant types, and unmap
goes through p2m_remove_entry(), which leaves M2P alone for
P2M_SPECIAL_TYPES, so the original gfn's M2P entry stays valid.

With this change, the self-mapped page reads and writes correctly in
both directions, the original mapping still works after unmap, there
is no oops, and libxenvchan loopback works. After also removing
qrexec's loopback checks, qrexec calls and file copies from a guest to
itself worked too, including concurrent calls and killing both ends
in the middle of a transfer. A build of the same tree without the
change fails the same way as stock.

I haven't tested PV guests (I couldn't boot one on this setup),
migration or log-dirty mode, or Xen versions other than 4.19.5.

I can't send a signed-off patch myself. If the fix looks right, could
someone pick it up, or suggest a better approach (for example
rejecting such mappings instead)?

Thanks,
Hippalectryon


From xen-devel-bounces@lists.xenproject.org Sun Nov 01 15:50:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 15:50:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467311.1676601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNXp0-0003hV-Ge; Sun, 01 Nov 2026 15:50:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467311.1676601; Sun, 01 Nov 2026 15:50:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNXp0-0003hN-Dw; Sun, 01 Nov 2026 15:50:14 +0000
Received: by outflank-mailman (input) for mailman id 1467311;
 Sun, 01 Nov 2026 15:50:13 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1xNXoz-0003hG-69
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 15:50:13 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <julien@xen.org>) id 1xNXoy-00000008yN3-3AQM;
 Sun, 01 Nov 2026 15:50:12 +0000
Received: from [2a02:8012:3a1:0:397b:b150:72c2:4d41]
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2)
 (envelope-from <julien@xen.org>) id 1xNXoy-0000000GLGK-1PW4;
 Sun, 01 Nov 2026 15:50:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Cr3FqbLYjdgT3NcfQijGukin/aH4gKsG2FWE93n9iPs=; b=G9sfsBo3IEeJjpuFPZI0+L5+jc
	r+huzPvCKdPa1AKE3CpvcbOU5eLca6JJ+dGykoMhhRVqsTM2brl/wxDyx7Eha9cxUsVDhmpdia+jK
	Wg5vc4Fwq0FHcyXS+HtOMQ9VI4I+lRMemHTQ0Fvs5NHj/vd2mVf6LZVYL0YSn0SxFiFA=;
Message-ID: <ab2650fa-88e8-472c-8def-5bf794392dac@xen.org>
Date: Sun, 1 Nov 2026 15:50:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/1] xen/arm: populate a default P2M pool for new
 domains
To: Julian Vetter <julian.vetter@vates.tech>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <1793353546.8631fc262581453bbf619ec5b2062170.1a18c337b6e000cae1@vates.tech>
 <1793353749.8631fc262581453bbf619ec5b2062170.1a18c369323000cae1@vates.tech>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <1793353749.8631fc262581453bbf619ec5b2062170.1a18c369323000cae1@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Julian,

On 30/10/2026 09:49, Julian Vetter wrote:
> On x86, a domain can be populated directly after the
> XEN_DOMCTL_createdomain call. Sizing the pool is thus an optional tuning
> step for the toolstack (libxl: "the Xen minimum is for safety, not
> performance").
> 
> On ARM however, the P2M pool of a non-hardware domain starts empty. So,
> any toolstack must size the pool before populating the domain's physmap,
> otherwise no P2M tables can be allocated. This is an ARM specific step,
> which every toolstack has to know about.

Can you explain why this is a problem to modify the toolstacks? We 
designed the domain creation specifically to avoid the pre-allocating 
the P2M pool.

Furthermore, you say you want to be consistent with x86 but...

> 
> Instead, populate a default pool of 256 pages (1MByte) in p2m_init(),
> matching what x86 HAP does in hap_enable(). The size is intentionally
> fixed, because p2m_init() isn't preemptible, so the allocation must stay
> bounded. Then dom0less and libxl set the full size, as they do today.
> 
> Skip the hardware domain, which has no dedicated P2M pool. Also skip LLC
> colored setups, as the domain's colors are only configured after domain
> creation, so the pool pages would be allocated with the default colors.

... on Arm we will have inconsistency between the various configuration.

My preference is we modify the toolstack rather adding, what seems 
random, 256 pages at domain creation.

> 
> Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
> ---
> Changes in v3:
> - Use a fixed default of 256 pages, as x86 HAP does
> - Drop the domain_p2m_default_kb() helper and the dom0less change
> - Adapt the commit message to explain why a fixed size is used
> 
> Changes in v2:
> - Size the default pool based on the exisiting formula
> - Rewrite commit message to explain why a default pool is desirable
> ---
>   xen/arch/arm/mmu/p2m.c | 21 +++++++++++++++++++++
>   1 file changed, 21 insertions(+)
> 
> diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
> index 70d7c9fed9..9579e905d8 100644
> --- a/xen/arch/arm/mmu/p2m.c
> +++ b/xen/arch/arm/mmu/p2m.c
> @@ -3,6 +3,7 @@
>   #include <xen/domain_page.h>
>   #include <xen/ioreq.h>
>   #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/sched.h>
>   #include <xen/softirq.h>
>   
> @@ -1555,6 +1556,26 @@ int p2m_init(struct domain *d)
>       if ( rc )
>           return rc;
>   
> +    /*
> +     * Populate a default of 256 pages (1MB) to the P2M pages pool here, as
> +     * x86 HAP does. So, the domain is usable without the pool being sized
> +     * first. The toolstack, or dom0less, still sets the full size later,
> +     * taking the domain's RAM into account. A fixed size keeps this
> +     * non-preemptible allocation bounded, independent of the number of vCPUs.
> +     *
> +     * Skip the hardware domain, which has no dedicated P2M pool, and LLC
> +     * colored setups, as the domain's colors are only configured after domain
> +     * creation.
> +     */
> +    if ( !is_hardware_domain(d) && !llc_coloring_enabled )
> +    {
> +        spin_lock(&d->arch.paging.lock);
> +        rc = p2m_set_allocation(d, 256, /* can_preempt */ false);
> +        spin_unlock(&d->arch.paging.lock);
> +        if ( rc )
> +            return rc;
> +    }

Regardless what I wrote above, have you confirmed that the rest of the 
logic will be able to cope in case of failure? At least 4dbcb0653621 
("xen/arm: Defer GICv2 CPU interface mapping until the first access") 
use it as an argument to not have a default pool.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Sun Nov 01 20:58:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 20:58:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467456.1676611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNcck-0006SZ-Af; Sun, 01 Nov 2026 20:57:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467456.1676611; Sun, 01 Nov 2026 20:57:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNcck-0006SS-7L; Sun, 01 Nov 2026 20:57:54 +0000
Received: by outflank-mailman (input) for mailman id 1467456;
 Sun, 01 Nov 2026 20:57:52 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaton@eik.bme.hu>) id 1xNcci-0006SM-ES
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:57:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNcch-001UhM-Kl
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:57:51 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae7a7c3-8faa-0a2a0a5109dd-0a2a4508abe4-6
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:57:51 +0100
Received: from [152.66.115.2] (helo=zero.eik.bme.hu)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae7a7ce-f659-0a2a45080019-98427302ed1e-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:57:51 +0100
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 71E2760C4F3;
 Sun, 01 Nov 2026 21:57:50 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP
 id mCh3cla3ce1m; Sun,  1 Nov 2026 21:57:48 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id 4A66260C4F1; Sun, 01 Nov 2026 21:57:48 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 4296813991F;
 Sun, 01 Nov 2026 21:57:48 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Virus-Scanned: amavis at eik.bme.hu
Date: Sun, 1 Nov 2026 21:57:48 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Yonggang Luo <luoyonggang@gmail.com>
cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
    qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
    Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
    Philippe Mathieu-Daude <philmd@mailo.com>, 
    Antony Pavlov <antonynpavlov@gmail.com>, 
    Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
    =?ISO-8859-15?Q?Herv=E9_Poussineau?= <hpoussin@reactos.org>, 
    Max Filippov <jcmvbkbc@gmail.com>, 
    Niek Linnenbank <nieklinnenbank@gmail.com>, xen-devel@lists.xenproject.org, 
    qemu-riscv@nongnu.org, Jean-Christophe Dubois <jcd@tribudubois.net>, 
    qemu-ppc@nongnu.org, Alexandre Iooss <erdnaxe@crans.org>, 
    Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
    Jiaxun Yang <jiaxun.yang@flygoat.com>, 
    Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
    =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, 
    Thomas Huth <th.huth+qemu@posteo.eu>, 
    =?ISO-8859-15?Q?Cl=E9ment_Chigot?= <chigot@adacore.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    Yoshinori Sato <yoshinori.sato@nifty.com>, 
    Frederic Konrad <konrad.frederic@yahoo.fr>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Chao Liu <chao.liu@processmission.com>, 
    Sai Pavan Boddu <sai.pavan.boddu@amd.com>, 
    Alistair Francis <alistair@alistair23.me>, 
    Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
    Gaurav Sharma <gaurav.sharma_7@nxp.com>, 
    "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
In-Reply-To: <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
Message-ID: <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu>
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu> <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu> <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com> <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-1246954941-1793566668=:71002"
X-purgate-ID: tlsNG-c1860d/1793566671-DF6D687B-2DFCCAC1/0/0
X-purgate-type: clean
X-purgate-size: 7081

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-1246954941-1793566668=:71002
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Sun, 1 Nov 2026, Yonggang Luo wrote:
> On Sun, Nov 1, 2026 at 7:29 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>
>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>> On Sun, Nov 1, 2026 at 1:06 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>
>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
>>>>> On Sat, Oct 31, 2026 at 8:42 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>
>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
>>>>>>>>> type_init
>>>>>>>>> function that calls type_register_static(). A later change needs to
>>>>>>>>> pass a
>>>>>>>>
>>>>>>>> That's the point of the macro to hide the boiler plate code.
>>>>>>>>
>>>>>>>>> target mask into that registration, and the macros have no parameter
>>>>>>>>> for it.
>>>>>>>>
>>>>>>>> Couldn't you just change the macros to take that parameter instead of
>>>>>>>> expanding it everywhere?
>>>>>>>>
>>>>>>>
>>>>>>> Problem of macros is that they don't have default parameters, so you
>>>>>>> need variants for everything:
>>>>>>>
>>>>>>> DEFINE_MACHINE
>>>>>>> DEFINE_MACHINE_EXTENDED
>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>>>>>> and now would need a new variant, with variant for other existing ones.
>>>>>>>
>>>>>>> In the end, it's just simpler to remove this and add the boilerplate.
>>>>>>> It's written once and never modified, so using a macro just save typing
>>>>>>> those lines once.
>>>>>>>
>>>>>>>> Regards,
>>>>>>>> BALATON Zoltan
>>>>>>>>
>>>>>>>>> This series expands every caller first, with no behavior change, so the
>>>>>>>>> follow-up only replaces the type_register_static() call.
>>>>>>>>>
>>>>>>>>> Each machine file gains a class_init function, a TypeInfo, and a
>>>>>>>>> type_init
>>>>>>>>> function that calls type_register_static(). The last patch removes
>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core/boards.h.
>>>>>>
>>>>>> Macros help reading the code not saving typing. If the actual
>>>>>> functionality is buried in a lot of boiler plate it's harder to understand
>>>>>> and spot bugs so putting the unintresting boiler plate behind a macro is
>>>>>> better even if you need a separate version for different cases. Then the
>>>>>> code that uses the macro will be much more obvious and not just a lot of
>>>>>
>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* are
>>>>> not defined properly
>>>>> that causes them to not be extended easily.
>>>>>
>>>>> DEFINE_TYPES is another example, use them can extend easily, how about
>>>>> always use DEFINE_TYPES?
>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_MACHINE*?
>>>>
>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't you add
>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for machines
>>>> that need it, or if it's needed by all machines then make the new
>>>> parameter required and add it to all convenience wrappers too so you can
>>>> keep using DEFINE_MACHINE* and just need to add one parameter to it in
>>>> machines?
>>>
>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
>>> calls to it also need
>>> to be changed, that means touch many $target_arch files. currently
>>> it's 13. But after these
>>
>> That's not different from expanding the macro which would touch the same
>> files.
>>
>>> changes, there will be much more usage on it, and if we want to add
>>> more parameters or attributes
>>> to it, it will be a new tree-wide change.
>>
>> Do you expect to need more parameters? Can't you add them at once then?
>>
>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
>>> explicit defined for
>>> DEFINE_TYPES
>>
>> My point is that keeping the boiler plate as little as possible makes the
>> code more readable. DEFINE_TYPES hides some of the boiler plate,
>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would expose
>> some even if it's better than no macro at all.
>>
>> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED that
>> need to be added?
>
> Hi BALATON
> the things we faced is we first is to add TypeInfo::is_available parameter to
> DEFINE_MACHINE_EXTENDED, and have more usage of it.
> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED, this is
> a prepare to remove TypeInfo::is_available parameter from
> DEFINE_MACHINE_EXTENDED,
>
> And finally, once all usage of TypeInfo::is_available can be replaced with
> targets:uint64_t, then we finally need to remove
> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,

Is there a way to avoid the temporary is_available churn and introduce the 
targets:uint64_t right away? (I'm not following this so I don't really 
know what you're talking about just looks like there's some churn here 
which might be good to awoid anyway independent of these macros.)

> That's what I am facing now. And the explicit
> static const TypeInfo xxx_machine_typeinfo = {
>    .name       = MACHINE_TYPE_NAME("xxx"),
>    .parent     = TYPE_MACHINE,
>    .class_init = xxx_machine_class_init,
> };
>
> Will help me avoid the issue. And I think this is a little boilerplate
> and very explicit.

That's not all DEFINE_MACHINE hides though. It's longer with .abstract, 
.secure and .iterfaces plus the machine initfn that would also need to be 
expanded if you used DEFINE_TYPES.

Is this conversion needed for all machines using all DEFINE_MACHINE 
variants or only some of them? If the latter why not convert those to 
DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed with 
other wrappers passing a default value without needing a new parameter. 
That does not work if all machines need to do this but even then, keeping 
the macro and adding a new required parameter is better in my opinion as 
it keeps boiler plate hidden.

Regards,
BALATON Zoltan

>
> And the
>    .instance_size = sizeof(MachineState),
> is indeed not needed, they sharing TYPE_MACHINE's sizeof(MachineState)
> is enough.
> Even though DEFINE_MACHINE expands to .instance_size =
> sizeof(MachineState), and it's redundant.
> So I think convert to DEFINE_TYPES would be a good alternative to this
> issue, less boilerplate(not none)
> And dealt with the issue we faced.
>
> What do you think about this idea, BALATON
>
>>
>> Regards,
>> BALATON Zoltan
>
>
>
>
--3866299591-1246954941-1793566668=:71002--


From xen-devel-bounces@lists.xenproject.org Sun Nov 01 22:17:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 22:17:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467475.1676620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNdrb-0007fX-LJ; Sun, 01 Nov 2026 22:17:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467475.1676620; Sun, 01 Nov 2026 22:17:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNdrb-0007fQ-Hc; Sun, 01 Nov 2026 22:17:19 +0000
Received: by outflank-mailman (input) for mailman id 1467475;
 Sun, 01 Nov 2026 22:17:17 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 1xNdrZ-0007fK-Ol
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 22:17:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNdrY-007NNu-PY
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 23:17:16 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 6ae7b9f8-8faa-0a2a0a5109dd-0a2a4508dc16-44
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 23:17:16 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <patchwork-bot+linux-riscv@kernel.org>)
 id 6ae7ba6b-f659-0a2a45080019-aceafc1fcf8e-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 23:17:16 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 6C97643EC5;
 Sun,  1 Nov 2026 22:17:14 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4AF4C1F0093A;
 Sun,  1 Nov 2026 22:17:14 +0000 (UTC)
Received: from [10.30.226.235] (localhost [IPv6:::1])
 by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id
 403AC38003B8; Sun,  1 Nov 2026 22:17:14 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Subject:From:Date:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793571434;
	bh=cjatygCmxk8XIyEbtr4pyzKJ6E60G4Tfi3euF78nVXA=;
	h=Subject:From:Date:References:In-Reply-To:To:Cc;
	b=B37CRQpcdmmwCy32vZHgPCWMyUptn49raCX3hJZVcxsEUYOsqHqKCUFeSZMmdrHar
	 P973m1II/ofRE5pnWqeiZvqWMGVRqsLIUP1n1XIX0nFBkKS0IRka2D7KopquB77g6O
	 Mp/unwfBnH0l1eqg07ua7p0Vs/LC2MTS3vGGD6h6owSUEaRNT6q1AXW/x5xBnzEQnc
	 EmKj7qUuyXmc8mBTkvUCHpgFrpk8n5Uq59fpbStEBh5xRF1iBXEyBMchINku/sQN+X
	 GTmMdu6UOejRm4ya75HKvjJSDVBqFLUssCE8lSC7D/wzZYaWR0EmUh/OpuxZjzWe5k
	 ui1FC15h7AaNQ==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: Re: [PATCH RESEND] sched: Convert paravirt_steal to new static key
 APIs
From: patchwork-bot+linux-riscv@kernel.org
Message-Id: 
 <179357143279.2624073.7781801497885838332.git-patchwork-notify@kernel.org>
Date: Sun, 01 Nov 2026 22:17:12 +0000
References: <20260819081207.12150-1-hongyan.xia@transsion.com>
In-Reply-To: <20260819081207.12150-1-hongyan.xia@transsion.com>
To: Hongyan Xia <hongyan.xia@transsion.com>
Cc: linux-riscv@lists.infradead.org, jgross@suse.com, ajay.kaher@broadcom.com,
 alexey.makhalov@broadcom.com, bcm-kernel-feedback-list@broadcom.com,
 catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org,
 kernel@xen0n.name, maddy@linux.ibm.com, mpe@ellerman.id.au,
 npiggin@gmail.com, chleroy@kernel.org, pjw@kernel.org, palmer@dabbelt.com,
 aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com,
 bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
 pbonzini@redhat.com, vkuznets@redhat.com, sstabellini@kernel.org,
 oleksandr_tyshchenko@epam.com, peterz@infradead.org, juri.lelli@redhat.com,
 vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org,
 bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
 kprateek.nayak@amd.com, jiazi.li@transsion.com,
 virtualization@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
 linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
 linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org
X-purgate-ID: tlsNG-c1860d/1793571436-DFED287B-B0AA6101/0/0
X-purgate-type: clean
X-purgate-size: 652

Hello:

This patch was applied to riscv/linux.git (fixes)
by Peter Zijlstra <peterz@infradead.org>:

On Wed, 19 Aug 2026 08:12:09 +0000 you wrote:
> From: Hongyan Xia <hongyan.xia@transsion.com>
> 
> paravirt_steal_rq_enabled and paravirt_steal_enabled use raw static_key
> APIs which are now deprecated. Use the new API instead.
> 
> No functional change.
> 
> [...]

Here is the summary with links:
  - [RESEND] sched: Convert paravirt_steal to new static key APIs
    https://git.kernel.org/riscv/c/a5576ebce920

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html




From xen-devel-bounces@lists.xenproject.org Sun Nov 01 22:38:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 01 Nov 2026 22:38:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467485.1676629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNeBW-0001zu-7C; Sun, 01 Nov 2026 22:37:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467485.1676629; Sun, 01 Nov 2026 22:37:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNeBW-0001zn-3u; Sun, 01 Nov 2026 22:37:54 +0000
Received: by outflank-mailman (input) for mailman id 1467485;
 Sun, 01 Nov 2026 22:37:53 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1xNeBV-0001zh-GJ
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 22:37:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNeBU-007P6p-MK
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 23:37:52 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6ae7be76-2eae-0a2a0a5409dd-0a2a4506aa98-44
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 23:37:52 +0100
Received: from [202.12.124.144] (helo=fout-b1-smtp.messagingengine.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6ae7bf3e-195a-0a2a45060019-ca0c7c90b4fb-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 23:37:51 +0100
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfout.stl.internal (Postfix) with ESMTP id 934061D0011E
 for <xen-devel@lists.xenproject.org>; Sun,  1 Nov 2026 17:37:50 -0500 (EST)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-04.internal (MEProxy); Sun, 01 Nov 2026 17:37:50 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun,
 1 Nov 2026 17:37:49 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm2 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm2 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1793572670;
	 x=1793659070; bh=zYednr1U73JLFHC2nz98Dlkn4k/zCN0N7V3mLVHnZ4g=; b=
	EC1DMFyXJ0OfI76yvYQvrlP6v5AuX5eO/2eSdOiMGs4hI+IcspaARBzEIG/9jgNl
	jAOfFJ3riKjW7Z4WrHXEc1ticndGChiVRcoGhS5xT1HphBFOchI0EZa3DDO7AvUx
	X6cPghWGw/dNBvPcvKitUqJADhHEkbFwKJm5f8VvQvoG08SSvh9k9LXYj0VlMO0a
	9pjFTFMi5D4BopLdD3WGTAxLnEkN2HTLJ4zmHJ1o5ugZNl6XkjZKtexP9XeU4pt6
	tSopdp6e34LizlIAFf1eSX4WLN0xB5DL1hycystbG+WGagWPvU1gf7EdonAzpacC
	kPAAIJ257ZEnQ9r8DMkt4A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=
	1793572670; x=1793659070; bh=zYednr1U73JLFHC2nz98Dlkn4k/zCN0N7V3
	mLVHnZ4g=; b=qa9JAVC0Rzd0ooBTPy3ARQAFvxd7pLcegrrPRX2aIeukmJDMRgV
	kC8XMhtu63NIJ7f63uOyCSK8o55gnl9mMUq/kZC/yY/QvEMGWj0vx6Ggc16vv87e
	N664Culb0QwBv6p1y+t0zbnrjaGvOqh7SLm6yKYyKb50vGLu5QmFfd7QRe5ihdpE
	g5fPndffLbvCHeRC6r4B/r8ye8/+B5mfp/l5Vir5UeUB/C3nDEOU6hod+oIAPpQM
	bqcfqKMhT/5aq88b8sKKj292V6l6oq3GFNgVccRJ8YQFGlgGcMuNaZe2sx4aogpW
	+vSxwpBfvcx4VI1zRZMmAFweLDd3PxlFlAw==
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-08;
	repo=github.com/dkim2wg/interop; date=2026-10-28; sw=lmtpprox;
	action=sign d=invisiblethingslab.com a=rsa-sha256;
DKIM2-Signature: i=1; m=1; t=1793572670; d=invisiblethingslab.com;
	mf=PG1hcm1hcmVrQGludmlzaWJsZXRoaW5nc2xhYi5jb20+;
	rt=PHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4=;
	s=fm2:rsa-sha256:L9t8Ly27U/k2BrT+fqP+m0RsIJn1BoL4OJG4hDAKv1GhYO4
	mIHOJbE4sfB6ev0ThK4UnVo3lWjua+8/eF4nEDtX3q3Jzaq0CxpgCttCFY4iLTQx
	BWZoq+bp0s8ZRclANthCKCvpimb6rlpEVj7KppRK+QZxQhyTHCiV0/hEtdyG42aj
	65ln2Pw0HJqMLUNOVFGFnx2KqiJtGed/Y0RP1AAbfkX4DD0oRXbFfucX1XqMTIFo
	YGFup4OOTS79GBnb69sLpdVaHOPGCmbiFoZ4e8WPvyRcjJ4OhEucLaNJxTvj9lJw
	kAadLAXXFYrMyD/8DBCdr7GxPjPebCjt6lFPwDQ==;
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-08;
	repo=github.com/dkim2wg/interop; date=2026-10-28; sw=lmtpprox;
	action=mi-m=1; hc=12;
	hn=cc,content-disposition,content-type,date,feedback-id,from,
	in-reply-to,message-id,mime-version,references,subject,to;
Message-Instance: m=1; h=sha256:3NQNMVoWWbZLb+kwUKXhJtCaycfHvIbnCiD5DmQ+qMQ=:zYednr1U73JLFHC2nz98Dlkn4k/zCN0N7V3mLVHnZ4g=;
X-ME-Sender: <xms:Pr_nas5rRyYE-8Bw7zvQhAVYJu_wRMHI6Sg0cLGHJIQdNCPzy3ibLg>
    <xme:Pr_naj6av1UqX3jr3-1yxXjWjfChp1CgZ0VxrH-CM9Fbx0cCw7EdNf-VVSPwyicdL
    B08sg8SD1plfBv9v8JUyRiMBA6-VothILLYgF-6lJMWM0tV21oY>
X-ME-Received: <xmr:Pr_napFWmdAn7qLMn7tUChqjdhhpeyB63pxxit55RQ6qaDhwmNA02dcb6fiifK5941VHq6EGhytArpKlvIIDmL4idr3Hrs6Gx3MtYuDf62w>
X-ME-Proxy-Cause: dmFkZTEix5/tRtjbsw62yriC7Eb3O+PqN9AAFyavPt4FSl0FobetRpeRmhzEanKN400jsm
    it9CKx2+5d9C8n0MMFDu3TKSWrKDNzM4y+/SYLlawwwDNovBrS4BVd/yynKXVCuB+fFblg
    XwVzmiYk+R9e2bfuQn2h/EFGhu8PX/IooS1UEHLuf30sF1dEEE9kcCJ82hl8bDzs+QNmiA
    MRNO/NxkEKOviiHTvA0UWQxm2yHrt0hnVbZk65IkcPubElKXMQsYRpiQC3gmBiVOTutXhT
    bVRN5i8oyW2/XGcwyilSAXmEa0GkKjjwsMCGtPqUKvuYJmwUeZkz4l7sxwpe897YksU0K9
    XfVMUKIgTZpCA+5ngjR8jFuv7HDgLySfSCElP1BlTJfSYt+a4DkxQamXb/qmej3HfQzDfB
    Bfx82g+XRRC4W60AlVpribp1J1qHTrFsl9oy68RP8lRPOzqfHYqISNkBY+D15mDYMS/vSD
    aqAyjS0chUf7wl2NR4n+7VVM3gWZw/731gcPnWxR5jHSO3TAtttnRyg6CalRLYXsZJDYpl
    XkP+1rGA+e1H6sjlFdHVCNaupXMFLATp+BoF+DBhoX6WEA/V1I4iA1TRGWD4PleMK55OeL
    GJe0LILuK7VjdkADSXpyL85QWdpuum3c5kupEaQHEYx7Oc+pwY+nknXh4cAQ
X-ME-Proxy: <xmx:Pr_nasRqlkjygycmuZhjajY-XX9rFcY9V91uudSSNQlULXwaXWdwNA>
    <xmx:Pr_naisLblpkZw6w6FT7ol2u42CIdVDGtwmSEUAWPJa7XR2ZMmd_fw>
    <xmx:Pr_narxOH5LYlCvAISJeDvgiH1_81R1wNnrQpKAwcZvjlizTF6rtKA>
    <xmx:Pr_nas4g9tA3npvFQYtPz2saTgmPXhOiVKTGWKfSAXRv1jMSW3ocPQ>
    <xmx:Pr_nao8w-29HUHIUIWDsU9uoDK2WQHOzZa0XWR8BE-PzSKVEDwIfPD-r>
Feedback-ID: i1568416f:Fastmail
Date: Sun, 1 Nov 2026 23:37:47 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Cc: Teddy Astie <teddy.astie@vates.tech>
Subject: Re: Test report: IGD (RPL) SR-IOV on Xen - Linux 7.2.5, xe
Message-ID: <aue_O36U1Y7kQpEC@mail-itl>
References: <aqpihasUJ4lTZcnU@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="mnS/OHZMVY2zPAsM"
Content-Disposition: inline
In-Reply-To: <aqpihasUJ4lTZcnU@mail-itl>
X-purgate-ID: tlsNG-16d1c6/1793572672-F6C7777B-3C0B1B84/0/0
X-purgate-type: clean
X-purgate-size: 1571

--mnS/OHZMVY2zPAsM
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Sun, 1 Nov 2026 23:37:47 +0100
From: Marek =?utf-8?B?PT91dGYtOD9RP01hcmN6eWtvd3NraS1HPUMzPUIzcmVja2k/PQ==?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Cc: Teddy Astie <teddy.astie@vates.tech>
Subject: Re: Test report: IGD (RPL) SR-IOV on Xen - Linux 7.2.5, xe

On Wed, Sep 16, 2026 at 11:33:57AM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> I kinda suspect getting similar result on PTL, but I'll hold off with
> the proper bug report until I can actually confirm it.
> I'll repeat the test on Xen 4.22 later.

I managed to test it on PTL, with Linux 7.2.5 and Xen 4.19.5. It just
works, no patches nor tweaks necessary. So, it was all about Linux's
'xe' driver.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--mnS/OHZMVY2zPAsM
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmrnvzsACgkQ24/THMrX
1yxm5wf/eUezbKtOq9nkYOoFZwoPMDltm84mm3aR2vQDuUzt1pq87A3qbm8iECks
QAZVB9HJZUZAoFLcrqdl6Us0NnRH3g5nHLKmP3BJ3p7s2MN1jNGdXGWjBfW6cjZZ
mPjw/QiHgD1ZShVgQ6oRaELyyXgtLh56tu0bV8KfjjWMml5qWOZHo/+tQNbYjCl3
HKrBCnwAphcWxSNDjqE16GtRfQYLFRlBLTKl5tTU5UoOgOCFs8e47xBGSFjuA9bQ
eURS3hN1AJavSkOYfJuWD/pEZmN/OCM0oOi4emiOFLslxRWHAxStalTUZ510plRm
6hTYV2gHQQXQoTfIUt+fMa9PA7O9EQ==
=eWz3
-----END PGP SIGNATURE-----

--mnS/OHZMVY2zPAsM--


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:01:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:01:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467558.1676637 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhMQ-0003ir-0v; Mon, 02 Nov 2026 02:01:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467558.1676637; Mon, 02 Nov 2026 02:01:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhMP-0003ij-UG; Mon, 02 Nov 2026 02:01:21 +0000
Received: by outflank-mailman (input) for mailman id 1467558;
 Mon, 02 Nov 2026 02:01:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhMO-0003id-B8
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:01:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhMN-007l1T-OJ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:01:19 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7eed1-8faa-0a2a0a5109dd-0a2a450599e2-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:01:19 +0100
Received: from [52.101.70.72]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7eeef-4cb1-0a2a45050019-34654648ba53-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:01:19 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:01:15 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:01:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=VUSBJLgn6IIQDkHO9EF+pw8FU4efZ8X/u56jLsVgvchwVc8tmzjYtFpteQ+qwN9voLpx1ndXBu4lDW59FuH4ZPp8aTzIN5Usp0hPrS1j+0EHwiXk745/4yIIs68EsZrWgNzoEDpeECSu3bJOIaMoIXQ0xtB5eQ9EIVuDw0hRN+SaAOA2mYEIu2LWoa8tfRL5rBc6vPVHQpjUBz6EYs5Px2oFTANPlMpDABGWArQbtyzK+wOXSKsfPqTpdRmjzKn4WAOtijDw5ygUyLhAcRgX5BHaKdrB+kDbqrfC3CGvvjR2uDFV2TZDRYqp6QToebKvRpmmXHk5Lw0UCo5d50DaLw==
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=wk7KRVs2QZr05uX3Khp+MEse8kHs5gu+Lpo8+j89BdI=;
 b=UXe+ybDhqvqSs9uNSY1eQrOGB+3Kz/hagAHD44vztxIlh9GZBt1lAQxu90XbxpROcyI7on0wgQADF3enn1ga7WuJfpUzmjdGfhACptEQQsUYXMfYHeLyx3pSEB56UhEtembfOziHkQswCEDlB0Wf7bEUhNSjAjCcHOUxnV5hpfUYm6p43YxwRDmoktPM9++vHnEswASfXc1NR+SZ5s78OA1rxneYmDF3L19yVopzWeRIJCUhSzA3GnRWxkiSsckjWHyvXImlgoNJGl7Im16FysYLRJU8heKvpNXrAn0CFy7xOZY79D8DcsdjAIIZ/MzFKQdmaowFxHNx73HTnwoL9A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wk7KRVs2QZr05uX3Khp+MEse8kHs5gu+Lpo8+j89BdI=;
 b=PzudfJyukf9TTtfA5L6DaYp9maj9jiRIZ5cgRLablnvDc5JYSiYJn2WGlkV/8IX/yBicFUTrdPDMTc9ksSXHyw4ZhGgiv8OJe+iwiwWN5EHNfxo8u231jvWvD5x+JHATBu0vBl8jrXFwtybJg6GmVcbgxaauwuYNClVpy+E0PjAYXVzxpfhp8GYVrc5S0O2iqSizPRI59rJ5uVv0BuR+ojk7gYNmENyOU1FkdXJT5/CxKJ74qJjfH3jsBTN4tCEnJtZ7lILTvhhYYir2eLVZmlnJSn67uHuhGpv4QwLA1DZk1/7TxHH5ux7pM7BDZMvkTl46YIsoGMBV+hlih7t7tg==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <8a95512f-2b7a-47e8-beb9-7c763dfaf101@epam.com>
Date: Mon, 2 Nov 2026 03:01:13 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 22/22] doc/arm: vIOMMU design document
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <da2b9469ffb63d8bb63c2b9bf14ebecfd56dea22.1791328190.git.milan_djokic@epam.com>
 <1396633e-8e1b-4ceb-82e4-f5b0b40eae0c@gmail.com>
Content-Language: en-US
In-Reply-To: <1396633e-8e1b-4ceb-82e4-f5b0b40eae0c@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
X-ClientProxiedBy: AM8P190CA0008.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:219::13) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 23684029-35ed-44f9-a655-08df38852d36
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|260925022911599003|260925021311599003|260925021911599003|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261026135527099003|261021121427099003|261021123027099003|261021133027099003|261021130227099003|261021135927099003|261026121527099003|261026140227099003|261026130827099003|261022115727099003|261022113327099003|261022075727099003|261022105027099003|10067099003|32116099003|22082099003|18002099003|6133799003|3023799007|4133799003;
X-Microsoft-Antispam-Message-Info:
	+oD9EkDpq8NAQbvIB6UhTuPUFPr/Uy4DgYBHZ6mhvmeI0VXxu4ayGItHWoRl0Sv+ceE0OSQOUh7YQKBEbua9kGtSztgk1+V0DA50h3vEz2yoJNcbTtwUyhl3Rl6zlY2JXemJ+mJ30Ermnr6H3F2HH2U4q7LkY/odP6V8S1RROQnHvS5mlnRbRiAkl7BmZRH6LqJPAZ0GUbERJzuC05vwyHibCTlLK8MqrXf3++Zu13lxmD66eq6sEOcSG5BfakUaCtHX6SQaHF5uP5Mdc9zBYm+jmtGHpIqNNCIhHYMGN6mYmRZoapw2T1Je3Swv2l6lMaRZJwoaf4IQLGlYUb3kagPF+2yEm7ZWumF6F6L3KPEHiW/44HjjXt+/szi+c1ItJw6LAikEY//YDmOD6GvGw1Ims2A/oNUViIZC0lK/XGUIZhV4qwisgzw+IAFEfrQud5LLzonZAy6Wl2qhfuWZtsXpyGQEu7/L6RlM1EDQh61qb6TRMgrO2FkUIlabaePpTq5EQBphBHHfZADUqDxNdIUeqoeRKbvKDFblsbdg1MzffaE3+SlY6iHiEVPhLUgWEg8Z6opwmJhFDW0x8F5KkVQtzGZOsHIROVujfNiHobX1PXh42oGs4fGuWy/zbMYy
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(260925022911599003)(260925021311599003)(260925021911599003)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261026135527099003)(261021121427099003)(261021123027099003)(261021133027099003)(261021130227099003)(261021135927099003)(261026121527099003)(261026140227099003)(261026130827099003)(261022115727099003)(261022113327099003)(261022075727099003)(261022105027099003)(10067099003)(32116099003)(22082099003)(18002099003)(6133799003)(3023799007)(4133799003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?b0t1ZnpTU21LY20vdUZ6b003cEY4T0ROY0ZHNkpmeE9HVWU2UGNST1FpMEtT?=
 =?utf-8?B?ZkdEb0ZZaXB2MDY4eXVXRWRLcUptQUdzQ1FPQk5nMFNVRHErVWNKSm5HK0tL?=
 =?utf-8?B?TmorT0F5VTdxQ3J2Tit3NkVGOFc1b2pFTDFuTEFsWWVvakNrY0JjZ3gxQ2xh?=
 =?utf-8?B?OC9JNmhQOWEwTkkrc3FBUXBPeDR3ZllQYW9yZDdKQkVyT2RKUUNtL2ZOd3hM?=
 =?utf-8?B?RkVXVm93NnJWcjZIdnlZNjlzb3pKUzkvMEoyK2phYm0vWS91QW5jYkkzQjRu?=
 =?utf-8?B?UjVsU2FyL2o4eEFBWVZ6Rld2S3BUUDc1WVY3WkxXSnBicnNwZzhNeVVjZ2Nw?=
 =?utf-8?B?Y0lSSngzeFJrR3lUeTVIaXl3WmVTdXR0NUJjZWJZQ1FDd04vNTFZVWNEelR4?=
 =?utf-8?B?OWlBZWg5ZUVneTMvdE1iMHRkdTdvbjV2cGRqem85M0t1OEx5bmM3dkVpSWhG?=
 =?utf-8?B?K2RwdTh4MjEvb1VUalgyYWZ0d3JGenNRditSUHd0eXhZZWI2aUh0a21xVjhl?=
 =?utf-8?B?TmpEQk1oQzhtVTRXYVlQOFJFb1cyRDAwdmJOdyt0K28yVWdRYUVBbDhGUklQ?=
 =?utf-8?B?TEZNVjIxZ3FycjZxV1V2YkVXTHpPUGZRdWdJN2NjUWV5Ry92L2JBV016cDdr?=
 =?utf-8?B?MEh4UnpmSElyL0RhRXI0ZGRoLzIyUUhOZHFDT2hFRWxSdW8rSFoyYUo3RVhW?=
 =?utf-8?B?clQvbWlIUGI1NmhrM3pST3A5TlZQZ0JWbXVlRG9DYytIY1lDSnFaRUtOa3hN?=
 =?utf-8?B?QlZWUnRnWnp1empYc1g2Q0VzZ2F1OFdGY1d2ZkVWVm1seVBmeUplRXBlTFBy?=
 =?utf-8?B?ZjhHNmFkSm5qZzZ4U2hmSTEvektwUkZ0STV6V1lJZjJqRnJQZkkvNzN3MWpU?=
 =?utf-8?B?ZjhhRzVpbVp3WDRhRC8yWXlrZTIxUzNXNnl2Y2wrUGpXUHRpcFJoOVYyZW9J?=
 =?utf-8?B?Ym1MQnF4V1pIZ2ZHUlFYTDdYb2VUODNTMmQvQ21ncXYzMEp0ckxKbU1weWFG?=
 =?utf-8?B?R3pmcWUwN0JiSlp0TkhxUFgwck5nVGJSVUt3V1djSVl4dTRVc2w1Z2FLUStY?=
 =?utf-8?B?eFdVRUhLV3NWQlZPOXI1dXJZZ1NtZExqemQwVzg5bUJxRUhJUEJ6K29Kc2hZ?=
 =?utf-8?B?YkFSbnBITzFXb1czVDZyMlVBK2lmV25qVlFWZmtVVDRBWlloS0hkTnZONjhh?=
 =?utf-8?B?b1plVlFlRllIK0ZoOHNwU3VNLzlaSFdqS0h3Y0NxZjNYSjVRZE1TdENYUGE2?=
 =?utf-8?B?RUttVGlCRm5CZG9vR0dlMDhMWE45b3VPZUJnYzdOMk9YdFFoSEx3dU8wVUtT?=
 =?utf-8?B?aUU3VVBNWGw5eHZhaVRjVDdIbzNpVENtMGJvclNTdHhGMnhNQ1pPZ3RUSnJZ?=
 =?utf-8?B?OFVoUTIyVXhGOG1ab0k4WEdGWWR5VkRnVk5xSVhiQ0FBU2h6MUpoc2psRlRx?=
 =?utf-8?B?c1k5U0ZaV1dydVhsbHJTZERBUE1QcUJFVXd4ZzNZZ3JmdDY4SXRVSlhOZ2Ro?=
 =?utf-8?B?YmtLZzJDam1hTDZxcXYwakhVSHc5Nk51SHJnMlRHRGtZVWNIL244VTZ3K01U?=
 =?utf-8?B?NngwQU1yditINW05THhkK05rY3NwWUN5bStwZWorbml3b1U1MU9GcEJWVXA2?=
 =?utf-8?B?ZzltOGRub2ZuSm03RUl1c2JKZVJtVUQrbkY3UXBsdlhRbC9rcjBRYVJGY0J4?=
 =?utf-8?B?QUlpUk5pSzFINU9KanZwb3Q2TEVQTGZlb1dWengxUVZOUkxoT3F5b1Y4elZx?=
 =?utf-8?B?SnJ3K2x2RVlmejZVZE5uZTRxQ09hYlhtaXRtRTZYT1A2ZDRBMnc1OE5DRElV?=
 =?utf-8?B?N01TWXpGSm5BWDZObS9VaFE0MzNDNEN5dStEb3ViMExZMjMxT1BFQVZNQ2Fq?=
 =?utf-8?B?dVBRSTZORjhuekl4bm9DVzhnZVJ5V2NaSzUxdUhJQzAraVRSVHFEZEhDcEVn?=
 =?utf-8?B?MW9iVHZuT3R3NndrdXU3MkNLSU5ySzM0a1pBTDAvYkpHN3JUbFp6cDdnSG9q?=
 =?utf-8?B?MkZoZEdQL0J5d3hZcjFBTXpkVW9YdlliRENPTDdSUC81NllrU0FOVVFGeUdz?=
 =?utf-8?B?RVdEVzVCZC85UEdSWVlEeGdocGd3ZzZwbldSZ1BQL0Z5K0xFVVJjZllMOGlo?=
 =?utf-8?B?NndYVDdlcVlrUmFDL3c3RzJhVmV6bGV2Q0QyaHBqdTZ1dnZKYTAyNEI2MFVO?=
 =?utf-8?B?TnYxTTZpMDVTZ2FOUWNmMWZjcHo4YmdqclE4d1J2K2VVNUdkeThDZ1BuMkU5?=
 =?utf-8?B?RElyR0NTQVAxNm1ZV1h5Y1ZML3hOeTU3bUF6bTN1WndmcU9Pb3NKRjdqNEJi?=
 =?utf-8?B?WU5sZXFGeXgxenVtMXNOME5kWTJTVGRXak0vNGZsbkNlUlZuemhmQT09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 23684029-35ed-44f9-a655-08df38852d36
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:01:15.2346
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 5dcfA4toTOXUmmYENcn+aycI78ArKc3eLFvu25GfDzN9fZR9EW0YnOV9OqOUsRi0eYZKsJ7hrNEIty2Xs22+GA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-c201ff/1793584879-F68B62A1-EE82842B/0/0
X-purgate-type: clean
X-purgate-size: 22338

Hi Oleksandr,

On 10/10/26 17:16, Oleksandr Tyshchenko wrote:
> 
> 
> On 10/7/26 03:08, Milan Djokic wrote:
> 
> Hello Milan
> 
> 
>> This document outlines the design of the emulated IOMMU,
>> including supported features, security considerations
>> and future improvements.
>>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    docs/designs/arm-viommu.rst | 502 ++++++++++++++++++++++++++++++++++++
>>    1 file changed, 502 insertions(+)
>>    create mode 100644 docs/designs/arm-viommu.rst
>>
>> diff --git a/docs/designs/arm-viommu.rst b/docs/designs/arm-viommu.rst
>> new file mode 100644
>> index 0000000000..c68e771711
>> --- /dev/null
>> +++ b/docs/designs/arm-viommu.rst
>> @@ -0,0 +1,502 @@
>> +==========================================================
>> +Design Proposal: Add SMMUv3 Stage-1 Support for XEN Guests
>> +==========================================================
>> +
>> +:Author:     Milan Djokic <milan_djokic@epam.com>
>> +:Date:       2026-02-13
>> +:Status:     Draft
>> +
>> +Introduction
>> +============
>> +
>> +The SMMUv3 supports two stages of translation. Each stage of translation
>> +can be
>> +independently enabled. An incoming address is logically translated from
>> +VA to
>> +IPA in stage 1, then the IPA is input to stage 2 which translates the IPA to
>> +the output PA. Stage 1 translation support is required to provide
>> +isolation between different
>> +devices within OS. XEN already supports Stage 2 translation but there is no
>> +support for Stage 1 translation.
>> +This design proposal outlines the introduction of Stage-1 SMMUv3 support
>> +in Xen for ARM guests.
> 
> Look like this doc does not mention the stage-1-only fallback.
> 

Yes, this is missing. I will add details on the stage-1-only mode.

> 
>> +
>> +Motivation
>> +==========
>> +
>> +ARM systems utilizing SMMUv3 require stage-1 address translation to
>> +ensure secure DMA and
>> +guest managed I/O memory mappings.
>> +With stage-1 enabled, guest manages IOVA to IPA mappings through its own
>> +IOMMU driver.
>> +
>> +This feature enables:
>> +
>> +- Stage-1 translation for the guest domain
>> +- Device passthrough with per-device I/O address space
>> +
>> +Design Overview
>> +===============
>> +
>> +These changes provide emulated SMMUv3 support:
>> +
>> +- **SMMUv3 Stage-1 Translation**: stage-1 and nested translation support
>> +  in SMMUv3 driver.
>> +- **vIOMMU Abstraction**: Virtual IOMMU framework for guest stage-1
>> +  handling.
>> +- **Register/Command Emulation**: SMMUv3 register emulation and command
>> +  queue handling.
>> +- **Device Tree Extensions**: Adds `iommus` and virtual SMMUv3 nodes to
>> +  device trees for dom0 and dom0less scenarios.
>> +- **Build Configuration**: Introduces a Kconfig arguments
>> +  (CONFIG_ARM_VIRTUAL_IOMMU, CONFIG_VIRTUAL_ARM_SMMU_V3) for build-time
>> +  enablement.
>> +
>> +Depending on the domain type, the emulated IOMMU model is the following:
>> +
>> +- For the hardware domain, the host layout is re-used. The number of exposed
>> +  IOMMUs to hardware domain is equal to number of physical IOMMUs
>> +  present (1-1 mapping).
>> +- For non-hardware domain, a single vIOMMU device is exposed to the guest and
>> +  mapped to one or more physical IOMMUs through a Xen-managed translation layer
>> +
>> +The vIOMMU feature provides a generic framework together with a backend
>> +implementation specific to the target IOMMU type. The backend is responsible
>> +for implementing the hardware-specific data structures and command handling
>> +logic (currently only SMMUv3 is supported).
>> +
>> +This modular design allows the stage-1 support to be reused
>> +for other IOMMU architectures in the future.
>> +
>> +vIOMMU architecture
>> +===================
>> +
>> +Responsibilities:
>> +
>> +Guest:
>> + - Configures stage-1 via vIOMMU commands.
>> + - Handles stage-1 faults received from Xen.
>> +
>> +Xen:
>> + - Emulates the IOMMU interface (registers, commands, events).
>> + - Provides vSID->pSID mappings.
>> + - Programs stage-1/stage-2 configuration in the physical IOMMU.
>> + - Propagate stage-1 faults to guest.
>> +
>> +The stage-1 context is shared between streams assigned to the same device.
>> +This follows the Linux SMMUv3 driver model, where the IOMMU domain is associated
>> +with the master/device, while the individual SIDs are represented by separate
>> +STEs pointing to the same translation context. This is considered sufficient for
>> +the current SMMUv3 driver model, although the SMMUv3 architecture does not
>> +forbid having separate translation contexts for different SIDs.
>> +
>> +vIOMMU commands and faults are transmitted between guest and Xen via
>> +command and event queues (one command/event queue created per guest).
>> +
>> +vIOMMU command Flow:
>> +
>> +::
>> +
>> +    Guest:
>> +        smmu_cmd(vSID, IOVA -> IPA)
>> +
>> +    Xen:
>> +        trap MMIO read/write
>> +        translate vSID->pSID
>> +        store stage-1 state
>> +        program pIOMMU for (pSID, IPA -> PA)
>> +
>> +All hardware programming of the physical IOMMU is performed exclusively by Xen.
>> +
>> +vIOMMU Stage-1 fault handling flow:
>> +
>> +::
>> +
>> +    Xen:
>> +        receives stage-1 fault
>> +        triggers vIOMMU callback
>> +        injects virtual fault
>> +
>> +    Guest:
>> +        receives and handles fault
>> +
>> +Register access
>> +---------------
>> +
>> +Guest accesses to SMMUV3 registers are trapped via MMIO regions. vIOMMU emulates
>> +a subset of SMMUv3 registers relevant to currently supported features.
>> +Unsupported registers are handled as RAZ (Read-As-Zero) and WI (Write-Ignored)
>> +for the register read and write operations, respectively.
>> +
>> +vSMMUv3 is a partially emulated resource for the guest domain. Some
>> +feature register bits (SMMU_IDR) are reflecting what the underlying HW actually
>> +support while the rest is preset in the emulation layer to limit guest from
>> +using features which are not supported by the emulation. Also, implementer
>> +identification register is fully emulated, providing generic ARM implementer
>> +ID values, to avoid activating errata/quirk paths in the guest SMMUv3 driver.
>> +
>> +Supported SMMUv3 Commands
>> +-------------------------
>> +
>> +The vIOMMU implementation currently supports a subset of the SMMUv3
>> +architectural command set required for stage-1 translation management.
>> +
>> +Commands are submitted by the guest through the virtual Command Queue
>> +(CMDQ) and consumed by Xen, which translates them into operations on the
>> +physical SMMUv3 hardware.
>> +
>> +Some commands are fully handled by the emulation layer, while others are
>> +currently treated as architectural no-ops because the required behavior
>> +is either implicitly guaranteed by Xen or not yet modeled explicitly.
>> +
>> +Emulation handled commands:
>> +
>> +- CMD_CFGI_STE
>> +- CMD_TLBI_NH_ASID
>> +- CMD_TLBI_NSNH_ALL
>> +- CMD_TLBI_NH_VA
>> +
>> +No-op/Implicitly handled commands:
>> +
>> +- CMD_SYNC
>> +- CMD_PREFETCH_CFG
>> +- CMD_CFGI_CD
>> +- CMD_CFGI_CD_ALL
>> +- CMD_CFGI_ALL
>> +
>> +Command Handling Model
>> +----------------------
>> +
>> +The guest submits commands through the virtual CMDQ interface.
>> +
>> +Xen:
>> +
>> +- Validates commands
>> +- Translates virtual identifiers (vSID->pSID) where required
>> +- Programs the physical SMMU
>> +- Performs synchronization
>> +
>> +The physical SMMU executes the resulting invalidation or configuration
>> +operations.
>> +
>> +Unsupported Commands
>> +--------------------
>> +
>> +Commands associated with currently unsupported architectural features
>> +are not implemented.
>> +
>> +This includes commands related to:
>> +
>> +- PRI
>> +- ATS
>> +- Address/Range TLB invalidation (currently, all TLBI commands perform complete
>> +  domain TLB invalidation)
>> +- Advanced stall/retry semantics
>> +- CD runtime update/sync
>> +
>> +vSID Mapping Layer
>> +------------------
>> +
>> +Each non-hardware domain-visible Stream ID (vSID) is mapped by Xen to a physical
>> +Stream ID (pSID). The mapping is maintained per-domain. The allocation policy
>> +guarantees vSID uniqueness within a domain while allowing reuse of pSIDs for
>> +different pIOMMUs.
>> +
>> +* Platform devices receive individually allocated vSIDs.
>> +* PCI devices receive a contiguous vSID range derived from RID space.
>> +
>> +
>> +Supported Device Model
>> +======================
>> +
>> +Currently, the vIOMMU framework supports only devices described via the
>> +Device Tree (DT) model. This includes platform devices and basic PCI
>> +devices support instantiated through the vPCI DT node. ACPI-described
>> +devices are not supported.
>> +
>> +Guest assigned platform devices are mapped via `iommus` property:
>> +
>> +::
>> +
>> +    <&pIOMMU pSID> -> <&vIOMMU vSID>
>> +
>> +PCI devices use RID-based mapping via the root complex `iommu-map`:
> 
> I failed to find iommu-map generation in libxl or dom0less.
> 

PCI-related vIOMMU support is excluded from this patch series to reduce
the number of patches, this is outlined in the cover letter. It will be 
submitted as a follow-up series. I've kept the relevant design details 
in the documentation, but the implementation will be provided separately.

> 
>> +
>> +::
>> +
>> +    <RID-base &viommu vSID-base length>
>> +
>> +PCI Topology Assumptions and Constraints:
>> +
>> +- RID space must be contiguous
>> +- Pre-defined continuous pSID space (0-0x1000)
>> +- No runtime PCI reconfiguration
>> +- Single root complex assumed
>> +- Mapping is fixed at guest DT construction
>> +
>> +Constraints for PCI devices will be addressed as part of the future work on
>> +this feature.
>> +
>> +Security Considerations
>> +=======================
>> +
>> +Stage-1 translation provides isolation between guest devices by
>> +enforcing a per-device I/O address space, preventing unauthorized DMA.
>> +With the introduction of emulated IOMMU, additional protection
>> +mechanisms are required to minimize security risks.
>> +
>> +1. Observation:
>> +---------------
>> +Support for Stage-1 translation in SMMUv3 introduces new data structures
>> +(`s1_cfg` alongside `s2_cfg`)
>> +and logic to write both Stage-1 and Stage-2 entries in the Stream Table
>> +Entry (STE), including an `abort`
>> +field to handle partial configuration states.
>> +
>> +**Risk:**
>> +Without proper handling, a partially applied configuration
>> +might leave guest DMA mappings in an inconsistent state, potentially
>> +enabling unauthorized access or causing cross-domain interference.
>> +
>> +**Mitigation:** *(Handled by design)*
>> +This feature introduces logic that writes both `s1_cfg` and `s2_cfg` to
>> +STE and manages the `abort` field - only considering
>> +configuration if fully attached. This ensures  incomplete or invalid
>> +device configurations are safely ignored by the hypervisor.
> 
> 
> Please see a potential bypass issue in commit #11/22
> 

Yes, this will be addressed in the next version.

>> +
>> +2. Observation:
>> +---------------
>> +Guests can now invalidate Stage-1 caches; invalidation needs forwarding
>> +to SMMUv3 hardware to maintain coherence.
>> +
>> +**Risk:**
>> +Failing to propagate cache invalidation could allow stale mappings,
>> +enabling access to old mappings and possibly
>> +data leakage or misrouting between devices assigned to the same guest.
>> +
>> +**Mitigation:**
>> +The guest must issue appropriate invalidation commands whenever
>> +its stage-1 I/O mappings are modified to ensure that translation caches
>> +remain coherent.
>> +
>> +3. Observation:
>> +---------------
>> +Introducing optional per-guest enabled features (`viommu` argument in xl
>> +guest config) means some guests
>> +may opt-out.
>> +
>> +**Risk:**
>> +Guests without vIOMMU enabled (stage-2 only) could potentially dominate
>> +access to the physical command and event queues, since they bypass the
>> +emulation layer and processing is faster comparing to vIOMMU-enabled guests.
>> +
>> +**Mitigation:**
>> +Audit the impact of emulation overhead effect on IOMMU processing fairness
>> +in a multi-guest environment.
>> +Consider enabling/disabling stage-1 on a system level, instead of per-domain.
>> +
>> +4. Observation:
>> +---------------
>> +Guests have the ability to issue Stage-1 IOMMU commands like cache
>> +invalidation, stream table entries
>> +configuration, etc. An adversarial guest may issue a high volume of
>> +commands in rapid succession.
>> +
>> +**Risk:**
>> +Excessive commands requests can cause high hypervisor CPU consumption
>> +and disrupt scheduling,
>> +leading to degraded system responsiveness and potential
>> +denial-of-service scenarios.
>> +
>> +**Mitigation:**
>> +
>> +- Implement vIOMMU commands execution restart and continuation support:
>> +
>> +  - Introduce processing budget with only a limited amount of commands
>> +    handled per invocation.
>> +  - If additional commands remain pending after the budget is exhausted,
>> +    defer further processing and resume it asynchronously, e.g. via a
>> +    per-domain tasklet.
>> +
>> +- Batch multiple commands of same type to reduce emulation overhead:
>> +
>> +  - Inspect the command queue and group commands that can be processed
>> +    together (e.g. multiple successive invalidation requests or STE
>> +    updates for the same SID).
>> +  - Execute the entire batch in one go, reducing repeated accesses to
>> +    guest memory and emulation overhead per command.
>> +  - This reduces CPU time spent in the vIOMMU command processing loop.
>> +    The optimization is applicable only when consecutive commands of the
>> +    same type operate on the same SID/context.
>> +
>> +5. Observation:
>> +---------------
>> +Some guest commands issued towards vIOMMU are propagated to pIOMMU
>> +command queue (e.g. TLB invalidate).
>> +
>> +**Risk:**
>> +Excessive commands requests from abusive guest can cause flooding of
>> +physical IOMMU command queue,
>> +leading to degraded pIOMMU responsiveness on commands issued from other
>> +guests.
>> +
>> +**Mitigation:**
>> +
>> +- Batch commands that are propagated to the pIOMMU command queue and
>> +  implement batch execution pause/continuation.
>> +  Rely on the same mechanisms as in the previous observation
>> +  (command continuation and batching of pIOMMU-related commands of the same
>> +  type and context).
>> +- If possible, implement domain penalization by adding a per-domain budget
>> +  for vIOMMU/pIOMMU usage:
>> +
>> +  - Apply per-domain dynamic budgeting of allowed IOMMU commands to
>> +    execute per invocation, reducing the budget for guests with
>> +    excessive command requests over a longer period of time
>> +  - Combine with command continuation mechanism
>> +
>> +6. Observation:
>> +---------------
>> +The vIOMMU feature includes an event queue used to forward IOMMU events
>> +to the guest (e.g. translation faults, invalid Stream IDs, permission errors).
>> +A malicious guest may misconfigure its IOMMU state or intentionally trigger
>> +faults at a high rate.
>> +
>> +**Risk:**
>> +Occurrence of IOMMU events with high frequency can cause Xen to flood the
>> +event queue and disrupt scheduling with
>> +high hypervisor CPU load for events handling.
>> +
>> +**Mitigation:**
>> +
>> +- Implement fail-safe state by disabling events forwarding when faults
>> +  are occurred with high frequency and
>> +  not processed by guest:
>> +
>> +  - Introduce a per-domain pending event counter.
>> +  - Stop forwarding events to the guest once the number of unprocessed
>> +    events reaches a predefined threshold.
>> +
>> +- Consider disabling the emulated event queue for untrusted guests.
>> +- Note that this risk is more general and may also apply to stage-2-only
>> +  guests. This section addresses mitigations in the emulated IOMMU layer
>> +  only. Mitigation of physical event queue flooding should also be considered
>> +  in the target pIOMMU driver.
>> +
>> +7. Observation:
>> +---------------
>> +vIOMMU `CFGI_STE` commands can trigger serialized STE programming on the pIOMMU
>> +while `xen_domain->lock`, `devices_lock` and `cmd_queue_lock` are held, with
>> +local interrupts disabled. STE programming may issue multiple polling CMD_SYNC
>> +operations, each with a one-second timeout.
>> +
>> +**Risk:**
>> +An abusive guest can issue CFGI_STE commands that cause multiple CMD_SYNC
>> +operations to reach their polling timeout. This can keep a pCPU with interrupts
>> +disabled for a significant period of time, delaying interrupt handling and
>> +potentially degrading the responsiveness of Xen and other domains running on
>> +the same pCPU.
>> +
>> +**Mitigation:**
>> +
>> +- Implement pinning or otherwise maintaining the lifetime of the required
>> +  objects before releasing the relevant locks, allowing the
>> +  serialized STE programming to be performed without holding locks and with
>> +  local interrupts enabled.
>> +- Consider redesigning the SMMUv3 command processing and locking model in
>> +  future improvements to avoid performing potentially long-running pIOMMU
>> +  operations while holding locks and with local interrupts disabled.
>> +
>> +Performance Impact
>> +==================
>> +
>> +With iommu stage-1 and nested translation inclusion, performance
>> +overhead is introduced comparing to existing,
>> +stage-2 only usage in Xen. Once mappings are established, translations
>> +should not introduce significant overhead.
>> +Emulated paths may introduce moderate overhead, primarily affecting
>> +device initialization and event/command handling.
>> +Testing is performed on Renesas R-Car platform.
>> +Performance is mostly impacted by emulated vIOMMU operations, results
>> +shown in the following table.
>> +
>> ++-------------------------------+---------------------------------+
>> +| vIOMMU Operation              | Execution time in guest         |
>> ++===============================+=================================+
>> +| Reg read                      | median: 645ns, worst-case: 2us  |
>> ++-------------------------------+---------------------------------+
>> +| Reg write                     | median: 630ns, worst-case: 1us  |
>> ++-------------------------------+---------------------------------+
>> +| Invalidate TLB                | median: 2us, worst-case: 10us   |
>> ++-------------------------------+---------------------------------+
>> +| Invalidate STE                | median: 5us worst_case: 100us   |
>> ++-------------------------------+---------------------------------+
>> +
>> +With vIOMMU exposed to guest, guest OS has to initialize IOMMU device
>> +and configure stage-1 mappings for the devices
>> +attached to it.
>> +Following table shows initialization stages which impact stage-1 enabled
>> +guest boot time and compares it with
>> +stage-1 disabled guest.
>> +
>> +NOTE: Device probe execution time varies depending on device complexity.
>> +A USB host controller was selected as the test device in this case.
>> +
>> ++---------------------+-----------------------+------------------------+
>> +| Stage               | Stage-1 Enabled Guest | Stage-1 Disabled Guest |
>> ++=====================+=======================+========================+
>> +| IOMMU Init          | ~10ms                 | /                      |
>> ++---------------------+-----------------------+------------------------+
>> +| Dev Attach / Mapping| ~100ms                | ~90ms                  |
>> ++---------------------+-----------------------+------------------------+
>> +
>> +For devices configured with dynamic DMA mappings, DMA allocate/map/unmap
>> +operations performance is
>> +also impacted on stage-1 enabled guests.
>> +Dynamic DMA mapping operation trigger emulated IOMMU functions like mmio
>> +write/read and TLB invalidations.
>> +
>> ++---------------+---------------------------+--------------------------+
>> +| DMA Op        | Stage-1 Enabled Guest     | Stage-1 Disabled Guest   |
>> ++===============+===========================+==========================+
>> +| dma_alloc     | median: 20us, worst: 5ms  | median: 8us, worst: 60us |
>> ++---------------+---------------------------+--------------------------+
>> +| dma_free      | median: 500us, worst: 10ms| median: 6us, worst: 30us |
>> ++---------------+---------------------------+--------------------------+
>> +| dma_map       | median: 12us, worst: 60us | median: 3us, worst: 20us |
>> ++---------------+---------------------------+--------------------------+
>> +| dma_unmap     | median: 400us, worst: 5ms | median: 5us, worst: 20us |
>> ++---------------+---------------------------+--------------------------+
>> +
>> +Testing
>> +=======
>> +
>> +- QEMU-based ARM system tests for Stage-1 translation.
>> +- Actual hardware validation to ensure compatibility with real SMMUv3
>> +  implementations.
>> +- Unit/Functional tests validating correct translations (not implemented).
>> +
>> +Migration and Compatibility
>> +===========================
>> +
>> +This optional feature defaults to disabled (CONFIG_ARM_VIRTUAL_IOMMU=n,
>> +CONFIG_VIRTUAL_ARM_SMMU_V3=n).
>> +
>> +Future improvements
>> +===================
>> +
>> +- Implement the proposed mitigations to address security risks that are
>> +  not covered by the current design
>> +  (events batching, commands execution continuation)
>> +- PCI support
>> +- Support for other IOMMU HW (Renesas, RISC-V, etc.)
>> +
>> +References
>> +==========
>> +
>> +- Original feature implemented by Rahul Singh:
>> +
>> +https://patchwork.kernel.org/project/xen-devel/cover/cover.1669888522.git.rahul.singh@arm.com/
>> +
>> +- SMMUv3 architecture documentation
>> +- Existing vIOMMU code patterns (KVM, QEMU)
>> \ No newline at end of file
> 



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:01:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:01:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467560.1676647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhMo-00041e-Aw; Mon, 02 Nov 2026 02:01:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467560.1676647; Mon, 02 Nov 2026 02:01:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhMo-00041X-7x; Mon, 02 Nov 2026 02:01:46 +0000
Received: by outflank-mailman (input) for mailman id 1467560;
 Mon, 02 Nov 2026 02:01:44 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhMm-000411-Ks
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:01:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhMl-0094En-LA
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:01:43 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7eef0-bab6-0a2a0a5309dd-0a2a4505ea3e-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:01:43 +0100
Received: from [52.101.70.96]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef07-4cb1-0a2a45050019-346546603cfe-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:01:43 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:01:40 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:01:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=swSSopLhIvFi5ZHiTIU7D1lVsf1r0ahD2X2oUKSJ2RJMdSaXDKzgpof80W0CCPTIFemXb2yuLC/1p8QEgE8pZOYq0MhU2MqA+Ma5DemtTLau0xe7WkKffuRWiwCQvREFMmgho79sWYB6WjPHTV/+t+T/6ptT3gqlJWcqB+WFOeNjBzMus73S2fie1ulctrEaNC2q6lARskqEgKosh2FjScFI1jTgkYQzSH30yQfkU93vfnoxM9gPBbtHUYWZP07+5Y5qXOOJiuuTIrK3YEPJpGyqUmJXuHHFFtmHwosB9VNW4XGNMG/t7mUJ2faDiWpwn0xDNTfIGOtn7IIJy1DUBA==
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=s0i2NcLQP3mIPc/1lbOppxjZLclg7dWzx00nwjlw+k0=;
 b=cUNLduGqkUddahf3afnV4KAbonc/tsbEyDF0WDdWGIQi9IDG2IsaFEBCgQOz03nu5TjzvP8zKBziO2a4WorYK9+OH1/VsmbvNIUbOkvik2rLR7MbhI8pW+GkJ1g4ZEP4JFe5qtyQCO45rhhUbKm8/xU+WpksuKO3HyqcbZ3FRqOdCj0+bXYZRhl8axSQkq+QTLl9Zd38gGAfsF1eZzEnWJoCn8fXUmIo7Lh+3gLlCFyd3/e+rEfWh4WhWQRI8Ot+ftzI/3psZCRWZEYZiXZRx3kagixacJueDZrFqvo8KA8ZBm4lh8Fw5hTkv3u2wyFi1E62sXa+ZPjz90KIFoNyUA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s0i2NcLQP3mIPc/1lbOppxjZLclg7dWzx00nwjlw+k0=;
 b=GsSfVc+eGvZh8pr39pFosNTeULrSfVErzeR2urpQv0xZHUpXoH29a7GiugzN34b7AwVF3QJDpScKDiJeZDRuI1zOpmpn7qiE2miZ7KO+3oFT6UWMvmz13L9DsZG88a+GTv+DQa3SQcy9gUbFZb9ro1jwEHQZTZFNOlVPYCyKFrJacpQzvtk/uo3W1Ykkiq+G7Ezp+FO9K8VAX5Qnpt/DpAhThtASZu5FVs8KZhAL001kiVTUCQJqoHSOVpqcZt0dZQpQ/aCYBmjzrP5v7YIIMrMkMFbJDoypC8UDmAqHfKBcfeQaCTjgDo/nh2gFBINFiUXvoPcPjW5hJL/jvyA4SQ==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <5ebce238-8bad-4fa5-9ba2-cb23e09f8752@epam.com>
Date: Mon, 2 Nov 2026 03:01:38 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 21/22] libxl/arm: Introduce domctl command for IOMMU
 vSID mapping
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <66d35a04bcde0c41050e61e194de4565d6fed045.1791328190.git.milan_djokic@epam.com>
 <37275fb7-d8c3-414f-ad72-8bd399310323@gmail.com>
Content-Language: en-US
In-Reply-To: <37275fb7-d8c3-414f-ad72-8bd399310323@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM8P190CA0030.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:219::35) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 4503d250-5672-41ca-a7d1-08df38853bb0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|23010399003|1800799024|366016|4143699003|11063799006|5023799004|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	VGzJMoz6RSu6gSC4/SgbKUssFOQgFB6AbPOe1Bnr95rcWJZo8S8FftXM/WVK3FCwRjYXpNcTgWVdrLAjPjZpThlYrXaaZHGjAihGMzTelajDFqH9eGQI+AUyFuyi7MEXl1J+WbVcAWNC/hr031pwOIZkkdxH5K5jvkLQNQuKU6RLm240WE1fO9cx5zc3nnrTmMgm4lCiLAE+QiQmFuRyz0Vq6Hl6zb7ApmbG4Sjo4jhShTV9Yl8FVnCjh1zNYvEppLDpGCc15Kt+QAfrxqN9yENbLHhJg8/4rCeSPtsmlOuTwX5P4wQOB1Wd3KnpSVxszvX20coxZlJ++m9mfzBQqE5gjnfX5vRP80RKhxva8zxCwEzvn0tO2mmdM9mbZWibdUEZRDu7GRl0sKX7npir9ioXnhknAJFVR2Y68Zrz0apu7rpyg1w67WA6QiwZUDOJgQJ+0iEKLMxxwof78bI2Xe6gZrYzMgDGEYXP/Q81KIUEbvxgToLd4gGbYVuIN8VfmTu26622KB2zXBDHtzA3LUNMSzQn1GfxXq+dPQN4j7Ix5p4JLT0f3oc5DvX8vV9jK0nts+cFm5kJZOARr+P3fsV/NKMSckk209Pcv0dydK7k7qfuPdD9P46SM6/rSEf1jHIormohbXWo/jI/kd9g1RIsdZ/ZlIJQh2XE+fORRsU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(23010399003)(1800799024)(366016)(4143699003)(11063799006)(5023799004)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Y2VKakRxUWxRY01odDQ2NlZTb2lGWWlSZjhiaVMybVlQM0p1b0VNOS9ZQnJM?=
 =?utf-8?B?Q0F6bnhub3kxU240TmdMSlltczhFVFhuNjNoM1lDbThvSVBOMWIyTnBYaEFO?=
 =?utf-8?B?VkF5ODJZWHdTbkpHdDlkOTVjTU02b0JIL3hOY2Z0blk0VllFKzd0TWJrTUFp?=
 =?utf-8?B?MXRIT0JhK0p6dEhpZ0ZwWlBWSGVDLzQ0WlV4dVFRTy9KaU5XclBZbUx0L3NT?=
 =?utf-8?B?K2pOZTEvVzAvendsaFlNQThUaXlpNm5xeUxJU0V1OTZnM3pFbzFBZHVubEpY?=
 =?utf-8?B?ZGg2T0FTeWR5V0l5UmlGdEo2QnZYcmEyUitFNyt2ZmZRMkErQjdDcWFJWlgy?=
 =?utf-8?B?bmdOTmZqN1B6MEU5V0Q0Z2tBSExBY3drNGJuL21LUGp5cnlOd25SZCtnd3Uy?=
 =?utf-8?B?eXdHMTdkUnQveHN3bU9KcDh3WVpvNThsZGo2d0R6dEttUldvQjdabU85cmly?=
 =?utf-8?B?UmRjaFJlYzNEdWlObHA3SFkvc0ZJc29sNU9JY29adDVUY0RTTHlIODZnS3ZO?=
 =?utf-8?B?US85a3JEZmFLc1ZLWTQya2pCNnRZRmg1YXoxZDlPaTh5VmZ2ZlNpc0o0b1Nj?=
 =?utf-8?B?T2F2QVZuUFhVYnFkb1RLQ1MrNGNpbjUzN0tkWFVLMU1xY1YvTm1rKzBvdnE5?=
 =?utf-8?B?ak5sb0VraWpKUkVTSUZpcXpkU3JnQUNxSytpaUwySldaTzYxaXd5V01UVUYx?=
 =?utf-8?B?eElXWlpNUWczUGRsTGR0UllRVWd2Z280WEdILzdOYkdLOWdUbG1maWltQ25J?=
 =?utf-8?B?Qm82UHdUR1RxZnVFOFNhN1N2Q1lyaXNiL0lLTVRNbjJmOXBoOUxjWjVZdnpu?=
 =?utf-8?B?UXJESnJNc1c4OVY3Wkl5a0p6OEc4OWNxVmdoa08yL1RvZS83QmpSYVlCWWV2?=
 =?utf-8?B?c0Q2ZVFyUFF0citLZ1haSklZVW9uckgxeGFlUXZoVmNEWEZZNEtkbGVkWEFE?=
 =?utf-8?B?SWE1VWZGdXdhNnc2MFNNM212Y3ZwdUlBaDIrVERxVndhWVp6R2ZrdHo4cElh?=
 =?utf-8?B?Ymg1V0g4TmdibGtqc0pORFVIcm9icUVNdk53ZjBLRFRvWnY3Uk1CRHVUWURq?=
 =?utf-8?B?NlRWMjlOWmZ6VmZuL2U5cFhzYlFxb1VKZHJBbk42SnBrcWsrMFgxWU1LZWUz?=
 =?utf-8?B?SEU4YVJXbzAwMFdoRitDdHliQmI5cnNKTVY3Z2Y3KzMxeUZCZXQ0ZWNzcmlB?=
 =?utf-8?B?R3pmcjV4bWh4S3ZoOVhzOHp6bXZ2K0VrdFBteHVYR0YrdjAxRWY1dGJZck1o?=
 =?utf-8?B?bU9tekhxYWVJbWFIMlJJZy9PYjMzZWtpcHhWb0JRRXpLcjVDaytJSzVMSWg5?=
 =?utf-8?B?ZkNWdDl0SVZ0Q1BtVHcrUDFYVVhmTU41RGJFbEdMamdMVWVTMWFHeXNHdkNC?=
 =?utf-8?B?bjVyQkEydzI0QmVvTTQ1TDk4UlNIY3VNaXR2aXlRMkllc2FCbDhKK3Ryd1NF?=
 =?utf-8?B?ejVGcXRNQVJlN1ErcnZSMm53TklpLzgremFpOENQVDVzVDhCM0g5TUVrZHQz?=
 =?utf-8?B?dmFqS1g0ZGVXWC8ra3pGSFpuOVdmV0lPK0d4ZnJjNXpFWFZ4OU9HeHl4RHFE?=
 =?utf-8?B?dk9MMEJJSExjd0FpcjU0SVZyUFUxVE11eWtEU0w5blJYOXd3TXlQdzcxZjJG?=
 =?utf-8?B?OXlNZHFoQTJTby85c2RWbExpbHFHY0FNTkNPOTBhaGwrWktrT0o5ZE1kWmZj?=
 =?utf-8?B?UGVOYVVrTkQrUDJRdXZxSGIveWZJUGtPUlNXSkdrcHFyRElzcDJBbCtGM1Bu?=
 =?utf-8?B?ODJrK1djeW1KZW1QdU1ObDM3N1d1dHJOQUVOOTYyemtwb0h6SHMrWUovR1R2?=
 =?utf-8?B?SmN4a1BIMmI3N3pUNGNUYlBvcDEyTHFuc3J2VXcyZkIzN1g0TmxhaGxIWlNX?=
 =?utf-8?B?M3VoVFhDTHdYUmUrTUhXekJSZmNESElueWtxMWM4MnN4S3pqOXFpYnNpSE1V?=
 =?utf-8?B?UzNMQm4xelQ0Q1pjT0Zjd2xhMEhiNHBMSXRESFFEOVE5UEtMUmt4YlBFakQ1?=
 =?utf-8?B?UkxGSjJhTlZFK3hVUTAxU2lrU1gyZVh1Ykd4WW5zNHRiSjNOTVdCZ1doM1Jh?=
 =?utf-8?B?OEtENWRzZWhheE1hbnhNNHpMYmwvUEJhYlptd2ZleDFLc3VzL05aMTZoQWth?=
 =?utf-8?B?Zm03Qy9qV1U2UVkvTDk4SXJsLzBtNnFTSUNhRlJTTkNXRDg4YjFSbmlaT0lE?=
 =?utf-8?B?VnpKbVhtOFpvOWMzcFBaVkZ6bktwakdETGtJaUcyNEF3NkY2Y3JodmZkRkc1?=
 =?utf-8?B?b00vYm92TEN3YXhOcGFoQlFjZWNhL3EvMEpXcTl3S2hJeEpJYTVwSkxvY0wx?=
 =?utf-8?B?NmIwVGVYS3RCVzM5ZmQvbEFrQVE0dUdIblc1WmtGWFRoLzNxeTIvZz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4503d250-5672-41ca-a7d1-08df38853bb0
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:01:39.3846
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 0frsHxT9euYvVJz3MGNnI04Zt+c8SQ7a7R4xbnbAACCRFfpvxuv3lwIeYEM79v6xFzcxccCknYr2ALC0rLQEWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-c201ff/1793584903-F50A22A1-CC28FF2F/0/0
X-purgate-type: clean
X-purgate-size: 15564

Hi Oleksandr,

On 10/9/26 15:07, Oleksandr Tyshchenko wrote:
> [You don't often get email from olekstysh@gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
>> For guests created via the control domain (xl, Zephyr xenlib), a partial
>> device tree is parsed and loaded on the control domain side.
>>
>> SIDs in the guest device tree have to be replaced with virtual SIDs that
>> are mapped to the corresponding physical SIDs. To do this, the control
>> domain requests Xen to allocate a new vSID and map it to the original
>> pSID for each IOMMU stream ID associated with a guest device.
>>
>> Introduce a new domctl command (XEN_DOMCTL_viommu_allocate_vid) that
>> allows the control domain to request a new vSID mapping and replace the
>> original pSID with the allocated vSID in the guest device tree.
>>
>> Implement vSID allocation in libxl using this interface for devices
>> configured behind an IOMMU.
>>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    tools/include/xenctrl.h             |  13 ++++
>>    tools/libs/ctrl/xc_domain.c         |  25 +++++++
>>    tools/libs/light/libxl_arm.c        | 107 +++++++++++++++++++++++++---
>>    xen/arch/arm/domctl.c               |  38 ++++++++++
>>    xen/include/public/domctl.h         |  22 ++++++
>>    xen/xsm/flask/hooks.c               |   4 ++
>>    xen/xsm/flask/policy/access_vectors |   2 +
>>    7 files changed, 202 insertions(+), 9 deletions(-)
>>
>> diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
>> index 9f00d4a19d..d38b365078 100644
>> --- a/tools/include/xenctrl.h
>> +++ b/tools/include/xenctrl.h
>> @@ -2664,6 +2664,19 @@ int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
>>                                 const uint32_t *llc_colors,
>>                                 uint32_t num_llc_colors);
>>
>> +/*
>> + * Allocate guest IOMMU vSID and establish its mapping to pSID.
>> + * It can only be used on domain DT creation.
>> + * Currently used for ARM only, possibly for RISC-V in the
>> + * future. Function has no effect for x86.
>> + */
>> +int xc_domain_viommu_allocate_vsid_range(xc_interface *xch,
>> +                                         uint32_t domid,
>> +                                         uint16_t nr_sids,
>> +                                         uint32_t first_psid,
>> +                                         uint32_t phandle,
>> +                                         uint32_t *first_vsid);
>> +
>>    #if defined(__arm__) || defined(__aarch64__)
>>    int xc_dt_overlay(xc_interface *xch, void *overlay_fdt,
>>                      uint32_t overlay_fdt_size, uint8_t overlay_op);
>> diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
>> index 94cfab0fa1..0bd3e45fbd 100644
>> --- a/tools/libs/ctrl/xc_domain.c
>> +++ b/tools/libs/ctrl/xc_domain.c
>> @@ -2222,6 +2222,31 @@ out:
>>
>>        return ret;
>>    }
>> +
>> +int xc_domain_viommu_allocate_vsid_range(xc_interface *xch,
>> +                                         uint32_t domid,
>> +                                         uint16_t nr_sids,
>> +                                         uint32_t first_psid,
>> +                                         uint32_t phandle,
>> +                                         uint32_t *first_vsid)
>> +{
>> +    int err;
>> +    struct xen_domctl domctl = {};
>> +
>> +    domctl.cmd = XEN_DOMCTL_viommu_alloc_vsid_range;
>> +    domctl.domain = domid;
>> +    domctl.u.viommu_alloc_vsid_range.first_psid = first_psid;
>> +    domctl.u.viommu_alloc_vsid_range.phandle = phandle;
>> +    domctl.u.viommu_alloc_vsid_range.nr_sids = nr_sids;
>> +
>> +    if ( (err = do_domctl(xch, &domctl)) != 0 )
>> +        return err;
>> +
>> +    *first_vsid = domctl.u.viommu_alloc_vsid_range.first_vsid;
>> +
>> +    return 0;
>> +}
>> +
>>    /*
>>     * Local variables:
>>     * mode: C
>> diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
>> index daaa81f2aa..75c6f8efc5 100644
>> --- a/tools/libs/light/libxl_arm.c
>> +++ b/tools/libs/light/libxl_arm.c
>> @@ -1322,11 +1322,96 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt, void *pfdt)
>>        return 0;
>>    }
>>
>> -static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
>> +/*
>> + * Store virtualized 'iommus' properties for every node attached to IOMMU
>> + * and passthroughed to guest.
>> + * Used as a lookup table for mapping <phandle pSID> -> <vhandle vSID>
>> + */
>> +struct viommu_stream {
>> +    XEN_LIST_ENTRY(struct viommu_stream) entry;
>> +    char path[128];          /* DT path, stable across resizes */
>> +    fdt32_t *iommus;         /* fully virtualized iommus property */
>> +};
>> +
>> +static XEN_LIST_HEAD(, struct viommu_stream) viommu_stream_list;
> 
> 
> Looks like ^^^ is keyed only by DT path ...
> 
> 
>> +
>> +/*
>> + * Helper function which creates mapping of dt node to
>> + * to virtualized 'iommus' property
>> + * Mappings stored in a global 'viommu_stream_list' to
>> + * make it reusable for every fdt resize
>> + */
>> +static int viommu_get_stream(libxl__gc *gc,
>> +                             uint32_t domid,
>> +                             const fdt32_t *prop,
>> +                             int proplen,
>> +                             const char* path, fdt32_t **iommus)
>>    {
>> -    int nodeoff, proplen, i, r;
>> +    int i, r;
>> +    uint32_t vsid, psid, phandle;
>> +    struct viommu_stream *viommu_stream;
>> +
>> +    /* Lookup if stream for target device is already allocated */
>> +    XEN_LIST_FOREACH(viommu_stream, &viommu_stream_list, entry)
>> +    {
>> +        if (!strcmp(viommu_stream->path, path)) {
>> +            *iommus = viommu_stream->iommus;
>> +            return 0;
>> +        }
>> +    }
> 
>    ... a second domain with the same DT path gets the first domain’s
> cached vSIDs without any mapping being created for it. Is it ok?
> 
> 

You're right. The lookup should also take the domain ID into account. 
I'll updated the lookup to use both the domain ID and DT path.

>> +
>> +    /* Allocate new viommu stream */
>> +    viommu_stream = malloc(sizeof(struct viommu_stream));
>> +    if (!viommu_stream)
>> +        return ERROR_NOMEM;
>> +    memset(viommu_stream, 0, sizeof(struct viommu_stream));
>> +    viommu_stream->iommus = malloc(proplen);
>> +    if (!viommu_stream->iommus) {
>> +        free(viommu_stream);
>> +        return ERROR_NOMEM;
>> +    }
>> +    memset(viommu_stream->iommus, 0, proplen);
>> +
>> +    LOG(DEBUG, "Creating vIOMMU stream for device %s",
>> +        path);
>> +
>> +    /*
>> +     * Virtualize device "iommus" property
>> +     * (replace pIOMMU with vIOMMU phandle and pSIDs with mapped vSIDs)
>> +     */
>> +    for (i = 0; i < proplen / 8; ++i) {
>> +        /* Allocate new vSID mapped to pSID and physical IOMMU */
>> +        phandle = fdt32_to_cpu(prop[i * 2]);
>> +        psid = fdt32_to_cpu(prop[i * 2 + 1]);
>> +        r = xc_domain_viommu_allocate_vsid_range(CTX->xch, domid, 1, psid,
>> +                                                 phandle, &vsid);
>> +        if (r) {
>> +            LOG(ERROR, "Can't allocate new vSID/vRID for guest IOMMU device");
>> +            return r;
>> +        }
>> +        viommu_stream->iommus[i * 2] = cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
>> +        viommu_stream->iommus[i * 2 + 1] = cpu_to_fdt32(vsid);
>> +        LOG(DEBUG, "Mapped vSID: %u to pSID: %u", vsid, psid);
>> +    }
>> +
>> +    strcpy(viommu_stream->path, path);
>> +    *iommus = viommu_stream->iommus;
>> +
>> +    XEN_LIST_INSERT_HEAD(&viommu_stream_list, viommu_stream, entry);
>> +
>> +    return 0;
>> +}
>> +
>> +/*
>> + * Used to update partial fdt when vIOMMU is enabled
>> + * Maps dt properties of IOMMU devices to virtual IOMMU
>> + */
>> +static int viommu_modify_partial_fdt(libxl__gc *gc, void *pfdt, uint32_t domid)
>> +{
>> +    int nodeoff, proplen, r;
>>        const fdt32_t *prop;
>>        fdt32_t *prop_c;
>> +    char path[128];
>>
>>        nodeoff = fdt_path_offset(pfdt, "/passthrough");
>>        if (nodeoff < 0)
>> @@ -1340,11 +1425,16 @@ static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
>>            if (!prop)
>>                continue;
>>
>> -        prop_c = libxl__zalloc(gc, proplen);
>> +        r = fdt_get_path(pfdt, nodeoff, path, sizeof(path));
>> +        if ( r < 0 ) {
>> +            LOG(ERROR, "Can't get passthrough node path");
>> +            return r;
>> +        }
>>
>> -        for (i = 0; i < proplen / 8; ++i) {
>> -            prop_c[i * 2] = cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
>> -            prop_c[i * 2 + 1] = prop[i * 2 + 1];
>> +        r = viommu_get_stream(gc, domid, prop, proplen, path, &prop_c);
>> +        if (r) {
>> +            LOG(ERROR, "Can't get viommu stream");
>> +            return r;
>>            }
>>
>>            r = fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
>> @@ -1356,7 +1446,6 @@ static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
>>
>>        return 0;
>>    }
>> -
>>    #else
>>
>>    static int check_partial_fdt(libxl__gc *gc, void *fdt, size_t size)
>> @@ -1375,7 +1464,7 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt, void *pfdt)
>>        return -FDT_ERR_INTERNAL;
>>    }
>>
>> -static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
>> +static int viommu_modify_partial_fdt(libxl__gc *gc, void *pfdt, uint32_t domid)
>>    {
>>        LOG(ERROR, "partial device tree not supported");
>>
>> @@ -1507,7 +1596,7 @@ next_resize:
>>            if (info->arch_arm.viommu_type == LIBXL_VIOMMU_TYPE_SMMUV3) {
>>                FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) );
>>                if (pfdt)
>> -                FDT( modify_partial_fdt(gc, pfdt) );
>> +                FDT( viommu_modify_partial_fdt(gc, pfdt, dom->guest_domid) );
>>            }
>>
>>            for (i = 0; i < d_config->num_disks; i++) {
>> diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
>> index b76af56fad..dc21dc9fca 100644
>> --- a/xen/arch/arm/domctl.c
>> +++ b/xen/arch/arm/domctl.c
>> @@ -16,6 +16,7 @@
>>    #include <xen/types.h>
>>    #include <xsm/xsm.h>
>>    #include <public/domctl.h>
>> +#include <asm/viommu.h>
>>
>>    void arch_get_domain_info(const struct domain *d,
>>                              struct xen_domctl_getdomaininfo *info)
>> @@ -186,6 +187,43 @@ long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
>>        }
>>        case XEN_DOMCTL_dt_overlay:
>>            return dt_overlay_domctl(d, &domctl->u.dt_overlay);
>> +
>> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
>> +    case XEN_DOMCTL_viommu_alloc_vsid_range:
>> +    {
>> +        int rc = 0;
>> +        uint16_t i;
>> +        uint32_t vsid;
>> +        struct xen_domctl_viommu_alloc_vsid_range *vsid_range =
>> +            &domctl->u.viommu_alloc_vsid_range;
>> +
>> +        if ( vsid_range->pad )
>> +            return -EINVAL;
>> +
>> +        for ( i = 0; i < vsid_range->nr_sids; i++ )
>> +        {
>> +            rc = viommu_allocate_vsid(d, vsid_range->first_psid
>> +                                          + i,
>> +                                          vsid_range->phandle,
>> +                                          &vsid);
>> +            if( rc )
>> +                return rc;
>> +        }
>> +
>> +        if ( !rc )
>> +        {
>> +            /* Calculate first vSID from allocated range */
>> +            vsid_range->first_vsid = vsid -
>> +                vsid_range->nr_sids + 1;
> 
> With vsid_range->nr_sids == 0, vsid stays uninitialised and garbage is
> copied back to the caller.
> 

Good catch. I'll reject zero-sized vSID allocation requests to avoid 
returning an uninitialized vSID.

> 
>> +            rc = copy_to_guest(u_domctl, domctl, 1);
>> +            if ( rc )
>> +                rc = -EFAULT;
>> +        }
>> +
>> +        return rc;
>> +    }
>> +#endif
>> +
>>        default:
>>            return subarch_do_domctl(domctl, d, u_domctl);
>>        }
>> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
>> index 510300bb67..2708215d5b 100644
>> --- a/xen/include/public/domctl.h
>> +++ b/xen/include/public/domctl.h
>> @@ -1279,6 +1279,26 @@ struct xen_domctl_get_domain_state {
>>        uint64_t unique_id;      /* Unique domain identifier. */
>>    };
>>
>> +/*
>> + * XEN_DOMCTL_viommu_alloc_vsid_range
>> + *
>> + * Allocate guest vSID range and
>> + * establish pSID->vSID mapping for target range and physical IOMMU (phandle).
>> + * Allocated range is continous
>> + */
>> +struct xen_domctl_viommu_alloc_vsid_range {
>> +    /* IN: Range first pSID  */
>> +    uint32_t first_psid;
>> +    /* IN: Physical IOMMU phandle behind which the target device streams are configured */
>> +    uint32_t phandle;
>> +    /* IN: Number of vSIDs to allocate */
>> +    uint16_t nr_sids;
>> +    /* padding, must be 0 */
>> +    uint16_t pad;
>> +    /* OUT: Mapped range first vSID */
>> +    uint32_t first_vsid;
>> +};
>> +
>>    struct xen_domctl {
>>    /* Stable domctl ops: interface_version is required to be 0.  */
>>        uint32_t cmd;
>> @@ -1371,6 +1391,7 @@ struct xen_domctl {
>>    #define XEN_DOMCTL_gsi_permission                88
>>    #define XEN_DOMCTL_set_llc_colors                89
>>    #define XEN_DOMCTL_get_domain_state              90 /* stable interface */
>> +#define XEN_DOMCTL_viommu_alloc_vsid_range       91
>>    #define XEN_DOMCTL_gdbsx_guestmemio            1000
>>    #define XEN_DOMCTL_gdbsx_pausevcpu             1001
>>    #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
>> @@ -1439,6 +1460,7 @@ struct xen_domctl {
>>    #endif
>>            struct xen_domctl_set_llc_colors    set_llc_colors;
>>            struct xen_domctl_get_domain_state  get_domain_state;
>> +        struct xen_domctl_viommu_alloc_vsid_range viommu_alloc_vsid_range;
>>            uint8_t                             pad[128];
>>        } u;
>>    };
>> diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
>> index d65ba0aeae..6321b4308b 100644
>> --- a/xen/xsm/flask/hooks.c
>> +++ b/xen/xsm/flask/hooks.c
>> @@ -881,6 +881,10 @@ static int cf_check flask_domctl(struct domain *d, struct xen_domctl *op)
>>        case XEN_DOMCTL_set_llc_colors:
>>            return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__SET_LLC_COLORS);
>>
>> +    case XEN_DOMCTL_viommu_alloc_vsid_range:
>> +        return current_has_perm(d, SECCLASS_DOMAIN2,
>> +            DOMAIN2__VIOMMU_ALLOC_VSID_RANGE);
>> +
>>        default:
>>            return avc_unknown_permission("domctl", op->cmd);
>>        }
>> diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
>> index bbb9c117ec..35acbefab2 100644
>> --- a/xen/xsm/flask/policy/access_vectors
>> +++ b/xen/xsm/flask/policy/access_vectors
>> @@ -253,6 +253,8 @@ class domain2
>>        set_llc_colors
>>    # XEN_DOMCTL_get_domain_state
>>        get_domain_state
>> +# XEN_DOMCTL_viommu_alloc_vsid_range
>> +    viommu_alloc_vsid_range
>>    }
>>
>>    # Similar to class domain, but primarily contains domctls related to HVM domains
> 



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:02:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:02:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467567.1676657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhN6-0004Tz-J3; Mon, 02 Nov 2026 02:02:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467567.1676657; Mon, 02 Nov 2026 02:02:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhN6-0004Ts-Ep; Mon, 02 Nov 2026 02:02:04 +0000
Received: by outflank-mailman (input) for mailman id 1467567;
 Mon, 02 Nov 2026 02:02:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhN5-0004RT-7h
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:02:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhN4-00Fi8p-Km
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:02:02 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7eef9-e002-0a2a0a5209dd-0a2a450aab00-16
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:02 +0100
Received: from [52.101.83.110]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef1a-f2d2-0a2a450a0019-3465536e321f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:02 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:01:59 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:01:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=GDa2RI/nSJ/+0rBk1f+3cPgvOjsJ7Umms7D3xyYRWNTarw3Eqy16xxmgAtWzFgS+1Wu035HGUcg7jXW4+TXRK9Zia+Wxmbx/VXPn0af/M82wxKw8gONfCk3+IN4hUBAjBre28JSocRlH5pYaE61OrT3GtFTDDfe8+b/NRQ8RIWTcPnVuHagjpTCC9J+IS7j5HcURs6fEpijoXJ4E/X0OyQliX6DH4sAk+6/0zL3lKk0SCYkIQViDrCi3U6jhUbt/PimJzfsW0BHWm9crwb1P8leJ6daS60eaf9bKbQyitwM/uHqUB8bW1FfrZibPLdSkfZiCtWA443BfnNfSiqP2tw==
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=6EsK/WzkCLVQ9Z8a/nTEAKlBdSIdPGwUe8Qt4OvtfSY=;
 b=RSsa98ji6kXbkTb0eg+azhb+yCeQuFZLudPfkvzgOBaIdvdqI2yIKSdxK3Urs25iB30O4oQh4nckejzZtyqIqOhl+6Evg4P2asqFfBEYdFipWtSUB/enEA4Xf5WtgVmK+EmDdm8PoZpvzaB5lM4es8HRRIbJVxxtE38DuJqt3mgsTPwjnllOMkbZO3uVsw2UxFmPPkba2ylAjDOitF9Raai/HRETZLftbyK7QWIyOVHZscHwx0n5QXXQuO3QhA3dasuAixbtc3Js49bndKlMHJNBUDPKAohP1A712sI4USaLsCoaLng/xQEeQblYX9ZhIfsIrJHgyZJVoX2O0uwP/g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6EsK/WzkCLVQ9Z8a/nTEAKlBdSIdPGwUe8Qt4OvtfSY=;
 b=dVRXO1I1yUTBEbQiRMRsR7gI4hBd7IUSR4wEZX0xcnCatABli7UPBSrSg+lnoafweXOHJIAVSBkird+rhMsM/boyC22FGpoRrvZmPINQb/svEnP13GXMmlziLk0Eytg+Cky/XoefjyfClhonFysFQshjHg5acnva9F1o0Xo+B+LGK3t1I1IRWdCS4Y0fOSYcP50wk37YpEKvYQArTh2TGjFx8X2DvyQPwWIDMtVAcmeIMcVzysaIiZatyDlRyQYRycgLjsW8ieG1YKKv2pgiMEPZWTDBhaPYBAdFo68FMsiRwDYFx6Aahl9IhEWpmQl1npRd5J/JLDnOtVIpgU4EsA==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <0dde4c33-cc9c-4b9a-a158-48cff857c177@epam.com>
Date: Mon, 2 Nov 2026 03:01:58 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 20/22] xen/arm: vIOMMU vSID->pSID mapping layer
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Rahul Singh <rahul.singh@arm.com>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <a559fb6eca6befc043ab9a7eacf36f470ed01050.1791328190.git.milan_djokic@epam.com>
 <d997e441-5697-4b13-8a49-e07838d83de1@gmail.com>
Content-Language: en-US
In-Reply-To: <d997e441-5697-4b13-8a49-e07838d83de1@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM8P190CA0021.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:219::26) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 912f2a21-a0de-4858-cdf9-08df388547cc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|10067099003|22082099003|18002099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	fFCbf1UJD06644Eu1lWOBi1dliw/Qv06VjCHBM+InLOlnUXT9Loitg9bgS4/4jB/oud2AfPJyLtEedJKDhHGTHIoaNlh8PNEj+fMcE02hfiQI/OcfcdWTU0kJVAZe9NCUo40291jAJL6W+aQuhL9H9ovTGOhk+/V693mQOhplXyVrr/a2FD7CSNjAGyLwIANsVfVmVBWstiPPtx/WOor+wFJTe0iH03zMRDtOz1EkeShPY8OR9N+X8qpG7OikPav8jjURDR05voGcyqVyB50SnU8QxjwXD6kFIBGXTzbTHhijl2BEKuGS52axlEfWynekgNyVpuTp52WP5mzt7awInJ+uAfWDxyX1bpPn3rt8fqT9InpXdK5LjrVFneUEPevwyw99HgIwoxlVo7B8xgt0j2uVAc084kjGP8oTNMMjUPxozGYXYYBrrhkmWSQs8ar0FR/UzYVuCFk9qXlWgURwdkcLwO6XAeJh1lm9Y2Lgno6hhCNDbI+GmO1+ro6iORV1INEEkrIisg7yraCUi4TnbBQ7dtNymeSVgAofWbYrw46yoga63Sb5DjIjD7LCkqYLlu30YhIPSyZZAnYhPTfqLN5vKZcm93gw+I1zYLQheFWe5WIJNByi9wC4I4ZVi/FV1Dv2st9/+ASYW4S3fITkV8wuAlLbtx4b6ryjc6jBV0=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?QkxiUkVzbklmb1FVRjhNempLM1pGWFRXZTlFcUVOMmlmOWRLRDhua3pOY3Zh?=
 =?utf-8?B?SWNHa2hrTjBGNEJORWVGMW4rNG43RzBQK0NCMnE3emR1aVFYenJYdlVsNS9W?=
 =?utf-8?B?dVV0NU1xM210ZGU3Ry82T3g0M3ZDTEwzL3ZSZmZTUFNHYTZlZi9xc2xkMVBh?=
 =?utf-8?B?cFRqTzNZSXdBcHNHcUh4UUZFY3gxR1VQZm9mdU1sd0JTaHJpTW9GQ3EveGxU?=
 =?utf-8?B?Mnc5bVdFdlNJQU8xSHVyeXVmUjVJQ3ptUS9rTGk0TEZDcDVyQzhtQTM5aGpQ?=
 =?utf-8?B?Qk11R0Q1cUJPTkErWUZraFY1RzZpeVBmOWkrbkJsOTVZei9hcDJXcWQzUUFu?=
 =?utf-8?B?Q1Q2eHFsN0dEOGU0cVBLZ3NPMExxVUJTUnNseUVkeCtZU0NQWE1MaWJBcXl4?=
 =?utf-8?B?Ym5tMkw2dXVBb1RjVXZNYllBSUhQRkdIM25OQ0ovVkxOSEo1anhwRDRIN001?=
 =?utf-8?B?VjdwUEpBM0JUT05sdlZQdU5OU1VPSG9KWThHaDhNeVJCZXExUXpoTWVVT3RE?=
 =?utf-8?B?c1UxSWlxcGRqRUlNUC92T3llbXA5aW1xR0k2eTQzSkFSL2ZMTFV0QXZDWjFk?=
 =?utf-8?B?aDk5WE96Mm8zSDZCY01jU3JuYlM5YkozWklDQ0YyNVN2Qm1yeEdjRTRNYWNr?=
 =?utf-8?B?bUtEdGN1TTZWUGpkQVZpek5IUnhMdTV6TW9rTkdyYmhMcjA2MGlKdlgveXIy?=
 =?utf-8?B?ZFIxM1MxV3pCT1NEd2VLL2dDZkxMWjAzSVQyYlM1LzlncThPWVN0WGRhR1Rl?=
 =?utf-8?B?V3RKUEdkcjZ6NnR4bU1xUTMvM1ltQUxOMmtVK3l6SXRYWTNmNVM1ZHQ1aFZP?=
 =?utf-8?B?UUlxMHkvUWNUQ0V1SDJMZEhXRTV3ejZHdU9rdXVTQWJRdGNHZnZhaEVzeEZU?=
 =?utf-8?B?OWxYUHorNW5iZE0ybDNDUEhFZzN3d0FQNEZjOVFlSkRCdjI3WkRXWG45UUxv?=
 =?utf-8?B?NCtVTTR6M2lDbm5VVXNodkJqeGRiLyt6T3JIU3UyV2JuYXV6YzJDWkI4cU4z?=
 =?utf-8?B?U0pCaHVGN0JTN3J1dWQ3SVNHUDRPUXB5ZlBkeUNMdWtGRmNpeW1lUW1qSUhy?=
 =?utf-8?B?RisrSDBoMVByYVJrL3paeTdhRzhSUFVEZk1nUXUwdW9YK1dzeGEwS0VYK05j?=
 =?utf-8?B?NFBzRUttdUF4TXRwUE1SZ1ZsaWZQZzNKZDB6R2crQTRhTG9HUHphdmtrVFJk?=
 =?utf-8?B?cVpobGRkVEdhQThkcVBySm9HMVNnbE41dmQ0bFh0RHRxSUc4R3JXV3FoSEhT?=
 =?utf-8?B?dDlCd0x2d2R1MTF2T28vcDRCcVdnQ1JpTFdXclBUa0NkZHRiWVcyUUZlQ1pK?=
 =?utf-8?B?VGlqRnV6V2UwTEdwZGcrU1Zld3hGOExGbDRvWkxDMUVPSnAyUnlOZ2QzRDR3?=
 =?utf-8?B?SDJhTnBmOWdrS1Byd1IyRi9aMHVVYzBEV0c2TFB1SnIzWW5QM2NJNXVQQlhB?=
 =?utf-8?B?cEZSWlFoZVFiWHNDdWU5TkZrbDBhaHA5Vk5tcmVYN09WaHdnUDY3S1B4MzdP?=
 =?utf-8?B?MjM3dnVXczE3czZyVzBBV25qM2RFbFZ3RjQyMGNJMVVSeG45VVJQQ1ZlUnhS?=
 =?utf-8?B?V0ZmWXBjcnNBb3M2ZXl3dDhYcXh0UCswZTdJVlFrdXhheFhycVdJOUlBUVRj?=
 =?utf-8?B?b1NEYWQyeDVtYWx4NFRCRG9HNWRxQU5IcExlVDMydVhENnErVTNWQzN6MXZE?=
 =?utf-8?B?Nm9YZ0hHeUt0ZG5zK0dFMHhxRDBBMVh3dzZyRlRxWHlYRzNRUTNtYk5WbWJC?=
 =?utf-8?B?MTRjSjFtNU9VNGhZbEtuQjhqdmtGY3hGYm5OYXk3SDJWRXBraXJaSUNFL1Zq?=
 =?utf-8?B?UnhHMVR2UGJnakhxK0gyOTExZEF2SzR6OTZncDVITXhXaDlyZ08xT1pBOUZM?=
 =?utf-8?B?YkQ2MFBzVW9qSjhENTk1cEZXTXJTMklHZWtvNGNPTll0ODJ4dm5haXZuT0pM?=
 =?utf-8?B?d2daNEcvN0NSZlR0ZFdydVk5eXpBc2F0N294eENxSzlYSndBZGNtTTJhNFVJ?=
 =?utf-8?B?V0dkV0dLYkVwZmMxUGRkazNBMkVnd1dUenNSZkxZRWdjMU9uL3IxMUppdnND?=
 =?utf-8?B?RDVUNnFmOUZBb2YzN2xVb1pDck4xa00wWVR3UmV6RmkxUUVLTFBxVXVPamVJ?=
 =?utf-8?B?TWlrVlFCekJVVENWazJFTGF4cDVVaXJqRGdubEJQeGszNXVpS0N6aGc4YWxI?=
 =?utf-8?B?VUYvQTJFMDlOUHRqamo1SE14Z2lVQ0hUaVJmTm45Q0JNTmZHVjlkMTdiYk40?=
 =?utf-8?B?bW5QbWpyVkFWb0xLQ20wZ1Y4eGZnbE8vemd3STFlTGNiVlVaYW0xYU9qN0JV?=
 =?utf-8?B?Tm1vU3d4YzFidW4wZVltb3czSDdVUTNaUUhPdWRqOCs1T3BuRmloUT09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 912f2a21-a0de-4858-cdf9-08df388547cc
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:01:59.7370
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: UpMwS2k1FOsglMcz+zltACVlftS6c0Jxggm45wuP7YumxTL3SrfOH6sVoaz7bAu27C4aJrjOqtUJfKTw2mtklw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-4011c0/1793584922-51EC2CFC-620A3937/0/0
X-purgate-type: clean
X-purgate-size: 18341

Hi Oleksandr,

On 10/9/26 16:15, Oleksandr Tyshchenko wrote:
> [You don't often get email from olekstysh@gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
>> Introduce a vIOMMU mapping layer to support passthrough of IOMMU devices
>> attached to different physical IOMMUs, including devices with the same
>> Stream ID.
>>
>> Add a new generic vIOMMU API, viommu_allocate_vsid(), which allocates a
>> guest vSID and maps it to the input pSID and the backing physical SMMU.
>>
>> Once the mapping is established, the guest uses the vSID for stage-1
>> commands, and Xen translates the vSID to the corresponding pSID before
>> processing the command on the physical SMMU.
>>
>> Implement usage of the new API for dom0less guests. Allocate vSIDs when
>> creating the guest device tree and replace the original pSIDs with vSIDs
>> that are subsequently used by the guest driver.
>>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    xen/arch/arm/include/asm/viommu.h       |  12 +++
>>    xen/common/device-tree/dom0less-build.c |  33 +++++--
>>    xen/drivers/passthrough/arm/smmu-v3.c   |  10 ++-
>>    xen/drivers/passthrough/arm/viommu.c    |   9 ++
>>    xen/drivers/passthrough/arm/vsmmu-v3.c  | 109 +++++++++++++++++++++++-
>>    xen/include/xen/iommu.h                 |   6 +-
>>    6 files changed, 165 insertions(+), 14 deletions(-)
>>
>> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
>> index 5ae21042f0..3d0eb92655 100644
>> --- a/xen/arch/arm/include/asm/viommu.h
>> +++ b/xen/arch/arm/include/asm/viommu.h
>> @@ -34,6 +34,16 @@ struct viommu_ops {
>>         * Called during domain destruction to free resources used by vIOMMU.
>>         */
>>        int (*relinquish_resources)(struct domain *d);
>> +
>> +    /*
>> +     * Allocate free vSID/vRID for the guest device and establish vID->pID mapping
>> +     * Called during domain device assignment.
>> +     * Returns 0 on success and sets vsid argument to newly allocated vSID/vRID
>> +     * mapped to physical ID (id argument).
>> +     * Negative error code returned if allocation fails.
>> +     */
>> +    int (*allocate_vsid)(struct domain *d, uint32_t id, uint32_t phandle,
>> +                         uint32_t *vsid);
>>    };
>>
>>    struct viommu_desc {
>> @@ -54,6 +64,8 @@ extern struct list_head host_iommu_list;
>>    int domain_viommu_init(struct domain *d, uint8_t viommu_type);
>>    int viommu_relinquish_resources(struct domain *d);
>>    uint8_t viommu_get_type(void);
>> +int viommu_allocate_vsid(struct domain *d, uint32_t id, uint32_t phandle,
>> +                         uint32_t *vsid);
>>    void add_to_host_iommu_list(paddr_t addr, paddr_t size,
>>                                const struct dt_device_node *node,
>>                                const void *iommu);
>> diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
>> index 7280bcf72b..673bcbbd1c 100644
>> --- a/xen/common/device-tree/dom0less-build.c
>> +++ b/xen/common/device-tree/dom0less-build.c
>> @@ -31,6 +31,8 @@
>>    #include <xen/static-memory.h>
>>    #include <xen/static-shmem.h>
>>
>> +#include <asm/viommu.h>
>> +
>>    #define XENSTORE_PFN_LATE_ALLOC UINT64_MAX
>>
>>    static domid_t __initdata xs_domid = DOMID_INVALID;
>> @@ -332,11 +334,12 @@ static int __init handle_prop_pfdt(struct kernel_info *kinfo,
>>    }
>>
>>    #ifdef CONFIG_ARM_VIRTUAL_IOMMU
>> -static void __init modify_pfdt_node(void *pfdt, int nodeoff)
>> +static void __init modify_pfdt_node(void *pfdt, int nodeoff, struct domain *d)
>>    {
>>        int proplen, i, rc;
>>        const fdt32_t *prop;
>>        fdt32_t *prop_c;
>> +    uint32_t psid, phandle, vsid;
>>
>>        prop = fdt_getprop(pfdt, nodeoff, "iommus", &proplen);
>>        if ( !prop )
>> @@ -346,10 +349,23 @@ static void __init modify_pfdt_node(void *pfdt, int nodeoff)
>>        if ( !prop_c )
>>            return;
>>
>> +    /*
>> +     * Assign <vIOMMU vSID> pairs to iommus property and establish
>> +     * vSID->pSID mappings
>> +     */
>>        for ( i = 0; i < proplen / 8; ++i )
>>        {
>> +        phandle = fdt32_to_cpu(prop[i * 2]);
>> +        psid = fdt32_to_cpu(prop[i * 2 + 1]);
>> +        rc = viommu_allocate_vsid(d, psid, phandle, &vsid);
>> +        if ( rc )
>> +        {
>> +            dprintk(XENLOG_ERR, "(DOMID=%u) Failed to allocate vSID for "
>> +                    "pSID: %u, pIOMMU: %u", d->domain_id, psid, phandle);
>> +            return;
> 
> As I mentioned in prev commit #19/22, in that case the guest DT keeps
> the host phandle and pSID while the domain creates normally since the
> failure is ignored. I think, we need to propagate the error and fail
> domain creation. What do you think?
> 

Agreed. Will be updated.

> 
>> +        }
>>            prop_c[i * 2] = cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
>> -        prop_c[i * 2 + 1] = prop[i * 2 + 1];
>> +        prop_c[i * 2 + 1] = cpu_to_fdt32(vsid);
>>        }
>>
>>        rc = fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
>> @@ -362,7 +378,8 @@ static void __init modify_pfdt_node(void *pfdt, int nodeoff)
>>        return;
>>    }
>>    #else
>> -    static inline void __init modify_pfdt_node(void *pfdt, int nodeoff)
>> +    static inline void __init modify_pfdt_node(void *pfdt, int nodeoff,
>> +                                               struct domain *d)
>>        {
>>            return;
>>        }
>> @@ -371,7 +388,7 @@ static void __init modify_pfdt_node(void *pfdt, int nodeoff)
>>    static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
>>                                     int nodeoff,
>>                                     uint32_t address_cells, uint32_t size_cells,
>> -                                 bool scan_passthrough_prop)
>> +                                 bool scan_passthrough_prop, struct domain *d)
>>    {
>>        int rc = 0;
>>        void *fdt = kinfo->fdt;
>> @@ -394,9 +411,9 @@ static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
>>        node_next = fdt_first_subnode(pfdt, nodeoff);
>>        while ( node_next > 0 )
>>        {
>> -        modify_pfdt_node(pfdt, node_next);
>> +        modify_pfdt_node(pfdt, node_next, d);
>>            rc = scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size_cells,
>> -                            scan_passthrough_prop);
>> +                            scan_passthrough_prop, d);
>>            if ( rc )
>>                return rc;
>>
>> @@ -483,7 +500,7 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
>>                res = scan_pfdt_node(kinfo, pfdt, node_next,
>>                                     DT_ROOT_NODE_ADDR_CELLS_DEFAULT,
>>                                     DT_ROOT_NODE_SIZE_CELLS_DEFAULT,
>> -                                 false);
>> +                                 false, d);
>>                if ( res )
>>                    goto out;
>>                continue;
>> @@ -493,7 +510,7 @@ static int __init domain_handle_dtb_boot_module(struct domain *d,
>>                res = scan_pfdt_node(kinfo, pfdt, node_next,
>>                                     DT_ROOT_NODE_ADDR_CELLS_DEFAULT,
>>                                     DT_ROOT_NODE_SIZE_CELLS_DEFAULT,
>> -                                 true);
>> +                                 true, d);
>>                if ( res )
>>                    goto out;
>>                continue;
>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
>> index e44f872d2d..297d2e5e7b 100644
>> --- a/xen/drivers/passthrough/arm/smmu-v3.c
>> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
>> @@ -3048,7 +3048,7 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(const struct device *dev)
>>    }
>>
>>    static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d,
>> -                             u32 sid)
>> +                             u32 sid, const struct arm_smmu_device *smmu)
>>    {
>>        int i;
>>        unsigned long flags;
>> @@ -3064,6 +3064,9 @@ static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d,
>>        list_for_each_entry(io_domain, &xen_domain->contexts, list) {
>>                smmu_domain = to_smmu_domain(io_domain);
>>
>> +             if (smmu_domain->smmu != smmu)
>> +                     continue;
>> +
>>                spin_lock_irqsave(&smmu_domain->devices_lock, flags);
>>                list_for_each_entry(master, &smmu_domain->devices, domain_head) {
>>                        for (i = 0; i < master->num_streams; i++) {
>> @@ -3292,14 +3295,15 @@ static void arm_smmu_iommu_xen_domain_teardown(struct domain *d)
>>    }
>>
>>    static int arm_smmu_attach_guest_config(struct domain *d, uint32_t sid,
>> -             const struct iommu_guest_config *cfg)
>> +                             const struct iommu_guest_config *cfg,
>> +                             const struct arm_smmu_device *smmu)
>>    {
>>        int ret = -EINVAL;
>>        unsigned long flags;
>>        struct arm_smmu_master *master;
>>        struct arm_smmu_domain *smmu_domain;
>>        struct arm_smmu_xen_domain *xen_domain = dom_iommu(d)->arch.priv;
>> -     struct iommu_domain *io_domain = arm_smmu_get_domain_by_sid(d, sid);
>> +     struct iommu_domain *io_domain = arm_smmu_get_domain_by_sid(d, sid, smmu);
>>
>>        if (!io_domain)
>>                return -ENODEV;
>> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough/arm/viommu.c
>> index 407e68e62d..6c97acb049 100644
>> --- a/xen/drivers/passthrough/arm/viommu.c
>> +++ b/xen/drivers/passthrough/arm/viommu.c
>> @@ -75,6 +75,15 @@ int viommu_relinquish_resources(struct domain *d)
>>        return cur_viommu->ops->relinquish_resources(d);
>>    }
>>
>> +int viommu_allocate_vsid(struct domain *d, uint32_t id, uint32_t phandle,
>> +                         uint32_t *vsid)
>> +{
>> +    if ( !cur_viommu )
>> +        return -ENODEV;
>> +
>> +    return cur_viommu->ops->allocate_vsid(d, id, phandle, vsid);
>> +}
>> +
>>    uint8_t viommu_get_type(void)
>>    {
>>        if ( !cur_viommu || host_iommu_list_incomplete ||
>> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> index b71511c2eb..53fd7f2d63 100644
>> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
>> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> @@ -85,6 +85,8 @@
>>    #define smmu_get_ste_s1ctxptr(x)    FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK, \
>>                                        FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, x))
>>
>> +#define MAX_VSID   (1 << SMMU_IDR1_SIDSIZE)
>> +
>>    /* event queue entry */
>>    struct arm_smmu_evtq_ent {
>>        /* Common fields */
>> @@ -132,6 +134,14 @@ struct arm_vsmmu_queue {
>>        uint8_t     max_n_shift;
>>    };
>>
>> +/* vSID->pSID mapping entry */
>> +struct vsid_entry {
>> +    bool        valid;
>> +    uint32_t    vsid;
>> +    uint32_t    psid;
>> +    struct arm_smmu_device *smmu;
>> +};
>> +
>>    struct virt_smmu {
>>        struct      domain *d;
>>        struct      list_head viommu_list;
>> @@ -156,6 +166,7 @@ struct virt_smmu {
>>        spinlock_t  cr2_lock;
>>        spinlock_t  strtab_cfg_lock;
>>        spinlock_t  irq_cfg_lock;
>> +    struct vsid_entry *vsids;
>>    };
>>
>>    /* Helper functions */
>> @@ -545,6 +556,49 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu *smmu, uint64_t *cmdptr)
>>        struct arm_vsmmu_s1_trans_cfg s1_cfg = {0};
>>        uint32_t sid = smmu_cmd_get_sid(cmdptr[0]);
>>        struct iommu_guest_config guest_cfg = {0};
>> +    struct arm_smmu_device *phys_smmu = NULL;
>> +    struct host_iommu *host_iommu;
>> +    uint32_t psid;
>> +    struct arm_smmu_evtq_ent ent = {
>> +        .opcode = EVT_ID_BAD_STREAMID,
>> +        .sid = sid,
>> +        .c_bad_ste_streamid = {
>> +            .ssid = 0,
>> +            .ssv = false,
>> +        },
>> +    };
>> +
>> +    /* vIOMMU->pIOMMU identity mapped for HW domain */
>> +    if ( is_hardware_domain(d) )
>> +    {
>> +        psid = sid;
>> +        list_for_each_entry(host_iommu, &host_iommu_list, entry)
>> +        {
>> +            if ( host_iommu->addr == smmu->addr )
>> +            {
>> +                phys_smmu = (struct arm_smmu_device *) host_iommu->iommu;
>> +                break;
>> +            }
>> +        }
>> +    }
>> +    else {
>> +        /* vSID out of range or not mapped to pSID */
>> +        if ( sid >= MAX_VSID || !smmu->vsids[sid].valid )
>> +        {
>> +            arm_vsmmu_send_event(smmu, &ent);
>> +            return -EINVAL;
>> +        }
>> +
>> +        psid = smmu->vsids[sid].psid;
>> +        phys_smmu = smmu->vsids[sid].smmu;
>> +    }
>> +
>> +    /* vSID mapped to invalid physical SMMU */
>> +    if (!phys_smmu)
>> +    {
>> +        arm_vsmmu_send_event(smmu, &ent);
>> +        return -EINVAL;
>> +    }
>>
>>        ret = arm_vsmmu_find_ste(smmu, sid, ste);
>>        if ( ret )
>> @@ -565,7 +619,7 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu *smmu, uint64_t *cmdptr)
>>        else
>>            guest_cfg.config = ARM_SMMU_DOMAIN_S1;
>>
>> -    ret = hd->platform_ops->attach_guest_config(d, sid, &guest_cfg);
>> +    ret = hd->platform_ops->attach_guest_config(d, psid, &guest_cfg, phys_smmu);
>>        if ( ret )
>>            return ret;
>>
>> @@ -1164,6 +1218,9 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr,
>>        smmu->addr = addr;
>>        smmu->cmdq.ent_size = CMDQ_ENT_DWORDS * DWORDS_BYTES;
>>        smmu->evtq.ent_size = EVTQ_ENT_DWORDS * DWORDS_BYTES;
>> +    smmu->vsids = xzalloc_array(struct vsid_entry, MAX_VSID);
> 
> ^^^ is 65536 × 24 bytes = 1.5 MiB per vSMMU allocated contiguously even
> if, lets say, the domain has two devices?
> 
> And the hwdom allocates vsids[MAX_VSID] per pSMMU even though the hwdom
> never uses it (vIOMMU->pIOMMU identity mapped for HW domain) if I got
> the code right.
> 

That's correct. We can avoid allocating the vSID array for direct-mapped 
domains, since it is not used in that case.

For non-direct-mapped domains, we don't know in advance how many devices 
will be assigned to the domain. I'll replace the array with a linked 
list to avoid allocating unnecessary memory.

> 
>> +    if ( !smmu->vsids )
>> +        return -ENOMEM;
> 
> Leaks smmu when the vsids allocation fails.
> 
> and failure of vgic_reserve_virq() (non-visible in the context) leaks vsids.
> 

These are memory leaks. I'll update the error paths to free the 
allocated vSID and vSMMU structures.

>>
>>        spin_lock_init(&smmu->cmd_queue_lock);
>>        spin_lock_init(&smmu->evt_queue_lock);
>> @@ -1254,8 +1311,9 @@ static int vsmmuv3_relinquish_resources(struct domain *d)
>>        if ( list_head_is_null(&d->arch.viommu_list) )
>>            return 0;
>>
>> -    list_for_each_entry_safe(pos, temp, &d->arch.viommu_list, viommu_list )
>> +    list_for_each_entry_safe(pos, temp, &d->arch.viommu_list, viommu_list)
>>        {
>> +        xfree(pos->vsids);
>>            list_del(&pos->viommu_list);
>>            xfree(pos);
>>        }
>> @@ -1263,8 +1321,55 @@ static int vsmmuv3_relinquish_resources(struct domain *d)
>>        return 0;
>>    }
>>
>> +int vsmmuv3_allocate_vsid(struct domain *d, uint32_t id, uint32_t phandle,
>> +                          uint32_t *vsid)
>> +{
>> +    uint32_t i = 0;
>> +    struct virt_smmu *smmu;
>> +    struct host_iommu *host_iommu;
>> +    struct arm_smmu_device *phys_smmu = NULL;
>> +
>> +    if ( list_head_is_null(&d->arch.viommu_list) )
>> +        return -ENODEV;
>> +
>> +    smmu = list_first_entry(&d->arch.viommu_list, struct virt_smmu, viommu_list);
>> +
>> +    /*
>> +     * Find the physical SMMU corresponding to the device-tree phandle.
>> +     */
>> +    list_for_each_entry(host_iommu, &host_iommu_list, entry)
>> +    {
>> +        if ( host_iommu->dt_node->phandle == phandle )
>> +        {
>> +            phys_smmu = (struct arm_smmu_device *) host_iommu->iommu;
>> +            break;
>> +        }
>> +    }
>> +
>> +    if ( !phys_smmu )
>> +        return -ENODEV;
>> +
>> +    /* Get first free vSID index */
>> +    while ( i < MAX_VSID && smmu->vsids[i].valid )
>> +        i++;
>> +
>> +    /* Max number of vSIDs already allocated? */
>> +    if ( i == MAX_VSID )
>> +        return -ENOMEM;
>> +
>> +    /* Establish vSID->pSID mapping */
>> +    smmu->vsids[i].valid = true;
>> +    smmu->vsids[i].vsid = i;
>> +    smmu->vsids[i].psid = id;
>> +    smmu->vsids[i].smmu = phys_smmu;
>> +    *vsid = smmu->vsids[i].vsid;
>> +
>> +    return 0;
>> +}
>> +
>>    static const struct viommu_ops vsmmuv3_ops = {
>>        .domain_init = domain_vsmmuv3_init,
>> +    .allocate_vsid = vsmmuv3_allocate_vsid,
>>        .relinquish_resources = vsmmuv3_relinquish_resources,
>>    };
>>
>> diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
>> index 253f8bb6cb..c94ee4f08e 100644
>> --- a/xen/include/xen/iommu.h
>> +++ b/xen/include/xen/iommu.h
>> @@ -312,7 +312,10 @@ static inline int iommu_add_dt_pci_sideband_ids(struct pci_dev *pdev)
>>    #endif /* HAS_DEVICE_TREE_DISCOVERY */
>>
>>    struct page_info;
>> +#ifdef CONFIG_ARM
>>    struct iommu_guest_config;
>> +struct arm_smmu_device;
>> +#endif
>>
>>    /*
>>     * Any non-zero value returned from callbacks of this type will cause the
>> @@ -391,7 +394,8 @@ struct iommu_ops {
>>
>>    #ifdef CONFIG_ARM
>>        int (*attach_guest_config)(struct domain *d, uint32_t sid,
>> -                               const struct iommu_guest_config *cfg);
>> +                               const struct iommu_guest_config *cfg,
>> +                               const struct arm_smmu_device *smmu);
>>    #endif
>>    };
>>
> 

BR,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:02:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:02:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467574.1676666 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhNI-0004sy-Tv; Mon, 02 Nov 2026 02:02:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467574.1676666; Mon, 02 Nov 2026 02:02:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhNI-0004sr-PG; Mon, 02 Nov 2026 02:02:16 +0000
Received: by outflank-mailman (input) for mailman id 1467574;
 Mon, 02 Nov 2026 02:02:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhNH-0004r4-QT
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:02:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhNH-0094LF-7S
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:02:15 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7eef0-bab6-0a2a0a5309dd-0a2a4505ea3e-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:15 +0100
Received: from [52.101.84.139]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef26-4cb1-0a2a45050019-3465548b6a38-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:15 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:02:12 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:02:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=O0oyrPlFiCEdQ4sJpKyJuHMtJFCQ5ePaSCGKvJY5QeJz3ayQKNTz+dLbR5kGqmN9JQtCm2eoalHbPR5tdHSuBl7pmhCAA86FjNzmM3vvSumVTs03ENLr+9YPmqs25ofx0jbebMQGXX5+/kSJ6uFzRWSzTzk//gdHVa0SP7IcEC2U2oMGwPV1kU6rm4WcUQSCN6J2XOrXdr7QkQMNNByTccbnEkq2lNyoWrP4SCMKf1cuQWmgyOwGerHv6a40oe9Cbg87KtUlgvjlZTTZz7abh1nisW8fWXzf4lv2qVTmUqbeghR+9AjsquOoD4KEqluo6u7YQHDrnq33vny6ngVUUw==
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=D3Q8hsZwSvUNJdl/ZiVf2f/axqxLBBI355h9Ky3wrQ4=;
 b=F6hHNUOaT0svrg0AaauI6HmuO9qsCVa67dKZNiEqh2+X/hQfB0vtAJ9vj5ExYP8/Jlz4xpNOA8VldFsKaeCdPoZJ+XkCbhmrJGUv+LH5lQNhwXhYi4Zx2/2gcf0YAP9odjSd37krujv6yUwQ18bht1h6meNwxsfAgf4dgBwFOrvoFFIN6PdBDkob/8PrXe/hFxiEYF6v7WjxfGq7C1YIPGcYGs4f2dy4Cy4hsO0Cm3Q0/gsiuyTo8MSWztYdjvECkhjMAKmf8jafvfkbTIQlr0f/jeWapALoWnQ2m3tY7mXelJLE/TGC25NTgzjxwVDG72XcGYn13aNCiptHYLzsZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=D3Q8hsZwSvUNJdl/ZiVf2f/axqxLBBI355h9Ky3wrQ4=;
 b=u64ri3O6LMNwDqft4zW3MnQdjPDU6Lzhm9r+QskZa5J50de+b4K/a/YoPQ2m4zJqZdKthqttpNKReG8ILlGbv+KZPiGIp2EGfn9P2zDa7XbyYCQIz4331QHsy+D87dvZTeGYgENwUTn0GGLV3D2jiQvrjAKff27huJGU8rPHHBycmstx1K92jnYla66OzT2fhgXhzVwozn97GKIwgnr0u5YFQcD5n+ohaQWEu+9Qt92QC3kt0L3KrkQkLYuTVCAS4TdUYk8rfaS7Jt3brC/wxpcdWI7JSyfxF6h8LAFxIWqRL2FneCI7JoO08t5eaKtCzwV5PTYXCx1nHxHmpJ1pxw==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <a5301bb9-9b0b-44e7-a813-7101de1d8cc8@epam.com>
Date: Mon, 2 Nov 2026 03:02:11 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 19/22] xen/arm: vIOMMU: Modify the partial device tree
 for dom0less
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <9e31544f751d8a9708e1e6385da1b3ac6a438153.1791328190.git.milan_djokic@epam.com>
 <cbdea9d7-e410-4228-acfa-3600e02bb956@gmail.com>
Content-Language: en-US
In-Reply-To: <cbdea9d7-e410-4228-acfa-3600e02bb956@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AM8P190CA0014.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:219::19) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 85d243e7-21d6-4241-5c3e-08df38854f76
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022105027099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	aug4OuBV+v3NsDEwAMpY6Xp1+RYqFuu2i+7ytEoywtrqcObtjrw6cXfBxqNV3Vr+R3IFuq8EphIjhC5fhl5IXOjonqOhKnUTBPyAp+loU2D+Ea+YbExr292X+DMWgBk8MyIp0Qk/zAv7wutHgXMUMnGjYyEkiNrbCkHSetmoB+RDXR4RsRz9fK8Fz208uZlx99w5CH9+aMZXKj9iRsaaQwn8iU2rSPzwC3zP5c0SGuq+nNDxSdcFRXcGdvO+OVpCA++uXsxf3jSB5Qc1vJZuty6WNozE3JdbACdsyR6Ul9002IpnlCZLGbcRcKxu+pLpV1/QtvmRjssawQKvs7/fbvE0mQDlAPTImqbYCEZ+rCuPjx9yx1RWUa/qSrhuoPC7YzccJGEAaeSivlsDSBI6LqNowo1ernfnL4FJ8EbhMYR2pdV+QZd1cjdUrFLORSQ5lAPLomm6yeqP4+gEJofj1/ljUJwg3JZhMWLengUwBvgzAwsxt6WcpnDknjOTsfCq8H0H97/tjcgoKxvj7T1Jyp6jDvr8o2xXdgLTUmVX1ktxfSYyXcFkU1IlPiCPalfv21ixFlRkFGwh0ZSVSvWEs/g2dk9P8oH7MpUziQ6eSTozYgObI33lMH99NrGMWZCg6Qr5OjGFPoJuIDrbGoFNvaAhrGPY+5XxzGZSi2KzMYQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022105027099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YWp4b3pwVHVrdkUwQUgrbGpUQnhKdEhQa3QveEsyQUU3ZVFIQzI1bnZFcjJu?=
 =?utf-8?B?K2l3VnhvOHY5RHhocElueG9JclQzYjMzREpvU25tbWorbjRVbFVleEVvNkpU?=
 =?utf-8?B?N296aUxUdTVMYitWRUh2NE8xdUVqSGZFY3lxM1R1VGh3NEpxYmlrZ3JpbWFZ?=
 =?utf-8?B?R3B6VGhCTnRIRE1wMlEwSzNvZFBicWtzK01VTFY2Q09YNzVzczd4WGtrZ2ZV?=
 =?utf-8?B?cG56SlIyamVDNmtPVm15RVNJcy9NOW9LU3ZoaGRJWnBCMjZRUC82K1ZBbnVV?=
 =?utf-8?B?WGFhbUxNam14cGI4VitJMWh4UkFaV21xbDdBaVlzSEtVYjRlMTV5Z29JOUpl?=
 =?utf-8?B?ZEtTbUhOdTk3bGNMNDN5cnhlK1ZRYW5IYWtiZ2tzZTNnczNkOUF5V1FXQ2hl?=
 =?utf-8?B?c1duS3grLzl2THJ1USsxZDdzdGZQQVhsSjlubVd6c1VmRnNMNVd1czRodWNF?=
 =?utf-8?B?OHpmUytDL3FJZzZ3WGNuUnBMQjQvdktyb0FXR0hFRlZVWEgya2pqTDYzTEVV?=
 =?utf-8?B?SjREOWMvMyszcVQ3c2ZEd3Fia2dTVkVQazJCUU1OVGVKZUt1MFBKNTQ0Mk8w?=
 =?utf-8?B?Q1MxazFXSzZramhQMUppbWIwNFRGZjNOV3hGQUdQUGJFaDNTWEp6eUp6REJu?=
 =?utf-8?B?MndpcmNLZ2lZSVZpbXo2V1JWS212QjhoQU43TTIvVkMvV3NyUTYrQkVEbW9P?=
 =?utf-8?B?ZlU5eC9IYjBBUUNvZG1OZUJWdHBGN3BQdURTNytQOEJOczJsSnBDR0s4eWtQ?=
 =?utf-8?B?Umt5MFY3TGRtWG9GT1hlRWF2alA0RDFXYnFUNFdHOUx0RGkyODdtVm1XR1Nz?=
 =?utf-8?B?cDJqUU16Y2FnT21kOXNiYll5N2Urb1lsVEZ0RWFYRTNZZjNnZjVXKzQ0OEh4?=
 =?utf-8?B?UGdiMG9VQVpZdmN1cVRRdlo2Mm84NlVCRm9yeXhXQ2hqL1d6RjB6WVBTYWM1?=
 =?utf-8?B?dHd0MTFnQU82a01IellESjVCTzhJWk1DV0dGbnhydkpxZWF3bWVaUHlHR1lC?=
 =?utf-8?B?U2d5WVJYVTdhNTBRMEhZQm56ZVFyM1M5RzhTeWJibWdqT1RSMUdFd2Nkc29h?=
 =?utf-8?B?TzZHelhpYlJuenR3ajduWVA1ZEFTUWxpc0tOU09zNElObFBGbDhKdE84OXgr?=
 =?utf-8?B?NjU3V3VQVGpkZkNRYWdKUmxzY0RZUDJIZXZYOGZqWGNLQ3NlRmFXY3Y4VVRR?=
 =?utf-8?B?cFNIWTZOSnVrZEpBenJWZVowTmlPR0U0aTQ0YjVvc29KTGpGWUtkVUpteVBu?=
 =?utf-8?B?V0hHVHFVdGRFc2hmcURXRE9vUW96ZUpYNVA3L01EWGxveEoyYTlyV25pejhi?=
 =?utf-8?B?aVE4ZGdxUUJ3NDJwR29LeWNCd3k4cy9FOTM5VDVkdE1ONHRYbWw0cENpZnJI?=
 =?utf-8?B?NGg3ZHZPb1VuZ1hMUmY2TzFJTGRSd0dVcnpnUUNWeS9TK21PczV1Z1FrbEFK?=
 =?utf-8?B?QXV6VHBrWG5zUEY3aXEzQk85N1lCSE1MRlUwOGVWOXFtK0taNWhpZjQzenVG?=
 =?utf-8?B?aGgzMzJYNXFxU0Q5MS9pTmZVOFdaMFB1cm5aajRLUWk2WWRoR2V4YklUOEMv?=
 =?utf-8?B?NlpxcHByZENodzVQYVZsUVFiY0hVNFhXbDJNM2EzNDY3RGhOQmJieVJJY2JX?=
 =?utf-8?B?VlJhNFEvNExEZ0crcXM1dDhsM2x0czFVR1JEMWdOTFkvYlRPMnJXZTVpd2NS?=
 =?utf-8?B?TnluMEg4TWdrVFF0UWpIZFZPUFFYMnlxa0VDTE9nSVV0dXhUcW9rS29kQmQ3?=
 =?utf-8?B?cm9ESk5CT2I2V0ovU2pVbUkxSzV4anNVaXVLczd6QU1jN1loYXJuSWQ3QVRQ?=
 =?utf-8?B?UU5uU25odGZGemlGejZUU3dodVZmMkdRbWE4b0xCSDd5QWRJWm8yZ0VZMGlF?=
 =?utf-8?B?bStmZkhiK0dTbUg4STdiaTBCNWV5T011N1dTelVXNHdwTVlZb1hpeFhqY1lp?=
 =?utf-8?B?SmtwbkNmcTlBTXJKMnlIRCtCZitRdlNYLzI2elI2RW8reEVjVENtK2l1QnBE?=
 =?utf-8?B?MWNQenNTcmREdDJkb2tzeHFJZTd5NTEyNVZwOHFwM2Vld3dQU3hPVTRUMU5M?=
 =?utf-8?B?Yis0VFNVWTUrUExoR25JMVMreWQyTEc1cHIyTGtncFZLUy9tVTJFSG1SYmFo?=
 =?utf-8?B?YXJWYzJCbEJlRDFnK096OU9QMVlRL0wySFl6QmlEQmpHQzE2MFQ0ODA5UmIw?=
 =?utf-8?B?bVREU2pyVHlta0VYaWJBSlZTcDlrbUNVTm9LZWgwbmpickN0elFPL3VCZmNu?=
 =?utf-8?B?NGhRcTJBbm1GaUNET2FuSzVwaHZqTVVwVVdCbmx0QkRSSTJPMVYxRUIvbnh0?=
 =?utf-8?B?QnJ3d0I5cUdzVWpMeHhLSlYzQ0E3dytwd21HTWtvSk5tTTQxc3hHZz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 85d243e7-21d6-4241-5c3e-08df38854f76
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:02:12.5866
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: K3+OuJ/0aIvYahej+NkLCAeebEwrPKNPwNO5oO5HExFk3O44xgqAVi5m8K1Yf18C9oBUucrZTft87CjnE/9jkA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-c201ff/1793584935-247132A1-80F439C0/0/0
X-purgate-type: clean
X-purgate-size: 3685

Hi Oleksandr,

On 10/9/26 14:34, Oleksandr Tyshchenko wrote:
> [You don't often get email from olekstysh@gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
>> From: Rahul Singh <rahul.singh@arm.com>
>>
>> To configure IOMMU in guest for passthrough devices, user will need to
>> copy the unmodified "iommus" property from host device tree to partial
>> device tree. To enable the dom0 linux kernel to configure the IOMMU
>> correctly replace the phandle in partial device tree with virtual
>> IOMMU phandle when "iommus" property is set.
>>
>> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    xen/common/device-tree/dom0less-build.c | 40 ++++++++++++++++++++++++-
>>    1 file changed, 39 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c
>> index fcbeb8adbd..7280bcf72b 100644
>> --- a/xen/common/device-tree/dom0less-build.c
>> +++ b/xen/common/device-tree/dom0less-build.c
>> @@ -331,7 +331,44 @@ static int __init handle_prop_pfdt(struct kernel_info *kinfo,
>>        return ( propoff != -FDT_ERR_NOTFOUND ) ? propoff : 0;
>>    }
>>
>> -static int __init scan_pfdt_node(struct kernel_info *kinfo, const void *pfdt,
>> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
>> +static void __init modify_pfdt_node(void *pfdt, int nodeoff)
>> +{
>> +    int proplen, i, rc;
>> +    const fdt32_t *prop;
>> +    fdt32_t *prop_c;
>> +
>> +    prop = fdt_getprop(pfdt, nodeoff, "iommus", &proplen);
>> +    if ( !prop )
>> +        return;
>> +
>> +    prop_c = xzalloc_bytes(proplen);
>> +    if ( !prop_c )
>> +        return;
>> +
>> +    for ( i = 0; i < proplen / 8; ++i )
>> +    {
>> +        prop_c[i * 2] = cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
>> +        prop_c[i * 2 + 1] = prop[i * 2 + 1];
>> +    }
>> +
>> +    rc = fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
>> +    if ( rc )
>> +    {
>> +        dprintk(XENLOG_ERR, "Can't set the iommus property in partial FDT");
>> +        return;
>> +    }
>> +
>> +    return;
>> +}
>> +#else
>> +    static inline void __init modify_pfdt_node(void *pfdt, int nodeoff)
>> +    {
>> +        return;
>> +    }
>> +#endif
>> +
>> +static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
>>                                     int nodeoff,
>>                                     uint32_t address_cells, uint32_t size_cells,
>>                                     bool scan_passthrough_prop)
>> @@ -357,6 +394,7 @@ static int __init scan_pfdt_node(struct kernel_info *kinfo, const void *pfdt,
>>        node_next = fdt_first_subnode(pfdt, nodeoff);
>>        while ( node_next > 0 )
>>        {
>> +        modify_pfdt_node(pfdt, node_next);
> 
> I might miss something, but ^^^ returns void, so allocation or vSID
> assigment failures (viommu_allocate_vsid() is added by next commit
> #20/22) are ignored. So the guest might be created with the host phandle
> and SID in its device tree or with a half-updated device tree. The IOMMU
> may (will?) not work and nobody is told. Should not we return the error
> here?
> 
> Also looks like the each rewritten node also leaks prop_c.
> 

Yes, both remarks are valid. I'll update ``modify_pfdt_node``
to propagate error and free ``prop_c``.

> 
> 
>>            rc = scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size_cells,
>>                                scan_passthrough_prop);
>>            if ( rc )
> 

BR,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:02:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:02:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467585.1676673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhNm-0005ZX-4V; Mon, 02 Nov 2026 02:02:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467585.1676673; Mon, 02 Nov 2026 02:02:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhNm-0005ZM-1X; Mon, 02 Nov 2026 02:02:46 +0000
Received: by outflank-mailman (input) for mailman id 1467585;
 Mon, 02 Nov 2026 02:02:45 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhNk-0005Yw-Pw
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:02:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhNk-005zkv-6g
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:02:44 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef11-8faa-0a2a0a5109dd-0a2a450488c0-40
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:44 +0100
Received: from [40.107.130.102]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef43-b57f-0a2a45040019-286b8266eb26-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:02:44 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:02:41 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:02:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=NjsJQP6GAQInaGyEZ6QATrWfOoWCACBSnd33XMqX0TZIo0AAqXLU38ID74MaLKM+6u8/IeN9lUAITft4Db0xaJLRTVRG5lPX5RQNplv0skWBKps9qPQ8ruL7iq4U1u7bYM+AQv3Ph87gcW0u2nmPRVXLcRU14tBO8yGK9eIh2mKOG+b/dug4Y7e6byO2dq4Fp8G6wI7a4vfw1IW27j062kpsQxLz98e6N0DU4Mq0eDIuU84IlHW/tltuX1Dd3ode2FIyFQARR4SyG6hGnWHUbemnoT6WSEjI8AiqlI9siWLnDUWMO7roScyY290fpEY3ageLQCqxmv83Q1V2ep/O0w==
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=vW2T2i9DI7IifQb7KRtDESGtNI+0IKDgqu0UG5a0KzU=;
 b=UnBxukIjaaRgbEMb1sMiTCeLFJcerdr/X4O0Dfprc6xA+HfqNWhLqjJkJWYO8Wp7KN6TQkeL4WtjvqXIrxpWD61BeP7bixc//5ipsztyKgLdRuWrYnOQaCZNz1tISYo8Kz2KHoAYSRQYGVhmlk1okBO6LUIpmyS6dJo9cwdTlRnISrq1Wam2Nam8L8lgFP1Qs6ZR1QzaiW7CnjLWMyap9WrvquXylg1m6E4JHK0ZrirAxu+10ZiD9M50Swks56/wTQjFUAOPJ8rIRwZhVql103li4KhREhH2spqn5Z5SbVynGx2EHJ88DNbU/K3QadkC1YxTBvA0QeVhi6A8Ne0GJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vW2T2i9DI7IifQb7KRtDESGtNI+0IKDgqu0UG5a0KzU=;
 b=NQLJt7jaVk4roytp8awsiDA6lW531Xoh/8t2PGnY2319rs+wjC9+TXCthd8ltbjkWjPDwy1YeS77lded2R5JTh0vYeORdDYjieTpECNUQd0grIXm2jjLET/Z/ZDMTBP7nfJByeztEw3ADx/A6dGCsi1OcfMt6XsThYWnjYG/1YW2hEpR28bmhy28sg40SBPqgNJqLSZxfwhb+v71veG4+5z/JzdZpK/RE2s0xfiFm6YzUaMMw+Sj1WFLzh+xXEcuwd4wr9uJSzLXIxUUBwblSICin8A83kJ/C8KbojWykWVbWtBn6PH7RMB6olMh4PwqhPB6jc8iHHrjOkIl4RiomA==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <08c8c0ae-96e7-477b-b491-c2c138f96d7b@epam.com>
Date: Mon, 2 Nov 2026 03:02:40 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 17/22] xen/arm: vsmmuv3: Add support to send stage-1
 event to guest
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <94ab2741c9c61f2b66d9c5a207f913f4241c42a4.1791328190.git.milan_djokic@epam.com>
 <7b1f3938-2d07-4884-a377-ce7d9b66fdb9@gmail.com>
Content-Language: en-US
In-Reply-To: <7b1f3938-2d07-4884-a377-ce7d9b66fdb9@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM8P190CA0009.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:219::14) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 1060e135-e7e8-42f0-169d-08df388560dd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	8xJgo73VMgA896lpZuUyDveYgnKmnA+kpvSoHc4y2LpuG9OeNOXwnilYISxSoH5iMTB5PBGkga5cYe+g9ZoOfcEI/38OZeIsZa/WGy0zGkKJ387e4C6dPKCheYIdNNx/zFm39ISSJEv+N/vIcWPQtpSRsBoDRfMlXY7h/SzlK7Ww/odTs2MyAfq52jh0PD0rwJOBvfonlRre0UyRK7FtJcgMZhAxnbgXceXF6viEII2SnvKPo9L+F5dOCXt/vFdnwHm51hVMGe2w4QLonqVlgn/oefQMPIm1so02zX1PlPaFy+srz/Hw7v0amgA9Ec85VXiSorV9ccm46FpcF2DTcUxcSmmCsijuhlooX4RSWzy0oPiUwGmjnt9OKhGX4djx223zsi+h0wNA3kcHqAuSAXDmvCZPfErFa/MN/BjM3DGdMQ04uq9QPWRadjYs+MAQIp+neU2+92e0sS69bKd80vB9DxHaj7AzfOf+w5mBjCn8XajwUvN4y440zwuJeP2uivuV7xYSSkClu+Pg2p/j4+LFJTF/M0aqAvdpvJS/a+YYsJ4DTLcG7VQN4GPMf5b7h9GwcK+cB632aUVlxivBvGFy9EM/V2ZnI794ONVpPwFam2VsUdBxm5WDmhPGLggQXAA85R3ski+bPV8jpT4wDJTDQpTZ30lchpNTY/MlQq4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cUhsWjRBSVlBbmRRbW5DeVR0SlVjQlQxNkhpZzlwa3Vya0hkQkZJZ2NKSytC?=
 =?utf-8?B?SVJ5MXpKRkRzOUlmaHphVU8vNkRCMkJicHNscHVkeEVReVRKcDlOSzFkRXBq?=
 =?utf-8?B?bUM4eVJ4QzdyWXlPcEhXQ2w3bm5RM2tRREJCWnNzMVpZRzVXTTdGM2sxakp3?=
 =?utf-8?B?T2lDMXpFeUFnS2YzUDBJQS9icjFZRDRsRlVjSnlDQ2QranlKeVl2a1daa1dv?=
 =?utf-8?B?blE1MVd4NDZLSzd1OFJnVGtiOGxwbmszMUUrM0ZHNXlhWmk1NnZyWWNNeCt6?=
 =?utf-8?B?SmxKRW5KdFBXdWd3WURWamc2QVJZR05qcFExdVVaS0dGK1V2V21ETVlVWmc2?=
 =?utf-8?B?ankxMFNDc0g3dklhTGhFYXRvbWUzVUZEbTlCTjh2V0JSSkxOQ2YzaHl5TDVt?=
 =?utf-8?B?REtIK2JqVjV6Q1VKb25oeWdkRStnTmNJYVVGS1g0OHNVVGJPaW03TXRqOEZV?=
 =?utf-8?B?S0JtRkpwSGFHeC91L0JkRGVCbXc4Y0w5WkJEMlZHTHljckZGT002NnQ0ZEJU?=
 =?utf-8?B?cURQS3R4VS91OUx2T21vTk1yZERBRnhTSHZnbHF5U3hmdFZEQ21BVW1tVUZj?=
 =?utf-8?B?YUpjMlp1cFJZUWpNYk1ncnZuZ2JhYkRFdVI1QzcydS9zTW1udTlQOGhUQmNt?=
 =?utf-8?B?YllOeEpQb0tNVkxPc0h4cTR1MENhT3lscXMvV2V1WXpzay9hOU43aVl1OXY2?=
 =?utf-8?B?NGZ4Qzg1V25OOFJITUgxcSthWi81RVRnVUZlclVuSlEyaEtTN3VPTmEwS2NS?=
 =?utf-8?B?RjlTUko1UG54M2RXZTJNcGhiRlJQTk9sM1EzRXo4d09jN0lrZVpJTUJKSHdk?=
 =?utf-8?B?aWpWbjI0b1Z2NXZKTFFibFJVWDdOY2hhaFBTYnZQbXNDd1I0NW5vU2xMUzRL?=
 =?utf-8?B?WGttTkZBUHREMDVVREw5N3puL0dwK2xhZytXdkNqNVRzYjlFMTMyOEtNYmlV?=
 =?utf-8?B?dFZoQWpnWXc0akxVRFEvRGI1clY3Z21RMm1yYlhTVGRqcElEOHJ3eDR5ZmZO?=
 =?utf-8?B?Y2pOWlJFQVdFczRoV3NBdnFCTkZXRXgzUXU1TjlpWUhDeDRPWE9mVDVaS1lL?=
 =?utf-8?B?N0FVNS9aU1JQSzR6dkVJTmVxY3I2cUhLLzNNUmMyR0ovRXVUYVNtNnNPa2Zm?=
 =?utf-8?B?dVNMZ0pTbjVSWE5TdlpaOG45QjJTc2RZcnNxcmxnOW91QnpDQTFRWVQvNkw2?=
 =?utf-8?B?MGtyN0s5RG1CcGJiTHYyZ3J0N2x3N1NxU1B4Ny8xMndQSGNFUnRiTVErUUll?=
 =?utf-8?B?S0FlQXNGTTJpcWxuVVUwRzJjZUNNRVZyQTFyNzh3TTIyd0VaL08xVU5SaVJ1?=
 =?utf-8?B?TjdqUDJYekxtajVhWks0ZFZ3SHQ0WFM3ZEFrUWR3WmNKbEdvczRVVm5vZkxL?=
 =?utf-8?B?ZU40N0hOb1NYd05zWkVkVFcwM0MyZDF1dW4zdkhSZGVFM0RDZHUwbUJvSjVh?=
 =?utf-8?B?b3ZkWGlwczhDM2tFcDZweG1BQTdNQVNNNkl3MU94aEk2azUyY2FXUXh2YWhH?=
 =?utf-8?B?TnpkMEZveWdiQ3N0NkFTQlQvNWUrSlYrYlZBVUY4bW9vbmZ5S2pPWWptWU9v?=
 =?utf-8?B?UlU1SElWRlFmSG14bFpzQ0VtNWNCdVFaaE5nWjlpYm1oR2NrTWJ0MFhudlND?=
 =?utf-8?B?L1FFZGorUkhiNGd2SUl0MXJFQ29XdWtyWTR3eDJYbWR5ejdGcXdoY2dsRDNr?=
 =?utf-8?B?VzZWN3lrUXlnRzhFVlBrdGFPQXNHd0QrN1JMSU4vWGdIdllXdlBBbkg4SEJw?=
 =?utf-8?B?N0s1RmZhWUxRWEJ3bHRYelNjYjBESmxZRFhUcDhBOVhPQ29waUNHSTNGNmp2?=
 =?utf-8?B?SkNBRWpkYjY4WjhZL3ZjT1NpbVU5eUR4WTdTQ0tJNzFYV0RhN3ovTUN6RHdZ?=
 =?utf-8?B?TDhzWDA0UlpxYzZjVll4OWRsVERPRkNXMkRFa1FTekVVcHBIb2tsYTU5Y3lP?=
 =?utf-8?B?eVdOZFNoNnR0R210bWFOT0xEeldDOGtoMVpFOHYvYUJQNHkzb2pBVHB4V1JX?=
 =?utf-8?B?MHVKSXRiSmREb21qR3hiTGRPNU5kamRSNWZmQUZPVmpJS08zdnBIbmtrUFVB?=
 =?utf-8?B?eHhONGxMNVV5NkRVc2poNEVDYy9RaW0yUi9NNDVUdmwxdzFsT054TXg0dkox?=
 =?utf-8?B?aXdhSmZBSlRueVViK2Z2T2UwNUFRanVvWGh1VUhqMS9EVTFZRWhMd1MvU0Ry?=
 =?utf-8?B?bHRNMEVhcDFtbHZ3dzZkc21HcWZuZzVrZExqOFVsQjAzb0Fzc29BelY0NHpX?=
 =?utf-8?B?a0xCT1JWZzhzQjhuNUl4Umh1K1V4MVc1NGVwN0ZFamtEWVlmbDJiVENpd0xj?=
 =?utf-8?B?SlE0aEgyektqalYvVllTM1pPbTdiZ2lLM3crRStsdTZQcDVYN05oQT09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1060e135-e7e8-42f0-169d-08df388560dd
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:02:41.7698
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: dyOXIm84fapT7tDu9gY/pztFd1fYZbDWlhbXAbAZldSU1dIbzl+YzCEOvTHhFEf6t1WSJ0VLiJt07QOGqk708Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-ebf023/1793584964-538C1B50-7264CAE1/0/0
X-purgate-type: clean
X-purgate-size: 7231

Hi Oleksandr,

On 10/9/26 17:12, Oleksandr Tyshchenko wrote:
> [You don't often get email from olekstysh@gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
>> From: Rahul Singh <rahul.singh@arm.com>
>>
>> Stage-1 translation is handled by guest, therefore stage-1 fault has to
>> be forwarded to guest.
>>
>> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    xen/drivers/passthrough/arm/smmu-v3.c  | 48 ++++++++++++++++++++++++--
>>    xen/drivers/passthrough/arm/vsmmu-v3.c | 44 +++++++++++++++++++++++
>>    xen/drivers/passthrough/arm/vsmmu-v3.h |  8 +++++
>>    3 files changed, 98 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
>> index 196ac660ef..e44f872d2d 100644
>> --- a/xen/drivers/passthrough/arm/smmu-v3.c
>> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
>> @@ -871,7 +871,6 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_device *smmu, u32 sid)
>>        return 0;
>>    }
>>
>> -__maybe_unused
>>    static struct arm_smmu_master *
>>    arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid)
>>    {
>> @@ -892,10 +891,51 @@ arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid)
>>        return NULL;
>>    }
>>
>> +static int arm_smmu_handle_evt(struct arm_smmu_device *smmu, u64 *evt)
>> +{
>> +     int ret;
>> +     struct arm_smmu_master *master;
>> +     u32 sid = FIELD_GET(EVTQ_0_SID, evt[0]);
> 
> Maybe my comment should better be suited for commit #20/22 (where the
> vSID->pSID mapping is introduced)...
> 
> Look like the event is copied to the guest unchanged (with patch 20
> applied). It carries the pSID instead of the vSID, even though patch
> 20’s table could translate it. So the domain might not find the device,
> or might blame a different one whose vSID matches that number. Or I
> missed something?
> 

You're right. The SID in the event should be translated from pSID to 
vSID before forwarding it to the guest. I'll fix this.

> 
>> +
>> +     switch (FIELD_GET(EVTQ_0_ID, evt[0])) {
>> +     case EVT_ID_TRANSLATION_FAULT:
>> +             break;
>> +     case EVT_ID_ADDR_SIZE_FAULT:
>> +             break;
>> +     case EVT_ID_ACCESS_FAULT:
>> +             break;
>> +     case EVT_ID_PERMISSION_FAULT:
>> +             break;
>> +     default:
>> +             return -EOPNOTSUPP;
>> +     }
>> +
>> +     /* Stage-2 event */
>> +     if (evt[1] & EVTQ_1_S2)
>> +             return -EFAULT;
>> +
>> +     mutex_lock(&smmu->streams_mutex);
>> +     master = arm_smmu_find_master(smmu, sid);
>> +     if (!master) {
>> +             ret = -EINVAL;
>> +             goto out_unlock;
>> +     }
>> +
>> +     ret = arm_vsmmu_handle_evt(master->domain->d, smmu->dev, evt);
> 
> ^^^ dereferences master->domain->d with no NULL check. Would it be
> possible that a fault event queued earlier can still arrive after the
> device is detached (on domain destruction), so master->domain is NULL?
> 

That is possible. The domain pointer should be validated before 
dereferencing it. I'll update this.

>> +     if (ret) {
>> +             ret = -EINVAL;
>> +             goto out_unlock;
>> +     }
>> +
>> +out_unlock:
>> +     mutex_unlock(&smmu->streams_mutex);
>> +     return ret;
>> +}
>> +
>>    /* IRQ and event handlers */
>>    static void arm_smmu_evtq_tasklet(void *dev)
>>    {
>> -     int i;
>> +     int i, ret;
>>        struct arm_smmu_device *smmu = dev;
>>        struct arm_smmu_queue *q = &smmu->evtq.q;
>>        struct arm_smmu_ll_queue *llq = &q->llq;
>> @@ -905,6 +945,10 @@ static void arm_smmu_evtq_tasklet(void *dev)
>>                while (!queue_remove_raw(q, evt)) {
>>                        u8 id = FIELD_GET(EVTQ_0_ID, evt[0]);
>>
>> +                     ret = arm_smmu_handle_evt(smmu, evt);
>> +                     if (!ret)
>> +                             continue;
>> +
>>                        dev_info(smmu->dev, "event 0x%02x received:\n", id);
>>                        for (i = 0; i < ARRAY_SIZE(evt); ++i)
>>                                dev_info(smmu->dev, "\t0x%016llx\n",
>> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> index 87342fdf69..b71511c2eb 100644
>> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
>> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> @@ -338,6 +338,49 @@ static void arm_vsmmu_send_event(struct virt_smmu *smmu,
>>        return;
>>    }
>>
>> +static struct virt_smmu *vsmmuv3_find_by_addr(struct domain *d, paddr_t paddr)
>> +{
>> +    struct virt_smmu *smmu;
>> +
>> +    list_for_each_entry( smmu, &d->arch.viommu_list, viommu_list )
>> +    {
>> +        if ( smmu->addr == paddr )
>> +            return smmu;
>> +    }
>> +
>> +    return NULL;
>> +}
>> +
>> +int arm_vsmmu_handle_evt(struct domain *d, struct device *dev, uint64_t *evt)
>> +{
>> +    int ret;
>> +    struct virt_smmu *smmu;
>> +
>> +    if ( is_hardware_domain(d) )
>> +    {
>> +        paddr_t paddr;
>> +        /* Base address */
>> +        ret = dt_device_get_address(dev_to_dt(dev), 0, &paddr, NULL);
>> +        if ( ret )
>> +            return -EINVAL;
>> +
>> +        smmu = vsmmuv3_find_by_addr(d, paddr);
>> +        if ( !smmu )
>> +            return -ENODEV;
>> +    }
>> +    else
>> +    {
>> +        smmu = list_entry(d->arch.viommu_list.next,
>> +                          struct virt_smmu, viommu_list);
>> +    }
>> +
>> +    ret = arm_vsmmu_write_evtq(smmu, evt);
>> +    if ( ret )
>> +        arm_vsmmu_set_gerror(smmu, GERROR_EVTQ_ABT_ERR);
>> +
>> +    return 0;
>> +}
>> +
>>    static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
>>                                  uint64_t *ste)
>>    {
>> @@ -1118,6 +1161,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr,
>>        smmu->d = d;
>>        smmu->features = features;
>>        smmu->virq = virq;
>> +    smmu->addr = addr;
>>        smmu->cmdq.ent_size = CMDQ_ENT_DWORDS * DWORDS_BYTES;
>>        smmu->evtq.ent_size = EVTQ_ENT_DWORDS * DWORDS_BYTES;
>>
>> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.h b/xen/drivers/passthrough/arm/vsmmu-v3.h
>> index 9f4c86abd5..d4b7cf805f 100644
>> --- a/xen/drivers/passthrough/arm/vsmmu-v3.h
>> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.h
>> @@ -8,6 +8,8 @@
>>
>>    void vsmmuv3_set_type(void);
>>
>> +int arm_vsmmu_handle_evt(struct domain *d, struct device *dev, uint64_t *evt);
>> +
>>    #else
>>
>>    static inline void __init vsmmuv3_set_type(void)
>> @@ -15,6 +17,12 @@ static inline void __init vsmmuv3_set_type(void)
>>        return;
>>    }
>>
>> +static inline int arm_vsmmu_handle_evt(struct domain *d,
>> +                                       struct device *dev, uint64_t *evt)
>> +{
>> +    return -EINVAL;
>> +}
>> +
>>    #endif /* CONFIG_VIRTUAL_ARM_SMMU_V3 */
>>
>>    #endif /* __ARCH_ARM_VSMMU_V3_H__ */
> 

BR,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:03:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:03:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467590.1676683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhOB-00061d-HM; Mon, 02 Nov 2026 02:03:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467590.1676683; Mon, 02 Nov 2026 02:03:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhOB-00061T-EQ; Mon, 02 Nov 2026 02:03:11 +0000
Received: by outflank-mailman (input) for mailman id 1467590;
 Mon, 02 Nov 2026 02:03:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhO9-00060u-UA
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:03:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhO9-001ZAQ-Aw
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:03:09 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef52-bab6-0a2a0a5309dd-0a2a450cb3ba-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:03:09 +0100
Received: from [52.101.84.120]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef5c-f479-0a2a450c0019-34655478c6bd-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:03:09 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:03:06 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:03:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=fm1jjxNXUdGMafCKuqaZ+ngWj74zvfI0fozIwxpU+RRuHYoQB3nhrEj06g8DfXhYRBiGeiaDGQwipdyrLxoXkbsFKE9afcSkTl+L6gvu3hCbvyMaN2Rq92S1dyD6CD9GetwQaascx7IlnPz6Yj6fTCm1eXVurp62FM6bDPYdrIllX6Zwe8Yf2g+zpV1ZbqLv7Fv0T318+3sRIcN0ZkdN1G/MoOOSG5s1crp3y0m8umXri1m9oaPpfFJlMY/ppGJWh5bHMr9MOzWl0QueqJKnwkuO17K+BHqOwnr2mc40mMNN1TZyBBuwR+UAkewq8kI2W3xzckR6V+2G8EoNmHE6PA==
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=c4D0qdgOmXU166wJ9d4zkpWSWIfuPJ3WK0j5lxAWrNA=;
 b=lt3reE86zi3koJIzX8fnVzj/u3WouehNxJ5xqHsP3/8Z2EriWauZtv2knx98oI3UwIgHxuqPvuXBRCotYDQFnvvrmQQwPkrTuVMzdBHBNnnZpD6Ny4q2JSFXFwIt5nx/UpyFXdjQEH28a1NoQdwr4nQEO2x9IBf0K5UzoskgMafNippkkz+VM5ZchpiwsQ0N+6J+7ExelpbpQS6GGu5WAfgMybwqBMRoG3SfMhHM7jAo7v4AjnmRzw7ZeO3xQ8MouPrWVgdsvlEEVyX7p1AH+y7+e/ur+YC4Smw8eqmQdvCSJv9DlVBBiuGq1UFUT+3cL2pYLJJ9WjKBbzLve+mBiA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=c4D0qdgOmXU166wJ9d4zkpWSWIfuPJ3WK0j5lxAWrNA=;
 b=hLRfr3KspZQRDPUoSCguxBOgpYGUDPeBIUulTADV+QgS6Fu2MivT9JhLHEoEG6ElruUlaR/+tbJ8OBq11shp2VqO6yeKvKCW6mL87kB557/UPBk5PKEX58AXm/iTad3kQcIkv4X+G+kVno3b5fPxv0BKfA74zECJ7X+qWNbu0RZ5lygqtLCDaz93cXpfHpOMDi7u1WwvfMu0FXRtVYBPyIv/j/sam9RC9uwKBkTAA862ebWj851BvNqGChR9YP6sQ7HA/lPcz0VbmPqeVj4uIhug/nTvTyu+jrgS/yT2jLMlW5TJ53Ne8b1SMbgyiwl2n8KXy6qh2eoI+8PWr54Z8A==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <d19d743c-d85a-49cf-b8a5-1f2829d2c13c@epam.com>
Date: Mon, 2 Nov 2026 03:03:05 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 12/22] xen/arm: vsmmuv3: Add support for event queue
 and global error
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <1bf1f69e50fa7f6f90bfa6b2c7434c1ba3f65bbf.1791328190.git.milan_djokic@epam.com>
 <ce585f3f-e2f3-46ec-ad5e-50e1f29523ba@gmail.com>
Content-Language: en-US
In-Reply-To: <ce585f3f-e2f3-46ec-ad5e-50e1f29523ba@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AM8P191CA0012.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:20b:21a::17) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: 64a82144-a482-47ee-2b1a-08df38856fc1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|4143699003|11063799006|5023799004|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	bL5nUGLtA65a8h4iFT9HtcpYcs7xaP6veIwjFkQKOg2OBFpIMFyLrpSlUawDGVLqiIZuTVobap+p/9HQKOJ6p7gmII0FxxoiJ/xtLpbPUoBjRswnrtJJu13y1WKmVFv9DhaDl4Ovem6oJsDfZ3w8qMD4D71NBFKFgt5UWDcZjIKJSBqKkyRzkkRoEyljE/hATj5qmIdnVq434SGB9bFgHf+ODul/pqsH7Uugbh5hOwjUodDNhHDDa/IOyaBz/UoPOmFfSvcr9vwUOn2M4y3G6/VHmIWmcnobjjweeGEUyLh5tRAkaTNwmKWjyBlXDn0zgiF0FaIf6N7tVo2VM84MKaHQW2wbqH5r67F5mEjy/wzWOoT1qUQI9P9QUAKhqzEvn3veYfAan2z/x5DARhDXisngNrMAkDig096rnH1f4SR3We8EvXp9YxeVrloRm9xr3xLfUcHYbiTE6MskLRSH2smrqymQJA+jgZyk0eRvUu8YXyithTEIBNezZ6R4nwioRMucCd4DwZhLQgYMOJ7oQnihnOXDIphf4f1pd138QG+m/8kZbDPb6Uz0UuqeBWeJQuJ7Ve22hnzlKQp6Lv+hxmzhNY3kkS05uWY7oGMYvjmst+7Wji43ZhXOjeY6Zt7RYxeq3mXtZorJwH1N3sw6m6HpfKaN/rWU0zBFFihIc7Y=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(4143699003)(11063799006)(5023799004)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cjhkU1VUZHppeUs0c1pubklUUmoxZHZPbEZzYmltcXNFWHNvTWdqVHNrMVZD?=
 =?utf-8?B?cForSk1sZmxUaS9TaFFUNUtheTVyRkpVcXd2MzV0d0FZbHBRMWFkSERma3NL?=
 =?utf-8?B?TXUxUEZXbS91YWY0amxScHZNV3NvSFJ2ZHlXSmdwQjZlYWEweXJmbERzVGlx?=
 =?utf-8?B?aDdFcE1mSHdyREFyUWM3L0kzZ1gxSWxTU01LQzByYzdlQWMyTW5wUTNJZkFM?=
 =?utf-8?B?ZnpRMXNwMG9EZk9za0kvYU9kVnkxV1ZrODBWeGpzQXJpUndnZTJnd09CUlVi?=
 =?utf-8?B?VDBFTUJhVDhMSDBBRDJGSzVJVGZaVUJRZkgzRCt6ZzBheHFNek5ybFg0dmpB?=
 =?utf-8?B?cG0vNnFsQmVRQ3gyTFNEUldCbTRDRGtkTWVaTXhIYWlIWnhySk9KUFN1d2l4?=
 =?utf-8?B?UlZRQmJSLzk2aW5XN0E0OWdVdEJyMUpUb0F4cksyS0UycnJNRWdienhHNEs5?=
 =?utf-8?B?TTdVTXlZMU9xeGcrejZzMFIyY3B3bS83Z2lXdnQ3T1lMTVo4WklDK1luMWFx?=
 =?utf-8?B?cFNqRnlET0Evd2hVeDc2WXFnUHFpNzZPMWpMRWR3ZzR2QnIzV0VaTzY0OVND?=
 =?utf-8?B?WnUrRHJMNUNTUktnUUhQeTdPcWdYb1JZc2hhOEVTQVp0ajFCNnBPNE5POVhi?=
 =?utf-8?B?Y3VtSE1oUDFkbmRlRlc2LzNpb1NkQ0lhVVpBd1I5VjZJQ2dWb01MNG9FYzVk?=
 =?utf-8?B?SVIyQUdXOFJ2L2VHeHZVdGdCY1BCS21US3J2MjhNK0dqclNxcUovQlZHMk84?=
 =?utf-8?B?N25YRktDREFEZ0UvcGloRTZyU2cvWjFxOVVMaWxaSXNHNjR4MUFBVTl4VmZ5?=
 =?utf-8?B?RGtycHVLZnpOeTIwTW9YK094bjNpdG5tbW0yb2phdkQ3MGkvUi9FQVFVZTFX?=
 =?utf-8?B?dWNvQjExdWdIdlRja1ZlNmZycXZDaDd2VzRCTU1ickxldi9yc2FKM0Vab1Vs?=
 =?utf-8?B?d3ZnSU1TUWtWTzN5NkFxbk5wL0xsNzNDcUpNeGtYOGFFRmlEeHc1My85U29N?=
 =?utf-8?B?UFhiQkljdDVSdnFvVFg0VEF2Z1I0YnFHZ2d5eWdhVGZ4UVBhM05KNFk4WCtx?=
 =?utf-8?B?Nmljd2FqTHBvZ2lEb2Qxa2JVakVMaUhDSnIySVNack9SNkpZU3pFL09CcEhT?=
 =?utf-8?B?dDFXOXZ2L1pWbVpraVk4alg1MGNOVEY5SWMyM2tQSGlrNFJ4V1F1eXc5Zlk3?=
 =?utf-8?B?M3dzZDI4SUk0ZllNT2k5NE9yM2MzbVNIZWtSTUc2Yzl1OEwzaERQMHVReEVN?=
 =?utf-8?B?QXFISklMMU94RFBiREFaaWNlOC9OUnp6VXVkeVZIM3c2a2laRkxwRmkwRURN?=
 =?utf-8?B?bFAzUis0OWw5ekRhMHV5WEttVEVGQ1NxSHJSYWhEQzZNMkZ3RlhSakxtR3J1?=
 =?utf-8?B?S09HZ1I5Z25DeGw1TUJ6a0FZT0JwZGNZVFBCbzQwYUZBTVA4eXZITFMxZmpY?=
 =?utf-8?B?M0NON05nR0ROZUp5c2VLbFJGNDk5aGIzUWJMTW8zbys4RGF3TkR1NHpoQTQ5?=
 =?utf-8?B?YVlmbCtKcFVXUGYzbFlia0pod3JiTkU4YUZSVHVZM241eW9oR1YzRU8zY0tO?=
 =?utf-8?B?aTlycVJqT2VJUGN2ejRuV2twamFjRnJNRDRtQ1IwRnR4cnFqbTZza0JVc2N6?=
 =?utf-8?B?NEJoSDltV1RKRXVWelVwUEVMbCtTWEl3NnRPeDk2ZnpYSWhnenhIMUNIdW0w?=
 =?utf-8?B?TUhYSzY2cGIxdEFhNWM1YkNkK3JxSWIrMTk3bTk5L24vQThpNjFBOStoOTN4?=
 =?utf-8?B?aXk3STNwaGdlOHVhVjVrNmE2OWhWMG8rYzduQVhZVVlhNHdXUXFSYkV4eFRY?=
 =?utf-8?B?TEFBdEtsUk9WOVc5bWZzeW5HclcycW4yQlE2RW9Haml1OUFMMkpLZXhEMXcx?=
 =?utf-8?B?OTZpMmhtQmRwb0FacmI2dENTcHZLelN0LytKWkZ5V2ZBUVRtLzRTODhHSmEr?=
 =?utf-8?B?dHJCeWI2bWZlWEtsTFBwaTYwTExpaDllWktuOWdpQXZZeWJBT3dZbnExOEtq?=
 =?utf-8?B?SUhRNEwzdlF5MzZDejZ1NlhTMEpJZ1RzTzF5RjJNbTJ6R3RRdWNxUUVwQUVz?=
 =?utf-8?B?dFdFVWJ2eTZGRFhORjlJQkF4elZSR2VBWkg2cmRwcmdhNjRHb21aSG45SER5?=
 =?utf-8?B?NExaN2tEcTd4WmszSlp0S21zRFVhVFNTTzFwWU9LdHQyZzU5c2o0S0hhR3RL?=
 =?utf-8?B?QVlrN3dtTVhDUVhPL3ptcndrTXVQYzZYTVlEZEF2Uk05YU44eTBkYlhRWnIr?=
 =?utf-8?B?NEVOU2l5RURhUHY2enZ6eWxWSUwzNU1yeUpkQnlqaWh0MU12NWJZOTVzTFVF?=
 =?utf-8?B?RFp6VSs2U3BBYTYyUkgzSVYrV1dhSXo4YWlmZTR3YU96Zm9pZHovdz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 64a82144-a482-47ee-2b1a-08df38856fc1
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:03:06.7790
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: mfXiSham7bgBslSXYPGHIoIGRWYRUVnWYNyNIAER0cMNO7fIyiHpDmwrllAEtnFW0lUTGhaUpWitRg9OH71sVw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-d25034/1793584989-52132A5B-43ECDEEB/0/0
X-purgate-type: clean
X-purgate-size: 18383

Hi Oleksandr,

On 10/11/26 15:27, Oleksandr Tyshchenko wrote:
> 
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
> 
>> From: Rahul Singh <rahul.singh@arm.com>
>>
>> Event queue is used to send the events to guest when there is an events/
>> faults. Add support for event queue to send events to guest.
>>
>> Global error in SMMUv3 hw will be updated in smmu_gerror and
>> smmu_gerrorn register. Add support for global error registers to send
>> global error to guest.
>>
>> Add architectural error handling to the emulated command queue,
>> updating the global error register and stopping command consumption
>> on error.
>>
>> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    xen/drivers/passthrough/arm/smmu-v3.h  |  20 +++
>>    xen/drivers/passthrough/arm/vsmmu-v3.c | 233 +++++++++++++++++++++++--
>>    xen/include/public/arch-arm.h          |   2 +
>>    3 files changed, 244 insertions(+), 11 deletions(-)
>>
>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
>> index 4a912be740..44ecb5d89c 100644
>> --- a/xen/drivers/passthrough/arm/smmu-v3.h
>> +++ b/xen/drivers/passthrough/arm/smmu-v3.h
>> @@ -358,6 +358,26 @@
>>    
>>    #define EVTQ_0_ID			GENMASK_ULL(7, 0)
>>    
>> +#define EVT_ID_BAD_STREAMID		0x02
>> +#define EVT_ID_BAD_STE		    	0x04
>> +#define EVT_ID_TRANSLATION_FAULT	0x10
>> +#define EVT_ID_ADDR_SIZE_FAULT		0x11
>> +#define EVT_ID_ACCESS_FAULT		0x12
>> +#define EVT_ID_PERMISSION_FAULT		0x13
>> +
>> +#define EVTQ_0_SSV			(1UL << 11)
>> +#define EVTQ_0_SSID			GENMASK_ULL(31, 12)
>> +#define EVTQ_0_SID			GENMASK_ULL(63, 32)
>> +#define EVTQ_1_STAG			GENMASK_ULL(15, 0)
>> +#define EVTQ_1_STALL			(1UL << 31)
>> +#define EVTQ_1_PnU			(1UL << 33)
>> +#define EVTQ_1_InD			(1UL << 34)
>> +#define EVTQ_1_RnW			(1UL << 35)
>> +#define EVTQ_1_S2			(1UL << 39)
>> +#define EVTQ_1_CLASS			GENMASK_ULL(41, 40)
>> +#define EVTQ_1_TT_READ			(1UL << 44)
>> +#define EVTQ_2_ADDR			GENMASK_ULL(63, 0)
>> +#define EVTQ_3_IPA			GENMASK_ULL(51, 12)
>>    /* PRI queue */
>>    #define PRIQ_ENT_SZ_SHIFT		4
>>    #define PRIQ_ENT_DWORDS			((1 << PRIQ_ENT_SZ_SHIFT) >> 3)
>> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> index 3f557d1c4d..87342fdf69 100644
>> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
>> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
>> @@ -85,6 +85,35 @@
>>    #define smmu_get_ste_s1ctxptr(x)    FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK, \
>>                                        FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, x))
>>    
>> +/* event queue entry */
>> +struct arm_smmu_evtq_ent {
>> +    /* Common fields */
>> +    uint8_t     opcode;
>> +    uint32_t    sid;
>> +
>> +    /* Event-specific fields */
>> +    union {
>> +        struct {
>> +            uint32_t ssid;
>> +            bool ssv;
>> +        } c_bad_ste_streamid;
>> +
>> +        struct {
>> +            bool stall;
>> +            uint16_t stag;
>> +            uint32_t ssid;
>> +            bool ssv;
>> +            bool s2;
>> +            uint64_t addr;
>> +            bool rnw;
>> +            bool pnu;
>> +            bool ind;
>> +            uint8_t class;
>> +            uint64_t addr2;
>> +        } f_translation;
>> +    };
>> +};
>> +
>>    /* stage-1 translation configuration */
>>    struct arm_vsmmu_s1_trans_cfg {
>>        paddr_t s1ctxptr;
>> @@ -115,6 +144,7 @@ struct virt_smmu {
>>        uint32_t    strtab_base_cfg;
>>        uint64_t    strtab_base;
>>        uint32_t    irq_ctrl;
>> +    uint32_t    virq;
>>        uint64_t    gerror_irq_cfg0;
>>        uint64_t    evtq_irq_cfg0;
>>        struct      arm_vsmmu_queue evtq, cmdq;
>> @@ -160,9 +190,15 @@ static inline bool smmu_get_evtq_enabled(struct virt_smmu *smmu)
>>        spin_unlock(&smmu->cr0_lock);
>>    
>>        return enabled;
>> -};
>> +}
>>    
>>    /* Queue manipulation functions */
>> +static bool queue_full(struct arm_vsmmu_queue *q)
>> +{
>> +    return Q_IDX(q, q->prod) == Q_IDX(q, q->cons) &&
>> +           Q_WRP(q, q->prod) != Q_WRP(q, q->cons);
>> +}
>> +
>>    static bool queue_empty(struct arm_vsmmu_queue *q)
>>    {
>>        return Q_IDX(q, q->prod) == Q_IDX(q, q->cons) &&
>> @@ -175,12 +211,133 @@ static void queue_inc_cons(struct arm_vsmmu_queue *q)
>>        q->cons = Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons);
>>    }
>>    
>> +static void queue_inc_prod(struct arm_vsmmu_queue *q)
>> +{
>> +    u32 prod = (Q_WRP(q, q->prod) | Q_IDX(q, q->prod)) + 1;
>> +    q->prod = Q_OVF(q->prod) | Q_WRP(q, prod) | Q_IDX(q, prod);
>> +}
>> +
>>    static void dump_smmu_command(uint64_t *command)
>>    {
>>        gprintk(XENLOG_ERR, "cmd 0x%02llx: %016"PRIx64" %016"PRIx64"\n",
>>                 smmu_cmd_get_command(command[0]), command[0], command[1]);
>>    }
>>    
>> +static void arm_vsmmu_update_irq(struct virt_smmu *smmu)
>> +{
>> +    bool evt_pending = false;
>> +    bool gerr_pending = false;
>> +    uint32_t irq_ctrl;
>> +
>> +    spin_lock(&smmu->irq_cfg_lock);
>> +    irq_ctrl = smmu->irq_ctrl;
>> +    spin_unlock(&smmu->irq_cfg_lock);
>> +
>> +    spin_lock(&smmu->evt_queue_lock);
>> +    evt_pending = !queue_empty(&smmu->evtq);
>> +    spin_unlock(&smmu->evt_queue_lock);
>> +
>> +    spin_lock(&smmu->gerror_lock);
>> +    gerr_pending = (smmu->gerror ^ smmu->gerrorn) != 0;
>> +    spin_unlock(&smmu->gerror_lock);
>> +
>> +    vgic_inject_irq(smmu->d, NULL, smmu->virq,
>> +                    ((irq_ctrl & IRQ_CTRL_EVTQ_IRQEN) && evt_pending) ||
>> +                    ((irq_ctrl & IRQ_CTRL_GERROR_IRQEN) && gerr_pending));
>> +}
>> +
>> +static void arm_vsmmu_set_gerror(struct virt_smmu *smmu, uint32_t gerror_err)
>> +{
>> +    uint32_t pending, new_gerrors;
>> +
>> +    spin_lock(&smmu->gerror_lock);
>> +
>> +    pending = smmu->gerror ^ smmu->gerrorn;
>> +    new_gerrors = ~pending & gerror_err;
>> +
>> +    if ( new_gerrors )
>> +        smmu->gerror ^= new_gerrors;
>> +
>> +    spin_unlock(&smmu->gerror_lock);
>> +
>> +    arm_vsmmu_update_irq(smmu);
>> +}
>> +
>> +static int arm_vsmmu_write_evtq(struct virt_smmu *smmu, uint64_t *evt)
>> +{
>> +    struct arm_vsmmu_queue *q = &smmu->evtq;
>> +    struct domain *d = smmu->d;
>> +    paddr_t addr;
>> +    int ret;
>> +
>> +    if ( !smmu_get_evtq_enabled(smmu) )
>> +        return -EINVAL;
> 
> If the queue is disabled, the event is simply discarded and nothing is
> wrong. Why do we then raise GERROR.EVTQ_ABT_ERR via arm_vsmmu_set_gerror()?
> 
> 
>> +
>> +    spin_lock(&smmu->evt_queue_lock);
>> +
>> +    if ( queue_full(q) )
>> +    {
>> +        spin_unlock(&smmu->evt_queue_lock);
>> +        return -EINVAL;
> 
> This does not look like a global error either. From what I got from the
> SMMU spec (ARM IHI 0070/H.a 7.4 Event queue overflow), when the queue is
> full the event should be discarded and the overflow flag should be set
> in EVTQ_PROD.
> 
> "The Event queue overflow condition is present when:
> SMMU_EVENTQ_PROD.OVFLG != SMMU_EVENTQ_CONS.OVACKFLG
> When an overflow occurs, the SMMU toggles the SMMU_EVENTQ_PROD.OVFLG
> flag if the overflow condition is not already present."
> 
> Otherwise the guest might show a misleading message (an event queue
> memory-write error instead of an overflow).
> 
> Or I really missed something?
> 

You're correct. This is not handled according to the spec. I'll fix this 
and also the previous case when the queue is disabled.

>> +    }
>> +
>> +    addr = Q_PROD_ENT(q);
>> +
>> +    ret = access_guest_memory_by_gpa(d, addr, evt,
>> +                                     sizeof(*evt) * EVTQ_ENT_DWORDS, true);
>> +    if ( ret )
>> +    {
>> +        spin_unlock(&smmu->evt_queue_lock);
>> +        return ret;
>> +    }
>> +
>> +    queue_inc_prod(q);
>> +
>> +    spin_unlock(&smmu->evt_queue_lock);
>> +
>> +    arm_vsmmu_update_irq(smmu);
>> +
>> +    return 0;
>> +}
>> +
>> +static void arm_vsmmu_send_event(struct virt_smmu *smmu,
>> +                                 struct arm_smmu_evtq_ent *ent)
>> +{
>> +    uint64_t evt[EVTQ_ENT_DWORDS];
>> +    int ret;
>> +
>> +    memset(evt, 0, 1 << EVTQ_ENT_SZ_SHIFT);
>> +
>> +    if ( !smmu_get_evtq_enabled(smmu) )
>> +        return;
>> +
>> +    evt[0] |= FIELD_PREP(EVTQ_0_ID, ent->opcode);
>> +    evt[0] |= FIELD_PREP(EVTQ_0_SID, ent->sid);
>> +
>> +    switch ( ent->opcode )
>> +    {
>> +    case EVT_ID_BAD_STREAMID:
>> +    case EVT_ID_BAD_STE:
>> +        evt[0] |= FIELD_PREP(EVTQ_0_SSID, ent->c_bad_ste_streamid.ssid);
>> +        evt[0] |= FIELD_PREP(EVTQ_0_SSV, ent->c_bad_ste_streamid.ssv);
>> +        break;
>> +    case EVT_ID_TRANSLATION_FAULT:
>> +    case EVT_ID_ADDR_SIZE_FAULT:
>> +    case EVT_ID_ACCESS_FAULT:
>> +    case EVT_ID_PERMISSION_FAULT:
>> +        break;
>> +    default:
>> +        gdprintk(XENLOG_WARNING, "vSMMUv3: event opcode is bad\n");
>> +        break;
>> +    }
>> +
>> +    ret = arm_vsmmu_write_evtq(smmu, evt);
>> +    if ( ret )
>> +        arm_vsmmu_set_gerror(smmu, GERROR_EVTQ_ABT_ERR);
>> +
>> +    return;
>> +}
>> +
>>    static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
>>                                  uint64_t *ste)
>>    {
>> @@ -189,6 +346,14 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
>>        uint32_t log2size;
>>        int strtab_size_shift;
>>        int ret;
>> +    struct arm_smmu_evtq_ent ent = {
>> +        .opcode = EVT_ID_BAD_STREAMID,
>> +        .sid = sid,
>> +        .c_bad_ste_streamid = {
>> +            .ssid = 0,
>> +            .ssv = false,
>> +        },
>> +    };
>>    
>>        spin_lock(&smmu->strtab_cfg_lock);
>>        log2size = MIN(FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base_cfg),
>> @@ -196,7 +361,10 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
>>        spin_unlock(&smmu->strtab_cfg_lock);
>>    
>>        if ( sid >= (1U << log2size) )
>> +    {
>> +        arm_vsmmu_send_event(smmu, &ent);
>>            return -EINVAL;
>> +    }
>>    
>>        spin_lock(&smmu->strtab_cfg_lock);
>>        if ( FIELD_GET(STRTAB_BASE_CFG_FMT, smmu->strtab_base_cfg) ==
>> @@ -249,6 +417,7 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
>>            {
>>                gdprintk(XENLOG_ERR, "idx=%d > max_l2_ste=%d\n",
>>                         idx, max_l2_ste);
>> +            arm_vsmmu_send_event(smmu, &ent);
>>                return -EINVAL;
>>            }
>>            addr = l2ptr + idx * sizeof(*ste) * STRTAB_STE_DWORDS;
>> @@ -277,6 +446,14 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu, uint32_t sid,
>>                                    uint64_t *ste)
>>    {
>>        uint64_t val = ste[0];
>> +    struct arm_smmu_evtq_ent ent = {
>> +        .opcode = EVT_ID_BAD_STE,
>> +        .sid = sid,
>> +        .c_bad_ste_streamid = {
>> +            .ssid = 0,
>> +            .ssv = false,
>> +        },
>> +    };
>>    
>>        if ( !(val & STRTAB_STE_0_V) )
>>            return -EAGAIN;
>> @@ -312,6 +489,7 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu, uint32_t sid,
>>        return 0;
>>    
>>     bad_ste:
>> +    arm_vsmmu_send_event(smmu, &ent);
>>        return -EINVAL;
>>    }
>>    
>> @@ -362,16 +540,19 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
>>        if ( !smmu_get_cmdq_enabled(smmu) )
>>            return 0;
>>    
>> -    while ( !queue_empty(q) )
>> +    while ( !queue_empty(q) &&
>> +          ((smmu->gerror ^ smmu->gerrorn) & (GERROR_CMDQ_ERR)) == 0 )
>>        {
>> -        int ret;
>> -
>>            addr = Q_CONS_ENT(q);
>>            ret = access_guest_memory_by_gpa(d, addr, command,
>>                                             sizeof(command), false);
>> -        if ( ret ) {
>> -            queue_inc_cons(q);
>> -            return ret;
>> +        if ( ret )
>> +        {
>> +            smmu->cmdq.cons &= ~CMDQ_CONS_ERR;
>> +            smmu->cmdq.cons |= FIELD_PREP(CMDQ_CONS_ERR,
>> +                                        CMDQ_ERR_CERROR_ABT_IDX);
>> +            arm_vsmmu_set_gerror(smmu, GERROR_CMDQ_ERR);
>> +            break;
>>            }
>>    
>>            switch ( smmu_cmd_get_command(command[0]) )
>> @@ -395,6 +576,10 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
>>            default:
>>                gdprintk(XENLOG_ERR, "vSMMUv3: unhandled command\n");
>>                dump_smmu_command(command);
>> +            smmu->cmdq.cons &= ~CMDQ_CONS_ERR;
>> +            smmu->cmdq.cons |= FIELD_PREP(CMDQ_CONS_ERR,
>> +                                          CMDQ_ERR_CERROR_ILL_IDX);
>> +            arm_vsmmu_set_gerror(smmu, GERROR_CMDQ_ERR);
>>                break;
>>            }
>>    
>> @@ -405,6 +590,15 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
>>                         ret);
>>                dump_smmu_command(command);
>>            }
>> +
>> +        /*
>> +        * Stop consuming the command queue if a command error occurred.
>> +        * CMDQ_CONS continues to point at the offending command until the
>> +        * error is acknowledged.
>> +        */
>> +        if ( (smmu->gerror ^ smmu->gerrorn) & GERROR_CMDQ_ERR )
>> +            break;
>> +
>>            queue_inc_cons(q);
>>        }
>>    
>> @@ -443,6 +637,7 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>>                vreg_reg32_update(&reg32, r, info);
>>                smmu->evtq.cons = reg32;
>>                spin_unlock(&smmu->evt_queue_lock);
>> +            arm_vsmmu_update_irq(smmu);
>>                break;
>>            default:
>>                printk(XENLOG_G_ERR
>> @@ -573,6 +768,7 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>>                vreg_reg32_update(&reg32, r, info);
>>                smmu->irq_ctrl = reg32;
>>                spin_unlock(&smmu->irq_cfg_lock);
>> +            arm_vsmmu_update_irq(smmu);
>>                break;
>>    
>>            case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
>> @@ -602,6 +798,10 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
>>                vreg_reg32_update(&reg32, r, info);
>>                smmu->gerrorn = reg32;
>>                spin_unlock(&smmu->gerror_lock);
>> +            arm_vsmmu_update_irq(smmu);
>> +            spin_lock(&smmu->cmd_queue_lock);
>> +            arm_vsmmu_handle_cmds(smmu);
>> +            spin_unlock(&smmu->cmd_queue_lock);
>>                break;
>>    
>>            default:
>> @@ -905,9 +1105,10 @@ static const struct mmio_handler_ops vsmmuv3_mmio_handler = {
>>        .write = vsmmuv3_mmio_write,
>>    };
>>    
>> -static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size,
>> -                               uint32_t features)
>> +static int vsmmuv3_init_single(struct domain *d, paddr_t addr,
>> +                               paddr_t size, uint32_t virq, uint32_t features)
>>    {
>> +    int ret;
>>        struct virt_smmu *smmu;
>>    
>>        smmu = xzalloc(struct virt_smmu);
>> @@ -916,6 +1117,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size,
>>    
>>        smmu->d = d;
>>        smmu->features = features;
>> +    smmu->virq = virq;
>>        smmu->cmdq.ent_size = CMDQ_ENT_DWORDS * DWORDS_BYTES;
>>        smmu->evtq.ent_size = EVTQ_ENT_DWORDS * DWORDS_BYTES;
>>    
>> @@ -928,6 +1130,15 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size,
>>        spin_lock_init(&smmu->strtab_cfg_lock);
>>        spin_lock_init(&smmu->irq_cfg_lock);
>>    
>> +    ret = vgic_reserve_virq(d, virq);
>> +    if ( !ret )
>> +    {
>> +        printk(XENLOG_G_ERR
>> +                 "vSMMUv3: Failed to reserve domain vIRQ %u\n", virq);
>> +        xfree(smmu);
>> +        return -EINVAL;
>> +    }
>> +
>>        register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
>>    
>>        /* Register the vIOMMU to be able to clean it up later. */
>> @@ -953,7 +1164,7 @@ static int domain_vsmmuv3_init(struct domain *d)
>>            {
>>                smmu = (const struct arm_smmu_device *) hw_iommu->iommu;
>>                ret = vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size,
>> -                                      smmu->features);
>> +                                      hw_iommu->irq, smmu->features);
>>                if ( ret )
>>                    return ret;
>>            }
>> @@ -983,7 +1194,7 @@ static int domain_vsmmuv3_init(struct domain *d)
>>            }
>>    
>>            ret = vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE,
>> -                                  features);
>> +                                  GUEST_VSMMU_SPI, features);
>>            if ( ret )
>>                return ret;
>>        }
>> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
>> index 8863e2e457..c43b8b7b71 100644
>> --- a/xen/include/public/arch-arm.h
>> +++ b/xen/include/public/arch-arm.h
>> @@ -538,6 +538,8 @@ typedef uint64_t xen_callback_t;
>>    #define GUEST_VIRTIO_MMIO_SPI_FIRST   33
>>    #define GUEST_VIRTIO_MMIO_SPI_LAST    43
>>    
>> +#define GUEST_VSMMU_SPI         44
> 
> So this is the same emulated SPI as the one used for vPL011. You likely
> need to update d_cfg->arch.nr_spis if vSMMU is enabled for the domain,
> to ensure that we allocate enough SPIs for it (refer to
> arch_parse_dom0less_node(), when "nr_spis" is not explicitly specified
> we update nr_spis if vPL011 is requested). Moreover, you already do this
> in libxl.
> 

Agreed, I missed handling the number of domain SPIs in dom0less mode. 
I'll update this.

> 
>> +
>>    /*
>>     * SGI is the preferred delivery mechanism of FF-A pending notifications or
>>     * schedule recveive interrupt. SGIs 8-15 are normally not used by a guest
> 

BR,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 02:03:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 02:03:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467597.1676692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhOZ-0006WO-Oi; Mon, 02 Nov 2026 02:03:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467597.1676692; Mon, 02 Nov 2026 02:03:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNhOZ-0006WH-Ln; Mon, 02 Nov 2026 02:03:35 +0000
Received: by outflank-mailman (input) for mailman id 1467597;
 Mon, 02 Nov 2026 02:03:35 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xNhOY-0006Um-OF
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:03:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNhOY-005zsm-5B
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:03:34 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef58-8faa-0a2a0a5109dd-0a2a4503b9d4-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:03:34 +0100
Received: from [40.107.130.108]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6ae7ef75-fae8-0a2a45030019-286b826c1829-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 03:03:34 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by AS8PR03MB9024.eurprd03.prod.outlook.com (2603:10a6:20b:5b6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 02:03:32 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 02:03:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=fGiCH4FYqfqzcC7v5RVYyz6UC202LVTAm5yPY+BZ16atuc9BIvlJoAv5U+Rhj0G6JOieAF/Qd1vv99wOT77x1b0IQ9JCPoF6nWhwpMVavq2a4mqDcNrYAC+Y6fPySFidt52v7PGlarg5qaZiQbkuC3QeVCc6lXNxcWnUW5ZGIOEXLzqsZiZxSdN47gLLTUxO00AeVo6dRNTbEgDY4uh2mdR9EDQtqf4pM8/Hgl0nRTG3gwG5qg1Lv2N3Z8q/+E6tfkCl/9eH4x7tkJDLrDrCBU7p5SCLDZpmy9YVtDIt1p/rGSOipgxE25clXmisY98V+jmrIZAKPWmTMHDXDGvOgg==
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=qRRYV0eGEbi4+8XpbWOAK4nHmOJftx5mBglJzIHRjCY=;
 b=UeK+tuiXRIgC2flT0PXZ2PZUpucvVF5BrMPzuXyUECSZ5ywjv1sNHA5rZTXj5N+qntHu6cTzDMudTW4VgHYeD+pnrz/XqrrDzTR4XmgEk3Q5Q8rTaiC/c0ABJGSj3krqSqUC+9zgqqX6PpW7f/NKKkEyAYveBtqOuF4OXh35MKQivKnlPhAdNXoQFDECbqYT+9NYnaVOIZaTvedxZNx7L6x3Vn7jPI6OhNhQ0HCZ0TkghlXjkPwQx8sBtwmryBYR7NQQLKAgZCvIOIRMzGcuNGKW/PEwBVbhTH/DvdX9r1B3UkEpgOcI0wIzhCFMKxoJ0NhA69UTS01mr/U0tQJlHQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qRRYV0eGEbi4+8XpbWOAK4nHmOJftx5mBglJzIHRjCY=;
 b=i2B8UNSWJlUCCuf1jJkkmL9oO34xLhtHc5jfNTkc9Tjwm0duRb94IjM9MC1dFkq69E67nxNzpJ8U0mNEZEtH0aK20YPW5C7La9qvGR0s2Pux4/lcCPS5GuTiAq0mdtM6DSioLa+4sEo5AQz66JpYdINWTznTHRAwsZ7SwSxnDfNPSBmnWAD8wd8dHisEwb2kphExpw0HsPnpz2FdR/Y+YclGRdQxU5X8i5dPI3ia5e+3dix1OTTO7sRo7xjTlSpBhkY6CoU84mvRtUNaHU68hVYnRTg3DJGU5nMwHNpQ3Kw2133ndAe7sm+d9rf3DAO7TAiRJcHCDvzag6oV35x/yg==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <0271b2fa-02c6-45fa-9267-151ca85fa9bb@epam.com>
Date: Mon, 2 Nov 2026 03:03:30 +0100
User-Agent: Mozilla Thunderbird
From: Milan Djokic <milan_djokic@epam.com>
Subject: Re: [PATCH v4 13/22] xen/arm: vsmmuv3: IOMMU device tree node for
 dom0
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1791328190.git.milan_djokic@epam.com>
 <c38b1a9476f54e42050e4712a98b19bf1d97f3a0.1791328190.git.milan_djokic@epam.com>
 <b92b4b48-f4b3-452b-a973-d98744adfb2d@gmail.com>
Content-Language: en-US
In-Reply-To: <b92b4b48-f4b3-452b-a973-d98744adfb2d@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AM8P191CA0029.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:20b:21a::34) To AS2PR03MB9587.eurprd03.prod.outlook.com
 (2603:10a6:20b:595::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS2PR03MB9587:EE_|AS8PR03MB9024:EE_
X-MS-Office365-Filtering-Correlation-Id: d0d1e81e-7a57-44af-ff77-08df38857ec1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|260925022911599003|260925021311599003|260925021911599003|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	TpFdNC0W/zlosvZAexFvfzsKT4J8ZZhoKHNdcOuiEKr+BAaaXwAwrnLWzOb9D3kiekKbWCEKlex3/iDNY7DmOvH8DVkBdQer+cOwnmhTkchq3eMKuvgWVxahrqcpjMQhp+xTdvudSEYbLHJG+3U/Og16K3RHto+LJTvi2HkcULQ8/fT2dXAAEiW0iXJ6GW9mGERNiQ1DZneMLbIv04UI9RgkbxKRSu4AUJffpE1tqvJPQ+/M99aoQ9yhi7+GE8sATczSyoWqysiHWAWuI2l16L6/laN0M8SjZGX87IbuN+iUuH+CVHZwuMTw+iTnIzXLvFgrSkX7W8tB0VjA+cMXMoLU8RSA4NLXs/WRBmuUWBrTJX9bzRtDhOqCJrZJ0FQTMAYoTuevAt7aBud1vxMPfBpWBPBp145eYbhyV+FHYlL5qe6LJQ1mME5efbEboR+zWE3uKxkwsCaErwMY0lgeRb3ltJjQDh0BBRYFhk67D6bOqbGFgxa04AM900Sj5vQ8VjGYyNtuun+KgSYRqeeeuEfp1m+WdO3Msydm3E8fVNTyjksAT3eIqBm1iYMIDRoRHYG6UL6U1twvOzJ3M7AhFqau4YARy9TENoOkvQnVZTmH0UdC9gLFVq6YFmP99oeseSOGhUM+h6647TPfnQu3J3ATlIUAm1kFb447D+AojsE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(260925022911599003)(260925021311599003)(260925021911599003)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VWZ0Nm81SzM3MW9hU0RNTStVQk1FZkNvaXRjZFZSRUlXY0VsSlRpRkpDRjZR?=
 =?utf-8?B?SkRHS3p3NzhpMitNOWNlVm5lWndYK1RXMUlFSTBxaW5FM2k4alB0K3QrTFJF?=
 =?utf-8?B?Q1JsSVFzNkhvdlZDbFhrZXZjSkVac01ydjU1b09uTXJyMlhlK3cxVjJIU3ND?=
 =?utf-8?B?aytweXc0a1d6RWxFS3QwOXU3SC9zUkkvWXEwMGEybHNtRm5HbnhxdlJJRytt?=
 =?utf-8?B?QnR5S2Q4V3FQdTl5dmFMcmd1UkZZNTZSWmlCTFNrL05LRVJuOXBKdXlPWFQx?=
 =?utf-8?B?YTdYS3VlTzdrbmZTVjhBUVFNWG1yaWdTV1RjMXFhVzJiOXpqdlF6WkpFSURC?=
 =?utf-8?B?Tm5WdWZZUU9mRStCWDNSWmp0M3p6MDlmaVNNdCtwNEd0ckM0RzF1SGo2eGR4?=
 =?utf-8?B?dnBkVkJOdFRxUW5ONTNyU210NFVBL0FPOG11WmxZbTFIKzFuYXpoUXZFdGor?=
 =?utf-8?B?K0FQM1l2MGcwTzhWQ1BkQjBWaW1TbUl4Zys3Y055Wjl5YUxrTVFUbitFSUlQ?=
 =?utf-8?B?UjdWbWU3VWJGVXhNN3RtSWRWTWllT29SM0pDNUZNRWxvcFViTmppaXVNa3hY?=
 =?utf-8?B?bFQ2dFVaWlZqNmlTZ1R5T3NCdkFmVXpRTUZFVGZOSzc2cFQvSmtheGVXUzlZ?=
 =?utf-8?B?dG5ETmx6QkVuNjB0eWFBVlM5NUJnSk9NZlVVaDBUN1kzT2swSnppR1B4UFBE?=
 =?utf-8?B?QUlkNUJOSnZDZmxOREVuVm9vNlRTS25EZldPc0RLYmJjU1JZZXA1MXc1aEJN?=
 =?utf-8?B?Skd0U2NLcWJTaHRLODRIV0FNbzJxQisxUTZNNmJ2bVJOb0tqckNUS2xkczF6?=
 =?utf-8?B?aEM4eW5nb0NoZE5CaVFIUkxIbW5VSG05SUdzYlIvKzJZVUV2bHB5T25HZ0ZC?=
 =?utf-8?B?UGVkTkZXV2Ric0EybnY0d1pJT1BPNmxLcFBnbDErc0lrdEhCdkd5S0gyOElO?=
 =?utf-8?B?VlVtSFowTEdUcmZ6czNmaVBGbFB4TU1WVHlsYVp0VjB6QXpYYlZnNTZTbml0?=
 =?utf-8?B?Mi9jMjhaWkxBOW91RWpBT2xsQ01qYzJUTlpkWEdsUEFZTDYwSmlHMmR0VndJ?=
 =?utf-8?B?a3ROcWZnWFpqUHZKR1AwbmZDbjI5ZmNWblBXbjNoeHJzNHVyV3hiMG5ta2hr?=
 =?utf-8?B?VjE4VllaQlIzT0tCZkJzMzUzb1Y4M2FGczdiMmF5RWdMWTR0Qmx3bkZUWlE5?=
 =?utf-8?B?WWdsdmpBc1hlZitwdnQ0VnhkdFg5ZmJVb1RPTm9kVnd1UUlWb056clhXWkZh?=
 =?utf-8?B?ejFwYjZwMXhydnlZTUJ6OWlJS3dWcjhFYXJLaE9aeGJZN0dTZVRpbnNBUDdl?=
 =?utf-8?B?dkZZN1pnUS9NYkFnZGg4QTl3cW5tVnczV1BqNVNJMkZ0Y1BMNWtPZm84UEwv?=
 =?utf-8?B?OFNQVkdCSVAwbUZtaGlTcjlpV21VUTFxa2JUa25pdjUvejdwdC9YaWpzYjFy?=
 =?utf-8?B?bkR5TlgvT0pTa3owZGJUbXd5U3hWU2ZvMUhGbVpjOG5CdTZkWGQ4THFYS1BQ?=
 =?utf-8?B?aVU5RFBEK0pja2wzbzMyVmlLK09wU25iUVZNWm9DRkhPeVZXQWFpQXhlbXc3?=
 =?utf-8?B?QmlzM2RIWmJCcHFsV2ZlUlJKZXVKdWt3Y2NPM3VQb0IxbXA3dm4yUUtpVUgy?=
 =?utf-8?B?QTg3YXJzRE1iWVJxazV0Q3pFc2hXZFZxOVlyTUhHWmFDNzdYTGFNamNOYzdD?=
 =?utf-8?B?RzBJOXNrYTc1RzdPaE56bXJnbnJKdXowSGxMbjFyZkhsUG8vYUErRnNNamxO?=
 =?utf-8?B?T1AvZjFWM3FXN0swSUh4STNGN1pmU0NoYm9pdjZqN3lkbG0veGE1UnhRVktJ?=
 =?utf-8?B?am5Yb3VNWTl5M2tTb3AzalhDY0hKRzVHcjJMM3ZpKzY2M1ljWll6L2VPWEFu?=
 =?utf-8?B?U09RbUp4VXptSUFBSThweGU1ZHgrY3BKZ2p4OHhhN25RS28vbmswN21lTUpV?=
 =?utf-8?B?L2pkaUcvNUdjWkpZcng1Z3hIbXYxNHA5MWNUMjQxRFJ6M2JSZXR2RWJrVCt0?=
 =?utf-8?B?SUd6UnNHcDc1Mm5BcXFibjVIbk1PS05qb2d3cEg0K0NQb1RLTVA4VDdTWGcv?=
 =?utf-8?B?amhSaW5LNUJVQ1dFSHlONHNXRkI4bFNWUDZybGcvb1RCVURwZWZ5ZzlqaUxy?=
 =?utf-8?B?OFRjcEVKRGZOU3NZNzVKaXRDSXU0Q1pqWEhSeEs2N0JuSmZBNkJ2R2ZDK2xk?=
 =?utf-8?B?U0xabW1PTGxudXNiSkljZGIxaEhBWjJRWno4YStvVG9jb3VSMnRWVXo5Wjhl?=
 =?utf-8?B?Tlc5UnFPdE1qYmdHbVQ5Nm9EZnMwbk15RzBjeE03YW8zdFR0RTdRSTdLRFlF?=
 =?utf-8?B?cG5HOWZzRko0MUorU0dEUE9BWStJZGN4Lzcwc29UUHZwK2ZTZ0QzZz09?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d0d1e81e-7a57-44af-ff77-08df38857ec1
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 02:03:31.9210
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 5aMqOPUOCsoCphQLfdIND6LQYgWO911/t05SdGArM61nOiJa7KIJ49W5R9whxxsWLQiWVL+lj0EtNRxsHtaG0g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9024
X-purgate-ID: tlsNG-33051d/1793585014-770F64E9-08C8210B/0/0
X-purgate-type: clean
X-purgate-size: 6778

Hi Oleksandr,

On 10/10/26 17:30, Oleksandr Tyshchenko wrote:
> 
> 
> On 10/7/26 03:07, Milan Djokic wrote:
> 
> Hello Milan
> 
>> From: Rahul Singh <rahul.singh@arm.com>
>>
>> XEN will create an IOMMU device tree node in the device tree
>> to enable the dom0 to discover the virtual SMMUv3 during dom0 boot.
>> IOMMU device tree node will only be created when viommu is enabled
>> via Kconfig build options.
>>
>> "iommus" property will be added for dom0 devices to virtual
>> IOMMU node to enable the dom0 linux kernel to configure the IOMMU.
>>
>> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
>> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
>> ---
>>    xen/arch/arm/domain_build.c       | 102 +++++++++++++++++++++++++++++-
>>    xen/arch/arm/include/asm/viommu.h |   1 +
>>    2 files changed, 101 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index cd2e09f005..6513140133 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -557,9 +557,12 @@ static int __init write_properties(struct domain *d, struct kernel_info *kinfo,
>>                continue;
>>            }
>>    
>> -        if ( iommu_node )
>> +        /*
>> +         * Expose IOMMU specific properties to hwdom when vIOMMU is
>> +         * enabled.
>> +         */
>> +        if ( iommu_node && viommu_get_type() == XEN_DOMCTL_CONFIG_VIOMMU_NONE )
>>            {
>> -            /* Don't expose IOMMU specific properties to hwdom */
>>                if ( dt_property_name_is_equal(prop, "iommus") )
>>                    continue;
>>    
>> @@ -1457,6 +1460,95 @@ int __init make_timer_node(const struct kernel_info *kinfo)
>>        return res;
>>    }
>>    
>> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
>> +static int __init make_hwdom_viommu_node(const struct kernel_info *kinfo)
>> +{
>> +    uint32_t len;
>> +    int res;
>> +    char buf[24];
>> +    void *fdt = kinfo->fdt;
>> +    const void *prop = NULL;
>> +    const struct dt_device_node *iommu = NULL;
>> +    struct host_iommu *iommu_data;
>> +    gic_interrupt_t intr;
>> +
>> +    if ( list_empty(&host_iommu_list) )
>> +        return 0;
>> +
>> +    list_for_each_entry( iommu_data, &host_iommu_list, entry )
>> +    {
>> +        if ( iommu_data->hwdom_node_created )
>> +            return 0;
>> +
>> +        iommu = iommu_data->dt_node;
>> +
>> +        snprintf(buf, sizeof(buf), "iommu@%"PRIx64, iommu_data->addr);
>> +
>> +        res = fdt_begin_node(fdt, buf);
>> +        if ( res )
>> +            return res;
>> +
>> +        prop = dt_get_property(iommu, "compatible", &len);
>> +        if ( !prop )
>> +        {
>> +            res = -FDT_ERR_XEN(ENOENT);
>> +            return res;
>> +        }
>> +
>> +        res = fdt_property(fdt, "compatible", prop, len);
>> +        if ( res )
>> +            return res;
>> +
>> +        if ( iommu->phandle )
>> +        {
>> +            res = fdt_property_cell(fdt, "phandle", iommu->phandle);
>> +            if ( res )
>> +                return res;
>> +        }
>> +
>> +        /* Use the same reg regions as the IOMMU node in host DTB. */
>> +        prop = dt_get_property(iommu, "reg", &len);
>> +        if ( !prop )
>> +        {
>> +            printk(XENLOG_ERR "vIOMMU: Can't find IOMMU reg property.\n");
>> +            res = -FDT_ERR_XEN(ENOENT);
>> +            return res;
>> +        }
>> +
>> +        res = fdt_property(fdt, "reg", prop, len);
>> +        if ( res )
>> +            return res;
>> +
>> +        prop = dt_get_property(iommu, "#iommu-cells", &len);
>> +        if ( !prop )
>> +        {
>> +            res = -FDT_ERR_XEN(ENOENT);
>> +            return res;
>> +        }
>> +
>> +        res = fdt_property(fdt, "#iommu-cells", prop, len);
>> +        if ( res )
>> +            return res;
>> +
>> +        res = fdt_property_string(fdt, "interrupt-names", "combined");
>> +        if ( res )
>> +            return res;
>> +
>> +        set_interrupt(intr, iommu_data->irq, 0xf, DT_IRQ_TYPE_LEVEL_HIGH);
>> +
>> +        res = fdt_property_interrupts(kinfo, &intr, 1);
>> +        if ( res )
>> +            return res;
>> +
>> +        iommu_data->hwdom_node_created = true;
>> +
>> +        fdt_end_node(fdt);
>> +    }
>> +
>> +    return res;
>> +}
>> +#endif
>> +
>>    static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
>>                                  struct dt_device_node *node,
>>                                  p2m_type_t p2mt)
>> @@ -1525,6 +1617,12 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
>>        if ( dt_match_node(timer_matches, node) )
>>            return make_timer_node(kinfo);
>>    
>> +#ifdef CONFIG_ARM_VIRTUAL_IOMMU
>> +    if ( device_get_class(node) == DEVICE_IOMMU &&
>> +         viommu_get_type() != XEN_DOMCTL_CONFIG_VIOMMU_NONE )
>> +        return make_hwdom_viommu_node(kinfo);
> 
> So all vIOMMU nodes are created at the position of the first pIOMMU
> node, right? If so, could it be possible in real life for IOMMUs to sit
> under different buses (under different parent nodes)?
> 

Yes, for hardware domains, all vIOMMU nodes are inserted at the position 
of the first pIOMMU node.

If pIOMMUs are located under different buses, the guest DT hierarchy 
will differ from the host DT hierarchy, with all vIOMMU nodes placed 
under the same parent. This is not necessarily a problem. However, the 
``reg`` property is copied from the original pIOMMU node and may 
therefore contain an address relative to its parent bus, whereas the 
host IOMMU list and the registered MMIO regions use the translated 
physical address obtained during the SMMUv3 driver probe. This 
inconsistency could prevent the guest from accessing the vIOMMUs correctly.

I'll change the implementation so that vIOMMU nodes are created under 
their corresponding parent buses, preserving the original pIOMMU 
hierarchy from the host DT.

Thank you for noticing this.

> 
>> +#endif
>> +
>>        /* Skip nodes used by Xen */
>>        if ( dt_device_used_by(node) == DOMID_XEN )
>>        {
>> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
>> index 844cf34d56..5ae21042f0 100644
>> --- a/xen/arch/arm/include/asm/viommu.h
>> +++ b/xen/arch/arm/include/asm/viommu.h
>> @@ -20,6 +20,7 @@ struct host_iommu {
>>        paddr_t size;
>>        /* Used for dom0 EVTQ and GERROR interrupts (1-1 IRQ mapping) */
>>        uint32_t irq;
>> +    bool hwdom_node_created;
>>    };
>>    
>>    struct viommu_ops {
> 

BR,
Milan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 03:05:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 03:05:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467637.1676700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNiM9-0006rT-3I; Mon, 02 Nov 2026 03:05:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467637.1676700; Mon, 02 Nov 2026 03:05:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNiM9-0006rM-0c; Mon, 02 Nov 2026 03:05:09 +0000
Received: by outflank-mailman (input) for mailman id 1467637;
 Mon, 02 Nov 2026 03:05:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xNiM7-0006rE-My
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:05:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNiM6-00F8vF-On
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 04:05:06 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae7fd97-bab6-0a2a0a5309dd-0a2a450ae2ce-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 04:05:06 +0100
Received: from [209.85.208.50] (helo=mail-ed1-f50.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae7fde2-f2d2-0a2a450a0019-d155d032b84e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 04:05:06 +0100
Received: by mail-ed1-f50.google.com with SMTP id
 4fb4d7f45d1cf-6afa651700eso3564476a12.2
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 19:05:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793588706; cv=none;
        d=google.com; s=arc-20260327;
        b=dJa+3l6BJVVOqflDXFHDqkvuPXiCz6ox7f/oGRPqBojuFgoYdim3TjsLvljiaSKlO6
         E5k4RcSqcAZyW72znB7iny6Cc2cd+7IK0h7T+RHcd6yPFrqaNN5te3CTswC+yrr5HVKi
         XjE3Vc3Zb6Aoxo+QF6QayHKim2GKtCP0+Ner8yEnYhbPmyLjonNgpeTEwg9yqY5d0TY2
         4KcqrpLAONNg3sFsqhi6lBPizwkCWiQJbLxLu0EvEfFMxJE9ZaSDzny2qyUENLZ17+5v
         Mxw944nNfwlMrb5p6AEnvPREjng8kzdYxErgbB5bh+cVIrpi14bs/r+9KlgHnk8u3id0
         zbHQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=imk8Y3dp71z9rketUe9RnJkNrtaKIPDOf8w3Ba5TnQo=;
        fh=14eKip6vGthT/lp6m1ArSiDwB7Qxtkc/On3njMQLlrg=;
        b=WuZhOPlx3yXC7Yb6vbN0JSm/oagzFReofhR5WgaQk4rKyz3LGIs3bIr7lvWBWBqkzD
         TfWN2mRBrg09jc2IYE8Xo0VaWTZHtodLt/dbvhfSbXOH5eEMGHOmjy04FH/1cFgL4jhh
         uHOcwhI8CqqF2SzsbzGW8MIR8vkIQNFWDPrv4dfANSOzzzJ8jGgWP3khmCQyWTTG0B94
         PF64hZ8v1ntp8L8ZGrUc/iVspOzAri/weFcUnwVahLxOK3B8Y7Omqd9TGFfoNVGPU0l1
         hWQ8ciUmKEhJNK/DIHbqAQClUDgRpIk6GtSfsln/Usq+vWdPFTAWypQghIdIdFNLfvBn
         ThoA==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793588706; x=1794193506; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=imk8Y3dp71z9rketUe9RnJkNrtaKIPDOf8w3Ba5TnQo=;
        b=pAxQ713cTHzQ/gKm488PmNlSQ67B+hXX7O/8XRvW7Kc898PESUliqsW+pZFxJLcz7G
         k1fSmN3Lcem1vY+7jKMlTco2a3TopPdM4Y64oq289aUApjimzZImL0fPZ0PqHbvxdm07
         +o/OaNwx4KfudHqm2c6Eacx4RYWiCYBzW+sVQdO8z7F5+HtMYiQLxtb/6vC0n+JdxYnH
         wjHkPRnlIgTsTfsajXvg29UCLgd9hSXpTC1K2Qq4PMFF53cYR0JqvW0n3V0VmRfDhGld
         hRGYGpKWokCiJO17BYtYrn++Ei6+OBZmkjiJAarJtzvSttV5neVJ7MPrbVJ5b5lhJZNv
         +noA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793588706; x=1794193506;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=imk8Y3dp71z9rketUe9RnJkNrtaKIPDOf8w3Ba5TnQo=;
        b=R75P4rapV3Imm+UR8kAf/bB5EhARXZHtj/HUept+yM8LFP5+lZ9ELrbIaBm+4ZbP+F
         16cucwg6q/l+nTHexzbAataJf1+CORQlGka+tGfH06yQ6rZ/HM2QC6FbihhmuiyXmWPl
         jQM0zkG1rorZJ/WOw7mDSDgEatbnfTMyb4HXhMs8oBeOlw7cl0/h2kRxkhQiy3xzul9m
         HRCIvE9CbnCPoYDazig0qMFgY6drmmRFzR9BX/KmM912BQLL5qM4g3gTzkjRTw15d6uZ
         x9knMAryojA992sEwDjpeN1YXNzWanhUmoMHiH/eNKPDdvI5sP0L9rk5AWDfIdBolP6B
         z1tg==
X-Forwarded-Encrypted: i=1; AKwUvBx8o4UiUPO4eSmpcI7Vp+200Kk1PdQOTEYGl7Dzu/NpkqqyWem70FzmW05mM+PEOdgbzT6gaPpgHZM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+QrqRua+SlyP4mtfxs/TCE/riPlhCiVircVakAwWS1VtLpJFZE
	YbnkdIHMzBbwh46KceN+Wi7l5RnoFsmdII+WbyFhCdXT3m3mrz16mNXdBqOQf6j2A925+2lyk+I
	ws4HrIs0qeRzNOEvj/2EU5bPfltk8yY8=
X-Gm-Gg: AYBFou3e9agaGyx2pAILzVgr/N+0Jyg124KZE9FMK5kNZxIHbjN4h6D+wzEcfJ0qMRr
	Jld9ifEH38vHNBXURZ8gPBAIGuRG5vvm4zPqE3He0jatnSqepsrt5RWZvfALZGFwyOetbYgdMw9
	QqeKOjo4KkXvnucxn7tDhbQg/MGxWHDwIHhHWxiwZTYxAn1UmL8E4/jIvIDU2Hz7jcmGoj4iABY
	OE3XSM9k3Z4E6lIO0J9osBH4GFVbQzCzoYIRJsNbZDTYk6gorG9TJTQehSK/4AX0ZpkfikBdjky
	KBOP3KNLv2Ad2W9TZWYlJJm+jAkzHWmiZfKZVSEYwm473b8hoXFKsKrsq9gXgr+UmM8FXrgVN+K
	9Q/sYQ/F4T4u8w8Q28gfTOVMczW41qfz6h4/G
X-Received: by 2002:a05:6402:11d3:b0:6af:dc4c:5f28 with SMTP id
 4fb4d7f45d1cf-6b4d4f71386mr6168227a12.37.1793588705869; Sun, 01 Nov 2026
 19:05:05 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu>
In-Reply-To: <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Mon, 2 Nov 2026 11:04:50 +0800
X-Gm-Features: AclHuK-B5Bt-Oq5n8C1F46Ueo6UjVwoSHbd-GyMOrqSjrQb5HmRreMzyOD5B1cQ
Message-ID: <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-4011c0/1793588706-589C9CFC-918CB747/0/0
X-purgate-type: clean
X-purgate-size: 9217

On Mon, Nov 2, 2026 at 4:57=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> > On Sun, Nov 1, 2026 at 7:29=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> >>
> >> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> >>> On Sun, Nov 1, 2026 at 1:06=E2=80=AFAM BALATON Zoltan <balaton@eik.bm=
e.hu> wrote:
> >>>>
> >>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
> >>>>> On Sat, Oct 31, 2026 at 8:42=E2=80=AFPM BALATON Zoltan <balaton@eik=
.bme.hu> wrote:
> >>>>>>
> >>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
> >>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo an=
d the
> >>>>>>>>> type_init
> >>>>>>>>> function that calls type_register_static(). A later change need=
s to
> >>>>>>>>> pass a
> >>>>>>>>
> >>>>>>>> That's the point of the macro to hide the boiler plate code.
> >>>>>>>>
> >>>>>>>>> target mask into that registration, and the macros have no para=
meter
> >>>>>>>>> for it.
> >>>>>>>>
> >>>>>>>> Couldn't you just change the macros to take that parameter inste=
ad of
> >>>>>>>> expanding it everywhere?
> >>>>>>>>
> >>>>>>>
> >>>>>>> Problem of macros is that they don't have default parameters, so =
you
> >>>>>>> need variants for everything:
> >>>>>>>
> >>>>>>> DEFINE_MACHINE
> >>>>>>> DEFINE_MACHINE_EXTENDED
> >>>>>>> DEFINE_MACHINE_WITH_INTERFACES
> >>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>>>>>> and now would need a new variant, with variant for other existing=
 ones.
> >>>>>>>
> >>>>>>> In the end, it's just simpler to remove this and add the boilerpl=
ate.
> >>>>>>> It's written once and never modified, so using a macro just save =
typing
> >>>>>>> those lines once.
> >>>>>>>
> >>>>>>>> Regards,
> >>>>>>>> BALATON Zoltan
> >>>>>>>>
> >>>>>>>>> This series expands every caller first, with no behavior change=
, so the
> >>>>>>>>> follow-up only replaces the type_register_static() call.
> >>>>>>>>>
> >>>>>>>>> Each machine file gains a class_init function, a TypeInfo, and =
a
> >>>>>>>>> type_init
> >>>>>>>>> function that calls type_register_static(). The last patch remo=
ves
> >>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core=
/boards.h.
> >>>>>>
> >>>>>> Macros help reading the code not saving typing. If the actual
> >>>>>> functionality is buried in a lot of boiler plate it's harder to un=
derstand
> >>>>>> and spot bugs so putting the unintresting boiler plate behind a ma=
cro is
> >>>>>> better even if you need a separate version for different cases. Th=
en the
> >>>>>> code that uses the macro will be much more obvious and not just a =
lot of
> >>>>>
> >>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* a=
re
> >>>>> not defined properly
> >>>>> that causes them to not be extended easily.
> >>>>>
> >>>>> DEFINE_TYPES is another example, use them can extend easily, how ab=
out
> >>>>> always use DEFINE_TYPES?
> >>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_M=
ACHINE*?
> >>>>
> >>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
> >>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't yo=
u add
> >>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for mac=
hines
> >>>> that need it, or if it's needed by all machines then make the new
> >>>> parameter required and add it to all convenience wrappers too so you=
 can
> >>>> keep using DEFINE_MACHINE* and just need to add one parameter to it =
in
> >>>> machines?
> >>>
> >>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
> >>> calls to it also need
> >>> to be changed, that means touch many $target_arch files. currently
> >>> it's 13. But after these
> >>
> >> That's not different from expanding the macro which would touch the sa=
me
> >> files.
> >>
> >>> changes, there will be much more usage on it, and if we want to add
> >>> more parameters or attributes
> >>> to it, it will be a new tree-wide change.
> >>
> >> Do you expect to need more parameters? Can't you add them at once then=
?
> >>
> >>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
> >>> explicit defined for
> >>> DEFINE_TYPES
> >>
> >> My point is that keeping the boiler plate as little as possible makes =
the
> >> code more readable. DEFINE_TYPES hides some of the boiler plate,
> >> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would exp=
ose
> >> some even if it's better than no macro at all.
> >>
> >> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED t=
hat
> >> need to be added?
> >
> > Hi BALATON
> > the things we faced is we first is to add TypeInfo::is_available parame=
ter to
> > DEFINE_MACHINE_EXTENDED, and have more usage of it.
> > Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED,=
 this is
> > a prepare to remove TypeInfo::is_available parameter from
> > DEFINE_MACHINE_EXTENDED,
> >
> > And finally, once all usage of TypeInfo::is_available can be replaced w=
ith
> > targets:uint64_t, then we finally need to remove
> > TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
>
> Is there a way to avoid the temporary is_available churn and introduce th=
e
> targets:uint64_t right away? (I'm not following this so I don't really
> know what you're talking about just looks like there's some churn here
> which might be good to awoid anyway independent of these macros.)
>
> > That's what I am facing now. And the explicit
> > static const TypeInfo xxx_machine_typeinfo =3D {
> >    .name       =3D MACHINE_TYPE_NAME("xxx"),
> >    .parent     =3D TYPE_MACHINE,
> >    .class_init =3D xxx_machine_class_init,
> > };
> >
> > Will help me avoid the issue. And I think this is a little boilerplate
> > and very explicit.
>
> That's not all DEFINE_MACHINE hides though. It's longer with .abstract,
> .secure and .iterfaces plus the machine initfn that would also need to be
> expanded if you used DEFINE_TYPES.
>
> Is this conversion needed for all machines using all DEFINE_MACHINE

At the end, only "none" machine do not have targets parameter or
(QEMU_ARCH_ALL), as that's the sole
machine that supports all targets.

> variants or only some of them? If the latter why not convert those to




> DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed with
> other wrappers passing a default value without needing a new parameter.
> That does not work if all machines need to do this but even then, keeping
> the macro and adding a new required parameter is better in my opinion as
> it keeps boiler plate hidden.

Another option is keep DEFINE_MACHINE and introduce DEFINE_MACHINE_TARGETS
and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE for
simple case,
that is parent is TYPE_MACHINE and have no custom type and no more
attributes assigned.
DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less clear
than calling to DEFINE_MACHINE.
And if we want to set more attributes to TypeInfo, just expand it to
use type_init or DEFINE_TYPES, how about this way.

This will be something like:

#define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
    static void machine_initfn##_class_init(ObjectClass *oc, const void *da=
ta) \
    { \
        MachineClass *mc =3D MACHINE_CLASS(oc); \
        machine_initfn(mc); \
    } \
    static const TypeInfo machine_initfn##_typeinfo =3D { \
        .name       =3D MACHINE_TYPE_NAME(namestr), \
        .parent     =3D TYPE_MACHINE, \
        .class_init =3D machine_initfn##_class_init, \
    }; \
    static void machine_initfn##_register_types(void) \
    { \
        type_register_targets(&machine_initfn##_typeinfo, targets); \
    } \
    type_init(machine_initfn##_register_types)

/* Implicitly insecure */
#define DEFINE_MACHINE(namestr, machine_initfn) \
    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \

As the many call is to DEFINE_MACHINE.

And after all conversion, all existing usage of DEFINE_MACHINE will be
converted to
DEFINE_MACHINE_TARGETS.
DEFINE_MACHINE will be called for ('none') machine or future heterogeneous
machines


Either way, these patches will be dropped. We will introduce
DEFINE_MACHINE_TARGETS first.

>
> Regards,
> BALATON Zoltan
>
> >
> > And the
> >    .instance_size =3D sizeof(MachineState),
> > is indeed not needed, they sharing TYPE_MACHINE's sizeof(MachineState)
> > is enough.
> > Even though DEFINE_MACHINE expands to .instance_size =3D
> > sizeof(MachineState), and it's redundant.
> > So I think convert to DEFINE_TYPES would be a good alternative to this
> > issue, less boilerplate(not none)
> > And dealt with the issue we faced.
> >
> > What do you think about this idea, BALATON
> >
> >>
> >> Regards,
> >> BALATON Zoltan
> >
> >
> >
> >



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 03:07:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 03:07:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467644.1676709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNiO7-0007KL-Dq; Mon, 02 Nov 2026 03:07:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467644.1676709; Mon, 02 Nov 2026 03:07:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNiO7-0007KE-At; Mon, 02 Nov 2026 03:07:11 +0000
Received: by outflank-mailman (input) for mailman id 1467644;
 Mon, 02 Nov 2026 03:07:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xNiO5-0007K8-MN
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 03:07:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNiO5-005dSL-3Q
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 04:07:09 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae7fe4b-8faa-0a2a0a5109dd-0a2a450beace-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 04:07:09 +0100
Received: from [209.85.208.43] (helo=mail-ed1-f43.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae7fe5d-b7e8-0a2a450b0019-d155d02becef-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 04:07:09 +0100
Received: by mail-ed1-f43.google.com with SMTP id
 4fb4d7f45d1cf-6b1ec41d8e9so2645845a12.0
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 19:07:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793588828; cv=none;
        d=google.com; s=arc-20260327;
        b=FBhl7bJf8G1pvU4BSXgo7PWDqxB3y0yxk0zlyBEY8751wdjoOuUx0YEBXfAMBDH3Gz
         bYOZc7OzJTaI+lWPoI5Z5lyj9yIkzV1CAD1b8yBPH6WLfIi4+zUNX4ks+2hdlefAdPXt
         UepXdxEt+IrS+F2QAqyxMO6qN633pVbrxYAhuLMnJOnYCmS1b1q4B6+I3Fa8wKWtZWwh
         NzimjRf2/AO9Y19FJZ8yS1XOAKPB0iJknL8Sfz5EEZuofDjh1hkSLqsK5/DhFQVTJ2iJ
         XOy65fxBn9ZgOqLTbCiWk1+S9+1he3+mMYl5lW1Deqb+Gdd110xCtMO8vDf/sM8bl4tc
         mUMQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=Ysznio8LIhbrNhMwmFi6gLvF+hQtGM6cCyNInXytu+8=;
        fh=hV+1kDS0gEwBl16sDak6TksCXOTz7tCyjbRnw66lSDM=;
        b=J//weP2h+vtfAvPtKINcpzkwfwwXe8SLVCmeqFF/AZyEa2L6P3mQ9DDgoRpb1JfrDR
         TVd4uJsOaabhfWZiflrYVPRRi3RZcYb7Yc8OYe8f8aeej0JQSwyicyTzRjyccifXlZvy
         g3VAkPiH5dR7AcCG4N6oT3LSkCk/R3+t3MMSMy7g0YIJk50UJmgEaGfkYg0IJiKw7D/q
         89AezprBhaVE9m88pXP1SjxMludb5XYal1zTpoVOqPvrO70yegA5PFxMjNX4jMWyAFSn
         2zAOb6uQlCPjGqhmZcB0tZ5jN58qYGAA+Exfqfczf5k+63yTVpHr+nt9rGA1Gtzbqu6D
         niTw==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793588828; x=1794193628; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=Ysznio8LIhbrNhMwmFi6gLvF+hQtGM6cCyNInXytu+8=;
        b=vTrPRGb+YgfuD/4/kU8QiQoEWJmYGHXesakHrhHY/ah7n5/1n0WCJJeQLIoN0fjLjL
         jd4NCzENrBJaGZSw3m1vvYnXgbDnnjhq7waGNNJF0svoo9F6D7gldDD+6GuwCtTFRNGo
         vtG6FtW2l4iYKiBz5uCGlAHOyua0S0D/zSXgHy7ZVMvOHvk3P8NqV0WGGfafZ3gDZazT
         Yuf/CTJ5lb4GQrg3TiuBjXOGNlKHGztKbFvybHcS7OctjSS/QrFoqP9K2dFPZ4UYcuht
         BXv6A9adwR6Gyx5mdA7aoT0awZMQ0J9fHRHpNn8uaPE2WxuzgWml3lrWIV4GEu/kUF45
         1tHw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793588828; x=1794193628;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Ysznio8LIhbrNhMwmFi6gLvF+hQtGM6cCyNInXytu+8=;
        b=dIN0XNYPqR8cau1VxK62ZtsDJTEXs4x1hg5MMWU1EbsqImI6yomgSUFyramWzNnxOx
         EtR1NcmlVkaBQ2YsrxxeRKySGMDx6GKXZ4WsA5F63tmrLSuwewnh3UHl0Q1EPUMB1Wz7
         USDoIENa96QXYF8UUzD0BX8IS/7Dk7qf33IFqPM1/FjfgFYrEKJd0vb3Erggl8fdNtPj
         eAjWQNDAmnJNSTiaAwfJIFP4/1mA3XEtV/fcBiG2bEMQRsfUVF2tp6jl051GoWnNJi9I
         c7t3d33rpvLbMkmF1TTSaYwUEzh7X0gOx38Q7kC/9HaswjwYDb0fnqp2AJy7+Ww1A9hd
         k2rA==
X-Forwarded-Encrypted: i=1; AKwUvBxpx5K/OPUtzhmrpxHkxaya6wyIJO1iHbxEf+1lgdJ8hBAJyhf0JU1+An+7dfwnCeIEOxxVCsjMeLQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z++0xCibKXJhg9cA9gDCN8UZh6+rNllNho6h3qetrGW+SIpXSBP
	hkSQ6uILsL8YBUHX9VeftOGbQUpW8r85gF1GOCedhQ5ObPz/UHm3SFpJ5u7F6E+Ax7v2qYFdpCM
	Y7eAfVBiV3B5RrfJakr/lOX2/fkVqIjg=
X-Gm-Gg: AYBFou0P+Rvx26bPbFiGvCRz8KiVHH9Usbdh8eU5JJgEXOH/fawU10B9fsC1JrsA7UI
	PCUM31LnMpGXGFgnvIvlsEFYJHzQlDpZ82MGs9o/gcKYHeybriP8nv0kcywK/pFI+PxIiEhJY0D
	a5KgHYPEHClyfPZRfPxPcTGy3wDrbqvxFu3fVcxRGhRivQBvC0zXGCJkqP85kxlytM4uzB5i4EA
	uBIoycJWbZR6J0aUjd3N9u0fahHDqL6AwShHGt+pe6vaFy4lkomQ9e899gfmUWagGULRwheLOPp
	0WUxVp+u7qzJk75gJsdlepPRZy1XYPMOfkjuB7YaxKmNHObZkNDdE8o71ZxgySYN2V8NMvlclCG
	ow5cvwaktUdq169iIgbQvB9W0Pyqt+x0cO6Dv
X-Received: by 2002:a05:6402:1cc4:b0:6b1:c774:58c0 with SMTP id
 4fb4d7f45d1cf-6b4d4d812f1mr6163810a12.31.1793588828434; Sun, 01 Nov 2026
 19:07:08 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu>
In-Reply-To: <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Mon, 2 Nov 2026 11:06:55 +0800
X-Gm-Features: AclHuK8P8SDKQOupp80GFDOIHp3NTFl6EuHgXjfpXxX0vFgO-CLq7hQlTWSRT8g
Message-ID: <CAE2XoE_Nf0bpoyYuW9G_OWAx1J83iANRf_=2vr4G_BqgRZThPw@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1793588829-19EC69EA-5F3636A6/0/0
X-purgate-type: clean
X-purgate-size: 500

On Mon, Nov 2, 2026 at 4:57=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
>
> Is this conversion needed for all machines using all DEFINE_MACHINE
> variants or only some of them? If the latter why not convert those to

The is_avaiable add/remove no need all machines, only a small number of mac=
hines
need touch DEFINE_MACHINE, I'll do(expand) them when needed.

--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467439.1676768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwA-000384-Ge; Mon, 02 Nov 2026 05:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467439.1676768; Mon, 02 Nov 2026 05:50:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwA-00035n-88; Mon, 02 Nov 2026 05:50:30 +0000
Received: by outflank-mailman (input) for mailman id 1467439;
 Sun, 01 Nov 2026 20:12:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbup-0001rL-3p
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:12:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbuo-00ETjk-H1
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:12:30 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79ce6-e002-0a2a0a5209dd-0a2a450bd82a-28
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:12:30 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d2d-b7e8-0a2a450b0019-aa0a857c568d-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:12:30 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-400--bl76eGfOWKWgGNyjcKPkw-1; Sun,
 01 Nov 2026 15:12:27 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id CA7C11955BFE; Sun,  1 Nov 2026 20:12:21 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9BF59767; Sun,  1 Nov 2026 20:12:19 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 3331821E6A04; Sun, 01 Nov 2026 21:12:17 +0100 (CET)
Resent-To: pasic@linux.ibm.com, 17746591750@163.com, rathc@linux.ibm.com,
 alistair@alistair23.me, stefanb@linux.vnet.ibm.com, graf@amazon.com,
 xen-devel@lists.xenproject.org, FangSheng.Huang@amd.com, luc@lmichel.fr,
 michael.roth@amd.com, lixianglai@loongson.cn, maobibo@loongson.cn,
 pbarbuda@microsoft.com, yoshinori.sato@nifty.com, qemu-arm@nongnu.org,
 qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, john.levon@nutanix.com,
 thanos.makatos@nutanix.com, kfting@nuvoton.com, den@openvz.org,
 elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org,
 jamin_lin@aspeedtech.com, kane_chen@aspeedtech.com, palmer@dabbelt.com,
 rbolshakov@ddn.com, foss@defmacro.it, sebastian.huber@embedded-brains.de,
 fam@euphon.net, jiaxun.yang@flygoat.com, lizhijian@fujitsu.com,
 atar4qemu@gmail.com, edgar.iglesias@gmail.com, jasowangio@gmail.com,
 liwei1518@gmail.com, npiggin@gmail.com, zhangckid@gmail.com,
 titusr@google.com, wuhaotsh@google.com, arei.gonglei@huawei.com,
 berto@igalia.com, mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com,
 zhao1.liu@intel.com, its@irrelevant.dk, clg@kaod.org, conor@kernel.org,
 david@kernel.org, jic23@kernel.org, kbusch@kernel.org,
 mchehab+huawei@kernel.org, sstabellini@kernel.org,
 peter.maydell@linaro.org, richard.henderson@linaro.org,
 zhiwei_liu@linux.alibaba.com, zhenwei.pi@linux.dev, adityag@linux.ibm.com,
 alifm@linux.ibm.com, amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:12:17 +0100
Resent-Message-ID: <87a4ns1fby.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563949;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=vKGPRLwe8N/A660GwOMo/LVPqg6ViXuAqs5r5nHKGQg=;
	b=aJ5Zz5JkYru7EDBIxoXiMeoX3L+XKDkA0F1Z2nK90LKVM+M3MIFHylxt2lhyUQKXcoAzkU
	HzZN/55ZsAmvOzSgKeej8F4Z4jwG/HUj67OFkUXSat4ooZ3c0qEloY1dQwjTyQxBZvMYt+
	FBXjzLzKjvaC5r7iTELUvaxQIaZOVQE=
X-MC-Unique: -bl76eGfOWKWgGNyjcKPkw-1
X-Mimecast-MFC-AGG-ID: -bl76eGfOWKWgGNyjcKPkw_1793563943
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 64/65] qom: use QAPITypeInfo in object_property_get_enum
In-Reply-To: <20261020-qom-qapi-v7-64-431a86b02b58@redhat.com>
 (=?utf-8?Q?=22Marc-Andr=C3=A9?=
	Lureau"'s message of "Tue, 20 Oct 2026 14:46:21 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-64-431a86b02b58@redhat.com>
Date: Sun, 01 Nov 2026 17:15:34 +0100
Message-ID: <87mrrs7ck9.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 45
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: MOEA4mqvZfScEFj3dWl589lfUyAOKio7UscmFtsO5Es_1793563943
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1793563950-AA4DB9EA-C113E0E9/0/0
X-purgate-type: clean
X-purgate-size: 1493

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> The typename parameter becomes a QAPITypeInfo pointer, and the
> validation compares prop->qapi_type against it instead of matching
> prop->type strings.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>

[...]

> diff --git a/qom/object.c b/qom/object.c
> index 791d981dc689..40b569d4d574 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1775,7 +1775,7 @@ uint64_t object_property_get_uint(Object *obj, cons=
t char *name,
>  }
> =20
>  int object_property_get_enum(Object *obj, const char *name,
> -                             const char *typename, Error **errp)
> +                             const QAPITypeInfo *type_info, Error **errp=
)
>  {
>      char *str;
>      int ret;
> @@ -1785,10 +1785,10 @@ int object_property_get_enum(Object *obj, const c=
har *name,
>          return -1;
>      }
> =20
> -    if (!g_str_equal(prop->type, typename)) {
> +    if (prop->qapi_type !=3D type_info) {
>          error_setg(errp, "Property %s on %s is not '%s' enum type",
> -                   name, object_class_get_name(
> -                       object_get_class(obj)), typename);
> +                   name, object_class_get_name(object_get_class(obj)),
> +                   type_info->name);

How can this happen?  Or is it a programming error?

>          return -1;
>      }
> =20

[...]



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467441.1676780 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwB-0003LT-AN; Mon, 02 Nov 2026 05:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467441.1676780; Mon, 02 Nov 2026 05:50:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwA-0003Jc-Qe; Mon, 02 Nov 2026 05:50:30 +0000
Received: by outflank-mailman (input) for mailman id 1467441;
 Sun, 01 Nov 2026 20:13:06 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbvO-0001rs-87
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:13:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbvN-002O05-E2
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:13:05 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d4b-2eae-0a2a0a5409dd-0a2a450bce48-18
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:13:05 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d50-b7e8-0a2a450b0019-aa0a817c81d3-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:13:05 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-NHSE1nS8MaKM2Lkt4h6T7g-1; Sun,
 01 Nov 2026 15:12:59 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 3C6351954B0B; Sun,  1 Nov 2026 20:12:52 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 369CF1800446; Sun,  1 Nov 2026 20:12:51 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id D8DE121E6A04; Sun, 01 Nov 2026 21:12:48 +0100 (CET)
Resent-To: 17746591750@163.com, alistair@alistair23.me, graf@amazon.com,
 FangSheng.Huang@amd.com, michael.roth@amd.com, jamin_lin@aspeedtech.com,
 kane_chen@aspeedtech.com, palmer@dabbelt.com, rbolshakov@ddn.com,
 foss@defmacro.it, sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 pasic@linux.ibm.com, its@irrelevant.dk, rathc@linux.ibm.com, clg@kaod.org,
 stefanb@linux.vnet.ibm.com, conor@kernel.org,
 xen-devel@lists.xenproject.org, david@kernel.org, luc@lmichel.fr,
 jic23@kernel.org, lixianglai@loongson.cn, maobibo@loongson.cn,
 pbarbuda@microsoft.com, yoshinori.sato@nifty.com, qemu-arm@nongnu.org,
 qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, john.levon@nutanix.com,
 thanos.makatos@nutanix.com, kfting@nuvoton.com, den@openvz.org,
 elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org, kbusch@kernel.org,
 mchehab+huawei@kernel.org, sstabellini@kernel.org,
 peter.maydell@linaro.org, richard.henderson@linaro.org,
 zhiwei_liu@linux.alibaba.com, zhenwei.pi@linux.dev, adityag@linux.ibm.com,
 alifm@linux.ibm.com, amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:12:48 +0100
Resent-Message-ID: <875wyg1fb3.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563984;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=GTF9/Bs8O74QIWLz9nNcAwYctE+VbuxRb66ECG/NONE=;
	b=R+Je2LjwOGdkicY3WgGYulkAMJyIllEV60lhxxLG5iBtnTuNMk7sfD3ueiHxE0U8cFgnQF
	n4Pmc/kghBapaOZwZKt8+QAwviC7Wd5Ih77Atzff1hg+iZWgtyVw5Kcx59eW5REEGvhlB0
	OBqyQSivPe77ijescIod8r1qwZt/yQU=
X-MC-Unique: NHSE1nS8MaKM2Lkt4h6T7g-1
X-Mimecast-MFC-AGG-ID: NHSE1nS8MaKM2Lkt4h6T7g_1793563975
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 07/65] qapi: add QAPITypeInfo struct definition
In-Reply-To: <20261020-qom-qapi-v7-7-431a86b02b58@redhat.com>
 (=?utf-8?Q?=22Marc-Andr=C3=A9?=
	Lureau"'s message of "Tue, 20 Oct 2026 14:45:24 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-7-431a86b02b58@redhat.com>
Date: Sun, 01 Nov 2026 17:19:49 +0100
Message-ID: <87ik2g7cd6.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 57
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: KmQ7BtBBZyfMyQTyR_hELU1aXmK6Glp3MEAIHLvFI2w_1793563975
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1793563985-A8AC89EA-BE1114CB/0/0
X-purgate-type: clean
X-purgate-size: 2152

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Introduce a minimal struct that pairs a QAPI type's internal name with
> its "masked" introspection name. Generated constants of this type will
> let QOM property registration carry a reliable reference to the QAPI
> schema and possibly other associated data.
>
> The fields are populated in following commits.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qapi/qapi-type-info.h | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>
> diff --git a/include/qapi/qapi-type-info.h b/include/qapi/qapi-type-info.=
h
> new file mode 100644
> index 000000000000..6a6355568325
> --- /dev/null
> +++ b/include/qapi/qapi-type-info.h
> @@ -0,0 +1,31 @@
> +/*
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef QAPI_TYPE_INFO_H
> +#define QAPI_TYPE_INFO_H
> +
> +#include "qapi/util.h"
> +
> +/**
> + * QAPITypeInfo - QAPI type metadata
> + *
> + * @name: QAPI type name (e.g. "str", "OnOffAuto", "int32List").
> + *        QOM uses this as the property type string.
> + * @masked_name: Name of the type in the QAPI introspection schema, assi=
gned by
> + *        scripts/qapi code generator (e.g. "368").
> + * @lookup: QEnumLookup for this type, or NULL for non-enum types.
> + *        visit_type_enum(), qapi_enum_parse(), and qapi_enum_lookup()
> + *        all rely on it.
> + * @list: The list-type counterpart, or NULL if none exists.
> + *        str_type_info.list points to strList_type_info.  qdev array
> + *        properties follow this to find the list type for their element=
.
> + */
> +typedef struct QAPITypeInfo {
> +    const char *name;
> +    const char *masked_name;
> +    const QEnumLookup *lookup;
> +    const struct QAPITypeInfo *list;
> +} QAPITypeInfo;
> +
> +#endif /* QAPI_TYPE_INFO_H */

As far as I can tell, @name is used outside tests only for an error
message in object_property_get_enum(), and I'm not sure that error makes
sense.  Observation, not a demand.



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467431.1676742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002cP-6F; Mon, 02 Nov 2026 05:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467431.1676742; Mon, 02 Nov 2026 05:50:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002aO-Uq; Mon, 02 Nov 2026 05:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1467431;
 Sun, 01 Nov 2026 20:10:07 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbsV-0001hi-Il
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:10:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbsU-007BZx-Ov
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:10:06 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79c9c-bab6-0a2a0a5309dd-0a2a4505b6f4-2
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:10:06 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79c9d-4cb1-0a2a45050019-aa0a857ca2c7-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:10:06 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-612-urAbHKg2Pm61HrOGJHCLTg-1; Sun,
 01 Nov 2026 15:10:00 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5AA941954AE2; Sun,  1 Nov 2026 20:09:55 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9BC5C30002CB; Sun,  1 Nov 2026 20:09:52 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 46A7D21E6A04; Sun, 01 Nov 2026 21:09:50 +0100 (CET)
Resent-To: 17746591750@163.com, alistair@alistair23.me, graf@amazon.com,
 FangSheng.Huang@amd.com, michael.roth@amd.com, jamin_lin@aspeedtech.com,
 kane_chen@aspeedtech.com, palmer@dabbelt.com, rbolshakov@ddn.com,
 foss@defmacro.it, sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, pasic@linux.ibm.com,
 zhao1.liu@intel.com, rathc@linux.ibm.com, its@irrelevant.dk,
 stefanb@linux.vnet.ibm.com, clg@kaod.org, xen-devel@lists.xenproject.org,
 conor@kernel.org, luc@lmichel.fr, david@kernel.org,
 lixianglai@loongson.cn, maobibo@loongson.cn, pbarbuda@microsoft.com,
 yoshinori.sato@nifty.com, qemu-arm@nongnu.org, qemu-block@nongnu.org,
 qemu-devel@nongnu.org, qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org, john.levon@nutanix.com, thanos.makatos@nutanix.com,
 kfting@nuvoton.com, den@openvz.org, elena.ufimtseva@oracle.com,
 jag.raman@oracle.com, daniel.barboza@oss.qualcomm.com,
 philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com,
 phil@philjordan.eu, tangtao1634@phytium.com.cn,
 chao.liu@processmission.com, jiri@resnulli.us, sam@rfc1149.net,
 anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org, jic23@kernel.org,
 kbusch@kernel.org, mchehab+huawei@kernel.org, sstabellini@kernel.org,
 peter.maydell@linaro.org, richard.henderson@linaro.org,
 zhiwei_liu@linux.alibaba.com, zhenwei.pi@linux.dev, adityag@linux.ibm.com,
 alifm@linux.ibm.com, amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:09:50 +0100
Resent-Message-ID: <87qzh41fg1.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563805;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=qHNPbSyXJvJZt0TG2P3jFllZE/LiMl2regrSv48HBo0=;
	b=CX6vUGrlA7vcWq8HFMbWdemg6/78vfZwykoz56WcyGXXZSjq3/dDuH69O/ga44Em3BnYI4
	ys0yKmLqZYfiDRUfAttIdQhRnFuIR1YcbQekHBqqGX6htwJzBBjn2YpjsGhjLIbaFkUNJx
	W4kaVZKMVYVQWAKLo9ygtt3EvZwKmkY=
X-MC-Unique: urAbHKg2Pm61HrOGJHCLTg-1
X-Mimecast-MFC-AGG-ID: urAbHKg2Pm61HrOGJHCLTg_1793563796
From: Markus Armbruster <armbru@redhat.com>
To: Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,  =?utf-8?Q?Marc-Andr=C3=A9?=
 Lureau
 <marcandre.lureau@redhat.com>,  qemu-devel@nongnu.org,  Michael Roth
 <michael.roth@amd.com>,  John Snow <jsnow@redhat.com>,  Peter Maydell
 <peter.maydell@linaro.org>,  Mauro Carvalho Chehab
 <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Kostiantyn Kostiuk <kkostiuk@redhat.com>,  Eric Blake
 <eblake@redhat.com>,  David Hildenbrand <david@kernel.org>,  Igor Mammedov
 <imammedo@redhat.com>,  "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
  Jason Wang <jasowangio@gmail.com>,  Marcelo Tosatti
 <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto Garcia
 <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 54/65] qdev: adjust PciDevfn declared type
In-Reply-To: <auNiLX-dsm8XsFG-@redhat.com> ("Daniel P. =?utf-8?Q?Berrang?=
 =?utf-8?Q?=C3=A9=22's?= message of
	"Thu, 29 Oct 2026 15:11:41 +0000")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-54-431a86b02b58@redhat.com>
	<atsxLV5YZo8dr-8G@redhat.com>
	<CAMxuvazd7G_NBOM_c6BxZn5PFSw=XQUHueHqBoQQfpzPPgi9qA@mail.gmail.com>
	<87zevz5h4k.fsf@pond.sub.org> <auC-ilqUJq27neSR@redhat.com>
	<87o6ce47rr.fsf@pond.sub.org> <auNiLX-dsm8XsFG-@redhat.com>
Date: Fri, 30 Oct 2026 10:21:05 +0100
Message-ID: <87o6cba6im.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 146
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: ktf0LKJpJ6LlQEjLHCXhS63QTgC3aZ5Jj7mo8bVSFg4_1793563796
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c201ff/1793563806-71CA82A1-86FE6A8C/0/0
X-purgate-type: clean
X-purgate-size: 5941

Daniel P. Berrang=C3=A9 <berrange@redhat.com> writes:

> On Wed, Oct 28, 2026 at 08:13:44AM +0100, Markus Armbruster wrote:
>> Daniel P. Berrang=C3=A9 <berrange@redhat.com> writes:
>>=20
>> > On Tue, Oct 27, 2026 at 03:54:03PM +0100, Markus Armbruster wrote:
>> >> Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:
>> >>=20
>> >> > Hi
>> >> >
>> >> > On Fri, Oct 23, 2026 at 2:04=E2=80=AFPM Daniel P. Berrang=C3=A9 <be=
rrange@redhat.com> wrote:
>> >> >>
>> >> >> On Tue, Oct 20, 2026 at 02:46:11PM +0400, Marc-Andr=C3=A9 Lureau w=
rote:
>> >> >> > PciDevfn is a bit special, since it accepts integer and string a=
s
>> >> >> > setter, but only output integer as getter.
>> >
>> > snip
>> >
>> >> >                                                       But I agree w=
e
>> >> > could do better.
>> >> >
>> >> > There are multiple options. We could keep declaring the property as
>> >> > str instead. In this case, the getter should probably return a stri=
ng
>> >> > for consistency and correctness. This might surprise some existing
>> >> > users though.
>> >>=20
>> >> I.e. ditch numeric suppport for numeric addresses, right?
>> >>=20
>> >> Incompatible change.  Do we care?
>> >>=20
>> >> If we don't, we should be honest about it and mark qom-get unstable.
>> >>=20
>> >> > We could introduce new properties like `devfn-str` and `devfn-int`
>> >> > that alias the same value.
>> >>=20
>> >> Compatibility break.  If breaking compatibility is okay, I'd rather u=
se
>> >> the opportunity to get rid of cleverness, and go with your first opti=
on.
>> >>=20
>> >> > We could also introduce a new structured QAPI type.
>> >>=20
>> >> What kind of type do you have in mind?
>> >
>> > IMHO the root cause design flaw here was to overload 'addr' as a
>> > way to set both the slot number and function number, as using
>> > one property for two pieces of data is a well known anti-pattern
>> > we caution against.
>> >
>> > IOW, we should have had 'slot' and 'function' as separate properties
>> > from the start.
>>=20
>> Fair.
>>=20
>> Our modeling of PCI is old and weird.
>>=20
>> What we call "pci-device" isn't a device, it's a function, where
>> function 0 sort of stands in for the device.
>
> Mmm, yes, interesting way of looking at it.
>
>> Its "addr" isn't a PCI address, it's the address of the function on its
>> PCI bus, i.e. the tail of a PCI address.
>>=20
>> > From a CLI POV, we could easily change 'addr' to mean only the slot
>> > number, since it is always parsed in string format without the
>> > magic (slot << 4) | function encoding. Then add a 'function' prop
>>=20
>> In CLI, HMP and QMP string (not integer), value "5" is shorthand for
>> "5.0", and means device 5, function 0.
>>=20
>> We could deprecate the .FN part in favor of a new property "function".
>>=20
>> Once we drop support for .FN from "addr", its name becomes even more
>> misleading than it always was.
>
> Yes.
>
>> > The challenge is the impact on QMP with strict typing, as ideally
>> > int format would soley represent the slot number, but today the
>> > int format is encoded (slot << 4) | function.  So anyone relying
>> > on int format in QMP would silently have a semantic change if we
>> > altered what 'addr' means.=20
>>=20
>> That's a no-go.
>>=20
>> > Deprecating 'addr' entirely and adding brand new 'slot' and
>> > 'function' properties would be a significant disruption to
>> > a syntax which has been documented for years (decades).
>>=20
>> What about this:
>>=20
>> * No change to PCIDevice member @devfn: encodes slot and function as an
>>   integer.
>>=20
>> * New "pci-device" properties "slot" and "function".  "slot" sets just
>>   the slot bits of @devfn, and "function" sets just the function bits.
>>   Both default to zero, so specifying just "slot" gives you
>>   PCI_DEVFN(slot, 0), which makes sense.
>>=20
>> * Deprecate "pci-device" property "addr" for QMP.  We can keep it around
>>   for longer than the required grace period if that helps.
>>=20
>> * Declare it legacy for CLI and HMP, with no intent to remove it.
>
> We can't easily keep it in CLI/HMP, while removing from QMP can we ?
> As long as the property exists on the PCIDevice object, it will be
> accessible everywhere.

You're right.  The way device_add / -device work, providing "addr" just
for CLI and HMP would require gross hacks.

> Perhaps keep it relatively simple and merely deprecate the string
> syntax of 'addr' in QMP. That's the place where it is really ugy.
> Force QMP over to only the integer syntax for 'addr', and leave
> CLI/HMP accepting the (optionally dotted) string syntax.
>
> Mgmt apps like libvirt will have to adapt. Tedious, but actually
> quite simple compared to most deprecations, as the integer syntax
> can already be used with all historical QEMU versions in QMP that
> mgmt apps ever need to deal with. They can unconditionally change
> their code to int syntax and not worry about old/new QEMUs at all.

Yes, but if management applications have to adapt anyway, why not use
the opportunity to adapt to the interface we actually want, i.e. "slot"
and "function"?

If we add "slot" and "function", then what to do about "addr"?  Options:

1. Do nothing.  We provide two interfaces for setting slot / function,
and no guidance on which to use.

2. We declare "addr" legacy, and recommend "slot" and "function".  This
tells users that using it is fine, but there's a better way.

3. We deprecate "addr" in favor of "slot and "function" without intent
to remove it.  Yes, we normally deprecate with intent to remove, but we
don't have to.

4. We deprecate "addr" with intent to remove it.  Grace period
debatable.  You argued against such a "significant disruption to a
syntax which has been documented for years (decades)."  I'm listing it
for completeness.



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467445.1676790 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwC-0003bF-2w; Mon, 02 Nov 2026 05:50:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467445.1676790; Mon, 02 Nov 2026 05:50:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwB-0003XR-JY; Mon, 02 Nov 2026 05:50:31 +0000
Received: by outflank-mailman (input) for mailman id 1467445;
 Sun, 01 Nov 2026 20:14:05 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbwL-0001uw-BE
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:14:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbwK-002OCu-OX
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:14:04 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d0c-8faa-0a2a0a5109dd-0a2a4509ddc0-44
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:14:04 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d8b-be1a-0a2a45090019-aa0a857c7775-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:14:04 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-90-zUz3wxw2MFW_-TF18iVIrQ-1; Sun,
 01 Nov 2026 15:13:57 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9C6A01800364; Sun,  1 Nov 2026 20:13:53 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D5BA37E0; Sun,  1 Nov 2026 20:13:52 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 8867121E6A04; Sun, 01 Nov 2026 21:13:50 +0100 (CET)
Resent-To: pasic@linux.ibm.com, 17746591750@163.com, rathc@linux.ibm.com,
 alistair@alistair23.me, stefanb@linux.vnet.ibm.com, graf@amazon.com,
 xen-devel@lists.xenproject.org, FangSheng.Huang@amd.com, luc@lmichel.fr,
 michael.roth@amd.com, jamin_lin@aspeedtech.com, kane_chen@aspeedtech.com,
 palmer@dabbelt.com, rbolshakov@ddn.com, foss@defmacro.it,
 sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 its@irrelevant.dk, clg@kaod.org, conor@kernel.org, david@kernel.org,
 jic23@kernel.org, kbusch@kernel.org, mchehab+huawei@kernel.org,
 sstabellini@kernel.org, peter.maydell@linaro.org,
 richard.henderson@linaro.org, zhiwei_liu@linux.alibaba.com,
 zhenwei.pi@linux.dev, adityag@linux.ibm.com, alifm@linux.ibm.com,
 amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com, lixianglai@loongson.cn, maobibo@loongson.cn,
 pbarbuda@microsoft.com, yoshinori.sato@nifty.com, qemu-arm@nongnu.org,
 qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, john.levon@nutanix.com,
 thanos.makatos@nutanix.com, kfting@nuvoton.com, den@openvz.org,
 elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:13:50 +0100
Resent-Message-ID: <87wlqwz4w1.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793564043;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=dG6QdUgPpDE3LmNNjTQwdz8vTAxBziYTzulA/MP9vJ8=;
	b=i7pWjGsL4BiGUHnTjqIz4DcWaxIo7PlE0LWJwgAdJGDun1Juzf8uYCi7M9rtXDo7A48wAi
	jGT/H7h/TNoRzmoeK0FamZ1wItUul171G5LZGRKHlKbeAZDi3RrQqrtUqty0m4uUcPd/Wt
	YTXT0jc7j2/JWXo2FirRg4/BN29orbc=
X-MC-Unique: zUz3wxw2MFW_-TF18iVIrQ-1
X-Mimecast-MFC-AGG-ID: zUz3wxw2MFW_-TF18iVIrQ_1793564033
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Markus Armbruster <armbru@redhat.com>,  Michael
 Roth <michael.roth@amd.com>,  John Snow <jsnow@redhat.com>,  Peter Maydell
 <peter.maydell@linaro.org>,  Mauro Carvalho Chehab
 <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 44/65] hw/nvdimm: convert UUID property to QAPI-aware
 registration
In-Reply-To: <20261020-qom-qapi-v7-44-431a86b02b58@redhat.com>
 (=?utf-8?Q?=22Marc-Andr=C3=A9?=
	Lureau"'s message of "Tue, 20 Oct 2026 14:46:01 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-44-431a86b02b58@redhat.com>
Date: Sun, 01 Nov 2026 18:39:55 +0100
Message-ID: <871p9478no.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 91
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: fRcQlqkfHrErry8Nnrn4-ZJxVXHk7asxQJAr1bI1FpA_1793564033
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1793564044-BCAC8034-980AA31F/0/0
X-purgate-type: clean
X-purgate-size: 3079

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Add a QemuUUID_type_info and use object_property_add_qapi() instead of
> object_property_add() for the nvdimm UUID property.
>
> The type info is defined manually in uuid.c rather than generated,
> since QAPI does not yet support string typedefs. An alternative would
> be to extend the QAPI schema language with a 'typedef' construct
> (e.g. { 'typedef': 'UUID', 'data': 'str' }), which would let the
> generator produce the type info, C typedef, and introspection entry
> automatically.
>
> Alternatively, the exposed type being a string, we could change the
> property to be str_type_info.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/mem/nvdimm.c     | 4 ++--
>  include/qemu/uuid.h | 4 ++++
>  util/uuid.c         | 5 +++++
>  3 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c
> index 123ddc938546..b7ccb5c93678 100644
> --- a/hw/mem/nvdimm.c
> +++ b/hw/mem/nvdimm.c
> @@ -104,8 +104,8 @@ static void nvdimm_init(Object *obj)
>                               nvdimm_get_label_size, nvdimm_set_label_siz=
e, NULL,
>                               NULL);
> =20
> -    object_property_add(obj, NVDIMM_UUID_PROP, "QemuUUID", nvdimm_get_uu=
id,
> -                        nvdimm_set_uuid, NULL, NULL);
> +    object_property_add_qapi(obj, NVDIMM_UUID_PROP, &QemuUUID_type_info,
> +                             nvdimm_get_uuid, nvdimm_set_uuid, NULL, NUL=
L);
>  }
> =20

Let's pass &str_type_info, like the next patch does, because ...

>  static void nvdimm_finalize(Object *obj)
> diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
> index 869f84af09dd..ed0c62327d4d 100644
> --- a/include/qemu/uuid.h
> +++ b/include/qemu/uuid.h
> @@ -16,6 +16,8 @@
>  #ifndef QEMU_UUID_H
>  #define QEMU_UUID_H
> =20
> +#include "qapi/qapi-type-info.h"
> +
> =20
>  /* Version 4 UUID (pseudo random numbers), RFC4122 4.4. */
> =20
> @@ -99,4 +101,6 @@ QemuUUID qemu_uuid_bswap(QemuUUID uuid);
> =20
>  uint32_t qemu_uuid_hash(const void *uuid);
> =20
> +extern const QAPITypeInfo QemuUUID_type_info;
> +
>  #endif
> diff --git a/util/uuid.c b/util/uuid.c
> index 234619dd5e69..363a03051aba 100644
> --- a/util/uuid.c
> +++ b/util/uuid.c
> @@ -17,6 +17,11 @@
>  #include "qemu/uuid.h"
>  #include "qemu/bswap.h"
> =20
> +const QAPITypeInfo QemuUUID_type_info =3D {
> +    .name =3D "QemuUUID",
> +    .masked_name =3D "str",
> +};
> +

... the only difference to str_type_info is @name.

In v7, @name is used as value of ObjectPropertyInfo /
ObjectPropertyValue member @type.  Your manual QAPITypeInfo lets you
preserve the value of @type.

It isn't used that way v8 (which I'll post real soon now).  It preserves
@type values differently.  The problem discussed in the commit message
doesn't exist then, so I'll cut it some.

>  void qemu_uuid_generate(QemuUUID *uuid)
>  {
>      int i;



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467551.1676802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwC-0003nE-QU; Mon, 02 Nov 2026 05:50:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467551.1676802; Mon, 02 Nov 2026 05:50:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwC-0003j6-At; Mon, 02 Nov 2026 05:50:32 +0000
Received: by outflank-mailman (input) for mailman id 1467551;
 Mon, 02 Nov 2026 01:43:12 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <wujian.sun_1@nxp.com>) id 1xNh4p-00016e-SH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 01:43:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNh4o-007jDX-QW
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 02:43:10 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <wujian.sun_1@nxp.com>)
 id 6ae7eaae-2eae-0a2a0a5409dd-0a2a450789f4-0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 02:43:10 +0100
Received: from [52.101.69.4]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <wujian.sun_1@nxp.com>)
 id 6ae7eaae-b4ea-0a2a45070019-34654504877e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 02:43:10 +0100
Received: from DB9PR04MB8089.eurprd04.prod.outlook.com (2603:10a6:10:247::12)
 by PA1PR04MB11506.eurprd04.prod.outlook.com (2603:10a6:102:4df::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 01:43:08 +0000
Received: from DB9PR04MB8089.eurprd04.prod.outlook.com
 ([fe80::ecef:c51b:bc52:a368]) by DB9PR04MB8089.eurprd04.prod.outlook.com
 ([fe80::ecef:c51b:bc52:a368%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 01:43:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=nxp.com header.i="@nxp.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=MrZQ+XvbojNOWpQpM5r36bfNkgCSWgrav8pR0lMJU4cL2cUNd1aCTph4unAG8F/ao0IXAleKRtqXVgETV2KKYo7+509F5nLibzwXYu5Ftk9ZVaH980B840o08a8bajBdnekLMLE0/BdxVi1U5B0QeJlRLtzLNm4cZTZ5t05OAAn5WKlCtStCbAzL7LMNu9COWZXvxAQABxX2013sI2myh0WKDaoUmzMgGeyRBge3x9aDlRUM0rgBqRI0lB227qejh3gsdbJQmmkGMkPIvhYXs9DqXqG0SDkokJ2nXLxfXLNup65OSB/drK+6gdVVwg274tMnY7wGLd72RdiZ0uIqmg==
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=awn9Gaqe17d2N8U97NBuc8wN/qg9ry5iidSaO97IP10=;
 b=kecpcaFUIbObpgSzCiuNDf/M74igsElv+tnG/P6dh7S+EFHzJafK3a0ZsMsxTqS7YoCThR3teDFFZ5Mfd1pIa02rmdMKr0Fu4m6VL5XtdNFTYjYKxM7Fv2eFr4luCp97ZsM8grPdJ76FpJMK8x/4PYnZ9h41CLKEpe7luNNddsrr+uupHe1I6ZlCgSLrudbqs4osruEQMRVhdgWUEWYGh3HydGL6Ua8LXkDIkP8kvgAkcnU89+uNQUb1jsrzNN7PhIBOMOKCPW+UONKFGXe6VfxiU7rdbIqXme19RC6GTfCGQvff4DsLLVaxomNrDH480/1CgRrysjh4ezEHLQhIug==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=awn9Gaqe17d2N8U97NBuc8wN/qg9ry5iidSaO97IP10=;
 b=OVemDobiQKO6VwFcm3nnjvS0x1niqE+rAFrQt+A2Y6/63oATlWQ+esz+Q+8jpE9g8cK/2fvLFV4wCpYR8vDXIwbOk2JzD5ayk8uSJLSs+I/ATTwCX8cnC+zYU0GAJai4ZSpw8JnqBrNfZ2UOMqaseIoKBl5PA1avUscoBO3uAPr4fMn4KzMHATz18qZWEaCWitGnwafvxws0XXBCJsBEwmkTCEKfLlFfw4PuCvCzO+8TH9jtGf8dMR6Gs9stVkNaq7ZElbnHG9M1Vv3eS6J9NtfbMyI/whOvWSGDxiB94tkLnbV+hwOtGIQ9rTt0Mf6812bkYTs961GU6GAyXdxfxg==
From: Wujian Sun <wujian.sun_1@nxp.com>
To: Xianzhong Li <xianzhong.li@nxp.com>, Peng Fan <peng.fan@nxp.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Xen decoding instruction 0xad400420 is not supported
Thread-Topic: Xen decoding instruction 0xad400420 is not supported
Thread-Index: Ad1qaTNAQfsKzXoyQNSl3EqPA7pzrQ==
Date: Mon, 2 Nov 2026 01:43:07 +0000
Message-ID:
 <DB9PR04MB80894CBBF23E18E68E2A798DF56A2@DB9PR04MB8089.eurprd04.prod.outlook.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
 MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_Enabled=True;MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_SiteId=686ea1d3-bc2b-4c6f-a92c-d99c5c301635;MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_SetDate=2026-10-30T09:30:38.0000000Z;MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_Name=NXP
 Confidential;MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_ContentBits=3;MSIP_Label_0d9c909a-577b-4ba2-96de-69ada94b137a_Method=Standard
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DB9PR04MB8089:EE_|PA1PR04MB11506:EE_
x-ms-office365-filtering-correlation-id: 9409d4a2-9a33-4d20-240e-08df3882a553
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|19092799006|23010399003|1800799024|366016|376014|261021121427099003|261022075727099003|261009223027099003|38070700021|261026121527099003|11063799006|10067099003|56012099006|18002099003|13003099007|8096899003|3023799007;
x-microsoft-antispam-message-info:
 MWT61pTAIJ7ZJ4+8KaMMC+DHCd8iNNBj10tOE9DQyNH2eaSjK6Y21poHM3yhYgMkBSLo4w00/53eIyZDp20dEfcn5amr9zAb0ja/sep6I85I3OMeXg2HRwK+ymeP2NX+eLMzPdDItcoaYJf/YGr8cZKUpxEbyu/nSRZPQG3U0pLuJWPBWgLL+dR/x6pStgTg0iVquO/pj1HYa4omwxHNq/pGKmz9xBmZVDot0BOJdxVdYW2NROs5wF1AbU/KJ/ll2DO2ZFo1inGdhYp3HKXvhm8I8TdxRD6Pq+uBDP7agqHOkF3gCSgmEr/Wzo5g6dHjQYAkP6TJoOCQpea9+/+t/p1YyjKGXRox1O/9BnwQd5lSYMp3PrN5epWCKQQQvk7OeCxUq7s0RGUNgSng7BoW0SkC0UiYGLUX7Y7Tj4aGhBT/KIlc5LIKJHjSDMJtvDv2sR+/c4lWMisGGDqQNfXKyDi9tDu81vA5i4Iqd7PS3AX2vGYrTdBMZcPFx8ZOFug8Kjgd0XQ1ykBXSx/gihhJs8+mBUnheK9ha4R58Y28XxM0FXfZRt4Mt5VACNGHHzBtZmjxGd/JnQNCERdQE2ZomhwbDWQ2SyOHVI9CU38KaqERKNLttQyiprrqtwIHX5DrUZ0+nbj0impJ2IMa1vJi+CJQeF4zN6Z7cIYu6a94iv4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR04MB8089.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(23010399003)(1800799024)(366016)(376014)(261021121427099003)(261022075727099003)(261009223027099003)(38070700021)(261026121527099003)(11063799006)(10067099003)(56012099006)(18002099003)(13003099007)(8096899003)(3023799007);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?8qX27dhxbEKnBFBmRF7dsXh0D/0Or80sszgZnljy0yxfjxr292uzj/9dNA88?=
 =?us-ascii?Q?0+LrfqVivb2v0A4x+alkGOppAKrvL68hyKdQ7pdCthQC/CuHlfcTs+G6Pr/m?=
 =?us-ascii?Q?F1sH0gtGYG7zcf0oOUxFST57Vd1m9skSu27xke/yR/l2/rQKJvr33m4z6KkZ?=
 =?us-ascii?Q?7grEYBslFr80HeKTRUMON/xF5dFdC/gjKEnjhIFDFv1Zd4MMWrxXFh2EzCjM?=
 =?us-ascii?Q?zS3vjaTPiZczxjIMREKQFp4MBrTYzttxprdoQ+sZdfcgL0V6NQQZzIqwkPxI?=
 =?us-ascii?Q?woKoeGKR+rQW61lLdj0ODkbLAy7WtpcU0jV9B41q2ixP3lg1Af8Ar1clWrfD?=
 =?us-ascii?Q?w1cOUdhfzAGNvRGqk+VEfR2TnMDGyy9YB9AR4O95AkPZNZrwcpwNwWpK3Jq/?=
 =?us-ascii?Q?FxvVmMRF7o3B0w7Wbj1ytX+d1hSa+NI2wTvN9h+WW0v8l/t2AZZ57W/DRqgi?=
 =?us-ascii?Q?ScwaDS++Y0vKiGLZz9OiYv4WoxKRrmrvvF8ZHzsYVjSuB2dh0wJYKExrE7kg?=
 =?us-ascii?Q?lZDIuL7DaJrkSB4nKBkJJG8LnOMbZ7kmY3miyvr28sERWd3b1HHnONnnV+DE?=
 =?us-ascii?Q?bmvbC611qA/fayxNoKS3MvHrEh72t83tQxvtW0nrO0wyWjU3O8DL3X8njNCb?=
 =?us-ascii?Q?4qSTo7QvdPlp4z+lxQ8ex2BIjMo9E0NK4vpM6oX1UaGPyb4766Ju8yHoTlCy?=
 =?us-ascii?Q?wUG5Fsb9jbvAwhub87NChZEFMnZPmoCS9ExUvEwh8+hbuEj9vdwAe5l3O9re?=
 =?us-ascii?Q?ZRMJYLkH6lmRoXEMMkixcWbtyvaiKio2ppx/+RYuG14aXrh5i0+DOWGuEQHL?=
 =?us-ascii?Q?h+68UUxBjRAJkrXPQU7LHogO1MWvmRxeDTRIK+EV+VUgA+fo7e1wQwfs9GpW?=
 =?us-ascii?Q?tgFsSqsgoxs9ZJwKt76Jydgs1Jh6c0NJrPu92O3ERfoLTPn7B6M2I/6V40Wr?=
 =?us-ascii?Q?1L+kvvM+Fp8CNQ0HsgfV0fPOTHgcYirHmMscIW62L3/EDjDydWYvrJ9ZG67I?=
 =?us-ascii?Q?HD9kxZQlHeivvlKwStPpcigVjf436IiF4EYJtvTHAmlFbHo9uzwnRlDm/ky3?=
 =?us-ascii?Q?HBjJnSG0WuTXppsmefLJ+GL87oh+l/2R0tWHmQaOY78SySsk2BC0UVzionS9?=
 =?us-ascii?Q?PSyRfEWurFA7nsvsm1bFad/fmfBSFDbCANnF1pm36BfvPYab/wGilk21mqub?=
 =?us-ascii?Q?z+GVswAD7fzyqe1OqJbqCs9mAqgXFugic3VvfcUx0icqzl+DnlV2kIE5oTKJ?=
 =?us-ascii?Q?gYYj7AjVRTdJEsi/o+qOqY45ZuRxNSpq92+vZnsE7DVoz2DTQjPA+X8e33qV?=
 =?us-ascii?Q?9ngUNTn/s8JaD8N/ekDkFJxgymbLpBWKAfrArXnnf1CPjtKiUOGwD3wliZY9?=
 =?us-ascii?Q?JCH8SpnBgEIlkg3BpUUEza37BhYjFxF1YKcZUqkPY9vGb4AJr/rk2DHMQvgW?=
 =?us-ascii?Q?iTpXdpfw37q+JJd01zwNHk8r7qUTZwOZ4QbAw4ySe+ZZRltEPi4YlUxH/uPs?=
 =?us-ascii?Q?vxximkgrk2MLWi7YxZzYo0/B6OfB+KMtGttWQgruWpBlpPDjzp1wnKbb17s0?=
 =?us-ascii?Q?P6xu1S4oXB0B3thkDVNbz8M6qXTZhaS+OxIxb4vz6LGU3dg15eEl3JheJQnt?=
 =?us-ascii?Q?DpysUL/h0cMpSo/SZHgi44AKFVbkYvBypWZ3RmyqjGVfUhZTIkYY3Yq1/aod?=
 =?us-ascii?Q?K44xaK/jveLmX+Xf/S1HDmZgVdzy3piZ8lFa3RiogOcILgTL?=
Content-Type: multipart/alternative;
	boundary="_000_DB9PR04MB80894CBBF23E18E68E2A798DF56A2DB9PR04MB8089eurp_"
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DB9PR04MB8089.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9409d4a2-9a33-4d20-240e-08df3882a553
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 01:43:08.0000
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 4QvzZIsjd4ZTBcz+yXZI0OCg/oFngAe18ZQWnhThyFPrdubA7qSBetAm0IizZLdjcwy65q9voLsDnAeZ6u1F8g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB11506
X-purgate-ID: tlsNG-ef75cf/1793583790-A48C9AE4-7441F605/0/0
X-purgate-type: clean
X-purgate-size: 4056

--_000_DB9PR04MB80894CBBF23E18E68E2A798DF56A2DB9PR04MB8089eurp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi everyone,
I am trying to enable virgl native drm context feature  on GPU Mali G310 wi=
th mesa panther driver.
https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1694
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/45055/commits

I tried both xen 4.21 and 4.22, but both met the below issue.  Does anyone =
have any suggestion about the issue?
(XEN) d1v0 Decoding instruction 0xad400420 is not supported
(XEN) d1v0 unhandled Arm instruction 0xad400420
(XEN) d1v0 Unable to decode instruction

Best Regards
Wujian


NXP Confidential

--_000_DB9PR04MB80894CBBF23E18E68E2A798DF56A2DB9PR04MB8089eurp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:DengXian;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Aptos;}
@font-face
	{font-family:"\@DengXian";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	font-size:12.0pt;
	font-family:"Aptos",sans-serif;
	mso-ligatures:standardcontextual;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#467886;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Aptos",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#467886" vlink=3D"#96607D" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hi everyone,<o:p></o:p></p>
<p class=3D"MsoNormal">I am trying to enable virgl native drm context featu=
re&nbsp; on GPU Mali G310 with mesa panther driver.<o:p></o:p></p>
<p class=3D"MsoNormal"><a href=3D"https://gitlab.freedesktop.org/virgl/virg=
lrenderer/-/merge_requests/1694">https://gitlab.freedesktop.org/virgl/virgl=
renderer/-/merge_requests/1694</a><o:p></o:p></p>
<p class=3D"MsoNormal"><a href=3D"https://gitlab.freedesktop.org/mesa/mesa/=
-/merge_requests/45055/commits">https://gitlab.freedesktop.org/mesa/mesa/-/=
merge_requests/45055/commits</a><o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I tried both xen 4.21 and 4.22, but both met the bel=
ow issue. &nbsp;Does anyone have any suggestion about the issue?<o:p></o:p>=
</p>
<p class=3D"MsoNormal">(XEN) d1v0 Decoding instruction 0xad400420 is not su=
pported<o:p></o:p></p>
<p class=3D"MsoNormal">(XEN) d1v0 unhandled Arm instruction 0xad400420<o:p>=
</o:p></p>
<p class=3D"MsoNormal">(XEN) d1v0 Unable to decode instruction<o:p></o:p></=
p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Best Regards<o:p></o:p></p>
<p class=3D"MsoNormal">Wujian<o:p></o:p></p>
</div>
<br>
<p style=3D"font-family:Calibri;font-size:10pt;color:#000000;margin:5pt;fon=
t-style:normal;font-weight:normal;text-decoration:none;" align=3D"Center">
NXP Confidential<br>
</p>
</body>
</html>

--_000_DB9PR04MB80894CBBF23E18E68E2A798DF56A2DB9PR04MB8089eurp_--


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467435.1676755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002ta-SF; Mon, 02 Nov 2026 05:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467435.1676755; Mon, 02 Nov 2026 05:50:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002rd-IR; Mon, 02 Nov 2026 05:50:29 +0000
Received: by outflank-mailman (input) for mailman id 1467435;
 Sun, 01 Nov 2026 20:11:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbtf-0001pY-QL
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:11:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbtf-007BcK-7B
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:11:19 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79cd0-8faa-0a2a0a5109dd-0a2a4506857a-10
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:11:19 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79ce5-195a-0a2a45060019-aa0a817c7b9b-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:11:18 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-501-dbNBgUI3NkO7qJoX7yVMQQ-1; Sun,
 01 Nov 2026 15:11:14 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 23A951800619; Sun,  1 Nov 2026 20:11:09 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D6A2730002CB; Sun,  1 Nov 2026 20:11:06 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 5DB5421E6A04; Sun, 01 Nov 2026 21:11:04 +0100 (CET)
Resent-To: pasic@linux.ibm.com, 17746591750@163.com, rathc@linux.ibm.com,
 alistair@alistair23.me, stefanb@linux.vnet.ibm.com, graf@amazon.com,
 xen-devel@lists.xenproject.org, FangSheng.Huang@amd.com,
 michael.roth@amd.com, jamin_lin@aspeedtech.com, kane_chen@aspeedtech.com,
 palmer@dabbelt.com, rbolshakov@ddn.com, foss@defmacro.it,
 sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 its@irrelevant.dk, clg@kaod.org, conor@kernel.org, david@kernel.org,
 jic23@kernel.org, kbusch@kernel.org, mchehab+huawei@kernel.org,
 sstabellini@kernel.org, peter.maydell@linaro.org,
 richard.henderson@linaro.org, zhiwei_liu@linux.alibaba.com,
 zhenwei.pi@linux.dev, adityag@linux.ibm.com, alifm@linux.ibm.com,
 amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com, luc@lmichel.fr, lixianglai@loongson.cn,
 maobibo@loongson.cn, pbarbuda@microsoft.com, yoshinori.sato@nifty.com,
 qemu-arm@nongnu.org, qemu-block@nongnu.org, qemu-devel@nongnu.org,
 qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 john.levon@nutanix.com, thanos.makatos@nutanix.com, kfting@nuvoton.com,
 den@openvz.org, elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:11:04 +0100
Resent-Message-ID: <87ik2g1fdz.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563877;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=d7M241dr+M0CEAKHzbbpskGbE8+ty5Q2vQiKfnyhvII=;
	b=CmOAScZoFkiohsaiM3dNqKC/lS8iXnZfC8yOT+ABVq6g3lhMICiXfFRjVY3yfUT5KTCu1W
	KJpZW2amuRHpIFuPYSsLI3ztqP0tqRkkzx5R9FntwRgBHIs5RCrkXt8SxiWBOW2Te3IPJQ
	6d7S25MvREGHtcFi6V0veNDFc+RfsaM=
X-MC-Unique: dbNBgUI3NkO7qJoX7yVMQQ-1
X-Mimecast-MFC-AGG-ID: dbNBgUI3NkO7qJoX7yVMQQ_1793563870
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 17/65] qom: add object_{class_}property_add_qapi_enum
In-Reply-To: <20261020-qom-qapi-v7-17-431a86b02b58@redhat.com>
 (=?utf-8?Q?=22Marc-Andr=C3=A9?=
	Lureau"'s message of "Tue, 20 Oct 2026 14:45:34 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-17-431a86b02b58@redhat.com>
Date: Fri, 30 Oct 2026 11:02:00 +0100
Message-ID: <871p97a4mf.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 126
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: qrbBaIqulz2eq8rXwVCrDM1gcXcsL_8U4Fm_aBEFxv8_1793563870
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1793563879-1EAC277B-AB7FFFF6/0/0
X-purgate-type: clean
X-purgate-size: 4497

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qom/object.h | 74 ++++++++++++++++++++++++++++++++++++++++++
>  qom/object.c         | 90 ++++++++++++++++++++++++++++++++++++++++++++++=
+++---
>  2 files changed, 159 insertions(+), 5 deletions(-)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index eb61d8842b80..e04be4caed57 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -2027,6 +2027,80 @@ ObjectProperty *object_class_property_add_enum(Obj=
ectClass *klass,
>                                      int (*get)(Object *, Error **),
>                                      void (*set)(Object *, int, Error **)=
);
> =20
> +/**
> + * struct QapiEnumProp: Descriptor for a property backed by a QAPI enum =
type
> + *
> + * Binds a QOM object property to a QAPI enum, providing automatic
> + * string<->int conversion through QAPI visitors and optional
> + * default-value initialization during object instance init.
> + *
> + * Use the QAPI_ENUM_PROP() macro to construct instances inline.
> + *
> + * @name: property name exposed on the QOM object
> + * @description: human-readable description (shown in ``-device help``, =
etc.)
> + * @default_value: initial enum value applied via @set during instance i=
nit,
> + *                 or -1 (the QAPI_ENUM_PROP default) to skip initializa=
tion
> + * @qapi_type: pointer to the generated QAPITypeInfo for the enum
> + *             (provides the string<->int lookup table)
> + * @get: getter that returns the current enum value as int, or -1 on err=
or
> + * @set: setter that receives the enum value as int; %NULL for read-only=
 props
> + */
> +typedef struct QapiEnumProp {
> +    const char *name;
> +    const char *description;
> +    const int default_value;
> +    const QAPITypeInfo *qapi_type;
> +    int (*get)(Object *, Error **);
> +    void (*set)(Object *, int, Error **);
> +} QapiEnumProp;
> +
> +#define QAPI_ENUM_PROP(...) ({                                          =
 \
> +    static const QapiEnumProp _prop =3D {                               =
   \
> +        .default_value =3D -1, __VA_ARGS__                              =
   \
> +    };                                                                  =
 \
> +    &_prop; })

This is a cute and reasonably well-known macro trick for optional
keyword arguments in C.

The example [*] below specifies all arguments.  What happens when we
omit any?  They default to zero via default initializaion, except for
.default_value, which defaults to -1.

Trap for developers: some arguments aren't actually optional!  If you
forget to specify @name or @qapi_type, the code compiles, but crashes at
run time.

Not a fan.

> +
> +/**
> + * object_property_add_qapi_enum:
> + * @obj: the object to add a property to
> + * @prop: property descriptor
> + *
> + * Add an enum property with QAPI type association.
> + *
> + * Returns: The newly added property on success, or %NULL on failure.
> + */
> +ObjectProperty *
> +object_property_add_qapi_enum(Object *obj, const QapiEnumProp *prop);
> +
> +/**
> + * object_class_property_add_qapi_enum:
> + * @klass: the class object to add a property to
> + * @prop: property descriptor
> + *
> + * Add an enum property with QAPI type association.
> + *
> + * Use the QAPI_ENUM_PROP() macro to construct the property descriptor
> + * inline. If .default_value is not set, the property is not initialized
> + * (default_value is -1). Otherwise, the setter is called with
> + * default_value during object instance init.
> + *
> + * Example::

[*]

> + *
> + *   object_class_property_add_qapi_enum(oc, QAPI_ENUM_PROP(
> + *       .name =3D "policy",
> + *       .description =3D "Set the NUMA policy",
> + *       .default_value =3D HOST_MEM_POLICY_DEFAULT,
> + *       .qapi_type =3D &HostMemPolicy_type_info,
> + *       .get =3D my_get_policy,
> + *       .set =3D my_set_policy,
> + *   ));
> + *
> + * Returns: The newly added property on success, or %NULL on failure.
> + */
> +ObjectProperty *
> +object_class_property_add_qapi_enum(ObjectClass *klass,
> +                                    const QapiEnumProp *prop);
> +
>  /**
>   * object_property_add_qapi:
>   * @obj: the object to add a property to

[...]



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467337.1676729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002Ry-Kb; Mon, 02 Nov 2026 05:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467337.1676729; Mon, 02 Nov 2026 05:50:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002QZ-FN; Mon, 02 Nov 2026 05:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1467337;
 Sun, 01 Nov 2026 16:33:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <q.h.hack.winter@gmail.com>) id 1xNYUd-0000vU-B9
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 16:33:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNYUc-008AOd-Kn
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 17:33:14 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae769c9-8faa-0a2a0a5109dd-0a2a4508e26e-4
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:33:14 +0100
Received: from [209.85.216.54] (helo=mail-pj1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae769c9-f659-0a2a45080019-d155d83694ac-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:33:14 +0100
Received: by mail-pj1-f54.google.com with SMTP id
 98e67ed59e1d1-3ac7a053626so299089a91.0
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 08:33:14 -0800 (PST)
Received: from localhost.localdomain ([113.102.236.131])
 by smtp.gmail.com with ESMTPSA id
 41be03b00d2f7-cdb0981c5desm2063394a12.27.2026.11.01.08.33.06
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Sun, 01 Nov 2026 08:33:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793550792; x=1794155592; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=N0DudzoLzvEvhmUa69QzvvAg+oRZAWzhCFZ0kBIOMZWPy+2XcLfxE77rPtN5xA7VIC
         2Jd8d8rAiUCWgA3BrZ/yWfMvcccA67SoB6Y4EPg7vW2+U6JMk9wcB5lACvtqFtRdUZ9/
         02rLUiPxdwBeajrg1gaxlq7RgFgSpMydMAXGnrXGMmxfwOTgReYzWhXh8C3tUrnONjIj
         len+rMP/436mjiEUqwqT90eOvlkTcyK5Yk5oNbOWxZ8Ryy5vTwEqCyf025gO9ZCy6zUH
         DeB8A1CxxfeGfR7+CuslyKrdVBJ/U82LlmJ56bGkUKiOQPuwtuHDxbhDMS7aykGwQP5w
         FV3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793550792; x=1794155592;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=ovaeKCFZ95DwuJTlP5mUxphnJAHJQkd6uKUDIfIU3e7f4bed4u2Rf1YnsVT60KNjc9
         xTOGZm6/xAYxSkSj/QhmukbBqkAgJ1hBSqxZT8jT2fIGaYzKNLetKmEBsI67gIQnjcHu
         bF/x8jSUXKYFdlEqk/ogu/mbIvRDp+qiwRGSJt2AK69ycdK+vdA/XxMSQJwf9mhUtrie
         PwQGCXXUoH5UxW03Kb1KPBfYNwNJjvXWXLdkA7lKQxU31USsq7NEftPKBvdXqIS3v9eT
         gPoIlv7uh88vCHw6PqNSpOIdOLQixmxrZCev24zcO/3nkUwMQbXtNEGEqM/d3u03jS9Q
         YUuQ==
X-Forwarded-Encrypted: i=1; AKwUvBxuoOmhKcGZeFrCwKy7v5Dj21CNiUCJQu8FW1RtXGcsdkfFyVso+zsTUuNtvWmzaxfuyKiwJXJ89Hg=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9dYseak/X5FQIQM3BaqGUGE+OHyz7+qNHteIU+FMYbN0H/amS7
	WfkjtLMR6BdRWfIVtbIDrjGnyHAL456Pl9rKNGU1WwOW3yxplwVfeunj
X-Gm-Gg: AYBFou2iDDpb3J7TDrvMDh0KAq/luk1XbL6QbvcBNIJEPm/wM9GZw6yE8MAsUlR0J6S
	hR/wNVaomRKO9yiApJbu7yOqZG/OzbIB40h+nRaZfnqJ6/tioK+N8iMzbEcqxwVmpHPDH7HDcjB
	W+U0/padeych0R2yEV+PwguJnuHHuSv5QpfTVs1wvNE/PDAPVkXRspBxeFJKU8lauGcBZTTybWT
	lNCZdpirLs88NFMxjxUJTwi6EGttNHWaJbnMTS1L3Xd0zUrNzttxXXdrh77p/SDPBO8httqRBjo
	u8QI1XyDqXR1SDZZiDV12VacLpgypuOKGG+D3Bv1pvcdNtMSEj/Tcyv9Z0WMkEA2ae90LbiWpUs
	UP8YjU14b3+07blZDBQZUsPmwQlLV3oobHrUZaXtvJl2SCIbR7VbfGf4fcEiodn+U3EivY+8V4K
	1gjCuDE9OXpOTvFPm8LbbmEuAE/wwQSYlipyvQwgT+1NnWz/M/HVGMVv7gw9QQ7hqL2tJVto032
	43iBFBD5PTNpekRKijlIIgP2eiQ2CgldjO7J3OCwwdJ2sJB8Rr2h5sJ9zVYbTcjAj2T+UP+T63h
	vNMtnuRhol7urIPUF1+nrMWw1/p2zwdBeh+XzXGDrZppE91KaL31PdatLVkKNoNWpkAx7HyE6kY
	fKIPJudAmRvS+XiLsSzKOdyw=
X-Received: by 2002:a17:90b:1808:b0:3ab:a188:b898 with SMTP id 98e67ed59e1d1-3ae895f8623mr10840887a91.2.1793550792550;
        Sun, 01 Nov 2026 08:33:12 -0800 (PST)
From: Qihang <q.h.hack.winter@gmail.com>
To: Juergen Gross <jgross@suse.com>,
	xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-kernel@vger.kernel.org,
	Qihang <q.h.hack.winter@gmail.com>,
	stable@vger.kernel.org
Subject: [PATCH] xen/privcmd: fix double free when an irqfd is shut down twice
Date: Mon,  2 Nov 2026 00:32:50 +0800
Message-ID: <20261101163251.55099-1-q.h.hack.winter@gmail.com>
X-Mailer: git-send-email 2.54.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793550794-DFED287B-71E345AD/0/0
X-purgate-type: clean
X-purgate-size: 3803

irqfd_deactivate() takes the irqfd off irqfds_list and queues
irqfd_shutdown().  queue_work() is not a once-only gate: it refuses to
enqueue a work item only while WORK_STRUCT_PENDING is set, and
process_one_work() clears that bit before it calls the work function.  So
nothing records that the shutdown work has already been queued, and
nothing protects the window between the start of irqfd_shutdown() and the
kfree() at its end.

Two paths call irqfd_deactivate() for the same irqfd:

  - privcmd_irqfd_deassign(), from the PRIVCMD_IRQFD_FLAG_DEASSIGN ioctl;

  - irqfd_wakeup(), with EPOLLHUP set, when the last reference to the
    eventfd file goes away, which runs wake_up_poll(&ctx->wqh, EPOLLHUP)
    from eventfd_release().

irqfds_lock serialises the two calls, but it does not make the second one
a no-op, and eventfd_ctx_fdget() takes a reference to the eventfd_ctx,
not to the struct file, so the last fd can still be closed while the
ioctl is running:

  CPU0                                 CPU1

  eventfd_ctx_fdget()
  spin_lock(irqfds_lock)
  list_del_init(&kirqfd->list)
  queue_work(&kirqfd->shutdown)        close(fd)
                                         eventfd_release()
                                           wake_up_poll(EPOLLHUP)
                                         irqfd_wakeup()
                                         spin_lock(irqfds_lock)
                                         irqfd_deactivate() again

If the work item has already started by then, its pending bit has been
cleared and the second queue_work() succeeds.  irqfd_shutdown() then runs
twice, so eventfd_ctx_remove_wait_queue(), eventfd_ctx_put() and kfree()
each hit the same object a second time; and when the second queue_work()
lands after the irqfd has been freed, the workqueue list operations write
to freed memory.

virt/kvm/eventfd.c has the same two callers and has had this guard since
the original irqfd support (721eecbf4fe99): irqfd_wakeup() calls
irqfd_deactivate() only if irqfd_is_active().  The comment there explains
why that is enough: the other side deactivates the irqfd before it takes
it off the waitqueue, and irqfd_shutdown() needs the waitqueue lock,
which this callback holds, so the irqfd cannot be freed under it.

Do the same here.  list_del_init() leaves the list head empty and the
irqfd stays off the list until kfree(), so it serves as a one-way
"active" flag.  The test is in irqfd_deactivate() rather than in
irqfd_wakeup() because privcmd_irqfd_deassign() walks irqfds_list and can
therefore never reach an inactive irqfd; only the wakeup path can, and a
single test covers both callers.

Fixes: f8941e6c4c712 ("xen: privcmd: Add support for irqfd")
Cc: stable@vger.kernel.org
Signed-off-by: Qihang <q.h.hack.winter@gmail.com>
---
 drivers/xen/privcmd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 5e56fbc934478..221b31611343e 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -901,10 +901,25 @@ struct privcmd_kernel_irqfd {
 	poll_table pt;
 };
 
+static bool irqfd_is_active(struct privcmd_kernel_irqfd *kirqfd)
+{
+	lockdep_assert_held(&irqfds_lock);
+
+	return !list_empty(&kirqfd->list);
+}
+
 static void irqfd_deactivate(struct privcmd_kernel_irqfd *kirqfd)
 {
 	lockdep_assert_held(&irqfds_lock);
 
+	/*
+	 * Both the deassign ioctl and the eventfd wakeup path can reach
+	 * this function.  list_del_init() marks the irqfd inactive, so
+	 * only the first caller may queue the shutdown work.
+	 */
+	if (!irqfd_is_active(kirqfd))
+		return;
+
 	list_del_init(&kirqfd->list);
 	queue_work(irqfd_cleanup_wq, &kirqfd->shutdown);
 }
-- 
2.54.0 (Apple Git-157)



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467334.1676723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002Nf-BK; Mon, 02 Nov 2026 05:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467334.1676723; Mon, 02 Nov 2026 05:50:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002NT-7f; Mon, 02 Nov 2026 05:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1467334;
 Sun, 01 Nov 2026 16:31:23 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <q.h.hack.winter@gmail.com>) id 1xNYSp-0000tl-Io
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 16:31:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNYSo-00213o-Od
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 17:31:22 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae768f5-bab6-0a2a0a5309dd-0a2a45058324-42
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:31:22 +0100
Received: from [209.85.216.51] (helo=mail-pj1-f51.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae76959-4cb1-0a2a45050019-d155d8339651-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:31:22 +0100
Received: by mail-pj1-f51.google.com with SMTP id
 98e67ed59e1d1-3acb1224533so366602a91.2
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 08:31:22 -0800 (PST)
Received: from localhost.localdomain ([113.102.236.131])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3ae6e944ba9sm15038585a91.8.2026.11.01.08.31.17
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Sun, 01 Nov 2026 08:31:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793550681; x=1794155481; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=MY61aasJ/D2mj0YjaIgM61I7E1yyzpNwrhKsDH9Q2kIzciSVuyMX85MxDN8UdlStBi
         sH9quG1xJM7bOPtO5DlFwMm3M9rsGmFw+LD9NX62nPgrXGUzngL5++QDjyhZgDiau0UQ
         KSVAMhSWwNM6zEwh/Ycs2zC8fRbTx1MpbNYEiuMFEgxa8u8IlDyEfmy8OpZXZ/1Z+oup
         eiQMDw9bGn5yPGPBbDtDoTEDNulDCvtz2xkeVOKjS5mf+2qxsm1KkjP/iAWnZ1IT1FtK
         U2FcSHU+2JZ8AA4pDkzTDo+dlWkCazcC3urZwl4gjXJZ2oMjYbYZtCQYn7wDtUK9a3T/
         BeRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793550681; x=1794155481;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=Qd7OS6uTm1b+z6j4JdlUbYiOBr0RAiflx3CC5aPLJj7pFvlD5PCE/9ldnY+nazpfig
         LSzT/U5BHnLlQi9a43kzoLSBfmr19oQiVYZJg2VD3i6Ef8++jvzV/AlnqNn9inYYH5Tr
         kKu3FIxPa4M0D8SqzvPoSkeYS4e6YDcd1U3R16OZO/nQKf97X7GWQEA6FV/QhSZbrn3c
         /bSYK/yzQGSifmQMa0dmXHNojd4QK2WxQ7MdbNAJFWMr35wlggX4bhTU/p+RawIq0GDd
         2qOqb+6O4LNZmae9L++hPfD7pYW/R2nEOhKdxd04wBiAxr2HzidopmecUNx8xE1bYyAT
         VoxA==
X-Forwarded-Encrypted: i=1; AKwUvBwGf34UJmTmnPaUDt5GA5ST4AjzXdPdAVn/sW3WfFH3kZzCc+q7acvsYizM75Fh760mtf4CsnbT+PU=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/gLYudMXB7mtkFKX5rJDeYGIEBJoC6oJBxcdJAVwzfOk+kWthN
	xEUf1Pkeku7mJyPIGVX3U+2DgNHuy3pUw+WatK4/wAyNULdrnTQCiEt5
X-Gm-Gg: AYBFou0oV+wK+nMAS+FmIPMdcFKbDaAc05jDWiaT/wmathr/1jWDZj6PNm6vn8mkWwH
	zEIt94tb0osqKrQ8kQGCpzveQqo8dXi2q4LaOPpwVpwBAUUzYtZQGhgajs5MLJ+GBPoctn62Kil
	mNoBXJsKdP69dV1EKAA2r85rqjQIk1g1Wc/zvA3Qr4kVwIX5p/wDUKVJalPF8prmoDLzYgMHT55
	IcCSr6SvoMAWJNTefbPzxUyRjvxI+RExMSGRjdsIPm3H6O4hQALWI71am8dK0/wn33VPzgqHaG8
	Ek/dUGOaQJtbeX2L+JR8pI4ZO76O2OwUGf2AynbygjsMU/qDJDJHfivbM8NKvAwgqGsNjn50u0Z
	adE0DDYnkcxurXZZlNJ/irYEiwEOhfn9SPwtWjIIIA7ZGx+UB1TK1f5qZfUkMpFPB73y6YeWXjc
	PNe1lTlS+3gzDwro/AfLKCIjJJEiEgqEBEklUHrrYB80BFWpLGMr3ekJQDnv6NygA2qgktC3gA2
	Ih0djHerAoCR/s7/kuWvDztD9mY3bnbbvvAQaDevsYdkH1NmUHj5HVGmnYIZh37h1gnJD8scbWG
	DFkJLrJDATUxwdTYTQ0vQI9MDAXjzqUGe4nw9S1LBYa05Gz8tm/pdjx1F01EcHJCaT3t4PIpjj+
	lFJuk5btMGtilytJnmf6lFA0=
X-Received: by 2002:a17:90b:28c7:b0:3a0:238b:db4d with SMTP id 98e67ed59e1d1-3ae897f82c4mr10848258a91.5.1793550680657;
        Sun, 01 Nov 2026 08:31:20 -0800 (PST)
From: Qihang <q.h.hack.winter@gmail.com>
To: Juergen Gross <jgross@suse.com>,
	xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-kernel@vger.kernel.org,
	Qihang <q.h.hack.winter@gmail.com>,
	stable@vger.kernel.org
Subject: [PATCH] xen/privcmd: fix double free when an irqfd is shut down twice
Date: Mon,  2 Nov 2026 00:31:07 +0800
Message-ID: <20261101163107.55037-2-q.h.hack.winter@gmail.com>
X-Mailer: git-send-email 2.54.0
In-Reply-To: <20261101163107.55037-1-q.h.hack.winter@gmail.com>
References: <20261101163107.55037-1-q.h.hack.winter@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793550682-F66B52A1-24A86375/0/0
X-purgate-type: clean
X-purgate-size: 3803

irqfd_deactivate() takes the irqfd off irqfds_list and queues
irqfd_shutdown().  queue_work() is not a once-only gate: it refuses to
enqueue a work item only while WORK_STRUCT_PENDING is set, and
process_one_work() clears that bit before it calls the work function.  So
nothing records that the shutdown work has already been queued, and
nothing protects the window between the start of irqfd_shutdown() and the
kfree() at its end.

Two paths call irqfd_deactivate() for the same irqfd:

  - privcmd_irqfd_deassign(), from the PRIVCMD_IRQFD_FLAG_DEASSIGN ioctl;

  - irqfd_wakeup(), with EPOLLHUP set, when the last reference to the
    eventfd file goes away, which runs wake_up_poll(&ctx->wqh, EPOLLHUP)
    from eventfd_release().

irqfds_lock serialises the two calls, but it does not make the second one
a no-op, and eventfd_ctx_fdget() takes a reference to the eventfd_ctx,
not to the struct file, so the last fd can still be closed while the
ioctl is running:

  CPU0                                 CPU1

  eventfd_ctx_fdget()
  spin_lock(irqfds_lock)
  list_del_init(&kirqfd->list)
  queue_work(&kirqfd->shutdown)        close(fd)
                                         eventfd_release()
                                           wake_up_poll(EPOLLHUP)
                                         irqfd_wakeup()
                                         spin_lock(irqfds_lock)
                                         irqfd_deactivate() again

If the work item has already started by then, its pending bit has been
cleared and the second queue_work() succeeds.  irqfd_shutdown() then runs
twice, so eventfd_ctx_remove_wait_queue(), eventfd_ctx_put() and kfree()
each hit the same object a second time; and when the second queue_work()
lands after the irqfd has been freed, the workqueue list operations write
to freed memory.

virt/kvm/eventfd.c has the same two callers and has had this guard since
the original irqfd support (721eecbf4fe99): irqfd_wakeup() calls
irqfd_deactivate() only if irqfd_is_active().  The comment there explains
why that is enough: the other side deactivates the irqfd before it takes
it off the waitqueue, and irqfd_shutdown() needs the waitqueue lock,
which this callback holds, so the irqfd cannot be freed under it.

Do the same here.  list_del_init() leaves the list head empty and the
irqfd stays off the list until kfree(), so it serves as a one-way
"active" flag.  The test is in irqfd_deactivate() rather than in
irqfd_wakeup() because privcmd_irqfd_deassign() walks irqfds_list and can
therefore never reach an inactive irqfd; only the wakeup path can, and a
single test covers both callers.

Fixes: f8941e6c4c712 ("xen: privcmd: Add support for irqfd")
Cc: stable@vger.kernel.org
Signed-off-by: Qihang <q.h.hack.winter@gmail.com>
---
 drivers/xen/privcmd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 5e56fbc934478..221b31611343e 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -901,10 +901,25 @@ struct privcmd_kernel_irqfd {
 	poll_table pt;
 };
 
+static bool irqfd_is_active(struct privcmd_kernel_irqfd *kirqfd)
+{
+	lockdep_assert_held(&irqfds_lock);
+
+	return !list_empty(&kirqfd->list);
+}
+
 static void irqfd_deactivate(struct privcmd_kernel_irqfd *kirqfd)
 {
 	lockdep_assert_held(&irqfds_lock);
 
+	/*
+	 * Both the deassign ioctl and the eventfd wakeup path can reach
+	 * this function.  list_del_init() marks the irqfd inactive, so
+	 * only the first caller may queue the shutdown work.
+	 */
+	if (!irqfd_is_active(kirqfd))
+		return;
+
 	list_del_init(&kirqfd->list);
 	queue_work(irqfd_cleanup_wq, &kirqfd->shutdown);
 }
-- 
2.54.0 (Apple Git-157)



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467429.1676735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002XH-SM; Mon, 02 Nov 2026 05:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467429.1676735; Mon, 02 Nov 2026 05:50:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002Vl-N5; Mon, 02 Nov 2026 05:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1467429;
 Sun, 01 Nov 2026 20:08:51 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbrH-0000mc-8f
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:08:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbrG-005QjG-DS
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:08:50 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79be1-e002-0a2a0a5209dd-0a2a450cdd98-42
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:08:49 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79c50-f479-0a2a450c0019-aa0a857ce78f-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:08:49 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-618-2zE9XaLbMxqdAeWTtl2FYw-1; Sun,
 01 Nov 2026 15:08:43 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id CE00A1955BFE; Sun,  1 Nov 2026 20:08:35 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5729A7E0; Sun,  1 Nov 2026 20:08:31 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 00A1E21E6A04; Sun, 01 Nov 2026 21:08:28 +0100 (CET)
Resent-To: 17746591750@163.com, pasic@linux.ibm.com, alistair@alistair23.me,
 rathc@linux.ibm.com, graf@amazon.com, stefanb@linux.vnet.ibm.com,
 FangSheng.Huang@amd.com, xen-devel@lists.xenproject.org,
 michael.roth@amd.com, luc@lmichel.fr, lixianglai@loongson.cn,
 maobibo@loongson.cn, pbarbuda@microsoft.com, yoshinori.sato@nifty.com,
 qemu-arm@nongnu.org, qemu-block@nongnu.org, qemu-devel@nongnu.org,
 qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 john.levon@nutanix.com, thanos.makatos@nutanix.com, kfting@nuvoton.com,
 den@openvz.org, elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org,
 jamin_lin@aspeedtech.com, kane_chen@aspeedtech.com, palmer@dabbelt.com,
 rbolshakov@ddn.com, foss@defmacro.it, sebastian.huber@embedded-brains.de,
 fam@euphon.net, jiaxun.yang@flygoat.com, lizhijian@fujitsu.com,
 atar4qemu@gmail.com, edgar.iglesias@gmail.com, jasowangio@gmail.com,
 liwei1518@gmail.com, npiggin@gmail.com, zhangckid@gmail.com,
 titusr@google.com, wuhaotsh@google.com, arei.gonglei@huawei.com,
 berto@igalia.com, mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com,
 zhao1.liu@intel.com, its@irrelevant.dk, clg@kaod.org, conor@kernel.org,
 david@kernel.org, jic23@kernel.org, kbusch@kernel.org,
 mchehab+huawei@kernel.org, sstabellini@kernel.org,
 peter.maydell@linaro.org, richard.henderson@linaro.org,
 zhiwei_liu@linux.alibaba.com, zhenwei.pi@linux.dev, adityag@linux.ibm.com,
 alifm@linux.ibm.com, amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:08:28 +0100
Resent-Message-ID: <87zevs1fib.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563728;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=NosSc9Yc34/yxPTSQxwFm3NAockGEayknf7JSdxuCWM=;
	b=bcpWLqyX2Hqz8v+D0PFTbgCUP++TbSzUPwjCRTBQmLZmKpYDhqJ4typmexPv89oetxRwNR
	1h7iw49ShtRxdoHmOTTQS8oQ1Xj+FJPT1spAu2IhsUchLYHldgg7+by303P5mIh1jiqSEe
	2OnLH+hdyF+39RGcRFBnSnxS7hVawcE=
X-MC-Unique: 2zE9XaLbMxqdAeWTtl2FYw-1
X-Mimecast-MFC-AGG-ID: 2zE9XaLbMxqdAeWTtl2FYw_1793563719
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 38/65] qom: convert scalar properties to QAPI-aware
 registration
In-Reply-To: <20261020-qom-qapi-v7-38-431a86b02b58@redhat.com>
 (=?utf-8?Q?=22Marc-Andr=C3=A9?=
	Lureau"'s message of "Tue, 20 Oct 2026 14:45:55 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-38-431a86b02b58@redhat.com>
Date: Fri, 30 Oct 2026 09:48:08 +0100
Message-ID: <87y0bfa81j.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 375
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: _gymfGmBI69LFGCwQ7dRdzjHvOVAGC1Aoxmad_ri7vk_1793563719
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1793563729-032D8A5B-4DF152E5/0/0
X-purgate-type: clean
X-purgate-size: 13505

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Reviewed-by: Amit Machhiwal <amachhiw@linux.ibm.com>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>

How did you create this patch?  It looks almost mechanical.

It misses a few conversions, almost certainly in code added since you
made this patch.  I can take care of them.

[...]

> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index 1d91667fb880..bc178482b309 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -24,6 +24,7 @@
>  #include "qemu/config-file.h"
>  #include "qemu/error-report.h"
>  #include "qapi/error.h"
> +#include "qapi/qapi-builtin-type-infos.h"
>  #include "hw/pci/msi.h"
>  #include "hw/pci/msix.h"
>  #include "hw/s390x/adapter.h"

Not needed; we already include "qapi/qapi-type-infos-common.h".

[...]

> diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
> index 6d421b990cef..64228a620e69 100644
> --- a/hw/acpi/ich9.c
> +++ b/hw/acpi/ich9.c
> @@ -26,6 +26,7 @@
> =20
>  #include "qemu/osdep.h"
>  #include "qapi/error.h"
> +#include "qapi/qapi-builtin-type-infos.h"
>  #include "qapi/visitor.h"
>  #include "hw/pci/pci.h"
>  #include "migration/vmstate.h"

Missing:

                                       PM_REG_FIELD(acpi_pci_hotplug.root),
                                       object_property_allow_set_link,
                                       OBJ_PROP_LINK_STRONG);
   -    object_class_property_add(oc, ACPI_PM_PROP_GPE0_BLK, "uint32",
   +    object_class_property_add_qapi(oc, ACPI_PM_PROP_GPE0_BLK, &uint32_t=
ype_info,
                                  ich9_pm_get_gpe0_blk,
                                  NULL, NULL, NULL);
        object_class_property_add_uint8_ptr(oc, ACPI_PM_PROP_S3_DISABLED,

[...]

> diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
> index cca37202ffb2..7b4fd933a8fb 100644
> --- a/hw/xen/xen-pvh-common.c
> +++ b/hw/xen/xen-pvh-common.c
> @@ -9,6 +9,7 @@
>  #include "qemu/osdep.h"
>  #include "qemu/error-report.h"
>  #include "qemu/units.h"
> +#include "qapi/qapi-builtin-type-infos.h"
>  #include "qapi/visitor.h"
>  #include "hw/core/boards.h"
>  #include "hw/core/irq.h"
> @@ -413,7 +414,7 @@ void xen_pvh_class_setup_common_props(XenPVHMachineCl=
ass *xpc)
> =20
>  #define OC_MEMMAP_PROP_BASE(c, prop_name, name)                         =
  \
>  do {                                                                    =
  \
> -    object_class_property_add(c, prop_name "-base", "uint64_t",         =
  \
> +    object_class_property_add_qapi(c, prop_name "-base", &uint64_type_in=
fo,\
>                                xen_pvh_get_ ## name ## _base,            =
  \
>                                xen_pvh_set_ ## name ## _base, NULL, NULL)=
; \
>      object_class_property_set_description(oc, prop_name "-base",        =
  \
> @@ -422,7 +423,7 @@ do {                                                 =
                     \
> =20
>  #define OC_MEMMAP_PROP_SIZE(c, prop_name, name)                         =
  \
>  do {                                                                    =
  \
> -    object_class_property_add(c, prop_name "-size", "uint64_t",         =
  \
> +    object_class_property_add_qapi(c, prop_name "-size", &size_type_info=
, \
>                                xen_pvh_get_ ## name ## _size,            =
  \
>                                xen_pvh_set_ ## name ## _size, NULL, NULL)=
; \
>      object_class_property_set_description(oc, prop_name "-size",        =
  \

Use of &size_type_info is not mechanical.  Better to be as mechanical as
possible in such a huge patch.

[...]

> diff --git a/qom/object.c b/qom/object.c
> index cc113c0810e7..9f9a2abfa08d 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -22,10 +22,10 @@
>  #include "qapi/string-output-visitor.h"
>  #include "qapi/qobject-input-visitor.h"
>  #include "qapi/forward-visitor.h"
> +#include "qapi/qapi-builtin-type-infos.h"
>  #include "qapi/qapi-builtin-visit.h"
>  #include "qapi/compat-policy.h"
>  #include "qobject/qdict.h"
> -#include "qobject/qjson.h"

The deletion doesn't belong.

>  #include "qemu/id.h"
>  #include "qapi/qmp/qerror.h"
>  #include "trace.h"
> @@ -2449,7 +2449,7 @@ object_property_add_str(Object *obj, const char *na=
me,
>      prop->get =3D get;
>      prop->set =3D set;
> =20
> -    return object_property_add(obj, name, "string",
> +    return object_property_add_qapi(obj, name, &str_type_info,
>                                 get ? property_get_str : NULL,
>                                 set ? property_set_str : NULL,
>                                 property_release_data,
> @@ -2467,7 +2467,7 @@ object_class_property_add_str(ObjectClass *klass, c=
onst char *name,
>      prop->get =3D get;
>      prop->set =3D set;
> =20
> -    return object_class_property_add(klass, name, "string",
> +    return object_class_property_add_qapi(klass, name, &str_type_info,
>                                       get ? property_get_str : NULL,
>                                       set ? property_set_str : NULL,
>                                       NULL,
> @@ -2519,7 +2519,7 @@ object_property_add_bool(Object *obj, const char *n=
ame,
>      prop->get =3D get;
>      prop->set =3D set;
> =20
> -    return object_property_add(obj, name, "bool",
> +    return object_property_add_qapi(obj, name, &bool_type_info,
>                                 get ? property_get_bool : NULL,
>                                 set ? property_set_bool : NULL,
>                                 property_release_data,
> @@ -2536,7 +2536,7 @@ object_class_property_add_bool(ObjectClass *klass, =
const char *name,
>      prop->get =3D get;
>      prop->set =3D set;
> =20
> -    return object_class_property_add(klass, name, "bool",
> +    return object_class_property_add_qapi(klass, name, &bool_type_info,
>                                       get ? property_get_bool : NULL,
>                                       set ? property_set_bool : NULL,
>                                       NULL,

Missing:

   @@ -2929,7 +2930,7 @@ object_class_property_add_bool_ptr(ObjectClass *kl=
ass, const char *name,
            setter =3D property_class_set_bool_ptr;
        }

   -    return object_class_property_add(klass, name, "bool",
   +    return object_class_property_add_qapi(klass, name, &bool_type_info,
                                         getter, setter, NULL, (void *)offs=
et);
    }

> @@ -2945,8 +2945,8 @@ object_property_add_uint8_ptr(Object *obj, const ch=
ar *name,
>          setter =3D property_set_uint8_ptr;
>      }
> =20
> -    return object_property_add(obj, name, "uint8",
> -                               getter, setter, NULL, (void *)v);
> +    return object_property_add_qapi(obj, name, &uint8_type_info,
> +                                    getter, setter, NULL, (void *)v);
>  }
> =20
>  ObjectProperty *

Missing:

   @@ -2969,7 +2970,7 @@ object_class_property_add_uint8_ptr(ObjectClass *k=
lass, const char *name,
            setter =3D property_class_set_uint8_ptr;
        }

   -    return object_class_property_add(klass, name, "uint8",
   +    return object_class_property_add_qapi(klass, name, &uint8_type_info=
,
                                         getter, setter, NULL, (void *)offs=
et);
    }

> @@ -2986,8 +2986,8 @@ object_class_static_property_add_uint8_ptr(ObjectCl=
ass *klass,
>          setter =3D property_set_uint8_ptr;
>      }
> =20
> -    return object_class_property_add(klass, name, "uint8",
> -                                     getter, setter, NULL, (void *)v);
> +    return object_class_property_add_qapi(klass, name, &uint8_type_info,
> +                                          getter, setter, NULL, (void *)=
v);
>  }
> =20
>  ObjectProperty *
> @@ -3006,8 +3006,8 @@ object_property_add_uint16_ptr(Object *obj, const c=
har *name,
>          setter =3D property_set_uint16_ptr;
>      }
> =20
> -    return object_property_add(obj, name, "uint16",
> -                               getter, setter, NULL, (void *)v);
> +    return object_property_add_qapi(obj, name, &uint16_type_info,
> +                                    getter, setter, NULL, (void *)v);
>  }
> =20
>  ObjectProperty *

Missing:

   @@ -3030,7 +3031,7 @@ object_class_property_add_uint16_ptr(ObjectClass *=
klass, const char *name,
            setter =3D property_class_set_uint16_ptr;
        }

   -    return object_class_property_add(klass, name, "uint16",
   +    return object_class_property_add_qapi(klass, name, &uint16_type_inf=
o,
                                         getter, setter, NULL, (void *)offs=
et);
    }

> @@ -3047,8 +3047,8 @@ object_class_static_property_add_uint16_ptr(ObjectC=
lass *klass,
>          setter =3D property_set_uint16_ptr;
>      }
> =20
> -    return object_class_property_add(klass, name, "uint16",
> -                                     getter, setter, NULL, (void *)v);
> +    return object_class_property_add_qapi(klass, name, &uint16_type_info=
,
> +                                          getter, setter, NULL, (void *)=
v);
>  }
> =20
>  ObjectProperty *
> @@ -3067,8 +3067,8 @@ object_property_add_uint32_ptr(Object *obj, const c=
har *name,
>          setter =3D property_set_uint32_ptr;
>      }
> =20
> -    return object_property_add(obj, name, "uint32",
> -                               getter, setter, NULL, (void *)v);
> +    return object_property_add_qapi(obj, name, &uint32_type_info,
> +                                    getter, setter, NULL, (void *)v);
>  }
> =20
>  ObjectProperty *

Missing:

   @@ -3091,7 +3092,7 @@ object_class_property_add_uint32_ptr(ObjectClass *=
klass, const char *name,
            setter =3D property_class_set_uint32_ptr;
        }

   -    return object_class_property_add(klass, name, "uint32",
   +    return object_class_property_add_qapi(klass, name, &uint32_type_inf=
o,
                                         getter, setter, NULL, (void *)offs=
et);
    }

> @@ -3108,8 +3108,8 @@ object_class_static_property_add_uint32_ptr(ObjectC=
lass *klass,
>          setter =3D property_set_uint32_ptr;
>      }
> =20
> -    return object_class_property_add(klass, name, "uint32",
> -                                     getter, setter, NULL, (void *)v);
> +    return object_class_property_add_qapi(klass, name, &uint32_type_info=
,
> +                                          getter, setter, NULL, (void *)=
v);
>  }
> =20
>  ObjectProperty *
> @@ -3128,8 +3128,8 @@ object_property_add_uint64_ptr(Object *obj, const c=
har *name,
>          setter =3D property_set_uint64_ptr;
>      }
> =20
> -    return object_property_add(obj, name, "uint64",
> -                               getter, setter, NULL, (void *)v);
> +    return object_property_add_qapi(obj, name, &uint64_type_info,
> +                                    getter, setter, NULL, (void *)v);
>  }
> =20
>  ObjectProperty *

Missing:

   @@ -3152,7 +3153,7 @@ object_class_property_add_uint64_ptr(ObjectClass *=
klass, const char *name,
            setter =3D property_class_set_uint64_ptr;
        }

   -    return object_class_property_add(klass, name, "uint64",
   +    return object_class_property_add_qapi(klass, name, &uint64_type_inf=
o,
                                         getter, setter, NULL, (void *)offs=
et);
    }

> @@ -3169,8 +3169,8 @@ object_class_static_property_add_uint64_ptr(ObjectC=
lass *klass,
>          setter =3D property_set_uint64_ptr;
>      }
> =20
> -    return object_class_property_add(klass, name, "uint64",
> -                                     getter, setter, NULL, (void *)v);
> +    return object_class_property_add_qapi(klass, name, &uint64_type_info=
,
> +                                          getter, setter, NULL, (void *)=
v);
>  }
> =20
>  typedef struct {

[...]

> diff --git a/target/i386/sev.c b/target/i386/sev.c
> index b2c7260c80a4..3a36fa4d0b95 100644
> --- a/target/i386/sev.c
> +++ b/target/i386/sev.c
> @@ -3266,7 +3266,7 @@ sev_snp_guest_class_init(ObjectClass *oc, const voi=
d *data)
>      x86_klass->adjust_cpuid_features =3D sev_snp_adjust_cpuid_features;
>      x86_klass->kvm_type =3D sev_snp_kvm_type;
> =20
> -    object_class_property_add(oc, "policy", "uint64",
> +    object_class_property_add_qapi(oc, "policy", &uint64_type_info,
>                                sev_snp_guest_get_policy,
>                                sev_snp_guest_set_policy, NULL, NULL);
>      object_class_property_add_str(oc, "guest-visible-workarounds",

Missing:

   @@ -3290,7 +3290,7 @@ sev_snp_guest_class_init(ObjectClass *oc, const vo=
id *data)
        object_class_property_add_bool(oc, "secure-tsc",
                                      sev_snp_guest_get_secure_tsc,
                                      sev_snp_guest_set_secure_tsc);
   -    object_class_property_add(oc, "tsc-frequency", "uint32",
   +    object_class_property_add_qapi(oc, "tsc-frequency", &uint32_type_in=
fo,
                                  sev_snp_guest_get_tsc_frequency,
                                  sev_snp_guest_set_tsc_frequency, NULL, NU=
LL);
    }

[...]



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467433.1676749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002jQ-HP; Mon, 02 Nov 2026 05:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467433.1676749; Mon, 02 Nov 2026 05:50:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002gx-73; Mon, 02 Nov 2026 05:50:29 +0000
Received: by outflank-mailman (input) for mailman id 1467433;
 Sun, 01 Nov 2026 20:10:45 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbt7-0001on-7G
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:10:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbt6-007BZx-KR
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:10:44 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79c63-bab6-0a2a0a5309dd-0a2a4502d854-26
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:10:44 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79cc3-6ca4-0a2a45020019-aa0a857cec65-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:10:44 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-400-NyKQmjqwPNCy-wEX0umkxA-1; Sun,
 01 Nov 2026 15:10:39 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 872EA1801324; Sun,  1 Nov 2026 20:10:34 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 853CA30002CF; Sun,  1 Nov 2026 20:10:31 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 0F7E521E6A04; Sun, 01 Nov 2026 21:10:29 +0100 (CET)
Resent-To: 17746591750@163.com, alistair@alistair23.me, graf@amazon.com,
 FangSheng.Huang@amd.com, michael.roth@amd.com, jamin_lin@aspeedtech.com,
 kane_chen@aspeedtech.com, palmer@dabbelt.com, rbolshakov@ddn.com,
 foss@defmacro.it, sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 its@irrelevant.dk, clg@kaod.org, conor@kernel.org, david@kernel.org,
 jic23@kernel.org, kbusch@kernel.org, mchehab+huawei@kernel.org,
 sstabellini@kernel.org, peter.maydell@linaro.org,
 richard.henderson@linaro.org, pasic@linux.ibm.com,
 zhiwei_liu@linux.alibaba.com, rathc@linux.ibm.com, zhenwei.pi@linux.dev,
 stefanb@linux.vnet.ibm.com, adityag@linux.ibm.com,
 xen-devel@lists.xenproject.org, alifm@linux.ibm.com, luc@lmichel.fr,
 lixianglai@loongson.cn, maobibo@loongson.cn, pbarbuda@microsoft.com,
 yoshinori.sato@nifty.com, qemu-arm@nongnu.org, qemu-block@nongnu.org,
 qemu-devel@nongnu.org, qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org, john.levon@nutanix.com, thanos.makatos@nutanix.com,
 kfting@nuvoton.com, den@openvz.org, elena.ufimtseva@oracle.com,
 jag.raman@oracle.com, daniel.barboza@oss.qualcomm.com,
 philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com,
 phil@philjordan.eu, tangtao1634@phytium.com.cn,
 chao.liu@processmission.com, jiri@resnulli.us, sam@rfc1149.net,
 anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org, amachhiw@linux.ibm.com,
 borntraeger@linux.ibm.com, brueckner@linux.ibm.com, farman@linux.ibm.com,
 harshpb@linux.ibm.com, iii@linux.ibm.com, jjherne@linux.ibm.com,
 milesg@linux.ibm.com, mjrosato@linux.ibm.com
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:10:29 +0100
Resent-Message-ID: <87mrrs1fey.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563843;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=ky1zk6thScAqYqHATy6gr4bYU7NPm4fM3/3dmXxNTDM=;
	b=ipcMkHHVNn4QrHMLx3E6fwiF5lHC+SP6F1aNi94Fo1duxua91vv1JmnxAFyxUdHfdJRfvE
	NUITM9fxHGgEZvpT+V5qvSJf18aigeOCGl5ER/mCTPXMFmZ/2CpwHtuMtPgEdgRi5S+2XP
	YeOfxj5AMWlEm+jlaqM2HjZQtONJY2o=
X-MC-Unique: NyKQmjqwPNCy-wEX0umkxA-1
X-Mimecast-MFC-AGG-ID: NyKQmjqwPNCy-wEX0umkxA_1793563835
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,  qemu-devel@nongnu.org,  Michael
 Roth <michael.roth@amd.com>,  John Snow <jsnow@redhat.com>,  Peter Maydell
 <peter.maydell@linaro.org>,  Mauro Carvalho Chehab
 <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 38/65] qom: convert scalar properties to QAPI-aware
 registration
In-Reply-To: <CAMxuvaya+Tihnwjf8JNjhmhBMwE7XpTF8zPL7tbfb8DFiAV62g@mail.gmail.com>
	(=?utf-8?Q?=22Marc-Andr=C3=A9?= Lureau"'s message of "Fri, 30 Oct 2026
 13:01:17 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-38-431a86b02b58@redhat.com>
	<87y0bfa81j.fsf@pond.sub.org>
	<CAMxuvaya+Tihnwjf8JNjhmhBMwE7XpTF8zPL7tbfb8DFiAV62g@mail.gmail.com>
Date: Fri, 30 Oct 2026 10:31:46 +0100
Message-ID: <87bj8ba60t.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 30
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: yuyzVa-YXpsZFrQ8NjNo5CLvsY9AR-Cw81GZN1UXIaY_1793563835
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1793563844-F04A62AC-519362EB/0/0
X-purgate-type: clean
X-purgate-size: 888

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Hi
>
> On Fri, Oct 30, 2026 at 12:48=E2=80=AFPM Markus Armbruster <armbru@redhat=
.com> wrote:
>>
>> Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:
>>
>> > Reviewed-by: Amit Machhiwal <amachhiw@linux.ibm.com>
>> > Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> > Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
>>
>> How did you create this patch?  It looks almost mechanical.
>
> Repeated grep / multi-cursor in zed iirc
>
>>
>> It misses a few conversions, almost certainly in code added since you
>> made this patch.  I can take care of them.
>
> Not surprising after several months.

Not at all.  Almost surprised it's so few.

[...]

> Are you working on v8 or should I start rebasing?

I think it's overall less work if I do v8 at this point.



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467443.1676785 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwB-0003TF-Ke; Mon, 02 Nov 2026 05:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467443.1676785; Mon, 02 Nov 2026 05:50:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwB-0003P1-7W; Mon, 02 Nov 2026 05:50:31 +0000
Received: by outflank-mailman (input) for mailman id 1467443;
 Sun, 01 Nov 2026 20:13:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbvp-0001uH-WB
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:13:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbvp-004xRp-D8
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:13:33 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d6b-e002-0a2a0a5209dd-0a2a450be44e-2
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:13:33 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d6c-b7e8-0a2a450b0019-aa0a857c9525-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:13:33 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-640-EOQDkoJqOrSzuYyhPjyxGw-1; Sun,
 01 Nov 2026 15:13:26 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 305B619560B3; Sun,  1 Nov 2026 20:13:22 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id E9645195608B; Sun,  1 Nov 2026 20:13:20 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 7626A21E6A04; Sun, 01 Nov 2026 21:13:18 +0100 (CET)
Resent-To: 17746591750@163.com, alistair@alistair23.me, graf@amazon.com,
 FangSheng.Huang@amd.com, michael.roth@amd.com, jamin_lin@aspeedtech.com,
 kane_chen@aspeedtech.com, palmer@dabbelt.com, rbolshakov@ddn.com,
 foss@defmacro.it, sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 pasic@linux.ibm.com, its@irrelevant.dk, rathc@linux.ibm.com, clg@kaod.org,
 stefanb@linux.vnet.ibm.com, conor@kernel.org,
 xen-devel@lists.xenproject.org, david@kernel.org, luc@lmichel.fr,
 jic23@kernel.org, kbusch@kernel.org, mchehab+huawei@kernel.org,
 sstabellini@kernel.org, peter.maydell@linaro.org,
 richard.henderson@linaro.org, zhiwei_liu@linux.alibaba.com,
 zhenwei.pi@linux.dev, adityag@linux.ibm.com, alifm@linux.ibm.com,
 amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com, lixianglai@loongson.cn, maobibo@loongson.cn,
 pbarbuda@microsoft.com, yoshinori.sato@nifty.com, qemu-arm@nongnu.org,
 qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, john.levon@nutanix.com,
 thanos.makatos@nutanix.com, kfting@nuvoton.com, den@openvz.org,
 elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:13:18 +0100
Resent-Message-ID: <871p941fa9.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793564012;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 resent-to:resent-from:resent-message-id:in-reply-to:in-reply-to:
	 references:references; bh=XB5EnWMeZC+TuUTfvw5ippbkRaPu3bjzBuwOlljxabM=;
	b=MgLxlP3vGdYDkYabroiwKjr6n7Zpanagi6qP2VV/ilVgnEJ7mmhO0XBLN+wkvt2+YpAWYT
	RuwL5mEDJkXomTik7A7WbWARH2wyyw/MNrdj8H57cC4qHpxlOG8SRS+DYlqbK8TCiRGulo
	0wGxz+K8/gEz8ecXozXpmboHfZqtL00=
X-MC-Unique: EOQDkoJqOrSzuYyhPjyxGw-1
X-Mimecast-MFC-AGG-ID: EOQDkoJqOrSzuYyhPjyxGw_1793564002
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 07/65] qapi: add QAPITypeInfo struct definition
In-Reply-To: <87ik2g7cd6.fsf@pond.sub.org> (Markus Armbruster's message of
	"Sun, 01 Nov 2026 17:19:49 +0100")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-7-431a86b02b58@redhat.com>
	<87ik2g7cd6.fsf@pond.sub.org>
Date: Sun, 01 Nov 2026 17:27:17 +0100
Message-ID: <87a4ns7c0q.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 7
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: YzQhKd_P8-cLHAijkh7GwQGtDjCr6nYS28WObv_w1UM_1793564002
X-Mimecast-Originator: redhat.com
Content-Type: text/plain
X-purgate-ID: tlsNG-42698a/1793564013-18ECE9EA-72CC74E4/0/0
X-purgate-type: clean
X-purgate-size: 288

Markus Armbruster <armbru@redhat.com> writes:

> As far as I can tell, @name is used outside tests only for an error
> message in object_property_get_enum(), and I'm not sure that error makes
> sense.  Observation, not a demand.

No, I managed to confuse myself.  Please ignore.



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467437.1676762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkwA-0002zv-76; Mon, 02 Nov 2026 05:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467437.1676762; Mon, 02 Nov 2026 05:50:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw9-0002xc-Tb; Mon, 02 Nov 2026 05:50:29 +0000
Received: by outflank-mailman (input) for mailman id 1467437;
 Sun, 01 Nov 2026 20:12:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xNbuL-0001qW-PQ
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 20:12:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNbuL-004xKU-2y
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 21:12:01 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79cf1-8faa-0a2a0a5109dd-0a2a4508d1ba-10
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:12:00 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6ae79d0f-f659-0a2a45080019-aa0a817c961f-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 21:12:00 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-235-4TFtM2YWOHWzydJNIPJiaQ-1; Sun,
 01 Nov 2026 15:11:53 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9B4FC1955F45; Sun,  1 Nov 2026 20:11:48 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C405C1956088; Sun,  1 Nov 2026 20:11:47 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 6A55721E6A04; Sun, 01 Nov 2026 21:11:45 +0100 (CET)
Resent-To: 17746591750@163.com, pasic@linux.ibm.com, alistair@alistair23.me,
 rathc@linux.ibm.com, graf@amazon.com, stefanb@linux.vnet.ibm.com,
 FangSheng.Huang@amd.com, xen-devel@lists.xenproject.org,
 michael.roth@amd.com, jamin_lin@aspeedtech.com, kane_chen@aspeedtech.com,
 palmer@dabbelt.com, rbolshakov@ddn.com, foss@defmacro.it,
 sebastian.huber@embedded-brains.de, fam@euphon.net,
 jiaxun.yang@flygoat.com, lizhijian@fujitsu.com, atar4qemu@gmail.com,
 edgar.iglesias@gmail.com, jasowangio@gmail.com, liwei1518@gmail.com,
 npiggin@gmail.com, zhangckid@gmail.com, titusr@google.com,
 wuhaotsh@google.com, arei.gonglei@huawei.com, berto@igalia.com,
 mark.cave-ayland@ilande.co.uk, junjie.cao@intel.com, zhao1.liu@intel.com,
 its@irrelevant.dk, clg@kaod.org, conor@kernel.org, david@kernel.org,
 jic23@kernel.org, kbusch@kernel.org, mchehab+huawei@kernel.org,
 sstabellini@kernel.org, peter.maydell@linaro.org,
 richard.henderson@linaro.org, zhiwei_liu@linux.alibaba.com,
 zhenwei.pi@linux.dev, adityag@linux.ibm.com, alifm@linux.ibm.com,
 amachhiw@linux.ibm.com, borntraeger@linux.ibm.com,
 brueckner@linux.ibm.com, farman@linux.ibm.com, harshpb@linux.ibm.com,
 iii@linux.ibm.com, jjherne@linux.ibm.com, milesg@linux.ibm.com,
 mjrosato@linux.ibm.com, luc@lmichel.fr, lixianglai@loongson.cn,
 maobibo@loongson.cn, pbarbuda@microsoft.com, yoshinori.sato@nifty.com,
 qemu-arm@nongnu.org, qemu-block@nongnu.org, qemu-devel@nongnu.org,
 qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 john.levon@nutanix.com, thanos.makatos@nutanix.com, kfting@nuvoton.com,
 den@openvz.org, elena.ufimtseva@oracle.com, jag.raman@oracle.com,
 daniel.barboza@oss.qualcomm.com, philmd@oss.qualcomm.com,
 pierrick.bouvier@oss.qualcomm.com, phil@philjordan.eu,
 tangtao1634@phytium.com.cn, chao.liu@processmission.com, jiri@resnulli.us,
 sam@rfc1149.net, anisa.su@samsung.com, alex@shazbot.org, farosas@suse.de,
 mohamed@unpredictable.fr, kvm@vger.kernel.org, linux-cxl@vger.kernel.org,
 alistair.francis@wdc.com, anthony@xenproject.org
Resent-From: Markus Armbruster <armbru@redhat.com>
Resent-Date: Sun, 01 Nov 2026 21:11:45 +0100
Resent-Message-ID: <87ecd41fcu.fsf@pond.sub.org>
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793563919;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:resent-to:
	 resent-from:resent-message-id:in-reply-to:in-reply-to:  references:references;
	bh=pn06HY/bU7f4uyfbIipnbJnjf3nU/iS9+J50VskAMwg=;
	b=RTEHkke3vtp7bYWhz4pCrjjq545SbT4JaFXnbyYX77/Bnfc3tpmAWT5V4ckUsfQF/zJl7/
	j26rMHkdqvQ421ZOT+jEYexF8OOLoyVA8ck0xkyxfDH3ZjjiBn28KBBG8TLc7apaaxt2RF
	TH8GJ97DO0CPuqjScLVrrAnYcBbR6gA=
X-MC-Unique: 4TFtM2YWOHWzydJNIPJiaQ-1
X-Mimecast-MFC-AGG-ID: 4TFtM2YWOHWzydJNIPJiaQ_1793563909
From: Markus Armbruster <armbru@redhat.com>
To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,  Michael Roth <michael.roth@amd.com>,  John Snow
 <jsnow@redhat.com>,  Peter Maydell <peter.maydell@linaro.org>,  Mauro
 Carvalho Chehab <mchehab+huawei@kernel.org>,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Paolo Bonzini <pbonzini@redhat.com>,
  Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>,  Kostiantyn
 Kostiuk
 <kkostiuk@redhat.com>,  Eric Blake <eblake@redhat.com>,  David Hildenbrand
 <david@kernel.org>,  Igor Mammedov <imammedo@redhat.com>,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Jason Wang <jasowangio@gmail.com>,
  Marcelo Tosatti <mtosatti@redhat.com>,  kvm@vger.kernel.org,  Alberto
 Garcia <berto@igalia.com>,  Kevin Wolf <kwolf@redhat.com>,  Hanna Reitz
 <hreitz@redhat.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@oss.qualcomm.com>,
  Zhao Liu <zhao1.liu@intel.com>,  Jonathan Cameron <jic23@kernel.org>,
  Junjie Cao <junjie.cao@intel.com>,  Anisa Su <anisa.su@samsung.com>,
  Elena Ufimtseva <elena.ufimtseva@oracle.com>,  Jagannathan Raman
 <jag.raman@oracle.com>,  John Levon <john.levon@nutanix.com>,  Thanos
 Makatos <thanos.makatos@nutanix.com>,  =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@redhat.com>,
  Cornelia Huck <cohuck@redhat.com>,  Eric Farman <farman@linux.ibm.com>,
  Matthew Rosato <mjrosato@linux.ibm.com>,  Richard Henderson
 <richard.henderson@linaro.org>,  Ilya Leoshkevich <iii@linux.ibm.com>,
  qemu-block@nongnu.org,  linux-cxl@vger.kernel.org,
  qemu-s390x@nongnu.org,  "Michael S. Tsirkin" <mst@redhat.com>,  Sergio
 Lopez <slp@redhat.com>,  qemu-arm@nongnu.org,  Palmer Dabbelt
 <palmer@dabbelt.com>,  Alistair Francis <alistair.francis@wdc.com>,
  Weiwei Li <liwei1518@gmail.com>,  Daniel Henrique Barboza
 <daniel.barboza@oss.qualcomm.com>,  Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>,  Chao Liu <chao.liu@processmission.com>,
  qemu-riscv@nongnu.org,  Song Gao <17746591750@163.com>,  Bibo Mao
 <maobibo@loongson.cn>,  Xianglai Li <lixianglai@loongson.cn>,  Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  Pedro Barbuda <pbarbuda@microsoft.com>,
  Mohamed Mediouni <mohamed@unpredictable.fr>,  Nicholas Piggin
 <npiggin@gmail.com>,  Harsh Prateek Bora <harshpb@linux.ibm.com>,  Amit
 Machhiwal <amachhiw@linux.ibm.com>,  qemu-ppc@nongnu.org,  Zhang Chen
 <zhangckid@gmail.com>,  Li Zhijian <lizhijian@fujitsu.com>,  Alistair
 Francis <alistair@alistair23.me>,  Alexander Graf <graf@amazon.com>,
  "Gonglei (Arei)" <arei.gonglei@huawei.com>,  zhenwei pi
 <zhenwei.pi@linux.dev>,  Ani Sinha <anisinha@redhat.com>,  Luc Michel
 <luc@lmichel.fr>,  =?utf-8?Q?C=C3=A9dric?= Le Goater <clg@kaod.org>,  Jamin
 Lin
 <jamin_lin@aspeedtech.com>,  Kane Chen <kane_chen@aspeedtech.com>,  Samuel
 Tardieu <sam@rfc1149.net>,  "Denis V. Lunev" <den@openvz.org>,  FangSheng
 Huang <FangSheng.Huang@amd.com>,  Tyrone Ting <kfting@nuvoton.com>,  Hao
 Wu <wuhaotsh@google.com>,  Keith Busch <kbusch@kernel.org>,  Klaus Jensen
 <its@irrelevant.dk>,  Jesper Devantier <foss@defmacro.it>,  Aditya Gupta
 <adityag@linux.ibm.com>,  Glenn Miles <milesg@linux.ibm.com>,  Conor
 Dooley <conor@kernel.org>,  Sebastian Huber
 <sebastian.huber@embedded-brains.de>,  Halil Pasic <pasic@linux.ibm.com>,
  Christian Borntraeger <borntraeger@linux.ibm.com>,  Jason Herne
 <jjherne@linux.ibm.com>,  Titus Rwantare <titusr@google.com>,  Stefano
 Stabellini <sstabellini@kernel.org>,  Anthony PERARD
 <anthony@xenproject.org>,  Peter Xu <peterx@redhat.com>,  Chinmay Rath
 <rathc@linux.ibm.com>,  Hendrik Brueckner <brueckner@linux.ibm.com>,
  xen-devel@lists.xenproject.org,  Roman Bolshakov <rbolshakov@ddn.com>,
  Phil Dennis-Jordan <phil@philjordan.eu>,  Fam Zheng <fam@euphon.net>,
  Farhan Ali <alifm@linux.ibm.com>,  Alex Williamson <alex@shazbot.org>,
  Tao Tang <tangtao1634@phytium.com.cn>,  Stefan Berger
 <stefanb@linux.vnet.ibm.com>,  Fabiano Rosas <farosas@suse.de>,  Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>,  Artyom Tarasenko
 <atar4qemu@gmail.com>,  Yoshinori Sato <yoshinori.sato@nifty.com>,  Jiri
 Pirko <jiri@resnulli.us>,  Eric Auger <eric.auger@redhat.com>,  Laurent
 Vivier <lvivier@redhat.com>
Subject: Re: [PATCH v7 17/65] qom: add object_{class_}property_add_qapi_enum
In-Reply-To: <CAMxuvayHXMftaQP6X_14pAf63bjX8mXxsW4TsXnLf_wbOq6eUA@mail.gmail.com>
	(=?utf-8?Q?=22Marc-Andr=C3=A9?= Lureau"'s message of "Fri, 30 Oct 2026
 16:11:12 +0400")
References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com>
	<20261020-qom-qapi-v7-17-431a86b02b58@redhat.com>
	<871p97a4mf.fsf@pond.sub.org>
	<CAMxuvayHXMftaQP6X_14pAf63bjX8mXxsW4TsXnLf_wbOq6eUA@mail.gmail.com>
Date: Sun, 01 Nov 2026 12:18:09 +0100
Message-ID: <87se1k7qby.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Lines: 93
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: rO-hRhugsqkehLZXvKtC4OGGcDbe4YTKkUCWx2lEB2c_1793563909
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1793563920-CC77387B-3AC845B4/0/0
X-purgate-type: clean
X-purgate-size: 3629

Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:

> Hi
>
> On Fri, Oct 30, 2026 at 2:02=E2=80=AFPM Markus Armbruster <armbru@redhat.=
com> wrote:
>>
>> Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com> writes:
>>
>> > Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> > Signed-off-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
>> > ---
>> >  include/qom/object.h | 74 ++++++++++++++++++++++++++++++++++++++++++
>> >  qom/object.c         | 90 +++++++++++++++++++++++++++++++++++++++++++=
++++++---
>> >  2 files changed, 159 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/include/qom/object.h b/include/qom/object.h
>> > index eb61d8842b80..e04be4caed57 100644
>> > --- a/include/qom/object.h
>> > +++ b/include/qom/object.h
>> > @@ -2027,6 +2027,80 @@ ObjectProperty *object_class_property_add_enum(=
ObjectClass *klass,
>> >                                      int (*get)(Object *, Error **),
>> >                                      void (*set)(Object *, int, Error =
**));
>> >
>> > +/**
>> > + * struct QapiEnumProp: Descriptor for a property backed by a QAPI en=
um type
>> > + *
>> > + * Binds a QOM object property to a QAPI enum, providing automatic
>> > + * string<->int conversion through QAPI visitors and optional
>> > + * default-value initialization during object instance init.
>> > + *
>> > + * Use the QAPI_ENUM_PROP() macro to construct instances inline.
>> > + *
>> > + * @name: property name exposed on the QOM object
>> > + * @description: human-readable description (shown in ``-device help`=
`, etc.)
>> > + * @default_value: initial enum value applied via @set during instanc=
e init,
>> > + *                 or -1 (the QAPI_ENUM_PROP default) to skip initial=
ization
>> > + * @qapi_type: pointer to the generated QAPITypeInfo for the enum
>> > + *             (provides the string<->int lookup table)
>> > + * @get: getter that returns the current enum value as int, or -1 on =
error
>> > + * @set: setter that receives the enum value as int; %NULL for read-o=
nly props
>> > + */
>> > +typedef struct QapiEnumProp {
>> > +    const char *name;
>> > +    const char *description;
>> > +    const int default_value;
>> > +    const QAPITypeInfo *qapi_type;
>> > +    int (*get)(Object *, Error **);
>> > +    void (*set)(Object *, int, Error **);
>> > +} QapiEnumProp;
>> > +
>> > +#define QAPI_ENUM_PROP(...) ({                                       =
    \
>> > +    static const QapiEnumProp _prop =3D {                            =
      \
>> > +        .default_value =3D -1, __VA_ARGS__                           =
      \
>> > +    };                                                               =
    \
>> > +    &_prop; })
>>
>> This is a cute and reasonably well-known macro trick for optional
>> keyword arguments in C.
>>
>> The example [*] below specifies all arguments.  What happens when we
>> omit any?  They default to zero via default initializaion, except for
>> .default_value, which defaults to -1.
>>
>> Trap for developers: some arguments aren't actually optional!  If you
>> forget to specify @name or @qapi_type, the code compiles, but crashes at
>> run time.
>>
>> Not a fan.
>
> Agree (not a fan of C either). We could probably add more
> static/runtime checks. Or clearly state that there is room for
> improvements, or just drop it altogether - either as follow up or with
> the series. I leave that up to you since you are going to respin it.
> thanks!

I dropped it for v8.  Was a bit of a pain, but the patches became
simpler.

[...]



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 05:50:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 05:50:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467332.1676719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002LL-4D; Mon, 02 Nov 2026 05:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467332.1676719; Mon, 02 Nov 2026 05:50:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNkw8-0002LE-0l; Mon, 02 Nov 2026 05:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1467332;
 Sun, 01 Nov 2026 16:31:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <q.h.hack.winter@gmail.com>) id 1xNYSl-0000tZ-Rt
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 16:31:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNYSl-006pyT-8x
 for xen-devel@lists.xenproject.org; Sun, 01 Nov 2026 17:31:19 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae76940-2eae-0a2a0a5409dd-0a2a4503b2c2-16
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:31:19 +0100
Received: from [209.85.216.43] (helo=mail-pj1-f43.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <q.h.hack.winter@gmail.com>)
 id 6ae76955-fae8-0a2a45030019-d155d82b9ade-3
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 17:31:19 +0100
Received: by mail-pj1-f43.google.com with SMTP id
 98e67ed59e1d1-3ad0c2e71ebso397165a91.2
 for <xen-devel@lists.xenproject.org>; Sun, 01 Nov 2026 08:31:18 -0800 (PST)
Received: from localhost.localdomain ([113.102.236.131])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3ae6e944ba9sm15038585a91.8.2026.11.01.08.31.12
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Sun, 01 Nov 2026 08:31:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793550677; x=1794155477; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=t+qS3KmrGZsUjv/mhney5ZVlDlj8OOOx3Auq1Pk2R3EDzUKVdVVhexbjm6WcQXSrin
         a0qiVScCcdELyx3tXO7T1KcH/ZJg7LTjLlsf+ic+GCI67yjAKFCVmxBBVd+0ryP8DvIO
         VGlNIEY9gTbcFYEdkrNYCg1bMMZWl57Vp/udKMycEYqbyeeLQ7Ldf/BecMdrKykiqORL
         HHFIxFe7Wvi/iuVezM+K/yM4vlK2taBaBwkrD9Vhww/ayzCe/9FpsPXeFCrgb/OzkNax
         1T1LqzYJdwg0Z+SMDxx75R9fnkXTj7Ce1+cuGh8Xh3ljwpHbgXpxLKi1PhCzfyZcTFeC
         TlAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793550677; x=1794155477;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=z1wgGnLaHoKZu2/+Ud078CAK3gozxrFVUFtZdHR2t7Q=;
        b=XlzAiB/pvTa3ZeLB//NOIxrPuuifDMt9w+CTOE8koDT70hqR79yZ7cq9UTe4ok7pGF
         Bq1KcMydKOR9XOIvOypyIteKze0m57yyQWuzxPCVJRV0cvCHQtjvLwbdpbXW0HvdOEbS
         6geM80YkzkJGtaXmfWwwinlg2RdWt3L60QMmR+aI7hyvQwjrFtb0Tv9zY7D/W8BjWHpH
         8sh6q51PUeiR8yA2/45VGpLQlnOWJLTzuudiBv3BQzTh3Ft4Gj3iT3xvB+nektFZD5GO
         QKf62MFebUkdiQ0lUdxmc+zehabC9G7CeqGb6VRN+1z7EUUyOxOAtQsfWzP9/QldVH0e
         brIg==
X-Forwarded-Encrypted: i=1; AKwUvBybdoC8CUu1DfRxOtbQDOT1nCBC41uJQFi7ybMEAAo4UXLWcfAGOTqUQtXA6fkMy8MvWKT4BrD2LAw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8puQY0GXWhzarzwzFTk7/vy4ekURnZ1zFkxzWY0kacupHPzhfT
	E0yslraz6MkwVLONUoULNAc0hAcxj1w6tV07cpDddGXFUXuNk/hu1fWr
X-Gm-Gg: AYBFou0wvSrlNo/MEWIqXEmizeMgudEA3/MUZBNTx2QbdE/IcMm0sSXZaVvrX3BYnSs
	uqujatb0PVxEIb7CJT3lq7Jr79bwvIIEi2MViTpi1LD36NNs9sFzvmSMPZUmE1mE9l9WZJOhbdJ
	E6OX7jjKdHSZ0OpE1HTOseOQOuHmVnsJZcZIL3d/5s4zVnwFSyIGH8bpAwIllSF6QAderQXqBpQ
	sf41v1WioSvUsLzCgNs1F75y6hqEUqSRF9ufRmdzGjiQTctnFq2tpH0cIjJQyFUorN6kKqAsKe8
	xZt8L0ACd7yXX2pVQuYzXHLkc3uWUuXZHSNINzz/bMivE3FMpXZc/OEGAu0/j0SpA7hP7KMBIZi
	Muj1B1T81aGdLSFuYQsMx7MgxuwgXeY12kPMeZW1emmnx3dgGrER9+AW5ljXTQFuRdt7J0TojYB
	MKiJSyqP0dfkUzXTEISLeeq9XGRz6iM5rbnSkZoS/mmzkxLybwJVTK2+5wbFSaFpFicsyTbdREV
	ixJxMj2G4rx/1VJBhCHAlOOk2WzF8FBgfETUkVZpHLDVANUVniyX4Ozp/3wXHVTXFhMWNv+m8xQ
	GzWo1Phw4VeVW6MBt7D+f9U8Z9juDNMaW1NAV5K8oRl3Hn/6OwHiFpH98BHqSN+W7NkWVcuSTNB
	vDlK40w8EmQRWt8CK3edLdFo=
X-Received: by 2002:a17:90b:2cc6:b0:3ac:73c7:9c07 with SMTP id 98e67ed59e1d1-3ae89292da7mr11229213a91.0.1793550676949;
        Sun, 01 Nov 2026 08:31:16 -0800 (PST)
From: Qihang <q.h.hack.winter@gmail.com>
To: Juergen Gross <jgross@suse.com>,
	xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-kernel@vger.kernel.org,
	Qihang <q.h.hack.winter@gmail.com>,
	stable@vger.kernel.org
Subject: [PATCH] xen/privcmd: fix double free when an irqfd is shut down twice
Date: Mon,  2 Nov 2026 00:31:06 +0800
Message-ID: <20261101163107.55037-1-q.h.hack.winter@gmail.com>
X-Mailer: git-send-email 2.54.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793550679-6ECCB4E9-D6AF225B/0/0
X-purgate-type: clean
X-purgate-size: 3803

irqfd_deactivate() takes the irqfd off irqfds_list and queues
irqfd_shutdown().  queue_work() is not a once-only gate: it refuses to
enqueue a work item only while WORK_STRUCT_PENDING is set, and
process_one_work() clears that bit before it calls the work function.  So
nothing records that the shutdown work has already been queued, and
nothing protects the window between the start of irqfd_shutdown() and the
kfree() at its end.

Two paths call irqfd_deactivate() for the same irqfd:

  - privcmd_irqfd_deassign(), from the PRIVCMD_IRQFD_FLAG_DEASSIGN ioctl;

  - irqfd_wakeup(), with EPOLLHUP set, when the last reference to the
    eventfd file goes away, which runs wake_up_poll(&ctx->wqh, EPOLLHUP)
    from eventfd_release().

irqfds_lock serialises the two calls, but it does not make the second one
a no-op, and eventfd_ctx_fdget() takes a reference to the eventfd_ctx,
not to the struct file, so the last fd can still be closed while the
ioctl is running:

  CPU0                                 CPU1

  eventfd_ctx_fdget()
  spin_lock(irqfds_lock)
  list_del_init(&kirqfd->list)
  queue_work(&kirqfd->shutdown)        close(fd)
                                         eventfd_release()
                                           wake_up_poll(EPOLLHUP)
                                         irqfd_wakeup()
                                         spin_lock(irqfds_lock)
                                         irqfd_deactivate() again

If the work item has already started by then, its pending bit has been
cleared and the second queue_work() succeeds.  irqfd_shutdown() then runs
twice, so eventfd_ctx_remove_wait_queue(), eventfd_ctx_put() and kfree()
each hit the same object a second time; and when the second queue_work()
lands after the irqfd has been freed, the workqueue list operations write
to freed memory.

virt/kvm/eventfd.c has the same two callers and has had this guard since
the original irqfd support (721eecbf4fe99): irqfd_wakeup() calls
irqfd_deactivate() only if irqfd_is_active().  The comment there explains
why that is enough: the other side deactivates the irqfd before it takes
it off the waitqueue, and irqfd_shutdown() needs the waitqueue lock,
which this callback holds, so the irqfd cannot be freed under it.

Do the same here.  list_del_init() leaves the list head empty and the
irqfd stays off the list until kfree(), so it serves as a one-way
"active" flag.  The test is in irqfd_deactivate() rather than in
irqfd_wakeup() because privcmd_irqfd_deassign() walks irqfds_list and can
therefore never reach an inactive irqfd; only the wakeup path can, and a
single test covers both callers.

Fixes: f8941e6c4c712 ("xen: privcmd: Add support for irqfd")
Cc: stable@vger.kernel.org
Signed-off-by: Qihang <q.h.hack.winter@gmail.com>
---
 drivers/xen/privcmd.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 5e56fbc934478..221b31611343e 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -901,10 +901,25 @@ struct privcmd_kernel_irqfd {
 	poll_table pt;
 };
 
+static bool irqfd_is_active(struct privcmd_kernel_irqfd *kirqfd)
+{
+	lockdep_assert_held(&irqfds_lock);
+
+	return !list_empty(&kirqfd->list);
+}
+
 static void irqfd_deactivate(struct privcmd_kernel_irqfd *kirqfd)
 {
 	lockdep_assert_held(&irqfds_lock);
 
+	/*
+	 * Both the deassign ioctl and the eventfd wakeup path can reach
+	 * this function.  list_del_init() marks the irqfd inactive, so
+	 * only the first caller may queue the shutdown work.
+	 */
+	if (!irqfd_is_active(kirqfd))
+		return;
+
 	list_del_init(&kirqfd->list);
 	queue_work(irqfd_cleanup_wq, &kirqfd->shutdown);
 }
-- 
2.54.0 (Apple Git-157)



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 07:41:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 07:41:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467794.1676836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNmf8-0005nv-Ue; Mon, 02 Nov 2026 07:41:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467794.1676836; Mon, 02 Nov 2026 07:41:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNmf8-0005no-RL; Mon, 02 Nov 2026 07:41:02 +0000
Received: by outflank-mailman (input) for mailman id 1467794;
 Mon, 02 Nov 2026 07:41:01 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chunjie.zhu@citrix.com>) id 1xNmf7-0005nf-Be
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 07:41:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNmf6-008UYS-6A
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 08:41:00 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae83e81-bab6-0a2a0a5309dd-0a2a4506a998-30
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 08:41:00 +0100
Received: from [52.101.52.46]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae83e8a-195a-0a2a45060019-3465342ede1e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 08:40:59 +0100
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 (2603:10b6:408:37e::6) by DS3PR03MB873329.namprd03.prod.outlook.com
 (2603:10b6:8:43b::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 07:40:56 +0000
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902]) by LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 07:40:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=EXSlcyAAMvOqUm+78u5BHC8IKK4xPg0czm0XK+Tmim4t2eNtfR6XSjVPW/3nt4haQ0OrzzWX6sK/CIGlBafr1/M5kt86hXPlEFqS2LPZ7ElWYZXvxQPa7qXTpWhlYUaJFTVNUStM2ne8t+f2URHoF0gAPX3gPprpKHkbmKKMYOSvmP2NRryLi3mBA14j8LNUVSejjNAIdzq5llzTzHYlC859RTU2F6lZTaoGOwtaCSKPLSD0seOswuSUuclYFKxNqI7lTwaeW71RH9k2fKWCJDQLhHJOymKyLXiehZOUDrpG98CT/moyDbhFoq7LfUhLsB2JYs6hZCzg0A95tgpsHw==
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=OR0Ckv7xEebSlla+f9OO1sjMyqjy6XAa0wMxax9/WG4=;
 b=gFvxVyHUY65PhfkpvXmfi42SIuz3LXwMvc1nszUbfb0V7XGReahPUrl2GKqNxOWtju9fmMUc57yqNTgriEjLHFcd0iW9WDofZ8ZwlTPpogsniny5/bYXIqNREPPkLeVOapgNtdxcm+ahrcY6l7zXfc+PvFGyDrtaoaijtR+fEIF8HQQG2/Da8aDjcOreW5ojRFzVJZYpuNIP9mPztTBXkPf0+NHtXHOgs71398zV6DKzUwLFc9ArDZmRDyxLTmvtLaHh8Otl9QMfgv+zpb+dcNNQT/XYDMAnwr1lbNMKSuUICcvo9WOaUpuFyEVye30nh2S4b73kuPbrl0tNZhKTjQ==
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=OR0Ckv7xEebSlla+f9OO1sjMyqjy6XAa0wMxax9/WG4=;
 b=jxfg3+vLV2+1pRGf8CWPwF2PfzN/ULrN09HfcJxxynVvytelbzmvwhTw2dfTM9CS8g+Zq3FxBkGcLkXjI+LGwcBKl97wBCX3iOI6AnYpYLDiqy9Ghl3Q3gMY6W7EZpLgfI1HmOUmZ7twMDdxtjq6p14cmnUOjtj+POGOd20VCEE=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: chunjie.zhu@citrix.com
To: roger@xenproject.org
Cc: andrew.cooper3@citrix.com,
	jbeulich@suse.com,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
Date: Mon,  2 Nov 2026 15:40:42 +0800
Message-Id: <20261102074042.178236-1-chunjie.zhu@citrix.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20261030132419.84264-3-roger@xenproject.org>
References: <20261030132419.84264-3-roger@xenproject.org>
Content-Type: text/plain; charset=yes
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: JN3P275CA0122.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:d1::15)
 To LVXPR03MB989161.namprd03.prod.outlook.com (2603:10b6:408:37e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: LVXPR03MB989161:EE_|DS3PR03MB873329:EE_
X-MS-Office365-Filtering-Correlation-Id: b9e3a139-4041-4385-90e3-08df38b4a148
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|10067099003|18002099003|22082099003|56012099006|11063799006|261021121427099003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261022105027099003|261009223027099003|261028144727099003;
X-Microsoft-Antispam-Message-Info:
	9AUTGU/sWTlqiVO3dXywcko0PGpwVyhskFxBsQRjMuk5yXrFNJGuBt0I+MVhCxxUR0I5UqP1vfUumUEJnuCvDVr7Ea/yODXEf0VrQIGK5NQQWYYV2Uxy24OQBq1qvVWCWt7OqMQ08+LWXmXu33cf1bCQVeR9fcpxXZcgWCOd7c5f7kUkMZs+471VF+pPivXdxLntTrrYdf/WJw2OI+h3hEDlYL+LA+DPE1DA9RcSJd0Rym0SXRKG84tEk6uLmImxndKw5YVGwNQaDWEa1KNoNNf2p83Wb0qknaUn4EvAGjwnAtScLJP1y9hcxFeTX0B3ZuQfXUrKV77SPuE4JouDKG3tHFS45lU5tauKX9Sz+OjcGDwbP8fT3hiSPttv/d5uTDpYRz3yXUcS8frLnZ/wCi20LEDp61vej1K8M0ge9BwIUalYmR4ZHqYIwJUHN0y1oByI+Es5msBj2KSz5UrIysef/R/I2teuXxbk5GOZ9mXpobWqUYNY+kYa+A3t7YBN9efY5IKqEPpJg+7qniUrHvoCs3BVzZ8MQOf15j+8kIz1bXaSuq3rpvqhyC8a5oFaqytXiUhwfSHPB+LeIs+jRSV6TX9O0dBeWnKqC0ev54GTJ3J7JHldr6ARxGsEG2d8PXq0ltTApCQH5Nt2TQXF+74Rc/kLbskIVn86MfrQzHU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVXPR03MB989161.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006)(261021121427099003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261022105027099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?C0ZncV+UitzTs9Y3Eyy1C2s6auZiCas96b1f4QnXM+gllhSrLkf3NyIakZdA?=
 =?us-ascii?Q?6H07zvtEkNNMOq9NCE0LpCtqVffuD7tdP1m3KGFNhKEtYAsGrQqPLjg5SUwT?=
 =?us-ascii?Q?JGAhJwgfXizC54jWIodorSlF269xeMb4MMkLRcnsMQtm+M5KXDppSkQtpRot?=
 =?us-ascii?Q?kttyW9AAXOqYLXG+UO99CW6a7YmKy4xkw31VkhjCjhAQkiTIZkDsSW65kLwU?=
 =?us-ascii?Q?WKTP04apfHUBdssRDLmrQEsX8V0jEU0j0naRfGimvBXZ8yUvuP8MDfi+ssCl?=
 =?us-ascii?Q?PqmrjpnZESFCXA2pX30RlD8u/oPFZsvK2/j/6xCMA/6VZOtMJqQtfDBOeZoN?=
 =?us-ascii?Q?qzw+/6gtW9iQdLuCVDkjMbC/bxXNfHdVH+BHkCHizaRnXfobJFiltB9/ezI9?=
 =?us-ascii?Q?phaNHvMrwkJFzTom+bJ4D9feEZ/0fkCwmYpxpKwJOC6WlK5HtGHp3fWm8p0+?=
 =?us-ascii?Q?2py7o7QatxocVylABdAnNK6JBPfGYquI3KJs8MsbegoQJpu5xp029UVnVb2D?=
 =?us-ascii?Q?ms2V0ilGkK6gfT5CgTovOqojNvTTLZAcNuXAuq+pxtYA09EU00bucKypvOFZ?=
 =?us-ascii?Q?rs6ZTHKBgMpdKFn8s8w3QC96Wrhe24vEHEvix2xhhJv2r33KBV6mfzDvBsjt?=
 =?us-ascii?Q?5bs7NOl+k9NUSW+RBuzWyJAP9D2OOzBH1p4u82m4X6uxBhVwrDj+KRVHeVQk?=
 =?us-ascii?Q?T/1qG8qpBArN+h8fsaf5wokPFqQGw1Q4leuW7FbpiFxqCIn1P9WjMtDFaZVe?=
 =?us-ascii?Q?IbLHaMF0CDAE2IS9OipiH5cgyCLM6xg4tArkiZuSNxr1SUgi0n4UhJik6xJV?=
 =?us-ascii?Q?jUN6WDo/DuzXUT2xL4IppnHMr1v/wtU9tYDV907uOD4Fw8VLe8QbfEYPvcRy?=
 =?us-ascii?Q?D2s+ZtOzBLmZNhIf1I4hZHGpIGpnSYaxajWGrjIvsrI8/ofpiSQguNSKNGz0?=
 =?us-ascii?Q?Uf8mheU2FeOmLOr2UQuH28hrpLV/L3EQclHL0BnriMk1EXhRD4C8vcj12jTb?=
 =?us-ascii?Q?l992JMfBc0PUsY4seCx4VAL9anijLJ65G5AV88Gf8MTt5zekdzErNUva/JZX?=
 =?us-ascii?Q?aePHtUiMAyeBwHp+3GaequevbxzvfzpETasNSs+hmTTHpYy+gjGfDKRxsn8o?=
 =?us-ascii?Q?wVSJWD8C88hb1dgy+6Nh8jKz5deDI+HrRyRGiV2zoW1cl6+Nse7GVwvPru2X?=
 =?us-ascii?Q?UOp9ChwugNdFgl34KoRGCdluUEjRzAQnHgkcJgfLYQCOCbLwUqtVL2h9fwKO?=
 =?us-ascii?Q?uEyOod3fL5q5fj4vkBvRk6xM69bh9twh8bN8WY8FScVkopG8fajKpthTo7aQ?=
 =?us-ascii?Q?Z32wRbRiQly91ECgTBWweEdF9F0SirmbN5GMEsJnfEMGFy6J5qjD3G+HemZq?=
 =?us-ascii?Q?7vmogN6j1Ngk6ddxhTg0311sx4q2C813quukVpmh9I/fOemf25Tr89XWKp1K?=
 =?us-ascii?Q?xGdGtJU3r4OaGKWldD4ZDnXI83ZpUqvfIHYaJ7fJVdOBtxVmKc5NRAtJOqdQ?=
 =?us-ascii?Q?fWrZsqBj6Xi/LZ2kR8Xd3kqYdukufPyAFiWS3YAG6Cg+SFX2gifSFMt8aaxh?=
 =?us-ascii?Q?TWe1GQ8wwesjnP+DWJn9BduuRU9c+aHyvhVgCbhQOYUbQK8XvtmJJVsALGKL?=
 =?us-ascii?Q?bj+0Y51pzqlXuzNbDBoUGajKrJ3vPhsBZqGASGLAtblUcZAjFXh6f44BQfRI?=
 =?us-ascii?Q?j5pi+6dH/N4sPASUWvLyaoW8LWYtRTgbXRzG/83H6PQxoxNrUz7M8GU70kgA?=
 =?us-ascii?Q?9th0vTrwJQ=3D=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b9e3a139-4041-4385-90e3-08df38b4a148
X-MS-Exchange-CrossTenant-AuthSource: LVXPR03MB989161.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 07:40:56.6150
 (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: c2EYLRfDwCltD4JyRDDkI5B0zLLuOtGc83LtJcp9tyHjm3F1i/dm8f7dUGTQCxNo4UFVwgg6fk+H+fTrznf0HQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR03MB873329
X-purgate-ID: tlsNG-16d1c6/1793605260-1F0C777B-794809F7/0/0
X-purgate-type: clean
X-purgate-size: 7193

On Fri, Oct 30, 2026 at 02:24:19 PM, Roger Pau Monne <roger@xenproject.org> wrote:

> The current logic syncs the APs' TSC with the BSP both at reset and when
> setting the vCPU state.  This doesn't match hardware behavior, where APs
> are only in sync at platform start.

> Move the TSC sync so it's done in hvm_vcpu_initialise(), that's called a
> single time at vCPU creation.  This matches the hardware behavior.
> INIT-SIPI and VCPUOP_initialise no longer re-sync a vCPU's TSC to vCPU 0's.
>
> On migration the TSC offset for offline vCPUs is not transferred
> (hvm_save_cpu_ctxt() skips offline vCPUs).  To avoid an unexpected skew
> synchronize offline vCPUs with the first online vCPU, taking into account
> the TSC_ADJUST value.
>
> The clearing of TSC_ADJUST is also made consistent with hardware behavior:
> clear it on S3 resume, but not across an INIT-SIPI or VCPUOP_initialise.
> Additionally, on S3 resume start all vCPUs from a shared TSC reading, so
> they are in sync.
>
> Fixes: c31f8336e64e ("[HVM] Initialise AP TSC to same as BP TSC.")

This looks wrong.  c31f8336e64e only added the sync to hvm_bringup_ap(),
which no longer exists.  The code removed here comes from bcba667e12e3
(INIT-SIPI) and 192df6f9122d (VCPUOP_initialise).

> Fixes: 6e0336351ed9 ("x86: Implement TSC adjust feature for HVM guest")
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> ---
>  xen/arch/x86/hvm/domain.c |  5 -----
>  xen/arch/x86/hvm/hvm.c    | 19 +++++++++++--------
>  xen/arch/x86/hvm/save.c   | 34 ++++++++++++++++++++++++++++++++--
>  xen/arch/x86/time.c       |  5 ++---
>  4 files changed, 45 insertions(+), 18 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
> index 978d8b222256..71f49ec7ce9f 100644
> --- a/xen/arch/x86/hvm/domain.c
> +++ b/xen/arch/x86/hvm/domain.c
> @@ -312,11 +312,6 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
>      hvm_set_segment_register(v, x86_seg_es, &es);
>      hvm_set_segment_register(v, x86_seg_tss, &tr);
>
> -    /* Sync AP's TSC with BSP's. */
> -    v->arch.hvm.cache_tsc_offset =
> -        d->vcpu[0]->arch.hvm.cache_tsc_offset;
> -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> -
>      paging_update_paging_modes(v);
>
>      hvmemul_cancel(v);
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index ef9c7cd05777..81e90cc8fc8e 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -1667,6 +1667,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
>          /* Init guest TSC to start from zero. */
>          hvm_set_guest_tsc(v, 0);
>      }
> +    else
> +    {
> +        /* Start in step with vCPU 0, as all CPUs do at power-on. */
> +        v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset;
> +        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> +    }
>
>      return 0;
>
> @@ -4021,13 +4027,6 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
>      hvm_set_segment_register(v, x86_seg_gdt, &reg);
>      hvm_set_segment_register(v, x86_seg_idt, &reg);
>
> -    /* Sync AP's TSC with BSP's. */
> -    v->arch.hvm.cache_tsc_offset =
> -        v->domain->vcpu[0]->arch.hvm.cache_tsc_offset;
> -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> -
> -    v->arch.hvm.msr_tsc_adjust = 0;
> -
>      paging_update_paging_modes(v);
>
>      v->arch.flags |= TF_kernel_mode;
> @@ -4079,9 +4078,13 @@ static void hvm_s3_resume(struct domain *d)
>      if ( test_and_clear_bool(d->arch.hvm.is_s3_suspended) )
>      {
>          struct vcpu *v;
> +        uint64_t at_tsc = rdtsc();
>
>          for_each_vcpu( d, v )
> -            hvm_set_guest_tsc(v, 0);
> +        {
> +            v->arch.hvm.msr_tsc_adjust = 0;
> +            hvm_set_guest_tsc_fixed(v, 0, at_tsc);
> +        }
>          domain_unpause(d);
>      }
>  }
> diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
> index 8ab64057064e..65ebfd384d69 100644
> --- a/xen/arch/x86/hvm/save.c
> +++ b/xen/arch/x86/hvm/save.c
> @@ -289,6 +289,7 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
>  {
>      const struct hvm_save_header *hdr;
>      struct hvm_save_descriptor *desc;
> +    struct vcpu *v;
>      int rc;
>
>      if ( d->is_dying )
> @@ -302,8 +303,6 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
>      rc = arch_hvm_check(d, hdr);
>      if ( real )
>      {
> -        struct vcpu *v;
> -
>          ASSERT(!rc);
>
>          /*
> @@ -341,6 +340,37 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
>              /* Reset cursor for hvm_load(, true, ). */
>              if ( !real )
>                  h->cur = 0;
> +            else
> +            {
> +                const struct vcpu *base = NULL;
> +
> +                /*
> +                 * Offline vCPUs have no CPU record.  Adjust the TSC offset
> +                 * based on the first online vCPU, taking into account
> +                 * TSC_ADJUST which is saved regardless of whether the vCPU is
> +                 * offline.
> +                 */
> +                for_each_vcpu(d, v)
> +                    if ( !test_bit(_VPF_down, &v->pause_flags) )
> +                    {
> +                        base = v;
> +                        break;
> +                    }
> +
> +                if ( !base )
> +                    return 0;

This silently skips the offline vCPUs.  If that ever causes a problem it
will be hard to diagnose, so please add a comment or a log message.

> +
> +                for_each_vcpu(d, v)
> +                    if ( test_bit(_VPF_down, &v->pause_flags) )
> +                    {
> +                        v->arch.hvm.cache_tsc_offset =
> +                            base->arch.hvm.cache_tsc_offset -
> +                            base->arch.hvm.msr_tsc_adjust +
> +                            v->arch.hvm.msr_tsc_adjust;
> +                        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> +                    }
> +            }
> +
>              return 0;
>          }
>
> diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
> index f37fddc61e47..79c7123c0a5b 100644
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -3087,9 +3087,8 @@ int tsc_set_info(struct domain *d,
>               * set_tsc_offset() is called from hvm_vcpu_initialise() before
>               * tsc_set_info(). New vtsc mode may require recomputing TSC
>               * offset.
> -             * We only need to do this for BSP during initial boot. APs will
> -             * call set_tsc_offset() later from hvm_vcpu_reset_state() and they
> -             * will sync their TSC to BSP's sync_tsc.
> +             * We only need to do this for BSP during initial boot.  APs copy
> +             * vCPU 0's offset when created in hvm_vcpu_initialise().
>               */
>              d->arch.hvm.sync_tsc = rdtsc();
>              hvm_set_tsc_offset(d->vcpu[0],
> -- 
> 2.55.0
>
>
>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 08:09:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 08:09:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467813.1676844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNn6r-0000tF-Dw; Mon, 02 Nov 2026 08:09:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467813.1676844; Mon, 02 Nov 2026 08:09:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNn6r-0000t8-BI; Mon, 02 Nov 2026 08:09:41 +0000
Received: by outflank-mailman (input) for mailman id 1467813;
 Mon, 02 Nov 2026 08:09:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNn6q-0000t2-9s
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 08:09:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNn6p-006J7v-7s
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:09:39 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8453e-e002-0a2a0a5209dd-0a2a4505e320-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:09:35 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8453f-4cb1-0a2a45050019-d155802ec93d-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:09:35 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4a20bde60a0so19989545e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 00:09:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4aa81a896ecsm343448895e9.9.2026.11.02.00.09.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 00:09:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793606975; x=1794211775; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=WkjuEr0ZHS6yz+4IZVRbzWP0WQjy7Wkzzke+VN3k/0M=;
        b=agjeh3/DLo6FwDcvEUj9f5052fuhIquLf5a7ZEErROeg17ZaYC8vC87ouBpaZQVsMi
         XBhy4iN8wBgwxJqxifzXF5ULI8rL2qep/MHLa+TABPYuHTNhvBQJgY3KBsi+m+8Kq+Pn
         EO13wnEssSMJjbgVMTr01eL+DvmjR/2A6B4fixn0bRL1VwluVBB93k01WYa1ly0E9pVL
         UpVA58Su4bC/OQQqqRQDG9PH2/KYiwShYjK/BpsLALmNJoyOrTZkz8feBeySeEKiXS88
         xGDDpwoaKHqTu78ZK3tk4+IcvKGB5yMrTIdVzKPhlA+DoPEQPGNdrIobk3FZnlpvcTJl
         SuDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793606975; x=1794211775;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=WkjuEr0ZHS6yz+4IZVRbzWP0WQjy7Wkzzke+VN3k/0M=;
        b=xBrr0SFAesRlMuY+3P0twJGrsYN6jdP44phXDDbPRUTyR+agVnWwm7TeWBwo+v7Gdx
         VkhQhblwQ0XPZT1mYW5L2AvhwdgUgzQWpvQgSpcKfuJwl7GhacofIonSZfZZU8k8rO5k
         ha1I+QIWFogfMjfxN+xJXNt6WrsVgboxvIAHxUH7pb7AqIkKQctQiHBEWysgSykag8i5
         Fu5/xg1zDRcgSz0Y+vR1v+VO+yvsMTIuKVVx9LNZUbycd5cnI8LZ/iqfTyfuP2hQ0+lv
         ccgzNZH5MZ1VrGrFVRq2zOifrVVBme8qz/X6EbePsgb1Xsp9yU6aisq9yJ15RJ+Uqjtz
         nuTA==
X-Gm-Message-State: AFq9FYKGkVhawqMXLcVo+epQiGLdQUkFTNmpb39/IUNeMSOZ8maul9Gi
	YhVFytndlfNWnBsWteEDYWVKbT29nQbUO8ctAxp6wta1T3Tc7ohS/RJ9nWy5SIZ0ZA==
X-Gm-Gg: AYBFou0CnvRn1Dw8U6+lvIJHcOt3HOWmj5ZGtQF/XxjlNtRRRcWxuHi7xlDpaah+uuQ
	1JuELLlMGNE0gC/SopUO1YCgxdyDg+kTHXdCUAjcDTQro5iewwWWst2ujYNKIXnB5wXegpE5xWb
	croYVWw4JYJ9PyGKDIYJD3b2m/Gxu5FoOEDMqvigWByOZYd+wcoESmwTTi5fV5xFsX9RQbvJTFp
	ha96GM3iZpt4xY74WwpoWbhwvJXoKbpTcGSD4RSm/L8xypnbxqUnWmZK/J49BhT9CnA+t9fB5EL
	ihlPy+qPVQYRUKlIOmA5w2eNTF6n1FGYmXRJFLKor0kMVgE+rElBw1fjczdQQ1j12EcQaAaBOgx
	iNR5DLsjOaq6ckowVN2k3IZHHoiOcTKdZz+Bbi98q+dpPLcNNGUX5YFyI4pUV5NkVtHGAa8278x
	64Lx1Kkn9TIVYAI4yrR4ilM2W7OLdw3iPCtozi7/ZyqFZ7euJncVWLDIyutpA1z8Lj5/mHpaxHW
	cCQf9RhiihabK0ouFrBDgK8d6criX4v7L8CyduszUIHG/RrE5+mX57CW/964WlqK+Iu8x5GWpF8
	/7ok99pVaqfe23QrV3eGmgweEjOf0e4oErSNfJY1j5pDySTCMBhuCHFrZhMDXICnljtGPqFiujB
	IxiMoResUKY9897A=
X-Received: by 2002:a05:600c:6211:b0:4a1:80d8:aed5 with SMTP id 5b1f17b1804b1-4ac17191046mr221775665e9.6.1793606975131;
        Mon, 02 Nov 2026 00:09:35 -0800 (PST)
Message-ID: <a9698062-27a5-4fc7-b507-4536f3685f5d@suse.com>
Date: Mon, 2 Nov 2026 09:09:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/3] common: introduce "brk" allocator
To: George Dunlap <dunlapg@umich.edu>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
References: <8ad3beb3-af5a-477b-af97-614edb22631a@suse.com>
 <4fc90702-fb9a-4f96-88f0-35bd3b4857f4@suse.com>
 <CAFLBxZZ5i9E6P_Gbt79coQikRG2uscxGRb+yAs2++U_Mkku9_w@mail.gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAFLBxZZ5i9E6P_Gbt79coQikRG2uscxGRb+yAs2++U_Mkku9_w@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793606975-F78BE2A1-1F5ED1BF/10/78276251493
X-purgate-type: spam
X-purgate-size: 4519

On 29.10.2026 22:40, George Dunlap wrote:
> On Wed, Oct 14, 2026 at 2:02 PM Jan Beulich <jbeulich@suse.com> wrote:
>> --- /dev/null
>> +++ b/xen/arch/x86/include/asm/brk.h
>> @@ -0,0 +1,23 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +#ifndef X86_BRK_H
>> +#define X86_BRK_H
>> +
>> +static inline unsigned long brk_adjust_start(unsigned long start)
>> +{
>> +    unsigned int subsys;
>> +
>> +    /*
>> +     * Only xen.efi will have the symbol __subsystem__ available, and it'll
>> +     * be non-zero (10) there.  In ELF the symbol will be undefined, and
>> +     * hence zero will be loaded into the register.
>> +     */
>> +    asm ( ".weak __subsystem__; mov $__subsystem__, %0" : "=r" (subsys) );
>> +
>> +    /* using_2M_mapping() isn't available here. */
>> +    if ( IS_ENABLED(CONFIG_XEN_ALIGN_2M) || subsys )
>> +        start = PAGE_ALIGN_2M(start);
> 
> This seems a bit fragile: As it happens this corresponds to the clip
> to brk_end in setup.c in patch 2, but if it didn't, then the boundary
> in the resulting e820 reservation and what gets unmapped in
> brk_free_unsed() wouldn't match.
> 
> Claude seems to think you could make using_2M_mapping() available
> here; and then brk_adjust_start() becomes return using_2M_mapping() ?
> PAGE_ALIGN_2M(start) : start.  That drops the ASM, and the comment
> about the linker producing a bogus relocation.  2/3 could then do
> brk_end = brk_adjust_start(brk_cease()), and guaranteeing that the two
> are the same.

I don't think exposing using_2M_mapping() globally would be a good idea.

>> --- /dev/null
>> +++ b/xen/common/brk.c
>> @@ -0,0 +1,74 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +
>> +#include <xen/brk.h>
>> +#include <xen/efi.h>
>> +#include <xen/lib.h>
>> +#include <xen/mm.h>
>> +#include <xen/page-defs.h>
>> +
>> +#if __has_include(<asm/brk.h>)
>> +# include <asm/brk.h>
>> +#endif
>> +
>> +extern char __brk_start[];
>> +extern const char __bss_end[];
>> +
>> +static unsigned long __initdata allocated;
>> +static bool __initdata finished;
>> +
>> +void *__init brk_alloc(size_t size)
>> +{
>> +    void *ptr;
>> +
>> +    if ( finished )
>> +        return NULL;
>> +
>> +    /* Allocations PAGE_SIZE and up will be page-aligned. */
>> +    if ( size >= PAGE_SIZE )
>> +        allocated = ROUNDUP(allocated, PAGE_SIZE);
>> +
>> +    ptr = __brk_start + allocated;
>> +
>> +    allocated += ROUNDUP(size, sizeof(void *));
>> +
>> +    if ( allocated > __bss_end - __brk_start )
>> +    {
>> +        printk_once_init(
>> +            "%pS: over-sized BRK request: %zu bytes\n",
>> +            __builtin_extract_return_addr(__builtin_return_address(0)),
>> +            size);
>> +        return NULL;
>> +    }
> 
> You bump the global `allocated` variable here before the check, and
> don't reset it afterwards.   All future allocation attempts will
> continue to bump this value, and
> continue to fail.  So now allocated + brk_start is past _bbs_end,
> brk_cease() will return something past bss_end, and (in patch 2) pass
> that as reserve_e820_ram().  So now, so far from reducing the size
> reserved to Xen by , we may be *increasing* the size reserved to Xen
> with unused pages.  Worse, if it ends up overshooting the region Xen
> is in, then reserve_e820_ram() will fail, and the host will panic.
> 
> This should probably use a local variable, then set the global
> variable after we've determined that the check has succeeded.

Could be done, but did Claude also realize that failure to set aside
enough space so allocations can't fail is, effectively, a fatal bug?
The printk_once_init() isn't a panic() here merely because panic()
isn't going to work very well when still in EFI boot services: We
shouldn't halt the system there, we should only yield control back to
EFI (such that another boot attempt can be made). See patch 2.

> The other thing Claude points out is that is_xen_fixed_mfn() isn't
> updated, so if ever any of these pages want to be offlined for any
> reason, it will be blocked, claiming that they're part of Xen, even if
> they've already been assigned to a guest.  This is a pre-existing
> situation that is extended by this patch.

This indeed needs taking care of, albeit in patch 2. It's not clear
to me though why you (they?) say this would be a pre-existing
situation. The use of __2M_rwdata_end there looks correct to me prior
to this series.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 08:35:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 08:35:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467821.1676854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNnVS-0004fv-7F; Mon, 02 Nov 2026 08:35:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467821.1676854; Mon, 02 Nov 2026 08:35:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNnVS-0004fo-4i; Mon, 02 Nov 2026 08:35:06 +0000
Received: by outflank-mailman (input) for mailman id 1467821;
 Mon, 02 Nov 2026 08:35:04 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger@xenproject.org>) id 1xNnVQ-0004fh-No
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 08:35:04 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNnVQ-0000000AgWs-2cMs;
 Mon, 02 Nov 2026 08:35:04 +0000
Received: from 224.pool85-54-217.dynamic.orange.es ([85.54.217.224]
 helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNnVQ-00000009iUR-0OzN;
 Mon, 02 Nov 2026 08:35:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=In-Reply-To:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date;
	bh=pxbttvmipgbs0Tapv4Nkji5GYQ56KN3Fca8IynmY2l0=; b=d/5HKtJ6sgi+Wb94sQIIcE4eg/
	6bH7S7SAng3ZwoQQ0Wkq8E+Q5bsnoPQx2AjjiulZZIURZbK9nGJeN6o6ZTmEeV2aiLwWJCwLSqAzs
	cixa07PdG2BrK6KvcDWLYW4tkxWfyK3C67XHWocemdZFAREoEWkK9dt10wGFr1pGbGwY=;
Date: Mon, 2 Nov 2026 09:34:56 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>
To: chunjie.zhu@citrix.com
Cc: andrew.cooper3@citrix.com, jbeulich@suse.com, teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
Message-ID: <auhLMExBiCspLd49@Mac.lan>
References: <20261030132419.84264-3-roger@xenproject.org>
 <20261102074042.178236-1-chunjie.zhu@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20261102074042.178236-1-chunjie.zhu@citrix.com>

On Mon, Nov 02, 2026 at 03:40:42PM +0800, chunjie.zhu@citrix.com wrote:
> On Fri, Oct 30, 2026 at 02:24:19 PM, Roger Pau Monne <roger@xenproject.org> wrote:
> 
> > The current logic syncs the APs' TSC with the BSP both at reset and when
> > setting the vCPU state.  This doesn't match hardware behavior, where APs
> > are only in sync at platform start.
> 
> > Move the TSC sync so it's done in hvm_vcpu_initialise(), that's called a
> > single time at vCPU creation.  This matches the hardware behavior.
> > INIT-SIPI and VCPUOP_initialise no longer re-sync a vCPU's TSC to vCPU 0's.
> >
> > On migration the TSC offset for offline vCPUs is not transferred
> > (hvm_save_cpu_ctxt() skips offline vCPUs).  To avoid an unexpected skew
> > synchronize offline vCPUs with the first online vCPU, taking into account
> > the TSC_ADJUST value.
> >
> > The clearing of TSC_ADJUST is also made consistent with hardware behavior:
> > clear it on S3 resume, but not across an INIT-SIPI or VCPUOP_initialise.
> > Additionally, on S3 resume start all vCPUs from a shared TSC reading, so
> > they are in sync.
> >
> > Fixes: c31f8336e64e ("[HVM] Initialise AP TSC to same as BP TSC.")
> 
> This looks wrong.  c31f8336e64e only added the sync to hvm_bringup_ap(),
> which no longer exists.  The code removed here comes from bcba667e12e3
> (INIT-SIPI) and 192df6f9122d (VCPUOP_initialise).

TBH it's a long tail of code movement.  The code in hvm_bringup_ap()
was latter moved into hvm_vcpu_initialise(), hence why that commit is
used as the Fixes tag.  Note that previous to c31f8336e64e the TSC
sync was not applied, as the chunk was protected with #if 0.


> > Fixes: 6e0336351ed9 ("x86: Implement TSC adjust feature for HVM guest")
> > Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> > ---
> >  xen/arch/x86/hvm/domain.c |  5 -----
> >  xen/arch/x86/hvm/hvm.c    | 19 +++++++++++--------
> >  xen/arch/x86/hvm/save.c   | 34 ++++++++++++++++++++++++++++++++--
> >  xen/arch/x86/time.c       |  5 ++---
> >  4 files changed, 45 insertions(+), 18 deletions(-)
> >
> > diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
> > index 978d8b222256..71f49ec7ce9f 100644
> > --- a/xen/arch/x86/hvm/domain.c
> > +++ b/xen/arch/x86/hvm/domain.c
> > @@ -312,11 +312,6 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
> >      hvm_set_segment_register(v, x86_seg_es, &es);
> >      hvm_set_segment_register(v, x86_seg_tss, &tr);
> >
> > -    /* Sync AP's TSC with BSP's. */
> > -    v->arch.hvm.cache_tsc_offset =
> > -        d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > -
> >      paging_update_paging_modes(v);
> >
> >      hvmemul_cancel(v);
> > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> > index ef9c7cd05777..81e90cc8fc8e 100644
> > --- a/xen/arch/x86/hvm/hvm.c
> > +++ b/xen/arch/x86/hvm/hvm.c
> > @@ -1667,6 +1667,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
> >          /* Init guest TSC to start from zero. */
> >          hvm_set_guest_tsc(v, 0);
> >      }
> > +    else
> > +    {
> > +        /* Start in step with vCPU 0, as all CPUs do at power-on. */
> > +        v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > +        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > +    }
> >
> >      return 0;
> >
> > @@ -4021,13 +4027,6 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
> >      hvm_set_segment_register(v, x86_seg_gdt, &reg);
> >      hvm_set_segment_register(v, x86_seg_idt, &reg);
> >
> > -    /* Sync AP's TSC with BSP's. */
> > -    v->arch.hvm.cache_tsc_offset =
> > -        v->domain->vcpu[0]->arch.hvm.cache_tsc_offset;
> > -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > -
> > -    v->arch.hvm.msr_tsc_adjust = 0;
> > -
> >      paging_update_paging_modes(v);
> >
> >      v->arch.flags |= TF_kernel_mode;
> > @@ -4079,9 +4078,13 @@ static void hvm_s3_resume(struct domain *d)
> >      if ( test_and_clear_bool(d->arch.hvm.is_s3_suspended) )
> >      {
> >          struct vcpu *v;
> > +        uint64_t at_tsc = rdtsc();
> >
> >          for_each_vcpu( d, v )
> > -            hvm_set_guest_tsc(v, 0);
> > +        {
> > +            v->arch.hvm.msr_tsc_adjust = 0;
> > +            hvm_set_guest_tsc_fixed(v, 0, at_tsc);
> > +        }
> >          domain_unpause(d);
> >      }
> >  }
> > diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
> > index 8ab64057064e..65ebfd384d69 100644
> > --- a/xen/arch/x86/hvm/save.c
> > +++ b/xen/arch/x86/hvm/save.c
> > @@ -289,6 +289,7 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> >  {
> >      const struct hvm_save_header *hdr;
> >      struct hvm_save_descriptor *desc;
> > +    struct vcpu *v;
> >      int rc;
> >
> >      if ( d->is_dying )
> > @@ -302,8 +303,6 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> >      rc = arch_hvm_check(d, hdr);
> >      if ( real )
> >      {
> > -        struct vcpu *v;
> > -
> >          ASSERT(!rc);
> >
> >          /*
> > @@ -341,6 +340,37 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> >              /* Reset cursor for hvm_load(, true, ). */
> >              if ( !real )
> >                  h->cur = 0;
> > +            else
> > +            {
> > +                const struct vcpu *base = NULL;
> > +
> > +                /*
> > +                 * Offline vCPUs have no CPU record.  Adjust the TSC offset
> > +                 * based on the first online vCPU, taking into account
> > +                 * TSC_ADJUST which is saved regardless of whether the vCPU is
> > +                 * offline.
> > +                 */
> > +                for_each_vcpu(d, v)
> > +                    if ( !test_bit(_VPF_down, &v->pause_flags) )
> > +                    {
> > +                        base = v;
> > +                        break;
> > +                    }
> > +
> > +                if ( !base )
> > +                    return 0;
> 
> This silently skips the offline vCPUs.  If that ever causes a problem it
> will be hard to diagnose, so please add a comment or a log message.

Is it a realistic situation to have a stream with all vCPUs offline?
I was about to add an ASSERT_UNREACHABLE() here, but that's not a wise
move since the restore stream is external, and could be crafted in
such a way.  Also, if there's no online vCPUs, does it matter to sync
the vCPUs' TSC?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 08:51:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 08:51:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467829.1676862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNnko-0007MJ-JX; Mon, 02 Nov 2026 08:50:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467829.1676862; Mon, 02 Nov 2026 08:50:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNnko-0007MC-GG; Mon, 02 Nov 2026 08:50:58 +0000
Received: by outflank-mailman (input) for mailman id 1467829;
 Mon, 02 Nov 2026 08:50:57 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNnkn-0007M5-0b
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 08:50:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNnkl-002T9P-V2
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:50:55 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae84eed-8faa-0a2a0a5109dd-0a2a450ae0e4-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:50:55 +0100
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae84eef-f2d2-0a2a450a0019-d155dd29ed03-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:50:55 +0100
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-48afcfc4bf5so2704978f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 00:50:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71bae0f4sm16679623f8f.58.2026.11.02.00.50.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 00:50:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793609455; x=1794214255; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=FVtmsD2A3Skx7Z9VQGNohnm35n6v3YCVrjge9Lv/5Tw=;
        b=bOTgSfgICcFjgYdWLhgX6v9meQS7nYZqvdzblJDqxhnwHB71cEise4snTHwa+pik03
         JGJ7vy0PD1eXZCREwBfNcmWfvqGIW7QVF8s3RgLfflaK2zWHdIi/gdTibfmyWWDor9XL
         gSImljT95KaaHpFUhbAQW1oRVC9VYrOTQyDXx/KoEo5aSgZfndL1Sa10pPFYujj9FjeX
         lc/i6BryTSVVImcAELkhjowBL/EOnyyx67Hhzk9JdM7zW92Fx5DNXJtICb56tF8NPxH7
         mjKZOrwJPgEhkyJi7HRiNBODabgR6+AuOdvSHkv9ibLFzhtNy6o4rW3rtZec1+bimKhb
         Ez8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793609455; x=1794214255;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=FVtmsD2A3Skx7Z9VQGNohnm35n6v3YCVrjge9Lv/5Tw=;
        b=s01hVFd0h9rsdIpKOMEnb8sg7xHNPz+6ayDRSl3Pc6A/PZ9JUAKR8Xterc4EWm/+mz
         nScPZ2dTHFg2lDA8POkEsaccGlU7MtJtj/edcqahukgk4qx5l5MljsZDWT2fF0+LKzz0
         WlUjg+ettj3unLhVkVtHQibhuszFyfkOb4Sx093FsZvFsq72csj4tjIDzEbfevDONiZm
         EcMJjwM3U7YSuVu1DfT1Lwo3vAgP9YobQA+SuZjRp/AxRv8tSi1TOvvdTlcMLwZFUMxK
         bZ3t8vZO1DSEPKswhviyaWHjNuXYqRUlVSx+FLpV74aPNAz27wyFrNz2Stf9YaHdlvMe
         L2bQ==
X-Forwarded-Encrypted: i=1; AKwUvBwg6h16X5CW1HuNTev8Tu5zWoEomOYMr/NodacnXb0+IeCdGX+5a3vPdiLwSysXRgxezBU3HJtcCQ0=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9yAVBXds0sfVeCpaCXjpoCH215nvqRRvcJXIUJfWbHVZO91r0r
	78pkPbgm/zOr0bD5haBCoGCMZteVznq0seYgouXh8yhXBfzTQbaLFYY1hxwyCdYHOQ==
X-Gm-Gg: AYBFou09pCrqlH4CGby9fkEG7LFLmklcMnns+WKj29K86dY6wJQrVfv8kaMlYpNR89o
	t+7fibQ8Z9V74Y9EOHUVyuL3uoCipovLf+wZDM8BpWqOcPgVHrXqBwZANtTlya/8Jt72iwqX+Cs
	QFPL2Ow3WMjUz+W4Jl9NU93+ZGBZMuqUhfNAVQlGEljXVuAqjlPqCXI3oGaYwhZe/ncG67/GQRd
	JA+jLMtTWPsOE7BuEIF4sOVosOs5dJIsJaG9xVqzINM8fSCZTU0PBnES0T0VYoTcTvbwe3oEetM
	QD4Saco4hyGiiZ5UIEswpRWlf/xYeuWw2vECL2PxpECR6zUUqyGwYd5NPCL5ZuIDV0d05oyFdUW
	lhqwxYgLwojlXmder6MXXKjIX6u02jIBZDG02YXqXDWEdesroIjc1zBl/9D5w7Oh0CzxAAtkGm+
	7Pk9lQb0LWGXpIvsHc2KImDuvsfX+nZTNPMOcjfU8Ajs/X+TP5ZoM4oKRG9YZa8aGNpXU4HLyM9
	DCjXLBtZCDxyBlurhe7QpD+imaEwM0m5C3aNJ4eiSY3rySWnX8IlrFGeCTzQfnnzg7NkozTGe+Y
	zH+qi/oxiYzqtVzLkxfzsVzbId2V74XXVJoBDmhqNQIF81nLvI3RF+8tsI3h29brzXW4YOKCcq+
	zstm1iUDBE4QL/XefVA==
X-Received: by 2002:a05:6000:2313:b0:488:7d08:edbc with SMTP id ffacd0b85a97d-48e6e30ba6fmr22119381f8f.24.1793609455017;
        Mon, 02 Nov 2026 00:50:55 -0800 (PST)
Message-ID: <c0415de7-0326-4184-8bf8-d5516f27c90a@suse.com>
Date: Mon, 2 Nov 2026 09:50:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gunzip: free the code-length table on an overlong
 length run
To: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
References: <20261030194428.1320905-1-stefano.stabellini@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261030194428.1320905-1-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793609455-4BED2CFC-3260EC79/10/78276251493
X-purgate-type: spam
X-purgate-size: 1024

On 30.10.2026 20:44, Stefano Stabellini wrote:
> inflate_dynamic() builds a decoding table from the code-length code
> lengths of a dynamic block and reads the literal/length and distance
> code lengths through it. A run of repeated or zero lengths that would
> go past the number of codes the block declares makes it refuse the
> block with 1, but that path only frees the list of code lengths: the
> table is left allocated, and nothing else frees it.
> 
> Free the table before returning on each of the three kinds of run. The
> other exits of inflate_dynamic() already free what they built, or are
> taken only after error() has stopped Xen.
> 
> Fixes: e2b1ebf4de50 ("x86: Support booting a bzImage format domain 0 kernel.")
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

Fiddling with code inherited from Linux isn't nice, but Linux long moved
to a newer zlib baseline. Perhaps we should follow that, by doing a fresh
import.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:16:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:16:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467836.1676871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNo91-0001n6-FM; Mon, 02 Nov 2026 09:15:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467836.1676871; Mon, 02 Nov 2026 09:15:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNo91-0001mz-Cm; Mon, 02 Nov 2026 09:15:59 +0000
Received: by outflank-mailman (input) for mailman id 1467836;
 Mon, 02 Nov 2026 09:15:58 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b8b3134000403d@swg.vates.tech>)
 id 1xNo8z-0001mt-VH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:15:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNo8z-00A6N4-Bz
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:15:57 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b8b3134000403d@swg.vates.tech>)
 id 6ae854c3-e002-0a2a0a5209dd-0a2a450c9fee-48
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:15:57 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b8b3134000403d@swg.vates.tech>)
 id 6ae854cc-f479-0a2a450c0019-b9ff1c23b10f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:15:56 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a19b8b3134000403d.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 02 Nov 2026 09:15:53 +0000
Received: from [192.168.0.226] (88-164-48-32.subs.proxad.net [88.164.48.32])
 (Authenticated sender: thomas.odin@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 4AB53822A7;
 Mon,  2 Nov 2026 10:15:52 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=kpsPzvCBIXNCh9I86H30ehoGqnlc3omI3C8g5nhmtT4=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=bHjwejG0/4kjKSUolyf5oOeJ1HSx31t6e/9joObjsb58RkwrsIrvHSO9PH2N5EFk3I4qu58Gx
 VVSISp3A+3XuP9IF3ouDc/Iuucw2CV/E5S/inh6FG4ki+oDG+zsw6NlOcI0VsZFFh4n0L7JCzKn
 UEGyownltaEJgb7Orp4cSp1dBFjF+4fNJn13g7y8n0m+/aftfc3ZO/68KBknNXQQh0fHRG6L2MK
 eXT5VCwTG2EM/rvzhROVGmlmiPO1/mKb6GXH5CETNtqQ/bpDV8ZzwLm9Xekg3qqYxrAhiP39fKb
 0ZED3LNMzMQrxDAALDwFqQOYZLG1IMz1UJ6hOy3mhoEg==
X-Zone-Loop: ef32f3546e448a2196eaab16ee4e0bea43e8a46a9956
x-campaign-type: default
x-transaction-id: 6273445d-8a16-4a64-aac0-fe3ba4a6200d
x-swg-uid: 01-077e74c8-6b3e-4dfe-816c-c3ae2530f359
X-Mailer: Sweego
Message-ID:
 <1793610953.8631fc262581453bbf619ec5b2062170.1a19b8b3134000403d@vates.tech>
x-swg-bid: 1793610953.8631fc262581453bbf619ec5b2062170.1a19b8b3134000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 2 Nov 2026 10:15:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 0/5] x86/alternatives: Adjust all insn-relative fields
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
References: <20261015210530.786604-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: ODIN Thomas <thomas.odin@vates.tech>
In-Reply-To: <20261015210530.786604-1-andrew.cooper3@citrix.com>
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.358.c2fb0315e6f61851.1a19b8b2ee3.4fc358d9a3527dff=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793610952420
X-purgate-ID: tlsNG-d25034/1793610957-50B3DA5B-5E53F693/0/0
X-purgate-type: clean
X-purgate-size: 3023

---=Part.358.c2fb0315e6f61851.1a19b8b2ee3.4fc358d9a3527dff=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 10/15/26 23:07, Andrew Cooper wrote:
> Alternatives have had a reasonably severe restriction since their
> introduction=2E  This has been the source of several bugs, and several
> inefficiencies particularly in the speculative safety paths=2E
>=20
> https://gitlab=2Ecom/xen-project/hardware/xen-staging/-/pipelines/295255=
6080
>=20
> Andrew Cooper (5):
>    x86/emul: Introduce x86_decode_lite()
>    tests/x86: Introduce a userspace test harness for x86_decode_lite()
>    x86/alternative: Walk all replacements during self tests
>    x86/alternative: Relocate all insn-relative fields
>    x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ
>=20
>   tools/tests/Makefile                      |   1 +
>   tools/tests/x86-decode-lite/=2Egitignore    |   1 +
>   tools/tests/x86-decode-lite/Makefile      |  56 ++
>   tools/tests/x86-decode-lite/insns=2ES       | 711 ++++++++++++++++++++=
++
>   tools/tests/x86-decode-lite/macro-magic=2Eh |  62 ++
>   tools/tests/x86-decode-lite/main=2Ec        | 113 ++++
>   tools/tests/x86-decode-lite/x86-emulate=2Eh |  29 +
>   xen/arch/x86/alternative=2Ec                | 102 +++-
>   xen/arch/x86/hvm/vmx/entry=2ES              |  12 +-
>   xen/arch/x86/include/asm/spec_ctrl_asm=2Eh  |  43 +-
>   xen/arch/x86/x86_emulate/Makefile         |   6 +
>   xen/arch/x86/x86_emulate/decode-lite=2Ec    | 331 ++++++++++
>   xen/arch/x86/x86_emulate/x86_emulate=2Eh    |  14 +
>   13 files changed, 1447 insertions(+), 34 deletions(-)
>   create mode 100644 tools/tests/x86-decode-lite/=2Egitignore
>   create mode 100644 tools/tests/x86-decode-lite/Makefile
>   create mode 100644 tools/tests/x86-decode-lite/insns=2ES
>   create mode 100644 tools/tests/x86-decode-lite/macro-magic=2Eh
>   create mode 100644 tools/tests/x86-decode-lite/main=2Ec
>   create mode 100644 tools/tests/x86-decode-lite/x86-emulate=2Eh
>   create mode 100644 xen/arch/x86/x86_emulate/decode-lite=2Ec
>=20

I tested this series on top of staging/unstable=2E

Hardware: Intel Core Ultra 5 226V
Config:   CONFIG_SELF_TESTS=3Dy, spec-ctrl=3Dbhb-entry,bhb-seq=3Dshort
            (BHB-entry shown for both HVM and PV in the boot log)
Dom0:     PVH

Result:
    * x86-decode-lite userspace test: passed
    * Boot with the alternatives self-test: no decode failures or
      disp8 escapes reported=2E
    * dom0 and an HVM guest ran normally with the BHB sequence
      active, including a guest cpuid loop to generate VM exits=2E
    * PV guest not tested

Note: the CPU doesn't select the BHB sequence by default, so I forced
it on the command line=2E

Tested-by: ODIN Thomas <thomas=2Eodin@vates=2Etech>

~Thomas


-- 
Thomas Odin | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates s=
olutions

web: https://vates=2Etech
---=Part.358.c2fb0315e6f61851.1a19b8b2ee3.4fc358d9a3527dff=---


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467846.1676897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003nK-CC; Mon, 02 Nov 2026 09:24:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467846.1676897; Mon, 02 Nov 2026 09:24:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003lz-6S; Mon, 02 Nov 2026 09:24:47 +0000
Received: by outflank-mailman (input) for mailman id 1467846;
 Mon, 02 Nov 2026 09:22:15 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF5-0003OB-Fu
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF4-0071n3-SY
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:14 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563b-8faa-0a2a0a5109dd-0a2a45029824-40
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:14 +0100
Received: from [40.107.44.94]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563f-6ca4-0a2a45020019-286b2c5e28eb-5
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:14 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SI2PR06MB5265.apcprd06.prod.outlook.com (2603:1096:4:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:06 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=hjx/b7ZkOY7jcsUD3VMnC1vAhlhOrp6gdKSdJmZ4sdfCKGL0Bh3f4sCtbwCo9BaVpZdNu40I3a/lUS3YXlrBMJJzqIFZj+uAUL8Of6Ln08tg5kW0V8vkZwKDJrhW0i576d4SdZKv0txDnPjGnGyCLc2pV/DqFhhmjlzlFZvhSIqiHfCOR+hVFTlMRVn4omH8P2IMiUUZVPN4K66iyKxbGibkUL+4snj/Cd/Kcc+sA3EifGlh3WwJcu3UdaVFQ1U9tgTPySOUtwTz9ur1scCaehZuZavIlG1tTx1xFBWSUXi9TmVFUI2W93EieLJ5r5a77e1LXc7/OrzQyLeL6h7A0A==
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=DX9Bu5iUcluzz1IwNbqqdX2x3rrq6ZvYTGoWFsJ0rB8=;
 b=TtGzs64+llQOq3kH/z243omwQv6jzfFpTUvcLBOckwN3AhrqHqwOfM2S5VsX1IKC/Luy5FowII5Yo4LpkzQvSLuookHxDDALOYY9khI7EsSQVAAwqxZ7rzeUAUHNbMdYFTQ7y0nLzXHYGOM0/RVLQJ3SItD/1rQ1pemIX82FNKU4N0vMD8duuuDWPFiNjhcYNDlJr87/mYRS+lHTl9yzyNYwHEmORGzNkdZHV600CyvsSDMp/GFnSlUCaWNjrF8khYIcdcEOmfQoi6tieVCwViM6pRa590qDyFKn77s9YRi8nfCmSb4d0yET/F+4ss8f3JGelPQD53s7GgZi6zCGVw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DX9Bu5iUcluzz1IwNbqqdX2x3rrq6ZvYTGoWFsJ0rB8=;
 b=iNv/6b0VSTbzyUmjbhSALDOvOEzbmIx+DhiQXTlqtbv54wXCrOW717+tZf4bvUzc1/fhIaH60inpBQMKC7Zwc4tHSfXFFaaMJR0S3eXRBAlhf75n3PMUK2GRaBZK4+I7yMhXNu1da2Vgif8dfLEMfX/gvNCeAHGHrfyiMJW6wBRKUIAXvS8Piie4D8WJH6NsssHyBCdUNgIzapuOPVprxFm4z686gvc2FIJghjCnnm/vaDR7mIUAEOHxE5jjg+uJh37l98EnR70UP5xZH5eLwyU+Urxcw+TDsqyKYGnZ8ZwBOYdUqRNThncXlS83E4slx/qqCo6HrmK/ILdQq+ZjNA==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and leave
 it off
Thread-Topic: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaqugzonZbCOsyEq5GblPuZWDag==
Date: Mon, 2 Nov 2026 09:22:05 +0000
Message-ID: <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SI2PR06MB5265:EE_
x-ms-office365-filtering-correlation-id: 2d6ec937-2625-4464-37ab-08df38c2c325
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|10067099003|18002099003|22082099003|921020|38070700021|56012099006|261021121427099003|261022105027099003|261026140227099003|261026121527099003|261009223027099003|261028144727099003;
x-microsoft-antispam-message-info:
 kRWFjeDMcxv0jMuXmpMHLnnynSRQWnTws00M51ITlck2EWF9Lko6aW/QfbyWCwBIsA9MB3qq0HjTmfCojNRXWGrVbBOqeI1GPap0QslNIhPO05yyu6Dnlsr3V/ZQUyCVVjxKOk5p7EZ8KE7p081G8ydcEGeqA0l/GZP0Tg/1hXwEPxbVlQzwTVDNXQKAEpLd/scdvQvKPes5dQEgdtn2fV/qxtba0Tdj8HP0vLMdfffPEzs25hsP8ItaOBK8dZ5+scxxWqEyKDkO7CE/fTNtl/Wjy+XDPl/UvjL6xuJ+lUuHYgfqP1qJKT9ZWNEDevW4EOnJMnjZI2rjch93M8lfW4U8BQkfNCFzTOVSxuucvwxwWeCPnmi60NSnDeEO+SOio0vfmXaQANCg/QiP90VQ3MleXp2XQecwVTms507WQeK+MFQbLR2wBvHBlXlPt88f2b1JpJvICk0lHNyr3S+XmEGuc41T1IGjZRuNO5nLIqCzgBrtQrJktdlNuWft5MK1tq1Vr5osjBipYPjxDzBQ56+LfY9YmcZJBOkh1SFPFnSG8pZVFB9XFa6zYPS52XN+l9PdqlDibZBgOWpJQP2sgJLuE+pWk7UOB2VAvqFWf6DcQ2GztjnXLq+v87AaixQToAbDJ3MQ2PnSy8H+rUv0CrR2nnZtopCxKrTwiB3bqCYQKsWeML9nzXqGSjVwlFsbJSc1XMZ+SHzIwdyjNF5ZNH6wD7Tlm5YHgjlFI0aox/smTAxLRzXnyB8bzgvLX0aA
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(261021121427099003)(261022105027099003)(261026140227099003)(261026121527099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?cWkPFXBUrn2VTilTuRkTdk/l5GqnSrmMDTMP6bvGn+REAq9JS+70oygBn9?=
 =?iso-8859-1?Q?qUz23QCIrcruU9n28LNOGI2Tqf4Qgicui8nNGIO25bGYNngcvpufTFqX1D?=
 =?iso-8859-1?Q?cjSYSb8rSpKOKVRHj/DobdQJpGA9Rsu7f9TAuqDWHSt0AUFaIXTVIAXuaf?=
 =?iso-8859-1?Q?/IiSc3JE2niqzlQ3+xlDgt9BUjDOKgXFxLVEt3S1HncbeH/jGC5ToU86Ht?=
 =?iso-8859-1?Q?9g6gEOT+noGg70yTFKGc4vE88U/I+A0r7x/SM5PISXiuPrO1qfDlXWSYet?=
 =?iso-8859-1?Q?pgJWl/SVkbJehjrTnwB+VPOSnUDmNxJuQwU+RbxeFIM4jVioRJo9zadON6?=
 =?iso-8859-1?Q?TCwwEawzTBnojVbf2wj9NjXSmXKlp2xazvKsowifaZScEWaRLeBM8AgOgY?=
 =?iso-8859-1?Q?l/wwWB2OFqUZrP5nRnPBrzHEkJQ/gRkIZukS9gPgb6AEpsyPHZPN0T7eMz?=
 =?iso-8859-1?Q?/bcxipBLPEwQv8oRHDiAU4tqUpl49q2G550WEUPgKPidVvMY3jfaA6wyro?=
 =?iso-8859-1?Q?db30nrHCVbOPygNlaWzBI0imiiBgC0LdikQV2jHSsDunAfU0LuoRM1yPRo?=
 =?iso-8859-1?Q?psKKCZyG0iYmGcehlF/teM6VVWSNWvDKPu2q2wqwG2Taw1zIajJE2PfSfY?=
 =?iso-8859-1?Q?yGZGeCiKTrCr3mqn46sGQRZxewBddlpBTvY6xL42aFe76uvATMGVS38E9m?=
 =?iso-8859-1?Q?lE4/bnMXBU9o7EtCcoaIvSWrTJhGALN/bXYqbq/gZPVmVG1CpWq0VVSg0L?=
 =?iso-8859-1?Q?nEDbj5tkRnb1G/tymnQ7C6hFuTJEYQQk5KWVnXLrq3v7eTA8m0G5Qf6qdn?=
 =?iso-8859-1?Q?vfZEceNhelsplDu6qr7FPftvLEYeE5Gr1xaITMoVfQIKm8O91/3NXovMJX?=
 =?iso-8859-1?Q?0616VDtQjWAUIoBBTyJ2OomgjhLceQqEi83WT6CKXN722AFQXh8TXKH4hd?=
 =?iso-8859-1?Q?LmWFNQzsdGnZJb/9iAFKIbzC51Ck8Gcwz6J+G0GQQWOAUkqgsjgzdvQCbu?=
 =?iso-8859-1?Q?dKAufrnsce261v7z8RZvxvU3A8OChvsDz9nJbi1Hrgqdj1MoIyyAk9Zb0J?=
 =?iso-8859-1?Q?6MJZmETch8qN3kgrZhoHxAglvjtHhWQiu+/4hwwb7TEinSkJvkOB3fFFtv?=
 =?iso-8859-1?Q?WBZ6H2KDsA5z5WxLmZrQY7tV1lVdMg/HN730PCfRM35A1S2oL4dvelm5xl?=
 =?iso-8859-1?Q?4eptTWOCsz1+iehrul9mpxsusoD/UV1MoTAY7m/qduOUUC1kwRFQpE3Nuw?=
 =?iso-8859-1?Q?md6AD0EpTdRsBZZTwjkPOlcizOJsnEdnxdtXRH+N+3XCwpPv+3dBvQKEHO?=
 =?iso-8859-1?Q?IJA6ZUjnUHFLYYDUbJudGVZy3GRWfxB5EOvf9XqC+G0wlRMFVp2dD6MuRn?=
 =?iso-8859-1?Q?UxYhiA1yZhKMhfoZBjQgZiquq3F4x3eO87NX2/2m1/FcNU7TpNJ02Auky9?=
 =?iso-8859-1?Q?5IMqJV+kpgqTDCic7N+1fqnn9lNhDFxi/wl5XyDrCwziKSen+WlAIfez1+?=
 =?iso-8859-1?Q?O81h4Dp+ZbneiUduWIBLx20N6djHx/R+veh0M+u8Ayy6ucu5bSyfWzsWeT?=
 =?iso-8859-1?Q?lv4pZWLXERukiEO4VsYbtM5leD2j8/IF/sKQfUr/gAXcVNTF1YnGUzdn9V?=
 =?iso-8859-1?Q?c52qk4MohvVQCMGku14mwFuKpZV3j54rmPNz+kHnWMEoEoI7rcoDDPKtS3?=
 =?iso-8859-1?Q?w3tTR2IzlG7OnDgEuVm9QJeTiXwpVMtpt0AVxPbmHSNSOO8j4dpCwKpOSH?=
 =?iso-8859-1?Q?mB1y8TDs87srTK4Ttk/qI6ha2OC7MP4i1h5TUk69H058dBnvzGIul2G26w?=
 =?iso-8859-1?Q?esrMSBZiVA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	p3IQ89Atc4rbIhOmeCBHoKP+gIaHDMzpiaCyLFMZdstyqT0e/hanFh+GYU/506CGx/xMkpWerNAg+0voiee0q4uJQtXJha12Ai0LbsCcrNBDtKDnqWYHQzt0iIjy3aDdm9HLh/lfrInzbcgKGX5UW1hAR8VpLaGkEDhY3XL7ozLB/UezCON8Q8p91JUe6RrCCZBDpvxCg8FZaoeGRnss+xkSLEVw4SX+eCA8cmWQBxjpa8U05XJl1SP7FGeVl9nRNblSNqUESwoLmavcSEqhi0x79P41Ivm44ZVFkCs69aiXqWE6uVWsCr14ScunefKhI5jFZUkaUwZra3bGN4sBOQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2d6ec937-2625-4464-37ab-08df38c2c325
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:05.8411
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Dh2SfPW7gBFu02TycU1M7fnbrY0nn+Y1egDAWfjagvjbTGQw9sRSRcpJ3W8RNZEKo/Hag/Lwd3MAMZ+cRHiJBwAGPKQEtq1QijBMb/VCa8I=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB5265
X-purgate-ID: tlsNG-720697/1793611334-F04A62AC-B6D701A0/0/0
X-purgate-type: clean
X-purgate-size: 2487

xHCI has up to 15 root ports and does not need a hub to fit more=0A=
devices.=0A=
=0A=
Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older=0A=
machine type keeps the hub it has today and a guest saved by an older=0A=
QEMU still loads.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Reported-by: Junjie Cao <junjie.cao@linux.dev>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/hcd-xhci.h | 1 +=0A=
 hw/core/machine.c | 1 +=0A=
 hw/usb/hcd-xhci.c | 2 ++=0A=
 3 files changed, 4 insertions(+)=0A=
=0A=
diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h=0A=
index 5cb9e06d1d..a3eaf2ebb6 100644=0A=
--- a/hw/usb/hcd-xhci.h=0A=
+++ b/hw/usb/hcd-xhci.h=0A=
@@ -191,6 +191,7 @@ typedef struct XHCIState {=0A=
     uint32_t numslots;=0A=
     uint32_t flags;=0A=
     uint32_t max_pstreams_mask;=0A=
+    bool auto_hub;=0A=
     void (*intr_update)(XHCIState *s, int n, bool enable);=0A=
     bool (*intr_raise)(XHCIState *s, int n, bool level);=0A=
     /*=0A=
diff --git a/hw/core/machine.c b/hw/core/machine.c=0A=
index d9ac4b419a..f8f5b01117 100644=0A=
--- a/hw/core/machine.c=0A=
+++ b/hw/core/machine.c=0A=
@@ -43,6 +43,7 @@=0A=
 GlobalProperty hw_compat_11_1[] =3D {=0A=
     { "sysbus-ehci-usb", "x-migrate-fetch-addr-64bit", "off" },=0A=
     { "pci-ehci-usb", "x-migrate-fetch-addr-64bit", "off" },=0A=
+    { "base-xhci", "auto-hub", "on" },=0A=
 };=0A=
 const size_t hw_compat_11_1_len =3D G_N_ELEMENTS(hw_compat_11_1);=0A=
 =0A=
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c=0A=
index 376bc00264..1e42c851b4 100644=0A=
--- a/hw/usb/hcd-xhci.c=0A=
+++ b/hw/usb/hcd-xhci.c=0A=
@@ -3377,6 +3377,7 @@ static void usb_xhci_init(XHCIState *xhci)=0A=
     xhci->numports =3D xhci->numports_2 + xhci->numports_3;=0A=
 =0A=
     usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, xhci->hostOp=
aque);=0A=
+    xhci->bus.auto_hub =3D xhci->auto_hub;=0A=
 =0A=
     for (i =3D 0; i < usbports; i++) {=0A=
         speedmask =3D 0;=0A=
@@ -3660,6 +3661,7 @@ static const Property xhci_properties[] =3D {=0A=
     DEFINE_PROP_UINT32("p3",    XHCIState, numports_3, 4),=0A=
     DEFINE_PROP_LINK("host",    XHCIState, hostOpaque, TYPE_DEVICE,=0A=
                      DeviceState *),=0A=
+    DEFINE_PROP_BOOL("auto-hub", XHCIState, auto_hub, false),=0A=
 };=0A=
 =0A=
 static void xhci_class_init(ObjectClass *klass, const void *data)=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467845.1676891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003fK-43; Mon, 02 Nov 2026 09:24:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467845.1676891; Mon, 02 Nov 2026 09:24:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHW-0003dZ-Sc; Mon, 02 Nov 2026 09:24:46 +0000
Received: by outflank-mailman (input) for mailman id 1467845;
 Mon, 02 Nov 2026 09:22:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF5-0003O9-Eh
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF4-00GjKH-KI
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:14 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85643-e002-0a2a0a5209dd-0a2a4505864e-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:14 +0100
Received: from [52.101.127.119]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85643-4cb1-0a2a45050019-34657f77ff47-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:14 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SE2PPF4565C7005.apcprd06.prod.outlook.com (2603:1096:108:1::7cf)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.6; Mon, 2 Nov 2026
 09:22:08 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=L8Vi98TCqip7N31hxV8+V59HTn7yaT19B3tRHbnd93ctmY73Z3eLhI1eUprm6vwfK03SwfcJAblHOohavQp2fdOkW+o093BnF79LwOmAgmfyl+TJC+ZaLl/aaKyGPps/HiDWlFdaOecjYKFwPSbs1k0DojifNpbgVUb+wu+zncrOFTLVzbYKa+LulP+NDUgx9rJa2DqWwtJ6VVIHsVmHcYUN6qkZ33tTvyDkAiRpSl4PZYpDckPZGHVSNi+HjFrXBLzBAU0LZxCXnbCf81KbNnQJ6Ig0VCNhC5H1O3Jb/qQJ5TBYwgGqulqA8YOqVPSCjvzMt0nQYCTWYfWvhFhQzQ==
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=Gq/0xTQzt4r4qACD3SKq9qG7f3wnpPsxLchH1uuagd8=;
 b=KJcWLPU4J+P/wRNsfFzbvjSniv3vKWILphZAICpA29BJ5Aphi0hcW86k4q1lIFVkI9PkRyRZc9gS5JXJkVXox6p/4xFANmkAS7Id/VHtc61EFDKqTfCsGHPjgVk3njcMvxOoO4h2d2gBgO0wf4S6M6c/Ipilxs+v7rZTYvqEyNiBzhywG37ho5248q70XvtmJ4epyVAf/1peGbSRqnqTFc8qXom8s9AOQeo9kDCaJ6VcBo8bd7YfES+mFGjMmEq51dt15Se6embpmphUuM4H0kahNNsrTQoXHwT5YuFCM6gDzO73QIkoKnJMT/PLDyfCSOdWhtjXDuN6gejHSotGXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Gq/0xTQzt4r4qACD3SKq9qG7f3wnpPsxLchH1uuagd8=;
 b=fO3gELXebgs/DmfeJDsb7Br7VwQZTfjha/e8YPGYiHZ7depdtCKig+QLDyn6ZU5H/Ijifw4NBdTM6bs83KMcTWBZENWVaBB3tfFwvXW2i7xGfWKx1rdnC0t6AdlRtE2jctPid06lTYQBohqFUqizgQuRVNCwY+1u5cPaKhwjp+oZWJB7BL38BKLzkqsTzkllg+z0SlJEB+KDUqyWVocCAc2wPM1c0iW4e4Slt/4yeWuwUrAjIoRHwAF7/OHRA3LuwEocPfJx5suvTszGt71t4jlBPdjwZsGa+JePBTLhGJ5aH4Hw5rWnnSahIfsBT4SWUlMUkTzDDIS6yXYDSmGTWg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 03/18] hw/usb/hcd-ehci: Add an auto-hub property and leave
 it off
Thread-Topic: [PATCH v8 03/18] hw/usb/hcd-ehci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaquhga6t5nVRcEGa+nf3TCiRHQ==
Date: Mon, 2 Nov 2026 09:22:07 +0000
Message-ID: <20261102092201.1729245-4-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SE2PPF4565C7005:EE_
x-ms-office365-filtering-correlation-id: 8d3a3f8f-560d-4e3c-10ed-08df38c2c404
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|7416014|23010399003|376014|366016|921020|38070700021|261021121427099003|261021123027099003|261009223027099003|56012099006|261022113327099003|10067099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 XepseZPBYtKEWGKlREqSDeQB39eMv6vPozkcgHzK7teyKVFyjUazJvJKtECcGggWI0ciBL7pEGEdw1iRb0Fk1hR5Ow0u/LZYn6KPhz2e4CO6bJ7qiR70HpNbkd1nl/6NIbaBp8nSJFZ2SICYxlWNpp/3yP+fEOcVd6k797ULsgtUlKQbm4r3He6xdfWvJpxSxAJui0BRW7LpzH0NeRQ0oSvvusi6o7GGz4FJ0idhv2s2Xy7+HsFzdMyybkK85CyaIe+3SizoDBhN45JB9Vub1B8sgPcjPkJWlpw78Qo2uaZF8stmsb1JRxw9v6maKtdic901Drm2UAbYSWVpEfKD5fOuOYSHGmx2Or32FsuLkKIvoB3Jazrzf1BPaq5Ps/lSqURz9JqEKSe+gGkn9zL44dXa46+W5RxuqVjNX+hi3kwzPthR0BEQIkqtiqWO3HDdVGnVB3G8PTfKuFwaAy263MZ4eJZuUH9x6uQRu/RACeDJXi/o8ledTRLn5gTl3ps6hRMk84UAG7Y5JT62hIVoNt4LEkyyPCHnvPxKvn4P/zLMJjptYOIcMpFyu1Wd7jKNhxueKRc4rfhmod1ELsDROE+49jZu+rKDyzQInXSNxSeIiMSPe0InT6Ht8mCbFLbPyJxLdJHPo0QTsE89T6jWrt8IR2ykqfMclN3klUxPavoV9YOyQnlTg3GpPGd9BY6kmuTDDC4UTCSGOSiFhnbpbxDnOu8zprAiTe/vqXPNi+k0M/vMRBA9Ly09+F0EsXAr
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(23010399003)(376014)(366016)(921020)(38070700021)(261021121427099003)(261021123027099003)(261009223027099003)(56012099006)(261022113327099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Heo+qSmxRfLp6eUorv/e2YuYFMY+BjnujU0HbRfeu+331YM06HhmwsdqHy?=
 =?iso-8859-1?Q?6mw6VzcAXpQzU44dHrPMm3iiOZmtapdly0YUWNvoAVk/m/RxwV06/1Ns+k?=
 =?iso-8859-1?Q?SsSguDLHGbTkgDbLw1EfRO9p3ixV9Mv4iS2CD9vhqQt6ealjjNV3sZrXik?=
 =?iso-8859-1?Q?mrEWCKgcHjUkqOWCcMDBVuz9DBKc62gJXadUW7MJbVQxRWW+SwDs9shFZK?=
 =?iso-8859-1?Q?w1cOWwQ63E0ZzW5J59yPPvri6wQIwoSqh6O4ap9Huug/9S+EibKfvXVHTh?=
 =?iso-8859-1?Q?TJraQAakDZJtnrqqj7GjxZWnlYWR1LXR/4ib/sxWqEBX8Evya07v4MuWFb?=
 =?iso-8859-1?Q?fZ2jr+fEQlnHINIbaMujZTNoHZU5RVB/Iu4HtaX7q2E35OrHOAMgMe8u31?=
 =?iso-8859-1?Q?Tpd84Jj7N1Mke+F1LmjfwlCOt8zVgQp8SBJzKgqAJ3AvOpy2qlbRbADO9h?=
 =?iso-8859-1?Q?4oTmDs9G7z59lEZC8zRUwz7XuKEc2/T7oH5a3z3ckOMJXowp7mVYoqFP29?=
 =?iso-8859-1?Q?IpzvjQgVP1Q6uPw+C4S4KASVAcQPXdXN8F7WlfrtrcO8vUSpXku4Gpr44l?=
 =?iso-8859-1?Q?XS5k+j1TP2WuTDn54D+m3DrLr2RuyDjuxtyaLUxAf1Fpb/Gp8Ut+3rPwLj?=
 =?iso-8859-1?Q?lWsZ5wtLSOfvqKRmfgfhjnCP/Mix+IWcn31uDmgPjOUzXYvOcwIQpoQm/W?=
 =?iso-8859-1?Q?r+2vl/IjLxc33hVJMg8yFZq9SPijKrAJcV7OjKADVqG4tDbC2N0vBVgaVQ?=
 =?iso-8859-1?Q?fGaXM7Xh8a52natRlp/F1b/vgvx2Hz1qXl4gy9IHTzrmH2WhUZCI+xATry?=
 =?iso-8859-1?Q?rDyfdkbCqKmGS7STTIg3OOKDaindk01uk72/Bfz6HjPVRAAxpMG8b7HI2L?=
 =?iso-8859-1?Q?2pB9X7DRpHYpG5EQSdanmNkeTZck529XkXStRMtbgPjodk8XUx7sN2boW2?=
 =?iso-8859-1?Q?ehh9nSrJwvnVa52TDjRwiqnU8DTqjc2szcn0IHGB1dbJmrRPSMbXvhBfk6?=
 =?iso-8859-1?Q?rdQfR7PzPsMNnN785I0OOrWrqXYb6xTRlnghSCPNvcKoD4PWfr1tIIbnFZ?=
 =?iso-8859-1?Q?v87f+PAlc3ps+/KXI1qj8x9mNbxe6H6C9QaC8zZPqCtFa+qVbaJyE645Cq?=
 =?iso-8859-1?Q?LthUg6uL783cPJs0P0EdpdbXbuahWT7Ty8qcphtUVznmk8/BNmRpV1nkWf?=
 =?iso-8859-1?Q?CwEgDXt3zlHS+hjdzzYgtnhcmN0z9TEByGwj2CvgbO/QziSI6Hn3RkYZ0w?=
 =?iso-8859-1?Q?YytcSMm80wuHdPbIyDSC1exzxYHHJ0kTACs7yfklwRXWQjBj9TCdPbTAJQ?=
 =?iso-8859-1?Q?bYp5qWPuBqj12fso8Wt60KwxVuIgK32y6b3HKBJnjeciWqr0cpuZZiq4+V?=
 =?iso-8859-1?Q?JKBdwCXWpGW9mY4GiZ18FDvLx+JOYTiKelU0GTCnsFB5fSd2EXuu2IxxeY?=
 =?iso-8859-1?Q?6Z3kJ/ivNY1PObHVFXRX7LvuRHQwIOLnT6Q7isKv1QjvfVlampXYRalCn9?=
 =?iso-8859-1?Q?WNzXxFD+FHcbX3dLxnfaWdiZ0PRJKeZwWfXww+H809dAt1S9OV7CdQQwVv?=
 =?iso-8859-1?Q?+LPTfNU8PfxUSZzGI+LtS6P8Z50aFvY3dO9pimJj47WRR7usQjMuwYrFAy?=
 =?iso-8859-1?Q?ERckibLYMCcdIbz/E6WSImrRf66yBPxIRQFN/A0YqCwuWbuZLGm/asNU0r?=
 =?iso-8859-1?Q?MyMNtI+uSWdHrf/9bnKnyPA/HfHibCm9gmeBwGbVtX2jCbyJf+kh5WxAv6?=
 =?iso-8859-1?Q?ChAWn4xJgPaoCgbhvzaB8g4MkWkTFIMLoYVzk5x+JYb5yygc85EF4B3u/s?=
 =?iso-8859-1?Q?h1a5LdB04w=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	BbbSCS2G2+/sb23kY9GWEe7c1+ktDpEL/XePwQzu9yBgoFPk+lV0mBqEmhrVJSrx5ppnSzGc0HIsIXAZoiu6yPVQ0BiWR14JpKr1Qwpy+8T+4nugAOX5L/oOOzIQtWh0qm1PcIKOrKcngz4G93C7ry+9dJe33vCMqee50viH3lZcVn2ZLehU+OKCFKLgK2OHsMfRCDjsd2lrrwdCIFAGHo3/Bb/2U+n4RTWL7z9FMqd+x+YpEfazCqUl8EcTFUi6wWNTCqusgyKk8QeGP0/BHUJ8zFGQ/pdRo/t2YKj4FeAIIcpxquok1SmaMOBk5xz2339un7GklfyFKqHzct27Bg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8d3a3f8f-560d-4e3c-10ed-08df38c2c404
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:07.3164
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: bhIOV1tgRM4pKE6mxxQLAtLtdwNnuuExeqCIN8wgMRqwiInU7BBTVhKURwMw4Nx6O3Gyehb4JtrP3b8FVY3OeIr3FK/1KO1Gi7/OQDPgBQU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SE2PPF4565C7005
X-purgate-ID: tlsNG-c201ff/1793611334-F5CA82A1-78581A3E/0/0
X-purgate-type: clean
X-purgate-size: 2578

Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older=0A=
machine type keeps the hub it has today and a guest saved by an older=0A=
QEMU still loads.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/hcd-ehci.h | 4 +++-=0A=
 hw/core/machine.c | 2 ++=0A=
 hw/usb/hcd-ehci.c | 1 +=0A=
 3 files changed, 6 insertions(+), 1 deletion(-)=0A=
=0A=
diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h=0A=
index b5ac9c8670..db9db537ff 100644=0A=
--- a/hw/usb/hcd-ehci.h=0A=
+++ b/hw/usb/hcd-ehci.h=0A=
@@ -269,6 +269,7 @@ struct EHCIState {=0A=
     bool migrate_fetch_addr_64bit;=0A=
     bool caps_64bit_addr;=0A=
     uint32_t ctrldssegment_default;=0A=
+    bool auto_hub;=0A=
 =0A=
     /*=0A=
      *  EHCI spec version 1.0 Section 2.3=0A=
@@ -336,7 +337,8 @@ struct EHCIState {=0A=
     DEFINE_PROP_BOOL("caps-64bit-addr", _state, \=0A=
                      ehci.caps_64bit_addr, false), \=0A=
     DEFINE_PROP_UINT32("ctrldssegment-default", _state, \=0A=
-                       ehci.ctrldssegment_default, 0)=0A=
+                       ehci.ctrldssegment_default, 0), \=0A=
+    DEFINE_PROP_BOOL("auto-hub", _state, ehci.auto_hub, false)=0A=
 =0A=
 extern const VMStateDescription vmstate_ehci;=0A=
 =0A=
diff --git a/hw/core/machine.c b/hw/core/machine.c=0A=
index f8f5b01117..0103038cad 100644=0A=
--- a/hw/core/machine.c=0A=
+++ b/hw/core/machine.c=0A=
@@ -43,6 +43,8 @@=0A=
 GlobalProperty hw_compat_11_1[] =3D {=0A=
     { "sysbus-ehci-usb", "x-migrate-fetch-addr-64bit", "off" },=0A=
     { "pci-ehci-usb", "x-migrate-fetch-addr-64bit", "off" },=0A=
+    { "sysbus-ehci-usb", "auto-hub", "on" },=0A=
+    { "pci-ehci-usb", "auto-hub", "on" },=0A=
     { "base-xhci", "auto-hub", "on" },=0A=
 };=0A=
 const size_t hw_compat_11_1_len =3D G_N_ELEMENTS(hw_compat_11_1);=0A=
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c=0A=
index f371e567f3..29b85869c3 100644=0A=
--- a/hw/usb/hcd-ehci.c=0A=
+++ b/hw/usb/hcd-ehci.c=0A=
@@ -2636,6 +2636,7 @@ void usb_ehci_realize(EHCIState *s, DeviceState *dev,=
 Error **errp)=0A=
 =0A=
     usb_bus_new(&s->bus, sizeof(s->bus), s->companion_enable ?=0A=
                 &ehci_bus_ops_companion : &ehci_bus_ops_standalone, dev);=
=0A=
+    s->bus.auto_hub =3D s->auto_hub;=0A=
     for (i =3D 0; i < s->portnr; i++) {=0A=
         usb_register_port(&s->bus, &s->ports[i], s, i, &ehci_port_ops,=0A=
                           USB_SPEED_MASK_HIGH);=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467853.1676915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHY-00045A-Cd; Mon, 02 Nov 2026 09:24:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467853.1676915; Mon, 02 Nov 2026 09:24:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHY-00042i-2g; Mon, 02 Nov 2026 09:24:48 +0000
Received: by outflank-mailman (input) for mailman id 1467853;
 Mon, 02 Nov 2026 09:22:18 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF8-0003Py-OU
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF7-008rD4-Us
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563a-e002-0a2a0a5209dd-0a2a4501c2fa-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:17 +0100
Received: from [40.107.44.86]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85647-5984-0a2a45010019-286b2c56a261-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:17 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEYPR06MB6832.apcprd06.prod.outlook.com (2603:1096:101:1b2::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:11 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=CyAJzpOVM6JLqr9npg11ChlRgBbNBonYEIWV8zUkbcP++0eN3QPtPpyBSh2Tx18VSqJjRd339IGNQkTdthJugzBFIdKzM73B9aNsNM2CVOZLLz89+TCvE7xRfM4pZAPfLYA6iigu8/YdUgsRwRHCLRaGM1+IBZ1FspzKcm5nzB/HgOvBSQFiFb8DgDbqhu3hHCsmJEu/6LQcaWrCQcgBvDmIx/TeG5yMuuqaTUaheZKUggfUOeoUvbDH1bOOe3N5DGT0cVfwqAMcIFUovg+bAQ1BWpcqzURMzpNddCzw0jfeTrZqKutDGChxOPVJTS9sUcXrwUc4pCMdZV6/N4Alhw==
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=vEWlejgjfgQucp6V6Ol4TvUQGfDuT+Tfdpd37ISkCag=;
 b=LQr29Ej/eUjnLf+YTSg9zg0brdRr6P32kmnnRaYp1WiWi1OL647qaeCS6t3akPg/+r0DxyiS1wSQSzz4oUq79yHlOP81k62MLs8GOBfR66KB1isk1l2lEkoUX/I1cTqIbFGbE0Ia1XOaqBTVcrZNxqyUlusC3y7BrIIhrgazOCsSbT7cAARPG+4vPXYuza81ZxSXq6N3FL2jhJIdp9M+eikTRTxd+aMCfdota7B/wmZXtBr1ki7WDRUpcF3Lv6LJhmlfT1bFCFziuvA5HYfcIkdYJHw4TXtoLpkrS5R4zlubgJNPUVhKutFsuc+N5lvIXnczfWEgsJMP/S9wgeCUEQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vEWlejgjfgQucp6V6Ol4TvUQGfDuT+Tfdpd37ISkCag=;
 b=NzxDBS+GB1fn8X+knGM8zcoli1yiOOPLpWtg1AsfxoBkq5tVfAvZ2Wz30BvXa95gKp0HSyHVhjs57uOaI3/D4mC9mbhMeZwDiPiLfZhYdKcWQI+OwRC55tPFyUCveeW5L49YYU5UAV3hbo0Acg2Gmc/Lf4AgymLPdBlqo9EqYwCeV+BccX4v7wTmQDWKYDjNyBVhP5lIpWfKO11C90Pi3hCe7KZ8Ey2QZjKmfoSqp0m2lfDy7zOdh4RDigf+A3gj6r9qKAy49/XPDaBS1p4acnn2fEXNLAwTNrZclBsBH3pCDnda61kZbcspzHb+mTHODcMTWFqc7vtLj8GnBePGNg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 06/18] hw/usb/hcd-dwc2: Add an auto-hub property and leave
 it off
Thread-Topic: [PATCH v8 06/18] hw/usb/hcd-dwc2: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaqukW8xwK7/WBkWVcuKiha5nVg==
Date: Mon, 2 Nov 2026 09:22:11 +0000
Message-ID: <20261102092201.1729245-7-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEYPR06MB6832:EE_
x-ms-office365-filtering-correlation-id: 7527509f-e186-497f-0cd3-08df38c2c693
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|921020|38070700021|260925022911599003|260925021311599003|260925021911599003|56012099006|261009223027099003|261021121427099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 wH0rrJr0cQvER08lVWSr5UigztyOc2me5sL7vI7ljOT4njPRDXDAKw/wAgVHwOx6/b2A9CadtclLE0iSxMdNOnNPoWmzt/AbHtU0rvp34jEyqoDlHtoREvNPM7w4u8gSyMcMunnNsNIzMEzKUr5WW0x8lsydgG8OvUr8TL6CL3HqkYZHR25lMwB98DLQN6KQCymMNsULhbDQWK7PmTeZmFQrAE7b2PWmi3ymD4J4X+G7m/Cs8hoy8WF0R2sf2et8SEOf4KT3NDiPWw8TmfE8bH0GZWjR7iYUvJVPCd3BH/xFXQWSIqnoCwBkX4k54Hw9O7vdsrkWAeX2Y63H1wbvtvXaAYXFUtXXGP799HC8UwKohMU2a5mt+Q19mwuJsyrpKYiLkNyQUmh4gHHgPx8K0Ygtw3UDuh7dpZhPkGjdArTE59mOhImpaJSPBQVV0eieSbHlgK9o7UB7Fv0WRFFyXWn+g2ugVO2XZsDEw0CGkfkNZW9s+7r14r7WU7qh/1j3+19OzSDNWTeHu52aJwON7ygjKvEHMOepUdBiV53J6GY4Yui7tzjZ5wavUqlEXhgKUu/R00u2k8Sq9RyxO+wcroAWjDns3e8wXGVLnvZNdBKijzxJefaSFFR3MUFi5jZ/FYMKPMM6AgGAZO04XUJVbjycL0exe83AJj62o00hw89u5Pcmes4JnZAguq9hUvBS9Au0FC9b1GUTr7jbEO01ehKXMIBquAQI1UUvIJ2agRmwQE4wIw7QzvguC8Luy2YP
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(921020)(38070700021)(260925022911599003)(260925021311599003)(260925021911599003)(56012099006)(261009223027099003)(261021121427099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?a99ExvLgJ1cRoYgVeNfaFqBjnLoN4KZni5Bz2mmr6xID702f1L3Ith7NsW?=
 =?iso-8859-1?Q?t8nKOw1jn/IUEO5pQvjL9WseTCmTHZOpqoPy4PZ9m0bTfv3UTfzvwV5NZe?=
 =?iso-8859-1?Q?WL6ZdJLaOeuwPInR2NWfZSy9sTZDIsekvn14Ewpu1Cquf8tyHGeHNoqEBF?=
 =?iso-8859-1?Q?n3a1++NC9z6KHsdphp7MIUx5/bdvxUm97uZX++gpoq8zGYJcUKq5PUsqkt?=
 =?iso-8859-1?Q?c8WPJHIjIhdhfoghJ2Ev1EtaPuho/h5JLC5FFC1fE1U3Kmqt9PA3BSopKA?=
 =?iso-8859-1?Q?Bb6Uo57dgp8xSs/4CkCkKViQPk84cX9xQLhfBSjm1zm2gJxElu8HJkuYpM?=
 =?iso-8859-1?Q?MVUXSWa5J8r0juNsc5Hq5X7UTpU+2x/AyIQIyQV82++UEU+JF4gadklukV?=
 =?iso-8859-1?Q?hPuFA3F3+Jeg5ITgsMvbSKkG5UHbPIb06sbU3KIS7lWMMaE1ew+zmoC0Y9?=
 =?iso-8859-1?Q?G5Cl5dy17szkjd168OlMrCe2AAfEoP7v+KBxcTyfFAYNUqLHAudcTqxcfS?=
 =?iso-8859-1?Q?buz3j/wt4TI2HcjGPvSNA2YyJoGSJuHSrV7tSiUfTHdJp9Z+8Hi5Cd287S?=
 =?iso-8859-1?Q?mdkcKd1w22ZXE5sGWZ53WesNYEl+oSofPGIwPWdxlzgk7gSDAX3lCJAqM8?=
 =?iso-8859-1?Q?FC+m7WnK0YCQcI4DXkkIlPvVBZyI3tEIEt0WIQtYsmdXtDnCu21zbt35/G?=
 =?iso-8859-1?Q?KEm0HKOaj+BVe8i7LZbFN1gLmjl8NUdJ4JW+Z/0w8mdwzHCEAnJsiW1dRA?=
 =?iso-8859-1?Q?XH3cjvsyglqATs1tCEqU/ouXzc3+GpJ4dcaJlfWw6rSQKS0PtVeYOL/6eS?=
 =?iso-8859-1?Q?1xgAT+T2UzRmuXgytp6SnxbDykONg1NNSd91yPRO1yMvcyRqadFYvG+Bu7?=
 =?iso-8859-1?Q?ylqKu18MOVXJURSNVwaTPeC2ZkOzDeu1trQcKboGHsIurH1vxw/mfXR7Rn?=
 =?iso-8859-1?Q?r7mdvSdCSgpimqLo4Qx2Y5z5Ce1sRkv9TytH8yulv56YuXNSwhNhJQcFbN?=
 =?iso-8859-1?Q?auL91PGvLaXZ6HkUP9HMeK1DQsLryhqwR9M6pkL2Li/ya9Y98g/ax6XflY?=
 =?iso-8859-1?Q?SjNb5arFaBCOguOCepTeNh9nTPsh8PgsOfE402CK3T0VfMJFAvWWZ6tayh?=
 =?iso-8859-1?Q?PuS1EDDXBrdV4/tf1m/Ae3PieuCUBczKN3/4ps9FmsU/e3CGVuLstg0ipw?=
 =?iso-8859-1?Q?hz3vmj6rRYWXkYrBHNZJNGMYM6fhvs1MIm0h04tSNyNRoeuDuhCLWk97cQ?=
 =?iso-8859-1?Q?kC6YYTYISU8ka3rJtq9tzg0VblW+mu7ZFKsyp8w12PXwzvXBcpfggaMB0f?=
 =?iso-8859-1?Q?+1EpnjMQCF/l1i3uBAQc6LwOLoeA0egopJVXH2s7nb+FosdIrelLXI8RTg?=
 =?iso-8859-1?Q?Gq6qqT4G9NHi/clyzpIsjqi5hJ9I7I/+FBF9H+++7QGKh9bT/EELuxg+t0?=
 =?iso-8859-1?Q?PFU5qmZPQVzR6+5tXKZNMo4PIoKMn3PbDiAXq+nTKbmBFUEUgPrMGFMHqC?=
 =?iso-8859-1?Q?X/2AHefPrBVoUsGh450IsqAl0JTRWbyc14r9Z3efIyaq4c1mkfaWpKgGC0?=
 =?iso-8859-1?Q?EITAHXo/RVayFHjokXteHJ0uc6c7pyQRmvBcTIPK0QTYT4CicMHFBvhCuv?=
 =?iso-8859-1?Q?xZUK/jd5l0tfOb4hDCnUHKyQha9tCuhB6FGq9pUm0wL078pRZZX9WjR70E?=
 =?iso-8859-1?Q?HOB/TQBznSX7h1BcH1uXb8natdw6y+UKQDkYorE37+XhgNyclyfkE8OmCU?=
 =?iso-8859-1?Q?gYBCr3jnyi1jbI6zCmztCoEZpPp+/CEkzvxnxe5AH8kiiIcp1+4aMXcNww?=
 =?iso-8859-1?Q?UHWST4WJfg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	4BZNIJMYTNSmv1n11VS6LiAPhrdbIzI2t1rjNF9cAOIY5nse4uNtQ6i52E0c+x14x1KXQMpSvoHVS54v/cU3zAoyxWT0sbz0MkhOeKaOQVb8P3nBjJ5MtfE1ziaO/XAy/heOTomcTGzNEnKZBrb/sk0XfTwm6i/CuU5BGh9PYjzlvnj8foc0MqIzQqtKqAvYyNrvReqLL5MlmnCPvRcYANklnZwWPmRZ5sqni1t9kmBjUVRcElwWr6hs2tnsvAvzdWJB3H1DRDDk4bY5CmSYo8uPWkkW6vl9fAxWEfCtOO9eHWR0azMSyyfjcihGqnbET3Z5YTaWnxVKHpycl9kZLg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7527509f-e186-497f-0cd3-08df38c2c693
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:11.6043
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: U1+SOcBRUGNY0nbURzgl74h+Dzs4OVP0WHozRTwp8bel+S0fNZVR+sOga9za61ORx/pw7X/zEQgifdqRgg1nJcgicpRltGwRpUSoBJd7VkY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB6832
X-purgate-ID: tlsNG-d62444/1793611337-1D073757-2D78808E/0/0
X-purgate-type: clean
X-purgate-size: 2708

dwc2 has one root port and runs at full speed, so a second device only=0A=
fits behind the hub.=0A=
=0A=
Add auto-hub and leave it off. raspi has no versioned machine type, so=0A=
compat cannot reach it. bcm2835_peripherals turns the property on, and=0A=
raspi keeps the hub it has today.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/hcd-dwc2.h            | 1 +=0A=
 hw/arm/bcm2835_peripherals.c | 1 +=0A=
 hw/usb/hcd-dwc2.c            | 2 ++=0A=
 3 files changed, 4 insertions(+)=0A=
=0A=
diff --git a/hw/usb/hcd-dwc2.h b/hw/usb/hcd-dwc2.h=0A=
index 68877661ca..be06f0b0e7 100644=0A=
--- a/hw/usb/hcd-dwc2.h=0A=
+++ b/hw/usb/hcd-dwc2.h=0A=
@@ -167,6 +167,7 @@ struct DWC2State {=0A=
     uint16_t fi;=0A=
     uint16_t next_chan;=0A=
     bool working;=0A=
+    bool auto_hub;=0A=
     USBPort uport;=0A=
     DWC2Packet packet[DWC2_NB_CHAN];                   /* one packet per c=
han */=0A=
     uint8_t usb_buf[DWC2_NB_CHAN][DWC2_MAX_XFER_SIZE]; /* one buffer per c=
han */=0A=
diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c=0A=
index 558c180df9..9187376812 100644=0A=
--- a/hw/arm/bcm2835_peripherals.c=0A=
+++ b/hw/arm/bcm2835_peripherals.c=0A=
@@ -152,6 +152,7 @@ static void raspi_peripherals_base_init(Object *obj)=0A=
 =0A=
     /* DWC2 */=0A=
     object_initialize_child(obj, "dwc2", &s->dwc2, TYPE_DWC2_USB);=0A=
+    qdev_prop_set_bit(DEVICE(&s->dwc2), "auto-hub", true);=0A=
 =0A=
     /* CPRMAN clock manager */=0A=
     object_initialize_child(obj, "cprman", &s->cprman, TYPE_BCM2835_CPRMAN=
);=0A=
diff --git a/hw/usb/hcd-dwc2.c b/hw/usb/hcd-dwc2.c=0A=
index cd3b61158d..14211e6413 100644=0A=
--- a/hw/usb/hcd-dwc2.c=0A=
+++ b/hw/usb/hcd-dwc2.c=0A=
@@ -1354,6 +1354,7 @@ static void dwc2_realize(DeviceState *dev, Error **er=
rp)=0A=
     address_space_init(&s->dma_as, s->dma_mr, "dwc2");=0A=
 =0A=
     usb_bus_new(&s->bus, sizeof(s->bus), &dwc2_bus_ops, dev);=0A=
+    s->bus.auto_hub =3D s->auto_hub;=0A=
     usb_register_port(&s->bus, &s->uport, s, 0, &dwc2_port_ops,=0A=
                       USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL |=0A=
                       (s->usb_version =3D=3D 2 ? USB_SPEED_MASK_HIGH : 0))=
;=0A=
@@ -1450,6 +1451,7 @@ const VMStateDescription vmstate_dwc2_state =3D {=0A=
 =0A=
 static const Property dwc2_usb_properties[] =3D {=0A=
     DEFINE_PROP_UINT32("usb_version", DWC2State, usb_version, 2),=0A=
+    DEFINE_PROP_BOOL("auto-hub", DWC2State, auto_hub, false),=0A=
 };=0A=
 =0A=
 static void dwc2_class_init(ObjectClass *klass, const void *data)=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467843.1676887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHW-0003bw-T4; Mon, 02 Nov 2026 09:24:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467843.1676887; Mon, 02 Nov 2026 09:24:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHW-0003bO-Ko; Mon, 02 Nov 2026 09:24:46 +0000
Received: by outflank-mailman (input) for mailman id 1467843;
 Mon, 02 Nov 2026 09:22:14 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF3-0003Nw-Re
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF3-0071n3-8F
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:13 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563b-8faa-0a2a0a5109dd-0a2a45029824-34
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:13 +0100
Received: from [40.107.44.94]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563f-6ca4-0a2a45020019-286b2c5e28eb-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:12 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SI2PR06MB5265.apcprd06.prod.outlook.com (2603:1096:4:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:04 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=Gyjn4LB6+PdZtvqQNEOUdcBHK5wTtbHvJlOdRmJVquNlseQaaQWpjwWHf78Nyk9Ot2qnU2Ncy0XDUGrASoEMNo6r/Hb1jkMHm+FVKzDbXqR51tNdrLwJpxpWkVkdhXF2hLOKY1tSIark6S5k7+nH5tZ5gjaGTsvjekh6Z820cI5mNU8a+WawXfENSOJDSnfX5VjaCIkxLPNcPDIjcdvfT/L2rwB/AqwuqFBhO5mGQN+louEAGM4hjnt68Pe5Bjje8KOyH0SfuDbl5luE/+vnK5pYaYGr691Sk9LgetEQwy4z1pfqYL1BZvUQa7Om10E+QGgUc9niIcOL5AjH2jvBgQ==
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=1J9hw3nrZMuGs8jMFjazW/vAJ+CqVwyt+EmnecSmrgw=;
 b=abLL23A+1D9u4RGAkbd73j83KraWYBURQNSsjGbAddvy6pE00kScIGFLjYIurCgVkHGBK9lCFO1C9nsJQ4I+2KASOy8NHeWx1/5U9qO6a6BMpdP/kR+lgXXETKx1wqLmnGjH+Z5nM9JSHQcVKMX5UmuTGMW3SyDYPEf5snCdKnnXHjHR0Ahz23OwWrX+59ZtOOZ1R8e+XsSCEO7o0e4MDGrxMzz59PaUO3FOH0T4nytrQ5o3OMqazlXlBDRnZMQqvDjCgZ+Dp+C5ekzyl3ekvuR48859yM6eH/yWm5+BYiiYnZGkIG8q0WspQIqAx8D0vGNOiZJz+/uU2DvRfz/S+g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1J9hw3nrZMuGs8jMFjazW/vAJ+CqVwyt+EmnecSmrgw=;
 b=iBUPBSWC18cOS+WnFIYcfhlpg1QitVXNw80T8bDrQN6pEOZYEnuAOOm2sFDDqgyRL2C/9JG4nOmGjg4T5WcBA1AaXRFvgISvSUO10Uxx/C+357U4+3neCw6p33sndZKenbNsKxTyiH5YBkCKGMdrryTN/7WOb01Efj3Lh3LHyjHJE7OxFERXS9x3CEZf7VfWw5/s11MWenREnIYqWxZ9pnzVmZuwCV5ROZ6H5u7ZaHv95Kj41KkBiofNfayjVoIDFQaqHPitJLe/G7Ie1Bc+5GksdjPflY8ZGi+gBT55mwPLXUMneupu33VD2UNJ60scnOT5ob9qD8vvVvdI5fcJGw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 01/18] hw/usb/bus: Add an auto-hub flag to the USB bus
Thread-Topic: [PATCH v8 01/18] hw/usb/bus: Add an auto-hub flag to the USB bus
Thread-Index: AQHdaqufLoPY3HwMvk6g+z4FKihsFg==
Date: Mon, 2 Nov 2026 09:22:04 +0000
Message-ID: <20261102092201.1729245-2-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SI2PR06MB5265:EE_
x-ms-office365-filtering-correlation-id: 227b7a28-a186-40a4-1695-08df38c2c24d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|10067099003|18002099003|22082099003|921020|38070700021|56012099006|261021123027099003|261021121427099003|261022105027099003|261026140227099003|261009223027099003|261028144727099003;
x-microsoft-antispam-message-info:
 0O/obyNDU2v73IbP/75EQlVLECLaWrJOIL6PL8uejeF4g34gkXh7y8zCcFCqH6Ds11T8oxZb8CVLTH8qcs4+ytM7NaJ0Ua6npDmbnGk7+LaK6UK7b6RCplu8BR9jRZqTYmLhsFfR/yO9ewTjbZm+q6J002RNwuqsNwfntPLlN2pWeOHlUqbEeYPD71Y9uGeOeStsXd+CZ4WbhlUG2Urmn35hFuXchDrzQlWyezTDZ7CA93gMSzZhXUdbN01l1N7N/1p7ZKPzOlIDJJRmxH1qkS2kwRRDWzePGdlW7zkmROM25Mw5rwRUNXBYaHmy8SZV7BIYUKUbXxQqsjbvZPrAxrrfuEt0VyWB8PmV9AGzqkEiTPUpY8fQGoeGa1Ay9nVRvFwbbdvwSxuZz5xdpUgyuj47wPsk64iGgkhSt69eyuYr7aNUAjX8QGSfpfmC7VAGczK0+LAMlVyE4rHJg4CRioxQYG2WVhlw6SmYgXRcMliYUO4GT0ztWRAGyDHKpyzFlxYxY57YgvnpZ6y5L+u36PXhbrz4t6HOBklMTTZ+rRfEJVpl9sITQcjhJeCnDPR8mt8KP5Ix0fl+S28dITIz3wCMVAa+B4H44WqoE4xE/Vt4afulbnu6wLupSk0qayxWEGmxgjJJ3d6GbE3SCe4/c14o2PNqDtNC1TSesEifr+uFxpVIgiGYatroSZFKh2/vZdQ/EnyBD9zGe2XZQjdvCfl3lxyLC3jg57so+f53VM0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(261021123027099003)(261021121427099003)(261022105027099003)(261026140227099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?YAw2mZiHmdeu1t2tbeIx8gh8Z1P4A27dlF66VX32Vr7xtW8b6OsHwvGjXD?=
 =?iso-8859-1?Q?zR0nmXbAshMpo5/vG8qz0L+Q5pvazTGb3e7g+Adm0EXOg13EkDGc5dGOFh?=
 =?iso-8859-1?Q?XCKkJd4ar9Y0Lp6gyBctlt3vkgvedRAldtnNb1apqMX9vOuifGu4wLQRdm?=
 =?iso-8859-1?Q?LnT7/QhRhxWsfkULSWPCJaOL4FrUaQaXv/f53eeqocFXAD9pX/psZZ1UF3?=
 =?iso-8859-1?Q?pRAUSrOewCMitbR/VEI9uR25WBhW54pJvFpVqMZqzJR+hU1+qDyJSe2E6G?=
 =?iso-8859-1?Q?kYjWZdx+ttS8b/5Gn1DxcVyR+ghj8nTb0lJgxXt19ZhtsiIybHGJAxf8bd?=
 =?iso-8859-1?Q?vUmF9Q+f70xAWFZ5N+1QvZfnrbUxPTz/C55hm68wGXsiw29Xf+Znlbvy1S?=
 =?iso-8859-1?Q?fHbo+gw3F6TWm5Ce2hO1bEKlEiLWqnEF2IQO9KLmtPxcsQqPraulwI/M3o?=
 =?iso-8859-1?Q?GYZAODKIqNSHvR9aTiNTjtgOUU48nOkvj0o070xOGI7S7TLj9SNSSM+B2/?=
 =?iso-8859-1?Q?jquZrmzsyddJ3GRNT3FcjGsTl9eJCE0Hv8ZwWVfvozQvLyKNx6Z8dybu5y?=
 =?iso-8859-1?Q?BptG/mkq5Bsa66h2WSdbsoAw4JpvM3w98ZcRhmXBxE9nTvWwMh/TdAKzaP?=
 =?iso-8859-1?Q?T+jY/VdCruviPxkaJ5uTEVIynzVvQmmFaWsgxRSXybY8u2rEVxg53gf5m6?=
 =?iso-8859-1?Q?TaMYql4E2csIV0Rj0Z1X7vAfGnTRWhhzhrU2H5YxDPr8DuZGcK4NrE7D2r?=
 =?iso-8859-1?Q?6B4gq691ydTMGRTP4wStQl5s1Lpy/4AsCWxGSsQUvbb4RXhTvWOltfv332?=
 =?iso-8859-1?Q?S5p+xLk6yg/8jPKK0dqQ8npDiKNXrX7wE/HUfwdiyVEhYfhOlkDz6LLO55?=
 =?iso-8859-1?Q?e7LlIecXLWpP3epHA15bERTriYCzbDGD0jIDs4yEU3u5cHpCMZjiGiJL8t?=
 =?iso-8859-1?Q?3wVIw1T/9mXoiJiJ3BEQDcbqP2dcNT6Hprr0CIL+e452rqiTW7cpsdlInY?=
 =?iso-8859-1?Q?eH35udjE+Z9nqi3VI2in7LIg8iLZ+emK0S5erLyL3PKvoK2JTEtHTUnK88?=
 =?iso-8859-1?Q?pbcGWx04P2pGomZoGbgHjNUfEC4a4LZnT+wduzAjgS67M+SMZLUyNKID8I?=
 =?iso-8859-1?Q?Fcpkeci/8ouRR1HdHpxDZL9CjJWNauDCNdWMnOZlOHjVhMsEIvVraFUaz0?=
 =?iso-8859-1?Q?z5Axi3XvKkGgmkHrKxbz3iQdVx2X+zeqctTwqBvRqXDdszy2uRFFFU/HD0?=
 =?iso-8859-1?Q?sIrHxNDiXTYs9TWPolM4+UHNaX9/YSC8hcfB3P1BY5HzDDhIy73FhO1gT8?=
 =?iso-8859-1?Q?BvbYkWqBBs6Qqx/Wy3suqqYML8tTpwRsKvpSjX1a3Ht8o82hlkEVhfvnPp?=
 =?iso-8859-1?Q?hUaGPNQbuE9j6SAY8PLbZu/eeSp42/3XS19QN6JQkUnkMkff8HTjlWidMO?=
 =?iso-8859-1?Q?kFUM3Yqsa5b8BIxcQyRo6DXJ/2qoLYNl4qAdGSVThu4VLSsAXm+owbt8I3?=
 =?iso-8859-1?Q?2nzCgSGW6BoJMo1wrJ3Oqs2Byw0SuR3jzN+I/2g+QqFuoZcSXVeW3HN+J5?=
 =?iso-8859-1?Q?Y4ikKudwK4XNeHKVfnpp5HymbCk/wpVq6+xcH1Bz4G7hkF0luNq5SNbyNe?=
 =?iso-8859-1?Q?z8otUJ5ktEdbnGQum/mYg9xoqJXUX5V1Zr8ddTwUUv75NYZBnyGMK4hN6f?=
 =?iso-8859-1?Q?ZiPqt1EwKgLTYU2pKGhNAxytjZct7Om4RGW8+pAdK4mpnnsHGGB38w07Rq?=
 =?iso-8859-1?Q?apjkuhMy9sVE58ejCziIO5IRBHJji50PlviXlk8ywbrTBHLlqL/TLxrhkm?=
 =?iso-8859-1?Q?ph7K//+2gQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	YbcnIxKQKycce6RbQN+4KaX5VROZdTBnF4Zvykh19cMgjoLYovwgmCBmA8DWvnZrEnL4HHlPDczhBxudEfeP/kserASOFyKjvT93TejmoLWNr98ftHuX1HJwhOsvwYib1r1YbB+gu32uPqsGwzD4aMKPWBueUwTSOfPC2Uj95dCg5zNPFSQm/jP7jBtopYXFGnka9xVfGzyOwCe1meo4+pAXAr3emB+h0wEHEmUGocCtyoEsAPVAvAfmLBuNpQ4ROLA72CaJ4h2W9m7nvD+dxyJ4WwL+bh2JNfXlsP+/pv1kCjXtXVPAISErqAYnDxJYfgXUuATF1bMXLBpIVQ8PCg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 227b7a28-a186-40a4-1695-08df38c2c24d
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:04.3647
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: E4z5nZvU28MJlOyVFWR/L7B8HUuZq1PcZximqRBzU4sIFZf/tcIso/aGcC7qY0r+15iNGbLyJEl+2oR5G/kbDlYYH+7XyN+S6OisOxJOulk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB5265
X-purgate-ID: tlsNG-720697/1793611333-670B02AC-27513AD6/0/0
X-purgate-type: clean
X-purgate-size: 1984

usb_claim_port() plugs a usb-hub into the last free port, so that more=0A=
devices fit. Every bus gets that today, and a controller cannot turn=0A=
it off.=0A=
=0A=
Add auto_hub and have usb_claim_port() check it. usb_bus_new() turns it=0A=
on.=0A=
=0A=
No functional change.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 include/hw/usb/usb.h | 1 +=0A=
 hw/usb/bus.c         | 4 +++-=0A=
 2 files changed, 4 insertions(+), 1 deletion(-)=0A=
=0A=
diff --git a/include/hw/usb/usb.h b/include/hw/usb/usb.h=0A=
index cbd4711933..cc1d6d74b1 100644=0A=
--- a/include/hw/usb/usb.h=0A=
+++ b/include/hw/usb/usb.h=0A=
@@ -484,6 +484,7 @@ struct USBBus {=0A=
     int busnr;=0A=
     int nfree;=0A=
     int nused;=0A=
+    bool auto_hub;=0A=
     QTAILQ_HEAD(, USBPort) free;=0A=
     QTAILQ_HEAD(, USBPort) used;=0A=
     QTAILQ_ENTRY(USBBus) next;=0A=
diff --git a/hw/usb/bus.c b/hw/usb/bus.c=0A=
index 5cc5ffec33..92f67de4fe 100644=0A=
--- a/hw/usb/bus.c=0A=
+++ b/hw/usb/bus.c=0A=
@@ -92,6 +92,7 @@ void usb_bus_new(USBBus *bus, size_t bus_size,=0A=
     qbus_set_bus_hotplug_handler(BUS(bus));=0A=
     bus->ops =3D ops;=0A=
     bus->busnr =3D next_usb_bus++;=0A=
+    bus->auto_hub =3D true;=0A=
     QTAILQ_INIT(&bus->free);=0A=
     QTAILQ_INIT(&bus->used);=0A=
     QTAILQ_INSERT_TAIL(&busses, bus, next);=0A=
@@ -413,7 +414,8 @@ void usb_claim_port(USBDevice *dev, Error **errp)=0A=
             return;=0A=
         }=0A=
     } else {=0A=
-        if (bus->nfree =3D=3D 1 && strcmp(object_get_typename(OBJECT(dev))=
, "usb-hub") !=3D 0) {=0A=
+        if (bus->nfree =3D=3D 1 && bus->auto_hub &&=0A=
+            strcmp(object_get_typename(OBJECT(dev)), "usb-hub") !=3D 0) {=
=0A=
             /* Create a new hub and chain it on */=0A=
             hub =3D USB_DEVICE(qdev_try_new("usb-hub"));=0A=
             if (hub) {=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467842.1676882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHW-0003am-Ji; Mon, 02 Nov 2026 09:24:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467842.1676882; Mon, 02 Nov 2026 09:24:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHW-0003ae-E4; Mon, 02 Nov 2026 09:24:46 +0000
Received: by outflank-mailman (input) for mailman id 1467842;
 Mon, 02 Nov 2026 09:22:13 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF2-0003Nq-Km
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF1-0071n3-9o
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:11 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563b-8faa-0a2a0a5109dd-0a2a45029824-26
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:10 +0100
Received: from [40.107.44.94]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563f-6ca4-0a2a45020019-286b2c5e28eb-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:10 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SI2PR06MB5265.apcprd06.prod.outlook.com (2603:1096:4:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:03 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=b7DnHgbFVYC5tUzfKI+QmFXwJl7L0cL2VmKld0fp6hFUFMVrMc1Oj6ee4vHd3mrbdZYM74vsZiWXslKqgcssD8oM147xhrqB3lQFAKJSiYmxFn82RJotCF5R45BgV+ECrGtKjxXwA/oQ5piP9MAho8iNdbK5E016Q5MB3rJ/Iwgw90ixEc+bgRk4ih2elQ4qQ6qrOHtU4JWFMdxQl6kpYfIdega/u8HGcBHkIgZW73zuAAp3Nsv/925Fx5ySKwRTgaTpdsim1bvv7eGJIcmTtjIDx9+f2uvOnW4dcHwfEedCuhfUgphLgj+pOVry8pk0V6Q0FKilzNhJzYYiAXY38g==
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=/weoH6ZmGNv3F1ySUYIYUkaiPCki7/dI1nyzOzA3iFs=;
 b=ZEF26RUqJ4NaFQ46LInW3i8Sv6nWLMu0I11ZzuhJGYOH9UwVLuA554YK0zMHREJi51+CCFcl/3DQeEogXj55kmXJiWyfuxonz0PHyON8y2xlq7IXQf7iAUTvJ9g0tOqg6QPzS1ofqEGhURISmIAwQ5IMNeHf+GhuhhSWepcy1HxnXgTsRLPrRVOXTGuSX7wYwUpb0iFZtyfBzt+ZKZNEbSjKlTnmmNeEXQGFvkfKLrZw+ih70ZFRPvAPa++5lQ7Z4vEJyONoXUXWDk1N/UT5YIRiRemMd1fMo8O2QLkvpFnJ7MBx4X9Jo4WMjIfs7j0AUjsarkQkkFuOqremO4o+rQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/weoH6ZmGNv3F1ySUYIYUkaiPCki7/dI1nyzOzA3iFs=;
 b=E2/VTqhn48JMTWQ3pjSIspfCjdTKfrIvysBl2M2Cu44nwQAX0DQ/z1QvRYraSdLllNsdmWeoyncQXs6hGk6H9p4HUlhaXpp87AngYUdrGHfcZpJGSCrdGlnmCC08bOs53lbS3U2+X9mFCHZC0d4E/S7KWU9MOCzBLptr2CrA+YhdaJSWx3pHH1qQjAcllWszbTVHx3gQwSqq21dhfnvnXJ7Lbjc/1+E7DlUdpN6UZ4kpv5UMBTxvdOv/SDgy/KIEmjuCUX6GjpgNwXnhD1OHhfZ2Hqgb4Z4n2VkvdG7GF4gLA3Rlu+F19mhhpKly8hj5RgAUbVhYWFnUKNuIIYDfNQ==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 00/18] hw/usb: Add a usbredir server transport
Thread-Topic: [PATCH v8 00/18] hw/usb: Add a usbredir server transport
Thread-Index: AQHdaqueTQ6Kc9PD/0iLa8igmngQXQ==
Date: Mon, 2 Nov 2026 09:22:02 +0000
Message-ID: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SI2PR06MB5265:EE_
x-ms-office365-filtering-correlation-id: a8a8b418-eb61-4f14-e621-08df38c2c14f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|3023799007|6133799003|10067099003|18002099003|921020|38070700021|56012099006|261021123027099003|261021121427099003|261022105027099003|261026140227099003|261022113327099003|261026121527099003|261022115727099003|261022075727099003|261009223027099003|261028144727099003;
x-microsoft-antispam-message-info:
 +6/1iqsp/kw29gWDX4qyBM0qHSlXrh2NibINL3kAdIUi1FH+b/ZCI4dYFlGn+hk5dacKpj5N0NEXf3qQinkngSaFvtWp2un1tLftD2NkYrqjDYNmD1frsrjhofDP0je7Z44ktt9UqREg24AA6vb206CKtkgP1PJp0vIRrDjIfI0VQlUTIKq6WyxIGbGJuCJ3lb1geddIm3b7zUhaG7M1o43NGdZQWKFvo7XsdjrhMBx5CO6F+YvVZlO7GBWkOQEp0LoOBncbDTsYZwlvADh/SN1QKNpvxXNJUWSiv5qL4Kiz//0Ev+tqtSPrmWl1xdB/pOfz0lcRBOrd286tTgwtN6CZLJDqpWFOBAuIEFCGoPixOXtRxZXJtzDj4eygQB84/HY09RZCttAAjIprXWI83TPcK9Gn3ts61+MsoNfl9Bviyr9mwINcI6ysm067xqCkCAv/Tz0aiUKAdDRvOJ221YZ0at2Lp1q/7C/0fOfeY9nvRMf+GR7raZj5wRXYTLRPgTzS+lzjgVcrAGiESECMHrcyAxa0ns7jCl8tWy/jzNsmotX3o+eb9yJVmYh/DLLtE7uWnhSsCJcceIT5bP6pVQavCmdWqAypdbO2QZCmZLtOhY5zhf97RmWhsZ4gepg11vCsfCddx9Bevx9tGBNEZ8FRczPquvtWPRbLWZmogOIl2glpOlYlBaGrlbWb1sQT
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(3023799007)(6133799003)(10067099003)(18002099003)(921020)(38070700021)(56012099006)(261021123027099003)(261021121427099003)(261022105027099003)(261026140227099003)(261022113327099003)(261026121527099003)(261022115727099003)(261022075727099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Vw+C4zZvdvYeXXvv/pEL4yZX2oYa5PD4uvtL6dNOSYkeCm37Oo9OUt4p0X?=
 =?iso-8859-1?Q?dzRJJ9/H9WXU6lne7OVg20U1mS/USVok+VS3DP3H95OedxHlxARrWvQmms?=
 =?iso-8859-1?Q?o7Q4Z8mql7+SDoSIovdg6SS1WEFfBZc3V7LDJMhr+aq+eTX5R/BSUDV1wY?=
 =?iso-8859-1?Q?l6INu/0giNloYzxaPZXZsGidWiqnSYG8DDH1qv5ctZLZZkHAHVw5ZNyvTh?=
 =?iso-8859-1?Q?vQd6/E3gpkYXn0fNyKkWw8hJ0y5FZMwMsI6vcxemmA1aAz2AykRs2LMEwh?=
 =?iso-8859-1?Q?cTzKTgzDHKHTfpVu7MTeo1+LwzYw5god9eMlEu8knbWTzeVjHYzt5Cijap?=
 =?iso-8859-1?Q?FAbGLoBgeeUMfLBodv6r0ZkJDYtxXFv4TIiW5yT52VACBcLUe7LD/bATRK?=
 =?iso-8859-1?Q?Dh4tv+NSzpNGzpmVa13SP+YQVFVWbwcaEqc6ZremnuIVZAlwVOACJyJ2nW?=
 =?iso-8859-1?Q?Uv1+ecgeCblPhqbb/g9vF0wsSkYOwRKDXoaOAryI844c53y+p7ciIDtk56?=
 =?iso-8859-1?Q?ky4BwVzobIzcTnH3mDZApfIfEzhLZix2bNWCuD3J26QTuB2deeDG4wyRKM?=
 =?iso-8859-1?Q?Gwo5WgYd6TIJ2BNU+sKKaaRn1cC57rcreDHmDJf1HnLK2xCL65NFbZUyvl?=
 =?iso-8859-1?Q?f2yPLCgnTneCD2FVdqBWDhZTDT1cutbT6arH/U5vrC1+1eXRaR5fsIMY66?=
 =?iso-8859-1?Q?bOdUV7yWweSWh5dB57EsSK40RQQM1UMvuaTapxfTJWvTCf5H9kNY36k1wc?=
 =?iso-8859-1?Q?MZpaKABjDA1GkNqHooe+IrdjPYTYgy2snfvyMbt4fNCXLPcWnX9MVxN/Cc?=
 =?iso-8859-1?Q?FUSMiop7GheysjDl0vctEcwyr9tXwVWdoPNVowxJouBGVpM1hGM49wKsxh?=
 =?iso-8859-1?Q?MfYZuh9MXCaI5FuFc04m+pNI22L55pVVtX7uISSNVhIwDTydjdnlnCUoGS?=
 =?iso-8859-1?Q?4oBG3mxa5WQZkp/tkmNu0h8/+huUrY7+mW3ZKwShPeQi7jV+RhbsITIWno?=
 =?iso-8859-1?Q?6ZfLU9VsdEFcUYrRa2BvAYVWzquiJ23qgHKTU5LbFfui1bX9dTXA65Ee5R?=
 =?iso-8859-1?Q?9ztk5mlzqzIVr67dM/EiWmCpqGoQBdlBF6M6MUoUF+m1NKo8CySLp6IjqV?=
 =?iso-8859-1?Q?vmVhUBgofb4U+aK6Y3Jw6aYtl3nhetCgf7hokQHw+XMz5Ss357qzCW6orC?=
 =?iso-8859-1?Q?qf4SQHwD+l96ceMldcF9u2akvoqQ11FzoCCSbvV/D7uDVZuhPeY1H9iL5k?=
 =?iso-8859-1?Q?5emzG3bHnQ3FsJZ7KSaPQkirgO5EL3GTQkcRYp2lCiZz5KqWI1fceVmK2s?=
 =?iso-8859-1?Q?t8WsZ9Zl7glkW738Kt1HKC3RPdNFRb6qZeoG22UTnjIJHuR4dB65vKrbDd?=
 =?iso-8859-1?Q?JO742HKdckrdH2Qj7PpLB4yiVHr6B2WgYpBRKvZqceFDrs3k34k//nODNT?=
 =?iso-8859-1?Q?FsdWXm259jPoVIAo02wOMmT2uuFI/NEhPYe8Lx/q9rgGij2/ZhLN+F50ie?=
 =?iso-8859-1?Q?jqr+F/BKYrY692ZIG0JGE1y4i5ClJ0fs4ub7xbupu66gR94sPKdeRX1BEA?=
 =?iso-8859-1?Q?yHQAb/XBA5sODPlVfelRttEnVQS3guOyg3wbmnT0kRWNGjVRL4tQPLQZ5z?=
 =?iso-8859-1?Q?e23BELi62JHu3WoBw/Wi6/yH5KnE8jI/lOXCDsTbvXg80SfhMhHzYVgqXk?=
 =?iso-8859-1?Q?4JcgWlAyHUsBSVNDuO9BqXkp+tfW6nwaq4rPJODwS4xgRJgufKH8F9rQEP?=
 =?iso-8859-1?Q?2qL8zIBoQS4UhRL3uRSNDgl3gs7YMr7DEU6EU91fkNp0D/YWg6zpr1PGou?=
 =?iso-8859-1?Q?kg6RDiJ9GQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	uBKjgVfodI79C/up70Mk140Z505l3R9RVLbZ3QxecXYobluGUbQAr2dbyQ4Gf+bpzuvLqpa4kMjiJGXU187Q690J1EwVJzZub6vLiIm3Ma/sDI3cMOPkjQ3PezQoDBtTvI5vFX5kV2ZAFYqJuMCzQiFZeRRkCubGPfuYniZeCfS+J/A4UB9rjQbraYvmbhJ3CEzSNDygkVNu5l6A5wmfg28m0iOCabGPL+ksM1djUZYO+Hxr7707U8lTYu4AvurNaL6dV2w+8AAaD2bRjUXu80Y6hUq16Mj/BivrfdCV63sgfu2LcjLuz5GQfiqrqfDtzOVXa6/pqRBOa4b6R6iQcQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a8a8b418-eb61-4f14-e621-08df38c2c14f
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:02.7518
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Wn1MkdSahLvIWZO1BF5+lKrwK/a7tu8UL8rwgayszts5rKpJnuF6BbUoJrXMHoGobaVmgExt0MlI4hmMcq0m0wzu3ptRhFg9jiz208DGiUs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB5265
X-purgate-ID: tlsNG-720697/1793611330-30BC02AC-5300A630/0/0
X-purgate-type: clean
X-purgate-size: 11540

This series adds a usbredir server transport to redirect a USB device=0A=
emulated in one QEMU instance to a USB host controller emulated in=0A=
another one over the usbredir protocol.=0A=
=0A=
The v1 series included both the usbredir server transport and the ASPEED=0A=
AST1030 USB Device Controller (UDC) support. Following review feedback,=0A=
this series contains only the usbredir server transport. The ASPEED=0A=
AST1030 UDC support will be sent separately.=0A=
=0A=
This work is part of a larger plan to model USB device-side support on=0A=
ASPEED BMC/BIC SoCs, which has three goals:=0A=
=0A=
1. Model the ASPEED UDC (AST2600 / AST1030). The AST2600 also has USB host=
=0A=
   (EHCI) controllers, so that work targets the AST2600 UDC: its gadget can=
=0A=
   be attached to the SoC's own EHCI bus, letting the guest enumerate its=
=0A=
   own gadget and exercise the UDC end-to-end.  [Done]=0A=
   https://lore.kernel.org/qemu-devel/20260902021542.3194812-1-jamin_lin@as=
peedtech.com/=0A=
=0A=
2. AST1030 UDC. The AST1030 has no USB host controller, so testing its UDC=
=0A=
   needs a second QEMU instance. The UDC gadget is redirected out of the=0A=
   guest with libusbredir and attached to another QEMU that runs a USB host=
=0A=
   (a VMM, or an AST2600 / AST2700 guest).  [this series]=0A=
=0A=
3. ASPEED vHub, as a longer-term goal towards BMC KVM / Virtual Media=0A=
   support in QEMU.  [future]=0A=
=0A=
This series implements goal 2.=0A=
=0A=
The transport=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
=0A=
x-usb-redir-server exports a locally emulated USB device to a remote USB=0A=
host over the usbredir protocol, so a device emulated in one QEMU instance=
=0A=
can be enumerated by a host controller emulated in another one.=0A=
=0A=
The left column is a request going to the device. The right column is the=
=0A=
answer coming back. The middle hop carries usbredir messages over a=0A=
socket. The top and bottom hops carry USBPackets inside QEMU.=0A=
=0A=
    remote QEMU: guest driver -> EHCI/XHCI=0A=
             |                     ^=0A=
   USBPacket |                     | USBPacket=0A=
             v                     |=0A=
    "usb-redir" (the client)=0A=
             |                     ^=0A=
    usbredir |   chardev socket    | usbredir=0A=
             v                     |=0A=
    x-usb-redir-server (the server, this series)=0A=
             |                     ^=0A=
   USBPacket |                     | USBPacket=0A=
             v                     |=0A=
    any USBDevice, "-device <dev>,bus=3D<id>.0"=0A=
=0A=
"usb-redir" (hw/usb/redirect.c) is the client:=0A=
  - it takes a USBPacket from the remote guest and writes it to the socket=
=0A=
    as a usbredir message=0A=
  - it reads the answer from the socket and completes the USBPacket=0A=
=0A=
x-usb-redir-server is the server. It does the same thing, but backwards:=0A=
  - it reads a usbredir message from the socket and runs it as a USBPacket=
=0A=
    on the bus below=0A=
  - it takes the result of that USBPacket and writes it back to the same=0A=
    socket as a usbredir message, for the client to read=0A=
=0A=
A USB device has to sit on a USB bus, and in QEMU a USB bus is always made=
=0A=
by a host controller. So x-usb-redir-server makes one and acts as the host=
=0A=
controller on this side. It models no real chip: its cable is the chardev=
=0A=
socket. The real host is in the other QEMU.=0A=
=0A=
The type name has an "x-" prefix because the device is experimental. It=0A=
has to sit on the sysbus so that "-device <dev>,bus=3D<id>.0" can find the=
=0A=
USB bus it provides, and that may change later.=0A=
=0A=
usbredir carries one device, not a bus. A hub cannot be exported: the=0A=
protocol has no device address field. To export several devices, run one=0A=
x-usb-redir-server per device, each with its own chardev.=0A=
=0A=
Testing=0A=
=3D=3D=3D=3D=3D=3D=3D=0A=
=0A=
A plain usb-storage device was used to test the transport. The storage=0A=
device is attached to x-usb-redir-server and exported over a Unix socket:=
=0A=
=0A=
$ qemu-system-aarch64 ...=0A=
-chardev socket,id=3Dusbredir0,path=3D/tmp/usbredir0.sock,server=3Don,wait=
=3Doff=0A=
-device x-usb-redir-server,id=3Dusbredir0,chardev=3Dusbredir0=0A=
-drive id=3Dusbdisk,if=3Dnone,file=3Dimage0.ext4,format=3Draw=0A=
-device usb-storage,bus=3Dusbredir0.0,id=3Dmystorage,drive=3Dusbdisk=0A=
=0A=
The exported device can then be attached to EHCI bus 3 of an AST2700=0A=
guest using the existing usb-redir client:=0A=
=0A=
    -chardev socket,id=3Dstorage,path=3D/tmp/usbredir0.sock,reconnect-ms=3D=
1000 \=0A=
    -device usb-redir,chardev=3Dstorage,bus=3Dusb-bus.3=0A=
=0A=
The AST2700 Linux guest enumerates the redirected USB storage device:=0A=
=0A=
root@ast2700-default:~# lsusb=0A=
unable to initialize usb spec=0A=
Bus 001 Device 001: ID 1d6b:0001 Linux 6.18.36-v00.08.03-gaf2f426c5786 uhci=
_hcd Generic UHCI Host Controller=0A=
Bus 002 Device 001: ID 1d6b:0002 Linux 6.18.36-v00.08.03-gaf2f426c5786 ehci=
_hcd EHCI Host Controller=0A=
Bus 002 Device 002: ID 46f4:0001 QEMU QEMU USB HARDDRIVE=0A=
=0A=
This also demonstrates that x-usb-redir-server is not specific to the=0A=
ASPEED UDC. Any USBDevice can be attached to its USB bus and exported=0A=
to a host controller in another QEMU instance.=0A=
=0A=
v1:=0A=
  1. Add a usbredir server device=0A=
  2. Announce the exported device=0A=
  3. Implement control transfers=0A=
  4. Implement bulk and interrupt transfers=0A=
  5. Stream interrupt IN endpoints=0A=
=0A=
v2:=0A=
  1. Split the original series into USB and ASPEED parts as suggested=0A=
     during review.=0A=
  2. Keep this series focused on the usbredir server transport.=0A=
  3. Move the ASPEED UDC changes, AST1030 UDC support and its functional=0A=
     test to a separate series.=0A=
=0A=
v3:=0A=
   1. Move include/hw/usb/redirect-server.h into redirect-server.c.=0A=
   2. Drop the announce timer. The firmware does not toggle the pull-up,=0A=
      and the delay would be machine specific anyway.=0A=
   3. Rename the type to "x-usb-redir-server" to mark it experimental.=0A=
=0A=
v4:=0A=
  1. ep_info now says what the host chose, both the configuration and the=
=0A=
     alternate setting. Keep every configuration descriptor, not just the l=
ast one.=0A=
  2. look at the request type too, not only the number=0A=
  3. wait for the endpoint's bInterval before asking the device=0A=
     again.=0A=
=0A=
Patch 7 lost its Reviewed-by because it changed. It used to ask the=0A=
device again from a bottom half, which runs as soon as the main loop=0A=
comes back. So there was no wait at all.=0A=
=0A=
A keyboard answers NAK while no key is down, and the retry timer paces=0A=
that, so it looked fine. usb-net's status endpoint answers every time.=0A=
The loop never stopped: ask, answer, ask again, about 17000 times a=0A=
second. The same main loop runs the guest's timers, and it had no room=0A=
left. The guest stopped feeding its watchdog, and the watchdog reset the=0A=
machine.=0A=
=0A=
bInterval is the rate the endpoint asks to be polled at, and the rate a=0A=
real host controller uses. The stream now waits for it.=0A=
=0A=
v5:=0A=
  1. Use a separate timer and bottom half for each endpoint.=0A=
=0A=
v6:=0A=
 1. Fix a build failure from a missing header.=0A=
 2. Free the packet data in the control, bulk and interrupt callbacks.=0A=
 3. Cancel the packet before cleanup on USB_RET_REMOVE_FROM_QUEUE.=0A=
 4. Send no reply when the cancelled transfer is not found.=0A=
 5. End the interrupt stream only on USB_RET_STALL.=0A=
 6. Keep a USBRedirServer pointer instead of pointer arithmetic.=0A=
 7. Cancel the BH and delete the timer in stop_interrupt_receiving().=0A=
 8. Start the interrupt stream loops at 1, endpoint 0 never streams.=0A=
=0A=
v7:=0A=
 1. Add a flag for the automatic hub and leave it off by default.=0A=
    UHCI, OHCI and dwc2 turn it on.=0A=
 2. Drive a control transfer with one packet and the setup fields in=0A=
    pkt.parameter, instead of walking the token stages.=0A=
 3. Keep a request the device answered NAK and send it again when the=0A=
    endpoint wakes, with a timer for the devices that never do.=0A=
 4. Give each endpoint one struct, holding its waiting list, its retry=0A=
    timer and its descriptor fields.=0A=
 5. Ask more slowly after a streamed request answered NAK or failed,=0A=
    and keep the endpoint's own rate for the good case.=0A=
=0A=
v8:=0A=
 1. Report how many bytes the device moved on a bulk or interrupt OUT trans=
fer.=0A=
 2. Implement isochronous transfers for an OUT endpoint.=0A=
 3. Announce the device from a bottom half, and reset it first. The old=0A=
   path hit an assertion, and the device has to be in DEFAULT state=0A=
   before it can answer anything.=0A=
 4. Avoid cancel a streamed interrupt or isochronous packet.=0A=
 5. Turn the automatic hub off by default.=0A=
 6. Give every USB host controller an auto-hub property, off by default.=0A=
 =0A=
Jamin Lin (18):=0A=
  hw/usb/bus: Add an auto-hub flag to the USB bus=0A=
  hw/usb/hcd-xhci: Add an auto-hub property and leave it off=0A=
  hw/usb/hcd-ehci: Add an auto-hub property and leave it off=0A=
  hw/usb/hcd-uhci: Add an auto-hub property and leave it off=0A=
  hw/usb/hcd-ohci: Add an auto-hub property and leave it off=0A=
  hw/usb/hcd-dwc2: Add an auto-hub property and leave it off=0A=
  hw/usb/xen-usb: Do not insert an automatic hub=0A=
  hw/usb/bus: Turn off the automatic hub by default=0A=
  hw/arm/npcm7xx: Keep the automatic hub=0A=
  docs/system/devices/usb: Note the automatic hub change=0A=
  hw/usb/redirect-server: Add a usbredir server device=0A=
  hw/usb/redirect-server: Connect usbredirparser to a chardev=0A=
  hw/usb/redirect-server: Announce the exported device=0A=
  hw/usb/redirect-server: Implement control transfers=0A=
  hw/usb/redirect-server: Implement bulk and interrupt transfers=0A=
  hw/usb/redirect-server: Stream interrupt IN endpoints=0A=
  hw/usb/redirect-server: Implement isochronous OUT transfers=0A=
  hw/arm/aspeed: Enable the usbredir server transport=0A=
=0A=
 docs/system/devices/usb.rst  |    7 +-=0A=
 hw/usb/hcd-dwc2.h            |    1 +=0A=
 hw/usb/hcd-ehci.h            |    4 +-=0A=
 hw/usb/hcd-ohci.h            |    1 +=0A=
 hw/usb/hcd-uhci.h            |    1 +=0A=
 hw/usb/hcd-xhci.h            |    1 +=0A=
 include/hw/usb/usb.h         |    1 +=0A=
 hw/arm/aspeed.c              |    7 +=0A=
 hw/arm/bcm2835_peripherals.c |    1 +=0A=
 hw/arm/npcm7xx.c             |    2 +=0A=
 hw/core/machine.c            |    6 +=0A=
 hw/usb/bus.c                 |    3 +-=0A=
 hw/usb/hcd-dwc2.c            |    2 +=0A=
 hw/usb/hcd-ehci.c            |    1 +=0A=
 hw/usb/hcd-ohci-pci.c        |    1 +=0A=
 hw/usb/hcd-ohci-sysbus.c     |    1 +=0A=
 hw/usb/hcd-ohci.c            |    1 +=0A=
 hw/usb/hcd-uhci.c            |    3 +=0A=
 hw/usb/hcd-xhci.c            |    2 +=0A=
 hw/usb/pc87560-ohci.c        |    1 +=0A=
 hw/usb/redirect-server.c     | 2075 ++++++++++++++++++++++++++++++++++=0A=
 hw/usb/xen-usb.c             |    1 +=0A=
 hw/usb/meson.build           |    3 +-=0A=
 hw/usb/trace-events          |   39 +=0A=
 24 files changed, 2160 insertions(+), 5 deletions(-)=0A=
 create mode 100644 hw/usb/redirect-server.c=0A=
=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467851.1676909 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHY-00040y-3f; Mon, 02 Nov 2026 09:24:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467851.1676909; Mon, 02 Nov 2026 09:24:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003z5-Pi; Mon, 02 Nov 2026 09:24:47 +0000
Received: by outflank-mailman (input) for mailman id 1467851;
 Mon, 02 Nov 2026 09:22:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF7-0003Or-77
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF6-00GjNn-Jq
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:16 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85648-2eae-0a2a0a5409dd-0a2a4502a57a-0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:16 +0100
Received: from [40.107.44.94]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563f-6ca4-0a2a45020019-286b2c5e28eb-6
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:15 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SI2PR06MB5265.apcprd06.prod.outlook.com (2603:1096:4:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:10 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=MnFfrHdPwWx8Y4Sw+qrKCqW1aK7frxtME5hYGM9EKBRdKCPf7LER1NMO5HZFpjviFp7Zw+wzLa3UAHSbAzNff9gN29yb5NLdLqIWExnOik9ba5ME9kKwzTqU7cCAEpHAefz7sk/SeLdXSc4BPdbdXtk0FnC3Wce2pk0xx00nO+FS4UWYDOIB7eGuYiKsELKdLx2rsK5ia/SeOmDu/Lvc5tzdFMupz5tV5NxIIrjp3v+5DlE7SeAuwuqRjZvgPr/pSc+LJYXxs8LTrYeDHFpgF28uhPFKRjhvF6JbmuXZBn74w7kcOR1M/Nyke3LaPhaOL/5KBbmYU2/jPFzLACmduA==
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=xE60Gd690uM3B6chIq8hl6krRCwchDFsLEoPfV4qomo=;
 b=LsV+cYKjbQ70aqzu8Dzd+5utFdXP/qqETsiAdGjqCj+3lZ1LSIzqX5Oh+VcjVCv8VWEvkBWYdYzSP+acu+ty5F72UXIoM9sZjb7ZKOA6PJpQyLI5ku9Xwdr+FmtzkZEVzjesWkpdVafh/l3/d//Ape+iYyD5Aqq0vLk+eurSpcSIyJcwusrw5wPUl6jQY9ERcMlqxcHwv1vNvF9VbG+jfLcBo6fyCd/rizrzcgP1WL4olOnE4r1iVkuTZU5UYChzsspHI6f601EIjhCy4zfIsX4HkGzV1mxZZpg5ChlGftrlPX5qHcsE1N5kU9P3L7AGwmtzX5YNe7Aqo+qGkhgQ6g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xE60Gd690uM3B6chIq8hl6krRCwchDFsLEoPfV4qomo=;
 b=XQRJrSkyp5A6kuYitfEB57Qt+rDgE3EzphhYTbs5IjAsrZVAF1l1H11/BOcbsjw607n0ibJ1Rg9y3LEiuXFqNlMVwQrCAjtTO8ujTIWqJ1P7D+h27itE3A1tPn0XHXpCMxbYthp3BAOLMd1gxJCVKLLZSzP3PifpNLR9f9zHhLXmpU0cw7RFYbpzrvKFnHOK86wU2IDlZI7USjTPkMtM1/MzczKqKlbtUF4daFs1kJdaRz0Y/6vkw9tL860qJDj/rSUB4CcRd3BoNAjLzbi5Y8WiXOxx2bXvb4KU1fP26o6owDV3dYX7fkhxiLU27LvKADD3/G41qcGVBWrODlvnTg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 04/18] hw/usb/hcd-uhci: Add an auto-hub property and leave
 it off
Thread-Topic: [PATCH v8 04/18] hw/usb/hcd-uhci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaquijhRoEsXvw0qx1kFWlJ7X5g==
Date: Mon, 2 Nov 2026 09:22:08 +0000
Message-ID: <20261102092201.1729245-5-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SI2PR06MB5265:EE_
x-ms-office365-filtering-correlation-id: b49c7ea6-26db-4e7a-990f-08df38c2c4ed
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|10067099003|18002099003|22082099003|921020|38070700021|56012099006|261021121427099003|261022113327099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 kz6AOl4PzjbI36rDYqpZnY2m7YaweWoUI0wI2MSTe0iTWC+GOGhsSFounPEd1eLsYwAnXRp6QT7tmqgLDhBQp7sYJMSxRSJl/P6EylsIsYEYjkPEKx9kMWejs+WChtwc3IyFbbxX/F+9MEOYl4BwxeEBw4IsC7hp0QIbOUAT2GsFa99kFMutgg3WvgXU3b3JK/aMwKxL9x8xQX4cdLKYeMH+G1NTal/8AU1ynWRYs08Y0eRqUzQdUFHm6otbu+w4SlGAVu5+7HeEaNj4pOr+e732y7d1hFfGzA1Si1zzFBZjl+paSi68NQj01ZHIAvPe9obKTBADxAmEFwc5LOjH1w3sUItVuTYRH09pDjHyRpWXa4lWqoYqFwAg2BII1rTDooJX5kPOtVLRHLrGb8qRv0a2ib8uoyzJFK1NzgP4tU+hbnxCtU4QJ5BBs/jIFNcar2ZFJJ3SREgUrrejByQZ3FqQ1ODvkOKH0SpqjX9g4pUb3pyhQL6ACCnTruGIwqsiWlDLeWSiAVxl5dscuXbUmOV2V2O8/e5JEANvz/NuMYp7Kspcz1JgiKJ8nqyWpzZtwSYsBtsle9XnBcaiD3nNe3AghhMQxD2plmCpH+irbZBO8drOoCLzNWJ+rBrbomVbtwUj1dHCmJYky5UEl3QQucowthMdtoP5kDRhvodtkrWTvc99oislOWAOSLRfVLz4PbT/RSIADM+iLBIV8UjYF2jFXh5Ly+1GolfYrFc6CNxWK3AZejxHe5pcERPeqF6r
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(261021121427099003)(261022113327099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?KTwT2wbUYlaFwjzRm9rICONNE83T24EmUZu+qaF1epqdIkT4nsyCnu6z4u?=
 =?iso-8859-1?Q?IoDcieBngK+GucMjQBY/iCC/4AehB17OeP48hGPUosaXZnfLiZbCqy/ZYL?=
 =?iso-8859-1?Q?6wtC2Ud5kuoPHLju0hZr0XG2u0cCtGi6vxKOXETGheV7Masxqd9s6b7AAK?=
 =?iso-8859-1?Q?09lBgWq9hNYmE90mlGJSHkdhFl7sy2C4lmJFGkLUIzvJGhZE+cixcxQtGV?=
 =?iso-8859-1?Q?tCxNr8ekxHOAzhtao41nVuoZilegZ4nxcIZBvG2RgmQhSibAjjVeAbfhH/?=
 =?iso-8859-1?Q?HFbE9Nz/Z9/bugHOhmbYygcPf8WTXBP68CQ4JxMkJc1nIbO+5nkwBIBLie?=
 =?iso-8859-1?Q?GTn06AHEG481jKztsZ8H0YDLIiC3meNjR75oiG6DXzwfvd0UyBzIzKlphS?=
 =?iso-8859-1?Q?84vXXel8W3Uqep8I04j4lQtBaRyClEPzQYIWraOAgcW6hnVVzttyPAQNCV?=
 =?iso-8859-1?Q?6R5rY6kwPT9ktIu+idMpys/gUr1dGogoO4tsBjDiy14gNwgRrLXu+a3oJ8?=
 =?iso-8859-1?Q?1rOtdKd5lrBWmHZiI0RHN0YiDxoQyBcYkIUW8cOSTUlRTXV9gSY/ZbJjEE?=
 =?iso-8859-1?Q?+/435kOpLJLDN1cky4b+4JMDN48wAyHhsU1ZEX0xNELnxXCeQytHsJHdg3?=
 =?iso-8859-1?Q?8uAaXr6YjtLvjGglsaDelkKd8qsL2GcN3Hbg37XMupUwHf5bVjd7PC5R72?=
 =?iso-8859-1?Q?rer9yIYsEp0ZSxcT9bBBQY+MhCqY3ZP6b+XHTyzM0QacvxaL/uYS7uq2WH?=
 =?iso-8859-1?Q?E096NgH4ey1ipE22CYkQ0chv4t4tQdN2bBgDTA3Zixfxx/ofsxEIOIblf6?=
 =?iso-8859-1?Q?pM4pzkZvxyxXMwKXRND8J2oWF+nXwWUY0qB7hwwkPzQBmyiWBw9jSYInOn?=
 =?iso-8859-1?Q?nRkHN5LnQrOmxiryxn8ml3dmCcfk/DXM7eTQxR5vAHbnv8U2gHXnTBAwqo?=
 =?iso-8859-1?Q?eIfCi0f0o4rTbgm/WnixsH8niaPlbu74tCVE2IF3r1hkgM91nf9Y/upUA6?=
 =?iso-8859-1?Q?ag+Ca7KQpYC9slFo78dlbWVs8Bg0s6M8AK9WwEmlFOBAUz2ShyfKvCls1k?=
 =?iso-8859-1?Q?uM1WfaBilGrpakwyuRygrTXGQ/Yy/5caxOc/tl41hvlWv35EQKVMBbWFEt?=
 =?iso-8859-1?Q?EKzKFkYMAj7EmgcbdaY2eUR2g1OqUzzma5ttUF90DO/TY5vqiWLiiVbsvN?=
 =?iso-8859-1?Q?i66v9d8n7iGtzBHVlCKC1JxL/7FiL7oKdeRGnoUOGuvRUJV6g2nXlw20wp?=
 =?iso-8859-1?Q?jLlY1hXyjKbq3y3qkrikvZYX7ZGYmCGZs/w8HZTFHAzm6sKsk4eNPUz0sF?=
 =?iso-8859-1?Q?n4rzKPKqysf6nmW1I35rO1uFiNLQmAfueCThgIztTiiVhxDOVXXV3+hs8A?=
 =?iso-8859-1?Q?eoLX+OIzVwGrZNgJBM0gbHkMyf7DQ36G/OE9Eezewy7PmZxsXefcQQ79fe?=
 =?iso-8859-1?Q?4tWt711uklhOSaRtLEVyjh6PkjHaJL27DHpoxpOxnzPVqzztYTklwQHHW+?=
 =?iso-8859-1?Q?RBcuyPwAJ+6DnBUKdhj4UDFRa8lfV8rHPCM6EhgYsazlJf1X77of3J7stn?=
 =?iso-8859-1?Q?s/sFRz1/OuTg2cMqYOfhV1sTwlS9asrl8CvQacmx6EhnLcGnk5685Ehduf?=
 =?iso-8859-1?Q?dJQ6zfAq/DAXnF8P1Kg8uuQcP/HS8zzdrFnS4enY+cEaX/QJGsDWl3H0Kr?=
 =?iso-8859-1?Q?mAcpk6I+DAEKnpncz3sLA8WkUG8aZddFBpUlHl7vDnL4q5LQD8b47VMeB+?=
 =?iso-8859-1?Q?Sjy9MKuQXQmzvyaYpjkUWzVlVxBExZYBT7PUIjuKcr/N9FqNj2iNFrfqTs?=
 =?iso-8859-1?Q?xYpxFes/Dw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	T26Jhc52y+vZhkfPPHQRZg+ajmrG+JqMVzeP7Kn8iTI3+RbmA33CceHIkTzRSX/UvA8i/GT0WzwM0n1s4WzH+SZj37u76MFomBOuZ+w/nKwFbNXpFlLt1jxykWGyT4ACO6uBsCidil2uRNSS3VKQcit+VjK6grGOo0w8vNoYziBLdSK0naT/5UWAao7b/5778ViNna209cDW4PPR0ct3iDZXMigyVymozt0HRJYZiFxdzhim/nFaCSmaj5ZRTz61cLxxlekiH3dW+huXfkoWxI3xLbNF6LJrP58hnF8o/f0mJvSYVFoP6pnAtQZTcktBfRoJ2EJv3AoeLRHtgz3tKg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b49c7ea6-26db-4e7a-990f-08df38c2c4ed
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:08.7727
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 8zqZA4Fk7xR6O5nYc40QpiG+pjjYwCVp3XWWlHn65j+V9XrPJHspshqxW0/SWYK7jxsAcepVx3AmwEoA79iGLXg87pzauQ8qCao7qIBDIBU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB5265
X-purgate-ID: tlsNG-720697/1793611336-321D72AC-9016593D/0/0
X-purgate-type: clean
X-purgate-size: 3003

Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older=0A=
machine type keeps the hub it has today and a guest saved by an older=0A=
QEMU still loads.=0A=
=0A=
A companion UHCI adds its ports to the EHCI bus instead of making one,=0A=
so there the EHCI property decides. Both property lists still define=0A=
auto-hub, because hw_compat_11_1 names pci-uhci-usb, and QEMU stops=0A=
when a global names a property the device does not have.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/hcd-uhci.h | 1 +=0A=
 hw/core/machine.c | 1 +=0A=
 hw/usb/hcd-uhci.c | 3 +++=0A=
 3 files changed, 5 insertions(+)=0A=
=0A=
diff --git a/hw/usb/hcd-uhci.h b/hw/usb/hcd-uhci.h=0A=
index 3154837f1d..06433ce3de 100644=0A=
--- a/hw/usb/hcd-uhci.h=0A=
+++ b/hw/usb/hcd-uhci.h=0A=
@@ -72,6 +72,7 @@ typedef struct UHCIState {=0A=
     char *masterbus;=0A=
     uint32_t firstport;=0A=
     uint32_t maxframes;=0A=
+    bool auto_hub;=0A=
 } UHCIState;=0A=
 =0A=
 #define TYPE_UHCI "pci-uhci-usb"=0A=
diff --git a/hw/core/machine.c b/hw/core/machine.c=0A=
index 0103038cad..f79337e7d7 100644=0A=
--- a/hw/core/machine.c=0A=
+++ b/hw/core/machine.c=0A=
@@ -46,6 +46,7 @@ GlobalProperty hw_compat_11_1[] =3D {=0A=
     { "sysbus-ehci-usb", "auto-hub", "on" },=0A=
     { "pci-ehci-usb", "auto-hub", "on" },=0A=
     { "base-xhci", "auto-hub", "on" },=0A=
+    { "pci-uhci-usb", "auto-hub", "on" },=0A=
 };=0A=
 const size_t hw_compat_11_1_len =3D G_N_ELEMENTS(hw_compat_11_1);=0A=
 =0A=
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c=0A=
index a7b9fe1317..36d4076c25 100644=0A=
--- a/hw/usb/hcd-uhci.c=0A=
+++ b/hw/usb/hcd-uhci.c=0A=
@@ -1213,6 +1213,7 @@ void usb_uhci_common_realize(PCIDevice *dev, Error **=
errp)=0A=
         }=0A=
     } else {=0A=
         usb_bus_new(&s->bus, sizeof(s->bus), &uhci_bus_ops, DEVICE(dev));=
=0A=
+        s->bus.auto_hub =3D s->auto_hub;=0A=
         for (i =3D 0; i < UHCI_PORTS; i++) {=0A=
             usb_register_port(&s->bus, &s->ports[i].port, s, i, &uhci_port=
_ops,=0A=
                               USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL);=
=0A=
@@ -1260,10 +1261,12 @@ static const Property uhci_properties_companion[] =
=3D {=0A=
     DEFINE_PROP_UINT32("firstport", UHCIState, firstport, 0),=0A=
     DEFINE_PROP_UINT32("bandwidth", UHCIState, frame_bandwidth, 1280),=0A=
     DEFINE_PROP_UINT32("maxframes", UHCIState, maxframes, 128),=0A=
+    DEFINE_PROP_BOOL("auto-hub", UHCIState, auto_hub, false),=0A=
 };=0A=
 static const Property uhci_properties_standalone[] =3D {=0A=
     DEFINE_PROP_UINT32("bandwidth", UHCIState, frame_bandwidth, 1280),=0A=
     DEFINE_PROP_UINT32("maxframes", UHCIState, maxframes, 128),=0A=
+    DEFINE_PROP_BOOL("auto-hub", UHCIState, auto_hub, false),=0A=
 };=0A=
 =0A=
 static void uhci_class_init(ObjectClass *klass, const void *data)=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467854.1676927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHZ-0004JJ-0F; Mon, 02 Nov 2026 09:24:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467854.1676927; Mon, 02 Nov 2026 09:24:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHY-0004Gl-LK; Mon, 02 Nov 2026 09:24:48 +0000
Received: by outflank-mailman (input) for mailman id 1467854;
 Mon, 02 Nov 2026 09:22:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF9-0003QA-2O
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF8-008rD4-F4
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:18 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85647-e002-0a2a0a5209dd-0a2a4509b45a-12
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:18 +0100
Received: from [40.107.75.114]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85648-be1a-0a2a45090019-286b4b728998-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:18 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by OSNPR06MB8331.apcprd06.prod.outlook.com (2603:1096:604:470::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:13 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=Upi7bML+hEO2flSysAqrv1FsxtE5fLwJhkpmsVHDObxK2AQ8S+KIu8geCVF5l9izI0BDM/kgPG/C1zFPoYhvaagl7exr+Cr5j5URcbPprODJlp3tWvSHGaBdlLqXIwCV51xeFzOBeni5yn9+p9C9OSU7SnOhkXBYXe8Cht8968KeMeX/0s6kKitNppIAkKoV47p7g87K0V9jm7MdD6dkrLZEwcIHNKV+aTr5kMVo75pP9k/iVYBcJz0xCuDXtmc9q77IidopZ2ijY41UJvquBKfZxqJzsp2ev1Ey1v2hrEv3Pql69YSn6AZAAHUQk4u5oKvXs8MHM4k21zEtZeHF9g==
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=ymaNZN2H+GfrYhLbTN7EX4AzfAlYVc4ESieedfSDjmc=;
 b=yafyAQQr6QR+dRyrPkkG3IeuWwV/zwT/B5SKrqfoRxkLa3OQMaqB0eBD8r+uJ3caWxF4zJguDL0szP1z2zoHNcztmOcF8xIoJoAHEzUO1lim/qMBeTlGwXD+Zz1WT6qztYrmyQigJmH24Wp+/UlIJzKI+l0dchkxltJlDLenz+Rc1ebiDAQYpcO9wQ947HS7P+3FixnXQ5xJ1Oz4KSfjPtLXTQ6d8gvlL3udCkCQwZCzgGrX4ZZY36gHaDs1WzkSFKgxDnbSqc61/qYuhDPNIbLCeToeLBcTOc+fz/JjpbnZRFnUuKNvkp+VjfqlVSK7iSbA1ICxcSIpGNObSo+QjA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ymaNZN2H+GfrYhLbTN7EX4AzfAlYVc4ESieedfSDjmc=;
 b=JMbtJlND9zjOXz+moFB/9B93T1c/a5Rhk/ZbjaTbOkLfAV4P0+ixjdJAhryBihwoJB6kz0rSsFY60foK0ni963mQigZwI0woIqyaq2fLZ2DHvZPrvdQW9VS4s4A7sW+UX6wh2qTMIKecXjpkmwjb6lzH/Bib5Jar4rutT7iDrDsYRhFUyG83iwlRBpTgy6+PQQrYApFbsJ2n5NBnSaVsxR82Aaa+vY3xEQ9WrQILqTk0DX0YV6d4+PFna1oa+1VHOMUNtsRat/rkp5dvO0zPF/DIr+5LGfDEHG01JWDpheFNnaHiiy+m6hlVPTML/ziJcPvHTkAfTw5lpIkZacaxhQ==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 07/18] hw/usb/xen-usb: Do not insert an automatic hub
Thread-Topic: [PATCH v8 07/18] hw/usb/xen-usb: Do not insert an automatic hub
Thread-Index: AQHdaqukLyeSt+lGUU6ZEok9v0k5rQ==
Date: Mon, 2 Nov 2026 09:22:13 +0000
Message-ID: <20261102092201.1729245-8-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|OSNPR06MB8331:EE_
x-ms-office365-filtering-correlation-id: fb2b63a3-5d52-4f86-96b5-08df38c2c778
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|10067099003|22082099003|18002099003|921020|38070700021|56012099006|261021121427099003|261026140227099003|261022105027099003|261028144727099003;
x-microsoft-antispam-message-info:
 cIzMGpWHHIRZPDwo85H5kGDrByME7+1AOIOyG6oF77U9tuQE/k80PIg+1sUxpFnfUfmg63hdzuc2cgB3zpmnf20vOShsmOz6JHWE8C6chgXIklzGvFCL0NEF7hi57wdm17qtqv+Pd67Dug3N0rnIHNry5MLASgOQgX/0mexuodK+ZgUumCWnOzKaYIq7tJn/nh8xIj+nNyIa3ZcjWvTgvBjsuPXLgR0rZKyYV2tfyH/jbS8LuNwyVpk496va95596Azo4PnaTs/Vz4bNPJb7dhbAuu92wUIBwm0sOhMY9Va7M29lXXYHb5Bgwsh+/tBj4ZMJZtTaHCfT8V401g9vdypiqrI8A7EYb2xM3xZUYzpb7hgns3P6uGAhwHyaeDVBltlfdASNFFAf/gIw9b+3AY6QsdBILEkoKYuvJ4bdsn3iHbOCCsGrBALOZejGXioEXGobrNHpaaoLC+N7Rpmj2kTTc2lFKPtPyib5FrLUQpjXiP6MxSEF5BbEEus89egxlEIa6fgvO/R96f+GAX/FWfcdMB25p+oW1s5oLto6gSmcKQntYKO31CLYjJup5Hcbgj2Chn0a5uBgXJPggP5geyLs8T9IYizB8jn67J1Lx2EQ3ao6JEE1ymk+BeLNwhmyYu9WHSJ8dHttKoks7FsQpNj4QsMazfrL7wgo79vARp0HFOTT1GocOEhUsM6txN3Db1xSuWtz7myZULAHgfJ9NzXD5gnT4rkAigZW2NJX6mJW01ePQVJajOxLMLVNsJYf
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(10067099003)(22082099003)(18002099003)(921020)(38070700021)(56012099006)(261021121427099003)(261026140227099003)(261022105027099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?o9UQOjdI7/CV47YQ/6OWByEZu90lQq02X87bWjvJKE28XqqRIMvKq/YbZN?=
 =?iso-8859-1?Q?mV/FTl+nUNZIAr7Bqq2lFcy3TzF6hR5wxD9p6WE2/RqQbosuGO5xaHLRzA?=
 =?iso-8859-1?Q?APbLk6IM8a978Ncj0U37MuHBuIyQ4IO13HWxoiBNDe8PXFnExJ2e/1LsXX?=
 =?iso-8859-1?Q?k5HN0JBr+wBKDF77YBPyv5YGanwLq26L4lEPp/Rwg4MZmv033b/ARZm91Z?=
 =?iso-8859-1?Q?Rfs4m8ZhpnVZ3/HqejPIU6FPd+oHO5VswtBv7zPbFUIDNFvGkhllIqk6Al?=
 =?iso-8859-1?Q?NUtDibtHof8A0sFymGePnLGIvvNbmFvuwQvlKZ1PNI59kyARDu+PY3oKYu?=
 =?iso-8859-1?Q?hAYwzofuAwPVZg/hF9bG6frmI8yHLq91K07emdUJh3LY8T7NvmqfNVdxYh?=
 =?iso-8859-1?Q?ICS8kYdoDQFRQ/QxZ1SUyVMtI7iBsSUIQzx11sWWQKj7YqhIJuwh+G9Pxx?=
 =?iso-8859-1?Q?m7qiC6gwwSZt5Nj56VmRXPnz6p7FVL6KhkoZBi8S+MBAVXIRb6gqV70uTL?=
 =?iso-8859-1?Q?rvx//erBxz1cb3sETW0C8l/gci8JlvwvKAsrtX0N+12Piy6yRiqts2qzCg?=
 =?iso-8859-1?Q?LViU9jR38w2H7HJYQAsPC4zKrnfk4VS3qI1/VOh1AOuHrScNFwM2myMHTf?=
 =?iso-8859-1?Q?BRkac+xeBSEgbBgOqFXuUUZylr/3nqLDCM+Im1RuPxe15O8ONnrjxaNLR7?=
 =?iso-8859-1?Q?fTkI/TQxCvLdAZKVlIbvGM4Pq0UzBS+AKB6hqlkqrvsw6hVj0JaozsoLNg?=
 =?iso-8859-1?Q?fUy2w/4hDgIXG3ba/n3bJR+CnbNFKFF/uP4gjVPQxkyEtICBbHCyE+Ddf/?=
 =?iso-8859-1?Q?S22dGbzfEqgICjuCkF55GiRhas6MfthuiWjzsjwVgwRG3CHEtVHXcBiwJ1?=
 =?iso-8859-1?Q?s6AHLbrMIRQhaHpgtyYuxJIBlqNNdjLMtf+IaXmBU5VPOYWpepNaJnuPtS?=
 =?iso-8859-1?Q?ECDJ+oVwt7SH6Kh8hxPKkHjUlx5Tz5EC0pXQKd8XlWc8bYOvVjbnCHwzQU?=
 =?iso-8859-1?Q?FoyeKVMM9n3E0A7902K9Gp8SJo5muzqa0XQ457uHuAaoJ6PEz8qY9U63Ja?=
 =?iso-8859-1?Q?A56xmErZg4pOI6U736hGApUZQ0aV/Pozr0enao7aFlQ7If0eCeqfl4z2e7?=
 =?iso-8859-1?Q?zl5fvH9Ms10JqY2brMmip+evIA7obISSNPmQRbl6jwrZd9tJZ3OHOPphGY?=
 =?iso-8859-1?Q?AkLSZeiqyeNIFYc+aGx3gZFfmx0v+xRoO8G1j9XFuCCWEP8108dplTWmHZ?=
 =?iso-8859-1?Q?4yAhS3AK+hO4wpzlHI1w8ST56omd00IvJvqPjC1PuNXywzplO+NGImgLGr?=
 =?iso-8859-1?Q?vJDo8hJ6xCCO00mXIGRwT5oHePNWU/+1shmA/5Zq8DwwUBv+tns8Da1CxO?=
 =?iso-8859-1?Q?/PwT70HALJUBPweMMDUu9KpdIPmNOVLJik65nzu+T+b1D7xDd3tnxe8iZT?=
 =?iso-8859-1?Q?Odb9dhBZO7BzXGpubRQj4KgwDXc3leJxixrbpBEbtuJX63EeKciMglSJOs?=
 =?iso-8859-1?Q?uYd3dHbKd6FFCGsfbcBgBRgnk+XScGj9dj799X62ZY2ha5tyaJ3Rkz/y5O?=
 =?iso-8859-1?Q?6OMBqljkGyYEsTixqWMiV4kAFLlP0ln9ORu9VJuWkcAwdlvxFTcn6W/UO5?=
 =?iso-8859-1?Q?CrOjrPDAdvIpsoGzerD7VlI3GNviELjnTNl9XCq8x5epF6X6ffbKaekgz2?=
 =?iso-8859-1?Q?EXbbPxEC0AqWScGgBlvyGk2IP+/wGGDnwLU/izWP8YYsVBpzRMswJR9mry?=
 =?iso-8859-1?Q?KjtRXUHCVY0uuqPZu/NX1hl3ugdngTf3eBo3vzCP1hxkzDIUAjcpIXrzoG?=
 =?iso-8859-1?Q?vP3AkgX+Qg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	lEgt2cxkcdJwEACbP3ZS5FfSdwS/pSXGEIieZvssk6nDd6UVbSf75FWGM0uOoCmAgZA+eqMuFBtxKYTwxvxpF5r24RLWXpiF4QywYhwIqcYvnVnnbSCeuX5VEGOWpHqVQPlMmEgAFwYRfDtWNUGyJ0ME+s96sDq0nPhlrPHhkF6SugVe8yeJSP0Drd1V2dVvaGFfM7o99dpUtM02xFJ+KseLMcIFc43gfN2Zk5WZ93Z4iciJBEHs8HgVhr4Rwq6PWAFpNX4BNUqHKHN/VTJKQPzKmn0V0dbs0r+Nqdd+ZlsVzGb3uVbrXVZRe5w6/npXF+9/k4ZWdmvDzjd1hxRdjQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fb2b63a3-5d52-4f86-96b5-08df38c2c778
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:13.1254
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: EBpdwFEjuvrrTKDykthoNQi0YxMHwBOzAWT5HPJ9x4OH636OxcZaZi8CovHvhONb/t8tn1+zoFgGuEgbxHWHVUZQs/nGdBLYQfyJ2ExOtLc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSNPR06MB8331
X-purgate-ID: tlsNG-bad1c0/1793611338-BE0C5034-3B4F4BCA/0/0
X-purgate-type: clean
X-purgate-size: 1049

xen-usb gives every device a port number. usb_claim_port() then uses=0A=
that port, and never reaches the automatic hub.=0A=
=0A=
Set auto_hub to false. Every bus creator then sets the flag itself,=0A=
and usb_bus_new() can stop setting a default.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/xen-usb.c | 1 +=0A=
 1 file changed, 1 insertion(+)=0A=
=0A=
diff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c=0A=
index caf9efbb77..5d1dbe6b1b 100644=0A=
--- a/hw/usb/xen-usb.c=0A=
+++ b/hw/usb/xen-usb.c=0A=
@@ -1023,6 +1023,7 @@ static void usbback_alloc(struct XenLegacyDevice *xen=
dev)=0A=
 =0A=
     usb_bus_new(&usbif->bus, sizeof(usbif->bus), &xen_usb_bus_ops,=0A=
                 DEVICE(xendev));=0A=
+    usbif->bus.auto_hub =3D false;=0A=
     for (i =3D 0; i < USBBACK_MAXPORTS; i++) {=0A=
         p =3D &(usbif->ports[i].port);=0A=
         usb_register_port(&usbif->bus, p, usbif, i, &xen_usb_port_ops,=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467848.1676903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003sN-Nv; Mon, 02 Nov 2026 09:24:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467848.1676903; Mon, 02 Nov 2026 09:24:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHX-0003qT-Ft; Mon, 02 Nov 2026 09:24:47 +0000
Received: by outflank-mailman (input) for mailman id 1467848;
 Mon, 02 Nov 2026 09:22:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoF6-0003Ok-Eq
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoF5-00GjNn-Rb
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:15 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563d-2eae-0a2a0a5409dd-0a2a4504c96e-40
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:15 +0100
Received: from [40.107.75.138]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85645-b57f-0a2a45040019-286b4b8a1b87-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:15 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SE3PR06MB9218.apcprd06.prod.outlook.com (2603:1096:101:335::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:10 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=BLbi5IBwvH5BtoeP7pJO/zmP2xT9XpXaJ/YjhOZukh0XKuiVkaLgwwh9R6AY+fmb+jnhDtVKNxAH4ykiKTxw0ZiN4z7ijUTNpr7KZOvY8McFyyJVgGrfB/UTZuyR5TX3SELOahiVWFgZzXtr07We1ULvmUvEoKDLCXvDnu0cx4CUqxoHpFXuRqju5AW89S1zgfn3uJX82hV9QuTU9CWczoB7kqzpZlqMq40Fu4gXxHBB8EURNzQAe6rUC4GB60LWpNBxwJI1uxKhwCRPveqtMZjqklJmfRsNFPXXvrBmBszc6S476WeE9/HUvW48AIXr9GRi6shnBHwnYtVAAvWlvA==
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=slEpC7sA1u6HimItMYOg/Z7wH4ep4k9iSBPq0AALo/Y=;
 b=AJGS4i4jFuhuC92d1CJxSQ1vM+tMNkrwXK0atCgeg6S+zt+U2LCLLDpiMSp7v0kf+B7xq6ki3j+CIrqqPxgB3LeX7/pK3wpIqeGb0BnuINt1Qmrhfm1SxpIq1RXNE2Qg2FI6npW2CCJhtr5a/I4/wXUkwbK5lABrTZW5MjOlxGwDUKolos5Ik+TGKl52vjss84f5D2DNQP9WJ2WcyE7ytL4v32cBjYtZUO44Sew2KUAo4gSWx3N7vBD9uL6yN2bplNyrSY35zReZoPzCXMPe/3fv6pKMnPcDP9bHlfCL8Q3/7br3cTz4GU3EbJV1m6+6a5fXDa7OVdDOy9WFkDH+mw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=slEpC7sA1u6HimItMYOg/Z7wH4ep4k9iSBPq0AALo/Y=;
 b=F2tdEDtJXuxucU1ffEGEkeP4mGXy8Hx1/kkWcWpe7rd36896AObJQhvayUg4/kxwLeJHZmOkpRYmRAoiKGdCKofB1AuDAi3+t3GSJFTs11WJCmdzgUTHjhzdZ6n4SVzYBbbbaxPtUnb+JOST9xIKb4wuLZ8sZIi1YJWqx4QB5/ysXS5rb5JJYiukaoK1GqpuvAkfRFsULFHOo7puLqBMY20NS0q81wtO/UbASiN9ffbgEyDRWW0QlZMTj8y18uCIQo2Ua3Oo8YB4pexgsU0MtUNkWwVmuPnhDEc8JA/sZY22Wy4Gh34kS6h4BDPoJFHDpRrBYpOPBv5+MiBGGCb7yw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 05/18] hw/usb/hcd-ohci: Add an auto-hub property and leave
 it off
Thread-Topic: [PATCH v8 05/18] hw/usb/hcd-ohci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaquj7EwX/4j+EkiS0LfitZAyFA==
Date: Mon, 2 Nov 2026 09:22:10 +0000
Message-ID: <20261102092201.1729245-6-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SE3PR06MB9218:EE_
x-ms-office365-filtering-correlation-id: 5b3d00d8-4f87-4138-f1e1-08df38c2c603
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|23010399003|366016|7416014|376014|921020|38070700021|56012099006|261009223027099003|261021121427099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 OUkLPFmGsj0MeL1b0j1UC6ddq2OuGLcfoUhVf7atSSgJT2rB2U4R+ZakR+1v8ImvMdx/858BUSlDcMCpAIJL0AntavYSi6dzcZXcs9tj+eB07H1lKn8PBdGvphRpkNHwO7S+DuBfle6gy3kBUn/uZtblLjXG1BtQBPBHuhYPhxGPiQqcyc9XDI9dg8lOhX3A5hzXNue8oftxWpswiJbPg/9JrVSp7tfCg7f8lGJDAOpcpMkDzhgRrFiEeqBooLmVMkBG4wZR7HmidsLGWWkzWasr8oJ9UXQeQN1ODRDiTDbhyAS/GW8Cl8REFauhDpMEKMwEheht9GePaAF0nnijmBFLKtdyS/uYoNYfe4i6gIlZKlaUr4l3oh+XQDIxnGXInO4ZN+x0MxX61EMvjMmtNv2MeWxhjPwc5vSiFhPYyyFAtJOeNHZahBAS3ZzF47RLG7Iikpl7gn6e0YgM1daGtEmA7cz7dNH/SAHq6rrajmHu2Xd/mA2qSs9CU19Uz2u6ZwSTnIXKoUcfQ3N40S+a6X3HpmXZuonPhJcKeMLhC0mU7GY0UobEc2MKKlAK6H8EkdRMbfX0kCgLP2rjbT0tl444oQLe1YIGX6YCainVsspTNQq5URvnQX0sPcSq4tp1OnJSxMXMoIiNAe6bb3r+QvGCvWgThTksxUdVgb6NmuK30aE+Stnyry3QR3IEDCnyq0L1wIjIGxyqW3vKG91sRCwT47xm6Yau2cU1KF2Mg1eTB5zgPvBDjqpgd+ffyZ8m
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(366016)(7416014)(376014)(921020)(38070700021)(56012099006)(261009223027099003)(261021121427099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?6t05kPOdUMBJnQ9s8bQ6xb9D0J27PNjL7ImYQaEHrb+o1m+cQgP2EMzEuM?=
 =?iso-8859-1?Q?zFDU+GSlVm1O6Dxv0mRf+hP0XBBszmmlKrcSy/WXzFazjF4RAt/PmftTTi?=
 =?iso-8859-1?Q?T5L/23Dw3Jq6xL1ogVouFaIm/zgEQ2U88vC7aTf0tQysGq5zoaeShPSyzg?=
 =?iso-8859-1?Q?Ua2pBaIqd1oNHRXAaALmeiPg9KsfOPuJQjytrzb9/uyvnAgqD6YS7oijpz?=
 =?iso-8859-1?Q?DJG85GrGkU8B3rQdGV/qR/pMGfnGTu6pWOVrhYiljCFNXgnAxkhLrGN9kR?=
 =?iso-8859-1?Q?C/5D+/K5QwRfDd+ETH3EIroEWCFLLV+txCPImWXEO4wO3C9unaDrfZfe+f?=
 =?iso-8859-1?Q?ok6djnkH1WIeYn6QRe3a2Gs7yuY8whMx0J6TAOhQkQMpBm5Z7AOYiQ/MX2?=
 =?iso-8859-1?Q?PyCGPorHUrBukDl1H7mpacw1SEeERWii0pjviJ1/LlDMLozG1Jm6LCpDSa?=
 =?iso-8859-1?Q?zzoMy4tZiYVB2RfivA3lm1A68A4vay39F0dks6F2mm68XyNQOF4tYAvB6B?=
 =?iso-8859-1?Q?VQb5Wq7IpHHmVjsSwgcraSkYYExdPbanMSTo2LFRvLP6t5xy09Bp3Hx5hZ?=
 =?iso-8859-1?Q?0hi87CCHcybXx80mwJsVUwwwQSMhIrRGN3cXNxzYH7Pcj4q+jZD1kw0Hr7?=
 =?iso-8859-1?Q?tlnd0rw0NAVA3R/1JCy1jHEnzu5dkCIU09Wu3s9EHk+hnrgraTSYjsAfeu?=
 =?iso-8859-1?Q?Wn6JPl/zPIgmT68bht9n8aVjSWIUq8AU+p7Q9En8VOx1+SZMy4XpL+XGtt?=
 =?iso-8859-1?Q?FGn8Uapft1Ihqk7bZ2F5OZOOM9i1v/TufObqa839usVI9BZc5ZFRuPFlao?=
 =?iso-8859-1?Q?d7kZR1CozFu2FnilEbW3L+lf2iM9VA7fA1BrGYY0GYnd9J4YNQH7UXB3Ee?=
 =?iso-8859-1?Q?3sbteORjhp2QtRMH4lBdqB6OjqHcTBpagkDyFnWImWkCDeq7WSUKQbI2eg?=
 =?iso-8859-1?Q?diI2gqVnFLTl9LDhc772Is/3lB5p0DC8HseIaOjpIBLJMsFpaB93JyOf8M?=
 =?iso-8859-1?Q?Eu2iez/U8YNqV+pn0TQvYQ5spgPrYDw6lqYIXYfHbfOpLI4EkT8OyJcz+X?=
 =?iso-8859-1?Q?h3qDcHuybsp8yvvvLv6AE+pBQ+bK+/J60VE+9Zb2reZuvRO51H5VsYMPwk?=
 =?iso-8859-1?Q?9qYcOcqtRElpMkAd9PpwSwYnHlyW9/+NpD2AHBocYjCF1NR7tFemoMaveO?=
 =?iso-8859-1?Q?4zgcedIr7JD2Xm8OKf3OA5iHDlvHtqlF1PcOI38CopsbwU7J+q2OwWoFq1?=
 =?iso-8859-1?Q?Rl4eRIPSx7KekEjRSd9XumDByOSSKmwMn5RheqBYvhmh+LBezgOhExPREv?=
 =?iso-8859-1?Q?RHrFp7fKYqj1JY5S2Z2NGj+Gma0/dyKWPaLWazWBGJm4T2lwX3iaRuvoc2?=
 =?iso-8859-1?Q?LnI1roiN8nLPROad8Ano+oeVZs2/q/G6N7aYO2FRpA6qfl/PX+PDUPL+pn?=
 =?iso-8859-1?Q?vDZ4n/j87zHRoMhC6Udqb9yczMZCyUeLbrT0vD+bjKA+NNDoHt12ALBcCP?=
 =?iso-8859-1?Q?O6NwIpvzt9ZP9sKgfbg8la+qXHLaZVS6OX7B5eCL93MYVPIFnViokzPKHv?=
 =?iso-8859-1?Q?X+bgq2WC9DghXGJP7ZWe0RmH751VlAlw72J14cadXyKBSW+1ewqSInS+z/?=
 =?iso-8859-1?Q?8AChRHHSstwdUrfWJkjjGofFboH3FB3yaC1tYxMaPGM6YhXFTkj8iVQGdH?=
 =?iso-8859-1?Q?4CMxiKjiWWxvbY/AAA5Q6llDAwblEN4MPRfI0vErOIZphm9f+GaHcLH14A?=
 =?iso-8859-1?Q?GPLa8/2u0jffZSbJEhwyyElhY1ahCZSb81UrXxM8VLlapkNXsPSdVFlAM4?=
 =?iso-8859-1?Q?9nB4YR2imw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	Za7xd447FRlhmCEjWm17VM0JbiZz87yEf+KTnSQZHDNtnG90aSDybNQyhP410EzoJBCBlKGgSLlC0OC7R46ry0T5umtkTBpK2kIuxecnOmRbamxsYOSr3FRdoQP29+Xsggwk1tr627byKWTSKBSuuIn8Hcow/ap6UY9SzjVQ/mSKG4h/OTZZwwMLMT7px7Dwm7Y27ZoCSoJND8zkBm0xFdelbBhokzF6AVMzZk3oRDicdPcByxWf+kX84FY//T8LfORgUhAOPOYVqMY25pRV9VNjxBz12hcPoqgMjsYFbyrI1A76S/p3G4h8riDoGZBICGmlSejUQlzz1whvOwp3sQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5b3d00d8-4f87-4138-f1e1-08df38c2c603
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:10.0648
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: hzYBnBlIPJrr2CefW37s+GX3s5sKbFzzjOSSusl6i7PCZdZGS3uz4jFyBUryBlQGMul3OdZkF/skp82n4IO+sZL8qilQpkyAu/kK7Iz51vQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SE3PR06MB9218
X-purgate-ID: tlsNG-ebf023/1793611335-C1ED6B50-61D51C8F/0/0
X-purgate-type: clean
X-purgate-size: 4215

Add auto-hub and leave it off. hw_compat_11_1 turns it on for=0A=
pci-ohci and sysbus-ohci, so an older machine type keeps the hub it=0A=
has today and a guest saved by an older QEMU still loads.=0A=
=0A=
pc87560-ohci is its own PCI front end, not a pci-ohci, so it defines=0A=
the property itself.=0A=
=0A=
A companion OHCI adds its ports to the EHCI bus instead of making one,=0A=
so there the EHCI property decides.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/hcd-ohci.h        | 1 +=0A=
 hw/core/machine.c        | 2 ++=0A=
 hw/usb/hcd-ohci-pci.c    | 1 +=0A=
 hw/usb/hcd-ohci-sysbus.c | 1 +=0A=
 hw/usb/hcd-ohci.c        | 1 +=0A=
 hw/usb/pc87560-ohci.c    | 1 +=0A=
 6 files changed, 7 insertions(+)=0A=
=0A=
diff --git a/hw/usb/hcd-ohci.h b/hw/usb/hcd-ohci.h=0A=
index d079f8d24e..43240622ef 100644=0A=
--- a/hw/usb/hcd-ohci.h=0A=
+++ b/hw/usb/hcd-ohci.h=0A=
@@ -98,6 +98,7 @@ struct OHCIState {=0A=
 =0A=
     bool big_endian;=0A=
     bool consistency_check;=0A=
+    bool auto_hub;=0A=
 };=0A=
 =0A=
 #define TYPE_SYSBUS_OHCI "sysbus-ohci"=0A=
diff --git a/hw/core/machine.c b/hw/core/machine.c=0A=
index f79337e7d7..22d2b83459 100644=0A=
--- a/hw/core/machine.c=0A=
+++ b/hw/core/machine.c=0A=
@@ -47,6 +47,8 @@ GlobalProperty hw_compat_11_1[] =3D {=0A=
     { "pci-ehci-usb", "auto-hub", "on" },=0A=
     { "base-xhci", "auto-hub", "on" },=0A=
     { "pci-uhci-usb", "auto-hub", "on" },=0A=
+    { "sysbus-ohci", "auto-hub", "on" },=0A=
+    { "pci-ohci", "auto-hub", "on" },=0A=
 };=0A=
 const size_t hw_compat_11_1_len =3D G_N_ELEMENTS(hw_compat_11_1);=0A=
 =0A=
diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c=0A=
index 70c9e9ac4f..11c754a948 100644=0A=
--- a/hw/usb/hcd-ohci-pci.c=0A=
+++ b/hw/usb/hcd-ohci-pci.c=0A=
@@ -112,6 +112,7 @@ static const Property ohci_pci_properties[] =3D {=0A=
     DEFINE_PROP_STRING("masterbus", OHCIPCIState, masterbus),=0A=
     DEFINE_PROP_UINT32("num-ports", OHCIPCIState, num_ports, 3),=0A=
     DEFINE_PROP_UINT32("firstport", OHCIPCIState, firstport, 0),=0A=
+    DEFINE_PROP_BOOL("auto-hub", OHCIPCIState, state.auto_hub, false),=0A=
 };=0A=
 =0A=
 static const VMStateDescription vmstate_ohci =3D {=0A=
diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c=0A=
index 4f51eebccb..69f38b9fce 100644=0A=
--- a/hw/usb/hcd-ohci-sysbus.c=0A=
+++ b/hw/usb/hcd-ohci-sysbus.c=0A=
@@ -61,6 +61,7 @@ static const Property ohci_sysbus_properties[] =3D {=0A=
     DEFINE_PROP_UINT32("num-ports", OHCISysBusState, num_ports, 3),=0A=
     DEFINE_PROP_UINT32("firstport", OHCISysBusState, firstport, 0),=0A=
     DEFINE_PROP_UINT64("dma-offset", OHCISysBusState, dma_offset, 0),=0A=
+    DEFINE_PROP_BOOL("auto-hub", OHCISysBusState, ohci.auto_hub, false),=
=0A=
 };=0A=
 =0A=
 static void ohci_sysbus_class_init(ObjectClass *klass, const void *data)=
=0A=
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c=0A=
index 5e5fe41f47..2c25829b76 100644=0A=
--- a/hw/usb/hcd-ohci.c=0A=
+++ b/hw/usb/hcd-ohci.c=0A=
@@ -1987,6 +1987,7 @@ void usb_ohci_init(OHCIState *ohci, DeviceState *dev,=
 uint32_t num_ports,=0A=
         }=0A=
     } else {=0A=
         usb_bus_new(&ohci->bus, sizeof(ohci->bus), &ohci_bus_ops, dev);=0A=
+        ohci->bus.auto_hub =3D ohci->auto_hub;=0A=
         for (i =3D 0; i < num_ports; i++) {=0A=
             usb_register_port(&ohci->bus, &ohci->rhport[i].port,=0A=
                               ohci, i, &ohci_port_ops,=0A=
diff --git a/hw/usb/pc87560-ohci.c b/hw/usb/pc87560-ohci.c=0A=
index cc00f6e936..66c1e62d48 100644=0A=
--- a/hw/usb/pc87560-ohci.c=0A=
+++ b/hw/usb/pc87560-ohci.c=0A=
@@ -296,6 +296,7 @@ static const Property ohci_pci_properties[] =3D {=0A=
     DEFINE_PROP_STRING("masterbus", OHCIPCIState, masterbus),=0A=
     DEFINE_PROP_UINT32("num-ports", OHCIPCIState, num_ports, 3),=0A=
     DEFINE_PROP_UINT32("firstport", OHCIPCIState, firstport, 0),=0A=
+    DEFINE_PROP_BOOL("auto-hub", OHCIPCIState, state.auto_hub, false),=0A=
 };=0A=
 =0A=
 static const VMStateDescription vmstate_ohci =3D {=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467858.1676931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHZ-0004Sq-Fz; Mon, 02 Nov 2026 09:24:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467858.1676931; Mon, 02 Nov 2026 09:24:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHZ-0004Pz-3Z; Mon, 02 Nov 2026 09:24:49 +0000
Received: by outflank-mailman (input) for mailman id 1467858;
 Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFB-0003Re-VT
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFB-008rD4-Bd
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85649-e002-0a2a0a5209dd-0a2a4504d398-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [40.107.75.124]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8564a-b57f-0a2a45040019-286b4b7c6396-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:20 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEYPR06MB6333.apcprd06.prod.outlook.com (2603:1096:101:145::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:16 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=Ea40klhgdc2thbwzaGSi4pPKAIFldLRqFHhD7b3fjgjUrhf8ot7l07LQh1t1BaANxAVyLFA9tPH/E4lNQBt41Fdt35AbKWNYmgJfOj8OrogSRIhKrsz//YBjh5YNVbXchDxjDRbc8E5kHhqtMKrT7+/oigniyCrTXSP0s/7r76gJVoR8vanRTQk1d9RSnZlYg1l+1L02BtGvGJmNN3B8KlQA9RcAPsir9eYos3fTmIgb0BJYXCbjV+4Uh4dQLv75VakefC4SrhYG6Dn5wzHwl+GRaR+9MwOAtX6Fiu37YmjP8Vba0yGBY1rwXRVUFkiHJru96oZd+KCCS+Qx8WTIaA==
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=L7ugJp5+EyBp63kk42bQjTmAv+ji8R96jAVECGk951U=;
 b=TI/IV033LtB2ByoyIinicgx3feMchU7XZo6ZALky7FSVFCxhYPRal9cSnHS40LoYXog7txAQmsdkRteGslImzGpcqVGxgEp6bal9RwrKCMO2efBodTh2y0K5gDCwz53x1ngWyqlWbH1Az4rsrB32O79zpfflGcOby7E7EpV97A1TCUoTkgtsIEbZEG3qThEYcK/zHe0OVzRg1if5fweuqwrgclIyU0aXvaXPJvcfptyBAtQ7Ng/85ZDNin9CkwapSgBEOK8dfs7ISqb76P1UOIRmCdr6PMIcW+pH9+UislSoR97LJkmxR3HYbgTrEFf7E+gpZK4LgPNVZxq/eIsdpQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=L7ugJp5+EyBp63kk42bQjTmAv+ji8R96jAVECGk951U=;
 b=TBTO0ODk7THthPF6jOO+E/rNAETCq0Tsw1yfbQkcisub6P2cQs7H5lvBb7+Lsz/rz8DipKV2cRAAQjKmRvmQ0YtPfpkfO9lxBmHwMQLDDUkeofiJQB4s2spr+uDOIHYU6YobwuAd2placuVHopFzAVNtiAUG5peQFbWuKMLOJ5mFIRjkkUY4Iac2xLeR9RMaEVMXpHNsbSS2ARfz1UELtoKMkKJ6X7TYBr9PFTHRuxVtsn6NMaPSVbRNu8CjrteGGiSPm8TcuE4FCsm4kQGVZ0Z58YQm9uHlAumOE25k/7+31sZ2rVQX5+G3gpj4gks0kkRo8WMkp+uFCSh6lQxlOQ==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
Thread-Topic: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
Thread-Index: AQHdaqumID06mim1t02tHdx0pgsQmw==
Date: Mon, 2 Nov 2026 09:22:15 +0000
Message-ID: <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEYPR06MB6333:EE_
x-ms-office365-filtering-correlation-id: 951d9524-7c82-4a90-009a-08df38c2c921
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|921020|38070700021|56012099006|261009223027099003|261021121427099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 sDxZcu6GIqOObRAFleptD1z7eEhmHs8esImPR2o912MarTfq6ot+NXEJDAYV/aGXj4DnCqvBDCaZ7L59XdDn6Gd2khFsUv/vSLB8hXJHmDhoBKadpfBsNTcUNRBYm4efInADx6o+xSCqEL2nqKLkbvHTkJNUA6HfAtX3ardQVL1A+UnJOah2S5pItoSrGxq8XCqSs2tu+d4Ak+0cq4fV1KMPjYo7PEHu+MePM1BiltEqI3VAYVFgRNc5d/zvyYrs+5x/0+PxcfQfyucbxyqhr3nS7nEZJg/O6vhxd15u7tLQTXwWrhtHp1qWvm2Ik1o3ZmM1WQseb2JzAcj9oxMmagI+4hVfIpJb2Bw5HV8IiiUuKq7wvWOcgQTFsqx5wqq/pR2hgTqVcDadtckpDTCBANeNu7ozSdX0GDMzYYRicOgvuAIHzblnNHnY1jpN09mDTVOSiu3apaWFNTsabu1hYqIe5D62TO3ztX987Jj9V8aYGpYgi+8ebscg09kN/ptOmsf+S8nq9jbkqzr5Dx67XN2oHsK1sKYlVW/PURdrs3TpETjnFDv696gqL72JcF2NW21ljHr8qD8O9SXv+DLVABOV0SQpg2A/BnicLI4e/PZj1O/APpeoI/JI0mESiE0MOMCWCpPDKCfKIRXD9M6XVCZEnOwybCmSkOYmcsCzGtW0Mc928k8mf7aXo3BN1cyuXlKuKSfxg+n63vfngbzk9PHJyuFycghO9NmjujqZ2xl0bSD0WWXzhhVAx8Crd8Nq
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(921020)(38070700021)(56012099006)(261009223027099003)(261021121427099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?2GYl9b+J24KAsdAfAEazcVYEgDgNn6H4q4ZDJN+wjeHvX+i86v/tIpqpyB?=
 =?iso-8859-1?Q?8hxNTVLv5eCQlderDGG1pYh1V3DkqPKRndEYayF/6lC6/7/pKRpOSvtVsB?=
 =?iso-8859-1?Q?n7m9NOxVMBWpCTEbLR/wszhtI6nPSekmDMN/AA0KHGwDp2y5LEeikAgmTG?=
 =?iso-8859-1?Q?rzzZI5bb2/G/aKf9rJ1oh1akPWJb/XBoOVGTrLofhPFLIKwllqVJ4LubnG?=
 =?iso-8859-1?Q?CuGFmEjplxOQPqTuvkxn6+cuh7Zdg2WaqfyKrVWepRToUwV5lEpRTmurSm?=
 =?iso-8859-1?Q?njqp0MxKtFDm8oKRRmwQ5qOF3a/6LRDi6NaxpQCoIx/bF7kZjbTWBhiVem?=
 =?iso-8859-1?Q?3Qj+uQELPFRG2o0eD7ADeoaCnn2q79hlg6F0GXC5Ah0h+9GVVnDMak9szf?=
 =?iso-8859-1?Q?VJV7LS5+EAtKyGHAa2FvFNiHV4M6zBxM9ECczIuCNCXPSygKY4vR3DA955?=
 =?iso-8859-1?Q?rmRRsmQGO1/ah0f2eVEm/ZBR0/TQ8K0Nfl4zEXhgGd/pkG/k6hlL642b2U?=
 =?iso-8859-1?Q?lxIalU4xg4u64KNiBSgtbBc73QYCSf+pJmVtfTEZ4CyF0W89aj3xlCxs1r?=
 =?iso-8859-1?Q?oRBKAKFAHW++Yr8LMg0smVq+0lB+9Mft1VSNGhtYoXhDkKlt0OJznDwldc?=
 =?iso-8859-1?Q?lqeEybXm3RH59A3sibZlVN8f3eOXsy39d+ESEpZ9r0QerVNKmwP+W0wxju?=
 =?iso-8859-1?Q?KcOeADUYjZhZ5Z2wH0rVShYByMWVOWydYiqNNCo+jEdaRKH32mMR1PgiKS?=
 =?iso-8859-1?Q?ALFconlnATMsAhO9wVUglz+91XjUBJmM2GPFcCLD3JlSrqoKl/xMDzzFiv?=
 =?iso-8859-1?Q?IHV8v4wLZ4k4K3KqD9nwkz2LF0tLjHFXb/iaD6SoeTdPcE0Jau2JvNrBE/?=
 =?iso-8859-1?Q?+lZU5LFgj6IlyHGK7FfP8m7luGXwZ71HduF1i3p1wNhlgSNjpLcOwOsRz8?=
 =?iso-8859-1?Q?2JXURgRjlOSnUeFbpWBF+iQ8GNDjxygUmp977sl5bB3wOpCyylvTNH7NNl?=
 =?iso-8859-1?Q?DDYqzKzlt2I4BUUvSTrBVgIB2A+2ek0udEWqTHbQFXhT69yvKTb3Srd/gO?=
 =?iso-8859-1?Q?hZuT8chbEqKnxI7wBAM9kA3ElPcyXIhUFiDI1AR9NmQV8VjO94X02UA81P?=
 =?iso-8859-1?Q?bqXxUP5I3QCJY5/XuB5UciJ5b4IMr/VxrdCgRJsZREfUdNa8yRB3t9Ln74?=
 =?iso-8859-1?Q?nmiMLpIIHrLAgsH7TOg0P/ubzcnjWRwh2PO4HhQ7C6hEEwj8Pur0TxovvH?=
 =?iso-8859-1?Q?QzN1z0vy38E4xGiMmK7FAkOJUZbP8ccoxcHmTufAvYdvHHLxLNg0hkSEJh?=
 =?iso-8859-1?Q?OtIk/yt5fWKcEoFlf9KNRn+tecsGkF+Q6dI3xtpCiou/PFicZENmggYQZx?=
 =?iso-8859-1?Q?HxLE0ATJ92l2YXqEdTdyTTyu9rIny4f64CeoQyWe7R6B/wUFJMggxBtmGb?=
 =?iso-8859-1?Q?O/n15n4BNAkjVNbx2UsK+dPafyhle4o2388VCDoh3CH0IrHMVMorUT3MOM?=
 =?iso-8859-1?Q?exiqVv6A6GtPwvlCpp8/xnLHDEwYOeoDe37Kr90jC/4DIP/D+V9yE2Lf4o?=
 =?iso-8859-1?Q?W5Z5Ks/eOgOepkLh1QwoCc2Q/QrutZqj0qOzknCViISXyN6id4iaXJkdnS?=
 =?iso-8859-1?Q?iX7QW336ueCsiaPTtmYueE4xys+FHwAVDOxcZpnxF5ZHuBnfB6m33D5kKp?=
 =?iso-8859-1?Q?2hAFr12sG5YrdMyqDYL4Vp2kDp5D2cqXvPpl4GXoRlf2W+r0Y9if6HQLda?=
 =?iso-8859-1?Q?W8lOu2HHIgB9Y0x9XNvCXgBjGmTpzTBcxyeC2r3wxuLKJ+bJlfQV/gDktC?=
 =?iso-8859-1?Q?kOicU2lMWw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	4DgmIJlnu6Dni/o1FZAyOKGhJDDdjVZR3r/cw4AqPr450QuYeagb+CyNZB2qjS5C7LplOoBtH5ghX69Hz7CB5OORO1MQQVHDpRycUgBQlkQUqDWjN/zRDyTXlAJR4GKlnzfjNVbtwTwf17cx1WKgTzbdKj4tX5jGfgHBE81dUp9VHph1wxZV1kZfKpC8oqzwpK89arvSzvjGv9uDTorSwxnWbWNvGUTkvTv79wSPAyB901+TonE9cqMfconBnVMyiWWVad+6sSYclFCmf1aukgj/FFP/G5332uJt4oZFT4P6nXQvs3rFgG8I3rv0ilfl+7x0dI5dBpSRIj9p2Lv7MA==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 951d9524-7c82-4a90-009a-08df38c2c921
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:15.9018
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 2h6LT/YnFpFfG4WpRpexhxpNezjx2GtBNzJP08g6rxEyIYUzIKlGK0J6qc0jm75Sb32FWQ5CNo3IdKdtjz1hrHuvk8mcYK/oMWl5cO8KF1A=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB6333
X-purgate-ID: tlsNG-ebf023/1793611340-536C2B50-EB049B03/0/0
X-purgate-type: clean
X-purgate-size: 1213

The OHCI companion has one port, so a second device only fits behind=0A=
the hub.=0A=
=0A=
npcm7xx has no versioned machine type, so compat cannot reach it. Turn=0A=
the property on here instead. The companion shares the EHCI bus, so=0A=
the EHCI carries the property.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/arm/npcm7xx.c | 2 ++=0A=
 1 file changed, 2 insertions(+)=0A=
=0A=
diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c=0A=
index 695f30a0dc..3f5b33d7e3 100644=0A=
--- a/hw/arm/npcm7xx.c=0A=
+++ b/hw/arm/npcm7xx.c=0A=
@@ -628,6 +628,8 @@ static void npcm7xx_realize(DeviceState *dev, Error **e=
rrp)=0A=
     /* USB Host */=0A=
     object_property_set_bool(OBJECT(&s->ehci), "companion-enable", true,=
=0A=
                              &error_abort);=0A=
+    object_property_set_bool(OBJECT(&s->ehci), "auto-hub", true,=0A=
+                             &error_abort);=0A=
     sysbus_realize(SYS_BUS_DEVICE(&s->ehci), &error_abort);=0A=
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci), 0, NPCM7XX_EHCI_BA);=0A=
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci), 0,=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467859.1676937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHa-0004ZO-3Z; Mon, 02 Nov 2026 09:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467859.1676937; Mon, 02 Nov 2026 09:24:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHZ-0004XV-Gu; Mon, 02 Nov 2026 09:24:49 +0000
Received: by outflank-mailman (input) for mailman id 1467859;
 Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFC-0003Rg-6J
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFB-008rD4-Iq
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8563e-e002-0a2a0a5209dd-0a2a450a9690-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [40.107.75.116]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8564b-f2d2-0a2a450a0019-286b4b741a3a-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:21 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEYPR06MB6832.apcprd06.prod.outlook.com (2603:1096:101:1b2::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:17 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=aaXAf7byDsPUOmdZWdkdQj+RO7fWIEq874T3LNFm9YrqtOu63KzSJHTvKA1HOK6dLeh2bE5az9EcKPjmwm4/6LZzipFFVldqodVwJMdvzdMpi2sPsTD2NIGRRbgzNJKeAbKTEQvq7zAObRwR0/EBnupDw4fE9TFp3htQ4sufF5frufcMi9On9QGGRZSGX3PLM7syGFSOyCKOk6mtnoJY4Okhs4HPlE6Zr3As0te/Pts59bmgqoudeKnzZozrccTEs1JIzjZSCLHVf3VxdCnGDcLxrzbrqxy/I2ZuvHqAi4msVX737RwNgZ4C/iSefUYaQMNG22+3kneLYeA0zkX7rQ==
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=H5O7c2hHvr9knQUvjgOqepxhL8k2phC9xq7QoLc+YJY=;
 b=W89o1F97X6g1wRjWuwBQzcRSEnGibYdpr21obQ5YDMpHE1WTyzoLYBJkf+/6rWJWD9ZOmT7uwhmfIChOlnSaPaMKZQ5S/nZG9wNg+oIqo64b/bdBwAXh1QryLplbqBE5U4xFg/IOj1N8UDrRIEdjFkHdzlpDMu4JFosqd9vXoqHujWVOoZZ7FlW9vCblNo+w2EBqjeLBrL0lc/P5GefNE1B88DffFbqvDUvyIv4I6T40iOSumQWYmJVHJXLGdwF0G2F8gwJQJxUmwtxCuv9HSxGIFu/a9WWp7LHfarYXjimVjnvBtUsIQzcUmuQoDhFZ4fZccQXZvQw2r1Q5qMxGrA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=H5O7c2hHvr9knQUvjgOqepxhL8k2phC9xq7QoLc+YJY=;
 b=TU3p6docx9luHhWsoLCYyleFlNX6C/nT3kYiYYGJvwArUCe4lJpc0LKMrR3Iw8MJN/Fd05tUnk6Mv7FUxpKSGFGDVoffNofpa9LZWDyx2RBF2aSP2/3ZTU0BTzsXI5gmODFhyCpVlFn9Jh3RmGUvP8B7PdZJJfo9fBxN5yKQ11OLqRKC1+BGZcihWUf1Z+C6RpAbzD5Hx423znplt+xMFDrCa9H21c091wjFDHqG9R+3NmvkWAlrCI96opofbmjPVx3NLNLzJUX8e4Akb3+CvbCoDF9qkL/wC40lvk987+3s3mHKJ02cGWBJgsfjQVT1Gf70lD/OuhT2h/9Hlt/Tmw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic hub
 change
Thread-Topic: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic hub
 change
Thread-Index: AQHdaqunzKBY01X8UU66zw8KbkYNag==
Date: Mon, 2 Nov 2026 09:22:17 +0000
Message-ID: <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEYPR06MB6832:EE_
x-ms-office365-filtering-correlation-id: 8666b692-074e-4874-741d-08df38c2c9eb
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|921020|38070700021|261021123027099003|56012099006|261009223027099003|261028144727099003|261021121427099003|261026121527099003|261022105027099003|261026140227099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 kPZ8BSzqxVH2Kki+N77S+H9K/0ql6Ww7MkjWLV5R6iTi6RT5XyguoMjgyMx1Sx/atGZ7dTpxk1BRYvadhdK0TxqPw9FHLyLBZ1XW9CyT7fu7kHlDlW1S+6fhNaIscms4HfC59lrgpGdkfO5oaUz+/ofq0qVdm4Vc9pxMoP9xmGnb0imMU7oT1CbkxPXZ+DiYBCsqx4PsCs1DFB0nMdKvHpdBHHDZ3AV8so54C6+xGskE9UQHJRPGGt9UHSwvIsSvff8+Hf63xvUGaFuy2mS0obpm9GMlHc2wL0dzDt98iLjB7+g3APkcNE/jOgapOIuQhqpR0klnSLp7PMkQY/FXid35Kb+8tRfYavgeSpCxG/gvUDIHia/FsjByrazfb8wnqyvO94F+riHGsUqrtVE6T6Yw3nwq1ttRWS0G4ztZS0MbeM9cziGD+yMQJfyLow5RIiIKJlLvB2oi1aP8aIpEr6qYYWjOxrZXH5XyCOTH/vZyXb/p7y72uYPmyCIqcJzowJPKBZ4uUhWucpfLYoixdUKS5nLa5O/M185qluQMdIKYGFIVBkcYis2ChQ0uGbjcKImk+GXEXtwvcpgTLP4o9Vd9D5Sc5P4tLWVSUeHJLBCDZ/wJn3KjhUW1fyHkMJV818vSzvzhOAwUpbjl4dnEW2DArZr40apQQnJ4GEGbpAabUANh3KO7lvptH6junKwGavO6ZD3yqYapAMR8GsjJzbRrLyklqM2JtOz9fGF/FHseIanB54hoAyvyLly872xi
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(921020)(38070700021)(261021123027099003)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261026121527099003)(261022105027099003)(261026140227099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?HcbjBbV4MQX9Pn7PxGvFStOGkK+etnRR7SB31FCzJblP5jHcRxEenYIOcZ?=
 =?iso-8859-1?Q?VefGs6Q4O9sG7RqnPbsJpMGGzxvCgGvDAhOqc4/ye6YVOeu37LPYf5jjjB?=
 =?iso-8859-1?Q?m7aUfaMcMjNuqG1wjoV5WJg2nSxwRzuWI1K+65YvN4vazf2l7+ccc+3gi7?=
 =?iso-8859-1?Q?+Bc8CaEy5OPOJsoX+MOTzKzBxPJW5fr2rGiBtFjZ2Vs93NCR3Q3qzBwYdz?=
 =?iso-8859-1?Q?2M4Zt/aqyUSLYzGZImCtHnVzRZ/l4NEDQCv6LS9GRr6zEh1Iaf6M9n64s6?=
 =?iso-8859-1?Q?bFPM9tGRXmIozVkBZMHHUQe8n17YpRHbjEKwtwhIm+uu2v9yLsqZIn+wJy?=
 =?iso-8859-1?Q?0mwA8ZhKEE4tua0/vjBLtFQioMi2lLjSoB1ye/JHSuEClq1nUK9QOYkJyf?=
 =?iso-8859-1?Q?A0Zno6M0ouHKtyWZ9kZptS2RxpyOlWEYUFkPTIw+OPl+QtlzwQ7NDwgf5r?=
 =?iso-8859-1?Q?9yVGhAzu+ktbAYbcks3Tkj2PNA6p8pr2xQMQ06HyuJP79hW9uRW58Xvp19?=
 =?iso-8859-1?Q?uaGhxd7wFXBymRomkbSFFw1uAQXpisAWjMivjaSyfPYttf83IYeQBdRuuI?=
 =?iso-8859-1?Q?3TXNKqVT/eizSuAeA+xxgm2HvEo2Mxxxg9XOGUlAtais4tbqUedor+Iikt?=
 =?iso-8859-1?Q?6KMfYxBPYJcSlx2twCvGDYoD2znrd5LG4ecJSCNk4QG/CkAhuLeWUBBykC?=
 =?iso-8859-1?Q?+9fcBEhRbCJWv1Jg8JxFlCobqo1GQVI4fJIEBkA0TIcnXoGrNXfzBHsJWP?=
 =?iso-8859-1?Q?T7h+asmvLpeFMuJr/WkmAwxi0k7phqo6uTpaHepPdG442sZl5gH1emEAto?=
 =?iso-8859-1?Q?5NnMcA3khVFqolbWqCH/07Po7u4dog1Zb8WKsircmPlrFJFlG6lHgL4gsv?=
 =?iso-8859-1?Q?vn7e+i1ToSYAs/8Nrb2+2Ww9HNqdVQ3Dv0ybXTTxnPNOI8A9okpbXAY4Xt?=
 =?iso-8859-1?Q?kV7RoG0We0fe/wNezvTmYqK+Q8xYR3c93dIjNNAD4ZqN2c8j6i0Mv1D+jI?=
 =?iso-8859-1?Q?YWgqzYCWnUrOzegt8TWez2Y3dSfejdaq1PPUgUirdjvs2IGRaTfwke61xM?=
 =?iso-8859-1?Q?giB3X3TCIHBHLJIpzZhC9WEszI6E4ZQpVLX7DLqZCx2HjDDmhUljM4A5Lz?=
 =?iso-8859-1?Q?MKJO8SGzfClcBgTxmfe+CY1orToCSoHo3j0VVfd0WL+mWjivGIC6JIC4tG?=
 =?iso-8859-1?Q?8TOB7cQQB7pcUABWhzM39qrOns8jjP3krwCYNgxgQuMynSdEh/Jh9GLL9X?=
 =?iso-8859-1?Q?r/AJMmBHjkVvCXHw4kJ5LXUTb9J79SswURCk1fH0jbUu3YQAOBgmfwvExg?=
 =?iso-8859-1?Q?JX4PKlSaluxwJBJQxIE97z4lQHN/d+27i1n/ojVf6UE5Vx554JTUvTB+Um?=
 =?iso-8859-1?Q?roXU44lfAh/GXAAlT7dsuW9VjO38BWOGoYeWMzCaogdvDlF+dIt4zWqmAD?=
 =?iso-8859-1?Q?rj0hhOizNF1hJhGmZdDxfXRYmOG5z3MmoD7zIc0fvY5MpHgl1kDb5IDumz?=
 =?iso-8859-1?Q?8aNCg2NhEtCmU7xCf9YcfGBBNrnSLDQdCn5Gazt0YGURN7MUFkac9ksZWu?=
 =?iso-8859-1?Q?CM6DFbST35k06xJOcoIevRN72EClYZRfCmu0L5jiTGb/xLpG3hDdW+uHo5?=
 =?iso-8859-1?Q?0OxQyzeqcd8By3BnJLvgieZm3CJybK3i9lYaoIEucIMQtlHrZ7Bjnxn1oH?=
 =?iso-8859-1?Q?s5RhtYVLKWTFDL3tuObk3rKEu6Z3Jnd/iYPiseinf9+fDRH00ERfuRDzAG?=
 =?iso-8859-1?Q?v/0pt24YLFT8XnOvMgelCcC5sUTHGTjY3xKZCK+9Pgb5uPyz0yJ7RtnITc?=
 =?iso-8859-1?Q?998w8GFKCw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	UWqRvB87Agax5xkqPn6DxYVPe9+mNC58k4IhbUx5/NazMmFulgMSw/MWg7GbiP0HyPZDDVxj/x5jA/wHRwafPJKRShatlkpFSh2h0BSS7IZiLcL0KyZDwW8I5Wpeqk5I7bJHdrfSWu8UXR9C2df5nV4XANMAcfK4pREXpdjhT10BC2J3Lh06FWCA1AwRBrmHHz3FaISOKUALSbWgU/Ud/rp4RSGjjBSiem8u5yeSgjXCeyv4L60r2r8NxRm7Ev02as1GQaGgHsKj73uBbiEXSsja4hPgyQTvvPiR+1Ux0zc+pN3YN0/tWtb1L/99sJEyQCBS89PYpucU/aTNGbrf8Q==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8666b692-074e-4874-741d-08df38c2c9eb
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:17.2022
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jwsN2Wq0eKznDsaNi5z4wWKwq10XahOxVf0ETQ7X+aqjRGHkU9ltLdzAlXIHBr0/wPqluqc3ESuIjthdjWGMXPasoKT4QZxmiXgGzec1JXI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB6832
X-purgate-ID: tlsNG-4011c0/1793611341-51EC2CFC-039B9976/0/0
X-purgate-type: clean
X-purgate-size: 1084

The automatic hub is now off for a new machine type.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 docs/system/devices/usb.rst | 7 +++++--=0A=
 1 file changed, 5 insertions(+), 2 deletions(-)=0A=
=0A=
diff --git a/docs/system/devices/usb.rst b/docs/system/devices/usb.rst=0A=
index dc694d23c2..24e8ccf96e 100644=0A=
--- a/docs/system/devices/usb.rst=0A=
+++ b/docs/system/devices/usb.rst=0A=
@@ -3,8 +3,11 @@ USB emulation=0A=
 =0A=
 QEMU can emulate a PCI UHCI, OHCI, EHCI or XHCI USB controller. You can=0A=
 plug virtual USB devices or real host USB devices (only works with=0A=
-certain host operating systems). QEMU will automatically create and=0A=
-connect virtual USB hubs as necessary to connect multiple USB devices.=0A=
+certain host operating systems).=0A=
+=0A=
+A machine type older than 11.2 plugs a virtual USB hub into the last=0A=
+free port, so that more devices fit. A newer one does not, and a=0A=
+device that finds no free port fails.=0A=
 =0A=
 USB controllers=0A=
 ~~~~~~~~~~~~~~~=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467860.1676946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHa-0004iB-L9; Mon, 02 Nov 2026 09:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467860.1676946; Mon, 02 Nov 2026 09:24:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHa-0004eM-5P; Mon, 02 Nov 2026 09:24:50 +0000
Received: by outflank-mailman (input) for mailman id 1467860;
 Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFC-0003Rq-IY
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFB-008rDj-V6
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85649-bab6-0a2a0a5309dd-0a2a4503a338-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:21 +0100
Received: from [52.101.127.139]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8564b-fae8-0a2a45030019-34657f8b46f4-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:21 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEYPR06MB7042.apcprd06.prod.outlook.com (2603:1096:101:1dc::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:14 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=x423h1X35sAG0ni9T4S1K83dtrj9qT697ZNaAjQfwp+NUeM86JaX3YBvOwW5t7rpLZ+Bd6o5ALBkvMkKeMGMAzPlPeywc1IzDm7RkkhoaI+RHrXrX4nMk2yXxPsIsKsm9eUfKbDecyuDC+Tn20pQDPDF2EAk4FWoa/lBbRoZ9hzSX/OB+WK3UWRIgYs1ignAkCz0ivkbSE26Z3Gt5HZtVrVV5cyVGmn/Yuv1XsfwvZMu6g/ZhkW4bhTyM8/RIvXMNbPASoJaaRuE/NksfRhr+5LJ/RkPk5iTuj0VXDMFG+o8GdDc3hMPZo3gDf1k6+Fp8mJu/1oayUPx1OF1vmefTA==
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=lU6uLov+bGgZqeJWfdXeshDaWcQkZkWV94xA0Zrhckc=;
 b=k8nDCrA3pBz1m+QmczN65ZNMtEfow+4eZSDUgu8Glsu9jEpgq0vKtpHadWPuHlmbBEIRrvz8KFeL+BbxR1JzeNkCjVLNqBsn8bduGY0HUd9gYo804GSL9Be6Vaiw2mCI+1WsRYvcLcX19mVOFQDqg/fy7cPrIhmWcRtzPyl4kkAcFXDihh4+nrWrwaQl9GG58bZG89WOt8SPKlQbhGCBz6GmujEQW9mgZoG0cQX2H9aDC8U/xTsrLYhlfVCb/+ttqjlttN3KFXMTa9YvVuiRUTzsiYj5AK+epjcp0D8e20eWWo3lbt5n8dlHaceego96iLKGKNPrHPgzDAMkAh/+7w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lU6uLov+bGgZqeJWfdXeshDaWcQkZkWV94xA0Zrhckc=;
 b=CbH03vDuxbtoRVN9Y6SPsgSDLadzD2L5xhk7DyFyMVrTQEAg4Hy2xPSTancuceoMc0zJJUslegP9kLWhxlqRUnHYpG1dDgDjRKMVbnXpziNelxLsWGu3HjPtAP7tLXBgwkXf9oE1mk4UDqYvyfWQlp4/JEUls21ZvTde2FnG21XYkF2Pd+Dy9DbFDKcoKPVdPRCZ6RqN07CrcFNnsprLDc+HbPjwzGMiyf6VA+YNHT1+G9t+jgHQS7hiMghHtvEYi/jlP7uBmoN0TreTD25zlEv/M6V0Fz/vxH6g80RJf467SY7JY6AK+PYQjaKlW/Ului3XRCPj59UaS7powpMa4Q==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 08/18] hw/usb/bus: Turn off the automatic hub by default
Thread-Topic: [PATCH v8 08/18] hw/usb/bus: Turn off the automatic hub by
 default
Thread-Index: AQHdaqulsdqsJFeQ9EiqkOpgDuKOtg==
Date: Mon, 2 Nov 2026 09:22:14 +0000
Message-ID: <20261102092201.1729245-9-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEYPR06MB7042:EE_
x-ms-office365-filtering-correlation-id: 00c3e1b9-ac5b-4edd-faee-08df38c2c85d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|10067099003|18002099003|22082099003|921020|38070700021|56012099006|261021121427099003|261022105027099003|261026140227099003|261009223027099003|261028144727099003|261021123027099003;
x-microsoft-antispam-message-info:
 aGEzX6gmeGQGPUgNIAoETceUHf97JkNAQ7P2lWvvNtA96FFZIvIY9HBpVIuhPnx0v2DfAqLrPWn8rDt0aky68lKUr5ww4QdASEZoSYzjKCUo0k5aXZc7UDj9yJ/Y3WjF/TmbLbwd0G8AV4lliSGeCSyKshLkCoFJHzBXizEJgrDUFxB8vh3ozkFYoHLNPJq1ZkSbWfS7RYiaVqEvGmqtyYtu6/yv9Mzcg0nk/XLszZbxI+iodP+bzAS0gkBEmGcLTffWQJKg6k8WDyI8Xr4Ve9fzbakzDhLXABPG9EPfyySihlXFYrn1AtxGqxQKCTFOvkN8Nwjr5OuaW8jEqQ0YUujO7xjQDpsLjFDydB89t5G/wob7RqwBY3Wv8ItfF3jdhHwMpFsVLx0dkhj4bSeZHOWJflf9N3x+S6lQlft1EoMUvhDzmaK/2PjD4AVasot0OmhU0b/566itSCgGH31UH9Ls/oIcYsEWVAAYBJetm094P265zSdz5ZpRC3K7WO6MyJoupbe3zp7gSsbqQXrNWIgrCxm2SCwSn8t9ULPGfGGb77tLsd+jY4aqqpglYEwHvqtX1hAQwsK9rFZrw/cX4gKJnLbIuO7YcejhW+QvWi7oU9FHtyvXHnSbd1s1TybZrk3HQ+P831cPZhX0HRmTZjvZn2AF/3b2ef70cHHMop6si5lHQ06yRsPM8y4RIKzwK9IfUISZF0hHW3Ub/PN0d5tyDXmSn1mOMeLJFE7OAKpxJTd8biMQAHvu3epCSS3+
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(261021121427099003)(261022105027099003)(261026140227099003)(261009223027099003)(261028144727099003)(261021123027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?JyEpNQgYdAzO5WEtdYxS+fqbEagzOLiILMLJRL9YItUpd8KPSW0Co1fBuo?=
 =?iso-8859-1?Q?P6ZZ9lmNHS6EnfI9cTLPO9/NEPTShc7CY2FRA1bQj2bfupew49SYrs+kBt?=
 =?iso-8859-1?Q?EDcQ25lnekPEODJ+MNhNa0FKjNCqnHSnrowWb8H14U+ipVGfoVfbgJmYdZ?=
 =?iso-8859-1?Q?v+QRiKQiXN95CaCZuB4iovgRAjUhToIECD8BHX2k3ArY5PATfaHsWENjUl?=
 =?iso-8859-1?Q?WOG6TBx4GYKi9MMTPkC1YievyhG5jRYN3fMo6BU8drRzrTJgA2yK4ZXmoM?=
 =?iso-8859-1?Q?NjkUq2JOabeBHhrSVaWgV8VnI5kbqYhgtCj32U1oNG6vIlQ82gNvgs6zvL?=
 =?iso-8859-1?Q?ctWZBfsyQjsXAopzHb9sIk9RkP3HJnYkRmvgW7VKbsg0Mjpka0IiBEhnTF?=
 =?iso-8859-1?Q?VW3kfyQHoLG4mabes7LsIngTVDjmL3r3cLTN0x9CiltyiPtjpdNLQfATV7?=
 =?iso-8859-1?Q?BgDWgt477NtmDpjNJqxSUGAR8WBYBb7hRwH7e2PhJ4notUFsfl64FyrKcf?=
 =?iso-8859-1?Q?gy7+5mGE9W8h/e69tKU6BFx88kjqVdO0XvKL9oJFuOnPIyD12kpFaN9O0Y?=
 =?iso-8859-1?Q?PXXuEgwFBLiWUW2qF0Eu8M1F/b0+NfuxM9QdYKQ2xmbvKb7zutDSRABoRv?=
 =?iso-8859-1?Q?5i1Z9inmYoTdEjdcaAgoXWzj8Qv13rEkQSQb8ygTgfOiHNQ6OO57Y1Z/SV?=
 =?iso-8859-1?Q?kgXLgj6iowYlib7dd0V2kYiIVfNUvtBB8/2hN21iEKbOd1nOE50To0Fbzk?=
 =?iso-8859-1?Q?1EnnkzEy8QXN3CUyKk+sGT4c/IBLbsMIynd7u/8k06EaspHwXuaKX+1KQg?=
 =?iso-8859-1?Q?yMIjbrq8NbM7MJla8iIXuG62Q7YpdwZZkzlbz5uLY5mKumUpo7uw1aJjh0?=
 =?iso-8859-1?Q?wwHf/GoIBZZD/daNNTZj6SoAnroSPhLPpqWTUTqOsnrM1ZqpPhKCQHs/Ei?=
 =?iso-8859-1?Q?d/vDkOq6wV3k+skiLsZ0LkkWK6EgQp+k/O7nkwFWVqX3PARXO2luCmnvs9?=
 =?iso-8859-1?Q?ANjNfjvJPpJjZzmMFI9DkS2ZlTSJhdSdec3OZbI/8FYNppnH+4gEXZ9WCG?=
 =?iso-8859-1?Q?VtZ4ySzVCKHXs90qNuxCiWUI47DiSNGMfIEsTet08ELyP3gnzNdAwJ8nI/?=
 =?iso-8859-1?Q?wbOeLhTGc6qFCKBpijaiGtRMqW06tCorkoUXaecJ2osS3C9nDwXIuvPHYo?=
 =?iso-8859-1?Q?qtTI4qjzpHTsN86MOvn9a1HjC+vqsune671m8uvUbkcz1KB/ezhp1Gzep5?=
 =?iso-8859-1?Q?D18SKkBg4fAIj7n93E9JwrHciLf6vbtMjKCadMVRzNU/zt0CDpJZsSXo4K?=
 =?iso-8859-1?Q?PM+Rwl5Z5QytaxQqP2e3rEpTnYJUrhLn8CWciypYdbahuk9HRQtEmnsYCS?=
 =?iso-8859-1?Q?SPRc8RMQquuERyz3OglvDNtqhcp5KyoHdK7r7MMtDB3bN5RLaQg9g0PB9Y?=
 =?iso-8859-1?Q?450YhkvNNdIh6CAoqDFHm9rS8R+QZII1VlWlKWFiKhGLAHJN+hk82IZNOT?=
 =?iso-8859-1?Q?68zD6VcpuFUeux4WZwRmM5DH5dWwyj4m4y9vHdk1Qqf3Cegq2+9TsunRkN?=
 =?iso-8859-1?Q?To1lftBgnIJAnwUbLen6XUxyPdmE9tEVB+WJ1WAfdgPNSjwGWH57z/mJZd?=
 =?iso-8859-1?Q?5Ix8see2hZVcMGjV0iTuCO/1yP7XCss+70FUei9DWkcFywXFcGnEeQZPM6?=
 =?iso-8859-1?Q?GpQN4yJBS2gA17PiZjx50GEilp2loQ66tURb04hfQkRhetqOL6bdDOx8cy?=
 =?iso-8859-1?Q?juyAnb6UZDPEO66ijkSFbhVqWrNkzWwejJZWXSX21rlYuo7gITUv4TaZ2X?=
 =?iso-8859-1?Q?+r3uhImtmw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	YD/iLRdzUT1tG0jCMUyguyzUK7RyiM0rGP9rCSRUIzM5Fay61bClox3csWSTgZX6r2KZRV83mKpPCJgClvYOGfngPoYnu8VbkIno0RmV0iL8F1AwnhYOVNFYHgoSng/K3oXHBIWmpBo6yZOsS+X7boLHybTNjUebbgSouKejrQNj+pmsRXQ2rfR/6Xod0ByK+Z3QxVlxhPGWtAbdqL2YWnKfkxXNk7OoiZA1gijFqyt5Anmf4Zl39HKOef8KcNQZgA/ObRGQtmBgY+9v1GhjI1uoYqEtbD/Qp86d6BSGmxOnQvRrzXC6r/CuKLop0X7FWgCjXKUOfXpggVpyZgM2Sg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 00c3e1b9-ac5b-4edd-faee-08df38c2c85d
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:14.5632
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: FEqjhM6JO3KGLmobHpLUb8Gj0/x5voIEwtzWsuk/6O4AIKTxDOseW7ZmvlqkFOzL0u4ejM0jamwhm5K1zrihcSZTdfcOpzidIV9CcHF0PUE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB7042
X-purgate-ID: tlsNG-33051d/1793611341-77AC44E9-1892733C/0/0
X-purgate-type: clean
X-purgate-size: 931

Every bus creator now sets auto_hub from its own property, or clears=0A=
it outright, so the value usb_bus_new() leaves there is never read.=0A=
=0A=
Drop the line. A new bus then has no hub unless its controller asks=0A=
for one.=0A=
=0A=
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/bus.c | 1 -=0A=
 1 file changed, 1 deletion(-)=0A=
=0A=
diff --git a/hw/usb/bus.c b/hw/usb/bus.c=0A=
index 92f67de4fe..cd587db892 100644=0A=
--- a/hw/usb/bus.c=0A=
+++ b/hw/usb/bus.c=0A=
@@ -92,7 +92,6 @@ void usb_bus_new(USBBus *bus, size_t bus_size,=0A=
     qbus_set_bus_hotplug_handler(BUS(bus));=0A=
     bus->ops =3D ops;=0A=
     bus->busnr =3D next_usb_bus++;=0A=
-    bus->auto_hub =3D true;=0A=
     QTAILQ_INIT(&bus->free);=0A=
     QTAILQ_INIT(&bus->used);=0A=
     QTAILQ_INSERT_TAIL(&busses, bus, next);=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467864.1676957 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHb-00052r-LZ; Mon, 02 Nov 2026 09:24:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467864.1676957; Mon, 02 Nov 2026 09:24:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHb-00051V-4R; Mon, 02 Nov 2026 09:24:51 +0000
Received: by outflank-mailman (input) for mailman id 1467864;
 Mon, 02 Nov 2026 09:22:25 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFE-0003Su-VG
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFE-0071pr-Bp
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:24 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85648-8faa-0a2a0a5109dd-0a2a4506a3ce-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:24 +0100
Received: from [40.107.75.129]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8564d-195a-0a2a45060019-286b4b814aba-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:23 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEYPR06MB6824.apcprd06.prod.outlook.com (2603:1096:101:1a4::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:18 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=dsGPgrnBA2oravjeJk9r01LBLChIFkLu41VIsTNn2HTUOYNVb+EPoTcUivcgpgFeps1SZXHPpDzI1h2bjygp8Beh1zH++ZBl/Q7DbnvBjvP+umZrxyOtsHx4kxpzMWO80JeJ9CTPO6/TRzdf0LT322YJ2WHLg39zxTF7TjjhVHxKgMC1u4lZ24XR0qZQv3rE+RenAbaUDYLZALtGIMLJc5xSVu0uFPpJBU6dWA3RVNn5/iiFB33mr/67p3VFJAVec2HIm0BLU5kjS+HGn3LG5BzslQp0Om4yW+RSPs4WW40qqBdBkbpzl0jyCqPkSsLmEmOBMqWeDzEtnwfN7lj7/Q==
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=icejiFuGpf+qVEtUBiMzeJvMEi17GcoPM9MYM4qmsik=;
 b=NxrHBcS2jBD7JozZjseyw9aG/FCgun8YL5tyhdAoeQOdt5XOoHauWclJnWuqy7ORp4MxGuoNMhzDVQu6h87UQWWAwenIDhihfDpe+nvs8ie4+6MLJG9OMtBe4EhKXrNCq2k8TZp47STPh4Zhhbb51Yyut8HkrkeXvOM9crFw0TjMf8euVi/iv1Xgsy2bYbNDOL6C/e3SnRRQaX0chc8ii/MPm/m/3r/fl4nzqEKtdRAVbgz7AyK15qc7KTopmlwcH64DziQr7wW6nJuEXw6NAdBYVuI3O+GSnzlxX1EmEsPXKIxpLXZbCFb8TLlUL/L9Lt/GSKm//qdKeT5N9BFFig==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=icejiFuGpf+qVEtUBiMzeJvMEi17GcoPM9MYM4qmsik=;
 b=maCiI1/IPo6RIDiHP4bILEa1zkWNHBcf9q5FmjkMyb9cOhB/abooHHmn8eW6hbWQjvPCZnv7Ma9zjH3MMtYlZCcgib6GuYe1VsC8wdV1835W4pj+fN/ipZyyku7khDtSDwWH2YPLHl3j2gUsRTLjBHSGmDZkD+oukEPgKzfUeZg20aXB1vHn7j/GCWBO2nAY+Scu/0VJY+QiFD2YyAkYr4MN9JlTNl4EXk4U73llbP0K4cAwYmCEScngw2QInobougXWmZVVZvsTOZXyOorXyeXFQQMehgzct4/SxKP+N/UpD5NqHO253ycrVLz55YN6iH7hW28vEDcXRBgR7X10FA==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 11/18] hw/usb/redirect-server: Add a usbredir server device
Thread-Topic: [PATCH v8 11/18] hw/usb/redirect-server: Add a usbredir server
 device
Thread-Index: AQHdaquo7Sqzuz2N4UaAeTmCp9IJfA==
Date: Mon, 2 Nov 2026 09:22:18 +0000
Message-ID: <20261102092201.1729245-12-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEYPR06MB6824:EE_
x-ms-office365-filtering-correlation-id: 98bbcd31-43c4-43f1-a02a-08df38c2cacb
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|7416014|921020|38070700021|261021121427099003|260925022911599003|260925021311599003|260925021911599003|5023799004|56012099006|261009223027099003|261028144727099003|261021123027099003|261022075727099003|261022105027099003|261026121527099003|261026140227099003|10067099003|18002099003|22082099003|3023799007;
x-microsoft-antispam-message-info:
 vesjlse4eLK/zV9wuxXU2dsHnuD/zYZPxbrw3pPx4S2XX2JRSIXQpsrtJz1mYjfA34lK2Ewrkg+mDMYfU3fWXmjO+kEUHAYgJlKV1QOeaUKGf7ITJkQeALqUy1r0pqq5aYnPyN6rqLlNWkn4TUfkO2+eQ+/yzzTXmfPX3LTO+CGUE9OV7y0FPd+c45pC8tbwb3IyF5JyOcNUFeOI0Gb9HIPn70n5RhDIgMtXbmo6CB4mI9aR8AoTr6/21SHSORLrfe00qKIWeWqQbUodcDmD/ZT4uFv75k1zpBjBMJ8fn+stIgP9KVfLWW+7YRZXEyazT1GcumyaXHBQskgSdS9P2i43FMVyP/k0zxkNVoEBOvVQzNJF+1KFpGHNv+458wmOfwuB+Wql8UJw+g2J4FRkyV34OwSxYr5OXc4iCHqB3cx7IduouuCctnOv8pB4camtX/fM/MwJreXuVbNkQt6+biW5asN+e5RsPNCjtNsIodwE5atEENSHPx1CuuaTUpeTYpzAEghKPIn6Ry7w38GN+uY6JwS8e8V26HK51WltshRAkGrr4BEkraV4po3pETo5GJiAappWOiBbkNbAuGlFS8t0AB8Ds1Wp3A3HRF2daDh6lohXtPr0xgbuTypZdttZuMlIR2C9ntavG11gb94cWMxUp83dV2sy9Un03s2/OYJWSazLPsc8xBAooUeOeTsFbhwbqrBLEB/UzC3lrUBjfvMNAvM5+9YNCBMxOEC0RKTX7jR4hiWXzg+lVYV68gbX
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(7416014)(921020)(38070700021)(261021121427099003)(260925022911599003)(260925021311599003)(260925021911599003)(5023799004)(56012099006)(261009223027099003)(261028144727099003)(261021123027099003)(261022075727099003)(261022105027099003)(261026121527099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?NYairemVQg6BPPiGZQYRBhemXOuHTsHW7kYcO8NNhcKd/bIFbZiPMW6klC?=
 =?iso-8859-1?Q?51YoT3XZFQpOYjtnGjw3KgRbq23RzFQF5wuh4najQR7dlGMWBMs+lv2uEk?=
 =?iso-8859-1?Q?SkRUiusN+xlEUdqbyenWaaGPVPL2Ky/401UCDiIQAERRncxH4OcxcV9zVE?=
 =?iso-8859-1?Q?es2cOj+FWekps4OvAoNsA+jQg855oS6eXES/cEjbEBffUUOoLjDv4MZYG7?=
 =?iso-8859-1?Q?mFzZB9BEU4VbjvZFiM0CzafW976lmt9FEodt/JdelZeaBpkFaedU+etpGn?=
 =?iso-8859-1?Q?WL4reo2+xpn3DpL7/CqcZNcIfZGOdLhj/2A6SkdvFLKZLHjNMOynDyNE/m?=
 =?iso-8859-1?Q?AKSZuNq2xrENbk1w+KKSdbTj4Zc8GcqG6hSBYZagUDAXG07pJW7JLb9piG?=
 =?iso-8859-1?Q?W4h3xSNGLUybgmxIhnSXWgcMnhgdSb87xk9DqB+xAd88pezLGkWIiDdajY?=
 =?iso-8859-1?Q?+KEhKgq4hcgC0qiooAxB+X2qTPXeX1MLy334aexqL3+JdCD0w3gMt6/P+C?=
 =?iso-8859-1?Q?j+T1mnnZfdNfkkQ/texAD3BSJK7jVTS2PTVv7FtJZXPRgbIk5tnKxzI9H7?=
 =?iso-8859-1?Q?A9VlpFT9faaHAodvStynHbtlTyu9HB9OGjJ42sLDxVT2cHa2AfsS3ofqU/?=
 =?iso-8859-1?Q?3z9QjaWr7kW97YT2BgplfyCz7fnoEc3jnax9HKTaKHsxJ7FfcqsaolovIg?=
 =?iso-8859-1?Q?pYAqMD7eGm5N0r7kSVTLdKRuLwcSY7VHOYughIxaF0GlnAL1MtARrEvKht?=
 =?iso-8859-1?Q?RAhQzpI6xx8cgbHkJgkxGnksDBdNiVEODrNWDicTX3joNCOrMTkLnGKS1P?=
 =?iso-8859-1?Q?NZAvwdO9kH6mCeIqVBztA+msPr9VoEfDnmBhHvy/l9zIyfv3qsO/otHuJ9?=
 =?iso-8859-1?Q?6aIhOQtuLQ7aVD1oOCzXEM26trWZHakAnXVYRYZcOqgCGPFhPnjIP73lul?=
 =?iso-8859-1?Q?I4KtL8WBCi/sdHqgNvfM7FvYWQK96kWhR0oasnGVZlsQNcHLi3LRlnqgKR?=
 =?iso-8859-1?Q?dcKBJEfyoBjWzcwzPd5nakymgR/TBp6o3GDlkL3FfkBJw47TeZRdtkHxDX?=
 =?iso-8859-1?Q?kqlDs94aXJVJHIV7DJPKCw3FZFEGu1DGJKwYpkRgSMRhlAnkO8u3/5r1KW?=
 =?iso-8859-1?Q?qqk1w+7UvgtPFUk/yY8c4PQ+5kiYA7W76aOZ6xsrsLlxYK7Aj73UfuFElQ?=
 =?iso-8859-1?Q?O9lxItwINABcrm44UFZ/04AY/JBdKBtUXLX7filsee7OzLlvyl4rCNYeZa?=
 =?iso-8859-1?Q?ZiB+QqeNs93OXdKKSrcDskn3YooE3zJaMgvbPx2K39tlhLS7Cxl3/mf0D5?=
 =?iso-8859-1?Q?mzq5Vo04wI+qyGxl/1xrcNMjtNrVnQzwc+7ALgGaVCKmQzkTUwJ9GFjg9n?=
 =?iso-8859-1?Q?WSC+4rjldDE05mjmqoY3v5NCB3SbGYZOCwlVFmLrJRmmIhtHrwVpYkxnaU?=
 =?iso-8859-1?Q?AYdMefqFyS61T3x3HPnOElFt+akGr752bS12aHGcFLrjWJgq030OUpCeEj?=
 =?iso-8859-1?Q?9GUlBdAiO4E9yK7FVl7uOGxTWbwAWuRYUPCsj+fvJcIqKQjqCjcCKPf//s?=
 =?iso-8859-1?Q?0eQ9Jps4HYHPj3hbUraoA2eyBoL4t0BPGiwyF2EkqkLrxqf6Nis5DXKmv9?=
 =?iso-8859-1?Q?L3U/35r8n/tUe5BFAHk9yfnX5M8r4M6YYll1mlyoDrd1gTvaezN9KsEEn7?=
 =?iso-8859-1?Q?gS8ZFwHMLIQMUffM5rMpU5MDPu9MWFvgCYuuUBfrbAmbLdU81C5vrdV4Q/?=
 =?iso-8859-1?Q?jXDh/7kuM8XA3Gi2X2+0OxmxYr4u++dxHz9/P2BgSjfL745hSvI/soIwly?=
 =?iso-8859-1?Q?RC6uJmDf7Q=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	Xz4+eyfZeW8S4sc9XLKUESa8fQsVDp/ZBKqAEO0XtelsBelcGiYYFSeWoo/Kj+Hh2/bn4TNyLTv6RftZ8ivl21+gczoc4FeqinstSZli8HSvdfHQ8ednuglemgiGtVGjrZvTKvTOE0wLZRqGW2F0ciKFUbyYU0FyOQXixZjilDgHP0d+kBP3VGhoWjXY3HgjvHnZ5PGoLvlRL95jJwsvrsWW7pWE0vldy62NhSjLuPEy7eWRjmgPQOgIAig8NszTmFbeQOfLn6oQq3foP7HufJA62znDMPL7YuF2vybKfMMDD4ZNfRs1CArifMkde4EfuU2eqZ9asjf8B9MeDdqbHg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 98bbcd31-43c4-43f1-a02a-08df38c2cacb
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:18.6471
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: /8dRNTocBydkQUUUZEalZdCiPQ4/CFrceI+PDWdhTDFVPrfPGtFF0NC+w/W9vYVaKgJoi1Do5ztoIubaOrr1E84an/Ja/0MFkKF0lXWUHzg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB6824
X-purgate-ID: tlsNG-16d1c6/1793611344-F540B77B-45C9D0F1/0/0
X-purgate-type: clean
X-purgate-size: 7843

Add "x-usb-redir-server". It exports a USB device from this QEMU to a=0A=
USB host in another QEMU, using the usbredir protocol. The other side is=0A=
the existing "usb-redir" device.=0A=
=0A=
The name has an "x-" prefix because the device is experimental. It has=0A=
to sit on the sysbus so that qdev can find the USB bus it provides, and=0A=
that may change later, so the name is not fixed yet.=0A=
=0A=
The exported device is plugged in with "-device <dev>,bus=3D<id>.0". So we=
=0A=
have to provide a USB bus. To find that bus, qdev starts at the main=0A=
system bus and walks down the tree. A device that is not on a bus is not=0A=
in the tree, so the bus it provides cannot be found. We have to sit on=0A=
the main system bus. That makes this a sysbus device, even though it has=0A=
no MMIO and no IRQ.=0A=
=0A=
usbredir carries one device, not a bus. A hub cannot be exported because=0A=
the protocol has no device address field, so only the device on the=0A=
first port is redirected. To export several devices, run one=0A=
x-usb-redir-server per device, each with its own chardev.=0A=
=0A=
The link to the remote host is a chardev, so this device cannot be=0A=
migrated. Its VMStateDescription says so with unmigratable.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
Reviewed-by: Marc-Andr=E9 Lureau <marcandre.lureau@redhat.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 143 +++++++++++++++++++++++++++++++++++++++=0A=
 hw/usb/meson.build       |   3 +-=0A=
 2 files changed, 145 insertions(+), 1 deletion(-)=0A=
 create mode 100644 hw/usb/redirect-server.c=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
new file mode 100644=0A=
index 0000000000..1423564d22=0A=
--- /dev/null=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -0,0 +1,143 @@=0A=
+/*=0A=
+ * USB redirector, server side=0A=
+ *=0A=
+ * Copyright (c) 2026 ASPEED Technology Inc.=0A=
+ *=0A=
+ * SPDX-License-Identifier: GPL-2.0-or-later=0A=
+ *=0A=
+ * Exports a locally emulated USB device to a remote USB host over the=0A=
+ * usbredir protocol, so a device emulated in one QEMU instance can be=0A=
+ * enumerated by a host controller emulated in another one.=0A=
+ *=0A=
+ * Architecture. The left column is a request going to the device. The=0A=
+ * right column is the answer coming back. The middle hop carries=0A=
+ * usbredir messages over a socket. The top and bottom hops carry=0A=
+ * USBPackets inside QEMU.=0A=
+ *=0A=
+ *     remote QEMU: guest driver -> EHCI/XHCI=0A=
+ *              |                     ^=0A=
+ *    USBPacket |                     | USBPacket=0A=
+ *              v                     |=0A=
+ *     "usb-redir" (the client)=0A=
+ *              |                     ^=0A=
+ *     usbredir |   chardev socket    | usbredir=0A=
+ *              v                     |=0A=
+ *     x-usb-redir-server (the server, this file)=0A=
+ *              |                     ^=0A=
+ *    USBPacket |                     | USBPacket=0A=
+ *              v                     |=0A=
+ *     any USBDevice, "-device <dev>,bus=3D<id>.0"=0A=
+ *=0A=
+ * "usb-redir" (hw/usb/redirect.c) is the client:=0A=
+ *   - it takes a USBPacket from the remote guest and writes it to the=0A=
+ *     socket as a usbredir message=0A=
+ *   - it reads the answer from the socket and completes the USBPacket=0A=
+ *=0A=
+ * This file is the server. It does the same thing, but backwards:=0A=
+ *   - it reads a usbredir message from the socket and runs it as a=0A=
+ *     USBPacket on the bus below=0A=
+ *   - it takes the result of that USBPacket and writes it back to the=0A=
+ *     same socket as a usbredir message, for the client to read=0A=
+ *=0A=
+ * A USB device has to sit on a USB bus, and in QEMU a USB bus is always=
=0A=
+ * made by a host controller. So this file makes one and acts as the=0A=
+ * host controller on this side. It models no real chip: its cable is=0A=
+ * the chardev socket. The real host is in the other QEMU.=0A=
+ *=0A=
+ * usbredir carries one device, not a bus. A hub cannot be exported:=0A=
+ * the protocol has no device address field. To export several devices,=0A=
+ * run one x-usb-redir-server per device, each with its own chardev.=0A=
+ */=0A=
+=0A=
+#include "qemu/osdep.h"=0A=
+#include "qapi/error.h"=0A=
+#include "qemu/module.h"=0A=
+#include "migration/vmstate.h"=0A=
+#include "hw/core/sysbus.h"=0A=
+#include "hw/usb/usb.h"=0A=
+#include "qom/object.h"=0A=
+=0A=
+#define TYPE_USB_REDIR_SERVER "x-usb-redir-server"=0A=
+OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SERVER)=0A=
+=0A=
+struct USBRedirServer {=0A=
+    SysBusDevice parent_obj;=0A=
+=0A=
+    /* USB bus */=0A=
+    USBBus bus;=0A=
+    USBPort port;=0A=
+};=0A=
+=0A=
+/*=0A=
+ * USB port ops=0A=
+ */=0A=
+=0A=
+static void usbredir_server_port_child_detach(USBPort *port, USBDevice *ch=
ild)=0A=
+{=0A=
+    /* We only export the device on our own port. Nothing to do. */=0A=
+}=0A=
+=0A=
+static void usbredir_server_port_wakeup(USBPort *port)=0A=
+{=0A=
+    /* We do not pass remote wakeup to the host. Nothing to do. */=0A=
+}=0A=
+=0A=
+static USBPortOps usbredir_server_port_ops =3D {=0A=
+    .child_detach =3D usbredir_server_port_child_detach,=0A=
+    .wakeup =3D usbredir_server_port_wakeup,=0A=
+};=0A=
+=0A=
+/*=0A=
+ * USB bus ops=0A=
+ */=0A=
+=0A=
+static USBBusOps usbredir_server_bus_ops =3D {=0A=
+};=0A=
+=0A=
+/*=0A=
+ * Device registration=0A=
+ */=0A=
+=0A=
+static void usbredir_server_realize(DeviceState *dev, Error **errp)=0A=
+{=0A=
+    USBRedirServer *s =3D USB_REDIR_SERVER(dev);=0A=
+=0A=
+    /* One port: usbredir carries a single device. */=0A=
+    usb_bus_new(&s->bus, sizeof(s->bus), &usbredir_server_bus_ops, dev);=
=0A=
+    s->bus.auto_hub =3D false;=0A=
+    usb_register_port(&s->bus, &s->port, s, 0, &usbredir_server_port_ops,=
=0A=
+                      USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL |=0A=
+                      USB_SPEED_MASK_HIGH);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * The link to the remote host is a chardev, and we cannot migrate=0A=
+ * that. So this device cannot be migrated either.=0A=
+ */=0A=
+static const VMStateDescription vmstate_usbredir_server =3D {=0A=
+    .name =3D TYPE_USB_REDIR_SERVER,=0A=
+    .unmigratable =3D 1,=0A=
+};=0A=
+=0A=
+static void usbredir_server_class_init(ObjectClass *klass, const void *dat=
a)=0A=
+{=0A=
+    DeviceClass *dc =3D DEVICE_CLASS(klass);=0A=
+=0A=
+    dc->desc =3D "USB Redirection Server";=0A=
+    dc->realize =3D usbredir_server_realize;=0A=
+    dc->vmsd =3D &vmstate_usbredir_server;=0A=
+    set_bit(DEVICE_CATEGORY_USB, dc->categories);=0A=
+}=0A=
+=0A=
+static const TypeInfo usbredir_server_types[] =3D {=0A=
+    {=0A=
+        .name =3D TYPE_USB_REDIR_SERVER,=0A=
+        .parent =3D TYPE_DYNAMIC_SYS_BUS_DEVICE,=0A=
+        .instance_size =3D sizeof(USBRedirServer),=0A=
+        .class_init =3D usbredir_server_class_init,=0A=
+    },=0A=
+};=0A=
+module_obj(TYPE_USB_REDIR_SERVER);=0A=
+module_kconfig(USB);=0A=
+=0A=
+DEFINE_TYPES(usbredir_server_types)=0A=
diff --git a/hw/usb/meson.build b/hw/usb/meson.build=0A=
index 429dcd6a24..0061b935e6 100644=0A=
--- a/hw/usb/meson.build=0A=
+++ b/hw/usb/meson.build=0A=
@@ -78,7 +78,8 @@ endif=0A=
 if usbredir.found()=0A=
   usbredir_ss =3D ss.source_set()=0A=
   usbredir_ss.add(when: 'CONFIG_USB',=0A=
-                  if_true: [usbredir, files('redirect.c', 'quirks.c')])=0A=
+                  if_true: [usbredir, files('redirect.c', 'quirks.c',=0A=
+                                            'redirect-server.c')])=0A=
   hw_usb_modules +=3D {'redirect': usbredir_ss}=0A=
 endif=0A=
 =0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467866.1676966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHc-0005HC-IB; Mon, 02 Nov 2026 09:24:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467866.1676966; Mon, 02 Nov 2026 09:24:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHb-0005E0-VA; Mon, 02 Nov 2026 09:24:51 +0000
Received: by outflank-mailman (input) for mailman id 1467866;
 Mon, 02 Nov 2026 09:22:32 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFM-0003UA-Hr
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFL-0071w6-Uk
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:31 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85657-8faa-0a2a0a5109dd-0a2a4506e5cc-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:31 +0100
Received: from [52.101.127.108]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85653-195a-0a2a45060019-34657f6c54a3-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:29 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by JH0PR06MB6938.apcprd06.prod.outlook.com (2603:1096:990:67::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:24 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=tY4jyuncL/jyqXxR3Wg64ANrpq5+HqpjfdRuOICMR5ty7T60XObp+HiIAK4uoMgGlAzFqGhZw0qQA/FMJeQhI43l/Mr1WYv8tGUEBbB+znPOqVp/D0XtJbj03B/xWiaOI8vBhbJlnZFr3OtbDUrunwedmTIdHj4XpOvXAHdAOgucmJ6i4zWm6gJ/U06QvgRUt0T0Nll74TB1Wh7+Ib188P23VoZSAHDOwYrpC8AtKs/y3sSYWNg4PDAfLNgQVSI/Tk/C12AQDh0uypZF+UCOVokDYqp9xRGkGIecB769PabM54DzrYZ0LD/L5fS3n5rKZ8UZYrUorVaPFATyj+udcA==
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=WOCKnhAngp5J9sy19IWEJJNbBB8dRjj0l68AW4bPQTw=;
 b=Qkr4vmtChgJvK1BfHyeMN+Gsrlg/b6SAzUcGwnE6oo1Z06BLzWIB/YYPTcQT5eoNfgjRZrkcHCfFcu/X8zp/T6Myd3njMWSE6cEHHPr50C3PevNl4s12dB8g0dbmanj5coETFcMgJdMMoTdyFINlOjOT39/NOfciFRZjIlZg9WXxKMmnEb6YyWzqjKOvrMi+Yg3ObUK0t2HRXuxomqdLbWvlDVuPe+u51qTV36KlhTz1qduwk2Wgdhp4qbfOH7eVbAfA3QZM3XcDwr1r31cMcl9XsiadepqHuMdhq3nWKR/RjMGAaI17he1bI09JBllOGjrvxhHFGYqrYfDFXJXJNQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WOCKnhAngp5J9sy19IWEJJNbBB8dRjj0l68AW4bPQTw=;
 b=ITFxLs2UbqdqpOJE8Aq8iKbt8GrJep4/n5M+/lC9WdGYDrhJe7//4PakThD5Pj8+WH1nd6uetm+0uZ+y2EkAIqaVKvgrY8xKHLBmYGn1zb6OgaTfJeH4mnkmgDfRIfrcQoA2StWLsGr06jvIrKzMHWfa2A2ZJQJYKxA7/ZY4DX8esvWqijvgPjGHAfWn2MQJnhcwr1q5Kk+DcqDh42a/qvySx38dr0oInSB+/ng0CSI7JIMifNYqLWSq8+kC9kCQZPnxW6juzFlM6LcEfUmXmkXwxcn+cA9uRVWP8S+reo+jDZlxoalH7aCwEuF4DK8lMIoo49iS4gFB1++ZmUr+WQ==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 12/18] hw/usb/redirect-server: Connect usbredirparser to a
 chardev
Thread-Topic: [PATCH v8 12/18] hw/usb/redirect-server: Connect usbredirparser
 to a chardev
Thread-Index: AQHdaqupk4VbrDEBxU6nbgiHGzQ0cA==
Date: Mon, 2 Nov 2026 09:22:20 +0000
Message-ID: <20261102092201.1729245-13-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|JH0PR06MB6938:EE_
x-ms-office365-filtering-correlation-id: bf9e78e2-5127-4c10-0586-08df38c2cba2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|6133799003|10067099003|18002099003|22082099003|3023799007|921020|38070700021|56012099006|5023799004|261021133027099003|261026135527099003|261021121427099003|261021130227099003|261026130827099003|261022115727099003|261022113327099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|261009223027099003|261028144727099003|261021123027099003|261021135927099003;
x-microsoft-antispam-message-info:
 My9ihqG0UNecVIK23bTCIk+ItDux9VJ4rLSvshpO5ey5GZj5uCzrSVB9YrGotImaUpKOFqOM/VQZQU6ojC7s8oWw2D3QN3TEJWn4/1ThnK18oJ40LkRHCLVnURemqyH28jeTR1mls7EQYaTbA1Nvp4fjWp7wOzOOcm78PjyeFhpl64YiGbdJIXM4sVJJyLnbCxuC1kKYUrAphpze4Krs1ne0YIWs9+z7abBdOT88QH3ZWmB1WTFN9/MxhOotgxYPHk61E571FEMQtMAGEb/APKCYdrslvfnOGgpk4OSxFd0RSKUtprU/+JQqQBdbMaiI8om+yjEI1S2oJ7TqQ4iCPuaJPPa6Y+8gyabZ/4XTnzlN7EHgDO02X0uqVXUy7FSPh3XiCdpDcJaWPaQ4/jcOdzB3LDez8rA9cPwX1WKVAPF4TlWfusU660SIDTtNiwq36ETYYuamdxixAz9V1dxbX1jkvJH+gW1cT2TpofruDlvsDnTfehBYOeeJ2rEV3kjJjg9W4mlwoI2/nllg6+qejPxWn5im1NUUivHdVQILojjRPTTDEhPj9084P/KwfXcjH+2BkFTy0e/F/RiDBj5eIHgRHfH+gXxuJ1NtaMvJaQpSENj5TJEFoz44IqndaZMSB5qTxqPhW15GCcW4V7d5pADFjgw3/h7kTPctMPA28XIXB843zOEEP4ahLsMosY0PPvehYGVQT4kIW/KHZTbs0meMnSBNrojvIN2ZeFV3e6mmZwk6XacIkFPp+FKR+VCb
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(6133799003)(10067099003)(18002099003)(22082099003)(3023799007)(921020)(38070700021)(56012099006)(5023799004)(261021133027099003)(261026135527099003)(261021121427099003)(261021130227099003)(261026130827099003)(261022115727099003)(261022113327099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(261009223027099003)(261028144727099003)(261021123027099003)(261021135927099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?kSpyAhkRkMgfqPVBp3p3y42nREea3DOB2XiCQPvTagTvt6Yd+ANugpHjJ5?=
 =?iso-8859-1?Q?Ef9HDAQPyCILsPIXvt2ovoTRhoGdCRd6FDGrhLPBRm3tC3v88cowDq11Hq?=
 =?iso-8859-1?Q?Jeb6tOLF/ZfV6/VH/jCEITuam9m87z/wH8lV9pq+lBGiGOxCjrYA330i3W?=
 =?iso-8859-1?Q?GfP9tc/FcavGqGFuD5yo+tgiSQHvC1CW1D6cAZP9RL3iIHFCaf/AMomOxM?=
 =?iso-8859-1?Q?+6lJcC/eIckCC7GYsQBcJ6NeTu84qCgh/ULj5CUlhgJUwxa3l7QFJrVK2l?=
 =?iso-8859-1?Q?90vtrYeBXlNuOsEaExiIrCUlrPERAAoaC/KJiiKXJE8UFAsByrgUY1RnI8?=
 =?iso-8859-1?Q?hNWGqRFPZXV0mooEcb25LexqbnA5NnaY4KdvjEDrN4pwdWvZ3efjGSf+cw?=
 =?iso-8859-1?Q?hf29p7LP1tgQ/K5kfOuXyABrCy2VW5nmFrFGZ/DIfmxE294jG0g7tE4VTF?=
 =?iso-8859-1?Q?OxB9Flsa1xZe+d9UhGXj4uBjvxCscB0oxtRmEI4VnXlfcm0OaXG4YTiKBo?=
 =?iso-8859-1?Q?AgQwE8gmdM6zL6M3PVc16tzQ7m4j9dszJoELHE+e5228LVOvl27TPNqZyP?=
 =?iso-8859-1?Q?iLf8xMFtDQzQWYFOzoc26/9J2OChNvCjA52XLRSYB29+82ZA0P5jFKZ3OR?=
 =?iso-8859-1?Q?u5crONKL1AXqhOg9nBoaK3Jqfv4TwivtSJVOCTHBAKRGh2daXHHTrC4PuB?=
 =?iso-8859-1?Q?eiPj+tM7lNc9i1v2Yd2EsYb++f1gO6iM8AcdWK8APMqkX/b9r7s6ETdzG8?=
 =?iso-8859-1?Q?OlASfH5ODRaaLCyfxPkU0m5vT5dBEPux+yvNt+Q6ka7mF+sNWWbTpTzBPh?=
 =?iso-8859-1?Q?hjeuGcqC7omtfPjLlJvfSG0xpDcmg/BpRQo7PV/tTIh8ZS530eMAklCcF0?=
 =?iso-8859-1?Q?/3FZK0b9TnFDDRWOMdXeAUQ7GAl/P8mT5/RD8TkydTY8ZGzNHBJkAegEEv?=
 =?iso-8859-1?Q?Rg6lLsnD2ZR0ijAeXnpmICtjBvgCM6XILQu02i4DIxzBTnpaqEOPJPeX2p?=
 =?iso-8859-1?Q?FV7tzRAjrVG1KNQGrYCrB4g5RPPuQtIjKs+zAqEIQhWZypDyvoFWgyYbye?=
 =?iso-8859-1?Q?2dXxAYSW1tp7GCcMsIvskFGBKULQcV03ymCvwUc/33zWxpY8a07+rE+G/5?=
 =?iso-8859-1?Q?sKThClcRhKA4T2aZ5z1Mu5/ZtCr7OomSdGcaekKoDR9PuLYj4RpDb09CHD?=
 =?iso-8859-1?Q?IEB7CGncq3PRmhLNbqSgB/VoUoCYUINrzFTIl1WT23vipFB5j4JdaVZv4X?=
 =?iso-8859-1?Q?DgY+nK/UBdpejMeipzRFJEWypsWLAfKa8fz6ZVylE3sJ4iQ/elBnBdoByd?=
 =?iso-8859-1?Q?OPUWdxtQN3uNjlYegccvjXD91BCbGKgPnazOt37vJt5MgU3zhntezesLGV?=
 =?iso-8859-1?Q?NplvosDmmQjLSnoBqs5hRus87tv+0r/RGJjhrOZMleJ/AvkgFEc1HwAOTS?=
 =?iso-8859-1?Q?RrHvNG/EkvpFFi92VYlwYKHWjlb6CU2jQobnI9Kw1dDFjpQecrP2pJ525v?=
 =?iso-8859-1?Q?0fvIuRl6ynIVHWK8N1L6GiXkOwdr5SaI36M/eKcKHHcixdtL2oURnbTHJ1?=
 =?iso-8859-1?Q?m+EITOKJLmQhP5U8ZNhLkSe528FaU5/6src8EiOFzEbWhQBoOgcSHBK2pG?=
 =?iso-8859-1?Q?2+e5NS1MjGysWW75H6Jl8QGuevCST+YYQ5TPkFjf32Q5aBpgVKCIdqgjIP?=
 =?iso-8859-1?Q?OYxur5WvHjRBxwUdm7/uIKcVKC8RvkoJtoXoybxp/1PfiSFI66apPrdY+y?=
 =?iso-8859-1?Q?kchBNOjWeZBDRH5QYVFbGze3bUN1OCopZl4gVN0xcZYy1ucJo2cegKOmNs?=
 =?iso-8859-1?Q?rX3nWnE/6g=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	JpdWGLMUBvSRa5nSJDXlHcDiBnW81IQhII0UgSh27sj6mJq8rYSN7sWoXF8ffEaLwq8Y0PXTt3+IKAaXXICDEmPEhvXWIuCBSwYWhztupLzJptW3EYxUNod6CTgLx7YGhF26QBv2mihnFujnaH6F9TF2RsnEx7d2WGLIR4l8i8vlZPFJnCORpXxvscmnzXyelhl5L7G+LZpcjAVbvfBXXdnFwqGVmNFJTg74C1djHvg9aJkbkCz6lNVwXqBh8oa7sfN7DIklt5CYTVonO1gFqFFNYUi1la79RS9JHTtHsPe4g+z5CGrNRsyaLbUQLAnQ2mMR9Sdhf1ydat+Oda+PUg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bf9e78e2-5127-4c10-0586-08df38c2cba2
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:20.1035
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: gjPDsXeG52IzYCzQ4W3vy5Hp7gtgbjEG1CokJKUxwNLsW9ft/c0wR0EzbPjB61qIzuVsDDWXHvEIVLHV9tvzaTvcmDpTz2Bj3uA/aiAn39U=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR06MB6938
X-purgate-ID: tlsNG-16d1c6/1793611350-F647377B-E069AF7D/0/0
X-purgate-type: clean
X-purgate-size: 13438

Create a usbredirparser when the chardev opens. Feed it from the chardev=0A=
read handler. Destroy it when the chardev closes.=0A=
=0A=
The side that exports a device sets usbredirparser_fl_usb_host. This=0A=
side drives the device, so it is the USB host for it. redirect.c is the=0A=
other side and does not set the flag. The library uses it to decide=0A=
which direction a packet may travel.=0A=
=0A=
The chardev handling follows hw/usb/redirect.c: take no data before the=0A=
parser exists, do not write to a closed backend, do not re-enter the=0A=
writer, and let a close that is still queued finish before a new=0A=
connection opens.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
Reviewed-by: Marc-Andr=E9 Lureau <marcandre.lureau@redhat.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 285 +++++++++++++++++++++++++++++++++++++++=0A=
 hw/usb/trace-events      |   6 +=0A=
 2 files changed, 291 insertions(+)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index 1423564d22..f78351bde9 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -50,22 +50,46 @@=0A=
  */=0A=
 =0A=
 #include "qemu/osdep.h"=0A=
+#include "qemu/units.h"=0A=
 #include "qapi/error.h"=0A=
+#include "qemu/error-report.h"=0A=
+#include "qemu/main-loop.h"=0A=
 #include "qemu/module.h"=0A=
 #include "migration/vmstate.h"=0A=
 #include "hw/core/sysbus.h"=0A=
 #include "hw/usb/usb.h"=0A=
+#include "chardev/char-fe.h"=0A=
 #include "qom/object.h"=0A=
 =0A=
+#include <usbredirparser.h>=0A=
+=0A=
+#include "hw/core/qdev-properties.h"=0A=
+#include "hw/core/qdev-properties-system.h"=0A=
+#include "trace.h"=0A=
+=0A=
 #define TYPE_USB_REDIR_SERVER "x-usb-redir-server"=0A=
 OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SERVER)=0A=
 =0A=
+#define USBREDIR_SERVER_VERSION "qemu " TYPE_USB_REDIR_SERVER " " QEMU_VER=
SION=0A=
+=0A=
 struct USBRedirServer {=0A=
     SysBusDevice parent_obj;=0A=
 =0A=
     /* USB bus */=0A=
     USBBus bus;=0A=
     USBPort port;=0A=
+=0A=
+    /* Properties */=0A=
+    CharFrontend cs;=0A=
+=0A=
+    /* usbredir over the chardev */=0A=
+    struct usbredirparser *parser;=0A=
+    QEMUBH *chardev_close_bh;=0A=
+    const uint8_t *read_buf;=0A=
+    int read_buf_size;=0A=
+    bool in_write;=0A=
+    guint watch;=0A=
+    bool host_connected;=0A=
 };=0A=
 =0A=
 /*=0A=
@@ -94,6 +118,233 @@ static USBPortOps usbredir_server_port_ops =3D {=0A=
 static USBBusOps usbredir_server_bus_ops =3D {=0A=
 };=0A=
 =0A=
+/*=0A=
+ * usbredirparser I/O and logging callbacks=0A=
+ */=0A=
+=0A=
+static void usbredir_server_log(void *priv, int level, const char *msg)=0A=
+{=0A=
+    switch (level) {=0A=
+    case usbredirparser_error:=0A=
+        error_report(TYPE_USB_REDIR_SERVER ": %s", msg);=0A=
+        break;=0A=
+    case usbredirparser_warning:=0A=
+        warn_report(TYPE_USB_REDIR_SERVER ": %s", msg);=0A=
+        break;=0A=
+    default:=0A=
+        trace_usbredir_server_log(msg);=0A=
+        break;=0A=
+    }=0A=
+}=0A=
+=0A=
+static int usbredir_server_read(void *priv, uint8_t *data, int count)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    if (s->read_buf_size < count) {=0A=
+        count =3D s->read_buf_size;=0A=
+    }=0A=
+=0A=
+    memcpy(data, s->read_buf, count);=0A=
+=0A=
+    s->read_buf_size -=3D count;=0A=
+    if (s->read_buf_size) {=0A=
+        s->read_buf +=3D count;=0A=
+    } else {=0A=
+        s->read_buf =3D NULL;=0A=
+    }=0A=
+=0A=
+    return count;=0A=
+}=0A=
+=0A=
+static gboolean usbredir_server_write_unblocked(void *do_not_use,=0A=
+                                                GIOCondition cond,=0A=
+                                                void *opaque)=0A=
+{=0A=
+    USBRedirServer *s =3D opaque;=0A=
+=0A=
+    s->watch =3D 0;=0A=
+    usbredirparser_do_write(s->parser);=0A=
+=0A=
+    return G_SOURCE_REMOVE;=0A=
+}=0A=
+=0A=
+static int usbredir_server_write(void *priv, uint8_t *data, int count)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+    int ret;=0A=
+=0A=
+    if (!qemu_chr_fe_backend_open(&s->cs)) {=0A=
+        return 0;=0A=
+    }=0A=
+=0A=
+    /*=0A=
+     * Re-entry guard. The chain is:=0A=
+     *   do_write() -> this -> qemu_chr_fe_write() -> chardev feeds us=0A=
+     *   -> do_read() -> a callback -> do_write() again=0A=
+     *=0A=
+     * The second do_write() would walk the same buffer queue as the=0A=
+     * first. Returning 0 means "sent nothing", so the buffer stays for=0A=
+     * the outer one to send.=0A=
+     */=0A=
+    if (s->in_write) {=0A=
+        trace_usbredir_server_write_recursion();=0A=
+        return 0;=0A=
+    }=0A=
+    s->in_write =3D true;=0A=
+=0A=
+    ret =3D qemu_chr_fe_write(&s->cs, data, count);=0A=
+    if (ret < count) {=0A=
+        if (!s->watch) {=0A=
+            s->watch =3D qemu_chr_fe_add_watch(&s->cs, G_IO_OUT | G_IO_HUP=
,=0A=
+                                             usbredir_server_write_unblock=
ed,=0A=
+                                             s);=0A=
+        }=0A=
+        if (ret < 0) {=0A=
+            ret =3D 0;=0A=
+        }=0A=
+    }=0A=
+=0A=
+    s->in_write =3D false;=0A=
+=0A=
+    return ret;=0A=
+}=0A=
+=0A=
+/* The remote host greets us once the socket is up. */=0A=
+static void usbredir_server_hello(void *priv,=0A=
+                                  struct usb_redir_hello_header *hello)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    s->host_connected =3D true;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Parser setup and teardown=0A=
+ */=0A=
+=0A=
+static void usbredir_server_create_parser(USBRedirServer *s)=0A=
+{=0A=
+    uint32_t caps[USB_REDIR_CAPS_SIZE] =3D {};=0A=
+=0A=
+    s->parser =3D usbredirparser_create();=0A=
+    if (!s->parser) {=0A=
+        error_report(TYPE_USB_REDIR_SERVER ": failed to create usbredirpar=
ser");=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    s->parser->priv =3D s;=0A=
+    s->parser->log_func =3D usbredir_server_log;=0A=
+    s->parser->read_func =3D usbredir_server_read;=0A=
+    s->parser->write_func =3D usbredir_server_write;=0A=
+=0A=
+    /* Callbacks for messages the remote host sends to us */=0A=
+    s->parser->hello_func =3D usbredir_server_hello;=0A=
+=0A=
+    /* Capabilities: 64-bit IDs, connect_device_version, ep_info sizes */=
=0A=
+    usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version=
);=0A=
+    usbredirparser_caps_set_cap(caps, usb_redir_cap_ep_info_max_packet_siz=
e);=0A=
+    usbredirparser_caps_set_cap(caps, usb_redir_cap_64bits_ids);=0A=
+=0A=
+    /*=0A=
+     * In USB the host is the side that starts every transfer; a device=0A=
+     * only answers. The exported device sits on our bus and we issue=0A=
+     * its transfers, so for that device we are the host. That is what=0A=
+     * fl_usb_host means, and why the side that exports a device sets it.=
=0A=
+     *=0A=
+     * The other QEMU does not drive the device, it receives it. In this=
=0A=
+     * protocol that makes it the client, and redirect.c leaves the flag=
=0A=
+     * clear.=0A=
+     *=0A=
+     * Without it the library refuses to send device_connect.=0A=
+     */=0A=
+    usbredirparser_init(s->parser, USBREDIR_SERVER_VERSION,=0A=
+                        caps, USB_REDIR_CAPS_SIZE,=0A=
+                        usbredirparser_fl_usb_host);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_destroy_parser(USBRedirServer *s)=0A=
+{=0A=
+    s->host_connected =3D false;=0A=
+=0A=
+    g_clear_handle_id(&s->watch, g_source_remove);=0A=
+=0A=
+    if (s->parser) {=0A=
+        usbredirparser_destroy(s->parser);=0A=
+        s->parser =3D NULL;=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_chardev_close_bh(void *opaque)=0A=
+{=0A=
+    usbredir_server_destroy_parser(opaque);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * chardev callbacks=0A=
+ */=0A=
+=0A=
+static int usbredir_server_chardev_can_read(void *opaque)=0A=
+{=0A=
+    USBRedirServer *s =3D opaque;=0A=
+=0A=
+    if (!s->parser) {=0A=
+        return 0;=0A=
+    }=0A=
+    /* usbredirparser_do_read() consumes everything we hand it */=0A=
+    return 1 * MiB;=0A=
+}=0A=
+=0A=
+static void usbredir_server_chardev_read(void *opaque, const uint8_t *buf,=
=0A=
+                                         int size)=0A=
+{=0A=
+    USBRedirServer *s =3D opaque;=0A=
+=0A=
+    if (!s->parser) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    /* No recursion allowed */=0A=
+    assert(s->read_buf =3D=3D NULL);=0A=
+=0A=
+    s->read_buf =3D buf;=0A=
+    s->read_buf_size =3D size;=0A=
+=0A=
+    usbredirparser_do_read(s->parser);=0A=
+    /* do_read() ran our callbacks; flush whatever replies they queued */=
=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_chardev_event(void *opaque,=0A=
+                                          QEMUChrEvent event)=0A=
+{=0A=
+    USBRedirServer *s =3D opaque;=0A=
+=0A=
+    switch (event) {=0A=
+    case CHR_EVENT_OPENED:=0A=
+        trace_usbredir_server_chardev_open();=0A=
+        /*=0A=
+         * A close event only schedules chardev_close_bh. If it has not=0A=
+         * run yet, it would destroy the parser we are about to create,=0A=
+         * so run it now and cancel it.=0A=
+         */=0A=
+        usbredir_server_chardev_close_bh(s);=0A=
+        qemu_bh_cancel(s->chardev_close_bh);=0A=
+        usbredir_server_create_parser(s);=0A=
+        break;=0A=
+    case CHR_EVENT_CLOSED:=0A=
+        trace_usbredir_server_chardev_close();=0A=
+        qemu_bh_schedule(s->chardev_close_bh);=0A=
+        break;=0A=
+    case CHR_EVENT_BREAK:=0A=
+    case CHR_EVENT_MUX_IN:=0A=
+    case CHR_EVENT_MUX_OUT:=0A=
+    case CHR_EVENT_RESIZE:=0A=
+        break;=0A=
+    }=0A=
+}=0A=
+=0A=
 /*=0A=
  * Device registration=0A=
  */=0A=
@@ -102,14 +353,46 @@ static void usbredir_server_realize(DeviceState *dev,=
 Error **errp)=0A=
 {=0A=
     USBRedirServer *s =3D USB_REDIR_SERVER(dev);=0A=
 =0A=
+    if (!qemu_chr_fe_backend_connected(&s->cs)) {=0A=
+        error_setg(errp,=0A=
+                   TYPE_USB_REDIR_SERVER ": 'chardev' property must be set=
");=0A=
+        return;=0A=
+    }=0A=
+=0A=
     /* One port: usbredir carries a single device. */=0A=
     usb_bus_new(&s->bus, sizeof(s->bus), &usbredir_server_bus_ops, dev);=
=0A=
     s->bus.auto_hub =3D false;=0A=
     usb_register_port(&s->bus, &s->port, s, 0, &usbredir_server_port_ops,=
=0A=
                       USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL |=0A=
                       USB_SPEED_MASK_HIGH);=0A=
+=0A=
+    s->chardev_close_bh =3D qemu_bh_new_guarded(usbredir_server_chardev_cl=
ose_bh,=0A=
+                                              s, &dev->mem_reentrancy_guar=
d);=0A=
+=0A=
+    qemu_chr_fe_set_handlers(&s->cs,=0A=
+                             usbredir_server_chardev_can_read,=0A=
+                             usbredir_server_chardev_read,=0A=
+                             usbredir_server_chardev_event,=0A=
+                             NULL, s, NULL, true);=0A=
+}=0A=
+=0A=
+static void usbredir_server_unrealize(DeviceState *dev)=0A=
+{=0A=
+    USBRedirServer *s =3D USB_REDIR_SERVER(dev);=0A=
+=0A=
+    qemu_chr_fe_deinit(&s->cs, true);=0A=
+    usbredir_server_destroy_parser(s);=0A=
+=0A=
+    if (s->chardev_close_bh) {=0A=
+        qemu_bh_delete(s->chardev_close_bh);=0A=
+        s->chardev_close_bh =3D NULL;=0A=
+    }=0A=
 }=0A=
 =0A=
+static const Property usbredir_server_props[] =3D {=0A=
+    DEFINE_PROP_CHR("chardev", USBRedirServer, cs),=0A=
+};=0A=
+=0A=
 /*=0A=
  * The link to the remote host is a chardev, and we cannot migrate=0A=
  * that. So this device cannot be migrated either.=0A=
@@ -125,8 +408,10 @@ static void usbredir_server_class_init(ObjectClass *kl=
ass, const void *data)=0A=
 =0A=
     dc->desc =3D "USB Redirection Server";=0A=
     dc->realize =3D usbredir_server_realize;=0A=
+    dc->unrealize =3D usbredir_server_unrealize;=0A=
     dc->vmsd =3D &vmstate_usbredir_server;=0A=
     set_bit(DEVICE_CATEGORY_USB, dc->categories);=0A=
+    device_class_set_props(dc, usbredir_server_props);=0A=
 }=0A=
 =0A=
 static const TypeInfo usbredir_server_types[] =3D {=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index 80ead23358..d141661673 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -393,3 +393,9 @@ aspeed_udc_handle_data(int ep_nr, const char *dir, uint=
32_t iov, int ep_idx) "ep=0A=
 aspeed_udc_ep_data_in(unsigned ep, uint32_t rptr, uint32_t wptr, uint32_t =
iov) "ep %u, rptr %u, wptr %u, iov %u"=0A=
 aspeed_udc_ep_data_out(unsigned ep, uint32_t wptr, uint32_t avail, uint32_=
t iov) "ep %u, wptr %u, avail %u, iov %u"=0A=
 aspeed_udc_ep_ack(unsigned ep) "ep %u"=0A=
+=0A=
+# redirect-server.c=0A=
+usbredir_server_chardev_open(void) "chardev opened"=0A=
+usbredir_server_chardev_close(void) "chardev closed"=0A=
+usbredir_server_write_recursion(void) "recursive write, leaving it queued"=
=0A=
+usbredir_server_log(const char *msg) "%s"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467868.1676971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHc-0005SU-TM; Mon, 02 Nov 2026 09:24:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467868.1676971; Mon, 02 Nov 2026 09:24:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHc-0005PS-IO; Mon, 02 Nov 2026 09:24:52 +0000
Received: by outflank-mailman (input) for mailman id 1467868;
 Mon, 02 Nov 2026 09:22:34 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFO-0003UH-Hz
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFN-0071w6-Ue
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:33 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85653-8faa-0a2a0a5109dd-0a2a45098784-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:33 +0100
Received: from [52.101.127.134]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85656-be1a-0a2a45090019-34657f86192f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:33 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SI2PR06MB5265.apcprd06.prod.outlook.com (2603:1096:4:1e4::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:28 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=vbBDUxjPYk4FZEUfjuvDWclP4/c7vWsZ7Y3ONkb5HIltLuG5pbSc3rZeaMZ6Qpwslsflh175xtBFeaB1cBCM0pZ3HAzZD1gZnBOTPzgHryoPyi5EvjTsbk0+2bS6JOX6ulE7Qz6/akeKTIVGUmFBAqcL+OsjaerqvDQdKfviQijRzFIi7udyEpAoyL8w4Z/S6TMHXHfteO5visdve/ChWOeq2s+/sCGMaZWayzzj5Mb6EiTSuwgETEysGNlCkbk8WPDF8xeJGIrqEVVru1+FK824gHkAmfAL256IqFFX8HrqIAtuhoKPHM05E0y8Xo6CYFBMA3f/mik6pHowLXpgDQ==
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=exLkX8H4fGpbqCwt9jjNuQExHPekR56Qs3ZX1JPW854=;
 b=ahjeHWZvR8saddEFG+vC6oAhgPDn+eCEMC+DHntimYSL4QT7ssIhHlM8uiygRZxF2Hoq3kyWcMFpstqa7JipoLfUWnu0ux+p4bCYzi62gE0OFCSo5LND9yzNZ/KArjF9MxvmeAJMuxmBLN1jnmJAvnfkJbAuXyKj7fs9iRKcy2WKuLYuyoDXGLR26T+pwSui6j5UABp4WX4LBLSGVqQ6GXVgb8vQ31ALyk9dDHP/KkeJmzdZU/+u9qO4ikPBS7IUa5gFKu+SrWgYPio8yyJgtjJsHlwEoQLIgnp6tXuOg97hJKNugPZxLgemppX89jKFtHyE/0KCIEYDXl/Q5Fu8JA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=exLkX8H4fGpbqCwt9jjNuQExHPekR56Qs3ZX1JPW854=;
 b=iqnJU13b6atU1p7SJpN052LB3JX2WjwGVJ0w/Cm2VcMnwcCWTBnCYAIeHViJVE/aRzioEE2BB23plijOMFHg1uplQ5KcGQQ8mHk6ARstpJruk2Wq7nkTbjUC88qEDLg/ISdLdGI9+mNdW+OJ4LNhvzmV4FS9PPtMMPsXGMRBglDKXTBlN3/wAT+yMFO5G+BR8qIptNtzgu33tfMPEfWbx6YMaoMsgy2VKaScv/JBnkwQLOEyf7XEZXDqzRRLp3EKbFsSqKKFyE8vEOkNccez6bv0eUdP6UcSBjvhb3MG92CLPxYRJhUEm37zwZus1g+qf6GpKoUmlPlwGxBGG7tHJw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 14/18] hw/usb/redirect-server: Implement control transfers
Thread-Topic: [PATCH v8 14/18] hw/usb/redirect-server: Implement control
 transfers
Thread-Index: AQHdaquqR4kcpf7BW0WY0PXfmYQ09A==
Date: Mon, 2 Nov 2026 09:22:23 +0000
Message-ID: <20261102092201.1729245-15-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SI2PR06MB5265:EE_
x-ms-office365-filtering-correlation-id: 407bc151-97b6-4222-3408-08df38c2d086
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|6133799003|10067099003|18002099003|22082099003|921020|38070700021|56012099006|5023799004|261021123027099003|261021121427099003|261021135927099003|261026135527099003|261022105027099003|261026140227099003|261022113327099003|261026121527099003|261026130827099003|261022115727099003|261022075727099003|261009223027099003|261009221227099003|261021133027099003|261028144727099003|261021130227099003;
x-microsoft-antispam-message-info:
 sUNE+eYpCe33Gex+K983JFfxFMP1TgSeq7f0nAfkf3Wm+4wr9PdYH2cgFGEWwhGJ4Ocp2yMmIJr0SUkLfZ4fbduiKYh20NdS07a6TXMbTY36O91vBgzyJ5gworVujR9nn72YNBsHw6NHNtsg0cKye6flj1ZVR1lyueLa59sy0bTY+d2RhsW8eQGXfgPSB9NRsZtuxPqsP/su0g4/M1NYSlm1qPqD2pNZ4c7r5WkL6M5fJKmYOUKF3Cs0tOrZVmcepi/Zu1ebxbkZclOpiNoTN2nwjeI4bPly6gfkdeapYI/tDEN9pT0sK5mPdV1NKnbkqmjk9vKwRPw4TBsaiiKfZcBLThKESkT8af2BgCDizFcLy3Gg5x8S+z03enMqgusb1nL3gJl94oGHSWJjKXNu975ILgOvCjBnbws8jJQPEBfnqZhjny+WWVBrluh07Q4fsUllnY5jMUJjRXjitMCFqerHMMiA9QoyaSvjsb9CWi3a2RCY4Xd8CuPPncVWvjXtGSLCBu+V0DoLgrqLlr7JGgFeziyLoGszr9B/qb023+40Zm54CgI4dDNa5LV7QuO+IJ2uecjA286Kwx9aiDiEeRIBmXJtGra6kn43D0wzLoQk698eHxt1QFEIyF1Xe9sOqrsWTgnImizp0welgtAGiJ9FAWFR1pOdYzOtFPoiWIfldqnojttL7adFM4BXD5CwZZ3QU0qMJrxFBdWKP+9ddcAzgfOW5TI66pmZ+n+HOLMQRTNJVG69eig3gHeGVfRA
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(6133799003)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(5023799004)(261021123027099003)(261021121427099003)(261021135927099003)(261026135527099003)(261022105027099003)(261026140227099003)(261022113327099003)(261026121527099003)(261026130827099003)(261022115727099003)(261022075727099003)(261009223027099003)(261009221227099003)(261021133027099003)(261028144727099003)(261021130227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?8qDUsVCSa7fzyioBjv4a1JlMOX0rE3qOUZzsMC4HEi9pc7G0PZC2TESIeE?=
 =?iso-8859-1?Q?nvcEWM+7y/RGz5/QUpDd2tMwY9BTTX9IuIyIxJ/scXWV1k3yIAYhMHSUK0?=
 =?iso-8859-1?Q?C8UVO2YHVft+K1sO9ytqflVF+dlNR4TjvdSGJ5CbfAYDFJAogDzcAJ/4w+?=
 =?iso-8859-1?Q?R861R0P7INHHV2EpmlgZydEVKF6bvG6n7dQ3XuuN+wIztVTbhjg3PCI+R9?=
 =?iso-8859-1?Q?W2pzZa5uLVmtOaONdM6f4XTjjaTAHW7+moDc4Wd8q9O5Rk1/ooTJsFzKMn?=
 =?iso-8859-1?Q?KQN1sSTT5oXg03HiL2/EEJ5OEcGRKJcTEeASulJDBo48EM7j+PlwVpR839?=
 =?iso-8859-1?Q?9rL5NVSIAyJ9/DfRjm+LaxoILqjkYfkChN7A3gnh7Lz05veoHdmRfO8q2N?=
 =?iso-8859-1?Q?SvPUa1/7gpFitdAW3xXKt0RdgV2xTD3TM/NLz/LPMsIR/xriOZka/yZOZx?=
 =?iso-8859-1?Q?dVXXcMbUrk3OZt0QLbHj/u5PVkADbQVQ3i1gDWNqG9Sqt6MZET4mkrNRno?=
 =?iso-8859-1?Q?hPOLBaxP0rtAV7HPF5l5LnSBNKGg1qHo1jwPWiRuhIlh0+3J03ZyCjbOpw?=
 =?iso-8859-1?Q?2T9uiMp9mRsRzdEk3CPpSVK2V5nukjNduraoz6DCKIBu3lls4mmzNfgvbN?=
 =?iso-8859-1?Q?LF06vuKon0bvjizfL8mYwDY3dkkYSJrxgsHPlD1UHUOWf40uDxqhC14KFg?=
 =?iso-8859-1?Q?6wq8nWKC6d0AW/KD946MkAFqerPfUCnZ5oA3URgRqHQnBVN3sYLFtxIbCR?=
 =?iso-8859-1?Q?23SycDOaSVCdsc8Mo7vcySb7dhYDxFpUWyGtimQlff8Y4mBBz5ArV14peG?=
 =?iso-8859-1?Q?5sIBA/ASEbdtWuZ0HUfn3L584ACQuA7bmR9bzGmmNImjzD46Jg9DQ8/elL?=
 =?iso-8859-1?Q?LxFALhfXE/PoJI3oWkFmGZOc91TI8B4Yed/55XKsG/yBk0VwufO0gTlJyy?=
 =?iso-8859-1?Q?c6l78lqOSyVKPGNr8PZI3KOb5yqQfqVuvbsR4Rq7dizJ6ad26LrzyxZ2s5?=
 =?iso-8859-1?Q?tfXDGtBJHAEKapTZclboU/uIaX0+EWkgnwa5FIigWJuzNm/FYEZ0ap5+F2?=
 =?iso-8859-1?Q?AFuXTGER18sroa+ubPZkB6oM9/7Jg0wD04awAavpfAs2ScRRDgPfrUCqIA?=
 =?iso-8859-1?Q?xZ+guARoNUJmexPA2kW+ieLv5HkFJAzspuRRyRPOahEX3AAxBQPgPpDpjR?=
 =?iso-8859-1?Q?hpIRgL+aei8oQKO0fgPD8gV+I9YHDOfaik/yB82kP1ZCOYQfTkSFSPzJXQ?=
 =?iso-8859-1?Q?yPtzmbCGxkz+5MjlMu1tLe8fvDitNL48ZkxKlL48/6wi25fymCiOwLuL9C?=
 =?iso-8859-1?Q?u1mX47ou1k/tpzri/Xh1yh0lLaLa8qguxPaGQXQ68U8eAvZhCkK9FW5YGB?=
 =?iso-8859-1?Q?n+lUKcguPEmYspY/7SrVROVMC5P4Ko8bSaLOmHWMiERong4Bc8cijgwi7f?=
 =?iso-8859-1?Q?8zoJACpiZmRQNGU/Xeyvbb1OGGHnZvFZ1LcyFkPfMj2b8hqNhAPA8WBDfn?=
 =?iso-8859-1?Q?fk17RuAuJW+kJMXLSjFpSSGN3fn8Jgy/y1zQzxUSj+th7Xdlb7NWvincMH?=
 =?iso-8859-1?Q?Tx7jE6n0d3XiJGkJjKcAeKxFKwYL48+5DrcfHd3Xq0OYakoCDi/5yBhATV?=
 =?iso-8859-1?Q?WGP2XnG1Zh3xS0LFV5Zntknoq0k/zMRP4Ij+Tg4omYZFcCf0rOzIrUie0R?=
 =?iso-8859-1?Q?7BUWUD6EqoveHbYQ2vo+GDhtUWHHaAASovuhI31wKnS8/nzfrKGIrJwbQQ?=
 =?iso-8859-1?Q?PcUKaIp+/Q/IQPKmZLhZmqAdnaaLHtwMCewHX0jguwcH5EUzq636ry6Olw?=
 =?iso-8859-1?Q?pY1R2j2ckg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	Cg0EHwm0RA7Y/eC+34uRNNM5YhcXxnE6UoeM7pj4p1qb5wf30m77+zL3pgAIFFpD3680TxM3UsgjNAogJ8j5rWqe+wZ4b5V10CItWeDV4Jo9v+ar+/zrZGFC/D/ZobNaakJPJ5dCoHRc3od1MkdS8qgo1QeuEPsqPNDd0cTJmdUDe9jOUj/QYtJxye8oja2SGBV7j/y+DA1hQTwfkRZBKcR7AQlq/Mrmc/2jjor5oQBCK+HgqCbxWyA9jGM7fFdGrO1+FtIROB//Rdq76AalVqi2zYfCvij9zoFPbPnKGKXSB3Hx13wYaZHjef4SRYb3V4fpMfgnDV6kO5R/BgkUdg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 407bc151-97b6-4222-3408-08df38c2d086
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:23.1856
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 7f1Xh0qaKKd5KVu03/ShuUf1DtWcjC54/L3cAFMavnbISXawNoT5kVmQ58/hI74NkrrlatLwe+/vCwUSigUlTaCPI9pfv5WfISj2MYAyfbw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR06MB5265
X-purgate-ID: tlsNG-bad1c0/1793611353-BC8C9034-FAAEDC3E/0/0
X-purgate-type: clean
X-purgate-size: 41475

A usbredir control_packet carries a whole control transfer, so hand it=0A=
to the device as one packet with the eight setup bytes in=0A=
USBPacket::parameter.=0A=
=0A=
The device may answer later, so we have to remember the packets we=0A=
sent. Each one stays on a list until it comes back. We drop the whole=0A=
list on a bus reset or a chardev close. When the host asks us to=0A=
cancel a packet, we answer it and drop it. If it is no longer on the=0A=
list we already answered it, so we send nothing.=0A=
=0A=
A device can answer USB_RET_NAK, which means the endpoint has nothing=0A=
right now, not that the transfer failed. Keep the request and send it=0A=
again when the device wakes the endpoint. Not every device wakes it, so=0A=
a timer asks again as well.=0A=
=0A=
Every request is checked before we act on it, and one we turn away is=0A=
still answered, so the host never waits for ever.=0A=
=0A=
usbredir has its own messages for set_configuration, get_configuration,=0A=
set_alt_setting and get_alt_setting. Each one is a control transfer, so=0A=
run it like one and send back the status message.=0A=
=0A=
usbredir wants an ep_info message. It says what kind each endpoint is,=0A=
how big its packets are and which interface it belongs to. QEMU cannot=0A=
tell us. It only knows after it has read the device's descriptors, and=0A=
it never reads them for a device that just forwards transfers. So we=0A=
read them ourselves: the configuration descriptor passes through us on=0A=
its way to the host.=0A=
=0A=
A device can offer several configurations, and an interface several=0A=
alternate settings, each with its own endpoints. Keep every=0A=
configuration descriptor, build the table from the one the host=0A=
selected, and send a fresh ep_info when that selection changes, so=0A=
ep_info never describes an endpoint that is not there.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 811 ++++++++++++++++++++++++++++++++++++++-=0A=
 hw/usb/trace-events      |  11 +=0A=
 2 files changed, 821 insertions(+), 1 deletion(-)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index e207f5a7eb..55a1f79623 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -56,6 +56,7 @@=0A=
 #include "qemu/main-loop.h"=0A=
 #include "qemu/module.h"=0A=
 #include "migration/vmstate.h"=0A=
+#include "qemu/timer.h"=0A=
 #include "qemu/cutils.h"=0A=
 #include "hw/core/sysbus.h"=0A=
 #include "hw/usb/usb.h"=0A=
@@ -63,9 +64,11 @@=0A=
 #include "qom/object.h"=0A=
 =0A=
 #include <usbredirparser.h>=0A=
+#include <usbredirproto.h>=0A=
 =0A=
 #include "hw/core/qdev-properties.h"=0A=
 #include "hw/core/qdev-properties-system.h"=0A=
+#include "desc.h"=0A=
 #include "trace.h"=0A=
 =0A=
 #define TYPE_USB_REDIR_SERVER "x-usb-redir-server"=0A=
@@ -73,6 +76,83 @@ OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SER=
VER)=0A=
 =0A=
 #define USBREDIR_SERVER_VERSION "qemu " TYPE_USB_REDIR_SERVER " " QEMU_VER=
SION=0A=
 =0A=
+/*=0A=
+ * The usbredir ep_info message has one slot per endpoint and direction.=
=0A=
+ * Index 0-15 are the OUT endpoints, 16-31 the IN ones.=0A=
+ */=0A=
+#define USBREDIR_SERVER_MAX_EP 32=0A=
+#define USBREDIR_SERVER_EP_IN_BASE 16=0A=
+=0A=
+/*=0A=
+ * Ask again this often after an endpoint answered NAK. Most devices=0A=
+ * wake the endpoint when data arrives, and then we ask at once. This=0A=
+ * timer is for the devices that do not.=0A=
+ */=0A=
+#define USBREDIR_SERVER_RETRY_MS 1000=0A=
+=0A=
+#define USBREDIR_SERVER_CTRL 0=0A=
+=0A=
+/* Which message answers the host when a control transfer ends. */=0A=
+typedef enum {=0A=
+    USBREDIR_SERVER_REPLY_CONTROL,=0A=
+    USBREDIR_SERVER_REPLY_CONFIG,=0A=
+    USBREDIR_SERVER_REPLY_ALT,=0A=
+} USBRedirServerReply;=0A=
+=0A=
+/* What the device said when usbredir_server_ask_device() asked it. */=0A=
+typedef enum {=0A=
+    /* It took the request and will call back. */=0A=
+    USBREDIR_SERVER_ASK_ASYNC,=0A=
+    /* It has nothing now, so the request went back on the list. */=0A=
+    USBREDIR_SERVER_ASK_NAK,=0A=
+    /* It answered, and the request is freed. */=0A=
+    USBREDIR_SERVER_ASK_COMPLETE,=0A=
+} USBRedirServerAsk;=0A=
+=0A=
+typedef struct USBRedirServerPkt {=0A=
+    USBPacket pkt;=0A=
+=0A=
+    /* Kept for the usbredir response. */=0A=
+    struct usb_redir_control_packet_header ctrl_hdr;=0A=
+=0A=
+    /*=0A=
+     * The IOV points here. IN data lands in it, OUT data is copied in.=0A=
+     * Allocated and freed with the packet.=0A=
+     */=0A=
+    uint8_t *data;=0A=
+=0A=
+    /* Every request is on this list. */=0A=
+    QTAILQ_ENTRY(USBRedirServerPkt) inflight_link;=0A=
+=0A=
+    /* Only a request that must wait is on this list. */=0A=
+    QTAILQ_ENTRY(USBRedirServerPkt) waiting_link;=0A=
+=0A=
+    USBRedirServerReply reply;=0A=
+    uint64_t redir_id;=0A=
+    int ep_idx;=0A=
+    int type;=0A=
+} USBRedirServerPkt;=0A=
+=0A=
+typedef struct USBRedirServerEp {=0A=
+    USBRedirServer *s;=0A=
+=0A=
+    /*=0A=
+     * Requests the device has not taken, oldest first. A new request=0A=
+     * goes on the end. We always ask about the first one, and a NAK=0A=
+     * puts it back on the front, so the order never changes.=0A=
+     */=0A=
+    QTAILQ_HEAD(, USBRedirServerPkt) waiting;=0A=
+=0A=
+    /* Asks again for a device that does not wake the endpoint. */=0A=
+    QEMUTimer *retry;=0A=
+=0A=
+    uint16_t max_packet;=0A=
+    uint8_t interval;=0A=
+    uint8_t iface;=0A=
+    uint8_t type;=0A=
+    uint8_t idx;=0A=
+} USBRedirServerEp;=0A=
+=0A=
 struct USBRedirServer {=0A=
     SysBusDevice parent_obj;=0A=
 =0A=
@@ -93,8 +173,22 @@ struct USBRedirServer {=0A=
     guint watch;=0A=
     bool host_connected;=0A=
     bool device_announced;=0A=
+=0A=
+    /* Every request the host is still waiting for an answer to. */=0A=
+    QTAILQ_HEAD(, USBRedirServerPkt) inflight;=0A=
+    uint64_t next_id;=0A=
+=0A=
+    USBRedirServerEp ep[USBREDIR_SERVER_MAX_EP];=0A=
+    uint8_t alt_setting[USB_MAX_INTERFACES];=0A=
+    GHashTable *config_descs;=0A=
+    uint8_t config_value;=0A=
 };=0A=
 =0A=
+static void usbredir_server_pkt_free(USBRedirServer *s, USBRedirServerPkt =
*rp);=0A=
+static void usbredir_server_stop_transfers(USBRedirServer *s);=0A=
+static void usbredir_server_send_cancelled(USBRedirServer *s,=0A=
+                                           USBRedirServerPkt *rp);=0A=
+=0A=
 /*=0A=
  * The device is whatever USBDevice the user plugged into our port with=0A=
  * "-device <device>,bus=3D<id>.0". NULL until then.=0A=
@@ -105,9 +199,212 @@ static USBDevice *usbredir_server_device(USBRedirServ=
er *s)=0A=
 }=0A=
 =0A=
 /*=0A=
- * Device announcement=0A=
+ * Descriptor snooping and device announcement=0A=
  */=0A=
 =0A=
+static int usbredir_server_ep_index(uint8_t addr)=0A=
+{=0A=
+    int ep_nr =3D addr & 0x0f;=0A=
+=0A=
+    return (addr & USB_DIR_IN) ? ep_nr + USBREDIR_SERVER_EP_IN_BASE : ep_n=
r;=0A=
+}=0A=
+=0A=
+static void usbredir_server_clear_ep_table(USBRedirServer *s)=0A=
+{=0A=
+    int i;=0A=
+=0A=
+    for (i =3D 0; i < USBREDIR_SERVER_MAX_EP; i++) {=0A=
+        s->ep[i].max_packet =3D 0;=0A=
+        s->ep[i].interval =3D 0;=0A=
+        s->ep[i].iface =3D 0;=0A=
+        s->ep[i].type =3D USB_ENDPOINT_XFER_INVALID;=0A=
+    }=0A=
+}=0A=
+=0A=
+static uint8_t usbredir_server_ep_status(USBRedirServer *s, uint8_t addr,=
=0A=
+                                         uint8_t want_type)=0A=
+{=0A=
+    bool is_ctrl =3D want_type =3D=3D USB_ENDPOINT_XFER_CONTROL;=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    int idx =3D usbredir_server_ep_index(addr);=0A=
+    int ep_nr =3D addr & 0x0f;=0A=
+=0A=
+    if (!s->host_connected || !device || !device->attached) {=0A=
+        return usb_redir_ioerror;=0A=
+    }=0A=
+=0A=
+    /* Endpoint 0 carries control transfers, and nothing else. */=0A=
+    if (ep_nr =3D=3D 0 && !is_ctrl) {=0A=
+        return usb_redir_inval;=0A=
+    }=0A=
+=0A=
+    /* An absent endpoint has type INVALID, which never matches. */=0A=
+    if (!is_ctrl && s->ep[idx].type !=3D want_type) {=0A=
+        return usb_redir_inval;=0A=
+    }=0A=
+=0A=
+    return usb_redir_success;=0A=
+}=0A=
+=0A=
+static void usbredir_server_record_endpoint(USBRedirServer *s,=0A=
+                                            const USBDescriptor *desc,=0A=
+                                            uint8_t iface)=0A=
+{=0A=
+    uint8_t addr;=0A=
+    int ep_nr;=0A=
+    int idx;=0A=
+=0A=
+    addr =3D desc->u.endpoint.bEndpointAddress;=0A=
+    ep_nr =3D addr & 0x0f;=0A=
+    idx =3D usbredir_server_ep_index(addr);=0A=
+    if (ep_nr < 1 || idx >=3D USBREDIR_SERVER_MAX_EP) {=0A=
+        trace_usbredir_server_endpoint_dropped(addr);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    s->ep[idx].type =3D desc->u.endpoint.bmAttributes & 0x03;=0A=
+    s->ep[idx].max_packet =3D (desc->u.endpoint.wMaxPacketSize_hi << 8) |=
=0A=
+                            desc->u.endpoint.wMaxPacketSize_lo;=0A=
+    s->ep[idx].interval =3D desc->u.endpoint.bInterval;=0A=
+    s->ep[idx].iface =3D iface;=0A=
+=0A=
+    /*=0A=
+     * bInterval says how often to poll this endpoint. Pass on what the=0A=
+     * descriptor said, but never 0 for an interrupt or isochronous=0A=
+     * endpoint: redirect.c throws the whole device away when it sees 0,=
=0A=
+     * so store 1 instead.=0A=
+     */=0A=
+    if (s->ep[idx].interval =3D=3D 0 &&=0A=
+        (s->ep[idx].type =3D=3D USB_ENDPOINT_XFER_INT ||=0A=
+         s->ep[idx].type =3D=3D USB_ENDPOINT_XFER_ISOC)) {=0A=
+        s->ep[idx].interval =3D 1;=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_save_config_desc(USBRedirServer *s,=0A=
+                                             const uint8_t *data, int len)=
=0A=
+{=0A=
+    const USBDescriptor *conf =3D (const USBDescriptor *)data;=0A=
+    uint16_t total;=0A=
+=0A=
+    if (len < 4) {=0A=
+        return;=0A=
+    }=0A=
+    total =3D lduw_le_p(data + 2);=0A=
+=0A=
+    /*=0A=
+     * The host reads this twice. The first read is a few bytes, just to=
=0A=
+     * learn the length from wTotalLength. The second read has the whole=
=0A=
+     * descriptor.=0A=
+     *=0A=
+     * A configuration descriptor is 9 bytes, so a shorter one is broken.=
=0A=
+     */=0A=
+    if (total < 9 || len < total) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    g_hash_table_insert(s->config_descs,=0A=
+                        GUINT_TO_POINTER(conf->u.config.bConfigurationValu=
e),=0A=
+                        g_memdup2(data, total));=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Some devices only forward transfers. They never read their own=0A=
+ * descriptors, so the USB core leaves their endpoint types at=0A=
+ * USB_ENDPOINT_XFER_INVALID. Sending that in ep_info does not work: the=
=0A=
+ * host sees type 255 and will not move data. So read the configuration=0A=
+ * descriptor and fill the tables here.=0A=
+ *=0A=
+ * Only what the host selected counts. A device can offer several=0A=
+ * configurations, and an interface several alternate settings. The=0A=
+ * endpoints of the ones not chosen are not there.=0A=
+ */=0A=
+static void usbredir_server_build_ep_table(USBRedirServer *s)=0A=
+{=0A=
+    const USBDescriptor *desc;=0A=
+    const uint8_t *config;=0A=
+    bool active =3D false;=0A=
+    uint8_t iface =3D 0;=0A=
+    uint8_t alt;=0A=
+    int i =3D 0;=0A=
+    int total;=0A=
+=0A=
+    usbredir_server_clear_ep_table(s);=0A=
+=0A=
+    config =3D g_hash_table_lookup(s->config_descs,=0A=
+                                 GUINT_TO_POINTER(s->config_value));=0A=
+    if (!config) {=0A=
+        trace_usbredir_server_config_not_found(=0A=
+            s->config_value, g_hash_table_size(s->config_descs));=0A=
+        return;=0A=
+    }=0A=
+    total =3D lduw_le_p(config + 2);=0A=
+=0A=
+    while (i + 2 <=3D total) {=0A=
+        desc =3D (const USBDescriptor *)(config + i);=0A=
+=0A=
+        if (desc->bLength < 2) {=0A=
+            trace_usbredir_server_bad_descriptor(i, desc->bLength,=0A=
+                                                 desc->bDescriptorType);=
=0A=
+            break;=0A=
+        }=0A=
+        if (i + desc->bLength > total) {=0A=
+            trace_usbredir_server_descriptor_overrun(i, desc->bLength, tot=
al);=0A=
+            break;=0A=
+        }=0A=
+=0A=
+        switch (desc->bDescriptorType) {=0A=
+        case USB_DT_INTERFACE:=0A=
+            if (desc->bLength < 9) {=0A=
+                trace_usbredir_server_bad_descriptor(i, desc->bLength,=0A=
+                                                     desc->bDescriptorType=
);=0A=
+                break;=0A=
+            }=0A=
+            iface =3D desc->u.interface.bInterfaceNumber;=0A=
+            alt =3D desc->u.interface.bAlternateSetting;=0A=
+            active =3D iface < USB_MAX_INTERFACES &&=0A=
+                     alt =3D=3D s->alt_setting[iface];=0A=
+            break;=0A=
+        case USB_DT_ENDPOINT:=0A=
+            if (desc->bLength < 7) {=0A=
+                trace_usbredir_server_bad_descriptor(i, desc->bLength,=0A=
+                                                     desc->bDescriptorType=
);=0A=
+                break;=0A=
+            }=0A=
+            if (active) {=0A=
+                usbredir_server_record_endpoint(s, desc, iface);=0A=
+            }=0A=
+            break;=0A=
+        }=0A=
+=0A=
+        i +=3D desc->bLength;=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_send_ep_info(USBRedirServer *s)=0A=
+{=0A=
+    struct usb_redir_ep_info_header ep_info =3D {};=0A=
+    int i;=0A=
+=0A=
+    usbredir_server_build_ep_table(s);=0A=
+=0A=
+    for (i =3D 0; i < USBREDIR_SERVER_MAX_EP; i++) {=0A=
+        ep_info.type[i] =3D s->ep[i].type;=0A=
+        ep_info.max_packet_size[i] =3D s->ep[i].max_packet;=0A=
+        ep_info.interface[i] =3D s->ep[i].iface;=0A=
+        ep_info.interval[i] =3D s->ep[i].interval;=0A=
+        if (s->ep[i].type !=3D USB_ENDPOINT_XFER_INVALID) {=0A=
+            trace_usbredir_server_ep_info(i, ep_info.type[i],=0A=
+                                          ep_info.max_packet_size[i],=0A=
+                                          ep_info.interval[i],=0A=
+                                          ep_info.interface[i]);=0A=
+        }=0A=
+    }=0A=
+=0A=
+    usbredirparser_send_ep_info(s->parser, &ep_info);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
 static uint8_t usbredir_server_speed(USBDevice *device)=0A=
 {=0A=
     switch (device->speed) {=0A=
@@ -149,6 +446,107 @@ static void usbredir_server_announce_device(void *opa=
que)=0A=
     trace_usbredir_server_announce(conn.speed);=0A=
     usbredirparser_send_device_connect(s->parser, &conn);=0A=
     usbredirparser_do_write(s->parser);=0A=
+=0A=
+    usbredir_server_send_ep_info(s);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Packet completion=0A=
+ */=0A=
+=0A=
+static uint8_t usbredir_server_status(int status)=0A=
+{=0A=
+    switch (status) {=0A=
+    case USB_RET_SUCCESS:=0A=
+        return usb_redir_success;=0A=
+    case USB_RET_STALL:=0A=
+        return usb_redir_stall;=0A=
+    case USB_RET_BABBLE:=0A=
+        return usb_redir_babble;=0A=
+    default:=0A=
+        return usb_redir_ioerror;=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_ctrl_reply(USBRedirServer *s, uint64_t id,=0A=
+    const struct usb_redir_control_packet_header *hdr,=0A=
+    USBRedirServerReply reply, uint8_t status, uint8_t *data, int actual)=
=0A=
+{=0A=
+    struct usb_redir_configuration_status_header cfg =3D {};=0A=
+    struct usb_redir_control_packet_header resp =3D *hdr;=0A=
+    struct usb_redir_alt_setting_status_header alt =3D {=0A=
+        .interface =3D hdr->index,=0A=
+    };=0A=
+    bool is_in =3D !!(hdr->requesttype & USB_DIR_IN);=0A=
+    int data_len;=0A=
+=0A=
+    switch (reply) {=0A=
+    case USBREDIR_SERVER_REPLY_CONTROL:=0A=
+        data_len =3D is_in ? actual : 0;=0A=
+        resp.status =3D status;=0A=
+        /* Both directions report how much the device moved. */=0A=
+        resp.length =3D actual;=0A=
+        usbredirparser_send_control_packet(s->parser, id, &resp,=0A=
+                                           data_len > 0 ? data : NULL,=0A=
+                                           data_len);=0A=
+        break;=0A=
+    case USBREDIR_SERVER_REPLY_CONFIG:=0A=
+        cfg.status =3D status;=0A=
+        /* IN reports what the device sent, OUT echoes what the host chose=
. */=0A=
+        cfg.configuration =3D is_in ? (actual > 0 ? data[0] : 0) : hdr->va=
lue;=0A=
+        usbredirparser_send_configuration_status(s->parser, id, &cfg);=0A=
+        break;=0A=
+    case USBREDIR_SERVER_REPLY_ALT:=0A=
+        alt.status =3D status;=0A=
+        /* IN reports what the device sent, OUT echoes what the host chose=
. */=0A=
+        alt.alt =3D is_in ? (actual > 0 ? data[0] : 0) : hdr->value;=0A=
+        usbredirparser_send_alt_setting_status(s->parser, id, &alt);=0A=
+        break;=0A=
+    }=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * The device answered the control transfer. Some requests change the=0A=
+ * endpoint list, so save what the host asked for.=0A=
+ */=0A=
+static void usbredir_server_ctrl_complete(USBRedirServer *s,=0A=
+                                          USBRedirServerPkt *rp)=0A=
+{=0A=
+    uint8_t status =3D usbredir_server_status(rp->pkt.status);=0A=
+    int actual =3D rp->pkt.actual_length;=0A=
+=0A=
+    trace_usbredir_server_ctrl_complete(rp->redir_id, status, actual);=0A=
+    usbredir_server_ctrl_reply(s, rp->redir_id, &rp->ctrl_hdr, rp->reply,=
=0A=
+                               status, rp->data, actual);=0A=
+=0A=
+    if (status !=3D usb_redir_success) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    switch ((rp->ctrl_hdr.requesttype << 8) | rp->ctrl_hdr.request) {=0A=
+    case DeviceRequest | USB_REQ_GET_DESCRIPTOR:=0A=
+        /* Keep the configuration descriptor. It says what endpoints exist=
. */=0A=
+        if ((rp->ctrl_hdr.value >> 8) =3D=3D USB_DT_CONFIG && actual > 0) =
{=0A=
+            usbredir_server_save_config_desc(s, rp->data, actual);=0A=
+        }=0A=
+        break;=0A=
+    case DeviceOutRequest | USB_REQ_SET_CONFIGURATION:=0A=
+        /* A new configuration puts every interface back on alternate 0. *=
/=0A=
+        s->config_value =3D rp->ctrl_hdr.value;=0A=
+        memset(s->alt_setting, 0, sizeof(s->alt_setting));=0A=
+        usbredir_server_send_ep_info(s);=0A=
+        break;=0A=
+    case InterfaceOutRequest | USB_REQ_SET_INTERFACE:=0A=
+        if (rp->ctrl_hdr.index >=3D USB_MAX_INTERFACES) {=0A=
+            return;=0A=
+        }=0A=
+        s->alt_setting[rp->ctrl_hdr.index] =3D rp->ctrl_hdr.value;=0A=
+        usbredir_server_send_ep_info(s);=0A=
+        break;=0A=
+    default:=0A=
+        break;=0A=
+    }=0A=
 }=0A=
 =0A=
 /*=0A=
@@ -176,6 +574,7 @@ static void usbredir_server_port_detach(USBPort *port)=
=0A=
     trace_usbredir_server_detach(s->device_announced);=0A=
 =0A=
     qemu_bh_cancel(s->announce_bh);=0A=
+    usbredir_server_stop_transfers(s);=0A=
 =0A=
     if (s->host_connected && s->parser && s->device_announced) {=0A=
         trace_usbredir_server_disconnect();=0A=
@@ -183,6 +582,12 @@ static void usbredir_server_port_detach(USBPort *port)=
=0A=
         usbredirparser_do_write(s->parser);=0A=
     }=0A=
     s->device_announced =3D false;=0A=
+=0A=
+    /* Clear the endpoint table: it belongs to the device that is leaving.=
 */=0A=
+    usbredir_server_clear_ep_table(s);=0A=
+    memset(s->alt_setting, 0, sizeof(s->alt_setting));=0A=
+    g_hash_table_remove_all(s->config_descs);=0A=
+    s->config_value =3D 0;=0A=
 }=0A=
 =0A=
 static void usbredir_server_port_child_detach(USBPort *port, USBDevice *ch=
ild)=0A=
@@ -195,20 +600,170 @@ static void usbredir_server_port_wakeup(USBPort *por=
t)=0A=
     /* We do not pass remote wakeup to the host. Nothing to do. */=0A=
 }=0A=
 =0A=
+/*=0A=
+ * The core calls this for a packet the device answered with=0A=
+ * USB_RET_ASYNC. usbredir_server_ask_device() calls it for the rest.=0A=
+ */=0A=
+static void usbredir_server_packet_complete(USBPort *port, USBPacket *p)=
=0A=
+{=0A=
+    USBRedirServer *s =3D port->opaque;=0A=
+    USBRedirServerPkt *rp =3D container_of(p, USBRedirServerPkt, pkt);=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+=0A=
+    /* A cancel can arrive while we answer, so it must not find this one. =
*/=0A=
+    QTAILQ_REMOVE(&s->inflight, rp, inflight_link);=0A=
+=0A=
+    if (!s->parser || !device) {=0A=
+        usbredir_server_pkt_free(s, rp);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    switch (rp->type) {=0A=
+    case USBREDIR_SERVER_CTRL:=0A=
+        usbredir_server_ctrl_complete(s, rp);=0A=
+        break;=0A=
+    default:=0A=
+        g_assert_not_reached();=0A=
+    }=0A=
+=0A=
+    usbredir_server_pkt_free(s, rp);=0A=
+}=0A=
+=0A=
 static USBPortOps usbredir_server_port_ops =3D {=0A=
     .attach =3D usbredir_server_port_attach,=0A=
     .detach =3D usbredir_server_port_detach,=0A=
     .child_detach =3D usbredir_server_port_child_detach,=0A=
     .wakeup =3D usbredir_server_port_wakeup,=0A=
+    .complete =3D usbredir_server_packet_complete,=0A=
 };=0A=
 =0A=
 /*=0A=
  * USB bus ops=0A=
  */=0A=
 =0A=
+/*=0A=
+ * Hand one request to the device. USB_RET_ASYNC means it answers=0A=
+ * later, and the core then calls usbredir_server_packet_complete()=0A=
+ * for us. A NAK means it has nothing yet, so keep the request.=0A=
+ * Anything else is the answer, and the core calls nothing, so we call=0A=
+ * usbredir_server_packet_complete() ourselves.=0A=
+ */=0A=
+static USBRedirServerAsk usbredir_server_ask_device(USBRedirServer *s,=0A=
+                                                    USBRedirServerPkt *rp)=
=0A=
+{=0A=
+    USBRedirServerEp *ep =3D &s->ep[rp->ep_idx];=0A=
+=0A=
+    usb_handle_packet(usbredir_server_device(s), &rp->pkt);=0A=
+=0A=
+    if (rp->pkt.status =3D=3D USB_RET_ASYNC) {=0A=
+        return USBREDIR_SERVER_ASK_ASYNC;=0A=
+    }=0A=
+=0A=
+    /*=0A=
+     * Keep the request and send it again when the device wakes the=0A=
+     * endpoint.=0A=
+     */=0A=
+    if (rp->pkt.status =3D=3D USB_RET_NAK) {=0A=
+        trace_usbredir_server_nak_park(rp->redir_id, rp->ep_idx);=0A=
+        QTAILQ_INSERT_HEAD(&ep->waiting, rp, waiting_link);=0A=
+        timer_mod(ep->retry, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +=0A=
+                  (int64_t)USBREDIR_SERVER_RETRY_MS * SCALE_MS);=0A=
+        return USBREDIR_SERVER_ASK_NAK;=0A=
+    }=0A=
+=0A=
+    usbredir_server_packet_complete(&s->port, &rp->pkt);=0A=
+    return USBREDIR_SERVER_ASK_COMPLETE;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Send everything this endpoint is holding, oldest first. The device=0A=
+ * answering NAK stops it again, and the next wakeup or the timer picks=0A=
+ * it up.=0A=
+ */=0A=
+static void usbredir_server_kick_ep(USBRedirServer *s, int idx)=0A=
+{=0A=
+    USBRedirServerEp *ep =3D &s->ep[idx];=0A=
+    USBRedirServerPkt *rp;=0A=
+=0A=
+    /* We are asking now, so drop the timer. A new NAK sets it again. */=
=0A=
+    timer_del(ep->retry);=0A=
+=0A=
+    while ((rp =3D QTAILQ_FIRST(&ep->waiting)) !=3D NULL) {=0A=
+        QTAILQ_REMOVE(&ep->waiting, rp, waiting_link);=0A=
+        trace_usbredir_server_nak_retry(rp->redir_id, idx);=0A=
+        if (usbredir_server_ask_device(s, rp) =3D=3D USBREDIR_SERVER_ASK_N=
AK) {=0A=
+            return;=0A=
+        }=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_retry_ep(void *opaque)=0A=
+{=0A=
+    USBRedirServerEp *ep =3D opaque;=0A=
+=0A=
+    usbredir_server_kick_ep(ep->s, ep->idx);=0A=
+}=0A=
+=0A=
+static void usbredir_server_wakeup_ep(USBBus *bus, USBEndpoint *ep,=0A=
+                                      unsigned int stream)=0A=
+{=0A=
+    USBRedirServer *s =3D container_of(bus, USBRedirServer, bus);=0A=
+    uint8_t addr =3D ep->nr | (ep->pid =3D=3D USB_TOKEN_IN ? USB_DIR_IN : =
0);=0A=
+=0A=
+    usbredir_server_kick_ep(s, usbredir_server_ep_index(addr));=0A=
+}=0A=
+=0A=
 static USBBusOps usbredir_server_bus_ops =3D {=0A=
+    .wakeup_endpoint =3D usbredir_server_wakeup_ep,=0A=
 };=0A=
 =0A=
+/* An endpoint answers in order, so this waits behind anything else. */=0A=
+static void usbredir_server_submit(USBRedirServer *s, USBRedirServerPkt *r=
p)=0A=
+{=0A=
+    USBRedirServerEp *ep =3D &s->ep[rp->ep_idx];=0A=
+=0A=
+    QTAILQ_INSERT_TAIL(&s->inflight, rp, inflight_link);=0A=
+    if (!QTAILQ_EMPTY(&ep->waiting)) {=0A=
+        QTAILQ_INSERT_TAIL(&ep->waiting, rp, waiting_link);=0A=
+        return;=0A=
+    }=0A=
+    usbredir_server_ask_device(s, rp);=0A=
+}=0A=
+=0A=
+static USBRedirServerPkt *usbredir_server_pkt_alloc(int size, int ep_idx)=
=0A=
+{=0A=
+    USBRedirServerPkt *rp =3D g_new0(USBRedirServerPkt, 1);=0A=
+=0A=
+    qemu_iovec_init(&rp->pkt.iov, 1);=0A=
+    rp->data =3D g_malloc0(size);=0A=
+    rp->ep_idx =3D ep_idx;=0A=
+    return rp;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Take @rp off every list and free it. Do not use usb_packet_complete():=
=0A=
+ * it calls back into usbredir_server_packet_complete(), which would free=
=0A=
+ * the request a second time. usb_cancel_packet() only tells the device=0A=
+ * to let go.=0A=
+ */=0A=
+static void usbredir_server_pkt_free(USBRedirServer *s, USBRedirServerPkt =
*rp)=0A=
+{=0A=
+    USBRedirServerEp *ep =3D &s->ep[rp->ep_idx];=0A=
+=0A=
+    if (QTAILQ_IN_USE(rp, waiting_link)) {=0A=
+        QTAILQ_REMOVE(&ep->waiting, rp, waiting_link);=0A=
+    }=0A=
+    if (QTAILQ_IN_USE(rp, inflight_link)) {=0A=
+        QTAILQ_REMOVE(&s->inflight, rp, inflight_link);=0A=
+    }=0A=
+    if (usb_packet_is_inflight(&rp->pkt)) {=0A=
+        usb_cancel_packet(&rp->pkt);=0A=
+    }=0A=
+    usb_packet_cleanup(&rp->pkt);=0A=
+    g_free(rp->data);=0A=
+    g_free(rp);=0A=
+}=0A=
+=0A=
 /*=0A=
  * usbredirparser I/O and logging callbacks=0A=
  */=0A=
@@ -324,9 +879,160 @@ static void usbredir_server_reset(void *priv)=0A=
     USBDevice *device =3D usbredir_server_device(s);=0A=
 =0A=
     trace_usbredir_server_bus_reset(device && device->attached);=0A=
+    if (!device || !device->attached) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    usbredir_server_stop_transfers(s);=0A=
     usb_device_reset(device);=0A=
 }=0A=
 =0A=
+/*=0A=
+ * Run one control transfer on the device. @reply says which message=0A=
+ * answers the host when the transfer finishes.=0A=
+ */=0A=
+static void usbredir_server_do_control(USBRedirServer *s, uint64_t id,=0A=
+    struct usb_redir_control_packet_header *hdr,=0A=
+    uint8_t *data, int data_len, USBRedirServerReply reply)=0A=
+{=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    USBRedirServerPkt *rp;=0A=
+    USBEndpoint *ep0;=0A=
+    uint8_t status;=0A=
+    bool is_in;=0A=
+    int size;=0A=
+=0A=
+    trace_usbredir_server_control(id, hdr->requesttype, hdr->request,=0A=
+                                  hdr->value, hdr->index, hdr->length);=0A=
+=0A=
+    /* The host still waits for an answer, even when there is nobody to as=
k. */=0A=
+    status =3D usbredir_server_ep_status(s, 0, USB_ENDPOINT_XFER_CONTROL);=
=0A=
+    if (status !=3D usb_redir_success) {=0A=
+        trace_usbredir_server_ctrl_refused(id, status);=0A=
+        usbredir_server_ctrl_reply(s, id, hdr, reply, status, NULL, 0);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    is_in =3D !!(hdr->requesttype & USB_DIR_IN);=0A=
+    ep0 =3D usb_ep_get(device, USB_TOKEN_SETUP, 0);=0A=
+=0A=
+    /* Room for the data of either direction. */=0A=
+    size =3D MAX(hdr->length, data_len);=0A=
+=0A=
+    rp =3D usbredir_server_pkt_alloc(size, 0);=0A=
+    rp->redir_id =3D id;=0A=
+    rp->reply =3D reply;=0A=
+    rp->ctrl_hdr =3D *hdr;=0A=
+    rp->type =3D USBREDIR_SERVER_CTRL;=0A=
+    if (!is_in && data_len > 0) {=0A=
+        memcpy(rp->data, data, data_len);=0A=
+    }=0A=
+=0A=
+    usb_packet_setup(&rp->pkt, is_in ? USB_TOKEN_IN : USB_TOKEN_OUT, ep0,=
=0A=
+                     0, s->next_id++, false, false);=0A=
+    if (hdr->length > 0) {=0A=
+        usb_packet_addbuf(&rp->pkt, rp->data, hdr->length);=0A=
+    }=0A=
+=0A=
+    rp->pkt.parameter =3D (uint64_t)hdr->requesttype |=0A=
+                        (uint64_t)hdr->request << 8 |=0A=
+                        (uint64_t)hdr->value << 16 |=0A=
+                        (uint64_t)hdr->index << 32 |=0A=
+                        (uint64_t)hdr->length << 48;=0A=
+=0A=
+    usbredir_server_submit(s, rp);=0A=
+}=0A=
+=0A=
+static void usbredir_server_control_packet(void *priv, uint64_t id,=0A=
+    struct usb_redir_control_packet_header *hdr,=0A=
+    uint8_t *data, int data_len)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    usbredir_server_do_control(s, id, hdr, data, data_len,=0A=
+                               USBREDIR_SERVER_REPLY_CONTROL);=0A=
+    usbredirparser_free_packet_data(s->parser, data);=0A=
+}=0A=
+=0A=
+static void usbredir_server_set_configuration(void *priv, uint64_t id,=0A=
+    struct usb_redir_set_configuration_header *hdr)=0A=
+{=0A=
+    struct usb_redir_control_packet_header ctrl =3D {=0A=
+        .endpoint =3D 0,=0A=
+        .request =3D USB_REQ_SET_CONFIGURATION,=0A=
+        /* Host->Device, Standard, Device */=0A=
+        .requesttype =3D 0x00,=0A=
+        .status =3D 0,=0A=
+        .value =3D hdr->configuration,=0A=
+        .index =3D 0,=0A=
+        .length =3D 0,=0A=
+    };=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    /* The host gets a configuration_status when the device answers. */=0A=
+    usbredir_server_do_control(s, id, &ctrl, NULL, 0,=0A=
+                               USBREDIR_SERVER_REPLY_CONFIG);=0A=
+}=0A=
+=0A=
+static void usbredir_server_get_configuration(void *priv, uint64_t id)=0A=
+{=0A=
+    struct usb_redir_control_packet_header ctrl =3D {=0A=
+        .endpoint =3D 0,=0A=
+        .request =3D USB_REQ_GET_CONFIGURATION,=0A=
+        /* Device->Host, Standard, Device */=0A=
+        .requesttype =3D 0x80,=0A=
+        .status =3D 0,=0A=
+        .value =3D 0,=0A=
+        .index =3D 0,=0A=
+        .length =3D 1,=0A=
+    };=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    /* The host gets a configuration_status when the device answers. */=0A=
+    usbredir_server_do_control(s, id, &ctrl, NULL, 0,=0A=
+                               USBREDIR_SERVER_REPLY_CONFIG);=0A=
+}=0A=
+=0A=
+static void usbredir_server_set_alt_setting(void *priv, uint64_t id,=0A=
+    struct usb_redir_set_alt_setting_header *hdr)=0A=
+{=0A=
+    struct usb_redir_control_packet_header ctrl =3D {=0A=
+        .endpoint =3D 0,=0A=
+        .request =3D USB_REQ_SET_INTERFACE,=0A=
+        /* Host->Device, Standard, Interface */=0A=
+        .requesttype =3D 0x01,=0A=
+        .status =3D 0,=0A=
+        .value =3D hdr->alt,=0A=
+        .index =3D hdr->interface,=0A=
+        .length =3D 0,=0A=
+    };=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    /* The host gets an alt_setting_status when the device answers. */=0A=
+    usbredir_server_do_control(s, id, &ctrl, NULL, 0,=0A=
+                               USBREDIR_SERVER_REPLY_ALT);=0A=
+}=0A=
+=0A=
+static void usbredir_server_get_alt_setting(void *priv, uint64_t id,=0A=
+    struct usb_redir_get_alt_setting_header *hdr)=0A=
+{=0A=
+    struct usb_redir_control_packet_header ctrl =3D {=0A=
+        .endpoint =3D 0,=0A=
+        .request =3D USB_REQ_GET_INTERFACE,=0A=
+        /* Device->Host, Standard, Interface */=0A=
+        .requesttype =3D 0x81,=0A=
+        .status =3D 0,=0A=
+        .value =3D 0,=0A=
+        .index =3D hdr->interface,=0A=
+        .length =3D 1,=0A=
+    };=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    /* The host gets an alt_setting_status when the device answers. */=0A=
+    usbredir_server_do_control(s, id, &ctrl, NULL, 0,=0A=
+                               USBREDIR_SERVER_REPLY_ALT);=0A=
+}=0A=
+=0A=
 static void usbredir_server_filter_reject(void *priv)=0A=
 {=0A=
     trace_usbredir_server_filter_reject();=0A=
@@ -350,6 +1056,80 @@ static void usbredir_server_interface_info(void *priv=
,=0A=
     /* The host should not send this to a device. Nothing to do. */=0A=
 }=0A=
 =0A=
+static void usbredir_server_cancel_data_packet(void *priv, uint64_t id)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+    USBRedirServerPkt *rp;=0A=
+    int idx;=0A=
+=0A=
+    QTAILQ_FOREACH(rp, &s->inflight, inflight_link) {=0A=
+        if (rp->redir_id =3D=3D id) {=0A=
+            idx =3D rp->ep_idx;=0A=
+=0A=
+            trace_usbredir_server_cancel(id, true);=0A=
+            usbredir_server_send_cancelled(s, rp);=0A=
+            usbredir_server_pkt_free(s, rp);=0A=
+=0A=
+            /* The rest were waiting behind this one, so send them now. */=
=0A=
+            usbredir_server_kick_ep(s, idx);=0A=
+            return;=0A=
+        }=0A=
+    }=0A=
+=0A=
+    /*=0A=
+     * Not on our list means we already answered it. The host uses the=0A=
+     * id to find the request, and the same id is used again later. A=0A=
+     * second answer could land on the wrong request. Send nothing.=0A=
+     */=0A=
+    trace_usbredir_server_cancel(id, false);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Cancelled and in-flight packets=0A=
+ */=0A=
+=0A=
+/*=0A=
+ * Every request must get one answer carrying its id, even an aborted one.=
=0A=
+ * A dropped id stays in the host's cancelled queue. The host reuses ids,=
=0A=
+ * so a later answer would be thrown away as a stale one.=0A=
+ */=0A=
+static void usbredir_server_send_cancelled(USBRedirServer *s,=0A=
+                                           USBRedirServerPkt *rp)=0A=
+{=0A=
+    struct usb_redir_control_packet_header ctrl;=0A=
+=0A=
+    switch (rp->type) {=0A=
+    case USBREDIR_SERVER_CTRL:=0A=
+        ctrl =3D rp->ctrl_hdr;=0A=
+        ctrl.status =3D usb_redir_cancelled;=0A=
+        ctrl.length =3D 0;=0A=
+        usbredirparser_send_control_packet(s->parser, rp->redir_id,=0A=
+                                           &ctrl, NULL, 0);=0A=
+        break;=0A=
+    default:=0A=
+        return;=0A=
+    }=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_stop_transfers(USBRedirServer *s)=0A=
+{=0A=
+    USBRedirServerPkt *rp;=0A=
+    int i;=0A=
+=0A=
+    for (i =3D 0; i < USBREDIR_SERVER_MAX_EP; i++) {=0A=
+        timer_del(s->ep[i].retry);=0A=
+    }=0A=
+=0A=
+    /*=0A=
+     * No "cancelled" response here. This runs on a bus reset, a detach or=
=0A=
+     * a closed chardev, and the host has dropped its own queues already.=
=0A=
+     */=0A=
+    while ((rp =3D QTAILQ_FIRST(&s->inflight)) !=3D NULL) {=0A=
+        usbredir_server_pkt_free(s, rp);=0A=
+    }=0A=
+}=0A=
+=0A=
 /*=0A=
  * Parser setup and teardown=0A=
  */=0A=
@@ -372,13 +1152,19 @@ static void usbredir_server_create_parser(USBRedirSe=
rver *s)=0A=
     /* Callbacks for messages the remote host sends to us */=0A=
     s->parser->hello_func =3D usbredir_server_hello;=0A=
     s->parser->reset_func =3D usbredir_server_reset;=0A=
+    s->parser->control_packet_func =3D usbredir_server_control_packet;=0A=
+    s->parser->set_configuration_func =3D usbredir_server_set_configuratio=
n;=0A=
 =0A=
     /* The parser calls these directly, so they must not be NULL. */=0A=
+    s->parser->get_configuration_func =3D usbredir_server_get_configuratio=
n;=0A=
+    s->parser->set_alt_setting_func =3D usbredir_server_set_alt_setting;=
=0A=
+    s->parser->get_alt_setting_func =3D usbredir_server_get_alt_setting;=
=0A=
     s->parser->filter_reject_func =3D usbredir_server_filter_reject;=0A=
     s->parser->filter_filter_func =3D usbredir_server_filter_filter;=0A=
     s->parser->device_disconnect_ack_func =3D=0A=
         usbredir_server_device_disconnect_ack;=0A=
     s->parser->interface_info_func =3D usbredir_server_interface_info;=0A=
+    s->parser->cancel_data_packet_func =3D usbredir_server_cancel_data_pac=
ket;=0A=
 =0A=
     /* Capabilities: 64-bit IDs, connect_device_version, ep_info sizes */=
=0A=
     usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version=
);=0A=
@@ -411,6 +1197,8 @@ static void usbredir_server_destroy_parser(USBRedirSer=
ver *s)=0A=
     qemu_bh_cancel(s->announce_bh);=0A=
     g_clear_handle_id(&s->watch, g_source_remove);=0A=
 =0A=
+    usbredir_server_stop_transfers(s);=0A=
+=0A=
     if (s->parser) {=0A=
         usbredirparser_destroy(s->parser);=0A=
         s->parser =3D NULL;=0A=
@@ -493,6 +1281,7 @@ static void usbredir_server_chardev_event(void *opaque=
,=0A=
 static void usbredir_server_realize(DeviceState *dev, Error **errp)=0A=
 {=0A=
     USBRedirServer *s =3D USB_REDIR_SERVER(dev);=0A=
+    int i;=0A=
 =0A=
     if (!qemu_chr_fe_backend_connected(&s->cs)) {=0A=
         error_setg(errp,=0A=
@@ -500,6 +1289,18 @@ static void usbredir_server_realize(DeviceState *dev,=
 Error **errp)=0A=
         return;=0A=
     }=0A=
 =0A=
+    QTAILQ_INIT(&s->inflight);=0A=
+    for (i =3D 0; i < USBREDIR_SERVER_MAX_EP; i++) {=0A=
+        QTAILQ_INIT(&s->ep[i].waiting);=0A=
+        s->ep[i].s =3D s;=0A=
+        s->ep[i].idx =3D i;=0A=
+        s->ep[i].retry =3D timer_new_ns(QEMU_CLOCK_VIRTUAL,=0A=
+                                      usbredir_server_retry_ep, &s->ep[i])=
;=0A=
+    }=0A=
+    s->config_descs =3D g_hash_table_new_full(g_direct_hash, g_direct_equa=
l,=0A=
+                                            NULL, g_free);=0A=
+    usbredir_server_clear_ep_table(s);=0A=
+=0A=
     /* One port: usbredir carries a single device. */=0A=
     usb_bus_new(&s->bus, sizeof(s->bus), &usbredir_server_bus_ops, dev);=
=0A=
     s->bus.auto_hub =3D false;=0A=
@@ -522,10 +1323,13 @@ static void usbredir_server_realize(DeviceState *dev=
, Error **errp)=0A=
 static void usbredir_server_unrealize(DeviceState *dev)=0A=
 {=0A=
     USBRedirServer *s =3D USB_REDIR_SERVER(dev);=0A=
+    int i;=0A=
 =0A=
     qemu_chr_fe_deinit(&s->cs, true);=0A=
     usbredir_server_destroy_parser(s);=0A=
 =0A=
+    g_clear_pointer(&s->config_descs, g_hash_table_destroy);=0A=
+=0A=
     if (s->chardev_close_bh) {=0A=
         qemu_bh_delete(s->chardev_close_bh);=0A=
         s->chardev_close_bh =3D NULL;=0A=
@@ -535,6 +1339,11 @@ static void usbredir_server_unrealize(DeviceState *de=
v)=0A=
         qemu_bh_delete(s->announce_bh);=0A=
         s->announce_bh =3D NULL;=0A=
     }=0A=
+=0A=
+    for (i =3D 0; i < USBREDIR_SERVER_MAX_EP; i++) {=0A=
+        timer_free(s->ep[i].retry);=0A=
+        s->ep[i].retry =3D NULL;=0A=
+    }=0A=
 }=0A=
 =0A=
 static const Property usbredir_server_props[] =3D {=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index 2cc6a244b9..d63156a930 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -406,3 +406,14 @@ usbredir_server_announce(uint8_t speed) "device_connec=
t speed %u"=0A=
 usbredir_server_disconnect(void) "device_disconnect sent"=0A=
 usbredir_server_bus_reset(bool attached) "bus reset, attached %d"=0A=
 usbredir_server_filter_reject(void) "host rejected our device"=0A=
+usbredir_server_cancel(uint64_t id, bool found) "id %" PRIu64 " still in f=
light %d"=0A=
+usbredir_server_ep_info(unsigned idx, uint8_t type, uint16_t mps, uint8_t =
interval, uint8_t iface) "ep_info[%u] type %u mps %u interval %u iface %u"=
=0A=
+usbredir_server_config_not_found(uint8_t value, unsigned have) "no descrip=
tor for configuration %u, we have %u"=0A=
+usbredir_server_bad_descriptor(int offset, uint8_t length, uint8_t type) "=
descriptor at byte %d is too short: bLength %u, type %u"=0A=
+usbredir_server_descriptor_overrun(int offset, uint8_t length, int total) =
"descriptor at byte %d runs past the end: bLength %u, total %d"=0A=
+usbredir_server_endpoint_dropped(uint8_t address) "endpoint 0x%02x does no=
t fit our tables"=0A=
+usbredir_server_control(uint64_t id, uint8_t requesttype, uint8_t request,=
 uint16_t value, uint16_t index, uint16_t length) "id %" PRIu64 " type 0x%0=
2x request 0x%02x value 0x%04x index 0x%04x length %u"=0A=
+usbredir_server_nak_park(uint64_t id, int ep) "id %" PRIu64 " ep %d"=0A=
+usbredir_server_nak_retry(uint64_t id, int ep) "id %" PRIu64 " ep %d"=0A=
+usbredir_server_ctrl_complete(uint64_t id, int status, int actual) "id %" =
PRIu64 " status %d actual %d"=0A=
+usbredir_server_ctrl_refused(uint64_t id, int status) "id %" PRIu64 " stat=
us %d"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467869.1676984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHe-0005io-29; Mon, 02 Nov 2026 09:24:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467869.1676984; Mon, 02 Nov 2026 09:24:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHd-0005ez-HS; Mon, 02 Nov 2026 09:24:53 +0000
Received: by outflank-mailman (input) for mailman id 1467869;
 Mon, 02 Nov 2026 09:22:35 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFP-0003UR-31
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFO-0071w6-Fl
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:34 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85650-8faa-0a2a0a5109dd-0a2a4505ec98-38
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:34 +0100
Received: from [52.101.127.73]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85657-4cb1-0a2a45050019-34657f49ad41-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:33 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by KUXPR06MB8030.apcprd06.prod.outlook.com (2603:1096:d10:4d::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:27 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=iBhgURZC4kAlutZz6m376WyDbffd1PhJAbcoWqvE1efQIKuuTeABhcCrQrhie4X75R3SokFaqrGiGpGMPPD3embmDPioIAnK21p/Y0qXLn6kty2ou6yRRahnrtPxZIaOOzJKndx6Sbg3PqgIccIhT5ATIXicwx/49n5l3zdRyry2PP9uLiGQkop8GRNgwt3QH6UHlH3zTnh+q6f0DUhZdNf2a2BSUiUqu81NFJVCNDw+XIj9mwhrKc69IEApjAaPueieyUwfyM4mi8oPkicWaD6wagTMN4zWIAhwFejvHqALgIXi2dHX+OlWB+qOL69ZUdq9Rv/EMX3qFD5kgozLmQ==
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=pfiFEH0CPSP8FOE1AeNeCKARq0aAKEWFbvucorbqrbQ=;
 b=Rp1AlIgBGwL7It4Jm2FWRupfKBPTFYXZR/B9c1k5nzs62du6vYDvvihQRZyVkbQfwkpvNEUe36ElbZQz85FoU1g91EXPPgqvPygu5xjKrJNZu+nw7tNBaWq8EgXEcw0TuFnaGTEau6u/TJgEzuSSQrY57j2UR7WQjGawhzhOkhShZpTienBGHB4xaO+bMLcgFg1wCfMNCSYhIaBPR8oiUtqr7X+XJ0I3anZn2bZkyGSd1g0cP3HokCqVvpaDHjp17S91coDWihMICabjIq85jhMWMfFU6HlUDYgTPHx4P3y/3zKSHxj9w94n8AlJRhAfuonJYka+32SevxjKaFK6Gw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pfiFEH0CPSP8FOE1AeNeCKARq0aAKEWFbvucorbqrbQ=;
 b=rMyMiXHfB7MrUMak+lD8qqtmUraSv0kiYGByrQbmTsYJyL0OXX7rNh2MVHcTLONQoLCqAQ0uY3RCt3wPoao+/hv6zPVWVmrlFZDmuufWKFBoE6mTvhITlQh8vUcGD/j8TjawSy1me+2V0Cqj7ywldRwMrUJXVomcGMsY1J8h+VikdhLLVJZrMHLx6FNKZxPxhhC5cjQgWxXQygfo2QFgs5p5np6DamIhsH1ZI5xc7dQ1cBFzWLFkfh7d+zri/YEZl2s+67KAjSZednaXqfVtI0auaYJvRjHbC86AWXEjo9B8LxHsc85vh8zvIKmUY8apblmbxGxuPPJ8WjuuHIZriw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 13/18] hw/usb/redirect-server: Announce the exported device
Thread-Topic: [PATCH v8 13/18] hw/usb/redirect-server: Announce the exported
 device
Thread-Index: AQHdaqupvmzo6sFN+0K1iqt887RtJA==
Date: Mon, 2 Nov 2026 09:22:21 +0000
Message-ID: <20261102092201.1729245-14-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|KUXPR06MB8030:EE_
x-ms-office365-filtering-correlation-id: 195a2571-f597-46b4-1310-08df38c2cea8
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|921020|38070700021|261021123027099003|5023799004|56012099006|261009223027099003|261028144727099003|261021121427099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 wDAyTwNva6DwCxBJQzw+YeNiKbHcjUTYttq9nb6aFUpgLhTCzOJvyeaofpHxTTSC6KkEn28ZgvNAi8DMxr3QX2PdOSFmnvdbMnJ1KAh8fL3XkHXN4Z0ZzjKbtuy/e/pHsaLEo+0kqwhLYWJbYR9k3aFKcMzWv/3vZh24x/aIv/4r09nyGgXUXExZFlpqa5dUuQKZZlvMUqUFv1AD4AVKnU7+CZOKO86EuwaZSwjP2s8fGFNzjamdBR8qfjcLzdV+bABSE2LMKfyeXrCcFyFfuNjI1Qd/FFTin3DszRvVdpnBUEA2cI1Mq4m7PTuAkEHDsDT1EwsiIx3dxXaLIlMUk6gdYppy8ppShBy9VitLm8Qqwu5aivb4BzUJQwZnUhwMzqqZTGY/k2vZqr0HaT9az/PfDwQbf6ru3EZUkdB0xmZVy86s5H4QwKlaDIpeaWGD6PBr5v/rBVICqlkYtCNdbmuWIXTSPMMmnHpKCLOnsQBTHPeTd4n8tuD1Rlhj6ed3AQoacPYP3G1L/FMp/q5hmLM7L6x51NDj5V3M4no+RiCuH23rgqm60sFdlDEzNlkwGN+0gKpC+xvAKQ9/pLNC39s1kzNyCnspOeMkOSskdCldBT1jb4OYNmpCylelztEcgYHbljTmD0ZcjPGpTqYgJqGhoB4qSm5gMd9W5P7DBFoxaNW6eR3Zfm1IiUGZBp5s2pxR34Dq3EEQr2YBovr+4Iv++BQEqqBj+V0iSKOIPM3Jh+kdvZaTJXG8NOzYsTU/
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(921020)(38070700021)(261021123027099003)(5023799004)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?KkIVq+EXHyJqp5857ge1GF5I3PTcyvr3CCxRM4Qn/UpTgvuzzY7TovRbNC?=
 =?iso-8859-1?Q?N/w9581x7juD6UhXlJgYVAEg+RfOthypuNg+GW5ea8WPp6KbK3xsZ5zPf1?=
 =?iso-8859-1?Q?lWUl3nCaF8j1rKqocWvFs15z8MUSc22294j35fHP/xEJxnviOUZJuO3mEy?=
 =?iso-8859-1?Q?ki058vhF4OoGuZsrVf1yiwVf6j3qVeMDLfbTg7lmho/huIJjC98FW8uXD9?=
 =?iso-8859-1?Q?WVaFRc469ucyqjJj/1k0XkB2G8e7rkHWny0qyZPRyfWYB2EWwC6muEkaNy?=
 =?iso-8859-1?Q?RJDwAsf0wSouVWeoBc5lVURp0wrOPVqdCJv9plooABu5zmFSYfvwm4ECyY?=
 =?iso-8859-1?Q?JYQrjSciXREfOuSnEKBOBpTxtDJyBzs6Vcrpo34ON+xe6gQp2hkME5alGj?=
 =?iso-8859-1?Q?q9nJmCCw3+rCHmv1C50savYlQqxKVScTFSibqKjgbw5sKGPdKOCoQIukg9?=
 =?iso-8859-1?Q?4CthbeVQ42mUBxqA7TPKGuFYXZFz1ieBTsqxLh5+2fZ5JSrI8txf+jDeyN?=
 =?iso-8859-1?Q?i8686aQEHSAK1qSwPIgmg3wGkGQuKbrO0BLBTr9/BQoG4sAcAFrL6pyynT?=
 =?iso-8859-1?Q?ufO/JgGhX7wh3lmT4y5bS/VWPYFTLrJRbT7g4jvDWDugAFd0Yuenytv5/e?=
 =?iso-8859-1?Q?sGzCr+Aw4eriGzx/IoRFkt16J9MF3GJK7yV4ITz2s39j0ZVuKlVYqAZQAB?=
 =?iso-8859-1?Q?tuPySxxL5aaO8e24bsWPKdcxSGJjOpka8sknMrf7aWByeZN4ICYZmQrZTj?=
 =?iso-8859-1?Q?LW2/LbTkj+WLBgrlJ//xS9MbV4Uqqj6YxIntA2/q/q05WLlNztalSxX8R/?=
 =?iso-8859-1?Q?85uFgRZ3GWbbPKasQR750ogSz9ND9knencmK1b8a+aVzbedTufD5u5Dbxp?=
 =?iso-8859-1?Q?YrHSfnc+CdPu8/8QkRpWAfwl9iEjExFW7vj8xMu2WhcExLNCh5O2V/vafx?=
 =?iso-8859-1?Q?Rtor4x76DuJ2I9AtQIarM84RU16Z55L2OCokJYHN1V1GqSK8TTzZtq4Jrb?=
 =?iso-8859-1?Q?i5q+8IqfDTEaedNiQd7auXVjwW/2RktmWdgGmNAPauH2HRAAapRKBIFcEW?=
 =?iso-8859-1?Q?Q/PvePO3nR0SdHYUtP7k52x71wfDp9FNjSYxOXZuI2p4ANdDXVJ1C6bblg?=
 =?iso-8859-1?Q?zBnLxK+/8wLbQzRILZoPZJbiwegviORurT1iuAFW6OIIIKrVxo0hEVhQ1Z?=
 =?iso-8859-1?Q?+HGL623CtyCZ957zbnhXmeuOEPoAhgQmU/75fq+0BErsvDrhf5L5+TMcly?=
 =?iso-8859-1?Q?op1JPvqR6gyDuyEfxHteApF3NH4xJ390uOzTCC8hKgbpb9WVT9OnFDwLgu?=
 =?iso-8859-1?Q?Eak0DRfaZZ0kvMkZrMeqGvlqfj3yUbNsYRjSLyKdhaUA5uEtjN8YsE9FH4?=
 =?iso-8859-1?Q?d8wDBfY8En6TPnzn2u1gnG6sPv/H/Fq+PAW6g2VEwFv1zFVCPngf3yFpAh?=
 =?iso-8859-1?Q?nl4yP+DjhTK9wN4tRQb9Qoy1xsbp2TsFBqenaFcuW/g5pL8yVLSZZM/Q3B?=
 =?iso-8859-1?Q?ePQJtdRnGya+5zV3P6393fa1TyG2PRwgO+u6mnrjXzxlpFzDBD1jaHGzZz?=
 =?iso-8859-1?Q?bbPKxp3JKrkh6awJuDqhVCNB9ae2f9IHDbfMuCtPxxmFVojTdBM+s3tJWZ?=
 =?iso-8859-1?Q?dBrg9n1h2SCuF9yZ8q1aGmFqmX/fIzfb49wfU/kK7o4WSI9pz4Q2rr1fIO?=
 =?iso-8859-1?Q?XbCowXtFU4Su7CLO0ztwzr5kM3Gs5exuwRjfmD1SuK93vZ/GrsTpRiSb+K?=
 =?iso-8859-1?Q?Zi9idgHJkmFCl6jfVFdX2XOZ4o4mKb2FDbQtEmJfMV+56HCBSDhzNWZvqJ?=
 =?iso-8859-1?Q?kvyIqhu/og=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	qsP9p1ljG1UE1r99d0im4nKl4p/Qvy/l1ApljjSibs6KnOpODYDFZ6NOH0bt0MS+7SvGB0MwlSuXNxLmoRDPal7TbPTiHLS8kbaoU2MTl52B01ZJisLx4I3sdoI7nM9/ldYKEqSY7a3xwqKunC2A21ogb84xfuAhLDKXY46gFPxKuq2Li9xRyhDmHGCN99mxNROlelte0NpqeeNYsyTK0e/2UVN3b5k3f27gs+zbh+HzQhrPEeNFWbtO8ccChvmDu706d2iGinz0yxnIn81leGqyRTXNwNUJVddrZVW009sr7ziWmY3nGZ4Y4Ovpx9W/LHJdpYln/a5GIngg+gAKHQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 195a2571-f597-46b4-1310-08df38c2cea8
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:21.4883
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: b54wC7bu3cteuWn1OpHw3APZahIsl5W8trMfjcOg9p2tMyRE/jd7M+YEQmv+YfCIBteRfmPT5UPrvrx+bNBqmtItwAV02GXbgCpIFLeEqxA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: KUXPR06MB8030
X-purgate-ID: tlsNG-c201ff/1793611354-251182A1-7ADECF6A/0/0
X-purgate-type: clean
X-purgate-size: 9873

Send device_connect when a device is attached and the host has greeted=0A=
us, device_disconnect when it goes away, and handle the bus reset the=0A=
host sends before enumerating.=0A=
=0A=
device_connect carries no identity. The peer asks the device itself with=0A=
GET_DESCRIPTOR as soon as it enumerates, so anything we put there would=0A=
be made up. The speed is real: it comes from the device on our port.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 150 ++++++++++++++++++++++++++++++++++++++-=0A=
 hw/usb/trace-events      |   7 ++=0A=
 2 files changed, 156 insertions(+), 1 deletion(-)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index f78351bde9..e207f5a7eb 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -56,6 +56,7 @@=0A=
 #include "qemu/main-loop.h"=0A=
 #include "qemu/module.h"=0A=
 #include "migration/vmstate.h"=0A=
+#include "qemu/cutils.h"=0A=
 #include "hw/core/sysbus.h"=0A=
 #include "hw/usb/usb.h"=0A=
 #include "chardev/char-fe.h"=0A=
@@ -85,17 +86,105 @@ struct USBRedirServer {=0A=
     /* usbredir over the chardev */=0A=
     struct usbredirparser *parser;=0A=
     QEMUBH *chardev_close_bh;=0A=
+    QEMUBH *announce_bh;=0A=
     const uint8_t *read_buf;=0A=
     int read_buf_size;=0A=
     bool in_write;=0A=
     guint watch;=0A=
     bool host_connected;=0A=
+    bool device_announced;=0A=
 };=0A=
 =0A=
+/*=0A=
+ * The device is whatever USBDevice the user plugged into our port with=0A=
+ * "-device <device>,bus=3D<id>.0". NULL until then.=0A=
+ */=0A=
+static USBDevice *usbredir_server_device(USBRedirServer *s)=0A=
+{=0A=
+    return s->port.dev;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Device announcement=0A=
+ */=0A=
+=0A=
+static uint8_t usbredir_server_speed(USBDevice *device)=0A=
+{=0A=
+    switch (device->speed) {=0A=
+    case USB_SPEED_LOW:=0A=
+        return usb_redir_speed_low;=0A=
+    case USB_SPEED_FULL:=0A=
+        return usb_redir_speed_full;=0A=
+    default:=0A=
+        return usb_redir_speed_high;=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_announce_device(void *opaque)=0A=
+{=0A=
+    USBRedirServer *s =3D opaque;=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    struct usb_redir_interface_info_header iface_info =3D {=0A=
+        .interface_count =3D 0,=0A=
+    };=0A=
+    struct usb_redir_device_connect_header conn =3D {};=0A=
+=0A=
+    if (!s->host_connected || s->device_announced ||=0A=
+        !device || !device->attached) {=0A=
+        return;=0A=
+    }=0A=
+    s->device_announced =3D true;=0A=
+    conn.speed =3D usbredir_server_speed(device);=0A=
+=0A=
+    /*=0A=
+     * The device has to be in DEFAULT state before it can answer=0A=
+     * anything, so reset it here.=0A=
+     */=0A=
+    usb_device_reset(device);=0A=
+=0A=
+    /* Send this before device_connect. The peer needs it to accept us. */=
=0A=
+    usbredirparser_send_interface_info(s->parser, &iface_info);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+=0A=
+    trace_usbredir_server_announce(conn.speed);=0A=
+    usbredirparser_send_device_connect(s->parser, &conn);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
 /*=0A=
  * USB port ops=0A=
  */=0A=
 =0A=
+static void usbredir_server_port_attach(USBPort *port)=0A=
+{=0A=
+    USBRedirServer *s =3D port->opaque;=0A=
+=0A=
+    trace_usbredir_server_attach();=0A=
+=0A=
+    /*=0A=
+     * usb_attach() sets the state to ATTACHED after this returns.=0A=
+     * A device needs DEFAULT state before it can serve a request.=0A=
+     * The BH runs after usb_attach(), so the device stays in DEFAULT.=0A=
+     */=0A=
+    qemu_bh_schedule(s->announce_bh);=0A=
+}=0A=
+=0A=
+static void usbredir_server_port_detach(USBPort *port)=0A=
+{=0A=
+    USBRedirServer *s =3D port->opaque;=0A=
+=0A=
+    trace_usbredir_server_detach(s->device_announced);=0A=
+=0A=
+    qemu_bh_cancel(s->announce_bh);=0A=
+=0A=
+    if (s->host_connected && s->parser && s->device_announced) {=0A=
+        trace_usbredir_server_disconnect();=0A=
+        usbredirparser_send_device_disconnect(s->parser);=0A=
+        usbredirparser_do_write(s->parser);=0A=
+    }=0A=
+    s->device_announced =3D false;=0A=
+}=0A=
+=0A=
 static void usbredir_server_port_child_detach(USBPort *port, USBDevice *ch=
ild)=0A=
 {=0A=
     /* We only export the device on our own port. Nothing to do. */=0A=
@@ -107,6 +196,8 @@ static void usbredir_server_port_wakeup(USBPort *port)=
=0A=
 }=0A=
 =0A=
 static USBPortOps usbredir_server_port_ops =3D {=0A=
+    .attach =3D usbredir_server_port_attach,=0A=
+    .detach =3D usbredir_server_port_detach,=0A=
     .child_detach =3D usbredir_server_port_child_detach,=0A=
     .wakeup =3D usbredir_server_port_wakeup,=0A=
 };=0A=
@@ -210,13 +301,53 @@ static int usbredir_server_write(void *priv, uint8_t =
*data, int count)=0A=
     return ret;=0A=
 }=0A=
 =0A=
-/* The remote host greets us once the socket is up. */=0A=
+/*=0A=
+ * usbredirparser message callbacks=0A=
+ */=0A=
+=0A=
 static void usbredir_server_hello(void *priv,=0A=
                                   struct usb_redir_hello_header *hello)=0A=
 {=0A=
     USBRedirServer *s =3D priv;=0A=
+    char version[sizeof(hello->version) + 1];=0A=
+=0A=
+    pstrcpy(version, sizeof(version), hello->version);=0A=
+    trace_usbredir_server_hello(version);=0A=
 =0A=
     s->host_connected =3D true;=0A=
+    qemu_bh_schedule(s->announce_bh);=0A=
+}=0A=
+=0A=
+static void usbredir_server_reset(void *priv)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+=0A=
+    trace_usbredir_server_bus_reset(device && device->attached);=0A=
+    usb_device_reset(device);=0A=
+}=0A=
+=0A=
+static void usbredir_server_filter_reject(void *priv)=0A=
+{=0A=
+    trace_usbredir_server_filter_reject();=0A=
+}=0A=
+=0A=
+static void usbredir_server_filter_filter(void *priv,=0A=
+    struct usbredirfilter_rule *rules, int rules_count)=0A=
+{=0A=
+    /* We accept any host. The callback owns the rules, so free them. */=
=0A=
+    free(rules);=0A=
+}=0A=
+=0A=
+static void usbredir_server_device_disconnect_ack(void *priv)=0A=
+{=0A=
+    /* The host saw our device_disconnect. Nothing to do. */=0A=
+}=0A=
+=0A=
+static void usbredir_server_interface_info(void *priv,=0A=
+    struct usb_redir_interface_info_header *hdr)=0A=
+{=0A=
+    /* The host should not send this to a device. Nothing to do. */=0A=
 }=0A=
 =0A=
 /*=0A=
@@ -240,6 +371,14 @@ static void usbredir_server_create_parser(USBRedirServ=
er *s)=0A=
 =0A=
     /* Callbacks for messages the remote host sends to us */=0A=
     s->parser->hello_func =3D usbredir_server_hello;=0A=
+    s->parser->reset_func =3D usbredir_server_reset;=0A=
+=0A=
+    /* The parser calls these directly, so they must not be NULL. */=0A=
+    s->parser->filter_reject_func =3D usbredir_server_filter_reject;=0A=
+    s->parser->filter_filter_func =3D usbredir_server_filter_filter;=0A=
+    s->parser->device_disconnect_ack_func =3D=0A=
+        usbredir_server_device_disconnect_ack;=0A=
+    s->parser->interface_info_func =3D usbredir_server_interface_info;=0A=
 =0A=
     /* Capabilities: 64-bit IDs, connect_device_version, ep_info sizes */=
=0A=
     usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version=
);=0A=
@@ -267,7 +406,9 @@ static void usbredir_server_create_parser(USBRedirServe=
r *s)=0A=
 static void usbredir_server_destroy_parser(USBRedirServer *s)=0A=
 {=0A=
     s->host_connected =3D false;=0A=
+    s->device_announced =3D false;=0A=
 =0A=
+    qemu_bh_cancel(s->announce_bh);=0A=
     g_clear_handle_id(&s->watch, g_source_remove);=0A=
 =0A=
     if (s->parser) {=0A=
@@ -368,6 +509,8 @@ static void usbredir_server_realize(DeviceState *dev, E=
rror **errp)=0A=
 =0A=
     s->chardev_close_bh =3D qemu_bh_new_guarded(usbredir_server_chardev_cl=
ose_bh,=0A=
                                               s, &dev->mem_reentrancy_guar=
d);=0A=
+    s->announce_bh =3D qemu_bh_new_guarded(usbredir_server_announce_device=
, s,=0A=
+                                         &dev->mem_reentrancy_guard);=0A=
 =0A=
     qemu_chr_fe_set_handlers(&s->cs,=0A=
                              usbredir_server_chardev_can_read,=0A=
@@ -387,6 +530,11 @@ static void usbredir_server_unrealize(DeviceState *dev=
)=0A=
         qemu_bh_delete(s->chardev_close_bh);=0A=
         s->chardev_close_bh =3D NULL;=0A=
     }=0A=
+=0A=
+    if (s->announce_bh) {=0A=
+        qemu_bh_delete(s->announce_bh);=0A=
+        s->announce_bh =3D NULL;=0A=
+    }=0A=
 }=0A=
 =0A=
 static const Property usbredir_server_props[] =3D {=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index d141661673..2cc6a244b9 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -399,3 +399,10 @@ usbredir_server_chardev_open(void) "chardev opened"=0A=
 usbredir_server_chardev_close(void) "chardev closed"=0A=
 usbredir_server_write_recursion(void) "recursive write, leaving it queued"=
=0A=
 usbredir_server_log(const char *msg) "%s"=0A=
+usbredir_server_hello(const char *version) "peer is %s"=0A=
+usbredir_server_attach(void) "device attached"=0A=
+usbredir_server_detach(bool announced) "device detached, was announced %d"=
=0A=
+usbredir_server_announce(uint8_t speed) "device_connect speed %u"=0A=
+usbredir_server_disconnect(void) "device_disconnect sent"=0A=
+usbredir_server_bus_reset(bool attached) "bus reset, attached %d"=0A=
+usbredir_server_filter_reject(void) "host rejected our device"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467872.1676995 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHf-00060t-4r; Mon, 02 Nov 2026 09:24:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467872.1676995; Mon, 02 Nov 2026 09:24:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHe-0005xM-Bg; Mon, 02 Nov 2026 09:24:54 +0000
Received: by outflank-mailman (input) for mailman id 1467872;
 Mon, 02 Nov 2026 09:22:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFR-0003Us-1R
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFQ-00GjY0-EG
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:36 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8564d-2eae-0a2a0a5409dd-0a2a45078360-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:36 +0100
Received: from [52.101.127.118]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85659-b4ea-0a2a45070019-34657f76b42b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:35 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by KL1PR06MB6110.apcprd06.prod.outlook.com (2603:1096:820:d8::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:30 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=tMkt6zXOXWZ9STLsjYPmZq2oqTvI5Yv9x2Ew3Zb/M6Myg07gQ2UrtOgnb0nE5T6Oi4sBczFa1vZO2n/LRUQnF7MUZ5pxxVPyzFsoekL7px7q/WkXSEtGtkUmy+jO7ZRcsfp3zPg2qL8DK0rnuwAcjBvEp4TECwOovUCuRfjiyXuNS1/19NkSvh5wZKAzxHqCo+DkC9xx0kfVLvN9z7s3CpKdsDama8i2NXkaMEWQ/Pvhb74YXGdrpnTmiqOu7UnNB8xjDSgXSTRMlVEzK+8xBMNR9wIgfBilUVC1k9ACtzA0qiJnt0Fvk71E4xXnl5cLz6i31ypvwNb41k/mt7lhZA==
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=zLj2Owmud6dzaDoLDIP99lKup2W+/g/vdyQI4KPNKSE=;
 b=IaRlO1ojuwbnIKd8aAvtwFUDtUDnYDn6cp6i/4gewptoCjsLmwoLyJtxJOmxkieIMjMCOoM94P7zSf2zpNipv616bbPqFc7DpRuss1v0aqFNSFrSoCDiVIpu7LkKHwQ7KYjJFWQ2OgY6rs41WJuERs0q1Idfc+uR+tq+TO4D9z+bWMRyTtEjMf4V1gxHAIP01RnHy1hlsdiXDaHDCuMp/veR78fPOZ1jxaNt/7294/GKzMHR29M7Hv0sGweJp6r3WOEmej2lTiHTt9b2KYJzD0FnzQ5VH16mBeulAKf9WYla3uJ2iAbI26ZQasD2hws9uLIlSgkYmJxy1vsfj+JUHw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zLj2Owmud6dzaDoLDIP99lKup2W+/g/vdyQI4KPNKSE=;
 b=MFRbz6qX4GmRSinnIy68eLtU2XGPqOHd4SWp2eOZT1L4OXCJzqJloOrpbD6jRKMMU+fgt7f/W89/BCZ4GXeyl21I/6VihoAhZQZxl/6MHvC3mqAR+UPxWsuS0g07TLsSlfR0Ki5e5K35vhGFQxqa1AJLowBUP0xC3MU5qiPoGzXCJR8klYk89r3mAcBeVqB67p8mYZGzyDrNpU4tg8f8NCBQGbcohAWGHHnluULGp/196rauJrHBnr9uUNtUyYE6OkTMFL/e7TeLG30tYM/qWx4oaHW8BQsqPiH9la467fo2nuFPMggtYneNdGMsKcp+k+aBi3IE7kxgQLBz7UVF1A==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 15/18] hw/usb/redirect-server: Implement bulk and interrupt
 transfers
Thread-Topic: [PATCH v8 15/18] hw/usb/redirect-server: Implement bulk and
 interrupt transfers
Thread-Index: AQHdaqurF85yHNDEXEKWX5f/X6p+yA==
Date: Mon, 2 Nov 2026 09:22:24 +0000
Message-ID: <20261102092201.1729245-16-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|KL1PR06MB6110:EE_
x-ms-office365-filtering-correlation-id: 5ce4b888-b41a-443d-1531-08df38c2d0f5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|366016|7416014|376014|921020|38070700021|261021135927099003|5023799004|56012099006|261009223027099003|261009221227099003|261028144727099003|261021121427099003|261021123027099003|261021133027099003|261021130227099003|261026135527099003|261026130827099003|261022115727099003|261022105027099003|261022113327099003|261026140227099003|261026121527099003|261022075727099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 R5qJ1FDPt8ncC7fdwx1+bVVG37yfo/KX5YEZzdGmY1aa6UYAaN0XqGpDiKO0A6/apBOEaYJYQ3wTSB5hgyWjQSU6QymlVDy/tHrwCETTlKQHUEJUvpCbc3LVGyCcyOa0bXZbDX/pDAMCyEpbkGXf/nZo2kSb0w547XemDE1G5jteqBbpA5wlrbuPqfU6SwfZHsDecZIlXuRwZFyRuH/ORXgbQmtwuuQOT0AdHnSnW0ey3yxlys0l/sA4uT9xjgVokT8Hr3r6ML/TCs7/jDRUdy01u27EMyTbs5Tx0d3PGbf4CrC2TyuEVdha6s7miHbeVhXdNis7Vtolk20cc2DFvGioJ/KWV0w8GjrbJ6BCo+Cwh1VC/A/ciTHehNIw/hs8439Tve4LtqUHcp8WRfWuZ/Ey5LDRJ+rkMNGd//yaAXRMhhaHss+tpzwyoG6p6PGuY70NDeNsBTjEfG/qAD4Lentk4duGeD9EmzxflVv15z05qiF/iKYo7c98m9WAY6PdKsIUBUd2SOVNlTlXpdE+wmlFRObcc81luDE1bJjx87rkm+wOIGyjzWGvsK2psGvt/GFeIqQCFo+ZGY7MKkuFW/58rZUFz6sq4YZvJRy3d4KwO/MBE/6cwHknVdl7yV/wmi79nTckrowdfARMmShtoFzzrqvKt7pzhzBa6AGz87g+Ax9+klqc2vh/i9mSmr1OL5Gw/+xqoI5x4gQth4JOv2eck5p0Gfo2a/JMJVle0+V+fA9VYffhPkpLgg3Kd9t6
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(366016)(7416014)(376014)(921020)(38070700021)(261021135927099003)(5023799004)(56012099006)(261009223027099003)(261009221227099003)(261028144727099003)(261021121427099003)(261021123027099003)(261021133027099003)(261021130227099003)(261026135527099003)(261026130827099003)(261022115727099003)(261022105027099003)(261022113327099003)(261026140227099003)(261026121527099003)(261022075727099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?l6/9uvfvlpTVCFvc9+dwZvXIJU2Ifw6D1b1HMCf6kh8HN4dvVZQ3wDUIph?=
 =?iso-8859-1?Q?eee19/E0tRqDH+J1Wy7FdDOyV/uHJDGWSKtiL7/Eyz0MAzKV9TBGvm7AJH?=
 =?iso-8859-1?Q?zu12mZaIB6Xm6guSSk78kKJctokC+3cIF23Hq+5Xzfza7m9uwj4JQvwkar?=
 =?iso-8859-1?Q?X/1g6gsLvRguHXqzWVUSy2OBhTHettds6w2k1Q++0RWVvYCYre8HSraOj0?=
 =?iso-8859-1?Q?ja5wBYV5KYLBqyrhbs1G7Rnc8LRkXqWFZeLY5iJZS61b7h+/QXv2cZ11DV?=
 =?iso-8859-1?Q?2klHncfv1N+q7A6nIr69FyzU4UEFYl8kvvskPyCu6/+SKm37S3cU9XAqhZ?=
 =?iso-8859-1?Q?40ylOortiGyYKfN1x5aDWVkGyuTVWGbXFsa3rcACdOev5hgQGyvzDCdZff?=
 =?iso-8859-1?Q?2drnJybIxFFHisOWL49CAG/rLxgwxkxCarQwOD61XgG8gwljQo/h77NZ1m?=
 =?iso-8859-1?Q?IxcgtFskmb3lJzhj5yOfx+JnQjhDAFJCT4/HPFS63Z1ex/F9EdMfyZz8ZO?=
 =?iso-8859-1?Q?7MVPyXKNuDR2BQ0aPhhkhmV/Q+l8dqdrdOrBZZQ36P6cNd8OBnLg8/E/dS?=
 =?iso-8859-1?Q?rP8j9jbrjV+GoTpxi1gQU8gL2mkmcT0SxVe2ZO83/JsQ8RsGR544panI7e?=
 =?iso-8859-1?Q?RbBwl1+8/o5iyZKNahZu6HEUrADJqtlYqpELaxDrU5Xy+jeeE9A+h6H3et?=
 =?iso-8859-1?Q?UXKEI0Q0zByxtFJDOnlnmya+avsp68iQZi/XWnOvN9tRXjmCKArVT+yZlF?=
 =?iso-8859-1?Q?HzxMI3pCwhqRoXAvR88e51DSLHJgPayaLsx8aDOeVmp+BarTZx+ixfVKGT?=
 =?iso-8859-1?Q?YJA1fDjJ0DQyY3pJyEMDgDLPzNj8U8hUO8LE4YdHJ1YF5jcA2XI5Oh3uPw?=
 =?iso-8859-1?Q?Nt19y6UgkB2x3+3potOoEn8h8C1BFIHYeeutDJDXoMHbxfEQlqI12opuRp?=
 =?iso-8859-1?Q?8p367KPOwafL1vRsUS7PFZfVdVCJPq3c4oJrClzx9o6+K0W39QYpToE9bB?=
 =?iso-8859-1?Q?ELUS1AG59uYilgr7dG+6R6CsaxcYBF4RpHUFaIemxT9IuacYHWWQreMUiZ?=
 =?iso-8859-1?Q?1gymEMDP4d94hJrMzmH3QXZU0WDKvvMGchj/jlSl8BDGWi/4IXcJ1KIwf1?=
 =?iso-8859-1?Q?RLrBlADx4IfREa/A3Eza9DLpH87hAITUWyFyDyYo8KZzhpMU7hBJK380kh?=
 =?iso-8859-1?Q?+UbUprRc6aEMrR+h9QDvkk8hn0BmsGS3uKoA3d8BmQxFo+62/mXj/P5up8?=
 =?iso-8859-1?Q?d7EOUbHvWpp8AXe1NBSz7XJ01NCNJSnC1rqk+9PVSwgnB4/lJJbsyLAkqE?=
 =?iso-8859-1?Q?4bKyZhBJzkmV8128PGpxBCsHFDVUpl2oQ3tWcKEHU2PDwn+qsyOk5Nii8X?=
 =?iso-8859-1?Q?prQSoUuAdKLR1bENO+AWu0UiMfJBJRAezBVM1OVJoEWLnRh2WoUQo2SyVs?=
 =?iso-8859-1?Q?bfl1HVOzLvRumDmuYYMCUkEjnIr3RaapAcNGYMTcqjsNcAwOAFtzA73Rn5?=
 =?iso-8859-1?Q?NU1vBxKUcKl71J63aYmW9VUOhpWJOL3vlRnIMmVryO//V0KRGN/RFC12CK?=
 =?iso-8859-1?Q?Y+6sOeoSJxK20gbOQCVhJmuw+zvhcWmb5kVSBi489097SIpNrO2FBNUVZS?=
 =?iso-8859-1?Q?hTeEZ2EZgVJkBL6xKAF0rkUGgKbE3K9Kc0eULAwxlVD+w5TDUQSevzSzvt?=
 =?iso-8859-1?Q?8/HWBIcMjlne/ziVOH15r+YvT6z1S9WoeUMYelTbnPgCqrv8bVzpggKLQC?=
 =?iso-8859-1?Q?P6rOl5BQO3vA1NUxvumk4nHL3v+yWfGj8OOTCsE02LK16xVj+0oKjNJBc1?=
 =?iso-8859-1?Q?iJh9IUYZlg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	4e9QftlPDp8ufEb9nglbfGauXvELPv5CYRw1jsznzFrl9+5gKByZdkdA5WvfPwYXM4PD9tzVJYvxdxwjVCwpNw7+Qipvf4Zk5W8G9Q6VslTsSiIDUNBMxLE3xlxAgA+HwIdKUfdz9UpO/f92Zne1UoTxWu3v0OQBHrk83r4IoP7MYaGqT9k5KI7ZA+il4M+d+udYnm9UbYde508fA3dpFsS3FxCl/4NcX39l8ABUnp+mvkIbIGiVkl5Y28t+afyc1IHnmolSRM81VveSuVR6UMhP15NTINWHt4BDlsByGk+z5YiSb9Mr8W2H282X7fYUMhLd7bz8QX8jc/8CDlJKqw==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ce4b888-b41a-443d-1531-08df38c2d0f5
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:24.6445
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: cITWlXUUB0SB1zEUy13FpSf0Ra9KGeKvcY1APpt9hTesgDzTgDCSB6G5uYhKmr60akS7duph2z4D0X62wqGym+80nSqVjxiBu9b3xj86oYo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB6110
X-purgate-ID: tlsNG-ef75cf/1793611356-376D2AE4-E2C7CCAD/0/0
X-purgate-type: clean
X-purgate-size: 16511

Send bulk and interrupt packets to the device and return the result to=0A=
the host. Each one is a request and an answer, so they reuse the packet=0A=
tracking and the NAK handling added for control transfers.=0A=
=0A=
A bulk request carries a 32 bit length, so the host can ask us to=0A=
allocate up to 4 GB. Refuse a request that big. Do not answer it with=0A=
fewer bytes instead: the host counts the bytes it gets back, and it=0A=
resets the device when some are missing.=0A=
=0A=
Advertise usb_redir_cap_32bits_bulk_length. We already read and write=0A=
the high half of the length, but without the capability redirect.c=0A=
asserts when its own guest asks for a transfer larger than 64KiB.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 240 ++++++++++++++++++++++++++++++++++++++-=0A=
 hw/usb/trace-events      |   6 +=0A=
 2 files changed, 245 insertions(+), 1 deletion(-)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index 55a1f79623..9a83cc22ef 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -90,7 +90,15 @@ OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SER=
VER)=0A=
  */=0A=
 #define USBREDIR_SERVER_RETRY_MS 1000=0A=
 =0A=
+/*=0A=
+ * The bulk length field is 32 bits, so the host can ask for up to 4 GB.=
=0A=
+ * This is the largest transfer accepted.=0A=
+ */=0A=
+#define USBREDIR_SERVER_MAX_BULK (1 * MiB)=0A=
+=0A=
 #define USBREDIR_SERVER_CTRL 0=0A=
+#define USBREDIR_SERVER_BULK 1=0A=
+#define USBREDIR_SERVER_INTERRUPT 2=0A=
 =0A=
 /* Which message answers the host when a control transfer ends. */=0A=
 typedef enum {=0A=
@@ -113,7 +121,9 @@ typedef struct USBRedirServerPkt {=0A=
     USBPacket pkt;=0A=
 =0A=
     /* Kept for the usbredir response. */=0A=
+    struct usb_redir_interrupt_packet_header intr_hdr;=0A=
     struct usb_redir_control_packet_header ctrl_hdr;=0A=
+    struct usb_redir_bulk_packet_header bulk_hdr;=0A=
 =0A=
     /*=0A=
      * The IOV points here. IN data lands in it, OUT data is copied in.=0A=
@@ -549,6 +559,67 @@ static void usbredir_server_ctrl_complete(USBRedirServ=
er *s,=0A=
     }=0A=
 }=0A=
 =0A=
+static void usbredir_server_bulk_reply(USBRedirServer *s, uint64_t id,=0A=
+    const struct usb_redir_bulk_packet_header *hdr, uint8_t status,=0A=
+    uint8_t *data, int actual)=0A=
+{=0A=
+    struct usb_redir_bulk_packet_header resp =3D *hdr;=0A=
+    bool is_in =3D !!(hdr->endpoint & USB_DIR_IN);=0A=
+    int data_len =3D is_in ? actual : 0;=0A=
+=0A=
+    resp.status =3D status;=0A=
+    /* Both directions report how much the device moved. */=0A=
+    resp.length =3D actual;=0A=
+    resp.length_high =3D actual >> 16;=0A=
+=0A=
+    usbredirparser_send_bulk_packet(s->parser, id, &resp,=0A=
+                                    data_len > 0 ? data : NULL, data_len);=
=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_bulk_complete(USBRedirServer *s,=0A=
+                                          USBRedirServerPkt *rp)=0A=
+{=0A=
+    uint8_t status =3D usbredir_server_status(rp->pkt.status);=0A=
+    int actual =3D rp->pkt.actual_length;=0A=
+=0A=
+    trace_usbredir_server_bulk_complete(rp->redir_id, rp->bulk_hdr.endpoin=
t,=0A=
+                                        status, actual);=0A=
+    usbredir_server_bulk_reply(s, rp->redir_id, &rp->bulk_hdr, status,=0A=
+                               rp->data, actual);=0A=
+}=0A=
+=0A=
+static void usbredir_server_interrupt_reply(USBRedirServer *s, uint64_t id=
,=0A=
+    const struct usb_redir_interrupt_packet_header *hdr, uint8_t status,=
=0A=
+    uint8_t *data, int actual)=0A=
+{=0A=
+    struct usb_redir_interrupt_packet_header resp =3D *hdr;=0A=
+    bool is_in =3D !!(hdr->endpoint & USB_DIR_IN);=0A=
+    int data_len =3D is_in ? actual : 0;=0A=
+=0A=
+    resp.status =3D status;=0A=
+    /* Both directions report how much the device moved. */=0A=
+    resp.length =3D actual;=0A=
+=0A=
+    usbredirparser_send_interrupt_packet(s->parser, id, &resp,=0A=
+                                         data_len > 0 ? data : NULL,=0A=
+                                         data_len);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_interrupt_complete(USBRedirServer *s,=0A=
+                                               USBRedirServerPkt *rp)=0A=
+{=0A=
+    uint8_t status =3D usbredir_server_status(rp->pkt.status);=0A=
+    int actual =3D rp->pkt.actual_length;=0A=
+=0A=
+    trace_usbredir_server_interrupt_complete(rp->redir_id,=0A=
+                                             rp->intr_hdr.endpoint,=0A=
+                                             status, actual);=0A=
+    usbredir_server_interrupt_reply(s, rp->redir_id, &rp->intr_hdr, status=
,=0A=
+                                    rp->data, actual);=0A=
+}=0A=
+=0A=
 /*=0A=
  * USB port ops=0A=
  */=0A=
@@ -622,6 +693,12 @@ static void usbredir_server_packet_complete(USBPort *p=
ort, USBPacket *p)=0A=
     case USBREDIR_SERVER_CTRL:=0A=
         usbredir_server_ctrl_complete(s, rp);=0A=
         break;=0A=
+    case USBREDIR_SERVER_BULK:=0A=
+        usbredir_server_bulk_complete(s, rp);=0A=
+        break;=0A=
+    case USBREDIR_SERVER_INTERRUPT:=0A=
+        usbredir_server_interrupt_complete(s, rp);=0A=
+        break;=0A=
     default:=0A=
         g_assert_not_reached();=0A=
     }=0A=
@@ -1033,6 +1110,121 @@ static void usbredir_server_get_alt_setting(void *p=
riv, uint64_t id,=0A=
                                USBREDIR_SERVER_REPLY_ALT);=0A=
 }=0A=
 =0A=
+static void usbredir_server_bulk_packet(void *priv, uint64_t id,=0A=
+    struct usb_redir_bulk_packet_header *hdr,=0A=
+    uint8_t *data, int data_len)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    bool is_in =3D !!(hdr->endpoint & USB_DIR_IN);=0A=
+    int pid =3D is_in ? USB_TOKEN_IN : USB_TOKEN_OUT;=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServerPkt *rp;=0A=
+    USBEndpoint *ep;=0A=
+    uint8_t status;=0A=
+    uint32_t len;=0A=
+=0A=
+    /* The host still waits for an answer, even to a request we refuse. */=
=0A=
+    status =3D usbredir_server_ep_status(s, hdr->endpoint,=0A=
+                                       USB_ENDPOINT_XFER_BULK);=0A=
+    if (status !=3D usb_redir_success) {=0A=
+        trace_usbredir_server_refused(id, hdr->endpoint, status,=0A=
+                                      USB_ENDPOINT_XFER_BULK,=0A=
+                                      s->ep[idx].type);=0A=
+        usbredir_server_bulk_reply(s, id, hdr, status, NULL, 0);=0A=
+        usbredirparser_free_packet_data(s->parser, data);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    /* IN: what the host asked for. OUT: what the host sent. */=0A=
+    len =3D is_in ? (((uint32_t)hdr->length_high << 16) | hdr->length)=0A=
+                : (uint32_t)data_len;=0A=
+=0A=
+    /*=0A=
+     * Too big. Tell the host the transfer failed.=0A=
+     * Do not send back less data instead. The host would see the=0A=
+     * missing bytes as an error and reset the device.=0A=
+     */=0A=
+    if (len > USBREDIR_SERVER_MAX_BULK) {=0A=
+        trace_usbredir_server_bulk_too_big(id, hdr->endpoint, len);=0A=
+        usbredir_server_bulk_reply(s, id, hdr, usb_redir_inval, NULL, 0);=
=0A=
+        usbredirparser_free_packet_data(s->parser, data);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    ep =3D usb_ep_get(device, pid, ep_nr);=0A=
+    rp =3D usbredir_server_pkt_alloc(len, idx);=0A=
+    rp->redir_id =3D id;=0A=
+    rp->type =3D USBREDIR_SERVER_BULK;=0A=
+    rp->bulk_hdr =3D *hdr;=0A=
+=0A=
+    usb_packet_setup(&rp->pkt, pid, ep, 0, s->next_id++, false, false);=0A=
+=0A=
+    /* OUT data comes from the host. IN data is written by the device. */=
=0A=
+    if (!is_in && len > 0) {=0A=
+        memcpy(rp->data, data, len);=0A=
+    }=0A=
+    usb_packet_addbuf(&rp->pkt, rp->data, len);=0A=
+=0A=
+    trace_usbredir_server_bulk(id, hdr->endpoint, len);=0A=
+    usbredirparser_free_packet_data(s->parser, data);=0A=
+    usbredir_server_submit(s, rp);=0A=
+}=0A=
+=0A=
+/*=0A=
+ * The host sends an interrupt_packet. It is a request: interrupt OUT=0A=
+ * data to write, or a single IN request to answer.=0A=
+ */=0A=
+static void usbredir_server_interrupt_packet(void *priv, uint64_t id,=0A=
+    struct usb_redir_interrupt_packet_header *hdr,=0A=
+    uint8_t *data, int data_len)=0A=
+{=0A=
+    USBRedirServer *s =3D priv;=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    bool is_in =3D !!(hdr->endpoint & USB_DIR_IN);=0A=
+    int pid =3D is_in ? USB_TOKEN_IN : USB_TOKEN_OUT;=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServerPkt *rp;=0A=
+    USBEndpoint *ep;=0A=
+    uint8_t status;=0A=
+    int len;=0A=
+=0A=
+    /* The host still waits for an answer, even to a request we refuse. */=
=0A=
+    status =3D usbredir_server_ep_status(s, hdr->endpoint,=0A=
+                                       USB_ENDPOINT_XFER_INT);=0A=
+    if (status !=3D usb_redir_success) {=0A=
+        trace_usbredir_server_refused(id, hdr->endpoint, status,=0A=
+                                      USB_ENDPOINT_XFER_INT,=0A=
+                                      s->ep[idx].type);=0A=
+        usbredir_server_interrupt_reply(s, id, hdr, status, NULL, 0);=0A=
+        usbredirparser_free_packet_data(s->parser, data);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    /* IN: what the host asked for. OUT: what the host sent. */=0A=
+    len =3D is_in ? hdr->length : data_len;=0A=
+=0A=
+    ep =3D usb_ep_get(device, pid, ep_nr);=0A=
+    rp =3D usbredir_server_pkt_alloc(len, idx);=0A=
+    rp->redir_id =3D id;=0A=
+    rp->type =3D USBREDIR_SERVER_INTERRUPT;=0A=
+    rp->intr_hdr =3D *hdr;=0A=
+=0A=
+    usb_packet_setup(&rp->pkt, pid, ep, 0, s->next_id++, false, false);=0A=
+=0A=
+    /* OUT data comes from the host. IN data is written by the device. */=
=0A=
+    if (!is_in && len > 0) {=0A=
+        memcpy(rp->data, data, len);=0A=
+    }=0A=
+    usb_packet_addbuf(&rp->pkt, rp->data, len);=0A=
+=0A=
+    trace_usbredir_server_interrupt(id, hdr->endpoint, len);=0A=
+    usbredirparser_free_packet_data(s->parser, data);=0A=
+    usbredir_server_submit(s, rp);=0A=
+}=0A=
+=0A=
 static void usbredir_server_filter_reject(void *priv)=0A=
 {=0A=
     trace_usbredir_server_filter_reject();=0A=
@@ -1056,6 +1248,24 @@ static void usbredir_server_interface_info(void *pri=
v,=0A=
     /* The host should not send this to a device. Nothing to do. */=0A=
 }=0A=
 =0A=
+static void usbredir_server_alloc_bulk_streams(void *priv, uint64_t id,=0A=
+    struct usb_redir_alloc_bulk_streams_header *hdr)=0A=
+{=0A=
+    /* We do not advertise bulk streams. Nothing to do. */=0A=
+}=0A=
+=0A=
+static void usbredir_server_start_bulk_receiving(void *priv, uint64_t id,=
=0A=
+    struct usb_redir_start_bulk_receiving_header *hdr)=0A=
+{=0A=
+    /* We do not advertise this. Nothing to do. */=0A=
+}=0A=
+=0A=
+static void usbredir_server_stop_bulk_receiving(void *priv, uint64_t id,=
=0A=
+    struct usb_redir_stop_bulk_receiving_header *hdr)=0A=
+{=0A=
+    /* We do not advertise this. Nothing to do. */=0A=
+}=0A=
+=0A=
 static void usbredir_server_cancel_data_packet(void *priv, uint64_t id)=0A=
 {=0A=
     USBRedirServer *s =3D priv;=0A=
@@ -1096,7 +1306,9 @@ static void usbredir_server_cancel_data_packet(void *=
priv, uint64_t id)=0A=
 static void usbredir_server_send_cancelled(USBRedirServer *s,=0A=
                                            USBRedirServerPkt *rp)=0A=
 {=0A=
+    struct usb_redir_interrupt_packet_header intr;=0A=
     struct usb_redir_control_packet_header ctrl;=0A=
+    struct usb_redir_bulk_packet_header bulk;=0A=
 =0A=
     switch (rp->type) {=0A=
     case USBREDIR_SERVER_CTRL:=0A=
@@ -1106,6 +1318,21 @@ static void usbredir_server_send_cancelled(USBRedirS=
erver *s,=0A=
         usbredirparser_send_control_packet(s->parser, rp->redir_id,=0A=
                                            &ctrl, NULL, 0);=0A=
         break;=0A=
+    case USBREDIR_SERVER_BULK:=0A=
+        bulk =3D rp->bulk_hdr;=0A=
+        bulk.status =3D usb_redir_cancelled;=0A=
+        bulk.length_high =3D 0;=0A=
+        bulk.length =3D 0;=0A=
+        usbredirparser_send_bulk_packet(s->parser, rp->redir_id,=0A=
+                                        &bulk, NULL, 0);=0A=
+        break;=0A=
+    case USBREDIR_SERVER_INTERRUPT:=0A=
+        intr =3D rp->intr_hdr;=0A=
+        intr.status =3D usb_redir_cancelled;=0A=
+        intr.length =3D 0;=0A=
+        usbredirparser_send_interrupt_packet(s->parser, rp->redir_id,=0A=
+                                             &intr, NULL, 0);=0A=
+        break;=0A=
     default:=0A=
         return;=0A=
     }=0A=
@@ -1153,6 +1380,8 @@ static void usbredir_server_create_parser(USBRedirSer=
ver *s)=0A=
     s->parser->hello_func =3D usbredir_server_hello;=0A=
     s->parser->reset_func =3D usbredir_server_reset;=0A=
     s->parser->control_packet_func =3D usbredir_server_control_packet;=0A=
+    s->parser->bulk_packet_func =3D usbredir_server_bulk_packet;=0A=
+    s->parser->interrupt_packet_func =3D usbredir_server_interrupt_packet;=
=0A=
     s->parser->set_configuration_func =3D usbredir_server_set_configuratio=
n;=0A=
 =0A=
     /* The parser calls these directly, so they must not be NULL. */=0A=
@@ -1164,12 +1393,21 @@ static void usbredir_server_create_parser(USBRedirS=
erver *s)=0A=
     s->parser->device_disconnect_ack_func =3D=0A=
         usbredir_server_device_disconnect_ack;=0A=
     s->parser->interface_info_func =3D usbredir_server_interface_info;=0A=
+    s->parser->alloc_bulk_streams_func =3D usbredir_server_alloc_bulk_stre=
ams;=0A=
     s->parser->cancel_data_packet_func =3D usbredir_server_cancel_data_pac=
ket;=0A=
+    s->parser->start_bulk_receiving_func =3D=0A=
+        usbredir_server_start_bulk_receiving;=0A=
+    s->parser->stop_bulk_receiving_func =3D=0A=
+        usbredir_server_stop_bulk_receiving;=0A=
 =0A=
-    /* Capabilities: 64-bit IDs, connect_device_version, ep_info sizes */=
=0A=
+    /*=0A=
+     * Capabilities: 64-bit IDs, connect_device_version, ep_info sizes=0A=
+     * and 32-bit bulk lengths.=0A=
+     */=0A=
     usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version=
);=0A=
     usbredirparser_caps_set_cap(caps, usb_redir_cap_ep_info_max_packet_siz=
e);=0A=
     usbredirparser_caps_set_cap(caps, usb_redir_cap_64bits_ids);=0A=
+    usbredirparser_caps_set_cap(caps, usb_redir_cap_32bits_bulk_length);=
=0A=
 =0A=
     /*=0A=
      * In USB the host is the side that starts every transfer; a device=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index d63156a930..5ec5127efa 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -417,3 +417,9 @@ usbredir_server_nak_park(uint64_t id, int ep) "id %" PR=
Iu64 " ep %d"=0A=
 usbredir_server_nak_retry(uint64_t id, int ep) "id %" PRIu64 " ep %d"=0A=
 usbredir_server_ctrl_complete(uint64_t id, int status, int actual) "id %" =
PRIu64 " status %d actual %d"=0A=
 usbredir_server_ctrl_refused(uint64_t id, int status) "id %" PRIu64 " stat=
us %d"=0A=
+usbredir_server_bulk(uint64_t id, uint8_t ep, size_t len) "id %" PRIu64 " =
ep 0x%02x len %zu"=0A=
+usbredir_server_bulk_complete(uint64_t id, uint8_t ep, int status, int act=
ual) "id %" PRIu64 " ep 0x%02x status %d actual %d"=0A=
+usbredir_server_bulk_too_big(uint64_t id, uint8_t ep, uint32_t len) "id %"=
 PRIu64 " ep 0x%02x len %u"=0A=
+usbredir_server_refused(uint64_t id, uint8_t ep, int status, uint8_t want,=
 uint8_t got) "id %" PRIu64 " ep 0x%02x status %d, wanted type %u, it is %u=
"=0A=
+usbredir_server_interrupt(uint64_t id, uint8_t ep, size_t len) "id %" PRIu=
64 " ep 0x%02x len %zu"=0A=
+usbredir_server_interrupt_complete(uint64_t id, uint8_t ep, int status, in=
t actual) "id %" PRIu64 " ep 0x%02x status %d actual %d"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467873.1677002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHg-0006BL-21; Mon, 02 Nov 2026 09:24:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467873.1677002; Mon, 02 Nov 2026 09:24:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHf-00068C-7g; Mon, 02 Nov 2026 09:24:55 +0000
Received: by outflank-mailman (input) for mailman id 1467873;
 Mon, 02 Nov 2026 09:22:38 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFS-0003VB-5d
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFR-008rMY-IP
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:37 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8565a-e002-0a2a0a5209dd-0a2a4508a618-16
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:37 +0100
Received: from [40.107.75.80]
 (helo=OS8PR02CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8565b-f659-0a2a45080019-286b4b50506f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:37 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TYNPR06MB9200.apcprd06.prod.outlook.com (2603:1096:405:3d5::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:31 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=hnW8BwR6yUMh2WDfGAk0IBQoPkYN0s1+1d9XAZpk31ln+w71kLjqzaULhxjAZZL13NVupmmsddsf8hko+HeEDC27tf4T0UlC6NkJUHxqpSBmENUjNhoeAJrMR9bwGARM1/vrwx0pVd1pTIw6B6RDYgIWYG4H9l9RCI9mc77eQHDFuGk5ru3SbmHC4k9iKSDSmZqRTbt9oKji08tQgzcAwv5atkXv1ggqM5z7IYERTSQFxWSQkddF6PTWdwx6aEtoKUBE5hcLcFrM1GUe4HvGma6wrf8r3lJ5B9+Y9Gp/5nQOD8G1VrYKgZdgxiK9gDreM7zn228viyiw11zJvQl4aA==
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=f5m4vFgqwJ7d4DsSLSFySW7I7g6HmM6xGn7bEovmalM=;
 b=pJiPsezEw1IRMS8V7Im2LNNu9BPLZyyzEjdAIecGw4URgxu/G02z1UbZEl+8ieFDpfPX7SJbfAlYJjxT7pfrR4ZUUDb/Io3z/dVRrVviQzlIAJh0v1YlJiUrdE2fDKcFA6pTrF9ynQkxtKejGu1mxEbu0LF62FpnbEfyOjbHDjSRyXkQRbfC1/5MlKSGe8Ag9cG7hyBhVkkoOe9D+KfrBs7tyr7Hq1/S9pQn4xb/GHdHtaEtLz3sNvcxUF1UU8HAY78Z5e5j3KlmpPQOYdiG1u8IxF9KK0AhkrCke789+mDewOZMYBWcxaFzKRJqIuUxUK5cmOgURkCj3ewGChHaCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=f5m4vFgqwJ7d4DsSLSFySW7I7g6HmM6xGn7bEovmalM=;
 b=eRL6zqrIMHSGEcHIT0oVaLtaWSFUdGI1mu2EbhZzxDSKbJ55D9zOPb2PPAz9P43bmwRnxOiFNM6EL+c7hU8I5yJFX2g1P98g45oSwW6iIMMCk6fN5DrnuVRTBiyfkOzimBcWR8J3K/LrvJPNLAHGKz7lZz2kI1fJ9mLaq+KDC1yRs8G9taQGoKRBHVCTiRLrApLwjmDWzwL9xSWMgn722rlNmJidWdtTPk4RAM7XL0Zm7h6NT80fCld6eJ3LY3lNY9me9IQe4qOuqJxs+SNjebaX0JPngQ7HpWzWmbMm3zgQ9ZYrhP2zlHyFTBunZUeyapYB81e9JHWTbmXRBZKMug==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 16/18] hw/usb/redirect-server: Stream interrupt IN
 endpoints
Thread-Topic: [PATCH v8 16/18] hw/usb/redirect-server: Stream interrupt IN
 endpoints
Thread-Index: AQHdaqusEi/dXAV6WUG6mAb2gc7SGg==
Date: Mon, 2 Nov 2026 09:22:26 +0000
Message-ID: <20261102092201.1729245-17-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TYNPR06MB9200:EE_
x-ms-office365-filtering-correlation-id: bff08b16-1622-4acd-2d19-08df38c2d21a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|23010399003|7416014|366016|1800799024|10067099003|18002099003|22082099003|921020|38070700021|56012099006|5023799004|261021121427099003|261022113327099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|261009223027099003|261028144727099003|261021123027099003;
x-microsoft-antispam-message-info:
 ITZWEmKUF7oTxfRhKbnxpzA6oHc6WAAZhiqIPeR5dS+p1UmOEoGRh6px60eCreoVa0V0LpKlwXMa3FR/8POU/v1BhRkib49JB0H2eWU5kEKrVtGLUHjgIpBv9I7VqCtTanILuj5unL2CwZUoEjY8k53qXMVC2HEw1wGjbzg/AREDAIYb16aEef2+4qCTj0MsSDuTeKf/3rgCdS49TLKIMsZa9B4n1VziU7FJP1k0v5GPEOt+69tymkqLg2BlfTJA51lJTq0c+qdDfKUSUVRK7JaANDw93pRhnUmAsWF14DAICYZeBePG2GoPTouB9T1T7XdAsUxc9oCiqABNvKGQPe8+gMpZDdFACuaMrkzsdqWTWlMdW46sl9ro1+oNo2nv3a5iLHuz0N8wcEESWwfmbQagLyl7bMC/xMGDOKRxXKwQVeLvEZeSs2GgEGrIkFQvS96294Fiz0+qN7S3v/DdxZy/IOmbbyct1AyBjaPvC9Daug5fEaZW8vdHxkTx7axz1rpB/ljhaIVD44LVpcPrZCWSMp0zC/Q0S95o4B/mI4zgke8OfDx6AIhZLuWYbPI1zgJZKe0geicQz5cCKF4pJ7D9kkfSIGknPNfCz8/TCoFv2ETXcKYVxIHDntRaKt40QFTHjVgrzYsFx92p2C8LSmXOd2t46lD58Poh5gHB7wTZBhQZRHHCy3BDpLcf8Wj5j8Cc41hUsKEH7nKuqbfJgn1rnqV9yn1PlyOZsrVdJ04=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(7416014)(366016)(1800799024)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(5023799004)(261021121427099003)(261022113327099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(261009223027099003)(261028144727099003)(261021123027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?b6ebnCYGdPJ57FCe37CRPbq6fRTJWYywJ/0jVzMxmkPsEwBa8bvrvFhTY4?=
 =?iso-8859-1?Q?HpiQ+/v5MK/w66WinaIT06nF4UTVtlPM5hTJMkWWwl7IRk7XDy92IvC58l?=
 =?iso-8859-1?Q?mt8UUVDrxtz8ploXn6M9U9QFuKBxXGg1X19v7Qe2Rj7JmstJL35HBplhD2?=
 =?iso-8859-1?Q?gjDeHxi1USeZMDP8hgEbDN/zkMIH0K9HDltFVzunl+A23W2zDZJ/37xKUn?=
 =?iso-8859-1?Q?H1dal20kztS7u4WfKvBU/tp/FDaxdpC5vmjfi7jZ4M2ZCXVRXZOAFLv4RS?=
 =?iso-8859-1?Q?QKKtGhzeUM/JrYTA/qZiL8e61eE+g7MKhIUDS85lNAlNlAGYp1ahgvtqEi?=
 =?iso-8859-1?Q?BmVATri535YnwGyhfN8VX6E0R8FttStrRI1IKwXFid6gBFSLKmwtytvApb?=
 =?iso-8859-1?Q?3DULTm0udnMXd3PV6eEksUL3SdPR3mq5dGE2uCItMICVdVKEJFE+cIiTvh?=
 =?iso-8859-1?Q?pIXA0XiwE6rRGdm7/LtIvSfPTpdxN5sMS+XsU/hgt1a1vH9SQLpQ/y0G4f?=
 =?iso-8859-1?Q?SPas8HQ9rC9TsISAkGtcFRV0Ib2XPPdt3DSeyN1a9KUMecGkk1CW/zjtsK?=
 =?iso-8859-1?Q?H67lqBGDoGplbhb4ELO6CCGz04iY8B27hgImpEGoWDxQEeU6PRaP+5gZ8+?=
 =?iso-8859-1?Q?PqkFPCPFUeZdU9PJVA4sKhgESBcxN/dzQp6PlJosfUH7HctNoP8sntq+g1?=
 =?iso-8859-1?Q?IaY4ZGiAOUZNDbrD7QfEh63VDlMLkx08IdIB/3Piu3QFbUrZfMnSesjKK0?=
 =?iso-8859-1?Q?rUrEKY3geOKULmz8UbDl0pjOGckRAkizrQrawkOzvAaX95qkfgsL1D5Mqp?=
 =?iso-8859-1?Q?lhIAxxhZA11+epRm7+XQcNgI3VJViXX05y/kjwII3cYDN7ry80YWjfkv1+?=
 =?iso-8859-1?Q?yfTriBqjLk3Go+147k/AjB8T0UuZRC1ZQdzQvowQ9oP0VZGAaszQwjCtuA?=
 =?iso-8859-1?Q?kNJ2prffF+B/W8ZGVEzY/ZNhPIqUslJSY4bX8vqHoIj3p0p65xTE37C5Lk?=
 =?iso-8859-1?Q?l56vs7e2Yw3uwSJFb65TURW4CkkIKYXl5biBVDrQ+rj6k8LrZDC2QErKu3?=
 =?iso-8859-1?Q?oeEuterOGYo7wGbA3e6buFrrIRZ8Bu8SbTjbST30XjqzLHzDzwote2pint?=
 =?iso-8859-1?Q?+nkB4qb27bBIsqNMntRKrfD92n+RyKhd5AmrXqn81Q8cs+Ei8qHnJ3nVn5?=
 =?iso-8859-1?Q?jnvvlCZuvX/LiqBLAklp8E7ibpQAJcv0oST3R0OzT0gkC+XEHTigDtWIg3?=
 =?iso-8859-1?Q?j52MXusnZzLzoJjMX9etYnOmt6QeWFVAXLxiM7x8flz82/4ga2YBm8OWqu?=
 =?iso-8859-1?Q?VvXLBP40VkCHJGQrSviTeNN5RvlPjr8YG8IX9xzzFI7RPd1mE/zQETiOrW?=
 =?iso-8859-1?Q?9m3MxS5B2x8NGZrTOMWviU35U6/jOCL/8EMhgTPBYp4B6kqzHwor2dKMfm?=
 =?iso-8859-1?Q?SYHUO6Yr8gPS28qg/DjOl6ye87KICnX3bZ78J01a/At5lUsWJyIj/ufPzu?=
 =?iso-8859-1?Q?2LS4qBPewMwn2n2BJLpb1xTHtQ3yseE1n53pl+hpY1cw2BYyjPQZDDZ0J8?=
 =?iso-8859-1?Q?HuLWMUT2mdJl7VYnnOVWq37vJmFWga6Mu2k1/xH1TztPshJ9wPQdCHv0+G?=
 =?iso-8859-1?Q?AywsI0zMzAYpQXhde77W4+JCLczW3PPn2hRZQugURbbKwrjhJtpxXr7F1H?=
 =?iso-8859-1?Q?dm4CGJyEsvJKxinMb9BhHWuPhAEXwZ4gt8kkl6pYh/Gqp4a3w71XP0stPz?=
 =?iso-8859-1?Q?YwXBFZC+ImXekQ1RldP7V4yWaiFSC+yE0JTRTKTTJHchYVeTxH+5kWEfXb?=
 =?iso-8859-1?Q?sEtCxdZNDA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	noBYpc6iEeiLzf0oyCmz1BEfxgKJf8n3ujU7bxVPeFZJkdE6Sh09ilmZbrodn/pPlfpw45QlVEGjoyIbQIpjuOc8ON0Jibo/FZ5lz8SewlyayTdTf+7s70LY54zw38AzpbhtrK9p6DkiIp7+tSm6Je8wrWRxamlhNtcntrOBV0dNKKtWTHtFSGD53UQAyGC5jvMnKPyFL21bWA8HEbhAAtTZj2LbGf5pRUS/emg6K9bOvK6u+wHQOTh/BiIGFfrj4lW8/1hOjzawT8trjoNwln06ZLka27Tj70nQ64/9vJpoKMYsubqxFkgscQhCGvcZ+WL2TKD6BElAW7OYpP47oA==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bff08b16-1622-4acd-2d19-08df38c2d21a
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:26.1413
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 48Fchs8MIibyukMV/pB0heWTnK2bW++l+OVN4BUn2KRoAaWvZzda9XKcfqcZ2tSUsetN6DZkYYoFOIq+KfGwCgkqMNdpfrNnhSxeuCXGnKQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYNPR06MB9200
X-purgate-ID: tlsNG-c1860d/1793611357-CC37587B-3DADC37A/0/0
X-purgate-type: clean
X-purgate-size: 20642

Interrupt IN is not a request and an answer in usbredir. The host asks=0A=
once with start_interrupt_receiving. After that it expects a packet=0A=
every time the device has data.=0A=
=0A=
Park one IN packet on the device for each streaming endpoint. A device=0A=
that answers USB_RET_ASYNC holds the packet and completes it when it=0A=
has data. A device that answers USB_RET_NAK gives the packet back at=0A=
once, so park a new one when the bus reports a wakeup on that endpoint.=0A=
A slow timer parks one too, for a device that does not report a wakeup.=0A=
A streamed request does not wait on the endpoint's list the way a host=0A=
request does, because this timer already asks again.=0A=
=0A=
Wait for the endpoint's bInterval before parking the next one. Some=0A=
devices answer every time. Without the wait we would ask as fast as=0A=
the main loop runs, and the guest would get no time.=0A=
=0A=
On an error other than a stall the stream stays up, but back off to the=0A=
slow timer. At a high speed bInterval of 125us an endpoint that keeps=0A=
failing would otherwise send thousands of status messages a second.=0A=
=0A=
Give every endpoint its own timer and bottom half. We ask each endpoint=0A=
at its own rate. Drop the timer when the bottom half has already asked,=0A=
so it does not fire for nothing.=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 309 ++++++++++++++++++++++++++++++++++++++-=0A=
 hw/usb/trace-events      |   4 +=0A=
 2 files changed, 308 insertions(+), 5 deletions(-)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index 9a83cc22ef..cfd2bcc438 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -96,9 +96,13 @@ OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SER=
VER)=0A=
  */=0A=
 #define USBREDIR_SERVER_MAX_BULK (1 * MiB)=0A=
 =0A=
+/* Buffer size for an interrupt IN endpoint before its descriptor is seen.=
 */=0A=
+#define USBREDIR_SERVER_INTR_STREAM_DEFAULT_LEN 64=0A=
+=0A=
 #define USBREDIR_SERVER_CTRL 0=0A=
 #define USBREDIR_SERVER_BULK 1=0A=
 #define USBREDIR_SERVER_INTERRUPT 2=0A=
+#define USBREDIR_SERVER_INTR_STREAM 3=0A=
 =0A=
 /* Which message answers the host when a control transfer ends. */=0A=
 typedef enum {=0A=
@@ -156,6 +160,15 @@ typedef struct USBRedirServerEp {=0A=
     /* Asks again for a device that does not wake the endpoint. */=0A=
     QEMUTimer *retry;=0A=
 =0A=
+    /*=0A=
+     * Interrupt IN streaming. The timer asks the device again at the=0A=
+     * endpoint's own rate, and more slowly after a NAK or an error.=0A=
+     * The bottom half asks at once when the device says it has data.=0A=
+     */=0A=
+    QEMUTimer *intr_stream_timer;=0A=
+    QEMUBH *intr_stream_bh;=0A=
+    bool intr_streaming;=0A=
+=0A=
     uint16_t max_packet;=0A=
     uint8_t interval;=0A=
     uint8_t iface;=0A=
@@ -184,7 +197,7 @@ struct USBRedirServer {=0A=
     bool host_connected;=0A=
     bool device_announced;=0A=
 =0A=
-    /* Every request the host is still waiting for an answer to. */=0A=
+    /* Every request waiting for the device to answer. */=0A=
     QTAILQ_HEAD(, USBRedirServerPkt) inflight;=0A=
     uint64_t next_id;=0A=
 =0A=
@@ -620,6 +633,97 @@ static void usbredir_server_interrupt_complete(USBRedi=
rServer *s,=0A=
                                     rp->data, actual);=0A=
 }=0A=
 =0A=
+/*=0A=
+ * How long to wait before asking the device again. bInterval means=0A=
+ * different things at different speeds: a number of frames at low and=0A=
+ * full speed, an exponent at high speed.=0A=
+ */=0A=
+static int64_t usbredir_server_intr_stream_period_ns(USBRedirServer *s,=0A=
+                                                     int ep_nr)=0A=
+{=0A=
+    int idx =3D usbredir_server_ep_index(ep_nr | USB_DIR_IN);=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    uint8_t interval =3D s->ep[idx].interval;=0A=
+=0A=
+    if (interval =3D=3D 0) {=0A=
+        interval =3D 1;=0A=
+    }=0A=
+=0A=
+    if (device && device->speed =3D=3D USB_SPEED_HIGH) {=0A=
+        interval =3D MIN(interval, 16);=0A=
+        return (1LL << (interval - 1)) * 125 * SCALE_US;=0A=
+    }=0A=
+=0A=
+    return (int64_t)interval * SCALE_MS;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * The device answered a streamed request. Send the answer to the host, th=
en=0A=
+ * ask again, because the host still wants more. Do not ask from here: the=
=0A=
+ * device may answer at once, and this function would call itself over and=
=0A=
+ * over. Arm the timer instead. It also waits for the endpoint's bInterval=
.=0A=
+ */=0A=
+static void usbredir_server_intr_stream_complete(USBRedirServer *s,=0A=
+                                                 USBRedirServerPkt *rp)=0A=
+{=0A=
+    struct usb_redir_interrupt_packet_header resp =3D rp->intr_hdr;=0A=
+    struct usb_redir_interrupt_receiving_status_header st;=0A=
+    int idx =3D usbredir_server_ep_index(resp.endpoint);=0A=
+    int ep_nr =3D resp.endpoint & 0x0f;=0A=
+    USBRedirServerEp *ep =3D &s->ep[idx];=0A=
+    USBPacket *p =3D &rp->pkt;=0A=
+    int actual =3D p->actual_length;=0A=
+    bool retry =3D false;=0A=
+    int64_t delay_ns;=0A=
+=0A=
+    trace_usbredir_server_intr_stream_complete(ep_nr, p->status, actual);=
=0A=
+=0A=
+    switch (p->status) {=0A=
+    case USB_RET_SUCCESS:=0A=
+        resp.status =3D usb_redir_success;=0A=
+        resp.length =3D actual;=0A=
+        usbredirparser_send_interrupt_packet(s->parser, 0, &resp,=0A=
+                                             actual ? rp->data : NULL,=0A=
+                                             actual);=0A=
+        usbredirparser_do_write(s->parser);=0A=
+        break;=0A=
+    case USB_RET_NAK:=0A=
+        /* no data yet; wait, unless the device wakes us first */=0A=
+        retry =3D true;=0A=
+        break;=0A=
+    default:=0A=
+        /*=0A=
+         * The endpoint failed. There is no data, so send a status=0A=
+         * message instead. The host gives it to its guest.=0A=
+         *=0A=
+         * redirect.c ends the stream only on a stall, so do the same=0A=
+         * here. If we end it on any other error, the host still=0A=
+         * thinks the stream runs, and it never asks again.=0A=
+         */=0A=
+        st.endpoint =3D resp.endpoint;=0A=
+        st.status =3D usbredir_server_status(p->status);=0A=
+        usbredirparser_send_interrupt_receiving_status(s->parser, 0, &st);=
=0A=
+        usbredirparser_do_write(s->parser);=0A=
+        if (p->status =3D=3D USB_RET_STALL) {=0A=
+            ep->intr_streaming =3D false;=0A=
+        } else {=0A=
+            /* the stream stays up, but do not ask at the endpoint's rate =
*/=0A=
+            retry =3D true;=0A=
+        }=0A=
+        break;=0A=
+    }=0A=
+=0A=
+    if (ep->intr_streaming) {=0A=
+        if (retry) {=0A=
+            delay_ns =3D (int64_t)USBREDIR_SERVER_RETRY_MS * SCALE_MS;=0A=
+        } else {=0A=
+            delay_ns =3D usbredir_server_intr_stream_period_ns(s, ep_nr);=
=0A=
+        }=0A=
+        timer_mod(ep->intr_stream_timer,=0A=
+                  qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + delay_ns);=0A=
+    }=0A=
+}=0A=
+=0A=
 /*=0A=
  * USB port ops=0A=
  */=0A=
@@ -699,6 +803,9 @@ static void usbredir_server_packet_complete(USBPort *po=
rt, USBPacket *p)=0A=
     case USBREDIR_SERVER_INTERRUPT:=0A=
         usbredir_server_interrupt_complete(s, rp);=0A=
         break;=0A=
+    case USBREDIR_SERVER_INTR_STREAM:=0A=
+        usbredir_server_intr_stream_complete(s, rp);=0A=
+        break;=0A=
     default:=0A=
         g_assert_not_reached();=0A=
     }=0A=
@@ -738,9 +845,11 @@ static USBRedirServerAsk usbredir_server_ask_device(US=
BRedirServer *s,=0A=
 =0A=
     /*=0A=
      * Keep the request and send it again when the device wakes the=0A=
-     * endpoint.=0A=
+     * endpoint. A streamed request asks again by itself, with its own=0A=
+     * timer.=0A=
      */=0A=
-    if (rp->pkt.status =3D=3D USB_RET_NAK) {=0A=
+    if (rp->pkt.status =3D=3D USB_RET_NAK &&=0A=
+        rp->type !=3D USBREDIR_SERVER_INTR_STREAM) {=0A=
         trace_usbredir_server_nak_park(rp->redir_id, rp->ep_idx);=0A=
         QTAILQ_INSERT_HEAD(&ep->waiting, rp, waiting_link);=0A=
         timer_mod(ep->retry, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +=0A=
@@ -786,8 +895,18 @@ static void usbredir_server_wakeup_ep(USBBus *bus, USB=
Endpoint *ep,=0A=
 {=0A=
     USBRedirServer *s =3D container_of(bus, USBRedirServer, bus);=0A=
     uint8_t addr =3D ep->nr | (ep->pid =3D=3D USB_TOKEN_IN ? USB_DIR_IN : =
0);=0A=
+    int idx =3D usbredir_server_ep_index(addr);=0A=
 =0A=
-    usbredir_server_kick_ep(s, usbredir_server_ep_index(addr));=0A=
+    /*=0A=
+     * The device has data. A streaming interrupt IN endpoint may have=0A=
+     * answered NAK. Ask now instead of waiting for the retry timer.=0A=
+     */=0A=
+    if (s->ep[idx].intr_streaming) {=0A=
+        qemu_bh_schedule(s->ep[idx].intr_stream_bh);=0A=
+    }=0A=
+=0A=
+    /* The host may also have a request stopped on this endpoint. */=0A=
+    usbredir_server_kick_ep(s, idx);=0A=
 }=0A=
 =0A=
 static USBBusOps usbredir_server_bus_ops =3D {=0A=
@@ -841,6 +960,95 @@ static void usbredir_server_pkt_free(USBRedirServer *s=
, USBRedirServerPkt *rp)=0A=
     g_free(rp);=0A=
 }=0A=
 =0A=
+/*=0A=
+ * Interrupt IN streaming=0A=
+ */=0A=
+=0A=
+static bool usbredir_server_intr_stream_inflight(USBRedirServer *s, int ep=
_nr)=0A=
+{=0A=
+    USBRedirServerPkt *rp;=0A=
+=0A=
+    QTAILQ_FOREACH(rp, &s->inflight, inflight_link) {=0A=
+        if (rp->type =3D=3D USBREDIR_SERVER_INTR_STREAM &&=0A=
+            (rp->intr_hdr.endpoint & 0x0f) =3D=3D ep_nr) {=0A=
+            return true;=0A=
+        }=0A=
+    }=0A=
+    return false;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Ask the device for data on @ep_nr and leave the request waiting. A devi=
ce=0A=
+ * sends data only when asked. Do nothing if a request on @ep_nr is still=
=0A=
+ * unanswered.=0A=
+ */=0A=
+static void usbredir_server_intr_stream_park(USBRedirServer *s, int ep_nr)=
=0A=
+{=0A=
+    USBDevice *device =3D usbredir_server_device(s);=0A=
+    int idx =3D usbredir_server_ep_index(ep_nr | USB_DIR_IN);=0A=
+    USBRedirServerPkt *rp;=0A=
+    USBEndpoint *ep;=0A=
+    int len;=0A=
+=0A=
+    /* No device to ask. */=0A=
+    if (!device || !device->attached) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    /* The host did not ask for this endpoint, or a request is unanswered.=
 */=0A=
+    if (!s->ep[idx].intr_streaming ||=0A=
+        usbredir_server_intr_stream_inflight(s, ep_nr)) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    len =3D s->ep[idx].max_packet;=0A=
+    if (len =3D=3D 0) {=0A=
+        len =3D USBREDIR_SERVER_INTR_STREAM_DEFAULT_LEN;=0A=
+    }=0A=
+    ep =3D usb_ep_get(device, USB_TOKEN_IN, ep_nr);=0A=
+    rp =3D usbredir_server_pkt_alloc(len, idx);=0A=
+    rp->type =3D USBREDIR_SERVER_INTR_STREAM;=0A=
+    /* A streamed request comes from us, not from the host. */=0A=
+    rp->redir_id =3D 0;=0A=
+    rp->intr_hdr.endpoint =3D ep_nr | USB_DIR_IN;=0A=
+=0A=
+    usb_packet_setup(&rp->pkt, USB_TOKEN_IN, ep, 0, s->next_id++,=0A=
+                     false, false);=0A=
+    usb_packet_addbuf(&rp->pkt, rp->data, len);=0A=
+=0A=
+    /*=0A=
+     * The timer is there for a device that does not wake the endpoint.=0A=
+     * We are asking now, so drop it. The answer sets it again.=0A=
+     */=0A=
+    timer_del(s->ep[idx].intr_stream_timer);=0A=
+=0A=
+    trace_usbredir_server_intr_stream_park(ep_nr, len);=0A=
+    usbredir_server_submit(s, rp);=0A=
+}=0A=
+=0A=
+/* BH and timer callback: ask again on one streaming endpoint. */=0A=
+static void usbredir_server_intr_stream_kick(void *opaque)=0A=
+{=0A=
+    USBRedirServerEp *ep =3D opaque;=0A=
+    int ep_nr =3D ep->idx - USBREDIR_SERVER_EP_IN_BASE;=0A=
+=0A=
+    usbredir_server_intr_stream_park(ep->s, ep_nr);=0A=
+}=0A=
+=0A=
+static void usbredir_server_intr_stream_cancel(USBRedirServer *s, int ep_n=
r)=0A=
+{=0A=
+    USBRedirServerPkt *tmp;=0A=
+    USBRedirServerPkt *rp;=0A=
+=0A=
+    QTAILQ_FOREACH_SAFE(rp, &s->inflight, inflight_link, tmp) {=0A=
+        if (rp->type !=3D USBREDIR_SERVER_INTR_STREAM ||=0A=
+            (rp->intr_hdr.endpoint & 0x0f) !=3D ep_nr) {=0A=
+            continue;=0A=
+        }=0A=
+        usbredir_server_pkt_free(s, rp);=0A=
+    }=0A=
+}=0A=
+=0A=
 /*=0A=
  * usbredirparser I/O and logging callbacks=0A=
  */=0A=
@@ -1248,6 +1456,63 @@ static void usbredir_server_interface_info(void *pri=
v,=0A=
     /* The host should not send this to a device. Nothing to do. */=0A=
 }=0A=
 =0A=
+/*=0A=
+ * The host asks to stream an interrupt IN endpoint. Send the receiving=0A=
+ * status first. Without that status the host throws the interrupt=0A=
+ * packet away. Then ask the device once.=0A=
+ */=0A=
+static void usbredir_server_start_interrupt_receiving(void *priv,=0A=
+    uint64_t id, struct usb_redir_start_interrupt_receiving_header *hdr)=
=0A=
+{=0A=
+    struct usb_redir_interrupt_receiving_status_header st =3D {=0A=
+        .endpoint =3D hdr->endpoint,=0A=
+        .status =3D usb_redir_success,=0A=
+    };=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    st.status =3D usbredir_server_ep_status(s, hdr->endpoint,=0A=
+                                          USB_ENDPOINT_XFER_INT);=0A=
+=0A=
+    /* Only an interrupt IN endpoint can stream. */=0A=
+    if (!(hdr->endpoint & USB_DIR_IN)) {=0A=
+        st.status =3D usb_redir_inval;=0A=
+    }=0A=
+=0A=
+    if (st.status =3D=3D usb_redir_success) {=0A=
+        s->ep[idx].intr_streaming =3D true;=0A=
+    }=0A=
+=0A=
+    trace_usbredir_server_intr_stream_start(hdr->endpoint, st.status);=0A=
+    usbredirparser_send_interrupt_receiving_status(s->parser, id, &st);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+=0A=
+    if (st.status =3D=3D usb_redir_success) {=0A=
+        usbredir_server_intr_stream_park(s, ep_nr);=0A=
+    }=0A=
+}=0A=
+=0A=
+static void usbredir_server_stop_interrupt_receiving(void *priv, uint64_t =
id,=0A=
+    struct usb_redir_stop_interrupt_receiving_header *hdr)=0A=
+{=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    trace_usbredir_server_intr_stream_stop(hdr->endpoint);=0A=
+=0A=
+    /* Endpoint 0 is control, and an OUT endpoint never streams. */=0A=
+    if (ep_nr =3D=3D 0 || !(hdr->endpoint & USB_DIR_IN)) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    s->ep[idx].intr_streaming =3D false;=0A=
+    qemu_bh_cancel(s->ep[idx].intr_stream_bh);=0A=
+    timer_del(s->ep[idx].intr_stream_timer);=0A=
+    usbredir_server_intr_stream_cancel(s, ep_nr);=0A=
+}=0A=
+=0A=
 static void usbredir_server_alloc_bulk_streams(void *priv, uint64_t id,=0A=
     struct usb_redir_alloc_bulk_streams_header *hdr)=0A=
 {=0A=
@@ -1273,6 +1538,14 @@ static void usbredir_server_cancel_data_packet(void =
*priv, uint64_t id)=0A=
     int idx;=0A=
 =0A=
     QTAILQ_FOREACH(rp, &s->inflight, inflight_link) {=0A=
+        /*=0A=
+         * A streamed request comes from us, not from the host.=0A=
+         * The host has no id for it, so a cancel never matches it.=0A=
+         */=0A=
+        if (rp->type =3D=3D USBREDIR_SERVER_INTR_STREAM) {=0A=
+            continue;=0A=
+        }=0A=
+=0A=
         if (rp->redir_id =3D=3D id) {=0A=
             idx =3D rp->ep_idx;=0A=
 =0A=
@@ -1348,6 +1621,12 @@ static void usbredir_server_stop_transfers(USBRedirS=
erver *s)=0A=
         timer_del(s->ep[i].retry);=0A=
     }=0A=
 =0A=
+    for (i =3D USBREDIR_SERVER_EP_IN_BASE + 1; i < USBREDIR_SERVER_MAX_EP;=
 i++) {=0A=
+        s->ep[i].intr_streaming =3D false;=0A=
+        qemu_bh_cancel(s->ep[i].intr_stream_bh);=0A=
+        timer_del(s->ep[i].intr_stream_timer);=0A=
+    }=0A=
+=0A=
     /*=0A=
      * No "cancelled" response here. This runs on a bus reset, a detach or=
=0A=
      * a closed chardev, and the host has dropped its own queues already.=
=0A=
@@ -1393,6 +1672,10 @@ static void usbredir_server_create_parser(USBRedirSe=
rver *s)=0A=
     s->parser->device_disconnect_ack_func =3D=0A=
         usbredir_server_device_disconnect_ack;=0A=
     s->parser->interface_info_func =3D usbredir_server_interface_info;=0A=
+    s->parser->start_interrupt_receiving_func =3D=0A=
+        usbredir_server_start_interrupt_receiving;=0A=
+    s->parser->stop_interrupt_receiving_func =3D=0A=
+        usbredir_server_stop_interrupt_receiving;=0A=
     s->parser->alloc_bulk_streams_func =3D usbredir_server_alloc_bulk_stre=
ams;=0A=
     s->parser->cancel_data_packet_func =3D usbredir_server_cancel_data_pac=
ket;=0A=
     s->parser->start_bulk_receiving_func =3D=0A=
@@ -1535,6 +1818,16 @@ static void usbredir_server_realize(DeviceState *dev=
, Error **errp)=0A=
         s->ep[i].retry =3D timer_new_ns(QEMU_CLOCK_VIRTUAL,=0A=
                                       usbredir_server_retry_ep, &s->ep[i])=
;=0A=
     }=0A=
+=0A=
+    /* Only an interrupt IN endpoint streams, so endpoint 0 and OUT are ou=
t. */=0A=
+    for (i =3D USBREDIR_SERVER_EP_IN_BASE + 1; i < USBREDIR_SERVER_MAX_EP;=
 i++) {=0A=
+        s->ep[i].intr_stream_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL,=0A=
+                                             usbredir_server_intr_stream_k=
ick,=0A=
+                                             &s->ep[i]);=0A=
+        s->ep[i].intr_stream_bh =3D=0A=
+            qemu_bh_new_guarded(usbredir_server_intr_stream_kick, &s->ep[i=
],=0A=
+                                &dev->mem_reentrancy_guard);=0A=
+    }=0A=
     s->config_descs =3D g_hash_table_new_full(g_direct_hash, g_direct_equa=
l,=0A=
                                             NULL, g_free);=0A=
     usbredir_server_clear_ep_table(s);=0A=
@@ -1545,7 +1838,6 @@ static void usbredir_server_realize(DeviceState *dev,=
 Error **errp)=0A=
     usb_register_port(&s->bus, &s->port, s, 0, &usbredir_server_port_ops,=
=0A=
                       USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL |=0A=
                       USB_SPEED_MASK_HIGH);=0A=
-=0A=
     s->chardev_close_bh =3D qemu_bh_new_guarded(usbredir_server_chardev_cl=
ose_bh,=0A=
                                               s, &dev->mem_reentrancy_guar=
d);=0A=
     s->announce_bh =3D qemu_bh_new_guarded(usbredir_server_announce_device=
, s,=0A=
@@ -1582,6 +1874,13 @@ static void usbredir_server_unrealize(DeviceState *d=
ev)=0A=
         timer_free(s->ep[i].retry);=0A=
         s->ep[i].retry =3D NULL;=0A=
     }=0A=
+=0A=
+    for (i =3D USBREDIR_SERVER_EP_IN_BASE + 1; i < USBREDIR_SERVER_MAX_EP;=
 i++) {=0A=
+        timer_free(s->ep[i].intr_stream_timer);=0A=
+        s->ep[i].intr_stream_timer =3D NULL;=0A=
+        qemu_bh_delete(s->ep[i].intr_stream_bh);=0A=
+        s->ep[i].intr_stream_bh =3D NULL;=0A=
+    }=0A=
 }=0A=
 =0A=
 static const Property usbredir_server_props[] =3D {=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index 5ec5127efa..6eb47085d0 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -423,3 +423,7 @@ usbredir_server_bulk_too_big(uint64_t id, uint8_t ep, u=
int32_t len) "id %" PRIu6=0A=
 usbredir_server_refused(uint64_t id, uint8_t ep, int status, uint8_t want,=
 uint8_t got) "id %" PRIu64 " ep 0x%02x status %d, wanted type %u, it is %u=
"=0A=
 usbredir_server_interrupt(uint64_t id, uint8_t ep, size_t len) "id %" PRIu=
64 " ep 0x%02x len %zu"=0A=
 usbredir_server_interrupt_complete(uint64_t id, uint8_t ep, int status, in=
t actual) "id %" PRIu64 " ep 0x%02x status %d actual %d"=0A=
+usbredir_server_intr_stream_start(uint8_t ep, int status) "start_interrupt=
_receiving ep 0x%02x -> status %d"=0A=
+usbredir_server_intr_stream_stop(uint8_t ep) "stop_interrupt_receiving ep =
0x%02x"=0A=
+usbredir_server_intr_stream_park(unsigned ep_nr, int len) "parked IN packe=
t ep %u len %d"=0A=
+usbredir_server_intr_stream_complete(unsigned ep_nr, int status, int actua=
l) "ep %u status %d actual %d"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467874.1677009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHh-0006Rp-GU; Mon, 02 Nov 2026 09:24:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467874.1677009; Mon, 02 Nov 2026 09:24:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHg-0006LE-7G; Mon, 02 Nov 2026 09:24:56 +0000
Received: by outflank-mailman (input) for mailman id 1467874;
 Mon, 02 Nov 2026 09:22:38 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFS-0003Vq-PF
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFS-0071w6-5X
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:38 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8565a-8faa-0a2a0a5109dd-0a2a450ad490-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:38 +0100
Received: from [52.101.127.113]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8565b-f2d2-0a2a450a0019-34657f71eec0-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:37 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by PUZPR06MB5499.apcprd06.prod.outlook.com (2603:1096:301:100::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:33 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=g1ZdZguM1FQ8vg3SJzFhwzJQzqXL+3hM9/AteQ8nO88AxdPxKbth8atPNjW4TDX/IlP/kEZA0rnjvcx28JOFi0RzWkw5t4dMM7AVcrS7aUpgKBt8aBg7KSIBbjA/W5HaVpMqh9p2GErJgkN/HrZQb4JkUrzWfb0FPiLOmT1Leg/pIZhhxUEDEy12IVbIc09r2BQ3H/CBdzTrf2LkENUMOlnXmcCILqs0m/caU63HzTIqgoS7m4bQFAj6PeWlVKUYgF22si6LA83Er2gEqXc0sp3MjDV+YUrOcFbKWPO+U77aoTEQqrkk0qjhs4rkRzvTSiqM7nKGMyOq9Y/Vhdwtfg==
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=JyKnVcNB9bb9Oppe6x9bCVeam2Cwo6wbpr3zl72AnQA=;
 b=e9Q0kdAMJix+6G9jmTifqM5W4fYwWqnD/Y+ZyRIUmZ72lTSe09WSHBur+kS+xifIVqXgjXFcfBnLxPsZU47hjUQHXU9qybo4NoAy3+MTSY+51NYwyqBytIZDHR92Eu2New06XXNcSK5zlmjSD5hxeWgi5AQLjpjej/imCPHFm05a2UQf6phJeHuxo3UHIBhsQ1DR44rQHEHTpK+AY414+EDwHeCRp2dSNyO6ReN96p+E8TAXkcz25qEgHyvLk85wVG9NbjSrpjyGWmMhTt13KmWQmtCkIC/rbojJSBVr3U7dni0C+xw3t73lTlpnUd2LC3kLAg1HTXszi2eYWRHNfw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JyKnVcNB9bb9Oppe6x9bCVeam2Cwo6wbpr3zl72AnQA=;
 b=ZsoDF8georuT7bruHA7iGarg0w8PIwhCl3uWOqGVNI4vyEdTp9sqRq8MqUcET7jgWWgk2LKDvE9p5BX0DaqSHopW2O+FOBNOTc/K7kl+g1biccUym3WuxmlcoXIVoyxUT/9k0GWputfyQafDdqpqULR4gMf5pnpNX6knYJsgyj5Bjo5vqxr7vhJNv1wjrEWe1kzGfaWQgFHf82YQkAEammjIGgne+nJmy+R6M8L0Us/Vm8xtRMvgENBX/PRMgUVkwSUcUJ0TSpj0TpS+/FsSykoAUs/pTOF0ZYBt8zFnhIl6rxGvmyScLEYXXyaaTphQ4uvFZSPb28rS+2EyO5CqPA==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 18/18] hw/arm/aspeed: Enable the usbredir server transport
Thread-Topic: [PATCH v8 18/18] hw/arm/aspeed: Enable the usbredir server
 transport
Thread-Index: AQHdaquuxEBCsVxC+0+Qv5Y70HdBCQ==
Date: Mon, 2 Nov 2026 09:22:28 +0000
Message-ID: <20261102092201.1729245-19-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|PUZPR06MB5499:EE_
x-ms-office365-filtering-correlation-id: 3d81c971-c3f4-4ac0-9dfd-08df38c2d375
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|1800799024|23010399003|366016|10067099003|18002099003|22082099003|921020|38070700021|56012099006|261021121427099003|261026121527099003|261022105027099003|261026140227099003|261009223027099003|261028144727099003;
x-microsoft-antispam-message-info:
 4qhBorJ1GBAsHRVUtZvMsppGz8DJbbJOtD5qBDIhFQ0uaLDqkIclcj++HLU1K+FDmxM4X2dIBijuxr4RZdeBjS+64qlfk0XD+Xdrc/58Fo26U5ehcTr2VcrwHFUiFyj/enSfw8Uu8UqR7Nxy1+fKOrKrMdsPrH16WlvC16q6gwrGnN7fG4KsegCt4UxirLWmAvKbcakdobKkVZ3SknuG4ZGPD1K7EqI8B1zKrMyPClH+/wRaGw0mbvWdqy8aHOqJxNxWrt5cbeYIo6AlDaVfgcJS77msrrWJ3837CEj9d5LvGQ02Qg93SseLfxSQ1DIHOGaZkG8RN0pomfk4RgKBMmywGJSI0o4r/NXlmAxnEIa7YXqKG0/kFJQEp23BmNcCxPdDXo4weDtehsREPxNeABHc8ZEwGCiQedblv+aErF8/VZe2iIppCv8xESTJLgkhJRykQLSz8eHe/YWFVK+7S6h7xhqUXr8rMGVWlWPJ3e4fZm18o5q/cnGKxMbj6Hi6mDWRfWlVhaN2QtmpzMPytTYOKxYytiF2Pll5Kb0xbScFU7un5SgVUSXYCKpNlXCIAWXG4hs52AKwlzt9XGvS+Kr6TpOaSxyQjgH/4EWPOEUxrMtKt/psOy3p2Dsu6SIW3JqkoeKWg7Gkd24bcEy3CSUyr2dUIJb2ERlVsjXOZCnnQU2txROKk6jMSMIl2xb5NU9OinPEOTyaQjorB+m2E33QViD/vOAzyem4FyZP8mwbdg2/YkB+VtcRrpUlYAEn
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(23010399003)(366016)(10067099003)(18002099003)(22082099003)(921020)(38070700021)(56012099006)(261021121427099003)(261026121527099003)(261022105027099003)(261026140227099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Toi23wnPtI1S9NOLSzhYbyBc5d5RdQNPvdTWdVfRbEFSmkYeSO51MmQ1zn?=
 =?iso-8859-1?Q?bg4xFXMJLqEll3cYoiP9RXc1XNd1fg7cLaSesZs47XW/u1se0bjQ036uoC?=
 =?iso-8859-1?Q?Iu7rA38I5GBOIpTxxri5s2LxioP128LVBfoTnxchqb78nqPKYr1wlc3tL2?=
 =?iso-8859-1?Q?mcZIyymDtd5Yrar07Evpx0a1sHhDPWs/zz7FSbbFyERm9RrT4U0CRoxoCi?=
 =?iso-8859-1?Q?wTabnhwkqSvb/PPFeyBNR5cQHWK5Sf4OH/ng5OFWXP/vJq4ep8qYSQv89O?=
 =?iso-8859-1?Q?CEEJAh3dmmn8ZJ4v/uijra0DKQN4YVShqJGCzsoMQ2PD61FSUuNF3k3A+r?=
 =?iso-8859-1?Q?SS71X5aKZjP4221vu+x1eEzzHFaummrWh6hTDKviDNnXBJZmXvr4N0pyUu?=
 =?iso-8859-1?Q?YOl+I7sMoCBBM9evgI5/JdED+d1BoUNx3XzWMUrAS9uRWq5/IfzLJl6HeJ?=
 =?iso-8859-1?Q?aHdwdJC8gQqf8evIjooeIadJwxrN1ltFbA1czKIKFaV+pzbcEQR+3nBO75?=
 =?iso-8859-1?Q?A3W9jK8ULhxen5tX6FawIIxDuXBBwla65DTTDb7GAdeHSm0LZg2FRuacTL?=
 =?iso-8859-1?Q?yTMBAaR3wcuw0G09yJB798ZOU/fmZQV0oAO7MMB9RaK0MeKV+JuXL8Y8Ng?=
 =?iso-8859-1?Q?aJjw5l1uRiFXI12CyYGbIeA8iYBHIBsrlLqT+ElI5Mt8HEdVZDtGcqiLXp?=
 =?iso-8859-1?Q?mfS26MYlZFNtD/4dCiIwB01oCfsj4WrYYgqHpi0+PAhBuZLuR8k5eLsCCW?=
 =?iso-8859-1?Q?BRzH8oLBcW9KsfkYrUIrSBa5mFV/ipT6ohrefaftULds5pz+SXqw9m6ygg?=
 =?iso-8859-1?Q?xxNipybjYvMs4JjUkaKQ1MUDz0DPONcBNPwxhCaD75chw4u0guSY3KWsGG?=
 =?iso-8859-1?Q?/bVuI1iaXUh6MJtLKIBAoB8/OlWc+uZ1c7ifUXc6vmpOeLuqS+h4mDU1mr?=
 =?iso-8859-1?Q?D1EjrjMPt3e6WfS7AxN3yYQ2KMbAfSRsWWDBhojeVAUYI7ULB0ZX5J6goS?=
 =?iso-8859-1?Q?UWV/l5x6eNo9TJid3iJdAH62Q/AcVokX/3dUi+W/MciNTIn2/xFG0xUk12?=
 =?iso-8859-1?Q?9DJQsxkzqT0jr0REi6axLSL+BHquzRvvff2WC7wVj/hyBcwF+5J7K+F0t6?=
 =?iso-8859-1?Q?SwRDf82DpGdKZhNdU+AJlGrh6VnjeLehoJ+b7V9eXzp2BUYKjexzMewbXf?=
 =?iso-8859-1?Q?rF3zZsCgX5/Lm0RaHvn54HjKWQGMXpxhdeJF27MtSDch/h1/eUaZpei7t3?=
 =?iso-8859-1?Q?tVPRYccjzjedYIcXXtOaKgj7icO8AmN6A4GI5MG5cIFreSoB63ulf8pvam?=
 =?iso-8859-1?Q?+rYd5kogxslfHdq0tqHUd4THqcCH0Ogp6pHx1a5zda5od3Td9d6kc9oGbV?=
 =?iso-8859-1?Q?qxRtqvRHXhkx/Ekbzocuq+iBvQup8xDqL0cq+Z6rzQUXiDdnutyNefREtC?=
 =?iso-8859-1?Q?0vX2KS70BCvujBOKYvNFx8d29fWreYsBvEzZX1n6/e2io2THTWjaUAW5ni?=
 =?iso-8859-1?Q?iYxcyNg/lgDWhhMmT01abEUN6Rsa3lH8gpX8I5//E/rO0iTJTEcQ5U3uJ/?=
 =?iso-8859-1?Q?LxJU0wnK0Droez+UoRTW0OXpZ9ILbMScct0O9Yu5m/X/kHdI0oZHSejwvf?=
 =?iso-8859-1?Q?HQI6kjgGY/v0bmv9YXP5KBGM1tQu3SYldK+iez/BmRy/aqzU7UPxN1Xv2C?=
 =?iso-8859-1?Q?L69SnWtgID2mNz1BydeJvIjiQ5A9uPi1gJaSw+/tbtCK+pbvONM58KbdYa?=
 =?iso-8859-1?Q?sQsDJDZtludT6kMwjpwPI3SdTWI5rF1C7QF/ip+Hk1rSU4IUm5ExjdZ4oH?=
 =?iso-8859-1?Q?k4Bi3PL/dg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	RGoginZbfwSbovwo/gOReTFogX/Pdo8biSbUqboJyGy9FW/ZM8I42ikzv7avNYmyheSZjNHhhTfdYuRVR9UT021GeSq0OXUFbYqfcT3zJuupMXBzPNj9ZC6ejDt0QXfUuq2gVcLkmhBEemIcnv8tRFxHCs5VOIIYGVDSlfiKLVumPtJGDym+Z7Odgs9U+qsT9GeMrq+A2OPmpbn65IpaYyNK61nzt4YCEO7iGTBoZogZzGbq+U/NNvlg6/e0bRUWsWo7Yn+21R+vSrtB0asVsiS2xtE6r9VmTtLzfSxHvacWRzl3XXQe+XO94KIU8lClZszcSjffc1xkGyRsoy+cjw==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d81c971-c3f4-4ac0-9dfd-08df38c2d375
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:28.8273
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: M0An+H7xYd0rRp5QNFgX8uhGuPZwEwNYqM75LQs0PDOkfAeNf9m0gC2tgZXSrCCJkEiRgGkSLkJFKJf6slktGUg6UWDEAyvL7DyPVwh+QuU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PUZPR06MB5499
X-purgate-ID: tlsNG-4011c0/1793611358-5A1DDCFC-E9581EFD/0/0
X-purgate-type: clean
X-purgate-size: 1624

Let the ASPEED machines accept "x-usb-redir-server" with -device, so a=0A=
UDC gadget can be exported to a USB host running in another QEMU:=0A=
=0A=
  -device x-usb-redir-server,id=3Dredirsrv,chardev=3D<chr>=0A=
  -device aspeed.udc-gadget,bus=3Dredirsrv.0,udc=3D/machine/soc/udc=0A=
=0A=
x-usb-redir-server sits on the main system bus so that the USB bus it=0A=
provides can be found by "bus=3D<id>.0". That makes it a sysbus device, and=
=0A=
a sysbus device can only be created with -device if the machine lists it.=
=0A=
=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
Reviewed-by: Marc-Andr=E9 Lureau <marcandre.lureau@redhat.com>=0A=
---=0A=
 hw/arm/aspeed.c | 7 +++++++=0A=
 1 file changed, 7 insertions(+)=0A=
=0A=
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c=0A=
index a7cfbd6c5e..fc27ac1788 100644=0A=
--- a/hw/arm/aspeed.c=0A=
+++ b/hw/arm/aspeed.c=0A=
@@ -409,6 +409,13 @@ static void aspeed_machine_class_init(ObjectClass *oc,=
 const void *data)=0A=
     mc->no_cdrom =3D 1;=0A=
     mc->no_parallel =3D 1;=0A=
     mc->default_ram_id =3D "ram";=0A=
+    /*=0A=
+     * Lets a UDC gadget be exported to another QEMU instance over usbredi=
r.=0A=
+     * The type name is spelled out rather than used through its macro so=
=0A=
+     * that this still builds when the usbredir library is absent.=0A=
+     */=0A=
+    machine_class_allow_dynamic_sysbus_dev(mc,=0A=
+                                           "x-usb-redir-server");=0A=
     amc->macs_mask =3D ASPEED_MAC0_ON;=0A=
     amc->uart_default =3D ASPEED_DEV_UART5;=0A=
 =0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:24:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:24:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1467878.1677018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHi-0006fu-Nz; Mon, 02 Nov 2026 09:24:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1467878.1677018; Mon, 02 Nov 2026 09:24:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoHh-0006av-Fj; Mon, 02 Nov 2026 09:24:57 +0000
Received: by outflank-mailman (input) for mailman id 1467878;
 Mon, 02 Nov 2026 09:22:45 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xNoFZ-0003XY-85
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:22:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoFY-008rQV-Kt
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:22:44 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae85663-bab6-0a2a0a5309dd-0a2a450cebf4-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:44 +0100
Received: from [40.107.44.90]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae8565e-f479-0a2a450c0019-286b2c5a9821-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:22:43 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by PUZPR06MB5956.apcprd06.prod.outlook.com (2603:1096:301:113::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Mon, 2 Nov 2026
 09:22:32 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Mon, 2 Nov 2026
 09:22:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=UHfvjTkv/aKHr523+k5k9EVdcVXyVdG0pf5WI0o2jFVWnziJEb6rksfjhu0UkPWivKvTHgUzmbr4xeA1OCe14a8B8mI8VOBZnsJMvscCK0xthJX1YxTiaC4G+pXSY4KK5xeuTKoSsbqZgSkCMRK9acJtuFc8z3Mf2k1tYxJCSGCZwUa32Tj5SvbU+NskIxF5yrGTEr/xGptoFj1ZIvrnEulTIiSYEulFg1sve+AxY7vlGMkVp8Q1JY092+a2nWZ/XgG9JyDjLBUOHVmxITvpMzYzRgXJa4bZuDyec2NsRTsAdcc2DJkt0NWWjDIPLta8N8CwoUKErG1Z3qcJX5UhyA==
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=5Qhp608D5co/UuxDymwZKOtSDGY4WQCexBrmKwma3kU=;
 b=FFqwKu97vsrOqh22J+vFcTO+CksOJtZrBUhAeYOP/3kO6pYoFrj8gs6T5QpK5UbtKjzifga+2BJJdGpigLPqnFFPUbgQr/3w1+tIIFMxNRUp7W+/iCmS/lmpRdZ/NB+aN4m5knVM0V1jGPFevdJY+rbDYKlt7x0WdIj8q7e0VldmWH+WR/JhwSYIJvpTSMcfITK4q0B3STr1AT6otvC0y1dsIwlDmUbDHtCvz7iVufeRRtxpHBL1/w9ikI51/3pfdBMkkFFvRsQ4BgKMwcQSmGuO7ToJ0WZ7AC16qLSSseWp0MIjMgyFWt/U6lM9PL3HMyUsB1++mFYGYa13yNM8FQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5Qhp608D5co/UuxDymwZKOtSDGY4WQCexBrmKwma3kU=;
 b=l4R8B3JBCjJ7HFIG0r0Z+CagXaIxqly0rKsncVEtxIXupHWwZZJFPkBsw4Jafg8FilKWZrO2F+Rdlo0GIexzcd3Ho/thS2FDC5xzbmLin60y4X7upyRZyPBk48NtIIxdRGM676bzR2SsTsri43UOoPdNgAUdPmMkWJX6v11Yj3Yj0fEEvEL0Nl6lJlylqxh7B67lkL6rBfroN8PNekqdlhSbfDz+zLvhIbaBnAgO/xPNGAWl043L7BX9EyfYg3lxLVFLhZnH2C38YV/2SPuDPdRKHr3f6s2Z/y+IdLWJeEkObNT92aLwWLMLJ0NV8yTKGmkIqd6l5ruK+ybBMjN+qg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "junjie.cao@intel.com" <junjie.cao@intel.com>,
	"junjie.cao@linux.dev" <junjie.cao@linux.dev>, "clg@kaod.org" <clg@kaod.org>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?iso-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, Tyrone
 Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>
CC: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v8 17/18] hw/usb/redirect-server: Implement isochronous OUT
 transfers
Thread-Topic: [PATCH v8 17/18] hw/usb/redirect-server: Implement isochronous
 OUT transfers
Thread-Index: AQHdaqut1wStafDeY0CrkssiAVRBhg==
Date: Mon, 2 Nov 2026 09:22:27 +0000
Message-ID: <20261102092201.1729245-18-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
Accept-Language: zh-TW, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|PUZPR06MB5956:EE_
x-ms-office365-filtering-correlation-id: 9af75636-510e-40d7-9bad-08df38c2d305
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|10067099003|18002099003|22082099003|3023799007|921020|38070700021|56012099006|5023799004|261021133027099003|261026135527099003|261021121427099003|261021130227099003|261026130827099003|261022115727099003|261022113327099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|261009221227099003|261009223027099003|261028144727099003|261021123027099003|261021135927099003;
x-microsoft-antispam-message-info:
 KJKDLW41nS7jNiXs9DcYsU3ANJkntWCSq/ob+S+D+IUnOX19wE1ARh4Xw/QkES9cw2FXTeQ0S75jIkwoNevBH+tZYGzNr8eeVc+f2x7/OINc+OnYuec3YTU7umVUj9CzxmPQA7W9gRFCy5GGPlAtY7CJP/17Y+4R+nbpk+ARkAVjW9kdoqkEao+dreB75gdEftd9l5gFue0ymnTjw6h4EA7oCdgT3GU/zOZPCXd30JMmaJ6zAAypUjdTJevhozKL8qEArBoHRz6pzudQo1uwP8v77sC82N/Ro183krvHuOBHRD2fggXD+ufptI8YbXW+Nh1WFYdqYy6OjW2piQwupsZXdFlZ+sNpLGQzog3RKoqc/4HQm/CP+dh0zh3zHIJnfnuW15KkMA3+2IRiiaypDH/0QJ4hP+AePeEPe7o9uQ1EBHGCu7Tvs86aS4z3SBp6He6ksQOhiy8rWSbnxOON42/+HBxDP9g5D4Q/re63CzNadxI7cxxRBK+Drez7XlKyewythPxnprnJCjptf/2+MeX3bVZLEVpuwN874pwlLYpOlCFL6sbV3mOoaVfrF4roTlvYkIxr9AajseqAGjn0tz/lDyTUEChYRgBIFw3xKfpX5V3SbGLv18ExQx256zhcxR/BWnYp3a3JOy2Z8lsRD1Zu8pkt6htqzjUXKE+ykboe7vkHm2saqjKcXlIjC3pRBoGGWsaEQvOcyHyLSOILJtBjfXQdzthzLZrYJvkz8Fs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(10067099003)(18002099003)(22082099003)(3023799007)(921020)(38070700021)(56012099006)(5023799004)(261021133027099003)(261026135527099003)(261021121427099003)(261021130227099003)(261026130827099003)(261022115727099003)(261022113327099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(261009221227099003)(261009223027099003)(261028144727099003)(261021123027099003)(261021135927099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?q/zBWuunlR53SxaidMgijPRXeEN9bvXWT/h5awPh9J0pwc0jraETsX9o3u?=
 =?iso-8859-1?Q?BF6O84zuhcMYYs76fekQVOPYsZ4IL72wiH8MQadnzesRBWLAAWNpPt+JxT?=
 =?iso-8859-1?Q?xTmgL1jY6YfEzsgc0d6tACD3acKS17f/QX0gYRBV5SWNMxlROpmVWUBzEK?=
 =?iso-8859-1?Q?YIhTJXnHpDcnJmbNJoQxJGhZcF22f7sTZXdJA97aqQEqDJqyOaIo7Ek/Vh?=
 =?iso-8859-1?Q?mYRl2+krPMf0A8NUaXaMQ2FbZaxojrpcGWJpTd84uXQEQXZTFYmlQ9CEts?=
 =?iso-8859-1?Q?3eQ23zK9YEkT67uwRqiu5JDpFsxb/IAIN6a70iBvpyyHvpDKA3CIBi1nvU?=
 =?iso-8859-1?Q?a3z2QZo0V+hAVtlCPAgBbaQ15M7prXdmBmRP3kIZj4uPFF63QUED0gLtCU?=
 =?iso-8859-1?Q?eerthvPtY5Iqpsqyvm8uurnc7CHsuugd2f4Rr7iNy9JU8S+28cVbWpLAMq?=
 =?iso-8859-1?Q?6ikW+gF3nkz3D1O7vvI2NeaSMiteX3/03IrcH5oNubfhfB2Qvcfvuv7emx?=
 =?iso-8859-1?Q?xGlukTZb0qqkcb9Vk1FMHiGkyicJ2SUhGP9alBY0P14MyDCw8ssdawm8q5?=
 =?iso-8859-1?Q?4K73oEPQAqC/aA6wOhhR3rTd4V0NIqoOQhnpix/GVuS+4dTOJkvvrII6Wp?=
 =?iso-8859-1?Q?+kmOeFZykQyr/02O7uTjFQMpJmm3Ncrwr0OZRevxy/rmmuut+bFlUK7RXq?=
 =?iso-8859-1?Q?5OOdbCPrZg9d9gaAsp0qS9p5qblN9j0OQ9Z8J3+4IfYUv1+L6VW28W1/t9?=
 =?iso-8859-1?Q?XNCYO8nHCInwOsTUMGLhsXbNOMrV+upmk0UWVLxQjIlhI0rMbjzlvNx4gN?=
 =?iso-8859-1?Q?2P3aGMDWn/l2Q6RwI5xmV5Ss270xR1G8aJms37MDU1xUO4TrTw6a7gYzpg?=
 =?iso-8859-1?Q?MIOnaNgDCQXiN0KdN10dL5JLHdTYmZ7tn9Pu6h4HT4GnCZ3QrdX8FCgdXQ?=
 =?iso-8859-1?Q?UJYnZuYsxLAEncmrZm4jv6GulGjj4Ne5OM2O31DHOHCbJVTwhjPFZQPEF1?=
 =?iso-8859-1?Q?O+cbKzU24hvx/jGU2ctoTHl1DmmXVVmNlbXZvKTU5yai6hjW9tiPR/csSb?=
 =?iso-8859-1?Q?YQNevelgjXI/m8/htDHqppD48+5QrbF8IEl5d+01miS/iZRbEgFts+zW9D?=
 =?iso-8859-1?Q?XU7kOfvMTMEsPDWauG5qckp2XzsasMOYXnQXdgrps+Ny3e8u9bOak2Pdf6?=
 =?iso-8859-1?Q?wb72ewWrQS3olgvKqKfZjyDifd+13VTlV2F2Qw/bjwjyQ/bc9R9skgRLXA?=
 =?iso-8859-1?Q?YXqtk44nFzxHsscdq7daaHJE6HZFWYVCGBqKaO+EsDYre92dDfFKehe5zf?=
 =?iso-8859-1?Q?g1wFaktxhNC4t7RxYEU1mLdcB1auurJYkbCB0UZbQgtutZzIoPRKtVdHNW?=
 =?iso-8859-1?Q?jhfTLkxwHwOqPL9zreaharwsIC/WLlaWGp27QUTYhbTb/blr7ak2oVsqQA?=
 =?iso-8859-1?Q?SnvJY3+Jn0aacossEPTqzVDq4cri5YqCzX3QSGgO56lNL47CChW1lx78tR?=
 =?iso-8859-1?Q?k5TxBV6ZNfpY9ekexieby9DUjlSZS6IViUpSlqhPaWmFJRvPXqs86fqDEw?=
 =?iso-8859-1?Q?CfY28tIzq754b1mFBNXRfY/niSom+ndxJsj4oN4ns0g/tRNRNgG8esHEEA?=
 =?iso-8859-1?Q?U/HfgrJ3iZfxOM7vlaoDtNrEX2mGVhUnPEdbuXmyuuGTUJghSgj7BMWeNd?=
 =?iso-8859-1?Q?2l6m/2l5dbV+0kdrJ9k+jWLMIiVf3r/wFj/DphOcdgc7n+bYTpsEVq3S3L?=
 =?iso-8859-1?Q?0wGnktf5hkpDW8ahDwbCAjSCBRluwvybqU+c1RiIEDa5dn7LPDa4kI7szp?=
 =?iso-8859-1?Q?+HAy/aTOZQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	uWQcss9zdZU3PP1SeHGRK2MfY+soujQcmMRJTtk6hPTpsIpbR+0NeROFkmV0kUDDx5OdBYDQhzJqzcR5zzlatxlvP92xBCB2VzYkB/eOeF2PgQXAOI5UUILvUetOEJqefEokYH/HFUXI0tfujmcAvOqM/bWJ4lpDnG7dKtn2gCF1T7W9lXTYWDj5zoHVvd+I/FF+fS9pSiBWCsKvBDlOUAiDpxE6M8z/10lbbbTEjTRnzhWnSCf5YUg+V0UYz2v6qBVzp8qvvxPsorjL5USO4cIcukyLE4DAcvVgfxG0OJfZKRWHnDb8BmhDBGVTQBaAIexM7hVH6jUF+P9TSPv/Ug==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9af75636-510e-40d7-9bad-08df38c2d305
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 09:22:27.5250
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: RgRMY/nGF8tbw5h/U2L74wkKpevuSJrQTrKzPYBUu7eCaNjGhIH28FWcHTmRjBrUPP3oJuZA03yKsUIQl6RROmDyeGs+mJ4GyyzC42Ido9w=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PUZPR06MB5956
X-purgate-ID: tlsNG-d25034/1793611364-76ADCA5B-BF9E709C/0/0
X-purgate-type: clean
X-purgate-size: 12687

The protocol has three callbacks for isochronous transfers:=0A=
start_iso_stream_func, stop_iso_stream_func and iso_packet_func.=0A=
Isochronous has no capability bit, and the parser calls them without=0A=
checking, so a server cannot leave them out.=0A=
=0A=
Implement the three for an OUT endpoint. Endpoint 0 is control, so=0A=
refuse it. The host sends a packet for every OUT transfer. It sends=0A=
nothing for an IN transfer, so refuse an IN endpoint with a stall.=0A=
Only a stall makes the host close the stream. Any other status leaves=0A=
it open on the host side.=0A=
=0A=
An isochronous packet has no id, and the host wants no answer. Report=0A=
a failure with an iso_stream_status. A broken endpoint fails every=0A=
frame, so send at most one report a second. A stall does not wait. A=0A=
stall ends the stream, and the host has to hear it.=0A=
=0A=
With no id, a cancel never matches an isochronous packet. A NAK does=0A=
not park it for a retry either.=0A=
=0A=
Reported-by: Junjie Cao <junjie.cao@linux.dev>=0A=
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>=0A=
---=0A=
 hw/usb/redirect-server.c | 161 ++++++++++++++++++++++++++++++++++++++-=0A=
 hw/usb/trace-events      |   5 ++=0A=
 2 files changed, 162 insertions(+), 4 deletions(-)=0A=
=0A=
diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c=0A=
index cfd2bcc438..95d25b5292 100644=0A=
--- a/hw/usb/redirect-server.c=0A=
+++ b/hw/usb/redirect-server.c=0A=
@@ -99,10 +99,14 @@ OBJECT_DECLARE_SIMPLE_TYPE(USBRedirServer, USB_REDIR_SE=
RVER)=0A=
 /* Buffer size for an interrupt IN endpoint before its descriptor is seen.=
 */=0A=
 #define USBREDIR_SERVER_INTR_STREAM_DEFAULT_LEN 64=0A=
 =0A=
+/* The shortest time between two failure reports. */=0A=
+#define USBREDIR_SERVER_ISO_STREAM_STATUS_MS 1000=0A=
+=0A=
 #define USBREDIR_SERVER_CTRL 0=0A=
 #define USBREDIR_SERVER_BULK 1=0A=
 #define USBREDIR_SERVER_INTERRUPT 2=0A=
 #define USBREDIR_SERVER_INTR_STREAM 3=0A=
+#define USBREDIR_SERVER_ISO_STREAM 4=0A=
 =0A=
 /* Which message answers the host when a control transfer ends. */=0A=
 typedef enum {=0A=
@@ -128,6 +132,7 @@ typedef struct USBRedirServerPkt {=0A=
     struct usb_redir_interrupt_packet_header intr_hdr;=0A=
     struct usb_redir_control_packet_header ctrl_hdr;=0A=
     struct usb_redir_bulk_packet_header bulk_hdr;=0A=
+    struct usb_redir_iso_packet_header iso_hdr;=0A=
 =0A=
     /*=0A=
      * The IOV points here. IN data lands in it, OUT data is copied in.=0A=
@@ -169,6 +174,13 @@ typedef struct USBRedirServerEp {=0A=
     QEMUBH *intr_stream_bh;=0A=
     bool intr_streaming;=0A=
 =0A=
+    /*=0A=
+     * Isochronous OUT streaming. The next failure report goes out at=0A=
+     * this time.=0A=
+     */=0A=
+    int64_t iso_status_next_ns;=0A=
+    bool iso_streaming;=0A=
+=0A=
     uint16_t max_packet;=0A=
     uint8_t interval;=0A=
     uint8_t iface;=0A=
@@ -724,6 +736,47 @@ static void usbredir_server_intr_stream_complete(USBRe=
dirServer *s,=0A=
     }=0A=
 }=0A=
 =0A=
+/*=0A=
+ * Isochronous transfers have no answer and no retry, so a good packet=0A=
+ * needs nothing back.=0A=
+ *=0A=
+ * A broken endpoint fails every frame, so we do not report every=0A=
+ * failure.=0A=
+ */=0A=
+static void usbredir_server_iso_stream_complete(USBRedirServer *s,=0A=
+                                                USBRedirServerPkt *rp)=0A=
+{=0A=
+    struct usb_redir_iso_stream_status_header st;=0A=
+    USBRedirServerEp *ep =3D &s->ep[rp->ep_idx];=0A=
+    USBPacket *p =3D &rp->pkt;=0A=
+    int64_t now_ns;=0A=
+=0A=
+    trace_usbredir_server_iso_stream_complete(rp->iso_hdr.endpoint, p->sta=
tus,=0A=
+                                              p->actual_length);=0A=
+=0A=
+    switch (p->status) {=0A=
+    case USB_RET_SUCCESS:=0A=
+        return;=0A=
+    case USB_RET_STALL:=0A=
+        /* The stream ends here, so the host has to hear this one. */=0A=
+        ep->iso_streaming =3D false;=0A=
+        break;=0A=
+    default:=0A=
+        now_ns =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);=0A=
+        if (now_ns < ep->iso_status_next_ns) {=0A=
+            return;=0A=
+        }=0A=
+        ep->iso_status_next_ns =3D now_ns +=0A=
+            (int64_t)USBREDIR_SERVER_ISO_STREAM_STATUS_MS * SCALE_MS;=0A=
+        break;=0A=
+    }=0A=
+=0A=
+    st.endpoint =3D rp->iso_hdr.endpoint;=0A=
+    st.status =3D usbredir_server_status(p->status);=0A=
+    usbredirparser_send_iso_stream_status(s->parser, 0, &st);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
 /*=0A=
  * USB port ops=0A=
  */=0A=
@@ -806,6 +859,9 @@ static void usbredir_server_packet_complete(USBPort *po=
rt, USBPacket *p)=0A=
     case USBREDIR_SERVER_INTR_STREAM:=0A=
         usbredir_server_intr_stream_complete(s, rp);=0A=
         break;=0A=
+    case USBREDIR_SERVER_ISO_STREAM:=0A=
+        usbredir_server_iso_stream_complete(s, rp);=0A=
+        break;=0A=
     default:=0A=
         g_assert_not_reached();=0A=
     }=0A=
@@ -845,11 +901,12 @@ static USBRedirServerAsk usbredir_server_ask_device(U=
SBRedirServer *s,=0A=
 =0A=
     /*=0A=
      * Keep the request and send it again when the device wakes the=0A=
-     * endpoint. A streamed request asks again by itself, with its own=0A=
-     * timer.=0A=
+     * endpoint. A streamed request does not wait here. The interrupt=0A=
+     * stream has a timer of its own, and isochronous never retries.=0A=
      */=0A=
     if (rp->pkt.status =3D=3D USB_RET_NAK &&=0A=
-        rp->type !=3D USBREDIR_SERVER_INTR_STREAM) {=0A=
+        rp->type !=3D USBREDIR_SERVER_INTR_STREAM &&=0A=
+        rp->type !=3D USBREDIR_SERVER_ISO_STREAM) {=0A=
         trace_usbredir_server_nak_park(rp->redir_id, rp->ep_idx);=0A=
         QTAILQ_INSERT_HEAD(&ep->waiting, rp, waiting_link);=0A=
         timer_mod(ep->retry, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +=0A=
@@ -1513,6 +1570,93 @@ static void usbredir_server_stop_interrupt_receiving=
(void *priv, uint64_t id,=0A=
     usbredir_server_intr_stream_cancel(s, ep_nr);=0A=
 }=0A=
 =0A=
+static void usbredir_server_start_iso_stream(void *priv, uint64_t id,=0A=
+    struct usb_redir_start_iso_stream_header *hdr)=0A=
+{=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    struct usb_redir_iso_stream_status_header st =3D {=0A=
+        .endpoint =3D hdr->endpoint,=0A=
+    };=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    st.status =3D usbredir_server_ep_status(s, hdr->endpoint,=0A=
+                                          USB_ENDPOINT_XFER_ISOC);=0A=
+=0A=
+    /*=0A=
+     * Only an OUT stream works here. Only a stall makes the host=0A=
+     * close the stream.=0A=
+     */=0A=
+    if (hdr->endpoint & USB_DIR_IN) {=0A=
+        st.status =3D usb_redir_stall;=0A=
+    }=0A=
+=0A=
+    if (st.status =3D=3D usb_redir_success) {=0A=
+        s->ep[idx].iso_streaming =3D true;=0A=
+        s->ep[idx].iso_status_next_ns =3D 0;=0A=
+    }=0A=
+=0A=
+    trace_usbredir_server_iso_stream_start(hdr->endpoint, hdr->pkts_per_ur=
b,=0A=
+                                           hdr->no_urbs, st.status);=0A=
+    usbredirparser_send_iso_stream_status(s->parser, id, &st);=0A=
+    usbredirparser_do_write(s->parser);=0A=
+}=0A=
+=0A=
+static void usbredir_server_stop_iso_stream(void *priv, uint64_t id,=0A=
+    struct usb_redir_stop_iso_stream_header *hdr)=0A=
+{=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServer *s =3D priv;=0A=
+=0A=
+    trace_usbredir_server_iso_stream_stop(hdr->endpoint);=0A=
+=0A=
+    /* Endpoint 0 is control, and an IN endpoint never streams. */=0A=
+    if (ep_nr =3D=3D 0 || (hdr->endpoint & USB_DIR_IN)) {=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    s->ep[idx].iso_streaming =3D false;=0A=
+}=0A=
+=0A=
+/* An isochronous packet has no id, and the host wants no answer. */=0A=
+static void usbredir_server_iso_packet(void *priv, uint64_t id,=0A=
+    struct usb_redir_iso_packet_header *hdr, uint8_t *data, int data_len)=
=0A=
+{=0A=
+    int idx =3D usbredir_server_ep_index(hdr->endpoint);=0A=
+    USBDevice *device =3D usbredir_server_device(priv);=0A=
+    int ep_nr =3D hdr->endpoint & 0x0f;=0A=
+    USBRedirServer *s =3D priv;=0A=
+    USBRedirServerPkt *rp;=0A=
+    USBEndpoint *ep;=0A=
+    uint8_t status;=0A=
+=0A=
+    status =3D usbredir_server_ep_status(s, hdr->endpoint,=0A=
+                                       USB_ENDPOINT_XFER_ISOC);=0A=
+=0A=
+    if (status !=3D usb_redir_success || !s->ep[idx].iso_streaming) {=0A=
+        trace_usbredir_server_iso_stream_dropped(hdr->endpoint, data_len);=
=0A=
+        usbredirparser_free_packet_data(s->parser, data);=0A=
+        return;=0A=
+    }=0A=
+=0A=
+    ep =3D usb_ep_get(device, USB_TOKEN_OUT, ep_nr);=0A=
+    rp =3D usbredir_server_pkt_alloc(data_len, idx);=0A=
+    rp->type =3D USBREDIR_SERVER_ISO_STREAM;=0A=
+    rp->iso_hdr =3D *hdr;=0A=
+    rp->redir_id =3D 0;=0A=
+=0A=
+    usb_packet_setup(&rp->pkt, USB_TOKEN_OUT, ep, 0, s->next_id++,=0A=
+                     false, false);=0A=
+    if (data_len > 0) {=0A=
+        memcpy(rp->data, data, data_len);=0A=
+    }=0A=
+    usb_packet_addbuf(&rp->pkt, rp->data, data_len);=0A=
+=0A=
+    trace_usbredir_server_iso_stream_packet(hdr->endpoint, data_len);=0A=
+    usbredirparser_free_packet_data(s->parser, data);=0A=
+    usbredir_server_submit(s, rp);=0A=
+}=0A=
+=0A=
 static void usbredir_server_alloc_bulk_streams(void *priv, uint64_t id,=0A=
     struct usb_redir_alloc_bulk_streams_header *hdr)=0A=
 {=0A=
@@ -1542,7 +1686,8 @@ static void usbredir_server_cancel_data_packet(void *=
priv, uint64_t id)=0A=
          * A streamed request comes from us, not from the host.=0A=
          * The host has no id for it, so a cancel never matches it.=0A=
          */=0A=
-        if (rp->type =3D=3D USBREDIR_SERVER_INTR_STREAM) {=0A=
+        if (rp->type =3D=3D USBREDIR_SERVER_INTR_STREAM ||=0A=
+            rp->type =3D=3D USBREDIR_SERVER_ISO_STREAM) {=0A=
             continue;=0A=
         }=0A=
 =0A=
@@ -1627,6 +1772,11 @@ static void usbredir_server_stop_transfers(USBRedirS=
erver *s)=0A=
         timer_del(s->ep[i].intr_stream_timer);=0A=
     }=0A=
 =0A=
+    for (i =3D 1; i < USBREDIR_SERVER_EP_IN_BASE; i++) {=0A=
+        s->ep[i].iso_streaming =3D false;=0A=
+        s->ep[i].iso_status_next_ns =3D 0;=0A=
+    }=0A=
+=0A=
     /*=0A=
      * No "cancelled" response here. This runs on a bus reset, a detach or=
=0A=
      * a closed chardev, and the host has dropped its own queues already.=
=0A=
@@ -1676,6 +1826,9 @@ static void usbredir_server_create_parser(USBRedirSer=
ver *s)=0A=
         usbredir_server_start_interrupt_receiving;=0A=
     s->parser->stop_interrupt_receiving_func =3D=0A=
         usbredir_server_stop_interrupt_receiving;=0A=
+    s->parser->start_iso_stream_func =3D usbredir_server_start_iso_stream;=
=0A=
+    s->parser->stop_iso_stream_func =3D usbredir_server_stop_iso_stream;=
=0A=
+    s->parser->iso_packet_func =3D usbredir_server_iso_packet;=0A=
     s->parser->alloc_bulk_streams_func =3D usbredir_server_alloc_bulk_stre=
ams;=0A=
     s->parser->cancel_data_packet_func =3D usbredir_server_cancel_data_pac=
ket;=0A=
     s->parser->start_bulk_receiving_func =3D=0A=
diff --git a/hw/usb/trace-events b/hw/usb/trace-events=0A=
index 6eb47085d0..642f42c864 100644=0A=
--- a/hw/usb/trace-events=0A=
+++ b/hw/usb/trace-events=0A=
@@ -427,3 +427,8 @@ usbredir_server_intr_stream_start(uint8_t ep, int statu=
s) "start_interrupt_recei=0A=
 usbredir_server_intr_stream_stop(uint8_t ep) "stop_interrupt_receiving ep =
0x%02x"=0A=
 usbredir_server_intr_stream_park(unsigned ep_nr, int len) "parked IN packe=
t ep %u len %d"=0A=
 usbredir_server_intr_stream_complete(unsigned ep_nr, int status, int actua=
l) "ep %u status %d actual %d"=0A=
+usbredir_server_iso_stream_start(uint8_t ep, uint8_t pkts, uint8_t urbs, i=
nt status) "start_iso_stream ep 0x%02x pkts_per_urb %u no_urbs %u -> status=
 %d"=0A=
+usbredir_server_iso_stream_stop(uint8_t ep) "stop_iso_stream ep 0x%02x"=0A=
+usbredir_server_iso_stream_packet(uint8_t ep, int len) "iso_packet ep 0x%0=
2x len %d"=0A=
+usbredir_server_iso_stream_dropped(uint8_t ep, int len) "iso_packet droppe=
d ep 0x%02x len %d"=0A=
+usbredir_server_iso_stream_complete(uint8_t ep, int status, int actual) "i=
so ep 0x%02x status %d actual %d"=0A=
-- =0A=
2.43.0=0A=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:30:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:30:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468013.1677052 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoMU-0006ZM-EG; Mon, 02 Nov 2026 09:29:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468013.1677052; Mon, 02 Nov 2026 09:29:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoMU-0006ZF-Bd; Mon, 02 Nov 2026 09:29:54 +0000
Received: by outflank-mailman (input) for mailman id 1468013;
 Mon, 02 Nov 2026 09:29:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNoMT-0006Z5-3t
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:29:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoMS-00Gl6j-Gj
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:29:52 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae85809-8faa-0a2a0a5109dd-0a2a4506ae72-38
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:29:52 +0100
Received: from [52.101.85.63]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae8580e-195a-0a2a45060019-3465553fed48-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:29:52 +0100
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 (2603:10b6:408:37e::6) by LV1PR03MB989627.namprd03.prod.outlook.com
 (2603:10b6:408:3f8::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 09:29:47 +0000
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902]) by LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 09:29:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=VI4BNcsOq5LzQ+O/GUFD2y+Qyzz94jC6GJeC3zegVKR03vV+ZzrGi3Q0ZKQ3FW4AUyONio0SsmHVsk5NkkHE5y4/4GaWxHwaLDBfJlN0FPRjboSogKKD06Orj0QkQpsNcNh/Sa553LP0eYVnghHG9TZu6ouIIVFAGIWiOqdyGyQqQMSZjWsxRzjlFMXDlHEINPCTpTWT5Miwxj2Un2asLJ/jLyqxUt6BjBIdx8se20VlH9MDDZDIt9JDCK18j922yLIMHVrjmeMkuKW0i1Y3VPotlhHESwct1FGpc8IejQOLD0nLYJPe+NgFDp06cfD0wgcF4YkVffbfiDaU2Avt0Q==
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=QYuATOYO7bCOGDMGiT+Nwu163Z/VSqYnN99BtbxvT+I=;
 b=ccZzjmU5rAH2E1fJ2BrlL2VWLgW8Jl8bbQvqnOHRvkSHIeWPDoPaRVVstd/JrjEvZ0m9eUz6SThw0R2PxgAw8g5yV0yum2e3xp89aFjym8hqTVHlvkm2EV79spAofsMl9WGNpolj/IjMgcFEpq07spetVOSZk3L89GrkOpYRNln3e2wvHTOXtnn5/Tkq0ILbNWxPbYr7bkfQUjBIbKSjDy9J9+OfHKkfuqBR9B23DEP8Bs3E/gb1ez8W6/AUDwWn4Xku0ic147lzQHqdRY+cZVwPugbU7PmXvH3eRUpFknT13H0PbA+K9j/D7xoxo4QWrPSvGC4KUfzOT7dyEXmF2w==
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=QYuATOYO7bCOGDMGiT+Nwu163Z/VSqYnN99BtbxvT+I=;
 b=j916YcnOFJGCEBLcZN4xWPEHXV0nvDO1Gurc8Ypacnm0p5Tu5Sb8iguqCbMK+muCLDvTzFMSpu4x1IwxJzfv/e4EiiSJxRk51sGW+Ynf2u3qTGvYc5bDI6IYs2CNSEoQ2Fz3AcCWJC0/u1uZnW0tkRBKj1Q/pUgMyMW3rCyWksU=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: chunjie.zhu@citrix.com
To: jbeulich@suse.com
Cc: andrew.cooper3@citrix.com,
	chunjie.zhu@citrix.com,
	jason.andryuk@amd.com,
	roger@xenproject.org,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/nestedsvm: remove dead code for shadow-paging L1
Date: Mon,  2 Nov 2026 17:29:38 +0800
Message-Id: <20261102092938.187235-1-chunjie.zhu@citrix.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <d00441c4-6ef6-4f40-bc32-1d4c267a6687@suse.com>
References: <d00441c4-6ef6-4f40-bc32-1d4c267a6687@suse.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: SI1PR02CA0005.apcprd02.prod.outlook.com
 (2603:1096:4:1f7::13) To LVXPR03MB989161.namprd03.prod.outlook.com
 (2603:10b6:408:37e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: LVXPR03MB989161:EE_|LV1PR03MB989627:EE_
X-MS-Office365-Filtering-Correlation-Id: 508e11fe-52b7-4dad-9592-08df38c3d61c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|11063799006|56012099006|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	BgZsg+QU3KdDkp2N2l87826W8oX1kg1VtJRgVJUIbtlVpdRdCD4iaWb9B+1leM2PilFht+IcgS6VV+zPmnfklHneb7ur3zSRiwA63BjQhtvaGGoiOE7Scr7AiWIfIbfD0olfz8smplEFse5ODU+cF26paFbe/Rw9IDQ7WW2WCH5s0BCrp9utA0K8a0WEMGhygl+VbBsi4FkeCxZlW9iUiRqh85svU4dF9BBbalpgVVQXRCtaejLAe8wYasAKWwGVwwx9wKJ8wmxIuXWbDlfbpvg/dt7OSL5K9+nFK0/MWf7l37Zq1qNGNfnbEuzgyycgEOxyHQpZfHJZdkgq71SOqA3pUwwhCiF2qYLwt4K8f0B37Spd1TzDdzhZbdU7RPxE8z2Q9YSJb5HVsblXFnTXm2zej/GoCsMisbOOaX+0035kbcWhLCNZwYDPW8hV+vKFld7ltrrhXd6IcNl/RJj0D+Rkb9Nd7j/H6fAiJ2fOX5HjdsWyZd4VEfj7hRbdEA4qiuoAUUSifW0ua/UiReWyVofKvdRmK6VacFq1+g9ZkT5YIz7j+AwhCkySBH8ogu8OQZpirEI/JSlzpVgDPAa3/K6TKhhGxDsCwwkip2wf3mtStINL54PEErYTipM/YZoH+iboRXzcjEQqvutev95gIvncJqnBxuyxUflb+7XLAzE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVXPR03MB989161.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?WVLje3uJigOcNtS9IY2YXqybCjE33LMtcCqUW6HWFucJYCW3+832i/sXI/Ag?=
 =?us-ascii?Q?YaOOkNcGnAQbka/kJ2xee36RN/344RcbTJDjW3/C3Xvvok4+Ut42+ebc32nC?=
 =?us-ascii?Q?rYmCMFR6CjwngUFkc1zVL0IKW4sDaIZt1oxXg0qF3upL3VqIn55Af1HkQKX3?=
 =?us-ascii?Q?mI6uj1wx+te/aT6ZPY6c4AxDXmc46d1cycLDW6SPEsY6lkLoqk6+4msxjeJf?=
 =?us-ascii?Q?iSNAwuhlbsmb1daRcxysWH6oG+jh4iWEE6S5nEUZVtkPWYjo8vl9yo0Av6Ux?=
 =?us-ascii?Q?3UI9zTD/3MMwcoUxvfvUSCLdkx7vq103Zojh9bp9i3lV2rlg/qJH4mKkKwSz?=
 =?us-ascii?Q?cmG4VovwQxCfuux3Q/ni0ebelMQ0TlSBOvo2MKtJ6iBK3hJ1TqFLE4cINsDr?=
 =?us-ascii?Q?Mtivvdr9snyyGA49eohcs0HuFVbrxyKMvVOfNkj4pcvojSlhJeR8VXCfDdYO?=
 =?us-ascii?Q?nz+7H8nf1L6TrhsZdbwtfbJ0+CO3PCznbUERhF7+fx+X0WmxMiRLbJ2SF8zL?=
 =?us-ascii?Q?Pk28d/XJjA+4+sOVSbZgJSIAwibKwFZFWQwW5vsD188UsFcwLiJUaOPcg46K?=
 =?us-ascii?Q?zrWT8r69UbCzHt4G4naKVzRCGpvthF1kBDiZ4K2mR2LQbTdSBxeGAKow8E7N?=
 =?us-ascii?Q?Dmdmwy4NQWAtb8MXqr04dSdfn2tMaFktkMBESCNA3GxtUwmBnWNje35vjVb8?=
 =?us-ascii?Q?I217SVxlvi9c0kOj4B1kv232FRz2kCUqVLy6a0FjzOpvKPJY5IYSLsS4p2nU?=
 =?us-ascii?Q?0yS9+D9Ip73qHUBdedyvDvEW44+g6oaAVgDuiFIINMGjUVShd/QqE1Usa2b+?=
 =?us-ascii?Q?BVJCJmiaY6mY4oRHKq3gJzQKoOYuuBD4fv/b2soUYO6pddeYZCtdcYTVQudn?=
 =?us-ascii?Q?PE2/HGx32zEQ7/BnwaaPsewJBGc+WNfAq2ufkq6lcuCyG5YFbB9UgXIxpgg+?=
 =?us-ascii?Q?w78uEX4p2coHnKr0crNoixdZg8GAvumsShxv/cwe3juN9HDewP3GunKSi4NQ?=
 =?us-ascii?Q?rXVcgeCZnsOBlONFECcwiiPF7xL00xBH99o857u7G5H+iemlKirb1jdZl0tL?=
 =?us-ascii?Q?cRB1ZGIApRrIG2tFXLaxqOq5A9YIQV0auHN8MEIsr9igT3AAiVdv/s9leab2?=
 =?us-ascii?Q?Kb0MkooVopObbpdcN/W81ESvSsrLBkG11Fle+BFJi4y7BCFKgCO+gmEEPVlZ?=
 =?us-ascii?Q?gZIV/8+R65T+vyHIEkPaXGDJuUT7ZyKtfXkIWjJTNixb/V5wLxPHi3D11jT7?=
 =?us-ascii?Q?vSEA9Wh4ygxrYDklfWl+a2kN2NJy2DYxSknSJpCV4cDW576LyayOveuvTU/W?=
 =?us-ascii?Q?udsmLcMgUPglzxA/xgUfJIYNYu1rBaG/7kCXWHzCpyc1iJ2gsEjzcRNRHAbW?=
 =?us-ascii?Q?qm/9H1vaUBaCNsW6WtCtiF71c2PLK8eIUydhHfvBve4admousW4joozsLo8l?=
 =?us-ascii?Q?GDHjeQUTbz5ZORaxTfYbxP/LTNcGyYoQL3sVtzXhxH1w+kBp1sZl24OBCUEe?=
 =?us-ascii?Q?zTShndXhf+SE1Uf4Kdu2FI9oz57fMypM5QvyIbg/JG1sZXVPYR2BNCWGMhR3?=
 =?us-ascii?Q?fINrn7RdC6loxi9S1Tjv/Q2U5p0ndIW1yHhDuraBlHfunnfMcrajQlxOf9Da?=
 =?us-ascii?Q?8IFs3ibphma0r3vAVA0EiUfVFQgIOJE9Bau5BDR+MrGOZ4Bp023L8wph8HJP?=
 =?us-ascii?Q?z7MNgSaGx1tcQKFZiHtyDYQu5lPQbE3QhHLWc/wLjYSdnirWNi5jCBN49nDj?=
 =?us-ascii?Q?dIO4QqKx6g=3D=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 508e11fe-52b7-4dad-9592-08df38c3d61c
X-MS-Exchange-CrossTenant-AuthSource: LVXPR03MB989161.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 09:29:47.2530
 (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: EHB75FmdAvC5YO9FWt0rds4S9vqfzfDXWDUBJFHVaZ8LM5DD8QdrHuyWh99qf7HM1A0gNgoa7XALvX4WyHrEkQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV1PR03MB989627
X-purgate-ID: tlsNG-16d1c6/1793611792-FD80D77B-EA2F7CA4/10/78276251493
X-purgate-type: spam
X-purgate-size: 747

On Wed, Oct 28, 2026 at 12:06:45 PM, Jan Beulich <jbeulich@suse.com> wrote:

> "Guest" alone ends up ambiguous. The "host" / "guest" terminology used before
> wasn't quite clear either, but at least there was some distinction. Easiest
> may be to drop "Guest uses" here (and below). Else, to be unambiguous, it may
> need to be something like "L1 runs L2 under nested paging".
>
> If you agree with dropping "Guest uses" and replacing "host" by "L1", I can
> make these adjustments while committing, implying
> Acked-by: Jan Beulich <jbeulich@suse.com>
> in that shape. Otherwise please submit a v3 with adjustments you consider
> suitable.
>
> Jan

Yes, I agree with both changes. Thank you for the review.

Regards,
Chunjie



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:35:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:35:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468022.1677060 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoRs-00085t-3V; Mon, 02 Nov 2026 09:35:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468022.1677060; Mon, 02 Nov 2026 09:35:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoRs-00085m-0M; Mon, 02 Nov 2026 09:35:28 +0000
Received: by outflank-mailman (input) for mailman id 1468022;
 Mon, 02 Nov 2026 09:35:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b9d0160000403d@swg.vates.tech>)
 id 1xNoRq-00085g-BB
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:35:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoRp-00G8Vm-88
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:35:25 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b9d0160000403d@swg.vates.tech>)
 id 6ae85957-8faa-0a2a0a5109dd-0a2a4507a3da-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:35:25 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19b9d0160000403d@swg.vates.tech>)
 id 6ae8595c-b4ea-0a2a45070019-b9ff1c12aeff-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:35:25 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a19b9d0160000403d.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 02 Nov 2026 09:35:20 +0000
Received: from [192.168.1.18] (88-188-240-210.subs.proxad.net [88.188.240.210])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 63AFF82EB4;
 Mon,  2 Nov 2026 10:35:19 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=0JIVu7ODu8aPw1magTgc90K1o3+5nqpxLSAdhnOrxkM=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=emsLvZnRyAiOhkBmudRJXcnknrhwCdmGvKrXjYJf0ZhYXFW/TjI48kB17EsZVRQlvygsg+eyT
 ahcNX3vGitVyp3YPi+8aw7KKjFOU0YP3v3z2Mq0hSKB0H15BYdD4z176UbVShlvpMkQlchxEo8/
 n1A9SvF6LWs+iGGKnpkwgWbzFvC3lWklxwxK8OtxQ9inVXVb+U+bUIw8FVRWeTuKp41X6ybZyt6
 /rx2A/YwkddIldiEw55AYa9CF5zMfLWndFZJM6SiZP011s9Wh/YKEyxohI1wv86mWDq2v2xI28/
 vQ+s+2KfttalkdWLnpUnyVrdGF7emoSVFKFS25Kwjo6w==
X-Zone-Loop: f89db00819842cbd9f01407b1611ae7a4ffaf64da15d
x-campaign-type: default
x-transaction-id: e8bd6695-f380-453b-b770-a9bfe88a8999
x-swg-uid: 01-4014897f-3054-4eb9-9d64-2443551f0e59
X-Mailer: Sweego
Message-ID:
 <1793612120.8631fc262581453bbf619ec5b2062170.1a19b9d0160000403d@vates.tech>
x-swg-bid: 1793612120.8631fc262581453bbf619ec5b2062170.1a19b9d0160000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 2 Nov 2026 10:35:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-3-roger@xenproject.org>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261030132419.84264-3-roger@xenproject.org>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------jtTIYAvbAdWR0L7DWJow9QWM"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793612119521
X-purgate-ID: tlsNG-ef75cf/1793612125-37AD0AE4-CE15E4C6/0/0
X-purgate-type: clean
X-purgate-size: 14044

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------jtTIYAvbAdWR0L7DWJow9QWM
Content-Type: multipart/mixed; boundary="------------RX8zYYVYlISRSTuxZBN2FTIQ";
 protected-headers="v1"; hp="clear"
Message-ID: <0a248d7d-e018-4ab9-8f87-41c00ac5e701@vates.tech>
Date: Mon, 2 Nov 2026 10:35:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-3-roger@xenproject.org>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261030132419.84264-3-roger@xenproject.org>

--------------RX8zYYVYlISRSTuxZBN2FTIQ
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

TGUgMzAvMTAvMjAyNiDDoCAxNDoyNiwgUm9nZXIgUGF1IE1vbm5lIGEgw6ljcml0wqA6DQo+
IFRoZSBjdXJyZW50IGxvZ2ljIHN5bmNzIHRoZSBBUHMnIFRTQyB3aXRoIHRoZSBCU1AgYm90
aCBhdCByZXNldCBhbmQgd2hlbg0KPiBzZXR0aW5nIHRoZSB2Q1BVIHN0YXRlLiAgVGhpcyBk
b2Vzbid0IG1hdGNoIGhhcmR3YXJlIGJlaGF2aW9yLCB3aGVyZSBBUHMNCj4gYXJlIG9ubHkg
aW4gc3luYyBhdCBwbGF0Zm9ybSBzdGFydC4NCj4gDQo+IE1vdmUgdGhlIFRTQyBzeW5jIHNv
IGl0J3MgZG9uZSBpbiBodm1fdmNwdV9pbml0aWFsaXNlKCksIHRoYXQncyBjYWxsZWQgYQ0K
PiBzaW5nbGUgdGltZSBhdCB2Q1BVIGNyZWF0aW9uLiAgVGhpcyBtYXRjaGVzIHRoZSBoYXJk
d2FyZSBiZWhhdmlvci4NCj4gSU5JVC1TSVBJIGFuZCBWQ1BVT1BfaW5pdGlhbGlzZSBubyBs
b25nZXIgcmUtc3luYyBhIHZDUFUncyBUU0MgdG8gdkNQVSAwJ3MuDQo+IA0KPiBPbiBtaWdy
YXRpb24gdGhlIFRTQyBvZmZzZXQgZm9yIG9mZmxpbmUgdkNQVXMgaXMgbm90IHRyYW5zZmVy
cmVkDQo+IChodm1fc2F2ZV9jcHVfY3R4dCgpIHNraXBzIG9mZmxpbmUgdkNQVXMpLiAgVG8g
YXZvaWQgYW4gdW5leHBlY3RlZCBza2V3DQo+IHN5bmNocm9uaXplIG9mZmxpbmUgdkNQVXMg
d2l0aCB0aGUgZmlyc3Qgb25saW5lIHZDUFUsIHRha2luZyBpbnRvIGFjY291bnQNCj4gdGhl
IFRTQ19BREpVU1QgdmFsdWUuDQo+IA0KPiBUaGUgY2xlYXJpbmcgb2YgVFNDX0FESlVTVCBp
cyBhbHNvIG1hZGUgY29uc2lzdGVudCB3aXRoIGhhcmR3YXJlIGJlaGF2aW9yOg0KPiBjbGVh
ciBpdCBvbiBTMyByZXN1bWUsIGJ1dCBub3QgYWNyb3NzIGFuIElOSVQtU0lQSSBvciBWQ1BV
T1BfaW5pdGlhbGlzZS4NCj4gQWRkaXRpb25hbGx5LCBvbiBTMyByZXN1bWUgc3RhcnQgYWxs
IHZDUFVzIGZyb20gYSBzaGFyZWQgVFNDIHJlYWRpbmcsIHNvDQo+IHRoZXkgYXJlIGluIHN5
bmMuDQo+IA0KPiBGaXhlczogYzMxZjgzMzZlNjRlICgiW0hWTV0gSW5pdGlhbGlzZSBBUCBU
U0MgdG8gc2FtZSBhcyBCUCBUU0MuIikNCj4gRml4ZXM6IDZlMDMzNjM1MWVkOSAoIng4Njog
SW1wbGVtZW50IFRTQyBhZGp1c3QgZmVhdHVyZSBmb3IgSFZNIGd1ZXN0IikNCj4gU2lnbmVk
LW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXJAeGVucHJvamVjdC5vcmc+DQo+IC0t
LQ0KPiAgIHhlbi9hcmNoL3g4Ni9odm0vZG9tYWluLmMgfCAgNSAtLS0tLQ0KPiAgIHhlbi9h
cmNoL3g4Ni9odm0vaHZtLmMgICAgfCAxOSArKysrKysrKysrKy0tLS0tLS0tDQo+ICAgeGVu
L2FyY2gveDg2L2h2bS9zYXZlLmMgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLS0NCj4gICB4ZW4vYXJjaC94ODYvdGltZS5jICAgICAgIHwgIDUgKystLS0NCj4g
ICA0IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQ0K
PiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tYWluLmMgYi94ZW4vYXJj
aC94ODYvaHZtL2RvbWFpbi5jDQo+IGluZGV4IDk3OGQ4YjIyMjI1Ni4uNzFmNDllYzdjZTlm
IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RvbWFpbi5jDQo+ICsrKyBiL3hl
bi9hcmNoL3g4Ni9odm0vZG9tYWluLmMNCj4gQEAgLTMxMiwxMSArMzEyLDYgQEAgaW50IGFy
Y2hfc2V0X2luZm9faHZtX2d1ZXN0KHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgdmNw
dV9odm1fY29udGV4dCAqY3R4KQ0KPiAgICAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIo
diwgeDg2X3NlZ19lcywgJmVzKTsNCj4gICAgICAgaHZtX3NldF9zZWdtZW50X3JlZ2lzdGVy
KHYsIHg4Nl9zZWdfdHNzLCAmdHIpOw0KPiAgIA0KPiAtICAgIC8qIFN5bmMgQVAncyBUU0Mg
d2l0aCBCU1Ancy4gKi8NCj4gLSAgICB2LT5hcmNoLmh2bS5jYWNoZV90c2Nfb2Zmc2V0ID0N
Cj4gLSAgICAgICAgZC0+dmNwdVswXS0+YXJjaC5odm0uY2FjaGVfdHNjX29mZnNldDsNCj4g
LSAgICBodm1fc2V0X3RzY19vZmZzZXQodiwgdi0+YXJjaC5odm0uY2FjaGVfdHNjX29mZnNl
dCk7DQo+IC0NCj4gICAgICAgcGFnaW5nX3VwZGF0ZV9wYWdpbmdfbW9kZXModik7DQo+ICAg
DQo+ICAgICAgIGh2bWVtdWxfY2FuY2VsKHYpOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv
eDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMNCj4gaW5kZXggZWY5Yzdj
ZDA1Nzc3Li44MWU5MGNjOGZjOGUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v
aHZtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiBAQCAtMTY2Nyw2ICsx
NjY3LDEyIEBAIGludCBodm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQ0KPiAg
ICAgICAgICAgLyogSW5pdCBndWVzdCBUU0MgdG8gc3RhcnQgZnJvbSB6ZXJvLiAqLw0KPiAg
ICAgICAgICAgaHZtX3NldF9ndWVzdF90c2ModiwgMCk7DQo+ICAgICAgIH0NCj4gKyAgICBl
bHNlDQo+ICsgICAgew0KPiArICAgICAgICAvKiBTdGFydCBpbiBzdGVwIHdpdGggdkNQVSAw
LCBhcyBhbGwgQ1BVcyBkbyBhdCBwb3dlci1vbi4gKi8NCj4gKyAgICAgICAgdi0+YXJjaC5o
dm0uY2FjaGVfdHNjX29mZnNldCA9IGQtPnZjcHVbMF0tPmFyY2guaHZtLmNhY2hlX3RzY19v
ZmZzZXQ7DQo+ICsgICAgICAgIGh2bV9zZXRfdHNjX29mZnNldCh2LCB2LT5hcmNoLmh2bS5j
YWNoZV90c2Nfb2Zmc2V0KTsNCj4gKyAgICB9DQo+ICAgDQo+ICAgICAgIHJldHVybiAwOw0K
PiAgIA0KPiBAQCAtNDAyMSwxMyArNDAyNyw2IEBAIHZvaWQgaHZtX3ZjcHVfcmVzZXRfc3Rh
dGUoc3RydWN0IHZjcHUgKnYsIHVpbnQxNl90IGNzLCB1aW50MTZfdCBpcCkNCj4gICAgICAg
aHZtX3NldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ2R0LCAmcmVnKTsNCj4gICAg
ICAgaHZtX3NldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfaWR0LCAmcmVnKTsNCj4g
ICANCj4gLSAgICAvKiBTeW5jIEFQJ3MgVFNDIHdpdGggQlNQJ3MuICovDQo+IC0gICAgdi0+
YXJjaC5odm0uY2FjaGVfdHNjX29mZnNldCA9DQo+IC0gICAgICAgIHYtPmRvbWFpbi0+dmNw
dVswXS0+YXJjaC5odm0uY2FjaGVfdHNjX29mZnNldDsNCj4gLSAgICBodm1fc2V0X3RzY19v
ZmZzZXQodiwgdi0+YXJjaC5odm0uY2FjaGVfdHNjX29mZnNldCk7DQo+IC0NCj4gLSAgICB2
LT5hcmNoLmh2bS5tc3JfdHNjX2FkanVzdCA9IDA7DQo+IC0NCj4gICAgICAgcGFnaW5nX3Vw
ZGF0ZV9wYWdpbmdfbW9kZXModik7DQo+ICAgDQo+ICAgICAgIHYtPmFyY2guZmxhZ3MgfD0g
VEZfa2VybmVsX21vZGU7DQo+IEBAIC00MDc5LDkgKzQwNzgsMTMgQEAgc3RhdGljIHZvaWQg
aHZtX3MzX3Jlc3VtZShzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgICBpZiAoIHRlc3RfYW5k
X2NsZWFyX2Jvb2woZC0+YXJjaC5odm0uaXNfczNfc3VzcGVuZGVkKSApDQo+ICAgICAgIHsN
Cj4gICAgICAgICAgIHN0cnVjdCB2Y3B1ICp2Ow0KPiArICAgICAgICB1aW50NjRfdCBhdF90
c2MgPSByZHRzYygpOw0KPiAgIA0KPiAgICAgICAgICAgZm9yX2VhY2hfdmNwdSggZCwgdiAp
DQo+IC0gICAgICAgICAgICBodm1fc2V0X2d1ZXN0X3RzYyh2LCAwKTsNCj4gKyAgICAgICAg
ew0KPiArICAgICAgICAgICAgdi0+YXJjaC5odm0ubXNyX3RzY19hZGp1c3QgPSAwOw0KPiAr
ICAgICAgICAgICAgaHZtX3NldF9ndWVzdF90c2NfZml4ZWQodiwgMCwgYXRfdHNjKTsNCj4g
KyAgICAgICAgfQ0KPiAgICAgICAgICAgZG9tYWluX3VucGF1c2UoZCk7DQo+ICAgICAgIH0N
Cj4gICB9DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3NhdmUuYyBiL3hlbi9h
cmNoL3g4Ni9odm0vc2F2ZS5jDQo+IGluZGV4IDhhYjY0MDU3MDY0ZS4uNjVlYmZkMzg0ZDY5
IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3NhdmUuYw0KPiArKysgYi94ZW4v
YXJjaC94ODYvaHZtL3NhdmUuYw0KPiBAQCAtMjg5LDYgKzI4OSw3IEBAIGludCBodm1fbG9h
ZChzdHJ1Y3QgZG9tYWluICpkLCBib29sIHJlYWwsIGh2bV9kb21haW5fY29udGV4dF90ICpo
KQ0KPiAgIHsNCj4gICAgICAgY29uc3Qgc3RydWN0IGh2bV9zYXZlX2hlYWRlciAqaGRyOw0K
PiAgICAgICBzdHJ1Y3QgaHZtX3NhdmVfZGVzY3JpcHRvciAqZGVzYzsNCj4gKyAgICBzdHJ1
Y3QgdmNwdSAqdjsNCj4gICAgICAgaW50IHJjOw0KPiAgIA0KPiAgICAgICBpZiAoIGQtPmlz
X2R5aW5nICkNCj4gQEAgLTMwMiw4ICszMDMsNiBAQCBpbnQgaHZtX2xvYWQoc3RydWN0IGRv
bWFpbiAqZCwgYm9vbCByZWFsLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gICAgICAg
cmMgPSBhcmNoX2h2bV9jaGVjayhkLCBoZHIpOw0KPiAgICAgICBpZiAoIHJlYWwgKQ0KPiAg
ICAgICB7DQo+IC0gICAgICAgIHN0cnVjdCB2Y3B1ICp2Ow0KPiAtDQo+ICAgICAgICAgICBB
U1NFUlQoIXJjKTsNCj4gICANCj4gICAgICAgICAgIC8qDQo+IEBAIC0zNDEsNiArMzQwLDM3
IEBAIGludCBodm1fbG9hZChzdHJ1Y3QgZG9tYWluICpkLCBib29sIHJlYWwsIGh2bV9kb21h
aW5fY29udGV4dF90ICpoKQ0KPiAgICAgICAgICAgICAgIC8qIFJlc2V0IGN1cnNvciBmb3Ig
aHZtX2xvYWQoLCB0cnVlLCApLiAqLw0KPiAgICAgICAgICAgICAgIGlmICggIXJlYWwgKQ0K
PiAgICAgICAgICAgICAgICAgICBoLT5jdXIgPSAwOw0KPiArICAgICAgICAgICAgZWxzZQ0K
PiArICAgICAgICAgICAgew0KPiArICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2Y3B1
ICpiYXNlID0gTlVMTDsNCj4gKw0KPiArICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAg
ICAgICAgICAgICogT2ZmbGluZSB2Q1BVcyBoYXZlIG5vIENQVSByZWNvcmQuICBBZGp1c3Qg
dGhlIFRTQyBvZmZzZXQNCj4gKyAgICAgICAgICAgICAgICAgKiBiYXNlZCBvbiB0aGUgZmly
c3Qgb25saW5lIHZDUFUsIHRha2luZyBpbnRvIGFjY291bnQNCj4gKyAgICAgICAgICAgICAg
ICAgKiBUU0NfQURKVVNUIHdoaWNoIGlzIHNhdmVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0
aGUgdkNQVSBpcw0KPiArICAgICAgICAgICAgICAgICAqIG9mZmxpbmUuDQo+ICsgICAgICAg
ICAgICAgICAgICovDQo+ICsgICAgICAgICAgICAgICAgZm9yX2VhY2hfdmNwdShkLCB2KQ0K
PiArICAgICAgICAgICAgICAgICAgICBpZiAoICF0ZXN0X2JpdChfVlBGX2Rvd24sICZ2LT5w
YXVzZV9mbGFncykgKT4gKyAgICAgICAgICAgICAgICAgICAgew0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZSA9IHY7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsNCj4gKyAgICAgICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICAg
aWYgKCAhYmFzZSApDQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArDQo+
ICsgICAgICAgICAgICAgICAgZm9yX2VhY2hfdmNwdShkLCB2KQ0KPiArICAgICAgICAgICAg
ICAgICAgICBpZiAoIHRlc3RfYml0KF9WUEZfZG93biwgJnYtPnBhdXNlX2ZsYWdzKSApDQo+
ICsgICAgICAgICAgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHYt
PmFyY2guaHZtLmNhY2hlX3RzY19vZmZzZXQgPQ0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UtPmFyY2guaHZtLmNhY2hlX3RzY19vZmZzZXQgLQ0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2UtPmFyY2guaHZtLm1zcl90c2NfYWRqdXN0ICsNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bS5tc3JfdHNjX2FkanVz
dDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9zZXRfdHNjX29mZnNldCh2LCB2
LT5hcmNoLmh2bS5jYWNoZV90c2Nfb2Zmc2V0KTsNCj4gKyAgICAgICAgICAgICAgICAgICAg
fT4gKyAgICAgICAgICAgIH0NCj4gKw0KPiAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiAg
ICAgICAgICAgfQ0KDQpuaXQ6IEkgd291bGQgcHJlZmVyIGhhdmluZyB0ZXN0X2JpdChfVlBG
X2Rvd24sICZ2LT5wYXVzZV9mbGFncykgcmVwbGFjZWQgDQp3aXRoIGlzX3ZjcHVfb25saW5l
KCkgZXF1aXZhbGVudHMgZm9yIGNsYXJpdHkuDQoNCj4gICANCj4gZGlmZiAtLWdpdCBhL3hl
bi9hcmNoL3g4Ni90aW1lLmMgYi94ZW4vYXJjaC94ODYvdGltZS5jDQo+IGluZGV4IGYzN2Zk
ZGM2MWU0Ny4uNzljNzEyM2MwYTViIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvdGlt
ZS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni90aW1lLmMNCj4gQEAgLTMwODcsOSArMzA4Nyw4
IEBAIGludCB0c2Nfc2V0X2luZm8oc3RydWN0IGRvbWFpbiAqZCwNCj4gICAgICAgICAgICAg
ICAgKiBzZXRfdHNjX29mZnNldCgpIGlzIGNhbGxlZCBmcm9tIGh2bV92Y3B1X2luaXRpYWxp
c2UoKSBiZWZvcmUNCj4gICAgICAgICAgICAgICAgKiB0c2Nfc2V0X2luZm8oKS4gTmV3IHZ0
c2MgbW9kZSBtYXkgcmVxdWlyZSByZWNvbXB1dGluZyBUU0MNCj4gICAgICAgICAgICAgICAg
KiBvZmZzZXQuDQo+IC0gICAgICAgICAgICAgKiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBm
b3IgQlNQIGR1cmluZyBpbml0aWFsIGJvb3QuIEFQcyB3aWxsDQo+IC0gICAgICAgICAgICAg
KiBjYWxsIHNldF90c2Nfb2Zmc2V0KCkgbGF0ZXIgZnJvbSBodm1fdmNwdV9yZXNldF9zdGF0
ZSgpIGFuZCB0aGV5DQo+IC0gICAgICAgICAgICAgKiB3aWxsIHN5bmMgdGhlaXIgVFNDIHRv
IEJTUCdzIHN5bmNfdHNjLg0KPiArICAgICAgICAgICAgICogV2Ugb25seSBuZWVkIHRvIGRv
IHRoaXMgZm9yIEJTUCBkdXJpbmcgaW5pdGlhbCBib290LiAgQVBzIGNvcHkNCj4gKyAgICAg
ICAgICAgICAqIHZDUFUgMCdzIG9mZnNldCB3aGVuIGNyZWF0ZWQgaW4gaHZtX3ZjcHVfaW5p
dGlhbGlzZSgpLg0KPiAgICAgICAgICAgICAgICAqLw0KPiAgICAgICAgICAgICAgIGQtPmFy
Y2guaHZtLnN5bmNfdHNjID0gcmR0c2MoKTsNCj4gICAgICAgICAgICAgICBodm1fc2V0X3Rz
Y19vZmZzZXQoZC0+dmNwdVswXSwNCg0KVGVkZHkNCg0K

--------------RX8zYYVYlISRSTuxZBN2FTIQ--

--------------jtTIYAvbAdWR0L7DWJow9QWM
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsD5BAABCAAjFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmroWVcFAwAAAAAACgkQZg+p0QLLz9Bf
owv/d8Jqxf6GzpOAum+kEToOydYI1afFwSLBY8ZNnH0nWbBxEnBGJwIVHz6DFMZ6p2oMIYZFr9/i
YW/2DVxrT+T4xGtgKXEwTYLZdT9uSIaG+svSIMrSv38baCsVbVOrxuPH4dPwp9X//7cjAeAuH3Wz
pbkpZBq5FUVVyWewbOJmICLWwsVgV+cUnYDd6gk5ojl2/Mt1n72Di3B0wn6sisPjM0dc1mDAWwdO
THcMCHUovZfRNiXQwZzzMbcdxN+ztHrVtL0bb0+voLLFilrfMpyJ9SitjDTEhm0zOKnrFSQBD/q9
hnNWHYszzm9K6Ca8d51rwc9OCRXhBRI5Bhr9QDcNAf7s1YMHADOAKuVBfvn1oGqrAU5cs5BZLTsZ
5MkDhI8jfpO8Nmvh/bXT0EbeNIuGniKw/Qm8PRykAnXcqAgYYYOBm0YJspVmUQkBvHATIoChT2Fw
dUmymY7UevOO83swVPhIYORTGuDNVE/lJszX0wPXYG6gmflMgXrrMXvgG6j/
=SwAp
-----END PGP SIGNATURE-----

--------------jtTIYAvbAdWR0L7DWJow9QWM--


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:36:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:36:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468030.1677071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoSv-0000AN-H7; Mon, 02 Nov 2026 09:36:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468030.1677071; Mon, 02 Nov 2026 09:36:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoSv-0000A7-Cc; Mon, 02 Nov 2026 09:36:33 +0000
Received: by outflank-mailman (input) for mailman id 1468030;
 Mon, 02 Nov 2026 09:36:32 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNoSu-00009x-9B
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:36:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoSt-008u7e-Ep
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:36:31 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8599b-bab6-0a2a0a5309dd-0a2a4503e5a8-24
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:36:31 +0100
Received: from [209.85.221.42] (helo=mail-wr1-f42.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8599f-fae8-0a2a45030019-d155dd2ae8de-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:36:31 +0100
Received: by mail-wr1-f42.google.com with SMTP id
 ffacd0b85a97d-48e09aa5264so1236353f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 01:36:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b7246fsm19261726f8f.19.2026.11.02.01.36.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 01:36:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793612191; x=1794216991; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ATd7haOfpr3HSiueKUSHUSxLSdXr22vzQgeTNpg0zjg=;
        b=RUEV/BRMWG1DSZTWuoFuzipLaFwNx/zt+fjpPVh2o0FU4VfjjV3uO+yaWzf1/HSlHC
         JIk61jEFDaY1IZwPAj0TpeZ4auc7PjW0JpSFQ3P4XWX/N9Bt47XNSsaSJVsIvxg/t5B3
         PNz8Lsa2CNgHxgIYEk9g69Dcs7m+VoRJF8HdsrdOHqbxqQI6pmF0FEkRzlDcE+/tKhLH
         MuHgPSPH2HZ9FisJEzMAxQ33aEtK+wu4x0limUkjEdG1CtFltwrX74nZIAr03MQRQrfJ
         pPVos4hz7Sl63tykls6z9D41+UGIRx85NOF6+7AV/oMrLvqNTO8Z1YtPGCkvxh5tzksc
         MHvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793612191; x=1794216991;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ATd7haOfpr3HSiueKUSHUSxLSdXr22vzQgeTNpg0zjg=;
        b=KV1b8Z7ebs4lH8wRhVMTAFEbC4ZzB8bM7I6qT7jTDv8PdpyliZmLPPn7znkTI0+ott
         HMuFfLMJIX2zv6heP8ClpsmvjDoN5QD26DX1DDSq0CztCFFuRey6+aodQaOkjatnqxt2
         j8CWdJAesCD+FRX24wBPvvA9gkhVd8694ZWP52jM8Z/FRcdJ1SHLmTQyLzZ8u/oOlFyo
         XLd0EIqzpWidfILxM0TtoBF2lWcnnlpdO8wFcqIM8YJmM/gKOeVjYi4Nq7RNmguVapMj
         Dy4gxcQH2OWsyVet0zBh63hMRix+7sW9Vs0NqipjM5qfiuvJZRl7rRh3kVUcik7mwR1n
         lX2A==
X-Forwarded-Encrypted: i=1; AKwUvByE+9wXRvCaxnulnkgXxPT6Ro3qgSEPsavzaqwrsjup2FZVbWEFGf+XSl4c0h1VKs/ltNycPumMH5E=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/6rh3Qf9zMupFYb6xYlGihRUQyx7H8NHsM3wHpL2AxeK0QPQOP
	qIJZaafuSGk7W2YVBCWf0BURkdL+E8gjO+XdxoQhOJ3CGCsZD8ShQmfGte9GoeImcw==
X-Gm-Gg: AYBFou2BWmB5L91aeqyG7wyYfKNSJvB8D62FH0zPmvMv+MTROyQTmtKHuHhqX6LJBwl
	yYFB0/PMjUwoionnZpC82pX5Q1eHCUWPTdeQWOeQckpPfSeONYw1hr01MgsS2BWunCBeh4rXRXU
	m4Zz7NEngblMd8HkSpx2G66UWs9ZroU20vNnG9UeDd/jX09W6oTw2APz7VR2MEU7KN43uZeVsRa
	qSS2Z01vU1bz+xdR+me76vTiOgfvFTMOAHnPitaEd8I3n9sI0Qc42XouX2nChNVWCRBMFnrll/R
	WNMGHBhS+WLshTa5i8AXQUG05XuVLwlDeDtCAfPSyyWiGWOq98L62NhZPf/0zU9L+7LdtcztAtP
	bmwQ3h3Dg6HpKCKPdSmBbg0MIQso1sh2PTqt6yztKTZPJN+YiuKsr91B9E3oqgYpPXHBNu0TuNz
	Z9RrBUpjadNQcCIkX8uRyNRQNI+eo53YOAtYwagFn6OQfyRjfTxRtE3QMVO5pM3JO3AkRYfErTp
	fV6tzkZsR0qV8jJPUwqP7XIHKbzk2S95kjJb1e3P13qjjiwszh2prbf7+pMs6tnmZ7XnzmLEOxZ
	qQhmeQs0ubNprp27/0iGhqtLKCS/C6NyfntJ8cfka3TVxxCQiMktJ779rbE3z4Cdxj3vaFHC/gF
	HHlhxvgyVou8ae6E=
X-Received: by 2002:a05:6000:2088:b0:48d:f6d2:9c88 with SMTP id ffacd0b85a97d-48e6e4f8daamr22123366f8f.47.1793612190722;
        Mon, 02 Nov 2026 01:36:30 -0800 (PST)
Message-ID: <d4ad366f-29b5-4227-bf09-a5fec0c6a412@suse.com>
Date: Mon, 2 Nov 2026 10:36:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gunzip: refuse a back-reference before the start of
 the output
To: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 xen-devel@lists.xenproject.org
References: <20261030201554.1363058-1-stefano.stabellini@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261030201554.1363058-1-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793612191-6F4C74E9-98BD52D8/10/78276251493
X-purgate-type: spam
X-purgate-size: 1240

On 30.10.2026 21:15, Stefano Stabellini wrote:
> --- a/xen/common/gzip/inflate.c
> +++ b/xen/common/gzip/inflate.c
> @@ -603,8 +603,13 @@ static int __init inflate_codes(
>                  } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
>              DUMPBITS(t->b);
>              NEEDBITS(s, e);
> -            d = w - t->v.n - ((unsigned)b & mask_bits[e]);
> +            d = t->v.n + ((unsigned)b & mask_bits[e]);
>              DUMPBITS(e);
> +
> +            if (d > w + s->bytes_out)
> +                return 1;
> +
> +            d = w - d;

I've been staring at this (and the surrounding) code for far too long, yet I
still can't see how this works. w being the window position (which can be as
low as 0), this subtraction is almost certain to underflow in many cases (not
just in the updated code, but also in the original one). Yet later not only w
but also d are used to directly index s->window[]. If the subtraction
underflowed, how would such indexing be valid at all? I must be overlooking
something.

>              Tracevv((stderr,"\\[%d,%d]", w-d, n));

Imo this would now better become

            Tracevv((stderr,"\\[%d,%d]", d, n));
            d = w - d;

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:42:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:42:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468037.1677079 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoYX-0002z7-2D; Mon, 02 Nov 2026 09:42:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468037.1677079; Mon, 02 Nov 2026 09:42:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNoYW-0002z0-Vq; Mon, 02 Nov 2026 09:42:20 +0000
Received: by outflank-mailman (input) for mailman id 1468037;
 Mon, 02 Nov 2026 09:42:20 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19ba356aa000403d@swg.vates.tech>)
 id 1xNoYV-0002yr-US
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:42:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNoYU-00ABJP-WB
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:42:19 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19ba356aa000403d@swg.vates.tech>)
 id 6ae85af7-bab6-0a2a0a5309dd-0a2a4502ed30-16
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:42:18 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a19ba356aa000403d@swg.vates.tech>)
 id 6ae85afa-6ca4-0a2a45020019-b9ff1c238f1d-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:42:18 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a19ba356aa000403d.002 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 02 Nov 2026 09:42:15 +0000
Received: from [192.168.1.18] (88-188-240-210.subs.proxad.net [88.188.240.210])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id A58CF82DC0;
 Mon,  2 Nov 2026 10:42:14 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=fgGbXtGv+qWKErLDr2OuZWLGn8/IbrxpJyk81GH6YNI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=rwfEOOopn+PA01DflYIrinljGkg1W8FZ2z7zC9gho7b09A9jhS5aEkK2XV0nJg3PDUWAE68ZK
 IIY+hPIqIac3hz4iquUNXdvk5jK/yFnAgRfLW2BwOqGnrzfHgU7P8CwuWiW7V37bMzlvRkG+77z
 Ox/x8ySsg5wHNFsOvADPRmQgkt6WJHj/YPWoPNrjiu4EBz/NOZZd+TCfm757UBuiqVpI9t9Oihp
 +1A/P9iFG7eTE1O+AHF+CR+w6YjCpZIzPON9d1JRhWpfiENW3UwYf9jWN8wTJIuSssGS69f7OMB
 MViFueKNIqFvURLkFYnJCw5t1VryPIdY2O5IxObHxjVw==
X-Zone-Loop: 68b9befdfa89492c2f50c365aba40da1aedd2925962f
x-campaign-type: default
x-transaction-id: 0d0dc643-18f7-4d42-8ba6-4a5c28dbbf48
x-swg-uid: 01-fbb435a9-e611-49fe-a74d-bc77cd4e1744
X-Mailer: Sweego
Message-ID:
 <1793612535.8631fc262581453bbf619ec5b2062170.1a19ba356aa000403d@vates.tech>
x-swg-bid: 1793612535.8631fc262581453bbf619ec5b2062170.1a19ba356aa000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 2 Nov 2026 10:42:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/cpu: keep cached TSC_AUX state coherent with
 hardware
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-2-roger@xenproject.org>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261030132419.84264-2-roger@xenproject.org>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------APUZFX7juZjxwdqLuuLRblE0"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793612534769
X-purgate-ID: tlsNG-720697/1793612538-30DC12AC-0622CD11/0/0
X-purgate-type: clean
X-purgate-size: 6706

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------APUZFX7juZjxwdqLuuLRblE0
Content-Type: multipart/mixed; boundary="------------Wysme1sO6ew5ZCAPzcJWxu1B";
 protected-headers="v1"; hp="clear"
Message-ID: <507ee181-bc4b-4a6a-9f4a-1706ba261ff1@vates.tech>
Date: Mon, 2 Nov 2026 10:42:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/cpu: keep cached TSC_AUX state coherent with
 hardware
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-2-roger@xenproject.org>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261030132419.84264-2-roger@xenproject.org>

--------------Wysme1sO6ew5ZCAPzcJWxu1B
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

TGUgMzAvMTAvMjAyNiDDoCAxNDoyNiwgUm9nZXIgUGF1IE1vbm5lIGEgw6ljcml0wqA6DQo+
IE9uIENQVSBicmluZ3VwIGRvbid0IGFzc3VtZSB0aGF0IFRTQ19BVVggaXMgMCwgd3JpdGUg
MCB0byBpdCB0byBlbnN1cmUgdGhlDQo+IHBlci1DUFUgY2FjaGVkIHN0YXRlIG1hdGNoZXMg
dGhlIGhhcmR3YXJlLiAgQWxzbyBwcm9wYWdhdGUgdGhlIGNhY2hlZCB2YWx1ZQ0KPiBvbiBy
ZXN1bWUgZnJvbSBzdXNwZW5kLCBpbiBjYXNlIHRoZSByZWdpc3RlciB2YWx1ZSBoYXMgYmVl
biByZXNldCBkdXJpbmcNCj4gc3VzcGVuc2lvbi4NCj4gDQo+IEZpeGVzOiBjYzBlNDVkYjI3
NzkgKCJ4ODYvcHY6IEF2b2lkIGxlYWtpbmcgb3RoZXIgZ3Vlc3RzJyBNU1JfVFNDX0FVWCB2
YWx1ZXMgaW50byBQViBjb250ZXh0IikNCj4gU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1v
bm7DqSA8cm9nZXJAeGVucHJvamVjdC5vcmc+DQo+IC0tLQ0KPiAgIHhlbi9hcmNoL3g4Ni9h
Y3BpL3Bvd2VyLmMgfCAzICsrKw0KPiAgIHhlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMgfCA1
ICsrKysrDQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykNCj4gDQo+IGRp
ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYWNwaS9wb3dlci5jIGIveGVuL2FyY2gveDg2L2Fj
cGkvcG93ZXIuYw0KPiBpbmRleCAzNDUyNjUwYTYxZDUuLjQ2NDg0NmU3MzcyNyAxMDA2NDQN
Cj4gLS0tIGEveGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYw0KPiArKysgYi94ZW4vYXJjaC94
ODYvYWNwaS9wb3dlci5jDQo+IEBAIC0yNzksNiArMjc5LDkgQEAgc3RhdGljIGludCBlbnRl
cl9zdGF0ZSh1MzIgc3RhdGUpDQo+ICAgICAgICAgICBjaS0+bGFzdF9zcGVjX2N0cmwgPSBk
ZWZhdWx0X3hlbl9zcGVjX2N0cmw7DQo+ICAgICAgIH0NCj4gICANCj4gKyAgICBpZiAoIGNw
dV9oYXNfbXNyX3RzY19hdXggKQ0KPiArICAgICAgICB3cm1zcm5zKE1TUl9UU0NfQVVYLCB0
aGlzX2NwdSh0c2NfYXV4KSk7DQo+ICsNCj4gICAgICAgdXBkYXRlX21jdV9vcHRfY3RybCgp
Ow0KPiAgICAgICB1cGRhdGVfcGJfb3B0X2N0cmwoKTsNCj4gICANCj4gZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMgYi94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5j
DQo+IGluZGV4IDQzNzg1ZDE5Y2M3My4uNWJlYWUwZTg3ZjQ5IDEwMDY0NA0KPiAtLS0gYS94
ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29t
bW9uLmMNCj4gQEAgLTkyNiw2ICs5MjYsMTEgQEAgdm9pZCBjcHVfaW5pdCh2b2lkKQ0KPiAg
IA0KPiAgIAkvKiBFbmFibGUgTk1Jcy4gIE91ciBsb2FkZXIgKGUuZy4gVGJvb3QpIG1heSBo
YXZlIGxlZnQgdGhlbSBkaXNhYmxlZC4gKi8NCj4gICAJZW5hYmxlX25taXMoKTsNCj4gKw0K
PiArCWlmIChjcHVfaGFzX21zcl90c2NfYXV4KSB7DQo+ICsJCXdybXNybnMoTVNSX1RTQ19B
VVgsIDApOw0KPiArCQl0aGlzX2NwdSh0c2NfYXV4KSA9IDA7DQo+ICsJfQ0KPiAgIH0NCj4g
ICANCj4gICB2b2lkIGNwdV91bmluaXQodW5zaWduZWQgaW50IGNwdSkNCg0KTG9va3MgZ29v
ZCB0byBtZS4NCg0KUmV2aWV3ZWQtYnk6IFRlZGR5IEFzdGllIDx0ZWRkeS5hc3RpZUB2YXRl
cy50ZWNoPg0KDQpUZWRkeQ0K

--------------Wysme1sO6ew5ZCAPzcJWxu1B--

--------------APUZFX7juZjxwdqLuuLRblE0
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsD5BAABCAAjFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmroWvYFAwAAAAAACgkQZg+p0QLLz9AP
hAv/flAg1bO5TW37Y1QwbiwBuvFlCIt+L3znJZI8tknmCZqJDqhqMGngjnO8A43GbgHz0BpR715d
xPplvQdgHgMv8MZIWPxMlIGxbNKClP4Lag34XCWDvdI3WU9egvURGWUVnKcYcIhfAB6qw44jVvIc
BRAp0GTS457GA/hDpoTWhM8g48LS369tnWN4DTo7kdlBctxVx3SYVD3Hagsl/s4QnvLYgVhkKpN9
ntz2Zhm1y9dn3ov8FbH7Mb3q8dNA76acrIqYRKMNwkKa4u6PQ0OIymeJx4OJ51DhjRrEB6WYZhMQ
gjsa2qFVPu/6dTawzcagVBxvGBkNRBg8n1rZ/BC/aJRuRi9D33XVwU8QVxGG+f6bpftXdygs/tAU
elIhpDjlMiT62oplDGfHFxWLMByDe5o2xnc04XeQpscHnvMS78T+7Rv6EbrMDBNkafFJQfpPjEhc
9T7yOJlAmXaTQDkUDF3nr35mA20EC/3BKVMc0Vuv5xPaIyKdwKd5UL9yqO3N
=djKn
-----END PGP SIGNATURE-----

--------------APUZFX7juZjxwdqLuuLRblE0--


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 09:50:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 09:50:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468046.1677088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNogk-00064E-RK; Mon, 02 Nov 2026 09:50:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468046.1677088; Mon, 02 Nov 2026 09:50:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNogk-000647-OG; Mon, 02 Nov 2026 09:50:50 +0000
Received: by outflank-mailman (input) for mailman id 1468046;
 Mon, 02 Nov 2026 09:50:49 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNogj-00062n-GR
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 09:50:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNogi-00ACvn-TO
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:50:48 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae85ceb-bab6-0a2a0a5309dd-0a2a4508c8f2-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:50:48 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae85cf8-f659-0a2a45080019-d155dd30b5fc-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 10:50:48 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48c4d99c32bso1891080f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 01:50:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ac09ad5ff8sm183680165e9.4.2026.11.02.01.50.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 01:50:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793613048; x=1794217848; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=57cv4MbaGIXvFHzeqEx72N0mb8i+4XjHATVHnqxbbUI=;
        b=ZWX8FKgUrIRs/LOYu2kcSxtQUyNycQOUENcbVxqzMBbQP5aof0huIOhJXGK9gHRgP7
         LjQJWr6rqapGfORDezzOzmUQM39Ubhs44uwn+VxGfxNwetg8yN3kOBDJgDHMJ+JTZRg0
         URiRpS9YbDfVm/9B4thW69v787dj2XqFFa6GQmDgua94VOPpWceXO38KdiQx9x56F5Kn
         BK7uCeZDT5ms55P5a7IJj/coQcU1BHFGSmdWJ2H3eMxwi+bkiC4Sm+NxUZDyYy0a8rj5
         g/wrP9qmLkCZOBBPQt6c9XYj8DBmI0fDd1aYT01rejjSSp0jJnkhT7xevP4PE+ekAboG
         zPrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793613048; x=1794217848;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=57cv4MbaGIXvFHzeqEx72N0mb8i+4XjHATVHnqxbbUI=;
        b=MlZnz54jaKBO2Y+355Eb8JTIM71ByXLP3NinWR7jDRuTvviWdq761fGY9eEE7AuAvc
         7T3iEQac8CbhM1SwoyJqt6OKfA7QpMEAroRBEXk5En3QoSY0wE9anZc/ORlkFXMMpd/2
         Hy39dE3Xon3q5z/5JId2EvvcsvtFOvyLaMvoEwDmyrr9UGGl+n5TwD2WzrCYXUWG2YST
         /Ln1qZhoh5n3I28s2JWhNAb8pTNoSmKeyaXpTYQUARxNYtcEpz0D5pTSheKB+OVc5Nmq
         vvBDTmmQaWNlniqX0grzl6ERXwgJd5WgaxlH5PQJKlqp4oiiDwTM+LkXGdfTy4HZ4V2l
         C3lA==
X-Forwarded-Encrypted: i=1; AKwUvByLmuPfAXuQULpfbghaSICCyn1d76GySTOIpepVbiVJaw2qyLZJtQvdqz6NRE8cWxb5faXHMEAtsPI=@lists.xenproject.org
X-Gm-Message-State: AFq9FYJB4eoQ9IcfvJJRZIa9+YTkTX2po7Dlia0rpPCLZnVf4YLcFSsq
	mrVBH9y/ff5qIzwXTDPh2CO/yolu08jcPn05c3863zyMTwnfrsVoaBl+f8omF2J8IQ==
X-Gm-Gg: AYBFou3mHQaQElSCQetFWKG6TlloEusLWwKvXwnDY+86XOECPGGJDkLhJ+KIlg5RALk
	UbLFwqqUzPiWhDhPvqpz0+j6mjAP9uE04IpzaJujmtSVPUubFn8PMtrumzr5A/0mj5VrIPU1HZR
	UgLnUK7eoDTp+vO8I1D8M282wbFm18b1wzzbWPbJQj8r50zVQedNUjGQKBE5Uj+QK8trduRfwrp
	MJ62PUoN/3fXO27S7wNetcMeCkMS3y/8+2h/ZHwnwdxCvymLtmu4fAzULOGwNMDzDOM0pWJZWVy
	ptFf8SCZDD7vPcaEZzDxiTxGY3i94FCw+fU74U6V1+tHWEJqSR81NJ3egYjNbFYhrb+/ikdGUAM
	1Ih3eH0B7djJMpNiwM0WUQ2LaYA8NJmIUNXFwZxvL52yfgkERLdrEQKS2mtCM4sLPS6SmZa24lQ
	VMCLoICSNIT6DVpssNNpMdQ40B6nGRCv379TegZBu/qaX2RVDyWht+qbhWWnysuvK2mJYqCOPoA
	+Mu79UQBerLcf/h3XSOtMgaYFKwJqyQ3U5lWNfpgkCGeq39l97bpcbAc9gEGUiJ1+JFQDMCBQGM
	D6irFSyhQ/dha4otiONCQY7Qiul3v/wJhRzeHGm5IXAOzR72nSf9vthpzbG5MKQukpLYTN+8Uqn
	7s98dgptGjH7aiiROcA==
X-Received: by 2002:a05:600c:1d29:b0:4a5:5fb9:5d35 with SMTP id 5b1f17b1804b1-4ac187a7678mr232971865e9.21.1793613048144;
        Mon, 02 Nov 2026 01:50:48 -0800 (PST)
Message-ID: <eb3c6304-f8af-4b93-be20-3db914e1ac6a@suse.com>
Date: Mon, 2 Nov 2026 10:50:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/45] x86/mm: refuse to promote an L4 while the domain
 has no per-domain L3
To: George Dunlap <gwd@xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20261028-asi-hvm-v5-0-13b908e0df0b@xenproject.org>
 <20261028-asi-hvm-v5-2-13b908e0df0b@xenproject.org>
 <f29b4d27-650e-4463-a0bb-785ce507c644@suse.com>
 <CAFLBxZaXHuaMuHTPKgx-vw_AH8iX+jvh2t2BGsGYFR2z5hsPiQ@mail.gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAFLBxZaXHuaMuHTPKgx-vw_AH8iX+jvh2t2BGsGYFR2z5hsPiQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793613048-D614687B-BF1A4180/10/78276251493
X-purgate-type: spam
X-purgate-size: 1718

On 30.10.2026 18:11, George Dunlap wrote:
> On Thu, Oct 29, 2026 at 7:47 AM Jan Beulich <jbeulich@suse.com> wrote:
>> Independent of that, how about pulling hvm_domain_initialise()'s
>> create_perdomain_mapping() up into arch_domain_create() instead of the
>> code additions you do?
> 
> So, let's see if we can solve it "properly".  Constraints:
> 
> - Eventually, not all domains will have a domain-wide L3; some will
> only have per-vCPU L3s.
> 
> - init_xen_l4_slots needs a domain always, but only needs a vcpu to
> get the L3 of vcpu_pt domains.
> 
> - PV vcpu_pt domains don't need an L3 installed after
> init_xen_l4_slots; they need to run on a clone of the L4 anyway.
> 
> So by the end of the series, we could arrange it like this:
> 
> non-vcpu_pt domains always allocate d->arch.l3_perdomain in
> arch_domain_create.  vcpu_pt domains always allocate
> v->arch.l3_perdomain in arch_vcpu_create.
> 
> Have __init_xen_l4_slots() take a domain and an L3; if the L3 is NULL,
> leave the perdomain slot empty.
> 
> Have init_xen_l4_slots() take a vcpu.  BUG_ON(is_hvm_vcpu(v) &&
> v->arch.asi.vcpu_pt && !v->arch.l3_perdomain), then pass the
> appropriate l3 into __init_xen_l4_slots().
> 
> Have init_xen_l4_slots_pv() take a domain, and always pass the domain
> and d->arch.l3_perdomain to __init_xen_l4_slots.  This will be NULL
> for PV vcpu_pt domains, but that's fine.
> 
> Then promote_l4_table() calls init_xen_l4_slots_pv() with a domain,
> and loses both the checks at the top.
> 
> There are corner cases to sort out, like how idle domains get an L3;
> but overall I think this makes everything more robust.
> 
> Thoughts?

Sounds plausible to me.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:03:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:03:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468054.1677097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNot7-0002JL-1V; Mon, 02 Nov 2026 10:03:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468054.1677097; Mon, 02 Nov 2026 10:03:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNot6-0002JE-U0; Mon, 02 Nov 2026 10:03:36 +0000
Received: by outflank-mailman (input) for mailman id 1468054;
 Mon, 02 Nov 2026 10:03:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chunjie.zhu@citrix.com>) id 1xNot5-0002Hy-Gw
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:03:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNot4-006ioX-35
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:03:34 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae85fe2-2eae-0a2a0a5409dd-0a2a45089f7a-32
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:03:33 +0100
Received: from [52.101.52.13]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae85ff4-f659-0a2a45080019-3465340d81b9-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:03:33 +0100
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 (2603:10b6:408:37e::6) by CH3PR03MB148667.namprd03.prod.outlook.com
 (2603:10b6:610:346::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 10:03:31 +0000
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902]) by LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902%5]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 10:03:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=gB+zEsCQ8O83DpyePbpof57Zn7KeVF8uL9iB4+AeJvbhmWwb/toOb96iDl9BzJhA+ZUZ65n6GWYD78sKzw+hUuQT+qnnEKOlnQwV1GveWTOcYDICrBxT9NMe8SDWmTvJeCazs9NHaTBl5NpTCSSNAW6p8OjDxbu7zAmftA/wXyTmZmCFrCGkLPcK2it0DXWHreq5lOY8vCO5E8GZ9mDzov7hOVO15dOb0Z+ViOFHHqomCKAlFb4OnsVpoB1mKb5uULRux7ZlmjMFwWWbSvE3uu6ozRmX1bpzWpi/wJzb2E6W3H1tY6YkAAWx2p9VmU5rLpCD0gbhwj0R8C/4rbbGSA==
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=OEGoIsbcCbUg1W6H84Y0joGU6LGMSlo9SpAwU5tGiYQ=;
 b=fvEQ7kEUPmJ+Vk+H2OR2vuuAAe7OzvHeAHK/eUk9tebZfZP2YnOUhlvSPVbwtbv1XsFjGOS23rExH1pBOUpFOKVKDLras2z/ddg6Mc7bfplAu0CwHndWUxz4YnZBdQ9x11fDc2xYdv65cJIeWcP3U7nCD81qrz8Wi92y73hdwYP1gGsSTbStwU+n4yG2tY7+kzTTcv5Crv8BnUwHIijrkFaVFsjsAgJp55Xowv/npAAtwkX7bQ8UPODqa/SUEresqclSi/l9MQIkNJDc1sz7icolv5SzSEYibHnh2aQ6zCGzDgQLejTnBBtst1doinGlLSj9CvliLq413OP45JtMPg==
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=OEGoIsbcCbUg1W6H84Y0joGU6LGMSlo9SpAwU5tGiYQ=;
 b=eMOvqXmDGKqGY+12fvhqv9qZ7Dl8iEmYd7O8Z1g1tgQo/dc+y3JqKrYysjUV/TX6nKH26VYZfi9eXKUgU9Jxkyu9EUQjAliW0RTyvTk+nNSPggIRniA/831dkcWOH7G+9NyIwEsELgqqndzX73+a901IVS0h3wq27vRt8MMPS20=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: chunjie.zhu@citrix.com
To: roger@xenproject.org
Cc: andrew.cooper3@citrix.com,
	chunjie.zhu@citrix.com,
	jbeulich@suse.com,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
Date: Mon,  2 Nov 2026 18:03:20 +0800
Message-Id: <20261102100320.187717-1-chunjie.zhu@citrix.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <auhLMExBiCspLd49@Mac.lan>
References: <auhLMExBiCspLd49@Mac.lan>
Content-Type: text/plain; charset=y
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: JNAP275CA0054.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::20)
 To LVXPR03MB989161.namprd03.prod.outlook.com (2603:10b6:408:37e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: LVXPR03MB989161:EE_|CH3PR03MB148667:EE_
X-MS-Office365-Filtering-Correlation-Id: adafea26-9303-4af9-9d8a-08df38c88c8b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|10067099003|22082099003|18002099003|3023799007|56012099006|5023799004|11063799006|261021135927099003|261021121427099003|261026121527099003|261026140227099003|261022105027099003|261009223027099003|261028144727099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	PaiWWXB13LP/zvENT/dMxBeHtbA2gGx1+hZQuOfJHOy/HqEi6fsmGIDfGHFGHzgyKnRfy1FcAVa1P0rpvrjL5Z0RMfCzXMi1Qn4wAXPugZ33krgcR4scsqtPh2WBZ0OHE6wub9bsTYNgA+XEF9ohkiFKZQDSi1LcvjroDG2GTxtSPV7QMNgnA9hTH+wGdxcxOn2YsbmaU95zGccweNNp/f7Lta7rHGNg75+whsXZssVAt+Y2SsC9QWytax/BCFxnw9kDiVrA1Q+pGbbBju6CJjnux+++rU/FDFw1d36PZ/xuK/N7wUyrZD4jiRiWzW0a38yw6QT90YhH3Cwn13lO5kNqldLnqjc6rKY/OK/Bi+SVVCV6u9UhnyQNWdxEnPKEs/r6F2/K0Ck9k0pOtYV5cIkbCRjf6QHwbBF70J+UAju+b8JzEcCIcuF/r9OnN6ccrjQIW7neCcbyd6b4GXsjO6enS/NkX5RQXosNFp8hzUqOqrY8rmC3w6F0kHlbGOME84hmi8CQwhN+CZ5xbirjUWDYg6+CIKEdJh+f0W1sSI76Zj11pNNiNFe84+HKXWWQjAIwpCgcwA+bDcvoVVdR/AqcaVUU4Jg39ClBGYEnSRWRVXo819x3JViYY5RPjR4dTWWXIeUKjShFb/1CBZ19+xwCjKzqSvLqcyJdCqtKTiw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVXPR03MB989161.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(10067099003)(22082099003)(18002099003)(3023799007)(56012099006)(5023799004)(11063799006)(261021135927099003)(261021121427099003)(261026121527099003)(261026140227099003)(261022105027099003)(261009223027099003)(261028144727099003)(261021123027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?WUvD+Xu17X3In42ndiI33aw98000r2h1hsO/4EMc9eh2/Ob3J9XS9V+ZVPOl?=
 =?us-ascii?Q?A0LLhTT/1jE6EGnYKcIRSBVODkhtEBczGgRH9XYKpA/rnmjrRY4uM67MzqfW?=
 =?us-ascii?Q?I7jJvzuCRrH1SKLCtKJt/POh/POPyg2m6iuG2oyFp9GQGrVeXHRaEmRxVhTT?=
 =?us-ascii?Q?5NB3QoarTueR1nDdzh2yngjnNUmfcIw++CuUxzvJjxV0pxd33eOrbain5m8R?=
 =?us-ascii?Q?ll1ROmS3LVDIRHSl8SdIoLIR0GURndoW/+9gOpJ1jxlbnYZH/qIAv7/F2RIO?=
 =?us-ascii?Q?854PRXx4Jg/ERmldiV6Pt3vahsBr6+YVDOJzqjebkJT9FYfvPAMU9RT40OAq?=
 =?us-ascii?Q?Q5WWI5VVbxjDLUZ/ZgyAB44Uvk7RTch/hKEdlcyeozAgmGNyIbaDM+qVoHuB?=
 =?us-ascii?Q?+eHlcxyAQ7CtJ21I4Pqv75n6Mj7g0I0gkTPcIsS8veoFODcgJr4XTefgEXid?=
 =?us-ascii?Q?HNTna14hLSw5i8N9EmfUJIS1aGtEfZanIzTAuxZj8OB9pS9CYkmDnjDfTquE?=
 =?us-ascii?Q?UIaQwbFmaSD1cZvDJLxt1iIhQXNKQonP/dTnOKycaX0QprVB1ejTXYv71FzO?=
 =?us-ascii?Q?kMn9Nbkv0Vv01UvLpdajpZrPwy68rL9kQMrq2l3R7qjsYDA5f3oSxNvEWS0f?=
 =?us-ascii?Q?1iHYktNO8epuKU/+K6fXo4hHtibfBFcYGpy+cgizMSU6TRtnwk9Hi6n+DPFy?=
 =?us-ascii?Q?MVWVyYtLvqJFmzsCiTrrDI70iKWbFKuFgrAQ0Icttnkue96E5FEg2rjumc/H?=
 =?us-ascii?Q?8aUJBbl8vcxnerzlwe7c6ESRWzs9xkjJ438TiLAwoEjnRybh0Wb9QvyJxgzs?=
 =?us-ascii?Q?nRSZGMJ4C2H14enjJyBv+102rioEI10p9ZaiH9uP3Jqssc0B1+YtM1NCqjmB?=
 =?us-ascii?Q?jUwrKxDJyYkS9V1djozo13lvbJlM+0uixJjgljWgtSkK+oSjrZrEM2pKreXz?=
 =?us-ascii?Q?KsuD9vsb+FumXIwuYG4FRgsdTABP77DhVNY7jBkSFXeQbISjVDc6JJg2PV78?=
 =?us-ascii?Q?7Q1jsuSAt0dSY46OcFVV6ntGc9r4xSZZk1gnL5uuovPxxSAYUNBzeEZC8K8g?=
 =?us-ascii?Q?gps0o1YodLM/0a/NTe7iaU/ldsH4hLDLXbStZNcwZekzPtZXoUCyoIDF/Zpq?=
 =?us-ascii?Q?aq+ZrMPhQo2KTL52gw+Tj9nJHpU744lmK/BYeIkCZf94oN34yl8pHvXUylV9?=
 =?us-ascii?Q?aFeCwO1yj2BcH0eHtsa7chzmJisuw0pLi903I3+lJDnic1BOZ07nuhkH456n?=
 =?us-ascii?Q?q1LyGRQ1E6mSJ3NWSSKIGikLseO7/HX1wCINzSEov8o/EoC/58xTCrNgdQKw?=
 =?us-ascii?Q?sZTsCbrnvglNaAtNd+5OxXFvjwOxkXdqboD/NNQZM5GR4NYTJ/sbAueqzy5/?=
 =?us-ascii?Q?8XCTj2YYEAZds36/O4DBuS8VFPN3QeoaAgnuKrMzvlb8WSm5oQFub3z+3tHr?=
 =?us-ascii?Q?oVUQnzTf1Y6lTWWo/tfLxfZyavlCzGIBlgUNfaMjHbtmr2QBWcj+Wcn+PkJ5?=
 =?us-ascii?Q?RbqNrFNGKmSs6vxGphYd6mdeRc8eCcyqNDB0hvrLVh5BzwC5sbv44LleE8bK?=
 =?us-ascii?Q?wZeIzX9hjLFquwFZP8j4gYy4E5CAjWYV9iEqCulR3qXj3AV0YzEE0edLetBo?=
 =?us-ascii?Q?DQ1S/p+PyIgXY4LXQIFqPGF41eV04//ovF6F2ORELCebH5JDTUdtW9q/iaPl?=
 =?us-ascii?Q?xc0RLr0dADTL2UF1D7uDLXkLsNv+ER0nj/GSHHCvtvWpELrdmTjuL/Usw/tJ?=
 =?us-ascii?Q?m1GJ8Q7EeA=3D=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: adafea26-9303-4af9-9d8a-08df38c88c8b
X-MS-Exchange-CrossTenant-AuthSource: LVXPR03MB989161.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:03:31.3543
 (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: hyw5uVak/VAsHs3xSPKZWrCg2d8z9ukq+Mz0nhKBZvd+OLIVQpEZ7831TJkNr5nAWbrmI17TLm1UEZ4cLrxXeA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR03MB148667
X-purgate-ID: tlsNG-c1860d/1793613813-CCB7187B-06FDFFAF/0/0
X-purgate-type: clean
X-purgate-size: 7574

On Mon, Nov 02, 2026 at 09:34:56 AM, Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org> wrote:

> On Mon, Nov 02, 2026 at 03:40:42PM +0800, chunjie.zhu@citrix.com wrote:
> > On Fri, Oct 30, 2026 at 02:24:19 PM, Roger Pau Monne <roger@xenproject.org> wrote:
> > 
> > > The current logic syncs the APs' TSC with the BSP both at reset and when
> > > setting the vCPU state.  This doesn't match hardware behavior, where APs
> > > are only in sync at platform start.
> > 
> > > Move the TSC sync so it's done in hvm_vcpu_initialise(), that's called a
> > > single time at vCPU creation.  This matches the hardware behavior.
> > > INIT-SIPI and VCPUOP_initialise no longer re-sync a vCPU's TSC to vCPU 0's.
> > >
> > > On migration the TSC offset for offline vCPUs is not transferred
> > > (hvm_save_cpu_ctxt() skips offline vCPUs).  To avoid an unexpected skew
> > > synchronize offline vCPUs with the first online vCPU, taking into account
> > > the TSC_ADJUST value.
> > >
> > > The clearing of TSC_ADJUST is also made consistent with hardware behavior:
> > > clear it on S3 resume, but not across an INIT-SIPI or VCPUOP_initialise.
> > > Additionally, on S3 resume start all vCPUs from a shared TSC reading, so
> > > they are in sync.
> > >
> > > Fixes: c31f8336e64e ("[HVM] Initialise AP TSC to same as BP TSC.")
> > 
> > This looks wrong.  c31f8336e64e only added the sync to hvm_bringup_ap(),
> > which no longer exists.  The code removed here comes from bcba667e12e3
> > (INIT-SIPI) and 192df6f9122d (VCPUOP_initialise).
>
> TBH it's a long tail of code movement.  The code in hvm_bringup_ap()
> was latter moved into hvm_vcpu_initialise(), hence why that commit is
> used as the Fixes tag.  Note that previous to c31f8336e64e the TSC
> sync was not applied, as the chunk was protected with #if 0.
>

Thanks for the explanation, that makes sense.

>
> > > Fixes: 6e0336351ed9 ("x86: Implement TSC adjust feature for HVM guest")
> > > Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> > > ---
> > >  xen/arch/x86/hvm/domain.c |  5 -----
> > >  xen/arch/x86/hvm/hvm.c    | 19 +++++++++++--------
> > >  xen/arch/x86/hvm/save.c   | 34 ++++++++++++++++++++++++++++++++--
> > >  xen/arch/x86/time.c       |  5 ++---
> > >  4 files changed, 45 insertions(+), 18 deletions(-)
> > >
> > > diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
> > > index 978d8b222256..71f49ec7ce9f 100644
> > > --- a/xen/arch/x86/hvm/domain.c
> > > +++ b/xen/arch/x86/hvm/domain.c
> > > @@ -312,11 +312,6 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
> > >      hvm_set_segment_register(v, x86_seg_es, &es);
> > >      hvm_set_segment_register(v, x86_seg_tss, &tr);
> > >
> > > -    /* Sync AP's TSC with BSP's. */
> > > -    v->arch.hvm.cache_tsc_offset =
> > > -        d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > > -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > > -
> > >      paging_update_paging_modes(v);
> > >
> > >      hvmemul_cancel(v);
> > > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> > > index ef9c7cd05777..81e90cc8fc8e 100644
> > > --- a/xen/arch/x86/hvm/hvm.c
> > > +++ b/xen/arch/x86/hvm/hvm.c
> > > @@ -1667,6 +1667,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
> > >          /* Init guest TSC to start from zero. */
> > >          hvm_set_guest_tsc(v, 0);
> > >      }
> > > +    else
> > > +    {
> > > +        /* Start in step with vCPU 0, as all CPUs do at power-on. */
> > > +        v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > > +        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > > +    }
> > >
> > >      return 0;
> > >
> > > @@ -4021,13 +4027,6 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
> > >      hvm_set_segment_register(v, x86_seg_gdt, &reg);
> > >      hvm_set_segment_register(v, x86_seg_idt, &reg);
> > >
> > > -    /* Sync AP's TSC with BSP's. */
> > > -    v->arch.hvm.cache_tsc_offset =
> > > -        v->domain->vcpu[0]->arch.hvm.cache_tsc_offset;
> > > -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > > -
> > > -    v->arch.hvm.msr_tsc_adjust = 0;
> > > -
> > >      paging_update_paging_modes(v);
> > >
> > >      v->arch.flags |= TF_kernel_mode;
> > > @@ -4079,9 +4078,13 @@ static void hvm_s3_resume(struct domain *d)
> > >      if ( test_and_clear_bool(d->arch.hvm.is_s3_suspended) )
> > >      {
> > >          struct vcpu *v;
> > > +        uint64_t at_tsc = rdtsc();
> > >
> > >          for_each_vcpu( d, v )
> > > -            hvm_set_guest_tsc(v, 0);
> > > +        {
> > > +            v->arch.hvm.msr_tsc_adjust = 0;
> > > +            hvm_set_guest_tsc_fixed(v, 0, at_tsc);
> > > +        }
> > >          domain_unpause(d);
> > >      }
> > >  }
> > > diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
> > > index 8ab64057064e..65ebfd384d69 100644
> > > --- a/xen/arch/x86/hvm/save.c
> > > +++ b/xen/arch/x86/hvm/save.c
> > > @@ -289,6 +289,7 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> > >  {
> > >      const struct hvm_save_header *hdr;
> > >      struct hvm_save_descriptor *desc;
> > > +    struct vcpu *v;
> > >      int rc;
> > >
> > >      if ( d->is_dying )
> > > @@ -302,8 +303,6 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> > >      rc = arch_hvm_check(d, hdr);
> > >      if ( real )
> > >      {
> > > -        struct vcpu *v;
> > > -
> > >          ASSERT(!rc);
> > >
> > >          /*
> > > @@ -341,6 +340,37 @@ int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> > >              /* Reset cursor for hvm_load(, true, ). */
> > >              if ( !real )
> > >                  h->cur = 0;
> > > +            else
> > > +            {
> > > +                const struct vcpu *base = NULL;
> > > +
> > > +                /*
> > > +                 * Offline vCPUs have no CPU record.  Adjust the TSC offset
> > > +                 * based on the first online vCPU, taking into account
> > > +                 * TSC_ADJUST which is saved regardless of whether the vCPU is
> > > +                 * offline.
> > > +                 */
> > > +                for_each_vcpu(d, v)
> > > +                    if ( !test_bit(_VPF_down, &v->pause_flags) )
> > > +                    {
> > > +                        base = v;
> > > +                        break;
> > > +                    }
> > > +
> > > +                if ( !base )
> > > +                    return 0;
> > 
> > This silently skips the offline vCPUs.  If that ever causes a problem it
> > will be hard to diagnose, so please add a comment or a log message.
>
> Is it a realistic situation to have a stream with all vCPUs offline?
> I was about to add an ASSERT_UNREACHABLE() here, but that's not a wise
> move since the restore stream is external, and could be crafted in
> such a way.  Also, if there's no online vCPUs, does it matter to sync
> the vCPUs' TSC?
>
> Thanks, Roger.
>

Yes, agree. The restore stream might be used by external to exploit whole host.

The code block sits in the END-marker branch, all load handlers have already run, so
the restore can continue as usual. With no online vCPU there is no reference TSC to
sync against, and nothing is running which can observe the skew.

The code is good. I personally prefer adding comments to explain it, but I’m fine
either way on whether we add comments.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:10:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:10:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468060.1677105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNozR-0004EZ-L2; Mon, 02 Nov 2026 10:10:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468060.1677105; Mon, 02 Nov 2026 10:10:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNozR-0004ES-IO; Mon, 02 Nov 2026 10:10:09 +0000
Received: by outflank-mailman (input) for mailman id 1468060;
 Mon, 02 Nov 2026 10:10:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <lin.liu01@citrix.com>) id 1xNozP-0004EK-Op
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:10:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNozO-00Gv9Z-Ub
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:10:06 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <lin.liu01@citrix.com>)
 id 6ae86179-2eae-0a2a0a5409dd-0a2a450bc9a4-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:10:06 +0100
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <lin.liu01@citrix.com>)
 id 6ae8617d-b7e8-0a2a450b0019-a0658309a534-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:10:06 +0100
Received: from cdev-nkg (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTP id 29A8583AA556;
 Mon,  2 Nov 2026 05:09:01 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Lin Liu <lin.liu01@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Lin Liu <lin.liu01@citrix.com>,
	Bengang Yuan <bengang.yuan@citrix.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH] xen/credit: Uncount units dropped by csched_schedule()
Date: Mon,  2 Nov 2026 10:09:59 +0000
Message-ID: <01484673691f2ac609c09d2e57d8981910e87aa9.1793612017.git.lin.liu01@citrix.com>
X-Mailer: git-send-email 2.52.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793614206-1BAD09EA-10242995/0/0
X-purgate-type: clean
X-purgate-size: 2076

csched_schedule() takes snext off the runq without decrementing
nr_runnable, as it is about to run.  A unit that stops being runnable
is normally removed and uncounted by csched_unit_sleep(), but if the
pick loop drops it first, the sleep finds nothing to do and the unit
stays counted:

    CPU A                            CPU B
    domain_pause()                   csched_schedule(), lock held
      atomic_inc(&d->pause_count)
                                       __runq_remove(snext)
      vcpu_sleep_sync()                !unit_runnable_state(): drop
        waits for lock                 unlock
        csched_unit_sleep()
          not running, not queued:
          nothing to do
    domain_unpause()
      vcpu_wake()
        runq_insert()                nr_runnable +1 again

Decrement nr_runnable when dropping the unit.

Fixes: 7c7b407e7772 ("xen/sched: introduce unit_runnable_state()")
Reported-by: Bengang Yuan <bengang.yuan@citrix.com>
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Lin Liu <lin.liu01@citrix.com>
---
 xen/common/sched/credit.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/xen/common/sched/credit.c b/xen/common/sched/credit.c
index 8df746bf6b..f1a9b4aed1 100644
--- a/xen/common/sched/credit.c
+++ b/xen/common/sched/credit.c
@@ -1965,7 +1965,8 @@ static void cf_check csched_schedule(
         dec_nr_runnable(sched_cpu);
     }
 
-    do {
+    for ( ; ; )
+    {
         snext = __runq_elem(runq->next);
 
         /* Tasklet work (which runs in idle UNIT context) overrides all else. */
@@ -1993,7 +1994,12 @@ static void cf_check csched_schedule(
         else
             __runq_remove(snext);
 
-    } while ( !unit_runnable_state(snext->unit) );
+        if ( unit_runnable_state(snext->unit) )
+            break;
+
+        /* Dropped snext is off the runq but still counted: uncount it. */
+        dec_nr_runnable(sched_cpu);
+    }
 
     /*
      * Update idlers mask if necessary. When we're idling, other CPUs
-- 
2.52.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:20:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:20:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468093.1677115 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNp9Y-0007s0-EK; Mon, 02 Nov 2026 10:20:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468093.1677115; Mon, 02 Nov 2026 10:20:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNp9Y-0007rt-B0; Mon, 02 Nov 2026 10:20:36 +0000
Received: by outflank-mailman (input) for mailman id 1468093;
 Mon, 02 Nov 2026 10:20:34 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xNp9W-0007qc-GW
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:20:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNp9V-007F4D-Ss
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:20:33 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae863e3-2eae-0a2a0a5409dd-0a2a450bd5d4-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:20:33 +0100
Received: from [52.101.69.91]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae863f1-b7e8-0a2a450b0019-3465455b8c7f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:20:33 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AS8PR03MB7208.eurprd03.prod.outlook.com (2603:10a6:20b:2ea::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 10:20:32 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 10:20:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=Fz1f0OU7AtxSIchXc0DYiyNZ6zeboqMk0hfTUMOgl2YTS/Ath+aofFMFwnJ0TOW4UXxa3Dp/FTpa6KKmj2Jr8e8+6Ql3mi0Ta11p4UU24QdQygVtOwtapTdKonwOE8J+OjU1Sbx9mya+0JVomESFDcrbAHP5F+Dv2aYyk382z5+tQFhwCPYVPP+jjXFDgSQbDzEbuwTMgY3mKBaaNlaGUnl14LgONpaZlQhp59w3n4xfe81UN4yv5+E1weOV8I/IFPd0tXlmehK5NQ/2BIKDmyoy4VS5Txb7V5uuhdFc/+faGMKDoIsMcW0yU/vue2JKl1I0PdPSVTZHeNUgV9ilkA==
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=/fQGErjLt4aaJfFSUsdbcBsT1wHZRgXFGd60qt1Qhn8=;
 b=k22GwFKW1WI01uOQPViPtDAzupHELA5h2noEScpr6ZQf1Oe8QmLO04M4UQyKB5Y1oBb0xb0BEc2mvLu9EwZeJ0R4866zLKSOtdDnBYW/FQql7WjrLIOTPztBqOts1SxZV6mBaFeKUIepnd2qD80EqrfpzRD3xeRqOHr5wV0Kx7glZrcci2KEDCRzEh+CJr4Bdme0JFRIjrCR6NP93d4Yt6ueShlgPMAW87RsSD5+Dh+5zg5DbmYSibIW7D2rvpuS49iPktHC7+Aq1nXHMhe2JfjPKQhuo1JggG1aGVyKQycHFZ5P1pnRwC4FsWtKDpVKojukbPWMYAuqM2yXS5fz1g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/fQGErjLt4aaJfFSUsdbcBsT1wHZRgXFGd60qt1Qhn8=;
 b=axVXFUmfoaN2gTXBM8I+IaXIvpiZxMclotK2wUYIrDF4whF3HYoRoiG+xfTeCgxz4e9PpQ9X5bqIbDL6bGzygQM3va6f4ePXP2oPNu0eMlugjlJFdn9XZEHCbDMu2k589lFNqR2pHtiggNfHNKy4/RD25qLkR9X65DcdKToPVAN5eZvTS1cFCjy7HDb+5nZUntiIX873D0MKUPDSIhKJfzyl+XTb+UW6StAQogHdU670dJIoGj2D21YrTU0Fq+rP0C+TupEub7wXHBAMur79dP8PjaNlS3R9Ww4EpehikfjHIY7IQvWGAJtJmvRblAKn6jkIA2MCatM9AyywfM1H3g==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
Date: Mon, 2 Nov 2026 12:20:30 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Jan Beulich <jbeulich@suse.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
X-ClientProxiedBy: WA1PEPF00005B90.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d8::627) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|AS8PR03MB7208:EE_
X-MS-Office365-Filtering-Correlation-Id: 623caa20-00c6-4bad-dae1-08df38caecd8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|23010399003|7416014|376014|1800799024|6133799003|10067099003|22082099003|18002099003|4133799003|56012099006|11063799006|4143699003|261021121427099003|261021130227099003|261021135927099003|261026135527099003|261021123027099003|261022105027099003|261026130827099003|261026121527099003|261022115727099003|261022075727099003|261026140227099003|261022113327099003|261009221227099003|261009223027099003|261028144727099003|261021133027099003|260925021311599003|260925021911599003|260925022911599003;
X-Microsoft-Antispam-Message-Info:
	2Cc8999qjflqCMaRYftAJVGkThUS3BeconlXbJ+TwIP6INlfo1dGt0tZ1U1IWPpSaaMf3yy6QL9jCxn+I3wYhWI+5fQHz81E5CDKUoOUvfE6dmoE+lvXpzgPEs6tOQ8+v2RBMg+I2psxr9VYx7YYOFEFXhtIKq4FAAF0WBr8GKyrAjjUlDuYlbAx9bQtRCT1y6H6l5Pn2pAZhZtUQOFuVx9sMKM6T8hYn9ORuSLTbhV1/UkMNm8THQqTuUK0aIQhmhwrYoKgABbadxmK6cF+xEuOzF8yWGHnCvSDdHTQgsDJsG8C3w1cXwFn3DPHtD+kkO35TrTcBQKQ/ObYA2xyncnCuLfG/uAnLmvdD8f7/YNYcpxpSEmewvc7TiX9GvBQklSLtrFrhN7mdUQ89P2hiKR6SSkMljFZ2xGcl8naviOJJdMrEZdvMk+JsWypaij6KMA2QDklSI8+c6DcCJizKwGI6qWJ6cb6rLbEIpqkDCY8rCSDAcrWYDN4X0b1y0ELUg9hSdiElxnsG/U64kdggd+PYiZH+yp8Wx2p7wJ2k/Mc+2+DDSDN6zE60zRzAlYvtefM/ITg7GVl5pVPqnAtW2ub8UckSgoXm1YLMg1N8tEZMTPIP4wYfrmPX7LP/bB4Q2wzJny+xKytl4Xb0hZd7GLUbbbT+/BSmQRhzDkt4Ug=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(7416014)(376014)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(4133799003)(56012099006)(11063799006)(4143699003)(261021121427099003)(261021130227099003)(261021135927099003)(261026135527099003)(261021123027099003)(261022105027099003)(261026130827099003)(261026121527099003)(261022115727099003)(261022075727099003)(261026140227099003)(261022113327099003)(261009221227099003)(261009223027099003)(261028144727099003)(261021133027099003)(260925021311599003)(260925021911599003)(260925022911599003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WEgxTU1lNXY3bUl1cldURXhRdzBIV09KY0dBU0xmYmp5TTVKTzllcFlDclJL?=
 =?utf-8?B?VVVob0FReitxcG5FYURpNnRXODhnSGRQd1g2OW9mMUsrSTYyS3loSGxVc0Vs?=
 =?utf-8?B?RmtZZGJEL1ErL0FnV09HUThGeHVpait3YmVIV1ZoOVJkTGIyNWpRek1ieE5S?=
 =?utf-8?B?Y21RRUxpMGxnZStBN3hDaUhBK1hpdEhsRzlsc2QxU0poUWNFaVZGQ2U2MFl4?=
 =?utf-8?B?ZndsQ2x4MFloQ1JJdUdtUU4vWStWb3cwQ3h5MFhERGdtdWJ0MkRqb3JpUHJt?=
 =?utf-8?B?VHBDdGk5eFZUQVdNVTdiSGE0M0NWYlFGejVCOW9jenBjSDlNaGhMTDRSUzFr?=
 =?utf-8?B?bTZ3RGZMMjRQb21MOG8wVDRVUlpXd09pK3M1cWdEcGgrNmNDcTNiTmhReWph?=
 =?utf-8?B?MTdwV2FCQUdKRnpKb0hCanZZR1dhMTU0WjhjeUQwSGI0Mk1FRjhXNkFDR0or?=
 =?utf-8?B?ZjRBTHJzV0FLUkFlalZTbzJmcFFZOXVnL09waGFxK1Z3T0JSSEcyVVRwNitY?=
 =?utf-8?B?WjJJWHdON3E0RFV6VGFIY2o2T2RMbzhLV0xwSXdMZ21iUjdkb2hKenZLS0pa?=
 =?utf-8?B?Y1cxa0NvcTJnMklQQUdDNFRmbi8xbzRPM0xKdS9LQVhmb2VBMlU4NlhmR3o4?=
 =?utf-8?B?SEY2QXdnODFZakhraTFuK01WUGNxd0lYRU5LUWRydHVXSFNqcExLeW5nUFRZ?=
 =?utf-8?B?MkpmZUlBZm9QVjJ4a3VZYVg5SHhLZldCb0VrZDFob0dHcGtDSG1KV2JoU2RE?=
 =?utf-8?B?RWxrTU5hOXFHNi8yWll6Zno3NDdOOTc1SUNGZTNQQmdET0ZXSjRCSUF6QzJ5?=
 =?utf-8?B?U3U0MWl2UVljaWhrbXkzcGMrQ2xwQ2RkQVhFcFdQL1dkdXlkNFV3ZWNsYWQy?=
 =?utf-8?B?ZHhSeURHbU9vQVFzYThpVlArOHRpTHJacWVEWnE4NEVOaWlzbmZnVnJZUTNO?=
 =?utf-8?B?SzAxMEdtL0hkUTdsNW1sbjdVUldUSTBUWmM3VXUrL2wvM1FmUUsxWGlYZ0kx?=
 =?utf-8?B?WlRCVUhJdXFPM0YvZzBTcXhvdHhFYjFYYXpvU2M0emxCeGRYMlFLc0tDdmps?=
 =?utf-8?B?SDRjSElGSzk3MXZkNHJhVWdoUzFDUytSTzBidzNFNVhmRk9DVkNlb2hyYVNH?=
 =?utf-8?B?SjBGeW1RY09hbUZEbmEzNWkyZGlJNkI0YS9JQlJUWXBpRElWQmUxeUdOWTFk?=
 =?utf-8?B?QlEvUXJFTmJVc3FQT05PS0Z4N21IMWZDcXRQV0w0N3NaenR4ZkVGWWQzL2la?=
 =?utf-8?B?S1dzb1NwSEcwdUVPaGJqTWVFM2JBV2FvMjFBZEZJMjhuRXVVeUUydUJ0RzFB?=
 =?utf-8?B?OWxDUVNyTXMvd1ZaMUp1dUdVOTFUUy8vMHJlY1J4OVR4YzdQRDJ3dE1hcXpZ?=
 =?utf-8?B?T3Nhb3ZZMnh0dWU3ODVsYlVDWHB0b1dHSkFDUTBTWThlTk9DaEY4QVJOa01Y?=
 =?utf-8?B?eGVqazhRaWkyZTF3SktSQUtNRk51clJkdllEVWpLamhabVNwT0NBb1RKU1Fn?=
 =?utf-8?B?b1Y2elV4bjdGYkFxL2p6eXo1ZTNIbXV5dTQzZ3d6Z0hqYk1va1BEMlhzaDYr?=
 =?utf-8?B?QlhsYTdSbTZBZ0pEL2ZxY1R2SXlMajBIbm9FTnZPakxxam1LcndlUWtuZWJo?=
 =?utf-8?B?QUZabWJKMU9KOFlON3dhMTYzTGxzV2V2cjVUdE0vMjNhakVOWFpuSVhjVGg0?=
 =?utf-8?B?anVyT0RkMGRKMXBZeXdjZUUxSzNGbnllc1QrYnJmaXo5RHlBSmFmcVphd21U?=
 =?utf-8?B?S3NnS1VZYzBlMnBYbFNDQzd3U251QkpPQVBwNGsvSFZYTzFQNmV4aGE4ZXZX?=
 =?utf-8?B?aUVkSGYrOVMzSlZjZUtibzRVcXFnZXFPQjVrV0VhMGIxbUJaN0I3ZzRtTTgx?=
 =?utf-8?B?SUtkbzd4VGtSazR6cXEzRGc2ZUhWRTBIU25xR1NSbkpiVWRNMGd2ZGlmby9s?=
 =?utf-8?B?ODhyUUkrQ3dIeDBCKytoSEw2dE5CQ3ZaRlVPczFwUlZCaXZEVVVSVTROV2pD?=
 =?utf-8?B?bkJxSW14V1FoZG5GNC85T1hZeTdDMVNUSEVtSDh4T1VmYXFTdVdjeDJEdmZi?=
 =?utf-8?B?MkFrazdiMkxvV1NQTUZ4cGpoK0h2dDdadjgvVkRmTEJOQ1BmaXpKT0s4czhD?=
 =?utf-8?B?c010ZGFnNFNWL2RVWEFLeE9vTWd4SUQ3b1Z2T0JGTzYwUjBsMWZOTElOQm94?=
 =?utf-8?B?c2hRaElkd0R2K2swUnZHOHQ1V25yaEFHU3I4NDZhZnpnM05PS1JpOGgzQ2VN?=
 =?utf-8?B?VUVuRHFKcUl1SmFVVXB2cE51OWJQc2xKNzVxM2RjQXJ4ZmhQM0w1OWlGeFBH?=
 =?utf-8?B?Q2cvNWg5eloyNFo2cGZJVmlieWUyU29FM2lrNzRxOXBremVwQ0R4S0k4ZXNz?=
 =?utf-8?Q?eIuWZVvOO1ofVOy8=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 623caa20-00c6-4bad-dae1-08df38caecd8
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:20:32.1187
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: ryD/YfWI06EmFSPuPsUo+0ASV3sxD1xitd3xFAxSHqWWnaia7fI8ixouURU5xuCme1ccoHK7lVS1r5nPbBPtb8KDMYuUqyZZIwQ5K/jFXcU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7208
X-purgate-ID: tlsNG-42698a/1793614833-ABAD09EA-804CFFA2/0/0
X-purgate-type: clean
X-purgate-size: 3738



On 10/26/26 13:13, Jan Beulich wrote:
> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>> MISRA C Rule 10.1 states: "Operands shall not be of an inappropriate
>> essential type".
>>
>> The result of relational, equality and logical negation operators has
>> type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5), so using
>> it as an operand of +, -, * and their assignment forms has well-defined
>> semantics.
>>
>> Update ECLAIR configuration to tag such uses as safe.
>>
>> Update deviations.rst and rules.rst accordingly.
>>
>> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
>> ---
>> Current patch resolves all ARM Rule 10.1 violations (actually, there were only two),
>> and resolves around 55 x86 violations.
>>
>> Test CI pipeline:
>> https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/2963748389
>> ---
>>   automation/eclair_analysis/ECLAIR/deviations.ecl | 5 +++++
>>   docs/misra/deviations.rst                        | 6 ++++++
>>   docs/misra/rules.rst                             | 2 ++
>>   3 files changed, 13 insertions(+)
>>
>> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> index 6cdb10a129..8bfb1a0f89 100644
>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> @@ -335,6 +335,11 @@ still non-negative."
>>   -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>   -doc_end
>>   
>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>> +-doc_end
> 
> Why the restriction to add/sub/mul? The text ...

Because this is the pattern found in the Eclair's report, and it can be 
deviated safely (as opposed to unary minus, division and remainder which 
are not included intentionally).

> 
>> --- a/docs/misra/deviations.rst
>> +++ b/docs/misra/deviations.rst
>> @@ -347,6 +347,12 @@ Deviations related to MISRA C:2012 Rules:
>>          well-known to all Xen developers to be a comparison with 0.
>>        - Tagged as `safe` for ECLAIR.
>>   
>> +   * - R10.1
>> +     - The result of relational, equality and logical negation operators has
>> +       type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5), so using
>> +       it as an operand of an arithmetic operator has well-defined semantics.
>> +     - Tagged as `safe` for ECLAIR.
> 
> ... here is less strict, albeit ...
> 
>> --- a/docs/misra/rules.rst
>> +++ b/docs/misra/rules.rst
>> @@ -387,6 +387,8 @@ maintainers if you want to suggest a change.
>>              compilers' extensions)
>>            - Implicit conversions to boolean for conditionals (?: if while
>>              for) and logical operators (! || &&)
>> +         - Results of relational, equality and logical negation operators
>> +           (0 or 1) used as operands of arithmetic operators (+ - *)
> 
> ... it's again more strict here, yet at the same time somewhat ambiguous: Are
> all arithmetic operators meant, or merely those named in parentheses?

You're right that these places are inconsistent.
In v2 I can specify the exact operator list (binary +, -, * and +=, -=, 
*=) in all places. Also I think *= need to be added to the ECLAIR 
configuration for consistency with += and -=.

BR, Dmytro.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:37:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:37:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468103.1677124 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpPn-0003rk-Sa; Mon, 02 Nov 2026 10:37:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468103.1677124; Mon, 02 Nov 2026 10:37:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpPn-0003rd-PC; Mon, 02 Nov 2026 10:37:23 +0000
Received: by outflank-mailman (input) for mailman id 1468103;
 Mon, 02 Nov 2026 10:37:22 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNpPm-0003rX-Hk
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:37:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNpPl-007IZT-Ey
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:37:21 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae867df-bab6-0a2a0a5309dd-0a2a450684ec-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:37:21 +0100
Received: from [52.101.72.82]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae867e1-195a-0a2a45060019-346548522461-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:37:21 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AM7PR03MB6165.eurprd03.prod.outlook.com (2603:10a6:20b:141::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 10:37:19 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 10:37:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=AVYko8SU2NdwMWoX7EJiJe6XnvSS685H3oNldViJ8G/mX7/WsZgNwjaX74hS+68MTMTHeTVa5pjBojl+Z5FkIZ/AwgSlf1XLGistx34QIekauCewYpphLJwfePBXu1M8KCEfcFRpHpFWdt9RI/ZWsd7hV0O+Nf7H7O6t9QZZkABuF2RbdL8luIM8gHjfEKpSfznT4Nj6Rz4vIjrWTa0yptTFJRKF63+qXPZMqFttxJJlKVbAg3cPy4j9e0HnPx3f6JD1xBJBeAam+b3FUiLh4Q+l8ckHTD1Nf7bTFrAgV2vVaCggmY4eR3kwcRT3EOC3MjDx0k85wZ074N5tSXgTTQ==
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=Ca4HOpVLcNuIyEyBUpsPqC7WaTK3GpBsh39cN6RRjho=;
 b=JgfP05Skly3Nt7l4gc5ZEWSiNiNMandN3gy1pTybFpTV8owV2rhIDOBrxsgG5wrosfmZbFrgJh8KwwjQCZY3VvLDn/uZVGLyzTcSMt2EqyKWVSgsj9/JYg28wA57Efzg2FsWu1cpa8grv5wmbIeKVfA8ZRvj6e+lzPzBwJKCEHq2GoSGhtlI0BxXIKIU15AcX8+rFW1jAvP2dU77311dkka23qHl2YiYvdNPcbzMlr9ScpVMsLnKMz6iODZK/Kul3izBp+HlQOXCJqVBiVOH942FQU99FharrjcZqGNzqpF1rc2gsGl45YmqBdSHmrB8wF49kJEo27g3omgSkxV/fw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ca4HOpVLcNuIyEyBUpsPqC7WaTK3GpBsh39cN6RRjho=;
 b=rbV9Jt80k5fTGbXWMLKuofSqDli+kcyioty3X6av8K6VgAuBkttO2p36jSHOvRwm9D8DNzyQ8v6YyiefDMAI5rvzk2+CcRvWnEImZcGavO/w2/y4CKX79eTSIS8a2yrvJOxpBWB/HXduFmfxQ7rxjgRNVXXrpT7oN0fSTZoR8tb4zqWnagqSznQW14WHywxoYpzuEoeODt2mmCAOW8wSiuvIurkqyZmf5IIJFL2hjznWV4Br4sEXbKnfNIxprcMvt9dKFI7JESgUy2ZSuxE4ypSVPmdVo3nr3JKFqtO8IrBUsnEfj+sfCCVl2ZzHO1vv8LMXmRJSZlJ5Rg/FEN5nDQ==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <250b2af2-04bd-4ff7-be00-1abfff52dfe4@epam.com>
Date: Mon, 2 Nov 2026 12:37:17 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] misra: deviate C library-style functions from Misra
 C:2012 rule 11.8
To: Jan Beulich <jbeulich@suse.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cab890c77bfbb016e79f847d6dfddac993079f40.1792406297.git.dmytro_prokopchuk1@epam.com>
 <f50e40f9-6ce0-46aa-916f-fac7e97b7a0d@suse.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <f50e40f9-6ce0-46aa-916f-fac7e97b7a0d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AM9P195CA0030.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:20b:21f::35) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|AM7PR03MB6165:EE_
X-MS-Office365-Filtering-Correlation-Id: fc0a8b86-e3e5-4492-80c5-08df38cd4541
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|7416014|376014|11063799006|4143699003|56012099006|261009223027099003|261028144727099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	/Z9aQ7CVdkKyZ1f5hiZprfIfuw0r5qqUTFmuuseKwOKoI4iKvvabSXa/Q5DNOnRVO/JHZoLhgzZyehYPQpN0UEyYAn3/kjgWMnK2RXvani9oNMFRzEpMi+KoaT0vty5tUw/K/r+ZlvLiEs5KRI4KGFa5LFhLBjVUbkz5gCCSlDL+VyZ32CO0pN8lsCITT9UxzuCQk5YiSKTgdo916c7liWnCEELtoHVjN6LOPYIvfyRan28iyNewYYevrZwlcVt6lbrz6cJsI5JEq1j0j8s7GOCiZ7uPeNN2inZKR1bP5V3WVd0siteJv1GogGCQeC2uphpBOFcikmxcnxF8QqHC500aMYz8EhpsSI6pG83coC/nAjX01QgfGfsD9LCp2SBI+jJTBSc44pcbYCzbWhIccVXIv2Mor7poMsymePwiOnI2AEGtCMzHsLf8IiCOrWxGgZTUZbVyMH/iIw4kYsGpMEMOSNmNuaf2LrkWBw2t8WcDlpTeZAnXzfJOgJEoAm0Mflsarzkt+M1uTsmZkn+9gfVd5FM/lhAVWT3wtDD3ZYEvOjLP4bQlCG6wYWKdxCwD+peGqOvfoSsDR6qR+MSaxdteinNTU7iIeHh18ARFzU82EVvknPYl35xCC1GnQo0iDOl8XJZlDKqHY+OtfwXPOI99yUNfUUaZ3Qkeh+m56Fw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(7416014)(376014)(11063799006)(4143699003)(56012099006)(261009223027099003)(261028144727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RjlzYkFYWkhMRHBqWEUwN0tydy9RNEZKQThvK1NRbFhISFpkbGFBSDBjTmx0?=
 =?utf-8?B?eDAxeExJTXppTmthSVprNFVFZDhDQU1ONUJTVmd5T1JDZ21NY1VCVy9mQXE5?=
 =?utf-8?B?UDF3U1FERXNDVnJ6QkxmUHE4ZU82WDFiT3ZsVVhoaXE5S01zT09kNVo3Q0U0?=
 =?utf-8?B?S2RZMm4vODFmTzBXSi82a0RIK3FFaDdOWHZWS1ZTMWFZMXJoK0NRY1o3eTZ0?=
 =?utf-8?B?OGxuaGplbUU5SzZyallaVXpoWGNldFlLM2lwWThseHN6VnR1R2plczFGbVh1?=
 =?utf-8?B?OWRLZ05tU0pBTk9aandmSVlMRUhCcURWTUJ1cFpWNVNFOVlINjV3WjhYSHVz?=
 =?utf-8?B?R2VlTGtoNkcrUjVnMG5UYzBUOXNlMUlRZ1VWbFBlVVp6dWtTNkV6S1ZFaUhh?=
 =?utf-8?B?WnRJckZkd1JyWG4rclVvUSsrSWJ6MFhSbWFtVnZqQWRXK0M1cE5HbDhtR09Q?=
 =?utf-8?B?MkRGVzFjdXhzeDJoWm0rWVcxZUVZZ3I5YXphSTNvdlRJUEpIcnQ2NWFjSTlo?=
 =?utf-8?B?V2s4UlRKTzJoRnp1YjJIbTlUWHJGYm9UeGkvQ2oydjhEWWhCdUIvMy9PVllw?=
 =?utf-8?B?RHZYdTZSOE1Mc1ZoVmtWdWoxdTdrMkxtUkkyYzlEbG9JTWVhNVZJd2VRN0NX?=
 =?utf-8?B?eERYT2NvOHdTb3R4QldrYlZvK2JRK3RLb2R6OVVHekd5VS8ycmFFRTIwZCt2?=
 =?utf-8?B?ZkVVSWE5LytDNUpLZ3dkZXZ1QTFuendqMUNMMk00NCtIRmtYRjRGWkdYckh3?=
 =?utf-8?B?MmV5OEpINGpTMmhsWHJOd1Uwb1IzOHYrb3J5THI5U2t4Qjc2QlRlSHdPUGZQ?=
 =?utf-8?B?ZGVoK0Z0VTFTY0hHbFVmUE5hcEtxdzJGTkZ0Y2R4MzlobVQ0d1BwME9IeUkv?=
 =?utf-8?B?UW5kVW1UMHJKeTNtMlVXMHpWTks5SFdIS0xDRS9xWGIrQmNmUkdGOGxNT2tz?=
 =?utf-8?B?RlBZN0ozQzlwUkVGalFkVTMvQ2thelJFMWxXOEFoMHVoQk52cHZjRWdtSEg5?=
 =?utf-8?B?RTdnZHZyNmpUczgyZkYrelIvUnY0SnhyczYwb3lZTDNHYU54SVg1WldCUFBN?=
 =?utf-8?B?WWUvRWlUUW5iUjdDMS92UDhHc2gwSmlUQWpKU0dOSTNPd1FYN0F3NDgvenpl?=
 =?utf-8?B?MmphLzF2MEU1eWJaY0I4cXM5eGVIUjlzSHZ4eFY3dUtQM2doUGNKcDNWNUxv?=
 =?utf-8?B?NG4vaVVoZGZGNkJkZFk2NFJkQzlCQUxLbVdZKzk3Zm0vN2t6RDJiZEVRSnFP?=
 =?utf-8?B?R2FGQ2kzSzZYbXZCc1hvZWVxc1R1M3RPQ3VEVkRaTmVzUDdkWkpOalJqVC9S?=
 =?utf-8?B?bGR3bnRuaVRvVzM4Z0dRbmZFMU0xdDlZb1BQLzQza3Rwc2toRUxXUEVhNlAz?=
 =?utf-8?B?a2FHL3FwZlFyYm9OSGtGclV3OGxIbitJVGN4QUtUcys2RWJ1RXdsMnBUUmVE?=
 =?utf-8?B?enh3QmE0cmpkVkJHYis0ck9kY2t4UTJ6TGdEWE9iZVB1WG51REJnMHRxTU15?=
 =?utf-8?B?RXhQOGpsTEhBa0pBdDdxMVNrZkVBNzhkS3ArRm53ems2bWsrd2pTRDZjODU2?=
 =?utf-8?B?TE5RS1JyQ3BDU1ZSRk9IbXVxc250NnUvSnhIYW9GNWFBUTRSQ001eTJQWTVV?=
 =?utf-8?B?cTZBQi9oNjdudm1heHNyTmRNRkdlT2t6UjQ4N3pSZDNMbDNmcTRudUJkd1BE?=
 =?utf-8?B?SEtOWTRlZktZaXBSeTBCVnZwdVFpTmF1SWpqdGszb054QmtmVHNFZDJWNlVT?=
 =?utf-8?B?WE1aS2NwaiszZkd2clJIcmlzMEQxaml6UHFhdDk0TEpYdHRtMGV3c2htREg4?=
 =?utf-8?B?RDhEQldhSkFvazZCeU1yL3U0NGhyY2JrelorR2RNWi9hdkRhVi9CVmF1aUxl?=
 =?utf-8?B?NitSeFdwMEtWR2EwbWc1eFhPdjBPWGd3UmgyN08zc2hOWlRHUXJGSllGVis4?=
 =?utf-8?B?elRZMWptemU3cjZPV0JaUEFMcFQxQWxSVUE2Rnh3RllJbkw1cTNGa1BiZVpj?=
 =?utf-8?B?WHJISnZaYnVBbWZReEY5Z1hOTmlnNDNDUDFzSXBpZVhDVVoxWlBsekdWSW9M?=
 =?utf-8?B?WjZKQ2JyZjAyWnVuZVVwMUFIbUJNR1dSZ3ZVN3QxaXVtaGpBMUhjbUtOYXVG?=
 =?utf-8?B?MHZJU1BTc0gwUStDZkpBL3hhSzNIMFVRckVjaDRzbVoyTXhmVzRHbWl0QUFp?=
 =?utf-8?B?c3hnelJHbTRoWm1LWE5COVpPSC9lZGJKUU44UjVxd3hsTWdRc29kaWcvdWhv?=
 =?utf-8?B?am1uWEVadFYvRiszbkpsbWE0R0tyeGFnZ3ByMXlCOElBdVFHc0lmTWJlWXhZ?=
 =?utf-8?B?ZkhuL21GTElsMnA2RnpncWNOZVZVMTNRbVVKbGhaTHVVa0dNZUhaRDByZVdI?=
 =?utf-8?Q?PSqSUZZzbw4Sk2oQ=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fc0a8b86-e3e5-4492-80c5-08df38cd4541
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:37:19.2733
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: +WlborshXSqsWp27ApSUYljtqd4x2/qP8DiGkOv6hj/46Ggdy3sqLHcx0O0zlhZCRYZWwrQfk+rjZe1pV/v5WIsgzXO7G/UGE1N3IudJ1Sw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6165
X-purgate-ID: tlsNG-16d1c6/1793615841-1F6C877B-BFBC8F4B/10/78276251493
X-purgate-type: spam
X-purgate-size: 2156



On 10/26/26 13:09, Jan Beulich wrote:
> On 19.10.2026 12:41, Dmytro Prokopchuk1 wrote:
>> bsearch(), memchr(), strchr(), strpbrk(), strrchr() and strstr() all
>> accept a const pointer/object but return a non-const pointer to the
>> matched element or byte, matching their standard C library interfaces.
>> The casts in these implementations strip const so that callers searching
>> a non-const object get back a mutable pointer. Fixing this would require
>> changing the public API, so document these uses as deviations instead.
> 
> Imo "public API" is misleading here, as it could mean "public interface",
> which isn't affected here at all. Then ...

Agreed. I'll reword the last sentence to:
"Avoiding the casts would require deviating from the standard C library
prototypes of these functions, so document these uses as deviations
instead."

> 
>> Update docs/misra/rules.rst to note that this class of double-use
>> library functions is deviated on a per-function basis.
>>
>> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
> 
> Acked-by: Jan Beulich <jbeulich@suse.com>
> 
> Albeit there another minor remark:
> 
>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> @@ -450,6 +450,14 @@ write or not"
>>   -config=MC3A2.R11.8,reports+={safe,"any_area(any_loc(file(hvm_guestcopy)&&text(^.*__hvm_copy.*HVMCOPY_to_guest doesn't modify.*$)))"}
>>   -doc_end
>>   
>> +-doc_begin="Functions bsearch(), memchr(), strchr(), strpbrk(), strrchr() and
>> +strstr() accept a const pointer/object and return a non-const pointer to the
>> +matched element or byte, matching their standard C library interfaces. The
>> +casts in these implementations strip const so that a search of a non-const
>> +object yields a mutable pointer. This use is deemed safe."
>> +-config=MC3A2.R11.8,reports+={safe,"any_area(any_loc(file(^xen/include/xen/bsearch\\.h$||^xen/lib/(memchr|strchr|strpbrk|strrchr|strstr)\\.c$)))"}
>> +-doc_end
> 
> Can't we fold strchr and strrchr here, e.g. as simple as (memchr|str+chr|strpbrk|strstr)?


> 
> Jan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:39:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:39:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468110.1677134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpRk-0004pZ-81; Mon, 02 Nov 2026 10:39:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468110.1677134; Mon, 02 Nov 2026 10:39:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpRk-0004pS-3q; Mon, 02 Nov 2026 10:39:24 +0000
Received: by outflank-mailman (input) for mailman id 1468110;
 Mon, 02 Nov 2026 10:39:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNpRi-0004pK-Di
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:39:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNpRh-002r62-JI
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:39:21 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae86855-2eae-0a2a0a5409dd-0a2a45028714-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:39:21 +0100
Received: from [40.107.159.90]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae86859-6ca4-0a2a45020019-286b9f5a7e14-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:39:21 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AM7PR03MB6165.eurprd03.prod.outlook.com (2603:10a6:20b:141::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 10:39:19 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 10:39:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=p7rBQEopWZ7Dx4yl7v2fYL76r0l3ld0VA/c9Nf0PBhU8cW6K+gN2vVTIpBhGwePbKIzg6VJJOxah38EEeYEeDpHUvJtJrDvqYxHzA2tsxw2QKsmF44OZ0KuuyL62XljTtlSrYgIVpH3CGd0NKbG076g7D8NhSnnQId3BnmsZ4WZLxzqN3Ye+XWakBMeLM1vLoZum5remdAGlkBNDEp4/KS6YdMTRSYmu70OfGuWLRWRZf5CeIQfulw9ca5LnETUn2CghNEZPVsOujLWKqGRP++10zDEU8AqflrlmvvbJR8F2piHQGKDwtir3L4gv9TsxIGb+Bv0SyzwFjugzNRiC0A==
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=dzF5ZIL10DZ4y6+BdoYzA09ao49u041PnHz6hjIkOYc=;
 b=AbmmgiHvRiqaMMBlTGd0Gd/IYwMINh5gk61Ds+M1m+NFYacKbiGyKHuMdNKMxm8BEwaQNhzBO4tz2CFAMnW3B6XKypCmtdnV1iuWnmFpKPr7/adnSG4Ku3sJE8ZUbhcwDhiFUgfUz01+vliYUNYNg39nJcQRa0MdmhEOMjFFeWCCwG2CFiA+J+2adgjy4XWX6y4t71E75DBlMY9ddCKGv4PuhWx/LpI7aIVuHVGNJXWAFKOjkYCy3n6p+UzKuuB23+YeW5oy+UZJJ+9zWdIA8CTpZq5DkiLAH6mUuRPYbyYcD+I8mwJ+8jIPNgR7y+5rXGJoSxkW8i0WtgV4gu77yQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dzF5ZIL10DZ4y6+BdoYzA09ao49u041PnHz6hjIkOYc=;
 b=g9kqOH+2eypMUKwj7AmoICEaB8bXql7VAau1Ci3FPOvDYBqpk9PSgD0E9kA2QIL/npSAZCklhsYn0i0Bjf1tS1MOxRAH+Mfc9IO1m8gzFf4dNTX/1LocsMd4v79MTpFpyYOeBDoenZ84H77F/Jdsdxpho38Q9fFvxCg9y7KprB1bm3Zm0ViRDTdvgMC9bv2ANlw/FHmHxFkLWX6MujJwCA4kpcxhRDRM+sbaKvwVfbRsGTsgCql6UkafVQgs1OWzMSsZqkaGDg5V1bM3JMj84ohksNybq8ivhd/0gglyIMlg7OYfZ+X1St91skqIzl/IaFiSikPlsdfY444wZ8VNdA==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <30f714f4-df1e-4b40-a440-ff15cd7b055b@epam.com>
Date: Mon, 2 Nov 2026 12:39:19 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] misra: deviate C library-style functions from Misra
 C:2012 rule 11.8
To: xen-devel@lists.xenproject.org
References: <cab890c77bfbb016e79f847d6dfddac993079f40.1792406297.git.dmytro_prokopchuk1@epam.com>
 <f50e40f9-6ce0-46aa-916f-fac7e97b7a0d@suse.com>
 <250b2af2-04bd-4ff7-be00-1abfff52dfe4@epam.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <250b2af2-04bd-4ff7-be00-1abfff52dfe4@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM9P195CA0028.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:20b:21f::33) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|AM7PR03MB6165:EE_
X-MS-Office365-Filtering-Correlation-Id: 0712addc-4e5a-44cb-71f4-08df38cd8d24
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|11063799006|4143699003|56012099006|261009223027099003|261028144727099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	vQuxGwGLA5sWf52/PLIhXCTceI4yVjW4um1LnWOLkxtUVykw/Ttjwxjt2ymoP2tmCePgddvMJaK74SRT9/HUMXD+BuVvERAgLqT+QEchcznD/wVHsJ8pcgaovxRX6Y7N+h3oA4DiK3jCmHuR17jn3+/b8E0l79eo74Pyzj2uieTcnWHEIMKwkW/k8xZpSJFdHRrs2qiZFOgrRci/uhSsv5xp40GE6tZlP8FWiI1ht2bXoxMLjhczIHOhyO6FYc8hloHS7Z+b5ogRgZ5acAgoTUUPuAVOmBvUExKk4pQ97jI5f/TbmpwK3M0ugtOFYHRkYMqzaplSLnFK0ylMyWsHEBqVRVllSdnKyWaScFou5Xi1f8hJ1mtAvQ7Iqltmvv0kaAvKTxQSSuCVt0HomcULTc3H8OvagOCulWNDzCadm0v8Dw3VgrucUMRnr7SBqwELKd1TllVda0YmyGU6u8QLUwtluC7FVALSQyoYKKBckfN+VKGyzE+iDsFMrI36IWUznEb8VvlPWEtciLWDGgVf104NnVYmNqAmv9v6JFDI8+dxpKYFqfAo4U3dRfOrJ6Ta1eDMO6zqIfJaBhYaFLlzlDMxO1M5qqmEuAtXgroNHA7V/jLAx/VYYCOz5hzwJPeyySmXWrhBPNY1RtkX70mhaZ7XFrz3Wn5VC6laghQ71j0=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(11063799006)(4143699003)(56012099006)(261009223027099003)(261028144727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NlZtWVJ4YSs2dXBCTHlxbXB1dkdMZmRHaVpzemt3MmpLNXhSY2JONUpWQ0Vu?=
 =?utf-8?B?ZFN4ZGJKeURJdDRHd0dSMCs0WHZ5V2IzNjNuZ3JLQWpxV05pRkZ3Tk1wbDBt?=
 =?utf-8?B?NnhvYlFIZ2pPMnZLMklFS0tud0IyUFpzRXUxbEpBa3QxeWIrWm44NzVMOEFR?=
 =?utf-8?B?MGlkeXBlQytEZE9sdGxOWXlEMHB3TDJzL0pKZytKR2JNTklWVVVoS21na3VQ?=
 =?utf-8?B?aFZ0RkJhWW9WZzlDc0UwcFd1VXBCdURmaU9zZFQyN3BoTzdaNTR2MWhCT052?=
 =?utf-8?B?bXlhZ3loS244K1g3cjRWMVlGSkk4TkJTZkR5cnZYV0tnRkVnb2ZnMXlSVVR6?=
 =?utf-8?B?V24wSFpmdVRNSUJVc3ZGYWU3R0Y0ak9EMzcrMlc5cVJHTWJaQmlVWkNubkZW?=
 =?utf-8?B?cGF4aHpMUHYyZGpZWTNLRmpGTStLOTBoT3Y3U0kzUEd0WnFIVXNncVRDeUhN?=
 =?utf-8?B?MytuR1FPNEJ3ZnpOd2tGdHlFdmJMcDNHRUtkbWxEeGo2Wlp1MW5aU3d3Zlpo?=
 =?utf-8?B?OFZnckwrR2dNaWpKKy9vMkMxNjRJMkdxSFFGMUhVV3lLTEpucUR1a2dFM1FE?=
 =?utf-8?B?Qm5OanRHZm9JeHptbklHV3FpeUs5ek9wS2tkTEQ0UktxQTRDb0ZxdUJzd0pN?=
 =?utf-8?B?Q2d2YWs5cmU5ZHJCYmpKTElBdDBUbm1MYkdMMlFjTHVGYi9qMzZpdGlQWFJu?=
 =?utf-8?B?OUowUnFueVNFbmZwZEJjdHVYQlkvOXFxNFNZOERteDJKc3J2MjQyTDZJM1A0?=
 =?utf-8?B?N3kxNU1zTWZVR2RIQzJ4dHdQRXhSNG5FaktxNlBoVjMweDg3d2hiWFRuOGZ5?=
 =?utf-8?B?T2poWmMyY25CMStlTXh5dzhRSmpIUzNBTHdLZW5EcDdFcjFMaTQxTWpEQVF2?=
 =?utf-8?B?NGROOWZDdmJOL1hNNms5eS9WNkdYMUlmMlRsUU9nZk5yckpyb09MMkhsaUJa?=
 =?utf-8?B?RDNXdkVNc21neUcwM0NmNW53UFpnMlpOR0xrZ3NwaTF2dzhLNkswb1RLYmZ2?=
 =?utf-8?B?K0swQ2IzWkdSK3o4L21WU2g3Y3ZaSXpDc0tsMmxmQ09TWTRwY1ZPZFRzSXl5?=
 =?utf-8?B?cUtPbHhjYVZSaTNNV2huZy8xbmROdDVHeFU5Qm1UaElmQmhMenc0WGJjK1NE?=
 =?utf-8?B?YzNpcStYOTRMTS9UbkZOeEJQNUxNRHR4ZzNDSDhWeHpZSmxSRnNINGJvWFZ6?=
 =?utf-8?B?NGg0WkhDenRtUXFYQ0kxM1VqdFJ3YWtuWmxrZU8vbVlyODJFWlZzbVRJRGJp?=
 =?utf-8?B?MDgxWU5adDhtVVZraTVJZk5uQVpUQ05tb1F2bnN2QTNRK0Q0RXdNaTNCZTJ4?=
 =?utf-8?B?VURHVE1yQnBEczRIcnUwenZpbzFtNkZkdlFpWEhDSi9vcTBUdVg3bWUzUGw3?=
 =?utf-8?B?cjRrSklZS1JnWWlRV0UrN2Z2MjBYL3hjRWdjQkl3OEZuOURTbDlzdUEvdy9I?=
 =?utf-8?B?MkNYanJLRDlZdHR0ZzJKYkVydjhKK3hPbHpYeDV6MksyTFN2S1NDREFNN0lU?=
 =?utf-8?B?bElWd0tlSjNOTVhrbmYrb0xVckdoeE9LTzRoL2ZqdzN0c1RCYVpTNmUwNVlH?=
 =?utf-8?B?SUk5TlA1N3IrcVFFMWdCWHZxOFpWbVRhdDFEUWthem9ENnp1ZU9XVFNManpK?=
 =?utf-8?B?ZzZObUp3ZHFCUHZLb1prQUxMbnpvWUtYSUc2Z2Fub2tUVm9tcUU3aHVOTXh2?=
 =?utf-8?B?aDJQVTR1aXZvcmZRUjBiSnF1VHFVa3JKdnR2YjJPWXk4KzdkRm9aem1BUis2?=
 =?utf-8?B?U1ZWaXF5UVIrbmVCcUF1c0JjdytNMml0NmthVXY3eEtqTEl2NjlhZnhMSUFk?=
 =?utf-8?B?VlZ4UmFRTlB1YzlRbDNZS3U3MmZMdytnZFFid1RXb3ZFeldmSzVRMXpJSU9v?=
 =?utf-8?B?K1F5NVd3RlV3S3ZRaWxva3F3eW5qY1RaUDRDZFRwT2w1RlArbmtWbzlDNTlP?=
 =?utf-8?B?blF2emNqQUM2RzdYa044MkJ3N2xwMUxhTVprTEZzQUdBbk56Syt5ZjVoNkRO?=
 =?utf-8?B?RnpTaWo2SHJiUVdoSFFjcVFrdlNuUUJzUVJBQm50aWhFMXkwMjdFQ1Y2VE5U?=
 =?utf-8?B?SHpVQnUzQVpUMWpkZDc0cVpRQXpORDY2ekxkY2lNR0VENFhXMENWVTFBVm1L?=
 =?utf-8?B?eTRFMVZHRzBFQ0Fxb3JnaTk1emQvSUxlYytqTlBEem5WU0JNRC8wSE1hSzV1?=
 =?utf-8?B?clZhQ29oUDQ5RGM1SFZWeGpkZHVNVE5FOUpBc3k2NUk1WWQxWXVzRUZKREJU?=
 =?utf-8?B?ZTRBaHY1YkEvUEFLUFEvTEppTkJ3cmlObXlSS3lUZmkzdVR4eU52SUkyb0xy?=
 =?utf-8?B?ZVlBMTlpUzFaT1NBSEVlV1BDa2svaVFHY0N4UU1UQ2w2azZEQlZzQ24xNlV6?=
 =?utf-8?Q?zNjPUU+e//JUkcac=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0712addc-4e5a-44cb-71f4-08df38cd8d24
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:39:19.7976
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: lizHoGF4yVKhSfQWfDiJMRr3lxnqSPQGcLpBs73UOOOBh4qa+6ya+BsC6ptTVyMxMJ2Xvem/QvTTrq18gYvC0dgtL5T/JCfbTE3v9lWA+eQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6165
X-purgate-ID: tlsNG-720697/1793615961-F0EA32AC-604AC5D0/10/78276251493
X-purgate-type: spam
X-purgate-size: 2338



On 11/2/26 12:37, Dmytro Prokopchuk wrote:
> 
> 
> On 10/26/26 13:09, Jan Beulich wrote:
>> On 19.10.2026 12:41, Dmytro Prokopchuk1 wrote:
>>> bsearch(), memchr(), strchr(), strpbrk(), strrchr() and strstr() all
>>> accept a const pointer/object but return a non-const pointer to the
>>> matched element or byte, matching their standard C library interfaces.
>>> The casts in these implementations strip const so that callers searching
>>> a non-const object get back a mutable pointer. Fixing this would require
>>> changing the public API, so document these uses as deviations instead.
>>
>> Imo "public API" is misleading here, as it could mean "public interface",
>> which isn't affected here at all. Then ...
> 
> Agreed. I'll reword the last sentence to:
> "Avoiding the casts would require deviating from the standard C library
> prototypes of these functions, so document these uses as deviations
> instead."
> 
>>
>>> Update docs/misra/rules.rst to note that this class of double-use
>>> library functions is deviated on a per-function basis.
>>>
>>> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
>>
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>
>> Albeit there another minor remark:
>>
>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> @@ -450,6 +450,14 @@ write or not"
>>>   - 
>>> config=MC3A2.R11.8,reports+={safe,"any_area(any_loc(file(hvm_guestcopy)&&text(^.*__hvm_copy.*HVMCOPY_to_guest doesn't modify.*$)))"}
>>>   -doc_end
>>> +-doc_begin="Functions bsearch(), memchr(), strchr(), strpbrk(), 
>>> strrchr() and
>>> +strstr() accept a const pointer/object and return a non-const 
>>> pointer to the
>>> +matched element or byte, matching their standard C library 
>>> interfaces. The
>>> +casts in these implementations strip const so that a search of a 
>>> non-const
>>> +object yields a mutable pointer. This use is deemed safe."
>>> +-config=MC3A2.R11.8,reports+={safe,"any_area(any_loc(file(^xen/ 
>>> include/xen/bsearch\\.h$||^xen/lib/(memchr|strchr|strpbrk|strrchr| 
>>> strstr)\\.c$)))"}
>>> +-doc_end
>>
>> Can't we fold strchr and strrchr here, e.g. as simple as (memchr| 
>> str+chr|strpbrk|strstr)?
> 
Sure, will do in v3.

>>
>> Jan
> 

BR, Dmytro.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 10:53:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 10:53:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468117.1677143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpet-00019I-Ce; Mon, 02 Nov 2026 10:52:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468117.1677143; Mon, 02 Nov 2026 10:52:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNpet-00019B-7x; Mon, 02 Nov 2026 10:52:59 +0000
Received: by outflank-mailman (input) for mailman id 1468117;
 Mon, 02 Nov 2026 10:52:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNpes-00017s-5t
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 10:52:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNper-006t8q-3L
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:52:57 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae86b68-8faa-0a2a0a5109dd-0a2a4501d162-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:52:54 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae86b85-5984-0a2a45010019-d155802bc9b1-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:52:54 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a20bde60a0so21519015e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 02:52:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b8a84esm21416598f8f.39.2026.11.02.02.52.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 02:52:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793616773; x=1794221573; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=rrty6JBhFtVL8uV3JET7wNOpx3Uc4x0jRrpd/K1spgM=;
        b=OIDXt7CTQ5oO3HQ+/KZLKlraNAVYxGkmSBHp6WM+nrj32sdaCYSYvePDS9iyVSziYo
         2vJcYn1fqSpbGaX8w1YENyX2egPi6zvbaUZqcGdmaNd0/hRYd7WtTTDuzVxHyUq0hABs
         JrNGjJEDpCs+/QsJQ4ws1PGrNZ3h+HhVh2TIgLQ+qVYUt13eLw5BvHbZGrYiTywOjxPT
         P8M8n829bR96WIeXWucsNa25OcNfTZFpjjK/twkouB5rBl/hi4B3oV3i5j0Ez4FqfTmh
         6r2IzhduZn6RwXLwgfrAxGxQp15w7lyWqH+7hlk2IWf0+6EDaT/6tF1bzsp8UD0EqVVP
         dLQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793616773; x=1794221573;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=rrty6JBhFtVL8uV3JET7wNOpx3Uc4x0jRrpd/K1spgM=;
        b=ssNd4riImfNMWcAjZ2iJxi6H+Ss7bYpv2+ktxj4IOebenhpheoXyZa9w7glKh9O5D3
         N3LfZMq3jhrDFcvnBfQetdx8cntHPIT39YBF1Ow4HvuWimlCgsPG9Y5bZEB+2KjA8qWP
         0+G0H8/iYGAMVznr2xXOK3lYilIbaQY9f7obkjbl6ffVAD+fXIKmn/I5N92oM6FsCJnt
         3kLl4U4o+P0lJpoT8VPw01zJO1+6wzRYk43c+KLkTzesDV4JXuRO9KLeGhpyKnX0tRyD
         pNqSzwA0ihyw41wzwZuYSuynv2S1tDqOSm8V3jtlf0f8EJXcj9F6zJn2l+KZY2M5TB1I
         3JPA==
X-Forwarded-Encrypted: i=1; AKwUvBwgtDnhQuHLgmJlJNQcecTVxOq8FC6AroRc5UDZMxAHbyjviAtw7dgoT9vJZH98z/f6xr9Mjn1BEUc=@lists.xenproject.org
X-Gm-Message-State: AFq9FYI5lZGVSfpLUCvV93s++5+VpEGzvs1HICRYHYpzuhWJfvh9qGT4
	ddtvFgXiqlHyHPnAKJo1xPZmUUg2HwG01ZQJo10mJBc0Rr5CKN7kilBnspJ62hIY4g==
X-Gm-Gg: AYBFou0MP3y3smrCGlSAgf2g9BkoLu0B67gR9piiG/npZjRM/GNTuN+noI1NmjhuZOK
	3wNJ7y59GdIPx6bP4O7274vKjQNlHXI3XDy05zOJ2ro/UvIKoxrmaqyyCheFwgDN4tFJct1pujE
	BRAi5sEN0Hz0lNClJyOQQeOEwUMImSnFiDETz1NenY6Ex+q0YHogICm5V18r+9snyvDW8H7hXNB
	4SxtXMMTqJulCJt1UP8bcxdzqQ10AOXwbftOSyUIfiF3PDg38BrhZ4fOr+5hKwKsvyNd/NaAUy2
	xYybXzk7cdPLSFB9azh8U3N0puHYH/C7kFQdOAQ06eOAq7pWhlBoAwt8FwSqhILSvkj28Sb1gS4
	R/EhuyI9HILkum3QY46S1KJmol6mkNaeHpcrp5Ae7GWDOntXetFpLztmUBQ2S6GxY/OZT847nXR
	9vUtpskIHBY4rHUnpdIbccjydSJEvFsq1/cdd8acX22kIRDyboanSkgi1z9RuaMVPYqy7sX5Rm2
	eFXNg7Q8YCM2qA/VFbz7dFcbsWoSz5n35X9/thzD1SbH4QKAaPz2ul2fRt4NUprVyVioF3EVFdV
	3X7uXoq4aFNCJm0KdUnyq3s60zpAHI9I0ArT8NqsJdssCLsD0IyLSRo+1QYG4WNliNb71Xw3JBf
	E9RT8aloYwy32SaQ=
X-Received: by 2002:a05:600c:4585:b0:4a7:8fe8:130c with SMTP id 5b1f17b1804b1-4ac1889d5a1mr215598435e9.28.1793616773521;
        Mon, 02 Nov 2026 02:52:53 -0800 (PST)
Message-ID: <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
Date: Mon, 2 Nov 2026 11:52:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
 <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793616774-BEE60757-662A5C55/10/78276251493
X-purgate-type: spam
X-purgate-size: 1559

On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
> On 10/26/26 13:13, Jan Beulich wrote:
>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>> @@ -335,6 +335,11 @@ still non-negative."
>>>   -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>>   -doc_end
>>>   
>>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>>> +-doc_end
>>
>> Why the restriction to add/sub/mul? The text ...
> 
> Because this is the pattern found in the Eclair's report, and it can be 
> deviated safely (as opposed to unary minus, division and remainder which 
> are not included intentionally).

Division and remainder aren't very useful with boolean operands, so can
surely be left out. However, more generally: How does "Eclair's report"
matter here? In deviation wording we want to go from what the Misra spec
says. The spec covers all operators. Hence any special casing we do
wants to be justified. And, right now at least, I see no justification
for restricting the deviation to just add/sub/mul.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 11:27:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 11:27:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468143.1677220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqC5-0002HK-3x; Mon, 02 Nov 2026 11:27:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468143.1677220; Mon, 02 Nov 2026 11:27:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqC4-0002HD-W5; Mon, 02 Nov 2026 11:27:16 +0000
Received: by outflank-mailman (input) for mailman id 1468143;
 Mon, 02 Nov 2026 11:27:15 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNqC3-0002H7-8N
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:27:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNqC2-00GXiw-Ev
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 12:27:14 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae8738e-e002-0a2a0a5209dd-0a2a4505ad2c-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:27:14 +0100
Received: from [40.107.162.135]
 (helo=PA4PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae87392-4cb1-0a2a45050019-286ba2878bab-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:27:14 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by PAVPR03MB9680.eurprd03.prod.outlook.com (2603:10a6:102:315::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 11:27:10 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 11:27:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=K2Dreo5FOwULhymmVvLjNZ2Y2oCwDrDRd00MImQOmDLoz1miUNPWZy38U1aWVTaTdyJsdu0mw4DYb2nt4MDd1Y/Jsyy9mFKx1Wy9uokOuiq/ctswtk8GPnp8IhoXFnx5Q0wnprtVeQHSWWUp5vJNlfgBCAQ8hwKXWTkiKU4E1AQZqi2Vhfr/Kru+EJTjmZ37Yg/hPV0KLh5zWUEQEnDS3hklOTZduCBirNoRcZSLL3tsTm8b/ZBVm8q3l28/oHgHoyZHhfskxVeCjYZLlO2icwGevGGfjqUpxBcEb7VfGfpbFVITLzMuMYg0h7f9R+ZfdiLsElAtdNeSwuIAxdx4tw==
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=qWEkDLfYHh1tUCRdaVzkbt628Bo72NXnTma0koZ+NTE=;
 b=jeYgjqJuieZZl2vQFXrwKZaIljtm3I7FdO/YV32ggg+mQ4wuG3uYy6DLYVzziw8Ouh6mH1QSKQKPuVn22SEjC1lD7q9nbNUh97jTqY1mWSqSWuWLxkwrlkwU/xohmWglnwGnapV0lMWjEkuFx+7TQY3Es3cjCdvznlVoKeyshurCQIqbuhfpL3QSbaRcsBS6bnwb/UdRspd/6ky86OfaaKnJB4edCSqIuzFfFhnbh1bdKcGdl5s83oeUo86ThX8z4OfEwTg2kTsAOUDLVIXOWOJ6P+lk6n7M66mGErxujza0Q+EO2mlps0NRa68U+dpCwI5rzZwVEzBHm+CqPAdhJg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qWEkDLfYHh1tUCRdaVzkbt628Bo72NXnTma0koZ+NTE=;
 b=GiXdh78O1GqjocNmzvx7SnqSJNci1ELucH+5KAHdPtDqlE6UUq/q3lpUCM9KZD32cyDLEaG1jU6y+76bdf86nHHC7pLNd6i78QBmLG/Qr8Homsf6B+BCrx2tjvSFJIilpSyNacG6L0pV//SauXJykU+XCfPmCtG0BklmP6tFmuWpkDzTkPqgzPvd9qBDKjoOX7rzNMlvkOuVJHKIoDrNaXrQFoDf5Ybb+8NhKlX4HUZPUPEyolCKy83w9ixevR9b5gBWyO14Y5kzGAeDYOrOqaapiO//WMyHuU/pbwClVqAXlDWnPuVkAYQ3AkuZ0SGsykRMAHlZW+wF/pCstVN8zg==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Nicola Vetrini
	<nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>
Subject: [PATCH v3] misra: deviate C library-style functions from Misra C:2012
 rule 11.8
Thread-Topic: [PATCH v3] misra: deviate C library-style functions from Misra
 C:2012 rule 11.8
Thread-Index: AQHdar0Zg3xbnpOjDEOIG1N7fPDHpw==
Date: Mon, 2 Nov 2026 11:27:10 +0000
Message-ID:
 <9f282c78786279ea38cd96e4e8fa080e5dba0b9e.1793616364.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|PAVPR03MB9680:EE_
x-ms-office365-filtering-correlation-id: 2faa455b-3f3c-4bb4-8d00-08df38d43c10
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|42112799006|38070700021|261021135927099003|261021123027099003|260925022911599003|260925021911599003|260925021311599003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261026121527099003|261026140227099003|261022105027099003|10067099003|18002099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 2gzK51fBQiXGy4ifu6mA/vGWNE995kezsfq9/rf1nOV1fCSiQ/cRXc8vqaJPDXrQ9XmQkCbWCXDgk5aSXlmvqzq9leUHiIv60YxeEhKn2QxJ+SGX0wmJXyZvkeSSUYxTkemvgMOL2lXXFLCmkhl/0aNQg7GtfUqQc6ysi1uZ/Y3p/PHJafFu4RMeeBnaH811tYLeLBvV0T2+WqdFXVEcQ68ePDPkw6b7vc/xjfbdvBw2VuNOHIQBQWSZl9TKdOwpupJ78356UOfbRpedjBLhgqdTReaTx6gp8Vvz9PryqfljeRvNFeIvXbtEDxs2q90V3qL4qIBfc3m8PcbT1frKsXY4kthdAikNceRl8fu0EEUqIb9lEIYKIro+Bp7vwIxdiGLjZDQZqbbj8DP6p7sde4c97e6HDFxlKwQ+tMlQGXrjCZseKMwBMaF85PI1BYi+6pB6qAuYeS6h5joLTblxIRXb8wsGAXAJ6TMEC6OnHKYNsgVE8U/bMox5LA/R4dA+iPsA93JWmB+wpv2NX3RlNvD1ckkaQgKilhHY8G8wETiTzidOAAg5kKK+ZSLx4zgkcYtvR6y3Cr8cTgvzOsrl0qT7GczMXa8yUXQJMbgj9CDiOGiIuT3cfMGvhfH8ak8NnUC3Flq2CLhvs8JT6JAWdoH9Gk8aWpmEvmrPPXOZN+kNCmYSlklFBF5WBBlBDu23+97MQd6tdOGEcMNYbYMElcpLvc21g+HgBzMOZReKvgE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(42112799006)(38070700021)(261021135927099003)(261021123027099003)(260925022911599003)(260925021911599003)(260925021311599003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261026121527099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?UWVrcHpjalJRaTd4em8vb0ZuNHpJeXdlb1N0aWRkbE94MjZ1SFJzYnVWMVdp?=
 =?utf-8?B?eWVoOGtxaTVJblpvYnRoRXhObW1zaGhtMXFTWGl0dkptUnZReUVwVHh4MUo5?=
 =?utf-8?B?K29uSkpjbWFUTWJmZ09zQU9OOHhBVmYzYnlNZDdVUUtOVm5BYVFta3dYRi9W?=
 =?utf-8?B?c0k4NGpyRGhUdVJLMDQrRjA3WVRCbDJPbDg1TDd3djM0alN1a2llNEtjeEdn?=
 =?utf-8?B?d0hjWm5zcVhaWUNPWHV6eGJFbHI2c2Q1blZCdVN1Zy8xS1RlOVNoK1VBWkkx?=
 =?utf-8?B?ZU1mSldJQTJiTFpJWGZXZHpXU3ZGQ04wQTdYTDhweTVNZXh2eFlFU2E3aEl3?=
 =?utf-8?B?bHdaVjNISld2ejJWYk9HZTZOckVyQktyUVZWVTdsd1V5V3B2bk1veDFXd3Bh?=
 =?utf-8?B?NXJiTUxtK2d2VHpiNkE2aWkrcWhKcUFrc1JQZHJOcENjNTMrS3E0Y250NWZp?=
 =?utf-8?B?SVFHOTNHM3ZBT2s3MlRkMWc5TFMxMzZBd2tXNXZ1YjNHVkVTRDhhbUZ4elhJ?=
 =?utf-8?B?dUkvVjBIS1NHVVZraUZyeGhCbzR0ZG5vbnM4WSswa0QzN3BtUEFaRlgvamZF?=
 =?utf-8?B?ZGJsUHhkaEtFOFlITFVMSjlPTDRhSy9Wb0xnR1JLNUdVMk8zRGNYcXZDQTd2?=
 =?utf-8?B?MXZxWTNmV2gwbkNJZ1dwYStTT3lOeTgwUFc1d1NEWGlpdHJqRytLSjQvM2c3?=
 =?utf-8?B?NjBKc29YMzJyQVpWcWdPcnlYTVloa05JZTRYeHNiSXBBejEzWi9VdEdsWmcw?=
 =?utf-8?B?RVptdVovbkdxeWd3RWI5bkFmUTlMT1N4STA0elB0emJiT3IySUlhUEV5SmZ2?=
 =?utf-8?B?c093cFdFME9tdEw2eWhYRkhXSXRHNk1EWWNzSTNUM0xmdEVDVlJDMjZDV2xq?=
 =?utf-8?B?aEZVNnArRnNQWGRDWWxGUmpvOGgzM0JxSTdnSWJWUzlVcGxhS1lrWm1EbitD?=
 =?utf-8?B?cmVXTTdlenhqSE9lRGtoV3pvWHBxOENjNDB6Y0p5dktHTmRJQ09zK2lsL2Ez?=
 =?utf-8?B?dktURVdnYnNlWTRlS3RnWld5NU9aSFhJV2ExSHg3eVVjNnZaVjNTYzV4cnF6?=
 =?utf-8?B?L2JaV2ZwRmhhNzN1NEdmYnorUkx2UU5RTTlFZWxpVkI3U2hHaSs2bFltSXVz?=
 =?utf-8?B?ekllN3k5bDdDbHZaR0ZGeEprWkNmblprd2NWeXhjV2w5WUI0YzRtdk9ZWFhT?=
 =?utf-8?B?cy9oc1BWRTlTWlpMTkVFVldIVGZNdmQ3UlpTWGFoUW1NaFFoVnB6T1ROZlJh?=
 =?utf-8?B?M1M1TFF6clE3TjJ3ZWMwK1FSK2c5aDIzdFl1dDRLSThCYlFDUEM1bGdsdFBO?=
 =?utf-8?B?UHc0L0xDYjRubXoxL3lkS2ZGSzZrdUVTYVRhbEpYWjdTN2h0VVZuUVNqeWhp?=
 =?utf-8?B?QlFoZldHc2JLRVVaYlBYYXBvNlFkc3RsWU9BSGJjOEJyQUdzVHRjQkJXa0c4?=
 =?utf-8?B?NUFVYmwreVhQMHBvRUJxc3dEQjR0Tmgrc1N3UXNaWldlLzZKNXIvMnF6cGJv?=
 =?utf-8?B?YmtFVHNEVWdsWG9IMjBWS25IOXN6dk8vRlRwS0d1UTR2K3BlV2pZaEh5QjhY?=
 =?utf-8?B?aDkrUVc4d1I0c3A2RDc5TnhVRHpJdFZTL3FYTWtLZmJBMXJ6ejhUT3FKWjQy?=
 =?utf-8?B?djA1NjNsdjVlaW12bm1NcDAzRzVzaENhUVB3NlB5TGpmdS9VR1R0RlhyWkZG?=
 =?utf-8?B?c1VtaExPazVDZEZVNEowV3BzbGZ3ei9LTkVjTCs5RVFGQVQvQVhqTWhsNlRy?=
 =?utf-8?B?MklFLy92QWVnSDNxRUE4S0JRemNDV1RxZEZwUFRrR3pJKzZYMmlhZ21aMjBK?=
 =?utf-8?B?NGVrVDhMYlRwSVc5SnBtcXUwTHBoVHVZWHZqY3Nabk5HUXNKeXhONGdCSkVs?=
 =?utf-8?B?S1lSc3JzV0IySlB6MkNyM3NSVjFZaHFqOWtBMDlBUDQ0REsyMzZSMzkyREVX?=
 =?utf-8?B?dlhPVGZwaU1GWkQ2dSthdDBqWjVLc1p3cFFTYnU1bTJLYm95YnI3MU0vMVdn?=
 =?utf-8?B?YjQ3Um1QVHFjQldkYXRKVE41R3ZMTENKMXh6U0p0Z2I2WHdGUDgvWDdTNnVp?=
 =?utf-8?B?QThiYXlmd2o1bTN3dTFtK2FmOERNWCtTQVl0UlFhdGc5THRkSTFSOEIwQVBk?=
 =?utf-8?B?MnVlODIwZFFqM0lpcFhBekFWNWtjK051S3RVckJZUlV6bDQ5cWI1RW1VWmRY?=
 =?utf-8?B?SUE1dzNITHBPamdNdFVGWHVaZGlsU2tQQ2haSWZIODNwamo2SmdJOEpad0Rs?=
 =?utf-8?B?MTZsSDJWSFord2EwNW5vZVB3RTNRL1c4bTdDMzJmSHZzVDZFdStiNDhkMzIx?=
 =?utf-8?B?a0ZVMXppNlRPS055Z05LbnhDam5tcTVNQWtpVHZKSGlxYVVnV3J4Njk0WmJt?=
 =?utf-8?Q?FSLHmSMRDlddgsTM=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2faa455b-3f3c-4bb4-8d00-08df38d43c10
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 11:27:10.1585
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: RF+fVCbSo7Ys9Z5ToxRXfxIXr93aMCC5kwlL+JOfTnMuh1OMBzttkt1mGJEKX35P1cPnep1Arje47NUVjluyvrKAbnry7W6dpKOHuRPBc3M=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9680
X-purgate-ID: tlsNG-c201ff/1793618834-247132A1-66AFC90A/10/78276251493
X-purgate-type: spam
X-purgate-size: 6080

YnNlYXJjaCgpLCBtZW1jaHIoKSwgc3RyY2hyKCksIHN0cnBicmsoKSwgc3RycmNocigpIGFuZCBz
dHJzdHIoKSBhbGwNCmFjY2VwdCBhIGNvbnN0IHBvaW50ZXIvb2JqZWN0IGJ1dCByZXR1cm4gYSBu
b24tY29uc3QgcG9pbnRlciB0byB0aGUNCm1hdGNoZWQgZWxlbWVudCBvciBieXRlLCBtYXRjaGlu
ZyB0aGVpciBzdGFuZGFyZCBDIGxpYnJhcnkgaW50ZXJmYWNlcy4NClRoZSBjYXN0cyBpbiB0aGVz
ZSBpbXBsZW1lbnRhdGlvbnMgc3RyaXAgY29uc3Qgc28gdGhhdCBjYWxsZXJzIHNlYXJjaGluZw0K
YSBub24tY29uc3Qgb2JqZWN0IGdldCBiYWNrIGEgbXV0YWJsZSBwb2ludGVyLiBBdm9pZGluZyB0
aGUgY2FzdHMgd291bGQNCnJlcXVpcmUgZGV2aWF0aW5nIGZyb20gdGhlIHN0YW5kYXJkIEMgbGli
cmFyeSBwcm90b3R5cGVzIG9mIHRoZXNlDQpmdW5jdGlvbnMsIHNvIGRvY3VtZW50IHRoZXNlIHVz
ZXMgYXMgZGV2aWF0aW9ucyBpbnN0ZWFkLg0KDQpVcGRhdGUgZG9jcy9taXNyYS9ydWxlcy5yc3Qg
dG8gbm90ZSB0aGF0IHRoaXMgY2xhc3Mgb2YgZG91YmxlLXVzZQ0KbGlicmFyeSBmdW5jdGlvbnMg
aXMgZGV2aWF0ZWQgb24gYSBwZXItZnVuY3Rpb24gYmFzaXMuDQoNClNpZ25lZC1vZmYtYnk6IERt
eXRybyBQcm9rb3BjaHVrIDxkbXl0cm9fcHJva29wY2h1azFAZXBhbS5jb20+DQpBY2tlZC1ieTog
SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KUmV2aWV3ZWQtYnk6IE5pY29sYSBWZXRy
aW5pIDxuaWNvbGEudmV0cmluaUBidWdzZW5nLmNvbT4gIyBhdXRvbWF0aW9uL2VjbGFpcl9hbmFs
eXNpcy8uKg0KLS0tDQpDaGFuZ2VzIGluIHYzOg0KLSByZXdvcmQgInB1YmxpYyBBUEkiIGluIHRo
ZSBjb21taXQgbWVzc2FnZSB0byByZWZlciB0byB0aGUgc3RhbmRhcmQgQw0KICBsaWJyYXJ5IHBy
b3RvdHlwZXMgaW5zdGVhZA0KLSBmb2xkIHN0cmNociBhbmQgc3RycmNociBpbnRvIHN0citjaHIg
aW4gdGhlIEVDTEFJUiBjb25maWcNCi0gYWRkIEFja2VkLWJ5IGFuZCBSZXZpZXdlZC1ieSB0YWdz
DQoNClRlc3QgQ0kgcGlwZWxpbmU6DQpodHRwczovL2dpdGxhYi5jb20veGVuLXByb2plY3QvcGVv
cGxlL2RpbWFwcmtwNGsveGVuLy0vcGlwZWxpbmVzLzMwMTcyNjE2OTQNCi0tLQ0KIGF1dG9tYXRp
b24vZWNsYWlyX2FuYWx5c2lzL0VDTEFJUi9kZXZpYXRpb25zLmVjbCB8IDggKysrKysrKysNCiBk
b2NzL21pc3JhL2RldmlhdGlvbnMucnN0ICAgICAgICAgICAgICAgICAgICAgICAgfCA5ICsrKysr
KysrKw0KIGRvY3MvbWlzcmEvcnVsZXMucnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDYgKysrKystDQogMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
KC0pDQoNCmRpZmYgLS1naXQgYS9hdXRvbWF0aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2
aWF0aW9ucy5lY2wgYi9hdXRvbWF0aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9u
cy5lY2wNCmluZGV4IGM3YTgwMGM2MmYuLjI5NjM0MGJiNGMgMTAwNjQ0DQotLS0gYS9hdXRvbWF0
aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9ucy5lY2wNCisrKyBiL2F1dG9tYXRp
b24vZWNsYWlyX2FuYWx5c2lzL0VDTEFJUi9kZXZpYXRpb25zLmVjbA0KQEAgLTQ1MSw2ICs0NTEs
MTQgQEAgd3JpdGUgb3Igbm90Ig0KIC1jb25maWc9TUMzQTIuUjExLjgscmVwb3J0cys9e3NhZmUs
ImFueV9hcmVhKGFueV9sb2MoZmlsZShodm1fZ3Vlc3Rjb3B5KSYmdGV4dCheLipfX2h2bV9jb3B5
LipIVk1DT1BZX3RvX2d1ZXN0IGRvZXNuJ3QgbW9kaWZ5LiokKSkpIn0NCiAtZG9jX2VuZA0KIA0K
Ky1kb2NfYmVnaW49IkZ1bmN0aW9ucyBic2VhcmNoKCksIG1lbWNocigpLCBzdHJjaHIoKSwgc3Ry
cGJyaygpLCBzdHJyY2hyKCkgYW5kDQorc3Ryc3RyKCkgYWNjZXB0IGEgY29uc3QgcG9pbnRlci9v
YmplY3QgYW5kIHJldHVybiBhIG5vbi1jb25zdCBwb2ludGVyIHRvIHRoZQ0KK21hdGNoZWQgZWxl
bWVudCBvciBieXRlLCBtYXRjaGluZyB0aGVpciBzdGFuZGFyZCBDIGxpYnJhcnkgaW50ZXJmYWNl
cy4gVGhlDQorY2FzdHMgaW4gdGhlc2UgaW1wbGVtZW50YXRpb25zIHN0cmlwIGNvbnN0IHNvIHRo
YXQgYSBzZWFyY2ggb2YgYSBub24tY29uc3QNCitvYmplY3QgeWllbGRzIGEgbXV0YWJsZSBwb2lu
dGVyLiBUaGlzIHVzZSBpcyBkZWVtZWQgc2FmZS4iDQorLWNvbmZpZz1NQzNBMi5SMTEuOCxyZXBv
cnRzKz17c2FmZSwiYW55X2FyZWEoYW55X2xvYyhmaWxlKF54ZW4vaW5jbHVkZS94ZW4vYnNlYXJj
aFxcLmgkfHxeeGVuL2xpYi8obWVtY2hyfHN0citjaHJ8c3RycGJya3xzdHJzdHIpXFwuYyQpKSki
fQ0KKy1kb2NfZW5kDQorDQogLWRvY19iZWdpbj0iVGhpcyBjb25zdHJ1Y3QgaXMgdXNlZCB0byBj
aGVjayBpZiB0aGUgdHlwZSBpcyBzY2FsYXIsIGFuZCBmb3IgdGhpcyBwdXJwb3NlIHRoZSB1c2Ug
b2YgMCBhcyBhIG51bGwgcG9pbnRlciBjb25zdGFudCBpcyBkZWxpYmVyYXRlLiINCiAtY29uZmln
PU1DM0EyLlIxMS45LHJlcG9ydHMrPXtkZWxpYmVyYXRlLCAiYW55X2FyZWEoYW55X2xvYyhhbnlf
ZXhwKG1hY3JvKF5fX0FDQ0VTU19PTkNFJCkpKSkiDQogfQ0KZGlmZiAtLWdpdCBhL2RvY3MvbWlz
cmEvZGV2aWF0aW9ucy5yc3QgYi9kb2NzL21pc3JhL2RldmlhdGlvbnMucnN0DQppbmRleCA3NmJl
NmIzMjUxLi5iZWU0Njg2Njc1IDEwMDY0NA0KLS0tIGEvZG9jcy9taXNyYS9kZXZpYXRpb25zLnJz
dA0KKysrIGIvZG9jcy9taXNyYS9kZXZpYXRpb25zLnJzdA0KQEAgLTQ0MCw2ICs0NDAsMTUgQEAg
RGV2aWF0aW9ucyByZWxhdGVkIHRvIE1JU1JBIEM6MjAxMiBSdWxlczoNCiAgICAgICAgcmVhZGFi
aWxpdHkuDQogICAgICAtIFRhZ2dlZCBhcyBgc2FmZWAgZm9yIEVDTEFJUi4NCiANCisgICAqIC0g
UjExLjgNCisgICAgIC0gRnVuY3Rpb25zIGJzZWFyY2goKSwgbWVtY2hyKCksIHN0cmNocigpLCBz
dHJwYnJrKCksIHN0cnJjaHIoKSBhbmQNCisgICAgICAgc3Ryc3RyKCkgYWNjZXB0IGEgY29uc3Qg
cG9pbnRlci9vYmplY3QgYW5kIHJldHVybiBhIG5vbi1jb25zdCBwb2ludGVyDQorICAgICAgIHRv
IHRoZSBtYXRjaGVkIGVsZW1lbnQgb3IgYnl0ZSwgbWF0Y2hpbmcgdGhlaXIgc3RhbmRhcmQgQyBs
aWJyYXJ5DQorICAgICAgIGludGVyZmFjZXMuIFRoZSBjYXN0cyBpbiB0aGVzZSBpbXBsZW1lbnRh
dGlvbnMgc3RyaXAgY29uc3Qgc28gdGhhdCBhDQorICAgICAgIHNlYXJjaCBvZiBhIG5vbi1jb25z
dCBvYmplY3QgeWllbGRzIGEgbXV0YWJsZSBwb2ludGVyLiBUaGlzIHVzZSBpcw0KKyAgICAgICBk
ZWVtZWQgc2FmZS4NCisgICAgIC0gVGFnZ2VkIGFzIGBzYWZlYCBmb3IgRUNMQUlSLg0KKw0KICAg
ICogLSBSMTEuOQ0KICAgICAgLSBfX0FDQ0VTU19PTkNFIHVzZXMgYW4gaW50ZWdlciwgd2hpY2gg
aGFwcGVucyB0byBiZSB6ZXJvLCBhcyBhDQogICAgICAgIGNvbXBpbGUgdGltZSBjaGVjay4gVGhl
IHR5cGVjaGVjayB1c2VzIGEgY2FzdC4gVGhlIHVzYWdlIG9mIHplcm8gb3Igb3RoZXINCmRpZmYg
LS1naXQgYS9kb2NzL21pc3JhL3J1bGVzLnJzdCBiL2RvY3MvbWlzcmEvcnVsZXMucnN0DQppbmRl
eCA1ZjlmZTRjODYwLi43ZTE5MWEwZDRhIDEwMDY0NA0KLS0tIGEvZG9jcy9taXNyYS9ydWxlcy5y
c3QNCisrKyBiL2RvY3MvbWlzcmEvcnVsZXMucnN0DQpAQCAtNDc1LDcgKzQ3NSwxMSBAQCBtYWlu
dGFpbmVycyBpZiB5b3Ugd2FudCB0byBzdWdnZXN0IGEgY2hhbmdlLg0KICAgICogLSBgUnVsZSAx
MS44IDxodHRwczovL2dpdGxhYi5jb20vTUlTUkEvTUlTUkEtQy9NSVNSQS1DLTIwMTIvRXhhbXBs
ZS1TdWl0ZS8tL2Jsb2IvbWFzdGVyL1JfMTFfMDguYz5gXw0KICAgICAgLSBSZXF1aXJlZA0KICAg
ICAgLSBBIGNhc3Qgc2hhbGwgbm90IHJlbW92ZSBhbnkgY29uc3Qgb3Igdm9sYXRpbGUgcXVhbGlm
aWNhdGlvbiBmcm9tIHRoZSB0eXBlIHBvaW50ZWQgdG8gYnkgYSBwb2ludGVyDQotICAgICAtDQor
ICAgICAtIFNvbWUgc3RhbmRhcmQgQyBsaWJyYXJ5LXN0eWxlIGZ1bmN0aW9ucyBhcmUgaW5oZXJl
bnRseSBkb3VibGUtdXNlLA0KKyAgICAgICBhY2NlcHRpbmcgYSBjb25zdCBhcmd1bWVudCBhbmQg
cmV0dXJuaW5nIGEgbm9uLWNvbnN0IHBvaW50ZXIgaW50bw0KKyAgICAgICBpdCBzbyB0aGF0IGNh
bGxlcnMgc2VhcmNoaW5nIGEgbm9uLWNvbnN0IG9iamVjdCBnZXQgYmFjayBhDQorICAgICAgIG11
dGFibGUgcG9pbnRlci4gVGhlIGNhc3RzIHRoYXQgaW1wbGVtZW50IHRoaXMgYXJlIGRldmlhdGVk
IHBlcg0KKyAgICAgICBmdW5jdGlvbi4NCiANCiAgICAqIC0gYFJ1bGUgMTEuOSA8aHR0cHM6Ly9n
aXRsYWIuY29tL01JU1JBL01JU1JBLUMvTUlTUkEtQy0yMDEyL0V4YW1wbGUtU3VpdGUvLS9ibG9i
L21hc3Rlci9SXzExXzA5LmM+YF8NCiAgICAgIC0gUmVxdWlyZWQNCi0tIA0KMi40My4wDQo=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 11:30:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 11:30:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468150.1677228 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqEy-0004lM-G7; Mon, 02 Nov 2026 11:30:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468150.1677228; Mon, 02 Nov 2026 11:30:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqEy-0004lF-D8; Mon, 02 Nov 2026 11:30:16 +0000
Received: by outflank-mailman (input) for mailman id 1468150;
 Mon, 02 Nov 2026 11:30:16 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xNqEx-0004l7-N1
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:30:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNqEx-004V1L-3U
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 12:30:15 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae87432-8faa-0a2a0a5109dd-0a2a450cb23a-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:30:14 +0100
Received: from [40.93.194.46]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae87444-f479-0a2a450c0019-285dc22e592b-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:30:14 +0100
Received: from BN0PR04CA0135.namprd04.prod.outlook.com (2603:10b6:408:ed::20)
 by SJ2PR12MB8978.namprd12.prod.outlook.com (2603:10b6:a03:545::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 11:30:09 +0000
Received: from BN6PEPF00000075.namprd03.prod.outlook.com
 (2603:10b6:408:ed:cafe::83) by BN0PR04CA0135.outlook.office365.com
 (2603:10b6:408:ed::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.12 via Frontend Transport; Mon, 2
 Nov 2026 11:30:08 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN6PEPF00000075.mail.protection.outlook.com (10.167.248.202) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Mon, 2 Nov 2026 11:30:08 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 05:30:08 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 05:30:08 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 2 Nov 2026 05:30:07 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=j8jep0f8n/jpDgyVxgpvkiXd1cRhA1rcLpLmcxt00ZZQudUt+AUdbCRAybhsRUVSZAVu5+eAIfXw9pw6TQuLeEKIpUo4llxVpEMAllR0uaHO2k+ZzZI1jG/R+kGLZS8atnIY9pLG4o6cU8Nuw6FK4fgcgX7/rpSciFVSSjIX9jHqvv7s0hR7XTKcjAyOTADYnxCKKeS4+r76NKeX0aF6LyWGxhgyY6pwTpB0hs+MHpxadQXGQPogCfPxrCSQCb1Q2stNIm2NlxUIdPl6QrdkAVb/0aE8KF9qZq8NwXUQYU6cPj8UVaSRU/GcDD3Z3hzNxBYKls3OMfwxdwvw0MeJuA==
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=FteCfO8eTtVp63/F7EpCMBJ85Rlh1AXhEiwwPZ08owU=;
 b=LCd4b2bDuCBRX2C+CbD6fSdKsrMZCYFHuhb++tl39YHOH/MvG9Qq7vyiFFcvGqhpEIptcHYZ+LtMcQpmjOlXUSRBLCVcG3Ylzhgx2DpXFduPZOpxyrUNf6wnrACRt3ryEYLiLFndnk0LsHVZuSim1JTuZxai/2I1912mYYlndFkszWCBAXIq2OHXpvwM3OfsW6vMdP4eblEtURHZuIedkwKXL+mx11BzmYJYBzjQDv06uTYcPaO4Rad+Qfu0p0z82j/dTMamIySt6m4iF9Yn3pKHrWXYfgABYb6gGR1BNf7KZ3iAB69LcOeNUgGNSPqsNcD8CTUhGWSncRaH2ZPJwQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=nxp.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=FteCfO8eTtVp63/F7EpCMBJ85Rlh1AXhEiwwPZ08owU=;
 b=4qtxj1ycVsP+wVtsuew6Mj/h35QrVNsufIZqfNWHuH0poUuAVMRxSJSpikGzjB+3I8bhDcutoWwtUgtk4Xl0Jzk4g5w9M2fvX8achcSHyy6yxEG+JAcuJY40ooRREKdqf4fRCEXK8D4L1a/mXEIbzEpTQmp8sUluQL14bTDNGUw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <ab7aca14-e169-4899-bf71-3563ab792083@amd.com>
Date: Mon, 2 Nov 2026 12:30:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen decoding instruction 0xad400420 is not supported
To: Wujian Sun <wujian.sun_1@nxp.com>, Xianzhong Li <xianzhong.li@nxp.com>,
	Peng Fan <peng.fan@nxp.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <DB9PR04MB80894CBBF23E18E68E2A798DF56A2@DB9PR04MB8089.eurprd04.prod.outlook.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <DB9PR04MB80894CBBF23E18E68E2A798DF56A2@DB9PR04MB8089.eurprd04.prod.outlook.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN6PEPF00000075:EE_|SJ2PR12MB8978:EE_
X-MS-Office365-Filtering-Correlation-Id: 704a3b9e-ab6f-49c4-a0ea-08df38d4a670
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|36860700016|82310400026|11063799006|56012099006|261009223027099003|261028144727099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|261022075727099003|10067099003|18002099003|22082099003|3023799007|13003099007;
X-Microsoft-Antispam-Message-Info:
	+ZzT6g2MzwMJ3XlAwl8/fMFSGGmy/Gom5Offx+XP1TMqtVH0vf7ofcFg3hTr3aqBySIl6c+ahiIZiPGDmsa+FJVF6cb7O6sq9hGxCBh3gnmXsQDnaNYkyVWIuNnsygUiiyo2+FzyjdoZSdAhEzdJ1JWU9B1f7UFWXaMNk6T5+DCU0/KEw8Rz3dCY8G6Md2xbY/xW4a70I4TFwC9GwG+toU/N0YLXQmKPQof3dVsRb7S+Qk1DfqN6no5LPutodjR9JMfSArmUVs1TMiRFOp5/6km9FlhRcCoXh2EH4xE/Ou8ICUYF3X0aFVeDWRvmk8soTHSaSHz6bBvgPUTYPJpKgnLF/KO19e31LShE8M1WhVyyhsmV8sCBlrJKAsUOA5l9wmXut6BfgD4b8R3ZZpow6avS7wBqEfivpUc3tHeRs1FiPofVf9y55u9cVi1pMroKV8W6JpfDzyXiiir2oI1igAEu9NQxi8ST31iq97sNgRII696OZejPi8DEKCIM23NqvYkCpSRmzZdvwn3p0JkeWTfZyTalWc3NIdvOgQ1q3gm72yqWCT8eC7J26FJdm1z2UVUGus4iUkf8guzg1FYG67DUkCdvZZ8fb7gBWt/YgP5A8CNWZb1nhw2Kvtx167HkZG/fduXIFIihTZORahMF7g==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(36860700016)(82310400026)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(261022075727099003)(10067099003)(18002099003)(22082099003)(3023799007)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	gFgv26W3pZ7qgwtDIIsaiEfF4WYtiYHYoJrt+5HVpaUySUl5CVDQww695gV0Y7jQMSrlsBYTZUdVMl05Ve+Cpf/GAR4hm6IqVXpBvUy/4nQDdgoz9s0FmkdHftO4JM2JW3tLUzB7fMyS++VkHKI8NiXb70yBFgn0gZGsCDkpZ5+9vwsGbV6KmNVAOP054STFxCMvkbynSyPhOCDvJbUYtT77X3wGqaCrNILQxjdtJhMJAZ1vnN4UzreFGCFGIufHkmcR51fy+D1kJIi1dRaJfmKIs9SdBq7n4svoxmd41F7TEhWDVhxv85pkYC9SIS5hFBTueCr/KXAA85r3J84ZhKMHWoKORjXVC1Xo0pabwBozlcV3p+9YEEYczrsrqs5Myb+RBTyUUmSZY7ti52Gpp+XPQHHovMOAgObzZ+F1AiaYKyHpTVMqFqczV/YN1JC3
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 11:30:08.6136
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 704a3b9e-ab6f-49c4-a0ea-08df38d4a670
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN6PEPF00000075.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8978
X-purgate-ID: tlsNG-d25034/1793619014-020C1A5B-38186807/0/0
X-purgate-type: clean
X-purgate-size: 1241



On 02-Nov-26 02:43, Wujian Sun wrote:
> Hi everyone,
> 
> I am trying to enable virgl native drm context feature  on GPU Mali G310 with
> mesa panther driver.
> 
> https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1694
> <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1694>
> 
> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/45055/commits
> <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/45055/commits>
> 
>  
> 
> I tried both xen 4.21 and 4.22, but both met the below issue.  Does anyone have
> any suggestion about the issue?
> 
> (XEN) d1v0 Decoding instruction 0xad400420 is not supported
> 
> (XEN) d1v0 unhandled Arm instruction 0xad400420
After decoding [1] it looks like there was a stage2 abort as a result of
executing LDP instruction for 128-bit SIMD&FP registers that Xen cannot decode.
Are you executing this instruction perhaps on an emulated MMIO region?

[1]
https://support.arm.com/documentation/ddi0602/2026-09/SIMD-FP-Instructions/LDP--SIMD-FP---Load-pair-of-SIMD-FP-registers-?lang=en

~Michal

> 
> (XEN) d1v0 Unable to decode instruction
> 
>  
> 
> Best Regards
> 
> Wujian
> 
> 
> NXP Confidential
> 



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 11:51:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 11:51:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468160.1677237 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqZh-0001Sb-4c; Mon, 02 Nov 2026 11:51:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468160.1677237; Mon, 02 Nov 2026 11:51:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNqZh-0001SU-1f; Mon, 02 Nov 2026 11:51:41 +0000
Received: by outflank-mailman (input) for mailman id 1468160;
 Mon, 02 Nov 2026 11:51:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xNqZf-0001S4-VV
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 11:51:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNqZe-00GcBY-RU
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 12:51:38 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae87948-8faa-0a2a0a5109dd-0a2a4508afea-6
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:51:38 +0100
Received: from [52.101.56.18]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae87949-f659-0a2a45080019-3465381223f0-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:51:38 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CH0PR03MB5955.namprd03.prod.outlook.com (2603:10b6:610:e2::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 11:51:35 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 11:51:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=QoYwtMhsEvoVHlktqzrtAMxoyhRjUKUX316c3giWt0Jy5UPGYaUWiL86kkyPHDwBuHpDm/47LZgEZuiS9YBddLYpjM2Ia2yBwrTKontcAfUR9f6B5IXBCBDU/5K4IXy03BrNW4wgeDa9jRD6gBRTHhwNxC+P0ROCUMgltkEgtEnhPYfl6W5cDzKwnsacnug5jzkdRtzVLpjAroPe0W6gVtCPrVd6d7OnYUMwI7aniJUZ0OaDIc3CrwQotKRfaD13RJ0GdPBiYTVFlSqN0Cx0QvBKGaIpdgg1LzjJWrqutQTEwCgOqL2fUhmPIHTcM3RJxpsJ8PEWKT075YY2GzeczQ==
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=KXZ0xMW6+MBQogWrz1Q3owAjfNm5L+NUjXnP8kPgDtU=;
 b=QKnMyZP3Ba6RvRYW/0Lm+gSel8aIAF4eTQFWa3ifgit8GG3jDUpxZODHlDBNdjbDT8U/6/f4SNjGQ6ZRUI9Mrr4B5YF6lXVee1G/6MvEcUSszFK7+usFQGB1UJhhFowsX9daQkX0Rj9rcZWIugKIh70ECwpKJPlcd92taox7RtijR0lTaRWHFfm7UrMzCfXz3Bx0u0ym2BfkFAuVBLthi8GaWibbH+42TiRBdwUyam2IlhqnuKmB7AF++IWn4v8V0KKesyjYP1hQ5gIRLM21vphbvS5iIBs3zXMAByLroGr0OgvO8jKpc94In+UBw6EWz6PxCjVCKOHaC27XnaNrDQ==
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=KXZ0xMW6+MBQogWrz1Q3owAjfNm5L+NUjXnP8kPgDtU=;
 b=E/CqBThTRFNyxzEHDU6Z4sg2iZ0XJuDINmrzSlwf1eTWfIQXUiN/jS88N28atrxQ8h3pfbY5SO7DkfK8ePuTYZnuUEdzOjR9WYpej2BMr/71B6DqlB6+LLGceo1VyZRHAcsmHQzyk4reKwUq9iH+ZK83SQRd0zPCHulOlttOfJk=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <7a2732d9-8d3c-4e7e-b0b0-1d4ba96bf6ea@citrix.com>
Date: Mon, 2 Nov 2026 11:51:32 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 1/2] x86/cpu: keep cached TSC_AUX state coherent with
 hardware
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-2-roger@xenproject.org>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261030132419.84264-2-roger@xenproject.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0431.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:18b::22) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|CH0PR03MB5955:EE_
X-MS-Office365-Filtering-Correlation-Id: 6cab7431-115d-491f-ace4-08df38d7a53e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|261021121427099003|4143699003|11063799006|56012099006|261009223027099003|261026121527099003|261022075727099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	W3tnqPoHeh6CIMhOHlxSZiSzkpEXsZ1bsDhf0IeewvpNTcy61G5fgvJNJhD0xdddD5+Wk5yOo3t0IQLwsPsr+LNY197yYx3uxTHb0n102v7TpveZHxNzTsI5vVXoA4vB1oBQjaQ8adhm2q94XklN9NpgXLgR7WKin8CBlCqavyoR0G2oxsuGncyDhQafyzR0Z7NVpxxh1GdOVgyGcbG1pDBSS9DCacZoQHoeIKNW3JAFKJx9/83NyPFIT3MiEQlG7YB8+hepuzEgh6Hx9AdVOSLekVrK2/W5mT3IJWyX5eLXf8i5wmW1r89w5i8oLqV5om7TCVvE5uMPbAuqEcK3IVdO8bVR7n33//xkZKHAqy3NKvDMvlj+ZoTlxXuGhOEEfO4X/KIeFQjKI7MVvjlX+NaMlSCW5JFlLw3BBC+i/+HnJtzMuyektV4a7JUuAbKEkpuy8n+SRH91MW/7WidamwN8evTKyU+CjcPGnSi3cUgft9gJ+HNmSEWr/LsgsRKYy7CMCJ5ykPc9kBwshS1L3kW18WD0G11X9g8dnX8Z71KerxXsQQ0fXsoP3n6FIqSJY0xtVdSuPl6wgm1ABq8AnyCqun2Tzsg8d3n4KzFo0DiQl/Au0Q5Gi04gGX1t6WzgPVmyg6vIpgY+vWMT6x3DBR84NtgTwWMNJlMZH7bgY5U=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(261021121427099003)(4143699003)(11063799006)(56012099006)(261009223027099003)(261026121527099003)(261022075727099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Q1FXTUF2MTJ1bzBMc0I1bGFzVVRJNVdlS1JLbEtwREhVeEhhQ3dtK1ZRZGVH?=
 =?utf-8?B?TzVsd25CQm1zeGNORVZnVmlQZXNVUWt6OWdic1ptemxyeTdkbVBZbURxODRa?=
 =?utf-8?B?Q1hrVzZXT3dlV252dWtzaEEwWkhCaEF6QTNhcjZScjl4dG5MTGt6ODg5Rmcz?=
 =?utf-8?B?SFF4SmYrVE80ZldMV0o2M3E5NU1XTWpKb1V5MllDZ1k3Y1YvcHI0eDFpMU9Z?=
 =?utf-8?B?bWZUNlEzUnE4eDI1STVXYzhqVm9VdFcrcG00M3NaV0FabVN0MmxiZ280V1lO?=
 =?utf-8?B?dDhsN1BrQXBLYVNBdDRsbDJXVkVhays5L0ZNRUdNckxBaVd2aXRwdlFIMlZC?=
 =?utf-8?B?cUxTQlRMbXNhQWl4dGlKZHRwM2lBWk1nL28rTU1LWkRvaDlWMW5FQnd3SzhJ?=
 =?utf-8?B?c29HTjZEK3N1UjY3NzFmb05jYllBYXFGNXUyMlV2S0M5REJ2NXpOaGpzSUpx?=
 =?utf-8?B?OVdPSnR2bURka0I4dFpFcE1pSllGZW9USkdBZkFsWHVNWDlwSklCYmdvR2Zx?=
 =?utf-8?B?S2Q3dTl4MFBtVS9OMDhvbmUrUmRhQURBcTUzS2FvUGpiYjYzVG5nQy92bXNl?=
 =?utf-8?B?R25tRlp6QTJCd1hpKytkaEpDRUhJd1dIOWw3MzVIL3lQbFk2N2NEZkVveXR1?=
 =?utf-8?B?dXdCUGw0TnhwT3ArVkdwSERQV0lTRkZxZERoTU1OK1IyZ3htdUtSRVhhZFZD?=
 =?utf-8?B?MTBOWkdpK1F2UmFoSXFia2REcXlyVTJ1NFVQK0xaMUtMdEFFL0xmRWNheEdO?=
 =?utf-8?B?aHUzb05pUThYVTVzbFByN3JTMHQxR2pSTGYwbjJPWk5wUjdBRjRCLzVzdGoz?=
 =?utf-8?B?TUphRmlkbDl3WVp6T2REWHFaYzloRGJmL2pzcURWd2lzVHlRM1V6N25DOGdm?=
 =?utf-8?B?UVQ5MFMyYVk3TzdsbTF2ajJtejFaMDluc0IrUGNEUWRCRzZxR3REejZGL1or?=
 =?utf-8?B?QjNrUkNrOFgrZzIzcStweS80bkFUbENTK3lwMFVJOXRFbXN6NTVySjNUL2tG?=
 =?utf-8?B?SkxRMVFjbTZ0UE9uT3hKRCtwVytQekZtcUh1bTltMXlja2tvY3d6QlRUcHZ0?=
 =?utf-8?B?TEJ4c1NpMTc2MXBuZjVWZVJIelN2SFZVUkdiSC83WVlXOVNjbThrdDRRTjhT?=
 =?utf-8?B?V2JncWlrcjMzbEZyY0ZOa1YvQlRpczFBTFZhd1ZHejFZU0dNbHdOWmRoZzAy?=
 =?utf-8?B?Wjc1L0NnRjZrTXIydW1JNkhyeGUwUlJ6SXRUU0psVEJVNGJ6TlpTSWViMVU2?=
 =?utf-8?B?SmJoM2pnR2FJZnl2eXdrU3dmczZFcksyL0xycUVmVU9rUDAxbzNTaWJKUlRG?=
 =?utf-8?B?R3IwY1doNGhkOGpaYndOUXgvbnhSaXd2LzMxeVk0dkY0SjhtWXQvblNQZU9V?=
 =?utf-8?B?cTh6OS8zdEpmN04xbFIzRzdkS3dBdFBhWWsrcjZXNFY0UHR4L0t0UnZoU05j?=
 =?utf-8?B?cVg4NUp6ZVkxdDNSZUw1VWs4Z0lPTXVvYnZTYnUyMm1jYmZSenhyQVVuMndD?=
 =?utf-8?B?VTA3Y1d1bDMxWmJwanlmejlOWlFSUHdiSldnb0p1U0RNVjlJaGhqMkRPSXIx?=
 =?utf-8?B?Mkx3dnhHMCtjcWdvNVBsYkd5ZE5DVkppeVdoelF4YS9YanFyUmR1YTJETDFz?=
 =?utf-8?B?OGhVbkc4T2R1cFZGbFVhTTlBMnh1SlBpalg2Z2R5dEpleWxLV09PVVJ5ZDVj?=
 =?utf-8?B?Z0E5ekk2TldoZzZDTWg3SUVTUDF2VzFGcDNrZHhKU2JRT2duY29YTnJMS2Rt?=
 =?utf-8?B?ZGM5dmlKcXpDWk94cUQ5RHNQaWNGWFhBcjJLSEVqL3lyTFhDazRJVWVRKytq?=
 =?utf-8?B?eTdsb2xOcFpqRituS0hZeVVxcFhRKzhiREI4SzlyemtGMDltMWVsVE05Nndq?=
 =?utf-8?B?R2p2OERVaWFyZElNcmRzMS9rNjRTaE8weDliTzJWOHBWMDByaTcraldSK09l?=
 =?utf-8?B?QmRuLzBQdFhUTmhCR0VpTTVPdzVFcERsSTZnYVlDcHRuOFQxU1RzTWI5RTBX?=
 =?utf-8?B?Y2dIOXZVaUVjMEZqWWRBUTBKUHZDZVo1bWt5dEp1eVg5NVRSWFNrbXFwY2Yv?=
 =?utf-8?B?T1hkYndxYjdld0k5L3p3S0Exdk14RmkycVBhMmhNTVVOTUJ2S0hUVFRBQlNp?=
 =?utf-8?B?b0RiSXgwc0loRTlJS1o0ZTBkQkp1SU5sZEM0SDFaeEQxR2tYcTVJOWpLVWl4?=
 =?utf-8?B?RHJOYlliSVNnb0t5eHNqRnI5YjFtSXJGKzYySEdTV2owVUQ4aWc4UzlYVnJq?=
 =?utf-8?B?cDFyeTd4MjdZWXorNjRKMVJKZDB5WHdaMXU4bzlUaU1RMzFUQVB5U3BCeHFI?=
 =?utf-8?B?TUVoZ21OZmxsQ0pKa2VzeEd2b3liVkFVOC9JcG0wZzh2K3EvM1BVdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6cab7431-115d-491f-ace4-08df38d7a53e
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 11:51:35.3189
 (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: 1qVc8DDp9UOS92fyXgRrpgrvg3stpFg7JJS2SqFCJWKN8SYF7h+qMGSeFHzmKyXzbCGPCQ/RwXHlVEiOcH/yN4kuj4BBth+KkeQjsTFFGpw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR03MB5955
X-purgate-ID: tlsNG-c1860d/1793620298-D674387B-2CCBD016/0/0
X-purgate-type: clean
X-purgate-size: 1100

On 30/10/2026 1:24 pm, Roger Pau Monne wrote:
> On CPU bringup don't assume that TSC_AUX is 0, write 0 to it to ensure the
> per-CPU cached state matches the hardware.  Also propagate the cached value
> on resume from suspend, in case the register value has been reset during
> suspension.
>
> Fixes: cc0e45db2779 ("x86/pv: Avoid leaking other guests' MSR_TSC_AUX values into PV context")
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> ---
>  xen/arch/x86/acpi/power.c | 3 +++
>  xen/arch/x86/cpu/common.c | 5 +++++
>  2 files changed, 8 insertions(+)
>
> diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
> index 3452650a61d5..464846e73727 100644
> --- a/xen/arch/x86/acpi/power.c
> +++ b/xen/arch/x86/acpi/power.c
> @@ -279,6 +279,9 @@ static int enter_state(u32 state)
>          ci->last_spec_ctrl = default_xen_spec_ctrl;
>      }
>  
> +    if ( cpu_has_msr_tsc_aux )
> +        wrmsrns(MSR_TSC_AUX, this_cpu(tsc_aux));
> +

This wants to be later, with percpu_traps_init().   It is not critical
state to restore this early.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 12:37:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 12:37:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468180.1677266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrI5-0002uE-PV; Mon, 02 Nov 2026 12:37:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468180.1677266; Mon, 02 Nov 2026 12:37:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrI5-0002u7-Me; Mon, 02 Nov 2026 12:37:33 +0000
Received: by outflank-mailman (input) for mailman id 1468180;
 Mon, 02 Nov 2026 12:37:32 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xNrI3-0002u1-SN
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 12:37:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNrI2-003hBk-NS
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:37:30 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae88408-bab6-0a2a0a5309dd-0a2a4509b9da-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 13:37:30 +0100
Received: from [40.107.200.31]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae88409-be1a-0a2a45090019-286bc81fa488-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 13:37:30 +0100
Received: from BN0PR04CA0136.namprd04.prod.outlook.com (2603:10b6:408:ed::21)
 by DM3PR12MB9416.namprd12.prod.outlook.com (2603:10b6:0:4b::8) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.569.12; Mon, 2 Nov 2026 12:37:25 +0000
Received: from BN2PEPF000044AA.namprd04.prod.outlook.com
 (2603:10b6:408:ed:cafe::93) by BN0PR04CA0136.outlook.office365.com
 (2603:10b6:408:ed::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.12 via Frontend Transport; Mon, 2
 Nov 2026 12:37:25 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN2PEPF000044AA.mail.protection.outlook.com (10.167.243.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Mon, 2 Nov 2026 12:37:25 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 06:37:25 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 06:37:25 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 2 Nov 2026 06:37:23 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=NIdQIJuLMZWPVvUsg3m9tSVdEvFWvR8IDBBLq/2CVuAS8mwjYfY9CdbSevI7fHWJ4LwPqapEZpKvgAtyIiOIr/IAQthD35U7tfTBeiLrIHiylmG/klMOzlFyUm86vGuzco7D/BMrPX4zDIhgChYy1tZAO7IrOWN0/obUqbnN+wzVH7VrqyFCp5+2brO8NShJhQ1MyK7NWZbGgDKQ6I4RZNykEuCD7PIDXd1xWarI8xL39l0OHUS86kBIaGiPhcoF3QdbqXriXme6lU1y7cOl1X2gnvsDlGGWwJFazcAu/uPcrDFku6JX3ONZsvWGpgrf/ByPyIEbffaHFWv3XDXNtw==
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=wwsENutMZcZA6Xm4+m4gpEJa8/UogDlocvKWkkhzqkM=;
 b=OSt3SOguljgAhJ9f6Crkskf4bWrevsN4Vfo1NlJnfr2u6IvIK3wxW67jrb44QWLvZbABs7GH1wfy601ZiKbzX389+1wZMhX43i998Pd17nlQVtNGi9zPVKUUjoeiuNA+fFcWo2VjDDoYBm8kLeMqvSKHzLQxVmGwFuYIh3eEA0B/ch/B/nW6ceQo7UlOD+8er2fiHJktgNer6Hw5VOyGlKUxciKAzliZitsNzXWeNDKa0RfVzdg29y19VkE18tVqXw564tgjJHo98BLQhZKvIJtIRt72tJ4seph3EcJGNp4E0pNBvPfzumEWFX1J1ngpUKR/TEyTIFtlPaKpAH1I2A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=wwsENutMZcZA6Xm4+m4gpEJa8/UogDlocvKWkkhzqkM=;
 b=ya2vB7vAtGttqW7pOtzNea9AAda3zDr7UplgbiQvfWVuw0cO17xaIOwTNt9WXeFCwidjklaj9rEDsDxkFqZtuKM7sJ0oi+hyzDdeRPrP59+8zrFiD0azA1zPlTtbor4ZkP1g2qFKmMdfRVXfV9f9sOjFFnnT1QU/gt74DCO2RVg=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <fa88c197-61dc-4e32-a8a7-cee501527c9e@amd.com>
Date: Mon, 2 Nov 2026 13:37:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/dt: Skip non-RAM reserved-memory regions in
 make_memory_node()
To: Kuan-Wei Chiu <visitorckw@gmail.com>
CC: <xen-devel@lists.xenproject.org>, <sstabellini@kernel.org>,
	<julien@xen.org>, <bertrand.marquis@arm.com>, <marscheng@google.com>,
	<jserv@ccns.ncku.edu.tw>, <eleanor15x@gmail.com>
References: <20261028211737.17629-1-visitorckw@gmail.com>
 <d25a667b-5126-4c57-b379-c31c4e7645c6@amd.com> <auUS_7jNO-0ONE1e@google.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <auUS_7jNO-0ONE1e@google.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AA:EE_|DM3PR12MB9416:EE_
X-MS-Office365-Filtering-Correlation-Id: ed310b8e-38fe-4cc8-c803-08df38de0cab
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|23010399003|36860700016|82310400026|4143699003|11063799006|56012099006|261009223027099003|261028144727099003|261021121427099003|261026121527099003|261022105027099003|261026140227099003|10067099003|18002099003|22082099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	bAo1wxmnJTGs1DCx7xwr83z3ZuKyv3jl0lObsctvHzbsWlExL5xCAGsSj/WITzFFpdWmbG3m96u7WKsVU7j9Ap5VI969Jp0lmdCVjWAGBHv4P2KSd6FKg5dP9sOt43uNbLmGrT8Ke3aRx4Rri730KeZC37eodcD/T+qRVMEzMl0A6qSRU5/q9MUCWy7xXPUQchawMTS8DxtilLqZXKPrXwoXHdpPcnMqIAm1HrmAqi+CY19H8O4ZXMKXA6a0haIOwCQIHCIQjaesB34gLkfoCzID7MfH6jlnwa2htzaeXDQeNaWTLVj2BCkGXgzxBkWdWvY3wak809ioQQcBFdiElv8m0cUmQB8FTd6jC4e6H+RfXWTVLsPvtSV1sC7T2kLkwUDKqdt/HdejoeNaTCtW+38RqOO0/vtkq4U046DnSEpZHSo+1E6xwmaNZaKEZXMwS58CDCBKEPvnopNPEk2iniVMavOWXiprxwjCM9cIG0MT/uoluVjem4RD6ZMZ5T6mTDiVnQx7UpV3MShNiMEp2/yFD6qU3jC6Q4o0HONdhv8AD77PkmWB+3sit/MOLJvn7RsiC4xiGZ6o6/8ZTcEYSEwnBweAJpK8ll5L8BdGDeStBVNoVpkcC1LpwYFzhH9DCYPY1gA18P0ih04LTibf7QEN3ELqZwX4DQFcM+dwz68=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(36860700016)(82310400026)(4143699003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261026121527099003)(261022105027099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PLDYdcdfOzccnkEBl2UFGHXa+Dti0Ogap0aSa2rS8toAArigW1eD9OelwwRCScAjhk1xeukVXBEqb4XNHH/ldRj7Zto2wf7GAalSEHTrQIWnczAhwtMu8S10G7mx6XRaTYcQ+r2tg7GsPl1MHH10ZwXUHecOlIudwmJCcLXd5lATTFifUFVBYYJiwJPStzMxOIAptjsGplZ4Wcflu13lGW3LnmEhkpwyKyZTFs63xF1+X9zpmLIl5pkxYrzGcOIpcnYRQKGLSfqQ4eWEQf59jICTipwp3PyUyzHyldJw4FclFHdo0NIE/SRmft8jB7NZdOLGKZ9HAG1n2sCk7XssiVS2KMfpRvLx57uqu4Uq05LzzFlYnOK35myAQ2UGknFwDnxerNec/mbXLCUmeUV/xPm+Y5XBtvTdwFMB4InNfIieop8V+hVSbCbHzcxeNOaF
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 12:37:25.5954
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ed310b8e-38fe-4cc8-c803-08df38de0cab
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN2PEPF000044AA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR12MB9416
X-purgate-ID: tlsNG-bad1c0/1793623050-3B0DD034-F019A7E3/0/0
X-purgate-type: clean
X-purgate-size: 2305



On 30-Oct-26 22:58, Kuan-Wei Chiu wrote:
> Hi Michal,
> 
> On Fri, Oct 30, 2026 at 12:04:58PM +0100, Orzel, Michal wrote:
>>
>>
>> On 28-Oct-26 22:17, Kuan-Wei Chiu wrote:
>>> Xen creates a second /memory node for Dom0 from
>>> bootinfo_get_reserved_mem() without checking whether those regions
>>> belong to host RAM. However, /reserved-memory can also describe
>>> on-chip SRAM or firmware regions outside system RAM. Listing them in a
>>> /memory node causes Dom0 to register non-RAM addresses as system RAM,
>>> conflicting with device MMIO mappings.
>> Hmm, I always thought that /reserved-memory is to exclude regions from memory
>> described under /memory. That's what Xen assumes too. map_range_to_domain() for
>> example does not call iomem_permit_access() for such regions because we assume
>> it's RAM. Can you provide more details of your board e.g. the device tree? Is
>> there any documentation I could use to confirm that "reserved-memory can also
>> describe on-chip SRAM or firmware regions outside system RAM"?
>>
> Hmm, your reply initially made me wonder if this was caused by a
> non-compliant downstream device tree on our side, so I checked the
> DT spec and upstream Linux.
> 
> The devicetree spec does not seem to explicitly mention whether
> /reserved-memory regions must fall within the range described by
> /memory. From a quick look at early_init_dt_reserve_memory() in Linux,
> the comment there also mentions not worrying if a no-map region is not
> memory as it will not be mapped.
> 
> In upstream Linux device trees, there are cases like
> arch/mips/boot/dts/mobileye/eyeq5.dtsi and eyeq5-epm5.dts, where
> /memory starts at 0x40000000 and 0x802000000, while /reserved-memory
> defines an on-chip sram region nvram@461fe00 with "nvmem-rmem" outside
> /memory.
> 
> Our board's device tree is not upstream yet, but it follows a similar
> pattern where /reserved-memory defines "nvmem-rmem" and dma pool
> sub-regions inside on-chip sram outside the dram range described by
> /memory.
Thanks for confirmation. I can now see:
https://elixir.bootlin.com/linux/v7.3/source/Documentation/devicetree/bindings/nvmem/rmem.yaml
so indeed /reserved-memory may describe non-RAM regions. I'll get back to your
patch then.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 12:54:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 12:54:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468186.1677274 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrYe-0007H2-3W; Mon, 02 Nov 2026 12:54:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468186.1677274; Mon, 02 Nov 2026 12:54:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrYe-0007Gv-0x; Mon, 02 Nov 2026 12:54:40 +0000
Received: by outflank-mailman (input) for mailman id 1468186;
 Mon, 02 Nov 2026 12:54:38 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNrYc-0007Gp-Bg
 for xen-devel@lists.xen.org; Mon, 02 Nov 2026 12:54:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNrYb-003IIG-8o
 for xen-devel@lists.xen.org; Mon, 02 Nov 2026 13:54:37 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae88806-e002-0a2a0a5209dd-0a2a4508db2c-28
 for <xen-devel@lists.xen.org>; Mon, 02 Nov 2026 13:54:37 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8880c-f659-0a2a45080019-d1558036b523-3
 for <xen-devel@lists.xen.org>; Mon, 02 Nov 2026 13:54:37 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a215e64962so26857415e9.1
 for <xen-devel@lists.xen.org>; Mon, 02 Nov 2026 04:54:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ab69b54742sm513323355e9.15.2026.11.02.04.54.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 04:54:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793624076; x=1794228876; darn=lists.xen.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=SAOWEPReT0wBqLXXhw7TwFZftY7S7YztA/cQjHbR2wQ=;
        b=FS8oAb7bgGq04Dl9K0dhtZvJl2zuEUSsv6jBcc91pQtkWIcWDJqmkcSkdo2MtfvSGA
         sBuV3Qe6dJFJ10eFEGrc72pnY36ev5NI0NEmk+u53cPpfizlIyIx6y4PT65ygpJz9HJ5
         ngDy9x0zHLp/4f0H4TvwyRIiYQ4lWv4tqw/agEe0ZI3n1lsAuhxkY5ZkGSU2w0geT/8+
         MAfTFEHBaFGFro4C08WnoyR3Khkpnmc51+JR0np+qu1q+ncX5OjyaArt4wC1vnWuzwmV
         3ZzUq9rB7OVSwhNKe+9Yc2dwRN2aX+AQjklCk3ahkMTXVWuGdORLgVSbBMmSVwEiMSv+
         AkDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793624076; x=1794228876;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=SAOWEPReT0wBqLXXhw7TwFZftY7S7YztA/cQjHbR2wQ=;
        b=kCGVcnOcY4M9ehg4hS9Uiv/zTQEWtZN205erbgwHM+7Odwe5sxnw0ZvX9E5C3l0A4w
         nuy0QO9M9sHkN2V1+WvaUtlPFlK+u7xRNC+wtiOwTuvBZoxk8LjRFHM02fIvPzpx7ArU
         MJIl4SspXBBjK2Zh3oGbVOkPGLS0xppqORFL6XFzJAy03/Vv6jKI2hvyY/2dIfGPd6Jd
         W9LsYgl7aFZPqHKu7i7ikwcDeSKBhkFXeDn+0zMZ5oNbTB/ith+5XYpog3ZhbfOgnVFn
         /JV/6eaPUh2Vghf68ZZZNzlygqqXMFqHz5TOvp5NO/BGjrmf8Lu/NLrqxdTVCikDUbz/
         66Bw==
X-Forwarded-Encrypted: i=1; AKwUvBywWQjtR8umMAJg14mGpF2IR+Ciq6cDkn7bEhYvCzhl16F1hKmNWxFxBAi59VBZNsdT7Zli5eIFW40=@lists.xen.org
X-Gm-Message-State: AFq9FYJbgml2nSQBFTAmI0KhoLg5ubKz8X7iVj4xWmL6pKKxMZpgoC+/
	fgWONt3DVtO+tx7kKzCebYa5WFUHd5Imbid+OA7F8BlGR69gY+4/4zOekz+g9VR+Eg==
X-Gm-Gg: AYBFou0JFJOz65xznYI1vGZ0LHy3PFu9LEqkwSsUesstQjd2faE82Wn/K8dViI5daAH
	V45WHtysN4WEtPtlQy+wagStOAmuAlt4AO7QWuKk3aRzMNwdj42DM+X8RqYxKc7Pl17QpFMncLs
	NeL4RywMmHWcsRPoWgkxKB2ATZWDWOPQISFb2HcTW+5q8/lZyaQQ357YdtQCs40m/bKpA9HWDyS
	d/rvqbEo7cj5UMMg3doK0f5zVkqf11TFbqtVZKFS6N3HHpmwkLM42iYV2jeLW1W6JaZFvrUGVsr
	hfLsLOnm2esHWrvK0+aMbTa3svN3qlo8KtwFpv+knpQfQJao9ezCrKhcp1FiH0mKghJ1XRY/Xgd
	XMhfZuaGLarbkNv9qMlNspG2lkMpNagcJDIpCrNjND+EohrsOmUnit0M2xhsjXt9AMYM6VI2JoM
	rf59apzFZPIfMlbWcUxyoY/6K0yYvTFvNUPx4D7Tve9dSIYCCVcxGDTtF4FMcGjnxXynAqgVN96
	EXIms/JnxMsxliYfU4zNGW3DlTciqbALOsBbwQotCCKyuy5u5+oUE4+nWSbs+YrgHUKDTUzq/n9
	SNvuLSHQrEOK6oRgIYszLScDlJqzVBv2tNAemfUWpCu921ZlGfGPYJaK3M2mLZwCI0w9icGhNe2
	DYAmi+CMNfeJSQ6wb
X-Received: by 2002:a05:600c:848a:b0:4a3:59c9:a756 with SMTP id 5b1f17b1804b1-4ac17b2ce84mr249413385e9.6.1793624076572;
        Mon, 02 Nov 2026 04:54:36 -0800 (PST)
Message-ID: <a1785adc-93e9-42dc-a3cb-9e8edf00289c@suse.com>
Date: Mon, 2 Nov 2026 13:54:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG] Xen BUG at mce_amd.c:100 (mc_ec2type) on Zen 3; host left
 wedged, no reboot
To: Peter Deggendorfer <pd@cortex-media.de>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Soham Dandapat <soham.dandapat@amd.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
References: <b9a98b3b-d11e-4463-ac80-4145ca991925@cortex-media.de>
 <e32a3056-c025-4d89-a494-ad7e8b6e2580@citrix.com>
 <b35c6a2f-753c-4691-aa9f-f67f2f7f37ef@cortex-media.de>
 <eff24ce3-bb48-4d2b-993c-65974d3af00e@cortex-media.de>
 <ad48ac1c-176d-407f-87e1-ae303e8eb195@suse.com>
 <8138ed44-727f-45bc-9673-9684e922595b@cortex-media.de>
 <ecfac9d0-eb72-4bb4-8aab-879cfa5dffd9@suse.com>
 <2a44faa9-9a9f-4681-84d6-8267acbec9b0@cortex-media.de>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2a44faa9-9a9f-4681-84d6-8267acbec9b0@cortex-media.de>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793624077-D477387B-870F71BA/10/78276251493
X-purgate-type: spam
X-purgate-size: 4829

On 31.10.2026 14:44, Peter Deggendorfer wrote:
> As requested, I added a printk to mcheck_mca_logout(), and the BUG() in
> mc_ec2type() is still replaced. These are the only changes against the
> Debian package:
> 
> --- a/xen/arch/x86/cpu/mcheck/mce_amd.c
> +++ b/xen/arch/x86/cpu/mcheck/mce_amd.c
> @@ -97,7 +97,7 @@
>       if ( errorcode & MC_EC_TLB_TYPE )
>           return MC_EC_TLB_TYPE;
>       /* Unreached */
> -    BUG();
> +    printk(XENLOG_WARNING "MCE: unknown AMD error code %#x\n", errorcode);
>       return 0;
>   }
> 
> --- a/xen/arch/x86/cpu/mcheck/mce.c
> +++ b/xen/arch/x86/cpu/mcheck/mce.c
> @@ -304,3 +304,6 @@
>           if ( !(status & MCi_STATUS_VAL) )
>               continue; /* this bank has no valid telemetry */
> 
> +        if ( who == MCA_POLLER )
> +            printk(XENLOG_WARNING "MCE: CPU%u bank %d status %#"PRIx64"\n",
> +                   smp_processor_id(), i, status);
> 
> 
> We now have some data points:
> 
> (XEN) [2026-10-27 13:42:10.588] MCE: CPU2 bank 23 status 0x830824448b48ffff
> (XEN) [2026-10-27 18:19:55.593] MCE: CPU2 bank 23 status 0xffffffffffffffff
> (XEN) [2026-10-27 22:11:10.596] MCE: CPU2 bank 17 status 0xffff832036a40048
> (XEN) [2026-10-27 22:11:10.596] MCE: unknown AMD error code 0x48
> (XEN) [2026-10-28 00:33:55.597] MCE: CPU2 bank 10 status 0xffff82d04022a8af
> (XEN) [2026-10-28 05:26:40.599] MCE: CPU2 bank 17 status 0xffff82d0402408e3
> (XEN) [2026-10-29 23:17:25.618] MCE: CPU2 bank 17 status 0xffff82d04022a8af
> (XEN) [2026-10-30 03:25:10.622] MCE: CPU2 bank 23 status 0xffffffffffffffff
> (XEN) [2026-10-30 10:05:55.625] MCE: CPU2 bank 10 status 0xffffffffffffffff
> (XEN) [2026-10-31 00:58:10.625] MCE: CPU2 bank 17 status 0xffff888100b872e8
> (XEN) [2026-10-31 00:58:10.625] MCE: unknown AMD error code 0x72e8
> (XEN) [2026-10-31 04:17:55.632] MCE: CPU2 bank 23 status 0xffff831f00006000
> (XEN) [2026-10-31 04:17:55.632] MCE: unknown AMD error code 0x6000
> 
> Only 3 of these would have hit the BUG(); the others have UC clear or
> an error code that happens to contain a type bit.
> 
> The values look like pointers rather than status registers:
> 
>    ffff82d040......  Xen text/data -- the prefix of every RIP in my
>                      earlier panic dumps
>    ffff831f........ / ffff8320........  same range as rsp in those
>                      dumps (e.g. ffff831fe6b3fc38, ffff832036a87c38)
>    ffff888100b872e8  dom0 Linux range?

Plus the very first of the entries above is a pointer value rotated by 16 bits.

> Two things that make me doubt these are real status values at all:
> 0xffff82d04022a8af appears twice, 47 hours apart, for two different
> banks (10 and 17). And all timestamps are congruent mod 15 seconds,
> i.e. this is the poller hitting it on a small fraction of passes.

There's no question that the values are garbage. We just need to find out why
that is. As we have to explore all (remote) possibilities, first of all - you
don't play any games involving the XEN_MC_msrinject hypercall, do you? For
the immediate purpose here, and since ...

> I don't know where the read goes wrong.

... I can't make sense of the behavior either, I'm inclined to suggest that
you add this hunk to your debugging patch:

--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -79,7 +79,6 @@
 static inline uint64_t mca_rdmsr(unsigned int msr)
 {
     uint64_t val;
-    if (intpose_lookup(smp_processor_id(), msr, &val) == NULL)
         rdmsrl(msr, val);
     return val;
 }

> /dev/mcelog records match the log lines one-to-one (same banks,
> same order, all CPU 2), but carry status zero in every case. The record's
> status comes from the second read in mca_init_bank(), before
> mcabank_clear(), so that second read returned 0.

Based on this observation, another thing you may want to try is extend the
existing hunk you have to

--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -304,6 +304,17 @@
          if ( !(status & MCi_STATUS_VAL) )
              continue; /* this bank has no valid telemetry */

+        if ( who == MCA_POLLER )
+        {
+            printk("MCE: CPU%u bank %d status %#"PRIx64"\n",
+                   smp_processor_id(), i, status);
+            status = mca_rdmsr(MSR_IA32_MCx_STATUS(i));
+            printk("MCE: CPU%u bank %d -> %#"PRIx64"\n",
+                   smp_processor_id(), i, status);
+            if ( !(status & MCi_STATUS_VAL) )
+                continue;
+        }
+
         /*
          * For Intel Latest CPU CMCI/MCE Handler caller, we need to
          * decide whether to clear bank by MCi_STATUS bit value such as

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:02:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:02:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468193.1677284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrgF-0001Ds-Qv; Mon, 02 Nov 2026 13:02:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468193.1677284; Mon, 02 Nov 2026 13:02:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrgF-0001Dl-Nf; Mon, 02 Nov 2026 13:02:31 +0000
Received: by outflank-mailman (input) for mailman id 1468193;
 Mon, 02 Nov 2026 13:02:30 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xNrgE-0001Dd-Et
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:02:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNrgD-00Aqm6-KR
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:02:29 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae889e1-2eae-0a2a0a5409dd-0a2a4508b208-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:02:29 +0100
Received: from [52.101.53.13]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae889e3-f659-0a2a45080019-3465350d5578-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:02:28 +0100
Received: from BY3PR03CA0010.namprd03.prod.outlook.com (2603:10b6:a03:39a::15)
 by DS7PR12MB5838.namprd12.prod.outlook.com (2603:10b6:8:79::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 13:02:23 +0000
Received: from MW1PEPF0001888E.namprd03.prod.outlook.com
 (2603:10b6:a03:39a:cafe::48) by BY3PR03CA0010.outlook.office365.com
 (2603:10b6:a03:39a::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.12 via Frontend Transport; Mon, 2
 Nov 2026 13:02:22 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 MW1PEPF0001888E.mail.protection.outlook.com (10.167.249.165) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Mon, 2 Nov 2026 13:02:22 +0000
Received: from satlexmb10.amd.com (10.181.42.219) 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.53; Mon, 2 Nov
 2026 07:02:22 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 07:02:21 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 2 Nov 2026 07:02:20 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=dGZMh781YpO+p+rjl0CESq5J8DRMPdfHi3ep7sAkBlzLo3aNRVZpJJ1UIwN8EH+BtknLm+LNZ25USJeX/VcFCC4IXtyOnXq4AfK68mGIH79pgTH+dQPXnhFusdntyfBvMLwtfJn6bpezinlBdGO/+V2yAmao3aFEOekJBQHnW2/fC7Db8ThpqQFxp3f35sGDpY8ZeMGm4b59PfIC6udzjdWbr3jUczGLOE4jVq4C23Qm+Kj2WdM5V10+bZkpAchdudu7fruoSOnkpoXFTe/9vVz7igW4WJe8vmRW15ClwmPJ6hpOTUuCYWofJ3Jo3C6ZJ2GWxh15CjiyW6YXiWwUVw==
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=32BuSs5L8vGAATNxTflFEpKUKCC8aF6a+5MfmF2suLA=;
 b=mzlZbvOzjHoMzfi/dwEEJR9FgR7TnkwiMcgPSH7q9ReSfouCNLWeDFtx7hQEnFD9uNAGPAlfhyMqVh9aljdHCmGamxfpRan6JyPhrAdKeavPe2wXha/MZvgyjnNLgNEoe4VAw6PjAmnEXA18zdElXXBq4d0dYwy1u9R8z2fJHUaGrGv6G5Ifs491XuWplliHkKdhnQWxkLKFGHNFSLgLyw27QwGoGwBkJQNkDKgFZwvV5Vxqei8o61nSTbfr5pIehGs5OYUG/b0j0mGIdu6BO1CHDl+DO2y7KvtBo9F1DYcLjo1U3zrGRLJMPDBMU8MGSH7faJOj0Gk7x+fTF1A2CQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=32BuSs5L8vGAATNxTflFEpKUKCC8aF6a+5MfmF2suLA=;
 b=Bds4Tp96fDlAyZkJuRKPWuZVREOi+gn71dKlLiciD8W5+h6ln25XiHsrXhbPuXgg5mz/xRiKUnwue1H3LG/ijQEyUovl4mQ/Es65RIuGO2Jwa2/I/myNg8Eu+iwn3HhFa89leeexsFm4iOSmByriHjX/gZ0KuBQzy/E8ThpdCNc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <10bc93f8-5ac4-4804-864e-d83a5fbf7108@amd.com>
Date: Mon, 2 Nov 2026 14:02:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/dt: Skip non-RAM reserved-memory regions in
 make_memory_node()
To: Kuan-Wei Chiu <visitorckw@gmail.com>, <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <julien@xen.org>, <bertrand.marquis@arm.com>,
	<marscheng@google.com>, <jserv@ccns.ncku.edu.tw>, <eleanor15x@gmail.com>
References: <20261028211737.17629-1-visitorckw@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20261028211737.17629-1-visitorckw@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW1PEPF0001888E:EE_|DS7PR12MB5838:EE_
X-MS-Office365-Filtering-Correlation-Id: 8e24c150-ea77-4a4b-03f8-08df38e188e0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|376014|1800799024|10067099003|22082099003|18002099003|56012099006|11063799006|261021121427099003|261021123027099003|261022105027099003|261022075727099003|261026140227099003|261026121527099003|261009223027099003|261028144727099003;
X-Microsoft-Antispam-Message-Info:
	+sqvm85o2s5h6O61tl/42+WroESLw9neSTEaq+wxKwpC7CyARUIAAXwn8IgsACVs6bNrGCobm954mVRvbCEql0Pk6KSwid7alXQQQRaaZMltY7O4sDxTk+9NnHrOpv3Kbgyx9rGzkA5J5lj+6Q/SRMJJyGnVJTbITQA4aYr550NP0ox4brqyhnxVtH64705La8iNZRQae7VSwypvJ3nKo0zTlrYPYxemjNuCVvQZt4RJp/plSC2I2yK4GVOTMyyYiGhlB1fAEqzEJcUFGFtUTb6mkwG8jLpTSLAaxnVsr8r2H/NjdoZq1OklvWqXeKG6Nje4Z7eEEW8ZzNuYVTTYZsAWjSOPuFSGXonXFeu8E/qEhNCJ3doac8J8KNd2siu4yADG9xuXkcbDpFAkRcxN45dfC/fZXkL1S9P7QABi5w1lH8WuHIkzrYjGDXhlnXUVJq2gbiwlickrVfaLUe2XiGzli/fCIrRUxw/XO5OqAqXjtYDxtPj/s6dqDHeZaFPXC3+aGpRSjxK3FbSGRVFlZhhKf7lreTdYo33E5NivJj4VfmqNnRAqKmRoYlZAKvYZI1OBGdWF8rOPCmOQfJ6qw8vbcxroO4+Ot6CDBltXVFPD9gSjXLqywSY1rAA6115esKTXMS/ndh3+oyXnNWuuVxB73ptKHsPNnBc9h2Cc7KdDcX9ZX2G5Iim6edhmUxVLr5xCm6OAoISsz7kOGhnV8w==
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)(82310400026)(23010399003)(376014)(1800799024)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(261021121427099003)(261021123027099003)(261022105027099003)(261022075727099003)(261026140227099003)(261026121527099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/AXsZARWIdB85mjNuYyFjJqhqQLMM7dtQq4nYPBGRp6bMnxwa0u49b98tRFa+HHMII4i+g3TgNqgLTT/bO9te0/270N6QgfcisRpNVK6VqTfHpIKaefbK0lixmJsTG1+UrS1SA6j6Nnn6qFleECcrvgYNTDSSTubmot1+ESg0qAOVC248q2j7z+3xSY22/GSW3TDYydcYwOCIPYkr2AWqTdZnw64mEo1Qn36+67gZETPX24JR4NWY6ChYQAFDSyAvJoKf/UTi4YJJJwxYFUt4fylYPHpIHvl8/4G862RezH/Oqo7+bkUQM6I4kjQsjszlvTO8P8yCkfFIB4vpv4YVfjHHuwcMJJFStoBSE/mmEoJmr/LTy9c+K/5PWnVbNnriTkTxJLpzuMPw84dym6hvaMMYCRIgTeGHZuWkvgZ+fT0gbLMJEzZy3phlwFqMT2N
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 13:02:22.3792
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e24c150-ea77-4a4b-03f8-08df38e188e0
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:
	MW1PEPF0001888E.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5838
X-purgate-ID: tlsNG-c1860d/1793624549-CF95A87B-8FE77F20/0/0
X-purgate-type: clean
X-purgate-size: 4182



On 28-Oct-26 22:17, Kuan-Wei Chiu wrote:
> Xen creates a second /memory node for Dom0 from
> bootinfo_get_reserved_mem() without checking whether those regions
> belong to host RAM. However, /reserved-memory can also describe
> on-chip SRAM or firmware regions outside system RAM. Listing them in a
> /memory node causes Dom0 to register non-RAM addresses as system RAM,
> conflicting with device MMIO mappings.
It's worth adding a reference to Linux binding for nvmem-rmem as an example (the
only one so far?) of /reserved-memory describing non RAM. Please also mention
Linux comment at early_init_dt_reserve_memory().

> 
> Skip reserved-memory banks outside the host RAM banks reported by
> bootinfo_get_mem() in make_memory_node().
Have you considered EFI boot? There we don't use /memory and bootinfo_get_mem()
contains usable memory. IOW I think it does not contain reserved memory. In such
scenario, we would skip the reserved regions because they are not described in
memory membank. So it would be a regression in behavior.

> 
> Fixes: 248faa637d2f ("xen/arm: add reserved-memory regions to the dom0 memory node")
> Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
> ---
> Found while trying to bring up Xen on new hardware.
> Tested on real silicon.
> 
>  xen/common/device-tree/domain-build.c | 42 +++++++++++++++++++++++++--
>  1 file changed, 39 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
> index 30a59abfa7..33baf150a6 100644
> --- a/xen/common/device-tree/domain-build.c
> +++ b/xen/common/device-tree/domain-build.c
> @@ -504,6 +504,34 @@ int __init make_chosen_node(const struct kernel_info *kinfo)
>      return res;
>  }
>  
> +static bool __init is_in_host_ram(const struct membank *bank)
> +{
> +    const struct membanks *ram = bootinfo_get_mem();
> +    paddr_t start = bank->start;
> +    paddr_t end = start + bank->size;
> +    unsigned int i;
> +
> +    if ( !bank->size || end < start )
You can omit the empty check. Empty banks are not added to membanks.

> +        return false;
> +
> +    for ( i = 0; i < ram->nr_banks; i++ )
> +    {
> +        paddr_t ram_start = ram->bank[i].start;
> +        paddr_t ram_end = ram_start + ram->bank[i].size;
> +
> +        if ( start < ram_start )
> +            return false;
> +
> +        if ( end <= ram_end )
> +            return true;
> +
> +        if ( start < ram_end )
> +            start = ram_end;
> +    }
> +
> +    return false;
> +}
> +
>  int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
>                              int sizecells, const struct membanks *mem)
>  {
> @@ -513,14 +541,20 @@ int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
>      int nr_cells = 0;
>      __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE];
>      __be32 *cells;
> +    bool is_resv = (mem == bootinfo_get_reserved_mem());
>  
>      if ( mem->nr_banks == 0 )
>          return -ENOENT;
>  
>      /* find the first memory range that is reserved for device (or firmware) */
> -    for ( i = 0; i < mem->nr_banks &&
> -                 (mem->bank[i].type != MEMBANK_DEFAULT); i++ )
> -        ;
> +    for ( i = 0; i < mem->nr_banks; i++ )
> +    {
> +        if ( mem->bank[i].type != MEMBANK_DEFAULT )
> +            continue;
> +        if ( is_resv && !is_in_host_ram(&mem->bank[i]) )
> +            continue;
This filter (MEMBANK_DEFAULT and your check) is now duplicated in two places.
Please add a helper for it. Also adjust the now stale comment.

> +        break;
> +    }
>  
>      if ( i == mem->nr_banks )
>          return 0;
> @@ -544,6 +578,8 @@ int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
>          if ( (mem->bank[i].type == MEMBANK_STATIC_DOMAIN) ||
>               (mem->bank[i].type == MEMBANK_FDT_RESVMEM) )
>              continue;
> +        if ( is_resv && !is_in_host_ram(&mem->bank[i]) )
> +            continue;
>  
>          nr_cells += reg_size;
>          BUG_ON(nr_cells > ARRAY_SIZE(reg));

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:22:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:22:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468205.1677294 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrzI-0005Ai-F0; Mon, 02 Nov 2026 13:22:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468205.1677294; Mon, 02 Nov 2026 13:22:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNrzI-0005Aa-BM; Mon, 02 Nov 2026 13:22:12 +0000
Received: by outflank-mailman (input) for mailman id 1468205;
 Mon, 02 Nov 2026 13:22:11 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xNrzH-0005AU-CB
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:22:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNrzG-003NkI-P8
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:22:10 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6ae88e7d-8faa-0a2a0a5109dd-0a2a4505e6e6-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:22:10 +0100
Received: from [52.101.72.87]
 (helo=AM0PR02CU008.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6ae88e82-4cb1-0a2a45050019-34654857dd5b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:22:10 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by VI0PR03MB10903.eurprd03.prod.outlook.com (2603:10a6:800:26c::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 13:22:07 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 13:22:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=YDx5XiTWvk8GBj61afPoRSDBcOLZowiWPqB0KCpoUmNcvyPHZjs56+JcVsE/wLh3zjNv3evDpQnMAD2I3wXrTxK9WA3WqgP5J6H9M/MnB39aok4y3CT9/WeZCALqVT1qHYoYwX/Lo9ZpHH80Pe0mAYxFYEjBKqs01J/FgoZzP05J4qWnZnhFztho5hrkgW/5IjvF1BQGa1sq6v6OHwm1DHW/I53aH1/blSJ2PX0HGcbQC/3cEBe1wHwJuLcmcX8UH3T7ebKVZsnOxu7TG+fN3aoZ2K+BWQVU7H1u8Ew6OYEIICy4p73oZ1DwK9pRmTnNNLy8egnutmWLkzsFrkLFJQ==
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=sKrwl1i7LFBa41Q95vHv8rcEwCJBpo3IIyQJ5QBbOkU=;
 b=S+EeCgiWOzjJmLyUNZ5J1pBMYdBDzN1t7uh3mXzAzMMyjfwvWB5dZNq1qM2/4owwitM8X2W4ewzHsgrg2FkaUHRqnn7br62zqzuP2Jw7hhv7bRRLWKQ0aGLzbaba2yFzSv1qaXyPhE1UaHjvW2rrz6xSUxvQwN3b0u4ukFAgknfT9uIGUgMwRFSkeYdPl6SBlem/6FVe2yxCrmQQIAJkpWkbFHoZU9HHus91tvdCwwsZ0xI+Q9gmfKeSdLxkMZf+d1T1mIaE3bKDrcRRtIT9sQOTOO9EPhJOzJH6dZmaqe7mrqpal08rQUnq9jXVXuCGZaewfJ/lQU1RM904jIToVw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sKrwl1i7LFBa41Q95vHv8rcEwCJBpo3IIyQJ5QBbOkU=;
 b=ax/NbTyN/pv/GcXiVUFf3cXXdEBH2I3zIuUth2uANhtoVUjHfrNiiOgSxyOwcWWvZYV/0Fd4bWb2IWXrLB7mxQ9NaFSj/qAnvONVTKgAE7ahHEHOApi6OlqGZEI2Y5j34YiYD9ExRgZZ/5Ff+eBw4zy07sTTaZFVGaASLH1ngtcypW9UeDKfDLMjWSqZTquWOglbmv8rFHK0YcqF0NN+NP+0M/lmibp+A/P8HBwRrugS4dTtTEatl6IT7nwyOWTB792j5lu8eqlcDEu6uFMmafhAPx7/SyYgNprMInz/C7098rD5ZOMaavz6b6JQiMgYbeaOsGU4CGvCWrQRUdxjrQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Community Manager
	<community.manager@xenproject.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Topic: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Index: AQHdXK6sWnTwG0FjdEmPa5OC537fErcTDN4AgAfUFAA=
Date: Mon, 2 Nov 2026 13:22:07 +0000
Message-ID: <8d339d8d-ea7f-452b-8720-164dc9244079@epam.com>
References: <cover.1792072426.git.mykyta_poturai@epam.com>
 <103b10d012cc291906025045a2da1ce728f0bffd.1792072426.git.mykyta_poturai@epam.com>
 <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
In-Reply-To: <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|VI0PR03MB10903:EE_
x-ms-office365-filtering-correlation-id: 3ce06337-611b-44db-4a3f-08df38e44b4d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|1800799024|366016|376014|23010399003|18002099003|22082099003|56012099006|4133799003|10067099003|261009223027099003|261022115727099003|261022113327099003|261022105027099003|261021133027099003|261021135927099003|261021130227099003|261021123027099003|261021121427099003|261022075727099003|5023799004|4143699003|11063799006|261026130827099003|38070700021|261028144727099003|261026135527099003|261026140227099003|261026121527099003;
x-microsoft-antispam-message-info:
 Zvw7xRSw1k9GM29CvkqFcUqzIVoLrAITOaQL3b0oq1L+nTbxZavf9zmafqCH6kW3NodA7t6ZsxO3i0nlU4YcddWEOxyLOKJiBCacqHETJh3SRnU5BqLh9ZoRvruRnJfR2hK6uugDgzw/x8OEM42oGJbEnYT97fCnyvTazwGr0NqRrkm0ey7x01QJv+sinRkn+tJBqaBTIspR6gtb7nn8KHZ9WYWC/A0PruF/t1N0t1arU4S59eGo2JeijMEy7E6Ja3+qg5CMM8W1p2ZM1r6A20hqzD+o1TudsKhNCEVDUlMd9gkKmE7nyBNkrNSu6Nvvy7I1FkASqEnaq2/cv6g5KC2m7ny9jv1PPqbiYdHBmeOud9N06c4NfN0te2NsiZ6e2NLVtZWiKmaQk1ncMQuLqf71nGAAtJnZMLP6oLcyTxEyO4ScM4KHDxk4RozzZrWI8H1ySzfdz75AfgV7u3kwYkxNPQi/8MjO2P8pgh6nuKQgIbQYOo3gqI8lmpMfgVeBzVDhU9XduONv7Ybjacc+bUXhmx4eDUHdpioNi/eqzmZnsjb6wPVEvb6HcRUyU21Zk24y1jT1nNc7raX8QNbzx1t228CBH9rp0KcFhF2CJK57OPJNGvREhzNvCZ/L5bVRBYK3MBjoDT5PCUgZqs78GK0gd0Xf3Fe6AQPFC+mSGKQ=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(366016)(376014)(23010399003)(18002099003)(22082099003)(56012099006)(4133799003)(10067099003)(261009223027099003)(261022115727099003)(261022113327099003)(261022105027099003)(261021133027099003)(261021135927099003)(261021130227099003)(261021123027099003)(261021121427099003)(261022075727099003)(5023799004)(4143699003)(11063799006)(261026130827099003)(38070700021)(261028144727099003)(261026135527099003)(261026140227099003)(261026121527099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MmcwMklNV2tCODJkcmZKTUNDeng4N2JJQks4ckVaYzdsVGJZUW92UXN5Q1or?=
 =?utf-8?B?bHg1WHBEdVVoeGlJVXVzanZaS1ZzUDh4Z3M1NTBMWUhZaVFOWFJXWFRZd0c2?=
 =?utf-8?B?OE5IdjJ4SE4wTTBSUWNSV1FDZ2tVWjN6WGd1VlZteWFvTG1tbFZ0UHEzQm4x?=
 =?utf-8?B?cnhGSWdDeExiSUlSaE5FWnVxcVUzcjNNblU2QTdqelV0QVphYVdEeWg3VUU2?=
 =?utf-8?B?dkJiSTJWKzlySUpJTHUwZ21oaDRmcnBRUTFZQXZDUzQxaHJWTEJXYTdPZkFL?=
 =?utf-8?B?QWYwL2F1cnpSL09sN1VlNTN4S3Z5RjJoOURyU3lHa25WQVovQ1FVQzkxVVE3?=
 =?utf-8?B?ZXVST2Fpd0Mrbm5hbDZvVk5Yb3dTTk5vdldqRXV3cndTeSszYUxlY3hucS9Y?=
 =?utf-8?B?QmJNNkE5aWwyZzBBOXRUZmR5aU9sTGFjS0FSbjVYendoRXYvS3pjL0lHaEQz?=
 =?utf-8?B?eTZOZkZwdnhycmxpbmlXemZpTGNYa0RIaVNUcVVMeXR0aXdtVGsyQytWbStW?=
 =?utf-8?B?cVpzQklOZ1FMenU0OWRpUUZNQXFUejdCVU9SYk9PWFZxQW9sWnFpWmwvZy92?=
 =?utf-8?B?TGtjWGlxaXNBU0lqTXVuU1BRaWppWklvdXc4WlRHSVYrM1JOOTgwa0M1Nnli?=
 =?utf-8?B?Nm5QWGEzK1dGdVN4TEdDQW9uRUVMclAxTy9VRVM1NDBpR21UK1NwM2Uyc01l?=
 =?utf-8?B?ZWdlcWw5bWtzcjN6eFF2eWh6dlFQUTBDbzJLSW5ZRmw5RnBodlhlTHh1T0hq?=
 =?utf-8?B?dHFhM0FocFRWNm42VGp4SzZ6KzF6OWZqL3FtQlBDdFV6SWcyV0hWTUU1WmRk?=
 =?utf-8?B?WEFVa1FrcmxDYjhNK3AxSnk3RVc5Z3kzZUt2dEo3TzE2YnNkRllJY0ZkNk0z?=
 =?utf-8?B?azRibGxlMkRTTGFKZG00UjV5MG5uVXUzVzZwWFh3V1NVR1NZNTNVMFdxS2F3?=
 =?utf-8?B?QlpjdTh3ZlptNFZsSC9qeS9xbit4M3prb1pqVktlekFIY3lNSUg3L3hQVjBl?=
 =?utf-8?B?Yzh3amt3K1RRRlArS24yUDZmNGdlVWtKcndPV09xS20wOUZZaWsyV0x4VzVa?=
 =?utf-8?B?Uzgzc1BNWnBvUWR3MnR1dlUrYjljeklKcnI2NmpDQTh5Z1dqOGsyc3lTZUlv?=
 =?utf-8?B?RkRTNldwVFdWbkFyWmt2UWxNM2NaY2VzS1gzTCtmWXlkeVlTNHVHZytWd0RC?=
 =?utf-8?B?OW9lSkNWNnhsYjN1RVRVSEQvYUhFcG53RVFLL1IvSm9pQW5FWWZBM2lyMEtz?=
 =?utf-8?B?UUFaOE1uUFZlTENZUTFUMW5JdURYVFYvUk1CM3MyYmdSb0VvNVZRcU1DSEMz?=
 =?utf-8?B?SHNZUHZ4Tkh6TEtoUk9XdHVRYzdSbGZ1KzJIdXNBZVJLUnpzUnUwTnVMSjlT?=
 =?utf-8?B?RU5wcHp4aDZZNjNrYzV3b1Z3bjFyZHkvUFpHY1hlb0hMZTNXRFhDeDQ2NzRi?=
 =?utf-8?B?b3VBUUtjd1RRZWlvQVlzTW83K0VOSnV6bkhhQUs5K1BoV3N6dHJkYU5qY2dP?=
 =?utf-8?B?andBVXdRaS9aVHBlWWtkWmdwcUsvWlpGVjRGWldxc0c4c1JURElhSUhkQVpE?=
 =?utf-8?B?ME5Yb25FQVRVa2g3MlZ3ZkhRbWkva0tiL0ZxMVJEc1pUZDlpbzljdDZJUU1M?=
 =?utf-8?B?WXhGb0wrdFZXWFZmcXBReWJMbmFkbWxhKzRWakZSVEFlVVZWVUpobEJFeUFr?=
 =?utf-8?B?TjVOS0MyM3BsT2U3MktUKzk3M3lpbzVLOHBkV3ZzVDQvSHdTeGNaall3ODU5?=
 =?utf-8?B?dGFVd3gybCs4YlUvY3JJMnU1OWo2Ymt1dExQTDdNem9ENGtoSjBSMFpKYlkx?=
 =?utf-8?B?QWJXNDhsdkRHVVRzMS90UGkxN3JoL1FuWjRNSXQ4akxBSVRTdWJhak9aUFpC?=
 =?utf-8?B?T3pydnU5YnlzdHdhdXZGMis0Vmo3VFBQaW10S3dPK0VnRW94eldDU05JalRP?=
 =?utf-8?B?aGpYS1JLNWQ0TklCYk15QUVwUDdRUTFtZjdIclE2OEw2TjRtcDJWbVlESk1C?=
 =?utf-8?B?cHh1dnpPcWNXZm8rWnlub1lUdnhhenV4V2RXdmRadG5iK3F6cWlSU1pWREky?=
 =?utf-8?B?LzVFYVY1dTVMQmg2MWVuMjFXVHd2SUdnbkJxNS9hdW5NYnl3NnVFbnpDU29y?=
 =?utf-8?B?YzdlTXYzTXVUb0o2WXJGeXVsaGlkME5sSloxN0U4Ky9mTUJXVlJqZlU0R0sr?=
 =?utf-8?B?N0FBcmdnZlhONEVBZkJqV2xJQUJvMUh2Y2lQd0JmYjJXa3NxOXF3dytxa2Vo?=
 =?utf-8?B?LzNFSXpaQnlqR2U2blEyZjdpdUo5bWFTSUlYTzA5dC96eUM5OEFRWGRVV3p4?=
 =?utf-8?B?Z3V2SjlEU0FUOVpXRFdqa0t0ekhQNzNITnhvbVRzVWErM053SDJQUT09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <5D976037CB5CBF41885BE118A63E79EA@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3ce06337-611b-44db-4a3f-08df38e44b4d
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 13:22:07.5805
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ccgHucTIGb7SBrGJqiLiSyUjBmSXqNIR75PgCuVTeGRxkiWrvCbmNub/4nDxX3RSIdLclJnKTIeXRM+I3VoTSg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10903
X-purgate-ID: tlsNG-c201ff/1793625730-F7ABF2A1-224C53F6/0/0
X-purgate-type: clean
X-purgate-size: 3072

DQoNCk9uIDEwLzI4LzI2IDM6NDkgUE0sIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxNS4xMC4y
MDI2IDE2OjA4LCBNeWt5dGEgUG90dXJhaSB3cm90ZToNCj4+IC0tLSBhL0NIQU5HRUxPRy5tZA0K
Pj4gKysrIGIvQ0hBTkdFTE9HLm1kDQo+PiBAQCAtMTYsNiArMTYsNyBAQCBUaGUgZm9ybWF0IGlz
IGJhc2VkIG9uIFtLZWVwIGEgQ2hhbmdlbG9nXShodHRwczovL2tlZXBhY2hhbmdlbG9nLmNvbS9l
bi8xLjAuMC8pDQo+PiAgICAgICAgYWZ0ZXJ3YXJkcy4NCj4+DQo+PiAgICMjIyBBZGRlZA0KPj4g
KyAtIFBDSSBTUi1JT1YgaXMgc3VwcG9ydGVkIGZvciBQVkggZG9tMC4NCj4NCj4gSXNuJ3QgdGhp
cyB4ODYtb25seSByaWdodCBub3c/DQo+DQo+PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn
aC9wY2kuYw0KPj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMNCj4+IEBAIC0z
Miw2ICszMiw3IEBADQo+PiAgICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPg0KPj4gICAjaW5jbHVk
ZSA8eGVuL3Rhc2tsZXQuaD4NCj4+ICAgI2luY2x1ZGUgPHhlbi92cGNpLmg+DQo+PiArI2luY2x1
ZGUgPHhlbi94dm1hbGxvYy5oPg0KPj4gICAjaW5jbHVkZSA8eGVuL21zaS5oPg0KPj4gICAjaW5j
bHVkZSA8eHNtL3hzbS5oPg0KPj4gICAjaW5jbHVkZSAiYXRzLmgiDQo+PiBAQCAtNDAsNiArNDEs
OCBAQCBzdHJ1Y3QgcGNpX3NlZyB7DQo+PiAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGFsbGRldnNf
bGlzdDsNCj4+ICAgICAgIHUxNiBucjsNCj4+ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJvX21hcDsN
Cj4+ICsgICAgLyogQkRGcyBvZiBWRnMgd2hpY2ggaGF2ZSBiZWVuIGVuYWJsZWQgYnV0IHdoaWNo
IFhlbiBoYXMgbm90IGFkZGVkIHlldC4gKi8NCj4+ICsgICAgdW5zaWduZWQgbG9uZyAqdmZfc2V0
dXBfbWFwOw0KPj4gICAgICAgLyogYnVzMmJyaWRnZV9sb2NrIHByb3RlY3RzIGJ1czJicmlkZ2Ug
YXJyYXkgKi8NCj4+ICAgICAgIHNwaW5sb2NrX3QgYnVzMmJyaWRnZV9sb2NrOw0KPj4gICAjZGVm
aW5lIE1BWF9CVVNFUyAyNTYNCj4+IEBAIC0xMzksNiArMTQyLDQ3IEBAIGNvbnN0IHVuc2lnbmVk
IGxvbmcgKnBjaV9nZXRfcm9fbWFwKHUxNiBzZWcpDQo+PiAgICAgICByZXR1cm4gcHNlZyA/IHBz
ZWctPnJvX21hcCA6IE5VTEw7DQo+PiAgIH0NCj4+DQo+PiArLyoNCj4+ICsgKiBNYXJraW5nIGlz
IHNlcmlhbGlzZWQgYnkgdGhlIGhhcmR3YXJlIGRvbWFpbidzIHBjaV9sb2NrLCB3aGljaCB0aGUg
U1ItSU9WDQo+PiArICogY29udHJvbCByZWdpc3RlciB3cml0ZSBoYW5kbGVyIGhvbGRzOyB1bm1h
cmtpbmcgb25seSBjbGVhcnMgYSBiaXQuDQo+PiArICovDQo+DQo+IFdoYXQgYWJvdXQgcGNpX3Zm
X3NldHVwX3BlbmRpbmcoKT8gSG93J3MgdGhhdCAodG8gYmUpIHNlcmlhbGl6ZWQgYWdhaW4gbWFy
a2luZw0KPiBhbmQgdW5tYXJraW5nPw0KPg0KSXQgaXNuJ3QuIFRoZSB0ZXN0IHJ1bnMgYWhlYWQg
b2YgYW55IGxvY2sgYmVjYXVzZSBhZGRpbmcgdGhlIFZGIHRha2VzIHRoZW0uDQoNCldlIGNvdWxk
IHB1dCBpdCB1bmRlciB0aGUgaGFyZHdhcmUgZG9tYWluJ3MgcGNpX2xvY2ssIHdoaWNoIGlzIHdo
YXQNCmNvbnRyb2xfd3JpdGUoKSBob2xkcyBmb3IgbWFya2luZyBhbmQgdW5tYXJraW5nLCBidXQg
aXQgd291bGQgaGF2ZSB0byBiZQ0KZHJvcHBlZCBiZWZvcmUgdnBjaV9zcmlvdl9hZGRfdmYoKSBh
bnl3YXk6IHBjaV9hZGRfZGV2aWNlKCkgdGFrZXMgcGNpZGV2c19sb2NrLA0KYW5kIHRoZSBvcmRl
ciBpcyBwY2lkZXZzX2xvY2sgdGhlbiBwY2lfbG9jay4gU28gdGhlIHRlc3QgYW5kIHRoZSBhZGQg
Y2FuJ3QgYmUNCm1hZGUgYXRvbWljIHdpdGggdGhlIGxvY2tzIHdlIGhhdmUuIElzIHRoZSBsb2Nr
IHdvcnRoIHRha2luZyBqdXN0IGZvciB0aGUgYml0DQp0ZXN0Pw0KDQpUaGUgb25seSB0aGluZyBJ
IGNhbiBzZWUgYWN0dWFsbHkgbWlzZmlyaW5nIGlzIHZmX3NldHVwX21hcDogeHZ6YWxsb2NfYXJy
YXkoKQ0KemVyb2VzIGl0IGFuZCB0aGUgcG9pbnRlciBzdG9yZSBwdWJsaXNoZXMgaXQgd2l0aCBu
b3RoaW5nIGluIGJldHdlZW4sIHNvIGENCnJlYWRlciBjYW4gdGhlb3JldGljYWxseSBzZWUgdGhl
IHBvaW50ZXIgYWhlYWQgb2YgdGhlIHplcm9pbmcgYW5kIHRlc3QgYW4NCnVuaW5pdGlhbGlzZWQg
Yml0LiBTaG91bGQgd2UgcmVhbGxvY2F0ZSBpdCBpbiBhbGxvY19wc2VnKCksIG9yIGp1c3QgYWRk
IGEgbWVtb3J5IGJhcnJpZXI/DQo=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:42:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:42:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468215.1677303 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsJF-0000Pi-0n; Mon, 02 Nov 2026 13:42:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468215.1677303; Mon, 02 Nov 2026 13:42:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsJE-0000Pb-Sx; Mon, 02 Nov 2026 13:42:48 +0000
Received: by outflank-mailman (input) for mailman id 1468215;
 Mon, 02 Nov 2026 13:42:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNsJD-0000PU-LH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:42:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsJD-00GzGy-20
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:42:47 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89357-2eae-0a2a0a5409dd-0a2a45028fd8-0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:42:47 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89356-6ca4-0a2a45020019-d155802bbc86-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:42:46 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a5087a5348so24342755e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 05:42:46 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ab61d8b9f4sm319013765e9.12.2026.11.02.05.42.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 05:42:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793626966; x=1794231766; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=GovrW9U8cuxL4mNt3PwGk61352+7/T5g3Af5gQdbHgA=;
        b=ABWB+Iy06TXH/WaiNpRVStGOgRceASLUPULLjDQaoMWxgQxTqecHb5dsUDBIUAsJTW
         C3uVe7h37xJYXVpfhSEDenkeB4Z9SDxUj43TySYcQvmMDMVAFakkdQKb4EHsp52Wtled
         fWfEMMZ6lffMJabsRvAX3+7ug0pZBIwv/ZGnBknVren4ZvHxbUSh6f7cZUqk3FlPOOS3
         zV6yOuwzpNgGYiRS6s2mAHUihEGc8VxVMGefAboxqvJA7hjqwOesg5jYBNXoCSlFazTa
         5PdmVZiMEkJ2O3nm+hfALqgkFTVZWWDfnabs12HEirYDhcHpy3NkdXEXVD6umqkxaCiR
         rG2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793626966; x=1794231766;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=GovrW9U8cuxL4mNt3PwGk61352+7/T5g3Af5gQdbHgA=;
        b=uf5Na5H+/Td8qdDVd3Q9vwB3JBYwMcTQDaspLbo1ozaSvbfJuxqRA8LkHR+WsemxuG
         /sYvDKLwp1FnXv8o8lQ91k/65HRtsAr1Z1x2axq3SWzoXbn5GZzlRJAsi5oZXKQsxnrf
         /JSu8sXrQMwmaCq1sbNmN9IG7Xc6aeXvFR2T6iawsk+1q+j65mfFw71qC3kFV9cIoZ1d
         zvYIz4or7cA9jEKBbJmKiNHdQbJZZNfTZ40zc5s7TZq0h3HKdvTWflyish0n3uotD9I0
         r9Db88+uwkmBfBlBkFsPwIg1r8HZ4kU7b8PYZOWfMibzLffRvyLEZyd4ZPhqXUbXVMBB
         0+WA==
X-Forwarded-Encrypted: i=1; AKwUvBzauaeaJXrRbmrD/JHEbEu7Yvp61Xubf3naeV4QXYZ2NfmynQ6vzBfGv7OJlydiog6B8B8HvAlLliI=@lists.xenproject.org
X-Gm-Message-State: AFq9FYK8LHC6CFyvX3UjBhlGgMj7sc/ZLmW7RqYjL7mF0M02fGYjlFf8
	0HAgPKa/kolZu3mqhmJxtZnj37MdGDtFT40nNPnkGErBSmQVwuUt1JpociuMIEBt4A==
X-Gm-Gg: AYBFou1Kt1ssc2moDHCyfwDpkLZGAqbVWZrT8HqMpaGuh7T+d0Opxgcul4ULQjeUtej
	o1aSO/3EQXmd2NbvmBydgUz25FQtP/eeMzmkrazyFqera/x7j8h9uutmaGZLY5uhiMgWkwdD81/
	CkVix5zZrW8QuE93rboxNu0uCB09VcVoY7gXUu9kP+d/EooPqVnTFSZZi4cej86PSWp9WU8hjhx
	XuMudjtTXBA1RFdK/6tpv+X2un3g3O7Bcj+sYsDzk59ZsiASEalpkuaZnIPeN5HEpfqoi6WEqYl
	7ea2A7eDCOTGzNBibJ5mIfxhlIjGxwbQptfmaa5RDwAc5/lr9YrNaH6kLaTnnCMUiSM++v1gdz+
	kKrFn7LNjSWnKRdtpqEHoyFE4A1MNuSeIFtgynLNMDWzFweLcxI1rzNF0QA/RvoekSAoK06MX4T
	vMlTwu01H0ju9RQWPGk44im6guk7a77NrRP2PDehHkoKFooXO+Q4tcf/Oau673gzMP45pv1yCh/
	6Jtqr64wGpLlcJVNeWWGZmxM5IZXJhsmAc/pH1bGQy7j5HDJmAfTBHwvmknNebQ/a7SgxZbjNYU
	HEA39IENZYFRFgud1kKITkitcmAKp+xekm8eWn6olxgyjnC/0Xiipjif8gdE9lrW95qjxMBsyec
	lO5z8xiltvzS6vPHf
X-Received: by 2002:a05:600c:19c8:b0:4a3:59c9:a743 with SMTP id 5b1f17b1804b1-4ac1913ef8fmr235245995e9.27.1793626966212;
        Mon, 02 Nov 2026 05:42:46 -0800 (PST)
Message-ID: <aab7c1d8-fa64-456c-b37a-162ab3e2ae1e@suse.com>
Date: Mon, 2 Nov 2026 14:42:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1792072426.git.mykyta_poturai@epam.com>
 <103b10d012cc291906025045a2da1ce728f0bffd.1792072426.git.mykyta_poturai@epam.com>
 <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
 <8d339d8d-ea7f-452b-8720-164dc9244079@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8d339d8d-ea7f-452b-8720-164dc9244079@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1793626966-31BC82AC-18303E02/10/78276251493
X-purgate-type: spam
X-purgate-size: 2030

On 02.11.2026 14:22, Mykyta Poturai wrote:
> On 10/28/26 3:49 PM, Jan Beulich wrote:
>> On 15.10.2026 16:08, Mykyta Poturai wrote:
>>> @@ -139,6 +142,47 @@ const unsigned long *pci_get_ro_map(u16 seg)
>>>       return pseg ? pseg->ro_map : NULL;
>>>   }
>>>
>>> +/*
>>> + * Marking is serialised by the hardware domain's pci_lock, which the SR-IOV
>>> + * control register write handler holds; unmarking only clears a bit.
>>> + */
>>
>> What about pci_vf_setup_pending()? How's that (to be) serialized again marking
>> and unmarking?
>>
> It isn't. The test runs ahead of any lock because adding the VF takes them.
> 
> We could put it under the hardware domain's pci_lock, which is what
> control_write() holds for marking and unmarking, but it would have to be
> dropped before vpci_sriov_add_vf() anyway: pci_add_device() takes pcidevs_lock,
> and the order is pcidevs_lock then pci_lock. So the test and the add can't be
> made atomic with the locks we have. Is the lock worth taking just for the bit
> test?

No, such locking would make sense only when held from before the test until
after the result was actually acted upon (in the case here: the bit was
cleared by pci_vf_setup_end()).

pcidevs_lock vs d->pci_lock wouldn't really be an issue here, though: The
former is recursive, so you could acquire ahead of acquiring d->pci_lock.
The "inner" acquire in pci_add_device() would then be little more than a
no-op. (Of course proper commentary would need adding if such an approach
was taken.)

> The only thing I can see actually misfiring is vf_setup_map: xvzalloc_array()
> zeroes it and the pointer store publishes it with nothing in between, so a
> reader can theoretically see the pointer ahead of the zeroing and test an
> uninitialised bit. Should we reallocate it in alloc_pseg(), or just add a memory barrier?

Hmm, is this really the only issue? What if two racing pci_vf_setup_pending()
both yield true? Then we'd end up with two competing vpci_sriov_add_vf().

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:46:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:46:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468222.1677310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsMW-0000vT-DY; Mon, 02 Nov 2026 13:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468222.1677310; Mon, 02 Nov 2026 13:46:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsMW-0000vM-Ae; Mon, 02 Nov 2026 13:46:12 +0000
Received: by outflank-mailman (input) for mailman id 1468222;
 Mon, 02 Nov 2026 13:46:11 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xNsMV-0000vG-3q
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:46:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsMU-009maE-2f
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:46:10 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8941c-8faa-0a2a0a5109dd-0a2a450b98a2-32
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:46:10 +0100
Received: from [40.93.196.28]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae89420-b7e8-0a2a450b0019-285dc41cdfff-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:46:09 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by MW4PR03MB7009.namprd03.prod.outlook.com (2603:10b6:303:1a4::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.10; Mon, 2 Nov
 2026 13:44:09 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 13:44:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=huJUTcoEXshU0eFv2ZdgSCsNmNYac49UYdbkyLEDs5AkRRXeF3isOfGeXBwgygrrAGeLvekm7xsi+FQUpxb/nImGUmh4rGUNzrLlLZVGXt8jeF4+ljBQnVFAjDk0lmAp0xy1i5frWjDRkxs/nPlIulJFQDg2mFhq6cYPJ+2hPOvo6uITogPN7jwzK2PHnNigm5tzFypmRRRsVaIdUGbNso6fchhhF0uLieNoTFzNnst39JMZC0+PkIyywyHsPKfDbaT4BNUs2a4OCaRsXv0fXFhFnX3t6Tu9TzyTPry4vnNRWZwPXqBn37Z5lV1oSucSCLG6FJgxICB9ZReOCOqOGQ==
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=7fI9zMresrdUyIgi9xEyLCN6ExzRQ62FwYQM4OixeJk=;
 b=SRW5nu8M+Wyt4PsYmo/JMQ8hzFmkhH9TmGAhJC/9wjuBKgl5NAk+DlRYdS2O196oXayctcq1L1ORJ3pkEVDFl7Oglb2Nq3oVcy0I4tqZrgsPyoJBpSGp+oLyn2YDF15YVHI32GtU6dDKsXSQ8DbEI9BxcsMHi223oJdTZ/03WO78yHkdBunWTDUzmUUjrl0pJ5La3Y08IdwhR/XKy5ghpWY/oyApvBTipvfWKXlHwEpQVRwEyz16K4Ar12FxzzZrDLL+UAoin1ynFenTXH2zoBkM+2+lyvVN7vydAJkEhfn/PXZqP1/205ymSfnU8jSQ1Yx795vXYJJFMGxqRCcNCg==
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=7fI9zMresrdUyIgi9xEyLCN6ExzRQ62FwYQM4OixeJk=;
 b=FjIOVLnP67ZkAcQSJvLU6mEjAQ2JBc/eertrJ4X+cNsrJ3Gy3GK9qd9+mhApC4pRmkC3WmrQUsh7EhxPSFzrWnsB88UxrB+BfK/gxw8VITM9L7YPbTTuEi9levRwJWC5hSw4nVX2ywMnqbQWRUj26l48dh3LX6+zGwMapLGF4rw=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <bfa9e799-bdb3-46ec-8d2d-c085d131e6ca@citrix.com>
Date: Mon, 2 Nov 2026 13:44:06 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
To: Roger Pau Monne <roger@xenproject.org>, xen-devel@lists.xenproject.org
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-3-roger@xenproject.org>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261030132419.84264-3-roger@xenproject.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0107.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c3::12) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|MW4PR03MB7009:EE_
X-MS-Office365-Filtering-Correlation-Id: dcff0f3f-3a45-4b6b-7f52-08df38e75f21
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|6133799003|18002099003|22082099003|56012099006|261021121427099003|11063799006|4143699003|261022105027099003|261021123027099003|261026121527099003|10067099003|261028144727099003|261026140227099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	4jSPb6Seq9Gw/9sRxZ26IK/C/hE+q7opEMK9eWes28k6EiJJZS9+7mQsscrvqVDraX0uctbAgjb5a8BaCnP8d9xvNz9x5QPj9Ia4FUBnIaZvVGq74uxEUxgTNcHb/wXONivHusTrqJuvMac8xsqm/x76Sqkl2fczdbiGcLBYvuq/k9DcfoU01Am7hLa2TLEdbGv9bl8o5oxNKWm8qNmxwuSp6yaUqPjDD6u8WGv28w27NTL/YjN+r5zvk3py8xC+YH2o7VkoofEQjjJJdFIZmctimOgZUa4TRFH2kkAFr1yf80WDFsSx2xwDh1eEesR9JV+IWGb2Ix3PX4AZoOTgH7ioofQRPMz0FB02B/ZzDYdgidWDVVFp6HwXaVJAMpE/U8gUvH7pBeQeegT2vXuO46RL53VVBnqfYZJgIgqsrgv4UmjAnXqMlhH3H09JXPI9S18FlTWBBzbKyf2W/E1bdsjzPqsHIfDaRmDt+ZTbXKj12epkBkYVOg3B0arwoXuBLfWJoeCamaHN3et74P6djtPH3LmOcSe5B1e1VxYvM90NMOC7LOG9Bk+4PLuWPJpfvavpT1J5Kx7HAH08EPibINmRRrk1yPL10fQhjNVmlPbah2P+ntTZXXbSF7d3WHPlRWMKOO6o10VvbXj7DeJEzlTteYHIEgey291Aqvg4uk8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(6133799003)(18002099003)(22082099003)(56012099006)(261021121427099003)(11063799006)(4143699003)(261022105027099003)(261021123027099003)(261026121527099003)(10067099003)(261028144727099003)(261026140227099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?QUFJMWZHOWdLbVFsUWVnU1U2MFFFTWFGTTgvRURFUW8reUxMK3d6WXhRN0p6?=
 =?utf-8?B?a2xLSEl4UUhyVFF6bFR2TkwzaVRyeHhKZUlWUUVyR0dMdW5OZDZjeWtTOUpi?=
 =?utf-8?B?Ym9yTHlrYWsvZTZoMklMQlhCY2RockdwdnQyR1p2RHlmWXBSU2RVZERMNXl5?=
 =?utf-8?B?dEYzU09iY0NyL29BQWNpOUlMVHk2Nis0NzA0UzV3bFFNZ0hIYTVkZ2YrZE9D?=
 =?utf-8?B?Q3l2bXFoTFhPWkVPL3NoRE9XTmlkZ1hWK2NEVFRoN0pKbml2Q3NiY3dnblpl?=
 =?utf-8?B?WlllM1BVcmZHbTNrU1Fwd1pvOURTNGtIdThoUkp4REZXdVpTWktmQnA3b2FS?=
 =?utf-8?B?LzJSUHdkQ25oenYzM3JOSUhLTVdxM2QyVCtPQnQ5Nm1YTldwT3d6WjhmSDIx?=
 =?utf-8?B?SVVVSmZRQnpjaXVJcm92cnJ2MW0xZHE5VEU0OHVDd1I5bWNHWldGWmpNQlNK?=
 =?utf-8?B?Z29BcVkzWTB6dHNLcElaaFVGQitDTTZublVvb245ZndxWEZ0K2lldVc1VjQz?=
 =?utf-8?B?dzlkTm13WmFFRmxubStSNlJzNTg3aHdsT2NOdytpTTBqWE42MW40NTlYSHJI?=
 =?utf-8?B?ZGU4NUVJbytRTGg0ZUplamlIdlhGR3V2dXByLzluWGhBc3kvQWMwbXhuUjFy?=
 =?utf-8?B?Y0NhQnRLNGVvZDhGdk1ZUW9XZDJlQTFjYzIzNFphVzVrMjN6WFhVNzVnRFF5?=
 =?utf-8?B?eGFiZGhWL1pxUE41REJlSkROQzluK0Z6KzRqRWMrNndzaWlpQmMvQWpQU0U3?=
 =?utf-8?B?K2pHUHJDUEtYZmY1dFVzbDFXTUluYitaNjA5MDA0Ym1hZmFERTVsa3lOUmlz?=
 =?utf-8?B?aUJ3cXI2eU5hVW4wWTRpc0pwNmVHUVAzWFlyTUFWLzdaM1JIUWdNbEZRcmtM?=
 =?utf-8?B?NXl6dTg5dTZza1BlWkpBbGsrbERzNmhnZnVqVUp6Mm1PV3gxbDJPeVN2QW9V?=
 =?utf-8?B?dkJFR2lTZ0FSTUgyeE9rTkE2T29LbzFCN2ZHekh4Y2xEcVczbE9nYTMwQUlO?=
 =?utf-8?B?cTBXM1RpWE5PRTUveUN4TVhCTklpK2ZNWDVveVFJUkxGTytvckp0YW14c1Ew?=
 =?utf-8?B?NUR4NGdvT1VnS3MzZGE4VWFhUlNIMnlwTk5odzVIYzFFNzZBazFyeW5UQjVU?=
 =?utf-8?B?VG1GNUlzSFZjZkpmN3BiSmVoRWc0S01ud2JYU2VxeXRrTFpIRHdHMVNJWWV0?=
 =?utf-8?B?Ymk4WUh6QlJZN0VTZVNyb2FOSWMyTkwvUmcvT2NZa2M4Tms3V2VOb2VvU05D?=
 =?utf-8?B?ZS8vdHpaRDE5TStmdDFaTFRDWFltSGNOUG1ZeUlOYUNLTC9SRnFRNFlXTjJY?=
 =?utf-8?B?YXRTWWtIZnVtTlRQYkNVR2hwYnZ2TEkxKy9RbmUrbU52S21DSVprQTlBWFRy?=
 =?utf-8?B?VVE3a0NCWENSRU9qcGFYV01oS25Gd2h1SzE1ZFdIZG55VTNVNVBoRnJ1V096?=
 =?utf-8?B?aU9JMkZsd1UvMnIyOVc3Qkh6ck84dkgyMXVCU3ArOC93SDBDVGVNbkl0WEF5?=
 =?utf-8?B?b3JhNmJGRlAraDlWdkVTNytCRW1wR0FWRnZDM2g0SEovRUFqclU5anlvV1Fl?=
 =?utf-8?B?aGNidUxDVFNtdzZsZzVnbTNjQ3dLQzRLZVYzZWUxMGNuSGVVZXYxYXNyOTQz?=
 =?utf-8?B?UUMxb04wZ3RhVlR4aVBGYkcxeGZGQUZkdUlKWDlGZ05wT2NOcFhuTDY5S3Ev?=
 =?utf-8?B?SXJXcXpFWUxwcmdpaDZQckRDc2NEMTdMTzZ5eWs3bWNscW5Ib0N3R2pqamtk?=
 =?utf-8?B?bEdacTJiajY1OG5VNkhZM2xyQ2cyRGxaSzYwTXlZaEFsYzVSbUw4cmVxTXgr?=
 =?utf-8?B?T1U3UHNGTXZjVUdYUnFtc25ZMTZSL0F0cXFwb3B2VW40RkV2T1JkY2hZcDc4?=
 =?utf-8?B?UTN5cWszS0Zpb0VqL3VOY0JYSUFGTTdvSXJFQnRjd0IzWnRTaDFEN2xKblR3?=
 =?utf-8?B?UTNuejhqcUlUUW5LeWQ1WjJLWUY2WklWTXR4eHo5aGpubzlJQW1RNzNBdkJX?=
 =?utf-8?B?cGxONU9KTEJ5WFN6a0dzR0dsNEg3d0dNbmJlZDRHdjJJNCsxSkRQdGwzbTVo?=
 =?utf-8?B?V1pDeWJVNWpEa3NBNXQ2TWNYVFpDanc0MWdGdll2ZDUxcmdHYlZZRmVLRDRp?=
 =?utf-8?B?QUoxaDJVcHhSNVZYZlQ2V2J4VVZmSmVOSnJXeHVOV1ppMjhiQVVLWWltUVNx?=
 =?utf-8?B?SkI4UVh1ZXl3R0pSRmRPVWxqNlBIeExXWWN1YXRrbkZwOGhXTklrWVJXa216?=
 =?utf-8?B?U1ZwOWtVdnJTZ3RwS0hRYXNnOTNjcm5jbVFhU3UxcUJ1aUpHdDZMa2FsVFVJ?=
 =?utf-8?B?QkhHMW9VQVZCTGZqM2R1NDJ2Y3NGc1JRd3pnK25Hbmx4ZzdrbDNTUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dcff0f3f-3a45-4b6b-7f52-08df38e75f21
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 13:44:09.5345
 (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: zDXfrGaJb18xiddCYgCY1pjwSwMY69wPFbUSWFaPPxg/yyW23L62QMS2qoHxJg09un/JH2kx+CXYc7O8lyOOIbBr6fFVOuRS/+68VZY5Aoc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR03MB7009
X-purgate-ID: tlsNG-42698a/1793627170-AAAD89EA-11BC06F2/0/0
X-purgate-type: clean
X-purgate-size: 3167

On 30/10/2026 1:24 pm, Roger Pau Monne wrote:
> The current logic syncs the APs' TSC with the BSP both at reset and when
> setting the vCPU state.  This doesn't match hardware behavior, where APs
> are only in sync at platform start.
>
> Move the TSC sync so it's done in hvm_vcpu_initialise(), that's called a
> single time at vCPU creation.  This matches the hardware behavior.
> INIT-SIPI and VCPUOP_initialise no longer re-sync a vCPU's TSC to vCPU 0's.

Yeah, this is very buggy.   All TSC values are 0'd at #RESET and
unchanged for INIT.

>
> On migration the TSC offset for offline vCPUs is not transferred
> (hvm_save_cpu_ctxt() skips offline vCPUs).  To avoid an unexpected skew
> synchronize offline vCPUs with the first online vCPU, taking into account
> the TSC_ADJUST value.
>
> The clearing of TSC_ADJUST is also made consistent with hardware behavior:
> clear it on S3 resume, but not across an INIT-SIPI or VCPUOP_initialise.
> Additionally, on S3 resume start all vCPUs from a shared TSC reading, so
> they are in sync.
>
> Fixes: c31f8336e64e ("[HVM] Initialise AP TSC to same as BP TSC.")
> Fixes: 6e0336351ed9 ("x86: Implement TSC adjust feature for HVM guest")
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> ---
>  xen/arch/x86/hvm/domain.c |  5 -----
>  xen/arch/x86/hvm/hvm.c    | 19 +++++++++++--------
>  xen/arch/x86/hvm/save.c   | 34 ++++++++++++++++++++++++++++++++--
>  xen/arch/x86/time.c       |  5 ++---
>  4 files changed, 45 insertions(+), 18 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
> index 978d8b222256..71f49ec7ce9f 100644
> --- a/xen/arch/x86/hvm/domain.c
> +++ b/xen/arch/x86/hvm/domain.c
> @@ -312,11 +312,6 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
>      hvm_set_segment_register(v, x86_seg_es, &es);
>      hvm_set_segment_register(v, x86_seg_tss, &tr);
>  
> -    /* Sync AP's TSC with BSP's. */
> -    v->arch.hvm.cache_tsc_offset =
> -        d->vcpu[0]->arch.hvm.cache_tsc_offset;
> -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> -
>      paging_update_paging_modes(v);
>  
>      hvmemul_cancel(v);
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index ef9c7cd05777..81e90cc8fc8e 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -1667,6 +1667,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
>          /* Init guest TSC to start from zero. */
>          hvm_set_guest_tsc(v, 0);
>      }
> +    else
> +    {
> +        /* Start in step with vCPU 0, as all CPUs do at power-on. */
> +        v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset;
> +        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> +    }

I agree that the current behaviour is very broken, but this adjustment
isn't correct either.  For starters, it's not possible to have a
non-zero value here[1].

I'm quite concerned with this patch.  You're adjusting at least 3
separate things.

~Andrew

[1] Well, it is, but only by the toolstack racing hypercalls, which we
do not care about supporting.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:46:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:46:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468224.1677320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsMl-0001EV-O3; Mon, 02 Nov 2026 13:46:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468224.1677320; Mon, 02 Nov 2026 13:46:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsMl-0001EK-LT; Mon, 02 Nov 2026 13:46:27 +0000
Received: by outflank-mailman (input) for mailman id 1468224;
 Mon, 02 Nov 2026 13:46:26 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNsMk-0001DU-9m
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:46:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsMj-0051s4-Fi
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:46:25 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae89426-e002-0a2a0a5209dd-0a2a4509d446-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:46:25 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae89431-be1a-0a2a45090019-d1558033d848-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:46:25 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so24328515e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 05:46:25 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4abea533a1esm189367275e9.1.2026.11.02.05.46.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 05:46:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793627185; x=1794231985; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=8bUDBLldb4ga8Z+0NByVHPMWmCV6UWEX+0YvHC8VfxI=;
        b=ucJH/tYBRmnDSlKdXEciU8Tv4D+tObji/O6ct8gCBM96DykTlKY+znyYm9KcVsxbt4
         4XhjZOfbdA1hDntDE6Enf03riWUIMTX/7E+yj0gPrS+54aNXdPv8Pr8xx9jES86fHWoG
         hpu8S8/sfwEwrmkLxQ7mZffeJGZWnSBc9wBlY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793627185; x=1794231985;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=8bUDBLldb4ga8Z+0NByVHPMWmCV6UWEX+0YvHC8VfxI=;
        b=al96AfpYzXq5Eq1cK6zoPHjWU2LyKqzQZsavHj2gmg/HrzuLr9PN4dL6h/ufs+qMWe
         WMIDM8JoBW1hhFMpQARLGmQUcmMKpGF1fBCumaL5WbN+D/p1orZakXPKtNR3avG8vaDl
         ZHTL2lfDTYdSy3w4VyUb4HcSrwVNMcOslGPTPtqMxj28uidyTtzPr5rxUFxRbgM7d3QN
         /QLuoatQQiUFuM5i5Iv/+kDXT2HrImp5lu73WfwFEEsxmS/0zUq5nBOQsZLeI8VBjuwu
         WF9x7C2PSxI/1I+6Y7TMcTbfxhU+hpINAGOnPV0yuFWICfmGYY3/gWRvTovDj6LS7aql
         J7rw==
X-Gm-Message-State: AFq9FYIOyeyKPzW4kohiBn+Xjlnk9T7CGWcYUF5QuAeHM7WM2mR2opZf
	MxGRqhF6dZStDEfQ5ynHay3f3kzRW4n+KnyAb8+0R4jtI3AksrBb5SmnPBLkfhwICJpYFTEOL0w
	KHVNnONc=
X-Gm-Gg: AYBFou0iwo85Us7PLuXj6FzqgEGXf0JMV6ImZTeOeRPQTV5hsst0VEw4XWmyqFONTDg
	fRgFiKLgpiAmnrpmRe+0jp1OL8qr1Tr9jsDrHCGSLjwz0krhCPKdquytFPeW7i6ZgSXdmuEUKzb
	SZXRTlDExncmV1BKxCGN8e+QDXvDVQNxkH9x/1ybf7gzrEmeOWZXhEpx9G1hF4c4YspA1pwjSdh
	TPsbSvovG3uFhuOaMY+Ne9XIG1b/rHf3X4dfoE7TkNZRjNSDES7PztE/Wh7bwrn5qcJGqteHNNX
	aIeMWi2J78uuzqoSrEnyXZRiiZlBSoKHKF3SN+WGXp/POnnSz5m1Dk5yIJ5ibKndxCwRmqOiGWe
	9cqJnmS0utvHmIxPivImi8GlBnAQAnm+Bbwe8cV5xR5wx8Vtug4Ld2ItFthGDBrGs5BzL7K+vUH
	XVJZwxcrm47Gb4lG+u8upOSaab8YXm554rMdI0TEL0o5HxX0zcoGfe9qz8NcVdTZLcNFzJyNZrL
	vPXbozhGUACMPUVfnOzafpzOWFmvyiuMDcJh7dRlMny6X57XqHRJUFBbcXfRGRSE/Ofuk5/D/d6
	+/nGfGI79iJuUoO8zxis5M6YCndgap6BKblqE0NAjsr3xv3lw5Uj3tiNICscujWnciBMGjTW0MD
	hFQk=
X-Received: by 2002:a05:600c:4714:b0:4a6:30c3:1114 with SMTP id 5b1f17b1804b1-4ac180f1c7amr231799815e9.12.1793627184603;
        Mon, 02 Nov 2026 05:46:24 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
Date: Mon,  2 Nov 2026 13:46:21 +0000
Message-Id: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793627185-BC8C9034-B545D655/10/78276251493
X-purgate-type: spam
X-purgate-size: 2970

Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
has been adjusted to state that the vNMI fields in vINTR are covered by the
TPR cleanbit.

Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
rather than writing into the VMCB directly.

In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
the reading of vmcb_get_general1_intercepts() to the point at which it is
used; tt does not need reading on the case that vNMIs are enabled.

Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/hvm/svm/intr.c | 9 ++++++---
 xen/arch/x86/hvm/svm/svm.c  | 8 ++++++--
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 4b0debfa9a2e..2224f1834741 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -30,12 +30,14 @@
 static void svm_inject_nmi(struct vcpu *v)
 {
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
-    u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
+    vintr_t vintr = vmcb_get_vintr(vmcb);
+    uint32_t general1_intercepts;
     intinfo_t event;
 
-    if ( vmcb->_vintr.fields.vnmi_enable )
+    if ( vintr.fields.vnmi_enable )
     {
-        vmcb->_vintr.fields.vnmi_pending = true;
+        vintr.fields.vnmi_pending = true;
+        vmcb_set_vintr(vmcb, vintr);
         return;
     }
 
@@ -51,6 +53,7 @@ static void svm_inject_nmi(struct vcpu *v)
      * SVM does not virtualise the NMI mask, so we emulate it by intercepting
      * the next IRET and blocking NMI injection until the intercept triggers.
      */
+    general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     vmcb_set_general1_intercepts(
         vmcb, general1_intercepts | GENERAL1_INTERCEPT_IRET);
 }
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 1628c5e0ae05..57779806bf6a 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -511,12 +511,16 @@ static void cf_check svm_set_interrupt_shadow(
 {
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     bool block_nmi = intr_shadow & HVM_INTR_SHADOW_NMI;
+    vintr_t vintr = vmcb_get_vintr(vmcb);
 
     vmcb->int_stat.intr_shadow =
         !!(intr_shadow & (HVM_INTR_SHADOW_MOV_SS|HVM_INTR_SHADOW_STI));
 
-    if ( vmcb->_vintr.fields.vnmi_enable )
-        vmcb->_vintr.fields.vnmi_blocking = block_nmi;
+    if ( vintr.fields.vnmi_enable )
+    {
+        vintr.fields.vnmi_blocking = block_nmi;
+        vmcb_set_vintr(vmcb, vintr);
+    }
     else
     {
         uint32_t gen1 = vmcb_get_general1_intercepts(vmcb);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:51:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:51:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468238.1677330 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsRY-0003MV-AR; Mon, 02 Nov 2026 13:51:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468238.1677330; Mon, 02 Nov 2026 13:51:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsRY-0003MN-5X; Mon, 02 Nov 2026 13:51:24 +0000
Received: by outflank-mailman (input) for mailman id 1468238;
 Mon, 02 Nov 2026 13:51:23 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNsRW-0003MH-W1
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:51:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsRW-007tNT-5A
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:51:22 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89556-e002-0a2a0a5209dd-0a2a450aea1a-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:51:22 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89559-f2d2-0a2a450a0019-d155dd31c911-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:51:22 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48df4e9d2d4so1573852f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 05:51:22 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71a4d3e9sm22625870f8f.6.2026.11.02.05.51.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 05:51:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793627481; x=1794232281; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=m3abWUGgjES+Fhpvzf9CBkNmPBnQe8AXH6oQ1FpZen0=;
        b=Qle14L4oYpxG1O+2pAEc7KYyU+kQRlycLxzq+6hSBP1lordb4LRod3iHmgAW6G13sJ
         XH8TfDvc8FbaTUVjUAJxZZpkd8SAH7qCov2akRWp7ko7sA9sn/rW38iMxk33a65hXxQO
         SYf//kfBQWtDivT2UDZvtwnu6tG8up4Klu2krGsj5Si/4BxIsR3kF3Xlw61RifPU8NXb
         M/1+tsfa8rIJXfKTVGGQSxRbLMxgKLJSG59a+3aJzsIRHMKyxZTx/ODKhdKWkauqhbWY
         9/DhbDFxNizEj7Jh1lS2VIuypuB/vHgpq3F9wqcDL977mF+cdzdsnavvWuxizALw83ij
         myKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793627481; x=1794232281;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=m3abWUGgjES+Fhpvzf9CBkNmPBnQe8AXH6oQ1FpZen0=;
        b=apabFzOHL2Cc5d3ydUlSywPt+DjBNGSa7TBjE7axNntl7GK93VML4oJE/b5NG4eCjr
         IRI0yqD++J7JLhFto+M6IPBOG9hul0exmLAFWspMZQkNOHtfh0ciN8rfNZeTf68+kbuv
         etqU453C0VOMIDmVEHRcz+mETySeGOO54+L+L08GMp1he5LDn4aA0llrMnTDQZp3SCWk
         1CjLtoxRux7N3KB3KrAvFYrnwDMr1ZnPgAaz+B8Qm31c2Gmgp8QcX0HIKpuHyuexLgTd
         MCetaqtAqn7b1+gcXyugGIdF7nP1p+X9Ax3BdFM//G8katFgCEWFC0FQX9/MSY9ccH42
         Sxiw==
X-Forwarded-Encrypted: i=1; AKwUvByhS34nieazGsyI01wg0Bjq6+GuNB2FCzyNrmPrQhmSwJKRmUHGsKBPctQypwiiBeXhPVRdZnx+Wy8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/5XaadvBTLz2tZGYt8FjKcUEQtM44IJOLXmCophGDkpT/omLXJ
	bYR7OpkeeFrR2L6ikt+r5Gn6iJotFg2uEEe60RuPhYkclA4zV/JOcJv2TWiT/xVK7w==
X-Gm-Gg: AYBFou3yaPs7yxPQN2SlS8WKfJHprpqaSOuQAjfo7sgDPYbpopg0OGCJdrWd/JYxJgO
	g1pVkozY9TwdzouaVzaXUqUOM+wPOzyvvFl3UD5lYqF3ZgHEBoQbWRKf44OzZInHH98RkQEBYsT
	QxfI61+9mAY66tFI1lQD94pRUG2o8HFk1qr8Sk2WljBZd/5wOVQ0dh7MYgzblTbHuPOMYGGa+Tc
	EX5cMJ0jRUFKcjNsROxynAcKrj3KB7V1+nJwJH9VRgUyzruvLvS1qRt9dDqaxOaLEApdJ+weK7o
	0pay6Wj5T2OthkKbz8tlZ3/eoA+O28eLzNzmlsHuV9WCnMVsHh/UTWZDHz7H50f1RQFQfZVXHqa
	UWsaO01ZqRebsIj2S4Y8iE5bQGzIB3TC3BOSa/zIl1TFq/lNBeouw6MMRh2r/vSoeWb6FUJM5r0
	3GUbWC7MgsXShej3m9zHdKUgSigZ4Eg6uTViEGKqaMNXuhh/lLq2Ij91wTZ7xKTCRR4KXEkzO9t
	iscO+1R85+mrUg0OmtOcoTU5f+OxUH9jPANMqoLi6W22jsQPHQtvMQB+hDM+7tKy1szeXQso6I9
	PYIVdSAmfkq6qgSnVy6zy1AtSl/k51UHjvgC3kui1NQYJc7Yq38xDHVtS42nS81Vw2DtZTNBEAC
	XiIVcJpvXbLLP2fmt
X-Received: by 2002:a05:6000:29d6:b0:48e:4300:c6d8 with SMTP id ffacd0b85a97d-48e6e2ff1b4mr14102729f8f.35.1793627481556;
        Mon, 02 Nov 2026 05:51:21 -0800 (PST)
Message-ID: <6648b7f8-bbb5-4231-9c30-ed7843a5d59a@suse.com>
Date: Mon, 2 Nov 2026 14:51:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793627482-58DC7CFC-05819794/10/78276251493
X-purgate-type: spam
X-purgate-size: 908

On 02.11.2026 14:46, Andrew Cooper wrote:
> Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
> has been adjusted to state that the vNMI fields in vINTR are covered by the
> TPR cleanbit.
> 
> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
> rather than writing into the VMCB directly.
> 
> In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
> the reading of vmcb_get_general1_intercepts() to the point at which it is
> used; tt does not need reading on the case that vNMIs are enabled.

Nit: s/tt/it/ ?

> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Assuming the first sentence of the description kind of implies trust into this
being the final word on the matter:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:54:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:54:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468244.1677338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsUT-0003s6-MZ; Mon, 02 Nov 2026 13:54:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468244.1677338; Mon, 02 Nov 2026 13:54:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsUT-0003rz-J0; Mon, 02 Nov 2026 13:54:25 +0000
Received: by outflank-mailman (input) for mailman id 1468244;
 Mon, 02 Nov 2026 13:54:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNsUS-0003rt-5V
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:54:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsUR-00H1cq-Ac
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:54:23 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8960c-2eae-0a2a0a5409dd-0a2a4503b800-2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:54:23 +0100
Received: from [40.93.196.49]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8960d-fae8-0a2a45030019-285dc431ac38-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:54:22 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BN9PR03MB6106.namprd03.prod.outlook.com (2603:10b6:408:11b::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 13:54:19 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 13:54:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=gWb3PcCGU3QEzCJW1zvaC1bj0r0EC4y2+diPcO44vYXhQTIVnazHxf9/WZCs+AiW+U4E7jeQdCS0OLwBPJNVtIkiy6KT/IS7/A5pxUcdHtH0fejUX3Zvf7cL7Y8a/WJrWFZFP1LJtqsUmn0nfrZ7zwRHdXM4hmVR2o1XMS4R1cK+C5+Sa+c2rx3h5mF0DUeWgDf2u6lBFK7kXxcfCdaeG65F5rpUdc1oDalwNZdtwV4u/7f6h+yL9TVt9mapSJxF74+9wu5yopPqzpcDuxk5g2VsmWjpqs37oyiO77zXKxGHpQtegIk2c2Ax/Fm0dkacdnAG0LFjUYWJ0NivDBFYJg==
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=M1rpYZ1UPcWyNKWyjXudOxlq658O+Fnrr2AjKxE5WfQ=;
 b=kNvmUDGwhKs+6EQxuwexgDTZsZ5ZDFYm4+dUN07L8HtZr7sD1tJiPf9NoyT0JeEKeHBqf3Kiiu2E15qSGuZNJD0d6JIQPeWSJHIR5IyEI2l17zfseaXZoW9ntzZvbKymxfeEwWKyS0xeZsFPgGEyxBVwWGEG9LqDeXdqFhiuWCGHajelLaVcsIh8JzpNRfMSJQl5GdH71MSubTQ5m7cLoJTHgtbeXOX9uWCotmyMO3GLCJ5OW6kmex4rH+YIj+a/lqS+TjHDVzcSTSgd6xsfmi4YF6/yYmb4SQmQ3BCQnMzy+w3QKxXqfiT4/xeYRB27GXtkMt9kjUuZrnxj50L2bg==
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=M1rpYZ1UPcWyNKWyjXudOxlq658O+Fnrr2AjKxE5WfQ=;
 b=KHTxBQgZzwkX862dW7Cy8RlOrI1O5jEUYouENdY2TFK8AddyflDmQDJ188GfZaYt9q44xw0o9cAgXftjanazsBYCjguP+UAqfvWbyXfj+r9Pi9FmxbEfRvNKPIzQMxYJcVBLrZVWpNHQpwbIzRMx1/l1BV3ogvjpV93E23hy3Os=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
Date: Mon, 2 Nov 2026 13:54:16 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO3P265CA0033.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:387::16) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BN9PR03MB6106:EE_
X-MS-Office365-Filtering-Correlation-Id: a50d207d-7fae-43a5-3bef-08df38e8caba
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|10067099003|18002099003|22082099003|56012099006|5023799004|11063799006|261021121427099003|261022075727099003|261022105027099003|261026121527099003|261026140227099003|261009223027099003|261028144727099003;
X-Microsoft-Antispam-Message-Info:
	0AO5P/jYuXEq3TFLsdQR8Rn3P8wchzQbSkYOrymbkvSCOfMZ9LEAQy8ZsL8hXOHI5+8PzfX1y0M5CzVfD/BNsaRt7M/aFkFZ6UcXypGsW6GztGcZTPxU0LxPwhAZ7f3ygK+qPUn/46+ZEyHTSoMy23++iZLZS5elomzxLAuSoDFJ74Q/Vo4QZk6Vls6t1JTsLYOz7TIQcvGHV5QY8JZyDe5SRyBintCfrhNRvNidXDbj/Q7rBHhVgGp1pI+ABJxiabI71xSbfUoMtuavglStQnm1pLs47kNDmWIjaJ1yREEphb3yJ8NHCuN/rNx9wNeu5f3FhGcliNCM0lxP8rSHGDM7LJd9SCoViXvqVOWhNhDdHDn/m3fupxH3ahn2SM/YHj/oL478M/MZkHK0K2iBMDxnMV8KaanVFv5um4/mQ/ysQXPHn0qCtxNRn9KgCZVn1kky9TgxlNiCa+82I0OHoTVSyaIvasKcIUZ0TZTliq+7KxXngKaOREtXmJHkAgc6TEiHySr6ICkjOFo/QuHOmxhEmeBGy2FiiTAkZG88GybUSQ6F+z/1AIQNswkPdxRxGJHweaTJigGTj0PwS44FiYo1tY/ggk0h3RwXvAqXOryXDiAR0Bg+JWERhUQswEvwehQP4UFonvFtmO8tgPpcT5JMZIiTfwG56jWPcrhzKc4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(10067099003)(18002099003)(22082099003)(56012099006)(5023799004)(11063799006)(261021121427099003)(261022075727099003)(261022105027099003)(261026121527099003)(261026140227099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bDJPTFNLTlpraWJNQ2lRZ05XOGVyUjc5TUtuNnRtdWs1VENVOFp5emRlbzBP?=
 =?utf-8?B?M1VPYU9SM2p1QlpGTEorNDBxN2hBelFxdS9aa1dzeFlQT3F3UmVraVhwazQx?=
 =?utf-8?B?V2YyOGxjR0dBQW1iYUV3SFBaZkZWNmI1cldIK2tsbXI1UWthR1lmWmlPSXN4?=
 =?utf-8?B?TjFhVktkRUVwQ25mVWh5OGcybXBQMGF5OFlBVVVEdVJvZ2JkL2NGUWxqaDl6?=
 =?utf-8?B?NW81VnlwZW1xR0tUWHR2aS9RaGIrZGxtSGZ3NXV2ZllTUytJK0ZBeUlHRXdx?=
 =?utf-8?B?Rm5UenEvU24ycXN5NXl5by9HWFB4TnViOUZXa2hiVWxQRUo5Y1JlTnVDQlRi?=
 =?utf-8?B?OHpEM1lzVjNjaGhYd3BiQytHQjJKR29SMGdlS3VVU0p5RTNCZCtyYVM5QVpI?=
 =?utf-8?B?TDcySHNRbHFrOGQ0Sm5kQmFQREIvaVdWNlp6Wk1PcWQwNk81RnI5TlVMOTBK?=
 =?utf-8?B?VVVxMnhCRGs3blpHVjRyRzQwcXJoTkVSUU9zTGVhcGRwTy9nWWRjT1lZNktN?=
 =?utf-8?B?SzAvaldNNHNrSGphWnl4cVA1UnphQzl4cUt5RXJ4blkzRHR0dmg1cFJMTzlt?=
 =?utf-8?B?UVJZWlViOHJ1YmVFd2dmTFJ0Rm9DbDZJVHBteFlWQnFiVTdTUWJiVEIvcW5D?=
 =?utf-8?B?U0dJUmV4T3Q5SmNmd3RwZU9oYWZiYkd6VEJ4SmkwWXZsbnZBdEg3S3phNmNE?=
 =?utf-8?B?U3g2aWV0MFpuMkpoZ216VlV0L3BiZXgzVkpQb3lZSjVpSDR3WmpMZkpwcVFO?=
 =?utf-8?B?STVnbGd4d3RCVFBCQy81YTN3dmIzWGVjcDdxbjFJVjFVa2lrZGdHSUVKSjFY?=
 =?utf-8?B?bkp4dWVVdW9pVmZ3ZEFFTDJtY3lhTi83Y04xRnJna1VqV0haemo1S3JmNDVt?=
 =?utf-8?B?TFJYNDYyVS8yOFd3OXdxM2RZUVg0ZllETjYwcENlVXJWcUtLY3ZFRlRJb2FI?=
 =?utf-8?B?eXBxYXB3NDRyb0kvamdPNEdDOFQ2UnZrZTJTdHZQWG5RcDFaMTAvRXRQVlZk?=
 =?utf-8?B?L3NCeThOejdoaVpYMzRRblk2c1YvS2JpSHVyL0VaNS93RlVRaTg4NEpqZlhK?=
 =?utf-8?B?TkN4elRaaGxuVlRpU3FFZXZhMmc5aHJHc0V4UWRFM0FRcHZCcmRzaEFkdjIy?=
 =?utf-8?B?ZVRMSSsyMnpmSitMcngyaGlPQnB4ZENSZjFwWVQ2VEltRkVRVnhCRW9xQVdY?=
 =?utf-8?B?NmdLNURUMHlaelQzQ2IzTjR2cWQrT1RkNFF4eHY1THhRdXlPQ3FtMU1NQWhh?=
 =?utf-8?B?SXEwY3plOTRHYmNCc2g5NGZDdXFpc0ZiaWR0U3BMeW5oZ3FaTVoxS2RqVXps?=
 =?utf-8?B?RERvQWFvbmdLZnc5ZHMwSnZmNjQ2NklXOXJQMmhQeXVXSHRFVlFkNG8xaFlX?=
 =?utf-8?B?SkVQdHFobTZjWDlaeWNJTXdISjdlOUg2alVQN3Vkd3hnZGwrMzhMNC9OUEVE?=
 =?utf-8?B?ZG1TTTRrbnUzMGxPa0svSDVSS21kKyt5alBFSVNhTlFDYkxUbDYrOFF6WnMy?=
 =?utf-8?B?eGRXcDk2WHoycHluNnM0UDdKVjVlUGZLdnJhQkNMcUJpZ0dkdHBad2s4dEJL?=
 =?utf-8?B?UVJaK215YTJ2amRhRDB3M2xheEF4YmdlRWZjK3VMYnlwVXpldGZrSlNQbGVa?=
 =?utf-8?B?OHg1WnlXRUxOdlN2V2JhS1hrN2M4RW4vcWtBYW9WMjQ5OUZWeEpSc25KaUUx?=
 =?utf-8?B?OTk4d29Eeis3VFMzRGZNWU5UQmNlRnkxem1BT3F5QVpnTlR5ZnlOQk5zYTZN?=
 =?utf-8?B?YXVFQjJXWXBiVzVXK2Q2MzZ2T3dUZ1VkNUtvV2xkQTUvblRHMmlEWEtHMHJN?=
 =?utf-8?B?bHFybjMvNG5DcVhXMGc5MzNheExiUTZ3QmM1dUN1ck5jTllPOVBIdjQyMXFN?=
 =?utf-8?B?SkZTU20rL1RxOUxQM05MSURFVVJCcWFtZmtiNkdkaUk0QTdQTkhxVlNnSDVI?=
 =?utf-8?B?a0V3OGh0WHM5S2l5U3J4cDJOcFhJWHFOMHg2bHJERTZHUkxIRTRnREZLZHVt?=
 =?utf-8?B?c001OXJrakVUWnAram5teWswK3lJMEk2Uk9PWGUzMm1zZFJyVDl4WXhqMzNR?=
 =?utf-8?B?eVJKbllzbmxmUFF5SzR1Y2xTTmVCbjRmZUsyeFhmVW1oV21EQ0Rva3A3ckNh?=
 =?utf-8?B?UlNxTExVNjNjVFRGZWxNVGhleWM3WUxMSzJEK3YyRmdPcTVGUVN0MFpNcEs5?=
 =?utf-8?B?V3hUa05OT2lYZXJ6akRnbHpycVIvMjNHYXRpTUk3U0gxQWE4N0p0dVJKL3Rq?=
 =?utf-8?B?d2VLcUhXQkRSY0VNdkYzMitsZlJKT0V3MnhWck5zQjhVeElVZGlSTkdxeFNB?=
 =?utf-8?B?V1FKZVF5Q2VrMTdSUEFWMnVyeG9mY0dtellua0FlY3lDY2JqaGM1Zz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a50d207d-7fae-43a5-3bef-08df38e8caba
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 13:54:19.5486
 (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: ipeiw2g9OXiEvgB4qVKrGCNHezR+sinYldFGGC6b+Cq6asF+hgnADU70ObzGXhr9PrLHwyTtK/g8DqNzfFKSWAZ7/J3aNfeZMUaNVk9zLXo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR03MB6106
X-purgate-ID: tlsNG-33051d/1793627663-76AF94E9-4CB56117/10/78276251493
X-purgate-type: spam
X-purgate-size: 1604

On 02/11/2026 1:46 pm, Andrew Cooper wrote:
> Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
> has been adjusted to state that the vNMI fields in vINTR are covered by the
> TPR cleanbit.
>
> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
> rather than writing into the VMCB directly.
>
> In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
> the reading of vmcb_get_general1_intercepts() to the point at which it is
> used; tt does not need reading on the case that vNMIs are enabled.
>
> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monné <roger@xenproject.org>
> CC: Teddy Astie <teddy.astie@vates.tech>
> CC: Jason Andryuk <jason.andryuk@amd.com>

I forgot the extra comment.  This bug is hidden by:

    /* The exit may have updated the TPR: reflect this in the hardware
vtpr */
    intr = vmcb_get_vintr(vmcb);
    intr.fields.tpr =
        (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
    vmcb_set_vintr(vmcb, intr);
}

at the very end of the vmexit handler which unconditionally writes vINTR
and hits the cleanbit.

This is an absurd codepath.  SVM has virtualised CR8 since the very
beginning, and put in CR8_LEGACY for Windows to use even in 32bit mode,
so the only path modifying TPR is a non-accelerated write to APIC_TPR. 
 That path can be updated to modify vINTR, and this logic dropped.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:57:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:57:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468253.1677347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsXp-0004V2-7V; Mon, 02 Nov 2026 13:57:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468253.1677347; Mon, 02 Nov 2026 13:57:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsXp-0004Uv-4c; Mon, 02 Nov 2026 13:57:53 +0000
Received: by outflank-mailman (input) for mailman id 1468253;
 Mon, 02 Nov 2026 13:57:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xNsXn-0004U5-CH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:57:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsXm-0006aT-Kq
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:57:50 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6ae896d4-e002-0a2a0a5209dd-0a2a4507afb4-38
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:57:50 +0100
Received: from [52.101.66.112]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6ae896de-b4ea-0a2a45070019-34654270d32c-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 14:57:50 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by AMBPR03MB11430.eurprd03.prod.outlook.com (2603:10a6:20b:76c::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 13:57:48 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 13:57:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=dbhiX1EsJBPku2oPFni2FnMPM/Y5GJwZPievaqYCjKWLj56wR8EDNkx5A6jypH+H2MYyYzI9X2hTqEH86PFEGLRI2botCXwk1hXNwyqRMp1A3gBsIDOX4CvoQ0pdUbI4qeHBFtI3LC8EMOC5rkkT8S5b/kS0yqPdBXlyucDdYMTUOFewFkg5tc2bJHsLZCoN99KMUsYXYoc4qHPXlxHwQvfoJI/TmN4Yto5uLb7GqCUvXbPWYqvCTeiCPEqogdlAV3e8K9EaG4RkDdhVro4py70NZyplbsjubGzp4NLO/wlEe+orsHlVVgUpKfmBp1agmncYd48q/vq7CCT/FQqKpw==
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=vaNew0/Wvxkjveg7fokiXz9DmrXpF7MWcx8jfBrqunY=;
 b=xPI/Q4hUfvqPj+19JRFRLWH1Hsxr0PgZGrHeUkXwTELEV7YNGSZMrxaB3cZGUD7+0ue+9q1wgovhLWxHLeiQAYCeiKp3jv6lgORGA/yWy2mHZ88NB9NeIERLlSdWkC4kS48xsZ8XmwLsohUHGogFLAhGJ2FXz2282NWJOpc7ToYQRmYDhVSsg+W4nEaGFRkRscn9ARFH2Mdw42z2VhfDTa9DAIxZVfdR4LJzmnz3d3QNE07+Cu5ixzJ5Ga+l0WI3lyukpGvO7N8tYeCyM0zLl5Oe+IACYX4DOwvXiwUUMPcITK/Fd4a6Ssjz17ek2IEdJt8USCdUp1QJfkD4sQRg8Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vaNew0/Wvxkjveg7fokiXz9DmrXpF7MWcx8jfBrqunY=;
 b=Zr9juM2qNGq1cCvcw728DqgL6imwehyhHdWjRvwyUsOMDPqPNg/7/RWDBpcxvyRrHJhQTo5ogS+VeU1d4JgEbE9t8GGk9sNk4AoLV4/y73k5scjSdqRkPputOkKKQrtu+IAgh1LnRq266SfrPfdSW78CAwV/fInlO2LQAHsa/cUYEDZnONtxd96ekVJQeMsVZ9EhwA6tC/ALu/6Mtj+rP5gYOYKRG0+v0+ompGD2hwK8fXlx0MA82xgj9bCw34sAlCFQATXlOQdEmljkjNPZ8ECrzpQs40e921kfAH9FtXVHZaUEDp5R/eYNAojoNNy75Z0bAo31DuImdScEQY6RDA==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Community Manager
	<community.manager@xenproject.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Topic: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Index: AQHdXK6sWnTwG0FjdEmPa5OC537fErcTDN4AgAfUFACAAAXEAIAABDSA
Date: Mon, 2 Nov 2026 13:57:48 +0000
Message-ID: <f9539ce5-a558-4e57-971b-7756a50401e8@epam.com>
References: <cover.1792072426.git.mykyta_poturai@epam.com>
 <103b10d012cc291906025045a2da1ce728f0bffd.1792072426.git.mykyta_poturai@epam.com>
 <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
 <8d339d8d-ea7f-452b-8720-164dc9244079@epam.com>
 <aab7c1d8-fa64-456c-b37a-162ab3e2ae1e@suse.com>
In-Reply-To: <aab7c1d8-fa64-456c-b37a-162ab3e2ae1e@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|AMBPR03MB11430:EE_
x-ms-office365-filtering-correlation-id: 6fd2a4a0-91f6-4a6a-fe34-08df38e9475e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|18002099003|22082099003|38070700021|56012099006|4143699003|11063799006|5023799004|261028144727099003|261026121527099003|261026140227099003|261021121427099003|261022105027099003|10067099003|6133799003;
x-microsoft-antispam-message-info:
 xecCC/k+NCNGlUTHUmz4MR5quE8ffLVUc2wdzqxZh5wXjOijZ36PVHASUZqzo1tuH/tWg0Zo/7BdyKERudyx1a8MMl0IHmM4Ay6arF5E9Poczg6IFD+vLl2z5n6rAjFBdgoyYw/WSHmycYl8qitnYCRjwl6Fg2yzZqxlJDeoD5jiZzaHKtEr9J+H1coBwfxuLOXh81TFeZ4KhcM52Mnt6NzFvCBFY4G/HYuwReUbK4PbVuTbcBl2KiObZxOmx9Z4e6eYlMSZMK0ZtMaiFWFg0Tgm9SsOfli1jRDPvvD7bHf909xJVURtmGlhOVXHg/12NuUSJ1IjuHqzE4ubPi2WjU3C2BU1y20C0b9F7XC2RPgm4oMGZl0XYI5aX5DyhliZnD49Oz4nSzfHhZnN8OfgXJRAXiPR9uluOTUdv/KnnyybwDBxKtUmpY42KP18zryvddeVn7fv0hqhG55Su+74ySGq1o3QD0bULr3rb2VZSXE0SU6lhcRXyFtct9+/b2R3k8pvtJCCZ4txdhms87+xvw7HOjSltbaMGGFh+7iz8tXjfXtpBZGRlD4loBhQY4c2b9ORRtnpYJRE02JYsHdPT9GjdvicCpFZLCOHluhWLqdxD4hkWTGNTHxmH6uyJ3OFW0r3GoJor2KAH2QF5aLAk+Wss9QKL2YqoHr3KjeUwgRCyun+9GaSHL1Ty8/k5FwDR9hyPDqdX2Dg4FUUmZaJlq1Y3UftU3G2sl9eNagxoPs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(18002099003)(22082099003)(38070700021)(56012099006)(4143699003)(11063799006)(5023799004)(261028144727099003)(261026121527099003)(261026140227099003)(261021121427099003)(261022105027099003)(10067099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?cnJRMDV1WlhCVFdrZGRZWFNIQ1RPeUhkNkN5ZFRwRDJ0MGpCNEJRVml3SmhI?=
 =?utf-8?B?N3ViaDc4Z25JcEpyNkFZNzhvZVJXZU9yNWNMMHVXMDJlZStlVk0yUlkzL3Fa?=
 =?utf-8?B?SG95bEpsTWNROUtQczkyaHg3akprR0laeUp5ZmRpZG9Db1pvNFNyZU1xS1Zx?=
 =?utf-8?B?OURRcWVJd3M0aWFPOWsrR29ZdFJ0RUJJaUtGWUUxUGUzSENkMks5cnd0N1ly?=
 =?utf-8?B?aUlTQ09keFVjL2NRV2NEU2Ivcno3ZEpwbUdWWllYQkdJTzFYakpSeDFYeHBN?=
 =?utf-8?B?WmpPd0hIVmRyMjJ3OWg3ZzlIR1hwL3VYaGFsdlFHQ00rQUkraElhWmtOU09y?=
 =?utf-8?B?TFphZG5EUFJQbmsvSnZDc0lEVFU3cHlnWEtBa1pkeXhYSGR1NkRSenl2ZkdM?=
 =?utf-8?B?ZGNXR09rOHNZWUlVR3MxdmFhWjdtYjgwM0RmU3VHYy9naitBTk9yMVRKOGJS?=
 =?utf-8?B?M3JkckpPSklHVWhQOXRBMC8vYkh4dXRYcGljKzEyeFc2cXZibVRWN3lVU0d2?=
 =?utf-8?B?SmJnMGtiWUFKaDNSR2pidGVYZUpVNWRzU01ERlhOeVJnY0NXZjdTcDdyaEw0?=
 =?utf-8?B?OXpEOFpsaUhlK2pWT1J6RlRxaFJaUk44d0FiclVLRmdVd2tyTkc5SEcxOXJR?=
 =?utf-8?B?RHVuNW5MU2hKMDg3b2FYVDk5d0YweUdvcUxnK3MraS92NEY3bmt5c0VWNEhP?=
 =?utf-8?B?VmRINnZZUVF4a2tqc0lpeWJFV2JWL1ZmSGhGS0Z6K2pJSWpXOGlpSG1WOWlm?=
 =?utf-8?B?cytNK2lGcjloZGRwaXBZUGFDSWFRbGxKQUFaOW5wYlZNOURITkE5clNmWEo3?=
 =?utf-8?B?VFNIbVFVVTdoKzhsMksrNzVYYVdxeElsaEhoT0ZncUJMM0pqVTREbS91aTc0?=
 =?utf-8?B?MzVBNUtRWUxRTmZ1RVFPUGEwWVU2SnJpbk54dzVSNkJmbjg2d0o4ZVdTZXlj?=
 =?utf-8?B?bTBRQVZYeVlBYmg2Q1VWbjl1Y0RxMmMwT1VEOW14K2d2UkRCRk83RndnZkNB?=
 =?utf-8?B?Z1NmVHBoT3VtVFc2czBXTHRtVE44REI3NVJFMjhRTEVaVjdGS3Njbk9uNWRL?=
 =?utf-8?B?MDQyMXVyR3dSdUR4cWVCOXRYSGRNdWpycUlJRTZCZ3BuMk9uZStqZDRsdDJw?=
 =?utf-8?B?QnAxanhzMzQwWkx2R0NxcW9uUUZ0NjNUTTRUMGxxZWxpV2gyN29nVERCV0dm?=
 =?utf-8?B?K1hSSWdPamViSzlFdjF3MHRnZDcxVER2UWFnWGNkY0tzR3FCRy9zbnNQeVgx?=
 =?utf-8?B?dnp3eTUwdFA0Q2ZjbFg5ZE9zMTkwOEF0YVJpNHJvUzYxVDRWdGJNcW9Sc2d6?=
 =?utf-8?B?OUNzWUVlWWo1NldzbnA2aG0yWlZZVU5FODJtaEJyT29oeU5EYk1kVTY3M2k1?=
 =?utf-8?B?SEg4ZTRZcnpVU3pweUNycWtScFNlUi9pbHhhZUVIWHBpVU96aEovY0RjcEhx?=
 =?utf-8?B?MGVpOFRCMHBwb0xJaEhpSWxRR2k5bkw1RnRlbnFOWVA5UHIyeHMrMGh6SVg3?=
 =?utf-8?B?V2lxS1FxUFkzSDU0Vks4aWRWalVLYUhTNW9PNjR5Y3hUZ1hGeHZzSlpXVEtB?=
 =?utf-8?B?bWF3VUoyRFVBelB4YWtwNjU2cTE2S1BLQ0Uzc1QrZ0k1eTNLVlNSOGRyUDJY?=
 =?utf-8?B?b2ZOUzcwZ0NDWUlOZXY4elBodW5FT2VTWC9iNGMwT1p4QWIwL3JQTkxESURX?=
 =?utf-8?B?MCt5cnI0UEh2OS9Hd0NBQllFQVN4cWVIa0xuMWRTcFlCdzBId2Rrcms3VjFJ?=
 =?utf-8?B?K25yRkEzdGpOa3JwMEQ5WGF1MkdMc0RxT3dyVmdPK292YjY2NExqSXBVSGJO?=
 =?utf-8?B?NWFEK1A4ZEpEWE1UUnhMRnFESDI3akVsRkgza21aQWlOWGdNcU9rbDY5bE5n?=
 =?utf-8?B?V2ZLd044YUtob1ZINmlCVElydDVwdXFsd2hYZGZVMy9taUdyVmpOcFNkcXJy?=
 =?utf-8?B?Ykp6cW5VUlN3WEVpSmdDOGhVWHZaN3FycC8vcnRwRjY3S2dEK1BPbTloMDh2?=
 =?utf-8?B?QWwzYkRlMGh2aFlmVUVxU3RGTXgvUTI5bGNncDc1R3ZzNFhFMkp2YlVPdHJZ?=
 =?utf-8?B?T0VJZTY3b1hSVXJxMmtHdWZISTBjNWhKeTkyZGFKcDl5TWRMKzFOODg5WWMx?=
 =?utf-8?B?eEdacWtvdStPanlydHF1ODVvNGx0blNMQ2lRZWNlV0FCNjJRR0dwRVVXTUhn?=
 =?utf-8?B?aDJIM3N3RkRTSjdqdEFDUUVmZE1xbk5BUitsOWZsRFI0bmtHYTl4L1V2V3RW?=
 =?utf-8?B?cmFWeWV5akRjWm5JQ0JORnJpNS9OamVnYURET0dJMDlhUy8yYmtHZTNoU1B6?=
 =?utf-8?B?L3FZOXBJRUJyZTBQUTlNMkwwd0ZJb3BkZ05DVTRVMnlUOUsrTE1HQT09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <F1FA026F8F2ACE4DA3DC455DB5A0BFBA@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6fd2a4a0-91f6-4a6a-fe34-08df38e9475e
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 13:57:48.5706
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: uUJgSspejinXmNrFhWG5sscitq86YKzgta6LiMG4X2aIhIcl9WGC8tZVPYz43goBZxH1EqhqHlHaW337PB6vWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR03MB11430
X-purgate-ID: tlsNG-ef75cf/1793627870-A6EDEAE4-CED55691/0/0
X-purgate-type: clean
X-purgate-size: 3100

DQoNCk9uIDExLzIvMjYgMzo0MiBQTSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDAyLjExLjIw
MjYgMTQ6MjIsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KPj4gT24gMTAvMjgvMjYgMzo0OSBQTSwg
SmFuIEJldWxpY2ggd3JvdGU6DQo+Pj4gT24gMTUuMTAuMjAyNiAxNjowOCwgTXlreXRhIFBvdHVy
YWkgd3JvdGU6DQo+Pj4+IEBAIC0xMzksNiArMTQyLDQ3IEBAIGNvbnN0IHVuc2lnbmVkIGxvbmcg
KnBjaV9nZXRfcm9fbWFwKHUxNiBzZWcpDQo+Pj4+ICAgICAgICByZXR1cm4gcHNlZyA/IHBzZWct
PnJvX21hcCA6IE5VTEw7DQo+Pj4+ICAgIH0NCj4+Pj4NCj4+Pj4gKy8qDQo+Pj4+ICsgKiBNYXJr
aW5nIGlzIHNlcmlhbGlzZWQgYnkgdGhlIGhhcmR3YXJlIGRvbWFpbidzIHBjaV9sb2NrLCB3aGlj
aCB0aGUgU1ItSU9WDQo+Pj4+ICsgKiBjb250cm9sIHJlZ2lzdGVyIHdyaXRlIGhhbmRsZXIgaG9s
ZHM7IHVubWFya2luZyBvbmx5IGNsZWFycyBhIGJpdC4NCj4+Pj4gKyAqLw0KPj4+DQo+Pj4gV2hh
dCBhYm91dCBwY2lfdmZfc2V0dXBfcGVuZGluZygpPyBIb3cncyB0aGF0ICh0byBiZSkgc2VyaWFs
aXplZCBhZ2FpbiBtYXJraW5nDQo+Pj4gYW5kIHVubWFya2luZz8NCj4+Pg0KPj4gSXQgaXNuJ3Qu
IFRoZSB0ZXN0IHJ1bnMgYWhlYWQgb2YgYW55IGxvY2sgYmVjYXVzZSBhZGRpbmcgdGhlIFZGIHRh
a2VzIHRoZW0uDQo+Pg0KPj4gV2UgY291bGQgcHV0IGl0IHVuZGVyIHRoZSBoYXJkd2FyZSBkb21h
aW4ncyBwY2lfbG9jaywgd2hpY2ggaXMgd2hhdA0KPj4gY29udHJvbF93cml0ZSgpIGhvbGRzIGZv
ciBtYXJraW5nIGFuZCB1bm1hcmtpbmcsIGJ1dCBpdCB3b3VsZCBoYXZlIHRvIGJlDQo+PiBkcm9w
cGVkIGJlZm9yZSB2cGNpX3NyaW92X2FkZF92ZigpIGFueXdheTogcGNpX2FkZF9kZXZpY2UoKSB0
YWtlcyBwY2lkZXZzX2xvY2ssDQo+PiBhbmQgdGhlIG9yZGVyIGlzIHBjaWRldnNfbG9jayB0aGVu
IHBjaV9sb2NrLiBTbyB0aGUgdGVzdCBhbmQgdGhlIGFkZCBjYW4ndCBiZQ0KPj4gbWFkZSBhdG9t
aWMgd2l0aCB0aGUgbG9ja3Mgd2UgaGF2ZS4gSXMgdGhlIGxvY2sgd29ydGggdGFraW5nIGp1c3Qg
Zm9yIHRoZSBiaXQNCj4+IHRlc3Q/DQo+IA0KPiBObywgc3VjaCBsb2NraW5nIHdvdWxkIG1ha2Ug
c2Vuc2Ugb25seSB3aGVuIGhlbGQgZnJvbSBiZWZvcmUgdGhlIHRlc3QgdW50aWwNCj4gYWZ0ZXIg
dGhlIHJlc3VsdCB3YXMgYWN0dWFsbHkgYWN0ZWQgdXBvbiAoaW4gdGhlIGNhc2UgaGVyZTogdGhl
IGJpdCB3YXMNCj4gY2xlYXJlZCBieSBwY2lfdmZfc2V0dXBfZW5kKCkpLg0KPiANCj4gcGNpZGV2
c19sb2NrIHZzIGQtPnBjaV9sb2NrIHdvdWxkbid0IHJlYWxseSBiZSBhbiBpc3N1ZSBoZXJlLCB0
aG91Z2g6IFRoZQ0KPiBmb3JtZXIgaXMgcmVjdXJzaXZlLCBzbyB5b3UgY291bGQgYWNxdWlyZSBh
aGVhZCBvZiBhY3F1aXJpbmcgZC0+cGNpX2xvY2suDQo+IFRoZSAiaW5uZXIiIGFjcXVpcmUgaW4g
cGNpX2FkZF9kZXZpY2UoKSB3b3VsZCB0aGVuIGJlIGxpdHRsZSBtb3JlIHRoYW4gYQ0KPiBuby1v
cC4gKE9mIGNvdXJzZSBwcm9wZXIgY29tbWVudGFyeSB3b3VsZCBuZWVkIGFkZGluZyBpZiBzdWNo
IGFuIGFwcHJvYWNoDQo+IHdhcyB0YWtlbi4pDQo+IA0KDQpNaXNzZWQgdGhhdCBpdCB3YXMgcmVj
dXJzaXZlIHNvbWVob3csIHNvIHllcywgY2hlY2tpbmcgdW5kZXIgdGhlIGxvY2sgaXMgY2xlYXJs
eQ0KYmV0dGVyLiBXaWxsIGRvIHRoaXMgaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KPj4gVGhlIG9u
bHkgdGhpbmcgSSBjYW4gc2VlIGFjdHVhbGx5IG1pc2ZpcmluZyBpcyB2Zl9zZXR1cF9tYXA6IHh2
emFsbG9jX2FycmF5KCkNCj4+IHplcm9lcyBpdCBhbmQgdGhlIHBvaW50ZXIgc3RvcmUgcHVibGlz
aGVzIGl0IHdpdGggbm90aGluZyBpbiBiZXR3ZWVuLCBzbyBhDQo+PiByZWFkZXIgY2FuIHRoZW9y
ZXRpY2FsbHkgc2VlIHRoZSBwb2ludGVyIGFoZWFkIG9mIHRoZSB6ZXJvaW5nIGFuZCB0ZXN0IGFu
DQo+PiB1bmluaXRpYWxpc2VkIGJpdC4gU2hvdWxkIHdlIHJlYWxsb2NhdGUgaXQgaW4gYWxsb2Nf
cHNlZygpLCBvciBqdXN0IGFkZCBhIG1lbW9yeSBiYXJyaWVyPw0KPiANCj4gSG1tLCBpcyB0aGlz
IHJlYWxseSB0aGUgb25seSBpc3N1ZT8gV2hhdCBpZiB0d28gcmFjaW5nIHBjaV92Zl9zZXR1cF9w
ZW5kaW5nKCkNCj4gYm90aCB5aWVsZCB0cnVlPyBUaGVuIHdlJ2QgZW5kIHVwIHdpdGggdHdvIGNv
bXBldGluZyB2cGNpX3NyaW92X2FkZF92ZigpLg0KPiANCj4gSmFuDQo=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 13:59:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 13:59:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468258.1677357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsZe-0005L9-J1; Mon, 02 Nov 2026 13:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468258.1677357; Mon, 02 Nov 2026 13:59:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsZe-0005L2-Et; Mon, 02 Nov 2026 13:59:46 +0000
Received: by outflank-mailman (input) for mailman id 1468258;
 Mon, 02 Nov 2026 13:59:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger@xenproject.org>) id 1xNsZd-0005Kw-1a
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 13:59:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNsZc-0000000AmEt-39Vc;
 Mon, 02 Nov 2026 13:59:44 +0000
Received: from 224.pool85-54-217.dynamic.orange.es ([85.54.217.224]
 helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNsZc-0000000DAWW-1fb4;
 Mon, 02 Nov 2026 13:59:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=In-Reply-To:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date;
	bh=tHzPXd9P5YZkxVQWknrdO+yhXdrtUvMTS6Bm1NzJmJw=; b=t8+wXR8CytVggqMTKjoMlIf6uR
	qg+wgPRxg3MnLr2MCVII02xogQd81KF6t0DYn6EfQ5BgiRZOfo3aG8xQA39e7ABVyLltPZXb7ZH1+
	j3uPV7XvqCvR6OxRJC5tAnvDhoFIQ+ynwTkvQs5daMnSuRWoY7IBKK/PO1eZ9uOUIN1U=;
Date: Mon, 2 Nov 2026 14:59:38 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 1/2] x86/cpu: keep cached TSC_AUX state coherent with
 hardware
Message-ID: <auiXSv0I3mU8NjpV@Mac.lan>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-2-roger@xenproject.org>
 <7a2732d9-8d3c-4e7e-b0b0-1d4ba96bf6ea@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <7a2732d9-8d3c-4e7e-b0b0-1d4ba96bf6ea@citrix.com>

On Mon, Nov 02, 2026 at 11:51:32AM +0000, Andrew Cooper wrote:
> On 30/10/2026 1:24 pm, Roger Pau Monne wrote:
> > On CPU bringup don't assume that TSC_AUX is 0, write 0 to it to ensure the
> > per-CPU cached state matches the hardware.  Also propagate the cached value
> > on resume from suspend, in case the register value has been reset during
> > suspension.
> >
> > Fixes: cc0e45db2779 ("x86/pv: Avoid leaking other guests' MSR_TSC_AUX values into PV context")
> > Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> > ---
> >  xen/arch/x86/acpi/power.c | 3 +++
> >  xen/arch/x86/cpu/common.c | 5 +++++
> >  2 files changed, 8 insertions(+)
> >
> > diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
> > index 3452650a61d5..464846e73727 100644
> > --- a/xen/arch/x86/acpi/power.c
> > +++ b/xen/arch/x86/acpi/power.c
> > @@ -279,6 +279,9 @@ static int enter_state(u32 state)
> >          ci->last_spec_ctrl = default_xen_spec_ctrl;
> >      }
> >  
> > +    if ( cpu_has_msr_tsc_aux )
> > +        wrmsrns(MSR_TSC_AUX, this_cpu(tsc_aux));
> > +
> 
> This wants to be later, with percpu_traps_init().   It is not critical
> state to restore this early.

I've adjust it.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:03:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:03:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468268.1677368 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNscs-0006wd-0j; Mon, 02 Nov 2026 14:03:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468268.1677368; Mon, 02 Nov 2026 14:03:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNscr-0006wW-T6; Mon, 02 Nov 2026 14:03:05 +0000
Received: by outflank-mailman (input) for mailman id 1468268;
 Mon, 02 Nov 2026 14:03:03 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xNscp-0006wQ-SZ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:03:03 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xNscp-0000000AmNM-3YJj
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:03:03 +0000
Received: from mail-lj1-f171.google.com ([209.85.208.171])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xNscp-0000000DCRs-3Hwm
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:03:03 +0000
Received: by mail-lj1-f171.google.com with SMTP id
 38308e7fff4ca-3aca0bf7fd0so25180681fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 06:03:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:Cc
	:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version;
	bh=wCXwL03Q1KbJgBXNr6Cbs3Vs/v9x3/QUWkx8s4hLcUQ=; b=aphyOUJDuj4ZcmFyk36aStoULb
	LDMv+/CHB6Gpf8ts9crAgZ4h0b/jirxZOkHWdbR0JOGA0JJU70xaTOY7OEuihXddMqS1pqIRX9bQo
	rq6DnQ04/DA6SmrEMVtcq4F+0d3vkFIv9/D63XhTQ+9gkVmKom4UmqZle/+H7qAZ1lIM=;
X-Forwarded-Encrypted: i=1; AKwUvByjVejrQ5fiIi+w5JAm934j7Q5prXuOv26K2noiVHoUi6wL8Z4XK7JEsiC/rjrQLfYsfT1aMtHFM18=@lists.xenproject.org
X-Gm-Message-State: APuU4Z86anCPYiREfv+TaPXQA4Ss/P/042DvcTe4SPbzA8ZJcI57NMLc
	LHW8+PPwsLpkWbWEXIIYcJimf8Qy+WSSrjGCHPjIM5yJTL+2wKSrf362x6WjLSVec85yF5ibVXZ
	EPB7Od56+E2soXTmpTk/BEQF5Tvi4F+g=
X-Received: by 2002:a2e:b896:0:b0:3ab:f43:a3ca with SMTP id
 38308e7fff4ca-3acb7a80dcbmr23174871fa.16.1793628182720; Mon, 02 Nov 2026
 06:03:02 -0800 (PST)
MIME-Version: 1.0
References: <20261028-asi-hvm-v5-0-13b908e0df0b@xenproject.org>
 <20261028-asi-hvm-v5-2-13b908e0df0b@xenproject.org> <f29b4d27-650e-4463-a0bb-785ce507c644@suse.com>
 <CAFLBxZaXHuaMuHTPKgx-vw_AH8iX+jvh2t2BGsGYFR2z5hsPiQ@mail.gmail.com> <eb3c6304-f8af-4b93-be20-3db914e1ac6a@suse.com>
In-Reply-To: <eb3c6304-f8af-4b93-be20-3db914e1ac6a@suse.com>
From: George Dunlap <gwd@xenproject.org>
Date: Mon, 2 Nov 2026 14:02:48 +0000
X-Gmail-Original-Message-ID: <CAFLBxZZ-oorO7vXHONK0b7Yq_ZwHXEpBh8jphb-GaU9C8rT11Q@mail.gmail.com>
X-Gm-Features: AclHuK8RnItcqa2VSedy3P4ENbj78xlLTRO4MSeS5WaHp9MM8cNy3411dj9I8ek
Message-ID: <CAFLBxZZ-oorO7vXHONK0b7Yq_ZwHXEpBh8jphb-GaU9C8rT11Q@mail.gmail.com>
Subject: Re: [PATCH v5 02/45] x86/mm: refuse to promote an L4 while the domain
 has no per-domain L3
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
	Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Nov 2, 2026 at 9:50=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 30.10.2026 18:11, George Dunlap wrote:
> > On Thu, Oct 29, 2026 at 7:47=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >> Independent of that, how about pulling hvm_domain_initialise()'s
> >> create_perdomain_mapping() up into arch_domain_create() instead of the
> >> code additions you do?
> >
> > So, let's see if we can solve it "properly".  Constraints:
> >
> > - Eventually, not all domains will have a domain-wide L3; some will
> > only have per-vCPU L3s.
> >
> > - init_xen_l4_slots needs a domain always, but only needs a vcpu to
> > get the L3 of vcpu_pt domains.
> >
> > - PV vcpu_pt domains don't need an L3 installed after
> > init_xen_l4_slots; they need to run on a clone of the L4 anyway.
> >
> > So by the end of the series, we could arrange it like this:
> >
> > non-vcpu_pt domains always allocate d->arch.l3_perdomain in
> > arch_domain_create.  vcpu_pt domains always allocate
> > v->arch.l3_perdomain in arch_vcpu_create.
> >
> > Have __init_xen_l4_slots() take a domain and an L3; if the L3 is NULL,
> > leave the perdomain slot empty.
> >
> > Have init_xen_l4_slots() take a vcpu.  BUG_ON(is_hvm_vcpu(v) &&
> > v->arch.asi.vcpu_pt && !v->arch.l3_perdomain), then pass the
> > appropriate l3 into __init_xen_l4_slots().
> >
> > Have init_xen_l4_slots_pv() take a domain, and always pass the domain
> > and d->arch.l3_perdomain to __init_xen_l4_slots.  This will be NULL
> > for PV vcpu_pt domains, but that's fine.
> >
> > Then promote_l4_table() calls init_xen_l4_slots_pv() with a domain,
> > and loses both the checks at the top.
> >
> > There are corner cases to sort out, like how idle domains get an L3;
> > but overall I think this makes everything more robust.
> >
> > Thoughts?
>
> Sounds plausible to me.

This has beeen done.  It required some refactoring of later patches.
These have all been tested and skimmed, but haven't been over with a
fine-tooth comb again, so there's a risk of LLM quirks.  Do you mind
if I post what I have now, so people can look at it this week if the
chance affords?  Otherwise I won't be able to post it until next week
at the earliest.

 -George


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:07:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:07:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468277.1677376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshR-0007Tq-G4; Mon, 02 Nov 2026 14:07:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468277.1677376; Mon, 02 Nov 2026 14:07:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshR-0007Tj-D8; Mon, 02 Nov 2026 14:07:49 +0000
Received: by outflank-mailman (input) for mailman id 1468277;
 Mon, 02 Nov 2026 14:07:48 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshQ-0007Td-Fl
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:07:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshP-00B4uG-RQ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:07:47 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89932-bab6-0a2a0a5309dd-0a2a4507e862-2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:47 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89932-b4ea-0a2a45070019-aa0a857cb501-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:47 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-632-k2dcesXvMiGXIQHyQbl_aw-1; Mon,
 02 Nov 2026 09:07:42 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 59E231955D66; Mon,  2 Nov 2026 14:07:38 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id B15C630000E3; Mon,  2 Nov 2026 14:07:35 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628466;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Z6rrMF5g7kSJjjz4JgR/DJELGyW6HUEWAKJW78oBWTs=;
	b=LnUKrhVKdEnybn3yPCd1Yv6osOcTrP79hcqsKt1HlluBIRY9Aw/WeDADAJkLX6n/p0XrsV
	71kd6lBdTwBGDdOCyRPMXZG9vlsDI6MqvdbNQRUTqGpNsw+35s+eujp9Z8vNAWUKweT37q
	8R+nzWROIvkErQkjs/vrMVaN/Ae6d3c=
X-MC-Unique: k2dcesXvMiGXIQHyQbl_aw-1
X-Mimecast-MFC-AGG-ID: k2dcesXvMiGXIQHyQbl_aw_1793628459
MIME-Version: 1.0
Subject: Re: [PATCH v8 01/18] hw/usb/bus: Add an auto-hub flag to the USB
 bus
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-2-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-2-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845005.3960472.6869995164240582772.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=459;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=pAw5eg4Arl/ByoHFAYRPJQb/M2YDquuUFg0/97XLg1g=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkj81VS6SlcWI4Rwy61JYstprlWUXrEY6lpy
 wc1SZFRb7uJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZIwAKCRDa6OEJdZac
 5QYyD/wPeJ8nM4weGI/sX8DMt0EeH7uYANAptfmfk41PheaO/7plM2Of4Zm2/6AppYmjB8uJw5j
 7aMh/2Ozw+k7hO03zeLNiS7XA1f27jXKUtARK4Bb5vRQhNtpinnBhPh/ohaLObS1QsU+58Y6Shx
 H7ZLV27gqTf2tOrvfBF5M/F16Nx9l90XHSy+Vi5KCruu5cXiuxgg8PQN7rEq5i6JUz33hHEQg2D
 4xxxXvkXvea75Upv8+LaWsUJhYSUgaYEknAaXRhiBmb0sA3CbO1RHHt/cIkAjIwIgtcs//hgmEt
 zWie0/ywlexmtlVimlLw5dVKI1E/9sQZxEEsx8oRZgdJdBdbvPcGHN8WP/WrOe26+9Fy2zA6rHs
 44/rYiAE+T5owtGlLkZu1KSc4cR1rAyj8R8JtBeQPU7sKSk7zV7xeya2rqQP4yqCaxmqE+Jne8A
 h8q7quPbYLpLIKaF8uKFRM7GovMGojSVJkCtUgSwxEvYcQeaosoYJCgim6oXZuqRI91aJGS1cyM
 RYiTTsSzCgKDD76SjGiNwpaL440PaERbSlIgN0s5j1uaYhDao2aWY6yG0HEtqGeyHKDaBUZQIpz
 jYdjTNFp6xH2MjYulYRfmZ4n7mpT5U2hCziavVJOGXNlhJ5JSa3aHxxj3DzcKFcEqmoBnntH6mE
 Tdj2SPUXYkm/6wg==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: S-QDwk9FnMdoTDrcHaku7hY99Mag-YqvVypDEWiNsVo_1793628459
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793628467-348C9AE4-87584817/0/0
X-purgate-type: clean
X-purgate-size: 461

On Mon, 02 Nov 2026 09:22:04 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> usb_claim_port() plugs a usb-hub into the last free port, so that more
> devices fit. Every bus gets that today, and a controller cannot turn
> it off.
> 
> Add auto_hub and have usb_claim_port() check it. usb_bus_new() turns it
> on.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:07:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:07:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468278.1677385 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshY-0007jw-Qr; Mon, 02 Nov 2026 14:07:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468278.1677385; Mon, 02 Nov 2026 14:07:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshY-0007jp-NZ; Mon, 02 Nov 2026 14:07:56 +0000
Received: by outflank-mailman (input) for mailman id 1468278;
 Mon, 02 Nov 2026 14:07:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshX-0007iu-9E
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:07:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshW-007Y92-Et
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:07:54 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8992e-8faa-0a2a0a5109dd-0a2a4508847a-30
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:54 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89938-f659-0a2a45080019-aa0a817c6d91-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:54 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-lAfKHIXJMZWbUsX_UCa8uQ-1; Mon,
 02 Nov 2026 09:07:48 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 14FEF1977008; Mon,  2 Nov 2026 14:07:43 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 70EEE1955F19; Mon,  2 Nov 2026 14:07:40 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628472;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=cEtWt0ywoktnh6mhoKNd5DTBXrDsdzUzNxQyljlmsAY=;
	b=WFj5v9TP8wb1oLIMnFah0nR3lboUuz1gyoAI77Z3NB/KXWI2kjD0uT3oWPnT1VUa7tFTzz
	TIXxM+v3M+hxYbmOIE4eFrszwQnp3XqfEUP01KRnVDmN/jhFMRJhZ2HP6+M+kL1EBhmGGx
	zwtSWeqhO06TJ51UyXYbK7YgLMlMxHM=
X-MC-Unique: lAfKHIXJMZWbUsX_UCa8uQ-1
X-Mimecast-MFC-AGG-ID: lAfKHIXJMZWbUsX_UCa8uQ_1793628464
MIME-Version: 1.0
Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845007.3960472.348635338762646824.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=468;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=b1ORYX9wRq2P8Ku8O3hUxGG/61rybAHzAtu+euwuruk=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkk9WNIJnAlaMF97YixRq3aAJuURXOUHALzt
 KidcdMCFwCJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5c1TD/41nRxtxmbhCsvLoKOOj+dU2VFX/dJ1y6UQrNPEL/8P5kuRsBPXx29b7qkcQNKxHhw3Fdb
 Q4D3HOgD9Yimw5y5/cxj6LmGbEdCCGV4x5Iewxe9lg9idNLTi7liZhCYWKz9HCfVnwhPLimonAf
 vP3aPCa+76VLxw1f7gSFqu9E99Jmodv7sC4fxxjLWcmY3OjH7P0/F2Y75NKnNEreCW6PPV3ZUL7
 8VIVpKvSbpFYEGwf1YpYS5kIbT/gJwkrYleGjPpEUYTmnnq6bah0lLBCG4vBYxj7UJ9ZwbJOyBR
 TUynoZ53OB2vDjpGQdx39SiRRgCx5FFHgJg46j0skUZYo20e76cxuSn07RwqujkR58w1a5bNqL6
 v1yc06WhmUCGEm3WNLs4UFg5JTcjm0oqyDhGZnwApqou2cycVWHHS2dr6UUAjeQ9e9g1TOB1pRt
 Qb9n6dVdpEGhU+cL3i8mvWjYhqEUflEmVGHzUqzlaYrSLpQO2sqo651o9mQNamSq/RysoDo+yRO
 XJqmUWtmjipfQ16xrPk1MAs7vt0bZtzHALiW/dIjXkgaEcIDlWjCNoLPMemPLEr6tENTKp25q7A
 9puw9aVDEb+znGHdqpW6VHsQIuQ+tL+QPPI71csHGlsgLkSkNBPud92bd/sHDteFWBFNNrEo2lM
 xYEWItyXJPU0ZjQ==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: OCB49AKFtYV3NAr4nV0YvbwG6vJyUYOIdRTOj9jOXEQ_1793628464
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793628474-D594A87B-5DC70686/0/0
X-purgate-type: clean
X-purgate-size: 470

On Mon, 02 Nov 2026 09:22:05 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> xHCI has up to 15 root ports and does not need a hub to fit more
> devices.
> 
> Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older
> machine type keeps the hub it has today and a guest saved by an older
> QEMU still loads.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468280.1677393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshd-00082P-0k; Mon, 02 Nov 2026 14:08:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468280.1677393; Mon, 02 Nov 2026 14:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshc-00082I-Tt; Mon, 02 Nov 2026 14:08:00 +0000
Received: by outflank-mailman (input) for mailman id 1468280;
 Mon, 02 Nov 2026 14:07:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshb-000811-Kz
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:07:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshb-007Y92-1f
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:07:59 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89939-8faa-0a2a0a5109dd-0a2a4506e672-16
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:58 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8993d-195a-0a2a45060019-aa0a857c8219-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:07:58 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-652-sl2zB3mHMeO8i9epNF4Fhg-1; Mon,
 02 Nov 2026 09:07:50 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D4594195422B; Mon,  2 Nov 2026 14:07:46 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 6426C18004D2; Mon,  2 Nov 2026 14:07:45 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628477;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=b8UkF76rOA+R/bzzQhBPO/5rNjot4yoXLkNOM1wEb6A=;
	b=B/DnW1cTtYR2SeE0e1YU5N9toikzlp7pDOp31lF05IVRarzRBojlGU/rBNRIHoEqWfMNMJ
	nLaGS1eauOTgm6KeEfSw/Kvre+ZaxVRH9AoJsGACVLy77ByCdFFO/V4Tc2nhGOQ7LQ/jA6
	3hYQ/oA4Bb+BVCD5lUHpoFbkr1UejMY=
X-MC-Unique: sl2zB3mHMeO8i9epNF4Fhg-1
X-Mimecast-MFC-AGG-ID: sl2zB3mHMeO8i9epNF4Fhg_1793628467
MIME-Version: 1.0
Subject: Re: [PATCH v8 03/18] hw/usb/hcd-ehci: Add an auto-hub property and
 leave it off
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-4-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-4-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845008.3960472.13227280986218616.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=371;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=yfCsSOOnBldxtUpgAiHg2GXOvQ4ejNkzWXnqcPh11rw=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkk+FqgdgJ1ryAryryF+euMWILnvP+H9zHy4
 aWZGXnpZWKJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5WBKEACTUedqwjS6+j3hO+HQnsv5p3MZZvimPadovFF+iP92+zZssJQAxprN226AftwEtokbGXM
 wDyfEKVYK9fH4HyrZ0duDom7/gecn+WaDEv4PsIyF1K3u1T0ovZ9ERl1aSHtMT1xojjut62C3m3
 BP5MTLSzeTpbX7brASYa2UNoJk7eNBf4/SpDllDrvgmZ6CrO3MR10jxMoZYJpD8zRW5TpzqvPU4
 7jjPNocpusE39QAgZ7KWpM2JqDHbQ2D6m7QpOwHUQrCQpOJML72jhotkIcLGWwwQoqC4jARUaVJ
 KsG2556qSgYqS4+wqbec+b1WzFW+dtH/tb0PuZ+c/6UxIjW1DO2slQ/cgpeUTfLSy/7Dx9QoCle
 hSOeipUgVKqpDg7CFgQ6mC7VIkmbiPGs0xEjfWhlrUToEYccPlieVsuq0tBXq7GXRyemZ18hkgo
 Kg6KrNXyxTKV3DzZl9/zrBHi1nQvkGdhT5++7qNpWm2avCRk92Kxi2RqIhFjVth5lSvL/eLN4w3
 0+4Wec2joJVAcKBW7uXwiGAjB3wMLAJAho4pWX1fkENMpGMy3gJo0cQroz4V9bg+f48hgwvalTs
 +ZOlsBKlhc3ZbW9+B4nQU6izGAp5Qkm+yZwLNz8xiXuEfBp1bJihELODzbMuQ0EN41iO6rDEgjt
 0gOEtAxSAcifxSA==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: xs5dyuTb90ZqdDoza4Kz-ZwTzXI-exCi1KyGKEVJ6E0_1793628467
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793628478-F6C7777B-03D2F974/0/0
X-purgate-type: clean
X-purgate-size: 373

On Mon, 02 Nov 2026 09:22:07 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older
> machine type keeps the hub it has today and a guest saved by an older
> QEMU still loads.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468281.1677403 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshf-0008Jk-84; Mon, 02 Nov 2026 14:08:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468281.1677403; Mon, 02 Nov 2026 14:08:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshf-0008Jd-4T; Mon, 02 Nov 2026 14:08:03 +0000
Received: by outflank-mailman (input) for mailman id 1468281;
 Mon, 02 Nov 2026 14:08:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshd-0008Cp-Se
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshd-007YCR-9O
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:01 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89939-8faa-0a2a0a5109dd-0a2a4506e672-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:01 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8993f-195a-0a2a45060019-aa0a817ca8a7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:00 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-utjxyXUMPkCZ29kxY1estw-1; Mon,
 02 Nov 2026 09:07:58 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5E3861955BC1; Mon,  2 Nov 2026 14:07:55 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 046AD1956087; Mon,  2 Nov 2026 14:07:53 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628479;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ERGcnspRdMZgREuK6ajaeWJ8EJgrkzIX+zoK92LO4lY=;
	b=fW1j8LrEDwrsQXdsJ3UEwBSw3V240aqz44J6MjspI3GSs94MP2xsR7BqfEGzHpYi+kFFv0
	VISnu3GkvQz5GFtjWsiZCVStcGYMZuHoXKxXcqtv5Rm1z2vAOn1MOBl+sLGFbQ0Vw/sxAz
	14Bl1LYVukLBcklr7JIPuKGpvzNZGlQ=
X-MC-Unique: utjxyXUMPkCZ29kxY1estw-1
X-Mimecast-MFC-AGG-ID: utjxyXUMPkCZ29kxY1estw_1793628475
MIME-Version: 1.0
Subject: Re: [PATCH v8 05/18] hw/usb/hcd-ohci: Add an auto-hub property and
 leave it off
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-6-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-6-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845010.3960472.4266154712960924675.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=1374;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=F+Y/7oWbL8SBL0XFLzDglAlN+n7OEfdEp2LujSibKlA=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkvWPU+1uMT6MiAhZUb7waFsniXeuOw3woh
 sr/yLxvwfGJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5XaQEACAAe4ccYhh8K8bFsPg+Wt7NK/vwPZYr8TK2vfzGAaiDl3S3aB4O/fQq7VxEoukWb1KjEz
 k+fiipFdAb6NneVOHgIHlW1m8w9paiOXPFpoRYDl1CyGx1FV5jtg3pvo5S/iUuhZC8s+1v2rgkl
 DdVoYFlQ4VVKt2SILbwtAeWAeDoI73AiEYN1SvPrhMlUYtmTjd11Jv/JEgmTLp6oTBqXb9S0LoV
 /Z/zS9g18j2lZt6nlfDBCToUOUA+vkoVBQabDieg77grSq5Av62YrkycnGUSA2+DZozKcpaPRNS
 cFC/nvb5s2seg1eWR5LBjpsaOuwofYU49UrYV9LIS/0DUHohTh1RgwSKllhenUl4lD/UXCZ0Dbp
 q9JoCIkLUQx6kIs/wVH44is7/1LzwZoZrGgSLZzaJNd5k6olqhH4rkDLNtkPAd2mt5AopP+H7w3
 A8oJg+V88NWWJ9OaBV0ULs8qES0os1cf59LemQUokJmvkS9q2jPMyDFrARTBPalF6eyPBGP7Arr
 vPSAZEldqvJcjt0RlzVU9V02xjVPY+KtQG8ow5lsF1NRD5LFyMgaRm7EGIaO6GFgc5S3OontUou
 PbWSfwqHh8QFsWAsfeOnrExuO7AVQvWPAQ6+W1SGabVX9HTEZIT3PMiCEtXVrQnNpTHWYNrR2bf
 +Oc4DzNpXsxR73g==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: J6Ui_wRd_-XZEUJBE9xT8qLLFLzaBWGpwLNtJMUwWjY_1793628475
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793628481-FD80D77B-35DE1FB4/0/0
X-purgate-type: clean
X-purgate-size: 1376

> Add auto-hub and leave it off. hw_compat_11_1 turns it on for
> pci-ohci and sysbus-ohci, so an older machine type keeps the hub it
> has today and a guest saved by an older QEMU still loads.
> 
> pc87560-ohci is its own PCI front end, not a pci-ohci, so it defines
> the property itself.
> 
> A companion OHCI adds its ports to the EHCI bus instead of making one,
> so there the EHCI property decides.
> 
> Suggested-by: Gerd Hoffmann <kraxel@redhat.com>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Message-ID: <20261102092201.1729245-6-jamin_lin@aspeedtech.com>
> ---
>  hw/usb/hcd-ohci.h        | 1 +
>  hw/core/machine.c        | 2 ++
>  hw/usb/hcd-ohci-pci.c    | 1 +
>  hw/usb/hcd-ohci-sysbus.c | 1 +
>  hw/usb/hcd-ohci.c        | 1 +
>  hw/usb/pc87560-ohci.c    | 1 +
>  6 files changed, 7 insertions(+)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index f79337e7d774..22d2b834595a 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -47,6 +47,8 @@ GlobalProperty hw_compat_11_1[] = {
>      { "pci-ehci-usb", "auto-hub", "on" },
>      { "base-xhci", "auto-hub", "on" },
>      { "pci-uhci-usb", "auto-hub", "on" },
> +    { "sysbus-ohci", "auto-hub", "on" },
> +    { "pci-ohci", "auto-hub", "on" },

So it also needs pc87560-ohci, no?

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468282.1677412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshg-00006u-Et; Mon, 02 Nov 2026 14:08:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468282.1677412; Mon, 02 Nov 2026 14:08:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshg-00006P-BL; Mon, 02 Nov 2026 14:08:04 +0000
Received: by outflank-mailman (input) for mailman id 1468282;
 Mon, 02 Nov 2026 14:08:02 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshe-0008GD-Cu
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshd-003XGc-If
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:01 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8993d-2eae-0a2a0a5409dd-0a2a450caf4e-24
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:01 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89940-f479-0a2a450c0019-aa0a857c6691-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:01 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-318-MFzdMUKVOSug1hwDH4xZdg-1; Mon,
 02 Nov 2026 09:07:55 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 79A0B1800BEB; Mon,  2 Nov 2026 14:07:51 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id CE7221800480; Mon,  2 Nov 2026 14:07:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628480;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ReeqDOpJVu34MXPCHs8vlqcjxbBGplkwOQdpLdah4aI=;
	b=go4wzjlrzrZyulkb2VfHhWcOjlB0EAyKdPIc1gdH8hea8IEu8oMCj0rWNK5hfRHXb2hbiF
	Lb7T5TOLlg83PTUfEjW8o29b2oNnaMsHjRmX994gacQ5PH8QGXft7s0Nsh3JhTTLHWKxg4
	3azDJYrwHmSpFHFEEcqur9TEcNc1LDQ=
X-MC-Unique: MFzdMUKVOSug1hwDH4xZdg-1
X-Mimecast-MFC-AGG-ID: MFzdMUKVOSug1hwDH4xZdg_1793628471
MIME-Version: 1.0
Subject: Re: [PATCH v8 04/18] hw/usb/hcd-uhci: Add an auto-hub property and
 leave it off
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-5-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-5-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845010.3960472.15554652570081565177.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=665;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=7rq9cfim2y48SwXq79LA2MfRJmqVkvpfllTZdyix+bM=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkk6CmwUai3kw1LtHeIXH5vmrV35+ZeXsM8j
 WEdcnsNZYuJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5YVFD/9PrtwMifRP2m8xIox2pp80VjQ0LgnhR3gpDiUKu62sZYDYcisXqwckq0cRFfn3WLXPRfn
 /zwdEe/R3hINcAasIDW3AvWdYCQg4N60PcBYWV8otwzUQ7PHNMJ4rr9IcOOf3Eo8uj8LXEVphKV
 FwItVGl6n9cbe+1t1kyJyEjdG5a555FC4x1xn9V7I1QU9YzhzrhO/XizafACqwYeqJFTCSJ7Vxr
 5mZHDc1zfL8LnggfhqRIlSL3uGIqrO7R/m2sN/E+mz+ORWhRV3iXHbVK/rY2OSTSWjtc2kdNl/V
 Xdf2B/gQmZ3dWaS1SyMn7CT/NI3LsMBmQydKXTlhE3mRdXVUqgrVMOxG8RIjJnGWGuzt5USXW7x
 rp3En0esnCOAMYNI4gKLw0/YwIREgI9mTynpvYfjsR1f1VP8g3VGfx8y+1DIXAXPEmZ/CN4uYkn
 3g+QoVcoc8aLA18B0gMyBquK4eQS1jZMGcaqWNu5afbZYoMh9KZsfyN5PnALguIKX5rUEoseTGN
 eERJh2EcZFLg9WXOlbwKBPI+pJ/UPM8K8LFVHpoBtUQi4nImcm+DSbxi8FbbSuy+4PRmm/oMJRf
 8xBwZNlC+TdI0XKSkCJTpvDUBjl/lKrEEgVdXbcdcAOfH3MKD2MT65G0W1iYehr+NwmaVTJs5HZ
 uBOfqeCZ+wNGyQA==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: 9h-ZqwTK6gwyxET-m0uaF18yOWyyLRI0S_fqS7pPmPk_1793628471
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793628481-038D5A5B-2C5A7FED/0/0
X-purgate-type: clean
X-purgate-size: 667

On Mon, 02 Nov 2026 09:22:08 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older
> machine type keeps the hub it has today and a guest saved by an older
> QEMU still loads.
> 
> A companion UHCI adds its ports to the EHCI bus instead of making one,
> so there the EHCI property decides. Both property lists still define
> auto-hub, because hw_compat_11_1 names pci-uhci-usb, and QEMU stops
> when a global names a property the device does not have.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468293.1677428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshy-00011J-5U; Mon, 02 Nov 2026 14:08:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468293.1677428; Mon, 02 Nov 2026 14:08:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshx-000118-Vr; Mon, 02 Nov 2026 14:08:21 +0000
Received: by outflank-mailman (input) for mailman id 1468293;
 Mon, 02 Nov 2026 14:08:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshw-0000uC-Hn
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshv-003XKJ-Ur
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:19 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8994a-2eae-0a2a0a5409dd-0a2a4506c860-48
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:19 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89952-195a-0a2a45060019-aa0a857c61ad-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:19 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-84-ifbzGeCfMVW4F7APk82Ang-1; Mon,
 02 Nov 2026 09:08:17 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5AB6119344AC; Mon,  2 Nov 2026 14:08:11 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id CF589433; Mon,  2 Nov 2026 14:08:09 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628498;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=oRYFyhvztTbkAukZo7KAzMM/k2TGcsNGgppNT+XfV2o=;
	b=eX3WtDWUblNk3+BMkD77vFNvdW+cA5HhX4gihjKUcRB4KIAfD1DDHCOYKRS763qSFHxP3n
	5evKG/nbXbrepQRuS+AFfYUYlRTr4RArXbkfkSOrFlfOkYM6naHqNDJ1HprlfTA+a0bLEj
	LQDt5JjLUawSJWpSMLFqY02GXWW1aYY=
X-MC-Unique: ifbzGeCfMVW4F7APk82Ang-1
X-Mimecast-MFC-AGG-ID: ifbzGeCfMVW4F7APk82Ang_1793628493
MIME-Version: 1.0
Subject: Re: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845015.3960472.7956229698285370567.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=651;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=F1IrbKA0eXHyGj63rZO602lR1wmaDvVNygpKzIbsQX0=;
 b=owEBbAKT/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkeaLYF+AtHQBBK7iTU+SkFbe1mwtPh4elo
 swuBjx87TyJAjIEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5SL/D/dEgMfDef1nufgtacHeM88sqlRC+DndeOTQhU+jJEmw5Jl465vxJWDG1uMDBnu9zRSiVRp
 iGwEI8+ROjB7aGGdaREGVUlaSDL44AOBVsBgrK9QywI4KydZs6E9u9nI9IPcqHaUkQgNpku5/C8
 q8pk+c9VLHEV60NjWH9Ya6YVqfjDSZjcvmJUz3aArt2tCkLHemIFPSF6FgYqOv+wGAVeGoJHks3
 +qSJR/FAknrfwg0y9zi4FYc2I3B4AWCeNY0mh+8GQCHNidCwuhmAY0X7ePAUW2hALVcYr6FyXQN
 OVrqxFvsZ8xIecbayAUjXqqqVJ5oFz1lJwoOIyB4k03s6nxMrgB/dlA4HUyaGjPJQeLoOr6+5DL
 tpUkRHegrPCLQiMqkpg363qgtkKeLMNvTifN6PqveL6TtD5rm0DAGakKYVBimKlv+sPWlYgubtv
 hVhsfcFnvNg+sAmsdwbpEclwiUtfNNEU5T9eCRCcZ3CZkDWjF1BL7+cpAm4JaY4YOa6Y40QN6uv
 0xiRH7UPu1P32e0QJFrEGzczet9k6qVatluWoEdG1eyDNLSz9lsF8qAviXZkjBwS2xNczzlFFGP
 pE3cEuae9dtzJiTw2yDqyP1YoBc/6aYdgecqa646ZGdczk7lzFoxulYYUBWxRMQNgCi/XaLDfaq
 eKQ6YpIiTytZ9
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: hBH6EevUc4WhyKUNneabo7NPLXBYRHjSvJ6t8-S-9uA_1793628493
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793628499-FDE0E77B-77FF54B2/0/0
X-purgate-type: clean
X-purgate-size: 653

> The OHCI companion has one port, so a second device only fits behind
> the hub.
> 
> npcm7xx has no versioned machine type, so compat cannot reach it. Turn
> the property on here instead. The companion shares the EHCI bus, so
> the EHCI carries the property.
> 
> Suggested-by: Gerd Hoffmann <kraxel@redhat.com>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Message-ID: <20261102092201.1729245-10-jamin_lin@aspeedtech.com>

Place this patch before the previous one, turning the default to false.
otherwise
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468292.1677420 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshx-0000vM-MP; Mon, 02 Nov 2026 14:08:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468292.1677420; Mon, 02 Nov 2026 14:08:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNshx-0000vD-Jc; Mon, 02 Nov 2026 14:08:21 +0000
Received: by outflank-mailman (input) for mailman id 1468292;
 Mon, 02 Nov 2026 14:08:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNshw-0000tt-24
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNshv-003XKJ-Ex
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:19 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8994a-2eae-0a2a0a5409dd-0a2a4506c860-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:19 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89952-195a-0a2a45060019-aa0a817c99f7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:19 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-195-0g3KBWzkMUCaOWTYmehgrw-1; Mon,
 02 Nov 2026 09:08:14 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 27C661945105; Mon,  2 Nov 2026 14:08:07 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 2D0B51955F2D; Mon,  2 Nov 2026 14:08:05 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628497;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=2a5TS5rWxCs6ZczX1TH3d68zs8Nbe5HYRUZj/2vXxG4=;
	b=XnNkIUbX5iPRPv5Q1N60k5BnN79bF/i2ARXkX1pJZw9AXreJufPty/tEDAn4IhkWA+X7gg
	toQZAHB8jQNq6Lgrb1QGbQrdt4pcKshqzoEuOm+loSEZQQ6UroVIls8ranfd276NNVO6et
	+g1IwWGyz+vSoM0pPQscEWa21vYFqug=
X-MC-Unique: 0g3KBWzkMUCaOWTYmehgrw-1
X-Mimecast-MFC-AGG-ID: 0g3KBWzkMUCaOWTYmehgrw_1793628490
MIME-Version: 1.0
Subject: Re: [PATCH v8 08/18] hw/usb/bus: Turn off the automatic hub by
 default
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-9-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-9-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845015.3960472.14396103276249426058.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=450;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=Nudz+qd4gdlQDc/ZGrx4gotwouNVcd+MO6oDUjSZiSY=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkV2U/dcvQN0lx278ZzYKX3QYfzOm/41fZ5
 6I+vZi7ELqJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5ZWVD/437TbSBBA1xJg21xrSB7pZVEkGByGKb5CXRvgY9+QzON3K6zcnFGy0/dokDG/DuaM2Tma
 OCouJsTSV1RAVpSDx1g50k37nG8N25WU0eP3MENkJnCbpkhUjfzgSr1cCyH+ilwbQZRFDbUFzC+
 wkUSbI6tJZoxIUftngJtPl5PBErNPdtug97xn/45QSwXZsFbLqMeTbyLF8Ogej2CkQoiP1O7Zx/
 wib0bbVkSHW3Iwkbp9NFj3fUHp0PeWT3ZpkUCYWgfSkj0cxDCbFIsFLeqhqA58nXgrhHRPseuek
 zd7k8uqUvyI2vPlVA8aWGmFknpQAjPZbfYIJs8BcdMkRu/OqyzsWk2l79hyAG+z7rKE2zxjtejr
 dJJNDcz9J2o70hA6I2HArMKjj5PguK8bPBIoa6n77UW7Et+nnVE4YlhvFChX3FF1BujvGr0cWtf
 iLXZ5PtPxJB5M3sKxk8yPJdQrePljSvxhr9MCTT6qb+x1wGlYx7iOy5xPeyZcJH49JcvSWcWp4n
 MrAikT3HU29M0PaJlukV4OgxvJUN2MANu/YYoDESaD+BCPsp73Y65GyEQTr5t7uhFgd42cIjlMm
 H72ahLRYayxcx+dmBA1sX24evFrDGNVwzXi8KvPXOj2wLa6TlGkx3bLvBgG4kXPNAIaoRqHaxRE
 RYbqwv3/IlnAOTQ==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: -sS4nqpnxSVtrvxFYfBp1-lvXPvbpAtkO4v6jPSzkYI_1793628490
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793628499-FE47377B-168011E1/0/0
X-purgate-type: clean
X-purgate-size: 452

On Mon, 02 Nov 2026 09:22:14 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> Every bus creator now sets auto_hub from its own property, or clears
> it outright, so the value usb_bus_new() leaves there is never read.
> 
> Drop the line. A new bus then has no hub unless its controller asks
> for one.
> 
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468300.1677438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsi4-0001eR-8w; Mon, 02 Nov 2026 14:08:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468300.1677438; Mon, 02 Nov 2026 14:08:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsi4-0001eK-6A; Mon, 02 Nov 2026 14:08:28 +0000
Received: by outflank-mailman (input) for mailman id 1468300;
 Mon, 02 Nov 2026 14:08:27 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsi3-0001b1-DP
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsi2-00B54T-QM
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:26 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89953-bab6-0a2a0a5309dd-0a2a45019ee0-38
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:26 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89959-5984-0a2a45010019-aa0a817c66c9-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:26 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-601-xT9HtkvIMUaHA7Q0hLoKuw-1; Mon,
 02 Nov 2026 09:08:19 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 400E01800366; Mon,  2 Nov 2026 14:08:15 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 0D9BE7E1; Mon,  2 Nov 2026 14:08:13 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628505;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=QGCFPtpTZ9u/tCuCVR5OeilylS8JCqg+dr/Jv3b4oww=;
	b=gUzsLU3kM1kpB0SvwzWiJ9V3HOvBi/kR4ZgDUqbtvDpdOIjXE5NhKcwtCdZ1RKSeR1AHZc
	vXssufadb+uiKgMKQhWMllgKEBCgE8Qs0VytphSu4YgAzH3+qPcBRZKoxtORadiw0bgIFR
	yhu93Hfd54qEbcSMvWz2E3niGMpCixY=
X-MC-Unique: xT9HtkvIMUaHA7Q0hLoKuw-1
X-Mimecast-MFC-AGG-ID: xT9HtkvIMUaHA7Q0hLoKuw_1793628497
MIME-Version: 1.0
Subject: Re: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic
 hub change
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845017.3960472.16366950842648422107.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=259;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=hShHjS3Opzh5WvrzOcbOzg/lyKy92JVRpoFQlRo0mKY=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkks8ybnqu/RpOGj7O5d0ggoaZn9DQ/LvCFW
 Wqh+UvahM+JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5SKOD/0ZEtKtES9Jn0R7HdJhSLO0xpnaWSHqMf739qoghn6ZKMY+naQLgWU5BIfwxJQsXapiVMs
 rsdF8iQL3RkMct0PWt1FvPqyVdS+um2ibRHeU0ze/GeKq5nvajSA4GOf6Lijvswi8OjxHxExguY
 UEYHfGNSsVBqdhOLMtuaUvT0cfj3LSGxKvsDBaRkgn+DE9dVVrkGX23E+LpvhD2H/qQTOco/ovI
 SNTR1luDWIzUg3JmVSx8SC/uaTJ8k50mMJDpTJqu1UQ7PkWICzj+Ek4mNenjZPv9etbUQy6FaS+
 dSR0Olb4tij7c860xH6IKAY1rQDl4AQiFQ5XAg82X7kkXNgNaiea6kdz1vzcWaYQMIPpgaCYAKf
 nh9GWQ5h7zu4s/FJ14oSrs34lkroeYrpTFhvzWrk07oIwY5Xrr8O1uxolwq85OQOv632eTKV4mi
 LMdBdFMzLnqAqsZ70ggL/z5ycMDBuHnQJI3M0zXfjnT0an7JROw17cEbKU9wKsDnF5XP1tyIk2X
 HJSy8+w11uepaOokEe6rYjNOgGGvVFY1s9WCMQCMwoZhL7lcBbGkuTNRkOSzIm5vWvGMiFEnchJ
 4xhzQ1WVjCtccUxvyFahMfsAFpQJumN0Fy9J7m/ya9OV78076lRTLx2lHcNN/1hlYKz7sxkIQcs
 iu7hOElOK/KCc+g==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: WedsLkpaxQ_XJ2RZYbdtb7AH2IwCnFZ_JytsDJao6gs_1793628497
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793628506-BC558757-0A15BF24/0/0
X-purgate-type: clean
X-purgate-size: 261

On Mon, 02 Nov 2026 09:22:17 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> The automatic hub is now off for a new machine type.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468307.1677448 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsi8-00025a-Gw; Mon, 02 Nov 2026 14:08:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468307.1677448; Mon, 02 Nov 2026 14:08:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsi8-00025N-Cc; Mon, 02 Nov 2026 14:08:32 +0000
Received: by outflank-mailman (input) for mailman id 1468307;
 Mon, 02 Nov 2026 14:08:31 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsi7-0001zs-As
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsi6-003XNo-NV
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:30 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89947-2eae-0a2a0a5409dd-0a2a450bc0f4-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:30 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8995d-b7e8-0a2a450b0019-aa0a817c62cb-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:30 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-k47H6-t-NsqFxQogk-blHQ-1; Mon,
 02 Nov 2026 09:08:23 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id E1863195F176; Mon,  2 Nov 2026 14:08:18 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id B10DE1803A40; Mon,  2 Nov 2026 14:08:17 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628509;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=EM2iAfwAwixmnmQXqwHmtYrUyBBE03lItngzAlvkHm8=;
	b=FzPDQS+jC3Z7CNAGh5Iquls7OKmr49ajhOObtYKd9sU1dDhol1td7pf2mN7mazbKEvAL3w
	UxxhJXNRLpzxooipDUfKOhsPk5sk6HHWquPIbAO+4hcLibnd8IuYtwpCIBnd3I3ZTxgKHZ
	jKhqYvqxLt1TRA1KGQRuhNuTSjIwMD0=
X-MC-Unique: k47H6-t-NsqFxQogk-blHQ-1
X-Mimecast-MFC-AGG-ID: k47H6-t-NsqFxQogk-blHQ_1793628500
MIME-Version: 1.0
Subject: Re: [PATCH v8 13/18] hw/usb/redirect-server: Announce the exported
 device
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-14-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-14-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845017.3960472.17221122285900334594.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=3466;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=BJecDlFM41zBkzwfSjkq949iyOSNc820i+D+sMx1DOM=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkmGhrtimZSihYsFx6Il/MbWLCO0XS34Avz
 aNUQnOpoa6JAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5eDWD/sE+zg4Hx6tUTyNIzjemyF3yUjUQ5sp5gR8+pXW0Lnq/QGUoTiHqug1dKC3gKSq139L1J0
 vyAhZuY1alkBKUwcL8miqNzw/mtJkMhvfgp15wR3vGsJY5S3l1OGk4yOD7mMq+ghRRYzsfyVTN7
 neDhvN4Sth/6NjO9m5Lip0adoNb95JwIS64WkMaB6LLfpeX0mEsL7UH55XusFECkIk0c5Xegf1s
 of1PbS0qfA3kDRNE0XRgf2inJ/5OCbIvkvZpg75HC/iU0I7iEMwjWq+dvBGwSus587Mm810QQvK
 4OFLnRMw/ogSPJj8oln16IfuFPboY0p7Q1lUnocXfF0Z6SJxgqr2NxCEsKb3nE6s5uaqbNkVyB2
 64Tz5n5xf4wKZqDIPLyM9hf7f875aOuDELLA5LgDJP55p7VjCRPBlayGgAt2r7+9IRYU2QYSpo3
 aUfVeJSbUZ7D6f1ZqLTSHtcZ55PBbF6onWTUSM9rGvmEyNxV1P3dyTDznUIBbU1YVIrWspMyn6z
 8N+F4cFaQUgplCQxBMB7Kr1rucF6WE9VMN3/6bG+p7taisAeOsIHCQWsEPj2e0vI765fK4T6Hms
 gf5D4uiPmWzeQN3+1pNPO0/zBoMC8pLadPEOwz1kt3baL9btGSDnytmLj0ZAqUevwaUfgO6KDkj
 lCR7wFOwqA5Kzlg==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: PO22DbYMF6Pu6mK-2gbV0JmRKD5Kkv6HmwO-LS1mpnU_1793628500
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793628510-2C39B9EA-44CB48F4/0/0
X-purgate-type: clean
X-purgate-size: 3468

> Send device_connect when a device is attached and the host has greeted
> us, device_disconnect when it goes away, and handle the bus reset the
> host sends before enumerating.
> 
> device_connect carries no identity. The peer asks the device itself with
> GET_DESCRIPTOR as soon as it enumerates, so anything we put there would
> be made up. The speed is real: it comes from the device on our port.
> 
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Message-ID: <20261102092201.1729245-14-jamin_lin@aspeedtech.com>
> ---
>  hw/usb/redirect-server.c | 150 ++++++++++++++++++++++++++++++++++++++-
>  hw/usb/trace-events      |   7 ++
>  2 files changed, 156 insertions(+), 1 deletion(-)
>
> diff --git a/hw/usb/redirect-server.c b/hw/usb/redirect-server.c
> index f78351bde919..e207f5a7eb56 100644
> --- a/hw/usb/redirect-server.c
> +++ b/hw/usb/redirect-server.c
> @@ -56,6 +56,7 @@
>  #include "qemu/main-loop.h"
>  #include "qemu/module.h"
>  #include "migration/vmstate.h"
> +#include "qemu/cutils.h"
>  #include "hw/core/sysbus.h"
>  #include "hw/usb/usb.h"
>  #include "chardev/char-fe.h"
> @@ -85,17 +86,105 @@ struct USBRedirServer {
>      /* usbredir over the chardev */
>      struct usbredirparser *parser;
>      QEMUBH *chardev_close_bh;
> +    QEMUBH *announce_bh;
>      const uint8_t *read_buf;
>      int read_buf_size;
>      bool in_write;
>      guint watch;
>      bool host_connected;
> +    bool device_announced;
>  };
>  
> +/*
> + * The device is whatever USBDevice the user plugged into our port with
> + * "-device <device>,bus=<id>.0". NULL until then.
> + */
> +static USBDevice *usbredir_server_device(USBRedirServer *s)
> +{
> +    return s->port.dev;
> +}
> +
> +/*
> + * Device announcement
> + */
> +
> +static uint8_t usbredir_server_speed(USBDevice *device)
> +{
> +    switch (device->speed) {
> +    case USB_SPEED_LOW:
> +        return usb_redir_speed_low;
> +    case USB_SPEED_FULL:
> +        return usb_redir_speed_full;
> +    default:
> +        return usb_redir_speed_high;
> +    }
> +}
> +
> +static void usbredir_server_announce_device(void *opaque)
> +{
> +    USBRedirServer *s = opaque;
> +    USBDevice *device = usbredir_server_device(s);
> +    struct usb_redir_interface_info_header iface_info = {
> +        .interface_count = 0,
> +    };
> +    struct usb_redir_device_connect_header conn = {};
> +
> +    if (!s->host_connected || s->device_announced ||
> +        !device || !device->attached) {
> +        return;
> +    }
> +    s->device_announced = true;
> +    conn.speed = usbredir_server_speed(device);
> +
> +    /*
> +     * The device has to be in DEFAULT state before it can answer
> +     * anything, so reset it here.
> +     */
> +    usb_device_reset(device);
> +
> +    /* Send this before device_connect. The peer needs it to accept us. */
> +    usbredirparser_send_interface_info(s->parser, &iface_info);

The peer's usb-redir client evaluates its "filter" property against
device_connect and this interface_info. With interface_count == 0 and
the all-zero connect header above, any non-empty filter (vendor/product,
class or interface rule) rejects the exported device. Fill
interface_info from the saved configuration descriptor (interface
number, class/subclass/ protocol) and device_connect from the local
USBDevice?

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468315.1677457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsiI-0002ns-Q4; Mon, 02 Nov 2026 14:08:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468315.1677457; Mon, 02 Nov 2026 14:08:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsiI-0002ne-MR; Mon, 02 Nov 2026 14:08:42 +0000
Received: by outflank-mailman (input) for mailman id 1468315;
 Mon, 02 Nov 2026 14:08:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger@xenproject.org>) id 1xNsiH-0002io-4p
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNsiG-0000000AmXc-3kEG;
 Mon, 02 Nov 2026 14:08:40 +0000
Received: from 224.pool85-54-217.dynamic.orange.es ([85.54.217.224]
 helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xNsiG-0000000DFT3-2I02;
 Mon, 02 Nov 2026 14:08:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=In-Reply-To:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date;
	bh=/LizmZacdPd8wNmcbjuhgUhhjLP1E+QmLgcJHLBMGb0=; b=5CWE0TQN02djtKDMnyo+SOGtTK
	oew2v246n0V9xJME972UQbFZiZdRK0XH+HCp4jh3lGuXO2f28JEaP7An7tQoXqiyX31p+EZmxWX1W
	1BtC0CzbNPZuZUTtjztufGWCFGdZ8tt0xclux+ajCAeze2mFktG/1PMnQeZ9foxzJEHk=;
Date: Mon, 2 Nov 2026 15:08:38 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 2/2] x86/hvm: sync APs TSC with the BSP at creation only
Message-ID: <auiZZly1233xKpny@Mac.lan>
References: <20261030132419.84264-1-roger@xenproject.org>
 <20261030132419.84264-3-roger@xenproject.org>
 <bfa9e799-bdb3-46ec-8d2d-c085d131e6ca@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <bfa9e799-bdb3-46ec-8d2d-c085d131e6ca@citrix.com>

On Mon, Nov 02, 2026 at 01:44:06PM +0000, Andrew Cooper wrote:
> On 30/10/2026 1:24 pm, Roger Pau Monne wrote:
> > The current logic syncs the APs' TSC with the BSP both at reset and when
> > setting the vCPU state.  This doesn't match hardware behavior, where APs
> > are only in sync at platform start.
> >
> > Move the TSC sync so it's done in hvm_vcpu_initialise(), that's called a
> > single time at vCPU creation.  This matches the hardware behavior.
> > INIT-SIPI and VCPUOP_initialise no longer re-sync a vCPU's TSC to vCPU 0's.
> 
> Yeah, this is very buggy.   All TSC values are 0'd at #RESET and
> unchanged for INIT.
> 
> >
> > On migration the TSC offset for offline vCPUs is not transferred
> > (hvm_save_cpu_ctxt() skips offline vCPUs).  To avoid an unexpected skew
> > synchronize offline vCPUs with the first online vCPU, taking into account
> > the TSC_ADJUST value.
> >
> > The clearing of TSC_ADJUST is also made consistent with hardware behavior:
> > clear it on S3 resume, but not across an INIT-SIPI or VCPUOP_initialise.
> > Additionally, on S3 resume start all vCPUs from a shared TSC reading, so
> > they are in sync.
> >
> > Fixes: c31f8336e64e ("[HVM] Initialise AP TSC to same as BP TSC.")
> > Fixes: 6e0336351ed9 ("x86: Implement TSC adjust feature for HVM guest")
> > Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> > ---
> >  xen/arch/x86/hvm/domain.c |  5 -----
> >  xen/arch/x86/hvm/hvm.c    | 19 +++++++++++--------
> >  xen/arch/x86/hvm/save.c   | 34 ++++++++++++++++++++++++++++++++--
> >  xen/arch/x86/time.c       |  5 ++---
> >  4 files changed, 45 insertions(+), 18 deletions(-)
> >
> > diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
> > index 978d8b222256..71f49ec7ce9f 100644
> > --- a/xen/arch/x86/hvm/domain.c
> > +++ b/xen/arch/x86/hvm/domain.c
> > @@ -312,11 +312,6 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
> >      hvm_set_segment_register(v, x86_seg_es, &es);
> >      hvm_set_segment_register(v, x86_seg_tss, &tr);
> >  
> > -    /* Sync AP's TSC with BSP's. */
> > -    v->arch.hvm.cache_tsc_offset =
> > -        d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > -    hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > -
> >      paging_update_paging_modes(v);
> >  
> >      hvmemul_cancel(v);
> > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> > index ef9c7cd05777..81e90cc8fc8e 100644
> > --- a/xen/arch/x86/hvm/hvm.c
> > +++ b/xen/arch/x86/hvm/hvm.c
> > @@ -1667,6 +1667,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
> >          /* Init guest TSC to start from zero. */
> >          hvm_set_guest_tsc(v, 0);
> >      }
> > +    else
> > +    {
> > +        /* Start in step with vCPU 0, as all CPUs do at power-on. */
> > +        v->arch.hvm.cache_tsc_offset = d->vcpu[0]->arch.hvm.cache_tsc_offset;
> > +        hvm_set_tsc_offset(v, v->arch.hvm.cache_tsc_offset);
> > +    }
> 
> I agree that the current behaviour is very broken, but this adjustment
> isn't correct either.  For starters, it's not possible to have a
> non-zero value here[1].

I'm possibly confused, but d->vcpu[0]->arch.hvm.cache_tsc_offset will
very likely be different than 0 here (as long as vCPU are created in
order), as it's adjusted by the hvm_set_guest_tsc() call done above
for vCPU 0?

> I'm quite concerned with this patch.  You're adjusting at least 3
> separate things.

Hm, it has grown beyond the initial scope I had for it.  I could
certainly split parts of it, I've presented it as a single change to
avoid introducing intermediate breakage.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:08:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:08:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468322.1677466 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsiN-0003HI-Vw; Mon, 02 Nov 2026 14:08:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468322.1677466; Mon, 02 Nov 2026 14:08:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsiN-0003H9-So; Mon, 02 Nov 2026 14:08:47 +0000
Received: by outflank-mailman (input) for mailman id 1468322;
 Mon, 02 Nov 2026 14:08:46 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsiM-0003DH-CR
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:08:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsiL-003XTf-PO
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:08:45 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8996d-bab6-0a2a0a5309dd-0a2a4508ad24-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:45 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89969-f659-0a2a45080019-aa0a857c6a95-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:41 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-70-crF7Vc6JPmmHrsO_N-7TnA-1; Mon,
 02 Nov 2026 09:08:34 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 403571956062; Mon,  2 Nov 2026 14:08:30 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 0E0831955D6F; Mon,  2 Nov 2026 14:08:28 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628520;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=grg9FKd6iKJomJal3CYJ4U4vQMCnT6o8hFeIMXOlPVI=;
	b=OJlZwVgPF8nd3WtqOjhSlNiCL8uCyV+iHnINTNHivycsK1Laafof/Y8GNKXh3a7vOrpWgl
	Jne7/RqXZXaiDyNLdiHHd2Cd5ci/jLaYaJAI/zxWhGsoUjoC78TYctlSE4Rpa2Abtn91c0
	ydDUPn0aKv7Tiw3Ddiw9s2QVDdxLZ6E=
X-MC-Unique: crF7Vc6JPmmHrsO_N-7TnA-1
X-Mimecast-MFC-AGG-ID: crF7Vc6JPmmHrsO_N-7TnA_1793628510
MIME-Version: 1.0
Subject: Re: [PATCH v8 17/18] hw/usb/redirect-server: Implement isochronous
 OUT transfers
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-18-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-18-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845024.3960472.4540726377291333778.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=784;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=hJvGUxn6plNHSiGGl7omQzqPVVmIxQziy7e/MT9o/6E=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JklfS+mn8zeM4IpV8GvoTwsJ5L78+CmeqKvL
 ELYRm1g/oyJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJQAKCRDa6OEJdZac
 5Rc7EACF+C6p8LW5n/I8XO5Cs+PHM7mSX7pum8MHr+ws1ln+w3dQa0b+q7PoE1tu0mpXYIuGXoT
 icrBIGj5rhYBjzTdohkpSDkEoMJwDn+I4d5eJiyy9DCStKHRFp7Xj6mhvUvddnMClVecKTbC526
 fSKS/93FE0eY7AU8YyCG3e2y1Jd68XaBaicRcjAqYTZM4lNrRePBHW32xYnAUjY2he8EAUXN5mc
 22lxrZ3ZC+K+OyaoM5S0sWkiT2KM7q/XvforGmwR42R39dWktzIg2M/RTk3A1C9ojYqaLvu4L4H
 FgvS+G08Cak7LpB5rTff1h1B+KDgT39Jb6fR67JChoQESX3YXt7hFgGAp0HdK40qjsjqsVTxgLO
 FB4caTSba5qalcyWgTY8b7KdyRADPk+H42fdLSXwjB6mQs0Gdruuy6I3Vkux2160eFQ/MncqAjB
 gGoryaBaaKKSPTytzsRm06wg4TXAXicnWI/ZzBFU/qVmNVuxX9Uk0GdPq2xSUyl0r9tQoGpkmC5
 uJZi1wB9Re3Q1h4jS2F2GArMXHb1P8tciSxwgqrTs3wzZW/eH5soANXhH+z7hPeoccdvAzc5MpR
 qXNqXT0S5/nOH5TImx9KUgUoiTLyGxS7HnsPJeCGoH+bsQh4InjH3mJbbGZ0s1kVJWExGjl+yAX
 aEemQuWUnWPszbA==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: loNmuA_SPK_udlMdJBsNTO2YZUHTJMUqobCErc4kZHQ_1793628510
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793628522-D755C87B-4633FCA7/0/0
X-purgate-type: clean
X-purgate-size: 786

On Mon, 02 Nov 2026 09:22:27 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> The protocol has three callbacks for isochronous transfers:
> start_iso_stream_func, stop_iso_stream_func and iso_packet_func.
> Isochronous has no capability bit, and the parser calls them without
> checking, so a server cannot leave them out.
> 
> Implement the three for an OUT endpoint. Endpoint 0 is control, so
> refuse it. The host sends a packet for every OUT transfer. It sends
> nothing for an IN transfer, so refuse an IN endpoint with a stall.
> Only a stall makes the host close the stream. Any other status leaves
> it open on the host side.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:12:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:12:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468357.1677475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsm2-0005nK-J4; Mon, 02 Nov 2026 14:12:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468357.1677475; Mon, 02 Nov 2026 14:12:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsm2-0005nD-Ft; Mon, 02 Nov 2026 14:12:34 +0000
Received: by outflank-mailman (input) for mailman id 1468357;
 Mon, 02 Nov 2026 14:12:33 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNsm1-0005n7-4Q
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:12:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsm0-007yH2-Ge
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:12:32 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89a50-e002-0a2a0a5209dd-0a2a4502bce8-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:12:32 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8995e-6ca4-0a2a45020019-aa0a817ccfe3-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:31 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-mJ4JNnACMwicqCOteu9lag-1; Mon,
 02 Nov 2026 09:08:25 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id B2FB9195422C; Mon,  2 Nov 2026 14:08:22 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id AE84730000E7; Mon,  2 Nov 2026 14:08:21 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628510;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=030gJmT9UekNLg5uV1gpIRhINlOB7XDE6KrDWsvJ1K0=;
	b=DQST9K+Nk5GNgVMyoCHljRz+xo4M1XJwl5sxnQeExpX11lCvLUJPq4cD6KL9RAelxmZYAm
	wga+ikKoRHvhkrsenzvx9FZtv11GHKg3jx7B4ae13877UwyWkrJPX7bud2ENbPYcDfP1kc
	wNMTMnKedfpzgvz8M2kVggK2R3bmNOw=
X-MC-Unique: mJ4JNnACMwicqCOteu9lag-1
X-Mimecast-MFC-AGG-ID: mJ4JNnACMwicqCOteu9lag_1793628502
MIME-Version: 1.0
Subject: Re: [PATCH v8 15/18] hw/usb/redirect-server: Implement bulk and
 interrupt transfers
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-16-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-16-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845020.3960472.7447031612361559961.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=688;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=+KSs9MRyfQyRbvEU+lEOIbs6SMYIAp0GuAa4j3Lwip4=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkPcqWQnGOPrWOAku7tGCS7NAyoNCBQ2w3D
 1ptE1OyWTmJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5Xy1D/wNJtCfhTJSS2+MPdCGTSdjyPGv6qKvL2LbjZRRrUkpZDsqkkW0cbdiq1XIbTGJjuNk4Tw
 n12Meo+cPm09uleBjvKo7e4L5/9BAfm6GjYyVuK/rMddDRhGScaS3r8oNUzPsVZq9NlyuRkruWj
 E4IfcPybW373Q9BnyddjTQdjYj7fO7TV5oRCNjyYq1akDzq4xAA2dxnrXXKLoRtSH9o1BHJpW8d
 VCeWQPpnEambZ42lOXj01Ko5mwXqZdDe5mE0R3pFJWCwoMTiNd4TjV75YA6uL6ImggWD6ZFxgnZ
 YtFYdca60pcrtAx85xbkKQJFGTGHRq7Ez4cvsxj0yXS/M/cJsM8AsnnNzX3pisJ01d5UHx7VN6m
 7AsvT5fK//9p4D+icQHUakIODNQ/N5DcgRKV3hB3Bp/2ZymG8gs6UQB7NOD2mu2xJiYMpZ/CQXA
 VONw/Oc/iWtCiOhJyS2qH1Pm5cmklqVcVlOqeKS3juDtyjFNHKHE9ES+p+bKCkY5RtXPqm9BpkW
 nmvKo2RXx9wGhTXXXkUiMs5dEZaWXP/vSn8bdTxAYBdNC7Rhb2ISg8abxwf+fhTtPcMtYu0/QlT
 EvwkgSGXH7Sbh+7zuwmgbS2qOpfzVmBkNtSQpu1T6twffEia6Okg8rvRB3qFlyfhrWls3n3dg4T
 qXPMxSmMKGfmrzw==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: fQquL0goRr4iv-9mRIl7X5A8xDi6F9-fOoe5BxVAAI0_1793628502
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793628511-66CB22AC-976B2CD9/13/0
X-purgate-type: clean.bounce
X-purgate-size: 690

On Mon, 02 Nov 2026 09:22:24 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> Send bulk and interrupt packets to the device and return the result to
> the host. Each one is a request and an answer, so they reuse the packet
> tracking and the NAK handling added for control transfers.
> 
> A bulk request carries a 32 bit length, so the host can ask us to
> allocate up to 4 GB. Refuse a request that big. Do not answer it with
> fewer bytes instead: the host counts the bytes it gets back, and it
> resets the device when some are missing.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:13:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:13:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468363.1677483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsme-0006D9-Py; Mon, 02 Nov 2026 14:13:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468363.1677483; Mon, 02 Nov 2026 14:13:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsme-0006D2-NI; Mon, 02 Nov 2026 14:13:12 +0000
Received: by outflank-mailman (input) for mailman id 1468363;
 Mon, 02 Nov 2026 14:13:11 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsmd-0006Cr-Sn
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:13:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsmd-007yR8-9P
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:13:11 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89a72-e002-0a2a0a5209dd-0a2a4501b3ea-12
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:13:11 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89949-5984-0a2a45010019-aa0a857c5dd7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:10 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-638-9-pdfhiVN2-lfUJsafCwig-1; Mon,
 02 Nov 2026 09:08:02 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id BE3D1180133C; Mon,  2 Nov 2026 14:07:59 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 55FEE1956049; Mon,  2 Nov 2026 14:07:57 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628489;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jZ+TA1WLmXmb4ahUdqO2dudyFpcNi/5VDkc267M4N6I=;
	b=K6qf5pIVBBj07S0AQ/Y34VxFEkrG6ran9KBL2bf0AtsnbqVLYQu3cSeUaU8+OBnEkGSJSI
	/uAVsEC+yhhsB0dHHBLTheKmnsBuMvr1YgBB/tSDOSeIxBoDFFpglnE3RyUy9+txkffFUJ
	1qXfUIVJiEVFhytJAi28iu2AhrRsMBk=
X-MC-Unique: 9-pdfhiVN2-lfUJsafCwig-1
X-Mimecast-MFC-AGG-ID: 9-pdfhiVN2-lfUJsafCwig_1793628480
MIME-Version: 1.0
Subject: Re: [PATCH v8 06/18] hw/usb/hcd-dwc2: Add an auto-hub property and
 leave it off
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-7-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-7-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845012.3960472.15865929850588153372.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=503;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=uNCF9X0x9SvuosaiOmHKlEHm6gRnkU4qmFilsEBfb4s=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkJg8Ux5YjywMRHiVbpDYZUTU+9/zA/ugVH
 cXAt0Ymz7qJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5e2ID/9DUqTuYWHpWBQPJLXMu9JQRlyWT+UrtP1Ljutc+kmX7FFbuF0WazEAKgQ40+5oGXFJCKR
 gWJ4IgpqZzQBIgMzNLgsDT6b+JD6wp3ioOlclUXKJ4m/IbJAZDBn83wp/TvmipLAIUqq6+oR6sh
 t+1DIb5JsiXaLxnXwr4xSqye8ZtE+gLmyWaH+zN2Z8XwjLDVB0/4S0PZVfJnuifip5yw1fcJ6sr
 c6IQbdGBJDWtMXm7ICtx3PSetYmrlU/oaHoY6/CisvbLF8Ys2ycEFS+h5nvBPHkGRv+cKk0Unw5
 1n+NI1KbA1IA89tUlQI4zwK4fMQHQFY8m1pFuH8bDMTE/9g+91trflbbgfwa/3zQi0z4g/flgo4
 IJt/NLQi6tfx5qJvXdu5rb+S0aNrfcth0F7jyIRKWxU7HQrtN8LaAWx9hBgmkLgN941dGnuhTK/
 aNYdOIzT++UvLyg7FnWcl0e5IKJ2Wig3mLHSI2+ayW6gsVngeHa3+OgEiCSNK4hlLx0MyMCV6V3
 s/Z02GAj3StYUPaXN/XB9UNjcdqneMyThmYg5oWKzVSe40a9DZEz703d0wXE6Qdf3qtxKvtncUF
 rUIf4InahvpTz20HJqABkNR1I1AQnXQ8Oe4pIjrh7eTHM+PuHTftz1IBHho/1slDpvnoDhooLn3
 vIaa0p8+mLMPcaA==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: nP-o8g5Jxqs3dWT0klQQunXE-_q8ICxmd3dlI1YzmM0_1793628480
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793628490-C495A757-E0D3E4F7/0/0
X-purgate-type: clean
X-purgate-size: 505

On Mon, 02 Nov 2026 09:22:11 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> dwc2 has one root port and runs at full speed, so a second device only
> fits behind the hub.
> 
> Add auto-hub and leave it off. raspi has no versioned machine type, so
> compat cannot reach it. bcm2835_peripherals turns the property on, and
> raspi keeps the hub it has today.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:13:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:13:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468364.1677493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsmi-0006R1-1g; Mon, 02 Nov 2026 14:13:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468364.1677493; Mon, 02 Nov 2026 14:13:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsmh-0006Qr-Uo; Mon, 02 Nov 2026 14:13:15 +0000
Received: by outflank-mailman (input) for mailman id 1468364;
 Mon, 02 Nov 2026 14:13:15 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsmh-0006QI-2L
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:13:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsmg-009sSl-EK
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:13:14 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89a6d-8faa-0a2a0a5109dd-0a2a4504ae54-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:13:14 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae8994d-b57f-0a2a45040019-aa0a857ca8c7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:13 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-262-8SOtFyh1Np2BClgYbF95ZA-1; Mon,
 02 Nov 2026 09:08:07 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5C4C71955F41; Mon,  2 Nov 2026 14:08:03 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 229081955D47; Mon,  2 Nov 2026 14:08:01 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628492;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Eu2vs//ronJWG6KONC4cKlwjqxJBcqK+C1Hjm3L59jY=;
	b=HBM5gOlNMDZveJFcczECMAvi6iX1W0EIgQbftowDwdX5dEXRmZOGeCM9/2gYbhJEMbiR1f
	X3ETIzAoh99jzkHZNLHZTHveweFRBb9Y6FyxjL2ri4Wenkfiy7q7XGFD0OTf5sHgLLSmjz
	UNxafRtIAoVpxIEihZOrX0iqPMfvU1Y=
X-MC-Unique: 8SOtFyh1Np2BClgYbF95ZA-1
X-Mimecast-MFC-AGG-ID: 8SOtFyh1Np2BClgYbF95ZA_1793628484
MIME-Version: 1.0
Subject: Re: [PATCH v8 07/18] hw/usb/xen-usb: Do not insert an automatic
 hub
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-8-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-8-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845013.3960472.4882687521140300056.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=464;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=mOnpZC2X2G+MrwPy4tgIMJCyVf8OT4XCvk/ZEThbFGM=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6JkkU3Z3+Gj8o5k+VgGVRtD+k2ZsQ5H25n9et
 eyDTlQ7pjGJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5fN6D/91mO2uLs2qr0TdRW3+ZXGH0V51+viKxEfMDF/ytHY9Z+8H8SAwhAPBqcnfoGzlZTtp2ro
 3k2eF5sSkbNpscG1PhbD7pRU1eZSiqA37udldyQGy3ZbqbXpql+fGCU84vxjiVFGU0JifF84P5g
 AI9xzFE8WtESqA8EPu+/fVRGxG8PkIx3HRLtPaVfOb/zQB0kZgdBsxNr+ovmpWzJmhx3XrYczcK
 Q3OW/Q8cUJSvib7+BohXxmiJtlsMEoXwW1OxGCvK5kL8IiUc+nYkjhMxKePd7zrrNq73v16jgFh
 ZjYZyDihq54i2IWW42AoyHcll/tjHSlZVCQwbp2ItN03zYhNWQnETjx9Y/ZTIBUMM/haA0tV2zd
 0FVr5X6+Uw1O+l3gOyEs2PVkWtmX31ZAM4rMU4EdyjJ+8voXNr44kJLm6+TX8H0uj1/dGyrHJ4q
 XBrpE+8OEqIaZeY/uJRfHl+f0739JNw0yGgSOEjxavYmitWUybtbzMrR/jOuFDY5ggSPfDrXcXh
 brqr4DAmv6ZAbs13YdphSShZjvZAQck2vXIUf+KKwDy4/tJeGB+9WnfscstiapHTi5EGNB49UsQ
 Qmps0PuNypsvNUKnrwZhq9trQgwxP9ZuDdleiFItuldIAadtQrD/E39Fml9sVIxfbZFGcvHlxtx
 DEWU+4c+9181nCQ==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: szgfBT0i7c9p79vIgwz6s_0rS-uuXY4Z3DsqymMmKdo_1793628484
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793628494-530CDB50-C5856FE8/0/0
X-purgate-type: clean
X-purgate-size: 466

On Mon, 02 Nov 2026 09:22:13 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> xen-usb gives every device a port number. usb_claim_port() then uses
> that port, and never reaches the automatic hub.
> 
> Set auto_hub to false. Every bus creator then sets the flag itself,
> and usb_bus_new() can stop setting a default.
> 
> 
> [...]

Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:13:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:13:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468368.1677502 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsn2-0006v4-9G; Mon, 02 Nov 2026 14:13:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468368.1677502; Mon, 02 Nov 2026 14:13:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNsn2-0006uw-54; Mon, 02 Nov 2026 14:13:36 +0000
Received: by outflank-mailman (input) for mailman id 1468368;
 Mon, 02 Nov 2026 14:13:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marcandre.lureau@redhat.com>) id 1xNsn0-0006tB-Nj
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:13:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNsn0-00H72k-49
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:13:34 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89a86-8faa-0a2a0a5109dd-0a2a45029806-18
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:13:33 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marcandre.lureau@redhat.com>)
 id 6ae89960-6ca4-0a2a45020019-aa0a857c4ebd-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:08:33 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-674-_M8_NFfANFOt9i6xUkdRvg-1; Mon,
 02 Nov 2026 09:08:28 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 1597F1955F28; Mon,  2 Nov 2026 14:08:26 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 01E8A1956049; Mon,  2 Nov 2026 14:08:24 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793628512;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=m5AxJABtUjhPH0VKiaWYWLYGlmOV99WIySfO7K7RwbY=;
	b=Sb7s1sjHFyKx7B4sNYglZF3mFaEsxgX0/s4gL3b++38Xb5rtr9hWPU6EnHZiRT+T5kM2el
	rANxN2L6d7Op9ZwiLU9eIGENg7r5sF3wsBUAmrtsH/jk/71rvQ17Liqksm4QeIlUcJGK/T
	uLjt19RU3KvUhhNVEuvWc6CQnty5eug=
X-MC-Unique: _M8_NFfANFOt9i6xUkdRvg-1
X-Mimecast-MFC-AGG-ID: _M8_NFfANFOt9i6xUkdRvg_1793628506
MIME-Version: 1.0
Subject: Re: [PATCH v8 16/18] hw/usb/redirect-server: Stream interrupt IN
 endpoints
From: marcandre.lureau@redhat.com
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: kraxel@redhat.com, marcandre.lureau@redhat.com, junjie.cao@intel.com, 
 junjie.cao@linux.dev, clg@kaod.org, 
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
 Peter Maydell <peter.maydell@linaro.org>, 
 Kane Chen <kane_chen@aspeedtech.com>, 
 =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>, 
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
 Zhao Liu <zhao1.liu@intel.com>, 
 Richard Henderson <richard.henderson@linaro.org>, 
 Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony@xenproject.org>, 
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
 "open list:All patches CC here" <qemu-devel@nongnu.org>, 
 "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, 
 "open list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, 
 Troy Lee <troy_lee@aspeedtech.com>
In-Reply-To: <20261102092201.1729245-17-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-17-jamin_lin@aspeedtech.com>
Date: Mon, 02 Nov 2026 18:07:30 +0400
Message-Id: <179362845022.3960472.7149018835120290019.b4-review@b4>
X-Developer-Signature: v=1; a=openpgp-sha256; l=898;
 i=marcandre.lureau@redhat.com; h=from:subject:message-id;
 bh=TyfjPl6Lgm8UNGDmROu5LHcqrGAlz9tyrpdNL8OotC0=;
 b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBq6Jkkkje6d1wtaLxQWLGZIajGkc23jr3gOUspm
 3ASTAxEMyKJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCauiZJAAKCRDa6OEJdZac
 5T6tD/9D/gkZAqCeh/AA+ooUg2bIId70Ip/ZbgSWTXJnMwNYpRa4IVa9XTDjKS6aQ3ISHbiys1X
 do5GvFmrKFO/ZsOczKvYBEKdW/NDq+34BoHAMuDxJ/ylfMGX33BT2nP5rWIrnzkWbf7/dObC4mb
 vGdW5YrS7H3Fk4AIWZ32Wqm1VBcjyZ1WwZ6TcFjN2iEza1/A0qUGBKr+zBP0wFZLk9g2A9l+fGc
 +usYHrgfywsIFD7Z3dm5j1UWHV+Hde9Jog0z9rGS7FGsu7QR9FOVIshQt1QVPXVCRkPgVj/8bmv
 Kl80hB7vEoM0jEdlXkhBSExH3NgvvC3Kei8K3Ib4DhIte0IQnKzzCekaWngdF5meStKUX51U1JG
 ZSe2h79btEJ+nJf/LkUqnUpgJ0P3LnbVP172AFunGEeb1XPNlKx09puC8nSFVJnHLutN0JXet/C
 EGll2La3iTyBaMkgvjIC1PLFgB0Y6rrotM5h1tfSWmGr8wAvY3R0xNcyrtN4bJZ1yjBEJ5E/9Jn
 RnPyhyhbFyAHec3vi2ABkHNE25iwgnZk+0oSkpj9phj68xuBDiuB14LxdXSGYslWVuHoWTaWI5k
 yVOiYrdKDZUfEezWd0uVnEPJhM7Ct8CQLkO4cMop6tKqzfDsQuhjmz4LKRWB0fqJqaPB+5gGwCI
 LKo2QnUPfJq55sg==
X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp;
 fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: WX0A5Raaz5M4lYtidajwpHgbDHMBBcyCZbxG8bs1N-U_1793628506
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793628513-311CF2AC-16E58B7A/0/0
X-purgate-type: clean
X-purgate-size: 900

On Mon, 02 Nov 2026 09:22:26 +0000, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
> Interrupt IN is not a request and an answer in usbredir. The host asks
> once with start_interrupt_receiving. After that it expects a packet
> every time the device has data.
> 
> Park one IN packet on the device for each streaming endpoint. A device
> that answers USB_RET_ASYNC holds the packet and completes it when it
> has data. A device that answers USB_RET_NAK gives the packet back at
> once, so park a new one when the bus reports a wakeup on that endpoint.
> A slow timer parks one too, for a device that does not report a wakeup.
> A streamed request does not wait on the endpoint's list the way a host
> request does, because this timer already asks again.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:19:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:19:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468385.1677511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNssr-0008Bm-T2; Mon, 02 Nov 2026 14:19:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468385.1677511; Mon, 02 Nov 2026 14:19:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNssr-0008Bf-P5; Mon, 02 Nov 2026 14:19:37 +0000
Received: by outflank-mailman (input) for mailman id 1468385;
 Mon, 02 Nov 2026 14:19:36 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNssq-0008BR-Gm
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:19:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNssp-003ZD0-JU
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:19:35 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89beb-e002-0a2a0a5209dd-0a2a4508db30-16
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:19:35 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae89bf3-f659-0a2a45080019-d155dd30dcfd-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:19:31 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48c5358fc28so2479723f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 06:19:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b78c10sm19846924f8f.25.2026.11.02.06.19.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 06:19:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793629171; x=1794233971; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=kiNNr9oiTygfKlJvv6hc+93yAbfKtk5WborMVZWJ49Y=;
        b=W9H09SwD5bEx3lwlq6952NLjk36TSJAbtbRno8+K8WCxz7R6XnYDCMi4PBnfHFATaI
         24CAHFWwEkixOL7qO2WPMi8MN1M7OOwlbkzEuO9kB7nQEBQeG1aeGD2bMDPlttaRI3R+
         SH862UAou2LwkDSrrNXa+CvvG7i1v3BZKPBsLnlcjCDPZ60zruWeegnXQhkJDbsWgN58
         RMgPCCxhk/Xz4V00rTZke39Vl++r6xex1NkjRODlXWTyf0oZfvg5W7BAxlg6WO8dwNd1
         FxbrbS3CHlVaUyiK2Z0Z050EnAXnTqRh518sUtaYYsd4SXCpATwRFAOuB3TttilWlWhB
         Ehkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793629171; x=1794233971;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=kiNNr9oiTygfKlJvv6hc+93yAbfKtk5WborMVZWJ49Y=;
        b=2uFxiOM3FfSJdLT9gHI9RTxCgB3F/qrgFR2/7MHbi1TJGFrsejVH8TDYo8yOnvPKaC
         RlQoupfFw/L8Xd99NW6X/1uINOaZ77w/W+nXcqVV4Z99h7VvKjD+0f1lyx2MnehJmpwS
         kIqf3IGntAwx6iTm1EO2ywBRA5u4GJVGYeQeQBA0qt4xfOlerrkXiXuSfItzJZztt2Nx
         krXvPVK1S7gEviJw5a1qFhNEYcod57G+qknEokWuHQDzMIlYxXY7ur4oEL+E+RcWPVT3
         RcfEAVCw93KUt8E2cdQ/nLU9iOAoiqiWilnnHR4CWalJUoSJ+tifCYrRZanlrQwtW9Rx
         y4gA==
X-Forwarded-Encrypted: i=1; AKwUvBwKuTl4D3pAYk1x2N1DwQOx2zS/mdYP1CMZWVs7J4YRPtwnXdNTnu9UyArpZ9cEVVT2L0EJKAVBMh8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+gENAp6JcnvMaXuOho+yl59mx8r+Vz4NRIigoS5QP8EQV2SehM
	Wfs9rEd848WzcGMituK+iOHGRy9uSJKM/HQQkfgeN5i2s+lrY6AtQZBXoLS5Lg7wlQ==
X-Gm-Gg: AYBFou3dKsQI3tHv8iQIbayGJBG44AWwb32VtpW4zE8Yr750fe8OFDmfUbUewEW0EXW
	7UUaYxwc/wyz7LdldXPgC1Zd2cC4FMtH76tQfduDRUHo4eIRQ1GsUj0Oz4sckBV2bzU618kdbKR
	wamdYIjPyaDihws4ug7tnk7tLy+vmYYV5IcYKodQxdgEIVG68gQH7a+8IeZU7+jJqtj3rO8xxPW
	isGUAxtuy9AzG+aydZ7G1ETjz8ibVVimEEuzwipPJ0I6+E/TWDLgRxVCxKtIkqSeqTsJUPzt0EW
	UyHMK4h+h7KWEqZxDZy2HAp52odSZwk17hNFvpHhJ0j7uB3xc2s8F632T7g9d7EVA9S4hdKTJCz
	qnEgwLR2/eCYNPLIibjYs+y/ts2IRyuGwm5X5dSWLgc8c/5wArIuEnz9FpARVT5c+nLmIIA4dYq
	pwPwHYuU7sRfJ+hbJtXO/OdhBICYCoVOqojMSCsipZE7ICIlZsyQ+loWqFRaxp2xHMaIj83Zdu8
	JkKn3Y1BJ0u0/W7dfCOgek85idjN435wTKs3v25d/NTv2QKA9ol8HSd84+RsxPfF6aEqwdTKeG0
	5NjH3gFtEfJ5J9onZzhR1Gxq9Zkadt+bNFevXenB0UW2fezC34VWYGap3EXqV3O+qQYCzWhtghP
	I7bgaNVGH0fpdWOdM
X-Received: by 2002:a05:6000:4a0a:b0:48e:2448:ea23 with SMTP id ffacd0b85a97d-48e6e307864mr23476443f8f.55.1793629170933;
        Mon, 02 Nov 2026 06:19:30 -0800 (PST)
Message-ID: <ba87ac3b-8381-4876-ae89-6ac555b55b75@suse.com>
Date: Mon, 2 Nov 2026 15:19:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/45] x86/mm: refuse to promote an L4 while the domain
 has no per-domain L3
To: George Dunlap <gwd@xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20261028-asi-hvm-v5-0-13b908e0df0b@xenproject.org>
 <20261028-asi-hvm-v5-2-13b908e0df0b@xenproject.org>
 <f29b4d27-650e-4463-a0bb-785ce507c644@suse.com>
 <CAFLBxZaXHuaMuHTPKgx-vw_AH8iX+jvh2t2BGsGYFR2z5hsPiQ@mail.gmail.com>
 <eb3c6304-f8af-4b93-be20-3db914e1ac6a@suse.com>
 <CAFLBxZZ-oorO7vXHONK0b7Yq_ZwHXEpBh8jphb-GaU9C8rT11Q@mail.gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAFLBxZZ-oorO7vXHONK0b7Yq_ZwHXEpBh8jphb-GaU9C8rT11Q@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793629171-D514E87B-C6C35BDA/10/78276251493
X-purgate-type: spam
X-purgate-size: 2426

On 02.11.2026 15:02, George Dunlap wrote:
> On Mon, Nov 2, 2026 at 9:50 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 30.10.2026 18:11, George Dunlap wrote:
>>> On Thu, Oct 29, 2026 at 7:47 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> Independent of that, how about pulling hvm_domain_initialise()'s
>>>> create_perdomain_mapping() up into arch_domain_create() instead of the
>>>> code additions you do?
>>>
>>> So, let's see if we can solve it "properly".  Constraints:
>>>
>>> - Eventually, not all domains will have a domain-wide L3; some will
>>> only have per-vCPU L3s.
>>>
>>> - init_xen_l4_slots needs a domain always, but only needs a vcpu to
>>> get the L3 of vcpu_pt domains.
>>>
>>> - PV vcpu_pt domains don't need an L3 installed after
>>> init_xen_l4_slots; they need to run on a clone of the L4 anyway.
>>>
>>> So by the end of the series, we could arrange it like this:
>>>
>>> non-vcpu_pt domains always allocate d->arch.l3_perdomain in
>>> arch_domain_create.  vcpu_pt domains always allocate
>>> v->arch.l3_perdomain in arch_vcpu_create.
>>>
>>> Have __init_xen_l4_slots() take a domain and an L3; if the L3 is NULL,
>>> leave the perdomain slot empty.
>>>
>>> Have init_xen_l4_slots() take a vcpu.  BUG_ON(is_hvm_vcpu(v) &&
>>> v->arch.asi.vcpu_pt && !v->arch.l3_perdomain), then pass the
>>> appropriate l3 into __init_xen_l4_slots().
>>>
>>> Have init_xen_l4_slots_pv() take a domain, and always pass the domain
>>> and d->arch.l3_perdomain to __init_xen_l4_slots.  This will be NULL
>>> for PV vcpu_pt domains, but that's fine.
>>>
>>> Then promote_l4_table() calls init_xen_l4_slots_pv() with a domain,
>>> and loses both the checks at the top.
>>>
>>> There are corner cases to sort out, like how idle domains get an L3;
>>> but overall I think this makes everything more robust.
>>>
>>> Thoughts?
>>
>> Sounds plausible to me.
> 
> This has beeen done.  It required some refactoring of later patches.
> These have all been tested and skimmed, but haven't been over with a
> fine-tooth comb again, so there's a risk of LLM quirks.  Do you mind
> if I post what I have now, so people can look at it this week if the
> chance affords?  Otherwise I won't be able to post it until next week
> at the earliest.

Sure, feel free to go ahead. It's a long series, but still better to
have the up-to-date version on list / under review.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:43:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:43:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468413.1677520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtFv-0005XF-Qn; Mon, 02 Nov 2026 14:43:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468413.1677520; Mon, 02 Nov 2026 14:43:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtFv-0005X8-Nf; Mon, 02 Nov 2026 14:43:27 +0000
Received: by outflank-mailman (input) for mailman id 1468413;
 Mon, 02 Nov 2026 14:43:27 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xNtFu-0005Wz-Vc
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:43:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNtFu-00BBfd-Ag
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:43:26 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae8a188-e002-0a2a0a5209dd-0a2a450bd6fe-24
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:43:26 +0100
Received: from [52.101.69.127]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae8a18e-b7e8-0a2a450b0019-3465457ff58f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:43:26 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by BR0PR03MB228406.eurprd03.prod.outlook.com (2603:10a6:2c8:66::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 14:43:24 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 14:43:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=XHwaYwy9mkB21TEeyNa7FPz9oEqbYiKpZEdF3kSG9qVeMFCF2WsK8Tk9NOIkscV1H06nQiB+m9qZrqcIjuIewpLEAUF9U64HmR/XLJyCFMighezyAEKYExuqJcEmhiClhDqQFxgGxJiSGNvknLK3+KKX+aYaKKyZdYs3k1QoDNsMKrUUMMufWGNhWjIXVfurmeQRY76f7DkVJctMl5x1KysSmd5nxOoMGMzmTdC888fK2Ip0doa20q10wSnd1qZKZvX6RiTWtqCMgqnvqPaQFRP7MS8rHIYluPU0gpyTlUjhzX+RFwF8Q3ObeEjqNbA5Z08emkxUSFVF+O69gF4F/g==
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=9ABfFHEX/1nXmaldgHj1APyoLHqmu/HToKqwkZSYceU=;
 b=K/06ZfHkf7DXEjPpCzVVtgkWqCTjn/jXiTQY/kmku2zknezeN3qalnDwvRFXRGXv4R3+Ezi0jVas6iO1nryZwg4Ch+55wAs+pcbdpPXX9Biqq4JfkhsB+FzqgUH8SWE26Tcotxohi0wFscPaWLjyLE3VzguPrKuSQNDMSIZRR2oC5FbhZBJN3qcMsB03gxyeJmLxL6CGESe9HxeBFnHEFLYnsLlRiZ8WOAJ5TFz/zUwO5d0BsJ/cKGTeOgyyeTyCmk2TRfEd+wm3Fvt6bEXMfUagqPVtLtlnWpqdg9ENYMvUzE0/A2hxJ+hsTDvVVTwGVdjkXDknR6NrCJwgbElYRg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9ABfFHEX/1nXmaldgHj1APyoLHqmu/HToKqwkZSYceU=;
 b=eA7N3VLevsjRqRzUtkShHcdALQM0yQlfmVq9/HJLtq9aIh2SQhKJVu1G7ntewDiy+22ystIOF6YGjgU48XkKCGnbu3HZ4vvqM+DvjsMlGNIM9V5j+nNSU9y2lKLTucZ2vJDi9QDT+/P3ONfMw56NvnUvgVUGLAQyU07jdk2oxegRCKAV4Yr1L4uXa1sIcd9HQx/FbH1Btl488E+o3zsMUdsFIRiH2CIETfIkn87hss3OFcgPmK5K2eRYTNz5l8iH855hStd0kxnbws/y2FRV1dmaliceZLn1Iu5ky55CkrObFzsph+eVTUHHwJXzqTB994CoCDsl0VAIyMHiWK8B2Q==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <fddeac51-52fc-4ab9-bb24-0b3b33faf07a@epam.com>
Date: Mon, 2 Nov 2026 16:43:23 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Jan Beulich <jbeulich@suse.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
 <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
 <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: WA1PEPF00005B97.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d8::62c) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|BR0PR03MB228406:EE_
X-MS-Office365-Filtering-Correlation-Id: cdec245f-2b13-4961-ff8a-08df38efa632
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|1800799024|366016|23010399003|10067099003|18002099003|22082099003|56012099006|4143699003|11063799006|261022105027099003|261026140227099003|261026121527099003|261009221227099003|261009223027099003|261028144727099003;
X-Microsoft-Antispam-Message-Info:
	xoxzqFzU5723Zcb9QLXeu5YYCQskwNuZK6rTBLbZLLiBq4llQhysCxEsHC59v2qkjxXMdVm9PtEnxRBGqn4raRf72TMjrXL0u4gib1K20BCckJ3O0k26hDQujhT/IMk1Sjtr0oQ1ctWpquDMXdMom9Ybilgwnt4ritOGtA9Fg05w9c7rvDSQn0TSV28ltu4YwdYreVPbFLRKiyb7JDZK4iDjVPZxR49AlndUzfRX+GT8tinnpl9s5YeTNsi95na+I4HVIfZCp7aPq7mZIEe2ljddAwDenUEM1n/cd53t5fwhmVcSiyoIjvRhbkJcr8LAYyHWy9zYF+yoRiMKkkjgJPeATtaZKuqFfYshL/u1kyp9PxM1sPKgDrrXPdTtHH9pTZB8c9V35EQYpmFuhw51vE0DHowdwrtUgQcYTGcWlqMsR14e0/P9r6IW9j63YIem/1IFdZq+Mc2EAHikSwwMGk6o5dqoHtmLLQQBKHXh2DVeDtOe1IdAiwn4Li+3vWdnyKU1L/Ex6APrDws5EAKPZkIR1tPuuzQQACGdP0LRA/ya0ZeJFVmBiSqlJbg8VJbOIasflhhBJF3lOtCJzJukxHmgsqutrZfnYykTB0R5ynqmfiL8ywqOoLsVVJpEO3c4fsdzO3Dx8sgjZ8h6Aby9+kRwLuoWY5fgnNb+CHzDVuk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(23010399003)(10067099003)(18002099003)(22082099003)(56012099006)(4143699003)(11063799006)(261022105027099003)(261026140227099003)(261026121527099003)(261009221227099003)(261009223027099003)(261028144727099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dUs3Y0gveUJiTFBlVWExdzJhWXJYanNRRmFqUENHR2NISHlQYVhMUXFjcll2?=
 =?utf-8?B?RzJScjhUbWtadTFHeWdNdlNscXdXalNoK1VpUWt2OEcwWXR1WlJoRTNzOW9S?=
 =?utf-8?B?djQySWgzckhTVStIKzVWeFRRNjVTcWpGWlhYbE5LdHI2cmRpTVpEU1FHR29C?=
 =?utf-8?B?YzNxTkZkZElEdmlvZyszR0padms1elRGSnlSSlJmN3lQb3RLRitYRG9EMXJS?=
 =?utf-8?B?NjExRWMyaFZjcW9sV0plOWNYNmxaSG0xTldmdXpLazB6bDBYR29RWlhZL0hw?=
 =?utf-8?B?dEovTklNWG5BU1IvS2lxMHdQUFV5T25GQ1dLUjcvZ3RWV0ZxZnpqNStUME4z?=
 =?utf-8?B?MlFwSlNyaEFVTzhNeWlGV3FxUzhJeE5TNkFoVW15YkxUSTgxVFdtT09heklE?=
 =?utf-8?B?VnMxb0N4cjFDRG9rQVJtM3ZLL2ZLYUdtVXlUcGRmSENHenlkQ1JXakpSZnFC?=
 =?utf-8?B?aWRJTlhqZFViSUlucXFKZEpOMUx5TTI4YVRPU0paelVUSDNjU09RVHdmRG1J?=
 =?utf-8?B?bnVqWG55OExTQm5ZaGNLTUN6RU1rc2grRWc4c3IxTmFnNFhYZWN3VDNtR2Vt?=
 =?utf-8?B?bWhoc0ZzeEUwZk5VMSt5WnpOZzZsVnFXY290Y0lnRlIwUXJwNE5Xa01Tckxl?=
 =?utf-8?B?TWkyT0s2U3F1TVdSZEJ4YkhXWE1RNTl1QXZ2Vm4vV0JjdlE4RHpJT1FBQTFm?=
 =?utf-8?B?WDUxZ2J1YW9lUVRqaWh1bmRTbGlZQzl1cVJpZ3hFeUYwZEJlTFhvY3U3aTZj?=
 =?utf-8?B?NzBjYVJDWDdwcW9MN2ZuK0daRGQ5SmlmYThxTGg0eDJzQlU3VXJ4YXp5dnlt?=
 =?utf-8?B?MUJrOVhrbG5uMC9jWHJjSmJNRGd4QVFOaGVKMUxSZ3ZsOGFjM3lEVVhicXVo?=
 =?utf-8?B?Snh5cDNicG05S1pSYU11NDNsek9xbXQ3NWRiOHI1YXU5L3JHSUh2bHdHRmN5?=
 =?utf-8?B?VlVwY1NYbElxRWdJdWNxU0R1RWpHQkkxd1YySkNLNWppeGNCTWRFckJJRkxz?=
 =?utf-8?B?MmxRT0hCTFVqbTJLZDZFV2lpT3l3bElHZk9zaXpXWEIrNDNvRWxRcnJNWDhR?=
 =?utf-8?B?OVltUmdlalpyWjFvSUd4Z0R2a0hnL0VINVRLakgzbTRuNFVjNWhISmk4Rzkr?=
 =?utf-8?B?VXpOQm9LRC9iUVEwWjlFazJkTGx3ai9iTmJjU3dzeUxQTjBHWXhKVmRndVNx?=
 =?utf-8?B?WkJYVGNHOEQ5aXlrV1JOUGxkdUdtZHMzRm14cmZCMzlRVWNwZGhJbTIwUFo4?=
 =?utf-8?B?azJwd2lvSGVlQndRU1V5enZ3VGRqUmdNT3paWFgrR3lCOXlZWmY1ME1VOWkw?=
 =?utf-8?B?VjE3N3dFbTdvVzkwTFZoVDVkYk9neE45TzhYTmZPc2dHRDdBT045YW44bU9W?=
 =?utf-8?B?RlgrcU9nTG5kWGNRM3JNWktML2hSdTFQdklqWWhubjNsSnBnZExRRU5HblpG?=
 =?utf-8?B?WVpTQm9LSkNJaWhQVTdhN2txaXJGcU8rUDg1bG1pVEt0S0N0TFVuWWt4Rm1S?=
 =?utf-8?B?M1BQby9VODloOUxmRWJNNHVEUGVSMTdIZHpoeTBrUnFIalVtYnU4WXBJenhk?=
 =?utf-8?B?RnVvTTFSZGpKNEJ2bVVDV3pNV1I5ZU9JcXd2dXJRR3JRVHB5TTI2MFhZVVVI?=
 =?utf-8?B?SXZpNEZVeExpaDVTTkEvU2xYWUJDajF4MjUzS3dtN3ZtV2V4TlM4MzNRc21W?=
 =?utf-8?B?UFpaam4zeGlzQ2p5N0ttd3hrcHlVd3VRSzJ2b1ZzMEg3MVRlL2ZCblFIV3M0?=
 =?utf-8?B?TE1YVG9UdVNnMW51QUVsNGJQNmlEdnFOdnQvT2VkbnRtRkdMRUNiMUF0NitK?=
 =?utf-8?B?L1NiSUIrUWtqUWVvV0ZUZDdwT3hpck5kVFpXSFp1dnN4eVpwVmpYTHF4SGY1?=
 =?utf-8?B?aHJrdkZqdFJYMEtwTFBxR1RtY0hpREdkejBDMnZIR1U3R2hvWndKZ1FMbW9S?=
 =?utf-8?B?KzVEM0N4czhMMmdoWlJNSjdENUFnMkdCMHpZUjNLSS9ybmw4bzBMS3ZxVEtO?=
 =?utf-8?B?WTdwYUxYUWZMLy9iTFZmanpBVDBnOUNsNFA0UXVyY2M2amJxa25tcVNlQit5?=
 =?utf-8?B?Vlh0QUlMaXVuY3BYOVJrajNkWDFyZ2F3eUN3MnYzMlVwT3VobFhoWVVQTktI?=
 =?utf-8?B?MjBNa2VuMmtpS3pvVkhwZkNXS1k3MlJJbUJNQ1BpV1l4eC9FMWZDN0podngy?=
 =?utf-8?B?VkZ1Q24xNVNaMnljNXRrblRjU3lMcTgwQmVVL0ZFWHFFTXdZRmIxdHp6UGxm?=
 =?utf-8?B?a3JnTi96dHNaZW9POG1mOXRTU3YrMjByRnBtazMyNXkrSzdhL09uSGVpTWRL?=
 =?utf-8?B?ZFlFa0NWVnpBTXd4WTFTRituV08vOWV6aFlHWmZEK0dINm01MmE1SDZ2NGh0?=
 =?utf-8?Q?GClMogTAX/TIxBKw=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cdec245f-2b13-4961-ff8a-08df38efa632
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 14:43:24.8290
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: OD+tzmMjSFzwI0iP4A2uBXV2MbdIqiC8eK50o2nUHb9XEim2oxGyL30gHxDfXnka2QA3Lv6grfJFLr0Y47RNmwhoqTsZdrZpCeDk+/28/7A=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BR0PR03MB228406
X-purgate-ID: tlsNG-42698a/1793630606-AA8D99EA-92E1F6C0/0/0
X-purgate-type: clean
X-purgate-size: 2145



On 11/2/26 12:52, Jan Beulich wrote:
> On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
>> On 10/26/26 13:13, Jan Beulich wrote:
>>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>> @@ -335,6 +335,11 @@ still non-negative."
>>>>    -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>>>    -doc_end
>>>>    
>>>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>>>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>>>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>>>> +-doc_end
>>>
>>> Why the restriction to add/sub/mul? The text ...
>>
>> Because this is the pattern found in the Eclair's report, and it can be
>> deviated safely (as opposed to unary minus, division and remainder which
>> are not included intentionally).
> 
> Division and remainder aren't very useful with boolean operands, so can
> surely be left out. However, more generally: How does "Eclair's report"
> matter here? In deviation wording we want to go from what the Misra spec
> says. The spec covers all operators. Hence any special casing we do
> wants to be justified. And, right now at least, I see no justification
> for restricting the deviation to just add/sub/mul.

Agreed, the report shouldn't be the argument.
The deviation should cover only the established idioms with a clear 
meaning, and leave the rule's protection in place elsewhere. With a 
Boolean operand these idioms are:
- + and - (and += / -=): "count it if the condition holds",
- * (and *=): "this value if the condition holds, else 0".

Other operators have no such idiom (at least, I'm not aware of them).

I can put this reasoning into the deviation text in v2. Would that be
acceptable?
> 
> Jan



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:56:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:56:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468425.1677529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtS8-0007yH-O6; Mon, 02 Nov 2026 14:56:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468425.1677529; Mon, 02 Nov 2026 14:56:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtS8-0007yA-Kj; Mon, 02 Nov 2026 14:56:04 +0000
Received: by outflank-mailman (input) for mailman id 1468425;
 Mon, 02 Nov 2026 14:56:03 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaton@eik.bme.hu>) id 1xNtS7-0007y4-8u
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:56:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNtS6-0087Zy-Lt
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:56:02 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae8a480-2eae-0a2a0a5409dd-0a2a450a838e-12
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:56:02 +0100
Received: from [152.66.115.2] (helo=zero.eik.bme.hu)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae8a481-f2d2-0a2a450a0019-98427302a64e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:56:02 +0100
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 3C50A60C532;
 Mon, 02 Nov 2026 15:56:01 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP
 id VTz4k38AQKv2; Mon,  2 Nov 2026 15:55:59 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id F184D60C4E7; Mon, 02 Nov 2026 15:55:58 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id ED86A13991F;
 Mon, 02 Nov 2026 15:55:58 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Virus-Scanned: amavis at eik.bme.hu
Date: Mon, 2 Nov 2026 15:55:58 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Yonggang Luo <luoyonggang@gmail.com>
cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
    qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
    Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
    Philippe Mathieu-Daude <philmd@mailo.com>, 
    Antony Pavlov <antonynpavlov@gmail.com>, 
    Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
    =?ISO-8859-15?Q?Herv=E9_Poussineau?= <hpoussin@reactos.org>, 
    Max Filippov <jcmvbkbc@gmail.com>, 
    Niek Linnenbank <nieklinnenbank@gmail.com>, xen-devel@lists.xenproject.org, 
    qemu-riscv@nongnu.org, Jean-Christophe Dubois <jcd@tribudubois.net>, 
    qemu-ppc@nongnu.org, Alexandre Iooss <erdnaxe@crans.org>, 
    Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
    Jiaxun Yang <jiaxun.yang@flygoat.com>, 
    Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
    =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, 
    Thomas Huth <th.huth+qemu@posteo.eu>, 
    =?ISO-8859-15?Q?Cl=E9ment_Chigot?= <chigot@adacore.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    Yoshinori Sato <yoshinori.sato@nifty.com>, 
    Frederic Konrad <konrad.frederic@yahoo.fr>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Chao Liu <chao.liu@processmission.com>, 
    Sai Pavan Boddu <sai.pavan.boddu@amd.com>, 
    Alistair Francis <alistair@alistair23.me>, 
    Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
    Gaurav Sharma <gaurav.sharma_7@nxp.com>, 
    "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
In-Reply-To: <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com>
Message-ID: <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu>
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu> <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu> <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com> <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu> <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-608982516-1793631358=:93499"
X-purgate-ID: tlsNG-4011c0/1793631362-520C1CFC-16F135F0/0/0
X-purgate-type: clean
X-purgate-size: 9576

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-608982516-1793631358=:93499
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Mon, 2 Nov 2026, Yonggang Luo wrote:
> On Mon, Nov 2, 2026 at 4:57 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>
>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>> On Sun, Nov 1, 2026 at 7:29 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>
>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>>>> On Sun, Nov 1, 2026 at 1:06 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>
>>>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
>>>>>>> On Sat, Oct 31, 2026 at 8:42 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>>>
>>>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
>>>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
>>>>>>>>>>> type_init
>>>>>>>>>>> function that calls type_register_static(). A later change needs to
>>>>>>>>>>> pass a
>>>>>>>>>>
>>>>>>>>>> That's the point of the macro to hide the boiler plate code.
>>>>>>>>>>
>>>>>>>>>>> target mask into that registration, and the macros have no parameter
>>>>>>>>>>> for it.
>>>>>>>>>>
>>>>>>>>>> Couldn't you just change the macros to take that parameter instead of
>>>>>>>>>> expanding it everywhere?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Problem of macros is that they don't have default parameters, so you
>>>>>>>>> need variants for everything:
>>>>>>>>>
>>>>>>>>> DEFINE_MACHINE
>>>>>>>>> DEFINE_MACHINE_EXTENDED
>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>>>>>>>> and now would need a new variant, with variant for other existing ones.
>>>>>>>>>
>>>>>>>>> In the end, it's just simpler to remove this and add the boilerplate.
>>>>>>>>> It's written once and never modified, so using a macro just save typing
>>>>>>>>> those lines once.
>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> BALATON Zoltan
>>>>>>>>>>
>>>>>>>>>>> This series expands every caller first, with no behavior change, so the
>>>>>>>>>>> follow-up only replaces the type_register_static() call.
>>>>>>>>>>>
>>>>>>>>>>> Each machine file gains a class_init function, a TypeInfo, and a
>>>>>>>>>>> type_init
>>>>>>>>>>> function that calls type_register_static(). The last patch removes
>>>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core/boards.h.
>>>>>>>>
>>>>>>>> Macros help reading the code not saving typing. If the actual
>>>>>>>> functionality is buried in a lot of boiler plate it's harder to understand
>>>>>>>> and spot bugs so putting the unintresting boiler plate behind a macro is
>>>>>>>> better even if you need a separate version for different cases. Then the
>>>>>>>> code that uses the macro will be much more obvious and not just a lot of
>>>>>>>
>>>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* are
>>>>>>> not defined properly
>>>>>>> that causes them to not be extended easily.
>>>>>>>
>>>>>>> DEFINE_TYPES is another example, use them can extend easily, how about
>>>>>>> always use DEFINE_TYPES?
>>>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_MACHINE*?
>>>>>>
>>>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
>>>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't you add
>>>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for machines
>>>>>> that need it, or if it's needed by all machines then make the new
>>>>>> parameter required and add it to all convenience wrappers too so you can
>>>>>> keep using DEFINE_MACHINE* and just need to add one parameter to it in
>>>>>> machines?
>>>>>
>>>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
>>>>> calls to it also need
>>>>> to be changed, that means touch many $target_arch files. currently
>>>>> it's 13. But after these
>>>>
>>>> That's not different from expanding the macro which would touch the same
>>>> files.
>>>>
>>>>> changes, there will be much more usage on it, and if we want to add
>>>>> more parameters or attributes
>>>>> to it, it will be a new tree-wide change.
>>>>
>>>> Do you expect to need more parameters? Can't you add them at once then?
>>>>
>>>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
>>>>> explicit defined for
>>>>> DEFINE_TYPES
>>>>
>>>> My point is that keeping the boiler plate as little as possible makes the
>>>> code more readable. DEFINE_TYPES hides some of the boiler plate,
>>>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would expose
>>>> some even if it's better than no macro at all.
>>>>
>>>> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED that
>>>> need to be added?
>>>
>>> Hi BALATON
>>> the things we faced is we first is to add TypeInfo::is_available parameter to
>>> DEFINE_MACHINE_EXTENDED, and have more usage of it.
>>> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED, this is
>>> a prepare to remove TypeInfo::is_available parameter from
>>> DEFINE_MACHINE_EXTENDED,
>>>
>>> And finally, once all usage of TypeInfo::is_available can be replaced with
>>> targets:uint64_t, then we finally need to remove
>>> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
>>
>> Is there a way to avoid the temporary is_available churn and introduce the
>> targets:uint64_t right away? (I'm not following this so I don't really
>> know what you're talking about just looks like there's some churn here
>> which might be good to awoid anyway independent of these macros.)
>>
>>> That's what I am facing now. And the explicit
>>> static const TypeInfo xxx_machine_typeinfo = {
>>>    .name       = MACHINE_TYPE_NAME("xxx"),
>>>    .parent     = TYPE_MACHINE,
>>>    .class_init = xxx_machine_class_init,
>>> };
>>>
>>> Will help me avoid the issue. And I think this is a little boilerplate
>>> and very explicit.
>>
>> That's not all DEFINE_MACHINE hides though. It's longer with .abstract,
>> .secure and .iterfaces plus the machine initfn that would also need to be
>> expanded if you used DEFINE_TYPES.
>>
>> Is this conversion needed for all machines using all DEFINE_MACHINE
>
> At the end, only "none" machine do not have targets parameter or
> (QEMU_ARCH_ALL), as that's the sole
> machine that supports all targets.
>
>> variants or only some of them? If the latter why not convert those to
>
>
>
>
>> DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed with
>> other wrappers passing a default value without needing a new parameter.
>> That does not work if all machines need to do this but even then, keeping
>> the macro and adding a new required parameter is better in my opinion as
>> it keeps boiler plate hidden.
>
> Another option is keep DEFINE_MACHINE and introduce DEFINE_MACHINE_TARGETS
> and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE for
> simple case,
> that is parent is TYPE_MACHINE and have no custom type and no more
> attributes assigned.
> DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less clear
> than calling to DEFINE_MACHINE.
> And if we want to set more attributes to TypeInfo, just expand it to
> use type_init or DEFINE_TYPES, how about this way.
>
> This will be something like:
>
> #define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
>    static void machine_initfn##_class_init(ObjectClass *oc, const void *data) \
>    { \
>        MachineClass *mc = MACHINE_CLASS(oc); \
>        machine_initfn(mc); \
>    } \
>    static const TypeInfo machine_initfn##_typeinfo = { \
>        .name       = MACHINE_TYPE_NAME(namestr), \
>        .parent     = TYPE_MACHINE, \
>        .class_init = machine_initfn##_class_init, \
>    }; \
>    static void machine_initfn##_register_types(void) \
>    { \
>        type_register_targets(&machine_initfn##_typeinfo, targets); \
>    } \
>    type_init(machine_initfn##_register_types)
>
> /* Implicitly insecure */
> #define DEFINE_MACHINE(namestr, machine_initfn) \
>    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \
>
> As the many call is to DEFINE_MACHINE.
>
> And after all conversion, all existing usage of DEFINE_MACHINE will be
> converted to
> DEFINE_MACHINE_TARGETS.
> DEFINE_MACHINE will be called for ('none') machine or future heterogeneous
> machines
>
>
> Either way, these patches will be dropped. We will introduce
> DEFINE_MACHINE_TARGETS first.

I think I'm lost and cannot follow what you want. As far as I understood 
you want to add a new field "target" to machine TypeInfo but instead of 
adding that straight away you proposed to first add is_available then 
later replace that with target. I asked why do you need is_available and 
not add target right away?

Then if this target parameter will be needed for all machines why can't 
you add that to all DEFINE_MACHINE macros as a required parameter and set 
it for all machines passing it through to DEFINE_MACHINE_EXTENDED which 
sets in the TypeInfo. That way no machines need changing other than adding 
the target parameter to the existing DEFINE_MACHINE calls.

What am I missing?

Regards,
BALATON Zoltan
--3866299591-608982516-1793631358=:93499--


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 14:58:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 14:58:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468435.1677537 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtUL-0008Tf-33; Mon, 02 Nov 2026 14:58:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468435.1677537; Mon, 02 Nov 2026 14:58:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNtUL-0008TY-0O; Mon, 02 Nov 2026 14:58:21 +0000
Received: by outflank-mailman (input) for mailman id 1468435;
 Mon, 02 Nov 2026 14:58:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNtUJ-0008TS-P8
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 14:58:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNtUJ-000JLJ-5j
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:58:19 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae8a508-bab6-0a2a0a5309dd-0a2a45099af2-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:58:19 +0100
Received: from [52.101.69.101]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae8a50a-be1a-0a2a45090019-34654565f262-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 15:58:19 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by AS8PR03MB7906.eurprd03.prod.outlook.com
 (2603:10a6:20b:421::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 14:58:16 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 14:58:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=HwyZqclq+3Ba8rqwMpHjT407G7+39KeKqguFfsCyjFKMinsIB44Li/6lToCTiJVZbv9sYINAXAU1rVT5iN+QEqNS0Yd1IbEAGaswrgayAA4tX8uoklb22v85aE28dI1z/4dmrhwtWoBIJFjdCWAxqq9jmRvNLGoABlYjsHJ3/QkzK15iYSfQAqDQvXDG24VjfDxzA7vZ3BI0YXx281X3UebAr4HxFRpZVrx/uTSQqssfnK8bAQ58JNwFVLhFPIeM8L3phvo0Jp122YRv8tDWj6SmGRuHUTA5dSe3WTzzocT79jphZ1zUI2yPzVkfDOnELmber3muESeTIzAPLHnWTg==
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=DZf0bdoohp4mZdmIhDhsgy/IY4IhgqiMoXm+nqn9zmc=;
 b=KaVAFPVQwmHY3gqsJr9aGPQJOw88J/9AeGbV5uXjnU07nczwDX5n/qGoa4cYGt1EPniW7kFAN3Z9CmoqVZCbTJMZhxikFqdE7da/H1xGOAby/zXG0uk2YaMZKjFVMqmalPwZMxxaR5toKcyg2KyQqAG8OihMCu5GCvX0VeIMXbO7fa+4Z/vA7u4DsQn8Sn7VAYtWh1C9WIGKow0e8qJ2ur0FA/kxn8zrYNYXm0kl6QyzyFVBxU/OZzNHiUFPOQFu4e64hHX3Wjoyex2PM0Ml33E1HlpXaan5dH5ESgezFEGkyGeybULRdxeo7LxbwDgaJg8EE+kmYd6XNsq/fBBIPg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DZf0bdoohp4mZdmIhDhsgy/IY4IhgqiMoXm+nqn9zmc=;
 b=OO7C0JsljhBMSqclWz5lByzg4ZthX8t0Mx7cpKzBwRt3JE+54qkeR8qksqNlCMEKg1oaGIpQAV2z23SV4ayHgpCTbRFvXF+kRA1BJFn3o9F7TOOLJWnDgmtOVXLr6RTmGAqDle0I8pymjb+SRJVf7H3riOg5JbyICM5/UZi3Mjgrclqv2a76uhq1TF6M66/DWtEQjUTOEiqjMn1qmeTW013gexRWPtF61CxvyUr65wPP9zYyeg2ngur+bB55qtAI+V8UsaBgcWvzREkjpLt8PaJkkRnMWccxmDQQeQiXZloyiFFdC1qLgStryzVr+BKHki8PRymN2f4cB677dp2SLw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy
 Astie <teddy.astie@vates.tech>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
Subject: [PATCH v6] xen/arm, xen/common: Add Kconfig option to control Dom0
 boot
Thread-Topic: [PATCH v6] xen/arm, xen/common: Add Kconfig option to control
 Dom0 boot
Thread-Index: AQHdatqXsGoVpH5TiE2rv7ud88hJMg==
Date: Mon, 2 Nov 2026 14:58:16 +0000
Message-ID:
 <f8bf3e87dac3bcd0d8ea680fcce055c133aa9e87.1793374283.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|AS8PR03MB7906:EE_
x-ms-office365-filtering-correlation-id: 9a567c6c-99dc-4671-2786-08df38f1b9b9
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|6133799003|10067099003|261102123227099002|18002099003|3023799007|38070700021|56012099006|11063799006|261022075727099003|261021121427099003|261022105027099003|261026140227099003|261026121527099003|261009223027099003|261028144727099003|261021135927099003|261021123027099003;
x-microsoft-antispam-message-info:
 7+2XmSycwA3NPbURHkSuJ/A2G31rE9SPVNGBTT2u68eDQPasvpj1+Kk4KWkcaitZ9sO7FYuadrdstDqFCyJYGhXgL18fMmMQQuY/BBGYHld3cIOlFXR6sFtq81j5wlqmE0dCZMGN/naRn9Mpts6ni+zrVKA9yzOI8e3H8TMkfz+YX3E0ajACdk3oAxtc2OqB6JNdXkaXfxMqrvTMrPKhKGkPic74yFvikIy4AErz8JvcT/7i8r5IZh9/Pg+T/omZFg7ptOwsSZkp1L4Gzxe3EkySexx+OQU1TMo2i7FjcHWiuEfiaAi6OVlU2yETWkZpCfjbHHf9/1bABGw+oHf8e+qCqe+zLDQYcDhHn/HxqxGjd4dGgYoWLmRKqqoNd1MJGASvRfNO/zSoUGUedtAjSEuWKoQ9x+t0sGZ0zJkKkXUdShFsr1aNBL4esEtUst/f+A/LJ9W33IHQS1dVSB+Oqwzp0MFuktAt6V7ScPtkieM/11WqAUg5+YU6y4hJIAPpDmEXpOJfQm/PiTG+umm372Tf7udEK89zCcnL4JG2MDjUhbcJQyOxl+KR8lxcfAtNihKyNjhWuxGZS/gHf4ncSfNnsYHsyF5vtGy90l75eBKbL08mNorzhd3QA8YVi9zjszdCi0weBwz9wy+rCEyiHYrbDR5G16VbvZz88moZ/QyfrFsKTahTFfdO+uYCb8lEvI/m5AeL6LoBL0UGL1I5jBAmNOzuiZBEVfNDErC+UQk=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(6133799003)(10067099003)(261102123227099002)(18002099003)(3023799007)(38070700021)(56012099006)(11063799006)(261022075727099003)(261021121427099003)(261022105027099003)(261026140227099003)(261026121527099003)(261009223027099003)(261028144727099003)(261021135927099003)(261021123027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?1ppdvXa5/WWPdwyAiPC3z93qYCzZh5UZJUHBTGoOF/2/uhNY8hyDJ8EmIE?=
 =?iso-8859-1?Q?hXuyZGcCYpxyOAZJ/0Q7Cbx7pd+4ZBIh2eY/ooYSfJLKob5lSsrl2PSfVV?=
 =?iso-8859-1?Q?e1N4WWGI+VEBAs7lWsjV/BOpaRqTcdVZzS9JzbJTk5hzdVyBH/9mPq/UZ8?=
 =?iso-8859-1?Q?lhXzvxkyStVZrOwDd4vFjNnhmBMOdCyfQ5IM4TYtT/Osxj4zo1rskuwm6M?=
 =?iso-8859-1?Q?Jphm/CnNxCLJ66DhQkCA/67dTGgjmHPpbgnRbVzvEw7oiiisZ3ATlRnw2e?=
 =?iso-8859-1?Q?XS1W9LucknUD3lKAISq78RN0W/S/AJ+dwg7oh8FG1FG8mCuDEhlaPCOPAn?=
 =?iso-8859-1?Q?CUNmjAnQTEHoyZp4fwD+xGiZBRw6acWOQtrio37tVckgSm/XuuaBFBmxNp?=
 =?iso-8859-1?Q?8zRhvh5s6cz8YJILkZidbN1Qqun6Dx9By1eskUdCD6PePewGma2yzOegf6?=
 =?iso-8859-1?Q?nmbNP/EUgdk1yE8AfJpltW2XbeYJbZNfLlgbNDO/Z8hgpyTUmr+Y9uneHs?=
 =?iso-8859-1?Q?YugbIveXpRZ3/YSd02XBSVOTbKP3AGu3qbaVbHTVjLypvAdanqJU+pZ26F?=
 =?iso-8859-1?Q?bv3CBsFMb9g+fq47H8qYbMusDRpl1S2nay1stpbxP0gqwpfIhhCpynaOce?=
 =?iso-8859-1?Q?DhqkAGRG95j68+Tykf8Q6twMEj0dECex41voVW5bixKanStlerDp8Si46C?=
 =?iso-8859-1?Q?BpmLYE88lz46j8uJzlsS8aRa2cplzHVDvyHBvB1H9lj8FbWKENCtOOC+0S?=
 =?iso-8859-1?Q?ZdGYZ8g/ftw2hNDwf+nAvz9r90lVBgcJ0s3pqsFRKp4YWlpH6L2kGdRu4X?=
 =?iso-8859-1?Q?WI56xUVGj/DiFagvo9ovm1oAOdJi8HzI9KQ4O51vHF2Pm67Bf2wB+kHCe7?=
 =?iso-8859-1?Q?FaUwTl85d4PNzRo24imAW/IY69Zsa2Q3XaLHyvKO8iJq50Vke3Be4qjFXP?=
 =?iso-8859-1?Q?bsE0ACuEdKgR0kRN8vro3RJM/AwN3bEkEytDeF9Nd0mpZAXOUeVD75dfil?=
 =?iso-8859-1?Q?MoZhPfuLJLIIbPAdQoEw4GZWu9Jge5zIX6LSE+S83gGtYZQvzZWvHVFLUQ?=
 =?iso-8859-1?Q?Br8c4dUbG+X7nXAH3okfXSn9ZOabXDn33mE0zc5y2jSCZTVo47h8l+7nhW?=
 =?iso-8859-1?Q?P06DcbprAx6Ji3WmSddhrhw97261pUyfuIq3ScDY6YfjCxE7iqmowqOxoW?=
 =?iso-8859-1?Q?hBqxTcn6X5M8rxmt/7vaPuJh6PB//TcVwqxlZj2UiaebQkByJapsJa2tGD?=
 =?iso-8859-1?Q?S7jH9KFQxIJ4r0cwH6SYxgNN8zDQHS7NBHlHGgAPWqHWpNloPGXeNQn4RF?=
 =?iso-8859-1?Q?Z4Ba9wTFsoSZTGLD6I2JgAj0Wu1Acd2ALoA/pk/zGJal2ybUee3L5zNyBb?=
 =?iso-8859-1?Q?RlpGOBcp1sBkXIMcBIp/BUgQiU4KhPwpl3Z37c6zdOOXnw9c7NtLopWrfz?=
 =?iso-8859-1?Q?b0EBLdw8BefVjDbBvU858tSGSyhUHsCkeJjX/csFbGBCasMx/huoj4k+BH?=
 =?iso-8859-1?Q?KXNmC8aazPgrVyuCqrbk+B0gbdmLsp9L+nHtcbQTpcns1vYRcAiQuzvr9s?=
 =?iso-8859-1?Q?8c8pAegioIG5U2ZZjm1fozB3sYykGlb1C4iavWolkbNbaSCRjuvqbz9Et4?=
 =?iso-8859-1?Q?LWrlZr3/W/kKsUDcAYN1NaL4VOPvM25A8Z1CjER75Zc8xBudSRY3COOPuJ?=
 =?iso-8859-1?Q?Lu4ch4eAEIWrsD7r4lV/YdeMRnAnSE4NsyeawJwSRuTXx8TpWEjTlInwNr?=
 =?iso-8859-1?Q?kYqCCZeD3+2PPtelGOL4qFfPUWTnRAtqJ2piiSzjp2foFJzYf88uKMB+G/?=
 =?iso-8859-1?Q?rYBCi0b1CO6ww+ymdMt5zWk6SDARus4=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a567c6c-99dc-4671-2786-08df38f1b9b9
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 14:58:16.3665
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ysBEOe79kTn19XDLUP8jkgjQ4Yq8NdAYlDvBR3dlEpqAik/EsJkAGvtv7QHIRT69KJHqGGmaUOjamu386BbXmcH0r1EHvc+/jW+VULmcJbI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7906
X-purgate-ID: tlsNG-bad1c0/1793631499-BD2CC034-CD226920/10/78276251493
X-purgate-type: spam
X-purgate-size: 12154

Introduce HAS_DOM0 and a default-enabled DOM0_BOOT option in common
Kconfig. Arm and x86 select HAS_DOM0. Expert configurations can disable
DOM0_BOOT; this patch implements the corresponding code exclusion on Arm.
Making x86 honor the option remains a TODO, potentially as part of the
Hyperlaunch work. In particular, x86 still builds and boots its legacy
Dom0 even if DOM0_BOOT is disabled.

On Arm, exclude legacy Dom0 creation and its private memory, vCPU, SVE
and LLC coloring options when DOM0_BOOT is disabled. Hide DOM0_MEM in
that configuration and disallow ACPI, since the alternative dom0less boot
path requires device tree. Keep the x86 DOM0_MEM setting and dom0 command
line parser available until x86 honors DOM0_BOOT.

Retain the domain and hardware-domain builders, guest SVE and LLC
coloring support, and Xenstore domain setup: these are also used by
dom0less guests. This is a switch for legacy Dom0 boot support, not for
all control-domain or hardware-domain functionality, and it does not
claim to remove every unreachable path or establish MISRA compliance.

Check for dom0less mode once in the Arm boot path. Otherwise, create Dom0
when supported or panic when neither boot mode is available.

RISC-V does not yet have a legacy Dom0 boot path in this staging tree,
so it does not select HAS_DOM0.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Acked-by: Jan Beulich <jbeulich@suse.com>

---

Changes in v6:
- Use the single dom0less check and else-if chain suggested by Michal.
- Exclude Dom0-only memory, SVE and LLC coloring options and code.
- Make Arm ACPI depend on DOM0_BOOT.
- Expose the common option on x86 and document the implementation TODO.
- Explain why RISC-V does not yet select HAS_DOM0.
- Replace the broad dead-code/MISRA claims with the actual scope.

Changes in v5:
- rebased on top of the latest staging.
- add Ack

Changes in v4:
- change Misra rule to 2.1 from 2.2 in description
- remove extra dependencies for ARM architecture from DOM0_BOOT
- rephrase DOM0_BOOT help by adding hyperlaunch
- DOM0_BOOT is mandatory for x86 architecture

Changes in v3:
- rephrase error message when dom0less mode wasn't detected while dom0
is disabled.
- rephrase help message for DOM0_BOOT config option
- update DOM0_BOOT dependencies for X86

Changes in v2:
- decided not to rename HAS_DOM0 (HAS_OPTIONAL_DOM0 was another option
suggested in ML) because in this case HAS_DOM0LESS should be renamed
either.
- fix order of HAS_DOM0 config parameter
- add HAS_DOM0 option to x86 architecture.

CONFIG_DOM0_BOOT Kconfig option was introduced to make the Dom0
regular (legacy) domain an optional feature that can be compiled out
from the Xen hypervisor build.

The primary motivation for this change is to enhance modularity and
produce a cleaner, more specialized hypervisor binary when a control
domain is not needed. In many embedded or dedicated systems, Xen is
used in a "dom0less" configuration where guests are pre-configured and
launched directly by the hypervisor. In these scenarios, the entire
subsystem for booting and managing Dom0 is unnecessary.

---
 xen/arch/arm/Kconfig                 |  3 ++-
 xen/arch/arm/arm64/sve.c             |  2 ++
 xen/arch/arm/domain_build.c          | 10 ++++++++++
 xen/arch/arm/include/asm/arm64/sve.h |  2 ++
 xen/arch/arm/setup.c                 |  7 ++++---
 xen/arch/x86/Kconfig                 |  1 +
 xen/common/Kconfig                   | 14 ++++++++++++++
 xen/common/domain.c                  |  3 +++
 xen/common/llc-coloring.c            |  6 ++++++
 9 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index b9c5c40678..4d696ff33f 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -18,6 +18,7 @@ config ARM
 	select GENERIC_UART_INIT
 	select HAS_ALTERNATIVE if HAS_VMAP
 	select HAS_DEVICE_TREE_DISCOVERY
+	select HAS_DOM0
 	select HAS_DOM0LESS
 	select HAS_GRANT_CACHE_FLUSH if GRANT_TABLE
 	select HAS_SHARED_INFO
@@ -105,7 +106,7 @@ source "arch/Kconfig"
=20
 config ACPI
 	bool "ACPI (Advanced Configuration and Power Interface) Support (UNSUPPOR=
TED)" if UNSUPPORTED
-	depends on ARM_64 && ARM_EFI
+	depends on ARM_64 && ARM_EFI && DOM0_BOOT
 	help
=20
 	  Advanced Configuration and Power Interface (ACPI) support for Xen is
diff --git a/xen/arch/arm/arm64/sve.c b/xen/arch/arm/arm64/sve.c
index 23a9d0ba66..08ca49bd7f 100644
--- a/xen/arch/arm/arm64/sve.c
+++ b/xen/arch/arm/arm64/sve.c
@@ -13,8 +13,10 @@
 #include <asm/processor.h>
 #include <asm/system.h>
=20
+#ifdef CONFIG_DOM0_BOOT
 /* opt_dom0_sve: allow Dom0 to use SVE and set maximum vector length. */
 int __initdata opt_dom0_sve;
+#endif
=20
 extern unsigned int sve_get_hw_vl(void);
=20
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 72f6f7539a..f047d49f24 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -44,8 +44,10 @@
 #include <asm/grant_table.h>
 #include <xen/serial.h>
=20
+#ifdef CONFIG_DOM0_BOOT
 static unsigned int __initdata opt_dom0_max_vcpus;
 integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
+#endif
=20
 /*
  * If true, the extended regions support is enabled for dom0 and
@@ -54,6 +56,7 @@ integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
 static bool __initdata opt_ext_regions =3D true;
 boolean_param("ext_regions", opt_ext_regions);
=20
+#ifdef CONFIG_DOM0_BOOT
 static u64 __initdata dom0_mem;
 static bool __initdata dom0_mem_set;
=20
@@ -87,6 +90,7 @@ int __init parse_arch_dom0_param(const char *s, const cha=
r *e)
=20
     return -EINVAL;
 }
+#endif /* CONFIG_DOM0_BOOT */
=20
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
@@ -124,6 +128,7 @@ paddr_t __init hwdom_get_fdt_alloc_size(void)
     return ACPI_DOM0_FDT_MIN_SIZE;
 }
=20
+#ifdef CONFIG_DOM0_BOOT
 unsigned int __init dom0_max_vcpus(void)
 {
     if ( opt_dom0_max_vcpus =3D=3D 0 )
@@ -136,6 +141,7 @@ unsigned int __init dom0_max_vcpus(void)
=20
     return opt_dom0_max_vcpus;
 }
+#endif
=20
 /*
  * Insert the given pages into a memory bank, banks are ordered by address=
.
@@ -1865,6 +1871,7 @@ int __init construct_domain(struct domain *d, struct =
kernel_info *kinfo)
     return 0;
 }
=20
+#ifdef CONFIG_DOM0_BOOT
 static int __init construct_dom0(struct domain *d)
 {
     struct kernel_info kinfo =3D KERNEL_INFO_INIT;
@@ -1903,6 +1910,7 @@ static int __init construct_dom0(struct domain *d)
=20
     return construct_hwdom(&kinfo, NULL);
 }
+#endif
=20
 int __init construct_hwdom(struct kernel_info *kinfo,
                            const struct dt_device_node *node)
@@ -1954,6 +1962,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
     return construct_domain(d, kinfo);
 }
=20
+#ifdef CONFIG_DOM0_BOOT
 void __init create_dom0(void)
 {
     struct domain *dom0;
@@ -2011,6 +2020,7 @@ void __init create_dom0(void)
=20
     set_xs_domain(dom0);
 }
+#endif /* CONFIG_DOM0_BOOT */
=20
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/sve.h b/xen/arch/arm/include/as=
m/arm64/sve.h
index a71d6a295d..1315063a9d 100644
--- a/xen/arch/arm/include/asm/arm64/sve.h
+++ b/xen/arch/arm/include/asm/arm64/sve.h
@@ -35,7 +35,9 @@ bool sve_domctl_vl_param(int val, unsigned int *out);
=20
 #ifdef CONFIG_ARM64_SVE
=20
+#ifdef CONFIG_DOM0_BOOT
 extern int opt_dom0_sve;
+#endif
=20
 static inline bool is_sve_domain(const struct domain *d)
 {
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 2cd1c021b5..ac282895c2 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -458,11 +458,12 @@ void asmlinkage __init noreturn start_xen(unsigned lo=
ng fdt_paddr)
=20
     do_init_boottests();
=20
-    /* Create initial domain 0. */
-    if ( !is_dom0less_mode() )
+    if ( is_dom0less_mode() )
+        printk(XENLOG_INFO "Xen dom0less mode detected\n");
+    else if ( IS_ENABLED(CONFIG_DOM0_BOOT) )
         create_dom0();
     else
-        printk(XENLOG_INFO "Xen dom0less mode detected\n");
+        panic("Neither dom0 nor dom0less mode was detected, aborting\n");
=20
     if ( acpi_disabled )
     {
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index e5535ac484..39182f6ce4 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -18,6 +18,7 @@ config X86
 	select HAS_COMPAT
 	select HAS_CPUFREQ
 	select HAS_DIT
+	select HAS_DOM0
 	select HAS_EHCI
 	select HAS_EX_TABLE
 	select HAS_FAST_MULTIPLY
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 5b289e444f..63735fb83f 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -26,6 +26,16 @@ config DOM0LESS_BOOT
 	  Xen boot without the need of a control domain (Dom0), which could be
 	  present anyway.
=20
+config DOM0_BOOT
+	bool "Dom0 boot support" if EXPERT
+	default y
+	depends on HAS_DOM0
+	help
+	  Dom0 boot support enables Xen to boot to the all-powerful domain (Dom0)=
.
+	  If this isn't enabled Xen is expected to boot in dom0less/hyperlaunch
+	  mode only. Currently only Arm respects this option; making x86
+	  respect it is a TODO, potentially as part of the Hyperlaunch work.
+
 config DOMAIN_BUILD_HELPERS
 	bool
=20
@@ -125,6 +135,9 @@ config HAS_DEVICE_TREE_DISCOVERY
 	bool
 	select DEVICE_TREE_PARSE
=20
+config HAS_DOM0
+	bool
+
 config HAS_DOM0LESS
 	bool
=20
@@ -575,6 +588,7 @@ config CMDLINE_OVERRIDE
=20
 config DOM0_MEM
 	string "Default value for dom0_mem boot parameter"
+	depends on DOM0_BOOT || X86
 	default ""
 	help
 	  Sets a default value for dom0_mem, e.g. "512M".
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 6b52713518..52c03fc2ad 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -610,6 +610,8 @@ custom_param("extra_guest_irqs", parse_extra_guest_irqs=
);
=20
 #endif /* CONFIG_HAS_PIRQ */
=20
+/* Only Arm currently honors CONFIG_DOM0_BOOT. */
+#if !defined(CONFIG_ARM) || defined(CONFIG_DOM0_BOOT)
 static int __init cf_check parse_dom0_param(const char *s)
 {
     const char *ss;
@@ -632,6 +634,7 @@ static int __init cf_check parse_dom0_param(const char =
*s)
     return rc;
 }
 custom_param("dom0", parse_dom0_param);
+#endif
=20
 static void domain_pending_scrub_free(struct domain *d)
 {
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index b5de5787c1..eb67306b21 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -34,8 +34,10 @@ static unsigned int __ro_after_init max_nr_colors;
 /* Default coloring configuration */
 static unsigned int __ro_after_init default_colors[NR_LLC_COLORS];
=20
+#ifdef CONFIG_DOM0_BOOT
 static unsigned int __initdata dom0_colors[NR_LLC_COLORS];
 static unsigned int __initdata dom0_num_colors;
+#endif
=20
 static unsigned int __ro_after_init xen_colors[NR_LLC_COLORS];
 static unsigned int __ro_after_init xen_num_colors;
@@ -108,12 +110,14 @@ static int __init parse_color_config(const char *buf,=
 unsigned int colors[],
     return -EINVAL;
 }
=20
+#ifdef CONFIG_DOM0_BOOT
 static int __init parse_dom0_colors(const char *s)
 {
     return parse_color_config(s, dom0_colors, ARRAY_SIZE(dom0_colors),
                               &dom0_num_colors);
 }
 custom_param("dom0-llc-colors", parse_dom0_colors);
+#endif
=20
 static int __init parse_xen_colors(const char *s)
 {
@@ -243,6 +247,7 @@ void domain_dump_llc_colors(const struct domain *d)
     print_colors(d->llc_colors, d->num_llc_colors);
 }
=20
+#ifdef CONFIG_DOM0_BOOT
 int __init dom0_set_llc_colors(struct domain *d)
 {
     typeof(*dom0_colors) *colors;
@@ -267,6 +272,7 @@ int __init dom0_set_llc_colors(struct domain *d)
=20
     return 0;
 }
+#endif
=20
 int domain_set_llc_colors(struct domain *d,
                           const struct xen_domctl_set_llc_colors *config)
--=20
2.43.0

base-commit: 7e020a4dd6ed30eb6c91a9abe2767034e2bb270a
branch: amoi_dom0_remove6=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 15:33:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 15:33:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468452.1677548 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNu1p-0006Jr-OA; Mon, 02 Nov 2026 15:32:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468452.1677548; Mon, 02 Nov 2026 15:32:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNu1p-0006Ji-KG; Mon, 02 Nov 2026 15:32:57 +0000
Received: by outflank-mailman (input) for mailman id 1468452;
 Mon, 02 Nov 2026 15:32:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <m.v.b@runbox.com>) id 1xNu1m-0006Jc-2N
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:32:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNu1l-007oBt-9f
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 16:32:53 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <m.v.b@runbox.com>)
 id 6ae8ad15-8faa-0a2a0a5109dd-0a2a45068d46-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 16:32:53 +0100
Received: from [185.226.149.38] (helo=mailtransmit05.runbox.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <m.v.b@runbox.com>)
 id 6ae8ad24-195a-0a2a45060019-b9e29526e85a-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 16:32:52 +0100
Received: from mailtransmit02.runbox ([10.9.9.162] helo=aibo.runbox.com)
 by mailtransmit05.runbox.com with esmtps (TLS1.2) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93)
 (envelope-from <m.v.b@runbox.com>)
 id 1xNu1j-00C0kq-Fu; Mon, 02 Nov 2026 16:32:51 +0100
Received: from [10.9.9.74] (helo=submission03.runbox)
 by mailtransmit02.runbox with esmtp (Exim 4.86_2)
 (envelope-from <m.v.b@runbox.com>)
 id 1xNu1L-0006cC-C6; Mon, 02 Nov 2026 16:32:27 +0100
Received: by submission03.runbox with esmtpsa [Authenticated ID (536975)]
 (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.95) id 1xNu1I-00CPK3-46; Mon, 02 Nov 2026 16:32:24 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=runbox.com header.i="@runbox.com" header.h="Cc:To:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com;
	 s=selector1; h=Cc:To:Message-Id:Content-Transfer-Encoding:Content-Type:
	MIME-Version:Subject:Date:From;
	bh=OWA2XPF4LToFYnO4yT1hL4MsaiF9uOHmMKnDy9Fz0JI=; b=YVqdIVIjvx3mLyxidi6v4t9gMc
	Z8oB/yZeWggp5/Vm+IVTnA1L0Hgp3ZQXarF40oYHbjfIL0yhFPZyEk7lAHIda3o2Ece8Q5Yzm1JYb
	gi2D8lNfKPHPz4KX5In5+waa+NbQo8xqbh2f7wLNZW++DJbUvB6EqnlorPG0XAoStia2xw22Fj+BO
	YaCqoo5ehX/op6UET2f3vWf/bFziVO4cfiwp6vklC10p4QRSE2HITX1eVDGCQ50PnRyxTU/Mu48Tp
	tYaq+Sl+Pu6hNgTtfHicMBx0Xo4MJ4BK3vhOuhjYDPeA8dQo7VCcSkPm0c0sz94oYelvRmIkEBX4t
	8ADz1CLg==;
From: "M. Vefa Bicakci" <m.v.b@runbox.com>
Date: Mon, 02 Nov 2026 07:31:55 -0800
Subject: [PATCH] x86/xen: Fix lazy MMU pause count wrap-around
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>
X-B4-Tracking: v=1; b=H4sIAAAAAAAC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE
 vPSU3UzU4B8JSMDIzNDAyNz3YrUPN2cxKpK3dzcUl1zi0RjM4vkxGRjQ1MloJaCotS0zAqwcdG
 xEH5xaVJWanIJyAyl2loABmMaTXAAAAA=
X-Change-ID: 20261027-xen-lazy-mmu-78a368cac315
To: Juergen Gross <jgross@suse.com>, 
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, 
 x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, 
 Peter Zijlstra <peterz@infradead.org>, Juri Lelli <juri.lelli@redhat.com>, 
 Vincent Guittot <vincent.guittot@linaro.org>, 
 Dietmar Eggemann <dietmar.eggemann@arm.com>, 
 Steven Rostedt <rostedt@goodmis.org>, Ben Segall <bsegall@google.com>, 
 Mel Gorman <mgorman@suse.de>, Valentin Schneider <vschneid@redhat.com>, 
 K Prateek Nayak <kprateek.nayak@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
 stable@vger.kernel.org, "M. Vefa Bicakci" <m.v.b@runbox.com>
X-Mailer: b4 0.16.0
X-purgate-ID: tlsNG-16d1c6/1793633572-F5E0E77B-5419DD35/0/0
X-purgate-type: clean
X-purgate-size: 5521

Commit bec6f41a6fe5 ("x86/xen: Get rid of last XEN_LAZY_MMU uses")
unintentionally prevents the activation of lazy MMU mode for most tasks
running on Xen PV VMs (including dom0).

That commit made xen_end_context_switch() call
__task_lazy_mmu_mode_resume() with the task being switched to. However,
the latter function decrements the pause_count field of the task without
checking whether that task's lazy MMU mode was paused or not. A task
being switched to for the first time has never been switched from, so
attempting to resume lazy MMU mode can wrap-around (underflow) the
pause_count from 0 to 255 (U8_MAX).

Furthermore, the non-zero pause_count is copied to child tasks at fork,
so all descendants (including the idle tasks of the non-boot CPUs)
inherit the non-zero pause_count. This prevents enabling lazy MMU mode
for them, because lazy_mmu_mode_enable() does not do anything when
pause_count is non-zero.

Hence, call __task_lazy_mmu_mode_resume() from xen_end_context_switch()
only if lazy MMU mode was paused.

This issue was discovered with CONFIG_DEBUG_VM=y, which enables
pause_count underflow and overflow warnings. In the examples quoted
below, the first warning shows the underflow with PID 1. The second
warning shows the overflow from 255 (U8_MAX) to 0, also for PID 1, as
indicated by the same RDI register value.

Example pause_count underflow warning:

  WARNING: include/linux/pgtable.h:362 at xen_end_context_switch+0x4e/0x60, CPU#0: swapper/0/0
  CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 7.2.4-1 #2 PREEMPT(full)
  RIP: e030:xen_end_context_switch+0x4e/0x60
  ...
  RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888004930000

Note: The PID is shown as 0 above, because current_task is updated in
__switch_to() after arch_end_context_switch(). arch_end_context_switch()
calls xen_end_context_switch() indirectly.

Example pause_count overflow warning:

  WARNING: include/linux/pgtable.h:319 at xen_start_context_switch+0x64/0x70, CPU#0: swapper/0/1
  CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G        W  7.2.4-1 #2 PREEMPT(full)
  ...
  RIP: e030:xen_start_context_switch+0x64/0x70
  ...
  RDX: 0000000000000000 RSI: 0000000013f7894d RDI: ffff888004930000
  ...
  Call Trace:
   <TASK>
   __schedule+0x36a/0x1a90
   schedule+0x27/0xa0
   schedule_timeout+0xbd/0x100
   __wait_for_common+0x97/0x1b0
   wait_for_completion_killable+0x24/0x40
   __kthread_create_on_node+0x13e/0x240
   kthread_create_worker_on_node+0xee/0x1c0
   workqueue_init+0x26/0x420
   kernel_init_freeable+0x101/0x360
   kernel_init+0x1a/0x130
   ret_from_fork+0x2b0/0x340
   ret_from_fork_asm+0x1a/0x30
   </TASK>

Fixes: bec6f41a6fe5 ("x86/xen: Get rid of last XEN_LAZY_MMU uses")
Cc: stable@vger.kernel.org # 7.2.x
Signed-off-by: M. Vefa Bicakci <m.v.b@runbox.com>
---
=== Testing notes ===
This commit was tested with kernel v7.3-16755-gd135ab453a74 and v7.4-rc1
with a domU PV VM, and versions from v7.2.4 to v7.2.14 with dom0 and
domU PV VMs running on Xen v4.19.5. CONFIG_DEBUG_VM=y was set for all
tests, and no warnings were observed.

=== Debugging notes ===
For debugging, I instrumented xen_start_context_switch(),
xen_end_context_switch() and copy_process(), and I confirmed that the
inherited pause_count value is decremented for each level of the process
tree, starting from 255.

=== Credits ===
The patch was hand-written, but the commit message was polished with a
few rounds of LLM review.
---
 arch/x86/xen/enlighten_pv.c | 10 +++++++++-
 include/linux/sched.h       | 19 +++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index c5117a7730d6..68f8a977999b 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -431,7 +431,15 @@ static void xen_end_context_switch(struct task_struct *next)
 
 	xen_mc_flush();
 	this_cpu_write(xen_cpu_lazy_mode, false);
-	__task_lazy_mmu_mode_resume(next);
+
+	/*
+	 * A newly created task can be switched to without ever having been
+	 * switched from, so it will not have a prior lazy MMU pause to undo
+	 * from xen_start_context_switch(). Hence, resume lazy MMU only if it
+	 * was paused.
+	 */
+	if (__task_lazy_mmu_mode_paused(next))
+		__task_lazy_mmu_mode_resume(next);
 }
 
 static unsigned long xen_store_tr(void)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 1c93da75226e..3f9341f1f827 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1791,6 +1791,25 @@ static inline bool is_lazy_mmu_mode_active(void)
 
 	return __task_lazy_mmu_mode_active(current);
 }
+
+/**
+ * __task_lazy_mmu_mode_paused() - Return a task's lazy MMU mode pause state
+ * @tsk: The task to check.
+ *
+ * Test whether @tsk has its lazy MMU mode state set to paused
+ * (i.e., pause_count > 0).
+ *
+ * This function is intended for architectures that implement the lazy MMU
+ * mode; it must not be called from generic code.
+ *
+ * Return: Whether task @tsk has paused lazy MMU mode.
+ */
+static inline bool __task_lazy_mmu_mode_paused(struct task_struct *tsk)
+{
+	struct lazy_mmu_state *state = &tsk->lazy_mmu_state;
+
+	return state->pause_count > 0;
+}
 #endif
 
 extern struct pid __rcu *cad_pid;

---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261027-xen-lazy-mmu-78a368cac315

Best regards,
--  
M. Vefa Bicakci <m.v.b@runbox.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 15:46:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 15:46:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468461.1677557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNuES-0008JV-Os; Mon, 02 Nov 2026 15:46:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468461.1677557; Mon, 02 Nov 2026 15:46:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNuES-0008JO-LO; Mon, 02 Nov 2026 15:46:00 +0000
Received: by outflank-mailman (input) for mailman id 1468461;
 Mon, 02 Nov 2026 15:45:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNuER-0008JI-6z
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 15:45:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNuEQ-000SS0-Jn
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 16:45:58 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8b02a-e002-0a2a0a5209dd-0a2a450adf08-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 16:45:55 +0100
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8b033-f2d2-0a2a450a0019-d155dd36d4be-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 16:45:55 +0100
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-48e00eee27dso1574700f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 07:45:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71a4d4f9sm21009735f8f.2.2026.11.02.07.45.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 07:45:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793634355; x=1794239155; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JgnpjN07xx918bsvOgOOZRIdz0VDMkS97pExvRDMKJI=;
        b=HcWDT/M7TSIN2y70TkCKNaVy2WSrhYo6pd5/JSEAFxhLn44RyWtv4x5gnYGwIASZxl
         Skua+MGr6Nu+vV2Q/eT2SWA1pOpyU5xHskzupIsSea0IF8VlA2apbs8dLpGmzincDu5O
         73flYFh1lT0VCAqICdNCEqJhuBxOa2k40EFYr0m0uAbzxWTh+xsuWErUxeUy0QrDYXCn
         6yGtqRctzUhtaC47+yf9gB1OFDaZpSRUIRnsvMZcs5RksGPhKjFTVQn4m2Rhm6N+qytz
         xpgHD9zX51CSh4Ak+rOBQ1h3w8HKBqFHSsrdjirbi8r2WaSyNZOo2xTbmtg4LeN/+l7C
         mQQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793634355; x=1794239155;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=JgnpjN07xx918bsvOgOOZRIdz0VDMkS97pExvRDMKJI=;
        b=UklrM6bme3vt1vIEcdtFNv7tEcM58DYLb5MresyNGsEhIKEHgGqVPfH6/+SUprEeLY
         vophjHQjfcefGTMZA+zGzbBMUhwKi5YxSPqt1nT28S3BgvptcwMqcYi776kvZErH3ExY
         kJgc3zWer3s04wZCPymqOTdSXYoZ1+wriK6RUlGBVWTIEfITaH7TuTous+0pJmiTvQYH
         wlBgYkc8SSGR/FvQaIcyOeU/kfgUjUYPrTqMJZBFfSUE85RA5lHDOMT+E/ad285bg5B1
         cLV+vp2gyuCs5Gd5IRUfg+RFRzB5/Uw9aXPH7MLWaGQh8UMt5XeRnTGjy5V0FiIsiHce
         d7Og==
X-Forwarded-Encrypted: i=1; AKwUvBzaqtVMc5ABGIVpz6hrUk38PPZALAukTMgoFGblRJ4xES6PuCIMm1u96uQX1fllG0zs1PEyxM+gzZ0=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9Apxm8o6hhxcz8/yQZgLRSJrEmbtXwvF+XOb77GTB+b6RTTUf2
	knSG4QCEIt9GkgWzb8Hhi6lyYJ7zRHZ5Vvf2+t+qCI3l3Y2jR+rjGLt17Wp/EuOSqjkC7nfkkiR
	39kUTCg==
X-Gm-Gg: AYBFou15ApKGBlXt8o3VkaM1JN9Tihf/IaQbUn9nb938QwyN0NLc/Umr8Tqwga2KjZ5
	0H6sIsr/MQY+ys5IKXiy6j6pbcAVJ6WF0yoQX4pzzv7IcZv2l19lIXEk4DHjNPADPlHGMr0/po1
	4SVC6WQkphGwXXQilUC1QggIU9tu2XfIMfS1Cs65dcAAY+5twD20Pzp8ZlAVSxjRCMsxMiRNJxC
	qpUaWE5rXlY7dGUysBFQXhfkeUIImmw5YiB/zilXkKhoJQ7UHvJeMO5csCfrHX26ZaSjJ02cCF4
	I8UqGEslrIUAUsDkBZo6bbPYTGBow1Tv2d1Z7T/qtpSbxT9yzvmMo3O7McwTqlULBVLkphKqbJf
	ZqrvkFlJLXbgMzmFiVyWVMrMAH8phPMTDep4HFFc+62BL5HEPM2+Y+HqHlOaWUPU9ltiwCP+y6n
	Qa5hqH99aVmu43ie/NpJnV/GOGWJ7n3oICl5PjIcBeV6Yw39usCi2SmQIVMCtY2fWEdw5I/CjKP
	slvn5TZdOgHqXc+IDVvaNmCY+/k+9i9mpnvXnwngSVTWdIzbG8sCj66Gxu5ZS/HPpMIKnatNUmX
	B1dnFA3Ee1kwg8AgMgRR9rn45uhf8Y28scAtONYjbxIwGrX5JstPeSZAOhfrkMA7DvGiB9h2vG/
	Wh2HpWKK+zUPfMFQ=
X-Received: by 2002:a05:6000:2603:b0:48e:932:aef3 with SMTP id ffacd0b85a97d-48e6e30417amr23287223f8f.23.1793634354689;
        Mon, 02 Nov 2026 07:45:54 -0800 (PST)
Message-ID: <6cde35ac-186f-4a9e-bd66-71b752582a21@suse.com>
Date: Mon, 2 Nov 2026 16:45:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
 <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
 <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
 <fddeac51-52fc-4ab9-bb24-0b3b33faf07a@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <fddeac51-52fc-4ab9-bb24-0b3b33faf07a@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793634355-518C5CFC-98C23063/10/78276251493
X-purgate-type: spam
X-purgate-size: 2452

On 02.11.2026 15:43, Dmytro Prokopchuk wrote:
> 
> 
> On 11/2/26 12:52, Jan Beulich wrote:
>> On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
>>> On 10/26/26 13:13, Jan Beulich wrote:
>>>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>> @@ -335,6 +335,11 @@ still non-negative."
>>>>>    -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>>>>    -doc_end
>>>>>    
>>>>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>>>>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>>>>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>>>>> +-doc_end
>>>>
>>>> Why the restriction to add/sub/mul? The text ...
>>>
>>> Because this is the pattern found in the Eclair's report, and it can be
>>> deviated safely (as opposed to unary minus, division and remainder which
>>> are not included intentionally).
>>
>> Division and remainder aren't very useful with boolean operands, so can
>> surely be left out. However, more generally: How does "Eclair's report"
>> matter here? In deviation wording we want to go from what the Misra spec
>> says. The spec covers all operators. Hence any special casing we do
>> wants to be justified. And, right now at least, I see no justification
>> for restricting the deviation to just add/sub/mul.
> 
> Agreed, the report shouldn't be the argument.
> The deviation should cover only the established idioms with a clear 
> meaning, and leave the rule's protection in place elsewhere. With a 
> Boolean operand these idioms are:
> - + and - (and += / -=): "count it if the condition holds",
> - * (and *=): "this value if the condition holds, else 0".
> 
> Other operators have no such idiom (at least, I'm not aware of them).

The use with * easily extends to <<. With that it's only logical to also
include >>.

With + and - covered, it feels pretty much natural that relational
operators also want covering.

Once there, and with division and modulo agreed upon to leave out, there
isn't that much else left, I think.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 16:12:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 16:12:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468469.1677564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNueK-0004lm-Io; Mon, 02 Nov 2026 16:12:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468469.1677564; Mon, 02 Nov 2026 16:12:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNueK-0004lf-Fw; Mon, 02 Nov 2026 16:12:44 +0000
Received: by outflank-mailman (input) for mailman id 1468469;
 Mon, 02 Nov 2026 16:12:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNueJ-0004lI-0V
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 16:12:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNueG-000Wgq-Et
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 17:12:40 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6ae8b666-2eae-0a2a0a5409dd-0a2a4507da74-32
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 17:12:40 +0100
Received: from [52.101.56.22]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6ae8b677-b4ea-0a2a45070019-346538163e39-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 17:12:40 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BL1PR03MB6054.namprd03.prod.outlook.com (2603:10b6:208:312::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 16:12:37 +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.0569.011; Mon, 2 Nov 2026
 16:12:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=DyC03YxT2nfalZVmhJAvWCJ0vxRoG0UwvLE5Y3zqRGEjinOYs9Twyd3i0xoxLxtmnt0zYOj8etwrBVrNUOJzloaK0eclRMg6hBnqYgK7CRMLB3E/o2QGZUfy99HFVn88Vzi5XrAvgTIGEwAGrq6JQw6n7Pev120fsD/BBQMeNhp6+vGxJtrR3EUJjdW+tisW4/4HNI/CoYXahQwko5Qbnm/NX9QXjw8NO/xZn4X3u4sPNvqcAthFYKDZnGVdMh7yhRwCI5cC3Js8lvUlJ75CYnA5mZDy7vA3FEZsji2juz75vK23G9E+9CpA0/UTcdgK81q64R0rltMWy6UA3k+smA==
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=8RoMvbCCA1f++QeWa/2B/0InoYavQTiFNIh2Id34LG8=;
 b=YCSCLqDoZvEJd0x3OaVNbOPe2uzKnR+gvmieuhtd/CexDCnkNgmylrUYwge0orOWpKzsnkuK9RvRWq1GOJzW9bd8oytyDmrsuWiFaGxSxyPQcJdl24o98JgiqrXyc8/Tpk6PaywFZdWzfD36Hm2kx7Lls41gH6AwqLacPBn06cwnpT0nLUsHNzOJ/kqaABhv05Hfk0NkMLnldByWv5wxWqcM54KZ5Am8axvKxZ8snfXPJQm9tHP7YZLH2KTTCebAIqW/wXEq7fHp9xreSIMFiYt3ePdELaHZFlzbJvbFlpiutG/nFbUeXm0c4lwp6eSGgk2M7keCFWuaXgIsedJmLA==
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=8RoMvbCCA1f++QeWa/2B/0InoYavQTiFNIh2Id34LG8=;
 b=hj2IROJkKnGYGuLMVcJ2Lm1HYwKSAonvn95bG5nIPpkImSUabf4c9wAVOdNlJLMyaHWWSAC7hIwRP4c21iJ7eW+R0dWOWTiUQL4PX3p5BIE4NfPkMB4ZgGJfDGG9M2X8l7LzWSWR5ngeX6mFQ/yR3NiOinIwLsgrwQVApXwEP7M=
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Xen-devel
	<xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, =?Windows-1252?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk
	<jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
Thread-Topic: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
Thread-Index: AQHdatCVxv5aMy5E3UirptM0GAVt0LcazasAgAAmNnw=
Date: Mon, 2 Nov 2026 16:12:37 +0000
Message-ID:
 <CH8PR03MB82743DC59D48A031251F71AAF06A2@CH8PR03MB8274.namprd03.prod.outlook.com>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
 <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
In-Reply-To: <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH8PR03MB8274:EE_|BL1PR03MB6054:EE_
x-ms-office365-filtering-correlation-id: c0db73f4-296e-4fb4-8e6e-08df38fc1cb6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|261102123227099003|56012099006|261021121427099003|38070700021|5023799004|4143699003|11063799006|261028144727099003|261009223027099003|261022075727099003|261022105027099003|261026140227099003|261026121527099003|10067099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 uRYLpvmyaJVB4bsQHxriM7k51suR5DVBoi0r3hfXrWHP52A3ojPa9Ok6s1RQf+KC2sWEmNqQTMGV40KKZ/kmkNZdEvHQ6HekNkHJFJeyHmO88gK8h3rgUzQMERJL8tLzChdq1T4Gk3BARApEL/P1RyPD+WMDYLsufnIpK+4bC4y0xW/UPVM/tPv0BFcaK67nGVbJ0PsP/FhRdYmqMA/jL4vgzt9Z7hwyXBSgUzfJt6wAG1GYJvttVrL/sdw0mnwA6GRomsggr+DAV/z36O+2n9BXORhNYto5nWzU7Py3+5rcX616mo0e6nNeEbFk1NjZNzoUVArGt/Ze74MkIlEBKFXKAsucH2AkKXTY99FGp9LS/Tjjnmz25o+jaD/c60wZ+bH3JggoGaZpAy9rMJLSdNf/wo52xfACDnYpyVDhUuJ9njgZSYjBk9F9tw0kJ+Oiox2jy85tuDucBWxeW5rtguIYMCkt6gLWLCVMsxm6pGCeFlfEugznlbk1zAX2lmFtWfsfnQMxmDmO4v4f548oTCzO2zEZWqm4JzNxAigOOb0ijy8BDY2z5vZMMkhFQdX9jFGsyDA3TnO86s/kCx1JwLqjCHXRHvMLp1kLqTQCtOmYA8gcYOXGM9lANWsbP1Cx3OdRvQ0HD71R1NVUP6Gp66ae/+6CgSpNHwujpurx/dkZW85b+d2EeMc7EywZFgrJwsn05DsToRmpz9ldpjheaE1AJ7gPGg3e35hfkMj5cDg=
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)(23010399003)(376014)(1800799024)(366016)(261102123227099003)(56012099006)(261021121427099003)(38070700021)(5023799004)(4143699003)(11063799006)(261028144727099003)(261009223027099003)(261022075727099003)(261022105027099003)(261026140227099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?Windows-1252?Q?v5HJ2BNSwzp0DPOMBDrRFTNru3vtdJDojo/KVsUslgOF3MuzxJBazYIe?=
 =?Windows-1252?Q?VKHOSNRFKq8ewj0VgzVtfizRAfPlsGaVyP7zQUjAWRSrGUtzPYjimktS?=
 =?Windows-1252?Q?+wDa3ZxPFBuDZtQOZhlUxLt4ihaRZoCbxA5T7XI21vqrGn8ES5LQGndJ?=
 =?Windows-1252?Q?UCp6MRRrvd++VySQMnhr25F+tCxNysiUhFAWMZP2n7nWYrMIYUr9jIoS?=
 =?Windows-1252?Q?8pEQbQuHIhwtx0usArWcqiC0kIzDS+30xJacfP6HLb/O8+0qP6P7ruq8?=
 =?Windows-1252?Q?9Mtq9gIkrxL2vLlPn50e/qg2LB6hn/fwyMwP7Krtc8tZWayEhSrpLIU3?=
 =?Windows-1252?Q?LadV/fy5yXLHccOeI+dZv27mScwhY5zT+JhlNqhjvqk+EyAatSSqZDgQ?=
 =?Windows-1252?Q?6w3azLIWvPvg7oYFWtl/NimZoN5P88N5bhEJzt92FWUaga3F0eAiBGVl?=
 =?Windows-1252?Q?gh1NbulY1ReOWIdzzYcMkfDnUJkXcqaGr2Cv5CfdmroABreJrwnIFjoK?=
 =?Windows-1252?Q?r4GrjXj9az3yyzxdmPM4v46o0Kl2sLL1V8gJ2820dQh+xFnk5d2Azk4i?=
 =?Windows-1252?Q?6ruqpUX4Ivme8erz4pJsVgbPNaqptGV2WrjkF4TorpSjaN0jNyATWmLv?=
 =?Windows-1252?Q?YMu3DtGWnHM/uB/suldbQUyn/bvOtsQHDh59DbeURb+dbEQMK4sKbJpA?=
 =?Windows-1252?Q?US7Wwz62+U4fw63MZmEl16IO2OIh/k8orfdG5lJ9q07bwkot+btyud28?=
 =?Windows-1252?Q?Ad961N8qy82HN1sOiBDBImEmzWU59hjtQAyTejj+SjEaiJZfNHs1mj3w?=
 =?Windows-1252?Q?II2RD0n7fHKNnLtW8QDhlT7NGbNKj8DV0Ksz5pp/pVOWWp0FHiC3UNzS?=
 =?Windows-1252?Q?Tr27JvT/MQrx1EHvdjiXSJXPRILE3y48P98y/e1EIQn8Xoq7JSP0Kkxe?=
 =?Windows-1252?Q?X+Uj5LqruMTVULxJvkRQ6Zooelcf2OzP08ghzaqR+Goq/7AVDAfLOy9+?=
 =?Windows-1252?Q?si6DNzJ9kkdVVEGZWJgHHAjf8GRpuvG6qVAvnLWQQy2lrJFgIDMZxdWj?=
 =?Windows-1252?Q?pETBOPLyKDJODOf5SpcvUApW6xlI4eDtrK3r96ft94gDeGFfTm0OWrO2?=
 =?Windows-1252?Q?EGTmQ0FRnsjjerI8HCdeJPihWZdgpW+NYhlCa0NwUO6ju9LyUY69dklj?=
 =?Windows-1252?Q?o/TD9t9v6K3kbu7y2R96e0ZXaoDrSbNKtGPc/S2BS4QnSdv/kv4kAri0?=
 =?Windows-1252?Q?1VnCeXz5aN3tn/GEJGbgHKvFsio6wJKyns8Y/1kV2rq6dGZfobgkhgbH?=
 =?Windows-1252?Q?liP56Tlg8fzE8xjtRfzw/6wCE6TnANX9lvwMXdafolanWx8c55yBuKfi?=
 =?Windows-1252?Q?G/IeJi3a3qBVQ8+Utdds3zXttXZcSGMZiWK3FXa90bJ3pwmPMMm6nveN?=
 =?Windows-1252?Q?O3y5tP8AClJNwLARSsh/u9GuivO5RNGr/yIbVL6/vUJRFfFTjh1fepIL?=
 =?Windows-1252?Q?udthrYMEAQGSt7koh1E1t0Nh1UuriNflVTJe7p9/c8Gug9aKMhwuu+ed?=
 =?Windows-1252?Q?Kx0v5CJyMjFmL4Xrz2YZvFXxwhADCcuBVJwvHJesa9ccvc0b5Fm/aBqZ?=
 =?Windows-1252?Q?KQb0vIHvDAmGb5D0MjVofmSObAQzUKKF6wn0pT/adTiMi6zu92QPTxKA?=
 =?Windows-1252?Q?O2aUS35Iy83tCd3WkNQATizVKa2hp1RQzQnt4w+K8aSUUKaOfMU3QdjC?=
 =?Windows-1252?Q?v94nYqdGQHp7VSghGrQU0o2UqBG/0P0X66lCg9ZIxaHWmI7Hl0ysEnMe?=
 =?Windows-1252?Q?jFzK0mJOrpkCoAKCLNDAkE92lZinIRzjX308wVZ0uBhgiwsKFR5L23y5?=
 =?Windows-1252?Q?CcL324lPcFo7nA=3D=3D?=
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c0db73f4-296e-4fb4-8e6e-08df38fc1cb6
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2026 16:12:37.4201
 (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: iB1Kd1hBeIgnZhj8CsE2mf/c5wk6kT9aIHFJJPFLHHIuJ06tbns4AE1AGcocLxf4RfsvSeb/lY56izKunYJP3G3fTedunivVaWIggBCvLoA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR03MB6054
X-purgate-ID: tlsNG-ef75cf/1793635960-356C2AE4-DEB0A44B/10/78276251493
X-purgate-type: spam
X-purgate-size: 3058

> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> on behalf of And=
rew Cooper <andrew.cooper3@citrix.com>=0A=
> Sent: Monday, November 02, 2026 13:54=0A=
> To: Xen-devel <xen-devel@lists.xenproject.org>=0A=
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Jan Beulich <jbeulich@suse=
.com>; Roger Pau Monn=E9 <roger@xenproject.org>; Teddy Astie <teddy.astie@v=
ates.tech>; Jason Andryuk <jason.andryuk@amd.com>=0A=
> Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit=
=0A=
>=0A=
>=0A=
> On 02/11/2026 1:46 pm, Andrew Cooper wrote:=0A=
> > Despite prior information to the contrary, APM Vol2 revision 3.46 Octob=
er 2026=0A=
> > has been adjusted to state that the vNMI fields in vINTR are covered by=
 the=0A=
> > TPR cleanbit.=0A=
> >=0A=
> > Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_=
vintr()=0A=
> > rather than writing into the VMCB directly.=0A=
> >=0A=
> > In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.=
=A0 Move=0A=
> > the reading of vmcb_get_general1_intercepts() to the point at which it =
is=0A=
> > used; tt does not need reading on the case that vNMIs are enabled.=0A=
> >=0A=
> > Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")=0A=
> > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>=0A=
> > ---=0A=
> > CC: Jan Beulich <jbeulich@suse.com>=0A=
> > CC: Roger Pau Monn=E9 <roger@xenproject.org>=0A=
> > CC: Teddy Astie <teddy.astie@vates.tech>=0A=
> > CC: Jason Andryuk <jason.andryuk@amd.com>=0A=
>=0A=
> I forgot the extra comment.=A0 This bug is hidden by:=0A=
>=0A=
> =A0 =A0 /* The exit may have updated the TPR: reflect this in the hardwar=
e=0A=
> vtpr */=0A=
> =A0 =A0 intr =3D vmcb_get_vintr(vmcb);=0A=
> =A0 =A0 intr.fields.tpr =3D=0A=
> =A0 =A0 =A0 =A0 (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;=0A=
> =A0 =A0 vmcb_set_vintr(vmcb, intr);=0A=
> }=0A=
>=0A=
> at the very end of the vmexit handler which unconditionally writes vINTR=
=0A=
> and hits the cleanbit.=0A=
>=0A=
> This is an absurd codepath.=A0 SVM has virtualised CR8 since the very=0A=
> beginning, and put in CR8_LEGACY for Windows to use even in 32bit mode,=
=0A=
> so the only path modifying TPR is a non-accelerated write to APIC_TPR.=A0=
=0A=
> =A0That path can be updated to modify vINTR, and this logic dropped.=0A=
>=0A=
> ~Andrew=0A=
=0A=
The APM says "(Offset 60h=9667h)" for this bit in the current and previous=
=0A=
versions. Perhaps that means that more or everything in that range may be=
=0A=
covered by this bit in future? In which case more extensive changes would b=
e=0A=
needed to avoid future breakage.=0A=
=0A=
On a related note, I see the APM says this:=0A=
=0A=
> If any VMCB fields (excluding explicitly uncached fields) have been modif=
ied,=0A=
> all clean bits that are undefined (within the scope of the hypervisor) mu=
st be=0A=
> cleared to zero.=0A=
=0A=
AFAICT Xen doesn't do this. Might that cause breakage in future?=0A=
=0A=
Ross=


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 16:55:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 16:55:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468490.1677574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNvJL-0002HT-OG; Mon, 02 Nov 2026 16:55:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468490.1677574; Mon, 02 Nov 2026 16:55:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNvJL-0002HM-LS; Mon, 02 Nov 2026 16:55:07 +0000
Received: by outflank-mailman (input) for mailman id 1468490;
 Mon, 02 Nov 2026 16:55:07 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNvJL-0002HG-2g
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 16:55:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNvJK-00AMQ2-4Q
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 17:55:06 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8c043-bab6-0a2a0a5309dd-0a2a4504e208-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 17:55:01 +0100
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8c065-b57f-0a2a45040019-d155dd2bb055-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 17:55:01 +0100
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-48af4d4e61fso1983170f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 08:55:01 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b789c6sm22416249f8f.26.2026.11.02.08.54.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 08:55:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793638501; x=1794243301; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=58iP3BlBCQ7MHsk4BqKN8NAWFdKfeoBJ+Ihq0OUqeLk=;
        b=DqBCJu6ea+giB5q/xggs2kWYKpBSdOEo9wVe3FaGFo4BSierTWJqY//15bpYvgylRp
         MgPzwxmbjJHKsnV8eZI+o+mZ3Jefg7/v3r74S2HBQcIZbSC/cp9ZK/llzcNPOuLewR7M
         /etYQv+a/IuYyLhfGtazrv1oe8WRBu1lgSEH0QfJunvlnU7qmPEyjKfP31Zqso+r/RFZ
         jzpS4Oq4trludB6/+STg/+PD0vlrieV47zoViNJ0x1GHVxPZ0CK12Td7SJry2baDLK0t
         7HTIBVQPV+8okyIH6kT4RSiWvMbt8QhoI3uXH+97Tki8GxcM9LMWbYCfLzPO7PWRrAVA
         wvqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793638501; x=1794243301;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=58iP3BlBCQ7MHsk4BqKN8NAWFdKfeoBJ+Ihq0OUqeLk=;
        b=kpZV4vd8DJb3ek6IUaP8daq5rwvDfdsXlRD+qJKanv++TXlZp+KwpTYYg8hK8xbQw2
         WGXtibarL3MahyitjMFMZ1kBC7aqbkA5c58U3viKwDi8hEHOZSlRyE2qXerKNpTV0bRO
         aPy2g6jaI9nwUJ+nO9PMNwUKnDivQQrooRwMbg5SAhQlNrm0bBPXQ+IX1qFNm/nJqSOp
         NdC3rQ5FBmjq+L9E0hBOuiM+k/gFVgxn7jfn3z1NMpV3PK7iHiHdOA23hTuRIp9xxOMm
         8s22lbNrwcvseJyIefTaOiqeY9+ykXSQVUU9wRsPLy230d5boPXdwBCZ3IxCdH/F+CZr
         lA1w==
X-Forwarded-Encrypted: i=1; AKwUvBzkwiqBRz7IXoHp5K96+6qYhJRSleka482uXy0Hep7y+CIgCvqj4qHu01pC8+jNC/dDv2ARvom19Ic=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9VezwQK1PYqWEl9YCCCJLfYuEOWkZENvV8R6hQ4EtC3exoToaa
	d86YSuL0hFVlRJ1rVL/niqx4R3ymS/guiWu6SxMX35y985okVw+7o9J78z69beRr2Q==
X-Gm-Gg: AYBFou0glIuTZo7SNqCaeFlIRM2MfUY64sOydjOUMun+tf2IhC8DI3HXVPqQhVwP3yH
	1fEq1wqrdUAM4aizL6q5EBZvdB1sJTIAJzGD31cwanUTsefdY9Tc1ZruHDKoevIX3qdjfdT7NHz
	RzbZ9K9Tt8ozqGJrJMnCODSFa1DANVuntJh/KvMI36gmcK5zLjP8XWq9pQqawBmdn/bH0SZ3bN0
	1C0dXblUnRA2XojF1M9umNozcpIY2j7Yu8ZS2ET5rmNdlKKdx2TMQ++7mFTqkZCEyUdcXbP1FM1
	aNUF6A56t90GFFMYZa93cZJ4eAmZFAdFLlHIeX0jMuJxiEllJmBw+Rf63L/7fFbK+MV6Z70gPdH
	/bpTwUHBX3uF6rOOXvl9wOwXsGki1wa02iCvJs0/Z0shBF34CzEnwlFKF5iYUcYw55ZFHU63Mv0
	wy51TEkCbkOINCYhv3lhcovnC5+Kjkdj1foUCRp3hc/Fz1cxhidqZ9OL2QS8ec+Ir6EcZyF3Duh
	4PA/XwLLOBm8u8vRLSUljzolVpUtjhoTo+wlvByHexgnUBiJO9Q3LPHPN7RRcI2xIaTfB8jjteT
	tHTe5F86+VAPhBij8tYq7s3Eybw/qYXm8R0YDSRpgnUMiak3MUvZR/8PIXUVFgUsUFK3oRv2Vte
	i/xXynb3tIKs7J9Ae
X-Received: by 2002:a05:6000:402b:b0:48e:5ea1:260a with SMTP id ffacd0b85a97d-48e6e2c3532mr23163635f8f.3.1793638500848;
        Mon, 02 Nov 2026 08:55:00 -0800 (PST)
Message-ID: <2d444072-e4cb-40ff-b2f5-a6e5038e64c9@suse.com>
Date: Mon, 2 Nov 2026 17:54:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] IOMMU: record the flushes skipped under
 iommu_dont_flush_iotlb
To: Luca Di Maio <luca@edera.dev>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org,
 Teddy Astie <teddy.astie@vates.tech>
References: <20261030165031.2560020-1-luca@edera.dev>
 <20261030165031.2560020-2-luca@edera.dev>
 <1793444119.8631fc262581453bbf619ec5b2062170.1a1919984c0000403d@vates.tech>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1793444119.8631fc262581453bbf619ec5b2062170.1a1919984c0000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793638501-C26CAB50-CC9F0FC5/10/78276251493
X-purgate-type: spam
X-purgate-size: 854

On 31.10.2026 11:55, Teddy Astie wrote:
> Le 30/10/2026 à 17:53, Luca Di Maio a écrit :
>> --- a/xen/drivers/passthrough/iommu.c
>> +++ b/xen/drivers/passthrough/iommu.c
>> @@ -64,6 +64,11 @@ bool __read_mostly iommu_hap_pt_share = true;
>>   bool __read_mostly iommu_debug;
>>   
>>   DEFINE_PER_CPU(bool, iommu_dont_flush_iotlb);
>> +/*
>> + * A byte holds every IOMMU_FLUSHF_*, and fits in the alignment padding the
>> + * bool above leaves, instead of shifting the per-CPU data that follows.
>> + */
>> +DEFINE_PER_CPU(uint8_t, iommu_skipped_flush_flags);
> 
> flush_flags in iotlb_flush is unsigned int in iommu_iotlb_flush(), so I 
> would use it here as well instead of uint8_t.

+1

Also see ./CODING_STYLE on the matter. If not unsigned int, the next choices
would be unsigned short or unsigned char, not uint8_t.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 17:04:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 17:04:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468500.1677583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNvS1-00046c-IV; Mon, 02 Nov 2026 17:04:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468500.1677583; Mon, 02 Nov 2026 17:04:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNvS1-00046V-Fe; Mon, 02 Nov 2026 17:04:05 +0000
Received: by outflank-mailman (input) for mailman id 1468500;
 Mon, 02 Nov 2026 17:04:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNvS0-00046P-3N
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 17:04:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNvRz-00037d-G7
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 18:04:03 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8c27f-8faa-0a2a0a5109dd-0a2a45018ea2-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:04:03 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae8c283-5984-0a2a45010019-d1558036e0da-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:04:03 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a3517554f7so25003185e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:04:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4abea533a1esm195190535e9.1.2026.11.02.09.04.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 09:04:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793639043; x=1794243843; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=s5vaeXAjm9QRozeZdiaCuCeNd94BbGQ1wb4jlt/vrvk=;
        b=ZIAnxzTrah63V98ivel/IW3PC17q4oVKOYCPFsM4m5ussea8jOuUlw3OhjiEXnq8TW
         9BAaYxXHQuKRpWJ82QlYS3MotJSRAjgqM7oPiCQ9kYYCqug5sCLTSitQtMGukTIYuh89
         AmOu/u8vnQv0HOJN+LfVBJ1jyPJo8al1yFQ1B0AwNKEF8+WB4Wr9GCpn4tFMNkcicMXi
         G1hX2tY4BBG9FsBDcNrOHYwvw4gT9D1enOxUbbsoi3DiYtqNU6Tr7zaLw7gyKevPHJlk
         OAb5NNAFDAMYUSUNHscfAxypVqWWzGt/j25vEQurlq2gOu1IY276U5zhPBKsbrec6As9
         Yadg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793639043; x=1794243843;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=s5vaeXAjm9QRozeZdiaCuCeNd94BbGQ1wb4jlt/vrvk=;
        b=qycQY0ADbefe8I9kRIMW/IKGKSWUl+s+6H8JTk2MzP6t9d7NhIgmQJF4ToBjjo0rOg
         ojGbtFgVsK6qxoVhlVkz/hAETV51QW3RBEgOBNFplz27GHSSbEF/7H//IGGBu2gPQ7l1
         /KOqR5DZKMOekKSmlqC6ie9rbA3z4Hx9yApjVr+AhvZIhXNLvR+yNwXZ7hAZouEYQrcY
         jn05lX/7cQTPOEfqVhFL+OWJwCk8orTYm1HPAeOboP36kmeulPWbcNisniCY7jjrYMvB
         3fKDwNk61Nzcuqi+5tFSHLzWt8FMyxoJlErBiTJ7VARN64Fu+8vHlgFgJ97KlIRGdDS1
         ufKA==
X-Forwarded-Encrypted: i=1; AKwUvBwb58+DOWF2gi+9mZJHqKCumAFlvtppXQP02IQEx/9i7HTb8r+NEDRu7f3BtF2OMW4aRhe/1x35IEo=@lists.xenproject.org
X-Gm-Message-State: AFq9FYK7iKjYLrv+cnsEY3YZ7sO6IMyJYW3es/F1+ijo7gDn28xQ2Z4F
	yhRLGyrcR93z4wsg8TxOoWc5wz8D60EqP088u7KClgJjfGh552maGy6miSk8nUGuBw==
X-Gm-Gg: AYBFou0ggLicL5y2AdQ+IW7PtkoJ5crWS9I6/WsHIwi2aN3Jde1GHiAbP5m06eipwpU
	Wcbyk8eXOxk34sOrugZECDRP7boFqHXaIMVmletcRj++xH15I44OpwreGf3zBuQHcUxnTtG0Lp7
	dPL/A0pQK0tQnB78Man1K+QYH3G0s7WDF4nWU0iaZTM7MGWOfdKvE0fsMkesRMNn7aMRE7ghs4V
	QpnvDh2abQOQPx6gmKcEyEaru/hkf0MF8pR5l/SvtmdEO1aXHxRYY8yJ4iHCm98HU+5PgxKw/Gl
	N7IFEsiGWCRFtEdhAjlVMyY+VwSQyV2Z5UXwKdgg7W/SCxc/4OFnZfZN4QLeZ1/xW3BagWFQ5vR
	oQHSLHOswDMFLp7XYW6UFjKPBGVu06JHdr/wvwQ92+yj8ugWQ68NqYDClNQQw6AvyCKX5tqb8G5
	KpRAMuK6rfIMdKyTqtOmgsK6Yr04QY+NHjSlUzr9cvNRaSWC/DbPC7MttXfB/BEjL8O7dAKf32a
	ZxuC/XYd94uy2pBgcNJzUCTu2YEKrpbPGfadeWIp+JnFaMDcNjuC6sQVjLa3b3v/1/AukyA6Pwe
	Az71lwZ45pSFXoHeQx3BEbYM4NXRUT5qnq64LQSaPji5SBljJ6g7OxSdjdLM4p3JSlmtMyWA3eo
	gL2AiPIMlAq8hdhygTiI8sk9VnTyZxyZ8tBKGaw==
X-Received: by 2002:a05:600c:4e50:b0:4a9:2a92:231f with SMTP id 5b1f17b1804b1-4ac16bc461emr245198365e9.7.1793639042879;
        Mon, 02 Nov 2026 09:04:02 -0800 (PST)
Message-ID: <f8eb5729-4a6d-4ce6-ba39-e118b0b5b677@suse.com>
Date: Mon, 2 Nov 2026 18:04:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] IOMMU: record the flushes skipped under
 iommu_dont_flush_iotlb
To: Luca Di Maio <luca@edera.dev>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20261030165031.2560020-1-luca@edera.dev>
 <20261030165031.2560020-2-luca@edera.dev>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261030165031.2560020-2-luca@edera.dev>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793639043-BFE68757-A9FAF9B5/10/78276251493
X-purgate-type: spam
X-purgate-size: 787

On 30.10.2026 17:50, Luca Di Maio wrote:
> @@ -458,7 +463,12 @@ int iommu_legacy_unmap(struct domain *d, dfn_t dfn, unsigned long page_count)
>      unsigned int flush_flags = 0;
>      int rc = iommu_unmap(d, dfn, page_count, 0, &flush_flags);
>  
> -    if ( !this_cpu(iommu_dont_flush_iotlb) && !rc )
> +    if ( this_cpu(iommu_dont_flush_iotlb) )
> +    {
> +        BUILD_BUG_ON(IOMMU_FLUSHF_all > UINT8_MAX);

This doesn't go quite far enough to protect against common ways of ...

> +        this_cpu(iommu_skipped_flush_flags) |= flush_flags;

... this losing information: There's no connection between the UINT8_MAX
and the per-CPU data field's size. There's nothing preventing another
IOMMU_FLUSHF_* appearing with a value larger than IOMMU_FLUSHF_all.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 17:41:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 17:41:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468522.1677591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNw1m-0001l8-6t; Mon, 02 Nov 2026 17:41:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468522.1677591; Mon, 02 Nov 2026 17:41:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNw1m-0001l1-4A; Mon, 02 Nov 2026 17:41:02 +0000
Received: by outflank-mailman (input) for mailman id 1468522;
 Mon, 02 Nov 2026 17:41:00 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNw1k-0001kv-Dc
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 17:41:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNw1j-0046Ef-JD
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 18:40:59 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae8cb27-2eae-0a2a0a5409dd-0a2a4506aa66-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:40:59 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae8cb2b-195a-0a2a45060019-d1558032c83e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:40:59 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4ac95761c85so21269145e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:40:59 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a9fafe08sm3267375e9.3.2026.11.02.09.40.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 09:40:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793641259; x=1794246059; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=fS1lE8AkVx4uwyNLR++cwvmIqMGfv3Lxh7g13q9F0SI=;
        b=tDeZtqqIBjeEdZyts2QE+qru5R2Fzgm+ZQhFhcWL1sXBPaWfcDHz7o/UwrIhjdNvij
         oCb2Elm+H/wM/ci6X+Lubl9jbApiZZgJkmTaWa2hksu9SVT5UgOl5GRVJhRyctAqhQJt
         AkeHjlTMu1pyhf5zRRsHLH6FYtw4CRfiJxcxA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793641259; x=1794246059;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=fS1lE8AkVx4uwyNLR++cwvmIqMGfv3Lxh7g13q9F0SI=;
        b=B5LFbD9BvmlfRFIUO1d86FTg86sfNQcydmSMjFxiL141rfhv+X1mkY52B4hpvrm2Y0
         IOyIStOUP2FQNDtq5ijXcnua17ZoNYVhkdOLwQFme8dwd697r/ehpZbZwBSa5UEROIob
         f1IH27uFATBzAFkAGyF0Sg0/AIKODrHMvu+z4vwDTHsN1EqdFsQ1T9AcC5obb4ZyXk2z
         UxUXLheE7I0ztyx2Zc3uGHFY5muRntk8ZvuDpB6LydsZRpPHGdHdI9pzbKJrbbpUPmmc
         hdAhCnsiMlWBLfzoaf0lRdVjS2XL9lYLIy8Wr7pK8B2k5Wtvs+7yD1y7KxOyvz2HtwWI
         bojQ==
X-Gm-Message-State: AFq9FYI2pCAkSjK4R36h4NTmCqm0cFPvQ8NK8Wgj5GRkXe1oNo5GRh0f
	CZThpoa78gtiPxlQ8TQIlSFHybBBvzD/wN7tqyyGhgVL/z687afL/GxD4BG+O2Oax8la57dYixj
	/2sAI
X-Gm-Gg: AYBFou2dIS1chn1fvzeYq+GW9FlaEqAbUMx7ZHTaJmT73nHVYjD2eqLHgwUK5j3Osxx
	7L1JeGRGVmlfqTapW5QkmUQPsXNyr3HBHHcSDCoJRYjMzm1d8+TpngaGt3OTAfiFLsvebab2IzG
	xZhmV55dDy5LrIJRa2dQZvu5NbHaD8y+t9cQSDM83OBxuwir3g908GXYsj0FtV116tYKVrI2g7w
	9/xnXb6cBfH0O8BqVkZ90zHQejDaZkcloMzRzdiWsX0YJuc6dEyFB/QPudGCHM+vbrbGZPM9zHM
	5iHccax86BnGMSogBgMiKx9ASQB9Doj2vYSDbNxxIAIJf9hckzUmRTDbwgZv5tMWHdMyHi5xLk5
	FXDUqTEiuBLa8adnVE+G6zxPcwtxfDUqgtc1oMfnYgOGSzC+1air0TcaIqA5vr3dg8y5KDEazWX
	sjR6O3WfmBUbnZmHfy5j/q2grr58Cxdjy3q0dOVkXTo17cOe+N+GTMGDdEzSKFqyGN8iXKcBzYL
	DWgt6WnQ8b0uwHs2mFkjjV5m7pGA6ZXtyr/VuTPrjCfFHbOGMKwyXyWOZc2lB3kHGtM9FFJ4isG
	Q2wLhkLMse+W/Mktgk3a7fMHLNDxVIV7NGsr/Zh1tmh6rgGY1TfPZxof1GO0tQccOlHmFtwajG8
	Mxp4=
X-Received: by 2002:a05:600d:82f2:b0:4af:c210:5b3f with SMTP id 5b1f17b1804b1-4afc2105bf0mr146434385e9.24.1793641258559;
        Mon, 02 Nov 2026 09:40:58 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86: Drop {nmi,mce}_pending defines
Date: Mon,  2 Nov 2026 17:40:56 +0000
Message-Id: <20261102174056.1763614-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793641259-FC40377B-C3F1AB70/10/78276251493
X-purgate-type: spam
X-purgate-size: 8351

These obscure the data layout in v->arch, and prevent using the names for
other variables.

Expand the defines in place.  No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>

The {nmi,mce}_state defines are rude too, but that involves more unpicking
than I have time for right now.
---
 xen/arch/x86/cpu/mcheck/vmce.c    | 2 +-
 xen/arch/x86/cpu/vpmu.c           | 2 +-
 xen/arch/x86/domain.c             | 2 +-
 xen/arch/x86/domctl.c             | 2 +-
 xen/arch/x86/hvm/irq.c            | 8 ++++----
 xen/arch/x86/hvm/vioapic.c        | 2 +-
 xen/arch/x86/hvm/vlapic.c         | 2 +-
 xen/arch/x86/include/asm/domain.h | 3 ---
 xen/arch/x86/nmi.c                | 2 +-
 xen/arch/x86/pv/callback.c        | 2 +-
 xen/arch/x86/pv/traps.c           | 2 +-
 xen/arch/x86/x86_64/asm-offsets.c | 4 ++--
 12 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/cpu/mcheck/vmce.c b/xen/arch/x86/cpu/mcheck/vmce.c
index 1a7e92506ac8..2b7ec6737d20 100644
--- a/xen/arch/x86/cpu/mcheck/vmce.c
+++ b/xen/arch/x86/cpu/mcheck/vmce.c
@@ -410,7 +410,7 @@ int inject_vmce(struct domain *d, int vcpu)
 
         if ( (is_hvm_domain(d) ||
               pv_trap_callback_registered(v, X86_EXC_MC)) &&
-             !test_and_set_bool(v->arch.mce_pending) )
+             !test_and_set_bool(v->arch.mce_state.pending) )
         {
             mce_printk(MCE_VERBOSE, "MCE: inject vMCE to %pv\n", v);
             vcpu_kick(v);
diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
index e0f7edded3d7..5cc854d71ce3 100644
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -316,7 +316,7 @@ void vpmu_do_interrupt(void)
         vlapic_set_irq(vlapic, vlapic_lvtpc & APIC_VECTOR_MASK, 0);
         break;
     case APIC_DM_NMI:
-        sampling->arch.nmi_pending = true;
+        sampling->arch.nmi_state.pending = true;
         break;
     }
 #endif
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 368e4deff375..f8e31cdc5791 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1684,7 +1684,7 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
         if ( !guest_handle_is_null(arg) )
             return -EINVAL;
 
-        if ( !test_and_set_bool(v->arch.nmi_pending) )
+        if ( !test_and_set_bool(v->arch.nmi_state.pending) )
             vcpu_kick(v);
         break;
 
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 1e0051070211..12c14bb3f514 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -584,7 +584,7 @@ long arch_do_domctl(
         {
         case XEN_DOMCTL_SENDTRIGGER_NMI:
             ret = 0;
-            if ( !test_and_set_bool(v->arch.nmi_pending) )
+            if ( !test_and_set_bool(v->arch.nmi_state.pending) )
                 vcpu_kick(v);
             break;
 
diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c
index 5f643611130f..18f05b6247fd 100644
--- a/xen/arch/x86/hvm/irq.c
+++ b/xen/arch/x86/hvm/irq.c
@@ -522,10 +522,10 @@ struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v)
      */
     hvm_sync_pir_to_irr(v);
 
-    if ( unlikely(v->arch.nmi_pending) )
+    if ( unlikely(v->arch.nmi_state.pending) )
         return hvm_intack_nmi;
 
-    if ( unlikely(v->arch.mce_pending) )
+    if ( unlikely(v->arch.mce_state.pending) )
         return hvm_intack_mce;
 
     if ( (plat->irq->callback_via_type == HVMIRQ_callback_vector)
@@ -550,11 +550,11 @@ struct hvm_intack hvm_vcpu_ack_pending_irq(
     switch ( intack.source )
     {
     case hvm_intsrc_nmi:
-        if ( !test_and_clear_bool(v->arch.nmi_pending) )
+        if ( !test_and_clear_bool(v->arch.nmi_state.pending) )
             intack = hvm_intack_none;
         break;
     case hvm_intsrc_mce:
-        if ( !test_and_clear_bool(v->arch.mce_pending) )
+        if ( !test_and_clear_bool(v->arch.mce_state.pending) )
             intack = hvm_intack_none;
         break;
     case hvm_intsrc_pic:
diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c
index b633f1523250..995fae7b3c0f 100644
--- a/xen/arch/x86/hvm/vioapic.c
+++ b/xen/arch/x86/hvm/vioapic.c
@@ -475,7 +475,7 @@ static void vioapic_deliver(struct hvm_vioapic *vioapic, unsigned int pin)
         for_each_vcpu ( d, v )
             if ( vlapic_match_dest(vcpu_vlapic(v), NULL,
                                    0, dest, dest_mode) &&
-                 !test_and_set_bool(v->arch.nmi_pending) )
+                 !test_and_set_bool(v->arch.nmi_state.pending) )
                 vcpu_kick(v);
         break;
     }
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 0d7231c45b68..6698779e227c 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -356,7 +356,7 @@ static void vlapic_accept_irq(struct vcpu *v, uint32_t icr_low)
         break;
 
     case APIC_DM_NMI:
-        if ( !test_and_set_bool(v->arch.nmi_pending) )
+        if ( !test_and_set_bool(v->arch.nmi_state.pending) )
         {
             bool wake = false;
 
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 2d0a91541034..634d0710bfc2 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -47,9 +47,6 @@ unsigned int arch_domain_struct_memflags(void);
 #define nmi_state              async_exception_state(VCPU_TRAP_NMI)
 #define mce_state              async_exception_state(VCPU_TRAP_MCE)
 
-#define nmi_pending            nmi_state.pending
-#define mce_pending            mce_state.pending
-
 struct trap_bounce {
     uint32_t      error_code;
     uint8_t       flags; /* TBF_ */
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index b3d18270b13a..3a94471037bd 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -522,7 +522,7 @@ static void cf_check do_nmi_stats(unsigned char key)
     if ( !hardware_domain || !(v = domain_vcpu(hardware_domain, 0)) )
         return;
 
-    pend = v->arch.nmi_pending;
+    pend = v->arch.nmi_state.pending;
     mask = v->arch.async_exception_mask & (1 << VCPU_TRAP_NMI);
     if ( pend || mask )
         printk("%pv: NMI%s%s\n",
diff --git a/xen/arch/x86/pv/callback.c b/xen/arch/x86/pv/callback.c
index 38b819b56626..29370a68ce15 100644
--- a/xen/arch/x86/pv/callback.c
+++ b/xen/arch/x86/pv/callback.c
@@ -35,7 +35,7 @@ static int register_guest_nmi_callback(unsigned long address)
      * now.
      */
     if ( curr->vcpu_id == 0 && arch_get_nmi_reason(d) != 0 )
-        curr->arch.nmi_pending = true;
+        curr->arch.nmi_state.pending = true;
 
     return 0;
 }
diff --git a/xen/arch/x86/pv/traps.c b/xen/arch/x86/pv/traps.c
index 21a1f4b7174a..b817b5b29604 100644
--- a/xen/arch/x86/pv/traps.c
+++ b/xen/arch/x86/pv/traps.c
@@ -199,7 +199,7 @@ int pv_raise_nmi(struct vcpu *v)
 
     if ( cmpxchgptr(v_ptr, NULL, v) )
         return -EBUSY;
-    if ( !test_and_set_bool(v->arch.nmi_pending) )
+    if ( !test_and_set_bool(v->arch.nmi_state.pending) )
     {
         /* Not safe to wake up a vcpu here */
         raise_softirq(NMI_SOFTIRQ);
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 3bc0f06c2ead..ce5e7aae16cd 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -110,9 +110,9 @@ void __dummy__(void)
     OFFSET(VCPU_guest_context_flags, struct vcpu, arch.pv.vgc_flags);
     OFFSET(VCPU_cr3, struct vcpu, arch.cr3);
     OFFSET(VCPU_arch_msrs, struct vcpu, arch.msrs);
-    OFFSET(VCPU_nmi_pending, struct vcpu, arch.nmi_pending);
-    OFFSET(VCPU_mce_pending, struct vcpu, arch.mce_pending);
+    OFFSET(VCPU_nmi_pending, struct vcpu, arch.nmi_state.pending);
     OFFSET(VCPU_nmi_old_mask, struct vcpu, arch.nmi_state.old_mask);
+    OFFSET(VCPU_mce_pending, struct vcpu, arch.mce_state.pending);
     OFFSET(VCPU_mce_old_mask, struct vcpu, arch.mce_state.old_mask);
     OFFSET(VCPU_async_exception_mask, struct vcpu, arch.async_exception_mask);
     DEFINE(VCPU_TRAP_NMI, VCPU_TRAP_NMI);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 17:42:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 17:42:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468527.1677601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNw3Q-0002DV-Gm; Mon, 02 Nov 2026 17:42:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468527.1677601; Mon, 02 Nov 2026 17:42:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNw3Q-0002DO-Dr; Mon, 02 Nov 2026 17:42:44 +0000
Received: by outflank-mailman (input) for mailman id 1468527;
 Mon, 02 Nov 2026 17:42:43 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNw3P-0002D2-9r
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 17:42:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNw3O-0046WE-JE
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 18:42:42 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae8cb59-bab6-0a2a0a5309dd-0a2a4502a2f2-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:42:42 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae8cb8d-6ca4-0a2a45020019-d155802ca517-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:42:37 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a9a8d6cea8so43275145e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 09:42:37 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a9fafe08sm3413885e9.3.2026.11.02.09.42.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 09:42:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793641357; x=1794246157; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=SW+gAQ5r0oly8A4PGuSW/L4bqVl3rIFZrSP29fbwc/I=;
        b=v5TGmdL//NMHKIUhBwxtrG2AAjhU/POb5ACyAadoAJY61DeQturqXcxey02V6+GHP/
         mxK0KRR9k9e2GR6UvYManlBo7TSxbXXipCsALrdWk0uOfr3u1bQLmZ7qNw6uY3LIz4md
         kQCj7DNF6Qf862GjnVtzIa7zIWucyglcIclxA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793641357; x=1794246157;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=SW+gAQ5r0oly8A4PGuSW/L4bqVl3rIFZrSP29fbwc/I=;
        b=xtHHSco8M/+H60YAbd30nnVhDC2hMHp0xqfmFMTB5kk/Vqs5CCKz1T7P42andLcE7Q
         IZuHuxjJ1fe8NT8MEnD+4jTRNFDMcnNtnDWiGqdW8xn8ikIDLUpOcnu7Oz4j+8tBAXxv
         XsYZSbYj9K5enWpJbi33eSK2UxCRCbkyb/bZ1WvcteK6O/ZlfmrLvmpm02u8JZvZJ8Fm
         N51vN64UvHeBlHwilJRN3xfV2KK9H199bk1Rs+Mn6BCbehg9GFY3/eMbQqYvoPklpOW4
         6YI1B8bgX47x9k1oK64fhkTufIkJM/wHai20hnkmFhbxEZKco5PG+KmGeVM67qi2rAed
         CiEg==
X-Gm-Message-State: AFq9FYKIUEalftoM8i2SLtN+jkjw015PHCNKkgcxQlkjw9CsF1OZEqad
	RMF01aXWCQMGoPCBd63au0WEtj7YFRtEkdLBG9O89OjSiumoV/RRjnkRDwozyViuCro+L47PyOk
	7kdQVYJA=
X-Gm-Gg: AYBFou0TK/d+lrVsFJqZ0gjS8RqDQsnMnwDAI1dx4+pFKGxnRKHyLmiUZqM76uEwCFM
	4qulkAC4GYoU5GDINfrMfxPytlgRKVpXOOxrDevqiRKk9R/Giu+I0YU3KG7LEx3RCD6t+PLjTES
	u0uESMDCT8XSspVpkwkbnF4as5Mm+3dcGS0ZLTLayMhoMiVsmiO+JpqCGKUm6OfeUAkSWV4hbaw
	cQOU/mxsHHcnK5RlEjswKvDw5sUP3MIaXpFD0xZO25gWBM3nI5LLf4j+Azkd20DCr7KSfJKLyw0
	2jczqgLpZ89mRVQg77IDs2Rukifr1poRhMRDCxHFqNFldI1TuamJwYetynYMjLMRiQdW13J6Vne
	uqyHTVMKqOLa8EBICOPCaY2w6nhvO71IcwY8RyXP/SVV5weelbqKeXXdWiXcC1i9tE1o4pixpiD
	eFdSQBHO2obDn4Rle1nD1mOsiv1munrChBC/5634k2NVW0MYRFUsWuTB285oQlRg3v2lU1WaXic
	jv3qM+PfFjNiuxpnWHiJkfHJzvPjX8pTfZWMixxZSUAJQ7mlGNvb/BhJfFlbwCA5jRjpMQ7xv9v
	fvYYjANcxGBlLL4Lbrrd6kXj31ioJx6JSm4q04AWcL/mTToXqlPPlJ6lOiNDGpdIQRrlAeaUjns
	cnjY=
X-Received: by 2002:a05:600c:4715:b0:49f:ffa2:1c72 with SMTP id 5b1f17b1804b1-4ac17567cc8mr239508635e9.11.1793641356705;
        Mon, 02 Nov 2026 09:42:36 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/pv: Improve code generation in async_exception_cleanup()
Date: Mon,  2 Nov 2026 17:42:34 +0000
Message-Id: <20261102174234.1764070-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793641362-F16AF2AC-DF6A54CB/10/78276251493
X-purgate-type: spam
X-purgate-size: 1268

Use new helper functions to simplfiy the logic.  This removes an alternative
behind the scenes.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>

async_exception_cleanup() is complete nonsense.  It's not remotely close to
how interupt blocking works in x86.
---
 xen/arch/x86/pv/iret.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/pv/iret.c b/xen/arch/x86/pv/iret.c
index 39ce316b8d91..0efc0c7f12f3 100644
--- a/xen/arch/x86/pv/iret.c
+++ b/xen/arch/x86/pv/iret.c
@@ -31,8 +31,8 @@ static void async_exception_cleanup(struct vcpu *curr)
     if ( !curr->arch.async_exception_mask )
         return;
 
-    if ( !(curr->arch.async_exception_mask & (curr->arch.async_exception_mask - 1)) )
-        trap = __scanbit(curr->arch.async_exception_mask, VCPU_TRAP_NONE);
+    if ( !multiple_bits_set(curr->arch.async_exception_mask) )
+        trap = ffs(curr->arch.async_exception_mask) + 1;
     else
         for ( trap = VCPU_TRAP_NONE + 1; trap <= VCPU_TRAP_LAST; ++trap )
             if ( (curr->arch.async_exception_mask ^
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 18:06:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 18:06:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468545.1677611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNwPn-0005cl-F5; Mon, 02 Nov 2026 18:05:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468545.1677611; Mon, 02 Nov 2026 18:05:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNwPn-0005ce-Ax; Mon, 02 Nov 2026 18:05:51 +0000
Received: by outflank-mailman (input) for mailman id 1468545;
 Mon, 02 Nov 2026 18:05:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xNwPl-0005cW-PW
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 18:05:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNwPl-000oP8-2V
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:05:49 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6ae8d0f0-e002-0a2a0a5209dd-0a2a450ca11c-26
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 19:05:48 +0100
Received: from [40.107.200.26]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6ae8d0fa-f479-0a2a450c0019-286bc81a7e7c-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 19:05:48 +0100
Received: from CYZPR10CA0015.namprd10.prod.outlook.com (2603:10b6:930:8a::27)
 by BL1PR12MB5972.namprd12.prod.outlook.com (2603:10b6:208:39b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 18:04:43 +0000
Received: from PH2PEPF00048913.namprd05.prod.outlook.com
 (2603:10b6:930:8a:cafe::33) by CYZPR10CA0015.outlook.office365.com
 (2603:10b6:930:8a::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.12 via Frontend Transport; Mon, 2
 Nov 2026 18:04:41 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 PH2PEPF00048913.mail.protection.outlook.com (10.167.243.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Mon, 2 Nov 2026 18:04:41 +0000
Received: from satlexmb10.amd.com (10.181.42.219) 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.53; Mon, 2 Nov
 2026 12:04:40 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 2 Nov
 2026 12:04:40 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 2 Nov 2026 12:04:38 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=TSPf8CwJ14b+bfJVDS+yswC1B6E4O0wQHUwC9mdzxly9lEZU8saUfS+5LPWGcgHLXLuEWWvQXBuxBZDz7Dc302HL+QgOCLMjkYnKONhM+Yl61bpudqIKvlgduc/8ATV46SsJAgJrcnrw4V5SsMuNnWMFO+plIZgCWJggSifSJIDrfcJcjWLeknPq1AUmjQ9Ds95iI1U0vJofD4PTi7Q3fi3J52v/9EFPuO7ztxpe43z/oxm/izWoMIzr8GWseUAy4jmjNQiJku2iIH5sg/PDIf+3Q/CyuvBSJGsoHTuDp1PUqakdrM8geNtpnCc1Xjcr06ne6pdo17tIYDicvPeCsg==
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=uwfGYqnkijvtIMMlgewN6ixrvzlJO7kkmINW8GjUNYA=;
 b=GoCR3pL1bk1qrGp8HgPXw7tOvFOtEDu7xzyp+kaGWQ9xMDCHLAHPa8xtW/d+P0vJeOL+Jua2G7v8IjSOeiYlx9tE0Ac9x8fxQIDVcOR2iKuMronOpbkdQz70im/h2XyHM59VI/tRFHIzrJ1Ao5ewHoUmwHt1vDazBuvEGETh5zYUFzXy2a/HCAiI5hX78SeWILhMn/7EeTxCv+Cg2GE4uu77UCTpYU1kLIjA/adLjyPzO+CVvwsaIQlIO1FvNHbBV/aMgzr1GH5GDCm2l1TgAaPLjfPPFiujPM7DitHckUfpGW9tveEqHKvsUdX429zA72LJSo4RqOv10JTet1MfHg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=alien8.de 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=uwfGYqnkijvtIMMlgewN6ixrvzlJO7kkmINW8GjUNYA=;
 b=nRGEOouJ+K8Hxe/SqYJgYtjUWm/cBe2n3MFHfSXEfZFbWma8Giw9yifRNXR9oNVUBSmpPCrSb004SZ+D0QIk6yDnaMjxELwNDlRV3rKTW1r9V6y46EFHkS8qo/uh1WVBgNfkgF9Eck7LXZsv/0RZfCjNx9Yrdpw6/kSl9sJVCcc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <979f3d53-d4b8-411f-bc66-cf487ff76d42@amd.com>
Date: Mon, 2 Nov 2026 12:18:02 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/paravirt: Add ioremap_verify_range hook and implement
 it for Xen PV
To: Borislav Petkov <bp@alien8.de>
CC: Juergen Gross <jgross@suse.com>, Ajay Kaher <ajay.kaher@broadcom.com>,
	Alexey Makhalov <alexey.makhalov@broadcom.com>, "Broadcom internal kernel
 review list" <bcm-kernel-feedback-list@broadcom.com>, Thomas Gleixner
	<tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, Dave Hansen
	<dave.hansen@linux.intel.com>, <x86@kernel.org>, "H. Peter Anvin"
	<hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra
	<peterz@infradead.org>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, "Yazen
 Ghannam" <yazen.ghannam@amd.com>, Mario Limonciello
	<mario.limonciello@amd.com>, Sean Christopherson <seanjc@google.com>, "Ingo
 Molnar" <mingo@kernel.org>, <virtualization@lists.linux.dev>,
	<linux-kernel@vger.kernel.org>, <xen-devel@lists.xenproject.org>
References: <20261031003309.3751-1-jason.andryuk@amd.com>
 <20261031032009.GIauVeaXTMNHgjYEiM@fat_crate.local>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261031032009.GIauVeaXTMNHgjYEiM@fat_crate.local>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH2PEPF00048913:EE_|BL1PR12MB5972:EE_
X-MS-Office365-Filtering-Correlation-Id: 90bf250a-0a4f-403b-f025-08df390bc477
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|36860700016|82310400026|1800799024|23010399003|10067099003|18002099003|22082099003|261102123227099003|56012099006|5023799004|11063799006|4143699003|261026140227099003|261021121427099003|261022105027099003|261026121527099003|261028144727099003|261009223027099003|260925022911599003|260925021911599003|260925021311599003;
X-Microsoft-Antispam-Message-Info:
	RD1kxsIcRfhcYM4FXVdxenVuKh9rUWHBiUWDx8roZtgLgqJe4YWyYsmYrCz4hwwB+HRDqyR9lY//PZKsy6eaY0lUfWlvjrtfmFL050FvzfIBSjUE073T9iuiuZJc9c5hcXYnCG9pkHXpVOkPPLsXKqzuAGw6VkSO7A3LDZHsFcRwcy3ePFbImC8LPOnLXlytA3FprcTXkr2zmbeMlS1MDPj0yipRdYDuj05xzVU3gBkLoaWw3WOhQHCoaiv9lczQU2lizR9yFPmU3Zesa3y8Y6+JpjHMmrbpc/xBi6ZlLMmJNw0I+y1tW46mKFfhTGMi5vFNnn8WmL3adcictDVaym1bhp9auyiUKISAecdF9/0z378VZkFXWK5KuPSz02/19TtjIpTCGsyQ861bN2f8OmSoqML/iO32sSJBhaWVmgt9KzvFgATlsCIHvP/v88FUm1Z2aLrYNctb5+DMaq0ZbEjxYSxVfiaoSX+16ZfFbtj9v5vUTr3fcxWe0+WXYs6hdA/1F1492jAiR4HrsoAKhFw/bHQnGs+wAGrs20X+chvUrViaCvxWvNKDa8uSuwHmOfOdboI/tmbWifUUF8oU0ujc8I0gzpU4GBDoISknk9LeIIRJEWsvW+2X5DE9Uzl8AZy4BMKGTiDDaV7RplJcUg00VeaLL9/6XP8T39l2YxO08M6cfB1ZfCrPezjgRB3kLPXQyHE3n8BjraygXCbvIg==
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)(7416014)(376014)(36860700016)(82310400026)(1800799024)(23010399003)(10067099003)(18002099003)(22082099003)(261102123227099003)(56012099006)(5023799004)(11063799006)(4143699003)(261026140227099003)(261021121427099003)(261022105027099003)(261026121527099003)(261028144727099003)(261009223027099003)(260925022911599003)(260925021911599003)(260925021311599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2/ZH8JOZyC4lsCegZ+e3gHVdOZdlPYNgdPxcEDCOc2ppYPuPHlf/cz5vpeItYr2MTcQvi0jsOzZ70KJKX99CdvXPXD9VM2C5DMmBksqLfLsrkKPqcJf8MXeUcH/byagjWILOHoAMt6uyNhn9luwNYS5fKgfLEfFhOVbZ9buML1GhLBOKNpZy/OYqS3IwvUolGbWglGHp06rC818FiUevzOFDLg0kNlFHvnZYa0q9oLJuXIwF0MPH45mbcrQ3uuXG2fGHmnhhQ6nUpdGzLTtSPAJuvG5k7/Y/lxpfc1FMVhJrJdTLluyfKRhZ0ZcDQvCAFKt2L7wojUekqof9qQBZq+IWVfhb0LUcO8dmtcgYrsE9S4TW4mfCcxJmDoXg0QAceg6MA4Ty4EWNOyGy9D/Sce0x35PfkBj+oIul+W5hbzaV7NVMLiEgUvvKBDb1SJib
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 18:04:41.2402
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 90bf250a-0a4f-403b-f025-08df390bc477
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:
	PH2PEPF00048913.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5972
X-purgate-ID: tlsNG-d25034/1793642748-008CDA5B-7DD20106/0/0
X-purgate-type: clean
X-purgate-size: 2317

On 2026-10-30 23:20, Borislav Petkov wrote:
> On Fri, Oct 30, 2026 at 08:33:08PM -0400, Jason Andryuk wrote:
>> Xen PV guests update page tables via hypercalls, and Xen refuses to let a
>> domain map machine frames it does not own, such as chipset MMIO in a domU.
>> The set_pte() paths ignore the hypercall result, so ioremap() returns a
>> mapping whose PTEs are not present.  Accessing the virtual address then
>> faults.  This was seen in print_s5_reset_status_mmio() on Xen PV domUs
>> on AMD Zen hosts.  The machine address is not accessible by the domU and
>> faults on access.
>>
>> Add a pv_mmu_ops hook, ioremap_verify_range, which __ioremap_caller()
>> calls after ioremap_page_range().  It defaults to returning success.
>> Xen PV implements it by walking the range with lookup_address() and
>> failing if any entry is not present, making ioremap() return NULL.
>>
>> This also affects a Xen PV dom0: an ioremap() of a range containing any
>> page Xen refuses to map (e.g. MMIO Xen reserves for itself) now fails as
>> a whole, rather than succeeding and faulting only when the refused page
>> is accessed.  Pages Xen forces read-only are still mapped present and
>> are unaffected.
>>
>> Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
> 
> That patch is an innocent bystander, if anything - nothing it can do about Xen
> being weird about not mapping host physical addresses not owned by the domain.

Well, the point of Fixes is to link the two seemingly unrelated changes 
together.  This change only exists because of the other one.

> And TBH, all that gymnastics just to prevent this from running on Xen, is not
> something that makes me all happy and so on.
> 
> What is more, we try to get rid of PV ops, not add more.
> 
> I'm sorry if I've misled you with my comment on the previous thread - I didn't
> think someone would even act on it.

Surprise!  :)

> And I know Sean doesn't like X86_FEATURE_HYPERVISOR but sorry, nothing beats
> a oneliner at the beginning of print_s5_reset_status_mmio() vs this overkill.
Sure, I agree and would have gone with the simpler approach.  It's just 
that the previous discussion looked like it was headed to the PV ops 
approach.  I'll rework with the simpler approach.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 18:16:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 18:16:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468554.1677620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNwaC-0007U3-Ch; Mon, 02 Nov 2026 18:16:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468554.1677620; Mon, 02 Nov 2026 18:16:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNwaC-0007Tw-8m; Mon, 02 Nov 2026 18:16:36 +0000
Received: by outflank-mailman (input) for mailman id 1468554;
 Mon, 02 Nov 2026 18:16:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNwaA-0007Tq-N3
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 18:16:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNwa9-008DSx-KH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:16:33 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8d365-8faa-0a2a0a5109dd-0a2a4509c562-40
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 19:16:33 +0100
Received: from [40.93.196.0]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8d37f-be1a-0a2a45090019-285dc40099ba-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 19:16:33 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by IA3PR03MB8406.namprd03.prod.outlook.com (2603:10b6:208:542::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 18:16:30 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 18:16:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=WNfgve+PlnPPe5bTylAsDlxRKaSb1Q6ohnYll/tKy5mzJtyXRJaZJedcW1KU3TYGp4iGKasyZtUXowmH0wgEQJHIeVjiBgYL2eH9kRkooqnps2KCwA+H2wUxYOEfrofC6rCq5q3NBLI6Rn8DHu3lo5+QhU8ZuR7V1g4Qf5jZb3eKz2TRfHI9wQ9NK37yahsWSWcbT8r1vYG16m3jzcItYkkYBVYURStwrZ/B8x9JnSiJ/7WsOlcwF8vdW/VQ6R6IqCDuv5gspp6jYcjc4t+haYOJyYFj36oWbyL6odvMXQjAr6GWvxZBHjAHmIg3kGmPTTZu1G5oA8b7rV3E3gIFjg==
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=7jLxeI91OwB1vb9UNVDEH56AiDFMt8c4cd4n7O9KGWg=;
 b=bQ8yJPUahFC3w3B3ghif2Gh+Ma5iixek2mZqKHOaqMdbCD4L4VgkvTf55XoABxD+YuVvY/XgOm9p5Ub9b7hoiZ3NCdKBekmJLGu7D8Md1TUvLPN7uQVpCn5y3mX8Fgf1hvzGSK4x2Ln/8li2dLPY4cXuu6S46kn/PwNx7F7vVhGaJlpE266UFURBvj6MLzQWU9Ll6NcpcLBrkhuD5+3ptX/Uu4yS2BWcja+vwevCZpQGr8sVg/02G+JJGRTXguaZ981wxITSBULzAxD+Et7p4er26I9sQaskMPrW1tRFI68F7Q/SP6EHvDRPEctyva9qmwCqnP/3brs7JK0fMHosJA==
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=7jLxeI91OwB1vb9UNVDEH56AiDFMt8c4cd4n7O9KGWg=;
 b=czB9hVTV1uvZCF6T3fVjHkrvxMYthFG0okBKp6FNey7O/YS/fdfaf9v0el8KsLiORRMm109gnj/xuTPq8X7cQ4U1rtxgvbLYSBTa71TSoDlkPKLRv4tavdkRxp8vEtAsw2ELYKMAYirctOSg4M8kvM5k/IqNHKL9W3lDKLfp+QU=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <7021681a-277a-4b40-9963-74e55dde35af@citrix.com>
Date: Mon, 2 Nov 2026 18:16:25 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
 <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
 <CH8PR03MB82743DC59D48A031251F71AAF06A2@CH8PR03MB8274.namprd03.prod.outlook.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <CH8PR03MB82743DC59D48A031251F71AAF06A2@CH8PR03MB8274.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0062.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:2de::17) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|IA3PR03MB8406:EE_
X-MS-Office365-Filtering-Correlation-Id: 9493b2a0-73cd-4e45-e222-08df390d6aa8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|22082099003|10067099003|56012099006|261102123227099003|18002099003|261009223027099003|261022105027099003|261021121427099003|261022075727099003|5023799004|11063799006|4143699003|261028144727099003|261026121527099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	n26TmnxcBpI5foRj6hdbGhBfFLnbUTEb+t7b4er3dAVk5r6tdfJ6lR6k0UJ8RH9H7yhGhU3Wk1S+45JIWir3nCSnzlFgvag3kWGWE1+mUBaQAODSS4lpo6ETRY0XAaiN6P9b+UKnoewfiRZT17iUstUexmL5m6HRKZRYgyiKRDBVeb52ut8IVVR07+yUrJ8YwGZhY0KkBlPIXen3aPxFbvH3UOZiTgHiaC8lqoXX0gsbAxlGiaYH7bswXsA/evUXW7E2LNzi98MwzKUEPEfaVMIPOuUJXI+xkutwczHdSRpy3UolJaxWCu8zDwGA/LK/zUxuB8mY8gvMs+T8xPZDPMWh/WJoJrDlFIyUufSbwRBW4QnMd+RFmD0h75XKVdFCMaJlUX+JZjWZUtqmxMWj8n9errtkWTPedlrKSiaWL1L9zOivbdlBsmdP1Pe70fiFtlUkYihHjQNN3sUuO1I09CidG6eg7ng5NgDamdyHPZO0Ft0pzT8ggsLyGyxof1URrrQ+EPjvh+IUjI6wKNK7CuHusB3uf8ne4x1w3/MK7y4T2kmjWcFaE3jA6qcaJexDJixA83uJbf7ou80BQ58VY4xrNSbY7LVi8wVESN+X0AOoN3k3dZy31SKWCxM/InRtUMXWPtn3mRuNgs/R733aLr01VCbaf7tejEAKfWfekIE=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(22082099003)(10067099003)(56012099006)(261102123227099003)(18002099003)(261009223027099003)(261022105027099003)(261021121427099003)(261022075727099003)(5023799004)(11063799006)(4143699003)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?U2JOcTQyUE1yRGFPZFpJb2ZEa2V1TzJjdTV5aDZLeThmOS8yZUxiY2paa3Rp?=
 =?utf-8?B?V1FxVmx4Ynk5cm85aEJPdEtrTUd1ZWNOK0ppd2FJL0w5VmtEaCt1aHJhY2pL?=
 =?utf-8?B?ZnZ4RGpmQm5mYmh0YVdNYXBTc20zMzFLLzZ0dWg3SUI0bHRwVHhtWThlc1Zu?=
 =?utf-8?B?TzRSUFZvRnJibmtYOFppVXgxNThQSHJCVVJ4cTFPMmx5c2F0UzR4WHJOdnRW?=
 =?utf-8?B?NTJQVHB3NkdTU1pGeWpCUGpVeTUySGhxMGpSajhKeCsrcklybk1CUGp0MlBw?=
 =?utf-8?B?anM5TzVINkt1amxRNFJOdUpqU0dlK1o0QmFacms0MmZTOXRMeXo1cmdLTUZo?=
 =?utf-8?B?OXAxZ0FMUjZQaU9RUFdDRkRhTmxjWitldEFUVG9kcERLYUJ6VjFTNHVYUE5h?=
 =?utf-8?B?VkpSQ2FJeFRadWppeEd3Nm1ZeHVuTHFONm9HVXVyNEpWVlY0a0doSDN3UExY?=
 =?utf-8?B?RURxcStrTk5MTmdkcXF5YXlvMXRLL3cyVHNJdmNESFRpTkMvOVMzdmthTW5a?=
 =?utf-8?B?Z09LTWZLUWpZL2FKMWpHRjVrRDk3dXJsQ2NiM3BwM2ZzamI2a2JJbUJXc2hK?=
 =?utf-8?B?OUYxdjJrZ1NzdWdEU2JlSkxXS0xoNWZrazNCcE4rVEdjeEZhVU95blltVjdL?=
 =?utf-8?B?dHRPZEY3OE5xZWNOdWJyN2ZteXAvZXBjdkgrdDQ0K3d5SVRKVm5BMWQvTjVM?=
 =?utf-8?B?V1FMQmJPWDV4UzYxRk9RQVh5RlJPQ1pNdENFRTlLaG9ycVRVeVA4THFzV2dE?=
 =?utf-8?B?WUdWNDNGdjVKNFY2RU5VeXIvd2xHeUJXSTBLZDFkQ3hxVzlrNDV1R1dtVmNC?=
 =?utf-8?B?aWZaN1BiSmNjalh2ZEhvSktaYkJERURtemhPMFAvVDArS0JwNE54ZUNBb3FD?=
 =?utf-8?B?M1N3SDMzOU45UTJtU3dnakZ1bDJidHYrakp2NzkrYmh4MDNQaFZTVWhJaFFt?=
 =?utf-8?B?VncxU2pCTFBZNk5RaElYK29IUXEyalJMb085Zmgzb25uYUpHRU1uR2RRNWxD?=
 =?utf-8?B?dTBRU0NMeW16U2R3OTNBMFBXSnJiVkhxTjArVzNvdElsRitXZVZkUmlDZnVk?=
 =?utf-8?B?bnl1bStkUE9SNlJPRnZ4R3hKQVNCVS8zZnE0VTBnM1ZDOHdsQ2t4MnBoZnFB?=
 =?utf-8?B?QnRVV21ycUowakg4Z05ISHJVL1JETk9peUVsd2pVU1J5bWI5SWhzZWFVNkhH?=
 =?utf-8?B?WlI1QjA5clFxSWdadnMvSjdjblZyQVZ6akdVRkdGcVl2Nm4wUjRoaE4xOUcr?=
 =?utf-8?B?M2lrR1lzaDFKdnlseldlcmtyMG1rYWg1ZnM5YTR4V3FINVJ2U3Z0a2tRbVhT?=
 =?utf-8?B?Wmw1K0dBV2lhVXYxM0diK243V0dxNlZWSGExOHoxR2RxbDVQQTlMM3REcDk5?=
 =?utf-8?B?NDYrVW9TaUU4ajVTNnhjZENicmpaUHJIL2g0aTZ4bmJudGVXQldjUGNCWDMx?=
 =?utf-8?B?MjJGbGIzazgrcW1YdHhyMjcreWlUOEI1dmtGZFlFMFVyT1gxQ2dtVm94bHFN?=
 =?utf-8?B?TkM0aFdrcUNqL1RRdmJwcmx5RWE4UGV5VFhkZU9DZmRyWW5Ta0t2UTA2K2NS?=
 =?utf-8?B?WnN3MmhQdGdnZDZvTEdsREVERW8zOWxSaHZOQjMyN3RLVFhMbHQvd2gxajVi?=
 =?utf-8?B?aFN1RmtxMnM4U2VRQkZWWXByUmFBUnNLOWM4bmFJMDJYczBOaDdFd0piR05r?=
 =?utf-8?B?SWNIaXZvQ2JwQXhkaGdqNHZ3MmRuWDRKUW9Mald4Q2pXbTFjeW54TXVsaXBp?=
 =?utf-8?B?akdUTEFId1lubWw5OHNvR1I0c3JiVlFlSHl4WHJiNSswaTM3c3NIZ1hEVFZo?=
 =?utf-8?B?Q3FuYTJEUHJtNHpIS1Rnc012cFg4Um44Z0lWV3hBZ1hNZnJSZU02cXVpQk1W?=
 =?utf-8?B?UjZtcU5BblJtZ291K0grR1FaU29iNWhUNmY3YkZ1UWxFUGl4Z2dLU3VZRTZV?=
 =?utf-8?B?Q3Z6S2VhMXZTTHlRQ1phQmVWWU5DdGlQZ1RXNm9Va29yZHdITzgvYVFDNTNP?=
 =?utf-8?B?eGlZNlYzU3BNNjcrbTBGNERDa000ZEU1YzZJajJUWWo4b0JTRm5uZy9xb01U?=
 =?utf-8?B?WXoya1cwdDY4S1o1U3h0Q2RQbGM0NlJCaVdGdkRnTjlYSFZUOW9Gbi9DUmhx?=
 =?utf-8?B?NHRWckM0YmloRlpoLys5ODkxc0lJMVVWQ0J2SUFqOVg2Y0UrYTRnUU1uVnlP?=
 =?utf-8?B?OGIyVXpWbHVJc29PaHZsT1FuZFVpOHZpWTNwZWFqcG5hVk1OSlJ2TU50b2FD?=
 =?utf-8?B?bG1sWGNPZ1FvSjdxaS9XU1NhKzlzYzN3ZTBkVmsyMXM5WjdXWDNwMmFxeTMr?=
 =?utf-8?B?MHcxRGU2Y0xWRmppa1lveDd5Z2o3aW43cWpnUUVHVjdHbUVUekpnZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9493b2a0-73cd-4e45-e222-08df390d6aa8
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 18:16:29.8699
 (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: xYCu8gLpHhG3upXOBi3XFtbykEvXtpB5EbZHqQ/vnJKQUvIGYBgkZy0S2YX2zHU71b1Nzydi9tYC4iUiqBRGaZCiSzd99FtohIPWkGC54dA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR03MB8406
X-purgate-ID: tlsNG-bad1c0/1793643393-BE2C4034-70B94E7A/10/78276251493
X-purgate-type: spam
X-purgate-size: 3448

On 02/11/2026 4:12 pm, Ross Lagerwall wrote:
>> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> on behalf of Andrew Cooper <andrew.cooper3@citrix.com>
>> Sent: Monday, November 02, 2026 13:54
>> To: Xen-devel <xen-devel@lists.xenproject.org>
>> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Jan Beulich <jbeulich@suse.com>; Roger Pau Monné <roger@xenproject.org>; Teddy Astie <teddy.astie@vates.tech>; Jason Andryuk <jason.andryuk@amd.com>
>> Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
>>
>>
>> On 02/11/2026 1:46 pm, Andrew Cooper wrote:
>>> Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
>>> has been adjusted to state that the vNMI fields in vINTR are covered by the
>>> TPR cleanbit.
>>>
>>> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
>>> rather than writing into the VMCB directly.
>>>
>>> In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
>>> the reading of vmcb_get_general1_intercepts() to the point at which it is
>>> used; tt does not need reading on the case that vNMIs are enabled.
>>>
>>> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Jan Beulich <jbeulich@suse.com>
>>> CC: Roger Pau Monné <roger@xenproject.org>
>>> CC: Teddy Astie <teddy.astie@vates.tech>
>>> CC: Jason Andryuk <jason.andryuk@amd.com>
>> I forgot the extra comment.  This bug is hidden by:
>>
>>     /* The exit may have updated the TPR: reflect this in the hardware
>> vtpr */
>>     intr = vmcb_get_vintr(vmcb);
>>     intr.fields.tpr =
>>         (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
>>     vmcb_set_vintr(vmcb, intr);
>> }
>>
>> at the very end of the vmexit handler which unconditionally writes vINTR
>> and hits the cleanbit.
>>
>> This is an absurd codepath.  SVM has virtualised CR8 since the very
>> beginning, and put in CR8_LEGACY for Windows to use even in 32bit mode,
>> so the only path modifying TPR is a non-accelerated write to APIC_TPR. 
>>  That path can be updated to modify vINTR, and this logic dropped.
>>
>> ~Andrew
> The APM says "(Offset 60h–67h)" for this bit in the current and previous
> versions. Perhaps that means that more or everything in that range may be
> covered by this bit in future? In which case more extensive changes would be
> needed to avoid future breakage.

The vINTR field is complicated, because some bits are unconditional,
while some are covered by a cleanbit.

Byte 63h (V_INTR_MASKING, vGIF_EN, vNMI_EN, {,x2}AVIC_EN) all control
virtualisation behaviour.  These are unconditional, and I bet the 3
reserved bits in there will continue to behave in the same way when they
are given meaning.

All other bytes are state of the vCPU, and are (now documented to be)
subject to the cleanbit.

> On a related note, I see the APM says this:
>> If any VMCB fields (excluding explicitly uncached fields) have been modified,
>> all clean bits that are undefined (within the scope of the hypervisor) must be
>> cleared to zero.
> AFAICT Xen doesn't do this. Might that cause breakage in future?

Fun...  That's incompatible with the previous sentence.

Xen follows the previous advice, and sets:

    vmcb->cleanbits.raw = ~0u;

early(ish) in the VMExit handler.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468576.1677645 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHU-0006le-0v; Mon, 02 Nov 2026 19:01:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468576.1677645; Mon, 02 Nov 2026 19:01:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHT-0006lV-UD; Mon, 02 Nov 2026 19:01:19 +0000
Received: by outflank-mailman (input) for mailman id 1468576;
 Mon, 02 Nov 2026 19:01:17 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHR-0006YP-U2
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHR-00Bp4D-B2
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf1-8faa-0a2a0a5109dd-0a2a4501a6be-38
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:17 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddfc-5984-0a2a45010019-aa0a857cb4b7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:17 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-SQUIwsUvNE--qaZtLf92vw-1; Mon,
 02 Nov 2026 14:01:14 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id BA30F1802677; Mon,  2 Nov 2026 19:01:11 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id AB9321955F43; Mon,  2 Nov 2026 19:01:10 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646075;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=hPW7K8e9PhjSibqn/e/tSwEgnDdS9m32/bMUTsYxbh0=;
	b=UFtrRsenlEDiaan64AciE2NgrxqKfRJ6OnoTun77Xli6EjHaZ02k2NDPDd96CfRj+9MmBd
	hQsDazaIsQoNWX8imIMzGI93bwOUr+0L6GW6jO/9b2wb15Jn4guX4jryyTL9KIVsi52Dtj
	6NSmRAJuIDRnqku+r4lh5exNCdykAhE=
X-MC-Unique: SQUIwsUvNE--qaZtLf92vw-1
X-Mimecast-MFC-AGG-ID: SQUIwsUvNE--qaZtLf92vw_1793646072
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 03/25] trace: fix handling of char** in UST backend
Date: Mon,  2 Nov 2026 13:58:09 -0500
Message-ID: <20261102185831.1880189-4-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: gfV1ScxhUDwx-mrM-LFK8V5J76YabFFkvGvKU3NC-Qw_1793646072
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793646077-C4B45757-1D870473/35/111497
X-purgate-type: clean
X-purgate-size: 1519

From: Daniel P. Berrangé <berrange@redhat.com>

The UST trace backend fails to compile on version 2.14.0, as we
pass a "char **" arg as to ctf_string(), which only expects 'char *'.
It should instead be treated the same way as generic pointers, and
emitted as hex.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-4-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/format/ust_events_h.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py
index cee7970a403..76c883bc5c0 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -72,7 +72,9 @@ def generate(events, backend, group):
             names = e.args.names()
             fmts = e.formats()
             for t,n,f in zip(types, names, fmts):
-                if ('char *' in t) or ('char*' in t):
+                if ('char **' in t) or ('char**' in t):
+                    out('       ctf_integer_hex(' + t + ', ' + n + ', ' + n + ')')
+                elif ('char *' in t) or ('char*' in t):
                     out('       ctf_string(' + n + ', ' + n + ')')
                 elif ("%p" in f) or ("x" in f) or ("PRIx" in f):
                     out('       ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')')
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468575.1677638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHR-0006YV-Qy; Mon, 02 Nov 2026 19:01:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468575.1677638; Mon, 02 Nov 2026 19:01:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHR-0006YN-NT; Mon, 02 Nov 2026 19:01:17 +0000
Received: by outflank-mailman (input) for mailman id 1468575;
 Mon, 02 Nov 2026 19:01:16 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHQ-0006Lr-K0
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHP-00AdHl-Pe
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:15 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8dde7-2eae-0a2a0a5409dd-0a2a45058876-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:15 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddfa-4cb1-0a2a45050019-aa0a817cdd9b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:15 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-575-E4xqKpLVMK2dlUp-UY1vEQ-1; Mon,
 02 Nov 2026 14:01:10 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id B723B1800EF7; Mon,  2 Nov 2026 19:01:08 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id E2C911803A40; Mon,  2 Nov 2026 19:01:06 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646074;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=VyOfMou4RcojGMLaXB+CopKG9bhWtmdPnTdEbY8HCZQ=;
	b=g32OpgChUgl7Ht0Xf/apovDr3h7H4Bf3WwQ4f9jvczQaGZjMeIaR2T9fPP4aROkoOcjdw0
	kvC9j19L/XUgoL6tQUpIxeURAg4LrB8xE8HY9zywC8RZudrhGtHoyuIx/zZ15sZDsmha4e
	rQLlAxUqqzDuS4NKGuAuPxFw77WTEuo=
X-MC-Unique: E4xqKpLVMK2dlUp-UY1vEQ-1
X-Mimecast-MFC-AGG-ID: E4xqKpLVMK2dlUp-UY1vEQ_1793646068
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: [PULL 00/25] Tracing patches
Date: Mon,  2 Nov 2026 13:58:06 -0500
Message-ID: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: m1xcjM4snOs1OYu2MhY34RGszGyR5_vkjgWeM8jNei0_1793646068
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793646075-F44A42A1-6355E75B/35/111497
X-purgate-type: clean
X-purgate-size: 6506

The following changes since commit 56afd82bd4db9688f1c1c9d0e2ea163b8cde3283:

  Merge tag 'qemu-sparc-20261101' of https://github.com/mcayland/qemu into staging (2026-11-01 08:37:48 -0800)

are available in the Git repository at:

  https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request

for you to fetch changes up to 3b68720390b98f21e26ffcff8874851b7b49b7b7:

  trace: remove 'trace_event_get_state' wrapper (2026-11-02 13:52:14 -0500)

----------------------------------------------------------------
Pull request

Daniel Berrangé's 'disable' property removal and associated cleanups.

----------------------------------------------------------------

Daniel P. Berrangé (25):
  osdep: add 'ignore_value(x)' macro
  trace: use 'ignore_value()' instead of a dummy variable
  trace: fix handling of char** in UST backend
  hw/xen: replace "long unsigned int" with "unsigned long " for dtrace
  trace: block use of "long int" for dtrace
  trace: drop unused trace_event_set_state_dynamic_init()
  trace: remove obsolete references to vcpu property
  trace: drop 'id' from TraceEvent struct when not required
  trace: change "DSTATE" variables from uint16_t to uint8_t
  trace: add testing of 'nop' trace backend
  trace: don't emit TraceEvent structs when 'nop' backend is used
  trace: add test of generation with all backends enabled
  trace: remove redundant headers from simple trace backend code
  trace: include probe name in Rust format strings
  trace: add missing newline in ftrace Rust format string
  trace: eliminate dupe trace_event_get_state_dynamic_by_id() calls
  audio: remove mistaken use of trace_event_get_state()
  hw/ppc: remove mistaken use of trace_event_get_state()
  monitor: remove mistaken use of trace_event_get_state()
  trace: include qemu_loglevel_mask(LOG_TRACE) in guard
  target/hppa: use PRIx64 in trace-events
  trace: remove "disable" property from trace files
  trace: stop tracking static disabled state
  trace: remove parsing of "disable" event property
  trace: remove 'trace_event_get_state' wrapper

 docs/devel/tracing.rst                       |  27 +----
 qapi/trace.json                              |   5 +-
 include/qemu/osdep.h                         |   8 ++
 tests/tracetool/all.h                        | 100 +++++++++++++++++++
 tests/tracetool/dtrace.h                     |   6 +-
 tests/tracetool/ftrace.h                     |  14 ++-
 tests/tracetool/log.h                        |  26 +++--
 tests/tracetool/nop.h                        |  25 +++++
 tests/tracetool/simple.h                     |  10 +-
 tests/tracetool/syslog.h                     |  14 ++-
 tests/tracetool/ust.h                        |   6 +-
 trace/control-internal.h                     |   8 +-
 trace/control.h                              |  49 +--------
 trace/event-internal.h                       |  19 +---
 audio/audio-mixeng-be.c                      |   2 +-
 hw/ppc/vof.c                                 |  13 +--
 monitor/qmp.c                                |   4 +-
 stubs/trace-control.c                        |   6 --
 tests/tracetool/all.c                        |  61 +++++++++++
 tests/tracetool/dtrace.c                     |  10 +-
 tests/tracetool/ftrace.c                     |  10 +-
 tests/tracetool/log.c                        |  10 +-
 tests/tracetool/nop.c                        |   7 ++
 tests/tracetool/simple.c                     |  12 +--
 tests/tracetool/syslog.c                     |  10 +-
 tests/tracetool/ust.c                        |  10 +-
 trace/control-target.c                       |  29 ------
 trace/control.c                              |  19 +---
 trace/ftrace.c                               |   3 +-
 trace/qmp.c                                  |  47 +++------
 trace/simple.c                               |   9 +-
 hw/display/trace-events                      |   2 +-
 hw/xen/trace-events                          |   4 +-
 scripts/tracetool/__init__.py                |  32 ++----
 scripts/tracetool/backend/__init__.py        |   7 +-
 scripts/tracetool/backend/dtrace.py          |   2 -
 scripts/tracetool/backend/ftrace.py          |   8 +-
 scripts/tracetool/backend/log.py             |  22 ++--
 scripts/tracetool/backend/simple.py          |   9 +-
 scripts/tracetool/backend/syslog.py          |   6 +-
 scripts/tracetool/format/c.py                |  68 ++++++-------
 scripts/tracetool/format/d.py                |   3 -
 scripts/tracetool/format/h.py                |  48 ++++-----
 scripts/tracetool/format/log_stap.py         |   3 -
 scripts/tracetool/format/rs.py               |  30 +++---
 scripts/tracetool/format/simpletrace_stap.py |   3 -
 scripts/tracetool/format/stap.py             |   3 -
 scripts/tracetool/format/ust_events_c.py     |   3 -
 scripts/tracetool/format/ust_events_h.py     |   7 +-
 target/hppa/trace-events                     |  28 +++---
 tests/tracetool/all.d                        |  10 ++
 tests/tracetool/all.log-stap                 |  15 +++
 tests/tracetool/all.rs                       |  98 ++++++++++++++++++
 tests/tracetool/all.simpletrace-stap         |  16 +++
 tests/tracetool/all.stap                     |  14 +++
 tests/tracetool/all.ust-events-c             |  14 +++
 tests/tracetool/all.ust-events-h             |  56 +++++++++++
 tests/tracetool/dtrace.rs                    |   6 +-
 tests/tracetool/ftrace.rs                    |  10 +-
 tests/tracetool/log.rs                       |  12 ++-
 tests/tracetool/meson.build                  |   4 +-
 tests/tracetool/nop.rs                       |  51 ++++++++++
 tests/tracetool/simple.rs                    |   6 +-
 tests/tracetool/syslog.rs                    |  10 +-
 tests/tracetool/tracetool-test.py            |  12 ++-
 65 files changed, 747 insertions(+), 454 deletions(-)
 create mode 100644 tests/tracetool/all.h
 create mode 100644 tests/tracetool/nop.h
 create mode 100644 tests/tracetool/all.c
 create mode 100644 tests/tracetool/nop.c
 create mode 100644 tests/tracetool/all.d
 create mode 100644 tests/tracetool/all.log-stap
 create mode 100644 tests/tracetool/all.rs
 create mode 100644 tests/tracetool/all.simpletrace-stap
 create mode 100644 tests/tracetool/all.stap
 create mode 100644 tests/tracetool/all.ust-events-c
 create mode 100644 tests/tracetool/all.ust-events-h
 create mode 100644 tests/tracetool/nop.rs

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468574.1677627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHQ-0006Lz-Gj; Mon, 02 Nov 2026 19:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468574.1677627; Mon, 02 Nov 2026 19:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHQ-0006Ls-E2; Mon, 02 Nov 2026 19:01:16 +0000
Received: by outflank-mailman (input) for mailman id 1468574;
 Mon, 02 Nov 2026 19:01:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHP-0006Ll-GM
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHO-00Bp4D-Ip
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:14 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf1-8faa-0a2a0a5109dd-0a2a4501a6be-28
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:14 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf9-5984-0a2a45010019-aa0a857c9237-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:14 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-yjLHV0h9PfS3EB3Hwtg2Tw-1; Mon,
 02 Nov 2026 14:01:09 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D03FE1955F7F; Mon,  2 Nov 2026 19:01:05 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 2365530000E3; Mon,  2 Nov 2026 19:01:03 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646073;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=TqkKXu2f79+4gbliMkvun6ZA/q+B5xT3gEohpgAcSnM=;
	b=JYM5cNo8W3Aaj6RKKfI69mo9XjE0wC0aCANU5uosE0NgLfGC9OHqU1StqzNd/FXJKP3Ccs
	8PFgwhkfGyDg1jo6iwqELfkwA75ujbu/+1xB/D09jwTtg2cyeDWFnVKqLoanVDYZ4QnH0X
	zz5XCbnZ/CQYjrJazS5Ha/1p0SBRyKY=
X-MC-Unique: yjLHV0h9PfS3EB3Hwtg2Tw-1
X-Mimecast-MFC-AGG-ID: yjLHV0h9PfS3EB3Hwtg2Tw_1793646066
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 01/25] osdep: add 'ignore_value(x)' macro
Date: Mon,  2 Nov 2026 13:58:07 -0500
Message-ID: <20261102185831.1880189-2-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: nlAnk9kUUt1QJd7p_GCrtpqaXzItUxa4S9JDjHN1YF0_1793646066
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793646074-1FC69757-0020A5A4/35/111497
X-purgate-type: clean
X-purgate-size: 1574

From: Daniel P. Berrangé <berrange@redhat.com>

Functions annotated with 'warn_unused_result' cannot be cast
to (void) to silence the compiler. Add the ignore_value()
macro which tricks the compiler into thinking the result is
genuinely used, avoiding the need for manual workarounds where
the return value is intentionally ignored.

This clever macro is derived from one originating with the
GNULIB project:

  https://gitweb.git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/ignore-value.h;hb=HEAD

but simplified since we don't need compat with old GCC and
optimizing on clang is overkill.

Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-2-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/qemu/osdep.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 50c7ce33b6a..b27d159d5bb 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -251,6 +251,14 @@ extern "C" {
 #endif
 
 
+/*
+ * Merely casting to (void) is not sufficient for functions
+ * annotated with the "warn_unused_result" attribute
+ */
+#define ignore_value(x) \
+    (__extension__ ({ __typeof__(x) __x = (x); (void) __x; }))
+
+
 /*
  * For mingw, as of v6.0.0, the function implementing the assert macro is
  * not marked as noreturn, so the compiler cannot delete code following an
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468577.1677655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHX-000711-7R; Mon, 02 Nov 2026 19:01:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468577.1677655; Mon, 02 Nov 2026 19:01:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHX-00070s-4M; Mon, 02 Nov 2026 19:01:23 +0000
Received: by outflank-mailman (input) for mailman id 1468577;
 Mon, 02 Nov 2026 19:01:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHV-0006z4-U1
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHV-000wMH-Al
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:21 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8dddf-2eae-0a2a0a5409dd-0a2a450793c4-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:21 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de00-b4ea-0a2a45070019-aa0a857c9a01-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:21 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-HuUp_AYBPzS_FAxpXoe8Qw-1; Mon,
 02 Nov 2026 14:01:15 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D629E195606A; Mon,  2 Nov 2026 19:01:13 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id B5F621800446; Mon,  2 Nov 2026 19:01:12 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646080;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=VsdKm1LSZTE764H3BvnnumzwQKzcHlHW/sITvbevc3A=;
	b=hm39QIWA+rJyjbSL7zyaOUUVBrz2juEAiCcyU2LUDmYs9r5LDntZSz7uox6kO3mTGln+Ft
	WFbPeFmTvV1RRN0wIqBO8Hx9OgsDPimC0i+LKS5quYY66TvHQw6HQRa9vNoMvp7YqVj5M+
	yQPzUkqUM5QM1n8HfAX3A6M0ce74hJ4=
X-MC-Unique: HuUp_AYBPzS_FAxpXoe8Qw-1
X-Mimecast-MFC-AGG-ID: HuUp_AYBPzS_FAxpXoe8Qw_1793646074
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL 04/25] hw/xen: replace "long unsigned int" with "unsigned long " for dtrace
Date: Mon,  2 Nov 2026 13:58:10 -0500
Message-ID: <20261102185831.1880189-5-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: B1qHtLydD2Ac02RTogxkSlMBa3TnzUz2BjYaCPPqiSQ_1793646074
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793646081-A54C3AE4-D4F8B571/35/111497
X-purgate-type: clean
X-purgate-size: 1986

From: Daniel P. Berrangé <berrange@redhat.com>

dtrace (or at least systemtap's fake "dtrace" binary) doesn't like to
see "int" and "long" together in the typename, it just wants the
bare "long".

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-5-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/xen/trace-events | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index b67942d07b4..a31983ce1d3 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -57,8 +57,8 @@ cpu_ioreq_config_read(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uin
 cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
 cpu_get_ioreq_from_shared_memory_req_not_ready(int state, int data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O request not ready: 0x%x, ptr: 0x%x, port: 0x%"PRIx64", data: 0x%"PRIx64", count: %u, size: %u"
 xen_main_loop_prepare_init_cpu(int id, void *cpu) "cpu_by_vcpu_id[%d]=%p"
-xen_map_ioreq_server_shared_page(long unsigned int ioreq_pfn) "shared page at pfn 0x%lx"
-xen_map_ioreq_server_buffered_io_page(long unsigned int ioreq_pfn) "buffered io page at pfn 0x%lx"
+xen_map_ioreq_server_shared_page(unsigned long ioreq_pfn) "shared page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_page(unsigned long ioreq_pfn) "buffered io page at pfn 0x%lx"
 xen_map_ioreq_server_buffered_io_evtchn(int bufioreq_evtchn) "buffered io evtchn is 0x%x"
 destroy_hvm_domain_cannot_acquire_handle(void) "Cannot acquire xenctrl handle"
 destroy_hvm_domain_failed_action(const char *action, int sts, char *errno_s) "xc_domain_shutdown failed to issue %s, sts %d, %s"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468578.1677664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHY-0007FD-EP; Mon, 02 Nov 2026 19:01:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468578.1677664; Mon, 02 Nov 2026 19:01:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHY-0007Ex-Al; Mon, 02 Nov 2026 19:01:24 +0000
Received: by outflank-mailman (input) for mailman id 1468578;
 Mon, 02 Nov 2026 19:01:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHX-00070g-5m
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHW-000wMH-Iz
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:22 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8dddf-2eae-0a2a0a5409dd-0a2a450793c4-48
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:22 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de01-b4ea-0a2a45070019-aa0a817c546b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:22 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-271-pri0MwLOPtaWKx9vB82Row-1; Mon,
 02 Nov 2026 14:01:19 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 3D0381954B12; Mon,  2 Nov 2026 19:01:17 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id D03401800446; Mon,  2 Nov 2026 19:01:16 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646080;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=8UH5nYrF7hB5atKv+0kCjyLnZFXkjL/Cltw+H/p8G/s=;
	b=eBgD/wChEiM6Oefh9bmq/aaN1KR3wfo+g47xA5CydvKUUYZXdWXMlSsbEQXTzoFCu+//15
	lYkI77Nyy7iVYsHAdWNMYWQE1x3lZcB0+n5e42JOGd9GfpfsQiNDTUJuOxoJVCtImOgJWV
	JC5zeARynLVyxBoEe/b3caRFYwsWQdg=
X-MC-Unique: pri0MwLOPtaWKx9vB82Row-1
X-Mimecast-MFC-AGG-ID: pri0MwLOPtaWKx9vB82Row_1793646077
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 06/25] trace: drop unused trace_event_set_state_dynamic_init()
Date: Mon,  2 Nov 2026 13:58:12 -0500
Message-ID: <20261102185831.1880189-7-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: CniuZUKFEtWnhIsNWysS2RTh4eXVGZXrbTFAYtmPgbA_1793646077
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793646082-378D1AE4-550CB860/35/111497
X-purgate-type: clean
X-purgate-size: 2438

From: Daniel P. Berrangé <berrange@redhat.com>

The use of this method was mistakenly dropped in 0d4e995c73.
When the 'vcpu' property was dropped, however, this became
functionally identical to trace_event_set_state_dynamic().

Fixes: 0d4e995c7368 ("trace: convert code to use event iterators")
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-7-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/event-internal.h |  2 --
 stubs/trace-control.c  |  5 -----
 trace/control-target.c | 21 ---------------------
 3 files changed, 28 deletions(-)

diff --git a/trace/event-internal.h b/trace/event-internal.h
index 0c24e01b521..1d57b0ff1b5 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -37,6 +37,4 @@ typedef struct TraceEvent {
     uint16_t *dstate;
 } TraceEvent;
 
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state);
-
 #endif /* TRACE__EVENT_INTERNAL_H */
diff --git a/stubs/trace-control.c b/stubs/trace-control.c
index b428f34c878..3f196835db0 100644
--- a/stubs/trace-control.c
+++ b/stubs/trace-control.c
@@ -11,11 +11,6 @@
 #include "trace/control.h"
 
 
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
-{
-    trace_event_set_state_dynamic(ev, state);
-}
-
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     bool state_pre;
diff --git a/trace/control-target.c b/trace/control-target.c
index 57ceac21084..24d9b7abbde 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -10,27 +10,6 @@
 #include "qemu/osdep.h"
 #include "trace/control.h"
 
-
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
-{
-    bool state_pre;
-    assert(trace_event_get_state_static(ev));
-    /*
-     * We ignore the "vcpu" property here, since no vCPUs have been created
-     * yet. Then dstate can only be 1 or 0.
-     */
-    state_pre = *ev->dstate;
-    if (state_pre != state) {
-        if (state) {
-            trace_events_enabled_count++;
-            *ev->dstate = 1;
-        } else {
-            trace_events_enabled_count--;
-            *ev->dstate = 0;
-        }
-    }
-}
-
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     assert(trace_event_get_state_static(ev));
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468582.1677672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHe-0007c0-PU; Mon, 02 Nov 2026 19:01:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468582.1677672; Mon, 02 Nov 2026 19:01:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHe-0007bp-MJ; Mon, 02 Nov 2026 19:01:30 +0000
Received: by outflank-mailman (input) for mailman id 1468582;
 Mon, 02 Nov 2026 19:01:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHd-0007a1-QR
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHd-000KSU-7D
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:29 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de04-bab6-0a2a0a5309dd-0a2a4507a9a8-6
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:28 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de07-b4ea-0a2a45070019-aa0a857c9391-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:28 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-408-P0nOpbXnMIuwIVoBbPrD2A-1; Mon,
 02 Nov 2026 14:01:21 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id BBBF41954B09; Mon,  2 Nov 2026 19:01:19 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 65A7730001A2; Mon,  2 Nov 2026 19:01:19 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646087;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=1+Fb/pNuDVJKjUmAlJEVqK84jM77qkTAumiP1SiO8JU=;
	b=ZJOlc1mz+Vcp59a8UnpTVpecvvMVAUtDQb0QjDGpOi7xinOF9tQfPo/bUMYq8JmXtA7Yl4
	LFkOEDBYYsvEbOWObeWXqDamdBMtJ3HfSgbmdaYrYcOYeeww+mxMdftKk0r4zNR5RKyW16
	jWvCOF2P0w8cCTtH1S3aYeD61FNo5sk=
X-MC-Unique: P0nOpbXnMIuwIVoBbPrD2A-1
X-Mimecast-MFC-AGG-ID: P0nOpbXnMIuwIVoBbPrD2A_1793646080
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 08/25] trace: drop 'id' from TraceEvent struct when not required
Date: Mon,  2 Nov 2026 13:58:14 -0500
Message-ID: <20261102185831.1880189-9-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: qdHuj8bmrHqy7ydog_5PyPqVfjWmjzRrcTIJLyMj0PA_1793646080
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793646088-A52CCAE4-FB94639D/35/111497
X-purgate-type: clean
X-purgate-size: 7751

From: Daniel P. Berrangé <berrange@redhat.com>

Only "simpletrace" uses the "id" field from the TraceEvent struct.
Omit it when this backend is not enabled to save memory.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-9-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/control-internal.h      | 2 ++
 trace/control.h               | 3 ++-
 trace/event-internal.h        | 2 ++
 tests/tracetool/dtrace.c      | 4 ++++
 tests/tracetool/ftrace.c      | 4 ++++
 tests/tracetool/log.c         | 4 ++++
 tests/tracetool/simple.c      | 4 ++++
 tests/tracetool/syslog.c      | 4 ++++
 tests/tracetool/ust.c         | 4 ++++
 trace/control.c               | 4 +++-
 scripts/tracetool/format/c.py | 2 ++
 11 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/trace/control-internal.h b/trace/control-internal.h
index 8d818d359be..f626b047264 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -19,11 +19,13 @@ static inline bool trace_event_is_pattern(const char *str)
     return strchr(str, '*') != NULL;
 }
 
+#ifdef CONFIG_TRACE_SIMPLE
 static inline uint32_t trace_event_get_id(TraceEvent *ev)
 {
     assert(ev != NULL);
     return ev->id;
 }
+#endif
 
 static inline const char * trace_event_get_name(TraceEvent *ev)
 {
diff --git a/trace/control.h b/trace/control.h
index 20033fb6669..e77c07a8e68 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -81,13 +81,14 @@ TraceEvent *trace_event_name(const char *name);
  */
 static bool trace_event_is_pattern(const char *str);
 
-
+#ifdef CONFIG_TRACE_SIMPLE
 /**
  * trace_event_get_id:
  *
  * Get the identifier of an event.
  */
 static uint32_t trace_event_get_id(TraceEvent *ev);
+#endif
 
 /**
  * trace_event_get_name:
diff --git a/trace/event-internal.h b/trace/event-internal.h
index cc095a6ad54..ecf2caabd03 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -20,7 +20,9 @@
  * Opaque generic description of a tracing event.
  */
 typedef struct TraceEvent {
+#ifdef CONFIG_TRACE_SIMPLE
     uint32_t id;
+#endif
     const char * name;
     const bool sstate;
     uint16_t *dstate;
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 0484177481c..490d6f379a5 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/trace/control.c b/trace/control.c
index 6971157cbe7..947b220056a 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -36,8 +36,8 @@ typedef struct TraceEventGroup {
 
 static TraceEventGroup *event_groups;
 static size_t nevent_groups;
-static uint32_t next_id;
 #ifdef CONFIG_TRACE_SIMPLE
+static uint32_t next_id;
 static bool init_trace_on_startup;
 #endif
 static char *trace_opts_file;
@@ -65,10 +65,12 @@ QemuOptsList qemu_trace_opts = {
 
 void trace_event_register_group(TraceEvent **events)
 {
+#ifdef CONFIG_TRACE_SIMPLE
     size_t i;
     for (i = 0; events[i] != NULL; i++) {
         events[i]->id = next_id++;
     }
+#endif
     event_groups = g_renew(TraceEventGroup, event_groups, nevent_groups + 1);
     event_groups[nevent_groups].events = events;
     nevent_groups++;
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 50e03313cbf..abe738ac423 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -34,7 +34,9 @@ def generate(events, backend, group):
 
     for e in events:
         out('TraceEvent %(event)s = {',
+            '#ifdef CONFIG_TRACE_SIMPLE',
             '    .id = 0,',
+            '#endif',
             '    .name = \"%(name)s\",',
             '    .sstate = %(sstate)s,',
             '    .dstate = &%(dstate)s',
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468583.1677681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHg-0007qt-2N; Mon, 02 Nov 2026 19:01:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468583.1677681; Mon, 02 Nov 2026 19:01:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHf-0007qH-UU; Mon, 02 Nov 2026 19:01:31 +0000
Received: by outflank-mailman (input) for mailman id 1468583;
 Mon, 02 Nov 2026 19:01:30 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHe-0007ad-7N
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHd-00AdKp-KM
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:29 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddfc-e002-0a2a0a5209dd-0a2a4505df2e-30
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:29 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de08-4cb1-0a2a45050019-aa0a857c4edd-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:29 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-362-2WojmTPZN1iZuuWmvDA01Q-1; Mon,
 02 Nov 2026 14:01:23 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C197D1955F7F; Mon,  2 Nov 2026 19:01:21 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id B45441956087; Mon,  2 Nov 2026 19:01:20 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646088;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DFGAhqQ+xaxqaeHjSPXfZYHtf1rW7LNoujQ+nr96Ekg=;
	b=LDe6tDZscJ29pX3B8iaxZuI3qdO5RBuVoGMpQZ4rF9ZM3nYy7Vh+TLbhI94VZ9GDepaS27
	hj9+bEueZSNr2kY4sSIt/8jqks8d75pVoQ8jLtdrVue1PLm5p1zivJyADfUM9ePKFnAYWk
	Ns/PuUM4S6W77xpxsbdzhle2DGvUMOM=
X-MC-Unique: 2WojmTPZN1iZuuWmvDA01Q-1
X-Mimecast-MFC-AGG-ID: 2WojmTPZN1iZuuWmvDA01Q_1793646081
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 09/25] trace: change "DSTATE" variables from uint16_t to uint8_t
Date: Mon,  2 Nov 2026 13:58:15 -0500
Message-ID: <20261102185831.1880189-10-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: 9_VaHQctZwIhohao8HnbkORD4sbFNO4zmyldxc8sgbk_1793646081
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793646089-734BC2A1-6D26EE70/35/111497
X-purgate-type: clean
X-purgate-size: 13802

From: Daniel P. Berrangé <berrange@redhat.com>

Previously these variables had two distinct semantics. For
most probes DSTATE was treated as a simple boolean, while
for vcpu probes it was treated as a bitmask of vCPU indexes.

With vcpu probes removed, it is now exclusively a boolean
and thus using uint16_t is a waste of memory.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-10-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/dtrace.h       | 4 ++--
 tests/tracetool/ftrace.h       | 4 ++--
 tests/tracetool/log.h          | 4 ++--
 tests/tracetool/simple.h       | 4 ++--
 tests/tracetool/syslog.h       | 4 ++--
 tests/tracetool/ust.h          | 4 ++--
 trace/event-internal.h         | 2 +-
 tests/tracetool/dtrace.c       | 4 ++--
 tests/tracetool/ftrace.c       | 4 ++--
 tests/tracetool/log.c          | 4 ++--
 tests/tracetool/simple.c       | 4 ++--
 tests/tracetool/syslog.c       | 4 ++--
 tests/tracetool/ust.c          | 4 ++--
 scripts/tracetool/format/c.py  | 2 +-
 scripts/tracetool/format/h.py  | 2 +-
 scripts/tracetool/format/rs.py | 4 ++--
 tests/tracetool/dtrace.rs      | 6 +++---
 tests/tracetool/ftrace.rs      | 6 +++---
 tests/tracetool/log.rs         | 6 +++---
 tests/tracetool/simple.rs      | 6 +++---
 tests/tracetool/syslog.rs      | 6 +++---
 21 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/tests/tracetool/dtrace.h b/tests/tracetool/dtrace.h
index c8931a8d7b3..0b5b47089e8 100644
--- a/tests/tracetool/dtrace.h
+++ b/tests/tracetool/dtrace.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index 1dfe4239413..b34eef17d10 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include "trace/ftrace.h"
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index c7795871f85..ff510d54908 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include "qemu/log-for-trace.h"
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index ec6fcb22c3c..735cb21d911 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 void _simple_trace_test_blah(void *context, const char *filename);
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index ed4305554c1..4203b8b37dc 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include <syslog.h>
diff --git a/tests/tracetool/ust.h b/tests/tracetool/ust.h
index b7acd0c39b1..079b2c74491 100644
--- a/tests/tracetool/ust.h
+++ b/tests/tracetool/ust.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include <lttng/tracepoint.h>
diff --git a/trace/event-internal.h b/trace/event-internal.h
index ecf2caabd03..ad1578aa2c5 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -25,7 +25,7 @@ typedef struct TraceEvent {
 #endif
     const char * name;
     const bool sstate;
-    uint16_t *dstate;
+    uint8_t *dstate;
 } TraceEvent;
 
 #endif /* TRACE__EVENT_INTERNAL_H */
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 490d6f379a5..820ddb575b0 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index abe738ac423..de1c154a881 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -30,7 +30,7 @@ def generate(events, backend, group):
         '')
 
     for e in events:
-        out('uint16_t %s;' % e.api(e.QEMU_DSTATE))
+        out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
     for e in events:
         out('TraceEvent %(event)s = {',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index dd58713a158..4dc1ad7eb15 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -32,7 +32,7 @@ def generate(events, backend, group):
             event = e.api(e.QEMU_EVENT))
 
     for e in events:
-        out('extern uint16_t %s;' % e.api(e.QEMU_DSTATE))
+        out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
     # static state
     for e in events:
diff --git a/scripts/tracetool/format/rs.py b/scripts/tracetool/format/rs.py
index 7d9af7edfee..1fddcee1ad2 100644
--- a/scripts/tracetool/format/rs.py
+++ b/scripts/tracetool/format/rs.py
@@ -26,7 +26,7 @@ def generate(events, backend, group):
         '',
         '#[allow(dead_code)]',
         '#[inline(always)]',
-        'fn trace_event_state_is_enabled(dstate: u16) -> bool {',
+        'fn trace_event_state_is_enabled(dstate: u8) -> bool {',
         '    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0',
         '}',
         '',
@@ -39,7 +39,7 @@ def generate(events, backend, group):
 
     for e in events:
         out('    #[allow(dead_code)]',
-            '    static mut %s: u16;' % e.api(e.QEMU_DSTATE))
+            '    static mut %s: u8;' % e.api(e.QEMU_DSTATE))
     out('}',
         '')
 
diff --git a/tests/tracetool/dtrace.rs b/tests/tracetool/dtrace.rs
index 3490fcb271a..07398f4731b 100644
--- a/tests/tracetool/dtrace.rs
+++ b/tests/tracetool/dtrace.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 use std::cell::UnsafeCell;
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index 34f66004902..ff0bcde4b8b 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/log.rs b/tests/tracetool/log.rs
index 770758611d1..0f052bb2c9c 100644
--- a/tests/tracetool/log.rs
+++ b/tests/tracetool/log.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/simple.rs b/tests/tracetool/simple.rs
index 92f896ef178..976feddde5b 100644
--- a/tests/tracetool/simple.rs
+++ b/tests/tracetool/simple.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/syslog.rs b/tests/tracetool/syslog.rs
index 378d03d34b2..9688dac84a5 100644
--- a/tests/tracetool/syslog.rs
+++ b/tests/tracetool/syslog.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468584.1677684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHg-0007tg-9z; Mon, 02 Nov 2026 19:01:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468584.1677684; Mon, 02 Nov 2026 19:01:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHg-0007su-6T; Mon, 02 Nov 2026 19:01:32 +0000
Received: by outflank-mailman (input) for mailman id 1468584;
 Mon, 02 Nov 2026 19:01:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHe-0007bM-II
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHd-000KSU-VT
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:29 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf5-bab6-0a2a0a5309dd-0a2a450ab18a-34
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:29 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de08-f2d2-0a2a450a0019-aa0a817cb279-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:29 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-313-O__lPeZ8OP6EyAo73df12Q-1; Mon,
 02 Nov 2026 14:01:25 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id EF7571954AC2; Mon,  2 Nov 2026 19:01:22 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id A5A451800446; Mon,  2 Nov 2026 19:01:22 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646088;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jKP5HFz810ebf9alfWmuhAqqhtocmxxt5vjo0KJQomg=;
	b=dEM0IBrVz1IKjnhPAg10oKciC7Ipi9TjsfkJNAZAz+h4cZYMcs1QGk1nS9ny2ybNveu8hw
	SEzTvUExOr86hBBY1EXWvRBTz+fHBfVipP2mPTOiTxbjxuCASw4MYOh6nX/NWfg5Xq4yBO
	9Vog3k9yWsH7DyOYAFsUmbRE3brDeKY=
X-MC-Unique: O__lPeZ8OP6EyAo73df12Q-1
X-Mimecast-MFC-AGG-ID: O__lPeZ8OP6EyAo73df12Q_1793646083
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 02/25] trace: use 'ignore_value()' instead of a dummy variable
Date: Mon,  2 Nov 2026 13:58:08 -0500
Message-ID: <20261102185831.1880189-3-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: biIa1pgL0_rTm-2xbtXQXzP7KIPtrt-jqyxj6R4Kc_0_1793646083
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793646089-504CFCFC-114BAB7A/35/111497
X-purgate-type: clean
X-purgate-size: 2669

From: Daniel P. Berrangé <berrange@redhat.com>

This pattern is more concise than using a dummy variable which
in turn needs annotating as unused.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-3-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/ftrace.c | 3 +--
 trace/simple.c | 9 ++++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/trace/ftrace.c b/trace/ftrace.c
index 6875faedb9c..c1ed6ad4454 100644
--- a/trace/ftrace.c
+++ b/trace/ftrace.c
@@ -41,7 +41,6 @@ static int find_mount(char *mount_point, const char *fstype)
 void ftrace_write(const char *fmt, ...)
 {
     char ftrace_buf[MAX_TRACE_STRLEN];
-    int unused __attribute__ ((unused));
     int trlen;
     va_list ap;
 
@@ -50,7 +49,7 @@ void ftrace_write(const char *fmt, ...)
     va_end(ap);
 
     trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
-    unused = write(trace_marker_fd, ftrace_buf, trlen);
+    ignore_value(write(trace_marker_fd, ftrace_buf, trlen));
 }
 
 bool ftrace_init(void)
diff --git a/trace/simple.c b/trace/simple.c
index c0aba00cb7f..e148ca44530 100644
--- a/trace/simple.c
+++ b/trace/simple.c
@@ -163,7 +163,6 @@ static gpointer writeout_thread(gpointer opaque)
     } dropped;
     unsigned int idx = 0;
     int dropped_count;
-    size_t unused __attribute__ ((unused));
     uint64_t type = TRACE_RECORD_TYPE_EVENT;
 
     for (;;) {
@@ -179,13 +178,13 @@ static gpointer writeout_thread(gpointer opaque)
             } while (!g_atomic_int_compare_and_exchange(&dropped_events,
                                                         dropped_count, 0));
             dropped.rec.arguments[0] = dropped_count;
-            unused = fwrite(&type, sizeof(type), 1, trace_fp);
-            unused = fwrite(&dropped.rec, dropped.rec.length, 1, trace_fp);
+            ignore_value(fwrite(&type, sizeof(type), 1, trace_fp));
+            ignore_value(fwrite(&dropped.rec, dropped.rec.length, 1, trace_fp));
         }
 
         while (get_trace_record(idx, &recordptr)) {
-            unused = fwrite(&type, sizeof(type), 1, trace_fp);
-            unused = fwrite(recordptr, recordptr->length, 1, trace_fp);
+            ignore_value(fwrite(&type, sizeof(type), 1, trace_fp));
+            ignore_value(fwrite(recordptr, recordptr->length, 1, trace_fp));
             writeout_idx += recordptr->length;
             free(recordptr); /* don't use g_free, can deadlock when traced */
             idx = writeout_idx % TRACE_BUF_LEN;
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468585.1677701 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHi-0008J3-1P; Mon, 02 Nov 2026 19:01:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468585.1677701; Mon, 02 Nov 2026 19:01:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHh-0008ID-QW; Mon, 02 Nov 2026 19:01:33 +0000
Received: by outflank-mailman (input) for mailman id 1468585;
 Mon, 02 Nov 2026 19:01:33 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHg-000822-Uj
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHg-00Bp7W-BL
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:32 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf8-8faa-0a2a0a5109dd-0a2a4503b136-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:32 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de06-fae8-0a2a45030019-aa0a857cdde7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:27 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-164-FYOnKF7dNwWxwGciaH3gdA-1; Mon,
 02 Nov 2026 14:01:20 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 70EEF19560B1; Mon,  2 Nov 2026 19:01:18 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 243541800765; Mon,  2 Nov 2026 19:01:18 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646086;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=s2fQy26Nzh4pevOCqiRqluICNBTrWSgxg/L8ugtFtns=;
	b=ABXeLW/3CNHTi9lV/IRFZVGQaYqoPnSXfdM4YTOuDXTlzdiibTz/ObE9YM1Dm4XViNTMyo
	EEy397jRdn5d4idPyqYo7maKoBpc2R9LldXXhPXKqjdHfeNgGA3xaA6ZzzQn/9qWM1LU9t
	5og5W7r7m+c5dB2oQFL43pUHlV+a5MY=
X-MC-Unique: FYOnKF7dNwWxwGciaH3gdA-1
X-Mimecast-MFC-AGG-ID: FYOnKF7dNwWxwGciaH3gdA_1793646078
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL 07/25] trace: remove obsolete references to vcpu property
Date: Mon,  2 Nov 2026 13:58:13 -0500
Message-ID: <20261102185831.1880189-8-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: uzrzJe2fISCg8lzu_gQGZreSfhv5_yg1dOXuYUxrhWA_1793646078
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793646087-76AF94E9-C4CBEED9/35/111497
X-purgate-type: clean
X-purgate-size: 4069

From: Daniel P. Berrangé <berrange@redhat.com>

The 'vcpu' property for trace events was removed 2 years ago
but some mentions of it remain in the code.

Fixes: 7ffc4894a63b ("trace: Remove deprecated 'vcpu' field from QMP trace events")
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-8-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/control.h        | 12 ------------
 trace/event-internal.h | 11 -----------
 trace/control-target.c |  6 ------
 trace/control.c        |  6 ------
 4 files changed, 35 deletions(-)

diff --git a/trace/control.h b/trace/control.h
index 6754bfe052b..20033fb6669 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -139,8 +139,6 @@ static bool trace_event_get_state_static(TraceEvent *ev);
  * trace_event_get_state_dynamic:
  *
  * Get the dynamic tracing state of an event.
- *
- * If the event has the 'vcpu' property, gets the OR'ed state of all vCPUs.
  */
 static bool trace_event_get_state_dynamic(TraceEvent *ev);
 
@@ -149,8 +147,6 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
  *
  * Set the dynamic tracing state of an event.
  *
- * If the event has the 'vcpu' property, sets the state on all vCPUs.
- *
  * Pre-condition: trace_event_get_state_static(ev) == true
  */
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
@@ -203,14 +199,6 @@ extern QemuOptsList qemu_trace_opts;
  */
 void trace_opt_parse(const char *optstr);
 
-/**
- * trace_get_vcpu_event_count:
- *
- * Return the number of known vcpu-specific events
- */
-uint32_t trace_get_vcpu_event_count(void);
-
-
 #include "control-internal.h"
 
 #endif /* TRACE__CONTROL_H */
diff --git a/trace/event-internal.h b/trace/event-internal.h
index 1d57b0ff1b5..cc095a6ad54 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -10,12 +10,6 @@
 #ifndef TRACE__EVENT_INTERNAL_H
 #define TRACE__EVENT_INTERNAL_H
 
-/*
- * Special value for TraceEvent.vcpu_id field to indicate
- * that the event is not VCPU specific
- */
-#define TRACE_VCPU_EVENT_NONE ((uint32_t)-1)
-
 /**
  * TraceEvent:
  * @id: Unique event identifier.
@@ -23,11 +17,6 @@
  * @sstate: Static tracing state.
  * @dstate: Dynamic tracing state
  *
- * Interpretation of @dstate depends on whether the event has the 'vcpu'
- *  property:
- * - false: Boolean value indicating whether the event is active.
- * - true : Integral counting the number of vCPUs that have this event enabled.
- *
  * Opaque generic description of a tracing event.
  */
 typedef struct TraceEvent {
diff --git a/trace/control-target.c b/trace/control-target.c
index 24d9b7abbde..87b0f5037df 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -14,12 +14,6 @@ void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     assert(trace_event_get_state_static(ev));
 
-    /*
-     * There is no longer a "vcpu" property, dstate can only be 1 or
-     * 0. With it, we haven't instantiated any vCPU yet, so we will
-     * set a global state instead, and trace_init_vcpu will reconcile
-     * it afterwards.
-     */
     bool state_pre = *ev->dstate;
     if (state_pre != state) {
         if (state) {
diff --git a/trace/control.c b/trace/control.c
index 49f0a4c5cda..6971157cbe7 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -37,7 +37,6 @@ typedef struct TraceEventGroup {
 static TraceEventGroup *event_groups;
 static size_t nevent_groups;
 static uint32_t next_id;
-static uint32_t next_vcpu_id;
 #ifdef CONFIG_TRACE_SIMPLE
 static bool init_trace_on_startup;
 #endif
@@ -304,8 +303,3 @@ void trace_opt_parse(const char *optstr)
     trace_opts_file = g_strdup(qemu_opt_get(opts, "file"));
     qemu_opts_del(opts);
 }
-
-uint32_t trace_get_vcpu_event_count(void)
-{
-    return next_vcpu_id;
-}
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468586.1677710 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHj-00006x-Eg; Mon, 02 Nov 2026 19:01:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468586.1677710; Mon, 02 Nov 2026 19:01:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHj-00006E-6A; Mon, 02 Nov 2026 19:01:35 +0000
Received: by outflank-mailman (input) for mailman id 1468586;
 Mon, 02 Nov 2026 19:01:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHh-000860-3B
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHg-000wMH-Fz
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:32 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de01-2eae-0a2a0a5409dd-0a2a4501dc2a-8
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:32 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de09-5984-0a2a45010019-aa0a817cb50f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:30 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-517-bDpS0_1SNbuIVeQYkiMFXQ-1; Mon,
 02 Nov 2026 14:01:25 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 4FBC3180134F; Mon,  2 Nov 2026 19:01:24 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id EC01B1800444; Mon,  2 Nov 2026 19:01:23 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646089;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=sNaYu08RePiA3/TOJj7oi5LlAFNAX4bokf8QMENnVcY=;
	b=dP2bgzQmj8iF9VsTpqt6XFPtKrLCmtv3UafsXMrNaQ416UGl4fEMMvN5Op/8NWmWNE7Sf/
	IPeeKcGGiyaWvDCgAhaBZAFwk9Zw/OoYtkMfE/M/AMCJTLe8o0/OlnOpT8KRdC4Zwk+vTk
	JSByF3JVVRzBBLcGS17qgrDjbqx070s=
X-MC-Unique: bDpS0_1SNbuIVeQYkiMFXQ-1
X-Mimecast-MFC-AGG-ID: bDpS0_1SNbuIVeQYkiMFXQ_1793646084
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 11/25] trace: don't emit TraceEvent structs when 'nop' backend is used
Date: Mon,  2 Nov 2026 13:58:17 -0500
Message-ID: <20261102185831.1880189-12-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: KZSBWA2C3_g40TxhN05B77iyNLrKQ1dnRUFpjnQUzv4_1793646084
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793646090-BD67C757-4A1E55FD/35/111497
X-purgate-type: clean
X-purgate-size: 6154

From: Daniel P. Berrangé <berrange@redhat.com>

The 'nop' backend is a short-hand for no trace probe usage
at all. The emitted functions become a no-op, and as such
there is no need to emit the TraceEvent structs, nor the
DSTATE variables they reference.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-12-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/nop.h         |  6 +--
 tests/tracetool/nop.c         | 29 ---------------
 scripts/tracetool/format/c.py | 69 ++++++++++++++++++-----------------
 scripts/tracetool/format/h.py | 14 ++++---
 4 files changed, 46 insertions(+), 72 deletions(-)

diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
index 443f5e0cf6e..64b6b005684 100644
--- a/tests/tracetool/nop.h
+++ b/tests/tracetool/nop.h
@@ -6,10 +6,8 @@
 
 #include "trace/control.h"
 
-extern TraceEvent _TRACE_TEST_BLAH_EVENT;
-extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint8_t _TRACE_TEST_BLAH_DSTATE;
-extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define _TRACE_TEST_BLAH_DSTATE 0
+#define _TRACE_TEST_WIBBLE_DSTATE 0
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 
diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c
index f83d06252ea..d34cc0ca742 100644
--- a/tests/tracetool/nop.c
+++ b/tests/tracetool/nop.c
@@ -5,32 +5,3 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint8_t _TRACE_TEST_BLAH_DSTATE;
-uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-TraceEvent _TRACE_TEST_BLAH_EVENT = {
-#ifdef CONFIG_TRACE_SIMPLE
-    .id = 0,
-#endif
-    .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
-    .dstate = &_TRACE_TEST_BLAH_DSTATE
-};
-TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
-#ifdef CONFIG_TRACE_SIMPLE
-    .id = 0,
-#endif
-    .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
-    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
-};
-TraceEvent *testsuite_trace_events[] = {
-    &_TRACE_TEST_BLAH_EVENT,
-    &_TRACE_TEST_WIBBLE_EVENT,
-  NULL,
-};
-
-static void trace_testsuite_register_events(void)
-{
-    trace_event_register_group(testsuite_trace_events);
-}
-trace_init(trace_testsuite_register_events)
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index de1c154a881..5f6669c917c 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -29,41 +29,42 @@ def generate(events, backend, group):
         '#include "%s"' % header,
         '')
 
-    for e in events:
-        out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
+    if len(list(backend.backend_modules())):
+        for e in events:
+            out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
-    for e in events:
-        out('TraceEvent %(event)s = {',
-            '#ifdef CONFIG_TRACE_SIMPLE',
-            '    .id = 0,',
-            '#endif',
-            '    .name = \"%(name)s\",',
-            '    .sstate = %(sstate)s,',
-            '    .dstate = &%(dstate)s',
+        for e in events:
+            out('TraceEvent %(event)s = {',
+                '#ifdef CONFIG_TRACE_SIMPLE',
+                '    .id = 0,',
+                '#endif',
+                '    .name = \"%(name)s\",',
+                '    .sstate = %(sstate)s,',
+                '    .dstate = &%(dstate)s',
+                '};',
+                event = e.api(e.QEMU_EVENT),
+                name = e.name,
+                sstate = "TRACE_%s_ENABLED" % e.name.upper(),
+                dstate = e.api(e.QEMU_DSTATE))
+
+        out('TraceEvent *%(group)s_trace_events[] = {',
+            group = group.lower())
+
+        for e in events:
+            out('    &%(event)s,', event = e.api(e.QEMU_EVENT))
+
+        out('  NULL,',
             '};',
-            event = e.api(e.QEMU_EVENT),
-            name = e.name,
-            sstate = "TRACE_%s_ENABLED" % e.name.upper(),
-            dstate = e.api(e.QEMU_DSTATE))
+            '')
 
-    out('TraceEvent *%(group)s_trace_events[] = {',
-        group = group.lower())
+        out('static void trace_%(group)s_register_events(void)',
+            '{',
+            '    trace_event_register_group(%(group)s_trace_events);',
+            '}',
+            'trace_init(trace_%(group)s_register_events)',
+            group = group.lower())
 
-    for e in events:
-        out('    &%(event)s,', event = e.api(e.QEMU_EVENT))
-
-    out('  NULL,',
-        '};',
-        '')
-
-    out('static void trace_%(group)s_register_events(void)',
-        '{',
-        '    trace_event_register_group(%(group)s_trace_events);',
-        '}',
-        'trace_init(trace_%(group)s_register_events)',
-        group = group.lower())
-
-    backend.generate_begin(active_events, group)
-    for event in active_events:
-        backend.generate(event, group)
-    backend.generate_end(active_events, group)
+        backend.generate_begin(active_events, group)
+        for event in active_events:
+            backend.generate(event, group)
+        backend.generate_end(active_events, group)
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 4dc1ad7eb15..6ffb7256e31 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -27,12 +27,16 @@ def generate(events, backend, group):
         '#include "%s"' % header,
         '')
 
-    for e in events:
-        out('extern TraceEvent %(event)s;',
-            event = e.api(e.QEMU_EVENT))
+    if len(list(backend.backend_modules())):
+        for e in events:
+            out('extern TraceEvent %(event)s;',
+                event = e.api(e.QEMU_EVENT))
 
-    for e in events:
-        out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
+        for e in events:
+            out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
+    else:
+        for e in events:
+            out('#define %s 0' % e.api(e.QEMU_DSTATE))
 
     # static state
     for e in events:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468590.1677718 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHl-0000XF-O6; Mon, 02 Nov 2026 19:01:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468590.1677718; Mon, 02 Nov 2026 19:01:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHl-0000Wu-J8; Mon, 02 Nov 2026 19:01:37 +0000
Received: by outflank-mailman (input) for mailman id 1468590;
 Mon, 02 Nov 2026 19:01:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHj-00008g-K5
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHj-000wMH-0p
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:35 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf3-2eae-0a2a0a5409dd-0a2a4508abd2-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:34 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0d-f659-0a2a45080019-aa0a817c9f39-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:34 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-N5Kyo9okNKqxr5a8po6ZSA-1; Mon,
 02 Nov 2026 14:01:31 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id A793D1955DEA; Mon,  2 Nov 2026 19:01:29 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 716621803A44; Mon,  2 Nov 2026 19:01:28 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646093;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=gkkz7NQLFS94E1ZeoUXFtFHJe+s6Qg+c1y84IQKKE4k=;
	b=AMrfGUXFYnuhMdIId3WUQlqx8O1dtbKb3+hy9Pa28VnUXw9hxjzgLdHz5sfZlpf+Zyd7JO
	Qg670db/Ai1HU0y0uE9X8X9/8te4wq+195YeGRJrYMGkYGk5t7rzay80EXIPB3gD5nEDHe
	qxm1ahJ1OEhuO750N+a0HYptJypK7eU=
X-MC-Unique: N5Kyo9okNKqxr5a8po6ZSA-1
X-Mimecast-MFC-AGG-ID: N5Kyo9okNKqxr5a8po6ZSA_1793646089
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 13/25] trace: remove redundant headers from simple trace backend code
Date: Mon,  2 Nov 2026 13:58:19 -0500
Message-ID: <20261102185831.1880189-14-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: 3EBaG5I69wyzjmBnVVCM79BbGDLs6cxfJZCTaYGgrDo_1793646089
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793646094-CDB4987B-AA5315D1/35/111497
X-purgate-type: clean
X-purgate-size: 2149

From: Daniel P. Berrangé <berrange@redhat.com>

The main formatter for .h/.c files for generated trace code
already includes osdep.h and control.h, so it is redundant
for the simple trace backend to add them too.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-14-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.c               | 2 --
 tests/tracetool/simple.c            | 2 --
 scripts/tracetool/backend/simple.py | 4 +---
 3 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
index 820ddb575b0..3b8d4d32d17 100644
--- a/tests/tracetool/all.c
+++ b/tests/tracetool/all.c
@@ -34,8 +34,6 @@ static void trace_testsuite_register_events(void)
     trace_event_register_group(testsuite_trace_events);
 }
 trace_init(trace_testsuite_register_events)
-#include "qemu/osdep.h"
-#include "trace/control.h"
 #include "trace/simple.h"
 
 void _simple_trace_test_blah(void *context, const char *filename)
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 820ddb575b0..3b8d4d32d17 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -34,8 +34,6 @@ static void trace_testsuite_register_events(void)
     trace_event_register_group(testsuite_trace_events);
 }
 trace_init(trace_testsuite_register_events)
-#include "qemu/osdep.h"
-#include "trace/control.h"
 #include "trace/simple.h"
 
 void _simple_trace_test_blah(void *context, const char *filename)
diff --git a/scripts/tracetool/backend/simple.py b/scripts/tracetool/backend/simple.py
index b131e4fc194..e22683c7d2a 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -48,9 +48,7 @@ def generate_h_backend_dstate(event, group):
 
 
 def generate_c_begin(events, group):
-    out('#include "qemu/osdep.h"',
-        '#include "trace/control.h"',
-        '#include "trace/simple.h"',
+    out('#include "trace/simple.h"',
         '')
 
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468591.1677721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHm-0000an-3E; Mon, 02 Nov 2026 19:01:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468591.1677721; Mon, 02 Nov 2026 19:01:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHl-0000aQ-V0; Mon, 02 Nov 2026 19:01:37 +0000
Received: by outflank-mailman (input) for mailman id 1468591;
 Mon, 02 Nov 2026 19:01:36 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHj-0000D6-RS
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHj-00Bp7W-8H
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:35 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0c-8faa-0a2a0a5109dd-0a2a4503a4a8-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:35 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0e-fae8-0a2a45030019-aa0a857cee37-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:35 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-230-ZbEk_HoDOFGdSetIT6hdXg-1; Mon,
 02 Nov 2026 14:01:29 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 8B4891802677; Mon,  2 Nov 2026 19:01:27 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 3580D30001A2; Mon,  2 Nov 2026 19:01:25 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646093;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=2Ozn+n7oejeYEU5bC9zbT0ZwSD6t+CLu8qMU+CoA5yo=;
	b=GoIU6v+Lp1pQmVHPMthg0EodsHnPN3Z86bV+dHJsnIN/PxQOda1qXH34Q8l5vFOe0SXzIT
	f47Ml3cuNcPImwMl3q3F0QW1li9/o05JBYbWiX29vaZdsfYiyhIpXXnrNj1A/30Cc6y010
	SrBjdnRcBAIQaSmnJcrS7AbtfZ6hjfc=
X-MC-Unique: ZbEk_HoDOFGdSetIT6hdXg-1
X-Mimecast-MFC-AGG-ID: ZbEk_HoDOFGdSetIT6hdXg_1793646087
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 12/25] trace: add test of generation with all backends enabled
Date: Mon,  2 Nov 2026 13:58:18 -0500
Message-ID: <20261102185831.1880189-13-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: oxsvxE9H8GBvhDnXfS0Y9BLWocJrIOqLPP9EhGe8cZU_1793646087
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793646095-77AC44E9-49D661EF/35/111497
X-purgate-type: clean
X-purgate-size: 18093

From: Daniel P. Berrangé <berrange@redhat.com>

This reveals potentially interesting patterns in the generated
code when multiple backends are present.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-13-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                | 102 +++++++++++++++++++++++++++
 tests/tracetool/all.c                |  65 +++++++++++++++++
 tests/tracetool/all.d                |  10 +++
 tests/tracetool/all.log-stap         |  15 ++++
 tests/tracetool/all.rs               |  90 +++++++++++++++++++++++
 tests/tracetool/all.simpletrace-stap |  16 +++++
 tests/tracetool/all.stap             |  14 ++++
 tests/tracetool/all.ust-events-c     |  14 ++++
 tests/tracetool/all.ust-events-h     |  56 +++++++++++++++
 tests/tracetool/meson.build          |   3 +-
 tests/tracetool/tracetool-test.py    |  12 ++--
 11 files changed, 392 insertions(+), 5 deletions(-)
 create mode 100644 tests/tracetool/all.h
 create mode 100644 tests/tracetool/all.c
 create mode 100644 tests/tracetool/all.d
 create mode 100644 tests/tracetool/all.log-stap
 create mode 100644 tests/tracetool/all.rs
 create mode 100644 tests/tracetool/all.simpletrace-stap
 create mode 100644 tests/tracetool/all.stap
 create mode 100644 tests/tracetool/all.ust-events-c
 create mode 100644 tests/tracetool/all.ust-events-h

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
new file mode 100644
index 00000000000..41fa4d0e8a2
--- /dev/null
+++ b/tests/tracetool/all.h
@@ -0,0 +1,102 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef TRACE_TESTSUITE_GENERATED_TRACERS_H
+#define TRACE_TESTSUITE_GENERATED_TRACERS_H
+
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_TEST_BLAH_EVENT;
+extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define TRACE_TEST_BLAH_ENABLED 1
+#define TRACE_TEST_WIBBLE_ENABLED 1
+#ifndef SDT_USE_VARIADIC
+#define SDT_USE_VARIADIC 1
+#endif
+#include "trace-dtrace-testsuite.h"
+
+#undef SDT_USE_VARIADIC
+#ifndef QEMU_TEST_BLAH_ENABLED
+#define QEMU_TEST_BLAH_ENABLED() true
+#endif
+#ifndef QEMU_TEST_WIBBLE_ENABLED
+#define QEMU_TEST_WIBBLE_ENABLED() true
+#endif
+#include "trace/ftrace.h"
+
+#include "qemu/log-for-trace.h"
+
+void _simple_trace_test_blah(void *context, const char *filename);
+void _simple_trace_test_wibble(void *context, int value);
+
+#include <syslog.h>
+
+#include <lttng/tracepoint.h>
+#include "trace-ust-testsuite.h"
+
+/* tracepoint_enabled() was introduced in LTTng UST 2.7 */
+#ifndef tracepoint_enabled
+#define tracepoint_enabled(a, b) true
+#endif
+
+
+#define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
+    QEMU_TEST_BLAH_ENABLED() || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    tracepoint_enabled(qemu, test_blah) || \
+    false)
+
+static inline void trace_test_blah(void *context, const char *filename)
+{
+    QEMU_TEST_BLAH(context, filename);
+    tracepoint(qemu, test_blah, context, filename);
+    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+#line 4 "trace-events"
+        ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
+#line 62 "all.h"
+        if (qemu_loglevel_mask(LOG_TRACE)) {
+#line 4 "trace-events"
+            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
+#line 66 "all.h"
+        }
+        _simple_trace_test_blah(context, filename);
+#line 4 "trace-events"
+        syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
+#line 71 "all.h"
+    }
+}
+
+#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
+    QEMU_TEST_WIBBLE_ENABLED() || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    tracepoint_enabled(qemu, test_wibble) || \
+    false)
+
+static inline void trace_test_wibble(void *context, int value)
+{
+    QEMU_TEST_WIBBLE(context, value);
+    tracepoint(qemu, test_wibble, context, value);
+    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+#line 5 "trace-events"
+        ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
+#line 91 "all.h"
+        if (qemu_loglevel_mask(LOG_TRACE)) {
+#line 5 "trace-events"
+            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
+#line 95 "all.h"
+        }
+        _simple_trace_test_wibble(context, value);
+#line 5 "trace-events"
+        syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
+#line 100 "all.h"
+    }
+}
+#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
new file mode 100644
index 00000000000..820ddb575b0
--- /dev/null
+++ b/tests/tracetool/all.c
@@ -0,0 +1,65 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+#include "qemu/module.h"
+#include "trace-testsuite.h"
+
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_blah",
+    .sstate = TRACE_TEST_BLAH_ENABLED,
+    .dstate = &_TRACE_TEST_BLAH_DSTATE
+};
+TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_wibble",
+    .sstate = TRACE_TEST_WIBBLE_ENABLED,
+    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
+};
+TraceEvent *testsuite_trace_events[] = {
+    &_TRACE_TEST_BLAH_EVENT,
+    &_TRACE_TEST_WIBBLE_EVENT,
+  NULL,
+};
+
+static void trace_testsuite_register_events(void)
+{
+    trace_event_register_group(testsuite_trace_events);
+}
+trace_init(trace_testsuite_register_events)
+#include "qemu/osdep.h"
+#include "trace/control.h"
+#include "trace/simple.h"
+
+void _simple_trace_test_blah(void *context, const char *filename)
+{
+    TraceBufferRecord rec;
+    size_t argfilename_len = filename ? MIN(strlen(filename), MAX_TRACE_STRLEN) : 0;
+
+    if (trace_record_start(&rec, _TRACE_TEST_BLAH_EVENT.id, 8 + 4 + argfilename_len)) {
+        return; /* Trace Buffer Full, Event Dropped ! */
+    }
+    trace_record_write_u64(&rec, (uintptr_t)(uint64_t *)context);
+    trace_record_write_str(&rec, filename, argfilename_len);
+    trace_record_finish(&rec);
+}
+
+void _simple_trace_test_wibble(void *context, int value)
+{
+    TraceBufferRecord rec;
+
+    if (trace_record_start(&rec, _TRACE_TEST_WIBBLE_EVENT.id, 8 + 8)) {
+        return; /* Trace Buffer Full, Event Dropped ! */
+    }
+    trace_record_write_u64(&rec, (uintptr_t)(uint64_t *)context);
+    trace_record_write_u64(&rec, (uint64_t)value);
+    trace_record_finish(&rec);
+}
+
diff --git a/tests/tracetool/all.d b/tests/tracetool/all.d
new file mode 100644
index 00000000000..5cc06f9f4f5
--- /dev/null
+++ b/tests/tracetool/all.d
@@ -0,0 +1,10 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+provider qemu {
+
+probe test_blah(void * context,const char * filename);
+
+probe test_wibble(void * context,int value);
+
+};
diff --git a/tests/tracetool/all.log-stap b/tests/tracetool/all.log-stap
new file mode 100644
index 00000000000..092986e0b61
--- /dev/null
+++ b/tests/tracetool/all.log-stap
@@ -0,0 +1,15 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.log.test_blah = qemu.test_blah ?
+{
+    try {
+        argfilename_str = filename ? user_string_n(filename, 512) : "<null>"
+    } catch {}
+    printf("%d@%d test_blah Blah context=%p filename=%s\n", pid(), gettimeofday_ns(), context, argfilename_str)
+}
+probe qemu.log.test_wibble = qemu.test_wibble ?
+{
+    printf("%d@%d test_wibble Wibble context=%p value=%d\n", pid(), gettimeofday_ns(), context, value)
+}
+
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
new file mode 100644
index 00000000000..c8c9d288366
--- /dev/null
+++ b/tests/tracetool/all.rs
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// This file is @generated by tracetool, do not edit.
+
+#[allow(unused_imports)]
+use std::ffi::c_char;
+#[allow(unused_imports)]
+use util::bindings;
+
+#[allow(dead_code)]
+#[inline(always)]
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
+    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
+}
+
+extern "C" {
+    #[allow(dead_code)]
+    static mut trace_events_enabled_count: u32;
+}
+extern "C" {
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
+}
+
+use std::cell::UnsafeCell;
+
+extern "C" {
+    #[allow(dead_code)]
+    static qemu_test_blah_semaphore: UnsafeCell<u16>;
+    #[allow(dead_code)]
+    static qemu_test_wibble_semaphore: UnsafeCell<u16>;
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah_enabled() -> bool
+{
+    (unsafe {qemu_test_blah_semaphore.get().read_volatile()}) != 0 ||
+    trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
+{
+    ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
+        let format_string = c"Blah context=%p filename=%s";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
+        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
+            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+        }
+        extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
+        unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
+        let format_string = c"Blah context=%p filename=%s";
+        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+    }
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble_enabled() -> bool
+{
+    (unsafe {qemu_test_wibble_semaphore.get().read_volatile()}) != 0 ||
+    trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
+{
+    ::trace::probe!(qemu, test_wibble, _context, _value);
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
+        let format_string = c"Wibble context=%p value=%d";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
+        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
+            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+        }
+        extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
+        unsafe { _simple_trace_test_wibble(_context, _value); }
+        let format_string = c"Wibble context=%p value=%d";
+        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+    }
+}
+
diff --git a/tests/tracetool/all.simpletrace-stap b/tests/tracetool/all.simpletrace-stap
new file mode 100644
index 00000000000..d064e3e286a
--- /dev/null
+++ b/tests/tracetool/all.simpletrace-stap
@@ -0,0 +1,16 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.simpletrace.test_blah = qemu.test_blah ?
+{
+    try {
+        argfilename_str = filename ? user_string_n(filename, 512) : "<null>"
+    } catch {}
+    argfilename_len = strlen(argfilename_str)
+    printf("%8b%8b%8b%4b%4b%8b%4b%.*s", 1, 0, gettimeofday_ns(), 24 + 8 + 4 + argfilename_len, pid(), context, argfilename_len, argfilename_len, argfilename_str)
+}
+probe qemu.simpletrace.test_wibble = qemu.test_wibble ?
+{
+    printf("%8b%8b%8b%4b%4b%8b%8b", 1, 1, gettimeofday_ns(), 24 + 8 + 8, pid(), context, value)
+}
+
diff --git a/tests/tracetool/all.stap b/tests/tracetool/all.stap
new file mode 100644
index 00000000000..9c5d8a527ce
--- /dev/null
+++ b/tests/tracetool/all.stap
@@ -0,0 +1,14 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.test_blah = process("qemu").mark("test_blah")
+{
+  context = $arg1;
+  filename = $arg2;
+}
+probe qemu.test_wibble = process("qemu").mark("test_wibble")
+{
+  context = $arg1;
+  value = $arg2;
+}
+
diff --git a/tests/tracetool/all.ust-events-c b/tests/tracetool/all.ust-events-c
new file mode 100644
index 00000000000..db232240568
--- /dev/null
+++ b/tests/tracetool/all.ust-events-c
@@ -0,0 +1,14 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+
+#define TRACEPOINT_DEFINE
+#define TRACEPOINT_CREATE_PROBES
+
+/* If gcc version 4.7 or older is used, LTTng ust gives a warning when compiling with
+   -Wredundant-decls.
+ */
+#pragma GCC diagnostic ignored "-Wredundant-decls"
+
+#include "trace-ust-all.h"
diff --git a/tests/tracetool/all.ust-events-h b/tests/tracetool/all.ust-events-h
new file mode 100644
index 00000000000..4621a995fc1
--- /dev/null
+++ b/tests/tracetool/all.ust-events-h
@@ -0,0 +1,56 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER qemu
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./trace-ust.h"
+
+#if !defined (TRACE_TESTSUITE_GENERATED_UST_H) || \
+     defined(TRACEPOINT_HEADER_MULTI_READ)
+#define TRACE_TESTSUITE_GENERATED_UST_H
+
+#include <lttng/tracepoint.h>
+
+/*
+ * LTTng ust 2.0 does not allow you to use TP_ARGS(void) for tracepoints
+ * requiring no arguments. We define these macros introduced in more recent * versions of LTTng ust as a workaround
+ */
+#ifndef _TP_EXPROTO1
+#define _TP_EXPROTO1(a)               void
+#endif
+#ifndef _TP_EXDATA_PROTO1
+#define _TP_EXDATA_PROTO1(a)          void *__tp_data
+#endif
+#ifndef _TP_EXDATA_VAR1
+#define _TP_EXDATA_VAR1(a)            __tp_data
+#endif
+#ifndef _TP_EXVAR1
+#define _TP_EXVAR1(a)
+#endif
+
+TRACEPOINT_EVENT(
+   qemu,
+   test_blah,
+   TP_ARGS(void *, context, const char *, filename),
+   TP_FIELDS(
+       ctf_integer_hex(void *, context, context)
+       ctf_string(filename, filename)
+   )
+)
+
+TRACEPOINT_EVENT(
+   qemu,
+   test_wibble,
+   TP_ARGS(void *, context, int, value),
+   TP_FIELDS(
+       ctf_integer_hex(void *, context, context)
+       ctf_integer(int, value, value)
+   )
+)
+
+#endif /* TRACE_TESTSUITE_GENERATED_UST_H */
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
diff --git a/tests/tracetool/meson.build b/tests/tracetool/meson.build
index f4f583e6224..b024dc6e405 100644
--- a/tests/tracetool/meson.build
+++ b/tests/tracetool/meson.build
@@ -11,7 +11,8 @@ backends = [
     'log',
     'simple',
     'syslog',
-    'ust'
+    'ust',
+    'all'
 ]
 
 # The tracetool-test.py program has portability problems on Windows.
diff --git a/tests/tracetool/tracetool-test.py b/tests/tracetool/tracetool-test.py
index 74f315a4629..2f6328e68c3 100755
--- a/tests/tracetool/tracetool-test.py
+++ b/tests/tracetool/tracetool-test.py
@@ -14,16 +14,16 @@ def get_formats(backend):
         "c",
         "h",
     ]
-    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog"}:
+    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog", "all"}:
         formats += ["rs"]
-    if backend == "dtrace":
+    if backend in {"dtrace", "all"}:
         formats += [
             "d",
             "log-stap",
             "simpletrace-stap",
             "stap",
         ]
-    if backend == "ust":
+    if backend in {"ust", "all"}:
         formats += [
             "ust-events-c",
             "ust-events-h",
@@ -36,8 +36,12 @@ def test_tracetool_one(tracetool, backend, fmt, src_dir, build_dir):
     actual_file = Path(build_dir, rel_filename)
     expect_file = Path(src_dir, rel_filename)
 
+    backends = backend
+    if backends == "all":
+        backends = "dtrace,ftrace,log,simple,syslog,ust"
+
     args = [sys.executable, tracetool,
-            f"--format={fmt}", f"--backends={backend}", "--group=testsuite"]
+            f"--format={fmt}", f"--backends={backends}", "--group=testsuite"]
 
     if fmt.find("stap") != -1:
         args += ["--binary=qemu", "--probe-prefix=qemu"]
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468597.1677737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHp-00019o-26; Mon, 02 Nov 2026 19:01:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468597.1677737; Mon, 02 Nov 2026 19:01:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHo-00018y-Oj; Mon, 02 Nov 2026 19:01:40 +0000
Received: by outflank-mailman (input) for mailman id 1468597;
 Mon, 02 Nov 2026 19:01:39 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHn-0000kT-2I
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHm-00AdPD-FM
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:38 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de10-8faa-0a2a0a5109dd-0a2a4504ac8c-10
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:38 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de11-b57f-0a2a45040019-aa0a857ce263-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:38 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-692-qHh40kBpP820t_m4fj_mMA-1; Mon,
 02 Nov 2026 14:01:33 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 7FBBE180ACFD; Mon,  2 Nov 2026 19:01:31 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 8E0CD1955F43; Mon,  2 Nov 2026 19:01:30 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646097;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DlKbUaAjj04ta+A1/nUMfLg/CAVRg3igZyolJR7CeYY=;
	b=GhAIcJxS+QusmjgjbND2DOjVnFMmKHKC6MX2IOKJ1bB/21JXFC9kbLQ8KBKTWDtvE6ozZN
	g3bxfejIzJUhGyUw4Zn+q9xdpWQZXjh9IivPbYTbqVBtjS/W3FMRXcXTAD7usiFY8dQA1s
	iFrdB4Dxv6p3LFEeznUgNbnX2R++SoU=
X-MC-Unique: qHh40kBpP820t_m4fj_mMA-1
X-Mimecast-MFC-AGG-ID: qHh40kBpP820t_m4fj_mMA_1793646091
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 14/25] trace: include probe name in Rust format strings
Date: Mon,  2 Nov 2026 13:58:20 -0500
Message-ID: <20261102185831.1880189-15-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: eMYoCJL4Mwe_dz_Hb6Gg522P8Aor-fdx60dnOIkh2bA_1793646091
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793646098-532CCB50-61CE4CF7/35/111497
X-purgate-type: clean
X-purgate-size: 6988

From: Daniel P. Berrangé <berrange@redhat.com>

The C format strings all include the probe name as a prefix,
however, this was missed in the Rust generators for ftrace
and syslog.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-15-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/backend/ftrace.py | 2 +-
 scripts/tracetool/backend/syslog.py | 2 +-
 tests/tracetool/all.rs              | 8 ++++----
 tests/tracetool/ftrace.rs           | 4 ++--
 tests/tracetool/syslog.rs           | 4 ++--
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index e03698a2edf..ba2a0c83770 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -47,5 +47,5 @@ def generate_h_backend_dstate(event, group):
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
-        fmt=expand_format_string(event.fmt),
+        fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py
index 12b826593db..746efd35fb9 100644
--- a/scripts/tracetool/backend/syslog.py
+++ b/scripts/tracetool/backend/syslog.py
@@ -41,7 +41,7 @@ def generate_h(event, group):
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s";',
         '        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, %(args)s);}',
-        fmt=expand_format_string(event.fmt),
+        fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
 
 def generate_h_backend_dstate(event, group):
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index c8c9d288366..14afd86281e 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -47,7 +47,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -55,7 +55,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
         }
         extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
         unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -75,7 +75,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -83,7 +83,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
         }
         extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
         unsafe { _simple_trace_test_wibble(_context, _value); }
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index ff0bcde4b8b..39959d3fdd1 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
diff --git a/tests/tracetool/syslog.rs b/tests/tracetool/syslog.rs
index 9688dac84a5..b90ad4be7f4 100644
--- a/tests/tracetool/syslog.rs
+++ b/tests/tracetool/syslog.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468598.1677744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHq-0001RD-UJ; Mon, 02 Nov 2026 19:01:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468598.1677744; Mon, 02 Nov 2026 19:01:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHq-0001QA-H3; Mon, 02 Nov 2026 19:01:42 +0000
Received: by outflank-mailman (input) for mailman id 1468598;
 Mon, 02 Nov 2026 19:01:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHo-00012l-Ez
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHn-000wRK-Qf
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:39 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8ddf9-2eae-0a2a0a5409dd-0a2a4506be22-48
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:39 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de12-195a-0a2a45060019-aa0a817c7e9f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:39 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-589-gu_EAvXwPOuA7EdNu_4fvg-1; Mon,
 02 Nov 2026 14:01:34 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id E07231802178; Mon,  2 Nov 2026 19:01:32 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 8CD3230000E3; Mon,  2 Nov 2026 19:01:32 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646098;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HVLiXlgRnVDt9HN6YEs055+fC583nu5lD1opbfo202g=;
	b=HjWg2agXno5IwpDIqKUjEuG3FMV/ZiMVgKzB/1EwWXhc72T3s8mO6IuSXHn7eOHJ6DHQzW
	JEmFL1dNmj71Ej2XuhvX0AdQXoH1AIRWmYe6yu3Qlsx2aIjiE9XebLoBSWHQgeSziUluy2
	7j4nTB9o1h0QY94danBHKomjfQwHBRM=
X-MC-Unique: gu_EAvXwPOuA7EdNu_4fvg-1
X-Mimecast-MFC-AGG-ID: gu_EAvXwPOuA7EdNu_4fvg_1793646093
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 10/25] trace: add testing of 'nop' trace backend
Date: Mon,  2 Nov 2026 13:58:16 -0500
Message-ID: <20261102185831.1880189-11-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: pIfGok1FwWAq2pd3dUTSDLfgGZs4ftwRHz4gEar7GMA_1793646093
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793646099-F687577B-810D6D2D/35/111497
X-purgate-type: clean
X-purgate-size: 5329

From: Daniel P. Berrangé <berrange@redhat.com>

This will be used to demonstrate that tracetool outputs the bare
minimum of code when tracing is disabled. Currently, as of this
initial commit of reference output, too much code is generated.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-11-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/nop.h             | 29 ++++++++++++++++++
 tests/tracetool/nop.c             | 36 ++++++++++++++++++++++
 tests/tracetool/meson.build       |  1 +
 tests/tracetool/nop.rs            | 51 +++++++++++++++++++++++++++++++
 tests/tracetool/tracetool-test.py |  2 +-
 5 files changed, 118 insertions(+), 1 deletion(-)
 create mode 100644 tests/tracetool/nop.h
 create mode 100644 tests/tracetool/nop.c
 create mode 100644 tests/tracetool/nop.rs

diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
new file mode 100644
index 00000000000..443f5e0cf6e
--- /dev/null
+++ b/tests/tracetool/nop.h
@@ -0,0 +1,29 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef TRACE_TESTSUITE_GENERATED_TRACERS_H
+#define TRACE_TESTSUITE_GENERATED_TRACERS_H
+
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_TEST_BLAH_EVENT;
+extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define TRACE_TEST_BLAH_ENABLED 1
+#define TRACE_TEST_WIBBLE_ENABLED 1
+
+#define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
+    false)
+
+static inline void trace_test_blah(void *context, const char *filename)
+{
+}
+
+#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
+    false)
+
+static inline void trace_test_wibble(void *context, int value)
+{
+}
+#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c
new file mode 100644
index 00000000000..f83d06252ea
--- /dev/null
+++ b/tests/tracetool/nop.c
@@ -0,0 +1,36 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+#include "qemu/module.h"
+#include "trace-testsuite.h"
+
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_blah",
+    .sstate = TRACE_TEST_BLAH_ENABLED,
+    .dstate = &_TRACE_TEST_BLAH_DSTATE
+};
+TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_wibble",
+    .sstate = TRACE_TEST_WIBBLE_ENABLED,
+    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
+};
+TraceEvent *testsuite_trace_events[] = {
+    &_TRACE_TEST_BLAH_EVENT,
+    &_TRACE_TEST_WIBBLE_EVENT,
+  NULL,
+};
+
+static void trace_testsuite_register_events(void)
+{
+    trace_event_register_group(testsuite_trace_events);
+}
+trace_init(trace_testsuite_register_events)
diff --git a/tests/tracetool/meson.build b/tests/tracetool/meson.build
index 09bbaaa86bf..f4f583e6224 100644
--- a/tests/tracetool/meson.build
+++ b/tests/tracetool/meson.build
@@ -5,6 +5,7 @@ test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
 test_env.set('PYTHONIOENCODING', 'utf-8')
 
 backends = [
+    'nop',
     'dtrace',
     'ftrace',
     'log',
diff --git a/tests/tracetool/nop.rs b/tests/tracetool/nop.rs
new file mode 100644
index 00000000000..5f007cecd04
--- /dev/null
+++ b/tests/tracetool/nop.rs
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// This file is @generated by tracetool, do not edit.
+
+#[allow(unused_imports)]
+use std::ffi::c_char;
+#[allow(unused_imports)]
+use util::bindings;
+
+#[allow(dead_code)]
+#[inline(always)]
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
+    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
+}
+
+extern "C" {
+    #[allow(dead_code)]
+    static mut trace_events_enabled_count: u32;
+}
+extern "C" {
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah_enabled() -> bool
+{
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
+{
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble_enabled() -> bool
+{
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
+{
+}
+
diff --git a/tests/tracetool/tracetool-test.py b/tests/tracetool/tracetool-test.py
index 59e9ab3d6ef..74f315a4629 100755
--- a/tests/tracetool/tracetool-test.py
+++ b/tests/tracetool/tracetool-test.py
@@ -14,7 +14,7 @@ def get_formats(backend):
         "c",
         "h",
     ]
-    if backend in {"dtrace", "ftrace", "log", "simple", "syslog"}:
+    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog"}:
         formats += ["rs"]
     if backend == "dtrace":
         formats += [
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468603.1677752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHs-0001l7-Ed; Mon, 02 Nov 2026 19:01:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468603.1677752; Mon, 02 Nov 2026 19:01:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHs-0001kB-7q; Mon, 02 Nov 2026 19:01:44 +0000
Received: by outflank-mailman (input) for mailman id 1468603;
 Mon, 02 Nov 2026 19:01:42 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHq-0001LR-9Y
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHp-00AdPD-Md
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:41 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0c-8faa-0a2a0a5109dd-0a2a4503a4a8-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:41 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de14-fae8-0a2a45030019-aa0a817c8133-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:41 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-161-DUNpg03DMMWJpI_aTrXcYA-1; Mon,
 02 Nov 2026 14:01:36 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id ED08B18015CC; Mon,  2 Nov 2026 19:01:34 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id DD4FE433; Mon,  2 Nov 2026 19:01:33 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646100;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=j3nROunoF4CikVbyQLt/Mk8W5QtQdfAuIa85rpQ5scA=;
	b=htLIblZnf83p80YeM70ieHYKXG0lTkk7pbRjDY7ZWjZymreeJgs6EmivxODMiXoLIo6p3X
	8Gdx04EwpIiay5xioYT1csL+peqs8iPF4PXPpSkNhUegl4pNNx2be+UggZLPTVfT4CWoJX
	DPGgbUSot6uNpZiBIn+Zkl4IXiJf5w0=
X-MC-Unique: DUNpg03DMMWJpI_aTrXcYA-1
X-Mimecast-MFC-AGG-ID: DUNpg03DMMWJpI_aTrXcYA_1793646095
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 16/25] trace: eliminate dupe trace_event_get_state_dynamic_by_id() calls
Date: Mon,  2 Nov 2026 13:58:22 -0500
Message-ID: <20261102185831.1880189-17-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: JQi96BWUWNdkh2ZgXFkvBEoVuvlIrvTikBw1QOcu8Ic_1793646095
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793646101-6C6DE4E9-316E902D/35/111497
X-purgate-type: clean
X-purgate-size: 8670

From: Daniel P. Berrangé <berrange@redhat.com>

Each backend generates the same trace_event_get_state_dynamic_by_id()
call for the TRACE....DSTATE() macro body, so when multiple backends
are enabled, the same check is repeated:

 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     tracepoint_enabled(qemu, test_wibble) || \
     false)

Expanding the use of the 'backend.check_trace_event_get_state'
attr in the C header generator removes the duplication, in the
same way that the Rust generator already does.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-17-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                 | 22 ++++++++--------------
 scripts/tracetool/backend/__init__.py |  4 ++--
 scripts/tracetool/backend/ftrace.py   |  4 ----
 scripts/tracetool/backend/log.py      |  4 ----
 scripts/tracetool/backend/simple.py   |  5 -----
 scripts/tracetool/backend/syslog.py   |  4 ----
 scripts/tracetool/format/h.py         |  8 +++++++-
 7 files changed, 17 insertions(+), 34 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 41fa4d0e8a2..5627c1d8930 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -44,11 +44,8 @@ void _simple_trace_test_wibble(void *context, int value);
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     QEMU_TEST_BLAH_ENABLED() || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     tracepoint_enabled(qemu, test_blah) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     false)
 
 static inline void trace_test_blah(void *context, const char *filename)
@@ -58,26 +55,23 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 62 "all.h"
+#line 59 "all.h"
         if (qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 66 "all.h"
+#line 63 "all.h"
         }
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 71 "all.h"
+#line 68 "all.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     tracepoint_enabled(qemu, test_wibble) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     false)
 
 static inline void trace_test_wibble(void *context, int value)
@@ -87,16 +81,16 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 91 "all.h"
+#line 85 "all.h"
         if (qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 95 "all.h"
+#line 89 "all.h"
         }
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 100 "all.h"
+#line 94 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/scripts/tracetool/backend/__init__.py b/scripts/tracetool/backend/__init__.py
index 9109a783c72..72f549c77c4 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -133,8 +133,8 @@ def generate_begin(self, events, group):
     def generate(self, event, group, check_trace_event_get_state=None):
         self._run_function("generate_%s", event, group, check_trace_event_get_state=check_trace_event_get_state)
 
-    def generate_backend_dstate(self, event, group):
-        self._run_function("generate_%s_backend_dstate", event, group)
+    def generate_backend_dstate(self, event, group, check_trace_event_get_state=None):
+        self._run_function("generate_%s_backend_dstate", event, group, check_trace_event_get_state=check_trace_event_get_state)
 
     def generate_end(self, events, group):
         self._run_function("generate_%s_end", events, group)
diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index e304ef21999..94cffc45a9d 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -40,10 +40,6 @@ def generate_h(event, group):
         argnames=argnames)
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s\\n";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 9e3e5046f5f..577ee158584 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -41,10 +41,6 @@ def generate_h(event, group):
         argnames=argnames)
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s\\n";',
         '        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {',
diff --git a/scripts/tracetool/backend/simple.py b/scripts/tracetool/backend/simple.py
index e22683c7d2a..15f27e26bd5 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -42,11 +42,6 @@ def generate_h(event, group):
         args=", ".join(event.args.names()))
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
-
 def generate_c_begin(events, group):
     out('#include "trace/simple.h"',
         '')
diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py
index 746efd35fb9..ba269cb6a33 100644
--- a/scripts/tracetool/backend/syslog.py
+++ b/scripts/tracetool/backend/syslog.py
@@ -43,7 +43,3 @@ def generate_rs(event, group):
         '        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, %(args)s);}',
         fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
-
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 6ffb7256e31..5ad3a419f82 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -55,7 +55,13 @@ def generate(events, backend, group):
             api=e.api(e.QEMU_BACKEND_DSTATE))
 
         if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group)
+            backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
+
+            if backend.check_trace_event_get_state:
+                event_id = 'TRACE_' + e.name.upper()
+                out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
+                    event_id=event_id)
+                backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
 
         out('    false)')
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468607.1677756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHt-0001qo-3g; Mon, 02 Nov 2026 19:01:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468607.1677756; Mon, 02 Nov 2026 19:01:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHs-0001p4-NG; Mon, 02 Nov 2026 19:01:44 +0000
Received: by outflank-mailman (input) for mailman id 1468607;
 Mon, 02 Nov 2026 19:01:43 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHr-0001Wh-EJ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHq-00AdPD-Q7
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:42 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de10-8faa-0a2a0a5109dd-0a2a4504ac8c-28
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:42 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de15-b57f-0a2a45040019-aa0a857c53e9-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:42 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-342-s3xJ6PC9PZKK1SFQ37zHSg-1; Mon,
 02 Nov 2026 14:01:38 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 46DEA1955D7D; Mon,  2 Nov 2026 19:01:36 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id F012A433; Mon,  2 Nov 2026 19:01:35 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646101;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=MMzIqwZzfLbxitsjp49xs/Ty7Ev+lHRLVyhej1u9jzk=;
	b=brprPtGPJEGvkW2E5a1jEle743a7lmWwDF44RqmoPjdweXroP0wNTPXlseveGaZ9WClOTM
	rTOBJfmdM5LL23hk12dvrs1asBvymd7Y1pBsj9uEk9D84E0nFzFgabhJPdWXTSi7VZlktg
	1+h/MHBH1Jx2LozUSxsdkebZCzdNYkY=
X-MC-Unique: s3xJ6PC9PZKK1SFQ37zHSg-1
X-Mimecast-MFC-AGG-ID: s3xJ6PC9PZKK1SFQ37zHSg_1793646096
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL 17/25] audio: remove mistaken use of trace_event_get_state()
Date: Mon,  2 Nov 2026 13:58:23 -0500
Message-ID: <20261102185831.1880189-18-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: uzQAn-k69PF0DXhIiVfcA4hmaW9wf0Lc54F-Prf8WY8_1793646096
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793646102-50EDEB50-AEA6C338/35/111497
X-purgate-type: clean
X-purgate-size: 1364

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-18-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 audio/audio-mixeng-be.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/audio/audio-mixeng-be.c b/audio/audio-mixeng-be.c
index f6fd5014e0e..815d4fad2f5 100644
--- a/audio/audio-mixeng-be.c
+++ b/audio/audio-mixeng-be.c
@@ -1179,7 +1179,7 @@ void audio_run(AudioMixengBackend *s, const char *msg)
     audio_run_in(s);
     audio_run_capture(s);
 
-    if (trace_event_get_state(TRACE_AUDIO_RUN_POLL)) {
+    if (trace_event_get_state_backends(TRACE_AUDIO_RUN_POLL)) {
         /* Convert seconds to microseconds for trace event */
         int64_t elapsed_us = g_timer_elapsed(s->run_timer, NULL) * MICROSECONDS_PER_SECOND;
         trace_audio_run_poll(msg, elapsed_us);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468613.1677772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHw-0002ZF-Bf; Mon, 02 Nov 2026 19:01:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468613.1677772; Mon, 02 Nov 2026 19:01:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHw-0002Yu-4F; Mon, 02 Nov 2026 19:01:48 +0000
Received: by outflank-mailman (input) for mailman id 1468613;
 Mon, 02 Nov 2026 19:01:46 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHu-0002C9-IO
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHt-00BpBR-Ti
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:45 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de14-bab6-0a2a0a5309dd-0a2a4506b806-14
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:45 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de18-195a-0a2a45060019-aa0a857c5df1-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:45 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-404-qqnTlvRmMw6I5OQLW16cZQ-1; Mon,
 02 Nov 2026 14:01:39 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 8E12B180257A; Mon,  2 Nov 2026 19:01:37 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 283BC1955F73; Mon,  2 Nov 2026 19:01:37 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646104;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=4/XTSFHkdQ+Pw5IV0/sk+ny/n4mSrenG0IJ4ieTlAdY=;
	b=h9yRMac/5HPAMyEyt/X5BesMY5dW2tMk1x4VoExkFZ0yP7e010fkrKrPgHifkI1cnSFbF4
	5nHwU0Ph6Iu+mrlRfOXumoVxGWfZiGJqXB6uOA2b9t+z3aWN1cT46SLj35plaUK7kDqFWU
	XSRiN97XfTdbIFkCqhEXgdjLqun1nVQ=
X-MC-Unique: qqnTlvRmMw6I5OQLW16cZQ-1
X-Mimecast-MFC-AGG-ID: qqnTlvRmMw6I5OQLW16cZQ_1793646097
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL 18/25] hw/ppc: remove mistaken use of trace_event_get_state()
Date: Mon,  2 Nov 2026 13:58:24 -0500
Message-ID: <20261102185831.1880189-19-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: ju9DYM_7wWY3lIMvJLQ4scz3ENTNjTKLvmO4TxbrYdk_1793646097
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793646105-F647377B-CA8F1CA4/35/111497
X-purgate-type: clean
X-purgate-size: 2737

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Furthermore, checking qemu_loglevel_mask() is inappropriate since
there are many trace backends, of which 'log' is only one.

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-19-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/ppc/vof.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/vof.c b/hw/ppc/vof.c
index 873e967f1e4..e2ff9bf96a3 100644
--- a/hw/ppc/vof.c
+++ b/hw/ppc/vof.c
@@ -252,8 +252,7 @@ static uint32_t vof_getprop(const void *fdt, uint32_t nodeph, uint32_t pname,
              */
             ret = proplen;
             /* Do not format a value if tracepoint is silent, for performance */
-            if (trace_event_get_state(TRACE_VOF_GETPROP) &&
-                qemu_loglevel_mask(LOG_TRACE)) {
+            if (trace_event_get_state_backends(TRACE_VOF_GETPROP)) {
                 prop_format(trval, sizeof(trval), prop, ret);
             }
         }
@@ -337,8 +336,7 @@ static uint32_t vof_setprop(MachineState *ms, void *fdt, Vof *vof,
         goto trace_exit;
     }
 
-    if (trace_event_get_state(TRACE_VOF_SETPROP) &&
-        qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state_backends(TRACE_VOF_SETPROP)) {
         prop_format(trval, sizeof(trval), val, vallen);
     }
     ret = vallen;
@@ -584,8 +582,7 @@ static uint32_t vof_write(Vof *vof, uint32_t ihandle, uint32_t buf,
         }
 
         /* FIXME: there is no backend(s) yet so just call a trace */
-        if (trace_event_get_state(TRACE_VOF_WRITE) &&
-            qemu_loglevel_mask(LOG_TRACE)) {
+        if (trace_event_get_state_backends(TRACE_VOF_WRITE)) {
             tmp[cb] = '\0';
             trace_vof_write(ihandle, cb, tmp);
         }
@@ -599,9 +596,7 @@ static void vof_claimed_dump(GArray *claimed)
     int i;
     OfClaimed c;
 
-    if (trace_event_get_state(TRACE_VOF_CLAIMED) &&
-        qemu_loglevel_mask(LOG_TRACE)) {
-
+    if (trace_event_get_state_backends(TRACE_VOF_CLAIMED)) {
         for (i = 0; i < claimed->len; ++i) {
             c = g_array_index(claimed, OfClaimed, i);
             trace_vof_claimed(c.start, c.start + c.size, c.size);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468616.1677781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHz-00031T-6r; Mon, 02 Nov 2026 19:01:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468616.1677781; Mon, 02 Nov 2026 19:01:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHy-00030v-TH; Mon, 02 Nov 2026 19:01:50 +0000
Received: by outflank-mailman (input) for mailman id 1468616;
 Mon, 02 Nov 2026 19:01:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHw-0002db-TQ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHw-000wRK-AC
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:48 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1c-2eae-0a2a0a5409dd-0a2a4504cee6-0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:48 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1b-b57f-0a2a45040019-aa0a857c95ad-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:48 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-612-yX8_BfRaNQe1Cyd_Mm-UjA-1; Mon,
 02 Nov 2026 14:01:42 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 370CB1954102; Mon,  2 Nov 2026 19:01:39 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 5D0771800347; Mon,  2 Nov 2026 19:01:38 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646107;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=e7tj2P/oslojgIW5ujruyi9WhhnGXEZAXlDkuQg0Gso=;
	b=eBGIsbKnO+Qcw/GdvGNaj25WktSnCLVymLdAES7HwO+m1MiEfzmaC5rsDmeTr5BssM2vl3
	Kf8K4vaNNCXBYVhYTOkwbwD1fRxzH+bg4vcR8FDbLVt6x0FP6mbkaK+GB3xDqU67o2Mbay
	DHksLBe9n9DJOxwIuG0hbRkr0lIUFfM=
X-MC-Unique: yX8_BfRaNQe1Cyd_Mm-UjA-1
X-Mimecast-MFC-AGG-ID: yX8_BfRaNQe1Cyd_Mm-UjA_1793646100
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 19/25] monitor: remove mistaken use of trace_event_get_state()
Date: Mon,  2 Nov 2026 13:58:25 -0500
Message-ID: <20261102185831.1880189-20-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: Lk11a3J5XRdo9HQB16QTbhX21kajii_eCrUtMhXgX5Y_1793646100
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793646108-C20D5B50-24030023/35/111497
X-purgate-type: clean
X-purgate-size: 1697

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-20-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 monitor/qmp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/monitor/qmp.c b/monitor/qmp.c
index eb44012643f..8fad090fbe3 100644
--- a/monitor/qmp.c
+++ b/monitor/qmp.c
@@ -439,7 +439,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)
 
         /* Process request */
         if (req_obj->req) {
-            if (trace_event_get_state(TRACE_MONITOR_QMP_CMD_IN_BAND)) {
+            if (trace_event_get_state_backends(TRACE_MONITOR_QMP_CMD_IN_BAND)) {
                 QDict *qdict = qobject_to(QDict, req_obj->req);
                 QObject *id = qdict ? qdict_get(qdict, "id") : NULL;
                 GString *id_json;
@@ -495,7 +495,7 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)
 
     if (qdict && qmp_is_oob(qdict)) {
         /* OOB commands are executed immediately */
-        if (trace_event_get_state(TRACE_MONITOR_QMP_CMD_OUT_OF_BAND)) {
+        if (trace_event_get_state_backends(TRACE_MONITOR_QMP_CMD_OUT_OF_BAND)) {
             QObject *id = qdict_get(qdict, "id");
             GString *id_json;
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468618.1677785 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI0-00037V-0a; Mon, 02 Nov 2026 19:01:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468618.1677785; Mon, 02 Nov 2026 19:01:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxHz-00035i-JO; Mon, 02 Nov 2026 19:01:51 +0000
Received: by outflank-mailman (input) for mailman id 1468618;
 Mon, 02 Nov 2026 19:01:49 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHx-0002hT-7e
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHw-00AdPD-Jw
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:48 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0c-8faa-0a2a0a5109dd-0a2a4503a4a8-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:48 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1b-fae8-0a2a45030019-aa0a857c6055-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:48 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-646-61Hjws2NNHCoyIqTnsAHig-1; Mon,
 02 Nov 2026 14:01:42 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 65FD3195422F; Mon,  2 Nov 2026 19:01:40 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 174F81955F73; Mon,  2 Nov 2026 19:01:39 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646107;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=LGa+HMdMyZp+fDqANZnP8jW3DD1gu9BvhH368Mvy95o=;
	b=SmetYzaBVH+Es45FhL8vZaYW+xP9Gvl6aqobJXm6oNkZdmgULwKY7cdvf0cBcghPlOZNpx
	NfaGUhCSW7dZiqtXM5YEgUCfIdzSC6bB8QTNO/c/n/KRlg/IfZoyHWdoe7w9tsjDr1lUut
	5CjxlZX7rkuzajNIBmakJPE6vlV70Zc=
X-MC-Unique: 61Hjws2NNHCoyIqTnsAHig-1
X-Mimecast-MFC-AGG-ID: 61Hjws2NNHCoyIqTnsAHig_1793646101
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 15/25] trace: add missing newline in ftrace Rust format string
Date: Mon,  2 Nov 2026 13:58:21 -0500
Message-ID: <20261102185831.1880189-16-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: kRRiJvWyy3jm7ydQmUrayzYbmEn6OZI8JXzF2WjbSlM_1793646101
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793646108-74A894E9-34CEEF0E/35/111497
X-purgate-type: clean
X-purgate-size: 3936

From: Daniel P. Berrangé <berrange@redhat.com>

The ftrace_write() method expects the caller to provide the
newline.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-16-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/backend/ftrace.py | 2 +-
 tests/tracetool/all.rs              | 4 ++--
 tests/tracetool/ftrace.rs           | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index ba2a0c83770..e304ef21999 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -45,7 +45,7 @@ def generate_h_backend_dstate(event, group):
         event_id="TRACE_" + event.name.upper())
 
 def generate_rs(event, group):
-    out('        let format_string = c"%(fmt)s";',
+    out('        let format_string = c"%(fmt)s\\n";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
         fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index 14afd86281e..f48bdf4aab5 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -47,7 +47,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -75,7 +75,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index 39959d3fdd1..1ad13172b17 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468621.1677791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI0-0003DK-Pf; Mon, 02 Nov 2026 19:01:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468621.1677791; Mon, 02 Nov 2026 19:01:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI0-0003CK-9t; Mon, 02 Nov 2026 19:01:52 +0000
Received: by outflank-mailman (input) for mailman id 1468621;
 Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHy-0002wp-FH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHx-004HUh-S8
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:49 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0f-e002-0a2a0a5209dd-0a2a450c8aa4-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:49 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1c-f479-0a2a450c0019-aa0a817c950d-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:49 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-307-f8FrEhflMc6y5NwCc4s7bw-1; Mon,
 02 Nov 2026 14:01:45 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 412771954B04; Mon,  2 Nov 2026 19:01:42 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 610C01956087; Mon,  2 Nov 2026 19:01:41 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646108;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=vbjdzJandTBXbN/NbJQon1SW3S6mArhMeBbnMOT68dI=;
	b=PcFOZTOqp7m08bJua81Boz/j0iZ4dMff7/JcFXn8L5BRcL4BVYs/DsjLVsKWz9rA2NXSDV
	30zB2glMqAYrlkprlWTUJFhox2AmNBVUoIWu+DUOJdvASs/owR0Dd7PeWk81f3EGiHot1k
	nU/Z/sCsGToBI1EUW/jMM+Ob2+s8vqA=
X-MC-Unique: f8FrEhflMc6y5NwCc4s7bw-1
X-Mimecast-MFC-AGG-ID: f8FrEhflMc6y5NwCc4s7bw_1793646102
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 21/25] target/hppa: use PRIx64 in trace-events
Date: Mon,  2 Nov 2026 13:58:27 -0500
Message-ID: <20261102185831.1880189-22-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: pOgWxk295NgZz9l88chNVrU54lnWgqOU5kkFtqed6SQ_1793646102
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793646109-5270FA5B-40ECC3DD/35/111497
X-purgate-type: clean
X-purgate-size: 4007

From: Daniel P. Berrangé <berrange@redhat.com>

%lx is not portable to Windows platforms. This bug was not noticed
since the trace events are annotated with 'disable', but this will
be removed in the next commit. Addresses should also be prefixed
with "0x".

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-22-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 target/hppa/trace-events | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/target/hppa/trace-events b/target/hppa/trace-events
index 01761a4559b..9514f039f2d 100644
--- a/target/hppa/trace-events
+++ b/target/hppa/trace-events
@@ -1,19 +1,19 @@
 # See docs/devel/tracing.rst for syntax documentation.
 
 # mem_helper.c
-disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=%08lx"
-disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%lx phys=0x%lx"
-disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%lx size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%lx phys=0x%lx size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
+disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
+disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
 disable hppa_tlb_ptlb(void *env) "env=%p"
 disable hppa_tlb_ptlb_local(void *env) "env=%p"
 disable hppa_tlb_ptlbe(void *env) "env=%p"
-disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%lx phys=0x%lx"
-disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%lx"
+disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
 
 # op_helper.c
-disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%lx level=%d want=%d"
+disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468622.1677796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI1-0003Mi-HV; Mon, 02 Nov 2026 19:01:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468622.1677796; Mon, 02 Nov 2026 19:01:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI1-0003JU-0L; Mon, 02 Nov 2026 19:01:53 +0000
Received: by outflank-mailman (input) for mailman id 1468622;
 Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHy-0002wP-Du
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHx-004HQa-Qp
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:49 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de18-e002-0a2a0a5209dd-0a2a4509be76-22
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:49 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1c-be1a-0a2a45090019-aa0a817cb28b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:49 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-349-Vl0xNe75NwKKz-oKxYQPYg-1; Mon,
 02 Nov 2026 14:01:46 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C72931955BF2; Mon,  2 Nov 2026 19:01:44 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 7B61426C; Mon,  2 Nov 2026 19:01:44 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646108;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=z+pc48rjFwC1YPMnBCEt4xr6ekBLWcGs39MtawFeyiM=;
	b=fGTR06/IjAjjK1hfK7PuSlbyjMIpkvIKbhqngGfP8wmw0O56wEcOTJQpJBpmC0nQA+Lg4p
	N0Rd1nbAb9ts2Mj3VxS6gNojZVsHVK0lmtN5PDwSVvBckMgE73eZtTzHeRiY7mkG8y8jl1
	Dy/IGwoZT95H2vYDfrh8CucadAh1E5A=
X-MC-Unique: Vl0xNe75NwKKz-oKxYQPYg-1
X-Mimecast-MFC-AGG-ID: Vl0xNe75NwKKz-oKxYQPYg_1793646104
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 23/25] trace: stop tracking static disabled state
Date: Mon,  2 Nov 2026 13:58:29 -0500
Message-ID: <20261102185831.1880189-24-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: 4EfAVnCjlOepFnfnISTgCkddeJUTrirj1e8d7roqM4c_1793646104
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793646109-FD668034-05EE616F/35/111497
X-purgate-type: clean
X-purgate-size: 24322

From: Daniel P. Berrangé <berrange@redhat.com>

The TraceEvent struct contains a "bool sstate" field which track whether
a trace event was disabled statically. i.e. at build time via the
"disable" property annotation in trace-events.

The only runtime use of this field is to let "trace-event-get-state"
report that an event is "unavailable" instead of reporting an error for
an unknown trace event.

Trace events are not ABI so their names can change and the event can
come and go at any time. Thus there is little utility in reporting the
existence of a disabled event that cannot ever be used at runtime.

Removing the "bool sstate" field from TraceEvent saves 8 bytes of
space in the struct, adding up to approx 64 KB across all current
events.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-24-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 qapi/trace.json               |  5 ++--
 tests/tracetool/all.h         | 14 +++++------
 tests/tracetool/dtrace.h      |  2 --
 tests/tracetool/ftrace.h      |  6 ++---
 tests/tracetool/log.h         |  6 ++---
 tests/tracetool/nop.h         |  2 --
 tests/tracetool/simple.h      |  2 --
 tests/tracetool/syslog.h      |  6 ++---
 tests/tracetool/ust.h         |  2 --
 trace/control-internal.h      |  6 -----
 trace/control.h               | 27 +++-----------------
 trace/event-internal.h        |  2 --
 stubs/trace-control.c         |  1 -
 tests/tracetool/all.c         |  2 --
 tests/tracetool/dtrace.c      |  2 --
 tests/tracetool/ftrace.c      |  2 --
 tests/tracetool/log.c         |  2 --
 tests/tracetool/simple.c      |  2 --
 tests/tracetool/syslog.c      |  2 --
 tests/tracetool/ust.c         |  2 --
 trace/control-target.c        |  2 --
 trace/control.c               |  9 -------
 trace/qmp.c                   | 47 ++++++++++-------------------------
 scripts/tracetool/format/c.py |  2 --
 scripts/tracetool/format/h.py |  8 ------
 25 files changed, 31 insertions(+), 132 deletions(-)

diff --git a/qapi/trace.json b/qapi/trace.json
index 29c76256055..8533e378977 100644
--- a/qapi/trace.json
+++ b/qapi/trace.json
@@ -16,8 +16,6 @@
 # @TraceEventState:
 #     State of a tracing event.
 #
-# @unavailable: The event is statically disabled.
-#
 # @disabled: The event is dynamically disabled.
 #
 # @enabled: The event is dynamically enabled.
@@ -25,7 +23,7 @@
 # Since: 2.2
 ##
 { 'enum': 'TraceEventState',
-  'data': ['unavailable', 'disabled', 'enabled'] }
+  'data': ['disabled', 'enabled'] }
 
 ##
 # @TraceEventInfo:
@@ -69,6 +67,7 @@
 # @enable: Whether to enable tracing.
 #
 # @ignore-unavailable: Do not match unavailable events with @name.
+#      Deprecated: since 11.2
 #
 # Since: 2.2
 #
diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 0ae2598eb1d..01971827e4b 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
 #define SDT_USE_VARIADIC 1
 #endif
@@ -57,17 +55,17 @@ static inline void trace_test_blah(void *context, const char *filename)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 61 "all.h"
+#line 59 "all.h"
     }
     tracepoint(qemu, test_blah, context, filename);
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 67 "all.h"
+#line 65 "all.h"
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 71 "all.h"
+#line 69 "all.h"
     }
 }
 
@@ -86,17 +84,17 @@ static inline void trace_test_wibble(void *context, int value)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 90 "all.h"
+#line 88 "all.h"
     }
     tracepoint(qemu, test_wibble, context, value);
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 96 "all.h"
+#line 94 "all.h"
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 100 "all.h"
+#line 98 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/dtrace.h b/tests/tracetool/dtrace.h
index 0b5b47089e8..b9283851eb0 100644
--- a/tests/tracetool/dtrace.h
+++ b/tests/tracetool/dtrace.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
 #define SDT_USE_VARIADIC 1
 #endif
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index b34eef17d10..4eba6b4d599 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include "trace/ftrace.h"
 
 
@@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 28 "ftrace.h"
+#line 26 "ftrace.h"
     }
 }
 
@@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 41 "ftrace.h"
+#line 39 "ftrace.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index 9957a854c00..9afbe721a47 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include "qemu/log-for-trace.h"
 
 
@@ -26,7 +24,7 @@ static inline void trace_test_blah(void *context, const char *filename)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 30 "log.h"
+#line 28 "log.h"
     }
 }
 
@@ -41,7 +39,7 @@ static inline void trace_test_wibble(void *context, int value)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 45 "log.h"
+#line 43 "log.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
index 64b6b005684..00771577943 100644
--- a/tests/tracetool/nop.h
+++ b/tests/tracetool/nop.h
@@ -8,8 +8,6 @@
 
 #define _TRACE_TEST_BLAH_DSTATE 0
 #define _TRACE_TEST_WIBBLE_DSTATE 0
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     false)
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index 735cb21d911..9b066364b0a 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 void _simple_trace_test_blah(void *context, const char *filename);
 void _simple_trace_test_wibble(void *context, int value);
 
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index 4203b8b37dc..6a9304489f6 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include <syslog.h>
 
 
@@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 28 "syslog.h"
+#line 26 "syslog.h"
     }
 }
 
@@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 41 "syslog.h"
+#line 39 "syslog.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/ust.h b/tests/tracetool/ust.h
index 079b2c74491..c6c5d6d7c1c 100644
--- a/tests/tracetool/ust.h
+++ b/tests/tracetool/ust.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include <lttng/tracepoint.h>
 #include "trace-ust-testsuite.h"
 
diff --git a/trace/control-internal.h b/trace/control-internal.h
index f626b047264..9a95e6714bb 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -33,12 +33,6 @@ static inline const char * trace_event_get_name(TraceEvent *ev)
     return ev->name;
 }
 
-static inline bool trace_event_get_state_static(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->sstate;
-}
-
 /* it's on fast path, avoid consistency checks (asserts) */
 #define trace_event_get_state_dynamic_by_id(id) \
     (unlikely(trace_events_enabled_count) && _ ## id ## _DSTATE)
diff --git a/trace/control.h b/trace/control.h
index e77c07a8e68..71f254728d4 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -102,39 +102,21 @@ static const char * trace_event_get_name(TraceEvent *ev);
  * @id: Event identifier name.
  *
  * Get the tracing state of an event, both static and the QEMU dynamic state.
- *
- * If the event has the disabled property, the check will have no performance
- * impact.
  */
 #define trace_event_get_state(id)                       \
-    ((id ##_ENABLED) && trace_event_get_state_dynamic_by_id(id))
+    (trace_event_get_state_dynamic_by_id(id))
 
 /**
  * trace_event_get_state_backends:
  * @id: Event identifier name.
  *
- * Get the tracing state of an event, both static and dynamic state from all
+ * Get the tracing state of an event from all
  * compiled-in backends.
  *
- * If the event has the disabled property, the check will have no performance
- * impact.
- *
- * Returns: true if at least one backend has the event enabled and the event
- * does not have the disabled property.
+ * Returns: true if at least one backend has the event enabled
  */
 #define trace_event_get_state_backends(id)              \
-    ((id ##_ENABLED) && id ##_BACKEND_DSTATE())
-
-/**
- * trace_event_get_state_static:
- * @id: Event identifier.
- *
- * Get the static tracing state of an event.
- *
- * Use the define 'TRACE_${EVENT_NAME}_ENABLED' for compile-time checks (it will
- * be set to 1 or 0 according to the presence of the disabled property).
- */
-static bool trace_event_get_state_static(TraceEvent *ev);
+    (id ##_BACKEND_DSTATE())
 
 /**
  * trace_event_get_state_dynamic:
@@ -148,7 +130,6 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
  *
  * Set the dynamic tracing state of an event.
  *
- * Pre-condition: trace_event_get_state_static(ev) == true
  */
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
 
diff --git a/trace/event-internal.h b/trace/event-internal.h
index ad1578aa2c5..40f06691063 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -14,7 +14,6 @@
  * TraceEvent:
  * @id: Unique event identifier.
  * @name: Event name.
- * @sstate: Static tracing state.
  * @dstate: Dynamic tracing state
  *
  * Opaque generic description of a tracing event.
@@ -24,7 +23,6 @@ typedef struct TraceEvent {
     uint32_t id;
 #endif
     const char * name;
-    const bool sstate;
     uint8_t *dstate;
 } TraceEvent;
 
diff --git a/stubs/trace-control.c b/stubs/trace-control.c
index 3f196835db0..6016307ed8b 100644
--- a/stubs/trace-control.c
+++ b/stubs/trace-control.c
@@ -14,7 +14,6 @@
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     bool state_pre;
-    assert(trace_event_get_state_static(ev));
 
     /*
      * We ignore the "vcpu" property here, since there's no target code. Then
diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
index 3b8d4d32d17..670f9f06e85 100644
--- a/tests/tracetool/all.c
+++ b/tests/tracetool/all.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 3b8d4d32d17..670f9f06e85 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/trace/control-target.c b/trace/control-target.c
index 87b0f5037df..348125a5822 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -12,8 +12,6 @@
 
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
-    assert(trace_event_get_state_static(ev));
-
     bool state_pre = *ev->dstate;
     if (state_pre != state) {
         if (state) {
diff --git a/trace/control.c b/trace/control.c
index 947b220056a..d414b1a9072 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -167,15 +167,6 @@ static void do_trace_enable_events(const char *line_buf)
 
     trace_event_iter_init_pattern(&iter, line_ptr);
     while ((ev = trace_event_iter_next(&iter)) != NULL) {
-        if (!trace_event_get_state_static(ev)) {
-            if (!is_pattern) {
-                warn_report("trace event '%s' is not traceable",
-                            line_ptr);
-                return;
-            }
-            continue;
-        }
-
         /* start tracing */
         trace_event_set_state_dynamic(ev, enable);
         if (!is_pattern) {
diff --git a/trace/qmp.c b/trace/qmp.c
index 074a27b204f..331496a1471 100644
--- a/trace/qmp.c
+++ b/trace/qmp.c
@@ -11,9 +11,10 @@
 #include "qapi/error.h"
 #include "qapi/qapi-commands-trace.h"
 #include "control.h"
+#include "qemu/error-report.h"
 
 
-static bool check_events(bool ignore_unavailable, bool is_pattern,
+static bool check_events(bool is_pattern,
                          const char *name, Error **errp)
 {
     if (!is_pattern) {
@@ -24,27 +25,8 @@ static bool check_events(bool ignore_unavailable, bool is_pattern,
             error_setg(errp, "unknown event \"%s\"", name);
             return false;
         }
-
-        /* error for unavailable event */
-        if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
-            error_setg(errp, "event \"%s\" is disabled", name);
-            return false;
-        }
-
-        return true;
-    } else {
-        /* error for unavailable events */
-        TraceEventIter iter;
-        TraceEvent *ev;
-        trace_event_iter_init_pattern(&iter, name);
-        while ((ev = trace_event_iter_next(&iter)) != NULL) {
-            if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
-                error_setg(errp, "event \"%s\" is disabled", trace_event_get_name(ev));
-                return false;
-            }
-        }
-        return true;
     }
+    return true;
 }
 
 TraceEventInfoList *qmp_trace_event_get_state(const char *name,
@@ -56,7 +38,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
     bool is_pattern = trace_event_is_pattern(name);
 
     /* Check events */
-    if (!check_events(true, is_pattern, name, errp)) {
+    if (!check_events(is_pattern, name, errp)) {
         return NULL;
     }
 
@@ -68,14 +50,10 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
         value = g_new(TraceEventInfo, 1);
         value->name = g_strdup(trace_event_get_name(ev));
 
-        if (!trace_event_get_state_static(ev)) {
-            value->state = TRACE_EVENT_STATE_UNAVAILABLE;
+        if (trace_event_get_state_dynamic(ev)) {
+            value->state = TRACE_EVENT_STATE_ENABLED;
         } else {
-            if (trace_event_get_state_dynamic(ev)) {
-                value->state = TRACE_EVENT_STATE_ENABLED;
-            } else {
-                value->state = TRACE_EVENT_STATE_DISABLED;
-            }
+            value->state = TRACE_EVENT_STATE_DISABLED;
         }
         QAPI_LIST_PREPEND(events, value);
     }
@@ -91,18 +69,19 @@ void qmp_trace_event_set_state(const char *name, bool enable,
     TraceEvent *ev;
     bool is_pattern = trace_event_is_pattern(name);
 
+    if (has_ignore_unavailable && ignore_unavailable) {
+        warn_report_once("the 'ignore-unavailable' property is deprecated "
+                         "and has no effect");
+    }
+
     /* Check events */
-    if (!check_events(has_ignore_unavailable && ignore_unavailable,
-                      is_pattern, name, errp)) {
+    if (!check_events(is_pattern, name, errp)) {
         return;
     }
 
     /* Apply changes (all errors checked above) */
     trace_event_iter_init_pattern(&iter, name);
     while ((ev = trace_event_iter_next(&iter)) != NULL) {
-        if (!trace_event_get_state_static(ev)) {
-            continue;
-        }
         trace_event_set_state_dynamic(ev, enable);
     }
 }
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 5f6669c917c..9f06894623e 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -39,12 +39,10 @@ def generate(events, backend, group):
                 '    .id = 0,',
                 '#endif',
                 '    .name = \"%(name)s\",',
-                '    .sstate = %(sstate)s,',
                 '    .dstate = &%(dstate)s',
                 '};',
                 event = e.api(e.QEMU_EVENT),
                 name = e.name,
-                sstate = "TRACE_%s_ENABLED" % e.name.upper(),
                 dstate = e.api(e.QEMU_DSTATE))
 
         out('TraceEvent *%(group)s_trace_events[] = {',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 5ad3a419f82..544bbc0ba93 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -38,14 +38,6 @@ def generate(events, backend, group):
         for e in events:
             out('#define %s 0' % e.api(e.QEMU_DSTATE))
 
-    # static state
-    for e in events:
-        if 'disable' in e.properties:
-            enabled = 0
-        else:
-            enabled = 1
-        out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled))
-
     backend.generate_begin(events, group)
 
     for e in events:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468623.1677802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI2-0003U5-HH; Mon, 02 Nov 2026 19:01:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468623.1677802; Mon, 02 Nov 2026 19:01:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI1-0003R4-IJ; Mon, 02 Nov 2026 19:01:53 +0000
Received: by outflank-mailman (input) for mailman id 1468623;
 Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxHy-0002xk-LQ
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxHy-00BpBR-2D
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:50 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de04-bab6-0a2a0a5309dd-0a2a4507a9a8-46
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:50 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1c-b4ea-0a2a45070019-aa0a817c60c5-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:49 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-407-3BTEOu_1OvuJtXdIogW4JA-1; Mon,
 02 Nov 2026 14:01:45 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 86ADB1955EAE; Mon,  2 Nov 2026 19:01:43 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 380E81955F73; Mon,  2 Nov 2026 19:01:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646108;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=bzIJc3V05DowmcLi7i1y5B9HyXtVMAI3zmPBHgeliGU=;
	b=MXaQ68344H6uaqwPbfDibYI6uN02o13ySmejZEhKdO9jq52+kYf5FBEoxPBzSPMdCVKmSi
	oxCUOLN67TPAzVeQD0upYEraYCfR8YnDqZ0BIZyc6tA0/7HzKGqN/YNSt/ELMeGVLbf+wb
	Q9+rwBayr16PhNcItksquA6GyhY8KEg=
X-MC-Unique: 3BTEOu_1OvuJtXdIogW4JA-1
X-Mimecast-MFC-AGG-ID: 3BTEOu_1OvuJtXdIogW4JA_1793646103
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 22/25] trace: remove "disable" property from trace files
Date: Mon,  2 Nov 2026 13:58:28 -0500
Message-ID: <20261102185831.1880189-23-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: fjCMY9ltxs5OlxDNd9CD4S6f0FgqfH4ABkLbgJ9gD6Q_1793646103
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793646110-A4AC8AE4-44547FC5/35/111497
X-purgate-type: clean
X-purgate-size: 4924

From: Daniel P. Berrangé <berrange@redhat.com>

The scenarios are not significant enough to justify its use

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-23-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/display/trace-events  |  2 +-
 target/hppa/trace-events | 28 ++++++++++++++--------------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/hw/display/trace-events b/hw/display/trace-events
index c5e7e42af23..223a085922b 100644
--- a/hw/display/trace-events
+++ b/hw/display/trace-events
@@ -60,7 +60,7 @@ virtio_gpu_dec_inflight_fences(uint32_t inflight) "in-flight- %u"
 virtio_gpu_cmd_suspended(uint32_t cmd) "cmd 0x%x"
 
 # qxl.c
-disable qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t val) "%d %s addr=%u val=%u"
+qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t val) "%d %s addr=%u val=%u"
 qxl_create_guest_primary(int qid, uint32_t width, uint32_t height, uint64_t mem, uint32_t format, uint32_t position) "%d %ux%u mem=0x%" PRIx64 " %u,%u"
 qxl_create_guest_primary_rest(int qid, int32_t stride, uint32_t type, uint32_t flags) "%d %d,%d,%d"
 qxl_destroy_primary(int qid) "%d"
diff --git a/target/hppa/trace-events b/target/hppa/trace-events
index 9514f039f2d..9fd37b1e2cb 100644
--- a/target/hppa/trace-events
+++ b/target/hppa/trace-events
@@ -1,19 +1,19 @@
 # See docs/devel/tracing.rst for syntax documentation.
 
 # mem_helper.c
-disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
-disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
-disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
-disable hppa_tlb_ptlb(void *env) "env=%p"
-disable hppa_tlb_ptlb_local(void *env) "env=%p"
-disable hppa_tlb_ptlbe(void *env) "env=%p"
-disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
-disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
+hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
+hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
+hppa_tlb_ptlb(void *env) "env=%p"
+hppa_tlb_ptlb_local(void *env) "env=%p"
+hppa_tlb_ptlbe(void *env) "env=%p"
+hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
 
 # op_helper.c
-disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
+hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468628.1677814 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI4-000408-VL; Mon, 02 Nov 2026 19:01:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468628.1677814; Mon, 02 Nov 2026 19:01:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI4-0003z2-3U; Mon, 02 Nov 2026 19:01:56 +0000
Received: by outflank-mailman (input) for mailman id 1468628;
 Mon, 02 Nov 2026 19:01:53 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxI1-0003Hq-1j
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxI0-00BpBR-EG
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:52 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0f-bab6-0a2a0a5309dd-0a2a450a8908-42
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:52 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de1f-f2d2-0a2a450a0019-aa0a817c8b9b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:52 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-427-pRTpHzqOP7mjowoEFBt9TQ-1; Mon,
 02 Nov 2026 14:01:47 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 00BBA1955F12; Mon,  2 Nov 2026 19:01:46 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id A605B1955F43; Mon,  2 Nov 2026 19:01:45 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646110;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iBUiZ9J/MXAwZUcV5uBewFxgpdyM35rzQHUpr8XDSZ8=;
	b=YMsTTqpFauXG1dLJOswdD4Fpv7i+L6tyZxu32DQFJXuDCVY4y4kvlpIVjXDA9ScoL/M3nS
	NvQvbBooi+/aWRzYUWVq8ryS0ybWB7IUHYJcmY68LrvY7YVK7Ii9DM157Gm0ZIEvsliY1u
	To7IukhAxy/2fWqCXXf5MzmGYmICsac=
X-MC-Unique: pRTpHzqOP7mjowoEFBt9TQ-1
X-Mimecast-MFC-AGG-ID: pRTpHzqOP7mjowoEFBt9TQ_1793646106
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 24/25] trace: remove parsing of "disable" event property
Date: Mon,  2 Nov 2026 13:58:30 -0500
Message-ID: <20261102185831.1880189-25-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: UutY37GcfoP9UZVMX1aAER4SdgCMLQyWW9dbZSM2yGE_1793646106
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793646112-4A9D9CFC-7F30BC8E/35/111497
X-purgate-type: clean
X-purgate-size: 15713

From: Daniel P. Berrangé <berrange@redhat.com>

Finish the removal of the "disable" event property by removing code
that parses properties and the backend code generators.

This "fixes" a bug in the UST backends which looked for a property
called "disabled" instead of "disable".

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-25-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 docs/devel/tracing.rst                       | 27 +++---------------
 scripts/tracetool/__init__.py                | 27 ++++--------------
 scripts/tracetool/backend/dtrace.py          |  2 --
 scripts/tracetool/format/c.py                |  9 ++----
 scripts/tracetool/format/d.py                |  3 --
 scripts/tracetool/format/h.py                | 30 +++++++++-----------
 scripts/tracetool/format/log_stap.py         |  3 --
 scripts/tracetool/format/rs.py               | 26 ++++++++---------
 scripts/tracetool/format/simpletrace_stap.py |  3 --
 scripts/tracetool/format/stap.py             |  3 --
 scripts/tracetool/format/ust_events_c.py     |  3 --
 scripts/tracetool/format/ust_events_h.py     |  3 --
 12 files changed, 39 insertions(+), 100 deletions(-)

diff --git a/docs/devel/tracing.rst b/docs/devel/tracing.rst
index f4557ee20e4..4bc344f0331 100644
--- a/docs/devel/tracing.rst
+++ b/docs/devel/tracing.rst
@@ -230,9 +230,6 @@ The "nop" backend generates empty trace event functions so that the compiler
 can optimize out trace events completely.  This imposes no performance
 penalty.
 
-Note that regardless of the selected trace backend, events with the "disable"
-property will be generated with the "nop" backend.
-
 Log
 ---
 
@@ -366,30 +363,14 @@ To facilitate simple usage of systemtap where there merely needs to be printf
 logging of certain probes, a helper script "qemu-trace-stap" is provided.
 Consult its manual page for guidance on its usage.
 
-Trace event properties
+Trace event conditions
 ======================
 
-Each event in the "trace-events-all" file can be prefixed with a space-separated
-list of zero or more of the following event properties.
-
-"disable"
----------
-
-If a specific trace event is going to be invoked a huge number of times, this
-might have a noticeable performance impact even when the event is
-programmatically disabled.
-
-In this case you should declare such event with the "disable" property. This
-will effectively disable the event at compile time (by using the "nop" backend),
-thus having no performance impact at all on regular builds (i.e., unless you
-edit the "trace-events-all" file).
-
-In addition, there might be cases where relatively complex computations must be
+There might be cases where relatively complex computations must be
 performed to generate values that are only used as arguments for a trace
 function. In these cases you can use 'trace_event_get_state_backends()' to
-guard such computations, so they are skipped if the event has been either
-compile-time disabled or run-time disabled. If the event is compile-time
-disabled, this check will have no performance impact.
+guard such computations, so they are skipped if the event is not currently
+enabled:
 
 ::
 
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 6ed7cdd6ce4..bdbb06b5205 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -362,8 +362,6 @@ class Event(object):
         The event name.
     fmt : str
         The event format string.
-    properties : set(str)
-        Properties of the event.
     args : Arguments
         The event arguments.
     lineno : int
@@ -373,23 +371,18 @@ class Event(object):
 
     """
 
-    _CRE = re.compile(r"((?P<props>[\w\s]+)\s+)?"
-                      r"(?P<name>\w+)"
+    _CRE = re.compile(r"(?P<name>\w+)"
                       r"\((?P<args>[^)]*)\)"
                       r"\s*"
                       r"(?P<fmt>\".+)?"
                       r"\s*")
 
-    _VALID_PROPS = set(["disable"])
-
-    def __init__(self, name, props, fmt, args, lineno, filename):
+    def __init__(self, name, fmt, args, lineno, filename):
         """
         Parameters
         ----------
         name : string
             Event name.
-        props : list of str
-            Property names.
         fmt : str
             Event printing format string.
         args : Arguments
@@ -401,7 +394,6 @@ def __init__(self, name, props, fmt, args, lineno, filename):
 
         """
         self.name = name
-        self.properties = props
         self.fmt = fmt
         self.args = args
         self.lineno = int(lineno)
@@ -411,11 +403,6 @@ def __init__(self, name, props, fmt, args, lineno, filename):
             raise ValueError("Event '%s' has more than maximum permitted "
                              "argument count" % name)
 
-        unknown_props = set(self.properties) - self._VALID_PROPS
-        if len(unknown_props) > 0:
-            raise ValueError("Unknown properties: %s"
-                             % ", ".join(unknown_props))
-
 
     @staticmethod
     def build(line_str, lineno, filename):
@@ -435,7 +422,6 @@ def build(line_str, lineno, filename):
         groups = m.groupdict('')
 
         name = groups["name"]
-        props = groups["props"].split()
         fmt = groups["fmt"]
         if fmt.find("%m") != -1:
             raise ValueError("Event format '%m' is forbidden, pass the error "
@@ -448,14 +434,13 @@ def build(line_str, lineno, filename):
 
         args = Arguments.build(groups["args"])
 
-        return Event(name, props, fmt, args, lineno, posix_relpath(filename))
+        return Event(name, fmt, args, lineno, posix_relpath(filename))
 
     def __repr__(self):
         """Evaluable string representation for this object."""
-        return "Event('%s %s(%s) %s')" % (" ".join(self.properties),
-                                          self.name,
-                                          self.args,
-                                          self.fmt)
+        return "Event('%s(%s) %s')" % (self.name,
+                                       self.args,
+                                       self.fmt)
     # Star matching on PRI is dangerous as one might have multiple
     # arguments with that format, hence the non-greedy version of it.
     _FMT = re.compile(r"(%[\d\.]*\w+|%.*?PRI\S+)")
diff --git a/scripts/tracetool/backend/dtrace.py b/scripts/tracetool/backend/dtrace.py
index f0b58cc1585..6bce25c8d2d 100644
--- a/scripts/tracetool/backend/dtrace.py
+++ b/scripts/tracetool/backend/dtrace.py
@@ -79,8 +79,6 @@ def generate_rs_begin(events, group):
     # These are the Rust declarations of the .probes section semaphores
     # generated by dtrace(1) in its .o file output.
     for e in events:
-        if 'disable' in e.properties:
-            continue
         out('    #[allow(dead_code)]',
             f'    static qemu_{e.name}_semaphore: UnsafeCell<u16>;')
     out('}',
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 9f06894623e..3754c7e06fd 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    active_events = [e for e in events
-                     if "disable" not in e.properties]
-
     header = "trace-" + group + ".h"
 
     out('/* This file is autogenerated by tracetool, do not edit. */',
@@ -62,7 +59,7 @@ def generate(events, backend, group):
             'trace_init(trace_%(group)s_register_events)',
             group = group.lower())
 
-        backend.generate_begin(active_events, group)
-        for event in active_events:
+        backend.generate_begin(events, group)
+        for event in events:
             backend.generate(event, group)
-        backend.generate_end(active_events, group)
+        backend.generate_end(events, group)
diff --git a/scripts/tracetool/format/d.py b/scripts/tracetool/format/d.py
index e9e33dfe30a..df7780cb0af 100644
--- a/scripts/tracetool/format/d.py
+++ b/scripts/tracetool/format/d.py
@@ -30,9 +30,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disable" not in e.properties]
-
     # SystemTap's dtrace(1) warns about empty "provider qemu {}" but is happy
     # with an empty file.  Avoid the warning.
     # But dtrace on macOS can't deal with empty files.
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 544bbc0ba93..f719fe09397 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -46,14 +46,13 @@ def generate(events, backend, group):
             '#define %(api)s() ( \\',
             api=e.api(e.QEMU_BACKEND_DSTATE))
 
-        if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
+        backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
 
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-                    event_id=event_id)
-                backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
+                event_id=event_id)
+            backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
 
         out('    false)')
 
@@ -63,16 +62,15 @@ def generate(events, backend, group):
             api=e.api(),
             args=e.args)
 
-        if "disable" not in e.properties:
-            backend.generate(e, group, check_trace_event_get_state=False)
+        backend.generate(e, group, check_trace_event_get_state=False)
 
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                cond = "trace_event_get_state(%s)" % event_id
-                out('    if (%(cond)s) {',
-                        cond=cond)
-                backend.generate(e, group, check_trace_event_get_state=True)
-                out('    }')
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            cond = "trace_event_get_state(%s)" % event_id
+            out('    if (%(cond)s) {',
+                cond=cond)
+            backend.generate(e, group, check_trace_event_get_state=True)
+            out('    }')
         out('}')
 
     backend.generate_end(events, group)
diff --git a/scripts/tracetool/format/log_stap.py b/scripts/tracetool/format/log_stap.py
index 259303a189d..3fa6c2dd3f2 100644
--- a/scripts/tracetool/format/log_stap.py
+++ b/scripts/tracetool/format/log_stap.py
@@ -90,9 +90,6 @@ def generate(events, backend, group):
         '')
 
     for event_id, e in enumerate(events):
-        if 'disable' in e.properties:
-            continue
-
         out('probe %(probeprefix)s.log.%(name)s = %(probeprefix)s.%(name)s ?',
             '{',
             probeprefix=probeprefix(),
diff --git a/scripts/tracetool/format/rs.py b/scripts/tracetool/format/rs.py
index 1fddcee1ad2..97d89a981da 100644
--- a/scripts/tracetool/format/rs.py
+++ b/scripts/tracetool/format/rs.py
@@ -52,11 +52,10 @@ def generate(events, backend, group):
             '{',
             api=e.api(e.QEMU_RUST_DSTATE))
 
-        if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group)
-            if backend.check_trace_event_get_state:
-                out('    trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) ||',
-                    event_id = 'TRACE_' + e.name.upper())
+        backend.generate_backend_dstate(e, group)
+        if backend.check_trace_event_get_state:
+            out('    trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) ||',
+                event_id = 'TRACE_' + e.name.upper())
 
         out('    false',
             '}',
@@ -68,15 +67,14 @@ def generate(events, backend, group):
             api=e.api(e.QEMU_TRACE),
             args=e.args.rust_decl())
 
-        if "disable" not in e.properties:
-            backend.generate(e, group, check_trace_event_get_state=False)
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
-                    event_id = event_id,
-                    api=e.api())
-                backend.generate(e, group, check_trace_event_get_state=True)
-                out('    }')
+        backend.generate(e, group, check_trace_event_get_state=False)
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
+                event_id = event_id,
+                api=e.api())
+            backend.generate(e, group, check_trace_event_get_state=True)
+            out('    }')
         out('}',
             '')
 
diff --git a/scripts/tracetool/format/simpletrace_stap.py b/scripts/tracetool/format/simpletrace_stap.py
index c7bde97a855..393d85319c7 100644
--- a/scripts/tracetool/format/simpletrace_stap.py
+++ b/scripts/tracetool/format/simpletrace_stap.py
@@ -24,9 +24,6 @@ def generate(events, backend, group):
         '')
 
     for event_id, e in enumerate(events):
-        if 'disable' in e.properties:
-            continue
-
         out('probe %(probeprefix)s.simpletrace.%(name)s = %(probeprefix)s.%(name)s ?',
             '{',
             probeprefix=probeprefix(),
diff --git a/scripts/tracetool/format/stap.py b/scripts/tracetool/format/stap.py
index 285c9203ba7..e3d16b72d34 100644
--- a/scripts/tracetool/format/stap.py
+++ b/scripts/tracetool/format/stap.py
@@ -34,9 +34,6 @@ def stap_escape(identifier):
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disable" not in e.properties]
-
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '/* SPDX-License-Identifier: GPL-2.0-or-later */',
         '')
diff --git a/scripts/tracetool/format/ust_events_c.py b/scripts/tracetool/format/ust_events_c.py
index 074226bfd37..93f88a03e90 100644
--- a/scripts/tracetool/format/ust_events_c.py
+++ b/scripts/tracetool/format/ust_events_c.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disabled" not in e.properties]
-
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '/* SPDX-License-Identifier: GPL-2.0-or-later */',
         '',
diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py
index 76c883bc5c0..441e6a41933 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disabled" not in e.properties]
-
     if group == "all":
         include = "trace-ust-all.h"
     else:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:01:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:01:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468631.1677818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI6-0004GR-DO; Mon, 02 Nov 2026 19:01:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468631.1677818; Mon, 02 Nov 2026 19:01:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI5-0004Ap-Db; Mon, 02 Nov 2026 19:01:57 +0000
Received: by outflank-mailman (input) for mailman id 1468631;
 Mon, 02 Nov 2026 19:01:54 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxI2-0003WS-5E
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxI1-00BpBR-GH
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:53 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de0f-bab6-0a2a0a5309dd-0a2a450a8908-44
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:53 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de20-f2d2-0a2a450a0019-aa0a857cc37b-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:53 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-504-WK9WvSuyNsG6s_k-mVxW5Q-1; Mon,
 02 Nov 2026 14:01:49 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 67E5418011D5; Mon,  2 Nov 2026 19:01:47 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 13ABC1800444; Mon,  2 Nov 2026 19:01:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646112;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ZUqnAIT+kn2gVCbGPwdufAlH8wXrH5c0eOb7IIBEgIE=;
	b=aCd550GX4ofDI7gMSPRCEw97dRFVPAE+npQzcUpjRqkd0BwTf2WQg7VKhgOvHyN+zlLeB0
	RKj4QEP70NVwh/g/mxvi5I6KHwZ2WWn+u36soPF8eW8lgdVpRxJAbU3hF1eP7MUMzv4G2B
	XG22YuDOntG+qsaSlw8E8i/kH8XhCsg=
X-MC-Unique: WK9WvSuyNsG6s_k-mVxW5Q-1
X-Mimecast-MFC-AGG-ID: WK9WvSuyNsG6s_k-mVxW5Q_1793646107
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 20/25] trace: include qemu_loglevel_mask(LOG_TRACE) in guard
Date: Mon,  2 Nov 2026 13:58:26 -0500
Message-ID: <20261102185831.1880189-21-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: rFe6GmOXNc2XdsQbW0oiNAiWQDysvLeV--gIsdT3itI_1793646107
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793646113-538D5CFC-3DBDB259/35/111497
X-purgate-type: clean
X-purgate-size: 12636

From: Daniel P. Berrangé <berrange@redhat.com>

If emitting a trace event requires computation for the parameters
passed to the probe, the callers should guard that computation
with trace_event_by_state_backends(), which is a macro expanding
to a check of the "TRACE_...._DSTATE()" expression. For the
log backend this should include a check for LOG_TRACE being
present in the configured log level.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-21-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h            | 34 +++++++++++++++++++-------------
 tests/tracetool/log.h            | 20 +++++++++----------
 scripts/tracetool/backend/log.py | 24 +++++++++++++++++-----
 tests/tracetool/all.rs           | 16 +++++++++++----
 tests/tracetool/log.rs           |  6 ++++--
 5 files changed, 65 insertions(+), 35 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 5627c1d8930..0ae2598eb1d 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -44,6 +44,8 @@ void _simple_trace_test_wibble(void *context, int value);
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     QEMU_TEST_BLAH_ENABLED() || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     tracepoint_enabled(qemu, test_blah) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     false)
@@ -51,25 +53,28 @@ void _simple_trace_test_wibble(void *context, int value);
 static inline void trace_test_blah(void *context, const char *filename)
 {
     QEMU_TEST_BLAH(context, filename);
+    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
+#line 4 "trace-events"
+            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
+#line 61 "all.h"
+    }
     tracepoint(qemu, test_blah, context, filename);
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 59 "all.h"
-        if (qemu_loglevel_mask(LOG_TRACE)) {
-#line 4 "trace-events"
-            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 63 "all.h"
-        }
+#line 67 "all.h"
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 68 "all.h"
+#line 71 "all.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     tracepoint_enabled(qemu, test_wibble) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     false)
@@ -77,20 +82,21 @@ static inline void trace_test_blah(void *context, const char *filename)
 static inline void trace_test_wibble(void *context, int value)
 {
     QEMU_TEST_WIBBLE(context, value);
+    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
+#line 5 "trace-events"
+            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
+#line 90 "all.h"
+    }
     tracepoint(qemu, test_wibble, context, value);
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 85 "all.h"
-        if (qemu_loglevel_mask(LOG_TRACE)) {
-#line 5 "trace-events"
-            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 89 "all.h"
-        }
+#line 96 "all.h"
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 94 "all.h"
+#line 100 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index ff510d54908..9957a854c00 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -16,32 +16,32 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     false)
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
-        if (qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 29 "log.h"
-        }
+#line 30 "log.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     false)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
-        if (qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 44 "log.h"
-        }
+#line 45 "log.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 577ee158584..4a622dd4dcb 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -16,7 +16,6 @@
 
 
 PUBLIC = True
-CHECK_TRACE_EVENT_GET_STATE = True
 
 
 def generate_h_begin(events, group):
@@ -29,11 +28,13 @@ def generate_h(event, group):
     if len(event.args) > 0:
         argnames = ", " + argnames
 
-    out('        if (qemu_loglevel_mask(LOG_TRACE)) {',
+    out('    if (trace_event_get_state(%(event_id)s) &&',
+        '        qemu_loglevel_mask(LOG_TRACE)) {',
         '#line %(event_lineno)d "%(event_filename)s"',
         '            qemu_log("%(name)s " %(fmt)s "\\n"%(argnames)s);',
         '#line %(out_next_lineno)d "%(out_filename)s"',
-        '        }',
+        '    }',
+        event_id="TRACE_" + event.name.upper(),
         event_lineno=event.lineno,
         event_filename=event.filename,
         name=event.name,
@@ -41,10 +42,23 @@ def generate_h(event, group):
         argnames=argnames)
 
 
+def generate_h_backend_dstate(event, group):
+    out('    (trace_event_get_state_dynamic_by_id(%(event_id)s) && \\',
+        '     qemu_loglevel_mask(LOG_TRACE)) || \\',
+        event_id="TRACE_" + event.name.upper())
+
 def generate_rs(event, group):
-    out('        let format_string = c"%(fmt)s\\n";',
+    out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
+        '        let format_string = c"%(fmt)s\\n";',
         '        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {',
         '            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, %(args)s);}',
         '        }',
+        '    }',
         fmt=expand_format_string(event.fmt, event.name + " "),
-        args=event.args.rust_call_varargs())
+        args=event.args.rust_call_varargs(),
+        event_id="TRACE_" + event.name.upper())
+
+def generate_rs_backend_dstate(event, group):
+    out('    unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&',
+        '             trace_event_state_is_enabled(_%(event_id)s_DSTATE) } ||',
+        event_id="TRACE_" + event.name.upper())
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index f48bdf4aab5..448ebce8281 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -37,6 +37,8 @@ fn trace_event_state_is_enabled(dstate: u8) -> bool {
 pub fn trace_test_blah_enabled() -> bool
 {
     (unsafe {qemu_test_blah_semaphore.get().read_volatile()}) != 0 ||
+    unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
+             trace_event_state_is_enabled(_TRACE_TEST_BLAH_DSTATE) } ||
     trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
     false
 }
@@ -47,12 +49,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s\n";
-        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
             unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         }
+    }
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
         unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
         let format_string = c"test_blah Blah context=%p filename=%s";
@@ -65,6 +69,8 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 pub fn trace_test_wibble_enabled() -> bool
 {
     (unsafe {qemu_test_wibble_semaphore.get().read_volatile()}) != 0 ||
+    unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
+             trace_event_state_is_enabled(_TRACE_TEST_WIBBLE_DSTATE) } ||
     trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
     false
 }
@@ -75,12 +81,14 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d\n";
-        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
             unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         }
+    }
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
         unsafe { _simple_trace_test_wibble(_context, _value); }
         let format_string = c"test_wibble Wibble context=%p value=%d";
diff --git a/tests/tracetool/log.rs b/tests/tracetool/log.rs
index 0f052bb2c9c..1adb38597e3 100644
--- a/tests/tracetool/log.rs
+++ b/tests/tracetool/log.rs
@@ -27,7 +27,8 @@ fn trace_event_state_is_enabled(dstate: u8) -> bool {
 #[allow(dead_code)]
 pub fn trace_test_blah_enabled() -> bool
 {
-    trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
+    unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
+             trace_event_state_is_enabled(_TRACE_TEST_BLAH_DSTATE) } ||
     false
 }
 
@@ -47,7 +48,8 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 #[allow(dead_code)]
 pub fn trace_test_wibble_enabled() -> bool
 {
-    trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
+    unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
+             trace_event_state_is_enabled(_TRACE_TEST_WIBBLE_DSTATE) } ||
     false
 }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:02:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:02:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468634.1677828 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI8-0004hd-Jr; Mon, 02 Nov 2026 19:02:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468634.1677828; Mon, 02 Nov 2026 19:02:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxI7-0004ed-Ec; Mon, 02 Nov 2026 19:01:59 +0000
Received: by outflank-mailman (input) for mailman id 1468634;
 Mon, 02 Nov 2026 19:01:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxI3-0003sm-RX
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:01:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxI3-000wUb-8B
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:01:55 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de22-2eae-0a2a0a5409dd-0a2a450a9dd8-2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:55 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de21-f2d2-0a2a450a0019-aa0a817c8423-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:01:54 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-587-QpPQZrGqOGWkL1Q-bCpvkA-1; Mon,
 02 Nov 2026 14:01:50 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id B23151954B2A; Mon,  2 Nov 2026 19:01:48 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 5F04D1956088; Mon,  2 Nov 2026 19:01:48 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646113;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=bJ+MsD8/YM7jmhRRHSgSa9gB390FKakWl0PZSBzNXqg=;
	b=g2w3CayHyHTe1f0RaBWckdZvkuBzgAocwKDDg02JOsSilocYuuwGBwWIw4UQdU3PINBaox
	ylUA6ATjUW5aCg4uil1wsEF1vqXeJ6EAiuaaJG1XyTTxN2IhdULW8+LCW+QnLMb9X1LwPM
	QOcvuDsdvxBm3JytEetEDpUOqCcLWWQ=
X-MC-Unique: QpPQZrGqOGWkL1Q-bCpvkA-1
X-Mimecast-MFC-AGG-ID: QpPQZrGqOGWkL1Q-bCpvkA_1793646108
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 25/25] trace: remove 'trace_event_get_state' wrapper
Date: Mon,  2 Nov 2026 13:58:31 -0500
Message-ID: <20261102185831.1880189-26-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: 59S8iY7TzlCjAwogXUdOLqWv59a0NiBwMtXaUQLzntQ_1793646108
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793646115-591C5CFC-43EE6842/35/111497
X-purgate-type: clean
X-purgate-size: 9567

From: Daniel P. Berrangé <berrange@redhat.com>

The 'trace_event_get_state' macro is a wrapper around the
'trace_event_get_state_dynamic_by_id' macro, which is a direct
check of the _TRACE_...._DSTATE global variable.

The only code that should be using this is the generated trace
probes, but the name looks rather appealing causing it to be
mistakenly used in other places, instead of the recommended
'trace_event_get_state_dynamic_backends'.

Removing the 'trace_event_get_state' macro reduces the potential
for confusion.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-26-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                 | 8 ++++----
 tests/tracetool/ftrace.h              | 4 ++--
 tests/tracetool/log.h                 | 4 ++--
 tests/tracetool/simple.h              | 4 ++--
 tests/tracetool/syslog.h              | 4 ++--
 trace/control.h                       | 9 ---------
 scripts/tracetool/backend/__init__.py | 3 ++-
 scripts/tracetool/backend/log.py      | 2 +-
 scripts/tracetool/format/h.py         | 2 +-
 9 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 01971827e4b..d4c91cdd1a4 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -51,14 +51,14 @@ void _simple_trace_test_wibble(void *context, int value);
 static inline void trace_test_blah(void *context, const char *filename)
 {
     QEMU_TEST_BLAH(context, filename);
-    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
 #line 59 "all.h"
     }
     tracepoint(qemu, test_blah, context, filename);
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
 #line 65 "all.h"
@@ -80,14 +80,14 @@ static inline void trace_test_blah(void *context, const char *filename)
 static inline void trace_test_wibble(void *context, int value)
 {
     QEMU_TEST_WIBBLE(context, value);
-    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
 #line 88 "all.h"
     }
     tracepoint(qemu, test_wibble, context, value);
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
 #line 94 "all.h"
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index 4eba6b4d599..b55ee08bbfe 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -19,7 +19,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
 #line 26 "ftrace.h"
@@ -32,7 +32,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
 #line 39 "ftrace.h"
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index 9afbe721a47..02bb1309e20 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -20,7 +20,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
@@ -35,7 +35,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index 9b066364b0a..0b9e7cba35c 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -20,7 +20,7 @@ void _simple_trace_test_wibble(void *context, int value);
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
         _simple_trace_test_blah(context, filename);
     }
 }
@@ -31,7 +31,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
         _simple_trace_test_wibble(context, value);
     }
 }
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index 6a9304489f6..173b35dcf69 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -19,7 +19,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
 #line 26 "syslog.h"
@@ -32,7 +32,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
 #line 39 "syslog.h"
diff --git a/trace/control.h b/trace/control.h
index 71f254728d4..dfb52b23ac4 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -97,15 +97,6 @@ static uint32_t trace_event_get_id(TraceEvent *ev);
  */
 static const char * trace_event_get_name(TraceEvent *ev);
 
-/**
- * trace_event_get_state:
- * @id: Event identifier name.
- *
- * Get the tracing state of an event, both static and the QEMU dynamic state.
- */
-#define trace_event_get_state(id)                       \
-    (trace_event_get_state_dynamic_by_id(id))
-
 /**
  * trace_event_get_state_backends:
  * @id: Event identifier name.
diff --git a/scripts/tracetool/backend/__init__.py b/scripts/tracetool/backend/__init__.py
index 72f549c77c4..2749c4e6315 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -26,7 +26,8 @@
                             considered "public".
 CHECK_TRACE_EVENT_GET_STATE If exists and is set to 'True', the backend-specific
                             code inside the tracepoint is emitted within an
-                            ``if trace_event_get_state()`` conditional.
+                            ``if trace_event_get_state_dynamic_by_id()``
+                            conditional.
 =========================== ====================================================
 
 
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 4a622dd4dcb..00a0dd9c9dc 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -28,7 +28,7 @@ def generate_h(event, group):
     if len(event.args) > 0:
         argnames = ", " + argnames
 
-    out('    if (trace_event_get_state(%(event_id)s) &&',
+    out('    if (trace_event_get_state_dynamic_by_id(%(event_id)s) &&',
         '        qemu_loglevel_mask(LOG_TRACE)) {',
         '#line %(event_lineno)d "%(event_filename)s"',
         '            qemu_log("%(name)s " %(fmt)s "\\n"%(argnames)s);',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index f719fe09397..ad4ce4414fe 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -66,7 +66,7 @@ def generate(events, backend, group):
 
         if backend.check_trace_event_get_state:
             event_id = 'TRACE_' + e.name.upper()
-            cond = "trace_event_get_state(%s)" % event_id
+            cond = "trace_event_get_state_dynamic_by_id(%s)" % event_id
             out('    if (%(cond)s) {',
                 cond=cond)
             backend.generate(e, group, check_trace_event_get_state=True)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:02:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:02:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468714.1677853 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxIY-00081E-Hj; Mon, 02 Nov 2026 19:02:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468714.1677853; Mon, 02 Nov 2026 19:02:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxIY-000815-EF; Mon, 02 Nov 2026 19:02:26 +0000
Received: by outflank-mailman (input) for mailman id 1468714;
 Mon, 02 Nov 2026 19:02:24 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xNxIW-0007rp-Pw
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:02:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxIW-004Ha0-59
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:02:24 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de30-bab6-0a2a0a5309dd-0a2a4509a9c8-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:02:23 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6ae8de3d-be1a-0a2a45090019-aa0a817c7dc7-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:02:23 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-121-uh50v2QHMQmd1JjEN_XTYA-1; Mon,
 02 Nov 2026 14:01:45 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C3E0B180AC43; Mon,  2 Nov 2026 19:01:15 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id C9B0B1800347; Mon,  2 Nov 2026 19:01:14 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793646141;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=5CRUR1O7jhB6e7y26qawG8i1UCupwuJ1vSueU290k1s=;
	b=XJ3YMlnSO4Ffszq/HkLtDfDnV+dYtEXR74i0dVK/ExcDXvPERYeCcTiOLxB3XAu1SJUFQo
	eCfnuORZSV5k1zZnjvf8XXiHsYmEI8gkhnUcw/rwK3cMIRV1KNIUrEVoXYbRW2Q/rGx4GD
	+hug3vl4OtokbgMFhwEWcAPa5/+tBsA=
X-MC-Unique: uh50v2QHMQmd1JjEN_XTYA-1
X-Mimecast-MFC-AGG-ID: uh50v2QHMQmd1JjEN_XTYA_1793646076
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org,
	Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>,
	xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL 05/25] trace: block use of "long int" for dtrace
Date: Mon,  2 Nov 2026 13:58:11 -0500
Message-ID: <20261102185831.1880189-6-stefanha@redhat.com>
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: I7_UK83WiG8FIB7MmSPXQxMM63bz_neFcCd2PUxVbNw_1793646076
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793646143-FD26A034-3CE3FD97/35/111497
X-purgate-type: clean
X-purgate-size: 1132

From: Daniel P. Berrangé <berrange@redhat.com>

dtrace (or at least systemtap's fake "dtrace" binary) complains about a
syntax error due to use of "long int", as it wants a bare "long" type
Enforce this when parsing the trace-events files.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-6-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/__init__.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 61ba6f1ba8c..6ed7cdd6ce4 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -177,6 +177,11 @@ def out(*lines, **kwargs):
 
 def validate_type(name):
     bits = name.split(" ")
+
+    if "long" in bits and "int" in bits:
+        raise ValueError("Invalid use of 'int' typename in %s, "
+                         "use 'long' alone" % name)
+
     for bit in bits:
         bit = re.sub(r"\*", "", bit)
         if bit == "":
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:30:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:30:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468800.1677863 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxjY-0000hg-JJ; Mon, 02 Nov 2026 19:30:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468800.1677863; Mon, 02 Nov 2026 19:30:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNxjY-0000hZ-FM; Mon, 02 Nov 2026 19:30:20 +0000
Received: by outflank-mailman (input) for mailman id 1468800;
 Mon, 02 Nov 2026 19:30:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3x-ToagYKCZIE0w95y2AA270.yA8J09-z0H0774EFE.J09BDA50yF.AD2@flex--seanjc.bounces.google.com>)
 id 1xNxjX-0000hT-9z
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:30:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNxjW-004LIf-7V
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:30:18 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3x-ToagYKCZIE0w95y2AA270.yA8J09-z0H0774EFE.J09BDA50yF.AD2@flex--seanjc.bounces.google.com>)
 id 6ae8e4c2-8faa-0a2a0a5109dd-0a2a4501d89a-20
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:30:18 +0100
Received: from [209.85.215.199] (helo=mail-pg1-f199.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3x-ToagYKCZIE0w95y2AA270.yA8J09-z0H0774EFE.J09BDA50yF.AD2@flex--seanjc.bounces.google.com>)
 id 6ae8e4c8-5984-0a2a45010019-d155d7c7b08e-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:30:17 +0100
Received: by mail-pg1-f199.google.com with SMTP id
 41be03b00d2f7-cd60a365440so2184334a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:30:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793647816; x=1794252616; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=KMZG+Vonh2kG6IEXx5qekjJyTd7RpEVJ3Nhz9EIK9Q4=;
        b=Ks1B7SWpYVGNA8ZjG+MHYbj2S4ZOjmKy4xz8TEw4+mexxvanUUZvS9cUI4Sw4mXGjR
         OwvNsuqBsaIYVcGdugHlOI6H3wW4Hh1JV6pLmRRNaUWNWymNg8oH/B6wkGE6kUaCvg19
         TEZ3NcJqrWk2Wf6Xpk00hGG5DPmw9BNmg2nQhsvlNL2HAJPuVTNatSxSH6dXv6bEJr8r
         XmgqwnY7p1+TOJKwQ5hpsZIM1NpJdwq6I97KvO97KEDzEhfjcTd3kHRVnFb5wZwaftFH
         6xtVnpL8dabgwH2rR0VmE2Quy1DY/8eniIyUxZaa1ECJNu4vK6vEG2NNhmT2CvCdktEZ
         uu1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793647816; x=1794252616;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=KMZG+Vonh2kG6IEXx5qekjJyTd7RpEVJ3Nhz9EIK9Q4=;
        b=FRP0Ig0N485UTrfBG+yH6yvz3ahX+TzSOAOBF0wCDwLGUZuOTKK/yXXxboKaOfuLjz
         FnLJu2+KDRA9NRN238JBWYOaM0izWMv8RcPtpGYqlU0HoBX8+7WedLQGaxB3uutz9s/g
         CS02V+SLD7Bfnt53iW02WYKsHMAqyFIQs6vxrnUVESIXf1Qp0GJOOGyrGCpeakA5C+6d
         AOwZNKzMQcPZL3OfGFVUeNcfbkfCb0tjptj7VbnJClUzVlJ9Kdbpj5jEpUnhK7/dpi67
         4/A/Nape0sqk3zYGAaZdAF8t8b01bYjpSgU/QWkhMIl2lTse/oOG1BEYx2E6hYtu8HHu
         M6nQ==
X-Forwarded-Encrypted: i=1; AKwUvByrF1Dw9NgxBb9iVTFbh4qIo+rH+lb2Srdl3hUZO/o1EDgZQdZNLc0Dens+ZO9F9mW+ts87lK/UQ+c=@lists.xenproject.org
X-Gm-Message-State: AFq9FYKmgSbVGFBu74EHzyaGt4vGI5VP6rMV/drEJK1NDobclqCfHYql
	L9XbovqdLDm14/rvp5kryi/E6AvW3u1jS2fj4zS4Jr8PdUbENT8lU1GelYl8yel9mzDF+H0gUf2
	tiqKUvg==
X-Received: from pgfd13-n2.prod.google.com ([2002:a05:6a02:654d:20b0:cd6:1ef9:53db])
 (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:1441:b0:3e1:a4ac:2d5b
 with SMTP id adf61e73a8af0-3e928dc6c6fmr8634625637.41.1793647815861; Mon, 02
 Nov 2026 11:30:15 -0800 (PST)
Date: Mon, 2 Nov 2026 11:30:15 -0800
In-Reply-To: <979f3d53-d4b8-411f-bc66-cf487ff76d42@amd.com>
Mime-Version: 1.0
References: <20261031003309.3751-1-jason.andryuk@amd.com> <20261031032009.GIauVeaXTMNHgjYEiM@fat_crate.local>
 <979f3d53-d4b8-411f-bc66-cf487ff76d42@amd.com>
Message-ID: <aujkx3-YmRrWd6nX@google.com>
Subject: Re: [PATCH] x86/paravirt: Add ioremap_verify_range hook and implement
 it for Xen PV
From: Sean Christopherson <seanjc@google.com>
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Borislav Petkov <bp@alien8.de>, Juergen Gross <jgross@suse.com>, Ajay Kaher <ajay.kaher@broadcom.com>, 
	Alexey Makhalov <alexey.makhalov@broadcom.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Thomas Gleixner <tglx@kernel.org>, 
	Ingo Molnar <mingo@redhat.com>, Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, Yazen Ghannam <yazen.ghannam@amd.com>, 
	Mario Limonciello <mario.limonciello@amd.com>, Ingo Molnar <mingo@kernel.org>, 
	virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="us-ascii"
X-purgate-ID: tlsNG-d62444/1793647818-1FC69757-9C5FFC66/0/0
X-purgate-type: clean
X-purgate-size: 368

On Mon, Nov 02, 2026, Jason Andryuk wrote:
> On 2026-10-30 23:20, Borislav Petkov wrote:
> > And I know Sean doesn't like X86_FEATURE_HYPERVISOR but sorry, nothing beats
> > a oneliner at the beginning of print_s5_reset_status_mmio() vs this overkill.

Deleting Xen PV support would beat it :-D

Yeah, just go X86_FEATURE_HYPERVISOR, I don't care _that_ much.


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 19:52:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 19:52:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468814.1677871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNy58-00069x-7k; Mon, 02 Nov 2026 19:52:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468814.1677871; Mon, 02 Nov 2026 19:52:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNy58-00069q-50; Mon, 02 Nov 2026 19:52:38 +0000
Received: by outflank-mailman (input) for mailman id 1468814;
 Mon, 02 Nov 2026 19:52:37 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xNy56-00069e-OU
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 19:52:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNy56-0063Zi-1n
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:52:36 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae8e9ea-2eae-0a2a0a5409dd-0a2a45038c54-28
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:52:36 +0100
Received: from [209.85.208.42] (helo=mail-ed1-f42.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae8ea03-fae8-0a2a45030019-d155d02aa4ed-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 20:52:35 +0100
Received: by mail-ed1-f42.google.com with SMTP id
 4fb4d7f45d1cf-6b4a13789b0so10424a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 11:52:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793649155; cv=none;
        d=google.com; s=arc-20260327;
        b=MWD8DCE8gV1Gb7WDUp5jaZuqkF9qyZzPN2O3OWxRYWIP77hwLZZUQUztOavaFnhObB
         J7C4heoESuDenuNYvYEFvsnlds9tKv15wX4GXc5dc0Fpd3zayqN0ou1NsAXiHZrE9AIw
         J1AEYUnrTcTmIEdMw64F8juF2RfDAsnK5d8x0R8s3V1L65DIxF8U6BSuHkYGd8tznn5T
         JyoJUA9mZjR599YiK9g/qOPRGp8pHG8JvbF341Yc74miEjFnW/14Gs2O+Xd4WtnkfRnT
         WzSZC+JQVLPJAVlh/SpI7u/LXAVcjUo3JpvuUTqKDQwT6Wi6tE61ndT4ggE9B3v3ynLi
         /pjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=WQTIbX5JdTUQVlGtexv/4WqWe1FMQgrYxHR6l5IOF+E=;
        fh=Hk0XiwI4KP2xSzUfyWx/VA64nJYttDNwZJQ3FD7e8Ls=;
        b=NwVOXP73PAp6/4jvwV4+nMOlXG0VZHlHKRefEATTYjWj72VxSMBaolMW2g2p1J65Af
         E7XEuNw1jaQ6pd2E/8I5vaQ+1Q/y9O9AWoZn7yxFP8WE0u2vEuUHnjVffrRIcDKcZhCe
         7fNf/1k07vLKer9pae68lstlzOYo+ZAR7Wt9o3tWEsnNYoEdIaHUTEnFpQ8PKgxF7dfE
         HIGm1wcB8JxSysnYjUgsdi/xJmkBq4vxlf+8AeejK2+L7+kTWCfyo6QtrlkRhSFaqVX0
         uyjmUkEhGzszF+TFViBI6x2DHpYpKe1dc5GGRdqMiaY7iqB14hCPBkKaN6oxOmXY8CdO
         Y0yQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793649155; x=1794253955; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=WQTIbX5JdTUQVlGtexv/4WqWe1FMQgrYxHR6l5IOF+E=;
        b=Xsbpw1JO9zPT7WZafDgUgF93Le+ENrM0InNaoTz0InI0ZS+aJnSF42ltlp2OR6BE+j
         nGSCZB9yHFuxXzNhHtKOIrmk8fOuRu/29a38MYYuQ7/EKfPn7V/yyyyDJ3N8XYcAWLVT
         5kiKr0nhr4OLyZfAAnJSQnJU9XeD7NkwB6hClBj2hYR8PUpO+PCw5FDRyJ4UrDhiwSjW
         Nok1br7GFOC1KHsaKkBf4TwTBdHTw2CZQXh9Zb2WekVe7hBBZkyoAYr5vaONGyApCBZY
         9wAl7E9j+dOAkE0hq7Oorm8XKYOGC2O036R4UMBKEgap5ejerR0U0nuao5ObfsA46sBl
         440g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793649155; x=1794253955;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=WQTIbX5JdTUQVlGtexv/4WqWe1FMQgrYxHR6l5IOF+E=;
        b=acTm44XMKATdzV1cc1yE3Xa01oxLu1pvNHnsREQalBEgRl+0+asfJ3u7GOyyAnjeXh
         3bU9VoX5I0yVIDbwl6jttPNAVyj2jAZ78wLxlmDYu/IV81CSWn+hfVjsVwPLQCuVULTL
         +6uj7RVWhn1wtDGH3dTshH0IjyEk+yegLDgzNy8q0aWu1q64hwIjN8I3sBth+lr3U1XF
         Q9A3npa0m/1L/Uak+6mXYZ0D6t0941mHbmBxX+sNc+aYs4XXNsu4olgcIFGUeuEOrMlv
         GwfGbx+BH55J3FNQMI0QmDab4ed0v1Ojhc3xBBNSMgmPEvHhLdB+pfZ6QnTeE77Y1kST
         kLfw==
X-Forwarded-Encrypted: i=1; AKwUvBwGonVhTIhb7s713xlHSmisI4uT4/ZKoBY0TrFjK1PYuMVsF7NtXSKxD+qTECU1hcJDqxuYtEj3D7Q=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/aekMx9emxbXs1PLWwIgJspJ5ILqT9aUIGvCH+OwpRDblFeJjb
	LUdap5Zi16mNz2gKGOsrLyiEr7snqOkyANrSWqLWKriBtk+O3qlkUlsOfuiI8vi7b71mbuIn2G2
	WdlGeOceS3BVGKFjZ7cgaMOfHRtclEeY=
X-Gm-Gg: AYBFou2ZpZMuV7jl07TLVke/3sdvXpLBGn1DHIu9ggMoBI8LRF0Rkb015RtWhMJebBb
	eDtBFNiELVULwKAAfqrHmUH1Sfe78REHa6xQUEAZI6YTwfgZNFwFijkex2+dTAEErIp65KCOpLB
	1xVl861W2AamCeaK+jxGoZSGNVsoBKt1qPMYPYEz64YLkdpZl1QXzO/sx9B5FLBXYK2kLreDF5L
	Isv0TrXC3Don/MshhLhVLDKxjK+RnbPr9O/ByIRN+6rzWib71vxXLdtELZTM6wqw0kvswgQpR2x
	egjUmmfJlseicCFf/V5eVSr/QesoYZkrSK5V185RXZHwWWnw9lePhNW9L+3Qgp4ds3ikprtmIsc
	ZoP4g+KqEXGTwhJBEudZeWioRvi75hyPr9yXS
X-Received: by 2002:a05:6402:3053:10b0:6b1:b9e9:6cfe with SMTP id
 4fb4d7f45d1cf-6b4b0bececdmr8268993a12.14.1793649155279; Mon, 02 Nov 2026
 11:52:35 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu> <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com>
 <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu>
In-Reply-To: <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Tue, 3 Nov 2026 03:52:22 +0800
X-Gm-Features: AclHuK82GezjZPRO-2ox9Q6IyePg8CIOMyNBfIjTMU_9_XCKLkBdJwkzzFN--44
Message-ID: <CAE2XoE-459vCeK1O__iCs_hgMfMEQHWf_f_=hXG4ZhMJ1Z4aBw@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1793649156-77AC44E9-941A5570/0/0
X-purgate-type: clean
X-purgate-size: 10439

On Mon, Nov 2, 2026 at 10:56=E2=80=AFPM BALATON Zoltan <balaton@eik.bme.hu>=
 wrote:
>
> On Mon, 2 Nov 2026, Yonggang Luo wrote:
> > On Mon, Nov 2, 2026 at 4:57=E2=80=AFAM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> >>
> >> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> >>> On Sun, Nov 1, 2026 at 7:29=E2=80=AFAM BALATON Zoltan <balaton@eik.bm=
e.hu> wrote:
> >>>>
> >>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> >>>>> On Sun, Nov 1, 2026 at 1:06=E2=80=AFAM BALATON Zoltan <balaton@eik.=
bme.hu> wrote:
> >>>>>>
> >>>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
> >>>>>>> On Sat, Oct 31, 2026 at 8:42=E2=80=AFPM BALATON Zoltan <balaton@e=
ik.bme.hu> wrote:
> >>>>>>>>
> >>>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
> >>>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo =
and the
> >>>>>>>>>>> type_init
> >>>>>>>>>>> function that calls type_register_static(). A later change ne=
eds to
> >>>>>>>>>>> pass a
> >>>>>>>>>>
> >>>>>>>>>> That's the point of the macro to hide the boiler plate code.
> >>>>>>>>>>
> >>>>>>>>>>> target mask into that registration, and the macros have no pa=
rameter
> >>>>>>>>>>> for it.
> >>>>>>>>>>
> >>>>>>>>>> Couldn't you just change the macros to take that parameter ins=
tead of
> >>>>>>>>>> expanding it everywhere?
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Problem of macros is that they don't have default parameters, s=
o you
> >>>>>>>>> need variants for everything:
> >>>>>>>>>
> >>>>>>>>> DEFINE_MACHINE
> >>>>>>>>> DEFINE_MACHINE_EXTENDED
> >>>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
> >>>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>>>>>>>> and now would need a new variant, with variant for other existi=
ng ones.
> >>>>>>>>>
> >>>>>>>>> In the end, it's just simpler to remove this and add the boiler=
plate.
> >>>>>>>>> It's written once and never modified, so using a macro just sav=
e typing
> >>>>>>>>> those lines once.
> >>>>>>>>>
> >>>>>>>>>> Regards,
> >>>>>>>>>> BALATON Zoltan
> >>>>>>>>>>
> >>>>>>>>>>> This series expands every caller first, with no behavior chan=
ge, so the
> >>>>>>>>>>> follow-up only replaces the type_register_static() call.
> >>>>>>>>>>>
> >>>>>>>>>>> Each machine file gains a class_init function, a TypeInfo, an=
d a
> >>>>>>>>>>> type_init
> >>>>>>>>>>> function that calls type_register_static(). The last patch re=
moves
> >>>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/co=
re/boards.h.
> >>>>>>>>
> >>>>>>>> Macros help reading the code not saving typing. If the actual
> >>>>>>>> functionality is buried in a lot of boiler plate it's harder to =
understand
> >>>>>>>> and spot bugs so putting the unintresting boiler plate behind a =
macro is
> >>>>>>>> better even if you need a separate version for different cases. =
Then the
> >>>>>>>> code that uses the macro will be much more obvious and not just =
a lot of
> >>>>>>>
> >>>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE*=
 are
> >>>>>>> not defined properly
> >>>>>>> that causes them to not be extended easily.
> >>>>>>>
> >>>>>>> DEFINE_TYPES is another example, use them can extend easily, how =
about
> >>>>>>> always use DEFINE_TYPES?
> >>>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE=
_MACHINE*?
> >>>>>>
> >>>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
> >>>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't =
you add
> >>>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for m=
achines
> >>>>>> that need it, or if it's needed by all machines then make the new
> >>>>>> parameter required and add it to all convenience wrappers too so y=
ou can
> >>>>>> keep using DEFINE_MACHINE* and just need to add one parameter to i=
t in
> >>>>>> machines?
> >>>>>
> >>>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means al=
l
> >>>>> calls to it also need
> >>>>> to be changed, that means touch many $target_arch files. currently
> >>>>> it's 13. But after these
> >>>>
> >>>> That's not different from expanding the macro which would touch the =
same
> >>>> files.
> >>>>
> >>>>> changes, there will be much more usage on it, and if we want to add
> >>>>> more parameters or attributes
> >>>>> to it, it will be a new tree-wide change.
> >>>>
> >>>> Do you expect to need more parameters? Can't you add them at once th=
en?
> >>>>
> >>>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] =
is
> >>>>> explicit defined for
> >>>>> DEFINE_TYPES
> >>>>
> >>>> My point is that keeping the boiler plate as little as possible make=
s the
> >>>> code more readable. DEFINE_TYPES hides some of the boiler plate,
> >>>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would e=
xpose
> >>>> some even if it's better than no macro at all.
> >>>>
> >>>> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED=
 that
> >>>> need to be added?
> >>>
> >>> Hi BALATON
> >>> the things we faced is we first is to add TypeInfo::is_available para=
meter to
> >>> DEFINE_MACHINE_EXTENDED, and have more usage of it.
> >>> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDE=
D, this is
> >>> a prepare to remove TypeInfo::is_available parameter from
> >>> DEFINE_MACHINE_EXTENDED,
> >>>
> >>> And finally, once all usage of TypeInfo::is_available can be replaced=
 with
> >>> targets:uint64_t, then we finally need to remove
> >>> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
> >>
> >> Is there a way to avoid the temporary is_available churn and introduce=
 the
> >> targets:uint64_t right away? (I'm not following this so I don't really
> >> know what you're talking about just looks like there's some churn here
> >> which might be good to awoid anyway independent of these macros.)
> >>
> >>> That's what I am facing now. And the explicit
> >>> static const TypeInfo xxx_machine_typeinfo =3D {
> >>>    .name       =3D MACHINE_TYPE_NAME("xxx"),
> >>>    .parent     =3D TYPE_MACHINE,
> >>>    .class_init =3D xxx_machine_class_init,
> >>> };
> >>>
> >>> Will help me avoid the issue. And I think this is a little boilerplat=
e
> >>> and very explicit.
> >>
> >> That's not all DEFINE_MACHINE hides though. It's longer with .abstract=
,
> >> .secure and .iterfaces plus the machine initfn that would also need to=
 be
> >> expanded if you used DEFINE_TYPES.
> >>
> >> Is this conversion needed for all machines using all DEFINE_MACHINE
> >
> > At the end, only "none" machine do not have targets parameter or
> > (QEMU_ARCH_ALL), as that's the sole
> > machine that supports all targets.
> >
> >> variants or only some of them? If the latter why not convert those to
> >
> >
> >
> >
> >> DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed w=
ith
> >> other wrappers passing a default value without needing a new parameter=
.
> >> That does not work if all machines need to do this but even then, keep=
ing
> >> the macro and adding a new required parameter is better in my opinion =
as
> >> it keeps boiler plate hidden.
> >
> > Another option is keep DEFINE_MACHINE and introduce DEFINE_MACHINE_TARG=
ETS
> > and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE for
> > simple case,
> > that is parent is TYPE_MACHINE and have no custom type and no more
> > attributes assigned.
> > DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less clear
> > than calling to DEFINE_MACHINE.
> > And if we want to set more attributes to TypeInfo, just expand it to
> > use type_init or DEFINE_TYPES, how about this way.
> >
> > This will be something like:
> >
> > #define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
> >    static void machine_initfn##_class_init(ObjectClass *oc, const void =
*data) \
> >    { \
> >        MachineClass *mc =3D MACHINE_CLASS(oc); \
> >        machine_initfn(mc); \
> >    } \
> >    static const TypeInfo machine_initfn##_typeinfo =3D { \
> >        .name       =3D MACHINE_TYPE_NAME(namestr), \
> >        .parent     =3D TYPE_MACHINE, \
> >        .class_init =3D machine_initfn##_class_init, \
> >    }; \
> >    static void machine_initfn##_register_types(void) \
> >    { \
> >        type_register_targets(&machine_initfn##_typeinfo, targets); \
> >    } \
> >    type_init(machine_initfn##_register_types)
> >
> > /* Implicitly insecure */
> > #define DEFINE_MACHINE(namestr, machine_initfn) \
> >    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \
> >
> > As the many call is to DEFINE_MACHINE.
> >
> > And after all conversion, all existing usage of DEFINE_MACHINE will be
> > converted to
> > DEFINE_MACHINE_TARGETS.
> > DEFINE_MACHINE will be called for ('none') machine or future heterogene=
ous
> > machines
> >
> >
> > Either way, these patches will be dropped. We will introduce
> > DEFINE_MACHINE_TARGETS first.
>
> I think I'm lost and cannot follow what you want. As far as I understood
> you want to add a new field "target" to machine TypeInfo but instead of
> adding that straight away you proposed to first add is_available then
> later replace that with target. I asked why do you need is_available and
> not add target right away?
>
> Then if this target parameter will be needed for all machines why can't
> you add that to all DEFINE_MACHINE macros as a required parameter and set
> it for all machines passing it through to DEFINE_MACHINE_EXTENDED which
> sets in the TypeInfo. That way no machines need changing other than addin=
g
> the target parameter to the existing DEFINE_MACHINE calls.
>
> What am I missing?
Or sorry, I did not explain well.

I means reshape DEFINE_MACHINE like

https://lore.kernel.org/qemu-devel/20261102194826.1298-1-luoyonggang@gmail.=
com/T/#u

basically every call to DEFINE_MACHINE needs the targets parameter.
So we can always passing targets parameter for DEFINE_MACHINE.

And I think we can remove DEFINE_MACHINE_EXTENDED, as the call to it is ver=
bose



>
> Regards,
> BALATON Zoltan



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 20:34:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 20:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468834.1677880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNyjr-0005lt-Be; Mon, 02 Nov 2026 20:34:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468834.1677880; Mon, 02 Nov 2026 20:34:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xNyjr-0005lm-86; Mon, 02 Nov 2026 20:34:43 +0000
Received: by outflank-mailman (input) for mailman id 1468834;
 Mon, 02 Nov 2026 20:34:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xNyjp-0005lg-6R
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:34:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNyjo-008V3f-58
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 21:34:40 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8f3b7-8faa-0a2a0a5109dd-0a2a450297b4-28
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 21:34:40 +0100
Received: from [52.101.61.14]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae8f3de-6ca4-0a2a45020019-34653d0ef6b1-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 21:34:39 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by CO1PR03MB7819.namprd03.prod.outlook.com (2603:10b6:303:276::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 20:34:11 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 20:34:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=ozR0zRSF2dMyTnsEii39pECfyiREhaPKOS70CO8+whGsOFwyMxCRMvWrFu0OWsRqH2zBILfgkG4/HIzQw5X/VVcvCsS54UN0o7k/MVHuaEBBMCZXpHcC/c8N9Ru6L/baNE0TywA8f6RukK41bZeIMoe2/DwZwkFqLz3A10wQkOa9FW9oe9qOVy2AQKRdZCbMDvagWAlPzIZVobQ1D8coub00AJuCeig7vdm/lGXd6BdINiJPViHkYLiU6h0ymD0/jIvhNjNId5NSCF+KLZJP9Lq9+byHc7pO0b/LdzSkGqQ5ko+B86ZdORom/vBYq7USUsDV0oBZggnJ3dsVdjuPhg==
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=AOh2F4HBlOh17uZPy/+N5rIfIqTcLvr2vaT14vKYoA8=;
 b=mXEhoAhZYII5SCeAqrqOiLteN91K76gGcVe8MxKaPTfwhtZp/zJ2r+cpM20gwpk/4sxj9WpxdKVzIqWSRRf6kEwuCZlxKUcXq4WZTVvEst4nYe+QgNOQwhI/SBnRhGYDcOuBN7m2V0RKFdf7CEWXbRf4koojH12OvDopfNj3I0KLLfGY4IhpV3LtZdEPMslmutaV9cIX0zM0fXmdp/0bQqRve1twA/ctHoQX6uUMp99TxTuRxnz/An8dDn1GIFlWat757lJLEmnLi0HiDj2iamKkUKiOThHwVWJLh9wsgqhxb9TVTZntlnXS6UUX09hCfXW/AVG1ZA4D7gQVRP+HHw==
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=AOh2F4HBlOh17uZPy/+N5rIfIqTcLvr2vaT14vKYoA8=;
 b=Msw0bhmcsF3ubYzhzchP46jbwaO5nkULkXLQv/M2qxfgSb6E93X+xOzkIlH5pgsUq148WLuFBvlLrLwWLM6wdbE67jYHgjmtJLeptS+xuo0hqyI8mEbONgPO+Zkk2MPXQSyFz4Ga4YP2UPuKG81vByCBdbK3RjE0jlboRLBHgtQ=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e499efd0-453c-4885-9e7a-388f21e45da1@citrix.com>
Date: Mon, 2 Nov 2026 20:34:07 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
 <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
 <CH8PR03MB82743DC59D48A031251F71AAF06A2@CH8PR03MB8274.namprd03.prod.outlook.com>
 <7021681a-277a-4b40-9963-74e55dde35af@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <7021681a-277a-4b40-9963-74e55dde35af@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0127.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:193::6) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|CO1PR03MB7819:EE_
X-MS-Office365-Filtering-Correlation-Id: 311af24d-d15a-418c-c53a-08df3920a6bc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|366016|1800799024|376014|261021121427099003|261022105027099003|261022075727099003|261009223027099003|261026140227099003|261026121527099003|261028144727099003|11063799006|5023799004|4143699003|56012099006|18002099003|22082099003|261102123227099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	3NcdyVq7qTv+MaOt71amTYvKaOftnmKpxpnMukqOrEuRbF2PD/3AqpY2PDfmrP4P6E7/v4aJhrTApUxnQw6UJuAMR8MZENo0OZmnBP8fuBMlOb+u5xBDVaNC1KVRFD6kmelKwAFzxRvaZc2/zWy3v+SsiggROzrQrgxIrT7SJZzu6vzM7rAq5w7N9O3Tl+Fnmg3PCgunS1nBWh8s+Nj61YgiQBhRBNljyR2yyJlwx2cebzQJZb6Y6gnznuAoL80nd3mV4SYmeH2mtDfrdlP9Lmg0nLBH64AVt4JluzJD6G4cK70xHTySOGB9dY7C8Sb13x7CfQG7KgEaC0c+kWGRNyCQ5v1Y4zx4N3HaL4gWqM+OY8v90hh3zDW967ue4R66g3dZ/wLOSe2O6WeDgkZPqY2UI3+93/tMQmYrvmprQFtYRcOoyzClzz1sZ+XmorMQj8TKd0KwHrlklzpE7giasnUXEjP449/ZcUTOFb59Z28e4cAxOpgymYy3w3sdEOLaP7uMtBcWW7UqLuyCvW+3BHPwbYSVbTjQuJDNf8NQUJ2fbdGMw4J/lwDd2+UQbGzg9EJZnByIja2kZ8ztjn675t/BRMIWWSIMbxEqpEd8wNiBoqkMnQGrw2+PzHgTukoueGYHVPUAKGwMR5Ml/aw8WWYnQcgD1VVdC50dxp5QXac=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(376014)(261021121427099003)(261022105027099003)(261022075727099003)(261009223027099003)(261026140227099003)(261026121527099003)(261028144727099003)(11063799006)(5023799004)(4143699003)(56012099006)(18002099003)(22082099003)(261102123227099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SFgvckVTckZ6cGtiWnB3TXZxazFrSmNnc2pLQ1I4K0RPaFpFcmVBdzZ6MUdx?=
 =?utf-8?B?d0tBK0lmcGJSdzZpbVV6aVkxajU0YkhmRXNiZlU4bzc1Y25ETVZhSUxaL1Qy?=
 =?utf-8?B?cFlWSTFWRUZrd2FPL3lnUHdSSjVpL1Q4Uyt1NUVaQ1FqaXVFV0E3QW1Dc2M3?=
 =?utf-8?B?ZHNCZkUrMytXWGNMWG9sUzNZdlpleVJPTTY5YUNQUVk1TG9uL0lDRzd5dzY2?=
 =?utf-8?B?QXdJRDlXRWRXL2U5NEtXSVJaSURybFBRV2hIblJwYXVjRUdSZmk1Tm83YjJq?=
 =?utf-8?B?SWxUNjhwNGs5Skp5NjhvVC9FSVp5UHd4U0RiK3ZLVjhWR294RWJYZnpuZlNs?=
 =?utf-8?B?SVNHeTczazl5SW9QVS9tdjZRWjg2OTI4TlRHekF3SmpOTWU5aEQrMC9VTVJ5?=
 =?utf-8?B?S0V2MEtLVUhSMTVPRWQrZ1ROd3pqUmRwRzE0Y253dlZ3bklZcnZESGl1MzhQ?=
 =?utf-8?B?NnYrS0k5SFhyelJWTUhDLzh4R1hXUXBrVVpQamtZOTZld3hidUw4ZXg1Tmgw?=
 =?utf-8?B?RXp1SVRJSXVSVzZXUTBtR2luTFdudEZaSmNtNW90VHpxMDFLN2lYbVZpczRF?=
 =?utf-8?B?aHVleUV4ZkQ0YkIvSFNITE1ReXhjSEpnNjdLUEl1OXJkN29kZTVaQTJOOEVu?=
 =?utf-8?B?UGRscWlGSE5VVlRhODhmTUVUS2djc3VZbVdKU0tLR1Vvd015VVBHR3k4VExz?=
 =?utf-8?B?Z210V2ZKVjhVd3pxak5TRDF2TjBDNmxoWlJhKzA2SFJjdE5ZM1B0clNKYnRv?=
 =?utf-8?B?VVl2dmJ1YVFLcTNXTFJEUFdRYVVma1dmZUY0M3lsS1ZpaVRnMUlyY3owK3kw?=
 =?utf-8?B?TFpaUGNudmhzR1FKYVVWVlI3UUZLeHFjcXNjS1kxcWxvZWcyMEpzUVBKaHE3?=
 =?utf-8?B?NnJnbDIvRmNBOVI0bHJuSVpUdnIzK3hQZEJMMFlhTlAva1JIM2g1R1NsdW5y?=
 =?utf-8?B?M085bjNONldjSVVyRHpac3NEb3hGbG8rODJITnlIVVl1WVNpUlBhc3dUQnBG?=
 =?utf-8?B?bzZoaFlncGhUN1VVblNUTlhVVjZWMDlTdVJHaDFmc2Npa2o3LzhVUGkraU5X?=
 =?utf-8?B?OG9pNDdYTHo0SWdKL0dqZnhsZ3U0OVpqUFJlVlZieFV6dTdrVmErSW5PSnVu?=
 =?utf-8?B?Y0F6aElBR01pWFVqNDliSEp1RitXYW4ycUtPOXlhUW9ZSytDbFRaYWwxeXZy?=
 =?utf-8?B?NEo2RXYzU2tVNEt1SEVGODJxbFZ3VXV5RVFWQitOSVJNLzIrVFJ2RkthRXoz?=
 =?utf-8?B?T3NyOXgyOUlTb0VZNVRBdWdUekJTMHNucHFwQ01rWVlHVW1vRzF0c2I0Nzho?=
 =?utf-8?B?bjdDS3VlNVBrVzZvWWZjVU1EV3dBYzNCV1ZZOUpHMUp6UThYNjZrNitrR0ZN?=
 =?utf-8?B?T0NNVTRJODNPNDdoV0wydm5PQVAwK0V1NVdieEtXbkdxOVpsS0RYVjRqaFRX?=
 =?utf-8?B?MTE5SVBVb08wZlpUMXZ1UHNFTnB2RTFvdkNxU3VzTktBMVdSRGlLdWhIQUpu?=
 =?utf-8?B?cXpzcXowUE5Nclo4ald4VHlrMDRBMXRzS0tvNHNpU3NlRW02K1pxeWFqUit6?=
 =?utf-8?B?QmcxS29TeVJ1bWhlWGR1K3JxZGpGTFlRb0pIaTIwaXBSTlQ0L2NhMmZBVDli?=
 =?utf-8?B?UHdaV0lKTVRzWXNRelpjZDRIam1Hb2p5WkUzLzlXbHJMd0Y5L1Q2UkQvRkw0?=
 =?utf-8?B?YnJLenMydG9Dckx0NzRrR0Nob2s0d3hnd1NGamRyNDJPL3k3blhHMjZlTDNu?=
 =?utf-8?B?WXdYemlIMk9TNmhublpQMXppdVQ0cmsvcUx2dFJYSlJIRjY3bVkzVVdiTmlZ?=
 =?utf-8?B?b1BBcG05VXV4cDNOYjhoekNtOUV3V0E3ajYvUThxeWtNdnNqbVlWZEJGRG9k?=
 =?utf-8?B?WXNkRDlvM3lEdEhsQlNGTmVaSnNiMEloeGVqb3ZtZ2RkaTlYbGRVUENpZDJ2?=
 =?utf-8?B?MnlER05TOVBqN245Wk5JVFNNa0l2VCtjVkRhOTFrT1ZVS1A3dXpHTHM0Wm9v?=
 =?utf-8?B?aFVCb1UwdENER1lrNzlWaGJXbEMvczhDYStJQlVuQzdHelVhNnQ4K2IrWDNn?=
 =?utf-8?B?dEtXR3JybEtkTzAxcllPLzZqTER0N2VQeWcwTlhTcVlSOWJWTWlVY0tFNmZS?=
 =?utf-8?B?NTYrVkRWOXV2MDJTR3BRVFgwdTg4eFNNSDJKWUdWamtLMldhZDduYUo2ZWhC?=
 =?utf-8?B?V1UzQVljS3VuWkFPcGNUTmQ1RU9XS2ZEc1NFTmlHMmpWNSszYVJGbFUzNXM4?=
 =?utf-8?B?aGRnRjN1SUFENEN3Q09vMEFvUHM1TFNubFhITzFieXIvdlVsamNOcCsrd2pZ?=
 =?utf-8?B?RC9TcEFibnVZdGwzdzV5cTJINzNxWEh0bHMzRGZPaVVQb3lnWHFMdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 311af24d-d15a-418c-c53a-08df3920a6bc
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 20:34:11.0984
 (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: Fhbe3Mx7YuZdHvUnq0JBZwSaEh0k7pTRhCQf+DddO7O22eHsHk1WxyLoI+5PZz98J3HZi2EnKuAJwAbZWuHpjj2Q0+XJ9XPr9nqXu0zGROA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR03MB7819
X-purgate-ID: tlsNG-720697/1793651680-666B72AC-30CDE6AA/10/78276251493
X-purgate-type: spam
X-purgate-size: 3878

On 02/11/2026 6:16 pm, Andrew Cooper wrote:
> On 02/11/2026 4:12 pm, Ross Lagerwall wrote:
>>> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> on behalf of Andrew Cooper <andrew.cooper3@citrix.com>
>>> Sent: Monday, November 02, 2026 13:54
>>> To: Xen-devel <xen-devel@lists.xenproject.org>
>>> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Jan Beulich <jbeulich@suse.com>; Roger Pau Monné <roger@xenproject.org>; Teddy Astie <teddy.astie@vates.tech>; Jason Andryuk <jason.andryuk@amd.com>
>>> Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
>>>
>>>
>>> On 02/11/2026 1:46 pm, Andrew Cooper wrote:
>>>> Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
>>>> has been adjusted to state that the vNMI fields in vINTR are covered by the
>>>> TPR cleanbit.
>>>>
>>>> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
>>>> rather than writing into the VMCB directly.
>>>>
>>>> In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
>>>> the reading of vmcb_get_general1_intercepts() to the point at which it is
>>>> used; tt does not need reading on the case that vNMIs are enabled.
>>>>
>>>> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>>> ---
>>>> CC: Jan Beulich <jbeulich@suse.com>
>>>> CC: Roger Pau Monné <roger@xenproject.org>
>>>> CC: Teddy Astie <teddy.astie@vates.tech>
>>>> CC: Jason Andryuk <jason.andryuk@amd.com>
>>> I forgot the extra comment.  This bug is hidden by:
>>>
>>>     /* The exit may have updated the TPR: reflect this in the hardware
>>> vtpr */
>>>     intr = vmcb_get_vintr(vmcb);
>>>     intr.fields.tpr =
>>>         (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
>>>     vmcb_set_vintr(vmcb, intr);
>>> }
>>>
>>> at the very end of the vmexit handler which unconditionally writes vINTR
>>> and hits the cleanbit.
>>>
>>> This is an absurd codepath.  SVM has virtualised CR8 since the very
>>> beginning, and put in CR8_LEGACY for Windows to use even in 32bit mode,
>>> so the only path modifying TPR is a non-accelerated write to APIC_TPR. 
>>>  That path can be updated to modify vINTR, and this logic dropped.
>>>
>>> ~Andrew
>> The APM says "(Offset 60h–67h)" for this bit in the current and previous
>> versions. Perhaps that means that more or everything in that range may be
>> covered by this bit in future? In which case more extensive changes would be
>> needed to avoid future breakage.
> The vINTR field is complicated, because some bits are unconditional,
> while some are covered by a cleanbit.
>
> Byte 63h (V_INTR_MASKING, vGIF_EN, vNMI_EN, {,x2}AVIC_EN) all control
> virtualisation behaviour.  These are unconditional, and I bet the 3
> reserved bits in there will continue to behave in the same way when they
> are given meaning.
>
> All other bytes are state of the vCPU, and are (now documented to be)
> subject to the cleanbit.
>
>> On a related note, I see the APM says this:
>>> If any VMCB fields (excluding explicitly uncached fields) have been modified,
>>> all clean bits that are undefined (within the scope of the hypervisor) must be
>>> cleared to zero.
>> AFAICT Xen doesn't do this. Might that cause breakage in future?
> Fun...  That's incompatible with the previous sentence.
>
> Xen follows the previous advice, and sets:
>
>     vmcb->cleanbits.raw = ~0u;
>
> early(ish) in the VMExit handler.

It would appear that AMD reserve the right to retroactively introduce
cleanbits.

I maintain that it's absurd to suggest both "write ~0" and "clear all
cleanbits you don't know if you write anything".

The advice should be "write the cleanbits you know" in order to signify
the VMCB as clean.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 02 22:46:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 02 Nov 2026 22:46:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468856.1677889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO0n2-0000Cm-Bv; Mon, 02 Nov 2026 22:46:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468856.1677889; Mon, 02 Nov 2026 22:46:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO0n2-0000Cf-8k; Mon, 02 Nov 2026 22:46:08 +0000
Received: by outflank-mailman (input) for mailman id 1468856;
 Mon, 02 Nov 2026 22:46:06 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xO0n0-0000CZ-CU
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 22:46:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO0mz-004gdX-I8
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 23:46:05 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae91239-2eae-0a2a0a5409dd-0a2a4508e6be-48
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 23:46:05 +0100
Received: from [52.101.56.43]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae912ab-f659-0a2a45080019-3465382ba45a-4
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 23:46:05 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by EAYPR03MB989253.namprd03.prod.outlook.com (2603:10b6:303:2cd::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov
 2026 22:46:02 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0569.011; Mon, 2 Nov 2026
 22:46:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=gffg5J+HuXEXHheVEnl1xpQuj9S9ToffiaUE9t91CWNuMKNL8Fk1nkX3DYtlRAdJNsS5a2T/ShckdW67sjU0RYId9DrANbIdHoAJlYPnV3h2f0M4ELXvOJE8edP4jCAEmCmWKkJAhs2ChyQeYBbF5LnaKeb7kMyvEt9zkiyddTjxYDkEMO+lvI0Z8P5JYAGaslE6+8wtZhE7jkvywXH/EHaztbGfuw9stPDh//6o1GBjRWL8FBeUtH7Y1PUpYb6ZNeaKzVEY7/yuoGlPtx5GqB8rEF5krwmolIinB2I5+ts+39og18BHsHIV/gQZUr64nI3S6Qoc4CzO1tB5ILERUA==
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=FN8xXwNnc3BLrFJPXHhlJ35XHTt1n0VJ678v42WMVlw=;
 b=dr5OqJb9iXGlays3qUxteGabaQonbLErBgY+8eTsCKn5Yq5s9NeR8sn5QGvI0+Mq5VJ+RDhuHd8Mbl6ImkZW1nQ+yf40iiM36PkaxClYORGF6WcLjCGhOAX6b+z3L8Erhwx6Xp1/zSkbUvYp0PpqbmtxXg0zfeRotdwNXuVhVh7gxbggI96hOMaPJJunZb5YM4fQ3+33IBOWjZFePEkdFrJUZs+KG6GHMOjcNoRi6+NOU0UbsK9RpTd/a41oaIk5hr/Ex4McWe73mCRQhxLCx1YUAy4dvkCOBF0L7/ssDSsXh4++eeNrtFKNuqWhfAGRmwrl8f2xAe7HXSr5Kl7zRw==
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=FN8xXwNnc3BLrFJPXHhlJ35XHTt1n0VJ678v42WMVlw=;
 b=t2aN2SGBfEShY/JAsZ6z1NovF2/tD2fFyKni6GDM5vR4FH5LOhOimFEEv5N3nKb0TiMTLDPd23dTDFOeHXbwx0pKc8lWBk7zYBwMti9XOcThrEhLUT5vACiq39A3abBmJGTuYBCzgXm+sqP+f2Uk6OyYBmOdDs5+60LdjpySSsE=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <eea181ea-4310-47f0-be4a-b6d303e00c51@citrix.com>
Date: Mon, 2 Nov 2026 22:45:58 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0170.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:312::9) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|EAYPR03MB989253:EE_
X-MS-Office365-Filtering-Correlation-Id: 604c7a61-ddfb-452a-402c-08df393311d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|6133799003|10067099003|261102123227099003|22082099003|18002099003|3023799007|56012099006|261021135927099003|5023799004|11063799006|261021121427099003|261026121527099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	BnmEAlLDC6GKkXcILdzSGBYke2ss52w5iyO4zeg9ldAXJXip+ifh5TkbHNs+ko5XD7MlBcNU1nQAzad7DabIreUzAelUU9BB7r9A5uuCsAFUYNPmVnedlHaf3QsvkfXrzOpYN6515TXjJM8bCfRpFXeTL51T93vxKexaaJVOrqWbrTB+U/tTdHO2fs0QB9bGJ9hguVAL9Xx42D/Xqxw+Mwuo0MCyMCWE3LqZI57jhPPFBPxM2icCs31Kmf6U/T5rHu6kv9QgtWkog+1UKnkdmmgeJ/A8sz6v3SNDuCM0rolqrPopFCVHyefmbdlXYTGunxmEfXU3YTrdlWFiMXWF/1qJGguTltuxf0h7ovHA2DhWs5rziDEpsKD8bVSffSsfpz8046zkCQFAWf+vZfaGC386rcqpiLbicBBukWDAqstDXDGeZnfUFPJktSEunqLK6C/+dD8cwe/LECppRwgZY8vv6oNjp7Q2lkZXXYBmJ4PIa4bBExn5465NbH8dcAtGUoyUmhznJbR2gD33IYq7qFgXQu/FipvwlsensyMuY5mj3TwD6W/34JDTQAI+6ike4HlbGTjMfCpfqYWLUSv3/JIf9YP7LRrJVijUhYpaTrzxY3N+3T3I3hOGIco+9WhoIY1jeTMwgBS5gObjm0vzr1obVpRLYKksVRqGf1LE7Po=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(6133799003)(10067099003)(261102123227099003)(22082099003)(18002099003)(3023799007)(56012099006)(261021135927099003)(5023799004)(11063799006)(261021121427099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NCtnb0FycXNScW9EZmM2Z2xXRWE5Q3RVYnV0OTcvTE84eUZKa3A5M2NVSDlW?=
 =?utf-8?B?cCtNTm9KenM3SDhFczNDbXV1MXpxMG1nNlNpTVBYODBxYXhLSjMrekFETjk5?=
 =?utf-8?B?RWdIbE9mcWJBTXRhTWlGb2ZyamNxQjVZYkNmTHZaamdkQzRFd2JEQmp5aElr?=
 =?utf-8?B?Nlc3bzNiUEcxdmVKT3h2cW5tMUY2YkcrUXJjVUhRcUVBMVFLblNiWnpVT1h4?=
 =?utf-8?B?ZHhsQVFaYlQ0ODd6blQ5bnRhclkrSlQ3Rk45cjcrUDRtYUs1amlQNG41TmVV?=
 =?utf-8?B?K2hvZTRoVXpBUlZnMUNib1dKbzAzeW9jVlU5emw1cVBDdkZxZHFoV1NyNHFS?=
 =?utf-8?B?TjBKSjJTelRQc1J5Y0ZIZXROMHpGeFhmbjJEYlBmNTdIQkJ5Y3I3UFdXL0Zs?=
 =?utf-8?B?bjRHUnFIVDRJQUhtdmxxR0kyRmFYL3ZsQk9yc2w3Rk9VSTB6SkRrZjdqTUF4?=
 =?utf-8?B?QWZtQXFaM1J1YndzL2twWDFtRUQ1Tm9wRG5CZDF4TXE1em1KUWEyTTFMOE5O?=
 =?utf-8?B?VjZTNmxJYWtkSVlpeVV4ajNNTE9Xc3p6RHNtVWlNdTNKeG9oVWFZTDZicFAx?=
 =?utf-8?B?TFl1Y2V4cmh6UjJLMVBaVVdhYldTMHVIcnNQQ1JpM0gxUVFaM05QU3prUGs2?=
 =?utf-8?B?VUNmb2xCTHFZS0RVS0hoN0VZRkpFc09ZUytvY3pVV3ZJMWZrODVpbVJiSU92?=
 =?utf-8?B?NGh0S0htU0NNc1p1eUVRc091TnAxWnBkSkpNRWdHbEJnTGo0aXhpQ3FDVXg1?=
 =?utf-8?B?RGdIWG90TEwzR1Z2djJnSHBzRzRCTk9GZzZ2TUxFT1lqNjRGMGZDdG5LOU4z?=
 =?utf-8?B?Nk51UDhNaGg5K29wN2U4aGJPbXJhS0xiOHVRd0hUaFVWT1V6UFlrM0tUSC9K?=
 =?utf-8?B?K2VlU29tVDlEaVpTSFhNM1czdWhSaGxybmhxdHRsQlVDOU1TSy9OdTRBeDQw?=
 =?utf-8?B?c205QUdJS2FMdnRFZVlEQ1ZpS1pVSjdGUE9KaXEvVXkwb2YwY0xkQUlHZ2Vz?=
 =?utf-8?B?eCtlQ2YwRmltK3oxcWV3U0xtbEQxMTc5bVlIeTFWdjlFNVdRNGxpTzlqeUtY?=
 =?utf-8?B?NFBLOG5PRm5mTnZZV3JVNDJuOEI0S3ZoQ2FXZ2RtdnJXdTlPNy8yUFRMTzBa?=
 =?utf-8?B?aVl1TFRaUUFtWTM3TTlha01qWUxzUFRTamU2WFFFK041Vm0yb0hjV1A3anpZ?=
 =?utf-8?B?b3pVM3VoNTYwR2VaWXJkZHI3dVkrYStrYXRDTFpqWVJseDNBa1RGT0kzRktX?=
 =?utf-8?B?ZnFIbjNMUHUzM1Y2REtacEZTNmNTLzFFUnFwYUxTM2F0QWx0ejF1MkZpbjk1?=
 =?utf-8?B?TkRCMkxJd2lSNnM5L3JYQmRKK2g3Snp1WnVmVVJIVCtybFkwMWVnbmttVHhq?=
 =?utf-8?B?WDJVcERmYStvQVJ2N3BjZ1V4ZkF5Z2VKMjlHUlpiNUtydmNTOG8yckYzUlQr?=
 =?utf-8?B?Rk9wNnVWTkhhVjd1K2R2cEV4bzIxQWpscHlRMFNjbkJQSFVlS2FxQ2NBNjQz?=
 =?utf-8?B?NDBrcjZCLzBqa2JJNlljMjVYTkpLdWc0dzc1bUNUa093ZHF3RWNGamlHaEQ0?=
 =?utf-8?B?L3hoSHl0ZFNVbXlxY1oyc0FKcmhneHRSTUIzME1wWGhaL0Z0cHZZczIyQWZv?=
 =?utf-8?B?TThDUzNXazAvUkFKdlpiemFGM0dXMkN4NHhjZUhTa3BacTcyczcwSGJtc0Jy?=
 =?utf-8?B?SlhJK3FmTytuSFlqYXdvdFIySnFaSFdOWFdoYm5ZZ3NueWE4VjlnQkZPaStU?=
 =?utf-8?B?K2UwWGcyQ1RFWitYbWFRYTA1WGIwWlUxZkEvRXVFQ1V1aHFHeXNEYUxJUXVU?=
 =?utf-8?B?QTg0K0dvZm1obGRpUjcxVWJnOHV2NUExVXBBZFhjVVdLaXowZ3lkVG9WYndX?=
 =?utf-8?B?RFpuV2dJRmRPdUxjemFvS3dUc05vNkdYeXc1SGwrQWQ0V0tEKzNXT00yK0tn?=
 =?utf-8?B?VFZGQ3pOVTFHRko3M0xDd1FFZGJlbWxKbE5GbHhaSWJBV0NFQnJlYy9ZVTds?=
 =?utf-8?B?R0ZPMXhZNG5pUkFnWmpONFV3SXYxeTFteWNSd2JtVTl5WkVieXdXdTNpNTFI?=
 =?utf-8?B?c0hZTzR6MVJNcVZBNzh6eHJpUy84YlpkVzFoSHlDSmU4bllpb05Rcko0ZENG?=
 =?utf-8?B?UUNSZ2NXODdTNndEakZEUWJoY092M3BFOENEN3AwMkc1Qi9UdWlCQ2JBK1hD?=
 =?utf-8?B?MUJZNHlQb0lnbXVmdUxuemwyTXdJbVBBMDZzcXJ4VldvRnpGNFdma1F3alVI?=
 =?utf-8?B?Y3Jjb0xBYmFnb2FXdXR6UkIyQ3lDSmNiQnlLK3BHWlFmUXVzTGxjaXpkeEo0?=
 =?utf-8?B?YmRJeVdDd3MvaTR1T0dBNUFHb01DZVZYcTJ0VXhiclVHUTR4UDJJZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 604c7a61-ddfb-452a-402c-08df393311d8
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 22:46:01.6332
 (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: z2T5MT7xx4rLLHWOGiiNEB3yjvp6wembMOPLqnWjAmrDzy6Ut1JV7GsHTfjdxgLO2yWcXfGiWRAIddyEOsfB5pKj4IbvvAxdRCRMDGuLxGk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: EAYPR03MB989253
X-purgate-ID: tlsNG-c1860d/1793659565-D5F4787B-8E976612/0/0
X-purgate-type: clean
X-purgate-size: 4957

On 02/11/2026 1:46 pm, Andrew Cooper wrote:
> diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
> index 4b0debfa9a2e..2224f1834741 100644
> --- a/xen/arch/x86/hvm/svm/intr.c
> +++ b/xen/arch/x86/hvm/svm/intr.c
> @@ -30,12 +30,14 @@
>  static void svm_inject_nmi(struct vcpu *v)
>  {
>      struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
> -    u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
> +    vintr_t vintr = vmcb_get_vintr(vmcb);
> +    uint32_t general1_intercepts;
>      intinfo_t event;
>  
> -    if ( vmcb->_vintr.fields.vnmi_enable )
> +    if ( vintr.fields.vnmi_enable )
>      {
> -        vmcb->_vintr.fields.vnmi_pending = true;
> +        vintr.fields.vnmi_pending = true;
> +        vmcb_set_vintr(vmcb, vintr);
>          return;
>      }
>  
> @@ -51,6 +53,7 @@ static void svm_inject_nmi(struct vcpu *v)
>       * SVM does not virtualise the NMI mask, so we emulate it by intercepting
>       * the next IRET and blocking NMI injection until the intercept triggers.
>       */
> +    general1_intercepts = vmcb_get_general1_intercepts(vmcb);
>      vmcb_set_general1_intercepts(
>          vmcb, general1_intercepts | GENERAL1_INTERCEPT_IRET);
>  }

An observation.  The code generation for this is terrible.

ffff82d0402e8640 <svm_inject_nmi>:
ffff82d0402e8640:    48 83 ec 18              sub    $0x18,%rsp
ffff82d0402e8644:    48 8b 87 80 05 00 00     mov    0x580(%rdi),%rax
ffff82d0402e864b:    48 8b 50 60              mov    0x60(%rax),%rdx    // Read vmcb->_vintr
ffff82d0402e864f:    48 89 54 24 08           mov    %rdx,0x8(%rsp)     // Spill once
ffff82d0402e8654:    48 89 14 24              mov    %rdx,(%rsp)        // Spill twice
ffff82d0402e8658:    81 e2 00 00 00 04        and    $0x4000000,%edx    // Test vintr.vnmi_en
ffff82d0402e865e:    75 28                    jne    ffff82d0402e8688 <svm_inject_nmi+0x48>
ffff82d0402e8660:    b9 02 02 00 80           mov    $0x80000202,%ecx
ffff82d0402e8665:    81 48 0c 00 00 10 00     orl    $0x100000,0xc(%rax)
ffff82d0402e866c:    80 a0 c0 00 00 00 fe     andb   $0xfe,0xc0(%rax)
ffff82d0402e8673:    48 89 88 a8 00 00 00     mov    %rcx,0xa8(%rax)
ffff82d0402e867a:    48 83 c4 18              add    $0x18,%rsp
ffff82d0402e867e:    e9 9d a9 f1 ff           jmp    ffff82d040203020 <__x86_return_thunk>
ffff82d0402e8683:    0f 1f 44 00 00           nopl   0x0(%rax,%rax,1)
ffff82d0402e8688:    80 4c 24 01 08           orb    $0x8,0x1(%rsp)     // set vnmi_pending=true, on the stack
ffff82d0402e868d:    48 8b 14 24              mov    (%rsp),%rdx        // unspill
ffff82d0402e8691:    80 a0 c0 00 00 00 f7     andb   $0xf7,0xc0(%rax)   // Clear vmcb->_cleanbits.tpr
ffff82d0402e8698:    48 89 54 24 10           mov    %rdx,0x10(%rsp)    // Re-spill to the other stack copy
ffff82d0402e869d:    48 89 50 60              mov    %rdx,0x60(%rax)    // Write vmcb->_vintr
ffff82d0402e86a1:    48 83 c4 18              add    $0x18,%rsp
ffff82d0402e86a5:    e9 76 a9 f1 ff           jmp    ffff82d040203020 <__x86_return_thunk>


That is, vintr is spilled to the stack twice, with one being a
write-only copy.

Changing the static inline accessors to macros drops two words off the
stack, but there's still one vintr on the stack, and it's the one which
accumulates setting vnmi_pending=true.

The only way I can get the code generation to work nicely is to bypass
the getter/setter entirely.  With only the getter, there's still a dead
word on the stack which doesn't get accessed.  With no vintr local
variable, we get this:

ffff82d0402e8620 <svm_inject_nmi>:
ffff82d0402e8620:    48 8b 87 80 05 00 00     mov    0x580(%rdi),%rax
ffff82d0402e8627:    f6 40 63 04              testb  $0x4,0x63(%rax)
ffff82d0402e862b:    75 23                    jne    ffff82d0402e8650 <svm_inject_nmi+0x30>
ffff82d0402e862d:    ba 02 02 00 80           mov    $0x80000202,%edx
ffff82d0402e8632:    81 48 0c 00 00 10 00     orl    $0x100000,0xc(%rax)
ffff82d0402e8639:    80 a0 c0 00 00 00 fe     andb   $0xfe,0xc0(%rax)
ffff82d0402e8640:    48 89 90 a8 00 00 00     mov    %rdx,0xa8(%rax)
ffff82d0402e8647:    e9 d4 a9 f1 ff           jmp    ffff82d040203020 <__x86_return_thunk>
ffff82d0402e864c:    0f 1f 40 00              nopl   0x0(%rax)
ffff82d0402e8650:    80 48 61 08              orb    $0x8,0x61(%rax)
ffff82d0402e8654:    80 a0 c0 00 00 00 f7     andb   $0xf7,0xc0(%rax)
ffff82d0402e865b:    e9 c0 a9 f1 ff           jmp    ffff82d040203020 <__x86_return_thunk>


which is a far more reasonable attempt by the compiler.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 01:07:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 01:07:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468889.1677898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO2zR-0006ji-2y; Tue, 03 Nov 2026 01:07:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468889.1677898; Tue, 03 Nov 2026 01:07:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO2zQ-0006ja-VT; Tue, 03 Nov 2026 01:07:04 +0000
Received: by outflank-mailman (input) for mailman id 1468889;
 Tue, 03 Nov 2026 01:07:03 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xO2zP-0006jU-FV
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 01:07:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO2zN-009GYs-J4
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:07:02 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae933a4-e002-0a2a0a5209dd-0a2a450c82d0-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 02:07:01 +0100
Received: from [40.107.44.125]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae933b2-f479-0a2a450c0019-286b2c7d1e33-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 02:07:01 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEZPR06MB5542.apcprd06.prod.outlook.com (2603:1096:101:cc::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 01:06:54 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 01:06:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=miXhJckf4ljoUpYxJ0hZ87M3R/Rn41i3Yg9koxG8HPatueTDIPDcvE3nmWZ2MRPurtJFXT6bIqLVPCVRUYui9ekHJ5ZxKOCBp/6i8zMeEQpde3TS+4ijTLj3zwsM4XfV9sY8zw2nwNUR0fmNR7y89Shb+tdZer8mWSNIJP/EEP4VgeH2jWkTYDbm0AWOMCqBHscSsDqortANBcomA4pks53mrZHp40Ex2/SsMXvD8/98KhwgsiOuaQCOhzQL1Bc707u3KaFzoMmHvLoyhSVuZfKZkUfUZksLomov8MTvD+V5KcnnQGSWhnYeigR1/Zkqi0FDZ+6iRTZzlWGV8JAp7g==
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=go34MtIrDoIAJ7bOKMgEXOwQawXkJ/fBGsvKPKakHw4=;
 b=fzCkmGV5h7yFm1z5zznBdECu0EN324uqlCVrSfbRF9dkkCyxjw3U8cpSDU7gkCiYgeb3gzTEyxMCsvSEB5KL/ldiiduyBTxMtAwI96v5t8ym/J8f3b3waC+ZGCUtVzY4PfgfY5oA9J/iLCSCat7oMwr2R1//DAKlEWmZ+97LOpotTcQenjmc28wuvyc2mRIZT675lvYdufKZdXvTU2YTMj4i4wxqpjthfv1nHVkmktOkjzTuQG044c5RQIEr2FwKp4tkSmovRFsyO5nU1x6j+pz1KUEsSo22v6555C2HgfIeoercEZH0xpAj44wQch2QPUeMuCWzNfQfgbRlJrjLtA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=go34MtIrDoIAJ7bOKMgEXOwQawXkJ/fBGsvKPKakHw4=;
 b=FlTb6Y0i0HKJ7Qdk4ROpN9iBp4JyR9eBWRA/MVi6dsFpudmQoz9gRItqBzpIP5pJZ9Uj0psZ8qDGtUEgidnmWGA7pAiQ658eneElSAq1R4tt9dBLWldNA0f6dx4dRkfplSV7+E9YDMFWzUxCQiYxhRVlBHXVCB86eKE1gDYEXwnqjJnt91mQ9FjzAVKr4zFCR9WITaJkM5iNRk/+tdnGACLQ25UV467IkkfQ+nZSwINOYXaUJNwpNqmFIDlk863gigaiIbp50jzAZyuMD9sLgBRTALUdFuWzTaByaaYCwJ4fpLTpUD3DeuBoPlYh1pQK66rAV4g/9AAUV05ZjIspvg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "junjie.cao@intel.com"
	<junjie.cao@intel.com>, "junjie.cao@linux.dev" <junjie.cao@linux.dev>,
	"clg@kaod.org" <clg@kaod.org>, Pierrick Bouvier
	<pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= <philmd@oss.qualcomm.com>,
	Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, Troy Lee
	<troy_lee@aspeedtech.com>
Subject: RE: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
Thread-Topic: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
Thread-Index: AQHdaqumID06mim1t02tHdx0pgsQm7ca0acAgAC38kA=
Date: Tue, 3 Nov 2026 01:06:53 +0000
Message-ID:
 <SEZPR06MB73621195AB1AF1C2EDDC20C7FC692@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
 <179362845015.3960472.7956229698285370567.b4-review@b4>
In-Reply-To: <179362845015.3960472.7956229698285370567.b4-review@b4>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEZPR06MB5542:EE_
x-ms-office365-filtering-correlation-id: cde99ac5-7aab-462a-24bc-08df3946bfcc
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|7416014|1800799024|366016|23010399003|10067099003|22082099003|18002099003|38070700021|56012099006|4143699003|261026121527099003;
x-microsoft-antispam-message-info:
 F3TYOkyFg9f7k0D5q6DRVBgzKm4YdEiM9YskMm+eDt3PgBzzIbsTjQo85g0+7OjsyyOtzoz0gOP4Vnd7aSgU1/jU5CmjfzrqWhKXsHznAO/9Xy2XzdpcYOWbNdlIdtCzQKhLook/QRqechBwP8o3FNWml9PlyaG3VEWKd6pSzI51Mn3BfOH2Qa6/nRUSBFK0MGPvVivzruTXEnG/nrD+Nx0smlJyle5ha8O1pFIsBAAZOM0UMurG3k1dEvbTNTDat/aXfv4KdLNL1V4h/TO+GdCZu3v42IIj3Bn2/uAxQGRmmqLN0eLjBdlagrl1rnr0FIMYj4hlRv/xFlj8/ekj4C83PciHy1NHoFFEQRsPlKOazbvRcCSMgdOgru0rnqNLfvGiLMf47oTUvyfmNkQlYDb+fpsoNRkpkNvshZqjmSqxFaCO7s6X+6wenBKWMHzkYRvpcD35rKZfS4fGdskGGZ1qj0fLclyK3eEm93+eqtPSItMjqwpjGD+F2eD0FGC4XUBV1ASEWvQ88n1WUmdhupbCTWLYNX6W7hK63xA/8Rvf0dT+wAmy43PsnvQ2pPUb9fTOHhYfKZg+2Dof4T0MvvWD3PyLgN5uciHx5ebXfijJlOljp1k2uieUgQVJVPMPDJ7nGPELtBnXTcDfUVrlhUhmZrfbUhggryPhTKAjU521NGxyHe4UA5Xn2IgfO3gtTKrfa/82tcm1qhjZPE9kovX7+6574OT2DCypuOlOYBU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(23010399003)(10067099003)(22082099003)(18002099003)(38070700021)(56012099006)(4143699003)(261026121527099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?VFlVZnUvUkVOWXJyL1ZINk16T0ZrSE1pVWYwYk5tTVd4YVFseHU2QW9rSmo5?=
 =?utf-8?B?aXdFNlYzVlRXQ3l3Z0daM2MxeFJJUTloOE93QUhpZFlnaitOei9vNDFTd2wx?=
 =?utf-8?B?a3dFQm5kc2RJVW1OVnBJZmFCZlZpR2Z3R0N1YmpLM0VuMVduS0hNVHhUd0ZT?=
 =?utf-8?B?MmVWSkl4QmtPcmM5WWtQZ0tYcFFGZTlhTHdKZkpaZHhpT21KdHRkNFliMi94?=
 =?utf-8?B?ZDlVT0dUUndFMGxjQWFWQ3J1SlEvd29hQmZxS0JDOTloV0Vaa2FMTGl4SlNW?=
 =?utf-8?B?KzVvb1RLYnBzSGZsb0JuK2V0MVh2V0ZMMVo5NEpKVU13QlV6NC9TRFExQlJW?=
 =?utf-8?B?VXRram4vcTgzQkhiTnNkWUdDNlJiaXA4ZVpFMURMNktXMUp2d29TYnJPQU81?=
 =?utf-8?B?Nm5mcHBTNUpzVDRGb2pjckwxTnEvMSt1MTRpMXlodGRvVUhMNFk2VExjZFRo?=
 =?utf-8?B?M1FraVh2S3AvVlI5ZklUNm9QL3BVcGc5Rlk2RndpYktGWnhVcFNJNSt2SWxv?=
 =?utf-8?B?cFdXM0NPVnFiZHBWQXpLZHdiR2xreDNJYW5HTWJLeVFsd2NSU01CUUF5TDV3?=
 =?utf-8?B?Wld0ZnZoNUVLdm9STUlvMUtoTWZMWXd2aHRqRCs2eFN1VmYzb1NiVWd4aHNC?=
 =?utf-8?B?NVYveFM5aUVzbENGd21qRjRUUWt0aHFETE94SDE0dDl5cFVYM3UxMjBmSjBP?=
 =?utf-8?B?QUFhOG5uZy9XZ2FSOS9QVjRlWEJRYWpBblpFVkJsT0RmbTdMUTFHM0ViZm9E?=
 =?utf-8?B?alRIbXNuQ212MC9GcUxMMUlYcWRyTmdSTXRhM2lrZTlUVFgydEMrTjk2YTFP?=
 =?utf-8?B?bVlCTkQyRzZveXg1VXRWSDE4cDY4UzlQSk15M2JQazJpVVFEdXhHbzBFUDdZ?=
 =?utf-8?B?dm9MMjBnNjVoREZtdk9WZGVlSmp4MGlzT1JHaUoyZzlRNmM1WjIrdTNRdmpL?=
 =?utf-8?B?VStjY3hSVWtXdDN0ZUhxTk5oa01wRnJmc0RqWm9RYzgyb2dkSHhuYWFTdHky?=
 =?utf-8?B?Qk9pc1hMZjdZRXpRZUFiZHd2ZHNjQWpsdk55ODd2ZHkwaTBqa2h3QWptV3Rp?=
 =?utf-8?B?RC9qb2E1ZEV1Q3hYeDBLcUpkcXV6dXBPVURBS2hsU0daclZPVGJyM1duOTVy?=
 =?utf-8?B?ak9jcytBZTFYWXY3OUpUV0NtWTF0Vm45UDIyajNQRTdCYkhrY0phRjQyNmM0?=
 =?utf-8?B?TVYweHIzeUhWSHZiSjlDNjZRYTZBSFUrUXpLckUwRFNFTm5qR0orTG5qd2JX?=
 =?utf-8?B?STNxLzBsS2FhZ3ZiTGcrVnZLOUJrMjZERFBZdlZsb2h5RmNvQmtYVnRCMEd4?=
 =?utf-8?B?L2JoOVZPT21tT2laOCs0MzgremU4U3c3b2d3MlJlSkU2Q1Z4VHdENEEyLyta?=
 =?utf-8?B?VURBU0VDZmJxYkFWdjlLbGo2eWV4azRQUHlqemd3SFR4a3ZTMEpZNGI3Z1E5?=
 =?utf-8?B?T2RSZ2xUNEFHbFBaTFRzTFYxOUg1MXVLdTg0R2lET0V2dHdvZUtyOHFMMVpU?=
 =?utf-8?B?dkU5K0plNW9KSzZCaEJ5bUlLZHBoRFIreVVlQkkrVFdRbFhQb05WYTVid3JI?=
 =?utf-8?B?bmplcXd3Tmw4RXZlNWZjYjU1ajNtYVgzei9yYzhqRFJBaG9LZWE5Y3gxeWdZ?=
 =?utf-8?B?cjVYaEpweEs4dEZMMXVIaTVxTGM4Z251Vk1YWm1ZZDd0aGVDTlZmUTN3S2l3?=
 =?utf-8?B?UjJzRmxpTWhtRlhBcVhLWng2SUhWbnNxdTdFL3NhekJvaFhuaVdjOHBkRjJR?=
 =?utf-8?B?amZUTXlBT3pvblVrY2dKMnF1eCtYajFMY3NYZkoyQWhHWHRXQjU0WFNNUi9C?=
 =?utf-8?B?QVF1VlkrOUpraXp3eU9JNEJiVGw3M1IrelI1eDZRc2EzT2JmSWVxV1V4ZW15?=
 =?utf-8?B?UWxxZElJWFZ2QndQdi9iQk5iNUxSZ1V4ck5ha2dUQTJXS2EwWVgxMlpRSU4r?=
 =?utf-8?B?b0xldnJqY3k2TVhweG11Ukcyek1RR3ZJVmdBeDl5MVVUZTVQZ2lWc0puckUw?=
 =?utf-8?B?RUZyeVpiZFVLU2ZoTERpdTJMc2R3R21SQjU5YkpYUGxFckRYSlJCMjUvWEd6?=
 =?utf-8?B?S1dQRkQwTWJDbmJDbzBRLytUM3gza3VGVmpXcHhIWGxlZDFNRjJpL09QUldK?=
 =?utf-8?B?RnVqUUtvMnpIMEZ5MUZIS2g0NGdMbklVYS85ZWlaTVRRWHpzNzBpSXhBb2hZ?=
 =?utf-8?B?U284Mkc5cHk3YXB4K2ErRUVFdm95MmZjM01GNkhwN3laSzU3d1EwNERjV3M2?=
 =?utf-8?B?Qjl1R1FOQVBCUlc0b2VRdldKVEJ3NjlKdXRMWXB2bXphMzR2djIvU2oxZXNv?=
 =?utf-8?B?cUpWd2RXejdTLzJVdkoxVDV3dVF3NGhyVmd1b2d2eTVkeUl6SFhGUT09?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	cr+w5zswS/xONf2iYhN0zgzG1W9E7B8q9grTNTO4BTMqyM0BHEwp5H++wV/wjZxWUHeKDtG6LEEWr65eMIGgVF7kLy8rqMsuZHxOPpSAroITfRVQb5YDxSiQdLP6lml/dTPJf/YMzHAWxMxTgS70TP6OKitWlIde6y1rsfAOMPEXYtWIc9gVG7HIXRoL56duswsD/G9PfzGwldm3RTlGQiXLgvYIpEmVUFQ87OvHzlfeUIMZFSUT4Gc2/izzc3z9wKJUYjPb76GmGF5BMQRmbZ27lT8svzuURBmOC2AQP0EJ1m4V0KV/PamZb5YFSQycWizv5yS5tIb2z1cUAmwTKw==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cde99ac5-7aab-462a-24bc-08df3946bfcc
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 01:06:53.7663
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ys712lVqTBf37v7IXyPJf6ZHjJZy+O+Njkyvayiy7pSl5RV4z4a4ZiCws45sS2K2tPSpKvim8M2FBmxvm4Ir7V9YXUF6q9s+zoQGL9Xd5TQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB5542
X-purgate-ID: tlsNG-d25034/1793668021-018C5A5B-9C565AFF/0/0
X-purgate-type: clean
X-purgate-size: 1122

DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjggMDkvMThdIGh3L2FybS9ucGNtN3h4OiBLZWVwIHRo
ZSBhdXRvbWF0aWMgaHViDQo+IA0KPiA+IFRoZSBPSENJIGNvbXBhbmlvbiBoYXMgb25lIHBvcnQs
IHNvIGEgc2Vjb25kIGRldmljZSBvbmx5IGZpdHMgYmVoaW5kDQo+ID4gdGhlIGh1Yi4NCj4gPg0K
PiA+IG5wY203eHggaGFzIG5vIHZlcnNpb25lZCBtYWNoaW5lIHR5cGUsIHNvIGNvbXBhdCBjYW5u
b3QgcmVhY2ggaXQuIFR1cm4NCj4gPiB0aGUgcHJvcGVydHkgb24gaGVyZSBpbnN0ZWFkLiBUaGUg
Y29tcGFuaW9uIHNoYXJlcyB0aGUgRUhDSSBidXMsIHNvDQo+ID4gdGhlIEVIQ0kgY2FycmllcyB0
aGUgcHJvcGVydHkuDQo+ID4NCj4gPiBTdWdnZXN0ZWQtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhl
bEByZWRoYXQuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEphbWluIExpbiA8amFtaW5fbGluQGFz
cGVlZHRlY2guY29tPg0KPiA+IE1lc3NhZ2UtSUQ6IDwyMDI2MTEwMjA5MjIwMS4xNzI5MjQ1LTEw
LWphbWluX2xpbkBhc3BlZWR0ZWNoLmNvbT4NCj4gDQo+IFBsYWNlIHRoaXMgcGF0Y2ggYmVmb3Jl
IHRoZSBwcmV2aW91cyBvbmUsIHR1cm5pbmcgdGhlIGRlZmF1bHQgdG8gZmFsc2UuDQo+IG90aGVy
d2lzZQ0KPiBSZXZpZXdlZC1ieTogTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1
QHJlZGhhdC5jb20+DQo+IA0KVGhhbmtzIGZvciB0aGUgcmV2aWV3IGFuZCBzdWdnZXN0aW9uLg0K
V2lsbCBkby4NCkphbWluDQo+IC0tDQo+IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1
cmVhdUByZWRoYXQuY29tPg0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 01:29:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 01:29:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468899.1677907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO3Kz-0002n7-OS; Tue, 03 Nov 2026 01:29:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468899.1677907; Tue, 03 Nov 2026 01:29:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO3Kz-0002n0-Kj; Tue, 03 Nov 2026 01:29:21 +0000
Received: by outflank-mailman (input) for mailman id 1468899;
 Tue, 03 Nov 2026 01:29:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xO3Ky-0002mk-BM
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 01:29:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO3Kx-00BJNT-OT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:19 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae938b5-8faa-0a2a0a5109dd-0a2a4509a8f0-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 02:29:19 +0100
Received: from [52.101.127.74]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae938eb-be1a-0a2a45090019-34657f4a2537-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 02:29:19 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by SEZPR06MB5642.apcprd06.prod.outlook.com (2603:1096:101:a6::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 01:29:13 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 01:29:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=NhGTv+5rNlEjyIDzWeRUsaCRzRwrCSAtDCBKNMTp75qALYdLi6ShGzSenkBXosP9sUdULB1uFAy/mRudQMSC1Bi62Kl2gIZEYTylvGSJ6ugZdLr5Pj/4dmxk8NfLrpUW3NgVdlv+wsP2yF9FE0RUcqt94gWYCxQgC+oqg3NkVWooY2RJhgM2Cm755h7LsXFfG4KDNUlfgYoxSAX/zx3ynJWFzxM+0Vtz5RZxVLhWlpN8FXzKQOw3+1JT+CufmyRsE7a7YOz9+2m5QQ5yE1iTMdknHlhyiqfOP8RrzqEvtWxhVuT+zs3IpxlbV+GI9gu3zgCu+j16SWvCJACYC90EHA==
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=GgG99Qy7/S+pgOVttA4wUNPSI3JdtSgVJ1Yo+vE0UPk=;
 b=Rh50sgGv/CJFJ6IRxcsb7BWVlwoFckXWlh8uMB+TLAzOhwCthtt8vsNpzBrzMuGoX4EOQFQQh0F6+ADd8Ya82PnyMnSU7diQIsh7x9hsAF2OqlhnjAxIZyPSIryZh7ypubYK0BXl7uSlo7UykFJZ7s0Im2YTuFAMRk4eaywbuJrAi6JaifHOGwCxX5oRbSQ6gdf1cix05ohAXZaQUjRHneepOUTteeJYDnh0hPfGsjIChgNOJ4P1kTy5LIoVJU1k/HV5kpYgxKpy0TcVusli32G8JVwuzGBLNhMGx0o0uQWd03Aq3GEpryne4miObJmT538FRBOaPpmx4T+DGKJ5MQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GgG99Qy7/S+pgOVttA4wUNPSI3JdtSgVJ1Yo+vE0UPk=;
 b=fMCIRi/o+uYtjEqidMFTAhavrDUssY3proBo6zQ8XsmK4ZQDA99wgfSWVvRpaedWMcJU4Yt3XxjGJyrcXvpU66uvu+HaWPTfsfN7RCK36UC20TNeTKjwnYQpQ57KZWugyiHFO4T1l7WeJ701d9zsAor+SF57JjFnPf7axHy52AYYpNZTzsoyLZN+GRtwHrkfJVwW+kuVtZs8wjDYslZ6/PocrUKGxzqxqLTvDChKnuf45cQOIPCjPDcap0DfORFcrDRBqhlwjBunSWJsmzkfDhJQkz4Y6mReQ7sGi128+LqkFxFsj/431m+XKtIVcLBwPZ8Oq1qsICIBqUlhojksGw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "junjie.cao@intel.com"
	<junjie.cao@intel.com>, "junjie.cao@linux.dev" <junjie.cao@linux.dev>,
	"clg@kaod.org" <clg@kaod.org>, Pierrick Bouvier
	<pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= <philmd@oss.qualcomm.com>,
	Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, Troy Lee
	<troy_lee@aspeedtech.com>
Subject: RE: [PATCH v8 05/18] hw/usb/hcd-ohci: Add an auto-hub property and
 leave it off
Thread-Topic: [PATCH v8 05/18] hw/usb/hcd-ohci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaquj7EwX/4j+EkiS0LfitZAyFLca0acAgAC+S3A=
Date: Tue, 3 Nov 2026 01:29:13 +0000
Message-ID:
 <SEZPR06MB73620A5E8EB72452ADC9D933FC692@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-6-jamin_lin@aspeedtech.com>
 <179362845010.3960472.4266154712960924675.b4-review@b4>
In-Reply-To: <179362845010.3960472.4266154712960924675.b4-review@b4>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|SEZPR06MB5642:EE_
x-ms-office365-filtering-correlation-id: 20081860-5679-4bf2-2f4b-08df3949de29
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|7416014|376014|38070700021|4143699003|56012099006|261021121427099003|10067099003|18002099003|22082099003|261102123227099003;
x-microsoft-antispam-message-info:
 0UvYkuXHS6vDyNWLSUDsgUMXUpH3zH8xJBVGTh0js235T9HtYNNBNpSC1hTCW651g2dPigUS0coqGWDtgSDgZx5bBLREDN1e15megyqQA4OnMvu/+TjE0ab87TcPTxdidEks8s3nCNRX5wV8JweZ2zK+Ve1ygcUtm1nNXYfUIV13Ov1qHxs5hpA7tPmPRD2Q8sFSdf8MYiqNlYNx66WtdyqzNWUua8+FjKnCS77Up3xWmlCK5rCexUID2HMrALSUVz3sZzQbHGaJy3+oTDgV1Gk8XUoIaGxRaH+baLoO102SodXmkUriM0Sl9G47xcrrx8Dodr0xW6D40ASeFu6TqIOEGlEOA2fhqD5YUOSt1mLQA5JwTElitJXthWbEXHQzDpNl/VfgFgKws4VKxPoSTN8qnzXfFQzaOpxQkBPOu1ZnOrMoF4sylTenT0wecer9uNNZTX8vP3YZ9I2m9h8u3CoKeiy9Wwj8FJdCqcOlt3dqsyU0IQoqEORugr6yJv1tl3S55wukCMmRrPZpb3/I1efh0X2I+uMG0Gq9mz/wNlTH2LcF3Wfb+zrB8cGUm7Znw5AYYMRwE0FLvhuDB5SjTDTPumUW6gw44288ZwtYvsqNhbhHSU1N1cPqOfjC9dMsKX7u3L4KslKcuueiUhTTS21Q3sfdaemqRDJeW0nlW/SVBAM2uAwmgNMaFe1xKnudj7i0InuyqUUzUT9RRXDbjs9s6xYNpLgjd844IaARjAU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(7416014)(376014)(38070700021)(4143699003)(56012099006)(261021121427099003)(10067099003)(18002099003)(22082099003)(261102123227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?S2dGWEVBcGRpU05XN3FiRnNlTGZpQnVMMHF0VU9tVmlKUC9PaTk5Y28zZGd6?=
 =?utf-8?B?b3gxWXU0OUZVOUpORlFNQ0Q3bkZCa1RkemV0emR3TVc2dklKRmpxbXpUUDFh?=
 =?utf-8?B?eXhyVlNPcVAvUFhvRWthaFNheEZka0JOdVNINnhxMXFSKyszT0kzOXlEVFpY?=
 =?utf-8?B?NWpzTXNlcndOQkZvZEF6SjlEUDJrSlpueENSTld2aVUyMTNMUlN5bG1wcU4r?=
 =?utf-8?B?bGl3SGd1eEU4RnJkMWRQVjhuTHNLejEyQ2g3eUs0MzN1T0U0MDRRSUhFK3N0?=
 =?utf-8?B?Z2l6L1pya1o1NkdDZHdHLzI1Y1FCNkc5SDEzYlJNVXlDZENyVlBLc0RsQk9G?=
 =?utf-8?B?bjlSdTViVmNBZW15RU1aaDFqMzFnOGZDWXZxdU1OMFQxYytGRkF5ZlY4N1Vl?=
 =?utf-8?B?LzZRL0tYbHFPenRFTzNWaHcxbFZYdENzZ0pBVUJ0UHlIYkNyY0lIV2J2RTFY?=
 =?utf-8?B?Sm9RallqdXFQS0VqbGpSeFZnS08wYXprL3pmTmtZY3czS1RaaGZhd0YyWFJS?=
 =?utf-8?B?aG92WUttU0JiZW1EbjhYUFpEZ09ycmwraGNrTDZCaDRKenBQYk1CUXF2M25X?=
 =?utf-8?B?U0RJS3Z4UmZjeUtrMjBnTW5lV1ZCSWF1djNaejNKQ2RCN1RHbXNaeUY2dE90?=
 =?utf-8?B?UWU2QzN5MEkyQkgzMXZHZ1YvYVZLMHo4TGJHc1ZTa1RGVkk0ZjhCdzJFQ29J?=
 =?utf-8?B?djBuYkV6ODM3dTM0b2FGK0NzcFhNUGkrRXNBZGpMRXl3VE5STndHQTVuWHQ4?=
 =?utf-8?B?MzVKRWpUSE5SZXdpS3U2QjEzM28xTVVWQ3F1dS9JRUo4V0VGSFpIbEY1QXBi?=
 =?utf-8?B?Y1pvSmFnV1M5enR6dU0xeGZWeFdJeXlwNXpMNTB4T1kxRDcvL1krSWhKNW4y?=
 =?utf-8?B?by9ObUNGVlovL3hDcnlPOWlQMklycHNmS2toU0l1L1lJcHkzVlpXaU9EamNo?=
 =?utf-8?B?WGQxb3pGa3dtd2VmWmQ4OFVTdzBBR3gwRWtmTkNJRFI0NTlJaThRcGkzZFBr?=
 =?utf-8?B?UXpPMkRLR00wd1ZPYjlHSzVOQ2dML1lTSjN3ei9HRkJJREo1b2NzaHYxL2cz?=
 =?utf-8?B?UWQ5OFNDQmVBQkJRR2xQUG5NM2hMMEtKdXZwdzNSSGllemUxZmtkc0ViSkJ6?=
 =?utf-8?B?Y0lqeS9hQjJjR1RWcG40ZGY1dC9WY3g1Q0Fzdll1MDRZMlpXZTVQOGJhY3FG?=
 =?utf-8?B?UGt1em55dml6NFY4eEZ6UU5IbXAvckRLS05sc1dLN2hGcXpUdTRNR2ZvMnJ6?=
 =?utf-8?B?TGsxZW1oV0syMC9YYmFlZWZDV1NwbUNZSEtjTkE0WFo0Mjc2K1VjWkZ0ZFQw?=
 =?utf-8?B?bTd1U084blZ2eHhvNm0xMWxLUWpNblFHTmpmdHpEUlZVaHc5a2RjZUxoNTVm?=
 =?utf-8?B?NXZEdjBYRk1Wcm9vT0ovMjJvaXJHcnBkMk45UzkvcEtETCtUVVJNRnJmOHdP?=
 =?utf-8?B?RUhvTFNmbTVyT3RRbDAzbXJ3YUk5Z1VLYy9rUklYMjBUNC9zMmc5cStmZG9H?=
 =?utf-8?B?NEtwWmdiTWthRW9zTkFreG56MGtkN0o4YmhURUxVOEYwZU1teGRwMDZsUmMv?=
 =?utf-8?B?OW95WkI4VGJuazBjaU41NmxYK0plTkl4ZU0reHppdnFSOTg1cjcwY3VWNWpC?=
 =?utf-8?B?alFjUE01ODBmTk9ZN3o3Uzl5QWx4a1M2aUk4YS9scGFqR2R2MFpOTzN6VUR2?=
 =?utf-8?B?aWt6Wit6RVNvenBhM0lVM1ZxcFFHeERYUjVNcHU1YzlBUWV4VFV1b1ZORHlW?=
 =?utf-8?B?NVZyOHNYWXUvWC80czUxajVYeTZvZm9TK2xjNmV5eXV6TENTWXl0TU5tektq?=
 =?utf-8?B?Qk9LRmVvcE5vUkRVYi9DLzZ1UGpnNXBhTmUzMnE3OVltVFlBSWZtY21PR1Y0?=
 =?utf-8?B?dUdMeU5BWjBSSHp0elZIYkx4Sno2TjhLNW5TcW1GejUvWEJsSFJBZEdvMWpJ?=
 =?utf-8?B?My9HaHZ4dFhKdWxTZEhoV2ZsNTd1YVcvUXN5cFlEaXVtTnpIdkZodS83Vms2?=
 =?utf-8?B?VXdJMFhwVGZ1eCtjdDZNclV6cUNzN28yM2tuOEhhbVJISDVOelVLeWczQms0?=
 =?utf-8?B?OTI0MDRsQm10UWE2TVRqSzdVSkdhcGlUSWNwSVRCYnhzZCthK3puQ1RPM2tO?=
 =?utf-8?B?am4zWjJIRk1JbEJLVmRRZUVBMWY3VWpaSERSU3FmR3B4MkY3bFo2Y2FnaVJ3?=
 =?utf-8?B?VkEwV1hXS0dicld5V205UllQNkhZWjBJeUFQQzJTQlk3cUNtc3pZbnhWdHlr?=
 =?utf-8?B?WnQ4Mzl0WG1ZZW52RzN6emo5ZDYzY1VEZUtNR1BrcElKMXFqcU9TZFZhTzEv?=
 =?utf-8?B?dWk4RTZicWZqeVIwK29rc0RtcXJIQnJzd1dXcnRIcUNKcGZPcmNGZz09?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	PR1fHkmX23QBrWH0RmuxPy0ZtdO+rMkVApm8ivVIXhqFZnoXJ2bIv//gLAzsvarXyaCWDbwE42h1giekqhumOil5145rjLShNqowfZO45tPQE2/+GKJ3TQi5iAe+bLBRvpSPQ5k41gVlnNu4opTacpYSYWnrVpRcZvl74mpOp5540NnJm85UO4+NNgveUVrDsgjSdy61Ae6xXtYZjB2mXdptArdCWp7+TpL6rsOV46Dhsj2u84zHMp1B/AubpTmOPqHznTMEX9Bk4Y3LwYkYnIf3eEMXvZYSll65oX6Ij9Itsn6cV0wSAsZYGMbPEB/dzSqNg4Z6+a7StHRSqK+Xwg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 20081860-5679-4bf2-2f4b-08df3949de29
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 01:29:13.2361
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: qA3B4+PE0N3Il0q3VctWCGHOemhZrcRyTcWOl+HS+zatsGshOIbjfFhmQhYMdhPn2UBSkn4PWRCukZh/Ru9FqViGFe5PuZn9geX9U66O6zU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB5642
X-purgate-ID: tlsNG-bad1c0/1793669359-FC411034-511A77FF/0/0
X-purgate-type: clean
X-purgate-size: 2580

SGkgTWFyYy1BbmRyw6ksDQoNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2OCAwNS8xOF0gaHcvdXNi
L2hjZC1vaGNpOiBBZGQgYW4gYXV0by1odWIgcHJvcGVydHkgYW5kDQo+IGxlYXZlIGl0IG9mZg0K
PiANCj4gPiBBZGQgYXV0by1odWIgYW5kIGxlYXZlIGl0IG9mZi4gaHdfY29tcGF0XzExXzEgdHVy
bnMgaXQgb24gZm9yIHBjaS1vaGNpDQo+ID4gYW5kIHN5c2J1cy1vaGNpLCBzbyBhbiBvbGRlciBt
YWNoaW5lIHR5cGUga2VlcHMgdGhlIGh1YiBpdCBoYXMgdG9kYXkNCj4gPiBhbmQgYSBndWVzdCBz
YXZlZCBieSBhbiBvbGRlciBRRU1VIHN0aWxsIGxvYWRzLg0KPiA+DQo+ID4gcGM4NzU2MC1vaGNp
IGlzIGl0cyBvd24gUENJIGZyb250IGVuZCwgbm90IGEgcGNpLW9oY2ksIHNvIGl0IGRlZmluZXMN
Cj4gPiB0aGUgcHJvcGVydHkgaXRzZWxmLg0KPiA+DQo+ID4gQSBjb21wYW5pb24gT0hDSSBhZGRz
IGl0cyBwb3J0cyB0byB0aGUgRUhDSSBidXMgaW5zdGVhZCBvZiBtYWtpbmcgb25lLA0KPiA+IHNv
IHRoZXJlIHRoZSBFSENJIHByb3BlcnR5IGRlY2lkZXMuDQo+ID4NCj4gPiBTdWdnZXN0ZWQtYnk6
IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEph
bWluIExpbiA8amFtaW5fbGluQGFzcGVlZHRlY2guY29tPg0KPiA+IE1lc3NhZ2UtSUQ6IDwyMDI2
MTEwMjA5MjIwMS4xNzI5MjQ1LTYtamFtaW5fbGluQGFzcGVlZHRlY2guY29tPg0KPiA+IC0tLQ0K
PiA+ICBody91c2IvaGNkLW9oY2kuaCAgICAgICAgfCAxICsNCj4gPiAgaHcvY29yZS9tYWNoaW5l
LmMgICAgICAgIHwgMiArKw0KPiA+ICBody91c2IvaGNkLW9oY2ktcGNpLmMgICAgfCAxICsNCj4g
PiAgaHcvdXNiL2hjZC1vaGNpLXN5c2J1cy5jIHwgMSArDQo+ID4gIGh3L3VzYi9oY2Qtb2hjaS5j
ICAgICAgICB8IDEgKw0KPiA+ICBody91c2IvcGM4NzU2MC1vaGNpLmMgICAgfCAxICsNCj4gPiAg
NiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9o
dy9jb3JlL21hY2hpbmUuYyBiL2h3L2NvcmUvbWFjaGluZS5jIGluZGV4DQo+ID4gZjc5MzM3ZTdk
Nzc0Li4yMmQyYjgzNDU5NWEgMTAwNjQ0DQo+ID4gLS0tIGEvaHcvY29yZS9tYWNoaW5lLmMNCj4g
PiArKysgYi9ody9jb3JlL21hY2hpbmUuYw0KPiA+IEBAIC00Nyw2ICs0Nyw4IEBAIEdsb2JhbFBy
b3BlcnR5IGh3X2NvbXBhdF8xMV8xW10gPSB7DQo+ID4gICAgICB7ICJwY2ktZWhjaS11c2IiLCAi
YXV0by1odWIiLCAib24iIH0sDQo+ID4gICAgICB7ICJiYXNlLXhoY2kiLCAiYXV0by1odWIiLCAi
b24iIH0sDQo+ID4gICAgICB7ICJwY2ktdWhjaS11c2IiLCAiYXV0by1odWIiLCAib24iIH0sDQo+
ID4gKyAgICB7ICJzeXNidXMtb2hjaSIsICJhdXRvLWh1YiIsICJvbiIgfSwNCj4gPiArICAgIHsg
InBjaS1vaGNpIiwgImF1dG8taHViIiwgIm9uIiB9LA0KPiANCj4gU28gaXQgYWxzbyBuZWVkcyBw
Yzg3NTYwLW9oY2ksIG5vPw0KPiANCg0KV2UgY2FuIGFkZCBwYzg3NTYwLW9oY2kgdG8gdGhlIHRh
YmxlLCBidXQgaXQgd2lsbCBub3Qgc2V0IGFueXRoaW5nLg0KDQpod19jb21wYXRfMTFfMSBvbmx5
IGFwcGxpZXMgdG8gYSBtYWNoaW5lIHR5cGUgdGhhdCBhc2tzIGZvciBpdCwgYW5kDQpocHBhIGhh
cyBubyB2ZXJzaW9uZWQgbWFjaGluZSB0eXBlLiBDMzcwMCBpcyBqdXN0ICJDMzcwMCIuIEkgYWRk
ZWQgdGhlDQplbnRyeSBhbmQgYnVpbHQgaXQ6IGF1dG8taHViIHN0aWxsIHJlYWRzIGZhbHNlIG9u
IEMzNzAwLCBzbyB0aGUgZW50cnkNCm5ldmVyIGZpcmVzLg0KDQpUaGFua3MsDQpKYW1pbg0KDQo+
IC0tDQo+IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPg0K
DQo=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468934.1677962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gh-0007qQ-91; Tue, 03 Nov 2026 02:28:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468934.1677962; Tue, 03 Nov 2026 02:28:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gh-0007qJ-4T; Tue, 03 Nov 2026 02:28:59 +0000
Received: by outflank-mailman (input) for mailman id 1468934;
 Tue, 03 Nov 2026 02:28:57 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gf-0007jR-QR
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gf-009OZN-7M
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:57 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946be-bab6-0a2a0a5309dd-0a2a4505c0c4-32
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:57 +0100
Received: from [209.85.219.53] (helo=mail-qv1-f53.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e8-4cb1-0a2a45050019-d155db35e98c-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:56 +0100
Received: by mail-qv1-f53.google.com with SMTP id
 6a1803df08f44-91c67992ce5so27746786d6.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:56 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91ca7b779bdsm105433276d6.0.2026.11.02.18.28.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672935; x=1794277735; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=sPhoPgLC+8GlCU41+5ydGuziU72t8bYzLKeHnMqsGwE=;
        b=kK5IkJRLTIbsagTFDfiRsVqC45NZYCGAjO7bexZGI9llKknu57E8pIpa8u7tRL0h92
         4dFgAcspyAWd96Zir5QUTzzJ8vx4bPEazj0IVSJXsSdebTd02v3eUzt7wFa5wVttfP3Z
         VIGADzWywlQ6KfiLJK3OKMZxvlZ86GfSZw4Y8sy2jLjl9KPJAmpTa31V/pdzf+BgaETK
         KhUHhuDX8uRQIqRhn5vGeuXJ4sNSL0Y+wqHNbYLPqtM7Kk9AjybU8sACSqf3QNcp/U0F
         nKPm6CBG3OIPpPhPRXxAuZ8xJgQByJ9gZvvyHoA4gaHi9iVGKtGzYXtHygAaTuT6iUKv
         vL0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672935; x=1794277735;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=sPhoPgLC+8GlCU41+5ydGuziU72t8bYzLKeHnMqsGwE=;
        b=bVIaIEta88G6NRXy45IF9bawA1b/xO3DZfPVG0BxlkCTatAZ1YkmT1Mf4QIKwgq0jA
         uKlFp3jmPogcNdwHKHhABjOARYib02Ua8PKqZREy4vFEDBeB7Q+VRUzCL7anSol1dJrs
         k8z6WUHnfgyGl9+LID21eAiTGRpdO5qytL69PCN/yq9qM/AvpwPJBxgXDxHjvoAT7hNg
         olU8Ho+f4Qi6jPzQ2OHLN+2L9Dcfn002LVW2YHK/6CIwNI8At27hqWDo87cPBs0dXV0U
         U6cWbwu9zszimJxiDUG8abN29Dq0YFtRhIs1CasDtJC1YaiZo8iNRwT4b+q7a82p4YJP
         /CQw==
X-Forwarded-Encrypted: i=1; AKwUvBzPJ7T+EsgflnaeQqcBj+7Zh7Z7uUV27Fy0Y1MwuCuQv+MRt/XDOP+X3T8dCsp8aRVk+qVbNNM4T24=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+sBe4BZWBL40VJM/jGCS8p0cN3ZHcsL7hKurO9fjJqRvEm7EnR
	+3DleRy35zMSmyrnA7IuUfVUqQyDqltu1gs9aA5rWjGATpCA+bz2Njs8AuFivSiyIA8=
X-Gm-Gg: AYBFou1JuyTvffHR2jA1uBuwqT4xG3mx9CoVgfK0tbkP+uKqw+nAxEXCwXeGQUIli9S
	W5Zut76/oev/KgPWQ5gltfdIcAJHvh9AoWfXERjerKOj0AsZ+HC/Sh8FoQbo8SrAa2o6Qx32/a0
	5jEMWhjrI46ef4Pg/SBJk1uPN5ECFi6lANWb3+fykZEnp0POblHI0Z2KkIGGJ4KC8IKFHZIIVAb
	eEm0b+7vDq4iPD9IXiUlP74A2NVLe/+SRH7LgtR1DIk5snKYds0+hflzYOIdq7+5WVp7ypPlcRO
	Nlj5xFeSX4gFQUVFgAHCuUoCku61XCnaQpAhTSqXBUM2GlLkpVcY9D8jeLype0bG1OHxuf9EdTN
	1bp9LE3O8TG1ClkJ4yOBxyk42d55b26VMSj4lvi/gkDkeDWXn3mX+nubd8N3pqO5iCPRLj3sFCZ
	O/Pl4UTC0Gs5M5tY3RUDwpHkf5TztFWyThmWmdW4ASSuh+LJCjqpIFtlBe9NUu5tk0YbLTjvh+U
	AutdiKi9hphlR73tAd6X+UQE5AP/Yqb2VNx2GqNYmf6QJwerBB8jYWIJUHjv+J8aVVh9M/YyEFy
	5rACqi0C5srJ1tmjuPQ/YUjxVM/j581QJJod7Rr4hjQpOg==
X-Received: by 2002:ad4:4ead:0:b0:912:517b:7bdf with SMTP id 6a1803df08f44-91ca4b92850mr197093996d6.42.1793672935525;
        Mon, 02 Nov 2026 18:28:55 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:31 +0000
Subject: [PATCH net-next v3 05/15] net: skbuff: drop hw csum if trim can't
 checksum tail
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-5-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=2083;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=WIgfTZtqwaWkzQDUXyCO+jFusNbjYdApARwauRRfo24=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QKW99vHsClamyUP4X27NpnKqyTYOkfRWB4KW7NXTD/O0D66lYe+SBZBVME9SfN/NW1ccijRiLzr
 0OXJ6VI31mQw=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-c201ff/1793672936-728B62A1-2A03643C/0/0
X-purgate-type: clean
X-purgate-size: 2085

For a CHECKSUM_COMPLETE skb, pskb_trim_rcsum() subtracts the checksum of
the trimmed bytes from skb->csum.  It gets that checksum from
skb_checksum(), which returns 0 if the trimmed range runs into an
unreadable frag_list member or past the end of the skb.  skb->csum then
still covers the trimmed bytes.

commit 2e357f002c61 ("net: Avoid checksumming unreadable skb tail on
trim") handles an skb that is itself unreadable, but not a readable head
with an unreadable frag_list member.

Use skb_checksum_full().  When it fails, do what pskb_trim_rcsum()
already does for an unreadable skb.  Set CHECKSUM_NONE if the remaining
packet can be read, so that software checksums it, and fail the trim
with -EFAULT if it can't.

The stale skb->csum was only reproduced with a hand-built skb in a test
module.

Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 5f997edf3519..68801a4f471b 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2821,9 +2821,23 @@ static int pskb_trim_rcsum_complete(struct sk_buff *skb, unsigned int len)
 	int delta = skb->len - len;
 
 	if (skb_frags_readable(skb)) {
-		skb->csum = csum_block_sub(skb->csum,
-					   skb_checksum(skb, len, delta, 0),
-					   len);
+		__wsum csum = 0;
+		int err;
+
+		if (!skb_checksum_full(skb, len, delta, &csum)) {
+			skb->csum = csum_block_sub(skb->csum, csum, len);
+			return 0;
+		}
+
+		/* The trimmed bytes can't be checksummed, so skb->csum can't
+		 * be adjusted.  Software can checksum the remaining packet
+		 * after trimming, as long as it can read it.
+		 */
+		csum = 0;
+		err = skb_checksum_full(skb, 0, len, &csum);
+		if (err)
+			return err;
+		skb->ip_summed = CHECKSUM_NONE;
 		return 0;
 	}
 

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468931.1677934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gb-000784-Cr; Tue, 03 Nov 2026 02:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468931.1677934; Tue, 03 Nov 2026 02:28:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gb-00077x-AH; Tue, 03 Nov 2026 02:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1468931;
 Tue, 03 Nov 2026 02:28:51 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4GZ-0006y7-J7
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4GZ-00CYCC-0A
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:51 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae94690-e002-0a2a0a5209dd-0a2a450cec40-12
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:50 +0100
Received: from [209.85.160.180] (helo=mail-qt1-f180.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e1-f479-0a2a450c0019-d155a0b4ac6d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:50 +0100
Received: by mail-qt1-f180.google.com with SMTP id
 d75a77b69052e-5363c8de563so45361171cf.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:50 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.254])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498b49dcbasm13852001cf.6.2026.11.02.18.28.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672929; x=1794277729; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=+ozleYq79PAzQSOQnNjxaTI69FhB0adJYpSCNMdxkqo=;
        b=pYzibUXI1/oW5S55eD6PggpE28QTzPpONH/OD5Ss/E5yD8cTVAy8JFC58b/XXuhtCq
         vz+Gdw4xp0HX3tFzzpZdzd+RzFmrX902jrF0lgZcRPIW/4rYTcjVKlBZ2nFVZiajyplK
         Ex1LP611Y4oChvBi5lTVOxnNonknTQiNk0otv2PosX751dqVO9OUWdTT9aTKK570oobJ
         DTBXIJ7lSIUPGS7jDYbLDVmGkc3OnnO6cN4w6pUl4ga8Oa8a93Lw+3HnNTYN/dDi/E14
         FGcRpF/aSKAY13YOhExfl1HG9OHuis9f2BfgRTwVh7l7x/otsO0ySJzCIvblKP+MAtTh
         21dA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672929; x=1794277729;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=+ozleYq79PAzQSOQnNjxaTI69FhB0adJYpSCNMdxkqo=;
        b=mfC9m6VyXXWOzTJrM1doxVP+O/0CSRAwErk1WBzUX3iNzk6jnDdHiBQYtTD2HVrcoK
         3uwo+UD8kTsk2S6r4Eix165HxXLwkkOXKycI01MzPWUbTfSV8TdZePOdv6lpCOwfORw2
         7DA6uaR2svuLFPqlm9c6DqA6g5SJyM6aX7AuBPkzAXG1fMUkkxhbH1PZOzSPhQWkkk3R
         6xRyOaZL6EB3Om2bOLtHeyQvcGYakCB8yEe/SgobyUk1vl9mws493MLyF25sbgLGUfn8
         K7Abdzu+/tWpoOQD1xMEP/zLQJCpmYW6hSOrNLiSHH44DF+CN0PuN/h+W9v2+j9cuJuX
         KJIw==
X-Forwarded-Encrypted: i=1; AKwUvBwiXTNUYpc1Bpz2K9omtTwN7ZYd4hpD3ZG3ki96GS9tUlUYp2pOOgqykXmJDYIHeT3M6f3yuRIeENE=@lists.xenproject.org
X-Gm-Message-State: AFq9FYJv4PR+/Lmrr3Y7fm2VkfvRW2COtMQ3G23dpcOOS5UNsGO8S7Vn
	0p1S8/OSmQMWh+JM+4/YyVLMbCKQnQJXim89GbTfDoYAfoPu3P20Y4A0mI+KtxOJtJQ=
X-Gm-Gg: AYBFou3ePdJnetbUbuv2SsuwxWgA9/KY9GQhGukTqAycupeFpJUb4VaNgjq4GJ80J21
	i+AOB+7CqG/fxUnHu4vDN+R4Z6plp5/Tk7vjw0f0E3Z8G/p3ZF0oq1kfqRxwnesiVOT1lw5vpnW
	w6/G8aNoU30Dphe3+QZCWPxHFGKtoI+SRtxvVUi0N+o8MNJ2KWy+vNzhEqB1S8f7vjSgZEGBt1i
	K3wmzTCBYTtRl04SICB4MyaDmRJIGmNQ/KDPnepS5/FgzJdw8OGnNiJw4Beak0Xp64JASVT73cA
	me6jcJjWDOO3xAYtQXJAf7pRFpvo59SDmQMy5aVf8OU279/VQtASEVrAwQdbhrD6J7zLrXzzkcg
	Hnz2ZRlS5mF3Ykib/q5eFxpZCrN9rQUlLbMtJtv8STEVdgL+KPEbc7vff3NjDWvdfyiWmjwimWT
	NZesJ7hfrINc93jcatjFw7HYzTwl5+ZCKfqZLTjNmtD3XeqRlypimoyPPedIui6kUihx1gWmceo
	quLpnNvvXlTFfxhzVC3T7qfwma/Md52sRWh97QABo6EfTUeYVv2t3nKDr4gFhBIa+wSytLK3s59
	O3Z9yLVz+7HbRT43u2xBGl/w9w7Ttpq+1gu/x4kpPwNOdw==
X-Received: by 2002:a05:622a:5a18:b0:535:1f5c:e489 with SMTP id d75a77b69052e-542b3c7654amr201014651cf.5.1793672929169;
        Mon, 02 Nov 2026 18:28:49 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:28 +0000
Subject: [PATCH net-next v3 02/15] net: skbuff: add skb_checksum_full()
 that reports failure
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-2-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=7462;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=iRXaavMuCCaIGwQeEKD5PODE5O9BI1CI4qAS/RRmb+g=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QFbzfrMZOtH7r3Qw/39UwgOlx0VaLuRXbKWQmLqAJvZ0BPoJPrHv+hz+CnhxLSOHCSomsdC80Mi
 ocS25mNUyyQs=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793672930-51936A5B-BF37BC5E/0/0
X-purgate-type: clean
X-purgate-size: 7464

skb_checksum() can't fail.  When the range runs into unreadable frags or
past the end of the skb, skb_checksum() returns 0, which is also a valid
checksum, so its callers can't tell a sum from a failure.

Add skb_checksum_full(), which adds the range's sum to *@csump and
returns 0.  On failure it leaves *@csump alone and returns -EFAULT, or
-EINVAL for a negative length.  It is __must_check.  Its frag_list loop
sits in a noinline function so that taking the address of a local
doesn't give skb_checksum_full() a stack protector.

skb_checksum() becomes a wrapper for the callers that aren't converted
yet, and still returns 0 on failure.  Three things change for them:

 - When a frag_list member fails, skb_checksum() returns 0 for the whole
   range instead of the sum of the parts it could read.  Neither value
   is the checksum of the range.
 - skb_checksum() only warns about unreadable frags if @skb itself has
   them.
 - A negative length returns 0 instead of reaching csum_partial().

Convert skb_checksum_help(), which can already return an error, so that
a packet that can't be checksummed is dropped instead of sent with a
wrong checksum.  The following patches convert checksum validation,
skb_segment() and pskb_trim_rcsum().  The rest will follow per
subsystem.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |   2 +
 net/core/dev.c         |   7 +++-
 net/core/skbuff.c      | 111 ++++++++++++++++++++++++++++++++++++-------------
 3 files changed, 90 insertions(+), 30 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index f4c092b78006..608c1491597e 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4282,6 +4282,8 @@ int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
 int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
 int __must_check skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 					u8 *to, int len, __wsum *csump);
+int __must_check skb_checksum_full(const struct sk_buff *skb, int offset,
+				   int len, __wsum *csump);
 int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset,
 		    struct pipe_inode_info *pipe, unsigned int len,
 		    unsigned int flags);
diff --git a/net/core/dev.c b/net/core/dev.c
index 3ac700d37e59..00a62c391056 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3665,7 +3665,7 @@ void skb_warn_bad_offload(const struct sk_buff *skb)
  */
 int skb_checksum_help(struct sk_buff *skb)
 {
-	__wsum csum;
+	__wsum csum = 0;
 	int ret = 0, offset;
 
 	if (skb->ip_summed == CHECKSUM_COMPLETE)
@@ -3697,13 +3697,16 @@ int skb_checksum_help(struct sk_buff *skb)
 			  offset, skb_headlen(skb));
 		goto out;
 	}
-	csum = skb_checksum(skb, offset, skb->len - offset, 0);
+	ret = skb_checksum_full(skb, offset, skb->len - offset, &csum);
+	if (ret)
+		goto out;
 
 	offset += skb->csum_offset;
 	if (unlikely(offset + sizeof(__sum16) > skb_headlen(skb))) {
 		DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
 		WARN_ONCE(true, "offset+2 (%zu) > skb_headlen() (%u)\n",
 			  offset + sizeof(__sum16), skb_headlen(skb));
+		ret = -EINVAL;
 		goto out;
 	}
 	ret = skb_ensure_writable(skb, offset + sizeof(__sum16));
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 4ac2b476b0a9..c5f8aca89221 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3536,27 +3536,88 @@ int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len)
 }
 EXPORT_SYMBOL(skb_store_bits);
 
-/* Checksum skb data. */
-__wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
+/* The frag_list part of skb_checksum_full().  It's out of line so that taking
+ * the address of csum2 doesn't cost every caller a stack protector.
+ */
+static noinline int skb_checksum_frag_list(const struct sk_buff *skb, int start,
+					   int offset, int len, int pos,
+					   __wsum csum, __wsum *csump)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
+
+	skb_walk_frags(skb, frag_iter) {
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			__wsum csum2 = 0;
+
+			if (copy > len)
+				copy = len;
+			err = skb_checksum_full(frag_iter, offset - start, copy,
+						&csum2);
+			if (err)
+				return err;
+			csum = csum_block_add(csum, csum2, pos);
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+			pos    += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+out:
+	*csump = csum;
+	return 0;
+}
+
+/**
+ *	skb_checksum_full - checksum a range of an skb
+ *	@skb: buffer to checksum
+ *	@offset: offset in @skb to start at
+ *	@len: number of bytes to checksum
+ *	@csump: the sum to add to; on success the range's sum is added to it
+ *
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	runs out before @len does, or if the range goes past the linear area
+ *	of an skb, @skb or one on its frag_list, that has unreadable frags.
+ *	On failure *@csump is not changed.
+ */
+int skb_checksum_full(const struct sk_buff *skb, int offset, int len,
+		      __wsum *csump)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
+	__wsum csum = *csump;
 	int pos = 0;
 
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
+
 	/* Checksum header. */
 	if (copy > 0) {
 		if (copy > len)
 			copy = len;
 		csum = csum_partial(skb->data + offset, copy, csum);
 		if ((len -= copy) == 0)
-			return csum;
+			goto out;
 		offset += copy;
 		pos	= copy;
 	}
 
-	if (WARN_ON_ONCE(!skb_frags_readable(skb)))
-		return 0;
+	if (!skb_frags_readable(skb))
+		return -EFAULT;
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 		int end;
@@ -3585,37 +3646,31 @@ __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
 			}
 
 			if (!(len -= copy))
-				return csum;
+				goto out;
 			offset += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		int end;
+	return skb_checksum_frag_list(skb, start, offset, len, pos, csum,
+				      csump);
+out:
+	*csump = csum;
+	return 0;
+}
+EXPORT_SYMBOL(skb_checksum_full);
 
-		WARN_ON(start > offset + len);
+/* skb_checksum() has no way to report failure, so it returns 0, which is a
+ * valid checksum.  Use skb_checksum_full() in new code.
+ */
+__wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
+{
+	int err = skb_checksum_full(skb, offset, len, &csum);
 
-		end = start + frag_iter->len;
-		if ((copy = end - offset) > 0) {
-			__wsum csum2;
-			if (copy > len)
-				copy = len;
-			csum2 = skb_checksum(frag_iter, offset - start, copy,
-					     0);
-			csum = csum_block_add(csum, csum2, pos);
-			if ((len -= copy) == 0)
-				return csum;
-			offset += copy;
-			pos    += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
+	if (unlikely(err)) {
+		WARN_ON_ONCE(err == -EFAULT && !skb_frags_readable(skb));
 		return 0;
 	}
-
 	return csum;
 }
 EXPORT_SYMBOL(skb_checksum);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468930.1677926 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4GZ-0006ut-78; Tue, 03 Nov 2026 02:28:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468930.1677926; Tue, 03 Nov 2026 02:28:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4GZ-0006um-3Z; Tue, 03 Nov 2026 02:28:51 +0000
Received: by outflank-mailman (input) for mailman id 1468930;
 Tue, 03 Nov 2026 02:28:50 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4GX-0006hu-TF
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4GX-009OZN-9z
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:49 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946df-bab6-0a2a0a5309dd-0a2a4502d736-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:49 +0100
Received: from [209.85.160.173] (helo=mail-qt1-f173.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e0-6ca4-0a2a45020019-d155a0adb96a-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:48 +0100
Received: by mail-qt1-f173.google.com with SMTP id
 d75a77b69052e-5361e313e63so42598121cf.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:48 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498b49ce29sm13831151cf.4.2026.11.02.18.28.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672927; x=1794277727; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ItNbbfoSMigin0nEzX5YnYh+yWL40HL4VuZt49ucLwc=;
        b=ME9KaolzjM0pMPlIz3gPR06dtDMkJRZTKvVMdA+uQesc+qSHd3VOt9hmJaDBbSmkpL
         ypG8vlsPOYZOyKCFY5cI86mIH4FlQK+oF7PpCvB38f6marJ80lRrXs2uN46RaY9p6udu
         dqqNyYVomtxrDs2MUHZc7iQm16qXmbcrBW12wejqAO1k09/6eo1jC8GZLfDAXv6A0JZN
         x+SUU4/ygwsjBbL7ll6MzCrHOQ6Nlf1T7IM8vK1zUNrrgYjrLbuABnO3pcR5LLyG5hQO
         lyxKy1kqBm2JQ3Bf8sisxamQ37ri2+mLcTKqmDFP84jvKHhLkVvxT6NZc014K7GWle6i
         Qu8g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672927; x=1794277727;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ItNbbfoSMigin0nEzX5YnYh+yWL40HL4VuZt49ucLwc=;
        b=T6wDgHnoF1UZFrxH/6SvlzZ1NC0nAlLirwN43RN6DJ9QRe/2Yid8NBxDPbQn+BHbYG
         S1Tw7UBQvmkqqUnpDjB1yGn+RpTl9i17lKHUihyeDlDFKWQi//3fH5TMH4XWjDCr90h+
         dKsNRxY8Gc4TH9/Wltt5rBULnGsJ+yr1CL3kKXmzwOYBA7I9PZRRkUZ4ZvRjUPDNLEAL
         I6mD5oUe8rdlgJIXkU1h6PKNhc2i9w/A8MTAF5gqKTO/39SCD8nrNRtw7AxJ9tXVe3BO
         Rg/+vZU9NRWuubTL4mQcvQA8vsMJgL/vDwwNrpxx2ZSyu0bQB/3GhubVEyTwnt437r29
         YamQ==
X-Forwarded-Encrypted: i=1; AKwUvByjQ/ZXRZXwjeggghgTZTfddp5H9YYLFgbtShEcKO9k8sDOGpsLg1CmAqCJXJR3HmjpuactVFV3XKI=@lists.xenproject.org
X-Gm-Message-State: AFq9FYL0PpZVWoq7XwyyGzsar0Rx/l9fI5ED48ZUqYWgPsE04J/044L6
	Q21DvyqY/WSGtG/44Jok2dcu0P+tDTTwN8RBZQEjvBVMzuUENoZR7EiOYVAQ+zZP470=
X-Gm-Gg: AYBFou2j0k0Rg8rkugt55np+K2DBMV8FHvuq2HnJqWx64zti0wT+oaC045XmdpDGdph
	t0b8NLQJwybcG2dxuV3ZUuaxq1QCeH8xRdNSeHNHIYZRQdJtp+RBYsBjVisdmG25sh3oLFa8SCB
	bDUtd0sWG3Wmv82AnCgJXkNV7yoGmY0XpAuUsG85n09iZihN8qFoK5pSqHOPotpCTi6Z2/D2V8/
	V9NumNkUyMJezVCyqwE/r6CKKmwfKmQjcEy5WGfHKaxhrzupEwXvW4ZzFnrPRt6VvxarmrEdyi7
	+LuwnG/DxzB+/N5VJV1Bu41jGIsxKLZZTX5URQJF/v2lsjTsSoJeogpa5hxyZo0HibJ9rMVs612
	SdLXbvZQmIFfqMevonZ/F/UwX2tjCS4GsmLB8RfVD/uNcIWa518Bwqdvr1tUmqY4MdbADaHiOs4
	P3jMoTQjne1YmFPXtIDKisgqkCQXMf3jroUuWrI9T5vSXbXsSkhCRFDOj6M7ZGOPppJ2UA8Zf57
	5XM9to3LUoC+UfHMl7VSGPgMCJo7AlYiImvOJYfsDjzroxcO+Xwk4MfS47wu8EulxXM9evdqll2
	PSaFVAG0Y8IWX4KJRg8BVqbK8oUpZm2tGlgnYz+qzQb/Gg==
X-Received: by 2002:a05:622a:394:b0:536:699d:9a1c with SMTP id d75a77b69052e-542b3979709mr204371611cf.2.1793672927274;
        Mon, 02 Nov 2026 18:28:47 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:27 +0000
Subject: [PATCH net-next v3 01/15] net: skbuff: make
 skb_copy_and_csum_bits() report unreadable frags
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-1-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=13352;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=+G2u4WuzqFRwukhQ5bvu8a1h5fsGccFSEyEcvJUXbLo=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QHioHkzRf9qW/+GyWuZtNQbmDIwqaFZOeLV1PK/nMSdeCk5HhZyyNtfxFqCDDkBgs6hQVxRSgTd
 IkeyQ2Cw97w8=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-720697/1793672929-F16AF2AC-A8D3A098/0/0
X-purgate-type: clean
X-purgate-size: 13354

skb_copy_and_csum_bits() has no way to fail.  When it reaches unreadable
frags, or runs out of skb before @len, it zero-fills the rest of the
buffer and returns 0.  Its callers can't tell that the copy didn't
happen.

In the !sg && !csum branch of skb_segment() that turns a devmem TCP
payload into zeroes under a valid TCP checksum, and the peer accepts
them as stream data.  It takes a device with both SG and TX checksum
offload turned off.  A test module that segments an skb with 3000 bytes
in an unreadable frag gets 3 all-zero segments before this patch and
-EFAULT after it.

Return 0 or -EFAULT, hand the checksum back through a pointer, and mark
the function __must_check.  Every caller takes the error path it already
has for a failed copy.  skb_copy_and_csum_dev() can't return an error,
so it zeroes the whole frame.  csum_partial_copy_to_xdr() no longer
checksums the bytes it didn't copy.  That only ran when the function was
about to fail anyway, and skb_checksum() warns on an unreadable skb.

The frag_list loop takes the address of a local, so it moves into a
noinline function to keep a stack protector out of
skb_copy_and_csum_bits().

Found by the Sashiko AI review of commit ab9414ed70bd ("net: skbuff:
don't leave stale bytes in skb_copy_and_csum_bits()").

Fixes: ab9414ed70bd ("net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()")
Fixes: 417261779eab ("net: skbuff: don't BUG() on leftover length in skb_copy_and_csum_bits()")
Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Link: https://lore.kernel.org/all/179148235783.434549.14322374227477832817@kernel.org/
Suggested-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 drivers/net/ethernet/sun/sunvnet_common.c |  10 ++-
 include/linux/skbuff.h                    |   4 +-
 net/core/skbuff.c                         | 133 ++++++++++++++++++++----------
 net/ipv4/icmp.c                           |   9 +-
 net/ipv4/ip_output.c                      |  11 ++-
 net/ipv6/icmp.c                           |   7 +-
 net/ipv6/ip6_output.c                     |  11 ++-
 net/sunrpc/socklib.c                      |   9 +-
 8 files changed, 127 insertions(+), 67 deletions(-)

diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c
index 5cca95869052..4f229fcecc32 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.c
+++ b/drivers/net/ethernet/sun/sunvnet_common.c
@@ -1167,9 +1167,13 @@ static inline struct sk_buff *vnet_skb_shape(struct sk_buff *skb, int ncookies)
 
 			/* copy the rest, with csum calculation */
 			*(__sum16 *)(skb->data + offset) = 0;
-			csum = skb_copy_and_csum_bits(skb, start,
-						      nskb->data + start,
-						      skb->len - start);
+			if (skb_copy_and_csum_bits(skb, start,
+						   nskb->data + start,
+						   skb->len - start, &csum)) {
+				dev_kfree_skb(nskb);
+				dev_kfree_skb(skb);
+				return NULL;
+			}
 
 			/* add in the header checksums */
 			if (skb->protocol == htons(ETH_P_IP)) {
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 6787fcf6ac3e..f4c092b78006 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4280,8 +4280,8 @@ void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
 int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
 int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
 int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
-__wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to,
-			      int len);
+int __must_check skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
+					u8 *to, int len, __wsum *csump);
 int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset,
 		    struct pipe_inode_info *pipe, unsigned int len,
 		    unsigned int flags);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 48f676411724..4ac2b476b0a9 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3620,14 +3620,74 @@ __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
 }
 EXPORT_SYMBOL(skb_checksum);
 
-/* Both of above in one bottle. */
+/* The frag_list part of skb_copy_and_csum_bits().  It's out of line so that
+ * taking the address of csum2 doesn't cost every caller a stack protector.
+ */
+static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
+						int start, int offset, u8 *to,
+						int len, int pos, __wsum csum,
+						__wsum *csump)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
 
-__wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
-				    u8 *to, int len)
+	skb_walk_frags(skb, frag_iter) {
+		__wsum csum2;
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			if (copy > len)
+				copy = len;
+			err = skb_copy_and_csum_bits(frag_iter, offset - start,
+						     to, copy, &csum2);
+			if (err) {
+				/* The child zeroed its part; zero the rest. */
+				memset(to + copy, 0, len - copy);
+				return err;
+			}
+			csum = csum_block_add(csum, csum2, pos);
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+			to     += copy;
+			pos    += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		/* Don't hand the caller a buffer with stale bytes in it. */
+		if (len > 0)
+			memset(to, 0, len);
+		return -EFAULT;
+	}
+out:
+	*csump = csum;
+	return 0;
+}
+
+/**
+ *	skb_copy_and_csum_bits - copy data out of an skb and checksum it
+ *	@skb: source buffer
+ *	@offset: offset in @skb to start copying from
+ *	@to: destination buffer
+ *	@len: number of bytes to copy
+ *	@csump: where to store the checksum of the copied bytes
+ *
+ *	Return: 0 on success, or -EFAULT if @skb has unreadable frags or runs
+ *	out before @len does.  On failure *@csump is not set and the part of
+ *	@to that couldn't be filled is zeroed.
+ */
+int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
+			   u8 *to, int len, __wsum *csump)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
 	int pos = 0;
 	__wsum csum = 0;
 
@@ -3638,7 +3698,7 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 		csum = csum_partial_copy_nocheck(skb->data + offset, to,
 						 copy);
 		if ((len -= copy) == 0)
-			return csum;
+			goto out;
 		offset += copy;
 		to     += copy;
 		pos	= copy;
@@ -3648,7 +3708,7 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 		/* Don't hand the caller a buffer with stale bytes in it. */
 		if (len > 0)
 			memset(to, 0, len);
-		return 0;
+		return -EFAULT;
 	}
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
@@ -3680,43 +3740,18 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 			}
 
 			if (!(len -= copy))
-				return csum;
+				goto out;
 			offset += copy;
 			to     += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		__wsum csum2;
-		int end;
-
-		WARN_ON(start > offset + len);
-
-		end = start + frag_iter->len;
-		if ((copy = end - offset) > 0) {
-			if (copy > len)
-				copy = len;
-			csum2 = skb_copy_and_csum_bits(frag_iter,
-						       offset - start,
-						       to, copy);
-			csum = csum_block_add(csum, csum2, pos);
-			if ((len -= copy) == 0)
-				return csum;
-			offset += copy;
-			to     += copy;
-			pos    += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
-		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
-		return 0;
-	}
-	return csum;
+	return skb_copy_and_csum_frag_list(skb, start, offset, to, len, pos,
+					   csum, csump);
+out:
+	*csump = csum;
+	return 0;
 }
 EXPORT_SYMBOL(skb_copy_and_csum_bits);
 
@@ -4001,9 +4036,15 @@ void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to)
 	skb_copy_from_linear_data(skb, to, csstart);
 
 	csum = 0;
-	if (csstart != skb->len)
-		csum = skb_copy_and_csum_bits(skb, csstart, to + csstart,
-					      skb->len - csstart);
+	if (csstart != skb->len &&
+	    skb_copy_and_csum_bits(skb, csstart, to + csstart,
+				   skb->len - csstart, &csum)) {
+		/* Send zeroes rather than intact headers on a payload that
+		 * couldn't be copied.
+		 */
+		memset(to, 0, skb->len);
+		return;
+	}
 
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		long csstuff = csstart + skb->csum_offset;
@@ -5057,11 +5098,13 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 			if (!csum) {
 				if (!nskb->remcsum_offload)
 					nskb->ip_summed = CHECKSUM_NONE;
-				SKB_GSO_CB(nskb)->csum =
-					skb_copy_and_csum_bits(head_skb, offset,
-							       skb_put(nskb,
-								       len),
-							       len);
+				if (skb_copy_and_csum_bits(head_skb, offset,
+							   skb_put(nskb, len),
+							   len,
+							   &SKB_GSO_CB(nskb)->csum)) {
+					err = -EFAULT;
+					goto err;
+				}
 				SKB_GSO_CB(nskb)->csum_start =
 					skb_headroom(nskb) + doffset;
 			} else {
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
index 90c0e22c29be..35008785e3d2 100644
--- a/net/ipv4/icmp.c
+++ b/net/ipv4/icmp.c
@@ -364,12 +364,15 @@ static int icmp_glue_bits(void *from, char *to, int offset, int len, int odd,
 	DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data,
 			IP_OPTIONS_DATA_FIXED_SIZE);
 	__wsum csum;
+	int err;
 
 	icmp_param = from;
 
-	csum = skb_copy_and_csum_bits(icmp_param->skb,
-				      icmp_param->offset + offset,
-				      to, len);
+	err = skb_copy_and_csum_bits(icmp_param->skb,
+				     icmp_param->offset + offset,
+				     to, len, &csum);
+	if (err)
+		return err;
 
 	skb->csum = csum_block_add(skb->csum, csum, odd);
 	if (icmp_param->data.icmph.type <= NR_ICMP_TYPES &&
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 3396f177a18d..f7da4538d05b 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1162,9 +1162,14 @@ static int __ip_append_data(struct sock *sk,
 			data += fragheaderlen + exthdrlen;
 
 			if (fraggap) {
-				skb->csum = skb_copy_and_csum_bits(
-					skb_prev, maxfraglen,
-					data + transhdrlen, fraggap);
+				if (skb_copy_and_csum_bits(skb_prev, maxfraglen,
+							   data + transhdrlen,
+							   fraggap,
+							   &skb->csum)) {
+					err = -EFAULT;
+					kfree_skb(skb);
+					goto error;
+				}
 				skb_prev->csum = csum_sub(skb_prev->csum,
 							  skb->csum);
 				data += fraggap;
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index a95b0351824f..31ca3da80b1f 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -322,9 +322,12 @@ static int icmpv6_getfrag(void *from, char *to, int offset, int len, int odd, st
 	struct icmpv6_msg *msg = (struct icmpv6_msg *) from;
 	struct sk_buff *org_skb = msg->skb;
 	__wsum csum;
+	int err;
 
-	csum = skb_copy_and_csum_bits(org_skb, msg->offset + offset,
-				      to, len);
+	err = skb_copy_and_csum_bits(org_skb, msg->offset + offset,
+				     to, len, &csum);
+	if (err)
+		return err;
 	skb->csum = csum_block_add(skb->csum, csum, odd);
 	if (!(msg->type & ICMPV6_INFOMSG_MASK))
 		nf_ct_attach(skb, org_skb);
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 25fe0ba98b1a..d259e7dca8ba 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1724,9 +1724,14 @@ static int __ip6_append_data(struct sock *sk,
 			skb->transport_header = (skb->network_header +
 						 fragheaderlen);
 			if (fraggap) {
-				skb->csum = skb_copy_and_csum_bits(
-					skb_prev, maxfraglen,
-					data + transhdrlen, fraggap);
+				if (skb_copy_and_csum_bits(skb_prev, maxfraglen,
+							   data + transhdrlen,
+							   fraggap,
+							   &skb->csum)) {
+					err = -EFAULT;
+					kfree_skb(skb);
+					goto error;
+				}
 				skb_prev->csum = csum_sub(skb_prev->csum,
 							  skb->csum);
 				data += fraggap;
diff --git a/net/sunrpc/socklib.c b/net/sunrpc/socklib.c
index d8d8842c7de5..5d780ad4ae3a 100644
--- a/net/sunrpc/socklib.c
+++ b/net/sunrpc/socklib.c
@@ -49,7 +49,9 @@ xdr_skb_read_bits(struct xdr_skb_reader *desc, void *to, size_t len)
 	if (desc->need_checksum) {
 		__wsum csum;
 
-		csum = skb_copy_and_csum_bits(desc->skb, desc->offset, to, len);
+		if (unlikely(skb_copy_and_csum_bits(desc->skb, desc->offset,
+						    to, len, &csum)))
+			return 0;
 		desc->csum = csum_block_add(desc->csum, csum, desc->offset);
 	} else {
 		if (unlikely(skb_copy_bits(desc->skb, desc->offset, to, len)))
@@ -142,11 +144,6 @@ int csum_partial_copy_to_xdr(struct xdr_buf *xdr, struct sk_buff *skb)
 	desc.csum = csum_partial(skb->data, desc.offset, skb->csum);
 	if (xdr_partial_copy_from_skb(xdr, &desc) < 0)
 		return -1;
-	if (desc.offset != skb->len) {
-		__wsum csum2;
-		csum2 = skb_checksum(skb, desc.offset, skb->len - desc.offset, 0);
-		desc.csum = csum_block_add(desc.csum, csum2, desc.offset);
-	}
 	if (desc.count)
 		return -1;
 	if (csum_fold(desc.csum))

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468929.1677916 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4GX-0006i2-S6; Tue, 03 Nov 2026 02:28:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468929.1677916; Tue, 03 Nov 2026 02:28:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4GX-0006hv-PI; Tue, 03 Nov 2026 02:28:49 +0000
Received: by outflank-mailman (input) for mailman id 1468929;
 Tue, 03 Nov 2026 02:28:48 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4GW-0006he-Dp
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4GV-009OZN-Av
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:47 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946df-bab6-0a2a0a5309dd-0a2a4502d736-0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:47 +0100
Received: from [209.85.219.43] (helo=mail-qv1-f43.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946de-6ca4-0a2a45020019-d155db2bdd40-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:46 +0100
Received: by mail-qv1-f43.google.com with SMTP id
 6a1803df08f44-91b54d1e9cdso31352376d6.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:46 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.244])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91ca7f25fc2sm106442246d6.10.2026.11.02.18.28.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672925; x=1794277725; darn=lists.xenproject.org;
        h=cc:to:content-transfer-encoding:content-type:mime-version
         :message-id:date:subject:from:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=8yOxX1Bu6LKoUVi2ACTRn7d/0rP5glxXkcPct02PZno=;
        b=BIvEBym/BWkuCFkfDv0O5j8ddzqx1vi0Z6mWCKOw3GgaPWiUnL4ZWqHV56Zz1hfkwr
         G3FBlN74ckVTJ72LvpqZZ7jOfxwQ8/3fUQJwc7wONMZYpQOuhMmOafV7Y9OJRNWl5YaN
         H2FMtwhYK/0qPN4cS3dCtpfjlrz8ICQVv6vUQq5tItrQVw97J5fspnQAQkG16V1v+ReF
         5G7Wugzdft8wiFh/mkcaAPMwWdaHgTbdcklpXYOfoK86EaeL/yr4Qp55w7tdybAdJm8+
         ikakwgVj2A6YTs7W8J7TlTA08bymp+4lt0TmQGlJcTS25ZM7JkAJm3aeujb6TcpXoAZY
         UpEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672925; x=1794277725;
        h=cc:to:content-transfer-encoding:content-type:mime-version
         :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=8yOxX1Bu6LKoUVi2ACTRn7d/0rP5glxXkcPct02PZno=;
        b=qorQkIE1gkKbld6188k1S+7iRGVqQmJj5K9tc6gACklm7WG1vqnyXI5VYYdKNMBQwR
         THwI8LXMXvcU0oRs7Qx+rL3M0Uy9FGUomS3BF1jfrDFYpmiHh4cGH3Qp4+u392jZWdkM
         /d9+oS7j9f4RXEjva9GHhmIvayHK+2YAs0U9qhFR7pHnW6xA1ViCxBh3qNt8YlSrw5dL
         Fa33Mw9PywHdvA1ZIz/PLH7YLz3vNt+7GQRXlh+gJ08RV/EXJyU0ckk9mBDPRIuvk0yn
         uRXPSW26FYc1+f1OTdSVriNfE+DxB4OT0Opa2K9QCyLdS32SH07FgERzMqrvHFZVcT0q
         xJkA==
X-Forwarded-Encrypted: i=1; AKwUvByKtBQJxQLB76+UOCpgV4CejNI0ihJMujAjX7VCdkRwtJ16/97ce3Hk/LY+6DMCBTVjBxYSAg9WnNw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8tNMflG8DgIm75w+Vk4pYXX1aMGmrNSw7DmB9asW2nbeGW+rUY
	rwfp6kQP/WunMflKysYrOQyFscW+0a3vurtgErddSeA+KHHLkh1+cRZXEaGURZFS9Iw=
X-Gm-Gg: AYBFou2aUXa/AYNg28baLPXeSDK8kov8LvlyDGX7xqarRTqYoQ0lYBShRw0AFOkL1AH
	fAeExC9SwFNKUcDi8TFqNN3i3PoSk9VuUJZ4bJUNxkuk33uutnGO+5p11VJhy0IuYJ7WJaqNjCZ
	R+2amQJbzZHPaiEB/RdICTIMvhFEJTef6rdI7r/N5l5o8GAPciL6NWGAx7tBbtwHCENcQbkXtpo
	yKrnfMG7tv6YXlG5BfIaijLjls/UYTFCZjA67M+5Vbiuj7ULQE+jXWy3ouH4SahijaJkMVmd+2m
	7A88A0hBJvl8/ZEvMLBUc+7M2pZqBh2HpJM7FR/n2cr3nr7FFb/12eDxfCjAcd1gV5G/tqRxqfm
	GNry+wzwc+zFNfzXNJ2ZJ1OqgyZrVBmwaj+5wLbY7hDj6SZJj0JhVVZEoAFFb4dHKpAleO83hd1
	ndYETby+8NOc457eLPcg7F4fY+3Ihgp7HF6z3fuXD3H2qIaePTjb2Ur2vwlZVvBmgcEwayl2p/v
	eVE/WDn484lTsQgb4+dGPDfTKgKVbZGpCdohkqkTJWSRpQYXLtSFuZYJj+ryK03KLQa+Mvn7iIP
	XBZ9J/4Ah5Y0RJbQMh+76KS5DN/SDmF/sBCAJ9q54swdNg==
X-Received: by 2002:ad4:5947:0:b0:91c:6c27:d5ca with SMTP id 6a1803df08f44-91ca4b6f243mr194042456d6.41.1793672925486;
        Mon, 02 Nov 2026 18:28:45 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Subject: [PATCH net-next v3 00/15] net: skbuff: follow-ups to the BUG_ON()
 removal
Date: Tue, 03 Nov 2026 02:28:26 +0000
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAMxG6WoC/32Oy27DIBBFfyVi3WmA4Dy66n9EWQwwxLQOWIBdV
 5H/vTbtolLVLO+dmTPnzjIlT5m9bO4s0eizj2EJu6cNMy2GK4G3S2aSy73gYg9aQX7Xg3Oghyv
 EAC52XfwY+gxohUDr5LFBxRZAn8j5qcLPLFCBQFNhl+9JHvQbmbKy112NmUAnDKZdq67farWt5
 T/f1qPW5xLTZ5UfRX3z43l65DkK4KCE1eQark/u8Fri5E2PweKzibeqOMpfPCke8uTCk4iHI0e
 +a6T6w5vn+QtFRR05agEAAA==
X-Change-ID: 20261016-b4-skbuff-bug-on-followups-ad11adf285a4
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=9386;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=pSmkEfDauPbypTaoTh/3HpP3thH7q3OtOV4bGWRVhNs=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QDmMjtaHEFHTxNdI89Gi/a3RQRw+y5eNRW1DqtPDRlxYARtKzR1FB7fqVxkZgLKsdATt6GfX6w7
 vU/lKccmCcwU=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-720697/1793672927-315CD2AC-B60B08E3/0/0
X-purgate-type: clean
X-purgate-size: 9388

v1: https://lore.kernel.org/all/20261019-b4-skbuff-bug-on-followups-v1-0-41dbef50b9f7@toxicpanda.com/
v2: https://lore.kernel.org/all/20261021-b4-skbuff-bug-on-followups-v2-0-2aa780a03524@toxicpanda.com/

v2->v3:
- 1, 2, 6: move the frag_list recursion into a noinline function, so
  that taking the address of a local there doesn't give the helpers a
  stack protector (Paolo).  On x86_64 defconfig plus CONFIG_IP_SCTP
  none of skb_copy_and_csum_bits(), skb_checksum_full(),
  skb_crc32c_full() or the two wrappers has one now, and
  __ip_append_data(), __ip6_append_data() and skb_segment() are
  unchanged.  The callers that pass a local do gain one.  Besides the
  seven I listed on v2, that's __skb_gro_checksum_complete() and
  skb_checksum_help(), which are converted in this version, and
  skb_crc32c_csum_help().
- 1: put the Fixes: tags back (Fernando, Sashiko).  csump in the
  prototype, and drop the "Both of above in one bottle" comment
  (Fernando).  skb_copy_and_csum_dev() zeroes the whole frame when the
  copy fails, since leaving the checksum alone doesn't guarantee a bad
  one (Sashiko).
- 2, 6: the kernel-doc describes the unreadable check as it is, the
  wrappers don't blame unreadable frags for -EINVAL, and the commit
  messages say what changes for a failing frag_list member (Fernando,
  Sashiko).
- 2: convert skb_checksum_help() too, as 6 does for its crc32c twin, and
  add Fixes: 20ddd0fd2fcd.
- 3: convert __skb_gro_checksum_complete() too (Fernando, Sashiko).
  Take the skb off CHECKSUM_COMPLETE on failure.  Otherwise conntrack,
  which doesn't drop on a bad checksum, leaves the pseudo-header sum in
  skb->csum and TCP's validation accepts the packet after all
  (Sashiko).  Update the comments, and add Fixes: 65249feb6b3d.
- 4: the commit message was wrong that devmem TX reaches this checksum.
  Its skbs carry SKBFL_SHARED_FRAG, so the segment fails to linearize
  first.  The patch is hardening, and the commit message says so now.
- 5: when the tail can't be checksummed but what's left can be read,
  set CHECKSUM_NONE instead of failing the trim, which dropped packets
  that used to be accepted (Sashiko).  Retitled, and add Fixes: tags.
- 7, 8: add the Fixes: tags for the original commits, and correct the
  history in 8's commit message (Sashiko).  8 also says what it takes
  to reach the memcpy().
- 7: reject a negative @len or @hlen on entry.  The reorder left nothing
  ahead of the skb_put(), which panics on one.
- 8: the truesize check refuses the coalesce instead of only warning,
  and runs before the head is stolen.  With len unsigned and nothing
  else, an skb with a len above INT_MAX went from refused to coalesced.
- 9: check data_len > len directly and zero the frame.  The old check
  missed CHECKSUM_PARTIAL (Sashiko).  Retitled.
- 10: drop both len > 0 tests, and correct what the commit message says
  they covered (Sashiko).
- 9, 10: drop the Fixes: tags.  Both problems are older than the commits
  the tags named, and neither has a known trigger.
- 11: Willem, this one changed again after you OK'd the walk up front.
  A nested frag_list is only one way for the walk to run out of members.
  A len that counts bytes the skb doesn't hold gets to the same NULL
  pointer dereference, and the walk up front doesn't catch that.  So the
  patch now checks for a NULL list_skb in the three places where the
  walk moves on to it, and that's all it does: no pass up front, which
  also takes care of the cost you pointed out for BIG TCP, and none of
  v2's skb_has_frag_list() tests.  You asked on v2 whether the first two
  checks were needed.  For a nested frag_list they weren't, for this
  they are.  12 has a case for each, and taking any one of the three
  checks out brings the oops back.  The path without SG is left alone
  again.  The commit message says that IP reassembly does nest
  frag_lists, just not on GSO skbs (Sashiko).  Retitled.
- 12: add four cases for a len that counts bytes the skb doesn't hold.
  Retitled.
- 13: correct what the commit message says about when bounce_skb() runs
  and when skb_copy_bits() fails.
- 14: update the comment above skb_nsg() (Sashiko).
- 15: one more stale comment, in net_test.c.
- Picked up Fernando's Reviewed-by on 4.  Dropped Mina's on 1 and
  Fernando's on 2, since the frag_list loop moved in both, and Willem's
  on 12, since it grew.
- Shortened the commit messages.
- Rebased onto current net-next.
v1->v2:
- skb_segment(): check each frag_list member as the walk takes it,
  instead of an extra pass over the frag_list up front (Willem).
- KUnit test: braces around the suppressed skb_segment() call (Willem),
  and the comment update for the non-uniform case moved into the same
  patch (Mina).
- Picked up Willem's Reviewed-by and Mina's Acked-bys.

--- Original email (v1) ---

Hello,

Jakub applied v2 of my skbuff BUG_ON() series[1] before I got v3 out, so
this is what v3 would have changed, as fixes on top of what landed, plus
the skb_copy_and_csum_bits() patch I'd been sending to net on its own.

Patch 1 is that patch[2], moved to net-next as Mina suggested, with his
Reviewed-by.  It makes skb_copy_and_csum_bits() report failure, and the
rest of the series builds on it.  Please drop the net version.

Patches 2 through 6 deal with skb_checksum() and skb_crc32c().  My v2
had them return 0 when they run out of skb, and that turned out not to
be safe: 0 is a valid checksum, and it can make a packet that was never
fully checksummed pass verification.  So they get versions that report
failure, skb_checksum_full() and skb_crc32c_full(), and the core users
switch to them: checksum validation now rejects a packet it can't
checksum, skb_segment() and pskb_trim_rcsum() fail instead of using a
bad sum, and skb_crc32c_csum_help() drops the packet.  skb_checksum()
and skb_crc32c() stay as wrappers that behave as before, and I'll
convert the rest of their callers per subsystem in later series.

Patches 7 through 10 fix problems Sashiko and an LLM review found in
what was applied.  skb_zerocopy() refuses a zero-length copy that Open
vSwitch can trigger from a user namespace, skb_try_coalesce() and
skb_copy_and_csum_bits() can be handed a negative length, and
skb_headlen() can underflow in skb_copy_and_csum_dev().

Patches 11 and 12 make skb_segment() refuse a nested frag_list, which
could still oops on a NULL list_skb, and add KUnit cases for the layouts
it refuses.  Patches 13 and 14 get rid of the same BUG_ON()s in
xen-netfront's bounce_skb() and tls's __skb_nsg(), and patch 15 updates
comments that still describe the old BUG_ON()s.

I tested this with the net_core KUnit tests, a test module that drives
each of these paths under KASAN and fault injection, an Open vSwitch
reproducer for patch 7, and a stress run over veth with netem.  Thanks,

Josef

[1] https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
[2] https://lore.kernel.org/all/20261013-b4-skb-segment-nosg-unreadable-v2-1-6c28d8ffa51e@toxicpanda.com/

---
Changes in v3:
- Link to v2: https://patch.msgid.link/20261021-b4-skbuff-bug-on-followups-v2-0-2aa780a03524@toxicpanda.com

Changes in v2:
- Link to v1: https://patch.msgid.link/20261019-b4-skbuff-bug-on-followups-v1-0-41dbef50b9f7@toxicpanda.com

---
Josef Bacik (15):
      net: skbuff: make skb_copy_and_csum_bits() report unreadable frags
      net: skbuff: add skb_checksum_full() that reports failure
      net: skbuff: fail checksum validation when the skb can't be checksummed
      net: skbuff: fail segmentation when a segment can't be checksummed
      net: skbuff: drop hw csum if trim can't checksum tail
      net: skbuff: add skb_crc32c_full() that reports failure
      net: skbuff: let skb_zerocopy() copy a short skb without head_frag
      net: skbuff: make skb_try_coalesce()'s len unsigned
      net: skbuff: reject data_len > len in copy_and_csum_dev
      net: skbuff: reject a negative length in skb_copy_and_csum_bits()
      net: skbuff: don't run off frag_list in skb_segment()
      net: test the skb layouts skb_segment() refuses
      xen-netfront: don't BUG() when skb_copy_bits() fails in bounce_skb()
      net/tls: don't BUG() on leftover length in __skb_nsg()
      net: update comments that still describe the skb BUG_ON()s

 drivers/net/ethernet/sun/sunvnet_common.c |  10 +-
 drivers/net/xen-netfront.c                |   7 +-
 include/linux/skbuff.h                    |  12 +-
 net/core/dev.c                            |  14 +-
 net/core/filter.c                         |   6 +-
 net/core/gro.c                            |  11 +-
 net/core/net_test.c                       | 100 ++++++-
 net/core/skbuff.c                         | 447 +++++++++++++++++++++++-------
 net/ipv4/icmp.c                           |   9 +-
 net/ipv4/ip_output.c                      |  11 +-
 net/ipv6/icmp.c                           |   7 +-
 net/ipv6/ip6_output.c                     |  11 +-
 net/sunrpc/socklib.c                      |   9 +-
 net/tls/tls_sw.c                          |   8 +-
 14 files changed, 515 insertions(+), 147 deletions(-)
---
base-commit: 4dd16e31135ea8437a720222df34e8745f385d6d
change-id: 20261016-b4-skbuff-bug-on-followups-ad11adf285a4



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468933.1677953 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gf-0007aP-16; Tue, 03 Nov 2026 02:28:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468933.1677953; Tue, 03 Nov 2026 02:28:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Ge-0007aC-S3; Tue, 03 Nov 2026 02:28:56 +0000
Received: by outflank-mailman (input) for mailman id 1468933;
 Tue, 03 Nov 2026 02:28:55 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gd-0007Y3-TI
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gd-009OZN-9x
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:55 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946be-bab6-0a2a0a5309dd-0a2a4505c0c4-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:55 +0100
Received: from [209.85.160.174] (helo=mail-qt1-f174.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e6-4cb1-0a2a45050019-d155a0aed967-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:55 +0100
Received: by mail-qt1-f174.google.com with SMTP id
 d75a77b69052e-533778ab0bdso53014981cf.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:54 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498cb5b520sm13795611cf.26.2026.11.02.18.28.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672934; x=1794277734; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=MLIaIMsqYL3SSjD9c7Tzup1bl56m63w7tPTiVpME7Yg=;
        b=cQ1AD9RFI5MMhd69Vs4KeN8xN0dL78XDJUlLftISHy07IYPFD9PTwwKycNYg6IDg4S
         Jpt9mwSKwo2Guv+iWkccLKQOjvAumsveKeohYXn6sssBbLtIuCMA3Asg3tR+akw2QbPV
         AmA6smt0XrV+g48fmRJxkxi/f0Z2reEsuRwAz/h2sFw9vjuneeN+inpW54Ntyq1YRECY
         qh+OXdUvYyLzYWp/rvAvmlpVuT0Hi4cuCO1ikO3bY8wzlY5AM9q88h8OITPRK1eZJnj1
         LDKs5uxQHNWyEJwr0WjAfyd6NPjZRAq+0TzhIBgB8t9wOiFmDZPlMQLTmjETK61AeNK0
         6Sbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672934; x=1794277734;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=MLIaIMsqYL3SSjD9c7Tzup1bl56m63w7tPTiVpME7Yg=;
        b=sfzRnjJhcw5huvGQ+aWmmN1gFChQ+bzoevC/PepRHI7zVinSNFvQdRTvR1GrW7EyMZ
         fvQmi5AVmcFVTR6i5GxUkZFLFFa1lnwvOLgsSIdXbCZ60Fo0QTkHvN/DlS9y14OtogSN
         vJ3JfVlmCvLz6nBnHB8DRmOSFLDH5Tcn2bRmaCF165/SK4+VZroZan5gKQzHnJOVpJDi
         bGTuRd1z3eZ5l7jAPxp3A4vz4OjMW222c73V9EG+HbY9VjvNH7Se7AuXGYkmjw37fQjT
         czrhPaQDC9ilTUsvpsYgGcyZl8poIX5GjjwYCTwdCmCqVSs85paj1XfHmJJUMSYfIigK
         UL0Q==
X-Forwarded-Encrypted: i=1; AKwUvBxXOdp+V1C9PsIRLyZJUL6l/Macxn07lRxhVpbL3DBJpDgL/G/ZtLQKQMBEJT2dWRuNE1THZBdMzbc=@lists.xenproject.org
X-Gm-Message-State: AFq9FYJzzFGRSyIM1Yk0dAQEUX6vnF23gx9xhscmKPNTWDIsFna6FDYF
	2hMuhd3zTmNYt3Wpz2LPhW34swpSZnfOj7LZ8eH0NR8KYrfwf4NhTjxpAvLjJICdSgU=
X-Gm-Gg: AYBFou3/iuHSAz7dkNZpxAvXMF6taEsSkJkhdRqnwR/GfV8RFx7FR1eYjcVs5NAYGLf
	elFHkhXqqqMyaVzCSba/ekk7OBF40s+zIr+1skSnd0PkMJmnQVHMNdQ0tIf3trxxV6tyvU6f1rI
	JnMZuJk8uUmthdDeCJWkEP0I9LVxIeeTAAHZXf0QblDJ7SiRdr+VebXdY7Y8Xa2shdmHKSg3Mrr
	PltwXs77g1zaY60zRy3i2ti+fHgV3M3olU1zKhMexXfZ4f9It5fnVZnatcKwENvBiiqc3wExKjB
	EhhomRJ2Kyjten73CUY7Q405KpCKF/qBdZ5dU+NmtHmdtz3pboYY7kjSBCmLa6QDDiqhMijHp8r
	Zhauf3JdRYjecZpm3E92v1i+Jg4L6yPdZG1pQWKFC2JWqnh8xhAFFPZATMIW/V4bxaor5Q+B6p2
	nBMx4eplBdLozCw3jDXefFe9iXO/W/3v8WBcGDKRa+ScjQPix3szfkojn9oQr6ndW4tj4VpHebW
	ulPrNtRM3mnZ6ik99dFoyOL3YeYGKWBgcV9AUKwJ4mDD6r7kdjhQTeuv9RHKaDPZeeXBFHNz9m3
	zFxf4yd8uhiBdwCmqQN4dOU8rTNbswCVAeG4LyNuvzypYQ==
X-Received: by 2002:a05:622a:a889:b0:537:83e9:b88a with SMTP id d75a77b69052e-542b64964b4mr199343741cf.23.1793672933851;
        Mon, 02 Nov 2026 18:28:53 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:30 +0000
Subject: [PATCH net-next v3 04/15] net: skbuff: fail segmentation when a
 segment can't be checksummed
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-4-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=1748;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=TlO/AKeZArxeBmRh7l805X0/4fVE3bHDKuOYPc0A/+Y=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QDNO9/a3hdew67VlcDguwy5iB/P7gwRmhlzB8AVvniMlDrIfyz9W9B22je1YjbgzdeslLLgxJZL
 0BnXxMWLQxws=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-c201ff/1793672935-F6CB02A1-DEA0FD69/0/0
X-purgate-type: clean
X-purgate-size: 1750

When the device can't checksum the protocol, skb_segment() checksums
each segment with skb_checksum().  If the segment has unreadable frags,
or its lengths don't add up, skb_checksum() returns 0 and the segment
goes out with a checksum that doesn't cover its payload.

Devmem TCP doesn't get that far today.  Its skbs take SKBFL_SHARED_FRAG
from the zerocopy uarg, so skb_segment() tries to linearize the segment
first, and that fails with -ENOMEM for unreadable frags.  No other path
is known to bring an unreadable segment here either.

Use skb_checksum_full() and fail the segmentation with -EFAULT, so that
the checksum doesn't depend on that flag.

Found by the Sashiko AI review of an earlier fix for the same path with
SG off.

Link: https://lore.kernel.org/all/20261009-b4-skb-segment-nosg-unreadable-v1-1-7e2334a55fe8@toxicpanda.com/
Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 0d3f0f09c7d1..5f997edf3519 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5292,9 +5292,13 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 			if (!nskb->remcsum_offload)
 				nskb->ip_summed = CHECKSUM_NONE;
-			SKB_GSO_CB(nskb)->csum =
-				skb_checksum(nskb, doffset,
-					     nskb->len - doffset, 0);
+			SKB_GSO_CB(nskb)->csum = 0;
+			if (skb_checksum_full(nskb, doffset,
+					      nskb->len - doffset,
+					      &SKB_GSO_CB(nskb)->csum)) {
+				err = -EFAULT;
+				goto err;
+			}
 			SKB_GSO_CB(nskb)->csum_start =
 				skb_headroom(nskb) + doffset;
 		}

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468932.1677943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gc-0007Ll-PD; Tue, 03 Nov 2026 02:28:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468932.1677943; Tue, 03 Nov 2026 02:28:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gc-0007Le-L7; Tue, 03 Nov 2026 02:28:54 +0000
Received: by outflank-mailman (input) for mailman id 1468932;
 Tue, 03 Nov 2026 02:28:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gb-000787-OY
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Ga-00143l-VC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:52 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946b5-2eae-0a2a0a5409dd-0a2a4501bef4-16
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:52 +0100
Received: from [209.85.160.169] (helo=mail-qt1-f169.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e3-5984-0a2a45010019-d155a0a9e4fe-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:52 +0100
Received: by mail-qt1-f169.google.com with SMTP id
 d75a77b69052e-53cd0c8614eso28049931cf.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:52 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.254])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498b49ce1dsm13809921cf.5.2026.11.02.18.28.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672931; x=1794277731; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=E+PueQRw3LXmq/KAZXUuB8w4RjwHTCemS7p7oseT8Jo=;
        b=nMO7wOwVEBQ28ZR4iEZBZHbwYWGnZNMCDintQGg4X98+nHeiCStxLW2eMAttBvsNsE
         t9h7XjH//uSJEMDyVbVayaxJMw9/TiH9AUffhGuKSuF46Dq30L9q635mR9JUaYQpW/pc
         OIjUSDPtD804GFu/Mcd7Ihwb1J0wWz/OI+pEUyWBf49gXTctZmydSBjMoHM2z59ZGRTy
         mD4G4uZEV8vRDtAftDZXz0O7ND7E/2Uk+NcG21P9pqr+MVcOlrNeoSU9Vi6W+/BR6gM3
         EvgEEVyq6iiTnZxC1GZIf5CTKu8Jv0zhJuU1liWs1AjaXjnxjJm0F0BSMskOWlY+Rzqw
         yXTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672931; x=1794277731;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=E+PueQRw3LXmq/KAZXUuB8w4RjwHTCemS7p7oseT8Jo=;
        b=oLqKbM4PQx0qCgGeOtiAAz6eL40tsOnG3GxmpbwMWhPwlzYdcngzcFaOG3A5Wbz2Md
         tBW15yqP7WQ0u1d5fMXFEUPUPmrjQOOarcm04UyZFhajhOZu71tzmjsUpu/Pi+7BJ9Ar
         DVskmGq3G73vdcFi6VjIeT12Mz69sxrgEiYWz/lsMfEagn/eUCeoYx8oyOEdaNlyun1K
         Ye4Fi7Fkh9yKLJTgX/DTStcVBeN4vcg5M83GbUSHcLsMYehP+puqqE1Yq5otgBaYF6Q+
         3efr4xX5dfrqtzaPYMpouk2c9XMPJpP2idPzuBqnhrNqqlgX2LTUGQqtPClylLDtoGuw
         sb1w==
X-Forwarded-Encrypted: i=1; AKwUvBy1N0y4qDsTtzAsS5eEIckZPQDQkpOjmlzNLlG3eNRA5ZeVz8SFF8ayqbSMhER2tRdMYCw9tto1eKk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/HG97MJxROjLgmpoa6htO7mrUNZqCHXKGmczIC4HGYkOxJFx3F
	Ogblkli1kvLv9tC7zRIgjnjYQx9NTrjetXeBCByi+BJMYl886g4Oy5iRkQYzOu1n7lI=
X-Gm-Gg: AYBFou2UoIZL2GIZtyz9BCsliEOO1LBCnfdEORG4UJPMYwASs9vUmuvgfF6VwmopR28
	ELTMRcechiCl9PgOvLcezh2S2bQTFD2g8zbLEdIs2WJBSm0vyiyBuqG9Y/GNp3s+/8ISQjZOq2a
	Gb7zeoC289T0p73eXkjKnFSAPQ2/+PTme2I0xXoGWLGv3COikr6Tbyv+DxE1JZUA8dqZ47pWBjY
	rcU7LUTkaywjBAj0NhTsIdXF1V4W3D55uyuL/PddVoQRerIuwcA+G8Pno79dtm3hTnoGcOrH1Fh
	wHku9eJEuNkRiQq9eSxvnFvb2S3LrdOriSemQw/Bt5rvjPXABQGyMsFjEkYLZ1F1nRN/T0OBI6O
	qLTCSQE8s6ILKGm6C5tHdn/vcTwcrKqG41ANKPIa9Gkebr9mlkHymkWO9di3bqHdrGsPvoMgqxQ
	62Xe385aFvivO6hFPACt4VaLJ01DwsqykSLftdHQ3ynvRM6VatZpVUOT49ZfYVMyABVXOeyj/Gg
	GMiFF/5l6YoT7cgbzwCt6bDbcOk6AQuFTEZ4VX60lvfXWuPxS88j1+5DKOCY5GI2tTW9ZuOU1JK
	JqdFzsf3ZbX28ZP3lqRtnySCVY6nGI8hQbOryJVay6K/7A==
X-Received: by 2002:a05:622a:1c17:b0:536:622d:6932 with SMTP id d75a77b69052e-542b62a4588mr193623181cf.23.1793672931108;
        Mon, 02 Nov 2026 18:28:51 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:29 +0000
Subject: [PATCH net-next v3 03/15] net: skbuff: fail checksum validation
 when the skb can't be checksummed
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-3-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=5641;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=ljkKcEFWSleZcYbEYDqih3Hv4TBj+2u86MNLksCHbxQ=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QCMEGKf9eY/JjLBx3uBpM1AvSdEnm9af1QuiTOeZWeeXF3LjhcUUm3ZNvs0Y8u3YMijw2VBPR/Y
 U7NAKuRMA3AQ=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d62444/1793672932-BF262757-F1E2891A/0/0
X-purgate-type: clean
X-purgate-size: 5643

__skb_checksum_complete() and __skb_gro_checksum_complete() verify a
packet with skb_checksum(), which returns 0 when the payload is in
unreadable frags or the skb's lengths don't add up.  Both add that 0 to
the pseudo-header sum, so they accept the packet whenever the
pseudo-header sum folds to 0xffff.  The sender controls that sum through
the addresses and the length.

Use skb_checksum_full() in both, and in __skb_checksum_complete_head(),
and report an skb that can't be checksummed as having a bad checksum.

Also take the skb off CHECKSUM_COMPLETE on that path.  nf_ip_checksum()
stores the pseudo-header sum in skb->csum before it calls
__skb_checksum_complete(), and conntrack doesn't drop a packet with a
bad checksum.  If the skb stayed CHECKSUM_COMPLETE,
__skb_checksum_validate_complete() would add the same pseudo-header sum
to skb->csum and accept the packet under the same condition.

A test module builds an skb that claims 50 more bytes than it holds,
with a pseudo-header sum of 0xffff.  Both functions accept that skb
before this patch and reject it after.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Link: https://lore.kernel.org/all/179273111951.3134.3452028799437573017@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |  4 ++--
 net/core/gro.c         | 11 +++++++++--
 net/core/skbuff.c      | 27 +++++++++++++++++++++++----
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 608c1491597e..5a5354a6b6ba 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4892,7 +4892,7 @@ static inline void skb_checksum_complete_unset(struct sk_buff *skb)
  *   0: checksum is validated or try to in skb_checksum_complete. In the latter
  *	case the ip_summed will not be CHECKSUM_UNNECESSARY and the pseudo
  *	checksum is stored in skb->csum for use in __skb_checksum_complete
- *   non-zero: value of invalid checksum
+ *   non-zero: value of invalid checksum, or 1 if the skb can't be checksummed
  *
  */
 static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb,
@@ -4932,7 +4932,7 @@ static inline __wsum null_compute_pseudo(struct sk_buff *skb, int proto)
  *
  * Return values:
  *   0: checksum is validated or try to in skb_checksum_complete
- *   non-zero: value of invalid checksum
+ *   non-zero: value of invalid checksum, or 1 if the skb can't be checksummed
  */
 #define __skb_checksum_validate(skb, proto, complete,			\
 				zero_okay, check, compute_pseudo)	\
diff --git a/net/core/gro.c b/net/core/gro.c
index 1b033855a20d..e2e847c95270 100644
--- a/net/core/gro.c
+++ b/net/core/gro.c
@@ -798,10 +798,17 @@ EXPORT_SYMBOL(napi_gro_frags);
  */
 __sum16 __skb_gro_checksum_complete(struct sk_buff *skb)
 {
-	__wsum wsum;
+	__wsum wsum = 0;
 	__sum16 sum;
 
-	wsum = skb_checksum(skb, skb_gro_offset(skb), skb_gro_len(skb), 0);
+	/* If the data can't be checksummed it can't be valid either, and
+	 * NAPI_GRO_CB(skb)->csum only holds the pseudo checksum.
+	 */
+	if (skb_checksum_full(skb, skb_gro_offset(skb), skb_gro_len(skb),
+			      &wsum)) {
+		NAPI_GRO_CB(skb)->csum_valid = 0;
+		return (__force __sum16)1;
+	}
 
 	/* NAPI_GRO_CB(skb)->csum holds pseudo checksum */
 	sum = csum_fold(csum_add(NAPI_GRO_CB(skb)->csum, wsum));
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index c5f8aca89221..0d3f0f09c7d1 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3885,11 +3885,28 @@ u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
 EXPORT_SYMBOL(skb_crc32c);
 #endif /* CONFIG_NET_CRC32C */
 
+/* The data can't be checksummed, so it can't be valid either.  The caller has
+ * put the pseudo header's checksum in skb->csum, so don't leave the skb
+ * CHECKSUM_COMPLETE for a later validator to take that for the packet's.
+ */
+static __sum16 skb_checksum_complete_failed(struct sk_buff *skb)
+{
+	if (!skb_shared(skb)) {
+		skb_checksum_complete_unset(skb);
+		skb->csum_valid = 0;
+	}
+	return (__force __sum16)1;
+}
+
 __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len)
 {
+	__wsum csum = skb->csum;
 	__sum16 sum;
 
-	sum = csum_fold(skb_checksum(skb, 0, len, skb->csum));
+	if (skb_checksum_full(skb, 0, len, &csum))
+		return skb_checksum_complete_failed(skb);
+
+	sum = csum_fold(csum);
 	/* See comments in __skb_checksum_complete(). */
 	if (likely(!sum)) {
 		if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE) &&
@@ -3909,14 +3926,16 @@ EXPORT_SYMBOL(__skb_checksum_complete_head);
  *
  * It returns non-zero if the recomputed checksum is still invalid, otherwise
  * zero. The new checksum is stored back into skb->csum unless the skb is
- * shared.
+ * shared. If the skb can't be checksummed it returns non-zero, skb->csum is
+ * left alone, and the skb is no longer CHECKSUM_COMPLETE unless it's shared.
  */
 __sum16 __skb_checksum_complete(struct sk_buff *skb)
 {
-	__wsum csum;
+	__wsum csum = 0;
 	__sum16 sum;
 
-	csum = skb_checksum(skb, 0, skb->len, 0);
+	if (skb_checksum_full(skb, 0, skb->len, &csum))
+		return skb_checksum_complete_failed(skb);
 
 	sum = csum_fold(csum_add(skb->csum, csum));
 	/* This check is inverted, because we already knew the hardware

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468936.1677970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gj-00087i-Fb; Tue, 03 Nov 2026 02:29:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468936.1677970; Tue, 03 Nov 2026 02:29:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gj-00087X-C2; Tue, 03 Nov 2026 02:29:01 +0000
Received: by outflank-mailman (input) for mailman id 1468936;
 Tue, 03 Nov 2026 02:28:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gh-0007sy-If
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:28:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gg-00143l-Vu
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:28:58 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae9469c-2eae-0a2a0a5409dd-0a2a4504d6de-38
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:58 +0100
Received: from [209.85.222.178] (helo=mail-qk1-f178.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946ea-b57f-0a2a45040019-d155deb2d447-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:58 +0100
Received: by mail-qk1-f178.google.com with SMTP id
 af79cd13be357-93cc1ab5f6cso443009785a.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:28:58 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945c1757d8fsm183190485a.2.2026.11.02.18.28.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672937; x=1794277737; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=lzfHr7VS3R55wgwqyUPsK6dja/9+8+R/PoE9WBcM+FY=;
        b=OpGGdEmw6WPOUHEl9RARlbY9EtpI6WFlI/7hrneD32wIY7Xdx5Rm1XQnrm/i40YypD
         JI7kKzN60hWD9M9xbZPSD/8c8Euec75JGqNOzEZhRJHjhsIdNn2J50hnwW4HY9P/Wnh3
         IvjZqur1qKf69I1HEllblijarL2upcomR98aHkisjn/SJMrCX1MrQnoBJeApOFjuGscF
         9rrCRWcDEp2KwaiY2sgVV0t68QT/d2zH6Wa8fQpag4B6weROMUoqIri1wMiYnBZzPU/M
         qpyL5JEuqibnHW7eUTH3tOrLWytxEy3rtj7Jpg3gN8W8RbHVk0MzADxKHig2Emm6qlJV
         4pfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672937; x=1794277737;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=lzfHr7VS3R55wgwqyUPsK6dja/9+8+R/PoE9WBcM+FY=;
        b=fphy/EGmGr05t7xK7c33HO7bUQIUNYu87yVgF753dN7gfZLMcoh2jImUapXoyqDhRS
         rVLBLmR66TvaKIztOrzQVduxOqy226JbltiBY4MQjeY39n9f8l2UIHmHCASSCJJs7x12
         fn2jYpjxM6FyCbd/kapFpjC4v8yyrqF+lSVpkC/Y1cPZpHfjjfmvqDnw/awvxVjiLact
         67/AhfVRuBF4F6zy9iiOe/i142Z3aLWElHYeauO7T1G34ClAEd26A+Fw3Clj2K3or3KB
         jBORY06PEkXQWAZ60sDTZkDbwC5lM4yrGEHpbYqIGPwrukIM30OhHddxQ2HacGD6oRXa
         ECvQ==
X-Forwarded-Encrypted: i=1; AKwUvBxc9MV9AhQWCTJm3D2oNcDTiHYRtUJfgWbda2ugKnJn4hsDsqxGDpFW5Bt0SNbLICEMTRQkZTgB8IQ=@lists.xenproject.org
X-Gm-Message-State: AFq9FYJ9vTuQmUckhkoKvkZsKHyRniIFdrQ1O+w0SKnKIN1xvKkWKsoH
	ib61QtlENJ9k1oWhN/dxo31JAGX4HL7J6vyUJGgT32toQiz0OwebEGXxd2LYLlRb5fQ=
X-Gm-Gg: AYBFou1x35RTGMUshIVP9MyesTIoliw0A5rd0WU+nMBYOVtXpmP4pDOn3itW7yAADEC
	TaPnQLW3ZHxkNZWk0ajrZDbIgsN5NJ7YfofwGJe+Edik6ViwDiuxAIgssuapCcIOusY6exaAZOD
	0kRai8Tit+oENYqgAUSlS1CdOOaAgX8azrFfl6UY2/yCrAUBrANnVAgDtSKzDOyZQ+N61JASGl3
	Qk434AaFYphhUIH4MzTWTLrppfbgj9eoVV82ynUz4jHBCqyqmXDxoAUkLmyqjBff2y0TXd6IUv/
	eXAAg8ub9eYiXcMaXUEb9bbqg3GJgUMXH1aDQSGsYq+9HsrGLJmy7+AZuLFb2/iCELqVOdwO7xq
	IGOM/pqzQ8+5x7MdgX/SbTYZnAayzLFo17VrNPB4A3Tck3yul2Yea6211cpwjEDoo6hKbgVqGWQ
	7qvsVopvrIaaCj7Ftnu/MIYZwDpRmyimUIZPGYGBPBr8ZzNGCxFVEicLCZ01QB7NWFDfB/dU1OL
	sz/vCBcJLpAzbActjsMyK2MEf3cF+AR1EbTI1TT1ThKIrukVCNuz3bZazdYGWaiPbwAOHOQPjLs
	MEW3IEjOgCur5H5BZuYkQk/0zVWYVZG0jj30KsWXbyjlG6M=
X-Received: by 2002:a05:620a:4515:b0:93e:5cf8:e5aa with SMTP id af79cd13be357-944216f1f16mr2068343185a.61.1793672937350;
        Mon, 02 Nov 2026 18:28:57 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:32 +0000
Subject: [PATCH net-next v3 06/15] net: skbuff: add skb_crc32c_full() that
 reports failure
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-6-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=5927;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=xQ13tNp8b5b8bmXMu0MecWu7GssBiAZfq3djIXb3o+I=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QMNAudkydV4sX8J5UoevpFC9R5qZwEOJDugWoZB2YvCOLWe1pQlj56Bu8v3uVapFQnfAVmE8Bqf
 3/smPffQ63AQ=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-ebf023/1793672938-C1AD0B50-0001E22A/0/0
X-purgate-type: clean
X-purgate-size: 5929

skb_crc32c() has the same problem as skb_checksum().  When the range
runs into unreadable frags or past the end of the skb, skb_crc32c()
returns 0, which is also a valid CRC.  sctp_compute_cksum() and
skb_crc32c_csum_help() complement it, so a failed walk looks like a
checksum of 0xffffffff whatever the packet contains.

Add skb_crc32c_full(), which works like skb_checksum_full().
skb_crc32c() becomes a wrapper for the callers that aren't converted
yet.  The wrapper still returns 0 on failure, but it no longer warns
when only a frag_list member has unreadable frags.

Convert skb_crc32c_csum_help(), which can already return an error, so
that an SCTP packet that can't be checksummed is dropped on transmit.
The other callers will follow with the skb_checksum() callers.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |   2 +
 net/core/dev.c         |   7 +++-
 net/core/skbuff.c      | 100 +++++++++++++++++++++++++++++++++++++------------
 3 files changed, 83 insertions(+), 26 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 5a5354a6b6ba..5581ed3cbf47 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4332,6 +4332,8 @@ static inline int memcpy_to_msg(struct msghdr *msg, void *data, int len)
 
 __wsum skb_checksum(const struct sk_buff *skb, int offset, int len,
 		    __wsum csum);
+int __must_check skb_crc32c_full(const struct sk_buff *skb, int offset,
+				 int len, u32 *crcp);
 u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc);
 
 static inline void * __must_check
diff --git a/net/core/dev.c b/net/core/dev.c
index 00a62c391056..f9878db781df 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3752,8 +3752,11 @@ int skb_crc32c_csum_help(struct sk_buff *skb)
 	if (ret)
 		goto out;
 
-	crc = ~skb_crc32c(skb, start, skb->len - start, ~0);
-	*(__le32 *)(skb->data + offset) = cpu_to_le32(crc);
+	crc = ~0;
+	ret = skb_crc32c_full(skb, start, skb->len - start, &crc);
+	if (ret)
+		goto out;
+	*(__le32 *)(skb->data + offset) = cpu_to_le32(~crc);
 	skb_reset_csum_not_inet(skb);
 out:
 	return ret;
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 68801a4f471b..15d1f4142f29 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3825,23 +3825,79 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 EXPORT_SYMBOL(skb_copy_and_csum_bits);
 
 #ifdef CONFIG_NET_CRC32C
-u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
+/* The frag_list part of skb_crc32c_full().  It's out of line so that taking
+ * the address of crc doesn't cost every caller a stack protector.
+ */
+static noinline int skb_crc32c_frag_list(const struct sk_buff *skb, int start,
+					 int offset, int len, u32 crc,
+					 u32 *crcp)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
+
+	skb_walk_frags(skb, frag_iter) {
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			copy = min(copy, len);
+			err = skb_crc32c_full(frag_iter, offset - start, copy,
+					      &crc);
+			if (err)
+				return err;
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+out:
+	*crcp = crc;
+	return 0;
+}
+
+/**
+ *	skb_crc32c_full - CRC32C a range of an skb
+ *	@skb: buffer to read
+ *	@offset: offset in @skb to start at
+ *	@len: number of bytes to include
+ *	@crcp: the CRC to continue from; on success, updated with the range
+ *
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	runs out before @len does, or if the range goes past the linear area
+ *	of an skb, @skb or one on its frag_list, that has unreadable frags.
+ *	On failure *@crcp is not changed.
+ */
+int skb_crc32c_full(const struct sk_buff *skb, int offset, int len, u32 *crcp)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
+	u32 crc = *crcp;
+
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
 
 	if (copy > 0) {
 		copy = min(copy, len);
 		crc = crc32c(crc, skb->data + offset, copy);
 		len -= copy;
 		if (len == 0)
-			return crc;
+			goto out;
 		offset += copy;
 	}
 
-	if (WARN_ON_ONCE(!skb_frags_readable(skb)))
-		return 0;
+	if (!skb_frags_readable(skb))
+		return -EFAULT;
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 		int end;
@@ -3866,34 +3922,30 @@ u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
 			}
 			len -= copy;
 			if (len == 0)
-				return crc;
+				goto out;
 			offset += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		int end;
+	return skb_crc32c_frag_list(skb, start, offset, len, crc, crcp);
+out:
+	*crcp = crc;
+	return 0;
+}
+EXPORT_SYMBOL(skb_crc32c_full);
 
-		WARN_ON(start > offset + len);
+/* skb_crc32c() has no way to report failure, so it returns 0, which is a
+ * valid CRC.  Use skb_crc32c_full() in new code.
+ */
+u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
+{
+	int err = skb_crc32c_full(skb, offset, len, &crc);
 
-		end = start + frag_iter->len;
-		copy = end - offset;
-		if (copy > 0) {
-			copy = min(copy, len);
-			crc = skb_crc32c(frag_iter, offset - start, copy, crc);
-			len -= copy;
-			if (len == 0)
-				return crc;
-			offset += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
+	if (unlikely(err)) {
+		WARN_ON_ONCE(err == -EFAULT && !skb_frags_readable(skb));
 		return 0;
 	}
-
 	return crc;
 }
 EXPORT_SYMBOL(skb_crc32c);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468939.1677979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gl-0008OJ-1K; Tue, 03 Nov 2026 02:29:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468939.1677979; Tue, 03 Nov 2026 02:29:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gk-0008O6-UF; Tue, 03 Nov 2026 02:29:02 +0000
Received: by outflank-mailman (input) for mailman id 1468939;
 Tue, 03 Nov 2026 02:29:02 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gj-0008A8-QB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gj-00CYCC-6W
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:01 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae94690-e002-0a2a0a5209dd-0a2a450cec40-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:01 +0100
Received: from [209.85.160.175] (helo=mail-qt1-f175.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946eb-f479-0a2a450c0019-d155a0afc83b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:00 +0100
Received: by mail-qt1-f175.google.com with SMTP id
 d75a77b69052e-5364042eecfso60665371cf.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:00 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498cf4c174sm13684401cf.29.2026.11.02.18.28.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:28:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672939; x=1794277739; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=DcFo5FOvZmv6l4451K3/sYsoJxTuD/ptYd3JpfIB/vc=;
        b=OHeZKGKd0JsuKgsZKymYuxj4KPusK+K21lsvG7x3VyiBJM0JdnZ5OCTqnw1N//iERx
         CCBmlnk/VLQohQ81ai/6sLfb5HGT2RJpVRjNnnTsttaaT9Uwt0cX6paKO2pAnJbeb89Y
         Tyxt2BpomiGUPaKTGPrBmzk+mtac9jHwEyyCTZiqWerZs/I5yhBhSNvFDfzX6Avuspi3
         MnQcts3HYOvmWLXVBWToo6T0K2Xylm7QECqbto8SB6mXLTkCkSZKc9Pqwz0vz2ONQPLZ
         LJyUaVY3Vif/dwaj6qjJq0HFhLLkLFpxPZDWVA6DjQynzddX4CmhX8MdRKpri2+8oKDs
         XW4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672939; x=1794277739;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=DcFo5FOvZmv6l4451K3/sYsoJxTuD/ptYd3JpfIB/vc=;
        b=N4M+4fsxEoklkAuJMpmd1qWTTEG2t64cdoB9OTCPdFagRG+yjBwRm0C+aPt24rlyqE
         /1NjS8ldDBm1RzABwRJcthQSG4h8zCmzBQkX/G1gF4BVpC70VGkgkOs3iPZmSYtmRWnd
         2SzAF1UuHjXYhPh6h842Mdbd834n46oxYcvhKEXjFLx7qAOa64Avtjhmq7sByk0tCflo
         om6cY8kTHGM+BmSFrEyJB2oxjBWV3uTOzuEh5ZYfwrExpnpUsLOlAqLoZ0YNCo0sME+8
         XkRq6lDEngsp7OgtIKFJ7KyIbJe3bU1CuUxVCnTzJ5EKdXdj+NnACHVpaEQqnVIRbtZw
         wTqg==
X-Forwarded-Encrypted: i=1; AKwUvByTQj3JE8dvx3vVWNeoCbXHWK1pRy1Bo2rqEyoeuITlUlBy7ZAt4MRRjYnTL0+yJopcZgG3PhTzU4A=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/rzZhmDxKLUKHpzBNPywOdp/SiqPwdZl8RPK9HIuNo3kiFq5AS
	rPwIOdvQNFs4Mm1xs99snUsj3QixinA+mrNDNVrlge2TBZc9uESiz6Rodad4FxwiEcI=
X-Gm-Gg: AYBFou1jdCJ4PiE4CHTd6ccVMdEs5ConEc6WOeNcVrUi1gYvWmZkiCPwEvLWmjB9uCG
	0Sea7IQIf8ZffjAiD1CB0juzqw0ywgDVl/oLSFv6/9Ql9pp5jUWYgSJvJXtfr/8Dw8OY9iqNJsU
	ekHTPpBsSQX+RIIHA5yPbSNM2uebZeA2N1d39hxvCA5fG0OO7oSp82X4x/wInTyZ/gZdKlmecly
	fvhNsEYJkuUYZRG6SIPP4ILf6ohu/K2gKZpx+uG6Wa70sGtYqoGBDEXSMuZ1zp1S2RJekKkJHcX
	VwHZ3QG8L/6NOiE8enwCYSw3At5hXGF16WieA5R5dtfz0GX98Pm8bz1mWPHIG9/bRQVbDYZjG4P
	0IF47jB0JgEKqmKUcBI/DlLopdyPxvR/eDI/dlhEoL2H1SDo1xzMILk8U+FDRqKzC/B828DU/PQ
	0jAH7zOEYlzZa62T15arGZQVxIwt3a/00sFxDoWLg16vzek91Wee1RxCv5JrUA/HhzickndncUN
	ibWfy+d7tWKrpcDeTY68uBSjn7xD1sMLlVAuqB5urjc2wFSENmlZZUBHc4FvlFXOFHz6xfdCpS+
	8A3daf51BwIQmiVfwt/QE2NtLFd3WX0QDS59QtBDIazSzA==
X-Received: by 2002:ac8:5f8c:0:b0:535:15a9:2516 with SMTP id d75a77b69052e-542b75248e1mr201824771cf.53.1793672939316;
        Mon, 02 Nov 2026 18:28:59 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:33 +0000
Subject: [PATCH net-next v3 07/15] net: skbuff: let skb_zerocopy() copy a
 short skb without head_frag
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-7-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=3270;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=h0Wqrzd3xqr+PYqL1pPzooJBchVLWNZbZHd25h+Yqck=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QM+Y4diaiiBY8eankmF9aAo6/WhJsaCKYztAziuHXrT++wyED3G5cAIsbBu9yfcjJg9jVGYbpO6
 rhMjmGXTK1wY=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793672940-776D6A5B-D43AD7CB/0/0
X-purgate-type: clean
X-purgate-size: 3272

skb_zerocopy() refuses an skb with no head_frag when the caller passes
hlen == 0, because it can't reference such a head as a page.  That check
sits ahead of the small-payload path, which copies everything with
skb_copy_bits() and never references the head.

Open vSwitch gets there with an ordinary request.
OVS_PACKET_CMD_EXECUTE allocates the packet with a kmalloc'd head, a
POP_ETH action on a 14 byte frame leaves it empty, and a USERSPACE
action calls skb_zerocopy(user_skb, skb, 0, 0).  The upcall fails, with
a WARN on CONFIG_DEBUG_NET kernels.  Before
commit 433380f5ab8f ("net: skbuff: don't BUG() on a missing head_frag in
skb_zerocopy()") it hit a BUG().  The request only needs CAP_NET_ADMIN
in the user namespace that owns the network namespace.

Move the check below the small-payload path and document the -EFAULT
case.  A genetlink reproducer run as an unprivileged user in its own
namespaces warns before this patch and doesn't after it.

The small-payload path hands @len to skb_put(), which panics on a
negative value, and nothing runs ahead of it now.  Reject a negative
@len or @hlen on entry with -EINVAL.  Neither caller passes one.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 433380f5ab8f ("net: skbuff: don't BUG() on a missing head_frag in skb_zerocopy()")
Fixes: af2806f8f90a ("net: Export skb_zerocopy() to zerocopy from one skb to another")
Link: https://lore.kernel.org/all/179173804997.434549.4450793967361922984@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 15d1f4142f29..d79d8463c44e 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4072,8 +4072,10 @@ EXPORT_SYMBOL_GPL(skb_zerocopy_headlen);
  *	Return value:
  *	0: everything is OK
  *	-ENOMEM: couldn't orphan frags of @from due to lack of memory
- *	-EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head
- *      payload would be mixed with unreadable frags.
+ *	-EFAULT: skb_copy_bits() found some problem with skb geometry, @from has
+ *	no head_frag and @hlen is 0 while @len doesn't fit in @to's tailroom,
+ *	or readable head payload would be mixed with unreadable frags.
+ *	-EINVAL: @len or @hlen is negative
  */
 int
 skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
@@ -4084,15 +4086,23 @@ skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 	struct page *page;
 	unsigned int offset;
 
-	if (unlikely(!from->head_frag && !hlen)) {
+	if (unlikely(len < 0 || hlen < 0)) {
 		DEBUG_NET_WARN_ON_ONCE(1);
-		return -EFAULT;
+		return -EINVAL;
 	}
 
 	/* dont bother with small payloads */
 	if (len <= skb_tailroom(to))
 		return skb_copy_bits(from, 0, skb_put(to, len), len);
 
+	/* Without a head_frag the head can't be referenced as a page, so the
+	 * caller has to ask for it to be copied.
+	 */
+	if (unlikely(!from->head_frag && !hlen)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+
 	to->pp_recycle = from->pp_recycle;
 	if (hlen) {
 		ret = skb_copy_bits(from, 0, skb_put(to, hlen), hlen);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468941.1677988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gm-0000CF-BC; Tue, 03 Nov 2026 02:29:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468941.1677988; Tue, 03 Nov 2026 02:29:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gm-0000Ax-5o; Tue, 03 Nov 2026 02:29:04 +0000
Received: by outflank-mailman (input) for mailman id 1468941;
 Tue, 03 Nov 2026 02:29:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gl-0008O5-3r
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gk-006j9s-HA
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:02 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946e3-8faa-0a2a0a5109dd-0a2a450bb658-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:02 +0100
Received: from [209.85.219.54] (helo=mail-qv1-f54.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946ed-b7e8-0a2a450b0019-d155db36a57d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:02 +0100
Received: by mail-qv1-f54.google.com with SMTP id
 6a1803df08f44-91b9e758c50so3096676d6.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:02 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.254])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91cb4478981sm75612356d6.35.2026.11.02.18.29.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672941; x=1794277741; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=bijbOirZ4Girus6JZtdOIUGExRiLbvnwYnc1tpajYRo=;
        b=ZURCodQMdHCoo1vJxPygv3+zeng+Nb1PfSYWXtL3KTzB42SnFzin1GAXcVWKCvMUdz
         cAsSdk4aJe2i3Ubseu19Be9EfTuLlMus34pzuBhZLeLRdkTK3fXKbHxe/93NeCVMVYtO
         HJrXki9Y0IC2ZVf5WZR3/OZX1lrRphLZTsjm4ki41edvv5lWt9XT2OwBBgyYedn2PBrz
         zuL5ztz3U0vIiduNU81XobD/IQiX3uq7mgIjtRc5VOpJfeAz0VdQ9apvRwdpPbZTL+rc
         4VI26aK3TcO6nCDJ9/uVHS7rxNifyUl2GxC30b3t+xYwSAiAWqymZJaUzy62mIQ26+TS
         JRbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672941; x=1794277741;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=bijbOirZ4Girus6JZtdOIUGExRiLbvnwYnc1tpajYRo=;
        b=E5I6ee+M9ivbA0aMjLHQR+LIaJ29PZmKBfR/OyDti2NVA6Zdw6j4R2l1e3mt8JYts8
         q4ZWFGqyZPJd4e+EbnWWa5LeCdHD9H65aRmSDMH1LJ5ahc7vS+HMHKVKm4207pGUfCyY
         +M9O4ZykXWngH9ErlV1OlMrFrrhH3L/czqOfBaP+u5n+OQOaXXaHmtwuGDsX9QI0HQCX
         03GmUCLGMsaNlDCgrwZIjf1W9dIbXYuHl5Zo/kclRKWYe5Fm5+YYhE6uZ746XgaLIYbo
         sdyTLUShwqjMIlVBFoQZzAtM0VqJUI8Pmjq7HMaoWkNG2Mnftog4BcdQLfE5Y1jlElaX
         4dzw==
X-Forwarded-Encrypted: i=1; AKwUvBxq+1QZdlCn1J4NzsxqnfVF9b9aaZt6jlszT5oSpJL789dmsZpHNr7kZCSPSYWYaaVMJfrNQEW7CE0=@lists.xenproject.org
X-Gm-Message-State: APuU4Z87no2b1Sm4gbdkvHrBGz3RA3HQIbzSFiuhtojOAhHrN5al2oOE
	9VPO0yqt5gU+7UWA+Hl6dlKwHWse/aednLYOQpns7a2jMLiZDWPsXkcat71+3LkK9w8=
X-Gm-Gg: AYBFou0EVRKWGE78zEx5QBEONyhVZ7m4WGZtvPIp7ZddGTkXLhYS51cJvg48RTpLnW8
	x6d2/PGyH+rrTUZR+i3yruAKEsF79/UtgBUorWwSf13Z0Uhvw8+dmZJdyxOL+C+ksiMLztstutK
	M3SxHl/no2AasdOfWq8YhJN02m4pXRcw9gcLbYHfw78Bmos5lZt2cLMgFS73WNDGgbtsznVLhez
	3IA19V/AahE9zHE0yJTjrvJ2r+QITfe1OO+B1Iy7BnpzYMSIhsCTy29/EP/VW266JO1xDn/QDNe
	IpVYcWT6krE8Dr6FDtS9rmu6V1MUs7t5XNcdsiVYE4yeXELhv7bhWXd3J7IzATF7Z/aDMrVoE/U
	Crn50f6Osd9DaTAkZu0jvhWaIt0YZiehnkmNf7yclbcXAR9gavOx+iWPBuDgGJ7UqzOosZ/CX0p
	/Riwp3wj7kSsfxhstLGOvxTC/hAxI9NsWxYtJMuyhZcKQrGn3nR7h4ZQQLp/w7haqISCUo0WIPo
	EFll5nxin6CWeb2lNuW3+wm83ytTHjDnfTGy5YpmV9t6I4ZVNSaHAlJIDI+NA+sZOqmBc7PDG6R
	gGUqrvb7ecT8bqR6ecZ3ukFW9u8PLxcNrTt7lbZHu7cJ0w==
X-Received: by 2002:ad4:596c:0:b0:91b:b26a:9793 with SMTP id 6a1803df08f44-91c9089912dmr253427966d6.35.1793672941013;
        Mon, 02 Nov 2026 18:29:01 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:34 +0000
Subject: [PATCH net-next v3 08/15] net: skbuff: make skb_try_coalesce()'s
 len unsigned
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-8-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672922; l=3910;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=1Y0cvQvaM5FSv1SKjKnlMhZ0E3xrC/xLgZhh+okRfpo=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QBH7ZWBZQqHx6yS5pMlRH07gVqL72akx3JP37eJaittte4ldQJH4Xai9J9l8tM0eu/jylaeSWnS
 SeZVX/4+BAQo=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-42698a/1793672942-2C39B9EA-AAFA9BBE/0/0
X-purgate-type: clean
X-purgate-size: 3912

skb_try_coalesce() keeps from->len, which is unsigned, in an int.  A
corrupt from->len above INT_MAX turns negative, gets past the
len <= skb_tailroom(to) check, and reaches skb_copy_bits() as a negative
length.  skb_copy_bits() returns -EFAULT for most such skbs.  If
skb_headlen(from) is still a small positive value, skb_copy_bits()
clamps the head copy to the negative length and memcpy() takes that as
2GB or more.

skb_put() used to run before the copy, and its overflow check caught
most of these lengths, but not the ones that wrap skb->tail back below
skb->end.  commit 279877d86c82 ("net: skbuff: don't BUG() when
skb_copy_bits() fails in copy helpers") moved the copy ahead of
skb_put(), which left only the tailroom check.

Make len unsigned, like from->len, so that such an skb doesn't take the
copy path.  It gets to the truesize sanity check instead, which sees
that from->len is more than from->truesize can hold.  That check only
warns, and only after the head of @from has been added to @to as a frag
of that size.  Make the check refuse the coalesce, and move it ahead of
the head steal so that @to isn't touched.  The check compares the int
delta against len, so it now tests delta < 0 explicitly.

An skb from a driver that under-reports truesize used to warn once and
get coalesced.  It isn't coalesced any more.

A test module that coalesces an skb with a page frag head and a len of
0x80000010 gets false and an untouched @to.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 279877d86c82 ("net: skbuff: don't BUG() when skb_copy_bits() fails in copy helpers")
Fixes: bad43ca8325f ("net: introduce skb_try_coalesce()")
Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index d79d8463c44e..e400990595f8 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -6478,7 +6478,8 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		      bool *fragstolen, int *delta_truesize)
 {
 	struct skb_shared_info *to_shinfo, *from_shinfo;
-	int i, delta, len = from->len;
+	unsigned int len = from->len;
+	int i, delta;
 
 	*fragstolen = false;
 
@@ -6523,9 +6524,6 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		return false;
 
 	if (skb_headlen(from) != 0) {
-		struct page *page;
-		unsigned int offset;
-
 		if (to_shinfo->nr_frags +
 		    from_shinfo->nr_frags >= MAX_SKB_FRAGS)
 			return false;
@@ -6534,13 +6532,6 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 			return false;
 
 		delta = from->truesize - SKB_DATA_ALIGN(sizeof(struct sk_buff));
-
-		page = virt_to_head_page(from->head);
-		offset = from->data - (unsigned char *)page_address(page);
-
-		skb_fill_page_desc(to, to_shinfo->nr_frags,
-				   page, offset, skb_headlen(from));
-		*fragstolen = true;
 	} else {
 		if (to_shinfo->nr_frags +
 		    from_shinfo->nr_frags > MAX_SKB_FRAGS)
@@ -6549,7 +6540,19 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		delta = from->truesize - SKB_TRUESIZE(skb_end_offset(from));
 	}
 
-	WARN_ON_ONCE(delta < len);
+	/* @from claims more data than it has memory for.  Leave @to alone. */
+	if (WARN_ON_ONCE(delta < 0 || delta < len))
+		return false;
+
+	if (skb_headlen(from) != 0) {
+		struct page *page = virt_to_head_page(from->head);
+		unsigned int offset;
+
+		offset = from->data - (unsigned char *)page_address(page);
+		skb_fill_page_desc(to, to_shinfo->nr_frags,
+				   page, offset, skb_headlen(from));
+		*fragstolen = true;
+	}
 
 	memcpy(to_shinfo->frags + to_shinfo->nr_frags,
 	       from_shinfo->frags,

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468943.1677997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Go-0000WA-MA; Tue, 03 Nov 2026 02:29:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468943.1677997; Tue, 03 Nov 2026 02:29:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Go-0000Vy-Gb; Tue, 03 Nov 2026 02:29:06 +0000
Received: by outflank-mailman (input) for mailman id 1468943;
 Tue, 03 Nov 2026 02:29:04 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gm-0000Ip-Sc
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gm-009OZN-9J
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:04 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946a8-bab6-0a2a0a5309dd-0a2a4506a9a4-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:04 +0100
Received: from [209.85.160.181] (helo=mail-qt1-f181.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946ef-195a-0a2a45060019-d155a0b5e9b2-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:04 +0100
Received: by mail-qt1-f181.google.com with SMTP id
 d75a77b69052e-537548b811aso30168381cf.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:03 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-549893ec3e3sm14050831cf.3.2026.11.02.18.29.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672943; x=1794277743; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=YMQaM+kfeGbudokxSYshH02k0TvoZ+jUfxqiHHa4FNU=;
        b=OwCpMaId3UzkGFGKA4XhO1paemYGX19iFiQRjzr+HDH3hpcrPnJB9gN/JBlAXXwNqe
         IvbQaEIvPRogAKn/eqCbt2apNFWuJl/+Xm8E+F6lBg5HgcZtEJi4QPidVwFTFyy9JKt1
         vgbh7TX+KSP/A5P6oeV0Qv4D2KOENphCLI2edI9wdGkH2M9biwsCJFq76HrWT3sB294h
         72bEAy6mDirXaKdpuj96WaHSWQObBHEkWSLY5dz+eoW7pjjh7CzSYumGK59kyJ+KS+F4
         1ub7rRgfyklNe0IQKcXsC4X4OHTue2+yKgq9svnUu6TdltE9l77nXWq+jYz8sJvIh45o
         WIew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672943; x=1794277743;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=YMQaM+kfeGbudokxSYshH02k0TvoZ+jUfxqiHHa4FNU=;
        b=uTbxiYZ/sVC0ldD8i17AOvRWC0KfOdKnkD0l8qET4ButAu3A1eOBg/FCz+PNIbcfkI
         U4dWezteSl7YrvZBDCXYhn3wLNJLBUrWVZk/OLswX/HiUGZGtS32NtKbc1c9QZ6MYmL4
         zvqdPe6NcLEhG93PcQASOjB+t9MJydUhcW5k6+0l9alZ4XD3+JpBZiJTcfa4k/4GMdeh
         8CaaegUxry8/4NAFhouGtI4xwYLh/Nrgr3JGx8CFAYousnnZou2NYRpVLy1+Ts6hMLxS
         81sIU7OBmvNpZ1Zs05NPVNz3CiORmWGdm9Bd4REmw9nqshRqVncrZKIP0NBN+DhCSy9e
         lSyQ==
X-Forwarded-Encrypted: i=1; AKwUvBxZE2xZRuzotGLNKyMO4kCXiNRKKGR4foW2j4pO+9SOyLqotkxtLmsDIIMxTUrsceEsjKz17drbS/4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+69ad975gbst9G7PO3c820hfRJdPFLMXCSH4WoL3AvP/vmtSmW
	ylx/mTXb4Jmq1UgK3+drdaE8o8H/VXLv0gFQSkNJQCfpIkUTGJ/3s1hU/xw8nJg82Pw=
X-Gm-Gg: AYBFou02v26BJmzrdpJ1XSBMW73oPTKX8ERphcaSNvHjtv5x/goRd8LTKdKsYUC9KcX
	2jGZBF2cACqjwZ7bGs18vHeYJitFmPqSaAYLfgsgR8YgLI/OtpYE/+J3NCMBu+2+nuP5frXeage
	2i3mve0iJAihmmaNyVgmHnBRBZfQt7gmwjKFWzXgoeYHkrXglaIgmZ+WDm2587Jca18f3l5GjqV
	gw/+9gOwgyDULB0Zd5IlpXpV2UveSxRK0V2a7Zy7ZswgvkEJ2B3O58b1Mj3ZLAvyoA8zE8gMX7M
	XjX3BGnXQUc4WsW4oV8gTO6U0ikRVQsFrZJrmOPMpMw6hBOE4IH8FO/IQEkhtbMOY77JyZM7ZgT
	sdIEmKyqdpdo5ZBajNCYWNPSIRfObLcTaI9asgN/A8Vk45Tyk+kbmMVEHepxuH5aeG6yPtgsUmX
	k6ZO4RRfH0YUAv+Un8kF5H3WDyp+0DLw+j6UVd5KYj76HW1RRIjsiz6aYt1dmtJUtDSuyLR98kF
	cQwpaW4y9XygyG+5hrGG+ryM/iyX/VSi80mn88DnAsltFevtF3E0DN+JLv7Nlc5753vZ8yLGEMk
	GbWVrtEftfskHVdtyW53qtIcT8zlMQr/YJS6VSO1yVuixyo=
X-Received: by 2002:a05:622a:1c17:b0:536:622d:6932 with SMTP id d75a77b69052e-542b62a4588mr193626811cf.23.1793672942811;
        Mon, 02 Nov 2026 18:29:02 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:35 +0000
Subject: [PATCH net-next v3 09/15] net: skbuff: reject data_len > len in
 copy_and_csum_dev
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-9-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=1669;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=BXekQ+0ZZcw4R6M9C7rnaESTyK2ZJqIQSa++cyygjWo=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QNn8OCjsMCbSYh7N8mCbl9Otj5ltaFziZ7io28rIRlQmVoNauFULhcxK6cWv8CNZSqiLp0sSE2u
 sJ/9L7jVi1w4=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-16d1c6/1793672944-F580D77B-D389F653/0/0
X-purgate-type: clean
X-purgate-size: 1671

skb_headlen() is len - data_len in unsigned arithmetic, so it underflows
to about 4GB for an skb whose data_len is bigger than its len.
skb_copy_and_csum_dev() compares the checksum start against
skb_headlen(), so its checks don't catch such an skb:

 - Without CHECKSUM_PARTIAL the checksum start is skb_headlen() itself.
   On 64-bit the 4GB value becomes the length of the linear copy.
 - With CHECKSUM_PARTIAL any checksum start below len passes, whatever
   the linear area really holds.

The BUG_ON() that commit 56453199d28f ("net: skbuff: don't BUG() on a
bad csum_start in skb_copy_and_csum_dev()") replaced compared against
the same value, so this isn't new.  No path is known to build such an
skb.

Check for data_len > len before anything uses skb_headlen(), and zero
the frame.

Link: https://lore.kernel.org/all/179273112823.3134.12241973533522574538@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index e400990595f8..b74d8a6ef0f9 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4165,6 +4165,15 @@ void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to)
 	__wsum csum;
 	long csstart;
 
+	/* skb_headlen() underflows if data_len is bigger than len, and then
+	 * the checks below don't bound the copy from the linear area.
+	 */
+	if (unlikely(skb->data_len > skb->len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		memset(to, 0, skb->len);
+		return;
+	}
+
 	if (skb->ip_summed == CHECKSUM_PARTIAL)
 		csstart = skb_checksum_start_offset(skb);
 	else

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468944.1678005 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gr-0000q5-0o; Tue, 03 Nov 2026 02:29:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468944.1678005; Tue, 03 Nov 2026 02:29:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gq-0000ph-Sh; Tue, 03 Nov 2026 02:29:08 +0000
Received: by outflank-mailman (input) for mailman id 1468944;
 Tue, 03 Nov 2026 02:29:07 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Go-0000WY-RJ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Go-00CYCC-81
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:06 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae94690-e002-0a2a0a5209dd-0a2a450cec40-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:06 +0100
Received: from [209.85.219.52] (helo=mail-qv1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946f1-f479-0a2a450c0019-d155db34ad6c-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:06 +0100
Received: by mail-qv1-f52.google.com with SMTP id
 6a1803df08f44-91befe703c4so35781176d6.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:05 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91ca7f25fb7sm106263956d6.12.2026.11.02.18.29.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672945; x=1794277745; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=JVitIrAzmZ42ioJp40YLaoRa+dPpR6cnKnn2NFUMG3c=;
        b=TQGRsVfW61VePD3w4SItIxDX1ZECispDhhGtAdwSc3UePCBEoMnwIs4DWczGkwmRHT
         MaDP2JIr9B5HURL5SHfsRf8asF2vKY6F1krOPMqZ51cP7rj1GtnvsDFNXHwTU8PSLndw
         potpjwS7t6m2DMGjTA2Y5ormLZQTEPRxcdhFgdPk1ZX4R3BxVJ6wg8pV/z8NyzqXtSjW
         yC+jaJBakckGbwfB1pLL/jpSpf3Wuy/lAa1TX3mCjI9/LessfXSe0c8YdTPt5xHAbCdo
         F39mnAaNwLfXnG5TxmIZhn8HXwVfhzbfEiIvW/CoD3J/V/HUC7MKdtFvloHIhuEwFr5S
         ljcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672945; x=1794277745;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JVitIrAzmZ42ioJp40YLaoRa+dPpR6cnKnn2NFUMG3c=;
        b=PkeB/xqICjKKn0A0P3+YHtjaaEJrj0YUFObi6AAuVVXaYMpS8kow/XvuG3iqoNgDzX
         +SSqP8goHC/FOjtDFQ6OhZdMR/HD1FegCSwAJudBnHdB//oBVUlqL0rhxXP1hF2kEnXq
         I6E31NFYHVhdiiVnqZJE9aCvjeTkjsxEUx193xkRKU0j7n+CFed0gx5Ww4zMrkgNijsp
         QDucPWX/jbg2T6k0lXXkL058dlDoxFfLv9l2jGaF2Idvf+tnOhgUwv3DpdMVqdtafRhj
         B0DlmwipwZBa7ueBPF5Lo7Yaecy38tp4womqztzCTLbG8mSHRMrWUeLXdxEssZQFB6L9
         VSjg==
X-Forwarded-Encrypted: i=1; AKwUvByX2FYcsddqHKuZwmZco+YS76z8M/hyV5LtWafi+q8FfeRXg5QwO743SOkaocaBJZa/6NW/Jx5Ze7w=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+P1oEUHNKSooNveYPhVQP+vSRLa/ctmlinEBTsx2cA54e2Al++
	gBCP6Wld/gHC/1RQjWe1HNAOKppVgHL/K9EYZotzryTdSBizLTnzLDGSguj2fnU74qE=
X-Gm-Gg: AYBFou2oaWWao2AE7iWohRAPMPLgOutF814NmhOk9wZtuSmesEVO/Gwz9BgqHEbYFo/
	Ep62sOEHatZmFAPBTQ9eLjbEeqt+pgpT9LvRQ434Mo6ypgUspuUC5wXdSjCKVql1LNSFLrBpjiP
	+wnUaxjBt1Mgv0rs/MVuy0GHUxmGn7xpWNK42oEAOYRhwCtDrd0Hl9kgRMSgpDxK3sRP/ho92wX
	FHcBKTKgj4huDZV7EJt2PK9SqEPdZoIzf9smhs8TtbyhVYAsE/xMJ0+kgq7liVYmiSw++/QmxoS
	Wqe3hXtG9joChb//zlnT1NRU7I2K11eAA0B7XAcsqpgJmhFW8d68A1cwFaS8kvWApAdpvQV7IW7
	piFF73aqz6SKlQiO14Yvdqirgwfk5DYutzhcA6Ac0KEM9QV/kDrCzl6o/0QuMjXBGAb7WgHqjEa
	iu+s3/mC981BRrRY/EElyLr6OvSjnTv1pGSp/T2AhX7qWtFcwdHoqhl6olhU+F1Vn/qC9AnPg1C
	o0pH7ZZo/rG4IKoJCe5y+PZ7nSfOQSLO/p8vDXvz6TxCGCT7ro2AhA8m/a2cb6KZy0a5XDAs7Af
	23Bf8fqWo3J1ia0m3q6bulJXQjtxx9MpU3luzNkhJw+hYQ==
X-Received: by 2002:a05:6214:d65:b0:91c:8fa6:1789 with SMTP id 6a1803df08f44-91ca4b92fdcmr194775386d6.28.1793672944680;
        Mon, 02 Nov 2026 18:29:04 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:36 +0000
Subject: [PATCH net-next v3 10/15] net: skbuff: reject a negative length in
 skb_copy_and_csum_bits()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-10-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=2784;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=PruTOHBwv5dTjTwNqILcr1QH0bLKSEEDfj9BCJzaYZc=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QN22JQgoXgrJiR5yAYHNf+ITF3NfM8ygPUQ+LdAZK32fRjNubeEAAV9Ib7v/7F/D7ljAdUlHQzF
 J2Sm3nsf4Vgw=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793672946-03ED2A5B-1BF45C0D/0/0
X-purgate-type: clean
X-purgate-size: 2786

The head, frag and frag_list copies in skb_copy_and_csum_bits() each
clamp their length to @len.  A negative @len from a broken caller
therefore becomes the copy length, and the copy takes it as a huge
unsigned value.  The two len > 0 tests around the zero-fills only
protect the zero-fills.

Reject a negative @len on entry with -EINVAL and drop the two tests.
@to isn't touched in that case.  Every caller already handles an error,
and skb_copy_and_csum_dev() zeroes its whole frame on one.  No caller is
known to pass a negative length.

Found by the Sashiko AI review of the BUG_ON() series.

Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index b74d8a6ef0f9..e3fc6291d223 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3731,8 +3731,7 @@ static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
 	if (unlikely(len)) {
 		DEBUG_NET_WARN_ON_ONCE(1);
 		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
+		memset(to, 0, len);
 		return -EFAULT;
 	}
 out:
@@ -3748,9 +3747,10 @@ static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
  *	@len: number of bytes to copy
  *	@csump: where to store the checksum of the copied bytes
  *
- *	Return: 0 on success, or -EFAULT if @skb has unreadable frags or runs
- *	out before @len does.  On failure *@csump is not set and the part of
- *	@to that couldn't be filled is zeroed.
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	has unreadable frags or runs out before @len does.  On failure *@csump
+ *	is not set.  On -EFAULT the part of @to that couldn't be filled is
+ *	zeroed, and on -EINVAL @to is not touched.
  */
 int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 			   u8 *to, int len, __wsum *csump)
@@ -3760,6 +3760,14 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 	int pos = 0;
 	__wsum csum = 0;
 
+	/* Everything below clamps its copy to @len, so a negative one would
+	 * turn into a huge copy.
+	 */
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
+
 	/* Copy header. */
 	if (copy > 0) {
 		if (copy > len)
@@ -3775,8 +3783,7 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 
 	if (!skb_frags_readable(skb)) {
 		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
+		memset(to, 0, len);
 		return -EFAULT;
 	}
 

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468947.1678014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gs-00016b-KH; Tue, 03 Nov 2026 02:29:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468947.1678014; Tue, 03 Nov 2026 02:29:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gs-00015y-Ee; Tue, 03 Nov 2026 02:29:10 +0000
Received: by outflank-mailman (input) for mailman id 1468947;
 Tue, 03 Nov 2026 02:29:08 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gq-0000os-P6
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gq-00BP11-5y
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:08 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946df-bab6-0a2a0a5309dd-0a2a4502d736-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:08 +0100
Received: from [209.85.222.173] (helo=mail-qk1-f173.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946f3-6ca4-0a2a45020019-d155deadc0b4-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:08 +0100
Received: by mail-qk1-f173.google.com with SMTP id
 af79cd13be357-93f22a8515eso350685085a.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:07 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.254])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-94425ac5322sm974378785a.39.2026.11.02.18.29.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672947; x=1794277747; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=beA32Wl5uGeVdDRquUg9onzNEjLmSlivsd983Tz/Vmc=;
        b=MIVy3/0sBd1CCo+yd20XI3EDIHDtOeHsAt9I3WRZjR6qRIKFoVQbVHc4uQUmse5rU6
         vpT09fpdavPkLlzyFTY/b0FqA1DhV0HfW/uIldt+0/azSKTddXZBYiLqYY9O/gBlYhe/
         ewFkizTnzGK6GMOMQXOarmQfa1IjLJL5sahxyy94MBdy5WMhACHxYBf4/7DkrO+SmRtj
         M2ghZeM9rLnLmC3LIizqm4g6D9dQ6/aERPd+jtIA6dwkpIFmzlpeQ7YYGeCrHz0aV/KF
         XAgosV3F1kWG467TbHmGr6tSyd+cP51mQ/ynjaA8naVqi+F4YnOUWqfUIZS/mqUoRCXK
         ekUQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672947; x=1794277747;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=beA32Wl5uGeVdDRquUg9onzNEjLmSlivsd983Tz/Vmc=;
        b=lBvoRlpIsX96pfnJP2QI55hojGMrhd9+Os7xJhe1q8OcaIQ81QtZeSUMm26SRZlgNg
         axQohsPn+5CqyC190cghh//7Tjrg/wlOjB5YmeN+tEVhxKDcY+5jXsYXtXSFf3+T2rFN
         VKBPTEOP6SmfnDsD/uLmhZgDv5T4RvjNDxZqqzzCb5hGkQ4qEvoZJFDgh9+ViGIeefQb
         SE6pxMiqHdybTjYiU5zMEHv8qiJA1xN+Yj/3EPXypDTJWLcp1sMO8+iQXZF5G15+mTLc
         M166AFU48LDY3Uopw246ScrdxfH0BjpWqLWjnaP5Y1VhXGXKiusABJsAv0isd40kKNf8
         BVLA==
X-Forwarded-Encrypted: i=1; AKwUvBy+9F/W8+zlyBRu20ABmYruvES1SQwhcBMm5UT5GDkOLurON20XSFArz4LTf/EPu1hF6lhd4i4bsfQ=@lists.xenproject.org
X-Gm-Message-State: AFq9FYImJsSLEIOXASdemLk0XFXUzkbCuRyu1fYDkmVW9XbwyafbZVca
	bTFUnZqqlxm9Qkp6DYELtEN7C72bM0+LBW8uwkk1IJOt7SzsC2qNaC851Alce9BXBwg=
X-Gm-Gg: AYBFou09tXr85cOsgdoARSwfvbLxWItThftVKzpF6AAMw4bvPLFpY2cZT37gSciKpEq
	KabFMeYEPHUPRgtNgzitZZegebk4CD1y2l4eiCsY+uptrkFRPxKrN2Nna7PbWDSENTsAK6zHts2
	+dfU0TxHKqW33+BxPWOOQBJyRK+T66SXiFZ2H/tOi43seeOcvioB++FC/eny8RyBfLolz4bkcR3
	7loAnhncJFvaNmXuAdFtyZzUi0x6HYMSaYiHg2uRXGEanKbNyQ3+3J1Kj+qAsEDMWagjRt4Tb/1
	lE7ugdwtHJhKX9IeGepVoV3cg/il01P+V+7L+M7bfUj4VOpZTKoIbhc3U+kP2ZliV+9HGdXtQ5+
	04rf9i4QqNW/CDL9aD8hW9A7ZkWmI6o2GjBArFxaqfmbxQ8T4fgX4LPbo9iMoM9iJ0oMhO3QXQg
	BaHkJyqMKO+BkoUpSBx7SZqsLY61gv2xV1sME7/GiGKYDP3+cmsEa9KAITKN6lkesxb/9jNa5yw
	B0YvWRT//xHk2yaU81jrYQbpqkQYNDdPP5SGicU1Lv/sjJGUtrOb8gVHuXFsUM8tIXCe/cBq9TY
	Qe/9zAaayfgZL2IAck5HQ624s8Dm/JrfZJ2xRUWl8Z+fKw==
X-Received: by 2002:a05:620a:2b43:b0:93d:92a9:1a5e with SMTP id af79cd13be357-94421799683mr2059957985a.37.1793672946476;
        Mon, 02 Nov 2026 18:29:06 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:37 +0000
Subject: [PATCH net-next v3 11/15] net: skbuff: don't run off frag_list in
 skb_segment()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-11-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=3043;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=ZFtZ+wZ1/BRwvrFDewd6GJQ8sWu7jAVgTMehQH1Him4=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QF1JASk2FaQ2hzp9j2Mg5ifJ5XQ/M7YFkqH/XBR1KN5aCYeKq0yVaHYAgZGVZBKc6lSw+ESgzWk
 7uQyVrofUxQU=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-720697/1793672948-31BC82AC-DCA57C44/0/0
X-purgate-type: clean
X-purgate-size: 3045

skb_segment() keeps going until it has segmented head_skb->len bytes.
It takes the data from head_skb and then from each member of the
frag_list.  If head_skb->len counts data that this walk can't find, the
walk runs out of members while it still owes data and dereferences a
NULL list_skb.  There are two ways to get there:

 - head_skb->len is bigger than what head_skb and its frag_list hold.
 - A member has a frag_list of its own.  head_skb->len counts those
   bytes, but for each member the walk only looks at the linear part and
   frags[].

No path in the tree is known to build a GSO skb like either.  GRO
flushes instead of chaining an skb that already has a frag_list.  IP
reassembly does nest frag_lists, but a reassembled skb isn't GSO.

Check list_skb in the three places where the walk moves on to it, and
fail the segmentation with -EINVAL.  The KUnit cases in the next patch
hit the NULL pointer dereference without this patch, and at least one of
them hits it again with any one of the three checks taken out.

Without SG the payload is copied by helpers that check the length
themselves and recurse into a nested frag_list.  That path still fails
for a len that is too big, and still segments a nested frag_list.

Found by the Sashiko AI review of the BUG_ON() series.

Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index e3fc6291d223..b2c44a58db23 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5164,7 +5164,16 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 		int hsize;
 		int size;
 
+		/* list_skb runs out early if head_skb->len counts data that
+		 * this walk can't find: bytes that aren't there, or a member's
+		 * own frag_list, which the walk never looks inside.
+		 */
 		if (unlikely(gso_by_frags)) {
+			if (unlikely(!list_skb)) {
+				DEBUG_NET_WARN_ON_ONCE(1);
+				err = -EINVAL;
+				goto err;
+			}
 			len = list_skb->len;
 		} else {
 			len = head_skb->len - offset;
@@ -5174,7 +5183,8 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 		hsize = skb_headlen(head_skb) - offset;
 
-		if (hsize <= 0 && i >= nfrags && skb_headlen(list_skb) &&
+		if (hsize <= 0 && i >= nfrags && list_skb &&
+		    skb_headlen(list_skb) &&
 		    (skb_headlen(list_skb) == len || sg)) {
 			if (unlikely(skb_headlen(list_skb) > len)) {
 				DEBUG_NET_WARN_ON_ONCE(1);
@@ -5294,6 +5304,12 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 		while (pos < offset + len) {
 			if (i >= nfrags) {
+				if (unlikely(!list_skb)) {
+					DEBUG_NET_WARN_ON_ONCE(1);
+					err = -EINVAL;
+					goto err;
+				}
+
 				if (skb_shinfo(nskb)->nr_frags &&
 				    nskb->pp_recycle != list_skb->pp_recycle) {
 					nskb->data_len = pos - offset - hsize;

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468949.1678023 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gu-0001N9-3j; Tue, 03 Nov 2026 02:29:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468949.1678023; Tue, 03 Nov 2026 02:29:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gt-0001MZ-Sv; Tue, 03 Nov 2026 02:29:11 +0000
Received: by outflank-mailman (input) for mailman id 1468949;
 Tue, 03 Nov 2026 02:29:10 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gs-000142-Da
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gr-00CYCC-Qg
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:09 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae94690-e002-0a2a0a5209dd-0a2a450cec40-26
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:09 +0100
Received: from [209.85.160.175] (helo=mail-qt1-f175.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946f4-f479-0a2a450c0019-d155a0afe483-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:09 +0100
Received: by mail-qt1-f175.google.com with SMTP id
 d75a77b69052e-53cd0c8614eso28050841cf.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:09 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498b49ce1dsm13814311cf.5.2026.11.02.18.29.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672948; x=1794277748; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=MseyG3+pKKIruXhcv710BgM8fgKq/guu+mQy13emKdo=;
        b=UDvQf9nq8EcsxThyEuq1CbS0swoqeQQgHLSzrZpNj8wjU4/l1mMSRNrgaxMQSpNasu
         oKsmMY67U8okM/ibsygnwzUUFqozXMQST9pHIvsbOnNzrPxHw9iLkw1bPOGi5Du9Lp2f
         XFjyJitMuNM3zIRLDKRk08kzBSY8IhT2f8WFTNcUwU89SX8Iw/3/CfQLYlWTVA2ZdsTh
         +UHuZE4UEJTK4UOdibkZic7r6VTCDGm86vH74p9X+UeF1ilk7zBo6N0mdihpBl12SK/n
         mHdd54s1dQoqW+QxFOllSc6sj8LTTuRt189dJS+HdzWLAbc+2dX/o6DY/xK9IPab8YIm
         e9fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672948; x=1794277748;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=MseyG3+pKKIruXhcv710BgM8fgKq/guu+mQy13emKdo=;
        b=yQ+QFe1lya6II1UqlC7Txeseg+VBXYKXHON1swEW/FU2SBxmTJM3Rcm3Xbmgf3qNeL
         QDomOoKpbd2X2Y9/mYVPU2m5Kj3cNA2HrTlMVYpQnc6zx6AzFB4LEk/+o8gd00wxDIC5
         tvBvxc6wOeFkW4gtZYyRtsNZ/8Q/rBbV3sl1s0RX47eNl8CMzlCFOm9NeDGOnD/1q6Y0
         9Ut4Tr8BvM5fKW0I3r8Z/nMY6exrMIEFVrB1FWHd1iV3Wggni+tcPFatU6hbbHEU3g7u
         3mEwbCrq9eUdwqWNWkjf+eTyZbsDUJBE7mW6a7brohcJW4SwbF6lFQittZ5CAkCA/TGJ
         qulg==
X-Forwarded-Encrypted: i=1; AKwUvBypcZ3D5GbBNR8ONNtzzGQ4MFjqNnCD5JtX9LaLM8HAGhVbQen/LIn3yD+n0W4hfoErP5mX737q2l8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+uZsukGHq0THSwKzbR8cFDLwmGZtfwRj8X9UDvfAHNl06XVJgm
	qinsH8PB82KfatnkZ59FL47qDneSLOukJes6ffblFRAhfkIu3OZFkZLMtR0JkQxTDdI=
X-Gm-Gg: AYBFou1C1TrieimN2J0MowNdjx9Zj/dpGbH6TYpMTqUoII15HkqM8F+sMj2dK6bd5sQ
	eib3c5gntpsFQOnoI06vMXBKpko2FSnC/CUToRgIy/xlrVtvNv2hJahmfJVW6TReNPlL3Nw6ZMZ
	4kA82On0Jxgb6rsIToXS0/tokz2qhaYWNl9lF1Bs31N2nn1s9v0IT/KArCGgPWL8ND5i22Ou6D9
	JlFwi2MBbvuYpTrutAQgCsbTfTVXgCpt+fMQQnTadyp3VwV8Ajo50Rk6OF8tTc50YHry6yYPGVA
	YnDz0a9aUrj0X3/LA65wTdG+naB6ScGx/nXG38cDcRkcHG8Tj44iwGTJqwdokeT9O6hbAdGQY/k
	nojNJ8SeXqFWygt56191DP25crH5sWQRYlrJRocMZY3k2T0i7ikqr+6rK9yAB7osApc8TJCqA+1
	RxU1MGlJEgMe2sXyR8p/DApOTpbvWk0scmQd4t6pYdDISw1DCAYuitlpSS44xz1qOF1K1zw3C+C
	bHkHXg+SuHdRcyLeYcWo2scapJ+v0N3MEtNfAyGWbyADJ/9Gn7hWGKPMtxC13i6kf3Z39pq9mKG
	4u1R3FdbI3fbTWOA8oEHevGKxbkllMFI8xThqmV6tHt0AA==
X-Received: by 2002:a05:622a:250e:b0:535:a5fa:ee05 with SMTP id d75a77b69052e-542b7ff0369mr187387061cf.69.1793672948244;
        Mon, 02 Nov 2026 18:29:08 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:38 +0000
Subject: [PATCH net-next v3 12/15] net: test the skb layouts skb_segment()
 refuses
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-12-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=5235;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=/VgW0oW9T+Tzy+i1BGO6eU3AucNR1Ntg0slpO9Mj98E=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QKMmn6TBuIrBkysKogxABEz6HQG1Via38Q+vUl7yCgJi2hIoaEjJWJRzWZW20ii4tSe3afYAeZ4
 ExrUaw3kh8Ao=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793672949-020C1A5B-F8DA71D8/0/0
X-purgate-type: clean
X-purgate-size: 5237

The GSO KUnit test only checks layouts skb_segment() can segment.  Add
the ones it has to refuse with -EINVAL:

 - The non-uniform frag_list with SG on, which used to hit the
   BUG_ON(i >= nfrags) the existing test steps around.
 - A frag_list member that has its own frag_list.
 - An skb whose len counts bytes it doesn't hold.  The data runs out on
   a segment boundary, in the middle of a segment, after the last
   frag_list member, and with GSO_BY_FRAGS.

They warn on CONFIG_DEBUG_NET kernels, so run them with the warning
backtrace suppressed.  Also update the comment on the non-uniform case,
which still says SG would hit that BUG_ON().

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/net_test.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 95 insertions(+), 3 deletions(-)

diff --git a/net/core/net_test.c b/net/core/net_test.c
index 2b5080c22663..298ca240104c 100644
--- a/net/core/net_test.c
+++ b/net/core/net_test.c
@@ -41,6 +41,12 @@ enum gso_test_nr {
 	GSO_TEST_RESEGMENT_MULTI,
 	GSO_TEST_RESEGMENT_TAIL,
 	GSO_TEST_RESEGMENT_ONE_MSS,
+	GSO_TEST_FRAG_LIST_NON_UNIFORM_SG,
+	GSO_TEST_FRAG_LIST_NESTED,
+	GSO_TEST_SHORT_LINEAR,
+	GSO_TEST_SHORT_LINEAR_STRADDLE,
+	GSO_TEST_SHORT_FRAG_LIST,
+	GSO_TEST_SHORT_GSO_BY_FRAGS,
 };
 
 struct gso_test_case {
@@ -58,11 +64,16 @@ struct gso_test_case {
 	unsigned int gso_type;
 	/* skbs from alloc_skb() instead of build_skb(), head_frag clear */
 	bool no_head_frag;
+	/* bytes that skb->len counts but the skb doesn't hold */
+	unsigned int missing_len;
 
 	/* output as expected */
 	unsigned int nr_segs;
 	const unsigned int *segs;
 	const unsigned int *gso_segs;
+
+	/* skb_segment() is expected to fail with this error */
+	int err;
 };
 
 static struct gso_test_case cases[] = {
@@ -241,6 +252,61 @@ static struct gso_test_case cases[] = {
 		},
 		.gso_segs = (const unsigned int[]) { 0, 0, 0, 0 },
 	},
+	{
+		/* frag_list members that don't end on gso_size boundaries
+		 * can't be segmented with SG
+		 */
+		.id = GSO_TEST_FRAG_LIST_NON_UNIFORM_SG,
+		.name = "frag_list_non_uniform_sg",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 4,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE, 1, GSO_TEST_SIZE, 2 },
+		.err = -EINVAL,
+	},
+	{
+		/* the second frag_list member hangs off the first one's
+		 * frag_list instead of off the head's
+		 */
+		.id = GSO_TEST_FRAG_LIST_NESTED,
+		.name = "frag_list_nested",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE, GSO_TEST_SIZE },
+		.err = -EINVAL,
+	},
+	{
+		/* the data runs out on a segment boundary */
+		.id = GSO_TEST_SHORT_LINEAR,
+		.name = "short_linear",
+		.linear_len = GSO_TEST_SIZE,
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
+	{
+		/* the data runs out in the middle of a segment */
+		.id = GSO_TEST_SHORT_LINEAR_STRADDLE,
+		.name = "short_linear_straddle",
+		.linear_len = GSO_TEST_SIZE + 500,
+		.missing_len = 700,
+		.err = -EINVAL,
+	},
+	{
+		.id = GSO_TEST_SHORT_FRAG_LIST,
+		.name = "short_frag_list",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 1,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE },
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
+	{
+		.id = GSO_TEST_SHORT_GSO_BY_FRAGS,
+		.name = "short_gso_by_frags",
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { 100, 200 },
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
 };
 
 static void gso_test_case_to_desc(struct gso_test_case *t, char *desc)
@@ -337,21 +403,47 @@ static void gso_test_func(struct kunit *test)
 		skb->data_len += total_size;
 		skb->truesize += total_true_size;
 
-		if (tcase->id == GSO_TEST_GSO_BY_FRAGS)
+		if (tcase->id == GSO_TEST_GSO_BY_FRAGS ||
+		    tcase->id == GSO_TEST_SHORT_GSO_BY_FRAGS)
 			skb_shinfo(skb)->gso_size = GSO_BY_FRAGS;
+
+		if (tcase->id == GSO_TEST_FRAG_LIST_NESTED) {
+			struct sk_buff *first = skb_shinfo(skb)->frag_list;
+
+			skb_shinfo(first)->frag_list = first->next;
+			first->next = NULL;
+			first->len += tcase->frag_skbs[1];
+			first->data_len += tcase->frag_skbs[1];
+		}
 	}
 
+	skb->len += tcase->missing_len;
+	skb->data_len += tcase->missing_len;
+
 	features = NETIF_F_SG | NETIF_F_HW_CSUM;
 	if (tcase->id == GSO_TEST_GSO_PARTIAL)
 		features |= NETIF_F_GSO_PARTIAL;
 
-	/* TODO: this should also work with SG,
-	 * rather than hit BUG_ON(i >= nfrags)
+	/* TODO: this should also work with SG, rather than fail the
+	 * i >= nfrags check in skb_segment()
 	 */
 	if (tcase->id == GSO_TEST_FRAG_LIST_NON_UNIFORM)
 		features &= ~NETIF_F_SG;
 
 	SKB_GSO_CB(skb)->max_segs = tcase->max_segs;
+
+	if (tcase->err) {
+		/* the suppression block doesn't run if it can't be set up */
+		segs = NULL;
+		kunit_warning_suppress(test) {
+			segs = skb_segment(skb, features);
+		}
+		KUNIT_EXPECT_EQ(test, PTR_ERR_OR_ZERO(segs), tcase->err);
+		if (!IS_ERR_OR_NULL(segs))
+			kfree_skb_list(segs);
+		goto free_gso_skb;
+	}
+
 	segs = skb_segment(skb, features);
 	if (IS_ERR(segs)) {
 		KUNIT_FAIL(test, "segs error %pe", segs);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468951.1678033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gw-0001qk-F6; Tue, 03 Nov 2026 02:29:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468951.1678033; Tue, 03 Nov 2026 02:29:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gw-0001pv-6J; Tue, 03 Nov 2026 02:29:14 +0000
Received: by outflank-mailman (input) for mailman id 1468951;
 Tue, 03 Nov 2026 02:29:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gu-0001N8-5S
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gt-006j9s-I2
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:11 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae94693-8faa-0a2a0a5109dd-0a2a4503aa56-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:11 +0100
Received: from [209.85.222.172] (helo=mail-qk1-f172.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946f6-fae8-0a2a45030019-d155deaca873-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:11 +0100
Received: by mail-qk1-f172.google.com with SMTP id
 af79cd13be357-93a40a9a01aso30472685a.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:11 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-94425ae63fesm971577285a.42.2026.11.02.18.29.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672950; x=1794277750; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=EA63ABVwcLs3h/JxipVqiXIy94JHS7osXg+Mm97gaVg=;
        b=r5NeNFlV1L7VjnbdnNqDXC+22zl16zqJGUDtHUfHgXv7SCamPlIZDejoJGrmAImOVj
         y3sODP7vLXt1HTuhaR0HQPBUYEoZQcIod/Yd3BW/ysT7h6RaVSqQCAMtw7Ql3srEe627
         rAvSe5QMaWeySkdrYSxi4hubR/OJAT0LgVWHcDRaNZa1Rc5VQC8Ug6X8hHZoPV0F7L49
         3JwnNYjIF3hXmQaI1PDeoGH9d8pTNwBGeT3bhTUzqI+kgYf+0q0piZ27ZKz/SFXUPh9T
         Ek+U6PgCSATirJ93vBL271YAzmmPoMmYfYpNxjJsIU0mwm2wQxj1SlkkGWBRt3rTc513
         UGDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672950; x=1794277750;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=EA63ABVwcLs3h/JxipVqiXIy94JHS7osXg+Mm97gaVg=;
        b=ca2SF2BBpq4Au02yo8rLLy0MLydrqn36dGEJ1mZKPZyfVplAvPODrQqfmZ8Ta4/A0v
         WHcg7h8OstkvDMKk2D0VaoOeArw/l/BpCA28mpCUjSyMVI4EUizTCDTXP1arQUpAQIFy
         vbriwknvbdfvYujDaaCllSjQlf+2rlyd047rVFw6BQ1pLR6ha0u2bDoIMbPii/Ouo9eZ
         lG3Gh2tSY4rorTYiybNruiOGI2dljo7dDhLH9vunXySMBfyF532/2gwt64g2Pl08p3kj
         diaVqirG9s8iLQkjKDu2zOrDy+8RuKvLSRSpifkSI1pcJMynE52Ptos3RMIlIbKAMT7Y
         ZPSA==
X-Forwarded-Encrypted: i=1; AKwUvBw8cyjj6PPi9c5OX/cMBj7gzwRJRDupFyPTpzvO4JW7SPAGR4l1uy0QCN3h3n6/HKLx+B6UBEAiBuw=@lists.xenproject.org
X-Gm-Message-State: AFq9FYK08HNARuzwB3/CawyLvzncKZQSnvuX69HnWMuHNhiLPQ7mLAyE
	EjN3VrNwJTPdjSqzVedUV8Z3R0eR6uJjUPD2Ce5dl6E+dX7wHP6CDyFX41MX0teWpeU=
X-Gm-Gg: AYBFou3+KuJIv+MD5SHE+g9KhvR2kgxa46JbHg8/fTEnUOrhFsIUO7e+VgFoo7a82Hj
	Hj6THxf0X9ZgoiGSvCH+URWcQXJkmqzyULXJQJ684rUFUtUH8bGyIELkQCfUHA2L6zLsYIWAonR
	mZI/CRPiDK50nsBhs9MqZlZxLWVfAffmI5s32W1pLwqRGAQ2WUZAQ5bEIV5doIMRYSmknKd7dGT
	wJg1OdJN72vIayfllNuVAjeT9rEetMHWeC/vsg7jei+f9TkEIXjTWzovtVfLkbIBHfHuA3vhwD6
	FS00U8QX5wlrnwszaxKEeuQRPbNjY/Ftac7a9NsIGMbal8klSJ3ssTd4w30Re7a9bnOSpKNdC04
	Gq3/nqX+5JJOZhLxJlOaLqfdqX1ckxoeidgbzKpizHepC6Ckung57yvKKynI/oR1GG4830I5be4
	JAS9zX7r6ceIYOtMMMnGUhQKzRT3id4qupitavSaj6EZbMtipQb6ImwH32KBv0O/j91zC16ZVpD
	77WO3B88vo8GMPLBa+MDbPl5NHlJ3comYq5K7rUIHGu/IHalt4NoOznVgxrAJqlCNUPpnVKwhLe
	tCMWlEBeVWxlVNOXMa5/rrgZ2f5zyNhwGrQSgQ+pb/S5dA==
X-Received: by 2002:a05:620a:17a9:b0:93e:5ff9:a8f4 with SMTP id af79cd13be357-9442135f4e4mr1720591185a.0.1793672950127;
        Mon, 02 Nov 2026 18:29:10 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:39 +0000
Subject: [PATCH net-next v3 13/15] xen-netfront: don't BUG() when
 skb_copy_bits() fails in bounce_skb()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-13-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=1213;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=m7OgokcwaZHLGjQXMpKbgpowrvI9FQDluMyHz8mi3Ig=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QG6bjet0JqDvVFJtGL5dr8aWS2Y1CrqqPkeXYvW304JvA/+zhQI48mUWQjXqe9iWtZ3dd/1Xbtp
 dxeEcxZi/5gk=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-33051d/1793672951-6DCD34E9-DF4CE17C/0/0
X-purgate-type: clean
X-purgate-size: 1215

bounce_skb() is an open-coded skb_copy() into a page-aligned buffer, and
it has the same BUG_ON(skb_copy_bits()).  skb_copy_bits() fails when the
skb's lengths don't add up or its frags are unreadable.

bounce_skb() already frees the new skb and returns NULL when the
allocation comes back misaligned, and xennet_start_xmit() drops the
packet in that case.  Take the same path, with a
DEBUG_NET_WARN_ON_ONCE() for debug kernels.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 drivers/net/xen-netfront.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index fdcb91042f29..17811d81937c 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -695,7 +695,12 @@ static struct sk_buff *bounce_skb(const struct sk_buff *skb)
 	/* Set the tail pointer and length */
 	skb_put(n, skb->len);
 
-	BUG_ON(skb_copy_bits(skb, -headerlen, n->head, headerlen + skb->len));
+	if (unlikely(skb_copy_bits(skb, -headerlen, n->head,
+				   headerlen + skb->len))) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		kfree_skb(n);
+		return NULL;
+	}
 
 	skb_copy_header(n, skb);
 	return n;

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468959.1678040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gy-00028C-6F; Tue, 03 Nov 2026 02:29:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468959.1678040; Tue, 03 Nov 2026 02:29:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Gx-00026f-OH; Tue, 03 Nov 2026 02:29:15 +0000
Received: by outflank-mailman (input) for mailman id 1468959;
 Tue, 03 Nov 2026 02:29:14 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gw-0001qW-Et
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gv-00143l-Rl
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:13 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946b5-2eae-0a2a0a5409dd-0a2a4501bef4-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:13 +0100
Received: from [209.85.219.43] (helo=mail-qv1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946f8-5984-0a2a45010019-d155db2bb904-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:13 +0100
Received: by mail-qv1-f43.google.com with SMTP id
 6a1803df08f44-91c79f306e9so41141136d6.3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:13 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91ca7f401f5sm106359816d6.19.2026.11.02.18.29.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672952; x=1794277752; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=vm4X83cKQV2cViXLrBy8CdaLxj8kNgfl4SZFvLru4UA=;
        b=byYtmngdSHP4ERa+/tfXK5vZV37Xudj+GQchWX57ogK26kh0qi7/Wu+9RHqHP6Lb0O
         PBFymtQ5BB2HJ7SFeZxaunXVvZtNDJshI62HOdCbW3WjnahAPMS5ocCDPl4nhLxWcFcC
         e1bF/9PWFB92TdqAo0zPsp0w8lg94sosXGJRTS/AdapQiwU6r1z0hBFuNb8LTi3i0Vt/
         CrEGg1BMwT0+65nbMSKR5bC6T5vOyDyHbpVd9/O4UlyWiANwhWuY3vkV2y9l1LENm6QI
         Ur+/ldYCWQKNHR847FyUeeUVuJDAX2Bnt55Bp+MyQ6+4jJGrY5mbXgIc0LIlx7A8shC0
         5wEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672952; x=1794277752;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=vm4X83cKQV2cViXLrBy8CdaLxj8kNgfl4SZFvLru4UA=;
        b=HIp1vatXI0tbHmLcFI41rvGNFpx7+oGSGQFNeAWFa57qBUQKJoo8/8+ideE6eWU2MK
         Np1zWL6pnsyurr4aSFSlv4thY0jJSOq3mMEeXOvXjsU7/mFo/dBu5YvSHuqB8RoBTslI
         ClwrV8oBDyY6KUwMCnqEiZhnaH9e9PiVi3HLmJTLD5xSgGtaU52SjcX/kRsC985mlWTh
         c/mGDfpaFKcJDR+ClrCntv4567cXSBAcMMnEVZgD58wwBtxBwcDlk2lL69XcGBkW32cy
         qE1VHTen9xk49eZjyLmD73vB190HKfWLx3R+6GUz+2ap599G8HZdpMLlWHQbUSuuWHtC
         HrWQ==
X-Forwarded-Encrypted: i=1; AKwUvByeqbe9VTxdnWTlPdh7qIHB4Ez2tSKiXtXFTZZ2zNUQw9jIMatMv9N6NT7kXHMm6njkCjz4K7cfKHE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9nOXTqaNGfFL+1oTAyZFkGGR7nA3YetgQdr2j9ztsnLPA6u2Jf
	zFlBqbM0Z4u1DRdXUQjGUw5Q2GdsM2CDQqCBuPHNMfCMTRJcfSDItrxN6pZzRCs0t6U=
X-Gm-Gg: AYBFou2ekOSNhJmYHXAI/Gm18cbWkGak+wFGLNr5HUApxfu5pwU1cYN6+4It5Lv+NjF
	EBQatHsMah+GEtHL1hFSp/EXH9uhe3LW4KDvHZexQkKrDXbJ6kVBTVladZf+ff0dFMZk1bSvAWE
	zGN2y4E1I5FxYGsBOjeP1j8k4EGsMQMM6Kq9ciAZZAhfFs9Vom1uEGgVecGB8xQvWGIZas3ePlt
	RYZcDkTXzlLTRB4A0ghPrj4rcuJKzuRJAK7YXqwYPppjtgovAPFISY05tW9qhbxsq9SK31bSn7J
	Nw3fcUdsqp3nJVJh7gbYwf+uiutI33SBiwwDk9hOd6WQNspiiHfFPtKcu19+ZCp5svQTfkuOv+3
	w9NgkHJC/OZsMvSlttwJjg4RideHBKZguQJTQ6V6s1nZ30wnpbqhcrUyTqQKPc+FDSFNFruXcY8
	NTLZGwKZiz+kzallBOXLk+NDWrj9JCYi1VQm9ETOv8ZntBth4ukEUrzSyzgXXjfPeYSDBldGJPr
	yi4wVDB84PLxh0ZvjSbQfr6sVh4iLcILKCie2IhaV+L18ArRxgwfjmW0BHwPVlxJ9MFXE7CE9zD
	L+5tcnL62NSjvbk5qq0Fk4ZxEh5SoHlYHI5sRkSwO7bBFw==
X-Received: by 2002:a05:6214:8588:10b0:91d:35ff:cb53 with SMTP id 6a1803df08f44-91d35ffcdc9mr8100016d6.37.1793672952196;
        Mon, 02 Nov 2026 18:29:12 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:40 +0000
Subject: [PATCH net-next v3 14/15] net/tls: don't BUG() on leftover length
 in __skb_nsg()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-14-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=1573;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=jtewRftckK13p/nQalxWcrhfGpFqhqstsSARsz5AoHI=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QKU+bYXkf9YXXl1oclL2Gvz2UVI2gtqcPepXaQA2KpnhXr1hun6qZ+lqT2IAQi6KyF0liU25rYL
 0WlL33F1eag4=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d62444/1793672953-BE27A757-43DFE221/0/0
X-purgate-type: clean
X-purgate-size: 1575

__skb_nsg() counts the scatterlist entries for a range of an skb with a
copy of the __skb_to_sgvec() walk, including its BUG_ON(len) when the
skb runs out before the range does.  tls_decrypt_sg() calls it on the
same range it then passes to skb_to_sgvec(), so a bad range would BUG()
here before it got to skb_to_sgvec()'s error return.

__skb_nsg() already returns -EMSGSIZE for a frag_list nested too deep,
and tls_decrypt_sg() fails the record on any return below 1.  Return
-EINVAL for the leftover length too, with a DEBUG_NET_WARN_ON_ONCE() for
debug kernels, and say so in the comment above skb_nsg().

Acked-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/tls/tls_sw.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 771e02bff519..748ae27f2b88 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -142,12 +142,16 @@ static int __skb_nsg(struct sk_buff *skb, int offset, int len,
                         start = end;
                 }
         }
-        BUG_ON(len);
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
         return elt;
 }
 
 /* Return the number of scatterlist elements required to completely map the
- * skb, or -EMSGSIZE if the recursion depth is exceeded.
+ * skb, -EMSGSIZE if the recursion depth is exceeded, or -EINVAL if the skb
+ * runs out before @len does.
  */
 static int skb_nsg(struct sk_buff *skb, int offset, int len)
 {

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:29:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:29:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468964.1678048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4H1-0002lM-Ok; Tue, 03 Nov 2026 02:29:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468964.1678048; Tue, 03 Nov 2026 02:29:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4H1-0002hq-3b; Tue, 03 Nov 2026 02:29:19 +0000
Received: by outflank-mailman (input) for mailman id 1468964;
 Tue, 03 Nov 2026 02:29:17 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xO4Gy-0002CX-LA
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:29:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Gy-006j9s-0q
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:29:16 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946b4-8faa-0a2a0a5109dd-0a2a450ae7b2-28
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:16 +0100
Received: from [209.85.160.180] (helo=mail-qt1-f180.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6ae946fb-f2d2-0a2a450a0019-d155a0b4c0b7-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:29:15 +0100
Received: by mail-qt1-f180.google.com with SMTP id
 d75a77b69052e-53fdd2fb171so46767341cf.2
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:29:15 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-5498ba831ecsm13704131cf.12.2026.11.02.18.29.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 02 Nov 2026 18:29:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793672954; x=1794277754; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=a+hFTEOFR15xhICqJoC3sInecNo3QCMXYhk+gm+DR0k=;
        b=L97DqqtFzFpd6Lw32fn5xadqBpnOVYKjEyzLesDEcxL9LAS1pvt22Ki1NzKgPp6GvO
         aXm0ex/sklNLRtDnbStVKsUlZ9sy/9580iTB8uN8HIj0xaH9Gx8rrYUiw7jBetBlwhHY
         YdOtzNb/iqsrgtkXhhQj+QUtsJ5JHaKhSCwX+JNX6jvfUUqT3pNnZyHKjjWeR57xElUE
         PvQBPdBV7FBQwda+MmvAHMbTeE3Ew66eKU3dW42TehMnzdeh67GlHo2fpe+Grb8jgniH
         rnf5quB5CHOXvC+zGrjUgT5nTu5BIPm6NA1VfvrUevHj20RLJOdeFqvh16kyquDMsBO/
         EncQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793672954; x=1794277754;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=a+hFTEOFR15xhICqJoC3sInecNo3QCMXYhk+gm+DR0k=;
        b=Vb5Bx9tCCRS7JmWnmYQZa8TVuSDtm9tOdGTv9F6Mq3rkRJ5anZuz9HFqDwDcbHIfbW
         4ZXt+zocauLhtsKZ6xKa95zrKRyC8cKDidnauldVvncNSHiaOmKQRpLE+6wN677mUKa/
         eXlLGUzBV/ae5cadne0z5tWojCG8D5JxjG40foa2r1n4lfEJlYM+D0TGNZ/3fTnE2K4O
         5DAVgKfF4b38/68NGMmCjPJC5wWGJrRYG/bLdFx82p/vi+ZgqI0Z897354ppNceJHod1
         KKijzKmoWuBq2Cb/OAH/CgLdwZLIdtG9wMmIJb/CIKoaFOkmA7LEWEU7cpmUxsYVPMyl
         DHww==
X-Forwarded-Encrypted: i=1; AKwUvBzf+DZbXXLl187ex1cfu/tjCebHfc4T5eGvkX0baKtc5a9adSml2yQeWTHD5xR91Tjp/+hQGI5EqSw=@lists.xenproject.org
X-Gm-Message-State: AFq9FYJ0jS1rQnf9tNOvzLKvdEJRNDfxlL0D8dCVkwhlfi9a9UhO+RCm
	YJ6NcZsp3rnWmCb+GvCjBXBtmCoLV6manHtwHnu/8wbgsM7mXbr/kcb0qrttnLxTE18=
X-Gm-Gg: AYBFou0zUazy+WgsZUlHcYmTx5Xxk+KF9oAAYFfnAokGYmczhWGt2nm2YyVakLLDj6I
	H0FYgdxqaDtXvTOrd+5UJD7eWSQrWuGB5+oLjEnbGy7qy37neimkLt+uBIfrB0QoAKwDMZLLZ1C
	o07ly2YUBMPZeKTiVtIyNNEFSoTECzyjp5rP1jU4YoK4S7pXFb2ZQOIbWs2une6YBcRFA/T1h3A
	44/+DvZtsOgo3A9HCb+fQi9DCiiAPRSUHL1TI1dU8jtzW6aaowWk6umlqdLDDVmivSlsYUGZ4Zu
	2m3cILzExoBdgtSMBkvBA+qMx4Qn5lwzWJWInmyXcDS1BifS1ApdO+P7ab84oOXHHm0luVmL6Km
	FPRSy/IDT2+YaBuBdsVjoBqT55UGOxLyrCzK8nrnVvNOARa1ATS1rxaWNJmQ9cyUfqi/2hpaKMK
	iDxNuREIrf9YPfEvo9IO2JRZGy46uk969I0MQdtwv7JSQzYsuWLv7fxDpIW0FPRa7aoH3ozfBCp
	awGezNZh6eQ6cDxmfSSE40X4avtbwY++QpBt0KSO1BwBYouiaXdhz5gNJeYbuzaxpstkp0Boygl
	6udUMOcjv2s2bJXdOKYOwfHp+0NWkeoxcs6yIalMimeEXQ==
X-Received: by 2002:ac8:5a84:0:b0:53e:35dc:9bd7 with SMTP id d75a77b69052e-542b7cfff77mr195623591cf.61.1793672954512;
        Mon, 02 Nov 2026 18:29:14 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 03 Nov 2026 02:28:41 +0000
Subject: [PATCH net-next v3 15/15] net: update comments that still describe
 the skb BUG_ON()s
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261103-b4-skbuff-bug-on-followups-v3-15-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793672923; l=2967;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=WCTT9uC4bs2258XiDJAzFc52TKyNHZGhkrwOY27WXg4=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QE8kdpAIr4r/3KnRyoQejERf3bZuv462xd61M/4SF+RLGK/b0ul1CKeaOQhtpoJOgJfKTHf9Nhb
 J8aQzKvI8igI=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-4011c0/1793672955-53CD3CFC-0538624C/0/0
X-purgate-type: clean
X-purgate-size: 2969

The skbuff BUG_ON() conversions left a few comments behind:

 - bpf_skb_net_grow() says skb_segment() BUG()s on a frag_list with
   head_frag set at the downgraded MSS.  It fails the segmentation and
   the packet is dropped, which is still why the skb gets linearized.
 - The skb_to_sgvec() kernel-doc doesn't list the -EINVAL that
   __skb_to_sgvec() returns when @offset and @len run past the end of
   the skb.
 - A comment in the netmem KUnit test names BUG_ON(i >= nfrags) in
   skb_segment(), which is a check that fails the segmentation now.

No functional change.

Acked-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/filter.c   | 6 +++---
 net/core/net_test.c | 2 +-
 net/core/skbuff.c   | 5 +++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/core/filter.c b/net/core/filter.c
index 09c60a58c82a..9881ac89e94c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -3723,9 +3723,9 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 off, u32 len_diff,
 		shinfo->gso_segs = 0;
 
 		/* Due to header growth, MSS needs to be downgraded.
-		 * There is a BUG_ON() when segmenting the frag_list with
-		 * head_frag true, so linearize the skb after downgrading
-		 * the MSS.
+		 * Segmenting a frag_list with head_frag true at the new MSS
+		 * fails and the packet gets dropped, so linearize the skb
+		 * after downgrading the MSS.
 		 */
 		if (!(flags & BPF_F_ADJ_ROOM_FIXED_GSO)) {
 			skb_decrease_gso_size(shinfo, len_diff);
diff --git a/net/core/net_test.c b/net/core/net_test.c
index 298ca240104c..7bfafc826b14 100644
--- a/net/core/net_test.c
+++ b/net/core/net_test.c
@@ -1466,7 +1466,7 @@ static void netmem_ref_test_skb_segment(struct kunit *test)
 	/* 5. Linear head_skb (nr_frags=0) + mixed pp_recycle frag_list where
 	 * member A has linear + frag (pp_recycle=1) and tail member B has
 	 * linear len == skb_headlen(A) (pp_recycle=0): keeps SG clone path
-	 * synchronized without hitting BUG_ON(i >= nfrags).
+	 * synchronized without failing the i >= nfrags check.
 	 */
 	head = alloc_skb(64, GFP_KERNEL);
 	list = alloc_skb(64, GFP_KERNEL);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index b2c44a58db23..bca69e8b3582 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5639,8 +5639,9 @@ __skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len,
  *
  *	Fill the specified scatter-gather list with mappings/pointers into a
  *	region of the buffer space attached to a socket buffer. Returns either
- *	the number of scatterlist items used, or -EMSGSIZE if the contents
- *	could not fit.
+ *	the number of scatterlist items used, -EMSGSIZE if the contents
+ *	could not fit, or -EINVAL if @offset and @len run past the end of
+ *	the skb.
  */
 int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)
 {

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:37:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:37:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469069.1678061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Og-0007eg-9e; Tue, 03 Nov 2026 02:37:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469069.1678061; Tue, 03 Nov 2026 02:37:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4Og-0007eZ-66; Tue, 03 Nov 2026 02:37:14 +0000
Received: by outflank-mailman (input) for mailman id 1469069;
 Tue, 03 Nov 2026 02:37:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <almasrymina@google.com>) id 1xO4Oe-0007eS-JD
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:37:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4Oe-006jz8-05
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:37:12 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae948d5-e002-0a2a0a5209dd-0a2a4503bf2a-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:37:11 +0100
Received: from [209.85.208.50] (helo=mail-ed1-f50.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae948d7-fae8-0a2a45030019-d155d03290f0-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:37:11 +0100
Received: by mail-ed1-f50.google.com with SMTP id
 4fb4d7f45d1cf-6b1aa36fc0eso5158a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:37:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793673431; cv=none;
        d=google.com; s=arc-20260327;
        b=i8tsGGlHCax8y+1kSxzZI2ZB/RaScZBExzf0y+ueaCVl8MK/OV1fjKIePjOvVB/bvt
         hb7htmK9CdRcS1dq15IyxGX+CsmtTYaNwZvPLPQtXya+eXUVMXAefJqZz7b635YHthps
         cJHrmou8Y2afP+vOgET8YGvn7rWbiH7W++v6CuBx7Mirvdq4XZjrfwWZeln1ehA1dPIF
         XrEpmrG91/PqjH0k1GouspaodHbo1MAGiupulBzpuTFqO/dt03HLYCXk/T6cTHDqBPDW
         7K9KrsdSl6X7R/mhz8ySoPgLYCPb56goPs3CHIhaHsJ6DRnz91zBLtN/KnO5M6cLZk4v
         vfqQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=fqTX7BP0mkUbiNPaPzqmPJM6ISWnYd5yW6X5U8Sw0eo=;
        fh=oEDfn6R5kx8c9P4yhJ6ogrKFv+4IUDwyQ+1pWLnW2ww=;
        b=U/+6u0K2ySW+xalSrFRzywTvXpfM+VXYGo6OyRh/W1Pq7GMtApShIjXzTQfmunc5/R
         2f49z0EmxuF1F0QpsJl3943JDuLH4bgSP4CDWFrgvKQ+k5n6L0u90dm7A7/d/QGcSFWa
         MbMrDTbmmxqvkSR1oOAr/1wVJ23y+Ba2goSbA6/MrKQLSFpIy02/cK2zOzTqIIB9z8BV
         Q+22TaeZI+c0vVngZmtv2by9ysrtIyMt3JNAfqnGM7XMdBU7VxOElstDlNTP+lVMxwXa
         lspYaUj0D34W5aEEofEwzD7Wi+0dF+z6+aoVhid/JII9g/GfQKOq89ptkS5Ta10xwpWb
         ZQQg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793673431; x=1794278231; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=fqTX7BP0mkUbiNPaPzqmPJM6ISWnYd5yW6X5U8Sw0eo=;
        b=S0gSkPOwfgKIohGJj0xe5kgxAABrAkDgPR2jE0Au+/ktZ7yHUqdFSI0odqxvo4/TLY
         WSaToMOhy7ydYW5pXoleZtYL3s8fxhPaIV3H3FHoq7PkfpzF6d7FJh6rLZN0bEmXP4fl
         AqIgTKse3W3c1j1UjhXiq5d18jT+3ARFoM4+ljOaUqidBaLNH6OHHriVBEZ1A7hky5K3
         qWMrHd6vGEPphDV9UXKpH5HVFKh4JeUOYpG1oD1H6+MFPQ1TQtJz3Cht7zEw45caFwyo
         5trSQC7OsCU8eS9BzL9iRsIaaePs6Hp6vQfvlN1jIMwtUTS/fWAI/ha3qSOEuOy1UxPj
         urtg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793673431; x=1794278231;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=fqTX7BP0mkUbiNPaPzqmPJM6ISWnYd5yW6X5U8Sw0eo=;
        b=UxvDMupwV5UkYcOpPDL5U2SZ3Lcv9a3s+ulzqy7IiLg3+kih7o6UbvLx/KO5Fam3yG
         gHKjMBWt8ep824wnrakdMGH9tcu8/SA5YSzXa4pOLwbtaI9U/DUW2T5JZrbFcTILYs7K
         Z3fbNau3dpwZ7b874Wjc09an1yyBbpqVg/9beKMBf+5rEki9lV7RshKy24esKBooE4DZ
         i0dyLfSXGwFkpd234MI2SQmQBg2mmKEJXub9bt/cReBqhAZeLe12Inn9/hUCFNJwnXVW
         oBGQEWQ8Irk0Ia55p2bT7TPrX0xF8D8flyRwOxRzzA5tLEgdDU+p4XNyhNSIUHDY8oGo
         zPyg==
X-Forwarded-Encrypted: i=1; AKwUvBzI06KRfKCtv88DECVFOFiKaZDizx9Bf/8b2f7bTGKNSV6q3ob3rGQ6W0hQJ2YRZIJddgHmpUk8HPM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9nTGcJh5UYiREqwGmDyEK6Vm38gBW+JtdaRsZQfzcu9PlUYCTD
	0x1ABKxOZLD4MBJC2S2BF3ConjdPjd6+Wui0ePnJun3gphjMAuiTXIp02TdS90aBfpbWPnuOv3/
	usKwYzWTtBx1SVz/sMpgsXM/Z3/pU9AUADILPacxWtKnt0uTld7ADypiP
X-Gm-Gg: AYBFou0fykhoyjbAmeHH0d+XF/GRShgiUHO9CbgaAfoWl2F+JI/As+sqLwdhFJjFYbJ
	kbx9rFABy+burekl6gPcAw2h29OMs0sYTkEHS0RNhql/AROjNMcY3Rlra1hCqY5UKpXwFlMM1EZ
	JYE6LAPlE/9ovgeAUmocPRoYhozAt/qx1anUEBInb7S0brCqJ3MxV6G15sNflbNKshdXw/qUYzc
	6hfV/8YLwM/3lhFqnivcF8lTw2BcxhlQdZ7xrGdOOjDn5TGGtvIc+aZbXB2Vpnn4rxMmMzVN4qr
	hoUTkLCK00VZPi6oK1YjVmtOjUAuJ1eJDhvLv9XLhzUL6MTvDHEN4thmGHFR0laU1ffYFPdYzwz
	vp8uQIE4JM6Gs+ppiXTya4y5PfybGqar0HdWHETE=
X-Received: by 2002:a05:6402:15d4:b0:6b1:aa31:a627 with SMTP id
 4fb4d7f45d1cf-6b539cf5521mr25672a12.4.1793673431151; Mon, 02 Nov 2026
 18:37:11 -0800 (PST)
MIME-Version: 1.0
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-4-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-4-54ad0ab57614@toxicpanda.com>
From: Mina Almasry <almasrymina@google.com>
Date: Mon, 2 Nov 2026 18:36:59 -0800
X-Gm-Features: AclHuK_KyosV2S6Hhot3QjeUrSUtUS3-59PgfB2gDmKhS-ed2_dJAQ5EnLrTGm8
Message-ID: <CAHS8izMxdrp-J8yo1B5CPBwPcy8np8+uz8qBxO2GSi0+9eRQLA@mail.gmail.com>
Subject: Re: [PATCH net-next v3 04/15] net: skbuff: fail segmentation when a
 segment can't be checksummed
To: Josef Bacik <josef@toxicpanda.com>
Cc: "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
	Andrew Lunn <andrew+netdev@lunn.ch>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
	Fernando Fernandez Mancera <fmancera@suse.de>, David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1793673431-6F6C64E9-C74E706B/0/0
X-purgate-type: clean
X-purgate-size: 1118

On Mon, Nov 2, 2026 at 6:28=E2=80=AFPM Josef Bacik <josef@toxicpanda.com> w=
rote:
>
> When the device can't checksum the protocol, skb_segment() checksums
> each segment with skb_checksum().  If the segment has unreadable frags,
> or its lengths don't add up, skb_checksum() returns 0 and the segment
> goes out with a checksum that doesn't cover its payload.
>
> Devmem TCP doesn't get that far today.  Its skbs take SKBFL_SHARED_FRAG
> from the zerocopy uarg, so skb_segment() tries to linearize the segment
> first, and that fails with -ENOMEM for unreadable frags.  No other path
> is known to bring an unreadable segment here either.
>
> Use skb_checksum_full() and fail the segmentation with -EFAULT, so that
> the checksum doesn't depend on that flag.
>
> Found by the Sashiko AI review of an earlier fix for the same path with
> SG off.
>
> Link: https://lore.kernel.org/all/20261009-b4-skb-segment-nosg-unreadable=
-v1-1-7e2334a55fe8@toxicpanda.com/
> Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>

Acked-by: Mina Almasry <almasrymina@google.com>

--=20
Thanks,
Mina


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:45:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:45:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469093.1678069 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4WB-0002E8-Vo; Tue, 03 Nov 2026 02:44:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469093.1678069; Tue, 03 Nov 2026 02:44:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4WB-0002E1-T1; Tue, 03 Nov 2026 02:44:59 +0000
Received: by outflank-mailman (input) for mailman id 1469093;
 Tue, 03 Nov 2026 02:44:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <almasrymina@google.com>) id 1xO4WB-0002Dv-Fj
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:44:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4WA-001j7I-Ss
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:44:58 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae94a71-2eae-0a2a0a5409dd-0a2a45098bb0-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:44:58 +0100
Received: from [209.85.208.53] (helo=mail-ed1-f53.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae94aaa-be1a-0a2a45090019-d155d0359007-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:44:58 +0100
Received: by mail-ed1-f53.google.com with SMTP id
 4fb4d7f45d1cf-6b1aa36fc0eso5220a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:44:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793673898; cv=none;
        d=google.com; s=arc-20260327;
        b=MSmtkckGjT2xhwopyfKk6km5Zh6lZsVquu4WtirCMQrE+KwoQ6t9dcjB/6ryCwpdxe
         pACryxFieZ+yVwLtu+ZTnCAOmkQjh+W+HM+QB/IfpjLpKFzv9ZmBeJo7/Jj0HAfLW0Yw
         qEbEMvputhYFPUnlqTUOVBLdlan+cNLuOvSylasbzK3ss/RCu3RKb2/vq5A0IpKb4dwv
         ZRilxp0gb5g07lW3kb63iPHxwBarNIeNTNzomM5p9fTCbGyqJs0mc3/xOC4VaxgbBQRn
         84shX++eyeQZR0jC6Xc1ViFFqtC7xAi5z5atFJ7j1lO28GQ7YRQGKNeqnLKMr2DIyujz
         zpvQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=89u8IRsq+x1BWnVnaXXxXmgEHUj3lM/X6xy8lftQEfg=;
        fh=B9/BLIodQZGFYGLWq1hKAuTm9BXycMn7R1ZbSwKN4y0=;
        b=j7YtjbmRuAId+wDnMenyoxPglUE8azV4Ism6PNHQXJ6g0btMPiLTtV4G5YMO2YownF
         6RqwLRdZmmFoiA+fUK0pL9INHmlJxs/Deyjv2EcJuhAT164uvUfp6izxWfrkQgVewM68
         EaFSzP4gemGHsQ3eSb0DzL92cDjKQMH4ypdLez6D3vubj38ZOJ8x5HOR5j0SrirlJTl7
         UUoEumK+NzZ/UDEwZToPeGpbPu2jVbECjT90LbD9eHMl6nzIZwymQYtJ1USpnx/wls5z
         a0iA2neOtOvW7uVdsvV/jOwnbBFN1Kq1drC2y9w0gO95otlAl9ryAS9D02PsDBxLdfpM
         wmqA==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793673898; x=1794278698; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=89u8IRsq+x1BWnVnaXXxXmgEHUj3lM/X6xy8lftQEfg=;
        b=dic3O/vKtmGdd90aOyYYRse7DV4aovwMCEff9H9fGJGYlDHYmVwgUFVHteNemv0Qzq
         2uwrjNKq8ajnO0Q3QzzNZe1urNAIOA9tnu6m6LpnxKlI5l59dL7dj9pdcLKxGnL/j2iH
         JEOJGyTT3MFBo0g/fqAh4zHhNCV5m3jNb4gLecwB8XG57mecHqe0SwTA+Mv3IerlQbyo
         sPXPDSOwp6JSAiv8uA/sGFvKytb42A3LHNgc3TSo7ooG4bX2AVVqeXaM7fk0UVsusH0m
         04mx5AG09jo1xhZCdMU/VgLo7jGt0NlnnND1DUwEGs+EM3SMQbnvmMfyBtMjvdGDfk5r
         2dtw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793673898; x=1794278698;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=89u8IRsq+x1BWnVnaXXxXmgEHUj3lM/X6xy8lftQEfg=;
        b=p80CbV80VqgZhGcitkYgTeDqOXVteBdowx/9qY1v+5GYfYmG1MYKjelEXLmemkGQBM
         fVoFURtb4OxuYCz8AeR1jn88RbDdCK7e22Wa4RckXooX17sVw1ohCywBJIQyF0Q+pFVD
         /7PDhQm+k+cYe6RVYNdnqqORfp2JIKs42FJrUNZBVGPiYq2t9mhfi+zmmhX3XXiHIXOP
         mPoX9zMhgN3Yp+rAIP35D7nUD6PhyW3u/5TzBesA1HVJQP0HOYYC/UPwFQ7UQYzudg0L
         1E74rdsSBtUW7zNAFEM7QNCdcN2xzTjsO5mbe7c2lQb+qDCkirRmz3W0BSjDNa0vE8n6
         ZZYQ==
X-Forwarded-Encrypted: i=1; AKwUvBzHsN7WCVQBRkaHjxs1ONDq0wGe0ViOxohZkpYtiF6hMKHrn/dBhpaBwYo8wIIRW2+dn6jF2Dg8/Oo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8OASh/a4/99L1Q5gtQ4551kYl8PeAUui68CpMhgSuNiuHdR+It
	C/UAxpvSn0YjzLjjT1yXonhYwuNM5Gzbqfkc1p0PAzOCWaWfCch3BbM4ScvWioIHeHNkWrPlFcW
	4SMhNcJ7sgeadpdmn9SrTiQKgBc5uCiWWg984yxsD
X-Gm-Gg: AYBFou3uBzgkyqiaDfW8jTwG1VYkBT+jIKrc/PJCBPvpLKF2gwAPtceF6l+4bGPncEo
	ipNk0O3ir76yiSnHgXOfB0Thl8d7lyM5GETYlXjU/PQU/FNNxgBU5vapkcyzukjgvn2NKZk5E2S
	pnXyr6jcEIn4C5wJRoxubSaTJQxCohHzlQ60HewO0jQHkaH8sYdSBCRX3fzkbfGu95ihJ/71DiK
	ddaWrQIwGn+g3yrFXwBO6VSWYSHnevbY0RmmtGOL86/zxjo5bbxAupCB9fwLpjaqJOGPGErFDW6
	k56zNgKSO1LUcakzWKOj3l8lZDXiSiyC3Ov6QaPg6mM5KyujEFN9BC9ximLTaAlg/4KEazAS8ov
	jlSEFbMuicRMQp0dmjcuOx7YefVS0DQUT7x+CBuc=
X-Received: by 2002:a05:6402:c503:10b0:6ae:1503:5a27 with SMTP id
 4fb4d7f45d1cf-6b53e77d7dfmr15648a12.8.1793673897842; Mon, 02 Nov 2026
 18:44:57 -0800 (PST)
MIME-Version: 1.0
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-2-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-2-54ad0ab57614@toxicpanda.com>
From: Mina Almasry <almasrymina@google.com>
Date: Mon, 2 Nov 2026 18:44:46 -0800
X-Gm-Features: AclHuK_1VZQHRWxizHvXi3YYj2JpXFP0z-SUn-xp8uKayImpXDLfb9CCDHak1Q4
Message-ID: <CAHS8izMK8nrYny_jc-aTbjwP8tsDkY0a1ed7F=GfwzfXWm8o=A@mail.gmail.com>
Subject: Re: [PATCH net-next v3 02/15] net: skbuff: add skb_checksum_full()
 that reports failure
To: Josef Bacik <josef@toxicpanda.com>
Cc: "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
	Andrew Lunn <andrew+netdev@lunn.ch>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
	Fernando Fernandez Mancera <fmancera@suse.de>, David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1793673898-FCA16034-4C319E61/0/0
X-purgate-type: clean
X-purgate-size: 983

On Mon, Nov 2, 2026 at 6:28=E2=80=AFPM Josef Bacik <josef@toxicpanda.com> w=
rote:
>
> skb_checksum() can't fail.  When the range runs into unreadable frags or
> past the end of the skb, skb_checksum() returns 0, which is also a valid
> checksum, so its callers can't tell a sum from a failure.
>
> Add skb_checksum_full(), which adds the range's sum to *@csump and
> returns 0.  On failure it leaves *@csump alone and returns -EFAULT, or
> -EINVAL for a negative length.  It is __must_check.  Its frag_list loop
> sits in a noinline function so that taking the address of a local
> doesn't give skb_checksum_full() a stack protector.
>
> skb_checksum() becomes a wrapper for the callers that aren't converted
> yet, and still returns 0 on failure.  Three things change for them:
>

Hmm, but do we really want this intermediate state where skb_checksum
and skb_checksum_full exist? Why not fix it in one go rather than
little by little?


--=20
Thanks,
Mina


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 02:58:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 02:58:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469105.1678078 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4j8-0005En-1m; Tue, 03 Nov 2026 02:58:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469105.1678078; Tue, 03 Nov 2026 02:58:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4j7-0005Ef-VC; Tue, 03 Nov 2026 02:58:21 +0000
Received: by outflank-mailman (input) for mailman id 1469105;
 Tue, 03 Nov 2026 02:58:21 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3yU3pagsKCWgGRSGYXeSOTGMUUMRK.IUSdKT-JKbKRROYZY.dKTVXUPKIZ.UXM@flex--almasrymina.bounces.google.com>)
 id 1xO4j7-0005EW-3o
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 02:58:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4j6-00BS4C-A2
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:58:20 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3yU3pagsKCWgGRSGYXeSOTGMUUMRK.IUSdKT-JKbKRROYZY.dKTVXUPKIZ.UXM@flex--almasrymina.bounces.google.com>)
 id 6ae94db5-8faa-0a2a0a5109dd-0a2a450ad820-12
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:58:20 +0100
Received: from [74.125.82.200] (helo=mail-dy1-f200.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3yU3pagsKCWgGRSGYXeSOTGMUUMRK.IUSdKT-JKbKRROYZY.dKTVXUPKIZ.UXM@flex--almasrymina.bounces.google.com>)
 id 6ae94dca-f2d2-0a2a450a0019-4a7d52c8ad4b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:58:19 +0100
Received: by mail-dy1-f200.google.com with SMTP id
 5a478bee46e88-3552883bd19so74237eec.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 18:58:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Date:Message-ID:References:Mime-Version:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793674698; x=1794279498; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:date:message-id:references
         :mime-version:in-reply-to:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=EBOBTMCBvbOa1Vdc4dwzLv3tXtzlfQzqk36T1YAPAwE=;
        b=MCVqTXTIstce+T2FjTHaMCGyn8tQ14ckjlz65p7Nj1Tk3FZWg87Olgtb/98IOYYdNj
         1XNci6cb1BzOw4irrun+ZrbgYYGQmfxhHpU2zrzTbNpd5pvk4VB+pOsg9VokcRtOdRL+
         JgXewSrsFu/2Cg5I6tGGYCorvIEqkixUMSGx1lLshaNqqVFNxX70oDcosK7M5XCAgTv2
         jPgfPtR7FR3MG2uYTqPonCLj2KVVx5tRT4YkQ5NuBlxAYQ73UrgfkVKkAHpthV61SFBm
         6EaKDfrcgY/HOFxIQfERAmjm/3M++6P45tP7EDU7u3hl7zCkXoc5Cb3M3HEQmtrATTVH
         5HyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793674698; x=1794279498;
        h=content-type:cc:to:from:subject:date:message-id:references
         :mime-version:in-reply-to:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=EBOBTMCBvbOa1Vdc4dwzLv3tXtzlfQzqk36T1YAPAwE=;
        b=pQ/CYaZl0QCn6gAm0vnGnKep3pppjzmg6/lexOUIuiNMBzDpU+Wk1XRPngTaM1pVjD
         uR3Lced1Z/zerL5xmaEt2frDnRBEvQ5RGn/KhF8LCCsZpqfdeaIFi58Ahj4HAZygxqAA
         2yFKhdNPGDXDCEzlMiW39X7M/1dem+7BbxZCu9T1pePvYssMJ1uDKYCNs5GcHc//QN3y
         piJrc0qZnFjY4JFzLI0+VFoyHtXfM1+uzDqswZlSoGRwaxdvNFUbmjRf/wLk1a6L020o
         leHfte8hAgz9FebWmSOg8d+BCccBXMXHcxfmng0eNYg2WkJfuSc41FmOnPmQdU84nkaE
         tmEw==
X-Forwarded-Encrypted: i=1; AKwUvBzdTf+W9JAzerWwezP+Ry5ydv8is/homalv1oIbyzQSx+HfxmgDDPFIx871Eek32ag6ECrmo/bvSlw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8XHoNOoJn3AxuQ7MVdOMi9mXBjTyMueyiSqfTOlyjVIFzPuMYq
	/KN6wgtdXnLTT/yGq6bFisOszjP8M8xiBUNpzkB7n2I6+sRuaogKLU0n72qYXnoU95KfnzEeUFZ
	7QDZIlQguPf1vzWLdnhFOnLa79g==
X-Received: from dyaz28-n2.prod.google.com ([2002:a05:693c:639c:20b0:351:16da:ebbc])
 (user=almasrymina job=prod-delivery.src-stubby-dispatcher) by
 2002:a05:693c:6092:b0:361:7ab9:479d with SMTP id 5a478bee46e88-36a423ee70bmr21653405eec.27.1793674697439;
 Mon, 02 Nov 2026 18:58:17 -0800 (PST)
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-1-54ad0ab57614@toxicpanda.com>
Mime-Version: 1.0
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-1-54ad0ab57614@toxicpanda.com>
Message-ID: <18e469a24f30b4cf.3137322e32382e36372e3935.167b2f.0000sendgmr@google.com>
Date: Tue, 03 Nov 2026 02:58:17 +0000
Subject: Re: [PATCH net-next v3 01/15] net: skbuff: make skb_copy_and_csum_bits()
 report unreadable frags
From: Mina Almasry <almasrymina@google.com>
To: Josef Bacik <josef@toxicpanda.com>
Cc: "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
	Andrew Lunn <andrew+netdev@lunn.ch>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
	Fernando Fernandez Mancera <fmancera@suse.de>, Mina Almasry <almasrymina@google.com>, 
	David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-4011c0/1793674700-52ADCCFC-218C327B/0/0
X-purgate-type: clean
X-purgate-size: 1950

On Mon, Nov 2, 2026 at 6:28 PM Josef Bacik <josef@toxicpanda.com> wrote:
>
> skb_copy_and_csum_bits() has no way to fail.  When it reaches unreadable
> frags, or runs out of skb before @len, it zero-fills the rest of the
> buffer and returns 0.  Its callers can't tell that the copy didn't
> happen.
>
> In the !sg && !csum branch of skb_segment() that turns a devmem TCP
> payload into zeroes under a valid TCP checksum, and the peer accepts
> them as stream data.  It takes a device with both SG and TX checksum
> offload turned off.  A test module that segments an skb with 3000 bytes
> in an unreadable frag gets 3 all-zero segments before this patch and
> -EFAULT after it.
>
> Return 0 or -EFAULT, hand the checksum back through a pointer, and mark
> the function __must_check.  Every caller takes the error path it already
> has for a failed copy.  skb_copy_and_csum_dev() can't return an error,
> so it zeroes the whole frame.  csum_partial_copy_to_xdr() no longer
> checksums the bytes it didn't copy.  That only ran when the function was
> about to fail anyway, and skb_checksum() warns on an unreadable skb.
>
> The frag_list loop takes the address of a local, so it moves into a
> noinline function to keep a stack protector out of
> skb_copy_and_csum_bits().
>
> Found by the Sashiko AI review of commit ab9414ed70bd ("net: skbuff:
> don't leave stale bytes in skb_copy_and_csum_bits()").
>
> Fixes: ab9414ed70bd ("net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()")
> Fixes: 417261779eab ("net: skbuff: don't BUG() on leftover length in skb_copy_and_csum_bits()")
> Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
> Link: https://lore.kernel.org/all/179148235783.434549.14322374227477832817@kernel.org/
> Suggested-by: Mina Almasry <almasrymina@google.com>
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>

Reviewed-by: Mina Almasry <almasrymina@google.com>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 03:02:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 03:02:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469116.1678086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4nN-0007K1-KF; Tue, 03 Nov 2026 03:02:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469116.1678086; Tue, 03 Nov 2026 03:02:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO4nN-0007Ju-HE; Tue, 03 Nov 2026 03:02:45 +0000
Received: by outflank-mailman (input) for mailman id 1469116;
 Tue, 03 Nov 2026 03:02:44 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <almasrymina@google.com>) id 1xO4nM-0007Jo-BM
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 03:02:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO4nL-00CbVl-OT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 04:02:43 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae94ed3-e002-0a2a0a5209dd-0a2a4504c4ec-0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:02:43 +0100
Received: from [209.85.208.49] (helo=mail-ed1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <almasrymina@google.com>)
 id 6ae94ed3-b57f-0a2a45040019-d155d031908f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:02:43 +0100
Received: by mail-ed1-f49.google.com with SMTP id
 4fb4d7f45d1cf-6b1aa36fc0eso5315a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 19:02:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793674963; cv=none;
        d=google.com; s=arc-20260327;
        b=KllrkZaCD6dS0wCiVXNf9BLIrLRfbie6EEc/HaM0lXFbQKv8STEAf4C3SCzb8PTpmm
         xW+Z8neLGDpcPxyyu5tgNHWt9fdvKd0n5APDabjTwa0DOxTruv+Fqulpr/jFvp5axquo
         wvbJ5SZIWdWuIcE+ZkacBhTxN1LMm4DRbcT5XgsPzENjDwmWCLWXfHQXUFibKUxhIyqj
         a/OtYKPsVI/Ym4GXrsPCF9Qa7nvIYFDM7jLnl+54BJa8jwbJpcKuy3GlyYz7Y4TCitCL
         dPhhya1Yor3f5r1GgeTSltAuVNBEiBMeGiaUcDutOWpmcx7nOWcElVP5NcUzBen8+c18
         XXgw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=Z4d6XmbWcRWWI3RSqbOW04ft/6sO/Q2LzJ8s4Oj4NUY=;
        fh=UsUtQrVOHejCvNDYkWqn2HLKwbEJpD8+BZdHl1x+3BQ=;
        b=szyOwPG0pnkmtjwIBr8pMpgdmqoUfsQ6SNpoSiEDhmhaHcJoGPumrslLuRrFRWluBp
         fu0NHFxLlz24eYQzUtHWnfhDt+fvimkuu0uI3UW49z/1LP+RPBTo4omS5hOAVY/GTxPV
         2v3/6/E+Gyl3wV2Uhph46VZ4R0lVYkyMGgtRBgVv36m1fHL4ogGNmmAMORRJa3dd8Tws
         0FooY3jqsrpB1lvjbE65K8x72h0EZxXRkYRaEuN1mVVmkui7H14vJGsTo96k1Kf3Xl7K
         UgMKeoWVya1lN9ujsygjecOpsOAz0XWI0iQviZxQb27+euZC3GrNlWMuwQtnn4pCRbsy
         nxsQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793674963; x=1794279763; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=Z4d6XmbWcRWWI3RSqbOW04ft/6sO/Q2LzJ8s4Oj4NUY=;
        b=JhL1IVNb6mQRptwe+vr6TWGOtZ518ZvbjJpnc2eHC1L2ypVz5pL6K+7jzADJyQ4bbm
         NVP8vdSb/T9Z84GkzD19xmZiSjMo8cgopFFcwbEgSBbqS3utyySCNyAouI1od6KihsXg
         h6TopA+FgWUvxq5XVbAI6NdaqyFvn5OHH4JaTV22iGvueSK2+haAVZXb/xGMKmKEUJna
         L3oalYJLdK5X25c00QbbGxAxircy54NRvrNyJqejKfyCxV6S6rvhNzSy7Z/fBLGDZ0iX
         BLa66eQ4M/ctlUxtGQr5D+31pTkjx6p2coQ3qJd2J4FKXeTlunxRYBnt/XGVBmE8nkm+
         NgIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793674963; x=1794279763;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Z4d6XmbWcRWWI3RSqbOW04ft/6sO/Q2LzJ8s4Oj4NUY=;
        b=eLJL4VWkvPXoplnFDaVlDOREhQsA0rN7BJmF8ysWXO0kKofdJZ7vNpdEHaf5WV3kxt
         CRKPwNPp8SbAJfrAfqOM3s/5Q/nGoIe3AsB9JmrU2Q6+pj4y3hGNVKXDeHgtttr+h8ck
         NrNHI7W4jqnsd6QxEKA3VAo6/xT9A32imeIAQX+MO8/i96u2qq9GdGq3IYu32w3MZvF3
         UBd7X+nxqoOHD5u5RrH7dhasKoelUXjNZILF2ry0wl+nftNymluuMg8V3IiwmZ7zn7qC
         8XLysJN2euswjTjG1bcpm/TlVwDNsL4t37eBzeqMeafpyTkW26eCUB5JHYMuMR4e2bxS
         Rblg==
X-Forwarded-Encrypted: i=1; AKwUvBxBuTIk4fdAZAlPBY0YObNZImd3ciBXXoIfFyXgFKPTax/aWZGP0NEsptbp6DybjkDxmhJdUb96K34=@lists.xenproject.org
X-Gm-Message-State: APuU4Z91UDRCDRdK7zzUS64Yte2MLat1Wq3hv5wsy5J4uu3SgAlbEi8X
	pfFZyM010P93DY7XY8HefCmsMSwFCVDlpkxGjBA58SQ3HD0L34/HSl3kJuiQbp4kpMxXqk1/MNo
	8W+goXvsODfQFqm0qeN5lR6ePyn+hWBQmWGaDmO7S
X-Gm-Gg: AYBFou0e3LLWrbPzxbkZp41dvW/CW3qw132vpdafMnkVqjLKmcCUGxz2RVg/YvHmuqE
	sfcLhz4bQedyAKhq0FFyip8OsNbyAs869Xa9PkzR+brMmVmv4H+RVfTTtU8E2GyFaN0q+AnPXvi
	KYfwIGvQxxmIuJ4c+dOYx3Ikrszj1/OdCjdutb5fLz+IGxQ5vg4q3XVcHN9c0/VxeqFqbla+uRT
	AakSZIX0PO/SvEGFXjiVH0B+rAzXZT9XivgFurcxr/RMGvyg20+6iTua8x/M/zzKUWssnF1ODyW
	PVwogs0gN0L11sInuZ3t5KB2TiMVxxxvEYsW4sNpKbmaXTstkwPl4RdseEyk/8E7XUyOZnltZBT
	Gb9kxcEaSUMs+jqZkkU6lg0CuK2OVwu0QTk1Mql8=
X-Received: by 2002:a05:6402:a0c7:b0:6b4:9221:8932 with SMTP id
 4fb4d7f45d1cf-6b53e97900bmr26656a12.10.1793674962548; Mon, 02 Nov 2026
 19:02:42 -0800 (PST)
MIME-Version: 1.0
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
From: Mina Almasry <almasrymina@google.com>
Date: Mon, 2 Nov 2026 19:02:30 -0800
X-Gm-Features: AclHuK9j_VamVmfLtRp6iU-ICWXr3S3wDrU7Ligs7Ww-1otOL5tUZpvUdpJQlZo
Message-ID: <CAHS8izN6+eDztiidOMykUq5A=-7kzsbA+h6rEkkqb1VriPaCGw@mail.gmail.com>
Subject: Re: [PATCH net-next v3 00/15] net: skbuff: follow-ups to the BUG_ON() removal
To: Josef Bacik <josef@toxicpanda.com>
Cc: "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
	Andrew Lunn <andrew+netdev@lunn.ch>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
	Fernando Fernandez Mancera <fmancera@suse.de>, David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1793674963-50EDEB50-E383CF52/0/0
X-purgate-type: clean
X-purgate-size: 10369

On Mon, Nov 2, 2026 at 6:28=E2=80=AFPM Josef Bacik <josef@toxicpanda.com> w=
rote:
>
> v1: https://lore.kernel.org/all/20261019-b4-skbuff-bug-on-followups-v1-0-=
41dbef50b9f7@toxicpanda.com/
> v2: https://lore.kernel.org/all/20261021-b4-skbuff-bug-on-followups-v2-0-=
2aa780a03524@toxicpanda.com/
>
> v2->v3:
> - 1, 2, 6: move the frag_list recursion into a noinline function, so
>   that taking the address of a local there doesn't give the helpers a
>   stack protector (Paolo).  On x86_64 defconfig plus CONFIG_IP_SCTP
>   none of skb_copy_and_csum_bits(), skb_checksum_full(),
>   skb_crc32c_full() or the two wrappers has one now, and
>   __ip_append_data(), __ip6_append_data() and skb_segment() are
>   unchanged.  The callers that pass a local do gain one.  Besides the
>   seven I listed on v2, that's __skb_gro_checksum_complete() and
>   skb_checksum_help(), which are converted in this version, and
>   skb_crc32c_csum_help().
> - 1: put the Fixes: tags back (Fernando, Sashiko).  csump in the
>   prototype, and drop the "Both of above in one bottle" comment
>   (Fernando).  skb_copy_and_csum_dev() zeroes the whole frame when the
>   copy fails, since leaving the checksum alone doesn't guarantee a bad
>   one (Sashiko).
> - 2, 6: the kernel-doc describes the unreadable check as it is, the
>   wrappers don't blame unreadable frags for -EINVAL, and the commit
>   messages say what changes for a failing frag_list member (Fernando,
>   Sashiko).
> - 2: convert skb_checksum_help() too, as 6 does for its crc32c twin, and
>   add Fixes: 20ddd0fd2fcd.
> - 3: convert __skb_gro_checksum_complete() too (Fernando, Sashiko).
>   Take the skb off CHECKSUM_COMPLETE on failure.  Otherwise conntrack,
>   which doesn't drop on a bad checksum, leaves the pseudo-header sum in
>   skb->csum and TCP's validation accepts the packet after all
>   (Sashiko).  Update the comments, and add Fixes: 65249feb6b3d.
> - 4: the commit message was wrong that devmem TX reaches this checksum.
>   Its skbs carry SKBFL_SHARED_FRAG, so the segment fails to linearize
>   first.  The patch is hardening, and the commit message says so now.
> - 5: when the tail can't be checksummed but what's left can be read,
>   set CHECKSUM_NONE instead of failing the trim, which dropped packets
>   that used to be accepted (Sashiko).  Retitled, and add Fixes: tags.
> - 7, 8: add the Fixes: tags for the original commits, and correct the
>   history in 8's commit message (Sashiko).  8 also says what it takes
>   to reach the memcpy().
> - 7: reject a negative @len or @hlen on entry.  The reorder left nothing
>   ahead of the skb_put(), which panics on one.
> - 8: the truesize check refuses the coalesce instead of only warning,
>   and runs before the head is stolen.  With len unsigned and nothing
>   else, an skb with a len above INT_MAX went from refused to coalesced.
> - 9: check data_len > len directly and zero the frame.  The old check
>   missed CHECKSUM_PARTIAL (Sashiko).  Retitled.
> - 10: drop both len > 0 tests, and correct what the commit message says
>   they covered (Sashiko).
> - 9, 10: drop the Fixes: tags.  Both problems are older than the commits
>   the tags named, and neither has a known trigger.
> - 11: Willem, this one changed again after you OK'd the walk up front.
>   A nested frag_list is only one way for the walk to run out of members.
>   A len that counts bytes the skb doesn't hold gets to the same NULL
>   pointer dereference, and the walk up front doesn't catch that.  So the
>   patch now checks for a NULL list_skb in the three places where the
>   walk moves on to it, and that's all it does: no pass up front, which
>   also takes care of the cost you pointed out for BIG TCP, and none of
>   v2's skb_has_frag_list() tests.  You asked on v2 whether the first two
>   checks were needed.  For a nested frag_list they weren't, for this
>   they are.  12 has a case for each, and taking any one of the three
>   checks out brings the oops back.  The path without SG is left alone
>   again.  The commit message says that IP reassembly does nest
>   frag_lists, just not on GSO skbs (Sashiko).  Retitled.
> - 12: add four cases for a len that counts bytes the skb doesn't hold.
>   Retitled.
> - 13: correct what the commit message says about when bounce_skb() runs
>   and when skb_copy_bits() fails.
> - 14: update the comment above skb_nsg() (Sashiko).
> - 15: one more stale comment, in net_test.c.
> - Picked up Fernando's Reviewed-by on 4.  Dropped Mina's on 1 and
>   Fernando's on 2, since the frag_list loop moved in both, and Willem's
>   on 12, since it grew.
> - Shortened the commit messages.
> - Rebased onto current net-next.
> v1->v2:
> - skb_segment(): check each frag_list member as the walk takes it,
>   instead of an extra pass over the frag_list up front (Willem).
> - KUnit test: braces around the suppressed skb_segment() call (Willem),
>   and the comment update for the non-uniform case moved into the same
>   patch (Mina).
> - Picked up Willem's Reviewed-by and Mina's Acked-bys.
>
> --- Original email (v1) ---
>
> Hello,
>
> Jakub applied v2 of my skbuff BUG_ON() series[1] before I got v3 out, so
> this is what v3 would have changed, as fixes on top of what landed, plus
> the skb_copy_and_csum_bits() patch I'd been sending to net on its own.
>
> Patch 1 is that patch[2], moved to net-next as Mina suggested, with his
> Reviewed-by.  It makes skb_copy_and_csum_bits() report failure, and the
> rest of the series builds on it.  Please drop the net version.
>
> Patches 2 through 6 deal with skb_checksum() and skb_crc32c().  My v2
> had them return 0 when they run out of skb, and that turned out not to
> be safe: 0 is a valid checksum, and it can make a packet that was never
> fully checksummed pass verification.  So they get versions that report
> failure, skb_checksum_full() and skb_crc32c_full(), and the core users
> switch to them: checksum validation now rejects a packet it can't
> checksum, skb_segment() and pskb_trim_rcsum() fail instead of using a
> bad sum, and skb_crc32c_csum_help() drops the packet.  skb_checksum()
> and skb_crc32c() stay as wrappers that behave as before, and I'll
> convert the rest of their callers per subsystem in later series.
>
> Patches 7 through 10 fix problems Sashiko and an LLM review found in
> what was applied.  skb_zerocopy() refuses a zero-length copy that Open
> vSwitch can trigger from a user namespace, skb_try_coalesce() and
> skb_copy_and_csum_bits() can be handed a negative length, and
> skb_headlen() can underflow in skb_copy_and_csum_dev().
>
> Patches 11 and 12 make skb_segment() refuse a nested frag_list, which
> could still oops on a NULL list_skb, and add KUnit cases for the layouts
> it refuses.  Patches 13 and 14 get rid of the same BUG_ON()s in
> xen-netfront's bounce_skb() and tls's __skb_nsg(), and patch 15 updates
> comments that still describe the old BUG_ON()s.
>
> I tested this with the net_core KUnit tests, a test module that drives
> each of these paths under KASAN and fault injection, an Open vSwitch
> reproducer for patch 7, and a stress run over veth with netem.  Thanks,
>
> Josef
>
> [1] https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f73289=
5b@toxicpanda.com/
> [2] https://lore.kernel.org/all/20261013-b4-skb-segment-nosg-unreadable-v=
2-1-6c28d8ffa51e@toxicpanda.com/
>
> ---
> Changes in v3:
> - Link to v2: https://patch.msgid.link/20261021-b4-skbuff-bug-on-followup=
s-v2-0-2aa780a03524@toxicpanda.com
>
> Changes in v2:
> - Link to v1: https://patch.msgid.link/20261019-b4-skbuff-bug-on-followup=
s-v1-0-41dbef50b9f7@toxicpanda.com
>
> ---
> Josef Bacik (15):
>       net: skbuff: make skb_copy_and_csum_bits() report unreadable frags
>       net: skbuff: add skb_checksum_full() that reports failure
>       net: skbuff: fail checksum validation when the skb can't be checksu=
mmed
>       net: skbuff: fail segmentation when a segment can't be checksummed
>       net: skbuff: drop hw csum if trim can't checksum tail
>       net: skbuff: add skb_crc32c_full() that reports failure
>       net: skbuff: let skb_zerocopy() copy a short skb without head_frag
>       net: skbuff: make skb_try_coalesce()'s len unsigned
>       net: skbuff: reject data_len > len in copy_and_csum_dev
>       net: skbuff: reject a negative length in skb_copy_and_csum_bits()
>       net: skbuff: don't run off frag_list in skb_segment()
>       net: test the skb layouts skb_segment() refuses
>       xen-netfront: don't BUG() when skb_copy_bits() fails in bounce_skb(=
)
>       net/tls: don't BUG() on leftover length in __skb_nsg()
>       net: update comments that still describe the skb BUG_ON()s
>
>  drivers/net/ethernet/sun/sunvnet_common.c |  10 +-
>  drivers/net/xen-netfront.c                |   7 +-
>  include/linux/skbuff.h                    |  12 +-
>  net/core/dev.c                            |  14 +-
>  net/core/filter.c                         |   6 +-
>  net/core/gro.c                            |  11 +-
>  net/core/net_test.c                       | 100 ++++++-
>  net/core/skbuff.c                         | 447 +++++++++++++++++++++++-=
------
>  net/ipv4/icmp.c                           |   9 +-
>  net/ipv4/ip_output.c                      |  11 +-
>  net/ipv6/icmp.c                           |   7 +-
>  net/ipv6/ip6_output.c                     |  11 +-
>  net/sunrpc/socklib.c                      |   9 +-
>  net/tls/tls_sw.c                          |   8 +-
>  14 files changed, 515 insertions(+), 147 deletions(-)
> ---
> base-commit: 4dd16e31135ea8437a720222df34e8745f385d6d
> change-id: 20261016-b4-skbuff-bug-on-followups-ad11adf285a4
>

Honestly there is nothing super objectionable about the series, but it
seems a bunch of unrelated fixes, capped at 15 because netdev doesn't
let you have more than 15 patches out at once. I wish you broke it up
into less ambitious problems that the human reviewers can follow. But
maybe that's just me.

Like crc checksum failing in 1 series we can follow, and maybe 1
series for a full failable skb_checksum changes in 1 go so we don't
add the new thing before removing the old? Or is that too infeasible?

--=20
Thanks,
Mina


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 06:02:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 06:02:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469200.1678096 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7bV-0002kS-Id; Tue, 03 Nov 2026 06:02:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469200.1678096; Tue, 03 Nov 2026 06:02:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7bV-0002kL-FY; Tue, 03 Nov 2026 06:02:41 +0000
Received: by outflank-mailman (input) for mailman id 1469200;
 Tue, 03 Nov 2026 06:02:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <takakura@valinux.co.jp>) id 1xO7bT-0002kF-3S
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 06:02:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO7bS-001Pv3-GQ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 07:02:38 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae978f6-8faa-0a2a0a5109dd-0a2a450be98c-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:02:38 +0100
Received: from [52.101.228.119]
 (helo=OS0P286CU011.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae978fa-b7e8-0a2a450b0019-3465e477d854-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:02:37 +0100
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19) by TYYP286MB6030.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:405:27b::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 06:02:31 +0000
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82]) by TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82%5]) with mapi id 15.21.0569.011; Tue, 3 Nov 2026
 06:02:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" 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=eFj/BGgNB8l+GoIW/CZAV5rAdU8THbMgovllSGZyDWKWSTXxg5m8LzINf9w0zbJRyHcKiCm4e3Q0UXI/k64H2BgGK+/RvZgRQzrqddlLfQwXNA1ApPGG7Y7ky44FwPuKrCb9HVkWybSoXtcV5RjdqMkydkANmJjtKeqsRRR1r8qiqEvhkYnXImQ3hzKSVWdeEAtDuK0IhL60hNTBCwVf4OxdjoK2kqdMkU/K0WodTTuFVnfcIPaHYBChGhY54fnnHmE2KZ/da5uIXgDzG5OSqOm7H/D+Al81tiR6R4Y7UDxIqYLI3Vjdm6DFylJVbnCU0US4xGRU1l3kAo1uWd6Qvg==
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=lNbOfU7NzuNKzvHBmh/+QSyLAHBq+dv9rlvp07UgFXU=;
 b=k9Bnl5CvUpJCbEQEeMjnQDJYoJSmLmVz884fIrtN1xmNO6x1/KIYrji9DZiKAQLNIzZ7EPkOoOqclVGwT5ILQvYUyugIRAw90ckzSXuEfnlTf4OO2VmTmgIJYOAtN/DYXeUk0EmZc8YwNBZAz+vppRpdHeZI6OmXZwqjeeDJMUAXk5/PaAXPl+8wPFg1SK9jqhfWINWd6fmwkHSiqWUGsXPSHApomdmUXkN6L7pNj7rSyCg7YzY0RQrUTQN3u5VLAAd1/3uI5ErqvGBhOKqDPVUgsY3YwWmGqUFhSQopnNroY+jaxx/gSg0Lyzqy1zNzxzdsa0ooejg0TJlo3wciyw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=valinux.co.jp; dmarc=pass action=none
 header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lNbOfU7NzuNKzvHBmh/+QSyLAHBq+dv9rlvp07UgFXU=;
 b=RufqMuw4LqeiKKWncEGIyaCBVCMrytLzgkvQ0naql9xoM3/nvl0Szl9bDiKLu7t5GTuaLdqxST+7PtB5qCy1pB0HI2RollLpD2/9l+P1YuTH6h/eLv+rup8hqRJs0OAuUE+p09Z9z2os+4QQUlP3tD3Rou50MmtMHkl5zh5LmI8=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=valinux.co.jp;
From: Ryo Takakura <takakura@valinux.co.jp>
To: bernhard.kaindl@citrix.com
Cc: Volodymyr_Babchuk@epam.com,
	andrew.cooper3@citrix.com,
	anthony.perard@vates.tech,
	bertrand.marquis@arm.com,
	jbeulich@suse.com,
	julien@xen.org,
	michal.orzel@amd.com,
	roger@xenproject.org,
	ross.lagerwall@citrix.com,
	sstabellini@kernel.org,
	takakura@valinux.co.jp,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [RFC 5/5] xen/x86: livepatch: enable attaching callbacks
Date: Tue,  3 Nov 2026 15:02:07 +0900
Message-Id: <20261103060207.104162-1-takakura@valinux.co.jp>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <179285259082.1706038.15527286146285697701.b4-review@b4>
References: <179285259082.1706038.15527286146285697701.b4-review@b4>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: OS7PR01CA0169.jpnprd01.prod.outlook.com
 (2603:1096:604:24c::14) To TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: TY5P286MB319683:EE_|TYYP286MB6030:EE_
X-MS-Office365-Filtering-Correlation-Id: 9c9f0a5c-7bdf-4edc-f32c-08df39700c36
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|6133799003|10067099003|261102123227099003|22082099003|18002099003|3023799007|13003099007|261021135927099003|56012099006|261026130827099003|261021133027099003|261021130227099003|261026135527099003|261022075727099003|261026121527099003|261021121427099003|261026140227099003|261022115727099003|261022105027099003|261022113327099003|261028144727099003|261009223027099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	QOL8ycIu+oI4XDzYOiEPurU4qBPE17y8xlwQMXIxAz1fIDsbKoXBP5QAwllxMVKP6usa6gyeJ2opi1N+gk/LHKn49jvnCcOw0nTwTYnjjZq/IvobIe7z8V3f/8BVn0r0ohFR723fRZWn8xRS5LoejZeG1YabPM8gSyJ/gykeKZ2jtKbErtczm7PjSIAuLqv5dBI2HwJOAyHr+AswHUUwDb30iOEO02Ggi0Ux79Dr1Q3E0cPxMHeyRjUUlosBUx4Yd8RIa7ur+qMjthOwMsVJ3UzExoATI1TZ4Xy9RH56IjIJGcQwR+Xcw7dujItqyrDsIiy0GUgrrSE6R200z6IK9NLE6UDCqZ0pN95G15INdT99uCEifYHwd3cNYX1AdW40tg9gIhsPMWfgf37BEBivMuRxBsvft/WE1IKoG4AzlRInQSlhlxUKsc1qoAYnExi3ZD+q4SEPt/72vCig3zlU1hP10gPHR12kp0NtQDVvY4qn94jOutR4T6/bIFXL99nRg1ULKYukUMOXjLRBR3n0oFkL9r/46JxL4WcA9NSe1ykrHqvP239+0EBAZpEbbXk5xnMj22FNsv5rRO97qmzqxf6xsKPV+52LOe1+N2A777DtU9mmFSazGlZLC4IJsoMJ
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(6133799003)(10067099003)(261102123227099003)(22082099003)(18002099003)(3023799007)(13003099007)(261021135927099003)(56012099006)(261026130827099003)(261021133027099003)(261021130227099003)(261026135527099003)(261022075727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022115727099003)(261022105027099003)(261022113327099003)(261028144727099003)(261009223027099003)(261021123027099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?IwA9tqzPZnx5DuKwqNTPO1WvyQTjNURMS6Vwg4p0AwLsdlNVa425xSmqleZb?=
 =?us-ascii?Q?hDPogbUJm98D7xazoOH95H9m6OTajaZD2UrraOIxrZC6zxlw6PaSFqvUE0a/?=
 =?us-ascii?Q?bNgooZdWeo7EuRkdvIC3BumU//JprYs2E8lTgKtnv+DeiyLOS6+revBqJxaE?=
 =?us-ascii?Q?WhM/KshQxAA0o523Lx4EMjda4oy+6Ahc+/l87FXw+WXH/aHGxAHwvBo3s6gN?=
 =?us-ascii?Q?QJVVWtMw7maetJH2b0oEYevjnb2jqKWg+cMw3nBRvkQBavYtgxJE/JJYiGDE?=
 =?us-ascii?Q?023Mm8/rYHqIrHozWem8nu7fQvnynPFJ9EBcN/jex6JrR3+aGWS2iU4t1KFR?=
 =?us-ascii?Q?1Bk5rnVRR12wmDV9hQ4UxQl0B2Km66eOIZu/hXr30uLWY946EiSdkK1sVLP9?=
 =?us-ascii?Q?AZshSUAvJprlH2sTHTGk7sg5RvJMLMw8aMKDNwjt0amKMJ082XK0yoHUNQT7?=
 =?us-ascii?Q?U55Phjg/QfCH4qBLdl7OjNB69eojWoAROXE833F1I13yacemFqFvE9VLEuDu?=
 =?us-ascii?Q?CTk8IjYnai8Pc0fZBmJU1UguUBaEdxv9NyVi3qMEfzZxjpc6Rk6Go+TfzFRp?=
 =?us-ascii?Q?JK2hIGZ0JOIIekXMKDFGizcJRCeppduu5viSa6Bd7D50UBs8lib+vslnoYtE?=
 =?us-ascii?Q?mi0T0UdRZ9VLailO9OE+rDk3wUKo9iZhSOKjPrP+PktxqJ264tNeqwaVj6Fy?=
 =?us-ascii?Q?40NgylwXVIYaf1058/3Aq3nA45G8/isMxxrvqAu6Qf2zJWnX8UXMSBjtpDap?=
 =?us-ascii?Q?nFCsLMNJLQEJPcVi9BNq93mXpuI9Xh2sH3YzVrpn7GMB1MUJmj4FyOM/HBkW?=
 =?us-ascii?Q?R16dzP2bVIsaWHkNW0UGWOUETXmJq3GtPANI/hWFpwCmUSWkkShoZ+CE8n5e?=
 =?us-ascii?Q?7ypNUFuCd/3RbP59SH/EYVprIVIrp6BA+BzGOoMy0l7ZsC1LMPS6ApeWnFm3?=
 =?us-ascii?Q?NYwdo7e2rfhJLt5V4TKkZ0x18kL4WBXY9YVTJUSP8Z8gv3Xmn2xODz4FfmFt?=
 =?us-ascii?Q?jn8cCp/p2NliQJ1RGP72Nat/E1SOM0QQGz1V9aO07TlBVbGcTCB1EluqzyLd?=
 =?us-ascii?Q?dFAw8144N0uYRaL0axZxlAUUQ8GNYf/jjbkICFzQNZUpokCgCuAFBMxyLH0x?=
 =?us-ascii?Q?w4LpRfezGCwCFGOf5ymPEhnKo25cy0eC9V+3vCTQKGZy/jhl9UV0C0AnkAb+?=
 =?us-ascii?Q?xj4AVYZmu4WyuIf7v8vJNYFmWElt3s8IOJLh7y797eB8YS59p0bySRO7KTEA?=
 =?us-ascii?Q?FyB7P2tpPeCzx+GhrATQ6eDWw+bChQIqGjG1I8Ip7wguuycQJ9xIOK9wE5M8?=
 =?us-ascii?Q?eg/SRebQPhHPgFqoX2L3EBuHgX3uN0Oet226zG7uTgHn5M3m5ylYa9vu4ULK?=
 =?us-ascii?Q?5wV5wWrmYZLlH/zCwUZGPv0V4M4H4db8hEQxRQxYHAVKojg2zbYwHsziBa+R?=
 =?us-ascii?Q?wpswpuXkAw84NZbkNK2hPAzp5OGTLaURsqxnAQ35xJjWzDrLk3eAa9xgN74R?=
 =?us-ascii?Q?kqHo5R5gMIJ+PTmspONdSJjpuwLVf7htDCbJuyOBT0YzM2KlZ6S8YiBU9+pp?=
 =?us-ascii?Q?kR9fedWPTEX3+A4XvMW+Nvl1FuEBS5ZTN4vSZ+Wha6wvjJ4uJ2rRsDUZNIjz?=
 =?us-ascii?Q?y6Fgy/NwTfDo4nD9vSyWuu2Sni8yAmTyegiPUKGn+xe/4KX5CmbZT/li/IeY?=
 =?us-ascii?Q?8fhOekNE35WnIVDdQ7gUovwVPp45wLb76i63rrVUbiXSCc1NHcIQFZQwX3mn?=
 =?us-ascii?Q?o7iBb0Qybw=3D=3D?=
X-OriginatorOrg: valinux.co.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: 9c9f0a5c-7bdf-4edc-f32c-08df39700c36
X-MS-Exchange-CrossTenant-AuthSource: TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 06:02:31.5475
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 20q7nujg6kvYv7Cv8Y2HUkwN2Hd8yG2Lvah8Jt2Xlrx28QU0LlaNmCjb0qtfawRlw1cryn5W+ZTRinQEyX6xUA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB6030
X-purgate-ID: tlsNG-42698a/1793685757-ABED69EA-3E9D5B25/0/0
X-purgate-type: clean
X-purgate-size: 10104

On Sat, 24 Oct 2026 16:36:30, Bernhard Kaindl wrote:
>> --- a/xen/arch/x86/livepatch.c
>> +++ b/xen/arch/x86/livepatch.c
>> @@ -365,6 +369,35 @@ int arch_livepatch_secure(const void *va, unsigned int pages, enum va_type type)
>> +#ifdef CONFIG_X86_PATCHABLE_FUNCTION_ENTRY
>> +unsigned long arch_livepatch_trace_entry(unsigned long addr)
>> +{
>> +    if ( (is_endbr64((const void *)addr) || is_endbr64_poison((const void *)addr)) )
>> +        addr += ENDBR64_LEN;
>> +
>> +    return addr;
>> +}
>
>Could this helper itself be selected as a tracing target? It appears
>to be an ordinary function in an object compiled with patchable
>entries, and dispatch now calls it before reaching the callback:

Yes, it could.
I missed the function to mark uninstrumentable.

>> --- a/xen/common/hypfs_trace.c
>> +++ b/xen/common/hypfs_trace.c
>> @@ -141,7 +141,7 @@ void trace_dispatch_callbacks(unsigned long ip, unsigned long parent_ip)
>> -    if ( (unsigned long)global_trace_func.old_addr != ip )
>> +    if ( arch_livepatch_trace_entry((unsigned long)global_trace_func.old_addr) != ip )
>>          return;
>>
>>      callback = global_trace_func.new_addr;
>
>If the helper is the selected target and recording is enabled, could
>this call enter the trampoline and dispatcher again, which then calls
>the helper again before the recorder's recursion guard is reached?
>What would contain that recursion before Xen runs out of stack?

Yes, it could enter recursion.

>Would excluding the helper from instrumentation on both architectures
>help, together with checking the rest of the pre-callback dispatch
>path? The Arm64 helper introduced here looks relevant too:
>
>> --- a/xen/arch/arm/arm64/livepatch.c
>> +++ b/xen/arch/arm/arm64/livepatch.c
>> @@ -497,6 +497,11 @@ int arch_livepatch_perform_rela(struct livepatch_elf *elf,
>>  #ifdef CONFIG_ARM64_PATCHABLE_FUNCTION_ENTRY
>> +unsigned long arch_livepatch_trace_entry(unsigned long addr)
>> +{
>> +    return addr;
>> +}
>
>To illustrate, I think the helper's compiler-generated tracing entry
>could be excluded with a small change like:
>
>--- a/xen/arch/arm/arm64/livepatch.c
>+++ b/xen/arch/arm/arm64/livepatch.c
>@@ -497,7 +497,8 @@ int arch_livepatch_perform_rela(struct livepatch_elf *elf,
> }
> 
> #ifdef CONFIG_ARM64_PATCHABLE_FUNCTION_ENTRY
>-unsigned long arch_livepatch_trace_entry(unsigned long addr)
>+unsigned long __attribute__((patchable_function_entry(0, 0)))
>+arch_livepatch_trace_entry(unsigned long addr)
> {
>     return addr;
> }
>--- a/xen/arch/x86/livepatch.c
>+++ b/xen/arch/x86/livepatch.c
>@@ -370,7 +370,8 @@ int arch_livepatch_secure(const void *va, unsigned int pages, enum va_type type)
> }
> 
> #ifdef CONFIG_X86_PATCHABLE_FUNCTION_ENTRY
>-unsigned long arch_livepatch_trace_entry(unsigned long addr)
>+unsigned long __attribute__((patchable_function_entry(0, 0)))
>+arch_livepatch_trace_entry(unsigned long addr)
> {
>     if ( (is_endbr64((const void *)addr) || is_endbr64_poison((const void *)addr)) )
>         addr += ENDBR64_LEN;
>
>Would this remove these helpers from the compiler-generated entry
>table, using the same attribute as the dispatcher?

Thank you. Yes, I think this should work.
I'll make sure to mark both functions uninstrumentable.

>It only excludes
>these two functions from compiler instrumentation; it does not provide
>a general recursion guard or audit their callees. Uploaded trace
>payloads would still need trace-site validation to enforce the same
>exclusions, rather than relying only on HypFS's entry-table check.

Understood.

For the former concern on recursion, I'll put a guard covering the dispatcher
following your suggestion:
https://lore.kernel.org/xen-devel/179284608595.1706038.12585790247811677658.b4-review@b4/

For the latter trace-site validation, please see arch_livepatch_verify_entry()
which I propose in the reply to your 1/5 patch feedback:
https://lore.kernel.org/xen-devel/20261026073022.110170-1-takakura@valinux.co.jp/
I'll add the corresponding x86 validation.

>Separately, does the new trampoline need the mitigation-aware RET
>abstraction used elsewhere in Xen?

I see.
Yes, I think it needs to be RET.

>> --- /dev/null
>> +++ b/xen/arch/x86/livepatch-asm.S
>> @@ -0,0 +1,60 @@
>> +        popq    %rax
>> +        popfq
>> +        popq    %rbp
>> +        ret
>> +END(xen_livepatch_trace_caller)
>
>For reference, the existing asm/asm-defns.h, included through
>asm/asm_defns.h, contains:
>
>> #ifdef CONFIG_RETURN_THUNK
>> # define RET jmp __x86_return_thunk
>> #else
>> # define RET ret
>> #endif
>
>With CONFIG_RETURN_THUNK enabled, wouldn't a literal ret here bypass
>the configured return thunk? To illustrate, I think this could be
>addressed with a small change like:
>
>--- a/xen/arch/x86/livepatch-asm.S
>+++ b/xen/arch/x86/livepatch-asm.S
>@@ -56,5 +56,5 @@ FUNC(xen_livepatch_trace_caller)
>         popq    %rax
>         popfq
>         popq    %rbp
>-        ret
>+        RET
> END(xen_livepatch_trace_caller)
>
>Would this preserve the configured return convention with the existing
>include chain?

Yes, I'll fix this in the new version.

>I also wondered about the C stack alignment at the dispatcher call:
>
>> --- /dev/null
>> +++ b/xen/arch/x86/livepatch-asm.S
>> @@ -0,0 +1,60 @@
>> +FUNC(xen_livepatch_trace_caller)
>> +        pushq   %rbp
>> +        movq    %rsp, %rbp
>> +        pushfq
>> +
>> +        /* Preserve general-purpose registers. */
>> +        pushq   %rax
>> +        pushq   %rcx
>> +        pushq   %rdx
>> +        pushq   %rsi
>> +        pushq   %rdi
>> +        pushq   %r8
>> +        pushq   %r9
>> +        pushq   %r10
>> +        pushq   %r11
>> [...]
>> +        movq    8(%rbp), %rdi
>> +        subq    $5, %rdi
>> +        movq    16(%rbp), %rsi
>> +        call    xen_livepatch_trace_dispatcher
>
>For a build using the normal 16-byte C stack boundary, wouldn't the
>traced function enter with RSP eight modulo sixteen? The injected call
>then makes it zero, and these eleven pushes leave it eight immediately
>before calling C, rather than zero. Would that give the dispatcher the
>wrong incoming alignment in such a build?

I see.
I checked it and was working on 8 bytes aligned stack.

>The existing xen/arch/x86/arch.mk makes the reduced boundary conditional:
>
>> # If supported by the compiler, reduce stack alignment to 8 bytes. But allow
>> # this to be overridden elsewhere.
>> $(call cc-option-add,CFLAGS_stack_boundary,CC,-mpreferred-stack-boundary=3)
>
>Could the trampoline establish the dispatcher's required alignment
>without assuming this reduction is active, and restore the exact
>original stack afterwards? Is there another build constraint which
>rules out the 16-byte case for this feature?

There is no such constraint ruling out the 16-byte case right now.
And I'm thinking of making the trampoline into C function with
the attribute force_align_arg_pointer to make sure the stack is aligned.
Do you think this would work?

About the discussion on making the trampoline into C function,
please see the Andrew's feedback:
https://lore.kernel.org/xen-devel/97d772f1-322f-43f6-a793-fdbba16c7f04@citrix.com/

>Finally, could the x86 entry checks address the same restoration issue
>as the Arm64 path discussed on patch 1?

I see. Yes, I think there is the same issue.

>> --- a/xen/arch/x86/livepatch.c
>> +++ b/xen/arch/x86/livepatch.c
>> @@ -365,6 +369,35 @@ int arch_livepatch_secure(const void *va, unsigned int pages, enum va_type type)
>> +void noinline arch_livepatch_apply_trace(const struct livepatch_func *trace)
>> +{
>> +    void *site = (void *)arch_livepatch_trace_entry((unsigned long)trace->old_addr);
>> +    const void *new_addr = xen_livepatch_trace_caller;
>> +    uint8_t insn[ARCH_PATCH_INSN_SIZE];
>> +    int32_t val = new_addr - (site + ARCH_PATCH_INSN_SIZE);
>> +
>> +    insn[0] = 0xe8; /* CALL rel32. */
>> +    memcpy(&insn[1], &val, sizeof(val));
>> +    memcpy(site, insn, sizeof(insn));
>> +}
>> +
>> +void noinline arch_livepatch_revert_trace(const struct livepatch_func *trace)
>> +{
>> +    void *site = (void *)arch_livepatch_trace_entry((unsigned long)trace->old_addr);
>> +
>> +    memset(site, 0x90, ARCH_PATCH_INSN_SIZE);
>> +}
>
>The existing arch_livepatch_verify_func() in this file checks the
>replacement space like this; these lines are not added by this patch:
>
>>         uint8_t needed = ARCH_PATCH_INSN_SIZE;
>>
>>         if ( is_endbr64(func->old_addr) || is_endbr64_poison(func->old_addr) )
>>             needed += ENDBR64_LEN;
>>
>>         if ( func->old_size < needed )
>>             return -EINVAL;
>
>ARCH_PATCH_INSN_SIZE is five in asm/livepatch.h. Am I right that this
>checks space but not whether the original bytes are reserved tracing
>NOPs? Could an uploaded .livepatch.traces payload name a sufficiently
>large uninstrumented entry, have real instructions overwritten, and
>then lose them when revert substitutes five NOPs?

Yes, that could happen.

>Would shared trace-site validation for uploaded payloads and HypFS
>requests help establish the original bytes and reject overlapping
>ordinary livepatches? Could the applied offset and restoration state
>also be retained rather than inferred again from a potentially changed
>entry when reverting?

I see, I agree with both.

For the former, I believe it's addressed by my reply to your
patch 1/5 feedback. Please take a look at arch_livepatch_verify_entry().
https://lore.kernel.org/xen-devel/20261026073022.110170-1-takakura@valinux.co.jp/

For the latter, I'll follow the existing arch_livepatch_apply()/revert()'s
save/restore routine in the next version.

>Thanks for taking a look. I may have missed a guard or architecture
>constraint elsewhere, so I'd appreciate your view on these cases.

No, you didn't miss anything. Thank you for pointing them out.

Sincerely,
Ryo Takakura


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 06:04:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 06:04:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469210.1678104 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7dg-0003LZ-0W; Tue, 03 Nov 2026 06:04:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469210.1678104; Tue, 03 Nov 2026 06:04:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7df-0003LS-UA; Tue, 03 Nov 2026 06:04:55 +0000
Received: by outflank-mailman (input) for mailman id 1469210;
 Tue, 03 Nov 2026 06:04:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <takakura@valinux.co.jp>) id 1xO7de-0003LM-9l
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 06:04:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO7dd-001QM5-Mw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 07:04:53 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae97974-8faa-0a2a0a5109dd-0a2a450b84c0-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:04:53 +0100
Received: from [40.107.74.119]
 (helo=OS0P286CU010.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae97983-b7e8-0a2a450b0019-286b4a77ba77-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:04:53 +0100
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19) by OS9P286MB7838.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:604:474::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 06:04:49 +0000
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82]) by TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82%5]) with mapi id 15.21.0569.011; Tue, 3 Nov 2026
 06:04:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" 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=L0cQ1v0OIYtS/6bYaruPagq4EOAFVz+GonF8UMrM9ISus+3ePJY+Gp7hW5KnFwcFVoic8Z1nkBXUCuhJN1UdV0lmg7w2yBybutJa25+MTpoQVxZwfLcNv4i/7z0Uz5Ck5eb+EEHeQk2qADxsKNH5igUGUPm8tJj0Tl5EYneNNkofdMz6TJYLpRwox5OK+L97RqAfRE0jt433WIA4O7LiTeILOrQXG27TfDTwQcUZUC5mRq1QJX0sv97y5Dh2M0rZpdIg7ruIYmAYaKxyyjBdg7hfrl9z+8ckb3gl3l9FFvjxQUQnb3Ti9hmQoAfCLmSh7tW2zKsiEiN6IqoIiRYE/Q==
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=kUkl3RtsSxBVJ/HZu/hZ9Lm1nvwsMgutWtd4I+5L8b4=;
 b=YVpiDndgVDFfIYtbJp14skOQ2a3f+RaCOYl6lE4Ui3rfelgn7yzEeMIylBdugedlaqHtodgnT4VABAFsP3GZQgr+PK2WKXdxpKcaqNZnMh3OXQmH12Yg/d/N8RsZM1kQeqzEqml20W4N5UUxJ9PW6T6cqXSSUVwWt0N2+Yl922i7AtNlIYtjcmFhr0YQGTpqxjiu2JAj6alCYBu/j3dixUL1ZiRRasrZP+P/ww/bL+swv/LCSu9ocvEdGvkY7ud6JFrft2zULvY/KYplFFm8DnqTFxLgahML4WieF2UzuzfzZtTTNBM+xD7RXBKaTkunJJzNsrYf6XnSVcWvC+AriQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=valinux.co.jp; dmarc=pass action=none
 header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kUkl3RtsSxBVJ/HZu/hZ9Lm1nvwsMgutWtd4I+5L8b4=;
 b=P4XQ15scv9ziuQb67RAg4oWnxUl/hqV2EvJhK69+QIwiuxLhoKFyuUycufixp8UQNdEPQQAb0C3cJ/iSMGfb2BkEkKJaeVX9+tJtIP6tz1C9LH4chGneEEwWNC6WG9d7B4e0NMjYmsDzeNk1ORVOJO4BQT4Uk7iVgUHlDPCAzIg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=valinux.co.jp;
From: Ryo Takakura <takakura@valinux.co.jp>
To: andrew.cooper3@citrix.com
Cc: Volodymyr_Babchuk@epam.com,
	anthony.perard@vates.tech,
	bertrand.marquis@arm.com,
	jbeulich@suse.com,
	julien@xen.org,
	michal.orzel@amd.com,
	roger@xenproject.org,
	ross.lagerwall@citrix.com,
	sstabellini@kernel.org,
	takakura@valinux.co.jp,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [RFC 5/5] xen/x86: livepatch: enable attaching callbacks
Date: Tue,  3 Nov 2026 15:04:42 +0900
Message-Id: <20261103060442.104814-1-takakura@valinux.co.jp>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <97d772f1-322f-43f6-a793-fdbba16c7f04@citrix.com>
References: <97d772f1-322f-43f6-a793-fdbba16c7f04@citrix.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: OS7PR01CA0305.jpnprd01.prod.outlook.com
 (2603:1096:604:26f::14) To TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: TY5P286MB319683:EE_|OS9P286MB7838:EE_
X-MS-Office365-Filtering-Correlation-Id: d3a0408c-e3c6-421a-4b27-08df39705e42
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|23010399003|1800799024|366016|260925022911599003|260925021311599003|260925021911599003|56012099006|261009223027099003|261028144727099003|261021121427099003|261102123227099003|261022105027099003|261022113327099003|261022075727099003|261022115727099003|261021130227099003|261021123027099003|261021133027099003|261021135927099003|261026135527099003|261026140227099003|261026130827099003|261026121527099003|10067099003|22082099003|18002099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	D3Qp5NEPLWmvFF2Gf2rUXsYvp6L+1CQno+L7Dyh9j2FdP4/+UbEjApOLQeczpjlVW/F0DGM0UE0n36//kx3NgsDXJb471tLuSH2cbb4Zl/YxwEVo0k8FcfabT3tZb1wCyPh6YRQaC5pS1XJxXNFCaW1drMGOsvbN2W6njhT8A+rFLTs1jrF4AwOq59+n4KbgP3eDDv/HnWXrQIL/7HqoKty4X+EWpgQjJqFmpxEKi1ISbwPaHddNRcYK0ukvxzYY/QOZUWQ0CK90fkvch+xGQKMbDvCYUYRfwfLJoT+Z2hh/7Bsx8y+VHRNk9pLqqx+rnnebzQWgibINvwr+1lxGUpxorPVejWGXuuLElP0Wjir6gY95puQHa0fWxl6EuU8m+XfY8ahHMi85/LtKuupDgNwxnvJgg+/oNt8FhA3dGkx/1ylMkT9/D/sSYOlwu/r5BCYquH6O2BUrssvurv8B4uFRpI7qYUwMei0m0CHkB+JW9OIVOrCWLNxViD9Zem0HW+NIo4XfWuRmhvwbcXHwHmYWkXgXCYkHHdQjpgsk2o18ME0bXUHZknA/tLu8zRBSj2suy28TRlOerqIA0RxkJzq5F6GCuH9hmHCgrD1fEzeF2b3tuv80KKG/iC6rcK/v
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(23010399003)(1800799024)(366016)(260925022911599003)(260925021311599003)(260925021911599003)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261102123227099003)(261022105027099003)(261022113327099003)(261022075727099003)(261022115727099003)(261021130227099003)(261021123027099003)(261021133027099003)(261021135927099003)(261026135527099003)(261026140227099003)(261026130827099003)(261026121527099003)(10067099003)(22082099003)(18002099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?dzH8K0c0DCBldGrBgWPPBw5pyi2AqpH6qLBZ4K3dzuJ4RrE5yyqY6VJzD8c0?=
 =?us-ascii?Q?uNn3WcaoGQJXEdi8Idih7utT6Zn0gSn7LX1kwF3Rhi7l5Pb/s5A0lI3J5ei0?=
 =?us-ascii?Q?LFkmljvIKjZ79JiezNg9HHIJIYJsCTJ0uHXwsazDVZKZI1LzSb8EJV5KKRae?=
 =?us-ascii?Q?rf7PJIgXtQyYpIc20TOhmb/uV4L6TGMPicm/kcH2o70X6dxLVBTGi5RvKIxZ?=
 =?us-ascii?Q?mbC7YWEfrhoegqWIYIwVReZwXmxbrEFWHkKMcy4ZoOHxhDzPErVsSPUnL+fe?=
 =?us-ascii?Q?QvlMZeojQrilGOidIoipJYhwkQMieCmwVI4C7g93HLEZtrZrew4zS6Le2GKA?=
 =?us-ascii?Q?B+59OcuD6lkvhN9FUVg6Sa6nk++VjyIpWmA6LP4D0DOdUkf/i+RFmoQcdQYm?=
 =?us-ascii?Q?urAEsesIvYrGJraClLCOxwGR1ULhV0hGaZqye4WQjyDaMsuaRVNYW3vTr5UA?=
 =?us-ascii?Q?tldynoI/egQAtM/n48/6zwxXNWCVxr7HELVg7Y/CsG49IbCeXXpF81X79My0?=
 =?us-ascii?Q?aDHItFQ1FbFjafC7KArKuZY3ntM7cNwdmO7dgzWZTXlUOgMbr6aGYD9t0Cdj?=
 =?us-ascii?Q?BteBkvrMSYKMc8NaBdRDs6d6m8GtDJc08uLkEsJKhXeDY/VaRLCrJlBAqM2b?=
 =?us-ascii?Q?oF0ZbzTqeReURlp1aVTWiU5Up6JcBLl/d2jX0yutD/Lo35cVHWg/Xqz7Sje8?=
 =?us-ascii?Q?5WqBiZVohjay3rebxWniwCn4jfnOMcciDklqHfF3YhiPZnx6lqmZcLV7QEvq?=
 =?us-ascii?Q?Ku1n46ooOsRne7LIn/+2Rhx9AbzEeqiyFnhaiw8WxUg+ClqoPCeZYnQ9oEbF?=
 =?us-ascii?Q?jh5vca3quIj/3lM/HO9pBJfFYICAEUtTY4t5/CGp5toECikUTZBeViUKaaFE?=
 =?us-ascii?Q?9EA4vYdqACRZLQOAsb523D2CG9OEyMwO3iwY4Co/ZUoJAgWV86FWZHyzUOyK?=
 =?us-ascii?Q?1RQjpHEmsiYVHW3W9azJ3E6PLkBIosd1KlBe/C5s8o1bhWmcRAUHdzQXRLiu?=
 =?us-ascii?Q?71ELuE3pdeVVik6Wc1VleYEP6N5KDg6p3soMs/pnpH78mNmg4dcVtVSNXbtV?=
 =?us-ascii?Q?065858c7DECrvy/MWuhV2HCngo/bYRl7wTjIc3VIhUFhI+YE1HYJMBpi/iYC?=
 =?us-ascii?Q?utXkCo16xrMnKdAwu4kqDBSmhfN11tX2AnyYqyPFmDO93tYfGXOrRxi7PlIu?=
 =?us-ascii?Q?E9gUIZ8Gt7lo3AQav/K4B1t5RSNJMTg/mtCjaeMWhu68IFwUM3Cdc8npzveQ?=
 =?us-ascii?Q?SjnmtozvvLhnzyO3fctAFGc3/uJHnFY48huXiEJSFQesl3gRQB50fzDhWseX?=
 =?us-ascii?Q?A5v7hEJYUZHRJeknNCMvZKrB5zKJJU0GhoqCup0dQIie57Gsi5eEkRnB4B+T?=
 =?us-ascii?Q?+C/Ex4dnZwo4uNuz/7eM+7DuIZrK+53i/lzko40C9Tw80P3imtcNKiu5bd8O?=
 =?us-ascii?Q?VtztsegylQ2bHz6pu3psmhWz/Wmqxhjlgc1dB9JEBOGD5KhE2TZbFsgxoLk+?=
 =?us-ascii?Q?ufXCoCLlW0/B67X8yH7aloN01kXxwZCStC2W94M68oL/buDK4tCT/96Pde9Z?=
 =?us-ascii?Q?SR9kduTfTpNbj6Z/yY1CXrA1Urh0iQPIOYztWkrymhft92f7r11gX9Zvq10h?=
 =?us-ascii?Q?VjkelNhHTVmVXQLuTmUIk4Ri1rNZR6CPXHN/xwl3mcfKvxqq6N585od3LReh?=
 =?us-ascii?Q?6y+W2xYAa/+9nDkc+bLqUr7THY8VnzIh7RZz/1a3J23IgjwEmP+COAwQY1Lu?=
 =?us-ascii?Q?Q+zp4gqgDw=3D=3D?=
X-OriginatorOrg: valinux.co.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: d3a0408c-e3c6-421a-4b27-08df39705e42
X-MS-Exchange-CrossTenant-AuthSource: TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 06:04:49.1124
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: njHN11BnDfcWpcI0PEWMZ+GgUNFNjyyHwJKslKw4UDqRQ8Xjp0bmXsimDyTufhBWcpHOXgUm+k49ab+OyF7PLg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB7838
X-purgate-ID: tlsNG-42698a/1793685893-A82F49EA-DC87AAA0/0/0
X-purgate-type: clean
X-purgate-size: 6304

On Mon, 26 Oct 2026 11:42:37 +0000, Andrew Cooper wrote:
>On 23/10/2026 5:58 am, Ryo Takakura wrote:
>> diff --git a/xen/arch/x86/livepatch-asm.S b/xen/arch/x86/livepatch-asm.S
>> new file mode 100644
>> index 0000000000..005765b476
>> --- /dev/null
>> +++ b/xen/arch/x86/livepatch-asm.S
>> @@ -0,0 +1,60 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +#include <asm/asm_defns.h>
>> +
>> +        .text
>> +
>
>You need ".file __FILE__" too.  IIRC this is a workaround for a binutils
>bug.

Understood. I'll add ".file __FILE__".

>> +/*
>> + * xen/arch/x86/livepatch-asm.S
>> + *
>> + * Trampoline for livepatch tracer.
>> + *
>> + * If livepatch tracer is enabled, function entries are placed
>> + * with five NOPs. arch_livepatch_apply_trace() will be livepatching
>> + * those NOPs to:
>> + *
>> + *     CALL      xen_livepatch_trace_caller
>> + *
>> + * 0(%rsp): traced function + 5
>> + * 8(%rsp): return address to the traced function's caller
>
>Somewhere in this comment needs to say that all GPRs need preserving.

Ok. I'll add a comment.

>Except...  Looking at arch_generic_hweightl(), my notes about
>__attribute__((no_caller_saved_registers)) say GCC >= 7 and 8 is already
>a minimum for the (broken) patchable function entry, let alone the fixed
>one.

I see.

>So I think you don't need an ASM trampoline at all.  I think you can
>merge xen_livepatch_trace_caller() and xen_livepatch_trace_dispatcher()
>and just tell the compiler to spill all ABI registers.

Yes, it would be nice to merge the two...
But xen_livepatch_trace_dispatcher() is also shared with arm64,
and GCC does not appear to support no_caller_saved_registers on arm64.
That makes arm64 still need its ASM trampoline to preserve
the registers and common C dispatcher.
Do you think rewriting livepatch_trace_caller() in C while keeping
livepatch_trace_dispatcher() as common dispatcher would be reasonable?

I'm also thinking of adding the attribute force_align_arg_pointer
to address the Bernhard's feedback on stack alignment:
https://lore.kernel.org/xen-devel/179285259082.1706038.15527286146285697701.b4-review@b4/

>Also, the xen_ prefixes are redundant.  Just name the function
>livepatch_trace_caller().

Ok. I'll remove them.

>> + */
>> +FUNC(xen_livepatch_trace_caller)
>> +        pushq   %rbp
>> +        movq    %rsp, %rbp
>> +        pushfq
>> +
>> +        /* Preserve general-purpose registers. */
>> +        pushq   %rax
>> +        pushq   %rcx
>> +        pushq   %rdx
>> +        pushq   %rsi
>> +        pushq   %rdi
>> +        pushq   %r8
>> +        pushq   %r9
>> +        pushq   %r10
>> +        pushq   %r11
>> +
>> +        /*
>> +         * xen_livepatch_trace_dispatcher(ip, parent_ip)
>> +         *
>> +         * ip: Address of the traced function.
>> +         * parent_ip: Address where the traced function was called.
>> +         */
>> +        movq    8(%rbp), %rdi
>> +        subq    $5, %rdi
>> +        movq    16(%rbp), %rsi
>> +        call    xen_livepatch_trace_dispatcher
>> +
>> +        /* Restore the saved state. */
>> +        popq    %r11
>> +        popq    %r10
>> +        popq    %r9
>> +        popq    %r8
>> +        popq    %rdi
>> +        popq    %rsi
>> +        popq    %rdx
>> +        popq    %rcx
>> +        popq    %rax
>> +        popfq
>> +        popq    %rbp
>> +        ret
>> +END(xen_livepatch_trace_caller)
>
>Just in case there's a problem doing this all in C...
>
>No need for pushf or popf at all.  Flags are undefined at function
>boundaries.
>
>Please drop the q suffixes; they're all unnecessary here.
>
>The ret needs to be RET for speculative mitigations.  (It's emitted as
>JMP which will be turned back into a RET on safe system.)

Understood.
I'll get them fixed in case if we need a trampoline.

>> diff --git a/xen/arch/x86/livepatch.c b/xen/arch/x86/livepatch.c
>> index 5158e91f7e..1dfcc3e750 100644
>> --- a/xen/arch/x86/livepatch.c
>> +++ b/xen/arch/x86/livepatch.c
>> @@ -19,6 +19,10 @@
>>  #include <asm/nmi.h>
>>  #include <asm/setup.h>
>>  
>> +#ifdef CONFIG_X86_PATCHABLE_FUNCTION_ENTRY
>> +extern void xen_livepatch_trace_caller(void);
>> +#endif
>
>You don't need ifdefary around declarations.

Ok. I'll remove them.

>> +
>>  static bool has_active_waitqueue(const struct vm_event_domain *ved)
>>  {
>>      /* ved may be xzalloc()'d without INIT_LIST_HEAD() yet. */
>> @@ -365,6 +369,35 @@ int arch_livepatch_secure(const void *va, unsigned int pages, enum va_type type)
>>      return modify_xen_mappings(start, start + pages * PAGE_SIZE, flag);
>>  }
>>  
>> +#ifdef CONFIG_X86_PATCHABLE_FUNCTION_ENTRY
>> +unsigned long arch_livepatch_trace_entry(unsigned long addr)
>> +{
>> +    if ( (is_endbr64((const void *)addr) || is_endbr64_poison((const void *)addr)) )
>> +        addr += ENDBR64_LEN;
>> +
>> +    return addr;
>> +}
>> +
>> +void noinline arch_livepatch_apply_trace(const struct livepatch_func *trace)
>> +{
>> +    void *site = (void *)arch_livepatch_trace_entry((unsigned long)trace->old_addr);
>> +    const void *new_addr = xen_livepatch_trace_caller;
>> +    uint8_t insn[ARCH_PATCH_INSN_SIZE];
>> +    int32_t val = new_addr - (site + ARCH_PATCH_INSN_SIZE);
>> +
>> +    insn[0] = 0xe8; /* CALL rel32. */
>> +    memcpy(&insn[1], &val, sizeof(val));
>> +    memcpy(site, insn, sizeof(insn));
>> +}
>
>Why noinline?  These are out-of-line anyway by being cross-TU, but in a
>theoretical world where we had working LTO, I don't see any problem with
>them being inlined.

I see. Thanks for explaining.
Here I added noinline following arch_livepatch_apply().
I'll remove them.

>> +
>> +void noinline arch_livepatch_revert_trace(const struct livepatch_func *trace)
>> +{
>> +    void *site = (void *)arch_livepatch_trace_entry((unsigned long)trace->old_addr);
>> +
>> +    memset(site, 0x90, ARCH_PATCH_INSN_SIZE);
>> +}
>> +#endif
>
>This wants to be a 5 byte NOP, not 5x 1-byte NOPs.
>
>I see that GCC is still doing the slow thing.  Clang is doing it's code
>generation more sensibly.
>
>Use the add_nops() function.

Understood. I'll use add_nops() in the next version.

Sincerely,
Ryo Takakura


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 06:07:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 06:07:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469218.1678114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7fj-0003tx-BV; Tue, 03 Nov 2026 06:07:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469218.1678114; Tue, 03 Nov 2026 06:07:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7fj-0003tq-8I; Tue, 03 Nov 2026 06:07:03 +0000
Received: by outflank-mailman (input) for mailman id 1469218;
 Tue, 03 Nov 2026 06:07:01 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <takakura@valinux.co.jp>) id 1xO7fh-0003tk-58
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 06:07:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO7fg-005qhr-I4
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 07:07:00 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae979e4-e002-0a2a0a5209dd-0a2a45058b86-38
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:07:00 +0100
Received: from [52.101.229.87]
 (helo=TY3P286CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <takakura@valinux.co.jp>)
 id 6ae97a02-4cb1-0a2a45050019-3465e557aed0-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:07:00 +0100
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19) by OS9P286MB7838.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:604:474::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 06:06:56 +0000
Received: from TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82]) by TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 ([fe80::5f8d:a6bf:3b84:5a82%5]) with mapi id 15.21.0569.011; Tue, 3 Nov 2026
 06:06:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" 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=ipx11jCxmVxJ5kNSm9jR0QVlmSv2Z4pgUHSRGTW5sNUPyK5+hxdN95dXz3bxLoUKkFMqPj6nV2npvAMfbn2wCVzsxPZ0DwUY0QEtJOR3GYY5PrkyHwZlioKvC3XNjlQCFuJb93SWH5FLPZD8GbJerMEXStTcERBebtkvT2j5KEG3cDaqTYfJjyBPuWPkH3UVh4bYC2Pn9GLLtdUL9SBA7rmGYsTPv3egA0+/RusJv9ePH6E7QoM736vKMp34UXa+67MMwzT4oARd62dkIXJsSeBDmu1VG648JnFJE/W556PMUW/xinA2f/T5lHCV5fofKci6utyWUvnqxqUVaXpjNQ==
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=6wJbRb4c11sycDgRMbqx2U9KFUPcOdk0j1e342MzWLg=;
 b=Nvh0la2tBsSmbdgo8imOXHk2pwXofTnUzf3D6KhVwusCqcq1iHgX2+Ge+eiurwt0HMNgNlpfiv9V23gTCQGbtksqwozSWcNOsE/Lbhj+MTJk26/ZjUrlp4IEBu+1mZLOx1nAk7uNxHO/XuopcdxioWQ7tKKekKqjDOl7SB5bAWG3ow7mwAq8zNJfIRbkYbhvdLPWqxTttRWmW1N4cViv3cof7hOZcS3wPHikbRA2/XOj16R/I4MkeDAG6vCuvTUUOd7v8Is7KWgzZDByW55t9OUlsZMqSf8NLlmCZ4RMCWYyRvC2VtRQB26g6j89CbvCscTLEg6Ysf5rUjCQne/Cqg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=valinux.co.jp; dmarc=pass action=none
 header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6wJbRb4c11sycDgRMbqx2U9KFUPcOdk0j1e342MzWLg=;
 b=X4tffKkRbgBTpDBC/F/B6swf5MzEiWAjDFpoB/cYzMZt5Yn4CregWlGrlfp0PJx4PWf84m8+ndfFyLfMIXUqweLHH0OaxbzCFXDt0r9A8RsLFhMssT/FZmcnFGoLxl/gk01GCBfYdUMdZ+KC+KoCwIAB4CDwqe9S7N6hCPR4S14=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=valinux.co.jp;
From: Ryo Takakura <takakura@valinux.co.jp>
To: jbeulich@suse.com
Cc: Volodymyr_Babchuk@epam.com,
	andrew.cooper3@citrix.com,
	anthony.perard@vates.tech,
	bertrand.marquis@arm.com,
	julien@xen.org,
	michal.orzel@amd.com,
	roger@xenproject.org,
	ross.lagerwall@citrix.com,
	sstabellini@kernel.org,
	takakura@valinux.co.jp,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [RFC 5/5] xen/x86: livepatch: enable attaching callbacks
Date: Tue,  3 Nov 2026 15:06:42 +0900
Message-Id: <20261103060642.105330-1-takakura@valinux.co.jp>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <00f95d00-3d43-4e85-92e9-0b1cba4f0c4f@suse.com>
References: <00f95d00-3d43-4e85-92e9-0b1cba4f0c4f@suse.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: OS3P301CA0045.JPNP301.PROD.OUTLOOK.COM
 (2603:1096:604:21e::14) To TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:403:511::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: TY5P286MB319683:EE_|OS9P286MB7838:EE_
X-MS-Office365-Filtering-Correlation-Id: e783faad-572a-4231-adfd-08df3970aa42
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|23010399003|1800799024|366016|56012099006|261009223027099003|261028144727099003|261021121427099003|261102123227099003|261022105027099003|261026140227099003|261026121527099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	Atx1KbL6e4SbTg9nd9tGOS0SA8Qo9exB694zPj7VEqwsHSqs/sJnHrI1+oAOnRiRagmA2xESdtG3jCV3DQrHHlRI3Y4l2OdPs4sZh5csH+m89RLOFUSPxgQh6+pI7hs+Op2iXODWk78Sane4SsDBlD+PCH1oGxxNNCVowePHNMwF2MTTinPO7PK7CjJhjT+lFlKkh9hcMAFhYSZTZ5DcIlqv/uKUnECKDkeQZM1DfjifIAfeCYcsdp9isSAdxGUr0SXsbrMv5bHjbMF3MN6oWRVqba7STTcyq/DPOLDeLPtIfdafiQqntvnHiNRT/zELjct7z1Cy66WwoiIHPJ01hcdkS0pxBIuyj5Wpsa5r929jr7sKz5YlCNZsCJRZpVEcLx4ou2UCYLQk8PS/y4+5AfZSWmSV+5jCLKJHWWOkedBBBIhKPqyP9nP7AmCJNbgXQsHesc6tpCrBDKYGc+vop5e16DKqj+hpJ6I+fzR2qcOtqWk5x1Y9ou+k7o2zOjCeS6hAGvTsPriKfri1plzJBvUHxKxKYEcLFHdfzvC4JtqUEuEoe7JLtn6l0xI4MxJ0W12dyj72X0qtVWnnfZeToiAwAtSOBjR+x/sRgDauuFk//xGWxeTWy7TSRxufoDvTqJCzc4U124Rvijk0VHCclhqVLzuvAlbbIGuRHOu1Udg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(23010399003)(1800799024)(366016)(56012099006)(261009223027099003)(261028144727099003)(261021121427099003)(261102123227099003)(261022105027099003)(261026140227099003)(261026121527099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?1TT1V1KKkhM1ACK1YzTgob9R7ZdDJWfaSxixUniPTcmAl02RmUBZQ6V6S1hP?=
 =?us-ascii?Q?sVXBF+nttYA5WKeKBvooOr4Sla1Rl0l5o9RmKuu9/ccfD9FVEeuDZKg4IwwX?=
 =?us-ascii?Q?5gWkXrkF4npB1vXXTVytb0epceb45tEiWzcHqtuleghDvVCZmCgH3bKcY6oF?=
 =?us-ascii?Q?XdqqyMNjwqrUlZ9GeAKJbVc2GdGqo/zSlv5S+pJokamJEtt0+lPuWr12TR7W?=
 =?us-ascii?Q?U7GCptRNaGDTL6bohdMIqai5n4xtR7hvw908wR8gj7RrZ2WjbmfN99S3NzIa?=
 =?us-ascii?Q?la/IHH1o58/D3P5rIJFXtwEMW+TW+EV9NaiL3tSU1ixDz8jCM0isYz2r15OO?=
 =?us-ascii?Q?x1XfeRfpStYqP5zJvgGWTYifv64M9ASbfc384IIgto264PsDGnEs5D4p2dTk?=
 =?us-ascii?Q?SpyfK02xbp+GEaurruSuB6YMYZTDmFErcYUFIsIBX5yQwwo/D1OnmHjYOkih?=
 =?us-ascii?Q?1XyeQHGYtT3Ao6RN5CqWwk9aT1p435QPPM1RS2qKNeWnacBoy2g1KtxBckBA?=
 =?us-ascii?Q?44QhE7TRkD3GAUBf6X96uXZVbMtnYYrqdbGPqrYhL9tove1PSti9Pf8gxUlN?=
 =?us-ascii?Q?wOoIzLZ1npKtjilJ/2CK4z37viYDEvW126zW2CAK34zt7FWNbi+VmdKHqvOj?=
 =?us-ascii?Q?997WOM6UJ3wUzlu3/BGGzB0b5DaO7zh5wdnjE76mlaE/jjWowMZfUDAdV2za?=
 =?us-ascii?Q?gKRy8XYnenF+TYOTwXRXirFnh7MauczB6kAvxZtqi7xyNhnL4WppIRPsIaq3?=
 =?us-ascii?Q?ej+z7ONtAP54ntYGKPD/OKl8bPK6exl0ckZIcb8AtL+aPip05T1F9kJB1l+j?=
 =?us-ascii?Q?eRcQcw/12+d9p8wxq7xd2xMJthMIIrpK+8Ri+OJHcqajajbsy/+AYSQU3c7d?=
 =?us-ascii?Q?Z13NGryF1cqmPlynNvQtJj4YMQw3BlBaHmh4PPv2knqxghKKkGayHIMAQ/9Z?=
 =?us-ascii?Q?cwy3aBG+l9nfZHpc5rMfEiPhBOFwCM1N4XiOX10OHqnD6qD6F2sbegeajwUd?=
 =?us-ascii?Q?CZF66e4cijD7OdKDi1gYX9sOqSXPfDWRW/vlciMds5Ulsyzk+JkvFC7DQErM?=
 =?us-ascii?Q?X9MQwZ5UUuZEwp6ZWuEFridsXt6cDw7M57BGVBr6ivtmMmvLAXnxaAec9H6E?=
 =?us-ascii?Q?Ve7s5GL7+7beoD9cDPSzGerA1ciX8rslBnznpqGh9yf6wOjwfwCXeiEgf5Vd?=
 =?us-ascii?Q?zz+PUPwSSGzvsSpB4aMy8W1RUgtCuPiGCGQFIhV+jBVFSnlbkh35KpMLiWy7?=
 =?us-ascii?Q?5X0NfzwHMfmKQgTAfezBrgm/I3/y79bryvix3gmyX8K/NCQjw62ymqirhnbD?=
 =?us-ascii?Q?cggxs2Okuz1I8P6QdYSQAEXEa9+ckejwu85fgQ0C2Rmk0kxY59FExFZ0GKZK?=
 =?us-ascii?Q?9z5z5qZTkiZV/OORaFl6FQIqPJyTUozm0QeyuSaY9KE01mnG2WOZGhvHMSol?=
 =?us-ascii?Q?Fofmbbyv/SJBI3gRnN86CC05HAHCVcae+AkRCu+Y+e1I5ZQoKNTbH3J2C4US?=
 =?us-ascii?Q?X62KktvGP2OkPt2626d9+uKniI1mwFois1x/68DiTdLVF5p8lvUDqDrzNeiT?=
 =?us-ascii?Q?UYHMnyfL2ZE8pWquGoTU75EOLR99xXqsZUf2Wi/HtprJx1fApUYGnCn3tCtc?=
 =?us-ascii?Q?J/5udqgAOtk1ZzZfLDh/PrCqnsP89vaHxwIkONu993JXB/N0BEEhrBhBFR/k?=
 =?us-ascii?Q?MadGbloCnb3jQ83tzDICx5DrsRYqHiagJVsDt8dZ2WDQ1cpa+BUTgK2ZHm3J?=
 =?us-ascii?Q?m6juVbIQ0g=3D=3D?=
X-OriginatorOrg: valinux.co.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: e783faad-572a-4231-adfd-08df3970aa42
X-MS-Exchange-CrossTenant-AuthSource: TY5P286MB319683.JPNP286.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 06:06:56.5945
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: d+3DX8w+iLe4GTTwcmNp8LBEt19mK3Pd/fpnma3FwuQrqhwjtDWuRcRS5NWBgOMVEcueDL3pjsdWNBP1HQDMFQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB7838
X-purgate-ID: tlsNG-c201ff/1793686020-251182A1-66229B69/0/0
X-purgate-type: clean
X-purgate-size: 2073

On Mon, 26 Oct 2026 12:56:56 +0100, Jan Beulich wrote:
>On 26.10.2026 12:42, Andrew Cooper wrote:
>> On 23/10/2026 5:58 am, Ryo Takakura wrote:
>>> +FUNC(xen_livepatch_trace_caller)
>>> +        pushq   %rbp
>>> +        movq    %rsp, %rbp
>>> +        pushfq
>>> +
>>> +        /* Preserve general-purpose registers. */
>>> +        pushq   %rax
>>> +        pushq   %rcx
>>> +        pushq   %rdx
>>> +        pushq   %rsi
>>> +        pushq   %rdi
>>> +        pushq   %r8
>>> +        pushq   %r9
>>> +        pushq   %r10
>>> +        pushq   %r11
>>> +
>>> +        /*
>>> +         * xen_livepatch_trace_dispatcher(ip, parent_ip)
>>> +         *
>>> +         * ip: Address of the traced function.
>>> +         * parent_ip: Address where the traced function was called.
>>> +         */
>>> +        movq    8(%rbp), %rdi
>>> +        subq    $5, %rdi
>>> +        movq    16(%rbp), %rsi
>>> +        call    xen_livepatch_trace_dispatcher
>>> +
>>> +        /* Restore the saved state. */
>>> +        popq    %r11
>>> +        popq    %r10
>>> +        popq    %r9
>>> +        popq    %r8
>>> +        popq    %rdi
>>> +        popq    %rsi
>>> +        popq    %rdx
>>> +        popq    %rcx
>>> +        popq    %rax
>>> +        popfq
>>> +        popq    %rbp
>>> +        ret
>>> +END(xen_livepatch_trace_caller)
>> 
>> Just in case there's a problem doing this all in C...
>> 
>> No need for pushf or popf at all.  Flags are undefined at function
>> boundaries.
>> 
>> Please drop the q suffixes; they're all unnecessary here.
>> 
>> The ret needs to be RET for speculative mitigations.  (It's emitted as
>> JMP which will be turned back into a RET on safe system.)
>
>Just for completeness: "will" as in "will eventually"; see my still
>pending "x86: re-inline RET used in assembly code" (with me doing C side
>work still pending feedback for that initial, smaller change).

Understood. Thank you for the input.
I'll use RET in case the assembly trampoline remains.

Sincerely,
Ryo Takakura


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 06:25:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 06:25:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1468843.1678122 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7xN-000818-NO; Tue, 03 Nov 2026 06:25:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1468843.1678122; Tue, 03 Nov 2026 06:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7xN-000811-Kp; Tue, 03 Nov 2026 06:25:17 +0000
Received: by outflank-mailman (input) for mailman id 1468843;
 Mon, 02 Nov 2026 20:53:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <aahringo@redhat.com>) id 1xNz1p-0000pv-Gs
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 20:53:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xNz1n-000XNK-It
 for xen-devel@lists.xenproject.org; Mon, 02 Nov 2026 21:53:15 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <aahringo@redhat.com>)
 id 6ae8f81c-2eae-0a2a0a5409dd-0a2a4507d510-36
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 21:53:15 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <aahringo@redhat.com>)
 id 6ae8f839-b4ea-0a2a45070019-aa0a817c8f0f-3
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 21:53:14 +0100
Received: from mail-lj1-f200.google.com (mail-lj1-f200.google.com
 [209.85.208.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-379-8NB42GHBN1-vk2R99zK5rA-1; Mon, 02 Nov 2026 15:53:09 -0500
Received: by mail-lj1-f200.google.com with SMTP id
 38308e7fff4ca-3ab2f8ce13dso225991fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 12:53:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793652793;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=117yBiLwKENKL+3PiWG/U5OMCVmGd5cgD5S+cpkVimE=;
	b=X7LYFy6bDlsCDbcGpVtVvYcBRa0qrovCcHcKf2gPPrbXsIZxhhYFBkhdbxuYkbIMENoYpR
	njFKbCoVq0f5/nLmllDj2VRY0iTT/x7l3NPBQBgwXJ/4ZZ4ufaeUhjhAVqo0SOu3ULmlkC
	dS885AtwgLLxTJxxf6djT/v5pcSMfkc=
X-MC-Unique: 8NB42GHBN1-vk2R99zK5rA-1
X-Mimecast-MFC-AGG-ID: 8NB42GHBN1-vk2R99zK5rA_1793652788
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793652788; x=1794257588;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=117yBiLwKENKL+3PiWG/U5OMCVmGd5cgD5S+cpkVimE=;
        b=hFCEYo/ZZwlxQn7F0fd6S0qFmdZ/dYh3T656+cNIJORNNIVxSjunSg1Cr/nkpORMCj
         ZYlf6QUirsvlvJTbCVubeBO6ff7F0jSpNB8ncFBiQoaxWRBOoFGm6V6USt8eIx1gJ9O3
         yxHC0wCufws+RiVvZ3ByYhZSXeET3baW+OsAX27qXyHHnciM0zT1xFhiB9XHH390xZWd
         4zqc40BDRfVMlUgken5F8xK2I24t/he9L+OlfqiFs/+cnYaS8sGyEXIFSU+7/kSL/bdg
         yCEj7QEfKhTUtSpYDfZJtz2T8QyLXgYOZQf/ddX2zzpxFDorfz99fwlEmjK4dmDYTap1
         OyKQ==
X-Forwarded-Encrypted: i=1; AKwUvBzj7Y4EaMWrhVHl1XtW8GXUzR3MSlrQsYb/lhfwOg/m14VHzUuZfmj98WZ/MAUfpX2tTiHH1cuphuo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/m6m+IJvt2e7S79etzXjIAFVKJrbRTMkvY8YE4mYczAlL6LFTB
	ROrfv+/PISgMcS+NUJJDKbJ0UGCqXidJXkUNBfVjAKCkRNrXciGZ1R2/bLutD0qBnP4jB3Mx7JX
	CwsWUrNFbGUfzPYX2IjKewotFPZs1t/TjJyQ+xazZKrQvzrHSbc3IsIKGUXvFtiFa5jmFhNDiGR
	F0z/7I4fdgdry0585nT3aV3m13UJmT4lsHLQuMXCfhIsI=
X-Gm-Gg: AYBFou2ZaoO5dtQBz34aG6eXOh6T5v5M03omMH0GSUWQI+l4KFKABiR3i7BxlFudm7o
	UFezCg+YRtw+m8QzaOlpEDf02DMMJnvggmBLTIRYqnE2/r8gC1ZPR11wp2OymtwI71gDRBx271i
	DsedrIoYkfL3nQcokhIxw9ong6SGm21OggNz5URa9BqkTBGCTTSL7GjUQ7
X-Received: by 2002:a05:651c:a14e:b0:3ac:4b79:573b with SMTP id 38308e7fff4ca-3acb7aa83b1mr20499111fa.13.1793652788252;
        Mon, 02 Nov 2026 12:53:08 -0800 (PST)
X-Received: by 2002:a05:651c:a14e:b0:3ac:4b79:573b with SMTP id
 38308e7fff4ca-3acb7aa83b1mr20499011fa.13.1793652787872; Mon, 02 Nov 2026
 12:53:07 -0800 (PST)
MIME-Version: 1.0
References: <20261027223847.652884-1-irogers@google.com> <20261027223847.652884-6-irogers@google.com>
In-Reply-To: <20261027223847.652884-6-irogers@google.com>
From: Alexander Aring <aahringo@redhat.com>
Date: Mon, 2 Nov 2026 15:52:55 -0500
X-Gm-Features: AclHuK8pGzNf4aGPekLa6NQcs521xOugw8djA3E8ZMCjZ7yn89XzG5j_wIaQNFk
Message-ID: <CAK-6q+j-MS_5St04YFU11LG_Cjf1jOuS3q33qk_iK=7TE-iuBg@mail.gmail.com>
Subject: Re: [PATCH v2 5/9] dlm: Free dlm_ls in kobject release callback
To: Ian Rogers <irogers@google.com>
Cc: Kees Cook <kees@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Miguel Ojeda <ojeda@kernel.org>, "Rafael J . Wysocki" <rafael@kernel.org>, Danilo Krummrich <dakr@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, 
	Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Zhihao Cheng <chengzhihao1@huawei.com>, Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, David Teigland <teigland@redhat.com>, 
	Greg Kroah-Hartman <gregkh@suse.de>
X-Mimecast-Spam-Score: 0
X-Mimecast-MFC-PROC-ID: J9If4lk6C_JOw9JaxHxXO9NY7HqT0IAExlgzYiqRmUs_1793652788
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1793652795-A54C3AE4-476E85FE/35/111497
X-purgate-type: clean
X-purgate-size: 1251

Hi,

On Tue, Oct 27, 2026 at 6:39=E2=80=AFPM Ian Rogers <irogers@google.com> wro=
te:
>
> struct dlm_ls embeds a struct kobject (ls_kobj), but dlm_ktype lacked a
> .release callback and dlm freed the lockspace structure directly via
> kfree(ls). With CONFIG_DEBUG_KOBJECT_RELEASE=3Dy, freeing ls before the
> delayed kobject release runs causes a use-after-free, and unloading the
> module while the delayed release is pending results in an instruction
> page fault.
>
> Add a completion ls_kobj_done and dlm_ls_release() to complete it when
> the last kobject reference is dropped, waiting for it in free_lockspace()
> before kfree(ls) and in the new_lockspace() error path before module_put(=
).
> Also delete the kobject via kobject_del() before stopping dlm_recoverd
> to close the window where concurrent sysfs writes could wake the stopped
> recovery task.
>
> Fixes: 3514faca19a6 ("kobject: remove struct kobj_type from struct kset")
> Signed-off-by: Ian Rogers <irogers@google.com>

A somewhat "big change" for just a debug functionality. Althrough I
agree we shout call "kobject_del()" early to avoid additional sysfs
changes during removal.

Acked-by: Alexander Aring <aahringo@redhat.com>

Thanks.

- Alex



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 06:27:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 06:27:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469241.1678132 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7zO-0000Mx-6u; Tue, 03 Nov 2026 06:27:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469241.1678132; Tue, 03 Nov 2026 06:27:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO7zO-0000Mq-3q; Tue, 03 Nov 2026 06:27:22 +0000
Received: by outflank-mailman (input) for mailman id 1469241;
 Tue, 03 Nov 2026 06:27:21 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xO7zN-0000LS-6i
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 06:27:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO7zM-005tQb-C3
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 07:27:20 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6ae97ebc-2eae-0a2a0a5409dd-0a2a4503bfa2-32
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:27:20 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6ae97ec6-fae8-0a2a45030019-d155802ccdcc-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:27:19 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a20bdaf39cso42163765e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 02 Nov 2026 22:27:19 -0800 (PST)
Received: from ?IPV6:2a00:12d0:af5d:ad01:5d3f:14e6:9bcb:5112?
 (2a00-12d0-af5d-ad01-5d3f-14e6-9bcb-5112.ip.tng.de.
 [2a00:12d0:af5d:ad01:5d3f:14e6:9bcb:5112])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2aaa4b91esm31435585e9.11.2026.11.02.22.27.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 02 Nov 2026 22:27:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793687238; x=1794292038; darn=lists.xenproject.org;
        h=content-type:in-reply-to:autocrypt:from:content-language:references
         :cc:to:subject:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=qm7RBlZCRUghi/5BcbUocOcltZQXhCKJ5nr6Yg83jes=;
        b=OeKYgg5/Tnn+z4/nwxlTvF8nQP/KszDtlGaTuLOXJd8lj7Ak6afAKsrp42knXrmuAb
         qTmNfYZQc6ojuF/gkr4YXL+tpTyw21Q63FCgI9kyIv01wN4/BpC65ojQYtsYRQ08iDsS
         +v//IjUdbDmL9a5TCP0J0nF+vhGORZwEM3wYFO52lq8h/fOPgTlFzdKoCIdwN1v3nBgB
         V2I9I9fdwafLy/HoskQ/UTs0yqZfzn6Lkc+YWGjQDZ/cX/bEDyfO/wcT4nunyKToZ0Uq
         Ek1SELR+Vs31qsQyVdl7QA3mUH1P+QUZpeudGm3ST/yETmn+e/0+CAa27VnjTVxbPG89
         AkOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793687238; x=1794292038;
        h=content-type:in-reply-to:autocrypt:from:content-language:references
         :cc:to:subject:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=qm7RBlZCRUghi/5BcbUocOcltZQXhCKJ5nr6Yg83jes=;
        b=IdSaDI8aZOLcqulflkxYSgwCb2Jrw2jopMyAoD8BYIfJlcOGsnYf31o94g3Qymaw9C
         wrqS4aqX2hPJxbL7RR8OXY2BYHxkRncoKJc4w8vTZqnqE3VFMeBR1CTrQPlrSkBbmMdO
         7zUGGM+ESf6b9We2tQdkiws30k2cnXi/d664O0atXk9AZ3DXg+bTsGLosZyih7bdCskH
         MHwAtq7lLKlANAQxoZdV2nwnTN6SRE5wwrUJHsOGdY1qqcrbZW2n8H2SeBCiF4FXFnMg
         1c8+EzC0GYx2K5wRHVr8pU1w26k/MjRt1Z3UvKDitUhgErqq/egXhPNiX3NAcVI4hJnZ
         5l1w==
X-Forwarded-Encrypted: i=1; AKwUvBzRpsCoAp407jeJsgsvkOylYMB89wzm9tskMjC9PbwkFBkMKUOjsOvAjuIKxjUCo4EfVOf8fL6dTRk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+aXve+aOGG8Do0N522KLjj1dPlu76YduWrrbGWBwgnCQ/yVfJa
	XQadXGWLCQ/sucfqxpPX3lLwpbCp/oKcPMGqIw+HU7+CtDS0Ft5H++i/WmqM9DmRQ4o=
X-Gm-Gg: AYBFou3a3NdJ8vaZhyW5GqSZSANtOa0xgVoiwzJQwYGZxSFi9bm/XPgvfvMsWEt17fj
	bKPBnLxwLO2ZFhk14Ah+wx0mo68RldVuqLEzuJo7LQm8HtNcpvmQxhD5XXIG9jl6zGOEraUMpZl
	Ht6DI+UXh/uUuYzVHq/uEIl7RR0jXLQt+ded5uzKvZqmMwy7sjKPOLpEb9sUx/JFcj+KegxyrZh
	Yp+yhh7lYT/2mj3cHUeAINjHRTJJ5yOzBIprN02PKeSiFPZ273TpK18s0gmd3wCAxU58kFnpqS6
	wadrEJK9itkDErn0X5MwPIpRud/3a2pJf0nq85t+N4Y1IDtZiEQzmzm7o34vkTm6/2+FRTUjZq7
	2Kp9xpkQtXtX3oyUAlEMck4zAAON5uoTOQscXwuEd5kF1bTlg/hvHzDqHI3hM7CW9AEE6pNA22+
	Eh/vI980eUFSavNafG1CuVTp1wa7VUjBLlH8TjcjXY96RW05GO+UjSNnDc1Eo6JMnIaScA+3BYW
	kxVgkEu0uYxlUSM6YNyhJLVRodXBzjytedM9KY7Ek/fyZ1u3hzcxyWBf20PqDRkTXcOwmg/Dx2G
	TsqthGuloeSoym7Hao13xIBMVJdY8OxFAipZJlOPLNVbAKxFNwe5UJ4TA/IGyhkfX/Z2j6VPRH8
	aCegeYrDGjOfY7LJWzlUFVu1zjpncrff8AllIGNXp45g5wf4K7XplqA==
X-Received: by 2002:a05:600c:8116:b0:4a1:ddaa:571e with SMTP id 5b1f17b1804b1-4ac182dc29cmr262901645e9.15.1793687238545;
        Mon, 02 Nov 2026 22:27:18 -0800 (PST)
Message-ID: <f1e18482-775d-4e1e-a0ac-434117ccdbe5@suse.com>
Date: Tue, 3 Nov 2026 07:27:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH net-next v3 13/15] xen-netfront: don't BUG() when
 skb_copy_bits() fails in bounce_skb()
To: Josef Bacik <josef@toxicpanda.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Simon Horman <horms@kernel.org>, Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
 Fernando Fernandez Mancera <fmancera@suse.de>,
 Mina Almasry <almasrymina@google.com>,
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org,
 xen-devel@lists.xenproject.org
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-13-54ad0ab57614@toxicpanda.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-13-54ad0ab57614@toxicpanda.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------UeMRSVPXLO3rcUL0x2eyyOgz"
X-purgate-ID: tlsNG-33051d/1793687239-6F6C64E9-B321FC3A/35/110847
X-purgate-type: clean
X-purgate-size: 7228

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------UeMRSVPXLO3rcUL0x2eyyOgz
Content-Type: multipart/mixed; boundary="------------Z9TguYYJlyfG8Pe4RfnPxIJQ";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Josef Bacik <josef@toxicpanda.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Simon Horman <horms@kernel.org>, Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
 Fernando Fernandez Mancera <fmancera@suse.de>,
 Mina Almasry <almasrymina@google.com>,
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org,
 xen-devel@lists.xenproject.org
Message-ID: <f1e18482-775d-4e1e-a0ac-434117ccdbe5@suse.com>
Subject: Re: [PATCH net-next v3 13/15] xen-netfront: don't BUG() when
 skb_copy_bits() fails in bounce_skb()
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-13-54ad0ab57614@toxicpanda.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-13-54ad0ab57614@toxicpanda.com>

--------------Z9TguYYJlyfG8Pe4RfnPxIJQ
Content-Type: multipart/mixed; boundary="------------JK0D029qSPZ1FSajkanwEGAL"

--------------JK0D029qSPZ1FSajkanwEGAL
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDMuMTEuMjYgMDM6MjgsIEpvc2VmIEJhY2lrIHdyb3RlOg0KPiBib3VuY2Vfc2tiKCkg
aXMgYW4gb3Blbi1jb2RlZCBza2JfY29weSgpIGludG8gYSBwYWdlLWFsaWduZWQgYnVmZmVy
LCBhbmQNCj4gaXQgaGFzIHRoZSBzYW1lIEJVR19PTihza2JfY29weV9iaXRzKCkpLiAgc2ti
X2NvcHlfYml0cygpIGZhaWxzIHdoZW4gdGhlDQo+IHNrYidzIGxlbmd0aHMgZG9uJ3QgYWRk
IHVwIG9yIGl0cyBmcmFncyBhcmUgdW5yZWFkYWJsZS4NCj4gDQo+IGJvdW5jZV9za2IoKSBh
bHJlYWR5IGZyZWVzIHRoZSBuZXcgc2tiIGFuZCByZXR1cm5zIE5VTEwgd2hlbiB0aGUNCj4g
YWxsb2NhdGlvbiBjb21lcyBiYWNrIG1pc2FsaWduZWQsIGFuZCB4ZW5uZXRfc3RhcnRfeG1p
dCgpIGRyb3BzIHRoZQ0KPiBwYWNrZXQgaW4gdGhhdCBjYXNlLiAgVGFrZSB0aGUgc2FtZSBw
YXRoLCB3aXRoIGENCj4gREVCVUdfTkVUX1dBUk5fT05fT05DRSgpIGZvciBkZWJ1ZyBrZXJu
ZWxzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSm9zZWYgQmFjaWsgPGpvc2VmQHRveGljcGFu
ZGEuY29tPg0KDQpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
Pg0KDQoNCkp1ZXJnZW4NCg==
--------------JK0D029qSPZ1FSajkanwEGAL
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjri
oyspZKOBycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2
kaV2KL9650I1SJvedYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i
1TXkH09XSSI8mEQ/ouNcMvIJNwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/B
BLUVbDa4+gmzDC9ezlZkTZG2t14zWPvxXP3FAp2pkW0xqG7/377qptDmrk42GlSK
N4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEBAAHNHEp1ZXJnZW4gR3Jvc3Mg
PGpnQHBmdXBmLm5ldD7CwHkEEwECACMFAlOMcBYCGwMHCwkIBwMCAQYVCAIJCgsE
FgIDAQIeAQIXgAAKCRCw3p3WKL8TL0KdB/93FcIZ3GCNwFU0u3EjNbNjmXBKDY4F
UGNQH2lvWAUy+dnyThpwdtF/jQ6j9RwE8VP0+NXcYpGJDWlNb9/JmYqLiX2Q3Tye
vpB0CA3dbBQp0OW0fgCetToGIQrg0MbD1C/sEOv8Mr4NAfbauXjZlvTj30H2jO0u
+6WGM6nHwbh2l5O8ZiHkH32iaSTfN7Eu5RnNVUJbvoPHZ8SlM4KWm8rG+lIkGurq
qu5gu8q8ZMKdsdGC4bBxdQKDKHEFExLJK/nRPFmAuGlId1E3fe10v5QL+qHI3EIP
tyfE7i9Hz6rVwi7lWKgh7pe0ZvatAudZ+JNIlBKptb64FaiIOAWDCx1SzR9KdWVy
Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+wsB5BBMBAgAjBQJTjHCvAhsDBwsJ
CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/Ey/HmQf/RtI7kv5A2PS4
RF7HoZhPVPogNVbC4YA6lW7DrWf0teC0RR3MzXfy6pJ+7KLgkqMlrAbN/8Dvjoz7
8X+5vhH/rDLa9BuZQlhFmvcGtCF8eR0T1v0nC/nuAFVGy+67q2DH8As3KPu0344T
BDpAvr2uYM4tSqxK4DURx5INz4ZZ0WNFHcqsfvlGJALDeE0LhITTd9jLzdDad1pQ
SToCnLl6SBJZjDOX9QQcyUigZFtCXFst4dlsvddrxyqT1f17+2cFSdu7+ynLmXBK
7abQ3rwJY8SbRO2iRulogc5vr/RLMMlscDAiDkaFQWLoqHHOdfO9rURssHNN8WkM
nQfvUewRz80hSnVlcmdlbiBHcm9zcyA8amdyb3NzQG5vdmVsbC5jb20+wsB5BBMB
AgAjBQJTjHDXAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/
Ey8PUQf/ehmgCI9jB9hlgexLvgOtf7PJnFOXgMLdBQgBlVPO3/D9R8LtF9DBAFPN
hlrsfIG/SqICoRCqUcJ96Pn3P7UUinFG/I0ECGF4EvTE1jnDkfJZr6jrbjgyoZHi
w/4BNwSTL9rWASyLgqlA8u1mf+c2yUwcGhgkRAd1gOwungxcwzwqgljf0N51N5Jf
VRHRtyfwq/ge+YEkDGcTU6Y0sPOuj4Dyfm8fJzdfHNQsWq3PnczLVELStJNdapwP
OoE+lotufe3AM2vAEYJ9rTz3Cki4JFUsgLkHFqGZarrPGi1eyQcXeluldO3m91NK
/1xMI3/+8jbO0tsn1tqSEUGIJi7ox80eSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1
c2UuZGU+wsB5BBMBAgAjBQJTjHDrAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
F4AACgkQsN6d1ii/Ey+LhQf9GL45eU5vOowA2u5N3g3OZUEBmDHVVbqMtzwlmNC4
k9Kx39r5s2vcFl4tXqW7g9/ViXYuiDXb0RfUpZiIUW89siKrkzmQ5dM7wRqzgJpJ
wK8Bn2MIxAKArekWpiCKvBOB/Cc+3EXE78XdlxLyOi/NrmSGRIov0karw2RzMNOu
5D+jLRZQd1Sv27AR+IP3I8U4aqnhLpwhK7MEy9oCILlgZ1QZe49kpcumcZKORmzB
TNh30FVKK1EvmV2xAKDoaEOgQB4iFQLhJCdP1I5aSgM5IVFdn7v5YgEYuJYx37Io
N1EblHI//x/e2AaIHpzK5h88NEawQsaNRpNSrcfbFmAg987ATQRTjHAWAQgAyzH6
AOODMBjgfWE9VeCgsrwH3exNAU32gLq2xvjpWnHIs98ndPUDpnoxWQugJ6MpMncr
0xSwFmHEgnSEjK/PAjppgmyc57BwKII3sV4on+gDVFJR6Y8ZRwgnBC5mVM6JjQ5x
Dk8WRXljExRfUX9pNhdE5eBOZJrDRoLUmmjDtKzWaDhIg/+1Hzz93X4fCQkNVbVF
LELU9bMaLPBG/x5q4iYZ2k2ex6d47YE1ZFdMm6YBYMOljGkZKwYde5ldM9mo45mm
we0icXKLkpEdIXKTZeKDO+Hdv1aqFuAcccTg9RXDQjmwhC3yEmrmcfl0+rPghO0I
v3OOImwTEe4co3c1mwARAQABwsBfBBgBAgAJBQJTjHAWAhsMAAoJELDendYovxMv
Q/gH/1ha96vm4P/L+bQpJwrZ/dneZcmEwTbe8YFsw2V/Buv6Z4Mysln3nQK5ZadD
534CF7TDVft7fC4tU4PONxF5D+/tvgkPfDAfF77zy2AH1vJzQ1fOU8lYFpZXTXIH
b+559UqvIB8AdgR3SAJGHHt4RKA0F7f5ipYBBrC6cyXJyyoprT10EMvU8VGiwXvT
yJz3fjoYsdFzpWPlJEBRMedCot60g5dmbdrZ5DWClAr0yau47zpWj3enf1tLWaqc
suylWsviuGjKGw7KHQd3bxALOknAp4dN3QwBYCKuZ7AddY9yjynVaD5X7nF9nO5B
jR/i1DG86lem3iBDXzXsZDn8R3/CwO0EGAEIACAWIQSFEmdy6PYElKXQl/ew3p3W
KL8TLwUCWt3w0AIbAgCBCRCw3p3WKL8TL3YgBBkWCAAdFiEEUy2wekH2OPMeOLge
gFxhu0/YY74FAlrd8NAACgkQgFxhu0/YY75NiwD/fQf/RXpyv9ZX4n8UJrKDq422
bcwkujisT6jix2mOOwYBAKiip9+mAD6W5NPXdhk1XraECcIspcf2ff5kCAlG0DIN
aTUH/RIwNWzXDG58yQoLdD/UPcFgi8GWtNUp0Fhc/GeBxGipXYnvuWxwS+Qs1Qay
7/Nbal/v4/eZZaWs8wl2VtrHTS96/IF6q2o0qMey0dq2AxnZbQIULiEndgR625EF
RFg+IbO4ldSkB3trsF2ypYLij4ZObm2casLIP7iB8NKmQ5PndL8Y07TtiQ+Sb/wn
g4GgV+BJoKdDWLPCAlCMilwbZ88Ijb+HF/aipc9hsqvW/hnXC2GajJSAY3Qs9Mib
4Hm91jzbAjmp7243pQ4bJMfYHemFFBRaoLC7ayqQjcsttN2ufINlqLFPZPR/i3IX
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------JK0D029qSPZ1FSajkanwEGAL--

--------------Z9TguYYJlyfG8Pe4RfnPxIJQ--

--------------UeMRSVPXLO3rcUL0x2eyyOgz
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrpfsUFAwAAAAAACgkQsN6d1ii/Ey9G
Hwf9FJEDlIAKlrN0LReV4G5SBlmTdNQmOcImldWQvj7jxPTvL2bSDelDyahNVKGQ9VEQrYH/eCuR
LPbz/2R1sNpgzLTWs6glst3C0lUEAgHkPYa0PkZ4PKKhsHaB2WJ0CmqCl8XNcoWtnJA7TQo7JZbG
gnKud05ZQ3jGVjaiMtmhlUqkVsAspm/pEexy03JqEnYoKYKMw4JW99Oxdd3efl3VoCp4O3GKIJoS
jMdKiK4VnGtgnYp2i/JwtNUhB6MuDhssXb7+JUcrtvmK+pnWtqrxFb0ole11CSuYLoG9OsUi4X/S
iDzPWulUKXJWD6zpkxiHoXEI2voR3tagcqqd7EcJ7w==
=kqT7
-----END PGP SIGNATURE-----

--------------UeMRSVPXLO3rcUL0x2eyyOgz--


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 07:14:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 07:14:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469267.1678141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO8iw-0000VU-IM; Tue, 03 Nov 2026 07:14:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469267.1678141; Tue, 03 Nov 2026 07:14:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO8iw-0000VN-ER; Tue, 03 Nov 2026 07:14:26 +0000
Received: by outflank-mailman (input) for mailman id 1469267;
 Tue, 03 Nov 2026 07:14:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xO8iu-0000VH-HB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 07:14:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO8it-002EIL-QY
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 08:14:23 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae989c9-2eae-0a2a0a5409dd-0a2a450c89be-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 08:14:23 +0100
Received: from [40.107.44.132]
 (helo=SEYPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6ae989cb-f479-0a2a450c0019-286b2c8491fa-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 08:14:21 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TYZPR06MB6618.apcprd06.prod.outlook.com (2603:1096:400:462::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 07:14:15 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 07:14:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=xtALvLMYw8/9yvbzCPp6jgyGFvvDfma2govi/kc8Tcpp7+hTxWXZHZR7NqwAWnNZKAHzrr72e/WEJ2oKr2DGXk31x707tGL6s+z9X4uCYlAY7Sw9XFs+pHXHJTN3V+u/vozsU8mLCm7BX0LMp3bcCgcBO2g++IkIbp2e5MSQBsxlJ/DGAlCTB+lj8jaCLsS6wL7vxFb4LRVPXTw6rBYoKkYO1zMPNHZ6BapTEsCILSxkHCESOJGMsP7AaWTVT3f4t6GkCdu+E73hG1AZJKsUGdp23bRl3srQzstcb6UG+hTYdmD/qNrE9yKtJNnqYo0TXpRTvZDHI630QWfzyXaWew==
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=ITg0zpWtqw67dO/HL30blrN/GXLvdv9ic/n/2a8we2M=;
 b=ewHObis4WlPNhOPRxHG0bWwwHW9lyDWtgrQcBnRWI04h6jOMQAAhA7nNRudoyscjBnw7+Bzv/2N+cpZJ5nmrGJNAWhRU9UnSj7TBwzUV991waDBcEsiEeT4a4d90dCNMIRctWSYKHmpbCNHGO5t7A4k8U6hwA/ecqVeJhD6cEIRgdT0QAsoFXav2RcXPHp90YUlse10nroTi3YEYDIrCqe5WEgwck02D7HILKF2gJML9dExt5m9ZMig5hpXNWOlHVkBBdpd3az3jcYFXtnQh2uf9IOydZOU4gFrGU1jLrKpwSO+mPT0ki+zUQAIZ+HvulHPb4yorgTvs8S1O12xRpQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ITg0zpWtqw67dO/HL30blrN/GXLvdv9ic/n/2a8we2M=;
 b=kXLwPQg9z0SqER0IV1Ll+jpXe/fmL+txJ3FVuodpKLOaXlaZZLBdQ/F35q7mTXLp3gVWLlz7QQDgM+ZUCe0fVql22GCm4Go2/7pDGAmG1gzsjhFeBwFnl0PE9pInycoZiwu9gI5xVi8/SK9/fQU7kbSCuGAVOpWoyc+QszVTGMN44czKwDsIHQNx1EAeXQodL4/mPG7mU+zLMH7bvb91CWVvCff4n3jDPPL449nNKd3JU+BikfCndANIZi8hVkaxy6Tsl2BLVXCVnOB6XanFhNFZav/ILh5A/Tg2z8LaFNju6bLzYfYK+2cZXJPsZH/bpz74fImZoB0LPl8VBpK3Mw==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "junjie.cao@intel.com"
	<junjie.cao@intel.com>, "junjie.cao@linux.dev" <junjie.cao@linux.dev>,
	"clg@kaod.org" <clg@kaod.org>, Pierrick Bouvier
	<pierrick.bouvier@oss.qualcomm.com>, Peter Maydell
	<peter.maydell@linaro.org>, Kane Chen <kane_chen@aspeedtech.com>,
	=?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= <philmd@oss.qualcomm.com>,
	Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, Zhao Liu
	<zhao1.liu@intel.com>, Richard Henderson <richard.henderson@linaro.org>,
	Helge Deller <deller@gmx.de>, Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>, "open list:All patches CC here"
	<qemu-devel@nongnu.org>, "open list:ASPEED BMCs" <qemu-arm@nongnu.org>, "open
 list:X86 Xen CPUs" <xen-devel@lists.xenproject.org>, Troy Lee
	<troy_lee@aspeedtech.com>
Subject: RE: [PATCH v8 13/18] hw/usb/redirect-server: Announce the exported
 device
Thread-Topic: [PATCH v8 13/18] hw/usb/redirect-server: Announce the exported
 device
Thread-Index: AQHdaqupvmzo6sFN+0K1iqt887RtJLca0acAgAEdGdA=
Date: Tue, 3 Nov 2026 07:14:13 +0000
Message-ID:
 <SEZPR06MB7362D2A0D7F08E9D1575CA80FC692@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-14-jamin_lin@aspeedtech.com>
 <179362845017.3960472.17221122285900334594.b4-review@b4>
In-Reply-To: <179362845017.3960472.17221122285900334594.b4-review@b4>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TYZPR06MB6618:EE_
x-ms-office365-filtering-correlation-id: a67f4baf-fac6-4cb4-acaa-08df397a107d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|38070700021|261021123027099003|4143699003|56012099006|261009223027099003|261028144727099003|261022075727099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|261102123227099003|6133799003|3023799007|261102130727099003;
x-microsoft-antispam-message-info:
 F+xXHUn7bcwQgnOK3WnWsB7nZsSwIg7LWv698cU+uD+qTBmm08Df3Sv+Z49pALP5689QRSG0iQHHICha5ltP3/YqfpH5xEBEhy/ZjH/6CEqLWRAQiGQv2HOaCJNqpPrU7yDRiOrohvzNRMjUwDwq5TZfn1qeURCU0Nt/tKsJ2Fp+wXWp+xqqHWgfsGrEh0f09AA4lm23073Ze41YanxKhGxbRiQaO2nQw1TAQfmfn18rpAV178zBea33xBVJoZ2a+nXUvLVgQTDMrAqvbQeNOIPnDOOmKgralssAmyZm4Elbl6mh9t8ayddt5ob5yTFPg4kttozEsI2tEaZsrLlcZ+ebKmqHXgM1yBHAcTtc1vYZWqUDQZ2IB9ieirKTl8Nz6E1I2Y4p90oDViRNZJCdOlDiqsizx17bVLCchna1svEK4adg/XJ7kMO4WFG53CaGArq4U4w3MKcnnI9FgHjzLqexF93WhkLnJ35lvmOxV01tchZKw8k+NrysXVQmPaPG8Nt0/K1slZO/octJRHCHD32/4VRaKuvA6NGAot0JZcBi72/qbZtiB2l9TAnX5uEQztws1iaVifsvHisvZ9u4G82FjI2/1fkTJ2SVzHWNp2muKXOikYjHq03JWwFdp8ppvWS0aCjyAJLSuENxOW+b3Vv+E2l8xUnoNsiDW9HUmoqlCeZc+T+NDBhwIOoMd4QQX5hZZH8VYnidUtNRaF78EamtNGd0SgfEe1+sx7GqN4A=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(38070700021)(261021123027099003)(4143699003)(56012099006)(261009223027099003)(261028144727099003)(261022075727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(261102123227099003)(6133799003)(3023799007)(261102130727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?TW0yczhpRUpNMjdEdFRxc3A5RGQ5VkhVMHJSZXJ0RHgycHdKSm53dG9QWUVT?=
 =?utf-8?B?Z1hWZDZCdE5GZlBFZzQ2ZVlLUFRZdkFwUUZrekNBajhvcmNtNDE2TkFrS0M4?=
 =?utf-8?B?aGVlbDZGWS9WMEdoaDBXMUhzNjE4b25Pd29EQ1NNWXJGZlhac1Noc3o5YWtS?=
 =?utf-8?B?WVNOWWNzdzZqNWFEMnduckVleHRKVDlnL291Y1FqUEtnMW95WmdLVE0yNk1T?=
 =?utf-8?B?VDN4WUVqakZFbHBRT2dQaElacVBsRnlRRzVSUnVPN1B6SnRxQXA0eThvbHVj?=
 =?utf-8?B?d2VuTVNic01zZ2xUaWUzbFFnV3pSMkxzYW5RV1Zpa215WXAvTEdnVU15OGp6?=
 =?utf-8?B?U0VwdUMrcjJKT1pKOGdtQ2Rla3NUQXUzYUx2djd6MmxFdEUxWEUvSGFvK0pV?=
 =?utf-8?B?VlpwSUxocDE4K094UWZsVUdmV0t3NGZoM2xMYzI4N3NTQ09HYUIxNFRaOEJL?=
 =?utf-8?B?SVVRbWNzT1hFUnFDRi9pVDdCWjU4RitBZXdwYnpmMVlzTU5tYUdsZXV3T0Fz?=
 =?utf-8?B?RXNMS0pNQnpvV09vVmljZHllZUZjQ05oRUpNMlhXa05WUkpZTHJhTU92clpr?=
 =?utf-8?B?MkZSeDhTcDNjYjNxNGNtb0Y5bFR3TDNqa0tYSUQxZG9MSDZwdVF3UjZjSHIx?=
 =?utf-8?B?NDkxUGVZR1ZITHVvMjh1SXBKcEJpWGd6RktlT0dPQllIT3N6ZC8xeE5EVnN0?=
 =?utf-8?B?NjVCUHdjd1FVMm1jVlZ5MzMxOEswTWw1b1hmMkFISjBjYmJYL2h1VnVvZEJt?=
 =?utf-8?B?Yi9PdWRXRzI4RzRXOVNsR2JYRERXV2UrUDByZlhMNlhmZi8rU0U3K2YrRW4y?=
 =?utf-8?B?azlOQUR4YkJjU2t0TVZCV0E5RG1haDlDbkRvNlc1ckhsY1d4YWZOWFIrSkd6?=
 =?utf-8?B?WU1oNWhTOUpTL0doUitkL0hGUUcvN0NtdmlMbjVqbmxORlVBblBrd2p6UWRx?=
 =?utf-8?B?UUV0Y05ObndhY3lmL3hHZkgwa2dXck02NHdqRGlENFU2SEFYVHFDSjFmQzVS?=
 =?utf-8?B?bmQ5VGtZcGhZM1JNaWtkSkZ4MDhELzQ2YWNhbmZXeWo4eGIyZTZYTWpJMGJS?=
 =?utf-8?B?OWtyTkZHQjhOS05aOGYvbTA1Q0s1cDlETVR0THg0dG5IVmdSMmdiQUllb3pw?=
 =?utf-8?B?U2pmNjFqVnN3NjN3RHdidXZvYm9nSDB2Rkltdzdna1lNd0pCR2YzWXhJVmZv?=
 =?utf-8?B?WGRjdU1vbU13cXBHOHpsZGZpYUpLT3g2RG5aSHNhaERFZVcrTGNIc3FnanQv?=
 =?utf-8?B?ZFZKbC94SlBQMktQWTZCYWdYWU9MQTMzMmYzUEdtZHA2Rm8wZmlnMC9SNVI3?=
 =?utf-8?B?VUNqcGdwZHhKdFd4cVhjNHo0M2Z1YjFSWUxKaU5lUFZub09PT2FJNXlXL2ZC?=
 =?utf-8?B?dS9rOCt5U0gyclczMVhzZU1PMmNCZUF5UytzUGJMZmFkV3EwNmRSVWQvRmUr?=
 =?utf-8?B?OS9MYlJ2UVdwWVdPdFRkSFBqNGpWa2NTVTR3Y3ZLWkNqSmtwY3lMcjJiZS9v?=
 =?utf-8?B?NjhMSlY0aTYybVQxMlBTTlh3ckk2dGlSQ2hPVC9HTTNZWVFERGVXOC9IMS9o?=
 =?utf-8?B?WjJGMlV1MVlyVmRYTGdmeGdzTzBoU1FmQ25uM2F5STQ4VlB3OFZxTWRXQUxl?=
 =?utf-8?B?SjZaMGtrampZYUhHZi9GaHpIWUx1VHJUS3J1RHdsMVJyNk1FWTVkRTdnYWtR?=
 =?utf-8?B?VkxCTUt5YWRyQ2pvQWtyRWRkdTg0SjRWcVpyb3VJeVI1WVdXZE53cmpMOG5I?=
 =?utf-8?B?ZW1CT09SajhNbVc2QmpjSUg2MjVpYS9RMmZSUk1IckZMRHBqbThXNEN1UzJD?=
 =?utf-8?B?bDJWaXVKSXducDRKK3hFaE04Y25Wci9OMUdEb0lHanZHTjNreEt5VjZwckNO?=
 =?utf-8?B?cUNGcnJ4RWMyY3lVQ00yd09Xc3ZuNW1mMHZnNU12YmxLc3d3S2ZqZUFBOVcv?=
 =?utf-8?B?MkgreFFaNjMyYXgvY2J5bTUwVzhrdWhjcWhFQ08vM3FkZmRuT1RxR3RGbmQ0?=
 =?utf-8?B?VmQvUnhrYkJOWkI0R1BESmVJc0tBV0FrUy9nck1WSzQ0NTFTMUg3dWFtY3RK?=
 =?utf-8?B?S2I5Rm51NFZEbkQ5cStkWHB2THhPRnN0aVpIR3hpSFZXL3VhNmwveXY0WDhN?=
 =?utf-8?B?bVViVnREZjR5Rm9PSEVzREpwV1lYenhHbVMwMUxVRGVxL1pHY3YxdFlIL1lD?=
 =?utf-8?B?OHhWaER3WDIrTEdhSHFiZDNOTXcvMzdXR2tFNk5GNWVqMGlSYmFKSDJvdWNK?=
 =?utf-8?B?NS9SN2VQdDNwaEpKZWZISmlWWE1YaUVxRUh0OHVzcjNEQXZhMzZpeTdENTRw?=
 =?utf-8?B?eUpaQTZUejdyZlY5RWVnRlp0MllDSWFwT29xN0xyM0NpMzdTWmRKQT09?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	ZHdyqFa3ZSsweMYnzqY5roqJSiO+XN3CDuW0UoO+ulquZrO0Yi6bCkv2SSVJGIHJ9LvlpSS2c3T8umdM20pvYai8M5xGtQAWAftb36akFxPo6W5oOzDYZ1Bix5ivh+DUwBAYI10pz7In5N3WWQSKVKSFqOik/+app4KskNUFmWFlqTtGjmdKJTjCQ8pYvbWOcJBRM5bx7My5lxcxABbiOgEMqDnmPJ7msNXF96TIzK0yK82lfGvVYdQ4AyjrKKZx63W/ITOYMqpf4kjjFH6+bQDJuOSwHDJIOYf7qg57IUFqw2bR92AtloYVeC1IoBa1947Osf37j7ght047kUhsnQ==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a67f4baf-fac6-4cb4-acaa-08df397a107d
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 07:14:13.4918
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: DT3aSa73cGEwJxYBRarMzuDe+XkOdPZ4IihNWjZWd4bL4usmUVm3ZkYvWlOb/Y9QyUgs4359fm3BhFhEeRKib26OuRjomFYrAzUnI3bZRac=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR06MB6618
X-purgate-ID: tlsNG-d25034/1793690062-03AD4A5B-BDBEE599/0/0
X-purgate-type: clean
X-purgate-size: 5704

SGkgTWFyYy1BbmRyw6kgTHVyZWF1DQoNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2OCAxMy8xOF0g
aHcvdXNiL3JlZGlyZWN0LXNlcnZlcjogQW5ub3VuY2UgdGhlIGV4cG9ydGVkDQo+IGRldmljZQ0K
PiANCj4gPiBTZW5kIGRldmljZV9jb25uZWN0IHdoZW4gYSBkZXZpY2UgaXMgYXR0YWNoZWQgYW5k
IHRoZSBob3N0IGhhcyBncmVldGVkDQo+ID4gdXMsIGRldmljZV9kaXNjb25uZWN0IHdoZW4gaXQg
Z29lcyBhd2F5LCBhbmQgaGFuZGxlIHRoZSBidXMgcmVzZXQgdGhlDQo+ID4gaG9zdCBzZW5kcyBi
ZWZvcmUgZW51bWVyYXRpbmcuDQo+ID4NCj4gPiBkZXZpY2VfY29ubmVjdCBjYXJyaWVzIG5vIGlk
ZW50aXR5LiBUaGUgcGVlciBhc2tzIHRoZSBkZXZpY2UgaXRzZWxmDQo+ID4gd2l0aCBHRVRfREVT
Q1JJUFRPUiBhcyBzb29uIGFzIGl0IGVudW1lcmF0ZXMsIHNvIGFueXRoaW5nIHdlIHB1dCB0aGVy
ZQ0KPiA+IHdvdWxkIGJlIG1hZGUgdXAuIFRoZSBzcGVlZCBpcyByZWFsOiBpdCBjb21lcyBmcm9t
IHRoZSBkZXZpY2Ugb24gb3VyIHBvcnQuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKYW1pbiBM
aW4gPGphbWluX2xpbkBhc3BlZWR0ZWNoLmNvbT4NCj4gPiBNZXNzYWdlLUlEOiA8MjAyNjExMDIw
OTIyMDEuMTcyOTI0NS0xNC1qYW1pbl9saW5AYXNwZWVkdGVjaC5jb20+DQo+ID4gLS0tDQo+ID4g
IGh3L3VzYi9yZWRpcmVjdC1zZXJ2ZXIuYyB8IDE1MA0KPiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKy0NCj4gPiAgaHcvdXNiL3RyYWNlLWV2ZW50cyAgICAgIHwgICA3ICsr
DQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkN
Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9ody91c2IvcmVkaXJlY3Qtc2VydmVyLmMgYi9ody91c2Iv
cmVkaXJlY3Qtc2VydmVyLmMgaW5kZXgNCj4gPiBmNzgzNTFiZGU5MTkuLmUyMDdmNWE3ZWI1NiAx
MDA2NDQNCj4gPiAtLS0gYS9ody91c2IvcmVkaXJlY3Qtc2VydmVyLmMNCj4gPiArKysgYi9ody91
c2IvcmVkaXJlY3Qtc2VydmVyLmMNCj4gPiBAQCAtNTYsNiArNTYsNyBAQA0KPiA+ICAjaW5jbHVk
ZSAicWVtdS9tYWluLWxvb3AuaCINCj4gPiAgI2luY2x1ZGUgInFlbXUvbW9kdWxlLmgiDQo+ID4g
ICNpbmNsdWRlICJtaWdyYXRpb24vdm1zdGF0ZS5oIg0KPiA+ICsjaW5jbHVkZSAicWVtdS9jdXRp
bHMuaCINCj4gPiAgI2luY2x1ZGUgImh3L2NvcmUvc3lzYnVzLmgiDQo+ID4gICNpbmNsdWRlICJo
dy91c2IvdXNiLmgiDQo+ID4gICNpbmNsdWRlICJjaGFyZGV2L2NoYXItZmUuaCINCj4gPiBAQCAt
ODUsMTcgKzg2LDEwNSBAQCBzdHJ1Y3QgVVNCUmVkaXJTZXJ2ZXIgew0KPiA+ICAgICAgLyogdXNi
cmVkaXIgb3ZlciB0aGUgY2hhcmRldiAqLw0KPiA+ICAgICAgc3RydWN0IHVzYnJlZGlycGFyc2Vy
ICpwYXJzZXI7DQo+ID4gICAgICBRRU1VQkggKmNoYXJkZXZfY2xvc2VfYmg7DQo+ID4gKyAgICBR
RU1VQkggKmFubm91bmNlX2JoOw0KPiA+ICAgICAgY29uc3QgdWludDhfdCAqcmVhZF9idWY7DQo+
ID4gICAgICBpbnQgcmVhZF9idWZfc2l6ZTsNCj4gPiAgICAgIGJvb2wgaW5fd3JpdGU7DQo+ID4g
ICAgICBndWludCB3YXRjaDsNCj4gPiAgICAgIGJvb2wgaG9zdF9jb25uZWN0ZWQ7DQo+ID4gKyAg
ICBib29sIGRldmljZV9hbm5vdW5jZWQ7DQo+ID4gIH07DQo+ID4NCj4gPiArLyoNCj4gPiArICog
VGhlIGRldmljZSBpcyB3aGF0ZXZlciBVU0JEZXZpY2UgdGhlIHVzZXIgcGx1Z2dlZCBpbnRvIG91
ciBwb3J0DQo+ID4gK3dpdGgNCj4gPiArICogIi1kZXZpY2UgPGRldmljZT4sYnVzPTxpZD4uMCIu
IE5VTEwgdW50aWwgdGhlbi4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBVU0JEZXZpY2UgKnVzYnJl
ZGlyX3NlcnZlcl9kZXZpY2UoVVNCUmVkaXJTZXJ2ZXIgKnMpIHsNCj4gPiArICAgIHJldHVybiBz
LT5wb3J0LmRldjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogRGV2aWNlIGFubm91
bmNlbWVudA0KPiA+ICsgKi8NCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50OF90IHVzYnJlZGlyX3Nl
cnZlcl9zcGVlZChVU0JEZXZpY2UgKmRldmljZSkgew0KPiA+ICsgICAgc3dpdGNoIChkZXZpY2Ut
PnNwZWVkKSB7DQo+ID4gKyAgICBjYXNlIFVTQl9TUEVFRF9MT1c6DQo+ID4gKyAgICAgICAgcmV0
dXJuIHVzYl9yZWRpcl9zcGVlZF9sb3c7DQo+ID4gKyAgICBjYXNlIFVTQl9TUEVFRF9GVUxMOg0K
PiA+ICsgICAgICAgIHJldHVybiB1c2JfcmVkaXJfc3BlZWRfZnVsbDsNCj4gPiArICAgIGRlZmF1
bHQ6DQo+ID4gKyAgICAgICAgcmV0dXJuIHVzYl9yZWRpcl9zcGVlZF9oaWdoOw0KPiA+ICsgICAg
fQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB1c2JyZWRpcl9zZXJ2ZXJfYW5ub3Vu
Y2VfZGV2aWNlKHZvaWQgKm9wYXF1ZSkgew0KPiA+ICsgICAgVVNCUmVkaXJTZXJ2ZXIgKnMgPSBv
cGFxdWU7DQo+ID4gKyAgICBVU0JEZXZpY2UgKmRldmljZSA9IHVzYnJlZGlyX3NlcnZlcl9kZXZp
Y2Uocyk7DQo+ID4gKyAgICBzdHJ1Y3QgdXNiX3JlZGlyX2ludGVyZmFjZV9pbmZvX2hlYWRlciBp
ZmFjZV9pbmZvID0gew0KPiA+ICsgICAgICAgIC5pbnRlcmZhY2VfY291bnQgPSAwLA0KPiA+ICsg
ICAgfTsNCj4gPiArICAgIHN0cnVjdCB1c2JfcmVkaXJfZGV2aWNlX2Nvbm5lY3RfaGVhZGVyIGNv
bm4gPSB7fTsNCj4gPiArDQo+ID4gKyAgICBpZiAoIXMtPmhvc3RfY29ubmVjdGVkIHx8IHMtPmRl
dmljZV9hbm5vdW5jZWQgfHwNCj4gPiArICAgICAgICAhZGV2aWNlIHx8ICFkZXZpY2UtPmF0dGFj
aGVkKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcy0+ZGV2
aWNlX2Fubm91bmNlZCA9IHRydWU7DQo+ID4gKyAgICBjb25uLnNwZWVkID0gdXNicmVkaXJfc2Vy
dmVyX3NwZWVkKGRldmljZSk7DQo+ID4gKw0KPiA+ICsgICAgLyoNCj4gPiArICAgICAqIFRoZSBk
ZXZpY2UgaGFzIHRvIGJlIGluIERFRkFVTFQgc3RhdGUgYmVmb3JlIGl0IGNhbiBhbnN3ZXINCj4g
PiArICAgICAqIGFueXRoaW5nLCBzbyByZXNldCBpdCBoZXJlLg0KPiA+ICsgICAgICovDQo+ID4g
KyAgICB1c2JfZGV2aWNlX3Jlc2V0KGRldmljZSk7DQo+ID4gKw0KPiA+ICsgICAgLyogU2VuZCB0
aGlzIGJlZm9yZSBkZXZpY2VfY29ubmVjdC4gVGhlIHBlZXIgbmVlZHMgaXQgdG8gYWNjZXB0IHVz
LiAqLw0KPiA+ICsgICAgdXNicmVkaXJwYXJzZXJfc2VuZF9pbnRlcmZhY2VfaW5mbyhzLT5wYXJz
ZXIsICZpZmFjZV9pbmZvKTsNCj4gDQo+IFRoZSBwZWVyJ3MgdXNiLXJlZGlyIGNsaWVudCBldmFs
dWF0ZXMgaXRzICJmaWx0ZXIiIHByb3BlcnR5IGFnYWluc3QNCj4gZGV2aWNlX2Nvbm5lY3QgYW5k
IHRoaXMgaW50ZXJmYWNlX2luZm8uIFdpdGggaW50ZXJmYWNlX2NvdW50ID09IDAgYW5kIHRoZQ0K
PiBhbGwtemVybyBjb25uZWN0IGhlYWRlciBhYm92ZSwgYW55IG5vbi1lbXB0eSBmaWx0ZXIgKHZl
bmRvci9wcm9kdWN0LCBjbGFzcyBvcg0KPiBpbnRlcmZhY2UgcnVsZSkgcmVqZWN0cyB0aGUgZXhw
b3J0ZWQgZGV2aWNlLiBGaWxsIGludGVyZmFjZV9pbmZvIGZyb20gdGhlIHNhdmVkDQo+IGNvbmZp
Z3VyYXRpb24gZGVzY3JpcHRvciAoaW50ZXJmYWNlIG51bWJlciwgY2xhc3Mvc3ViY2xhc3MvIHBy
b3RvY29sKSBhbmQNCj4gZGV2aWNlX2Nvbm5lY3QgZnJvbSB0aGUgbG9jYWwgVVNCRGV2aWNlPw0K
PiANCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3IGFuZCBzdWdnZXN0aW9uLg0KDQpJIHdpbGwgcmV3
b3JrIHRoZSBzZXJpZXMgdG8gcmVhZCB0aGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgZGV2aWNlIGlu
c3RlYWQgb2YgaGFyZCBjb2RlIDAuIFRoZSBob3N0IGhhcyBubyBkZXZpY2UNCnVudGlsIGRldmlj
ZV9jb25uZWN0IGFycml2ZXMsIHNvIGl0IGNhbm5vdCBhc2sgZm9yIGFueXRoaW5nIGl0c2VsZi4g
VGhlIHNlcnZlciByZWFkIHRoZSBkZXNjcmlwdG9ycyBpbiB0aGUgDQphbm5vdW5jZSBwYXRoIGJl
Zm9yZSBpdCBzZW5kcyBkZXZpY2VfY29ubmVjdC4NCg0KSSB3aWxsIGFkZCBhIHBhdGNoIGZvciB0
aGlzIGFuZCB0aGUgcGF0Y2ggb3JkZXIgd2lsbCBiZSBjaGFuZ2VkLg0KDQpUaGFua3MsDQpKYW1p
bg0KPiAtLQ0KPiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNv
bT4NCg0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 08:16:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 08:16:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469304.1678150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO9gs-0003Ra-Ib; Tue, 03 Nov 2026 08:16:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469304.1678150; Tue, 03 Nov 2026 08:16:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xO9gs-0003RS-EG; Tue, 03 Nov 2026 08:16:22 +0000
Received: by outflank-mailman (input) for mailman id 1469304;
 Tue, 03 Nov 2026 08:16:21 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <berrange@redhat.com>) id 1xO9gr-0003RK-Bo
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 08:16:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xO9gp-00DHvI-Mc
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:16:19 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 6ae99844-8faa-0a2a0a5109dd-0a2a450b8c3a-40
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:16:19 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <berrange@redhat.com>)
 id 6ae99852-b7e8-0a2a450b0019-aa0a857c53ed-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:16:19 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-202-kBU0XR3aMbS8L4OQaIH33A-1; Tue,
 03 Nov 2026 03:16:13 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 8DF86180067A; Tue,  3 Nov 2026 08:16:06 +0000 (UTC)
Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D11201955F43; Tue,  3 Nov 2026 08:15:55 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793693778;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:in-reply-to:in-reply-to:  references:references;
	bh=BVLfCVXQHgSH4f3V9ZECiy4kJVTCfquG8wFB49Y2ssc=;
	b=YDbGpCwUb632jLugNdFxN3tMz8jug8A1DXvHhZdcfi35PbJqCM/t/h03Ez2i5KgDTAfttr
	c2T/hp8Ar1jEEYMwN21ZTu8YiU5PPpCNXwNymxCztV+TD19FvepUE3KUpB7fc8FF7WsvYg
	g1zIwvLLDxfBcY5IKzH7lGD6YzUye0Y=
X-MC-Unique: kBU0XR3aMbS8L4OQaIH33A-1
X-Mimecast-MFC-AGG-ID: kBU0XR3aMbS8L4OQaIH33A_1793693768
Date: Tue, 3 Nov 2026 08:15:52 +0000
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>,
	Yonggang Luo <luoyonggang@gmail.com>, qemu-devel@nongnu.org,
	Anthony PERARD <anthony@xenproject.org>,
	Felipe Balbi <balbi@kernel.org>,
	Aleksandar Rikalo <arikalo@gmail.com>,
	Philippe Mathieu-Daude <philmd@mailo.com>,
	Antony Pavlov <antonynpavlov@gmail.com>,
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	=?utf-8?B?SGVydsOp?= Poussineau <hpoussin@reactos.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org,
	Alexandre Iooss <erdnaxe@crans.org>,
	Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>,
	Thomas Huth <th.huth+qemu@posteo.eu>,
	=?utf-8?Q?Cl=C3=A9ment?= Chigot <chigot@adacore.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Yoshinori Sato <yoshinori.sato@nifty.com>,
	Frederic Konrad <konrad.frederic@yahoo.fr>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Chao Liu <chao.liu@processmission.com>,
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>,
	Alistair Francis <alistair@alistair23.me>,
	Huacai Chen <chenhuacai@kernel.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Gaurav Sharma <gaurav.sharma_7@nxp.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Alistair Francis <alistair.francis@wdc.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
Message-ID: <aumYOBw-nKQAWdYK@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20261030151539.1872-1-luoyonggang@gmail.com>
 <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com>
MIME-Version: 1.0
In-Reply-To: <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com>
User-Agent: Mutt/2.4.2 (2026-08-30)
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: n8BBvt5bPXo12HEVunNy6UK_LlelX1H0EW_FC3TSn-A_1793693768
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
X-purgate-ID: tlsNG-42698a/1793693779-A94C39EA-DEBBB6DB/35/111497
X-purgate-type: clean
X-purgate-size: 1645

On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> > On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
> >> type_init
> >> function that calls type_register_static(). A later change needs to
> >> pass a
> > 
> > That's the point of the macro to hide the boiler plate code.
> > 
> >> target mask into that registration, and the macros have no parameter
> >> for it.
> > 
> > Couldn't you just change the macros to take that parameter instead of
> > expanding it everywhere?
> >
> 
> Problem of macros is that they don't have default parameters, so you
> need variants for everything:
> 
> DEFINE_MACHINE
> DEFINE_MACHINE_EXTENDED
> DEFINE_MACHINE_WITH_INTERFACES
> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> and now would need a new variant, with variant for other existing ones.
> 
> In the end, it's just simpler to remove this and add the boilerplate.
> It's written once and never modified, so using a macro just save typing
> those lines once.

For each machine, it is only written once, but we add machines
over time, and every time a new machine is added the code style
is slightly different. We introduced all the variuos DEFINE_*
macros for QOM to better ensure consistent style and usage as
new code is added over time.

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 08:40:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 08:40:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469313.1678158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOA4Y-0007qP-Bo; Tue, 03 Nov 2026 08:40:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469313.1678158; Tue, 03 Nov 2026 08:40:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOA4Y-0007qI-8z; Tue, 03 Nov 2026 08:40:50 +0000
Received: by outflank-mailman (input) for mailman id 1469313;
 Tue, 03 Nov 2026 08:40:49 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOA4X-0007qB-FK
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 08:40:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOA4W-00DNvc-8k
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:40:48 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae99e01-2eae-0a2a0a5409dd-0a2a4501e5e6-46
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:40:48 +0100
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae99e0e-5984-0a2a45010019-d155dd32a92f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:40:46 +0100
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-48e1d0e5dafso218103f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 00:40:46 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b78a6bsm23509881f8f.27.2026.11.03.00.40.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 00:40:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793695246; x=1794300046; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=nfY+iLymB3MMEjfwlaJdOBvqUt1Xi0dcHx4dzg8CpHQ=;
        b=YYLCy390hB4IQinpLJKgs1wKivusCndlovrJ8MAmeEW4XajV1UztqHgveNbDuuV88U
         nbzZMSHakp8Sx4UHOLjuWKbXynr07d4kf2olxlWRBeUfY5J/T0uuh4NJDBepMrRcXPyE
         8+yBID2ZsSSIRLTYth7esyL0SCkf+uQSeWKK6LtVqL8297HoAJuD2bs6Oszs9OrqgGb+
         yeMck6vWhdyzUyogYMJVmELK5SODJIMfejcAdb1C1PpNnyBDJyjvbyve+BoiJW3P3M1M
         KuGgAQUpW0Rkjn7q7L/ED2eZkHFrlUVyicqysbUOKT/dt7ufJ0cH0ipLTCYnikxbfnLi
         rHfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793695246; x=1794300046;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=nfY+iLymB3MMEjfwlaJdOBvqUt1Xi0dcHx4dzg8CpHQ=;
        b=BPE4ax/jsFQFXc0rjDE4I8vJnj/U8uLuzozINPn8aPDyTcJN291Xctup8yepRvhS56
         CLNhiYtr6X0Rmy9PpOQAtJ5K146XOUnOtR/dRV9K4p35kRPM2FCUK3GeWmUHWoV3zl3s
         gNY8OvnIR+pO4gaNNJ1M+dc401VBgUb2Bg9lL803V0SYzRrTMa6X2CTw/OM6vEKO3lBx
         aLcMKcXroxqJsN5m13M/x1/boPYHgcEhJ0FRRDzzEFy0Qa2X6v3K98ndaPEUMEnWy615
         1YFMkZ+u6GeFrNFx8RHbDDey+C40sdjXrhATsc/ryKpl6Pd+41pf2UDFXMaDCPBJQGkb
         eZPQ==
X-Forwarded-Encrypted: i=1; AKwUvBwIx19flivBDAvMzP2Zk2RaYdP7YH6zgi1foocN74GnNjdfxzbX8OMNmvN2lzZanb7ofpvDsD5nFTI=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8I91WmT9v4qXfcKdXHaj93aeEJCyZ+sf7LrfbRNY324L+jafHy
	9OTiyV+RFM6ZdNDlIdEWp9bbpnkIcSdTd78Omj8zrv65Yi417Yvzz6PwW4slAzes4w==
X-Gm-Gg: AYBFou0Pi4Oc758vskeyIRDomG4/hht0XFGMtCPVkbdlmYl3Wj9XoDSIkzqHhBEYq5m
	ZPSeP74Fk86Zpex/ajFpsN/RViTPN8fjUaEcxxHcIOV/t+aZUptPXqHBgTaBXROd0Y5Flth4v4y
	hrMAJy9PQoh5JreItUm3NnO94itZrUyzyIwaT5woCTBaMOhd9xUPfXheINA+6w+Q9emRQLh942k
	IrhDVtEn8yQGK+HlOyrr7g9Prw4ofSqa8ZCeyYj+weM5YJm0HTLJlHkNtlML4a/Ip1mkzlzuJmg
	M0clYLII3x+dpsTmMiym7khvzRIok6mJsxk5foDOUtqHujGwPpjlS8ZDFtJ/cEmcp+5H/rsAt5v
	DHWPlvOm6vRyS0/nqCQM6LWF1otWluOuKRQzkwgkCRLoktwdFrxCswRDyOlOBy3mucMf41moCy5
	sZId7H7IvQGkaMt5sa37lvBw9nAiPye6NU55mWXPVkxk5RgRpcEtjPiRIVPnaeJ6Z76qLctQTWN
	zHILs6Bb27q0jUkNiWZUNenUcefwAqDMoXCSNXKeUKcKop2vb+rnNlpWixXwzpdrpM8rCHJXtVG
	x2Nd/n2scGPMNYImy0zTRcioXCez9DZ/H86pVqmY+2ovW4JPnFz6IK/0DCGU/6QyPU2ZvuP6pp/
	Jb1QqnW26oU0Z1RFW
X-Received: by 2002:a05:6000:1449:b0:48e:6c28:6051 with SMTP id ffacd0b85a97d-48e6c28619emr31010306f8f.19.1793695246331;
        Tue, 03 Nov 2026 00:40:46 -0800 (PST)
Message-ID: <6b7b5ade-41ac-48de-ae30-8bf8d1c72037@suse.com>
Date: Tue, 3 Nov 2026 09:40:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: Drop {nmi,mce}_pending defines
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102174056.1763614-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261102174056.1763614-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793695246-1E465757-C6FD0389/10/78276251493
X-purgate-type: spam
X-purgate-size: 310

On 02.11.2026 18:40, Andrew Cooper wrote:
> These obscure the data layout in v->arch, and prevent using the names for
> other variables.
> 
> Expand the defines in place.  No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:16:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:16:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469323.1678169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOAcU-0003l6-WC; Tue, 03 Nov 2026 09:15:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469323.1678169; Tue, 03 Nov 2026 09:15:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOAcU-0003kz-Sp; Tue, 03 Nov 2026 09:15:54 +0000
Received: by outflank-mailman (input) for mailman id 1469323;
 Tue, 03 Nov 2026 09:15:53 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOAcT-0003kZ-JB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:15:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOAcS-006SKu-27
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:15:52 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9a646-8faa-0a2a0a5109dd-0a2a4509dfce-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:15:51 +0100
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9a647-be1a-0a2a45090019-d155d033c8b4-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:15:51 +0100
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-6b413b0a974so5919784a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:15:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793697351; cv=none;
        d=google.com; s=arc-20260327;
        b=ezqoDEDR4OVl2/TG8kOfJzFKUrjDo7dZ9gYjsxwITETQnwi28NhF0Sw+QhpTOm7npH
         EQOGH9PMhoAGa5KWONFBc/KfHDxKivrWkxWQz9yILNVfoiMtbB59XmaF1mGejymUU9uw
         t5v/Ue/Qq/8k8kQYZp9faIbBJSA4myRo/P4vLLFBsQG1g7j5207AGuFiJXgFBdxM/7Zq
         WHLQj/nsoIcg9Yg3AR+hE+0W5MT2bORDEhyJg7f9Ijz3WkrjbzKwuV+5SOJR/UCp+NeP
         JPgmFbxN3AjKZ07JWfZC6YyxzUsKAyeygIb3NFlourBTp7IJrlQFSrjEFwabbRociUoS
         89bg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=6HpPn4PoYBNIQe4jwAq6RYNc4y0GSA5S0U2wFZLAcN4=;
        fh=bPC2PGMQmpuQGGT94eSxX5wfaBnz1TqG72hOn9rgZJI=;
        b=UGy3+mhPDLOOEKpii0GpD5M591VK6spZNOdu1A6zrNmaxQEbe9r38dCN04vgsX0ULf
         PUhF89i3oyr0hf4ujcClpW6HKonA4xduLJT6OtM46a720RL2dYI6+HQBOoFrv5Yg5S5l
         fV6ExYo0t9F1TKR78s6zOYGcZYcMlXoP8Pm4sAlNH6rq4x8D1/RSLf7nPc7G9k4k+yPK
         Z1ZqKQICXniMIPYB91ciqhhq8gKYd1a3eCdb8PFRmqpNX34aDI5k/DQK8+lTSTBXflTu
         gB/DKM5PFWp0IwmmiV7E8Ipngzef3CO4J8BVw72L942XOefE4aygQu7eKsmHLUaCPrUs
         /Svg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793697351; x=1794302151; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=6HpPn4PoYBNIQe4jwAq6RYNc4y0GSA5S0U2wFZLAcN4=;
        b=ZgUXexzq/ELq1lBf29PLxT5Wbf67Ftwcn9EtmgkY93vyM2hN66xh/WH/yfb6Tl7bAv
         yPT22Za0loPtDNziXW8HgwFwfio3Kw3QWAarNPo5QTrVbCICRweJfgZ+oix/QC3Q3wjH
         n++52R8QvcouwhQcUObJR07ctLw5g7unfO3X2/yY9Fixbp6wbXMWQK1ooz9mzuIQfyQP
         Sgzlar72PmmumDj3TVVp2Dl4Zqjdm3FVafLQ3xiZ+hEaKbYOhYrJv4o8bAFBuKnGC5pV
         j4Hjshsrlqv1JC9EDsy9Gnv9J5BvhoLBw8Gpt3dZCPemF0VvwwkmFcBK7X/vbMuGIMhh
         x6Sw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793697351; x=1794302151;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=6HpPn4PoYBNIQe4jwAq6RYNc4y0GSA5S0U2wFZLAcN4=;
        b=Bf2ai0S0es5pbm8XkZduRK0xVZTmkgV6WMSqvFAPrO6vwG2Et0EATAtrlIW9Qg2Xgh
         ZhYUenxHYtEzb/7VoRMuPEaEZu0faBkuLz1bIbYovPW2FQ3VZcCR05jHLgSNj/Ba9EUG
         hsfmkh/0irN1Lra9+ZVY+Bc3eL+hwAvkNbncWquzQlPbco+p51IdYiZv69G7oz0gD3Iw
         4LvnYp0FNVd4bSk/L5hmQH388+kAl3GQereKfxX7kCrZSz4O9PPrV6/oYZKd2htqRnwV
         98JtROyrZyb76v4h6/Kq6RYjCSLb0Q8pPzaXgcrNN62P8WzoNSJLwgZK1yzMFgm7Tm9j
         A1TQ==
X-Forwarded-Encrypted: i=1; AKwUvBzZ2v6EGZU1tD/V8l6hxVcoRvSbmveMWb09xE76+h5JFmukHI0yh4kGh5+nEEmcy26ENoLoFc33wrs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+A+1dsDBWxjwQDME3n5a/EzKeQIHInXh8n6fThbSWCZJ5+sYaH
	1fJ8el+jzrWzPV5udxA3VGXx8o/oKmmzHWAh9O1DVpt9wtDDlbA5kw0nezxS/yrpf9JfMr1gtSO
	wOmeJhnLwO7wIZT2/fv591vrieGfkEYQ=
X-Gm-Gg: AYBFou1UBkxP7AHR4eg+wIPZI6jd7wybvd/lbh/BR9U93hGXVYOvydHaO6dtW1ZsuIK
	dOfIOTMm5VCAKO9zxpcJBdh3bHwStHVslOh4s1AB4H3Oy3zQhPtmQmBo1hvL1iCWxPp9zHICAoU
	u4GWCBYI8nM6L3M4xkXX3gKSHC4N4SKwJQgaSlhDrbkVzMXslOSe2HMT4f0QaGYlHJO59P5V1aD
	fR77pHfBwRiEdZI9mx3AxhL55BnHi1IksVTd/9eY89lyG9wMgFut4QNlxsQI0ES+uqPha6qFLJr
	v84LY7O58oaesFJ5eBmJ2HGp321bkTujTmGm5Owxpw+bk6e1Sy/fLFTNLWjJT0lfs19cyErBSGH
	mNiXJn/ceAB2ohE5BVciJOndiIlNJhpAvBasb
X-Received: by 2002:a05:6402:2355:b0:6b4:20bc:fa3 with SMTP id
 4fb4d7f45d1cf-6b4d467bb11mr9345520a12.22.1793697351217; Tue, 03 Nov 2026
 01:15:51 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
In-Reply-To: <aumYOBw-nKQAWdYK@redhat.com>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Tue, 3 Nov 2026 17:15:38 +0800
X-Gm-Features: AclHuK9NUtlMJehxCaFT4QHnxh-0yBZ0hPP8kK9uDqXwDHrUyauf19YUe8SC3VE
Message-ID: <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, BALATON Zoltan <balaton@eik.bme.hu>, 
	qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
	Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
	Philippe Mathieu-Daude <philmd@mailo.com>, Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1793697351-3BED6034-7BF4A051/0/0
X-purgate-type: clean
X-purgate-size: 2661

On Tue, Nov 3, 2026 at 4:16=E2=80=AFPM Daniel P. Berrang=C3=A9 <berrange@re=
dhat.com> wrote:
>
> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> > On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> > > On Fri, 30 Oct 2026, Yonggang Luo wrote:
> > >> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
> > >> type_init
> > >> function that calls type_register_static(). A later change needs to
> > >> pass a
> > >
> > > That's the point of the macro to hide the boiler plate code.
> > >
> > >> target mask into that registration, and the macros have no parameter
> > >> for it.
> > >
> > > Couldn't you just change the macros to take that parameter instead of
> > > expanding it everywhere?
> > >
> >
> > Problem of macros is that they don't have default parameters, so you
> > need variants for everything:
> >
> > DEFINE_MACHINE
> > DEFINE_MACHINE_EXTENDED
> > DEFINE_MACHINE_WITH_INTERFACES
> > DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> > and now would need a new variant, with variant for other existing ones.
> >
> > In the end, it's just simpler to remove this and add the boilerplate.
> > It's written once and never modified, so using a macro just save typing
> > those lines once.
>
> For each machine, it is only written once, but we add machines
> over time, and every time a new machine is added the code style
> is slightly different. We introduced all the variuos DEFINE_*
> macros for QOM to better ensure consistent style and usage as
> new code is added over time.

I understand that the DEFINE_* macros are bloating because of this.
Indeed currently the only two macros used are "DEFINE_MACHINE" and
"DEFINE_MACHINE_EXTENDED"
; each time people want to add a new attribute, the macros is twiced.
And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replaced
with DEFINE_TYPES or TypeInfo
and be more explicit. When we used as macro parameter, we need think
what's that parameter means, and for
TypeInfo, we can directly know what that member is about(because we
are assigned with the member name).
That's why I suggest keeping a single DEFINE_MACHINE, just like
DEFINE_TYPES; as they are the most
used macros(and simple enough), and won't suffer from changes much.

>
> With regards,
> Daniel
> --
> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
> |: https://libvirt.org          ~~          https://entangle-photo.org :|
> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|
>


--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:42:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:42:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469349.1678178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB2K-0007xh-U8; Tue, 03 Nov 2026 09:42:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469349.1678178; Tue, 03 Nov 2026 09:42:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB2K-0007xa-Py; Tue, 03 Nov 2026 09:42:36 +0000
Received: by outflank-mailman (input) for mailman id 1469349;
 Tue, 03 Nov 2026 09:42:35 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOB2J-0007xU-2G
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:42:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOB2I-0069Md-3o
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:42:34 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ac7e-8faa-0a2a0a5109dd-0a2a450598de-40
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:42:33 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ac89-4cb1-0a2a45050019-d155802ee181-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:42:33 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4afe2d546f9so22721385e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:42:33 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b80333sm25877953f8f.32.2026.11.03.01.42.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:42:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793698953; x=1794303753; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=yfUbWIYMjr45mfwKdq7drkPh6fBU5g7FCa+7yoeN1V8=;
        b=Q/fyJmL0VASOb0ihrrM3hah6KBe0q7AtOXRFCdDNnz5PmTsd2AjcJ/H70AIrOUkoJ7
         IPVwNcTf3ERdAk7WAcKZl/M+T8goeX0HFL5xXuQN/278Z4zCQwjkS04cahOSuAUBd27i
         ZplNsZGbIBkZEagGKvRRA/2kwHVWnDHi0Op2U5tE34aidZtDV21iRnlZswEg7iwrieR2
         RP7DpzBIqNi1oMrS0AN6q+QoTUgKwKXLhP7B1cxNCsk3Zj1Uc6tT343dT2H+GaHBsPvH
         CbmDcvtsWVzWzNZe9Zj5G5mCuBZnPCA03c/KVVArTP1+bg2r+cSF5YjT/aj//z1amrXl
         Ovlw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793698953; x=1794303753;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=yfUbWIYMjr45mfwKdq7drkPh6fBU5g7FCa+7yoeN1V8=;
        b=Tka3q97YP6MGRhea1fvq3Hw2nIDsnNxKOxh4AfI3Kw0sS3UPABR+yLFpzbaWn4lgv0
         fSmejL5gEsmSm/w7lStfYmfu5JBVm8CIFEmpVUpRKf+phm6PMZRRwwQ2quVkgqP5AnCk
         oa7AfRLetIP4sa0xDcGbyvXvs/m6eoWfMV/gjL/cNdV4tg8HLEzQBc5qYofV+lSlbuBj
         WRUvUAr4J1DftI3+2/erykWamNsVCyL9S2C+q6TovwlBHrG++KnzL7pBqLy8L5seDRUk
         2hSCP6fDNl15uNGrFTrxCUC7rmyo4iDmOfSYpjXZdYoGCn4z7X+Gjp7ZEgH4JCg+y2Lb
         1pAA==
X-Gm-Message-State: APuU4Z/TzpjydBSt7WySaKzZi7as6Xibh0Sm7L6fGqNvGsGRd0hEx7l1
	ogIn0GjWNYSa6CAE+zekBnEWzGexkuc8YFY/Dn0K7EWQoQs0uQQI9drKK9wtq5SlcWwLmggRkJm
	RPIDdtQ==
X-Gm-Gg: AYBFou0YTuXrosJiadVGNXkp3HbCjteRH1N7rbldt3tyooby0aAztm97N9aLsCApddZ
	E9WLx2dOEg8sccWKLr08ZM2xa6QXPPktPKmXFzTEWbeZtsgq77yAgDpqXLl7x+DgkYsJ3S+JMvy
	stOFTg++Owd9a3vCfW6lgY+wlTbaPl/+fjQBQmr69iK+4Y5IknVAtZb3u896hpPWFqaRDdwoOL0
	kfgOHkAA7COvPzm566W2OYY6DNjWDD+8NpgLYxb/u8YHjsqyVfhY8PKf6mArsuk6Ye7ZKijhFi2
	WaXguZ2IMQUNmLfkJ0DBTX8hPAmJnAT/JoUM1yzkxJcNL1l1cr/yhk+EJlyXoc9CtOS5uApyptj
	IRWSlrt/nhXx58d5TYXm0WY4WJqKmRexET+tOB9p7JTSL32G252rcALKDMJC8oBVDeLU8kncaYh
	Sr9PQosnH5mkP1hROQFx3bU3eq+TZEYFvfjDQ0zgKZgL93LCBnTTM4d8IY1l3BY1k9PHfIw6MEd
	PZ28CZN+BAYZIKcmpgOoMRQDYbwLLQ1Ja6NaQjfaOP/hucWaSoW5gZ5WMEEAGKKq0MQw3luXTYI
	IEzvpG/zDvFgMBh4/EEv1wMdlBcY6sI9bjv9o2zf7ErjEtus77/rnDSSdcLhlUQ3ow/mObBR4/k
	eYZMd0/UvpsHd9kA=
X-Received: by 2002:a05:600c:8b54:b0:4a1:fa21:fd90 with SMTP id 5b1f17b1804b1-4ac16bc547dmr302378285e9.9.1793698953321;
        Tue, 03 Nov 2026 01:42:33 -0800 (PST)
Message-ID: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
Date: Tue, 3 Nov 2026 10:42:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Nicola Vetrini <nicola.vetrini@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/mm: compile out __set_fixmap_x() when not needed
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793698953-F64B42A1-298258B2/10/78276251493
X-purgate-type: spam
X-purgate-size: 3121

Only HYPERV_GUEST has a need for an executable fixmap, so with that option
unset __set_fixmap_x() (and l1_fixmap_x[] in turn) is unreachable. Address
this Misra rule 2.1 violation by introduction ofa new FIXMAP_X Kconfig
setting.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Why is __set_fixmap_x() not found by Eclair as a rule 2.1 violation in the
x86_64-amd job?

--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -269,6 +269,9 @@ config MCE_NONFATAL
 config GUEST
 	bool
 
+config FIXMAP_X
+	bool
+
 config XEN_GUEST
 	bool "Xen Guest"
 	select GUEST
@@ -309,6 +312,7 @@ config PV_SHIM_EXCLUSIVE
 
 config HYPERV_GUEST
 	bool "Hyper-V Guest"
+	select FIXMAP_X
 	select GUEST
 	help
 	  Support for Xen detecting when it is running under Hyper-V.
--- a/xen/arch/x86/boot/x86_64.S
+++ b/xen/arch/x86/boot/x86_64.S
@@ -142,13 +142,13 @@ END(l2_directmap)
 
 /*
  * L2 mapping the Xen text/data/bss region, constructed dynamically.
- * Executable fixmap is hooked up statically.
+ * Executable fixmap, when in use, is hooked up statically.
  * Uses 1x 4k page.
  */
 DATA(l2_xenmap, PAGE_SIZE)
         idx = 0
         .rept L2_PAGETABLE_ENTRIES
-        .if idx == l2_table_offset(FIXADDR_X_TOP - 1)
+        .if IS_ENABLED(CONFIG_FIXMAP_X) && idx == l2_table_offset(FIXADDR_X_TOP - 1)
         .quad sym_offs(l1_fixmap_x) + __PAGE_HYPERVISOR
         .else
         .quad 0
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -95,6 +95,8 @@ static inline unsigned long virt_to_fix(
     return __virt_to_fix(vaddr);
 }
 
+#ifdef CONFIG_FIXMAP_X
+
 enum fixed_addresses_x {
     /* Index 0 is reserved since fix_x_to_virt(0) == FIXADDR_X_TOP. */
     FIX_X_RESERVED,
@@ -118,6 +120,12 @@ extern void __set_fixmap_x(
 #define __fix_x_to_virt(x) (FIXADDR_X_TOP - ((x) << PAGE_SHIFT))
 #define fix_x_to_virt(x)   ((void *)__fix_x_to_virt(x))
 
+#else /* !CONFIG_FIXMAP_X */
+
+#define FIXADDR_X_SIZE  0
+
+#endif /* CONFIG_FIXMAP_X */
+
 #endif /* __ASSEMBLER__ */
 
 #endif
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -147,8 +147,6 @@
 /* Mapping of the fixmap space needed early. */
 l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
     l1_fixmap[L1_PAGETABLE_ENTRIES];
-l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
-    l1_fixmap_x[L1_PAGETABLE_ENTRIES]; /* SAF-1-safe */
 
 bool __read_mostly machine_to_phys_mapping_valid;
 
@@ -6180,6 +6178,11 @@ void __set_fixmap(
     map_pages_to_xen(__fix_to_virt(idx), _mfn(mfn), 1, flags);
 }
 
+#ifdef CONFIG_FIXMAP_X
+
+l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
+    l1_fixmap_x[L1_PAGETABLE_ENTRIES]; /* SAF-1-safe */
+
 void __set_fixmap_x(
     enum fixed_addresses_x idx, unsigned long mfn, unsigned long flags)
 {
@@ -6187,6 +6190,8 @@ void __set_fixmap_x(
     map_pages_to_xen(__fix_x_to_virt(idx), _mfn(mfn), 1, flags);
 }
 
+#endif /* CONFIG_FIXMAP_X */
+
 void *__init arch_vmap_virt_end(void)
 {
     return fix_to_virt(__end_of_fixed_addresses);


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:49:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:49:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469361.1678185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB8k-0000GD-MH; Tue, 03 Nov 2026 09:49:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469361.1678185; Tue, 03 Nov 2026 09:49:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB8k-0000G6-J6; Tue, 03 Nov 2026 09:49:14 +0000
Received: by outflank-mailman (input) for mailman id 1469361;
 Tue, 03 Nov 2026 09:49:13 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOB8j-0000G0-Cx
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:49:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOB8i-006ZVU-Ib
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:49:12 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae0a-8faa-0a2a0a5109dd-0a2a4503c33c-26
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:49:12 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae18-fae8-0a2a45030019-d1558032b0b4-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:49:12 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a35ac4475dso27705245e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:49:12 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2ab010a66sm64506935e9.13.2026.11.03.01.49.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:49:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793699352; x=1794304152; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=f0LBHMvs3wSXxDl8bE9YKTvwcmdC8ZOzEnuyDazQtk8=;
        b=cueXa9Wrx/Th4v9WDPsW+fyw/hAE9VzxMfeMEKWnFxLOVgnupInJL56E2dXsJkmFXK
         ocjq/rKzkwzymz7+NTSEUPAL3D/eK+GxRTFGSBr6oiUxYHnJxk7gnEhjWeCtwb9iWFQZ
         03z94z3BVIBuwlxDCkGfugl1MS5OwotDN5DBZ7WtCUfT5RFKTVnhRW9PcploYG4EPyZO
         EJOt5Zv2SD5RoJAvZq2PxpIajFODGoKvYQ2vKFPEfmVvdb4Q++asDeMoIYNVcrnKVKn0
         rR3/Dmu/YpaXA/PClQsyzv9qE7euDK9bAchlBEvPQP+eu5PlP8147zqbK+yQuxocSys/
         qmww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793699352; x=1794304152;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=f0LBHMvs3wSXxDl8bE9YKTvwcmdC8ZOzEnuyDazQtk8=;
        b=NnZgV2GaYIZqNpCDN0VknyyqTOf4g4d5n+mwAYpB2UDCdlIBRMPkESHx01Ufvbfq+y
         G/9RAGMPuP230euNYcRBp5thgPvMqQ97U5jNHPY0IOohBP5dcE4mCrmWamG79kNMntt4
         ppsXwBCtMZey3o95YICW+R51BIUJVpwzfiJfviZqt6YELR2KB223RCxKslr71HCYHjve
         4XVTEfTQwBHI9IYuW6HcnhCFhgnHT3sKZS6bFerExCupMlz3v7sLk7NvsOCgWLO0Wd7c
         wb+d9pjBeQbExg6Q9s/P1jIS1wE95k5fymAIDyP1gsPAHVBLQPYdaA4IQK87gJ26AztX
         dsLw==
X-Gm-Message-State: APuU4Z9LAAYYeuZMffkBbRd62kDkPSbhFTWW6teDEos8rK7ED4857gAp
	TyHiTTCJIKqRkaishAF0XmNobLCUcojNN82LLFhuq9WbpPw5iB8vnw0zJaOxb5e5tzDROyAxCPA
	ySDYPVQ==
X-Gm-Gg: AYBFou2t6MOjYRX4uHLvSRsUEDKa9Uezvpi+HgqoDH5iJDXpSSaYeEYT9GE6DfInK3t
	geZHUlgIuxBoiD6j1YHvimH1SAP9axnOEOIKPcrPPjDLR0t+wLPx6EbbM+2SVDA3suOlR39TRAG
	ECgWiiRWICGuCJh6Hhn0ChzcN1SQdMuuUtHvl2/gwzBqCEo8+AzrLzPkUeGmu9oSR+eW1hzMit2
	TTzKIWc2PbCcckH73rSb1kEEMq/WITkifNuS6UXWILW7n+VOor9WcuIUQL2LrXNI9ZLxQrgXT1v
	J//F6NIVHKeJU/j+/t9j58DhVbV+ncAxQkutGPYkorP9EUS1boM5LjNs2We3JpC81Mm6ug68pBc
	WP+9SQ9Ujw8QQ10xeIanA6S7o8oS2kHgfogszRwErEkUtratZDasCGNS0aTZ+7s1+wRDDNVlvv7
	OzNlxTWTxQFP/Ff9rQZlRqq+f9NGR+JVyCLkN86+wkSblTfp4TzytsfkwqLpk8vvA4h9PIJcoV6
	68J5Ri2OXnQd6z2eL6qPj8KlkDi3liTxSZoLCcknUflPOFwelcTkb0DWM9GQIXszT83zwXN+QiI
	GV7cmAH5EUJ3OHZlpBxUzmzX1A3SjJkoqFLQ7BC+5TvcIJuFmBbgdj0Szg+QZb6k5Aq6miTpJud
	eLqwrlWy865mX32cZ1cSqFCCCbzsIdnLXe5wP
X-Received: by 2002:a05:600c:3b8f:b0:4a6:42cc:bf66 with SMTP id 5b1f17b1804b1-4ac16acfdd5mr297536345e9.11.1793699351866;
        Tue, 03 Nov 2026 01:49:11 -0800 (PST)
Message-ID: <b0fd61a1-04b4-421e-bfaa-135ff70c18f4@suse.com>
Date: Tue, 3 Nov 2026 10:49:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/MCE: reduce redundant code
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793699352-75A814E9-6D1C857F/10/78276251493
X-purgate-type: spam
X-purgate-size: 429

Following the (so far not really explicable) observation in [1], plus
the fact that mca_rdmsr() isn't simply an RDMSR, patch 1 looked like
something we may want to have. While putting that together, another
inefficiency popped up, which patch 2 covers.

1: reduce number of MSR reads/lookups
2: drop redundant code from mcheck_mca_logout()

Jan

[1] https://lists.xen.org/archives/html/xen-devel/2026-10/msg01825.html


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:50:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469367.1678195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB9a-0001fL-UA; Tue, 03 Nov 2026 09:50:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469367.1678195; Tue, 03 Nov 2026 09:50:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOB9a-0001fE-RO; Tue, 03 Nov 2026 09:50:06 +0000
Received: by outflank-mailman (input) for mailman id 1469367;
 Tue, 03 Nov 2026 09:50:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOB9Z-0001T7-M1
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:50:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOB9Y-002qDR-SF
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:50:04 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae41-8faa-0a2a0a5109dd-0a2a450a9ff2-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:50:04 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae4c-f2d2-0a2a450a0019-d1558030e8b1-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:50:04 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-49d05d51553so25322985e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:50:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2aa481a45sm41826875e9.7.2026.11.03.01.50.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:50:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Content-Language:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793699404; x=1794304204; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to:content-type;
        bh=f0LBHMvs3wSXxDl8bE9YKTvwcmdC8ZOzEnuyDazQtk8=;
        b=I+qmgNPxz/Z38R9PSfJrmspwVPuxS4oDxBBOimiKQhUfIKYnSP0BybECG3mW3LvL47
         dQjhzJSsg1zEsF6HZj+u41ze157dr9cR2LJJb0mAmo5b9gZqyuslw+9hKc2Dp4b7vav0
         P84nnGkayAtAr9yCH1FfmQbdGDtv4NHZuIH37oD5mlHTNLdAia07gd+pl5+s6XplPpAh
         CnJJFeKwCJEaXjIbf9DdCfdMrfHO3VN6tKlS75vxv6sP80y1IXxeb2zXnMbmwsGlz7yc
         1gNwz2c7pshSblOKGcLyOYcyzYuwhmUsX2IGE3lQ4nWe0VLRo+8YvAU9nDrBnmuLt9Fz
         4W0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793699404; x=1794304204;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=f0LBHMvs3wSXxDl8bE9YKTvwcmdC8ZOzEnuyDazQtk8=;
        b=wJTdS4II+4341SubL/b9UvOkm8F5IpJCIVq4ewc/BvGlupDBJ2GIi9ricK3WKQCxcI
         W4aSHJ2Cno90GZnPzWmPOMhB2LgUPKXuJtCU7KDphYSWwuK/tlytnzgQlwfYvOudavI8
         y1SVnK6dQ9LFCUZZ/rWNetTg3yzFXcCyh4rLWR5EcHoVINFWryjzYoBeNnIuS/iMof4n
         tJaXY0Sjs1LBHpFYPqQVXXkiIx2UtlesKMt2tl+EohY78CXmeYsalLjYgwMCfRDsGa+P
         pKxDICqdcHIwET5mxN4QXsjooMY1d7y9Lo7AWjaFFIRYQWqzWPSupfxsA/l/O1FHMXcn
         I9lA==
X-Gm-Message-State: APuU4Z9I/EL2gWBOD1ZceNeNau4nAYenP3SQrFhP0YPINUB+1/mdjoHb
	IV40cGKH+L62x0yr0PWaKW5uk8C52XffU9LdZym6P2jp2IFbYM+mrkaUO7ZQDqs5VhRpCKFnwt7
	40KjzHA==
X-Gm-Gg: AYBFou3WvDkeQNnsUDsRlUpPk84Oii2+r1gEawKtd7hXHu9H/gSh7nneU9SG0XXpLbr
	gsbG69F278Z11e6vyU8zEu9jJJk78+pIe8rxaG7/kkZMtQ9kgXZUSgZzChHKK7cXta35Rqk720p
	0FFBhbOzDtjKlXzedNbwx4sBFU7HIZ9LOhTaqwLZk67riVW9FfmLrl5DQ0XzsbnV7u2KTuHX1xy
	yXAbGzdDBnpLyTG9Cm9Phn4rZqNXBEN1Jy5uJJ2B3dL7s0g3jbKzhwhNpEy4J+8XnfQ0KAK7bVn
	T9TT7pTJWgnZiHcEoa3aNDEsDyZFEYGfLMWsvRsIrAUOcdL+lMYBtPIgBYPF2wE3YxOV5ahxQe9
	ciLqrydjNC0EyMdFr5Se/cmSpEJxfKrFvTk3TkWyaaHgO7jij0QgdR3OfYHMG4v4AOsWsRVcvL+
	yEYCkVgA/U83MN/gzPDK8vWKAnhf2/jXgwSa3wVfXHC2osCxuuBk72m3ToLBmeTgsijd1hongQU
	u/pYN3TQXrMK9Q8I39YuRn0YCw8xjViQPnPd+5mG9+PvXDy4wIU4j7icMnSX1nQuEXQmQHacLEB
	KKW9SgQFHI+h938S46CJBcdTJK4FCWVLwNlBX/wtggVeo45GspGvyKt6t7qIlp3OZaRd2xUasJh
	2BmnTxNqgmjQlzD1R
X-Received: by 2002:a05:600c:811a:b0:4a2:1e1:d55 with SMTP id 5b1f17b1804b1-4ac187a6b30mr273156225e9.28.1793699404324;
        Tue, 03 Nov 2026 01:50:04 -0800 (PST)
Message-ID: <beb9293a-e93e-4965-96d0-43df23b33c32@suse.com>
Date: Tue, 3 Nov 2026 10:50:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/2] x86/MCE: reduce redundant code
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793699404-530D9CFC-B50B1530/10/78276251493
X-purgate-type: spam
X-purgate-size: 429

Following the (so far not really explicable) observation in [1], plus
the fact that mca_rdmsr() isn't simply an RDMSR, patch 1 looked like
something we may want to have. While putting that together, another
inefficiency popped up, which patch 2 covers.

1: reduce number of MSR reads/lookups
2: drop redundant code from mcheck_mca_logout()

Jan

[1] https://lists.xen.org/archives/html/xen-devel/2026-10/msg01825.html


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:51:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:51:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469375.1678204 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBAm-0002Ag-8C; Tue, 03 Nov 2026 09:51:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469375.1678204; Tue, 03 Nov 2026 09:51:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBAm-0002AZ-4m; Tue, 03 Nov 2026 09:51:20 +0000
Received: by outflank-mailman (input) for mailman id 1469375;
 Tue, 03 Nov 2026 09:51:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOBAk-0002AR-AY
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:51:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBAj-002A4j-NS
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:51:17 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae95-e002-0a2a0a5209dd-0a2a450a8404-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:51:17 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9ae95-f2d2-0a2a450a0019-d155802cd134-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:51:17 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a214c5c4c0so35078295e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:51:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a555e59dsm49728195e9.0.2026.11.03.01.51.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:51:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793699477; x=1794304277; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=CxZOvHrfLcUpgm8GUFz5tIPN2W3obHHozpp1et7VvfA=;
        b=BPXZUEu2SSxz/T5H0apoAhPxlB6yHPHmDlqz95nDymsNKV9ftiG9I2hACk38wvYX85
         pYAPrCnHtaYX0XK7WdbzWQyJSaqHfYsbbHwuzBjn7s+EXDgWTOv9rrr+lcFypLmbC7Lt
         1lzTfSFiOdn9QJmrs2FzyJGHOP+UCrGrkm2G/yLwO1pX4NHsdpRctX1XDa6Pcdk74dd3
         7WnJSSQCEQ1NX3yQ0MUVjQWPPqaT6tYdMrpQgfWAUIQQ7rxvwge++dkDE/nS/y6emMuf
         9j+Tt8KzW9sVWU3YuIhLPHpTMcKfSM34CKriCR3HXB+m2Y2S0oQJUGpELVBxRNJ4eZ96
         4mGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793699477; x=1794304277;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=CxZOvHrfLcUpgm8GUFz5tIPN2W3obHHozpp1et7VvfA=;
        b=KuzTVJGTgDnhv5+QWlGLF3XhhnGWnpJiErvnIrJLjaTj2SwHif52X1HzrbaxfZPkVE
         G2wF6YewU6XotPEX586snIK1BWe/Rz5EitWzWYF3kxGNbhJZt65UfRBuHXZhhN+rOs4B
         7p5lfO2efnzrH1HYRYwOqywvanhzl/m5ZPEW2d/CJVfXSQCvzop5Qflre9t0pdCnlDE5
         NPrAIpwUsHXUOw/SKG7fDki4SIcRDu1wmXuRRR+wbqo/ZoCOMmUrbN+G8xpPhWuInsS3
         6eMwhlRxn1RjHjghgWZ1ilwI7rMY5Fz3EhG0WNTv5RKaFNHOWQHiBQ6jnvQWrlX6YgLR
         17nw==
X-Gm-Message-State: APuU4Z8ncc5k1hWCSgh1RHjzdrAOWV9Rct82ZTRKq1jgTAUTmGgCPp7v
	njPvj+zn89BMY1HgsT7pIA0BBmlPkx5JjZ2zExE4iNQGAm+9OAdfveBoy7atrf4VKuhFXQw8JjI
	JPTB1nw==
X-Gm-Gg: AYBFou1nSftfUPUWwTY5LfmzMx3e083J25ZrAmbCMvU/IOW6kFWf9r6CP14tZjxzz3d
	BVY/L486plRlUyADaotk575sUe07DnlIAIfUZiM/4VcAvhhGcxNnSkOLYcVXWZXiiKm/f1Qk/4U
	zpPAesdgTghv+32QCvwAIzdtXG11GLBTkt3/z6MUFRF+aj22h6D47/MGDf5BhelaBOdBpO0YCk7
	b78U6rl0zWvaVrOjVoM76E2eAk3lWN7qppoDOmSyQfzxugKYzPu/pZZpUZy2WLW9xxy2fZla6AJ
	m1QgG4ZXMgTL5uj0N6ceh3leTdSUSA8omZwCw0POWj2QKPyRKZ34XwtUYyH5TLJYyrwX9KOKGRZ
	DbaIfn4WtMZJDilCjbD+EaHo8O0+018NaQEoZTB+eJsbuf/bzB+Ipks+KGG7MK9cczQsz+xcCH2
	YhBNlJM5AfYGAlvGy10BRzl/rSWHjvotleWR5/qLBIgoo/XzCO4oBsrxILc+CEDllzIbTs3WYxi
	F12esM88hW3p3+rGR/qegddu2utxTt1Cpf1vjy/3jafX05/KpZ8VV/+rIFB+mgG1dvZ+s+0ThEr
	B88WzH68HWaME01yTeLZFW7UYMCD2BZ4SnA7LR1sjfEio+kgvl69pw+JBUnas0Xu+o27OFjzr+G
	PnkM7dQzTlD4hp8Q=
X-Received: by 2002:a05:600c:6208:b0:4a2:397:73fd with SMTP id 5b1f17b1804b1-4ac182dc32cmr288603955e9.12.1793699476975;
        Tue, 03 Nov 2026 01:51:16 -0800 (PST)
Message-ID: <013f0876-9911-4ec0-9c66-4f271b0415a7@suse.com>
Date: Tue, 3 Nov 2026 10:51:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/2] x86/MCE: reduce number of MSR reads/lookups
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Peter Deggendorfer <pd@cortex-media.de>
References: <beb9293a-e93e-4965-96d0-43df23b33c32@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <beb9293a-e93e-4965-96d0-43df23b33c32@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793699477-5A5DBCFC-38D6BDAE/10/78276251493
X-purgate-type: spam
X-purgate-size: 4702

MSRs mcheck_mca_logout() already reads don't need re-reading by functions
it calls, even less so when it calls them exclusively. Seeing reports like
[1], this also makes sure that what we use internally also is propagated
to the MCE log.

While touching function signatures, also switch bank number parameters to
unsigned int.

[1] https://lists.xen.org/archives/html/xen-devel/2026-10/msg01825.html

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
mcheck_cmn_handler()'s read of MSR_IA32_MCG_STATUS could likely also be
dropped, by having mcheck_mca_logout() provide the value it read.

--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -138,12 +138,8 @@ void mcabanks_free(struct mca_banks *ban
     xfree(banks);
 }
 
-static void mcabank_clear(int banknum)
+static void mcabank_clear(unsigned int banknum, uint64_t status)
 {
-    uint64_t status;
-
-    status = mca_rdmsr(MSR_IA32_MCx_STATUS(banknum));
-
     if ( status & MCi_STATUS_ADDRV )
         mca_wrmsr(MSR_IA32_MCx_ADDR(banknum), 0x0ULL);
     if ( status & MCi_STATUS_MISCV )
@@ -165,7 +161,8 @@ const struct mca_error_handler *__read_m
 unsigned int __read_mostly mce_dhandler_num;
 unsigned int __read_mostly mce_uhandler_num;
 
-static void mca_init_bank(enum mca_source who, struct mc_info *mi, int bank)
+static void mca_init_bank(enum mca_source who, struct mc_info *mi,
+                          unsigned int bank, uint64_t status)
 {
     struct mcinfo_bank *mib;
 
@@ -179,20 +176,20 @@ static void mca_init_bank(enum mca_sourc
         return;
     }
 
-    mib->mc_status = mca_rdmsr(MSR_IA32_MCx_STATUS(bank));
+    mib->mc_status = status;
 
     mib->mc_bank = bank;
     mib->mc_domid = DOMID_INVALID;
 
-    if ( mib->mc_status & MCi_STATUS_MISCV )
+    if ( status & MCi_STATUS_MISCV )
         mib->mc_misc = mca_rdmsr(MSR_IA32_MCx_MISC(bank));
 
-    if ( mib->mc_status & MCi_STATUS_ADDRV )
+    if ( status & MCi_STATUS_ADDRV )
         mib->mc_addr = mca_rdmsr(MSR_IA32_MCx_ADDR(bank));
 
-    if ( (mib->mc_status & MCi_STATUS_MISCV) &&
-         (mib->mc_status & MCi_STATUS_ADDRV) &&
-         alternative_call(mce_callbacks.check_addr, mib->mc_status,
+    if ( (status & MCi_STATUS_MISCV) &&
+         (status & MCi_STATUS_ADDRV) &&
+         alternative_call(mce_callbacks.check_addr, status,
                           mib->mc_misc, MC_ADDR_PHYSICAL) &&
          (who == MCA_POLLER || who == MCA_CMCI_HANDLER) &&
          (mfn_valid(_mfn(paddr_to_pfn(mib->mc_addr)))) )
@@ -211,14 +208,13 @@ static void mca_init_bank(enum mca_sourc
     }
 }
 
-static int mca_init_global(uint32_t flags, struct mcinfo_global *mig)
+static int mca_init_global(uint32_t flags, struct mcinfo_global *mig,
+                           uint64_t status)
 {
-    uint64_t status;
     int cpu_nr;
     const struct vcpu *curr = current;
 
     /* Set global information */
-    status = mca_rdmsr(MSR_IA32_MCG_STATUS);
     mig->mc_gstatus = status;
     mig->mc_domid = DOMID_INVALID;
     mig->mc_vcpuid = XEN_MC_VCPUID_INVALID;
@@ -331,7 +327,7 @@ mcheck_mca_logout(enum mca_source who, s
                 mig = x86_mcinfo_reserve(mci, sizeof(*mig), MC_TYPE_GLOBAL);
                 /* mc_info should at least hold up the global information */
                 ASSERT(mig);
-                mca_init_global(mc_flags, mig);
+                mca_init_global(mc_flags, mig, gstatus);
                 /* A hook here to get global extended msrs */
                 if ( IS_ENABLED(CONFIG_INTEL) &&
                      boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
@@ -351,7 +347,7 @@ mcheck_mca_logout(enum mca_source who, s
             /* uc = true, recover = true, we need not panic. */
             recover = alternative_call(mce_callbacks.recoverable_scan, status);
 
-        mca_init_bank(who, mci, i);
+        mca_init_bank(who, mci, i, status);
 
         if ( mce_callbacks.info_collect )
             alternative_vcall(mce_callbacks.info_collect, mci, i, status);
@@ -359,7 +355,7 @@ mcheck_mca_logout(enum mca_source who, s
         /* By default, need_clear = true */
         if ( who != MCA_MCE_SCAN && need_clear )
             /* Clear bank */
-            mcabank_clear(i);
+            mcabank_clear(i, status);
         else if ( who == MCA_MCE_SCAN && need_clear )
             mcabanks_set(i, clear_bank);
     }
@@ -548,7 +544,7 @@ void mcheck_mca_clearbanks(struct mca_ba
     {
         if ( !mcabanks_test(i, bankmask) )
             continue;
-        mcabank_clear(i);
+        mcabank_clear(i, mca_rdmsr(MSR_IA32_MCx_STATUS(i)));
     }
 }
 



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:51:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469377.1678212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBB6-0002US-EG; Tue, 03 Nov 2026 09:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469377.1678212; Tue, 03 Nov 2026 09:51:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBB6-0002UL-BL; Tue, 03 Nov 2026 09:51:40 +0000
Received: by outflank-mailman (input) for mailman id 1469377;
 Tue, 03 Nov 2026 09:51:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOBB4-0002Tp-Ks
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 09:51:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBB4-002ABI-1G
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:51:38 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9aea5-e002-0a2a0a5209dd-0a2a4505dd3a-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:51:37 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9aea9-4cb1-0a2a45050019-d155802cec7d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:51:37 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a2d6d01ecbso24921175e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 01:51:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71a4d5dfsm27963445f8f.3.2026.11.03.01.51.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:51:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793699497; x=1794304297; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=yu7a2ic57pWEnD4j7Nht+DNuD+UcR5F9Ux8mUAVGlO8=;
        b=D+UwLRUQISBx0Vw2Iy5JqStmzSFrEuS9ItGQlMksz9enZw5XqB+YUwYyfdBKySTTgo
         EkjRduHsaU+6qj7N1ZCEU2stWfjXV+ScaFln7Khy56SZS8CDrgC/FpRkZem0h8rIADeZ
         RzvrgTLyc6jE6auI7Miq25vtjCu7IGRG2wNZVnLgDmogj/37ZSxEDIPyEJwbuUO5re+u
         MHkiSj72nJPEGB0jlYeEipxoHeVylLNtuaRFXcqoC1TgH8cMvW6Ke4lOrBSOqnBeZLVa
         evJU0JPp73cRd72LSyT4FgMnB2CJ0PZ1n6mlf15+Xg1OWf7NtF3eSCy2iL9A58bcOO19
         avUQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793699497; x=1794304297;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=yu7a2ic57pWEnD4j7Nht+DNuD+UcR5F9Ux8mUAVGlO8=;
        b=Fw1JEndYhEn86cWyI0jTBW8dFRqImoItiqwc2EL3IrRD4tPEe2y9zIZTbgWvQAI9bf
         1ur4GMP2iToNKQHpQwlGYNDcwk7fjD7BKy+3Xt08SuhQnrfk6C+7qWqUmHxzOaqnhquE
         ZHbCFvidQ/WLXoEiC2naai0K/aBr9eCPFPZeH1tDaJWjlbvwn+sZwT1hHD57t/EWPlh+
         fpUss6aLyfW5JlpGRZFUuhNe9RGVfJBsSjqng/b5tt9gV8pKdcmvkzCGXqFmh8W0NIV+
         lzqeyiJCwqbVbkWhwlpXHp/rpfKv4lmVEOavamdyy2NlR2lq3c40QDXVudX51Oq3Ui0a
         qQxA==
X-Gm-Message-State: APuU4Z/vTuuaUF8wEnKEP3a2cb+ymIRKuKbco5tgoGauvyqKchV16hHz
	cUPfpLSagKzIJmazso8/Am4wpY5/rvCdOgYv47K95Z1qj5p2Qyqb3GoFfG5chtOpK/2gPCaYn46
	BVkGEjA==
X-Gm-Gg: AYBFou1238g2VFZ00LzDXoRqgQ3iV7ys09uD5VwnBc4rxNJ7MtlnAjcsDpd/y9TW3G8
	HYrHGlsBLcg2QeqG8UI+reilm9C+hnuIbp8YVL1VGTyu8cGmp1VF8wJnVcGh0QBxS+qQ+ty+3xd
	fFDrd/u+xwlGSo4pU9pcf4nJXFp1UhUJhKNCJGqVHYh794/tbz5c5u2PxXUoozob0lQv86gh9ln
	QsHQvoC7TQjgOet34d4AWSsVr+4o/POacQv6vFC2N2gVAZ4FACLaWXY/rPhVXGviYphn4Fk6Sqa
	NF43ulWmwiU0KQ5TXoPjjT5XUrohvRP8UVka0NV1b9PWxL5n5YgDfNPZIDUNiJgb3LrFwDIsZ8D
	OuTQiv3bvhzURmG/nC0r0cdTNutJRnxOFyBu5fn2VouKTx2uU+uw/oQ02nBJQU49x1qUjt28i2T
	xeOtHozHMhqqTBSaJ0e++vK/WScdKal8dekbIgAWJ4DVyFA1h3ItTAiCTLhkmgsbkeZyRugkn4s
	bKZ9cx12KiXbC72JOHhFw1VmjeXCrTsANKzQpq9Qs7zp7NrhiVNF7SacXSKrPK4mswfxAv2znrw
	Eks2EN6yTSRwWowSt539hHVc5i/s4A5JJPGhxbHv1vJKBgeo1b/vxquu860x5oAfLV52p2PfFM8
	Vh8cDWuJr/21mHkNt
X-Received: by 2002:a05:600c:3b09:b0:4b1:4017:c4f4 with SMTP id 5b1f17b1804b1-4b14017c507mr108160975e9.20.1793699497335;
        Tue, 03 Nov 2026 01:51:37 -0800 (PST)
Message-ID: <4f8681a3-b35c-4c97-a731-a58e3eaa8770@suse.com>
Date: Tue, 3 Nov 2026 10:51:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/2] x86/MCE: drop redundant code from mcheck_mca_logout()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <beb9293a-e93e-4965-96d0-43df23b33c32@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <beb9293a-e93e-4965-96d0-43df23b33c32@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793699497-F429B2A1-7173858D/10/78276251493
X-purgate-type: spam
X-purgate-size: 1145

Pull out the shared part of a two-way conditional, and use plain "else"
for the remaining latter half.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
To my surprise this does change (shrink) generated code (with gcc16;
albeit maybe there would be no difference in release [-O2] builds). This
looks to be a result of the compiler pulling the calculations out of the
loop, for being loop-invariant.

--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -353,11 +353,13 @@ mcheck_mca_logout(enum mca_source who, s
             alternative_vcall(mce_callbacks.info_collect, mci, i, status);
 
         /* By default, need_clear = true */
-        if ( who != MCA_MCE_SCAN && need_clear )
-            /* Clear bank */
-            mcabank_clear(i, status);
-        else if ( who == MCA_MCE_SCAN && need_clear )
-            mcabanks_set(i, clear_bank);
+        if ( need_clear )
+        {
+            if ( who != MCA_MCE_SCAN )
+                mcabank_clear(i, status);
+            else
+                mcabanks_set(i, clear_bank);
+        }
     }
 
     if ( mig && errcnt > 0 )



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 09:53:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 09:53:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469393.1678221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBDI-0003EX-TS; Tue, 03 Nov 2026 09:53:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469393.1678221; Tue, 03 Nov 2026 09:53:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBDI-0003EQ-Qo; Tue, 03 Nov 2026 09:53:56 +0000
Received: by outflank-mailman (input) for mailman id 1469393;
 Tue, 03 Nov 2026 09:53:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOBDH-0003EK-6t
 for xen-devel@lists.xen.org; Tue, 03 Nov 2026 09:53:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBDG-00ABiL-K1
 for xen-devel@lists.xen.org; Tue, 03 Nov 2026 10:53:54 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9af29-8faa-0a2a0a5109dd-0a2a4506b1cc-32
 for <xen-devel@lists.xen.org>; Tue, 03 Nov 2026 10:53:54 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9af32-195a-0a2a45060019-d1558030e59d-3
 for <xen-devel@lists.xen.org>; Tue, 03 Nov 2026 10:53:54 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a207b02a2cso26151285e9.1
 for <xen-devel@lists.xen.org>; Tue, 03 Nov 2026 01:53:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a82cebc1sm68260865e9.1.2026.11.03.01.53.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 01:53:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793699634; x=1794304434; darn=lists.xen.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=GZPu4oNtqwwGBqL2eB4CJ9D+U/2UDdFECtUtLQpDzzw=;
        b=Yd33XKMbQXjie8wcsflLjIUTnd4IzFkrzxNLvmM1D2No3jGmh8aHQNzq2SXSTrq9yp
         y6T0f5XtuTdAqUW/Lompe+dssKuXKYV2gEQRWLus/h3o+Hm9tcjLswf21v3sZkYgucRR
         MzhGHw1d5Sj1Ngo3MdApLr8mY+ENVYHZYmTCbM5GtH6bLaBmcZE2Z7zmHxGAJgzwFGZY
         mWQidE8RC5AlM2KUksNAvts7NAlph8RvjzlMCnmoEvV0BMGP/Y8ZT43a4ko5GQDNxTon
         50LnmQ3rhTjr4QtUQoCCyswXZroZA39ee1Q3S6oNkxW1IHFo4pfRzL23mfc9G+Av3T+u
         Zqmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793699634; x=1794304434;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=GZPu4oNtqwwGBqL2eB4CJ9D+U/2UDdFECtUtLQpDzzw=;
        b=rT/t2q7qTrBOD2MAqnhAEH6SBJxRi9iPf/xUwFtbK/BIrR3wxlYx1amFfU7D9x5JoN
         wao3eN5F0ivP2kMUeetH3ePODc/Zfw/3KvwXb2G24kHvy4Md6/k+aq6Htz+FBDblyTKO
         CL3okn68x/eVtK34Y3azSihVhZtJP0mNfv95y0VwDefwETAireEVauy6wJSlHBtRcK2I
         JFXiCM+tx2I4LlRA0bTPviaUt31bhe/ZNg4u2AxlfQy2iLgFeorQHQkz8YckMWfdFw5H
         Ur9b10uChxPmXSuBD24EmuUQoMOu26SlKdTYdzLrgUdOJALCrpYvoFk4u9a9obPjux99
         0RUw==
X-Forwarded-Encrypted: i=1; AKwUvBzYNfzC/KpwWur1sgM/HbMRhhJuFMvVdN071rwtoQIrVe3pfc8gU4XIQOIhn3QLAh7xja98Wew9vvc=@lists.xen.org
X-Gm-Message-State: APuU4Z+tBu3kUjIXVqqs3jWQNgWWrB/CgUGS/1Db9ppoFLxQiT8eccNr
	zcBtP+sHVQvT3hs895R3BxdYF5KEov3qVzivyGV/JsNgfWZLGjWVVXrM0OZ5Pe9Y5w==
X-Gm-Gg: AYBFou10BsW6S3HvMJcY9RD/My7DsOis7p9Rlhx58ijyCklHvS55XfOh6n0WUR7NTpR
	hOpgpk07TrpD1oADEraw5WYtEBL5B6v8OTBahnzFy1ng9GoFekniIw3KvV+LrKTSMSx1Xx0g8Hu
	jfagnvcxlLU1LKSC4gSANXNmvt5MZDnWxYwOUeqWxOOzp0Q/oZY+WoToj0AJzca/Kk9JNkBfe/H
	te4oDkbR4UNRkzOM1Jk+layoXmAQe/Qd6x0iDKT2fxqnaVgZSju09xSCMDdnd/ABLrtFKmUmPmT
	yfvRw8vW5lshTIUfzU7Rj2hD1mQFdOdXrCI0GbBCFq9ZmBKdeg3VKPgQbzKOuuWuMoDoF01Dsso
	LFxlhv9Br1uxYfbpxNAhpoAPo+wjWIEfDePNaysmoN4HIc4eHEwI56K7wcdcbEjAiQ9xehS4LfO
	Rp2+gkZyhTqCgJVsghiQurvI+elG6/TSvFR6ssYmk1OWnrBTeFPOaE/EAirmgcthw8RgxO0mEOJ
	9BH+HJaUOPC4vdSC9pxAUwD9Syk1Aji09INfKHxbJRLvcYeyiO4n/4AhnQq+KLJ5HlkLz/5Pyk8
	37Xv0CE5ooxbHN0jpm8G60v1q73tYiqplXDHmB40F/APtZwFH+PNpPt6Uk6BJ85lbKdqsGcPKBf
	pL2n0u/MfMLIIPI5VyhgVqitgtH6J6WE+ufAvMg==
X-Received: by 2002:a05:600c:3b88:b0:4a1:cf60:dcc3 with SMTP id 5b1f17b1804b1-4ac187a6ffcmr304436875e9.29.1793699634012;
        Tue, 03 Nov 2026 01:53:54 -0800 (PST)
Message-ID: <e438e9d4-8b9b-43fe-9100-9760709e001a@suse.com>
Date: Tue, 3 Nov 2026 10:53:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG] Xen BUG at mce_amd.c:100 (mc_ec2type) on Zen 3; host left
 wedged, no reboot
To: Peter Deggendorfer <pd@cortex-media.de>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Soham Dandapat <soham.dandapat@amd.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
References: <b9a98b3b-d11e-4463-ac80-4145ca991925@cortex-media.de>
 <e32a3056-c025-4d89-a494-ad7e8b6e2580@citrix.com>
 <b35c6a2f-753c-4691-aa9f-f67f2f7f37ef@cortex-media.de>
 <eff24ce3-bb48-4d2b-993c-65974d3af00e@cortex-media.de>
 <ad48ac1c-176d-407f-87e1-ae303e8eb195@suse.com>
 <8138ed44-727f-45bc-9673-9684e922595b@cortex-media.de>
 <ecfac9d0-eb72-4bb4-8aab-879cfa5dffd9@suse.com>
 <2a44faa9-9a9f-4681-84d6-8267acbec9b0@cortex-media.de>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2a44faa9-9a9f-4681-84d6-8267acbec9b0@cortex-media.de>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793699634-F687577B-EFF1FAFC/10/78276251493
X-purgate-type: spam
X-purgate-size: 2495

On 31.10.2026 14:44, Peter Deggendorfer wrote:
> We now have some data points:
> 
> (XEN) [2026-10-27 13:42:10.588] MCE: CPU2 bank 23 status 0x830824448b48ffff
> (XEN) [2026-10-27 18:19:55.593] MCE: CPU2 bank 23 status 0xffffffffffffffff
> (XEN) [2026-10-27 22:11:10.596] MCE: CPU2 bank 17 status 0xffff832036a40048
> (XEN) [2026-10-27 22:11:10.596] MCE: unknown AMD error code 0x48
> (XEN) [2026-10-28 00:33:55.597] MCE: CPU2 bank 10 status 0xffff82d04022a8af
> (XEN) [2026-10-28 05:26:40.599] MCE: CPU2 bank 17 status 0xffff82d0402408e3
> (XEN) [2026-10-29 23:17:25.618] MCE: CPU2 bank 17 status 0xffff82d04022a8af
> (XEN) [2026-10-30 03:25:10.622] MCE: CPU2 bank 23 status 0xffffffffffffffff
> (XEN) [2026-10-30 10:05:55.625] MCE: CPU2 bank 10 status 0xffffffffffffffff
> (XEN) [2026-10-31 00:58:10.625] MCE: CPU2 bank 17 status 0xffff888100b872e8
> (XEN) [2026-10-31 00:58:10.625] MCE: unknown AMD error code 0x72e8
> (XEN) [2026-10-31 04:17:55.632] MCE: CPU2 bank 23 status 0xffff831f00006000
> (XEN) [2026-10-31 04:17:55.632] MCE: unknown AMD error code 0x6000
> 
> Only 3 of these would have hit the BUG(); the others have UC clear or
> an error code that happens to contain a type bit.
> 
> The values look like pointers rather than status registers:
> 
>    ffff82d040......  Xen text/data -- the prefix of every RIP in my
>                      earlier panic dumps
>    ffff831f........ / ffff8320........  same range as rsp in those
>                      dumps (e.g. ffff831fe6b3fc38, ffff832036a87c38)
>    ffff888100b872e8  dom0 Linux range?
>    ffffffffffffffff  looks like a failed read?
> 
> Two things that make me doubt these are real status values at all:
> 0xffff82d04022a8af appears twice, 47 hours apart, for two different
> banks (10 and 17). And all timestamps are congruent mod 15 seconds,
> i.e. this is the poller hitting it on a small fraction of passes.
> 
> I don't know where the read goes wrong.
> 
> /dev/mcelog records match the log lines one-to-one (same banks,
> same order, all CPU 2), but carry status zero in every case. The record's
> status comes from the second read in mca_init_bank(), before
> mcabank_clear(), so that second read returned 0.

Following this observation of yours I've created a patch to fold those
two reads. I've Cc-ed you on the submission, as I think it may be
worthwhile for you to include that patch for further debugging of the
underlying issue.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:12:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:12:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469405.1678230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBUh-0006ba-6s; Tue, 03 Nov 2026 10:11:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469405.1678230; Tue, 03 Nov 2026 10:11:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBUh-0006bT-4K; Tue, 03 Nov 2026 10:11:55 +0000
Received: by outflank-mailman (input) for mailman id 1469405;
 Tue, 03 Nov 2026 10:11:54 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <chunjie.zhu@citrix.com>) id 1xOBUf-0006b4-Ql
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:11:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBUf-006Fqj-2F
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:11:53 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae9b360-8faa-0a2a0a5109dd-0a2a4502d1c6-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:11:52 +0100
Received: from [52.101.46.39]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <chunjie.zhu@citrix.com>)
 id 6ae9b366-6ca4-0a2a45020019-34652e27ab5a-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:11:52 +0100
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 (2603:10b6:408:37e::6) by IA1PR03MB8192.namprd03.prod.outlook.com
 (2603:10b6:208:59c::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 10:11:48 +0000
Received: from LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902]) by LVXPR03MB989161.namprd03.prod.outlook.com
 ([fe80::f728:f8a9:4e0c:d902%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:11:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=AkaCa4aQRHNDdr3r1Dyw+vsd/MVAbUV9ZPUM/Vt2tnQ2DwM5QNO7EhDSqsGne2RjwxnkBpzmJ+ctq03QH85AdiVOpP1HBOHujQW+wgNIQJD5evlzn+UZkRWOfiSnuLGDijMkDxxgIuVnNJbt6Ob9U2c5x3+o1MSxWmNS/L+tPEoxYDmX/nzl1lbyGVLFOIWwZfOUYQ0IMsKcs7jPOdTR4AZJKOZuLrJgh2ILdAy1/x92R4ITDyUBogwf+SGbGrqGflLvslBxGq4OysVw03AAKReDp32tONDZzhCZtRf7gI5L2Qod5KwhyzfFzQUeF1szQEfw8FxQ57z4faENTLudjA==
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=szakcAnkcLXK90/qg+4gQjsVE0kJ0fKqUUTwi6XSYbA=;
 b=OJdzFDk/56sCCBRcmYH5pSKHqGPhnJayI/sFex89DXLmTHz7d4f+LTj0K/5hqn0pW8swM2SVuPTc712vcsZYBT5inOG+yG4L/UUGV5ilqYfl6dysKgiStk0FwHuRQA2fPPMehFbzzvYDVm6AO0zwMCEz3uhJyehj7qM3vACRRMjJHFAuVEPQyhL0AkBTQK+IXHVjSx/BtPrRLn+PJ/ZYTSGxckLoMFogHnrvXzcnHO7vjYivYVDQwwUzeuZGaT1g5Si0/ts4C1dwAxiaHLtDWeN0OWTyDPlu0Xc8n4r55536G9ZWmWTCt3GrYe3jxvt5qVfCyLsjJ55Qk1uzcLavyg==
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=szakcAnkcLXK90/qg+4gQjsVE0kJ0fKqUUTwi6XSYbA=;
 b=jK89UmgJc/g9U1jpNYjUAx50qWCoA/ZT7f7+3PLZAWGQNP0wZlkqhHYbkhUWQ2Q1S4LESMAH276OoBZB8D7/K9Nz0p/B/EX5BtUIxoayHAM1JUegtiVbtLexw99aUd7yyU+fdzSCpha6VdZaKTyYHT+VCvWfZCFK34SgICgAloM=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: chunjie.zhu@citrix.com
To: ross.lagerwall@citrix.com
Cc: andrew.cooper3@citrix.com,
	chunjie.zhu@citrix.com,
	jason.andryuk@amd.com,
	jbeulich@suse.com,
	roger@xenproject.org,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1] x86/nestedsvm: honour L2's EFLAGS.IF when L1 clears V_INTR_MASKING
Date: Tue,  3 Nov 2026 18:11:34 +0800
Message-Id: <20261103101134.236608-1-chunjie.zhu@citrix.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <CH8PR03MB8274BC92D24DC22A0E41AA63F06E2@CH8PR03MB8274.namprd03.prod.outlook.com>
References: <CH8PR03MB8274BC92D24DC22A0E41AA63F06E2@CH8PR03MB8274.namprd03.prod.outlook.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: JN3P275CA0039.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:ca::12)
 To LVXPR03MB989161.namprd03.prod.outlook.com (2603:10b6:408:37e::6)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: LVXPR03MB989161:EE_|IA1PR03MB8192:EE_
X-MS-Office365-Filtering-Correlation-Id: 0bddc791-c6f7-4405-999b-08df3992dede
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|366016|1800799024|23010399003|11063799006|56012099006|261009223027099003|261022105027099003|261028144727099003|261026121527099003|261026140227099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	dTZDi8gHS+abiLTbViNiyHJH+lEyYLJz3Wgo7c6Xs06cG7g76rgQtuf0vvTTqPX5v5NOiO1kt6SVvh0YP+8TLfCxd9Xqm70bnO6O+JdMv0izPPOujHMb7nJ7l2H4KF8g+TrIjqD0lcq7HM/8YUKEkls0uteRNOfBDGN16Md0AneRM03h//Wh/0/Qt76o4BAQtPGB+X85pX1qPov/059tZjWk764GMwpK8ayn26XHUCpcoNDyDBwDkLsAFvaS3blfVmYtZLuBBUHCPMmRioOFI0nRTpUU5vuLSaXp4hD2RVw+rE8R0lOuNAxdusV5UZOQHAp5wvR9lFCDmCPLFes60iXhUHgAiZVhGiTlCvb24AGJYN+btxeQrxHBg+JubeorZ3972qj7/C7lsKhVlZXfADMAZH/ptV8NFNdTnF+xzdgLfG1SfUnHzGWUOUORaQrwnqGt0Mx/G9v1QmlUNosXQZZzJwfRrFWq0Wb3QmGfkkeRbMG05vB38FazDtZ1P1Qf/Igz1LzKvxO320VdoR5F8Zyvz5JqAQZ8TsEjHBHYkCDmLOXPC0ccZmGgoU9milg/NSQid7NXOVgR6WwODOxgLobIWOmiKWgZvO23Q9cw7mid0+pmTDM1cyVoOESG1XYt+HnQ5KOFRXizXYDJgXwGIbujLj39+1JOXTyQw43VxgM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVXPR03MB989161.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261028144727099003)(261026121527099003)(261026140227099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?iR21toiwOa/aTWiYX7dFdzV+si4bzfEULlVVeUUiif7geAkwApw7YwXBmsks?=
 =?us-ascii?Q?6UzKrtym7zQtpgmAMWOWGKuGDCFHhyuF7ocnnmnM8NWJQCYeoVhqFBpm+XKo?=
 =?us-ascii?Q?zA3Z31R0H4fKzovX/Sel/OFa+vsLEcyW2ECNqkv2Tz5g/ssLxJJCI7iuFbzf?=
 =?us-ascii?Q?0KhsJMPJiKxv1iYy2/zWDxRiacaXuImOy4Rymo/PD62ZmbjjAid+1Nmi74Pg?=
 =?us-ascii?Q?2/SLkhykN50WwDXHx2SzexU7EHwgEgikvK9tMKrq+tUI+eiC1xiGjURsvkTS?=
 =?us-ascii?Q?X6pM8zbpZMOkbuTciXv/MR++vBrsudSIr6Oq6dgK1fiMoaKlKxuyKk+x3/SY?=
 =?us-ascii?Q?190BAVU6mH6wpcb5zRlrRdbeQcg7eLoN/lBwJ6Tz5Cs8jCa+yQqs3PRqc6Fu?=
 =?us-ascii?Q?3l/WT3B/2Hy4lK637FJqReKeglR8I1wfT0thefmM3gJxrxaHzQ07JIkKgBuK?=
 =?us-ascii?Q?b1RA6s6WQzuI0CNP6N8NX4TDE8LU5hJF2mKWZ//8OnByptrI0vtCtuVZ0hos?=
 =?us-ascii?Q?fPgmXZlDXVZRgD3Fs0950j+2Vxnpk7yYo9htseKWu90H3SN3pa35JhPD9agy?=
 =?us-ascii?Q?WXNsSEsVSWvk6SuQdol+n44eXAxsAYEYN7yv4F8lyJdGN2RpmCSqE7g7YX2w?=
 =?us-ascii?Q?llUkKrcO6F7pIuoK6SuJDROrf14PUud4SlnlIEeXKejSAfTYDPVAx/gjfnl8?=
 =?us-ascii?Q?MwIyhOK8iCcp4k8z1HaUdJUeJQ3bZslNwPklUxZCg8XF2moLyXMEZjU9nrsl?=
 =?us-ascii?Q?aLLyHPOq00NpcV+Rhf3zo3f0A8VaOpOrR3xlac160KAGht6yEehhIZWZtlgG?=
 =?us-ascii?Q?q/MR0ZT0R2Vq0J5IpKZgtnKoBXmSGkPsOF5IJ6uyJWvWFrc8E2gZsTaOFRHx?=
 =?us-ascii?Q?WhrgcocO5+XQ9vmcYk/silaSjUrMHRmbkz627ESA4LvJwFqtVlWA2A5Ox+bC?=
 =?us-ascii?Q?H3Y1vBkR6GOwV6gbBET2aUdtvz0TaOmmuDRNx5RIifIX1a0ZzXFATryWka4b?=
 =?us-ascii?Q?3U4zxmHLWa4TkdT1VlV+OO3CrzQNPf2K0wlt+oPHx/KMfMgX0ktTxI2HXk0Y?=
 =?us-ascii?Q?q5FhcMm6X8PZVidC9KZ5zJ4rU1DVCv330bJSLRKsfzW1TRfSRMNsadfEQ9SX?=
 =?us-ascii?Q?o+zUyn2VatzJ+aIgtFdu7qXXu18jX55HmBfjXyQE+dTdoADMjuuT80d+cEVL?=
 =?us-ascii?Q?vz1Q/vfS6XiOCD8wvSu1agdarPRAotyhaTxjNZFF1uu+EYljRFj3VkzWHkCd?=
 =?us-ascii?Q?8QlUG2UoXaa2Zt4DgwX66VNfPXesEpshP50jyqae2DzaRRiB7xcFK1zATUtW?=
 =?us-ascii?Q?e5uMggHu5o+WDqFeCd5qRPUm5nlQLdCf1E+zbTu2lvFkHJ5CMbwq6LZVsHzo?=
 =?us-ascii?Q?tTpsRoVWbqXVGuSZs/WR7uaBmJkdPip/CD7gcHHsbuOX8gNVUbQB2+g3bUYT?=
 =?us-ascii?Q?R7zCse4o8xAJSltoll0P9DEpEjiqU/oG85B83DPzZ7GGr/3qLC9KnIYd4k35?=
 =?us-ascii?Q?RZ4fTEZ9DIek80BK0wWlEcicVOji6WQFMyJzke1/PgGs7J5j10l2/2sDF2aN?=
 =?us-ascii?Q?tsiWJJ7Y0b8oum7TuYq/dBctqLIjwjca+yDkebtgict/7E6LpCcIIsU+IgiE?=
 =?us-ascii?Q?TbaGjFhIjh0gZ+Is3cPAau5sDlQEMXPpj88bb0ZVi6EgwXA41ehOl6/gyanV?=
 =?us-ascii?Q?OW9Tr+45eJETC9X1gck+MQOQeq21FkJGjKU/WAgfSWoPFkBJI420TZe1p3/e?=
 =?us-ascii?Q?CvfKyKI3DQ=3D=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0bddc791-c6f7-4405-999b-08df3992dede
X-MS-Exchange-CrossTenant-AuthSource: LVXPR03MB989161.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 10:11:48.2176
 (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: fO029Kp0utb25bFehcmZDy+tLkRQdjYagZ9KSy5WuEduQXAeCDzFO9GvBWKm+zbgxyU6wCjYATE7BG1i0Ra1OA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR03MB8192
X-purgate-ID: tlsNG-720697/1793700712-66CB22AC-4F459119/0/0
X-purgate-type: clean
X-purgate-size: 1243

On Thu, Oct 29, 2026 at 17:20, Ross Lagerwall wrote:
> Would it not make sense to check this in nsvm_intr_blocked() instead?
> There is already a similar (inverse) check there so extending that seems
> more logical to me.

Thanks for the suggestion, but I think there would be a regression.

nsvm_intr_blocked() has no access to the intack. Per the APM (vol.2,
section 15.21), V_INTR_MASKING controls whether the masking of interrupts
(EFLAGS.IF and TPR) is to be virtualized.  That masking only applies to
maskable external interrupts (PIC/LAPIC/vector).  NMI is not masked by
IF/TPR, and #MC is an exception, so neither is affected.

With the check moved into nsvm_intr_blocked(), an NMI/#MC aimed at L1
would be held pending whenever V_INTR_MASKING=0 and L2's IF is clear,
which would be a regression for L1 hypervisors that intercept NMI/#MC.

So I would prefer to keep the check in the hvm_intsrc_pic/lapic/vector
case of nestedsvm_vcpu_interrupt(), where the source is known.  If you
would rather have it in nsvm_intr_blocked(), I can instead pass the
intack down (changing nhvm_interrupt_blocked()) so that the IF check
is applied to non-NMI/MCE sources only.

Let me know which you prefer.

Regards,
Chunjie


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:29:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:29:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469432.1678248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlZ-0000gm-Tg; Tue, 03 Nov 2026 10:29:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469432.1678248; Tue, 03 Nov 2026 10:29:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlZ-0000gd-QX; Tue, 03 Nov 2026 10:29:21 +0000
Received: by outflank-mailman (input) for mailman id 1469432;
 Tue, 03 Nov 2026 10:29:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOBlY-0000U5-IX
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:29:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBlX-002IsK-VF
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:29:19 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b776-2eae-0a2a0a5409dd-0a2a450c984c-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:19 +0100
Received: from [40.107.130.109]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b77f-f479-0a2a450c0019-286b826df4ef-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:19 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVUPR03MB11404.eurprd03.prod.outlook.com (2603:10a6:150:35b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 10:29:17 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:29:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=xPpa6g66JBP/h715Quk7X0EIFkPH7InETV0f/0Dxwe8PYmYSrlFLM64xYLIMOPFc2+FOFQSxkzz6Oz6dEGO/06M2obmK4O3fjyA7Uh0Cd2jdOXSRdkaZLc5jdMpMRM3pfe/j6kgY01CJt9pOoC5XkYqsqIrLuof+m4RHoOEUk6akLWIIMeCL+6kXRRJMhiCBWLcy4EZK6dM7LYDP/eCExKcKDlnEerY7suiqp/BzdgTe24pjWOvFt1h2O5HQODkndwTrNih/4t4Id6D1HxX0Pfn54FAsPI3IiHa35IOS75kexy+f9Nk3LYy5O53Y6zXGIwhpetmV2wYGEABLKQuGkg==
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=EsXl/aeo0boVRCT0OB9Zheu0UgODdNyiCYv7d8Cc3q0=;
 b=nkvLm4M2uaZHJ/F3OSrF3UwdkQ74JpfPf+8pkLIzabARSVppVrDFv2On+PW7Kxc2FdSuIE1sXLWiZyMeMdOqBGuKFblUwR7BU/x06xYzNX7ubjXOXY3Dp2imod4eRer0DzfcQGEGYMWy1/JggxFZ/inr5wkNIRd2JoaJL1vUOCWmZd/cmXGWSwOoceVtDPixOoabP5GAvaZbYrJFo0TXb1eDo+39Pnqv8tyhade2T74Opklk8iRe0o7UxUy/0sk0s91+dQhhnDgwtfGN+1Xss9IzW3YkZ+L3kiMUu+0mkoSVYgMRxCmXTBaHTYt7qKeZq7vr1NVusOcSqw/Bm4jdng==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=EsXl/aeo0boVRCT0OB9Zheu0UgODdNyiCYv7d8Cc3q0=;
 b=j7HksrrrjkU1lVNAWTaTjJvJcZfW++4gK3+C3EBMaOa3PsTeHIQ+s3SHvjhp0HIledEhyroYfLOLyVxTuuTFzxjVvypCly4e46JVENfD0l7OKAB5QQGMVfRV2QjkrA9Wg96getdWiKY+lkUn2Ykqm3b6olq3SQL0mDR+JOTAOrHNqnCyX9T/QZjZovvnm9Ls9IHEL0OTzuy6nXwCx74DN6236HcOLzY4khLz1RrI+tLNoSY02pYjO61ZriNrc8pfOWNoV3X8/SksR+kHWcTBXT8dxYi7rBwJ2gCBYx5NDCsiKiYODgmLRwbnpyGH0fwaPTFwjxQrwiWmC0nS0Hgl/A==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, Jan
 Beulich <jbeulich@suse.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH 1/4] xen: make stop_machine_run() take const void *
Thread-Topic: [PATCH 1/4] xen: make stop_machine_run() take const void *
Thread-Index: AQHda34uLj3vzse0MkyTNG2xjUiWVg==
Date: Tue, 3 Nov 2026 10:29:17 +0000
Message-ID:
 <60f768b63656cc41b664678618c17248823b2d7c.1793699713.git.dmytro_prokopchuk1@epam.com>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|GVUPR03MB11404:EE_
x-ms-office365-filtering-correlation-id: cb7e9e0b-6902-40ab-cf0c-08df39955096
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|42112799006|6133799003|22082099003|10067099003|3023799007|56012099006|18002099003|261009223027099003|261022075727099003|261102123227099003|261021123027099003|261022105027099003|261021121427099003|5023799004|11063799006|38070700021|261026121527099003|261026140227099003|261028144727099003;
x-microsoft-antispam-message-info:
 2LpJfmGMVN8VHoj5EHnwN38G4vwriZ/AzhTyAvuF5WzVhIsRGGgluu3x3DvkPeJkRDky1Fj02ZIjP69bQjcCTmGdt2bukQUxHThOPqtv/aYyD2uLUimZub5HlhgaBNDaKmIz7CpRnE5Dse3NEuCarpLWgyLksSDHtZd7t2+sQtc12fnKrw3RW2OABvnDn38XYcdo8HHAygqcRsELha8G00wbi1E+PDvF8ai60IGn0yVpCDuveRCzGgG1I8Guh4aavow5JYf6Lw73CfLgiS1ACvqr1+dquNMTQcz6WdkafhQowD7svLrrTPYB8o9miiVif+ekoGpCXt4w6cnrrEY31HSIhBeXvX2ttAE1CTlPFVBuyCCXZf90UEb0SPATQ38gPhtMCz/qt3uTXlwZlZHrhu5JvczaekLBbekp71xXXz5Ur1Si6vJKBgH4DPcOB05oaR6f+tCsll4hU4E3Rk9+8rveX4F9eLXSNqd4PyJMnc1U1iMV3/7iernIi7vB5sSAu8jb/CpnL7UeoItKMyzybqHj7jF9dPOsvyWTwDvS3ekmReEhgF0hp2Qw0EfZ1a0hYpF6dcAf3eiDmPDyWMkT14oDEOMnipMBLGz9K+FU6bTCssZybem5ODoXcP9Zbnd4OCzJIn36qjhCSwKxgW06G358U9fL2cj7IOLh2a5zm3HzzBAN55wgyJOywUXBQWKIK7WSm5FEIfj5qqi3q3fKvuCFnCqEbPCJafaCAraPeMI=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(42112799006)(6133799003)(22082099003)(10067099003)(3023799007)(56012099006)(18002099003)(261009223027099003)(261022075727099003)(261102123227099003)(261021123027099003)(261022105027099003)(261021121427099003)(5023799004)(11063799006)(38070700021)(261026121527099003)(261026140227099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?RmhXenFMOWpsTnNVWG9RTUd1Q3ZLdTBFTHA2amxybzJoSlF3RkZKM1RpY3kz?=
 =?utf-8?B?VmJLbWQxa05hVmVkakF3WG9nWHhSRzZIbWJrRnhkcitRV05ZV2t3SE9jeVM1?=
 =?utf-8?B?N0FhejFxaGI2L1h0YVZTeVJ1R0hwQ25Dd2xzUVppWDRMajJLcy9iN0tWZ25p?=
 =?utf-8?B?Z2NnMEVkOGl6MDMxQWZ0dFpMSjdKRk1HV3VLWjJJbWdpbld1UUxvNlVNeStR?=
 =?utf-8?B?Q3JzL010eEsrRTlHVUZCb2ZRa2R3S0YzbEJUUTZqRG54STZVTWt0RDBrcUho?=
 =?utf-8?B?eFAyZzQyaWVXR0RBRkhkWERJTVVBQXlIOEUvV0E5VU5UUHJVbzZVdEZlcE5O?=
 =?utf-8?B?ajFyWXpjN3ZacjI0Umd2WU1LeWltOFdsYXg3Zmt4Tm1KajJHNWNxRUNKWTc3?=
 =?utf-8?B?ejFkSDdsYVNyV2FXZkQxbUhod0VWUkR4UE9HZXN3YWd5OGhRTi93aisvUzcz?=
 =?utf-8?B?d1p3RkZMVHk4OXg4czY3REFjTkRPZTlqaUhoNDlFVkJWWGp3bTJUWlg1Vmll?=
 =?utf-8?B?a0U4M0NoRzdIWXFZRmd3STB3WmZpRkRwZ2tyczBnUHYwWHRLUW5YeDVOQlZa?=
 =?utf-8?B?QVVPOTRtamN6VjZsQm0wTHBEbE5EOWRSaFR5alhEdHZsRG5wSFFDcXp3TytO?=
 =?utf-8?B?Vy8zM3pmd1lnNUdYQitnK1BIeTdqb3FEdm1RS1ZYMFpwaVpmNnRSS2c3RWpm?=
 =?utf-8?B?MUs0OEQ1TzVlMUtiUzlSNDdnK1VGV0tpeVBYTE14ZVBmSUlaSy94c1I0eXZq?=
 =?utf-8?B?Y2Zvcm50UXYzeE5NUjB0YjdUa0F0NGdiWDJ3dmprZ1pOMVgyVTF1aWFCT2FR?=
 =?utf-8?B?Q2lPMWFscUgxMFh5NmV4aVRKSExtNWIvbzkybDhQQjRwY1cvWGFGK1pRalFy?=
 =?utf-8?B?M1Q4VWs4Vk9pakRzSjJXZ1FGd21zSU9odElacjBBMXRNQTNPOUE1Uk9xTGsz?=
 =?utf-8?B?a0xYNU5jSVp1eFpRU3cvZnFwTWN6NEZLSmNucERNSkNsZkF4VWVzRlRtdU9K?=
 =?utf-8?B?TDUwRGo5M2xieDNmVk9ncVRqODdlVHdyU1ZXYTJ3c04vMWtnYUJZNzQvUkpU?=
 =?utf-8?B?UEppZ3BMc3plbDJBNW5ZVHF2c3JuT3Z0VzdsU0hoMWpFYmJ2Qk93cGhKYU9U?=
 =?utf-8?B?OUdySXdVaUNUUytOUFZySVVLd3RtaXdud0lNdGFvdjJlNUVQWmFUZGZrY0RJ?=
 =?utf-8?B?VXQ1bUJoM0c2c0RjQUI4Ym9HZmxUYWNUeWlEQ1VVTUZFVE0vRzg1SldpMFlY?=
 =?utf-8?B?eVVaZ3E2bHlRUjRkWXJHVXZGYlFSWEtXWG1TYm1sa3RVOVlQUy9Ea2Fwa0R6?=
 =?utf-8?B?b3loK1c1akFsVkd1SitPV2FRZy9GRk5aNm9LQ1Yvc1NXTHMxV090QWpocjNY?=
 =?utf-8?B?ZjhMR2NwMGF2WWNva1RmaWFxT2NFYkZLZGRRYmd0UUx4SlVLb1VrR1lra3kw?=
 =?utf-8?B?K21KdStxK09rbEcyenlZNHRrR1EwVzU0dDZuTmhpK0tmRlQ2TWhkcGNueTJR?=
 =?utf-8?B?YTM2bjZpdk5pb3I5ZFV0QlZlNVArZ1g4R01jK2Zpem9ZYzZwWFlGYWdzTWJo?=
 =?utf-8?B?UTl5ZGlvRVhaN2ZsQ0NYbWhuYTBheU1DQkhoc0dFcCtBUFNwNHA2Yk82YnpV?=
 =?utf-8?B?cEZueVdZanR6YVNoZWpNdi94ajUwMHErR3ZBWEJNL08rU2hhTDlrU0FkTjgv?=
 =?utf-8?B?a1ZMK3ZEWEd2UjROazVKRFhINjY4aTVpTkxuOEVNNTFualZWUzFFUVQvV3Q0?=
 =?utf-8?B?a1g4QWZiSE1SYjNjeEFWWmpZLzgrb1l3SzZYdVdwTVpSdTZVMW9JYXZjcEM4?=
 =?utf-8?B?eFY1Y2JHMjNudzBFakNqaW9TRnJLOTZyRWhUeDNybWVxSjZiYk0wUjZTZXRL?=
 =?utf-8?B?cVZEajdmUXdjN3AxQ3dTQnJMTysvOGgzbUFEWTd4QjZXNXZlenFlUCtEblR6?=
 =?utf-8?B?bHYxTEp0RzV5SVhXVVh0Q2w2T0xpMm1ZMWxtWjV2UzRiazhPb0VDNW1reUJ3?=
 =?utf-8?B?TXBUVndtZGpiUkNqK2hiZDJsTkFXMlR3ZGVuSHhCUmovWVdWeHUxczg1V0do?=
 =?utf-8?B?aEZUMldYdm9yRXd6V1hYakt3ZVRVTlZuVmhjekNnNlJQMURkbFdqb0IvSTNM?=
 =?utf-8?B?UHErWlIzQ2ZncDJRQ0V4cTRiQlZkdUlvbGpKckd3N0grVnB0VEJKRm5xWmFl?=
 =?utf-8?B?dXphbmhkRTcvZ1pFUzJ2MmxzdGhMNnAvcmxTbTBQOTNqOGg5cjIvVkxmYXcx?=
 =?utf-8?B?bmtsekJZalJxbTFxWm9TRGdGQm5DbnBIWGxYU0ZBKzhXT0lxeVdHSGI3cFpY?=
 =?utf-8?B?dXNPekR1aVB6K29vQTNNWG45dk5ZT2R4RU43MWExbnRrc1NjdnhTb3V5SnFE?=
 =?utf-8?Q?RqNL/meIIxooNoEQ=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cb7e9e0b-6902-40ab-cf0c-08df39955096
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:29:17.4529
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: sLlddjactotyrzfbdscIrNSo0UTTGvhLk03kqwRkJd8bABluWIhV/mqD0sFBbr4XSYaLXQqG2qQX9u86aRNnjl4YMig8+LWT54ILMf6o4bM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVUPR03MB11404
X-purgate-ID: tlsNG-d25034/1793701759-026DEA5B-13EF577B/0/0
X-purgate-type: clean
X-purgate-size: 11734

TUlTUkEgQyBSdWxlIDExLjggZm9yYmlkcyBjYXN0cyB0aGF0IHJlbW92ZSB0aGUgY29uc3QgcXVh
bGlmaWVyIGZyb20NCnRoZSBwb2ludGVkLXRvIHR5cGUuIE9uIEFybSwgZW5hYmxlX2NwdV9jYXBh
YmlsaXRpZXMoKSBhbmQNCmVuYWJsZV9ub25ib290X2NwdV9jYXBzKCkgY2FzdCBhIGNvbnN0IHN0
cnVjdCBhcm1fY3B1X2NhcGFiaWxpdGllcw0KcG9pbnRlciB0byB2b2lkICogc28gdGhhdCBpdCBj
YW4gYmUgcGFzc2VkIHRvIHRoZSBjYXBhYmlsaXR5IGVuYWJsZQ0KY2FsbGJhY2ssIGVpdGhlciBk
aXJlY3RseSBvciB0aHJvdWdoIHN0b3BfbWFjaGluZV9ydW4oKS4NCg0KTm9uZSBvZiB0aGUgc3Rv
cF9tYWNoaW5lX3J1bigpIGNhbGxiYWNrcyBtb2RpZnkgdGhlIGRhdGEgdGhleSBhcmUNCmdpdmVu
LiBNYWtlIHN0b3BfbWFjaGluZV9ydW4oKSBhbmQgaXRzIGNhbGxiYWNrIHR5cGUgdGFrZSBjb25z
dCB2b2lkICosDQphbmQgdXBkYXRlIHRoZSBjYWxsYmFja3MgdG8gbWF0Y2g6DQoNCiAtIHRoZSBB
cm0gY2FwYWJpbGl0eSBlbmFibGUgaG9vayBhbmQgaXRzIGltcGxlbWVudGF0aW9ucw0KICAgKGVu
YWJsZV9zbWNjY19hcmNoX3dvcmthcm91bmRfMSgpLCBlbmFibGVfc3BlY3RyZV9iaGJfd29ya2Fy
b3VuZCgpLA0KICAgZW5hYmxlX2JwX2ludl9oYXJkZW5pbmcoKSBhbmQgZW5hYmxlX2ljX2ludl9o
YXJkZW5pbmcoKSksDQogLSBfX2FwcGx5X2FsdGVybmF0aXZlc19tdWx0aV9zdG9wKCkgb24gQXJt
LA0KIC0gZG9fbWljcm9jb2RlX3VwZGF0ZSgpIG9uIHg4NiwNCiAtIHRha2VfY3B1X2Rvd24oKSBp
biBjb21tb24gY29kZS4NCg0KVGhpcyBhbGxvd3MgdGhlIGNhc3RzIGluIGNwdWZlYXR1cmUuYyB0
byBiZSBkcm9wcGVkLg0KDQp0YWtlX2NwdV9kb3duKCkgaXMgYWx3YXlzIGludm9rZWQgd2l0aCBO
VUxMLCBzbyBpdCBub3cgcGFzc2VzIE5VTEwgdG8NCl90YWtlX2NwdV9kb3duKCkgZXhwbGljaXRs
eS4gX3Rha2VfY3B1X2Rvd24oKSBrZWVwcyBpdHMgdm9pZCAqIGFyZ3VtZW50DQpiZWNhdXNlIGl0
IGlzIGFsc28gdXNlZCBhcyBhbiBvbl9zZWxlY3RlZF9jcHVzKCkgY2FsbGJhY2suDQoNCk5vIGZ1
bmN0aW9uYWwgY2hhbmdlcy4NCg0KU2lnbmVkLW9mZi1ieTogRG15dHJvIFByb2tvcGNodWsgPGRt
eXRyb19wcm9rb3BjaHVrMUBlcGFtLmNvbT4NCi0tLQ0KIHhlbi9hcmNoL2FybS9hbHRlcm5hdGl2
ZS5jICAgICAgICAgICAgfCA0ICsrLS0NCiB4ZW4vYXJjaC9hcm0vY3B1ZXJyYXRhLmMgICAgICAg
ICAgICAgIHwgOCArKysrLS0tLQ0KIHhlbi9hcmNoL2FybS9jcHVmZWF0dXJlLmMgICAgICAgICAg
ICAgfCA0ICsrLS0NCiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIHwgMiAr
LQ0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYyAgICAgfCA0ICsrLS0NCiB4ZW4v
Y29tbW9uL2NwdS5jICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tDQogeGVuL2NvbW1vbi9z
dG9wX21hY2hpbmUuYyAgICAgICAgICAgICB8IDcgKysrKy0tLQ0KIHhlbi9pbmNsdWRlL3hlbi9z
dG9wX21hY2hpbmUuaCAgICAgICAgfCA1ICsrKy0tDQogOCBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNl
cnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9h
bHRlcm5hdGl2ZS5jIGIveGVuL2FyY2gvYXJtL2FsdGVybmF0aXZlLmMNCmluZGV4IDQ0YjVlMDk3
MzIuLmUxN2I1ZDZlOGEgMTAwNjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vYWx0ZXJuYXRpdmUuYw0K
KysrIGIveGVuL2FyY2gvYXJtL2FsdGVybmF0aXZlLmMNCkBAIC0xNjAsNyArMTYwLDcgQEAgc3Rh
dGljIGludCBfX2FwcGx5X2FsdGVybmF0aXZlcyhjb25zdCBzdHJ1Y3QgYWx0X3JlZ2lvbiAqcmVn
aW9uLA0KICAqIFdlIG1pZ2h0IGJlIHBhdGNoaW5nIHRoZSBzdG9wX21hY2hpbmUgc3RhdGUgbWFj
aGluZSwgc28gaW1wbGVtZW50IGENCiAgKiByZWFsbHkgc2ltcGxlIHBvbGxpbmcgcHJvdG9jb2wg
aGVyZS4NCiAgKi8NCi1zdGF0aWMgaW50IF9fYXBwbHlfYWx0ZXJuYXRpdmVzX211bHRpX3N0b3Ao
dm9pZCAqeGVubWFwKQ0KK3N0YXRpYyBpbnQgX19hcHBseV9hbHRlcm5hdGl2ZXNfbXVsdGlfc3Rv
cChjb25zdCB2b2lkICp4ZW5tYXApDQogew0KICAgICBzdGF0aWMgaW50IHBhdGNoZWQgPSAwOw0K
IA0KQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgaW50IF9fYXBwbHlfYWx0ZXJuYXRpdmVzX211
bHRpX3N0b3Aodm9pZCAqeGVubWFwKQ0KICAgICAgICAgcmVnaW9uLmJlZ2luID0gX19hbHRfaW5z
dHJ1Y3Rpb25zOw0KICAgICAgICAgcmVnaW9uLmVuZCA9IF9fYWx0X2luc3RydWN0aW9uc19lbmQ7
DQogDQotICAgICAgICByZXQgPSBfX2FwcGx5X2FsdGVybmF0aXZlcygmcmVnaW9uLCB4ZW5tYXAg
LSAodm9pZCAqKV9zdGFydCk7DQorICAgICAgICByZXQgPSBfX2FwcGx5X2FsdGVybmF0aXZlcygm
cmVnaW9uLCB4ZW5tYXAgLSAoY29uc3Qgdm9pZCAqKV9zdGFydCk7DQogICAgICAgICAvKiBUaGUg
cGF0Y2hpbmcgaXMgbm90IGV4cGVjdGVkIHRvIGZhaWwgZHVyaW5nIGJvb3QuICovDQogICAgICAg
ICBCVUdfT04ocmV0ICE9IDApOw0KIA0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9jcHVlcnJh
dGEuYyBiL3hlbi9hcmNoL2FybS9jcHVlcnJhdGEuYw0KaW5kZXggMzVhZDk4ZDI5ZC4uMDMwMzA0
ZmJkOCAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9jcHVlcnJhdGEuYw0KKysrIGIveGVuL2Fy
Y2gvYXJtL2NwdWVycmF0YS5jDQpAQCAtMTU2LDcgKzE1Niw3IEBAIGV4dGVybiBjaGFyIF9fbWl0
aWdhdGVfc3BlY3RyZV9iaGJfbG9vcF9zdGFydF8yNFtdLA0KIGV4dGVybiBjaGFyIF9fbWl0aWdh
dGVfc3BlY3RyZV9iaGJfbG9vcF9zdGFydF8zMltdLA0KICAgICAgICAgICAgIF9fbWl0aWdhdGVf
c3BlY3RyZV9iaGJfbG9vcF9lbmRfMzJbXTsNCiANCi1zdGF0aWMgaW50IGVuYWJsZV9zbWNjY19h
cmNoX3dvcmthcm91bmRfMSh2b2lkICpkYXRhKQ0KK3N0YXRpYyBpbnQgZW5hYmxlX3NtY2NjX2Fy
Y2hfd29ya2Fyb3VuZF8xKGNvbnN0IHZvaWQgKmRhdGEpDQogew0KICAgICBzdHJ1Y3QgYXJtX3Nt
Y2NjX3JlcyByZXM7DQogICAgIGNvbnN0IHN0cnVjdCBhcm1fY3B1X2NhcGFiaWxpdGllcyAqZW50
cnkgPSBkYXRhOw0KQEAgLTIwNyw3ICsyMDcsNyBAQCB3YXJuOg0KICAqICAgdGhlIENQVSkuDQog
ICogLSBNaXRpZ2F0aW5nIHVzaW5nIHRoZSBmaXJtd2FyZS4NCiAgKi8NCi1zdGF0aWMgaW50IGVu
YWJsZV9zcGVjdHJlX2JoYl93b3JrYXJvdW5kKHZvaWQgKmRhdGEpDQorc3RhdGljIGludCBlbmFi
bGVfc3BlY3RyZV9iaGJfd29ya2Fyb3VuZChjb25zdCB2b2lkICpkYXRhKQ0KIHsNCiAgICAgY29u
c3Qgc3RydWN0IGFybV9jcHVfY2FwYWJpbGl0aWVzICplbnRyeSA9IGRhdGE7DQogDQpAQCAtMzE0
LDE0ICszMTQsMTQgQEAgaW5zdGFsbF9icF9oYXJkZW5pbmdfdmVjcyhjb25zdCBzdHJ1Y3QgYXJt
X2NwdV9jYXBhYmlsaXRpZXMgKmVudHJ5LA0KICAgICB0aGlzX2NwdShicF9oYXJkZW5fdmVjcykg
PSBoeXBfdmVjczsNCiB9DQogDQotc3RhdGljIGludCBlbmFibGVfYnBfaW52X2hhcmRlbmluZyh2
b2lkICpkYXRhKQ0KK3N0YXRpYyBpbnQgZW5hYmxlX2JwX2ludl9oYXJkZW5pbmcoY29uc3Qgdm9p
ZCAqZGF0YSkNCiB7DQogICAgIGluc3RhbGxfYnBfaGFyZGVuaW5nX3ZlY3MoZGF0YSwgaHlwX3Ry
YXBzX3ZlY3Rvcl9icF9pbnYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN1
dGUgQlBJQUxMIik7DQogICAgIHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgaW50IGVuYWJsZV9p
Y19pbnZfaGFyZGVuaW5nKHZvaWQgKmRhdGEpDQorc3RhdGljIGludCBlbmFibGVfaWNfaW52X2hh
cmRlbmluZyhjb25zdCB2b2lkICpkYXRhKQ0KIHsNCiAgICAgaW5zdGFsbF9icF9oYXJkZW5pbmdf
dmVjcyhkYXRhLCBoeXBfdHJhcHNfdmVjdG9yX2ljX2ludiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhlY3V0ZSBJQ0lBTExVIik7DQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt
L2NwdWZlYXR1cmUuYyBiL3hlbi9hcmNoL2FybS9jcHVmZWF0dXJlLmMNCmluZGV4IDhkOGNkMTlh
OTYuLjcwMTIzMmZlMDEgMTAwNjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vY3B1ZmVhdHVyZS5jDQor
KysgYi94ZW4vYXJjaC9hcm0vY3B1ZmVhdHVyZS5jDQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIF9f
aW5pdCBlbmFibGVfY3B1X2NhcGFiaWxpdGllcyhjb25zdCBzdHJ1Y3QgYXJtX2NwdV9jYXBhYmls
aXRpZXMgKmNhcHMpDQogICAgICAgICAgICAgICogYW4gSVBJLCBnaXZpbmcgdXMgYSBQU1RBVEUg
dGhhdCBkaXNhcHBlYXJzIHdoZW4gd2UNCiAgICAgICAgICAgICAgKiByZXR1cm4uDQogICAgICAg
ICAgICAgICovDQotICAgICAgICAgICAgcmV0ID0gc3RvcF9tYWNoaW5lX3J1bihjYXBzLT5lbmFi
bGUsICh2b2lkICopY2FwcywgTlJfQ1BVUyk7DQorICAgICAgICAgICAgcmV0ID0gc3RvcF9tYWNo
aW5lX3J1bihjYXBzLT5lbmFibGUsIGNhcHMsIE5SX0NQVVMpOw0KICAgICAgICAgICAgIC8qIHN0
b3BfbWFjaGluZV9ydW4gc2hvdWxkIG5ldmVyIGZhaWwgYXQgdGhpcyBzdGFnZSBvZiB0aGUgYm9v
dC4gKi8NCiAgICAgICAgICAgICBCVUdfT04ocmV0KTsNCiAgICAgICAgIH0NCkBAIC0xMDgsNyAr
MTA4LDcgQEAgaW50IGVuYWJsZV9ub25ib290X2NwdV9jYXBzKGNvbnN0IHN0cnVjdCBhcm1fY3B1
X2NhcGFiaWxpdGllcyAqY2FwcykNCiANCiAgICAgICAgIGlmICggY2Fwcy0+ZW5hYmxlICkNCiAg
ICAgICAgIHsNCi0gICAgICAgICAgICBpbnQgcmV0ID0gY2Fwcy0+ZW5hYmxlKCh2b2lkICopY2Fw
cyk7DQorICAgICAgICAgICAgaW50IHJldCA9IGNhcHMtPmVuYWJsZShjYXBzKTsNCiANCiAgICAg
ICAgICAgICBpZiAoIHJldCApDQogICAgICAgICAgICAgICAgIHJjID0gcmV0Ow0KZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmggYi94ZW4vYXJjaC9hcm0v
aW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oDQppbmRleCBjNTU0Njg2NDE1Li41M2FmZDFjYTVjIDEw
MDY0NA0KLS0tIGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaA0KKysrIGIv
eGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaA0KQEAgLTEyMyw3ICsxMjMsNyBA
QCBzdHJ1Y3QgYXJtX2NwdV9jYXBhYmlsaXRpZXMgew0KICAgICBjb25zdCBjaGFyICpkZXNjOw0K
ICAgICB1MTYgY2FwYWJpbGl0eTsNCiAgICAgYm9vbCAoKm1hdGNoZXMpKGNvbnN0IHN0cnVjdCBh
cm1fY3B1X2NhcGFiaWxpdGllcyAqZW50cnkpOw0KLSAgICBpbnQgKCplbmFibGUpKHZvaWQgKmRh
dGEpOyAvKiBDYWxsZWQgb24gZXZlcnkgYWN0aXZlIENQVXMgKi8NCisgICAgaW50ICgqZW5hYmxl
KShjb25zdCB2b2lkICpkYXRhKTsgLyogQ2FsbGVkIG9uIGV2ZXJ5IGFjdGl2ZSBDUFVzICovDQog
ICAgIHVuaW9uIHsNCiAgICAgICAgIHN0cnVjdCB7ICAgIC8qIFRvIGJlIHVzZWQgZm9yIGVyYXR1
bSBoYW5kbGluZyBvbmx5ICovDQogICAgICAgICAgICAgdTMyIG1pZHJfbW9kZWw7DQpkaWZmIC0t
Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jIGIveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvY29yZS5jDQppbmRleCA5YjhkMWUwOWNiLi5kZDk4NGZjOTIzIDEwMDY0NA0K
LS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jDQorKysgYi94ZW4vYXJjaC94
ODYvY3B1L21pY3JvY29kZS9jb3JlLmMNCkBAIC00NTcsMTEgKzQ1NywxMSBAQCBzdGF0aWMgaW50
IGNvbnRyb2xfdGhyZWFkX2ZuKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoLA0K
ICAgICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgaW50IGNmX2NoZWNrIGRvX21pY3JvY29k
ZV91cGRhdGUodm9pZCAqX3BhdGNoX3dpdGhfZmxhZ3MpDQorc3RhdGljIGludCBjZl9jaGVjayBk
b19taWNyb2NvZGVfdXBkYXRlKGNvbnN0IHZvaWQgKl9wYXRjaF93aXRoX2ZsYWdzKQ0KIHsNCiAg
ICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCiAgICAgaW50IHJldDsN
Ci0gICAgc3RydWN0IHBhdGNoX3dpdGhfZmxhZ3MgKnBhdGNoX3dpdGhfZmxhZ3MgPSBfcGF0Y2hf
d2l0aF9mbGFnczsNCisgICAgY29uc3Qgc3RydWN0IHBhdGNoX3dpdGhfZmxhZ3MgKnBhdGNoX3dp
dGhfZmxhZ3MgPSBfcGF0Y2hfd2l0aF9mbGFnczsNCiANCiAgICAgLyoNCiAgICAgICogVGhlIGNv
bnRyb2wgdGhyZWFkIHNldCBzdGF0ZSB0byBjb29yZGluYXRlIHVjb2RlIGxvYWRpbmcuIFByaW1h
cnkNCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2NwdS5jIGIveGVuL2NvbW1vbi9jcHUuYw0KaW5k
ZXggZjA5YWYwNDQ0Yi4uYzg2ODk5YjRjMCAxMDA2NDQNCi0tLSBhL3hlbi9jb21tb24vY3B1LmMN
CisrKyBiL3hlbi9jb21tb24vY3B1LmMNCkBAIC0xMDEsOSArMTAxLDkgQEAgc3RhdGljIHZvaWQg
Y2ZfY2hlY2sgX3Rha2VfY3B1X2Rvd24odm9pZCAqdW51c2VkKQ0KICAgICBfX2NwdV9kaXNhYmxl
KCk7DQogfQ0KIA0KLXN0YXRpYyBpbnQgY2ZfY2hlY2sgdGFrZV9jcHVfZG93bih2b2lkICphcmcp
DQorc3RhdGljIGludCBjZl9jaGVjayB0YWtlX2NwdV9kb3duKGNvbnN0IHZvaWQgKnVudXNlZCkN
CiB7DQotICAgIF90YWtlX2NwdV9kb3duKGFyZyk7DQorICAgIF90YWtlX2NwdV9kb3duKE5VTEwp
Ow0KICAgICByZXR1cm4gMDsNCiB9DQogDQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zdG9wX21h
Y2hpbmUuYyBiL3hlbi9jb21tb24vc3RvcF9tYWNoaW5lLmMNCmluZGV4IDM5OGNmZDUwN2MuLjM4
MDkxZWZmNTAgMTAwNjQ0DQotLS0gYS94ZW4vY29tbW9uL3N0b3BfbWFjaGluZS5jDQorKysgYi94
ZW4vY29tbW9uL3N0b3BfbWFjaGluZS5jDQpAQCAtNDYsOCArNDYsOCBAQCBzdHJ1Y3Qgc3RvcG1h
Y2hpbmVfZGF0YSB7DQogDQogICAgIHVuc2lnbmVkIGludCBmbl9jcHU7DQogICAgIGludCBmbl9y
ZXN1bHQ7DQotICAgIGludCAoKmZuKSh2b2lkICpkYXRhKTsNCi0gICAgdm9pZCAqZm5fZGF0YTsN
CisgICAgaW50ICgqZm4pKGNvbnN0IHZvaWQgKmRhdGEpOw0KKyAgICBjb25zdCB2b2lkICpmbl9k
YXRhOw0KIH07DQogDQogc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCB0YXNrbGV0LCBzdG9w
bWFjaGluZV90YXNrbGV0KTsNCkBAIC03Myw3ICs3Myw4IEBAIHN0YXRpYyB2b2lkIHN0b3BtYWNo
aW5lX3dhaXRfc3RhdGUodm9pZCkNCiAgKiBtYW5kYXRvcnkgdG8gYmUgY2FsbGVkIG9ubHkgb24g
YW4gaWRsZSB2Y3B1LCBhcyBvdGhlcndpc2UgYWN0aXZlIGNvcmUNCiAgKiBzY2hlZHVsaW5nIG1p
Z2h0IGhhbmcuDQogICovDQotaW50IHN0b3BfbWFjaGluZV9ydW4oaW50ICgqZm4pKHZvaWQgKmRh
dGEpLCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgY3B1KQ0KK2ludCBzdG9wX21hY2hpbmVfcnVu
KGludCAoKmZuKShjb25zdCB2b2lkICpkYXRhKSwgY29uc3Qgdm9pZCAqZGF0YSwNCisgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQ0KIHsNCiAgICAgdW5zaWduZWQgaW50IGks
IG5yX2NwdXM7DQogICAgIHVuc2lnbmVkIGludCB0aGlzID0gc21wX3Byb2Nlc3Nvcl9pZCgpOw0K
ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zdG9wX21hY2hpbmUuaCBiL3hlbi9pbmNsdWRl
L3hlbi9zdG9wX21hY2hpbmUuaA0KaW5kZXggMGJiZjcxZjExMi4uOTA1YjlhZjBmNSAxMDA2NDQN
Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zdG9wX21hY2hpbmUuaA0KKysrIGIveGVuL2luY2x1ZGUv
eGVuL3N0b3BfbWFjaGluZS5oDQpAQCAtNCw3ICs0LDcgQEANCiAvKioNCiAgKiBzdG9wX21hY2hp
bmVfcnVuOiBmcmVlemUgdGhlIG1hY2hpbmUgb24gYWxsIENQVXMgYW5kIHJ1biB0aGlzIGZ1bmN0
aW9uDQogICogQGZuOiB0aGUgZnVuY3Rpb24gdG8gcnVuDQotICogQGRhdGE6IHRoZSBkYXRhIHB0
ciBmb3IgdGhlIEBmbigpDQorICogQGRhdGE6IHJlYWQtb25seSBhcmd1bWVudCBwYXNzZWQgdG8g
QGZuKCkNCiAgKiBAY3B1OiB0aGUgY3B1IHRvIHJ1biBAZm4oKSBvbiAob3IgYWxsLCBpZiBAY3B1
ID09IE5SX0NQVVMpLg0KICAqDQogICogRGVzY3JpcHRpb246IFRoaXMgY2F1c2VzIGV2ZXJ5IG90
aGVyIGNwdSB0byBlbnRlciBhIHNhZmUgcG9pbnQsIHdpdGgNCkBAIC0xNCw2ICsxNCw3IEBADQog
ICoNCiAgKiBUaGlzIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgdmVyeSBoZWF2eSB3cml0ZSBsb2Nr
LCBlcXVpdmFsZW50IHRvDQogICogZ3JhYmJpbmcgZXZlcnkgc3BpbmxvY2sgaW4gdGhlIGtlcm5l
bC4gKi8NCi1pbnQgc3RvcF9tYWNoaW5lX3J1bihpbnQgKCpmbikodm9pZCAqZGF0YSksIHZvaWQg
KmRhdGEsIHVuc2lnbmVkIGludCBjcHUpOw0KK2ludCBzdG9wX21hY2hpbmVfcnVuKGludCAoKmZu
KShjb25zdCB2b2lkICpkYXRhKSwgY29uc3Qgdm9pZCAqZGF0YSwNCisgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY3B1KTsNCiANCiAjZW5kaWYgLyogX19YRU5fU1RPUF9NQUNISU5F
X0hfXyAqLw0KLS0gDQoyLjQzLjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:29:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:29:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469431.1678239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlY-0000UD-J0; Tue, 03 Nov 2026 10:29:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469431.1678239; Tue, 03 Nov 2026 10:29:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlY-0000U6-GA; Tue, 03 Nov 2026 10:29:20 +0000
Received: by outflank-mailman (input) for mailman id 1469431;
 Tue, 03 Nov 2026 10:29:19 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOBlX-0000Ty-80
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:29:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBlW-006iIf-DQ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:29:18 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b77c-8faa-0a2a0a5109dd-0a2a450becc6-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:18 +0100
Received: from [52.101.69.74]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b77d-b7e8-0a2a450b0019-3465454a5744-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:18 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVUPR03MB11404.eurprd03.prod.outlook.com (2603:10a6:150:35b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 10:29:15 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:29:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=jepu+NwZbUm2HCnTqSskwC4HTKhQrfGxHYQAKlayMouon4llrif/p8gCn8jebljZLQ2RcIcM5Ri5t18oiE2jU3K9ByPKrreGUJi/z/XcXo8n1twONPkfuHJ9IvN7mn5RE1gOUCQjFTefst6I2AvnnSZJ2gWMMWcqjtW7JVf5DYbsk/P7I7nnMRU0sOpE+y2Vpu6jYvWVVKB5qTeLZRx2oKSsd+CA4N8jovEUxb19xJrjE7tSH6J0sd3Bq+/tV1G6C/T0hg9NtEAIKYjetfkn0WsRQgkL30ICoWmLRiXxvvdqjk5aVewR5f4XECJjF5hVHh+CDVs+uML3BGkM7GPHEA==
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=s7RawEqNR4EeE0XVmRpP8Agh0nsUlJTSg8eEocl3PtE=;
 b=hoUv5ZSHyp9F90sjq0/7BIxSilcIm1mM6c7payBLsFBCeKBaPDEL3k3+41avXSKU/4cLRofY7wc124HsJoHaQTxBv0jBO/9+Z7rV9J0HfLzLLQxbV0yCr0GBxEhYKk94jjekg+L44kiUU37UCI6Ulr0DB1j+kjIKN2rPfoANuY3gczMXKfOiVJb/PJttvv0QpwBXOJOs5yCD9YuVvLReflBkqefqDBhSozbp6uIsUKjg4oRMoGhvg1Jlx45yxDLtLSyFzbH8b5jnLj+M1HlujfylIFQrWL0W1+6X48kmb0PLQfnL52lXmazgOW3Ph0lCLHs8yp+osLmLwbCpvESNMA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=s7RawEqNR4EeE0XVmRpP8Agh0nsUlJTSg8eEocl3PtE=;
 b=NUqZ2ALt2eq9+tPMZVqxF55H5HWLAUrSf8jD31XphYvx9/saGzqRnluYwsNcEHsIjpneE0ON25e3yWLpGtakonYHrl6vX2PvxxjWGGZT1XLaLv+Rthittd5dA8MIUindENpTDRoq9WKt+b6HWBCU5M/K35vhwX8JUNPdwvHLsPNabETH3TcseGrXdWVPrcC3MAtmFpk3z5rU+ET2TUyTxlgSeXv5BcpdxaIMO2idGioA43KifMrAZv4ej1h6iz1UyY4uRj6cca3OCI7B+KlYUwXO6n/WIo+/abtzuUHjdK9Vg3xVoNSmSvJ/4GBEyl1c4y62cyK5uU5EA2KbVLInVA==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, Jan
 Beulich <jbeulich@suse.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Nicola Vetrini
	<nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 0/4] xen: address MISRA C Rule 11.8 violations
Thread-Topic: [PATCH 0/4] xen: address MISRA C Rule 11.8 violations
Thread-Index: AQHda34svJNUpbDbMki9nKAlagRptw==
Date: Tue, 3 Nov 2026 10:29:15 +0000
Message-ID: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|GVUPR03MB11404:EE_
x-ms-office365-filtering-correlation-id: 0c83b23f-1ad9-4783-2bc1-08df39954f6d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|42112799006|260925021311599003|260925022911599003|260925021911599003|10067099003|56012099006|18002099003|261009223027099003|261102123227099003|261021123027099003|261022105027099003|261021121427099003|11063799006|38070700021|261026121527099003|261026140227099003|261028144727099003;
x-microsoft-antispam-message-info:
 qNDDj17Sutm4k3jTPjOr3B046fbi7v9/nav7BBJ59WnoNTjMnFPiGlroZFB4jurzu2/VOmVro8o/yHcFsAo5DjTQrfHJnKGy8Gt6gT63CHmg7tjVgfCSYyMDz8hIm8skSNDBtaiIC+GjiQMbXPkJCRO8xBTFfwv5aLF0qvo3oC6uUyouZ9wJJ//EWFqaTRCxRKhVIvuOGvv5M5N7KbaBpua7M+BHI69dmMv33s+8B/H7xsslt9xM+OmSq/6g5PJBCRAn/svpYs6WcNofSEqVDmj+0p5IqQkaLRCfO6pMXH60vQEYg8cYh+ZTAYwxFK6dx+/Wk24fNGF3jAoAOQ2hXzzpS3llAJkUfbU4fwXyVSMdaZ43KV2zN9ZvCljdBJeNJkJvlCOr8+XPi89I2BBD4wmj6xWFz40xnCukWwm9eDJvL8J7/2SLoS/K7/lk/swMtW/i5TQyBlqGHwrI1gRkvPBIwVzl8Z0DPAmqyn5Og/MHl9XIz9hkgiePhr4g7JUG2Dxj2+dgMezV4h/8SelDd5K9giM/iP7pBz391Fn2IjcOPhJoR3COd0bfDpWJug8012xZScCNz70fwWVUbu7zkN6U/OPtdjUa3ae/j55qjm/d4bFLsjjL8h0jun4mTUyUvPdbKhYC6VI4MngK4ec/vgDA+fLaV8ExxLVkbVNGtIyjfgJ8gVtSQyQTVXIC3M05bv7MYWU5N0TABcLaWyXnQgmqskCP1uWASBS6J7kjX04=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(42112799006)(260925021311599003)(260925022911599003)(260925021911599003)(10067099003)(56012099006)(18002099003)(261009223027099003)(261102123227099003)(261021123027099003)(261022105027099003)(261021121427099003)(11063799006)(38070700021)(261026121527099003)(261026140227099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?eXJXbko4NnlmViswbmt5MFhOQUpzYTFHRzB0aEZ2RjV1eDVmZ1RKUktkc0lR?=
 =?utf-8?B?dUgwWXBYV2tNMnR3YXhOUjE2OFRuV1RwQi8wdWxZbFN2MElFTW5aTDRlczQ1?=
 =?utf-8?B?KzhpYUJkMURDeTBzWGl0aTIrTyszRTVuYTFDNVZybURuOWk3aHpKOUY5cGxL?=
 =?utf-8?B?ZXBXMFpxSWJXSzkyb1dJUkltbnphV3NuNFBiMHB5YzlDWDVqQzFoMFYySGhG?=
 =?utf-8?B?eGRrcHU4TjJQeHRvVVdFRitleVJVSU5BbmRUdC9OeERTWlhtUGJpZVBVZFVV?=
 =?utf-8?B?U3dSeUhSeW1oMVZsNldiaVFVeWV6aEk3V2xpQ1JFYWVZenJ2bFY4cU5Ga1Nh?=
 =?utf-8?B?Rm0yUmFtWjVhR1RyQlVMRU4xdmFiYzJHUkVsSDIwcjZjVFFGdyt5QjFoM3RZ?=
 =?utf-8?B?RWh6cTZ2VHRIYmhodEtMTDZxWFkxN3RFQXZlUW1oR3BGYnZMQXNVZno0MGRM?=
 =?utf-8?B?ZlZPamFVNGxuNUxXY3pxdXJtQUd6cllLaWppV0h4MDdSQXFJRUdBcDljMzJ4?=
 =?utf-8?B?SkE4YU02YnZDcUpsK1JCeXMyZnBFeEh0aXI1aVkzcm1OMXVRcXpQRFR0MDBX?=
 =?utf-8?B?MFBnVUhGTE5sbzdMMlVRTThjaE1PN1dmWjNOdkxndTZ5QStRSVFETmdJOHVT?=
 =?utf-8?B?OFlXdnpDbUZ2alpCSWZiKzAzUXR6bWhwRXRjdWF4RVY1MllZK1lIY0hNaFIy?=
 =?utf-8?B?aXJiVDdvZ1Z3TVczUHc3LzJ1TVRZRkRJZ1BFSDR2SllwNjhKTHRDTmhodWd6?=
 =?utf-8?B?VUdROTdGK001MXh2eThQbFMyM1R1bzhoOWtFdHpaK1I4cUJ0UCtMWjRIZkhi?=
 =?utf-8?B?SEZlbjR3RTBidVNBR0pXMG9sMXB3aDU2OHMxS1VtMGdYYkpSdm9LbDRycEU5?=
 =?utf-8?B?U09GeUZWbE1ieXFOODZuMlo0VXprdnRpRVB6ZjIralIza1RVeDYvd0hoRERk?=
 =?utf-8?B?TmZIckFmNWp2WC9qejhlVmRUZ05mWGJPSk16b045N1RaU2hTSG4zVm03Skcr?=
 =?utf-8?B?QXhZY2xBT2p4eXBoeUh3SEpwclFJVzMvdVF3cE5TTGNhSmhzZjhjYUZDbTZp?=
 =?utf-8?B?cktnY0oxaVdRS1RoTFBKOVViZmdSZU53ZlRyYVl0YTYxeEl3UmZTUzlMVG4y?=
 =?utf-8?B?MUg0bFZYemkxSUlCSXQxVllWbS9DM1pCa0RqU0ZvejA2V0VuTTJhZnZFdXVi?=
 =?utf-8?B?em13bVVBa2hkK2FkajdaR2xramk0Y0l5OThTcjRqZ2xjRXJ4dk8zUlNTdE9h?=
 =?utf-8?B?a2puWDY2SXc2Mll2cTE1WlMzR0RoS1ZNeXN1c1F5aFIyQzdkMG9YdGRDOW40?=
 =?utf-8?B?YkhJQ2xtd043MEY3Lzl2TWxDaGJxdmx6NnppQ05EZHF4SUhZOWZaM0tNTlVN?=
 =?utf-8?B?YmFwenphNkdZQlptRDVoREVhbU9BVlBZWmtIRDlaaFJmTkhzNCtTNGhuQnkx?=
 =?utf-8?B?NEJ6TVphSVdCQVhmS01xZExBd0RXYWtjemtvd3RBWG53NVF4bTBOMSs2MDI2?=
 =?utf-8?B?bk94d0ljcU5nTnFlQXVDcWVGWkgzaDlXM2ppeWZ0aHZhNi9TNW9jOHhlemFJ?=
 =?utf-8?B?cURlTDBHcmhoQUQxeDF3TDl0WmtGRU1oemRzMVJmS0Y3dG1ibFdRT1ZGTWk0?=
 =?utf-8?B?TXh3RVQ1QWQwODFMQnlJMWFOK0lMT0ZOTjFuTlh1K3RldWxabk9XZ3V2UnAw?=
 =?utf-8?B?eDJuTmtvYTNqK1dicE5GbW1XMWFoZlZEMkVWSWZxekJrY3g1bXRsWHFKMkh4?=
 =?utf-8?B?QUIxaDBXNXZrQk1hcEtmY1pSSXJkcExYRkFHSExxRHlVcCt3REhpazY3Mjlm?=
 =?utf-8?B?MDZheFh6cmtmSlY4MXl1ZmxTV3JwMEdkM2dLYVdHYW82TXBhWG93cmNYRHJE?=
 =?utf-8?B?MXNBQTI1NGhiRmx0TmdmTVFIVFJWK09BMTBWSElaYzR4MDVOaFZiMnJXY2VI?=
 =?utf-8?B?UTNETDRMR0d5T255Yzlhb1JpalRyU3ljblJqVTl1akJ5UW5BRTlSVmFhTXNO?=
 =?utf-8?B?cUZUTVFJdExmMk9aVGk3c0NLaUU3NjlFczVhemFnUUVhMFlMelF4Q1ZPSGR2?=
 =?utf-8?B?NWp1RHd4TEtiNW93T3ZIaW5FQ2NFZ2d3amdwN3JodjVxS0hiWDhVRGw2ZlVa?=
 =?utf-8?B?eWp6RUI1RVpUM2t6VGhzeWczWHFMMXE0S21KeWlITzZrTDBKYW1QMVZJY3kv?=
 =?utf-8?B?MjRLK3IwcVFzeEVXcHVLSXNqQmlsSy9rWkdhQVZBc3hFMjRZOEVxR3VSenRU?=
 =?utf-8?B?U3NZTDZEQ3VBeHVyZ3daa1Z4bjNIUlpzeVlKaG9FSHZKajlUekFjcSt1N3JM?=
 =?utf-8?B?SjhLM3kwVXpYSTlpamtGUGZ3U2s5RU5jNlZ4eTJNN0U2QzllWGlDaGg1VDI3?=
 =?utf-8?Q?qiPms4+gW1lydnjk=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0c83b23f-1ad9-4783-2bc1-08df39954f6d
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:29:15.5301
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: hlbYyjqlny592TRXrQ2Jz9+BffCkPRskSQklh5mQQB0iFxD6vW4A+1wGi9cXURhanDZzLzrMCkMltD1T1bcUfvxK/1Ad3o6OVlkrIDBUjSw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVUPR03MB11404
X-purgate-ID: tlsNG-42698a/1793701758-A94C39EA-3FAB0369/0/0
X-purgate-type: clean
X-purgate-size: 2136

VGhpcyBzZXJpZXMgYWRkcmVzc2VzIGEgbnVtYmVyIG9mIHZpb2xhdGlvbnMgb2YgTUlTUkEgQzoy
MDEyIFJ1bGUgMTEuOA0KKCJBIGNhc3Qgc2hhbGwgbm90IHJlbW92ZSBhbnkgY29uc3Qgb3Igdm9s
YXRpbGUgcXVhbGlmaWNhdGlvbiBmcm9tIHRoZQ0KdHlwZSBwb2ludGVkIHRvIGJ5IGEgcG9pbnRl
ciIpLg0KDQpQYXRjaGVzIDEtMyByZW1vdmUgdGhlIG9mZmVuZGluZyBjYXN0cy4NClBhdGNoIDQg
ZGV2aWF0ZXMgdGhlIGNhc3RzIGluIGxpdmVwYXRjaC4NCg0KVGVzdCBDSSBwaXBlbGluZToNCmh0
dHBzOi8vZ2l0bGFiLmNvbS94ZW4tcHJvamVjdC9wZW9wbGUvZGltYXBya3A0ay94ZW4vLS9waXBl
bGluZXMvMzAyMTY0NTIxMQ0KDQpEbXl0cm8gUHJva29wY2h1ayAoNCk6DQogIHhlbjogbWFrZSBz
dG9wX21hY2hpbmVfcnVuKCkgdGFrZSBjb25zdCB2b2lkICoNCiAgeGVuL2FybTogYWNwaTogcmVz
b2x2ZSBNSVNSQSBDIFJ1bGUgMTEuOCBpbiBhY3BpX3hzZHRfbW9kaWZ5X2VudHJ5KCkNCiAgeGVu
OiByZXNvbHZlIE1JU1JBIEMgUnVsZSAxMS44IGluIHhlbl9idWlsZF9pZF9jaGVjaygpDQogIGF1
dG9tYXRpb24vZWNsYWlyOiBkZXZpYXRlIE1JU1JBIEMgUnVsZSAxMS44IGZvciB4ZnJlZSgpIGFu
ZCB2ZnJlZSgpDQoNCiBhdXRvbWF0aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9u
cy5lY2wgfCA3ICsrKysrKysNCiBkb2NzL21pc3JhL2RldmlhdGlvbnMucnN0ICAgICAgICAgICAg
ICAgICAgICAgICAgfCA3ICsrKysrKysNCiBkb2NzL21pc3JhL3J1bGVzLnJzdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAzICsrLQ0KIHhlbi9hcmNoL2FybS9hY3BpL2RvbWFpbl9idWls
ZC5jICAgICAgICAgICAgICAgICB8IDIgKy0NCiB4ZW4vYXJjaC9hcm0vYWx0ZXJuYXRpdmUuYyAg
ICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0NCiB4ZW4vYXJjaC9hcm0vY3B1ZXJyYXRhLmMg
ICAgICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tDQogeGVuL2FyY2gvYXJtL2NwdWZl
YXR1cmUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tDQogeGVuL2FyY2gvYXJtL2lu
Y2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCAgICAgICAgICAgIHwgMiArLQ0KIHhlbi9hcmNoL3g4Ni9j
cHUvbWljcm9jb2RlL2NvcmUuYyAgICAgICAgICAgICAgICB8IDQgKystLQ0KIHhlbi9jb21tb24v
Y3B1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQ0KIHhlbi9jb21t
b24vc3RvcF9tYWNoaW5lLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDcgKysrKy0tLQ0KIHhl
bi9jb21tb24vdmVyc2lvbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQ0K
IHhlbi9pbmNsdWRlL3hlbi9lbGYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKysr
Kw0KIHhlbi9pbmNsdWRlL3hlbi9zdG9wX21hY2hpbmUuaCAgICAgICAgICAgICAgICAgICB8IDUg
KysrLS0NCiAxNCBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMo
LSkNCg0KLS0gDQoyLjQzLjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:29:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:29:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469433.1678258 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlb-0000td-4h; Tue, 03 Nov 2026 10:29:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469433.1678258; Tue, 03 Nov 2026 10:29:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlb-0000tW-12; Tue, 03 Nov 2026 10:29:23 +0000
Received: by outflank-mailman (input) for mailman id 1469433;
 Tue, 03 Nov 2026 10:29:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOBlZ-0000gT-SN
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:29:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBlZ-0030SG-8n
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:29:21 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b772-e002-0a2a0a5209dd-0a2a4502ebcc-32
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:20 +0100
Received: from [40.107.159.106]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b780-6ca4-0a2a45020019-286b9f6a61d0-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:20 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVUPR03MB11404.eurprd03.prod.outlook.com (2603:10a6:150:35b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 10:29:19 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:29:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=y7kJizY+OehPe2BMuQ9QdTww+BEzUZyu7+jzAopMnhd/YoSnBV4nB8Zb5PfapptH+vM3Ub2ToQI956QEQ4ADIj+FfdAfYXMxqdWPO4lohLm6Y/iXja6Nj6D9NSvcRMsQbtA+JogroJGnmUjyehZ/KV+nZ9AkRm2PHWJxAuiYz1kJ9S6kL/2CjgC9yQN/byj//lFU3BQLlBdYw32tRgPMhK0Vt1FhpDHd07RKsfKc+ZfY6Yq4lmVvEqVTXPmrpL2AzHmzmu32QCulw+gvrpl+vbaWMjOHacFdD56b/mQXJvWi/4v3wxHYEFBXnIJ3RrNo6e3XuxKl6+53mxTvRRtYEw==
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=vmiPFQmUYyT/jB4MHBpHaH92O7sxAxWv+3/3HBRBYL0=;
 b=SgdR14f72OX7oOoIQ+9dcfmGKfhz4pKbwXhQb63iliNLNRNgwoIsmAFzXAEh85CM0FOv56xqtJAfL50Ps++s/bQv2CjY0Qnl4JkKeNLZtV2FHIM5Ip4rBwtt56ULmw/zgLPze8D9FP0PIOSz61bSaPyY9XZhPfAx5ZOJoiw3JBkUrq+o8rEPpTwcEtDB4wIrZ1KN2ZntGKqCDWTuYZ38OigmEBDPmpM2rsIWRRrtU6OjJgZwNyIJ2PlsCLlG0wuFD9npphkXqeVxBp5HNnNM7nsNzezHMkU+DTHNjzPkprImIDPaQg5DV4iAgs5iaBzWShaC5ushfYGiYmEZKntaGg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vmiPFQmUYyT/jB4MHBpHaH92O7sxAxWv+3/3HBRBYL0=;
 b=dBqlSv/wekfFdf4QVBZFp5go/7pXg7wXQ4d7gePNsglZTCMqk9CFIV8OaUrAAMWO2ewu3QheXDL3yUzBoic3dq5+G9sYYaQg7FHcMoSKVCA0YUpNuY63oPQ9q+CdnirApy0CIk5zCsjdQ+b5IHpwtrMPqT2HlbV+QjflR/efaLcf9aApndH1xCEPO6TvVtRUugKm6uSFqPnMVIXVvG8BBt7TQTiZ96729vVqa0Sw2QX2o2/mrOeLiMrW4Z5TKiFAkPZNMilSQswPVwWfbL5Uoa+lfWzOoqrtmiXibFaOt3gT+x21DST5EkfgmiIPojGbjQPzUyYlmJghEAgF3sb/Mw==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 2/4] xen/arm: acpi: resolve MISRA C Rule 11.8 in
 acpi_xsdt_modify_entry()
Thread-Topic: [PATCH 2/4] xen/arm: acpi: resolve MISRA C Rule 11.8 in
 acpi_xsdt_modify_entry()
Thread-Index: AQHda34uogvF1bUNYUC6rEVk8qUrxQ==
Date: Tue, 3 Nov 2026 10:29:18 +0000
Message-ID:
 <3533b0c51c28689ae7ef05cf8ca88b49d72eba5f.1793699713.git.dmytro_prokopchuk1@epam.com>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|GVUPR03MB11404:EE_
x-ms-office365-filtering-correlation-id: fd81a79e-4e28-4232-0e0d-08df39955174
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|42112799006|22082099003|10067099003|56012099006|18002099003|261009223027099003|261102123227099003|261021123027099003|261022105027099003|261021121427099003|11063799006|38070700021|261026121527099003|261026140227099003|261028144727099003;
x-microsoft-antispam-message-info:
 eV58Wv17TNV53z8SMf6hhGVFYO0C8ITm08Z0qmqLfvnSzoNunZfdb/AIYZquxI1A/WOAi/Y8RgXiKfiHIgLzDkDCiF0awKd/qrmCL02vUiha3/VAyFiAn5ttptuPv8jW8Mdm0hHk2KF8svpJrV1x05BLkuyEtFFUPF5zfk7cg55diRblySdskkdKoo+3UAFSnC9YdAyu1+FkylBqZjM1QuPO7EEiAf7zQ4yZNTKUngzQZSHY6WaVfIbhairMUXMIkfD/uuEdgcQY9r7s2ayF7dwQS8s3WdQ/6x89hIZBKokB1iee3PQiWnpwjV2YxrKy1NRwBPH9JeeayIiQsHAHBELxdWWse8T0c4rhFpQm+Nc3PaqFzxOifn4Nb8sk4Tsi7pc0juD1MeMOGwb/D+vz4rCbSohtXt8AczvOdtQDEJsI9Y1I5EqKeTUxcJjdgcmFpuIgglwjZyg9fp6dCM1rvWl3mzkA6iEZvJxcDn+nDsl1Wlo0WUu63HIm/Bza5GsI6q82XS2D98X+1IaJS3u3AE8UkOnQOgYP0YKZCbg/yoFhJkoudsn2sgYnJQ6W9IG9Oq3COP6kylfwRiJJ5JU1id9J2OweKVtfQHTylGFwXce6GWhXiNQ7N0eo/HR+R9ITg14E9xUqRGCwsWoLFZeV2xT4pmEGYLXPDZlbbG4s5bk2zk/B86bZSe6F4oiifF60M/w4SqAOo2VjdfzADODgxYB7gUCxd0Wyp65mH6x3UtU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(42112799006)(22082099003)(10067099003)(56012099006)(18002099003)(261009223027099003)(261102123227099003)(261021123027099003)(261022105027099003)(261021121427099003)(11063799006)(38070700021)(261026121527099003)(261026140227099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?U2hmd1p2M1VNRUI3NWFIVkJFQml3SkRORTJuWlNRaitPVFRnWDRZNEQzN2F1?=
 =?utf-8?B?YWVIMk0xUXdya0RPSkp6Y05DUENFcndWVVdQN1lqSmVZRTY4TTl5MEhXZTFv?=
 =?utf-8?B?QmJsbHZMaUtkTyt6bElrMzBKSEg2Q0VDVmd4RmdxZFRhclhaTmJmMGxCNXRK?=
 =?utf-8?B?YmJ0RTc3WkYwWWRuMFhMa3RCcVo2d2hFcFN4dmtJb3VvaTdRVVNBZlNuaFdY?=
 =?utf-8?B?cGZ2bGlkQThDVVQ5WE5HL0R3U2dUVUhMZzN3NHdyY2RoRXdFeWJZOGFuekRD?=
 =?utf-8?B?QmF4cVhLQlp2M2pRMGVjY2cwcXBrOFlDcGp5L3Y4QmJhUzJZOWRxUjN6aXgz?=
 =?utf-8?B?b29HZ2lyOWU1dmJBY01KK1VudUwrejNaNkNaTkFNRlIrTDFZWW1pcU9vSG04?=
 =?utf-8?B?c2x6M0hiR2gyZ21DQkd0NnJMNkFnOE1oRWp5blVkbFZKSFRHTDA5ZVYxS1lw?=
 =?utf-8?B?V1NkWUh1MndsNnZGd0hZOUx0YzVGWFdvUUlhbnpGQ0Q4bFU1Y1hPcTEvTlRS?=
 =?utf-8?B?WlBHQnk1MUF0SHlsTzl6VS81Wnd1N2FOT1FCOHVZQ2xhcHpoS0MwS0FINFpi?=
 =?utf-8?B?WEVQbFpocFhsdlNoK3Z5SGFxYVNsd2tod2RhV2pNL2crMTVWU3NLWHFpUXE1?=
 =?utf-8?B?ZlhRRFNyOEJjbC9HL1ZUU0kvUy9nWkd2enluRHFCU0ZnK0s1UGo1bWpvM1Ro?=
 =?utf-8?B?VlNMV2Flc2dVVmw2cXM5YVA0bGVUYjA1UFJ4Z1loUnFXcEhiRGpmVEJjZVlI?=
 =?utf-8?B?K1J3Mjhzb3NKdlV6SjlTSmNYd1dHYUJReTNiaVVPdDQwTlBaMlNHZitHcm1L?=
 =?utf-8?B?dHc0YUNVMHpQdzBvSXVZckg0K1BkU0U0TmYxSGJEamdMNHdmcXZWUXNWZU5o?=
 =?utf-8?B?bkxrK2JLOUFwMnpRdUY5TXZxNWUyUG1UWFN2RzhZL3cxbm1YSEtuSTBFQUtQ?=
 =?utf-8?B?N0FWbHE1V3BEOWFhWkhxQjNJSWtFS1A3SEh1UEs4L1J4b2xPdGw0NTJrYkZ4?=
 =?utf-8?B?TGFvaHZyYjhOUHV2OXVKTnhDVkhDWUNHdGlMLzM2M0w0ZnRFenQ4bkZGQ0ND?=
 =?utf-8?B?ZFMwSHorWkZOM2M1RE94UHM4aWtsbjZDYUVBUjBVOXZTR3NaT2tOa3hwbnRx?=
 =?utf-8?B?MlZOS1o0T3VCN1EwQi9xY1RPN0tUL2h0Yk5EeTJIVHZnUUt2OTFTNzI5cHJC?=
 =?utf-8?B?YjlYM3VCdW1SSkc1SWR0Kzk1R1dEQlo0UEZGT0dxaDhyckdZZzRvbmxPWkhv?=
 =?utf-8?B?UytpYWpyWDFoS1hwRXNkdFMxdDEvYmRuK29jV2VmTDJkdmxjbzdPWVNpRWw0?=
 =?utf-8?B?UWExenU3UTZyYWJoZ0E5elFneGk0V3RFT0RGTUFwWXZRZ1RwK3hFZWh3Rm1S?=
 =?utf-8?B?YnA0WG9EOFpMSk9DY2tZKzdERG9rWTV1WGVsWHJCOTZjNGxOdXVqekxwTGhP?=
 =?utf-8?B?RWdYT2NFR0VKY1hod01taWpXbmRqbmNob2JCSHFWNDBPelh4TDJHdmlBdlla?=
 =?utf-8?B?SzhmcVZpKytsZDFPM2dWMGplNGJ4RHg2Z3lFdjNLV3ZOUW9ZZjRET0hmQUg3?=
 =?utf-8?B?bEZyNDU0TFhmbEk2YndjNk0vN05lOG5yeUo4bHkrYURGYWRiaU1mamJOYnRB?=
 =?utf-8?B?WUZRWE0yVG8vckg5bkc1SVorL3Y3Y2JISDh5UnBkenlqdm5UYmpjcFo3WkJO?=
 =?utf-8?B?RWw4WXNsb1RMZE1kZk56QmxPTko2b1hLUFRONTB0cjhsUmJVNW5ub0lRVmRk?=
 =?utf-8?B?aHhreWdSYVBJSWpVQ1k0cko2RXV6YUpVQUZFK2oyMTNuWlZaVXMvU3ViTnFl?=
 =?utf-8?B?MmY4cmxoOU9xRUd4Z2xYQVkzNFpQTDk3VWFyODVmK01RYnc3Q2w0eWVCNGM5?=
 =?utf-8?B?NjllV0podXI0cUJLalNxMHhHRi9WcklGRElCdElOOEFtanhtbHUyNUhmMXZG?=
 =?utf-8?B?dXBOQ2VtaXJUcDhxcVYvN3I5aDF6ZU5DMUVFQUl2cFVWZTNiUkdndXRyS2tx?=
 =?utf-8?B?YWR4R2Nibm45Y2tzTDdESlNxdkpxMDRpUlU3T1k4NUVmMElYTmM4MDZZQTlj?=
 =?utf-8?B?TG1VZWFkcWRzZzNITFM1emJaa3kvTkhJTUppY2VTSWtSYnBSN0hQdVd3cmh1?=
 =?utf-8?B?VCtZSzlqOUtreGlodzE3MXYzZjdMSU1mQ1k0cThtdDN2QWNMT3YyQ2xHLyto?=
 =?utf-8?B?SVhkVXFVZ3ZuaUFadStCY1EyVVVsS3lUTkkySEF6d0lUdjcvS0ZMQWp5MUoz?=
 =?utf-8?B?ZnBaT2N0Y1F4NFQyVGd5ZzF4d3lJV1lSRG5kajFyVEROdTlPbkpRYUNpWjJ5?=
 =?utf-8?B?SFl5WlZER3QwRlo2QUFMdVdnWFJoRTdsSk1WTTF6R2VrWkdEWGJXcG1rbml6?=
 =?utf-8?Q?7Sv1LK2y3qknryxE=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fd81a79e-4e28-4232-0e0d-08df39955174
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:29:18.9353
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: LTgBvBoA3s4VWvEcIcjPDOy04L4TaxpFANrneSnyUCRADsrlDogPSwHpwcuinNZiYpp95+NjBuvOrX9QYHPemHBuYzAmDkkOGIiNMKZxq2A=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVUPR03MB11404
X-purgate-ID: tlsNG-720697/1793701760-F28B42AC-2310129E/0/0
X-purgate-type: clean
X-purgate-size: 1692

QUNQSV9DT01QQVJFX05BTUUoKSBjYXN0cyBib3RoIG9mIGl0cyBhcmd1bWVudHMgdG8gJ3UzMiAq
JyB0aHJvdWdoDQpBQ1BJX0NBU1RfUFRSKCkuIFRoZSAnc2lnbmF0dXJlJyBhcmd1bWVudCBvZiBh
Y3BpX3hzZHRfbW9kaWZ5X2VudHJ5KCkNCmlzICdjb25zdCBjaGFyIConLCBzbyB0aGUgbWFjcm8g
Y2FzdHMgYXdheSBpdHMgY29uc3QtbmVzcywgd2hpY2ggaXMNCmEgdmlvbGF0aW9uIG9mIE1JU1JB
IEMgUnVsZSAxMS44Lg0KDQpVc2Ugc3RybmNtcCgpIHdpdGggQUNQSV9OQU1FX1NJWkUgaW5zdGVh
ZC4gSXQgdGFrZXMgJ2NvbnN0IGNoYXIgKicNCmFyZ3VtZW50cywgc28gbm8gY2FzdCBpcyBuZWVk
ZWQgYXQgYWxsLiBJdCBhbHNvIGF2b2lkcyByZWFkaW5nIGEgJ3UzMicNCnRocm91Z2ggYSBwb3Nz
aWJseSB1bmFsaWduZWQgY2hhciBwb2ludGVyLg0KDQpObyBmdW5jdGlvbmFsIGNoYW5nZXMuDQoN
ClNpZ25lZC1vZmYtYnk6IERteXRybyBQcm9rb3BjaHVrIDxkbXl0cm9fcHJva29wY2h1azFAZXBh
bS5jb20+DQotLS0NCiB4ZW4vYXJjaC9hcm0vYWNwaS9kb21haW5fYnVpbGQuYyB8IDIgKy0NCiAx
IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkNCg0KZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL2FybS9hY3BpL2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gvYXJtL2FjcGkv
ZG9tYWluX2J1aWxkLmMNCmluZGV4IGRiMTZmN2ZhOTQuLmE3N2E1MWFmZDUgMTAwNjQ0DQotLS0g
YS94ZW4vYXJjaC9hcm0vYWNwaS9kb21haW5fYnVpbGQuYw0KKysrIGIveGVuL2FyY2gvYXJtL2Fj
cGkvZG9tYWluX2J1aWxkLmMNCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQgX19pbml0
IGFjcGlfeHNkdF9tb2RpZnlfZW50cnkodTY0IGVudHJ5W10sDQogICAgIGZvciggaSA9IDA7IGkg
PCBlbnRyeV9jb3VudDsgaSsrICkNCiAgICAgew0KICAgICAgICAgdGFibGUgPSBhY3BpX29zX21h
cF9tZW1vcnkoZW50cnlbaV0sIHNpemUpOw0KLSAgICAgICAgaWYgKCBBQ1BJX0NPTVBBUkVfTkFN
RSh0YWJsZS0+c2lnbmF0dXJlLCBzaWduYXR1cmUpICkNCisgICAgICAgIGlmICggIXN0cm5jbXAo
dGFibGUtPnNpZ25hdHVyZSwgc2lnbmF0dXJlLCBBQ1BJX05BTUVfU0laRSkgKQ0KICAgICAgICAg
ew0KICAgICAgICAgICAgIGVudHJ5W2ldID0gYWRkcjsNCiAgICAgICAgICAgICBhY3BpX29zX3Vu
bWFwX21lbW9yeSh0YWJsZSwgc2l6ZSk7DQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:29:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:29:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469434.1678266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlf-0001Ar-FO; Tue, 03 Nov 2026 10:29:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469434.1678266; Tue, 03 Nov 2026 10:29:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlf-0001Ae-Bl; Tue, 03 Nov 2026 10:29:27 +0000
Received: by outflank-mailman (input) for mailman id 1469434;
 Tue, 03 Nov 2026 10:29:25 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOBld-00018U-Ku
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:29:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBld-00Ac9H-1Y
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:29:25 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b776-2eae-0a2a0a5409dd-0a2a450c984c-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:24 +0100
Received: from [52.101.69.78]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b782-f479-0a2a450c0019-3465454e4cbb-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:22 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVUPR03MB11404.eurprd03.prod.outlook.com (2603:10a6:150:35b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 10:29:20 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:29:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=k6IYCdphpUMZM9J097xtKJJhn2LDt3ABSiHT08k7HadCS7v5W9EONY2hN6oFsKecWk2XAoSikUZNLxb6ELSiejG4f0vPjwVzfrRsK5P/mioEDsmzWf1aLO+oUqi8jp9LS1wk/KiieXSDe3+Xgy/Z15/o9rmEV1MccPWKtI5PN81HDdf5+v3wU5C7YLk9fUOZcVwY2O+Axk+9PcIuJlI2CylQKrMS4ZCAU41glBofrpfsf34hf6mtLwxI35DuMGx2vnQTbFrsKXUK0replbMQZchxYk4rV0BLda1MwThMlZygy5af3frVoacT1sF+b5riprxSyJLOGOmg0GYnlnZB8A==
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=kEqVgxel8paWkLlVA9PgdAVvX8/0qfWrrq2+a6qiGTU=;
 b=bdvqZ+mBj5ffbORMVvs18oCkuuKxb5NZ07RSVU0Ka1ljS3iIN1ZXBfZyP+uAc6cebsf3AS31nXwb77PtOQqjRs6LYUzSHkxGHgmv6mi6pBwXeZ2bK62An0lmGRBlFA0okvFG7z7EoRM/jM1uH/XGgvPR/WqflE1Y+si9Bi9rpTfBLdfY9smeWDsaIQEae9Yq84N9deFdOAbuvdD7wntXrfMVOMj9/uZqUM/xC4+lOJciZhArPPL3Bj4F/jVi6FjfdmeQhhYYtr4sXMEcceZvX3HyQSEv4DsTLDOQcuZDl2LmEwowhfYUZ8xFmVgtKznQXy2PZwVwRfXsDInIRRnmtw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kEqVgxel8paWkLlVA9PgdAVvX8/0qfWrrq2+a6qiGTU=;
 b=mkN6IQcFmBdoXPR8G5iuRD7N5GtgrIp4uN18Tgzk2abehI9cloH2tgNeiCe/WwdrFpw9HCMfCYi7ZrH4fFf6cLdk2am0eEjQBcx0hk2xouljPeYhPN4a0ZNy0d7Ytq5EtLBJwxoK1pNDRr0+zOoKTxD0Ku5lGIDH0h2wzvf7fdBjOuiVZM9OS6gJQS/A8qpN7DNhMUugTLKSkC8z6umjFwNKmCOuQuZoAoASDPl28cCJjk+S/jwnC9d2Nnw9+ZfVA2yi2xwqizNRMLcNf49TM4tdSBus3GSj8oSal3CI/mNKWyG2OROrO8D5vMVa/TyWZVzrHQVb+hmKMHzccWTanw==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 3/4] xen: resolve MISRA C Rule 11.8 in xen_build_id_check()
Thread-Topic: [PATCH 3/4] xen: resolve MISRA C Rule 11.8 in
 xen_build_id_check()
Thread-Index: AQHda34v1vVQdT6hdUGbIMGkiVK2hw==
Date: Tue, 3 Nov 2026 10:29:20 +0000
Message-ID:
 <bd4ca85c30c0a9551171506d81301cd616d4a23c.1793699713.git.dmytro_prokopchuk1@epam.com>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|GVUPR03MB11404:EE_
x-ms-office365-filtering-correlation-id: 5f75dc0c-585f-4d5c-9b65-08df39955234
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|42112799006|22082099003|10067099003|56012099006|18002099003|261022075727099003|261102123227099003|261021123027099003|261021121427099003|11063799006|38070700021;
x-microsoft-antispam-message-info:
 WgTPRT6xhAaJpHVTajtlo40kAbDxWLT+7JPlTEXxNFZBx6CoDU1m2Ow/eFkxKPEOxM9GuwOp8u2m7Hpy8xpbNyyyms7Bnzd+aSIwCPkrgpQeIihCF5Li44L85KFby0mcoiODIhrGhOxJWxWQ/a5DeTO8Ra/zXed+nxAPcuGtn1zZ5tZxUaOqdQF09RuYo1Y6sYE69g0gUKQVfgTHQ2ZFufJnETkmL1HrTgw5awPN+f0Ztp6WHLy+OPT+5LhWXxD9VjQdCULTPQlsXb6NvUPTAsN43+BikNZcziWxiwKq0tf9V00XzIXl91r8ybPNd3WfE/QOxmoycaVGHQSZ1e8koDiDIUPs3AvD5doKEzC42V6YfCW7WVgHQs+Nj/XEkaEboj14qCoacaeQ0NPryw9hcETpfmowpKbN9vEPNyjWr+vRZ5bF4KMd128OkO6ePU/bVBydUuM44YHFNdMxanuFZ7z3Uqil9bis1d4z8Q6nwMaGEiXCS9vNZcl2QRmqjF9ibgZyx6MamLONVz0nzjgHj0pOBQ/rmU6mV8YTwtgeortG+IR63xRupY244JiwByM/o0NRC3EVvjCZpmES4pXjfQx/JyzXrfbIBYiMSxdJ+n+oBMbeF6VFaG+qbUL/VRmJVuOBIyGrtLmq0BTrpVNm8GxPTAvm2ju8k17diQtXH9n8RbJw3xCGtIaixQDNBdWd2p2+026G8VDRQ3nML3oH2PeAkqxprbwj+FdsScvtvqE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(42112799006)(22082099003)(10067099003)(56012099006)(18002099003)(261022075727099003)(261102123227099003)(261021123027099003)(261021121427099003)(11063799006)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?RkhPTmVzT2twY0JtakgxczZRMUFCVDBkbUVhVXVNdXJUMG41N25ySXRnUk1K?=
 =?utf-8?B?NFI2elBaQVRENWlrMjU0WTV4bE1LTDJ3eTVYV3J5R1d1eWFvcFZNNjZrV3lF?=
 =?utf-8?B?VXBvUFJsUlJTSitkUXcxRkV6Z1ZnU3EvZ1NabWdsZisrc0xqQlhrc0t1a3hG?=
 =?utf-8?B?VUxLbWhBcmx2NWVDaVJnSEpraVlkeWFzUHlZNC9qd3hkWEUwdzQ1OGtIZDgv?=
 =?utf-8?B?QThOWjVwazBRZUdZK0xZY3lTU0NNcUZ4dnZrRHFWV25mME84N1p4eE5TM25l?=
 =?utf-8?B?cVVUQ09VVEV5eFdTMnhXM1BoanUwUXk0ay84UmFtVDJCeG5BQ2VlRzNNT3p1?=
 =?utf-8?B?dVRZZGdwaTdoNnRQODIvZHV0Z3cyMXdGU0F6SnQrenVlbXJwRE1VZUJNS25M?=
 =?utf-8?B?b2ZhcTY4bzlxTWtBWlVGK2RXQmo4UDdoVmZTNUFJMXEzNjc3Y2hvYjBBVU9J?=
 =?utf-8?B?eHdnU1NWdi9jdG9DZkhLQVlrUzFHQTQyNk1ZZ2VGLy9MTDBnT2xLZzh5VlBV?=
 =?utf-8?B?WHhUbE1sTFJPb1F5Y1VJNmhIb1FDckxROG10bmVib1NXTlBUSmNselBIUzlr?=
 =?utf-8?B?dXA5YmRBb3QwMmc1ZWdoTnMzWmx3WWRTbGtFblFnMU13ZVlSZXJYNG5sRWdX?=
 =?utf-8?B?ZEs3ZTF5NS94K3lGMlpkdEM4VVQ0TjhhcXlFcFZyN3ZITnB0UVVzdzdXOFow?=
 =?utf-8?B?dUw4cnJudm5BMnc3eERCNTJNNTZqK0JLN3VwdlRxd0JZSkdPelNydFBqemgz?=
 =?utf-8?B?TVR5T0U5N3hQQXhiM1M4NHBNZm1GLzlhRW1XcWs2V09ZTUp5Z2NpYktGdUhi?=
 =?utf-8?B?TkdrNzZ6MjZVcE14ekdNdkljM3VuQ3ZNaGIrdVNhSWlvMDN2R0NzaHNNeU4z?=
 =?utf-8?B?U1VFK3J2TlIyRTRXM1hPWlFIQ2hiNVNFbGgzRC9xdTN2NW5CR0hkazl2MjU2?=
 =?utf-8?B?czB5cUloUTNaVGFZY0IxL0VqOU1waWNzeGtrbUJRbkUvOWhJbVJVWXg2cXA4?=
 =?utf-8?B?UW13eDNzeVhBNWJnL0tXNzcreEFjNldXdCt3RTAxY1pCQzBvbU1UUjNqSXVC?=
 =?utf-8?B?L211N21FUVg4a2RZMTAzQXhLb1c1ejRSNUd4L0R2VGJNRHljbitpcVd5UjhH?=
 =?utf-8?B?a3pkUSt5VndoUDV6SU5DM1N1Y0dzd1ZwbUFvSlRteHo2Y1E5YXFpMWVmZkZC?=
 =?utf-8?B?b2dIVHZBc0Y2V1lhVWdsQTdFcVU1bUg5Y1NzOGVvL1BXK3ZlNlVPZlBleVFF?=
 =?utf-8?B?M0JPbXJCbnNpbDdWcHNOUER1djA0QVc3dTlZTGpQUzRxZ21ETlg2TU5jVDBh?=
 =?utf-8?B?ZVNVcEs3QTZQenhiY2x5elEySWNyR21mTnJLU1ZidjUvbjFrd3hEelFEK1N3?=
 =?utf-8?B?Nm1HOTltWmZGVG0wUGFVRmYzMGNxWnJBOUh4UndlZ0NubjJNdUk3dlZEdTFS?=
 =?utf-8?B?Q3NIRm4xcjhFb09YVnNVdk9IK0NuNXc4WUUyNUJVUWVUT1BncWtHYy94NWh2?=
 =?utf-8?B?dnhTdVQweFZkRzBKaHh0Z3NWc05vaXdUSTRlVS8wcFhlRHpLTVo2QmxaK1Uy?=
 =?utf-8?B?cDhrYTljcU5DZVdmQ2hEclpER1hMZThNRFNsMXpaWjdtd2ZyQ3lUMnhPOWdC?=
 =?utf-8?B?Q1VUL1VuR3hnaURqdjJ3cW1STEx3M3lGMWI3TzFXaS9mT2RGU3BuLzhPL3V1?=
 =?utf-8?B?R0FOTnFTU1JLTzhyZUZjS3locllxSmd5Vjd6Q1o5bk1XOCtaQWl1UnhUR29n?=
 =?utf-8?B?R0YycFhhb1pCOUJuVkRxenRjcllWSUFvdklqSmQ5NE0wMXEwTmI1MEFyMm5o?=
 =?utf-8?B?WElsRzRUNjg5Q3Z0eXc3bFdKM1pCL0RBa0E2TDE0ZkFudVZaTDAveWxrck9J?=
 =?utf-8?B?clYvM0NwYThPWVhZYTdvaENFbzRpU0RRNGtieDV6anlMWUliWVlBUjIzNG43?=
 =?utf-8?B?VTJLSmdwdkJaWnk1STBkVVE3Y3Q5aklUMVl1RXQyTGRuSlZDNXJ1MHhQMU5m?=
 =?utf-8?B?M3FjcjJHS3Jxa3dQc3dlM3YyQ0piZlp0TWMxVDdTTkwzekQvMXdDVW0zeEpR?=
 =?utf-8?B?c0Jua2RtZWd6WXd3VlQ4Uzg2M243bkRvMjJWT3lnSStKZVRvOUZpRkx6QmZ3?=
 =?utf-8?B?bTU1d09pT3AycFM4elQ2SzQ3RC9HblJTMzNhMk15RVhsTE1CNTBlQnYxQ2VX?=
 =?utf-8?B?b2w5OFBsV25uV2dZMkxpdWYwYmxYOHlubTdQZHJidDN6MTJzQ1dBNldqemFF?=
 =?utf-8?B?QUFLUC9mYkNSbWRaby9GK1NLNFQySkhMaHpaajVmRVQ2emVJN2dMeE9yMFNZ?=
 =?utf-8?B?empLTWszcGFOZGpxQVp1V2FpbGYzVkRRSGJKMG1sZHpoNmc2T0pYbXdmalYw?=
 =?utf-8?Q?pOz7APLoIqasOcD0=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5f75dc0c-585f-4d5c-9b65-08df39955234
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:29:20.1107
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: duND8Vc6fMV3OJfJI83f0mN4lRy8ckGxJrNZqX9VSPbq6/q1xPa0kL0R+1E85Uv0xbBth60yN+1aeb5Au5tL88UabrbRG7d49PXYd7r5zcY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVUPR03MB11404
X-purgate-ID: tlsNG-d25034/1793701762-51D34A5B-EB359347/0/0
X-purgate-type: clean
X-purgate-size: 2488

RUxGTk9URV9OQU1FKCkgdW5jb25kaXRpb25hbGx5IGNhc3RzIGl0cyBhcmd1bWVudCB0byAnY2hh
ciAqJywgYW5kDQpFTEZOT1RFX0RFU0MoKSBpcyBidWlsdCBvbiB0b3Agb2YgaXQuIHhlbl9idWls
ZF9pZF9jaGVjaygpIHBhc3NlcyBhDQonY29uc3QgRWxmX05vdGUgKicgdG8gYm90aCBvZiB0aGVt
LCBzbyB0aGUgY29uc3QgcXVhbGlmaWVyIGlzIGNhc3QgYXdheSwNCndoaWNoIGlzIGEgdmlvbGF0
aW9uIG9mIE1JU1JBIEMgUnVsZSAxMS44Lg0KDQpJbnRyb2R1Y2UgRUxGTk9URV9OQU1FX0NPTlNU
KCkgYW5kIEVMRk5PVEVfREVTQ19DT05TVCgpIGZvciByZWFkLW9ubHkNCmFjY2VzcyB0byB0aGUg
bm90ZSwgYW5kIHVzZSB0aGVtIGluIHhlbl9idWlsZF9pZF9jaGVjaygpLg0KDQpObyBmdW5jdGlv
bmFsIGNoYW5nZXMuDQoNClNpZ25lZC1vZmYtYnk6IERteXRybyBQcm9rb3BjaHVrIDxkbXl0cm9f
cHJva29wY2h1azFAZXBhbS5jb20+DQotLS0NCiB4ZW4vY29tbW9uL3ZlcnNpb24uYyAgfCA0ICsr
LS0NCiB4ZW4vaW5jbHVkZS94ZW4vZWxmLmggfCA0ICsrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDYg
aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v
dmVyc2lvbi5jIGIveGVuL2NvbW1vbi92ZXJzaW9uLmMNCmluZGV4IDgwZTdhOWI5ODEuLjU4N2Mw
N2FiNTIgMTAwNjQ0DQotLS0gYS94ZW4vY29tbW9uL3ZlcnNpb24uYw0KKysrIGIveGVuL2NvbW1v
bi92ZXJzaW9uLmMNCkBAIC0xMzMsMTMgKzEzMywxMyBAQCBpbnQgeGVuX2J1aWxkX2lkX2NoZWNr
KGNvbnN0IEVsZl9Ob3RlICpuLCB1bnNpZ25lZCBpbnQgbl9zeiwNCiAgICAgICAgIHJldHVybiAt
RUlOVkFMOw0KIA0KICAgICAvKiBTYW5pdHkgY2hlY2ssIG5hbWUgc2hvdWxkIGJlICJHTlUiIGZv
ciBsZC1nZW5lcmF0ZWQgYnVpbGQtaWQuICovDQotICAgIGlmICggc3RybmNtcChFTEZOT1RFX05B
TUUobiksICJHTlUiLCBuLT5uYW1lc3opICE9IDAgKQ0KKyAgICBpZiAoIHN0cm5jbXAoRUxGTk9U
RV9OQU1FX0NPTlNUKG4pLCAiR05VIiwgbi0+bmFtZXN6KSAhPSAwICkNCiAgICAgICAgIHJldHVy
biAtRU5PREFUQTsNCiANCiAgICAgaWYgKCBsZW4gKQ0KICAgICAgICAgKmxlbiA9IG4tPmRlc2Nz
ejsNCiAgICAgaWYgKCBwICkNCi0gICAgICAgICpwID0gRUxGTk9URV9ERVNDKG4pOw0KKyAgICAg
ICAgKnAgPSBFTEZOT1RFX0RFU0NfQ09OU1Qobik7DQogDQogICAgIHJldHVybiAwOw0KIH0NCmRp
ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmLmggYi94ZW4vaW5jbHVkZS94ZW4vZWxmLmgN
CmluZGV4IDQxOTliNGQ2ZTYuLjMzMzdiOGNhYmUgMTAwNjQ0DQotLS0gYS94ZW4vaW5jbHVkZS94
ZW4vZWxmLmgNCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGYuaA0KQEAgLTM0LDQgKzM0LDggQEAN
CiAjZGVmaW5lIEVMRk5PVEVfREVTQyhfbl8pIChFTEZOT1RFX05BTUUoX25fKSArIEVMRk5PVEVf
QUxJR04oKF9uXyktPm5hbWVzeikpDQogI2RlZmluZSBFTEZOT1RFX05FWFQoX25fKSAoKEVsZl9O
b3RlICopKEVMRk5PVEVfREVTQyhfbl8pICsgRUxGTk9URV9BTElHTigoX25fKS0+ZGVzY3N6KSkp
DQogDQorI2RlZmluZSBFTEZOT1RFX05BTUVfQ09OU1QoX25fKSAoKGNvbnN0IGNoYXIgKikoX25f
KSArIHNpemVvZigqKF9uXykpKQ0KKyNkZWZpbmUgRUxGTk9URV9ERVNDX0NPTlNUKF9uXykgXA0K
KyAgICAoRUxGTk9URV9OQU1FX0NPTlNUKF9uXykgKyBFTEZOT1RFX0FMSUdOKChfbl8pLT5uYW1l
c3opKQ0KKw0KICNlbmRpZiAvKiBfX1hFTl9FTEZfSF9fICovDQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:29:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:29:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469435.1678272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlf-0001Df-PR; Tue, 03 Nov 2026 10:29:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469435.1678272; Tue, 03 Nov 2026 10:29:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBlf-0001DJ-J2; Tue, 03 Nov 2026 10:29:27 +0000
Received: by outflank-mailman (input) for mailman id 1469435;
 Tue, 03 Nov 2026 10:29:26 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOBle-00018y-12
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:29:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBld-00Ac9H-Dh
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:29:25 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b776-2eae-0a2a0a5409dd-0a2a450c984c-42
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:25 +0100
Received: from [52.101.69.78]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9b782-f479-0a2a450c0019-3465454e4cbb-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:29:25 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by GVUPR03MB11404.eurprd03.prod.outlook.com (2603:10a6:150:35b::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 10:29:21 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 10:29:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=GtEAFNoww+Z+BgFz+PeUyQDbtE5moWgXwqw9Wdqs21SMAWkfymIKr9/2oKq3sHC11HZVEaiu0Zt0jgvH79nb64Xl/xLhK4UDIWHURhh0bbpFRxGhVPFsH9CDR4hey4rYlZneQRwMKaMO2PcSiRJUckeYbrhKBJK1TgKmDlQNkqna8ERP9ClFvZUp7FT2xIGq0zru30CqPh9JTz+gBy5E0LcoVaLcrnqW0wki3VJn2pE9cUPCmHggQABMeshh1QNLi+ac3RYtSu5VrvR1ToPJiXBoBbsr7hj55jqIaz8jNHfOwLdRt3CSAK9EYv/UtjFB5RBcYJmEMBHlGya5YDXXKQ==
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=GmyJV2z2i0zx/4g7jYycmEWq4+mTFreYVSl+ZBWxbtk=;
 b=vVfK3vXSBiZk2KUU+tHNahalpyVP9t/GiDA2yezxkv/0JLs6Gg5fri23uRq6mCL6GrEq7PLdv1G6Jmu7P+eJRjMTVp78BOu2KONVgPrXsAhwDz1oAH9PiFGhuPspe0RA3LJOWLguW+Eapt+mwT/H0lg7iVK4g/GU3Ov3eCfXofrtEBf2bKGVjVuGzP3EJh2EQDZPNxlngABZYLuZEqGfPy0enFzErHv4rsJU6JritYmqw0Hbq7pNr+0p+vIvTmSzPDOGjCwGEArRtvHmQSo3EzN3JN8anc44BhUuW0XpRzUR+ljeFs0zjIVg7oAUr9OFbiCrgYVzgsPl9mfiAo95Ow==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GmyJV2z2i0zx/4g7jYycmEWq4+mTFreYVSl+ZBWxbtk=;
 b=PtM4e2cBedoZ9bICZ0ts+WBGhYLuU++gwBowTB1+K3iDoiU3fP468PEagISyWr8yjovsEORikkPpoO8dq1frWo2kpyqz70L6yDl1giFsyW5yiMhZvjRl3pKzFawJF+vlOFBFPoorh8XQGyl1LErDyxJFC+sGP8mH03IIQauout29k3Dbw2wJKiywqaSIR0+BcpHH4s3nP9+OOx+DC5eto1Qn8wqLm+VO+TXo2wdYHNuD8GV3CaJvgJ9ffrNRJv0IsVLbavSIDwcTYDkoMUlefm/+cRoArtJdq0ZaJpDQwNtv1NzPVPYrmXTzsvXkvgcVMbmmYlGFd+7VxA2UvymHgQ==
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>, Nicola Vetrini
	<nicola.vetrini@bugseng.com>, Doug Goldstein <cardoe@cardoe.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>
Subject: [PATCH 4/4] automation/eclair: deviate MISRA C Rule 11.8 for xfree()
 and vfree()
Thread-Topic: [PATCH 4/4] automation/eclair: deviate MISRA C Rule 11.8 for
 xfree() and vfree()
Thread-Index: AQHda34w0w1h9rHZXkauKb0cj6wBhQ==
Date: Tue, 3 Nov 2026 10:29:21 +0000
Message-ID:
 <4accfe649e163bb4d0372c432256ed394b4ee50d.1793699713.git.dmytro_prokopchuk1@epam.com>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
In-Reply-To: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
Accept-Language: en-US, uk-UA, ru-RU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|GVUPR03MB11404:EE_
x-ms-office365-filtering-correlation-id: 61a15adf-f0a3-4e1d-cdf9-08df399552d5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|42112799006|6133799003|22082099003|10067099003|56012099006|18002099003|261009223027099003|261102123227099003|261021123027099003|261022105027099003|261021121427099003|11063799006|38070700021|261026121527099003|261026140227099003|261028144727099003;
x-microsoft-antispam-message-info:
 6Jnt54jObGV8GasljM3L2pHjXV8fmXNohqE4wQ0h+UHRjCpcPkhnk2UOzmsDjK68r/jydLP0sqWN3eDgCxCq+S1MKW9yXnA1CA7veFi31fXy50RlPneV8aPwXLRf8oyDxTXjp2Y46VC4BOfLpLPU3D7Hn7Ux1p5YaxtaOhxyzbEFatlTS6f8M0ZkL68P0U0FCdPpB5tOQ/vRcco2Spj/qeiEOHF/KasNB46e8kqohBkHseIp6eRXLED6zsGBZfk1R+YiPaPafnt2FbTLHv99WyoyA/p92oSNZTPN97dciCLllcFy+C1sZc6OfgcM3VHfAdVsJAWHW+tiSwuiNtrPOKNqavYtYU0Yz3o94t/XRjkxCdsSj+HYdiG7mVXc9clGVgF/2mvu0dd2rVlVn0m2oBDu4mVd+tkx2lAEiZCWRIZ0g2OP/q3O63x0mgaPAMGIwi/a6wF4waxBSNFtPo4EG+7RkUIqN5YDhJ7zW2HEdeG0h3D+TYIknGzuasvCecj9gY/rjXf3SVwdhBRTWCpzAiNEHjehh0mQK2/KyuLLjyPzKr2LdTWxTZ+weETEmAFl96Ldp/dyAVkNbV6yIqKMtLCt7gKL7BRVFBzBAqTRzx1HMcHhnFPFAsirWaWD1S6LmApDKqJKJ4FNt3sXI7qgCVhG62c7pyEf119deVJNfl7r1zFhHjOfc8H2PibONn0EUwuubZo1p/tLMvkXia5kJ7cJVSL3v8nz7MrpA/m1r4s=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(42112799006)(6133799003)(22082099003)(10067099003)(56012099006)(18002099003)(261009223027099003)(261102123227099003)(261021123027099003)(261022105027099003)(261021121427099003)(11063799006)(38070700021)(261026121527099003)(261026140227099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?dXBHcUI3TmFPWWlwdldKOGp4T3B0U1pmdUtTaTZnd3I1WE43OWlXNXlLbGFS?=
 =?utf-8?B?dTZwb3YxWHdGMExQY21HSlo0SnVJZUg3c1NtbHRUMDJ6QXJpVWlYdUNFNENi?=
 =?utf-8?B?VTlsMzBhSjhTUWtoS0NqRjhxSkI5S0Z5V2s0RFNzNGZLMzQzVjdmSmtjMDJQ?=
 =?utf-8?B?RmpxLzhIak1KSkxZcHdlMm93ZTR1ZzN0THBzTVJsZzN3c0hEYnJaejdsQnpZ?=
 =?utf-8?B?YXVTWnpHZldlc016N1YwTVRFVzJISk1oZzBDU2x1YXk5aWVZeXVqV2NHM0Fj?=
 =?utf-8?B?VkozYVhodEY2YnZ6eGRhamlvcGU3bzRDU1BIVllNd1VmcG5ndzUxTVVMTGk4?=
 =?utf-8?B?QlY1VWNBLzRGQ0hYNUFPUHMrUE5HQTl6Nm1pWU9nOG9Cb3RTRjg0UmVienAv?=
 =?utf-8?B?Vi8zY25lblU5TVQvNXEzd2l4TEc2cXQ3aUhBNHlBcXowd1RWazVzSDhKMUNw?=
 =?utf-8?B?NkhMWG43N2NGbzFKaWRSWjR1L09udUpMeHQ0WDQwTC8vUDhDa0g5Wm5sS0pG?=
 =?utf-8?B?bjBoM3ZidldFN0tRR20wRXRnTnhmbUxKKytlYzVEOFBya1poeWJQemFSZmRJ?=
 =?utf-8?B?NnhHV3k1dTZWQ2p4b001SXlPaXljODdQYnN2enVyTnBHa2FIYnlSaFczdTBh?=
 =?utf-8?B?WlUwdytzbnYxUWIvSzJRVllqT3ZwcmF1MXA2ZUNDQ2lwM1hjeDZYa3B4SE5M?=
 =?utf-8?B?Y0o4dmN0alRyUW5PTzFoMkEvNjc1VWJNcDVaL2tWVzFmamRjeXlsYTRiMVBw?=
 =?utf-8?B?Lyt6RDFGSDlVbmFYdkNBSW9UQmtkbjNWVitvaWN2VlhlVDBsbGhkUFRldUdO?=
 =?utf-8?B?MkNzSXk4cGtEVUpiVTRpRUVqdy9pRzJmOS9IMnI5ZHNoOGpvREc4K2x1NW1I?=
 =?utf-8?B?bUR3WVJNNUs2dHpUdFZKbnNBMVgwQy9tZ0cvMTN0cFcwVUtHYno1R0Myc3NK?=
 =?utf-8?B?QjQ3RE9XSGJkcUFhTy95RTJjcUl4eUZ6dG9CWTZzckF1Uk9sRXlBejVpT1Ra?=
 =?utf-8?B?Q3JncFdRRGNTVVYzUmlDcllzSHZ2cWo3TGNpNTlESnlTOS9oZHpCck1WWHVq?=
 =?utf-8?B?OXNIcGp0bU9EODdNR09tRHpNaGdiaHp4dm1mME9QL1dTNjIxRVhyTitnWXA3?=
 =?utf-8?B?d0dCb202MkxuNEJLMmRzcUJWTlBHQkg3T0ZuKzFYQUE5dXZGMC9oRXZmVFJQ?=
 =?utf-8?B?eTZVTHF3WUtqcmxZRnExL2pRVWJ1M3dNQXlOY2NNNVFLUjBXaDcxdyt6K3hQ?=
 =?utf-8?B?SEpjN3BBaVd4dTNBMXZvTjd6QkxaUldFZERuNHUwS3RvZUVIQ2Jxd0RhQk55?=
 =?utf-8?B?VmU5eFFhRWRHVThsVWdDbHYyeDlaMmxYUjVnVkVWNUJGMldmV0FQNFU4MDJI?=
 =?utf-8?B?cWxBYXhuUHRydTBic3ZyajVXVTdXc2ZKK1d5RU5TRWxQMlgxOEQxNGlXMDhu?=
 =?utf-8?B?TWRaUFB0U09KdFAyZ3NzUDZmUjdQRXhNZU8zbkhxTnArU05yZ2cyRkNUN1ZN?=
 =?utf-8?B?U3l6c1dJYmtnbVV2QmZha0VPVVRESXFodU9TZzNvdUZtVnB0Y0N0Tjc3dGZS?=
 =?utf-8?B?ajhNUGV6RjZ2VWVLb0hob1NtbklHOFlNWkNpSStCS2hGcG5QWXJVekVsVjNQ?=
 =?utf-8?B?eGZkNXVtbWJncnhKVk9Hajg1TEFjcmw5czJLcllSZDlweXgwc3BFYnVoTDBW?=
 =?utf-8?B?WmZBZ3p2aG9ldlg5Qi9WbDB4eGdSL1huZ3VmbndQbWpPZmJOb2tYajlkY0I3?=
 =?utf-8?B?TW9vRVBrZHdsYnpOZGpZUUtsd2c1OGpLY0NOejJRUE83RFRPWkNaZEVPcHBi?=
 =?utf-8?B?Wm94dlJGSDlnTWxmdENuMDlDWUxmcWtoY21wZFVQbVU0TnBYczlPdGxNazNw?=
 =?utf-8?B?RXRUcXdqZmxjdjZSaEpsOHY3WGxOaHFERWtIeGllM1U3WUJ0MXBCVE5PK2Fn?=
 =?utf-8?B?eXNQZXNBWERpL2tqeEdOaXJnRCtJM1I4QVlQa0E0SEhqS3d1WVJybE5MdFNY?=
 =?utf-8?B?Z01CQ1FlTklhWVBnUFRkV1BSN2g5Rk1qNkZSQTFZSERqOEJaWFpsMkJtQTd6?=
 =?utf-8?B?SXRkVVViK20xWUZFeTdUeU82UDVpaEUyZU50b1dRdnZISnExd1VINXhnc3kw?=
 =?utf-8?B?cVJ2SmIzTWF3OThrM1ZpVEdRcDRseWIzRzlWOStPTTlGR1hNMkd1L3dTSURj?=
 =?utf-8?B?Yjh3R0lERmZaMFZyNlpVNlpCeWMrazkvZVg1WE1mNjhCaGFJc0pFMXlCV2lY?=
 =?utf-8?B?NFJBcGlvWUFrUnpZaGZvcG8yNE1IVWVVRUs4UlRhMUNkWXROd2tGNEVLMFg4?=
 =?utf-8?B?SmIvWlFXWHl2Y1pUd0dEUnVzbnhmTFlpVDRhVU56eFBWY0gyeHh3c0FpeVBa?=
 =?utf-8?Q?OieSbv9HIQMi2YoA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 61a15adf-f0a3-4e1d-cdf9-08df399552d5
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:29:21.2511
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 8Y8EkspfnVfgwWC8YWPlsU4IOGs1CQW+j/igTmAP9En+2hrLTW//LEAGjxA+Z6v5/L+ZVHyJDRPlXSnziBIoT7hI4AYiWLMi789wfhiFygs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVUPR03MB11404
X-purgate-ID: tlsNG-d25034/1793701765-036D6A5B-09B49C8A/0/0
X-purgate-type: clean
X-purgate-size: 4738

TGl2ZXBhdGNoIHBhc3NlcyBjb25zdC1xdWFsaWZpZWQgcG9pbnRlcnMgZnJvbSBzdHJ1Y3QgcGF5
bG9hZCB0byB4ZnJlZSgpDQphbmQgdmZyZWUoKSwgd2hpY2ggdGFrZSBhICd2b2lkIConIGFyZ3Vt
ZW50LiBUaGUgY2FzdCB0aGF0IHJlbW92ZXMgdGhlDQpjb25zdCBxdWFsaWZpZXIgaXMgYSB2aW9s
YXRpb24gb2YgTUlTUkEgQyBSdWxlIDExLjguDQoNClN1Y2ggY2FzdHMgYXJlIHNhZmUuIFRoZSBk
ZWFsbG9jYXRpb24gZnVuY3Rpb25zIG5laXRoZXIgcmVhZCBub3Igd3JpdGUNCnRoZSBjb250ZW50
IG9mIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQsIGFuZCB0aGUgb2JqZWN0IGlzIG5vdCBhY2Nlc3Nl
ZA0KYWZ0ZXIgaXQgaGFzIGJlZW4gZnJlZWQuIERldmlhdGUgdGhlIHJ1bGUgZm9yIGNhc3RzIHRo
YXQgYXJlIGRpcmVjdA0KYXJndW1lbnRzIG9mIGNhbGxzIHRvIHhmcmVlKCkgYW5kIHZmcmVlKCku
DQoNCk5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4NCg0KU2lnbmVkLW9mZi1ieTogRG15dHJvIFByb2tv
cGNodWsgPGRteXRyb19wcm9rb3BjaHVrMUBlcGFtLmNvbT4NCi0tLQ0KIGF1dG9tYXRpb24vZWNs
YWlyX2FuYWx5c2lzL0VDTEFJUi9kZXZpYXRpb25zLmVjbCB8IDcgKysrKysrKw0KIGRvY3MvbWlz
cmEvZGV2aWF0aW9ucy5yc3QgICAgICAgICAgICAgICAgICAgICAgICB8IDcgKysrKysrKw0KIGRv
Y3MvbWlzcmEvcnVsZXMucnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgKystDQog
MyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQoNCmRpZmYg
LS1naXQgYS9hdXRvbWF0aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9ucy5lY2wg
Yi9hdXRvbWF0aW9uL2VjbGFpcl9hbmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9ucy5lY2wNCmluZGV4
IGM3YTgwMGM2MmYuLjJmY2UwZDBmNjggMTAwNjQ0DQotLS0gYS9hdXRvbWF0aW9uL2VjbGFpcl9h
bmFseXNpcy9FQ0xBSVIvZGV2aWF0aW9ucy5lY2wNCisrKyBiL2F1dG9tYXRpb24vZWNsYWlyX2Fu
YWx5c2lzL0VDTEFJUi9kZXZpYXRpb25zLmVjbA0KQEAgLTQ1MSw2ICs0NTEsMTMgQEAgd3JpdGUg
b3Igbm90Ig0KIC1jb25maWc9TUMzQTIuUjExLjgscmVwb3J0cys9e3NhZmUsImFueV9hcmVhKGFu
eV9sb2MoZmlsZShodm1fZ3Vlc3Rjb3B5KSYmdGV4dCheLipfX2h2bV9jb3B5LipIVk1DT1BZX3Rv
X2d1ZXN0IGRvZXNuJ3QgbW9kaWZ5LiokKSkpIn0NCiAtZG9jX2VuZA0KIA0KKy1kb2NfYmVnaW49
IkNhc3RpbmcgYXdheSB0aGUgY29uc3QgcXVhbGlmaWVyIGZyb20gdGhlIGFyZ3VtZW50IG9mIHRo
ZSBtZW1vcnkNCitkZWFsbG9jYXRpb24gZnVuY3Rpb25zIHhmcmVlKCkgYW5kIHZmcmVlKCkgaXMg
c2FmZS4gVGhlc2UgZnVuY3Rpb25zIG5laXRoZXINCityZWFkIG5vciB3cml0ZSB0aGUgY29udGVu
dCBvZiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkLCBhbmQgdGhlIG9iamVjdCBpcyBub3QNCithY2Nl
c3NlZCBhZnRlciBpdCBoYXMgYmVlbiBmcmVlZC4iDQorLWNvbmZpZz1NQzNBMi5SMTEuOCxjYXN0
cys9e3NhZmUsICJjb250ZXh0KHNraXBfdG8oX19leHByX25vbl9zeW50YWN0aWNfb3JfcGFyZW5f
Y29udGV4dHMsIGNhbGxfY2hpbGQobmFtZSh4ZnJlZXx8dmZyZWUpLCBhcmcpKSkifQ0KKy1kb2Nf
ZW5kDQorDQogLWRvY19iZWdpbj0iVGhpcyBjb25zdHJ1Y3QgaXMgdXNlZCB0byBjaGVjayBpZiB0
aGUgdHlwZSBpcyBzY2FsYXIsIGFuZCBmb3IgdGhpcyBwdXJwb3NlIHRoZSB1c2Ugb2YgMCBhcyBh
IG51bGwgcG9pbnRlciBjb25zdGFudCBpcyBkZWxpYmVyYXRlLiINCiAtY29uZmlnPU1DM0EyLlIx
MS45LHJlcG9ydHMrPXtkZWxpYmVyYXRlLCAiYW55X2FyZWEoYW55X2xvYyhhbnlfZXhwKG1hY3Jv
KF5fX0FDQ0VTU19PTkNFJCkpKSkiDQogfQ0KZGlmZiAtLWdpdCBhL2RvY3MvbWlzcmEvZGV2aWF0
aW9ucy5yc3QgYi9kb2NzL21pc3JhL2RldmlhdGlvbnMucnN0DQppbmRleCA3NmJlNmIzMjUxLi5k
OGQwNzRhZTFhIDEwMDY0NA0KLS0tIGEvZG9jcy9taXNyYS9kZXZpYXRpb25zLnJzdA0KKysrIGIv
ZG9jcy9taXNyYS9kZXZpYXRpb25zLnJzdA0KQEAgLTQ0MCw2ICs0NDAsMTMgQEAgRGV2aWF0aW9u
cyByZWxhdGVkIHRvIE1JU1JBIEM6MjAxMiBSdWxlczoNCiAgICAgICAgcmVhZGFiaWxpdHkuDQog
ICAgICAtIFRhZ2dlZCBhcyBgc2FmZWAgZm9yIEVDTEFJUi4NCiANCisgICAqIC0gUjExLjgNCisg
ICAgIC0gQ2FzdGluZyBhd2F5IHRoZSBjb25zdCBxdWFsaWZpZXIgZnJvbSB0aGUgYXJndW1lbnQg
b2YgdGhlIG1lbW9yeQ0KKyAgICAgICBkZWFsbG9jYXRpb24gZnVuY3Rpb25zIHhmcmVlKCkgYW5k
IHZmcmVlKCkgaXMgc2FmZS4gVGhlc2UgZnVuY3Rpb25zDQorICAgICAgIG5laXRoZXIgcmVhZCBu
b3Igd3JpdGUgdGhlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCBiZWluZyBmcmVlZCwgYW5kIHRoZQ0K
KyAgICAgICBvYmplY3QgaXMgbm90IGFjY2Vzc2VkIGFmdGVyIGl0IGhhcyBiZWVuIGZyZWVkLg0K
KyAgICAgLSBUYWdnZWQgYXMgYHNhZmVgIGZvciBFQ0xBSVIuDQorDQogICAgKiAtIFIxMS45DQog
ICAgICAtIF9fQUNDRVNTX09OQ0UgdXNlcyBhbiBpbnRlZ2VyLCB3aGljaCBoYXBwZW5zIHRvIGJl
IHplcm8sIGFzIGENCiAgICAgICAgY29tcGlsZSB0aW1lIGNoZWNrLiBUaGUgdHlwZWNoZWNrIHVz
ZXMgYSBjYXN0LiBUaGUgdXNhZ2Ugb2YgemVybyBvciBvdGhlcg0KZGlmZiAtLWdpdCBhL2RvY3Mv
bWlzcmEvcnVsZXMucnN0IGIvZG9jcy9taXNyYS9ydWxlcy5yc3QNCmluZGV4IDVmOWZlNGM4NjAu
LmRlZmY5NDdjNGYgMTAwNjQ0DQotLS0gYS9kb2NzL21pc3JhL3J1bGVzLnJzdA0KKysrIGIvZG9j
cy9taXNyYS9ydWxlcy5yc3QNCkBAIC00NzUsNyArNDc1LDggQEAgbWFpbnRhaW5lcnMgaWYgeW91
IHdhbnQgdG8gc3VnZ2VzdCBhIGNoYW5nZS4NCiAgICAqIC0gYFJ1bGUgMTEuOCA8aHR0cHM6Ly9n
aXRsYWIuY29tL01JU1JBL01JU1JBLUMvTUlTUkEtQy0yMDEyL0V4YW1wbGUtU3VpdGUvLS9ibG9i
L21hc3Rlci9SXzExXzA4LmM+YF8NCiAgICAgIC0gUmVxdWlyZWQNCiAgICAgIC0gQSBjYXN0IHNo
YWxsIG5vdCByZW1vdmUgYW55IGNvbnN0IG9yIHZvbGF0aWxlIHF1YWxpZmljYXRpb24gZnJvbSB0
aGUgdHlwZSBwb2ludGVkIHRvIGJ5IGEgcG9pbnRlcg0KLSAgICAgLQ0KKyAgICAgLSBDYXN0cyBy
ZW1vdmluZyB0aGUgY29uc3QgcXVhbGlmaWVyIGZyb20gdGhlIGFyZ3VtZW50IG9mIHRoZSBtZW1v
cnkNCisgICAgICAgZGVhbGxvY2F0aW9uIGZ1bmN0aW9ucyB4ZnJlZSgpIGFuZCB2ZnJlZSgpIGFy
ZSBwZXJtaXR0ZWQuDQogDQogICAgKiAtIGBSdWxlIDExLjkgPGh0dHBzOi8vZ2l0bGFiLmNvbS9N
SVNSQS9NSVNSQS1DL01JU1JBLUMtMjAxMi9FeGFtcGxlLVN1aXRlLy0vYmxvYi9tYXN0ZXIvUl8x
MV8wOS5jPmBfDQogICAgICAtIFJlcXVpcmVkDQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:35:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:35:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469479.1678284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBr5-00040y-Bv; Tue, 03 Nov 2026 10:35:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469479.1678284; Tue, 03 Nov 2026 10:35:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBr5-00040r-8p; Tue, 03 Nov 2026 10:35:03 +0000
Received: by outflank-mailman (input) for mailman id 1469479;
 Tue, 03 Nov 2026 10:35:01 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOBr3-00040l-OJ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:35:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBr2-006L9v-Tp
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:35:00 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9b8d1-bab6-0a2a0a5309dd-0a2a450a81ce-16
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:35:00 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9b8d4-f2d2-0a2a450a0019-d1558036a53b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:35:00 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a9a8d6cea8so6820445e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 02:35:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e77409821sm20111782f8f.0.2026.11.03.02.34.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 02:34:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793702100; x=1794306900; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=VHOWbxYOtPkeGR3TvR8QTqoCVAkxxHAQlwkHUC5fVcw=;
        b=g6AN2Zf8L5F4quUgRKrywidWH+lSrguIypC/exH8QGuLkO3xt1WX0Ivk+Knp3RfDxA
         SQVsbe0GfhstJ86RZ9ND2rtxdWcCwApxhPCN9hBSqTEjSjNmK6AEzOF3EDAmO0O2kQbR
         8ZRI4SUM4+w62VwWOwVpNFeHk5VUBi/p2tnvvgQN6K/nOFo+JJL8iUDLfzPqdafyYn+/
         h06RzK4evJvIvN8ZykVsUWL1TZFbZKkkraFabkOo8i99zFT/Cg73OdzT354EjgGm6VRd
         VHs5WvlBXOcEYN9BK3S9SFcdj7fV7GPZEFOyKV2dI1Ku05V5yKjmt0DZztQhjnKoYU1T
         89Ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793702100; x=1794306900;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=VHOWbxYOtPkeGR3TvR8QTqoCVAkxxHAQlwkHUC5fVcw=;
        b=EsA4uPWrEjoha83574+0Ed6q8xsHB57s4QHk9PlCjRsmTiLvj0w6l2Totb323twzZN
         L6Pn1cgIkU+9a96+nvqYtgwFehRDS1EEouhVZ7nVojKF1AtGcyaKW8NzANia95CKaR/i
         WoLpzLvbnMP9Idc7ZfU6uDOd2URNfCpPHNGbfOD9dCp05VLerQWQWn8KvTzy+Gi0MSRg
         MEsAm/DRKHDyYyTIphca8wBG7P5TIzol4guqGWtujHUf7+7iP9B2++bsPQ/qy7143aAR
         AVoX1CAP0Ev96LHx+bYWDjvRn/VGhaCj8Xbawi3OdSnC5ZXDW1l7oO/vO3hov0q+IPaZ
         zarA==
X-Forwarded-Encrypted: i=1; AKwUvByidzbLpYJ6ct7WwUIW9iMJYXTov1gUKu3CpFr+L+ggjtQBYEVJdivqVTdh7NDkf69LnAZFpVinf4Q=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/veVy+wCuYI7WuJwCYBahKmcMQi3BDcvH6v6wGJv7k9s1dQ5Aq
	7vpEzxzdk7g7yHJcmSe9+oG8H7tKtU8/A4oeq4lRMqBWGm2I7HF8bboKMR8zKzPINw==
X-Gm-Gg: AYBFou0XSynau3PNWkQw7T4TZ6JIQqg+2EIE2pamzNHIe2y5+tkuDZyxhrpICNOOxsx
	4tc2t8hQ1swkMuDCCBAlbJ8upb8pKUdvwp7PtqXpRhcfPHPazjMf58YVQYSdQcE77ahcyv1ZVfk
	4iyQ1GFZwo5cIL5oWsQkh/hTNVhzjY2YeurfaHjmS/HeGfw5YHQCQVDoaGJ0DCP1x0HmlbKZcmN
	MpnpDUKUfDbbsNeyT9VY2NeQi1uvLL7sbWyJZn+FBwSrc5y0LjR5xLezFxC2+epwj0L7jjIPWie
	JAE3Eta3rghDxnz9ZcIiIu+8exfeCOQwpyipT+IhnKRYO2iX9me6EtoCYJEWvWqmG8tBeWw9yUN
	N/3w/7soC2RxiWT76tOxpIA665d6FecaxMivTKaaYwEygCCUlzTe92PTHM11GWw8mDUDQwnpikR
	nZ1X5U3MbhsuJHdz7du/Fy39N0DdoCyc7KFnlhngRP5yPdPqgP6AR4Dhf5b92IHbvTbYXu1ojuV
	wonusDYeprab9OMngbv5HAfrU4we6+/cCkZRdXqCsKAaZpeAR7++7sslykoZrBbUnmZHZ3PUh0Q
	llKWw4tPpBWtuzRfe6OFQPmCq2+xQZCvU81mlEaNLWEM4ZPLq6nmamc2TMG8+jvxfKXvh/eGUPP
	gRtzm7IXCIUaJvp1w
X-Received: by 2002:a05:600c:37c8:b0:4a2:18c4:61a5 with SMTP id 5b1f17b1804b1-4ac16acd93cmr295063555e9.6.1793702100291;
        Tue, 03 Nov 2026 02:35:00 -0800 (PST)
Message-ID: <3949a7d5-8249-4656-86f9-1b86ecf6d01f@suse.com>
Date: Tue, 3 Nov 2026 11:34:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/4] xen/arm: acpi: resolve MISRA C Rule 11.8 in
 acpi_xsdt_modify_entry()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
 <3533b0c51c28689ae7ef05cf8ca88b49d72eba5f.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3533b0c51c28689ae7ef05cf8ca88b49d72eba5f.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793702100-514C7CFC-EFA867B2/10/78276251493
X-purgate-type: spam
X-purgate-size: 1254

On 03.11.2026 11:29, Dmytro Prokopchuk1 wrote:
> ACPI_COMPARE_NAME() casts both of its arguments to 'u32 *' through
> ACPI_CAST_PTR(). The 'signature' argument of acpi_xsdt_modify_entry()
> is 'const char *', so the macro casts away its const-ness, which is
> a violation of MISRA C Rule 11.8.
> 
> Use strncmp() with ACPI_NAME_SIZE instead. It takes 'const char *'
> arguments, so no cast is needed at all. It also avoids reading a 'u32'
> through a possibly unaligned char pointer.
> 
> No functional changes.
> 
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>

Worth mentioning perhaps that this (apparently) is an alternative to
https://lists.xen.org/archives/html/xen-devel/2026-09/msg00044.html.

Jan

> --- a/xen/arch/arm/acpi/domain_build.c
> +++ b/xen/arch/arm/acpi/domain_build.c
> @@ -253,7 +253,7 @@ static void __init acpi_xsdt_modify_entry(u64 entry[],
>      for( i = 0; i < entry_count; i++ )
>      {
>          table = acpi_os_map_memory(entry[i], size);
> -        if ( ACPI_COMPARE_NAME(table->signature, signature) )
> +        if ( !strncmp(table->signature, signature, ACPI_NAME_SIZE) )
>          {
>              entry[i] = addr;
>              acpi_os_unmap_memory(table, size);



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 10:41:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 10:41:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469490.1678294 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBwu-0005xU-2l; Tue, 03 Nov 2026 10:41:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469490.1678294; Tue, 03 Nov 2026 10:41:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOBwt-0005xN-W4; Tue, 03 Nov 2026 10:41:03 +0000
Received: by outflank-mailman (input) for mailman id 1469490;
 Tue, 03 Nov 2026 10:41:03 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOBwt-0005xH-0D
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 10:41:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOBws-00Cksk-D2
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:41:02 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6ae9ba3a-bab6-0a2a0a5309dd-0a2a450ae746-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:41:02 +0100
Received: from [52.101.53.10]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6ae9ba3d-f2d2-0a2a450a0019-3465350a47bf-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 11:41:02 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by DM6PR03MB5162.namprd03.prod.outlook.com (2603:10b6:5:24a::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 10:40:57 +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.0592.007; Tue, 3 Nov 2026
 10:40:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=Iup20RY6QR0osruMsEU3LEMQcmUGY59PF7JtlGAxc00yLAzSJ8K2fUUJo4RjtLL0PpEPzE03f20Wu2Y8HcXukmIStznPI0/jgwxeMVYcfHdUhZ8xfntblanMoopIptVpAgtu8IqBQaVQLJrCLYVWHGjNcIEKco6NbyG+H/kNPRGdRnnLD2wFrlqxZSzm+/5Byz+IkqjSTmEhOFnA6bnhQVdTBa2nmheqlVlgzdj/9CF+A+3vhwu1h7k7Bj2FjdLBqsvYLALXz6WAh7w+iCDVbmLFWY6oAPK7UQu8Yi5zdBgvH5RFFTIritycM01PG3CzzBEozH8WFiCH1aWZ/uXCVw==
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=B+rp+HkKiDpQ5odofpqzqWLGV+f0zTyHKKGfhBYkjPg=;
 b=wGs4Ly3DU+AVMHHduHuIjjbyQJ/9HaiGY0OpNjjrDdIhJKtSFjhARt9rfUPUjARRFxNP3FU+TJXSDbkcQtQMVTRcjF+CUrrrZHOacc+nuxQNaZVNbTRPjLnA7KsaL3O2q+FwSZ02Krn48TlZ1sPu9PB1P59yMLul0rAnAH9OOppSy2jp5d0LSoLV/MHre9K6GG5V2dgWYtTgBV6NanTis7ja+EK5H2vz4jB8cZzQ4Dt5zMiZKnOCuw3SP7+orexlDE+8r3K3pfw/ceNmhwEOKw9G0EUr5mAWvJIWpsxKInOaKd98Nu1/xxqhTRlX9EXJ/oEmYTJI4S0EiGcq7TOdFw==
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=B+rp+HkKiDpQ5odofpqzqWLGV+f0zTyHKKGfhBYkjPg=;
 b=m1oh/e4LxYFS02316b0VwnhvqCV78T4iR8ivqHOK7UoBVzu9K31X8K1AS9/ONB8nGg9Dnpde4HhdujN9xuZXpmTLCpemwb3OynlLSyoKmKV8oIkS9DFzAChQzz+stIxpCt88iG+M/ZS7sIQ0xatfHsgay4PP9lQGMSv2FhMX3jM=
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Xen-devel
	<xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, =?Windows-1252?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk
	<jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
Thread-Topic: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
Thread-Index: AQHdatCVxv5aMy5E3UirptM0GAVt0LcazasAgAAmNnyAACMIgIAAJnmAgADnBks=
Date: Tue, 3 Nov 2026 10:40:57 +0000
Message-ID:
 <CH8PR03MB82745557CA485A491C494626F0692@CH8PR03MB8274.namprd03.prod.outlook.com>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
 <0c81f171-7ffc-4a59-8f9e-69ad27371b96@citrix.com>
 <CH8PR03MB82743DC59D48A031251F71AAF06A2@CH8PR03MB8274.namprd03.prod.outlook.com>
 <7021681a-277a-4b40-9963-74e55dde35af@citrix.com>
 <e499efd0-453c-4885-9e7a-388f21e45da1@citrix.com>
In-Reply-To: <e499efd0-453c-4885-9e7a-388f21e45da1@citrix.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH8PR03MB8274:EE_|DM6PR03MB5162:EE_
x-ms-office365-filtering-correlation-id: 0781ce06-2a18-483a-2979-08df3996f1ea
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|38070700021|4143699003|5023799004|11063799006|56012099006|261009223027099003|261022075727099003|261022105027099003|261102123227099003|261021121427099003|261028144727099003|261026121527099003|261026140227099003|10067099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 48XHy6+ru2eVv8UFK+Ss370TQtZ4duzAdQwVfTqcaHbrUOOx/Tn4dvhD/2P4G4vYZNjDFqORxZlvGZtUshBu2phE+d7yU75ctZm0Ebl8ARiLhGamlSnlf6jwDyXke+CLATAxHO8KYBX6xxe+MGOwlN7zE0z1gK+VDayKzuLRoBSa40mEalnRs3NAWcgoLfBpUGJLEg8TBwOWPCbWH1LX1Fn9X3RKTjK3bIrV3l57PpQ3OXRLzg/JZWMfk8rZmHL/Erftk1Zgb/febrjgz9eVWwPCy/6V8Dd8FsPvKO6dq8paFgzwNwExOG/t8tzoW8JJigOdOAwn120OkO/tXQGKpzhXs0c785246T7nG/uF1O0irUGWSU062+N2VOu1nrCZSE22IdBgvTCU1LxfNztw8fhkpBLG/B4C9Sphl9xT4K+WqxzMwAfxdeGWtTljlIC2hQEU22xjKsHFkLOSb3NQkFXobGrRIRDoLl777oUcaLsoYbF27cZE+LwQteONVY+8KRATUIW2QlwEJUjiGBuZa0SvtRHjTGyXmSwHqhIkrBEF7/VmbaEE/KcO8lZo+C7bF5EbjhUdIJ8ODg/DGjhWMpcWn1GzPQQHCNOTcflp/DuUNqG/e91Reh6PHYtC4+Z1lCp4AllTPB5vh7y+oeXU/fGaidcZ9QLLSRoltaE1G+nt5eOpyd55aqx5sNL/WJLX84cw/hMcYR5cF6cC8Nt0ZXfYVR3YueJkqE18cgRX9Bc=
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)(23010399003)(1800799024)(366016)(38070700021)(4143699003)(5023799004)(11063799006)(56012099006)(261009223027099003)(261022075727099003)(261022105027099003)(261102123227099003)(261021121427099003)(261028144727099003)(261026121527099003)(261026140227099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?Windows-1252?Q?NE7ciHerTZXdNPG3zXZ+a1oRT6jCOgTeYLjm7h+dQ25CeQduKsyLw0bG?=
 =?Windows-1252?Q?UgUY98kVKMWQ1HtziSANDs8kD9PBNbc2ntO4O8jkRPilw5i2yK+v9evr?=
 =?Windows-1252?Q?VYc8c7/6ftcHdQqTPtRpaw0iFAY7dRtoR9T94hWlo4HfKfs2ldhGFAoo?=
 =?Windows-1252?Q?Ik3ODfJNfMTtBQf3XRxEiiRdkS3eGInNibuJSdU1MJqR0NFyO76qQjY7?=
 =?Windows-1252?Q?a+b1lZ5+zNUi6UNO558wtoI7foQ4Os6FApmuzpHmyiD6LzehYawddWqC?=
 =?Windows-1252?Q?oYgPTeeGz9WL5nWW7cTo7OqW266bm2T1wYdPB+k8+atGXwyYoDycOz20?=
 =?Windows-1252?Q?qEphJ8rk2j/ukJ/ypp3RYvm/YPHC4F0aDC1lwG3B2ebWHKdgK1J3QAqf?=
 =?Windows-1252?Q?qZDmoKPaXV2tLerKQ+p/KkIzZ+nwzMhD34r3sz8BWm1oiQ+ASPs3Jqxt?=
 =?Windows-1252?Q?FWkCOrWoSYu/xK75xWb86v1OXqwdx4gOc4lffZnCn7H5WOqGiDnIc7LB?=
 =?Windows-1252?Q?EUzVAWEHEIZgkf5Qjy28b2RK2+ltf4g8l0WDOZT92M4HUaRKJVeZsKN8?=
 =?Windows-1252?Q?MZ2VXUMWQH75vCoN6HE/F5D6Hy0nk2IeTo/l3mrHHjxY2irZJ93bSDD8?=
 =?Windows-1252?Q?rwNS1zgg8xnG6Y7+6TUlu2igDsjpFZsYfdaoWqPyDOnmojnJYHDuJxhX?=
 =?Windows-1252?Q?I1b0+eYfpPUOmzgyAy3KHG/II1SMzFWdKqaSyWRRk1+TkuaZb6GPV9XR?=
 =?Windows-1252?Q?nkbCLkrFxcG16M074Yv3SuNYiqTYFetFZhjjnq019ApdAYBBKY80hgOP?=
 =?Windows-1252?Q?dBuBfM6MxctmbR+bqsBwy/FFDEt91UGivS/KmdGGh66dlriaON5XDKVH?=
 =?Windows-1252?Q?6W56vRtwBJypKA5pNysrcWSAfct9kCKsXaSd1db6FvWX1STFI2TOQEze?=
 =?Windows-1252?Q?+RKg+JGXNNJYkW6ge2TxlnwlbRlhL5XmVm38cK/MXtarPaVmLoixyBC9?=
 =?Windows-1252?Q?GZhMJs+piz84zjseVUCGWwkQZiSOTGxtgNI2dr1YUE/Oelf3IUbtvzK0?=
 =?Windows-1252?Q?Vpt+a/yJPVgzQb7DLHcSK1M4Fpn6JPslCsno0Mxa4U9RC5FHkiZZqC38?=
 =?Windows-1252?Q?J14yfQ3iF+L+5pwIQlngdfZbHFEMeCe/Z5YRAAl41XAbGlcAaFdUuqr1?=
 =?Windows-1252?Q?W2k1YkfaZ0UhsophVRtSF7PApiK92rZgVH3/8q5B4kMNQxZPZ3xxrTTP?=
 =?Windows-1252?Q?wSxucdJiQZwl5NSWI3zvvHZl6nWYbBjr9kAfg6XbcYoqoKRl7n7/8nnD?=
 =?Windows-1252?Q?AP0uWrHpuHk6O0FcZlhq1bR53GBfOR+Q5NyuyzR6c45bvvJnq2c9LsBM?=
 =?Windows-1252?Q?S1i0+Uj1eOqVs8GlJeH7FIZPh4+M2xfxv9oeaPzjx/uJCI2EP8H+dUeM?=
 =?Windows-1252?Q?OAsSL+OGu1/kjy47RHtIb5Dj2QSKvHHcm6nfqRRgn1u88FkD94chvHvb?=
 =?Windows-1252?Q?zegtWej+SnlY7SVdQ7RPsVMfOLwK8NKKKBvv7s2zFIHrGUziWk5EeSQC?=
 =?Windows-1252?Q?TM4NEz4Cz9UjRsWUatkDWxg05JVs97JVtWrZckhw+ZjIGqONC0gV72zq?=
 =?Windows-1252?Q?9Me/AP6ninRFsAX7wC2MD1XlaONBgZ6Gej7aNC7JUwsPCIFK/22GL5ba?=
 =?Windows-1252?Q?XA3Outpl3dq1E5G0W6hHaO0g7dO1gLcpe5KW0yXVFlx8GTwv7Od5Y53e?=
 =?Windows-1252?Q?b4l2BqEnCq18JiWTR9oRZU/gtKU1np86B4Z46G9ADZh22OjHT8ZVc7RB?=
 =?Windows-1252?Q?p1NuzRYT8NWFfrfWHm2+0+8suSTYbdsrPrq8C826RXT1az6dCnxbuWfl?=
 =?Windows-1252?Q?cIjzWhAnvwDnww=3D=3D?=
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0781ce06-2a18-483a-2979-08df3996f1ea
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 10:40:57.5341
 (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: eBi5xoUqf8jyGEJV251p8tFniaaHYrPWdTgoJniTy1w1nuCtBXKN5OwCO8LEXlgghdjEKVObbkOAekUxrqpVooguPrkyMVglxRISzsmt/eo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5162
X-purgate-ID: tlsNG-4011c0/1793702462-52EDACFC-D79D808B/10/78276251493
X-purgate-type: spam
X-purgate-size: 5424

> From: Andrew Cooper <andrew.cooper3@citrix.com>=0A=
> Sent: Monday, November 02, 2026 20:34=0A=
> To: Ross Lagerwall <ross.lagerwall@citrix.com>; Xen-devel <xen-devel@list=
s.xenproject.org>=0A=
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Jan Beulich <jbeulich@suse=
.com>; Roger Pau Monn=E9 <roger@xenproject.org>; Teddy Astie <teddy.astie@v=
ates.tech>; Jason Andryuk <jason.andryuk@amd.com>=0A=
> Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit=
=0A=
>=0A=
>=0A=
> On 02/11/2026 6:16 pm, Andrew Cooper wrote:=0A=
> > On 02/11/2026 4:12 pm, Ross Lagerwall wrote:=0A=
> >>> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> on behalf of=
 Andrew Cooper <andrew.cooper3@citrix.com>=0A=
> >>> Sent: Monday, November 02, 2026 13:54=0A=
> >>> To: Xen-devel <xen-devel@lists.xenproject.org>=0A=
> >>> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Jan Beulich <jbeulich@=
suse.com>; Roger Pau Monn=E9 <roger@xenproject.org>; Teddy Astie <teddy.ast=
ie@vates.tech>; Jason Andryuk <jason.andryuk@amd.com>=0A=
> >>> Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the clea=
nbit=0A=
> >>>=0A=
> >>>=0A=
> >>> On 02/11/2026 1:46 pm, Andrew Cooper wrote:=0A=
> >>>> Despite prior information to the contrary, APM Vol2 revision 3.46 Oc=
tober 2026=0A=
> >>>> has been adjusted to state that the vNMI fields in vINTR are covered=
 by the=0A=
> >>>> TPR cleanbit.=0A=
> >>>>=0A=
> >>>> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_s=
et_vintr()=0A=
> >>>> rather than writing into the VMCB directly.=0A=
> >>>>=0A=
> >>>> In svm_inject_nmi(), fix an inefficiency from the introduction of vN=
MI.=A0 Move=0A=
> >>>> the reading of vmcb_get_general1_intercepts() to the point at which =
it is=0A=
> >>>> used; tt does not need reading on the case that vNMIs are enabled.=
=0A=
> >>>>=0A=
> >>>> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")=0A=
> >>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>=0A=
> >>>> ---=0A=
> >>>> CC: Jan Beulich <jbeulich@suse.com>=0A=
> >>>> CC: Roger Pau Monn=E9 <roger@xenproject.org>=0A=
> >>>> CC: Teddy Astie <teddy.astie@vates.tech>=0A=
> >>>> CC: Jason Andryuk <jason.andryuk@amd.com>=0A=
> >>> I forgot the extra comment.=A0 This bug is hidden by:=0A=
> >>>=0A=
> >>> =A0 =A0 /* The exit may have updated the TPR: reflect this in the har=
dware=0A=
> >>> vtpr */=0A=
> >>> =A0 =A0 intr =3D vmcb_get_vintr(vmcb);=0A=
> >>> =A0 =A0 intr.fields.tpr =3D=0A=
> >>> =A0 =A0 =A0 =A0 (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;=
=0A=
> >>> =A0 =A0 vmcb_set_vintr(vmcb, intr);=0A=
> >>> }=0A=
> >>>=0A=
> >>> at the very end of the vmexit handler which unconditionally writes vI=
NTR=0A=
> >>> and hits the cleanbit.=0A=
> >>>=0A=
> >>> This is an absurd codepath.=A0 SVM has virtualised CR8 since the very=
=0A=
> >>> beginning, and put in CR8_LEGACY for Windows to use even in 32bit mod=
e,=0A=
> >>> so the only path modifying TPR is a non-accelerated write to APIC_TPR=
.=A0=0A=
> >>> =A0That path can be updated to modify vINTR, and this logic dropped.=
=0A=
> >>>=0A=
> >>> ~Andrew=0A=
> >> The APM says "(Offset 60h=9667h)" for this bit in the current and prev=
ious=0A=
> >> versions. Perhaps that means that more or everything in that range may=
 be=0A=
> >> covered by this bit in future? In which case more extensive changes wo=
uld be=0A=
> >> needed to avoid future breakage.=0A=
> > The vINTR field is complicated, because some bits are unconditional,=0A=
> > while some are covered by a cleanbit.=0A=
> >=0A=
> > Byte 63h (V_INTR_MASKING, vGIF_EN, vNMI_EN, {,x2}AVIC_EN) all control=
=0A=
> > virtualisation behaviour.=A0 These are unconditional, and I bet the 3=
=0A=
> > reserved bits in there will continue to behave in the same way when the=
y=0A=
> > are given meaning.=0A=
=0A=
V_INTR_MASKING is covered by cleanbit 3 so I'm not sure that logic holds.=
=0A=
=0A=
> >=0A=
> > All other bytes are state of the vCPU, and are (now documented to be)=
=0A=
> > subject to the cleanbit.=0A=
=0A=
VGIF in byte 61h isn't documented as being subject to the cleanbit (yet).=
=0A=
=0A=
> >=0A=
> >> On a related note, I see the APM says this:=0A=
> >>> If any VMCB fields (excluding explicitly uncached fields) have been m=
odified,=0A=
> >>> all clean bits that are undefined (within the scope of the hypervisor=
) must be=0A=
> >>> cleared to zero.=0A=
> >> AFAICT Xen doesn't do this. Might that cause breakage in future?=0A=
> > Fun...=A0 That's incompatible with the previous sentence.=0A=
> >=0A=
> > Xen follows the previous advice, and sets:=0A=
> >=0A=
> > =A0 =A0 vmcb->cleanbits.raw =3D ~0u;=0A=
> >=0A=
> > early(ish) in the VMExit handler.=0A=
>=0A=
> It would appear that AMD reserve the right to retroactively introduce=0A=
> cleanbits.=0A=
>=0A=
> I maintain that it's absurd to suggest both "write ~0" and "clear all=0A=
> cleanbits you don't know if you write anything".=0A=
>=0A=
> The advice should be "write the cleanbits you know" in order to signify=
=0A=
> the VMCB as clean.=0A=
=0A=
Both approaches would surely function correctly but the doc's suggestion=0A=
potentially allows more caching if a new bit is introduced (but more comple=
x to=0A=
implement). In any case, what Xen currently does wouldn't work.=0A=
=0A=
Ross=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 11:02:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 11:02:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469509.1678302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCHK-0000se-LY; Tue, 03 Nov 2026 11:02:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469509.1678302; Tue, 03 Nov 2026 11:02:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCHK-0000sX-If; Tue, 03 Nov 2026 11:02:10 +0000
Received: by outflank-mailman (input) for mailman id 1469509;
 Tue, 03 Nov 2026 11:02:08 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOCHI-0000sO-K0
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:02:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOCHI-006QTy-0A
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:02:08 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae9bf2f-8faa-0a2a0a5109dd-0a2a4502ea16-0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:02:07 +0100
Received: from [52.101.201.71]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6ae9bf2d-6ca4-0a2a45020019-3465c947052a-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:02:07 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BL1PR03MB6023.namprd03.prod.outlook.com (2603:10b6:208:31b::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 11:00:37 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 11:00:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=W9EmH48V6yo/AWPehpEHTSzO9+RS+5CAJpmWVRbRFrva0RjkFJuDXs+8s3diokYYmM7k+Nm8Bts3xm1F9t5vH4dHCiBJEZ0sBjLJWhv7IEV5V1PcKqIAbDtJWIBrWAxXmkkuZ0rhkJn2L2iwGi/OCe1qMT5WUXob7tFZR8Pf4zlSe4ZfqN+DJNY4410c7+GCNJbdcvPEbHWc3e4U4y70P4dZu2R3hFR2L09eef8XBc4al23xIrK3CelbSz1Y5q2/nbRZ6OccLufJac/A4rNqByJMq+0cZM6q4dis+2xjN9J9+iKPQYiJqIBBXdrlcCJQ6t/eG7qmCQlZxXowyw7qFA==
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=+Kbflmflv6ljKJCfmUEffnbrB8ReuLm6KXSPJWqAABI=;
 b=alBcd1Pd7NEVwnCI6+c+eGewQ1BnivE83/JSewOSxO8w2oEKzo1PadMHRjjgMeMzR9joPaXgZM/a3GvDfCbB5S2H/3c1dPoaEd6TYvCyEsa5Sxv85bPBP+GcyVu/wJV4VX9LzrdVOFWuxevu3+YlyH/0aaR3gx4KD+8tRZqw7W6jVQPPDHJ/CFNxiJlKJt3wBcQg+aM0lre9JSmSCdelv7Kpcnjo6W9xypglAyEBL5/1ZUZsFWX/KB9HAD4k+bEVjfjIMx1rOyTptZsn23w2bTV+oA+VYx4B0oxZx5GSGQV+zoLc5MAI8Fqbzuc6qAcjAHZIr7fMYzGI9QZ9HS7qNg==
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=+Kbflmflv6ljKJCfmUEffnbrB8ReuLm6KXSPJWqAABI=;
 b=cW1sP5UvoGmQdp3YRlexn9OiykLcay1GZh+QPQ1PajfMGmu8fVnHMOvYdyWOQhKwLeyQrqbKkSgXUZHsthyvK664pQfw6P7gFBv5cZyvELosW1JIJlF+JxRFL4uS/1pvmB9g2mXuWIX3F1SdUop7/DKrt5tnPchPWB0M/DC8Tr0=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <b3e50554-a045-42b7-908a-7e7c34c0dd90@citrix.com>
Date: Tue, 3 Nov 2026 11:00:33 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/pv: Improve code generation in
 async_exception_cleanup()
To: Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102174234.1764070-1-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261102174234.1764070-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0224.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a6::13) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BL1PR03MB6023:EE_
X-MS-Office365-Filtering-Correlation-Id: 5bb80e0b-d041-4de0-a585-08df3999b0ed
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|23010399003|1800799024|6133799003|10067099003|22082099003|18002099003|56012099006|11063799006|261021121427099003|261102123227099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	N38ZqJjCfPmqZreZpxiyGaUPC2y1Hd9i40fCWvQi0V664igICzZOADJiSTbhH2DB18PbzTh+iiNdJVBNBlFrIOpimA7otGDyRzVprXQl0FWTusVkoUJr0GA04jyre4lDMC+uWBBXCwbp657c8ybXkh8l8WTJJhz87fSJLgkGyF1UmK1/LKKoNLBzrzfEcU+Kd8jW9CPjEfYmin+wnRDAE8526xwss4PbYJ+GMn4/QiG9E1/2nvRP0ZqdKPcmF28EjJJk0vGx4lI4zcgqEHcEiLnhbXb5R537FnsmtRUvitlFldtdQeu4CDlbQxTun36mhoxFtgs3c6RaX8ANFBy+cmcgRknB7igdguKDiHk6/cWDnu5aziEkjI03r7K1J0Az+aMgnie/95UvjLl/BPnKUtiZMDX/fyZg87cV1ZFaltNttTlO5SkhIWtQ46Egs3q7HUFxF/E/ZNHqRMIg7SB+cQCxZ0HpKGg5n1prHjzLJZt+WcHXA/827AOZm0A1DydoJiBsjwQX/pL04oykr+p0Bp4ywcIlOf6nuaKHrq+tohJa79xkl8E2b6MjKFzGK2RuQfQkfQuyZIjtpGAK7ZJzGp5zuTZXhRB0mqMOZ9n8b32GVBfSEWgyNDN7QTQFTzxvnyrGpoBdTDo0jf0XpK71VXs0Bi9e0xKDSwbJn3EVND4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(261021121427099003)(261102123227099003)(261021123027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WjJnalI5TFFQQ3QyM3B5T2Z0dmJHL0lKbm0rZ0VDL3NUNGVTUW9uazZFU3No?=
 =?utf-8?B?cFlQdWExOVZvcC9qQlNqSzBpbGp5K1VMSFY3ZlhkTHQyVGJBbkFMQlUwTG1Y?=
 =?utf-8?B?Z3dMZGlIdkFuRGR4S1VJNXI0eFhXdklWeml0Y1cxYVNvZXl0Y2tleFlNK3lH?=
 =?utf-8?B?S3dEeW5sZ0xKZ0xUOTB2ZWp0cElrUDJJUVlYTXpKMWY3MXlFWDFMM2dpL0w0?=
 =?utf-8?B?UW5OcGg4UEhXcEprMUJLSTB4dDU4V2t4N1BYam4wWXN0dDlYQW1zSkpma0F1?=
 =?utf-8?B?Sk1yNWZnUFBENTkzbk9qTUN1SXFQQW5DL055WDRLMjcwUHoxVDZQbWJXcENm?=
 =?utf-8?B?YzFrMWVYTzE4VTVpQ3JXL3psTmd6ZnJlY3VwYTZNL3VMTUJnTDd1OEVIOWk3?=
 =?utf-8?B?MTB3NGpiOHdLeHgxTm9jb0xiZTlMMVlDUHNiSjRWeHg2MmhvL0RmSDF4cldt?=
 =?utf-8?B?YTJPYXBmY2tKUWRETmxhY2ZhUHQ1ZXpOamNDR1p3QjJiaG9TRi9JT1NlZEV4?=
 =?utf-8?B?bnhEaHFOM1JrbGZ0aS92cS93cGZmdlFZZXJaT2VZZmZTekVmbVp4Z0dCOE5U?=
 =?utf-8?B?ek56bGtoQVZiKzBZSkFmdG1HeEVJQUhZYko4aHlpZW1ONFFKbHdKdTdqemxO?=
 =?utf-8?B?a0FhZnFkOEtWVDlNcEpkSmR3TXFvQmd5NVRkQUFPNXBPT3VSWGFLanJQbnpm?=
 =?utf-8?B?NjM3Y2EvMUhaNXJEelZCNVdBVkVXTFdUbklJRWJLY05HM2l2ZmY4VjdudDVR?=
 =?utf-8?B?R0pDbGx6cU94bEYycCtnejkwOEFiWnNmcXdGWDdEdUt3TC9lOE9JSjc1ck82?=
 =?utf-8?B?emd4SlFLYzU4Q0QxOHUwbWRXWG1hMnEyMHczWWhCdEVvc3ZyT3BacDZBeHc0?=
 =?utf-8?B?WnJjZVB6eVozVHdGTUdmZmk5UVV6WjY4VVZkWFhkZm9BQTdPYzM3a3hYQnpS?=
 =?utf-8?B?MXFyd1RHOHJNeGUxaS81RXZOOVdZSFZFamc5R3JKMTdJS3Fud0JzOGxHSHhK?=
 =?utf-8?B?M0hPb2xVNWp6d0U1dlhidU5leVc4SXVuU0xuWVVucW1WMTIwS3dpRU8rN1RQ?=
 =?utf-8?B?RDlTNGdzZVVtR2REMUNtNzRlZlJoR1F3RVN4Ly9aOEFFbDBydE44RzlxVEE4?=
 =?utf-8?B?cGpreUx1eThUNXhTQzdIakkwamN0emp1ZzRsYTNsQWhwNUVlWk40UVRlZHNW?=
 =?utf-8?B?UThzRGxyT0IwSTEvMDBQRnRTK202TE9YZzZYbkRFSkhPREdRRXRtM29WcExy?=
 =?utf-8?B?dmhhcjc3S2tnZUtGRU96NlRESFNqTG43ZEFBVThnZEZFQURZZU42R3dIWVlO?=
 =?utf-8?B?RmxVRFJ6c29saGlSN1dGNDViREtERWdjeW4xVmpyaU1nUHJ1eWNrTENOUWFF?=
 =?utf-8?B?SENJSEpXc3dOZjJkMytNb09YaCtFVXBlMjl0a1RkdGUxSzlkSktpUUZaOGJv?=
 =?utf-8?B?c3Ftc29XTUdmTjFWbVJON2lBNXlGRnpBWnJMazNpTEE3UGNjQjZXWXc3SFVH?=
 =?utf-8?B?K3VmV2VzNG1JZmo1TzdXc2VveE9uVXBaeUlkaUNSUldUVGpnblIyb3d1c01H?=
 =?utf-8?B?TzJzUDBiVmdTMHdUa29DMFNkN1d1R0s4Q3A3YjcwRENSNVpINFVJd0RtNU9i?=
 =?utf-8?B?RFFFMEF2eHdKUmVyWVN4UjcxNWwrNXlzWXpWVE1RYzZVbWNNZjZIQ1k1TWtO?=
 =?utf-8?B?aHVSblFyUmRpckpIWmw2MGVkQzZnbkdBNDRjNVFmVGx4Q2w1dU91RG1yaWJP?=
 =?utf-8?B?V0tLRzdIYysxQktGOS8vOWM4VTR1Y0FqZVF1aUNJdmJwR2RBWjhlblZxWDFj?=
 =?utf-8?B?bklJdWhWc1IwZ2FqM25PUzM5OGZCUlJTY0lCUnY0SGNOR09lRVZ2bjBZL1BO?=
 =?utf-8?B?a0xPS294ejhJM0t1R29QSmFyQzNPbVNRRHMwV05QVmRpYi9XSGNWdEZYUHFE?=
 =?utf-8?B?cVI2dDUwc2FCZnZHTDdXYnJJQW5LeitCRFJTV2VldVpycG1mWEpLV2pVQnlT?=
 =?utf-8?B?VVJoN2IxMEphRC9jMHlHY0p4WXZHNUdxNSt2UG9xWkZhSzZJMldZTlBaRGFi?=
 =?utf-8?B?eG0xT3l6WVJ6YWY0MWV1d3hTcVNHNlZYRTBkd1MyaWwzVThHMWViaVZYaEx1?=
 =?utf-8?B?YytIb0FJd0xYc0dtb0dQWjg2aHpGTDF4L2x3eEtqRkhhSW1ZcUFRYVVIeTBF?=
 =?utf-8?B?endaVW1OdHVhUUo1T1NBNWtFTmFEZ1A4YUwzZTIrNjhHanM0dWNrYVByakFw?=
 =?utf-8?B?Rk83blVDL2V5b0UxT3owc0NLRGpEbEVxUmRjaFR1VVN6aUlMNCtjNEdkV0I4?=
 =?utf-8?B?U09BYW9Wemk4WG5BbTh4RzRDNnJidkZOTUo0dmhVT3lqRmFUelp1QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5bb80e0b-d041-4de0-a585-08df3999b0ed
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 11:00:37.1911
 (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: 0YnX3VnoyGHp2j+TsJUoIrZ8m6sgO3nIFOKN8abv4EeGXquteRxWm7g51OItHtW9A4d9hxmVd8y1D8S9DUbc5f5qUF6w3BlSAx9SK6deYVE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR03MB6023
X-purgate-ID: tlsNG-720697/1793703727-F02992AC-1DA8561E/10/78276251493
X-purgate-type: spam
X-purgate-size: 1288

On 02/11/2026 5:42 pm, Andrew Cooper wrote:
> Use new helper functions to simplfiy the logic.  This removes an alternative
> behind the scenes.
>
> No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monné <roger@xenproject.org>
> CC: Teddy Astie <teddy.astie@vates.tech>
>
> async_exception_cleanup() is complete nonsense.  It's not remotely close to
> how interupt blocking works in x86.
> ---
>  xen/arch/x86/pv/iret.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/x86/pv/iret.c b/xen/arch/x86/pv/iret.c
> index 39ce316b8d91..0efc0c7f12f3 100644
> --- a/xen/arch/x86/pv/iret.c
> +++ b/xen/arch/x86/pv/iret.c
> @@ -31,8 +31,8 @@ static void async_exception_cleanup(struct vcpu *curr)
>      if ( !curr->arch.async_exception_mask )
>          return;
>  
> -    if ( !(curr->arch.async_exception_mask & (curr->arch.async_exception_mask - 1)) )
> -        trap = __scanbit(curr->arch.async_exception_mask, VCPU_TRAP_NONE);
> +    if ( !multiple_bits_set(curr->arch.async_exception_mask) )
> +        trap = ffs(curr->arch.async_exception_mask) + 1;

This should of course be a -1 rather than +1.  Fixed locally.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 11:16:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 11:16:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469526.1678311 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCV4-00033o-PH; Tue, 03 Nov 2026 11:16:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469526.1678311; Tue, 03 Nov 2026 11:16:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCV4-00033h-MY; Tue, 03 Nov 2026 11:16:22 +0000
Received: by outflank-mailman (input) for mailman id 1469526;
 Tue, 03 Nov 2026 11:16:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOCV2-00033b-TH
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:16:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOCV2-002S9f-A6
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:16:20 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c280-bab6-0a2a0a5309dd-0a2a4505a608-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:16:20 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c283-4cb1-0a2a45050019-d155802fe1cb-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:16:20 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4afe2d546f9so24018775e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:16:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b8bd8esm24629532f8f.42.2026.11.03.03.16.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 03:16:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793704579; x=1794309379; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NVEMKtNYvRSjGBOpm5zs4wHJtOTfpmZQ9Ifyj9cC1VA=;
        b=QQH6n38PwVpwQOJaTOuDCRmK2zzmHXz684seHa+CzkYtd4a9TOWgJnNIViufR3kj4O
         KyeF/QMi8DryZ7tf3AL/7li/AakDZSlNjJOrRXOZ0ypI+Tk1+6zaigWKCkslVVI170cl
         WoHXGrN7qun3JhpVXUjkghvD4XSjXRZiQs/73pOkSnzOBXHtMcCTBmXjpFxNI9YTnSEX
         qkLvr9BdltHV6/tzpQT21tzOAxRzpiZqL8CNPMvIf0wxn9PxdDoM4F9Wjj6uhJzttVw1
         wiKZA9Z0zRRcTCMechSyikTpEAvxksTFEKG3R65MRLrd6FN1PPehNj6xPs3HoSP8MXtx
         HYiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793704579; x=1794309379;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=NVEMKtNYvRSjGBOpm5zs4wHJtOTfpmZQ9Ifyj9cC1VA=;
        b=u22/i8EtzTn7YduRdrUPy4pRdMa7pB7+iGJNBdawLiJGCuhlhj75ZoPJ7cDeIyMGXq
         vTM5EZ8sqB5OGpWPgHxFfZA2p4H63BdAkSjw6by155FnEJ0HSSDx0UmvDjyHtVAEkMCC
         je1ETHw33zi2oBDUaAqOJlVHy8315LvLT2C+DiwpVbcKeOt62a5bJMqG+vK3bGJY+Chz
         d2ydCtFEGqZE8a4vyOHEpkS33D7Zgq/ps2w/1Z+eQb0Ms6GYmWPHr6lOSdQX8ESV5Xx4
         zSO9dMMo+pDlBRbJMVrcG4ogX/cY+PyuQRyQFylSX4C+YRAbXaXhn96qBOlhvcRHro4c
         kkqQ==
X-Forwarded-Encrypted: i=1; AKwUvBymnFn1GAmjyqn2Am1qS6aNeLZZEaK9rBNfutHjpCrre1+3tBNhV8eDo5WsvvxYUEtQlp5MKrW4CSw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+VSeV1o7MXiBSJBm4ReCvwZugRAFR3R40XqNrG8BJ5/5HNdq1M
	WBEs4zY9hd6zRjbHPS+dief2T5XFxvLjGhcNRSZGq0FTkRrUOQHnoICMYuUBQZpWRA==
X-Gm-Gg: AYBFou3U5Pha5W2//ki+o7FD1bie6vka0vxWiSs6BXhrEvxJRdZ4UtVD8C3jnqMefeG
	aqk66PY71I2QERHBp/drNECPqhvD+VIRGhudCpSzFEVqGi6tCUkCfWtYU1Sgpj257qMID6SVzUb
	53IMTS42z9+sztHPnn1DmEYa3H36nq3gfWmaaCLjj+1vzu9fgx196mZuhikQWRvgtFRT6BhGkt6
	VMDrXSbuGxCdnHPs23KKPlQeiEfTFL2cmZxa29W8aP5+1jh6ptt8C//6XJ4j7Sh5BRe0S3CYi2Z
	oJX1UMllZOCV6pUea2wxYfNZo0+SsOhlzs4tuUeyhPT5RScj8phePW1FgVFylK97TLWZNdvyzqM
	5vCJWzsAWB7d2Px/y4P8CDMF5rmgzvvE6GZyJGW22UrUzOv7utnbmTfftCyxOiblwLtbx5MCcVi
	ej7uhEW/wWIFrU+zY8hK0p/kHtp7O9pgyjvj3ije3QQ8fNz7MOwO/4QSAOCSHQvxenovUfXu7L0
	luyPgviuRQhxollekQN4buVAFI7w/pUVrL2pMT5m9ql5nDaS90n/3TdPfSeIm6+jQw9UEGYores
	+YJ9Jx8QT9zAgQHA91oY8nz06WNde41yH3LV9hoZCeE/qdXI76nLmV11nV4sau8jWJuhpBrxnQO
	v7K99jZxoIz6LNn2D
X-Received: by 2002:a05:600c:34d1:b0:4a0:b6:4619 with SMTP id 5b1f17b1804b1-4ac12475a61mr295148055e9.0.1793704579605;
        Tue, 03 Nov 2026 03:16:19 -0800 (PST)
Message-ID: <fdf5d898-0210-4f18-b538-7a05604844ab@suse.com>
Date: Tue, 3 Nov 2026 12:16:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/4] xen: resolve MISRA C Rule 11.8 in
 xen_build_id_check()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
 <bd4ca85c30c0a9551171506d81301cd616d4a23c.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <bd4ca85c30c0a9551171506d81301cd616d4a23c.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793704580-245122A1-7CD3372C/10/78276251493
X-purgate-type: spam
X-purgate-size: 2036

On 03.11.2026 11:29, Dmytro Prokopchuk1 wrote:
> ELFNOTE_NAME() unconditionally casts its argument to 'char *', and
> ELFNOTE_DESC() is built on top of it. xen_build_id_check() passes a
> 'const Elf_Note *' to both of them, so the const qualifier is cast away,
> which is a violation of MISRA C Rule 11.8.
> 
> Introduce ELFNOTE_NAME_CONST() and ELFNOTE_DESC_CONST() for read-only
> access to the note, and use them in xen_build_id_check().
> 
> No functional changes.
> 
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>

It again would have been nice if it was mentioned that this is an alternative
proposal to an earlier posted patch, [1]. Personally here I prefer my variant
(with the adjustment as per review feedback, pending a v2 submission).

Jan

[1] https://lists.xen.org/archives/html/xen-devel/2026-09/msg00045.html

> --- a/xen/common/version.c
> +++ b/xen/common/version.c
> @@ -133,13 +133,13 @@ int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
>          return -EINVAL;
>  
>      /* Sanity check, name should be "GNU" for ld-generated build-id. */
> -    if ( strncmp(ELFNOTE_NAME(n), "GNU", n->namesz) != 0 )
> +    if ( strncmp(ELFNOTE_NAME_CONST(n), "GNU", n->namesz) != 0 )
>          return -ENODATA;
>  
>      if ( len )
>          *len = n->descsz;
>      if ( p )
> -        *p = ELFNOTE_DESC(n);
> +        *p = ELFNOTE_DESC_CONST(n);
>  
>      return 0;
>  }
> diff --git a/xen/include/xen/elf.h b/xen/include/xen/elf.h
> index 4199b4d6e6..3337b8cabe 100644
> --- a/xen/include/xen/elf.h
> +++ b/xen/include/xen/elf.h
> @@ -34,4 +34,8 @@
>  #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
>  #define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + ELFNOTE_ALIGN((_n_)->descsz)))
>  
> +#define ELFNOTE_NAME_CONST(_n_) ((const char *)(_n_) + sizeof(*(_n_)))
> +#define ELFNOTE_DESC_CONST(_n_) \
> +    (ELFNOTE_NAME_CONST(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
> +
>  #endif /* __XEN_ELF_H__ */



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 11:25:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 11:25:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469538.1678320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCdP-0005Jt-Lk; Tue, 03 Nov 2026 11:24:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469538.1678320; Tue, 03 Nov 2026 11:24:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCdP-0005Jm-Iy; Tue, 03 Nov 2026 11:24:59 +0000
Received: by outflank-mailman (input) for mailman id 1469538;
 Tue, 03 Nov 2026 11:24:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOCdP-0005Jf-2R
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:24:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOCdO-003Cqn-3h
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:24:58 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c475-e002-0a2a0a5209dd-0a2a450bcce6-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:24:58 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c489-b7e8-0a2a450b0019-d1558033d86d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:24:57 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so32238315e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:24:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a80e184esm55909025e9.2.2026.11.03.03.24.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 03:24:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793705097; x=1794309897; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=EBKYo4HeKWa/NT8CUh8VYjo42PPpl4XahFfjGzwmmH8=;
        b=MUv+bOLV4kV2wkSfb21qqb2o3FYx5WTQgsFC9812yT5JMAxUnQynbuBfUj5ijUjTRE
         n5PgCI9z2gh8KTv6yEgDgx9iKxcKPduS9mbrmqIgsd3Uppc80GEOto2agg0Y8zfwe0nt
         feXjR9uVd2XcxqzLsBPPSFFAiv0fcdBk04ifnUxVh7FaHEMgV3XIgoycNq2m4n7fS4lg
         sv/kI5JTN972Djs2Td9uY/AOOt1ret1nIWOE7vsPLWwfrWgcZE4MfGpTLRpDX4kEdSTq
         thMBMh/Bb+g0Eo3DdvFBdNsdvzXhdonbVpWk4kvnQbIJsB5XRB5cvmZbTanZYwWGDYnw
         N8aA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793705097; x=1794309897;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=EBKYo4HeKWa/NT8CUh8VYjo42PPpl4XahFfjGzwmmH8=;
        b=qEMWiDMxhwvGB0nIL2UQ67+le560NmDK05JMbr4JA/e8C3k7G7UBwEhg0MYtFOr1v8
         3oB6ucAoKi3rK6pLTFfU4KVEeA0zA08LmL32XeAZou7/K4rcG4xOFxHtdOYXUfjSFZ9m
         lbQB+xLe1PONer7yvN96pNBIovQZ4UpG4aR6mBhf38sG/iSbjgtPc4QY4hsKxqRPmPUC
         WKZWP6upNwY49570bvLevDSvuEzP1qG4KCfx7QvRyAwk9DQkvzhDIB4NvoWk91Xf6bea
         XlTZubloD5IT62KRA1qnh17+M5i5FO0JfRZ0sbUWZTwQ6aBnTQNd6Cm6qYVO0wW644NY
         Y11g==
X-Gm-Message-State: APuU4Z+tUM9M+VUi2mdPlex7SGpLX9vhlgADgaVvvEdA35BBLARJdV3e
	33cwCAchOQtmV1e2EtC7SVkqVKSif9/hEtGtStQIra8p+87N+IUQaPVp+78nwh3jUhmnSKBhCqA
	Hmb19Aw==
X-Gm-Gg: AYBFou2AfD+lbFPvcIZ/c0oeMHfEyiChB7/5SiAVoE+uFqAe6ZH6OLNCSq0i5GLlNa5
	rNJLbHMWF0M+nz/4DI2vdExr3ga0ZA166DW1VaXTE+IWvAYXmmHxDw1U6OfIceTwSfp5wSHe5r8
	M678puUVjB0IXIFB/QRO1SyKGzImPRbK1bbR263//PfWPzFQcZVsAl2REd2rAPWaOuArSpe4wsV
	T7cw4Cj7l4PiBxLPYkA8FXX4hJT4Q5QVA3fUEoC6lWGg1D6cypsOYi0qny4+Kdfxq66EFfYC47t
	WmN8R8AvFYADb8Tdykipa7s6vDRowx9j01SJyn+1uk93y+dRMoRMH1pXmHfEa/8QkORWQHU1xP7
	oO1RiK1OpVgeuRao/9VTet2kE7mbCtSBKuMKkFrhiOJ8mRe709RvpKIHi3ND0hW6R0VkcI9x9QX
	/nD8TItyqCduTUm7tDx5F6cLLF8KP+4nJteq93WFJNmy+8dJXRK1E60MtXdOlpNgD+FK6krzrnO
	Cl6SGvsgYoPp9nXWsKPFuh5dQ5QT0ypF4FrcRl3jNQfPUhE2LQiEp8Pc2LXeQ+QzNvDvzodD6vI
	9k7dqCCv85QQaTVFfkb571bA0QcRO5CxIvQnPkpvaBjER/lPWpJ+EMzqooJa2M1oHNaXilsNos1
	H7E+zy4SeBbDijAgh
X-Received: by 2002:a05:600c:e41a:b0:4b2:406b:f3bd with SMTP id 5b1f17b1804b1-4b2406bf3d2mr62692605e9.23.1793705097282;
        Tue, 03 Nov 2026 03:24:57 -0800 (PST)
Message-ID: <a0974d95-28ae-4205-b8b7-1c49cea2d784@suse.com>
Date: Tue, 3 Nov 2026 12:24:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] lib: make memchr_inv() compliant with Misra rule 11.8
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793705097-1B8D19EA-F42CC35A/10/78276251493
X-purgate-type: spam
X-purgate-size: 1091

Neither the sole present caller nor the two ones pending (in the AMX/ACE
series on x86) require the casting away of constness.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/include/xen/string.h
+++ b/xen/include/xen/string.h
@@ -33,7 +33,7 @@ void *memcpy(void *dest, const void *src
 void *memmove(void *dest, const void *src, size_t n);
 int memcmp(const void *cs, const void *ct, size_t count);
 void *memchr(const void *s, int c, size_t n);
-void *memchr_inv(const void *s, int c, size_t n);
+const void *memchr_inv(const void *s, int c, size_t n);
 
 #include <asm/string.h>
 
--- a/xen/lib/memchr_inv.c
+++ b/xen/lib/memchr_inv.c
@@ -13,13 +13,13 @@
  * returns the address of the first occurrence of a character other than @c,
  * or %NULL if the whole buffer contains just @c.
  */
-void *memchr_inv(const void *s, int c, size_t n)
+const void *memchr_inv(const void *s, int c, size_t n)
 {
 	const unsigned char *p = s;
 
 	while (n--)
 		if ((unsigned char)c != *p++)
-			return (void *)(p - 1);
+			return p - 1;
 
 	return NULL;
 }


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 11:28:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 11:28:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469547.1678330 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCh2-000626-4J; Tue, 03 Nov 2026 11:28:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469547.1678330; Tue, 03 Nov 2026 11:28:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCh2-00061z-0y; Tue, 03 Nov 2026 11:28:44 +0000
Received: by outflank-mailman (input) for mailman id 1469547;
 Tue, 03 Nov 2026 11:28:42 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOCh0-00061p-LC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:28:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOCgz-00ApVY-QT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:28:41 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c546-8faa-0a2a0a5109dd-0a2a4508ce52-46
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:28:41 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c569-f659-0a2a45080019-d1558036b4ff-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:28:41 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a4dc547987so20751645e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:28:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ac09bcc967sm248673485e9.3.2026.11.03.03.28.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 03:28:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793705321; x=1794310121; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=Mn6z+HgihqULMfuANDhs+7IjO7lNFOKK8mDTg/JBHak=;
        b=VrUPh767zfl8am7glW3Zn8GIES7dpuERabLdb4d34lhpfo2OInMFscPgkSsZ7EO8gu
         ietTJbXs43V58tiVfg/Y9eltqkX3LjXc09jRXc+biZTdt+KOyQ5EBOT3+Zs98wSZEwMV
         IkMs8iOcBr+gZPH2Po9g4VCy0XRCum/AVSOGgrabbGpT8QfxenD9HJV/8gYZI+icFMbs
         wnzcYC13kCZvOorH2JS505wkFDG0zvn9/MjKKar9TL3P25CMmmFZDvActPyh9ZmkFIbP
         c1T8E6KlW55vlbfVYSCmgtCg1eJsH1YU02+AR6yNxr5tOA4q4UOyOu0ri79rKkHPHoKy
         aoPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793705321; x=1794310121;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=Mn6z+HgihqULMfuANDhs+7IjO7lNFOKK8mDTg/JBHak=;
        b=AuJzIMKtsXAn48RC/XZS1qKH3OWDjuVTA94kYd1vUs6z8wVYd5y2mUv39qy9UG0bLj
         jZT7yrQX5mbeZmbPwudV4btiKdhDLUSyWH1CVActFEeS3ntttxiJrkNXdK56naWhG7s2
         oyAd7TLBgUuPdrd8zN+xSpICvFqFdlVy5G5bRa3cpgoehjg5v7vL8rIc5DG6V+VWT/X3
         8SmVLOI2nvD79GYdOKnRnqbf7+2GgJpEIZX/NKAGI1Owjh1aF1RIX0dZvel2tqAM4NSX
         2NF/UfIMSP4bjS8XgEK9bN+5WE+N/lvXUpEtfT3lUe4wz4wuvcThCpS5zu7aEJQseGjG
         93IQ==
X-Gm-Message-State: APuU4Z+Mf2PmXFB0P7zcxjzFEi1qX7j8r03QUJaI3mejVOuXO73s5KTG
	nYg/SCTbxyGskKKE8L6sYeBKQ+NnVa1KgPUQkF/OQyNti3PkEqcF8xnbQEmle04z2+SivTLWqCd
	ymUHpOw==
X-Gm-Gg: AYBFou2usCl8nKwLVdM+F9u8BmIbY6WfBQzLnOVe91aJht8zmSaq3PSkYdqOy870i1Z
	ZUi1SBes+DOSzG/zm9PUeTiZaS/t9N7nHvEfhJKgP/fZ5NYOd4zSX3iZZnd4XTYheGr5o8SycsD
	dHgVjh8inqhEsEVMf2GLra1w8LBEwxyYjmsttS0VzJxlaOYDfiHYrcTDSzQ+yyKBiiKBz8QeLEX
	pBG7S0YDiFyj+6LfEh6F3KMGQIyyaY9qj0fqDnw6ZksMah7UGtbZk+jZA99+yk7tmtYuFMUJEgf
	n0E3H7971JD1/o3F8x2dUc8TRJ457ReYCX3s2nmemMrvyf7JQZ8oYjKSrtp0mmQrHRNJFec3rw7
	4exacfwAQ30QHyEbc9IrR1WC2muG9J8Cn7vwfeNIQRMl2xxykg/cFSrAEd9esjrT3cE3wwzdIJ9
	rZaiKIp3J80DJlCeDla9oH6NlSDRLv+RJ83EiwiUkJQATMHAo+sn0zyEIgTGL+qiPbOdamtXyg7
	jsY3CiFPnw+qYbwroh9ukWSG1WZmPLM79Tdqh7gEvtRkBSKXIyGvYuGEPf/1HTyq0y/0LIckMV+
	n7A8NU6TSiI0+yUQSxL9JDXAUZgyik9vhSlBAO0TPIBa6Db50cbwELhcpcv2S4Qo8Vg/l2WcEWu
	hSZaK310b8oYy+9Y=
X-Received: by 2002:a05:600c:a012:b0:4a2:150f:1609 with SMTP id 5b1f17b1804b1-4ac17b2cdffmr284799765e9.8.1793705321106;
        Tue, 03 Nov 2026 03:28:41 -0800 (PST)
Message-ID: <72b9f0c1-94d0-4e87-bcc3-d1c49baead0d@suse.com>
Date: Tue, 3 Nov 2026 12:28:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: compile out __set_fixmap_x() when not needed
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Nicola Vetrini <nicola.vetrini@bugseng.com>
References: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793705321-CF95A87B-D47EF506/10/78276251493
X-purgate-type: spam
X-purgate-size: 716

On 03.11.2026 10:42, Jan Beulich wrote:
> Only HYPERV_GUEST has a need for an executable fixmap, so with that option
> unset __set_fixmap_x() (and l1_fixmap_x[] in turn) is unreachable. Address
> this Misra rule 2.1 violation by introduction ofa new FIXMAP_X Kconfig
> setting.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Why is __set_fixmap_x() not found by Eclair as a rule 2.1 violation in the
> x86_64-amd job?

Same question actually for both functions converted to static by [1]. This
apparently being a wider problem, are we (again / still) having an issue
with the scanning of the linking steps?

Jan

[1] https://lists.xen.org/archives/html/xen-devel/2026-10/msg01537.html


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 11:36:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 11:36:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469564.1678339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCoa-0007iy-S0; Tue, 03 Nov 2026 11:36:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469564.1678339; Tue, 03 Nov 2026 11:36:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOCoa-0007ir-Os; Tue, 03 Nov 2026 11:36:32 +0000
Received: by outflank-mailman (input) for mailman id 1469564;
 Tue, 03 Nov 2026 11:36:31 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOCoZ-0007il-7i
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 11:36:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOCoY-006y9d-Gj
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:36:30 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c728-8faa-0a2a0a5109dd-0a2a4507a5e2-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:36:30 +0100
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9c73e-b4ea-0a2a45070019-d155dd33c051-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 12:36:30 +0100
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-48b042c0759so2155464f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 03:36:30 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b8bd8esm24735187f8f.42.2026.11.03.03.36.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 03:36:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793705790; x=1794310590; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4yh/gEcQvNsQFUfPrcQnHu1y8G7e5fB+TNySwBBot0c=;
        b=bbJjgeIfQvP2TYiqVNnxginFs66WKWMF8JiymmBV9O0cRXK8lIoS9E5+PUWN2ppnnO
         N9zKb/EFENg4cYAhr1FiNxVF2joZ87BAdaoQRu4U0hmttxiQIn6wbUhGLTqweX0lrMR3
         BABL20H6FGLa0JhgF+InKJCUmAetB70gBocq1v9qg3swOhP6y23xoW1pKwGV9wxNWaNB
         b8z5TrnAxgLRRggohprGXIo3XvFYfglbm3CiNk0IKnbXCF/PFz65HLOcXpBxb0ibouiu
         2vG0wroKeJq7cJkxS5SP8zVPTSqi669DCpVUGfdpGeZR8Dgg7OcVXkjFSxTmG8CAPbPs
         F0mw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793705790; x=1794310590;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=4yh/gEcQvNsQFUfPrcQnHu1y8G7e5fB+TNySwBBot0c=;
        b=tTHdR+C1Wmtzk3MDF1ymHORXqlqcAMoBzYDExbbIhMlB6K8mxPIhnyi/wZv1knQewA
         +Z6GEpgt83Kzf5ohXZbZgnJlktbnswGRpaRqlL89LLMYsSWY2AlfxW3tlEmf4g5xxwWH
         AsPtcuSlhij5EsyNvIlMsbyL0xrDKIySS47nJV+Re1fxQ1wg2v5VA75IhynCHRYW3XbD
         LYUYyH52BgcmmeDBVSg6G6KE/y3zwME5UgavBylpo/0mVma0l7tbGJUn5PpxDzr2Op9+
         wVVJYdTx9YI5bvm055C39Tcg4qT7Y+eV39ufQMO28GLbZ9oEDis5M8+7VTdgt63fbKwp
         VEHw==
X-Forwarded-Encrypted: i=1; AKwUvBx8ldrEtJtMI8FCw1C+5IvL47c39t+nsWtv8AyPf3XH+bR3aytNwCGg+MzI/hjJK/TOZEpOFQ1ecPk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+exNk+Pq/Zhl8lL7SOKinJOrsJj13xI4sedIF6LzDgvHZRgPxl
	akSzi5+Nn/juSzuxZyVLHy07bygLAEZ3BdS2Maeu5TdIMCn1jgZFrwSB0rikkBWquw==
X-Gm-Gg: AYBFou1g1XeDDFxk73DM9/bKBzbWlydMEWuWzuDSbDxAhqwLFDJ/lJKxlyoLsJgFrFA
	hqZ3qOkMKfA4/pDqMMQ7nmntE1CL4Dv8KNdO+6FzOUzms31BppyrhxcMJyvqPKVHGFESpM9tZK8
	BJ+YpRVBpIaDxkPU/Rk4JhwKr+b45MK/xw8yMO0LV9xnpmacLmdnG+Ioz3CeclItU6kKNaXI9NL
	sWAG7oxyh8qhZsUJNYbgzowvrCvrFa0q078o+RINZCKcejDvioGivJiJr3WfyCc9FSn8y5pITq7
	54KJ/uawC9ArmTeJ6FMnJVlCGMoEpwIKltffNjCtafGN9CCUsJj22WZbnn03BSi5mns9eTPw/dD
	MItSPHdxC3Gmse0nZfT0YGpD7l6R8SDFUWT8MbQ/myjLCTE9E82aCzQt2cu+fqW28UVmiq19nMh
	39Uu/qvTKX1h1gPcJgdwb8WLAAEuVtLu5RFsljjjhmQZrIdNUb7WXwhrwbQ9ai/BYPsoIPCxpaQ
	ffmbeZPqFpN9K04H37Mwr6f1bu8S0Mcc5diqdDu2SEg/nf2cH5sgypVWgynolVZ8awxNRAGZSMM
	JhlVktWZljkeUZHJr9I9IS59M+UB2TmFIWvq3N9E1eof1bOHeWzjDuUOLu0Rk0U+4ELiv+9E2qz
	JdVn6FeucVCCAJaXG
X-Received: by 2002:a05:6000:128b:b0:48c:69bd:e971 with SMTP id ffacd0b85a97d-48e6e307437mr20793305f8f.16.1793705789733;
        Tue, 03 Nov 2026 03:36:29 -0800 (PST)
Message-ID: <3b08e987-30b3-411d-a9db-27a18196c5bb@suse.com>
Date: Tue, 3 Nov 2026 12:36:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/pv: Improve code generation in
 async_exception_cleanup()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261102174234.1764070-1-andrew.cooper3@citrix.com>
 <b3e50554-a045-42b7-908a-7e7c34c0dd90@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <b3e50554-a045-42b7-908a-7e7c34c0dd90@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793705790-A7CD7AE4-F1EFBF5B/10/78276251493
X-purgate-type: spam
X-purgate-size: 1450

On 03.11.2026 12:00, Andrew Cooper wrote:
> On 02/11/2026 5:42 pm, Andrew Cooper wrote:
>> Use new helper functions to simplfiy the logic.  This removes an alternative
>> behind the scenes.

Does it? __scanbit() engages an alternative only when its 2nd argument is
BITS_PER_LONG.

>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <jbeulich@suse.com>
>> CC: Roger Pau Monné <roger@xenproject.org>
>> CC: Teddy Astie <teddy.astie@vates.tech>
>>
>> async_exception_cleanup() is complete nonsense.  It's not remotely close to
>> how interupt blocking works in x86.

Are you perhaps expecting something that (for PV) was never intended?

>> --- a/xen/arch/x86/pv/iret.c
>> +++ b/xen/arch/x86/pv/iret.c
>> @@ -31,8 +31,8 @@ static void async_exception_cleanup(struct vcpu *curr)
>>      if ( !curr->arch.async_exception_mask )
>>          return;
>>  
>> -    if ( !(curr->arch.async_exception_mask & (curr->arch.async_exception_mask - 1)) )
>> -        trap = __scanbit(curr->arch.async_exception_mask, VCPU_TRAP_NONE);
>> +    if ( !multiple_bits_set(curr->arch.async_exception_mask) )
>> +        trap = ffs(curr->arch.async_exception_mask) + 1;
> 
> This should of course be a -1 rather than +1.  Fixed locally.

Acked-by: Jan Beulich <jbeulich@suse.com>
(with the description corrected or you pointing out which other alternative
you mean)

Jan


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:00:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:00:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469585.1678354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODBm-00042a-1R; Tue, 03 Nov 2026 12:00:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469585.1678354; Tue, 03 Nov 2026 12:00:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODBl-00041u-To; Tue, 03 Nov 2026 12:00:29 +0000
Received: by outflank-mailman (input) for mailman id 1469585;
 Tue, 03 Nov 2026 12:00:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xODBj-0003xy-Tf; Tue, 03 Nov 2026 12:00:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xODBj-00AceL-5y; Tue, 03 Nov 2026 13:00:27 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6ae9ccd7-2eae-0a2a0a5409dd-0a2a450b94fc-16
 for <multiple-recipients>; Tue, 03 Nov 2026 13:00:26 +0100
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6ae9ccd8-b7e8-0a2a450b0019-6882d725bbde-3
 for <multiple-recipients>; Tue, 03 Nov 2026 13:00:25 +0100
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xODBc-0000000CZyb-3N5m; Tue, 03 Nov 2026 12:00:20 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xODBc-00000006KvR-33Pr; Tue, 03 Nov 2026 12:00:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.515 (Entity 5.515)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 523 v2 (CVE-2026-102703,CVE-2026-102704) -
 arbitrary read/write via grant copy
Message-Id: <E1xODBc-00000006KvR-33Pr@xenbits.xenproject.org>
Date: Tue, 03 Nov 2026 12:00:20 +0000
X-purgate-ID: tlsNG-42698a/1793707226-A86CA9EA-19267201/0/0
X-purgate-type: clean
X-purgate-size: 14589

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

   Xen Security Advisory CVE-2026-102703,CVE-2026-102704 / XSA-523
                              version 2

                    arbitrary read/write via grant copy

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

A common access pattern is a batch of Grant Copy operations acting on
adjacent address ranges in the same source or destination page.  For
performance reasons, Xen caches details internally to reuse already
validated data.  The conditions on when to re-validate the internal data
were not correct in some cases:

 - Frame numbers and grant references could wrongly be mixed up.  This
   is CVE-2026-102703.

 - Copying by frame number (rather than grant reference) is permitted
   only when operating on the caller's own memory.  The check to enforce
   this restriction was misplaced.  This is CVE-2026-102704.

IMPACT
======

A malicious guest can read and write arbitrary memory, belonging to
other domains, including Dom0.

VULNERABLE SYSTEMS
==================

All Xen versions from 4.6 onwards are vulnerable.  Xen versions 4.5 and
earlier are not vulnerable.

MITIGATION
==========

There is no known mitigation.

CREDITS
=======

This issue was discovered by Anthropic using Claude, then validated by
Stephan Lipp of Ada Logics.

It was then independently reported by the CodeAnt AI Security Research
Team.

RESOLUTION
==========

Applying the appropriate set of attached patches resolves this issue.

Note that patches for released versions are generally prepared to
apply to the stable branches, and may not apply cleanly to the most
recent release tarball.  Downstreams are encouraged to update to the
tip of the stable branch before applying these patches.

xsa523-?.patch           xen-unstable - Xen 4.19.x
xsa523-4.18-?.patch      Xen 4.18.x - Xen 4.17.x

$ sha256sum xsa523*
87562e68c584dcc6b568348e7ba6cfde592798cb89f372364792afda65aa6895  xsa523-1.patch
9cd4e76fa3587f491f5bb0f895f375fcf24df8bd9bdf602c343081e7411b92f0  xsa523-2.patch
c1accb1fa55176cb6191e091d93198068630acbc6529966738669a43d5c2e38e  xsa523-4.18-1.patch
efc16fe8830066276fb50f01f24a358194a752507077fdb61a60f891dc1a7019  xsa523-4.18-2.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches and/or mitigations described above (or
others which are substantially similar) is permitted during the
embargo, even on public-facing systems with untrusted guest users and
administrators.

But: Distribution of updated software is prohibited (except to other
members of the predisclosure list).

Predisclosure list members who wish to deploy significantly different
patches and/or mitigations, please contact the Xen Project Security
Team.

(Note: this during-embargo deployment notice is retained in
post-embargo publicly released Xen Project advisories, even though it
is then no longer applicable.  This is to enable the community to have
oversight of the Xen Project Security Team's decisionmaking.)

For more information about permissible uses of embargoed information,
consult the Xen Project community's agreed Security Policy:
  http://www.xenproject.org/security-policy.html
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmrpzHcMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZYTAIALOhpiCcbIvbmpr8/yLSFfLXJ30HIq+rihtrrwHi
IYuUujGKDMMfZ+peGDzjUvWdSpeccHVqzxYyQbeqKN+bxeiRHyPaquaKGgMJgPgg
aI8/Ee5zeCBESEsAAI6Z6REXPT/ViL1MY4+gI8cGjD3CIfoBoBhHqDBxtDlkNtH6
bFH4E6CsLGPe1PELDBjEaqwFPiY03DItRBywXi9ygfATn47EnViQOlGSZm4cMIaX
wdT5dJKydXjvscrglijQSKUzhqC8qaTPwxF7pNPZWjw06QNBQUvLQi68iWgA1Hp/
ACiQV+gJuY+qEH93+UbQkxl7k0DBXfZLo6CxdrKupI3MVB4=
=SYnT
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa523-1.patch"
Content-Disposition: attachment; filename="xsa523-1.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0OiBnbnR0YWI6IGNv
bXBsZXRlIGNoZWNraW5nIGluIGdudHRhYl9jb3B5X2J1Zl92YWxpZCgpCgpUaGUgLT5oYXZlX2dy
YW50IGZpZWxkIG5lZWRzIGNoZWNraW5nIG5vdCBvbmx5IGFoZWFkIG9mIGNvbXBhcmluZyBHUkVG
cywKYnV0IGFsc28gYWhlYWQgb2YgY29tcGFyaW5nIE1GTnMuIEVsc2UgYSAobGlrZWx5IGludmFs
aWQpIEdSRUYgZnJvbSBhbgplYXJsaWVyIGJhdGNoIGVsZW1lbnQgY2FuIGJlIG1pc3Rha2VuIGZv
ciBhIChwb3NzaWJseSB2YWxpZCkgTUZOLgoKVGhpcyBpcyBDVkUtMjAyNi0xMDI3MDMsIHBhcnQg
b2YgWFNBLTUyMy4KCkZpeGVzOiBkMjhmNDJmMjcwM2UgKCJncmFudC10YWJsZTogZGVmZXIgcmVs
ZWFzaW5nIHBhZ2VzIGFjcXVpcmVkIGluIGEgZ3JhbnQgY29weSIpCkFzc2lzdGVkLWJ5OiBDbGF1
ZGUKUmVwb3J0ZWQtYnk6IFN0ZXBoYW4gTGlwcCA8U3RlcGhhbkBBZGFsb2dpY3MuY29tPgpSZXBv
cnRlZC1ieTogQ29kZUFudCBBSSBTZWN1cml0eSBSZXNlYXJjaCA8c2VjdXJpdHlyZXNlYXJjaEBj
b2RlYW50LmFpPgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+
ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoK
ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRf
dGFibGUuYwppbmRleCBiMTU4MDVmM2Y5NGQuLjNkYzVmZjg4ZGE4NSAxMDA2NDQKLS0tIGEveGVu
L2NvbW1vbi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAt
MzA4MywxMCArMzA4MywxMCBAQCBzdGF0aWMgYm9vbCBnbnR0YWJfY29weV9idWZfdmFsaWQoCiAg
ICAgY29uc3Qgc3RydWN0IGdudHRhYl9jb3B5X3B0ciAqcCwgY29uc3Qgc3RydWN0IGdudHRhYl9j
b3B5X2J1ZiAqYiwKICAgICBib29sIGhhc19ncmVmKQogewotICAgIGlmICggIWItPnZpcnQgKQor
ICAgIGlmICggIWItPnZpcnQgfHwgYi0+aGF2ZV9ncmFudCAhPSBoYXNfZ3JlZiApCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmICggaGFzX2dyZWYgKQotICAgICAgICByZXR1cm4gYi0+aGF2ZV9n
cmFudCAmJiBwLT51LnJlZiA9PSBiLT5wdHIudS5yZWY7CisgICAgICAgIHJldHVybiBwLT51LnJl
ZiA9PSBiLT5wdHIudS5yZWY7CiAgICAgcmV0dXJuIHAtPnUuZ21mbiA9PSBiLT5wdHIudS5nbWZu
OwogfQogCg==

--=separator
Content-Type: application/octet-stream; name="xsa523-2.patch"
Content-Disposition: attachment; filename="xsa523-2.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0OiBnbnR0YWI6IG1v
dmUgIm9ubHkgbG9jYWwgZG9tYWluIG1heSBjb3B5IGJ5IGZyYW1lIiBjaGVjawoKZ250dGFiX2Nv
cHlfb25lKCkgY2FsbHMgZ250dGFiX2NvcHlfbG9ja19kb21haW57cyx9KCkgb25seSBjb25kaXRp
b25hbGx5LgpUaGUgbm9uLUdSRUYgY2hlY2sgdG93YXJkcyB0aGUgcmVxdWVzdG9yIGJlaW5nIERP
TUlEX1NFTEYsIGhvd2V2ZXIsIG5lZWRzCmRvaW5nIG9uIGV2ZXJ5IGJhdGNoIGVsZW1lbnQuIE1v
dmUgdGhlIGNoZWNrIGludG8gZ250dGFiX2NvcHlfY2xhaW1fYnVmKCkKdG8gYWNoaWV2ZSB0aGF0
LgoKVGhpcyBpcyBDVkUtMjAyNi0xMDI3MDQsIHBhcnQgb2YgWFNBLTUyMy4KCkZpeGVzOiBkMjhm
NDJmMjcwM2UgKCJncmFudC10YWJsZTogZGVmZXIgcmVsZWFzaW5nIHBhZ2VzIGFjcXVpcmVkIGlu
IGEgZ3JhbnQgY29weSIpCkFzc2lzdGVkLWJ5OiBDbGF1ZGUKUmVwb3J0ZWQtYnk6IFN0ZXBoYW4g
TGlwcCA8U3RlcGhhbkBBZGFsb2dpY3MuY29tPgpSZXBvcnRlZC1ieTogQ29kZUFudCBBSSBTZWN1
cml0eSBSZXNlYXJjaCA8c2VjdXJpdHlyZXNlYXJjaEBjb2RlYW50LmFpPgpTaWduZWQtb2ZmLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29v
cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v
Z3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwppbmRleCAzZGM1ZmY4OGRh
ODUuLjVlNzljMDEyYjY5NSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCisr
KyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMjkzNiwxMyArMjkzNiw4IEBAIHN0cnVj
dCBnbnR0YWJfY29weV9idWYgewogICAgIGJvb2wgaGF2ZV90eXBlOwogfTsKIAotc3RhdGljIGlu
dCBnbnR0YWJfY29weV9sb2NrX2RvbWFpbihkb21pZF90IGRvbWlkLCBib29sIGlzX2dyZWYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbnR0YWJfY29weV9idWYg
KmJ1ZikKK3N0YXRpYyBpbnQgZ250dGFiX2NvcHlfbG9ja19kb21haW4oZG9taWRfdCBkb21pZCwg
c3RydWN0IGdudHRhYl9jb3B5X2J1ZiAqYnVmKQogewotICAgIC8qIE9ubHkgRE9NSURfU0VMRiBt
YXkgcmVmZXJlbmNlIHZpYSBmcmFtZS4gKi8KLSAgICBpZiAoIGRvbWlkICE9IERPTUlEX1NFTEYg
JiYgIWlzX2dyZWYgKQotICAgICAgICByZXR1cm4gR05UU1RfcGVybWlzc2lvbl9kZW5pZWQ7Ci0K
ICAgICBidWYtPmRvbWFpbiA9IHJjdV9sb2NrX2RvbWFpbl9ieV9hbnlfaWQoZG9taWQpOwogCiAg
ICAgaWYgKCAhYnVmLT5kb21haW4gKQpAQCAtMjk3NCwxMiArMjk2OSwxMCBAQCBzdGF0aWMgaW50
IGdudHRhYl9jb3B5X2xvY2tfZG9tYWlucyhjb25zdCBzdHJ1Y3QgZ250dGFiX2NvcHkgKm9wLAog
ewogICAgIGludCByYzsKIAotICAgIHJjID0gZ250dGFiX2NvcHlfbG9ja19kb21haW4ob3AtPnNv
dXJjZS5kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mbGFncyAm
IEdOVENPUFlfc291cmNlX2dyZWYsIHNyYyk7CisgICAgcmMgPSBnbnR0YWJfY29weV9sb2NrX2Rv
bWFpbihvcC0+c291cmNlLmRvbWlkLCBzcmMpOwogICAgIGlmICggcmMgPCAwICkKICAgICAgICAg
Z290byBlcnJvcjsKLSAgICByYyA9IGdudHRhYl9jb3B5X2xvY2tfZG9tYWluKG9wLT5kZXN0LmRv
bWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPmZsYWdzICYgR05UQ09Q
WV9kZXN0X2dyZWYsIGRlc3QpOworICAgIHJjID0gZ250dGFiX2NvcHlfbG9ja19kb21haW4ob3At
PmRlc3QuZG9taWQsIGRlc3QpOwogICAgIGlmICggcmMgPCAwICkKICAgICAgICAgZ290byBlcnJv
cjsKIApAQCAtMzA0Miw2ICszMDM1LDkgQEAgc3RhdGljIGludCBnbnR0YWJfY29weV9jbGFpbV9i
dWYoY29uc3Qgc3RydWN0IGdudHRhYl9jb3B5ICpvcCwKICAgICAgICAgYnVmLT5wdHIudS5yZWYg
PSBwdHItPnUucmVmOwogICAgICAgICBidWYtPmhhdmVfZ3JhbnQgPSAxOwogICAgIH0KKyAgICAv
KiBPbmx5IERPTUlEX1NFTEYgbWF5IHJlZmVyZW5jZSB2aWEgZnJhbWUuICovCisgICAgZWxzZSBp
ZiAoIHB0ci0+ZG9taWQgIT0gRE9NSURfU0VMRiApCisgICAgICAgIHJldHVybiBHTlRTVF9wZXJt
aXNzaW9uX2RlbmllZDsKICAgICBlbHNlCiAgICAgewogICAgICAgICByYyA9IGdldF9wYWdlZF9m
cmFtZShwdHItPnUuZ21mbiwgJmJ1Zi0+bWZuLCAmYnVmLT5wYWdlLAo=

--=separator
Content-Type: application/octet-stream; name="xsa523-4.18-1.patch"
Content-Disposition: attachment; filename="xsa523-4.18-1.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0OiBnbnR0YWI6IGNv
bXBsZXRlIGNoZWNraW5nIGluIGdudHRhYl9jb3B5X2J1Zl92YWxpZCgpCgpUaGUgLT5oYXZlX2dy
YW50IGZpZWxkIG5lZWRzIGNoZWNraW5nIG5vdCBvbmx5IGFoZWFkIG9mIGNvbXBhcmluZyBHUkVG
cywKYnV0IGFsc28gYWhlYWQgb2YgY29tcGFyaW5nIE1GTnMuIEVsc2UgYSAobGlrZWx5IGludmFs
aWQpIEdSRUYgZnJvbSBhbgplYXJsaWVyIGJhdGNoIGVsZW1lbnQgY2FuIGJlIG1pc3Rha2VuIGZv
ciBhIChwb3NzaWJseSB2YWxpZCkgTUZOLgoKVGhpcyBpcyBDVkUtMjAyNi0xMDI3MDMsIHBhcnQg
b2YgWFNBLTUyMy4KCkZpeGVzOiBkMjhmNDJmMjcwM2UgKCJncmFudC10YWJsZTogZGVmZXIgcmVs
ZWFzaW5nIHBhZ2VzIGFjcXVpcmVkIGluIGEgZ3JhbnQgY29weSIpCkFzc2lzdGVkLWJ5OiBDbGF1
ZGUKUmVwb3J0ZWQtYnk6IFN0ZXBoYW4gTGlwcCA8U3RlcGhhbkBBZGFsb2dpY3MuY29tPgpSZXBv
cnRlZC1ieTogQ29kZUFudCBBSSBTZWN1cml0eSBSZXNlYXJjaCA8c2VjdXJpdHlyZXNlYXJjaEBj
b2RlYW50LmFpPgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+
ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoK
ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRf
dGFibGUuYwppbmRleCA3NDJjOTc5N2M1MzUuLjg0MmQ0MzY4NDg0OSAxMDA2NDQKLS0tIGEveGVu
L2NvbW1vbi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAt
MzA4MSwxMCArMzA4MSwxMCBAQCBzdGF0aWMgYm9vbF90IGdudHRhYl9jb3B5X2J1Zl92YWxpZChj
b25zdCBzdHJ1Y3QgZ250dGFiX2NvcHlfcHRyICpwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdudHRhYl9jb3B5X2J1ZiAqYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBoYXNfZ3JlZikKIHsKLSAgICBpZiAoICFi
LT52aXJ0ICkKKyAgICBpZiAoICFiLT52aXJ0IHx8IGItPmhhdmVfZ3JhbnQgIT0gaGFzX2dyZWYg
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIGhhc19ncmVmICkKLSAgICAgICAgcmV0dXJu
IGItPmhhdmVfZ3JhbnQgJiYgcC0+dS5yZWYgPT0gYi0+cHRyLnUucmVmOworICAgICAgICByZXR1
cm4gcC0+dS5yZWYgPT0gYi0+cHRyLnUucmVmOwogICAgIHJldHVybiBwLT51LmdtZm4gPT0gYi0+
cHRyLnUuZ21mbjsKIH0KIAo=

--=separator
Content-Type: application/octet-stream; name="xsa523-4.18-2.patch"
Content-Disposition: attachment; filename="xsa523-4.18-2.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0OiBnbnR0YWI6IG1v
dmUgIm9ubHkgbG9jYWwgZG9tYWluIG1heSBjb3B5IGJ5IGZyYW1lIiBjaGVjawoKZ250dGFiX2Nv
cHlfb25lKCkgY2FsbHMgZ250dGFiX2NvcHlfbG9ja19kb21haW57cyx9KCkgb25seSBjb25kaXRp
b25hbGx5LgpUaGUgbm9uLUdSRUYgY2hlY2sgdG93YXJkcyB0aGUgcmVxdWVzdG9yIGJlaW5nIERP
TUlEX1NFTEYsIGhvd2V2ZXIsIG5lZWRzCmRvaW5nIG9uIGV2ZXJ5IGJhdGNoIGVsZW1lbnQuIE1v
dmUgdGhlIGNoZWNrIGludG8gZ250dGFiX2NvcHlfY2xhaW1fYnVmKCkKdG8gYWNoaWV2ZSB0aGF0
LgoKVGhpcyBpcyBDVkUtMjAyNi0xMDI3MDQsIHBhcnQgb2YgWFNBLTUyMy4KCkZpeGVzOiBkMjhm
NDJmMjcwM2UgKCJncmFudC10YWJsZTogZGVmZXIgcmVsZWFzaW5nIHBhZ2VzIGFjcXVpcmVkIGlu
IGEgZ3JhbnQgY29weSIpCkFzc2lzdGVkLWJ5OiBDbGF1ZGUKUmVwb3J0ZWQtYnk6IFN0ZXBoYW4g
TGlwcCA8U3RlcGhhbkBBZGFsb2dpY3MuY29tPgpSZXBvcnRlZC1ieTogQ29kZUFudCBBSSBTZWN1
cml0eSBSZXNlYXJjaCA8c2VjdXJpdHlyZXNlYXJjaEBjb2RlYW50LmFpPgpTaWduZWQtb2ZmLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29v
cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v
Z3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwppbmRleCA4NDJkNDM2ODQ4
NDkuLjAzNTQzZmMzMzVhOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCisr
KyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMjkzNCwxMyArMjkzNCw4IEBAIHN0cnVj
dCBnbnR0YWJfY29weV9idWYgewogICAgIGJvb2xfdCBoYXZlX3R5cGU7CiB9OwogCi1zdGF0aWMg
aW50IGdudHRhYl9jb3B5X2xvY2tfZG9tYWluKGRvbWlkX3QgZG9taWQsIGJvb2wgaXNfZ3JlZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdudHRhYl9jb3B5X2J1
ZiAqYnVmKQorc3RhdGljIGludCBnbnR0YWJfY29weV9sb2NrX2RvbWFpbihkb21pZF90IGRvbWlk
LCBzdHJ1Y3QgZ250dGFiX2NvcHlfYnVmICpidWYpCiB7Ci0gICAgLyogT25seSBET01JRF9TRUxG
IG1heSByZWZlcmVuY2UgdmlhIGZyYW1lLiAqLwotICAgIGlmICggZG9taWQgIT0gRE9NSURfU0VM
RiAmJiAhaXNfZ3JlZiApCi0gICAgICAgIHJldHVybiBHTlRTVF9wZXJtaXNzaW9uX2RlbmllZDsK
LQogICAgIGJ1Zi0+ZG9tYWluID0gcmN1X2xvY2tfZG9tYWluX2J5X2FueV9pZChkb21pZCk7CiAK
ICAgICBpZiAoICFidWYtPmRvbWFpbiApCkBAIC0yOTcyLDEyICsyOTY3LDEwIEBAIHN0YXRpYyBp
bnQgZ250dGFiX2NvcHlfbG9ja19kb21haW5zKGNvbnN0IHN0cnVjdCBnbnR0YWJfY29weSAqb3As
CiB7CiAgICAgaW50IHJjOwogCi0gICAgcmMgPSBnbnR0YWJfY29weV9sb2NrX2RvbWFpbihvcC0+
c291cmNlLmRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPmZsYWdz
ICYgR05UQ09QWV9zb3VyY2VfZ3JlZiwgc3JjKTsKKyAgICByYyA9IGdudHRhYl9jb3B5X2xvY2tf
ZG9tYWluKG9wLT5zb3VyY2UuZG9taWQsIHNyYyk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAg
ICBnb3RvIGVycm9yOwotICAgIHJjID0gZ250dGFiX2NvcHlfbG9ja19kb21haW4ob3AtPmRlc3Qu
ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZmxhZ3MgJiBHTlRD
T1BZX2Rlc3RfZ3JlZiwgZGVzdCk7CisgICAgcmMgPSBnbnR0YWJfY29weV9sb2NrX2RvbWFpbihv
cC0+ZGVzdC5kb21pZCwgZGVzdCk7CiAgICAgaWYgKCByYyA8IDAgKQogICAgICAgICBnb3RvIGVy
cm9yOwogCkBAIC0zMDQwLDYgKzMwMzMsOSBAQCBzdGF0aWMgaW50IGdudHRhYl9jb3B5X2NsYWlt
X2J1Zihjb25zdCBzdHJ1Y3QgZ250dGFiX2NvcHkgKm9wLAogICAgICAgICBidWYtPnB0ci51LnJl
ZiA9IHB0ci0+dS5yZWY7CiAgICAgICAgIGJ1Zi0+aGF2ZV9ncmFudCA9IDE7CiAgICAgfQorICAg
IC8qIE9ubHkgRE9NSURfU0VMRiBtYXkgcmVmZXJlbmNlIHZpYSBmcmFtZS4gKi8KKyAgICBlbHNl
IGlmICggcHRyLT5kb21pZCAhPSBET01JRF9TRUxGICkKKyAgICAgICAgcmV0dXJuIEdOVFNUX3Bl
cm1pc3Npb25fZGVuaWVkOwogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHJjID0gZ2V0X3BhZ2Vk
X2ZyYW1lKHB0ci0+dS5nbWZuLCAmYnVmLT5tZm4sICZidWYtPnBhZ2UsCg==

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:48:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:48:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469699.1678451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODvl-0004m6-IK; Tue, 03 Nov 2026 12:48:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469699.1678451; Tue, 03 Nov 2026 12:48:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODvl-0004lz-Fc; Tue, 03 Nov 2026 12:48:01 +0000
Received: by outflank-mailman (input) for mailman id 1469699;
 Tue, 03 Nov 2026 12:48:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xODvk-0004li-E1
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:48:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xODvj-00AmLW-D3
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:47:59 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d7fb-e002-0a2a0a5209dd-0a2a4505d318-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:47:56 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d7fc-4cb1-0a2a45050019-d1558029bd4e-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:47:56 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a4d7ae1ae9so40451565e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:47:56 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71ba53d7sm31748375f8f.53.2026.11.03.04.47.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:47:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Content-Language:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710075; x=1794314875; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to:content-type;
        bh=MusYXJrjMtyZXn4CwSiauONc+2R6UdvYrMkw9NX19VA=;
        b=cRJ9+tZxAb5bNEIyr5E3kQJgxWTP3GMe+8U6mMBQxm6neqtsaiMY2cIrPOyGMZEMmr
         DH2tbpks0G5MHtl4K89uyWGXtaiR2QrcMzXgOTmm66hXmF1+O7YqgQxx5yXFQqmTVJIH
         pc+ZxqmXSqMX76wR3UagkyUlw877mnLuwFKeLJTEAjOuwWdO3sS41E1C9fWLKrgm4Q4E
         7P0C+uhoOuPybdEnY/NKSKfxRdkIehBA0TlnuKb2F3Wn91pPpAhqTgVPr7K7qoXupGxO
         SYz68bH3HL0zYLEGqwSVvkyY1YyN+ZLKRUQlOfGxV8RRLbZwm9+H+xUjl4jx8/hvBHNF
         WgKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710075; x=1794314875;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=MusYXJrjMtyZXn4CwSiauONc+2R6UdvYrMkw9NX19VA=;
        b=htHDmDRatPARVtAMs3xPi08JLl7m4lPP4HqHavZefOswtm5pSFBzXwGWmNfpdgEdOR
         rwMiAe+sQBGWmZknNhecPvM6JUdqRQSeBS7TMMhKGBUdcEqmpv7+VyqbdeEQPQ36wU7M
         R+JV3bSfWT+PFK8WcACjgxMhSGQIHCYwCAOFcpkvXh2OyCFdVkPbklXSKSiBi6HzlLqt
         dbEkIA1qLT/ii9/cfHCeLi6w8v5xvNiHxdaxnEuNw3Fwq1GUbQV1r9hs7wNExn6a7bJZ
         GRrV5J6OcpQkEidAgYm+ET7JqDbrMsjm6nF9fhVmxQGb3E+suciUXRlDZ4/Wi/L8YIov
         ED9g==
X-Gm-Message-State: APuU4Z9fvUubUSI22xjjqmAz/4iTCmuWR9s6JHrt5x+56d1Bd4WK6IGv
	3Ib13/bCtKqqWU9iCEOxD71Wk8yKezqI4tH585AO3WkdDGKTWAI9br05BkPvSCd6T/uTPfvB+AH
	lu/2mEg==
X-Gm-Gg: AYBFou2wev7zDEGCYMKeflpbuZJfyNCridaYEMH00gHlFo/ccrU7AEm1JvSngL/k9I7
	k70KLWTezckhHsEYqNuCBb/eVxx6sgSFqAPAptlING6ejNQbyhfiZLOJrbXyoXbN6SI+bpKR0Dl
	lV+1+EmiTpF4FTjQGFfeA++EofE4/g2oLMHWe76JFBbYlthRRDGW1ojkP6mklMsJLo/nQm8kwwI
	qmYkrGK3P+NzbafoXGkceN2Tfyp0Yx/yOT7HEGRLDk3WYeFVSL4wBDd96LC2kblp5N3nNi89DDv
	qCQNcdnxnA+c/cLWxU1lYzYcOpqt7huxpKDc3V786BBQ+gFvUOHT+9tRdmZYf0+q/O+jHum3YFA
	pe0kQZNXk29KutXiQGPxHE3TrKMFBQkdGQPUByE49sOeu//KxPNQo7/oD9bXsaVAmAqzUcEEwCf
	TrqKuR4sK4mMt4HgS++w7Zt0us+at3IhiPJ9EeB6DqlkLlON5QPUpWbKc44oG14gBpLXJljgFvp
	qWiftribIRvnhCB8Tu1UrJgo+DM24ktduL5WwN6m/9V9OfXY7xgAsZ6WHmI7K6cci/6FnoZ8ND/
	+n+ke3Zi4u00PfhTn61OprRid3ErEsx7T3qrVRtTT+yLAPB+0LCc48I/Y0nSGhmJgChnZW6n7Pj
	9F2XHQjHu2sqhK7Y=
X-Received: by 2002:a05:600c:34cf:b0:4a7:c366:d791 with SMTP id 5b1f17b1804b1-4ac150b38ebmr300338595e9.1.1793710075687;
        Tue, 03 Nov 2026 04:47:55 -0800 (PST)
Message-ID: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Date: Tue, 3 Nov 2026 13:47:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4 0/3] "brk" allocator
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793710076-734BC2A1-0A122F30/10/78276251493
X-purgate-type: spam
X-purgate-size: 280

Derive for our purposes something similar to what Linux has been having for
a long while.

v4 addresses (hopefully) the final bits of feedback that kept trickling in.

1: common: introduce "brk" allocator
2: x86/EFI: replace ebmalloc()
3: xhci-dbc: use brk_alloc()

Jan


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:49:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:49:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469706.1678460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODxJ-0005Jw-TQ; Tue, 03 Nov 2026 12:49:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469706.1678460; Tue, 03 Nov 2026 12:49:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODxJ-0005Jp-QS; Tue, 03 Nov 2026 12:49:37 +0000
Received: by outflank-mailman (input) for mailman id 1469706;
 Tue, 03 Nov 2026 12:49:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xODxI-0005Jd-5J
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:49:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xODxH-003Sqn-IC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:49:35 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d85e-8faa-0a2a0a5109dd-0a2a450a9e12-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:49:35 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d85f-f2d2-0a2a450a0019-d155dd31b8e9-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:49:35 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48c4be28b82so4325835f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:49:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b8c6e9sm24849397f8f.43.2026.11.03.04.49.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:49:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710175; x=1794314975; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=ea76sT97/Jj9c4zXiDZbZrXgPF1Fz7XWAOxDEa7crk0=;
        b=CY5Hqd31kd2ldkbgyajiLYKeGFt+zXYA1sYZrcUW0FxjHC5G65TDHLw9+I8/y5WgLC
         cB2/ISybdGZXKJdYHPYqA/Z4yDWODOlQ6rschOWz0I3V51pm+QT7q6MOla9J1L7+a8kl
         pxC+UGZYOmxH5ZLRcYWZl/yLGOQ3tQVuQs5ZYwTEDdYvWzIuZNR6PYZWuIem9rZTPtLw
         QhF/1RBEenMj/xgIJtHkGhxbmDFVhDH4YlOQ5+nVUKDGGd7Uoc/j5CY1MNtZ64gvB+FB
         X6weA7dj6OpnvcwjM+HJlb/A2kZrpxpN3ntsQQNxNu36SSWsl3rQosrd7OGwzEewC6np
         rZoQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710175; x=1794314975;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=ea76sT97/Jj9c4zXiDZbZrXgPF1Fz7XWAOxDEa7crk0=;
        b=0JEUL+Fg5zCcasUEo7LySBC0P5w8HJDe8WknLOamN/mtFzRrqbeKUrgr2jreAtCwCq
         9ICngOYUIrI9v9JQQYce3HrS3WXpKopE1/VmyZoxiOVIIUlmnrEYygPgCt+/WywQUTKO
         ui/2iFfNUIM2c+a47TnmWXx4DGZ/glRVCNJvcUqYiYvjhJRQcC2p45Br/K2fnKjQ8Eqo
         X9J8j5VmLGF1BCX2BWI7PiOBwWou8Y7oSlUlnnqf99SiGKvQprTzpEWBnGVR5Z1zVdeT
         JPSzLnvQvXDWC7jp6rSKimhfCJVtWS71X/igVwJc9nQa6Nrl1PXmtpvrdYwOhB8yLmvq
         L2MA==
X-Gm-Message-State: APuU4Z+XQMpNZSDgQxCABXRbydbJttxdiYqvGyn2YAmkl5rmnQMGtFUT
	czpZ0usKU12qJhza9g87+GBpIFl9qCmDY5iJ60FOYlwZCBxgFmZFJjkadCgpyQloyBwtavmasVc
	5cAcbMA==
X-Gm-Gg: AYBFou2rLpogW0JwIo6rsg1g4Oq+zEyQ+SOKyh/BMd2uKNcReIHq4P0mj6xq/osTeH3
	YnLuLEPFLHbv6h9d6gT47zsaiEKHUDkQ3Y8F2fXJbRhKdKrZY9AurXtbTqC7pL2/5WLzkpCoNqx
	LrGlsFoyKMSrqPbCg4FY8+vioIA63yM9Hd0oocvTViB0AV05IgKecR1fzQr897xfJIzkxD81tBS
	4U+EiupEp7UUWGMd5vVTB8gTjUXVJ6jv2biod24MYckTVhDGNNG/M1E2TOR/weSSGwcAR/CnNHm
	3xFdjBzrJqT0CsXotygZfWphLAYWfzINCWZiS6ys7VY2EcIyAbR9PZ8Mz505wRh5fpnLQtSlbxw
	khk7GRrY2/lE+o7ihOW3WHByMLyQJt+8qIctdiisjwI7m0NoTUmWsdfb1isc3NN9GlLKNVGdHYe
	8apCXNvYB7c9Hr7fNJLy6uEf34Y1mUfy4BMx1/moyNsTc6T5WxkI4bFi1oEOhdkm0B3tdtqCNZ6
	ZVa/hqIDfUIxaVPL3QlW+53L7UyTetTga0TXAB2Nq2eC41RDUcWWooGVcuhcBR8nL2k0jF6VUhm
	vJiHBZUz9h8lak2+AZCmRjM8Y8Rtq6Kf2B0Aw0IT8RfnZCVoE0OMRM5apaHOU8do7MGmpehndTa
	pok7IKtxJKiMy8p/zDFvZGVe997/5FA6X7q1Leg==
X-Received: by 2002:a05:6000:41d1:b0:48e:6a23:4a09 with SMTP id ffacd0b85a97d-48e6e50d8cdmr31098567f8f.54.1793710174811;
        Tue, 03 Nov 2026 04:49:34 -0800 (PST)
Message-ID: <43e47410-7d5c-43c1-bff5-8e1ce3746b7d@suse.com>
Date: Tue, 3 Nov 2026 13:49:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 1/3] common: introduce "brk" allocator
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
References: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793710175-583CCCFC-D747743A/10/78276251493
X-purgate-type: spam
X-purgate-size: 8465

... to replace (on x86) ebmalloc(), and then to find further use(s) to
allow recovering memory which is needed very early (and hence needs
setting up statically), but may not fully be used (or not be used at all).

Note that unlike free_ebmalloc_unused_mem(), brk_free_unused() (once
other code is converted) will be able to free part of the BRK space even
in the xen.efi case on x86. That would happen if BRK space extends across
a 2Mb boundary, and actual use stops before that boundary.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changing setup.c's reserve_e820_ram() uses would be cumbersome when done
right here. That'll be done when ebmalloc() is replaced, and hence
what's there can also simply be replaced.

When linking xen.efi, GNU ld prior to 2.46 produces a base relocation for
the reference to __subsystem__, which is wrong (that's an absolute symbol,
after all). That does no harm for our purposes, though.
---
v4: Use asm-inline in brk_adjust_start(). Introduce stub fallback for
    brk_adjust_start(). Introduce local "alloc" in brk_alloc(). Add
    comment ahead of the use of printk_once_init().
v3: Move to common code and introduce BSS_WITH_BRK. Rename
    brk_get_unused_start() to brk_cease(). Add header guard to brk.h. In
    brk_alloc() don't calculate result too early. Add printk_once_init(),
    for use in brk_alloc(). Move introduction of DEFINE_BRK() here; add
    comment.

--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -15,6 +15,7 @@ config X86
 	select FUNCTION_ALIGNMENT_16B
 	select GENERIC_BUG_FRAME
 	select HAS_ALTERNATIVE
+	select HAS_BRK_ALLOCATOR
 	select HAS_COMPAT
 	select HAS_CPUFREQ
 	select HAS_DIT
--- /dev/null
+++ b/xen/arch/x86/include/asm/brk.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef X86_BRK_H
+#define X86_BRK_H
+
+static inline unsigned long brk_adjust_start(unsigned long start)
+{
+    unsigned int subsys;
+
+    /*
+     * Only xen.efi will have the symbol __subsystem__ available, and it'll
+     * be non-zero (10) there.  In ELF the symbol will be undefined, and
+     * hence zero will be loaded into the register.
+     */
+    asm_inline ( ".weak __subsystem__; mov $__subsystem__, %0"
+                 : "=r" (subsys) );
+
+    /* using_2M_mapping() isn't available here. */
+    if ( IS_ENABLED(CONFIG_XEN_ALIGN_2M) || subsys )
+        start = PAGE_ALIGN_2M(start);
+
+    return start;
+}
+
+#endif /* X86_BRK_H */
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -87,6 +87,7 @@
  * doing the final put_page(), and remove it from the iommu if so.
  */
 
+#include <xen/brk.h>
 #include <xen/domain.h>
 #include <xen/domain_page.h>
 #include <xen/efi.h>
@@ -337,6 +338,8 @@ void __init arch_init_memory(void)
 
     efi_init_memory();
 
+    brk_free_unused();
+
 #ifndef NDEBUG
     if ( highmem_start )
     {
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -309,12 +309,7 @@ SECTIONS
   LLVM_COV_RW_DATA
 
   DECL_SECTION(.bss) {
-       __bss_start = .;
-       *(.bss.page_aligned*)
-       PERCPU_BSS
-       *(.bss .bss.*)
-       . = ALIGN(POINTER_ALIGN);
-       __bss_end = .;
+       BSS_WITH_BRK
   } PHDR(text)
   _end = . ;
 
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -118,6 +118,9 @@ config GENERIC_BUG_FRAME
 config HAS_ALTERNATIVE
 	bool
 
+config HAS_BRK_ALLOCATOR
+	bool
+
 config HAS_COMPAT
 	bool
 
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -1,6 +1,7 @@
 obj-$(CONFIG_ARGO) += argo.o
 obj-y += bitmap.o
 obj-bin-$(CONFIG_SELF_TESTS) += bitops.init.o
+obj-bin-$(CONFIG_HAS_BRK_ALLOCATOR) += brk.init.o
 obj-$(CONFIG_GENERIC_BUG_FRAME) += bug.o
 obj-$(CONFIG_HYPFS_CONFIG) += config_data.o
 obj-$(CONFIG_CORE_PARKING) += core_parking.o
--- /dev/null
+++ b/xen/common/brk.c
@@ -0,0 +1,81 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <xen/brk.h>
+#include <xen/efi.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/page-defs.h>
+
+#if __has_include(<asm/brk.h>)
+# include <asm/brk.h>
+#else
+static inline unsigned long brk_adjust_start(unsigned long start)
+{
+    return start;
+}
+#endif
+
+extern char __brk_start[];
+extern const char __bss_end[];
+
+static unsigned long __initdata allocated;
+static bool __initdata finished;
+
+void *__init brk_alloc(size_t size)
+{
+    void *ptr;
+    unsigned long alloc = allocated;
+
+    if ( finished )
+        return NULL;
+
+    /* Allocations PAGE_SIZE and up will be page-aligned. */
+    if ( size >= PAGE_SIZE )
+        alloc = ROUNDUP(alloc, PAGE_SIZE);
+
+    ptr = __brk_start + alloc;
+
+    alloc += ROUNDUP(size, sizeof(void *));
+
+    if ( alloc > __bss_end - __brk_start )
+    {
+        /* Expected to be fatal to boot, but cannot be panic(). */
+        printk_once_init(
+            "%pS: over-sized BRK request: %zu bytes\n",
+            __builtin_extract_return_addr(__builtin_return_address(0)),
+            size);
+        return NULL;
+    }
+
+    allocated = alloc;
+
+    return ptr;
+}
+
+unsigned long __init brk_cease(void)
+{
+    finished = true;
+
+    allocated = ROUNDUP(allocated, PAGE_SIZE);
+
+    return (unsigned long)__brk_start + allocated;
+}
+
+void __init brk_free_unused(void)
+{
+    unsigned long start = brk_cease(), end = (unsigned long)__bss_end;
+
+    start = brk_adjust_start(start);
+
+    if ( start >= end )
+        return;
+
+    destroy_xen_mappings(start, PAGE_ALIGN_2M(end));
+
+    /*
+     * By reserving needed space early (on x86: in the E820 map), excess space
+     * gets freed way before we make it here.  Don't free the range a 2nd time.
+     */
+
+    printk(XENLOG_INFO "Freed %lukB unused BRK memory\n", (end - start) >> 10);
+}
--- /dev/null
+++ b/xen/include/xen/brk.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Early Boot memory allocator.
+ *
+ * Subsystems which conditionally need memory prior to the boot allocator
+ * (or the main heap) being set up may use DEFINE_BRK() to reserve BSS space
+ * in Xen.
+ *
+ * During boot, brk_alloc() allocates memory from the reserved space.  Such
+ * allocations are good for the lifetime of Xen.  Subsystems MUST NOT
+ * brk_alloc() more memory than they reserved.
+ *
+ * When the main heap is set up, brk allocations become unavailable.  Reserved
+ * but unallocated space is, as far as possible, handed to the main heap, so it
+ * doesn't go to waste.
+ */
+
+#ifndef XEN_BRK_H
+#define XEN_BRK_H
+
+#include <xen/types.h>
+
+#define DEFINE_BRK(var, size) \
+    static char __section(".bss..brk.page_aligned") __aligned(PAGE_SIZE) \
+        __used var ## _brk_[size]
+
+void *brk_alloc(size_t size);
+unsigned long brk_cease(void);
+void brk_free_unused(void);
+
+#endif /* XEN_BRK_H */
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -79,6 +79,16 @@ void vprintk(const char *fmt, va_list ar
     }                                           \
 })
 
+#define printk_once_init(fmt, args...)          \
+({                                              \
+    static bool __initdata once_;               \
+    if ( unlikely(!once_) )                     \
+    {                                           \
+        once_ = true;                           \
+        printk(fmt, ## args);                   \
+    }                                           \
+})
+
 extern void guest_printk(const struct domain *d, const char *fmt, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *fmt, ...)
--- a/xen/include/xen/xen.lds.h
+++ b/xen/include/xen/xen.lds.h
@@ -221,6 +221,18 @@
        . = ALIGN(SMP_CACHE_BYTES); \
        __per_cpu_data_end = .;     \
 
+#define BSS_WITH_BRK               \
+       __bss_start = .;            \
+       *(.bss.page_aligned*)       \
+       PERCPU_BSS                  \
+       *(.bss .bss.[a-zA-Z0-9_]*)  \
+       . = ALIGN(PAGE_SIZE);       \
+       __brk_start = .;            \
+       *(.bss..brk.page_aligned*)  \
+       *(.bss..brk*)               \
+       . = ALIGN(POINTER_ALIGN);   \
+       __bss_end = .;
+
 #ifdef CONFIG_HAS_VPCI
 #define VPCI_ARRAY               \
        . = ALIGN(POINTER_ALIGN); \



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:50:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:50:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469715.1678471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODyL-0006pd-B1; Tue, 03 Nov 2026 12:50:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469715.1678471; Tue, 03 Nov 2026 12:50:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODyL-0006pW-6v; Tue, 03 Nov 2026 12:50:41 +0000
Received: by outflank-mailman (input) for mailman id 1469715;
 Tue, 03 Nov 2026 12:50:40 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xODyK-0006pO-3c
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:50:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xODyJ-006lV5-Fu
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:50:39 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d88d-bab6-0a2a0a5309dd-0a2a450be35c-40
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:50:39 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d89f-b7e8-0a2a450b0019-d155802ce460-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:50:39 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a35a60499eso39195005e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:50:39 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a96fc87fsm51937385e9.12.2026.11.03.04.50.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:50:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710239; x=1794315039; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=OBgoBm3kYY5Yh481MZr1RVDa7YTnM3GtRDCWh4EEjZQ=;
        b=aRJr09IZusX8SXtCMrcYjNIHJwTsycTTgBVAyjtDr+Uz8MF9km19eWxdJ47obltBQE
         Ev0lVqp6Ty6JGtCvG8hvT+7q3aBXpeCVm6v8KhqIXyfVb8D44TAbpmAQfJsFyeHmxVnZ
         2c5jacrAcGi+/JLNW+LVPUA3m4uSooxZteDhRgFxbVk9mlrhMrqFN5uR4LaxgzDbGFlQ
         HoulsH5Z9W5sH01tLAw0NCpI3aEof4/XXtGg/buAovQ5e4OIu+ZXtgvoWk/BvhyzF26h
         Ptnea3sP5hPX3KEzC9mVWFuhxmE/Psmk3ZVl5rQKfCuq2tXiizvNGePCxOBufP2sLslT
         lH8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710239; x=1794315039;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=OBgoBm3kYY5Yh481MZr1RVDa7YTnM3GtRDCWh4EEjZQ=;
        b=UJA85vlZSCg+2DmJIgzFYBOLp+0bo3qxXwd9zARe/22wGJiRJ+1yAHNcaufUOCSY+W
         SXB61ruMg9SRgTtxsSLwtB1D9EhyIQ8V4Sher4pwuzJ+SCzhoqSRLyjQOour4EAhhjOW
         RmOGCOQH4er6dVobmb3Fwz1G1aBA267rZCi3iyDgdQmX/4YPwVO1VV2hrrVaIVyTw4IZ
         fTkKrU2XE1eJy7vPbtyPQnN47/Tf9wHFNW5rVs55QAbASn8P0atl0vEzjv7nfgkn6ept
         bIqPemO4PCzwHZf2JqyjZbbcsvomL+AN1YnYYh8WCQrzH/A1pplHQZGj9jSe02bSWSGR
         2BWQ==
X-Gm-Message-State: APuU4Z/9RMM8IaqX+U3j3jk6DCAG6SiB1oWgBqqg+n1m62BQ8maoCKgv
	zTsMOuuYwyeYUUHY7pfckV3uKa2U00/LIliSM6fjXACOFP22KNBhcror05u3gpM10GGkPv/SWx2
	tI+i7Bg==
X-Gm-Gg: AYBFou39eFmz86gnUUvYV4LuOtewjpj+4mJbBOV8wkp2RnKRXCs8mG1NA9a1BsKLOza
	nRy+ylJ0Wq2YYKCioKlkz2zl1NxCHV1PwQPr9Bj9IVPjABtmJZUgAy45wP2KHRcbOZQjl1C7wU9
	DFzgwhDgMyYT0TMiNlalEE1gEQZuYykpXOaRQtTQrvortOA2WA1tBP4GuTm02hjvHsiXZ9WTN5w
	D8JKOZ5tZJyQUV1T5QuxkfIoIxfIHzRcHmxhhV0DG2tRljvVRlvQE3TIEhZSStg5y+V/ICxsdoK
	HL01uV5V5Z4sK7O5XkBEnRpPzQMLRWv9ZWOyWhhXcdm6Jath9GD1QPqMWdD3bFwjAIR2/qQ9hA4
	wid3/8yC7Xh4KTV02Y2qs4ZstOXXE/Q8HWjjIIpgqR/2REeBraTrjKnqwDmJ2H4rcaZndQKtNoa
	UqsiZosHpOgsjLFaH7JMc+LYdCsqaa5bY7If+/jBOhlgzhmeyR4I7/DD/I3tT1cVQD5zFPTcFnI
	DTgsGRpd+jPDlna8RlAR6SUbHRc3EXBXlse78bbe82WyPkVS6erNeupIHpJlNuKR+2yl+7CBmOg
	00vzUKuMpugJjFnFvJKFAXhbeO2oiUt4eKTiSw3sSRfvEh6xoz9GHpMWKb3Ic8AJLYOKofVUPWj
	ADxm5uG8FUsSh1tk=
X-Received: by 2002:a05:600c:3d05:b0:4a1:faa1:3813 with SMTP id 5b1f17b1804b1-4ac187a6960mr296030155e9.27.1793710238737;
        Tue, 03 Nov 2026 04:50:38 -0800 (PST)
Message-ID: <2d45d102-e26f-4e93-a213-b02fb685b6ef@suse.com>
Date: Tue, 3 Nov 2026 13:50:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 2/3] x86/EFI: replace ebmalloc()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>
References: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793710239-1B0DD9EA-72A81B5F/10/78276251493
X-purgate-type: spam
X-purgate-size: 11914

Use the new brk_alloc() instead, with ebmalloc() merely being a thin
wrapper.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
I'm not quite certain whether we ought to permit non-page-granular
reservations. The in-memory image being somewhat larger due to possibly
excessive padding isn't really a big problem, I think.

As of now, is_xen_fixed_mfn()'s use of brk_end happens to okay with that
variable's declaration living in asm/setup.h. Hence I'd prefer to keep it
that way, yet eventually the decl may need to move to asm/setup.h.
---
v4: Also adjust is_xen_fixed_mfn().
v3: Re-base, in particular over moving of brk.c to common/.
v2: Re-base.

--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -263,7 +263,7 @@ quiet_cmd_obj_init_o = INIT_O  $@
 define cmd_obj_init_o
     $(OBJDUMP) -h $< | while read idx name sz rest; do \
         case "$$name" in \
-        .*.local|.data.rel.ro|.data.rel.ro.*) ;; \
+        .*.local|.data.rel.ro|.data.rel.ro.*|.bss..brk*) ;; \
         .text|.text.*|.data|.data.*|.bss|.bss.*) \
             test $$(echo $$sz | sed 's,00*,0,') != 0 || continue; \
             echo "Error: size of $<:$$name is 0x$$sz" >&2; \
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -7,6 +7,7 @@
 #ifndef X86_EFI_EFI_BOOT_H
 #define X86_EFI_EFI_BOOT_H
 
+#include <xen/brk.h>
 #include <xen/vga.h>
 
 #include <asm/boot-helpers.h>
@@ -119,6 +120,18 @@ static void __init relocate_trampoline(u
     reloc_trampoline64();
 }
 
+DEFINE_BRK(efi, MB(1));
+
+static void *__init ebmalloc(size_t size)
+{
+    void *ptr = brk_alloc(size);
+
+    if ( !ptr )
+        blexit(L"Out of BRK memory\r\n");
+
+    return ptr;
+}
+
 static void __init place_string(u32 *addr, const char *s)
 {
     char *alloc = NULL;
--- a/xen/arch/x86/efi/stub.c
+++ b/xen/arch/x86/efi/stub.c
@@ -41,12 +41,4 @@ void __init noreturn efi_multiboot2(EFI_
 
 void __init efi_init_memory(void) { }
 
-bool efi_boot_mem_unused(unsigned long *start, unsigned long *end)
-{
-    /* FIXME: Simplify once the call here with two NULLs goes away. */
-    if ( start || end )
-        *start = *end = (unsigned long)_end;
-    return false;
-}
-
 void efi_update_l4_pgtable(unsigned int l4idx, l4_pgentry_t l4e) { }
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -313,7 +313,7 @@ struct page_info
     (mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn)))
 #define is_xen_fixed_mfn(mfn)                     \
     (((mfn_to_maddr(mfn)) >= virt_to_maddr((unsigned long)_stext)) && \
-     ((mfn_to_maddr(mfn)) <= virt_to_maddr((unsigned long)__2M_rwdata_end - 1)))
+     (mfn_to_maddr(mfn) <= virt_to_maddr(brk_end - 1)))
 
 #define PRtype_info "016lx"/* should only be used for printk's */
 
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -9,6 +9,8 @@ extern const char __2M_rodata_start[], _
 extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
+extern unsigned long brk_end;
+
 extern unsigned long xenheap_initial_phys_start;
 extern uint64_t boot_tsc_stamp;
 
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1,6 +1,7 @@
 #include <xen/acpi.h>
 #include <xen/alternative-call.h>
 #include <xen/bitops.h>
+#include <xen/brk.h>
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/cpuidle.h>
@@ -164,6 +165,8 @@ cpumask_t __read_mostly cpu_present_map;
 
 unsigned long __read_mostly xen_phys_start;
 
+unsigned long __ro_after_init brk_end;
+
 /* Only used in asm code and within this source file */
 char asmlinkage __section(".init.bss.stack_aligned") __aligned(STACK_SIZE)
     cpu0_stack[STACK_SIZE];
@@ -1157,7 +1160,6 @@ void asmlinkage __init noreturn __start_
     struct boot_info *bi;
     unsigned long raw_max_page;
     int i, j, bytes = 0;
-    unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
     bool vm_init_done = false;
     int ret;
@@ -1523,7 +1525,7 @@ void asmlinkage __init noreturn __start_
         /*
          * This needs to remain in sync with remove_xen_ranges() and the
          * respective reserve_e820_ram() invocation below. No need to
-         * query efi_boot_mem_unused() here, though.
+         * query brk_cease() here, though.
          */
         xen->start = virt_to_maddr(_stext);
         xen->size  = __2M_rwdata_end - _stext;
@@ -1667,20 +1669,12 @@ void asmlinkage __init noreturn __start_
     if ( !xen_phys_start )
         panic("Not enough memory to relocate Xen\n");
 
-    /* FIXME: Putting a hole in .bss would shatter the large page mapping. */
-    if ( using_2M_mapping() )
-        efi_boot_mem_unused(NULL, NULL);
-
     /* This needs to remain in sync with remove_xen_ranges(). */
-    if ( efi_boot_mem_unused(&eb_start, &eb_end) )
-    {
-        if ( !reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start)) ||
-             !reserve_e820_ram(&boot_e820, __pa(eb_end), __pa(__2M_rwdata_end)) )
-            panic("Failed to reserve Xen in E820\n");
-    }
-    else
-        if ( !reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end)) )
-            panic("Failed to reserve Xen in E820\n");
+    brk_end = brk_cease();
+    if ( using_2M_mapping() )
+        brk_end = PAGE_ALIGN_2M(brk_end);
+    if ( !reserve_e820_ram(&boot_e820, __pa(_stext), __pa(brk_end)) )
+        panic("Failed to reserve Xen in E820\n");
 
     /* Late kexec reservation (dynamic start address). */
     kexec_reserve_area();
@@ -2274,7 +2268,6 @@ __initcall(init_xen_cap_info);
 
 int __hwdom_init remove_xen_ranges(struct rangeset *r)
 {
-    paddr_t start, end;
     int rc;
 
     /* S3 resume code (and other real mode trampoline code) */
@@ -2296,26 +2289,10 @@ int __hwdom_init remove_xen_ranges(struc
         return rc;
 
     /* hypervisor .data + .bss */
-    if ( efi_boot_mem_unused(&start, &end) )
-    {
-        ASSERT(__pa(start) >= __pa(&__2M_rwdata_start));
-        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
-                                   PFN_DOWN(__pa(start) - 1));
-        if ( rc )
-            return rc;
-        ASSERT(__pa(end) <= __pa(&__2M_rwdata_end));
-        rc = rangeset_remove_range(r, PFN_DOWN(__pa(end)),
-                                   PFN_DOWN(__pa(&__2M_rwdata_end) - 1));
-        if ( rc )
-            return rc;
-    }
-    else
-    {
-        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
-                                   PFN_DOWN(__pa(&__2M_rwdata_end) - 1));
-        if ( rc )
-            return rc;
-    }
+    rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
+                               PFN_DOWN(__pa(brk_end) - 1));
+    if ( rc )
+        return rc;
 
     return 0;
 }
--- a/xen/arch/x86/tboot.c
+++ b/xen/arch/x86/tboot.c
@@ -321,8 +321,6 @@ void tboot_shutdown(uint32_t shutdown_ty
     /* if this is S3 then set regions to MAC */
     if ( shutdown_type == TB_SHUTDOWN_S3 )
     {
-        unsigned long s, e;
-
         /*
          * Xen regions for tboot to MAC. This needs to remain in sync with
          * remove_xen_ranges().
@@ -336,16 +334,8 @@ void tboot_shutdown(uint32_t shutdown_ty
         g_tboot_shared->mac_regions[1].size = __2M_rodata_end - _stext;
         /* hypervisor .data + .bss */
         g_tboot_shared->mac_regions[2].start = (uint64_t)__pa(&__2M_rwdata_start);
-        g_tboot_shared->mac_regions[2].size = __2M_rwdata_end - __2M_rwdata_start;
-        if ( efi_boot_mem_unused(&s, &e) )
-        {
-            g_tboot_shared->mac_regions[2].size =
-                s - (unsigned long)__2M_rwdata_start;
-            g_tboot_shared->mac_regions[3].start = __pa(e);
-            g_tboot_shared->mac_regions[3].size =
-                (unsigned long)__2M_rwdata_end - e;
-            g_tboot_shared->num_mac_regions = 4;
-        }
+        g_tboot_shared->mac_regions[2].size =
+            brk_end - (unsigned long)__2M_rwdata_start;
 
         /*
          * MAC domains and other Xen memory
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1830,8 +1830,6 @@ void __init efi_init_memory(void)
         pte_attr_t prot;
     } *extra, *extra_head = NULL;
 
-    free_ebmalloc_unused_mem();
-
     if ( !efi_enabled(EFI_BOOT) )
         return;
 
--- a/xen/common/efi/ebmalloc.c
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "efi.h"
-#include <xen/init.h>
-#include <xen/mm.h>
-
-#ifdef CONFIG_ARM
-/*
- * TODO: Enable EFI boot allocator on ARM.
- * This code can be common for x86 and ARM.
- * Things TODO on ARM before enabling ebmalloc:
- *   - estimate required EBMALLOC_SIZE value,
- *   - where (in which section) ebmalloc_mem[] should live; if in
- *     .bss.page_aligned, as it is right now, then whole BSS zeroing
- *     have to be disabled in xen/arch/arm/arm64/head.S; though BSS
- *     should be initialized somehow before use of variables living there,
- *   - use ebmalloc() in ARM/common EFI boot code,
- *   - call free_ebmalloc_unused_mem() somewhere in init code.
- */
-#define EBMALLOC_SIZE	MB(0)
-#else
-#define EBMALLOC_SIZE	MB(1)
-#endif
-
-static char __section(".bss.page_aligned") __aligned(PAGE_SIZE)
-    ebmalloc_mem[EBMALLOC_SIZE];
-static unsigned long __read_mostly ebmalloc_allocated;
-
-/* EFI boot allocator. */
-void __init *ebmalloc(size_t size)
-{
-    void *ptr = ebmalloc_mem + ebmalloc_allocated;
-
-    ebmalloc_allocated += ROUNDUP(size, sizeof(void *));
-
-    if ( ebmalloc_allocated > sizeof(ebmalloc_mem) )
-        blexit(L"Out of static memory\r\n");
-
-    return ptr;
-}
-
-bool efi_boot_mem_unused(unsigned long *start, unsigned long *end)
-{
-    /* FIXME: Drop once the call here with two NULLs goes away. */
-    if ( !start && !end )
-    {
-        ebmalloc_allocated = sizeof(ebmalloc_mem);
-        return false;
-    }
-
-    *start = (unsigned long)ebmalloc_mem + PAGE_ALIGN(ebmalloc_allocated);
-    *end = (unsigned long)ebmalloc_mem + sizeof(ebmalloc_mem);
-
-    return *start < *end;
-}
-
-void __init free_ebmalloc_unused_mem(void)
-{
-    unsigned long start, end;
-
-    if ( !efi_boot_mem_unused(&start, &end) )
-        return;
-
-    destroy_xen_mappings(start, end);
-
-#ifdef CONFIG_X86
-    /*
-     * By reserving the space early in the E820 map, it gets freed way before
-     * we make it here. Don't free the range a 2nd time.
-     */
-#else
-    init_xenheap_pages(__pa(start), __pa(end));
-#endif
-
-    printk(XENLOG_INFO "Freed %lukB unused BSS memory\n", (end - start) >> 10);
-}
--- a/xen/common/efi/efi-common.mk
+++ b/xen/common/efi/efi-common.mk
@@ -1,4 +1,4 @@
-EFIOBJ-y := boot.init.o pe.init.o ebmalloc.o runtime.o
+EFIOBJ-y := boot.init.o pe.init.o runtime.o
 EFIOBJ-$(CONFIG_COMPAT) += compat.o
 
 CFLAGS-y += -fshort-wchar
--- a/xen/common/efi/efi.h
+++ b/xen/common/efi/efi.h
@@ -48,10 +48,6 @@ void noreturn blexit(const CHAR16 *str);
 
 const CHAR16 *wmemchr(const CHAR16 *s, CHAR16 c, UINTN n);
 
-/* EFI boot allocator. */
-void *ebmalloc(size_t size);
-void free_ebmalloc_unused_mem(void);
-
 const void *pe_find_section(const void *image, const UINTN image_size,
                             const CHAR16 *section_name, UINTN *size_out);
 
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -39,7 +39,6 @@ static inline bool efi_enabled(unsigned
 extern bool efi_secure_boot;
 
 void efi_init_memory(void);
-bool efi_boot_mem_unused(unsigned long *start, unsigned long *end);
 unsigned long efi_get_time(void);
 void efi_reset_system(bool warm);
 #ifndef COMPAT


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:51:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:51:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469721.1678479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODz2-0007Jl-Hv; Tue, 03 Nov 2026 12:51:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469721.1678479; Tue, 03 Nov 2026 12:51:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xODz2-0007Je-Ey; Tue, 03 Nov 2026 12:51:24 +0000
Received: by outflank-mailman (input) for mailman id 1469721;
 Tue, 03 Nov 2026 12:51:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xODz0-0007JI-Kx
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:51:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xODz0-00DBGH-1I
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:51:22 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d8c6-8faa-0a2a0a5109dd-0a2a4505bc92-12
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:51:22 +0100
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d8c9-4cb1-0a2a45050019-d155802aa466-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:51:21 +0100
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4a549cd7fd2so6707755e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:51:21 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b9b54dsm24535110f8f.47.2026.11.03.04.51.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:51:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710281; x=1794315081; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=2gMm2a7QNwXZYXz1DEn6YS019avxsFmIWcQ9BJGK0Ao=;
        b=dRAY0OR8SI5o9mO44co8aahxMKZ1UPaBgyT2oWh0dt4axI4jLryx7I8LSWAHVv6hgY
         YUAaxb1tGFfYYN2UQAaGVq1tz36xoc5+hZ73Bwg5g96tUpsaE+uSEs6Bok7WHjleh5gI
         GTP75LDL1QFAw6bUZfjvydphNI/u3wwQiZznJGM2TRdPzFLNjzkzfR8T7QvYgi44tqAz
         4GcE4scZXX1aPfKsMDTfMpITgnf22uFPLKNM2fH56vZMaozXwmRJg8ksmYm09azJdYQd
         5lYIBGfrNnlQnYSRM8bbW6i1T57JXKN1710soMNK5zxVxe09Gt5lQ7ho8ektJRuAGtsG
         bHvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710281; x=1794315081;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=2gMm2a7QNwXZYXz1DEn6YS019avxsFmIWcQ9BJGK0Ao=;
        b=GBTzgAGYVw0obYQgMaygZjB/UgkcdZ1BxVNOvHPXdHvVwUHHPfkdXuteVhPK12h+jo
         y5qD8zf2h98uQHa/eepdSoSojzqdJboO5lQC3cUhJJk87+diQaBq0IeB3nMHay0u6xW2
         X6JycmmHE/Y7izEb3ElyIdII9ghtQy1NX8xy8bZ5B3UOaCWN64u+FLIr18o2auuWmLxb
         Gx9+x7CFrYpmVlM/6KzDZNtTD7Za3DjwLvqXvb4TIc/LGKECdB6dobKqwg/I04g7ABxB
         7k255GPiZRwAHQXnWIYq+DRWsEHV6epSiRxKH+S4UOWftmv3+erqKNKBzj5WhrsbjISn
         6a7w==
X-Gm-Message-State: APuU4Z+AOz2uF3BS+fkUPxZM9zyLbfuSlV7kW7n3DhmUU3FES07E4gD0
	UBiyqjFBsIIOc/H99u2IgM8SCWTHAJEjMnzfW2FfRLRNuYIghrbpb0Lw2oddlutwDcYFSnQTypc
	4y8SMtg==
X-Gm-Gg: AYBFou1P5kMBWuPKSP0CuHdP9Gnm4Bb3YWFdWzANOWsnxxbDq/ZuRjzK5LnL2oOwsUp
	01njPq6rSqM5lP8iXkKLDMOt5+T1fyschyt60kNdJovxXcC5KkVoXADsQxu2drhw1m+VnpqjvRU
	vpk46zBUrjlRND+fVcvmIVvA8cAu9xA0b3oCQmJ8ryCeaWx5UWQmOCilJJtWcs+0nhYbczDFTn3
	1odUh50ahhYgm4B7MTIEGtKzBJotFxYEu25hygiHAejpjhzEv0McEXSniHSks2nbFCjDP50Z3z6
	XpdLpV3DrT9BvAxuciLsvh9D9hCaYKZrdXyyFHi8tLXOLwZPBC/ANVCCSRyKAGeCi27CpiOr9OA
	SAFgyPlmTvw1jbXheLqho3f5j327Q7Tzw3Lty6goNHi8EiIoZU+wys1x9k/wGIfoyA8XMTtzt0s
	GuhF1PbyyS+ltXU5rQhFJmbw5a0MCwqJXAIEbVHbH1VMNxSnzmXyNwGyot7W7ChgRgO29adJn58
	iINf0L7ccyb1WBwXtvHBMrwCFzBUashmla2W1pKIdRj9fpqvKdKqDOgw87/P2+HgclFJeF8dytc
	YR9w/CNj5dcgoMv25RepnsmluRmk8sp8DOyJswoqDF9bCb6dWgSO9Ue0P0wZvCcH/Un9hB46AWf
	FoL2w8FSdGo9tTos=
X-Received: by 2002:a05:600c:4715:b0:49f:ffa2:1c72 with SMTP id 5b1f17b1804b1-4ac17567cc8mr285886085e9.11.1793710281510;
        Tue, 03 Nov 2026 04:51:21 -0800 (PST)
Message-ID: <0360de96-99e0-49da-942b-45727ac6b296@suse.com>
Date: Tue, 3 Nov 2026 13:51:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 3/3] xhci-dbc: use brk_alloc()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <640c0ea5-fbbf-436d-b150-4537cbe98fdf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793710282-F76BD2A1-B78C87DE/10/78276251493
X-purgate-type: spam
X-purgate-size: 2953

This way the relatively large chunk of DMA buffers can be freed when the
driver isn't in use.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
v3: Re-base over moving of brk.c to common/.

--- a/xen/drivers/char/xhci-dbc.c
+++ b/xen/drivers/char/xhci-dbc.c
@@ -19,6 +19,7 @@
  * Copyright (c) 2019 Assured Information Security.
  */
 
+#include <xen/brk.h>
 #include <xen/delay.h>
 #include <xen/iommu.h>
 #include <xen/mm.h>
@@ -27,6 +28,7 @@
 #include <xen/serial.h>
 #include <xen/timer.h>
 #include <xen/types.h>
+
 #include <asm/fixmap.h>
 #include <asm/io.h>
 #include <asm/string.h>
@@ -1332,7 +1334,7 @@ static struct uart_driver dbc_uart_drive
 };
 
 /* Those are accessed via DMA. */
-struct dbc_dma_bufs {
+struct __aligned(PAGE_SIZE) dbc_dma_bufs {
     struct xhci_trb evt_trb[DBC_TRB_RING_CAP];
     struct xhci_trb out_trb[DBC_TRB_RING_CAP];
     struct xhci_trb in_trb[DBC_TRB_RING_CAP];
@@ -1346,8 +1348,7 @@ struct dbc_dma_bufs {
      * DMA-reachable by the USB controller.
      */
 };
-static struct dbc_dma_bufs __section(".bss.page_aligned") __aligned(PAGE_SIZE)
-    dbc_dma_bufs;
+DEFINE_BRK(xhci, sizeof(struct dbc_dma_bufs));
 
 static int __init cf_check xhci_parse_dbgp(const char *opt_dbgp)
 {
@@ -1424,24 +1425,33 @@ void __init xhci_dbc_uart_init(void)
 {
     struct dbc_uart *uart = &dbc_uart;
     struct dbc *dbc = &uart->dbc;
+    struct dbc_dma_bufs *dma_bufs;
 
     if ( !dbc->enable )
         return;
 
-    dbc->dbc_ctx = &dbc_dma_bufs.ctx;
-    dbc->dbc_erst = &dbc_dma_bufs.erst;
-    dbc->dbc_ering.trb = dbc_dma_bufs.evt_trb;
-    dbc->dbc_oring.trb = dbc_dma_bufs.out_trb;
-    dbc->dbc_iring.trb = dbc_dma_bufs.in_trb;
-    dbc->dbc_owork.buf = dbc_dma_bufs.out_wrk_buf;
-    dbc->dbc_iwork.buf = dbc_dma_bufs.in_wrk_buf;
-    dbc->dbc_str = dbc_dma_bufs.str_buf;
+    dma_bufs = brk_alloc(sizeof(*dma_bufs));
+    if ( !dma_bufs )
+    {
+        dbc->enable = false;
+        printk(XENLOG_ERR "XHCI: not enough BRK space available\n");
+        return;
+    }
+
+    dbc->dbc_ctx = &dma_bufs->ctx;
+    dbc->dbc_erst = &dma_bufs->erst;
+    dbc->dbc_ering.trb = dma_bufs->evt_trb;
+    dbc->dbc_oring.trb = dma_bufs->out_trb;
+    dbc->dbc_iring.trb = dma_bufs->in_trb;
+    dbc->dbc_owork.buf = dma_bufs->out_wrk_buf;
+    dbc->dbc_iwork.buf = dma_bufs->in_wrk_buf;
+    dbc->dbc_str = dma_bufs->str_buf;
 
     if ( dbc_open(dbc) )
     {
         iommu_add_extra_reserved_device_memory(
-                PFN_DOWN(virt_to_maddr(&dbc_dma_bufs)),
-                PFN_UP(sizeof(dbc_dma_bufs)),
+                PFN_DOWN(virt_to_maddr(dma_bufs)),
+                PFN_DOWN(sizeof(*dma_bufs)),
                 uart->dbc.sbdf,
                 "XHCI console");
         serial_register_uart(SERHND_XHCI, &dbc_uart_driver, &dbc_uart);



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:53:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:53:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469732.1678488 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE0b-0007rz-Rf; Tue, 03 Nov 2026 12:53:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469732.1678488; Tue, 03 Nov 2026 12:53:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE0b-0007ro-OH; Tue, 03 Nov 2026 12:53:01 +0000
Received: by outflank-mailman (input) for mailman id 1469732;
 Tue, 03 Nov 2026 12:53:00 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOE0Z-0007r1-Ua
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:53:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOE0Z-007Ext-BD
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:52:59 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d921-e002-0a2a0a5209dd-0a2a45089714-26
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:52:59 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d92a-f659-0a2a45080019-d155802bac23-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:52:59 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a59100fa83so37194215e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:52:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2a9faff90sm63361015e9.5.2026.11.03.04.52.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:52:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710378; x=1794315178; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=8VuaqkQPqBjqBACTzffN206lpD6yNEaHP3dOmoVJUos=;
        b=eqjsBA9+ZGoniSw0Y+GYl1UdyRpxwaRkM8LXXPSHIxCLaItg0WBywVJgZXeiluWkCc
         wn6nfQVtnMuTpQC1Td1GuEPIeEmFez4FtHbfJUcH2aEU7kga9yDkISSCK0iqDOVdnpDW
         1nrOIUjd70oZAgJwt3WCxNGXg2XinBeBuonHu67YrnUpOU/FOcKY1bZAhI1pGlwe6yx8
         uAnSNQop/38vqBze+x7VR4mnRgimN3a1fWCEquh4Sin8qnvdDqEf8Xa0YLqfvvSoYSk+
         svq7xSEEa4VMeVmRd3rt2bYrkuU0jNWx0qfdBBpZDjVsGnF3bmArqAbZCSB83JaqgB0e
         RPrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710378; x=1794315178;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=8VuaqkQPqBjqBACTzffN206lpD6yNEaHP3dOmoVJUos=;
        b=d3Y1+ZC7F3qbFzD0N0JXPSKwUPQvzOiQlWIx32MeUYwGq2H5y1eWd7IgVnJiwvo+DG
         /AtVlrxxm6Fjdv6bo5/T79TAW6yeGrkYuh2gxqC2HYjcJQOea5uKr5RmZcq4vpCkv+8r
         apNEegEgCbhNgzeQilzyyk+Pfgay3HviT65xlrJ+Qmh5PPx+8tR4y2eCW1En8g9q+ehc
         eqCHy6/8QXMYcCYEfNRUYhRM7HNPNj3H+em+gSTll8VrQUoTbRL6PN6WCHZMtEaEqSck
         6O6I3LidC2hD0UPdxu3bTGKoNwfpPXhBYEKKK7LdlMXhVKD8IVycSJXpOhrRzQOqPEQa
         BwIQ==
X-Gm-Message-State: APuU4Z8b4Nnt1hKunctu7QuBNj47eBWmU+tiaKD119jmy4zkE1nJe0aT
	iopprefSeKFQB+Rhv3EdlIWrgZb/0nkgnaLf/kHGsZyyHsCo6KTih7brbwSWEcMEwZm8yVpzhMK
	x9OJxMQ==
X-Gm-Gg: AYBFou0RhcDQPAqW7MM+BKTO7TxBhQHiZQEJY/bVtQqCKKlrDyyBX5bzDEzHcrZzhUq
	Hr79KHj7zx2Y63WaLC3gzexhveke+yG4ECJIugln7PLWTD4E6nVKs+Fk1E057TK58rOw8C/iFP7
	3UZU+m3UMO5+thK1s3YaqZ7wWUF1a1hEIVojFPtzAW32baHKMvJ/zl3Da9g4UvsT9wX+KLstIsC
	0ipCG2d3mw1024upKAAVh3Ycpj3DfHxlmwmc0mvZvoDSGVnNsdV9eiAIamXNVtwLGRnyv0AvETp
	ffCsX8xogWcsa2OORZWATR9KkfKephtvfdOgY4Vt2YqOkByLfqgZPXdiCCoPvwVsZYyrDvWAZYF
	aGLobzXnhBh9HpkZCm6Af+Z/VETvGxPxcZubIAdg7KTOmph/wWBxElygQaSoUyFEVbQpbWsoFb/
	M94xXepw0maA74wueV1t43xhLcUu6lNl5WlK7V7oAeIP+C8UJMrFeNDXYOTcIsOeQ+kNlq9ghC+
	/dus4yf7/rOiXC1mpoHAnB4wdSpp0xAkX5fvLxbYrpG+XGyl+XcRzMVC/XmQqAYo7rX/O0q7o8R
	nf3N/hJZ0BqzDwF4PFNEQiE7URZK/MgERRPill/vaRcvIRW/7An+Rbgc6LoZVVf3STzqW2fFwit
	tNeeV7Mj3c2bEp8aQ
X-Received: by 2002:a05:600c:4ece:b0:4a2:40:8d2c with SMTP id 5b1f17b1804b1-4ac17b2c396mr285826445e9.26.1793710378476;
        Tue, 03 Nov 2026 04:52:58 -0800 (PST)
Message-ID: <4da146da-26ee-4ecd-a747-130ed0783324@suse.com>
Date: Tue, 3 Nov 2026 13:52:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/cpuidle: allocate processor_powers[] dynamically
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793710379-D477387B-A1513A6A/10/78276251493
X-purgate-type: spam
X-purgate-size: 3185

There's no need to have a NR_CPUS-dimensioned static array there.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Some of the new conditionals checking processor_powers may arguably want
to check (really: might better have been put there long ago) xen_cpuidle
instead. Thoughts?

--- a/xen/arch/x86/acpi/cpu_idle.c
+++ b/xen/arch/x86/acpi/cpu_idle.c
@@ -44,6 +44,7 @@
 #include <xen/smp.h>
 #include <xen/softirq.h>
 #include <xen/trace.h>
+#include <xen/xvmalloc.h>
 
 #include <asm/apic.h>
 #include <asm/cpuidle.h>
@@ -149,7 +150,7 @@ custom_param("max_cstate", parse_cstate)
 static bool __read_mostly local_apic_timer_c2_ok;
 boolean_param("lapic_timer_c2_ok", local_apic_timer_c2_ok);
 
-struct acpi_processor_power *__read_mostly processor_powers[NR_CPUS];
+struct acpi_processor_power **__read_mostly processor_powers;
 
 /*
  * This field starts out as zero, and can be set to -1 just to signal it has
@@ -447,7 +448,9 @@ static void cf_check dump_cx(unsigned ch
 
 static int __init cf_check cpu_idle_key_init(void)
 {
-    register_keyhandler('c', dump_cx, "dump ACPI Cx structures", 1);
+    if ( processor_powers )
+        register_keyhandler('c', dump_cx, "dump ACPI Cx structures", 1);
+
     return 0;
 }
 __initcall(cpu_idle_key_init);
@@ -1339,6 +1342,9 @@ long set_cx_pminfo(uint32_t acpi_id, str
     if ( vendor_override > 0 )
         return 0;
 
+    if ( !processor_powers )
+        return -ENOMEM;
+
     print_cx_pminfo(acpi_id, power);
 
     cpu_id = get_cpu_id(acpi_id);
@@ -1512,12 +1518,14 @@ static void amd_cpuidle_init(struct acpi
 #ifdef CONFIG_PM_STATS
 uint32_t pmstat_get_cx_nr(unsigned int cpu)
 {
-    return processor_powers[cpu] ? processor_powers[cpu]->count : 0;
+    return processor_powers && processor_powers[cpu]
+           ? processor_powers[cpu]->count : 0;
 }
 
 int pmstat_get_cx_stat(unsigned int cpu, struct pm_cx_stat *stat)
 {
-    struct acpi_processor_power *power = processor_powers[cpu];
+    struct acpi_processor_power *power = processor_powers
+                                         ? processor_powers[cpu] : NULL;
     uint64_t idle_usage = 0, idle_res = 0;
     uint64_t last_state_update_tick, current_stime, current_tick;
     uint64_t usage[ACPI_PROCESSOR_MAX_POWER] = { 0 };
@@ -1694,6 +1702,15 @@ static int __init cf_check cpuidle_presm
     if ( !xen_cpuidle )
         return 0;
 
+    processor_powers = xvzalloc_array(struct acpi_processor_power *,
+                                      nr_cpu_ids);
+    if ( !processor_powers )
+    {
+        printk("CPUIDLE: disabled - not enough memory\n");
+        xen_cpuidle = 0;
+        return -ENOMEM;
+    }
+
     mwait_idle_init(&cpu_nfb);
     cpu_nfb.notifier_call(&cpu_nfb, CPU_UP_PREPARE, cpu);
     cpu_nfb.notifier_call(&cpu_nfb, CPU_ONLINE, cpu);
--- a/xen/arch/x86/include/asm/cpuidle.h
+++ b/xen/arch/x86/include/asm/cpuidle.h
@@ -5,7 +5,7 @@
 #include <xen/notifier.h>
 #include <xen/sched.h>
 
-extern struct acpi_processor_power *processor_powers[];
+extern struct acpi_processor_power **processor_powers;
 
 extern void (*pm_idle_save)(void);
 


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 12:54:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 12:54:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469741.1678497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE1X-0008Os-5g; Tue, 03 Nov 2026 12:53:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469741.1678497; Tue, 03 Nov 2026 12:53:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE1X-0008Ok-3A; Tue, 03 Nov 2026 12:53:59 +0000
Received: by outflank-mailman (input) for mailman id 1469741;
 Tue, 03 Nov 2026 12:53:58 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOE1V-0008OT-VC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 12:53:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOE1V-007FLq-BO
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:53:57 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d953-2eae-0a2a0a5409dd-0a2a4508d06c-46
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:53:57 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9d965-f659-0a2a45080019-d155802ed47d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 13:53:57 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4a218c463d1so27924455e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 04:53:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2aa481a45sm51437475e9.7.2026.11.03.04.53.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 04:53:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Subject:From:Cc:To:Content-Language:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793710437; x=1794315237; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=rFrjfLJvymmO7wm+shvpLfY3kMeh2pY6kKTI+A0f32s=;
        b=ZE90cJ9tivhpn8kGvzWYAYuZBat9z5bZMLhYzHTBMFVChZ3ayUErjgHfEgn9PU2tgU
         RHiwkNv2J8PYtEHBiu8fPWb694crg63f8aCm+i8o0Raz5kLT4njg4XCP5Z3pk3vTdzsC
         mjiY2LT7UTxemBosjVBybG9H+5If8bugSdfxbryU7iVDEzXwmM8SZ5wJss3Wn272LWYb
         Uom1Tk489kPrqfVlyKIdHr3769PlX6k73MNbDMYoG9rdsXHRqC0uE9SM+IWKOAclpqGw
         E2t8J1zJSh05KHYdAAoAqFsc2ki02s59/QWDJzyoNivE7b2tyVQaJnj/W4hZMWGm5q+J
         fX6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710437; x=1794315237;
        h=content-transfer-encoding:content-type:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=rFrjfLJvymmO7wm+shvpLfY3kMeh2pY6kKTI+A0f32s=;
        b=ChHUKPd10UlQC25qtUyaQQBRIFFFs889lpLnuloZ+qFTdSmp8joREoIFF4+EWE5cAD
         VfH//oxKk0+eDpKEsAJ6ejmDzaM1jARG4yeUye5BclW/LlSCzK3TNN+rg5S5CZsj3+Ya
         oLZsJsO32gbe2kVlH0Dl6ig4F7o1tsmJfDsGiTvGsQMRMMm97WJ8+kXya7E6iC5n8XxC
         GxQsvpJRkzuevc7m1AzcP+fy3qyImrE5DD9t/PBTmCaja9vsjRPddzTJX1khJMz50Zkv
         2WSixz2l2d0X0mz+STxR3OxEh7Zn1n2sNmvWJzjjNvQRHa2cefDfI1lm5GWAYiJs6opi
         kiEA==
X-Gm-Message-State: APuU4Z9fDM42QguBHcEFioBJTwMHryI56mVRShl4QJw442V9wwARqRLx
	6YyCxt2icD9c9djo46+ai2BUdRQhJUqFaEMdf683EDKvcIjX/+NGuVB9GxUre0H9m3gVqdk9pB7
	SrniFmg==
X-Gm-Gg: AYBFou3IsZ6QUvwF0JOenItiNTdDvOiAB3NB5zjEluO2V64YrnnNrdzIRDV2+Pnh/rF
	D7ffQZ1I2Di27HkQyZK6vGDw6YBigzvcw2FduPiQI4xBGKD4q92qYbT7bKJJyq59vlvTBk45GHj
	ceiEd+RNnlKYotkbOtCpbeyxktOWtGG4zn2Y24sB4hBUZWBHtx4f1endlUtxDE+/+UWEQKC3Jku
	MuAVCPy55Bess16olL8tpO85zbbinmHfi3LcVlu7FQW3vdv8kJvIT/9Zfshvq1WXUyTIaOhdcNM
	NQD1mnk2RPrhR/wqI709vZIS5s2nCD9POkjR0pDwuj/jmDWwSzXddXCr5spOjMmme4TvH1oWzLt
	6KUui9cAcAHPRx+GHFeGvbGXk/kZ5RnrVyQG9GK9WAr1npn2/69kZRSiqXUbJIdUpSZOvZEzTPi
	ICdrXhrxEkjjCaxbdhZ7tXY0TjgfSiOC/3gDZKt9Id95nM8/vqWHDsA/UwAKel9+dfMmVQVdzVf
	YWWBWz8xLLbZ/ws/L3ndrWxHNYlLVQNJhh8MaPuDhZNSGAEpwI5Juk8oMmFyzD0rxjo6kQYFxoq
	T40NunAmRfpwuQs6lw4AVGVz/T2z0zkiful3Rck6WEWqqO2AH3/xE25G6YfEXW8b/1nMds0Ly+i
	TfpdhanL8jtkevFG8/5l8FsUNAyWJQpCW0K7jLg==
X-Received: by 2002:a05:600c:4e43:b0:4ab:e27d:e241 with SMTP id 5b1f17b1804b1-4ac180f28f7mr283466735e9.15.1793710436812;
        Tue, 03 Nov 2026 04:53:56 -0800 (PST)
Message-ID: <9cd6da48-7a5e-4971-93e1-7d7262ddf7fc@suse.com>
Date: Tue, 3 Nov 2026 13:53:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/cpufreq: allocate processor_pminfo[] dynamically
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793710437-DFAD487B-DE4682C9/10/78276251493
X-purgate-type: spam
X-purgate-size: 5035

There's no need to have a NR_CPUS-dimensioned static array there.

As ordering of pre-SMP initcalls isn't well-defined, allocate the array
from both cpufreq_presmp_init() and cpufreq_register_driver().

Alongside adding a few NULL checks, drop a redundant one from
get_cpufreq_para().

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/drivers/acpi/pm-op.c
+++ b/xen/drivers/acpi/pm-op.c
@@ -104,8 +104,7 @@ static int get_cpufreq_para(struct xen_s
     pmpt = processor_pminfo[op->cpuid];
     policy = per_cpu(cpufreq_cpu_policy, op->cpuid);
 
-    if ( !pmpt ||
-         ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||
+    if ( ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||
          /* Avoid NULL deref of pmpt->perf.states[] */
          ((pmpt->init & XEN_CPPC_INIT) && pmpt->perf.state_count) ||
          !policy || !policy->governor )
@@ -369,7 +368,7 @@ int do_pm_op(struct xen_sysctl_pm_op *op
 
     if ( op->cpuid >= nr_cpu_ids || !cpu_online(op->cpuid) )
         return -EINVAL;
-    pmpt = processor_pminfo[op->cpuid];
+    pmpt = processor_pminfo ? processor_pminfo[op->cpuid] : NULL;
 
     switch ( op->cmd & PM_PARA_CATEGORY_MASK )
     {
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -227,7 +227,7 @@ int do_get_pm_info(struct xen_sysctl_get
 
     if ( !op || (op->cpuid >= nr_cpu_ids) || !cpu_online(op->cpuid) )
         return -EINVAL;
-    pmpt = processor_pminfo[op->cpuid];
+    pmpt = processor_pminfo ? processor_pminfo[op->cpuid] : NULL;
 
     switch ( op->type & PMSTAT_CATEGORY_MASK )
     {
--- a/xen/drivers/cpufreq/cpufreq.c
+++ b/xen/drivers/cpufreq/cpufreq.c
@@ -218,7 +218,7 @@ int cpufreq_limit_change(unsigned int cp
     struct cpufreq_policy policy;
 
     if (!cpu_online(cpu) || !(data = per_cpu(cpufreq_cpu_policy, cpu)) ||
-        !processor_pminfo[cpu])
+        !processor_pminfo || !processor_pminfo[cpu])
         return -ENODEV;
 
     perf = &processor_pminfo[cpu]->perf;
@@ -273,7 +273,7 @@ int cpufreq_add_cpu(unsigned int cpu)
     unsigned int shared_type;
 
     /* to protect the case when Px was not controlled by xen */
-    if ( !processor_pminfo[cpu] || !cpu_online(cpu) )
+    if ( !processor_pminfo || !processor_pminfo[cpu] || !cpu_online(cpu) )
         return -EINVAL;
 
     if ( !(processor_pminfo[cpu]->init & (XEN_PX_INIT | XEN_CPPC_INIT)) )
@@ -448,7 +448,7 @@ int cpufreq_del_cpu(unsigned int cpu)
     const struct xen_psd_package *domain_info;
 
     /* to protect the case when Px was not controlled by xen */
-    if ( !processor_pminfo[cpu] || !cpu_online(cpu) )
+    if ( !processor_pminfo || !processor_pminfo[cpu] || !cpu_online(cpu) )
         return -EINVAL;
 
     if ( !(processor_pminfo[cpu]->init & (XEN_PX_INIT | XEN_CPPC_INIT)) )
@@ -563,6 +563,9 @@ int set_px_pminfo(uint32_t acpi_id, stru
     struct processor_pminfo *pmpt;
     struct processor_performance *pxpt;
 
+    if ( !processor_pminfo )
+        return -ENOMEM;
+
     cpu = get_cpu_id(acpi_id);
     if ( cpu < 0 || !perf )
     {
@@ -726,6 +729,9 @@ int set_cppc_pminfo(unsigned int acpi_id
     int ret = 0, cpu_id;
     struct processor_pminfo *pm_info;
 
+    if ( !processor_pminfo )
+        return -ENOMEM;
+
     cpu_id = get_cpu_id(acpi_id);
     if ( cpu_id < 0 )
     {
@@ -947,6 +953,11 @@ static struct notifier_block cpu_nfb = {
 
 static int __init cf_check cpufreq_presmp_init(void)
 {
+    if ( !processor_pminfo )
+        processor_pminfo = xvzalloc_array(struct processor_pminfo *, nr_cpu_ids);
+    if ( !processor_pminfo )
+        return -ENOMEM;
+
     register_cpu_notifier(&cpu_nfb);
     return 0;
 }
@@ -954,6 +965,11 @@ presmp_initcall(cpufreq_presmp_init);
 
 int __init cpufreq_register_driver(const struct cpufreq_driver *driver_data)
 {
+    if ( !processor_pminfo )
+        processor_pminfo = xvzalloc_array(struct processor_pminfo *, nr_cpu_ids);
+    if ( !processor_pminfo )
+        return -ENOMEM;
+
    if ( !driver_data || !driver_data->init ||
         !driver_data->verify || !driver_data->exit ||
         (!driver_data->target == !driver_data->setpolicy) )
--- a/xen/drivers/cpufreq/utility.c
+++ b/xen/drivers/cpufreq/utility.c
@@ -32,7 +32,7 @@
 #include <public/sysctl.h>
 
 struct cpufreq_driver __read_mostly cpufreq_driver;
-struct processor_pminfo *__read_mostly processor_pminfo[NR_CPUS];
+struct processor_pminfo **__read_mostly processor_pminfo;
 DEFINE_PER_CPU_READ_MOSTLY(struct cpufreq_policy *, cpufreq_cpu_policy);
 
 /*********************************************************************
--- a/xen/include/acpi/cpufreq/processor_perf.h
+++ b/xen/include/acpi/cpufreq/processor_perf.h
@@ -59,7 +59,7 @@ struct processor_pminfo {
     uint32_t init;
 };
 
-extern struct processor_pminfo *processor_pminfo[NR_CPUS];
+extern struct processor_pminfo **processor_pminfo;
 
 struct px_stat {
     uint8_t total;        /* total Px states */


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:01:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:01:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469762.1678523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE8n-0001yC-4N; Tue, 03 Nov 2026 13:01:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469762.1678523; Tue, 03 Nov 2026 13:01:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOE8n-0001y5-05; Tue, 03 Nov 2026 13:01:29 +0000
Received: by outflank-mailman (input) for mailman id 1469762;
 Tue, 03 Nov 2026 13:01:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOE8m-0001xz-5U
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:01:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOE8l-003Vk9-Aw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:01:27 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9db21-8faa-0a2a0a5109dd-0a2a4505a83c-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:01:27 +0100
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9db25-4cb1-0a2a45050019-d155dd35ec65-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:01:26 +0100
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-48e4831c028so3633500f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 05:01:25 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b8011csm28152626f8f.31.2026.11.03.05.01.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 05:01:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793710885; x=1794315685; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LwIrtioqvH93/Pzz+h/sMiRyUomArmW4gpD6n4nKQXM=;
        b=FF2IiAAjJzRk1sfSbvsBf4gaH0f2hMYDLYKVQb+MEDEz2ZNoot+rKZO7F7Sq+mRHLL
         m6+PVVZpwblimoYXACbv8CjpbpF5KVLDb/vECE8F0IEPZe5JME6az/H3fgl0lXgnxRKW
         +6umTQt+h0ruCyYFBR7mytSy1c4/b5up5hqWM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793710885; x=1794315685;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=LwIrtioqvH93/Pzz+h/sMiRyUomArmW4gpD6n4nKQXM=;
        b=PDYhzaMIWng87hW9FKsZv4S4LoTBI8Mi161Tkc6XrW3A7Pejcix3zS7bUbnQmMnZ0q
         w3nnMocmnqN+dChlgSptdnIVRAUKhmQ4OgA3+pqZ0pYaYiMsJHglEDgudHmy6zqkQzHz
         EuRBNJATUe/W767gRxTDQrKDCVqPg4lm1WxOUxTNB/7tWtGCHdePik6EiOPE/AOfjUyv
         L27f24KL54CV0lG33O1Dzl1sY/fYNLi3uw8rb54WFZHnIwsOqcH3GfM2gUameputEu3s
         i+g3oJu9QqfqOutbb3EmCDN736133TP1UEXoch9iQVO/MBXuxr1kXNyou2vtnh69yPt6
         WuoA==
X-Gm-Message-State: APuU4Z+/q+42Y+2YnsSNgUgNB6rFxJ+QmMZ6NgFCiH2NIjSDSyp7KOJu
	KgRXxQAJai0v3hG9p8w74448yvje1722BCZo9hUwkJnNjRdb9AR8BnNuMUnz/GGjlYKGi9SdDr/
	e/QofhNM=
X-Gm-Gg: AYBFou2+F8LuGU6SwY77ZFfDcQPqEzpugJ2osxfqapXmrX/+fQpz6FXfKuNo5Atmd45
	6xSpDKb5vQVOl31c1Y1x3IAl+Ew5Bk7GvBGroUL/uWnMxU/LJ0xxsqoWt3UYKHWgic1KcwzQ//W
	+uDRWxXjZsbkEDek/24sMxHFVsYeF6uzU9ff4tzdPAhfhK4Ct1xjS2utvkQ7k9F2IoVM5UgpL4g
	b5UyacpaGE1oYDgcQHS0rPP0As1PaFlW4mlDE6oUv7wf0gfCQJSRVMv9F6zcjPNIeR59vLKZ5L5
	X+jGnIvTVhnipP53O9Y1tv6n8HC3odzMUEVphFqrs99MZu6eZyJgWuWiFfWsFTYGa3i/jo22Lbs
	mlDFbjFoHRnokvKUT16ooen5KvZLE7DmRn8b/qgDLvqupv8i8Ii8Hdlzw//OpHmyvMDcSPwSxIz
	r9mVN4RfFGAGUwGkARXKGwQ5GgIwE32ri9iQ88l+raAZGuE8OZT92SYV61OLBlU5UL6ESx3AGNH
	crbtH1UsHP7ExZBpqyHuGnpL/orGg/ICxPFiciOn6Rd46RL8n0dinAgcqsNFXyFwwfoyQq9QCyE
	FvNXFjuPvpUqQbiJ+vgUzldaIG11N+M6vJn5Btjrn/YLmgSD6CVDVseqAOxqTNFH/n2swCqCF4C
	3DOQ=
X-Received: by 2002:a05:6000:2387:b0:48e:861b:882a with SMTP id ffacd0b85a97d-48e861b88abmr9916927f8f.47.1793710885043;
        Tue, 03 Nov 2026 05:01:25 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] xen/gnttab: Shrink struct gnttab_copy_buf
Date: Tue,  3 Nov 2026 13:01:20 +0000
Message-Id: <20261103130120.2020581-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793710886-F52A32A1-41314BAD/10/78276251493
X-purgate-type: spam
X-purgate-size: 3337

Move the booleans into earlier padding.  No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Julien Grall <julien@xen.org>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>

On 64bit, this shrinks from 64 bytes to 56 bytes.

On arm32, it's 40 bytes before and after.  Given that we can't reuse the
tail-padding from struct gnttab_copy_ptr, I'm not sure there's an obvious
improvement to be had:

  xen.git/xen$ pahole xen-syms-arm32-after -E -C gnttab_copy_buf
  struct gnttab_copy_buf {
        struct gnttab_copy_ptr {
                union {
                        /* typedef grant_ref_t -> uint32_t */ unsigned int ref;          /*     0     4 */
                        /* typedef xen_pfn_t -> uint64_t */ long long unsigned int gmfn; /*     0     8 */
                } u;                                                                     /*     0     8 */
                /* typedef domid_t -> uint16_t */ short unsigned int domid;              /*     8     2 */
                /* typedef uint16_t */ short unsigned int offset;                        /*    10     2 */
        }ptr; /*     0    16 */

        /* XXX last struct has 4 bytes of padding */

        /* typedef uint16_t */ short unsigned int         len;                           /*    16     2 */
        _Bool                      read_only;                                            /*    18     1 */
        _Bool                      have_grant;                                           /*    19     1 */
        _Bool                      have_type;                                            /*    20     1 */

        /* XXX 3 bytes hole, try to pack */

        struct domain *            domain;                                               /*    24     4 */
        /* typedef mfn_t */ struct {
                long unsigned int  mfn;                                                  /*    28     4 */
        } mfn; /*    28     4 */
        struct page_info *         page;                                                 /*    32     4 */
        void *                     virt;                                                 /*    36     4 */

        /* size: 40, cachelines: 1, members: 9 */
        /* sum members: 37, holes: 1, sum holes: 3 */
        /* paddings: 1, sum paddings: 4 */
        /* last cacheline: 40 bytes */
  };
---
 xen/common/grant_table.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 5e79c012b695..d2c3c73be900 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -2927,13 +2927,14 @@ struct gnttab_copy_buf {
     uint16_t len;
 
     /* Mapped etc. */
+    bool read_only;
+    bool have_grant;
+    bool have_type;
+
     struct domain *domain;
     mfn_t mfn;
     struct page_info *page;
     void *virt;
-    bool read_only;
-    bool have_grant;
-    bool have_type;
 };
 
 static int gnttab_copy_lock_domain(domid_t domid, struct gnttab_copy_buf *buf)

base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:13:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:13:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469772.1678531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEKa-00045m-3g; Tue, 03 Nov 2026 13:13:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469772.1678531; Tue, 03 Nov 2026 13:13:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEKa-00045e-0j; Tue, 03 Nov 2026 13:13:40 +0000
Received: by outflank-mailman (input) for mailman id 1469772;
 Tue, 03 Nov 2026 13:13:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaton@eik.bme.hu>) id 1xOEKY-00045L-0n
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:13:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEKW-002ooT-O0
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:13:36 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9ddff-e002-0a2a0a5209dd-0a2a4506e01c-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:13:35 +0100
Received: from [152.66.115.2] (helo=zero.eik.bme.hu)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9ddff-195a-0a2a45060019-9842730258a5-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:13:35 +0100
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 21E3660C4E7;
 Tue, 03 Nov 2026 14:13:35 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP
 id ibfRp-wsiu2I; Tue,  3 Nov 2026 14:13:32 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id 920D360C4E6; Tue, 03 Nov 2026 14:13:32 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 8EAB8139920;
 Tue, 03 Nov 2026 14:13:32 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Virus-Scanned: amavis at eik.bme.hu
Date: Tue, 3 Nov 2026 14:13:32 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Yonggang Luo <luoyonggang@gmail.com>
cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
    qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
    Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
    Philippe Mathieu-Daude <philmd@mailo.com>, 
    Antony Pavlov <antonynpavlov@gmail.com>, 
    Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
    =?ISO-8859-15?Q?Herv=E9_Poussineau?= <hpoussin@reactos.org>, 
    Max Filippov <jcmvbkbc@gmail.com>, 
    Niek Linnenbank <nieklinnenbank@gmail.com>, xen-devel@lists.xenproject.org, 
    qemu-riscv@nongnu.org, Jean-Christophe Dubois <jcd@tribudubois.net>, 
    qemu-ppc@nongnu.org, Alexandre Iooss <erdnaxe@crans.org>, 
    Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
    Jiaxun Yang <jiaxun.yang@flygoat.com>, 
    Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
    =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, 
    Thomas Huth <th.huth+qemu@posteo.eu>, 
    =?ISO-8859-15?Q?Cl=E9ment_Chigot?= <chigot@adacore.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    Yoshinori Sato <yoshinori.sato@nifty.com>, 
    Frederic Konrad <konrad.frederic@yahoo.fr>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Chao Liu <chao.liu@processmission.com>, 
    Sai Pavan Boddu <sai.pavan.boddu@amd.com>, 
    Alistair Francis <alistair@alistair23.me>, 
    Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
    Gaurav Sharma <gaurav.sharma_7@nxp.com>, 
    "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
In-Reply-To: <CAE2XoE-459vCeK1O__iCs_hgMfMEQHWf_f_=hXG4ZhMJ1Z4aBw@mail.gmail.com>
Message-ID: <b5987922-1ba0-c284-668f-10d2b114044f@eik.bme.hu>
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu> <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu> <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com> <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu> <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com> <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu> <CAE2XoE-459vCeK1O__iCs_hgMfMEQHWf_f_=hXG4ZhMJ1Z4aBw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-1209841981-1793711612=:91419"
X-purgate-ID: tlsNG-16d1c6/1793711615-F4A0477B-F699A830/0/0
X-purgate-type: clean
X-purgate-size: 11245

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-1209841981-1793711612=:91419
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 3 Nov 2026, Yonggang Luo wrote:
> On Mon, Nov 2, 2026 at 10:56 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>
>> On Mon, 2 Nov 2026, Yonggang Luo wrote:
>>> On Mon, Nov 2, 2026 at 4:57 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>
>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>>>> On Sun, Nov 1, 2026 at 7:29 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>
>>>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>>>>>> On Sun, Nov 1, 2026 at 1:06 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>>>
>>>>>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
>>>>>>>>> On Sat, Oct 31, 2026 at 8:42 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>>>>>>>
>>>>>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
>>>>>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>>>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
>>>>>>>>>>>>> type_init
>>>>>>>>>>>>> function that calls type_register_static(). A later change needs to
>>>>>>>>>>>>> pass a
>>>>>>>>>>>>
>>>>>>>>>>>> That's the point of the macro to hide the boiler plate code.
>>>>>>>>>>>>
>>>>>>>>>>>>> target mask into that registration, and the macros have no parameter
>>>>>>>>>>>>> for it.
>>>>>>>>>>>>
>>>>>>>>>>>> Couldn't you just change the macros to take that parameter instead of
>>>>>>>>>>>> expanding it everywhere?
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Problem of macros is that they don't have default parameters, so you
>>>>>>>>>>> need variants for everything:
>>>>>>>>>>>
>>>>>>>>>>> DEFINE_MACHINE
>>>>>>>>>>> DEFINE_MACHINE_EXTENDED
>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>>>>>>>>>> and now would need a new variant, with variant for other existing ones.
>>>>>>>>>>>
>>>>>>>>>>> In the end, it's just simpler to remove this and add the boilerplate.
>>>>>>>>>>> It's written once and never modified, so using a macro just save typing
>>>>>>>>>>> those lines once.
>>>>>>>>>>>
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> BALATON Zoltan
>>>>>>>>>>>>
>>>>>>>>>>>>> This series expands every caller first, with no behavior change, so the
>>>>>>>>>>>>> follow-up only replaces the type_register_static() call.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Each machine file gains a class_init function, a TypeInfo, and a
>>>>>>>>>>>>> type_init
>>>>>>>>>>>>> function that calls type_register_static(). The last patch removes
>>>>>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from include/hw/core/boards.h.
>>>>>>>>>>
>>>>>>>>>> Macros help reading the code not saving typing. If the actual
>>>>>>>>>> functionality is buried in a lot of boiler plate it's harder to understand
>>>>>>>>>> and spot bugs so putting the unintresting boiler plate behind a macro is
>>>>>>>>>> better even if you need a separate version for different cases. Then the
>>>>>>>>>> code that uses the macro will be much more obvious and not just a lot of
>>>>>>>>>
>>>>>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* are
>>>>>>>>> not defined properly
>>>>>>>>> that causes them to not be extended easily.
>>>>>>>>>
>>>>>>>>> DEFINE_TYPES is another example, use them can extend easily, how about
>>>>>>>>> always use DEFINE_TYPES?
>>>>>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and DEFINE_SECURE_MACHINE*?
>>>>>>>>
>>>>>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
>>>>>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't you add
>>>>>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for machines
>>>>>>>> that need it, or if it's needed by all machines then make the new
>>>>>>>> parameter required and add it to all convenience wrappers too so you can
>>>>>>>> keep using DEFINE_MACHINE* and just need to add one parameter to it in
>>>>>>>> machines?
>>>>>>>
>>>>>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
>>>>>>> calls to it also need
>>>>>>> to be changed, that means touch many $target_arch files. currently
>>>>>>> it's 13. But after these
>>>>>>
>>>>>> That's not different from expanding the macro which would touch the same
>>>>>> files.
>>>>>>
>>>>>>> changes, there will be much more usage on it, and if we want to add
>>>>>>> more parameters or attributes
>>>>>>> to it, it will be a new tree-wide change.
>>>>>>
>>>>>> Do you expect to need more parameters? Can't you add them at once then?
>>>>>>
>>>>>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
>>>>>>> explicit defined for
>>>>>>> DEFINE_TYPES
>>>>>>
>>>>>> My point is that keeping the boiler plate as little as possible makes the
>>>>>> code more readable. DEFINE_TYPES hides some of the boiler plate,
>>>>>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would expose
>>>>>> some even if it's better than no macro at all.
>>>>>>
>>>>>> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED that
>>>>>> need to be added?
>>>>>
>>>>> Hi BALATON
>>>>> the things we faced is we first is to add TypeInfo::is_available parameter to
>>>>> DEFINE_MACHINE_EXTENDED, and have more usage of it.
>>>>> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED, this is
>>>>> a prepare to remove TypeInfo::is_available parameter from
>>>>> DEFINE_MACHINE_EXTENDED,
>>>>>
>>>>> And finally, once all usage of TypeInfo::is_available can be replaced with
>>>>> targets:uint64_t, then we finally need to remove
>>>>> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
>>>>
>>>> Is there a way to avoid the temporary is_available churn and introduce the
>>>> targets:uint64_t right away? (I'm not following this so I don't really
>>>> know what you're talking about just looks like there's some churn here
>>>> which might be good to awoid anyway independent of these macros.)
>>>>
>>>>> That's what I am facing now. And the explicit
>>>>> static const TypeInfo xxx_machine_typeinfo = {
>>>>>    .name       = MACHINE_TYPE_NAME("xxx"),
>>>>>    .parent     = TYPE_MACHINE,
>>>>>    .class_init = xxx_machine_class_init,
>>>>> };
>>>>>
>>>>> Will help me avoid the issue. And I think this is a little boilerplate
>>>>> and very explicit.
>>>>
>>>> That's not all DEFINE_MACHINE hides though. It's longer with .abstract,
>>>> .secure and .iterfaces plus the machine initfn that would also need to be
>>>> expanded if you used DEFINE_TYPES.
>>>>
>>>> Is this conversion needed for all machines using all DEFINE_MACHINE
>>>
>>> At the end, only "none" machine do not have targets parameter or
>>> (QEMU_ARCH_ALL), as that's the sole
>>> machine that supports all targets.
>>>
>>>> variants or only some of them? If the latter why not convert those to
>>>
>>>
>>>
>>>
>>>> DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed with
>>>> other wrappers passing a default value without needing a new parameter.
>>>> That does not work if all machines need to do this but even then, keeping
>>>> the macro and adding a new required parameter is better in my opinion as
>>>> it keeps boiler plate hidden.
>>>
>>> Another option is keep DEFINE_MACHINE and introduce DEFINE_MACHINE_TARGETS
>>> and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE for
>>> simple case,
>>> that is parent is TYPE_MACHINE and have no custom type and no more
>>> attributes assigned.
>>> DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less clear
>>> than calling to DEFINE_MACHINE.
>>> And if we want to set more attributes to TypeInfo, just expand it to
>>> use type_init or DEFINE_TYPES, how about this way.
>>>
>>> This will be something like:
>>>
>>> #define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
>>>    static void machine_initfn##_class_init(ObjectClass *oc, const void *data) \
>>>    { \
>>>        MachineClass *mc = MACHINE_CLASS(oc); \
>>>        machine_initfn(mc); \
>>>    } \
>>>    static const TypeInfo machine_initfn##_typeinfo = { \
>>>        .name       = MACHINE_TYPE_NAME(namestr), \
>>>        .parent     = TYPE_MACHINE, \
>>>        .class_init = machine_initfn##_class_init, \
>>>    }; \
>>>    static void machine_initfn##_register_types(void) \
>>>    { \
>>>        type_register_targets(&machine_initfn##_typeinfo, targets); \
>>>    } \
>>>    type_init(machine_initfn##_register_types)
>>>
>>> /* Implicitly insecure */
>>> #define DEFINE_MACHINE(namestr, machine_initfn) \
>>>    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \
>>>
>>> As the many call is to DEFINE_MACHINE.
>>>
>>> And after all conversion, all existing usage of DEFINE_MACHINE will be
>>> converted to
>>> DEFINE_MACHINE_TARGETS.
>>> DEFINE_MACHINE will be called for ('none') machine or future heterogeneous
>>> machines
>>>
>>>
>>> Either way, these patches will be dropped. We will introduce
>>> DEFINE_MACHINE_TARGETS first.
>>
>> I think I'm lost and cannot follow what you want. As far as I understood
>> you want to add a new field "target" to machine TypeInfo but instead of
>> adding that straight away you proposed to first add is_available then
>> later replace that with target. I asked why do you need is_available and
>> not add target right away?
>>
>> Then if this target parameter will be needed for all machines why can't
>> you add that to all DEFINE_MACHINE macros as a required parameter and set
>> it for all machines passing it through to DEFINE_MACHINE_EXTENDED which
>> sets in the TypeInfo. That way no machines need changing other than adding
>> the target parameter to the existing DEFINE_MACHINE calls.
>>
>> What am I missing?
> Or sorry, I did not explain well.
>
> I means reshape DEFINE_MACHINE like
>
> https://lore.kernel.org/qemu-devel/20261102194826.1298-1-luoyonggang@gmail.com/T/#u
>
> basically every call to DEFINE_MACHINE needs the targets parameter.
> So we can always passing targets parameter for DEFINE_MACHINE.

That's OK and is what I suggested, the part I did not get is why do you 
need an intermediate is_available step instead of just adding the target 
parameter to all DEFINE_MACHINE* macros.

> And I think we can remove DEFINE_MACHINE_EXTENDED, as the call to it is verbose

You can't (without bringing back boiler plate) because some machines need 
finer control. That's why we have DEFINE_MACHINE_EXTENDED with all 
possible parameters and convenience wrappers around it for simpler cases. 
It may be possible to reorganise the macros dropping some unused 
DEFINE_MACHINE variants and introducing new ones that better suit the 
needs of machines currently using DEFINE_MACHINE_EXTENDED but just 
expanding all boiler plate for more complex machines not using 
DEFINE_MACHINE is what I'd like to avoid.

Regards,
BALATON Zoltan
--3866299591-1209841981-1793711612=:91419--


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:23:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:23:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469783.1678539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEU2-0006IK-27; Tue, 03 Nov 2026 13:23:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469783.1678539; Tue, 03 Nov 2026 13:23:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEU1-0006ID-Vr; Tue, 03 Nov 2026 13:23:25 +0000
Received: by outflank-mailman (input) for mailman id 1469783;
 Tue, 03 Nov 2026 13:23:24 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaton@eik.bme.hu>) id 1xOEU0-0006I7-MP
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:23:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEU0-00BCVj-2p
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:23:24 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9e049-e002-0a2a0a5209dd-0a2a4506cd18-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:23:24 +0100
Received: from [152.66.115.2] (helo=zero.eik.bme.hu)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9e04b-195a-0a2a45060019-984273026978-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:23:23 +0100
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 4DAAE60C2B6;
 Tue, 03 Nov 2026 14:23:23 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP
 id XGS0VU7w7tal; Tue,  3 Nov 2026 14:23:21 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id 2D9F760C0F3; Tue, 03 Nov 2026 14:23:21 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 2A1BF139920;
 Tue, 03 Nov 2026 14:23:21 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Virus-Scanned: amavis at eik.bme.hu
Date: Tue, 3 Nov 2026 14:23:21 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Yonggang Luo <luoyonggang@gmail.com>
cc: =?ISO-8859-15?Q?Daniel_P=2E_Berrang=E9?= <berrange@redhat.com>, 
    Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
    qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
    Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
    Philippe Mathieu-Daude <philmd@mailo.com>, 
    Antony Pavlov <antonynpavlov@gmail.com>, 
    Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
    =?ISO-8859-15?Q?Herv=E9_Poussineau?= <hpoussin@reactos.org>, 
    Max Filippov <jcmvbkbc@gmail.com>, 
    Niek Linnenbank <nieklinnenbank@gmail.com>, xen-devel@lists.xenproject.org, 
    qemu-riscv@nongnu.org, Jean-Christophe Dubois <jcd@tribudubois.net>, 
    qemu-ppc@nongnu.org, Alexandre Iooss <erdnaxe@crans.org>, 
    Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
    Jiaxun Yang <jiaxun.yang@flygoat.com>, 
    Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
    =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, 
    Thomas Huth <th.huth+qemu@posteo.eu>, 
    =?ISO-8859-15?Q?Cl=E9ment_Chigot?= <chigot@adacore.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    Yoshinori Sato <yoshinori.sato@nifty.com>, 
    Frederic Konrad <konrad.frederic@yahoo.fr>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Chao Liu <chao.liu@processmission.com>, 
    Sai Pavan Boddu <sai.pavan.boddu@amd.com>, 
    Alistair Francis <alistair@alistair23.me>, 
    Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
    Gaurav Sharma <gaurav.sharma_7@nxp.com>, 
    "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
In-Reply-To: <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
Message-ID: <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu> <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-50472206-1793712201=:91419"
X-purgate-ID: tlsNG-16d1c6/1793712204-FD60A77B-176C6D1F/0/0
X-purgate-type: clean
X-purgate-size: 4229

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-50472206-1793712201=:91419
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 3 Nov 2026, Yonggang Luo wrote:
> On Tue, Nov 3, 2026 at 4:16 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
>>
>> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
>>>>> type_init
>>>>> function that calls type_register_static(). A later change needs to
>>>>> pass a
>>>>
>>>> That's the point of the macro to hide the boiler plate code.
>>>>
>>>>> target mask into that registration, and the macros have no parameter
>>>>> for it.
>>>>
>>>> Couldn't you just change the macros to take that parameter instead of
>>>> expanding it everywhere?
>>>>
>>>
>>> Problem of macros is that they don't have default parameters, so you
>>> need variants for everything:
>>>
>>> DEFINE_MACHINE
>>> DEFINE_MACHINE_EXTENDED
>>> DEFINE_MACHINE_WITH_INTERFACES
>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>> and now would need a new variant, with variant for other existing ones.
>>>
>>> In the end, it's just simpler to remove this and add the boilerplate.
>>> It's written once and never modified, so using a macro just save typing
>>> those lines once.
>>
>> For each machine, it is only written once, but we add machines
>> over time, and every time a new machine is added the code style
>> is slightly different. We introduced all the variuos DEFINE_*
>> macros for QOM to better ensure consistent style and usage as
>> new code is added over time.
>
> I understand that the DEFINE_* macros are bloating because of this.
> Indeed currently the only two macros used are "DEFINE_MACHINE" and
> "DEFINE_MACHINE_EXTENDED"

There are a few machines using some others but these are the most used. 
That suggests maybe we should change the convenience wrappers to match 
what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one that 
allows all parameters which should be rarely needed.

> ; each time people want to add a new attribute, the macros is twiced.

Not necessarily. The SECURE parameter did that to preserve previous 
behaviour but if you add new parameter changing all callers (which is the 
same as expanding the macro that would also change all callers) then it's 
just a new parameter added not changing the number of DEFINE_MACHINE* 
wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED used 
less is an independent change.

> And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replaced
> with DEFINE_TYPES or TypeInfo
> and be more explicit. When we used as macro parameter, we need think

But that defies the purpose of hiding the QOM boiler plate as much as 
possible. New people are confused by QOM and it's easier for them to look 
up documentation on the DEFINE_MACHINE* macros to see what parameter is 
what and not care about how it's stored in QOM TypeInfo or what is that 
at all.

> what's that parameter means, and for
> TypeInfo, we can directly know what that member is about(because we
> are assigned with the member name).

The parameter also has a name and documentation so it's not simpler to 
look up TypeInfo than look at the macro definition or docs. In fact it's 
harder to guess from TypeInfo as then you also need to get into QOM.

> That's why I suggest keeping a single DEFINE_MACHINE, just like
> DEFINE_TYPES; as they are the most
> used macros(and simple enough), and won't suffer from changes much.

That means exposing all the boiler plate for all machines other than the 
simplest case. I think it would be better to keep DEFINE_MACHINE_EXTENDED 
but maybe rethink the existing wrappers and drop unused ones and maybe add 
new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still keep 
the boiler plate hidden.

Regards,
BALATON Zoltan
--3866299591-50472206-1793712201=:91419--


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:26:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:26:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469791.1678548 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEWz-0006vb-Fn; Tue, 03 Nov 2026 13:26:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469791.1678548; Tue, 03 Nov 2026 13:26:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEWz-0006vU-D4; Tue, 03 Nov 2026 13:26:29 +0000
Received: by outflank-mailman (input) for mailman id 1469791;
 Tue, 03 Nov 2026 13:26:28 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaton@eik.bme.hu>) id 1xOEWy-0006uH-CC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:26:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEWx-008cuu-AT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:26:27 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9e0fb-e002-0a2a0a5209dd-0a2a4504810e-16
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:26:27 +0100
Received: from [152.66.115.2] (helo=zero.eik.bme.hu)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaton@eik.bme.hu>)
 id 6ae9e102-b57f-0a2a45040019-98427302db9f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:26:27 +0100
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 7F89B60C38A;
 Tue, 03 Nov 2026 14:26:26 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP
 id HGLqhQTijtbz; Tue,  3 Nov 2026 14:26:24 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id 0C62960C38B; Tue, 03 Nov 2026 14:26:24 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 08A16139920;
 Tue, 03 Nov 2026 14:26:24 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Virus-Scanned: amavis at eik.bme.hu
Date: Tue, 3 Nov 2026 14:26:23 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: Yonggang Luo <luoyonggang@gmail.com>
cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, 
    qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>, 
    Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
    Philippe Mathieu-Daude <philmd@mailo.com>, 
    Antony Pavlov <antonynpavlov@gmail.com>, 
    Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
    =?ISO-8859-15?Q?Herv=E9_Poussineau?= <hpoussin@reactos.org>, 
    Max Filippov <jcmvbkbc@gmail.com>, 
    Niek Linnenbank <nieklinnenbank@gmail.com>, xen-devel@lists.xenproject.org, 
    qemu-riscv@nongnu.org, Jean-Christophe Dubois <jcd@tribudubois.net>, 
    qemu-ppc@nongnu.org, Alexandre Iooss <erdnaxe@crans.org>, 
    Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
    Jiaxun Yang <jiaxun.yang@flygoat.com>, 
    Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
    =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@oss.qualcomm.com>, 
    Thomas Huth <th.huth+qemu@posteo.eu>, 
    =?ISO-8859-15?Q?Cl=E9ment_Chigot?= <chigot@adacore.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    Yoshinori Sato <yoshinori.sato@nifty.com>, 
    Frederic Konrad <konrad.frederic@yahoo.fr>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Chao Liu <chao.liu@processmission.com>, 
    Sai Pavan Boddu <sai.pavan.boddu@amd.com>, 
    Alistair Francis <alistair@alistair23.me>, 
    Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
    Gaurav Sharma <gaurav.sharma_7@nxp.com>, 
    "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
In-Reply-To: <b5987922-1ba0-c284-668f-10d2b114044f@eik.bme.hu>
Message-ID: <63da8d3e-38a8-7de5-f73b-7f3dfd6e09d3@eik.bme.hu>
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu> <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu> <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com> <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu> <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com> <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu> <CAE2XoE-459vCeK1O__iCs_hgMfMEQHWf_f_=hXG4ZhMJ1Z4aBw@mail.gmail.com>
 <b5987922-1ba0-c284-668f-10d2b114044f@eik.bme.hu>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-867130576-1793712384=:91419"
X-purgate-ID: tlsNG-ebf023/1793712387-C22D4B50-64A55595/0/0
X-purgate-type: clean
X-purgate-size: 11780

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-867130576-1793712384=:91419
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 3 Nov 2026, BALATON Zoltan wrote:
> On Tue, 3 Nov 2026, Yonggang Luo wrote:
>> On Mon, Nov 2, 2026 at 10:56 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>> 
>>> On Mon, 2 Nov 2026, Yonggang Luo wrote:
>>>> On Mon, Nov 2, 2026 at 4:57 AM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>>> 
>>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>>>>> On Sun, Nov 1, 2026 at 7:29 AM BALATON Zoltan <balaton@eik.bme.hu> 
>>>>>> wrote:
>>>>>>> 
>>>>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
>>>>>>>> On Sun, Nov 1, 2026 at 1:06 AM BALATON Zoltan <balaton@eik.bme.hu> 
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
>>>>>>>>>> On Sat, Oct 31, 2026 at 8:42 PM BALATON Zoltan <balaton@eik.bme.hu> 
>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
>>>>>>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>>>>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>>>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo 
>>>>>>>>>>>>>> and the
>>>>>>>>>>>>>> type_init
>>>>>>>>>>>>>> function that calls type_register_static(). A later change 
>>>>>>>>>>>>>> needs to
>>>>>>>>>>>>>> pass a
>>>>>>>>>>>>> 
>>>>>>>>>>>>> That's the point of the macro to hide the boiler plate code.
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> target mask into that registration, and the macros have no 
>>>>>>>>>>>>>> parameter
>>>>>>>>>>>>>> for it.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Couldn't you just change the macros to take that parameter 
>>>>>>>>>>>>> instead of
>>>>>>>>>>>>> expanding it everywhere?
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Problem of macros is that they don't have default parameters, so 
>>>>>>>>>>>> you
>>>>>>>>>>>> need variants for everything:
>>>>>>>>>>>> 
>>>>>>>>>>>> DEFINE_MACHINE
>>>>>>>>>>>> DEFINE_MACHINE_EXTENDED
>>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
>>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>>>>>>>>>>> and now would need a new variant, with variant for other existing 
>>>>>>>>>>>> ones.
>>>>>>>>>>>> 
>>>>>>>>>>>> In the end, it's just simpler to remove this and add the 
>>>>>>>>>>>> boilerplate.
>>>>>>>>>>>> It's written once and never modified, so using a macro just save 
>>>>>>>>>>>> typing
>>>>>>>>>>>> those lines once.
>>>>>>>>>>>> 
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> BALATON Zoltan
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> This series expands every caller first, with no behavior 
>>>>>>>>>>>>>> change, so the
>>>>>>>>>>>>>> follow-up only replaces the type_register_static() call.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Each machine file gains a class_init function, a TypeInfo, and 
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>> type_init
>>>>>>>>>>>>>> function that calls type_register_static(). The last patch 
>>>>>>>>>>>>>> removes
>>>>>>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from 
>>>>>>>>>>>>>> include/hw/core/boards.h.
>>>>>>>>>>> 
>>>>>>>>>>> Macros help reading the code not saving typing. If the actual
>>>>>>>>>>> functionality is buried in a lot of boiler plate it's harder to 
>>>>>>>>>>> understand
>>>>>>>>>>> and spot bugs so putting the unintresting boiler plate behind a 
>>>>>>>>>>> macro is
>>>>>>>>>>> better even if you need a separate version for different cases. 
>>>>>>>>>>> Then the
>>>>>>>>>>> code that uses the macro will be much more obvious and not just a 
>>>>>>>>>>> lot of
>>>>>>>>>> 
>>>>>>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* 
>>>>>>>>>> are
>>>>>>>>>> not defined properly
>>>>>>>>>> that causes them to not be extended easily.
>>>>>>>>>> 
>>>>>>>>>> DEFINE_TYPES is another example, use them can extend easily, how 
>>>>>>>>>> about
>>>>>>>>>> always use DEFINE_TYPES?
>>>>>>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and 
>>>>>>>>>> DEFINE_SECURE_MACHINE*?
>>>>>>>>> 
>>>>>>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are just
>>>>>>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can't 
>>>>>>>>> you add
>>>>>>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that for 
>>>>>>>>> machines
>>>>>>>>> that need it, or if it's needed by all machines then make the new
>>>>>>>>> parameter required and add it to all convenience wrappers too so you 
>>>>>>>>> can
>>>>>>>>> keep using DEFINE_MACHINE* and just need to add one parameter to it 
>>>>>>>>> in
>>>>>>>>> machines?
>>>>>>>> 
>>>>>>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means all
>>>>>>>> calls to it also need
>>>>>>>> to be changed, that means touch many $target_arch files. currently
>>>>>>>> it's 13. But after these
>>>>>>> 
>>>>>>> That's not different from expanding the macro which would touch the 
>>>>>>> same
>>>>>>> files.
>>>>>>> 
>>>>>>>> changes, there will be much more usage on it, and if we want to add
>>>>>>>> more parameters or attributes
>>>>>>>> to it, it will be a new tree-wide change.
>>>>>>> 
>>>>>>> Do you expect to need more parameters? Can't you add them at once 
>>>>>>> then?
>>>>>>> 
>>>>>>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo[] is
>>>>>>>> explicit defined for
>>>>>>>> DEFINE_TYPES
>>>>>>> 
>>>>>>> My point is that keeping the boiler plate as little as possible makes 
>>>>>>> the
>>>>>>> code more readable. DEFINE_TYPES hides some of the boiler plate,
>>>>>>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES would 
>>>>>>> expose
>>>>>>> some even if it's better than no macro at all.
>>>>>>> 
>>>>>>> What exactly are the parameters missing from DEFINE_MACHINE_EXTENDED 
>>>>>>> that
>>>>>>> need to be added?
>>>>>> 
>>>>>> Hi BALATON
>>>>>> the things we faced is we first is to add TypeInfo::is_available 
>>>>>> parameter to
>>>>>> DEFINE_MACHINE_EXTENDED, and have more usage of it.
>>>>>> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTENDED, 
>>>>>> this is
>>>>>> a prepare to remove TypeInfo::is_available parameter from
>>>>>> DEFINE_MACHINE_EXTENDED,
>>>>>> 
>>>>>> And finally, once all usage of TypeInfo::is_available can be replaced 
>>>>>> with
>>>>>> targets:uint64_t, then we finally need to remove
>>>>>> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
>>>>> 
>>>>> Is there a way to avoid the temporary is_available churn and introduce 
>>>>> the
>>>>> targets:uint64_t right away? (I'm not following this so I don't really
>>>>> know what you're talking about just looks like there's some churn here
>>>>> which might be good to awoid anyway independent of these macros.)
>>>>> 
>>>>>> That's what I am facing now. And the explicit
>>>>>> static const TypeInfo xxx_machine_typeinfo = {
>>>>>>    .name       = MACHINE_TYPE_NAME("xxx"),
>>>>>>    .parent     = TYPE_MACHINE,
>>>>>>    .class_init = xxx_machine_class_init,
>>>>>> };
>>>>>> 
>>>>>> Will help me avoid the issue. And I think this is a little boilerplate
>>>>>> and very explicit.
>>>>> 
>>>>> That's not all DEFINE_MACHINE hides though. It's longer with .abstract,
>>>>> .secure and .iterfaces plus the machine initfn that would also need to 
>>>>> be
>>>>> expanded if you used DEFINE_TYPES.
>>>>> 
>>>>> Is this conversion needed for all machines using all DEFINE_MACHINE
>>>> 
>>>> At the end, only "none" machine do not have targets parameter or
>>>> (QEMU_ARCH_ALL), as that's the sole
>>>> machine that supports all targets.
>>>> 
>>>>> variants or only some of them? If the latter why not convert those to
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> DEFINE_MACHINE_EXTENDED and then only that macro needs to be changed 
>>>>> with
>>>>> other wrappers passing a default value without needing a new parameter.
>>>>> That does not work if all machines need to do this but even then, 
>>>>> keeping
>>>>> the macro and adding a new required parameter is better in my opinion as
>>>>> it keeps boiler plate hidden.
>>>> 
>>>> Another option is keep DEFINE_MACHINE and introduce 
>>>> DEFINE_MACHINE_TARGETS
>>>> and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE for
>>>> simple case,
>>>> that is parent is TYPE_MACHINE and have no custom type and no more
>>>> attributes assigned.
>>>> DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less clear
>>>> than calling to DEFINE_MACHINE.
>>>> And if we want to set more attributes to TypeInfo, just expand it to
>>>> use type_init or DEFINE_TYPES, how about this way.
>>>> 
>>>> This will be something like:
>>>> 
>>>> #define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
>>>>    static void machine_initfn##_class_init(ObjectClass *oc, const void 
>>>> *data) \
>>>>    { \
>>>>        MachineClass *mc = MACHINE_CLASS(oc); \
>>>>        machine_initfn(mc); \
>>>>    } \
>>>>    static const TypeInfo machine_initfn##_typeinfo = { \
>>>>        .name       = MACHINE_TYPE_NAME(namestr), \
>>>>        .parent     = TYPE_MACHINE, \
>>>>        .class_init = machine_initfn##_class_init, \
>>>>    }; \
>>>>    static void machine_initfn##_register_types(void) \
>>>>    { \
>>>>        type_register_targets(&machine_initfn##_typeinfo, targets); \
>>>>    } \
>>>>    type_init(machine_initfn##_register_types)
>>>> 
>>>> /* Implicitly insecure */
>>>> #define DEFINE_MACHINE(namestr, machine_initfn) \
>>>>    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \
>>>> 
>>>> As the many call is to DEFINE_MACHINE.
>>>> 
>>>> And after all conversion, all existing usage of DEFINE_MACHINE will be
>>>> converted to
>>>> DEFINE_MACHINE_TARGETS.
>>>> DEFINE_MACHINE will be called for ('none') machine or future 
>>>> heterogeneous
>>>> machines
>>>> 
>>>> 
>>>> Either way, these patches will be dropped. We will introduce
>>>> DEFINE_MACHINE_TARGETS first.
>>> 
>>> I think I'm lost and cannot follow what you want. As far as I understood
>>> you want to add a new field "target" to machine TypeInfo but instead of
>>> adding that straight away you proposed to first add is_available then
>>> later replace that with target. I asked why do you need is_available and
>>> not add target right away?
>>> 
>>> Then if this target parameter will be needed for all machines why can't
>>> you add that to all DEFINE_MACHINE macros as a required parameter and set
>>> it for all machines passing it through to DEFINE_MACHINE_EXTENDED which
>>> sets in the TypeInfo. That way no machines need changing other than adding
>>> the target parameter to the existing DEFINE_MACHINE calls.
>>> 
>>> What am I missing?
>> Or sorry, I did not explain well.
>> 
>> I means reshape DEFINE_MACHINE like
>> 
>> https://lore.kernel.org/qemu-devel/20261102194826.1298-1-luoyonggang@gmail.com/T/#u
>> 
>> basically every call to DEFINE_MACHINE needs the targets parameter.
>> So we can always passing targets parameter for DEFINE_MACHINE.
>
> That's OK and is what I suggested, the part I did not get is why do you need 
> an intermediate is_available step instead of just adding the target parameter 
> to all DEFINE_MACHINE* macros.

I noticed there's some redundancy between the arch and the name prefix 
with this change. Basically you're trying to split namestr into name and 
arch where the final machine name will be arch-name. Is there a way to do 
this from the macro somehow so you don't have to specify the arch twice 
once in the name and once as an enum?

Regards,
BALATON Zoltan
--3866299591-867130576-1793712384=:91419--


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:28:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:28:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469800.1678557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEZ9-0007ld-QW; Tue, 03 Nov 2026 13:28:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469800.1678557; Tue, 03 Nov 2026 13:28:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEZ9-0007lW-Nw; Tue, 03 Nov 2026 13:28:43 +0000
Received: by outflank-mailman (input) for mailman id 1469800;
 Tue, 03 Nov 2026 13:28:42 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOEZ8-0007lN-Fn
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:28:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEZ7-008dgC-Sw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:28:41 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9e183-8faa-0a2a0a5109dd-0a2a4506aa22-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:28:41 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6ae9e189-195a-0a2a45060019-d1558036b024-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:28:41 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a35ac4475dso29895035e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 05:28:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ac0a66caefsm274639575e9.5.2026.11.03.05.28.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 05:28:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793712521; x=1794317321; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=cxcSiNayj7KvRCwrpKS7MARJcUKjMzXqCYh9tZM9V4s=;
        b=gacjujDkwH7N5yzn5zMOvsHzg+r92P8w1WTh2OaDJWe4w3Fd5yw+IkqZzdDPf7WbBd
         mQvtRFGjNu9xeBNAxBFksBo4lemvPmYqNl81GBygzSsB4pCDkFZmFsv6V6M5mSr3IVDG
         rTBcqncqDQns7CjrRGCaVTnAi54gHAbJm0oDTTznYMbuPAg6YUBurH5gWtqD/QqAAzoO
         EN7Y7WAjKeBdX3/TU4zNG0XS+brBL5t8+6WIG5AMxKP87rGWvkdUGjIBFMtp/zL1/GzR
         Vf6nU+z3wBQpH46jU1gSnAT9dQ4t8ztBVPSY/uV6s6C9hkQDfGYPmRlR9uHuMImGutYu
         T3kw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793712521; x=1794317321;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=cxcSiNayj7KvRCwrpKS7MARJcUKjMzXqCYh9tZM9V4s=;
        b=Qi6/yPzU4yhvSHMtqIkYjHONVhw/zyWCLd1clwBMQQ316Zka7kPRw0WKtYtTXW+PJD
         YhX0NGu2hJBPv/Se2Fo5qEcUyJqflY0elbAGlDG0EILM5lvs+4d5M1HSwO6RIJSojqiT
         dAM5goE0QN4HzFIfycgOm3nBl+aiTG9rQdKfkzdAElb7Ul2Mwv9A65tGjV7U2UG6u7yq
         ctfLPRGgWn9+uyXQIJe/K14mIfPqWiZzs/V9CVDwjaGYoPgrXKgX4jxzPxkxOyJ6axPY
         +JNcc8wLvEDYBfZ1MZiwvO3NcPVnhGspIz16U04NwlFAcIh7fKE4CK0qWWjB81NO5vnT
         cHfg==
X-Forwarded-Encrypted: i=1; AKwUvBxt7GyRMDyGLI81e2DAYoh5iNxDJ48YxHitsFna3jdJO6/nbXvpOTeRWSfZhSAPa8vMqa8NPpXFLAY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z87befqNQLAYIATNxHpNH6pCNLdVw72a2Gq20s38T9Joj1xWkBs
	MgqQURxah3xj7UQ5MU+2m/touVSsB8t/V/zJ22zKS8WpqjK9p5K/kgqhvnlDMNEej6E5b4cMGI2
	zInxraA==
X-Gm-Gg: AYBFou3uYd8jqNOhOr0vB4JkAlgf9DCryIATbkZknreBTP+NF0zLp4E0X3SjG1VPALS
	ZWEFqvOaTENL37+AOBgZQfVx5GQCgQuLOrktqVLd4Krw6dG3TSg3kJlj0LhNQFUagtqpN1j4xF1
	6fBTV0Qr1FqDKpib8b8zS1K0LLnA9WoE+llU6o4dnF8bTXekjXCo5dTihWSxwOOmG5Ctw5U0pJI
	V71mTcDMZPV21CZIzYSxcxn8wnmd5uhB27Wqtfs6otnbWh8qfxAzrn+431JlXobvrmAOTFm4D2e
	Ek63lziO/qLqejiGRqIyA4F+1YOd/rn5oVUAuuroNodyZkmGpkOAYvwOQQ6Mkolz1xDZcEAMuh1
	YVJ+RGEKLVDGN6hglTAUPxldOREiUT8ZsduYqK7tMprAAKYJ9l0esz9JontRqsp3NVpRROdbrBl
	HGbhh9YxHna+C3unJaPl5gzRS5073U21YqxOXUEhSkzNC3GJ5CRVWOotZrU5EzPyybZPoaA0G8c
	0dgemKT59ZNvwHtSbHpOXHH7o7xOnYZ613wjktXor0VdEgjaWXR/n+RrZ0/g8MQ4xk4mP5rgwhL
	WFyKHgZYqx/0fpwF/3F8f1hwX5DFiasiTeNgNp8ZdIxyEV5vCawhMA0p/UyUcyG0srGIfgB9uDq
	oMmul9jt2dcerNcv6
X-Received: by 2002:a05:600c:800c:b0:4a2:d99:3171 with SMTP id 5b1f17b1804b1-4ac17753c13mr313485575e9.23.1793712521162;
        Tue, 03 Nov 2026 05:28:41 -0800 (PST)
Message-ID: <e640647e-522d-48dd-a8d3-619c5705d7b1@suse.com>
Date: Tue, 3 Nov 2026 14:28:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gnttab: Shrink struct gnttab_copy_buf
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261103130120.2020581-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103130120.2020581-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793712521-FDC0F77B-DCAD8912/10/78276251493
X-purgate-type: spam
X-purgate-size: 1875

On 03.11.2026 14:01, Andrew Cooper wrote:
> Move the booleans into earlier padding.  No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

> On arm32, it's 40 bytes before and after.  Given that we can't reuse the
> tail-padding from struct gnttab_copy_ptr, I'm not sure there's an obvious
> improvement to be had:
> 
>   xen.git/xen$ pahole xen-syms-arm32-after -E -C gnttab_copy_buf
>   struct gnttab_copy_buf {
>         struct gnttab_copy_ptr {
>                 union {
>                         /* typedef grant_ref_t -> uint32_t */ unsigned int ref;          /*     0     4 */
>                         /* typedef xen_pfn_t -> uint64_t */ long long unsigned int gmfn; /*     0     8 */
>                 } u;                                                                     /*     0     8 */
>                 /* typedef domid_t -> uint16_t */ short unsigned int domid;              /*     8     2 */
>                 /* typedef uint16_t */ short unsigned int offset;                        /*    10     2 */
>         }ptr; /*     0    16 */
> 
>         /* XXX last struct has 4 bytes of padding */
> 
>         /* typedef uint16_t */ short unsigned int         len;                           /*    16     2 */
>         _Bool                      read_only;                                            /*    18     1 */
>         _Bool                      have_grant;                                           /*    19     1 */
>         _Bool                      have_type;                                            /*    20     1 */

Making these bitfields would help Arm32.

Jan

PS: Can we also get the other pending gnttab change sorted? As said,
feel free to post your patch, and I'll ack it. Alternatively an ack
on my variant would be nice.


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:39:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:39:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469810.1678567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEj2-0001hy-PG; Tue, 03 Nov 2026 13:38:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469810.1678567; Tue, 03 Nov 2026 13:38:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEj2-0001hr-MP; Tue, 03 Nov 2026 13:38:56 +0000
Received: by outflank-mailman (input) for mailman id 1469810;
 Tue, 03 Nov 2026 13:38:55 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOEj0-0001hX-Qh
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:38:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEiz-00ERX3-6i
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:38:53 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9e3e3-8faa-0a2a0a5109dd-0a2a4505bfe4-44
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:38:53 +0100
Received: from [40.107.130.106]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6ae9e3ec-4cb1-0a2a45050019-286b826a8c8a-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:38:52 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by AS2PR03MB9694.eurprd03.prod.outlook.com (2603:10a6:20b:60e::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 13:38:49 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 13:38:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=gK/Fn5tWohoFOGRhsrGd1IXfE2T3K86i5RhBcjhyHH2awlsdXPgx890Kf9gVDhiuVizG11+M4dswrEwOd0EDSMAoxCbR8lD1Q5QqZzkxwUH5Zf4w/fzh54C1YrwEQxrx0g3Inr7Scj2QQomfr6aa5C8Q0f7OsH91ckab7d5n7gHXMFs+PpnSkquHt2lGuqTDR86kxyuDKJSrgKKZpIyztCDc/1lQ+UDxN+IH/sz0nieMx+nLoqpzSVG1AgC8E7RaBWkQf6WFAusakIn1cBiNn+Q9PFWKZOET8AdG9iT7z+DO/neieK3YTuXCEw1px8+e+o9/cd8KGj7/Tfg8mQXhmg==
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=dQq92vVJ28VanfC/T4dasbuK9cCJxgm/p2+rz9H2dxY=;
 b=Io6ZZDqsWEIsQwuRwKFWhl0o3W15XNnEB4SOuBOiU4gK2KKVCEtR9P9Q6MhDSzuQcSNLP4e8Q7Pi91TQ0PIqew+wZunone1PvInUsa23jc8NnlVp/HBsKeE9u0TIehMVYxElm8oB06BbHYfbvlE3CtvcCFGmXsWs23QVwkySD5/fztvIglkE/B+y8V39VXIdJng5QsX3kvW35hXMf9IA51RDz36ipR+3fncx65DIYIcXpZbdLdgJ4m4OqBQ6L+Csi9JGf3lXMSis32d13b91L1y+gylSlA7iWQkTaMyw7nS/3DzzbVw3AQ2atfMjiwjdcLVuXM2a+BlB8muUhXHwCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dQq92vVJ28VanfC/T4dasbuK9cCJxgm/p2+rz9H2dxY=;
 b=jQTRO415uiXihQc7eJY/bOSliikc6649p1QSFbcEixQKoBP88y0Pm+elmLjFCmEZMEUjkrNjV9pPh3IyuQDToCRieSzygeYfQpyE4ib4C1h/bxJVvO7uYY5/1soXh50MWIEWzYUm/9kfOEqcla1KuSOM7/NR31j/9uaIfST+TMYuW56fOC4mEaEWc11niWPo/LtIA8Ioth+wPTXaALt7F1SNwAC7NH7Y4y2M2k2nMOH9Ro0KgnYAfYo6gJ1v3YQ7/6qv4KMOWsTFFlv+GIbtz2Zo1o3s/yQQGE5OxjiwjGO9JK70ZpWvTDa4g4k3T75ucT2EjY0oiVZ/dLgckWi3XQ==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <f6ca6a64-32db-48ba-9825-71acd41e4539@epam.com>
Date: Tue, 3 Nov 2026 15:38:46 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] lib: make memchr_inv() compliant with Misra rule 11.8
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Nicola Vetrini <nicola.vetrini@bugseng.com>
References: <a0974d95-28ae-4205-b8b7-1c49cea2d784@suse.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <a0974d95-28ae-4205-b8b7-1c49cea2d784@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AS4P191CA0001.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d5::14) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|AS2PR03MB9694:EE_
X-MS-Office365-Filtering-Correlation-Id: 6a0b2862-5bc4-41f6-3ff5-08df39afca43
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|10067099003|22082099003|3023799007|261102123227099003|18002099003|261021133027099003|261021135927099003|261026130827099003|261026121527099003|11063799006|261022115727099003|261022113327099003|261022105027099003|261026140227099003|261009223027099003|261022075727099003|261028144727099003|261021130227099003|56012099006|261021121427099003|261026135527099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	Po0H365+0wX/Y4/fQn8GpdeldfCzJU2lYvDKyln6/OQcB1hQMgo41mZMl8IQT8IHjvyWfVOhr0j7yl82B1Sw3ZYqNYFJXNU1Mx2V1I1cztPp5XQRdYTzVFzMI3ks0eY7GHaQmCpwiJbZS88bCg+PwP2zujflTJWnmLq4eQtuRd9cLu4xd6Puzn4fO+xC3ho9lOg5EFrtgCOrunXh0T+CphZjgoEXcUmvVdobUG3edOWcPBGtVSNUu90evi+vk90MLFx9m6Mqy4+xr97eGLjX/99JDn7xLYNLwI7PjZIRlR+Ozwrq4nHBHt21IXXh2yD8qXFSnpSthqSWgkUST4IkBqQrH2mbpemBDlrxSbTs/BXOv5pwjzM163voCtjUt9F1A+CLs+OgO06VssVYbluRn9WpeijKrfgIG+aCrD5aA/9JZgC3pSFSH1e8l4/TJzsJtJ4OVEJ97wqTjOCcudKWjnJG5j2nPuMuEuw8wcu9b+5U3iyHWHRmlqXn2/kkUXqkVn82I8gqsCklsXYGREVtFkmc4uyNIu34j5i/ON+G/jsU9ixpUWC7remTv38GQysW2FfAe5hXPJbzLho1SQxCNT3kIeAMoL4leQq7QaWF8dA7A1dAeV14d/JWrpArfD+IBPvrcSEQsMfWxYBBTASJxcbfEl6GyHM/V3oAIkSO5VQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(10067099003)(22082099003)(3023799007)(261102123227099003)(18002099003)(261021133027099003)(261021135927099003)(261026130827099003)(261026121527099003)(11063799006)(261022115727099003)(261022113327099003)(261022105027099003)(261026140227099003)(261009223027099003)(261022075727099003)(261028144727099003)(261021130227099003)(56012099006)(261021121427099003)(261026135527099003)(261021123027099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dlVKYUZIbmxFSjZoUnFDOXBTcEpITXZBVjNhUEIxcmxyMHhKajFLYmFuWUxF?=
 =?utf-8?B?M2hHSkVabWsxSWRiblNYd2ltUWduZ0FmRVhuQ3FCT0RwQis3VnVJbUNmK3ZN?=
 =?utf-8?B?WEtwK2RVTEVLcjU2N1ZYSVlvdU9nc1pWMUVHb0lrR2FHSmE4emFkSVN1MG40?=
 =?utf-8?B?a2cvZFQxZVNxZlNqa0Z3aWVDOEQ0Yi9kdjJUL2F5OFV0WkRyWXphMENCUDFu?=
 =?utf-8?B?VTdiZGF1RGpVb3pLNm50T0lQaW9lZVZ3MFU2MzJXbStab255OXRoSzdEcS9I?=
 =?utf-8?B?OXRtYjZRU3FRRXBLWmhOMGhYQ0o0SThMbVluLzE0OE1PM2xtMTh5cmd2Q29x?=
 =?utf-8?B?bnhERXVPbXhnWko0RUFYMVBwRENlMEI4NU9wdTd2c0FGZGxsUHBXdmtoMUZT?=
 =?utf-8?B?UFVxbFI4cDA2YjlteHlDYWloYW5YUGNCQjJPNy84WFBpMFVub3hPOGxHZjhr?=
 =?utf-8?B?TUxwZnpmeHZFWXY4MS9maEJsVGhTb3c4R2IvdEJhQjhEcnhFQW8xdWdRRy9J?=
 =?utf-8?B?cERyeUpFelRXS1UvU203U1FxeVNJZTIvbklKTFhoWmFOSTlQM3VUK2N6UWZs?=
 =?utf-8?B?YXVRNFdidDVvWVdFSEZHU1JNV0o1SGVhbHR1REg4SEY3L095TDRPckJldXo0?=
 =?utf-8?B?N3B1b2tEVU1qTTVFSmJpd0xPZmFTekc1YkdFU0pVQ0JQa1UreWY2U25uaFk1?=
 =?utf-8?B?UGdlQVJhWTFtcHBLa2tBdGJrWE4zL21xTldSUVdGMThWQlBPQjFwSnNBL2J2?=
 =?utf-8?B?N0lTaW1rMHRhNW9ZZ28xOXJwM25ub3JWeEJWY3dtTDNKdmxONE1FRWlGRlda?=
 =?utf-8?B?NmpCSGpGZ2xraUpMeHZMNHEwVHl5ZFk0N3E3VDl2NThnTGhSTURWS3AyOHB0?=
 =?utf-8?B?ek5yM21hcEJDS3FxTXpLYlpLOTZ4RUlBRXdsR2kvdkZFRnZ4K1NWYXhOMkVB?=
 =?utf-8?B?ZklYRUpTSVZEWFJRcDZLeUFNckZrRUNDbVY1aVVsTHpnd2V3Zm5TV3N2a0Zp?=
 =?utf-8?B?Y0MyWjlVZG45ZHpJa0VoMFJVWmd5STVYUG5GYmRDbUlnU2I2Ni9sbU5pVGlG?=
 =?utf-8?B?YUNUUlA1YVRDWUVOcFE1RS8xWnlBWGdLKzdneXNBekw5Zkg1YWN6amhneEhX?=
 =?utf-8?B?NmhUMUNnUExnWUw3MmxIY3k5WkRVb0hiNHdRNXZjcmFublV2REtKNnR4QWNn?=
 =?utf-8?B?OEVyN21IeEF1cGtXWVBzc3djUnM2dVFVMzllUERIN29Oc2h4V0x3Y3Q2N1FO?=
 =?utf-8?B?NTB3QlhDbmdHQm8yeVVCM2pFVUF5Q3VBcmRrRncwbnU3b3NRTlc0a3pWaGxw?=
 =?utf-8?B?clV1MDhaWDhoQUg5V2NRVjhDU01saGZldkdzT2YwOFkvOVFnTDN4K3ExMmo4?=
 =?utf-8?B?YUtnYUJkVTdCaVh5cUoyUStsdktZMENaUWVPaVlpdHdxVWVxSTZ5dXQwREZm?=
 =?utf-8?B?TjNGRTRxRS9FZjJDZllwMEhzTjRvV2JmNEJuUXRKN0hzbm9iVkRJYkFlMWpw?=
 =?utf-8?B?d3l2dUxsb3UvMGs5aFI3Wmo5T1Vka2x2cHhEV3FVUlN5ZllJN2FMQitzd1Jh?=
 =?utf-8?B?aElIckVGRDFWSjFDQmM0ZVBCR1BGbEdyVFNjTUovWjFFU285UURXT3YzRHRR?=
 =?utf-8?B?eU1FeDFnMi9mRVo2SmtST2lwU3B3SjVYUTZiK3A0QjVMN3JDQUlyUlJZZUdD?=
 =?utf-8?B?OFRxVVZHK09VRURFZVIxaFp6cE5ndzNMTzRYUkdSaFZaNmtvRVR5MHh4V1JT?=
 =?utf-8?B?b01qbG9WMGxGbERWWjB1QnlUWDdYd3V4TVRwaVkrNW1paFRFbWQ3am5ReUR1?=
 =?utf-8?B?Q2p1Nk16NzZGVzMwblg1S2ZHdFFreEVIRVhQWE4xNlJPcmJqcmRJSGZIWDIv?=
 =?utf-8?B?KzBRbk1DakFrbWZVUjY3SUF4eSt5d0RUM013RlRXL0tmamZHSzhvSjFTT255?=
 =?utf-8?B?UEM4TzBCUHFPTUJBM3JNSmNOdzE3eFlMb2Q0b2FjM2ZETUhqZklmMGNYckc1?=
 =?utf-8?B?RFkwem5rVzFvRDIzNC9uS3BDdURQTDZneHRGc0hPTXZtK2lXWkQ2YXRKQzlL?=
 =?utf-8?B?TFp2eG1Rdk93bGs2cXllUVJIRmFaNW84cHBsSysvQjc5WU9MdWwyL2R1S3Qr?=
 =?utf-8?B?b3pacGh2S0tTejJrVG1MR2ZRMlJQZjVBZ2U2eFU1alcwSXdhQWRCZXdJOW5L?=
 =?utf-8?B?ajV3NlFSKzNSaHovKys1Rjc5Z3psVi85cE1LS25ya0sxVTcrRmxnZGZpbnh2?=
 =?utf-8?B?Y0dFWnp4b01pb0s1YnliSC8wSXV5YVcvVGg5VGNENUN2T0tNakd3U3o0L3ZJ?=
 =?utf-8?B?OGVVM1J6MnR5TmtjbjZaUklwZUF4RjRMeDc5akhRWkJRZ2J6OVkvK1RUbGU3?=
 =?utf-8?Q?E+cet5aD9WYEf/ek=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a0b2862-5bc4-41f6-3ff5-08df39afca43
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 13:38:49.0094
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: njuxunLZlnXrjyzJSveSk7pkkzGPsIfahGdHuG6R/WZqJEPG3RvLy3ZBGZzFsQSaqJA7RZ2TJj4sL50fT4srvIBRgXILuKAGavdd8xck4zA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9694
X-purgate-ID: tlsNG-c201ff/1793713133-F7CB82A1-FE6D069B/10/78276251493
X-purgate-type: spam
X-purgate-size: 1297



On 11/3/26 13:24, Jan Beulich wrote:
> Neither the sole present caller nor the two ones pending (in the AMX/ACE
> series on x86) require the casting away of constness.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/include/xen/string.h
> +++ b/xen/include/xen/string.h
> @@ -33,7 +33,7 @@ void *memcpy(void *dest, const void *src
>   void *memmove(void *dest, const void *src, size_t n);
>   int memcmp(const void *cs, const void *ct, size_t count);
>   void *memchr(const void *s, int c, size_t n);
> -void *memchr_inv(const void *s, int c, size_t n);
> +const void *memchr_inv(const void *s, int c, size_t n);
>   
>   #include <asm/string.h>
>   
> --- a/xen/lib/memchr_inv.c
> +++ b/xen/lib/memchr_inv.c
> @@ -13,13 +13,13 @@
>    * returns the address of the first occurrence of a character other than @c,
>    * or %NULL if the whole buffer contains just @c.
>    */
> -void *memchr_inv(const void *s, int c, size_t n)
> +const void *memchr_inv(const void *s, int c, size_t n)
>   {
>   	const unsigned char *p = s;
>   
>   	while (n--)
>   		if ((unsigned char)c != *p++)
> -			return (void *)(p - 1);
> +			return p - 1;
>   
>   	return NULL;
>   }

Reviewed-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>

BR, Dmytro.


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:39:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:39:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469811.1678575 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEjB-0001wI-05; Tue, 03 Nov 2026 13:39:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469811.1678575; Tue, 03 Nov 2026 13:39:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEjA-0001wB-TU; Tue, 03 Nov 2026 13:39:04 +0000
Received: by outflank-mailman (input) for mailman id 1469811;
 Tue, 03 Nov 2026 13:39:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOEj8-0001vh-Sq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:39:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEj8-00ERa3-7x
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:39:02 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae9e3f1-8faa-0a2a0a5109dd-0a2a4509ec32-12
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:39:01 +0100
Received: from [40.107.208.54]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6ae9e3f3-be1a-0a2a45090019-286bd036d5bf-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:39:01 +0100
Received: from CH0PR03CA0285.namprd03.prod.outlook.com (2603:10b6:610:e6::20)
 by DM6PR12MB4249.namprd12.prod.outlook.com (2603:10b6:5:223::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 13:36:54 +0000
Received: from BL6PEPF0002256E.namprd02.prod.outlook.com
 (2603:10b6:610:e6:cafe::aa) by CH0PR03CA0285.outlook.office365.com
 (2603:10b6:610:e6::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Tue, 3
 Nov 2026 13:36:54 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL6PEPF0002256E.mail.protection.outlook.com (10.167.249.36) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Tue, 3 Nov 2026 13:36:54 +0000
Received: from satlexmb10.amd.com (10.181.42.219) 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.53; Tue, 3 Nov
 2026 07:36:53 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Tue, 3 Nov
 2026 07:36:53 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Tue, 3 Nov 2026 07:36:51 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=FVs1mPY53ZQkrA1Kx3h8RYWIXq0dRwQh6GUwJWj+JILAQ/bTq/zHK2ZJMcZ6r22uuk+4kje3n64WsMLe6AtYQKnOzxofSd8OClAkxhDvOBTURKtPPWmdHck9vFuUKWHyvkhUyttUdikAg9sXQn70I8joeM6FSuJ4TlnfiygGa+p1z+naT7fbp0KfvwRXKdhoartdGnPbU5aFnS1dR2OmtNMHbYxatmXzAcPC2VD39lc7tyIeTkkO0lce0+IT5PIoF/rK4W5/hkjoBhkkNUCa4EgFe3dbdugiN22QyKGJ6hTMC5AHc/SKOo7q3h/wd/bQGoGL4PP8V6FK05WFK5PYFA==
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=TLXxDDzay/XWPULdaARIIP1hK/MDq+md2UPipBznMkw=;
 b=QvjIglebux+n6i7j/efx0vYJ3PaXFNJLYsCEp+zpyGuhjNe5M1HTUADx+N+2G3X0vfSNoYElQfJotIVx59p9yid9CjxcNeIFW7aAcivX2XEs3ree1J18zTOh4v9XDx1RK5z33iqSJHLRUrSzCCliLwrlMRROWRk0pHjPUakuOEXdm2kJMCVNTjZ6hGg+9xTGl136uFuwqsOvJ4Hze6S70+XKKUVIcIF0MVi3kfCl+905KRfV32q/P3n0Yg9DMDNdGeW0vUOyH/DHRfPYaza9IAQe+M79HmjQiI8TtXyoXOsAb1x2QEILVwOiFnMTviRS9x/iI42XNvnNIq2WHHFLPg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=epam.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=TLXxDDzay/XWPULdaARIIP1hK/MDq+md2UPipBznMkw=;
 b=E8fPJFl+zatugA86FIaLkCBKDnmGMwEHNCz2grAXa79O8csFBemsLp+s4BQtNU4P57LRnijZqC9OYPhma+bu/q2c1npcrXO0S+s2o/Djlg/0A4nCcRXYss3sc2pqBahP1Jh/gJ2K34CxNy9dYPz157H8bZlauDCAQgzALaedMjM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <7d7331ee-cf95-46b6-8640-690ab0add758@amd.com>
Date: Tue, 3 Nov 2026 14:36:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6] xen/arm, xen/common: Add Kconfig option to control
 Dom0 boot
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>,
	"Jan Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Teddy Astie <teddy.astie@vates.tech>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>
References: <f8bf3e87dac3bcd0d8ea680fcce055c133aa9e87.1793374283.git.oleksii_moisieiev@epam.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <f8bf3e87dac3bcd0d8ea680fcce055c133aa9e87.1793374283.git.oleksii_moisieiev@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0002256E:EE_|DM6PR12MB4249:EE_
X-MS-Office365-Filtering-Correlation-Id: 83eefa89-d96e-4ce5-e484-08df39af863f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
 BCL:0;ARA:13230040|23010399003|7416014|376014|36860700016|1800799024|82310400026|11063799006|56012099006|261102123227099003|261028144727099003|261022075727099003|261022105027099003|261021135927099003|261026121527099003|261026140227099003|261021121427099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
 RBqAZ8dDfScDKgyzqiphaqLDVHrx2vMFr4W1bcnAWV2K9yj1JD9CiQzvO3HcW+KmVJu1ffsO1cQ1FZs+FfUAcRbUiy5eDSZeUdr2W7oeI50Xj359D1o5nxZ9wySnZcff/xGQeRX15/VGrDYhN/v1kZlsUzAd98PrCYSRc4SHdhUMRHMCl96Znf90rfRhFrknm6cLQmXmWd9/MB6Mo9oyxH/8NuZpkeYHIMkIP+PukTqqImhQcLKYg90MCbcy2gE473fRGBu4ddcT3uz514xx8HK16VLaMUlDaH7zMSzfdTrBH12wmoGPO5WPJpPAd9aJkkMnd3W6hB967SQv6XB3VQHhUXzXSa2jIR5t+etvv03t92o3qlt6/pyld/5m6YMSGP3rZ+n+jnPXVxmdOl4Rg2CgFhZ/+W7SHlM5ggX9zCZc4/C/K4nOnlmduhGJ9ioeYzIMEd01KauW2IyYUGR/8CzFbTH01akACFcJQtMQDF0hVAJYZUsg+wVvBEDAKU5z3VcpKpFcmVPYBOYYVSxPWpM3CxFmRL6xETaHIHW0PvnlKInsetoDBjBa44gfm9+Ox6rpoUPzvP6Mgj2Llcl1GV5fAz8seSv1XXH6lg0sgVB2Qb1mgK5GxwGg2rPj7lw5pI8BAB/GPh7Mbtz91QJ7WQ1D9RNUnsKY61ycJDHXyYiXe8la4vdmRz2ZOirYdc0YpjBk5kfsTUVUKnWFlGWUvg==
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)(23010399003)(7416014)(376014)(36860700016)(1800799024)(82310400026)(11063799006)(56012099006)(261102123227099003)(261028144727099003)(261022075727099003)(261022105027099003)(261021135927099003)(261026121527099003)(261026140227099003)(261021121427099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
 BO9vTPCc2dxEj+MCASN+nD4OP+y2S3ggpKdISWW4dkHNf3Y2bFN0Yh+7eU4IKd5yQBl85pjHY8sxWgMM71I9O/Z1NqiysNErRKvONuEA7bS9bDBhlLavyrO0eq3+fNYjh0GGnkBzLwDkcUu/GMARESutaxRdtEJbvlKm1fJdMbGHBhUWAJoLlVhYilzZDlnzVBzu41NmXKDH3rgw4Qf6lfTbKRPMpwQJ6B31AuC7AhotbP547T0yQVU+ZFdd9AY9t4WkLW1BwWvfB1zML9vCils61KF9YrpMEy09XPT+jnVpvogvyzq4GcVfDyUUcD9wbDRGwJUNFW94tBCBQnRSrAEBelRr66l+iwQ0IcmRncm0MlPrVhi/sVle3D4Kv7Mp9AOeyTdJobxuXx+Y1uWUEUv9OET/CS8eRd7aR/5Gi8w1QYGv6hpgS500nWYmZEUn
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 13:36:54.3838
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 83eefa89-d96e-4ce5-e484-08df39af863f
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:
 BL6PEPF0002256E.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4249
X-purgate-ID: tlsNG-bad1c0/1793713141-FC610034-519E345E/10/78276251493
X-purgate-type: spam
X-purgate-size: 1793



On 02-Nov-26 15:58, Oleksii Moisieiev wrote:
> Introduce HAS_DOM0 and a default-enabled DOM0_BOOT option in common
> Kconfig. Arm and x86 select HAS_DOM0. Expert configurations can disable
> DOM0_BOOT; this patch implements the corresponding code exclusion on Arm.
> Making x86 honor the option remains a TODO, potentially as part of the
> Hyperlaunch work. In particular, x86 still builds and boots its legacy
> Dom0 even if DOM0_BOOT is disabled.
> 
> On Arm, exclude legacy Dom0 creation and its private memory, vCPU, SVE
> and LLC coloring options when DOM0_BOOT is disabled. Hide DOM0_MEM in
> that configuration and disallow ACPI, since the alternative dom0less boot
> path requires device tree. Keep the x86 DOM0_MEM setting and dom0 command
> line parser available until x86 honors DOM0_BOOT.
> 
> Retain the domain and hardware-domain builders, guest SVE and LLC
> coloring support, and Xenstore domain setup: these are also used by
> dom0less guests. This is a switch for legacy Dom0 boot support, not for
> all control-domain or hardware-domain functionality, and it does not
> claim to remove every unreachable path or establish MISRA compliance.
> 
> Check for dom0less mode once in the Arm boot path. Otherwise, create Dom0
> when supported or panic when neither boot mode is available.
> 
> RISC-V does not yet have a legacy Dom0 boot path in this staging tree,
> so it does not select HAS_DOM0.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

although I think it would be nice to update the xen cmdline doc too to mention
that dom0 options depend on this config option like it's done in case of e.g.
llc coloring.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:49:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:49:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469829.1678585 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEsn-0004Qv-RX; Tue, 03 Nov 2026 13:49:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469829.1678585; Tue, 03 Nov 2026 13:49:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEsn-0004Qo-OZ; Tue, 03 Nov 2026 13:49:01 +0000
Received: by outflank-mailman (input) for mailman id 1469829;
 Tue, 03 Nov 2026 13:49:00 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOEsm-0004Qi-Dm
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:49:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEsl-00DOVz-G3
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:48:59 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9e63f-e002-0a2a0a5209dd-0a2a4503a13c-28
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:48:59 +0100
Received: from [74.125.224.47] (helo=mail-yx1-f47.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9e64a-fae8-0a2a45030019-4a7de02fcc11-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:48:59 +0100
Received: by mail-yx1-f47.google.com with SMTP id
 956f58d0204a3-6767d92cde6so3855739d50.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 05:48:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793713738; cv=none;
        d=google.com; s=arc-20260327;
        b=SA1028N6RlVygyDEE+p18gJTrlJ4TpiVvKdra9SxZumSEpliZ6glGW9n4e6xARo0YH
         SzrUIxXsjG0D6GkhD9LTG0dlq0qctMryhbMPPjyoj5yVgy81yQwrvZnBPTnNzyd23neD
         pZ8f0PQPXxlGk3w8wTMKwKqMrwZhA1OVrl86/nrhpx3X2ZUOEBldwVdJSPmY+lEgrqUn
         Ua8Pm2iEUSqUNiTCxJ0Z3kG3H7BQLTUq9+NMjntbRuw6atP5Undfus2eMHxuK2li/fVf
         Nu6zoyZrBbfk6RnnT6mKjapBaRnvfePAvC6ks90yxJKyugebK7Igfq7RK9Jmp4e6KRQs
         FD5g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=VhJo4HokwhEWSYkNV3t4SWIVzwRlrhbcTP4O4ufZ8fc=;
        fh=rGVAC7EHbnI9ARDYn1on9tW4ofyxcDVsaDg/oGZhHeM=;
        b=bTy0iTBKo6kzPaUp8wx8wcwuZRNvrFCs9FLUmK0JpyQoHuPV8EUJ8sF0MbNxjCt3Vi
         8PurvDgB/KfP9Eh04DBcWcryOqUSX1L/B3cZMYos+e75PncwkF+/PgHIXbSc7SkETT0k
         Wy5BEhU36B9svJzalIeaCnsY96dO7NSQXtoTtAyMmpFmmsDUOcGCwnTgNmRQqsJnhcu4
         /GFfSZY5Qx50gwcrAqbty4LZEDpC4/u+cLp6IKrLbxsXLV6LfvDvJBWP2E7MEedJcJUb
         /EM9TJ+Cjzv47Bp3yr4F8hHhZTMYCQs9TK59L+cpmtiTNHzvz3BzhV3ktPofCc8I+Omk
         fbvQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793713738; x=1794318538; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=VhJo4HokwhEWSYkNV3t4SWIVzwRlrhbcTP4O4ufZ8fc=;
        b=i0ZALrAcRGXwMi8vXFAiasxX742pZ5YmgLwMr/fKTnmysGOtvF5izXcWA89rxBM5wm
         0SSvyVoqiOVlSuxDSgNjK4T3UcVfDhM7bOx1RJjvfdt+f8GTIqQT0erX6iOZ95sQHtSB
         xd1Tky52NjfqFnJIJQlM087fPL51x2yIOkOfC5Sge+tmQFrQkfhBtNJgPSUv8hgIr4ej
         iU6rTyOPz6JTqnxlUsBjONPfYV2KoyaOagTfKO/b7BfFKZmhQ4sWssIlp9VW0FSC5Z42
         ezwodefJKjWzZIL1PsbkPF8O/5qM+TVOh+qwz2pPFP7Oo+mMNaO5u+hXmLiYrRZMwEaW
         Ensg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793713738; x=1794318538;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=VhJo4HokwhEWSYkNV3t4SWIVzwRlrhbcTP4O4ufZ8fc=;
        b=Z/0jmCLjyKEb5aFENxpR9DXMuIArDEV0giipjveclXyGHH/xNJ+u0y5EM4gdmOZkaz
         Ivvy92K9ADQLLSjCTaTW7OiPR5nfemMs+o7xbH6NE4OOFBEOyHRmtZuiWv/XfrVGVZ7d
         zjTlTATx3bIjbnj0YbTh3UCxavEy0oLkWs+O+HnSGASHhukX3bZ2bgfV0LWOczEWeBhO
         zTBpwLyCfcfVXaUAJDCOE1tgkPha8xG6fOBJYwoK28XrK89dUxixlXiCz/ghECKJEJNC
         xhrVr2Elwg39TLSpLCoQLmQtzw6DXHGPrm+wQHobR0nxILDaEhSTaKmYcQGZKtsCgnam
         ieJA==
X-Forwarded-Encrypted: i=1; AKwUvBwqilJ6ltg10uPZOvtLhfYeMw/Puc0l8y3tCGggxta13hfXmLVhgeoEfiT3HWL8QBuQlKW1DLNZ3AY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z89CLuEsbd5U6lm9J1mTFm8mCIAwmCxWPwBDqQ6JkuY6JhRkyZ+
	ox8nqFYqLN4YRMmu1EzEhG/oYPutEiJPkrB5r75b3ugiGM3kKqBavAjTdSWRroZMTpoOOHfb9rm
	GSLnfa2ykE/8fKA9QCdBd006a6pZqJhk=
X-Gm-Gg: AYBFou1sJNPbXNV8xk9q1XgjvUzcRgjAZFcw6trmDJdKR4QxNsq2cteoUQa8oyVH/yS
	qACMZMJ19DPjAE7M9kd7jsXAmdL2Sm+F6TQOK+0mfwM9g0byXThlbYZny+afOcJVb2QStjJbaHI
	e4Ervfiyne9sxSbErfsQvdFzFY6BC0aCtZ02eDdT/etS3xXiEIihlc8Z2m2v+ZxyY4t6s9jmZCt
	Nh+l+7k2QcF841zrHe8wn32TqyYk2xDGf2lr4qOLZrq3KKuPJmnr57Le2EJO7p6SDalEFh9pLME
	9jNnv9ESzFnjtiwZ4AFw4qnCUg1OZtuzS1OL3KVAiYCvNx0BDAq0MR3wqXselTBRu1OhxG3iwaK
	LoNK0G08RXKT4FJhK0WGU3dbNnq0YLdqFjWRV2Q==
X-Received: by 2002:a05:690e:b89:b0:677:d251:ccd9 with SMTP id
 956f58d0204a3-67ba500f58dmr9210985d50.48.1793713737821; Tue, 03 Nov 2026
 05:48:57 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com> <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
In-Reply-To: <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Tue, 3 Nov 2026 21:48:44 +0800
X-Gm-Features: AclHuK-kyxeFGeOmdxTnC2slmrHrvKR4DYxVNGXjAJzfbSHbPByoLDfveF6OVPE
Message-ID: <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>, 
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1793713739-6C6DE4E9-B1D73949/0/0
X-purgate-type: clean
X-purgate-size: 4480

On Tue, Nov 3, 2026 at 9:23=E2=80=AFPM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
> On Tue, 3 Nov 2026, Yonggang Luo wrote:
> > On Tue, Nov 3, 2026 at 4:16=E2=80=AFPM Daniel P. Berrang=C3=A9 <berrang=
e@redhat.com> wrote:
> >>
> >> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> >>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and th=
e
> >>>>> type_init
> >>>>> function that calls type_register_static(). A later change needs to
> >>>>> pass a
> >>>>
> >>>> That's the point of the macro to hide the boiler plate code.
> >>>>
> >>>>> target mask into that registration, and the macros have no paramete=
r
> >>>>> for it.
> >>>>
> >>>> Couldn't you just change the macros to take that parameter instead o=
f
> >>>> expanding it everywhere?
> >>>>
> >>>
> >>> Problem of macros is that they don't have default parameters, so you
> >>> need variants for everything:
> >>>
> >>> DEFINE_MACHINE
> >>> DEFINE_MACHINE_EXTENDED
> >>> DEFINE_MACHINE_WITH_INTERFACES
> >>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>> and now would need a new variant, with variant for other existing one=
s.
> >>>
> >>> In the end, it's just simpler to remove this and add the boilerplate.
> >>> It's written once and never modified, so using a macro just save typi=
ng
> >>> those lines once.
> >>
> >> For each machine, it is only written once, but we add machines
> >> over time, and every time a new machine is added the code style
> >> is slightly different. We introduced all the variuos DEFINE_*
> >> macros for QOM to better ensure consistent style and usage as
> >> new code is added over time.
> >
> > I understand that the DEFINE_* macros are bloating because of this.
> > Indeed currently the only two macros used are "DEFINE_MACHINE" and
> > "DEFINE_MACHINE_EXTENDED"
>
> There are a few machines using some others but these are the most used.
> That suggests maybe we should change the convenience wrappers to match
> what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one tha=
t
> allows all parameters which should be rarely needed.
>
> > ; each time people want to add a new attribute, the macros is twiced.
>
> Not necessarily. The SECURE parameter did that to preserve previous
> behaviour but if you add new parameter changing all callers (which is the
> same as expanding the macro that would also change all callers) then it's
> just a new parameter added not changing the number of DEFINE_MACHINE*
> wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED used
> less is an independent change.
>
> > And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replaced
> > with DEFINE_TYPES or TypeInfo
> > and be more explicit. When we used as macro parameter, we need think
>
> But that defies the purpose of hiding the QOM boiler plate as much as
> possible. New people are confused by QOM and it's easier for them to look
> up documentation on the DEFINE_MACHINE* macros to see what parameter is
> what and not care about how it's stored in QOM TypeInfo or what is that
> at all.
>
> > what's that parameter means, and for
> > TypeInfo, we can directly know what that member is about(because we
> > are assigned with the member name).
>
> The parameter also has a name and documentation so it's not simpler to
> look up TypeInfo than look at the macro definition or docs. In fact it's
> harder to guess from TypeInfo as then you also need to get into QOM.
>
> > That's why I suggest keeping a single DEFINE_MACHINE, just like
> > DEFINE_TYPES; as they are the most
> > used macros(and simple enough), and won't suffer from changes much.
>
> That means exposing all the boiler plate for all machines other than the
> simplest case. I think it would be better to keep DEFINE_MACHINE_EXTENDED
> but maybe rethink the existing wrappers and drop unused ones and maybe ad=
d
> new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still keep
> the boiler plate hidden.

Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE_EXT=
ENDED
and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
"targets" or "arch_mask" parameter.


>
> Regards,
> BALATON Zoltan



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:54:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:54:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469839.1678593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEyT-0006Oo-Go; Tue, 03 Nov 2026 13:54:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469839.1678593; Tue, 03 Nov 2026 13:54:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEyT-0006Oh-E5; Tue, 03 Nov 2026 13:54:53 +0000
Received: by outflank-mailman (input) for mailman id 1469839;
 Tue, 03 Nov 2026 13:54:52 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOEyS-0006Ob-LF
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:54:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEyR-00EVGV-Mw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:54:51 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9e7a3-8faa-0a2a0a5109dd-0a2a4504dfa0-32
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:54:51 +0100
Received: from [74.125.224.42] (helo=mail-yx1-f42.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9e7aa-b57f-0a2a45040019-4a7de02ab5ba-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:54:51 +0100
Received: by mail-yx1-f42.google.com with SMTP id
 956f58d0204a3-6768403e9bbso3698202d50.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 05:54:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793714090; cv=none;
        d=google.com; s=arc-20260327;
        b=iOGHjbAxAGbMi8IZ8S1fxj+dv0JZscJ4fTqmAd7EUIK/XWgfD24Os1vCve4naF7WDB
         Tmzfe85bsuaU1XrZmGRMi5wPdxK+Y6a6WJ11XZzIMC43SSYhIAQxi9cbndef30yuOZTv
         7ew10miNTGUANXuEVpNO6KbG4QJaapzeK29YLM+yiBQZynRHx02Qw2+aR3W3i24kHg9L
         HzdT7VNh2q/tXe/2bNkDId3qsPLc3/gbmXRuv8Q0omHfTfB2NaibzMnXgQhcLC/coVVp
         FWz1sZ4wk+WzE6k7d6AAMB1aS8tFWOJCkgpSQ5ffOjle/cJMOlU2wFKl/28/xn1lVc+i
         RDxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=6k8h62aOYkjqCaz/dJEvILSpJELJU5ePM9R2kYQ9vjs=;
        fh=VRpaEudRyGnlhbHmDKPFZAX/1faN/SMXn8KSQ2ZV1fA=;
        b=a7wF/H7YeWAfnBlYaEV1IjcQ3SKZgSK+d6Pi5zrqWI3n/boVpuk0AWZT/Ge5sAmX7N
         w+dMMNePupbtjreyWSdlq5JGOvoV13NeZ2COWn1nAkRYsqO5t0+5qO2/1/9jVfxr8diG
         DVuEUwTid8tYKD/uKB6KCknM7c3fGkXLiCSiVXrbrueY0+/l3rBIZKxW5sVxwDkQFESd
         Sk0IP4HNMjGFh5K6BHuPlZiLBylO2Wyb3+anwim2GcrbfFt1hNbNeivoPGnMfhueYnMq
         3KM3CJWW36EoR7AhMK8+BObCh1jkwJtQF0rtPMKP4w/flBe6DJ8zl96z8V9N/ipgmM+/
         cqXg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793714090; x=1794318890; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=6k8h62aOYkjqCaz/dJEvILSpJELJU5ePM9R2kYQ9vjs=;
        b=cFf1aFRikAlU9m+zdT4xgPQUtNzXlRYUb4ZcWB09qm75hxYJ2Ww//2RwNBnS7wF+tE
         3sxePK1nCEO0B4dSCqLCBKRYVsppaPldY2V2o8FXC3oxoN50HuYMjN5JWa/44tnM/qdf
         3zQtEav8JkTyBPHUle/pwwPmaK4uhrxhJSkaiwOruMhLH4HYSJPB2i+kzyXGkaeBvcuX
         WSuwRm9gyC6GYQv+LoMVN5b6BpANlJm9Anjq5zzy4Jml9ipzovVprSROihFZe+9r3sbk
         yBW2fWQPHWlzQ7yDzd/Y1Vq31ePmYuWVOrndzmGYh/BJ409tDyzttw6r1wFokk8LM59/
         rbGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793714090; x=1794318890;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=6k8h62aOYkjqCaz/dJEvILSpJELJU5ePM9R2kYQ9vjs=;
        b=pEPwipWLdavn+QvLAA1xK7T9oFuPHJTrZ2BreJgNjJ6pGDZJ4AB2aKfnRyDP0MNFqt
         LrTcOLTWwBj6oHB1EdYIYaHn46yv30RmrJ0HHfJp+KBVZ0dOA4ACLd0tGN5xZmAyBTJo
         wclmq0v58aJhitAekwVij4jU6F7Y84Tq/WO1gC0UiUWO0D1ApgFCEwhJS/EizqGeP3VA
         /nribxTCdS5I748783JisiTDiJMwveS0YUVyWASU9zRv+GRHP5+tb57rXizMs65xrmLc
         /MWx+Mi8KXtE/dS2JEnU8J0qA7KAXFkDpUBxh6P3bZwm5LcHIr1AaaS+vBqcD3UPRcr4
         iHQg==
X-Forwarded-Encrypted: i=1; AKwUvBzu/MoGxdXBYoZIcl3A9XjQm5fDORcP5gzi2Q1VofOYFO9JSUU1Vnq4G/B7gTf5s0a1XIHqFHAS/2Q=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+N/tUQp+rDmf06mrqK0aJzEAWNcHh26dDY3BslgifGZjHBpa1k
	4lX6TfEsW3nUYl2vKN9tKSBDwI18Kjyc8jQDFzScGZ2UD1rohzJb/k5OWGiZP3ntBTWDz1g/2mn
	QxqtVTJS0r6yrFQ1TZZcE3E8dLCL9rtA=
X-Gm-Gg: AYBFou2BVt0+vzByQZqjd0oJQ6iKG3Qx3zy46ewTnBkP5/7vz6gLt7YHB92RQp7uLdH
	7J1TCZuMKC/8iCSKX9LkY7bAbmF+peEddFgr0ZgCeT7Nofhw34+lhAThZ3mz/WE1lOBwuSrk3WZ
	b81gKyeiGx2ZJs7+9XNER4Xb+ZnPQ19m7swCUjXV79prvxeCVVNx500ajPGDM6AHW0dxInSZOVh
	lZ6PHKpig6Ldwj3KPkn+e+uVl5Hn/LKhWCJ3gP39kow+tlaiYz7lYoDE9nSuekYv0uKcfy3K5B7
	Quh3Y/jKO7nNV7am3Ck9AM9I1xKxeQgwDF4vAAb+ImDTm3JTf/D9cGYZPdnbkueD3fGy8IpSXP2
	SKUdgmpDNfU6Liba4auq9rCSWfzhUh4MPPf99
X-Received: by 2002:a05:690e:1183:b0:677:cf9f:8fe7 with SMTP id
 956f58d0204a3-67ba4ed9d5fmr11680878d50.18.1793714089975; Tue, 03 Nov 2026
 05:54:49 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <ba106173-fca3-6019-3028-122831887921@eik.bme.hu>
 <CAE2XoE9cR_X0kkDfGTU4Mt_5Hc3WZ8K5rghw2AeL4Vh=eugGag@mail.gmail.com>
 <bf45a858-db07-de03-70ea-ca0061d7a5d1@eik.bme.hu> <CAE2XoE9_b5UiE2+BXFRqB3RPv=M+8jr1HQy7rEFVEb6w1DdoGg@mail.gmail.com>
 <a479df5b-721d-c357-5c69-c3760a73e521@eik.bme.hu> <CAE2XoE-2w3A4=BeskGgp7NYUtkRVNkNufu4SZjW_OQ-KAQZvhg@mail.gmail.com>
 <6efa9f73-75dd-efd0-3fd9-6b2654b69737@eik.bme.hu> <CAE2XoE8pNaP3rAR5Y2BpUZ2vSu-UC-wG9V9U7gPXrEGY=kx0RA@mail.gmail.com>
 <e5ce0ea8-7e97-aa76-6384-025fc43cb85a@eik.bme.hu> <CAE2XoE-459vCeK1O__iCs_hgMfMEQHWf_f_=hXG4ZhMJ1Z4aBw@mail.gmail.com>
 <b5987922-1ba0-c284-668f-10d2b114044f@eik.bme.hu> <63da8d3e-38a8-7de5-f73b-7f3dfd6e09d3@eik.bme.hu>
In-Reply-To: <63da8d3e-38a8-7de5-f73b-7f3dfd6e09d3@eik.bme.hu>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Tue, 3 Nov 2026 21:54:35 +0800
X-Gm-Features: AclHuK_wV8ioyKz7aiyS3SJZfnLtnltFlHI8AJvTjC6NpMOSuUmoAxToMkTXXqk
Message-ID: <CAE2XoE-G41GhOhxUveqeALiTt4rM3GN+99h=jv009o=qVAtr2A@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ebf023/1793714091-52CCFB50-BD38C8CD/0/0
X-purgate-type: clean
X-purgate-size: 13248

On Tue, Nov 3, 2026 at 9:26=E2=80=AFPM BALATON Zoltan <balaton@eik.bme.hu> =
wrote:
>
> On Tue, 3 Nov 2026, BALATON Zoltan wrote:
> > On Tue, 3 Nov 2026, Yonggang Luo wrote:
> >> On Mon, Nov 2, 2026 at 10:56=E2=80=AFPM BALATON Zoltan <balaton@eik.bm=
e.hu> wrote:
> >>>
> >>> On Mon, 2 Nov 2026, Yonggang Luo wrote:
> >>>> On Mon, Nov 2, 2026 at 4:57=E2=80=AFAM BALATON Zoltan <balaton@eik.b=
me.hu> wrote:
> >>>>>
> >>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> >>>>>> On Sun, Nov 1, 2026 at 7:29=E2=80=AFAM BALATON Zoltan <balaton@eik=
.bme.hu>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> On Sun, 1 Nov 2026, Yonggang Luo wrote:
> >>>>>>>> On Sun, Nov 1, 2026 at 1:06=E2=80=AFAM BALATON Zoltan <balaton@e=
ik.bme.hu>
> >>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> On Sat, 31 Oct 2026, Yonggang Luo wrote:
> >>>>>>>>>> On Sat, Oct 31, 2026 at 8:42=E2=80=AFPM BALATON Zoltan <balato=
n@eik.bme.hu>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> On Fri, 30 Oct 2026, Pierrick Bouvier wrote:
> >>>>>>>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> >>>>>>>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> >>>>>>>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeIn=
fo
> >>>>>>>>>>>>>> and the
> >>>>>>>>>>>>>> type_init
> >>>>>>>>>>>>>> function that calls type_register_static(). A later change
> >>>>>>>>>>>>>> needs to
> >>>>>>>>>>>>>> pass a
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> That's the point of the macro to hide the boiler plate code=
.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> target mask into that registration, and the macros have no
> >>>>>>>>>>>>>> parameter
> >>>>>>>>>>>>>> for it.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Couldn't you just change the macros to take that parameter
> >>>>>>>>>>>>> instead of
> >>>>>>>>>>>>> expanding it everywhere?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> Problem of macros is that they don't have default parameters=
, so
> >>>>>>>>>>>> you
> >>>>>>>>>>>> need variants for everything:
> >>>>>>>>>>>>
> >>>>>>>>>>>> DEFINE_MACHINE
> >>>>>>>>>>>> DEFINE_MACHINE_EXTENDED
> >>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACES
> >>>>>>>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> >>>>>>>>>>>> and now would need a new variant, with variant for other exi=
sting
> >>>>>>>>>>>> ones.
> >>>>>>>>>>>>
> >>>>>>>>>>>> In the end, it's just simpler to remove this and add the
> >>>>>>>>>>>> boilerplate.
> >>>>>>>>>>>> It's written once and never modified, so using a macro just =
save
> >>>>>>>>>>>> typing
> >>>>>>>>>>>> those lines once.
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Regards,
> >>>>>>>>>>>>> BALATON Zoltan
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> This series expands every caller first, with no behavior
> >>>>>>>>>>>>>> change, so the
> >>>>>>>>>>>>>> follow-up only replaces the type_register_static() call.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Each machine file gains a class_init function, a TypeInfo,=
 and
> >>>>>>>>>>>>>> a
> >>>>>>>>>>>>>> type_init
> >>>>>>>>>>>>>> function that calls type_register_static(). The last patch
> >>>>>>>>>>>>>> removes
> >>>>>>>>>>>>>> DEFINE_MACHINE* and DEFINE_SECURE_MACHINE* from
> >>>>>>>>>>>>>> include/hw/core/boards.h.
> >>>>>>>>>>>
> >>>>>>>>>>> Macros help reading the code not saving typing. If the actual
> >>>>>>>>>>> functionality is buried in a lot of boiler plate it's harder =
to
> >>>>>>>>>>> understand
> >>>>>>>>>>> and spot bugs so putting the unintresting boiler plate behind=
 a
> >>>>>>>>>>> macro is
> >>>>>>>>>>> better even if you need a separate version for different case=
s.
> >>>>>>>>>>> Then the
> >>>>>>>>>>> code that uses the macro will be much more obvious and not ju=
st a
> >>>>>>>>>>> lot of
> >>>>>>>>>>
> >>>>>>>>>> I think mainly because DEFINE_MACHINE* and DEFINE_SECURE_MACHI=
NE*
> >>>>>>>>>> are
> >>>>>>>>>> not defined properly
> >>>>>>>>>> that causes them to not be extended easily.
> >>>>>>>>>>
> >>>>>>>>>> DEFINE_TYPES is another example, use them can extend easily, h=
ow
> >>>>>>>>>> about
> >>>>>>>>>> always use DEFINE_TYPES?
> >>>>>>>>>> Or add a DEFINE_TYPE to replace DEFINE_MACHINE* and
> >>>>>>>>>> DEFINE_SECURE_MACHINE*?
> >>>>>>>>>
> >>>>>>>>> Maybe I'm missing the problem but DEFINE_MACHINE macros are jus=
t
> >>>>>>>>> convenience wrappers around DEFINE_MACHINE_EXTENDED. So why can=
't
> >>>>>>>>> you add
> >>>>>>>>> the needed parameter to DEFINE_MACHINE_EXTENDED and use that fo=
r
> >>>>>>>>> machines
> >>>>>>>>> that need it, or if it's needed by all machines then make the n=
ew
> >>>>>>>>> parameter required and add it to all convenience wrappers too s=
o you
> >>>>>>>>> can
> >>>>>>>>> keep using DEFINE_MACHINE* and just need to add one parameter t=
o it
> >>>>>>>>> in
> >>>>>>>>> machines?
> >>>>>>>>
> >>>>>>>> That's the issue, add parameter to DEFINE_MACHINE_EXTENDED means=
 all
> >>>>>>>> calls to it also need
> >>>>>>>> to be changed, that means touch many $target_arch files. current=
ly
> >>>>>>>> it's 13. But after these
> >>>>>>>
> >>>>>>> That's not different from expanding the macro which would touch t=
he
> >>>>>>> same
> >>>>>>> files.
> >>>>>>>
> >>>>>>>> changes, there will be much more usage on it, and if we want to =
add
> >>>>>>>> more parameters or attributes
> >>>>>>>> to it, it will be a new tree-wide change.
> >>>>>>>
> >>>>>>> Do you expect to need more parameters? Can't you add them at once
> >>>>>>> then?
> >>>>>>>
> >>>>>>>> And DEFINE_TYPES do not suffer from such issues. As the TypeInfo=
[] is
> >>>>>>>> explicit defined for
> >>>>>>>> DEFINE_TYPES
> >>>>>>>
> >>>>>>> My point is that keeping the boiler plate as little as possible m=
akes
> >>>>>>> the
> >>>>>>> code more readable. DEFINE_TYPES hides some of the boiler plate,
> >>>>>>> DEFINE_MACHINE hides even more so converting to DEFINE_TYPES woul=
d
> >>>>>>> expose
> >>>>>>> some even if it's better than no macro at all.
> >>>>>>>
> >>>>>>> What exactly are the parameters missing from DEFINE_MACHINE_EXTEN=
DED
> >>>>>>> that
> >>>>>>> need to be added?
> >>>>>>
> >>>>>> Hi BALATON
> >>>>>> the things we faced is we first is to add TypeInfo::is_available
> >>>>>> parameter to
> >>>>>> DEFINE_MACHINE_EXTENDED, and have more usage of it.
> >>>>>> Then we will add targets:uint64_t parameter to DEFINE_MACHINE_EXTE=
NDED,
> >>>>>> this is
> >>>>>> a prepare to remove TypeInfo::is_available parameter from
> >>>>>> DEFINE_MACHINE_EXTENDED,
> >>>>>>
> >>>>>> And finally, once all usage of TypeInfo::is_available can be repla=
ced
> >>>>>> with
> >>>>>> targets:uint64_t, then we finally need to remove
> >>>>>> TypeInfo::is_available parameter from DEFINE_MACHINE_EXTENDED,
> >>>>>
> >>>>> Is there a way to avoid the temporary is_available churn and introd=
uce
> >>>>> the
> >>>>> targets:uint64_t right away? (I'm not following this so I don't rea=
lly
> >>>>> know what you're talking about just looks like there's some churn h=
ere
> >>>>> which might be good to awoid anyway independent of these macros.)
> >>>>>
> >>>>>> That's what I am facing now. And the explicit
> >>>>>> static const TypeInfo xxx_machine_typeinfo =3D {
> >>>>>>    .name       =3D MACHINE_TYPE_NAME("xxx"),
> >>>>>>    .parent     =3D TYPE_MACHINE,
> >>>>>>    .class_init =3D xxx_machine_class_init,
> >>>>>> };
> >>>>>>
> >>>>>> Will help me avoid the issue. And I think this is a little boilerp=
late
> >>>>>> and very explicit.
> >>>>>
> >>>>> That's not all DEFINE_MACHINE hides though. It's longer with .abstr=
act,
> >>>>> .secure and .iterfaces plus the machine initfn that would also need=
 to
> >>>>> be
> >>>>> expanded if you used DEFINE_TYPES.
> >>>>>
> >>>>> Is this conversion needed for all machines using all DEFINE_MACHINE
> >>>>
> >>>> At the end, only "none" machine do not have targets parameter or
> >>>> (QEMU_ARCH_ALL), as that's the sole
> >>>> machine that supports all targets.
> >>>>
> >>>>> variants or only some of them? If the latter why not convert those =
to
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> DEFINE_MACHINE_EXTENDED and then only that macro needs to be change=
d
> >>>>> with
> >>>>> other wrappers passing a default value without needing a new parame=
ter.
> >>>>> That does not work if all machines need to do this but even then,
> >>>>> keeping
> >>>>> the macro and adding a new required parameter is better in my opini=
on as
> >>>>> it keeps boiler plate hidden.
> >>>>
> >>>> Another option is keep DEFINE_MACHINE and introduce
> >>>> DEFINE_MACHINE_TARGETS
> >>>> and remove DEFINE_MACHINE_EXTENDED, and we only use DEFINE_MACHINE f=
or
> >>>> simple case,
> >>>> that is parent is TYPE_MACHINE and have no custom type and no more
> >>>> attributes assigned.
> >>>> DEFINE_MACHINE_EXTENDED is too verbose, when calling it, it less cle=
ar
> >>>> than calling to DEFINE_MACHINE.
> >>>> And if we want to set more attributes to TypeInfo, just expand it to
> >>>> use type_init or DEFINE_TYPES, how about this way.
> >>>>
> >>>> This will be something like:
> >>>>
> >>>> #define DEFINE_MACHINE_TARGETS(namestr, machine_initfn, targets) \
> >>>>    static void machine_initfn##_class_init(ObjectClass *oc, const vo=
id
> >>>> *data) \
> >>>>    { \
> >>>>        MachineClass *mc =3D MACHINE_CLASS(oc); \
> >>>>        machine_initfn(mc); \
> >>>>    } \
> >>>>    static const TypeInfo machine_initfn##_typeinfo =3D { \
> >>>>        .name       =3D MACHINE_TYPE_NAME(namestr), \
> >>>>        .parent     =3D TYPE_MACHINE, \
> >>>>        .class_init =3D machine_initfn##_class_init, \
> >>>>    }; \
> >>>>    static void machine_initfn##_register_types(void) \
> >>>>    { \
> >>>>        type_register_targets(&machine_initfn##_typeinfo, targets); \
> >>>>    } \
> >>>>    type_init(machine_initfn##_register_types)
> >>>>
> >>>> /* Implicitly insecure */
> >>>> #define DEFINE_MACHINE(namestr, machine_initfn) \
> >>>>    DEFINE_MACHINE_TARGETS(namestr, machine_initfn, QEMU_ARCH_ALL) \
> >>>>
> >>>> As the many call is to DEFINE_MACHINE.
> >>>>
> >>>> And after all conversion, all existing usage of DEFINE_MACHINE will =
be
> >>>> converted to
> >>>> DEFINE_MACHINE_TARGETS.
> >>>> DEFINE_MACHINE will be called for ('none') machine or future
> >>>> heterogeneous
> >>>> machines
> >>>>
> >>>>
> >>>> Either way, these patches will be dropped. We will introduce
> >>>> DEFINE_MACHINE_TARGETS first.
> >>>
> >>> I think I'm lost and cannot follow what you want. As far as I underst=
ood
> >>> you want to add a new field "target" to machine TypeInfo but instead =
of
> >>> adding that straight away you proposed to first add is_available then
> >>> later replace that with target. I asked why do you need is_available =
and
> >>> not add target right away?
> >>>
> >>> Then if this target parameter will be needed for all machines why can=
't
> >>> you add that to all DEFINE_MACHINE macros as a required parameter and=
 set
> >>> it for all machines passing it through to DEFINE_MACHINE_EXTENDED whi=
ch
> >>> sets in the TypeInfo. That way no machines need changing other than a=
dding
> >>> the target parameter to the existing DEFINE_MACHINE calls.
> >>>
> >>> What am I missing?
> >> Or sorry, I did not explain well.
> >>
> >> I means reshape DEFINE_MACHINE like
> >>
> >> https://lore.kernel.org/qemu-devel/20261102194826.1298-1-luoyonggang@g=
mail.com/T/#u
> >>
> >> basically every call to DEFINE_MACHINE needs the targets parameter.
> >> So we can always passing targets parameter for DEFINE_MACHINE.
> >
> > That's OK and is what I suggested, the part I did not get is why do you=
 need
> > an intermediate is_available step instead of just adding the target par=
ameter
> > to all DEFINE_MACHINE* macros.
>
> I noticed there's some redundancy between the arch and the name prefix
> with this change. Basically you're trying to split namestr into name and
> arch where the final machine name will be arch-name. Is there a way to do
> this from the macro somehow so you don't have to specify the arch twice
> once in the name and once as an enum?

There won't be redundancy, the change's intention is to keep the
machine QOM-name not
changed, specifically, drop MR
https://lore.kernel.org/qemu-devel/20261027111216.392-1-luoyonggang@gmail.c=
om/
so we can keep the QOM name for machines not changed by introduce a
extra targets parameter
to it, then we can use buckets to storage different arch/target, I've
already implemented
that at https://gitlab.com/lygstate-qemu/qemu/-/commits/qom-type-buckets?re=
f_type=3Dheads,
 and it's working well:)

I am trying to get it merged by sending smaller patches.

Basically we always need a "targets" parameter or
"TargetInfo::is_avaiable" attributes.
the targets parameter will be saved into TargetImpl::targets, and not
in TargetInfo, as the default
value for TargetInfo is 0, means no targets. but we want keep
"QEMU_ARCH_ALL" default behavior, that's why
I want it to be a parameter, not a TargetInfo member

>
> Regards,
> BALATON Zoltan



--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 13:55:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 13:55:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469847.1678611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEzD-0006vy-SV; Tue, 03 Nov 2026 13:55:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469847.1678611; Tue, 03 Nov 2026 13:55:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOEzD-0006vr-PH; Tue, 03 Nov 2026 13:55:39 +0000
Received: by outflank-mailman (input) for mailman id 1469847;
 Tue, 03 Nov 2026 13:55:38 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <berrange@redhat.com>) id 1xOEzC-0006vf-41
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 13:55:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOEzB-006zxr-Go
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:55:37 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 6ae9e7d0-8faa-0a2a0a5109dd-0a2a450bc31c-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:55:34 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <berrange@redhat.com>)
 id 6ae9e7d5-b7e8-0a2a450b0019-aa0a857c9fbf-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 14:55:34 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-60-FkhH78s2NBeluyaD0FvwgA-1; Tue,
 03 Nov 2026 08:55:29 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id DC4591955BC4; Tue,  3 Nov 2026 13:55:21 +0000 (UTC)
Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 82727195608C; Tue,  3 Nov 2026 13:55:10 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793714132;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HkLAd4qQaoBYZVRD0j1kGkVYOIEsMDHpcx8amGDTFMA=;
	b=h4fLuo8GqIm7LMlrEK4WhlkOzhOVNtG6hKH6YcCxJioF5znXlnxIziMIko246klldJ8TKN
	Kc5eGyqObbXXdZHGCtmzX5Rm6RZ5YDzztoOzF9pfcbJZUv2SpD0Pu2BeadS7k4l6qpctRf
	P+nVd/oKBCkjpDmpxQ4o8wbtSq6KLAs=
X-MC-Unique: FkhH78s2NBeluyaD0FvwgA-1
X-Mimecast-MFC-AGG-ID: FkhH78s2NBeluyaD0FvwgA_1793714124
Date: Tue, 3 Nov 2026 13:55:07 +0000
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Yonggang Luo <luoyonggang@gmail.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	qemu-devel@nongnu.org, Anthony PERARD <anthony@xenproject.org>,
	Felipe Balbi <balbi@kernel.org>,
	Aleksandar Rikalo <arikalo@gmail.com>,
	Philippe Mathieu-Daude <philmd@mailo.com>,
	Antony Pavlov <antonynpavlov@gmail.com>,
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	=?utf-8?B?SGVydsOp?= Poussineau <hpoussin@reactos.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org,
	Alexandre Iooss <erdnaxe@crans.org>,
	Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>,
	Thomas Huth <th.huth+qemu@posteo.eu>,
	=?utf-8?Q?Cl=C3=A9ment?= Chigot <chigot@adacore.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Yoshinori Sato <yoshinori.sato@nifty.com>,
	Frederic Konrad <konrad.frederic@yahoo.fr>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Chao Liu <chao.liu@processmission.com>,
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>,
	Alistair Francis <alistair@alistair23.me>,
	Huacai Chen <chenhuacai@kernel.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Gaurav Sharma <gaurav.sharma_7@nxp.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Alistair Francis <alistair.francis@wdc.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
Message-ID: <aunnuwhsx9ZOOXBX@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20261030151539.1872-1-luoyonggang@gmail.com>
 <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com>
 <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
 <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
MIME-Version: 1.0
In-Reply-To: <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
User-Agent: Mutt/2.4.3 (2026-10-09)
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: nx6NLDKONS1Upu0bA268i6IzawI6178LAYrl9LYrB3A_1793714124
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793714134-194C39EA-896082AF/35/111497
X-purgate-type: clean
X-purgate-size: 5076

On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
> On Tue, Nov 3, 2026 at 9:23 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
> >
> > On Tue, 3 Nov 2026, Yonggang Luo wrote:
> > > On Tue, Nov 3, 2026 at 4:16 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> > >>
> > >> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> > >>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> > >>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> > >>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
> > >>>>> type_init
> > >>>>> function that calls type_register_static(). A later change needs to
> > >>>>> pass a
> > >>>>
> > >>>> That's the point of the macro to hide the boiler plate code.
> > >>>>
> > >>>>> target mask into that registration, and the macros have no parameter
> > >>>>> for it.
> > >>>>
> > >>>> Couldn't you just change the macros to take that parameter instead of
> > >>>> expanding it everywhere?
> > >>>>
> > >>>
> > >>> Problem of macros is that they don't have default parameters, so you
> > >>> need variants for everything:
> > >>>
> > >>> DEFINE_MACHINE
> > >>> DEFINE_MACHINE_EXTENDED
> > >>> DEFINE_MACHINE_WITH_INTERFACES
> > >>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> > >>> and now would need a new variant, with variant for other existing ones.
> > >>>
> > >>> In the end, it's just simpler to remove this and add the boilerplate.
> > >>> It's written once and never modified, so using a macro just save typing
> > >>> those lines once.
> > >>
> > >> For each machine, it is only written once, but we add machines
> > >> over time, and every time a new machine is added the code style
> > >> is slightly different. We introduced all the variuos DEFINE_*
> > >> macros for QOM to better ensure consistent style and usage as
> > >> new code is added over time.
> > >
> > > I understand that the DEFINE_* macros are bloating because of this.
> > > Indeed currently the only two macros used are "DEFINE_MACHINE" and
> > > "DEFINE_MACHINE_EXTENDED"
> >
> > There are a few machines using some others but these are the most used.
> > That suggests maybe we should change the convenience wrappers to match
> > what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one that
> > allows all parameters which should be rarely needed.
> >
> > > ; each time people want to add a new attribute, the macros is twiced.
> >
> > Not necessarily. The SECURE parameter did that to preserve previous
> > behaviour but if you add new parameter changing all callers (which is the
> > same as expanding the macro that would also change all callers) then it's
> > just a new parameter added not changing the number of DEFINE_MACHINE*
> > wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED used
> > less is an independent change.
> >
> > > And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replaced
> > > with DEFINE_TYPES or TypeInfo
> > > and be more explicit. When we used as macro parameter, we need think
> >
> > But that defies the purpose of hiding the QOM boiler plate as much as
> > possible. New people are confused by QOM and it's easier for them to look
> > up documentation on the DEFINE_MACHINE* macros to see what parameter is
> > what and not care about how it's stored in QOM TypeInfo or what is that
> > at all.
> >
> > > what's that parameter means, and for
> > > TypeInfo, we can directly know what that member is about(because we
> > > are assigned with the member name).
> >
> > The parameter also has a name and documentation so it's not simpler to
> > look up TypeInfo than look at the macro definition or docs. In fact it's
> > harder to guess from TypeInfo as then you also need to get into QOM.
> >
> > > That's why I suggest keeping a single DEFINE_MACHINE, just like
> > > DEFINE_TYPES; as they are the most
> > > used macros(and simple enough), and won't suffer from changes much.
> >
> > That means exposing all the boiler plate for all machines other than the
> > simplest case. I think it would be better to keep DEFINE_MACHINE_EXTENDED
> > but maybe rethink the existing wrappers and drop unused ones and maybe add
> > new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still keep
> > the boiler plate hidden.
> 
> Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE_EXTENDED
> and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
> "targets" or "arch_mask" parameter.

Given that we don't need to do general per-arch type filtering in
QOM, we could just move 'is_available' out of TypeInfo, and into the
MachineClass, so it is a regular class level property, which can be
set in the class_init methods, and thus avoid any changes to the
DEFINE_MACHINE macros.

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:04:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:04:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469861.1678620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOF7y-0000vR-Pj; Tue, 03 Nov 2026 14:04:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469861.1678620; Tue, 03 Nov 2026 14:04:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOF7y-0000vK-Me; Tue, 03 Nov 2026 14:04:42 +0000
Received: by outflank-mailman (input) for mailman id 1469861;
 Tue, 03 Nov 2026 14:04:40 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOF7w-0000vE-AM
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:04:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOF7v-007SJY-BW
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:04:39 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@swg.vates.tech>)
 id 6ae9e9f6-bab6-0a2a0a5309dd-0a2a4502abb8-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:04:39 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@swg.vates.tech>)
 id 6ae9e9f6-6ca4-0a2a45020019-b9ff1c129a53-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:04:38 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1b9ce9c000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:04:31 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 299B980CEA;
 Tue,  3 Nov 2026 15:04:30 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=xR3LshpJf4aU8udUWzTEmL0l5bpW90W538KPPuHClJU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:feedback-id;
 b=cXEWXShvBM0KSeva+tvUeLNA1COf899JBgsM/5/JEhANTNIfquv7aG/SDJ+M9SMlBuk+ddO7O
 +6LmqYYjPFLoy1Y4AtDRfl7KVDXjvoLGYJ6D02VAQSQcTVp2wT9AfkViqSnKd6qP85Y7FIrnAwF
 R85Kz0zLBn5T+ZScrYLwOPVuNqRC+nOPQiB3/SanLQVaKpjg1umFUnZbAY2kqCReYCr3Exlm477
 q34ilEHfLj89Dwp65iiQOOvYtCb5oIlJOViD4PxO9OcEOXcQN9jqftxOWmgjJbk9mNfCEiBB/i0
 vXww63koGgJel0Ly+KrOBEpQ0QlzRxKe/ZzAEctMK2OA==
X-Zone-Loop: 04442828bf1c3092a27254946025411a94df66c4648e
x-campaign-type: default
x-transaction-id: b93ca29c-3ced-4058-ae8d-abe08ef3ffee
x-swg-uid: 01-c96d6d35-4e7f-4c8e-9947-06953e23a605
X-Mailer: Sweego
Message-ID:
 <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech>
x-swg-bid: 1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 0/6] CI: run the riscv64 smoke test with the QTB framework
Date: Tue,  3 Nov 2026 15:04:13 +0100
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Change-ID: 20261103-qtb-framework-pytest-f3ed28e4bd78
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=5996; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=/ItNJDnAZ8idEcB3e4PBLEVjvavObGnb/Xj0R/bL8Vs=; b=K2FZLfcokUN5ijqWddOyY/dD5MwhOry/whF2t3AmLWq9SbjDDkXhwbqDZQj63Xql5xH0fLDxm wR3cO2MTyCPA2RxRC8cO+0ZKl9eZscc6g0CJIztOzFF9yLTbe/sXXtT
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714670358
X-purgate-ID: tlsNG-720697/1793714678-F38BC2AC-9951DD7E/10/73395122804
X-purgate-type: spam
X-purgate-size: 5998

The current riscv64 smoke test (qemu-smoke-riscv64.sh) boots Xen under QEMU
and waits for "All set up" with expect. That is enough for one string on
one console, but RISC-V dom0less, in flight on xen-devel, would appreciate
having more: a matrix of pCPU counts, schedulers and domU layouts, and
checks on several consoles (Xen's and each domU's).

This series adds a small pytest framework built on AMD's QTB (QEMU Test
Bench) Python package [1]. It was written as part of the Xen safety
initiative and drives a QEMU instance over qtest, QMP and GDB, so a test
has full access to the machine while the emulation runs: read and write the
consoles, inspect registers and memory, inject interrupts and faults. QTB
is not upstream in QEMU yet, but is planned to be. Using QTB for the
riscv64 tests was suggested by Stefano Stabellini.

The pytest framework the series adds is a small wrapper on top of the QTB
framework that allows us to test the output of many different Xen
configurations with a simple pytest function. The aim is first to add more
coverage, and also to have a modular and easy way to add test logic. For
example, we plan to use it to add IRQ tests, checking that an interrupt
reaches the expected guest based on its SMP affinity.

Tests are plain pytest functions and the machine they boot is a
fixture. The per-test console logs and a JUnit report are kept as CI
artifacts, so GitLab shows per-test results. The README added in patch 4
is the best place to start reading.

Coverage is unchanged: the only test boots Xen alone on one pCPU and
waits for "All set up". The new job runs next to the expect-based one,
which patch 6 drops separately, so that patch can wait until the QTB job
has proven itself. The domU console tests are ready and will follow as
a separate series once RISC-V dom0less is merged, as they cannot pass
on staging before that.

This series:
    1: CI: add a Debian 13 riscv64 QTB container
    2-3: automation/qtb: add the QTB machine for riscv64, and the
         console-test type with a Xen boot test
    4: automation/qtb: add QTB framework README
    5: CI: add a riscv64 smoke test job using the QTB console-test
    6: CI: drop the riscv64 expect-based smoke test

Tested in GitLab CI, with the container's Debian qemu-system-riscv64 and
the OpenSBI it bundles.

Test CI pipeline:
https://gitlab.com/xen-project/people/baptleduc/xen/-/pipelines/TODO

[1] https://gitlab.com/xen-project/people/amd/qemu/-/tree/24cd7e5c0d7e4db8e651f091d0b9da2e7c58dbab/python

---
Changes in v3:
- Rework the framework by using pytest: tests are pytest functions
  parametrizing a `machine` fixture, run all at once with a JUnit
  report. The CLI, config.yaml, the per-type YAML files, the test class
  hierarchy and the attempts/retry logic are gone, so the v2 remarks on
  them no longer apply.
- Split into patches under 200 lines each.
- Move the container to xen.git (automation/build/), named
  debian:13-riscv64-qtb, with offline wheels from the fork, pytest, and
  a comment that the pinned commit is from the safety branch.
- Binaries and logs directories are given with --binaries-dir and
  --log-dir, no environment variable.
- Mirror Xen's console to stdout, so pytest shows it in the report of a
  failing test.
- Take the per-string timeout from TEST_TIMEOUT_OVERRIDE/TEST_TIMEOUT,
  like console.exp.
- Map pexpect timeouts and EOF to AssertionError (a pytest failure)
  instead of a dedicated TestFailure exception.
- Keep the host at 2GB: the follow-up domU tests boot two 512MB domUs.
- Drop the unit tests patch: nothing in CI runs them.
- Drop the Jinja2 host device tree. The follow-up domU series generates
  it from QEMU's own (-machine dumpdtb=) with fdtput, as the Arm tests
  do, and the Xen-only test here needs none.
- Keep the expect-based test, drop it in its own patch.
- Rename the CI template and job with "qtb".
- Link to v2: https://patch.msgid.link/1787823334.8631fc262581453bbf619ec5b2062170.1a04293255c000c4f3@vates.tech

To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony PERARD <anthony.perard@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Alistair Francis <alistair.francis@wdc.com>
Cc: Connor Davis <connojdavis@gmail.com>
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alejandro Vallejo <alejandro.garciavallejo@amd.com>
Cc: Zhang Zheng <zhangzheng@iscas.ac.cn>

---
Baptiste Le Duc (6):
      CI: add a Debian 13 riscv64 QTB container
      automation/qtb: add the QTB machine for riscv64
      automation/qtb: add the console-test type with a Xen boot test
      automation/qtb: add QTB framework README
      CI: add a riscv64 smoke test job using the QTB console-test
      CI: drop the riscv64 expect-based smoke test

 automation/build/debian/13-riscv64-qtb.dockerfile  |  47 ++++++++
 automation/gitlab-ci/test.yaml                     |  25 ++--
 automation/scripts/containerize                    |   1 +
 automation/scripts/qemu-smoke-riscv64.sh           |  19 ---
 automation/scripts/qtb/__init__.py                 |   2 +
 automation/scripts/qtb/env.py                      |  15 +++
 automation/scripts/qtb/riscv/README.md             | 127 +++++++++++++++++++++
 automation/scripts/qtb/riscv/__init__.py           |   2 +
 automation/scripts/qtb/riscv/machine.py            |  92 +++++++++++++++
 automation/scripts/qtb/riscv/tests/__init__.py     |   2 +
 automation/scripts/qtb/riscv/tests/conftest.py     |  65 +++++++++++
 automation/scripts/qtb/riscv/tests/test_console.py |  35 ++++++
 automation/scripts/qtb/utils.py                    |  15 +++
 13 files changed, 419 insertions(+), 28 deletions(-)
---
base-commit: d8e0282815561ff67ebe6b5dfd582a586dafff48
change-id: 20261103-qtb-framework-pytest-f3ed28e4bd78

Best regards,
--  
Baptiste Le Duc <baptiste.le-duc@vates.tech>



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469868.1678630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBi-0001nq-8H; Tue, 03 Nov 2026 14:08:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469868.1678630; Tue, 03 Nov 2026 14:08:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBi-0001nj-4I; Tue, 03 Nov 2026 14:08:34 +0000
Received: by outflank-mailman (input) for mailman id 1469868;
 Tue, 03 Nov 2026 14:08:32 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOFBg-0001nd-FY
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBf-00EY8x-GH
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:31 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d@swg.vates.tech>)
 id 6ae9eadc-e002-0a2a0a5209dd-0a2a45078c7e-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:31 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d@swg.vates.tech>)
 id 6ae9eade-b4ea-0a2a45070019-b9ff1c228f1d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:31 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd621c000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:25 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id D6F098236A;
 Tue,  3 Nov 2026 15:08:24 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=kvdkC7+oTD2iP9TAnzbrTUPmahRuMGjQMQ4fSngxQLU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=RlhEWS4QQQ3mTLiv7xZapMYHrM5hvH0rhYs/snP5Iea/VEbSZV0sBquuUc7asxAIslGb7BmoS
 jpXTva3ZETrbvfONl86FPsJV29bziSaOYpch/vXkVQsSZT3PVjWeucFfE0ZM8DpAQVyuUl8w5V1
 +ZSYJ5XUSdkF8H0i8OebjhtZueCvv5eVZ+Y9ogKiXE3zLKsw0Qgh3SCaHYkUvEuvF1UoqqukPm5
 OCEGI77CB/9GaBwUlrM3ZBSSoNJfpByKzt2PZOBXS8EAi1jtluyEEXGYZYPqvlZx+h8M9ZFp1k+
 bJK9HwVNUTdJPitPyeaXDwecTzlQ8tZWyU+jhrOFegqw==
X-Zone-Loop: 9e543a423f9fa9000eb3a43f866a86d61b99c52b99f2
x-campaign-type: default
x-transaction-id: 76df096f-22f5-4d19-bcb4-4788df50c939
x-swg-uid: 01-8f476212-ee38-4229-8065-f01a696db85c
X-Mailer: Sweego
Message-ID:
 <1793714905.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d@vates.tech>
x-swg-bid: 1793714905.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 1/6] CI: add a Debian 13 riscv64 QTB container
Date: Tue,  3 Nov 2026 15:08:09 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=3803; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=kBSemm3XKY9IzqIHBYySRe+wjvdKKyrzIU+se2nT+EI=; b=8AnIJHbSeAVCBcL0+MOX0iTKUWDShIX2767oaQOuZcCuBPFW89dMCclm5cThb/k4aW0+WCvPg W+4GxqT/KMhC4SCBi+4xbo5cq9zAVSdQUomRb8f2Q3126rvW8hJ3NmR
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714905048
X-purgate-ID: tlsNG-ef75cf/1793714911-A76D2AE4-9E41FBE1/10/63158204843
X-purgate-type: spam
X-purgate-size: 3805

The riscv64 QTB tests use QTB (QEMU Test Bench) Python package. QTB is part
of AMD's work on the 'safety' branch [1] of their QEMU fork and is not
upstream in QEMU yet. The tests also need pytest and qemu-system-riscv64.

Add debian:13-riscv64-qtb, a Debian Trixie container with those packages
and the QTB package installed from the python/ directory of AMD's QEMU
fork, at the commit pinned by QEMU_REPO/QEMU_COMMIT. Make it available to
containerize script as trixie-riscv64-qtb.

QTB depends on pexpect, ptyprocess, pygdbmi and qemu.qmp. Rather than
fetching them from PyPI, install them from the wheels vendored in the
python/wheels/ directory of the same fork commit, with pip --no-index.

[1] https://gitlab.com/xen-project/people/amd/qemu/-/tree/safety?ref_type=heads

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
The CI jobs running the tests in this container come in a later patch.
---
Changes in v3:
- Move the container from test-artifacts to xen.git (automation/build/),
  renamed debian:13-riscv64-qtb.
- Install the QTB dependencies from the wheels vendored in the fork, with
  pip --no-index.
- Add pytest, drop jinja2, yaml and device-tree-compiler.
- Comment that the pinned commit is the tip of the safety branch.
- Reword the commit title and message.
---
 automation/build/debian/13-riscv64-qtb.dockerfile | 47 +++++++++++++++++++++++
 automation/scripts/containerize                   |  1 +
 2 files changed, 48 insertions(+)

diff --git a/automation/build/debian/13-riscv64-qtb.dockerfile b/automation/build/debian/13-riscv64-qtb.dockerfile
new file mode 100644
index 0000000000..34ca1f2b7d
--- /dev/null
+++ b/automation/build/debian/13-riscv64-qtb.dockerfile
@@ -0,0 +1,47 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 debian:trixie-slim
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+ARG QEMU_REPO=https://gitlab.com/xen-project/people/amd/qemu.git
+# Tip of the safety branch
+ARG QEMU_COMMIT=24cd7e5c0d7e4db8e651f091d0b9da2e7c58dbab
+
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    useradd --create-home user
+
+    apt-get update
+
+    DEPS=(# Base environment
+        ca-certificates
+        git
+        python3-minimal
+        python3-pip
+        python3-pytest
+        python3-setuptools
+
+        # QEMU for the tests
+        qemu-system-riscv64
+    )
+
+    apt-get -y --no-install-recommends install "${DEPS[@]}"
+
+    # QTB framework
+    git init /tmp/qemu
+    git -C /tmp/qemu fetch --depth 1 "$QEMU_REPO" "$QEMU_COMMIT"
+    git -C /tmp/qemu checkout FETCH_HEAD
+
+    pip install --break-system-packages --no-index --no-build-isolation \
+                --find-links /tmp/qemu/python/wheels "/tmp/qemu/python[qtb]"
+
+    rm -rf /tmp/qemu
+    rm -rf /var/lib/apt/lists/*
+EOF
+
+USER user
+WORKDIR /build
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index feadd9e82f..cd078d48d9 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -33,6 +33,7 @@ case "_${CONTAINER}" in
     _trixie-ppc64le) CONTAINER="${BASE}/debian:13-ppc64le" ;;
     _bookworm-riscv64) CONTAINER="${BASE}/debian:12-riscv64" ;;
     _trixie-riscv64) CONTAINER="${BASE}/debian:13-riscv64" ;;
+    _trixie-riscv64-qtb) CONTAINER="${BASE}/debian:13-riscv64-qtb" ;;
     _bookworm-x86_64-gcc-ibt) CONTAINER="${BASE}/debian:12-x86_64-gcc-ibt" ;;
     _bookworm|_bookworm-x86_64) CONTAINER="${BASE}/debian:12-x86_64" ;;
     _trixie-x86_64|_) CONTAINER="${BASE}/debian:13-x86_64" ;;

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469869.1678638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBk-00020w-ED; Tue, 03 Nov 2026 14:08:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469869.1678638; Tue, 03 Nov 2026 14:08:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBk-00020p-AZ; Tue, 03 Nov 2026 14:08:36 +0000
Received: by outflank-mailman (input) for mailman id 1469869;
 Tue, 03 Nov 2026 14:08:35 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd641f000403d@swg.vates.tech>)
 id 1xOFBi-0001vQ-VE
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBi-00EYES-Be
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:34 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd641f000403d@swg.vates.tech>)
 id 6ae9eadc-e002-0a2a0a5209dd-0a2a45078c7e-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:34 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd641f000403d@swg.vates.tech>)
 id 6ae9eade-b4ea-0a2a45070019-b9ff1c228f1d-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:34 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd641f000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:26 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 516328237D;
 Tue,  3 Nov 2026 15:08:25 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=btNJsqkeLccghZm4riqNKdfshjJfJDFcVuvTM8zN4aA=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=I9L6n8X6O5s6TfGvkZ7nwjsJ8w+sX2+RIEFqfbhvnj324NLAAck0bMTQ18GuLP1lK3fyiV9+F
 7d9lNMkY9EXwqbpd+70/RpUjwSEHC9Ot5vmnSWSYSwUyeZb2/MTRX46NtK0Q+noCYQvBWM3PKA5
 eFULyf/VAO2RrCpiYYzqHTjWQCtjxa9jXxlUGUgjDGDPAZLK37oa2P/iPyMAZEmAHu2XWWweKdJ
 7G6GG2lqDbDCufFZPYE/UxWHVjSUKjgx4zgzbTlgjEGXjDOiDVUnsBV2gp7rtPrTTo/V2cUj8Y/
 5S8oqJP6Ve2U+u2l7zXdeGOxfhgY7gwyMqQvZ/4ej5CQ==
X-Zone-Loop: 8594ae6480e0601061f0aaea7de1114c49de5dbec9db
x-campaign-type: default
x-transaction-id: b2164b08-6572-4e93-a28f-d63b28607888
x-swg-uid: 01-a51712d3-ecb4-427e-866f-1839e96f514a
X-Mailer: Sweego
Message-ID:
 <1793714906.8631fc262581453bbf619ec5b2062170.1a1a1bd641f000403d@vates.tech>
x-swg-bid: 1793714906.8631fc262581453bbf619ec5b2062170.1a1a1bd641f000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 2/6] automation/qtb: add the QTB machine for riscv64
Date: Tue,  3 Nov 2026 15:08:10 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=7275; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=0ARUiVs6j2C6Fgw0h/da4a735UDRtLBCCfKpiMUJyZE=; b=9E8mESN78E11bYKxpHvgCR6kFAJpaCMyI0X/qYWigCxRRHfYlnYJXFlu0Gh1qtpthZuqOZ99l hgA6h7A7qpZAvyoMtkWqXl7NxCh7Bz6TFT02myMHNdHdZByCjQkUBCY
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714905497
X-purgate-ID: tlsNG-ef75cf/1793714914-A7AD0AE4-DCDAE4D7/0/0
X-purgate-type: clean
X-purgate-size: 7277

The QTB (QEMU Test Bench) Python package drives a QEMU process over QMP and
qtest through QtbMachine, which leaves the QEMU binary (_resolve_binary())
and the machine part of its command line (_machine_args()) to a subclass.

Add RiscvTestMachine, the riscv64 implementation of QtbMachine, with:
  - HostConfig, the test-agnostic description of the host (Xen) to boot:
    for now, the pCPU count and the RAM size.
  - The QEMU command line that boots Xen on the virt machine in
    aia=aplic-imsic mode, using the distribution's qemu-system-riscv64,
    found in PATH, and the OpenSBI it bundles. Xen is resolved from the
    binaries directory before QEMU starts, so a missing one fails the
    test without launching QEMU for nothing.
  - expect_console() waits for a string on a console and turns a timeout or
    a closed console into an AssertionError, which pytest reports as a test
    failure.
  - Xen's console is mirrored to stdout, so a failing test shows where Xen
    stopped without fetching its log from the artifacts.

QtbEnv (qtb/env.py) holds the directories shared by every test, and
qtb/utils.py holds the generic path helpers.

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
The machine is unused on its own: the pytest fixture booting it and the
first test come in the next patch.
---
Changes in v3:
- New patch, split out of v2 "automation/qtb: add Python QTB framework
  with the console-test type".
- Mirror Xen's console to stdout, so pytest shows it in the report of a
  failing test.
- Map pexpect timeouts and EOF to AssertionError (a pytest failure)
  instead of a dedicated TestFailure exception.
- Keep the host at 2GB.
- Drop the Jinja2 host device tree.
---
 automation/scripts/qtb/__init__.py       |  2 +
 automation/scripts/qtb/env.py            | 15 ++++++
 automation/scripts/qtb/riscv/__init__.py |  2 +
 automation/scripts/qtb/riscv/machine.py  | 92 ++++++++++++++++++++++++++++++++
 automation/scripts/qtb/utils.py          | 15 ++++++
 5 files changed, 126 insertions(+)

diff --git a/automation/scripts/qtb/__init__.py b/automation/scripts/qtb/__init__.py
new file mode 100644
index 0000000000..a0e6e76cb2
--- /dev/null
+++ b/automation/scripts/qtb/__init__.py
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""QTB (QEMU Test Bench) test frameworks."""
diff --git a/automation/scripts/qtb/env.py b/automation/scripts/qtb/env.py
new file mode 100644
index 0000000000..7887d6af23
--- /dev/null
+++ b/automation/scripts/qtb/env.py
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""Run environment prepared by the launcher and shared by every test."""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from pathlib import Path
+
+
+@dataclass(frozen=True)
+class QtbEnv:
+    """Directories prepared by the launcher and shared by every test."""
+
+    binaries_dir: Path  # Build artifacts (xen, ...) the hosts boot.
+    log_dir: Path | None = None  # Logs, kept after the run.
diff --git a/automation/scripts/qtb/riscv/__init__.py b/automation/scripts/qtb/riscv/__init__.py
new file mode 100644
index 0000000000..7a0218c73c
--- /dev/null
+++ b/automation/scripts/qtb/riscv/__init__.py
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""QTB riscv64 test framework package."""
diff --git a/automation/scripts/qtb/riscv/machine.py b/automation/scripts/qtb/riscv/machine.py
new file mode 100644
index 0000000000..1c5e3b0d9e
--- /dev/null
+++ b/automation/scripts/qtb/riscv/machine.py
@@ -0,0 +1,92 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""QtbMachine for riscv64."""
+
+from __future__ import annotations
+
+import shutil
+from collections.abc import Sequence
+from dataclasses import dataclass
+
+import pexpect
+from qemu.qtb import GuestConsoleSession
+from qemu.qtb import QtbMachine
+
+from qtb.env import QtbEnv
+from qtb.utils import resolve_under
+
+
+@dataclass(frozen=True)
+class HostConfig:
+    """The test-agnostic description of what to boot."""
+
+    pcpu: int
+    memory: int = 2048  # MB
+
+
+class RiscvTestMachine(QtbMachine):
+    arch_name = "riscv64"
+    gdb_arch = "riscv:rv64"
+
+    qemu_bin = "qemu-system-riscv64"
+
+    def __init__(
+        self,
+        host_config: HostConfig,
+        *,
+        env: QtbEnv,
+    ) -> None:
+        self.host = host_config
+        self.env = env
+        # Resolved before QEMU starts, so a missing binary fails early.
+        self.xen = resolve_under("xen", env.binaries_dir)
+        super().__init__(
+            memory=self.host.memory,
+            cpus=self.host.pcpu,
+            mirror_console=True,
+            # Default expect timeout
+            timeout=30,
+            log_dir=str(env.log_dir) if env.log_dir else None,
+        )
+
+    # Implements QtbMachine._machine_args()
+    def _machine_args(self, memory: int, cpus: int) -> Sequence[str]:
+        machine_opt = "virt,aia=aplic-imsic"
+        cpu_opt = "rv64,svpbmt=on"
+        return [
+            "-M",
+            machine_opt,
+            "-cpu",
+            cpu_opt,
+            "-smp",
+            str(cpus),
+            "-m",
+            str(memory),
+            "-kernel",
+            str(self.xen),
+        ]
+
+    # Implements QtbMachine._resolve_binary()
+    @classmethod
+    def _resolve_binary(cls) -> str:
+        qemu = shutil.which(cls.qemu_bin)
+        if qemu is None:
+            raise FileNotFoundError(f"{cls.qemu_bin} not found in PATH")
+        return qemu
+
+    def get_host_console(self) -> GuestConsoleSession | None:
+        return self.console
+
+    @staticmethod
+    def expect_console(
+        console: GuestConsoleSession, expected: str, timeout: int
+    ) -> None:
+        """Wait for `expected` on console and fail if it does not show up
+        within `timeout`, which overrides the default one from QtbMachine."""
+        if console is None:
+            raise RuntimeError("Xen console not wired up, host not launched?")
+        try:
+            console.expect_exact(expected, timeout=timeout)
+        except pexpect.TIMEOUT:
+            raise AssertionError(f"{expected!r} not seen within {timeout}s") from None
+        except pexpect.EOF:
+            raise AssertionError(f"console closed before {expected!r}") from None
diff --git a/automation/scripts/qtb/utils.py b/automation/scripts/qtb/utils.py
new file mode 100644
index 0000000000..cce5936acb
--- /dev/null
+++ b/automation/scripts/qtb/utils.py
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""Generic helpers shared by the QTB test frameworks."""
+
+from __future__ import annotations
+
+from pathlib import Path
+
+
+def resolve_under(file_name: str, base: Path) -> Path:
+    """Resolve `file_name` against `base`, absolute paths pass through."""
+    p = Path(file_name)
+    path = p if p.is_absolute() else base / p
+    if not path.exists():
+        raise FileNotFoundError(f"cannot resolve {str(path)!r}: does not exist")
+    return path

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469870.1678647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBn-0002Fn-Qp; Tue, 03 Nov 2026 14:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469870.1678647; Tue, 03 Nov 2026 14:08:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBn-0002Fg-Nk; Tue, 03 Nov 2026 14:08:39 +0000
Received: by outflank-mailman (input) for mailman id 1469870;
 Tue, 03 Nov 2026 14:08:38 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd65c3000403d@swg.vates.tech>)
 id 1xOFBm-0002Ev-N3
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBm-00EYES-3g
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:38 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd65c3000403d@swg.vates.tech>)
 id 6ae9eadc-e002-0a2a0a5209dd-0a2a45078c7e-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:38 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd65c3000403d@swg.vates.tech>)
 id 6ae9eade-b4ea-0a2a45070019-b9ff1c228f1d-5
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:38 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd65c3000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:26 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id C7DC08236A;
 Tue,  3 Nov 2026 15:08:25 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=1tZgKsLL6qqRS4QgEjGGM7FNC+OZ9yobRv0XRAs+mcc=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=R7Nj/LVuZB0I1BvbH3N8efG0FZsjiqWPm27dGhIY22QNLjA9msWcOBUNOBBVnO5IzJloF5clw
 R/todBI1FHZkYSYYZFITpIZATsZMMdXPqBF5aQKpuKHTOsbV6ACU7pr8t2SoQoGyRdOItjDAtNO
 vzkcQMYTavN8hwFy5Rab4XvtPbN5DJEh2AkHHRtY2m2K0jP0J+Qgc70ByxHHqcOWStb3WJOqhHb
 hezSVwyZTDSucF2ERZOdimH9ruaEUdl5A+FY0Z7gm6XjOQjvdvve5Jyvvb93IvA3lCkVQCUpM1V
 BDeYAnAXGMu4XT9smL/2KRFtT7yJdyecaue0GBQHXH6Q==
X-Zone-Loop: d04a41d3da7e8a9aeb8a533812b0f451b13577210029
x-campaign-type: default
x-transaction-id: 365bce43-1f8f-450b-9995-a71113aee2e5
x-swg-uid: 01-07279d96-0e3d-426c-bb2e-19b46dd68488
X-Mailer: Sweego
Message-ID:
 <1793714906.8631fc262581453bbf619ec5b2062170.1a1a1bd65c3000403d@vates.tech>
x-swg-bid: 1793714906.8631fc262581453bbf619ec5b2062170.1a1a1bd65c3000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 3/6] automation/qtb: add the console-test type with a Xen boot test
Date: Tue,  3 Nov 2026 15:08:11 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=5911; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=wZhS8AZVt+JzEA/taOgQXqInQ8JcrMvFqNkp4py+p7g=; b=zflSNbV3DQxjdhELu7TmLFr1ReQ/JSxvPudZeXJah7JlG7IMengR9ACR+9muM4bxUnlmENZKy 2HTXJA/GpheCqohMekW9QnIeK7s2F/pPEnOpc3M4QG9cfSvluhJ8U5F
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714905982
X-purgate-ID: tlsNG-ef75cf/1793714918-3C411AE4-7FA1B44B/0/0
X-purgate-type: clean
X-purgate-size: 5913

Add a first console test, which boots Xen under QEMU and waits for "All set
up" on its console. It is the equivalent of qemu-smoke-riscv64.sh, with the
finer control QTB gives, and new configurations are added as test
parameters instead of new scripts.

The tests get their machine through the `machine` pytest fixture. A test
parametrizes the fixture indirectly with the pCPU count, and the fixture
builds the matching RiscvTestMachine from it, so a new configuration only
takes a pytest.param() above the test function. The fixture launches QEMU
before the test body and shuts it down after, so setup problems (missing
binary, QEMU not starting) are reported as pytest errors and only console
checks are reported as test failures.

--binaries-dir gives the directory holding the binaries to boot, and is
mandatory. --log-dir gives where to keep the QEMU and console logs, one
<module>/<test> subdirectory per test. The timeout of each expected string
is 1500 seconds, as in console.exp, overridden by TEST_TIMEOUT_OVERRIDE or
TEST_TIMEOUT.

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
Changes in v3:
- New patch, split out of v2 "automation/qtb: add Python QTB framework
  with the console-test type".
- Rework on top of pytest: tests are pytest functions parametrizing the
  `machine` fixture. The CLI, config.yaml, the per-type YAML files, the
  test class hierarchy and the attempts/retry logic are gone.
- Take the binaries and logs directories from --binaries-dir and
  --log-dir, no environment variable.
- Take the per-string timeout from TEST_TIMEOUT_OVERRIDE/TEST_TIMEOUT,
  like console.exp.
---
 automation/scripts/qtb/riscv/tests/__init__.py     |  2 +
 automation/scripts/qtb/riscv/tests/conftest.py     | 65 ++++++++++++++++++++++
 automation/scripts/qtb/riscv/tests/test_console.py | 35 ++++++++++++
 3 files changed, 102 insertions(+)

diff --git a/automation/scripts/qtb/riscv/tests/__init__.py b/automation/scripts/qtb/riscv/tests/__init__.py
new file mode 100644
index 0000000000..24d34ae2d1
--- /dev/null
+++ b/automation/scripts/qtb/riscv/tests/__init__.py
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""qtb riscv64 tests: boot Xen under QEMU and check what it does."""
diff --git a/automation/scripts/qtb/riscv/tests/conftest.py b/automation/scripts/qtb/riscv/tests/conftest.py
new file mode 100644
index 0000000000..be6c7223a3
--- /dev/null
+++ b/automation/scripts/qtb/riscv/tests/conftest.py
@@ -0,0 +1,65 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""Fixtures booting Xen under QEMU for the qtb riscv64 tests.
+
+A test takes the `machine` fixture and parametrizes it indirectly with its
+pCPU count.
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+
+import pytest
+
+from qtb.env import QtbEnv
+from qtb.riscv.machine import HostConfig, RiscvTestMachine
+
+def pytest_addoption(parser: pytest.Parser) -> None:
+    parser.addoption(
+        "--log-dir",
+        default=None,
+        metavar="DIR",
+        help="Directory for all logs (QEMU process log, qtest and the "
+        "consoles as con<N>.log), one subdirectory per test. When unset, "
+        "no logs are written.",
+    )
+
+    parser.addoption(
+        "--binaries-dir",
+        default=None,
+        metavar="DIR",
+        help="Directory holding the build artifacts (xen, ...) the tests boot.",
+    )
+
+
+@pytest.fixture
+def machine(request: pytest.FixtureRequest, qtb_env: QtbEnv):
+    """The test's machine: QEMU launched."""
+    if not hasattr(request, "param"):
+        pytest.fail("machine fixture needs indirect parametrization with the "
+                    "pCPU count")
+    machine = RiscvTestMachine(
+        HostConfig(request.param),
+        env=qtb_env,
+    )
+    with machine:
+        machine.launch()
+        yield machine
+
+
+@pytest.fixture
+def qtb_env(request: pytest.FixtureRequest) -> QtbEnv:
+    log_dir = request.config.getoption("log_dir")
+    if log_dir:
+        # One <module>/<test> subdirectory per test
+        log_dir = Path(log_dir) / request.node.path.stem / request.node.name
+        log_dir.mkdir(parents=True, exist_ok=True)
+
+    binaries_dir = request.config.getoption("binaries_dir")
+    if binaries_dir is None:
+        pytest.fail("no binaries dir: pass --binaries-dir")
+
+    return QtbEnv(
+        binaries_dir=Path(binaries_dir),
+        log_dir=log_dir,
+    )
diff --git a/automation/scripts/qtb/riscv/tests/test_console.py b/automation/scripts/qtb/riscv/tests/test_console.py
new file mode 100644
index 0000000000..10169e03a8
--- /dev/null
+++ b/automation/scripts/qtb/riscv/tests/test_console.py
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0-only
+"""Console string expectation tests (console-test).
+
+Boot Xen under QEMU and check its console, within the timeout.
+"""
+
+from __future__ import annotations
+
+import os
+
+import pytest
+from qemu.qtb import GuestConsoleSession
+
+from qtb.riscv.machine import RiscvTestMachine
+
+# Per expected string (seconds)
+TIMEOUT: int = int(
+    os.environ.get("TEST_TIMEOUT_OVERRIDE") or os.environ.get("TEST_TIMEOUT")
+    or 1500
+)
+
+
+def _check_console(console: GuestConsoleSession, expect: list[str]) -> None:
+    """Assert each string in `expect` is printed on console, in order."""
+    for s in expect:
+        RiscvTestMachine.expect_console(console, s, TIMEOUT)
+
+
+def _check_host_boot(machine: RiscvTestMachine) -> None:
+    _check_console(machine.get_host_console(), ["All set up"])
+
+
+@pytest.mark.parametrize("machine", [pytest.param(1, id="1pcpu")], indirect=True)
+def test_host_boot(machine):
+    _check_host_boot(machine)

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469871.1678655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBs-0002Y6-0r; Tue, 03 Nov 2026 14:08:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469871.1678655; Tue, 03 Nov 2026 14:08:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBr-0002Xy-UH; Tue, 03 Nov 2026 14:08:43 +0000
Received: by outflank-mailman (input) for mailman id 1469871;
 Tue, 03 Nov 2026 14:08:43 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd67a4000403d@swg.vates.tech>)
 id 1xOFBq-0002W6-US
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBq-0073eV-3t
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:42 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd67a4000403d@swg.vates.tech>)
 id 6ae9eae4-bab6-0a2a0a5309dd-0a2a4508d2ba-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:42 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd67a4000403d@swg.vates.tech>)
 id 6ae9eae9-f659-0a2a45080019-b9ff1c2399c7-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:42 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd67a4000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:27 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 409F58237D;
 Tue,  3 Nov 2026 15:08:26 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=J0Tvjq261UWbeUTC4EzNOR8zNabm6CtON8Gg2CDkJ24=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=JB8+fst+ES3ArY7RqRK9VC8DHgDP0g8jxqj1tcn9YXLOLhq9+/D5Gfy4O9Mbz3hYJrBiv7zpG
 Zs1drHhoVvYHh/h9GNORsxeuI9uWn1VJxNVVX+MM3VeX2LcxCwB4YwAdSbrQokuJpQYH8t2iCST
 bg9vbnXIhTLRI+N0I0bOGtQqXD81uor465QA8PACznNQNfmeuhr/EGGW/n6OEhjki3TU6LbjmQZ
 nv95FYNL2MH4LFSX9JAAfrLWV0VIYAxp1hcpB5NEE600I3MViW76ylpRj9wnfO7JW1v1rreBxG4
 x6mjmsoyzS09uEMJNd0uLWmFdtTeVv3QKfO6AfiI81JA==
X-Zone-Loop: d904bfc0ab6134519420becb16732b8795341d9f1723
x-campaign-type: default
x-transaction-id: a8e56d00-95a8-4583-8ffe-ba12d9912a98
x-swg-uid: 01-9070715d-0a82-4762-a980-cad323d7ebd1
X-Mailer: Sweego
Message-ID:
 <1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd67a4000403d@vates.tech>
x-swg-bid: 1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd67a4000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 4/6] automation/qtb: add QTB framework README
Date: Tue,  3 Nov 2026 15:08:12 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=5611; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=YanaScGFUsa0lc6CQ3L8sJLQhJCTZkpANKuIeMKk/NM=; b=UWPiPKs08Z5H4medNaLgIXm5H8yALI8ihRfFi8TzHR2v5EP+kvNA94R5S7h5mLqU2X81aEENF PuZGRx+12dAAHnq/Hkbd7pri0CjIoHU/qbwrMZFb5MmdJ7SW//HTKf+
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714906429
X-purgate-ID: tlsNG-c1860d/1793714922-CC37587B-7268341E/0/0
X-purgate-type: clean
X-purgate-size: 5613

Document the qtb riscv64 test framework in a README.

It covers:
  - the core concepts: a test type is a pytest module under tests/, a test
    is a function parametrizing the `machine` fixture with what it boots
  - the source files layout
  - the prerequisites and how to run the tests with pytest, with logs and
    a JUnit report as CI does
  - how to run them in the CI container
  - how to add a test and how to add a new test type.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
Changes in v3:
- Rewrite for the pytest-based framework.
---
 automation/scripts/qtb/riscv/README.md | 127 +++++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/automation/scripts/qtb/riscv/README.md b/automation/scripts/qtb/riscv/README.md
new file mode 100644
index 0000000000..f074a70c4a
--- /dev/null
+++ b/automation/scripts/qtb/riscv/README.md
@@ -0,0 +1,127 @@
+qtb riscv64 test framework
+==========================
+
+A small pytest framework built on qtb (QEMU Test Bench), a Python package that
+controls a QEMU process over QMP and qtest and gives access to its consoles.
+Each test drives Xen and its guests through these interfaces and turns what
+it observes into a pass/fail verdict.
+
+Prerequisites
+-------------
+
+- `qemu.qtb`: the QEMU Test Bench Python package. It is not upstream yet, so
+  install it with its `[qtb]` extra (which pulls `pexpect`) from the `python/`
+  directory of the `QEMU_REPO` fork, at the `QEMU_COMMIT` pinned in
+  `automation/build/debian/13-riscv64-qtb.dockerfile`.
+- `pytest`.
+- `qemu-system-riscv64` in PATH, with its bundled OpenSBI.
+- A riscv64 `xen` binary, in the directory given with `--binaries-dir`.
+
+The simplest way to get the Python ones is to use the CI container, see
+"Running in the container" below.
+
+Running the tests
+-----------------
+
+Run from the top level of the source tree, as CI does. Here the binaries are
+in `binaries/`:
+
+```
+T=automation/scripts/qtb/riscv/tests
+
+# List every test:
+python3 -m pytest $T --collect-only -q
+
+# Run every test, one file, one test, or by name substring:
+python3 -m pytest $T --binaries-dir binaries
+python3 -m pytest $T/test_console.py --binaries-dir binaries
+python3 -m pytest $T/test_console.py::test_host_boot --binaries-dir binaries
+python3 -m pytest $T -k 1pcpu --binaries-dir binaries
+
+# With logs and per-test results as JUnit XML (what CI does):
+python3 -m pytest $T --binaries-dir binaries --log-dir qtb-logs \
+    --junitxml tests-junit.xml
+```
+
+pytest finds the `qtb` package on its own, as `automation/scripts/` is the
+first directory above the tests without an `__init__.py`.
+
+The `machine` fixture understands the following options.
+
+- `--binaries-dir DIR`: The directory holding the binaries. It is required to
+  boot a test.
+
+- `--log-dir DIR`: The directory collecting the logs, in one
+  `<module>/<test>/` subdirectory per test. It holds QEMU's stdout/stderr
+  (`riscv64-qtest-<pid>.log`, named after the host) and Xen's console as
+  `con0.log`. Without it, no logs are written.
+
+`--log-cli-level=DEBUG` shows the debug logs live.
+
+Running in the container
+------------------------
+
+Build the CI container once, then run the tests in it with `containerize`,
+which mounts the Xen tree as the working directory. In this example, we assume
+the binaries were copied to `binaries/` at the top of the tree.
+
+```
+make -C automation/build debian/13-riscv64-qtb
+CONTAINER=trixie-riscv64-qtb ./automation/scripts/containerize \
+    python3 -m pytest automation/scripts/qtb/riscv/tests --binaries-dir binaries
+```
+
+Layout
+------
+
+```
+qtb/env.py                   QtbEnv: directories handed to each host
+qtb/utils.py                 Generic helpers, not riscv specific
+
+qtb/riscv/                   This framework
+  machine.py                 HostConfig: what a host boots; RiscvTestMachine:
+                             QEMU command line, console helpers
+
+  tests/                     The QEMU tests, one module per test type
+    conftest.py              `machine` fixture and its options
+    test_console.py          console-test
+```
+
+Test types and tests
+--------------------
+
+A test type is one module under `tests/`. Each test is a short function
+taking the `machine` fixture, which it parametrizes indirectly with the
+pCPU counts it runs on:
+
+```
+@pytest.mark.parametrize(
+    "machine",
+    [pytest.param(1, id="1pcpu")],
+    indirect=True,
+)
+def test_a(machine):
+    ...
+```
+
+Before the test body runs, the `machine` fixture launches QEMU with Xen. Once
+the test body returns, QEMU is shut down.
+
+An exception raised before the test body (a bad parameter, a missing binary,
+QEMU not starting) is reported by pytest and JUnit as an *error*. An
+exception raised in the test body (an `expect_console` timing out) is
+reported as a *failure*.
+
+Adding a test
+-------------
+
+Add a function to the module of the test type, parametrize `machine`
+indirectly with the machines it runs on, and check their consoles.
+
+Adding a test type
+------------------
+
+Add `tests/test_<type>.py`, holding the logic of the type in one function
+that takes the machine and the parameters of the type, and the tests that
+call it. Host-side helpers shared between types go to `RiscvTestMachine` or
+`machine.py`. State the requirements of the type in the module docstring.

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469873.1678665 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBv-0002q5-8t; Tue, 03 Nov 2026 14:08:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469873.1678665; Tue, 03 Nov 2026 14:08:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBv-0002pw-5l; Tue, 03 Nov 2026 14:08:47 +0000
Received: by outflank-mailman (input) for mailman id 1469873;
 Tue, 03 Nov 2026 14:08:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd68c1000403d@swg.vates.tech>)
 id 1xOFBt-0002nR-I5
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBs-00EYJz-UY
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:44 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd68c1000403d@swg.vates.tech>)
 id 6ae9eae4-bab6-0a2a0a5309dd-0a2a4508d2ba-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:44 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd68c1000403d@swg.vates.tech>)
 id 6ae9eae9-f659-0a2a45080019-b9ff1c2399c7-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:44 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd68c1000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:27 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id B24478236A;
 Tue,  3 Nov 2026 15:08:26 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=6vCD6hOttXAIWJv23QfDCKmx7T+6OSDFXtpHB3u6bR8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=BBCEfA7DxJixrqB10cWjenoWkPJz84Sldq/GTNrzF+NvIHCvEue9/9YbvXLdOJobAT4ZR1hDu
 kVY8g+yciC11c/Ts3taHHF3m0gNDooDNJcf3OJ8CEYhsZznsjLjZgBk+Uw3gVdkRcQ5HPA4v41t
 tCroklZGduSC+GAR/u53ciwUUSoBe9VWjsyQ+M4KXivapkq5i07bdOQzWR331YhiK0Ic5bloulQ
 Qh2WrFSyzUkmJX36hnM7MpZii87WJwECLDDKamZb5ncGdCewAKJ/s+MeDAyKNa+tPA35v3hCitP
 7AlcIjbCvKJqn8ROsQPXyZjIGpCT0+ryFKt7yJ0vTpGA==
X-Zone-Loop: 525fb047e29af77ae3dcdbb4755f5df989d326a2f044
x-campaign-type: default
x-transaction-id: b5b513a0-4d05-496f-937b-69371a84c029
x-swg-uid: 01-3adcb5cc-d819-47ea-b27d-02ab994657a2
X-Mailer: Sweego
Message-ID:
 <1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd68c1000403d@vates.tech>
x-swg-bid: 1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd68c1000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 5/6] CI: add a riscv64 smoke test job using the QTB console-test
Date: Tue,  3 Nov 2026 15:08:13 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=2337; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=RQCGWr5P16R9YPNSv0us0XQcZehfVnaaI+/kEvD35yE=; b=MfQzPSoqWLrsOlHEJrq99r2FUsQXeD0dtPCcCTpOKlPzxkkq+dqkn8Lh0h/ph8yipPjzrQxSZ Gd+XMe7HwtRAMERYLTOy8Ipwa2olkWjCmz1aeJf9hKzGVL2nvv74o9c
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714906892
X-purgate-ID: tlsNG-c1860d/1793714924-D574B87B-F6C70E92/0/0
X-purgate-type: clean
X-purgate-size: 2339

Add QTB console-test in CI next to the existing qemu-smoke-riscv64-gcc
job, which is left unchanged.

Add .qemu-qtb-riscv64, a template running the pytest module named by
QTB_TEST in the debian:13-riscv64-qtb container. --binaries-dir points
at the artifacts of the job, Xen from the build job. The per-test logs
are collected under qtb-logs, kept on failure and on success, and the
JUnit report is uploaded so GitLab shows per-test results.

Add qemu-smoke-qtb-riscv64-gcc job on top of it, running test_console.py:
its test boots Xen alone on one pCPU and waits for "All set up" on
Xen's console, the same string as the existing qemu-smoke-riscv64-gcc.

Both jobs use Debian's QEMU and its bundled OpenSBI.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
Changes in v3:
- Add the QTB job next to qemu-smoke-riscv64-gcc instead of replacing it,
  the drop moves to its own patch.
- Rename the template and job with "qtb".
- Run pytest and upload its JUnit report.
- Use the container from xen.git, drop ARTIFACTS_REGISTRY.
---
 automation/gitlab-ci/test.yaml | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 96127995d7..dcf75e4674 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -84,6 +84,26 @@
   tags:
     - x86_64
 
+.qemu-qtb-riscv64:
+  extends: .test-jobs-common
+  variables:
+    CONTAINER: debian:13-riscv64-qtb
+  script:
+    - python3 -m pytest
+      "automation/scripts/qtb/riscv/tests/${QTB_TEST}"
+      -p no:cacheprovider
+      --log-dir qtb-logs
+      --binaries-dir "${CI_PROJECT_DIR}/binaries"
+      --junitxml tests-junit.xml
+  artifacts:
+    paths:
+      - qtb-logs
+    reports:
+      junit: tests-junit.xml
+    when: always
+  tags:
+    - x86_64
+
 .qemu-ppc64le:
   extends: .test-jobs-common
   variables:
@@ -792,6 +812,13 @@ qemu-smoke-riscv64-gcc:
   needs:
     - debian-13-riscv64-gcc-debug
 
+qemu-smoke-qtb-riscv64-gcc:
+  extends: .qemu-qtb-riscv64
+  variables:
+    QTB_TEST: test_console.py
+  needs:
+    - debian-13-riscv64-gcc-debug
+
 qemu-smoke-ppc64le-powernv9-gcc:
   extends: .qemu-ppc64le
   script:

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:08:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:08:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469874.1678674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBy-00037K-GH; Tue, 03 Nov 2026 14:08:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469874.1678674; Tue, 03 Nov 2026 14:08:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFBy-000377-Bx; Tue, 03 Nov 2026 14:08:50 +0000
Received: by outflank-mailman (input) for mailman id 1469874;
 Tue, 03 Nov 2026 14:08:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd69c6000403d@swg.vates.tech>)
 id 1xOFBw-00034N-RB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:08:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFBv-003291-W7
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:08:48 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd69c6000403d@swg.vates.tech>)
 id 6ae9eae5-8faa-0a2a0a5109dd-0a2a4504ba4c-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:47 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1bd69c6000403d@swg.vates.tech>)
 id 6ae9eaef-b57f-0a2a45040019-b9ff1c12a8cb-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:08:47 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1bd69c6000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:08:27 +0000
Received: from leducb.home (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 03855823EE;
 Tue,  3 Nov 2026 15:08:27 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=j1bZICL7SPluilW/YkHoXNVCw65K/0Ei74AiOwZX19Y=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=jaVPC2R+r+TZNr4MvSWY7gbULNZRKTxGV5cDk1rueQL53BPCaBnngHEX1Ozd5aPe88gGtPpXs
 37j2b+IkOcAesH+Ywl+dDO7Amba4e5P5Fr/3GvmDg/2PAeBZo18HQSEAn20jipC5Y0P3qKQcX4H
 jodMM/O8MzaWpgMxCx54+9xbvRP9jr2qTmD5shsywabVl7nd+gCLjjHiLygRt0exbheSY5qkll8
 GAedPhv9ZyvSDCeNncpWbko/FnQG3pdHc6VeR//m8H5ouFnpt6agZL0f3HoJITm0D8x9DI5ecyS
 D5aAeeUPbf89rSPYyris+vTVGFr5XcqbRB0a4U7SkxQw==
X-Zone-Loop: 7ec548f74931ae4a300a4526fc43ad1e167457cb28c7
x-campaign-type: default
x-transaction-id: acc8e7b3-3707-4f70-a1d6-142039beb036
x-swg-uid: 01-58ce1733-ef9e-403b-a3bd-52986555ff4b
X-Mailer: Sweego
Message-ID:
 <1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd69c6000403d@vates.tech>
x-swg-bid: 1793714907.8631fc262581453bbf619ec5b2062170.1a1a1bd69c6000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: xen-devel@lists.xenproject.org
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alejandro Vallejo <alejandro.garciavallejo@amd.com>,
	Zhang Zheng <zhangzheng@iscas.ac.cn>
Subject: [PATCH v3 6/6] CI: drop the riscv64 expect-based smoke test
Date: Tue,  3 Nov 2026 15:08:14 +0100
In-Reply-To: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793714580; l=2576; i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id; bh=AgAAP7eNg8wo8oKqZ6F3L4DvOr5d3p8W1S0cRuVt0KE=; b=aAhW4rgBbC3fBHpnyVPtFNK4bGJuvt8icAo3oIIw8G8CTk5U79VPAcPwOnqD1uFdwY9AKkkrb 16EltjvEzFRCG1u3ZtxB/+M2V1AhGtvKQWMrKLieHOhJfRP3CHZ2aRp
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519; pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793714907175
X-purgate-ID: tlsNG-ebf023/1793714927-504DBB50-39DC11E7/0/0
X-purgate-type: clean
X-purgate-size: 2578

qemu-smoke-qtb-riscv64-gcc boots Xen alone and waits for the same
"All set up" string on Xen's console as qemu-smoke-riscv64-gcc, so the
latter is redundant.

Drop qemu-smoke-riscv64-gcc, its .qemu-riscv64 template and
automation/scripts/qemu-smoke-riscv64.sh, which has no caller left.

Kept as a separate patch so it can be deferred until the QTB job has
proven itself.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
The debian:13-riscv64 container still installs qemu-system-riscv64 and
expect for the test phase, although nothing tests in it anymore. As it
needs a rebuild, dropping them is left to a follow-up if needed.
---
Changes in v3:
- New patch, split out of v2 "CI: run the riscv64 smoke test via QTB
  framework console-test".
---
 automation/gitlab-ci/test.yaml           | 20 --------------------
 automation/scripts/qemu-smoke-riscv64.sh | 19 -------------------
 2 files changed, 39 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index dcf75e4674..13f7ddfc7b 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -71,19 +71,6 @@
   variables:
     TEST_TIMEOUT_OVERRIDE: 120
 
-.qemu-riscv64:
-  extends: .test-jobs-common
-  variables:
-    CONTAINER: debian:13-riscv64
-    LOGFILE: qemu-smoke-riscv64.log
-  artifacts:
-    paths:
-      - smoke.serial
-      - '*.log'
-    when: always
-  tags:
-    - x86_64
-
 .qemu-qtb-riscv64:
   extends: .test-jobs-common
   variables:
@@ -805,13 +792,6 @@ qemu-xtf-argo-x86_64-gcc-debug:
   needs:
     - alpine-3.24-x86_64-gcc-debug
 
-qemu-smoke-riscv64-gcc:
-  extends: .qemu-riscv64
-  script:
-    - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-riscv64-gcc-debug
-
 qemu-smoke-qtb-riscv64-gcc:
   extends: .qemu-qtb-riscv64
   variables:
diff --git a/automation/scripts/qemu-smoke-riscv64.sh b/automation/scripts/qemu-smoke-riscv64.sh
deleted file mode 100755
index c0b1082a08..0000000000
--- a/automation/scripts/qemu-smoke-riscv64.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-set -ex -o pipefail
-
-# Run the test
-rm -f smoke.serial
-
-export TEST_CMD="qemu-system-riscv64 \
-    -M virt,aia=aplic-imsic \
-    -cpu rv64,svpbmt=on \
-    -smp 1 \
-    -nographic \
-    -m 2g \
-    -kernel binaries/xen"
-
-export TEST_LOG="smoke.serial"
-export PASSED="All set up"
-
-./automation/scripts/console.exp |& sed 's/\r\+$//'

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:16:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:16:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469919.1678682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFJ2-0006SS-9I; Tue, 03 Nov 2026 14:16:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469919.1678682; Tue, 03 Nov 2026 14:16:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFJ2-0006SL-6m; Tue, 03 Nov 2026 14:16:08 +0000
Received: by outflank-mailman (input) for mailman id 1469919;
 Tue, 03 Nov 2026 14:16:07 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@swg.vates.tech>)
 id 1xOFJ1-0006S9-2k
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:16:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFJ0-00750q-FD
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:16:06 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@swg.vates.tech>)
 id 6ae9ec8e-e002-0a2a0a5209dd-0a2a450ba400-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:16:06 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@swg.vates.tech>)
 id 6ae9eca6-b7e8-0a2a450b0019-b9ff1c228ee5-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:16:06 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a1c44b87000403d.008 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 14:15:58 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id A7EE380C20;
 Tue,  3 Nov 2026 15:15:57 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=yeWa5vJScDdbzVneSr0wfdM9M8MEHAvVD0jdPPMIzTQ=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=QAmasKLEq/QAcfNPqnpHvjo2I4xtE5L5rvqbsmPFm+v+BaHyABAbvtucsPTYAs27hlWo6yAUT
 RDgxLLGo5nytzBuhP4Eb4ULnmJ8qpNf/SpS9diACdtl3wimqIgcHZowXYpdBFpZDrjAXJK3I8Pm
 Y6QNRegAXL3C5eNNTbh8qwMk9ZUNYsRFprZK0z16aOhtzjZYyxVILcMGA/wBAmAOmyxzxw2/Fjt
 Zf8l+O85PSQX+r6jMnGeCHhV2pVQhK+NFvoYl4/lK+8M1cf+/U7JB8kiap/S66ApPXc2kk+rQel
 yKD71v8vNX0joK/8BXdgPs4Ft3r9r2y6HrvHQ3XfojeQ==
X-Zone-Loop: e74429844a4fd8262ffc65dadc6e5210a10271968d79
x-campaign-type: default
x-transaction-id: 97b2185a-d887-4960-afd6-712a175d0500
x-swg-uid: 01-fbe9df10-262d-467d-909d-597e16e10164
X-Mailer: Sweego
Message-ID:
 <1793715358.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@vates.tech>
x-swg-bid: 1793715358.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 1/6] CI: add a Debian 13 riscv64 QTB container
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Oleksii Kurochko <oleksii.kurochko@gmail.com>, 
 Alejandro Vallejo <alejandro.garciavallejo@amd.com>, 
 Zhang Zheng <zhangzheng@iscas.ac.cn>
In-Reply-To: <1793714905.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d@vates.tech>
References: <1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u>
 <1793714905.8631fc262581453bbf619ec5b2062170.1a1a1bd621c000403d@vates.tech>
Date: Tue, 03 Nov 2026 15:15:52 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793715352; l=311;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=76suPJMBoluOEgv7yB3N+dLfGmMPKTY49CBjmitjPSA=;
 b=FaIyTlWUQgJENXrkjpKBptrc9go48hjKU7yhsMiUfZUfOk8bD/QxIGvGx2AAaajAYs6SHOlVM
 y75P4Xh344RB4/IRFY5Q1QexwNFndpZ+wHFc2KHNK4NkEguiHZiDF6y
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793715357854
X-purgate-ID: tlsNG-42698a/1793715366-A9CC79EA-D5AD5C76/0/0
X-purgate-type: clean
X-purgate-size: 311

On 2026-11-03 15:08 +0100, Baptiste Le Duc wrote:

The cover letter did not get threaded with the patches, sorry for the
noise. It is here:
https://lore.kernel.org/xen-devel/1793714671.8631fc262581453bbf619ec5b2062170.1a1a1b9ce9c000403d@vates.tech/T/#u

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:18:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:18:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469927.1678692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFL4-00078R-Kv; Tue, 03 Nov 2026 14:18:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469927.1678692; Tue, 03 Nov 2026 14:18:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFL4-00078K-HS; Tue, 03 Nov 2026 14:18:14 +0000
Received: by outflank-mailman (input) for mailman id 1469927;
 Tue, 03 Nov 2026 14:18:13 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOFL3-000783-2B
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:18:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFL2-007VXV-FD
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:18:12 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9ed24-8faa-0a2a0a5109dd-0a2a4509877a-0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:18:12 +0100
Received: from [74.125.224.42] (helo=mail-yx1-f42.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6ae9ed23-be1a-0a2a45090019-4a7de02acdae-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:18:12 +0100
Received: by mail-yx1-f42.google.com with SMTP id
 956f58d0204a3-676804a3a22so3411473d50.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 06:18:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793715491; cv=none;
        d=google.com; s=arc-20260327;
        b=k/xuzMYm4D90YMuzhObE/I7buHb0ZhN2PXTPX18pEHu+BeNaWPOuCFriGI6rM2ynbR
         uk/fUOPUwhFJ4/9ZMRr1ftj8zQKTD9siUCkI3EUl9Uic15lgpTcFs4IRPn6v5PvE4V/5
         xFeoTwfrbKUdn0OoxUpGApGyid+xHFw3MvY7Qvo6EPEQZ9tI1gXUQ29OxsmTtGjnFmFw
         Vkm4uUTVODzm2olGWu8cD8/7z7esA8gwL3cghxL+vhqN6Kup6b98TAh0o2NrntL8Jf14
         rjy3a2H24RvoFwtFXMd6WgpQpX/0uRLly1lNJOACocvYxKExUkdm3RthEz+MqAp8But+
         813w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=DrlFZ8OwnA0TZT2cK4MNtmqKlz1PKYoO5uN1djvDVsg=;
        fh=khySnZwG/T9OI5C1KmnFAPzmOCWObEtmu3CvtxoNID0=;
        b=UI3K4MEo9VKvIO3SMZvIbYyVbwU9hsPWi8aNZx1z02mC4rH8bfn3MrbaSQPPGfA0oA
         kgu6H3X0V312YozpH/KDLXprQzBWdQcr8pqstMP2OFNca3WXA9ErUPT9ioytOhFJrpc9
         DLeu2W6dVhDfWKRO8OvB79brCqajPTncYo1txCLuUHe7R4zPPSblFbtVaoToSM9AXbrD
         Sc80UoCZcq/B7MixeNXTuUDCgzjRJ08mlUiYpNtkXKBt/bCsdPDLsnIw9/OUe4Wyd68S
         ldwAC7ZlBH/Ji13n4M9ROUq9f+lAIW3T6CQ0tGiCdZQUHPZ4VSBfiyysGJ9H/epc5JG9
         l7MQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793715491; x=1794320291; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=DrlFZ8OwnA0TZT2cK4MNtmqKlz1PKYoO5uN1djvDVsg=;
        b=wPVHutbjaaP8vYNE+gGhDAXwMj/yKp7BFuT6Coh+n4ByksNEv58s1uwpskskV5xP7i
         fezgg+XW+vm42hqae4D60kLcV7Qma+WGKJaf7rhBwd1NO0hJFxP0lPkkh3By82+5kHIg
         Q2qN723AE6jdHRd2KROo7byxrwN20287Sx4j/cY/dtx6w/wlMwQT/lSJv+4shtUoxkbx
         B1xQk+LYskJ+0CSrFQv8TTeNqHGSiDNgj0VkEk5aM2HPwpY0B8SZfNqBt9CzcyJPxAwm
         /JS2jb+B8/FqJpjX8e5JnRT76sKp90eLY24WvoKrqZrUIxcESSYfQoSkGVJiGhZ92a5+
         u0lQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793715491; x=1794320291;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=DrlFZ8OwnA0TZT2cK4MNtmqKlz1PKYoO5uN1djvDVsg=;
        b=Ho3ZZD4itM1J3wQqj6tJl6yDUCq4ehwBr0/D0bcJ569yQlldbpNvTXN1khNZXDqobn
         2nqlDcpu8/wdUUrW/HMAVxr6ZltC0Gma6vAmbuQR+0niQWYJrKJptKYrwSSaUIJh91zz
         fVpAN20tKOuxeaTROviiIPuKBs2wRO9kOe6d++r2xi5xXTc8/+TWp2nv+oL2aT8FCS81
         WINQ8vWzJ/CP/JCsskOzU0pi2eWc9mv674xpaNPpcszaVG7eSajQLhp729cxiDYwDacU
         uLIJMPwwzjSE8qKAeM5uriSLT8jBtgZVQ9758mY7XpyBKWXUFl7Jlrej6ohQUvaLyc7d
         iC8A==
X-Forwarded-Encrypted: i=1; AKwUvBw27O0h+1erPL1KDH5TU+UmWhuQyBxD+2xw7kSfNRG4OUMM+Ik67bhOtnFkvi/SavAnOAzPiJ6fAJE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+zc1R8MQyzKX3ZAwpyhAVlNnfn+/xBXmGtfn88dCdBJF1NKsSt
	a5tr30zY0iwOxDphHgvFc70ALz5ZvkqhPvr396RAtKYcy3cZ6zMy/bxs06kXFKS3PbkTNocORFr
	CzJsVrxTI3YGeiB5GB2McxTqfeClgkWc=
X-Gm-Gg: AYBFou3+ZhL3zrUV3ByzMjEVroiOAEgDesoANt7LRq/itejqXK/cXFImBkufkuI7w7k
	GUI/sQa5J54Prts+1QRAR2kMjdcG1VD4EqICxZHGl578DGbKCsRAAAD/KLn9cLLzJT//BuSIohk
	OpKoUUJqAQ9kFbkST9vnJzKKARpB78RwROmAvp7AXPLaYoId4aHrnflou5U/COZNpiqlLA1fxfj
	mZr756hiZlAxyoOOv/H06QhcGThVA/ET8JbGBYwci/0KwIdYYSpAbhga2zwL9IhFZshDtxYtpBs
	s25yPvC66Mycfwa2csiI9RJMjsPZ0DX85sytfSMW2dmwq+o18cTCjwocQhrwuHJM/I0PLrko5Fo
	mIB0CKOPQxe2/JvCd1wmR0jddoxgX+biHcDCz
X-Received: by 2002:a05:690e:1288:b0:67a:2a60:355a with SMTP id
 956f58d0204a3-67ba50cf3f3mr9964430d50.94.1793715486001; Tue, 03 Nov 2026
 06:18:06 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu> <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
 <aunnuwhsx9ZOOXBX@redhat.com>
In-Reply-To: <aunnuwhsx9ZOOXBX@redhat.com>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Tue, 3 Nov 2026 22:17:50 +0800
X-Gm-Features: AclHuK9FwIlA9RQMifRxUKLKMCqA8pdJuRMt5xIisjyLT66i66IA7_a2r-8WMT8
Message-ID: <CAE2XoE974tDG8fd6A_SGqwwXiAAjWTF37MCGm4Qo2-DbBQxjnw@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>, 
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1793715492-FCE14034-7D42E0E5/0/0
X-purgate-type: clean
X-purgate-size: 6038

On Tue, Nov 3, 2026 at 9:55=E2=80=AFPM Daniel P. Berrang=C3=A9 <berrange@re=
dhat.com> wrote:
>
> On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
> > On Tue, Nov 3, 2026 at 9:23=E2=80=AFPM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> > >
> > > On Tue, 3 Nov 2026, Yonggang Luo wrote:
> > > > On Tue, Nov 3, 2026 at 4:16=E2=80=AFPM Daniel P. Berrang=C3=A9 <ber=
range@redhat.com> wrote:
> > > >>
> > > >> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> > > >>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> > > >>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> > > >>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo an=
d the
> > > >>>>> type_init
> > > >>>>> function that calls type_register_static(). A later change need=
s to
> > > >>>>> pass a
> > > >>>>
> > > >>>> That's the point of the macro to hide the boiler plate code.
> > > >>>>
> > > >>>>> target mask into that registration, and the macros have no para=
meter
> > > >>>>> for it.
> > > >>>>
> > > >>>> Couldn't you just change the macros to take that parameter inste=
ad of
> > > >>>> expanding it everywhere?
> > > >>>>
> > > >>>
> > > >>> Problem of macros is that they don't have default parameters, so =
you
> > > >>> need variants for everything:
> > > >>>
> > > >>> DEFINE_MACHINE
> > > >>> DEFINE_MACHINE_EXTENDED
> > > >>> DEFINE_MACHINE_WITH_INTERFACES
> > > >>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> > > >>> and now would need a new variant, with variant for other existing=
 ones.
> > > >>>
> > > >>> In the end, it's just simpler to remove this and add the boilerpl=
ate.
> > > >>> It's written once and never modified, so using a macro just save =
typing
> > > >>> those lines once.
> > > >>
> > > >> For each machine, it is only written once, but we add machines
> > > >> over time, and every time a new machine is added the code style
> > > >> is slightly different. We introduced all the variuos DEFINE_*
> > > >> macros for QOM to better ensure consistent style and usage as
> > > >> new code is added over time.
> > > >
> > > > I understand that the DEFINE_* macros are bloating because of this.
> > > > Indeed currently the only two macros used are "DEFINE_MACHINE" and
> > > > "DEFINE_MACHINE_EXTENDED"
> > >
> > > There are a few machines using some others but these are the most use=
d.
> > > That suggests maybe we should change the convenience wrappers to matc=
h
> > > what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one=
 that
> > > allows all parameters which should be rarely needed.
> > >
> > > > ; each time people want to add a new attribute, the macros is twice=
d.
> > >
> > > Not necessarily. The SECURE parameter did that to preserve previous
> > > behaviour but if you add new parameter changing all callers (which is=
 the
> > > same as expanding the macro that would also change all callers) then =
it's
> > > just a new parameter added not changing the number of DEFINE_MACHINE*
> > > wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED us=
ed
> > > less is an independent change.
> > >
> > > > And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replace=
d
> > > > with DEFINE_TYPES or TypeInfo
> > > > and be more explicit. When we used as macro parameter, we need thin=
k
> > >
> > > But that defies the purpose of hiding the QOM boiler plate as much as
> > > possible. New people are confused by QOM and it's easier for them to =
look
> > > up documentation on the DEFINE_MACHINE* macros to see what parameter =
is
> > > what and not care about how it's stored in QOM TypeInfo or what is th=
at
> > > at all.
> > >
> > > > what's that parameter means, and for
> > > > TypeInfo, we can directly know what that member is about(because we
> > > > are assigned with the member name).
> > >
> > > The parameter also has a name and documentation so it's not simpler t=
o
> > > look up TypeInfo than look at the macro definition or docs. In fact i=
t's
> > > harder to guess from TypeInfo as then you also need to get into QOM.
> > >
> > > > That's why I suggest keeping a single DEFINE_MACHINE, just like
> > > > DEFINE_TYPES; as they are the most
> > > > used macros(and simple enough), and won't suffer from changes much.
> > >
> > > That means exposing all the boiler plate for all machines other than =
the
> > > simplest case. I think it would be better to keep DEFINE_MACHINE_EXTE=
NDED
> > > but maybe rethink the existing wrappers and drop unused ones and mayb=
e add
> > > new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still k=
eep
> > > the boiler plate hidden.
> >
> > Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE=
_EXTENDED
> > and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
> > "targets" or "arch_mask" parameter.
>
> Given that we don't need to do general per-arch type filtering in
> QOM, we could just move 'is_available' out of TypeInfo, and into the

We do need general per-arch type filtering, not only the Machine,
Device also suffer from
this. So are the CPU QOM objects. Here the MR needs that
https://lore.kernel.org/qemu-devel/20261031164009.2048-1-luoyonggang@gmail.=
com/

And the add targets/arch_mask to
DEFINE_MACHINE_EXTENDED/DEFINE_MACHINE is for removing 'is_available'
latter, as is_available has restriction that can not works well for
target_heterogeneous


> MachineClass, so it is a regular class level property, which can be
> set in the class_init methods, and thus avoid any changes to the
> DEFINE_MACHINE macros.
>
> With regards,
> Daniel
> --
> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
> |: https://libvirt.org          ~~          https://entangle-photo.org :|
> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|
>


--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469938.1678714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001Zg-CK; Tue, 03 Nov 2026 14:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469938.1678714; Tue, 03 Nov 2026 14:28:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001ZF-8Y; Tue, 03 Nov 2026 14:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1469938;
 Tue, 03 Nov 2026 14:23:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQO-0000wq-02
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:23:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQN-00EbcA-D6
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:23:43 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee5d-bab6-0a2a0a5309dd-0a2a45019db4-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:42 +0100
Received: from [95.215.58.241] (helo=mta1.migadu.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee6d-5984-0a2a45010019-5fd73af14f1c-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:41 +0100
Received: by smtp.migadu.com with ESMTPS id ccd15e2f84fc0457;
 Tue, 03 Nov 2026 14:23:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=xk5kInH8so8Y/14bnNg52lPes1DhR3UngTZMTq5ajyA=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715821; v=1; x=1794320621;
 b=hkTQuyP5vo3vVZx6OR7TTxPjqnXEcEY18hgrz9jeWF+0kXUU/3VE02ZBPch4jhwbFBw/LKp5
 eONwIshCmqGxiRLwiEe2EoNJBxhGibUaAeR5FNCYIMAEnwyf87VupmFnKs2p/jRqhUlIsvRZ4/e
 4LNaSpebliTJBK6/Qv/L/KPU=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: ccd15e2f84fc0457
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 06/18] hw/usb/hcd-dwc2: Add an auto-hub property and leave it off
Date: Tue,  3 Nov 2026 08:23:20 -0600
Message-ID: <20261103142327.1348025-2-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-7-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-7-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793715822-BEE60757-89C7D8F9/0/0
X-purgate-type: clean
X-purgate-size: 433

On Mon, Nov 02, 2026 at 09:22:11AM +0000, Jamin Lin wrote:
> Add auto-hub and leave it off. raspi has no versioned machine type, so
> compat cannot reach it. bcm2835_peripherals turns the property on, and
> raspi keeps the hub it has today.

raspi3b and raspi4b with usb-kbd and usb-mouse still put both behind
the hub on port 1.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469944.1678726 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001jp-UT; Tue, 03 Nov 2026 14:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469944.1678726; Tue, 03 Nov 2026 14:28:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001i5-NW; Tue, 03 Nov 2026 14:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1469944;
 Tue, 03 Nov 2026 14:23:55 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQZ-0000yV-5i
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:23:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQY-007WID-If
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:23:54 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee6e-8faa-0a2a0a5109dd-0a2a4505840a-46
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:54 +0100
Received: from [95.215.58.20] (helo=mta1.migadu.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee79-4cb1-0a2a45050019-5fd73a14567b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:54 +0100
Received: by smtp.migadu.com with ESMTPS id 90e5dc68535ae2f0;
 Tue, 03 Nov 2026 14:23:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=thSjGA6wOead7YqHEZ5eHt15E3jrEy1d9zA7U1Xp35o=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715833; v=1; x=1794320633;
 b=RNDu8mGY9N8V/vcDfiQw43S17UBm1hVMRXEikMKU8MPZOZ174x5wrWYjoe9YNEWe3z0dimQ5
 3oaYM+g3V+52R/6TvA0JCBm8fs1Z2Vj+3RBDVW02oJ7782WOSodPJMr1qxGzQLFzS+/7tiwX5kU
 lPu7RGHr5dkIWWAiYAUZ5n5I=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 90e5dc68535ae2f0
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic hub change
Date: Tue,  3 Nov 2026 08:23:22 -0600
Message-ID: <20261103142327.1348025-4-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793715834-F60AA2A1-C754BCFE/0/0
X-purgate-type: clean
X-purgate-size: 670

Hi Jamin,

On Mon, Nov 02, 2026 at 09:22:17AM +0000, Jamin Lin wrote:
> +A machine type older than 11.2 plugs a virtual USB hub into the last
> +free port, so that more devices fit. A newer one does not, and a
> +device that finds no free port fails.

With the series going into 12.0 this becomes "older than 12.0".

It would also help to say how to get a hub back. piix3-usb-uhci has two
ports, so -usb with usb-kbd, usb-mouse and usb-tablet already fails on
the newest machine type (pc-i440fx-11.2 on v8). Either of these fixes
it here:

  -device usb-hub                     (ahead of the other devices)
  -global piix3-usb-uhci.auto-hub=on

Junjie


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469946.1678730 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVO-0001o5-5t; Tue, 03 Nov 2026 14:28:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469946.1678730; Tue, 03 Nov 2026 14:28:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001mf-U8; Tue, 03 Nov 2026 14:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1469946;
 Tue, 03 Nov 2026 14:24:01 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQf-0000zL-43
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:24:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQe-0076YX-Gv
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:24:00 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee6e-2eae-0a2a0a5409dd-0a2a450cc714-32
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:00 +0100
Received: from [91.218.175.41] (helo=mta0.migadu.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee80-f479-0a2a450c0019-5bdaaf29e534-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:00 +0100
Received: by smtp.migadu.com with ESMTPS id ac8235e10c04efea;
 Tue, 03 Nov 2026 14:23:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=a/ZoT8xtlAOieDh+8krvJHnDyCHIqIIaNoy1fZC+ruw=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715839; v=1; x=1794320639;
 b=CAvV7b/rrxvycryXIaoXNdfpugXKeMlI6eyKtqGmAyuW0I+3KZOiTsU0vFebTZedQDTkp7QM
 oPE2Vkxj9I7eh/vcPARvDyb7XnwFy1tGGKHwOEfk0XVGFb6dvt/onav1FkjwToleP2dF/GzrkTB
 mbfUv9cEy4dFirriOLzCe7OQ=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: ac8235e10c04efea
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 11/18] hw/usb/redirect-server: Add a usbredir server device
Date: Tue,  3 Nov 2026 08:23:23 -0600
Message-ID: <20261103142327.1348025-5-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-12-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-12-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793715840-774D7A5B-73C5B458/0/0
X-purgate-type: clean
X-purgate-size: 510

On Mon, Nov 02, 2026 at 09:22:18AM +0000, Jamin Lin wrote:
> Add "x-usb-redir-server". It exports a USB device from this QEMU to a
> USB host in another QEMU, using the usbredir protocol. The other side is
> the existing "usb-redir" device.

In an --enable-modules build, -device x-usb-redir-server loads
hw-usb-redirect.so, and the device comes up with a usb-kbd behind it on
ast2600-evb and ast1030-evb.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469948.1678739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVO-0001sN-ID; Tue, 03 Nov 2026 14:28:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469948.1678739; Tue, 03 Nov 2026 14:28:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVO-0001pn-5K; Tue, 03 Nov 2026 14:28:54 +0000
Received: by outflank-mailman (input) for mailman id 1469948;
 Tue, 03 Nov 2026 14:24:04 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQi-00010c-4g
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:24:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQh-008qVT-Ha
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:24:03 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee7c-e002-0a2a0a5209dd-0a2a45018e2e-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:03 +0100
Received: from [91.218.175.47] (helo=mta0.migadu.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee83-5984-0a2a45010019-5bdaaf2f5595-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:03 +0100
Received: by smtp.migadu.com with ESMTPS id 49fd60f0c25b3ce4;
 Tue, 03 Nov 2026 14:24:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=uxAVAj5I4ZNhE9FDm1hcjjRGig4oSJWX7ANkweiZjow=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715843; v=1; x=1794320643;
 b=kdfbgDc8j5bL3MlHRDhlp49E5inOEdfwt8mNyHiSmdI5cCjoZG07J6YXwAvK8EkPXtQLC9sv
 2uxLnI/pamFlQXoy/C/8ZC4OXIiB/01dpoqL097a5P5BLqrJH4nQApNHiO2QRijsQSpfx+UWpv4
 6c94CMtMxR5No8L0X2d4ct98=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 49fd60f0c25b3ce4
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 12/18] hw/usb/redirect-server: Connect usbredirparser to a chardev
Date: Tue,  3 Nov 2026 08:23:24 -0600
Message-ID: <20261103142327.1348025-6-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-13-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-13-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793715843-1E07B757-20F7A7A7/0/0
X-purgate-type: clean
X-purgate-size: 696

On Mon, Nov 02, 2026 at 09:22:20AM +0000, Jamin Lin wrote:
> The chardev handling follows hw/usb/redirect.c: take no data before the
> parser exists, do not write to a closed backend, do not re-enter the
> writer, and let a close that is still queued finish before a new
> connection opens.

Exercised the close/reopen path with usb-storage exported: three
usb-redir clients in a row on one server each get hello and
device_connect. Killing a client with SIGKILL during a direct-I/O dd
loop leaves the server running (ASan build), and a fresh client gets
sda back and reads what it wrote.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469950.1678749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVP-00027J-3H; Tue, 03 Nov 2026 14:28:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469950.1678749; Tue, 03 Nov 2026 14:28:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVO-00023U-Ii; Tue, 03 Nov 2026 14:28:54 +0000
Received: by outflank-mailman (input) for mailman id 1469950;
 Tue, 03 Nov 2026 14:24:07 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQl-00011H-Mm
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:24:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQl-008qVT-2w
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:24:07 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee84-e002-0a2a0a5209dd-0a2a4508ecfe-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:07 +0100
Received: from [91.218.175.51] (helo=mta0.migadu.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee86-f659-0a2a45080019-5bdaaf3387f0-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:06 +0100
Received: by smtp.migadu.com with ESMTPS id ec71b1ccc94d0644;
 Tue, 03 Nov 2026 14:24:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=QRv0PGJzuMeUy1tGthTU9o4n7HMlfygesRnl9JM8w94=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715846; v=1; x=1794320646;
 b=dY1EC/1YYGTeYStO1e47NCUu1FmoRkj5M8sm2+38jieuaaMbSCLm+HWrEtETz2YjicxvkpMh
 rkGBxEPD07F4dskTJpx40R3kcjsh+2VPZ4iI7gshjzgCdodzcI4ikHlLspMZWYO/DVif0u+mH0i
 2JAnddUi73T699A06WxGbsD4=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: ec71b1ccc94d0644
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 14/18] hw/usb/redirect-server: Implement control transfers
Date: Tue,  3 Nov 2026 08:23:25 -0600
Message-ID: <20261103142327.1348025-7-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-15-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-15-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793715846-CE94287B-426F742E/0/0
X-purgate-type: clean
X-purgate-size: 784

Hi Jamin,

On Mon, Nov 02, 2026 at 09:22:23AM +0000, Jamin Lin wrote:
> +    if (!s->host_connected || !device || !device->attached) {
> +        return usb_redir_ioerror;
> +    }

The device stays in USB_STATE_ATTACHED until the announce BH resets it,
so a control_packet in the same read as hello passes this check and
hits the USB_STATE_DEFAULT assert in usb_handle_packet(). Checking
device_announced here would cover it.

For whenever you respin: stop_transfers() on a reset drops packets the
client may still cancel; usbredirhost answers them first.

Tested: usb-storage exported from ast2600-evb enumerates behind
qemu-xhci and usb-ehci, usb-audio behind qemu-xhci, and each
SET_INTERFACE alt 1 is followed by an ep_info with the iso OUT endpoint.

Junjie


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469939.1678709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001Wv-3g; Tue, 03 Nov 2026 14:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469939.1678709; Tue, 03 Nov 2026 14:28:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001Wl-0L; Tue, 03 Nov 2026 14:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1469939;
 Tue, 03 Nov 2026 14:23:45 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQN-0000wl-JR
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:23:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQN-00DVv9-01
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:23:43 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee68-2eae-0a2a0a5409dd-0a2a450888e4-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:42 +0100
Received: from [95.215.58.232] (helo=mta1.migadu.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee69-f659-0a2a45080019-5fd73ae87d17-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:37 +0100
Received: by smtp.migadu.com with ESMTPS id 8b8233e03e8ecb06;
 Tue, 03 Nov 2026 14:23:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=NTV+1o9uyf+zEu0ODQ9KkP1B/rZrf/y6VMKSqc5Ax4I=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715817; v=1; x=1794320617;
 b=QboAiju9IWD/dscQhRzlARGmJXJd9PiEjLOWQn6FfJRqb52IMvX2e/vKlawpZcaFMXneOaEU
 qMcMhIhexIJQNyAULgH6wDkf3U/JYkBd4DZanIIw96ieWysxvydi0uWJTqLBv1hFImBk43k0Ia2
 iZ0+2WGH8eldQ2b43IugzeMo=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 8b8233e03e8ecb06
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and leave it off
Date: Tue,  3 Nov 2026 08:23:19 -0600
Message-ID: <20261103142327.1348025-1-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793715822-CE54487B-AD69631F/0/0
X-purgate-type: clean
X-purgate-size: 851

Hi Jamin,

On Mon, Nov 02, 2026 at 09:22:05AM +0000, Jamin Lin wrote:
> Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older
> machine type keeps the hub it has today and a guest saved by an older
> QEMU still loads.

Reran the migration check from v7: with pc-q35-11.1, a guest saved
without the series loads on v8 with the hub in place, for qemu-xhci
with four HID devices and for q35 -usb with six.

But this missed the 11.2 soft freeze, so in 12.0 pc-q35-11.2 is an old
machine type too, and hw_compat_11_1 (my suggestion on v7) doesn't
cover it. Saved with pc-q35-11.2 on master, both cases fail on v8:

  Unknown section or instance '0000:00:01.0/4/usb-hub' 0
  Unknown section or instance '0000:00:1d.7/6/usb-hub' 0

The entries from 02-05 want hw_compat_11_2 once the 12.0 machine types
are in.

Junjie


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469952.1678752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVP-00029e-87; Tue, 03 Nov 2026 14:28:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469952.1678752; Tue, 03 Nov 2026 14:28:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVO-00028n-SA; Tue, 03 Nov 2026 14:28:54 +0000
Received: by outflank-mailman (input) for mailman id 1469952;
 Tue, 03 Nov 2026 14:24:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQt-00011z-Or
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:24:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQt-00Ebip-5N
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:24:15 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee84-bab6-0a2a0a5309dd-0a2a450c8302-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:15 +0100
Received: from [95.215.58.77] (helo=mta1.migadu.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee8d-f479-0a2a450c0019-5fd73a4d5e4e-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:14 +0100
Received: by smtp.migadu.com with ESMTPS id 58be1cdf7a96866c;
 Tue, 03 Nov 2026 14:24:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=VdD29gcIkIgsrfCvVkl1tBfL/QQjL8PuYp/i7dQ5rKk=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715853; v=1; x=1794320653;
 b=ljiM0iiOSQmx5cUgdi8Tkz/hmFoFxmm/uqVRpGAf3lQknlaBFinwo6uQe6VODPV+0HVsfInY
 diyhkGz8LqIRqnpL2yVYtpGhH4ys/UQSX5kZ2oSHE0WGWx7lBnVV9EG5uyStjHYqhVO0tTCyoc5
 BxyZNWrM8OIF/4DuO/XyEAiw=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 58be1cdf7a96866c
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 15/18] hw/usb/redirect-server: Implement bulk and interrupt transfers
Date: Tue,  3 Nov 2026 08:23:26 -0600
Message-ID: <20261103142327.1348025-8-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-16-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-16-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793715854-76CDBA5B-C1DC344A/0/0
X-purgate-type: clean
X-purgate-size: 633

On Mon, Nov 02, 2026 at 09:22:24AM +0000, Jamin Lin wrote:
> Send bulk and interrupt packets to the device and return the result to
> the host. Each one is a request and an answer, so they reuse the packet
> tracking and the NAK handling added for control transfers.

The OUT length problem from v7 is gone. usb-storage exported from
ast2600-evb, Debian guest on the other side: sda shows up behind both
qemu-xhci and usb-ehci, no resets after enumeration, and a 1 MiB
direct write/read compares equal. Only bulk was exercised.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469940.1678721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001fG-MN; Tue, 03 Nov 2026 14:28:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469940.1678721; Tue, 03 Nov 2026 14:28:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVN-0001eh-HI; Tue, 03 Nov 2026 14:28:53 +0000
Received: by outflank-mailman (input) for mailman id 1469940;
 Tue, 03 Nov 2026 14:23:46 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFQQ-0000x5-0h
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:23:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFQP-008qRj-DI
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:23:45 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee5e-e002-0a2a0a5209dd-0a2a4509b40a-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:45 +0100
Received: from [95.215.58.3] (helo=mta1.migadu.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee70-be1a-0a2a45090019-5fd73a036aaa-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:23:45 +0100
Received: by smtp.migadu.com with ESMTPS id 8d5e30092c84e0cb;
 Tue, 03 Nov 2026 14:23:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=TnIL01EYzJL8JJTpVq6O/937dbzj+ZPigqvXodpgbHc=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715824; v=1; x=1794320624;
 b=G24u1cdW1aRdOwL/H0En74GiM9tv+4Yj1xDV1bhmhYVYzhaU8DCgTXcVAwiUY/0e/5y2MhDV
 OdT8F76pyaT5awoya3ciaWSL21dwcNd17Sk+zHd6lj0ZnQDFRC4NY68lskHMtL8RleJPkn5Nu36
 R6NM9Z12QOuKDifLlX0qWmH4=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 8d5e30092c84e0cb
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 09/18] hw/arm/npcm7xx: Keep the automatic hub
Date: Tue,  3 Nov 2026 08:23:21 -0600
Message-ID: <20261103142327.1348025-3-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-10-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793715825-FD26A034-018C6EB2/0/0
X-purgate-type: clean
X-purgate-size: 424

On Mon, Nov 02, 2026 at 09:22:15AM +0000, Jamin Lin wrote:
> npcm7xx has no versioned machine type, so compat cannot reach it. Turn
> the property on here instead. The companion shares the EHCI bus, so
> the EHCI carries the property.

Checked quanta-gsj and npcm750-evb: a second HID device still fits,
through the hub.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:28:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:28:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1469954.1678755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVP-0002Jf-Hg; Tue, 03 Nov 2026 14:28:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1469954.1678755; Tue, 03 Nov 2026 14:28:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFVP-0002F4-A9; Tue, 03 Nov 2026 14:28:55 +0000
Received: by outflank-mailman (input) for mailman id 1469954;
 Tue, 03 Nov 2026 14:24:23 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xOFR1-00012X-49
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:24:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFR0-00Ebmi-HC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:24:22 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee94-bab6-0a2a0a5309dd-0a2a4505c524-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:22 +0100
Received: from [95.215.58.91] (helo=mta1.migadu.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6ae9ee96-4cb1-0a2a45050019-5fd73a5bcac5-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:24:22 +0100
Received: by smtp.migadu.com with ESMTPS id 5b316335c9d00bc3;
 Tue, 03 Nov 2026 14:24:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=dYbGEk+OxE1iCeEfZYz8a9H/YzpNF62CSNH/K1fJ+ps=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793715862; v=1; x=1794320662;
 b=cQXafJ3uwH0TreaSD1hMXwnWUzoRbM7TelnyM1q8RwJmcpvECZdsV/E/1wCDafoXIWHR+miE
 ziz0DJYb/trcAJQan+kDz8W9becXOMHdL5TweSANpv2KTVWQqYqu2LtW/TUYZDCArLfacLNvaXy
 gNoTQNAZ3K+1yCIbrRXNbtx8=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 5b316335c9d00bc3
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 17/18] hw/usb/redirect-server: Implement isochronous OUT transfers
Date: Tue,  3 Nov 2026 08:23:27 -0600
Message-ID: <20261103142327.1348025-9-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261102092201.1729245-18-jamin_lin@aspeedtech.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-18-jamin_lin@aspeedtech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793715862-247132A1-A637A2B6/0/0
X-purgate-type: clean
X-purgate-size: 626

On Mon, Nov 02, 2026 at 09:22:27AM +0000, Jamin Lin wrote:
> Implement the three for an OUT endpoint. Endpoint 0 is control, so
> refuse it. The host sends a packet for every OUT transfer. It sends
> nothing for an IN transfer, so refuse an IN endpoint with a stall.

usb-audio exported from ast2600-evb (ASan build), Debian guest behind
qemu-xhci: a 2 s aplay at 48 kHz stereo now completes with 1995 iso
packets, all status 0, then stop_iso_stream; no disconnect, no ASan
report. The IN refusal path was not exercised.

Reviewed-by: Junjie Cao <junjie.cao@linux.dev>
Tested-by: Junjie Cao <junjie.cao@linux.dev>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470042.1678820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnF-00022i-5n; Tue, 03 Nov 2026 14:47:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470042.1678820; Tue, 03 Nov 2026 14:47:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-00021I-U0; Tue, 03 Nov 2026 14:47:20 +0000
Received: by outflank-mailman (input) for mailman id 1470042;
 Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnD-0001aS-3p
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnC-007AP4-Gf
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-26
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:15 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=TCRIKeatKyuN9IB1wiVPqY4IJZr0EFwM9Xqzi+kst9ca+IfN1/hEukzvlXfT7KbiXPvM0RtXMNgBYrPrR1im5fObxvVx7bDMA3j35AUALhht2gJ5ArT1x05SRaxltITFka8AHqLl3iqM9YJv24oIuy6yd+GFkYlNVx17+mTHx7TL25EtVkHKO1hxNO5xVS0XvXGuPjiykjdPjKiM9PoAlaF1Y+b0bhl5DljUXbwej7F7uR5beAQzze8GIiV0omY7DuxGpy0Mm4XfD5WDFG7WrVqfy/I8caf8uEbCp7AxV4sGVN5XpTSrhbRkmRcVTjADQm0XVciJS6k4kLS8xjfIGQ==
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=yPm0M5mnRFvlFj4kydNVAowcnMoZ8tfE4/n++5enmuE=;
 b=DiA5hR71b/qVpu9Pwg6dOl6EJxLJ2hobRWOiLYcPSouTWJUPx6isIK9UKf4/tTr32p/pmxpcfGprERD82P0uOH9uCknGtfbtoLndWNx6NbSm8tsfg/wPReTuNWbkhol4aqd5iVeHwwKVl5Ful0qOKgpmWAYaxTxslwZB8r87vdhsyNJsQ3Oo783eMI6M6hGIMQkpzVRoMPGuW44OCchI2HD7YhVDxwNNZYAY7NQ3DYrTxIZXxYlcyH6rafY8MBGDLIRofD4IcJGA+GIOk3ofNbOpbNDrzKSMvv3xaGO3fZHBfEErMexV8JLsy4hrkuAxXXFMckXHnw2BMgE28XuMpw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yPm0M5mnRFvlFj4kydNVAowcnMoZ8tfE4/n++5enmuE=;
 b=rPgwfh3YyxnS0wm4VCt3RXAlnSga6Tka3pDD1Ry3UOoVVTH8ca7wy4lCZ5vdc587CgwLifFhVp7k8GZwxzJGjqm/xqHN20RRX1yDI5495G0hX1KF5x5BTLCc+oija++M9SKJpCur4OwQMKlXSJ9PxHH3tBH2/WFeycf4o3YWS6MYzxHLigNTKvjl+0Mx7VvhnzSPDt4dnG5rwXcPm3EX1UyZAvL6bx21dsEH3yDyFZQsgVuDuU3d89QamNbjOOakzsTXh3TV9871odpExlFr/VfSV/o0SDUGoxP68ydyEzc7MaGiQQ5iz3Cgf1cp9uTj2VsKjrkn+l/qZyXmaGz4Zw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v15 5/6] tools/xl/libxl: wire up SCMI SMC multi-agent
 configuration
Thread-Topic: [PATCH v15 5/6] tools/xl/libxl: wire up SCMI SMC multi-agent
 configuration
Thread-Index: AQHda6I2WasGCLIzTU+KHfbMDC2WEQ==
Date: Tue, 3 Nov 2026 14:47:14 +0000
Message-ID:
 <09f973d07ff6505d22c4f763c7059a68b0668e7b.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 0dcbab71-42ff-4d26-5f40-08df39b959e0
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|6133799003|18002099003|22082099003|261102123227099003|56012099006|10067099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261022075727099003|11063799006|38070700021|261028144727099003|261026121527099003|261026140227099003;
x-microsoft-antispam-message-info:
 Vh/9XRCb02hIOx7v0UL7mqLQKi0LEms1iWmnthStKeJ+qqGxzUsTaX/Axu4eyvNSUVZJUupFnexPfc+90VhoqSfXA0THLRq7efVBQLdZy2OTYNRiQ3E8f6FzqlwX1BOTRlB6aqrc5sfKJevQuoERX1tOtio57txXM73v/6TDM0GY/DN/u6tr2tPS7oF1bAIare8++K9P5BXSM6PnyBRUmBwOaIkOZKDqdzCU9hleNsjfn2d541hhTKXQQXM2LBigiCDfgsjG64BfF1kD506mYIVqmmY5iJiNCBQ0XJF2AFtD4ienIq6fVO8phQ4dLi8nUpS5SlHyTkNPjDMIovrDA8UxELoJ4liAXhI6Mwhi4ehl3VuLDsJo6xAhibUsfAyjVmNghJfx5dqldhADbDDmW7HgwxOOOktOX5JB6eBiRnm65cqHUEy5r9/CVjT0n8YpQ5IG8G3OgmlEInGJiaLrZe/ojxRD3z6NrasJi8Zif1UAS/CAzt9Cl3oa08zhx3V46UBYNawMQH0fzrvKEvzBl6NleX2U8J3wabQLLkx9BqiPrq6t02pgo5qvAFuwGDjQ/xrgPmdLSavHT38c29JJN+3Dkmff4YS/IXZVwfBxCL8Hgye0DoTsiTrERBsPaFTaUFM+kqcjyt8qrOMfnxXieRKbOtGhbGfV4y325wXGMRBbcmxzRTLx87ftsp8R794c7veiH0WoDEiaoFEaJawMZGCN8xEKCYi3eUq+ACLY3xg=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(6133799003)(18002099003)(22082099003)(261102123227099003)(56012099006)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261022075727099003)(11063799006)(38070700021)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?TGVVWTdaVmR0MUJWeHdsckJnVnViRnRLb25mdzBjUm5OM0Vpb2hWUDFabVh6?=
 =?utf-8?B?MGJGT0JHb2NHSHBqbUlYdnBFV0xVTkg3V0ZvNVpudEQ0VjdUVDVVR1FOYmFM?=
 =?utf-8?B?MFYyMXhlNkgrZEJlTEU0VTVPcXBhYmRmOWFlcFhqSjlaTXVtZUgrKzg0Snla?=
 =?utf-8?B?bmhFWjhTckx0OFZJeDdIdUxReTVTVVg5V2VTTHhlZ2tmbGRudmt0bG1ERHg1?=
 =?utf-8?B?WHIwS3NQL0NIVm9tL1BUekM3WHR6Uy9uOGY3aWJnc0c0b2JWUVNJYm1jOE53?=
 =?utf-8?B?bUdLSFRXT3RXUFYvOXRTVVJWVVlwTDZLTENiQm5LMUd6QUtqWUtnUldkY2tC?=
 =?utf-8?B?OENCeHd0LzFBK3hkQjJGZDEzSlAyREhrYjRtaHR3T2ZEMXpUYzlRRDl0K3pn?=
 =?utf-8?B?QURycHRYRUhFNi9OMFBJSnFNeVZYWVhEV3BqY3VtTXJuRjhkOGxnSW5BL0w5?=
 =?utf-8?B?QXk5d21KNjBCd2NGMVpUV2FxdUNOUVNsRXErM3ZHcjdGSG5iSUdQYS9QM3Rw?=
 =?utf-8?B?TUVpa1gzVU11Y2hZRXlBY2FFU2RrMGU0bGNoa0xYbkJIWHVRTXQ2QXh0ZGFy?=
 =?utf-8?B?YmhKSi8zSlI5NENXOGdMc3UrcDRHQTlJV2M5V25uTmxTZWlxNzl3bWU1R0hI?=
 =?utf-8?B?eVBFUnpzWjdWcFBiVmVSTG0zd1JlVG1oN2lmVGtOdCtqOWhDa2t2TGxabkVH?=
 =?utf-8?B?QkhZSW1GODRtV3Evc3piaFF2a2l3VDl6d0M2U2NMeWJlRlpmQnFhWWhtSXBw?=
 =?utf-8?B?OHdsdjlZYmdnY3ZHV2tmZnhVaXZiV21pY0FXMTVpaUVJeFJaYjkwQjZmT2lZ?=
 =?utf-8?B?dW4vd1Y0WUNSeEZibUhiK0dXZU92b1Y1ZElDTVVscjdGM0JIa2lRcjZFL3py?=
 =?utf-8?B?UWgwditUZld6M0w4U0pybTg5SXJCTDZIKzNqOGRJSEEwTUY2WWNpVmo3bWdv?=
 =?utf-8?B?a3p0ZG1IZzNORUlWcHRlc2h3MWRsNGp4endGbXlVOFZ2cjlKa3BJZytNUk9L?=
 =?utf-8?B?TXg5cVJXTURGa21OSmZiSEN4OHNUS3IvOTdlWXhBcG9DZ2xBRGRWS201SjRu?=
 =?utf-8?B?L1o2c1p1Yy9OWGQ2WCtlUTVyUDUxNHB2Q3I5Nm5NdUJ1WmZQMVhUand0VVZm?=
 =?utf-8?B?TWJBMEdKd05GQ1N1T0xmWHNRdWYxbHYwY3o5WjN6NVJ1c3RZRzVRa3pWYUww?=
 =?utf-8?B?NHI3eExaL2dSZ1RjelUxZGNKWWxZaENMNkE0RmtOTVE4b0VnSkxCQkJXRFk1?=
 =?utf-8?B?Q0gvMm1HZUxZeUJpT3JBeC9kK3l4Mm9tcTJWTUNCaTJaSjNaWWFTWFB5YkJi?=
 =?utf-8?B?ZldWOThpSHVSN2FDMGx5a3V6SjFyS0pUSDVmR2ZHVjk4WGxML25ENG5CWTlI?=
 =?utf-8?B?VElUTUhxWCtzS04wRmtNMnZqUk5XMitodmdFUytyRXhOZEZVZlh3bWFpK0JV?=
 =?utf-8?B?NlVrVTBjM3Z5KzN6UmR2RXJPM0xaWEVUT3lZY0xCaUhtZzk2UWdjSHpSRmlO?=
 =?utf-8?B?a3ZrT3NvdTFpNDdWblBGYmNQc0RvMktyMHRJV0wxazRreW14ZDI0c1lGOFN4?=
 =?utf-8?B?RTl2RGFBTzUzOTJ1RDVna0Yxc29SZFlHVFlyQnYvUU5rTVFtTHN1ZlhXOEFJ?=
 =?utf-8?B?dGt1cmE0cWNpMGhjSW5wTXdML0l1THpIUmZnZXluM01GcEhUc1RKSVphaHB4?=
 =?utf-8?B?NkJiMUFyQ3dHbVkzNmR5YU1KSFNwMFdFeXZjdlpVYUVXNjE1cCtnL1czakRm?=
 =?utf-8?B?Q0VVSEYxVlRQV0hxU21aaTlYTCs5SGc4Umw4ZHJiajY3QzNzc1ozWXRjdlNv?=
 =?utf-8?B?TzdiRXNOQmxwTTFLMEF3bW5XOEZJM1hrb2pUQVozbk1UZFRvZVNValdjeUdz?=
 =?utf-8?B?SVdCUjFwU3ArWFJMN1pOb3d1NzY4cTZ3ZUlIVHVBcWRuZjN0cEZncUhHUi9I?=
 =?utf-8?B?NFd5U0hrM1paTDRtYWhUNFluYnp2OGNxajBIRkM5ZlBJbG11QnMxM1hkWUpa?=
 =?utf-8?B?cWFpOW9zVHg3enA2bUxQYTNJQzNCcFU3Y0RIbTRZOGNXc0w2OHJLamZkUk1j?=
 =?utf-8?B?NHltMjFvNFNnQWg1R2pGd1FrNlFoRUowdVpQK3pxeTlNLy9RSXA3MWFIMlla?=
 =?utf-8?B?SlhJUkVvYm5USWtEekdBc2FISVVnaUsyQnltUUxFSU1UWS84REpDaWJtQTJq?=
 =?utf-8?B?Z0haTFBQTzByRTlGTHlybzEvdTR5T3R4dUhOaG5sYUFBSjg4NmM1VXpRMENm?=
 =?utf-8?B?amhSdHJVU3FIQW9DUm4vc2ZWdGd2L1hWdHVJYlgxbklaanFFODA4bUNhN08r?=
 =?utf-8?B?aUhUeUttU0JyNFYvSXlyWlBsS2hLaUE4aWlrTkVrVFpUOXBNVFRrR1Axcm1Z?=
 =?utf-8?Q?dpmSCJY26KE6eqc0=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0dcbab71-42ff-4d26-5f40-08df39b959e0
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:14.1248
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 2wyaWD7tZZmrhjyqG8nWIYjhntg1I53wCj4wqOrEWzW1CnV9OuXeHQPruSW0Gz2U3MvBP0vhF+JmMlQ7pqmgT5d7I8j2NzVJ1DB8htKT1GY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717238-1E27A757-3679974A/0/0
X-purgate-type: clean
X-purgate-size: 9838

UGx1bWIgdGhlIFNDTUkgU01DIG11bHRpLWFnZW50IHR5cGUgdGhyb3VnaCB0aGUgdG9vbHN0YWNr
Og0KDQotIEV4dGVuZCBsaWJ4bF9hcm1fc2NpX3R5cGUgZW51bWVyYXRpb24gd2l0aCBzY21pX3Nt
Y19tdWx0aWFnZW50ICh2YWx1ZSAyKQ0KLSBBZGQgYWdlbnRfaWQgZmllbGQgdG8gbGlieGxfYXJt
X3NjaSBzdHJ1Y3R1cmUgZm9yIHBlci1kb21haW4gYWdlbnQgYXNzaWdubWVudA0KLSBVcGRhdGUg
bGlieGxfYXJtLmMgdG8gdHJhbnNsYXRlIGxpYnhsIGNvbmZpZyB0byBYRU5fRE9NQ1RMX0NPTkZJ
R19BUk1fU0NJX1NDTUlfU01DX01BDQogIGFuZCBwYXNzIGFnZW50X2lkIHRvIHRoZSBoeXBlcnZp
c29yIHZpYSB4ZW5fZG9tY3RsX2NyZWF0ZWRvbWFpbg0KLSBBZGQgeGwuY2ZnIHBhcnNpbmcgZm9y
IGFybV9zY2k9InR5cGU9c2NtaV9zbWNfbXVsdGlhZ2VudCxhZ2VudF9pZD1OIg0KLSBEb2N1bWVu
dCB0aGUgbmV3IHhsLmNmZyBvcHRpb25zIGluIHhsLmNmZy41LnBvZC5pbg0KDQpUaGlzIGNvbXBs
ZXRlcyB0aGUgdXNlcnNwYWNlIHNpZGUgb2YgbXVsdGktYWdlbnQgU0NNSSwgYWxsb3dpbmcgeGwg
Y3JlYXRlDQphbmQgZG9tMGxlc3MgY29uZmlndXJhdGlvbnMgdG8gYXNzaWduIHVuaXF1ZSBhZ2Vu
dF9pZCB2YWx1ZXMgdG8gZG9tYWlucy4NCg0KU2VyaWVzLWNoYW5nZXMgMTI6DQotIHJlamVjdCBh
Z2VudF9pZCBpbiB4bC5jZmcgd2hlbiB0aGUgQVJNX1NDSSB0eXBlIGlzIG5vdA0KICBzY21pX3Nt
Y19tdWx0aWFnZW50LCBpbnN0ZWFkIG9mIHBhcnNpbmcgaXQgYW5kIGRpc2NhcmRpbmcgaXQNCi0g
cGVyZm9ybSB0aGUgY2hlY2sgYWZ0ZXIgdGhlIG9wdGlvbiBsb29wLCBhcyB0eXBlIGFuZCBhZ2Vu
dF9pZCBtYXkgYmUNCiAgZ2l2ZW4gaW4gZWl0aGVyIG9yZGVyDQoNClNpZ25lZC1vZmYtYnk6IEdy
eWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbT4NClNpZ25lZC1vZmYt
Ynk6IE9sZWtzaWkgTW9pc2llaWV2IDxvbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbT4NCi0tLQ0K
DQoobm8gY2hhbmdlcyBzaW5jZSB2MTEpDQoNCkNoYW5nZXMgaW4gdjExOg0KLSBGaXggYWdlbnRf
aWQgZG9jdW1lbnRhdGlvbjogY2xhcmlmeSBpdCBhcHBsaWVzIHRvIFNDTUkgU01DDQptdWx0aS1h
Z2VudCBzdXBwb3J0IG9ubHksIG5vdCBwbGFpbiBTQ01JIFNNQyAocmV2aWV3ZXIgZmVlZGJhY2sp
DQotIFJlbW92ZSAibm9uLXplcm8iIGZyb20gYWdlbnRfaWQgZGVzY3JpcHRpb24gdG8gbWF0Y2gg
YWNjZXB0ZWQNCnJhbmdlIFswLi4yNTRdDQotIFJlbW92ZSAiVUlOVDhfTUFYICgyNTUpIGlzIHRy
ZWF0ZWQgYXMgaW52YWxpZCIgZnJvbSB1c2VyDQpkb2N1bWVudGF0aW9uIGFzIHVubmVjZXNzYXJ5
IGltcGxlbWVudGF0aW9uIGRldGFpbA0KLSBBZGQgTElCWExfSEFWRV9TQ01JX1NNQ19NVUxUSUFH
RU5UIGZlYXR1cmUgbWFjcm8gaW4gbGlieGwuaCB0bw0KYWR2ZXJ0aXNlIHRoZSBuZXcgc2NtaV9z
bWNfbXVsdGlhZ2VudCB0eXBlIGFuZCBhZ2VudF9pZCBmaWVsZA0KLSBBZGQgYWdlbnRfaWQgdmFs
aWRhdGlvbiBpbg0KbGlieGxfX2FyY2hfZG9tYWluX2J1aWxkX2luZm9fc2V0ZGVmYXVsdCgpIHRv
IHJlamVjdCBpbnZhbGlkIHZhbHVlcyBhdA0KdGhlIGxpYnhsIGxldmVsLCBub3Qgb25seSBpbiB4
bA0KDQpDaGFuZ2VzIGluIHYxMDoNCi0gU3BsaXQgaHlwZXJ2aXNvciBhbmQgdG9vbHN0YWNrIGNo
YW5nZXMgaW50byBzZXBhcmF0ZSBjb21taXRzDQoNCiBkb2NzL21hbi94bC5jZmcuNS5wb2QuaW4g
ICAgICAgICB8IDEzICsrKysrKysrKysrKysNCiB0b29scy9pbmNsdWRlL2xpYnhsLmggICAgICAg
ICAgICB8ICA4ICsrKysrKysrDQogdG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYyAgICAgfCAx
MyArKysrKysrKysrKysrDQogdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwgfCAgNCAr
KystDQogdG9vbHMveGwveGxfcGFyc2UuYyAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysr
KysrKysrKysrKysrKysNCiA1IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDEgZGVs
ZXRpb24oLSkNCg0KZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hsLmNmZy41LnBvZC5pbiBiL2RvY3Mv
bWFuL3hsLmNmZy41LnBvZC5pbg0KaW5kZXggYjE5YzI1YzhkMS4uOWQzOGFjMGY3ZSAxMDA2NDQN
Ci0tLSBhL2RvY3MvbWFuL3hsLmNmZy41LnBvZC5pbg0KKysrIGIvZG9jcy9tYW4veGwuY2ZnLjUu
cG9kLmluDQpAQCAtMzE4NCw4ICszMTg0LDIxIEBAIHNpbmdsZSBTQ01JIE9TUE0gYWdlbnQgc3Vw
cG9ydC4NCiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIEI8c2NtaS1zbWMtcGFzc3Rocm91
Z2g+IFhlbiBjb21tYW5kIGxpbmUNCiBvcHRpb24uDQogDQorPWl0ZW0gQjxzY21pX3NtY19tdWx0
aWFnZW50Pg0KKw0KK0VuYWJsZXMgQVJNIFNDTUkgU01DIG11bHRpLWFnZW50IHN1cHBvcnQgZm9y
IHRoZSBndWVzdCBieSBlbmFibGluZyBTQ01JIG92ZXINCitTTUMgY2FsbHMgZm9yd2FyZGluZyBm
cm9tIGRvbWFpbiB0byB0aGUgRUwzIGZpcm13YXJlIChsaWtlIFRydXN0ZWQgRmlybXdhcmUtQSkN
Cit3aXRoIGEgbXVsdGkgU0NNSSBPU1BNIGFnZW50IHN1cHBvcnQuIFRoZSBTQ01JIEI8YWdlbnRf
aWQ+IHNob3VsZCBiZQ0KK3NwZWNpZmllZCBmb3IgdGhlIGd1ZXN0Lg0KKw0KID1iYWNrDQogDQor
PWl0ZW0gQjxhZ2VudF9pZD1OVU1CRVI+DQorDQorU3BlY2lmaWVzIGFuIEFSTSBTQ0kgYWdlbnQg
aWQgZm9yIHRoZSBndWVzdC4gVGhpcyBvcHRpb24gaXMgbWFuZGF0b3J5DQoraWYgdGhlIFNDTUkg
U01DIG11bHRpLWFnZW50IHN1cHBvcnQgaXMgZW5hYmxlZCBmb3IgdGhlIGd1ZXN0LiBUaGUgYWdl
bnQgaWRzIG9mDQorZG9tYWlucyBleGlzdGluZyBvbiBhIHNpbmdsZSBob3N0IG11c3QgYmUgdW5p
cXVlIGFuZCBpbiB0aGUgcmFuZ2UgWzAuLjI1NF0uDQorDQogPWJhY2sNCiANCiA9YmFjaw0KZGlm
ZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvbGlieGwuaCBiL3Rvb2xzL2luY2x1ZGUvbGlieGwuaA0K
aW5kZXggZDI5NGZiMzZiZC4uYmUyNWYyMzI4OCAxMDA2NDQNCi0tLSBhL3Rvb2xzL2luY2x1ZGUv
bGlieGwuaA0KKysrIGIvdG9vbHMvaW5jbHVkZS9saWJ4bC5oDQpAQCAtMzI2LDYgKzMyNiwxNCBA
QA0KICAqLw0KICNkZWZpbmUgTElCWExfSEFWRV9CVUlMRElORk9fQVJDSF9BUk1fU0NJIDENCiAN
CisvKg0KKyAqIExJQlhMX0hBVkVfU0NNSV9TTUNfTVVMVElBR0VOVCBpbmRpY2F0ZXMgdGhhdCB0
aGUNCisgKiBMSUJYTF9BUk1fU0NJX1RZUEVfU0NNSV9TTUNfTVVMVElBR0VOVCB2YWx1ZSBpcyBh
dmFpbGFibGUgaW4gdGhlDQorICogbGlieGxfYXJtX3NjaV90eXBlIGVudW1lcmF0aW9uIGFuZCB0
aGUgYWdlbnRfaWQgZmllbGQgaXMgYXZhaWxhYmxlDQorICogaW4gdGhlIGxpYnhsX2FybV9zY2kg
c3RydWN0dXJlLg0KKyAqLw0KKyNkZWZpbmUgTElCWExfSEFWRV9TQ01JX1NNQ19NVUxUSUFHRU5U
IDENCisNCiAvKg0KICAqIExJQlhMX0hBVkVfU09GVF9SRVNFVCBpbmRpY2F0ZXMgdGhhdCBsaWJ4
bCBzdXBwb3J0cyBwZXJmb3JtaW5nDQogICogJ3NvZnQgcmVzZXQnIGZvciBkb21haW5zIGFuZCB0
aGVyZSBpcyAnc29mdF9yZXNldCcgc2h1dGRvd24gcmVhc29uDQpkaWZmIC0tZ2l0IGEvdG9vbHMv
bGlicy9saWdodC9saWJ4bF9hcm0uYyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMNCmlu
ZGV4IGFhOGZhODUyZmMuLmY5MjkyMmFiZWEgMTAwNjQ0DQotLS0gYS90b29scy9saWJzL2xpZ2h0
L2xpYnhsX2FybS5jDQorKysgYi90b29scy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jDQpAQCAtMjM3
LDYgKzIzNywxMCBAQCBpbnQgbGlieGxfX2FyY2hfZG9tYWluX3ByZXBhcmVfY29uZmlnKGxpYnhs
X19nYyAqZ2MsDQogICAgIGNhc2UgTElCWExfQVJNX1NDSV9UWVBFX1NDTUlfU01DOg0KICAgICAg
ICAgY29uZmlnLT5hcmNoLmFybV9zY2lfdHlwZSA9IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lf
U0NNSV9TTUM7DQogICAgICAgICBicmVhazsNCisgICAgY2FzZSBMSUJYTF9BUk1fU0NJX1RZUEVf
U0NNSV9TTUNfTVVMVElBR0VOVDoNCisgICAgICAgIGNvbmZpZy0+YXJjaC5hcm1fc2NpX3R5cGUg
PSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fU0NJX1NDTUlfU01DX01BOw0KKyAgICAgICAgY29uZmln
LT5hcmNoLmFybV9zY2lfYWdlbnRfaWQgPSBkX2NvbmZpZy0+Yl9pbmZvLmFyY2hfYXJtLmFybV9z
Y2kuYWdlbnRfaWQ7DQorICAgICAgICBicmVhazsNCiAgICAgZGVmYXVsdDoNCiAgICAgICAgIExP
RyhFUlJPUiwgIlVua25vd24gQVJNX1NDSSB0eXBlICVkIiwNCiAgICAgICAgICAgICBkX2NvbmZp
Zy0+Yl9pbmZvLmFyY2hfYXJtLmFybV9zY2kudHlwZSk7DQpAQCAtMTg5Nyw2ICsxOTAxLDE1IEBA
IGludCBsaWJ4bF9fYXJjaF9kb21haW5fYnVpbGRfaW5mb19zZXRkZWZhdWx0KGxpYnhsX19nYyAq
Z2MsDQogICAgICAgICB9DQogICAgIH0NCiANCisgICAgLyogU2FuaXRpc2UgQVJNIFNDSSBhZ2Vu
dF9pZCBwYXJhbWV0ZXIgKi8NCisgICAgaWYgKGJfaW5mby0+YXJjaF9hcm0uYXJtX3NjaS50eXBl
ID09IExJQlhMX0FSTV9TQ0lfVFlQRV9TQ01JX1NNQ19NVUxUSUFHRU5UICYmDQorICAgICAgICBi
X2luZm8tPmFyY2hfYXJtLmFybV9zY2kuYWdlbnRfaWQgPj0gVUlOVDhfTUFYKSB7DQorICAgICAg
ICBMT0coRVJST1IsDQorICAgICAgICAgICAgIkludmFsaWQgQVJNIFNDSSBhZ2VudF9pZDogJXUu
IFZhbGlkIHJhbmdlIGlzIFswLi4yNTRdIiwNCisgICAgICAgICAgICBiX2luZm8tPmFyY2hfYXJt
LmFybV9zY2kuYWdlbnRfaWQpOw0KKyAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7DQorICAgIH0N
CisNCiAgICAgaWYgKGJfaW5mby0+dHlwZSAhPSBMSUJYTF9ET01BSU5fVFlQRV9QVikNCiAgICAg
ICAgIHJldHVybiAwOw0KIA0KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfdHlw
ZXMuaWRsIGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwNCmluZGV4IGQ4MTk5NTUx
MDguLjliMzhjOGY2ZGUgMTAwNjQ0DQotLS0gYS90b29scy9saWJzL2xpZ2h0L2xpYnhsX3R5cGVz
LmlkbA0KKysrIGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwNCkBAIC01NTUsMTEg
KzU1NSwxMyBAQCBsaWJ4bF9zdmVfdHlwZSA9IEVudW1lcmF0aW9uKCJzdmVfdHlwZSIsIFsNCiAN
CiBsaWJ4bF9hcm1fc2NpX3R5cGUgPSBFbnVtZXJhdGlvbigiYXJtX3NjaV90eXBlIiwgWw0KICAg
ICAoMCwgIm5vbmUiKSwNCi0gICAgKDEsICJzY21pX3NtYyIpDQorICAgICgxLCAic2NtaV9zbWMi
KSwNCisgICAgKDIsICJzY21pX3NtY19tdWx0aWFnZW50IikNCiAgICAgXSwgaW5pdF92YWwgPSAi
TElCWExfQVJNX1NDSV9UWVBFX05PTkUiKQ0KIA0KIGxpYnhsX2FybV9zY2kgPSBTdHJ1Y3QoImFy
bV9zY2kiLCBbDQogICAgICgidHlwZSIsIGxpYnhsX2FybV9zY2lfdHlwZSksDQorICAgICgiYWdl
bnRfaWQiLCB1aW50OCkNCiAgICAgXSkNCiANCiBsaWJ4bF9yZG1fcmVzZXJ2ZSA9IFN0cnVjdCgi
cmRtX3Jlc2VydmUiLCBbDQpkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcGFyc2UuYyBiL3Rvb2xz
L3hsL3hsX3BhcnNlLmMNCmluZGV4IDAxNzgzNzMxYjUuLjZiYjMzMjVjOTggMTAwNjQ0DQotLS0g
YS90b29scy94bC94bF9wYXJzZS5jDQorKysgYi90b29scy94bC94bF9wYXJzZS5jDQpAQCAtMTI5
MCw2ICsxMjkwLDcgQEAgc3RhdGljIGludCBwYXJzZV9hcm1fc2NpX2NvbmZpZyhYTFVfQ29uZmln
ICpjZmcsIGxpYnhsX2FybV9zY2kgKmFybV9zY2ksDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpzdHIpDQogew0KICAgICBpbnQgcmV0ID0gMDsNCisgICAgaW50
IGFnZW50X2lkX3NldCA9IDA7DQogICAgIGNoYXIgKmJ1ZjIsICpwdHI7DQogICAgIGNoYXIgKm9w
YXJnOw0KIA0KQEAgLTEzMDgsOSArMTMwOSwzNSBAQCBzdGF0aWMgaW50IHBhcnNlX2FybV9zY2lf
Y29uZmlnKFhMVV9Db25maWcgKmNmZywgbGlieGxfYXJtX3NjaSAqYXJtX3NjaSwNCiAgICAgICAg
ICAgICB9DQogICAgICAgICB9DQogDQorICAgICAgICBpZiAoTUFUQ0hfT1BUSU9OKCJhZ2VudF9p
ZCIsIHB0ciwgb3BhcmcpKSB7DQorICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwgPSBwYXJz
ZV91bG9uZyhvcGFyZyk7DQorDQorICAgICAgICAgICAgaWYgKCB2YWwgPj0gVUlOVDhfTUFYICkg
ew0KKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkFuIGludmFsaWQgQVJNX1NDSSBh
Z2VudF9pZCBzcGVjaWZpZWQgKCVsdSkuIFZhbGlkIHJhbmdlIFswLi4yNTRdXG4iLA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbCk7DQorICAgICAgICAgICAgICAgIHJldCA9IEVSUk9SX0lO
VkFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIG91dDsNCisgICAgICAgICAgICB9DQorICAgICAg
ICAgICAgYXJtX3NjaS0+YWdlbnRfaWQgPSB2YWw7DQorICAgICAgICAgICAgYWdlbnRfaWRfc2V0
ID0gMTsNCisgICAgICAgIH0NCisNCiAgICAgICAgIHB0ciA9IHN0cnRvayhOVUxMLCAiLCIpOw0K
ICAgICB9DQogDQorICAgIC8qDQorICAgICAqIGFnZW50X2lkIG9ubHkgbWVhbnMgc29tZXRoaW5n
IHRvIHRoZSBtdWx0aS1hZ2VudCBkcml2ZXIsIGFuZA0KKyAgICAgKiBsaWJ4bF9fYXJjaF9kb21h
aW5fcHJlcGFyZV9jb25maWcoKSBvbmx5IHJlYWRzIGl0IGZvciB0aGF0IHR5cGUuDQorICAgICAq
IFJlamVjdCBpdCBlbHNld2hlcmUgaW5zdGVhZCBvZiBzaWxlbnRseSBkcm9wcGluZyBpdC4gVGhl
IGNoZWNrIGlzIGRvbmUNCisgICAgICogYWZ0ZXIgdGhlIGxvb3AgYmVjYXVzZSB0aGUgb3B0aW9u
cyBtYXkgYmUgZ2l2ZW4gaW4gYW55IG9yZGVyLg0KKyAgICAgKi8NCisgICAgaWYgKGFnZW50X2lk
X3NldCAmJg0KKyAgICAgICAgYXJtX3NjaS0+dHlwZSAhPSBMSUJYTF9BUk1fU0NJX1RZUEVfU0NN
SV9TTUNfTVVMVElBR0VOVCkgew0KKyAgICAgICAgZnByaW50ZihzdGRlcnIsDQorICAgICAgICAg
ICAgICAgICJBUk1fU0NJIGFnZW50X2lkIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggdHlwZT1zY21p
X3NtY19tdWx0aWFnZW50XG4iKTsNCisgICAgICAgIHJldCA9IEVSUk9SX0lOVkFMOw0KKyAgICB9
DQorDQogb3V0Og0KICAgICBmcmVlKGJ1ZjIpOw0KICAgICByZXR1cm4gcmV0Ow0KLS0gDQoyLjQz
LjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470040.1678806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-0001o3-B5; Tue, 03 Nov 2026 14:47:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470040.1678806; Tue, 03 Nov 2026 14:47:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-0001kr-4L; Tue, 03 Nov 2026 14:47:20 +0000
Received: by outflank-mailman (input) for mailman id 1470040;
 Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnC-0001aH-HJ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnB-007AP4-Tm
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:12 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=tcbB3SepMc6ixTvRDJIt85w2ZtVyHWSzuV2+qyV1/aRqa5nMYjTKaiabXox3GTlY0fMWwU9sBLx1uEwknI0Z821jAYfPmauMXNrgnCaFjQis91ikvi8ZCkkLT5OpcNjJDsSh7XyZRnK2W1sdFofYMtcMriiDoGKqAa1lfx52KcYlWLW2m61bYZlOsChVoTp7YOkmer9CRb+/bf21pNI/kcol62a4yPp+O5N4vMfAWkXM3c5YWEuZDoRsjIiA4uMvMd3b82KOaXHlCD7K85AfsCerUTEpVOvAUeBxMrjcjjYjZ9LJHpud/+w8iJRZszObBPIi+V5dN+PoBEV0rBOFJg==
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=95rs6hnIOqy92iTh5405eR0nWjfvo1NSe+b8wk/aBdk=;
 b=M+rrHGxJoXpnQgqvGqqBdqZb+Io0ZjigNTESf15UkOMUBzrxOItUDUKCWXfJysfG+KOHySOqDnOwemFpXbQ8SSoMETp6DDpIcmqm4uH9eAqBan3Zfa839zx/H1peYT9srsVphu1+/TAlIaKP4PmCG0yqyPMPOftEZ63n1LOnrtgBH+bN+aqOiKXNjpRpAmbJ+OFDfrslSyJjnujdAHNvcnjokpcIVwaKc4qXh7qpV1dApVHfaUj1DIG4Pb1TEBD4lAa5d7a+sQe0Uoa6v1gOk93YqAyrjfNR8MwSSj+hgdB1l2lJ+7Zfqja0geGFn1+MYUczfig6/6c4lsx/VYGzRQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=95rs6hnIOqy92iTh5405eR0nWjfvo1NSe+b8wk/aBdk=;
 b=QQmKnhpjUhQMNW0OsXYU9qQOQXcL3f+0HRy7jirVPXQV8qLFzpFZh+hxxrCwUnW83irx8N1DGc3pw/xI3B8xwj0JgoaJ8SMRmCrlW83Kg1tHl6IhBhvYAvESxtJx7jUC+Y3XMAYbtZesv2i/cUo2HMl+xuRMt8dV5/pbizFn8quNTANHxgFbbt/k22AnBZ0+ESmVlASvX/fiYhlDJBev/BZNeOoVxms1zJOrvDOnNrD24DH78qbm+DJVH60r5CcHLhxXtFSrDVYenIt7oOvqNzfh/UcgcaRsnFRvmLIeNgkbo7r8VOTxvEUoT0mg9j2xJSqXY3FFRrHDhl8cDVHdkQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v15 0/6] xen/arm: scmi: introduce SCI SCMI SMC multi-agent
 support
Thread-Topic: [PATCH v15 0/6] xen/arm: scmi: introduce SCI SCMI SMC
 multi-agent support
Thread-Index: AQHda6I1yu76bZIdS0yMc5JTu1g1BQ==
Date: Tue, 3 Nov 2026 14:47:12 +0000
Message-ID: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 7e8e4cdd-f999-4aee-e885-08df39b95833
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|6133799003|260925022911599003|260925021911599003|18002099003|260925021311599003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261022113327099003|261022115727099003|261022105027099003|261021121427099003|261021130227099003|261021133027099003|261021123027099003|261021135927099003|261022075727099003|11063799006|38070700021|261026130827099003|261028144727099003|261026121527099003|261026135527099003|261026140227099003;
x-microsoft-antispam-message-info:
 5NxoQBS94xZXeCrHmhNg6d58VXh+cWAuXLGgwXiZ33XqMZ8RewCj/SNELKrN8EZFjjRlYreKeFQHNlql9k8E4IRtcoKWWFlSJT/1FCfpjgqGAne7VZwnr+9BkF4iSxJHxKt0HjmMlCi8xQHDQ8tG9DkpsBOmC8G04Q83TjOFiJThCf3WRsuEhFsyp8r2kin1HigXABlM92h2AQVqGR6ntwOeAE3k93RwmautyKkO4+GbzXxOq/313lTiZdTT0fIg7DojISO6RzhO+isxQqyrlrrUhorosclnFmllzW0VAS1F8klV9u8xfDFwpvlpDDSFeYaiHWfNwHVqkv/LdHaceQi1AjnvC7QlcruzzHdC0tiLpUNEp89XySHajUL8k+b8v5y7Stm2H6gxklExQ4v1z620Jz0HDBHQ0saFkgnt3LDZ+wDQFaFOsMf2QW9DeC5uZ9XU7tehPIZh2d602SR/LTh2/rSxA+DsdjGMmrPnzndZnFCwTsDfnAMhdTttjVSGzdNAnGkm32lJan3HcqWpvgwY3KrlKePwTcsdpjkXYhYhsD5obxYyhbNANFVQPX8u5ZeHkbD82s2lq+Eh+DOFVy+ESxVh/6dxhpFOSB+QhivCF8FC97zbvoKJljOd38UGeqK/58vmQK6uN11H19akP8EYEAQgDr/DI8QpCKHvnow=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(6133799003)(260925022911599003)(260925021911599003)(18002099003)(260925021311599003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261022113327099003)(261022115727099003)(261022105027099003)(261021121427099003)(261021130227099003)(261021133027099003)(261021123027099003)(261021135927099003)(261022075727099003)(11063799006)(38070700021)(261026130827099003)(261028144727099003)(261026121527099003)(261026135527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MUF3dE9sa0dxRThNYUQrTDBTUE4rakdlWG9KL1NicXJxOE1mUVhJY0pJRjM0?=
 =?utf-8?B?dGYvYW8rZGtDK2owOGJPdnFPSXo2UlA5Tys5a05tRTc3K2VTWHhhaTQvaE1T?=
 =?utf-8?B?R3I0MkUweVlPRFJKbGlBdTljWkJQbkxjdzNBdXZWYVhCd3lzNUJBam9IUmpR?=
 =?utf-8?B?d0lCNnpOeEdUdlNUL3d6RVB1Y1NPUnRLYlloTXZTMXk3VE5oZjFpMHRTYS9r?=
 =?utf-8?B?NnNGakJBazZsZzl5akx5WHV0QVpmcXFYZ2RxSFd1NXl1Wml0cU5aZWRSMHlN?=
 =?utf-8?B?Tkt4YTZ4Unc0TWJyUlFzVFoyWXdDSjNxc0lpbGEvRjhHV3FUQkpaOEUwaGhP?=
 =?utf-8?B?Q0VIYnIxNUwvKzBERnF4YWJiUTBLWTVoUDBoS1V3bWpWWVRZYlFzN3FadVd1?=
 =?utf-8?B?K2wxbUQ2U2ozam1YMzB3aVVIWm9xN05rNW9hYUo1MDFqc25HdkNZMEtRcnpn?=
 =?utf-8?B?MWZGL2RSTExCbzdVTW1WNXNsakxRVkFYZUZiVlZqWjBJZEZ5eFB0eUVWVWYv?=
 =?utf-8?B?enJDemI5L010YStKWm4zM1M4Ymt2Qmw4K3E4NkZsQ2ROWlRWNHBsdWdPZ2hG?=
 =?utf-8?B?L0ZDRkpLdlg2NGFhQlp2TnYzcTN0T21uNExpWlZNTSs4RHJJdDhnWks0cWdN?=
 =?utf-8?B?VGVQWldWRmlDb1grcWZ0cmxRYytqaHdLdVpndHlCbFVZNG9JazV3cC9FanRn?=
 =?utf-8?B?Vmo2T0hnZGRHa3MyUFZVT3dxc3A0TEE2eWpMNXdhL1N3eWpsMkwrU2FmSlpU?=
 =?utf-8?B?MUUvQlRUSllZcC9PUTVYRi9SaEF1eUZsZ2ptaFUwUGtuTytGSHFkUGF3NUpC?=
 =?utf-8?B?ZUhyK3lSZnV3R1N3R1IzS3ZNNERmOFRHaDBuS2JyaEhxNmRhdzJPRForNlB5?=
 =?utf-8?B?TDBhNFBJVVYyT2l6RWhPRGxHZWl4ci9rallDU09GTkZJNU1LR3FMY3diclM3?=
 =?utf-8?B?empsK0J0K3lUTU9BaUlaWDM0K2ZsQmhnSGdESVdLMUFsYkhQS3hxWW41aG5P?=
 =?utf-8?B?TzhYS2dMZ3A2QU1zOEpPdXBqTHAyNkZZRUh2NlVERExiQS8rK1RJZlQxdVgy?=
 =?utf-8?B?alNoM1d5RE1ZY0ttWGpOcmVGd3ZPQXBsZlYxN0txN1hJbGx6WjRRYm5mSUdB?=
 =?utf-8?B?NGR6QWcrTzhFQlRRZ2hGeXEyNWkyN0h6Z05jcHdOcUptbWQvSytMNjJuckx0?=
 =?utf-8?B?NmNnK2hVbTdDZER6SjFkVUw1VVpkRjRibWpRN2JsMWNIOVpSTTBmaWF1ejFY?=
 =?utf-8?B?c3JKNTRDSTZsNjk4cXJsSnNwQ3lLNWt6ZU9VM0pWVFFZNnNZM2ZlTFRQUVhP?=
 =?utf-8?B?emIwb3JTQWt2NDMwanAwTE9lSnBxLzEzWGpjTjl1VnhFQzlsZXlINnYwRkEz?=
 =?utf-8?B?Wmxhdkt2L0hKZEZNdTByRGZKcHdGV3A2Z0tyWVdmdUVjUkpmWXFmSkd6VnNV?=
 =?utf-8?B?Q2dqQ1NmRk1wVytjcFZnZTR3bjVXdXhqa2lYejdLMHgvMjB4eDR3MGs5ejBw?=
 =?utf-8?B?dkJ2bGxkL1V3MldwR0oxTjVveEJwL3hVNi9WbzNISlBXVUpZQlB1NU54ajZ3?=
 =?utf-8?B?UnhvZldZNlYwTWRsSXZBMkdPL21NZ3luUjhBWmpsQnI5VkVHVzE3THd3SjY0?=
 =?utf-8?B?Y1FXT1ovRlliNDQ4bG1tc3puc1BsYW1lZ3lKNEhOaXdmRUlQMDRyZDY3NnhN?=
 =?utf-8?B?T1plV2dZNXl4M3Z4dVkwSTdHeTkzZFpWeXBBcG5aR1BjTkFINnE2dDNVdFlG?=
 =?utf-8?B?d3lDZExhYU10M1VPTjdISHZNYnVNekFWNFMzZWNocmsrZVdXa0JmR1BvZHRq?=
 =?utf-8?B?UG1BUnFLMWVISklGa1hPYlNWSzB1Vm5Danp6YVgxbkF2T3FBVXUxK1RqM01w?=
 =?utf-8?B?SXhEZ0F6QVgvczd0MlhqdUVtMW03czM4RHpaVjFxbXZXaG9TbDFyVkU0WEFS?=
 =?utf-8?B?bi83T0FCcklqWWswQytTREZ3SkhuSWlvanMxLzZ4azJGeFk4Smp0b0poK1BN?=
 =?utf-8?B?ait3VHA3bkFzUDhzLzJxMDFPZWo2a2JwaE9RMFBMWmZUbmFLWGN6Nk90Yyty?=
 =?utf-8?B?akV2Y09BRjRzTnNGcU1OZy9SaFN5QnIvNVA0THQxYjRpL01CeHA1Q3cwV2Z1?=
 =?utf-8?B?UEgxTGxyb1gwUkVMekdYaTV6b0RDVXUzdzJJLzl6ZWN2VVRZaWI5enBNRzVi?=
 =?utf-8?B?SG4wMytrTGVaRkpoZVl4clMyanZTVmlPczQrZzJTVk9YRDA4c0lLY2F3cUZo?=
 =?utf-8?B?QXVXTEdRTm5qZHREZVpxM0NlTFViTVJHcEhGa2hUQ2l3M1RwYWlwdVh1OXNI?=
 =?utf-8?B?Q2Q4NjQvckZYOW1wbXg4N2R5eVg4SHp0ODdKVCtKQUdlVks3TjZYd2IrZkFm?=
 =?utf-8?Q?CvTu6U7vAqWsDeSM=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <3D417EFED9FD404DB5BD7D4DFAC9A788@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e8e4cdd-f999-4aee-e885-08df39b95833
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:12.1149
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 0ZDAoK+y+9mmepZsn8uZNmakPycnZHE6Z5IebZHUxq6h1UStyJYNqo5Px0GfHkaHnHG6Afsq+wO2nA9rIyOBEGBQXz2ZUqzMKoSmL+JyhTM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717237-1DA7E757-2A5AD067/0/0
X-purgate-type: clean
X-purgate-size: 27470

SW5yb2R1Y2luZyBwYXRjaCBzZXJpZXMgd2hpY2ggaW5jbHVkZXMgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIFNDSSBTQ01JDQpTTUMgbXVsdGktYWdlbnQgc3VwcG9ydC4NClRoaXMgcGF0Y2ggc2VyaWVz
IGZvbGxvd3MgUkZDIHY1IFszXSBzZXJpZXMgd2hpY2ggd2FzIGludHJvZHVjaW5nIGJvdGgNClND
TUkgc2luZ2xlLWFnZW50IGFuZCBtdWx0aS1hZ2VudCBzdXBwb3J0LiBBZnRlciB0aGUgZGlzY3Vz
c2lvbiBpdCB3YXMNCmRlY2lkZWQgdG8gc3BsaXQgZmVhdHVyZXMgYW5kIHVwc3RyZWFtIHNpbmdl
LWFnZW50IHN1cHBvcnQgZmlyc3QuIFRoaXMNCmZlYXR1cmUgaXMgbWVyZ2VkIGZvciBub3cgdG8g
djQuMjEtcmMyLg0KSSdtIHN0YXJ0aW5nIHRoaXMgcGF0Y2ggc2VyaWVzIGZyb20gdjYgdG8gc2F2
ZSB0aGUgZGlzY3Vzc2lvbiBoaXN0b3J5DQphbmQgZG9uJ3QgYnJlYWsgY2hhbmdlcyBsb2cuDQoN
ClBhdGNoIC0geGVuL2RvbWN0bDogZXh0ZW5kIFhFTl9ET01DVExfYXNzaWduX2RldmljZSB0byBo
YW5kbGUgbm90DQpvbmx5IGlvbW11DQotIGFkZCBjaGFpbmdlZCBoYW5kbGluZyBvZiBhc3NpZ25l
ZCBEVCBkZXZpY2VzIHRvIHN1cHBvcnQNCmFjY2Vzcy1jb250cm9sbGVyIGZ1bmN0aW9uYWxpdHkg
dGhyb3VnaCBTQ0kgZnJhbWV3b3JrLg0KQ2hhbmdlIHdhcyBkb25lIGluIHR3byBwYXJ0czoNCiAt
IGNhbGwgdG8gc2NpX2RvX2RvbWN0bCgpIHRvIGRvX2RvbWN0bCgpDQogLSB1cGRhdGUgaW9tbXVf
ZG9fZHRfZG9tY3RsKCkgdG8gY2hlY2sgZm9yIGR0X2RldmljZV9pc19wcm90ZWN0ZWQoKQ0KIGFu
ZCBub3QgZmFpbCBpZiBEVCBkZXZpY2UgaXMgbm90IHByb3RlY3RlZCBieSBJT01NVQ0KDQpQYXRj
aCAtIHhlbi9hcm06IHNjbWk6IGludHJvZHVjZSBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJp
dmVyDQotIGFkZCBYZW4tc3BlY2lmaWMgU0NNSSBjb250YWluZXIgY29tcGF0aWJsZSBgeGVuLHNj
aWANCiAgdW5kZXIgYC9jaG9zZW4veGVuYDsgWGVuIGJpbmRzIG9ubHkgdG8gdGhlIGBhcm0sc2Nt
aS1zbWNgIGluc2lkZSBpdCBhbmQNCiAgaWdub3JlcyBvdGhlciBTQ01JIG5vZGVzIChlLmcuIHVu
ZGVyIGAvZmlybXdhcmVgKS4NCi0gZGVzY3JpYmUgc2Vjb25kYXJ5IGFnZW50cyBhcyBgeGVuLHNj
bWktYWdlbnRgIGNoaWxkcmVuIG9mIGFuIGBhZ2VudHNgDQogIG5vZGUsIHdpdGggYGFybSxzbWMt
aWRgLCBgc2htZW1gIGFuZCBvcHRpb25hbCBgcmVnYCBmb3IgdGhlIGFnZW50IElELg0KICBEaXNj
b3ZlciB0aGUgSUQgdGhyb3VnaCBCQVNFX0RJU0NPVkVSX0FHRU5UIHdoZW4gYHJlZ2AgaXMgYWJz
ZW50Lg0KLSBrZWVwIHNoYXJlZC1tZW1vcnkgbm9kZXMgdW5kZXIgYHhlbl9zY21pX2NvbmZpZ2A7
IHBsYXRmb3JtIFJBTQ0KICByZXNlcnZhdGlvbnMgYXJlIGRlc2NyaWJlZCBzZXBhcmF0ZWx5IGlu
IGAvcmVzZXJ2ZWQtbWVtb3J5YC4NCi0gZWFjaCBndWVzdCB1c2luZyBTQ01JIHN1cHBsaWVzIGl0
cyBhZ2VudF9pZCAoZG9tMCB2aWENCiAgYHhlbixkb20wLXNjaS1hZ2VudC1pZGAgcHJvcGVydHkg
aW4geGVuLHNjaSBjb21wYXRpYmxlIG5vZGUsDQogIHRvb2xzdGFjayB2aWEgYGFybV9zY2kgPSAi
dHlwZT1zY21pX3NtY19tdWx0aWFnZW50LGFnZW50X2lkPS4uLiJgLCBkb20wbGVzcw0KICB2aWEg
YHhlbixzY2lfdHlwZWAgKyBgeGVuLHNjaS1hZ2VudC1pZGAgaW4gYHhlbixkb21haW5gKS4NCi0g
ZmFjdG9yIG91dCBTQ01JIGdlbmVyaWMgZGVmaW5pdGlvbnMgYW5kIHNobWVtIGNvZGUuDQotIHBh
c3N0aHJvdWdoIGNvbmZpZ3VyYXRpb24gZm9yIFNDTUkgZ3Vlc3RzIG1pcnJvcnMgb3RoZXIgSFcg
cGFzc3Rocm91Z2guDQoNClBhdGNoIC0gZG9jczogYXJtOiBhZGQgU0NJIFNDTUkgU01DIG11bHRp
LWFnZW50IGRyaXZlciBkb2NzDQotIGRvY3VtZW50IHRoZSBYZW4gU0NNSSBjb250YWluZXIgdW5k
ZXIgYC9jaG9zZW4veGVuL3hlbl9zY21pX2NvbmZpZ2AgYW5kIHRoZQ0KICBtZWRpYXRvcuKAmXMg
YmluZGluZyBydWxlczsgdXBkYXRlIGV4YW1wbGVzIGFjY29yZGluZ2x5Lg0KDQpBbGwgWGVuLXNw
ZWNpZmljIFNDTUkgY29uZmlndXJhdGlvbiBub3cgbGl2ZXMgdW5kZXIgYC9jaG9zZW4vYA0KdG8g
a2VlcCBob3N0IERUIGNoYW5nZXMgaXNvbGF0ZWQgd2hpbGUgbGVhdmluZyB0aGUgaG9zdCBgL2Zp
cm13YXJlL3NjbWlgDQp1bnRvdWNoZWQgZm9yIERvbTAgY29uc3VtcHRpb24uDQoNCkNvZGUgY2Fu
IGJlIGZvdW5kIGF0Og0KaHR0cHM6Ly9naXRodWIuY29tL29sZWtzaWltb2lzaWVpZXYveGVuL3Ry
ZWUvc2NtaV9tYV91cHN0cnY2DQoNClsxXSBSRkMgdjI6DQpodHRwOi8vcGF0Y2h3b3JrLmtlcm5l
bC5vcmcvcHJvamVjdC94ZW4tZGV2ZWwvY292ZXIvY292ZXIuMTY0NDM0MTYzNS5naXQub2xla3Np
aV9tb2lzaWVpZXZAZXBhbS5jb20vDQpbMl0gUkZDIHYzOg0KaHR0cHM6Ly9wYXRjaHdvcmsua2Vy
bmVsLm9yZy9wcm9qZWN0L3hlbi1kZXZlbC9wYXRjaC8yMDI1MDMxMTExMTYxOC4xODUwOTI3LTEt
Z3J5Z29yaWlfc3RyYXNoa29AZXBhbS5jb20NClszXSBSRkMgdjU6DQpodHRwczovL2xvcmUua2Vy
bmVsLm9yZy94ZW4tZGV2ZWwvY292ZXIuMTc1MzE4NDQ4Ny5naXQub2xla3NpaV9tb2lzaWVpZXZA
ZXBhbS5jb20vDQpbNF0gU0NNSSBzaW5nbGUtYWdlbnQ6DQpodHRwczovL2xvcmUua2VybmVsLm9y
Zy94ZW4tZGV2ZWwvY292ZXIuMTc1Njk5NTU5NS5naXQub2xla3NpaV9tb2lzaWVpZXZAZXBhbS5j
b20vDQpTQ01JIHNwZWM6DQpodHRwczovL2RldmVsb3Blci5hcm0uY29tL2RvY3VtZW50YXRpb24v
ZGVuMDA1Ni9lLz9sYW5nPWVuDQoNClNDTUkgYmluZGluZ3M6DQpodHRwczovL3dlYi5naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUv
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Zpcm13YXJlL2FybSxzY21pLnlhbWwN
Cmh0dHBzOi8vd2ViLmdpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2
YWxkcy9saW51eC5naXQvdHJlZS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYWNj
ZXNzLWNvbnRyb2xsZXJzL2FjY2Vzcy1jb250cm9sbGVycy55YW1sDQoNClJlZmVyZW5jZSBFTDMg
Rlc6DQpSUEk1OiBodHRwczovL2dpdGh1Yi5jb20veGVuLXRyb29wcy9hcm0tdHJ1c3RlZC1maXJt
d2FyZS9jb21taXRzL3JwaTVfZGV2Lw0KUmVuZXNhcyB2NGg6DQpodHRwczovL2dpdGh1Yi5jb20v
R3J5Z2lyaWlTL2FybS10cnVzdGVkLWZpcm13YXJlL2NvbW1pdHMvcmNhcl9nZW40X3YyLjdfdjR4
LXNjbWlfdXBkLw0KDQpiYXNlLWNvbW1pdDogZGJlNjBmMjQ0YyAoVXBkYXRlIFhlbiB0byA0LjIx
LCAyMDI1LTAyLTIxKQ0KDQpDaGFuZ2VzIGluIHYxNToNCi0gcmVuYW1lIHRoZSBzaGFyZWQtbWVt
b3J5IGhlbHBlcnMgdG8gc2NtaV9wdXRfbWVzc2FnZSgpIGFuZA0KICBzY21pX2dldF9tZXNzYWdl
KCksIGFuZCByZW1vdmUgcmVkdW5kYW50IHZvbGF0aWxlIHBhcmFtZXRlciBxdWFsaWZpZXJzDQot
IHVzZSB3cml0ZWxfcmVsYXhlZCgpIGNvbnNpc3RlbnRseSBmb3IgdGhlIHJlcXVlc3QgY29udHJv
bCBmaWVsZHMgYW5kDQogIGV4cGxhaW4gdGhlaXIgRGV2aWNlLW1lbW9yeSBvcmRlcmluZw0KLSBy
ZXRhaW4gdGhlIG5hdHVyYWxseSBhbGlnbmVkIHNoYXJlZC1tZW1vcnkgc3RydWN0dXJlIGFuZCB2
ZXJpZnkgaXRzDQogIHRyYW5zcG9ydCBmaWVsZCBvZmZzZXRzIGF0IGNvbXBpbGUgdGltZSBpbnN0
ZWFkIG9mIGFkZGluZyBfX3BhY2tlZA0KLSBjb3JyZWN0IHRoZSBTTUMgZGlhZ25vc3RpYyB3b3Jk
aW5nIGFuZCB3cmFwIGxvbmcgbGluZXMsIHJldGFpbmluZyB0aGUNCiAgc2l6ZS1lcnJvciBkaWFn
bm9zdGljcyBhcyBhZ3JlZWQgZHVyaW5nIHJldmlldw0KLSBkb2N1bWVudCB0aGUgbGltaXQgZGVy
aXZlZCBmcm9tIHRoZSBCYXNlIHByb3RvY29sJ3MgZWlnaHQtYml0IGFnZW50DQogIGNvdW50OiBw
bGF0Zm9ybSBJRCAwIGlzIHNlcGFyYXRlLCBzbyAyNTUgYWdlbnRzIHBsdXMgdGhlIHBsYXRmb3Jt
IG9jY3VweQ0KICBJRHMgMC4uMjU1IGFuZCBmaXQgaW4gdGhlIGVpZ2h0LWJpdCBkb21haW4gY29u
ZmlndXJhdGlvbiBmaWVsZA0KLSB1c2UgcGFkZHJfdCBmb3IgY2hhbm5lbCBwaHlzaWNhbCBhZGRy
ZXNzZXMsIFBSSXBhZGRyIGZvciB0aGVpcg0KICBkaWFnbm9zdGljcywgYW5kIHVpbnQ2NF90IGZv
ciBEVCBhZGRyZXNzIGFuZCBzaXplIGRlY29kaW5nDQotIGluaXRpYWxpemUgY2hhbm5lbCBzdGF0
dXMgdGhyb3VnaCBhbiBNTUlPIGFjY2Vzc29yDQotIG1hcmsgZnJlZV9jaGFubmVsX2xpc3QoKSBh
bmQgdGhlIERvbTAgRFQgY2FsbGJhY2sgYXMgX19pbml0DQotIG1vdmUgdGhlIHJlc3BvbnNlIHRy
YWNlIGJlZm9yZSB0aGUgY2xlYW51cCBsYWJlbCwgc2tpcCBpdCBvbiBzZW5kDQogIGZhaWx1cmUs
IGFuZCByZW5hbWUgdGhlIGxhYmVsIHRvIGNsZWFudXANCi0gdXNlICVwZCBmb3IgZG9tYWluIGRp
YWdub3N0aWNzDQoNCkNoYW5nZXMgaW4gdjE0Og0KLSByZXBsYWNlIHRoZSBmbGF0IHNlY29uZGFy
eS1hZ2VudCBsaXN0IGFuZCBpdHMgY2VsbC1jb3VudCBwcm9wZXJ0eSB3aXRoDQogIHhlbixzY21p
LWFnZW50IGNoaWxkIG5vZGVzIHVuZGVyIGFnZW50cywgdXNpbmcgcmVnIGZvciBhbiBvcHRpb25h
bCBJRA0KLSBzY29wZSBzZWNvbmRhcnktYWdlbnQgcGFyc2luZyB0byB0aGUgbWFuYWdlbWVudCBj
aGFubmVsJ3MgeGVuLHNjaSBjb250YWluZXINCi0gcmVzb2x2ZSBkaXNjb3ZlcmVkIElEcyBiZWZv
cmUgaW5zZXJ0aW9uIGFuZCByZWplY3QgZHVwbGljYXRlIG9yIGludmFsaWQgSURzDQotIHZhbGlk
YXRlIHNoYXJlZC1tZW1vcnkgcGhhbmRsZXMsIGFkZHJlc3NlcyBhbmQgbm9uemVybyBwYWdlLWFs
aWduZWQgc2l6ZXMNCi0gcmV0YWluIHNoYXJlZC1tZW1vcnkgbm9kZXMgdW5kZXIgeGVuX3NjbWlf
Y29uZmlnIGFuZCBkb2N1bWVudCBwbGF0Zm9ybQ0KICByZXNlcnZhdGlvbnMgc2VwYXJhdGVseSwg
Zm9sbG93aW5nIHRoZSByZXZpZXcgZGlzY3Vzc2lvbg0KLSB1cGRhdGUgYmluZGluZyBleGFtcGxl
cyBhbmQgY29tbWl0IGRlc2NyaXB0aW9uIGZvciB0aGUgY2hpbGQtbm9kZSBmb3JtYXQNCi0gbWF0
Y2ggdGhlIGNvbnN0LXF1YWxpZmllZCBTQ0kgZG9tYWluX3Nhbml0aXNlX2NvbmZpZyBjYWxsYmFj
ayBpbnRlcmZhY2UNCi0gZGVzY3JpYmUgc2Vjb25kYXJ5IGFnZW50cyBhcyB4ZW4sc2NtaS1hZ2Vu
dCBub2RlcyB1bmRlciBhZ2VudHMNCi0gdXBkYXRlIGhvc3QsIGRpc2NvdmVyeSBhbmQgZG9tMGxl
c3MgZXhhbXBsZXMgZm9yIHRoZSBjaGlsZC1ub2RlIGZvcm1hdA0KLSBjbGFyaWZ5IHNoYXJlZC1t
ZW1vcnkgcGxhY2VtZW50IGFuZCBwbGF0Zm9ybSBSQU0gcmVzZXJ2YXRpb25zDQoNCkNoYW5nZXMg
aW4gdjEzOg0KLSBtZW1jcHlfe2Zyb20sdG99aW8oKTogYWxpZ24gb25seSB0aGUgSS9PIHBvaW50
ZXIgYW5kIGFjY2VzcyB0aGUNCiAgcmVndWxhciBtZW1vcnkgc2lkZSB0aHJvdWdoIGdldF91bmFs
aWduZWRfbGUzMigpL3B1dF91bmFsaWduZWRfbGUzMigpLg0KLSBkb2N1bWVudCB0aGUgY29udHJh
Y3Qgb2YgdGhlIGhlbHBlcnMgaW4geGVuL2lvLmgNCi0gcmV3b3JkIHRoZSBBcm0gaW1wbGVtZW50
YXRpb24gbm90ZXMgdG8gc3RhdGUgdGhlIGNvbmNyZXRlIGFjY2Vzcw0KICBwYXR0ZXJuDQotIGRy
b3AgdGhlIGluY29ycmVjdCBjbGFpbSBhYm91dCBhdm9pZGluZyBlbmRpYW5uZXNzIGNvbnZlcnNp
b24gZnJvbSB0aGUNCiAgY29tbWl0IG1lc3NhZ2U7IG5vdGUgaW5zdGVhZCB0aGF0IHRoZSBfbGUz
MiBoZWxwZXJzIHBhaXIgd2l0aA0KICByZWFkbCgpL3dyaXRlbCgpIHNvIHRoZSBieXRlIHNlcXVl
bmNlIGlzIHByZXNlcnZlZCBvbiBlaXRoZXIgZW5kaWFubmVzcw0KLSBmaXggdHlwbyBpbiBjb21t
aXQgZGVzY3JpcHRpb24NCg0KQ2hhbmdlcyBpbiB2MTI6DQotIHJlYmFzZSB0byB0aGUgbGF0ZXN0
IHN0YWdpbmcNCi0gYWRkIFItQnMgZnJvbSBTdGVmYW5vIGFuZCBBY2sgZnJvbSBKYW4NCi0gYWRk
IG1pc3NlZCBBY2suDQotIEFkZCBtaXNzZWQgUi1CDQotIGNvcnJlY3QgdGhlIEVtYWNzIGZvb3Rl
ciBvZiBib3RoIGZpbGVzLCB3aGljaCBhc2tlZCBmb3IgOCBjb2x1bW4NCnRhYiBpbmRlbnRhdGlv
biB3aGlsZSB0aGUgY29kZSBpcyBpbiA0IGNvbHVtbiBYZW4gc3R5bGUNCi0gcmViYXNlIHRvIHRo
ZSBsYXRlc3Qgc3RhZ2luZw0KLSByZXR1cm4gRUlOVkFMIGlmIHhlbixzY2lfdHlwZT1zY21pX3Nt
Y19tdWx0aWFnZW50IHdhcyBzZXQgYnV0DQpDT05GSUdfU0NNSV9TTUNfTUEgbm90IHNldA0KLSBw
dXQgYXJtX3NjaV9hZ2VudF9pZCBhZnRlciB2OHJfZWwxX21zYSBhbmQgYmVmb3JlIHBhZCB0byBw
cmVzZXJ2ZQ0Kb3JkZXIuIFJlZHVjZWQgcGFkIGZyb20gdWludDE2X3QgdG8gdWludDhfdCB0byBm
aWxsIHRoZSBnYXAgKHdhcyAyDQpieXRlcyBiZWZvcmUgYWRkaW5nIGFybV9zY2lfYWdlbnRfaWQg
YW5kIGxlZnQgb25seSAxLCBzbyB1c2VkIHVpbnQ4X3QNCnRvIHByZXNlcnZlIHN0cnVjdHVyZSBz
aXplKQ0KLSBmaXggc2NtaV9oYW5kbGVfY2FsbCB0byB1c2UgYXJtX3NtY2NjX2d1ZXN0X3NtYyBo
ZWxwZXIgZnVuY3Rpb24NCi0gdXBkYXRlIHNlbmRfc21jX21lc3NhZ2UgZnVuY3Rpb24gdG8gdXNl
IG5ldyBmb3JtYXQgb2YNCmFybV9zbWNjY18xXzFfc21jDQotIGd1YXJkIHRoZSBEb20wIFNDTUkg
YWdlbnQgaWQgc2V0dXAgaW4gY3JlYXRlX2RvbTAoKSBhbmQgTUEgcmVsYXRlZA0KZnVuY2l0b25z
IHdpdGggQ09ORklHX1NDTUlfU01DX01BDQotIGZpeCB0aGUgeGVuX3NjbWlfY29uZmlnIGV4YW1w
bGUgaW4gYm9vdGluZy50eHQsIHdoaWNoIHBsYWNlZCBwcm9wZXJ0aWVzDQphZnRlciBzdWJub2Rl
cyBhbmQgd2FzIHJlamVjdGVkIGJ5IGR0YyB3aXRoICJQcm9wZXJ0aWVzIG11c3QgcHJlY2VkZQ0K
c3Vibm9kZXMiDQoNCkNoYW5nZXMgaW4gdjExOg0KLSBGaXggYWdlbnRfaWQgZG9jdW1lbnRhdGlv
bjogY2xhcmlmeSBpdCBhcHBsaWVzIHRvIFNDTUkgU01DDQptdWx0aS1hZ2VudCBzdXBwb3J0IG9u
bHksIG5vdCBwbGFpbiBTQ01JIFNNQyAocmV2aWV3ZXIgZmVlZGJhY2spDQotIFJlbW92ZSAibm9u
LXplcm8iIGZyb20gYWdlbnRfaWQgZGVzY3JpcHRpb24gdG8gbWF0Y2ggYWNjZXB0ZWQNCnJhbmdl
IFswLi4yNTRdDQotIFJlbW92ZSAiVUlOVDhfTUFYICgyNTUpIGlzIHRyZWF0ZWQgYXMgaW52YWxp
ZCIgZnJvbSB1c2VyDQpkb2N1bWVudGF0aW9uIGFzIHVubmVjZXNzYXJ5IGltcGxlbWVudGF0aW9u
IGRldGFpbA0KLSBBZGQgTElCWExfSEFWRV9TQ01JX1NNQ19NVUxUSUFHRU5UIGZlYXR1cmUgbWFj
cm8gaW4gbGlieGwuaCB0bw0KYWR2ZXJ0aXNlIHRoZSBuZXcgc2NtaV9zbWNfbXVsdGlhZ2VudCB0
eXBlIGFuZCBhZ2VudF9pZCBmaWVsZA0KLSBBZGQgYWdlbnRfaWQgdmFsaWRhdGlvbiBpbg0KbGli
eGxfX2FyY2hfZG9tYWluX2J1aWxkX2luZm9fc2V0ZGVmYXVsdCgpIHRvIHJlamVjdCBpbnZhbGlk
IHZhbHVlcyBhdA0KdGhlIGxpYnhsIGxldmVsLCBub3Qgb25seSBpbiB4bA0KDQpDaGFuZ2VzIGlu
IHYxMDoNCi0gcmVtb3ZlIHVudXNlZCBzY2lfZG9fZG9tY3RsIHN0dWIgZnJvbSBzY2kuaA0KLSBy
ZW1vdmVkIGV4dHJhIGluY2x1ZGUgaW4gbWVtY3B5LXt0by9mcm9tfWlvLmMgZmlsZXMNCi0gRml4
IHRhYnMgaW4gTUFJTlRBSU5FUlMgZmlsZQ0KLSByZW1vdmUgZHVwbGljYXRlIFNQRFggdGFnIGZy
b20gc2NtaS1zaG1lbS5jDQotIGFkZCBjYXN0IHRvIEFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRF
UiB0byBzZXR0bGUgdGhlIHNpZ24gc2luY2UNCkFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRFUiBp
cyAtMyB3aGljaCBpcyBwYXJ0IG9mIHRoZSBzcGVjIGFuZCByZXNwDQppcyB0aGUgZGVmYXVsdCBz
bWNjYyBjYWxsIHN0cnVjdHVyZS4NCi0gdXBkYXRlIGZyZWVfY2hhbm5lbF9saXN0LiBBZGQgc3Bp
bmxvY2sgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gYW5kDQphIGNvbW1lbnQgd2l0aCBhIGRlc2Ny
aXB0aW9uIG9mIHRoZSBmdW5jdGlvbiB3b3JrDQotIHByZXNlcnZlIGVycm9yIG9mIHNtY19jcmVh
dGVfY2hhbm5lbCBpbiBzY21pX3Byb2JlDQotIGNoZWNrIHNjbWkgc2htZW0gYWRkcmVzcyBhbGln
bm1lbnQgYXMgd2VsIGFzIGl0IGlzIGRvbmUgZm9yIHNpemUNCi0gY2hlY2sgZm9yIGQtPmFyY2gu
c2NpX2RhdGEgIT0gTlVMTCBpbiBzY21pX2hhbmRsZV9jYWxsDQotIHVzZSBTQ01JX1NITUVNX01B
UFBFRCBzaXplIGZvciBpb21lbV9wZXJtaXRfYWNjZXNzDQotIGNoYW5nZSBsZW4gdHlwZSB0byB1
bnNpZ25lZCBpbiBzaG1lbV97Z2V0fHB1dH1fbWVzc2FnZQ0KLSByZW5hbWUgc2htZW1fY2hhbm5l
bF9pc19mcmVlIHRvIHNobWVtX2NoYW5uZWxfc3RhdHVzDQotIGFkZCBjb21tZW50IGFib3V0IHNr
aXBwaW5nIG1lc3NhZ2Ugc3RhdHVzIHdoZW4gZ2V0dGluZyBtZXNzYWdlIHJlc3BvbnNlDQotIFNl
dCBjb3JyZWN0IGFnZW50X2lkIHJhbmdlcyBmb3IgZG9tMGxlc3MgYW5kIGEgdG9vbHN0YWNrLiBB
Z2VudF9pZCAwDQppcyBub3QgYmluZGVkIGZvciBkb20wIHNvIGNhbiBiZSByZXVzZWQuIEFsc28g
bWVudGlvbmVkIHRoYXQNClVJTlQ4X01BWCAoMjU1KSBpcyB0cmVhdGVkIGFzIGludmFsaWQgYWdl
bnRfaWQuDQotIFNwbGl0IGh5cGVydmlzb3IgYW5kIHRvb2xzdGFjayBjaGFuZ2VzIGludG8gc2Vw
YXJhdGUgY29tbWl0cw0KLSBtb3ZlIGluaXQgbGlzdCBhbmQgc3BpbiBpbml0IGFmdGVyIGluaXRp
YWwgY2hlY2tzIGluIHByb2JlIGNhbGwNCi0gZml4IHR5cG8gaW4gY29tbWVudHMNCi0gY2xlYW4g
cmVzb3VyY2VzIHdoZW4gc2NpX3JlZ2lzdGVyIHJldHVybnMgYW4gZXJyb3IuDQotIFNwbGl0IGh5
cGVydmlzb3IgYW5kIHRvb2xzdGFjayBjaGFuZ2VzIGludG8gc2VwYXJhdGUgY29tbWl0cw0KLSBy
ZXBocmFzZSBzZWN0aW9uIGFib3V0IC9maXJtd2FyZS9zY21pLiBNZW50aW9uZWQgdGhhdCB0aGlz
IG5vZGUgaXMNCnRha2VuIGZyb20gSG9zdCBEVCBhbmQgY29waWVkIHVubW9kaWZpZWQuDQotIGZp
eCB4ZW4scmVnIGFkZHJlc3MgZm9yIHNlY29uZGFyeSBkb21haW5zIGZvciBEb20wbGVzcyBjb25m
aWd1cmF0aW9uDQoNCkNoYW5nZXMgaW4gdjk6DQotIHRyZWF0IFNDSSBhcyBhIGdhdGUgZm9yIFhF
Tl9ET01DVExfKmFzc2lnbl9kZXZpY2U6IGFib3J0IGJlZm9yZQ0KSU9NTVUgaWYgc2NpX2RvX2Rv
bWN0bCgpIHJldHVybnMgYW4gZXJyb3Igb3RoZXIgdGhhbiAtRU5YSU8sIGluc3RlYWQNCm9mIHRy
eWluZyB0byBwcm9wYWdhdGUgU0NJIGVycm9ycyBhZnRlciBhIHN1Y2Nlc3NmdWwgSU9NTVUNCm9w
ZXJhdGlvbi4gVGhpcyBhdm9pZHMgcGFydGlhbCBzdWNjZXNzIGFuZCB0aGUgbmVlZCBmb3IgSU9N
TVUgcm9sbGJhY2suDQotIHJlbW92ZSBlYXJseSByZXR1cm4gZnJvbSBkb19kb21jdGwoKSBpbiB0
aGUgYXNzaWduX2RldmljZQ0KcGF0aCB0byBrZWVwIFJDVSBoYW5kbGluZyBpbnRhY3QuDQotIGNo
YW5nZSBJU19FTkFCTEVEKCopIHRvICNpZmRlZiBpbiBzY2lfZG9fZG9tY3RsIHF1YXJkDQotIHJl
d29yZCBjb21taXQgZGVzY3JpcHRpb24gdG8gcmVmZXIgdG8gbWVtY3B5X2Zyb21pbyBhbmQgbWVt
Y3B5X3RvaW8NCi0gb3JkZXJpbmcgb2JqLXkgaW4gTWFrZWZpbGUNCi0gcmVuYW1lIEFMTF9MSUJT
IHRvIEFSQ0hfTElCUw0KLSBkcm9wIGlvLmggYW5kIG1vdmUgZGVmaW5pdGlvbnMgdG8gdGhlIGNv
bW1vbiBoZWFkZXIsIGZpeCBjb21tZW50cyB0bw0KYmUgYXJjaCBuZXV0cmFsDQotIHVwZGF0ZSBj
b21tZW50cyBmb3IgbWVtY3B5X3tmcm9tL3RvfWlvIGltcGxlbWVudGF0aW9uDQotIHNvcnQgYW5k
IHJlZmFjdG9yIE1BSU5UQUlORVJTIGVudGllcw0KLSByZW1vdmUgU3B1cmlvdXMgY2hhbmdlcw0K
LSBhZGQgZXh0cmEgY2hlY2sgdG8gYXZvaWQgQVNTRVJUIHdoZW4gY2FsbGluZyB1bm1hcF9jaGFu
bmVsX21lbW9yeQ0KZnJvbSBhc3NpZ24gZGV2aWNlIG1ldGhvZA0KLSBzZXQgY29ycmVjdCB0eCBm
bGFnIHRvIFNDTUlfQkFTRV9BR0VOVF9QRVJNSVNTSU9OU19SRVNFVCB3aGVuDQpmcmVlaW5nIHJl
c291cmNlcy4gRmxhZyBzaG91bGQgYmUgc2V0IHRvIDEgYWNjb3JkaW5nIHRvIHRoZQ0Kc2VjdGlv
biA0LjIuMi4xMiBbMF0uDQotIGZpeCBkdCBub2RlIGNvcG1hcmluZw0KLSBtb3ZlZCBjaGFubmVs
LT5zaG1lbSBjaGVjayBmcm9tIEFTU0VSVCBpbiB1bm1hcF9tZW1vcnlfY2hhbm5lbCB0bw0KImlm
IiBzdGF0ZW1lbnQuIFRoaXMgd2lsbCBwcmV2ZW50IGZpcmluZyBBU1NFUlQgaWYNCnVubWFwX2No
YW5uZWxfbWVtb3J5IHdhcyBjYWxsZWQgdHdpY2Ugb24gdGhlIHNhbWUgY2hhbm5lbC4NCg0KQ2hh
bmdlcyBpbiB2ODoNCi0gY2hlY2sgZm9yIENPTkZJR19BUk1fU0NJIHRvIGJlIGViYWJsZWQgaW5z
dGVhZCBvZiBDT01GSUdfQVJNIGJlZm9yZQ0KY2FsbGluZyBzY2lfZG9fZG9tY3RsDQotIHJld29y
ayBzY2lfZG9fZG9tY3RsIGNhbGwgdG8gYXZvaWQgZXh0cmEgY2hlY2tzLCBpbXByb3ZlZCBlcnJv
cg0KaGFuZGxpbmcuDQotIGRvIG5vdCBwcm9wYWdhdGUgcmV0MSBpZiBzY2lfZG9fZG9tY3RsIHJl
dHVybmVkIHBvc2l0aXZlIHJldA0KLSB1cGRhdGVkIGNvbW1lbnQgaW4gZG9tY3RsLmMgY29kZQ0K
LSBzd2l0Y2hlZCB0byBvcmRlcmVkIGFjY2Vzc29ycyB0byBhZGRyZXNzIHRoZSBvcmRlcmluZyBh
bmQgYmFycmllcg0KY29uY2VybnMuDQotIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdG8gbWF0
Y2ggdGhlIGltcGxlbWVudGF0aW9uIGFuZCBleHBsaWNpdGx5DQpzdGF0ZSB0aGUgc3VwcG9ydGVk
IGFjY2VzcyBzaXplcyBhbmQgZ3JhbnVsYXJpdHkuDQotIHJlbmFtZSBtZW1jcHlfKiBpbXBsZW1l
bnRhdGlvbiBmaWxlcyB0byBtZW1jcHUtKiB0byBmb2xsb3cgbmFtaW5nDQpjb252ZW5zaW9uDQot
IGZpeCBpbmRlbnRhdGlvbiB0byBtYXRjaCBYZW4gc3R5bGUNCi0gZml4IGludGVuZGF0aW9uIHRv
IG1hdGNoIFhlbiBzdHlsZQ0KLSBtb3ZlIG1lbWNweS17ZnJvbS90b31pbyB0byBtb3JlIGNvbnZl
bmllbnQgbGlicmFyeSBwbGFjZQ0KLSB1cGRhdGUgeGVuX3NjbWkgZnVuY19pZCBpbiBjb21taXQg
ZGVzY3JpcHRpb24NCi0gdXBkYXRlZCBkb2N1bWVudGF0aW9uIHdpdGggdGhlIG5ldyBEVCBmb3Jt
YXQNCi0gdXBkYXRlZCBvcHRfZG9tMF9zY21pX2FnZW50X2lkIHNldHRpbmcgdG8gYXZvaWQgaXQg
dG8gYmUgZXF1YWwNClNDTUlfQUdFTlRfSURfSU5WQUxJRC4NCi0gY2hhbmdlZCBTQ01JX0FHRU5U
X0lEX0lOVkFMSUQgZnJvbSAweGZmIHRvIFVJTlQ4X01BWCB3aGljaCBtYWtlcw0KY29kZSBtb3Jl
IGNsZWFyIHNob3dpbmcgdGhhdCBVSU5UOF9NQVggaXMgdGhlYXRlZCBsaWtlIGludmFsaWQNCmFn
ZW50X2lkIGFuZCBjb3VsZG4ndCBiZSB1c2VkLiBBbHNvIGV4Y2x1ZGVkIFNDTUlfQUdFTlRfSURf
SU5WQUxJRA0KZnJvbSBhY2NlcHRhYmxlIHZhbHVlIHJhbmdlDQotIHJlbW92ZSBvdXRkYXRlZCB4
ZW4sY29uZmlnIHByb3BlcnR5IGlnbm9yZSwgYWRkZWQgeGVuLHNjaSBjb21wYXRpYmxlDQp0byBz
a2lwX21hdGNoZXMgaW4gaGFuZGxlX25vZGUNCi0gYWRkIGRvY3VtZW50YXRpb24gZm9yIHByZS1l
eGlzdGluZyBzY21pLXNtYy1wYXNzdGhyb3VnaCBjb21tYW5kIGxpbmUNCm9wdGlvbiBpbiBhbHBo
YWJldGljYWxseSBjb3JyZWN0IGxvY2F0aW9uIChpbiAncycgc2VjdGlvbikNCi0gYWRkIG5vdGUg
dG8gY29tbWl0IGRlc2NyaXB0aW9uIGFib3V0IGRvY3VtZW50YXRpb24gZm9yIHByZXZpb3VzbHkN
CnVuZG9jdW1lbnRlZCBzY21pLXNtYy1wYXNzdGhyb3VnaA0KLSBGaXggU01DIElEcyBpbiBEVCBl
eGFtcGxlcyAoWGVuIG1hbmFnZW1lbnQgdXNlcyAweDgyMDAwMDAzLCBEb20wIHVzZXMgMHg4MjAw
MDAwMikNCi0gQWRkIGV4cGxpY2l0IG5vdGUgZXhwbGFpbmluZyB3aHkgRG9tMCBhbmQgWGVuIGNo
YW5uZWxzIGRvIG5vdCBjb25mbGljdA0KLSBEb2N1bWVudCBkb20wbGVzcyBtdWx0aS1hZ2VudCBj
b25maWd1cmF0aW9uIGV4YW1wbGUgKHhlbixzY2lfdHlwZSAvIHhlbixzY2ktYWdlbnQtaWQpDQot
IEFkZCBzY21pX3hlbiBub2RlIHRvIGFnZW50LWRpc2NvdmVyeSBleGFtcGxlIHdpdGggI3NjbWkt
c2Vjb25kYXJ5LWFnZW50cy1jZWxscyA9IDINCi0gRHJvcCBkb20wPXNjaS1hZ2VudC1pZCBjb21t
YW5kIGxpbmUgaGFuZGxpbmc7IERvbTAgU0NNSSBpcyBub3cgZW5hYmxlZCB2aWENCiAgeGVuLGRv
bTAtc2NpLWFnZW50LWlkIGluIHRoZSB4ZW4sc2NpIERUIGNvbnRhaW5lcg0KLSBSZWZyZXNoIGRv
Y3MgYW5kIGV4YW1wbGVzIHRvIG1lbnRpb24gdGhlIERUIHByb3BlcnR5IGluc3RlYWQgb2YgdGhl
IGNtZGxpbmUgb3B0aW9uDQotIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1hdGNoIHRoZSBsYXN0
IERUIGZvcm1hdA0KLSBmaXhlZCBSU1Q6ICIuLi4gY29kZS1ibG9jazo6IGR0cyIgLT4gIi4uIGNv
ZGUtYmxvY2s6OiBkdHMiDQotIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggZG9tMGxlc3MgY29u
ZmlndXJhdGlvbiBleGFtcGxlDQotIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggbmV3IHBhcmFt
IHhlbixkb20wLXNjaS1hZ2VudC1pZA0KaW5zdGVhZCBvZiB0aGUgY29tbWFuZCBsaW5lIHBhcmFt
ZXRlcg0KDQpDaGFuZ2VzIGluIHY3Og0KLSB1cGRhdGUgZG9tY3RsIHRvIGJ1aWxkIG9uIGJvdGgg
QXJtIGFuZCB4ODYgcGxhdGZvcm1zDQotIG1vdmUgcmV0MSBkZWNsYXJhdGlvbiB0byB0aGUgdG9w
IG9mIHRoZSBmdW5jdGlvbiBhcyByZXF1aXJlZCBieSBjb2RlDQpzdHlsZQ0KLSB4ODYgZ3VpZGFu
Y2U6IHJlbW92ZWQgdGhlIHNwZWN1bGF0aXZlIG5vdGU7IGhlYWRlciBub3cganVzdCBzYXlzDQog
IGVhY2ggYXJjaCBzdXBwbGllcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9yIG1hY3JvLg0KLSBu
YW1lIHNwYWNpbmc6IGRyb3BwZWQgdGhlIGRvdWJsZS11bmRlcnNjb3JlOyB0aGUgaGVscGVycyBh
cmUgbm93DQogIG1lbWNweV9mcm9taW8gLyBtZW1jcHlfdG9pby4gVGhlIGhlYWRlciBhbHNvIGV4
cGxpY2l0bHkgYWxsb3dzIGFuDQogIGFyY2ggdG8gZGVmaW5lIHRoZXNlIGFzIG1hY3JvcyBiZWZv
cmUgaW5jbHVkaW5nIGl0Lg0KLSB1cGRhdGVkIGlvLmMgdG8ga2VlcCAzMi1iaXQgdHJhbnNmZXJz
IHNhZmUgb24gYXJtMzINCi0gbW92ZWQgdG8gX19yYXdfcmVhZCovX19yYXdfd3JpdGUqIGFjY2Vz
c29ycyB0byBhdm9pZCBlbmRpYW5uZXNzIGNvbnZlcnNpb24uDQotIHNwbGl0IHRoZSBoZWxwZXJz
IGludG8gc2VwYXJhdGUgY29tcGlsYXRpb24gdW5pdHMNCi0gcmV3b3JrIHNjbWkgbm9kZXMgZm9y
IHhlbiB0byBtYXRjaCBvbiBjb21wYXRpYmxlIHN0cmluZyBpbnN0ZWFkIG9mDQp0aGUgZGlyZWN0
IHBhdGgNCi0gdXBkYXRlIGRvY3VtZW50YXRpb24gaW4gc2VjdGlvbiBvZiB0aGUgeGVuX3NjbWkg
Y29uZmlndXJhdGlvbiB3aGljaA0KaXMgbWF0Y2hlZCBieSAieGVuLHNjaSIgY29tcGF0aWJsZSBp
bnN0ZWFkIG9mIHRoZSBkaXJlY3QgcGF0aC4NCg0KQ2hhbmdlcyBpbiB2NjoNCi0gY2hhbmdlIGlv
bW11X2RvX2RvbWN0bCBhbmQgc2NpX2RvX2RvbWN0bCBjb21tYW5kIG9yZGVyIGFuZA0KY2FsbCBz
Y2lfZG9fZG9tY3RsIGZpcnN0IHdoaWNoIHdpbGwgcHJvZHVjZSBjbGVhbmVyIGNvZGUgcGF0aC4N
CkFsc28gZHJvcHBlZCBjaGFuZ2luZyByZXR1cm4gY29kZSB3aGVuIGlvbW11IHdhcyBkaXNhYmxl
ZCBpbg0KaW9tbXVfZG9fZG9tY3RsLg0KLSBzb3J0ZWQgb2JqcyBpbiBNYWtlZmlsZSBhbGhhYmV0
aWNhbGx5DQotIGFkZGVkIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiBNYWtlZmlsZQ0KLSB1c2VkIHVp
bnR7Tn1fdCBpbnRlYWQgb2YgdXtOfQ0KLSBhZGQgY29tbWVudCBhYm91dCB3aHkgMzIgYml0IElP
IG9wZXJhdGlvbnMgd2VyZSB1c2VkDQotIHVwZGF0ZWQgY2FzdCBvcGVydGFpb25zIHRvIGF2b2lk
IGRyb3BwaW5nIGNvbnN0bmVzcyB3aGljaCBpcyB3cm9uZw0KLSBtb3ZlIGZ1bmN0aW9uIGRlZmlu
aXRpb25zIHRvIGdlbmVyaWMgcGxhY2Ugc28gdGhlIGNvdWxkIGJlIHJldXNlZCBieQ0Kb3RoZXIg
YXJjaA0KLSBhZGQgU1BEWCB0YWcgdG8gaW8uYw0KLSB1cGRhdGVkIHNjbWktc2htZW0gdG8gdXNl
IGlvLmggZnJvbSBnZW5lcmljIGxvY2F0aW9uDQotIHVwZGF0ZSBzY21pX2FnZW50X2lkIHBhcmFt
ZXRlciB0byBiZSBwcm92aWRlZCBpbnNpZGUgZG9tMD0gcGFyYW1ldGVyDQpsaXN0IGFuZCBoYXZl
IHRoZSBmb2xsb3dpbmcgZm9ybWF0ICJkb20wPXNjaS1hZ2VudC1pZD0wIg0KVGhpcyBjaGFuZ2Ug
d2FzIGRvbmUgYXMgYSByZXNwb25zZSBmb3IgU3RlZmFubyBjb21tZW50IGFuZA0KcmVxdWlyZXMg
YSBsb3Qgb2YgY29kZSBjaGFuZ2VzLCBidXQgcHJvZHVjZXMgbXVjaCBjbGVhbmVyIHNvbHV0aW9u
DQp0aGF0J3Mgd2h5IEkndmUgYWRkZWQgaXQgdG8gdGhlIGNvZGUuDQotIGZpeCBmaWxlIGNvbW1l
bnRzIGFuZCByZXR1cm4gY29kZXMNCi0gZml4IGxlbmdodCBjaGVja3MgaW4gc2htZW1fe2dldCxw
dXR9X21lc3NhZ2UgdG8gdXNlIG9mZnNldG9mDQotIHJlbW92ZSBsZW4gbWVtYmVyIGZyb20gc2Nt
aV9jaGFubmVsIHN0cnVjdHVyZSBhcyBpdCBpcyBub3QgdXNlZA0KLSBzZXQgc2NtaS1zZWNvbmRh
cnktYWdlbnRzIHByb3BlcnR5IHRvIGJlIG1hbmRhdG9yeSBzaW5jZSBpZiBubw0Kc2Vjb25kYXJ5
IGFnZW50cyB3ZXJlIHByb3ZpZGVkIHRoZW4gdGhlcmUgaXMgbm8gc2VuY2UgdG8gZW5hYmxlIHNj
bWkNCndoZW4gbm8gc2Vjb25kYXJ5IGFnZW50cyBhcmUgcG9wdWxhdGVkIHRvIHRoZSBEb21haW5z
DQotIHVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIGJvb3RpbmcudHh0LCBhZGRlZCB4ZW5fc2NtaSBu
b2RlIHRvIHRoZQ0KZXhhbXBsZQ0KLSBhZGp1c3QgZC0+YXJjaC5zY2lfZW5hYmxlZCB2YWx1ZSBp
biBzY21pX2RvbWFpbl9kZXN0cm95DQotIGZpeCBsb2NrIG1hbmFnZW1lbnQgaW4gc21jX2NyZWF0
ZV9jaGFubmVsIGNhbGwNCi0gYXZvaWQgZXh0cmEgbWFwX2NoYW5uZWxfbWVtb3J5IGNvbW1hbmQg
Zm9yIFhlbiBtYW5hZ2VtZW50IGNoYW5uZWwNCmJlY2F1c2UgY29sbGVjdF9hZ2VudF9pZCBjYWxs
IHVubWFwcyBtZW1vcnkgaWYgRE9NSURfWEVOIGlzIG5vdA0Kc2V0LiBTbyBmb3IgWGVuIG1hbmFn
ZW1lbnQgY2hhbm5lbCB3ZSBjYW4gaW5pdCBkb21haW5faWQgYWQgRE9NSURfWEVODQpiZWZvcmUg
Y2FsbGluZyBjb2xsZWN0X2FnZW50X2lkIHNvIG1lbW9yeSBzaG91bGRuJ3QgYmUgdW5tYXBwZWQu
DQotIHJlbW92ZSBhbGwgSFZDIG1lbnRpb25zIGZyb20gdGhlIG11bHRpLWFnZW50IGRvYw0KLSB1
cGRhdGUgc2NpLWFnZW50LWlkIHBhcmFtZXRlciBkZXNjcmlwdGlvbiBpbiB0aGUgZG9jdW1lbnRh
dGlvbg0KLSBhZGQgbWlzc2luZyBTaWduLW9mDQotIG1pbm9yIGZpeGVzIGFjcm9zcyB0aGUgZG9j
dW1lbnQNCg0KQ2hhbmdlcyBpbiB2NToNCi0gcmV0dXJuIC1FSU5WQUwgaWYgbWVkaWF0b3Igd2l0
aG91dCBhc3NpZ25fZHRfZGV2aWNlIHdhcyBwcm92aWRlZA0KLSBpbnZlcnQgcmV0dXJuIGNvZGUg
Y2hlY2sgZm9yIGlvbW11X2RvX2RvbWN0bCBpbg0KWEVOX0RPTUNUTF9hc3NpZ25fZGV2aWNlIGRv
bWN0bCBwcm9jZXNzaW5nIHRvIG1ha2UgY2xlYW5lciBjb2RlDQotIGNoYW5nZSAtRU5PVFNVUFAg
ZXJyb3IgY29kZSB0byAtRU5YSU8gaW4gc2NpX2RvX2RvbWN0bA0KLSBoYW5kbGUgLUVOWElPIHJl
dHVybiBjb21kZSBvZiBpb21tdV9kb19kb21jdGwNCi0gbGVhdmUgIWR0X2RldmljZV9pc19wcm90
ZWN0ZWQgY2hlY2sgaW4gaW9tbXVfZG9fZHRfZG9tY3RsIHRvIG1ha2UNCmNvZGUgd29yayB0aGUg
c2FtZSB3YXkgaXQncyBkb25lIGluICJoYW5kbGVfZGV2aWNlIiBjYWxsIHdoaWxlDQpjcmVhdGlu
ZyBod2RvbShkb20wKSBhbmQgImhhbmRsZV9wYXNzdGhyb3VnaF9wcm9wIiBjYWxsIGZvciBkb20w
bGVzcw0KY3JlYXRpb24NCi0gZHJvcCByZXR1cm4gY2hlY2sgZnJvbSBzY2lfYXNzaWduX2R0X2Rl
dmljZSBjYWxsIGFzIG5vdCBuZWVkZWQNCi0gZG8gbm90IHJldHVybiBFSU5WQUwgd2hlbiBhZGRp
Z25fZHRfZGV2aWNlIGlzIG5vdCBzZXQuIFRoYXQgaXMNCmJlY2F1c2UgdGhpcyBjYWxsYmFjayBp
cyBvcHRpb25hbCBhbmQgbm90IGltcGxlbWVudGVkIGluIHNpbmdsZS1hZ2VudCBkcml2ZXINCi0g
bW92ZSBtZW1jcHlfdG9pby9mcm9taW8gdG8gdGhlIGdlbmVyaWMgcGxhY2UNCi0gZml4IGRldmlj
ZS10cmVlIGV4YW1wbGUgZm9ybWF0IGluIGJvb3RpbmcudHh0LCBhZGRlZCAiOyIgYWZ0ZXIgIn0i
Lg0KLSB1cGRhdGUgZGVmaW5lIGluIHNjbWktcHJvdG8uaA0KLSB1cGRhdGUgZGVmaW5lIGluIHNj
bWktc2htZW0uaCBmaWxlDQotIHNjbWlfYXNzaWduX2RldmljZSAtIGRvIG5vdCBpZ25vcmUgLUVP
UE5PVFNVUFAgcmV0dXJuDQpjb2RlIG9mIHRoZSBkb19zbWNfeGZlcg0KLSByZW1vdmUgb3Zlcndy
aXRpbmcgYWdlbnRfY2hhbm5lbC0+YWdlbnRfaWQgYWZ0ZXINClNDTUlfQkFTRV9ESVNDT1ZFUl9B
R0VOVCBjYWxsDQotIGFkZCBtdWx0aS1hZ2VudCBmaWxlcyB0byB0aGUgTUFJTlRBSU5FUlMNCi0g
YWRkIFNDTUkgbXVsdGktYWdlbnQgZGVzY3JpcHRpb24gdG8gdGhlIFNVUFBPUlQubWQNCi0gaGFu
ZGxlIEFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRFUiByZXR1cm4gY29kZSBhbmQgcmV0dXJuIC1F
SU5WQUwNCmZvciBzbWMgY2FsbA0KLSB1cGRhdGVkIGNvbGxlY3RfYWdlbnRzIGZ1bmN0aW9uLiBT
ZXQgYWdlbnRfaWQgcGFyYW1ldGVyIGFzIG9wdGlvbmFsDQppbiBzY21pLXNlY29uZGFyeS1hZ2Vu
dHMgZGV2aWNlLXRyZWUgcHJvcGVydHkNCi0gaW50cm9kdWNlICIjc2NtaS1zZWNvbmRhcnktYWdl
bnRzLWNlbGxzIiBwYXJhbWV0ZXIgdG8gc2V0IGlmDQphZ2VudF9pZCB3YXMgcHJvdmlkZWQNCi0g
cmVhbm1lIHhlbixzY21pLXNlY29uZGFyeS1hZ2VudHMgcHJvcGVydHkgdG8gc2NtaS1zZWNvbmRh
cnktYWdlbnRzDQotIG1vdmUgbWVtY3B1X3RvaW8vZnJvbWlvIGZvciB0aGUgZ2VuZXJpYyBwbGFj
ZQ0KLSB1cGRhdGUgWGVuIHRvIGdldCBtYW5hZ2VtZW50IGNoYW5uZWwgZnJvbSAvY2hvc2VuL3hl
bixjb25maWcgbm9kZQ0KLSBnZXQgaHlwZXJ2aXNvciBjaGFubm5lbCBmcm9tIG5vZGUgaW5zdGVh
ZCBvZiB1c2luZyBoYXJkY29kZWQNCi0gdXBkYXRlIGhhbmRsaW5nIHNjbWkgYW5kIHNobWVtIG5v
ZGVzIGZvciB0aGUgZG9tYWluDQotIFNldCBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gc3VwcG9ydCBv
bmx5IEFybTY0DQotIHJld29yayBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gbGVhdmUgSG9zdCBEZXZp
Y2UtdHJlZSB1bm1vZGlmaWVkDQoNCkNoYW5nZXMgaW4gdjQ6DQotIHRvb2xzdGFjayBjb21tZW50
cyBmcm9tIEFudGhvbnkgUEVSQVJEDQotIGFkZGVkIGRvbTBsZXNzIHN1cHBvcnQNCi0gYWRkZWQg
ZG9jIGZvciAieGVuLHNjbWktc2Vjb25kYXJ5LWFnZW50cyINCg0KR3J5Z29yaWkgU3RyYXNoa28g
KDIpOg0KICB4ZW4vZG9tY3RsOiBjaGFpbiBTQ0kgaGFuZGxpbmcgYmVmb3JlIElPTU1VIGluIGFz
c2lnbl9kZXZpY2UgZG9tY3RsDQogIGRvY3M6IGFybTogYWRkIFNDSSBTQ01JIFNNQyBtdWx0aS1h
Z2VudCBkcml2ZXIgZG9jcw0KDQpPbGVrc2lpIE1vaXNpZWlldiAoNCk6DQogIHhlbjogYXJtOiBz
bWNjYzogYWRkIElOVkFMSURfUEFSQU1FVEVSIGVycm9yIGNvZGUNCiAgbGliL2FybTogQWRkIEkv
TyBtZW1vcnkgY29weSBoZWxwZXJzDQogIHhlbi9hcm06IHNjbWk6IGludHJvZHVjZSBTQ0kgU0NN
SSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyDQogIHRvb2xzL3hsL2xpYnhsOiB3aXJlIHVwIFNDTUkg
U01DIG11bHRpLWFnZW50IGNvbmZpZ3VyYXRpb24NCg0KIE1BSU5UQUlORVJTICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogU1VQUE9SVC5tZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsNCiAuLi4vYXJtL2Zpcm13YXJlL2FybS1zY21p
LnJzdCAgICAgICAgICAgICAgICAgfCA0MDUgKysrKysrKysrDQogZG9jcy9tYW4veGwuY2ZnLjUu
cG9kLmluICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsNCiBkb2NzL21pc2MvYXJtL2Rldmlj
ZS10cmVlL2Jvb3RpbmcudHh0ICAgICAgICAgfCAxOTUgKysrKysNCiB0b29scy9pbmNsdWRlL2xp
YnhsLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKw0KIHRvb2xzL2xpYnMvbGlnaHQv
bGlieGxfYXJtLmMgICAgICAgICAgICAgICAgICB8ICAxMyArDQogdG9vbHMvbGlicy9saWdodC9s
aWJ4bF90eXBlcy5pZGwgICAgICAgICAgICAgIHwgICA0ICstDQogdG9vbHMveGwveGxfcGFyc2Uu
YyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsNCiB4ZW4vYXJjaC9hcm0vTWFrZWZp
bGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KIHhlbi9hcmNoL2FybS9hcmNoLm1r
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogeGVuL2FyY2gvYXJtL2RvbTBsZXNz
LWJ1aWxkLmMgICAgICAgICAgICAgICAgIHwgIDE3ICsNCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1
aWxkLmMgICAgICAgICAgICAgICAgICAgfCAgNDMgKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9L
Y29uZmlnICAgICAgICAgICAgICAgICB8ICAxMiArDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL01h
a2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsNCiB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2Np
LmMgICAgICAgICAgICAgICAgICAgfCAgMzYgKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21p
LXByb3RvLmggICAgICAgICAgICB8IDE3NCArKysrDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3Nj
bWktc2htZW0uYyAgICAgICAgICAgIHwgMTI5ICsrKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9z
Y21pLXNobWVtLmggICAgICAgICAgICB8ICA0NSArDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3Nj
bWktc21jLW11bHRpYWdlbnQuYyAgIHwgODAwICsrKysrKysrKysrKysrKysrKw0KIHhlbi9hcmNo
L2FybS9pbmNsdWRlL2FzbS9maXJtd2FyZS9zY2kuaCAgICAgICB8ICAgOCArDQogeGVuL2FyY2gv
YXJtL2luY2x1ZGUvYXNtL3NtY2NjLmggICAgICAgICAgICAgIHwgICAxICsNCiB4ZW4vYXJjaC9h
cm0vbGliL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KIHhlbi9hcmNoL2Fy
bS9saWIvbWVtY3B5LWZyb21pby5jICAgICAgICAgICAgICB8ICA1NiArKw0KIHhlbi9hcmNoL2Fy
bS9saWIvbWVtY3B5LXRvaW8uYyAgICAgICAgICAgICAgICB8ICA1NiArKw0KIHhlbi9jb21tb24v
ZG9tY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArDQogeGVuL2RyaXZlcnMv
cGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYyAgICAgICAgIHwgICA2ICsNCiB4ZW4vaW5jbHVkZS9w
dWJsaWMvYXJjaC1hcm0uaCAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCiB4ZW4vaW5jbHVkZS94
ZW4vaW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKw0KIDI5IGZpbGVzIGNoYW5n
ZWQsIDIxMDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2
NDQgeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktcHJvdG8uaA0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1zaG1lbS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0
IHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXNobWVtLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
eGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYw0KIGNyZWF0ZSBtb2Rl
IDEwMDY0NCB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhl
bi9hcmNoL2FybS9saWIvbWVtY3B5LWZyb21pby5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9h
cmNoL2FybS9saWIvbWVtY3B5LXRvaW8uYw0KDQotLSANCjIuNDMuMA0KDQpiYXNlLWNvbW1pdDog
YWE3M2ExYjk5MzA5ZjIyZDliYmMyNjAzZDFiMjA2ZTcyOThkOTQ3Mw0KYnJhbmNoOiBzY21pX21h
X3Vwc3RydjE1


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470041.1678812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-0001vK-Md; Tue, 03 Nov 2026 14:47:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470041.1678812; Tue, 03 Nov 2026 14:47:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-0001t7-Fw; Tue, 03 Nov 2026 14:47:20 +0000
Received: by outflank-mailman (input) for mailman id 1470041;
 Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnC-0001aN-S9
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnC-007AP4-89
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-7
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:14 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=uTaUwrZac+JJJ0PRObR6xdXwKFVnkKfZ51S/8TMeXimQvgzuvVfQh7ZRTPEFXsdGDkFkJyEUZR3+5j4Kh4OV8G+QR+uON6IFcdDhNSYkmjM6obb6bvb8o2viEmz2bJClKPwTeAH9hFKGBmunDtF9bg0ZSURru6L294miJKzGhgITFBxODFD6l0qghiCR9ORKT1371HnB+tlXt4x/YXELpH5W6JedqC940ukHNcKNfXPpzVyLQ0UIHpDXVOyoJVUOKP3ZD6j9OrVQNgptJVZYGQ9gGfUWkby3uCg0jxrX97LnneaaxQ6ghTebEidUyuYWOqRN/2kL/nEFRVsIFRQcxA==
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=8fA3CqHYebGd6oJPTluQ2reoqkLALm9yC9nPzzSCDTU=;
 b=iPoxm7HnQg5Y2bMCn3/O8MOXyGzvn1hwiIs5bXPIkFX+QuYCBEhQ68nYczkWgBis+gWByNS8NzO2fyLPo8L1wmvTmVQ5ErGmc/q+BO/k5gJJUME/O93OHicMmyBDRcTT36ujfsS7hUW6cgeR16DIQMpgfHr1NvVqDGWNLybQlbtl2zCnWWZJAMuefip87Qtvq7lq1JSx8ZTpp3FRfekzzaod7yF7hc/VlrXGT4uREkYRAsESiVCp9pYcJGrggse0Vjodayn3RjRp6TzqdfEII8yZ+iBsN+ZTa9KrR1wlKG901nj/YXVhDOzrp/J8s7IHM851/531RmlddkYo7ijdMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8fA3CqHYebGd6oJPTluQ2reoqkLALm9yC9nPzzSCDTU=;
 b=nri6aMIGD4oWJqu2+rDnhZBmFYmQqreHjxAkBBB93t4FOOS+4zhkPVLawSXXs/CWC20iMiOoKg2hVcd0p6hoObFhUJXrIckYjrL7wKKYeghboA5oyPw/cHG6mVfIZ7Y6/4cuAxEMhwO1SS+HtxQbICYrcXK9rok9zCMy2zQbQvpQEUJTJFrfBuuAVkipgUxqvjp0utkY0CiOJbWOy2VlXyIqRxjvSuyqqgehj2VFj9xUuee7GaPttjq5wDDdsCO4xU//kRXMAmImuxSqhP4HK8wPTNMBFYYvTcOpdJTgp2OpZusP6ytBy0/sbmIHySGGTYDuKkS3v/w65DFk6j8prw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v15 4/6] xen/arm: scmi: introduce SCI SCMI SMC multi-agent
 driver
Thread-Topic: [PATCH v15 4/6] xen/arm: scmi: introduce SCI SCMI SMC
 multi-agent driver
Thread-Index: AQHda6I26px58jCqWUqZYATyqyQykw==
Date: Tue, 3 Nov 2026 14:47:13 +0000
Message-ID:
 <a918c12ec2c60f85fdbfd707e309669e2d173732.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 8bbc498c-f0e2-40b4-1cf6-08df39b959ac
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|6133799003|260925022911599003|260925021911599003|18002099003|22082099003|260925021311599003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261022113327099003|261022115727099003|261022105027099003|261021121427099003|261021130227099003|261021133027099003|261021123027099003|261021135927099003|261022075727099003|11063799006|38070700021|261026130827099003|261028144727099003|261026121527099003|261026135527099003|261026140227099003;
x-microsoft-antispam-message-info:
 ZIJw43+0NWpqYTR32sa0kLP61ygFV/3GgPjD8ZDtqfPwf/nS1DnQNLPLpceuw95pid2/u8uXvqXXlAUo8a0EQq6O8zRgmgidAejIf3AFftT1p04UOk5u6U6Jrz4lB5W9m2ZVcDvtnOUVyerHNRWyE5L7q8CF6gKo/0DOT2zDAyKTvw6LSIwVFKfmfQ6PiabtxexKB8mG4koYXCVdnkW16MlKdP7r5yRZPA3OkEygjwJFn7985n43J9ng7YQGG3QpFDseoAsKRt0cfsVuGNHNFaTR9AlKMHNJNKbLhNfWyaB4fHm88hPLHfwRR68pEeUvTbIUoKwlg3W9DlM/n/DxJPaj8xhh6+EgmqgdagLfsSv6pSCjTTBmzFx9OcunI1/6THAHhy6A++HUy0qvdNBoo3LyMCSdARdAPW3xB1Mc2Gf5wJoB0hxYSlX/ASReloe9V5c7A5RRIbFlTgMDYJD/3ES6XsSFd2DwH5NjjndLPe49pce/GPbnyogAMRa1z6+sVMnAUL4sH+xTlUMmj3UYqtmvRe/0lUhJcAH4//Yi1SHwdjwV/3ekxwPl8oXOeZlqyWKfK988dZ/KqKjxJho0b2Yz/LhleohvU7lHxQASvuG/l1xpwS7PyttHnF4uRojmgxqV2skcc2W3ZLkfdTVus+sc6EEhPLzbRyvFXbeRSlRi0Euli2iX178/c2N86O+l
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(6133799003)(260925022911599003)(260925021911599003)(18002099003)(22082099003)(260925021311599003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261022113327099003)(261022115727099003)(261022105027099003)(261021121427099003)(261021130227099003)(261021133027099003)(261021123027099003)(261021135927099003)(261022075727099003)(11063799006)(38070700021)(261026130827099003)(261028144727099003)(261026121527099003)(261026135527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?c3NQQWt3U0Y5b1poWjcrclA0RXJPeFIvclEyOVJCUFRwZ3NOK2Uwb2RQdVVu?=
 =?utf-8?B?alFTT3RJRnJ3c1J3TEs3enMvNnJ4aUdaOTdzZ2o2VlUzR2M1NjM2NFQ2MDNn?=
 =?utf-8?B?ZXg0bTQ1bVhtc2lxcy9oc2FyQ1l6eno4Tld1MXEwMWtlSUhhak4xN1cwcm9Z?=
 =?utf-8?B?OU9BNEx6Z3h6bzhQREJDZVcxSVhid1J6Y1N2c2I2RXNiVmNUWHZoZ1NNQ0V2?=
 =?utf-8?B?STlnUU14MDU0REJPUTZwVXUyRzdSa3Q3akRNd0N0cUZ1OWViTS9oRTJEajI5?=
 =?utf-8?B?NDhjdWVHWm55NVFyR3g3NUcrc2xQM1RMSmkwTjlVWHo3YzFmaDF6WVhPWlJB?=
 =?utf-8?B?VFBQc0lRMlY3QWo5RGo5bEc3NFNmc1FwNHBsbjVtMURMdkRBM3pia2NwWHRQ?=
 =?utf-8?B?MmFFcUtKcU5SbU1NUDBsZk1PV2IyM01xd0lxcWVHazY3WmlMZ3QvbUlHMDI0?=
 =?utf-8?B?LzcyYkwxRUxCOTV4ZkI2OTNlYWNQQkN2OWhCSmxuR1VobUZqRURYOFFoZDNJ?=
 =?utf-8?B?Y0duNEtmSHBONXpORERnK1pjNW9sS2FiUi9YYjZsSzB0ajd4ZlgrTldPbFBh?=
 =?utf-8?B?RTRFTE0wNWdaL09PQlNmbm4vbkJaVEFlaThiWWpJOERCQkl6bE9qeHhnWENw?=
 =?utf-8?B?SDk4Wk5XNnVPV3hjY3hER2pKd3NhRTNkdXAyS2RwbERtdC9wZ0lCdG1kQjA2?=
 =?utf-8?B?TGs1dzM3enJma3M0VzRLUlF4OWNadmxYbGp0S0ZrejYxck9VcmtCSlhyemN3?=
 =?utf-8?B?RkR1ZDRWdnJNRzNhNkFQcFAycStpOVhOZlorSTNxS1ZPdTczaUgyNi9ydzFs?=
 =?utf-8?B?MDRlQjdsRExmQ1p4WldOdFBzNTNhSEFkQjRiVThVM3pRZ0dmWU1NTjhwZm1p?=
 =?utf-8?B?MHdsV3FWcG1mZjZIUVlQUFY5QW5QalZyam1HM0xxUU9DNHBpOTBocU5Qalps?=
 =?utf-8?B?YndSeXdBUzZDcUVTdFF3c2tzdkJVMzdYZHppS1FkZlpIYU9WZUV5ZDliS0Jk?=
 =?utf-8?B?ZVlEaUh3WjNVVkpybU9hTU1xV0I0UEVkR3VWYkxHeUFENGpacmNEVzNGTjkz?=
 =?utf-8?B?VGlpNUNIM3ZURy9KRFFjV0R6V2F3WGtIVmptVGpxam12YTdZU282Y1hGQVJ1?=
 =?utf-8?B?ZTduaSt6UzZBbjMzL2kzcUV2eHdFdUhJa3BXUTh1NkFWSE9RR242KysxV3dy?=
 =?utf-8?B?cmZPN0RSbW85OFdaNTRUaUFqVkp2OEdPS1lScnUwQ3hnMmlrUWpmOTZEOXRw?=
 =?utf-8?B?RHEvOUpRTFBCK0lkUWQwemM4UGVxVXEvUzFqVjQwSWdOY2d5cENoTHM3SU93?=
 =?utf-8?B?Z0J0OUZGSEJpU005MmJPbktmQUw5WHdHbWFwYnVqclc0Y3U1bG5GZzdCa2hk?=
 =?utf-8?B?ODFsa1hVMEh3SnBBQXQrQlZBd2NmNlk2bWlrcEpVbUJISUlvM0ZVczlBSDRt?=
 =?utf-8?B?cGhpOGtOUXhGMVlLT2c2U1o2VmRHYWJCaTFmc1VhZDAyM2dIS1Vxa0lHZy9L?=
 =?utf-8?B?RVNjY0VBbXc1UHZuMjlDN2I5SGFMdHFjQUg0Y0t1WjhHMWkzbzhNM015ZDdT?=
 =?utf-8?B?TExYR1B5QlYySTlUeHFxdnBlOHYvTjkxZnRtU0krS3N3MG1yelVJRnMvS1ZF?=
 =?utf-8?B?TFdNbWtRZE40UFpEVzBIVlUrSTZVcW9pRS9NQ1EzcDBNcnEwT0gwSS81K1hL?=
 =?utf-8?B?ZVFvcWQvTU1Kc3ptc05lV1NaN3AvaW5ON2hWOGxHL2pnQkdyN0hlVVRiQXN5?=
 =?utf-8?B?SkxaQ1ZLUWV0OHpTSXAyWXNibjVhVHNjcTlHWDBDZmtidlJRa3cyWlBnKzhV?=
 =?utf-8?B?a0xWZHNRVmo0Zk8xbWp4UjVUZld3Y3pseXM1ZnFKczFZbnYzeWxXNEQ2OEtu?=
 =?utf-8?B?UTdkb2R6dUdhWFRzTTg5ZFU5cVZVOE9CQkpMWTIvYjJCQjBWV2NMSjdmVEVs?=
 =?utf-8?B?WC9idjBhcERkbWN3MkJYTThJazcwdWI3dGdwQWFkcG9lZ0dzcU5GY1VGZGxI?=
 =?utf-8?B?cEVJVzJqWnNYbWZjc0RIejNOZ0hRa2lwblprck9xMjYyc1ErbWtlY3dhbWVo?=
 =?utf-8?B?QnhKSmcvZ0M3WWlJdDIrWWdMRmZkblgrV1p6SytISlRFd1o3VTFRR0ZaMW9h?=
 =?utf-8?B?YWVzWkRzRGwxUkl5RHhaQXlLOWxTektkQndNU1J0c3l1WTVLb1E0a2FHY28v?=
 =?utf-8?B?NkhhY285YUZGdEdxd1lHYm14WUtTT1RYSlJWSTFaLyt4R1hFdHlaOHdabG1l?=
 =?utf-8?B?VzRZRGNyQm5rWWthcTZXOTk3RXljQm9UWDZ5dHFvZnZKSmhMM2d3VzVnT2hn?=
 =?utf-8?B?REZOam1mVGx1Tzl1UW9OUnBGY2oxaUcvaGx0bmVqay84cXpEdkhLaUNTT2N1?=
 =?utf-8?Q?O7ZpY9xWheu7V6Eo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8bbc498c-f0e2-40b4-1cf6-08df39b959ac
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:13.7104
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: pnsL8XeLV7BEB0uMQu+Q7Uou7RZMXQi3fVQejQSj/ifFLwP6beXNcpDGyYX+TI6FEJ518AXC2chbyTdZD12rgqsP3I/Ju4T4yFWWl4WzBWk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717238-C4D444F7-B3C447FE/0/0
X-purgate-type: clean
X-purgate-size: 96676

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFNDSSBkcml2ZXIgdG8gc3VwcG9ydCBmb3IgQVJNIEVMMyBU
cnVzdGVkIEZpcm13YXJlLUENCihURi1BKSB3aGljaCBwcm92aWRlcyBTQ01JIGludGVyZmFjZSB3
aXRoIG11bHRpLWFnZW50IHN1cHBvcnQsIGFzIHNob3duDQpiZWxvdy4NCg0KICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQogIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwNCiAgfCBFTDMgVEYtQSBTQ01JICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfA0KICArLS0tLS0tLSstLSstLS0tLS0tKy0tKy0tLS0tLS0rLS0rLS0tLS0t
LSsrDQogIHxzaG1lbTEgfCAgfHNobWVtMCB8ICB8c2htZW0yIHwgIHxzaG1lbVggfA0KICArLS0t
LS0rLSsgICstLS0rLS0tKyAgKy0tKy0tLS0rICArLS0tKy0tLSsNCnNtYy1pZDEgfCAgICAgICAg
fCAgICAgICAgIHwgICAgICAgICAgIHwNCmFnZW50MSAgfCAgICAgICAgfCAgICAgICAgIHwgICAg
ICAgICAgIHwNCiAgKy0tLS0tdi0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKw0K
ICB8ICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICB8DQogIHwgICAgICAg
ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgIHwNCiAgKy0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKw0KICAgICAgICAgc21jLWlkMCB8ICBzbWMtaWQyfCAg
ICBzbWMtaWRYfA0KICAgICAgICAgYWdlbnQwICB8ICBhZ2VudDIgfCAgICBhZ2VudFggfA0KICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KICAgICAgICAgICAgKy0tLS12
LS0tKyAgKy0tdi0tLS0tKyAgKy0tdi0tLS0tKw0KICAgICAgICAgICAgfCAgICAgICAgfCAgfCAg
ICAgICAgfCAgfCAgICAgICAgfA0KICAgICAgICAgICAgfCBEb20wICAgfCAgfCBEb20xICAgfCAg
fCBEb21YICAgfA0KICAgICAgICAgICAgfCAgICAgICAgfCAgfCAgICAgICAgfCAgfCAgICAgICAg
fA0KICAgICAgICAgICAgfCAgICAgICAgfCAgfCAgICAgICAgfCAgfCAgICAgICAgfA0KICAgICAg
ICAgICAgKy0tLS0tLS0tKyAgKy0tLS0tLS0tKyAgKy0tLS0tLS0tKw0KDQpUaGUgRUwzIFNDTUkg
bXVsdGktYWdlbnQgZmlybXdhcmUgaXMgZXhwZWN0ZWQgdG8gcHJvdmlkZSBTQ01JIFNNQyBzaGFy
ZWQNCm1lbW9yeSB0cmFuc3BvcnQgZm9yIGV2ZXJ5IEFnZW50IGluIHRoZSBzeXN0ZW0uDQoNClRo
ZSBTQ01JIEFnZW50IHRyYW5zcG9ydCBjaGFubmVsIGRlZmluZWQgYnkgcGFpcjoNCiAtIHNtYy1p
ZDogU01DIGlkIHVzZWQgZm9yIERvb3JiZWxsDQogLSBzaG1lbTogc2hhcmVkIG1lbW9yeSBmb3Ig
bWVzc2FnZXMgdHJhbnNmZXIsIFhlbiBwYWdlDQogYWxpZ25lZC4gU2hhcmVkIG1lbW9yeSBpcyBt
YXBwZWQgd2l0aCB0aGUgZm9sbG93aW5nIGZsYWdzOg0KIE1UX0RFVklDRV9uR25SRS4NCg0KVGhl
IGZvbGxvd2luZyBTQ01JIEFnZW50cyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCBieSBTQ01J
IEZXIHRvIGVuYWJsZSBTQ01JDQptdWx0aS1hZ2VudCBmdW5jdGlvbmFsaXR5IHVuZGVyIFhlbjoN
Ci0gWGVuIG1hbmFnZW1lbnQgYWdlbnQ6IHRydXN0ZWQgYWdlbnRzIHRoYXQgYWNjZXNzZXMgdG8g
dGhlIEJhc2UgUHJvdG9jb2wNCmNvbW1hbmRzIHRvIGNvbmZpZ3VyZSBhZ2VudCBzcGVjaWZpYyBw
ZXJtaXNzaW9ucw0KLSBPU1BNIFZNIGFnZW50czogbm9uLXRydXN0ZWQgYWdlbnQsIG9uZSBmb3Ig
ZWFjaCBHdWVzdCBkb21haW4gd2hpY2ggaXMNCiAgYWxsb3dlZCBkaXJlY3QgSFcgYWNjZXNzLiBB
dCBsZWFzdCBvbmUgT1NQTSBWTSBhZ2VudCBoYXMgdG8gYmUgcHJvdmlkZWQNCiAgYnkgRlcgaWYg
SFcgaXMgaGFuZGxlZCBvbmx5IGJ5IERvbTAgb3IgRHJpdmVyIERvbWFpbi4NCg0KVGhlIEVMMyBT
Q01JIEZXIGlzIGV4cGVjdGVkIHRvIGltcGxlbWVudCBmb2xsb3dpbmcgQmFzZSBwcm90b2NvbCBt
ZXNzYWdlczoNCi0gQkFTRV9ESVNDT1ZFUl9BR0VOVCAocmVxdWlyZWQgZm9yIFhlbiBhbmQgc2Vj
b25kYXJ5IGFnZW50cyB3aXRob3V0IHJlZykNCi0gQkFTRV9SRVNFVF9BR0VOVF9DT05GSUdVUkFU
SU9OIChvcHRpb25hbCkNCi0gQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TIChvcHRpb25hbCkN
Cg0KVGhlIGRyaXZlciBiaW5kcyB0byB0aGUgYXJtLHNjbWktc21jIG1hbmFnZW1lbnQgbm9kZSBp
bnNpZGUgYSBYZW4tc3BlY2lmaWMNCmNvbnRhaW5lciBjb21wYXRpYmxlIHdpdGggeGVuLHNjaSB1
bmRlciAvY2hvc2VuL3hlbi4gT3RoZXIgU0NNSSBub2RlcywNCmluY2x1ZGluZyB0aGUgaG9zdCAv
ZmlybXdhcmUvc2NtaSwgYXJlIGlnbm9yZWQgYnkgdGhlIG1lZGlhdG9yLg0KDQpEZXNjcmliZSBz
ZWNvbmRhcnkgYWdlbnRzIGFzIHhlbixzY21pLWFnZW50IGNoaWxkcmVuIG9mIGFuIGFnZW50cyBu
b2RlDQppbnNpZGUgdGhlIHNhbWUgY29udGFpbmVyLiBUaGUgYWdlbnRzIG5vZGUgdXNlcyAjYWRk
cmVzcy1jZWxscyA9IDwxPiBhbmQNCmAjc2l6ZS1jZWxscyA9IDwwPmAuIEVhY2ggY2hpbGQgcHJv
dmlkZXMgYXJtLHNtYy1pZCBhbmQgYSBzaW5nbGUgc2htZW0gcGhhbmRsZS4NClRoZSBvcHRpb25h
bCBzaW5nbGUtY2VsbCByZWcgcHJvcGVydHkgc3VwcGxpZXMgdGhlIFNDTUkgYWdlbnQgSUQgKDAu
LjI1NCkuDQpXaGVuIHJlZyBpcyBhYnNlbnQsIFhlbiBkaXNjb3ZlcnMgdGhlIElEIHVzaW5nIEJB
U0VfRElTQ09WRVJfQUdFTlQgb24gdGhhdA0KY2hhbm5lbC4gVXNlIGFnZW50QDxpZD4gZm9yIGFu
IGV4cGxpY2l0IElELCBhbmQgYSBub2RlIG5hbWUgd2l0aG91dCBhIHVuaXQNCmFkZHJlc3MgZm9y
IGRpc2NvdmVyeS4gRGlzYWJsZWQgYWdlbnQgbm9kZXMgYXJlIGlnbm9yZWQ7IGF0IGxlYXN0IG9u
ZQ0KZW5hYmxlZCBzZWNvbmRhcnkgYWdlbnQgaXMgcmVxdWlyZWQuDQoNClJlc29sdmUgZGlzY292
ZXJlZCBJRHMgYmVmb3JlIGFkZGluZyBjaGFubmVscyB0byB0aGUgbGlzdCwgc28gZHVwbGljYXRl
DQpJRHMgYXJlIHJlamVjdGVkIGNvbnNpc3RlbnRseSwgaW5jbHVkaW5nIGNsYXNoZXMgd2l0aCBY
ZW4ncyBtYW5hZ2VtZW50DQphZ2VudC4gRXhwbGljaXQgSURzIGF2b2lkIG1hcHBpbmcgYW5kIHBy
b2Jpbmcgc2Vjb25kYXJ5IGNoYW5uZWxzIGR1cmluZw0KaW5pdGlhbGl6YXRpb24uIFhlbiBhbHdh
eXMgZGlzY292ZXJzIGl0cyBvd24gbWFuYWdlbWVudCBhZ2VudCBJRC4NCg0KS2VlcCBzaGFyZWQt
bWVtb3J5IG5vZGVzIHVuZGVyIHhlbl9zY21pX2NvbmZpZyBhbmQgbGVhdmUgdGhlIHBsYXRmb3Jt
J3MNCmV4aXN0aW5nIC9maXJtd2FyZS9zY21pIGFuZCBob3N0IE9TUE0gc2hhcmVkLW1lbW9yeSBu
b2RlIHVuY2hhbmdlZC4gQ2hhbm5lbA0Kbm9kZXMgZGVzY3JpYmUgbG9jYXRpb25zLCByYXRoZXIg
dGhhbiByZXNlcnZlIG1lbW9yeTogaWYgZmlybXdhcmUgYnVmZmVycw0Kb2NjdXB5IHN5c3RlbSBS
QU0sIHRoZSBwbGF0Zm9ybSBEVCBtdXN0IHJlc2VydmUgdGhlIHdob2xlIGZpcm13YXJlLW93bmVk
DQpyYW5nZSBpbiAvcmVzZXJ2ZWQtbWVtb3J5IGJlZm9yZSBYZW4gYm9vdHMuIEEgc2luZ2xlIHJl
c2VydmF0aW9uIG1heSBjb3Zlcg0KbXVsdGlwbGUgY2hhbm5lbHMsIGluY2x1ZGluZyB1bnVzZWQg
b25lcy4gU1JBTSBvdXRzaWRlIHN5c3RlbSBSQU0gZG9lcw0Kbm90IHJlcXVpcmUgYSBSQU0gcmVz
ZXJ2YXRpb24uIENoYW5uZWwgbm9kZXMgbmVlZCBub3QgYmUgbW92ZWQgaW50bw0KL3Jlc2VydmVk
LW1lbW9yeS4NCg0KRm9yIGV4YW1wbGU6DQoNCi8gew0KICAgICNhZGRyZXNzLWNlbGxzID0gPDI+
Ow0KICAgICNzaXplLWNlbGxzID0gPDI+Ow0KDQogICAgc2NtaV9zaG1fMDogc3JhbUA0N2ZmMDAw
MCB7DQogICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0KICAgICAgICByZWcg
PSA8MHgwIDB4NDdmZjAwMDAgMHgwIDB4MTAwMD47DQogICAgfTsNCg0KICAgIGZpcm13YXJlIHsN
CiAgICAgICAgc2NtaTogc2NtaSB7DQogICAgICAgICAgICBjb21wYXRpYmxlID0gImFybSxzY21p
LXNtYyI7DQogICAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDI+Ow0KICAgICAgICAg
ICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47DQogICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsN
CiAgICAgICAgICAgIHNobWVtID0gPCZzY21pX3NobV8wPjsNCiAgICAgICAgfTsNCiAgICB9Ow0K
DQogICAgY2hvc2VuIHsNCiAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8Mj47DQogICAgICAgICNz
aXplLWNlbGxzID0gPDI+Ow0KICAgICAgICByYW5nZXM7DQoNCiAgICAgICAgeGVuIHsNCiAgICAg
ICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDI+Ow0KICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8
Mj47DQogICAgICAgICAgICByYW5nZXM7DQoNCiAgICAgICAgICAgIHhlbl9zY21pX2NvbmZpZyB7
DQogICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2NpIjsNCiAgICAgICAgICAgICAg
ICAjYWRkcmVzcy1jZWxscyA9IDwyPjsNCiAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwy
PjsNCiAgICAgICAgICAgICAgICByYW5nZXM7DQogICAgICAgICAgICAgICAgeGVuLGRvbTAtc2Np
LWFnZW50LWlkID0gPDA+Ow0KDQogICAgICAgICAgICAgICAgLyogWGVuIG1hbmFnZW1lbnQgY2hh
bm5lbCAqLw0KICAgICAgICAgICAgICAgIHNjbWlfc2htXzE6IHNyYW1ANDdmZjEwMDAgew0KICAg
ICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCiAgICAgICAg
ICAgICAgICAgICAgcmVnID0gPDB4MCAweDQ3ZmYxMDAwIDB4MCAweDEwMDA+Ow0KICAgICAgICAg
ICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBzY21pX3NobV8yOiBzcmFtQDQ3ZmYyMDAwIHsN
CiAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQogICAg
ICAgICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0N2ZmMjAwMCAweDAgMHgxMDAwPjsNCiAgICAg
ICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgc2NtaV9zaG1fMzogc3JhbUA0N2ZmMzAw
MCB7DQogICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0K
ICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjMwMDAgMHgwIDB4MTAwMD47DQog
ICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHNjbWlfeGVuOiBzY21pIHsNCiAg
ICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zbWMiOw0KICAgICAgICAg
ICAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDM+Ow0KICAgICAgICAgICAgICAgICAg
ICAjYWRkcmVzcy1jZWxscyA9IDwxPjsNCiAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMg
PSA8MD47DQogICAgICAgICAgICAgICAgICAgICNhY2Nlc3MtY29udHJvbGxlci1jZWxscyA9IDwx
PjsNCiAgICAgICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzE+Ow0KICAgICAgICAg
ICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBhZ2VudHMgew0KICAgICAgICAgICAgICAgICAg
ICAjYWRkcmVzcy1jZWxscyA9IDwxPjsNCiAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMg
PSA8MD47DQoNCiAgICAgICAgICAgICAgICAgICAgYWdlbnRAMCB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBjb21wYXRpYmxlID0gInhlbixzY21pLWFnZW50IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZyA9IDwwPjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8
MHg4MjAwMDAwMj47DQogICAgICAgICAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1f
MD47DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgYWdlbnRA
MiB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInhlbixzY21pLWFnZW50
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwyPjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwND47DQogICAgICAgICAgICAgICAgICAgICAg
ICBzaG1lbSA9IDwmc2NtaV9zaG1fMj47DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAg
ICAgICAgICAgICAgICAgYWdlbnRAMyB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRp
YmxlID0gInhlbixzY21pLWFnZW50IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwz
PjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwNT47DQog
ICAgICAgICAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMz47DQogICAgICAgICAg
ICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH07DQogICAgICAg
IH07DQogICAgfTsNCn07DQoNClRvIGRpc2NvdmVyIGEgc2Vjb25kYXJ5IGFnZW50IElEIGluc3Rl
YWQsIG9taXQgcmVnIGZyb20gaXRzIG5vZGU6DQoNCiAgICBhZ2VudC1kb211IHsNCiAgICAgICAg
Y29tcGF0aWJsZSA9ICJ4ZW4sc2NtaS1hZ2VudCI7DQogICAgICAgIGFybSxzbWMtaWQgPSA8MHg4
MjAwMDAwND47DQogICAgICAgIHNobWVtID0gPCZzY21pX3NobV8yPjsNCiAgICB9Ow0KDQpUaGUg
YWdlbnRzIGNoaWxkIG5vZGVzIHJlcGxhY2UgdGhlIGZvcm1lciBzY21pLXNlY29uZGFyeS1hZ2Vu
dHMgbGlzdCBhbmQNCmAjc2NtaS1zZWNvbmRhcnktYWdlbnRzLWNlbGxzYCBwcm9wZXJ0eS4gVGhl
IHhlbixzY2kgc3VidHJlZSBpcyBvbWl0dGVkIGZyb20NCkRvbTAncyBEVDsgdGhlIGhvc3QgT1NQ
TSBjaGFubmVsIGlzIHBhc3NlZCB0aHJvdWdoIHdoZW4gU0NNSSBpcyBlbmFibGVkDQpmb3IgRG9t
MC4gRnVsbCBjb25maWd1cmF0aW9uIGFuZCBkb21haW4gZXhhbXBsZXMgYXJlIGluY2x1ZGVkIGlu
IHRoZQ0KYmluZGluZyBkb2N1bWVudGF0aW9uIGFuZCB0aGUgaHlwZXJ2aXNvciBndWlkZSBpbiBw
YXRjaCA2Lg0KDQpTTUMgSUQgQ29uZmlndXJhdGlvbiBhbmQgU0NNSSBDb25uZWN0aW9uIENvbXBh
dGliaWxpdHk6DQoNClRoZSBjb25maWd1cmF0aW9uIGFsbG93cyB0aGUgc2FtZSBkZXZpY2UgdHJl
ZSB0byB3b3JrIGZvciBib3RoIGJhcmVtZXRhbA0KTGludXggYW5kIExpbnV4IERvbTAuIFRoaXMg
aXMgYWNoaWV2ZWQgYmVjYXVzZToNCg0KLSBCYXJlbWV0YWwgTGludXggdXNlczogZnVuY19pZCAw
eDgyMDAwMDAyLCBzY21pLXNobWVtIDB4NDdmZjAwMDANCi0gRG9tMCBMaW51eCB1c2VzOiBmdW5j
X2lkIDB4ODIwMDAwMDIsIHNjbWktc2htZW0gMHg0N2ZmMDAwMA0KLSBYZW4gbWFuYWdlbWVudCB1
c2VzOiBmdW5jX2lkIDB4ODIwMDAwMDMsIHNjbWktc2htZW0gMHg0N2ZmMTAwMA0KDQpUaGlzIHdv
cmtzIGJlY2F1c2UgdGhlIHByaXZpbGVnZWQgU0NNSSBjb25uZWN0aW9uIGluIEVMMyBmaXJtd2Fy
ZSBpcyBub3QNCnRpZWQgZXhjbHVzaXZlbHkgdG8gZnVuY19pZCAweDgyMDAwMDAyLiBUaGUgRUwz
IGZpcm13YXJlIHN1cHBvcnRzIG11bHRpcGxlDQpTQ01JIGFnZW50cyB3aXRoIGRpZmZlcmVudCBT
TUMgSURzIGFuZCBzaGFyZWQgbWVtb3J5IHJlZ2lvbnMuIEVhY2ggYWdlbnQNCihEb20wIHZpYSAw
eDgyMDAwMDAyLCBYZW4gdmlhIDB4ODIwMDAwMDMsIG90aGVyIGRvbWFpbnMgdmlhIGFkZGl0aW9u
YWwNCmZ1bmNfaWRzKSBoYXMgYW4gaW5kZXBlbmRlbnQgY29tbXVuaWNhdGlvbiBjaGFubmVsIHRv
IHRoZSBmaXJtd2FyZS4NCg0KVGhlIGtleSBkaXN0aW5jdGlvbiBpcyB0aGF0IFhlbidzIG1hbmFn
ZW1lbnQgY2hhbm5lbCAoMHg4MjAwMDAwMykgaXMgdXNlZA0KZm9yIHByaXZpbGVnZWQgb3BlcmF0
aW9ucyBsaWtlIGFnZW50IGNvbmZpZ3VyYXRpb24gYW5kIGRldmljZSBwZXJtaXNzaW9ucw0KKEJB
U0VfU0VUX0RFVklDRV9QRVJNSVNTSU9OUywgQkFTRV9SRVNFVF9BR0VOVF9DT05GSUdVUkFUSU9O
KSwgd2hpbGUgRG9tMCdzDQpjaGFubmVsICgweDgyMDAwMDAyKSBpcyB1c2VkIGZvciBzdGFuZGFy
ZCBTQ01JIHByb3RvY29sIG9wZXJhdGlvbnMgKHBvd2VyLA0KY2xvY2ssIHNlbnNvciBtYW5hZ2Vt
ZW50LCBldGMuKS4gVGhlIGZpcm13YXJlIGVuZm9yY2VzIGRpZmZlcmVudCBwZXJtaXNzaW9uDQps
ZXZlbHMgZm9yIGVhY2ggYWdlbnQgYmFzZWQgb24gdGhlaXIgYWdlbnRfaWQsIG5vdCB0aGUgU01D
IElELg0KDQpUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNvbmZsaWN0OiBMaW51eCBEb20wIHJldGFp
bnMgaXRzIHN0YW5kYXJkIFNDTUkNCmNvbm5lY3Rpb24gZm9yIGhhcmR3YXJlIG1hbmFnZW1lbnQs
IHdoaWxlIFhlbiB1c2VzIGl0cyBzZXBhcmF0ZSBwcml2aWxlZ2VkDQpjaGFubmVsIGZvciBtZWRp
YXRpbmcgYWNjZXNzIGJldHdlZW4gbXVsdGlwbGUgZG9tYWlucy4NCg0KLSBJdCBpbXBsZW1lbnRz
IHRoZSBTQ0kgc3Vic3lzdGVtIGludGVyZmFjZSByZXF1aXJlZCBmb3IgY29uZmlndXJpbmcgYW5k
DQplbmFibGluZyBTQ01JIGZ1bmN0aW9uYWxpdHkgZm9yIERvbTAvaHdkb20gYW5kIEd1ZXN0IGRv
bWFpbnMuIFRvIGVuYWJsZQ0KU0NNSSBmdW5jdGlvbmFsaXR5IGZvciBkb21haW4gaXQgaGFzIHRv
IGJlIGNvbmZpZ3VyZWQgd2l0aCB1bmlxdWUgc3VwcG9ydGVkDQpTQ01JIEFnZW50X2lkIGFuZCB1
c2UgY29ycmVzcG9uZGluZyBTQ01JIFNNQyBzaGFyZWQgbWVtb3J5IHRyYW5zcG9ydA0KW3NtYy1p
ZCwgc2htZW1dIGRlZmluZWQgZm9yIHRoaXMgU0NNSSBBZ2VudF9pZC4NCi0gT25jZSBYZW4gZG9t
YWluIGlzIGNvbmZpZ3VyZWQgaXQgY2FuIGNvbW11bmljYXRlIHdpdGggRUwzIFNDTUkgRlc6DQog
IC0tIHplcm8tY29weSwgdGhlIGd1ZXN0IGRvbWFpbiBwdXRzIFNDTUkgbWVzc2FnZSBpbiBzaG1l
bTsNCiAgLS0gdGhlIGd1ZXN0IHRyaWdnZXJzIFNNQyBleGNlcHRpb24gd2l0aCBzbWMtaWQgKGRv
b3JiZWxsKTsNCiAgLS0gdGhlIFhlbiBkcml2ZXIgY2F0Y2hlcyBleGNlcHRpb24sIGRvIGNoZWNr
cyBhbmQgc3luY2hyb25vdXNseSBmb3J3YXJkcw0KICBpdCB0byBFTDMgRlcuDQotIHRoZSBYZW4g
ZHJpdmVyIHNlbmRzIEJBU0VfUkVTRVRfQUdFTlRfQ09ORklHVVJBVElPTiBtZXNzYWdlIHRvIFhl
bg0KICBtYW5hZ2VtZW50IGFnZW50IGNoYW5uZWwgb24gZG9tYWluIGRlc3Ryb3kgZXZlbnQuIFRo
aXMgYWxsb3dzIHRvIHJlc2V0DQogIHJlc291cmNlcyB1c2VkIGJ5IGRvbWFpbiBhbmQgc28gaW1w
bGVtZW50IHVzZS1jYXNlIGxpa2UgZG9tYWluIHJlYm9vdC4NCg0KRG9tMCBFbmFibGUgU0NNSSBT
TUM6DQogLSBzZXQgeGVuLGRvbTAtc2NpLWFnZW50LWlkPTxhZ2VudF9pZD4gdW5kZXIgdGhlIHhl
bixzY2kgY29udGFpbmVyIGluDQogICB0aGUgSG9zdCBEVC4gSWYgdGhlIHByb3BlcnR5IGlzIGFi
c2VudCwgU0NNSSBpcyBkaXNhYmxlZCBmb3IgRG9tMA0KICAgYW5kIGFsbCBTQ01JIG5vZGVzIGFy
ZSByZW1vdmVkIGZyb20gdGhlIERvbTAgRFQuIFRoZSBkcml2ZXIgdXBkYXRlcw0KICAgdGhlIERv
bTAgRFQgU0NNSSBub2RlICJhcm0sc21jLWlkIiB2YWx1ZSBhbmQgZml4ZXMgdXAgdGhlIHNobWVt
DQogICBub2RlIGFjY29yZGluZyB0byB0aGUgYXNzaWduZWQgYWdlbnRfaWQuDQoNCiAtIHBhc3Mg
ZG9tMD1zY2ktYWdlbnQtaWQ9PGFnZW50X2lkPiBpbiBYZW4gY29tbWFuZCBsaW5lLiBpZiBub3Qg
cHJvdmlkZWQNCiAgIFNDTUkgd2lsbCBiZSBkaXNhYmxlZCBmb3IgRG9tMCBhbmQgYWxsIFNDTUkg
bm9kZXMgcmVtb3ZlZCBmcm9tIERvbTAgRFQuDQogICBUaGUgZHJpdmVyIHVwZGF0ZXMgRG9tMCBE
VCBTQ01JIG5vZGUgImFybSxzbWMtaWQiIHZhbHVlIGFuZCBmaXggdXAgc2htZW0NCiAgIG5vZGUg
YWNjb3JkaW5nIHRvIGFzc2lnbmVkIGFnZW50X2lkLg0KDQpHdWVzdCBkb21haW5zIGVuYWJsZSBT
Q01JIFNNQzoNCiAtIHhsLmNmZzogYWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFzIGJlbG93DQoN
CiAgIGFybV9zY2kgPSAidHlwZT1zY21pX3NtY19tdWx0aWFnZW50LGFnZW50X2lkPTIiDQoNCiAt
IHhsLmNmZzogZW5hYmxlIGFjY2VzcyB0byB0aGUgImFybSxzY21pLXNobWVtIiB3aGljaCBzaG91
bGQNCiBjb3JyZXNwb25kIGFzc2lnbmVkIGFnZW50X2lkIGZvciB0aGUgZG9tYWluLCBmb3IgZXhh
bXBsZToNCg0KaW9tZW0gPSBbDQogICAgIjQ3ZmYyLDFAMjIwMDEiLA0KXQ0KDQogLSBEVDogYWRk
IFNDTUkgbm9kZXMgdG8gdGhlIERyaXZlciBkb21haW4gcGFydGlhbCBkZXZpY2UgdHJlZSBhcyBp
biB0aGUNCiBiZWxvdyBleGFtcGxlLiBUaGUgImFybSxzbWMtaWQiIHNob3VsZCBjb3JyZXNwb25k
IGFzc2lnbmVkIGFnZW50X2lkDQogZm9yIHRoZSBkb21haW46DQoNCnBhc3N0aHJvdWdoIHsNCiAg
IHNjbWlfc2htXzA6IHNyYW1AMjIwMDEwMDAgew0KICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNj
bWktc2htZW0iOw0KICAgICAgIHJlZyA9IDwweDAgMHgyMjAwMTAwMCAweDAgMHgxMDAwPjsNCiAg
IH07DQoNCiAgIGZpcm13YXJlIHsNCiAgICAgICAgY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsN
CiAgICAgICAgICAgIHNjbWk6IHNjbWkgew0KICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAi
YXJtLHNjbWktc21jIjsNCiAgICAgICAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDQ+
Ow0KICAgICAgICAgICAgICAgIHNobWVtID0gPCZzY21pX3NobV8wPjsNCiAgICAgICAgICAgICAg
ICAuLi4NCiAgICAgICAgICAgIH0NCiAgICB9DQp9DQoNClNDTUkgIjQuMi4xLjEgRGV2aWNlIHNw
ZWNpZmljIGFjY2VzcyBjb250cm9sIg0KDQpUaGUgWEVOIFNDSSBTQ01JIFNNQyBtdWx0aS1hZ2Vu
dCBkcml2ZXIgcGVyZm9ybXMgImFjY2Vzcy1jb250cm9sbGVyIg0KcHJvdmlkZXIgZnVuY3Rpb24g
aW4gY2FzZSBFTDMgU0NNSSBGVyBpbXBsZW1lbnRzIFNDTUkgIjQuMi4xLjEgRGV2aWNlDQpzcGVj
aWZpYyBhY2Nlc3MgY29udHJvbCIgYW5kIHByb3ZpZGVzIHRoZSBCQVNFX1NFVF9ERVZJQ0VfUEVS
TUlTU0lPTlMNCmNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBkZXZpY2VzIHRoYXQgYW4gYWdlbnRz
IGhhdmUgYWNjZXNzIHRvLg0KVGhlIERUIFNDTUkgbm9kZSBzaG91bGQgIiNhY2Nlc3MtY29udHJv
bGxlci1jZWxscz08MT4iIHByb3BlcnR5IGFuZCBEVA0KZGV2aWNlcyBzaG91bGQgYmUgYm91bmQg
dG8gdGhlIFhlbiBTQ01JLg0KDQomaTJjMSB7DQogICAgICAgIGFjY2Vzcy1jb250cm9sbGVycyA9
IDwmc2NtaSAwPjsNCn07DQoNClRoZSBEb20wIGFuZCBkb20wbGVzcyBkb21haW5zIERUIGRldmlj
ZXMgd2lsbCBiZSBwcm9jZXNzZWQNCmF1dG9tYXRpY2FsbHkgdGhyb3VnaCBzY2lfYXNzaWduX2R0
X2RldmljZSgpIGNhbGwsIGJ1dCB0byBhc3NpZ24gU0NNSQ0KZGV2aWNlcyBmcm9tIHRvb2xzdGFj
ayB0aGUgeGwuY2ZnOiJkdGRldiIgcHJvcGVydHkNCnNoYWxsIGJlIHVzZWQ6DQoNCmR0ZGV2ID0g
Ww0KICAgICIvc29jL2kyY0BlNjUwODAwMCIsDQpdDQoNCnhsLmNmZzpkdGRldiB3aWxsIGNvbnRh
aW4gYWxsIG5vZGVzIHdoaWNoIGFyZSB1bmRlciBTQ01JDQptYW5hZ2VtZW50IChub3Qgb25seSB0
aG9zZSB3aGljaCBhcmUgYmVoaW5kIElPTU1VKS4NCg0KQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNo
IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHByZS1leGlzdGluZw0Kc2NtaS1zbWMtcGFzc3Ro
cm91Z2ggY29tbWFuZCBsaW5lIG9wdGlvbiwgd2hpY2ggd2FzIHByZXZpb3VzbHkNCnVuZG9jdW1l
bnRlZC4NCg0KWzBdIGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4w
MDU2DQpbMV0gaHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9maXJtd2FyZS9hcm0sc2NtaS55YW1sDQpbMl0gaHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5v
cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hY2Nlc3MtY29udHJvbGxlcnMvYWNjZXNzLWNv
bnRyb2xsZXJzLnlhbWwNCg0KU2lnbmVkLW9mZi1ieTogR3J5Z29yaWkgU3RyYXNoa28gPGdyeWdv
cmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KU2lnbmVkLW9mZi1ieTogT2xla3NpaSBNb2lzaWVpZXYg
PG9sZWtzaWlfbW9pc2llaWV2QGVwYW0uY29tPg0KLS0tDQoNCkNoYW5nZXMgaW4gdjE1Og0KLSBy
ZW5hbWUgdGhlIHNoYXJlZC1tZW1vcnkgaGVscGVycyB0byBzY21pX3B1dF9tZXNzYWdlKCkgYW5k
DQogIHNjbWlfZ2V0X21lc3NhZ2UoKSwgYW5kIHJlbW92ZSByZWR1bmRhbnQgdm9sYXRpbGUgcGFy
YW1ldGVyIHF1YWxpZmllcnMNCi0gdXNlIHdyaXRlbF9yZWxheGVkKCkgY29uc2lzdGVudGx5IGZv
ciB0aGUgcmVxdWVzdCBjb250cm9sIGZpZWxkcyBhbmQNCiAgZXhwbGFpbiB0aGVpciBEZXZpY2Ut
bWVtb3J5IG9yZGVyaW5nDQotIHJldGFpbiB0aGUgbmF0dXJhbGx5IGFsaWduZWQgc2hhcmVkLW1l
bW9yeSBzdHJ1Y3R1cmUgYW5kIHZlcmlmeSBpdHMNCiAgdHJhbnNwb3J0IGZpZWxkIG9mZnNldHMg
YXQgY29tcGlsZSB0aW1lIGluc3RlYWQgb2YgYWRkaW5nIF9fcGFja2VkDQotIGNvcnJlY3QgdGhl
IFNNQyBkaWFnbm9zdGljIHdvcmRpbmcgYW5kIHdyYXAgbG9uZyBsaW5lcywgcmV0YWluaW5nIHRo
ZQ0KICBzaXplLWVycm9yIGRpYWdub3N0aWNzIGFzIGFncmVlZCBkdXJpbmcgcmV2aWV3DQotIGRv
Y3VtZW50IHRoZSBsaW1pdCBkZXJpdmVkIGZyb20gdGhlIEJhc2UgcHJvdG9jb2wncyBlaWdodC1i
aXQgYWdlbnQNCiAgY291bnQ6IHBsYXRmb3JtIElEIDAgaXMgc2VwYXJhdGUsIHNvIDI1NSBhZ2Vu
dHMgcGx1cyB0aGUgcGxhdGZvcm0gb2NjdXB5DQogIElEcyAwLi4yNTUgYW5kIGZpdCBpbiB0aGUg
ZWlnaHQtYml0IGRvbWFpbiBjb25maWd1cmF0aW9uIGZpZWxkDQotIHVzZSBwYWRkcl90IGZvciBj
aGFubmVsIHBoeXNpY2FsIGFkZHJlc3NlcywgUFJJcGFkZHIgZm9yIHRoZWlyDQogIGRpYWdub3N0
aWNzLCBhbmQgdWludDY0X3QgZm9yIERUIGFkZHJlc3MgYW5kIHNpemUgZGVjb2RpbmcNCi0gaW5p
dGlhbGl6ZSBjaGFubmVsIHN0YXR1cyB0aHJvdWdoIGFuIE1NSU8gYWNjZXNzb3INCi0gbWFyayBm
cmVlX2NoYW5uZWxfbGlzdCgpIGFuZCB0aGUgRG9tMCBEVCBjYWxsYmFjayBhcyBfX2luaXQNCi0g
bW92ZSB0aGUgcmVzcG9uc2UgdHJhY2UgYmVmb3JlIHRoZSBjbGVhbnVwIGxhYmVsLCBza2lwIGl0
IG9uIHNlbmQNCiAgZmFpbHVyZSwgYW5kIHJlbmFtZSB0aGUgbGFiZWwgdG8gY2xlYW51cA0KLSB1
c2UgJXBkIGZvciBkb21haW4gZGlhZ25vc3RpY3MNCg0KQ2hhbmdlcyBpbiB2MTQ6DQotIHJlcGxh
Y2UgdGhlIGZsYXQgc2Vjb25kYXJ5LWFnZW50IGxpc3QgYW5kIGl0cyBjZWxsLWNvdW50IHByb3Bl
cnR5IHdpdGgNCiAgeGVuLHNjbWktYWdlbnQgY2hpbGQgbm9kZXMgdW5kZXIgYWdlbnRzLCB1c2lu
ZyByZWcgZm9yIGFuIG9wdGlvbmFsIElEDQotIHNjb3BlIHNlY29uZGFyeS1hZ2VudCBwYXJzaW5n
IHRvIHRoZSBtYW5hZ2VtZW50IGNoYW5uZWwncyB4ZW4sc2NpIGNvbnRhaW5lcg0KLSByZXNvbHZl
IGRpc2NvdmVyZWQgSURzIGJlZm9yZSBpbnNlcnRpb24gYW5kIHJlamVjdCBkdXBsaWNhdGUgb3Ig
aW52YWxpZCBJRHMNCi0gdmFsaWRhdGUgc2hhcmVkLW1lbW9yeSBwaGFuZGxlcywgYWRkcmVzc2Vz
IGFuZCBub256ZXJvIHBhZ2UtYWxpZ25lZCBzaXplcw0KLSByZXRhaW4gc2hhcmVkLW1lbW9yeSBu
b2RlcyB1bmRlciB4ZW5fc2NtaV9jb25maWcgYW5kIGRvY3VtZW50IHBsYXRmb3JtDQogIHJlc2Vy
dmF0aW9ucyBzZXBhcmF0ZWx5LCBmb2xsb3dpbmcgdGhlIHJldmlldyBkaXNjdXNzaW9uDQotIHVw
ZGF0ZSBiaW5kaW5nIGV4YW1wbGVzIGFuZCBjb21taXQgZGVzY3JpcHRpb24gZm9yIHRoZSBjaGls
ZC1ub2RlIGZvcm1hdA0KLSBtYXRjaCB0aGUgY29uc3QtcXVhbGlmaWVkIFNDSSBkb21haW5fc2Fu
aXRpc2VfY29uZmlnIGNhbGxiYWNrIGludGVyZmFjZQ0KDQpDaGFuZ2VzIGluIHYxMzoNCi0gZml4
IHR5cG8gaW4gY29tbWl0IGRlc2NyaXB0aW9uDQoNCkNoYW5nZXMgaW4gdjEyOg0KLSByZWJhc2Ug
dG8gdGhlIGxhdGVzdCBzdGFnaW5nDQotIHJldHVybiBFSU5WQUwgaWYgeGVuLHNjaV90eXBlPXNj
bWlfc21jX211bHRpYWdlbnQgd2FzIHNldCBidXQNCkNPTkZJR19TQ01JX1NNQ19NQSBub3Qgc2V0
DQotIHB1dCBhcm1fc2NpX2FnZW50X2lkIGFmdGVyIHY4cl9lbDFfbXNhIGFuZCBiZWZvcmUgcGFk
IHRvIHByZXNlcnZlDQpvcmRlci4gUmVkdWNlZCBwYWQgZnJvbSB1aW50MTZfdCB0byB1aW50OF90
IHRvIGZpbGwgdGhlIGdhcCAod2FzIDINCmJ5dGVzIGJlZm9yZSBhZGRpbmcgYXJtX3NjaV9hZ2Vu
dF9pZCBhbmQgbGVmdCBvbmx5IDEsIHNvIHVzZWQgdWludDhfdA0KdG8gcHJlc2VydmUgc3RydWN0
dXJlIHNpemUpDQotIGZpeCBzY21pX2hhbmRsZV9jYWxsIHRvIHVzZSBhcm1fc21jY2NfZ3Vlc3Rf
c21jIGhlbHBlciBmdW5jdGlvbg0KLSB1cGRhdGUgc2VuZF9zbWNfbWVzc2FnZSBmdW5jdGlvbiB0
byB1c2UgbmV3IGZvcm1hdCBvZg0KYXJtX3NtY2NjXzFfMV9zbWMNCi0gZ3VhcmQgdGhlIERvbTAg
U0NNSSBhZ2VudCBpZCBzZXR1cCBpbiBjcmVhdGVfZG9tMCgpIGFuZCBNQSByZWxhdGVkDQpmdW5j
aXRvbnMgd2l0aCBDT05GSUdfU0NNSV9TTUNfTUENCi0gZml4IHRoZSB4ZW5fc2NtaV9jb25maWcg
ZXhhbXBsZSBpbiBib290aW5nLnR4dCwgd2hpY2ggcGxhY2VkIHByb3BlcnRpZXMNCmFmdGVyIHN1
Ym5vZGVzIGFuZCB3YXMgcmVqZWN0ZWQgYnkgZHRjIHdpdGggIlByb3BlcnRpZXMgbXVzdCBwcmVj
ZWRlDQpzdWJub2RlcyINCg0KQ2hhbmdlcyBpbiB2MTA6DQotIEZpeCB0YWJzIGluIE1BSU5UQUlO
RVJTIGZpbGUNCi0gcmVtb3ZlIGR1cGxpY2F0ZSBTUERYIHRhZyBmcm9tIHNjbWktc2htZW0uYw0K
LSBhZGQgY2FzdCB0byBBUk1fU01DQ0NfSU5WQUxJRF9QQVJBTUVURVIgdG8gc2V0dGxlIHRoZSBz
aWduIHNpbmNlDQpBUk1fU01DQ0NfSU5WQUxJRF9QQVJBTUVURVIgaXMgLTMgd2hpY2ggaXMgcGFy
dCBvZiB0aGUgc3BlYyBhbmQgcmVzcA0KaXMgdGhlIGRlZmF1bHQgc21jY2MgY2FsbCBzdHJ1Y3R1
cmUuDQotIHVwZGF0ZSBmcmVlX2NoYW5uZWxfbGlzdC4gQWRkIHNwaW5sb2NrIHRvIGF2b2lkIHJh
Y2UgY29uZGl0aW9uIGFuZA0KYSBjb21tZW50IHdpdGggYSBkZXNjcmlwdGlvbiBvZiB0aGUgZnVu
Y3Rpb24gd29yaw0KLSBwcmVzZXJ2ZSBlcnJvciBvZiBzbWNfY3JlYXRlX2NoYW5uZWwgaW4gc2Nt
aV9wcm9iZQ0KLSBjaGVjayBzY21pIHNobWVtIGFkZHJlc3MgYWxpZ25tZW50IGFzIHdlbCBhcyBp
dCBpcyBkb25lIGZvciBzaXplDQotIGNoZWNrIGZvciBkLT5hcmNoLnNjaV9kYXRhICE9IE5VTEwg
aW4gc2NtaV9oYW5kbGVfY2FsbA0KLSB1c2UgU0NNSV9TSE1FTV9NQVBQRUQgc2l6ZSBmb3IgaW9t
ZW1fcGVybWl0X2FjY2Vzcw0KLSBjaGFuZ2UgbGVuIHR5cGUgdG8gdW5zaWduZWQgaW4gc2htZW1f
e2dldHxwdXR9X21lc3NhZ2UNCi0gcmVuYW1lIHNobWVtX2NoYW5uZWxfaXNfZnJlZSB0byBzaG1l
bV9jaGFubmVsX3N0YXR1cw0KLSBhZGQgY29tbWVudCBhYm91dCBza2lwcGluZyBtZXNzYWdlIHN0
YXR1cyB3aGVuIGdldHRpbmcgbWVzc2FnZSByZXNwb25zZQ0KLSBTZXQgY29ycmVjdCBhZ2VudF9p
ZCByYW5nZXMgZm9yIGRvbTBsZXNzIGFuZCBhIHRvb2xzdGFjay4gQWdlbnRfaWQgMA0KaXMgbm90
IGJpbmRlZCBmb3IgZG9tMCBzbyBjYW4gYmUgcmV1c2VkLiBBbHNvIG1lbnRpb25lZCB0aGF0DQpV
SU5UOF9NQVggKDI1NSkgaXMgdHJlYXRlZCBhcyBpbnZhbGlkIGFnZW50X2lkLg0KLSBTcGxpdCBo
eXBlcnZpc29yIGFuZCB0b29sc3RhY2sgY2hhbmdlcyBpbnRvIHNlcGFyYXRlIGNvbW1pdHMNCi0g
bW92ZSBpbml0IGxpc3QgYW5kIHNwaW4gaW5pdCBhZnRlciBpbml0aWFsIGNoZWNrcyBpbiBwcm9i
ZSBjYWxsDQotIGZpeCB0eXBvIGluIGNvbW1lbnRzDQotIGNsZWFuIHJlc291cmNlcyB3aGVuIHNj
aV9yZWdpc3RlciByZXR1cm5zIGFuIGVycm9yLg0KDQpDaGFuZ2VzIGluIHY5Og0KLSBzb3J0IGFu
ZCByZWZhY3RvciBNQUlOVEFJTkVSUyBlbnRpZXMNCi0gcmVtb3ZlIFNwdXJpb3VzIGNoYW5nZXMN
Ci0gYWRkIGV4dHJhIGNoZWNrIHRvIGF2b2lkIEFTU0VSVCB3aGVuIGNhbGxpbmcgdW5tYXBfY2hh
bm5lbF9tZW1vcnkNCmZyb20gYXNzaWduIGRldmljZSBtZXRob2QNCi0gc2V0IGNvcnJlY3QgdHgg
ZmxhZyB0byBTQ01JX0JBU0VfQUdFTlRfUEVSTUlTU0lPTlNfUkVTRVQgd2hlbg0KZnJlZWluZyBy
ZXNvdXJjZXMuIEZsYWcgc2hvdWxkIGJlIHNldCB0byAxIGFjY29yZGluZyB0byB0aGUNCnNlY3Rp
b24gNC4yLjIuMTIgWzBdLg0KLSBmaXggZHQgbm9kZSBjb3BtYXJpbmcNCi0gbW92ZWQgY2hhbm5l
bC0+c2htZW0gY2hlY2sgZnJvbSBBU1NFUlQgaW4gdW5tYXBfbWVtb3J5X2NoYW5uZWwgdG8NCiJp
ZiIgc3RhdGVtZW50LiBUaGlzIHdpbGwgcHJldmVudCBmaXJpbmcgQVNTRVJUIGlmDQp1bm1hcF9j
aGFubmVsX21lbW9yeSB3YXMgY2FsbGVkIHR3aWNlIG9uIHRoZSBzYW1lIGNoYW5uZWwuDQoNCkNo
YW5nZXMgaW4gdjg6DQotIHVwZGF0ZSB4ZW5fc2NtaSBmdW5jX2lkIGluIGNvbW1pdCBkZXNjcmlw
dGlvbg0KLSB1cGRhdGVkIGRvY3VtZW50YXRpb24gd2l0aCB0aGUgbmV3IERUIGZvcm1hdA0KLSB1
cGRhdGVkIG9wdF9kb20wX3NjbWlfYWdlbnRfaWQgc2V0dGluZyB0byBhdm9pZCBpdCB0byBiZSBl
cXVhbA0KU0NNSV9BR0VOVF9JRF9JTlZBTElELg0KLSBjaGFuZ2VkIFNDTUlfQUdFTlRfSURfSU5W
QUxJRCBmcm9tIDB4ZmYgdG8gVUlOVDhfTUFYIHdoaWNoIG1ha2VzDQpjb2RlIG1vcmUgY2xlYXIg
c2hvd2luZyB0aGF0IFVJTlQ4X01BWCBpcyB0aGVhdGVkIGxpa2UgaW52YWxpZA0KYWdlbnRfaWQg
YW5kIGNvdWxkbid0IGJlIHVzZWQuIEFsc28gZXhjbHVkZWQgU0NNSV9BR0VOVF9JRF9JTlZBTElE
DQpmcm9tIGFjY2VwdGFibGUgdmFsdWUgcmFuZ2UNCi0gcmVtb3ZlIG91dGRhdGVkIHhlbixjb25m
aWcgcHJvcGVydHkgaWdub3JlLCBhZGRlZCB4ZW4sc2NpIGNvbXBhdGlibGUNCnRvIHNraXBfbWF0
Y2hlcyBpbiBoYW5kbGVfbm9kZQ0KLSBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgcHJlLWV4aXN0aW5n
IHNjbWktc21jLXBhc3N0aHJvdWdoIGNvbW1hbmQgbGluZQ0Kb3B0aW9uIGluIGFscGhhYmV0aWNh
bGx5IGNvcnJlY3QgbG9jYXRpb24gKGluICdzJyBzZWN0aW9uKQ0KLSBhZGQgbm90ZSB0byBjb21t
aXQgZGVzY3JpcHRpb24gYWJvdXQgZG9jdW1lbnRhdGlvbiBmb3IgcHJldmlvdXNseQ0KdW5kb2N1
bWVudGVkIHNjbWktc21jLXBhc3N0aHJvdWdoDQotIEZpeCBTTUMgSURzIGluIERUIGV4YW1wbGVz
IChYZW4gbWFuYWdlbWVudCB1c2VzIDB4ODIwMDAwMDMsIERvbTAgdXNlcyAweDgyMDAwMDAyKQ0K
LSBBZGQgZXhwbGljaXQgbm90ZSBleHBsYWluaW5nIHdoeSBEb20wIGFuZCBYZW4gY2hhbm5lbHMg
ZG8gbm90IGNvbmZsaWN0DQotIERvY3VtZW50IGRvbTBsZXNzIG11bHRpLWFnZW50IGNvbmZpZ3Vy
YXRpb24gZXhhbXBsZSAoeGVuLHNjaV90eXBlIC8geGVuLHNjaS1hZ2VudC1pZCkNCi0gQWRkIHNj
bWlfeGVuIG5vZGUgdG8gYWdlbnQtZGlzY292ZXJ5IGV4YW1wbGUgd2l0aCAjc2NtaS1zZWNvbmRh
cnktYWdlbnRzLWNlbGxzID0gMg0KLSBEcm9wIGRvbTA9c2NpLWFnZW50LWlkIGNvbW1hbmQgbGlu
ZSBoYW5kbGluZzsgRG9tMCBTQ01JIGlzIG5vdyBlbmFibGVkIHZpYQ0KICB4ZW4sZG9tMC1zY2kt
YWdlbnQtaWQgaW4gdGhlIHhlbixzY2kgRFQgY29udGFpbmVyDQotIFJlZnJlc2ggZG9jcyBhbmQg
ZXhhbXBsZXMgdG8gbWVudGlvbiB0aGUgRFQgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgY21kbGlu
ZSBvcHRpb24NCg0KQ2hhbmdlcyBpbiB2NzoNCi0gcmV3b3JrIHNjbWkgbm9kZXMgZm9yIHhlbiB0
byBtYXRjaCBvbiBjb21wYXRpYmxlIHN0cmluZyBpbnN0ZWFkIG9mDQp0aGUgZGlyZWN0IHBhdGgN
Cg0KQ2hhbmdlcyBpbiB2NjoNCi0gdXBkYXRlZCBzY21pLXNobWVtIHRvIHVzZSBpby5oIGZyb20g
Z2VuZXJpYyBsb2NhdGlvbg0KLSB1cGRhdGUgc2NtaV9hZ2VudF9pZCBwYXJhbWV0ZXIgdG8gYmUg
cHJvdmlkZWQgaW5zaWRlIGRvbTA9IHBhcmFtZXRlcg0KbGlzdCBhbmQgaGF2ZSB0aGUgZm9sbG93
aW5nIGZvcm1hdCAiZG9tMD1zY2ktYWdlbnQtaWQ9MCINClRoaXMgY2hhbmdlIHdhcyBkb25lIGFz
IGEgcmVzcG9uc2UgZm9yIFN0ZWZhbm8gY29tbWVudCBhbmQNCnJlcXVpcmVzIGEgbG90IG9mIGNv
ZGUgY2hhbmdlcywgYnV0IHByb2R1Y2VzIG11Y2ggY2xlYW5lciBzb2x1dGlvbg0KdGhhdCdzIHdo
eSBJJ3ZlIGFkZGVkIGl0IHRvIHRoZSBjb2RlLg0KLSBmaXggZmlsZSBjb21tZW50cyBhbmQgcmV0
dXJuIGNvZGVzDQotIGZpeCBsZW5naHQgY2hlY2tzIGluIHNobWVtX3tnZXQscHV0fV9tZXNzYWdl
IHRvIHVzZSBvZmZzZXRvZg0KLSByZW1vdmUgbGVuIG1lbWJlciBmcm9tIHNjbWlfY2hhbm5lbCBz
dHJ1Y3R1cmUgYXMgaXQgaXMgbm90IHVzZWQNCi0gc2V0IHNjbWktc2Vjb25kYXJ5LWFnZW50cyBw
cm9wZXJ0eSB0byBiZSBtYW5kYXRvcnkgc2luY2UgaWYgbm8NCnNlY29uZGFyeSBhZ2VudHMgd2Vy
ZSBwcm92aWRlZCB0aGVuIHRoZXJlIGlzIG5vIHNlbmNlIHRvIGVuYWJsZSBzY21pDQp3aGVuIG5v
IHNlY29uZGFyeSBhZ2VudHMgYXJlIHBvcHVsYXRlZCB0byB0aGUgRG9tYWlucw0KLSB1cGRhdGUg
ZG9jdW1lbnRhdGlvbiBpbiBib290aW5nLnR4dCwgYWRkZWQgeGVuX3NjbWkgbm9kZSB0byB0aGUN
CmV4YW1wbGUNCi0gYWRqdXN0IGQtPmFyY2guc2NpX2VuYWJsZWQgdmFsdWUgaW4gc2NtaV9kb21h
aW5fZGVzdHJveQ0KLSBmaXggbG9jayBtYW5hZ2VtZW50IGluIHNtY19jcmVhdGVfY2hhbm5lbCBj
YWxsDQotIGF2b2lkIGV4dHJhIG1hcF9jaGFubmVsX21lbW9yeSBjb21tYW5kIGZvciBYZW4gbWFu
YWdlbWVudCBjaGFubmVsDQpiZWNhdXNlIGNvbGxlY3RfYWdlbnRfaWQgY2FsbCB1bm1hcHMgbWVt
b3J5IGlmIERPTUlEX1hFTiBpcyBub3QNCnNldC4gU28gZm9yIFhlbiBtYW5hZ2VtZW50IGNoYW5u
ZWwgd2UgY2FuIGluaXQgZG9tYWluX2lkIGFkIERPTUlEX1hFTg0KYmVmb3JlIGNhbGxpbmcgY29s
bGVjdF9hZ2VudF9pZCBzbyBtZW1vcnkgc2hvdWxkbid0IGJlIHVubWFwcGVkLg0KDQpDaGFuZ2Vz
IGluIHY1Og0KLSBmaXggZGV2aWNlLXRyZWUgZXhhbXBsZSBmb3JtYXQgaW4gYm9vdGluZy50eHQs
IGFkZGVkICI7IiBhZnRlciAifSIuDQotIHVwZGF0ZSBkZWZpbmUgaW4gc2NtaS1wcm90by5oDQot
IHVwZGF0ZSBkZWZpbmUgaW4gc2NtaS1zaG1lbS5oIGZpbGUNCi0gc2NtaV9hc3NpZ25fZGV2aWNl
IC0gZG8gbm90IGlnbm9yZSAtRU9QTk9UU1VQUCByZXR1cm4NCmNvZGUgb2YgdGhlIGRvX3NtY194
ZmVyDQotIHJlbW92ZSBvdmVyd3JpdGluZyBhZ2VudF9jaGFubmVsLT5hZ2VudF9pZCBhZnRlcg0K
U0NNSV9CQVNFX0RJU0NPVkVSX0FHRU5UIGNhbGwNCi0gYWRkIG11bHRpLWFnZW50IGZpbGVzIHRv
IHRoZSBNQUlOVEFJTkVSUw0KLSBhZGQgU0NNSSBtdWx0aS1hZ2VudCBkZXNjcmlwdGlvbiB0byB0
aGUgU1VQUE9SVC5tZA0KLSBoYW5kbGUgQVJNX1NNQ0NDX0lOVkFMSURfUEFSQU1FVEVSIHJldHVy
biBjb2RlIGFuZCByZXR1cm4gLUVJTlZBTA0KZm9yIHNtYyBjYWxsDQotIHVwZGF0ZWQgY29sbGVj
dF9hZ2VudHMgZnVuY3Rpb24uIFNldCBhZ2VudF9pZCBwYXJhbWV0ZXIgYXMgb3B0aW9uYWwNCmlu
IHNjbWktc2Vjb25kYXJ5LWFnZW50cyBkZXZpY2UtdHJlZSBwcm9wZXJ0eQ0KLSBpbnRyb2R1Y2Ug
IiNzY21pLXNlY29uZGFyeS1hZ2VudHMtY2VsbHMiIHBhcmFtZXRlciB0byBzZXQgaWYNCmFnZW50
X2lkIHdhcyBwcm92aWRlZA0KLSByZWFubWUgeGVuLHNjbWktc2Vjb25kYXJ5LWFnZW50cyBwcm9w
ZXJ0eSB0byBzY21pLXNlY29uZGFyeS1hZ2VudHMNCi0gbW92ZSBtZW1jcHVfdG9pby9mcm9taW8g
Zm9yIHRoZSBnZW5lcmljIHBsYWNlDQotIHVwZGF0ZSBYZW4gdG8gZ2V0IG1hbmFnZW1lbnQgY2hh
bm5lbCBmcm9tIC9jaG9zZW4veGVuLGNvbmZpZyBub2RlDQotIGdldCBoeXBlcnZpc29yIGNoYW5u
bmVsIGZyb20gbm9kZSBpbnN0ZWFkIG9mIHVzaW5nIGhhcmRjb2RlZA0KLSB1cGRhdGUgaGFuZGxp
bmcgc2NtaSBhbmQgc2htZW0gbm9kZXMgZm9yIHRoZSBkb21haW4NCi0gU2V0IG11bHRpLWFnZW50
IGRyaXZlciB0byBzdXBwb3J0IG9ubHkgQXJtNjQNCg0KQ2hhbmdlcyBpbiB2NDoNCi0gdG9vbHN0
YWNrIGNvbW1lbnRzIGZyb20gQW50aG9ueSBQRVJBUkQNCi0gYWRkZWQgZG9tMGxlc3Mgc3VwcG9y
dA0KLSBhZGRlZCBkb2MgZm9yICJ4ZW4sc2NtaS1zZWNvbmRhcnktYWdlbnRzIg0KDQogTUFJTlRB
SU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogU1VQUE9SVC5t
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArDQogZG9jcy9taXNjL2Fy
bS9kZXZpY2UtdHJlZS9ib290aW5nLnR4dCAgICAgICB8IDE5NSArKysrKw0KIHhlbi9hcmNoL2Fy
bS9kb20wbGVzcy1idWlsZC5jICAgICAgICAgICAgICAgfCAgMTcgKw0KIHhlbi9hcmNoL2FybS9k
b21haW5fYnVpbGQuYyAgICAgICAgICAgICAgICAgfCAgNDMgKysNCiB4ZW4vYXJjaC9hcm0vZmly
bXdhcmUvS2NvbmZpZyAgICAgICAgICAgICAgIHwgIDEyICsNCiB4ZW4vYXJjaC9hcm0vZmlybXdh
cmUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCiB4ZW4vYXJjaC9hcm0vZmlybXdhcmUv
c2NtaS1wcm90by5oICAgICAgICAgIHwgMTc0ICsrKysrDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJl
L3NjbWktc2htZW0uYyAgICAgICAgICB8IDEyOSArKysrDQogeGVuL2FyY2gvYXJtL2Zpcm13YXJl
L3NjbWktc2htZW0uaCAgICAgICAgICB8ICA0NSArKw0KIHhlbi9hcmNoL2FybS9maXJtd2FyZS9z
Y21pLXNtYy1tdWx0aWFnZW50LmMgfCA4MDAgKysrKysrKysrKysrKysrKysrKysNCiB4ZW4vaW5j
bHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAgICAgICAgICAgICAgIHwgICA1ICstDQogMTIgZmlsZXMg
Y2hhbmdlZCwgMTQzMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXByb3RvLmgNCiBjcmVhdGUgbW9kZSAx
MDA2NDQgeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uYw0KIGNyZWF0ZSBtb2RlIDEw
MDY0NCB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1zaG1lbS5oDQogY3JlYXRlIG1vZGUgMTAw
NjQ0IHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXNtYy1tdWx0aWFnZW50LmMNCg0KZGlmZiAt
LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCmluZGV4IGM2MGFmYzkzYTUuLmNkNmQx
MjQzYmQgMTAwNjQ0DQotLS0gYS9NQUlOVEFJTkVSUw0KKysrIGIvTUFJTlRBSU5FUlMNCkBAIC01
MzQsNiArNTM0LDcgQEAgU0NJIE1FRElBVE9SUw0KIFI6CU9sZWtzaWkgTW9pc2llaWV2IDxvbGVr
c2lpX21vaXNpZWlldkBlcGFtLmNvbT4NCiBTOglTdXBwb3J0ZWQNCiBGOgl4ZW4vYXJjaC9hcm0v
ZmlybXdhcmUvc2NpLmMNCitGOgl4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS0qLltjaF0NCiBG
Ogl4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vZmlybXdhcmUvc2NpLmgNCiANCiBTRUFCSU9TIFVQ
U1RSRUFNDQpkaWZmIC0tZ2l0IGEvU1VQUE9SVC5tZCBiL1NVUFBPUlQubWQNCmluZGV4IGViMDcz
MzI0NjIuLmRjNDFhNmIyZjMgMTAwNjQ0DQotLS0gYS9TVVBQT1JULm1kDQorKysgYi9TVVBQT1JU
Lm1kDQpAQCAtOTcyLDYgKzk3MiwxNyBAQCBieSBod2RvbS4gU29tZSBwbGF0Zm9ybXMgdXNlIFND
TUkgZm9yIGFjY2VzcyB0byBzeXN0ZW0tbGV2ZWwgcmVzb3VyY2VzLg0KIA0KICAgICBTdGF0dXM6
IFN1cHBvcnRlZA0KIA0KKyMjIyBBcm06IFNDTUkgU01DIG11bHRpLWFnZW50IHN1cHBvcnQNCisN
CitFbmFibGUgc3VwcG9ydCBmb3IgdGhlIG11bHRpLWFnZW50IGNvbmZpZ3VyYXRpb24gb2YgdGhl
IEVMMyBGaXJtd2FyZSwgd2hpY2gNCithbGxvd3MgWGVuIHRvIHByb3ZpZGUgYW4gU0NNSSBpbnRl
cmZhY2UgdG8gdGhlIERvbWFpbnMuDQorWGVuIG1hbmFnZXMgYWNjZXNzIHBlcm1pc3Npb25zIHRv
IHRoZSBIVyByZXNvdXJjZXMgYW5kIHByb3ZpZGVzIGFuIFNDTUkgaW50ZXJmYWNlDQordG8gdGhl
IERvbWFpbnMuIEVhY2ggRG9tYWluIGlzIHJlcHJlc2VudGVkIGFzIGEgc2VwYXJhdGUgQWdlbnQs
IHdoaWNoIGNhbg0KK2NvbW11bmljYXRlIHdpdGggRUwzIEZpcm13YXJlIHVzaW5nIGEgZGVkaWNh
dGVkIHNoYXJlZCBtZW1vcnkgcmVnaW9uLCBhbmQNCitub3RpZmljYXRpb25zIGFyZSBwYXNzZWQg
dGhyb3VnaCBieSBYZW4uDQorDQorICAgIFN0YXR1cywgQVJNNjQ6IFRlY2ggUHJldmlldw0KKw0K
ICMjIyBBUk06IEd1ZXN0IFBTQ0kgc3VwcG9ydA0KIA0KIEVtdWxhdGVkIFBTQ0kgaW50ZXJmYWNl
IGV4cG9zZWQgdG8gZ3Vlc3RzLiBXZSBzdXBwb3J0IGFsbCBtYW5kYXRvcnkNCmRpZmYgLS1naXQg
YS9kb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3RpbmcudHh0IGIvZG9jcy9taXNjL2FybS9k
ZXZpY2UtdHJlZS9ib290aW5nLnR4dA0KaW5kZXggMzc4N2QyZTJiNi4uMTc4ZjI0OTNkOCAxMDA2
NDQNCi0tLSBhL2RvY3MvbWlzYy9hcm0vZGV2aWNlLXRyZWUvYm9vdGluZy50eHQNCisrKyBiL2Rv
Y3MvbWlzYy9hcm0vZGV2aWNlLXRyZWUvYm9vdGluZy50eHQNCkBAIC0zMzEsNiArMzMxLDIxIEBA
IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOg0KICAgICBTaG91bGQgYmUgdXNlZCB0b2dl
dGhlciB3aXRoIHNjbWktc21jLXBhc3N0aHJvdWdoIFhlbiBjb21tYW5kIGxpbmUNCiAgICAgb3B0
aW9uLg0KIA0KKyAgICAtICJzY21pX3NtY19tdWx0aWFnZW50Ig0KKw0KKyAgICBFbmFibGVzIEFS
TSBTQ01JIFNNQyBtdWx0aS1hZ2VudCBzdXBwb3J0IGZvciB0aGUgZ3Vlc3QgYnkgZW5hYmxpbmcg
U0NNSSBvdmVyDQorICAgIFNNQyBjYWxscyBmb3J3YXJkaW5nIGZyb20gZG9tYWluIHRvIHRoZSBF
TDMgZmlybXdhcmUgKGxpa2UgQVJNDQorICAgIFRydXN0ZWQgRmlybXdhcmUtQSkgd2l0aCBhIG11
bHRpIFNDTUkgT1NQTSBhZ2VudCBzdXBwb3J0Lg0KKyAgICBUaGUgU0NNSSBhZ2VudF9pZCBzaG91
bGQgYmUgc3BlY2lmaWVkIGZvciB0aGUgZ3Vlc3Qgd2l0aCAieGVuLHNjaS1hZ2VudC1pZCINCisg
ICAgcHJvcGVydHkuDQorDQorLSAieGVuLHNjaS1hZ2VudC1pZCINCisNCisgICAgU3BlY2lmaWVz
IEFSTSBTQ01JIGFnZW50IGlkIGZvciB0aGUgZ3Vlc3QuIFRoaXMgb3B0aW9uIGlzIG1hbmRhdG9y
eSBpZiB0aGUNCisgICAgU0NNSSBTTUMgInNjbWlfc21jX211bHRpYWdlbnQiIHN1cHBvcnQgaXMg
ZW5hYmxlZCBmb3IgdGhlIGd1ZXN0LiBUaGUgYWdlbnQgaWRzDQorICAgIG9mIGd1ZXN0IG11c3Qg
YmUgdW5pcXVlIGFuZCBpbiB0aGUgcmFuZ2UgWzAuLjI1NF0uIFVJTlQ4X01BWCAoMjU1KSBpcw0K
KyAgICB0cmVhdGVkIGFzIGludmFsaWQuDQorDQogLSB2OHJfZWwxX21zYQ0KIA0KICAgICBBIHN0
cmluZyBwcm9wZXJ0eSBzcGVjaWZ5aW5nIHdoZXRoZXIsIG9uIEFybXY4LVIgc3lzdGVtcyBhdCBF
TDEsIGEgZG9tYWluDQpAQCAtODQ3LDMgKzg2MiwxODMgQEAgVGhlIGF1dG9tYXRpY2FsbHkgYWxs
b2NhdGVkIHN0YXRpYyBzaGFyZWQgbWVtb3J5IHdpbGwgZ2V0IG1hcHBlZCBhdA0KIDB4ODAwMDAw
MDAgaW4gRG9tVTEgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSwgYW5kIGF0IDB4OTAwMDAw
MDAgaW4gRG9tVTINCiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiBEb21VMSBpcyBleHBs
aWNpdGx5IGRlZmluZWQgYXMgdGhlIG93bmVyIGRvbWFpbiwNCiBhbmQgRG9tVTIgaXMgdGhlIGJv
cnJvd2VyIGRvbWFpbi4NCisNCitTQ01JIFNNQyBtdWx0aS1hZ2VudCBzdXBwb3J0DQorPT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK0ZvciBlbmFibGluZyB0aGUgQVJNIFNDTUkgU01D
IG11bHRpLWFnZW50IHN1cHBvcnQgKGVuYWJsZWQgYnkgQ09ORklHX1NDTUlfU01DX01BKQ0KK3Ro
ZSBYZW4gc3BlY2lmaWMgU0NNSSBBZ2VudCdzIGNvbmZpZ3VyYXRpb24gc2hhbGwgYmUgcHJvdmlk
ZWQgaW4gdGhlIEhvc3QgRFQNCithY2NvcmRpbmcgdG8gdGhlIFNDTUkgY29tcGxpYW50IEVMMyBG
aXJtd2FyZSBzcGVjaWZpY2F0aW9uIHdpdGggQVJNIFNNQy9IVkMNCit0cmFuc3BvcnQuIFRoZSBT
Q01JIGNvbmZpZ3VyYXRpb24gbXVzdCBsaXZlIHVuZGVyIHRoZSBYZW4gU0NNSSBjb250YWluZXIN
CisieGVuLHNjaSIgYmVuZWF0aCAiL2Nob3NlbiIgKGZvciBleGFtcGxlICIvY2hvc2VuL3hlbi94
ZW5fc2NtaV9jb25maWcvc2NtaSIpLiBUaGUNCitYZW4gU0NNSSBtZWRpYXRvciB3aWxsIGJpbmQg
b25seSB0byB0aGUgImFybSxzY21pLXNtYyIgbm9kZSB0aGF0IGlzIGEgY2hpbGQgb2YNCit0aGlz
ICJ4ZW4sc2NpIiBjb250YWluZXI7IGFueSBvdGhlciAiYXJtLHNjbWktc21jIiBub2RlcyAoZm9y
IGV4YW1wbGUgdW5kZXINCisiL2Zpcm13YXJlIikgYXJlIGlnbm9yZWQgdG8gYXZvaWQgc3RlYWxp
bmcgdGhlIGhvc3QncyBTQ01JIE9TUE0gaW5zdGFuY2UuDQorDQorLSBhZ2VudHMNCisNCisgICAg
UmVxdWlyZWQgY2hpbGQgb2YgdGhlIHhlbixzY2kgY29udGFpbmVyLiBEZXNjcmliZXMgdGhlIHNl
Y29uZGFyeSBTQ01JDQorICAgIGFnZW50cyBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnQgdG8gZG9t
YWlucy4gU2V0ICNhZGRyZXNzLWNlbGxzID0gPDE+DQorICAgIGFuZCAjc2l6ZS1jZWxscyA9IDww
PiBpbiB0aGlzIG5vZGUuIEF0IGxlYXN0IG9uZSBlbmFibGVkIGNoaWxkIHdpdGgNCisgICAgY29t
cGF0aWJsZSA9ICJ4ZW4sc2NtaS1hZ2VudCIgaXMgcmVxdWlyZWQuIEVhY2ggc3VjaCBjaGlsZCBo
YXM6DQorDQorICAgIC0gcmVnOiBPcHRpb25hbCBzaW5nbGUtY2VsbCBTQ01JIGFnZW50IElEIGlu
IHRoZSByYW5nZSAwLi4yNTQuIFdoZW4NCisgICAgICBwcmVzZW50LCBuYW1lIHRoZSBub2RlIGFn
ZW50QDxpZD4sIHdpdGggdGhlIHVuaXQgYWRkcmVzcyBpbiBoZXhhZGVjaW1hbC4NCisgICAgICBX
aGVuIGFic2VudCwgdXNlIGEgbmFtZSB3aXRob3V0IGEgdW5pdCBhZGRyZXNzOyBYZW4gZGlzY292
ZXJzIHRoZSBJRA0KKyAgICAgIHVzaW5nIEJBU0VfRElTQ09WRVJfQUdFTlQgb24gdGhhdCBjaGFu
bmVsLiBBIG1hbGZvcm1lZCByZWcgaXMgcmVqZWN0ZWQuDQorICAgIC0gYXJtLHNtYy1pZDogUmVx
dWlyZWQgU01DIGZ1bmN0aW9uIElEIGZvciB0aGlzIGFnZW50J3MgZG9vcmJlbGwuDQorICAgIC0g
c2htZW06IFJlcXVpcmVkIHNpbmdsZSBwaGFuZGxlIHRvIGFuIGFybSxzY21pLXNobWVtIG5vZGUu
IEl0cyBhZGRyZXNzDQorICAgICAgYW5kIG5vbnplcm8gc2l6ZSBtdXN0IGJlIFhlbiBwYWdlIGFs
aWduZWQuDQorDQorICAgIEFnZW50IElEcyBtdXN0IGJlIHVuaXF1ZSwgaW5jbHVkaW5nIElEcyBy
ZXR1cm5lZCBieSBkaXNjb3ZlcnksIGFuZCBtdXN0DQorICAgIG5vdCBpZGVudGlmeSBYZW4ncyBt
YW5hZ2VtZW50IGFnZW50LiBDaGlsZHJlbiBtYXJrZWQgZGlzYWJsZWQgYXJlIGlnbm9yZWQuDQor
ICAgIFRoZSBtYW5hZ2VtZW50IGFybSxzY21pLXNtYyBub2RlIHJlbWFpbnMgYSBzaWJsaW5nIG9m
IGFnZW50cywgZGlyZWN0bHkNCisgICAgdW5kZXIgeGVuLHNjaS4NCisNCistIHhlbixkb20wLXNj
aS1hZ2VudC1pZA0KKw0KKyAgICBPcHRpb25hbC4gU3BlY2lmaWVzIHRoZSBEb20wL2h3ZG9tIFND
TUkgYWdlbnRfaWQgaW5zaWRlIHRoZSBgYHhlbixzY2lgYA0KKyAgICBjb250YWluZXIuIFdoZW4g
cHJvdmlkZWQsIERvbTAgd2lsbCBiZSBjb25maWd1cmVkIGZvciBTQ01JIG11bHRpLWFnZW50DQor
ICAgIHN1cHBvcnQ7IHdoZW4gb21pdHRlZCwgU0NNSSByZW1haW5zIGRpc2FibGVkIGZvciBEb20w
LiBUaGUgc2VsZWN0ZWQNCisgICAgYWdlbnQncyBgYGZ1bmNfaWRgYCBhbmQgc2hhcmVkLW1lbW9y
eSByZWdpb24gbXVzdCBtYXRjaCB0aGUgaG9zdA0KKyAgICBgYC9maXJtd2FyZS9zY21pYGAgY2hh
bm5lbCBwYXNzZWQgdG8gRG9tMC4NCisNCitUaGUgc2hhcmVkLW1lbW9yeSBub2RlcyBtYXkgcmVt
YWluIGluc2lkZSB4ZW5fc2NtaV9jb25maWcsIHdoaWxlIHRoZQ0KK3BsYXRmb3JtJ3MgZXhpc3Rp
bmcgL2Zpcm13YXJlL3NjbWkgYW5kIGl0cyBzaGFyZWQtbWVtb3J5IG5vZGUgc3RheSB1bmNoYW5n
ZWQuDQorU2hhcmVkLW1lbW9yeSBub2RlcyBkZXNjcmliZSBjaGFubmVsIGxvY2F0aW9uczsgdGhl
eSBkbyBub3QgcmVzZXJ2ZSBSQU0uDQorSWYgdGhlIGNoYW5uZWwgYnVmZmVycyBvY2N1cHkgc3lz
dGVtIFJBTSwgdGhlIHBsYXRmb3JtIERUIG11c3QgcmVzZXJ2ZSB0aGUNCit3aG9sZSBmaXJtd2Fy
ZS1vd25lZCByYW5nZSBpbiAvcmVzZXJ2ZWQtbWVtb3J5IGJlZm9yZSBYZW4gYm9vdHMuIE9uZQ0K
K3Jlc2VydmF0aW9uIG1heSBjb3ZlciBzZXZlcmFsIGNoYW5uZWxzLCBpbmNsdWRpbmcgY2hhbm5l
bHMgbm90IGxpc3RlZCBpbg0KK3RoaXMgY29uZmlndXJhdGlvbi4gU1JBTSBvdXRzaWRlIHN5c3Rl
bSBSQU0gZG9lcyBub3QgcmVxdWlyZSBhIFJBTQ0KK3Jlc2VydmF0aW9uLiBNb3ZpbmcgdGhlIGNo
YW5uZWwgbm9kZXMgaW50byAvcmVzZXJ2ZWQtbWVtb3J5IGlzIG5vdCByZXF1aXJlZC4NCisNCitB
cyBhbiBleGFtcGxlOg0KKw0KKy8gew0KKyAgICAjYWRkcmVzcy1jZWxscyA9IDwyPjsNCisgICAg
I3NpemUtY2VsbHMgPSA8Mj47DQorDQorICAgIHNjbWlfc2htXzA6IHNyYW1ANDdmZjAwMDAgew0K
KyAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQorICAgICAgICByZWcgPSA8
MHgwIDB4NDdmZjAwMDAgMHgwIDB4MTAwMD47DQorICAgIH07DQorDQorICAgIGZpcm13YXJlIHsN
CisgICAgICAgIHNjbWk6IHNjbWkgew0KKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNj
bWktc21jIjsNCisgICAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDI+Ow0KKyAgICAg
ICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Ow0KKyAgICAgICAgICAgICNzaXplLWNlbGxzID0g
PDA+Ow0KKyAgICAgICAgICAgIHNobWVtID0gPCZzY21pX3NobV8wPjsNCisgICAgICAgIH07DQor
ICAgIH07DQorDQorICAgIGNob3NlbiB7DQorICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwyPjsN
CisgICAgICAgICNzaXplLWNlbGxzID0gPDI+Ow0KKyAgICAgICAgcmFuZ2VzOw0KKw0KKyAgICAg
ICAgeGVuIHsNCisgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwyPjsNCisgICAgICAgICAg
ICAjc2l6ZS1jZWxscyA9IDwyPjsNCisgICAgICAgICAgICByYW5nZXM7DQorDQorICAgICAgICAg
ICAgeGVuX3NjbWlfY29uZmlnIHsNCisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4s
c2NpIjsNCisgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8Mj47DQorICAgICAgICAg
ICAgICAgICNzaXplLWNlbGxzID0gPDI+Ow0KKyAgICAgICAgICAgICAgICByYW5nZXM7DQorICAg
ICAgICAgICAgICAgIHhlbixkb20wLXNjaS1hZ2VudC1pZCA9IDwwPjsgLyogZG9tMCBhZ2VudCBp
ZCAqLw0KKw0KKyAgICAgICAgICAgICAgICAvKiBYZW4gbWFuYWdlbWVudCBjaGFubmVsICovDQor
ICAgICAgICAgICAgICAgIHNjbWlfc2htXzE6IHNyYW1ANDdmZjEwMDAgew0KKyAgICAgICAgICAg
ICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQorICAgICAgICAgICAgICAg
ICAgICByZWcgPSA8MHgwIDB4NDdmZjEwMDAgMHgwIDB4MTAwMD47DQorICAgICAgICAgICAgICAg
IH07DQorDQorICAgICAgICAgICAgICAgIHNjbWlfc2htXzI6IHNyYW1ANDdmZjIwMDAgew0KKyAg
ICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQorICAgICAg
ICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjIwMDAgMHgwIDB4MTAwMD47DQorICAgICAg
ICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgIHNjbWlfc2htXzM6IHNyYW1ANDdmZjMw
MDAgew0KKyAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7
DQorICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjMwMDAgMHgwIDB4MTAwMD47
DQorICAgICAgICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgIHNjbWlfeGVuOiBzY21p
IHsNCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc21jIjsgLyog
WGVuIG1hbmFnZW1lbnQgYWdlbnQgZnVuY19pZCAqLw0KKyAgICAgICAgICAgICAgICAgICAgYXJt
LHNtYy1pZCA9IDwweDgyMDAwMDAzPjsNCisgICAgICAgICAgICAgICAgICAgICNhZGRyZXNzLWNl
bGxzID0gPDE+Ow0KKyAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8MD47DQorICAg
ICAgICAgICAgICAgICAgICAjYWNjZXNzLWNvbnRyb2xsZXItY2VsbHMgPSA8MT47DQorICAgICAg
ICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMT47IC8qIFhlbiBtYW5hZ2VtZW50IGFn
ZW50IHNobWVtICovDQorICAgICAgICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgIGFn
ZW50cyB7DQorICAgICAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsNCisgICAg
ICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDA+Ow0KKw0KKyAgICAgICAgICAgICAgICAg
ICAgYWdlbnRAMCB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4s
c2NtaS1hZ2VudCI7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDA+Ow0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwMj47DQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzA+Ow0KKyAgICAgICAgICAgICAgICAg
ICAgfTsNCisNCisgICAgICAgICAgICAgICAgICAgIGFnZW50QDIgew0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLHNjbWktYWdlbnQiOw0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZyA9IDwyPjsNCisgICAgICAgICAgICAgICAgICAgICAgICBhcm0sc21jLWlk
ID0gPDB4ODIwMDAwMDQ+Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNobWVtID0gPCZzY21p
X3NobV8yPjsNCisgICAgICAgICAgICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgICAg
ICBhZ2VudEAzIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInhlbixz
Y21pLWFnZW50IjsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8Mz47DQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXJtLHNtYy1pZCA9IDwweDgyMDAwMDA1PjsNCisgICAgICAgICAg
ICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMz47DQorICAgICAgICAgICAgICAgICAg
ICB9Ow0KKyAgICAgICAgICAgICAgICB9Ow0KKyAgICAgICAgICAgIH07DQorICAgICAgICB9Ow0K
KyAgICB9Ow0KK307DQorDQorVGhpcyBrZWVwcyB0aGUgaG9zdCBPU1BNIGNoYW5uZWwgKFNNQyAw
eDgyMDAwMDAyLCBzaG1lbSAweDQ3ZmYwMDAwKSBzZXBhcmF0ZQ0KK2Zyb20gWGVuJ3MgcHJpdmls
ZWdlZCBtYW5hZ2VtZW50IGNoYW5uZWwgKFNNQyAweDgyMDAwMDAzLCBzaG1lbSAweDQ3ZmYxMDAw
KS4NCitUaGUgeGVuLHNjaSBzdWJ0cmVlIGlzIG9taXR0ZWQgZnJvbSBEb20wJ3MgZGV2aWNlIHRy
ZWUuDQorDQorVG8gZGlzY292ZXIgYSBzZWNvbmRhcnkgYWdlbnQgSUQsIG9taXQgcmVnIGZyb20g
aXRzIG5vZGUuIEZvciBleGFtcGxlLA0KK3JlcGxhY2Ugb25seSBhZ2VudEAyIGFib3ZlIHdpdGg6
DQorDQorYWdlbnQtZG9tdSB7DQorICAgIGNvbXBhdGlibGUgPSAieGVuLHNjbWktYWdlbnQiOw0K
KyAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDQ+Ow0KKyAgICBzaG1lbSA9IDwmc2NtaV9zaG1f
Mj47DQorfTsNCisNCitCQVNFX0RJU0NPVkVSX0FHRU5UIGlzIHJlcXVpcmVkIG9uIHNlY29uZGFy
eSBjaGFubmVscyBvbmx5IHdoZW4gcmVnIGlzDQorb21pdHRlZC4gWGVuIGFsd2F5cyB1c2VzIGl0
IHRvIGRpc2NvdmVyIGl0cyBtYW5hZ2VtZW50IGFnZW50IElELiBQcm92aWRpbmcNCityZWcgYXZv
aWRzIG1hcHBpbmcgYW5kIHByb2JpbmcgdGhlIHNlY29uZGFyeSBjaGFubmVsIGR1cmluZyBpbml0
aWFsaXphdGlvbi4NCitUaGUgc2NtaS1zZWNvbmRhcnktYWdlbnRzIGFuZCAjc2NtaS1zZWNvbmRh
cnktYWdlbnRzLWNlbGxzIHByb3BlcnRpZXMgdXNlZA0KK2J5IGVhcmxpZXIgdmVyc2lvbnMgYXJl
IHJlcGxhY2VkIGJ5IHRoZSBhZ2VudHMgY2hpbGQgbm9kZXMuDQorDQorRG9tMGxlc3MgZXhhbXBs
ZSAobXVsdGktYWdlbnQpDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1Vz
ZSB0aGUgc2FtZSBYZW4gU0NNSSBjb25maWd1cmF0aW9uIGFzIGFib3ZlLiBSZW1vdmUgeGVuLGRv
bTAtc2NpLWFnZW50LWlkDQoraWYgRG9tMCBkb2VzIG5vdCB1c2UgU0NNSS4gQWRkIHhlbixzY2lf
dHlwZSBhbmQgeGVuLHNjaS1hZ2VudC1pZCB0byB0aGUNCitwcmVkZWZpbmVkIGd1ZXN0J3Mgbm9k
ZSB1bmRlciAvY2hvc2VuOg0KKw0KK2Nob3NlbiB7DQorICAgIHhlbixkb21haW5AMSB7DQorICAg
ICAgICBjb21wYXRpYmxlID0gInhlbixkb21haW4iOw0KKyAgICAgICAgeGVuLHNjaV90eXBlID0g
InNjbWlfc21jX211bHRpYWdlbnQiOw0KKyAgICAgICAgeGVuLHNjaS1hZ2VudC1pZCA9IDwyPjsN
CisgICAgICAgIC8qIEFkZGl0aW9uYWwgZG9tYWluIHByb3BlcnRpZXMgKG1lbW9yeSwgY3B1cywg
a2VybmVscywgZXRjLikgKi8NCisgICAgfTsNCit9Ow0KKw0KK1RoZSBndWVzdCdzIHBhcnRpYWwg
RFQgYW5kIHNoYXJlZC1tZW1vcnkgbWFwcGluZyBtdXN0IHVzZSB0aGUgU01DIGZ1bmN0aW9uDQor
SUQgYW5kIHNoYXJlZC1tZW1vcnkgY2hhbm5lbCBhc3NvY2lhdGVkIHdpdGggYWdlbnQgMiBpbiB0
aGUgYWdlbnRzIG5vZGUuDQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbTBsZXNzLWJ1aWxk
LmMgYi94ZW4vYXJjaC9hcm0vZG9tMGxlc3MtYnVpbGQuYw0KaW5kZXggN2JiYjJlYWZiNi4uMDFj
MmE1Y2U1MiAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5jDQorKysg
Yi94ZW4vYXJjaC9hcm0vZG9tMGxlc3MtYnVpbGQuYw0KQEAgLTI5Myw2ICsyOTMsMjMgQEAgc3Rh
dGljIGludCBfX2luaXQgZG9tdV9kdF9zY2lfcGFyc2Uoc3RydWN0IGR0X2RldmljZV9ub2RlICpu
b2RlLA0KIA0KICAgICAgICAgZF9jZmctPmFyY2guYXJtX3NjaV90eXBlID0gWEVOX0RPTUNUTF9D
T05GSUdfQVJNX1NDSV9TQ01JX1NNQzsNCiAgICAgfQ0KKyAgICBlbHNlIGlmICggIXN0cmNtcChz
Y2lfdHlwZSwgInNjbWlfc21jX211bHRpYWdlbnQiKSApDQorICAgIHsNCisgICAgICAgIHVpbnQz
Ml90IGFnZW50X2lkID0gMDsNCisNCisgICAgICAgIGlmICggIUlTX0VOQUJMRUQoQ09ORklHX1ND
TUlfU01DX01BKSApDQorICAgICAgICB7DQorICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIg
InhlbixzY2lfdHlwZT1zY21pX3NtY19tdWx0aWFnZW50IHJlcXVlc3RlZCwgYnV0IENPTkZJR19T
Q01JX1NNQ19NQSBub3Qgc2V0XG4iKTsNCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCisg
ICAgICAgIH0NCisNCisgICAgICAgIGlmICggIWR0X3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJ4
ZW4sc2NpLWFnZW50LWlkIiwgJmFnZW50X2lkKSB8fA0KKyAgICAgICAgICAgICBhZ2VudF9pZCA+
PSBVSU5UOF9NQVggKQ0KKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKw0KKyAgICAgICAg
ZF9jZmctPmFyY2guYXJtX3NjaV90eXBlID0gWEVOX0RPTUNUTF9DT05GSUdfQVJNX1NDSV9TQ01J
X1NNQ19NQTsNCisgICAgICAgIGRfY2ZnLT5hcmNoLmFybV9zY2lfYWdlbnRfaWQgPSBhZ2VudF9p
ZDsNCisgICAgfQ0KICAgICBlbHNlDQogICAgIHsNCiAgICAgICAgIHByaW50ayhYRU5MT0dfRVJS
ICJ4ZW4sc2NpX3R5cGUgaW4gbm90IHZhbGlkICglcykgZm9yIGRvbWFpbiAlc1xuIiwNCmRpZmYg
LS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWlu
X2J1aWxkLmMNCmluZGV4IDcyZjZmNzUzOWEuLjVkNDJjZGY2YWYgMTAwNjQ0DQotLS0gYS94ZW4v
YXJjaC9hcm0vZG9tYWluX2J1aWxkLmMNCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQu
Yw0KQEAgLTg4LDYgKzg4LDM5IEBAIGludCBfX2luaXQgcGFyc2VfYXJjaF9kb20wX3BhcmFtKGNv
bnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmUpDQogICAgIHJldHVybiAtRUlOVkFMOw0KIH0NCiAN
CisjaWZkZWYgQ09ORklHX1NDTUlfU01DX01BDQorLyogU0NNSSBhZ2VudCBJRCBmb3IgZG9tMCBv
YnRhaW5lZCBmcm9tIHhlbixzY2kgY29udGFpbmVyICovDQorI2RlZmluZSBTQ01JX0FHRU5UX0lE
X0lOVkFMSUQgVUlOVDhfTUFYDQorDQorc3RhdGljIHVpbnQ4X3QgX19pbml0IGdldF9kb20wX3Nj
bWlfYWdlbnRfaWQodm9pZCkNCit7DQorICAgIGNvbnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAq
Y29uZmlnX25vZGU7DQorICAgIHUzMiB2YWw7DQorICAgIGNvbnN0IHN0cnVjdCBkdF9wcm9wZXJ0
eSAqcHJvcDsNCisNCisgICAgY29uZmlnX25vZGUgPSBkdF9maW5kX2NvbXBhdGlibGVfbm9kZShO
VUxMLCBOVUxMLCAieGVuLHNjaSIpOw0KKyAgICBpZiAoICFjb25maWdfbm9kZSApDQorICAgICAg
ICByZXR1cm4gU0NNSV9BR0VOVF9JRF9JTlZBTElEOw0KKw0KKyAgICBwcm9wID0gZHRfZmluZF9w
cm9wZXJ0eShjb25maWdfbm9kZSwgInhlbixkb20wLXNjaS1hZ2VudC1pZCIsIE5VTEwpOw0KKyAg
ICBpZiAoICFwcm9wICkNCisgICAgICAgIHJldHVybiBTQ01JX0FHRU5UX0lEX0lOVkFMSUQ7DQor
DQorICAgIGlmICggIWR0X3Byb3BlcnR5X3JlYWRfdTMyKGNvbmZpZ19ub2RlLCAieGVuLGRvbTAt
c2NpLWFnZW50LWlkIiwgJnZhbCkgKQ0KKyAgICAgICAgcmV0dXJuIFNDTUlfQUdFTlRfSURfSU5W
QUxJRDsNCisNCisgICAgaWYgKCB2YWwgPj0gU0NNSV9BR0VOVF9JRF9JTlZBTElEICkNCisgICAg
ew0KKyAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORw0KKyAgICAgICAgICAgICAiSW52YWxp
ZCB4ZW4sZG9tMC1zY2ktYWdlbnQtaWQ9JXUsIFNDTUkgZGlzYWJsZWQgZm9yIERvbTBcbiIsDQor
ICAgICAgICAgICAgIHZhbCk7DQorICAgICAgICByZXR1cm4gU0NNSV9BR0VOVF9JRF9JTlZBTElE
Ow0KKyAgICB9DQorDQorICAgIHJldHVybiB2YWw7DQorfQ0KKyNlbmRpZiAvKiBDT05GSUdfU0NN
SV9TTUNfTUEgKi8NCisNCiAvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1h
a2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8NCiAjdW5kZWYgdmlydF90b19tZm4NCiAjZGVmaW5l
IHZpcnRfdG9fbWZuKHZhKSBfbWZuKF9fdmlydF90b19tZm4odmEpKQ0KQEAgLTE0ODAsNiArMTUx
Myw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGhhbmRsZV9ub2RlKHN0cnVjdCBkb21haW4gKmQsIHN0
cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8sDQogICAgICAgICBEVF9NQVRDSF9UWVBFKCJtZW1vcnki
KSwNCiAgICAgICAgIC8qIFRoZSBtZW1vcnkgbWFwcGVkIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWQg
YnkgWGVuLiAqLw0KICAgICAgICAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgiYXJtLGFybXY3LXRpbWVy
LW1lbSIpLA0KKyAgICAgICAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgieGVuLHNjaSIpLA0KICAgICAg
ICAgeyAvKiBzZW50aW5lbCAqLyB9LA0KICAgICB9Ow0KICAgICBzdGF0aWMgY29uc3Qgc3RydWN0
IGR0X2RldmljZV9tYXRjaCB0aW1lcl9tYXRjaGVzW10gX19pbml0Y29uc3QgPQ0KQEAgLTE5NzUs
NiArMjAwOSwxNSBAQCB2b2lkIF9faW5pdCBjcmVhdGVfZG9tMCh2b2lkKQ0KICAgICBkb20wX2Nm
Zy5hcmNoLnRlZV90eXBlID0gdGVlX2dldF90eXBlKCk7DQogICAgIGRvbTBfY2ZnLm1heF92Y3B1
cyA9IGRvbTBfbWF4X3ZjcHVzKCk7DQogDQorI2lmZGVmIENPTkZJR19TQ01JX1NNQ19NQQ0KKyAg
ICAvKiBTZXQgdXAgU0NNSSBhZ2VudCBJRCBpZiBwcm92aWRlZCBpbiB0aGUgeGVuLHNjaSBjb250
YWluZXIgKi8NCisgICAgZG9tMF9jZmcuYXJjaC5hcm1fc2NpX2FnZW50X2lkID0gZ2V0X2RvbTBf
c2NtaV9hZ2VudF9pZCgpOw0KKyAgICBkb20wX2NmZy5hcmNoLmFybV9zY2lfdHlwZSA9IChkb20w
X2NmZy5hcmNoLmFybV9zY2lfYWdlbnRfaWQgIT0NCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0NNSV9BR0VOVF9JRF9JTlZBTElEKSA/DQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1NDSV9TQ01JX1NNQ19NQSA6DQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1NDSV9O
T05FOw0KKyNlbmRpZg0KKw0KICAgICBpZiAoIGlvbW11X2VuYWJsZWQgKQ0KICAgICAgICAgZG9t
MF9jZmcuZmxhZ3MgfD0gWEVOX0RPTUNUTF9DREZfaW9tbXU7DQogDQpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2Zpcm13YXJlL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vZmlybXdhcmUvS2NvbmZp
Zw0KaW5kZXggNWM1ZjA4ODBjNC4uOTcyY2Q5YjE3MyAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2Fy
bS9maXJtd2FyZS9LY29uZmlnDQorKysgYi94ZW4vYXJjaC9hcm0vZmlybXdhcmUvS2NvbmZpZw0K
QEAgLTI5LDYgKzI5LDE4IEBAIGNvbmZpZyBTQ01JX1NNQw0KIAkgIGRyaXZlciBkb21haW4uDQog
CSAgVXNlIHdpdGggRUwzIGZpcm13YXJlIHdoaWNoIHN1cHBvcnRzIG9ubHkgc2luZ2xlIFNDTUkg
T1NQTSBhZ2VudC4NCiANCitjb25maWcgU0NNSV9TTUNfTUENCisJYm9vbCAiRW5hYmxlIEFSTSBT
Q01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIiDQorCWRlcGVuZHMgb24gQVJNXzY0DQorCXNlbGVj
dCBBUk1fU0NJDQorCWhlbHANCisJICBFbmFibGVzIFNDTUkgU01DL0hWQyBtdWx0aS1hZ2VudCBp
biBYRU4gdG8gcGFzcyBTQ01JIHJlcXVlc3RzIGZyb20gRG9tYWlucw0KKwkgIHRvIEVMMyBmaXJt
d2FyZSAoVEYtQSkgd2hpY2ggc3VwcG9ydHMgbXVsdGktYWdlbnQgZmVhdHVyZS4NCisJICBUaGlz
IGZlYXR1cmUgYWxsb3dzIHRvIGVuYWJsZSBTQ01JIHBlciBEb21haW4gdXNpbmcgdW5pcXVlIFND
TUkgYWdlbnRfaWQsDQorCSAgc28gRG9tYWluIGlzIGlkZW50aWZpZWQgYnkgRUwzIGZpcm13YXJl
IGFzIGFuIFNDTUkgQWdlbnQgYW5kIGNhbiBhY2Nlc3MNCisJICBhbGxvd2VkIHBsYXRmb3JtIHJl
c291cmNlcyB0aHJvdWdoIGRlZGljYXRlZCBTTUMvSFZDIFNoYXJlZCBtZW1vcnkgYmFzZWQNCisJ
ICB0cmFuc3BvcnQuDQorDQogZW5kY2hvaWNlDQogDQogZW5kbWVudQ0KZGlmZiAtLWdpdCBhL3hl
bi9hcmNoL2FybS9maXJtd2FyZS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9maXJtd2FyZS9NYWtl
ZmlsZQ0KaW5kZXggNzFiZGVmYzI0YS4uMzc5MjdlNjkwZSAxMDA2NDQNCi0tLSBhL3hlbi9hcmNo
L2FybS9maXJtd2FyZS9NYWtlZmlsZQ0KKysrIGIveGVuL2FyY2gvYXJtL2Zpcm13YXJlL01ha2Vm
aWxlDQpAQCAtMSwyICsxLDMgQEANCiBvYmotJChDT05GSUdfQVJNX1NDSSkgKz0gc2NpLm8NCiBv
YmotJChDT05GSUdfU0NNSV9TTUMpICs9IHNjbWktc21jLm8NCitvYmotJChDT05GSUdfU0NNSV9T
TUNfTUEpICs9IHNjbWktc2htZW0ubyBzY21pLXNtYy1tdWx0aWFnZW50Lm8NCmRpZmYgLS1naXQg
YS94ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1wcm90by5oIGIveGVuL2FyY2gvYXJtL2Zpcm13
YXJlL3NjbWktcHJvdG8uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAu
LmI5ZmQyMmVlMWENCi0tLSAvZGV2L251bGwNCisrKyBiL3hlbi9hcmNoL2FybS9maXJtd2FyZS9z
Y21pLXByb3RvLmgNCkBAIC0wLDAgKzEsMTc0IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEdQTC0yLjAtb25seSAqLw0KKy8qDQorICogQXJtIFN5c3RlbSBDb250cm9sIGFuZCBNYW5h
Z2VtZW50IEludGVyZmFjZSBkZWZpbml0aW9ucw0KKyAqIFZlcnNpb24gMy4wIChERU4wMDU2QykN
CisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAyNSBFUEFNIFN5c3RlbXMNCisgKi8NCisNCisjaWZu
ZGVmIEFSTV9GSVJNV0FSRV9TQ01JX1BST1RPX0hfDQorI2RlZmluZSBBUk1fRklSTVdBUkVfU0NN
SV9QUk9UT19IXw0KKw0KKyNpbmNsdWRlIDx4ZW4vc3RkaW50Lmg+DQorDQorI2RlZmluZSBTQ01J
X1NIT1JUX05BTUVfTUFYX1NJWkUgMTYNCisNCisvKiBTQ01JIHN0YXR1cyBjb2Rlcy4gU2VlIHNl
Y3Rpb24gNC4xLjQgKi8NCisjZGVmaW5lIFNDTUlfU1VDQ0VTUyAgICAgICAgICAgICAgMA0KKyNk
ZWZpbmUgU0NNSV9OT1RfU1VQUE9SVEVEICAgICAgKC0xKQ0KKyNkZWZpbmUgU0NNSV9JTlZBTElE
X1BBUkFNRVRFUlMgKC0yKQ0KKyNkZWZpbmUgU0NNSV9ERU5JRUQgICAgICAgICAgICAgKC0zKQ0K
KyNkZWZpbmUgU0NNSV9OT1RfRk9VTkQgICAgICAgICAgKC00KQ0KKyNkZWZpbmUgU0NNSV9PVVRf
T0ZfUkFOR0UgICAgICAgKC01KQ0KKyNkZWZpbmUgU0NNSV9CVVNZICAgICAgICAgICAgICAgKC02
KQ0KKyNkZWZpbmUgU0NNSV9DT01NU19FUlJPUiAgICAgICAgKC03KQ0KKyNkZWZpbmUgU0NNSV9H
RU5FUklDX0VSUk9SICAgICAgKC04KQ0KKyNkZWZpbmUgU0NNSV9IQVJEV0FSRV9FUlJPUiAgICAg
KC05KQ0KKyNkZWZpbmUgU0NNSV9QUk9UT0NPTF9FUlJPUiAgICAgKC0xMCkNCisNCisvKiBQcm90
b2NvbCBJRHMgKi8NCisjZGVmaW5lIFNDTUlfQkFTRV9QUk9UT0NPTCAweDEwDQorDQorLyogQmFz
ZSBwcm90b2NvbCBtZXNzYWdlIElEcyAqLw0KKyNkZWZpbmUgU0NNSV9CQVNFX1BST1RPQ09MX1ZF
UlNJT04gICAgICAgICAgICAweDANCisjZGVmaW5lIFNDTUlfQkFTRV9QUk9UT0NPTF9BVFRJQlVU
RVMgICAgICAgICAgMHgxDQorI2RlZmluZSBTQ01JX0JBU0VfUFJPVE9DT0xfTUVTU0FHRV9BVFRS
SUJVVEVTIDB4Mg0KKyNkZWZpbmUgU0NNSV9CQVNFX0RJU0NPVkVSX0FHRU5UICAgICAgICAgICAg
ICAweDcNCisjZGVmaW5lIFNDTUlfQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TICAgICAgMHg5
DQorI2RlZmluZSBTQ01JX0JBU0VfUkVTRVRfQUdFTlRfQ09ORklHVVJBVElPTiAgIDB4Qg0KKw0K
K3R5cGVkZWYgc3RydWN0IHNjbWlfbXNnX2hlYWRlciB7DQorICAgIHVpbnQ4X3QgaWQ7DQorICAg
IHVpbnQ4X3QgdHlwZTsNCisgICAgdWludDhfdCBwcm90b2NvbDsNCisgICAgdWludDMyX3Qgc3Rh
dHVzOw0KK30gc2NtaV9tc2dfaGVhZGVyX3Q7DQorDQorLyogVGFibGUgMiBNZXNzYWdlIGhlYWRl
ciBmb3JtYXQgKi8NCisjZGVmaW5lIFNDTUlfSERSX0lEICAgIEdFTk1BU0soNywgMCkNCisjZGVm
aW5lIFNDTUlfSERSX1RZUEUgIEdFTk1BU0soOSwgOCkNCisjZGVmaW5lIFNDTUlfSERSX1BST1RP
IEdFTk1BU0soMTcsIDEwKQ0KKw0KKyNkZWZpbmUgU0NNSV9GSUVMRF9HRVQoX21hc2ssIF9yZWcp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICgodHlw
ZW9mKF9tYXNrKSkoKChfcmVnKSAmIChfbWFzaykpID4+IChmZnM2NChfbWFzaykgLSAxKSkpDQor
I2RlZmluZSBTQ01JX0ZJRUxEX1BSRVAoX21hc2ssIF92YWwpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgKCgodHlwZW9mKF9tYXNrKSkoX3ZhbCkgPDwg
KGZmczY0KF9tYXNrKSAtIDEpKSAmIChfbWFzaykpDQorDQorc3RhdGljIGlubGluZSB1aW50MzJf
dCBwYWNrX3NjbWlfaGVhZGVyKHNjbWlfbXNnX2hlYWRlcl90ICpoZHIpDQorew0KKyAgICByZXR1
cm4gU0NNSV9GSUVMRF9QUkVQKFNDTUlfSERSX0lELCBoZHItPmlkKSB8DQorICAgICAgICAgICBT
Q01JX0ZJRUxEX1BSRVAoU0NNSV9IRFJfVFlQRSwgaGRyLT50eXBlKSB8DQorICAgICAgICAgICBT
Q01JX0ZJRUxEX1BSRVAoU0NNSV9IRFJfUFJPVE8sIGhkci0+cHJvdG9jb2wpOw0KK30NCisNCitz
dGF0aWMgaW5saW5lIHZvaWQgdW5wYWNrX3NjbWlfaGVhZGVyKHVpbnQzMl90IG1zZ19oZHIsIHNj
bWlfbXNnX2hlYWRlcl90ICpoZHIpDQorew0KKyAgICBoZHItPmlkID0gU0NNSV9GSUVMRF9HRVQo
U0NNSV9IRFJfSUQsIG1zZ19oZHIpOw0KKyAgICBoZHItPnR5cGUgPSBTQ01JX0ZJRUxEX0dFVChT
Q01JX0hEUl9UWVBFLCBtc2dfaGRyKTsNCisgICAgaGRyLT5wcm90b2NvbCA9IFNDTUlfRklFTERf
R0VUKFNDTUlfSERSX1BST1RPLCBtc2dfaGRyKTsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQg
c2NtaV90b194ZW5fZXJybm8oaW50IHNjbWlfc3RhdHVzKQ0KK3sNCisgICAgaWYgKCBzY21pX3N0
YXR1cyA9PSBTQ01JX1NVQ0NFU1MgKQ0KKyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIHN3aXRj
aCAoIHNjbWlfc3RhdHVzICkNCisgICAgew0KKyAgICBjYXNlIFNDTUlfTk9UX1NVUFBPUlRFRDoN
CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCisgICAgY2FzZSBTQ01JX0lOVkFMSURfUEFS
QU1FVEVSUzoNCisgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICBjYXNlIFNDTUlfREVOSUVE
Og0KKyAgICAgICAgcmV0dXJuIC1FQUNDRVM7DQorICAgIGNhc2UgU0NNSV9OT1RfRk9VTkQ6DQor
ICAgICAgICByZXR1cm4gLUVOT0VOVDsNCisgICAgY2FzZSBTQ01JX09VVF9PRl9SQU5HRToNCisg
ICAgICAgIHJldHVybiAtRVJBTkdFOw0KKyAgICBjYXNlIFNDTUlfQlVTWToNCisgICAgICAgIHJl
dHVybiAtRUJVU1k7DQorICAgIGNhc2UgU0NNSV9DT01NU19FUlJPUjoNCisgICAgICAgIHJldHVy
biAtRU5PVENPTk47DQorICAgIGNhc2UgU0NNSV9HRU5FUklDX0VSUk9SOg0KKyAgICAgICAgcmV0
dXJuIC1FSU87DQorICAgIGNhc2UgU0NNSV9IQVJEV0FSRV9FUlJPUjoNCisgICAgICAgIHJldHVy
biAtRU5YSU87DQorICAgIGNhc2UgU0NNSV9QUk9UT0NPTF9FUlJPUjoNCisgICAgICAgIHJldHVy
biAtRUJBRE1TRzsNCisgICAgZGVmYXVsdDoNCisgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAg
ICB9DQorfQ0KKw0KKy8qIFBST1RPQ09MX1ZFUlNJT04gKi8NCisjZGVmaW5lIFNDTUlfVkVSU0lP
Tl9NSU5PUiBHRU5NQVNLKDE1LCAwKQ0KKyNkZWZpbmUgU0NNSV9WRVJTSU9OX01BSk9SIEdFTk1B
U0soMzEsIDE2KQ0KKw0KK3N0cnVjdCBzY21pX21zZ19wcm90X3ZlcnNpb25fcDJhIHsNCisgICAg
dWludDMyX3QgdmVyc2lvbjsNCit9IF9fcGFja2VkOw0KKw0KKy8qIEJBU0UgUFJPVE9DT0xfQVRU
UklCVVRFUyAqLw0KKyNkZWZpbmUgU0NNSV9CQVNFX0FUVFJfTlVNX1BST1RPIEdFTk1BU0soNywg
MCkNCisjZGVmaW5lIFNDTUlfQkFTRV9BVFRSX05VTV9BR0VOVCBHRU5NQVNLKDE1LCA4KQ0KKw0K
Ky8qDQorICogREVOMDA1NkUsIHNlY3Rpb25zIDQuMi4yLjMgYW5kIDQuMi4yLjk6IHRoZSBhZ2Vu
dCBjb3VudCBOIG9jY3VwaWVzDQorICogYXR0cmlidXRlc1sxNTo4XSwgYW5kIGFnZW50IElEcyBh
cmUgc2VxdWVudGlhbCBmcm9tIDEgdGhyb3VnaCBOLg0KKyAqIFBsYXRmb3JtIElEIDAgaXMgc2Vw
YXJhdGUgZnJvbSB0aGF0IGNvdW50LiBUaHVzIE4gPSAyNTUgYWxsb3dzIDI1Ng0KKyAqIGlkZW50
aWZpZXJzICgwLi4yNTUpLCBub3QgYW4gSUQgb2YgMjU2LCBzbyBkb21haW4gY29uZmlndXJhdGlv
biBjYW4gdXNlDQorICogdWludDhfdC4gUHJvdG9jb2wgYW5kIGNoYW5uZWwgZmllbGRzIHVzZSB1
aW50MzJfdCwgYWxzbyBhY2NvbW1vZGF0aW5nDQorICogdGhlIDB4ZmZmZmZmZmYgc2VsZi1kaXNj
b3ZlcnkgaW5wdXQsIHdoaWNoIGlzIG5vdCBhbiBvcmRpbmFyeSBhZ2VudCBJRC4NCisgKi8NCisj
ZGVmaW5lIFNDTUlfTUFYX0FHRU5UX0lEIFVJTlQ4X01BWA0KKw0KK3N0cnVjdCBzY21pX21zZ19i
YXNlX2F0dHJpYnV0ZXNfcDJhIHsNCisgICAgdWludDMyX3QgYXR0cmlidXRlczsNCit9IF9fcGFj
a2VkOw0KKw0KKy8qDQorICogQkFTRV9ESVNDT1ZFUl9BR0VOVA0KKyAqLw0KKyNkZWZpbmUgU0NN
SV9CQVNFX0FHRU5UX0lEX09XTiAweEZGRkZGRkZGDQorDQorc3RydWN0IHNjbWlfbXNnX2Jhc2Vf
ZGlzY292ZXJfYWdlbnRfYTJwIHsNCisgICAgdWludDMyX3QgYWdlbnRfaWQ7DQorfSBfX3BhY2tl
ZDsNCisNCitzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9kaXNjb3Zlcl9hZ2VudF9wMmEgew0KKyAgICB1
aW50MzJfdCBhZ2VudF9pZDsNCisgICAgY2hhciBuYW1lW1NDTUlfU0hPUlRfTkFNRV9NQVhfU0la
RV07DQorfSBfX3BhY2tlZDsNCisNCisvKg0KKyAqIEJBU0VfU0VUX0RFVklDRV9QRVJNSVNTSU9O
Uw0KKyAqLw0KKyNkZWZpbmUgU0NNSV9CQVNFX0RFVklDRV9BQ0NFU1NfQUxMT1cgICAgICAgICAg
IEJJVCgwLCBVTCkNCisNCitzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9zZXRfZGV2aWNlX3Blcm1pc3Np
b25zX2EycCB7DQorICAgIHVpbnQzMl90IGFnZW50X2lkOw0KKyAgICB1aW50MzJfdCBkZXZpY2Vf
aWQ7DQorICAgIHVpbnQzMl90IGZsYWdzOw0KK30gX19wYWNrZWQ7DQorDQorLyoNCisgKiBCQVNF
X1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJT04NCisgKi8NCisjZGVmaW5lIFNDTUlfQkFTRV9BR0VO
VF9QRVJNSVNTSU9OU19SRVNFVCAgICAgICBCSVQoMCwgVUwpDQorDQorc3RydWN0IHNjbWlfbXNn
X2Jhc2VfcmVzZXRfYWdlbnRfY2ZnX2EycCB7DQorICAgIHVpbnQzMl90IGFnZW50X2lkOw0KKyAg
ICB1aW50MzJfdCBmbGFnczsNCit9IF9fcGFja2VkOw0KKw0KKyNlbmRpZiAvKiBBUk1fRklSTVdB
UkVfU0NNSV9QUk9UT19IXyAqLw0KKw0KKy8qDQorICogTG9jYWwgdmFyaWFibGVzOg0KKyAqIG1v
ZGU6IEMNCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiDQorICogYy1iYXNpYy1vZmZzZXQ6IDQNCisg
KiB0YWItd2lkdGg6IDQNCisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCisgKiBFbmQ6DQorICov
DQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uYyBiL3hlbi9h
cmNoL2FybS9maXJtd2FyZS9zY21pLXNobWVtLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl
eCAwMDAwMDAwMDAwLi5mZDY4YzhlZTFhDQotLS0gL2Rldi9udWxsDQorKysgYi94ZW4vYXJjaC9h
cm0vZmlybXdhcmUvc2NtaS1zaG1lbS5jDQpAQCAtMCwwICsxLDEyOSBAQA0KKy8qIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIFNNQy9IVkMgc2htZW0g
dHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIHVzZWQgYnkNCisgKiBTQ0kgU0NNSSBtdWx0aS1hZ2Vu
dCBkcml2ZXIuDQorICoNCisgKiBPbGVrc2lpIE1vaXNpZWlldiA8b2xla3NpaV9tb2lzaWVpZXZA
ZXBhbS5jb20+DQorICogQ29weXJpZ2h0IChjKSAyMDI1IEVQQU0gU3lzdGVtcw0KKyAqLw0KKw0K
KyNpbmNsdWRlIDx4ZW4vZXJyLmg+DQorI2luY2x1ZGUgPHhlbi9pby5oPg0KKyNpbmNsdWRlIDxh
c20vaW8uaD4NCisNCisjaW5jbHVkZSAic2NtaS1wcm90by5oIg0KKyNpbmNsdWRlICJzY21pLXNo
bWVtLmgiDQorDQorc3RhdGljIGlubGluZSBpbnQNCitzaG1lbV9jaGFubmVsX3N0YXR1cyhjb25z
dCBzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtKQ0KK3sNCisgICAgcmV0dXJu
IChyZWFkbCgmc2htZW0tPmNoYW5uZWxfc3RhdHVzKSAmDQorICAgICAgICAgICAgU0NNSV9TSE1F
TV9DSEFOX1NUQVRfQ0hBTk5FTF9GUkVFKSA/IDAgOiAtRUJVU1k7DQorfQ0KKw0KK2ludCBzY21p
X3B1dF9tZXNzYWdlKHN0cnVjdCBzY21pX3NoYXJlZF9tZW0gX19pb21lbSAqc2htZW0sDQorICAg
ICAgICAgICAgICAgICAgICAgc2NtaV9tc2dfaGVhZGVyX3QgKmhkciwgdm9pZCAqZGF0YSwgdW5z
aWduZWQgaW50IGxlbikNCit7DQorICAgIGludCByZXQ7DQorDQorICAgIC8qIEtlZXAgdGhlIHRy
YW5zcG9ydCBsYXlvdXQgbmF0dXJhbGx5IGFsaWduZWQgZm9yIDMyLWJpdCBJL08gYWNjZXNzZXMu
ICovDQorICAgIEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtLCBy
ZXNlcnZlZCkgIT0gMHgwMCk7DQorICAgIEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2Nt
aV9zaGFyZWRfbWVtLCBjaGFubmVsX3N0YXR1cykgIT0gMHgwNCk7DQorICAgIEJVSUxEX0JVR19P
TihvZmZzZXRvZihzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtLCByZXNlcnZlZDEpICE9IDB4MDgpOw0K
KyAgICBCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IHNjbWlfc2hhcmVkX21lbSwgZmxhZ3Mp
ICE9IDB4MTApOw0KKyAgICBCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IHNjbWlfc2hhcmVk
X21lbSwgbGVuZ3RoKSAhPSAweDE0KTsNCisgICAgQlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVj
dCBzY21pX3NoYXJlZF9tZW0sIG1zZ19oZWFkZXIpICE9IDB4MTgpOw0KKyAgICBCVUlMRF9CVUdf
T04ob2Zmc2V0b2Yoc3RydWN0IHNjbWlfc2hhcmVkX21lbSwgbXNnX3BheWxvYWQpICE9IDB4MWMp
Ow0KKw0KKyAgICBpZiAoIChsZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtLCBt
c2dfcGF5bG9hZCkpID4NCisgICAgICAgICBTQ01JX1NITUVNX01BUFBFRF9TSVpFICkNCisgICAg
ew0KKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlINCisgICAgICAgICAgICAgICAic2NtaTogV3Jv
bmcgc2l6ZSBvZiB0aGUgU01DIG1lc3NhZ2UuIERhdGEgaXMgaW52YWxpZFxuIik7DQorICAgICAg
ICByZXR1cm4gLUVJTlZBTDsNCisgICAgfQ0KKw0KKyAgICByZXQgPSBzaG1lbV9jaGFubmVsX3N0
YXR1cyhzaG1lbSk7DQorICAgIGlmICggcmV0ICkNCisgICAgICAgIHJldHVybiByZXQ7DQorDQor
ICAgIC8qIEFsbCBjb250cm9sIGZpZWxkcyB1c2UgRGV2aWNlIG1lbW9yeSwgd2hpY2ggcHJlc2Vy
dmVzIHdyaXRlIG9yZGVyLiAqLw0KKyAgICB3cml0ZWxfcmVsYXhlZCgweDAsICZzaG1lbS0+Y2hh
bm5lbF9zdGF0dXMpOw0KKyAgICAvKiBXcml0aW5nIDB4MCByaWdodCBub3csIGJ1dCAic2htZW0i
X0ZMQUdfSU5UUl9FTkFCTEVEIGNhbiBiZSBzZXQgKi8NCisgICAgd3JpdGVsX3JlbGF4ZWQoMHgw
LCAmc2htZW0tPmZsYWdzKTsNCisgICAgd3JpdGVsX3JlbGF4ZWQoc2l6ZW9mKHNobWVtLT5tc2df
aGVhZGVyKSArIGxlbiwgJnNobWVtLT5sZW5ndGgpOw0KKyAgICB3cml0ZWxfcmVsYXhlZChwYWNr
X3NjbWlfaGVhZGVyKGhkciksICZzaG1lbS0+bXNnX2hlYWRlcik7DQorDQorICAgIGlmICggbGVu
ID4gMCAmJiBkYXRhICkNCisgICAgICAgIG1lbWNweV90b2lvKHNobWVtLT5tc2dfcGF5bG9hZCwg
ZGF0YSwgbGVuKTsNCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBzY21pX2dldF9tZXNz
YWdlKGNvbnN0IHN0cnVjdCBzY21pX3NoYXJlZF9tZW0gX19pb21lbSAqc2htZW0sDQorICAgICAg
ICAgICAgICAgICAgICAgc2NtaV9tc2dfaGVhZGVyX3QgKmhkciwgdm9pZCAqZGF0YSwgdW5zaWdu
ZWQgaW50IGxlbikNCit7DQorICAgIGludCByZWN2X2xlbjsNCisgICAgaW50IHJldDsNCisgICAg
LyoNCisgICAgICogRmlyc3Qgd29yZCBvZiBtc2dfcGF5bG9hZCBjYXJyaWVzIHRoZSByZXR1cm5l
ZCBzdGF0dXM7IGV4Y2x1ZGUgaXQgZnJvbQ0KKyAgICAgKiByZWN2X2xlbiBzbyBvbmx5IHRoZSBw
cm90b2NvbCBwYXlsb2FkIGlzIGNvcGllZCBiYWNrIHRvIHRoZSBjYWxsZXIuDQorICAgICAqLw0K
KyAgICBpbnQgcGFkID0gc2l6ZW9mKGhkci0+c3RhdHVzKTsNCisNCisgICAgaWYgKCBsZW4gPj0g
U0NNSV9TSE1FTV9NQVBQRURfU0laRSAtDQorICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHNjbWlf
c2hhcmVkX21lbSwgbXNnX3BheWxvYWQpICkNCisgICAgew0KKyAgICAgICAgcHJpbnRrKFhFTkxP
R19FUlINCisgICAgICAgICAgICAgICAic2NtaTogV3Jvbmcgc2l6ZSBvZiB0aGUgaW5wdXQgU01D
IG1lc3NhZ2VcbiIpOw0KKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgIH0NCisNCisgICAg
cmV0ID0gc2htZW1fY2hhbm5lbF9zdGF0dXMoc2htZW0pOw0KKyAgICBpZiAoIHJldCApDQorICAg
ICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICByZWN2X2xlbiA9IHJlYWRsKCZzaG1lbS0+bGVuZ3Ro
KSAtIHNpemVvZihzaG1lbS0+bXNnX2hlYWRlcik7DQorDQorICAgIGlmICggcmVjdl9sZW4gPCAw
ICkNCisgICAgew0KKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlINCisgICAgICAgICAgICAgICAi
c2NtaTogV3Jvbmcgc2l6ZSBvZiB0aGUgU01DIG1lc3NhZ2UuIERhdGEgbWF5IGJlIGludmFsaWRc
biIpOw0KKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgIH0NCisNCisgICAgdW5wYWNrX3Nj
bWlfaGVhZGVyKHJlYWRsKCZzaG1lbS0+bXNnX2hlYWRlciksIGhkcik7DQorDQorICAgIGhkci0+
c3RhdHVzID0gcmVhZGwoJnNobWVtLT5tc2dfcGF5bG9hZCk7DQorICAgIHJlY3ZfbGVuID0gcmVj
dl9sZW4gPiBwYWQgPyByZWN2X2xlbiAtIHBhZCA6IDA7DQorDQorICAgIHJldCA9IHNjbWlfdG9f
eGVuX2Vycm5vKGhkci0+c3RhdHVzKTsNCisgICAgaWYgKCByZXQgKQ0KKyAgICB7DQorICAgICAg
ICBwcmludGsoWEVOTE9HX0RFQlVHICJzY21pOiBFcnJvciByZWNlaXZlZDogJWRcbiIsIHJldCk7
DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorDQorICAgIGlmICggcmVjdl9sZW4gPiBs
ZW4gKQ0KKyAgICB7DQorICAgICAgICBwcmludGsoWEVOTE9HX0VSUg0KKyAgICAgICAgICAgICAg
ICJzY21pOiBOb3QgZW5vdWdoIGJ1ZmZlciBmb3IgbWVzc2FnZSAlZCwgZXhwZWN0aW5nICVkXG4i
LA0KKyAgICAgICAgICAgICAgIHJlY3ZfbGVuLCBsZW4pOw0KKyAgICAgICAgcmV0dXJuIC1FSU5W
QUw7DQorICAgIH0NCisNCisgICAgaWYgKCByZWN2X2xlbiA+IDAgKQ0KKyAgICAgICAgbWVtY3B5
X2Zyb21pbyhkYXRhLCBzaG1lbS0+bXNnX3BheWxvYWQgKyBwYWQsIHJlY3ZfbGVuKTsNCisNCisg
ICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qDQorICogTG9jYWwgdmFyaWFibGVzOg0KKyAqIG1vZGU6
IEMNCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiDQorICogYy1iYXNpYy1vZmZzZXQ6IDQNCisgKiB0
YWItd2lkdGg6IDQNCisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCisgKiBFbmQ6DQorICovDQpk
aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uaCBiL3hlbi9hcmNo
L2FybS9maXJtd2FyZS9zY21pLXNobWVtLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw
MDAwMDAwMDAwLi4yNTc3ZTljNjYxDQotLS0gL2Rldi9udWxsDQorKysgYi94ZW4vYXJjaC9hcm0v
ZmlybXdhcmUvc2NtaS1zaG1lbS5oDQpAQCAtMCwwICsxLDQ1IEBADQorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KKy8qDQorICogQXJtIFN5c3RlbSBDb250cm9s
IGFuZCBNYW5hZ2VtZW50IEludGVyZmFjZSBkZWZpbml0aW9ucw0KKyAqIFZlcnNpb24gMy4wIChE
RU4wMDU2QykNCisgKiBTaGFyZWQgTWVtb3J5IGJhc2VkIFRyYW5zcG9ydA0KKyAqDQorICogQ29w
eXJpZ2h0IChjKSAyMDI0IEVQQU0gU3lzdGVtcw0KKyAqLw0KKw0KKyNpZm5kZWYgQVJNX0ZJUk1X
QVJFX1NDTUlfU0hNRU1fSF8NCisjZGVmaW5lIEFSTV9GSVJNV0FSRV9TQ01JX1NITUVNX0hfDQor
DQorI2luY2x1ZGUgPHhlbi9zdGRpbnQuaD4NCisNCisjZGVmaW5lIFNDTUlfU0hNRU1fQ0hBTl9T
VEFUX0NIQU5ORUxfRlJFRSAgQklUKDAsIFVMKQ0KKyNkZWZpbmUgU0NNSV9TSE1FTV9DSEFOX1NU
QVRfQ0hBTk5FTF9FUlJPUiBCSVQoMSwgVUwpDQorDQorc3RydWN0IHNjbWlfc2hhcmVkX21lbSB7
DQorICAgIHVpbnQzMl90IHJlc2VydmVkOw0KKyAgICB1aW50MzJfdCBjaGFubmVsX3N0YXR1czsN
CisgICAgdWludDMyX3QgcmVzZXJ2ZWQxWzJdOw0KKyAgICB1aW50MzJfdCBmbGFnczsNCisgICAg
dWludDMyX3QgbGVuZ3RoOw0KKyAgICB1aW50MzJfdCBtc2dfaGVhZGVyOw0KKyAgICB1aW50OF90
IG1zZ19wYXlsb2FkW107DQorfTsNCisNCisjZGVmaW5lIFNDTUlfU0hNRU1fTUFQUEVEX1NJWkUg
UEFHRV9TSVpFDQorDQoraW50IHNjbWlfcHV0X21lc3NhZ2Uoc3RydWN0IHNjbWlfc2hhcmVkX21l
bSBfX2lvbWVtICpzaG1lbSwNCisgICAgICAgICAgICAgICAgICAgICBzY21pX21zZ19oZWFkZXJf
dCAqaGRyLCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKTsNCisNCitpbnQgc2NtaV9nZXRf
bWVzc2FnZShjb25zdCBzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtLA0KKyAg
ICAgICAgICAgICAgICAgICAgIHNjbWlfbXNnX2hlYWRlcl90ICpoZHIsIHZvaWQgKmRhdGEsIHVu
c2lnbmVkIGludCBsZW4pOw0KKyNlbmRpZiAvKiBBUk1fRklSTVdBUkVfU0NNSV9TSE1FTV9IXyAq
Lw0KKw0KKy8qDQorICogTG9jYWwgdmFyaWFibGVzOg0KKyAqIG1vZGU6IEMNCisgKiBjLWZpbGUt
c3R5bGU6ICJCU0QiDQorICogYy1iYXNpYy1vZmZzZXQ6IDQNCisgKiB0YWItd2lkdGg6IDQNCisg
KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCisgKiBFbmQ6DQorICovDQpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYyBiL3hlbi9hcmNoL2FybS9m
aXJtd2FyZS9zY21pLXNtYy1tdWx0aWFnZW50LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl
eCAwMDAwMDAwMDAwLi5jMTNiYmZjOGUwDQotLS0gL2Rldi9udWxsDQorKysgYi94ZW4vYXJjaC9h
cm0vZmlybXdhcmUvc2NtaS1zbWMtbXVsdGlhZ2VudC5jDQpAQCAtMCwwICsxLDgwMCBAQA0KKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIFNDSSBT
Q01JIG11bHRpLWFnZW50IGRyaXZlciwgdXNpbmcgU01DL0hWQyBzaG1lbSBhcyB0cmFuc3BvcnQu
DQorICoNCisgKiBPbGVrc2lpIE1vaXNpZWlldiA8b2xla3NpaV9tb2lzaWVpZXZAZXBhbS5jb20+
DQorICogQ29weXJpZ2h0IChjKSAyMDI1IEVQQU0gU3lzdGVtcw0KKyAqLw0KKw0KKyNpbmNsdWRl
IDx4ZW4vYWNwaS5oPg0KKw0KKyNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4NCisjaW5jbHVk
ZSA8eGVuL2luaXQuaD4NCisjaW5jbHVkZSA8eGVuL2lvY2FwLmg+DQorI2luY2x1ZGUgPHhlbi9l
cnIuaD4NCisjaW5jbHVkZSA8eGVuL2xpYmZkdC9saWJmZHQuaD4NCisjaW5jbHVkZSA8eGVuL3N0
cmluZy5oPg0KKyNpbmNsdWRlIDx4ZW4vcGFyYW0uaD4NCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+
DQorI2luY2x1ZGUgPHhlbi92bWFwLmg+DQorDQorI2luY2x1ZGUgPGFzbS9maXJtd2FyZS9zY2ku
aD4NCisjaW5jbHVkZSA8YXNtL2lvLmg+DQorI2luY2x1ZGUgPGFzbS9zbWNjYy5oPg0KKw0KKyNp
bmNsdWRlICJzY21pLXByb3RvLmgiDQorI2luY2x1ZGUgInNjbWktc2htZW0uaCINCisNCitzdHJ1
Y3Qgc2NtaV9jaGFubmVsIHsNCisgICAgdWludDMyX3QgYWdlbnRfaWQ7DQorICAgIHVpbnQzMl90
IGZ1bmNfaWQ7DQorICAgIGRvbWlkX3QgZG9tYWluX2lkOw0KKyAgICBwYWRkcl90IHBhZGRyOw0K
KyAgICBzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtOw0KKyAgICBzcGlubG9j
a190IGxvY2s7DQorICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsNCit9Ow0KKw0KK3N0cnVjdCBz
Y21pX2RhdGEgew0KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoYW5uZWxfbGlzdDsNCisgICAgc3Bp
bmxvY2tfdCBjaGFubmVsX2xpc3RfbG9jazsNCisgICAgdWludDMyX3QgZnVuY19pZDsNCisgICAg
Ym9vbCBpbml0aWFsaXplZDsNCisgICAgdWludDMyX3Qgc2htZW1fcGhhbmRsZTsNCisgICAgdWlu
dDMyX3QgaHlwX2NoYW5uZWxfYWdlbnRfaWQ7DQorICAgIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAq
ZHRfZGV2Ow0KK307DQorDQorc3RhdGljIHN0cnVjdCBzY21pX2RhdGEgc2NtaV9kYXRhOw0KKw0K
K3N0YXRpYyBib29sIHNjbWlfaXNfdW5kZXJfeGVuX3NjaShjb25zdCBzdHJ1Y3QgZHRfZGV2aWNl
X25vZGUgKm5vZGUpDQorew0KKyAgICBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKnA7DQor
DQorICAgIGZvciAoIHAgPSBub2RlLT5wYXJlbnQ7IHA7IHAgPSBwLT5wYXJlbnQgKQ0KKyAgICAg
ICAgaWYgKCBkdF9kZXZpY2VfaXNfY29tcGF0aWJsZShwLCAieGVuLHNjaSIpICkNCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCisNCisgICAgcmV0dXJuIGZhbHNlOw0KK30NCisNCitzdGF0aWMg
aW50IHNlbmRfc21jX21lc3NhZ2Uoc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbl9pbmZvLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY21pX21zZ19oZWFkZXJfdCAqaGRyLCB2b2lkICpk
YXRhLCBpbnQgbGVuKQ0KK3sNCisgICAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzcDsNCisgICAg
aW50IHJldDsNCisNCisgICAgcmV0ID0gc2NtaV9wdXRfbWVzc2FnZShjaGFuX2luZm8tPnNobWVt
LCBoZHIsIGRhdGEsIGxlbik7DQorICAgIGlmICggcmV0ICkNCisgICAgICAgIHJldHVybiByZXQ7
DQorDQorICAgIHJlc3AgPSBhcm1fc21jY2NfMV8xX3NtYyhjaGFuX2luZm8tPmZ1bmNfaWQsIDAs
IDAsIDAsIDAsIDAsIDAsIDApOw0KKw0KKyAgICBpZiAoIHJlc3AuYTAgPT0gKHVuc2lnbmVkIGxv
bmcpQVJNX1NNQ0NDX0lOVkFMSURfUEFSQU1FVEVSICkNCisgICAgICAgIHJldHVybiAtRUlOVkFM
Ow0KKw0KKyAgICBpZiAoIHJlc3AuYTAgKQ0KKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0K
Kw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBkb19zbWNfeGZlcihzdHJ1Y3Qg
c2NtaV9jaGFubmVsICpjaGFuX2luZm8sIHNjbWlfbXNnX2hlYWRlcl90ICpoZHIsDQorICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICp0eF9kYXRhLCBpbnQgdHhfc2l6ZSwgdm9pZCAqcnhfZGF0
YSwgaW50IHJ4X3NpemUpDQorew0KKyAgICBpbnQgcmV0ID0gMDsNCisNCisgICAgQVNTRVJUKGNo
YW5faW5mbyAmJiBjaGFuX2luZm8tPnNobWVtKTsNCisNCisgICAgaWYgKCAhaGRyICkNCisgICAg
ICAgIHJldHVybiAtRUlOVkFMOw0KKw0KKyAgICBzcGluX2xvY2soJmNoYW5faW5mby0+bG9jayk7
DQorDQorICAgIHByaW50ayhYRU5MT0dfREVCVUcNCisgICAgICAgICAgICJzY21pOiBhZ2VudF9p
ZCA9ICVkIG1zZ19pZCA9ICV4IHR5cGUgPSAlZCwgcHJvdG8gPSAleFxuIiwNCisgICAgICAgICAg
IGNoYW5faW5mby0+YWdlbnRfaWQsIGhkci0+aWQsIGhkci0+dHlwZSwgaGRyLT5wcm90b2NvbCk7
DQorDQorICAgIHJldCA9IHNlbmRfc21jX21lc3NhZ2UoY2hhbl9pbmZvLCBoZHIsIHR4X2RhdGEs
IHR4X3NpemUpOw0KKyAgICBpZiAoIHJldCApDQorICAgICAgICBnb3RvIGNsZWFudXA7DQorDQor
ICAgIHJldCA9IHNjbWlfZ2V0X21lc3NhZ2UoY2hhbl9pbmZvLT5zaG1lbSwgaGRyLCByeF9kYXRh
LCByeF9zaXplKTsNCisNCisgICAgcHJpbnRrKFhFTkxPR19ERUJVRw0KKyAgICAgICAgICAgInNj
bWk6IGdldCBzbWMgcmVzcG9uc2UgYWdlbnRfaWQgPSAlZCBtc2dfaWQgPSAleCAiDQorICAgICAg
ICAgICAicHJvdG8gPSAleCByZXM9JWRcbiIsDQorICAgICAgICAgICBjaGFuX2luZm8tPmFnZW50
X2lkLCBoZHItPmlkLCBoZHItPnByb3RvY29sLCByZXQpOw0KKw0KK2NsZWFudXA6DQorICAgIHNw
aW5fdW5sb2NrKCZjaGFuX2luZm8tPmxvY2spOw0KKw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisN
CitzdGF0aWMgc3RydWN0IHNjbWlfY2hhbm5lbCAqZ2V0X2NoYW5uZWxfYnlfaWQodWludDMyX3Qg
YWdlbnRfaWQpDQorew0KKyAgICBzdHJ1Y3Qgc2NtaV9jaGFubmVsICpjdXJyOw0KKyAgICBib29s
IGZvdW5kID0gZmFsc2U7DQorDQorICAgIHNwaW5fbG9jaygmc2NtaV9kYXRhLmNoYW5uZWxfbGlz
dF9sb2NrKTsNCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJyLCAmc2NtaV9kYXRhLmNoYW5u
ZWxfbGlzdCwgbGlzdCkNCisgICAgew0KKyAgICAgICAgaWYgKCBjdXJyLT5hZ2VudF9pZCA9PSBh
Z2VudF9pZCApDQorICAgICAgICB7DQorICAgICAgICAgICAgZm91bmQgPSB0cnVlOw0KKyAgICAg
ICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHNwaW5fdW5sb2NrKCZz
Y21pX2RhdGEuY2hhbm5lbF9saXN0X2xvY2spOw0KKyAgICBpZiAoIGZvdW5kICkNCisgICAgICAg
IHJldHVybiBjdXJyOw0KKw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorDQorc3RhdGljIHN0cnVj
dCBzY21pX2NoYW5uZWwgKmFjcXVpcmVfc2NtaV9jaGFubmVsKHN0cnVjdCBkb21haW4gKmQsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGFnZW50X2lkKQ0KK3sNCisgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY3VycjsNCisgICAgc3Ry
dWN0IHNjbWlfY2hhbm5lbCAqcmV0ID0gRVJSX1BUUigtRU5PRU5UKTsNCisNCisgICAgc3Bpbl9s
b2NrKCZzY21pX2RhdGEuY2hhbm5lbF9saXN0X2xvY2spOw0KKyAgICBsaXN0X2Zvcl9lYWNoX2Vu
dHJ5KGN1cnIsICZzY21pX2RhdGEuY2hhbm5lbF9saXN0LCBsaXN0KQ0KKyAgICB7DQorICAgICAg
ICBpZiAoIGN1cnItPmFnZW50X2lkID09IGFnZW50X2lkICkNCisgICAgICAgIHsNCisgICAgICAg
ICAgICBpZiAoIGN1cnItPmRvbWFpbl9pZCAhPSBET01JRF9JTlZBTElEICkNCisgICAgICAgICAg
ICB7DQorICAgICAgICAgICAgICAgIHJldCA9IEVSUl9QVFIoLUVFWElTVCk7DQorICAgICAgICAg
ICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBjdXJyLT5kb21h
aW5faWQgPSBkLT5kb21haW5faWQ7DQorICAgICAgICAgICAgcmV0ID0gY3VycjsNCisgICAgICAg
ICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBzcGluX3VubG9jaygmc2Nt
aV9kYXRhLmNoYW5uZWxfbGlzdF9sb2NrKTsNCisNCisgICAgcmV0dXJuIHJldDsNCit9DQorDQor
c3RhdGljIHZvaWQgcmVsaW5xdWlzaF9zY21pX2NoYW5uZWwoc3RydWN0IHNjbWlfY2hhbm5lbCAq
Y2hhbm5lbCkNCit7DQorICAgIEFTU0VSVChjaGFubmVsICE9IE5VTEwpOw0KKw0KKyAgICBzcGlu
X2xvY2soJnNjbWlfZGF0YS5jaGFubmVsX2xpc3RfbG9jayk7DQorICAgIGNoYW5uZWwtPmRvbWFp
bl9pZCA9IERPTUlEX0lOVkFMSUQ7DQorICAgIHNwaW5fdW5sb2NrKCZzY21pX2RhdGEuY2hhbm5l
bF9saXN0X2xvY2spOw0KK30NCisNCitzdGF0aWMgaW50IG1hcF9jaGFubmVsX21lbW9yeShzdHJ1
Y3Qgc2NtaV9jaGFubmVsICpjaGFubmVsKQ0KK3sNCisgICAgQVNTRVJUKGNoYW5uZWwgJiYgY2hh
bm5lbC0+cGFkZHIpOw0KKyAgICBjaGFubmVsLT5zaG1lbSA9IGlvcmVtYXBfbm9jYWNoZShjaGFu
bmVsLT5wYWRkciwgU0NNSV9TSE1FTV9NQVBQRURfU0laRSk7DQorICAgIGlmICggIWNoYW5uZWwt
PnNobWVtICkNCisgICAgICAgIHJldHVybiAtRU5PTUVNOw0KKw0KKyAgICB3cml0ZWxfcmVsYXhl
ZChTQ01JX1NITUVNX0NIQU5fU1RBVF9DSEFOTkVMX0ZSRUUsDQorICAgICAgICAgICAgICAgICAg
ICZjaGFubmVsLT5zaG1lbS0+Y2hhbm5lbF9zdGF0dXMpOw0KKyAgICBwcmludGsoWEVOTE9HX0RF
QlVHICJzY21pOiBHb3Qgc2htZW0gJSJQUklwYWRkciIgYWZ0ZXIgdm1hcCAlcFxuIiwNCisgICAg
ICAgICAgIGNoYW5uZWwtPnBhZGRyLCBjaGFubmVsLT5zaG1lbSk7DQorDQorICAgIHJldHVybiAw
Ow0KK30NCisNCitzdGF0aWMgdm9pZCB1bm1hcF9jaGFubmVsX21lbW9yeShzdHJ1Y3Qgc2NtaV9j
aGFubmVsICpjaGFubmVsKQ0KK3sNCisgICAgQVNTRVJUKGNoYW5uZWwpOw0KKw0KKyAgICBpZiAo
ICFjaGFubmVsLT5zaG1lbSApDQorICAgICAgICByZXR1cm47DQorDQorICAgIGlvdW5tYXAoY2hh
bm5lbC0+c2htZW0pOw0KKyAgICBjaGFubmVsLT5zaG1lbSA9IE5VTEw7DQorfQ0KKw0KK3N0YXRp
YyBzdHJ1Y3Qgc2NtaV9jaGFubmVsICpzbWNfY3JlYXRlX2NoYW5uZWwodWludDMyX3QgYWdlbnRf
aWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBmdW5jX2lkLCBwYWRkcl90IGFkZHIpDQorew0KKyAgICBzdHJ1Y3Qgc2NtaV9jaGFubmVs
ICpjaGFubmVsLCAqY3VycjsNCisNCisgICAgc3Bpbl9sb2NrKCZzY21pX2RhdGEuY2hhbm5lbF9s
aXN0X2xvY2spOw0KKw0KKyAgICAvKiBDaGVjayBpZiBjaGFubmVsIGFscmVhZHkgZXhpc3RzIHdo
aWxlIGhvbGRpbmcgdGhlIGxvY2sgKi8NCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJyLCAm
c2NtaV9kYXRhLmNoYW5uZWxfbGlzdCwgbGlzdCkNCisgICAgew0KKyAgICAgICAgaWYgKCBjdXJy
LT5hZ2VudF9pZCA9PSBhZ2VudF9pZCApDQorICAgICAgICB7DQorICAgICAgICAgICAgc3Bpbl91
bmxvY2soJnNjbWlfZGF0YS5jaGFubmVsX2xpc3RfbG9jayk7DQorICAgICAgICAgICAgcmV0dXJu
IEVSUl9QVFIoLUVFWElTVCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgY2hhbm5lbCA9
IHhtYWxsb2Moc3RydWN0IHNjbWlfY2hhbm5lbCk7DQorICAgIGlmICggIWNoYW5uZWwgKQ0KKyAg
ICB7DQorICAgICAgICBzcGluX3VubG9jaygmc2NtaV9kYXRhLmNoYW5uZWxfbGlzdF9sb2NrKTsN
CisgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KKyAgICB9DQorDQorICAgIHNwaW5f
bG9ja19pbml0KCZjaGFubmVsLT5sb2NrKTsNCisgICAgY2hhbm5lbC0+YWdlbnRfaWQgPSBhZ2Vu
dF9pZDsNCisgICAgY2hhbm5lbC0+ZnVuY19pZCA9IGZ1bmNfaWQ7DQorICAgIGNoYW5uZWwtPmRv
bWFpbl9pZCA9IERPTUlEX0lOVkFMSUQ7DQorICAgIGNoYW5uZWwtPnNobWVtID0gTlVMTDsNCisg
ICAgY2hhbm5lbC0+cGFkZHIgPSBhZGRyOw0KKyAgICBsaXN0X2FkZF90YWlsKCZjaGFubmVsLT5s
aXN0LCAmc2NtaV9kYXRhLmNoYW5uZWxfbGlzdCk7DQorDQorICAgIHNwaW5fdW5sb2NrKCZzY21p
X2RhdGEuY2hhbm5lbF9saXN0X2xvY2spOw0KKyAgICByZXR1cm4gY2hhbm5lbDsNCit9DQorDQor
c3RhdGljIHZvaWQgX19pbml0IGZyZWVfY2hhbm5lbF9saXN0KHZvaWQpDQorew0KKyAgICBzdHJ1
Y3Qgc2NtaV9jaGFubmVsICpjdXJyLCAqX2N1cnI7DQorICAgIC8qDQorICAgICAqIENhbGxlZCBv
bmx5IG9uIHRoZSBfX2luaXQgZXJyb3IgcGF0aCwgYmVmb3JlIGFueSBydW50aW1lIHVzZXJzIGV4
aXN0LA0KKyAgICAgKiBzbyBubyBvdGhlciB0aHJlYWQgaXMgaXRlcmF0aW5nIGNoYW5uZWxfbGlz
dC4gS2VlcCB0aGUgbG9jayBmb3IgdGhlDQorICAgICAqIHdob2xlIGRyYWluIGZvciBjbGFyaXR5
IGFuZCB0byBhdm9pZCBtaXNsZWFkaW5nIHJlYWRlcnMgYWJvdXQgcG9zc2libGUNCisgICAgICog
Y29uY3VycmVudCBhY2Nlc3MuDQorICAgICAqLw0KKyAgICBzcGluX2xvY2soJnNjbWlfZGF0YS5j
aGFubmVsX2xpc3RfbG9jayk7DQorICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXJyLCBf
Y3VyciwgJnNjbWlfZGF0YS5jaGFubmVsX2xpc3QsIGxpc3QpDQorICAgIHsNCisgICAgICAgIGxp
c3RfZGVsKCZjdXJyLT5saXN0KTsNCisgICAgICAgIHhmcmVlKGN1cnIpOw0KKyAgICB9DQorICAg
IHNwaW5fdW5sb2NrKCZzY21pX2RhdGEuY2hhbm5lbF9saXN0X2xvY2spOw0KK30NCisNCitzdGF0
aWMgaW50IF9faW5pdA0KK3NjbWlfZHRfcmVhZF9jaGFubmVsX2FkZHIoc3RydWN0IGR0X2Rldmlj
ZV9ub2RlICpzY21pX25vZGUsIHVpbnQ2NF90ICphZGRyLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDY0X3QgKnNpemUpDQorew0KKyAgICBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKnNo
bWVtX25vZGU7DQorICAgIHVpbnQzMl90IHBoYW5kbGU7DQorICAgIGludCByZXQ7DQorDQorICAg
IHJldCA9IGR0X3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdTMyX2FycmF5KHNjbWlfbm9kZSwgInNo
bWVtIiwgJnBoYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEsIDEpOw0KKyAgICBpZiAoIHJldCA8IDAgKQ0KKyAgICAgICAgcmV0dXJuIHJldDsN
CisNCisgICAgc2htZW1fbm9kZSA9IGR0X2ZpbmRfbm9kZV9ieV9waGFuZGxlKHBoYW5kbGUpOw0K
KyAgICBpZiAoICFzaG1lbV9ub2RlIHx8DQorICAgICAgICAgIWR0X2RldmljZV9pc19jb21wYXRp
YmxlKHNobWVtX25vZGUsICJhcm0sc2NtaS1zaG1lbSIpICkNCisgICAgICAgIHJldHVybiAtRUlO
VkFMOw0KKw0KKyAgICByZXQgPSBkdF9kZXZpY2VfZ2V0X2FkZHJlc3Moc2htZW1fbm9kZSwgMCwg
YWRkciwgc2l6ZSk7DQorICAgIGlmICggcmV0ICkNCisgICAgICAgIHJldHVybiByZXQ7DQorDQor
ICAgIGlmICggISpzaXplIHx8ICFJU19BTElHTkVEKCpzaXplLCBTQ01JX1NITUVNX01BUFBFRF9T
SVpFKSB8fA0KKyAgICAgICAgICFJU19BTElHTkVEKCphZGRyLCBTQ01JX1NITUVNX01BUFBFRF9T
SVpFKSApDQorICAgIHsNCisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJzY21pOiBpbnZhbGlk
IHNobWVtIHJhbmdlIGZvciAlc1xuIiwNCisgICAgICAgICAgICAgICBzY21pX25vZGUtPmZ1bGxf
bmFtZSk7DQorICAgICAgICByZXR1cm4gLUVJTlZBTDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4g
MDsNCit9DQorDQorLyoNCisgKiBIYW5kbGUgRG9tMCBTQ01JIHNwZWNpZmljIERUIG5vZGVzDQor
ICoNCisgKiBNYWtlIGEgZGVjaXNpb24gb24gY29weWluZyBTQ01JIHNwZWNpZmljIG5vZGVzIGlu
dG8gRG9tMCBkZXZpY2UgdHJlZS4NCisgKiBGb3IgU0NNSSBtdWx0aS1hZ2VudCBjYXNlOg0KKyAq
IC0gc2htZW0gbm9kZXMgd2lsbCBub3QgYmUgY29waWVkIGFuZCBnZW5lcmF0ZWQgaW5zdGVhZCBp
ZiBTQ01JDQorICogICBpcyBlbmFibGVkIGZvciBEb20wDQorICogLSBzY21pIG5vZGUgd2lsbCBi
ZSBjb3BpZWQgaWYgU0NNSSBpcyBlbmFibGVkIGZvciBEb20wDQorICovDQorc3RhdGljIGJvb2wg
X19pbml0IHNjbWlfZHRfaGFuZGxlX25vZGUoc3RydWN0IGRvbWFpbiAqZCwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSkN
Cit7DQorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX21hdGNoIHNobWVtX21hdGNo
ZXNbXSBfX2luaXRjb25zdCA9IHsNCisgICAgICAgIERUX01BVENIX0NPTVBBVElCTEUoImFybSxz
Y21pLXNobWVtIiksDQorICAgICAgICB7IC8qIHNlbnRpbmVsICovIH0sDQorICAgIH07DQorICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX21hdGNoIHNjbWlfbWF0Y2hlc1tdIF9faW5p
dGNvbnN0ID0gew0KKyAgICAgICAgRFRfTUFUQ0hfUEFUSCgiL2Zpcm13YXJlL3NjbWkiKSwNCisg
ICAgICAgIHsgLyogc2VudGluZWwgKi8gfSwNCisgICAgfTsNCisNCisgICAgaWYgKCAhc2NtaV9k
YXRhLmluaXRpYWxpemVkICkNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisNCisgICAgLyogc2tp
cCBzY21pIHNobWVtIG5vZGUgZm9yIGRvbTAgaWYgc2NtaSBub3QgZW5hYmxlZCAqLw0KKyAgICBp
ZiAoIGR0X21hdGNoX25vZGUoc2htZW1fbWF0Y2hlcywgbm9kZSkgJiYgIXNjaV9kb21haW5faXNf
ZW5hYmxlZChkKSApDQorICAgIHsNCisgICAgICAgIGR0X2RwcmludGsoIiAgU2tpcCBzY21pIHNo
bWVtIG5vZGVcbiIpOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisNCisgICAgLyog
ZHJvcCBzY21pIGlmIG5vdCBlbmFibGVkICovDQorICAgIGlmICggZHRfbWF0Y2hfbm9kZShzY21p
X21hdGNoZXMsIG5vZGUpICYmICFzY2lfZG9tYWluX2lzX2VuYWJsZWQoZCkgKQ0KKyAgICB7DQor
ICAgICAgICBkdF9kcHJpbnRrKCIgIFNraXAgc2NtaSBub2RlXG4iKTsNCisgICAgICAgIHJldHVy
biB0cnVlOw0KKyAgICB9DQorDQorICAgIHJldHVybiBmYWxzZTsNCit9DQorDQorc3RhdGljIGlu
dCBzY21pX2Fzc2lnbl9kZXZpY2UodWludDMyX3QgYWdlbnRfaWQsIHVpbnQzMl90IGRldmljZV9p
ZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykNCit7DQor
ICAgIHN0cnVjdCBzY21pX21zZ19iYXNlX3NldF9kZXZpY2VfcGVybWlzc2lvbnNfYTJwIHR4Ow0K
KyAgICBzdHJ1Y3Qgc2NtaV9jaGFubmVsICpjaGFubmVsOw0KKyAgICBzY21pX21zZ19oZWFkZXJf
dCBoZHI7DQorDQorICAgIGNoYW5uZWwgPSBnZXRfY2hhbm5lbF9ieV9pZChzY21pX2RhdGEuaHlw
X2NoYW5uZWxfYWdlbnRfaWQpOw0KKyAgICBpZiAoICFjaGFubmVsICkNCisgICAgICAgIHJldHVy
biAtRUlOVkFMOw0KKw0KKyAgICBoZHIuaWQgPSBTQ01JX0JBU0VfU0VUX0RFVklDRV9QRVJNSVNT
SU9OUzsNCisgICAgaGRyLnR5cGUgPSAwOw0KKyAgICBoZHIucHJvdG9jb2wgPSBTQ01JX0JBU0Vf
UFJPVE9DT0w7DQorDQorICAgIHR4LmFnZW50X2lkID0gYWdlbnRfaWQ7DQorICAgIHR4LmRldmlj
ZV9pZCA9IGRldmljZV9pZDsNCisgICAgdHguZmxhZ3MgPSBmbGFnczsNCisNCisgICAgcmV0dXJu
IGRvX3NtY194ZmVyKGNoYW5uZWwsICZoZHIsICZ0eCwgc2l6ZW9mKHR4KSwgTlVMTCwgMCk7DQor
fQ0KKw0KK3N0YXRpYyBpbnQgc2NtaV9kdF9hc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4gKmQs
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR0X3BoYW5kbGVfYXJn
cyAqYWNfc3BlYykNCit7DQorICAgIHN0cnVjdCBzY21pX2NoYW5uZWwgKmFnZW50X2NoYW5uZWw7
DQorICAgIHVpbnQzMl90IHNjbWlfZGV2aWNlX2lkID0gYWNfc3BlYy0+YXJnc1swXTsNCisgICAg
aW50IHJldDsNCisNCisgICAgaWYgKCAhZC0+YXJjaC5zY2lfZGF0YSApDQorICAgICAgICByZXR1
cm4gMDsNCisNCisgICAgLyogVGhlIGFjY2Vzcy1jb250cm9sbGVycyBpcyBzcGVjaWZpZWQgZm9y
IERUIGRldiwgYnV0IGl0J3Mgbm90IGEgU0NNSSAqLw0KKyAgICBpZiAoICFzY21pX2RhdGEuZHRf
ZGV2IHx8DQorICAgICAgICAgIWR0X25vZGVfcGF0aF9pc19lcXVhbChhY19zcGVjLT5ucCwgc2Nt
aV9kYXRhLmR0X2Rldi0+ZnVsbF9uYW1lKSApDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAg
YWdlbnRfY2hhbm5lbCA9IGQtPmFyY2guc2NpX2RhdGE7DQorDQorICAgIHNwaW5fbG9jaygmYWdl
bnRfY2hhbm5lbC0+bG9jayk7DQorDQorICAgIHJldCA9IHNjbWlfYXNzaWduX2RldmljZShhZ2Vu
dF9jaGFubmVsLT5hZ2VudF9pZCwgc2NtaV9kZXZpY2VfaWQsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTQ01JX0JBU0VfREVWSUNFX0FDQ0VTU19BTExPVyk7DQorICAgIGlmICggcmV0
ICkNCisgICAgew0KKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlINCisgICAgICAgICAgICAgICAi
c2NtaTogY291bGQgbm90IGFzc2lnbiBkZXYgZm9yICVwZCBhZ2VudDolZCBkZXZfaWQ6JXUgKCVk
KSIsDQorICAgICAgICAgICAgICAgZCwgYWdlbnRfY2hhbm5lbC0+YWdlbnRfaWQsIHNjbWlfZGV2
aWNlX2lkLCByZXQpOw0KKyAgICB9DQorDQorICAgIHNwaW5fdW5sb2NrKCZhZ2VudF9jaGFubmVs
LT5sb2NrKTsNCisgICAgcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCBjb2xsZWN0X2Fn
ZW50X2lkKHN0cnVjdCBzY21pX2NoYW5uZWwgKmFnZW50X2NoYW5uZWwpDQorew0KKyAgICBpbnQg
cmV0Ow0KKyAgICBzY21pX21zZ19oZWFkZXJfdCBoZHI7DQorICAgIHN0cnVjdCBzY21pX21zZ19i
YXNlX2Rpc2NvdmVyX2FnZW50X3AyYSBkYV9yeDsNCisgICAgc3RydWN0IHNjbWlfbXNnX2Jhc2Vf
ZGlzY292ZXJfYWdlbnRfYTJwIGRhX3R4Ow0KKw0KKyAgICByZXQgPSBtYXBfY2hhbm5lbF9tZW1v
cnkoYWdlbnRfY2hhbm5lbCk7DQorICAgIGlmICggcmV0ICkNCisgICAgICAgIHJldHVybiByZXQ7
DQorDQorICAgIGhkci5pZCA9IFNDTUlfQkFTRV9ESVNDT1ZFUl9BR0VOVDsNCisgICAgaGRyLnR5
cGUgPSAwOw0KKyAgICBoZHIucHJvdG9jb2wgPSBTQ01JX0JBU0VfUFJPVE9DT0w7DQorDQorICAg
IGRhX3R4LmFnZW50X2lkID0gYWdlbnRfY2hhbm5lbC0+YWdlbnRfaWQ7DQorDQorICAgIHJldCA9
IGRvX3NtY194ZmVyKGFnZW50X2NoYW5uZWwsICZoZHIsICZkYV90eCwgc2l6ZW9mKGRhX3R4KSwg
JmRhX3J4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkYV9yeCkpOw0KKyAgICBp
ZiAoIGFnZW50X2NoYW5uZWwtPmRvbWFpbl9pZCAhPSBET01JRF9YRU4gKQ0KKyAgICAgICAgdW5t
YXBfY2hhbm5lbF9tZW1vcnkoYWdlbnRfY2hhbm5lbCk7DQorICAgIGlmICggcmV0ICkNCisgICAg
ICAgIHJldHVybiByZXQ7DQorDQorICAgIGlmICggZGFfcnguYWdlbnRfaWQgPiBTQ01JX01BWF9B
R0VOVF9JRCApDQorICAgICAgICByZXR1cm4gLUVJTlZBTDsNCisNCisgICAgcHJpbnRrKFhFTkxP
R19ERUJVRyAiaWQ9MHgleCBuYW1lPSVzXG4iLCBkYV9yeC5hZ2VudF9pZCwgZGFfcngubmFtZSk7
DQorICAgIGFnZW50X2NoYW5uZWwtPmFnZW50X2lkID0gZGFfcnguYWdlbnRfaWQ7DQorICAgIHJl
dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IF9faW5pdCBjb2xsZWN0X2FnZW50cyhzdHJ1Y3Qg
ZHRfZGV2aWNlX25vZGUgKnNjbWlfbm9kZSkNCit7DQorICAgIHN0cnVjdCBkdF9kZXZpY2Vfbm9k
ZSAqYWdlbnRzLCAqbm9kZTsNCisgICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsNCisNCisgICAg
LyogVXNlIHRoZSBjb25maWd1cmF0aW9uIGNvbnRhaW5pbmcgdGhpcyBtYW5hZ2VtZW50IGNoYW5u
ZWwuICovDQorICAgIGZvciAoIGFnZW50cyA9IHNjbWlfbm9kZS0+cGFyZW50OyBhZ2VudHM7IGFn
ZW50cyA9IGFnZW50cy0+cGFyZW50ICkNCisgICAgICAgIGlmICggZHRfZGV2aWNlX2lzX2NvbXBh
dGlibGUoYWdlbnRzLCAieGVuLHNjaSIpICkNCisgICAgICAgICAgICBicmVhazsNCisNCisgICAg
QVNTRVJUKGFnZW50cyk7DQorDQorICAgIGR0X2Zvcl9lYWNoX2NoaWxkX25vZGUoYWdlbnRzLCBu
b2RlKQ0KKyAgICAgICAgaWYgKCBkdF9ub2RlX25hbWVfaXNfZXF1YWwobm9kZSwgImFnZW50cyIp
ICkNCisgICAgICAgICAgICBicmVhazsNCisNCisgICAgaWYgKCAhbm9kZSApDQorICAgIHsNCisg
ICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJzY21pOiBtaXNzaW5nIGFnZW50cyBub2RlXG4iKTsN
CisgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICB9DQorICAgIGFnZW50cyA9IG5vZGU7DQor
DQorICAgIGlmICggZHRfY2hpbGRfbl9hZGRyX2NlbGxzKGFnZW50cykgIT0gMSB8fA0KKyAgICAg
ICAgIGR0X2NoaWxkX25fc2l6ZV9jZWxscyhhZ2VudHMpICE9IDAgKQ0KKyAgICAgICAgcmV0dXJu
IC1FSU5WQUw7DQorDQorICAgIGR0X2Zvcl9lYWNoX2NoaWxkX25vZGUoYWdlbnRzLCBub2RlKQ0K
KyAgICB7DQorICAgICAgICBzdHJ1Y3Qgc2NtaV9jaGFubmVsIGFnZW50ID0gew0KKyAgICAgICAg
ICAgIC5hZ2VudF9pZCA9IFNDTUlfQkFTRV9BR0VOVF9JRF9PV04sDQorICAgICAgICAgICAgLmRv
bWFpbl9pZCA9IERPTUlEX0lOVkFMSUQsDQorICAgICAgICB9Ow0KKyAgICAgICAgc3RydWN0IHNj
bWlfY2hhbm5lbCAqY2hhbm5lbDsNCisgICAgICAgIGJvb2wgZGlzY292ZXI7DQorICAgICAgICB1
aW50MzJfdCBsZW47DQorICAgICAgICB1aW50NjRfdCBhZGRyLCBzaXplOw0KKyAgICAgICAgaW50
IHJldDsNCisNCisgICAgICAgIGlmICggIWR0X2RldmljZV9pc19jb21wYXRpYmxlKG5vZGUsICJ4
ZW4sc2NtaS1hZ2VudCIpIHx8DQorICAgICAgICAgICAgICFkdF9kZXZpY2VfaXNfYXZhaWxhYmxl
KG5vZGUpICkNCisgICAgICAgICAgICBjb250aW51ZTsNCisNCisgICAgICAgIGRpc2NvdmVyID0g
IWR0X2ZpbmRfcHJvcGVydHkobm9kZSwgInJlZyIsICZsZW4pOw0KKyAgICAgICAgaWYgKCAhZGlz
Y292ZXIgKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICggbGVuICE9IHNpemVvZih1aW50
MzJfdCkgfHwNCisgICAgICAgICAgICAgICAgICFkdF9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAi
cmVnIiwgJmFnZW50LmFnZW50X2lkKSApDQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM
Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKCAhZHRfcHJvcGVydHlfcmVhZF91MzIobm9k
ZSwgImFybSxzbWMtaWQiLCAmYWdlbnQuZnVuY19pZCkgKQ0KKyAgICAgICAgICAgIHJldHVybiAt
RUlOVkFMOw0KKw0KKyAgICAgICAgcmV0ID0gc2NtaV9kdF9yZWFkX2NoYW5uZWxfYWRkcihub2Rl
LCAmYWRkciwgJnNpemUpOw0KKyAgICAgICAgaWYgKCByZXQgKQ0KKyAgICAgICAgICAgIHJldHVy
biByZXQ7DQorICAgICAgICBhZ2VudC5wYWRkciA9IGFkZHI7DQorDQorICAgICAgICBpZiAoIGRp
c2NvdmVyICkNCisgICAgICAgIHsNCisgICAgICAgICAgICAvKiBSZXNvbHZlIHRoZSBJRCBiZWZv
cmUgaW5zZXJ0aW5nIGl0IGludG8gdGhlIGNoYW5uZWwgbGlzdC4gKi8NCisgICAgICAgICAgICBz
cGluX2xvY2tfaW5pdCgmYWdlbnQubG9jayk7DQorICAgICAgICAgICAgcmV0ID0gY29sbGVjdF9h
Z2VudF9pZCgmYWdlbnQpOw0KKyAgICAgICAgICAgIGlmICggcmV0ICkNCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8qIFVJTlQ4X01BWCBpcyBy
ZXNlcnZlZCBhcyBpbnZhbGlkIGluIGd1ZXN0IGNvbmZpZ3VyYXRpb24uICovDQorICAgICAgICBp
ZiAoIGFnZW50LmFnZW50X2lkID49IFVJTlQ4X01BWCApDQorICAgICAgICAgICAgcmV0dXJuIC1F
SU5WQUw7DQorDQorICAgICAgICBjaGFubmVsID0gc21jX2NyZWF0ZV9jaGFubmVsKGFnZW50LmFn
ZW50X2lkLCBhZ2VudC5mdW5jX2lkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZ2VudC5wYWRkcik7DQorICAgICAgICBpZiAoIElTX0VSUihjaGFubmVsKSApDQorICAg
ICAgICB7DQorICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgInNjbWk6IENvdWxkIG5vdCBj
cmVhdGUgY2hhbm5lbCBmb3IgJXM6ICVsZFxuIiwNCisgICAgICAgICAgICAgICAgICAgbm9kZS0+
ZnVsbF9uYW1lLCBQVFJfRVJSKGNoYW5uZWwpKTsNCisgICAgICAgICAgICByZXR1cm4gUFRSX0VS
UihjaGFubmVsKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGNvdW50Kys7DQorICAgICAgICBw
cmludGsoWEVOTE9HX0RFQlVHICJzY21pOiBBZ2VudCAldSBTTUMgJVggYWRkciAlIlBSSXBhZGRy
IlxuIiwNCisgICAgICAgICAgICAgICBjaGFubmVsLT5hZ2VudF9pZCwgY2hhbm5lbC0+ZnVuY19p
ZCwgY2hhbm5lbC0+cGFkZHIpOw0KKyAgICB9DQorDQorICAgIHJldHVybiBjb3VudCA/IDAgOiAt
RUlOVkFMOw0KK30NCisNCitzdGF0aWMgaW50IHNjbWlfZG9tYWluX2luaXQoc3RydWN0IGRvbWFp
biAqZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9kb21jdGxfY3Jl
YXRlZG9tYWluICpjb25maWcpDQorew0KKyAgICBzdHJ1Y3Qgc2NtaV9jaGFubmVsICpjaGFubmVs
Ow0KKyAgICBpbnQgcmV0Ow0KKw0KKyAgICBpZiAoICFzY21pX2RhdGEuaW5pdGlhbGl6ZWQgKQ0K
KyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIC8qDQorICAgICAqIFNDTUkgc3VwcG9ydCBpcyBj
b25maWd1cmVkIHZpYToNCisgICAgICogLSBGb3IgZG9tMDogeGVuLGRvbTAtc2NpLWFnZW50LWlk
IHByb3BlcnR5IHVuZGVyIHRoZSB4ZW4sc2NpIGNvbnRhaW5lcg0KKyAgICAgKiAtIEZvciBkb20w
bGVzczogeGVuLHNjaS1hZ2VudC1pZCBpbiB0aGUgZG9tYWluIG5vZGUNCisgICAgICogVGhlIGNv
bmZpZy0+YXJjaC5hcm1fc2NpX3R5cGUgYW5kIGNvbmZpZy0+YXJjaC5hcm1fc2NpX2FnZW50X2lk
DQorICAgICAqIGFyZSBhbHJlYWR5IHNldCBieSBkb21haW5fYnVpbGQuYyBvciBkb20wbGVzcy1i
dWlsZC5jDQorICAgICAqLw0KKw0KKyAgICBpZiAoIGNvbmZpZy0+YXJjaC5hcm1fc2NpX3R5cGUg
PT0gWEVOX0RPTUNUTF9DT05GSUdfQVJNX1NDSV9OT05FICkNCisgICAgICAgIHJldHVybiAwOw0K
Kw0KKyAgICBjaGFubmVsID0gYWNxdWlyZV9zY21pX2NoYW5uZWwoZCwgY29uZmlnLT5hcmNoLmFy
bV9zY2lfYWdlbnRfaWQpOw0KKyAgICBpZiAoIElTX0VSUihjaGFubmVsKSApDQorICAgIHsNCisg
ICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQorICAgICAgICAgICAgICAgInNjbWk6IEZhaWxlZCB0
byBhY3F1aXJlIFNDTUkgY2hhbm5lbCBmb3IgYWdlbnRfaWQgJXU6ICVsZFxuIiwNCisgICAgICAg
ICAgICAgICBjb25maWctPmFyY2guYXJtX3NjaV9hZ2VudF9pZCwgUFRSX0VSUihjaGFubmVsKSk7
DQorICAgICAgICByZXR1cm4gUFRSX0VSUihjaGFubmVsKTsNCisgICAgfQ0KKw0KKyAgICBwcmlu
dGsoWEVOTE9HX0lORk8NCisgICAgICAgICAgICJzY21pOiBBY3F1aXJlIGNoYW5uZWwgaWQgPSAw
eCV4LCBkb21haW4gPSAlcGQgIg0KKyAgICAgICAgICAgInBhZGRyID0gMHglIlBSSXBhZGRyIlxu
IiwNCisgICAgICAgICAgIGNoYW5uZWwtPmFnZW50X2lkLCBkLCBjaGFubmVsLT5wYWRkcik7DQor
DQorICAgIC8qDQorICAgICAqIERvbTAgKGlmIHByZXNlbnQpIG5lZWRzIHRvIGhhdmUgYW4gYWNj
ZXNzIHRvIHRoZSBndWVzdCBtZW1vcnkgcmFuZ2UNCisgICAgICogdG8gc2F0aXNmeSBpb21lbV9h
Y2Nlc3NfcGVybWl0dGVkKCkgY2hlY2sgaW4gWEVOX0RPTUNUTF9pb21lbV9wZXJtaXNzaW9uDQor
ICAgICAqIGRvbWN0bC4NCisgICAgICovDQorICAgIGlmICggaGFyZHdhcmVfZG9tYWluICYmICFp
c19oYXJkd2FyZV9kb21haW4oZCkgKQ0KKyAgICB7DQorICAgICAgICByZXQgPSBpb21lbV9wZXJt
aXRfYWNjZXNzKGhhcmR3YXJlX2RvbWFpbiwgcGFkZHJfdG9fcGZuKGNoYW5uZWwtPnBhZGRyKSwN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdG9fcGZuKGNoYW5uZWwt
PnBhZGRyICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NNSV9TSE1FTV9N
QVBQRURfU0laRSAtIDEpKTsNCisgICAgICAgIGlmICggcmV0ICkNCisgICAgICAgICAgICBnb3Rv
IGVycm9yOw0KKyAgICB9DQorDQorICAgIGQtPmFyY2guc2NpX2RhdGEgPSBjaGFubmVsOw0KKyAg
ICBkLT5hcmNoLnNjaV9lbmFibGVkID0gdHJ1ZTsNCisNCisgICAgcmV0dXJuIDA7DQorDQorZXJy
b3I6DQorICAgIHJlbGlucXVpc2hfc2NtaV9jaGFubmVsKGNoYW5uZWwpOw0KKyAgICByZXR1cm4g
cmV0Ow0KK30NCisNCitpbnQgc2NtaV9kb21haW5fc2FuaXRpc2VfY29uZmlnKGNvbnN0IHN0cnVj
dCB4ZW5fZG9tY3RsX2NyZWF0ZWRvbWFpbiAqY29uZmlnKQ0KK3sNCisgICAgaWYgKCBjb25maWct
PmFyY2guYXJtX3NjaV90eXBlICE9IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfTk9ORSAmJg0K
KyAgICAgICAgIGNvbmZpZy0+YXJjaC5hcm1fc2NpX3R5cGUgIT0gWEVOX0RPTUNUTF9DT05GSUdf
QVJNX1NDSV9TQ01JX1NNQ19NQSApDQorICAgIHsNCisgICAgICAgIGRwcmludGsoWEVOTE9HX0lO
Rk8sICJzY21pOiBVbnN1cHBvcnRlZCBBUk1fU0NJIHR5cGVcbiIpOw0KKyAgICAgICAgcmV0dXJu
IC1FSU5WQUw7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg
c2NtaV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQ0KK3sNCisgICAgaW50
IHJldDsNCisgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbCwgKmFnZW50X2NoYW5uZWw7
DQorICAgIHNjbWlfbXNnX2hlYWRlcl90IGhkcjsNCisgICAgc3RydWN0IHNjbWlfbXNnX2Jhc2Vf
cmVzZXRfYWdlbnRfY2ZnX2EycCB0eDsNCisNCisgICAgaWYgKCAhZC0+YXJjaC5zY2lfZGF0YSAp
DQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgYWdlbnRfY2hhbm5lbCA9IGQtPmFyY2guc2Np
X2RhdGE7DQorDQorICAgIHNwaW5fbG9jaygmYWdlbnRfY2hhbm5lbC0+bG9jayk7DQorICAgIHR4
LmFnZW50X2lkID0gYWdlbnRfY2hhbm5lbC0+YWdlbnRfaWQ7DQorICAgIHNwaW5fdW5sb2NrKCZh
Z2VudF9jaGFubmVsLT5sb2NrKTsNCisNCisgICAgY2hhbm5lbCA9IGdldF9jaGFubmVsX2J5X2lk
KHNjbWlfZGF0YS5oeXBfY2hhbm5lbF9hZ2VudF9pZCk7DQorICAgIGlmICggIWNoYW5uZWwgKQ0K
KyAgICB7DQorICAgICAgICBwcmludGsoWEVOTE9HX0VSUg0KKyAgICAgICAgICAgICAgICJzY21p
OiBVbmFibGUgdG8gZ2V0IEh5cGVydmlzb3IgU0NNSSBjaGFubmVsIGZvciAlcGRcbiIsIGQpOw0K
KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgIH0NCisNCisgICAgaGRyLmlkID0gU0NNSV9C
QVNFX1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJT047DQorICAgIGhkci50eXBlID0gMDsNCisgICAg
aGRyLnByb3RvY29sID0gU0NNSV9CQVNFX1BST1RPQ09MOw0KKw0KKyAgICB0eC5mbGFncyA9IFND
TUlfQkFTRV9BR0VOVF9QRVJNSVNTSU9OU19SRVNFVDsNCisNCisgICAgcmV0ID0gZG9fc21jX3hm
ZXIoY2hhbm5lbCwgJmhkciwgJnR4LCBzaXplb2YodHgpLCBOVUxMLCAwKTsNCisgICAgaWYgKCBy
ZXQgPT0gLUVPUE5PVFNVUFAgKQ0KKyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIHJldHVybiBy
ZXQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNjbWlfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFp
biAqZCkNCit7DQorICAgIHN0cnVjdCBzY21pX2NoYW5uZWwgKmNoYW5uZWw7DQorDQorICAgIGlm
ICggIWQtPmFyY2guc2NpX2RhdGEgKQ0KKyAgICAgICAgcmV0dXJuOw0KKw0KKyAgICBjaGFubmVs
ID0gZC0+YXJjaC5zY2lfZGF0YTsNCisgICAgc3Bpbl9sb2NrKCZjaGFubmVsLT5sb2NrKTsNCisN
CisgICAgcmVsaW5xdWlzaF9zY21pX2NoYW5uZWwoY2hhbm5lbCk7DQorICAgIHByaW50ayhYRU5M
T0dfREVCVUcgInNjbWk6IEZyZWUgJXBkXG4iLCBkKTsNCisNCisgICAgZC0+YXJjaC5zY2lfZGF0
YSA9IE5VTEw7DQorICAgIGQtPmFyY2guc2NpX2VuYWJsZWQgPSBmYWxzZTsNCisNCisgICAgc3Bp
bl91bmxvY2soJmNoYW5uZWwtPmxvY2spOw0KK30NCisNCitzdGF0aWMgYm9vbCBzY21pX2hhbmRs
ZV9jYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KK3sNCisgICAgdWludDMyX3QgZmlk
ID0gKHVpbnQzMl90KWdldF91c2VyX3JlZyhyZWdzLCAwKTsNCisgICAgc3RydWN0IHNjbWlfY2hh
bm5lbCAqYWdlbnRfY2hhbm5lbDsNCisgICAgc3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRv
bWFpbjsNCisgICAgYm9vbCByZXMgPSBmYWxzZTsNCisNCisgICAgaWYgKCAoIXNjaV9kb21haW5f
aXNfZW5hYmxlZChkKSkgfHwgKCFkLT5hcmNoLnNjaV9kYXRhKSApDQorICAgICAgICByZXR1cm4g
ZmFsc2U7DQorDQorICAgIGFnZW50X2NoYW5uZWwgPSBkLT5hcmNoLnNjaV9kYXRhOw0KKyAgICBz
cGluX2xvY2soJmFnZW50X2NoYW5uZWwtPmxvY2spOw0KKw0KKyAgICBpZiAoIGFnZW50X2NoYW5u
ZWwtPmZ1bmNfaWQgIT0gZmlkICkNCisgICAgew0KKyAgICAgICAgcmVzID0gZmFsc2U7DQorICAg
ICAgICBnb3RvIHVubG9jazsNCisgICAgfQ0KKw0KKyAgICBhcm1fc21jY2NfZ3Vlc3Rfc21jKHJl
Z3MpOw0KKyAgICByZXMgPSB0cnVlOw0KK3VubG9jazoNCisgICAgc3Bpbl91bmxvY2soJmFnZW50
X2NoYW5uZWwtPmxvY2spOw0KKw0KKyAgICByZXR1cm4gcmVzOw0KK30NCisNCitzdGF0aWMgY29u
c3Qgc3RydWN0IHNjaV9tZWRpYXRvcl9vcHMgc2NtaV9vcHMgPSB7DQorICAgIC5kb21haW5faW5p
dCA9IHNjbWlfZG9tYWluX2luaXQsDQorICAgIC5kb21haW5fZGVzdHJveSA9IHNjbWlfZG9tYWlu
X2Rlc3Ryb3ksDQorICAgIC5yZWxpbnF1aXNoX3Jlc291cmNlcyA9IHNjbWlfcmVsaW5xdWlzaF9y
ZXNvdXJjZXMsDQorICAgIC5oYW5kbGVfY2FsbCA9IHNjbWlfaGFuZGxlX2NhbGwsDQorICAgIC5k
b20wX2R0X2hhbmRsZV9ub2RlID0gc2NtaV9kdF9oYW5kbGVfbm9kZSwNCisgICAgLmRvbWFpbl9z
YW5pdGlzZV9jb25maWcgPSBzY21pX2RvbWFpbl9zYW5pdGlzZV9jb25maWcsDQorICAgIC5hc3Np
Z25fZHRfZGV2aWNlID0gc2NtaV9kdF9hc3NpZ25fZGV2aWNlLA0KK307DQorDQorc3RhdGljIGlu
dCBfX2luaXQgc2NtaV9jaGVja19zbWNjY192ZXIodm9pZCkNCit7DQorICAgIGlmICggc21jY2Nf
dmVyIDwgQVJNX1NNQ0NDX1ZFUlNJT05fMV8xICkNCisgICAgew0KKyAgICAgICAgcHJpbnRrKFhF
TkxPR19XQVJOSU5HDQorICAgICAgICAgICAgICAgInNjbWk6IE5vIFNNQ0NDIDEuMSBzdXBwb3J0
LCBTQ01JIGNhbGxzIGZvcndhcmRpbmcgZGlzYWJsZWRcbiIpOw0KKyAgICAgICAgcmV0dXJuIC1F
Tk9TWVM7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgX19p
bml0IHNjbWlfZHRfaHlwX2NoYW5uZWxfcmVhZChzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKnNjbWlf
bm9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNjbWlfZGF0YSAqc2NtaV9kYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50NjRfdCAqYWRkcikNCit7DQorICAgIHVpbnQ2NF90IHNpemU7DQorDQor
ICAgIGlmICggIWR0X3Byb3BlcnR5X3JlYWRfdTMyKHNjbWlfbm9kZSwgImFybSxzbWMtaWQiLCAm
c2NtaV9kYXRhLT5mdW5jX2lkKSApDQorICAgIHsNCisgICAgICAgIHByaW50ayhYRU5MT0dfRVJS
ICJzY21pOiB1bmFibGUgdG8gcmVhZCBzbWMtaWQgZnJvbSBEVFxuIik7DQorICAgICAgICByZXR1
cm4gLUVOT0VOVDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gc2NtaV9kdF9yZWFkX2NoYW5uZWxf
YWRkcihzY21pX25vZGUsIGFkZHIsICZzaXplKTsNCit9DQorDQorc3RhdGljIF9faW5pdCBpbnQg
c2NtaV9wcm9iZShzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKnNjbWlfbm9kZSwgY29uc3Qgdm9pZCAq
ZGF0YSkNCit7DQorICAgIHVpbnQ2NF90IGFkZHI7DQorICAgIGludCByZXQ7DQorICAgIHN0cnVj
dCBzY21pX2NoYW5uZWwgKmNoYW5uZWw7DQorICAgIHVuc2lnbmVkIGludCBuX2FnZW50czsNCisg
ICAgc2NtaV9tc2dfaGVhZGVyX3QgaGRyOw0KKyAgICBzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9hdHRy
aWJ1dGVzX3AyYSByeDsNCisNCisgICAgQVNTRVJUKHNjbWlfbm9kZSAhPSBOVUxMKTsNCisNCisg
ICAgLyoNCisgICAgICogT25seSBiaW5kIHRvIHRoZSBTQ01JIG5vZGUgcHJvdmlkZWQgYnkgWGVu
IHVuZGVyIHRoZSB4ZW4sc2NpIGNvbnRhaW5lcg0KKyAgICAgKiAoZS5nLiAvY2hvc2VuL3hlbi94
ZW5fc2NtaV9jb25maWcvc2NtaSkuIFRoaXMgYXZvaWRzIGJpbmRpbmcgdG8gZmlybXdhcmUNCisg
ICAgICogU0NNSSBub2RlcyB0aGF0IGJlbG9uZyB0byB0aGUgaG9zdCBPU1BNIGFuZCBrZWVwcyB0
aGUgbWVkaWF0b3Igc2NvcGVkIHRvDQorICAgICAqIFhlbi1wcm92aWRlZCBjb25maWd1cmF0aW9u
IG9ubHkuDQorICAgICAqLw0KKyAgICBpZiAoICFzY21pX2lzX3VuZGVyX3hlbl9zY2koc2NtaV9u
b2RlKSApDQorICAgICAgICByZXR1cm4gLUVOT0RFVjsNCisNCisgICAgaWYgKCAhYWNwaV9kaXNh
YmxlZCApDQorICAgIHsNCisgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAic2NtaTogaXMg
bm90IHN1cHBvcnRlZCB3aGVuIHVzaW5nIEFDUElcbiIpOw0KKyAgICAgICAgcmV0dXJuIC1FSU5W
QUw7DQorICAgIH0NCisNCisgICAgcmV0ID0gc2NtaV9jaGVja19zbWNjY192ZXIoKTsNCisgICAg
aWYgKCByZXQgKQ0KKyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgcmV0ID0gc2NtaV9kdF9o
eXBfY2hhbm5lbF9yZWFkKHNjbWlfbm9kZSwgJnNjbWlfZGF0YSwgJmFkZHIpOw0KKyAgICBpZiAo
IHJldCApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICBJTklUX0xJU1RfSEVBRCgmc2Nt
aV9kYXRhLmNoYW5uZWxfbGlzdCk7DQorICAgIHNwaW5fbG9ja19pbml0KCZzY21pX2RhdGEuY2hh
bm5lbF9saXN0X2xvY2spOw0KKw0KKyAgICBzY21pX2RhdGEuZHRfZGV2ID0gc2NtaV9ub2RlOw0K
Kw0KKyAgICBjaGFubmVsID0gc21jX2NyZWF0ZV9jaGFubmVsKFNDTUlfQkFTRV9BR0VOVF9JRF9P
V04sIHNjbWlfZGF0YS5mdW5jX2lkLCBhZGRyKTsNCisgICAgaWYgKCBJU19FUlIoY2hhbm5lbCkg
KQ0KKyAgICB7DQorICAgICAgICByZXQgPSBQVFJfRVJSKGNoYW5uZWwpOw0KKyAgICAgICAgZ290
byBvdXQ7DQorICAgIH0NCisNCisgICAgLyogTWFyayBhcyBYZW4gbWFuYWdlbWVudCBjaGFubmVs
IGJlZm9yZSBjb2xsZWN0aW5nIGFnZW50IElEICovDQorICAgIGNoYW5uZWwtPmRvbWFpbl9pZCA9
IERPTUlEX1hFTjsNCisNCisgICAgLyogUmVxdWVzdCBhZ2VudCBpZCBmb3IgWGVuIG1hbmFnZW1l
bnQgY2hhbm5lbCAqLw0KKyAgICByZXQgPSBjb2xsZWN0X2FnZW50X2lkKGNoYW5uZWwpOw0KKyAg
ICBpZiAoIHJldCApDQorICAgICAgICBnb3RvIGVycm9yOw0KKw0KKyAgICAvKiBTYXZlIHRoZSBh
Z2VudCBpZCBmb3IgWGVuIG1hbmFnZW1lbnQgY2hhbm5lbCAqLw0KKyAgICBzY21pX2RhdGEuaHlw
X2NoYW5uZWxfYWdlbnRfaWQgPSBjaGFubmVsLT5hZ2VudF9pZDsNCisNCisgICAgaGRyLmlkID0g
U0NNSV9CQVNFX1BST1RPQ09MX0FUVElCVVRFUzsNCisgICAgaGRyLnR5cGUgPSAwOw0KKyAgICBo
ZHIucHJvdG9jb2wgPSBTQ01JX0JBU0VfUFJPVE9DT0w7DQorDQorICAgIHJldCA9IGRvX3NtY194
ZmVyKGNoYW5uZWwsICZoZHIsIE5VTEwsIDAsICZyeCwgc2l6ZW9mKHJ4KSk7DQorICAgIGlmICgg
cmV0ICkNCisgICAgICAgIGdvdG8gZXJyb3I7DQorDQorICAgIG5fYWdlbnRzID0gU0NNSV9GSUVM
RF9HRVQoU0NNSV9CQVNFX0FUVFJfTlVNX0FHRU5ULCByeC5hdHRyaWJ1dGVzKTsNCisgICAgcHJp
bnRrKFhFTkxPR19ERUJVRyAic2NtaTogR290IGFnZW50IGNvdW50ICVkXG4iLCBuX2FnZW50cyk7
DQorICAgIHJldCA9IGNvbGxlY3RfYWdlbnRzKHNjbWlfbm9kZSk7DQorICAgIGlmICggcmV0ICkN
CisgICAgICAgIGdvdG8gZXJyb3I7DQorDQorICAgIHJldCA9IHNjaV9yZWdpc3Rlcigmc2NtaV9v
cHMpOw0KKyAgICBpZiAoIHJldCApDQorICAgIHsNCisgICAgICAgIHByaW50ayhYRU5MT0dfRVJS
ICJTQ01JOiBtZWRpYXRvciBhbHJlYWR5IHJlZ2lzdGVyZWQgKHJldCA9ICVkKVxuIiwNCisgICAg
ICAgICAgICAgICByZXQpOw0KKyAgICAgICAgZ290byBlcnJvcjsNCisgICAgfQ0KKw0KKyAgICBz
Y21pX2RhdGEuaW5pdGlhbGl6ZWQgPSB0cnVlOw0KKyAgICBnb3RvIG91dDsNCisNCitlcnJvcjoN
CisgICAgdW5tYXBfY2hhbm5lbF9tZW1vcnkoY2hhbm5lbCk7DQorICAgIGZyZWVfY2hhbm5lbF9s
aXN0KCk7DQorb3V0Og0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IGR0X2RldmljZV9tYXRjaCBzY21pX3NtY19tYXRjaFtdIF9faW5pdGNvbnN0ID0gew0KKyAg
ICBEVF9NQVRDSF9DT01QQVRJQkxFKCJhcm0sc2NtaS1zbWMiKSwNCisgICAgeyAvKiBzZW50aW5l
bCAqLyB9LA0KK307DQorDQorRFRfREVWSUNFX1NUQVJUKHNjbWlfc21jX21hLCAiU0NNSSBTTUMg
TUVESUFUT1IiLCBERVZJQ0VfRklSTVdBUkUpDQorICAgICAgICAuZHRfbWF0Y2ggPSBzY21pX3Nt
Y19tYXRjaCwNCisgICAgICAgIC5pbml0ID0gc2NtaV9wcm9iZSwNCitEVF9ERVZJQ0VfRU5EDQor
DQorLyoNCisgKiBMb2NhbCB2YXJpYWJsZXM6DQorICogbW9kZTogQw0KKyAqIGMtZmlsZS1zdHls
ZTogIkJTRCINCisgKiBjLWJhc2ljLW9mZnNldDogNA0KKyAqIHRhYi13aWR0aDogNA0KKyAqIGlu
ZGVudC10YWJzLW1vZGU6IG5pbA0KKyAqIEVuZDoNCisgKi8NCmRpZmYgLS1naXQgYS94ZW4vaW5j
bHVkZS9wdWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQpp
bmRleCAxNGQ1MWUwNzQ2Li43MjJjMmQyZTNhIDEwMDY0NA0KLS0tIGEveGVuL2luY2x1ZGUvcHVi
bGljL2FyY2gtYXJtLmgNCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQpAQCAt
MzI5LDYgKzMyOSw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4
dF90KTsNCiANCiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfTk9ORSAgICAgIDAN
CiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NNSV9TTUMgIDENCisjZGVmaW5l
IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NNSV9TTUNfTUEgIDINCiANCiAjZGVmaW5lIFhF
Tl9ET01DVExfQ09ORklHX0FSTV9WOFJfRUwxX01TQV9OT05FICAgIDANCiAjZGVmaW5lIFhFTl9E
T01DVExfQ09ORklHX0FSTV9WOFJfRUwxX01TQV9QTVNBICAgIDENCkBAIC0zNDcsNyArMzQ4LDkg
QEAgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyB7DQogICAgIHVpbnQ4X3QgYXJtX3NjaV90
eXBlOw0KICAgICAvKiBJTiAqLw0KICAgICB1aW50OF90IHY4cl9lbDFfbXNhOw0KLSAgICB1aW50
MTZfdCBwYWQ7DQorICAgIC8qIElOICovDQorICAgIHVpbnQ4X3QgYXJtX3NjaV9hZ2VudF9pZDsN
CisgICAgdWludDhfdCBwYWQ7DQogfTsNCiAjZW5kaWYgLyogX19YRU5fXyB8fCBfX1hFTl9UT09M
U19fICovDQogDQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470037.1678790 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnD-0001ac-E3; Tue, 03 Nov 2026 14:47:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470037.1678790; Tue, 03 Nov 2026 14:47:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnD-0001aV-8p; Tue, 03 Nov 2026 14:47:19 +0000
Received: by outflank-mailman (input) for mailman id 1470037;
 Tue, 03 Nov 2026 14:47:17 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnB-0001a4-Od
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnB-007AP4-1f
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:16 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:13 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=sPllapl1K4DjYn74ybZc2GnSvQLLQAuWLrDyAzMJ2xy6BIq41xqA/6hvQ5pqfyc0fKbcNdAUOvDWrH+w6tW9nDzpzDUWP3IvvqgA0JvABaf6RXxOvFSGIHRzLuZ123BPyxdJhSrJA3PRHkoyxsW4fhJwF/1uHX5ti7lxR73WCn1CLXzlpyqeyMYsv1yavF/0DnDrjjMG6Z3Uy1sD72b9lbQRcPq8DIWhWhGklQzo5DcHeZuHZMa9U3SZT9DkWv6Kd+cl67BFlsWpdNQpfw1t6Y0Siojr0fYxO0VtSMWlIsMyDIS05THWc7TCE92zqnb5L/2q1wjgHXyBGx6S2mllzg==
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=vgKc2ESde+M2XktDLD7JNsTKuKSjlqnsT+uG6BcOvEM=;
 b=igE4QRmJ7+JUqAvWStvcpBn8TWjrONK6tMqWvutngLPQpnk3Uif+aCEKqqP5jocCXB526y87FyF3WgorLJvY7ketlivsWpXU46KQy/Uj9uWOGHbqkCv3QyC6D5dzY/4+5eDB9EewlZlPUN0eaZq2r8ECGr1qsTiahGGDE3FfoqZVjEfCsI5wEbPeoUhZvk99SUBbZe5goZc5RSgHxs0pTkX7/K+8abDyM1v9gF9hLIFbopK2/+x9TAiuUDx23Nu1PBW9pslRp0uD/WfGXzSylUK33PaB3ugLeV1yOnCKtSvkg6RV+IXWK3tDeWHVtfoWGlbpAMgcdKmwspkGOvSrUg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vgKc2ESde+M2XktDLD7JNsTKuKSjlqnsT+uG6BcOvEM=;
 b=V9mIsGhHHoc4dTIVSA3jBoAuxnGxe46AD/3jctlK65/eSvg8vaNFvgetT9449chgH/RyoXha/lWz8x8wSnF6AEJQoMrLUJeWlr2sVLN5oJgG/3Me2cskg/HY2dL1em7a+/xxgBPm7+PtEOiwFdMtyGFgLQetjYyGSxy4ZjH22KIZqoj2gCX2bcGti3mIsaH/Mb/ULQGTMHqZPW931gFqQcwSFy81UcKjV3smlqXpnXc86L/L5gzznArYcNJwNR9bwvy08YLBS3amjZtGzuPov1DUSPIx++LufYgzc9Jm8vPnFN4/OmgdAI0Kf9+djvZrig/0yhEKCt2zu6OF0JvHIQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v15 2/6] xen: arm: smccc: add INVALID_PARAMETER error code
Thread-Topic: [PATCH v15 2/6] xen: arm: smccc: add INVALID_PARAMETER error
 code
Thread-Index: AQHda6I2d7pGZvD2QUW0M4qXO6zPug==
Date: Tue, 3 Nov 2026 14:47:12 +0000
Message-ID:
 <42db378d9bfe4dcbff86d2e8dbb62be447aa432e.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: e786a22e-eb20-4762-06d9-08df39b958d7
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|18002099003|22082099003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261021121427099003|11063799006|38070700021|261026121527099003;
x-microsoft-antispam-message-info:
 3RXpTGZsocWyT+WfV9tptDpCm0fAXqy71id97Tq2H9w1jXn2Zq0UlmArSw+Kj9nQ+1OmikApGAsYJlB+ALueoH/QDJFirPlsF2Mj8W5Hc1I2YxlfNVd2cIYDWaa/6USBSXJ0nH46qeJzhVxOKG963fGRe9X9R+2g5rGzdlUq6AZuF5XcLGsM3N2R5N8TT1d51SQ9h1AnJ28mBsgKdbiyuOuaY4SmWugjYW0H6ECPm8ISLur3Mek1kAHzlEGRwnyDOqjsWhmSzDb02LGPZnKye5YxCNbmhIEW7iUKFDA/nE3nROrQTbQfG3MVQnGwqtcTCkKMiQUHbNWqlL2jJN90or5FzDIfoU66iPgrRSeSo+Xtn6oQBMAJJp5Lm/BOgPAK1E4Y5Rhnu4aEG1WwmabYfARMHjfvrdEy5q+zotfcHJFsKb+qYMzCtVhrativ2qZFh7iATckxI39GkyQdIQiNvNu7ZFkc1IzRSVX8M7cGqdN01+01lF0Nl5AjfMzmkX114i/dUlndxUitIf8YopS1RTZuGrNIANPNMJuEVK7eGI+HOPLcDpGubY2I7BTLPkrV/P1b8K5vqHToBu7yexJUrm6Yvu2eyFrhcFvr/fRYv+opYcGN+SPVcDBSSY97Rhv33EE9r92sCzBMtXAYVZhSey0rjCiGJ38z616EP54dypU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(18002099003)(22082099003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261021121427099003)(11063799006)(38070700021)(261026121527099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?UVkwQU9XK2x1OE9acStFS0xZaGhXTWlqaElVRCtGZ1RqZzAzbG1sUlVleUYy?=
 =?utf-8?B?YS9WNDRkYVdtYlU4UzhaZ0RHTkFhVHF2dUh6S1NQMTBGUkR4Tm1YcFBqeklq?=
 =?utf-8?B?dmtxUVozeUFocFIwVHV0SFgvUGNoZ2ZRVkNhbGZpZXE5Y1pRZDJld2pZU29H?=
 =?utf-8?B?SW5GdUlQdUk1VG90OU5LTlF1c09waEhHZG1nakY0ZmxoTDdsQkptUFFJVFRt?=
 =?utf-8?B?MGsrOEpnVEVlSDFDRFc1dG9jV0EvSDdJNlpML0w0NWlwaXJEdytieFRITVNv?=
 =?utf-8?B?b0w0WThWY0EvQi83YU5PL294WVlrVUtPbksrY1JFTTJGOTJjZFJQUlpjM1l0?=
 =?utf-8?B?NlBHQnFjRTRiTXFLRFB1Mm4yNXVPNlZjNzR1ZE04R1hYUU1obmtBcENYazJF?=
 =?utf-8?B?TktaaTErVmdzbkVrNUU2aUtBS011Q3ZOb0FyYis4OUVYWkIremJxK003Mmk2?=
 =?utf-8?B?MGJydDNmeHc4UHlQUklydFVnMVdvSHJoV2ZnRW9MbDQ0cWl1OGZFaVY3dnZJ?=
 =?utf-8?B?RzZJVDRodUxkY053aUVXcTVzcjdETWZFenhyOGFnZFdWUlhhc2FkQk9hdnVz?=
 =?utf-8?B?d0w2elhqSjNuYWtGZ3RkaWxzSi8zaFZCTm9UUHo0cmI1SVVZeDNBa3hGbmZP?=
 =?utf-8?B?SHczRG4wZHpISkNnVm5xb3Z2ai81R2pSYnZnQytLcW8xVFJxU1EycE85ZlBp?=
 =?utf-8?B?Z0F4MVpkbTgzTmJjSzRhWVBRNTExTjJVQ3JTRWozOWpBTyt3NXd6SFpibzEx?=
 =?utf-8?B?dzNuc3huV1BkSFRRaUhwUDNsMzRKTlR0djdiSjJTTlBiTTV0Y3ZiT0RwRHZB?=
 =?utf-8?B?MU5FZFNIUE5ZR2dDOEFLQURZcWlWYnZjL01hUHY1b2UraVlHdTZURTJlYnBt?=
 =?utf-8?B?TVFlUTJwNHF4dFhSaE1sdmRSU21mY3d6UldHSXhMVEZ6Z0pPSndMbVNjdm82?=
 =?utf-8?B?T3JJY255UFJXZnVUVm9QeTFybmVSMWZaUGdTNzJnSlIxSzRzWDRUa013WGZx?=
 =?utf-8?B?eHFDelJvK3ZBZmViR3BkbUQ0VHRnRXRpL3B4TUlCU2g4eWYzWEh4blp3S3BR?=
 =?utf-8?B?c05tdG05WDNDRFU4bDhUc2hNNTNLb25OaXRVclRUSUNZM1FMYVFWeUxEMWVL?=
 =?utf-8?B?VG9qOGdDRk9VSjlTUHFtTGR6WmovbTVUY3JjMitxQnl2MDlFMkxsZGNOYmNx?=
 =?utf-8?B?WHppTzZQQkNtVEJlbE9ER2J6SUFKcTA1bUNsdzVWN0tzWElGdkp0NmczOVB2?=
 =?utf-8?B?TTFoaTZNVVJiVmdIZmlBV2RuaWhuL0w4TWdoVStGaDF6VU9vRDg0ZTFnSUNl?=
 =?utf-8?B?T1RvSmZqWVR0R2dSUFNFZHU3cUNJcDBqdVhYY3M1UURqZzlpakRCL094QlNs?=
 =?utf-8?B?VE1qVW9NTnB3T21leTVxQ2lHNWx1cks4bFIvajlTaEtrWnlUZnhZaW5LUXN5?=
 =?utf-8?B?VUZ5ZmxzZW1lYWU5dlI4VDRmdFcxZzFxK1d3L1ZQN1J5V1JzMlRZSHdlTlpR?=
 =?utf-8?B?ZFI3YW9odzR6U29ldjFGWXQ5L1RFek1kMWpEYTEyQlo5bFYramxCem5KZ0Yw?=
 =?utf-8?B?MStQRzA2NEM4WmkvZm5wOWhmQzE5NkFlUndsbG44NjlZR0xsUFRWQkNlYlFP?=
 =?utf-8?B?NDF6L0dFeFAxRm5GaytrN3Z6ZVExcFIrVVNxK3ZZNUxZRndGREtTM3lQbFc2?=
 =?utf-8?B?RmZJQmUxVnBScnBTZG50bnpQODJJM2hHMjE3VlV0cVV5R2g2MWVzblR1Wi9Q?=
 =?utf-8?B?TzFab2lXSlFlQ0FVeXBMZU9RZjNnYzM5eTdXaE13MXhZR0tESDZvY3ZGVFpl?=
 =?utf-8?B?MS9WdUlHL1FWVGxpOUo2aGJiUzlXWmhNbmdVa1AyeVc4TlcxWEtmNWhTUllM?=
 =?utf-8?B?bFNxYU9acjd6Y1Zhb2RPeHBzQzdaZ0V2YkZQdWx0azVsbi9YTStkNndBK0pa?=
 =?utf-8?B?RnkrYU1EZmd1STNjU1U5KytteUVYWTQ2dXFJZmd1Ulk4T0VtRnN5aUJNY080?=
 =?utf-8?B?dHVhekwyeXFPSFBHZVgxbFhLMktXRXd2ZVNUb05uRnBqRlNZOHA5aitYYTM2?=
 =?utf-8?B?aytYcE00R3dHcHRnUksyeStkenVUakFSQ0NaTmVWZEtrZjFTNVdpRGY1RnhP?=
 =?utf-8?B?NkU3Zm82SjNEd3dadStkdWdnRkR3WmwwSzEzaWdsbVM2TGdzRXBNaTNseHJp?=
 =?utf-8?B?T2NvK2RpREl6M1dwL1JKN0s3SCtwbElqV3c4SHdQVldxb0ovSTdYMWg1cmRx?=
 =?utf-8?B?bDFUZHFWanhzOUlEWFViNVNNcmZMa1NBWE40YTlyUTJ1WmZ1RiszT1I0ck15?=
 =?utf-8?B?K2p2TThEdXMva3dTK0RYWHZDaXFaMUd1TmxXVTIyZjhXczR4TUxDbTJiVG1i?=
 =?utf-8?Q?SULjWl3zIKyDytxs=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e786a22e-eb20-4762-06d9-08df39b958d7
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:12.8378
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 9cBtAuD0Q3O3vIBPlFV0udp0VHE24xt+ipNtCShbmNkV+XBIbZsGc3xUhAf8EnS3M3lcBiAyI95tOaWpzEhy1qClPAmGk5Ef7JOSbLrrzq8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717236-1E465757-2889DF65/0/0
X-purgate-type: clean
X-purgate-size: 1520

QWNjb3JkaW5nIHRvIHRoZSAiNy4xIFJldHVybiBDb2RlcyIgc2VjdGlvbiBvZiBERU4wMDI4IFsx
XQ0KSU5WQUxJRF9QQVJBTUVURVIgY29kZSAoLTMpIGlzIHJldHVybmVkIHdoZW4gb25lIG9mIHRo
ZSBjYWxsDQpwYXJhbWV0ZXJzIGhhcyBhIG5vbi1zdXBwb3J0ZWQgdmFsdWUuDQpBZGRpbmcgdGhp
cyBlcnJvciBjb2RlIHRvIHRoZSBjb21tb24gc21jY2MgaGVhZGVyIGZpbGUuDQoNClsxXTogaHR0
cHM6Ly9kb2N1bWVudGF0aW9uLXNlcnZpY2UuYXJtLmNvbS9zdGF0aWMvNWY4ZWRhZWZmODZlMTY1
MTVjZGJlNGM2DQoNClNpZ25lZC1vZmYtYnk6IE9sZWtzaWkgTW9pc2llaWV2IDxvbGVrc2lpX21v
aXNpZWlldkBlcGFtLmNvbT4NCkFja2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxs
aW5pQGtlcm5lbC5vcmc+DQotLS0NCg0KKG5vIGNoYW5nZXMgc2luY2UgdjEyKQ0KDQpDaGFuZ2Vz
IGluIHYxMjoNCi0gYWRkIG1pc3NlZCBBY2suDQoNCiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20v
c21jY2MuaCB8IDEgKw0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQ0KDQpkaWZmIC0t
Z2l0IGEveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3NtY2NjLmggYi94ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vc21jY2MuaA0KaW5kZXggYzc3NjNhY2Q3Zi4uOTFjOWJjMTE4NiAxMDA2NDQNCi0t
LSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9zbWNjYy5oDQorKysgYi94ZW4vYXJjaC9hcm0v
aW5jbHVkZS9hc20vc21jY2MuaA0KQEAgLTM4MSw2ICszODEsNyBAQCB2b2lkIGFybV9zbWNjY18x
XzJfc21jKGNvbnN0IHN0cnVjdCBhcm1fc21jY2NfMV8yX3JlZ3MgKmFyZ3MsDQogICAgICAgICAg
ICAgICAgICAgICAgICAweDNGRkYpDQogDQogLyogU01DQ0MgZXJyb3IgY29kZXMgKi8NCisjZGVm
aW5lIEFSTV9TTUNDQ19JTlZBTElEX1BBUkFNRVRFUiAgICAgKC0zKQ0KICNkZWZpbmUgQVJNX1NN
Q0NDX05PVF9SRVFVSVJFRCAgICAgICAgICAoLTIpDQogI2RlZmluZSBBUk1fU01DQ0NfRVJSX1VO
S05PV05fRlVOQ1RJT04gICgtMSkNCiAjZGVmaW5lIEFSTV9TTUNDQ19OT1RfU1VQUE9SVEVEICAg
ICAgICAgKC0xKQ0KLS0gDQoyLjQzLjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470038.1678795 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnD-0001bi-ND; Tue, 03 Nov 2026 14:47:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470038.1678795; Tue, 03 Nov 2026 14:47:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnD-0001ay-F7; Tue, 03 Nov 2026 14:47:19 +0000
Received: by outflank-mailman (input) for mailman id 1470038;
 Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnB-0001a5-Tq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnB-007AP4-9x
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:14 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=OGNpf9KedORZLE+2h89taKD+mVikosMED/6fb9W9YjAHMHJKBqRqNCJOT0bZTkoLB4m0sls7gJg8XCR2rqY/HfLRII2CF8psZ8KjMQkRApJ04Sq2hfKS5pDszn8Z3hi6r+uoswdM63QiABnGstHeI4AWwybGj/CEbUdHka/OxVLWoM+29NulGQx8tgVv41wXwycnpN30gyY36ZCWgy12G9ORTXaj9I3ojJgTiyRMIPcw8biDsYtSiPCIWeKTjbF2Ge69AmAItINQjiDOosGJuDPzWQGJ75tQEsp4BZQTr6XUAntn1STBp1pCUiPGmj+XVP+iwa8KI2rnWJsDMIs13g==
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=o56Bq+swp1kb0sFXPTaSadoGFmBklGJcnDABQdK6Q8Y=;
 b=K2JFqkXxoQhndQj+hXtqmR1cdaHZY3V7rgVx0utJSTDiNzW1gwxjdtflJtRt61d08htIjR5FYSj9e0qZhAovsII1WD39yQNZKNYfxZK9QZjv0qrYHT3Y9yak9yf2BvxCArH/uyKy8pp3owgKO+30peHetl72XXx6Agc8PZDrS1R/qBxT/BVg05melhxuqL7RifI2ghEC8ePXW88iVcW5hiuw7UpkAuXDS1QvRIQ4yoUxr2I3mK4KSGI4VFyp6lJam1vFwMifJIAfc0+nyHUWaWorqlpZD+TzM9WErOZO8gwaIryf7J14Qdt/nATYJSq0vOUvq2Hv52tSzFaCHILUAA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=o56Bq+swp1kb0sFXPTaSadoGFmBklGJcnDABQdK6Q8Y=;
 b=OdWDjS06+FfSBwhYdzKZOH7zfAXp6VnyJ7w0XtUKyIuauM+wQnTttSJSy1uvrCaJJl9llepkgiPT9JvCHEivRNWiA03vy+YwvmgzRaQ0CdC2raPV7joBmxlBWvXh0mUbhdVZDoKRy4w9haoqUobFFj5rKzXoAR1WLsyqhZGUpYKhj5fAeCqN5Y69YlPA3xQpkuQwkx1opHtfwoYaq7Asbm1gyV75SUHHP7l1iJp0bF6hnoKlS0immpFECSOw1oGm2PpxiqLuqiQJAGO9qKuNt6YBNQ4KRg9TY4MQDhR5OREkLmrM/kFjDdcS1wlBid9SzO9wUD4E/w4vVKSSYEaCvQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v15 3/6] lib/arm: Add I/O memory copy helpers
Thread-Topic: [PATCH v15 3/6] lib/arm: Add I/O memory copy helpers
Thread-Index: AQHda6I20XlGG8uqpk2x8o8dhUDtjQ==
Date: Tue, 3 Nov 2026 14:47:13 +0000
Message-ID:
 <d282f31d3f94816e6668334da21a7c09eccd2da9.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 3d0f827b-f62d-49da-7293-08df39b9597e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|260925022911599003|260925021911599003|18002099003|22082099003|260925021311599003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261022113327099003|261022115727099003|261022105027099003|261021121427099003|261021130227099003|261021133027099003|261021123027099003|261021135927099003|261022075727099003|11063799006|38070700021|261026130827099003|261028144727099003|261026121527099003|261026135527099003|261026140227099003;
x-microsoft-antispam-message-info:
 6e+2dfRyzTj09f9tgbnND6aVPngrSGpt96TKTjrsc66KhzeiiMOKVykKbTz3SbX0Lv7OZp67cMozGjvwmvnk8kDhByw7uZg/skMzs+OsyxyEipvw3BCUooXWdgpu4aTQgI5GjbBXMZymUAs+MRTMcuL4p12RQOnGhISPJBvSsKZ9rRN4t5ufzxeApqGLxZPMyEkMU6o3OwUkxKmNMHVxEGvRettPlXWucvpYigGH3dZsxqp9rRXQBY2Csb3jUdi2GORlCWwTf8CpcgqETpA26YVwXQ0ZKXvuTl4/gXtg6FPXOudlFWgy+vLfzlUjPykZ+fUPy9arbEgQ/3Vmy9f+chcY/jvnHKA3MjWzmuzbsEQbTBp4a8F28Xn2rlAEcLZ/a/CLhsT9oUCmCF8yycGWr2MUCHszmF2FR+NTqXemDQ65QelzhtLFdl6TnUukd2ljORz0yr6pCO4eQOoljGbrL3VaX1tUmHM4pbSPXYTsedOGqTu3MdZ7twBmcHR7oWVvSr0y74zdYINE7EM0QPlQmtE2AzXpgwW2Me7HosB52qs/tBWNI7QnZm4fN6dM6pTR43wGf1g0ni3DyZlY882HI1kmje9EpSgOh/XB3yF4oWz0sI/PZAN76q9fqXpLRIHbRZ/gNGQIAehQE3VHXyJO++0qck92MOMqT8nSwiHif3/ihu4b/LpBiDxdc2YPIKg25w9dxWJs/lUoOXSDiZB3vJg7R+43A8TaIw/WAeYQba8=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(260925022911599003)(260925021911599003)(18002099003)(22082099003)(260925021311599003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261022113327099003)(261022115727099003)(261022105027099003)(261021121427099003)(261021130227099003)(261021133027099003)(261021123027099003)(261021135927099003)(261022075727099003)(11063799006)(38070700021)(261026130827099003)(261028144727099003)(261026121527099003)(261026135527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?cEtZWXVlenZjVzVURHQ1dCtJRml4Z2piZ04vaEd1M2VYTUN6cWVOczRRS3hM?=
 =?utf-8?B?Zkh3OUwxblNRNVY5ajFmQTZGSDRtSW5HZ3BMbGZ3Wkx1czNqcS93a2dobWJr?=
 =?utf-8?B?REdlRTBuTFFFZE1nbmlWRkRGL1JPZHg2eUdmb1ZyQ2VJQ3ZsdEZUS1ZyU21W?=
 =?utf-8?B?WWZIVmZybWY4UmRCYWxycmxPdlRqNkFIM0hYTGlSbXd0SUhLczl1U0oxVXhX?=
 =?utf-8?B?UkFkcmkrVkN1Ry9leHNlQ0I0amI4UXY0OE1PVkJnemhFWDJXQXZ6QWJrSjUr?=
 =?utf-8?B?MVRyRGNXSm5OVjExK3lJdVA2aTZWK2hmVkx5cWxQOWZBWS9GanlYTmltTVl1?=
 =?utf-8?B?Qk9ZUGZNSStKbUViZUhKcGlTMnovL2F2UlZMR3lIZjg3c2dJRXdHZTVzeEZ5?=
 =?utf-8?B?QzVVS1A0RmxNZDVZZk10YlFRWE53Nk0waFR5cFYyUndCVzVlSUNibm9kZ0J3?=
 =?utf-8?B?eG1rcnUzUmRmWXRQOUNLMFdkWWx3RHk1WkFIRzdQc0hCVFFCZDVwcHM4Rmxa?=
 =?utf-8?B?L3Q2c05iTEcwQjIxV2ZyaXBRUEI2TllaQmpFREx3ZzBDbmtnNWlBc3RtU3Bz?=
 =?utf-8?B?dU9UclE2c0NDMkRTaWFSNm5Cbzh1NUZtQjdwWW5yQVNUYjlveHpmNzNsbjk3?=
 =?utf-8?B?ZW9PRzF0cW13T0I2bGFKWnZUSW1WSzdRZHJPMFlJd1pJenFGSXBuaVJ5K0Fp?=
 =?utf-8?B?Z0wrY3lqWStDZVhIdHNRNnBEcysvWXF0bXgvOWNUVUYwb0UzOHRVR0JPWklE?=
 =?utf-8?B?OXFJNHJNcURNTTYxVERmbUxSTTBoSDgxUGhCS0hEa2VScXVXeUUzMkludGNT?=
 =?utf-8?B?eWx4dHFHalh3VDM4L2xTTGNOOStOVDRRTTFhQVdNYmMvZitTdUZLZTBXWkZ0?=
 =?utf-8?B?akUvVUF3Nm1CYkJzS08vYUNGek9lbk5TNEhSeHlmdG91Qk1HK2M3WEtaN3Zj?=
 =?utf-8?B?YjJ3SDFHdWZZYU9sNUFoQXhiYitLeGJ1T1p4V3NBaEVsK3YranByY2J3VDlR?=
 =?utf-8?B?dE1lN0puQnpmbWZGTU8wWUpzbmh1SG5KRjVvMkppTmZIMW1hNXJoZkFxMnM1?=
 =?utf-8?B?dUhwYXJQM2NWV04ybkR1MkJ4OWVEc0x0NzBjdzVzeGNvQTQrWEp3RjZYRFlr?=
 =?utf-8?B?bytveml6Unhkek45RDZxc2djRmJuUGc1MWF1NUQ1cFB2MWJXRVJ5ejNKTFVK?=
 =?utf-8?B?RTFXN3J1Y2szNFFNdTlheXBFaitRZDhpOFAxNEtydHZIaFppcXdWYlZMWGpk?=
 =?utf-8?B?cHhsWVNtTkVjeFAxc2J4Mnk1WGVNWGFWSmRJRmY4cExYb1JaS2xMNzErY1Mv?=
 =?utf-8?B?UEZpWVE3MGlFMlhLejJQQkpSQTJscnNzK2hGUWxzU3Z2a0R5MEViVXM2MXE1?=
 =?utf-8?B?ZTNFeVNTV0s1cnY5anBWQlBxQkFHelowV1V1OFRoMlhneDVuNm04WE0vV2ZC?=
 =?utf-8?B?clZITGU2NUVqU1BrZWFBZk5sa1pGcTdyOTRaNjhaTGVXWG5LeFpwOVp4b3lQ?=
 =?utf-8?B?SmlKR2VlNmtqOHk1UkEwUUpSY3A4dGlZR254VzRUdmtqdUZJR3VkQU9HZWtE?=
 =?utf-8?B?OW9XYTFpMTZmR291a2RhdjJxMFdPWHVFdGtKZ2swTExRdHowUXIwUTI5OG5x?=
 =?utf-8?B?cDA5VEdyb0NibTUrSVgyc25idzlHWTZlVjNYYW9oeEJIdmlJNzdJSXNsVG1a?=
 =?utf-8?B?ZXhSeFltMTZ5RDlneHZKNHBjVlZRVEpwUE5CNmxVcU5LMEhLWGl4RjJxaDUw?=
 =?utf-8?B?Vm03UlhoMmdrRW1LQTM1ZENCdDk0YzZBRm1HZVFvZm1HZUpsUThSU0pQMEpI?=
 =?utf-8?B?ZDd6Sm9xWnRhbURBOVQ4WmpZNy9RVkVoc3cwTm54MFFyVklHaEFiZ1pGeXIw?=
 =?utf-8?B?RGhjWGUzcGJEQXEzVVo2dEx5dVlBTU42dFJRYUs1Um93U005SmhwZ25TT2Jp?=
 =?utf-8?B?MklWRTE2VVBxbitYZGxVcHliam1Pd0s0OC9tOFdYR2wraHY1dGhCT3FHVzBG?=
 =?utf-8?B?akUrVEp1L2tLUXBIZFE1SEplYlBYdnNlOXZNcjhLbytmZGJ0MVJXUUdhZGcw?=
 =?utf-8?B?OTFMbXU3dTI2WjBaUHg5cnlNWFZ4amFDdW1EZkI5U1pBdnkzcmFrS3k4b0Fn?=
 =?utf-8?B?ZFRGVmVpZWgxeU50SjB4ZmVPU1pSdExROW51WFQvNmU3ZUhYUjNHYmlYSXlE?=
 =?utf-8?B?cjhrRU5YVUc2dTJPeUFJNjVlTzY2K2o3bTJYTVBFNWxhUEYycVBnTjgreGRw?=
 =?utf-8?B?SHNHN21nM0VSalZ6MXdPUnNTcFJPeURidzRldDBPV2xaaXZ6cGhqU3haRTNO?=
 =?utf-8?B?N3RuNXlvWERPZ3doc3dMU2dqRVZPbCszRjZpKzFlVmhSbTNpa0RJd2FZTlps?=
 =?utf-8?Q?SiaiogIUMcDdj1qs=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d0f827b-f62d-49da-7293-08df39b9597e
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:13.2267
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +PapY2LNVZaEKJwAfBryUQFTU+5KoSK0O17uj7OsjbcrbmZPx8nCsMY4VM9b3JVIgtT4nFtUoeVATsH4wKCQFhJZz04rXOx5r119EthKQFY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717237-1E07B757-11413067/0/0
X-purgate-type: clean
X-purgate-size: 13840

SW50cm9kdWNlIG1lbWNweV9mcm9taW8oKSBhbmQgbWVtY3B5X3RvaW8oKSBoZWxwZXJzIHRvIGNv
cHkgYmV0d2Vlbg0KcmVndWxhciBtZW1vcnkgYW5kIGEgbWVtb3J5LWxpa2UgSS9PIHJlZ2lvbiBv
biBBcm0uIFRoZSBnZW5lcmljDQpwcm90b3R5cGVzIGxpdmUgaW4gaW8uaCBzbyBvdGhlciBhcmNo
aXRlY3R1cmVzIGNhbiBwcm92aWRlIHRoZWlyIG93bg0KaW1wbGVtZW50YXRpb25zLg0KDQpUaGUg
aGVscGVycyBjb3B5IGEgYnl0ZSBzZXF1ZW5jZTogYnl0ZSBhY2Nlc3NlcyBhcmUgdXNlZCB1bnRp
bCB0aGUgSS9PDQpwb2ludGVyIGlzIDMyLWJpdCBhbGlnbmVkIGFuZCBmb3IgdGhlIHRyYWlsaW5n
IGNvdW50ICUgNCBieXRlcywgdGhlDQphbGlnbmVkIGJ1bGsgdXNlcyAzMi1iaXQgYWNjZXNzZXMu
IE9ubHkgdGhlIEkvTyBwb2ludGVyIGlzIGFsaWduZWQsIHRoZQ0KcmVndWxhciBtZW1vcnkgc2lk
ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGdldF91bmFsaWduZWRfbGUzMigpIC8NCnB1dF91bmFsaWdu
ZWRfbGUzMigpLCBzbyB0aGUgYWNjZXNzIHdpZHRocyBpc3N1ZWQgb24gdGhlIEkvTyBzaWRlIGRv
IG5vdA0KZGVwZW5kIG9uIHRoZSBhbGlnbm1lbnQgb2YgdGhlIG1lbW9yeSBidWZmZXIuIFRoZXNl
IF9sZTMyIGhlbHBlcnMgcGFpcg0Kd2l0aCByZWFkbCgpL3dyaXRlbCgpLCB3aGljaCBhcmUgbGl0
dGxlIGVuZGlhbiBhY2Nlc3NvcnMsIGhlbmNlIHRoZSBieXRlDQpzZXF1ZW5jZSBpcyBwcmVzZXJ2
ZWQgb24gZWl0aGVyIENQVSBlbmRpYW5uZXNzLg0KDQpUaGUgY29uc3RyYWludHMgb24gdGhlIEkv
TyByZWdpb24gYXJlIGRvY3VtZW50ZWQgbmV4dCB0byB0aGUNCmRlY2xhcmF0aW9ucyBpbiB4ZW4v
aW8uaCwgdGhlIGFyY2gtc3BlY2lmaWMgYWNjZXNzIHBhdHRlcm4gbmV4dCB0byB0aGUNCmltcGxl
bWVudGF0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBPbGVrc2lpIE1vaXNpZWlldiA8b2xla3NpaV9t
b2lzaWVpZXZAZXBhbS5jb20+DQpSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3Rh
YmVsbGluaUBrZXJuZWwub3JnPg0KLS0tDQoNCihubyBjaGFuZ2VzIHNpbmNlIHYxMykNCg0KQ2hh
bmdlcyBpbiB2MTM6DQotIG1lbWNweV97ZnJvbSx0b31pbygpOiBhbGlnbiBvbmx5IHRoZSBJL08g
cG9pbnRlciBhbmQgYWNjZXNzIHRoZQ0KICByZWd1bGFyIG1lbW9yeSBzaWRlIHRocm91Z2ggZ2V0
X3VuYWxpZ25lZF9sZTMyKCkvcHV0X3VuYWxpZ25lZF9sZTMyKCkuDQotIGRvY3VtZW50IHRoZSBj
b250cmFjdCBvZiB0aGUgaGVscGVycyBpbiB4ZW4vaW8uaA0KLSByZXdvcmQgdGhlIEFybSBpbXBs
ZW1lbnRhdGlvbiBub3RlcyB0byBzdGF0ZSB0aGUgY29uY3JldGUgYWNjZXNzDQogIHBhdHRlcm4N
Ci0gZHJvcCB0aGUgaW5jb3JyZWN0IGNsYWltIGFib3V0IGF2b2lkaW5nIGVuZGlhbm5lc3MgY29u
dmVyc2lvbiBmcm9tIHRoZQ0KICBjb21taXQgbWVzc2FnZTsgbm90ZSBpbnN0ZWFkIHRoYXQgdGhl
IF9sZTMyIGhlbHBlcnMgcGFpciB3aXRoDQogIHJlYWRsKCkvd3JpdGVsKCkgc28gdGhlIGJ5dGUg
c2VxdWVuY2UgaXMgcHJlc2VydmVkIG9uIGVpdGhlciBlbmRpYW5uZXNzDQoNCkNoYW5nZXMgaW4g
djEyOg0KLSBBZGQgbWlzc2VkIFItQg0KLSBjb3JyZWN0IHRoZSBFbWFjcyBmb290ZXIgb2YgYm90
aCBmaWxlcywgd2hpY2ggYXNrZWQgZm9yIDggY29sdW1uDQp0YWIgaW5kZW50YXRpb24gd2hpbGUg
dGhlIGNvZGUgaXMgaW4gNCBjb2x1bW4gWGVuIHN0eWxlDQoNCkNoYW5nZXMgaW4gdjEwOg0KLSBy
ZW1vdmVkIGV4dHJhIGluY2x1ZGUgaW4gbWVtY3B5LXt0by9mcm9tfWlvLmMgZmlsZXMNCg0KQ2hh
bmdlcyBpbiB2OToNCi0gcmV3b3JkIGNvbW1pdCBkZXNjcmlwdGlvbiB0byByZWZlciB0byBtZW1j
cHlfZnJvbWlvIGFuZCBtZW1jcHlfdG9pbw0KLSBvcmRlcmluZyBvYmoteSBpbiBNYWtlZmlsZQ0K
LSByZW5hbWUgQUxMX0xJQlMgdG8gQVJDSF9MSUJTDQotIGRyb3AgaW8uaCBhbmQgbW92ZSBkZWZp
bml0aW9ucyB0byB0aGUgY29tbW9uIGhlYWRlciwgZml4IGNvbW1lbnRzIHRvDQpiZSBhcmNoIG5l
dXRyYWwNCi0gdXBkYXRlIGNvbW1lbnRzIGZvciBtZW1jcHlfe2Zyb20vdG99aW8gaW1wbGVtZW50
YXRpb24NCg0KQ2hhbmdlcyBpbiB2ODoNCi0gc3dpdGNoZWQgdG8gb3JkZXJlZCBhY2Nlc3NvcnMg
dG8gYWRkcmVzcyB0aGUgb3JkZXJpbmcgYW5kIGJhcnJpZXINCmNvbmNlcm5zLg0KLSB1cGRhdGVk
IHRoZSBkb2N1bWVudGF0aW9uIHRvIG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgZXhwbGlj
aXRseQ0Kc3RhdGUgdGhlIHN1cHBvcnRlZCBhY2Nlc3Mgc2l6ZXMgYW5kIGdyYW51bGFyaXR5Lg0K
LSByZW5hbWUgbWVtY3B5XyogaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gbWVtY3B1LSogdG8gZm9s
bG93IG5hbWluZw0KY29udmVuc2lvbg0KLSBmaXggaW5kZW50YXRpb24gdG8gbWF0Y2ggWGVuIHN0
eWxlDQotIGZpeCBpbnRlbmRhdGlvbiB0byBtYXRjaCBYZW4gc3R5bGUNCi0gbW92ZSBtZW1jcHkt
e2Zyb20vdG99aW8gdG8gbW9yZSBjb252ZW5pZW50IGxpYnJhcnkgcGxhY2UNCg0KQ2hhbmdlcyBp
biB2NzoNCi0geDg2IGd1aWRhbmNlOiByZW1vdmVkIHRoZSBzcGVjdWxhdGl2ZSBub3RlOyBoZWFk
ZXIgbm93IGp1c3Qgc2F5cw0KICBlYWNoIGFyY2ggc3VwcGxpZXMgaXRzIG93biBpbXBsZW1lbnRh
dGlvbiBvciBtYWNyby4NCi0gbmFtZSBzcGFjaW5nOiBkcm9wcGVkIHRoZSBkb3VibGUtdW5kZXJz
Y29yZTsgdGhlIGhlbHBlcnMgYXJlIG5vdw0KICBtZW1jcHlfZnJvbWlvIC8gbWVtY3B5X3RvaW8u
IFRoZSBoZWFkZXIgYWxzbyBleHBsaWNpdGx5IGFsbG93cyBhbg0KICBhcmNoIHRvIGRlZmluZSB0
aGVzZSBhcyBtYWNyb3MgYmVmb3JlIGluY2x1ZGluZyBpdC4NCi0gdXBkYXRlZCBpby5jIHRvIGtl
ZXAgMzItYml0IHRyYW5zZmVycyBzYWZlIG9uIGFybTMyDQotIG1vdmVkIHRvIF9fcmF3X3JlYWQq
L19fcmF3X3dyaXRlKiBhY2Nlc3NvcnMgdG8gYXZvaWQgZW5kaWFubmVzcyBjb252ZXJzaW9uLg0K
LSBzcGxpdCB0aGUgaGVscGVycyBpbnRvIHNlcGFyYXRlIGNvbXBpbGF0aW9uIHVuaXRzDQoNCkNo
YW5nZXMgaW4gdjY6DQotIHNvcnRlZCBvYmpzIGluIE1ha2VmaWxlIGFsaGFiZXRpY2FsbHkNCi0g
YWRkZWQgbmV3bGluZSBhdCB0aGUgZW5kIG9mIE1ha2VmaWxlDQotIHVzZWQgdWludHtOfV90IGlu
dGVhZCBvZiB1e059DQotIGFkZCBjb21tZW50IGFib3V0IHdoeSAzMiBiaXQgSU8gb3BlcmF0aW9u
cyB3ZXJlIHVzZWQNCi0gdXBkYXRlZCBjYXN0IG9wZXJ0YWlvbnMgdG8gYXZvaWQgZHJvcHBpbmcg
Y29uc3RuZXNzIHdoaWNoIGlzIHdyb25nDQotIG1vdmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdG8g
Z2VuZXJpYyBwbGFjZSBzbyB0aGUgY291bGQgYmUgcmV1c2VkIGJ5DQpvdGhlciBhcmNoDQotIGFk
ZCBTUERYIHRhZyB0byBpby5jDQoNCkNoYW5nZXMgaW4gdjU6DQotIG1vdmUgbWVtY3B5X3RvaW8v
ZnJvbWlvIHRvIHRoZSBnZW5lcmljIHBsYWNlDQoNCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAg
ICAgICAgICB8ICAxICsNCiB4ZW4vYXJjaC9hcm0vYXJjaC5tayAgICAgICAgICAgICB8ICAxICsN
CiB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxlICAgICAgICB8ICAyICsrDQogeGVuL2FyY2gvYXJt
L2xpYi9tZW1jcHktZnJvbWlvLmMgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kw0KIHhlbi9hcmNoL2FybS9saWIvbWVtY3B5LXRvaW8uYyAgIHwgNTYgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysNCiB4ZW4vaW5jbHVkZS94ZW4vaW8uaCAgICAgICAgICAgICB8IDI1
ICsrKysrKysrKysrKysrDQogNiBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKQ0KIGNy
ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxlDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IHhlbi9hcmNoL2FybS9saWIvbWVtY3B5LWZyb21pby5jDQogY3JlYXRlIG1vZGUgMTAw
NjQ0IHhlbi9hcmNoL2FybS9saWIvbWVtY3B5LXRvaW8uYw0KDQpkaWZmIC0tZ2l0IGEveGVuL2Fy
Y2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlDQppbmRleCBjZGNlYzhjZDAz
Li5iYTYxZjllNWZkIDEwMDY0NA0KLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlDQorKysgYi94
ZW4vYXJjaC9hcm0vTWFrZWZpbGUNCkBAIC04LDYgKzgsNyBAQCBpZm5lcSAoJChDT05GSUdfTk9f
UExBVCkseSkNCiBvYmoteSArPSBwbGF0Zm9ybXMvDQogZW5kaWYNCiBvYmoteSArPSBmaXJtd2Fy
ZS8NCitvYmoteSArPSBsaWIvDQogb2JqLSQoQ09ORklHX1RFRSkgKz0gdGVlLw0KIG9iai0kKENP
TkZJR19IQVNfVlBDSSkgKz0gdnBjaS5vDQogDQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Fy
Y2gubWsgYi94ZW4vYXJjaC9hcm0vYXJjaC5taw0KaW5kZXggZGVhOGRiZDE4YS4uMDA5YmIyMmM0
NSAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9hcmNoLm1rDQorKysgYi94ZW4vYXJjaC9hcm0v
YXJjaC5taw0KQEAgLTIsNiArMiw3IEBADQogIyBhcm0tc3BlY2lmaWMgZGVmaW5pdGlvbnMNCiAN
CiBBUkNIX0xJQlMteSArPSBhcmNoL2FybS8kKEFSQ0gpL2xpYi9saWIuYQ0KK0FSQ0hfTElCUy15
ICs9IGFyY2gvYXJtL2xpYi9saWIuYQ0KIA0KICQoY2FsbCBjYy1vcHRpb25zLWFkZCxDRkxBR1Ms
Q0MsJChFTUJFRERFRF9FWFRSQV9DRkxBR1MpKQ0KICQoY2FsbCBjYy1vcHRpb24tYWRkLENGTEFH
UyxDQywtV25lc3RlZC1leHRlcm5zKQ0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9saWIvTWFr
ZWZpbGUgYi94ZW4vYXJjaC9hcm0vbGliL01ha2VmaWxlDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMDAwMC4uMDdhMGQ5MTg2Yw0KLS0tIC9kZXYvbnVsbA0KKysrIGIveGVuL2Fy
Y2gvYXJtL2xpYi9NYWtlZmlsZQ0KQEAgLTAsMCArMSwyIEBADQorbGliLXkgKz0gbWVtY3B5LWZy
b21pby5vDQorbGliLXkgKz0gbWVtY3B5LXRvaW8ubw0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy
bS9saWIvbWVtY3B5LWZyb21pby5jIGIveGVuL2FyY2gvYXJtL2xpYi9tZW1jcHktZnJvbWlvLmMN
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi45ODMzOWE1Y2ZhDQotLS0g
L2Rldi9udWxsDQorKysgYi94ZW4vYXJjaC9hcm0vbGliL21lbWNweS1mcm9taW8uYw0KQEAgLTAs
MCArMSw1NiBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8N
CisNCisjaW5jbHVkZSA8eGVuL2lvLmg+DQorI2luY2x1ZGUgPHhlbi91bmFsaWduZWQuaD4NCisN
CisvKg0KKyAqIEFybSBpbXBsZW1lbnRhdGlvbiBub3RlczoNCisgKiAtIEJ5dGUgYWNjZXNzZXMg
YXJlIGlzc3VlZCB1bnRpbCB0aGUgSS9PIHBvaW50ZXIgaXMgMzItYml0IGFsaWduZWQgYW5kDQor
ICogICBmb3IgdGhlIHRyYWlsaW5nIGNvdW50ICUgNCBieXRlczsgdGhlIGFsaWduZWQgYnVsayB1
c2VzIDMyLWJpdA0KKyAqICAgYWNjZXNzZXMuIE5vIHdpZGVyIGFjY2Vzc2VzIGFyZSBpc3N1ZWQu
DQorICogLSBUaGUgYWNjZXNzIHdpZHRocyBvbiB0aGUgSS9PIHNpZGUgZGVwZW5kIG9ubHkgb24g
dGhlIGFsaWdubWVudCBvZiB0aGUNCisgKiAgIEkvTyBwb2ludGVyIGFuZCBvbiBjb3VudC4gVGhl
IHJlZ3VsYXIgbWVtb3J5IHNpZGUgaXMgYWNjZXNzZWQgdGhyb3VnaA0KKyAqICAgcHV0X3VuYWxp
Z25lZF9sZTMyKCksIHNvIGl0cyBhbGlnbm1lbnQgaGFzIG5vIGluZmx1ZW5jZSBvbiB0aGVtLg0K
KyAqIC0gcHV0X3VuYWxpZ25lZF9sZTMyKCkgcGFpcnMgd2l0aCByZWFkbCgpLCB3aGljaCBpcyBh
IGxpdHRsZSBlbmRpYW4NCisgKiAgIGFjY2Vzc29yLCBzbyB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBw
cmVzZXJ2ZWQgb24gZWl0aGVyIENQVSBlbmRpYW5uZXNzLg0KKyAqIC0gVGhlIEkvTyByZWdpb24g
bXVzdCBiZSBtYXBwZWQgd2l0aCBkZXZpY2UgYXR0cmlidXRlczsgb3JkZXJpbmcgaXMNCisgKiAg
IHByb3ZpZGVkIGJ5IHRoZSBhY2Nlc3NvcnMgdGhlbXNlbHZlcywgbm8gZXh0cmEgYmFycmllcnMg
YXJlIGFkZGVkLg0KKyAqLw0KKw0KK3ZvaWQgbWVtY3B5X2Zyb21pbyh2b2lkICp0bywgY29uc3Qg
dm9sYXRpbGUgdm9pZCBfX2lvbWVtICpmcm9tLA0KKyAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Y291bnQpDQorew0KKyAgICB3aGlsZSAoIGNvdW50ICYmICFJU19BTElHTkVEKCh1bnNpZ25lZCBs
b25nKWZyb20sIDQpICkNCisgICAgew0KKyAgICAgICAgKih1aW50OF90ICopdG8gPSByZWFkYihm
cm9tKTsNCisgICAgICAgIGZyb20rKzsNCisgICAgICAgIHRvKys7DQorICAgICAgICBjb3VudC0t
Ow0KKyAgICB9DQorDQorICAgIHdoaWxlICggY291bnQgPj0gNCApDQorICAgIHsNCisgICAgICAg
IHB1dF91bmFsaWduZWRfbGUzMihyZWFkbChmcm9tKSwgdG8pOw0KKyAgICAgICAgZnJvbSArPSA0
Ow0KKyAgICAgICAgdG8gKz0gNDsNCisgICAgICAgIGNvdW50IC09IDQ7DQorICAgIH0NCisNCisg
ICAgd2hpbGUgKCBjb3VudCApDQorICAgIHsNCisgICAgICAgICoodWludDhfdCAqKXRvID0gcmVh
ZGIoZnJvbSk7DQorICAgICAgICBmcm9tKys7DQorICAgICAgICB0bysrOw0KKyAgICAgICAgY291
bnQtLTsNCisgICAgfQ0KK30NCisNCisvKg0KKyAqIExvY2FsIHZhcmlhYmxlczoNCisgKiBtb2Rl
OiBDDQorICogYy1maWxlLXN0eWxlOiAiQlNEIg0KKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQorICog
dGFiLXdpZHRoOiA0DQorICogaW5kZW50LXRhYnMtbW9kZTogbmlsDQorICogRW5kOg0KKyAqLw0K
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9saWIvbWVtY3B5LXRvaW8uYyBiL3hlbi9hcmNoL2Fy
bS9saWIvbWVtY3B5LXRvaW8uYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw
MDAuLmMwYmU3OTU4NmQNCi0tLSAvZGV2L251bGwNCisrKyBiL3hlbi9hcmNoL2FybS9saWIvbWVt
Y3B5LXRvaW8uYw0KQEAgLTAsMCArMSw1NiBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBHUEwtMi4wLW9ubHkgKi8NCisNCisjaW5jbHVkZSA8eGVuL2lvLmg+DQorI2luY2x1ZGUgPHhl
bi91bmFsaWduZWQuaD4NCisNCisvKg0KKyAqIEFybSBpbXBsZW1lbnRhdGlvbiBub3RlczoNCisg
KiAtIEJ5dGUgYWNjZXNzZXMgYXJlIGlzc3VlZCB1bnRpbCB0aGUgSS9PIHBvaW50ZXIgaXMgMzIt
Yml0IGFsaWduZWQgYW5kDQorICogICBmb3IgdGhlIHRyYWlsaW5nIGNvdW50ICUgNCBieXRlczsg
dGhlIGFsaWduZWQgYnVsayB1c2VzIDMyLWJpdA0KKyAqICAgYWNjZXNzZXMuIE5vIHdpZGVyIGFj
Y2Vzc2VzIGFyZSBpc3N1ZWQuDQorICogLSBUaGUgYWNjZXNzIHdpZHRocyBvbiB0aGUgSS9PIHNp
ZGUgZGVwZW5kIG9ubHkgb24gdGhlIGFsaWdubWVudCBvZiB0aGUNCisgKiAgIEkvTyBwb2ludGVy
IGFuZCBvbiBjb3VudC4gVGhlIHJlZ3VsYXIgbWVtb3J5IHNpZGUgaXMgYWNjZXNzZWQgdGhyb3Vn
aA0KKyAqICAgZ2V0X3VuYWxpZ25lZF9sZTMyKCksIHNvIGl0cyBhbGlnbm1lbnQgaGFzIG5vIGlu
Zmx1ZW5jZSBvbiB0aGVtLg0KKyAqIC0gZ2V0X3VuYWxpZ25lZF9sZTMyKCkgcGFpcnMgd2l0aCB3
cml0ZWwoKSwgd2hpY2ggaXMgYSBsaXR0bGUgZW5kaWFuDQorICogICBhY2Nlc3Nvciwgc28gdGhl
IGJ5dGUgc2VxdWVuY2UgaXMgcHJlc2VydmVkIG9uIGVpdGhlciBDUFUgZW5kaWFubmVzcy4NCisg
KiAtIFRoZSBJL08gcmVnaW9uIG11c3QgYmUgbWFwcGVkIHdpdGggZGV2aWNlIGF0dHJpYnV0ZXM7
IG9yZGVyaW5nIGlzDQorICogICBwcm92aWRlZCBieSB0aGUgYWNjZXNzb3JzIHRoZW1zZWx2ZXMs
IG5vIGV4dHJhIGJhcnJpZXJzIGFyZSBhZGRlZC4NCisgKi8NCisNCit2b2lkIG1lbWNweV90b2lv
KHZvbGF0aWxlIHZvaWQgX19pb21lbSAqdG8sIGNvbnN0IHZvaWQgKmZyb20sDQorICAgICAgICAg
ICAgICAgICBzaXplX3QgY291bnQpDQorew0KKyAgICB3aGlsZSAoIGNvdW50ICYmICFJU19BTElH
TkVEKCh1bnNpZ25lZCBsb25nKXRvLCA0KSApDQorICAgIHsNCisgICAgICAgIHdyaXRlYigqKGNv
bnN0IHVpbnQ4X3QgKilmcm9tLCB0byk7DQorICAgICAgICBmcm9tKys7DQorICAgICAgICB0bysr
Ow0KKyAgICAgICAgY291bnQtLTsNCisgICAgfQ0KKw0KKyAgICB3aGlsZSAoIGNvdW50ID49IDQg
KQ0KKyAgICB7DQorICAgICAgICB3cml0ZWwoZ2V0X3VuYWxpZ25lZF9sZTMyKGZyb20pLCB0byk7
DQorICAgICAgICBmcm9tICs9IDQ7DQorICAgICAgICB0byArPSA0Ow0KKyAgICAgICAgY291bnQg
LT0gNDsNCisgICAgfQ0KKw0KKyAgICB3aGlsZSAoIGNvdW50ICkNCisgICAgew0KKyAgICAgICAg
d3JpdGViKCooY29uc3QgdWludDhfdCAqKWZyb20sIHRvKTsNCisgICAgICAgIGZyb20rKzsNCisg
ICAgICAgIHRvKys7DQorICAgICAgICBjb3VudC0tOw0KKyAgICB9DQorfQ0KKw0KKy8qDQorICog
TG9jYWwgdmFyaWFibGVzOg0KKyAqIG1vZGU6IEMNCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiDQor
ICogYy1iYXNpYy1vZmZzZXQ6IDQNCisgKiB0YWItd2lkdGg6IDQNCisgKiBpbmRlbnQtdGFicy1t
b2RlOiBuaWwNCisgKiBFbmQ6DQorICovDQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lv
LmggYi94ZW4vaW5jbHVkZS94ZW4vaW8uaA0KaW5kZXggMTY0YTIwYzVkNy4uMGI2MGJlMjdjMSAx
MDA2NDQNCi0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pby5oDQorKysgYi94ZW4vaW5jbHVkZS94ZW4v
aW8uaA0KQEAgLTY3LDQgKzY3LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB3cml0ZV9tbWlvKHZv
bGF0aWxlIHZvaWQgX19pb21lbSAqbWVtLCB1bnNpZ25lZCBsb25nIGRhdGEsDQogICAgIHJldHVy
biB0cnVlOw0KIH0NCiANCisvKg0KKyAqIENvcHkgYSBzZXF1ZW5jZSBvZiBieXRlcyBiZXR3ZWVu
IHJlZ3VsYXIgbWVtb3J5IGFuZCBhIG1lbW9yeS1saWtlIEkvTw0KKyAqIHJlZ2lvbiwgZS5nLiBz
aGFyZWQgbWVtb3J5IHBsYWNlZCBpbiBSQU0gb3IgU1JBTSBtYXBwZWQgd2l0aCBkZXZpY2UNCisg
KiBhdHRyaWJ1dGVzLg0KKyAqDQorICogVGhlIEkvTyByZWdpb24gbXVzdCBiZWhhdmUgbGlrZSBi
eXRlLWFkZHJlc3NhYmxlIHN0b3JhZ2U6IGl0IGhhcyB0bw0KKyAqIGFjY2VwdCA4LWJpdCBhY2Nl
c3NlcyBhdCBhbnkgYnl0ZSBhZGRyZXNzIGFuZCBuYXR1cmFsbHkgYWxpZ25lZCAzMi1iaXQNCisg
KiBhY2Nlc3Nlcywgd2l0aCBwbGFpbiBieXRlLXN0b3JhZ2Ugc2VtYW50aWNzIGluIGJvdGggY2Fz
ZXMgKG5vIHNpZGUNCisgKiBlZmZlY3RzLCBubyBkZXBlbmRlbmN5IG9uIHRoZSBhY2Nlc3Mgd2lk
dGgpLiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgdXNlDQorICogYW55IG9mIHRoZXNlIHdpZHRocywg
YnV0IG5ldmVyIHdpZGVyIG9uZXMuIFRoZSBoZWxwZXJzIGFyZSB0aGVyZWZvcmUNCisgKiBub3Qg
c3VpdGFibGUgZm9yIGRldmljZSByZWdpc3RlcnMgd2l0aCBhY2Nlc3Mtd2lkdGggcmVxdWlyZW1l
bnRzLg0KKyAqDQorICogTmVpdGhlciBwb2ludGVyIG5lZWRzIHRvIGJlIGFsaWduZWQuIFRoZSBh
Y2Nlc3Mgd2lkdGhzIGlzc3VlZCBvbiB0aGUNCisgKiBJL08gc2lkZSBkZXBlbmQgb25seSBvbiB0
aGUgYWxpZ25tZW50IG9mIHRoZSBJL08gcG9pbnRlciBhbmQgb24gY291bnQsDQorICogbmV2ZXIg
b24gdGhlIGFsaWdubWVudCBvZiB0aGUgcmVndWxhciBtZW1vcnkgcG9pbnRlci4NCisgKg0KKyAq
IEltcGxlbWVudGF0aW9ucyBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFuZCBtYXkgaW1wb3Nl
IGZ1cnRoZXINCisgKiBjb25zdHJhaW50czsgc2VlIHRoZSByZXNwZWN0aXZlIGFyY2gvPGFyY2g+
L2xpYi9tZW1jcHkte2Zyb20sdG99aW8uYw0KKyAqIGZvciB0aGUgZXhhY3QgYWNjZXNzIHBhdHRl
cm4uDQorICovDQordm9pZCBtZW1jcHlfZnJvbWlvKHZvaWQgKnRvLCBjb25zdCB2b2xhdGlsZSB2
b2lkIF9faW9tZW0gKmZyb20sDQorICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCk7DQor
dm9pZCBtZW1jcHlfdG9pbyh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKnRvLCBjb25zdCB2b2lkICpm
cm9tLA0KKyAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50KTsNCisNCiAjZW5kaWYgLyogWEVO
X0lPX0ggKi8NCi0tIA0KMi40My4wDQo=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470039.1678801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnE-0001jB-2s; Tue, 03 Nov 2026 14:47:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470039.1678801; Tue, 03 Nov 2026 14:47:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnD-0001hy-Tc; Tue, 03 Nov 2026 14:47:19 +0000
Received: by outflank-mailman (input) for mailman id 1470039;
 Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOFnC-0001aA-81
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnB-007AP4-Kb
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-5
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:17 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:13 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=T9lGWG95N+rvRP7xQ2drl77sFBFf/yZ+4KwpdZoha2Hh78dpj0Eumi+gGApV39cPLguePTg4OXFJdrUF+P8StQZ+8UZ4BEMfaT6BLIz512Or98xjki4PS9UAe5XwgdGh19ZwUCwXQcVA+a4CuGtL8eDjNj82vaUfrH2x+8/sBt4CjXmbWHCaPYG8NnA12kUL0GVbI9o9B1W/Vo0G0TQvt61lBk0I9nCFqp1fx9+1wBa07d9tNNGwA6j5QxcH44DotZBAB3PJgeH+ACgX4qRBKRcKrXbIJA/s8FVp/2pe5fiKf3O33pmqVYb7srXm7n04mfDmn0B3yu77hdyTFDmdtA==
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=UBIBUcGJqztzbw3PVDcTC84VFIZplOMWbWkzXViCyOk=;
 b=gC3Wei/hzLi0eRo6nXIw7p8iu2y3/4qye01uKIFWypKsuqnf/iZsW4bjSqq8mxf5MASY4FF214upNMPCP1W9028oX1XTbipGDd6L96njIEUpnAvNxr7IM49I/Ra+4mJ1pVGcxmt9x26qGB/jRiVHNVQuXFy7+uYx1i7uWz64Jrb8FcMhex5aG3fHuPKAW4rENqbAwi0jEaVn8AkNYrZuaYnv4t1PvhDAIavomUbhkvHidjpkdy6xJjjt4jOBDO1+jHulbpEpmoVTKfRReBG3KUpDSb1issvE/1O4AXX/JIUF+9trqzlpw+CE0TmBPB5cUazueTe7zlhJS7RIGZo3og==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UBIBUcGJqztzbw3PVDcTC84VFIZplOMWbWkzXViCyOk=;
 b=Hl1h1nIx3t6Lnnj2g/9i6OOWvWK2niBDf+4bGNTayImb5JHzYDaQCaGGZP0t9o14uB1eRbG6susbUCO942hSTwGoLuUdt8dpE5v/9mvnYi9sD4PqrabKJQ4VJDIC41Fk4HEhTQIZbTXtJUpkDFX+UnFMU6A0a2zm0sf4XDpuYN0VmNb6WHr8cY6Ooi6LXMc9P8SmLnUl46eI6zmC7vBz9qzrQPB1Cp6GuunA5p4TxTYbSHjSSMzEYAOsHF+MROrq4CI9URd7cU2zQXmtiuRl8o6de+TFMJvECbdhUcdQe0lLcgiYqTJ3UMp7yUjF2j6ah7IoHJccSosJh3rdayGNHQ==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v15 1/6] xen/domctl: chain SCI handling before IOMMU in
 assign_device domctl
Thread-Topic: [PATCH v15 1/6] xen/domctl: chain SCI handling before IOMMU in
 assign_device domctl
Thread-Index: AQHda6I1vw+4S0P+aEOm9FwQnPJecA==
Date: Tue, 3 Nov 2026 14:47:12 +0000
Message-ID:
 <53d8527557cb914027cd9871df6122896aebc5b9.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 5ae00377-7134-4334-5f72-08df39b958b4
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|6133799003|18002099003|22082099003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261022105027099003|261021121427099003|261022075727099003|11063799006|38070700021|261028144727099003|261026121527099003|261026140227099003;
x-microsoft-antispam-message-info:
 VwKSHXUJ3jAtVaBihD/IkuMrH7AshwHoz0D4obyzDQL8KctuexEDZrL7IKKoH9XQ+/niLQBMmphttQ0yZGuFO50/y/5vjnI8zKa+gviSO/zTgRl16pr+0mWueroEy79vGAzHTlYrSZIMxrbEw+rY7LwdF13/MmJ3X7tcy1F+QW24kck/8m79S6okv8mXhj82rvfLkmbedvT23baVhoEc6zLKRlWqJvJjFE6f/W0S622ii4iTIZ0i6UgsXEIrxJBGpwQYl5siVzwR/e47oUMuVGjncJUQPy2OGqYqKAjeGm3nf7mhKuBCBfxkGaXgBdmf5hlNz6Ypcy0Hxs1V93sP/dhinL8UhkLvM4trG07BowDRFWvu3xTynv09ZqIvJG2q7BgrGAjykTm12ilNnJFAssmpmUT9Esbza1GGHxg5c96/FxuROvAIWcramuBOH/x3k5bXdT/pZn7lESkxbTAQzvHIH7+3CIuTi5I4lvkdPPmUoNyGHPYGg4RGX5u/gf5FZwPwi6cQpq5+6iA5zqtiHWh31HFR1MlkWo7O/l+R89WWX/p5+XlbcT/VEoEP60sSg11MRS4K6Eh/elYYWTf61In+D1mKfUQQ1ObFIRZtPYO/HhL4M1BBq1A2MNMjIvpbhpNQg4QFB1TubsK4JUfhiJ4uJKGA9mmsAoTNLOF/JlTfCQsPD8gqRHrMlZ9VGYNlP7zNPr/PS1m4WVDDbV6i/8TC0p+wkSBsQUu0PuTnrXY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(6133799003)(18002099003)(22082099003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261022075727099003)(11063799006)(38070700021)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?V2lpSXdrdFgvMUJZdi91MGltWGQ2aFdnSXpyemowRFFjYUc0UVNQYUx6QlBr?=
 =?utf-8?B?U1hranJSU0xRZDZhYTh5WFlrRWRCZXpDR3FVS3RMaFVESnYwWUhZRVNnKzc4?=
 =?utf-8?B?NEpJb3JxUzRuZ1AyQ1VoM3FsbmxXSjMzdGp6WHdVcitqWmhzUjI4Y043d051?=
 =?utf-8?B?T3YrR3BDOUgyMEo2aXcydHFLN0xDOEV0M09Sb0NqaWtRdUFxdlNDZGZndnlE?=
 =?utf-8?B?MzNnMEQrK2hwNmgzdXQxTTYvWUZPNkgyYlZaTUtCWDdMdUwyOE5seG9RWXY0?=
 =?utf-8?B?N2w2bWFxeGxRTGE2c2tZejdqdGVlakhRNndST2ptVmFJVGNQQmovdFJEME80?=
 =?utf-8?B?d25UNE9Kc0lYNmJPeG9WR2lCeVNVSm1yc0RVa0xqdnRTbkhrblRCU1dqYy83?=
 =?utf-8?B?NjhWbWZRSG05T3FpQVk0TXRYZ0FhYSt3cHpzTk5ucGU3V1VuN3JpeGw4emNw?=
 =?utf-8?B?a2VYNW5GTUh1SFVmSDc2L1JxL01oL3VFMklVVWx3bEtNRXZxUUNnaENod1h0?=
 =?utf-8?B?MHh2R3V4SGNrOVRLbG5PdnRIZUVhbmZLV3lqSTBaTGZmLzVDV2diRk1FVFVm?=
 =?utf-8?B?bU9lVlo0dDhqbWVBci9QT2NLaVRiamc1dVhORXVzOWsyUE1mMG5yQ25ZRHQr?=
 =?utf-8?B?WGR3ZDBCMWoyQmFGMmgwTy9XbFhmTktUeXZoblY1MEdMNDVFaEhlSVg3dmg4?=
 =?utf-8?B?RlB0eE1jUlNSU2RNTCtxWDFpcXI2Rit1dnFnYWRrMzA4SUFvSlZZQjNvMTJP?=
 =?utf-8?B?UkNZcnYvalBVV2NQclFkN3JXbnlxWUJRYlE5K1JnbFZ2YnhGOUc2LzNwanhC?=
 =?utf-8?B?WGQ3cmw4M1JENnVQK09QYjNTV0hNNWh0UjZsNGFZdlk4RzJuNFByTUl4ZUpC?=
 =?utf-8?B?S3lnWlFaNjhCOEdwLzU2YmtvTmVNckgvUW1zeVkyWGsrbzJHL1gxTHRJVzVM?=
 =?utf-8?B?ODFqQkNYR280MWJHbWM4Sk0zb05xSFlOTi9TTjRkN3FpRURSVUJsRVZnK01W?=
 =?utf-8?B?bzMxdDk2Y0w1UFZPeW9qK2JEZWNjSWsvbHhhY1JJSnBnT1pjeGVFM3JkeHBy?=
 =?utf-8?B?N3dpWG9UVFNhanhwak9IN2NjbXNRSzFmQnJrSVRSQTc3cXE3dm1mS3p3ODZL?=
 =?utf-8?B?YkEvdnJpTkdiWUpRR2VmUmt1aG5RZTNGVGM4dlVBcHBRc1ZPY0lpcWk1NEdo?=
 =?utf-8?B?bjBWTXQyN3E4SjVDUUJBbmhCd2NWMU1sN3RVc1IzdWtzU05uSE16R3hiV3J0?=
 =?utf-8?B?d3ovYkZtQlIvVTczeHJrckhlbWdYdGpROGZlZ1NaaXJ2VEdvMndpQVMraSty?=
 =?utf-8?B?YXUyMUdVdUpaRXRFVXdxaGNQRFU0WFVxdGtpcVlWcFM2S3R6MjZIUEdXZXk4?=
 =?utf-8?B?eFVwcVd4b2ZxQjVIK2lkc1hFaE9Jc3pwWU1hbjdYekpENS85STBGc1ZvYnJT?=
 =?utf-8?B?M0NvSVdPT3VKd3Rhd0NkTU94ME9CUzh4cGNMZURvQjFNalNYQUlVYWIzTCsr?=
 =?utf-8?B?TmRkVnZveEJrN2YzNWR0UXR4amVLTXRYbkdQd29ZOE5MQjZWZzk2NkNLQzdL?=
 =?utf-8?B?UktLZGZzbjY0dWtWQklUTFNBSTE3YmoxUmdEZjFzR1c1MDE5ZWljSDlQdity?=
 =?utf-8?B?Z1VObjRsTkU0RnRWY29TMzRwTnRkRklEM0xvdzNaelNjTExJUFl2QUlscE1o?=
 =?utf-8?B?Ympvdjg5TTM3TStnL2g1M2xNbVpuMmI5QnVvTWxpU0NwcGppdUZUYjJyNjB4?=
 =?utf-8?B?TTlDZW9PSklJUVNtMGh4RWI5d1RaS1IzbUtxYnZ3L0NweFloem5WUE5UNDR4?=
 =?utf-8?B?KzFxRmNIcW8yT1ROR3g4ZFU3YmtWYVpqek1sVnFjUUFES1NwbkpMdURZOG83?=
 =?utf-8?B?Q3NnTUxxYi9TUWxydEJYSklSV0xEaWM3ZmlPeE9tRlZ3bytYK0VTeDZ1dHQ3?=
 =?utf-8?B?dThXM1g1ZzEyUXNhN1BTTTZRSks0OC9iY0J6dDhOMEZiQVhFZ09TS0thZExy?=
 =?utf-8?B?TVZKZ2l6bjhaYWtGcm40ZjhCSURFRGdJQlFnRktuU0tjbWJEc3pBdmV0ZSty?=
 =?utf-8?B?ViswckRBei9KTm52eU1XOUNjd2MydGdLWjdkWDc5bGYwOUtCM25zTFZzRmd4?=
 =?utf-8?B?bFUrZEkrVE4va1Y5VFlvWUJBcWZmWkxpa1FsRFMwdUdnbi9kaXFnVjJhQ25u?=
 =?utf-8?B?R3pWYy92M1hUMmYwZTZxR1hmMVJjWmZpMlp0aW1lcXNHQWVSQ3EzRXVZNkdh?=
 =?utf-8?B?RlFlTTB4OWNJdHg2Tk5DaVA3Vm5qaXpJTW96em9IajZjRy8wVHoxNytXUnVP?=
 =?utf-8?B?QmhUQVhSOUhBeGM1Tm1lOEtrVkdOOFBKYXE4MjhOQUN2dVBnU3ovSVl5Ni8y?=
 =?utf-8?Q?mf7Ey8NjXMENTokY=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <72DA908226A4374FBD590B67A62108C0@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ae00377-7134-4334-5f72-08df39b958b4
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:12.4523
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: nXRW/ORPWpqCzZfBgeCcKIA15OXZ5VD+AKo68MNqTvmMz1OwK2+z2ZUtSuhynTEIJavFA1HN3ok91egO3Wqi/fqs0opKSiatq18t3kKVV2w=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717237-BFE68757-9C9F381B/10/78276251493
X-purgate-type: spam
X-purgate-size: 11270

RnJvbTogR3J5Z29yaWkgU3RyYXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KDQpB
ZGQgY2hhaW5lZCBoYW5kbGluZyBvZiBhc3NpZ25lZCBEVCBkZXZpY2VzIHRvIHN1cHBvcnQgYWNj
ZXNzLWNvbnRyb2xsZXINCmZ1bmN0aW9uYWxpdHkgdGhyb3VnaCBTQ0kgZnJhbWV3b3JrLCBzbyBh
IERUIGRldmljZSBhc3NpZ24gcmVxdWVzdCBjYW4gYmUNCnBhc3NlZCB0byBmaXJtd2FyZSBmb3Ig
cHJvY2Vzc2luZyBhbmQgZW5hYmxpbmcgVk0gYWNjZXNzIHRvIHRoZSByZXF1ZXN0ZWQNCmRldmlj
ZSAoZm9yIGV4YW1wbGUsIGRldmljZSBwb3dlciBtYW5hZ2VtZW50IHRocm91Z2ggU0NNSSkuDQoN
ClRoZSBTQ0kgYWNjZXNzLWNvbnRyb2xsZXIgRFQgZGV2aWNlIHByb2Nlc3NpbmcgaXMgY2FsbGVk
IGJlZm9yZSB0aGUgSU9NTVUNCnBhdGguIEl0IHJ1bnMgZm9yIGFueSBEVC1kZXNjcmliZWQgZGV2
aWNlIChwcm90ZWN0ZWQgb3Igbm90LCBhbmQgZXZlbiB3aGVuDQp0aGUgSU9NTVUgaXMgZGlzYWJs
ZWQpLiBUaGUgSU9NTVUgcGF0aCByZW1haW5zIHVuY2hhbmdlZCBmb3IgUENJIGRldmljZXM7DQpv
bmx5IHRoZSBEVCBwYXRoIGlzIHJlbGF4ZWQgdG8gcGVybWl0IG5vbi1JT01NVSBkZXZpY2VzLg0K
DQpUaGlzIGxldHMgeGwuY2ZnOiJkdGRldiIgbGlzdCBib3RoIElPTU1VLXByb3RlY3RlZCBhbmQg
bm9uLXByb3RlY3RlZCBEVA0KZGV2aWNlczoNCg0KZHRkZXYgPSBbDQogICAgIi9zb2MvdmlkZW9A
ZTZlZjAwMDAiLCA8LSBJT01NVSBwcm90ZWN0ZWQgZGV2aWNlDQogICAgIi9zb2MvaTJjQGU2NTA4
MDAwIiwgPC0gbm90IElPTU1VIHByb3RlY3RlZCBkZXZpY2UNCl0NCg0KVGhlIGNoYW5nZSBpcyBk
b25lIGluIHR3byBwYXJ0czoNCjEpIGNhbGwgc2NpX2RvX2RvbWN0bCgpIGluIGRvX2RvbWN0bCgp
IGJlZm9yZSBJT01NVSBwcm9jZXNzaW5nLiBJZg0Kc2NpX2RvX2RvbWN0bCgpIHJlcG9ydHMgYW4g
ZXJyb3Igb3RoZXIgdGhhbiAtRU5YSU8sIHRyZWF0IGl0IGFzDQphdXRob3JpdGF0aXZlIGFuZCBz
a2lwIHRoZSBJT01NVSBwYXRoLiBBIHJldHVybiBvZiAtRU5YSU8gaW5kaWNhdGVzDQp0aGF0IFND
SSBkaWQgbm90IGhhbmRsZSB0aGUgcmVxdWVzdCBhbmQgaXMgaWdub3JlZCwgYWxsb3dpbmcgdGhl
DQpleGlzdGluZyBJT01NVSBoYW5kbGluZyB0byBydW4gdW5jaGFuZ2VkOw0KMikgdXBkYXRlIGlv
bW11X2RvX2R0X2RvbWN0bCgpIHRvIGNoZWNrIGZvciBkdF9kZXZpY2VfaXNfcHJvdGVjdGVkKCkg
YW5kDQpub3QgZmFpbCBpZiBEVCBkZXZpY2UgaXMgbm90IHByb3RlY3RlZCBieSBJT01NVS4gaW9t
bXVfZG9fcGNpX2RvbWN0bA0KZG9lc24ndCBuZWVkIHRvIGJlIHVwZGF0ZWQgYmVjYXVzZSBpb21t
dV9kb19kb21jdGwgZmlyc3QgdHJpZXMNCmlvbW11X2RvX3BjaV9kb21jdGwgKHdoZW4gQ09ORklH
X0hBU19QQ0kpIGFuZCBmYWxscyBiYWNrIHRvDQppb21tdV9kb19kdF9kb21jdGwgb25seSBpZiBQ
Q0kgcmV0dXJucyAtRU5PREVWLg0KDQpUaGUgbmV3IGR0X2RldmljZV9pc19wcm90ZWN0ZWQoKSBi
eXBhc3MgaW4gaW9tbXVfZG9fZHRfZG9tY3RsIG9ubHkNCmFwcGxpZXMgdG8gRFQtZGVzY3JpYmVk
IGRldmljZXM7IFNDSSBwYXJhbWV0ZXJzIGFyZSBjYXJyaWVkIHZpYSBEVA0Kbm9kZXMuIFBDSSBk
ZXZpY2VzIGhhbmRsZWQgYnkgaW9tbXVfZG9fcGNpX2RvbWN0bCBkbyBub3QgY2FycnkgRFQvU0NJ
DQptZXRhZGF0YSBpbiB0aGlzIHBhdGgsIHNvIHRoZXJlIGlzIG5vIG5vdGlvbiBvZiDigJxTQ0kg
cGFyYW1ldGVycyBvbiBhDQpub24tSU9NTVUtcHJvdGVjdGVkIFBDSSBkZXZpY2XigJ0gZm9yIGl0
IHRvIGludGVycHJldCBvciB0byBza2lwLiBUaGUgUENJDQpwYXRoIHNob3VsZCBjb250aW51ZSB0
byByZXBvcnQgZXJyb3JzIGlmIGFzc2lnbm1lbnQgY2Fubm90IGJlIHBlcmZvcm1lZA0KYnkgdGhl
IElPTU1VIGxheWVyLiBTbyB3ZSBzaG91bGQgbGVhdmUgaW9tbXVfZG9fcGNpX2RvbWN0bCB1bmNo
YW5nZWQ7IHRoZQ0KU0NJL0RULXNwZWNpZmljIHJlbGF4YXRpb25zIGJlbG9uZyBvbmx5IGluIHRo
ZSBEVCBwYXRoLiBBbHNvIFNDSSBoYW5kbGluZw0Kb25seSBleGlzdHMgd2hlbiBEVCBpcyBwcmVz
ZW50Lg0KDQpTaWduZWQtb2ZmLWJ5OiBHcnlnb3JpaSBTdHJhc2hrbyA8Z3J5Z29yaWlfc3RyYXNo
a29AZXBhbS5jb20+DQpTaWduZWQtb2ZmLWJ5OiBPbGVrc2lpIE1vaXNpZWlldiA8b2xla3NpaV9t
b2lzaWVpZXZAZXBhbS5jb20+DQpSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3Rh
YmVsbGluaUBrZXJuZWwub3JnPg0KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4NCi0tLQ0KDQoobm8gY2hhbmdlcyBzaW5jZSB2MTIpDQoNCkNoYW5nZXMgaW4gdjEyOg0K
LSByZWJhc2UgdG8gdGhlIGxhdGVzdCBzdGFnaW5nDQotIGFkZCBSLUJzIGZyb20gU3RlZmFubyBh
bmQgQWNrIGZyb20gSmFuDQoNCkNoYW5nZXMgaW4gdjEwOg0KLSByZW1vdmUgdW51c2VkIHNjaV9k
b19kb21jdGwgc3R1YiBmcm9tIHNjaS5oDQoNCkNoYW5nZXMgaW4gdjk6DQotIHRyZWF0IFNDSSBh
cyBhIGdhdGUgZm9yIFhFTl9ET01DVExfKmFzc2lnbl9kZXZpY2U6IGFib3J0IGJlZm9yZQ0KSU9N
TVUgaWYgc2NpX2RvX2RvbWN0bCgpIHJldHVybnMgYW4gZXJyb3Igb3RoZXIgdGhhbiAtRU5YSU8s
IGluc3RlYWQNCm9mIHRyeWluZyB0byBwcm9wYWdhdGUgU0NJIGVycm9ycyBhZnRlciBhIHN1Y2Nl
c3NmdWwgSU9NTVUNCm9wZXJhdGlvbi4gVGhpcyBhdm9pZHMgcGFydGlhbCBzdWNjZXNzIGFuZCB0
aGUgbmVlZCBmb3IgSU9NTVUgcm9sbGJhY2suDQotIHJlbW92ZSBlYXJseSByZXR1cm4gZnJvbSBk
b19kb21jdGwoKSBpbiB0aGUgYXNzaWduX2RldmljZQ0KcGF0aCB0byBrZWVwIFJDVSBoYW5kbGlu
ZyBpbnRhY3QuDQotIGNoYW5nZSBJU19FTkFCTEVEKCopIHRvICNpZmRlZiBpbiBzY2lfZG9fZG9t
Y3RsIHF1YXJkDQoNCkNoYW5nZXMgaW4gdjg6DQotIGNoZWNrIGZvciBDT05GSUdfQVJNX1NDSSB0
byBiZSBlYmFibGVkIGluc3RlYWQgb2YgQ09NRklHX0FSTSBiZWZvcmUNCmNhbGxpbmcgc2NpX2Rv
X2RvbWN0bA0KLSByZXdvcmsgc2NpX2RvX2RvbWN0bCBjYWxsIHRvIGF2b2lkIGV4dHJhIGNoZWNr
cywgaW1wcm92ZWQgZXJyb3INCmhhbmRsaW5nLg0KLSBkbyBub3QgcHJvcGFnYXRlIHJldDEgaWYg
c2NpX2RvX2RvbWN0bCByZXR1cm5lZCBwb3NpdGl2ZSByZXQNCi0gdXBkYXRlZCBjb21tZW50IGlu
IGRvbWN0bC5jIGNvZGUNCg0KQ2hhbmdlcyBpbiB2NzoNCi0gdXBkYXRlIGRvbWN0bCB0byBidWls
ZCBvbiBib3RoIEFybSBhbmQgeDg2IHBsYXRmb3Jtcw0KLSBtb3ZlIHJldDEgZGVjbGFyYXRpb24g
dG8gdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gYXMgcmVxdWlyZWQgYnkgY29kZQ0Kc3R5bGUNCg0K
Q2hhbmdlcyBpbiB2NjoNCi0gY2hhbmdlIGlvbW11X2RvX2RvbWN0bCBhbmQgc2NpX2RvX2RvbWN0
bCBjb21tYW5kIG9yZGVyIGFuZA0KY2FsbCBzY2lfZG9fZG9tY3RsIGZpcnN0IHdoaWNoIHdpbGwg
cHJvZHVjZSBjbGVhbmVyIGNvZGUgcGF0aC4NCkFsc28gZHJvcHBlZCBjaGFuZ2luZyByZXR1cm4g
Y29kZSB3aGVuIGlvbW11IHdhcyBkaXNhYmxlZCBpbg0KaW9tbXVfZG9fZG9tY3RsLg0KDQpDaGFu
Z2VzIGluIHY1Og0KLSByZXR1cm4gLUVJTlZBTCBpZiBtZWRpYXRvciB3aXRob3V0IGFzc2lnbl9k
dF9kZXZpY2Ugd2FzIHByb3ZpZGVkDQotIGludmVydCByZXR1cm4gY29kZSBjaGVjayBmb3IgaW9t
bXVfZG9fZG9tY3RsIGluDQpYRU5fRE9NQ1RMX2Fzc2lnbl9kZXZpY2UgZG9tY3RsIHByb2Nlc3Np
bmcgdG8gbWFrZSBjbGVhbmVyIGNvZGUNCi0gY2hhbmdlIC1FTk9UU1VQUCBlcnJvciBjb2RlIHRv
IC1FTlhJTyBpbiBzY2lfZG9fZG9tY3RsDQotIGhhbmRsZSAtRU5YSU8gcmV0dXJuIGNvbWRlIG9m
IGlvbW11X2RvX2RvbWN0bA0KLSBsZWF2ZSAhZHRfZGV2aWNlX2lzX3Byb3RlY3RlZCBjaGVjayBp
biBpb21tdV9kb19kdF9kb21jdGwgdG8gbWFrZQ0KY29kZSB3b3JrIHRoZSBzYW1lIHdheSBpdCdz
IGRvbmUgaW4gImhhbmRsZV9kZXZpY2UiIGNhbGwgd2hpbGUNCmNyZWF0aW5nIGh3ZG9tKGRvbTAp
IGFuZCAiaGFuZGxlX3Bhc3N0aHJvdWdoX3Byb3AiIGNhbGwgZm9yIGRvbTBsZXNzDQpjcmVhdGlv
bg0KLSBkcm9wIHJldHVybiBjaGVjayBmcm9tIHNjaV9hc3NpZ25fZHRfZGV2aWNlIGNhbGwgYXMg
bm90IG5lZWRlZA0KLSBkbyBub3QgcmV0dXJuIEVJTlZBTCB3aGVuIGFkZGlnbl9kdF9kZXZpY2Ug
aXMgbm90IHNldC4gVGhhdCBpcw0KYmVjYXVzZSB0aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsIGFu
ZCBub3QgaW1wbGVtZW50ZWQgaW4gc2luZ2xlLWFnZW50IGRyaXZlcg0KDQogeGVuL2FyY2gvYXJt
L2Zpcm13YXJlL3NjaS5jICAgICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysr
Kw0KIHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9maXJtd2FyZS9zY2kuaCB8ICA4ICsrKysrKw0K
IHhlbi9jb21tb24vZG9tY3RsLmMgICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysr
DQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYyAgIHwgIDYgKysrKysNCiA0
IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL3hlbi9hcmNo
L2FybS9maXJtd2FyZS9zY2kuYyBiL3hlbi9hcmNoL2FybS9maXJtd2FyZS9zY2kuYw0KaW5kZXgg
ZjczZWQwNjA5Mi4uMzcxZWNhMDE5YyAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9maXJtd2Fy
ZS9zY2kuYw0KKysrIGIveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjaS5jDQpAQCAtMTI2LDYgKzEy
Niw0MiBAQCBpbnQgc2NpX2Fzc2lnbl9kdF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0
IGR0X2RldmljZV9ub2RlICpkZXYpDQogICAgIHJldHVybiAwOw0KIH0NCiANCitpbnQgc2NpX2Rv
X2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqZG9tY3RsLCBzdHJ1Y3QgZG9tYWluICpkLA0KKyAg
ICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RvbWN0bF90KSB1X2Rv
bWN0bCkNCit7DQorICAgIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqZGV2Ow0KKyAgICBpbnQgcmV0
ID0gMDsNCisNCisgICAgc3dpdGNoICggZG9tY3RsLT5jbWQgKQ0KKyAgICB7DQorICAgIGNhc2Ug
WEVOX0RPTUNUTF9hc3NpZ25fZGV2aWNlOg0KKyAgICAgICAgcmV0ID0gLUVOWElPOw0KKyAgICAg
ICAgaWYgKCBkb21jdGwtPnUuYXNzaWduX2RldmljZS5kZXYgIT0gWEVOX0RPTUNUTF9ERVZfRFQg
KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgaWYgKCAhY3VyX21lZGlhdG9yICkN
CisgICAgICAgICAgICBicmVhazsNCisNCisgICAgICAgIGlmICggIWN1cl9tZWRpYXRvci0+YXNz
aWduX2R0X2RldmljZSApDQorICAgICAgICAgICAgYnJlYWs7DQorDQorICAgICAgICByZXQgPSBk
dF9maW5kX25vZGVfYnlfZ3BhdGgoZG9tY3RsLT51LmFzc2lnbl9kZXZpY2UudS5kdC5wYXRoLA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5hc3NpZ25fZGV2
aWNlLnUuZHQuc2l6ZSwgJmRldik7DQorICAgICAgICBpZiAoIHJldCApDQorICAgICAgICAgICAg
cmV0dXJuIHJldDsNCisNCisgICAgICAgIHJldCA9IHNjaV9hc3NpZ25fZHRfZGV2aWNlKGQsIGRl
dik7DQorDQorICAgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICAgIC8qIGRv
IG5vdCBmYWlsIGhlcmUgYXMgY2FsbCBpcyBjaGFpbmVkIHdpdGggaW9tbXUgaGFuZGxpbmcgKi8N
CisgICAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIHJldHVybiByZXQ7DQorfQ0KKw0KIHN0
YXRpYyBpbnQgX19pbml0IHNjaV9pbml0KHZvaWQpDQogew0KICAgICBzdHJ1Y3QgZHRfZGV2aWNl
X25vZGUgKm5wOw0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9maXJtd2Fy
ZS9zY2kuaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9maXJtd2FyZS9zY2kuaA0KaW5kZXgg
MWQ1NjZiZThlMi4uNmQ4Mjg2YjVjYiAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRl
L2FzbS9maXJtd2FyZS9zY2kuaA0KKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2Zpcm13
YXJlL3NjaS5oDQpAQCAtMTQ2LDYgKzE0NiwxNCBAQCBpbnQgc2NpX2R0X2ZpbmFsaXplKHN0cnVj
dCBkb21haW4gKmQsIHZvaWQgKmZkdCk7DQogICogY29udHJvbCIgZnVuY3Rpb25hbGl0eS4NCiAg
Ki8NCiBpbnQgc2NpX2Fzc2lnbl9kdF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGR0
X2RldmljZV9ub2RlICpkZXYpOw0KKw0KKy8qDQorICogU0NJIGRvbWN0bCBoYW5kbGVyDQorICoN
CisgKiBPbmx5IFhFTl9ET01DVExfYXNzaWduX2RldmljZSBpcyBoYW5kbGVkIGZvciBub3cuDQor
ICovDQoraW50IHNjaV9kb19kb21jdGwoc3RydWN0IHhlbl9kb21jdGwgKmRvbWN0bCwgc3RydWN0
IGRvbWFpbiAqZCwNCisgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhl
bl9kb21jdGxfdCkgdV9kb21jdGwpOw0KICNlbHNlDQogDQogI2luY2x1ZGUgPHB1YmxpYy9hcmNo
LWFybS5oPg0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tY3RsLmMgYi94ZW4vY29tbW9uL2Rv
bWN0bC5jDQppbmRleCA4MzQwNWE3NjZhLi4xZDViOTI2MzFjIDEwMDY0NA0KLS0tIGEveGVuL2Nv
bW1vbi9kb21jdGwuYw0KKysrIGIveGVuL2NvbW1vbi9kb21jdGwuYw0KQEAgLTI5LDYgKzI5LDkg
QEANCiAjaW5jbHVkZSA8eGVuL3h2bWFsbG9jLmg+DQogDQogI2luY2x1ZGUgPGFzbS9jdXJyZW50
Lmg+DQorI2lmZGVmIENPTkZJR19BUk0NCisjaW5jbHVkZSA8YXNtL2Zpcm13YXJlL3NjaS5oPg0K
KyNlbmRpZg0KICNpbmNsdWRlIDxhc20vaXJxLmg+DQogI2luY2x1ZGUgPGFzbS9wYWdlLmg+DQog
I2luY2x1ZGUgPGFzbS9wMm0uaD4NCkBAIC05MjUsNiArOTI4LDE4IEBAIGxvbmcgZG9fZG9tY3Rs
KFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RvbWN0bF90KSB1X2RvbWN0bCkNCiAgICAgY2Fz
ZSBYRU5fRE9NQ1RMX2Fzc2lnbl9kZXZpY2U6DQogICAgIGNhc2UgWEVOX0RPTUNUTF90ZXN0X2Fz
c2lnbl9kZXZpY2U6DQogICAgIGNhc2UgWEVOX0RPTUNUTF9kZWFzc2lnbl9kZXZpY2U6DQorICAg
ICAgICAvKg0KKyAgICAgICAgICogQ2hhaW4gU0NJIERUIGhhbmRsaW5nIGFoZWFkIG9mIHRoZSBJ
T01NVSBwYXRoIHNvIGFuIFNDSSBtZWRpYXRvcg0KKyAgICAgICAgICogY2FuIGF1dGhvcmlzZSBh
Y2Nlc3MtY29udHJvbGxlZCBEVCBkZXZpY2VzLiBVbmhhbmRsZWQgY2FzZXMgcmVwb3J0DQorICAg
ICAgICAgKiAtRU5YSU8sIHdoaWNoIGlzIGlnbm9yZWQuIEFueSBvdGhlciBTQ0kgZXJyb3IgYWJv
cnRzIGJlZm9yZSB0aGUNCisgICAgICAgICAqIElPTU1VIHBhdGggcnVucy4NCisgICAgICAgICAq
Lw0KKyNpZmRlZiBDT05GSUdfQVJNX1NDSQ0KKyAgICAgICAgcmV0ID0gc2NpX2RvX2RvbWN0bChv
cCwgZCwgdV9kb21jdGwpOw0KKyAgICAgICAgaWYgKCByZXQgPCAwICYmIHJldCAhPSAtRU5YSU8g
KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyNlbmRpZg0KKw0KICAgICAgICAgcmV0ID0gaW9tbXVf
ZG9fZG9tY3RsKG9wLCBkLCB1X2RvbWN0bCk7DQogICAgICAgICBicmVhazsNCiANCmRpZmYgLS1n
aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9kZXZpY2VfdHJlZS5jIGIveGVuL2RyaXZlcnMv
cGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYw0KaW5kZXggYWIxZTA3YWM5OS4uN2M0Y2YyN2QzMiAx
MDA2NDQNCi0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2RldmljZV90cmVlLmMNCisrKyBi
L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2RldmljZV90cmVlLmMNCkBAIC0zNzksNiArMzc5LDEy
IEBAIGludCBpb21tdV9kb19kdF9kb21jdGwoc3RydWN0IHhlbl9kb21jdGwgKmRvbWN0bCwgc3Ry
dWN0IGRvbWFpbiAqZCwNCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgIH0NCiANCisgICAg
ICAgIGlmICggIWR0X2RldmljZV9pc19wcm90ZWN0ZWQoZGV2KSApDQorICAgICAgICB7DQorICAg
ICAgICAgICAgcmV0ID0gMDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisNCiAg
ICAgICAgIHJldCA9IGlvbW11X2Fzc2lnbl9kdF9kZXZpY2UoZCwgZGV2KTsNCiANCiAgICAgICAg
IGlmICggcmV0ICkNCi0tIA0KMi40My4wDQo=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 14:47:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 14:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470043.1678844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnH-0002ss-DT; Tue, 03 Nov 2026 14:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470043.1678844; Tue, 03 Nov 2026 14:47:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOFnH-0002sF-22; Tue, 03 Nov 2026 14:47:23 +0000
Received: by outflank-mailman (input) for mailman id 1470043;
 Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOFnD-0001aU-CA
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 14:47:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOFnC-007AP4-Ol
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3ed-bab6-0a2a0a5309dd-0a2a4501c4fc-28
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from [52.101.69.105]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6ae9f3f4-5984-0a2a45010019-34654569fe92-9
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 15:47:18 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV2PR03MB589725.eurprd03.prod.outlook.com
 (2603:10a6:150:381::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 14:47:15 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 14:47:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=WrDwGc9lUWH16m6a8e2Bfmby8jks5y9N84SjnShEEEnnGsQ5TzfEpDXC3QnldkNuF+8i1XQ7cnMGUdfv5VNxUdkGBRnvHZtbtfku4ljkSuic40jIQZMYoUv2ZGJDysDbfY2cr1GMC79EEea+1bl6vVtNELLrOHQf8LAciVQkbi1l8e30WHOu22TKKemb6kliRe0k3fm0HSMaUEq+huvg+U1zWwDM8+X5+1zX/NzWR9WTZwtm6ujxW+pPO4gP2lMp/+d4gsalkdIjYNkCNVeuluIZ9IkPT+hktsxfMNxqaLBjpcMw1RQQTqO910kNftTTYrN1v4/Wpad/Na/XVmgu1A==
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=OXOw2h8RpshGq8qjhWJ1FIL2PEhT8ERSTFZJ4RmoeUA=;
 b=mUDS/ArFcu7A3UKj6FyLS76VekuXuLZf5fvRtItjcjffX34pjcGKYEXIOs7K6LtmBTp2nx4xTYizDQimdUbTTzT7x2b8RsOaxaLC0RAm8FK3O0WVut8776xcFl5+XyoZcinZoUx6Yx3k7hayo7AruhtOecLvkNsrq3p//ZHeMshm8MxubLlO+QKFchhljq8LHbXYJWRuETcBHGaC2k/SxsU1Rg7wGeCIzZ1vLbnABAo1bDhkbVGjApVeiVlJUXKWa1PqPBij5Z3zBApStAq1K0E4NO7S2pi3en4mQcF389TINHqADWNF+fHAlmc7R88gZJ8AMwb4aaIF2wPDCGOhsQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OXOw2h8RpshGq8qjhWJ1FIL2PEhT8ERSTFZJ4RmoeUA=;
 b=GBSs1cNkwGjaowYcMyStW6QDyyQHtKT3df1f4NidxQf0POyZYlqWK5Xw/gJq9t3LPe9YdrUUmUodHjYWsWBD60S7A+1O5QRMl3wMUfoQKxmnp32AAMczVu914ai0wIdzFcGIJkb52td7LAY9CbY1qK8G7FEmlxRK43JMaT0WgEuAckiE6hISkzYQ+qeSMAqtXiXGpKUu8Y7Fir5m0EV9ilDVWsEsd5a3BK087DFRRpSR6elnHIlqeDtRzLBokkbm4Cacvii0prKJpd3pDnJy7VKoEKW7qVYtprdepLMTfD1jfIRkRMZSkcuwM1VRr92a85nofkSK1DDK47Btt4gthw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Oleksii Moisieiev
	<Oleksii_Moisieiev@epam.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I31v/+oPR9ykKZQEp+RtbzYA==
Date: Tue, 3 Nov 2026 14:47:14 +0000
Message-ID:
 <04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To: <cover.1793717221.git.oleksii_moisieiev@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV2PR03MB589725:EE_
x-ms-office365-filtering-correlation-id: 73b389a3-730e-415f-6e69-08df39b95a0b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|1800799024|376014|23010399003|6133799003|18002099003|22082099003|261102123227099003|3023799007|56012099006|10067099003|261009223027099003|261022105027099003|261021121427099003|261021135927099003|261022075727099003|5023799004|11063799006|38070700021|261028144727099003|261026121527099003|261026140227099003;
x-microsoft-antispam-message-info:
 3uHhMRS1uopPeJX4oJoB6ma/mFW/3tkEc+AXstRSjW34EyKYdVqyddQmb2TDuGXEnDDLaAKb3jMchPSc4lf37fcl6BweuAD1xQnLAJz9ntTO+cTnU5Syzy0Zh1Qp9vb/yHvaFjmMhgccSTJPwC8smICs9Bz0uYa/UrFRWQ+QfPXHYNJQu1O9M3n0Sk+0BBbDBpsy6mknqYCbfWnNORr4rBDWNPwGyp82IEs2LCQ4muXcB/D6LcJkf+kn64sV7mPv3cUomWt+0j9JbV++4lH4RE+37CV39XmrMDyqF/aEJ+wRvqm8q/LZAyvDFPRb7ALcG1Kjz47uo7qeZFLNVtWTsf7HFfGc6NXJ3K/ZuMq/v3tEZ0nILMMwE6+ZS3B21dws8YWQKap2KUtjjmNY9WpkK7M1r3ANdre5yQ8VR1tiEVgMw5kQ3r/cvB+h8twZOQwt9jACQF/vD/YQm4vO17LAqtYCu2y1qAgZgsRrF/ANkB3nek44DRt8EZCkPildgJE3WY95fs7IKTGSCka3aJEopx+oLLV3m7gEEl/myRXbQMCoY2+uj++0jeCbzTucEJuSoHUa7zKTJJTzhqrJmYQwqJkzmRNyEkRlSan8yAQS+5xLoQVoj78R25q5RONBXPwaTBYFjbGNHBgEndcZVlY/47vZ8ETaDTXOaz8kvot6W1o=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(1800799024)(376014)(23010399003)(6133799003)(18002099003)(22082099003)(261102123227099003)(3023799007)(56012099006)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021135927099003)(261022075727099003)(5023799004)(11063799006)(38070700021)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?VTU4YXRacFZIT05qa2MxeDc4SWRBbTZtVFhmcTZFd01CMkRudzBmbWFyK00r?=
 =?utf-8?B?a2haNUtNc0g4MEluSWVSZkRYRHFRaFNwNWxmYlFRZVdHZVJEamdEQ2NiT2cv?=
 =?utf-8?B?RDBkMGwveCs0Z0tVc2xOMW45bU14REFHT0xDVUdHcE1FWE1jamF2aWhrQlo1?=
 =?utf-8?B?UzVMOEpBdlR6cHZrUnh6QS96bGRyVFUxeHUxSzFpbjhVSkNsQStCWWtqZGRL?=
 =?utf-8?B?Nk9HUlFGaXZOSWxlanI3ejl2TGNSMDQ0RXVseTliNkdaOGJwZWdNYWZZQWtx?=
 =?utf-8?B?SnJmT3E3L2pMb0VXK3IxYll3NzFpd0ttV2h2aC9TS3JabDRDSjNlUkdXK21C?=
 =?utf-8?B?R3Rhako5MWM1WXA0bTZuT1hlUm9VOE9RNGdLSmZraUVxc1dFUlF5VGxOOGdp?=
 =?utf-8?B?VzY3dFlLZWV5TFJsVlJTMUJoelVOeGV4VXhINDRVcmQrU3dwVXVoMnIxYmZG?=
 =?utf-8?B?aHhXd1FrSUdVbGRzSG5zMUd1a2xIOHNnalR5UzVidmprNTZuRlZKOExXQ1Ry?=
 =?utf-8?B?a0RSYWFnNUhaMEZROVVoaWxHQ1F5NENpZ0hJbEtqbkQwUzY1NTRLTjE1c0VE?=
 =?utf-8?B?d0xvWTM3ekcydlk3NmQ5ZDFQdmhicUhzcnVuUGxGQm1reFFjemJ2NU5KYnpK?=
 =?utf-8?B?L2pDbm51d08wQlhSdGcwbHlqVFpHanpReiswVXBjeFd5ZjhabkFpdndyUGVz?=
 =?utf-8?B?UUkrcWxoV0NKT0JPV1lWV2hVdkJJMS8xSHljK3F4U0RJOVlFRjFuREhBV1lr?=
 =?utf-8?B?dThsSkoydzA0ZXhvdVJsTFlOWUZhNmRDREtIMUdxYnVsS3djb1ZET2pkcWJv?=
 =?utf-8?B?a2UrNFhZVlRNZHI1bTM3WUF3VXo1U3NySGlXcXBZTjV3eFlCdlFnT1pjU2Qx?=
 =?utf-8?B?cVpBWUpLL3BQSWtjQm1IdUNrSkxGVzE4ZUZjVzB3MGhqdFBzcFRPVzhYajc1?=
 =?utf-8?B?eXNsU2FRd3h6cnBNalNrR3lBcFVFNytvUWFSanA4cmN1cVNtaDhVTUcxREZZ?=
 =?utf-8?B?WFZCZFQrWGU0V1dCTlJqRTlpcmdQaTgyUmJWQzNWS1RXOEx5S2pHRDBXVnB6?=
 =?utf-8?B?OC9tM3ZOYkRZYUEwYWlqekRxRGhrN2V4QzVPVWNhUXgzcHpzaW9scjRBL2VI?=
 =?utf-8?B?cndXd2g3NUdmQmZmSitlZlFPQjFFakE4dmRQanYrSm1LN3dkQzlIR1owNGRT?=
 =?utf-8?B?QUF0eTI4Sk1PTDMxQy9icHNSVk42c0k5cmNVQTRZZEJNZWNYUzdrNjRMdzhK?=
 =?utf-8?B?Q3J3UGl2SUtGUUxISTJNellVVyttT0R1SDdMSTZ3K05sMGdyWmFkQTRFK0t5?=
 =?utf-8?B?ZnlmZm9HQ2I2M213dWtTRHNqUjlsZnROQ09mY2t2bzRQTEJrRjQ2eitMRDh3?=
 =?utf-8?B?YW11cWMvaEcyVVhZN1hiVUJwY0crRy9RblF5VEtLc2syMXA3NjNOSmsrUEt6?=
 =?utf-8?B?RTgyU1JManQ4eHh1OU43aVJJSEQwMUhsOFJISVU5akdnVU4rV3NRa3dhTG5K?=
 =?utf-8?B?ODlhdGJ0VVZ5Z2xtVi84NEdra3FSaVhvUGNObFRJSTduUXRMR3RDZmVCL0dt?=
 =?utf-8?B?dFZVMDU4NERmSk5qRGU0aWxRakdlYnRTaWFwa0JBUDdoRFIrYndoMDJRZDVq?=
 =?utf-8?B?QWdDNTBGNUNnbzFKaWtmWEJJUG5JbHlha1NBV1phWUhTYVBoODlqck5uQStU?=
 =?utf-8?B?TVpXdGdEMk90TFFseDUyRjB3OS9uN1ZiTzhoRUx5Q1Q2R004M2xjQzQvcE00?=
 =?utf-8?B?WkRRVnYyUEhLd2paSVl3aUlQQXpQM1IxZnpXTkxuUGIyWmJCendQeTl3VkpL?=
 =?utf-8?B?L09HaDRXRWdHUzd1cE5sTjNkY09iR1JmVnFjYmhUbTUwbE9wM1BOR2p0Z1A5?=
 =?utf-8?B?YUFKVldyczN5MTIvKzhqaEF4TTN4empmVUdHWVljbnZrYVhWZ1V3c2ZEY0JI?=
 =?utf-8?B?ZTVjK0EwY1ZoNGRCT0lNdnpjRnJ0OHdEd1dqRDVCRERkZXVJbTB0SWdaV1Q5?=
 =?utf-8?B?eDJ6ZFpmNTlGQWFQQUhZR3d3RHdVSWtxYjdEcGJTaVl5T3dpTU1kWG1iZFB0?=
 =?utf-8?B?RllxaHZvU2VKdEw4QXluN242ZFo0Tndib1F0NEE0cWJSZnhxdGdBSHVwdldU?=
 =?utf-8?B?aWtWZFRjQkV3UkU5NUdZNENSbklXSzlmay9ia0xwM24yaTQyZzh2dUVqcEhr?=
 =?utf-8?B?R1g2RGZSYm95TU1UclhEMXVtN3R3aS9UZlB0aXBrK2I2T1kzc3BVMjlxaDlW?=
 =?utf-8?B?V1JNaTVwa2IxaU1qV2FsSU1CSldHMG82YlFIZDQxbmQ4TXpzUllWREhRcTNE?=
 =?utf-8?B?SWJ5bW1ZVnlDSjhpN3ViYVlBcUVEc2pEWGlUdlM2bFVOZXhxWXYrcUs1VGZs?=
 =?utf-8?Q?kKnFhdAytGSg0C5w=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 73b389a3-730e-415f-6e69-08df39b95a0b
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 14:47:14.5590
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: wgtSocIfkeqJspoY/lKkKggRXJ08vfJRkqfExfo0YEHdfHyBWIrX87p6ozZN2f4ThTebBPeSOQDR/uAHFHJ0CkFX9IlgOmiC5vzVgnW5sZw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB589725
X-purgate-ID: tlsNG-d62444/1793717238-BD67C757-E5EF7A5E/0/0
X-purgate-type: clean
X-purgate-size: 25536

RnJvbTogR3J5Z29yaWkgU3RyYXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KDQpB
ZGQgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBkb2N1bWVudGF0aW9uLg0KSXQgaW5j
bHVkZXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgU0NNSSBtdWx0aS1hZ2VudCBkcml2
ZXIuDQpUaGlzIGRvY3VtZW50IGV4cGxhaW5zIHRoZSBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LCBj
b25maWd1cmF0aW9uLA0KYW5kIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGUgWGVuIFNDTUkg
bXVsdGktYWdlbnQgZHJpdmVyIGlzDQpkZXNpZ25lZCB0byBwcm92aWRlIFNDTUkgYWNjZXNzIHRv
IHN5c3RlbSByZXNvdXJjZXMgZnJvbSBkaWZmZXJlbnQNCmRvbWFpbnMuDQoNClNpZ25lZC1vZmYt
Ynk6IEdyeWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbT4NClNpZ25l
ZC1vZmYtYnk6IE9sZWtzaWkgTW9pc2llaWV2IDxvbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbT4N
Ci0tLQ0KDQoobm8gY2hhbmdlcyBzaW5jZSB2MTQpDQoNCkNoYW5nZXMgaW4gdjE0Og0KLSBkZXNj
cmliZSBzZWNvbmRhcnkgYWdlbnRzIGFzIHhlbixzY21pLWFnZW50IG5vZGVzIHVuZGVyIGFnZW50
cw0KLSB1cGRhdGUgaG9zdCwgZGlzY292ZXJ5IGFuZCBkb20wbGVzcyBleGFtcGxlcyBmb3IgdGhl
IGNoaWxkLW5vZGUgZm9ybWF0DQotIGNsYXJpZnkgc2hhcmVkLW1lbW9yeSBwbGFjZW1lbnQgYW5k
IHBsYXRmb3JtIFJBTSByZXNlcnZhdGlvbnMNCg0KQ2hhbmdlcyBpbiB2MTA6DQotIHJlcGhyYXNl
IHNlY3Rpb24gYWJvdXQgL2Zpcm13YXJlL3NjbWkuIE1lbnRpb25lZCB0aGF0IHRoaXMgbm9kZSBp
cw0KdGFrZW4gZnJvbSBIb3N0IERUIGFuZCBjb3BpZWQgdW5tb2RpZmllZC4NCi0gZml4IHhlbixy
ZWcgYWRkcmVzcyBmb3Igc2Vjb25kYXJ5IGRvbWFpbnMgZm9yIERvbTBsZXNzIGNvbmZpZ3VyYXRp
b24NCg0KQ2hhbmdlcyBpbiB2ODoNCi0gdXBkYXRlIGRvY3VtZW50YXRpb24gdG8gbWF0Y2ggdGhl
IGxhc3QgRFQgZm9ybWF0DQotIGZpeGVkIFJTVDogIi4uLiBjb2RlLWJsb2NrOjogZHRzIiAtPiAi
Li4gY29kZS1ibG9jazo6IGR0cyINCi0gdXBkYXRlIGRvY3VtZW50YXRpb24gd2l0aCBkb20wbGVz
cyBjb25maWd1cmF0aW9uIGV4YW1wbGUNCi0gdXBkYXRlIGRvY3VtZW50YXRpb24gd2l0aCBuZXcg
cGFyYW0geGVuLGRvbTAtc2NpLWFnZW50LWlkDQppbnN0ZWFkIG9mIHRoZSBjb21tYW5kIGxpbmUg
cGFyYW1ldGVyDQoNCkNoYW5nZXMgaW4gdjc6DQotIHVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIHNl
Y3Rpb24gb2YgdGhlIHhlbl9zY21pIGNvbmZpZ3VyYXRpb24gd2hpY2gNCmlzIG1hdGNoZWQgYnkg
InhlbixzY2kiIGNvbXBhdGlibGUgaW5zdGVhZCBvZiB0aGUgZGlyZWN0IHBhdGguDQoNCkNoYW5n
ZXMgaW4gdjY6DQotIHJlbW92ZSBhbGwgSFZDIG1lbnRpb25zIGZyb20gdGhlIG11bHRpLWFnZW50
IGRvYw0KLSB1cGRhdGUgc2NpLWFnZW50LWlkIHBhcmFtZXRlciBkZXNjcmlwdGlvbiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbg0KLSBhZGQgbWlzc2luZyBTaWduLW9mDQotIG1pbm9yIGZpeGVzIGFjcm9z
cyB0aGUgZG9jdW1lbnQNCg0KQ2hhbmdlcyBpbiB2NToNCi0gcmV3b3JrIG11bHRpLWFnZW50IGRy
aXZlciB0byBsZWF2ZSBIb3N0IERldmljZS10cmVlIHVubW9kaWZpZWQNCg0KIC4uLi9hcm0vZmly
bXdhcmUvYXJtLXNjbWkucnN0ICAgICAgICAgICAgICAgICB8IDQwNSArKysrKysrKysrKysrKysr
KysNCiAxIGZpbGUgY2hhbmdlZCwgNDA1IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2Rv
Y3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0IGIvZG9jcy9oeXBl
cnZpc29yLWd1aWRlL2FybS9maXJtd2FyZS9hcm0tc2NtaS5yc3QNCmluZGV4IGQ5Njk4ZjRlNGIu
LjI1NDU5ZDIyZGMgMTAwNjQ0DQotLS0gYS9kb2NzL2h5cGVydmlzb3ItZ3VpZGUvYXJtL2Zpcm13
YXJlL2FybS1zY21pLnJzdA0KKysrIGIvZG9jcy9oeXBlcnZpc29yLWd1aWRlL2FybS9maXJtd2Fy
ZS9hcm0tc2NtaS5yc3QNCkBAIC0zNiw2ICszNiw4IEBAIFRoZSBiZWxvdyBzZWN0aW9ucyBkZXNj
cmliZSBTQ01JIHN1cHBvcnQgb3B0aW9ucyBhdmFpbGFibGUgZm9yIFhlbi4NCiANCiB8IFsxXSBg
QXJtIFNDTUkgPGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4wMDU2
L2xhdGVzdC8+YF8NCiB8IFsyXSBgU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJm
YWNlIChTQ01JKSBiaW5kaW5ncyA8aHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9maXJtd2FyZS9hcm0sc2NtaS55YW1sPmBfDQorfCBbM10gYEdlbmVy
aWMgRG9tYWluIEFjY2VzcyBDb250cm9sbGVycyBiaW5kaW5ncyA8aHR0cHM6Ly93ZWIuZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVl
L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hY2Nlc3MtY29udHJvbGxlcnMvYWNj
ZXNzLWNvbnRyb2xsZXJzLnlhbWw+YF8NCisNCiANCiBTaW1wbGUgU0NNSSBvdmVyIFNNQyBjYWxs
cyBmb3J3YXJkaW5nIGRyaXZlciAoRUwzKQ0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTE4OSwzICsxOTEsNDA2IEBAIGV4Y2VwdCBl
eHBsaWNpdGx5IGVuYWJsaW5nIFNDTUkgd2l0aCAiYXJtX3NjaSIgeGwuY2ZnIG9wdGlvbi4NCiAg
ICAgLT4gICAgICAgIHhlbixyZWcgPSA8MHgwIDB4NDdmZjAwMDAgMHgwIDB4MTAwMCAweDAgMHgy
MjAwMTAwMD47DQogICAgIC0+ICAgICAgICB4ZW4sZm9yY2UtYXNzaWduLXdpdGhvdXQtaW9tbXU7
DQogICAgICAgfTsNCisNCitTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgKEVMMykNCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorVGhlIFNDTUkgU01DIG11bHRp
LWFnZW50IGRyaXZlciBlbmFibGVzIHN1cHBvcnQgZm9yIEFSTSBFTDMgVHJ1c3RlZCBGaXJtd2Fy
ZS1BIChURi1BKSB3aGljaA0KK3Byb3ZpZGVzIFNDTUkgaW50ZXJmYWNlIHdpdGggbXVsdGktYWdl
bnQgc3VwcG9ydCwgYXMgc2hvd24gYmVsb3cuDQorDQorOjoNCisNCisgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyAgICAgIHwgRUwzIFRGLUEgU0NNSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwNCisgICAgICArLS0tLS0tLSstLSstLS0tLS0tKy0tKy0t
LS0tLS0rLS0rLS0tLS0tLSsrDQorICAgICAgfHNobWVtMSB8ICB8c2htZW0wIHwgIHxzaG1lbTIg
fCAgfHNobWVtWCB8DQorICAgICAgKy0tLS0tKy0rICArLS0tKy0tLSsgICstLSstLS0tKyAgKy0t
LSstLS0rDQorICAgIHNtYy1pZDEgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCisg
ICAgYWdlbnQxICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KKyAgICAgICstLS0t
LXYtLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCisgICAgICB8ICAgICAgICAg
ICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICB8DQorICAgICAgfCAgICAgICAgICAgICAg
fCAgICAgICAgIHwgICAgICAgICAgIHwgICAgfA0KKyAgICAgICstLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCisgICAgICAgICAgICAgc21jLWlkMCB8ICBzbWMtaWQy
fCAgICBzbWMtaWRYfA0KKyAgICAgICAgICAgICBhZ2VudDAgIHwgIGFnZW50MiB8ICAgIGFnZW50
WCB8DQorICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCisgICAg
ICAgICAgICAgICAgKy0tLS12LS0tKyAgKy0tdi0tLS0tKyAgKy0tdi0tLS0tKw0KKyAgICAgICAg
ICAgICAgICB8ICAgICAgICB8ICB8ICAgICAgICB8ICB8ICAgICAgICB8DQorICAgICAgICAgICAg
ICAgIHwgRG9tMCAgIHwgIHwgRG9tMSAgIHwgIHwgRG9tWCAgIHwNCisgICAgICAgICAgICAgICAg
fCAgICAgICAgfCAgfCAgICAgICAgfCAgfCAgICAgICAgfA0KKyAgICAgICAgICAgICAgICB8ICAg
ICAgICB8ICB8ICAgICAgICB8ICB8ICAgICAgICB8DQorICAgICAgICAgICAgICAgICstLS0tLS0t
LSsgICstLS0tLS0tLSsgICstLS0tLS0tLSsNCisNCitUaGUgRUwzIFNDTUkgbXVsdGktYWdlbnQg
ZmlybXdhcmUgaXMgZXhwZWN0ZWQgdG8gcHJvdmlkZSBTQ01JIFNNQyBzaGFyZWQtbWVtb3J5IHRy
YW5zcG9ydA0KK2ZvciBldmVyeSBBZ2VudCBpbiB0aGUgc3lzdGVtLiBUaGUgU0NNSSBBZ2VudCB0
cmFuc3BvcnQgY2hhbm5lbCBkZWZpbmVkIGJ5IHBhaXI6DQorDQorLSBzbWMtaWQ6IFNNQyBmdW5j
dGlvbiBpZCB1c2VkIGZvciBEb29yYmVsbA0KKy0gc2htZW06IHNoYXJlZCBtZW1vcnkgZm9yIG1l
c3NhZ2VzIHRyYW5zZmVyLCAqKlhlbiBwYWdlIGFsaWduZWQqKi4NCisgIFNoYXJlZCBtZW1vcnkg
aXMgbWFwcGVkIHdpdGggdGhlIGZvbGxvd2luZyBmbGFnczogTVRfREVWSUNFX25HblJFIGFuZCBf
UEFHRV9ERVZJQ0UsIGluZGljYXRpbmcgdGhhdCB0aGlzDQorICBtZW1vcnkgaXMgbWFwcGVkIGFz
IGRldmljZSBtZW1vcnkuDQorDQorVGhlIGZvbGxvd2luZyBTQ01JIEFnZW50cyBhcmUgZXhwZWN0
ZWQgdG8gYmUgZGVmaW5lZCBieSBTQ01JIEZXIHRvIGVuYWJsZSBTQ01JIG11bHRpLWFnZW50IGZ1
bmN0aW9uYWxpdHkNCit1bmRlciBYZW46DQorDQorLSBYZW4gbWFuYWdlbWVudCBhZ2VudDogdHJ1
c3RlZCBhZ2VudHMgdGhhdCBhY2Nlc3NlcyB0byB0aGUgQmFzZSBQcm90b2NvbCBjb21tYW5kcyB0
byBjb25maWd1cmUNCisgIGFnZW50IHNwZWNpZmljIHBlcm1pc3Npb25zDQorLSBPU1BNIFZNIGFn
ZW50czogbm9uLXRydXN0ZWQgYWdlbnQsIG9uZSBmb3IgZWFjaCBHdWVzdCBkb21haW4gd2hpY2gg
aXMgIGFsbG93ZWQgZGlyZWN0IEhXIGFjY2Vzcy4NCisgIEF0IGxlYXN0IG9uZSBPU1BNIFZNIGFn
ZW50IGhhcyB0byBiZSBwcm92aWRlZCBieSBGVyBpZiBIVyBpcyBoYW5kbGVkIG9ubHkgYnkgRG9t
MCBvciBEcml2ZXIgRG9tYWluLg0KKw0KK1RoZSBFTDMgU0NNSSBGVyBpcyBleHBlY3RlZCB0byBp
bXBsZW1lbnQgZm9sbG93aW5nIEJhc2UgcHJvdG9jb2wgbWVzc2FnZXM6DQorDQorLSBCQVNFX0RJ
U0NPVkVSX0FHRU5UIChyZXF1aXJlZCBmb3IgWGVuOyByZXF1aXJlZCBmb3Igc2Vjb25kYXJ5IGFn
ZW50cyB3aXRob3V0IGBgcmVnYGApDQorLSBCQVNFX1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJT04g
KG9wdGlvbmFsKQ0KKy0gQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TIChvcHRpb25hbCkNCisN
CitUaGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBTQ01JIGFnZW50cyBhbmQgdGhlaXIgdHJhbnNwb3J0
IHNwZWNpZmljYXRpb25zIGFyZSBTQ01JIEZXIGltcGxlbWVudGF0aW9uDQorc3BlY2lmaWMuDQor
DQorQ29tcGlsaW5nIHdpdGggbXVsdGktYWdlbnQgc3VwcG9ydA0KK15eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl4NCisNCitUbyBidWlsZCB3aXRoIHRoZSBTQ01JIFNNQyBtdWx0aS1h
Z2VudCBkcml2ZXIgc3VwcG9ydCwgZW5hYmxlIEtjb25maWcgb3B0aW9uOg0KKw0KKzo6DQorDQor
ICAgIENPTkZJR19TQ01JX1NNQ19NQQ0KKw0KKw0KK0RyaXZlciBmdW5jdGlvbmFsaXR5DQorXl5e
Xl5eXl5eXl5eXl5eXl5eXl4NCisNCitUaGUgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZl
ciBpbXBsZW1lbnRzIGZvbGxvd2luZyBmdW5jdGlvbmFsaXR5Og0KKw0KKy0gVGhlIGRyaXZlciBp
cyBpbml0aWFsaXplZCBmcm9tIHRoZSBYZW4gU0NNSSBjb250YWluZXIgYGB4ZW5fc2NtaV9jb25m
aWdgYA0KKyAgdW5kZXIgYGAvY2hvc2VuL3hlbmBgIChmb3IgZXhhbXBsZSBgYC9jaG9zZW4veGVu
L3hlbl9zY21pX2NvbmZpZy9zY21pYGApLg0KKyAgT25seSBvbmUgU0NNSSBpbnRlcmZhY2UgaXMg
c3VwcG9ydGVkLiBUaGUgU0NNSSBjb25maWd1cmF0aW9uIG11c3QgbGl2ZSB1bmRlcg0KKyAgdGhl
IFhlbiBTQ01JIGNvbnRhaW5lciBgYHhlbixzY2lgYCBiZW5lYXRoIGBgL2Nob3NlbmBgLg0KKyAg
VGhlIFhlbiBTQ01JIG1lZGlhdG9yIHdpbGwgYmluZCBvbmx5IHRvIHRoZSAiYXJtLHNjbWktc21j
IiBub2RlIHRoYXQgaXMgYSBjaGlsZCBvZg0KKyAgdGhpcyAieGVuLHNjaSIgY29udGFpbmVyOyBh
bnkgb3RoZXIgImFybSxzY21pLXNtYyIgbm9kZXMgKGZvciBleGFtcGxlIHVuZGVyDQorICAiL2Zp
cm13YXJlIikgYXJlIGlnbm9yZWQgdG8gYXZvaWQgc3RlYWxpbmcgdGhlIGhvc3QncyBTQ01JIE9T
UE0gaW5zdGFuY2UuDQorDQorLi4gY29kZS1ibG9jazo6IGR0cw0KKw0KKyAgICAgICAgc2NtaV9z
aG1fMTogc3JhbUA0N2ZmMTAwMCB7DQorICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2Nt
aS1zaG1lbSI7DQorICAgICAgICAgICAgcmVnID0gPDB4MCAweDQ3ZmYxMDAwIDB4MCAweDEwMDA+
Ow0KKyAgICAgICAgfTsNCisgICAgICAgIHNjbWlfeGVuOiBzY21pIHsNCisgICAgICAgICAgY29t
cGF0aWJsZSA9ICJhcm0sc2NtaS1zbWMiOw0KKyAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIw
MDAwMDM+OyAvKiBYZW4gbWFuYWdlbWVudCBhZ2VudCAqLw0KKyAgICAgICAgICAjYWRkcmVzcy1j
ZWxscyA9IDwgMT47DQorICAgICAgICAgICNzaXplLWNlbGxzID0gPCAwPjsNCisgICAgICAgICAg
I2FjY2Vzcy1jb250cm9sbGVyLWNlbGxzID0gPCAxPjsNCisgICAgICAgICAgc2htZW0gPSA8JnNj
bWlfc2htXzE+OyAvKiBYZW4gbWFuYWdlbWVudCBzaGFyZWQgbWVtb3J5ICovDQorICAgICAgICB9
Ow0KKw0KKy4uIG5vdGU6Og0KKyAgIFRoaXMgbGF5b3V0IGtlZXBzIHRoZSBIb3N0IERUIHVuY2hh
bmdlZCBmb3IgRG9tMCBhbmQgYmFyZW1ldGFsIExpbnV4IGJ5DQorICAgdXNpbmcgZnVuY19pZCAw
eDgyMDAwMDAyIC8gc2htZW0gMHg0N2ZmMDAwMCBmb3IgRG9tMCwgd2hpbGUgWGVuIHVzZXMgYQ0K
KyAgIHNlcGFyYXRlIHByaXZpbGVnZWQgY2hhbm5lbCBmdW5jX2lkIDB4ODIwMDAwMDMgLyBzaG1l
bSAweDQ3ZmYxMDAwLiBFTDMNCisgICBmaXJtd2FyZSBlbmZvcmNlcyBwZXJtaXNzaW9ucyBwZXIg
YWdlbnRfaWQsIHNvIHRoZXJlIGlzIG5vIGNvbmZsaWN0IGJldHdlZW4NCisgICBEb20wIGFuZCBY
ZW4gY2hhbm5lbHMuDQorDQorLSBUaGUgZHJpdmVyIHJlYWRzIHNlY29uZGFyeSBhZ2VudHMgZnJv
bSBhbiBgYGFnZW50c2BgIGNoaWxkIG9mIHRoZQ0KKyAgYGB4ZW4sc2NpYGAgY29udGFpbmVyLiBU
aGlzIGNoaWxkIGhhcyBgYCNhZGRyZXNzLWNlbGxzID0gPDE+YGAgYW5kDQorICBgYCNzaXplLWNl
bGxzID0gPDA+YGAuIEVhY2ggZW5hYmxlZCBgYHhlbixzY21pLWFnZW50YGAgY2hpbGQgc3BlY2lm
aWVzIGl0cw0KKyAgZG9vcmJlbGwgaW4gYGBhcm0sc21jLWlkYGAgYW5kIGEgc2luZ2xlIHNoYXJl
ZC1tZW1vcnkgcGhhbmRsZSBpbiBgYHNobWVtYGAuDQorICBUaGUgb3B0aW9uYWwgc2luZ2xlLWNl
bGwgYGByZWdgYCBwcm9wZXJ0eSBzdXBwbGllcyB0aGUgU0NNSSBhZ2VudCBJRA0KKyAgKDAuLjI1
NCkuIElEcyBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSBYZW4ncyBtYW5hZ2VtZW50
IGFnZW50Lg0KKyAgQXQgbGVhc3Qgb25lIGVuYWJsZWQgc2Vjb25kYXJ5IGFnZW50IGlzIHJlcXVp
cmVkLg0KKw0KKyAgVGhlIHNoYXJlZC1tZW1vcnkgbm9kZXMgcmVtYWluIHVuZGVyIGBgeGVuX3Nj
bWlfY29uZmlnYGA7IHRoZSBob3N0IE9TUE0NCisgIHNoYXJlZC1tZW1vcnkgbm9kZSBhbmQgYGAv
ZmlybXdhcmUvc2NtaWBgIHJlbWFpbiBpbiB0aGUgcGxhdGZvcm0gRFQuDQorICBBIHNoYXJlZC1t
ZW1vcnkgbm9kZSBkZXNjcmliZXMgYSBjaGFubmVsIGxvY2F0aW9uIGFuZCBkb2VzIG5vdCByZXNl
cnZlIFJBTS4NCisgIElmIGJ1ZmZlcnMgb2NjdXB5IHN5c3RlbSBSQU0sIHRoZSBwbGF0Zm9ybSBt
dXN0IHJlc2VydmUgdGhlIGVudGlyZQ0KKyAgZmlybXdhcmUtb3duZWQgcmFuZ2UgaW4gYGAvcmVz
ZXJ2ZWQtbWVtb3J5YGAgYmVmb3JlIFhlbiBib290cy4gQSBzaW5nbGUNCisgIHJlc2VydmF0aW9u
IG1heSBjb3ZlciBtdWx0aXBsZSBjaGFubmVscywgaW5jbHVkaW5nIHVudXNlZCBvbmVzLiBTUkFN
DQorICBvdXRzaWRlIHN5c3RlbSBSQU0gZG9lcyBub3QgcmVxdWlyZSBhIFJBTSByZXNlcnZhdGlv
bi4gVGhlIGNoYW5uZWwgbm9kZXMNCisgIGRvIG5vdCBoYXZlIHRvIGJlIG1vdmVkIGludG8gYGAv
cmVzZXJ2ZWQtbWVtb3J5YGAuDQorDQorLi4gY29kZS1ibG9jazo6IGR0cw0KKw0KKyAgICAvIHsN
CisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDI+Ow0KKyAgICAgICAgI3NpemUtY2VsbHMgPSA8
Mj47DQorDQorICAgICAgICBzY21pX3NobV8wOiBzcmFtQDQ3ZmYwMDAwIHsNCisgICAgICAgICAg
ICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCisgICAgICAgICAgICByZWcgPSA8MHgw
IDB4NDdmZjAwMDAgMHgwIDB4MTAwMD47DQorICAgICAgICB9Ow0KKw0KKyAgICAgICAgZmlybXdh
cmUgew0KKyAgICAgICAgICAgIHNjbWk6IHNjbWkgew0KKyAgICAgICAgICAgICAgICBjb21wYXRp
YmxlID0gImFybSxzY21pLXNtYyI7DQorICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4
MjAwMDAwMj47IC8qIEhvc3QgT1NQTSBhZ2VudCBzbWMtaWQgKi8NCisgICAgICAgICAgICAgICAg
I2FkZHJlc3MtY2VsbHMgPSA8MT47DQorICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDA+
Ow0KKyAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMD47IC8qIEhvc3QgT1NQTSBh
Z2VudCBzaG1lbSAqLw0KKyAgICAgICAgICAgIH07DQorICAgICAgICB9Ow0KKw0KKyAgICAgICAg
Y2hvc2VuIHsNCisgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwyPjsNCisgICAgICAgICAg
ICAjc2l6ZS1jZWxscyA9IDwyPjsNCisgICAgICAgICAgICByYW5nZXM7DQorDQorICAgICAgICAg
ICAgeGVuIHsNCisgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8Mj47DQorICAgICAg
ICAgICAgICAgICNzaXplLWNlbGxzID0gPDI+Ow0KKyAgICAgICAgICAgICAgICByYW5nZXM7DQor
DQorICAgICAgICAgICAgICAgIHhlbl9zY21pX2NvbmZpZyB7DQorICAgICAgICAgICAgICAgICAg
ICBjb21wYXRpYmxlID0gInhlbixzY2kiOw0KKyAgICAgICAgICAgICAgICAgICAgI2FkZHJlc3Mt
Y2VsbHMgPSA8Mj47DQorICAgICAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwyPjsNCisg
ICAgICAgICAgICAgICAgICAgIHJhbmdlczsNCisgICAgICAgICAgICAgICAgICAgIHhlbixkb20w
LXNjaS1hZ2VudC1pZCA9IDwwPjsNCisNCisgICAgICAgICAgICAgICAgICAgIC8qIFhlbiBtYW5h
Z2VtZW50IGNoYW5uZWwgKi8NCisgICAgICAgICAgICAgICAgICAgIHNjbWlfc2htXzE6IHNyYW1A
NDdmZjEwMDAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNj
bWktc2htZW0iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0N2ZmMTAw
MCAweDAgMHgxMDAwPjsNCisgICAgICAgICAgICAgICAgICAgIH07DQorDQorICAgICAgICAgICAg
ICAgICAgICBzY21pX3NobV8yOiBzcmFtQDQ3ZmYyMDAwIHsNCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCisgICAgICAgICAgICAgICAgICAg
ICAgICByZWcgPSA8MHgwIDB4NDdmZjIwMDAgMHgwIDB4MTAwMD47DQorICAgICAgICAgICAgICAg
ICAgICB9Ow0KKw0KKyAgICAgICAgICAgICAgICAgICAgc2NtaV9zaG1fMzogc3JhbUA0N2ZmMzAw
MCB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1l
bSI7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MCAweDQ3ZmYzMDAwIDB4MCAw
eDEwMDA+Ow0KKyAgICAgICAgICAgICAgICAgICAgfTsNCisNCisgICAgICAgICAgICAgICAgICAg
IHNjbWlfeGVuOiBzY21pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0g
ImFybSxzY21pLXNtYyI7DQorICAgICAgICAgICAgICAgICAgICAgICAgYXJtLHNtYy1pZCA9IDww
eDgyMDAwMDAzPjsgLyogWGVuIG1hbmFnZW1lbnQgc21jLWlkICovDQorICAgICAgICAgICAgICAg
ICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47DQorICAgICAgICAgICAgICAgICAgICAgICAg
I3NpemUtY2VsbHMgPSA8MD47DQorICAgICAgICAgICAgICAgICAgICAgICAgI2FjY2Vzcy1jb250
cm9sbGVyLWNlbGxzID0gPDE+Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNobWVtID0gPCZz
Y21pX3NobV8xPjsgLyogWGVuIG1hbmFnZW1lbnQgYWdlbnQgc2htZW0gKi8NCisgICAgICAgICAg
ICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgICAgICBhZ2VudHMgew0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Ow0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICNzaXplLWNlbGxzID0gPDA+Ow0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFn
ZW50QDAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInhlbixz
Y21pLWFnZW50IjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDA+Ow0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDI+Ow0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMD47DQorICAgICAg
ICAgICAgICAgICAgICAgICAgfTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudEAy
IHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2NtaS1h
Z2VudCI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwyPjsNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJtLHNtYy1pZCA9IDwweDgyMDAwMDA0PjsNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzI+Ow0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH07DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRAMyB7DQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLHNjbWktYWdlbnQi
Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8Mz47DQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwNT47DQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNobWVtID0gPCZzY21pX3NobV8zPjsNCisgICAgICAgICAgICAgICAg
ICAgICAgICB9Ow0KKyAgICAgICAgICAgICAgICAgICAgfTsNCisgICAgICAgICAgICAgICAgfTsN
CisgICAgICAgICAgICB9Ow0KKyAgICAgICAgfTsNCisgICAgfTsNCisNCitUaGUgYGB4ZW4sc2Np
YGAgc3VidHJlZSBpcyBvbWl0dGVkIGZyb20gRG9tMCdzIERULiBUaGUgaG9zdCBPU1BNIGNoYW5u
ZWwgaXMNCitjb3BpZWQgdG8gRG9tMCB3aGVuIFNDTUkgaXMgZW5hYmxlZCBmb3IgaXQuIFhlbiB1
c2VzIGl0cyBzZXBhcmF0ZSBwcml2aWxlZ2VkDQorbWFuYWdlbWVudCBjaGFubmVsIHRvIGNvbmZp
Z3VyZSB0aGUgb3RoZXIgYWdlbnRzLg0KKw0KK1RvIGRpc2NvdmVyIGEgc2Vjb25kYXJ5IGFnZW50
IElEIHRocm91Z2ggYGBCQVNFX0RJU0NPVkVSX0FHRU5UYGAsIG9taXQNCitgYHJlZ2BgIGFuZCB1
c2UgYSBub2RlIG5hbWUgd2l0aG91dCBhIHVuaXQgYWRkcmVzcy4gRm9yIGV4YW1wbGUsIHJlcGxh
Y2UNCitvbmx5IGBgYWdlbnRAMmBgIGFib3ZlIHdpdGg6DQorDQorLi4gY29kZS1ibG9jazo6IGR0
cw0KKw0KKyAgICBhZ2VudC1kb211IHsNCisgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLHNjbWkt
YWdlbnQiOw0KKyAgICAgICAgYXJtLHNtYy1pZCA9IDwweDgyMDAwMDA0PjsNCisgICAgICAgIHNo
bWVtID0gPCZzY21pX3NobV8yPjsNCisgICAgfTsNCisNCitQcm92aWRpbmcgYGByZWdgYCBza2lw
cyBtYXBwaW5nIGFuZCBwcm9iaW5nIHRoYXQgc2Vjb25kYXJ5IGNoYW5uZWwgZHVyaW5nDQoraW5p
dGlhbGl6YXRpb24uIEEgbWFsZm9ybWVkIGBgcmVnYGAgaXMgcmVqZWN0ZWQuIFhlbiBhbHdheXMg
ZGlzY292ZXJzIGl0cw0KK293biBtYW5hZ2VtZW50IGFnZW50IElELiBUaHVzIGBgQkFTRV9ESVND
T1ZFUl9BR0VOVGBgIGlzIG1hbmRhdG9yeSBmb3IgdGhlDQorbWFuYWdlbWVudCBjaGFubmVsIGFu
ZCBmb3Igc2Vjb25kYXJ5IGNoYW5uZWxzIHdob3NlIGBgcmVnYGAgaXMgb21pdHRlZC4NCitUaGUg
Zm9ybWVyIGZsYXQgc2Vjb25kYXJ5LWFnZW50IHByb3BlcnRpZXMgYXJlIHJlcGxhY2VkIGJ5IHRo
ZXNlIG5vZGVzLg0KKw0KKy4uIG5vdGU6Og0KKw0KKyAgICBOb3RlIHRoYXQgWGVuIGlzIHRoZSBv
bmx5IG9uZSBlbnRyeSBpbiB0aGUgc3lzdGVtIHdoaWNoIG5lZWQgdG8ga25vdyBhYm91dCBTQ01J
IG11bHRpLWFnZW50IHN1cHBvcnQuDQorDQorLSBUaGUgZHJpdmVyIGltcGxlbWVudHMgdGhlIFND
SSBzdWJzeXN0ZW0gaW50ZXJmYWNlIHJlcXVpcmVkIGZvciBjb25maWd1cmluZyBhbmQgZW5hYmxp
bmcgU0NNSQ0KKyAgZnVuY3Rpb25hbGl0eSBmb3IgRG9tMC9od2RvbSBhbmQgR3Vlc3QgZG9tYWlu
cy4gVG8gZW5hYmxlIFNDTUkgZnVuY3Rpb25hbGl0eSBmb3IgZ3Vlc3QgZG9tYWluDQorICBpdCBo
YXMgdG8gYmUgY29uZmlndXJlZCB3aXRoIHVuaXF1ZSBzdXBwb3J0ZWQgU0NNSSBBZ2VudF9pZCBh
bmQgdXNlIGNvcnJlc3BvbmRpbmcgU0NNSSBTTUMNCisgIHNoYXJlZC1tZW1vcnkgdHJhbnNwb3J0
IGBgW3NtYy1pZCwgc2htZW1dYGAgZGVmaW5lZCBmb3IgdGhpcyBTQ01JIEFnZW50X2lkLg0KKw0K
Ky0gT25jZSBYZW4gZG9tYWluIGlzIGNvbmZpZ3VyZWQgaXQgY2FuIGNvbW11bmljYXRlIHdpdGgg
RUwzIFNDTUkgRlc6DQorDQorICAtIHplcm8tY29weSwgdGhlIGd1ZXN0IGRvbWFpbiBwdXRzL2dl
dHMgU0NNSSBtZXNzYWdlIGluL2Zyb20gc2htZW07DQorICAtIHRoZSBndWVzdCB0cmlnZ2VycyBT
TUMgZXhjZXB0aW9uIHdpdGggYWdlbnQgInNtYy1pZCIgKGRvb3JiZWxsKTsNCisgIC0gdGhlIFhl
biBkcml2ZXIgY2F0Y2hlcyBleGNlcHRpb24sIGRvIGNoZWNrcyBhbmQgc3luY2hyb25vdXNseSBm
b3J3YXJkcyBpdCB0byBFTDMgRlcuDQorDQorLSB0aGUgWGVuIGRyaXZlciBzZW5kcyBCQVNFX1JF
U0VUX0FHRU5UX0NPTkZJR1VSQVRJT04gbWVzc2FnZSB0byBYZW4gbWFuYWdlbWVudCBhZ2VudCBj
aGFubmVsIG9uDQorICBkb21haW4gZGVzdHJveSBldmVudC4gVGhpcyBhbGxvd3MgdG8gcmVzZXQg
cmVzb3VyY2VzIHVzZWQgYnkgZG9tYWluIGFuZCBzbyBpbXBsZW1lbnQgdXNlLWNhc2UNCisgIGxp
a2UgZG9tYWluIHJlYm9vdC4NCisNCisNCitDb25maWd1cmUgU0NNSSBmb3IgRG9tMA0KK15eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eDQorU2V0IHRoZSBEb20wIFNDTUkgYWdlbnQgSUQgaW4gdGhlIGRl
dmljZSB0cmVlIHVzaW5nIHRoZSBYZW4gU0NNSSBjb250YWluZXIgdW5kZXIgYGAvY2hvc2VuYGAu
DQorQWRkIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgdG8gdGhlIGBgeGVuLHNjaWBgIG5vZGUu
IElmIHRoZSBwcm9wZXJ0eSBpcyBhYnNlbnQsIFNDTUkgc3RheXMNCitkaXNhYmxlZCBmb3IgRG9t
MCBhbmQgdGhlIFNDTUkgbm9kZXMgYXJlIHJlbW92ZWQgZnJvbSBEb20wIERULg0KKw0KKy4uIGNv
ZGUtYmxvY2s6OiBkdHMNCisNCisgIGNob3NlbiB7DQorICAgIHhlbiB7DQorICAgICAgcmFuZ2Vz
Ow0KKyAgICAgIHhlbl9zY21pX2NvbmZpZyB7DQorICAgICAgICBjb21wYXRpYmxlID0gInhlbixz
Y2kiOw0KKyAgICAgICAgeGVuLGRvbTAtc2NpLWFnZW50LWlkID0gPDA+OyAgLyogRG9tMCBhZ2Vu
dCBJRCAqLw0KKyAgICAgICAgLyogYWdlbnRzLCBzaGFyZWQgbWVtb3J5IGFuZCBzY21pX3hlbiBh
cyBzaG93biBhYm92ZSAqLw0KKyAgICAgIH07DQorICAgIH07DQorICB9Ow0KKw0KK1RoZSBIb3N0
IERUIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlzIGNvcGllZCB0byB0aGUgRG9tMCBEVCB1bm1v
ZGlmaWVkLiBIb3dldmVyLCBmb3IgRG9tMCBTQ01JDQorY29uZmlndXJhdGlvbiwgWGVuIHJlbGll
cyBvbiB0aGUgYGBhZ2VudHNgYCBjaGlsZCBhbmQgdGhlIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlk
YGANCitwcm9wZXJ0eSBmcm9tIHRoZSBgYHhlbixzY2lgYCBjb250YWluZXIgdW5kZXIgYGAvY2hv
c2VuYGAuIElmIHRoZSBgYC9maXJtd2FyZS9zY21pYGAgbm9kZSBpcw0KK21pc3Npbmcgb3IgZGlz
YWJsZWQsIG9yIGlmIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgaXMgbm90IHByb3ZpZGVkLCB0
aGUgRG9tMCBTQ01JIGFnZW50IHdpbGwgbm90DQorYmUgY29uZmlndXJlZC4NCisNCisuLiBub3Rl
OjoNCisNCisgIFRoZSBgYHhlbixkb20wLXNjaS1hZ2VudC1pZGBgIHZhbHVlIG11c3QgbWF0Y2gg
dGhlIGBgZnVuY19pZGBgIGFuZCBgYHNobWVtYGAgcGFpcmluZyBwcm92aWRlZCBieQ0KKyAgdGhl
IEVMMyBmaXJtd2FyZSBmb3IgRG9tMCAoZm9yIGV4YW1wbGUgaW4gdGhlIGBgL2Zpcm13YXJlL3Nj
bWlgYCBub2RlKS4NCisNCitDb25maWd1cmUgU0NNSSBmb3IgZm9yIGd1ZXN0IGRvbWFpbiB3aXRo
IHRvb2xzdGFjaw0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eDQorDQorKiBJbiBkb21haW4ncyB4bC5jZmcgZmlsZSBhZGQgKioiYXJtX3NjaSIqKiBv
cHRpb24gYXMgYmVsb3cNCisNCis6Og0KKw0KKyAgICBhcm1fc2NpID0gInR5cGU9c2NtaV9zbWNf
bXVsdGlhZ2VudCxhZ2VudF9pZD0yIg0KKw0KKyogSW4gZG9tYWluJ3MgeGwuY2ZnIGZpbGUgZW5h
YmxlIGFjY2VzcyB0byB0aGUgImFybSxzY21pLXNobWVtIiB3aGljaCBzaG91bGQgY29ycmVzcG9u
ZA0KKyAgYXNzaWduZWQgImFnZW50X2lkIiBmb3IgdGhlIGRvbWFpbiwgZm9yIGV4YW1wbGU6DQor
DQorOjoNCisNCisgICAgaW9tZW0gPSBbDQorICAgICAgICAiNDdmZjIsMUAyMjAwMSIsDQorICAg
IF0NCisNCisuLiBub3RlOjogSXQncyB1cCB0byB0aGUgdXNlciB0byBzZWxlY3QgZ3Vlc3QgSVBB
IGZvciBtYXBwaW5nIFNDTUkgc2hhcmVkLW1lbW9yeS4NCisNCisqIEFkZCBTQ01JIG5vZGVzIHRv
IHRoZSBEcml2ZXIgZG9tYWluIHBhcnRpYWwgZGV2aWNlIHRyZWUgYXMgaW4gdGhlIGJlbG93IGV4
YW1wbGUuDQorICBUaGUgImFybSxzbWMtaWQiIHNob3VsZCBjb3JyZXNwb25kIGFzc2lnbmVkIGFn
ZW50X2lkIGZvciB0aGUgZG9tYWluOg0KKw0KKy4uIGNvZGU6Og0KKw0KKyAgICBwYXNzdGhyb3Vn
aCB7DQorICAgICAgIHNjbWlfc2htXzA6IHNyYW1AMjIwMDEwMDAgew0KKyAgICAgICAgICAgY29t
cGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQorICAgICAgICAgICByZWcgPSA8MHgwIDB4MjIw
MDEwMDAgMHgwIDB4MTAwMD47DQorICAgICAgIH07DQorDQorICAgICAgIGZpcm13YXJlIHsNCisg
ICAgICAgICAgICBjb21wYXRpYmxlID0gInNpbXBsZS1idXMiOw0KKyAgICAgICAgICAgICAgICBz
Y21pOiBzY21pIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWkt
c21jIjsNCisgICAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwND47ICA8
LS0tIHNtYy1pZCBmb3IgYWdlbnRfaWQ9Mg0KKyAgICAgICAgICAgICAgICAgICAgc2htZW0gPSA8
JnNjbWlfc2htXzA+Ow0KKyAgICAgICAgICAgICAgICAgICAgLi4uDQorICAgICAgICAgICAgICAg
IH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyoqRGV2aWNlIHNwZWNpZmljIGFjY2VzcyBjb250
cm9sKioNCisNCitUaGUgWEVOIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBwZXJmb3JtcyAi
YWNjZXNzLWNvbnRyb2xsZXIiIHByb3ZpZGVyIGZ1bmN0aW9uIGluIGNhc2UNCitFTDMgU0NNSSBG
VyBpbXBsZW1lbnRzIFNDTUkgIjQuMi4xLjEgRGV2aWNlIHNwZWNpZmljIGFjY2VzcyBjb250cm9s
IiBhbmQgcHJvdmlkZXMgdGhlDQorQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TIGNvbW1hbmQg
dG8gY29uZmlndXJlIHRoZSBkZXZpY2VzIHRoYXQgYW4gYWdlbnRzIGhhdmUgYWNjZXNzIHRvLg0K
K1RoZSBIb3N0IERUIFNDTUkgbm9kZSBzaG91bGQgaGF2ZSAiI2FjY2Vzcy1jb250cm9sbGVyLWNl
bGxzPTwxPiIgcHJvcGVydHkgYW5kIERUIGRldmljZXMgc2hvdWxkDQorYmUgYm91bmQgdG8gdGhl
IFNDTUkgbm9kZSB1c2luZyBBY2Nlc3MgQ29udHJvbGxlcnMgYmluZGluZ3MgWzNdLg0KKw0KK0Zv
ciBleGFtcGxlOg0KKw0KKy4uIGNvZGUtYmxvY2s6OiBkdHMNCisNCisgICAgJmkyYzEgew0KKyAg
ICAgICAgICAgIGFjY2Vzcy1jb250cm9sbGVycyA9IDwmc2NtaSAwPjsNCisgICAgfTsNCisNCitV
c2UgZG9tYWluJ3MgeGwuY2ZnIGZpbGUgKioiZHRkZXYiKiogcHJvcGVydHkgdG8gYXNzaWduIFND
TUkgZGV2aWNlcyBmcm9tIHRvb2xzdGFjayB0byB0aGUgZ3Vlc3Q6DQorDQorOjoNCisNCisgICAg
ZHRkZXYgPSBbDQorICAgICAgICAiL3NvYy9pMmNAZTY1MDgwMDAiLA0KKyAgICBdDQorDQorLi4g
bm90ZTo6DQorDQorICAgIHhsLmNmZzoiZHRkZXYiIG5lZWQgY29udGFpbiBhbGwgbm9kZXMgd2hp
Y2ggYXJlIHVuZGVyIFNDTUkgbWFuYWdlbWVudCAobm90IG9ubHkgdGhvc2Ugd2hpY2ggYXJlDQor
ICAgIGJlaGluZCBJT01NVSkgYW5kIHBhc3NlZC10aHJvdWdoIHRvIHRoZSBndWVzdCBkb21haW4u
DQorDQorQ29uZmlndXJlIFNDTUkgZm9yIHByZWRlZmluZWQgZG9tYWlucyAoZG9tMGxlc3MpDQor
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQorDQorKiBh
ZGQgInhlbixzY2lfdHlwZSIgYW5kICJ4ZW4sc2NpLWFnZW50LWlkIiBwcm9wZXJ0aWVzIGZvciBy
ZXF1aXJlZCBEb21VICgieGVuLGRvbWFpbiIpIG5vZGUNCisNCis6Og0KKw0KKyAgICB4ZW4sc2Np
X3R5cGU9InNjbWlfc21jX211bHRpYWdlbnQiDQorICAgIHhlbixzY2ktYWdlbnQtaWQ9Mg0KKw0K
KyogYWRkIHNjbWkgbm9kZXMgdG8gdGhlIERyaXZlciBkb21haW4gcGFydGlhbCBkZXZpY2UgdHJl
ZSB0aGUgc2FtZSB3YXkgYXMgYWJvdmUgKHRvb2xzdGFjayBjYXNlKSBhbmQNCisgIGVuYWJsZSBh
Y2Nlc3MgdG8gdGhlICJhcm0sc2NtaS1zaG1lbSIgYWNjb3JkaW5nIHRvIHRoZSBkb20wbGVzcyBk
b2N1bWVudGF0aW9uLiBGb3IgZXhhbXBsZToNCisNCisuLiBjb2RlLWJsb2NrOjogZHRzDQorDQor
ICAgICAgc2NtaV9zaG1fMDogc3JhbUAyMjAwMTAwMCB7DQorICAgICAgICAgICAgY29tcGF0aWJs
ZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQorICAgICAgICAgICAgcmVnID0gPDB4MDAgMHgyMjAwMTAw
MCAweDAwIDB4MTAwMD47DQorICAgIC0+ICAgICAgICB4ZW4scmVnID0gPDB4MCAweDQ3ZmYyMDAw
IDB4MCAweDEwMDAgMHgwIDB4MjIwMDEwMDA+Ow0KKyAgICAtPiAgICAgICAgeGVuLGZvcmNlLWFz
c2lnbi13aXRob3V0LWlvbW11Ow0KKyAgICAgIH07DQorDQorKiBGb3IgU0NNSSBkZXZpY2UgYWNj
ZXNzIGNvbnRyb2wgY29uZmlndXJlIHBhc3MtdGhyb3VnaCBkZXZpY2VzIGluIHRoZSBndWVzdCBw
YXJ0aWFsIERUIGFjY29yZGluZyB0bw0KKyAgdGhlIGRvbTBsZXNzIGRvY3VtZW50YXRpb24gYW5k
IGVuc3VyZSB0aGF0IGRldmljZXMgU0NNSSBtYW5hZ2VtZW50IGhhcyAieGVuLHBhdGgiIHByb3Bl
cnR5IHNldDoNCisNCitVc2UgdGhlIGNvbXBsZXRlIFhlbiBTQ01JIGNvbmZpZ3VyYXRpb24gYWJv
dmUuIFJlbW92ZQ0KK2BgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgaWYgRG9tMCBkb2VzIG5vdCB1
c2UgU0NNSS4gVGhlIGd1ZXN0IHNlbGVjdHMgdGhlDQorc2Vjb25kYXJ5IGNoYW5uZWwgZGVzY3Jp
YmVkIGJ5IGBgYWdlbnRAMmBgOg0KKw0KKy4uIGNvZGUtYmxvY2s6OiBkdHMNCisNCisgICAgY2hv
c2VuIHsNCisgICAgICAgIHhlbixkb21haW5AMSB7DQorICAgICAgICAgICAgY29tcGF0aWJsZSA9
ICJ4ZW4sZG9tYWluIjsNCisgICAgICAgICAgICB4ZW4sc2NpX3R5cGUgPSAic2NtaV9zbWNfbXVs
dGlhZ2VudCI7DQorICAgICAgICAgICAgeGVuLHNjaS1hZ2VudC1pZCA9IDwyPjsNCisgICAgICAg
ICAgICAvKiBvdGhlciBkb21haW4gcHJvcGVydGllcyBoZXJlICovDQorICAgICAgICB9Ow0KKyAg
ICB9Ow0KKw0KKy4uIGNvZGUtYmxvY2s6OiBkdHMNCisNCisJCWkyY0BlNjUwODAwMCB7DQorICAg
ICAgICAgICAgLi4uDQorCQkJcmVnID0gPDB4MDAgMHhlNjUwODAwMCAweDAwIDB4MTAwMD47DQor
ICAgIC0+ICAgICAgICB4ZW4scGF0aCA9ICIvc29jL2kyY0BlNjUwODAwMCINCisgICAgLT4gICAg
ICAgIHhlbixyZWcgPSA8MHgwIDB4ZTY1MDgwMDAgMHgwIDB4MTAwMCAweDAgMHhlNjUwODAwMD47
DQorICAgIC0+ICAgICAgICB4ZW4sZm9yY2UtYXNzaWduLXdpdGhvdXQtaW9tbXU7DQorICAgICAg
ICB9Ow0KLS0gDQoyLjQzLjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470115.1678862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSA-00068o-Nk; Tue, 03 Nov 2026 15:29:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470115.1678862; Tue, 03 Nov 2026 15:29:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSA-00068g-KA; Tue, 03 Nov 2026 15:29:38 +0000
Received: by outflank-mailman (input) for mailman id 1470115;
 Tue, 03 Nov 2026 15:29:37 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGS9-0005w9-3H
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGS8-00Ba9X-Fx
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:36 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdcd-8faa-0a2a0a5109dd-0a2a450c8b10-38
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:36 +0100
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde0-f479-0a2a450c0019-d155dd29d431-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:36 +0100
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-48e00eee27dso2305976f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:36 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719776; x=1794324576; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=LlONDbpAh5pNQ0fTDZFEV0XEM4VMcy0VXMNJpoTJmPI=;
        b=qqd6yftQ2wDRqX1v2HfvFWlfQuaKMqQKg1siG50XeOFNViHO73Y1pVkiyJnFceHBER
         qjOIbWxTvLxfaju/gWjn3x6PNPPubTwzbpeaU8NSuzBRLYGCsLU/IY5y1cHJ1GEbpyEa
         +Q76Kfr46yrnz13XKeO3Ibhl9FOgCj8o5g9Iw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719776; x=1794324576;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LlONDbpAh5pNQ0fTDZFEV0XEM4VMcy0VXMNJpoTJmPI=;
        b=01jFpMLTblbw8sbKbkJxZFR/JGi5VHE9hms4r0B8ONIR6EzDIFKkdD+7W/7Tmnb3yr
         B3vMSeX5Jq7bgdG3L7ebRfWOauQSP2CxdPyZY5PbO/zUE5l3ervcHqibzuC+TA+G9y9Y
         rxtDHiCg4hnLbDih3HkWSYTWbJdTBpjyP3/Mx5fSuFEA6CfYSYfy3lKc9RDqYE90NeiF
         HHjXHWXYyweTj7Rjxr9buHo7CqNsy6y0OnSMqH9TJxlJI3NMLC5gqRasDYGSXWySqYdI
         OkL0flE03Z4XHTEs8eVNjKBf8sc8jQM2rmqtuKgrde77st2vM/3oZqUEUidYxCbLF/Xu
         Riug==
X-Gm-Message-State: APuU4Z9Uby/5glVaRerTzYhwOzRIMfL5X5DhLyuY4vfb5s0k0Dm5u8Ab
	2NN8EgamvEnsNX5YNeEIGSrxiS373kwoM3fUZywNYOOAW6yDMoUL0nbik/3jw+z69sn/nELGo6t
	+GfPtiAk=
X-Gm-Gg: AYBFou12QEADHgEzLCyICzmugRImxXjcMVSfT4kThMcFHel1Zyl3xaKcLylxOn95mBR
	j8kHJmO1Z4H7Zi1znatQjKn0zyy/0zGelTCRa3k+fUkgnsMC+V3nfvi3SdRQ8VGryGNcv0P4o/u
	b5HdyiCZbwnT8MWIBPFMy51H/CzAJMn9OdviA63JPL0nmulZLTDO1V49i7/ZeKPnLuCEiNxnD6I
	ZnRD3v6YDG6DU3wv+bQ8vn5aHhBtAkd2rPWf87zgRH9nUvavW9OHol+L5ekpeFSULUbaKG+Drgg
	8u28vKuyNzWlA7dao3wStm1qfdl33YUdofsR6KimNWafHXtO90iEMnQonkqv1e3BIgfEZP1FqyZ
	3aHy2FwZL7noxWqtiAVmefiKHwKs26PwE7RSn43GWBfRnYI7iQYS1D6utzS9Ywo8KQ12yUH0hEG
	lx0AUSprA48ZJknEtBLF9XrWho+KaV36O/Po81o3gzjDq88/AHV3PlVdlOEtHc8WsApTLvTBtwt
	6OJEyJEwk0GMSJVQIRnK0NbRhERp9miVt5qf+MxPB4CKdU5cr9/loGg+Ec7x4/OtGOTnvMGUZf5
	YqlqC0AJ7HekHa7vKZzC510ajYAFDJegm6iMAPp4gsJ9lTKCZ0Yoe1rIVAvkS/U8VkBMAJRnNw5
	QVi8A
X-Received: by 2002:a5d:5d0d:0:b0:48e:932:aef5 with SMTP id ffacd0b85a97d-48e6e302ad5mr28401206f8f.21.1793719775453;
        Tue, 03 Nov 2026 07:29:35 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Yehyeong Lee <yhlee@isslab.korea.ac.kr>,
	Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 1/6] xen/gnttab: Drop owner->grant_table check in _cache_flush()
Date: Tue,  3 Nov 2026 15:29:23 +0000
Message-Id: <20261103152928.2142176-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793719776-01CC3A5B-EBF076D4/10/78276251493
X-purgate-type: spam
X-purgate-size: 1724

The "owner && !owner->grant_table" case needs a put_page() in it's error
handling.

In Xen 4.20 and earlier, this was addressed by XSA-520.  Since the addition of
CONFIG_HAS_GRANT_CACHE_FLUSH in Xen 4.21, this path is only reachable on ARM,
and system domains on ARM do not own any memory.

Therefore delete the check, rather than inserting unreachable error handling.

No functional change.

This issue was also independently reported by Yehyeong Lee as the security
team was already working on XSA-519/520.

Reported-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 5e79c012b695..2285c4aee8d6 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3633,7 +3633,7 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
 
     page = mfn_to_page(mfn);
     owner = page_get_owner_and_reference(page);
-    if ( !owner || !owner->grant_table )
+    if ( !owner )
     {
         rcu_unlock_domain(d);
         return -EPERM;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470117.1678880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSC-0006Y2-5Z; Tue, 03 Nov 2026 15:29:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470117.1678880; Tue, 03 Nov 2026 15:29:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSC-0006Xv-2X; Tue, 03 Nov 2026 15:29:40 +0000
Received: by outflank-mailman (input) for mailman id 1470117;
 Tue, 03 Nov 2026 15:29:39 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGSA-00069N-Uy
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGSA-007igP-Bs
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:38 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdde-2eae-0a2a0a5409dd-0a2a450ba9e2-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:38 +0100
Received: from [209.85.218.52] (helo=mail-ej1-f52.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde2-b7e8-0a2a450b0019-d155da34b95c-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:38 +0100
Received: by mail-ej1-f52.google.com with SMTP id
 a640c23a62f3a-c43373ae89aso645546766b.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:38 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719778; x=1794324578; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=jqcJnOexiDNGMSUvzMhvIFHRbCx2t1wbpBkIduHSZ8E=;
        b=Oh5DlJEsaOuLz7zpcFedGp9Fmd2YqTYT3Z8Nal5PgT0DzfQf1pV3WshAtH+p/Z3qaB
         6/rEDFV4P8H72gr3Avs9WLZphZEaZXkCkUkJE0bu9LnA6KBE0oWY0pNdVuuFpMlG0dV+
         t7m9MV7AyBcYw6HzoF5U+HGQFlvrz+DdVlILg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719778; x=1794324578;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=jqcJnOexiDNGMSUvzMhvIFHRbCx2t1wbpBkIduHSZ8E=;
        b=IjQFIzL13B889rBGo0zL9vLakCGdiMr4gfGwDwvnHwhuEheYOSygXFXknDdVgj266U
         XTkgM3HSMMNJqeew7NJSmdzhiUG12Fe+WL/FXgBlkrpld1zFWQ3VhzVx1S6XwC1kJJNR
         6uhJA0yXaQirv5j06xpxocqKEBRpp2vifrKBPr9lualO4b6xx+6GCt3Q0i2KZBaXheW7
         EYYr9OSblvs5cmVFjxyf6AbE+oVopa4QuuLq0hU9rQNHT8Ft5LXm4AK+Yo+tTxL/JwDO
         G4seUxfOKK0fFcCfhceL36p/UeHH1yu8SsOS4A+WFBVqpGA4DZbUVu3JRbendNsnjrZG
         032g==
X-Gm-Message-State: APuU4Z+EcQsWtrjn97cjb925m3z0M2hgWCWNXUgKCO/zcz3bP8DeZrFQ
	WYDsnkuLnEhERQ8StnTe9s/ga0eYtwtek7t1Y6wl3a6Z1NWAqvA1hOFoJIAbbVqN+08eUkUocqI
	Sc+k20/c=
X-Gm-Gg: AYBFou35JOGnIEHfYh4mWpweJ2fAP138IsD8ZtFRs0SP/nq87Drcktt/jEnsKWgn7Er
	YBEBRqqcZVCOGSrJClKAAyGEjV0TaIwaT2F2xXAz4S+lnETuIzoAdq0mXIaLVLDu2E1BxPpHZyQ
	f9gcrV6GZeFL2WJziaw262LaRoyflZ0YGZ/SJHiBQu6VYzS6MR118rFcVX0IHnjS4Elcvb3UsC6
	ZpxLO8B3PfaPm4J1kqc/LhBvq0OVAWRnDzuuJB9+Zr35dDXVIvTCEYBZ2yY9sISEwPuG0cERZCa
	gRK0gZqAaTrA+z6wEM9L6CEVgKoPxCoE96yIS5F5Qwao7nMy3MDCVR0JSOyW22eRAsQKIlG7WlM
	ijIm60OnsC2A7Dg+spV6oHyMWADAwbrdj40g8QJmDRPIKRb/0/xg97huJqNpmcpC6Ag2MMqchBk
	IPfMlPhVeniYA8HJq92NXXRlOiAut+8wD8CNO8EN2BB8zUOHb1VImWtr2OfHMG2tgF8GKNDE1E7
	HW77fXmyoR97eO2esno/onvFYCwfqNS+LQWyd7f6MEhCTeycFmqzzB2tDcyGrPuL+CmSldWtn4m
	XeUbCXzAIpnR1VZYKFJns8bKMR5aXbc8w5uhttZUYewp0NgkZY+gpQJX9dn1LdjkdUgg7QFvCaS
	S1Wg=
X-Received: by 2002:a17:907:dab:b0:c40:dfec:50b6 with SMTP id a640c23a62f3a-c4ca7b83f7emr1198124266b.49.1793719777384;
        Tue, 03 Nov 2026 07:29:37 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 3/6] xen/gnttab: Remove explicit rcu_lock_current_domain()
Date: Tue,  3 Nov 2026 15:29:25 +0000
Message-Id: <20261103152928.2142176-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793719778-A9CC79EA-FE1F8462/10/78276251493
X-purgate-type: spam
X-purgate-size: 2798

rcu_lock_current_domain() is always a nop, while rcu_unlock_domain() is not.

GNTTAB ops swap_grant_ref and cache_flush are the only two paths in Xen which
explicitly RCU lock themselves.  Drop this behaviour.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
 xen/common/grant_table.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index d42bd5fb83fd..f4ec7524140a 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3498,7 +3498,7 @@ gnttab_get_version(XEN_GUEST_HANDLE_PARAM(gnttab_get_version_t) uop)
 static int16_t
 swap_grant_ref(grant_ref_t ref_a, grant_ref_t ref_b)
 {
-    struct domain *d = rcu_lock_current_domain();
+    struct domain *d = current->domain;
     struct grant_table *gt = d->grant_table;
     struct active_grant_entry *act_a = NULL;
     struct active_grant_entry *act_b = NULL;
@@ -3573,8 +3573,6 @@ swap_grant_ref(grant_ref_t ref_a, grant_ref_t ref_b)
         active_entry_release(act_a);
     grant_write_unlock(gt);
 
-    rcu_unlock_domain(d);
-
     return rc;
 }
 
@@ -3622,22 +3620,16 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
     if ( cflush->op & GNTTAB_CACHE_SOURCE_GREF )
         return -EOPNOTSUPP;
 
-    d = rcu_lock_current_domain();
+    d = current->domain;
     mfn = maddr_to_mfn(cflush->a.dev_bus_addr);
 
     if ( !mfn_valid(mfn) )
-    {
-        rcu_unlock_domain(d);
         return -EINVAL;
-    }
 
     page = mfn_to_page(mfn);
     owner = page_get_owner_and_reference(page);
     if ( !owner )
-    {
-        rcu_unlock_domain(d);
         return -EPERM;
-    }
 
     if ( d != owner )
     {
@@ -3647,7 +3639,6 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
         if ( IS_ERR_OR_NULL(act) )
         {
             grant_read_unlock(owner->grant_table);
-            rcu_unlock_domain(d);
             put_page(page);
             return act ? PTR_ERR(act) : 1;
         }
@@ -3691,7 +3682,6 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
 
     unmap_domain_page(v);
     put_page(page);
-    rcu_unlock_domain(d);
 
     return ret;
 }
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470118.1678889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSD-0006lI-DM; Tue, 03 Nov 2026 15:29:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470118.1678889; Tue, 03 Nov 2026 15:29:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSD-0006l6-A7; Tue, 03 Nov 2026 15:29:41 +0000
Received: by outflank-mailman (input) for mailman id 1470118;
 Tue, 03 Nov 2026 15:29:39 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGSB-0006Sk-Rj
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGSB-007igP-8Z
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:39 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdcc-2eae-0a2a0a5409dd-0a2a4508e184-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:39 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde3-f659-0a2a45080019-d155802bf0b5-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:39 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a35d5d4a20so47974865e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:39 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719779; x=1794324579; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=MDGy6hwgwHq8pad19ORCb8mC88V7O5aQmcoI2A6x98Q=;
        b=U+b8X8pRqqMNx4E1TKPy/u6B9dTRbqQBNUfo/OaQPPZw0HLjyksls9WJVOGaNo2Ir4
         SiqrZsbNMu6Jp/c94W3Z2LVygu7HQn8jn5xYpVtm32wz2vLJ/6U0YS80VIcfr5q5oKAP
         wcPeuh8fknP1OWKjcRL/pcknGE6ACdRJclbcg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719779; x=1794324579;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=MDGy6hwgwHq8pad19ORCb8mC88V7O5aQmcoI2A6x98Q=;
        b=Cn7NtgwAyIggeXviPMfQWkWyd3AvT9HJ2UhPXkSnqdonStMHsXjG5Ry8NHmnqfLT94
         g9b9mpM/pFcdRCuj+8vjs+enDWOf2Zd/ULUN4PdiY7cgQL5dWgl2dmau4R58wJF/daSu
         Ru8DvDlr/ObflhluZmLRv6TvQ1NMaX25hiX4dGkbwA3KrTnnMkwBvwmTByetsXg4ruim
         BuoXfDbqbcq5xOMIGBRpzr3AiASHQSxZUSa4chuzdCvCjvohxo8dQg1uwrc8LDbORLEi
         BeB2KRVKsSaDAfat59RGDRZxKIthuIYj2+C8sf0RblEks9OrbPToBHBnuikL4MrPYsk4
         4HDQ==
X-Gm-Message-State: APuU4Z/YiDeey8iAJ3JdvjOEcRodxC4mpXIgJbSA5rHDs39/YwYW0BXB
	f7i9t6HwVFaq36qNWuMaEjsiewT4+d0mEhIGTLzVx2mF2tfLXyMqAM/hug1FAph176kIS0FQL3X
	z4QUymu8=
X-Gm-Gg: AYBFou2q21JIAfnf6ZXKM110A71vu6AwEYPViEuqPN6wvrIV0BQfJ+ooyJQ/ENLo6oo
	r6NIfVvcOdHtAHBYHLw/og7doPirM40aNu4Bs6B6qg8KABei5h6XdIs7VScciviUsIQf3Jd0egD
	7rRJgWFTaoqLgWm55Sll+qidkP1045pTXo51ej0qS+0tnCrA+gJnf/s/mthN8NAyhFSZy4J1AZS
	CE6psuEJXS5xV1c4+B4AMWz9yeRHfirsiRx+gu3FUFaymR2adGjPfNLdD7IS82TcWHuCPQeQKhw
	SvLdSc10h43bgnSpUGyRPlIdt8jiFOjgwcUx008bY7keG0oP74WHfRbNRql99/svisMBxAaNIQt
	HTKcYD1A0DDB8+VQdTGMon/cvYDNHuDoRHbJuWXv+r1fkKGea9s70+qxG8KlcI9UD0/cX8Uhe3D
	F2hOy6ZUAyQxyiViTUpgolEMvRhAIRCR64FxNNTNfQqIJ4SVB82xoymg2FSq4s6pBVdcJB1/i+x
	I6Fkpm8LCKJG1fOmTLcSZRW4GZ0ao9wf3uFXXLkqS8PPuTyi+LFCISwGdvT0TeDNM9xqJKkYoiZ
	6YQJwXzpOh18KeWPRdhHMbYxQzQAaC8dUL3AtsAobjI4zUwkSF6t8AyG9zI9rb4rMKiYLzqS3uT
	GRxkqgM/RraEpWYS0WL7Lsbl9
X-Received: by 2002:a05:600c:470d:b0:4a7:9006:b176 with SMTP id 5b1f17b1804b1-4ac17471285mr304579455e9.7.1793719778359;
        Tue, 03 Nov 2026 07:29:38 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 4/6] xen/gnttab: Document how _cache_flush() works
Date: Tue,  3 Nov 2026 15:29:26 +0000
Message-Id: <20261103152928.2142176-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793719779-DF6D687B-FB76ABCA/10/78276251493
X-purgate-type: spam
X-purgate-size: 1387

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
 xen/common/grant_table.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index f4ec7524140a..4cc23f9231e6 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3598,6 +3598,15 @@ gnttab_swap_grant_ref(XEN_GUEST_HANDLE_PARAM(gnttab_swap_grant_ref_t) uop,
 }
 
 #ifdef CONFIG_HAS_GRANT_CACHE_FLUSH
+/*
+ * Issue a cache flush operation on memory owned by the domain, or a mapped
+ * grant from another domain.  The caller must pass in cur_ref = 0 initially,
+ * and preserve the value across continuations.
+ *
+ * Returns: 0 for success
+ *          1 for a continuation while searching the mapped grants
+ *     -errno for error
+ */
 static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
 {
     struct domain *d, *owner;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470119.1678898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSE-0006zq-Qi; Tue, 03 Nov 2026 15:29:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470119.1678898; Tue, 03 Nov 2026 15:29:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSE-0006zb-Mm; Tue, 03 Nov 2026 15:29:42 +0000
Received: by outflank-mailman (input) for mailman id 1470119;
 Tue, 03 Nov 2026 15:29:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGSD-0006jS-EP
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGSC-0040rM-KI
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:40 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdcd-bab6-0a2a0a5309dd-0a2a4509d89c-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:40 +0100
Received: from [209.85.218.44] (helo=mail-ej1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde4-be1a-0a2a45090019-d155da2cb5f2-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:40 +0100
Received: by mail-ej1-f44.google.com with SMTP id
 a640c23a62f3a-c414e5d282eso516700766b.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:40 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719780; x=1794324580; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=YXonRJiUpIIQUGfPHULNa0+riN0YTsjAc2+s6FHrnD0=;
        b=Z4jsgKUCt1nv4RpXDOqlxCB6LJCLwIfUv7rZF95n7suf2jP85wjXv2679FoYhszdYg
         T8/RYMiR0TEpDdIQAPQBTWk/ONdhCZaS7nXKnNHwEDEAUU9XGbxd3phu3TG4K3fRElG2
         i0h9eePot8KFdlni9E6l5UOFBW2+98b/94ZlU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719780; x=1794324580;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=YXonRJiUpIIQUGfPHULNa0+riN0YTsjAc2+s6FHrnD0=;
        b=CeLRrQJ1NN7WIX+qYVSWJmuseua4LikYkNssPrmtN51i+VaTzs01RT3T3uZt9mKves
         bIdKnu6uEeFTJyQRKs0pLMDlwBCkqjQN1ZtTWtjzpjgpAd/8hYRQiyd6HaZKs+XpBeUO
         K8cFOOAT6etfzPCpydqlrwR1FkNzKEv+u+VpJR3RPKBNhM3s2q0a6/HXirs3xoBY6U6V
         eEmnoXTf9d6PXh8XHD3EiI1ILzqFUKk5dQ17oShUftr0xlrJ1ZQobRCnB8aGAkd1CfcG
         ++D0iXgE5Xke1aCsvwbCqeAJ6Nr+5VhVEddEcroGXVKKHXFE/mPFpCnT3tiG08odmJSb
         fewg==
X-Gm-Message-State: APuU4Z9BIsfHTEUKyDgmBNnddeOef6jOrc/Cg9AtqtoUMD0CitB+4Asn
	8ZkhVMnb5A0IwO17OfpuNjCa+w4ub6TKjgu9lwWsiGaZ3mF7SCfYFrKTABoNAhgItORq1nAIrAq
	QQBD9M9U=
X-Gm-Gg: AYBFou0UkbOtNAWMQ9CcUzAmJl+MscDXIqaIWvSr07VV9ocv+nqT+4NxiR8Rq74L1lo
	dxrEPCSmWoyEx4V7ElIfQGw/IWwwimxeqVXKhsD3GPw9mSPneqGboR9OBsggPLSGz0nY9PRoUHK
	6p9rNsEAdiOhnaEZ0DY69ICkJDxhj+A1kdn6w6bJEIlBAMNXtjb5zp6PBfu+14EAOwd/goHbd+x
	HO7GzeCMPAxkvVNw1bjwKQ+Es/J3zdb6WQjZI2DovMzigrlfTvf66QBF7cTvbQmEi/m7Rk1HNfr
	UqZTxq8az1QVy79TtdtY4lxgpXjSyQRsMIaEz3IfJScGlnT4VzPZskg1WDp9HU8JXGdou9YJwAH
	Hxy5exOPt02oip4MtoMOzRdV8pkXDHhjrQbATsLrAaI5P9U8uFn6Ip8jnD4ZUqIvB2cNcyPKCw0
	EwiXJOePxv7rGluiyqNSjJVi+gdKV1rd2uYJscLc7eILyTGul2hCn4cD0qNP/K7G1BCsueprsn6
	T4g1Z84VAlpRLVDH5bHmz/sDCKJdzO9ewGpFfBDz/VBLgHMEvzlgoF5YoW5Ils6njzrbRJIbK5p
	Be1+qj7hddXqU3LtekLZoqNn6RQj479Nvgiq9kWJZ2oHGG1vgXwLk9t6z/4keybYIkFF5r5CVKH
	4X0e7Tv1z3mE5eRk1/YV4Sh4U
X-Received: by 2002:a17:906:99c9:b0:c2d:c247:5400 with SMTP id a640c23a62f3a-c4ca7b405c5mr1089032866b.27.1793719779322;
        Tue, 03 Nov 2026 07:29:39 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 5/6] xen/gnttab: Fold error handling in _cache_flush()
Date: Tue,  3 Nov 2026 15:29:27 +0000
Message-Id: <20261103152928.2142176-6-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793719780-FC610034-42FF5581/10/78276251493
X-purgate-type: spam
X-purgate-size: 1656

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
 xen/common/grant_table.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 4cc23f9231e6..d453c38556fc 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3647,9 +3647,8 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
         act = grant_map_exists(d, owner->grant_table, mfn, cur_ref);
         if ( IS_ERR_OR_NULL(act) )
         {
-            grant_read_unlock(owner->grant_table);
-            put_page(page);
-            return act ? PTR_ERR(act) : 1;
+            ret = act ? PTR_ERR(act) : 1;
+            goto gnt_unlock;
         }
 
         /*
@@ -3683,13 +3682,15 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
     else
         ret = 0;
 
+    unmap_domain_page(v);
+
     if ( d != owner )
     {
         active_entry_release(act);
+    gnt_unlock:
         grant_read_unlock(owner->grant_table);
     }
 
-    unmap_domain_page(v);
     put_page(page);
 
     return ret;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470120.1678908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSG-0007E7-4Y; Tue, 03 Nov 2026 15:29:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470120.1678908; Tue, 03 Nov 2026 15:29:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSF-0007Dy-W7; Tue, 03 Nov 2026 15:29:44 +0000
Received: by outflank-mailman (input) for mailman id 1470120;
 Tue, 03 Nov 2026 15:29:41 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGSD-0006nn-Qr
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGSD-00Ba9X-6p
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:41 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fddb-8faa-0a2a0a5109dd-0a2a450aa786-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:41 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde5-f2d2-0a2a450a0019-d1558029e0cd-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:41 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a3517554f7so32674355e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:41 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719780; x=1794324580; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=OjGu8aNJSa9hiinv/RFb747MCnsH5+RZhfhHhZ40tAg=;
        b=C3llkoZ/OjuUMcB5+1TOb9A4rQfR/yLzTUR8zT4SuWpHi8JxSIrQ4z8SPO0PJAxMHz
         XuWleRUifPeuk0CSvdhsw2ipKFxynyZ1lfOwMpAysgagKNBwwK7TzUdRQA2Ht8sLCMWH
         eswd54S06l+3FRXtKLJwfjusXSldkCeDP6JAA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719780; x=1794324580;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=OjGu8aNJSa9hiinv/RFb747MCnsH5+RZhfhHhZ40tAg=;
        b=gs8dR2lOMAj0SLX8m+X1duHF4uE4HQuJEPzt4She0zBHmGeXfUHOfeHy7rR5MPy6UI
         /MxViJ0soAB0TKHPEJBM8rpZT09b7ipfjM4XG80634Qdld+lNaooK239rZ6mU5lI1HYO
         yGmmlvj+cyE2cA+jYdvo81IEO7g5y6yg8uWTgMXFylZFJWOsv9mNYuq1WlwL7OQWKyxF
         ojMq0SI1xnIYG9TpETGK83l69Ps70YtHOey4SJA8XoVJQI/TSyKFU7kZpkdMe9g+Xovg
         jJhKpQaMNcCWcFCuO+8IEEl2uE7HibyNwyzzxTMefYg7XpjfLehzhPaGOerxCGyUzVpw
         mstQ==
X-Gm-Message-State: APuU4Z+jVU+mzQwZXfzIcQf7FzVr6jkqiO48MYswEGKNstcAuEVIbUhi
	lXa6nTKk8G3A2CM2zj6rkus4nAzqgvkSMB7bjv23uQ03+a7+yY6lX2malqYHTfEj9h8NAJQDVkC
	icBp3RB8=
X-Gm-Gg: AYBFou0UCfx1Jb9MsX5fVZmNnv838gT4Ma0601Mtfyd3wRVzQ9l2KIQVth8xz6wwvaa
	HCLUd+6lBl6cGBdv9f9Qv6PNWAtv7O4Y5nS63Y8MrWNevuJmcep5/5/u3UuiVuWock3cUyY1nno
	8tMBCw+HoHWFJksuBKl6QNFovKaDjqS3JNJjsPU7XefSjqPT4MluGwvdocyE22wJsz78xIwBjJi
	l0Vdg1StJ2V3jFsZK7HiOQ+AeCZVDJHo7su3ITORSQk7OCXNPA4qdH5NOMPgpPZGKloQYbfxHsQ
	qRVLMczNAbKjdBWKWyapcUeQUagJLoD6p0IoAf3hGdnZ1UJ8AitA1+g+bG9SmciZibN7HO5SKRA
	1EU39PtisR9nNtTI5MhfqsOjvPSUV4u22HZdkmbH9/h8OY7vceaLZn9fBeqSW7aU3LfOQyDxpk9
	ksyAwTcGBU9Q3aCSQ34ZzoSER6rxNfh9G6txgZmzsQCCUpT26+4AyJzApZs0NJWSc26zcWdn/ia
	PTYFkLN/pAYfe+77m75tXbeRYjV+z8TPQ+vGrXBXo+HcKbFJoPTD/kZvuFJMxuXFH5WNkdWvSJk
	HNTwouWus99DtPjgK4dljKakZc0OsejRT44iaszS1DWJboJs5sQfqJf8wxD4hHf0bcxCjGhyaFd
	3ILzuxrIxG2mgq+gUV/ZgMzvP
X-Received: by 2002:a05:600c:4e50:b0:4a9:2a92:231f with SMTP id 5b1f17b1804b1-4ac16bc461emr311760895e9.7.1793719780169;
        Tue, 03 Nov 2026 07:29:40 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 6/6] treewide: Make {invalidate/clean}_dcahce_va_range() void
Date: Tue,  3 Nov 2026 15:29:28 +0000
Message-Id: <20261103152928.2142176-7-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793719781-514C7CFC-829990DE/10/78276251493
X-purgate-type: spam
X-purgate-size: 6429

Precisely two functions - RISC-V's flush_page_to_ram() and ARM's
_cache_flush() - check the return value of these functions, yet all
implementations return success, and ARM documents this as a requirement.

Make them void and simply the callers which care.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
CC: Baptiste Le Duc <baptiste.le-duc@vates.tech>
---
 xen/arch/arm/include/asm/page.h   | 20 +++++++-------------
 xen/arch/riscv/include/asm/page.h | 10 +++-------
 xen/arch/riscv/mm.c               |  4 +---
 xen/common/grant_table.c          | 11 +++++------
 4 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/xen/arch/arm/include/asm/page.h b/xen/arch/arm/include/asm/page.h
index 6da4745736a2..b719c2ed4c12 100644
--- a/xen/arch/arm/include/asm/page.h
+++ b/xen/arch/arm/include/asm/page.h
@@ -165,13 +165,13 @@ static inline size_t read_dcache_line_bytes(void)
  * if 'range' is large enough we might want to use model-specific
  * full-cache flushes. */
 
-static inline int invalidate_dcache_va_range(const void *p, unsigned long size)
+static inline void invalidate_dcache_va_range(const void *p, unsigned long size)
 {
     size_t cacheline_mask = dcache_line_bytes - 1;
     unsigned long partial_head;
 
     if ( !size )
-        return 0;
+        return;
 
     /* Passing a region that wraps around is illegal */
     ASSERT(((uintptr_t)p + size - 1) >= (uintptr_t)p);
@@ -208,17 +208,15 @@ static inline int invalidate_dcache_va_range(const void *p, unsigned long size)
 
  done:
     dsb(sy);           /* So we know the flushes happen before continuing */
-
-    return 0;
 }
 
-static inline int clean_dcache_va_range(const void *p, unsigned long size)
+static inline void clean_dcache_va_range(const void *p, unsigned long size)
 {
     size_t cacheline_mask = dcache_line_bytes - 1;
     unsigned long idx = 0;
 
     if ( !size )
-        return 0;
+        return;
 
     /* Passing a region that wraps around is illegal */
     ASSERT(((uintptr_t)p + size - 1) >= (uintptr_t)p);
@@ -231,18 +229,16 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
             idx += dcache_line_bytes, size -= dcache_line_bytes )
         asm_inline volatile ( __clean_dcache_one(0) : : "r" (p + idx) );
     dsb(sy);           /* So we know the flushes happen before continuing */
-    /* ARM callers assume that dcache_* functions cannot fail. */
-    return 0;
 }
 
-static inline int clean_and_invalidate_dcache_va_range
-    (const void *p, unsigned long size)
+static inline void
+clean_and_invalidate_dcache_va_range(const void *p, unsigned long size)
 {
     size_t cacheline_mask = dcache_line_bytes - 1;
     unsigned long idx = 0;
 
     if ( !size )
-        return 0;
+        return;
 
     /* Passing a region that wraps around is illegal */
     ASSERT(((uintptr_t)p + size - 1) >= (uintptr_t)p);
@@ -255,8 +251,6 @@ static inline int clean_and_invalidate_dcache_va_range
             idx += dcache_line_bytes, size -= dcache_line_bytes )
         asm volatile (__clean_and_invalidate_dcache_one(0) : : "r" (p + idx));
     dsb(sy);         /* So we know the flushes happen before continuing */
-    /* ARM callers assume that dcache_* functions cannot fail. */
-    return 0;
 }
 
 /* Macros for flushing a single small item.  The predicate is always
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index f9e59e61de30..770410085fd9 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -196,23 +196,19 @@ static inline bool pte_is_superpage(pte_t p, unsigned int level)
     return (level > 0) && pte_is_mapping(p);
 }
 
-static inline int clean_and_invalidate_dcache_va_range(const void *p,
-                                                       unsigned long size)
+static inline void
+clean_and_invalidate_dcache_va_range(const void *p, unsigned long size)
 {
 #ifndef CONFIG_QEMU_PLATFORM
 # error "should clean_and_invalidate_dcache_va_range() be updated?"
 #endif
-
-    return 0;
 }
 
-static inline int clean_dcache_va_range(const void *p, unsigned long size)
+static inline void clean_dcache_va_range(const void *p, unsigned long size)
 {
 #ifndef CONFIG_QEMU_PLATFORM
 # error "should clean_dcache_va_range() be updated?"
 #endif
-
-    return 0;
 }
 
 static inline void invalidate_icache(void)
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 6f7dcd10b2c6..78f23392cc35 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -618,9 +618,7 @@ void flush_page_to_ram(unsigned long mfn, bool sync_icache)
 {
     const void *v = map_domain_page(_mfn(mfn));
 
-    if ( clean_and_invalidate_dcache_va_range(v, PAGE_SIZE) )
-        BUG();
-
+    clean_and_invalidate_dcache_va_range(v, PAGE_SIZE);
     unmap_domain_page(v);
 
     if ( sync_icache )
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index d453c38556fc..eebf8850d062 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3673,14 +3673,13 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
     v = map_domain_page(mfn);
     v += cflush->offset;
 
+    ret = 0;
     if ( (cflush->op & GNTTAB_CACHE_INVAL) && (cflush->op & GNTTAB_CACHE_CLEAN) )
-        ret = clean_and_invalidate_dcache_va_range(v, cflush->length);
+        clean_and_invalidate_dcache_va_range(v, cflush->length);
     else if ( cflush->op & GNTTAB_CACHE_INVAL )
-        ret = invalidate_dcache_va_range(v, cflush->length);
-    else if ( cflush->op & GNTTAB_CACHE_CLEAN )
-        ret = clean_dcache_va_range(v, cflush->length);
-    else
-        ret = 0;
+        invalidate_dcache_va_range(v, cflush->length);
+    else /* cflush->op & GNTTAB_CACHE_CLEAN */
+        clean_dcache_va_range(v, cflush->length);
 
     unmap_domain_page(v);
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470116.1678867 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSB-0006BF-0i; Tue, 03 Nov 2026 15:29:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470116.1678867; Tue, 03 Nov 2026 15:29:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGSA-0006B7-RU; Tue, 03 Nov 2026 15:29:38 +0000
Received: by outflank-mailman (input) for mailman id 1470116;
 Tue, 03 Nov 2026 15:29:38 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOGSA-00065H-Ak
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGS9-007igP-Nd
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:37 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdd4-2eae-0a2a0a5409dd-0a2a4501856c-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:37 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fde1-5984-0a2a45010019-d155802ba98b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:37 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a2072b9832so5261365e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:37 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719777; x=1794324577; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=wbHE2rBAxfkr80jQZ87SabR6WnxTq5XMFgXbtGAFDsI=;
        b=K1TV/iqX+aST+wPfXTm9zgmJ0B6zqTcB3Y7MqxtzPebxDUXfuG/qAPTMrkXwmxZrma
         g4XN9ugt6oWBvbjVm1HfgMpjZBJDnyJyimQzAPaU5yIPmzMZGeEt853qa5I7R5vK2TFV
         ISMUN4z0smZ7rEEbsBBLrd+8Bo9lGowOCcuS0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719777; x=1794324577;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=wbHE2rBAxfkr80jQZ87SabR6WnxTq5XMFgXbtGAFDsI=;
        b=nGw5lhmHseHers65yiXqQkkclZzTPIJYlw9wdNyOMMyZxYhgvQMWIw19O+zvKpa7NT
         piKXevWgoDeYLXdKnBl/XGlgabdn2UXueu78+XkALXEA8gLTn4UweBqodXbjmbH1tnRf
         h20M5C5laQ/ZxQNANP5JSOpsDRyiPi5p9h6Lo0PUPWmbnUr5P46Gs5Bo8sdYArdCzt1V
         YIfuR24gq5JIXWnK/kRR6bmyqP2ycI0gyuYFzMs3oaBGRd4EOmVX6CX1TiWDS+MQ1u+t
         2bnbnw1gKJZVebSAS+oTsSglg0sNdIPUDuZQrg8OVi6klbX2zhKMlEdoScsApBmBJugb
         K0mA==
X-Gm-Message-State: APuU4Z9IauP5DZzRJcogzo0E8pzJ7Zg8pXFlvjf4jz4sNl1NCyoxJaRO
	NnHA7kZf5fnqYhYSrmTkbiQ1J+UiLo1wn1O5j/lTVF6HHKHYqqwKG4BElypRire5sBLxND8Uf5p
	qbHIQjWY=
X-Gm-Gg: AYBFou2kdPzNh4ttg84J6S0Ne/8TcWL67KSHzIkg2Up9qa+a2aiuZ08BL2dRYN1vsgh
	SJq+Yiw0DOPvEn9gsBM9mUs7pSHbgxvE/sbSZ6Wsnjd1QuRZE8kb75rCSARWVUoO0O2QrAod8du
	DDG6sONtU3ySu3Br1G4GyWPILDqD+xYZ+wTJLLi9yh+0FHniOJ5jc4+h4xGn87LUgH+kbvne090
	QyL4alXj/l4Z+ZBoSafEojyG8sj6ZtOUKh512SDuJJw8k1UqJpNiPD29EJceXpefINdIom+MrjM
	icCG2Lx2OtKQ3kQsah9XuoA9fq+ZQqbant49ifFnDYHL9ySWxyQCcQe8jdvBBDfVEzWDc6fOdB7
	50OpnQQx/oNs51Iddo2J/m9HdeoqH9Aq5TVD3GCCWQB3YvbFJkO/ugFQIKa/SFZNvspy6MHhmuE
	EHwhsHo4eqvMusHBKfsvU1Lvs3QNHWPhARWiJRgTaBTHcUGO4HyUEBzd35WCtQmEl1iUSR5nUy7
	m0Dy0ZSFmJfLYpYnu8rXi4jcsc5VWOTzEeOvUgKjp/IgdmgyiLefUZace+IAZuzalVIw7sgM1SV
	d+mcfBWyTJl4KNI9y0Aa7z/sU0o4ZqIchExIXk0EagaarlvMInJ0JuYPDiJarzUcsl3OW9EFaxs
	m+Wg=
X-Received: by 2002:a7b:c051:0:b0:4a1:d766:758 with SMTP id 5b1f17b1804b1-4aa8b0609cfmr314854055e9.16.1793719776504;
        Tue, 03 Nov 2026 07:29:36 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH 2/6] xen/gnttab: Disallow GNTTABOP_cache_flush from non-direct-mapped domains
Date: Tue,  3 Nov 2026 15:29:24 +0000
Message-Id: <20261103152928.2142176-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793719777-BD87F757-835B5CCA/10/78276251493
X-purgate-type: spam
X-purgate-size: 1334

cache_flush() opereates on maddr_to_mfn(cflush->a.dev_bus_addr), which is an
address space layering violation.

Restrict the hypercall to direct-mapped domains.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>

It also malfunctions when an SMMU is using non-identity mappings.

Linux never checks for errors, which hides all the ways in which this
hypercall is broken.
---
 xen/common/grant_table.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 2285c4aee8d6..d42bd5fb83fd 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3704,6 +3704,9 @@ gnttab_cache_flush(XEN_GUEST_HANDLE_PARAM(gnttab_cache_flush_t) uop,
     unsigned int i;
     gnttab_cache_flush_t op;
 
+    if ( !is_domain_direct_mapped(current->domain) )
+        return -EOPNOTSUPP;
+
     for ( i = 0; i < count; i++ )
     {
         if ( i && hypercall_preempt_check() )
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 15:29:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 15:29:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470114.1678854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGS9-0005wM-Hr; Tue, 03 Nov 2026 15:29:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470114.1678854; Tue, 03 Nov 2026 15:29:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGS9-0005wF-EX; Tue, 03 Nov 2026 15:29:37 +0000
Received: by outflank-mailman (input) for mailman id 1470114;
 Tue, 03 Nov 2026 15:29:36 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1xOGS8-0005ut-0R
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 15:29:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGS7-007Ik4-4s
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:29:35 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdd8-e002-0a2a0a5209dd-0a2a45069112-16
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:34 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6ae9fdde-195a-0a2a45060019-d155dd30d5aa-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 16:29:34 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48e47347279so2718731f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 07:29:34 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b959c1sm25430467f8f.45.2026.11.03.07.29.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 07:29:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793719774; x=1794324574; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JLUNCn2/D5g5yvkcTLpH7WqPGLr39WKTjFC7rSB4uPo=;
        b=pAvu/Y8RLp+QF+xI3cpcMf8ZIKcntYK5ckqNk/bWKtgd+UPDu9XktqpmcuhZ6iufz5
         nZUi3cwXHK6j3xSStDK8yKJzVN/Ptx70Exz1xuhivhZiVIgW2Way6qG4iMI/DMvDC5Bg
         NlsNbYc3b1nZkTVJjR9T+OJu/OJnJSlbQarlQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793719774; x=1794324574;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=JLUNCn2/D5g5yvkcTLpH7WqPGLr39WKTjFC7rSB4uPo=;
        b=t+w47tUXwHMdBYHKYci3DgZ1SZY9wBaCoGkv7rHVyhi/XVGRWrWkal/f8Wlq2ErlJ7
         CYjXjobDsnZdf6x1JTl//cxgXWSp71b0aClWRyWqJN7TZjhuyq56VavJpk6sZNtgJfiL
         1SJwdUs+H9fy/LOZDlfaG/RHRcDLLNa5F9zpqVZupz7VjnEyLlmj6BbU1rsr2bQHlgMT
         vN+r3rUr+/Y0q+wNJa5AhwIxncwvFzy0PJvLPB48qWKXv4SOXAurTFQNzTHZtT6J0FfT
         Wx8UEL+v8afk7pTmJlYn3y9iK7gTYYTBYvf+GO+5EBzXXlHgoS6s58bFOc1x57VRYYxx
         kkDQ==
X-Gm-Message-State: APuU4Z+cBqCgXv3YFhd+NPlcFYZIJ6sSimnrYAHNTewPBDubvyKj/BVZ
	gNYVjnzC+mQk8jDujAbrF+Yp1WLthvK7rnvn+/niB0QqkbapU8U2s0533zU7g0X+qgTfAgQFFO3
	BT96fiT0=
X-Gm-Gg: AYBFou0qCMpV3ek7iIMPFsmxypNCrOejSHsUPPm5pCESK4hgF+KDkWJA6G44Qr33lQu
	X/kzbwvu5fa9yIpCafMr3bYJiwFC/nqpeTQjphAhE2pr6WnmWYvuwAVyKGRrh79/r9oEqbDPE6B
	mnnXjBlk6O5NRx90nR8J+MVr89zO0XQIkwxK0tk6yNdMn7kT3Jrmohkc9m++HdFSYBB3pzCXgph
	4PgbKSOxELQeGJHC7+kQvfUPTHwpmmtfOZgCQZK57Iloa3+f94uM5a5SwYhh9jC+BlKmWgI7Uam
	VxZwqxzDa9aREnPKvmd4QFcEOpf/CWe3hPjwDTZ5r+ZQXrVHrwwqzWy9jLm60nXytPEbzO25IOY
	oRM1KW1J4Qo+vmneD/YvY/e/a7XVCvOV4pPFaRJ5fSthlWOcv/ld64w4+GFP2y3yDL10GAlUrIz
	nz0V2rS/bZU/fKMSGHeIchoRnt7iXesv3jiTfVkT6SrAK767O4n4p93ae5k43Y5vhWeLr8v/Lxw
	uJchIVEwY0lejyFuJiv5uZS50B/EF3U9MGr+50BUAgNLjkUASCXwj7+aftculk7YRy2tAwTzbKW
	10V3M4EO/nHJVdpOJJznar1KqgeaNVQ8nvjWjHkz9SJjSYu/y7LaoZTLoFg7DMCkn1oWvi/1R76
	d+UjPS8O0ZzJdsZa4up03O6sV
X-Received: by 2002:a05:6000:4810:b0:487:106f:ee31 with SMTP id ffacd0b85a97d-48e6e304036mr32900523f8f.27.1793719774017;
        Tue, 03 Nov 2026 07:29:34 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
Subject: [PATCH 0/6] xen/gnttab: XSA-519/520 followup
Date: Tue,  3 Nov 2026 15:29:22 +0000
Message-Id: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793719774-F460277B-7281E0F5/0/0
X-purgate-type: clean
X-purgate-size: 677

Andrew Cooper (6):
  xen/gnttab: Drop owner->grant_table check in _cache_flush()
  xen/gnttab: Disallow GNTTABOP_cache_flush from non-direct-mapped
    domains
  xen/gnttab: Remove explicit rcu_lock_current_domain()
  xen/gnttab: Document how _cache_flush() works
  xen/gnttab: Fold error handling in _cache_flush()
  treewide: Make {invalidate/clean}_dcahce_va_range() void

 xen/arch/arm/include/asm/page.h   | 20 +++++--------
 xen/arch/riscv/include/asm/page.h | 10 ++-----
 xen/arch/riscv/mm.c               |  4 +--
 xen/common/grant_table.c          | 48 ++++++++++++++++---------------
 4 files changed, 36 insertions(+), 46 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:03:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:03:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470180.1678923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGyM-0001aq-Kh; Tue, 03 Nov 2026 16:02:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470180.1678923; Tue, 03 Nov 2026 16:02:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOGyM-0001ai-Hk; Tue, 03 Nov 2026 16:02:54 +0000
Received: by outflank-mailman (input) for mailman id 1470180;
 Tue, 03 Nov 2026 16:02:53 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@swg.vates.tech>)
 id 1xOGyL-0001aX-Ft
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:02:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOGyK-007nhZ-Sq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:02:52 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@swg.vates.tech>)
 id 6aea05a5-2eae-0a2a0a5409dd-0a2a450ae1c0-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:02:52 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@swg.vates.tech>)
 id 6aea05ac-f2d2-0a2a450a0019-b9ff1c229d0b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:02:52 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a22617dd000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 16:02:47 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id EDBF781AA4;
 Tue,  3 Nov 2026 17:02:46 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=30RxQ8s0wMaca35vxviO/z/j9KjB0c2DjKRet1qcY+Q=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=D5sTFiHSJZV4gwyIY5vDJcV9FH0LVVMIzP4BnJwENufP2cbczsV16Flk+VHIIjkc+H3EQu9GE
 IC199gvWWjWU7xWCZC58lsYd+q8woYg1OuvKYVpq95IXeiPAIdAEmg8XhWOvzURHq7s7D69uNV6
 vzuNu74lWFzvCPi6LHoCijkeZaQRRpFSgz3U+ACZf1VbjHgF6RytA3gfw1kx80WCJ6Zzei1eavV
 MKJaYsKWAgDg03ZB5ZWHqWfXz4G6bHJ/xnSzjHO1mFuTxxeKio2n5vEJaArcamZlpQJ+i5s6sBL
 s/DU2wrW/ApgOr2/IC0aZqQW7vf/FO+TKgCXuwHRvveg==
X-Zone-Loop: d4a61b740a06d8bc4db20e78c32d518c3aa899d881b7
x-campaign-type: default
x-transaction-id: 1f175964-50db-46ce-8922-34577fd54598
x-swg-uid: 01-e7e1f6e5-1d9b-44d5-a465-b34fc8ab7941
X-Mailer: Sweego
Message-ID:
 <1793721767.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@vates.tech>
x-swg-bid: 1793721767.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 32/39] xen/riscv: save and clear the old IMSIC
 VS-file on vCPU migration
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <e2cf140c63b1f1cff8e63988f82fff7e2b063c84.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <e2cf140c63b1f1cff8e63988f82fff7e2b063c84.1790779209.git.oleksii.kurochko@gmail.com>
Date: Tue, 03 Nov 2026 17:02:40 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793721761; l=2898;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=oKl4ZLdirArBDD95V5/IzDUaA4VL6lO3rMdDHziwS+0=;
 b=sbFsPPb/fo0D/+X0UW1RKZyQRX8KsKzI0WUmVjr6Tixra6nQorg3aIyyGjitvZJOaVwcp7y4q
 N+a6l6FI9GyCZJfHr6tkmwEKEyWr4/NqYPMUurhujU4eV0dV7J5JrYe
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793721767189
X-purgate-ID: tlsNG-4011c0/1793721772-50ACCCFC-274BFFDD/0/0
X-purgate-type: clean
X-purgate-size: 2898

> When a vCPU migrates to another pCPU, its guest interrupt file has to
> move as well: the eidelivery, eithreshold and eip/eie state of the old
> IMSIC VS-file has to be carried over to the newly acquired one.
> 
> Once all interrupt producers have been retargeted to the new VS-file,
> so that nothing can reach the old one anymore, read the state of the
> old one and clear it at the same time. This has to be done on the pCPU
> owning the old VS-file, as a guest interrupt file is only accessible
> through vsiselect/vsireg with hstatus.VGEIN selecting it. After that
> the old VS-file is no longer in use and its guest external interrupt
> number can be released.
> 
> The state is saved into struct imsic_mrif. Its eix[] array follows the
> layout of a memory-resident interrupt file (MRIF) as defined by the AIA
> specification: pairs of 64-bit interrupt-pending and interrupt-enable
> doublewords, each pair covering 64 interrupt identities. eithreshold
> and eidelivery aren't part of an MRIF and are stored next to it as they
> belong to the interrupt file state too. Using the MRIF layout allows
> the same structure to hold the interrupt file of a vCPU which doesn't
> own a guest interrupt file, which is how the AIA specification
> describes MRIFs being used by a hypervisor.

I think it's worth mentioning that this MRIF structure could be reused
for software interrupt files later.
> [ ... 172 lines skipped ... ]
> +static void cf_check imsic_vsfile_local_read_clear(void *data)
> +{
> +    unsigned int i;
> +    const struct imsic_vsfile_data *idata = data;
> +    struct imsic_mrif *mrif = idata->mrif;
> +    unsigned long new_hstatus, old_hstatus, old_vsiselect;
> +
> +    /*
> +     * The file is reached by retargeting hstatus.VGEIN, and
> +     * imsic_vs_csr_swap() alters vsiselect. Both belong to the vCPU running
> +     * on this pCPU, so restore them before returning.
> +     */
You're saving the registers here, not restoring them. I'd use something
like:
    /*
     * vsiselect/vsireg only reach the guest interrupt file selected by
     * hstatus.VGEIN, so point VGEIN at this file for the access.
     * hstatus and vsiselect hold the state of the vCPU running on this
     * pCPU; save them here and restore them before returning.
     */

> +    old_vsiselect = csr_read(CSR_VSISELECT);
> +    old_hstatus = csr_read(CSR_HSTATUS);
> +    new_hstatus = old_hstatus & ~HSTATUS_VGEIN;
> +    new_hstatus |= MASK_INSR(idata->hgei, HSTATUS_VGEIN);
> +    csr_write(CSR_HSTATUS, new_hstatus);
> +
> +    /*
> +     * No atomic accessors are needed to store the values into the MRIF here,
> +     * as imsic_vsfile_read_clear() is always called with a pointer to a
> +     * temporary MRIF on the stack.
> +     */
Nit: is this blank line really needed?

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:15:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:15:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470193.1678932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHAr-0004Uw-Mg; Tue, 03 Nov 2026 16:15:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470193.1678932; Tue, 03 Nov 2026 16:15:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHAr-0004Up-Jc; Tue, 03 Nov 2026 16:15:49 +0000
Received: by outflank-mailman (input) for mailman id 1470193;
 Tue, 03 Nov 2026 16:15:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 1xOHAq-0004Uj-8e
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:15:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHAp-0049mk-Kq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:15:47 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea08a4-8faa-0a2a0a5109dd-0a2a4506c424-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:15:47 +0100
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea08b2-195a-0a2a45060019-a0658309824e-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:15:47 +0100
Received: from fedora (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTPS id A75FC83FA633;
 Tue,  3 Nov 2026 11:14:42 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: jbeulich@suse.com,
	andrew.cooper3@citrix.com,
	roger@xenproject.org,
	jason.andryuk@amd.com,
	teddy.astie@vates.tech,
	Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
Subject: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen intercepts L1
Date: Tue,  3 Nov 2026 16:15:35 +0000
Message-ID: <f191a87071f790867eddd24dc3a7c823095c12e6.1793709558.git.abdelkareem.abdelsaamad@citrix.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793722547-F7ECC77B-3D533719/0/0
X-purgate-type: clean
X-purgate-size: 3431

When nesting SVM, if the L1 hypervisor has not requested a virtual interrupt
(VINTR) intercept for L2, Xen should not force one. L2 execution should remain
isolated from the L1 VINTR state, and there should be no expectation that L2
execution results in an L1 VINTR becoming deliverable.

Currently, if Xen intercepts the VINTR for its own L1 management, this
intercept incorrectly forces an intercept during L2 execution even when L1
intended for L2 to run without it. This breaks the expected transparency of L1
configuration and introduces unnecessary VMEXITs.

Furthermore, handling this forced VMEXIT_VINTR can cause a pending L1 virtual
interrupt to be incorrectly delivered to L2. This occurs because when the
intercept is determined to be requested solely by the host
(returning NESTEDHVM_VMEXIT_HOST), svm_vmexit_handler does not switch to the
correct VMCB context before evaluating the interrupt injection.

Fix this by ensuring the L2 VINTR intercept bit in the L2 execution VMCB solely
reflects the L1's explicit configuration for its guest, independent of Xen's
internal L1 intercept state.

Signed-off-by: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
---
Testing:
 - Test setup using a custom XTF nested virtualization setup:
   1. An L1 maskable interrupt is triggered while L1 has physical interrupts 
      disabled (via the CLI), leaving the interrupt pending.
   2. L2 is launched via VMRUN with an active, deliverable virtual interrupt 
      configured in its VMCB (L2 EFLAGS.IF = 1, L2 vGIF is unmasked,
      V_IRQ_PENDING is set and L2 V_IRQ is injected on a distinct vector from
      the pending L1 interrupt).
   3. Xen enables L1's VINTR_INTERCEPT to catch the next available VINTR 
      window. L2's VINTR_INTERCEPT is kept cleared.

   Results:
     - Old Behaviour: If the pending L1 maskable interrupt vector has no 
       handler mapped in the L2 IDT, L2 immediately crashes. Otherwise, 
       the L1 maskable interrupt is incorrectly leaked and delivered into 
       the L2 guest.
     - New Behaviour: The L1 maskable interrupt is securely withheld from L2 
       and correctly delivered back to the L1 context upon the next window.

   Note on Test scenario:
   I think the same window race can also result when having an injected L1
   maskable interrupt handler that temporarily raise the TPR to block
   lower-priority interrupts, with the intention to be lowering the TPR
   asynchronously later, then executing the L2 VMRUN in between.

 - CI tests:
https://gitlab.com/xen-project/people/aabdelsa/xen/-/pipelines/3022355946
---
 xen/arch/x86/hvm/svm/nestedsvm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index 128008321d..51006d0f3e 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -403,6 +403,9 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
     n2vmcb->_general2_intercepts =
         n1vmcb->_general2_intercepts | ns_vmcb->_general2_intercepts;
 
+    if ( !(ns_vmcb->_general1_intercepts & GENERAL1_INTERCEPT_VINTR) )
+        n2vmcb->_general1_intercepts = ~GENERAL1_INTERCEPT_VINTR;
+
     /* Nested Pause Filter */
     if ( ns_vmcb->_general1_intercepts & GENERAL1_INTERCEPT_PAUSE )
         n2vmcb->_pause_filter_count =
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:45:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:45:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470220.1678949 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHda-0002DS-2R; Tue, 03 Nov 2026 16:45:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470220.1678949; Tue, 03 Nov 2026 16:45:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHdZ-0002DL-Va; Tue, 03 Nov 2026 16:45:29 +0000
Received: by outflank-mailman (input) for mailman id 1470220;
 Tue, 03 Nov 2026 16:45:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@swg.vates.tech>)
 id 1xOHdY-0002DE-HT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:45:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHdX-003TIR-Oz
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:45:27 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@swg.vates.tech>)
 id 6aea0fa2-bab6-0a2a0a5309dd-0a2a4504aff4-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:45:27 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@swg.vates.tech>)
 id 6aea0fa7-b57f-0a2a45040019-b9ff1c228fcd-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:45:27 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a24d1057000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 03 Nov 2026 16:45:21 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 103C582A6A;
 Tue,  3 Nov 2026 17:45:21 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=Ctsk2mEN2HQbi8EMfJxC7E253xF00M+ZALCzzkM3Ydg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=kLh49QIhEo6HXkAIWcZh+e/U0haVLfwAXsEu/7E9oYo0GGr2JvYHLbO6xpSY5/wNZr8V4DyA7
 PhY2gMc7EicRpoELNLM1AIJGDGDqGjh0qRSP5xLyPbVo0SlVcF6ejmHr52HoOL2c7uVKiR/fGc0
 BIUS2iIikKm6m+cUV9Bna2IWmubfGcJZAZN1qdOn0/EjOKUcgTLtKuRCln7aeH/1xs/VTegeEpA
 ZBTqGlfWZUAZ42ol6+ipAicq56bWUdSydsZi7Oi7CrLdYdVVolbbNQCwTji84jLNA2zHYM5m+r+
 woJ9g4sVBhT6unZXZMTlTctH9K5YIqRQzDA9lu06kRBA==
X-Zone-Loop: 69a470ec2d6219cbd348532f1ab5304bda3f2f71e75e
x-campaign-type: default
x-transaction-id: 6b886cb3-4fb7-4dba-a0c9-c9e76b235440
x-swg-uid: 01-e294e592-93e4-47ff-a2c1-b9504767593b
X-Mailer: Sweego
Message-ID:
 <1793724321.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@vates.tech>
x-swg-bid: 1793724321.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 33/39] xen/riscv: restore register state in the new
 IMSIC VS-file
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <9e77a699eb6c99fa8f444d5777da189fdd30679e.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <9e77a699eb6c99fa8f444d5777da189fdd30679e.1790779209.git.oleksii.kurochko@gmail.com>
Date: Tue, 03 Nov 2026 17:45:14 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793724315; l=2986;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=iJlK4Kw1ikvmE5pN7ad38iP/yY/IaVHqAmlKd47zq1I=;
 b=6Mnbsm66ak6+jjW7ciGRC+TRF37ULOp1klp1SgtiWDPLps2bbDUSmpgAvUF5vygS6t5AS31cn
 Ru+e7zCe88nA0By0J2g+j5TpQezdUhaWUwAydbY/ourpaCPxfhp6t9P
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793724321270
X-purgate-ID: tlsNG-ebf023/1793724327-526CAB50-C987CD7F/0/0
X-purgate-type: clean
X-purgate-size: 2986

> Complete the migration of a vCPU's guest interrupt file: move the state
> saved from the old IMSIC VS-file into the new one and make the vCPU use
> the new VS-file.
> 
> The interrupt producers have already been retargeted to the new
> VS-file, so MSIs may land in it before the saved state is restored.

Could we send an extempore MSI to the hart of the new file once the
interrupt producers have been retargeted, and spin until it is received?
That would guarantee that no more MSIs land once we have received it.
> Hence the saved eip/eie bits are ORed into the new VS-file rather than
> written to it, so that such MSIs aren't lost. eithreshold and
> eidelivery are restored last: the new VS-file was cleared when it was
> acquired, so it doesn't deliver interrupts until its pending and enable
> bits are complete.
> 
> As with reading the old VS-file, this has to be done on the pCPU owning
> the new VS-file, with hstatus.VGEIN temporarily selecting it. That is
> v->processor, the pCPU the vCPU is migrating to.
> 
> Finally, point hstatus.VGEIN in the vCPU's saved context at the new
> VS-file, so that it becomes the source of the vCPU's VS-level external
> interrupts and the file the guest accesses through its siselect/sireg.
> With that the migration is complete, so drop the BUG_ON("unimplemented")
Great!
> [ ... 82 lines skipped ... ]
> +static void cf_check imsic_vsfile_local_update(void *data)
> +{
> +    unsigned int i;
> +    const struct imsic_vsfile_data *idata = data;
> +    struct imsic_mrif *mrif = idata->mrif;
mrif is only read here, so it can be const:
    const struct imsic_mrif *mrif = idata->mrif;
> +    unsigned long new_hstatus, old_hstatus, old_vsiselect;
> +
> +    /* We can only update if we have a HW IMSIC context */
> +    if ( !idata->hgei )
> +        return;
> +
> +    /*
> +     * No atomic accessors are needed to read the values out of the MRIF here,
> +     * as this is always called with a pointer to a temporary MRIF on the
> +     * stack.
> +     */
> +
> +    /*
> +     * The file is reached by retargeting hstatus.VGEIN, and the
> +     * imsic_vs_csr_*() accessors alter vsiselect. Both belong to the vCPU
> +     * running on this pCPU, so restore them before returning.
> +     */
Same comment as on the previous patch: you are not restoring the CSRs
here but saving them, as imsic_vs_csr_*() will alter vsiselect. Please
update the comment accordingly.
> [ ... 32 lines skipped ... ]
> @@ -1152,5 +1222,11 @@ void imsic_migrate_vcpu(struct vcpu *v)
>      /* Free-up old IMSIC VS-file */
>      vgein_release(v, old_vsfile_id, old_vsfile_cpu);
>  
> -    BUG_ON("unimplemented");
> +    /* Restore register state in the new IMSIC VS-file */
> +    imsic_call_on_cpu(v->processor, imsic_vsfile_local_update, &vsfile_data);
> +
> +    /* Set VCPU HSTATUS.VGEIN to new IMSIC VS-file */
Nit: s/VCPU/vCPU/

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:46:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:46:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470223.1678958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHeI-0002YV-9c; Tue, 03 Nov 2026 16:46:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470223.1678958; Tue, 03 Nov 2026 16:46:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHeI-0002YO-6S; Tue, 03 Nov 2026 16:46:14 +0000
Received: by outflank-mailman (input) for mailman id 1470223;
 Tue, 03 Nov 2026 16:46:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 1xOHeG-0002Wt-81
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:46:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHeF-003TTk-L3
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:46:11 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea0fcc-bab6-0a2a0a5309dd-0a2a450784b8-12
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:46:11 +0100
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea0fd2-b4ea-0a2a45070019-a0658309a696-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:46:11 +0100
Received: from fedora (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTPS id DC994845A16C;
 Tue,  3 Nov 2026 11:45:06 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
To: abdelkareem.abdelsaamad@citrix.com
Cc: andrew.cooper3@citrix.com,
	jason.andryuk@amd.com,
	jbeulich@suse.com,
	roger@xenproject.org,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen intercepts L1
Date: Tue,  3 Nov 2026 16:46:02 +0000
Message-ID: <20261103164602.381041-1-abdelkareem.abdelsaamad@citrix.com>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <f191a87071f790867eddd24dc3a7c823095c12e6.1793709558.git.abdelkareem.abdelsaamad@citrix.com>
References: <f191a87071f790867eddd24dc3a7c823095c12e6.1793709558.git.abdelkareem.abdelsaamad@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793724371-A64DBAE4-85E48A1B/0/0
X-purgate-type: clean
X-purgate-size: 98

I apologize. This is not the correct one. Please dreop this one. I will resend.

--Abdelkareem


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:46:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:46:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470238.1678967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHei-000351-Gy; Tue, 03 Nov 2026 16:46:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470238.1678967; Tue, 03 Nov 2026 16:46:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHei-00034s-E2; Tue, 03 Nov 2026 16:46:40 +0000
Received: by outflank-mailman (input) for mailman id 1470238;
 Tue, 03 Nov 2026 16:46:39 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xOHeh-00034k-JI
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:46:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHeg-00Bmx5-W8
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:46:39 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6aea0fe9-e002-0a2a0a5209dd-0a2a4507acf6-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:46:38 +0100
Received: from [52.101.52.67]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6aea0fed-b4ea-0a2a45070019-346534433469-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:46:38 +0100
Received: from CYZPR11CA0021.namprd11.prod.outlook.com (2603:10b6:930:8d::17)
 by BL3PR12MB6426.namprd12.prod.outlook.com (2603:10b6:208:3b5::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 16:46:34 +0000
Received: from MWH0EPF000D8953.namprd05.prod.outlook.com
 (2603:10b6:930:8d:cafe::97) by CYZPR11CA0021.outlook.office365.com
 (2603:10b6:930:8d::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Tue, 3
 Nov 2026 16:46:34 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 MWH0EPF000D8953.mail.protection.outlook.com (10.167.249.219) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Tue, 3 Nov 2026 16:46:33 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Tue, 3 Nov
 2026 10:46:32 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Tue, 3 Nov
 2026 10:46:32 -0600
Received: from APPOL-18KY0J4.amd.com (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Tue, 3 Nov 2026 10:46:30 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=updac+LfU3sKyq7vvi+uoJAdGYhnjvKL6f8j5D1jEwrkPMzSjJqZYTOp+7aoSbDwzPBuarsTL7GcGg81dSgAvywSnm21pGhqB9pqYP4nxjovg05cxY/NqxycSAON38+4xHEquKcLH5Z32W5UimhqRrZUX8eU0TrVH8H9i2b6bb0DadsH8MskAF5VLnBSlRLtYny5Xkp6jjZTaQr8zm868WTFNv6siq+1ST+WrjNVE8L0YQv0GBx0Z+3uQpBrspG8Yu5R0SWSkJtpOzrmxZmfBn++77SOUBDqq/3G93kuj5efWAaEAqfH2c6Vjk6n9XgVXbu47RV6hN2yGkVibKmNKw==
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=biIrkFz5JH+CTzUk65qXG9ALMVYC7jJjNgpe+PkTfi0=;
 b=EhP8yNY4TbNssAkTDwl2UUFcqs7ncDRHT+tEOEchSEMxDKMfCIcE6aPFT6flYpPBZYfk2alSkL5VPGe+MHRSevpuaoknCwQ3tJBTD70rvJV8uzFG17cO1PJIx6ihlEOUB47Xj3T3jt2vaYEthKzpLoRhe0hqe1sTIng/sh+fnPKE1K1D5yzyYHcIrRAHpkJ0K1kw2J4xVa8QLz4HqyKZqQK46mUbNWNzfqhDTURSY/MHEqYSiNNtQbtk2gaEuhMrAhXuFPCG/lnf23h2Q33lNZd0SToua21HDMa3kplsTXT2ww4fTfIDkiqDq8Y/vcIyscQMe0cZOsEAiok9yAzcWw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=biIrkFz5JH+CTzUk65qXG9ALMVYC7jJjNgpe+PkTfi0=;
 b=mrVZpzzqjVkJd3vk5nirV73UGkG7S1thCtoSfK6oKhGcZIqJaxv83Q0HPEPEn4hp67vQ0889C//HxLeM81Ohsvf+rgrURFj2mwMUboIGejT9WvT9EzGJwRbMX8MHdBjK1+xs4yKVFH4Fh3RTA4BIbFUykYZlf+wmVbq+NA8RcJE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH] xen/arm: domain_build.c: Use hwdom instead of dom0 where applicable
Date: Tue, 3 Nov 2026 17:46:24 +0100
Message-ID: <20261103164624.195576-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000D8953:EE_|BL3PR12MB6426:EE_
X-MS-Office365-Filtering-Correlation-Id: 753676be-66f1-4fbd-9c7e-08df39ca050d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|261022115727099003|261102123227099003|11063799006|56012099006|261021123027099003|261009223027099003|261022075727099003|261021121427099003|261022105027099003|261021135927099003|261026140227099003|261026121527099003|261028144727099003|10067099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	PVEe75QPoPt5xWIF/8qzE8u30EZ1APXGH1Xh5dAMYzu0/9UTqWhjtvz3ji3wkJWgsLzsjM+8i63pCv4vYe4DeN8xfNvNzMMj2p/wUWcSm6sE/3GtsvZiVm7Qnt1f39+ltyTtYQVTHof0q3pTk/KyKZi5pOlyINvW65YbYr8QWqJRBBJax+vF7DPnZj5mr/OxQIcCJBEoh1LHRGeEzWzmCUWTIBKDgsCy8GJ9/34AaQ9x8fngtbgjvn9ZG4PXOP2sxc/5lZJrAZKzh08n3myMksV5JU9bNIDouw58Mb+uG+pWIauYllfMCWTml9xPp++Swv5+0b6cdmwIfbFEgkWf0n6vNqk6LKLrP9rzJq7AOwv6A78qVPXRJAHVNz8+KR4q2OUehrfVgdTmsgS5PYElcJ7T0fcq0F/l/SxfU/F1n+nhBLhIAb0swlH+Ip3o6sQSFQqfRPU83+bSAkvSHDL/u6fuPtTwWHrv1a9uR+5v8lKA6iU7B9EZjLywhRi2oUzOhUx+muvwzYROMEBu5t5uRUDtnjSotDw+ELYvwxz4d7mZkF33gBK01ymWrgoClWO7GEzfa5Xc9gQGQ3F/bkBJ2CSOlwvgmdhNwWblN0HwSTYOqKsA4DhJ/cazYCs6ZhvtGDWQpgJ+xmlADzM9akJSlhoRFRif3Hfv27OAMikrRh3dBc2eBXSAy1JhRUUqB+Z+vqMPrgn1Aptf+FNZ2WDmFw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(261022115727099003)(261102123227099003)(11063799006)(56012099006)(261021123027099003)(261009223027099003)(261022075727099003)(261021121427099003)(261022105027099003)(261021135927099003)(261026140227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	pAnGt7Dz/+Y7U4EP+yx+U7XNZsv+K7lMjqTlDiAZJ7otomKccz95HGJYtNb08HwObYHxqppZhkGewHwq7KDVt0sXaA0t4p40cDR20b1j2I8i/hVOrySFrPfuSYkovESnU6JY1JRLZc49uauDTONYjajkfouXbWcD/Z33C+GSENyg/tzcpQG4GruIIYVEqs8Z7BnTf8ljfRtpe6Q+M+xtYRuhDFoLKaXjZ7DkR4KS0ZQaYx/vWXHtLmYIdPsPxSG/bEbgQawlxe60QAhXaE5khllvhs9d130R68oUoJeENebOPyjI4bnOBVexLr0fNPos+zg8AEOyqVLDxWu3Zc4XGKr5L6zZtuKw/rRUuGgYqtXGuNoOg0+7FF9bTW7OiyL5vv0UCaxNYXH/59O2t6yPDbPxoLjeI/RbrfyyYTTz4QCf7c7Dkm1zp5+4P/kex+cy
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 16:46:33.9498
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 753676be-66f1-4fbd-9c7e-08df39ca050d
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000D8953.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6426
X-purgate-ID: tlsNG-ef75cf/1793724398-A4ECEAE4-07F88BCC/0/0
X-purgate-type: clean
X-purgate-size: 8074

Since commit 52cb53f1816a ("xen/arm: dom0less hwdom construction"),
construct_hwdom() and the helpers it relies on (allocate_memory_11(),
prepare_dtb_hwdom(), handle_node(), find_gnttab_region(), etc.) are used
not only for the regular dom0 but also for a hardware domain created by
dom0less. Many comments and names on this path still refer to dom0, which
is misleading.

No functional change other than the panic messages.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
This is just the cleanup for one file with the most number of occurences that
I decided to do in the free time after reviewing latest DOM0_BOOT changes. Other
files also need such cleanup on Arm.
---
 xen/arch/arm/domain_build.c | 44 ++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 1ee1f1f6a733..606e85818eb4 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -100,7 +100,7 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
 #endif
 
 /*
- * Amount of extra space required to dom0's device tree. This covers
+ * Amount of extra space required to hwdom's device tree. This covers
  * nodes generated by Xen, which are not directly copied from the host DTB.
  * It is calculated as:
  *  - Space for /hypervisor node (128 bytes).
@@ -111,15 +111,15 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
  *    plus the appendage to the main /memory node (NR_SHMEM_BANKS * (160 + 16)
  *    bytes). This overhead is dropped when CONFIG_STATIC_SHM is disabled.
  */
-#define DOM0_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
-                             (NR_MEM_BANKS * 16) +                    \
-                             (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
-                              (NR_SHMEM_BANKS * (160 + 16)) : 0))
+#define HWDOM_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
+                              (NR_MEM_BANKS * 16) +                    \
+                              (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
+                               (NR_SHMEM_BANKS * (160 + 16)) : 0))
 
 paddr_t __init hwdom_get_fdt_alloc_size(void)
 {
     if ( acpi_disabled )
-        return fdt_totalsize(device_tree_flattened) + DOM0_FDT_EXTRA_SIZE;
+        return fdt_totalsize(device_tree_flattened) + HWDOM_FDT_EXTRA_SIZE;
 
     return ACPI_DOM0_FDT_MIN_SIZE;
 }
@@ -175,7 +175,7 @@ static bool __init insert_11_bank(struct domain *d,
 
     res = guest_physmap_add_page(d, _gfn(mfn_x(smfn)), smfn, order);
     if ( res )
-        panic("Failed map pages to DOM0: %d\n", res);
+        panic("Failed map pages to %pd: %d\n", d, res);
 
     kinfo->unassigned_mem -= size;
 
@@ -245,19 +245,19 @@ fail:
  *
  * Requirements:
  *
- * 1. The dom0 kernel should be loaded within the first 128MB of RAM. This
+ * 1. The hwdom kernel should be loaded within the first 128MB of RAM. This
  *    is necessary at least for Linux zImage kernels, which are all we
  *    support today.
- * 2. We want to put the dom0 kernel, ramdisk and DTB in the same
+ * 2. We want to put the hwdom kernel, ramdisk and DTB in the same
  *    bank. Partly this is just easier for us to deal with, but also
  *    the ramdisk and DTB must be placed within a certain proximity of
  *    the kernel within RAM.
- * 3. For dom0 we want to place as much of the RAM as we reasonably can
+ * 3. For hwdom we want to place as much of the RAM as we reasonably can
  *    below 4GB, so that it can be used by non-LPAE enabled kernels (32-bit).
- * 4. Some devices assigned to dom0 can only do 32-bit DMA access or
+ * 4. Some devices assigned to hwdom can only do 32-bit DMA access or
  *    even be more restricted. We want to allocate as much of the RAM
  *    as we reasonably can that can be accessed from all the devices..
- * 5. For 32-bit dom0 the kernel must be located below 4GB.
+ * 5. For 32-bit hwdom the kernel must be located below 4GB.
  * 6. We want to have a few largers banks rather than many smaller ones.
  *
  * For the first two requirements we need to make sure that the lowest
@@ -293,7 +293,7 @@ fail:
  * to be allocated in the low mem. Then for subsequent allocation, we
  * initially allocate memory only from low mem. Once that runs out out
  * (as described above) we allow higher allocations and continue until
- * that runs out (or we have allocated sufficient dom0 memory).
+ * that runs out (or we have allocated sufficient hwdom memory).
  */
 static void __init allocate_memory_11(struct domain *d,
                                       struct kernel_info *kinfo)
@@ -311,7 +311,7 @@ static void __init allocate_memory_11(struct domain *d,
     unsigned int bits;
 
     /*
-     * TODO: Implement memory bank allocation when DOM0 is not direct
+     * TODO: Implement memory bank allocation when hwdom is not direct
      * mapped
      */
     BUG_ON(!is_domain_direct_mapped(d));
@@ -409,8 +409,8 @@ static void __init allocate_memory_11(struct domain *d,
 
     if ( kinfo->unassigned_mem )
         /* Don't want format this as PRIpaddr (16 digit hex) */
-        panic("Failed to allocate requested dom0 memory. %ldMB unallocated\n",
-              (unsigned long)kinfo->unassigned_mem >> 20);
+        panic("Failed to allocate requested %pd memory. %ldMB unallocated\n",
+              d, (unsigned long)kinfo->unassigned_mem >> 20);
 
     for( i = 0; i < mem->nr_banks; i++ )
     {
@@ -516,7 +516,7 @@ static int __init write_properties(struct domain *d, struct kernel_info *kinfo,
          * * remove bootargs, linux,uefi-system-table,
          *   linux,uefi-mmap-start, linux,uefi-mmap-size,
          *   linux,uefi-mmap-desc-size, and linux,uefi-mmap-desc-ver
-         *   (since EFI boot is not currently supported in dom0).
+         *   (since EFI boot is not currently supported in hwdom).
          */
         if ( dt_node_path_is_equal(node, "/chosen") )
         {
@@ -1544,7 +1544,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
 
     /*
      * Even if the IOMMU device is not used by Xen, it should not be
-     * passthrough to DOM0
+     * passthrough to hwdom.
      */
     if ( device_get_class(node) == DEVICE_IOMMU )
     {
@@ -1695,7 +1695,7 @@ static int __init prepare_dtb_hwdom(struct domain *d, struct kernel_info *kinfo)
     kinfo->phandle_intc = dt_interrupt_controller->phandle;
     fdt = device_tree_flattened;
 
-    new_size = fdt_totalsize(fdt) + DOM0_FDT_EXTRA_SIZE;
+    new_size = fdt_totalsize(fdt) + HWDOM_FDT_EXTRA_SIZE;
     kinfo->fdt = xmalloc_bytes(new_size);
     if ( kinfo->fdt == NULL )
         return -ENOMEM;
@@ -1764,7 +1764,7 @@ static void __init find_gnttab_region(struct domain *d,
         gnttab_resource_max_frames(d, XENMEM_resource_grant_table_id_shared);
 
     /*
-     * The region used by Xen on the memory will never be mapped in DOM0
+     * The region used by Xen on the memory will never be mapped in hwdom
      * memory layout. Therefore it can be used for the grant table.
      *
      * Only use the text section as it's always present and will contain
@@ -1776,7 +1776,7 @@ static void __init find_gnttab_region(struct domain *d,
 
 #ifdef CONFIG_ARM_32
     /*
-     * The gnttab region must be under 4GB in order to work with DOM0
+     * The gnttab region must be under 4GB in order to work with hwdom
      * using short page table.
      * In practice it's always the case because Xen is always located
      * below 4GB, but be safe.
@@ -1941,7 +1941,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
             return rc;
     }
 
-    /* Map extra GIC MMIO, irqs and other hw stuffs to dom0. */
+    /* Map extra GIC MMIO, irqs and other hw stuffs to hwdom */
     rc = gic_map_hwdom_extra_mappings(d);
     if ( rc < 0 )
         return rc;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:54:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:54:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470251.1678976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHmO-0005Bd-8i; Tue, 03 Nov 2026 16:54:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470251.1678976; Tue, 03 Nov 2026 16:54:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHmO-0005BW-5u; Tue, 03 Nov 2026 16:54:36 +0000
Received: by outflank-mailman (input) for mailman id 1470251;
 Tue, 03 Nov 2026 16:54:34 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHmM-0005BQ-R2
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:54:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHmM-00Dvsf-7l
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:54:34 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea1196-2eae-0a2a0a5409dd-0a2a4502bc5c-46
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:54:34 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea11c4-6ca4-0a2a45020019-d1558029e9c1-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:54:28 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a2167bd087so37712035e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 08:54:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b789ecsm25250984f8f.29.2026.11.03.08.54.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 08:54:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793724868; x=1794329668; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=f0y9kAjN7r9Bj9gP05840BwCy1OA1t5Lv5sRd7GPCQQ=;
        b=NSZPsg3M5zTHqNPBSK40t4zb9pqOesE/bJxIiYA+n8++qJVvTy5Mvdzegoeow42r8c
         Usf+uNt4miepmKG8vflGeU7tiRL273U6w/pCknEQMgDObJ98NgGl6/XX6aeF4QWl+Hn9
         qvLoe2shJvkPAgwr/Wpfd/RfQwB3ivhKikDF3byMG1eTRqfyk4n1L3ZCeJuVpmFkKqVn
         m4+RV2U9LyYns4xBRo+54ejWzfOKEI54jUXw+k/Pl3GcqOHLyNqZCteB+m4fFVawOwsy
         7vHI3p94lOQ7T/M9/QH35Zn4mZRPBHHi6/d3chFbcCbshha+OJ3ON56tbUOWqUZBlh2O
         kJQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793724868; x=1794329668;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=f0y9kAjN7r9Bj9gP05840BwCy1OA1t5Lv5sRd7GPCQQ=;
        b=oK98QlXXubJRTEXnbrl19wGn7cbYkrmMZH8dnKSp68Zat7lWzMHQucvjHtBC0ZO37t
         CkhaoI5zA1RL/EwZJ5+XIhAeuR5ESB6mUxe8ZzyHA3npjhLwfTcMZeNGvK0keldvhXhJ
         zXU5F9xFu0oTtY/fwZ593z9AE+9feu/a+yB1vOlSAIuGCE4uW6ikHgq5N/WlvgeVd3mJ
         I8G+BhnlBHtizXWxnr3WkM6eTPD22ullDo2qwlMuZT414CuKqdzz+wY0w0dCDTtrDUuj
         yk1hpH9YloHUSDDvGZHjfUcat7hp5q9e3ZcFvYaDLTxwV3j86KWaKUmMq9OBIilOXsnC
         i1Ag==
X-Forwarded-Encrypted: i=1; AKwUvBxcBBBVWLA8/4jU+XljlVozHEy4mwn4k+vVV0kFHJXZFclF5PbX3kIMPjSYE/PD5DXl28pxSR7zNB8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9+/WK++S8XyQpyCxqv/oyzH7jBagh1lp1giiTNfFO2BVSCLk79
	7qtqVyfYpl7soj0O3ANapPcSgTx5VUSekdy+RQdvOdjfQtnRRF0XKC1/birRmM8IBw==
X-Gm-Gg: AYBFou3nlJs1O9l8r5cI6mYjo3Ln3cPGzEtEJqhRBcKiUZPMwxvFsuSIIWELzAAhrPd
	L8HOa1H5psncPCx2B8A5E+vdZE85QSHRFYIO5T3NE3jFSw7qe3gRGtBrr+S85TeLdEapUctKI+w
	zG07BMnJTrk0RRBiZCZjEmqxXh7WoollGgV+E2W22A7Wf8oPsrzzLLBIog+ho18AUTYs5Nw/kiJ
	lVhfHgUAt5gweeM3ASz7hDBsDa8GHOTlAeE4sGnFiGP2f1vTXXlBYHYBy/QnjHbsB5vuOD7+J83
	JcDO0kO0UL2x3iHj4SJ9XejDjae9X+2EcAePmAqZHpTeDHaMkZrpM1ad+jj5tJnKhQif0FUHIWQ
	ll3K/MJmfGKOZEk1NA27u2RNPedM2xKjVPMFeIriQ219yEpKX7ognZgLTTQbu+gHVkCfsxIufAJ
	lMrBK7Cw6XdDbLsMIGvskwv6mMa72MAelfVwlmxe8k91GNk30BS6JPjXUCbuor6MUfMCIyM6ZHR
	G3NU+vCxo85WpRCx1TIXTwbuoi4ugw3FraK68b6Hpn/RjvzaVnyYpIgbeBFwD50QbvRHmpP4PBu
	pRECX/iXvkDl/U1unHScEsATaer7O13/HqLzWxsSI8juMXLeA4hdzT+p/GzboAG9PLAwEuDjsG6
	67LoWP4eeHQouqTC1qAixE+Lcl6N4GGGjeHAULA==
X-Received: by 2002:a05:600c:3b88:b0:4a1:cf60:dcc3 with SMTP id 5b1f17b1804b1-4ac187a6ffcmr332090275e9.29.1793724868445;
        Tue, 03 Nov 2026 08:54:28 -0800 (PST)
Message-ID: <3196265d-474b-425a-a87a-de54ec836516@suse.com>
Date: Tue, 3 Nov 2026 17:54:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen/gnttab: Remove explicit rcu_lock_current_domain()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-4-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103152928.2142176-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1793724874-30DC12AC-53DAFA7A/10/78276251493
X-purgate-type: spam
X-purgate-size: 512

On 03.11.2026 16:29, Andrew Cooper wrote:
> rcu_lock_current_domain() is always a nop, while rcu_unlock_domain() is not.
> 
> GNTTAB ops swap_grant_ref and cache_flush are the only two paths in Xen which
> explicitly RCU lock themselves.  Drop this behaviour.

Arm's do_platform_op() has similar logic. From the description I infer you
consider this bad behavior. It's not becoming quite clear why, though. Plus
if it was bad behavior, why would we keep rcu_lock_current_domain() around
at all?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:55:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:55:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470262.1678993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHnM-0005ky-Nb; Tue, 03 Nov 2026 16:55:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470262.1678993; Tue, 03 Nov 2026 16:55:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHnM-0005kr-L4; Tue, 03 Nov 2026 16:55:36 +0000
Received: by outflank-mailman (input) for mailman id 1470262;
 Tue, 03 Nov 2026 16:55:35 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHnL-0005kj-Kh
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:55:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHnL-00F1Sg-1D
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:55:35 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea1201-e002-0a2a0a5209dd-0a2a450acc68-10
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:55:35 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea1206-f2d2-0a2a450a0019-d155dd30e97b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:55:34 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48bbb06e746so2211507f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 08:55:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71b80333sm28244051f8f.32.2026.11.03.08.55.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 08:55:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793724934; x=1794329734; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ZkSu1uTuGxIFX9vkCe+s9NklS2Szxf9aeza+uibxjbA=;
        b=ZlyJ5OXHMuEjtfUzbjQLGIg1yVcouEjBS5iusPGTN+OrugGbub1Gwq1RQhvaub99co
         9soKY8dm7Cg9R7vSr/vxid9iHFJ6fTi7uGvWUtVj7HqyghdS/N7xehXCbwfRnfjo5AWY
         qyglG0nomBZ2NswH9W3yWBT9bpfhgYIonN7LdoncsMtY/6YWvdVKve/2kfzOysOPI9NX
         xQCI31zrb0g2z1es55jrmZOC2o+1FCIXXCEBI+3qFj46V07vWvILp+kFzXonZ9Dc9zen
         lIVUdyEebkLDG7aLlFOwPqnx7PATMQkd+5bP5+pWJa749iBB0SGdRuc+lTf5iRe0svZI
         x/TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793724934; x=1794329734;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ZkSu1uTuGxIFX9vkCe+s9NklS2Szxf9aeza+uibxjbA=;
        b=QOqX7EblZ3JyhFbwpOAPbNa2nt+d3+nYz8juSs6pdd/EiJJT0kQfSrxZltQx3Chc5j
         ouTtvi4siDaDXW40XAiKFj+h3zDgHtv/BGoP1eFCbKaEWHiOePOiNEVpGVcLLomn3Mvq
         YA4kaTCv+4D11IaNPPB8tjkZ/MkTKNCF4GY/IQumGSrnJRMsYu+7glB409HIjD30ZUvR
         nkK4jhTXS5lfIiC2BAnZqxGSvn8hRTKnxF5unKl5J6qweGIvOwnsxe0YX4vhaKOQLUIn
         iX+8gbWBFEy3qSVWr36wOz6IONf8TPvIvX3F2jpLLFC0oMkPnavHVWxZo3myruv67DYN
         NSZg==
X-Forwarded-Encrypted: i=1; AKwUvBzyNChewFqQKekAiUnw7deWa2O+Se1RKDcK29BSDyrZmG8Wn+8HUrlpopevEg0Ekf1LJlI1r25svSo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9r60vqbdghVcrzrMwsVF6wcj3ogV6PwwrtmLB20B144CfnwX/1
	+EMPAEg0N26tZR+lZMeLRU1k3NebH+x0dmN3OAyNEz+BMgbw8rGmnlw7YSs5n+IdoQ==
X-Gm-Gg: AYBFou0zPFcvkSNx0HJ8iyTBtBH1aM/y60A/sofJ2oKQuFxa7BGf1xo/LPE4XLeqRnL
	sKj6WN7/RgCh+yXMR2BfzRqHm5dNcTAeXT2vm6ERFIpvbze4amiDNCay8oR2FAjAc/+YF7zEHuh
	KT7wth2NPGxChpp7aKoR1rdE5GO4FmkxMoQnJbMYh4aeUJyChzyvcLyoY9azxmVWWQ6xte0zDSE
	8gbCZ62jyIJsS26vvw21bIVr94Am2+jO1Q+ZmaKxbNF0yEHc02gR331OvoGWtb+wR8ZubuOHWpc
	H3AgMwZ3dAj6D3NWXKx/w3xe8Us2of/Jmk1VIIxL8xz1ffMPjDIS8vogUrVoWeNEf1HJ2NtdZTo
	LBstKIANBNQMtBT+MnGqNwJSOrYusEX0ZrASSMMcvW55NO3lMwz9sR+8Y9Nid6MZwsKC7hPgen1
	6UsrLX8Nmep4DM8kvRnQugOmbu0rfyX0r9c4IN9D7BvHFsGHPJPzaNjatZqNSrNPPFWmzYbkMj8
	WjrYKjbR1gWyNttzzLQwaGwZfQwAPPPErH0tMgXQ91W6i586gUEFYrDizTVuVTrLJm2SpnaWXZu
	3SUix/7r8XkWMQsL33TRqGYiILXx7pLmizbew4CLPooZv9AereFc9iDM1Ph7ZwWv5qkx2SLk6VU
	wrDSRYjNPkq7lEgW0
X-Received: by 2002:a05:6000:41d9:b0:48e:646e:fb61 with SMTP id ffacd0b85a97d-48e6e305b9emr32767730f8f.34.1793724933883;
        Tue, 03 Nov 2026 08:55:33 -0800 (PST)
Message-ID: <5d918906-f3bd-487a-be69-ae73e2ff0600@suse.com>
Date: Tue, 3 Nov 2026 17:55:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/6] xen/gnttab: Document how _cache_flush() works
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-5-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103152928.2142176-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793724934-5A3DCCFC-707EB2C6/10/78276251493
X-purgate-type: spam
X-purgate-size: 150

On 03.11.2026 16:29, Andrew Cooper wrote:
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 16:59:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 16:59:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470268.1679002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHrX-0006VJ-6n; Tue, 03 Nov 2026 16:59:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470268.1679002; Tue, 03 Nov 2026 16:59:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHrX-0006VC-3g; Tue, 03 Nov 2026 16:59:55 +0000
Received: by outflank-mailman (input) for mailman id 1470268;
 Tue, 03 Nov 2026 16:59:53 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHrV-0006Uy-2J
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 16:59:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHrU-00DwVv-7M
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:59:52 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aea1301-e002-0a2a0a5209dd-0a2a450684f6-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:59:52 +0100
Received: from [52.101.57.21]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aea1306-195a-0a2a45060019-34653915441f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:59:51 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA6PR03MB7952.namprd03.prod.outlook.com (2603:10b6:806:433::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov
 2026 16:59:47 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 16:59:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=JVOrOv8/9EntKpRQUElGGql1VZNBcFLV+uLW9Ps0x+CFUiVmH9AU0H1d4xBDzSPv9tVObzpHknT2++x6CLeJqjmLpMpOQVoVWl6kOgiknKnZPh4pEIjbHZDruuR8zasiBsth9CMby/dLx1NQVF4BE2YHefadrwkRnBLcYJ4U17aGUetfxzfSnzNCLDENFgeq0QVLUU7OE7Y4RNCuP9VFrhArWG0eMZ7pZmzKkvHDcuGYeaLYg0rGl3t+3xGtQRmqQim8GKEkysOqnv497kyNt4FuTyYD4hAYtWWDsLgsbD9hpry94Ucm2YEyVuFKtco6foOCHIaYJDPITeRjAVlVUw==
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=4R8droc5IXH0DJ59lK4th2EuT9LfFdw5To0KkY0xrps=;
 b=zHnWyt0lFyqnsv6pDt4gftCjOSZGB1hd50GvXtFXZuCccM7+2ZB/MplTdHxI0TWcKmWuEcXnW8CWcXu6ZacByz4uF24H2mnCACDHgFzej+zfc4bSf0aBcpK5mcok5mdI9XFZAViYjB2JXvsBuHwcxxtYxTOYTF8ZjgWHs+YRi9iZl7MSibk5q3bCku4dVyN+RhIaMM8+6keMis7axTfuOm367cfbPN9ZOVdtCLKU2yAsVpcBBfF7VAe589pZu6s2/z/B8Wa1hJkYuu33ts7mGK9R47zkc4FR9iOvn81WeY3fSPjjA3IZ5A8vv8+T4NuiEAY7JdjLoL+37+ub+3bBMg==
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=4R8droc5IXH0DJ59lK4th2EuT9LfFdw5To0KkY0xrps=;
 b=zGvHqrdX0umGUF746P2rRzrekLdpTpmSoy9S1Mi9CPEluV6furxk7GARLHSZ4cyy6DtGGNjZsfBJJnKIo/a+hxi9g2eXZbUDmtrehhW2WCgTb/Kqd4gnKwn4CX+3UE//QVuE0lFCM9m8aQekjEj99Tx0Ecu62BJwrKEMJ1Y9o8w=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <b8a4b183-34c9-4fba-a3b8-d86c4ee7b531@citrix.com>
Date: Tue, 3 Nov 2026 16:59:43 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH 6/7] gnttab: rename a parameter of
 gnttab_populate_status_frames()
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <38850629-8bfa-4737-99ff-0fd3f489e56e@suse.com>
 <06d74bd4-86f1-4c25-a6f7-f4e1c9de199f@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <06d74bd4-86f1-4c25-a6f7-f4e1c9de199f@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO6P123CA0042.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:2fe::13) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA6PR03MB7952:EE_
X-MS-Office365-Filtering-Correlation-Id: 1f174dfc-aafe-4715-1f61-08df39cbdd49
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|18002099003|22082099003|261102123227099003|56012099006|10067099003|261009221227099003|261009223027099003|261022105027099003|261021121427099003|4143699003|11063799006|261026121527099003|261028144727099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	nSosDdj/EXHM3gg5trdlC2gU9Wi93M6MeEcOPt7QPtErilX8ewpxk21x87iHkhsuJYfGjd7TV9PrTewdEqplm5XG2la1KV8oDchaHEsOXsmMWNn16j0itaxiJ5vLzImodOMfrGLKY90D7x/yBJLHO2jSHWEBrNn/BcYwZuiX+9TvD/iA+hNFSB/TUnI7x8nA9Yutf+kHQvQW+2kW5KAhvPsg7gP1DjL+7Qnfp+r9EOcsPK4F6N68T/dwGTw9OVk6R19rvavOSXHNUvZIrGIbR9PqX3PwcyJGqpnwch1JENhLHF1CC0PuotdbZ/GnH0PqnBRoks/6qVEv79VPQ5oySmFcDuCCuAwFncUIvV+oGxKvf2kA1OyR2ikBI5hHi7lzKPb+HEVWIVDhMTNDQPgjrmB38NIl/P2C5OIXRsuRtlu8gkrNqA7w6uaHGo7XDmnIImczRaVDMeyoUfsFBmEnNnc8RBbrh8RqvGQLFCOBU953wnrgmrN9/FSU9drBv9shmFe0hvAhYIRp8fUId9C7Duy2pZhkU3RIYwtYzN7bn70VquXKh2r1xP4yl4Klng0mSFyglHD1N3CrfeU2qSlHTqXlpxVduv6ZcwdFlaCjNOQ4pcEVtCFsAYsAk6szJWz6/dOgKu+0YOJ4rIG7MPkU0m8pGWJi9uz/qw7OZ8xD+ps=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(18002099003)(22082099003)(261102123227099003)(56012099006)(10067099003)(261009221227099003)(261009223027099003)(261022105027099003)(261021121427099003)(4143699003)(11063799006)(261026121527099003)(261028144727099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RXlteDlTQmxZcHh5bmRpR2J3WkEyd3RhMDVkVWQzTitCa3g1bm1ZSlA4UTJ6?=
 =?utf-8?B?M1pQU0VxZnp2QnppZUtlVW9NMzhVZHVYRTIwKysyejY3V3hDVzFsU3AzSy9G?=
 =?utf-8?B?WXk0cDNQQkJJZ1FlL09zc1dITWNMRmpsTlhtMjU3Yjl3T1JXNEtKRDhNYWlO?=
 =?utf-8?B?eGdFeldVcFc2bzlpak1RMDEwc3BybWNNSlpvVHJ2b09CNWJRemg1cS95azY5?=
 =?utf-8?B?ZEUxcExRWEJvMm03OHVjdW1ZMk1zd2FBbzdlNFBZR09SOWMwQmFnVFVEWHZh?=
 =?utf-8?B?TXpka2FPbnBNcHU2N0FOeW54MGZ6ZVhKU1FvbnpuT1VZcG5ZQ0ZUeVRSMW9r?=
 =?utf-8?B?eXFjTWFObU4xR2x0bC9pWmZocDhiZmZieHJsVGVnYjBsQU5XTVNtYVVUMU9y?=
 =?utf-8?B?OGhuMTlkdXIzK3pma0hIMzJjazZSeHBOM0xld0VpNWdHdTF6OFhTUDJFVFZR?=
 =?utf-8?B?MWxOZmxEMkZKVkVnWVFaeklqRkhiSUVDbjQ4UjZsN2puTjJXeGlBcTJmOUtz?=
 =?utf-8?B?UXMxN0NiSzMrMGFjSVNBdndoVHBseXZhR2NHRGVBSDR0V29GNFpqZlJNTWVB?=
 =?utf-8?B?bDFpRFFaTWhhQnVlVVZCSlNTZUNqbXRsTUhWRnFlWmsrV2pzR2xHdkw1MGo1?=
 =?utf-8?B?VXFYQzlMRnBwaVJ5YTAraUEwZjBBcU5CWnRpbWEvcFhtakc5Y3BRL0dINDRu?=
 =?utf-8?B?ZWFQaWw2VG0zVHlNZW9Ua2hkbEhWT0Nud0N3amk1d1hrOStreFRwcXdMcnFk?=
 =?utf-8?B?VURpMm4vdjVJQ2VqejNyMVJ4RW9BRXRwK2pkOVhFR2k4enRXclVsT081eUti?=
 =?utf-8?B?MFVtQ2xXdDE3NVJxNEprU2VrUUxJb0Z6NUFWNlpxb1VTNDlMdFpLdUVjZnN4?=
 =?utf-8?B?WGYxM21xNllkbElyWThNVnRXZFNWOXAxTmVRQnk3V015ZEVRcmE5eGtWVjNC?=
 =?utf-8?B?blpNbHZtNEpWeVlSTGRZY29iZmpnY2lZTzI0M3FhNW1pUmswYUxmRVdLMkJq?=
 =?utf-8?B?U3FPdWVYRytwZm5EWWlCR3lZWjBZSlhBamJmVVpHQWVGRWhFMW14N3FaRGtv?=
 =?utf-8?B?RnZGS2FHTkVkRnlHWkFTdVZZM3hGdW5CYzMzb204OWY5Rlg5eTBmeDMzZHVS?=
 =?utf-8?B?RFBua0UvNFVUSFJsNUY4OElGZ3NKdkhFWmdIUnp1a1k0WXUvWldHaUFpUmlT?=
 =?utf-8?B?ZU1aK1AyRERkSTVlOVVpbURjTHdwUVpYcU83S2ZzcCtETlRGZEFKRDdycU1R?=
 =?utf-8?B?YkhPeEhTandtNXVic3M1dXdTTTZDa0Jpb21VQUdrcWhramo2UWNrMFk3T1Bu?=
 =?utf-8?B?cFoxdFZHNWRxTE9wUk5EMEE3RWdzR05nWmZVNEpFQ0JISmlWVmRhRmFmVUJC?=
 =?utf-8?B?M3k3VzRxQnhKZDVBN2pPd3F4OTMwa0cxTHZ0OWNZcVRVRWFPMjdwSzBtNW1h?=
 =?utf-8?B?M0ZkaS93SVMzNi9FYlF2cXoxbHg0ejQwcFBSN29iQ2gzdGFibkFpNGYxdEtk?=
 =?utf-8?B?WmFiUUFUSlJxcmJ2NGFFMzhzUEk0Qnk0Z055bmFWWTA3cHU5cGJ0U1ZjRDRy?=
 =?utf-8?B?ZTVDQ01nUytnOFJhOUsxeDUwaWcxZmpmNkZWcDltRDVOU0o4SEZjVGxQQ0I4?=
 =?utf-8?B?SWlxUFIrNTd0dE02NFdLZzMrTDFmRXhWbDNMVExSOXd3bUNEcjFRZmo3QUhq?=
 =?utf-8?B?WWlWeG12S2JDdHVWK3l5ZVpYcTl2QUtTMjFpSGxxVmdFN0FZNnE2Wmh0aGoy?=
 =?utf-8?B?R1J5V0pJLzZCbzdKeHlZKzNCcGZwcytKcnVzekJNQ3dYRG9wZEFFUkJURGRL?=
 =?utf-8?B?UlE1cy9BcG1MaVcxRUNMWUxQdHpLTklWdlIzTlRvVnd2QWE2dlJUc3VYalcr?=
 =?utf-8?B?MTBENzZGVHlxK0xtQTNZei9iUE5EV2JvdzkwZWh1SnJQdit0K0tpRWZrRk96?=
 =?utf-8?B?RUdZUEUrODQ2ZkhwMWRiNDNoK3VaQ01HMjJCbEpid29Qb014cG15eTdNZmhG?=
 =?utf-8?B?bVgxVlZ6Zk9XRnp4UGFNSnozUXpFcTRQQ1hwNUVGWEhwZjVsQ0R6YjFBa0ph?=
 =?utf-8?B?cHhLWFRvV29FYzJ3QWRXOTczRkU0MTlyaFBXdGREejh0OGhnd2FlNTdWZGlu?=
 =?utf-8?B?NVErczFaQVdYMEFZWUlUVW5LdTN2NFNseUxwSGVGNVhSOVNONHhHNG5ZUGNZ?=
 =?utf-8?B?MFByTHAzc0tPRzRnb0RpaVdQdWZ2RWJXKzJmNWRxZUVrckJ4SkM4a21TQ0Yx?=
 =?utf-8?B?b1pPZUZKd0NJVDgrOXBjSVluZEhESk5QOERDSFpSTDMxME15MjVLNU56b2Jz?=
 =?utf-8?B?NmFKMU1ZR1k4UmFkdXJFNjd3dGJKZ015VFJTbXBRcmh0RWVNRkY2dz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f174dfc-aafe-4715-1f61-08df39cbdd49
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 16:59:46.5249
 (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: XaL+lwQqVBPnMzYhNCjpNXT46e+Rw0kPuCwx3xjSAFRUvBXMhXXx5pGT58ZUfjy86HfyUBBshGI7Trb+aDAvWoKuDnEvRD6dFzkVfdmDIqM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR03MB7952
X-purgate-ID: tlsNG-16d1c6/1793725192-F4E0677B-4EFE3BFB/10/78276251493
X-purgate-type: spam
X-purgate-size: 1506

On 28/07/2026 2:52 pm, Jan Beulich wrote:
> In a function of this name, "nr" (and hence req_nr_frames) is, at the
> first and second glance, the number of frames to populate. That's
> misleading, and it's also only what one of the two callers
> (gnttab_grow_table()) actually passes in; the other (gnttab_set_version())
> passes the number of grant frames already in place.
>
> Fold declarations while at it, and convert the assignment to an
> initializer.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/xen/common/grant_table.c
> +++ b/xen/common/grant_table.c
> @@ -1807,12 +1807,9 @@ fault:
>  
>  static int
>  gnttab_populate_status_frames(struct domain *d, struct grant_table *gt,
> -                              unsigned int req_nr_frames)
> +                              unsigned int grant_frames)
>  {
> -    unsigned int i;
> -    unsigned int req_status_frames;
> -
> -    req_status_frames = grant_to_status_frames(req_nr_frames);
> +    unsigned int i, req_status_frames = grant_to_status_frames(grant_frames);
>  
>      /* Make sure, prior version checks are architectural visible */
>      block_speculation();
>

I fully agree that it's misnamed.

However, I'd suggest req_grant_frames to match the req_status_frames,
and also to hint at why it's not just gt->nr_grant_frames.

It might also be worth a comment saying /* The number of status frames
is always derived from the number of grant frames */ or something similar?

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:00:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:00:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470276.1679011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHsY-000816-En; Tue, 03 Nov 2026 17:00:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470276.1679011; Tue, 03 Nov 2026 17:00:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHsY-00080z-C8; Tue, 03 Nov 2026 17:00:58 +0000
Received: by outflank-mailman (input) for mailman id 1470276;
 Tue, 03 Nov 2026 17:00:57 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHsX-00080n-7h
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:00:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHsW-007Z5c-KR
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:00:56 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea1343-8faa-0a2a0a5109dd-0a2a4501b428-10
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:00:56 +0100
Received: from [209.85.221.47] (helo=mail-wr1-f47.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea1348-5984-0a2a45010019-d155dd2fdd4d-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:00:56 +0100
Received: by mail-wr1-f47.google.com with SMTP id
 ffacd0b85a97d-48e20edd106so3389238f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:00:56 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48e71ba4ac6sm27964798f8f.52.2026.11.03.09.00.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 09:00:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793725256; x=1794330056; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=3bj7h5RAsQE89CNAW2SKedyVgu3o8P+AqCSDGxfBN2Q=;
        b=WzRbygePdZWMlosegZ/IOn5ZXqDTLdVYN5WV9wwr5goqOLBev1PP29c5+gISz/+LE+
         SueGyEnjfjtX26HUnOo4AWALABoGlFD+OYl5fSpDKuSHXX7DrnkTlJAlr4OufkuR/D5a
         DsSXeA/N0WGpbb9ciOqlNepA8qzP96ANIk42fLOMJMlTMjUjmK/vPVxj6thy4vcmlvBf
         VQXvZFBwOiii9lrWo4NgsWWiySgo54bVRCoLuHcU6v0z0KwJ9dY1elnXJ+VXGSL5OBFQ
         SkGwrsdV3aNkcw2Czf+G1kL2OFN/lgY+bogr9mX+thcDBtCwleZfbmVWm8esh1rKIeGw
         E/Rg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793725256; x=1794330056;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=3bj7h5RAsQE89CNAW2SKedyVgu3o8P+AqCSDGxfBN2Q=;
        b=KmhoF8K55eZr54cGu+Rzo3P9R1G81CyZbqpmfoJB5dkbCa3tzzOrWQVXdeTt4HC3F1
         UtvD5oPvqzWqCpvMIicd74YcUieVYwDPYpzVXSYRccajB1MwtuZb7z9Q0nfHOu0UnPXg
         hlEicghRezFU6d3lpgdJAvWbUqTPktM07ILFRGFrrHlhxMWjr5ovYcQRr9fByy3ZAzFr
         FgDdwUH0yGnk8+v/y9esH1WdFmsOerXMOlp7QFl/jvow90RTKPI9TsrArxxlCJ5r3Fko
         CUhKJ4Pnx0INBMRemUrAGPuzkJ7TGKcUwnOQTu1IktE4cPvb3OqWYh4csvT9NS6nUoxU
         e8xw==
X-Forwarded-Encrypted: i=1; AKwUvBw0bE0tH4nX5UkzFQXXaiC4w5xz9pJf3l4mcPAJqpyUu+4szeAJOSmsYkfqRLkWW7cyQYTJNIHAibw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8WXkt/i1FDNG82/FQRA03nh2FNEjMZBOZSTJOG2Yyk7AmqnNvE
	qspgh/NrCqU8RbLjFDUHDg4Az4PqplxyAcVoMJnQARvBleXth9MW77RlDdq45Dl5Fg==
X-Gm-Gg: AYBFou0jY2kqKW1EhG7BbQU7a718UxpOtSYP17lN8b3EU7hNaa2u874tX8GhA4ucuP6
	wvRITvK3m/akpl5gTyTgGpEzf61l7HVuF8WWG4H2NnkyxHM4899NOdKeavmNNpypa2kYOV2/hCj
	imzdOKWkZ42QwAUE/UXiZRsfeymhNFfEKU7GzadYemxaGOxhIilNYxfbFWfGe6KJ0ZhUT4a6s1c
	3geEUENyeS1ZRBI8c/fDSd65X/Efvb8K1FDoagv/Fbe0lZ89MCixBFY3+rZEUStF2VJOYFUX8Bh
	PuSu4ZNLmtxOSPIILmh9J9cVcpg4kWA3GNw/+JGkTJXS5YUXoNXoTcQ56OkDnbfv4/D+wSJ940X
	LG292E9sC+RBMiP35zY+jrZCo6oRHV8DXBTMEweJ6t9IzJ/bcEKO0xbReSLPI4bVW95O9UXcd3d
	bBFXLR+mKT2DrIxercLfTesNp+KhOu481LGEuJgDnm9QC5tmnTzXqI5gbOW8SjG5Xb7SdA6kPyJ
	vM4+6n5xyr1za60dyxw+F8/99lnj9rJTx/nPLeKlKieoTbIbfivXmOf0XAEB3pa8WAmUoESGnGz
	cGyprzdCLA33axCjF7Rtlk/asuAskt/7c/Tktq5nHu7x0PSGQlDIfFuMHT+jxefBMbsBaUYGFjp
	cZnwG7iZDqHaeKvc=
X-Received: by 2002:a05:6000:2587:b0:48e:5d63:a4e5 with SMTP id ffacd0b85a97d-48e6e26184emr30597813f8f.0.1793725255452;
        Tue, 03 Nov 2026 09:00:55 -0800 (PST)
Message-ID: <9a163ab4-a8ab-47a9-8e67-c283d3ca94ab@suse.com>
Date: Tue, 3 Nov 2026 18:00:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/6] xen/gnttab: Fold error handling in _cache_flush()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-6-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103152928.2142176-6-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793725256-1DA7E757-BB2D34ED/10/78276251493
X-purgate-type: spam
X-purgate-size: 952

On 03.11.2026 16:29, Andrew Cooper wrote:
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

> @@ -3683,13 +3682,15 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
>      else
>          ret = 0;
>  
> +    unmap_domain_page(v);
> +
>      if ( d != owner )
>      {
>          active_entry_release(act);

I was first meaning to complain about the unnecessary new lock nesting here,
but the earlier map_domain_page() also is issued with the active entry lock
held. You move things to a more consistent pattern this way, which is good.
Yet at the same time avoiding that nesting might also be a good idea.
Something for a later change, I guess.

Jan

> +    gnt_unlock:
>          grant_read_unlock(owner->grant_table);
>      }
>  
> -    unmap_domain_page(v);
>      put_page(page);
>  
>      return ret;



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:04:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:04:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470286.1679022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHvS-0000PG-VB; Tue, 03 Nov 2026 17:03:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470286.1679022; Tue, 03 Nov 2026 17:03:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHvS-0000P9-Rq; Tue, 03 Nov 2026 17:03:58 +0000
Received: by outflank-mailman (input) for mailman id 1470286;
 Tue, 03 Nov 2026 17:03:58 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHvS-0000P2-H5
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:03:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHvR-007Zis-Mc
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:03:57 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea13f3-2eae-0a2a0a5409dd-0a2a450beb68-40
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:03:57 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aea13fd-b7e8-0a2a450b0019-d1558032d02f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:03:57 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a2069b9710so37877965e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:03:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b2ab010a66sm101569375e9.13.2026.11.03.09.03.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 09:03:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793725437; x=1794330237; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LxJxooDbarITeaL6sRcdX18vTLW/TOY6yuwurs8VvUM=;
        b=a0lqzEAbXs9ib0n+iudxb5iC4wmMppR9Ll/TJvz+MmyU7Z0b3cAxL/vbVoY66+6nrn
         /mDw3eBdBsvuii1ifgoflps2yuIBJxd79p+b6cUmCjnmonE+GHnpKcexS2bVJElHenbi
         /CFGTVJmWJwzkPP9eGTCWoRMWExPWROegHWsr4f1k29gCHaeafbyaUmGWH9AxgFMQoJ2
         V1QfSS80dkY07L5/LCYiYUmjnNdK5CaTlcXlmZfVUi4ID4EUoRFk7nMCSlAy03u7V84+
         T5sQ+KO4bHZ/2xVOiaktqcNcH281NVgzIQkcQvli13ZFluI1cVk3n0gjmQFbgctwipjr
         mxlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793725437; x=1794330237;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=LxJxooDbarITeaL6sRcdX18vTLW/TOY6yuwurs8VvUM=;
        b=c9k14tPnZRLg95JygzLlGdW1vK14NnhZ1TnEMU9Ejc7vO0IPKmIqDmJCJj1uifQrvH
         pDenREeY1mRyIAJxTi5KlpZ5tAZusJkdmBrYqYnTynGAFdznhOtGFPcfrtmLpJFuIxRM
         8tKwhD0aOOCgIhwa08S3H+UJW00SBk4PttJJFg96cZqLR+6jb2IvreaN1ZKj4h6H9F3d
         Rk1XVuEjWFPtqZyUyt6uwXH3mCFytfFEXbTal0fOzw4E3+M1Kax8ccX/UFIRm+A8Tefe
         f6z6ZZ9yhBaR4JsSYpBr5knX9MbUsAzeJE3yOpeMRR8bTgD7YBnGjnQyZfCyGMUVYHEL
         QHUg==
X-Forwarded-Encrypted: i=1; AKwUvByzv4HY66IM9qNhU18oMXWajUDBD3EFUmbFyreG+O44lXGePh+gvoqG9d7oNs4CeINod+384v5GVe8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+oDIZ75ntPegiIKLbBz4aReQFgvMIJfUV5ayiulH9fiOhPX+OM
	GSo2Ygt/X2AHLFaacjtf9rfFXDKiAFR/LG8G+an/9oOuv8kMx/r/HPWno68SD4LJxQ==
X-Gm-Gg: AYBFou3klpPxQblDxQ7GF2H5ByD6fpJFfEjNB1eiEjV/OI0ze5aRj64uyxrLrnIWNJN
	bTYjHnp1MwiV4Klg7WYWeoWVjOJBK6T0Bh3ct8oUpXwZm2L4pkOb0/JlMQUBdBpTObkBwbjtupL
	ENiISYvW+blmVkKJy+VnlxVQRqyB0Uq2wBwnwa/o9spaWhR8gJy9as9QMhrMyvXUJVlogYBFl3z
	8v/KrBDp5zEh7vnTjoSFNS28680rwl1beAxi5mi4j1Jgjvdb+U5MZHsyliS+x5CY+7ISX42w2QH
	6ExNUHT7Y+OpVjb8EykXzSdc6hh1fMHd7E7d0zncVQqsQwm8j/kZiyq3Ldy7UXtoiSOLiooOSIG
	lYiqPS8W0kPUZ11rOYh0SEDJeQQj+LwVDJLMqDHKMOv0sbs4p/Fo7DIS0GGT+c4jVWj3Sr196Nx
	KziEM29BNoMSV3WCHxl1/mMmWAs/otCu2IHCT7tN7pITfAWIsiaoJ75YvoR8U0jjn5fiJyCK59C
	cNwkMNTHPLrz3JP+x/a2LL8eMhrXR5gdriV9ZXfOwsDy/x4bM77qtRgTzqLHSt+WqQI4EGffEgV
	t2OAb2r+zfE13mdHr0lxgHVlIbs576LnpftstIoYFR82nY/B0ZPfzNg+WayJxPYLkNmuqKzoWFv
	DuSq9Mp/AE3rQrbD5
X-Received: by 2002:a05:600c:a107:b0:4af:e04f:cbaa with SMTP id 5b1f17b1804b1-4afe04fcd89mr135860605e9.29.1793725436766;
        Tue, 03 Nov 2026 09:03:56 -0800 (PST)
Message-ID: <990e8f72-eb5c-4136-8ee4-ef8a00838024@suse.com>
Date: Tue, 3 Nov 2026 18:03:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/6] treewide: Make {invalidate/clean}_dcahce_va_range()
 void
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-7-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103152928.2142176-7-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793725437-A98C19EA-F0C825FA/10/78276251493
X-purgate-type: spam
X-purgate-size: 458

On 03.11.2026 16:29, Andrew Cooper wrote:
> Precisely two functions - RISC-V's flush_page_to_ram() and ARM's
> _cache_flush() - check the return value of these functions, yet all
> implementations return success, and ARM documents this as a requirement.
> 
> Make them void and simply the callers which care.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:04:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:04:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470289.1679030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHvp-0000kn-54; Tue, 03 Nov 2026 17:04:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470289.1679030; Tue, 03 Nov 2026 17:04:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHvp-0000ke-2A; Tue, 03 Nov 2026 17:04:21 +0000
Received: by outflank-mailman (input) for mailman id 1470289;
 Tue, 03 Nov 2026 17:04:20 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 1xOHvo-0000kQ-Cv
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:04:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHvn-007Zn7-QA
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:04:19 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea1407-8faa-0a2a0a5109dd-0a2a450788a6-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:04:19 +0100
Received: from [160.101.131.9] (helo=na1pdmzitismtp02.tibco.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <abdelkareem.abdelsaamad@citrix.com>)
 id 6aea12e6-b4ea-0a2a45070019-a0658309e314-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 17:59:19 +0100
Received: from fedora (unknown [10.113.40.46])
 by na1pdmzitismtp02.tibco.com (Postfix) with ESMTPS id 9A666845AAD5;
 Tue,  3 Nov 2026 11:58:14 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: jbeulich@suse.com,
	andrew.cooper3@citrix.com,
	roger@xenproject.org,
	jason.andryuk@amd.com,
	teddy.astie@vates.tech,
	Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
Subject: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen intercepts L1
Date: Tue,  3 Nov 2026 16:59:07 +0000
Message-ID: <93437f7cd832790b61c520332cbfa432c75ad8fb.1793723920.git.abdelkareem.abdelsaamad@citrix.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793725159-A46CAAE4-B2D81F8B/13/0
X-purgate-type: clean
X-purgate-size: 3425

When nesting SVM, if the L1 hypervisor has not requested a virtual interrupt
(VINTR) intercept for L2, Xen should not force one. L2 execution should remain
isolated from the L1 VINTR state, and there should be no expectation that L2
execution results in an L1 VINTR becoming deliverable.

Currently, if Xen intercepts the VINTR for its own L1 management, this
intercept incorrectly forces an intercept during L2 execution even when L1
intended for L2 to run without it. This breaks the expected transparency of L1
configuration and introduces unnecessary VMEXITs.

Furthermore, handling this forced VMEXIT_VINTR can cause a pending L1 virtual
interrupt to be incorrectly delivered to L2. This occurs because when the
intercept is determined to be requested solely by the host
(returning NESTEDHVM_VMEXIT_HOST), svm_vmexit_handler does not switch to the
correct VMCB context before evaluating the interrupt injection.

Fix this by ensuring the L2 VINTR intercept bit in the L2 execution VMCB solely
reflects the L1's explicit configuration for its guest, independent of Xen's
internal L1 intercept state.

Signed-off-by: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
---
Testing:
 - Test setup using a custom XTF nested virtualization setup:
   1. An L1 maskable interrupt is triggered while L1 has physical interrupts
      disabled (via the CLI), leaving the interrupt pending.
   2. L2 is launched via VMRUN with an active, deliverable virtual interrupt
      configured in its VMCB (L2 EFLAGS.IF = 1, L2 vGIF is unmasked,
      V_IRQ_PENDING is set and L2 V_IRQ is injected on a distinct vector from
      the pending L1 interrupt).
   3. Xen enables L1's VINTR_INTERCEPT to catch the next available VINTR
      window. L2's VINTR_INTERCEPT is kept cleared.

   Results:
     - Old Behaviour: If the pending L1 maskable interrupt vector has no
       handler mapped in the L2 IDT, L2 immediately crashes. Otherwise,
       the L1 maskable interrupt is incorrectly leaked and delivered into
       the L2 guest.
     - New Behaviour: The L1 maskable interrupt is securely withheld from L2
       and correctly delivered back to the L1 context upon the next window.

   Note on Test scenario:
   I think the same window race can also result when having an injected L1
   maskable interrupt handler that temporarily raise the TPR to block
   lower-priority interrupts, with the intention to be lowering the TPR
   asynchronously later, then executing the L2 VMRUN in between.

 - CI tests:
https://gitlab.com/xen-project/people/aabdelsa/xen/-/pipelines/3023453459
---
 xen/arch/x86/hvm/svm/nestedsvm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index 128008321d..21b50a59b0 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -403,6 +403,9 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
     n2vmcb->_general2_intercepts =
         n1vmcb->_general2_intercepts | ns_vmcb->_general2_intercepts;
 
+    if ( !(ns_vmcb->_general1_intercepts & GENERAL1_INTERCEPT_VINTR) )
+        n2vmcb->_general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
+
     /* Nested Pause Filter */
     if ( ns_vmcb->_general1_intercepts & GENERAL1_INTERCEPT_PAUSE )
         n2vmcb->_pause_filter_count =
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:07:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:07:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470311.1679039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHzG-0001gF-J6; Tue, 03 Nov 2026 17:07:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470311.1679039; Tue, 03 Nov 2026 17:07:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOHzG-0001g8-GE; Tue, 03 Nov 2026 17:07:54 +0000
Received: by outflank-mailman (input) for mailman id 1470311;
 Tue, 03 Nov 2026 17:07:53 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOHzF-0001fv-LZ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:07:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOHzE-00F3Vk-Qd
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:07:52 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aea14d2-bab6-0a2a0a5309dd-0a2a450bc4ce-28
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:07:52 +0100
Received: from [52.101.52.32]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aea14e4-b7e8-0a2a450b0019-346534206068-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:07:50 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by BY5PR03MB5348.namprd03.prod.outlook.com (2603:10b6:a03:21b::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:07:45 +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.0592.007; Tue, 3 Nov 2026
 17:07:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=N+uel5iu3PwqNGKiJdrYAsBUFH/pRSdQUjmpydw7oc/sy29bXw0dS2Y/0v0jPWxbHlTU0PRZs0kt/r2FUhGVLyCjyz/f84/921WUX7j09AvHak/7lIknvVGuuCXE4XHPP20rELvPk9xK5jEEputJOHLZhYF4c5nMbfq0PjmvV9ZLOwNdIvqk74GSujhHvz4Or5DXZVrOhTzIG5An9qDrB51GEejH7FPH8scXzpROJT/qsnNR5QP9Y2MJ7qhoUxyHd83IZLB+X/pGiRA6qVDeeF0SbC6hOotj6mHp4tYwMeWcgbI2msPzGysVlrRXfp+qrmYui5X9f5047+lRf7odug==
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=3yO2774Qc6/2csyiWXKPlSoEKms2gNaH8nsP9aIadlI=;
 b=bOWGP2Oq4m+q1Ssjy3FNMngPUxE2shkUveSRO4VISkJWbKYrEfM+Zdz452NVvnNYO2f2ySYck+oy9KlJ/p+snZmV4QGzh5VLUQBDOmvj2klCn0WW+rg7g09l6c2h6oC2OzslggvvUsebybM9gR2Jix2OSiC1Xpz44WcAFRnYscIBXQLeYC7GkYIvicrjKeKqbESGNBuLRoAlIV7Nxe13XAbDtBZCt0/Uv0Pv+h1Fv7ZTcHn50PH9D2rjhN1/52IgiR4RDOp0XuUyJhHAvz7KeBjYO+BgQK2g4uzTlWmf/vQ7YLjnQFLleqGCwQIwZCH6dgsiOxcS9BUSqR4WoPm6aQ==
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=3yO2774Qc6/2csyiWXKPlSoEKms2gNaH8nsP9aIadlI=;
 b=r1l+neHBYJcEesKG8QZRm6W1HhorUEBkMIS1mgtg3/OT7xMpk1uVnLDwFxHE3Fh4D+DyYgScX0haYSsKgAPYlA7MdXrLBMUbrUoA3OAd4U+rQkUIlwHXsRM+SF0E2Kgt4FmUKdtYHl14MlXmEQoLzO0pyfqriFcc4tQZyabIy5o=
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: =?utf-8?B?Q2h1bmppZSBaaHUg77yI5pyx5pil5p2w77yJ?= <chunjie.zhu@citrix.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, "jason.andryuk@amd.com"
	<jason.andryuk@amd.com>, "jbeulich@suse.com" <jbeulich@suse.com>,
	"roger@xenproject.org" <roger@xenproject.org>, "teddy.astie@vates.tech"
	<teddy.astie@vates.tech>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v1] x86/nestedsvm: honour L2's EFLAGS.IF when L1 clears
 V_INTR_MASKING
Thread-Topic: [PATCH v1] x86/nestedsvm: honour L2's EFLAGS.IF when L1 clears
 V_INTR_MASKING
Thread-Index: AQHdXVVTRd+tP+KIck2rlzcwmbytZrcU2N01gAdj4ACAAGzRfQ==
Date: Tue, 3 Nov 2026 17:07:45 +0000
Message-ID:
 <CH8PR03MB8274B269EEAFE914E122E59AF0692@CH8PR03MB8274.namprd03.prod.outlook.com>
References:
 <CH8PR03MB8274BC92D24DC22A0E41AA63F06E2@CH8PR03MB8274.namprd03.prod.outlook.com>
 <20261103101134.236608-1-chunjie.zhu@citrix.com>
In-Reply-To: <20261103101134.236608-1-chunjie.zhu@citrix.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH8PR03MB8274:EE_|BY5PR03MB5348:EE_
x-ms-office365-filtering-correlation-id: e20e88a3-a265-4d07-e039-08df39ccfac1
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|38070700021|4143699003|11063799006|56012099006|261009223027099003|261009221227099003|261022105027099003|261028144727099003|261026140227099003|261026121527099003|10067099003|22082099003|18002099003;
x-microsoft-antispam-message-info:
 hZXn6M9AllH3Q2z4JbIoD63APuP2ySa7RUH2gru3YYhjcTRyTFS57m30fHeP+kvYsmJZRx8IFEEdAuMRPRLCVMvjodCTYh+p02afWYP4L6nz3ANUBf4bPYkoFMZ92Dy+J4M5iOQVTSgeRqkeW2vwk3gFEbkzWWecUDrgQiQDhf5upa5ciebQPoxDxqpGI9gY6PuuzO1OcMxgGs/ajXJJFitqofZDfNkShuLTlg037ge3bh54LuMAAEEEGhjp8PvjcKV4UipXFwRKbjU1oTvKUYuuBpKbZJUiZvNnwENqFFpmGDcDwKurWmUOCejF7Oz1WKZlo1r0PwOXTh6wN+sFBERxIyvX+mEVds9UUoa7dCBu38jTpJrH/DE24ha3WfP2/eTa8PF4afr12QAtUwQTtsk4S9NS5w0oNEZwVOe1lbNiEQeV0bVBzgRg26J7SmAORoerDPHNaztrKKkPtQpE01tscl2dJJHL+MlkKINskVuxx5cfX42GjbEC0ZxYGO1ngptlqJ9UhuNVGPNcv6RxRtuJs5gK3knZAejGbaLXlLbGBCV9HsRZDgJvGuZsuOyVjXzIK568WZeEaMNSygJF3jXZFh0URegFAqllNg383JwWQqyqCTFK8AgtNeXlH4cc6td56pN3lfHV87WUIzp4pr2v4twL6GM4nF0Q7h2HvuQ7pzr39s7OCm4pjfwpY/CKrGlZ2GGWkaB+h3pjWVbLcH04v3njz+hBkN9twaXgpgM=
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)(23010399003)(376014)(1800799024)(366016)(38070700021)(4143699003)(11063799006)(56012099006)(261009223027099003)(261009221227099003)(261022105027099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?blczNkN4ZUZySjhwSzh4WVZ4QnF0L0c0WHNVWk5wZEdKaGtmK0g5UTlHSWJC?=
 =?utf-8?B?L1VHdnRWWUFvQ3pza3BPMEtaUXZieEpNWU1vVFpYTTMvK2pkL0dLaE10a0hN?=
 =?utf-8?B?elF3WnhHKzhVU3RKSTBnNGFzV3JzMnJwcTY4Z21jNzJ4ZEZXYkszZ1NySUNT?=
 =?utf-8?B?Y0gyZDVMTk41SnpvckNJeDBybElHVDQzQ2U3enQyRTlFUWFWUlVIQ0VPTUVL?=
 =?utf-8?B?UXpzdGI1eFkySFZXa2ZnT0FsSlVoVmRiQTIvayt6U1pwc1docENXaWRERnZS?=
 =?utf-8?B?dkV4K1R5dk9VSDYwY2RFQlh5dXNPNjlkVnAxTGZEQ2NpRHcrZ0VPem9wMFlK?=
 =?utf-8?B?UkxaVzJCU0F6ei80dnN1ZDlIR2hqdkphU0JRU3dRTGF4bVU2c0pVUUZadVV0?=
 =?utf-8?B?amwzd2kxb0Z4WTdMTUJhNnpYcCtSOFNleWJ1U2g5enFVK3p0aSs4M3QxbStM?=
 =?utf-8?B?eWFxdXAwRXRlM0NoSGVDK3J1OGQ2ZUM5ZURhUHVMTHZnalhMZHlCSTVDbVI0?=
 =?utf-8?B?L2pFMWUySmlVd0xqZHFkUXRzcUFsWVRVVTZFczBLZEMzNU5hTTd2a09iOW5h?=
 =?utf-8?B?WlFuQytUM3FRSzlXQjBxaVZLaUVnVEF3MFNrM2tOcG5YeDBpeXB3d3AyemFK?=
 =?utf-8?B?UHZrdEZYdlNmcXIydEhZOE9tRU5WS2d4N1VhWDAzNFZtaWhDVDFZZ3VIelp3?=
 =?utf-8?B?NGYveHVhMG40ZzJicldJZmRYaHZYaW9meEVqb1ZIZzBla2ZURmEzSko1UWRW?=
 =?utf-8?B?K0o0Y3FjalNHbllHcVFyRTlFQmRORzJLeEt4WTVyV3phSXNXTFJubFNOK0VK?=
 =?utf-8?B?aXdqNTBaVDdULzNhTXhDWUoydHVnZGdrRkx6RTdWTEpEUUdya1ZJeUxySzdO?=
 =?utf-8?B?cHRkTGJuQ3JwTnVFRWpzSFNqYkthempWb2I0eWFIajM4cjUxYXFyRHUrNmQr?=
 =?utf-8?B?QTRzVm42anhTUFNzWXo1MllIZXRxbFl4Z2k4STFqejRZYjJxdlVlVjJ3dlBJ?=
 =?utf-8?B?QTBraURJRzFKN2FESHpSS2F0MDAxK3dleXBVUnl6ZTZmcjlab1VoaWIyUkNP?=
 =?utf-8?B?bmVuSzF2VktpcTJGbFhCdTJLYlZsWFZ1enlwSGhPM0pUZ2xpT2lMNFhWYnd4?=
 =?utf-8?B?K3l2TkVaRGEzQTc1UzREZFNpUTIxU01laWdkVnZrOThodVowWHR2aUFWWFhr?=
 =?utf-8?B?N0JweXozYjBWMXBPSXhseURTMTdRSitMVnNKdGVnVDhnbkdRUmdMak5DVVVK?=
 =?utf-8?B?TU5ldEpObGZTcmNWVFJNWUtRblFJY3NTM1FlVTJLL1AzZjVMZ0xUb2szMFdl?=
 =?utf-8?B?cFhzbjhPODRIa0piRFpLSzlUM01NSkxWdUZHdTloaG5pYlVqR3RreE8wZnV1?=
 =?utf-8?B?Z1BMa0Q2dVBoRlNBdVlQd2o4TnhBenU4N25qb05naEo3WUFqVnAzMlFYT09s?=
 =?utf-8?B?NnlEdkcwMkJISXNoLzlYU2o1dmRzYm1VQXc2U3BKd292a3JvV0wzVW1rKzQ1?=
 =?utf-8?B?bis4YzlRcnJJRDhuNFhWdmNCb0FZdmR6b2pWek9kcHFqMEVUc2hjYVNxcmtp?=
 =?utf-8?B?VC9aQjRCaXJzNE1GdXRaYW9VRTdMRHJXMGhwcGd5aUNVMFFLQ21BOXkwN0Zl?=
 =?utf-8?B?U21LS3h6cHVNbDhnQzd6cU5Zc3B3MnJMK0x4WTNJK0FUbHlFMXpXQkNKdStN?=
 =?utf-8?B?Z3BVZGlzRWdrVndZblpmdmFsdkN4VGVqSFM0QithS3RPeHEzR3o5cWtjOVRC?=
 =?utf-8?B?VjRmQ1lFWjcrWDV6SmlpcW5lcFQ5a3I2QU9EamNhSUNmVytRaFQ2bEp1VjAv?=
 =?utf-8?B?WEIrZ0lzUnRCLzNXcXJPSU5ZdCtRWHc1Z1ZtOHhiYktuV2hwQm9IRzkrSjRB?=
 =?utf-8?B?aUxKTklQbG9UY1Q3UkdwdVRFaEdnUE1DY0tnbGhOeUZ4SGk4OWI0M1JzcVdL?=
 =?utf-8?B?NjY5bW43T0RkQk5Zd2QvS1VJMzRDUTZiR1UrR21TQ1ByeW9jeFUwcTdOVytu?=
 =?utf-8?B?VkxnelZwN3pFRVRWcG43ME4ydGxLSTlydGxpSEk5NXRWWnR5MkZzRkNqNUhD?=
 =?utf-8?B?b09lSEwwSUZydVUrVENveTBWZVE3MFRWU0RHZ3JIc2pGQW9ndmlOazEyMjNz?=
 =?utf-8?B?N1RRK1BEbU5xUkI2K285TFoybllYNFNRTnhmK1FYUnJBaVNSak9BSEVIYVBt?=
 =?utf-8?B?TDRtdjBqcG4xeEovelMvZGlGYnBvMkNsUkhZYnpPZ0M3R0lySU1Dek9FR2hB?=
 =?utf-8?B?bThudVNTd1N5K2hMcDJCNkFOWEQrYkpwemxkczhIYjhFOWNDNDd2Mk9JQkYw?=
 =?utf-8?B?VmZ0MVNpbjlaRGc2NUdMaysvaWZlL3FjTVBOQno5eHA0N0tLOWxpUT09?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e20e88a3-a265-4d07-e039-08df39ccfac1
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:07:45.2573
 (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: 2GzOduqCqCYfORxr1E/IFLj6nRG0Tbr6wONtWKUsXrqztiWqKaKm8FlLet+A28JZdveisNz0LPC0DB8PW/kL9lrywfJtSx4h8ctuzfQhfqI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5348
X-purgate-ID: tlsNG-42698a/1793725671-AA0C59EA-9ACDF9BF/10/78276251493
X-purgate-type: spam
X-purgate-size: 3576

PiBGcm9tOiBDaHVuamllIFpodSDvvIjmnLHmmKXmnbDvvIkgPGNodW5qaWUuemh1QGNpdHJpeC5j
b20+Cj4gU2VudDogVHVlc2RheSwgTm92ZW1iZXIgMDMsIDIwMjYgMTA6MTEKPiBUbzogUm9zcyBM
YWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+Cj4gQ2M6IEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+OyBDaHVuamllIFpodSDvvIjmnLHmmKXmnbDvvIkg
PGNodW5qaWUuemh1QGNpdHJpeC5jb20+OyBqYXNvbi5hbmRyeXVrQGFtZC5jb20gPGphc29uLmFu
ZHJ5dWtAYW1kLmNvbT47IGpiZXVsaWNoQHN1c2UuY29tIDxqYmV1bGljaEBzdXNlLmNvbT47IHJv
Z2VyQHhlbnByb2plY3Qub3JnIDxyb2dlckB4ZW5wcm9qZWN0Lm9yZz47IHRlZGR5LmFzdGllQHZh
dGVzLnRlY2ggPHRlZGR5LmFzdGllQHZhdGVzLnRlY2g+OyB4ZW4tZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcgPHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4KPiBTdWJqZWN0OiBSZTog
W1BBVENIIHYxXSB4ODYvbmVzdGVkc3ZtOiBob25vdXIgTDIncyBFRkxBR1MuSUYgd2hlbiBMMSBj
bGVhcnMgVl9JTlRSX01BU0tJTkcKPgo+Cj4gT24gVGh1LCBPY3QgMjksIDIwMjYgYXQgMTc6MjAs
IFJvc3MgTGFnZXJ3YWxsIHdyb3RlOgo+ID4gV291bGQgaXQgbm90IG1ha2Ugc2Vuc2UgdG8gY2hl
Y2sgdGhpcyBpbiBuc3ZtX2ludHJfYmxvY2tlZCgpIGluc3RlYWQ/Cj4gPiBUaGVyZSBpcyBhbHJl
YWR5IGEgc2ltaWxhciAoaW52ZXJzZSkgY2hlY2sgdGhlcmUgc28gZXh0ZW5kaW5nIHRoYXQgc2Vl
bXMKPiA+IG1vcmUgbG9naWNhbCB0byBtZS4KPgo+IFRoYW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24s
IGJ1dCBJIHRoaW5rIHRoZXJlIHdvdWxkIGJlIGEgcmVncmVzc2lvbi4KPgo+IG5zdm1faW50cl9i
bG9ja2VkKCkgaGFzIG5vIGFjY2VzcyB0byB0aGUgaW50YWNrLiBQZXIgdGhlIEFQTSAodm9sLjIs
Cj4gc2VjdGlvbiAxNS4yMSksIFZfSU5UUl9NQVNLSU5HIGNvbnRyb2xzIHdoZXRoZXIgdGhlIG1h
c2tpbmcgb2YgaW50ZXJydXB0cwo+IChFRkxBR1MuSUYgYW5kIFRQUikgaXMgdG8gYmUgdmlydHVh
bGl6ZWQuwqAgVGhhdCBtYXNraW5nIG9ubHkgYXBwbGllcyB0bwo+IG1hc2thYmxlIGV4dGVybmFs
IGludGVycnVwdHMgKFBJQy9MQVBJQy92ZWN0b3IpLsKgIE5NSSBpcyBub3QgbWFza2VkIGJ5Cj4g
SUYvVFBSLCBhbmQgI01DIGlzIGFuIGV4Y2VwdGlvbiwgc28gbmVpdGhlciBpcyBhZmZlY3RlZC4K
Pgo+IFdpdGggdGhlIGNoZWNrIG1vdmVkIGludG8gbnN2bV9pbnRyX2Jsb2NrZWQoKSwgYW4gTk1J
LyNNQyBhaW1lZCBhdCBMMQo+IHdvdWxkIGJlIGhlbGQgcGVuZGluZyB3aGVuZXZlciBWX0lOVFJf
TUFTS0lORz0wIGFuZCBMMidzIElGIGlzIGNsZWFyLAo+IHdoaWNoIHdvdWxkIGJlIGEgcmVncmVz
c2lvbiBmb3IgTDEgaHlwZXJ2aXNvcnMgdGhhdCBpbnRlcmNlcHQgTk1JLyNNQy4KPgo+IFNvIEkg
d291bGQgcHJlZmVyIHRvIGtlZXAgdGhlIGNoZWNrIGluIHRoZSBodm1faW50c3JjX3BpYy9sYXBp
Yy92ZWN0b3IKPiBjYXNlIG9mIG5lc3RlZHN2bV92Y3B1X2ludGVycnVwdCgpLCB3aGVyZSB0aGUg
c291cmNlIGlzIGtub3duLsKgIElmIHlvdQo+IHdvdWxkIHJhdGhlciBoYXZlIGl0IGluIG5zdm1f
aW50cl9ibG9ja2VkKCksIEkgY2FuIGluc3RlYWQgcGFzcyB0aGUKPiBpbnRhY2sgZG93biAoY2hh
bmdpbmcgbmh2bV9pbnRlcnJ1cHRfYmxvY2tlZCgpKSBzbyB0aGF0IHRoZSBJRiBjaGVjawo+IGlz
IGFwcGxpZWQgdG8gbm9uLU5NSS9NQ0Ugc291cmNlcyBvbmx5LgoKWW91IHNob3VsZG4ndCBuZWVk
IHRvIHBhc3MgaW4gbW9yZSBpbmZvcm1hdGlvbi4gbmh2bV9pbnRyX2Jsb2NrZWQoKQpyZXR1cm5z
IGEgcmVhc29uIGZvciB3aHkgdGhlIGludGVycnVwdCBpcyBibG9ja2VkLiBJdCBpcyB1cCB0byB0
aGUKY2FsbGVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggaXQuIElmIHRoZSByZWFzb24gaXMK
aHZtX2ludGJsa19yZmxhZ3NfaWUsIHRoZW4gaXQgc2hvdWxkbid0IGJsb2NrIGluamVjdGluZyBh
biBOTUkuCm5lc3RlZF9zdm1fdmNwdV9pbnRlcnJ1cHQoKSBjdXJyZW50bHkgaWdub3JlcyB0aGUg
cmVhc29uIHNvIEkgdGhpbmsgaXQKaXMgYWxyZWFkeSBicm9rZW4gZm9yIHRoZSBtb3JlIGNvbW1v
biBjYXNlIHdoZXJlIFZfSU5UUl9NQVNLSU5HPTEgYW5kCkwxJ3MgUkZMQUdTLklGPTAuCgpTbyBJ
IHRoaW5rIHRoaXMgd2FudHMgYSBmaXggdG8gbmVzdGVkX3N2bV92Y3B1X2ludGVycnVwdCgpIHRv
IGhhbmRsZSB0aGUKcmVhc29uIGNvcnJlY3RseSB3aGljaCBmaXhlcyB0aGUgVl9JTlRSX01BU0tJ
Tkc9MSBjYXNlLCBhbmQgdGhlbiBhIGZpeAp0byBuc3ZtX2ludHJfYmxvY2tlZCgpIHRvIGhhbmRs
ZSB0aGUgVl9JTlRSX01BU0tJTkc9MCBjYXNlLgoKVGhlIHJlYXNvbiBJIHByZWZlciBwdXR0aW5n
IHRoZSBsb2dpYyBpbiBuc3ZtX2ludHJfYmxvY2tlZCgpIGlzIHRoYXQKdGhlcmUgYXJlIG90aGVy
IHVzZXJzIG9mIGl0IGJlc2lkZXMgbmVzdGVkX3N2bV92Y3B1X2ludGVycnVwdCgpIGFuZCB0aGUK
YmVoYXZpb3VyIHNob3VsZCBiZSBjb25zaXN0ZW50IHRoZXJlIHRvby4KClJvc3M=


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:17:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:17:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470319.1679048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOI8C-00040r-DK; Tue, 03 Nov 2026 17:17:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470319.1679048; Tue, 03 Nov 2026 17:17:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOI8C-00040i-9t; Tue, 03 Nov 2026 17:17:08 +0000
Received: by outflank-mailman (input) for mailman id 1470319;
 Tue, 03 Nov 2026 17:17:07 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOI8B-00040V-BM
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:17:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOI8A-007bvD-GZ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:17:06 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aea170c-2eae-0a2a0a5409dd-0a2a4504c062-10
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:17:06 +0100
Received: from [40.107.209.51]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aea170f-b57f-0a2a45040019-286bd133a493-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:17:04 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH0PR03MB989098.namprd03.prod.outlook.com (2603:10b6:510:3ae::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:17:01 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:17:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=SignCqO6tZU/6/cqpCRTB3OTqND216VOQvIsA/xwRAOllAYFnDcr1gFcbc2PJ58af+SrnkK9daA08DNPTuf6GH5J2MwLMPUOaAjoOyE0AbmCyA5MIUYWV1i+cssh7PiJohKM+8rEzJ78NMrnTuiZjlHCM0aIYYSYT7AGb0ttMtfH8xkAtxMurj6oTg7tHqT58Y5KBnFkTsMAtizBomikZSE8tDUU5CnZ0Ob13qqwNHd+kD97TB/dLli8D2dFMR1CwNoX2/xcOWd5hlKKIAXvQz52+Sl2wKEyzFt1hRVpso1LAkxqGbSqAtPqunpMi/YEYRmNkzTVA0lAZea9NQa+Ew==
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=TqJ3kP4BOJDd7ObQ0VHoZOSWEIMtsMy6lNAbJLw2ftE=;
 b=bbpZsdP0hOc3Yu9rAeOZP7QbAZVsJfIhehRAlYmeBEgDqKut732s5dIC4f/GPc6o6cRr4ayuir53cniCaLN7G+ogn0RS5fWAkeWHSHVorfr+YgOGvW+1S4Ui8fHVGGsQ2uOct2ImsloqwJ4SKfUvwYjzguKaha4fCfW4Z0NotZfEvclidW8W81kejesyuJpvPSCx0Ml/MlDAuCI11ahdf/HwF0IdRp2Sa2HKbJuQJutHtlIZ9VLl4B4tVtjU+1+ricaJZVTczPB9uJHxGtHxyhSEqik4xXIqYIFcREcLxjjCwP+IMuWgtknZgK0GBITn/uKGuJh+WvMAMjPvYNTZDQ==
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=TqJ3kP4BOJDd7ObQ0VHoZOSWEIMtsMy6lNAbJLw2ftE=;
 b=wmUrx5eFeeWlX8YvJxzINekDYGhoti91mHbLNMqrUAX2H3WuW8wJhI5jZBEpvOWk9fxgZzEUoifsbb9hy9HqmSLXmxz6ZIULDcPMQY45CxvrzHTpJmU3AwyATu2Hf6MxRopGytq9z4zTAuZ04tpYrF+JuWWXkXr639KHSmrF6Bs=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <dcb8ea95-5a6f-4eb4-812b-406711b127fd@citrix.com>
Date: Tue, 3 Nov 2026 17:16:57 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 5/6] xen/gnttab: Fold error handling in _cache_flush()
To: Jan Beulich <jbeulich@suse.com>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-6-andrew.cooper3@citrix.com>
 <9a163ab4-a8ab-47a9-8e67-c283d3ca94ab@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <9a163ab4-a8ab-47a9-8e67-c283d3ca94ab@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO6P123CA0016.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:313::6) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH0PR03MB989098:EE_
X-MS-Office365-Filtering-Correlation-Id: ce8ec025-b634-4745-fe75-08df39ce463c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|7416014|1800799024|366016|4143699003|11063799006|56012099006|261021121427099003|261102123227099003|261022105027099003|261026140227099003|261028144727099003|261026121527099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Kh1AM/cIQrzMZIdymzt1DfMLh27av7cCQd7s7wVqHw4Oj+/UoRIGCeGnW/d9+Omu1fTuDXxt5DQxJVB/9fP/EcI47zyv/CIaBGNAVCm6JyZzmUXeZpW+bXesuFDZaS2Kms/gCfG9IfZh5D3FpJEivdYK3G4z8bb2yKfV+o03f+Lux8qyUpB0B36MDFuZ/bipofGehkhamc0rasqDogedZSnhlHx6wM79cfP+mx5icgYlqRweJuLlVXDgTtoWV+KppMXqNPQKeBrl6EOMRCbHJu5dgRhq695ZcbTeo/QxEoqyBg0ANQYX4MOq7mohUMWy0LdEaprrOVPL517JJT4llYUhlm3A/7uTzWBQbmKQ+OncT0cySdvM2Qu6k5vAnxpg1aP7U6UQj8GeYZH5b4BpegbTvyma/DWDonDCTUL55nAjDLzE9w933wH/RR5jL2XjpY+pa4Ea1dbl9JzGq4WwS6prB4/QEzogA1wjmPY/n6ovWsFhEB2CnnUaYDehPueutKcbJi8OL61IK/lK4A9hk3NYTG0DvaQ+Swk/UKIUy/LEJTIMlCn9z4/6VIwlDZs1R6iWIqV+Oq+6kmxdCJKEycmIapibNBIqlRdiCTNx1ZB6Fct2dGLVF6vIh7QaAKTF5H9WLwlENhW2KfRkMH0ztJJKeRotwea71OwGrs4FWy8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(7416014)(1800799024)(366016)(4143699003)(11063799006)(56012099006)(261021121427099003)(261102123227099003)(261022105027099003)(261026140227099003)(261028144727099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RER4WFcvQkF3ZDVJZk5KM1g3WDluOHh6VDdCRW0yTlpYWHdKRXMrdDZXZTJO?=
 =?utf-8?B?WG0zUnNSbkwzSjZXWXhya2lCWXhGUXhqUjRrMFRlbnVNRXoySHp6dVNPNHdW?=
 =?utf-8?B?OXE5MzI1V2lUVE5JbmxJY0l1bzV0V05nZ2VCbDNJelVjdVBXSUIzZTd4UXZ4?=
 =?utf-8?B?b1BJejEwaXA4dkpHWEFJVnJmSDJVMTBXWllHTnM1NU5yQ3dJWGx2Z2tVc2cr?=
 =?utf-8?B?OGZrV3hNYlhPU3F5NWk1MVZLaE11SjJ2alZFZ3hQcXl2cFF1T0NmdkNJUU5J?=
 =?utf-8?B?K0EzalhaVm9kTWxWblBWRDErUy8wOXpPa2NIeWNEaThVaTJJVSt2TTBtRHZi?=
 =?utf-8?B?OEVEMHdzcHNUbXNCVkJaT0orVDJtZ2NYT2RHRmJXQjkvQVpuOU84ZHZoK3dS?=
 =?utf-8?B?NHlnTm1WdVJiWU1FM01VNUQzbVhUMWZNTFgwc1B5QTN3aHRnRFc4S3lCZ1VK?=
 =?utf-8?B?aWIyT0lIUHkxdHhZQk1YNXE2eFhQSDkyR0UzSERmNkU3b0taZjNwclFiazBC?=
 =?utf-8?B?M055NnB1ek9hMENjaTA0emp2c1lzcDZwaGltK29jSldJSWhvb0dZNER0bmFi?=
 =?utf-8?B?ZStmdnQ0dlMzZDAySFRFMlhtMkVsc3pDY21ST3FFcGw4cXpPMDRoRlQwZWJt?=
 =?utf-8?B?NVlrTHROSW9NVjhRTzFtUU9DaVJVTHVEdzFuUDZHQ0FJNXNSLzBmVU1ib0JV?=
 =?utf-8?B?MCtPdWMydlg3bnBuck9qK1dmY3NpN2VSSlpvUUJCQWlRa05UanZLRVZmbG0x?=
 =?utf-8?B?L0YxQUtBdEwyL2Q5T09ncnNYaDZHMzkyM2x3S01QZXFDS2RaRyttRnFBNlRZ?=
 =?utf-8?B?TXFmQVRaTTIxVVZERXQwUmxSUGN0NGFPczFoUzVvU2E2TlhnRk9LaTdHS2c5?=
 =?utf-8?B?ZE1UN3RzZTFyajIzWGVjYytNbitIOVMzdzI4dHlpWFM1QjZnU25mUTZFeXZG?=
 =?utf-8?B?dis5NjZ1bjNqSjcrYVBqRFNqZGZvUkNXdGRQVUdBZldtWE9VcVl1QmZXb0lJ?=
 =?utf-8?B?VUg1YTBkWi9DcWRuck40Rk9sV1M1Q2JrWnJFQ2ViWGxNbE5JN1hZZEtNWk04?=
 =?utf-8?B?d1dsTlJjKzQ3Y2M1UDBFcVQ0bldBclR5K1Jjejl3VDIwYytaUGgwMHFXMUZn?=
 =?utf-8?B?K3cxQTgrNGtNMG84SCtNRUt2dkZrcm16eE1ZdTQyYTgwL2tuVVNPdFZUU0Vl?=
 =?utf-8?B?MngrRm9mRlU0b0xicHhTZ1pYc1BvZXd2WVRNOGJoSWI1d3BxNEpValBRWTBF?=
 =?utf-8?B?L3F6NHFCQ0lneE5kTlgyZWZXVzhWUlZndmpocUh1aEN0VXdpOE1CR2s1NXM1?=
 =?utf-8?B?R1YyenI4VzZQYkNBWlk3TWRjOFpvUGZGT05vd0V4WkxiSW01Y3lUVFdmYWxq?=
 =?utf-8?B?dENwcmdBNEVyT2xUTWYzTWtKakZzZXlOS0Jud3NTUVFhYldFa2pHdWRaNlVl?=
 =?utf-8?B?eWFhMTJqclBka1pld0JTVDc0ZlRHRXBiNVF0RTR1a3RaMU40YlFhZUNIZjFQ?=
 =?utf-8?B?Yi9SZHZiY044OWhWVEhRMTNuZXhYU1VkMWN4M3lDNjJuWDFWWnVpelhpWnB1?=
 =?utf-8?B?OFQyK2pXdVFnZ1QzZlQ2STNSbzdNM01OKzhrc0EySGZLL2FTdVc3NTFqMy83?=
 =?utf-8?B?NS9FZW51aGhCTHh2MXJZOTI5Y2EzRnZKTzlRYjRyOWR1N2t1MTFiN29HRTVB?=
 =?utf-8?B?SmtXWWFKaTlVQkJVTEhtRzkrQUEvQ3RqZGF1aGFwRFNUcmNPSjZ3Y0R3YkFR?=
 =?utf-8?B?aE5oV1lBNDc3T3ZjOFhHOTluOXdMbzVLUHNhRGc5MGRxU0tLYm9YRVpucmha?=
 =?utf-8?B?NUFCRkZGNkRaUzF1NlNKT3NTb2xHRlRCdndxOHplL0E4SUlienkrZjNOczZB?=
 =?utf-8?B?eCt4Q3J5V05PMmhGWnJDMW1KdU51S0hLOUd6Y1NWN0Vyc0FvN3JvV3VoUjlH?=
 =?utf-8?B?VVRuYmxJMFZKdEhnVHZuQmdKaDlacGtmT1h2cVpIVWpsMU44SFZTei9GWDVV?=
 =?utf-8?B?b1RNcjR3WnFmSmpVbW55VVR6bWJWdHJCTEM5c1ZjdWdaNFMxVUxxNUpkTmti?=
 =?utf-8?B?QVU3RDBlNE1CeHRnNDV2Qlk1dkhnU0l0ek5xMDFVZDBTK29TV0FmM0ZsandM?=
 =?utf-8?B?M0RSVWZkTVNXcENXOURBYWtZQXZneU5Udm0zdWl1ZC9VVEF2UFFmNGxhWUVw?=
 =?utf-8?B?dkJuWG5Yb0JpOVhDV1grV29Oa3BFeFpLT2k5V0ZpWWtxVm5sK1I0RXFNbGNv?=
 =?utf-8?B?dnVQb3pUeVdveDFTOFpWN3NSVy9zdHBtd040Uko5L1ZFRVlaS0hSWCtBaXhh?=
 =?utf-8?B?ejc1bzBzblpVa0NZQkJkQll4RFJQMWJoNWovSmttVlg0dmVXVmpXdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ce8ec025-b634-4745-fe75-08df39ce463c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 17:17:01.5166
 (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: KRmu4Lp5QNx2qDR9LxYXT4eSefCsf2+mHuM3tsr40MPqBDvfgKSh//5T9+7JvOFsQ9WkfbS6vdVQ1fblvJ/mXaJW5UA/bq9Jaf6tVtGf9Co=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB989098
X-purgate-ID: tlsNG-ebf023/1793726224-C1AD0B50-E3B5FF35/10/78276251493
X-purgate-type: spam
X-purgate-size: 1145

On 03/11/2026 5:00 pm, Jan Beulich wrote:
> On 03.11.2026 16:29, Andrew Cooper wrote:
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks.

>
>> @@ -3683,13 +3682,15 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
>>      else
>>          ret = 0;
>>  
>> +    unmap_domain_page(v);
>> +
>>      if ( d != owner )
>>      {
>>          active_entry_release(act);
> I was first meaning to complain about the unnecessary new lock nesting here,
> but the earlier map_domain_page() also is issued with the active entry lock
> held. You move things to a more consistent pattern this way, which is good.
> Yet at the same time avoiding that nesting might also be a good idea.
> Something for a later change, I guess.

I don't see how you'd manage that.

We do have the proposed MFN in our hands, but until we've confirmed
there's a valid map for it, it's an arbitrary piece of memory belonging
to an arbitrary other domain.

With an ASI hat on, we absolutely mustn't speculatively map it.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470335.1679057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKd-0006R9-Ix; Tue, 03 Nov 2026 17:29:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470335.1679057; Tue, 03 Nov 2026 17:29:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKd-0006R1-Fv; Tue, 03 Nov 2026 17:29:59 +0000
Received: by outflank-mailman (input) for mailman id 1470335;
 Tue, 03 Nov 2026 17:29:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIKc-0006Qr-20
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:29:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIKb-00BbdN-Eu
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:29:57 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a09-8faa-0a2a0a5109dd-0a2a4506bd70-18
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:29:57 +0100
Received: from [52.101.66.109]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a14-195a-0a2a45060019-3465426de26b-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:29:57 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:29:53 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:29:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=MpD2+yp3TdizZkknPBAP26+dKsXZxhmrV1VaM3eVJwbrWY4yA4MrEyNA/if9V4d7Ks0gM7wwho0QDxc437FtyiPWDxizjLgFL43H2MmzOUhgGREoDPMPVJ3ifhxZcKnbC4TcvH/sMC9IjX1Pptl425OwIUSDUeX5qLgk+0SWDGGTQ/nX3iV0GpJs2SE2ZcLV8+Gl/mXQ+A8YYQsn43h33FhFK6utDkHtJ3FSr6ihGxW6Zy69CAMfq77aqNNJ11B7q3wAa+SSoIggP8U3etycbNgJTWgH7lJUK70Yht0AkqExjjNNayZVGsu15pZayb+syQ3I/V+VPXXrrSwfv/2TIw==
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=KXTNDoBmwPi/1jYbFEgqgV4yozywK00X+89YYLGyTYw=;
 b=EeM+i+x2GneG+SCOPgZUCPCGG4/Gm5ySOyAAbxm1F8f45ESdMQPUqIZiR4gPV6VVnUhbn3aFE+Wd5N2kyKFiV2nstFYoDx8/TdxD+F6McJSIp0CPvbtpNJGZ2+nt5y/mSumoE5/6ABMqdr8hffzT6aXg5c3hsaohn7rsEXOoDbjx2Qi5GA2EpXi4dmXqegT/+WwkWZzUNTq97zZ9HggzrsP1LhU0gi3vukRRu06HCguDzhefOv35KsPHldsHRviaAHA5aXAAPsz7yi4CWpalUzBd4KuAymF0eq/w6sVyBUaHmCmSrqtaUwimju1blS8/+LmChOA9nXQAUAvXRsGFdA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KXTNDoBmwPi/1jYbFEgqgV4yozywK00X+89YYLGyTYw=;
 b=buy90J2sFOG1ywqfXxL0JTa4A/13xRzbsiV/UBESSKmnXgyXlnvFU33y7kiI/cGK65JiOfRHaqVBhIowg26CGH6EMINTjMsL4D28ncn490e/czL3rJCV2FBlQ77mvvnmspYCDV6Vc4GFuEejt3jLClIqdIcKYYPbnALPvf0bUPfq6WEk9TFLteN92PmxDe1vMSo9zh4NT+jW2hPzOdYwEuwQQWbIabYygySOpCg/aS4hlZdRYf+KA6N2yWZXslktJ4DvKNBE02DxitNyi1ad9cIO4/LcWIyunCPR+QqORg+yXnUxWoldQPGqxlp/47fYRifONkl0XBcYpd1RY1WjyA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Milan Djokic <milan_djokic@epam.com>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Rahul Singh <rahul.singh@arm.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Jan Beulich <jbeulich@suse.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger@xenproject.com>, Anthony PERARD <anthony.perard@vates.tech>, Nick
 Rosbrook <enr0n@ubuntu.com>, George Dunlap <gwd@xenproject.org>, Juergen
 Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v5 00/22] Add SMMUv3 Stage 1 Support for Xen guests
Thread-Topic: [PATCH v5 00/22] Add SMMUv3 Stage 1 Support for Xen guests
Thread-Index: AQHda7jvLULnhGpVfUGoypA+wdQa+A==
Date: Tue, 3 Nov 2026 17:29:53 +0000
Message-ID: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 6236cc0e-2aa4-4aa3-839a-08df39d0126c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|7416014|366016|38070700021|260925021911599003|260925022911599003|260925021311599003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|6133799003;
x-microsoft-antispam-message-info:
 6dvrZ8ZApntsKU0a/Tpc6utPeO97ZEy0eU81rLmlVL247sS8V83q9ufFeSMihnbwdwogMZwoz1kmJnh2d9cik/kOkrtRz3zYa+D/XKiw0qOI+LtZHt5mSCAl+JE1oX/UYNntRU6XFox7XhVWgKZwVutTysXZBNvh8NuWA5X6L57pDE9T+4y6ezLeVU37X0/1v+/kYJC1oedrXJua0k5ZM+2mvAnAxCcF+UZxq7hwV8UaFWS2ZO80T6Y6ueeI0oXun3JhgsfAA+ace8mbD9KeiZuLGcD9weWBfh3ooIIC11so7sIgA7v1RszSvDJZ5xndRkrD1fvv7fvzYAA2LA9Wu4IBx0hyHuzPEsAJGdFee36R1lHnXGFW0VPzK3NX7GHCuTIrpBqAW5mhnooyNSoIV8ued1GURSGTUAT6S6FIsn9Hh4p9fT2huB2dQHseWeDwyigge9sv/nWA1ebduDYTOzzlhiqEHOBNBZm98mvwHSyy04nMcbcrex1LcAVp4QwlXf/E/qxTHSVWElnC1vcZRegRQ5uDZ9HtipoM5Tbmlkobk4BQ22MdVtWtmQjPmZJkPyfvDWuOLq62Lau7/wzpTiVNGdkla7+kmTMO5Zy1PYUsOdrGhA0aPYXdPCBsolWu9rmm8c8ZkubP/LbLJ8LT9pRrs98x7SwqXNX6nl6es7g=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(7416014)(366016)(38070700021)(260925021911599003)(260925022911599003)(260925021311599003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MzhHMERTQ2o4SnNnY1E5Y2FyQ3NDeS9VdnVpemlmR3RJbDV6UTFpclVkTHh1?=
 =?utf-8?B?ZGEvNnlpSzc2S1J2RHEyYUlUTm9XdDJtN3JKTW5jTkZPMFVqZy9Bb29uaFcx?=
 =?utf-8?B?OTZ4YmEvaDBrRlUxQi9odlhSYkhCY0ovcno2cGM3bHVvOXNxUUdtYWF5aDFU?=
 =?utf-8?B?b01uMVFqeWJkOExCU0c3aUNTSUIvWHUzbWY4RDRad0w3cjVRWUlSVXkwcTFa?=
 =?utf-8?B?QlhUa3dMK1pZV2hDOVFvWUh4VkxaY0syTzA1K1h5YkNCMUtvVmNDeUtEMUdE?=
 =?utf-8?B?MFlMSkhnWWtYUVp3eGNTQnl4OG5YcmdreXVBN2luLzcveUlIYS9nR0FSd1Rn?=
 =?utf-8?B?a1NKNHVMbk1sTFhkTjBaa0hjUEprSlhLT1VsTDlXbXgxVFNidWNBU1JTdXl2?=
 =?utf-8?B?T1A1N1RMTEtqU085cE91dGJIdHh6YnYybmNtMXppNzJXSFBiMTBzVjAwYkNp?=
 =?utf-8?B?bHBDOGdBaU1sck5iUjA3WFN3alRyMHJxZ3h1VXlBYWlvckFjNlRCRG90T25V?=
 =?utf-8?B?NCtIWnRNZU55THJncnBnRUJvaHF3WGNuRTdYSms0dWU1MGNUTkd3eEszSHU5?=
 =?utf-8?B?NCsvK3pHV0FFUkVxUWhjMldXUEw5NFdxVmpaaWFwTndKQldmbENjN0tINS9v?=
 =?utf-8?B?UUE3bmJ0QnR6c2pscEMzbldyL0ZVRWxQc0pQTzV5Q0hLWDRXUHR6MjRwVjhl?=
 =?utf-8?B?b2tWdTJPOGVTb0lwbnFiZ2R6T0ptdlk4UzExYUdIbUladHlMQS9La1FSUmlM?=
 =?utf-8?B?Mk90MVJqZWlwMW1KV2RqNDBLZkNlbmEwUmtOemFHUkRWbzdWQ0h4ZnhoeUNk?=
 =?utf-8?B?T1lmaGx5QlZMc1VESU40b054NEJtdlRoYVAwb2F0K0haN25ZMmZlaWpzK3ZN?=
 =?utf-8?B?cm53MFAzMytwcWYwWEZlUXZGdEppMFg0azExTTNxaWlhZnhTZGtuSGpQeW5y?=
 =?utf-8?B?QnpwbUZ2Y0pGM2xXMjJ4S2s2dWhsaU1Sc29BeEs3aTdMZnFZNVR1WUlFM05M?=
 =?utf-8?B?c0NZSUlXYlFPdGQxSWZXT0xZYm5ueG9SRDhUVjlHUUtTMm1KZEU3a3RpeFNB?=
 =?utf-8?B?U2I2MXZqSGF6ZFhobkRIVEcwOUltVG81NHQ5Tlc3Yjg2UlVWTUNBS1VVblYz?=
 =?utf-8?B?bXdaV1BUSHFwSG5MeVlXL2xGemIvcnVlUndsRkhOK3BNVkpJc0NmVjRNcWZ0?=
 =?utf-8?B?QzZhQ0toOEpaL01PUld3VXNha3RVZkNqZEZDenYyaGo4MTArRTRGSzRLN2tN?=
 =?utf-8?B?b1BVcGpDRDBqQktlUVdJUTVZUko5cTE3WUhieDN4Nkt1TlByRkwrQjlSWUxj?=
 =?utf-8?B?VEVPUE52d1NvdlpYdkdXREVFRnFyVXFoaVZzV3ZxTmQ3c2FSMFJTWE9YRXY4?=
 =?utf-8?B?WDZsQ0RQZEd4eGhDSFc3b1pGWmpIbEhDcDdTWUZ6NUljQlMwY25lNDZwSjZ2?=
 =?utf-8?B?M0RnckFaTTJMYmFlcHR0TnpkeTQ4MjF0d08zK0I1RnNLY05Hd2RuMFBvNTg1?=
 =?utf-8?B?cGZiSktVVk5wYnhFb1ZYZDAvQ0M4N1FQWFBXejN2THFBSldXQnRoOXp1empp?=
 =?utf-8?B?R1ZTZWJSVkNBb2IzN01NWjJzWElpd3IvbHRkUFJ2Mm5wUkM4VmVLUEtZblQ5?=
 =?utf-8?B?SGNIaXpzM1dNQU1mdFNTdW1XUXFHVml5TCtPbC9ibFpvTXdaRmFNWjZ4UHl0?=
 =?utf-8?B?a0hCM3piUHBLSGNtZzZDcnloL0tmU0EveXNSQ1QvRjhwOHFVT09TaURjL2hw?=
 =?utf-8?B?SHNyYktPOWJuTStjdE4xdHVFWVJsVUhoaTlnRzJRNXlHKzQxNElsZHNWOHZs?=
 =?utf-8?B?TnczVkovellkZ1RwVk91TmgrQ21XbVpQSW9hdjgzbmUyYmtLbjlmdVFaZ0cz?=
 =?utf-8?B?cmJVMFR6K0pKV1dzOXcvRmtXemVwdHNsSTlFVUN3ZnI5RTR4UTNJRWJTMnVF?=
 =?utf-8?B?a2c1dmQrK0M5clBINFJZMVpDT1RLUDBYb3dRQlJqQWwxWmZIWG9nZUhQb0Ju?=
 =?utf-8?B?UEZRZWhtRUlCQUxpZ3RsWEVFMWZ5ZkJxWmI2a3FsWk85cDZQYUNXdkRnOTZD?=
 =?utf-8?B?Nks0TTlyb09DNEViQTB6TStTTnZLd0JiZmR0UnowUk1yZUZaUy9hbGpkZm5h?=
 =?utf-8?B?QlhjTHlBejRsSXJONHRRRGZsS21SM0w4OEFzVUpjMmt6S3hyQkF2alRGYk1p?=
 =?utf-8?B?RjBoTGpwcWh1OHMzSjdNNGkrQ3lnZ2M4STFVYTF1bWxxTVFJWTdVOUcwQnZE?=
 =?utf-8?B?dzZ1R2xLcExDUG9RNHNNNC9BZnFLYkZlb1ZuTXVIczNLNlZzM0ZNSHN3bEIx?=
 =?utf-8?B?OEFaNmJIelAvS0N2cnBGYVpqOEpuNzMyQmhsUCtkN3dCZHJadG00UT09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <2F8ECE7EF9811241BEA291F090E416B8@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6236cc0e-2aa4-4aa3-839a-08df39d0126c
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:29:53.4460
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: s8WrtZJp0gVweyEqXao0EGn6iOAj7qSHjIvw8n2/iZ2k/hagYabpBakHbXwT9BhjJaOX7IW3eHdpQCJBfmoB8Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793726997-1F8CB77B-D0707164/0/0
X-purgate-type: clean
X-purgate-size: 11770

VGhpcyBwYXRjaCBzZXJpZXMgcHJvdmlkZXMgZW11bGF0ZWQgU01NVXYzIHN1cHBvcnQgaW4gWGVu
LCBlbmFibGluZyBTdGFnZS0xDQp0cmFuc2xhdGlvbiBmb3IgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3Rl
bXMuDQoNClN0YWdlLTEgdHJhbnNsYXRpb24gaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSBpc29sYXRp
b24gYmV0d2VlbiBkaWZmZXJlbnQNCmRldmljZXMgd2l0aGluIGFuIG9wZXJhdGluZyBzeXN0ZW0u
IFhlbiBhbHJlYWR5IHN1cHBvcnRzIFN0YWdlLTIgdHJhbnNsYXRpb24sDQpidXQgdGhlcmUgaXMg
bm8gc3VwcG9ydCBmb3IgU3RhZ2UtMSB0cmFuc2xhdGlvbi4gVGhlIGdvYWwgb2YgdGhpcyB3b3Jr
IGlzIHRvDQpzdXBwb3J0IFN0YWdlLTEgdHJhbnNsYXRpb24gZm9yIFhlbiBndWVzdHMuDQoNClRo
aXMgcGF0Y2ggc2VyaWVzIGlzIGEgY29udGludWF0aW9uIG9mIHRoZSB3b3JrIGJ5IFJhaHVsIFNp
bmdoOg0KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L3hlbi1kZXZlbC9jb3Zl
ci9jb3Zlci4xNjY5ODg4NTIyLmdpdC5yYWh1bC5zaW5naEBhcm0uY29tLw0KDQpUaGUgb3JpZ2lu
YWwgcGF0Y2ggc2VyaWVzIGhhcyBiZWVuIGFsaWduZWQgd2l0aCB0aGUgY3VycmVudCBYZW4gY29k
ZQ0Kc3RydWN0dXJlLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIHRyYW5zbGF0aW9uIGxheWVyIHBy
b3ZpZGluZyAxOk4NCnZJT01NVS10by1wSU9NTVUgbWFwcGluZy4gVGhpcyBhbGxvd3MgcGFzc3Ro
cm91Z2ggb2YgZGV2aWNlcyBhdHRhY2hlZCB0bw0KZGlmZmVyZW50IHBoeXNpY2FsIElPTU1Vcy4N
Cg0KV2UgY2Fubm90IHRydXN0IHRoZSBndWVzdCBPUyB0byBjb250cm9sIHRoZSBTTU1VdjMgaGFy
ZHdhcmUgZGlyZWN0bHksIGFzIGENCmNvbXByb21pc2VkIGd1ZXN0IE9TIGNvdWxkIGNvcnJ1cHQg
dGhlIFNNTVV2MyBjb25maWd1cmF0aW9uIGFuZCBtYWtlIHRoZQ0Kc3lzdGVtIHZ1bG5lcmFibGUu
IFRoZSBndWVzdCBvd25zIHRoZSBTdGFnZS0xIHBhZ2UgdGFibGVzIGFuZCBTdGFnZS0xDQpjb25m
aWd1cmF0aW9uIHN0cnVjdHVyZXMuIFhlbiBoYW5kbGVzIHRoZSByb290IGNvbmZpZ3VyYXRpb24g
c3RydWN0dXJlIGZvcg0Kc2VjdXJpdHkgcmVhc29ucywgaW5jbHVkaW5nIHRoZSBTdGFnZS0yIGNv
bmZpZ3VyYXRpb24uDQoNClhlbiBlbXVsYXRlcyB0aGUgU01NVXYzIGhhcmR3YXJlIGFuZCBleHBv
c2VzIGEgdmlydHVhbCBTTU1VdjMgdG8gdGhlIGd1ZXN0Lg0KVGhlIGd1ZXN0IGNhbiB1c2UgdGhl
IG5hdGl2ZSBTTU1VdjMgZHJpdmVyIHRvIGNvbmZpZ3VyZSBTdGFnZS0xIHRyYW5zbGF0aW9uLg0K
V2hlbiB0aGUgZ3Vlc3QgY29uZmlndXJlcyB0aGUgU01NVXYzIGZvciBTdGFnZS0xIHRyYW5zbGF0
aW9uLCBYZW4gdHJhcHMgdGhlDQphY2Nlc3MgYW5kIGNvbmZpZ3VyZXMgdGhlIHBoeXNpY2FsIFNN
TVUgYWNjb3JkaW5nbHkuDQoNClRoZSBmaW5hbCBwYXRjaCBpbiB0aGUgc2VyaWVzIHByb3ZpZGVz
IGEgZGVzaWduIGRvY3VtZW50IGZvciB0aGUgZW11bGF0ZWQNCklPTU1VIChhcm0tdmlvbW11LnJz
dCksIHdoaWNoIHdhcyBwcmV2aW91c2x5IGRpc2N1c3NlZCB3aXRoIHRoZSBtYWludGFpbmVycy4N
CkRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiwgZnV0dXJlIHdvcmssIGFuZCBz
ZWN1cml0eSByaXNrcyBhcmUNCm91dGxpbmVkIGluIHRoaXMgZG9jdW1lbnQuDQoNCi0tLQ0KQ2hh
bmdlcyBpbiB2MjoNCiAtIFVwZGF0ZWQgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiB3aXRoIHZJ
T01NVS0+cElPTU1VIG1hcHBpbmcgbGF5ZXINCiAtIEFkZHJlc3NlZCBzZWN1cml0eSByaXNrcyBp
biB0aGUgZGVzaWduLCBwcm92aWRlZCBpbml0aWFsIHBlcmZvcm1hbmNlDQogICBtZWFzdXJlbWVu
dHMNCiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIHByZXZpb3VzIHZlcnNpb24NCiAtIFRlc3Rl
ZCBvbiBSZW5lc2FzIFItQ2FyIHBsYXRmb3JtLCBpbml0aWFsIHBlcmZvcm1hbmNlIG1lYXN1cmVt
ZW50cyBmb3INCiAgIHN0YWdlLTEgdnMgc3RhZ2UtMS1sZXNzIGd1ZXN0cw0KLS0tDQoNCi0tLQ0K
Q2hhbmdlcyBpbiB2MzoNCiAtIEJ1bXAgZG9tY3RsIHZlcnNpb24sIGFkZGVkIGV4cGxpY2l0IHBh
ZGRpbmcgZm9yIHRoZSBuZXcgZG9tY3RsIHN0cnVjdHVyZXMNCiAtIFJlbW92ZSB1bm5lY2Vzc2Fy
eSBjaGFuZ2VzIGFjY29yZGluZyB0byByZXZpZXcgY29tbWVudHMNCiAtIEFkZCAiQVJNIiBwcmVm
aXggZm9yIHZJT01NVSBLY29uZmlnIG9wdGlvbnMsIHNpbmNlIG9ubHkgQVJNIGFyY2hpdGVjdHVy
ZSBpcw0KICAgc3VwcG9ydGVkIGF0IHRoaXMgcG9pbnQgDQogLSBSZS1nZW5lcmF0ZSBnbyBjb2Rl
DQogLSBBZGQgbWlzc2luZyBjb21taXQgc2lnbi1vZmYgdGFncw0KLS0tDQoNCi0tLQ0KQ2hhbmdl
cyBpbiB2NDoNCiAtIEFkZGVkIGRldGFpbHMgb24gY3VycmVudCBzdXBwb3J0LCB3aXRoIFRPRE9z
IG1hcmtpbmcgdW5zdXBwb3J0ZWQgZmVhdHVyZXMNCiAgIGFuZCBsaW1pdGF0aW9ucw0KIC0gVXBk
YXRlZCBlbXVsYXRlZCBJT01NVSBmZWF0dXJlIGhhbmRsaW5nIHRvIGFkdmVydGlzZSBmZWF0dXJl
cyBzdXBwb3J0ZWQgYnkNCiAgIHRoZSB1bmRlcmx5aW5nIFNNTVUsIGV4Y2VwdCBmb3IgZmVhdHVy
ZXMgZXhwbGljaXRseSBkaXNhYmxlZCBpbiB0aGUNCiAgIGVtdWxhdGlvbiBsYXllcg0KIC0gUmV3
b3JrZWQgZXZlbnQgcXVldWUgYW5kIEdFUlJPUiBzdXBwb3J0LCBpbmNsdWRpbmcgR0VSUk9SDQog
ICBhc3NlcnQvYWNrbm93bGVkZ2UgbG9naWMsIElSUSBpbmplY3Rpb24sIGFuZCBldmVudCBxdWV1
ZSByZWdpc3RlciBhY2Nlc3MNCiAgIG9uIHBhZ2UgMQ0KIC0gRW5hYmxlZCBTdGFnZS0xLW9ubHkg
c3VwcG9ydCB3aGVuIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQNCiAg
IFN0YWdlLTINCiAtIFJlbW92ZWQgdGhlIFhlbiBjb21tYW5kLWxpbmUgYm9vdCBvcHRpb24gKCJ2
aW9tbXUiKSBmb3IgZW5hYmxpbmcgdGhlDQogICB2SU9NTVUsIGFzIGl0IHdhcyBjb25zaWRlcmVk
IHJlZHVuZGFudC4gVGhlIHZJT01NVSBpcyBub3cgZW5hYmxlZCB0aHJvdWdoDQogICBLY29uZmln
IHdoZW4gdGhlIHVuZGVybHlpbmcgU01NVSBoYXJkd2FyZSBpcyBkaXNjb3ZlcmVkIGF0IHJ1bnRp
bWUNCiAtIEFkZGVkIGxvY2tpbmcgYW5kIGFjY2VzcyBjaGVja3MgZm9yIHZJT01NVSByZWdpc3Rl
ciByZWFkcyBhbmQgd3JpdGVzDQogLSBQb3J0ZWQgZXJyYXRhIHdvcmthcm91bmRzIGZvciBNTVUt
NjAwL01NVS03MDAgcHJvZHVjdHMgZnJvbSBMaW51eCB0bw0KICAgZGlzYWJsZSBuZXN0aW5nDQog
LSBVcGRhdGVkIHRoZSB2U0lEIHRyYW5zbGF0aW9uIGxheWVyIHRvIG1hcCB2U0lEcyB0byAocFNN
TVUsIHBTSUQpIHBhaXJzLA0KICAgcmVzb2x2aW5nIHRoZSBkdXBsaWNhdGVkIHBTSUQgaXNzdWUN
CiAtIFVwZGF0ZWQgU3RhZ2UtMiBjb25maWd1cmF0aW9uIHRvIHNoYXJlIHRoZSBWTUlEIGJldHdl
ZW4gZGV2aWNlcyBiZWxvbmdpbmcNCiAgIHRvIHRoZSBzYW1lIGRvbWFpbiBhbmQgcFNNTVUNCiAt
IEFkZGVkIGJ1ZyBmaXhlcyBhbmQgY29kZSBmb3JtYXR0aW5nIGNoYW5nZXMNCiAtIFVwZGF0ZWQg
dGhlIGRlc2lnbiBkb2N1bWVudCAoYXJtLXZpb21tdS5yc3QpIHdpdGggZGV0YWlscyBvbiBjdXJy
ZW50DQogICBzdXBwb3J0LCBsaW1pdGF0aW9ucywgYW5kIGZ1dHVyZSB3b3JrYg0KDQpUbyByZWR1
Y2UgdGhlIG51bWJlciBvZiBwYXRjaGVzLCBQQ0kgdXBkYXRlcyBmb3IgdGhlIGVtdWxhdGVkIElP
TU1VIGFyZQ0KZXhjbHVkZWQgZnJvbSB0aGlzIHNlcmllcy4gUENJIHN1cHBvcnQgYW5kIGxvbmct
cnVubmluZyBjb21tYW5kIHF1ZXVlDQpoYW5kbGluZyB3aWxsIGJlIHNlbnQgYXMgc2VwYXJhdGUg
cGF0Y2hlcy4NCg0KU2luY2UgdGhpcyBpcyBhIHNpZ25pZmljYW50IHJld29yayBvZiB0aGUgcGF0
Y2ggc2VyaWVzLCBSZXZpZXdlZC1ieSB0YWdzDQpmcm9tIHByZXZpb3VzIGl0ZXJhdGlvbiBhcmUg
aW5jbHVkZWQgb25seSBmb3IgcGF0Y2hlcyB0aGF0IGFyZSB1bmNoYW5nZWQuDQotLS0NCg0KLS0t
DQpDaGFuZ2VzIGluIHY1Og0KLSBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gdjQ6DQog
IC0gSGFuZGxlIHN0YWdlLTEtb25seSBoYXJkd2FyZSwgYWxsb3dpbmcgc3RhZ2UtMS1vbmx5IG1v
ZGUgZXhjbHVzaXZlbHkNCiAgICBmb3IgZGlyZWN0LW1hcHBlZCBkb21haW5zLg0KICAtIGRvbTBs
ZXNzIGRvbWFpbiBjcmVhdGlvbjogZGlzYWJsZSB2SU9NTVUgaWYgcGFzc3Rocm91Z2ggaXMgbm90
DQogICAgcGVybWl0dGVkIGZvciB0aGUgZG9tYWluLg0KICAtIEFsaWduIGludmFsaWQgU1RFIGhh
bmRsaW5nIGFuZCBlcnJvciByZXBvcnRpbmcgd2l0aCB0aGUgU01NVXYzDQogICAgc3BlY2lmaWNh
dGlvbi4NCiAgLSBNYXAgZ3Vlc3QgYnlwYXNzIFNURSBjb25maWd1cmF0aW9uIHRvIHN0YWdlLTIt
b25seSBjb25maWd1cmF0aW9uLg0KICAtIFJlZnVzZSB2SU9NTVUgaW5pdGlhbGl6YXRpb24gaWYg
bmVzdGluZyBpcyBkaXNhYmxlZCBmb3IgdGhlIHRhcmdldA0KICAgIElPTU1VIGhhcmR3YXJlLCBv
ciBpZiB0aGUgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBzdGFnZS0yIHRyYW5zbGF0aW9uDQog
ICAgYW5kIHRoZSBkb21haW4gaXMgbm9uLWRpcmVjdC1tYXBwZWQuDQogIC0gU3VwcG9ydCBoYXJk
d2FyZSBsYXlvdXRzIHdoZXJlIHBJT01NVXMgcmVzaWRlIGJlaGluZCBkaWZmZXJlbnQgYnVzZXMu
DQogIC0gRml4IGV2ZW50IGZvcndhcmRpbmcgYnkgdHJhbnNsYXRpbmcgcFNJRCB0byB2U0lEIGJl
Zm9yZSBmb3J3YXJkaW5nDQogICAgZXZlbnRzIHRvIHRoZSBndWVzdC4NCiAgLSBQcm9wYWdhdGUg
ZXJyb3JzIHdoZW4gdXBkYXRpbmcgdGhlIGRvbWFpbiBEVCBpb21tdXMgcHJvcGVydHkuDQogIC0g
RHluYW1pY2FsbHkgYWxsb2NhdGUgdlNJRC10by1wU0lEIG1hcHBpbmcgZW50cmllcyBpbnN0ZWFk
IG9mIHVzaW5nDQogICAgYSBwcmUtYWxsb2NhdGVkIGFycmF5Lg0KICAtIHRvb2xzOiBJbXByb3Zl
IHZTSUQgbG9va3VwIGxvZ2ljIGJ5IGluY2x1ZGluZyBib3RoIHRoZSBEVCBwYXRoIGFuZA0KICAg
IGRvbWFpbiBJRCBpbiB0aGUgbG9va3VwIGtleS4NCiAgLSBEb2N1bWVudCBzdGFnZS0xLW9ubHkg
bW9kZSBpbiB0aGUgZGVzaWduIGRvY3VtZW50YXRpb24uDQotIEFwcGx5IG1pbm9yIE1JU1JBIGZp
eGVzIGFuZCBmaXggUklTQy1WIGJ1aWxkLg0KLS0tDQoNCkplYW4tUGhpbGlwcGUgQnJ1Y2tlciAo
MSk6DQogIHhlbi9hcm06IHNtbXV2MzogTWFpbnRhaW4gYSBTSUQtPmRldmljZSBzdHJ1Y3R1cmUN
Cg0KTWlsYW4gRGpva2ljICg0KToNCiAgeGVuL2FybTogc21tdXYzOiBFeHRlbmQgSFcgZmVhdHVy
ZXMgZGV0ZWN0aW9uIGFuZCBhcHBseSBlcnJhdGENCiAgeGVuL2FybTogdklPTU1VIHZTSUQtPnBT
SUQgbWFwcGluZyBsYXllcg0KICBsaWJ4bC9hcm06IEludHJvZHVjZSBkb21jdGwgY29tbWFuZCBm
b3IgSU9NTVUgdlNJRCBtYXBwaW5nDQogIGRvYy9hcm06IHZJT01NVSBkZXNpZ24gZG9jdW1lbnQN
Cg0KUmFodWwgU2luZ2ggKDE3KToNCiAgeGVuL2FybTogc21tdXYzOiBBZGQgc3VwcG9ydCBmb3Ig
c3RhZ2UtMSBhbmQgbmVzdGVkIHN0YWdlIHRyYW5zbGF0aW9uDQogIHhlbi9hcm06IHNtbXV2Mzog
QWxsb2MgaW9fZG9tYWluIGZvciBlYWNoIGRldmljZQ0KICB4ZW4vYXJtOiB2SU9NTVU6IGFkZCBn
ZW5lcmljIHZJT01NVSBmcmFtZXdvcmsNCiAgeGVuL2FybTogdnNtbXV2MzogQWRkIGR1bW15IHN1
cHBvcnQgZm9yIHZpcnR1YWwgU01NVXYzIGZvciBndWVzdHMNCiAgdG9vbHM6IEFkZCBYRU5fRE9N
Q1RMX0NPTkZJR19WSU9NTVVfKiBhbmQgdmlvbW11IGNvbmZpZyBwYXJhbQ0KICB4ZW4vYXJtOiB2
c21tdXYzOiBBZGQgc3VwcG9ydCBmb3IgcmVnaXN0ZXJzIGVtdWxhdGlvbg0KICB4ZW4vYXJtOiB2
c21tdXYzOiBBZGQgc3VwcG9ydCBmb3IgY21kcXVldWUgaGFuZGxpbmcNCiAgeGVuL2FybTogdnNt
bXV2MzogQWRkIHN1cHBvcnQgZm9yIGNvbW1hbmQgQ01EX0NGR0lfU1RFDQogIHhlbi9hcm06IHZz
bW11djM6IEF0dGFjaCBTdGFnZS0xIGNvbmZpZ3VyYXRpb24gdG8gU01NVXYzIGhhcmR3YXJlDQog
IHhlbi9hcm06IHZzbW11djM6IEFkZCBzdXBwb3J0IGZvciBldmVudCBxdWV1ZSBhbmQgZ2xvYmFs
IGVycm9yDQogIHhlbi9hcm06IHZzbW11djM6IElPTU1VIGRldmljZSB0cmVlIG5vZGUgZm9yIGRv
bTANCiAgeGVuL2FybTogdnNtbXV2MzogRW11bGF0ZWQgU01NVXYzIGRldmljZSB0cmVlIG5vZGUg
Zm9yIGRvbTBsZXNzDQogIGFybS9saWJ4bDogdnNtbXV2MzogRW11bGF0ZWQgU01NVXYzIGRldmlj
ZSB0cmVlIG5vZGUgaW4gbGlieGwNCiAgeGVuL2FybTogdnNtbXV2MzogSW5zZXJ0IHZJUlEgcHJv
cGVydGllcyBpbnRvIHZJT01NVSBkZXZpY2UgdHJlZSBub2RlDQogIHhlbi9hcm06IHZzbW11djM6
IEFkZCBzdXBwb3J0IHRvIHNlbmQgc3RhZ2UtMSBldmVudCB0byBndWVzdA0KICBsaWJ4bC9hcm06
IHZJT01NVTogTW9kaWZ5IHRoZSBwYXJ0aWFsIGRldmljZSB0cmVlIGZvciBpb21tdXMNCiAgeGVu
L2FybTogdklPTU1VOiBNb2RpZnkgdGhlIHBhcnRpYWwgZGV2aWNlIHRyZWUgZm9yIGRvbTBsZXNz
DQoNCiBkb2NzL2Rlc2lnbnMvYXJtLXZpb21tdS5yc3QgICAgICAgICAgICAgfCAgNTMwICsrKysr
KysrDQogZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluICAgICAgICAgICAgICAgIHwgICAyMiArDQog
dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L2hlbHBlcnMuZ2VuLmdvICAgIHwgICAgMiArDQogdG9vbHMv
Z29sYW5nL3hlbmxpZ2h0L3R5cGVzLmdlbi5nbyAgICAgIHwgICAgNyArDQogdG9vbHMvaW5jbHVk
ZS9saWJ4bC5oICAgICAgICAgICAgICAgICAgIHwgICAgNSArDQogdG9vbHMvaW5jbHVkZS94ZW5j
dHJsLmggICAgICAgICAgICAgICAgIHwgICAxMyArDQogdG9vbHMvbGlicy9jdHJsL3hjX2RvbWFp
bi5jICAgICAgICAgICAgIHwgICAyNSArDQogdG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYyAg
ICAgICAgICAgIHwgIDIxNSArKystDQogdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwg
ICAgICAgIHwgICAgNiArDQogdG9vbHMveGwveGxfcGFyc2UuYyAgICAgICAgICAgICAgICAgICAg
IHwgICAgOSArDQogeGVuL2FyY2gvYXJtL2RvbTBsZXNzLWJ1aWxkLmMgICAgICAgICAgIHwgIDEy
NSArLQ0KIHhlbi9hcmNoL2FybS9kb21haW4uYyAgICAgICAgICAgICAgICAgICB8ICAgMzUgKy0N
CiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICAgICAgfCAgMTA2ICstDQogeGVu
L2FyY2gvYXJtL2RvbWN0bC5jICAgICAgICAgICAgICAgICAgIHwgICAzOCArDQogeGVuL2FyY2gv
YXJtL2luY2x1ZGUvYXNtL2RvbWFpbi5oICAgICAgIHwgICAgNSArDQogeGVuL2FyY2gvYXJtL2lu
Y2x1ZGUvYXNtL2lvbW11LmggICAgICAgIHwgICAgNyArDQogeGVuL2FyY2gvYXJtL2luY2x1ZGUv
YXNtL3Zpb21tdS5oICAgICAgIHwgIDEyMyArKw0KIHhlbi9jb21tb24vZGV2aWNlLXRyZWUvZG9t
MGxlc3MtYnVpbGQuYyB8ICAgNzIgKy0NCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9LY29uZmln
ICAgICAgICAgfCAgIDEzICsNCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vTWFrZWZpbGUg
ICAgfCAgICAyICsNCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jICAgfCAg
NjIyICsrKysrKysrLQ0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmggICB8
ICAgNzUgKy0NCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdmlvbW11LmMgICAgfCAgMTQy
ICsrKw0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5jICB8IDE1MzMgKysr
KysrKysrKysrKysrKysrKysrKysNCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUt
djMuaCAgfCAgIDI4ICsNCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAgICAgICAgICAg
fCAgIDEzICstDQogeGVuL2luY2x1ZGUvcHVibGljL2RldmljZV90cmVlX2RlZnMuaCAgIHwgICAg
MSArDQogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAgICAgICAgICAgIHwgICAyMiArDQog
eGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgIHwgICAxMCArDQogeGVuL3hz
bS9mbGFzay9ob29rcy5jICAgICAgICAgICAgICAgICAgIHwgICAgNCArDQogeGVuL3hzbS9mbGFz
ay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgICAgIHwgICAgMiArDQogMzEgZmlsZXMgY2hhbmdlZCwg
MzczMyBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
ZG9jcy9kZXNpZ25zL2FybS12aW9tbXUucnN0DQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo
L2FybS9pbmNsdWRlL2FzbS92aW9tbXUuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vZHJpdmVy
cy9wYXNzdGhyb3VnaC9hcm0vdmlvbW11LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2Ry
aXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmgNCg0KLS0gDQoyLjQzLjANCg==


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470336.1679066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKo-0007fz-Pg; Tue, 03 Nov 2026 17:30:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470336.1679066; Tue, 03 Nov 2026 17:30:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKo-0007fq-Me; Tue, 03 Nov 2026 17:30:10 +0000
Received: by outflank-mailman (input) for mailman id 1470336;
 Tue, 03 Nov 2026 17:30:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIKm-0007f5-VU
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIKm-004Jxu-Bw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:08 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea19f0-8faa-0a2a0a5109dd-0a2a450ce9fa-42
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:08 +0100
Received: from [52.101.84.142]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a1f-f479-0a2a450c0019-3465548eaae8-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:08 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:05 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=c2QqHc5MkqXUphEPcA0+lmEgsiiDaSCrMLjJ+M3bfa+odS1f/OUu/z/bo2+WxgFktnvRy5h+OlcZudDZijH4me6Yq219Jx7NlzAJ+u1v5UhoLJry9rn0PQSxc6v5DVivI48Zj8nzOmy6/lLNqkzW7CyeRSDRe1F0ab2z182tU7dwuUkM5ilbAFKhJyVSwXroBow8FdlTWaE7dUvEwWVYg8w7js6lB5OFKnxYMzX3Eb9r68q8SoYfUoVTLWILdYDAzs5n6m6BkbdnJVqSJYYkWHgkI0bH/NtsB/Y0EC0VVxnvPNUJWQIcZiwwINeI3ppRsIjCniQnXm3chJy0UV5Elw==
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=3DU40BiABrQdxhbK/eF3/53alfkL2YUAEvmS1HsPuWA=;
 b=EmnPXZXDiXUefJ+HJMyiowWnOFridmGyHvkZiHh8baYW6DD6hMv27XT4oZw27zXNLgN5sF5oKmTNgsP+Mc4O/eQTkTAJDTTvPj6sLtzIxzouViJx0svGnuxEENmCaqhNphwvkaMP/HLnrKHvQr0suFCjv3ve+3edPPNk5LyXA2ur7KcGEdQVxXQEFJK9pQPYkZiDFqUNRJV/LDKFgV/8TQSdcmrHOONXOPigFtVStHxIXsjWNknpfiy7WFIOmOVvhzWPehicZyfPkbUOWRBcRWvbFhtHwyT27ymjyZwxhOdd9LBjX2DDp/biK5Jbf3ZyVtj0Cto0rz4GOe22B7PkxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3DU40BiABrQdxhbK/eF3/53alfkL2YUAEvmS1HsPuWA=;
 b=nfjqiOfqu/NBNd+Zfc1YiBxpevuXFRAg4jxjnl9E3nx69ECInfafXOYM15Mu05Xpj28fAOVk2j3G7ntg+RlLixvBySnxXLN5nZkUfwsj1KkPeWDgCH9/pD5TQ91pGU81xYk0FbSyfT44M3yqvQZZkynuXkWDAQRmMDep+rSUTs7NPu2Vh9ekJfqLjiA/Y9yqRNThERocQHve0EteM7X1tXrjqq0YNhZLeed2aM60R4W3h6Xh4kbd1zz3/ISuvreFXl73fa688c977rH5PXAQ/M/5LQ88ZpGNxdqwfUFZA6mz5ZKNT6cZntcZ7gtAYzEMoiMHB7hyyQ0L/6Uoqm+yjg==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Jean-Philippe Brucker <jean-philippe@linaro.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Rahul Singh <rahul.singh@arm.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Joerg Roedel <jroedel@suse.de>, Nicolin Chen <nicolinc@nvidia.com>, Will
 Deacon <will@kernel.org>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 01/22] xen/arm: smmuv3: Maintain a SID->device structure
Thread-Topic: [PATCH v5 01/22] xen/arm: smmuv3: Maintain a SID->device
 structure
Thread-Index: AQHda7j2+ITlFPDXdUibDA/6hjTgXQ==
Date: Tue, 3 Nov 2026 17:30:04 +0000
Message-ID:
 <9a738e6cf9c913131239a2518cda3fa9b3b3f53f.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 6a8289a4-75bb-43ba-f8f0-08df39d01945
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|7416014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261021135927099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 wydYI5b82iDkhCZt5LwF7YwZTRUQTqTzJKBcgS7KU5OQfABNvCivgW01JeQG4ZY6LYgoNyQwusy8PMn99rTsmn/TBZS9E4Lh783yazirpSCD+7bAQTRoc5/934epKFLibMEyqF4rKJguqRD9FLXQMP5LTtDsFA1FPAxGovI9qPJvTKNq6IOblG9G3d+qbJ9uPo7n0RsZY71IFp+SgVHDurXHNK+nCHeoVENTPdLtF6vFF3sIm0vy5RyufOS47nI7rM2h4qb3hqBckmwvZlMTGfu6PIjqnW4BwK4SEYeD+26O21PAgNoVhHJPfZ3R6XzPbcVSYUkDkeGQdtzvhGTkTma1Np7Vmxh3vcZXj+p86p1s4H/eEGq/4UswRQcGpJd4QYpAAYe/U1rrk315Mn833vEbXUndkR3xg0ALU5llmChn9me8deehRMOO96BqspJH3HpqZB6d8tdy5VAxQtOZm+1FKmHEe91W5/u/DWMMxYlX6Eopc8cDudxwOzMHrkJeWBycDOcCeSzWJKqr+2+cmNR4DM+7Tm4x4WJ3EOBeWRHq+OyAedc1LHlAfNdmh/VON8/nteUPKpLJ9pJuiCHTkUO/tVY/vq6+NzfQhwlgB3m2lhMgicYD/2bL5aLYqEIBFsux+Da8+CrKUEwdoO+JylNxT0RQlBxTwwI6yIX9Xvs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(7416014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261021135927099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?50ROC3u3HxvbtNtxx5DJV5Yyl1n8MgHLYPMBIjMjyxMjoVdgWYS7wzqdVV?=
 =?iso-8859-1?Q?LSq6vnTAngooNlF0Ihqa7228RD57UB2hhIxnGDmuWp4c1oaE0zrENSMp7x?=
 =?iso-8859-1?Q?OlWORzllJ2UFU8sEh2PMXHi0lm/liYi4xbgzG3t7v5+7DGRZ2NexpTlIQM?=
 =?iso-8859-1?Q?pVNNqFslAVUB44f3cHdcXdtNW5d3ngRAzAZHP8JYe6qbNMzJtZRx6EMo+E?=
 =?iso-8859-1?Q?pcMv3Q834sRM/BoE2RqfBRmW9J8RnNE4rqEP5SB+TGN1OAXjMTZVIDXZah?=
 =?iso-8859-1?Q?l1bbf/NC8ADdTbG4CU+yNDcy0fj4uHEcaNKMS1GHZyMGAbydzhjvFQifxm?=
 =?iso-8859-1?Q?fPul9e3Q9pFaUp84K+0SaqCQQfceoUtfydHVmLXwtVnJi5eToMxbbescRl?=
 =?iso-8859-1?Q?8NF0nNFOrZkN6YpEdj3T8o15GY6kJ0lvu2GomfDD3Rc8toXbnw6W2HeMxI?=
 =?iso-8859-1?Q?VRqmLE3meXcKk3ANUzwEDdCyKp3iX59bSnXY/KimX+8QjDMqzzV3QSrrMp?=
 =?iso-8859-1?Q?dmtLLYzqhcVji4DJIuFkJInrf8PeyU87TW3B3E4sIJRQUfuOhPXL0wbWsf?=
 =?iso-8859-1?Q?0CKZLFiRK3j8E1W53qNc93+NpiTNc6Aca7szXb/XV32XJn8n8UX/xHx8nZ?=
 =?iso-8859-1?Q?K3dWbWBA8heQwW4a5xEWujP1P5NkiNGrNFG3pnEWAjYquzg6KT0PdgUqt4?=
 =?iso-8859-1?Q?ot53gw7eV5HsqJrM95Z2e5Nf+Dh444wckuy68Ikn1pPCjl+SYy9bakz2ty?=
 =?iso-8859-1?Q?TsR3IrikXmMBH//EG5nh11UdCZivr0g/oJcimLoReY1D02ZGRJNp7klJBi?=
 =?iso-8859-1?Q?IO/1t2Xcn+NC8h3I5JKqZ+3OUaNaZjFDgfU9FA3ed72QBB4tk42I+w60Hj?=
 =?iso-8859-1?Q?BDJxDVTmH/3RL0zWSOOdC61GtGNW0/wfOB8pL3VNEvl1BKn0ooDsY614+3?=
 =?iso-8859-1?Q?GC8jGSHux5OMNlfludYR8DGBr5GD6Mk46Xj1OrWPeK2HlnaNM8yB+3yVHH?=
 =?iso-8859-1?Q?+LC93VVBNBHftOhNH+A/Z+BLsPeX4ZyFlHSjeXHJt0Z9oqjTrumxNGkZoU?=
 =?iso-8859-1?Q?czgwnK31YE8E0adfkZxr3yPBgc7WARdeK+VpGk+7qZX7lJNMIPCfJTcELZ?=
 =?iso-8859-1?Q?qW1MrMXgIJTx23z3cS3yOsY97/gPHgxWWE6HfrduNV4dpqOqwXsud2fBHv?=
 =?iso-8859-1?Q?OKeYw95t7x2D+wmTwm/58tlomojnPrr2axutSrhuMISW4J3teHznDmGiSH?=
 =?iso-8859-1?Q?Z7Ova6Rv7+gdvL5ckzeFB4dyVNK3nysbEfn+hSulwEXJubWG/WV1puWeW+?=
 =?iso-8859-1?Q?15gpvKNie484FNB6PIhCzXZM/q52ax2QUCDRYlon0U7E1bL01k8RwKmLeR?=
 =?iso-8859-1?Q?FW7V7WpBYVHsMX9e+h3ZUFDbgwd8aUQUbP/EGwrFHP6APd1mUidsP8QtOV?=
 =?iso-8859-1?Q?usKFBxOaCZBDBuFKg2Ngy0rw/c76GsMcPP++Z2sKEGqOYhHOWCFNr8lueu?=
 =?iso-8859-1?Q?2JRAy4F7omXbE0iegzf3g9BngvsSHb2PzbA9Psck2D7CZZGIKMCcxiQS6O?=
 =?iso-8859-1?Q?ljs065mI8dNWurZzaT+47Xdd97xNONcuEZy0RQMNBdcD7XgIv0ai9L8i9x?=
 =?iso-8859-1?Q?yS9iawa/D6ZcC3cZDEY2s70fxiCW4vEC9rRzK3GHZC30RN/F3EUJXr+4t0?=
 =?iso-8859-1?Q?+QEc0epkHuFc44XtnZeBepBRQ8nPcrbf/hpa62dy0ogzFkH/TIzxLmuik/?=
 =?iso-8859-1?Q?353Q/AaWG64Y0hkI40hzy8c8FTY4lCskLcNBBXzAUfA9eUbbldVszYqush?=
 =?iso-8859-1?Q?RwIqvnA+gQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a8289a4-75bb-43ba-f8f0-08df39d01945
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:04.9644
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 6AhOp6uhc5cTWl4/yVkebvMGLKON2JA5QQX7yIu+ogS8kMwW/2QRwBgeR9UOaPID5o4hkIEAi3K4h/cmJ2JJdA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-d25034/1793727008-002F0A5B-3095740C/0/0
X-purgate-type: clean
X-purgate-size: 9873

From: Jean-Philippe Brucker <jean-philippe@linaro.org>

Backport Linux commits cdf315f907d4 and b00d24997a11, adapted to the Xen
SMMUv3 implementation.

When handling faults from the event or PRI queue, we need to find the
struct device associated with a SID. Add an rb_tree to keep track of
SIDs.

Also handle duplicate SIDs, as bridged PCI devices may have multiple
streams with the same SID.

The backport is adapted to Xen's SMMUv3 driver structure and types.
Fixes are also included in the master insertion rollback
and teardown paths to correctly handle partially
inserted stream entries and avoid leaving stale rb_tree nodes.

Linux commits:

  cdf315f907d4 ("iommu/arm-smmu-v3: Maintain a SID->device structure")
  b00d24997a11 ("iommu/arm-smmu-v3: Fix iommu_device_probe bug due to dupli=
cated stream ids")

Link: https://lore.kernel.org/r/20210401154718.307519-8-jean-philippe@linar=
o.org
Link: https://lore.kernel.org/r/20250415185620.504299-1-nicolinc@nvidia.com
Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cd=
f315f907d4
Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git b0=
0d24997a11

Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/smmu-v3.c | 177 ++++++++++++++++++++++----
 xen/drivers/passthrough/arm/smmu-v3.h |  13 +-
 2 files changed, 163 insertions(+), 27 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index 232df2421c..d49085b38f 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -809,6 +809,27 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_dev=
ice *smmu, u32 sid)
 	return 0;
 }
=20
+__maybe_unused
+static struct arm_smmu_master *
+arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid)
+{
+	struct rb_node *node;
+	struct arm_smmu_stream *stream;
+
+	node =3D smmu->streams.rb_node;
+	while (node) {
+		stream =3D rb_entry(node, struct arm_smmu_stream, node);
+		if (stream->id < sid)
+			node =3D node->rb_right;
+		else if (stream->id > sid)
+			node =3D node->rb_left;
+		else
+			return stream->master;
+	}
+
+	return NULL;
+}
+
 /* IRQ and event handlers */
 static void arm_smmu_evtq_tasklet(void *dev)
 {
@@ -1042,8 +1063,8 @@ static int arm_smmu_atc_inv_master(struct arm_smmu_ma=
ster *master,
 	if (!master->ats_enabled)
 		return 0;
=20
-	for (i =3D 0; i < master->num_sids; i++) {
-		cmd->atc.sid =3D master->sids[i];
+	for (i =3D 0; i < master->num_streams; i++) {
+		cmd->atc.sid =3D master->streams[i].id;
 		arm_smmu_cmdq_issue_cmd(master->smmu, cmd);
 	}
=20
@@ -1271,13 +1292,13 @@ static void arm_smmu_install_ste_for_dev(struct arm=
_smmu_master *master)
 	int i, j;
 	struct arm_smmu_device *smmu =3D master->smmu;
=20
-	for (i =3D 0; i < master->num_sids; ++i) {
-		u32 sid =3D master->sids[i];
+	for (i =3D 0; i < master->num_streams; ++i) {
+		u32 sid =3D master->streams[i].id;
 		__le64 *step =3D arm_smmu_get_step_for_sid(smmu, sid);
=20
 		/* Bridged PCI devices may end up with duplicated IDs */
 		for (j =3D 0; j < i; j++)
-			if (master->sids[j] =3D=3D sid)
+			if (master->streams[j].id =3D=3D sid)
 				break;
 		if (j < i)
 			continue;
@@ -1486,6 +1507,123 @@ static bool arm_smmu_sid_in_range(struct arm_smmu_d=
evice *smmu, u32 sid)
=20
 	return sid < limit;
 }
+
+static int arm_smmu_insert_master(struct arm_smmu_device *smmu,
+				  struct arm_smmu_master *master)
+{
+	int i;
+	int ret =3D 0;
+	struct arm_smmu_stream *new_stream, *cur_stream;
+	struct rb_node **new_node, *parent_node =3D NULL;
+	struct iommu_fwspec *fwspec =3D dev_iommu_fwspec_get(master->dev);
+	bool *insert;
+
+	master->streams =3D _xzalloc_array(sizeof(*master->streams), sizeof(void =
*),
+					fwspec->num_ids);
+	if (!master->streams)
+		return -ENOMEM;
+
+	insert =3D _xzalloc_array(sizeof(bool), sizeof(bool *),
+					fwspec->num_ids);
+	if (!insert) {
+		xfree(master->streams);
+		master->streams =3D NULL;
+		return -ENOMEM;
+	}
+
+	master->num_streams =3D fwspec->num_ids;
+
+	mutex_lock(&smmu->streams_mutex);
+	for (i =3D 0; i < fwspec->num_ids; i++) {
+		u32 sid =3D fwspec->ids[i];
+		insert[i] =3D false;
+
+		new_stream =3D &master->streams[i];
+		new_stream->id =3D sid;
+		new_stream->master =3D master;
+		RB_CLEAR_NODE(&new_stream->node);
+
+		/*
+		 * Check the SIDs are in range of the SMMU and our stream table
+		 */
+		if (!arm_smmu_sid_in_range(smmu, sid)) {
+			ret =3D -ERANGE;
+			break;
+		}
+
+		/* Ensure l2 strtab is initialised */
+		if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) {
+			ret =3D arm_smmu_init_l2_strtab(smmu, sid);
+			if (ret)
+				break;
+		}
+
+		/* Insert into SID tree */
+		insert[i] =3D true;
+		new_node =3D &(smmu->streams.rb_node);
+		while (*new_node) {
+			cur_stream =3D rb_entry(*new_node, struct arm_smmu_stream,
+					      node);
+			parent_node =3D *new_node;
+			if (cur_stream->id > new_stream->id) {
+				new_node =3D &((*new_node)->rb_left);
+			} else if (cur_stream->id < new_stream->id) {
+				new_node =3D &((*new_node)->rb_right);
+			} else if (cur_stream->master =3D=3D master) {
+				/* Bridged PCI devices may end up with duplicated IDs */
+				insert[i] =3D false;
+				break;
+			}
+			else {
+				dev_warn(master->dev,
+					 "stream %u already in tree\n",
+					 cur_stream->id);
+				ret =3D -EINVAL;
+				insert[i] =3D false;
+				break;
+			}
+		}
+		if (ret)
+			break;
+
+		if(insert[i]) {
+			rb_link_node(&new_stream->node, parent_node, new_node);
+			rb_insert_color(&new_stream->node, &smmu->streams);
+		}
+	}
+
+	if (ret) {
+		for (i--; i >=3D 0; i--)
+			if (insert[i])
+				rb_erase(&master->streams[i].node, &smmu->streams);
+		xfree(master->streams);
+		master->streams =3D NULL;
+	}
+	mutex_unlock(&smmu->streams_mutex);
+
+	xfree(insert);
+
+	return ret;
+}
+
+static void arm_smmu_remove_master(struct arm_smmu_master *master)
+{
+	int i;
+	struct arm_smmu_device *smmu =3D master->smmu;
+	struct iommu_fwspec *fwspec =3D dev_iommu_fwspec_get(master->dev);
+
+	if (!smmu || !master->streams)
+		return;
+
+	mutex_lock(&smmu->streams_mutex);
+	for (i =3D 0; i < fwspec->num_ids; i++)
+		if(!RB_EMPTY_NODE(&master->streams[i].node))
+			rb_erase(&master->streams[i].node, &smmu->streams);
+	mutex_unlock(&smmu->streams_mutex);
+
+	xfree(master->streams);
+}
+
 /* Forward declaration */
 static struct arm_smmu_device *arm_smmu_get_by_dev(const struct device *de=
v);
 static int arm_smmu_assign_dev(struct domain *d, u8 devfn, struct device *=
dev,
@@ -1552,7 +1690,7 @@ static int arm_smmu_remove_device(uint8_t devfn, stru=
ct device *dev)
=20
 static int arm_smmu_add_device(u8 devfn, struct device *dev)
 {
-	int i, ret;
+	int ret;
 	struct arm_smmu_device *smmu;
 	struct arm_smmu_master *master;
 	struct iommu_fwspec *fwspec;
@@ -1561,7 +1699,6 @@ static int arm_smmu_add_device(u8 devfn, struct devic=
e *dev)
 	if ( dev_is_pci(dev) )
 	{
 		struct pci_dev *pdev =3D dev_to_pci(dev);
-		int ret;
 			=09
 		/* Ignore calls for phantom functions */
 		if ( devfn !=3D pdev->devfn )
@@ -1589,26 +1726,11 @@ static int arm_smmu_add_device(u8 devfn, struct dev=
ice *dev)
=20
 	master->dev =3D dev;
 	master->smmu =3D smmu;
-	master->sids =3D fwspec->ids;
-	master->num_sids =3D fwspec->num_ids;
 	dev_iommu_priv_set(dev, master);
=20
-	/* Check the SIDs are in range of the SMMU and our stream table */
-	for (i =3D 0; i < master->num_sids; i++) {
-		u32 sid =3D master->sids[i];
-
-		if (!arm_smmu_sid_in_range(smmu, sid)) {
-			ret =3D -ERANGE;
-			goto err_free_master;
-		}
-
-		/* Ensure l2 strtab is initialised */
-		if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) {
-			ret =3D arm_smmu_init_l2_strtab(smmu, sid);
-			if (ret)
-				goto err_free_master;
-		}
-	}
+	ret =3D arm_smmu_insert_master(smmu, master);
+	if (ret)
+		goto err_free_master;
=20
 	/*
 	 * Note that PASID must be enabled before, and disabled after ATS:
@@ -1655,6 +1777,8 @@ static int arm_smmu_add_device(u8 devfn, struct devic=
e *dev)
 	return 0;
=20
 err_free_master:
+	arm_smmu_disable_pasid(master);
+	arm_smmu_remove_master(master);
 	xfree(master);
 	dev_iommu_priv_set(dev, NULL);
 	return ret;
@@ -1853,6 +1977,9 @@ static int __init arm_smmu_init_structures(struct arm=
_smmu_device *smmu)
 {
 	int ret;
=20
+	mutex_init(&smmu->streams_mutex);
+	smmu->streams =3D RB_ROOT;
+
 	ret =3D arm_smmu_init_queues(smmu);
 	if (ret)
 		return ret;
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug=
h/arm/smmu-v3.h
index ab07366294..ab1f29f6c7 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -639,6 +639,15 @@ struct arm_smmu_device {
 	struct tasklet		evtq_irq_tasklet;
 	struct tasklet		priq_irq_tasklet;
 	struct tasklet		combined_irq_tasklet;
+
+	struct rb_root		streams;
+	struct mutex		streams_mutex;
+};
+
+struct arm_smmu_stream {
+	u32							id;
+	struct arm_smmu_master		*master;
+	struct rb_node				node;
 };
=20
 /* SMMU private data for each master */
@@ -647,8 +656,8 @@ struct arm_smmu_master {
 	struct device			*dev;
 	struct arm_smmu_domain		*domain;
 	struct list_head		domain_head;
-	u32				*sids;
-	unsigned int			num_sids;
+	struct arm_smmu_stream		*streams;
+	unsigned int				num_streams;
 	bool				ats_enabled;
 };
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470339.1679075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKz-0007zh-5R; Tue, 03 Nov 2026 17:30:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470339.1679075; Tue, 03 Nov 2026 17:30:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIKz-0007zR-2U; Tue, 03 Nov 2026 17:30:21 +0000
Received: by outflank-mailman (input) for mailman id 1470339;
 Tue, 03 Nov 2026 17:30:20 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIKy-0007ye-0n
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIKx-00F76l-DV
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:19 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a27-bab6-0a2a0a5309dd-0a2a4504a610-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:19 +0100
Received: from [52.101.66.101]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2b-b57f-0a2a45040019-34654265ae0f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:19 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:17 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=KaZvUNUbNrxl4BmX/UA5tCFMzCCB4Np7EVsctLPr6OnyGG0MloUiHFlv7kX3LoO2TXUHhPlS6jQlBdDklTw/nVfmeP1qxlFcXAOV8TJz1+TCkIezPgu7/L6MEfaGsnwMDQ4Wu2fdwukAfqGpF8YHWXuGvbp6APxH6hkiA9/Flj3e/tmO/PNBX2PDjQcw6WE6g0p5Nc5Ddjiye94psNiVkROWNUwJQ37XH2LWftVc4Ev7/mKhw4WI/oMJNDdR/Oi1pgP87b8GAMlZ+pN86tbcOSI2clH7TtLOpAs6Di/n1gLPuCwnj8uX8E3A+OEx77qCMJgpIau808QRS7elx/jUgQ==
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=3WBix1D/fYogCNulWhra/ZqXkGiEn7FPuBmxMty0cEo=;
 b=gHaYPSNDgSg+Ox0eINzEhCh5sGhD96GaBo/e118ASM/78fpBTIzdrDOkRIOAk09RbphnNwYLgjdleaYNB2SZ71SArT5/tSwW/zew85avxugK+FckMLJx7ZqxOPdrrlZLAFpJbVX6D4Nif/oIdU1gdiigPH3NHS8h2+hnzaCrSO3kjoXyGMVudGmkJyZuGgW7Y9xz1xJQRqXjMnNoF+0zYNR7yy5wfnEGFHYqCa8at6pEjpYO0Azb45k2engu4+mZzMhWr1zxTOp4NC6W2c9vosXzE3L6XI4dY7jyuKUhncOxS9asmMId24yHn25DFwOJPZQObpqoeEwWIv4dT6rPrA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3WBix1D/fYogCNulWhra/ZqXkGiEn7FPuBmxMty0cEo=;
 b=SEIuyTyXyXrT+/UxKvdnjI+EOWQfcThCO2ky/LAnX8YR9pbKoy3ZWRJnE/QiE+gkr1oiObEiQSCacFhRBx6Znp39WF9C4wx30eE/OtxgoIGZV31DYwBKHGMDDhgDQkGI/Dhu/DhSBTmRPmE84FfCB92+GfE1aAXOx7MWmdvjntLwt2fRri/KYYsW1Tux78vdbOwFr3JDslQJh3kqboprAx24/xkJFZn4FWp8KAbhWnNjEciyDkc0RMgImw7OBWxkK8ywApGyAY7ruM0dBGXey8COJTh6mYOycakYZ8Zy9g6qdRuek0cAirfwGpNsZiXZmJYja91GFgfG83ZYzvd2Qw==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 02/22] xen/arm: smmuv3: Add support for stage-1 and nested
 stage translation
Thread-Topic: [PATCH v5 02/22] xen/arm: smmuv3: Add support for stage-1 and
 nested stage translation
Thread-Index: AQHda7j+0OKnWXqhjk2GUMK3mkLmTQ==
Date: Tue, 3 Nov 2026 17:30:17 +0000
Message-ID:
 <8b40ccc2707fbf02f3d6b1ba48db19c7467af321.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 9f5b366b-b883-4ee2-ecb4-08df39d0208e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 4tRYMU0T1OU2nV7b8DvtcqcrqehB/4w8UePkVd98yRFL1aUgEjxvKAoFtM+B800txEDusbSI1q4RrzUl4Sb3wZft7mA72Yw+d8D2pgxnrJXq1VwxtyX1MC9zcycUB+1kJDTPtAtmu7odOZt1L58RcTv+RDRw4qOWgE4sk5a04C2Fj6EZiqPGZSLW5AqfUgltfP4F/gwSP+U1/2QyIcNfZMZOU8NVwT8R/LC0DVBvUQpYexQZ9MrKlfpKH1TaJeyxgvRYIVuyWUsyDKKcI/dwHDeQtPfXKt//9XSRP1wbu42pmhm2UItTVA3mlyTIC6nmynveqvQslkGKBYBm+u5DFYDSMksVmtMSTjvGMPbcDdye+1V+yJIad84TZPvoisY2VmO+W1OloE+2dEJ5GyYLwx6y+9fXvFTtMt6rpxN791wzTX0OGEitMz6/ibAWZlyS/EYH2SBuWbUmsmbELm65JeTi5THrjoJX0ZI38ZE5TgFLMvjSk/2zTnqAublPX7CkYyC3iUBsEJjHCshn3eENrYt1YKI803w0v/dgOOpmYp63CXmQvHm77NjnroxdY2UGLJ2R3Kjj37wAg1IXLnJKtQ9+yweVpo+qvcBtp+BvxMUxdGzYz4rDTwSLv97ihJuIyyoWpk4K04gGVoU3tw/jOzjMmjfeo7XQnj5iLcgOJjOVAKfmesUOcucXtX/HyCxhJq+ey0JqEyYluWADjUqizEmPUTHw79X/od9kic2ccTM=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?iU7409APEpqjxq6rg5rBKGM1sNJJ6Gwbag+nZaO/Jqhu7woREVJXmgaJZU?=
 =?iso-8859-1?Q?lu/BzFzFGCKK+jUfGlJtekbfaCOxfQUxQQyq5NooUesmfhzyU31fq7uNew?=
 =?iso-8859-1?Q?Mi4yV4O0E3ckcJfHeJJ5BL7G7rKcrQEEQUQJsUeozFnE4ewU80LoGcv3cF?=
 =?iso-8859-1?Q?FMAe3xRwD42bHYHMjGBsk50Z04qEn+q9Swq/eiu/Ha94+oAx/z34b4P5RI?=
 =?iso-8859-1?Q?lQLTrtOvDVCVzeAYeDZAvY9JtV0qwvyuINyhMC3JeN0kD5AnRSok2/w2ak?=
 =?iso-8859-1?Q?cEOBKnb3kjv82cz95fRH+9p80ZPB3gOctqUt5gvfRPiCVifgx10uM5Y6ig?=
 =?iso-8859-1?Q?bZeb5oGpUR1M3s7NJNmqMgGgcKFK8Xhcb6fUwKwCuTo+bXcpZDMKQ8rgbd?=
 =?iso-8859-1?Q?z99VY0oiVutbaYoHbSlCx8pp+OM9PelBsnjAZGscs9ZnS3yna+aDBvcr5S?=
 =?iso-8859-1?Q?PKooGndKsrZ18fJ9gUR6RRceOxkKNbzdQnT7wrYhN+0agEH0cskVMucZbk?=
 =?iso-8859-1?Q?Hm0uJDITOr/rk77WfR0yM6f3da6Ypn2LeTEPwgekJ1NCTDjzOiW/9/5yM4?=
 =?iso-8859-1?Q?iNXu7ISvj8GBK4v2GIJlgbvFdbp2AGHGwEeHlFis7ompCi7x614Qs55bDP?=
 =?iso-8859-1?Q?XeuSFrMD1CqlIlpMgFih1aIrLo4cKQEMcoKiBCappxBkzaznMTZtWCd8JZ?=
 =?iso-8859-1?Q?pWTYgRvSqZrzL8Dz0rAN0cVM/p3sy6//QY8pMj1U55rnm3/UnxRUAEig0q?=
 =?iso-8859-1?Q?RUqAhOxI5/zQWvxOMhW+6zSXSf/oVchTjKffEQjqNqBMhPH58999EeTOu+?=
 =?iso-8859-1?Q?6kJupcmFcxg9QsAmNsLp16L16SOZQe3VCdkZrblVkDdcTaGHjdmFJeHEp1?=
 =?iso-8859-1?Q?QEq8PyYb3DAZVwjVuR+w88xzTqgY2nejcduQuV3U3rIam7MMP5k8irf3gY?=
 =?iso-8859-1?Q?s5uurTOl83/2iL5+kxHP52tTlAksdzjgka66mP/wj4KEoER0ujjU8EYLeS?=
 =?iso-8859-1?Q?mwxX6bJb8UWIWLGbzNrJZp1/o8YHgrYiAcn21ysOxowbJah1lZDPWFWOCg?=
 =?iso-8859-1?Q?+fbUCmaeANpfq49BDJ1wtUe+m7XgQiVrFDrIkX5y8JhMPe79EsH6RrbfZQ?=
 =?iso-8859-1?Q?Dhc9JkEMmW4J5MHbTHRQci3iB8meD+McpxMqtokuM0KMWdB/mFN7FCZsD8?=
 =?iso-8859-1?Q?pDo9pcwW4/ojeo85suxGLUw76E1LP82G0yTnduIwtbvr70XZu8lz2nXZW7?=
 =?iso-8859-1?Q?zopn/CrGA8EgwtlBa/wdkFwPZ7JmccZSxOTCs27rZxHWX6rMy3rhxBW8Bu?=
 =?iso-8859-1?Q?UhK5BUxGxqJhJ3AUH4Pl6WBITI05ckvIGm35tViazKgnch2LwcAY95TpOf?=
 =?iso-8859-1?Q?OTgmL12khd/ikqLh9dqnuw+JAniZ4znnHv2UQ/JzAHJwqPnP9qdKN+44rd?=
 =?iso-8859-1?Q?vJhAc/qgUJaPMonpLCNIicSjyCPgMKMnHHkjmpVqTU1CzFUBEA7NsO7dn1?=
 =?iso-8859-1?Q?G3Ciql5kZ7CPjsnpr5/InmOpU9rLFeEbbFJLw1A+cQ0Ehresi4KR4V+ORG?=
 =?iso-8859-1?Q?5nL6cbT+/Eu2aS56V4wZ1xZ7l3LTijLWlvM+/O9va4lrfPtVyl1BrEai8k?=
 =?iso-8859-1?Q?CPto23gD3PBX1A4/XoA0mzxxqIhs9HzDl/yTiKj5N/6+Dr3fP07cO/wCW7?=
 =?iso-8859-1?Q?rPtsB8pr74Yvez5tJKqpH60q0VHQXt0f/dFBdxxvH1Diz2OSKqi0vSJRfs?=
 =?iso-8859-1?Q?PpWWAbgm5Ko0omqAuEbcOjqlWtcJ/LBOFnzoZcWt9FLUtgNJRI/H0j24He?=
 =?iso-8859-1?Q?bk7Q8GTsLw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9f5b366b-b883-4ee2-ecb4-08df39d0208e
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:17.1870
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: XE1Mq66tnv77Mb3woVtwnD8npoHhr/slTU5a8XmWAe0xtENZglKQHZSqnazQbFmRGSUn0WMsATl7NIBFXELOlg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-ebf023/1793727019-518D1B50-7CF808BE/0/0
X-purgate-type: clean
X-purgate-size: 7586

From: Rahul Singh <rahul.singh@arm.com>

Xen SMMUv3 driver only supports stage-2 translation. Add support for
Stage-1 translation that is required to support nested stage
translation.

In true nested mode, both s1_cfg and s2_cfg will coexist.
Let's remove the union. When nested stage translation is setup, both
s1_cfg and s2_cfg are valid.

We introduce a new smmu_domain abort field that will be set
upon guest stage-1 configuration passing. If no guest stage-1
config has been attached, it is ignored when writing the STE.

arm_smmu_write_strtab_ent() is modified to write both stage
fields in the STE and deal with the abort field.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/smmu-v3.c | 98 +++++++++++++++++++++++----
 xen/drivers/passthrough/arm/smmu-v3.h | 10 +++
 2 files changed, 96 insertions(+), 12 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index d49085b38f..ecfa7e4723 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -683,8 +683,10 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_=
master *master, u32 sid,
 	 * 3. Update Config, sync
 	 */
 	u64 val =3D le64_to_cpu(dst[0]);
-	bool ste_live =3D false;
+	bool s1_live =3D false, s2_live =3D false, ste_live =3D false;
+	bool abort, translate =3D false;
 	struct arm_smmu_device *smmu =3D NULL;
+	struct arm_smmu_s1_cfg *s1_cfg =3D NULL;
 	struct arm_smmu_s2_cfg *s2_cfg =3D NULL;
 	struct arm_smmu_domain *smmu_domain =3D NULL;
 	struct arm_smmu_cmdq_ent prefetch_cmd =3D {
@@ -699,30 +701,57 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu=
_master *master, u32 sid,
 		smmu =3D master->smmu;
 	}
=20
-	if (smmu_domain)
-		s2_cfg =3D &smmu_domain->s2_cfg;
+	if (smmu_domain) {
+		switch (smmu_domain->stage) {
+		case ARM_SMMU_DOMAIN_S1:
+			s1_cfg =3D &smmu_domain->s1_cfg;
+			break;
+		case ARM_SMMU_DOMAIN_NESTED:
+			s1_cfg =3D &smmu_domain->s1_cfg;
+			fallthrough;
+		case ARM_SMMU_DOMAIN_S2:
+			s2_cfg =3D &smmu_domain->s2_cfg;
+			break;
+		default:
+			break;
+		}
+		translate =3D s1_cfg || s2_cfg;
+	}
=20
 	if (val & STRTAB_STE_0_V) {
 		switch (FIELD_GET(STRTAB_STE_0_CFG, val)) {
 		case STRTAB_STE_0_CFG_BYPASS:
 			break;
+		case STRTAB_STE_0_CFG_S1_TRANS:
+			s1_live =3D true;
+			break;
 		case STRTAB_STE_0_CFG_S2_TRANS:
-			ste_live =3D true;
+			s2_live =3D true;
+			break;
+		case STRTAB_STE_0_CFG_NESTED:
+			s1_live =3D true;
+			s2_live =3D true;
 			break;
 		case STRTAB_STE_0_CFG_ABORT:
-			BUG_ON(!disable_bypass);
 			break;
 		default:
 			BUG(); /* STE corruption */
 		}
 	}
=20
+	ste_live =3D s1_live || s2_live;
+
 	/* Nuke the existing STE_0 value, as we're going to rewrite it */
 	val =3D STRTAB_STE_0_V;
=20
 	/* Bypass/fault */
-	if (!smmu_domain || !(s2_cfg)) {
-		if (!smmu_domain && disable_bypass)
+	if (!smmu_domain)
+		abort =3D disable_bypass;
+	else
+		abort =3D smmu_domain->abort;
+
+	if (abort || !translate) {
+		if (abort)
 			val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_ABORT);
 		else
 			val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_BYPASS);
@@ -740,7 +769,32 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_=
master *master, u32 sid,
 		return;
 	}
=20
+	if (ste_live) {
+		/* First invalidate the live STE */
+		dst[0] =3D cpu_to_le64(STRTAB_STE_0_CFG_ABORT);
+		arm_smmu_sync_ste_for_sid(smmu, sid);
+	}
+
+	if (s1_cfg) {
+		dst[1] =3D cpu_to_le64(
+			 FIELD_PREP(STRTAB_STE_1_S1DSS, STRTAB_STE_1_S1DSS_SSID0) |
+			 FIELD_PREP(STRTAB_STE_1_S1CIR, STRTAB_STE_1_S1C_CACHE_WBRA) |
+			 FIELD_PREP(STRTAB_STE_1_S1COR, STRTAB_STE_1_S1C_CACHE_WBRA) |
+			 FIELD_PREP(STRTAB_STE_1_S1CSH, ARM_SMMU_SH_ISH) |
+			 FIELD_PREP(STRTAB_STE_1_STRW, STRTAB_STE_1_STRW_NSEL1));
+
+		if (smmu->features & ARM_SMMU_FEAT_STALLS &&
+		   !(smmu->features & ARM_SMMU_FEAT_STALL_FORCE))
+			dst[1] |=3D cpu_to_le64(STRTAB_STE_1_S1STALLD);
+
+		val |=3D (s1_cfg->s1ctxptr & STRTAB_STE_0_S1CTXPTR_MASK) |
+			FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S1_TRANS) |
+			FIELD_PREP(STRTAB_STE_0_S1CDMAX, s1_cfg->s1cdmax) |
+			FIELD_PREP(STRTAB_STE_0_S1FMT, s1_cfg->s1fmt);
+	}
+
 	if (s2_cfg) {
+		u64 vttbr =3D s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK;
 		u64 strtab =3D
 			 FIELD_PREP(STRTAB_STE_2_S2VMID, s2_cfg->vmid) |
 			 FIELD_PREP(STRTAB_STE_2_VTCR, s2_cfg->vtcr) |
@@ -750,12 +804,19 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu=
_master *master, u32 sid,
 			 STRTAB_STE_2_S2PTW | STRTAB_STE_2_S2AA64 |
 			 STRTAB_STE_2_S2R;
=20
-		BUG_ON(ste_live);
+		if (s2_live) {
+			u64 s2ttb =3D le64_to_cpu(dst[3]) & STRTAB_STE_3_S2TTB_MASK;
+			BUG_ON(s2ttb !=3D vttbr);
+		}
+
 		dst[2] =3D cpu_to_le64(strtab);
=20
-		dst[3] =3D cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK);
+		dst[3] =3D cpu_to_le64(vttbr);
=20
 		val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS);
+	} else {
+		dst[2] =3D 0;
+		dst[3] =3D 0;
 	}
=20
 	if (master->ats_enabled)
@@ -1254,8 +1315,18 @@ static int arm_smmu_domain_finalise(struct iommu_dom=
ain *domain,
 {
 	int ret;
 	struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(domain);
+	struct arm_smmu_device *smmu =3D smmu_domain->smmu;
+
+	if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) {
+		smmu_domain->stage =3D ARM_SMMU_DOMAIN_ABORT;
+		return 0;
+	}
=20
-	/* Restrict the stage to what we can actually support */
+	/*
+	 * Default to stage-2 support and initialize it. Stage-1 will be
+	 * initialized during guest config attachment, if nested or stage-1
+	 * mode is required
+	 */
 	smmu_domain->stage =3D ARM_SMMU_DOMAIN_S2;
=20
 	ret =3D arm_smmu_domain_finalise_s2(smmu_domain, master);
@@ -2454,11 +2525,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu=
_device *smmu)
 		break;
 	}
=20
+	if (reg & IDR0_S1P)
+		smmu->features |=3D ARM_SMMU_FEAT_TRANS_S1;
+
 	if (reg & IDR0_S2P)
 		smmu->features |=3D ARM_SMMU_FEAT_TRANS_S2;
=20
-	if (!(reg & IDR0_S2P)) {
-		dev_err(smmu->dev, "no stage-2 translation support!\n");
+	if (!(reg & (IDR0_S1P | IDR0_S2P))) {
+		dev_err(smmu->dev, "no translation support!\n");
 		return -ENXIO;
 	}
=20
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug=
h/arm/smmu-v3.h
index ab1f29f6c7..f302c69d02 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -197,6 +197,7 @@
 #define STRTAB_STE_0_CFG_BYPASS		4
 #define STRTAB_STE_0_CFG_S1_TRANS	5
 #define STRTAB_STE_0_CFG_S2_TRANS	6
+#define STRTAB_STE_0_CFG_NESTED		7
=20
 #define STRTAB_STE_0_S1FMT		GENMASK_ULL(5, 4)
 #define STRTAB_STE_0_S1FMT_LINEAR	0
@@ -391,6 +392,7 @@ enum arm_smmu_domain_stage {
 	ARM_SMMU_DOMAIN_S2,
 	ARM_SMMU_DOMAIN_NESTED,
 	ARM_SMMU_DOMAIN_BYPASS,
+	ARM_SMMU_DOMAIN_ABORT,
 };
=20
 /* Xen specific code. */
@@ -549,6 +551,12 @@ struct arm_smmu_strtab_l1_desc {
 	dma_addr_t			l2ptr_dma;
 };
=20
+struct arm_smmu_s1_cfg {
+	u64				s1ctxptr;
+	u8				s1fmt;
+	u8				s1cdmax;
+};
+
 struct arm_smmu_s2_cfg {
 	u16				vmid;
 	u64				vttbr;
@@ -669,6 +677,8 @@ struct arm_smmu_domain {
 	atomic_t			nr_ats_masters;
=20
 	enum arm_smmu_domain_stage	stage;
+	bool			abort;
+	struct arm_smmu_s1_cfg	s1_cfg;
 	struct arm_smmu_s2_cfg	s2_cfg;
=20
 	/* Xen domain associated with this SMMU domain */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470340.1679084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL1-0008Eu-CE; Tue, 03 Nov 2026 17:30:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470340.1679084; Tue, 03 Nov 2026 17:30:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL1-0008El-8G; Tue, 03 Nov 2026 17:30:23 +0000
Received: by outflank-mailman (input) for mailman id 1470340;
 Tue, 03 Nov 2026 17:30:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIKz-00085d-Lb
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIKz-004K23-23
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:21 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2a-8faa-0a2a0a5109dd-0a2a450bb73c-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:21 +0100
Received: from [52.101.84.141]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2c-b7e8-0a2a450b0019-3465548dff7a-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:20 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:19 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=FeeXNnlvSLVpiEo/GoQBsIEV7BF8Ko8nzxvNbgUQ0Qpogc/5m+2psG9nLVcQQXMapE1uzN+BnJ2jisN9SSomlbNShGhWevqKEK1jdqPSBgO7uTx8+M3HvwQV9END5lvI4iUeZ5RGtFCXL8cn7CgSr+F00h4Ua7tO9GpAc18HSbMapHw9RYFgvN5ZPFmBpQa8wBA9j9UqdxU9V7swJ5bV/FAAgsvcKAtrCflde/mCprHXo5qoocJiZfpy494nK8ETWYj5M9uNxPVIbenQaozkzdFyU8AqoBmaUxoGfoOdf/COxCP6L7aEJyNqitL3a2kZRb4kmocKgOm51Wbm6ePpfw==
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=tvp1JWtva9GSj9u2UUvi+2LXnPzddQcdT6wGm2JaJXk=;
 b=I7liL18Bv/JeApexuH4k67bAOnnXA+jXiSmoimVNu0cQQbUp6DWzRiLu+Zz1du5g/aZpB/4H+o0HdMkhV2CIUMVnPBIXQVQTrn8m3tDofTPLkNoX+hLYVNNyfEmX199QoCzr3BhmBaUU59ZAbpakIAB9slFz7GDxHfK+yZNtKUmhck2TnOHIGTfLvs4qUfB36FUbo1m4ty90bH6GPRpqOGasgGq1gXRlE0ctZrDPXKIjRi7Z/OJFQl4soynkFPNnU6qw2Hn+4qj3hQ7EWRDHRUE+G/UVFrReKdcs6cNze/2uZTzY51kGybXvDzqoG4ooe7qeDMPwQ4mdm4Kjk5ju0w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tvp1JWtva9GSj9u2UUvi+2LXnPzddQcdT6wGm2JaJXk=;
 b=Qh0A5nFVfJ7wBsvB70EhHp0v+7Qr70IO/eGxPbyQhd6ZluC3cwHKsmQ/VryUUYApxTJP4L5ccrSnLMdZ+a7JQfYXKAENxwZzd6g8/nVqmTVFEvs+JCZfz9kKNm+Qy8D8AENdoBJT03Uja81R4YfRG9z2dJjy5a+ykVQV7UsuBT4cyZTiP0YgoxngB8Pq3+itEiYC7nhllPCwGQ/oHl1f8O7RMUvg+NjYPy+bk8vkrgoAGJKOknnzZ4gMc8fd5kxkHbx6QJjgPnSmiqaTCNTDCLBT9Um4DXJRItlEeKGOpxIpxh/oCpLb6mlXd+mhLdT6HOYuaiIuvtz2ji7q1Keqqg==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 03/22] xen/arm: smmuv3: Alloc io_domain for each device
Thread-Topic: [PATCH v5 03/22] xen/arm: smmuv3: Alloc io_domain for each
 device
Thread-Index: AQHda7j/29wcCkNzHUuJF/zFPrPhCQ==
Date: Tue, 3 Nov 2026 17:30:19 +0000
Message-ID:
 <6340fb19c3067df38d9d5e82fe60ea8deba27700.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 1ad0fc14-6345-4130-9e6b-08df39d021ce
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 5BdYudiEuYhwkGVmDhCJvqjx1y/czAII8FWsYfps8eotYTxtEX9jYNTas2Am1q6kBpJXaOKrAjDx5/sZWArXO1+pdi34LV9cS3w7Qs91CWoFrkNySGh4ngsPiMCyTuQ1jy5QryFemC+1ytD6e85IENKowkZ9FNENZ6PwmrdTeBb5RWb1s0KqKFA/OiEzmglokXX/BVdp9LJRqhtbTMpyXS5gYI32hMcYRFndoXhViPw8tdiCAM9lc+0fn8d3+R32CnuNwrK9/0Ax/IA21FTFAyuXOmb7WJlmOF605k0dPRSTHowUUbZhzpEIx3PsBPrk8FIS6iJ2JsW60TEzNEwRlz+GmaUef5fdNS7UfqzB6OJtxOErEgjM0dbm203W/7rp+ghScHM1YUyKBixEz4qFtOI9sNmzZEiAwibXaXt+7gkrPDaAqxwOgj6sxg13zMWvKJXAVL7XCEvThwq5vn/Xf+PcCQvnb+xWihWHtf2zQbEFqgyc7A8QLgUQh8z4DDTXc+N1StQFfVLtIekYb4KcFPFvM8gFVC948e/HvlUOsAK9IWuEqb+BUKUjXSsbD1D8UoKuR/ZN1jDz6PD0jmFEj/QdOoV9X+xFIupN/gmPuyYhXPxRG547xBFp8xL5x74pt3xM+XDAFqtLWefDXmomsrQPoAQi5RtiVXYLDYvy2ry9MG4VwZ8gTSDots3e46GhFeCqiY65uV40vcbEfTEVLZEK68hpLeT7j1Qi2+uyzbs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?xlCokqxiaqAv9hZAn3CJORafKbF4EG9NygvleeyW1JAGt4UUGgVXK1cPty?=
 =?iso-8859-1?Q?T01B4+EbfnaDf0TGvrSv0UGbEDRkyawwBzH3jZtedg6Ntmk/FypHRZVv6a?=
 =?iso-8859-1?Q?LBPESBMCUFnoXdODj4Y+Q1+YazZ0qXZ/gBx6Zvk6PwVzbvYhEkwTbcU+lR?=
 =?iso-8859-1?Q?H30ztPtUVSWhCMfFJ6DAVvptpAuBs+ezGXHcn6ibS+pCtyOoJVeNN5yBGV?=
 =?iso-8859-1?Q?2uFxu6O8MEJ3GsOr9ZE/Swq8LVhX/c0kX7ZA0o5UG0s3C0Avs2cGMYpUPJ?=
 =?iso-8859-1?Q?aphpObYeDwIFQio68IYXbRMdkdw0yU3Zah0lstSfqleah12xYL8ULRA7hj?=
 =?iso-8859-1?Q?hG2mbb+dUs7SeOX5FdtPOrVbuDjGDlRxTyTvHu4HuDvh5XX13UvTMK/n43?=
 =?iso-8859-1?Q?povQJ/SnXp442ia3WCYBpNv/+cbyO/8mTOGcpYIQDFIoDbUibjMhYFegAg?=
 =?iso-8859-1?Q?XOOzt4XVagAcFw3JtmN4zTcNNw+tjSrReqDqP5g5QRNEEPRZTmy57OIauQ?=
 =?iso-8859-1?Q?qMgFcA7drmka7/xvYTU7pk3qp0F6ZNGD3aKw3ZLCF5810RYQJ4QKKTRg04?=
 =?iso-8859-1?Q?HbYug1AyJwe9Kszi34wX/hEWg74RGHqTSZ0peoQYRhVXumAFf4nhTVRlsI?=
 =?iso-8859-1?Q?vrr7qRHAxmK1Loi/yonivoWEQ8oHyRoCxhx/1PQObOeVJRk2f6Un6tlRN7?=
 =?iso-8859-1?Q?EWDKr495ld0rHacP8Oj7go1KZqfM5RSs39GveJYJrNa7FkPqtCr2+mxM1c?=
 =?iso-8859-1?Q?D68HOP30WUX4kvFn0266WqfKQhHlck/YxVam7gyTEFVyA2YFOVof2rH5qh?=
 =?iso-8859-1?Q?E23Oe6uR3BjCuqQEKrJNFeFoPM3uyMcreMb+yyKLePlTTgwI4qx9vIGKSj?=
 =?iso-8859-1?Q?waMkS7KtAEe3OETqA5ya5tE8c9xu6mTYQvQc05P88z7G0RXwSjGMQ/NPbD?=
 =?iso-8859-1?Q?yH6fW6cdDgPjrPifa3G+Y7ni8XwS2jsRk3QXT3Dj49x57FtmMvCqXunQb0?=
 =?iso-8859-1?Q?NJ36WI9Ri5DCsPR3SCfZ6TU7QHBf5VFOVhzj0KSGORN/JYxSXeC9duI30u?=
 =?iso-8859-1?Q?XA/fwJvNq/bc0kP+jOGOl72AubrwBTwnZulLmxBY+sdQGz1m0oK1wCT7qH?=
 =?iso-8859-1?Q?1gveZ5OJJmKkbyVIVFZs+0fwRk0EJ0KqPgZ/arb+RXWcg6znPoHUuWOXEE?=
 =?iso-8859-1?Q?WHfxQQF4wG6WPodQtPdTHDnLGj+6gvXnvOT9gB18pDwS7A7ne06kLJfABd?=
 =?iso-8859-1?Q?dE8II9La+yhyyxUJW850tjl4dAyOCCOddD92iymREeh7kGH5G12PHd3DJ1?=
 =?iso-8859-1?Q?ztczBAOc3kqDbtFa+0SqqizxkIfJnxYSJKuVkdgUyP5F29lAohrPeCcFMk?=
 =?iso-8859-1?Q?NK/Pptvvopk++wKVmfqZsQ7JYgXnf+SKCJmH5H6wX3Zn8JCtaPx+1hYl+6?=
 =?iso-8859-1?Q?h/5i9HRXH4Ec3hWoZ7Aawj7gW4R5IbLtKdQubwU/sSE3Wnl+6LO45qw7Y8?=
 =?iso-8859-1?Q?SyImzh7VH6O0OsKM4SdQZisd3q7om66T+ZGW1dqrPbKr0mQdatB77XEeee?=
 =?iso-8859-1?Q?mYh0XVTHDyCMUsDJ7YryKyaumQSEey7eYaW83rA7YBqFZhdnvXw7+H4JuA?=
 =?iso-8859-1?Q?4hQ026WVW+TOIVire3l3z9up3SKmxUhX4wM0ePRLIxybc1Jjp/asDiqp/M?=
 =?iso-8859-1?Q?k7IfADnNh/BgpBoSHeEap0rmbAvBh8YXJpmyR8DcAW6yAwb9yIMwT/Mgfs?=
 =?iso-8859-1?Q?DVyIxmAsdfFVu7X/cj7nQMNWfgyxQYDb4Sovzsem+Ux+QFrV9VKKRwWc/6?=
 =?iso-8859-1?Q?rTYE4oWJzw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1ad0fc14-6345-4130-9e6b-08df39d021ce
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:19.2526
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: EXzX4oxoXSYpyFcgNboJWkxYFsUa2BoZk2zCREZy4lplfvL+q+XqaCzA80oMhphIP1fRn597+9YaFrIvNbHP6Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-42698a/1793727021-1B4D39EA-022A4BE8/0/0
X-purgate-type: clean
X-purgate-size: 6391

From: Rahul Singh <rahul.singh@arm.com>

In current implementation io_domain is allocated once for each xen
domain as Stage2 translation is common for all devices in same xen
domain.

Nested stage supports S1 and S2 configuration at the same time. Stage1
translation will be different for each device as linux kernel will
allocate page-table for each device.

Alloc io_domain for each device so that each device can have different
Stage-1 and Stage-2 configuration structure.

The stage-2 configuration is now shared between devices belonging to
the same domain. Update io_domain initialization to create a new stage-2
configuration only if a VMID has not already been allocated for the
target Xen domain. Similarly, update io_domain teardown to free the
VMID only when no other devices are assigned to the target domain.
Also optimize the IOTLB flush procedure to invalidate each VMID only
once.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/smmu-v3.c | 102 ++++++++++++++++++++++++--
 1 file changed, 94 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index ecfa7e4723..0b26bb27a2 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -1229,14 +1229,49 @@ static void arm_smmu_bitmap_free(unsigned long *map=
, int idx)
 	clear_bit(idx, map);
 }
=20
+static struct arm_smmu_domain *arm_smmu_get_domain_s2(struct domain *d,
+				struct arm_smmu_device *smmu)
+{
+	struct iommu_domain *io_domain;
+	struct arm_smmu_domain *smmu_domain;
+	struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv;
+
+	if (!smmu)
+		return NULL;
+
+	/*
+	 * Loop through the &xen_domain->contexts to locate a context
+	 * assigned to this SMMU
+	 */
+	list_for_each_entry(io_domain, &xen_domain->contexts, list) {
+		smmu_domain =3D to_smmu_domain(io_domain);
+		if (smmu_domain->smmu =3D=3D smmu &&
+			smmu_domain->s2_cfg.vmid !=3D INVALID_VMID)
+				return smmu_domain;
+	}
+
+	return NULL;
+}
+
 static void arm_smmu_domain_free(struct iommu_domain *domain)
 {
 	struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(domain);
 	struct arm_smmu_device *smmu =3D smmu_domain->smmu;
 	struct arm_smmu_s2_cfg *cfg =3D &smmu_domain->s2_cfg;
+	struct arm_smmu_domain *existing;
=20
-	if (cfg->vmid)
-		arm_smmu_bitmap_free(smmu->vmid_map, cfg->vmid);
+	if (cfg->vmid) {
+		/*
+		 * VMIDs are shared across contexts belonging to the same
+		 * Xen domain and SMMU. The current domain has already been
+		 * removed from the domain list, so this lookup only finds
+		 * remaining users of the VMID.
+		 */
+		existing =3D arm_smmu_get_domain_s2(smmu_domain->d, smmu);
+
+		if (!existing)
+			arm_smmu_bitmap_free(smmu->vmid_map, cfg->vmid);
+	}
=20
 	xfree(smmu_domain);
 }
@@ -1316,6 +1351,7 @@ static int arm_smmu_domain_finalise(struct iommu_doma=
in *domain,
 	int ret;
 	struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(domain);
 	struct arm_smmu_device *smmu =3D smmu_domain->smmu;
+	struct arm_smmu_domain *existing;
=20
 	if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S2)) {
 		smmu_domain->stage =3D ARM_SMMU_DOMAIN_ABORT;
@@ -1329,6 +1365,26 @@ static int arm_smmu_domain_finalise(struct iommu_dom=
ain *domain,
 	 */
 	smmu_domain->stage =3D ARM_SMMU_DOMAIN_S2;
=20
+	/*
+	 * Look for an already initialized stage-2 configuration for this
+	 * Xen domain and SMMU.
+	 */
+	existing =3D arm_smmu_get_domain_s2(smmu_domain->d, smmu);
+
+	if (existing) {
+		/*
+		 * Reuse the stage-2 configuration.
+		 */
+		smmu_domain->s2_cfg.vmid =3D existing->s2_cfg.vmid;
+		smmu_domain->s2_cfg.vttbr =3D existing->s2_cfg.vttbr;
+		smmu_domain->s2_cfg.vtcr =3D existing->s2_cfg.vtcr;
+		return 0;
+	}
+
+	/*
+	 * If no existing stage-2 configuration for this
+	 * (Xen domain, SMMU), create it
+	 */
 	ret =3D arm_smmu_domain_finalise_s2(smmu_domain, master);
 	if (ret < 0)
 		return ret;
@@ -2865,20 +2921,40 @@ static uint32_t __ro_after_init platform_features =
=3D ARM_SMMU_FEAT_COHERENCY;
 static int __must_check arm_smmu_iotlb_flush_all(struct domain *d)
 {
 	struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv;
-	struct iommu_domain *io_domain;
+	struct iommu_domain *io_domain, *prev;
=20
 	spin_lock(&xen_domain->lock);
=20
 	list_for_each_entry(io_domain, &xen_domain->contexts, list) {
+		struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(io_domain);
+
 		/*
 		 * Only invalidate the context when SMMU is present.
 		 * This is because the context initialization is delayed
 		 * until a master has been added.
 		 */
-		if (unlikely(!ACCESS_ONCE(to_smmu_domain(io_domain)->smmu)))
+		if (unlikely(!ACCESS_ONCE(smmu_domain->smmu)))
 			continue;
=20
-		arm_smmu_tlb_inv_context(to_smmu_domain(io_domain));
+		/*
+		 * Skip contexts that share the same SMMU and VMID with an
+		 * earlier context.
+		 */
+		list_for_each_entry(prev, &xen_domain->contexts, list) {
+			struct arm_smmu_domain *prev_domain =3D to_smmu_domain(prev);
+
+			if (prev =3D=3D io_domain)
+				break;
+
+			if (prev_domain->smmu =3D=3D smmu_domain->smmu &&
+				prev_domain->s2_cfg.vmid =3D=3D smmu_domain->s2_cfg.vmid)
+				break;
+		}
+
+		if (prev !=3D io_domain)
+			continue;
+
+		arm_smmu_tlb_inv_context(smmu_domain);
 	}
=20
 	spin_unlock(&xen_domain->lock);
@@ -2924,12 +3000,22 @@ static struct iommu_domain *arm_smmu_get_domain(str=
uct domain *d,
=20
 	/*
 	 * Loop through the &xen_domain->contexts to locate a context
-	 * assigned to this SMMU
+	 * assigned to this device
 	 */
 	list_for_each_entry(io_domain, &xen_domain->contexts, list) {
+		unsigned long flags;
+		const struct arm_smmu_master *master;
+
 		smmu_domain =3D to_smmu_domain(io_domain);
-		if (smmu_domain->smmu =3D=3D smmu)
-			return io_domain;
+
+		spin_lock_irqsave(&smmu_domain->devices_lock, flags);
+		list_for_each_entry(master, &smmu_domain->devices, domain_head) {
+			if (master->dev =3D=3D dev) {
+				spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
+				return io_domain;
+			}
+		}
+		spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
 	}
 	return NULL;
 }
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470342.1679092 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL3-0008UW-LM; Tue, 03 Nov 2026 17:30:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470342.1679092; Tue, 03 Nov 2026 17:30:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL3-0008UP-Hg; Tue, 03 Nov 2026 17:30:25 +0000
Received: by outflank-mailman (input) for mailman id 1470342;
 Tue, 03 Nov 2026 17:30:23 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL1-0008Gc-MG
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL1-00F76l-2r
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:23 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a1c-bab6-0a2a0a5309dd-0a2a4506cffc-42
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:23 +0100
Received: from [52.101.84.135]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2e-195a-0a2a45060019-346554879b92-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:23 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:21 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=GpBsMHKOn9gLduNV/XKdXCRoNfTHhxzjRlomJ5kqEtL8QRJQrpMCC/1R8jCgjLJXHt2jdKVA0SPrulMOuciPaRr2y1rrPoMTb9OpO0jUgpI8u1ksrv3lAacmq119EadLOygaxK0XTArLh4LlAfCmwO0gA2he+3LvYVukj+L9sOd37KyROnRDDDqsYaAaBVMbQCxJn5irJoVyX5tqTFnUknjEE35M81c7qXOSJjDvG9MlcmfOnNbM+xQI7arnJ/1BKoFMqiZr0STZzDmuDVKS6tlphT4K6bOaqyGY86QCwxMxmK4Sm+ukbXjmZa8MHGUyn4H/Fv3NRoF1BvLOwlXOXg==
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=kyHd0C7JIy9GyS6K+VSUFZspP9Ioi+FTaWRGsBeIlhQ=;
 b=e8Tg+MeBKjSNUMrem9E2emMpFPxz42zCcsQNSZ+JB3SLZJ+m04USGc9H5JVmwPub25gd9ZxPMsVZjyeU1ldhe9eDkuX5Dlkc99aLp3sYqNU1pfBtXadj3a+WfNSaqaAcj/MMpYVXEK28sWkGJ2snW0eCcGKj349ibF8K1XQthUPgOWE0HuiEAli6up5S+vMgeEd5AbGK26IL9+lf7ZJh57+lyANL7dIEIDYCZ+nmKEBEQAeq24aBVhdPqbXvqA/o/Ia62f0//6n0Kqxdwg40FgRefgdZ9eK6Wa/Q7eoMDL5wCO7Vhov2l2dR4ptfILbnrD8ZlACQ2SGmYxJqtYTs5g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kyHd0C7JIy9GyS6K+VSUFZspP9Ioi+FTaWRGsBeIlhQ=;
 b=s15gs2hFq5JUYDMWXTZlTa+33QUmszFto5Mt/PFevQZNhEmo88wfl8+GDM/HTdSrdOYcLP6iRKaHCIruQxFqtb8JjIGJgDiF0WqkilqyKlgHeE7ywdi1hKGw6d936Bw7ffYSfkMp2h2YIWKZh0vxX/tM2Vdn+SYMMKmaR6jUpmu1pR5TOx+drB/J03bVcgvvHhBSLtmMdsqzYpJSIoz9tDTYvTBm9C1dUb0qR2Z5vPKf7Vz7CucGpHzp9X2uetkBye/0VGVdvtyBkFUO3g62s3FQngUCcJZlAFom9kkmtg6SNuJvfOYBpdiGAILidcmn1OElju5AxrebpI1Zf0upQg==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Jan Beulich <jbeulich@suse.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger@xenproject.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 04/22] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Topic: [PATCH v5 04/22] xen/arm: vIOMMU: add generic vIOMMU framework
Thread-Index: AQHda7kAdEtBXg2WyEmfGpH0dbiJbw==
Date: Tue, 3 Nov 2026 17:30:21 +0000
Message-ID:
 <28ea15da6f8b3d85e6d068b9ecd96bcd76d556f1.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 839f700b-311a-4040-79d0-08df39d022ef
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|260925021911599003|260925022911599003|260925021311599003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 NSA6Wy7V5jCJLK67qwgYun8Rxi0dmHNfF1tdHZVrjAfuOTYwMVCCNUSiU159dEvtY6l9otc7ucQwDkuYV0+UaVLihKtsPM6MpsrLkFPevdBhjLYm/FEydfse1SRLCBfz+0o/K+mVwi2c5/qMhNIuLF5szoIr38HWumED0zalXJCJIcptBQkrn+dhkmjjdwcgZoYP/LRLondtpXZrxYMHRUc6MLQjKvy9bZefPdgEkANgRc5ZqFrAPl5o+35CZGnHdOrF5hWh8ZaqbJ+/NSQWZ6OZEJUWqPhM3So0KxThXk2rruyQ/cTfql2PFf458tR9DblakCO+d2JN/p3a7Jerkk03RDvhtfarz1wF2LsWFMisfujp70BC+QA0RaMsUkpppS+t7FWpWryFFD+6uQwQoOFRbZ2WmEXRkOWLL+188wGTRkoQ7aCndc8Qa8O504YT1TgIsqSf44n6fSGQR308b3JNfcx4lvmnh6+OBLj+ybd9CxjFrV+rMljaCTpyVCc5+QVh2nIbj4EjMhLzfn1BWsvXPIywVj1cbJAYOVcHkUvE18bsqLT/0G/rYmiIsFIocLj5X1DV8q6qGV7wrlQzeqO8yfv+blFaeoK0FjV76k00RE7EdDWGLNfxLeVQeymAHmWjbK0JRsZ184Od9J5IFAuGAvm8as969jfCo3Kp9Mjf9rukysCAJbN6cGUiX+rf2Bn88QKC9tUNvv7HmOXVAfPMa43jEy/iAY3drotI5A8=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(260925021911599003)(260925022911599003)(260925021311599003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?kRSA3K+OgOFS3XgnOVKbW+QWcyY629zvMIBwP3wv75GEaVh6oeW/UK85T7?=
 =?iso-8859-1?Q?8DgASC/qDJuBp6on+bUeSqnygdepULWcPf2P4dfHGaWQmR9IYJfk3+4TKj?=
 =?iso-8859-1?Q?J+JD2sEhh4BlEZ4raGYoLkeQV9IEL8cLYztOXhkQkGqSiqaI235pzlj/b/?=
 =?iso-8859-1?Q?4QkCRsVZ5pgip+VIo6ONqB9h1YWaCcrmUc3RpijcR1Zh7E0sClFEbpcFR8?=
 =?iso-8859-1?Q?M0D+/WC4cUlvk0HKeZAhaAhl+5QRIsWl9x7z745NJ6Vvi4UsdzCClkv6M1?=
 =?iso-8859-1?Q?R3QeAOBZ3nWpSBd+72LZ7sm1MKJnjybr5JBThUb7yjs76wdBkO0vFNIpCV?=
 =?iso-8859-1?Q?NPNvjYLdclQRD+OR9LZBiLmUYa/936adYdZ02cM8AJvgo2rXYlxL4THbAA?=
 =?iso-8859-1?Q?FVxvU+zLvZzXTNDUC35qz0ZzACTBTQWU2Y0qkbpbWmDgGodxygwPE0HUcv?=
 =?iso-8859-1?Q?SrDuvy6Jhx2hJP6SuGA4ZAH2j1otD285KsSv5tdlIg+eqZ0KArNXhUoISH?=
 =?iso-8859-1?Q?9phb+Hvta4BfPnU14/HV2yLcyHG1p7t6tupnxsxmkhEaveUtvQYKd6Pe9P?=
 =?iso-8859-1?Q?BZIAC9TF6Ef5GeoEQV1fW7qQzxnxcgMFuIA0DhsX/0sGTUB+9LWFzQcK5J?=
 =?iso-8859-1?Q?kcJPQEEaYLsPkcYKUHuVS7AZfGs+hdKBHWf8EUTwDAH1RDG88Zgdt/kCGz?=
 =?iso-8859-1?Q?XW44gSgC/S1Eprdf6ShQq8NaHUNSkU/pAGOCJd6J4pMkLk4036InbxPIc4?=
 =?iso-8859-1?Q?HltIVYHw1ikYW1FGaVjDuE8TwWDE62YPNCqb8/ONWLNjF+Dpw8HtM3TytY?=
 =?iso-8859-1?Q?+OXGWTvV/grRg6lFdaEdDzY0mrDgerKs7t1BtX2+MWDJBHZnj7c+aITxaL?=
 =?iso-8859-1?Q?NJ5f6bgT6Oyap81CUdvuG50VGjYgppNygIHtqX6fhX5jOL77Dz6PqVSulk?=
 =?iso-8859-1?Q?+2Qlrze3tUcecgf4OeOv1vJzxBSbFT63bXeN9euE8fGaR8xvYTU2nHtvPt?=
 =?iso-8859-1?Q?+fzKEXhB6+Zjf1mpGSleyQM040bI8BZ1amScG0D6uBkLl56Ope14mQIIDq?=
 =?iso-8859-1?Q?ubnnhnkTt2PHebEXjDjoKqPMGn+Z8Kjg/OdOo3TkzT3InZUe9RLEHPNSB/?=
 =?iso-8859-1?Q?RigZ/br9i2RS7yMEBKAjuoKi4RTDv1bDP3T6tbOHeF4xzTAPpGNc+6pmnC?=
 =?iso-8859-1?Q?m66dTk588U4UF1vST8nmw5YuS6CtI7Ne6I/067uzrJuW+gPHwV3rAmieFX?=
 =?iso-8859-1?Q?R3TUbapj/TGy5m7YCA6osAYI/BuupFqQMM9OwVYiyN/QV8X2gdiDao6gMt?=
 =?iso-8859-1?Q?i+RPnSSF5TKx+n83fDrYligWUQTv5rVXYPe/ebFDCFF24+OSNC+AX4EpHg?=
 =?iso-8859-1?Q?axduKeh4P6r4Iwgoshx3UirxPjTnS1MXmv3/IrjcOcPQNhr1cPLd4uetEU?=
 =?iso-8859-1?Q?LFjPYUV4/Uw83BJOI8+58ZwP1ga0NeQEqvHnWwAycpylxKgrGi7C1/UTub?=
 =?iso-8859-1?Q?erE/xDGH8JOSY6U04jkh3Kv0zE0GY2e4fYttTEe8Cd4GrriKKW2cenWilo?=
 =?iso-8859-1?Q?3xhAHt9iVevXeiUkI7r+oJ/Vnb8Qj3YxOXzO6/pNWm5tMuqZag/ixGDARj?=
 =?iso-8859-1?Q?59a181oGg83AbsXEkeMDjPVQnbjW4MGjNGMOq/X2E/JdtOvoAr7SKapst9?=
 =?iso-8859-1?Q?oe/Dq1hWtb+pgapwf4XOAUN8XPA2rW6ikYFN5mf64ggmjb5G/ZedJPv2qg?=
 =?iso-8859-1?Q?MYUR95N2KM5Hx4GnA8TA8fawBwfyz0TmhxEmREhWi9Em/3fdhuXd+Y+zQJ?=
 =?iso-8859-1?Q?73VIyMPzJA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 839f700b-311a-4040-79d0-08df39d022ef
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:21.1842
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +cAn6ImQD4jOgyB3qry2MRFNGWR5IzMxWYHE2I6MVeYBOYvggSZDjBh2TLS6nrRzdHGGEyXIAV3vMA+Zc47DOQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727023-1F6C877B-A3B6F04D/0/0
X-purgate-type: clean
X-purgate-size: 9893

From: Rahul Singh <rahul.singh@arm.com>

This patch adds basic framework for vIOMMU.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/dom0less-build.c        |  5 ++
 xen/arch/arm/domain.c                | 31 +++++++++++-
 xen/arch/arm/domain_build.c          |  2 +
 xen/arch/arm/include/asm/viommu.h    | 70 ++++++++++++++++++++++++++++
 xen/drivers/passthrough/Kconfig      |  5 ++
 xen/drivers/passthrough/arm/Makefile |  1 +
 xen/drivers/passthrough/arm/viommu.c | 49 +++++++++++++++++++
 xen/include/public/arch-arm.h        |  6 ++-
 8 files changed, 167 insertions(+), 2 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/viommu.h
 create mode 100644 xen/drivers/passthrough/arm/viommu.c

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 7bbb2eafb6..b55218d920 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -24,6 +24,7 @@
 #include <asm/domain_build.h>
 #include <asm/firmware/sci.h>
 #include <asm/gic.h>
+#include <asm/viommu.h>
 #include <asm/grant_table.h>
 #include <asm/setup.h>
=20
@@ -370,6 +371,10 @@ int __init arch_parse_dom0less_node(struct dt_device_n=
ode *node,
     uint32_t val;
=20
     d_cfg->arch.gic_version =3D gic_domctl_hw_version();
+    /* Set detected vIOMMU domain type only if IOMMU is enabled for the do=
main */
+    d_cfg->arch.viommu_type =3D d_cfg->flags & XEN_DOMCTL_CDF_iommu ?
+                              viommu_get_type() :
+                              XEN_DOMCTL_CONFIG_VIOMMU_NONE;
     d_cfg->flags |=3D XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap;
=20
     if ( domu_dt_sci_parse(node, d_cfg) )
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 34b5a85f9f..950163a927 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -33,6 +33,7 @@
 #include <asm/vgic.h>
 #include <asm/vpci.h>
 #include <asm/vpsci.h>
+#include <asm/viommu.h>
 #include <asm/vtimer.h>
=20
 #include "vuart.h"
@@ -659,6 +660,21 @@ int arch_sanitise_domain_config(const struct xen_domct=
l_createdomain *config)
         return -EINVAL;
     }
=20
+    if ( !(config->flags & XEN_DOMCTL_CDF_iommu) &&
+         config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE )
+    {
+        dprintk(XENLOG_INFO,
+                "vIOMMU requested while iommu not enabled for domain\n");
+        return -EINVAL;
+    }
+
+    if ( config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE )
+    {
+        dprintk(XENLOG_INFO,
+                "vIOMMU type requested not supported by the platform or Xe=
n\n");
+        return -EINVAL;
+    }
+
     return sci_domain_sanitise_config(config);
 }
=20
@@ -758,6 +774,9 @@ int arch_domain_create(struct domain *d,
     if ( (rc =3D sci_domain_init(d, config)) !=3D 0 )
         goto fail;
=20
+    if ( (rc =3D domain_viommu_init(d, config->arch.viommu_type)) !=3D 0 )
+        goto fail;
+
     return 0;
=20
 fail:
@@ -818,7 +837,8 @@ static void resume_ctx_reset(struct resume_info *ctx)
 void arch_domain_destroy(struct domain *d)
 {
     resume_ctx_reset(&d->arch.resume_ctx);
-
+    if ( viommu_relinquish_resources(d) )
+        printk(XENLOG_ERR "%pd: Domain vIOMMU teardown failed\n", d);
     tee_free_domain_ctx(d);
     /* IOMMU page table is shared with P2M, always call
      * iommu_domain_destroy() before p2m_final_teardown().
@@ -1054,6 +1074,7 @@ static int relinquish_memory(struct domain *d, struct=
 page_list_head *list)
  */
 enum {
     PROG_pci =3D 1,
+    PROG_viommu,
     PROG_sci,
     PROG_tee,
     PROG_xen,
@@ -1101,6 +1122,14 @@ int domain_relinquish_resources(struct domain *d)
         if ( ret )
             return ret;
 #endif
+    /*
+     * PCI devices may rely on the vIOMMU, so its resources
+     * should be relinquished only after the PCI devices are released.
+     */
+    PROGRESS(viommu):
+        ret =3D viommu_relinquish_resources(d);
+        if (ret )
+            return ret;
=20
     PROGRESS(sci):
         ret =3D sci_relinquish_resources(d);
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 1ee1f1f6a7..f749f9ae10 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -37,6 +37,7 @@
 #include <asm/arm64/sve.h>
 #include <asm/cpufeature.h>
 #include <asm/domain_build.h>
+#include <asm/viommu.h>
 #include <xen/event.h>
=20
 #include <xen/irq.h>
@@ -1988,6 +1989,7 @@ void __init create_dom0(void)
     dom0_cfg.arch.nr_spis =3D vgic_def_nr_spis();
     dom0_cfg.arch.tee_type =3D tee_get_type();
     dom0_cfg.max_vcpus =3D dom0_max_vcpus();
+    dom0_cfg.arch.viommu_type =3D viommu_get_type();
=20
     if ( iommu_enabled )
         dom0_cfg.flags |=3D XEN_DOMCTL_CDF_iommu;
diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v=
iommu.h
new file mode 100644
index 0000000000..95f82d9cf5
--- /dev/null
+++ b/xen/arch/arm/include/asm/viommu.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
+#ifndef __ARCH_ARM_VIOMMU_H__
+#define __ARCH_ARM_VIOMMU_H__
+
+#include <xen/lib.h>
+#include <xen/types.h>
+#include <public/xen.h>
+
+struct viommu_ops {
+    /*
+     * Called during domain construction if toolstack requests to enable
+     * vIOMMU support.
+     */
+    int (*domain_init)(struct domain *d);
+
+    /*
+     * Called during domain destruction to free resources used by vIOMMU.
+     */
+    int (*relinquish_resources)(struct domain *d);
+};
+
+struct viommu_desc {
+    /* vIOMMU domains init/free operations described above. */
+    const struct viommu_ops *ops;
+
+    /*
+     * ID of vIOMMU. Corresponds to xen_arch_domainconfig.viommu_type.
+     * Should be one of XEN_DOMCTL_CONFIG_VIOMMU_xxx
+     */
+    uint8_t viommu_type;
+};
+
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+
+int domain_viommu_init(struct domain *d, uint8_t viommu_type);
+int viommu_relinquish_resources(struct domain *d);
+uint8_t viommu_get_type(void);
+
+#else
+
+static inline uint8_t viommu_get_type(void)
+{
+    return XEN_DOMCTL_CONFIG_VIOMMU_NONE;
+}
+
+static inline int domain_viommu_init(struct domain *d, uint8_t viommu_type=
)
+{
+    if ( likely(viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE) )
+        return 0;
+
+    return -ENODEV;
+}
+
+static inline int viommu_relinquish_resources(struct domain *d)
+{
+    return 0;
+}
+
+#endif /* CONFIG_ARM_VIRTUAL_IOMMU */
+
+#endif /* __ARCH_ARM_VIOMMU_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/drivers/passthrough/Kconfig b/xen/drivers/passthrough/Kcon=
fig
index b413c33a4c..a92cfbea98 100644
--- a/xen/drivers/passthrough/Kconfig
+++ b/xen/drivers/passthrough/Kconfig
@@ -35,6 +35,11 @@ config IPMMU_VMSA
 	  (H3 ES3.0, M3-W+, etc) or Gen4 SoCs which IPMMU hardware supports stage=
 2
 	  translation table format and is able to use CPU's P2M table as is.
=20
+config ARM_VIRTUAL_IOMMU
+	bool "Virtual IOMMU Support (UNSUPPORTED)" if UNSUPPORTED
+	help
+	  Support virtual IOMMU infrastructure to implement vIOMMU.
+
 endif
=20
 config AMD_IOMMU
diff --git a/xen/drivers/passthrough/arm/Makefile b/xen/drivers/passthrough=
/arm/Makefile
index c5fb3b58a5..c3783188e3 100644
--- a/xen/drivers/passthrough/arm/Makefile
+++ b/xen/drivers/passthrough/arm/Makefile
@@ -2,3 +2,4 @@ obj-y +=3D iommu.o iommu_helpers.o iommu_fwspec.o
 obj-$(CONFIG_ARM_SMMU) +=3D smmu.o
 obj-$(CONFIG_IPMMU_VMSA) +=3D ipmmu-vmsa.o
 obj-$(CONFIG_ARM_SMMU_V3) +=3D smmu-v3.o
+obj-$(CONFIG_ARM_VIRTUAL_IOMMU) +=3D viommu.o
diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough=
/arm/viommu.c
new file mode 100644
index 0000000000..0c0efd668e
--- /dev/null
+++ b/xen/drivers/passthrough/arm/viommu.c
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
+
+#include <xen/errno.h>
+#include <xen/init.h>
+#include <xen/types.h>
+
+#include <asm/viommu.h>
+
+/* Struct to hold the vIOMMU ops and vIOMMU type */
+static const struct viommu_desc __ro_after_init *cur_viommu;
+
+int domain_viommu_init(struct domain *d, uint8_t viommu_type)
+{
+    if ( viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE )
+        return 0;
+
+    if ( !cur_viommu )
+        return -ENODEV;
+
+    if ( cur_viommu->viommu_type !=3D viommu_type )
+        return -EINVAL;
+
+    return cur_viommu->ops->domain_init(d);
+}
+
+int viommu_relinquish_resources(struct domain *d)
+{
+    if ( !cur_viommu )
+        return 0;
+
+    return cur_viommu->ops->relinquish_resources(d);
+}
+
+uint8_t viommu_get_type(void)
+{
+    if ( !cur_viommu )
+        return XEN_DOMCTL_CONFIG_VIOMMU_NONE;
+
+    return cur_viommu->viommu_type;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index 5d15f572c7..a7d456be08 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -334,6 +334,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
 #define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_PMSA    1
 #define XEN_DOMCTL_CONFIG_ARM_V8R_EL1_MSA_VMSA    2
=20
+#define XEN_DOMCTL_CONFIG_VIOMMU_NONE   0
+
 struct xen_arch_domainconfig {
     /* IN */
     uint8_t gic_version;
@@ -347,7 +349,9 @@ struct xen_arch_domainconfig {
     uint8_t arm_sci_type;
     /* IN */
     uint8_t v8r_el1_msa;
-    uint16_t pad;
+    /* IN */
+    uint8_t viommu_type;
+    uint8_t pad;
 };
 #endif /* __XEN__ || __XEN_TOOLS__ */
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470343.1679102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL6-0000KC-0N; Tue, 03 Nov 2026 17:30:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470343.1679102; Tue, 03 Nov 2026 17:30:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL5-0000K1-Sp; Tue, 03 Nov 2026 17:30:27 +0000
Received: by outflank-mailman (input) for mailman id 1470343;
 Tue, 03 Nov 2026 17:30:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL3-0008UA-Eq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL2-004K2A-Rf
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:24 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a0e-2eae-0a2a0a5409dd-0a2a4508c84e-30
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:24 +0100
Received: from [52.101.83.118]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a30-f659-0a2a45080019-346553761080-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:24 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:22 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=ClI/6Z8ovewYEtWg+6pFNZD96Tz4hTlcTPJH7q0YVLrUpuT0yyMSXUjC4dvONzb/DqffkX2S/Irf2KxQ6SR/rfCu1hB2rJyrW9z+VUUiOnT6RHobuJwGlaaITlJsRD0i2kSCOZQ4g1kekFfy5rYaq1ifTCC5NF06sWKYrqqD7vkUAYL3LQA5XfDAdMImnVfNw4vPxwwCr+SFrboRC+Yw7kkaSabexnYtY8eFK2fRFWJXvDYseicKX+ApiqugTaNPtcMBJSc/tYD8x73OJVwKjeFQEaV8u53q7q89A88lSIuZD4eR1kLBNhS0Qj+E9x88VfpPj6spymgT1gk5k3eC8A==
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=eOJ3/wELUcyjcC7L4+IoEoQDpmqs37v5tT/hcViHrp4=;
 b=DxeUbTliDJBKV/9r/wvldHrmKMLzKC5Omd8HYeDncLW/Zw4c37BtznOB2eXcI31kOBlFYnWdw7f5EIbg5SySHNpU3AlORboCEWaVDMdtX5+EnfYh32MUZ10jmDEFeqccat1m8hf6J/MwT1rfDP+9+q/QbiIWdkttHLeMKeUUNzVNSHQa3mAPSs/IXB9Ra9rpm3AH+2sg0cg8m/0+Ou99SOHO2IuZ4BoYzz3tx4BD1HqgUGyb1IwalsT42hDTNnLvqWdfptLOw6lNvN3bZS4TLIQuj0iIXNvs/qeF5Ic2EOrFZWz8PA7cnin5IwcHx/BcyK9CcTvTqa7uTwlGdH76Og==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eOJ3/wELUcyjcC7L4+IoEoQDpmqs37v5tT/hcViHrp4=;
 b=OykhtQOhpP3MBYXTU1wYap1j6zpf+x9HDa7pavca+vVRXGkU3PD9TfD8Xf+f/xUVrPsVuWT9d+KwLG9pHuueLQJ9Fjby3cerAOQzXZ4RJ8bgWnWdVPskBMJG/dhUZAh/ezBhXdyPnzVI82BS7tvsSTL9wG0wsN5JkI2dmOnN/5WX7QpKDuFHD7wlkfMHenm86sX/KmF7n/24cS74KUcEuhTicXFW1szyive07WlG+WmkZ7BBNa2rXEbxxWLeyhnkHYMcKxsXN70iinlDa9/mFtfhID5KwAOqYn7n27ThY3U081+93nXsnJ5ex9V1fzXeivtIz84y6gKSUvrfZlIz8Q==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Jan Beulich <jbeulich@suse.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 05/22] xen/arm: vsmmuv3: Add dummy support for virtual
 SMMUv3 for guests
Thread-Topic: [PATCH v5 05/22] xen/arm: vsmmuv3: Add dummy support for virtual
 SMMUv3 for guests
Thread-Index: AQHda7kBGJdotzNYOk6zDENbaUHfnA==
Date: Tue, 3 Nov 2026 17:30:22 +0000
Message-ID:
 <a6d7f93fc74bed5c2b0a6057b88542660fd30128.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: b0e6f773-653d-4210-3dbf-08df39d023d2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|260925021911599003|260925022911599003|260925021311599003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 yus6nFzrg/jIMX5X4LbaGR9EAS6GzJ0EywB1fh+TK5LF+yYf1ImUMisY/L/+D16x3Q+U3xMsbFfBPes8NI1Rt7htdB0T9cSSv0XLYTcU2koeZ/7Ki+bX3r//NpqdyTTUaR/XJKKBsZyuVD2sl9A4+OUbgr6gxzgFxrqB5qFtIZsKNetUYW7F2sUZjtu8jNs6uPiyLcNNFAm7xNkSwRmpWdN0YHPs/ZCuOHvw5wXWJLazdq/ar8rPsx2ASIKRKs2ri1oskJFbNy/lHBYxRJhBk5eHNFcMa5sy0cNTaWQbWAMrd4KUSx/z6ZI5ATWDqmOa+bcN5uNDlc70wUm6Y6n00H3gK8NwQpFf5KjqDJ9jysNdLkTtZ7nHtfwXuaktKwOy0u18OgsJSdRUmuEFm17VRXJF0MQ20QfrPgtUzGOtkYUElBkx6qg9lp+Z+0UlnJ77jffnz6EKpOAa7Oxse07tnNPzS716ZMLCecgJMcnXJJ1mFZWgRLW3cpNqdUZRBNTfva8PtOqW9PqSQCjCUdWS01VSbYUSb2bJKAnk8H4FYFZRxWsw6QJBs/NV6L02GQmYH7OKYR5NKLapWgnmK7q0p1zWf+iy+vsYaecEm+7y2vOxlrJ1sLeIB4MA7xNZxDJbmIQXrssMm9sCEMptdiH2sgKVybdrzzEY6kzSyVe/z/qlCbHAi1HRiwTQ0slO5V4kHD7F/TRYxodFp1H5QndxrO3QW+vj3K2uACc7PHZbQSs=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(260925021911599003)(260925022911599003)(260925021311599003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?c0Q3N0hDSm5EVHI3dWp0MDU5enJZenhjWmo2dGdGOHMwMXEvdVlpTUxFYXlu?=
 =?utf-8?B?T003MUFLYjQ3WXRLTnJuOVRBSUpKL1QwOVVpeEhaUjVPZGVrQTRkNk0vTVY3?=
 =?utf-8?B?M2hxRDEweWJFd3FWQ0FDNWhhSzZIVWZnZVlrR1ltM1k0dVViZGRYWHJQR2t4?=
 =?utf-8?B?V2Z2bmNTb1gxeHkva0M4ejd5VXMzTDZuS3M5NWlKeDAxeEx4VHVFZkczVTEv?=
 =?utf-8?B?MGx6WWo3YnNWL2NUSlQyaG5lSzRVVk5WbGpvQVFYZldHOUkzajZ0N1JHcGpC?=
 =?utf-8?B?UFg1RlJEZzJ3NWhPaFdWN0FlNW1MMnZleWs0ZHZiaXVMVjRjR3I4UmhMMzJQ?=
 =?utf-8?B?enNGOEF1TEMxL25jTzI1bUZGOWQyZThtSmxqOGRFWCtFSEZMWUxUUG5RdHht?=
 =?utf-8?B?cnhyTUNhWTJzTEtmTS95alVZVmppVERmd2UrQXlIUnlYZFI2dVdNMlV2WTJC?=
 =?utf-8?B?WGZ0MmRKd1Z6SHZ3ZXNYYW5GeFZrT0FGa1hzbDhMcExRa3FsWWZIVExJeFU5?=
 =?utf-8?B?OTNmaE9VRk92SWNmN25zR2h2WUNJVmlTc3lWc2Vxd1RkekNwMFRmZjRLUUtu?=
 =?utf-8?B?VkM1TVNkc0RBNWVsWERWSlJHNGhaTlNOVjBmNlZqY3RCMWVBTWFraXE5eE5z?=
 =?utf-8?B?K2RJeHI2TlNjNUZjSWlCd0xpSGsxamJxdEN4QWcrQlhVU05ZbE5IRmIvcjUw?=
 =?utf-8?B?OUpWdXRlSHFTaUJwRi81SDFiSHR4YjZtdzdIR1d0SXB4ZUMvY1VkcG8reXVi?=
 =?utf-8?B?NU92WGJJOVNsR1NmVTlKSmRKeUt3UmE0cTVjTzk5ZGVoM01NNjZiMWRoYWw0?=
 =?utf-8?B?MEZEaVNHdEpnZ0lWTkZMYnB1Rko4QXEwT1pMOTlZM3o3dFNpRlQvTHIyRWZq?=
 =?utf-8?B?a1NXY0tTMUVHWU5TSXFyYVBwZzZjSGdqWmFkS2gwSWFxL3RXV3VSaXVML25W?=
 =?utf-8?B?SXhGY3hUMmM1L3NycVBiYlN4aHhqb0hkWFBWYUhBSjhrQkxEU3U0TUNOZTIw?=
 =?utf-8?B?RXAzTmJSWkZmUnA4SVdwNHVydWJzT3BxV0ZXMWxkeWVLbUFMMm5yZFFBZEF4?=
 =?utf-8?B?OEdFRElLbExkUy9MUVoxN01lN3ZKWEZoL094RzVsZW56OU5hdVZuelNwOXRp?=
 =?utf-8?B?d2J0VkFxVml2ZXQ2SmdxeWhHaGJuUFdGb2dLczFhSW9neXVtREc2cmlqbHpZ?=
 =?utf-8?B?eWRWNkRwaHdmS0RIWGlEUDBPMUl6Z0pGTmtnb1Q3ektGUDdVVk1tUEpIcDU0?=
 =?utf-8?B?VGxEdTluY0Z5NTNmSFdJYVZNVkNMbDJsTHpKdlo3QWRtbThsdGRvVXRwMmRN?=
 =?utf-8?B?cVZkYzZ2akZaOXVVcGZhbk80MjUwaUkwdlJOUE1kMkRXM3NuUUdVUXFlckta?=
 =?utf-8?B?WnZPZE0vVnVlODM5VHZVUENQWGtMQ3c0TWoxS3lPNWJkUHFJRzJ3SjJWTHVX?=
 =?utf-8?B?QytkRnorcjBpVXZZYk9Sc2cxSml4SUFRay9ZVFIzM3ZIWVRZN0MzOGlxYkVn?=
 =?utf-8?B?MFplUjhrUjdJU1EvSHRWVGxoSDNQZVRjS0lrRUFCSENiZFBYenpKSHhqNXpN?=
 =?utf-8?B?NGRqays1T1QzNm5mWUFZelgxYUN1SVhzQit3eDZkNnEzNWt3YmpWcDhBdFlB?=
 =?utf-8?B?N05yOENOaUtHRVdpa0tFVGtuRVVvemhzempyUHZEUTVEekZpK3ZzaHk5WDVK?=
 =?utf-8?B?eDFQTEJNNksyeHRwWU5qeFpWSFNuNm5NNUdYQk5xWmVpbWphcUVkNmh5U0Vk?=
 =?utf-8?B?UHNRckxxcUNvd0xjOFpaMzBHdng3b3FnT25pNW5ITDNTVWVpTmdJQ2dnbm1S?=
 =?utf-8?B?MEVtc2E0T2ltbWZOWEwvNUFMdnFUcURjNHJyQkdkbHBVbTNTbEFUM3RSSWwv?=
 =?utf-8?B?dHRLc3d4bGp2czl5a3lOYXhuT1d3MFIycDgrcWtEMmw5UWpHbFZrVStJNWxL?=
 =?utf-8?B?eTlvZzNUMWtTOFE5ZmoySW5ZbjhPck1TRWIyT1V4MVJmZ1VXTENMRThrV29I?=
 =?utf-8?B?eVNPaWxrVlJCdjZjcWY5VHdDVm9XV0h0MTJZRW9WSElLT2d4UEVYUi93bFVz?=
 =?utf-8?B?Z2VwaEorL2RkazJwQWRxb1R2bElqUlFCK2IrUjJETmR3Y0lHcVBiM2xtaEtO?=
 =?utf-8?B?Y1I0N0RPSkVyYzRiUW13YXFOL3pNL2ZkLy9rWEJHUjBIZEp6VHZIUWZOQ3Yw?=
 =?utf-8?B?eUtabVJRc09TQ1RnRGZBeW4relU3NFo1aDZrRXkwSWhtekVCeFAvQ3FXZHlE?=
 =?utf-8?B?bHM2NzlML2E1L2k3dUFQaWtyZ09jUHlyQnVnazlISjlnYXJFUUtDZ0pZeU5j?=
 =?utf-8?B?UCtKZmFJc2RiU2FTYlpNK3Z2eU81Ti9tU2dmczlaYnFLemhhMldKUT09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <130415816C7C2947B186D047DFEDCB59@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b0e6f773-653d-4210-3dbf-08df39d023d2
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:22.6833
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: /N9FlM9nC2JDASeCorVh9tx5kgpfoVUqlFENOahNw1kMSZxdefOIWegZG+R3lOKPsGfzo4/GbvdIOK/tcCptWA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-c1860d/1793727024-CC37587B-7BF5D478/0/0
X-purgate-type: clean
X-purgate-size: 20466

RnJvbTogUmFodWwgU2luZ2ggPHJhaHVsLnNpbmdoQGFybS5jb20+DQoNCmRvbWFpbl92aW9tbXVf
aW5pdCgpIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBkb21haW4gY3JlYXRpb24gYW5kIHdpbGwgYWRk
DQp0aGUgZHVtbXkgdHJhcCBoYW5kbGVyIGZvciB2aXJ0dWFsIElPTU1VcyBmb3IgZ3Vlc3RzLg0K
DQpBIGhvc3QgSU9NTVUgbGlzdCB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBob3N0IElPTU1VIGRldmlj
ZXMgYXJlIHByb2JlZA0KYW5kIHRoaXMgbGlzdCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBJ
T01NVSBkZXZpY2UgdHJlZSBub2RlIGZvcg0KZG9tMC4gRm9yIGRvbTAsIDEtMSBtYXBwaW5nIHdp
bGwgYmUgZXN0YWJsaXNoZWQgYmV0d2VlbiB2SU9NTVUgaW4gZG9tMA0KYW5kwqBwaHlzaWNhbCBJ
T01NVS4NCg0KRm9yIGRvbVVzLCB0aGUgMS1OIG1hcHBpbmcgd2lsbCBiZSBlc3RhYmxpc2hlZCBi
ZXR3ZWVuIGRvbVUgYW5kIHBoeXNpY2FsDQpJT01NVXMuIEEgbmV3IGFyZWEgaGFzIGJlZW4gcmVz
ZXJ2ZWQgaW4gdGhlIGFybSBndWVzdCBwaHlzaWNhbCBtYXAgYXQNCndoaWNoIHRoZSBlbXVsYXRl
ZCB2SU9NTVUgbm9kZSBpcyBjcmVhdGVkIGluIHRoZSBkZXZpY2UgdHJlZS4NCg0KQWxzbyBzZXQg
dGhlIHZJT01NVSB0eXBlIHRvIHZTTU1VdjMgdG8gZW5hYmxlIHZJT01NVSBmcmFtZXdvcmsgdG8g
Y2FsbA0KdlNNTVV2MyBkb21haW4gY3JlYXRpb24vZGVzdHJveSBmdW5jdGlvbnMuDQoNClNpZ25l
ZC1vZmYtYnk6IFJhaHVsIFNpbmdoIDxyYWh1bC5zaW5naEBhcm0uY29tPg0KU2lnbmVkLW9mZi1i
eTogTWlsYW4gRGpva2ljIDxtaWxhbl9kam9raWNAZXBhbS5jb20+DQotLS0NCiB4ZW4vYXJjaC9h
cm0vZG9tYWluLmMgICAgICAgICAgICAgICAgICB8ICAgNiArLQ0KIHhlbi9hcmNoL2FybS9pbmNs
dWRlL2FzbS9kb21haW4uaCAgICAgIHwgICA1ICsrDQogeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNt
L3Zpb21tdS5oICAgICAgfCAgMzYgKysrKysrKysNCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9L
Y29uZmlnICAgICAgICB8ICAgOCArKw0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9NYWtl
ZmlsZSAgIHwgICAxICsNCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS12My5jICB8
ICAgNyArKw0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92aW9tbXUuYyAgIHwgIDg0ICsr
KysrKysrKysrKysrKystDQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMg
fCAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo
L2FybS92c21tdS12My5oIHwgIDIwICsrKysrDQogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJt
LmggICAgICAgICAgfCAgIDUgKysNCiAxMCBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygr
KSwgMiBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2RyaXZlcnMvcGFzc3Ro
cm91Z2gvYXJtL3ZzbW11LXYzLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL3ZzbW11LXYzLmgNCg0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21h
aW4uYyBiL3hlbi9hcmNoL2FybS9kb21haW4uYw0KaW5kZXggOTUwMTYzYTkyNy4uOTRkZmQyZjI5
MSAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9kb21haW4uYw0KKysrIGIveGVuL2FyY2gvYXJt
L2RvbWFpbi5jDQpAQCAtNjY4LDcgKzY2OCw4IEBAIGludCBhcmNoX3Nhbml0aXNlX2RvbWFpbl9j
b25maWcoY29uc3Qgc3RydWN0IHhlbl9kb21jdGxfY3JlYXRlZG9tYWluICpjb25maWcpDQogICAg
ICAgICByZXR1cm4gLUVJTlZBTDsNCiAgICAgfQ0KIA0KLSAgICBpZiAoIGNvbmZpZy0+YXJjaC52
aW9tbXVfdHlwZSAhPSBYRU5fRE9NQ1RMX0NPTkZJR19WSU9NTVVfTk9ORSApDQorICAgIGlmICgg
Y29uZmlnLT5hcmNoLnZpb21tdV90eXBlICE9IFhFTl9ET01DVExfQ09ORklHX1ZJT01NVV9OT05F
ICYmDQorICAgICAgICAgY29uZmlnLT5hcmNoLnZpb21tdV90eXBlICE9IHZpb21tdV9nZXRfdHlw
ZSgpICkNCiAgICAgew0KICAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywNCiAgICAgICAgICAg
ICAgICAgInZJT01NVSB0eXBlIHJlcXVlc3RlZCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9y
bSBvciBYZW5cbiIpOw0KQEAgLTcyNCw2ICs3MjUsOSBAQCBpbnQgYXJjaF9kb21haW5fY3JlYXRl
KHN0cnVjdCBkb21haW4gKmQsDQogDQogICAgIGNvdW50ICs9IGRvbWFpbl92cGNpX2dldF9udW1f
bW1pb19oYW5kbGVycyhkKTsNCiANCisgICAgaWYgKCBjb25maWctPmFyY2gudmlvbW11X3R5cGUg
IT0gWEVOX0RPTUNUTF9DT05GSUdfVklPTU1VX05PTkUgKQ0KKyAgICAgICAgY291bnQgKz0gZG9t
YWluX3Zpb21tdV9nZXRfbnVtX21taW9faGFuZGxlcnMoZCk7DQorDQogICAgIGlmICggKHJjID0g
ZG9tYWluX2lvX2luaXQoZCwgY291bnQgKyBNQVhfSU9fSEFORExFUikpICE9IDAgKQ0KICAgICAg
ICAgZ290byBmYWlsOw0KIA0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9k
b21haW4uaCBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9kb21haW4uaA0KaW5kZXggYzNkMmM0
OTgxZi4uNzBhZjBiZjhiNyAxMDA2NDQNCi0tLSBhL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9k
b21haW4uaA0KKysrIGIveGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2RvbWFpbi5oDQpAQCAtMTAy
LDYgKzEwMiwxMSBAQCBzdHJ1Y3QgYXJjaF9kb21haW4NCiAjaWZkZWYgQ09ORklHX01QVQ0KICAg
ICB1aW50OF90IHY4cl9lbDFfbXNhOw0KICNlbmRpZg0KKw0KKyNpZmRlZiBDT05GSUdfQVJNX1ZJ
UlRVQUxfSU9NTVUNCisgICAgc3RydWN0IGxpc3RfaGVhZCB2aW9tbXVfbGlzdDsgICAgIC8qIExp
c3Qgb2YgdmlydHVhbCBJT01NVXMgKi8NCisjZW5kaWYNCisNCiB9ICBfX2NhY2hlbGluZV9hbGln
bmVkOw0KIA0KIHN0cnVjdCBhcmNoX3ZjcHUNCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vdmlvbW11LmggYi94ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vdmlvbW11LmgNCmlu
ZGV4IDk1ZjgyZDljZjUuLjI4NzU5NTA2OGIgMTAwNjQ0DQotLS0gYS94ZW4vYXJjaC9hcm0vaW5j
bHVkZS9hc20vdmlvbW11LmgNCisrKyBiL3hlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS92aW9tbXUu
aA0KQEAgLTMsOSArMywyMyBAQA0KICNkZWZpbmUgX19BUkNIX0FSTV9WSU9NTVVfSF9fDQogDQog
I2luY2x1ZGUgPHhlbi9saWIuaD4NCisjaW5jbHVkZSA8eGVuL2xpc3QuaD4NCiAjaW5jbHVkZSA8
eGVuL3R5cGVzLmg+DQogI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4NCiANCisvKiBkYXRhIHN0cnVj
dHVyZSBmb3IgZWFjaCBoYXJkd2FyZSBJT01NVSAqLw0KK3N0cnVjdCBob3N0X2lvbW11IHsNCisg
ICAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsNCisgICAgLyogSU9NTVUgRFQgbm9kZSB1c2VkIHRv
IGVzdGFibGlzaCB2aXJ0dWFsIHRvIHBoeXNpY2FsIElPTU1VL1NJRCBtYXBwaW5nICovDQorICAg
IGNvbnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqZHRfbm9kZTsNCisgICAgLyogVXNlZCBmb3Ig
ZG9tMCB2SU9NTVUgaW5zdGFudGlhdGlvbiAoMS0xIE1NSU8gcmVnaW9ucyBtYXBwaW5ncykgKi8N
CisgICAgcGFkZHJfdCBhZGRyOw0KKyAgICAvKiBVc2VkIGZvciBkb20wIHZJT01NVSBpbnN0YW50
aWF0aW9uICgxLTEgTU1JTyByZWdpb25zIG1hcHBpbmdzKSAqLw0KKyAgICBwYWRkcl90IHNpemU7
DQorICAgIC8qIFVzZWQgZm9yIGRvbTAgRVZUUSBhbmQgR0VSUk9SIGludGVycnVwdHMgKDEtMSBJ
UlEgbWFwcGluZykgKi8NCisgICAgdWludDMyX3QgaXJxOw0KK307DQorDQogc3RydWN0IHZpb21t
dV9vcHMgew0KICAgICAvKg0KICAgICAgKiBDYWxsZWQgZHVyaW5nIGRvbWFpbiBjb25zdHJ1Y3Rp
b24gaWYgdG9vbHN0YWNrIHJlcXVlc3RzIHRvIGVuYWJsZQ0KQEAgLTMyLDkgKzQ2LDE1IEBAIHN0
cnVjdCB2aW9tbXVfZGVzYyB7DQogDQogI2lmZGVmIENPTkZJR19BUk1fVklSVFVBTF9JT01NVQ0K
IA0KK2V4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGhvc3RfaW9tbXVfbGlzdDsNCisNCiBpbnQgZG9t
YWluX3Zpb21tdV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHVpbnQ4X3QgdmlvbW11X3R5cGUpOw0K
IGludCB2aW9tbXVfcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCk7DQogdWlu
dDhfdCB2aW9tbXVfZ2V0X3R5cGUodm9pZCk7DQordm9pZCBhZGRfdG9faG9zdF9pb21tdV9saXN0
KHBhZGRyX3QgYWRkciwgcGFkZHJfdCBzaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpOw0KK3ZvaWQgc2V0X2N1cl92aW9t
bXUoY29uc3Qgc3RydWN0IHZpb21tdV9kZXNjICpkZXNjKTsNCit1bnNpZ25lZCBpbnQgZG9tYWlu
X3Zpb21tdV9nZXRfbnVtX21taW9faGFuZGxlcnMoc3RydWN0IGRvbWFpbiAqZCk7DQogDQogI2Vs
c2UNCiANCkBAIC01Niw2ICs3NiwyMiBAQCBzdGF0aWMgaW5saW5lIGludCB2aW9tbXVfcmVsaW5x
dWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkNCiAgICAgcmV0dXJuIDA7DQogfQ0KIA0K
K3N0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgYWRkX3RvX2hvc3RfaW9tbXVfbGlzdChwYWRkcl90
IGFkZHIsIHBhZGRyX3Qgc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGUpDQorew0KKyAgICByZXR1
cm47DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRvbWFpbl92aW9tbXVfZ2V0
X251bV9tbWlvX2hhbmRsZXJzKHN0cnVjdCBkb21haW4gKmQpDQorew0KKyAgICByZXR1cm4gMDsN
Cit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIF9faW5pdCBzZXRfY3VyX3Zpb21tdShjb25zdCBz
dHJ1Y3QgdmlvbW11X2Rlc2MgKmRlc2MpDQorew0KKyAgICByZXR1cm47DQorfQ0KKw0KICNlbmRp
ZiAvKiBDT05GSUdfQVJNX1ZJUlRVQUxfSU9NTVUgKi8NCiANCiAjZW5kaWYgLyogX19BUkNIX0FS
TV9WSU9NTVVfSF9fICovDQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvS2Nv
bmZpZyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL0tjb25maWcNCmluZGV4IGE5MmNmYmVhOTgu
LjQwZDA3MjgyMmYgMTAwNjQ0DQotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9LY29uZmln
DQorKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9LY29uZmlnDQpAQCAtNDAsNiArNDAsMTQg
QEAgY29uZmlnIEFSTV9WSVJUVUFMX0lPTU1VDQogCWhlbHANCiAJICBTdXBwb3J0IHZpcnR1YWwg
SU9NTVUgaW5mcmFzdHJ1Y3R1cmUgdG8gaW1wbGVtZW50IHZJT01NVS4NCiANCitjb25maWcgVklS
VFVBTF9BUk1fU01NVV9WMw0KKwlib29sICJBUk0gTHRkLiBWaXJ0dWFsIFNNTVV2MyBTdXBwb3J0
IChVTlNVUFBPUlRFRCkiDQorCWRlcGVuZHMgb24gQVJNX1NNTVVfVjMgJiYgQVJNX1ZJUlRVQUxf
SU9NTVUNCisJaGVscA0KKwkgU3VwcG9ydCBmb3IgaW1wbGVtZW50YXRpb25zIG9mIHRoZSB2aXJ0
dWFsIEFSTSBTeXN0ZW0gTU1VIGFyY2hpdGVjdHVyZQ0KKwkgdmVyc2lvbiAzLiBWaXJ0dWFsIFNN
TVV2MyBpcyB1bnN1cHBvcnRlZCBmZWF0dXJlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQNCisJIGlu
IHByb2R1Y3Rpb24uDQorDQogZW5kaWYNCiANCiBjb25maWcgQU1EX0lPTU1VDQpkaWZmIC0tZ2l0
IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvcGFz
c3Rocm91Z2gvYXJtL01ha2VmaWxlDQppbmRleCBjMzc4MzE4OGUzLi5jOGYwYTVmODAyIDEwMDY0
NA0KLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL01ha2VmaWxlDQorKysgYi94ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vTWFrZWZpbGUNCkBAIC0zLDMgKzMsNCBAQCBvYmotJChD
T05GSUdfQVJNX1NNTVUpICs9IHNtbXUubw0KIG9iai0kKENPTkZJR19JUE1NVV9WTVNBKSArPSBp
cG1tdS12bXNhLm8NCiBvYmotJChDT05GSUdfQVJNX1NNTVVfVjMpICs9IHNtbXUtdjMubw0KIG9i
ai0kKENPTkZJR19BUk1fVklSVFVBTF9JT01NVSkgKz0gdmlvbW11Lm8NCitvYmotJChDT05GSUdf
VklSVFVBTF9BUk1fU01NVV9WMykgKz0gdnNtbXUtdjMubw0KZGlmZiAtLWdpdCBhL3hlbi9kcml2
ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LXYzLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h
cm0vc21tdS12My5jDQppbmRleCAwYjI2YmIyN2EyLi5iODVhZDczMGRiIDEwMDY0NA0KLS0tIGEv
eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KKysrIGIveGVuL2RyaXZlcnMv
cGFzc3Rocm91Z2gvYXJtL3NtbXUtdjMuYw0KQEAgLTkzLDYgKzkzLDcgQEANCiAjaW5jbHVkZSA8
YXNtL3BsYXRmb3JtLmg+DQogDQogI2luY2x1ZGUgInNtbXUtdjMuaCINCisjaW5jbHVkZSAidnNt
bXUtdjMuaCINCiANCiAjZGVmaW5lIEFSTV9TTU1VX1ZUQ1JfU0hfSVMJCTMNCiAjZGVmaW5lIEFS
TV9TTU1VX1ZUQ1JfUkdOX1dCV0EJCTENCkBAIC0yODg3LDYgKzI4ODgsOSBAQCBzdGF0aWMgaW50
IF9faW5pdCBhcm1fc21tdV9kZXZpY2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl
dikNCiAJbGlzdF9hZGQoJnNtbXUtPmRldmljZXMsICZhcm1fc21tdV9kZXZpY2VzKTsNCiAJc3Bp
bl91bmxvY2soJmFybV9zbW11X2RldmljZXNfbG9jayk7DQogDQorCS8qIEFkZCB0byBob3N0IElP
TU1VIGxpc3QgdG8gaW5pdGlhbGl6ZSB2SU9NTVUgZm9yIGRvbTAgKi8NCisJYWRkX3RvX2hvc3Rf
aW9tbXVfbGlzdChpb2FkZHIsIGlvc2l6ZSwgZGV2X3RvX2R0KHBkZXYpKTsNCisNCiAJcmV0dXJu
IDA7DQogDQogDQpAQCAtMzI0MCw2ICszMjQ0LDkgQEAgc3RhdGljIF9faW5pdCBpbnQgYXJtX3Nt
bXVfZHRfaW5pdChzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKmRldiwNCiANCiAJcGxhdGZvcm1fZmVh
dHVyZXMgJj0gc21tdS0+ZmVhdHVyZXM7DQogDQorCS8qIFNldCB2SU9NTVUgdHlwZSB0byBTTU1V
djMgKi8NCisJdnNtbXV2M19zZXRfdHlwZSgpOw0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQpkaWZm
IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Zpb21tdS5jIGIveGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvYXJtL3Zpb21tdS5jDQppbmRleCAwYzBlZmQ2NjhlLi4yYjE2ZjExMDE3
IDEwMDY0NA0KLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Zpb21tdS5jDQorKysg
Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdmlvbW11LmMNCkBAIC0yLDEyICsyLDU1IEBA
DQogDQogI2luY2x1ZGUgPHhlbi9lcnJuby5oPg0KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPg0KKyNp
bmNsdWRlIDx4ZW4vaXJxLmg+DQogI2luY2x1ZGUgPHhlbi90eXBlcy5oPg0KKyNpbmNsdWRlIDx4
ZW4vc2NoZWQuaD4NCisjaW5jbHVkZSA8eGVuL2RvbWFpbi1sYXlvdXQuaD4NCiANCiAjaW5jbHVk
ZSA8YXNtL3Zpb21tdS5oPg0KIA0KKy8qIExpc3Qgb2YgYWxsIGhvc3QgSU9NTVVzICovDQorTElT
VF9IRUFEKGhvc3RfaW9tbXVfbGlzdCk7DQorDQogLyogU3RydWN0IHRvIGhvbGQgdGhlIHZJT01N
VSBvcHMgYW5kIHZJT01NVSB0eXBlICovDQogc3RhdGljIGNvbnN0IHN0cnVjdCB2aW9tbXVfZGVz
YyBfX3JvX2FmdGVyX2luaXQgKmN1cl92aW9tbXU7DQorc3RhdGljIGJvb2wgaG9zdF9pb21tdV9s
aXN0X2luY29tcGxldGU7DQorDQorLyogQ29tbW9uIGZ1bmN0aW9uIGZvciBhZGRpbmcgdG8gaG9z
dF9pb21tdV9saXN0ICovDQordm9pZCBfX2luaXQgYWRkX3RvX2hvc3RfaW9tbXVfbGlzdChwYWRk
cl90IGFkZHIsIHBhZGRyX3Qgc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQ0KK3sNCisgICAgc3RydWN0IGhvc3RfaW9t
bXUgKmlvbW11X2RhdGE7DQorICAgIGludCBpcnE7DQorDQorICAgIGlvbW11X2RhdGEgPSB4emFs
bG9jKHN0cnVjdCBob3N0X2lvbW11KTsNCisgICAgaWYgKCAhaW9tbXVfZGF0YSApDQorICAgIHsN
CisgICAgICAgIGhvc3RfaW9tbXVfbGlzdF9pbmNvbXBsZXRlID0gdHJ1ZTsNCisgICAgICAgIHBy
aW50ayhYRU5MT0dfV0FSTklORw0KKyAgICAgICAgICAgICAgICJ2SU9NTVU6IENhbm5vdCBhbGxv
Y2F0ZSBtZW1vcnkgZm9yIGhvc3QgSU9NTVUgZGF0YVxuIik7DQorICAgICAgICByZXR1cm47DQor
ICAgIH0NCisNCisgICAgaW9tbXVfZGF0YS0+YWRkciA9IGFkZHI7DQorICAgIGlvbW11X2RhdGEt
PnNpemUgPSBzaXplOw0KKyAgICBpb21tdV9kYXRhLT5kdF9ub2RlID0gbm9kZTsNCisgICAgaXJx
ID0gcGxhdGZvcm1fZ2V0X2lycShub2RlLCAwKTsNCisgICAgaWYgKCBpcnEgPCAwICkNCisgICAg
ew0KKyAgICAgICAgaG9zdF9pb21tdV9saXN0X2luY29tcGxldGUgPSB0cnVlOw0KKyAgICAgICAg
cHJpbnRrKFhFTkxPR19XQVJOSU5HDQorICAgICAgICAgICAgICAgInZJT01NVTogZGlzYWJsaW5n
IHN1cHBvcnQgYmVjYXVzZSBJT01NVSBAMHglIlBSSXg2NA0KKyAgICAgICAgICAgICAgICIgaGFz
IG5vIHVzYWJsZSBJUlEgKCVkKVxuIiwgYWRkciwgaXJxKTsNCisgICAgICAgIHhmcmVlKGlvbW11
X2RhdGEpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlvbW11X2RhdGEtPmlycSA9
IGlycTsNCisNCisgICAgcHJpbnRrKCJ2SU9NTVU6IEZvdW5kIElPTU1VIEAweCUiUFJJeDY0Ilxu
IiwgYWRkcik7DQorDQorICAgIGxpc3RfYWRkX3RhaWwoJmlvbW11X2RhdGEtPmVudHJ5LCAmaG9z
dF9pb21tdV9saXN0KTsNCit9DQogDQogaW50IGRvbWFpbl92aW9tbXVfaW5pdChzdHJ1Y3QgZG9t
YWluICpkLCB1aW50OF90IHZpb21tdV90eXBlKQ0KIHsNCkBAIC0zMywxMiArNzYsNTEgQEAgaW50
IHZpb21tdV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQ0KIA0KIHVpbnQ4
X3QgdmlvbW11X2dldF90eXBlKHZvaWQpDQogew0KLSAgICBpZiAoICFjdXJfdmlvbW11ICkNCisg
ICAgaWYgKCAhY3VyX3Zpb21tdSB8fCBob3N0X2lvbW11X2xpc3RfaW5jb21wbGV0ZSB8fA0KKyAg
ICAgICAgIGxpc3RfZW1wdHkoJmhvc3RfaW9tbXVfbGlzdCkgKQ0KICAgICAgICAgcmV0dXJuIFhF
Tl9ET01DVExfQ09ORklHX1ZJT01NVV9OT05FOw0KIA0KICAgICByZXR1cm4gY3VyX3Zpb21tdS0+
dmlvbW11X3R5cGU7DQogfQ0KIA0KK3ZvaWQgX19pbml0IHNldF9jdXJfdmlvbW11KGNvbnN0IHN0
cnVjdCB2aW9tbXVfZGVzYyAqZGVzYykNCit7DQorICAgIGlmICggY3VyX3Zpb21tdSAmJiAoY3Vy
X3Zpb21tdSAhPSBkZXNjKSApDQorICAgIHsNCisgICAgICAgIHByaW50aygiV0FSTklORzogQ2Fu
bm90IHNldCB2SU9NTVUsIGFscmVhZHkgc2V0IHRvIGEgZGlmZmVyZW50IHZhbHVlXG4iKTsNCisg
ICAgICAgIHJldHVybjsNCisgICAgfQ0KKw0KKyAgICBjdXJfdmlvbW11ID0gZGVzYzsNCit9DQor
DQordW5zaWduZWQgaW50IGRvbWFpbl92aW9tbXVfZ2V0X251bV9tbWlvX2hhbmRsZXJzKHN0cnVj
dCBkb21haW4gKmQpDQorew0KKyAgICBpZiAoIGRvbWFpbl91c2VfaG9zdF9sYXlvdXQoZCkgKQ0K
KyAgICB7DQorICAgICAgICBzdHJ1Y3QgaG9zdF9pb21tdSAqaHdfaW9tbXU7DQorICAgICAgICBp
bnQgY291bnQgPSAwOw0KKw0KKyAgICAgICAgLyoNCisgICAgICAgICogRm9yIGhhcmR3YXJlIGRv
bWFpbiwgdklPTU1VIHBlciBwSU9NTVUgaXMgZXhwb3NlZC4gTnVtYmVyIG9mDQorICAgICAgICAq
IHJlZ2lvbnMgcmVxdWlyZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIGVxdWFsIHRv
IG51bWJlciBvZg0KKyAgICAgICAgKiBob3N0IElPTU1Vcy4NCisgICAgICAgICovDQorICAgICAg
ICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGh3X2lvbW11LCAmaG9zdF9pb21tdV9saXN0LCBlbnRyeSkN
CisgICAgICAgIHsNCisgICAgICAgICAgICBjb3VudCsrOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg
ICAgcmV0dXJuIGNvdW50Ow0KKyAgICB9DQorDQorICAgIC8qDQorICAgICAqIEZvciB1bnByaXZp
bGlnZWQgZG9tYWlucywgc2luZ2xlIHZJT01NVSBpcyBleHBvc2VkIGFuZCByZXF1aXJlcyBvbmUN
CisgICAgICogcmVnaW9uIHRvIGNvdmVyIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLg0KKyAgICAg
Ki8NCisgICAgcmV0dXJuIDE7DQorfQ0KKw0KIC8qDQogICogTG9jYWwgdmFyaWFibGVzOg0KICAq
IG1vZGU6IEMNCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUt
djMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS92c21tdS12My5jDQpuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uNzU0MGM2ZmM1NA0KLS0tIC9kZXYvbnVsbA0K
KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11LXYzLmMNCkBAIC0wLDAgKzEs
MTE5IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9yLWxhdGVyIE9S
IEJTRC0yLUNsYXVzZSkgKi8NCisNCisjaW5jbHVkZSA8eGVuL3BhcmFtLmg+DQorI2luY2x1ZGUg
PHhlbi9zY2hlZC5oPg0KKyNpbmNsdWRlIDx4ZW4vZG9tYWluLWxheW91dC5oPg0KKyNpbmNsdWRl
IDxhc20vbW1pby5oPg0KKyNpbmNsdWRlIDxhc20vdmlvbW11Lmg+DQorDQorc3RydWN0IHZpcnRf
c21tdSB7DQorICAgIHN0cnVjdCAgICAgIGRvbWFpbiAqZDsNCisgICAgc3RydWN0ICAgICAgbGlz
dF9oZWFkIHZpb21tdV9saXN0Ow0KK307DQorDQorc3RhdGljIGludCB2c21tdXYzX21taW9fd3Jp
dGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyX3Qgciwgdm9pZCAqcHJpdikNCit7DQorICAgIEJVR19PTigi
dW5pbXBsZW1lbnRlZCIpOw0KKyAgICByZXR1cm4gSU9fSEFORExFRDsNCit9DQorDQorc3RhdGlj
IGludCB2c21tdXYzX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8s
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpyLCB2b2lkICpwcml2
KQ0KK3sNCisgICAgQlVHX09OKCJ1bmltcGxlbWVudGVkIik7DQorICAgIHJldHVybiBJT19IQU5E
TEVEOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG1taW9faGFuZGxlcl9vcHMgdnNtbXV2
M19tbWlvX2hhbmRsZXIgPSB7DQorICAgIC5yZWFkICA9IHZzbW11djNfbW1pb19yZWFkLA0KKyAg
ICAud3JpdGUgPSB2c21tdXYzX21taW9fd3JpdGUsDQorfTsNCisNCitzdGF0aWMgaW50IHZzbW11
djNfaW5pdF9zaW5nbGUoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLCBwYWRkcl90IHNp
emUpDQorew0KKyAgICBzdHJ1Y3QgdmlydF9zbW11ICpzbW11Ow0KKw0KKyAgICBzbW11ID0geHph
bGxvYyhzdHJ1Y3QgdmlydF9zbW11KTsNCisgICAgaWYgKCAhc21tdSApDQorICAgICAgICByZXR1
cm4gLUVOT01FTTsNCisNCisgICAgc21tdS0+ZCA9IGQ7DQorDQorICAgIHJlZ2lzdGVyX21taW9f
aGFuZGxlcihkLCAmdnNtbXV2M19tbWlvX2hhbmRsZXIsIGFkZHIsIHNpemUsIHNtbXUpOw0KKw0K
KyAgICAvKiBSZWdpc3RlciB0aGUgdklPTU1VIHRvIGJlIGFibGUgdG8gY2xlYW4gaXQgdXAgbGF0
ZXIuICovDQorICAgIGxpc3RfYWRkX3RhaWwoJnNtbXUtPnZpb21tdV9saXN0LCAmZC0+YXJjaC52
aW9tbXVfbGlzdCk7DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGRvbWFp
bl92c21tdXYzX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCit7DQorICAgIGludCByZXQ7DQorDQor
ICAgIElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLnZpb21tdV9saXN0KTsNCisNCisgICAgaWYgKCBk
b21haW5fdXNlX2hvc3RfbGF5b3V0KGQpICkNCisgICAgew0KKyAgICAgICAgc3RydWN0IGhvc3Rf
aW9tbXUgKmh3X2lvbW11Ow0KKw0KKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShod19pb21t
dSwgJmhvc3RfaW9tbXVfbGlzdCwgZW50cnkpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0
ID0gdnNtbXV2M19pbml0X3NpbmdsZShkLCBod19pb21tdS0+YWRkciwgaHdfaW9tbXUtPnNpemUp
Ow0KKyAgICAgICAgICAgIGlmICggcmV0ICkNCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN
CisgICAgICAgIH0NCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHJldCA9IHZz
bW11djNfaW5pdF9zaW5nbGUoZCwgR1VFU1RfVlNNTVVWM19CQVNFLCBHVUVTVF9WU01NVVYzX1NJ
WkUpOw0KKyAgICAgICAgaWYgKCByZXQgKQ0KKyAgICAgICAgICAgIHJldHVybiByZXQ7DQorICAg
IH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgdnNtbXV2M19yZWxpbnF1
aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQ0KK3sNCisgICAgc3RydWN0IHZpcnRfc21t
dSAqcG9zLCAqdGVtcDsNCisNCisgICAgLyogQ29wZSB3aXRoIHVuaW5pdGlhbGl6ZWQgdklPTU1V
ICovDQorICAgIGlmICggbGlzdF9oZWFkX2lzX251bGwoJmQtPmFyY2gudmlvbW11X2xpc3QpICkN
CisgICAgICAgIHJldHVybiAwOw0KKw0KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9z
LCB0ZW1wLCAmZC0+YXJjaC52aW9tbXVfbGlzdCwgdmlvbW11X2xpc3QgKQ0KKyAgICB7DQorICAg
ICAgICBsaXN0X2RlbCgmcG9zLT52aW9tbXVfbGlzdCk7DQorICAgICAgICB4ZnJlZShwb3MpOw0K
KyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHZp
b21tdV9vcHMgdnNtbXV2M19vcHMgPSB7DQorICAgIC5kb21haW5faW5pdCA9IGRvbWFpbl92c21t
dXYzX2luaXQsDQorICAgIC5yZWxpbnF1aXNoX3Jlc291cmNlcyA9IHZzbW11djNfcmVsaW5xdWlz
aF9yZXNvdXJjZXMsDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHZpb21tdV9kZXNjIHZz
bW11djNfZGVzYyA9IHsNCisgICAgLm9wcyA9ICZ2c21tdXYzX29wcywNCisgICAgLnZpb21tdV90
eXBlID0gWEVOX0RPTUNUTF9DT05GSUdfVklPTU1VX1NNTVVWMywNCit9Ow0KKw0KK3ZvaWQgX19p
bml0IHZzbW11djNfc2V0X3R5cGUodm9pZCkNCit7DQorICAgIGNvbnN0IHN0cnVjdCB2aW9tbXVf
ZGVzYyAqZGVzYyA9ICZ2c21tdXYzX2Rlc2M7DQorDQorICAgIHNldF9jdXJfdmlvbW11KGRlc2Mp
Ow0KK30NCisNCisvKg0KKyAqIExvY2FsIHZhcmlhYmxlczoNCisgKiBtb2RlOiBDDQorICogYy1m
aWxlLXN0eWxlOiAiQlNEIg0KKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQorICogaW5kZW50LXRhYnMt
bW9kZTogbmlsDQorICogRW5kOg0KKyAqLw0KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0
aHJvdWdoL2FybS92c21tdS12My5oIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3ZzbW11
LXYzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi45ZjRjODZhYmQ1
DQotLS0gL2Rldi9udWxsDQorKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vdnNtbXUt
djMuaA0KQEAgLTAsMCArMSwyMCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BM
LTIuMC1vci1sYXRlciBPUiBCU0QtMi1DbGF1c2UpICovDQorI2lmbmRlZiBfX0FSQ0hfQVJNX1ZT
TU1VX1YzX0hfXw0KKyNkZWZpbmUgX19BUkNIX0FSTV9WU01NVV9WM19IX18NCisNCisjaW5jbHVk
ZSA8YXNtL3Zpb21tdS5oPg0KKw0KKyNpZmRlZiBDT05GSUdfVklSVFVBTF9BUk1fU01NVV9WMw0K
Kw0KK3ZvaWQgdnNtbXV2M19zZXRfdHlwZSh2b2lkKTsNCisNCisjZWxzZQ0KKw0KK3N0YXRpYyBp
bmxpbmUgdm9pZCBfX2luaXQgdnNtbXV2M19zZXRfdHlwZSh2b2lkKQ0KK3sNCisgICAgcmV0dXJu
Ow0KK30NCisNCisjZW5kaWYgLyogQ09ORklHX1ZJUlRVQUxfQVJNX1NNTVVfVjMgKi8NCisNCisj
ZW5kaWYgLyogX19BUkNIX0FSTV9WU01NVV9WM19IX18gKi8NCmRpZmYgLS1naXQgYS94ZW4vaW5j
bHVkZS9wdWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQpp
bmRleCBhN2Q0NTZiZTA4Li43Yzc2ZjJhZmQ0IDEwMDY0NA0KLS0tIGEveGVuL2luY2x1ZGUvcHVi
bGljL2FyY2gtYXJtLmgNCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQpAQCAt
MzM1LDYgKzMzNSw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vlc3RfY29udGV4
dF90KTsNCiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9WOFJfRUwxX01TQV9WTVNBICAg
IDINCiANCiAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX1ZJT01NVV9OT05FICAgMA0KKyNkZWZp
bmUgWEVOX0RPTUNUTF9DT05GSUdfVklPTU1VX1NNTVVWMyAxDQogDQogc3RydWN0IHhlbl9hcmNo
X2RvbWFpbmNvbmZpZyB7DQogICAgIC8qIElOICovDQpAQCAtNDQ5LDYgKzQ1MCwxMCBAQCB0eXBl
ZGVmIHVpbnQ2NF90IHhlbl9jYWxsYmFja190Ow0KICNkZWZpbmUgR1VFU1RfR0lDVjNfR0lDUjBf
QkFTRSAgICAgeGVuX21rX3VsbG9uZygweDAzMDIwMDAwKSAvKiB2Q1BVMC4uMTI3ICovDQogI2Rl
ZmluZSBHVUVTVF9HSUNWM19HSUNSMF9TSVpFICAgICB4ZW5fbWtfdWxsb25nKDB4MDEwMDAwMDAp
DQogDQorLyogdnNtbXV2MyBNTUlPIG1hcHBpbmdzICovDQorI2RlZmluZSBHVUVTVF9WU01NVVYz
X0JBU0UgICAgIHhlbl9ta191bGxvbmcoMHgwNDA0MDAwMCkNCisjZGVmaW5lIEdVRVNUX1ZTTU1V
VjNfU0laRSAgICAgeGVuX21rX3VsbG9uZygweDAwMDIwMDAwKQ0KKw0KIC8qDQogICogMjU2IE1C
IGlzIHJlc2VydmVkIGZvciBWUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYmFzZWQgb24gY2FsY3Vs
YXRpb24NCiAgKiAyNTYgYnVzZXMgeCAzMiBkZXZpY2VzIHggOCBmdW5jdGlvbnMgeCA0IEtCID0g
MjU2IE1CDQotLSANCjIuNDMuMA0K


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470344.1679107 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL6-0000Qs-IG; Tue, 03 Nov 2026 17:30:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470344.1679107; Tue, 03 Nov 2026 17:30:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL6-0000P1-Bh; Tue, 03 Nov 2026 17:30:28 +0000
Received: by outflank-mailman (input) for mailman id 1470344;
 Tue, 03 Nov 2026 17:30:27 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL5-0000IK-G9
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL4-0082tl-MC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:26 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2e-e002-0a2a0a5209dd-0a2a4505e898-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:26 +0100
Received: from [52.101.66.123]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a32-4cb1-0a2a45050019-3465427b9e4f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:26 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:24 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=E3vG1bBF3N1moRGwqk2e9wvs1j+o0/y05/WY/t10iTTzCXmhCcJ49tM3pL49jVFGH/YVpl3QIfJa240/tFC0NJT9FZEzsjJd8/bdeJNrztqXpHEUtiv18e2xLqvba2sBxdF7XgPmExtAX3kZ0k0KPQaoTyKrRWFJ0DG1lBPaGWJVYSIu1SUbG0q7FUOK7f8q8iuNxJ9RTA+Zf2KTlWRa39oKiiKxlq89CNpN04Q4LQMjFoZ/prrNVzYMXQKcekoko+OtT6zayw5VptfNnP+LqKY3ZZyaHSlAhi4td5g36vfDoBg2lkdfVrci6aCB7ZpbKAhg00Dt6jymAfR3qZtkcQ==
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=h65T3qN5ENkSABqnFxXdapmONsngVT2rHLs98PX3ddU=;
 b=ahkik0El3DTnwq2VaEFtBcdLaUzM51tKW5lUmWBhIo8pFSOFk7OwQlWgy3OmX3UiSomex5ZsyJmbf5BjPy01HcC+VVDSTK2GRnEpwi21EyeqNLqXhdvSPdoRowzsNHfdZ0dgYA6VIOn0JW4rX8MPVj+pkepMf234lqy73XRS1ZqAif2bdtMI918JWNIgHwUlmjezVnCK128+VhQboSyFiCtt7XQ4bydRVTm65qPLlcmp6FvD/E4wT4jdvJl5MQV9VRsiqDn/aoL6fNA2gfImzGLB3zMJFhn0v11k7wsQKkPYbMohZKL0bAMXLEgEBjnbIPWLjptTIir+wLIsQ9eUkg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=h65T3qN5ENkSABqnFxXdapmONsngVT2rHLs98PX3ddU=;
 b=S9BnW7CEoxpxsQTdRicJBpWGmCshVNUx1G1s5/cpjGLV88FvvoMuRFj4uIWvJAJk4E+Qn4oA/IcMxcbkYvWDoDoq3tOT515jxQyepEnmMWBCUMEAt9JxwW+Eeo8bmMsiqvPVVF3XAPNSKSOExSGr7HCWIi0xRFMRMYAeSUCVGsS5yPnFeCr3Kv3Xjhv6NVNh4sU7K+X8fRa+r47E+ZBtA1nLEJnIbJEDACUxNG7pDHceZxVXABqNhh7u2XqYoEcaYUipgPxmQePg26sFMmlAaU7L7mG55YY4I7otjXycIB2ZmYY8rMgdvKsjpiaUMVMbDemrnnmQCHtrC2KBemfJ/A==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Nick Rosbrook <enr0n@ubuntu.com>, George Dunlap
	<gwd@xenproject.org>, Juergen Gross <jgross@suse.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 06/22] tools: Add XEN_DOMCTL_CONFIG_VIOMMU_* and viommu
 config param
Thread-Topic: [PATCH v5 06/22] tools: Add XEN_DOMCTL_CONFIG_VIOMMU_* and
 viommu config param
Thread-Index: AQHda7kC/hJHclJuGkWXi0K+IS/7rA==
Date: Tue, 3 Nov 2026 17:30:24 +0000
Message-ID:
 <d4f53b05a484bbb0d95cd539af889b21f3748bcd.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 009dff00-0ae2-4752-98c3-08df39d02506
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|260925021911599003|260925022911599003|260925021311599003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021135927099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 3/ShUJllZWZdlFd0g+D0pADIkGsep0X0tFp9k5csQdugYt3O9gbkWEESdSZj+PIg0OXixZRW7p6QxvFcFtl1kFsm8nWV1EXooEOu5foYo1q7xd+FqGLNEOD+ek963laFDtTqDdzDMZEZEQxdpYmlTHMRiCpCqN1RLq8J1dJ48NRScMNeb0qUq2qU9zCaf4aWcwlvDRufbFlJg5WXupqd0D7jaEAWQGmJVJKDQ35+HTyePqCpxHPUAN1+qH80Mg6dJc+EZfeo6CYsjRDr+vj9UxE86gGrblECiXSsV4xLFdlcwCZgw5Amhqtkox3jvhTquopZVPgi2xfSjyIlR9bA3JLftYrW66F8GWGrXZIPdMiNymdeej+cdrfUS6y+u6mqFuudKrKwlvgDdNfDcTzz18QddXGLD2k8jShojziLqywVFS4+gpAhJKGU53kS6/WnbKGNq9xMMVp1Ag7WP9jNC/hV+HlT4LITp3XgqjylfkcU6y199Akl8+94pnsFfm9v2QXD5aKAsGHOpUFKb2aaX1huC8UPDi/Az1JwyXnHcMjw0geVo0uUcW1lImkzG8WEr8rJ89ZnCDSKh5Fspkb6OHUcqJtil69AjPNjiuQSsgu0cdFXa9eizLenW5pajw8atYJ3lkGs6Oq62y+fVzDa2cUMd20SLWYjvbaekhRkUkt6lIDz8BAgbsqsvzRuK9CnzeXYlgOb5yrfmbcwexzuhCrOKNvb5vBrNh7q4W3W+24=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(260925021911599003)(260925022911599003)(260925021311599003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021135927099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Ov2DBTz3QvoNF80fyv7pUjw8eHVCkESgMUicL6Mmxr3YasR7dsjux9wkAO?=
 =?iso-8859-1?Q?ioMNndxPggNNmvilhfUNe78vErwRQ6RqmfQOGPFuvT+1LIMKUNE0wqqA38?=
 =?iso-8859-1?Q?3IzQoAg5vP/AQvtp5V9lWx1uBDaXWvj4wFxEQU8RcVuTLNE327vvr8urwY?=
 =?iso-8859-1?Q?k8dBR7s62VmOVcTgrtnG2cnY/qzicVQ3q2c1bfXnZISc6I4tDSTl98iug9?=
 =?iso-8859-1?Q?85h/If4k8tyy5FFU0eF6RQxvAs2i1ndImtjej1x0WugyAbT+LFw9Wh/ref?=
 =?iso-8859-1?Q?Zharei+FrZOFMyaRjod29h4o0zdENdY8/UEFwkSIFlKgw1nS+F5k3uLYnu?=
 =?iso-8859-1?Q?zOoV6mDT1FFihgHB3zu584MVKeZitrwF1W2uGYlhSWh99kZ8LDTDSj4cSA?=
 =?iso-8859-1?Q?Kj8nruwdCs/yWczIen9a0zEr871JnmqilOUI1YSjLHvOA8J/Z2/HtUorYk?=
 =?iso-8859-1?Q?63UIfan/OBUGgWxw9jMiqtGFaORYkWQzfpX0NvtNBVWg8zzTdInXvaOG43?=
 =?iso-8859-1?Q?h6Zcro6GzGfyKgpxmjwflGPPIJTh3+hu3duXFVLOmLJ53Nu3U84giy01aw?=
 =?iso-8859-1?Q?/6VD0c69jq5gt+LxpfRKhATP/kWwH3DLiJMYrdHYv8rKawiXJ5Z8YOD2x7?=
 =?iso-8859-1?Q?AwCtFQ1sOKLPE50LeOJshHErygfUsFWlt6NsKQvapXLXcCfbrK+7pL3BbA?=
 =?iso-8859-1?Q?K+rGnjR8IqMrsznFHBgLrZ3xpWPoWeTdK2nMdXojfuvLH7aIoKHPsDZei4?=
 =?iso-8859-1?Q?YfA+TTGGGnL189yJo0Lx8giW5cFnf5jQWGsGoDZIZRcZqx9hg8kbNo4h9X?=
 =?iso-8859-1?Q?L/a80Wr1MVDQ46yjT9zK2ss9/2tUoP58my//2oR2ZaNGWYg/2bc0oHh2ph?=
 =?iso-8859-1?Q?Sd63PkXz9hqshhBxKrp3D1IJDpnNR4U/B8819A/l9G3SlZXnymO2MTfeuv?=
 =?iso-8859-1?Q?gWkYklcHrdwjSbbuUojwacmdlbONYdjHRUAO96q+zirDY4EU2TkkxoRffV?=
 =?iso-8859-1?Q?lmXB9iP4/zPbUOLkye9gM6tH1+21uJwKO9OtiznC0TeCZ5jA+NhZLe6sSj?=
 =?iso-8859-1?Q?OMle7YAcNd49fAyYDDjp/CC1xiLDic4qzVvYDVU5X0YWwEophXjYQJ/B9r?=
 =?iso-8859-1?Q?9s2nfuzFiyFJPMJJ7ignTo+HFgXph+W35HGXaXiC/FPwr5Gm2i8CT2+BtP?=
 =?iso-8859-1?Q?g2ruO4clh+QEPIhC/CEvGkqazVgKcVzC2pLgG2MAn20m6LNGa43bF284mD?=
 =?iso-8859-1?Q?jgEZpPaB/0ZMNU8tVaT9BVQ4CaMKwpAlyxl5s86Ey/2UO89UF9NN2rZOjz?=
 =?iso-8859-1?Q?rzPYA3euAUtJySyGiatE5cYnj9Lz9/37TB38YkBHbdo4FAg5RSyvcFxD0a?=
 =?iso-8859-1?Q?IqI9Wn5caliFZcqeYifQxjpXfwNGoTXy0HwR7daAPunYo8MFUFQIb2TUgu?=
 =?iso-8859-1?Q?yLlgV/K5P/Pt+M5ojUdhHSif/NyzgJfZZHmsubT+FtS66hhqNZ8XQ7rVU3?=
 =?iso-8859-1?Q?Un0ys7i6tsCDCV8Ec8P3e4BCSzEpQCeYYgOERtC34pwgt2Ib3uEIOZyVov?=
 =?iso-8859-1?Q?Y7Wqjqb5XU9HQsn9TZHzM1aM2XcRSi/yjffYI8JQGrVriGqc+rFUZfK5b7?=
 =?iso-8859-1?Q?PJerridwGbg8VU6GxtPoiRhFMcvHMWPDeDdQDDlLYQIHS8lMGmok4sri7r?=
 =?iso-8859-1?Q?eZxFKvRLco7GreOJrxXma16AykLuy+k6AI3gXL7UTaH6+x6pA/93W9H/Aw?=
 =?iso-8859-1?Q?brPxzeSzu7FzzQmOrMxdhNA/n6WX47ustKLnkBo1RyTxYlKFceRRDihfId?=
 =?iso-8859-1?Q?HMD6EEUNfA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 009dff00-0ae2-4752-98c3-08df39d02506
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:24.6313
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: CBN4AYVDNsiVccH6JD3aJJycebXqKsGwMrkb+0/Y4kYnkznwmRlce5FtXcWejKc7YBVCQ7QuiLuDRfY3RSq12Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-c201ff/1793727026-F56AD2A1-6E8C79C1/0/0
X-purgate-type: clean
X-purgate-size: 6669

From: Rahul Singh <rahul.singh@arm.com>

Add new viommu_type field and field values XEN_DOMCTL_CONFIG_VIOMMU_NONE
XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3 in xen_arch_domainconfig to
enable/disable vIOMMU support for domains.

Also add viommu=3D"N" parameter to xl domain configuration to enable the
vIOMMU for the domains. Currently, only the "smmuv3" type is supported
for ARM.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
Acked-by: Nick Rosbrook <enr0n@ubuntu.com>
---
 docs/man/xl.cfg.5.pod.in             | 22 ++++++++++++++++++++++
 tools/golang/xenlight/helpers.gen.go |  2 ++
 tools/golang/xenlight/types.gen.go   |  7 +++++++
 tools/include/libxl.h                |  5 +++++
 tools/libs/light/libxl_arm.c         | 13 +++++++++++++
 tools/libs/light/libxl_types.idl     |  6 ++++++
 tools/xl/xl_parse.c                  |  9 +++++++++
 7 files changed, 64 insertions(+)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index b19c25c8d1..3920911033 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -3190,6 +3190,28 @@ option.
=20
 =3Dback
=20
+=3Dover 4
+
+=3Ditem B<viommu=3D"STRING">
+
+Enable an emulated IOMMU for the guest, allowing the guest to configure
+IOMMU stage-1 translation for guest-assigned devices protected by the
+IOMMU.
+
+To enable the emulated IOMMU, specify the following option in the VM
+configuration file:
+
+viommu =3D "smmuv3"
+
+Currently, only the "smmuv3" type is supported on ARM.
+
+For this option to take effect, the passthrough option must also be
+enabled. E.g. if passthrough is explicitly disabled, or implicitly when no
+devices passed through to the guest while the vIOMMU is enabled, the
+domain configuration is invalid and will be refused by Xen.
+
+=3Dback
+
 =3Dhead3 x86
=20
 =3Dover 4
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h=
elpers.gen.go
index 6ab23a708f..254e040802 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -1273,6 +1273,7 @@ x.ArchArm.NrSpis =3D uint32(xc.arch_arm.nr_spis)
 if err :=3D x.ArchArm.ArmSci.fromC(&xc.arch_arm.arm_sci);err !=3D nil {
 return fmt.Errorf("converting field ArchArm.ArmSci: %v", err)
 }
+x.ArchArm.ViommuType =3D ViommuType(xc.arch_arm.viommu_type)
 if err :=3D x.ArchX86.MsrRelaxed.fromC(&xc.arch_x86.msr_relaxed);err !=3D =
nil {
 return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err)
 }
@@ -1815,6 +1816,7 @@ xc.arch_arm.nr_spis =3D C.uint32_t(x.ArchArm.NrSpis)
 if err :=3D x.ArchArm.ArmSci.toC(&xc.arch_arm.arm_sci); err !=3D nil {
 return fmt.Errorf("converting field ArchArm.ArmSci: %v", err)
 }
+xc.arch_arm.viommu_type =3D C.libxl_viommu_type(x.ArchArm.ViommuType)
 if err :=3D x.ArchX86.MsrRelaxed.toC(&xc.arch_x86.msr_relaxed); err !=3D n=
il {
 return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err)
 }
diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/typ=
es.gen.go
index 39bf9962d1..112b2825da 100644
--- a/tools/golang/xenlight/types.gen.go
+++ b/tools/golang/xenlight/types.gen.go
@@ -531,6 +531,12 @@ type ArmSci struct {
 Type ArmSciType
 }
=20
+type ViommuType int
+const(
+ViommuTypeNone ViommuType =3D 0
+ViommuTypeSmmuv3 ViommuType =3D 1
+)
+
 type RdmReserve struct {
 Strategy RdmReserveStrategy
 Policy RdmReservePolicy
@@ -620,6 +626,7 @@ Vuart VuartType
 SveVl SveType
 NrSpis uint32
 ArmSci ArmSci
+ViommuType ViommuType
 }
 ArchX86 struct {
 MsrRelaxed Defbool
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index d294fb36bd..4ffbaba179 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -326,6 +326,11 @@
  */
 #define LIBXL_HAVE_BUILDINFO_ARCH_ARM_SCI 1
=20
+/*
+ * libxl_domain_build_info has the arch_arm.viommu_type field.
+ */
+#define LIBXL_HAVE_BUILDINFO_ARCH_ARM_VIOMMU 1
+
 /*
  * LIBXL_HAVE_SOFT_RESET indicates that libxl supports performing
  * 'soft reset' for domains and there is 'soft_reset' shutdown reason
diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 47b662ea5c..7f1adfd79b 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -244,6 +244,19 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     }
     LOG(DEBUG, " - SCI type=3D%u", config->arch.arm_sci_type);
=20
+    switch (d_config->b_info.arch_arm.viommu_type) {
+    case LIBXL_VIOMMU_TYPE_NONE:
+        config->arch.viommu_type =3D XEN_DOMCTL_CONFIG_VIOMMU_NONE;
+        break;
+    case LIBXL_VIOMMU_TYPE_SMMUV3:
+        config->arch.viommu_type =3D XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3;
+        break;
+    default:
+        LOG(ERROR, "Unknown vIOMMU type %d",
+            d_config->b_info.arch_arm.viommu_type);
+        return ERROR_FAIL;
+    }
+
     return 0;
 }
=20
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type=
s.idl
index ce697303b6..a585d24964 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -562,6 +562,11 @@ libxl_arm_sci =3D Struct("arm_sci", [
     ("type", libxl_arm_sci_type),
     ])
=20
+libxl_viommu_type =3D Enumeration("viommu_type", [
+    (0, "none"),
+    (1, "smmuv3")
+    ], init_val =3D "LIBXL_VIOMMU_TYPE_NONE")
+
 libxl_rdm_reserve =3D Struct("rdm_reserve", [
     ("strategy",    libxl_rdm_reserve_strategy),
     ("policy",      libxl_rdm_reserve_policy),
@@ -746,6 +751,7 @@ libxl_domain_build_info =3D Struct("domain_build_info",=
[
                                ("sve_vl", libxl_sve_type),
                                ("nr_spis", uint32, {'init_val': 'LIBXL_NR_=
SPIS_DEFAULT'}),
                                ("arm_sci", libxl_arm_sci),
+                               ("viommu_type", libxl_viommu_type),
                               ])),
     ("arch_x86", Struct(None, [("msr_relaxed", libxl_defbool),
                               ])),
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 0ccece3e8a..4e5bc84ca3 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -3080,6 +3080,15 @@ skip_usbdev:
         }
     }
=20
+    if (!xlu_cfg_get_string (config, "viommu", &buf, 1)) {
+        e =3D libxl_viommu_type_from_string(buf, &b_info->arch_arm.viommu_=
type);
+        if (e) {
+            fprintf(stderr,
+                    "Unknown vIOMMU type \"%s\" specified\n", buf);
+            exit(-ERROR_FAIL);
+        }
+    }
+
     parse_vkb_list(config, d_config);
=20
     d_config->virtios =3D NULL;
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470346.1679120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL8-0000pb-SU; Tue, 03 Nov 2026 17:30:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470346.1679120; Tue, 03 Nov 2026 17:30:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIL8-0000op-Lu; Tue, 03 Nov 2026 17:30:30 +0000
Received: by outflank-mailman (input) for mailman id 1470346;
 Tue, 03 Nov 2026 17:30:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL7-0000bH-8t
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL6-004K2A-La
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:28 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a19-2eae-0a2a0a5409dd-0a2a4502a8a8-34
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:28 +0100
Received: from [40.107.159.77]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a34-6ca4-0a2a45020019-286b9f4d6e3f-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:28 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:26 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=W14mesI05BiFKICP33fSbsIh9ZPMpsWWZZkniYtPQSCMAo9yRfYNMoJWj6XcmqvEy6tQvuHgMjDfR2pFjKlSFW+y/v5UGWiXjCRwdvo2urJP0b3cClnvDEBVlba4Ot6von6AocqzDEvhUiPmVMpWPUjVTzi9N2coK7hhXBdnw/8hIFNUPyHmG2EQf/2rI3Wd7EgnzNZxHvh2zLa3cIWpB+NphnImaZzbOcUBB/kYSJAt94P0tUJtIJ4EZTZNhpgNy+8pKyVVOtYzBoXiJxJB9tvnKdNhIVXHaVyjRjoHjKZkj95PMovcw3nLxs+EcAdsFXRDzU4ttbXbilIuuQz47Q==
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=3FDWPZewPZczmNvTclszGd+TynYKyefP1NUzaXsHj64=;
 b=oeFklmPoXqYnTGDhK40Ffyt1FDi5zIax9Jmy/cQa0FYWi5iYmb3iHL9jtSBZTelPxUEOuqAEWf6AQYET23+L8b6s514kkILraKSbwBJuguvbZPULDTqMiAo5iSdNITlTyNZjfaQI59RGdFJ0+0aJHxR2t1wMZ8HSWjDsQkQ5VVWDlwDTR1HnjENATLihqlHtVGAKU6fPJxDJnXj5p976+55BEYG37xW0D6xo4MEFgHqtIeItlDUFUdEG4fOAMYhizJ7WDGNNspy9t4uMy3eS0AJqA3UyHwrVsGJWe43D6VrQ62MF9ZgauycjN8zkXmQyFOpsmquIXLkCyRHVqUzqBA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3FDWPZewPZczmNvTclszGd+TynYKyefP1NUzaXsHj64=;
 b=r1HP7Uz9Wc3yN01bZlWMVcnEspzy2ikuWsfI1Qo+1t+5uQTXX5qw+VkM59ta/rlVl+GxbF++XagxTqO2OAS6I4Jvvf1U3C1lCKHsna6pzLISZ29nf2CXrgEbHW1y+YBWBIU5s22dkPKGekTtjwEeeHyKZLxwubewmrpTHbc5Kdc3F9x/8LwDA/dAzyzs6K+Qsln6Fx9fwM6bS8+ncXnn6EsMQGXizZsEv/wc80wPrH9YNbz6lYFDs4j4LLU2ORUMfy+eTvhjzK2wgwcLwWDX+hbqtKIWFypbxiejf2qKGEyWzBcbzaGdfVyzSRcIyIHkNAY3ZXeqpY7U7fnt9M/VKA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Milan Djokic <milan_djokic@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Rahul Singh <rahul.singh@arm.com>,
	Robin Murphy <robin.murphy@arm.com>, Will Deacon <will@kernel.org>
Subject: [PATCH v5 07/22] xen/arm: smmuv3: Extend HW features detection and
 apply errata
Thread-Topic: [PATCH v5 07/22] xen/arm: smmuv3: Extend HW features detection
 and apply errata
Thread-Index: AQHda7kDiSsEJx339UGYLb3uJ6HI1w==
Date: Tue, 3 Nov 2026 17:30:26 +0000
Message-ID:
 <6a25a02d52ad58d406200ebbe9aa17ca0e997104.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 4ec6f1ff-b15e-4977-b8ed-08df39d025fe
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|260925021911599003|260925022911599003|260925021311599003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 OIoLGuOjnkvQgnCamr7/ZVAVz9mtdw3/gjpuWt/F/T69PF59kOF2RCQwoI9VVaWpzrzu4iCfF1Czx5kPNIC/o0KSjYXRsGa8N2b5bfDRo2HLvIS7tl+idL4mU04bS5q5+F3I4N+l6Kr0awT0XkkpXtKqcRDiLFItI/HkhGKt6TCeLPLjxyuZd4dmk9LrM2RCkLksGpZgxGm18KdcjLU4w4UzTDRKBJnOtjTy+jErcTBnGT7Qxyscfwo6phxGS6La7MA4KNCVR3Ln+4oARXIUujqrxlXbwDPN8367VHto6tHHRfdNpI91r8zspMDGbVZ6Hbwo00MidadvNXkK+WAxSEfj0Hj9Zgk2R5gGgAQuUAN1alUWavVXZM4VcKVc7T2YiXWisZNSIqItaW2A7VEHq4QYYs5fshm3xYwfraNvckLe/lxxic3edQpaajbfGX6o5tKEC8nkGO0lTgzfnF0y62YfbfsT21T84kBgZI5GooXPN329cGtSvJshPKw4O8ZFYi1MbER5uPLUTBYVEnzyxpLXNUksJ/YKPiAUBgpuNduR5sX27knybBuICQ02044CAlByqeXU4DYArBLnWCDLNRQdhTvLhWQi16vh4/f1zpH95EK16t9Q6qqX63i6mEkhahdqtGWPnCpE49HAwIjPzHDMpYam41yv9Xez4zwduyw=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(260925021911599003)(260925022911599003)(260925021311599003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?rNjz1tlYxDgP4skeBDUGugn7wAhvSpJmTXycYsGXkja4aYf6XEI68mWvWZ?=
 =?iso-8859-1?Q?1oS5pVFBbwVicdi0f2n3J5q0BSrlELEqLWLlUolLKM5MsMbhP3GhvJHnPd?=
 =?iso-8859-1?Q?dzw4XQ1xoYLYquFt2i0IHhlmb6shTLRBYJRMyRj7PncLOj1WscAU2rrJQf?=
 =?iso-8859-1?Q?DhTXkLV+/6DCvWyPxET/V6ib+vUjsomKxkqQT34hjzJIPkGELUXoES6C/W?=
 =?iso-8859-1?Q?c48E1Ty2fa/eD8S6ofTje70nZoT4bmHKuM5dhxKKBp9UrtBbm0GwFd5iAR?=
 =?iso-8859-1?Q?aOQJ7g/GyLr752fxMF23eGcflKkJSj5vEmlQyQgxanYqnP71ci60KvT6Di?=
 =?iso-8859-1?Q?rB6fcxHNRLhMeuy4IFpl4ijjYgW5nnJIVrNqE1Ti1G41mJwDzENn4NQrdi?=
 =?iso-8859-1?Q?TGZBzWfJg9ieIGL9T8D8Iqh32zfK1PsJVbQE8PqCSC3VGSIhCs+/tjjjyq?=
 =?iso-8859-1?Q?rO7IPoAUDYy/sKDfYYeHGl9DJmOACsY31HN6Xzc5hJF83UoKMgjG1OPZyM?=
 =?iso-8859-1?Q?2UpYxFuL1M5ayqOdLCro3AAu8HB1RmAuKXjaw0EeHMD5i/f/TtGRk8T+Ab?=
 =?iso-8859-1?Q?5/tzj5xODGRS5HCJ1W+9rxEHy98UIbXLDiCD3XVw6C03iT+mBsqHGwWx2c?=
 =?iso-8859-1?Q?yoMNS0SOQwiw2yFosHOlzn2a6mttNyrQjKnohJmhv5tEoCTak9vRq+FgHD?=
 =?iso-8859-1?Q?PMDaXpY1zaxbxr3l4HIcaDJkM7IFCFC8z/SW58S0JF/qiaiBsFzf7EkVA2?=
 =?iso-8859-1?Q?ffdijIOaF32+O5lJtba+UC7Wxax2CkHZrXfxKFGGadDeKztiGXQc5Ei3MN?=
 =?iso-8859-1?Q?x2NcAPOoC0frkvGPwEXCv+SBYg+rmvnpCgMDO/9RHZ5fmCS9l7uNEoOUpb?=
 =?iso-8859-1?Q?fk0y3LiCjIWc/ArGW7m7r8QrCyFvzskG3a2w0/RzHkwiVKVrlxdNnt35w1?=
 =?iso-8859-1?Q?TyjdshBo6iRzQ57k68pRh5ihPcmDbjzoZSoqwkrNgJKFps8ZqpQTq584ur?=
 =?iso-8859-1?Q?3wiI43DF0orV9g0Y/dXfrdGj+R5ryiBbyJzRj679tSDOfr3y0v31HAF3tf?=
 =?iso-8859-1?Q?q4qVKP5agsowSpsy+s5IWlCCXGDG9eTzva5KyY6R4C64xgA22EfXszgblN?=
 =?iso-8859-1?Q?Bsis6UOMwofDxy1aKfW6UoRYyz9LyLMoSJq0hLRpn24CDEJS/SMJDRC+t6?=
 =?iso-8859-1?Q?A79XRIhf1aJ+wORMSLcOAcKiRH1lSbZUH085n5G9eLIEAeKfDKiWiFqi1y?=
 =?iso-8859-1?Q?2BV+jg1IoRWNO3W/AmRUcSNSGbhoG7JUS+9WtSBVw4k+xo5vRofXsIkMTc?=
 =?iso-8859-1?Q?Iyg9D5YtFffWODbPkEF2br4MPbq1bxhanWS5B0rYxsyJIi/obn/aswEYJ3?=
 =?iso-8859-1?Q?L7EFJHkR1wZm/BeTQULP5chH9TvdBu5rwsy43oYu2LlVBkJ6fWVtsLxIgR?=
 =?iso-8859-1?Q?e+mLzkGeYqSaSgsBzqCU4nXXHmogzQQcQE7OkS4Iijjid3/CwQEjFn5HQh?=
 =?iso-8859-1?Q?i/oskG58Dvp2+aJOcP8rv/M96RhzYNOR/C8WhmV0tuBLAigBu//+0ToZzz?=
 =?iso-8859-1?Q?h4/pXOA8oW691Mxv8vJlp7er3Iyn+vgJVJr1uZx4sU2ULRuKRhXAVjDBGd?=
 =?iso-8859-1?Q?VvoKbBcZkZDbIWLmKyJ8uI3G/kHCP0PeZvHrE4BCWJf9YPAofpv0Qfdx2K?=
 =?iso-8859-1?Q?o5ZHOhxYn7GzIL3ObXC6DHhNnJDjlu8LYHK1H1jqtrWWPOSnpKUY2e4EA1?=
 =?iso-8859-1?Q?+MaPD7K7pHTfhoeEI2GqSq8mEuj1I1krdFHYjSFFCMH11RsY0kPEeCsvbb?=
 =?iso-8859-1?Q?rlsSfHZ1cg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4ec6f1ff-b15e-4977-b8ed-08df39d025fe
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:26.2840
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: QU8oiH65jKI8G68vBE2JnVX2zSBwTq0qJ7hz20cst/rVUVdUTwQlCTkRCzMT9kbwbPxo6ISGnmCYFbeKRvyM+A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-720697/1793727028-66EB32AC-BA098F94/0/0
X-purgate-type: clean
X-purgate-size: 15259

Backport Linux commits 4bbd63eb685b and fd86b5944215, adapted to the
Xen SMMUv3 implementation, applying errata workarounds to prevent
nesting on MMU-600 and MMU-700 products.

Detect IOMMU hardware features and store them in the IOMMU host list
for each probed SMMUv3 device, allowing the emulated IOMMU to advertise
features supported by the physical IOMMU.

Linux commits:

  4bbd63eb685b ("iommu/arm-smmu-v3: Work around MMU-600 erratum 1076982")
  fd86b5944215 ("iommu/arm-smmu-v3: Add explicit feature for nesting")

Link: https://lore.kernel.org/all/08adbe3d01024d8382a478325f73b56851f76e49.=
1683731256.git.robin.murphy@arm.com/
Link: https://lore.kernel.org/all/136c3f4a3a84cc14a5a1978ace57dfd3ed67b688.=
1683731256.git.robin.murphy@arm.com/
Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4b=
bd63eb685b
Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git fd=
86b5944215

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/include/asm/viommu.h      |  8 ++-
 xen/drivers/passthrough/arm/smmu-v3.c  | 81 +++++++++++++++++++++++--
 xen/drivers/passthrough/arm/smmu-v3.h  | 32 ++++++++--
 xen/drivers/passthrough/arm/viommu.c   |  4 +-
 xen/drivers/passthrough/arm/vsmmu-v3.c | 83 ++++++++++++++++++++++++--
 5 files changed, 191 insertions(+), 17 deletions(-)

diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v=
iommu.h
index 287595068b..844cf34d56 100644
--- a/xen/arch/arm/include/asm/viommu.h
+++ b/xen/arch/arm/include/asm/viommu.h
@@ -12,6 +12,8 @@ struct host_iommu {
     struct list_head entry;
     /* IOMMU DT node used to establish virtual to physical IOMMU/SID mappi=
ng */
     const struct dt_device_node *dt_node;
+    /* Physical IOMMU device structure used to detect supported features *=
/
+    const void *iommu;
     /* Used for dom0 vIOMMU instantiation (1-1 MMIO regions mappings) */
     paddr_t addr;
     /* Used for dom0 vIOMMU instantiation (1-1 MMIO regions mappings) */
@@ -52,7 +54,8 @@ int domain_viommu_init(struct domain *d, uint8_t viommu_t=
ype);
 int viommu_relinquish_resources(struct domain *d);
 uint8_t viommu_get_type(void);
 void add_to_host_iommu_list(paddr_t addr, paddr_t size,
-                            const struct dt_device_node *node);
+                            const struct dt_device_node *node,
+                            const void *iommu);
 void set_cur_viommu(const struct viommu_desc *desc);
 unsigned int domain_viommu_get_num_mmio_handlers(struct domain *d);
=20
@@ -77,7 +80,8 @@ static inline int viommu_relinquish_resources(struct doma=
in *d)
 }
=20
 static inline void __init add_to_host_iommu_list(paddr_t addr, paddr_t siz=
e,
-                                          const struct dt_device_node *nod=
e)
+                                          const struct dt_device_node *nod=
e,
+                                          const void *iommu)
 {
     return;
 }
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index b85ad730db..d2dfb06cae 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -2509,6 +2509,37 @@ err_free_irqs:
 	return ret;
 }
=20
+static void arm_smmu_device_iidr_probe(struct arm_smmu_device *smmu)
+{
+	u32 reg;
+	unsigned int implementer, productid, variant, revision;
+
+	reg =3D readl_relaxed(smmu->base + ARM_SMMU_IIDR);
+	implementer =3D FIELD_GET(IIDR_IMPLEMENTER, reg);
+	productid =3D FIELD_GET(IIDR_PRODUCTID, reg);
+	variant =3D FIELD_GET(IIDR_VARIANT, reg);
+	revision =3D FIELD_GET(IIDR_REVISION, reg);
+
+	switch (implementer) {
+	case IIDR_IMPLEMENTER_ARM:
+		switch (productid) {
+		case IIDR_PRODUCTID_ARM_MMU_600:
+			/* Arm erratum 1076982 */
+			if (variant =3D=3D 0 && revision <=3D 2)
+				smmu->features &=3D ~ARM_SMMU_FEAT_SEV;
+			/* Arm erratum 1209401 */
+			if (variant < 2)
+				smmu->features &=3D ~ARM_SMMU_FEAT_NESTING;
+			break;
+		case IIDR_PRODUCTID_ARM_MMU_700:
+			/* Arm errata 2268618, 2812531 */
+			smmu->features &=3D ~ARM_SMMU_FEAT_NESTING;
+			break;
+		}
+		break;
+	}
+}
+
 static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
 {
 	u32 reg;
@@ -2597,8 +2628,10 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_=
device *smmu)
 	switch (FIELD_GET(IDR0_TTF, reg)) {
 	case IDR0_TTF_AARCH32_64:
 		smmu->ias =3D 40;
+		smmu->features |=3D ARM_SMMU_FEAT_TTF_AARCH32_64;
 		fallthrough;
 	case IDR0_TTF_AARCH64:
+		smmu->features |=3D ARM_SMMU_FEAT_TTF_AARCH64;
 		break;
 	default:
 		dev_err(smmu->dev, "AArch64 table format not supported!\n");
@@ -2607,6 +2640,8 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_d=
evice *smmu)
=20
 	/* ASID/VMID sizes */
 	smmu->vmid_bits =3D reg & IDR0_VMID16 ? 16 : 8;
+	if (reg & IDR0_ASID16)
+		smmu->features |=3D ARM_SMMU_FEAT_ASID_16;
=20
 	/* IDR1 */
 	reg =3D readl_relaxed(smmu->base + ARM_SMMU_IDR1);
@@ -2646,12 +2681,18 @@ static int arm_smmu_device_hw_probe(struct arm_smmu=
_device *smmu)
 	smmu->evtq.max_stalls =3D FIELD_GET(IDR5_STALL_MAX, reg);
=20
 	/* Page sizes */
-	if (reg & IDR5_GRAN64K)
+	if (reg & IDR5_GRAN64K) {
 		smmu->pgsize_bitmap |=3D SZ_64K | SZ_512M;
-	if (reg & IDR5_GRAN16K)
+		smmu->features |=3D ARM_SMMU_FEAT_GRAN64K;
+	}
+	if (reg & IDR5_GRAN16K) {
 		smmu->pgsize_bitmap |=3D SZ_16K | SZ_32M;
-	if (reg & IDR5_GRAN4K)
+		smmu->features |=3D ARM_SMMU_FEAT_GRAN16K;
+	}
+	if (reg & IDR5_GRAN4K) {
 		smmu->pgsize_bitmap |=3D SZ_4K | SZ_2M | SZ_1G;
+		smmu->features |=3D ARM_SMMU_FEAT_GRAN4K;
+	}
=20
 	/* Input address size */
 	if (FIELD_GET(IDR5_VAX, reg) =3D=3D IDR5_VAX_52_BIT)
@@ -2684,15 +2725,46 @@ static int arm_smmu_device_hw_probe(struct arm_smmu=
_device *smmu)
 		fallthrough;
 	case IDR5_OAS_48_BIT:
 		smmu->oas =3D 48;
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_48_BIT;
 		break;
 	}
=20
 	smmu->oas =3D min_t(unsigned long, PADDR_BITS, smmu->oas);
 	smmu->ias =3D max(smmu->ias, smmu->oas);
=20
+	switch (smmu->oas) {
+	case 32:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_32_BIT;
+		break;
+	case 36:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_36_BIT;
+		break;
+	case 40:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_40_BIT;
+		break;
+	case 42:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_42_BIT;
+		break;
+	case 44:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_44_BIT;
+		break;
+	case 48:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_48_BIT;
+		break;
+	case 52:
+		smmu->features |=3D ARM_SMMU_FEAT_OAS_52_BIT;
+		break;
+	}
+
 	/* Xen: Set maximum Stage-2 input size supported by the SMMU. */
 	p2m_restrict_ipa_bits(smmu->ias);
=20
+	if ((smmu->features & ARM_SMMU_FEAT_TRANS_S1) &&
+		(smmu->features & ARM_SMMU_FEAT_TRANS_S2))
+		smmu->features |=3D ARM_SMMU_FEAT_NESTING;
+
+	arm_smmu_device_iidr_probe(smmu);
+
 	dev_info(smmu->dev, "ias %lu-bit, oas %lu-bit (features 0x%08x)\n",
 		 smmu->ias, smmu->oas, smmu->features);
 	return 0;
@@ -2887,9 +2959,8 @@ static int __init arm_smmu_device_probe(struct platfo=
rm_device *pdev)
 	spin_lock(&arm_smmu_devices_lock);
 	list_add(&smmu->devices, &arm_smmu_devices);
 	spin_unlock(&arm_smmu_devices_lock);
-
 	/* Add to host IOMMU list to initialize vIOMMU for dom0 */
-	add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev));
+	add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev), (void *) smmu);
=20
 	return 0;
=20
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug=
h/arm/smmu-v3.h
index f302c69d02..4a912be740 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -60,6 +60,16 @@
 #define IDR5_VAX			GENMASK(11, 10)
 #define IDR5_VAX_52_BIT			1
=20
+#define ARM_SMMU_IIDR			0x18
+#define IIDR_PRODUCTID			GENMASK(31, 20)
+#define IIDR_VARIANT			GENMASK(19, 16)
+#define IIDR_REVISION			GENMASK(15, 12)
+#define IIDR_IMPLEMENTER		GENMASK(11, 0)
+
+#define IIDR_IMPLEMENTER_ARM		0x43b
+#define IIDR_PRODUCTID_ARM_MMU_600	0x483
+#define IIDR_PRODUCTID_ARM_MMU_700	0x487
+
 #define ARM_SMMU_CR0			0x20
 #define CR0_ATSCHK			(1 << 4)
 #define CR0_CMDQEN			(1 << 3)
@@ -603,10 +613,24 @@ struct arm_smmu_device {
 #define ARM_SMMU_FEAT_COHERENCY		(1 << 8)
 #define ARM_SMMU_FEAT_TRANS_S1		(1 << 9)
 #define ARM_SMMU_FEAT_TRANS_S2		(1 << 10)
-#define ARM_SMMU_FEAT_STALLS		(1 << 11)
-#define ARM_SMMU_FEAT_HYP		(1 << 12)
-#define ARM_SMMU_FEAT_STALL_FORCE	(1 << 13)
-#define ARM_SMMU_FEAT_VAX		(1 << 14)
+#define ARM_SMMU_FEAT_NESTING	    (1 << 11)
+#define ARM_SMMU_FEAT_STALLS		(1 << 12)
+#define ARM_SMMU_FEAT_HYP		(1 << 13)
+#define ARM_SMMU_FEAT_STALL_FORCE	(1 << 14)
+#define ARM_SMMU_FEAT_VAX		(1 << 15)
+#define ARM_SMMU_FEAT_ASID_16		(1 << 16)
+#define ARM_SMMU_FEAT_TTF_AARCH64		(1 << 17)
+#define ARM_SMMU_FEAT_TTF_AARCH32_64	(1 << 18)
+#define ARM_SMMU_FEAT_GRAN64K	(1 << 19)
+#define ARM_SMMU_FEAT_GRAN16K	(1 << 20)
+#define ARM_SMMU_FEAT_GRAN4K	(1 << 21)
+#define ARM_SMMU_FEAT_OAS_32_BIT	(1 << 22)
+#define ARM_SMMU_FEAT_OAS_36_BIT	(1 << 23)
+#define ARM_SMMU_FEAT_OAS_40_BIT	(1 << 24)
+#define ARM_SMMU_FEAT_OAS_42_BIT	(1 << 25)
+#define ARM_SMMU_FEAT_OAS_44_BIT	(1 << 26)
+#define ARM_SMMU_FEAT_OAS_48_BIT	(1 << 27)
+#define ARM_SMMU_FEAT_OAS_52_BIT	(1 << 28)
 	u32				features;
=20
 #define ARM_SMMU_OPT_SKIP_PREFETCH	(1 << 0)
diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough=
/arm/viommu.c
index 2b16f11017..b4b91ab1cb 100644
--- a/xen/drivers/passthrough/arm/viommu.c
+++ b/xen/drivers/passthrough/arm/viommu.c
@@ -18,7 +18,8 @@ static bool host_iommu_list_incomplete;
=20
 /* Common function for adding to host_iommu_list */
 void __init add_to_host_iommu_list(paddr_t addr, paddr_t size,
-                            const struct dt_device_node *node)
+                            const struct dt_device_node *node,
+                            const void *iommu)
 {
     struct host_iommu *iommu_data;
     int irq;
@@ -46,6 +47,7 @@ void __init add_to_host_iommu_list(paddr_t addr, paddr_t =
size,
         return;
     }
     iommu_data->irq =3D irq;
+    iommu_data->iommu =3D iommu;
=20
     printk("vIOMMU: Found IOMMU @0x%"PRIx64"\n", addr);
=20
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 7540c6fc54..e3ef68d193 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -6,9 +6,13 @@
 #include <asm/mmio.h>
 #include <asm/viommu.h>
=20
+#include "smmu-v3.h"
+#include "vsmmu-v3.h"
+
 struct virt_smmu {
     struct      domain *d;
     struct      list_head viommu_list;
+    uint32_t    features;
 };
=20
 static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
@@ -30,7 +34,8 @@ static const struct mmio_handler_ops vsmmuv3_mmio_handler=
 =3D {
     .write =3D vsmmuv3_mmio_write,
 };
=20
-static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t siz=
e)
+static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t siz=
e,
+                               uint32_t features)
 {
     struct virt_smmu *smmu;
=20
@@ -39,6 +44,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t =
addr, paddr_t size)
         return -ENOMEM;
=20
     smmu->d =3D d;
+    smmu->features =3D features;
=20
     register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
=20
@@ -51,23 +57,90 @@ static int vsmmuv3_init_single(struct domain *d, paddr_=
t addr, paddr_t size)
 static int domain_vsmmuv3_init(struct domain *d)
 {
     int ret;
+    struct host_iommu *hw_iommu;
+    const struct arm_smmu_device *smmu;
+
+    if ( list_head_is_null(&host_iommu_list) )
+        return -ENODEV;
+
+    /*
+    * Check physical IOMMUs for Stage-1 and nesting support.
+    * vIOMMU exposure is rejected if Stage-1 is not supported or
+    * if both Stage-1 and Stage-2 are supported but nesting is
+    * disabled, e.g. due to hardware errata.
+    */
+    list_for_each_entry(hw_iommu, &host_iommu_list, entry)
+    {
+        smmu =3D (const struct arm_smmu_device *)hw_iommu->iommu;
+
+        if ( !(smmu->features & ARM_SMMU_FEAT_TRANS_S1) )
+        {
+            printk(XENLOG_G_ERR
+                "vSMMUv3: Stage-1 translation not supported by HW IOMMU\n"=
);
+            return -EINVAL;
+        }
+
+        if ( (smmu->features & ARM_SMMU_FEAT_TRANS_S2) &&
+             !(smmu->features & ARM_SMMU_FEAT_NESTING) )
+        {
+            printk(XENLOG_G_ERR
+                "vSMMUv3: Nesting not supported by HW IOMMU\n");
+            return -EINVAL;
+        }
+    }
=20
     INIT_LIST_HEAD(&d->arch.viommu_list);
=20
     if ( domain_use_host_layout(d) )
     {
-        struct host_iommu *hw_iommu;
-
         list_for_each_entry(hw_iommu, &host_iommu_list, entry)
         {
-            ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size)=
;
+            smmu =3D (const struct arm_smmu_device *) hw_iommu->iommu;
+            ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size,
+                                      smmu->features);
             if ( ret )
                 return ret;
         }
     }
     else
     {
-        ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S=
IZE);
+        /*
+         * Require: For non-hardware domains, features must be uniform acr=
oss
+         * physical SMMUs to avoid advertising features that are unsupport=
ed by
+         * certain units.
+         */
+        uint32_t features;
+        hw_iommu =3D list_first_entry(&host_iommu_list, struct host_iommu,=
 entry);
+        smmu =3D (const struct arm_smmu_device *) hw_iommu->iommu;
+        features =3D smmu->features;
+        list_for_each_entry(hw_iommu, &host_iommu_list, entry)
+        {
+            smmu =3D (const struct arm_smmu_device *) hw_iommu->iommu;
+
+            if ( smmu->features !=3D features )
+            {
+                printk(XENLOG_G_ERR
+                       "vSMMUv3: Unsupported HW layout: physical SMMUs mus=
t " \
+                       "have a uniform set of features\n");
+                return -EINVAL;
+            }
+        }
+
+        /*
+         * Reject vIOMMU exposure to non-hardware
+         * domains if the physical SMMU does not support stage-2
+         * (stage-1-only mode is supported for direct-mapped domains only)
+         */
+        if ( !(features & ARM_SMMU_FEAT_TRANS_S2) )
+        {
+            printk(XENLOG_G_ERR
+                   "vSMMUv3: Physical SMMU must support stage-2 translatio=
n "
+                   "for non-hardware domains.\n");
+            return -EINVAL;
+        }
+
+        ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S=
IZE,
+                                  features);
         if ( ret )
             return ret;
     }
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470349.1679130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILB-0001BA-Bh; Tue, 03 Nov 2026 17:30:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470349.1679130; Tue, 03 Nov 2026 17:30:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILB-0001Ao-3V; Tue, 03 Nov 2026 17:30:33 +0000
Received: by outflank-mailman (input) for mailman id 1470349;
 Tue, 03 Nov 2026 17:30:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL8-0000o5-Iz
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL7-004K6F-Vh
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:29 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a35-2eae-0a2a0a5409dd-0a2a4506cece-2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:29 +0100
Received: from [40.107.159.82]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a35-195a-0a2a45060019-286b9f52ebb6-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:29 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:28 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=BhUGCqIZScnX5gXaUjksGapKCcwt+h3wbOJ8TWEh1vZHTVD3ZPyTBht2E8wgdjnvSNf5BFa0Cilui7NsUbAVz0CH1ZbSd9Qy04yepKNzYIpRsBlXM354RPPPH+HlHiunRIMta3T5taOQu5YmyGd3baeB12NMDZJffsjtaXr8LeFXP74s3qSo5X944CWvFrSGNe7ehj64SaYDqIbxfTANLf2P68GBzGTPc6SFjKxAKBfgxZe4GIL6TAoulJi+GrjmTHiqV2sIn0Z+e5ziaJ1DBR9NAq7GGhTN0LMPpSWXCehfS0t1JPXSgk5habJASNRjUOslwT7ZWJewSzwmtD2Rcg==
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=eOEHTlDZMlXhOyrTw/69mQbvtQMKvo3ej5gCMpOCdIc=;
 b=mVLXF2gaaZAHOw4zbpxgy0OoIjjbYRN/mnMdLv/rFdVIJrur41LBJ6PU5vXin5AsDZZy6zpsD8gPAwm9/yJF4Z9VF8YBEkRCj9R3sSk1DOdSvsFxymYihiU1jhAHmGLhGuulbcBsHGgWpi8K+nLesZOq7VIrpgdvIjF+m2FU4ehLEW4Qtl8kgDes4PZVUfTQbEiYAReCAyPDxS2XVQedGYsh0PGwc3R8cvMHFa6k6O7/iKY/tDm93q7yu6SKSt8XcTKni0+TFlya3wnNm9E2E+fPJsCHLA2ZXPZSGQAdAwbEFS7g3LuIMhZaL3uQLRQyMP2MD3PEfSl+13DtqtUCEQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eOEHTlDZMlXhOyrTw/69mQbvtQMKvo3ej5gCMpOCdIc=;
 b=RC1s0ZIvO1vSqrBROMjOnMvxTNB6pxRpAfWXRmJfObdmt7QYs6bYfvMDNjVp4lvUJiN3z+YY1RHmof0/Xj8Qqw43VWH9MVgExJ0qf2KSdfM4mItXWu7WkSzHUtMRO5+HAV+asG2hpU8LAHHNewRVdXFbp+yLoz3r986xpLTGKoA1YdQVa0WFAMbJyGj5IXPmigMcFi1k5c2iMe7vJPtpWlgUF1tHnR3aFk1yezk6zE/fTXOoFtM5flXZi0e0Yc0Ky3jp6HUB5SmfMUJLp8K/ku6VRMaE/5yBKRdx/g5Q0PXiJTrW/IWlRZ/IdrV/CM4HarADoBxy7QNUH0PynZFXHw==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 08/22] xen/arm: vsmmuv3: Add support for registers
 emulation
Thread-Topic: [PATCH v5 08/22] xen/arm: vsmmuv3: Add support for registers
 emulation
Thread-Index: AQHda7kEfjyU8g9/U0W6seOCh9dclQ==
Date: Tue, 3 Nov 2026 17:30:27 +0000
Message-ID:
 <4f7bd0e5cbe5e46f3ba12a7276ca9a49635d6b95.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 7f0ca6ea-56df-45b8-ad16-08df39d026f6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 7f3Mwi2WF8Vb6DgtlslGxdizZOHK5UcKATLzLzFtXB4C6FApLwBzfwvoDvUaZlvBrtKt9x+yIQ8vRu/50/lY/BwAaqbUyBDdhSsA/XMthlFciBbFbB25aKbht9U+CgXVqyxnnAjWY79twx15J50ds8gdn84KUd9hOw9V0CJAla2A4zjln3V4v/iVnjnLWa9R3W39zuzUm8WuXpnDX63cOmyjfN84Qo8+r2HwiRu4qU/FxjR+bNyYY43kL1jmbOxTEy0GfB2ql0cFKRNviWML45kSo79GN0+E9alskNRDAVYfWq3TDMrf0KeOHlkl+1KZtxBjAYBow03HyRDx+c4bxVBUWWNq928cNHcNoPvUj0H+BshI2tKF2dbvXqGSkTmAta3CCeZ1d2vmyyHQnsReVpgBGR3or1fSEs/rd8umlgialA2pRh7Q3uiksvJtLxEkhb/CL0moe/C9clnVzObRO7SV/hpScfdhUH1lyKlCZd8y8NmjXLmWmVaUiiuovtay76YUye5nO+rnV/spxpkyvRN3/OKeyhdFOyutQ/FyCKIOmRDul0ghGV69jqEkfefogmAjiVumbafdJFeuWAU8H8iEetmpOGqHRSTnZ8OgQbsKbgrOZUg2ZlkjzfW4LJOYHkck65w7640KGYCPzZMq5MMjEmxqzbijxbU5YcL8vqeVVt13epTqgCKNVBwF15L4Sw49vv69OODIGuX6MOGxvg==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?UCe/vye+4D8+AAxxIEkOsrmhRfA9nHrEbOjU2OtlRptJgnizt+nbeKwehN?=
 =?iso-8859-1?Q?1bldR/3ydCPXgPVjnMGyihTrMy75+yZe+Ly6RM0cGNE6ngAFpE8lwZOsZh?=
 =?iso-8859-1?Q?I9421f1e859YANAGL0Qy3/uY/Zge5omuwAzAdkjSFRhdrhFu+/fgM36NEG?=
 =?iso-8859-1?Q?3x0Bv3WsBriJ5vYGgpUaqqJp374xVHPq0B5Qx3CiUm12V7xb4S4il+vBNa?=
 =?iso-8859-1?Q?9KOPuacMD8FqDYiJUc1/qYbKjlUbc3ETUTYZDTt9DJs+Z+Hf7PJzNQjDMg?=
 =?iso-8859-1?Q?lLOotAO7uX3tQa4YMwHmS54RMLkwfxhcp3EwKOBYl2fxHzwaPrx1NxsliL?=
 =?iso-8859-1?Q?jOAtByPu9lZ7iD3n9L2qvYJcu5XJPfBX8MsH17dDXYucAee2P0u86FOZ0O?=
 =?iso-8859-1?Q?Cq+JfBE8aaNVRsbddn98OJI+IR1m3UOmkcJY5Jfe8VI0yve5sRxD0R582b?=
 =?iso-8859-1?Q?6o9AEjQFgeZvbMA5qzZc0gvlUrCv/gEsiImQjdZviueG1ZCD3wnaTOhAq6?=
 =?iso-8859-1?Q?4Iw2M+QrqpoMHBiW286WDMVocCZy2pea+6ONRES4jANOUBWzQKieEXFbnV?=
 =?iso-8859-1?Q?dOyMBqUxxRAjwnttNcB7avUoxycJAO2D91yALnmv2v880E8scwLyazcjog?=
 =?iso-8859-1?Q?bxs4hve8ELVU+1R9RsZcC8vY3kPueh7XFoIi3i8kP9O5GLRRK1UImxHdPZ?=
 =?iso-8859-1?Q?fA+RKPDmIYfsOTgYnzRdCqXCdRVP6zVB2l3e2LPiENE0e1LJK2P0axR4vM?=
 =?iso-8859-1?Q?zX8Gnu/BZrOcQyXsy+k1si3l9jHC3bGaA0TTYY/deJINWxo5lc+zI2jqq3?=
 =?iso-8859-1?Q?VK39VJSq1Nfp51Xg05S/fYdkI15R7YFuHrbqj6kSbQ/Bu5Kh/DttIz0F1N?=
 =?iso-8859-1?Q?AAEgnd8bt8X6iVIga6YoB/llD+A7cijZ0gl4jd1HTm4SwYR8PY/+D+B2VD?=
 =?iso-8859-1?Q?rdBTQwCVKruf2DtVeBpAcU3oPEXVyCih7Z75GbeH1Jl1wKTbmmQR5x8GiU?=
 =?iso-8859-1?Q?fQ7xm+ILJ5KBN6ItYmQ/zyjQECuqPyn/DOxR6hNb9Rqzm213gpfcU0i/Y8?=
 =?iso-8859-1?Q?Bx+2f1D01tuKxEkfTWvTKQ8q7SJsQ5PT0B+6ayC5ykVIJgrOFp6aRFTatx?=
 =?iso-8859-1?Q?D/t1lbiA8Ao6mADlBDPdFGpebv+G3I+9NauamMkrMv7A+InCtkHXJ0DMmF?=
 =?iso-8859-1?Q?4ES96m6YBzXHLJRk+Q1/dE+vIxKtlwsGurWHsw2ovJ2Y50I6S/LoWbwPHE?=
 =?iso-8859-1?Q?e+ScKeAgH6CUAhEVTAtkBtMHT+ETsp9iRAPCRBOInJV0FoYkRSTgU/wexx?=
 =?iso-8859-1?Q?0grgsfD0jz6y4KgqwzDAVvWn1Tsh5QA8tzVVm4LiVsAlySShv9n2s29e5w?=
 =?iso-8859-1?Q?VRRNTTR319xFVDNj5eq01lQe7wwc9E+JJYYbDAwRIBJKUEO/hRZ93lngol?=
 =?iso-8859-1?Q?0wwOF/FlO2Zj0JeyfoQvwTOYe55GDCQN0f6mAQIiPLkYEcMvalc5N/2HE4?=
 =?iso-8859-1?Q?KsGg3TFtGUUGq9izBCvgVBjIqFzF/BLgDRfu8axRI6hOQYf1pA4fvcE+bh?=
 =?iso-8859-1?Q?gDo8Wp5e6hFdCsHB2vVQJgu1rMU7wOoQZGxXHAFMcEFyozAx+JhMb0TO4Z?=
 =?iso-8859-1?Q?qAs8LGnDXNEFj9vbxd08CMgLgIPnFPTinG69RuTaLATAX+43hmrGaQZEiC?=
 =?iso-8859-1?Q?T2U21U0+dW+McQ5goUvIWp9946y29HQFdlEJWV5VTRQI/Pp2y/m+7+L3Vx?=
 =?iso-8859-1?Q?z8gi8XkKuxvYan4ygswAL0cfCJx85o7rxkyJQFSnxQTOBc0j3EVuOn+tdA?=
 =?iso-8859-1?Q?6L9YLMCI2g=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7f0ca6ea-56df-45b8-ad16-08df39d026f6
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:27.9326
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: VJcF/ymvqL6tpX50pZxpkWG7zfkO3xrCkV0MBDy1r6nthf6iVYLzn8d0Wo+oX5ZjYQTefGnN+PkaaCfkEuGS0Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727029-F560A77B-6D5E1728/0/0
X-purgate-type: clean
X-purgate-size: 24134

From: Rahul Singh <rahul.singh@arm.com>

Add initial support for various emulated registers for virtual SMMUv3
for guests and also add support for virtual cmdq and eventq.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/vsmmu-v3.c | 573 ++++++++++++++++++++++++-
 1 file changed, 571 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index e3ef68d193..070fe7af79 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -1,31 +1,589 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
=20
+/*
+ * IOMMU stage-1 emulation for ARM SMMUv3.
+ *
+ * TODO: Using ARM generic implementer/product/variant to avoid activating
+ * errata workarounds in the guest driver due to emulation layer.
+ * This needs to be fully handled in the future.
+ */
+
 #include <xen/param.h>
 #include <xen/sched.h>
 #include <xen/domain-layout.h>
 #include <asm/mmio.h>
+#include <asm/vgic-emul.h>
 #include <asm/viommu.h>
+#include <asm/vreg.h>
=20
 #include "smmu-v3.h"
 #include "vsmmu-v3.h"
=20
+/* Register Definition */
+#define ARM_SMMU_IDR2       0x8
+#define ARM_SMMU_IDR3       0xc
+#define ARM_SMMU_IDR4       0x10
+#define IDR0_TERM_MODEL     (1 << 26)
+#define IDR3_RIL            (1 << 10)
+/* Only CMDQ, EVENTQ and SMMUEN supported */
+#define CR0_RESERVED        0xFFFFFFF2U
+/* TODO: Right now only 16-bit SID size is supported */
+#define SMMU_IDR1_SIDSIZE   16
+/* The CMDQ/EVTQ sizes are currently set to the architectural maximum. */
+#define SMMU_CMDQS          19
+#define SMMU_EVTQS          19
+#define DWORDS_BYTES        8
+
+/* virtual smmu queue */
+struct arm_vsmmu_queue {
+    uint64_t    q_base; /* base register */
+    uint32_t    prod;
+    uint32_t    cons;
+    uint8_t     ent_size;
+    uint8_t     max_n_shift;
+};
+
 struct virt_smmu {
     struct      domain *d;
     struct      list_head viommu_list;
     uint32_t    features;
+    paddr_t     addr;
+    uint32_t    cr[3];
+    uint32_t    cr0ack;
+    uint32_t    gerror;
+    uint32_t    gerrorn;
+    uint32_t    strtab_base_cfg;
+    uint64_t    strtab_base;
+    uint32_t    irq_ctrl;
+    uint64_t    gerror_irq_cfg0;
+    uint64_t    evtq_irq_cfg0;
+    struct      arm_vsmmu_queue evtq, cmdq;
+    spinlock_t  cmd_queue_lock;
+    spinlock_t  evt_queue_lock;
+    spinlock_t  gerror_lock;
+    spinlock_t  cr0_lock;
+    spinlock_t  cr1_lock;
+    spinlock_t  cr2_lock;
+    spinlock_t  strtab_cfg_lock;
+    spinlock_t  irq_cfg_lock;
 };
=20
+/* Helper functions */
+static inline bool smmu_get_smmu_enabled(struct virt_smmu *smmu)
+{
+    bool enabled;
+
+    spin_lock(&smmu->cr0_lock);
+    enabled =3D FIELD_GET(CR0_SMMUEN, smmu->cr[0]);
+    spin_unlock(&smmu->cr0_lock);
+
+    return enabled;
+}
+
+static inline bool smmu_get_cmdq_enabled(struct virt_smmu *smmu)
+{
+    bool enabled;
+
+    spin_lock(&smmu->cr0_lock);
+    enabled =3D FIELD_GET(CR0_CMDQEN, smmu->cr[0]);
+    spin_unlock(&smmu->cr0_lock);
+
+    return enabled;
+}
+
+static inline bool smmu_get_evtq_enabled(struct virt_smmu *smmu)
+{
+    bool enabled;
+
+    spin_lock(&smmu->cr0_lock);
+    enabled =3D FIELD_GET(CR0_EVTQEN, smmu->cr[0]);
+    spin_unlock(&smmu->cr0_lock);
+
+    return enabled;
+}
+
 static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
                               register_t r, void *priv)
 {
-    BUG_ON("unimplemented");
+    struct virt_smmu *smmu =3D priv;
+    uint64_t reg;
+    uint32_t reg32;
+    struct hsr_dabt dabt =3D info->dabt;
+    uint64_t offset =3D info->gpa - smmu->addr;
+
+    if ( offset & 0x10000 )
+    {
+        /* page 1 */
+        switch ( info->gpa & 0xffff )
+        {
+        case VREG32(ARM_SMMU_EVTQ_PROD):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            /*  Write allowed only when SMMU_CR0.EVTQEN =3D=3D 0 */
+            if ( smmu_get_evtq_enabled(smmu) )
+                break;
+            spin_lock(&smmu->evt_queue_lock);
+            reg32 =3D smmu->evtq.prod;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->evtq.prod =3D reg32;
+            spin_unlock(&smmu->evt_queue_lock);
+            break;
+        case VREG32(ARM_SMMU_EVTQ_CONS):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->evt_queue_lock);
+            reg32 =3D smmu->evtq.cons;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->evtq.cons =3D reg32;
+            spin_unlock(&smmu->evt_queue_lock);
+            break;
+        default:
+            printk(XENLOG_G_ERR
+                "%pd: vSMMUv3: unhandled write r%d offset %"PRIpaddr"\n",
+                v->domain, info->dabt.reg, (unsigned long)info->gpa & 0xff=
ff);
+            return IO_HANDLED;
+        }
+    }
+    else
+    {
+        /* page 0 */
+        switch ( info->gpa & 0xffff )
+        {
+        case VREG32(ARM_SMMU_CR0):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr0_lock);
+            reg32 =3D smmu->cr[0];
+            vreg_reg32_update(&reg32, r, info);
+            smmu->cr[0] =3D reg32;
+            smmu->cr0ack =3D reg32 & ~CR0_RESERVED;
+            spin_unlock(&smmu->cr0_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CR1):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr1_lock);
+            reg32 =3D smmu->cr[1];
+            vreg_reg32_update(&reg32, r, info);
+            smmu->cr[1] =3D reg32;
+            spin_unlock(&smmu->cr1_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CR2):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr2_lock);
+            reg32 =3D smmu->cr[2];
+            vreg_reg32_update(&reg32, r, info);
+            smmu->cr[2] =3D reg32;
+            spin_unlock(&smmu->cr2_lock);
+            break;
+
+        case VREG64(ARM_SMMU_STRTAB_BASE):
+            /*  Must only be written when SMMU_CR0.SMMUEN =3D=3D 0, otherw=
ise ignore */
+            if ( smmu_get_smmu_enabled(smmu) )
+                break;
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->strtab_cfg_lock);
+            reg =3D smmu->strtab_base;
+            vreg_reg64_update(&reg, r, info);
+            smmu->strtab_base =3D reg;
+            spin_unlock(&smmu->strtab_cfg_lock);
+            break;
+
+        case VREG32(ARM_SMMU_STRTAB_BASE_CFG):
+            /*  Must only be written when SMMU_CR0.SMMUEN =3D=3D 0, otherw=
ise ignore */
+            if ( smmu_get_smmu_enabled(smmu) )
+                break;
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->strtab_cfg_lock);
+            reg32 =3D smmu->strtab_base_cfg;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->strtab_base_cfg =3D reg32;
+            spin_unlock(&smmu->strtab_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_CMDQ_BASE):
+            /*  Must only be written when SMMU_CR0.CMDQEN =3D=3D 0, otherw=
ise ignore */
+            if ( smmu_get_cmdq_enabled(smmu) )
+                break;
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            reg =3D smmu->cmdq.q_base;
+            vreg_reg64_update(&reg, r, info);
+            smmu->cmdq.q_base =3D reg;
+            smmu->cmdq.max_n_shift =3D FIELD_GET(Q_BASE_LOG2SIZE, smmu->cm=
dq.q_base);
+            if ( smmu->cmdq.max_n_shift > SMMU_CMDQS )
+                smmu->cmdq.max_n_shift =3D SMMU_CMDQS;
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CMDQ_PROD):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            reg32 =3D smmu->cmdq.prod;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->cmdq.prod =3D reg32;
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CMDQ_CONS):
+            /*  Must only be written when SMMU_CR0.CMDQEN =3D=3D 0, otherw=
ise ignore */
+            if ( smmu_get_cmdq_enabled(smmu) )
+                break;
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            reg32 =3D smmu->cmdq.cons;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->cmdq.cons =3D reg32;
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG64(ARM_SMMU_EVTQ_BASE):
+            /*  Must only be written when SMMU_CR0.EVTQEN =3D=3D 0, otherw=
ise ignore */
+            if ( smmu_get_evtq_enabled(smmu) )
+                break;
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->evt_queue_lock);
+            reg =3D smmu->evtq.q_base;
+            vreg_reg64_update(&reg, r, info);
+            smmu->evtq.q_base =3D reg;
+            smmu->evtq.max_n_shift =3D FIELD_GET(Q_BASE_LOG2SIZE, smmu->ev=
tq.q_base);
+            if ( smmu->evtq.max_n_shift > SMMU_EVTQS )
+                smmu->evtq.max_n_shift =3D SMMU_EVTQS;
+            spin_unlock(&smmu->evt_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_IRQ_CTRL):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            reg32 =3D smmu->irq_ctrl;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->irq_ctrl =3D reg32;
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            reg =3D smmu->gerror_irq_cfg0;
+            vreg_reg64_update(&reg, r, info);
+            smmu->gerror_irq_cfg0 =3D reg;
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            reg =3D smmu->evtq_irq_cfg0;
+            vreg_reg64_update(&reg, r, info);
+            smmu->evtq_irq_cfg0 =3D reg;
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG32(ARM_SMMU_GERRORN):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->gerror_lock);
+            reg32 =3D smmu->gerrorn;
+            vreg_reg32_update(&reg32, r, info);
+            smmu->gerrorn =3D reg32;
+            spin_unlock(&smmu->gerror_lock);
+            break;
+
+        default:
+            printk(XENLOG_G_ERR
+                "%pd: vSMMUv3: unhandled write r%d offset %"PRIpaddr"\n",
+                v->domain, info->dabt.reg, (unsigned long)info->gpa & 0xff=
ff);
+            return IO_HANDLED;
+        }
+    }
+
+    return IO_HANDLED;
+
+ bad_width:
+    gprintk(XENLOG_G_ERR,
+            "%pd: vSMMUv3: bad write width %d r%d offset %"PRIpaddr"\n",
+            v->domain, dabt.size, dabt.reg, info->gpa & 0xffff);
     return IO_HANDLED;
 }
=20
 static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info,
                              register_t *r, void *priv)
 {
-    BUG_ON("unimplemented");
+    struct virt_smmu *smmu =3D priv;
+    uint64_t reg;
+    struct hsr_dabt dabt =3D info->dabt;
+    uint64_t offset =3D info->gpa - smmu->addr;
+
+    if ( offset & 0x10000 )
+    {
+        /* page 1 */
+        switch ( info->gpa & 0xffff )
+        {
+            case VREG32(ARM_SMMU_EVTQ_PROD):
+                if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+                spin_lock(&smmu->evt_queue_lock);
+                *r =3D vreg_reg32_extract(smmu->evtq.prod, info);
+                spin_unlock(&smmu->evt_queue_lock);
+                break;
+
+            case VREG32(ARM_SMMU_EVTQ_CONS):
+                if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+                spin_lock(&smmu->evt_queue_lock);
+                *r =3D vreg_reg32_extract(smmu->evtq.cons, info);
+                spin_unlock(&smmu->evt_queue_lock);
+                break;
+
+            default:
+                printk(XENLOG_G_ERR
+                    "%pd: vSMMUv3: unhandled read r%d offset %"PRIpaddr"\n=
",
+                    v->domain, info->dabt.reg, (unsigned long)info->gpa & =
0xffff);
+                return IO_HANDLED;
+        }
+    }
+    else
+    {
+        /* page 0 */
+        switch ( info->gpa & 0xffff )
+        {
+        case VREG32(ARM_SMMU_IDR0):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            /*
+             * Emulated SMMU capabilities.
+             *
+             * Some architectural capabilities are currently not implement=
ed
+             * by the stage-1 emulation layer or underlying Xen SMMU suppo=
rt,
+             * therefore they are not advertised atm even if supported by =
the HW
+             */
+            reg  =3D FIELD_PREP(IDR0_S1P, 1) |
+                /*
+                 * TODO: Coherent access not supported by the emulation at=
m.
+                 * Guest must perform explicit cache clean
+                 */
+                FIELD_PREP(IDR0_COHACC, 0) |
+                /* Transaction stall on fault not implemented */
+                FIELD_PREP(IDR0_STALL_MODEL, 1) |
+                /* Terminating a transaction with RAZ/WI behavior not impl=
emented */
+                FIELD_PREP(IDR0_TERM_MODEL, 1);
+
+            /* HW reflected capabilities */
+            reg |=3D FIELD_PREP(IDR0_ST_LVL,
+                            smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB ?
+                            1 : 0);
+            reg |=3D FIELD_PREP(IDR0_TTF,
+                            smmu->features & ARM_SMMU_FEAT_TTF_AARCH32_64 =
?
+                            IDR0_TTF_AARCH32_64 : IDR0_TTF_AARCH64);
+
+            reg |=3D FIELD_PREP(IDR0_ASID16,
+                            smmu->features & ARM_SMMU_FEAT_ASID_16 ? 1 : 0=
);
+            if ( (smmu->features & ARM_SMMU_FEAT_TT_LE) &&
+                (smmu->features & ARM_SMMU_FEAT_TT_BE) )
+                reg |=3D FIELD_PREP(IDR0_TTENDIAN, IDR0_TTENDIAN_MIXED);
+            else if ( smmu->features & ARM_SMMU_FEAT_TT_LE )
+                reg |=3D FIELD_PREP(IDR0_TTENDIAN, IDR0_TTENDIAN_LE);
+    #ifdef __BIG_ENDIAN
+            else if ( smmu->features & ARM_SMMU_FEAT_TT_BE )
+                reg |=3D FIELD_PREP(IDR0_TTENDIAN, IDR0_TTENDIAN_BE);
+    #endif
+            *r =3D vreg_reg32_extract(reg, info);
+            break;
+
+        case VREG32(ARM_SMMU_IDR1):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            reg  =3D FIELD_PREP(IDR1_SIDSIZE, SMMU_IDR1_SIDSIZE) |
+                FIELD_PREP(IDR1_CMDQS, SMMU_CMDQS) |
+                FIELD_PREP(IDR1_EVTQS, SMMU_EVTQS);
+            *r =3D vreg_reg32_extract(reg, info);
+            break;
+
+        case VREG32(ARM_SMMU_IDR2):
+            goto read_reserved;
+
+        case VREG32(ARM_SMMU_IDR3):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            reg =3D 0;
+            *r =3D vreg_reg32_extract(reg, info);
+            break;
+
+        case VREG32(ARM_SMMU_IDR4):
+            goto read_impl_defined;
+
+        case VREG32(ARM_SMMU_IDR5):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            reg =3D 0;
+            if (smmu->features & ARM_SMMU_FEAT_GRAN64K)
+                reg |=3D IDR5_GRAN64K;
+            if (smmu->features & ARM_SMMU_FEAT_GRAN16K)
+                reg |=3D IDR5_GRAN16K;
+            if (smmu->features & ARM_SMMU_FEAT_GRAN4K)
+                reg |=3D IDR5_GRAN4K;
+
+            if (smmu->features & ARM_SMMU_FEAT_OAS_32_BIT)
+                reg |=3D IDR5_OAS_32_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_36_BIT)
+                reg |=3D IDR5_OAS_36_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_40_BIT)
+                reg |=3D IDR5_OAS_40_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_42_BIT)
+                reg |=3D IDR5_OAS_42_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_44_BIT)
+                reg |=3D IDR5_OAS_44_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_48_BIT)
+                reg |=3D IDR5_OAS_48_BIT;
+            if (smmu->features & ARM_SMMU_FEAT_OAS_52_BIT)
+                reg |=3D IDR5_OAS_52_BIT;
+
+            *r =3D vreg_reg32_extract(reg, info);
+            break;
+
+        case VREG32(ARM_SMMU_IIDR):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            /* Use generic ARM IIDR value to avoid activating errata worka=
rounds */
+            reg  =3D FIELD_PREP(IIDR_IMPLEMENTER, IIDR_IMPLEMENTER_ARM) |
+                FIELD_PREP(IIDR_REVISION, 0) |
+                FIELD_PREP(IIDR_VARIANT, 0) |
+                FIELD_PREP(IIDR_PRODUCTID, 0);
+            *r =3D vreg_reg32_extract(reg, info);
+            break;
+
+        case VREG32(ARM_SMMU_CR0):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr0_lock);
+            *r =3D vreg_reg32_extract(smmu->cr[0], info);
+            spin_unlock(&smmu->cr0_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CR0ACK):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr0_lock);
+            *r =3D vreg_reg32_extract(smmu->cr0ack, info);
+            spin_unlock(&smmu->cr0_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CR1):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr1_lock);
+            *r =3D vreg_reg32_extract(smmu->cr[1], info);
+            spin_unlock(&smmu->cr1_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CR2):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cr2_lock);
+            *r =3D vreg_reg32_extract(smmu->cr[2], info);
+            spin_unlock(&smmu->cr2_lock);
+            break;
+
+        case VREG64(ARM_SMMU_STRTAB_BASE):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->strtab_cfg_lock);
+            *r =3D vreg_reg64_extract(smmu->strtab_base, info);
+            spin_unlock(&smmu->strtab_cfg_lock);
+            break;
+
+        case VREG32(ARM_SMMU_STRTAB_BASE_CFG):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->strtab_cfg_lock);
+            *r =3D vreg_reg32_extract(smmu->strtab_base_cfg, info);
+            spin_unlock(&smmu->strtab_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_CMDQ_BASE):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            *r =3D vreg_reg64_extract(smmu->cmdq.q_base, info);
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CMDQ_PROD):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            *r =3D vreg_reg32_extract(smmu->cmdq.prod, info);
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_CMDQ_CONS):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->cmd_queue_lock);
+            *r =3D vreg_reg32_extract(smmu->cmdq.cons, info);
+            spin_unlock(&smmu->cmd_queue_lock);
+            break;
+
+        case VREG64(ARM_SMMU_EVTQ_BASE):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->evt_queue_lock);
+            *r =3D vreg_reg64_extract(smmu->evtq.q_base, info);
+            spin_unlock(&smmu->evt_queue_lock);
+            break;
+
+        case VREG32(ARM_SMMU_IRQ_CTRL):
+        case VREG32(ARM_SMMU_IRQ_CTRLACK):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            *r =3D vreg_reg32_extract(smmu->irq_ctrl, info);
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            *r =3D vreg_reg64_extract(smmu->gerror_irq_cfg0, info);
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0):
+            if ( dabt.size !=3D DABT_DOUBLE_WORD && dabt.size !=3D DABT_WO=
RD )
+                goto bad_width;
+            spin_lock(&smmu->irq_cfg_lock);
+            *r =3D vreg_reg64_extract(smmu->evtq_irq_cfg0, info);
+            spin_unlock(&smmu->irq_cfg_lock);
+            break;
+
+        case VREG32(ARM_SMMU_GERROR):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->gerror_lock);
+            *r =3D vreg_reg32_extract(smmu->gerror, info);
+            spin_unlock(&smmu->gerror_lock);
+            break;
+
+        case VREG32(ARM_SMMU_GERRORN):
+            if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            spin_lock(&smmu->gerror_lock);
+            *r =3D vreg_reg32_extract(smmu->gerrorn, info);
+            spin_unlock(&smmu->gerror_lock);
+            break;
+
+        default:
+            printk(XENLOG_G_ERR
+                "%pd: vSMMUv3: unhandled read r%d offset %"PRIpaddr"\n",
+                v->domain, info->dabt.reg, (unsigned long)info->gpa & 0xff=
ff);
+            return IO_HANDLED;
+        }
+    }
+    return IO_HANDLED;
+
+ read_impl_defined:
+    printk(XENLOG_G_DEBUG
+           "%pd: vSMMUv3: RAZ on implementation defined register offset %"=
PRIpaddr"\n",
+           v->domain, info->gpa & 0xffff);
+    *r =3D 0;
+    return IO_HANDLED;
+
+ read_reserved:
+    printk(XENLOG_G_DEBUG
+           "%pd: vSMMUv3: RAZ on reserved register offset %"PRIpaddr"\n",
+           v->domain, info->gpa & 0xffff);
+    *r =3D 0;
+    return IO_HANDLED;
+ bad_width:
+    gprintk(XENLOG_G_ERR,
+            "%pd: vSMMUv3: bad read width %d r%d offset %"PRIpaddr"\n",
+            v->domain, dabt.size, dabt.reg, info->gpa & 0xffff);
     return IO_HANDLED;
 }
=20
@@ -45,6 +603,17 @@ static int vsmmuv3_init_single(struct domain *d, paddr_=
t addr, paddr_t size,
=20
     smmu->d =3D d;
     smmu->features =3D features;
+    smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES;
+    smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES;
+
+    spin_lock_init(&smmu->cmd_queue_lock);
+    spin_lock_init(&smmu->evt_queue_lock);
+    spin_lock_init(&smmu->gerror_lock);
+    spin_lock_init(&smmu->cr0_lock);
+    spin_lock_init(&smmu->cr1_lock);
+    spin_lock_init(&smmu->cr2_lock);
+    spin_lock_init(&smmu->strtab_cfg_lock);
+    spin_lock_init(&smmu->irq_cfg_lock);
=20
     register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470351.1679134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILB-0001D2-Nj; Tue, 03 Nov 2026 17:30:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470351.1679134; Tue, 03 Nov 2026 17:30:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILB-0001By-CN; Tue, 03 Nov 2026 17:30:33 +0000
Received: by outflank-mailman (input) for mailman id 1470351;
 Tue, 03 Nov 2026 17:30:31 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOIL9-0000yP-Io
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIL8-00F7AL-Vk
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:30 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a36-bab6-0a2a0a5309dd-0a2a450498fe-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:30 +0100
Received: from [52.101.84.141]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a36-b57f-0a2a45040019-3465548d7ed2-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:30 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:29 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=YjFXjqDH3qLHU/BXyMVIK21QjNWSX2A/J66g2v8M8NZNf2+7+ZvbTL1S0FoGoduTfbH+G6gCACjN6iCwJ9wbp/eU9yhGkTrZK3QSE1pO2Bt2QJ3h7kDwa9NYbfjjLbQKxLchjG1NMpARMdn/DcOBSo4qLORAoPG1bXJqkmVxec+yOUs+pMqzrMGbNXWj49kEJFcjZHrooxZNos6VIoboJu0AUPsp4UsGGFvEywPF7KgaPTrHrZ0RiqDhGVkgs1J2wQyRArdF21VW76oXArlcaNKE5N6B8niOagWxMtt7e9sHQoZdtVfX7DmiIzNlmB1XR+QFeHWzMYn2leVN8iH08w==
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=/aSmDKvTyhhBE06rL9j3vIfp1l/Y0pxqK6QYGI4W0tE=;
 b=DP1udCdRpk4ORffCnmMr0KxZCk1e/+quFZfJ3mhxKbXCz4ILgE/oKUJB4XXJC03uNncBxXhRSP9PeOdL5QDfJAuo9MKteWUOHexCSId0M7eMVVr4ZT5s4yUdGztP81sGxtAqkOir3v6KakoPpv0S+6v6iNM7ulXerg5PhB8tjrsIMtUJ6/NsbBqbQLu90iuv6kG2kjoJieVzW+ZuOT0s9tJB8ZPeO5stRSAZm9WT4A8eFakL0SVgXwlvI/dsK5E5rCE1fhsG4igDxbeh/c2T7G+6trBIH79Zuxgjt6QY7yRY8LOx+cJGgK9fT6iwKjqHhBBAR/76Ae0vba9a81oDyQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/aSmDKvTyhhBE06rL9j3vIfp1l/Y0pxqK6QYGI4W0tE=;
 b=BNGMjTsCcA6D3QTU4HWlgI/HoXQAjjYKBijDlwbGBxjg2kXWj0qq/I5X8Ppkub3fc+V/hfSdGqncTVIgozlXlTb4ITMdV3KoxSrPksEd9kYjZOOFfib1o/3AdvPeHXKFUmuCgXpkf1cr1HQwEcJcjPKFAPz8UJKOESDxapVpBc5gosnRBpZeHTfptLXz2VidP0h8RbkwORXBlmXLz/6C7+Gut4FsJ+FkceYX7ThFm0Sy6koFwznh7iV9Ffd2fYE018EZMF+7TqG3PuIejNkvJjm+emkqQvBle8GVB+KGLWI/RsLTlqyZBhKhB6XSwRs2JhKjhpDAAISnpK9hBwjwBw==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 09/22] xen/arm: vsmmuv3: Add support for cmdqueue handling
Thread-Topic: [PATCH v5 09/22] xen/arm: vsmmuv3: Add support for cmdqueue
 handling
Thread-Index: AQHda7kFdgqbLxwgaEeMi2KRx7G61A==
Date: Tue, 3 Nov 2026 17:30:29 +0000
Message-ID:
 <0488c1435bfadbbf95e0f17f3a2a62ea26d1aa85.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 0d73df7e-2a14-44c9-97d1-08df39d027be
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 Su9gskgiLnH8l/WjCqV4Wq3P1FaCQKb5LOunhJQpa10V3KxNqDLwdj+yAHv6VRJ5Fhh2bWPu2RVBvOAi8TTnyaXKhhJ4AAIJDTItdWzShw8unY2WRctz+Ruhvkul2Sce9nWQeg7SUp8r7tmehnSoi15j3/aURZLxuCUlNcolIb7u+VdvITc6M8y9R1j0UNkoy05Fh6a6mY2AE86wkXEfVAX9B9qbgOZx4yfDKIwQiuk6veFbzX3ip3E4YHkdshBtTk5AKZ/4O0eRhg7khXmA9lIXXwJqlcFYNde+VE0AMyhwspvDGvIw02D7+dnFOhEJKONliz7eDbdy/RR4tCjJgDvue7Ts+7v7OAvhSyWvap4DzA4aIgTh+qc7FKYpHNOJI2vvnttpKUe85/ai6fz3fhV5DKv7OxspMVfRGiyMJZHZvFRN14lh7S7tSCc6ucUj2IsS9ioyJzJ8iXqiGNq1tLPOHFbcuyrZQHwgvOljitcAMpxPqwj5ZFL+FRm/HFXNxb5fl3lb/IqLJYqFOUjB+2cmpKLFRBi8Cqs/Ylyt8eGmBRZPcLpmAR8OFqHOVWm6Ls9gKI4NNM2o+FXSpiJdxsN6f/T9EckXiVNJ9pkr/UkH7ekEJVdG/vBmnDypqTXwjqGZ59aPdL/oGtIIOG1ENJFOSvUaEWkfs+nmAG9/lx6K56EzzHWBxDCv5ajbcdPzhA65X/uwvuNIlo57SI5lM0uVmuiCQZRydONpW5dy+SM=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?h4Qd8YrPBzn88lh4RS/ZMNaCEUuTGhD33l5acUWGJP2BP0g6CS2SJjVDL7?=
 =?iso-8859-1?Q?52KFl7cBCncfBwa6T+3Z666e97RO8yIQ/K9OEORq/N0Pz+JKo6LBUQoIzM?=
 =?iso-8859-1?Q?Zl6+sbinVLotWsrC4nkYe3VA9ByW/D0PxP1yv1/ejF9I/69lWs6MKP9RUx?=
 =?iso-8859-1?Q?tbh17yEqhaVifmR3QniUJJkfbwStbRVIL5auGeOhVsRiy6fWCmongUQnyu?=
 =?iso-8859-1?Q?Wc1St5/GQodIm0qoEjmMSPjKNc7p0WeGnl9HYoDUKvIkGuNfJJBi6+euH5?=
 =?iso-8859-1?Q?FseWvgGWtbrgd+2ulE85exIorOJw6x3xec71TLG2E6/GU5EmTj3VNRWlWs?=
 =?iso-8859-1?Q?Ncs7jruVIWZm/ObSTvo+s4yFptky8gtp1RPcjaVBoA+Evr8Re4WszEfXW2?=
 =?iso-8859-1?Q?T6Xd0WR5Qak/KOfMEj8G6ZG2zptofn9phCjwWyN3Mb9DUlh2uW8ug5DEFa?=
 =?iso-8859-1?Q?l5d7KcxeryqvyRRx51TILTfASp0XsI9HNZM2c7rWwwkD0NBwMjUR1elVM3?=
 =?iso-8859-1?Q?l20Mk4IGRdW/A+qmso7p70buhiEvjekqiNj13HivNBAEGfZYM2kQ5guO6X?=
 =?iso-8859-1?Q?5dmIgynhAHUz+kwID1c8Q1/LvjeSvuefy9aucNqRQs/z+G+HN7bXNXze3W?=
 =?iso-8859-1?Q?wyEdb0mc+arUlrsdRlzW6FBy3upp+bDvxjKEkU07hqzpEYyOlAsAejNb6v?=
 =?iso-8859-1?Q?X2Fz4oaVt73AX/FT6+kRhbzuXpfZeXCM28fHNFnl+LDXtXOVdQbLT/iJqn?=
 =?iso-8859-1?Q?VmbK3/TDkPqpArHfYkONe6w9wPOyskcPjGj5hqq3iM8QZ/Q6/1Ixjg3QIo?=
 =?iso-8859-1?Q?WhYDhFzilofYCPcw4y8qS417ThFI9wRlF9cXnvs8LzwXnTZOT7GAeJSHmt?=
 =?iso-8859-1?Q?qsoXIHKUgGiYgGObSuxhvj3cR7oUPzQOBp1K/ZfmSfGHeJ2CjkXA4JPh8a?=
 =?iso-8859-1?Q?qyADGnC45fsXnhQLPYMC6laowE46eJMr9HFDaggxsQvhxKdIgrrOuiTweX?=
 =?iso-8859-1?Q?wIluR99Nk1lCl0O1RA31vAFegiBCuFeFAQbMY978lse6OarV888hB5b4tt?=
 =?iso-8859-1?Q?Tnx+aPczwR1PCZn9eb+cupN3+iZ+dhmfV3DZ0lo8aLLfn89O9zn4gUWvK7?=
 =?iso-8859-1?Q?M8Lu24sFGlbFQq39X0X1rfg9jfWkaARL6xeuYm52OCgcfW4uy7dp67jk1+?=
 =?iso-8859-1?Q?hAWYZNk+n10Mq/aJUELyEhmfvJzqLCGpiR2I3LfYjIpYK/MjNqJYJs7iZr?=
 =?iso-8859-1?Q?JpsIb0//E0SQKehWgNpGU6GA6Nfy95UzRV5bM2kaZiXmVR0irXZWIy4a4q?=
 =?iso-8859-1?Q?Tvut2Rcv+am7l5Nw1NJkM903sTi7YAutUYIW7uA/QXeZKoBR29BvEHmKbE?=
 =?iso-8859-1?Q?HVvEli+aZw564qvtB55aHMT3WmMpGYB/+TBK+xOIBcvYIEDNlilBeuzYvs?=
 =?iso-8859-1?Q?ZpbILx4iiGa8qPmxbeWD7GarIJMpNbZnJO5X1eQ2JGmRt2m3N6w+MVyIJ0?=
 =?iso-8859-1?Q?05t3+ew0j4VNFh2O3bIzKvzJjqOKCaVVOxXAJf4Sh/vvyMMdJRCfGtLZlt?=
 =?iso-8859-1?Q?t3OVAp7F2/AOj9Bil4sSO4MWihSVgqy6P/+z4u3oZe+BiBnwqXw2kbuRJl?=
 =?iso-8859-1?Q?uTRMLMi6PLoiATEq/VoV6Sa7W1XB+9/G4WlhxDp2F1Ly3Nw5iXf9Cm+3rt?=
 =?iso-8859-1?Q?1tocQ/i3GWu5llOftnTj4yGe/20nj2WSDQDF6MHMaIc1DGXkOMFgeLIkI0?=
 =?iso-8859-1?Q?7NsynqDwkwXB/KGXAcKPMTnoIQFoE6yGdoboxlCiY7dX4/nF5bWjko3PoO?=
 =?iso-8859-1?Q?ZBqbrNZvKg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0d73df7e-2a14-44c9-97d1-08df39d027be
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:29.2369
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: upiEiZTJ80Ph1Wq+AIIN6mfPCbhRoMLW0btQdecOKjDOdtN6c+vv8uXfnpggMdmhSEgM/BYEYjDroe5+8s0/zA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-ebf023/1793727030-C20D5B50-1860F9AC/0/0
X-purgate-type: clean
X-purgate-size: 5766

From: Rahul Singh <rahul.singh@arm.com>

Add support for virtual cmdqueue handling for guests

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/vsmmu-v3.c | 133 +++++++++++++++++++++++++
 1 file changed, 133 insertions(+)

diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 070fe7af79..780f36bf2a 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -8,6 +8,7 @@
  * This needs to be fully handled in the future.
  */
=20
+#include <xen/guest_access.h>
 #include <xen/param.h>
 #include <xen/sched.h>
 #include <xen/domain-layout.h>
@@ -34,6 +35,51 @@
 #define SMMU_EVTQS          19
 #define DWORDS_BYTES        8
=20
+/*=20
+ * SMMUv3 command definitions
+ * Some commands are fully handled by the emulation layer, while others ar=
e
+ * currently treated as architectural no-ops because the required behavior
+ * is either implicitly guaranteed by Xen or not yet modeled explicitly.
+ *
+ * Emulation handled commands:
+ *
+ * - CMD_CFGI_STE
+ * - CMD_TLBI_NH_ASID
+ * - CMD_TLBI_NSNH_ALL
+ * - CMD_TLBI_NH_VA
+ *
+ * No-op/Implicitly handled commands:
+ *
+ * - CMD_SYNC
+ * - CMD_PREFETCH_CFG
+ * - CMD_CFGI_CD
+ * - CMD_CFGI_CD_ALL
+ * - CMD_CFGI_ALL
+ *
+ * TODO: Remaining architecture-defined commands are not supported (error
+ * produced), due to lack of support in SMMUv3 driver / emulation layer
+ * TODO: Range / per-device invalidation not supported atm
+ * TODO: Long-running command queue handling is not implemented (command
+ * consumption should be budgeted with asynchronous resumption).
+ */
+#define CMDQ_OP_PREFETCH_CFG    0x1
+#define CMDQ_OP_CFGI_STE        0x3
+#define CMDQ_OP_CFGI_ALL        0x4
+#define CMDQ_OP_CFGI_CD         0x5
+#define CMDQ_OP_CFGI_CD_ALL     0x6
+#define CMDQ_OP_TLBI_NH_ASID    0x11
+#define CMDQ_OP_TLBI_NH_VA      0x12
+#define CMDQ_OP_TLBI_NSNH_ALL   0x30
+#define CMDQ_OP_CMD_SYNC        0x46
+
+/* Queue Handling */
+#define Q_BASE(q)       ((q)->q_base & Q_BASE_ADDR_MASK)
+#define Q_CONS_ENT(q)   (Q_BASE(q) + Q_IDX(q, (q)->cons) * (q)->ent_size)
+#define Q_PROD_ENT(q)   (Q_BASE(q) + Q_IDX(q, (q)->prod) * (q)->ent_size)
+
+/* Helper Macros */
+#define smmu_cmd_get_command(x)     FIELD_GET(CMDQ_0_OP, x)
+
 /* virtual smmu queue */
 struct arm_vsmmu_queue {
     uint64_t    q_base; /* base register */
@@ -100,6 +146,89 @@ static inline bool smmu_get_evtq_enabled(struct virt_s=
mmu *smmu)
     spin_unlock(&smmu->cr0_lock);
=20
     return enabled;
+};
+
+/* Queue manipulation functions */
+static bool queue_empty(struct arm_vsmmu_queue *q)
+{
+    return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) &&
+           Q_WRP(q, q->prod) =3D=3D Q_WRP(q, q->cons);
+}
+
+static void queue_inc_cons(struct arm_vsmmu_queue *q)
+{
+    uint32_t cons =3D (Q_WRP(q, q->cons) | Q_IDX(q, q->cons)) + 1;
+    q->cons =3D Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons);
+}
+
+static void dump_smmu_command(uint64_t *command)
+{
+    gprintk(XENLOG_ERR, "cmd 0x%02llx: %016"PRIx64" %016"PRIx64"\n",
+             smmu_cmd_get_command(command[0]), command[0], command[1]);
+}
+static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
+{
+    struct arm_vsmmu_queue *q =3D &smmu->cmdq;
+    struct domain *d =3D smmu->d;
+    uint64_t command[CMDQ_ENT_DWORDS];
+    paddr_t addr;
+    int ret =3D 0;
+
+    if ( !smmu_get_cmdq_enabled(smmu) )
+        return 0;
+
+    /*
+     * TODO: A large number of commands could cause this loop to run for
+     * an extended period while holding the command queue lock, potentiall=
y
+     * monopolizing CPU time. Implement commands rescheduling and asynchro=
nous
+     * execution as outlined in the design.
+     */
+    while ( !queue_empty(q) )
+    {
+        int ret;
+
+        addr =3D Q_CONS_ENT(q);
+        ret =3D access_guest_memory_by_gpa(d, addr, command,
+                                         sizeof(command), false);
+        if ( ret ) {
+            queue_inc_cons(q);
+            return ret;
+        }
+
+        switch ( smmu_cmd_get_command(command[0]) )
+        {
+        case CMDQ_OP_CFGI_STE:
+            break;
+        case CMDQ_OP_PREFETCH_CFG:
+        case CMDQ_OP_CFGI_CD:
+        case CMDQ_OP_CFGI_CD_ALL:
+        case CMDQ_OP_CFGI_ALL:
+        case CMDQ_OP_CMD_SYNC:
+            break;
+        case CMDQ_OP_TLBI_NH_ASID:
+        case CMDQ_OP_TLBI_NSNH_ALL:
+        case CMDQ_OP_TLBI_NH_VA:
+            ret =3D iommu_iotlb_flush_all(smmu->d, 1);
+            if ( !ret )
+                break;
+            fallthrough;
+        default:
+            gdprintk(XENLOG_ERR, "vSMMUv3: unhandled command\n");
+            dump_smmu_command(command);
+            break;
+        }
+
+        if ( ret )
+        {
+            gdprintk(XENLOG_ERR,
+                     "vSMMUv3: command error %d while handling command\n",
+                     ret);
+            dump_smmu_command(command);
+        }
+        queue_inc_cons(q);
+    }
+
+    return ret;
 }
=20
 static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
@@ -222,6 +351,10 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_inf=
o_t *info,
             reg32 =3D smmu->cmdq.prod;
             vreg_reg32_update(&reg32, r, info);
             smmu->cmdq.prod =3D reg32;
+
+            if ( arm_vsmmu_handle_cmds(smmu) )
+                gdprintk(XENLOG_ERR, "error handling vSMMUv3 commands\n");
+
             spin_unlock(&smmu->cmd_queue_lock);
             break;
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470353.1679147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILD-0001id-Ia; Tue, 03 Nov 2026 17:30:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470353.1679147; Tue, 03 Nov 2026 17:30:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILD-0001hN-9s; Tue, 03 Nov 2026 17:30:35 +0000
Received: by outflank-mailman (input) for mailman id 1470353;
 Tue, 03 Nov 2026 17:30:33 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILA-00019p-SK
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILA-0082tl-92
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:32 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a2e-e002-0a2a0a5209dd-0a2a4505e898-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:32 +0100
Received: from [52.101.84.84]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a37-4cb1-0a2a45050019-346554544431-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:32 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:30 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=Wxa/SOdVdzaI5gPZQHilsL3toVVJQ2WNaOnl4bVmF5cVYHL4zp/JFzt8zm2UyRrKeoVLdS3XXm1w9sPYYjEa/K29rrad3hOVBTJ5wjz+oypemvWGrSVJ+7OCyEvQvdBKXWbe/ieisIC0StSmW2VlIPyNDPnhmVGMOf4OGwn3UsIv61H6nc3Og3KDM8Uu6hLUBYmpOPncRdNatcNvsGQ9j37AzdzWbC6TEJbO6R/dBB2aY5sDVtzS4WeGElzMmkeoOq0tTs87m+NgvpAfdlIdhah8ePWTkmSo2qqEbIodY314N6hdLSpz3VFs0M3qzujSag4Z6WJV068NGHZnmxIQqg==
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=gQqvSYKNnxmeZPyhAtojPUrZ/aYqrWZ2IKk5By6TK9o=;
 b=FFdQOZIvP5Owr3iJ1r6cI/uD9HulrTH3IkqcZSnHrghiI3DbQ7XLqfzsK/YKmwvmQ4vx2NFPgUrzj+5oGLr+uLIarnLtGTT3Gw3r52WEyQNrtS2jOkokS2ZahRg70zndIYJ1rXqeEPpHK0H59uK/SqAkExnuEVB4g7w84xrnbZyzghrqZ8qUVPcUztSiyJ/mkp938qKV0HKOnkcWywQAJYLBwjJz7y8smYsBpEbV4CBQt8pL8+lcDpislmzXW3qTPlpUaMKvwfmft9PZ4/XM36jaolIg1RoHZyHVoMJV8EQDutX3G6FCJtXjmHMy4ucSS4+qxgkNbVMGDmE0Zi05gA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gQqvSYKNnxmeZPyhAtojPUrZ/aYqrWZ2IKk5By6TK9o=;
 b=u96BLSQm1N+RRf/jN5NgETxQfRHjNYY9YGc8KF+YIXMtdDfLjXL+efv1/Zkm4kzN58ia8vm85+qnknqc3ZmJ2VSN+tkMVmkRGo0/Pxm3XgHxu0fY+B7TRGlTIl3cfuOMOJP9frwNpR8dIJ38bKQsLWf/hhdlHbrdMZbnUhsgxbvqrvNR0r0ABmLTQHH8IdUAP4SeFrcQz1m8OV6TdbvlJptTHg5rUOryD/6wtkgCl5az3QpzpMgX6Ekrvtd8vzt74emPd6WPzOTA31W7JDk+9aGSRi7qAweOqooucwK3rk6f7unNkk5/mqHVs2Ls31o/AySUkdUgjigShqav2+rLZQ==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 10/22] xen/arm: vsmmuv3: Add support for command
 CMD_CFGI_STE
Thread-Topic: [PATCH v5 10/22] xen/arm: vsmmuv3: Add support for command
 CMD_CFGI_STE
Thread-Index: AQHda7kFKiHvf38fDkWF/z0n7zJjLQ==
Date: Tue, 3 Nov 2026 17:30:30 +0000
Message-ID:
 <a7b09076eefc9c15044b1ad656f2dfa504ce4e5b.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: b58995bf-30f3-46bf-38ab-08df39d0287a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 FZ4asv6T6bo/Q2SoJ8T0/cqfcBPxlqnbydYuugfkwyvIaWGyQ/GPw6uGNs6LhySNd9VTq4RkDp/RLll/bDUUMm1mK5yy8fpZEA66dXdwq9nlaHZTu2bN8QpvqYSeKhMkL8W+uDWyc8941rwCdou83v7r4SQwmou2d2J38C3w4YMYM5KLz0jBebjxzgVBLz05dFULqp2DvsV4elMlG2Ot+A7CTXMx0RxJwkvBCu8mETEZqZF5DzotacgLeAdTdtdLB0neNQx9wymPtar2Q1oSOLunUH7i/eqB3EMKsK6CwA5pWFH4Gxk/ZRFhcxjIiZ7Ssl8VAjzpGFv3LhZVi1D8SojnFNoPpJx9vHmH7A5QplL0KYmB3nmfhGadY01htwrd8VjtTGw/HrrBf5saF456Pf0sflZlpWy5WL+60m0nogSJhpx1eeCeBKHRfxLawbpV9BOXcs7uK1Si1bBB8yWqSlLm8Pxatuq11Ns0MrQtpqCQKJJ7FPqA4bb+DebcUmmF9KLoeAwrRRwRBk4wN49gXNSV6x1bDPiU/VL7YCPY79GxeZ5GlNmTwCv9o5slsf872gYovpN8NGuCEmVw+48FB9ztQ10EJ1nb/mCwOztXo9TUY/LkVy0FPh2csBALMp9bi3560lfbQBJAWyjFcvDa87p6kbdCjBw4DkXyF4OqJBL5cOKHsr5PaiorvU8ZLNt5wrVEvR0v1sRH+IB0k8ORTg==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Q/4el3qU6melKXn+FBMr0VU29yXgTepkXTbzTbcN3jVEP8/YDHHVUhAo+x?=
 =?iso-8859-1?Q?OpJ5SsPH0rCw6CMMfOMBfk1JiIOQ4QoTDxj5nhzxoZte54xpHRbEqkN/Ik?=
 =?iso-8859-1?Q?PxT4KfJpHtPt713NV852a3Dn+wYYOIsYWL3shGmaSphoV0fPuyXgdRr2Z0?=
 =?iso-8859-1?Q?SuJQ01b0xx2ESzvG1B8BRlNH7dM7eoorlZ4zG5a/TFLfPYb5V7A32fjywi?=
 =?iso-8859-1?Q?Qq3bW5hGVGoQxGNt9Bcs+iDGP8dw+/KvzahRF3EW2aUY8RKJQaB5XhOgr6?=
 =?iso-8859-1?Q?9Z0IfWwzthIvifVaTaELi1dy0u37qatqjH74wzVvKYinIuAtVYH19appPZ?=
 =?iso-8859-1?Q?uIK+nHvDFJ/sdRsPp6aWP5HBoNtEjBytRV6waBjoLIUy961Oza2XR8ze9W?=
 =?iso-8859-1?Q?/wLosX8rwmjpE52z34AavdlENy9NyXKdxcdvOGRr6aNkhzcsm9ZT/wh8jR?=
 =?iso-8859-1?Q?Oa3+JiOinN7G+LK5N/aeP4G2yBdmBaV+SL3tFvGyDG+Te4PiNbJxnlsUKh?=
 =?iso-8859-1?Q?jevR8YAD3UAZGel6UavHmUp1fBuhVro//mOtCJcPa0evP94E7/KuOW1Mkz?=
 =?iso-8859-1?Q?8zjq9An72z2YN8UvfzUmpsz1xMPRx7rcaIVoGkac+/zLv/Gut1D4R0VKjo?=
 =?iso-8859-1?Q?iRWXBbKANTBGrKDjCei6MxfNkXMAtt1v5r84/UPL0y161qxZOh9rltlx8Z?=
 =?iso-8859-1?Q?/1nH517mhqfatWGfwyjUMn150qrIHPnCvcbXP8SDI6uF7cgA1sj6mXVSZS?=
 =?iso-8859-1?Q?T7/rjORi3S+2pHloXDEa+zPJEdpgeSX+rGpvNw8QXUM90dFzkv+z+EohMS?=
 =?iso-8859-1?Q?wxv4eMiWM628rbwzyTG0EYw9ZD6D2+nZgERaSrzHCB/w10pcz8UFkPJHlY?=
 =?iso-8859-1?Q?ZzPYE0+X80m7RUhD0YH7wIdK0IIhPFNjEwOX9+a2W+aQCF+MalgdbeCiTX?=
 =?iso-8859-1?Q?EnoNwTyNQE7gQNco9mzX8ndrxYiL0gPDhREHRhLPyfJcgdMNzSHgHDSilP?=
 =?iso-8859-1?Q?4B7IDWwLb/PABt/QzjDveQ7yEhm4euISd0KAZXFTAbGX4ZrtxAhlwIRrcC?=
 =?iso-8859-1?Q?mB/dRLGyX9jCYWku5X54xCPGpnpvyqU6EMZ6wW7ob290cqCL77oi9edJ3L?=
 =?iso-8859-1?Q?ND2GGiDC3l5rPkMPUBcUmOBGG04I9dvL8vK79nlASh+5mu6f2DxNlzeK4u?=
 =?iso-8859-1?Q?Ij6ENCxt/38u69yOkZbPbB9A+lZQOvj031L/TuuEwBIKFDOxXHzvGVNdQO?=
 =?iso-8859-1?Q?LOw37aqBQ7aVt4iuXkki1cohh18prYiuU1ZqdnXciU5Jf0q3Y64yntNzA4?=
 =?iso-8859-1?Q?Xy/MjMQGzqzQ+XxboLkT6g8bRBBiVswnSwhelS5zH/9IzX+/YC/HHHaBEX?=
 =?iso-8859-1?Q?LXyBJyShOwxjZ8Xxqie2UN7f9C2W2HsixayFgYjdrEKh/4AlbEuTym2lh6?=
 =?iso-8859-1?Q?cSbpRVV0k8GxYyQBSULov8vPvEIuCWD9niO6n4Fbu9fhvmo+CLqv5F4/4z?=
 =?iso-8859-1?Q?VJcejJD8cI8KHgBr1SiAp5Ezv4P5jKX68Rq0ss9POad4MMHTyOI9RHU+2p?=
 =?iso-8859-1?Q?m0WNt+K1ZcrOP5rE5zyHZJ7hfLlI48u96TX1Ed+65PnP95tScuyZObqdw8?=
 =?iso-8859-1?Q?NNipiZBOKTDHJDkU9/Y3bsyzjJ5tLB2rp0MvZJNvYl/tD/H/xuJHPrIxau?=
 =?iso-8859-1?Q?ygQOg3q6WXvh64j5mI3OPH6gwell4dt14NE9tutGV+pU+92FKiSm6Qwr2n?=
 =?iso-8859-1?Q?jg9kt1Wv6Vmeqk4+AB2AIJ9u95GIEueJVZxW8vbHbtXoBsDHtdzmRRBSxD?=
 =?iso-8859-1?Q?AfltkxJQaQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b58995bf-30f3-46bf-38ab-08df39d0287a
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:30.4364
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: G/EDBk7VVQ0SU/O3GZItqdXom0SDDOV6YP5DlT9ZvwYn+TD327SqP2TBez+Dk0usfTinKU+QpoLp0ndZz5aI+w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-c201ff/1793727032-72EB12A1-868FCF69/0/0
X-purgate-type: clean
X-purgate-size: 7390

From: Rahul Singh <rahul.singh@arm.com>

CMD_CFGI_STE is used to invalidate/validate the STE. Emulated vSMMUv3
driver in XEN will read the STE from the guest memory space and capture
the Stage-1 configuration required to support nested translation.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/vsmmu-v3.c | 173 +++++++++++++++++++++++++
 1 file changed, 173 insertions(+)

diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 780f36bf2a..5e12d5c587 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -79,6 +79,21 @@
=20
 /* Helper Macros */
 #define smmu_cmd_get_command(x)     FIELD_GET(CMDQ_0_OP, x)
+#define smmu_cmd_get_sid(x)         FIELD_GET(CMDQ_CFGI_0_SID, x)
+#define smmu_get_ste_s1cdmax(x)     FIELD_GET(STRTAB_STE_0_S1CDMAX, x)
+#define smmu_get_ste_s1fmt(x)       FIELD_GET(STRTAB_STE_0_S1FMT, x)
+#define smmu_get_ste_s1stalld(x)    FIELD_GET(STRTAB_STE_1_S1STALLD, x)
+#define smmu_get_ste_s1ctxptr(x)    FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK,=
 \
+                                    FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, =
x))
+
+/* stage-1 translation configuration */
+struct arm_vsmmu_s1_trans_cfg {
+    paddr_t s1ctxptr;
+    uint8_t s1fmt;
+    uint8_t s1cdmax;
+    bool    bypassed;             /* translation is bypassed */
+    bool    aborted;              /* translation is aborted */
+};
=20
 /* virtual smmu queue */
 struct arm_vsmmu_queue {
@@ -166,6 +181,163 @@ static void dump_smmu_command(uint64_t *command)
     gprintk(XENLOG_ERR, "cmd 0x%02llx: %016"PRIx64" %016"PRIx64"\n",
              smmu_cmd_get_command(command[0]), command[0], command[1]);
 }
+
+static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
+                              uint64_t *ste)
+{
+    paddr_t addr, strtab_base;
+    struct domain *d =3D smmu->d;
+    uint32_t log2size;
+    int strtab_size_shift;
+    int ret;
+
+    spin_lock(&smmu->strtab_cfg_lock);
+    log2size =3D MIN(FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base=
_cfg),
+                SMMU_IDR1_SIDSIZE);
+    spin_unlock(&smmu->strtab_cfg_lock);
+
+    if ( sid >=3D (1U << log2size) )
+        return -EINVAL;
+
+    spin_lock(&smmu->strtab_cfg_lock);
+    if ( FIELD_GET(STRTAB_BASE_CFG_FMT, smmu->strtab_base_cfg) =3D=3D
+         STRTAB_BASE_CFG_FMT_2LVL )
+    {
+        int idx, max_l2_ste, span;
+        paddr_t l1ptr, l2ptr;
+        uint64_t l1std;
+        uint8_t sid_split =3D FIELD_GET(STRTAB_BASE_CFG_SPLIT,
+                              smmu->strtab_base_cfg);
+
+        /*
+        * Reserved SPLIT values behave as 6 according to the architecture.
+        */
+        if ( sid_split !=3D 0x6 && sid_split !=3D 0x8 && sid_split !=3D 0x=
A )
+        {
+            sid_split =3D 0x6;
+        }
+
+        strtab_size_shift =3D MAX(5, (int)log2size - sid_split - 1 + 3);
+        strtab_base =3D smmu->strtab_base & STRTAB_BASE_ADDR_MASK &
+                        ~GENMASK_ULL(strtab_size_shift, 0);
+        spin_unlock(&smmu->strtab_cfg_lock);
+        idx =3D (sid >> sid_split) * STRTAB_L1_DESC_DWORDS;
+        l1ptr =3D (paddr_t)(strtab_base + idx * sizeof(l1std));
+
+        ret =3D access_guest_memory_by_gpa(d, l1ptr, &l1std,
+                                         sizeof(l1std), false);
+        if ( ret )
+        {
+            gdprintk(XENLOG_ERR,
+                     "Could not read L1PTR at 0X%"PRIx64"\n", l1ptr);
+            return ret;
+        }
+
+        span =3D FIELD_GET(STRTAB_L1_DESC_SPAN, l1std);
+
+        /* Validate SPAN against the architecturally defined range and SPL=
IT. */
+        if ( !span || span > 0xB || span > sid_split + 1 )
+        {
+            /* L2Ptr is invalid; this descriptor matches no valid STEs. */
+            return -EINVAL;
+        }
+
+        max_l2_ste =3D (1U << (span - 1)) - 1;
+        l2ptr =3D FIELD_PREP(STRTAB_L1_DESC_L2PTR_MASK,
+                    FIELD_GET(STRTAB_L1_DESC_L2PTR_MASK, l1std));
+        idx =3D sid & ((1 << sid_split) - 1);
+        if ( idx > max_l2_ste )
+        {
+            gdprintk(XENLOG_ERR, "idx=3D%d > max_l2_ste=3D%d\n",
+                     idx, max_l2_ste);
+            return -EINVAL;
+        }
+        addr =3D l2ptr + idx * sizeof(*ste) * STRTAB_STE_DWORDS;
+    }
+    else
+    {
+        strtab_size_shift =3D log2size + 5;
+        strtab_base =3D smmu->strtab_base & STRTAB_BASE_ADDR_MASK &
+                      ~GENMASK_ULL(strtab_size_shift, 0);
+        spin_unlock(&smmu->strtab_cfg_lock);
+        addr =3D strtab_base + sid * sizeof(*ste) * STRTAB_STE_DWORDS;
+    }
+    ret =3D access_guest_memory_by_gpa(d, addr, ste, sizeof(*ste), false);
+    if ( ret )
+    {
+        gdprintk(XENLOG_ERR,
+                "Cannot fetch pte at address=3D0x%"PRIx64"\n", addr);
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+static int arm_vsmmu_decode_ste(struct virt_smmu *smmu, uint32_t sid,
+                                struct arm_vsmmu_s1_trans_cfg *cfg,
+                                uint64_t *ste)
+{
+    uint64_t val =3D ste[0];
+
+    if ( !(val & STRTAB_STE_0_V) )
+    {
+        cfg->aborted =3D true;
+        return 0;
+    }
+
+    switch ( FIELD_GET(STRTAB_STE_0_CFG, val) )
+    {
+    case STRTAB_STE_0_CFG_BYPASS:
+        cfg->bypassed =3D true;
+        return 0;
+    case STRTAB_STE_0_CFG_ABORT:
+        cfg->aborted =3D true;
+        return 0;
+    case STRTAB_STE_0_CFG_S1_TRANS:
+        break;
+    case STRTAB_STE_0_CFG_S2_TRANS:
+        gdprintk(XENLOG_ERR, "vSMMUv3 does not support stage 2 yet\n");
+        goto bad_ste;
+    default:
+        gdprintk(XENLOG_ERR, "Invalid STE config type\n");
+        goto bad_ste;
+    }
+
+    cfg->s1ctxptr =3D smmu_get_ste_s1ctxptr(val);
+    cfg->s1fmt =3D smmu_get_ste_s1fmt(val);
+    cfg->s1cdmax =3D smmu_get_ste_s1cdmax(val);
+    if ( cfg->s1cdmax !=3D 0 )
+    {
+        gdprintk(XENLOG_ERR,
+                 "vSMMUv3 does not support multiple context descriptors\n"=
);
+        goto bad_ste;
+    }
+
+    return 0;
+
+ bad_ste:
+    return -EINVAL;
+}
+
+static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu *smmu, uint64_t *cmd=
ptr)
+{
+    int ret;
+    /* Only the first 8 bytes of the STE are currently used. */
+    uint64_t ste[1];
+    struct arm_vsmmu_s1_trans_cfg s1_cfg =3D {0};
+    uint32_t sid =3D smmu_cmd_get_sid(cmdptr[0]);
+
+    ret =3D arm_vsmmu_find_ste(smmu, sid, ste);
+    if ( ret )
+        return ret;
+
+    ret =3D arm_vsmmu_decode_ste(smmu, sid, &s1_cfg, ste);
+    if ( ret )
+        return (ret =3D=3D -EAGAIN ) ? 0 : ret;
+
+    return 0;
+}
+
 static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu)
 {
     struct arm_vsmmu_queue *q =3D &smmu->cmdq;
@@ -198,6 +370,7 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu=
)
         switch ( smmu_cmd_get_command(command[0]) )
         {
         case CMDQ_OP_CFGI_STE:
+            ret =3D arm_vsmmu_handle_cfgi_ste(smmu, command);
             break;
         case CMDQ_OP_PREFETCH_CFG:
         case CMDQ_OP_CFGI_CD:
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470354.1679153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILE-0001pN-Gv; Tue, 03 Nov 2026 17:30:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470354.1679153; Tue, 03 Nov 2026 17:30:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILD-0001o6-W9; Tue, 03 Nov 2026 17:30:36 +0000
Received: by outflank-mailman (input) for mailman id 1470354;
 Tue, 03 Nov 2026 17:30:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILC-0001L6-4Y
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILB-004K6F-Gw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:33 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a35-2eae-0a2a0a5409dd-0a2a4506cece-8
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:33 +0100
Received: from [52.101.84.75]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a39-195a-0a2a45060019-3465544bea63-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:33 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:31 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=Fc0UOWfWjleWMbsGkLDtfwBGEH/4qQTVNkRLjuY8vsZybOwyvAXFZbja7mhnQ/Ea/Mk4/dJlAOCTfEqBm/xL8v1jqNxKbC+6H8s6Fe2wHLU+thkJNltADf9pwnkdMR4BnEvKKx/MwKYFYyRMK62N4kyCxkjfLiF555IfM05PJzUTv4BKOB6cCTWSsercdZFWFMkI93PUBH7USDXfNkAjygJlNG0rGnMsf3B7oqngGgw6XYcEkwTNWDxG5sSQlye3cZxGAu9k+82eb6TIfPqJmeILwX2+/o8x+fBrleX/iSEyz8WqmwGaHvmxUOpWtRDQEY3/fw5phVljuV7FdvMBeg==
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=+QGCqFTyH9G5nYKqfOyTomWNnOUGDIozO+kWVyetpRk=;
 b=tZilIdaZ6RBOjAJ1a9vodlNs+gI6WWNqdE7pHHQbjqWwdWBLLQTYHK52uLj8bGKJcRPTmlnSeJS5++V1CVuSlkJiWYVlX9Au+Tg7qb3FsfgQMComN/gGGHsUqixbJ72d52z1Flq8Sn+uev8UGFnvsjKep0v5EKQq7pzKq4xKfg6z/Yyg/IiI8XKcKazUQq3wlvUeHSm9I3x1Ayu3oWAmG2Qll2h0Pi/uUMX5vAJNbc5JNOaJ+t6TXsmoX25g6Q8xNNaKD4IddiTAhRnRG/VtV3rD6k55Wbsfi91QXCUnm+apxzhdincx7I86aJhbvsodzfabb4Cv0gd5FInUVSiygw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+QGCqFTyH9G5nYKqfOyTomWNnOUGDIozO+kWVyetpRk=;
 b=VPU53uhS7MnfgbMVVveBR6SAn1cfEPf+Z8VGVaDriIqHy4EIh8hxBzFNCOjwi9WnDZqx5S64BE9ZaGN6H9uLk5KRD+ieJ6HmPkhmgLsjp5vfjbNt2ScDxs99qKWSepUJxR159mJg31WxHwrb2t9/yV9sfvuIBv+eYZE4a/sk3oi2Pi7AODkSREpm/WYAegnbLdemLhnjloWrV5ApqF8yqUT5E986tOvt2tSNklfQQrfS9kebjTR9XaON7LIeKzyXDqxGUyPB/J9KcrfRXcSJtAQ5GhP5oiOtHzIeLPivJcJf3hhwRF/irshYrY63ZqS8Nxt6vcZ1CwhPInhDvY14TQ==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Jan Beulich <jbeulich@suse.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger@xenproject.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 11/22] xen/arm: vsmmuv3: Attach Stage-1 configuration to
 SMMUv3 hardware
Thread-Topic: [PATCH v5 11/22] xen/arm: vsmmuv3: Attach Stage-1 configuration
 to SMMUv3 hardware
Thread-Index: AQHda7kGEs1jLaaktkeEsaJubIp4rQ==
Date: Tue, 3 Nov 2026 17:30:31 +0000
Message-ID:
 <60014e87e1c8e125e59a87bd89ce4ce87d4a590f.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: eced4df7-588e-42a5-0e78-08df39d02920
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 BJApNPOua/8/h9wmk+JD4oSmnRq55hShoyFdb/YoAwiM2hmyAjqxkStLJL1eHaluDn4ccConqnpktT8yKbzpXHrmppaEyRYdbng2MgWsPv6F48g8cOeBrtScua9MY5hyLEc+bcFIHb5MDhSGW9BMGWb1fsRGnX3T0O5zxOjOCp6xJP77L+YFyRukIuoeuIUR3pGiunN8wGD/cbuDBYltMAUZu8tlok4VvitX6pztxlgEhdtHL++XYmNLYP+5Qr/VRIrXe8W39Yn1M9ON6MchLJAbCalNCDlulO88FTEo2xfCQFKpwOzNMQ/mslD/7k3HayT3n9lP66rpyzZd490s/Wv6o7XuCSLn7Y5bWrYjnrmxn/Wp5dAkIMRpFAf06ipg9GeJrOBVB/a2dOclxnO5kWgwQkFvubyU6RXpdg2qZCHHmMRAhid56E4tar/inm0PTwTqiZm49x4BA+i1Ej6O1cv+mkUbzsP1OYG71O3mhM4P7gVmuPe0dgQLhso7mwXfrMcVWLjWKwSUsvu5XvjsqaSAc3hULt1YAHH4COCaDc6UKAuo6sQmJobaNfAymfuTLmhnLPHDx3Ae3hvjGvQl8OeAKr5VE5v7G7sMReQl8OjncFGMcKzb5c75fHds1dOKAuTO2GJ4eC3wbs2TiMdQ4Z1uaPpl7660P79NPYG9eOif+MP04D2n1J+iwvcIli8swBJjUIH0oia5vlUymyGMOqZNxpe9DNDWWVlpgG8Fkes=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?KQ3ilepSknUBW6QQgSC7pxAFjKr+77Zn9eBCnRHchFa0Aa9aZuVLTh/Lqa?=
 =?iso-8859-1?Q?h/ZyQPU9gvWbx7AH0LprnMvgNr8eyFZOUa3Seh2jrSPlBT/M9jtRshkYaO?=
 =?iso-8859-1?Q?gOaq3MNgx+wqGuuYyS9GoHXbDE5GGX3MeTg5dlkvnuAyf1FGozdvLoiSGR?=
 =?iso-8859-1?Q?ys6vyhhuk3vCs2ii0pb19AEsMunxpsJKi6TsxrH9ybYwA323D/C8ci6zhm?=
 =?iso-8859-1?Q?0YBu68HAgNmyLWhiAF2HyqFHf6yTMaxBsB5MhTSXp+nPLAjfKFkIV+93Xe?=
 =?iso-8859-1?Q?Fa4SdEN6+Ta5/4UXEaehu+4F329hKlWFq9RdYVt4u4LqGoxXBoFg/wPEtr?=
 =?iso-8859-1?Q?jeiOZMTdMl8iEqD/j6L2KJ7AkhNGj9fdHUG/97GetQFiXxICuJxOOWnsmb?=
 =?iso-8859-1?Q?+4ZHIW6Eyd7r6skmz65Zb+k8fn3zS88hyH7hS9DouxCRN53sdioDPaaU6r?=
 =?iso-8859-1?Q?/+ED8nm9pZibyCjHb2YwPCBU6yL0VTWmSnM+mmekcsxaXq7KaxdLEk1jo6?=
 =?iso-8859-1?Q?6sK7dncxVmX/OtOukplZDSO3uQbLLEGnO/tT/1BLFg+xec+gG4ijj8PBMR?=
 =?iso-8859-1?Q?itcLlN+9wmkrnhDCQd712U1CfZZtKS/NM1oIyiK7qEiVWh3hMrD5k1OAA7?=
 =?iso-8859-1?Q?PD2Z3XBJCym2xOH431Eox0ni4c8FGdvGSpKHKRXF8n+8czZX1kQ+o+qfKL?=
 =?iso-8859-1?Q?it3ZvoJmjYrj7cjgcNi3c4rQg9KjqLKZ/wd6vcNqcueD3zzda2rFDJSKeh?=
 =?iso-8859-1?Q?uhPekWr9KH+Jx2Vp5m762fv0Ti1fLAd1d6jb44Pgb8QkQ473wHW2obensE?=
 =?iso-8859-1?Q?auGWIG6mBm+ax/gZLIwzzHb4qGOhovf3yFPzJt2auQ8Vjz8tUgGhNK7paw?=
 =?iso-8859-1?Q?ZmYgQ7KzfHfEDHr0o+WSxTc4JnVriuwPZHXn5kKz+cXYYNrF8T8/dKN3K4?=
 =?iso-8859-1?Q?2KWmrQDUsf4WwFwCYfxPxOp1EBuVp341Jc2u/8M/G442NrgaqvdQtmzXTy?=
 =?iso-8859-1?Q?B8/2YaUGlWtsA9LdZXhQVynRHubRGjj4cat/7wNe3IiSG7rDfUT8+lWCvB?=
 =?iso-8859-1?Q?RXdSrwTiD68R8t+KRjlk2x66Qydmic05hwKfQX5VEL8yEg44RFrvm4yZjH?=
 =?iso-8859-1?Q?T6c7iaNhg4hUF9fW58l+ZtCyKGFRo2OIJcPYQZMBCK0B1d46CgPPky7zIv?=
 =?iso-8859-1?Q?4vGyUy3UDjMLcjVKPoTkcwuzvQvyV2jDqu5SQw36NPSBLXgBMwQz0m6cDY?=
 =?iso-8859-1?Q?tJhnG3BYBnVs4F/M9Ti20ZBRKe6C3uYMrrXYvjDMjzodCsD+1dqblRR9q9?=
 =?iso-8859-1?Q?XLhsPwTwYvs1Sh90XOksN7KP00foQPsx3tGXdGmC3qPQ1TruFnXfAf4JTz?=
 =?iso-8859-1?Q?au1ENjSqPMpavbIqwHt0SijBzjxlNx25pHRPuCPs2u2rraphziED2UBFhw?=
 =?iso-8859-1?Q?sahaZrJbvWVw3gDmBgrFucpaMAMHeKmZcUKSYd46IKLEGsrVxnE+Y+e6sV?=
 =?iso-8859-1?Q?k9aWzXPiR9WOelBmhD2dp02IR6ohTFGzv1VyFc9MMIhrgs+zjeMoWKUmn5?=
 =?iso-8859-1?Q?t8A0aLlJCpQKw3t+o+gvpkdYmxb4X5f2UDmik84tfK/3YlS+4gBz3Kln7G?=
 =?iso-8859-1?Q?bx8FeUNdQeBzEJ8xydDwSPVnj167T6v7X/8Vf1jLDdVhRmvuRV0yDJ+FG0?=
 =?iso-8859-1?Q?GaULffv/GOJ4TiV0JMz60aolghhAllnD9helkjOvR6X24G4d9mD0HiAdny?=
 =?iso-8859-1?Q?1sCRf9ckpWSrDMaWO+6sizAvxs1sc6xNIxWnGJOZKZMvQuZwkBSH7SMc4o?=
 =?iso-8859-1?Q?Pzhyo8a0Vw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: eced4df7-588e-42a5-0e78-08df39d02920
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:31.5704
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 7UWeyAE3ewU2UYx6Hur5Y1dv6WKJL9o8HKgB5cKS5tatDN6wsWA11GyseqbNi+hycZUsMaheFhcwuFl5T1NHfA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727033-1F0C777B-0AA18D3D/0/0
X-purgate-type: clean
X-purgate-size: 7867

From: Rahul Singh <rahul.singh@arm.com>

Attach the Stage-1 configuration to device STE to support nested
translation for the guests.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/include/asm/iommu.h       |   7 ++
 xen/drivers/passthrough/arm/smmu-v3.c  | 114 +++++++++++++++++++++++++
 xen/drivers/passthrough/arm/vsmmu-v3.c |  18 ++++
 xen/include/xen/iommu.h                |   6 ++
 4 files changed, 145 insertions(+)

diff --git a/xen/arch/arm/include/asm/iommu.h b/xen/arch/arm/include/asm/io=
mmu.h
index ad15477e24..56bc9314a7 100644
--- a/xen/arch/arm/include/asm/iommu.h
+++ b/xen/arch/arm/include/asm/iommu.h
@@ -20,6 +20,13 @@ struct arch_iommu
     void *priv;
 };
=20
+struct iommu_guest_config {
+    paddr_t     s1ctxptr;
+    uint8_t     config;
+    uint8_t     s1fmt;
+    uint8_t     s1cdmax;
+};
+
 const struct iommu_ops *iommu_get_ops(void);
 void iommu_set_ops(const struct iommu_ops *ops);
=20
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index d2dfb06cae..4f95b5206e 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -3061,6 +3061,37 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(c=
onst struct device *dev)
 	return NULL;
 }
=20
+static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d,
+				u32 sid)
+{
+	int i;
+	unsigned long flags;
+	struct iommu_domain *io_domain;
+	struct arm_smmu_domain *smmu_domain;
+	struct arm_smmu_master *master;
+	struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv;
+
+	/*
+	 * Loop through the &xen_domain->contexts to locate a context
+	 * associated with the target SMMU and device SID
+	 */
+	list_for_each_entry(io_domain, &xen_domain->contexts, list) {
+		smmu_domain =3D to_smmu_domain(io_domain);
+
+		spin_lock_irqsave(&smmu_domain->devices_lock, flags);
+		list_for_each_entry(master, &smmu_domain->devices, domain_head) {
+			for (i =3D 0; i < master->num_streams; i++) {
+				if (sid !=3D master->streams[i].id)
+					continue;
+				spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
+				return io_domain;
+			}
+		}
+		spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
+	}
+	return NULL;
+}
+
 static struct iommu_domain *arm_smmu_get_domain(struct domain *d,
 				struct device *dev)
 {
@@ -3274,6 +3305,88 @@ static void arm_smmu_iommu_xen_domain_teardown(struc=
t domain *d)
 	xfree(xen_domain);
 }
=20
+static int arm_smmu_attach_guest_config(struct domain *d, uint32_t sid,
+		const struct iommu_guest_config *cfg)
+{
+	int ret =3D -EINVAL;
+	unsigned long flags;
+	struct arm_smmu_master *master;
+	struct arm_smmu_domain *smmu_domain;
+	struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv;
+	struct iommu_domain *io_domain;
+
+	spin_lock(&xen_domain->lock);
+	io_domain =3D arm_smmu_get_domain_by_sid(d, sid);
+	if (!io_domain) {
+		ret =3D -ENODEV;
+		goto out;
+	}
+
+	smmu_domain =3D to_smmu_domain(io_domain);
+
+	switch (cfg->config) {
+	case ARM_SMMU_DOMAIN_ABORT:
+		smmu_domain->abort =3D true;
+		smmu_domain->stage =3D cfg->config;
+		break;
+	case ARM_SMMU_DOMAIN_BYPASS:
+		smmu_domain->abort =3D false;
+		/* Install stage-2-only config */
+		smmu_domain->stage =3D ARM_SMMU_DOMAIN_S2;
+		break;
+	case ARM_SMMU_DOMAIN_S1:
+		/* Check stage-1 support */
+		if (!(smmu_domain->smmu->features & ARM_SMMU_FEAT_TRANS_S1)) {
+			dev_info(smmu_domain->smmu->dev,
+					"stage-1 not implemented\n");
+			goto out;
+		}
+
+		/* If stage-2 is not supported, configure stage-1 only */
+		if (!(smmu_domain->smmu->features & ARM_SMMU_FEAT_TRANS_S2)) {
+				dev_warn(smmu_domain->smmu->dev,
+						"SMMU does not implement stage-2 translation support. "
+						"Fallback to stage-1-only translation configuration\n");
+			/* Enable Stage-1 translation. */
+			smmu_domain->stage =3D ARM_SMMU_DOMAIN_S1;
+		}
+		else {
+			/* Check nested support */
+			if (!(smmu_domain->smmu->features & ARM_SMMU_FEAT_NESTING)) {
+					dev_info(smmu_domain->smmu->dev,
+							"Nested translation not supported\n");
+					goto out;
+			}
+			smmu_domain->stage =3D ARM_SMMU_DOMAIN_NESTED;
+		}
+
+		/* Enable Stage-1 translation. */
+		smmu_domain->s1_cfg.s1ctxptr =3D cfg->s1ctxptr;
+		smmu_domain->s1_cfg.s1fmt =3D cfg->s1fmt;
+		smmu_domain->s1_cfg.s1cdmax =3D cfg->s1cdmax;
+		smmu_domain->abort =3D false;
+		break;
+	default:
+		goto out;
+	}
+
+	spin_lock_irqsave(&smmu_domain->devices_lock, flags);
+	/*
+	 * TODO: The same Stage-1 configuration is applied to all SIDs
+	 * belonging to this SMMU domain. PCI devices may require different
+	 * Stage-1 configurations for different SIDs, which is not supported
+	 * by the current implementation.
+	 */
+	list_for_each_entry(master, &smmu_domain->devices, domain_head)
+		arm_smmu_install_ste_for_dev(master);
+	spin_unlock_irqrestore(&smmu_domain->devices_lock, flags);
+
+	ret =3D 0;
+out:
+	spin_unlock(&xen_domain->lock);
+	return ret;
+}
+
 static const struct iommu_ops arm_smmu_iommu_ops =3D {
 	.page_sizes		=3D PAGE_SIZE_4K,
 	.init			=3D arm_smmu_iommu_xen_domain_init,
@@ -3287,6 +3400,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =3D =
{
 	.dt_xlate		=3D arm_smmu_dt_xlate,
 	.add_device		=3D arm_smmu_add_device,
 	.remove_device		=3D arm_smmu_remove_device,
+	.attach_guest_config =3D arm_smmu_attach_guest_config,
 };
=20
 static __init int arm_smmu_dt_init(struct dt_device_node *dev,
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 5e12d5c587..72f8075e0a 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -324,8 +324,11 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu =
*smmu, uint64_t *cmdptr)
     int ret;
     /* Only the first 8 bytes of the STE are currently used. */
     uint64_t ste[1];
+    struct domain *d =3D smmu->d;
+    struct domain_iommu *hd =3D dom_iommu(d);
     struct arm_vsmmu_s1_trans_cfg s1_cfg =3D {0};
     uint32_t sid =3D smmu_cmd_get_sid(cmdptr[0]);
+    struct iommu_guest_config guest_cfg =3D {0};
=20
     ret =3D arm_vsmmu_find_ste(smmu, sid, ste);
     if ( ret )
@@ -335,6 +338,21 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu =
*smmu, uint64_t *cmdptr)
     if ( ret )
         return (ret =3D=3D -EAGAIN ) ? 0 : ret;
=20
+    guest_cfg.s1ctxptr =3D s1_cfg.s1ctxptr;
+    guest_cfg.s1fmt =3D s1_cfg.s1fmt;
+    guest_cfg.s1cdmax =3D s1_cfg.s1cdmax;
+
+    if ( s1_cfg.bypassed )
+        guest_cfg.config =3D ARM_SMMU_DOMAIN_BYPASS;
+    else if ( s1_cfg.aborted )
+        guest_cfg.config =3D ARM_SMMU_DOMAIN_ABORT;
+    else
+        guest_cfg.config =3D ARM_SMMU_DOMAIN_S1;
+
+    ret =3D hd->platform_ops->attach_guest_config(d, sid, &guest_cfg);
+    if ( ret )
+        return ret;
+
     return 0;
 }
=20
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 37c4a1dc82..253f8bb6cb 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -312,6 +312,7 @@ static inline int iommu_add_dt_pci_sideband_ids(struct =
pci_dev *pdev)
 #endif /* HAS_DEVICE_TREE_DISCOVERY */
=20
 struct page_info;
+struct iommu_guest_config;
=20
 /*
  * Any non-zero value returned from callbacks of this type will cause the
@@ -387,6 +388,11 @@ struct iommu_ops {
 #endif
     /* Inhibit all interrupt generation, to be used at shutdown. */
     void (*quiesce)(void);
+
+#ifdef CONFIG_ARM
+    int (*attach_guest_config)(struct domain *d, uint32_t sid,
+                               const struct iommu_guest_config *cfg);
+#endif
 };
=20
 /*
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470358.1679157 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILF-000221-DS; Tue, 03 Nov 2026 17:30:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470358.1679157; Tue, 03 Nov 2026 17:30:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILF-0001zk-2r; Tue, 03 Nov 2026 17:30:37 +0000
Received: by outflank-mailman (input) for mailman id 1470358;
 Tue, 03 Nov 2026 17:30:36 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILD-0001ik-KB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILC-00F7AL-VS
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:34 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a36-bab6-0a2a0a5309dd-0a2a450498fe-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:34 +0100
Received: from [52.101.83.140]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a3a-b57f-0a2a45040019-3465538c3297-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:34 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:33 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=JmB0OawuMNHPtDKsb0hox4fYgyDgia5r1xbv+nbknovn6DYPqZ5/HQYqaskOXxADbq5U6SlkzRSUcYfJPJzGu2q+efW9pBsA70xGofkWdGvgGoXpuO3diKeXfPmSELVBMafSdHdYxbzKFVg+OEPT85Vb8K+eJ2Q6e2nRUTdzRnOSFfwYsq4Y5leQcWn0m3vbLU/vINoxcWVFHojAg0zN1FJ9Fo/SFrG6kZOO/kPCzrChGXdp4CR67QPlQnME1i2xbu5Vzs2Jo9KR0DasWDR5KG5F521lPY0th/NA4+op8HqpvoZciGK/E09081flsUCgptRCl20/j3XIPZPElefivQ==
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=sUXhi2FmOcD1qpvabmQIRGtPrND2M2ONfxDnBn4m6VU=;
 b=XdKgOXV9nYDTo1zzi4afqWpL7ZxgWayQltZCuxevgCACN7TVVqzDzy3/zom6Xc8gRmPi9ibMh4bIIGgmiZ7IV/OONFzlBXv3ruI2wKtQwsG9ajZnywSIX2NfjbxjyZrE5IUnYfmnJFjvNJOr/EOogzzyDT1RmlRtjFS54lLcm/S5n36oxbsTr49AN4MccIpclULxQIoXxamwm9slziXbKOVhOjgrA/tfU/nX/nDas27sv6RF8NY0SCvSDonGG94NceZ0e9cLXYLfRDLI5/5n4a9Hh4JGM7CbVz9Ih21m/lOfSTZnWdZJcNTTz8u9PfIY2675XTuv0FUla88KhB7iFQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sUXhi2FmOcD1qpvabmQIRGtPrND2M2ONfxDnBn4m6VU=;
 b=B+JJdynYaNMr0JW+Yi8nxTNbXgx7HYi8fiHTkrKTyxKhBYHqPM4h2JSWawQJntpYcAvEQK6UARjmTsgDxJclqfz7FGh24744sH7kV9arj8O7cbnsV6UuZz8NqxT6Iv/kT1nbObx2Ou3IjJa+AkyCDy8m3RVgyy8R/kq9tyLACjVRZYaqukUZj5PabFjt5Ru1AAN6Bwl9Ley7QVuy6oz3I0nBF9JYg45ff8K8c+rqhAKggLRHAAdXkHJ17w4sFPpmlVZ0qyMh2qnKImmK4TlJ/6+p7tO6wKALhfpgquz0MK5fMeow0CZ8HLtZQFjkYMqx4Ku/7RV9W7GOCbBsseOdiA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 12/22] xen/arm: vsmmuv3: Add support for event queue and
 global error
Thread-Topic: [PATCH v5 12/22] xen/arm: vsmmuv3: Add support for event queue
 and global error
Thread-Index: AQHda7kHIstkwkoHG0iW7e6KNO1jCg==
Date: Tue, 3 Nov 2026 17:30:32 +0000
Message-ID:
 <bbed62ef1ad451168223bcd05a9236696afca2d6.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 7ec186c2-5767-4f28-c386-08df39d029f1
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261021135927099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 NTbZP/tArqbGlCb368ftOAsDqCdN60RXpuyZKoBTrpTi/sbqY3Msck+16q0k7e6lg4/bGQdWyT9Jl/KtaPOh9mkD0zUYXahCxKuooC5pPCoCxdS7eqo32hHVoTUUThALu9sB1gnQ2Uti4P/zz4YA2whqAUvBYaaT4fsmUgK/n+luIroCkM97DLo1mFv8PTsfbqqhcqxfyc/FKuWIVzQhbovNS0aDuUBngBZOwt98YSw6YS9BjEAd+uaGHsJ3Z+8PgOhYthxARMPxKCpm8DOCndgXwNuFgiBdFFkzc6YcdgoNL3CExvCO2wzGatC9iVBcgqG57fFqGFScLF/S4c1o2Hm7E9bb8GpyH+slmyVQuuer6PsytOX5Y23xBv2z0GH1JqfD4wexdwe3Adp7cNTDZzTLVwhkmsLZIokRKFxM06zT/URiYTRu4xdQfMbYyUURUmucrXS3LhwKgM1zMGuvDP8RgKH10etqV+wpdSHEnCww+g1zk5ZQ7E8nym2r1Nzerko2t3uQ8pSb3pMK8zd/fXbJWplSx2SxjEcL8FIkVe1pr9sNdEvCzvuGSuwkkzcf82XGPY55UhVGgxuV3mGw+2/z5X1R1SJHHogxmU/ny0rBfuRXAqorxZpMT4TjJiP0El3scWly7vT8KjHkcHWQAhVT/95MF0JZyRRvn2gK6FkJ6U7rF3pXEiKz/ZsnxCUa4vP/w30S3eNKyhShHCIQ82tHM+PElIsIgaJISHwMHhg=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261021135927099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?0OOf0H7PynYIF3Iv5UtXem8X4i0+CBi0GKVMmcC4JJr1XHIWNLyjGZYZz6?=
 =?iso-8859-1?Q?ZsnYofNiRiirZrpjySxL3bJYaCHufYQzssRMRcfBTbddBxqP3+HIPC8n5B?=
 =?iso-8859-1?Q?Lw04a9E5gfJfLqlpM82FwtLKK1RgpB55fEPtuh2i4wCpDlD3R9AoPu1e2D?=
 =?iso-8859-1?Q?uGgrJ/lePmiNVR2QIrAtPNl29dcWw4XNF+rJJP0GFucE+ACF/CBUCy16q7?=
 =?iso-8859-1?Q?iZWslvHcoHd74/2WxF7XdU8PG7zadZaE3rnukqQg1FFCw6eu+lw+lehEnf?=
 =?iso-8859-1?Q?3CQEMIhHT/nsKEP8Pt/MuHxfBsm3jiAzDGLlOUG5KuSmdQaociAPGMynj/?=
 =?iso-8859-1?Q?LPuj4sehQRy2kZj+bOp846pZTP3AmZCCLqM7Wk9vcqIez+X0CyJQbmmfkh?=
 =?iso-8859-1?Q?KxLKfCLQCVmExUyKk77MWaONrA87Vc5B9jMlTlv93lZ9s5+BMshi66Wp1p?=
 =?iso-8859-1?Q?pUF86QSxkRiYUoS3ntgz4zELtZDmwItWKMnTIn7r9peqovH/nekU9UWUfI?=
 =?iso-8859-1?Q?J5engSd0C7BhJ1VGQr1kgUJORAnPBg4hv8tDhGIlDTsS4R01dRf5KwDEZ5?=
 =?iso-8859-1?Q?Eex88ZO8MW/xAlR6pTn82J52UID368Je3gwA/7tZafA2gT5GLHKMdvBfRb?=
 =?iso-8859-1?Q?0E71ZFyQ+tW7ao0yIqcoiawPa55YMykgJRqzukgdnE9DPGDhirsISmo04x?=
 =?iso-8859-1?Q?Eepulep+xFBOuy5inL9Wdca7v7h6PrhWulHeQKfysjQ9FLUbAebOrzRZeZ?=
 =?iso-8859-1?Q?ZMgGBXvDC9jisBBgJkB6goNon5yx2NK6IlydLYtrb7+5nEOUSEF/KjIMPw?=
 =?iso-8859-1?Q?aq4TKJCApKlHW+BzYFFENvpqYY1RgdaWAfsDqM+O8vA8iLsSXQF9sep2Sj?=
 =?iso-8859-1?Q?NAXUGZrbC0fuFkPPyzzphkRTQ8Cm74lrcOFPNTtVaya5CwDI93ZeAjFDuQ?=
 =?iso-8859-1?Q?AxMA8kAg/EqR9lblnY2nZ0oUS68daFA5v3NkPMSt0blGJFOlBOzjt4j+oX?=
 =?iso-8859-1?Q?TCa4FDLffXFigSaXvdkZGcWUNYWB5Kaimn3qpcIlpqkMotXOYm64c7ju9H?=
 =?iso-8859-1?Q?+hMKU71RkAq6yItSB/+QaDe/wK2oR5W7Ib889TSCtkEAcYkwYiBJHBHKW8?=
 =?iso-8859-1?Q?gtMghLmyIJ3d1BP6kTBjn/BWZSZkJPm3RrQwbBtUrNNX6K/ggn95PUM/e5?=
 =?iso-8859-1?Q?d7lzIaINthpYA2rNJ9lRMGhC9GskGPmJL5BtWBHVim2Npgn0dFuxXH4XXf?=
 =?iso-8859-1?Q?HFJBGQ7XL0WFnqX5QZpiRiLeAITSLYC7oon55NgKWveOJjMpglvZY/qF2V?=
 =?iso-8859-1?Q?Ir4PfXfblWXjWAThn9BB/kMW4UjXCRJDayrtft0szMax9cBUO9dvtCerZa?=
 =?iso-8859-1?Q?hJjZNmosKsdxS+x9hdYtWHNCFuzFymZNz4C8VtfHkrUbZAl52VHTC/5ebj?=
 =?iso-8859-1?Q?BJIHnKE0HyRMa89I768N3h8z/NupMP46AZBMxl5gHmb7wIp59TGgdqeDab?=
 =?iso-8859-1?Q?n5XuH9IWP1YQQxqqChTZyVB48Ffc0RoeJBtjsBLZN3L+r4iSUG2fl2ldUz?=
 =?iso-8859-1?Q?hgrMhWqV8V+jU/fyH5LOjQiZMJe+MTQeH8HDpPaCC9niJkaNP5UWVIHDjj?=
 =?iso-8859-1?Q?P17Zo05a4q/Hby5BtHX54OkiNsJaSYAys0xjAtTxfUe3NzeAcWkkQ46I6J?=
 =?iso-8859-1?Q?oOM+zQuoBb/k79d7GpmEVRrURbiwnh7pWNLQuoo3WPtDGWpu4yGzOlQtr+?=
 =?iso-8859-1?Q?55XOnre1gBzUBC/KmD30IW6gyQRf5gC04/OP/CIiFqKLuz7ra0QH2XaRwv?=
 =?iso-8859-1?Q?BskCAeZN4w=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7ec186c2-5767-4f28-c386-08df39d029f1
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:32.8947
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: kPw/tZw2B3PVIcr0R/8aqf89USNSW1vU7NecbD7UE8QsF8TEG4fE4AORgRQxKgsEYb7u1DmEyVBZrKktG/A90Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-ebf023/1793727034-C38C1B50-89595D96/0/0
X-purgate-type: clean
X-purgate-size: 19476

From: Rahul Singh <rahul.singh@arm.com>

Event queue is used to send the events to guest when there is an events/
faults. Add support for event queue to send events to guest.

Global error in SMMUv3 hw will be updated in smmu_gerror and
smmu_gerrorn register. Add support for global error registers to send
global error to guest.

Add architectural error handling to the emulated command queue,
updating the global error register and stopping command consumption
on error.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/dom0less-build.c          |  50 +++--
 xen/drivers/passthrough/arm/smmu-v3.h  |  20 ++
 xen/drivers/passthrough/arm/vsmmu-v3.c | 246 +++++++++++++++++++++++--
 xen/include/public/arch-arm.h          |   2 +
 4 files changed, 295 insertions(+), 23 deletions(-)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index b55218d920..6ad2a1b745 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -386,34 +386,60 @@ int __init arch_parse_dom0less_node(struct dt_device_=
node *node,
     if ( !dt_property_read_u32(node, "nr_spis", &d_cfg->arch.nr_spis) )
     {
         int vpl011_virq =3D GUEST_VPL011_SPI;
+        int vsmmu_virq =3D GUEST_VSMMU_SPI;
=20
         d_cfg->arch.nr_spis =3D vgic_def_nr_spis();
=20
         /*
-         * The VPL011 virq is GUEST_VPL011_SPI, unless direct-map is
-         * set, in which case it'll match the hardware.
-         *
-         * Since the domain is not yet created, we can't use
-         * d->arch.vpl011.irq. So the logic to find the vIRQ has to
-         * be hardcoded.
-         * The logic here shall be consistent with the one in
-         * domain_vpl011_init().
+         * The VPL011 and VSMMU interrupts use predefined virtual SPIs,
+         * unless direct-map is set, in which case they match the
+         * corresponding hardware interrupts.
          */
         if ( flags & CDF_directmap )
         {
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+            struct host_iommu *hw_iommu;
+#endif
+            /*
+             * Since the domain is not yet created, we can't use
+             * d->arch.vpl011.irq. So the logic to find the vIRQ has to
+             * be hardcoded.
+             * The logic here shall be consistent with the one in
+             * domain_vpl011_init().
+             */
             vpl011_virq =3D serial_irq(SERHND_DTUART);
             if ( vpl011_virq < 0 )
                 panic("Error getting IRQ number for this serial port %d\n"=
,
                         SERHND_DTUART);
-        }
=20
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+            /*
+             * The host SMMU list is already populated during SMMUv3 drive=
r
+             * probe, so we can determine the highest SMMU interrupt ID
+             * from this list.
+             */
+            vsmmu_virq =3D 0;
+            list_for_each_entry(hw_iommu, &host_iommu_list, entry)
+            {
+                vsmmu_virq =3D MAX(vsmmu_virq, hw_iommu->irq);
+            }
+#endif
+        }
         /*
-            * vpl011 uses one emulated SPI. If vpl011 is requested, make
-            * sure that we allocate enough SPIs for it.
-            */
+         * vpl011 uses one emulated SPI. If vpl011 is requested, make
+         * sure that we allocate enough SPIs for it.
+         */
         if ( dt_property_read_bool(node, "vpl011") )
             d_cfg->arch.nr_spis =3D MAX(d_cfg->arch.nr_spis,
                                       vpl011_virq - 32 + 1);
+
+        /*
+         * vsmmu uses one emulated SPI. If vsmmu is enabled, make
+         * sure that we allocate enough SPIs for it.
+         */
+        if ( d_cfg->arch.viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_SMMUV=
3 )
+            d_cfg->arch.nr_spis =3D MAX(d_cfg->arch.nr_spis,
+                                      vsmmu_virq - 32 + 1);
     }
     else if ( flags & CDF_hardware )
         panic("nr_spis cannot be specified for hardware domain\n");
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug=
h/arm/smmu-v3.h
index 4a912be740..44ecb5d89c 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -358,6 +358,26 @@
=20
 #define EVTQ_0_ID			GENMASK_ULL(7, 0)
=20
+#define EVT_ID_BAD_STREAMID		0x02
+#define EVT_ID_BAD_STE		    	0x04
+#define EVT_ID_TRANSLATION_FAULT	0x10
+#define EVT_ID_ADDR_SIZE_FAULT		0x11
+#define EVT_ID_ACCESS_FAULT		0x12
+#define EVT_ID_PERMISSION_FAULT		0x13
+
+#define EVTQ_0_SSV			(1UL << 11)
+#define EVTQ_0_SSID			GENMASK_ULL(31, 12)
+#define EVTQ_0_SID			GENMASK_ULL(63, 32)
+#define EVTQ_1_STAG			GENMASK_ULL(15, 0)
+#define EVTQ_1_STALL			(1UL << 31)
+#define EVTQ_1_PnU			(1UL << 33)
+#define EVTQ_1_InD			(1UL << 34)
+#define EVTQ_1_RnW			(1UL << 35)
+#define EVTQ_1_S2			(1UL << 39)
+#define EVTQ_1_CLASS			GENMASK_ULL(41, 40)
+#define EVTQ_1_TT_READ			(1UL << 44)
+#define EVTQ_2_ADDR			GENMASK_ULL(63, 0)
+#define EVTQ_3_IPA			GENMASK_ULL(51, 12)
 /* PRI queue */
 #define PRIQ_ENT_SZ_SHIFT		4
 #define PRIQ_ENT_DWORDS			((1 << PRIQ_ENT_SZ_SHIFT) >> 3)
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 72f8075e0a..17e83dcb1a 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -86,6 +86,35 @@
 #define smmu_get_ste_s1ctxptr(x)    FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK,=
 \
                                     FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, =
x))
=20
+/* event queue entry */
+struct arm_smmu_evtq_ent {
+    /* Common fields */
+    uint8_t     opcode;
+    uint32_t    sid;
+
+    /* Event-specific fields */
+    union {
+        struct {
+            uint32_t ssid;
+            bool ssv;
+        } c_bad_ste_streamid;
+
+        struct {
+            bool stall;
+            uint16_t stag;
+            uint32_t ssid;
+            bool ssv;
+            bool s2;
+            uint64_t addr;
+            bool rnw;
+            bool pnu;
+            bool ind;
+            uint8_t class;
+            uint64_t addr2;
+        } f_translation;
+    };
+};
+
 /* stage-1 translation configuration */
 struct arm_vsmmu_s1_trans_cfg {
     paddr_t s1ctxptr;
@@ -116,6 +145,7 @@ struct virt_smmu {
     uint32_t    strtab_base_cfg;
     uint64_t    strtab_base;
     uint32_t    irq_ctrl;
+    uint32_t    virq;
     uint64_t    gerror_irq_cfg0;
     uint64_t    evtq_irq_cfg0;
     struct      arm_vsmmu_queue evtq, cmdq;
@@ -161,9 +191,15 @@ static inline bool smmu_get_evtq_enabled(struct virt_s=
mmu *smmu)
     spin_unlock(&smmu->cr0_lock);
=20
     return enabled;
-};
+}
=20
 /* Queue manipulation functions */
+static bool queue_full(struct arm_vsmmu_queue *q)
+{
+    return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) &&
+           Q_WRP(q, q->prod) !=3D Q_WRP(q, q->cons);
+}
+
 static bool queue_empty(struct arm_vsmmu_queue *q)
 {
     return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) &&
@@ -176,12 +212,141 @@ static void queue_inc_cons(struct arm_vsmmu_queue *q=
)
     q->cons =3D Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons);
 }
=20
+static void queue_inc_prod(struct arm_vsmmu_queue *q)
+{
+    u32 prod =3D (Q_WRP(q, q->prod) | Q_IDX(q, q->prod)) + 1;
+    q->prod =3D Q_OVF(q->prod) | Q_WRP(q, prod) | Q_IDX(q, prod);
+}
+
 static void dump_smmu_command(uint64_t *command)
 {
     gprintk(XENLOG_ERR, "cmd 0x%02llx: %016"PRIx64" %016"PRIx64"\n",
              smmu_cmd_get_command(command[0]), command[0], command[1]);
 }
=20
+static void arm_vsmmu_update_irq(struct virt_smmu *smmu)
+{
+    bool evt_pending =3D false;
+    bool gerr_pending =3D false;
+    uint32_t irq_ctrl;
+
+    spin_lock(&smmu->irq_cfg_lock);
+    irq_ctrl =3D smmu->irq_ctrl;
+    spin_unlock(&smmu->irq_cfg_lock);
+
+    spin_lock(&smmu->evt_queue_lock);
+    evt_pending =3D !queue_empty(&smmu->evtq);
+    spin_unlock(&smmu->evt_queue_lock);
+
+    spin_lock(&smmu->gerror_lock);
+    gerr_pending =3D (smmu->gerror ^ smmu->gerrorn) !=3D 0;
+    spin_unlock(&smmu->gerror_lock);
+
+    vgic_inject_irq(smmu->d, NULL, smmu->virq,
+                    ((irq_ctrl & IRQ_CTRL_EVTQ_IRQEN) && evt_pending) ||
+                    ((irq_ctrl & IRQ_CTRL_GERROR_IRQEN) && gerr_pending));
+}
+
+static void arm_vsmmu_set_gerror(struct virt_smmu *smmu, uint32_t gerror_e=
rr)
+{
+    uint32_t pending, new_gerrors;
+
+    spin_lock(&smmu->gerror_lock);
+
+    pending =3D smmu->gerror ^ smmu->gerrorn;
+    new_gerrors =3D ~pending & gerror_err;
+
+    if ( new_gerrors )
+        smmu->gerror ^=3D new_gerrors;
+
+    spin_unlock(&smmu->gerror_lock);
+
+    arm_vsmmu_update_irq(smmu);
+}
+
+static int arm_vsmmu_write_evtq(struct virt_smmu *smmu, uint64_t *evt)
+{
+    struct arm_vsmmu_queue *q =3D &smmu->evtq;
+    struct domain *d =3D smmu->d;
+    paddr_t addr;
+    int ret;
+
+    if ( !smmu_get_evtq_enabled(smmu) )
+        return 0;
+
+    spin_lock(&smmu->evt_queue_lock);
+
+    if ( queue_full(q) )
+    {
+        /*
+        * Toggle OVFLG only if the previous overflow
+        * has already been acknowledged.
+        */
+        if ( Q_OVF(smmu->evtq.prod) =3D=3D
+             Q_OVF(smmu->evtq.cons) )
+            smmu->evtq.prod ^=3D Q_OVERFLOW_FLAG;
+
+        spin_unlock(&smmu->evt_queue_lock);
+        return 0;
+    }
+
+    addr =3D Q_PROD_ENT(q);
+
+    ret =3D access_guest_memory_by_gpa(d, addr, evt,
+                                     sizeof(*evt) * EVTQ_ENT_DWORDS, true)=
;
+    if ( ret )
+    {
+        spin_unlock(&smmu->evt_queue_lock);
+        return ret;
+    }
+
+    queue_inc_prod(q);
+
+    spin_unlock(&smmu->evt_queue_lock);
+
+    arm_vsmmu_update_irq(smmu);
+
+    return 0;
+}
+
+static void arm_vsmmu_send_event(struct virt_smmu *smmu,
+                                 struct arm_smmu_evtq_ent *ent)
+{
+    uint64_t evt[EVTQ_ENT_DWORDS];
+    int ret;
+
+    memset(evt, 0, 1 << EVTQ_ENT_SZ_SHIFT);
+
+    if ( !smmu_get_evtq_enabled(smmu) )
+        return;
+
+    evt[0] |=3D FIELD_PREP(EVTQ_0_ID, ent->opcode);
+    evt[0] |=3D FIELD_PREP(EVTQ_0_SID, ent->sid);
+
+    switch ( ent->opcode )
+    {
+    case EVT_ID_BAD_STREAMID:
+    case EVT_ID_BAD_STE:
+        evt[0] |=3D FIELD_PREP(EVTQ_0_SSID, ent->c_bad_ste_streamid.ssid);
+        evt[0] |=3D FIELD_PREP(EVTQ_0_SSV, ent->c_bad_ste_streamid.ssv);
+        break;
+    case EVT_ID_TRANSLATION_FAULT:
+    case EVT_ID_ADDR_SIZE_FAULT:
+    case EVT_ID_ACCESS_FAULT:
+    case EVT_ID_PERMISSION_FAULT:
+        break;
+    default:
+        gdprintk(XENLOG_WARNING, "vSMMUv3: event opcode is bad\n");
+        break;
+    }
+
+    ret =3D arm_vsmmu_write_evtq(smmu, evt);
+    if ( ret )
+        arm_vsmmu_set_gerror(smmu, GERROR_EVTQ_ABT_ERR);
+
+    return;
+}
+
 static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
                               uint64_t *ste)
 {
@@ -190,6 +355,14 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, =
uint32_t sid,
     uint32_t log2size;
     int strtab_size_shift;
     int ret;
+    struct arm_smmu_evtq_ent ent =3D {
+        .opcode =3D EVT_ID_BAD_STREAMID,
+        .sid =3D sid,
+        .c_bad_ste_streamid =3D {
+            .ssid =3D 0,
+            .ssv =3D false,
+        },
+    };
=20
     spin_lock(&smmu->strtab_cfg_lock);
     log2size =3D MIN(FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base=
_cfg),
@@ -197,7 +370,10 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, =
uint32_t sid,
     spin_unlock(&smmu->strtab_cfg_lock);
=20
     if ( sid >=3D (1U << log2size) )
+    {
+        arm_vsmmu_send_event(smmu, &ent);
         return -EINVAL;
+    }
=20
     spin_lock(&smmu->strtab_cfg_lock);
     if ( FIELD_GET(STRTAB_BASE_CFG_FMT, smmu->strtab_base_cfg) =3D=3D
@@ -250,6 +426,7 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, u=
int32_t sid,
         {
             gdprintk(XENLOG_ERR, "idx=3D%d > max_l2_ste=3D%d\n",
                      idx, max_l2_ste);
+            arm_vsmmu_send_event(smmu, &ent);
             return -EINVAL;
         }
         addr =3D l2ptr + idx * sizeof(*ste) * STRTAB_STE_DWORDS;
@@ -278,6 +455,14 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu=
, uint32_t sid,
                                 uint64_t *ste)
 {
     uint64_t val =3D ste[0];
+    struct arm_smmu_evtq_ent ent =3D {
+        .opcode =3D EVT_ID_BAD_STE,
+        .sid =3D sid,
+        .c_bad_ste_streamid =3D {
+            .ssid =3D 0,
+            .ssv =3D false,
+        },
+    };
=20
     if ( !(val & STRTAB_STE_0_V) )
     {
@@ -316,6 +501,7 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu,=
 uint32_t sid,
     return 0;
=20
  bad_ste:
+    arm_vsmmu_send_event(smmu, &ent);
     return -EINVAL;
 }
=20
@@ -373,16 +559,19 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *sm=
mu)
      * monopolizing CPU time. Implement commands rescheduling and asynchro=
nous
      * execution as outlined in the design.
      */
-    while ( !queue_empty(q) )
+    while ( !queue_empty(q) &&
+          ((smmu->gerror ^ smmu->gerrorn) & (GERROR_CMDQ_ERR)) =3D=3D 0 )
     {
-        int ret;
-
         addr =3D Q_CONS_ENT(q);
         ret =3D access_guest_memory_by_gpa(d, addr, command,
                                          sizeof(command), false);
-        if ( ret ) {
-            queue_inc_cons(q);
-            return ret;
+        if ( ret )
+        {
+            smmu->cmdq.cons &=3D ~CMDQ_CONS_ERR;
+            smmu->cmdq.cons |=3D FIELD_PREP(CMDQ_CONS_ERR,
+                                        CMDQ_ERR_CERROR_ABT_IDX);
+            arm_vsmmu_set_gerror(smmu, GERROR_CMDQ_ERR);
+            break;
         }
=20
         switch ( smmu_cmd_get_command(command[0]) )
@@ -406,6 +595,10 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smm=
u)
         default:
             gdprintk(XENLOG_ERR, "vSMMUv3: unhandled command\n");
             dump_smmu_command(command);
+            smmu->cmdq.cons &=3D ~CMDQ_CONS_ERR;
+            smmu->cmdq.cons |=3D FIELD_PREP(CMDQ_CONS_ERR,
+                                          CMDQ_ERR_CERROR_ILL_IDX);
+            arm_vsmmu_set_gerror(smmu, GERROR_CMDQ_ERR);
             break;
         }
=20
@@ -416,6 +609,15 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smm=
u)
                      ret);
             dump_smmu_command(command);
         }
+
+        /*
+        * Stop consuming the command queue if a command error occurred.
+        * CMDQ_CONS continues to point at the offending command until the
+        * error is acknowledged.
+        */
+        if ( (smmu->gerror ^ smmu->gerrorn) & GERROR_CMDQ_ERR )
+            break;
+
         queue_inc_cons(q);
     }
=20
@@ -454,6 +656,7 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info=
_t *info,
             vreg_reg32_update(&reg32, r, info);
             smmu->evtq.cons =3D reg32;
             spin_unlock(&smmu->evt_queue_lock);
+            arm_vsmmu_update_irq(smmu);
             break;
         default:
             printk(XENLOG_G_ERR
@@ -584,6 +787,7 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info=
_t *info,
             vreg_reg32_update(&reg32, r, info);
             smmu->irq_ctrl =3D reg32;
             spin_unlock(&smmu->irq_cfg_lock);
+            arm_vsmmu_update_irq(smmu);
             break;
=20
         case VREG64(ARM_SMMU_GERROR_IRQ_CFG0):
@@ -608,11 +812,20 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_in=
fo_t *info,
=20
         case VREG32(ARM_SMMU_GERRORN):
             if ( dabt.size !=3D DABT_WORD ) goto bad_width;
+            /*
+             * Acquire cmd_queue_lock before updating GERRORN to serialize=
 error
+             * acknowledgement with command processing and ensure that rep=
aired
+             * commands are not skipped.
+             */
+            spin_lock(&smmu->cmd_queue_lock);
             spin_lock(&smmu->gerror_lock);
             reg32 =3D smmu->gerrorn;
             vreg_reg32_update(&reg32, r, info);
             smmu->gerrorn =3D reg32;
             spin_unlock(&smmu->gerror_lock);
+            arm_vsmmu_update_irq(smmu);
+            arm_vsmmu_handle_cmds(smmu);
+            spin_unlock(&smmu->cmd_queue_lock);
             break;
=20
         default:
@@ -916,9 +1129,10 @@ static const struct mmio_handler_ops vsmmuv3_mmio_han=
dler =3D {
     .write =3D vsmmuv3_mmio_write,
 };
=20
-static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t siz=
e,
-                               uint32_t features)
+static int vsmmuv3_init_single(struct domain *d, paddr_t addr,
+                               paddr_t size, uint32_t virq, uint32_t featu=
res)
 {
+    int ret;
     struct virt_smmu *smmu;
=20
     smmu =3D xzalloc(struct virt_smmu);
@@ -927,6 +1141,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr=
_t addr, paddr_t size,
=20
     smmu->d =3D d;
     smmu->features =3D features;
+    smmu->virq =3D virq;
     smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES;
     smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES;
=20
@@ -939,6 +1154,15 @@ static int vsmmuv3_init_single(struct domain *d, padd=
r_t addr, paddr_t size,
     spin_lock_init(&smmu->strtab_cfg_lock);
     spin_lock_init(&smmu->irq_cfg_lock);
=20
+    ret =3D vgic_reserve_virq(d, virq);
+    if ( !ret )
+    {
+        printk(XENLOG_G_ERR
+                 "vSMMUv3: Failed to reserve domain vIRQ %u\n", virq);
+        xfree(smmu);
+        return -EINVAL;
+    }
+
     register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
=20
     /* Register the vIOMMU to be able to clean it up later. */
@@ -990,7 +1214,7 @@ static int domain_vsmmuv3_init(struct domain *d)
         {
             smmu =3D (const struct arm_smmu_device *) hw_iommu->iommu;
             ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size,
-                                      smmu->features);
+                                      hw_iommu->irq, smmu->features);
             if ( ret )
                 return ret;
         }
@@ -1033,7 +1257,7 @@ static int domain_vsmmuv3_init(struct domain *d)
         }
=20
         ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S=
IZE,
-                                  features);
+                                  GUEST_VSMMU_SPI, features);
         if ( ret )
             return ret;
     }
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index 7c76f2afd4..35cdbbb867 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -524,6 +524,8 @@ typedef uint64_t xen_callback_t;
 #define GUEST_VIRTIO_MMIO_SPI_FIRST   33
 #define GUEST_VIRTIO_MMIO_SPI_LAST    43
=20
+#define GUEST_VSMMU_SPI         44
+
 /*
  * SGI is the preferred delivery mechanism of FF-A pending notifications o=
r
  * schedule recveive interrupt. SGIs 8-15 are normally not used by a guest
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470363.1679174 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILI-0002gF-Ht; Tue, 03 Nov 2026 17:30:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470363.1679174; Tue, 03 Nov 2026 17:30:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILI-0002fC-Al; Tue, 03 Nov 2026 17:30:40 +0000
Received: by outflank-mailman (input) for mailman id 1470363;
 Tue, 03 Nov 2026 17:30:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILH-0002Sk-EE
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILG-004K6F-R7
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:38 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a35-2eae-0a2a0a5409dd-0a2a4506cece-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:38 +0100
Received: from [52.101.83.109]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a3c-195a-0a2a45060019-3465536dc8b8-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:38 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:34 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=m8T2ztvcC86B07iAj7zFlqx7uXPMubmkTyhotziZGM0ih38FGKAJl3Fx6MGz5gusUXPeXJ2dEhcEGj+KbJ2SjvMxdtpQBQn4D723vef44ogzLuh61Uffhyjl8YXEpT2egqfi12odhjPzSmPzS16YoPnLUQSDOSfJJxyCavcSYnnGdHARzqbTmQ+XJv3vGcXplWBOvVfyddGH+HGOkbsGecWAZX2OAwwA9qEoGVix3aWBBCLCTTmNOxAFOSos1p98MOy91RhLZ/gSdddn+CLW/5PrvkQLZoIsjw3UrCk+0DTrm12GXl3Bh06Cg7LDLRUBOPE0cPN4QJsWJZyBaMrGfA==
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=V4aMPVR5bzl2+OAgq9I6OJ3Sq9zqxs7HTPitN6DAzrk=;
 b=rNVEYwKY9UvzO+6UYT1o4/IkZNrshhhM6Gdtr7ohEq/NehTkwODmvJwr0zwkN32aEayhl05xaMxbtwiwmUy5v4y7g5i2rbl5J9dc/i/huhWC/12Jggapl73NDJo1geg2oBusAErQaZbkDvmJD8fnwtslbCYJOdEAJS+9qK/o5XfdPhVsCPcovdJWQ/t+SlvM/gDzAq+7Z2rjDjlRVx/sNCqfip1RU+opnILjHo/QVFvWULxq/CH4wkgW76Aqt7CQzvg2AvBqswWbe/3HeeqNLbXQfVfrYL4z6OkOOKyYm8ubO1vRcnKcEfegQ2FZNktH3v/wzjOBgF+W8gB+wLfJPg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=V4aMPVR5bzl2+OAgq9I6OJ3Sq9zqxs7HTPitN6DAzrk=;
 b=gYhkVrxyMqOeY06C7x5xGJ1WLrAX9BfKCXhkXOEyNCf6Drt8ssYHGpXVjK15OcPC/IVEFUiErPXKqx3wDwfcn9RDAGyHRoRtjuaA112bt8X+2D8GzUdI2gyYmGo8kn4Jfq4gqfllbnv5cIS8ehbvNM7+XuntXHCdQreNM4DtMiIcrQDu9i1u2r3QfZzqEx7ksQ8gaHHDMUu61mnTDE6ILYc/0zUr5cOcRvg+ea5vEkcRK8t/nuzFDgbm6o5bMSvhhIzQRsdvu6S87Yj5R+DPly+iY4Byi4HGEFyZMNMZShtcQfGHD1YJH9xaUrKvA1DfwFTQhjorI6swc8RLxmhbnA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 13/22] xen/arm: vsmmuv3: IOMMU device tree node for dom0
Thread-Topic: [PATCH v5 13/22] xen/arm: vsmmuv3: IOMMU device tree node for
 dom0
Thread-Index: AQHda7kISK4xhrpTV06T0DJpXA828w==
Date: Tue, 3 Nov 2026 17:30:34 +0000
Message-ID:
 <4f88272d7a7d8c46dffffc688cb92ba2ac47d5ce.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: abcc8502-6bc6-4ae0-4e53-08df39d02b0e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 QOOmPOuX0sXW7y/IoXjYvdEUKD9dw8qavAWC/rW6GIW8YgiyKaM88IZTLkQQyyYYpW4Ayjf04rOg5fxHcD/AHqpCwUa4t+qkUSIPWq91vIRqi8SKEHwCwnsYUs/Vbvv3m9MfHc5zVbEf5mKMdHVlBUGrQYFWouk7MisW48xBjZmzitT1l4qKUAxgnbjKQnerXlRRbRs2GjLtGKlhyPRzKH8J2RB9VzYgFKzv7vstBNZ97S3Q7MUjUxw/CeMboBiaAIqZWk7tY0UPyDZuGWAGNWYIsBciYxla5mKz5NdRSDe99JgUpsq6mKw79Pjq+VzQG0jtbmK9vLOMxssI2/u1vSZEW2PJDXD7rPoIibtT1skm1PSpXAE0bbxy3RuK2MjurmQUdIidvBfW11TbEYlL2NgBJ7E6QU1QePPySdlZLxMBvBxGcASotv5Jx3oFfP7NQEnvEpSNVlJrar4OeXLenUAwARsPnqDDRPqDkNBiv9bYLEedmP8R9nD3+hLUmaO+J0oO1jUbAuRzhzosouqrW2lbAlJO4M1JPjfacRxFyAxlSjFswrKYF7nO54izPtSYV8slH8ffoIGPL0PPKL1wqmQw7RLJPRVsurAP8bDdsjstavw2CrKm9I0atGbWAHOAJUaRml/DV1NxGAp+ci6MX19de7hpjPV5cPrgPZA0XpDxiHPJ2sThYqJY/8LU6lFBR2lQQPoMSeZZmzDxKd/S4j5M8D1f+9Hj63kKeq/X3BY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ekKjAeCR+2PJhzqo0Bf0JAOQByK4QYjT+v+AyIzC5SOXfMtqQB4tAoYOsp?=
 =?iso-8859-1?Q?uCB8drCZ/R4G89B7emqmS8fDRx+MXoi5rLxmEjvhFA+kyamABzF9mgAQYt?=
 =?iso-8859-1?Q?26Rz15V7KCnsP3YfxGkU40e6xO1wpgwteAx+4mmslzOp4VWN96RB6el3bp?=
 =?iso-8859-1?Q?gNp7RQlBImxNAEYmj0855D9sVNk6FPmFJ5rNg8Dlvnvy7Q9HAm54jQAkjA?=
 =?iso-8859-1?Q?dfj2iIgMq0SQAqx78JYMGxfjyJl68bP7cq+5n+0ZmUWO2E7aFFZQojTSkz?=
 =?iso-8859-1?Q?GrCfyF/x7pZiCEOfxPsTJJheiG7ZWm/ZZyqwXJ1huaJLKq1FfDyZOsX6GR?=
 =?iso-8859-1?Q?D91IZxHY5i7rrqSoPKcE0IMxD76pq24tOF7xHfeYn5J8T6s9vyjoEOQWfe?=
 =?iso-8859-1?Q?rBTYc/Atd8FI02zi3LP5Nr/ga+QFZKMPOiNNTDVLzO7R2VmdCtMyTe6vDQ?=
 =?iso-8859-1?Q?QkikOX70odkw9UktVJbi1NqTRXFKe1LaRIaRUi03tRSJb5IeJoxm8Ah/Nh?=
 =?iso-8859-1?Q?LQKAfIjwT1mnl9n2UcfgcsXYgA3SWuchO7+fUmUEjfqYP2JfSn/27j/Wdh?=
 =?iso-8859-1?Q?ImIqzsZ4miOaSmtUDhME0RKLC7B9RLEtjsAtiGIVE0dry7PlrfAm+Fhfgb?=
 =?iso-8859-1?Q?ddaqo8zo86xib9atDsMC9vfpcxfN70mYBPC4THniOG2Yonztlxzc3J/Zc4?=
 =?iso-8859-1?Q?S6zDwTZOEC2vQqAGmMeaAa48oD3zVcvktSxFzFr91IyKw/17m6o+KGf5nF?=
 =?iso-8859-1?Q?jwAMjt/2/R1AyoiS+1pZRBWPClcUjoaZn2XGmMVO0er4L79H4zHs6cgo1Z?=
 =?iso-8859-1?Q?qWnp/4su7ex5MNZr9CyqG2YhzdvvwfOCmtDYNQ5+QJOhlXj8ScODnbBevT?=
 =?iso-8859-1?Q?8lnFm/SqcGBkvvU3aHJKx0LAHqHDeVUzVeeRtnmhG28acMXA3qSGxCab44?=
 =?iso-8859-1?Q?3raSu/Nu52tEEbL56QR6q6PDKLkwEkKU7LRPq0aLrNN7BQ1uXjn01pVyGv?=
 =?iso-8859-1?Q?XAt/7k8+TOnmEhrYXypINhgurnhk4mE7ocbRGMwWhM4fhqrGL7BWiKdFJy?=
 =?iso-8859-1?Q?+njE6ue+M88z1OnCKD4BlmFcYqYsTwKFlfXIyIjEPY/LkBWw/BsHZsx+oK?=
 =?iso-8859-1?Q?PVChjz6935Hi6vW2zfc9o0dCupub6UwolbNx1xnpAsmiiRnawVLp19RA4/?=
 =?iso-8859-1?Q?9pmF/26jfE0WaUk54CR6+cgVo7JCEIN0X6Q9xaj9G292q3ilK1PmMLFgvM?=
 =?iso-8859-1?Q?SacCeK4wUbp5gNRB3TEIXTslMKJxtI36ivlsyHcmUJCV9Ds4rP9aBRqHd0?=
 =?iso-8859-1?Q?bnhYTm7CoNlmrHWD/ZtsGmzOfldcZ09xDbl3bvWwn0TmtDmYZpvbSNX6+K?=
 =?iso-8859-1?Q?UVqI5tnB8W1cGwYc6PihSgidEtgdETUsYZ4LnbYWwo9acM8aP85LOd9+1/?=
 =?iso-8859-1?Q?7lFsBkGhE6zNW0SkxTds3KluhiOi9PD7sGx44/KqqCRPSJ9uL81NVH4UTA?=
 =?iso-8859-1?Q?ctt4GKGD7FC5oVZ9buPOt1MpiJZYUsFMZhknSzKOUoVtdooXa66C5ROUyd?=
 =?iso-8859-1?Q?Xv/DDfkBnQAjBktpaSHVwD8nq1TplZ75IWMIyqlRM7uopqL9he6I82zOJj?=
 =?iso-8859-1?Q?KeJky/S/lqjglH6v5kGmOgM3fIYplWVcrUCcVU4xMlgPxMJeTWY8icMxE5?=
 =?iso-8859-1?Q?BDXN3AKCrbVgAff0JesVzL5HpZFsW496Dr6MfpMEE68plxRghMk8r/oj8v?=
 =?iso-8859-1?Q?ScYin89IyZhtTkdegKeQUiLMMVz56O+9Z2GztyAZklyBwzT3sr2t74u0Tp?=
 =?iso-8859-1?Q?kyOhBCpXZw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: abcc8502-6bc6-4ae0-4e53-08df39d02b0e
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:34.8187
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: N1viSIoUAVTJGXDT7wJqeASFLFjg/6N38k+Izv3nUVf7LtRmAqtbUbtpS/nfXqiJ/e0SIKB920eakUh7NtDHSw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727038-F6A7477B-51551D85/0/0
X-purgate-type: clean
X-purgate-size: 5241

From: Rahul Singh <rahul.singh@arm.com>

XEN will create an IOMMU device tree node in the device tree
to enable the dom0 to discover the virtual SMMUv3 during dom0 boot.
IOMMU device tree node will only be created when viommu is enabled
via Kconfig build options.

"iommus" property will be added for dom0 devices to virtual
IOMMU node to enable the dom0 linux kernel to configure the IOMMU.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/domain_build.c       | 104 +++++++++++++++++++++++++++++-
 xen/arch/arm/include/asm/viommu.h |   1 +
 2 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index f749f9ae10..79727ce206 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -558,9 +558,12 @@ static int __init write_properties(struct domain *d, s=
truct kernel_info *kinfo,
             continue;
         }
=20
-        if ( iommu_node )
+        /*
+         * Expose IOMMU specific properties to hwdom when vIOMMU is
+         * enabled.
+         */
+        if ( iommu_node && viommu_get_type() =3D=3D XEN_DOMCTL_CONFIG_VIOM=
MU_NONE )
         {
-            /* Don't expose IOMMU specific properties to hwdom */
             if ( dt_property_name_is_equal(prop, "iommus") )
                 continue;
=20
@@ -1468,6 +1471,97 @@ int __init make_timer_node(const struct kernel_info =
*kinfo)
     return res;
 }
=20
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+static int __init make_hwdom_viommu_node(const struct kernel_info *kinfo,
+                                         struct dt_device_node *node)
+{
+    uint32_t len;
+    int res;
+    char buf[24];
+    void *fdt =3D kinfo->fdt;
+    const void *prop =3D NULL;
+    const struct dt_device_node *iommu =3D NULL;
+    struct host_iommu *iommu_data;
+    gic_interrupt_t intr;
+
+    if ( list_empty(&host_iommu_list) )
+        return 0;
+
+    list_for_each_entry( iommu_data, &host_iommu_list, entry )
+    {
+        if ( iommu_data->hwdom_node_created ||
+             iommu_data->dt_node->parent !=3D node->parent )
+            continue;
+
+        iommu =3D iommu_data->dt_node;
+
+        snprintf(buf, sizeof(buf), "iommu@%"PRIx64, iommu_data->addr);
+
+        res =3D fdt_begin_node(fdt, buf);
+        if ( res )
+            return res;
+
+        prop =3D dt_get_property(iommu, "compatible", &len);
+        if ( !prop )
+        {
+            res =3D -FDT_ERR_XEN(ENOENT);
+            return res;
+        }
+
+        res =3D fdt_property(fdt, "compatible", prop, len);
+        if ( res )
+            return res;
+
+        if ( iommu->phandle )
+        {
+            res =3D fdt_property_cell(fdt, "phandle", iommu->phandle);
+            if ( res )
+                return res;
+        }
+
+        /* Use the same reg regions as the IOMMU node in host DTB. */
+        prop =3D dt_get_property(iommu, "reg", &len);
+        if ( !prop )
+        {
+            printk(XENLOG_ERR "vIOMMU: Can't find IOMMU reg property.\n");
+            res =3D -FDT_ERR_XEN(ENOENT);
+            return res;
+        }
+
+        res =3D fdt_property(fdt, "reg", prop, len);
+        if ( res )
+            return res;
+
+        prop =3D dt_get_property(iommu, "#iommu-cells", &len);
+        if ( !prop )
+        {
+            res =3D -FDT_ERR_XEN(ENOENT);
+            return res;
+        }
+
+        res =3D fdt_property(fdt, "#iommu-cells", prop, len);
+        if ( res )
+            return res;
+
+        res =3D fdt_property_string(fdt, "interrupt-names", "combined");
+        if ( res )
+            return res;
+
+        set_interrupt(intr, iommu_data->irq, 0xf, DT_IRQ_TYPE_LEVEL_HIGH);
+
+        res =3D fdt_property_interrupts(kinfo, &intr, 1);
+        if ( res )
+            return res;
+
+        iommu_data->hwdom_node_created =3D true;
+
+        fdt_end_node(fdt);
+    }
+
+    return res;
+}
+#endif
+
 static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
                               struct dt_device_node *node,
                               p2m_type_t p2mt)
@@ -1536,6 +1630,12 @@ static int __init handle_node(struct domain *d, stru=
ct kernel_info *kinfo,
     if ( dt_match_node(timer_matches, node) )
         return make_timer_node(kinfo);
=20
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+    if ( device_get_class(node) =3D=3D DEVICE_IOMMU &&
+         viommu_get_type() !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE )
+        return make_hwdom_viommu_node(kinfo, node);
+#endif
+
     /* Skip nodes used by Xen */
     if ( dt_device_used_by(node) =3D=3D DOMID_XEN )
     {
diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v=
iommu.h
index 844cf34d56..5ae21042f0 100644
--- a/xen/arch/arm/include/asm/viommu.h
+++ b/xen/arch/arm/include/asm/viommu.h
@@ -20,6 +20,7 @@ struct host_iommu {
     paddr_t size;
     /* Used for dom0 EVTQ and GERROR interrupts (1-1 IRQ mapping) */
     uint32_t irq;
+    bool hwdom_node_created;
 };
=20
 struct viommu_ops {
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470373.1679183 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILP-0003Vs-WC; Tue, 03 Nov 2026 17:30:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470373.1679183; Tue, 03 Nov 2026 17:30:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILP-0003Va-QT; Tue, 03 Nov 2026 17:30:47 +0000
Received: by outflank-mailman (input) for mailman id 1470373;
 Tue, 03 Nov 2026 17:30:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILN-0003HO-RB
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILN-004KAj-7v
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:45 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a35-2eae-0a2a0a5409dd-0a2a4506cece-38
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:45 +0100
Received: from [52.101.83.79]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a44-195a-0a2a45060019-3465534f39e8-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:45 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:43 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=ohFp/r7g0wssCKKS+6ToQzrvhnjyommBpUwez+7pW1bDPMMdbQ1Bp7uxUqWrX/G/TpJD3MV5DRudMBhgr01H0HjQ/3G+N/E/DMNlSt7p25CBBLJSAL4bP/VA6kEQHFLpK1lmDIXTs1pU9ULjq6kdPd5Qmpl24MqUOHnfqddvPIfgRV1Dv8iEosaBiveeES+DM1dWwz+V9jgCGBey+YqsVRew1NT02Kz2mxo4skegRUZNcXqCAiCgrxRk68kx5/Iu5wPytpnjwmyTulBrR6HFfmyABT/VhkHjFE3SMEp8mfwa0d3yGkt5tlZAt+A11OPshoOKDfCqdtMYVdv9WLcVLA==
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=xjDSPoDGSwSf3EnJMno/U3AlTZYLqnC/gCvJuJ4a6lU=;
 b=qpnyHtfYfLfQ/pkN6vUH19La1H8vgVVVgwf8sKUvGL2R2vv/RyjbaSKT34zepyahQTtJJZEUKAxvW/Jw1jYfWjbgoyW+XyJrz3CCsjCrlHUEaF+V/bmlaf63N970Lvl84+NqP5JB4YG13dxDiU6PN618MkJ75pDvRCnaqaDTrNBHeLEBv5XIsQeR6KHYzXhpOCvmSE6pRR8MNcVGEq2yaUtwcd3u91G4V0B/CfOMNvSGpURgzJX1JFnZuynEn6jCxb6+f0Cfr/l+howjUZL5l2Nft+wfrg0B1aZypbegGLfySlJz4Ix77U+o/3x5NT9Q3ilI7ITUW8/qohJX9fS3Cw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xjDSPoDGSwSf3EnJMno/U3AlTZYLqnC/gCvJuJ4a6lU=;
 b=aYojk+1DgmeO0jn/9JeAoASPDeLUDBLUa3QjE8athQ5pOZ5RTAUTaNAuHTGHVsi+geoYAgphyFBPBjoNqYCseTqASR927TYLq7J2X6tOHZQYNNTG0b5rCLqoVBgG0H3xvObdN0UjgBMcgtBMkixY0DrKOt53SNTsyv4UxQzjcmrwtB8dWwNgz5dZsJqUUjnJd0K7IjNdx+ilREEubO9qC/Kq5cMq4Pm+IHfV+DS80/G1dP0/wgkA4qA1l1Lkq+yKg6AzHXJHinDdW3vHYj8bo2Pj7/ROXdDN/DlxRXFOZNJCQTmOt6uL7btPxC3WHDvIzipgHAIBCfYsc449LvA0MQ==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, Jan
 Beulich <jbeulich@suse.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Milan Djokic <milan_djokic@epam.com>, Luca Fancellu
	<luca.fancellu@arm.com>
Subject: [PATCH v5 14/22] xen/arm: vsmmuv3: Emulated SMMUv3 device tree node
 for dom0less
Thread-Topic: [PATCH v5 14/22] xen/arm: vsmmuv3: Emulated SMMUv3 device tree
 node for dom0less
Thread-Index: AQHda7kNdMT5x1BE9UuSem23a2jAMA==
Date: Tue, 3 Nov 2026 17:30:43 +0000
Message-ID:
 <d9ebebace7bce6e058f0dc9534dabfff7993e6eb.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: e665fffa-330d-40e1-4b54-08df39d0300a
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|7416014|366016|38070700021|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 u3b8TBOyLuE74aHsr8wucBgkFkODJgWghZZvLM7/KpgAieYXYtfWnHhbzT79LDUVdDpzspWYILMjXqAOYpjVrJYJYziBcxVKQZV9HhsCoa9KXzB64XgEQ3fHQMIb72nqm1+k9Dbi7ThTP+TwFxhj4lkyzai8N5uHWZc3Ik4+tecm+0YK/gfi1l46DABFAfTA42PcnNETE4XiJF2+mHwTR/sxWDOk5eWNmGHzuPE7PJMTRKfaL2OKXD3UGTFx3Xqa3ZHDr6YcezSjpto0gqelLNwp2XQFFElNSJvD5UJt6pAyXirC9wdXubvTRnolSzoxYd2DBEBm3prIR8jwCBtN7QTzyRpfXo5gPcw7f3WkVctDIKyv6qYZn1ZrMxbIhhWjgSHkeKH+Vqtdpq6oIeVvrn8iDdT8Suqhp066brCa9utwQhOmXNVobEPjHnekfuDm+GFs+ZmHeHph2HG2NJ9u3IJXzTCgq0/28Rf7Gd2ZXnLbQbngR3QYfIQZBiy1MiYwGVIn6bfonXqaoiIkizEo3bKrgjWeItox49FHLAn7+5ZRVvNEyr61CGFNmS7ZUdbkdKbUtWEIpQSqTcFkc/u8HtRb+fAU4JBdpdI0fc81zP+G0nis+dSQMlKny8DqOtIHRi5vMaCDyaY4y9FGFwzF1u0oOrN3cDCmRQPsuxk8gadmPHrb0ebAtwVGPKSEdZ5MqGhokVQU1qTYe2MVryFMVFwU2foIEg/MbafJXFdeQSQ=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(7416014)(366016)(38070700021)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?MGGYhKz7i1P9d7C6WAiQIopynD45iqaJzh1xAKeS+XJkpBFQHJsrfglkKK?=
 =?iso-8859-1?Q?jPq6AWlzCIB8SIe83RwATRNnQ7s7x/tH49QqHrCFAlVc/yMcVXtmNn3RcU?=
 =?iso-8859-1?Q?0Bdq8O5/KSVYhLH1pf7puSa3+xs44D7iVa/JvRlitcBXm5EnSC8aFbRLe+?=
 =?iso-8859-1?Q?8fhgQnBOPfaiSYGLjaUuYq3GLoo97wOBIPk32LDh3QtIurZCjuxc5DAxsx?=
 =?iso-8859-1?Q?3gqwsF4GNBNHCFDxEMO/v+zbASZnE7ULVIPK29vZgBkT//KBSt8gjnrJxF?=
 =?iso-8859-1?Q?xVpYka6SfYA55W2n2wymlb0FRBysS7eoDvdOG/UJkVS3+lCPjie0Fgjt/w?=
 =?iso-8859-1?Q?Td7is3opKOrnDcKd0Df8/ulh8fxqDH+mzSNktXGsqybhednuNmp7ALEN1s?=
 =?iso-8859-1?Q?j5z+7+NT3CX/eh0ByH45/jmBUOGONr3GzBtwdC+xwg+f2/l/H51u2XzpPb?=
 =?iso-8859-1?Q?8bhReeRU6vlJZ02Vytn9qpD/RtifEIw4i1mdyicJ2JpYmfaNsz5NKlkpry?=
 =?iso-8859-1?Q?aO+fnKwOxy2A2jmL+pLJ2V9WPAP0V0r0h3gjnK0U4MBJKwRcBb5Tgs/nxs?=
 =?iso-8859-1?Q?ozUsLq595aUoN+AHmkpvBaSMrhTG37D102tlrGubKtSwT+qHagPty4n9VN?=
 =?iso-8859-1?Q?nWyYCnIHzStY5HrP4CYlQRFjdAwEfgJ2oC5uEAPYJNSz6xu6qmI6jbXb7/?=
 =?iso-8859-1?Q?ygMyKdqgo2fCLs83IN+dtrop20gRM3chUA4uGC/B41ICccjgqifGa+TwPx?=
 =?iso-8859-1?Q?8vD4sRpWwWsoxcwzQDHh7Ex32zJP66aX6LkFuzleJrsT/9j93PlHdjLLlf?=
 =?iso-8859-1?Q?jRwnFhJX5ldl4i83yxL20GPF4kZmb+Xj+invoO1rbo0nIBFehKmz1q2p2S?=
 =?iso-8859-1?Q?xITiOgpJXzpTFc6CNN70sxBLoVlPSSx72IyHc88MOld4zg1Z9xeHJJ2rgR?=
 =?iso-8859-1?Q?eiJkc7LnvJKQQK+dSLy3N0+ftYOOa51Tn+rkPu/r9mrdpyEvqNmvWuBjbJ?=
 =?iso-8859-1?Q?lPGFoV8mc2pSic7VnUGhteC/5L2TELQHq8lHCnfPpstfD0s/fdxnlsSazT?=
 =?iso-8859-1?Q?RJx2JQF/TtUN382VJEmEiIJZe/KRS5yeTO25BTBPbvpMPwrFPOYiBfzjoo?=
 =?iso-8859-1?Q?7PQSqGbBqK06HgdV9IE7R5snck0e+DNZ+LyvgIsomqVHGTJomUPllF4Z8j?=
 =?iso-8859-1?Q?30gkH0nubDfjosEdg1a6zJdMZ6Z6kelzcljWCnkc8GC0xOcvYWhRkfVx5P?=
 =?iso-8859-1?Q?Iu8mt7iTOQteE8TY7u9hgu/AYFcMTsZ52dIB5rYjt1cLX78OtEBv5bNDzm?=
 =?iso-8859-1?Q?GM9lDpAwCylXgbgXUZctwScAeVL0vXBCiJCW499ehowXNUloXpAG1fkMYC?=
 =?iso-8859-1?Q?miIBmP9L5VPFbf1vUm/tGrjDOhCrUKtz4fTol5NOhU9Ls/LtlDatYiWf4w?=
 =?iso-8859-1?Q?rePhNuryh6iVNyCcd9jzAwy7YkZz2uYHkc7iKj94QMVinq6nhkrAUwokuW?=
 =?iso-8859-1?Q?Q1GQz2eOzWoSDJ5KQhGjU6W2JAk/LGs0YAXHmEaVCdXkNJA75HU/c5SCtV?=
 =?iso-8859-1?Q?aum1YfzToLcdpu23uBMSg3WRAQQqqWep8icYIjzAbe+NP6C09xYWt8jk8q?=
 =?iso-8859-1?Q?BWBumHaFveAFUwQCwkFp4f49PfTGkTW7RzMKdnGV+bFSfPT7XKwP2eKj1z?=
 =?iso-8859-1?Q?UYSES17f7VHNFJhLTQqxjR4oFu1gSdvk78uoHTasMRUmdI/Ay4w57ISjMD?=
 =?iso-8859-1?Q?t11mRe5jWjwq9IVHs7apleZKzXVgHL6Jb/cjBpeNJaxXGqDbWJaSLCHxl3?=
 =?iso-8859-1?Q?NO+oHH2Rvw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e665fffa-330d-40e1-4b54-08df39d0300a
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:43.1314
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jSF+AEp6uaLv/ZNZaaXZhptT+at0OngCtKi0P74DRRYwdzyO+OwW/Vav71Th6HnIJDQlw6Y8AWd4iJryQrzcFA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727045-FD40B77B-BF2F351A/0/0
X-purgate-type: clean
X-purgate-size: 3017

From: Rahul Singh <rahul.singh@arm.com>

XEN will create an Emulated SMMUv3 device tree node in the device tree
to enable the dom0less domains to discover the virtual SMMUv3 during
boot. Emulated SMMUv3 device tree node will only be created when cmdline
option vsmmuv3 is enabled.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/arch/arm/dom0less-build.c         | 53 +++++++++++++++++++++++++++
 xen/include/public/device_tree_defs.h |  1 +
 2 files changed, 54 insertions(+)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 6ad2a1b745..6bd705102f 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -219,10 +219,63 @@ static int __init make_vpl011_uart_node(struct kernel=
_info *kinfo)
 }
 #endif
=20
+#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3
+static int __init make_vsmmuv3_node(const struct kernel_info *kinfo)
+{
+    int res;
+    char buf[24];
+    __be32 reg[GUEST_ROOT_ADDRESS_CELLS + GUEST_ROOT_SIZE_CELLS];
+    __be32 *cells;
+    void *fdt =3D kinfo->fdt;
+
+    snprintf(buf, sizeof(buf), "iommu@%llx", GUEST_VSMMUV3_BASE);
+
+    res =3D fdt_begin_node(fdt, buf);
+    if ( res )
+        return res;
+
+    res =3D fdt_property_string(fdt, "compatible", "arm,smmu-v3");
+    if ( res )
+        return res;
+
+    /* Create reg property */
+    cells =3D &reg[0];
+    dt_child_set_range(&cells, GUEST_ROOT_ADDRESS_CELLS, GUEST_ROOT_SIZE_C=
ELLS,
+                       GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE);
+    res =3D fdt_property(fdt, "reg", reg,
+                       (GUEST_ROOT_ADDRESS_CELLS +
+                       GUEST_ROOT_SIZE_CELLS) * sizeof(*reg));
+    if ( res )
+        return res;
+
+    res =3D fdt_property_cell(fdt, "phandle", GUEST_PHANDLE_VSMMUV3);
+    if ( res )
+        return res;
+
+    res =3D fdt_property_cell(fdt, "#iommu-cells", 1);
+    if ( res )
+        return res;
+
+    res =3D fdt_end_node(fdt);
+
+    return res;
+}
+#endif
+
 int __init make_arch_nodes(struct kernel_info *kinfo)
 {
     int ret;
=20
+
+#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3
+    if ( viommu_get_type() =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3 )
+    {
+        ret =3D make_vsmmuv3_node(kinfo);
+        if ( ret )
+            return -EINVAL;
+    }
+#endif
+
     ret =3D make_psci_node(kinfo->fdt);
     if ( ret )
         return -EINVAL;
diff --git a/xen/include/public/device_tree_defs.h b/xen/include/public/dev=
ice_tree_defs.h
index 9e80d0499d..7846a0425c 100644
--- a/xen/include/public/device_tree_defs.h
+++ b/xen/include/public/device_tree_defs.h
@@ -14,6 +14,7 @@
  */
 #define GUEST_PHANDLE_GIC (65000)
 #define GUEST_PHANDLE_IOMMU (GUEST_PHANDLE_GIC + 1)
+#define GUEST_PHANDLE_VSMMUV3 (GUEST_PHANDLE_IOMMU + 1)
=20
 #define GUEST_ROOT_ADDRESS_CELLS 2
 #define GUEST_ROOT_SIZE_CELLS 2
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470382.1679191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILR-0003m7-Hb; Tue, 03 Nov 2026 17:30:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470382.1679191; Tue, 03 Nov 2026 17:30:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILR-0003l3-Bj; Tue, 03 Nov 2026 17:30:49 +0000
Received: by outflank-mailman (input) for mailman id 1470382;
 Tue, 03 Nov 2026 17:30:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILQ-0003ZN-AH
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILP-004K9k-N1
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:47 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a33-8faa-0a2a0a5109dd-0a2a4509c172-36
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:47 +0100
Received: from [52.101.66.97]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a47-be1a-0a2a45090019-3465426192d1-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:47 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:46 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=OSz5PxkAXF49pK6aOBPd3atbvMm8x0roefzkNGEF1b2Uxus2M72DDAAoDmgcB3ThEZ2VzKAI0DGRdQexBY0VIb0A4HTee7ugE8UYqxqVWr70fLpiyuiwlvUDOjmIR4CJxWbJ34qSxWPbfLXXPauuX/cFktaWmd31NbC9yIwdUv/jERj8sjWqAze8EF4uCBxuXwgWvpHZd3AGkilEXPvZP9OCdWS1g8p2nRXAl2mwuTjJN/fSDOaWA3laoqlhq1tqHHr3ME+bjSvlg1mcD2eJQjQpZk7jpWUFKI/z3d7igOuHwSFWRHtB+8BNZSDbCI4aZ6GTKxlaUmo+JTtxI/YWqw==
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=U8rvJB23hgC6QtKcIzJWqTYQL9iVgEmz3jpXtZehG6I=;
 b=Mi+H8Ul7n2+r6CQF7TZcIbyw9AsvUJbzhY3iPQML6/IwK8M2B160GwPrmRkMfwOaQd1apiIg9vloIU1OGVtmF4mpPWqIGeFJqrlSqFWlzyN5dQxyPAFPgBDb6fJ+V6MCZ13kvTgEhdOMQEKWBxfXItFrvcecCZA/Rq8szAUaNEKj89JhQtWp7f73FiWPaG/j/RKbsYGrrxsatODrI31MzqhPhcStGgoHH9kl3LMMSO24wuJev6K5YbaocgHoLBtMJ0lMDc68PZ3uJ67yrqq1BU+WXjJAHQPGLsgjF3K5NONfImtvdEsKIwGZi8QdrSCiE3n65JcCpewGBclwRVBj+Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=U8rvJB23hgC6QtKcIzJWqTYQL9iVgEmz3jpXtZehG6I=;
 b=BEWyiaTNb0BBuLrk53ekCEOJpDj8yqw25W0wcH/EOJDlNA7wyGIkaOBs3lJ7RNfX6vLGWssY8E2jQJgJ2qDl9EjQejVMYbol88xicBgevsz7xY7FIzdO25PmbZihmV6RXrNxQ4jvsNJXZqi4y/cDOEM7Bw1w2EDDrxGw5FjFFMeWwMKLQINxSPGeyO10tbkCUgsxqfY1Zpon2cnhXmhiljcii79y3tbkJuVxmxV38ADN/z/7NE7eHqLCg+unQL5WLuq2NCgYATkP4GjO0DuimCFeVBmE8/KQJYbdSn7W8UA7NKfsG0b0TIC8vh278yVflmH0RQpIEBu6zWLnHZOb3Q==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 15/22] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree node
 in libxl
Thread-Topic: [PATCH v5 15/22] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree
 node in libxl
Thread-Index: AQHda7kPbM9uFpE+4UyByaW6OzZsPA==
Date: Tue, 3 Nov 2026 17:30:46 +0000
Message-ID:
 <4b4f2a9af32e1dd10ff8f21134b4be344ae61d83.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 29c64b5d-7201-4427-125c-08df39d031c8
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|261022115727099003|261022075727099003|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 tSVhUYFNFs39jtDUINriKImdwiXYED7bAIKEIWn2BP+Ypca3LpD8gEyPzk6SaOJAQPqbLuqM2bk2lKg/veG3ZWdjtHLi2OXTa+7YvwH0EHPG62SnKzEm/wEyFKXbTJY572D61A5+9BvasC+w2neoPFxfVo5AR/DpBXZclPb6AtoqUy8OEX+uxQxuZ4yaz+nC2Z02XG50CFsb7uMeAH034NVLch6ixUUh+6cZ7C7D6ZiFv2D3mn9VU645+ieZLPuPSd/pCkxTNsz8oo/0pn6aAe+4CMrL/Y+ucO/xvjXG1z3/tk8PgxEQmA6h7bxHsmyZgPEPIHzV2Cii70pACHOhUBLd56xGldHDJZvmkvswVJSWg2yvzmol7uVBkvg1xzqCnJ5cpBTGgfAzEAUJ7rtaNh053v3wQWx+H2PgERFewo2RLZi57rOxZO1pZejj1AnTN8xprSLxSyJHuAXtmEnWv3ZDhc0+nmkIOfSFFqkz/cqLuefet/vXkrALIQFfXCkEvVDQz4DziczuGyQtrJ0tmr1DKfcSpoBRG2pRzUcvbOs5OTcbLCvy2yr1vLtpv+EjGPIMK/u+d/IwojW1XSF7f2qGxy9EbkABYgNOCYySuLXmuILlmpanhNg99wX36YQemNvbCKpMOEw945t/YgTFY+ldSRAcyhHDrifkFVzA2ccNuHUIWW6GFWPpOhAROQnOmeeIfnwxEUkalKlSItdCDrJdutUCSkCgBH0eAmLo+RY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(261022115727099003)(261022075727099003)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?cyVuQwcljZ/0Qf9CCNf1lPdu7w5UVcm8UDRv6f3l0PasltaOs0c3Mq3vqt?=
 =?iso-8859-1?Q?5P+iq5OaYRv7/cK3SOK1g3z2f+yHWHClZzXbj/zaB5/yDAVeaZTMmD5Kir?=
 =?iso-8859-1?Q?peD/zuGRdguA6Ybg7m0chVkHhWA27Frv8S+xyxXHGPVRyfbZDa1TLQbBxo?=
 =?iso-8859-1?Q?lv40gI+TZ+jyMKjANODkx0XI3StyqPjKOjiAKFXLmf5Wg94QF4hkelHbfu?=
 =?iso-8859-1?Q?kgqH4tQKGlBmieS0HnHoZU6GjFEakf7j9ZKW5+0CWt0zzDW5P1AKDwF91z?=
 =?iso-8859-1?Q?NtkA+hh15t2oOWGcP7oRl8GGWiNGOz7KSP1O9smcicY9EshNDZHGUSPnn2?=
 =?iso-8859-1?Q?RrdlVVhDURxA5I1a0XgRe4R0WKBvvfq8yqFM3FjlHf21pbR3DwPZH3bcHj?=
 =?iso-8859-1?Q?Ysc+XvpdGA/EACe+0eMqDuSEOufrQyC+3SZ0kYbaFZ3lZFiEHSHL15fjKT?=
 =?iso-8859-1?Q?gKu8pjVAicUjuHqjy5EPfyDpxO3llGakw2RDdktB0cvZNhPJ3WMDJr5nIA?=
 =?iso-8859-1?Q?ZaiLsA/dOdxTQ9lwBIk4q5euTLx+FeMU9/rcJlKORVecq+EJjQOYCDnAj5?=
 =?iso-8859-1?Q?XP+opb+M1pYVftoQfUil3DPUgN6atdUF7bs2TVQEI9okBbUJVub2Bk4WY4?=
 =?iso-8859-1?Q?ijiCJLScftzdf7tkyy53qnqUmVkHI8zEcWWyW1lTunsuQQoSL1cu/+Fcn4?=
 =?iso-8859-1?Q?IVDLwbLimvLrAotru3PcpFQB+HIrbxD8862JRUhA+fMNuXTAviGbCiWSwJ?=
 =?iso-8859-1?Q?YeBNriTSLn9G133VXtPuaP4Ga7+zrRVv4l5emAUixBlCy1OL3mNtgi3vdb?=
 =?iso-8859-1?Q?Bu+T8yydR2QC5W/aXChEnqBCb+A2EV2adVWveuV17Vth9ixOmv+TeYWxnH?=
 =?iso-8859-1?Q?PUWkb6GAdvK4CDNJql7RV7AAvYgSrFez5AgrtR5NotBL1GpV2wZehjDh42?=
 =?iso-8859-1?Q?XWIeXkfZAy0HGInzHo4R18lVGj9UQWFxBtXP/VKpob63V2Ay49UDZH9Wxo?=
 =?iso-8859-1?Q?FHYhu1FQ4qFpz5m9vsbOfLM4dTUEDNT8IYL3k/982Db06G1IPHZIv+nSZq?=
 =?iso-8859-1?Q?LEDFsRn3ZwfwnVIED+YM28n9y/tW/CssniBR1PWSJ+BlVo7f5YC45jgiQ9?=
 =?iso-8859-1?Q?y8Ztphr42XzWEoMcSNbHMdqrHG1fiAPt5r1181UFuFg8rqrh1gUGQYkWnm?=
 =?iso-8859-1?Q?9G9D3/vDH7h+UTwNbl+jZqL0Pb8+7/GwfBLtsRvwevHsEguvmmX0eJgfkg?=
 =?iso-8859-1?Q?47EeQgoFFhECL54oO/vxIk6qC5JHb+iSu3WaHYrpiWP6fRy77v54z70BfF?=
 =?iso-8859-1?Q?keL89BvKLC+WnI4poPquvAswyn7IRLa/CXCsku7s6+S4t1VZjvKAPUPIjM?=
 =?iso-8859-1?Q?fkFzkrKCkXDRhNjv73p5nXMp+U2OazDCNLj0SaQdbQfh9ksm3gunedcRxQ?=
 =?iso-8859-1?Q?wZOY4zZ4epRS2eJ7u+n/1CRhjddYcPe4CHSQnEeBtSLOlqyPcCjX//LK8C?=
 =?iso-8859-1?Q?ijaccy46ZKpY5IKU84g94+1S5cLunmrrNHcHvAJQpdNWRnPCRe1O+vlCML?=
 =?iso-8859-1?Q?0X2A1r0yuX9IQ1YrW2UpaQDabfMOp3zaiyaYJp0Nc3OWvqRWXc9l13zlrk?=
 =?iso-8859-1?Q?5s6CAqA6bMbrdwOysc21eTTz1I7K1ZZIJdpJSo3ttdgnCKJga69n+a4RXg?=
 =?iso-8859-1?Q?FFKJzdbqwEAMfkmUf9JYCFdJwr/s4Oot3E2k+QtvJNWRHzq0O6mF0wAnss?=
 =?iso-8859-1?Q?VIgDW60pWBJL4mHB0/NjMGwHdlsU0dj0pWLK1l6pNBMnVq1Z+TGYbUMMjE?=
 =?iso-8859-1?Q?ggwMs5P4OA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 29c64b5d-7201-4427-125c-08df39d031c8
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:46.0687
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: DsqN27FlMNfh5o34MEkyojoC2+U1UrMDXqCBwI9nzKtfrLvxUPYkyhj529MxXDFaVpsPmujGYxLaVzaL80EcyA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-bad1c0/1793727047-BD4C3034-ADAA9D30/0/0
X-purgate-type: clean
X-purgate-size: 2329

From: Rahul Singh <rahul.singh@arm.com>

libxl will create an Emulated SMMUv3 device tree node in the device
tree to enable the guest OS to discover the virtual SMMUv3 during guest
boot.

Emulated SMMUv3 device tree node will only be created when
"viommu=3Dsmmuv3" is set in xl domain configuration.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 tools/libs/light/libxl_arm.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 7f1adfd79b..bbcc989284 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -921,6 +921,36 @@ static int make_vpl011_uart_node(libxl__gc *gc, void *=
fdt,
     return 0;
 }
=20
+static int make_vsmmuv3_node(libxl__gc *gc, void *fdt,
+                             const struct arch_info *ainfo,
+                             struct xc_dom_image *dom)
+{
+    int res;
+    const char *name =3D GCSPRINTF("iommu@%llx", GUEST_VSMMUV3_BASE);
+
+    res =3D fdt_begin_node(fdt, name);
+    if (res) return res;
+
+    res =3D fdt_property_compat(gc, fdt, 1, "arm,smmu-v3");
+    if (res) return res;
+
+    res =3D fdt_property_regs(gc, fdt, GUEST_ROOT_ADDRESS_CELLS,
+                            GUEST_ROOT_SIZE_CELLS, 1, GUEST_VSMMUV3_BASE,
+                            GUEST_VSMMUV3_SIZE);
+    if (res) return res;
+
+    res =3D fdt_property_cell(fdt, "phandle", GUEST_PHANDLE_VSMMUV3);
+    if (res) return res;
+
+    res =3D fdt_property_cell(fdt, "#iommu-cells", 1);
+    if (res) return res;
+
+    res =3D fdt_end_node(fdt);
+    if (res) return res;
+
+    return 0;
+}
+
 static int make_vpci_node(libxl__gc *gc, void *fdt,
                           const struct arch_info *ainfo,
                           struct xc_dom_image *dom)
@@ -1428,6 +1458,9 @@ next_resize:
         if (d_config->num_pcidevs)
             FDT( make_vpci_node(gc, fdt, ainfo, dom) );
=20
+        if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3)
+            FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) );
+
         for (i =3D 0; i < d_config->num_disks; i++) {
             libxl_device_disk *disk =3D &d_config->disks[i];
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470386.1679201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILV-0004Ma-5c; Tue, 03 Nov 2026 17:30:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470386.1679201; Tue, 03 Nov 2026 17:30:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILV-0004ML-0e; Tue, 03 Nov 2026 17:30:53 +0000
Received: by outflank-mailman (input) for mailman id 1470386;
 Tue, 03 Nov 2026 17:30:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILS-0003zy-KP
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILS-004K9k-0q
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:50 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a33-8faa-0a2a0a5109dd-0a2a4509c172-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:49 +0100
Received: from [52.101.65.123]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a49-be1a-0a2a45090019-3465417baad2-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:49 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:47 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=YScjHfquUkilW05YxEFjmK1AzfPkjq+Bi3bvJK++mNNksvDaLc0SOgXdTm35DM4vhlPNJ1DxLmUZepyHGDdgov1ztterx13YrLXSp1M3AvRbUhFdsU/yM1OhEWUrc+i3QZoKD2g7YLcvuwU/uJ1ZiQpXQvM1ZVIeY/ehgWx1MzcMSCvmSZ9r6MQLvkcFsHEkvOUJjr1qcB41dW5b00Yg8mfiFmjt4thyTKKil0NaWKHI/vS7H8rbk+3fyITkMqltE4sOUsqIsfTG6+8BCtAWNwBVq1LDKxMXtP7pwxBe2gjpROD48vTBqiWUTuSVhKhct3zapFMMbOpB6fiHhK3LMg==
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=rQQWDYgVBK9Xy0eBL6vz64/IrL5f8shtX7pWHt5PHfI=;
 b=TP+e7Mt1mIS7kJoUlBiT/6jHBd0gZ4++glFCpo/DkXM105CFQ0dTlDkwju9Swo9MHnwL/Z19f9CJ+cMK26JJfj1pRadRZWJOGVXy0U+YSS2j9+bRCxLh/el3FOboHSxCEc7h4/2Z0wF5EH8oSgyY1zybbwp4Y8Nqe0lBDdnZ8Kv2qVlQG61KNb2HpaL0xCM2V0b8F8IBEJEgDE2ALZlEYNwU0Hh/PQfgAfXn6sNDcb8QCka0+ygDTP38dCRh3iforyMGYqHMOCxZUjPQukAnUO6WyAX7RXVKIOZnFuOC9y6toRFE+xQwMzsMT6ceTefAxmtEwAVR646mBIbirfdRPQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rQQWDYgVBK9Xy0eBL6vz64/IrL5f8shtX7pWHt5PHfI=;
 b=BE/V+1Xcr+OOevg4yThCCbENNvxGqnBpF+MVmR0oyZBmXqV9xyBg5ZDwvuwhCrxDjpnBW2TGJ4X0a6fX9l9jK0UZftrZ/C1vCqPZirv+pCmOmHijH+AST0ApKkQOYxUaTY0hiZpX2R8ROFfhgeyK5BkHDEiUmuybIDEsPdw8eH+askJu/sPbU5aOFDp6lxt+fg0IrDzPF2boEGywTrb/2yztoO8ZerHSPsCEeJ59FTv3EvtmTiOig3iJU7YEDtqY8SNmoLOs2dd0OrAQMqy53xGOfXytS54RgTiCb9c+Z98pXwFGLo1FsX9lYyDdT7kJktV/nUrp/MtQILJvHfm81A==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand
 Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 16/22] xen/arm: vsmmuv3: Insert vIRQ properties into vIOMMU
 device tree node
Thread-Topic: [PATCH v5 16/22] xen/arm: vsmmuv3: Insert vIRQ properties into
 vIOMMU device tree node
Thread-Index: AQHda7kQMHPRCWWvpUGDZFNoCpKf4w==
Date: Tue, 3 Nov 2026 17:30:47 +0000
Message-ID:
 <cf1f3be236c99fa0a0ed1b25f9e580a0be3c411f.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 8051eb23-a04a-4ba8-125a-08df39d0328b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 7+x4LDmftXzPMfFzi+/N+3nei7763pJ7GcPNUXjtNKSpSMr7wiU7JixO5ER5YT4Pl6H9+8Iz4Q2lYP8F+k7Qs6iWhse14YsAvlkztGP2C9C5YNKgExHuxTu9CbjewhZAIEjZx85S/tLY0TcohJYCMCPLV7jmIhCA7htzzQYesTytwobPlWnB9+o9ba3WJCriikJqHY6iqGEeLrEDxQb/6VrIiqdDC3fcgeo7jUZuIrs9DmRBX3sbesSHtfEjYaC1gU2Bi7hcUCE+fmASwpZ0RimGvYCPVahE1g0QITNVQ6poK2AdCKgC6JizRoZ9PAGOKQg+RWNhCvEZh/72vKdpzFm9uvVQ6D+0jJe051V9ofWbwh8j/npKsePj7PK6BVpUNPsw1jBxNcNCYj9fWIUHdJ5HbkG6HlT0Uqg1qEg0FZA6bLfsfU6g+KJPZhGAeP8+IrInt4POOsRlWfbJmYExHOMhJH/l8Kt4BRVrFg2OOdijPmQpbsghErZLa2UHZaDdbl7bWn8QgLwTFnwJ9bqftq/8LptLc5JfcIkwJwmi5IKrZNhk+4xBfwD9nMQ8CVW8L5U99CCZxs8iJXPC9nHod07GbXOqZoolyBQwPhwlsAfho/551DZlF/Hgb3diZbOAcLE7roj99ChV9O5tcBiJ+o1FkgjkZbae5H7PfPhm1+CWLIf+ShgpnwS/Lm44q/HIactQlPshs2cKdFqk+dBYIaqRPn8n3HGBDMMH705aniY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?+3QSgQYohqGPRFfHYDA14BViwaTB3FZ5ksYvzZXo/WVYnP5kB//J18BC6w?=
 =?iso-8859-1?Q?t9Ab/jKe45OBj06g3dTYK41RHCENFpWJxl6qeiY7iZiTBPkdigSzVJkGgg?=
 =?iso-8859-1?Q?K5MX1kaR+n6UJzGaxAfp2tLr+Vw8CoHT6Qgop4wO0sGbiBsuKZvx655k3H?=
 =?iso-8859-1?Q?fVvzyxCxmiN7GbKTgZw3VKNgYNLXxGceDi7SeD0DcrCToUYg70Zk2F4mmc?=
 =?iso-8859-1?Q?q2I5AR2wt7XScyOEV/b25nO9HJ+B+LF+QYFcIPeJCKtHHoZ6cATqnwviiq?=
 =?iso-8859-1?Q?g+l3+hvONbLcv10CceafBnVfyEFwT0vBbVCIUFdLNEGcWrfaFyjAWaB4bj?=
 =?iso-8859-1?Q?37ellnZ4tltSDGRdOa0yOMBDn5qZd7h//AYz/OpqkmvjlDyCHGl15CzAgE?=
 =?iso-8859-1?Q?tHVie+oZYe2BY7JDGvsCVii2IvO4AmtTZwMGejLTVmk5Gj40nQ57Nykw0C?=
 =?iso-8859-1?Q?O5WeinrtlozwgaJNqaJoHvgsJdoPIFxEQSM4hmVc5AoiKNaqBie0vulRJ2?=
 =?iso-8859-1?Q?G3GBgZwrv8HJfaCPgwsxpBSYmbaT5L2BxqQc5TmNAQyXNNbIUR5pTUWzNf?=
 =?iso-8859-1?Q?/JKwGywhqrXIGmiHpZIeBj9D1Pb4T7Dv6IXv1V2l1HU+u99xTWrYApX+RR?=
 =?iso-8859-1?Q?v1hlLEIkLmqNPXk0GIg9XATLOTjH/qIE2mnxpkOe0YJ5Tmi07C8WZCseFh?=
 =?iso-8859-1?Q?IZFl43odyN5zhwAwoLTlazfPrm7JTUo3njlAm1QP1KJ7GqKVnfB8JRPglF?=
 =?iso-8859-1?Q?NwB4DYC3Nl72EA+YDnyDdjiHg2TqardjuPfxYisJiqC5pXSTwLQVpFH/mr?=
 =?iso-8859-1?Q?5ICYHtJutcseEK5XuWQ7q34kLDxxuBBfyc/X9oX1TH8zBK1ad0Ivt2YAqu?=
 =?iso-8859-1?Q?om31ALRTeTR35pYBFbZATMj3JJrGJKMZb6xEAl9RvXppuYBUWhLyetfngU?=
 =?iso-8859-1?Q?DyNJoMOl9IY1m5iC8Rsfc+Q+JK09meB+7Y1wXXa+WORw1QFAUDQHgH4kQA?=
 =?iso-8859-1?Q?r2R7ubB0aj8zRoL2Xxng5Gso8S7jLxRN9XmP73T9zR1ouk4d0VHGLMkIEH?=
 =?iso-8859-1?Q?CWEOlh5UuQD9tf8/Y/TE/+xAt3M2JnFU4yqPDVoVQRvCJ9bQM5bgK/QGue?=
 =?iso-8859-1?Q?fkIcDD+P8QtxdzWvkSdsiwn81lnB73ZzEJ61l/J9EGJVQFQ783IgsHurlI?=
 =?iso-8859-1?Q?jMgfF2yMVYThjNtp9s48wyQ8bjgiYUlZM4LqRc9f+Folfm7+jPyIKu3cPQ?=
 =?iso-8859-1?Q?4F35X2rIrNRzz92Nc/dS2kAlkJWCScSGtQAGghY8VsqbOR8IodWfdcjSgd?=
 =?iso-8859-1?Q?8g0r91D7/0GfuXJH5/q+iiHOKmaPiGNmyB1z/t05QawjxXcHWfoatCcf0I?=
 =?iso-8859-1?Q?3CWQMu7Bu1ow6CAFM8qRBdkwXwhggst17FVseLhUJXTBHkzv/c7kB6NRkI?=
 =?iso-8859-1?Q?MEl8WJr8yJ8lxhcbmt7vyCqObYgmjA4bJkTLqvsEhaIF4Su0qtdlwQtsuU?=
 =?iso-8859-1?Q?iemC36qUbIyV7SMWGK+4oFzkWEuX5SBEd3JVrpw2qeAQ4hXtWeQ3zJyDYa?=
 =?iso-8859-1?Q?JnHeVhmTp88Ft5A3LsrE/s1sQyOSetAnrYrUol0pJqOBCugeRNOHuEFcID?=
 =?iso-8859-1?Q?j17+nPo9Sw6fsXb6avRLtvsvj+r/bpS+l2dkLfUwJjl4dRlWDP9MeEQ+Ng?=
 =?iso-8859-1?Q?clWxuu1bMQoWeHGUNPbdahJ6zZNNTsM2UwuRZNLKrnhM+gDVoDC6HgjlQI?=
 =?iso-8859-1?Q?NlrJJdq0xF0KhS0y4fYhCV1N0lss/N1lX6De1JsA49ma9bRQCF5jrLDecB?=
 =?iso-8859-1?Q?FUw6ces8gQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8051eb23-a04a-4ba8-125a-08df39d0328b
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:47.3380
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: B5vauGrN0gjMw3BF0uqcOwiTLxHi3JgM2CyzAXQnqKG3k+3HpoTktRivi3RY7nR97mgttxCTtpvHa4xOTy4Ruw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-bad1c0/1793727049-BEEDE034-69C4ED5A/0/0
X-purgate-type: clean
X-purgate-size: 4443

From: Rahul Singh <rahul.singh@arm.com>

Insert vIRQ properties for event queue and GERROR handling into the
emulated IOMMU device tree node for dom0less and libxl guests.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 tools/libs/light/libxl_arm.c  | 30 +++++++++++++++++++++++++++---
 xen/arch/arm/dom0less-build.c | 17 +++++++++++++++++
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index bbcc989284..72b19d68af 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -86,8 +86,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
 {
     uint32_t nr_spis =3D 0, cfg_nr_spis =3D d_config->b_info.arch_arm.nr_s=
pis;
     unsigned int i;
-    uint32_t vuart_irq, virtio_irq =3D 0;
-    bool vuart_enabled =3D false, virtio_enabled =3D false;
+    uint32_t vuart_irq, virtio_irq =3D 0, vsmmu_irq =3D 0;
+    bool vuart_enabled =3D false, virtio_enabled =3D false, vsmmu_enabled =
=3D false;
     uint64_t virtio_mmio_base =3D GUEST_VIRTIO_MMIO_BASE;
     uint32_t virtio_mmio_irq =3D GUEST_VIRTIO_MMIO_SPI_FIRST;
     int rc;
@@ -97,11 +97,21 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
      * of SPI VIRQ for pl011.
      */
     if (d_config->b_info.arch_arm.vuart =3D=3D LIBXL_VUART_TYPE_SBSA_UART)=
 {
-        nr_spis +=3D (GUEST_VPL011_SPI - 32) + 1;
         vuart_irq =3D GUEST_VPL011_SPI;
+        nr_spis =3D max(nr_spis, vuart_irq - 32 + 1);
         vuart_enabled =3D true;
     }
=20
+    /*
+     * If smmuv3 viommu is enabled then increment the nr_spis to allow
+     * allocation of SPI VIRQ for VSMMU.
+     */
+    if (d_config->b_info.arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMM=
UV3) {
+        vsmmu_irq =3D GUEST_VSMMU_SPI;
+        nr_spis =3D max(nr_spis, vsmmu_irq - 32 + 1);
+        vsmmu_enabled =3D true;
+    }
+
     for (i =3D 0; i < d_config->num_disks; i++) {
         libxl_device_disk *disk =3D &d_config->disks[i];
=20
@@ -170,6 +180,11 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
             return ERROR_FAIL;
         }
=20
+        if (vsmmu_enabled && irq =3D=3D vsmmu_irq) {
+            LOG(ERROR, "Physical IRQ %u conflicting with vSMMUv3 SPI\n", i=
rq);
+            return ERROR_FAIL;
+        }
+
         if (irq < 32)
             continue;
=20
@@ -927,6 +942,7 @@ static int make_vsmmuv3_node(libxl__gc *gc, void *fdt,
 {
     int res;
     const char *name =3D GCSPRINTF("iommu@%llx", GUEST_VSMMUV3_BASE);
+    gic_interrupt intr;
=20
     res =3D fdt_begin_node(fdt, name);
     if (res) return res;
@@ -945,6 +961,14 @@ static int make_vsmmuv3_node(libxl__gc *gc, void *fdt,
     res =3D fdt_property_cell(fdt, "#iommu-cells", 1);
     if (res) return res;
=20
+    res =3D fdt_property_string(fdt, "interrupt-names", "combined");
+    if (res) return res;
+
+    set_interrupt(intr, GUEST_VSMMU_SPI, 0xf, DT_IRQ_TYPE_LEVEL_HIGH);
+
+    res =3D fdt_property_interrupts(gc, fdt, &intr, 1);
+    if (res) return res;
+
     res =3D fdt_end_node(fdt);
     if (res) return res;
=20
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 6bd705102f..9e519ff3da 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -226,6 +226,7 @@ static int __init make_vsmmuv3_node(const struct kernel=
_info *kinfo)
     char buf[24];
     __be32 reg[GUEST_ROOT_ADDRESS_CELLS + GUEST_ROOT_SIZE_CELLS];
     __be32 *cells;
+    gic_interrupt_t intr;
     void *fdt =3D kinfo->fdt;
=20
     snprintf(buf, sizeof(buf), "iommu@%llx", GUEST_VSMMUV3_BASE);
@@ -256,6 +257,22 @@ static int __init make_vsmmuv3_node(const struct kerne=
l_info *kinfo)
     if ( res )
         return res;
=20
+    res =3D fdt_property_string(fdt, "interrupt-names", "combined");
+    if ( res )
+        return res;
+
+    set_interrupt(intr, GUEST_VSMMU_SPI, 0xf, DT_IRQ_TYPE_LEVEL_HIGH);
+
+    res =3D fdt_property(kinfo->fdt, "interrupts",
+                       intr, sizeof(intr));
+    if ( res )
+        return res;
+
+    res =3D fdt_property_cell(kinfo->fdt, "interrupt-parent",
+                            kinfo->phandle_intc);
+    if ( res )
+        return res;
+
     res =3D fdt_end_node(fdt);
=20
     return res;
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470393.1679207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILV-0004SU-Rz; Tue, 03 Nov 2026 17:30:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470393.1679207; Tue, 03 Nov 2026 17:30:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILV-0004R0-Ep; Tue, 03 Nov 2026 17:30:53 +0000
Received: by outflank-mailman (input) for mailman id 1470393;
 Tue, 03 Nov 2026 17:30:52 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILU-0004Kk-Lb
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILU-0082xo-1w
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:52 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a28-e002-0a2a0a5209dd-0a2a4501986e-42
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:52 +0100
Received: from [40.107.159.108]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4b-5984-0a2a45010019-286b9f6ca2a9-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:51 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:50 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=SXJe94yEhT+FQ7Mx/GEmy5YfQsRvWCAOc6KmTX/qXtoNHDv7jr2NCJehiQJr051lSqqEHG95K+iX7YXwPRaUVK9ounbY9wU1kRe2e2eNR8XqgTgXrAXECXUJixaodi52ttbcjqr49bCNdvyMTpfBjj/O6FS+iEtsyCBm1yzTx/ghNmBv0uY4HJGwe+mmgEAHVVOgIjhnC99JEpiOMFkTBLZTWWTOeG2FdZt5gvXUmSc3GYxpMORQ/waDNp65SXd3YhWMWGjNXWmRNViGycK+57L4CCU2ssSOeE1YFXPW464nv1mNWZYau6u7BeRjIverYJ8hALTTaFf45eFbHrjFag==
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=1KCpdXRKAXdQEdm2NQv0CErWiAD2OMKxubJ598FQNOM=;
 b=DJWjaCD8reyct6VsBzzihmqxYJ4hDeu5ME3ho2505WdJcNedt1yOi89HKZUdU9n6UKg6TYL6b6oOcaiN5GVi+z9mvvUhxN/wjlMfaRmc9Twv+yKgF1ADKjdEPsPMU7FPovEha0u7mN7dWNVhoXOh5vuRGTcPdiGYyZv098021afFKHdiUD/MwqKcbW/nF3a+rBaiI41AneemVpNQxw8OvKOI0KNypB+Vc64ex0RTS/VWYFYhh89+BDO8xJf01vhfvEO3J4Gnpo9IM54RnDS387UlQPy/tMZM8HurL2YvloY2eDaahOmWNUTpDU6qJsgcP6dEJK3pA7LpNRq6YcMSVA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1KCpdXRKAXdQEdm2NQv0CErWiAD2OMKxubJ598FQNOM=;
 b=r6Htc9azGMoLF5ZcARS958YkzZt+XUV6WeD+vZRe+g4bpkGE7HNIJ71584dxLaXU6pGOqwfrA6YcTNLcJWDbErqH10lszWHUt4Oxti4rbjNY9tn8chRHsxfneZ6ZFFDS2HuhnXzQraQZH+f9dz+rRr+X+O+Atj0G0jDwSFe+o82E9wmB6GW4eIGKk59mfH+VWWhMtq0X3xWzfSx9hjsMLQ5GN8Sa01BSf2sQVcx2Rmb2J6Rau67g8RXMh1Vsx2EARglyjvi0udQr3y9rlq7mKke9BEl6/ZwUZNhoDyb5eAu5QS7xS7kj9d6s1IjC7hhQsjywg3iSRkdDAgaFWO3qNw==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Milan Djokic <milan_djokic@epam.com>
Subject: [PATCH v5 17/22] xen/arm: vsmmuv3: Add support to send stage-1 event
 to guest
Thread-Topic: [PATCH v5 17/22] xen/arm: vsmmuv3: Add support to send stage-1
 event to guest
Thread-Index: AQHda7kRgq+8QDTpUk6bKfQWFvQtuw==
Date: Tue, 3 Nov 2026 17:30:50 +0000
Message-ID:
 <d2bef93f0883984523de1d7811b764e65a78c7de.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 23e946be-d757-47d7-b54b-08df39d0343b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 W1rjYJSw6dDAE7JozkK6h3v0jhcoPIs51EtIXOCQRRBWs51IvsAt18NZ3uXiAQf7mbXgfubnOtp0/L/Lm9wYyMjmvOXP5NAcqWwOd0cjqmQHYddNBvPdrvJtZnqAuG1nEc3q7bvEf2NZgFqHHwvW6mpDVqZI9cz+tRZl8/Ki4iOegRoOc8uQA0LwgqzGiiSgPUrIN2azNiP6IvLvQcpp+q9RA29kpu3Rw8FPUFdQAAPbhz71NrXr03poZNYd8TnoFDqJ2Vi0112ER2E/OgHqN1xYH7FLlctx92x49XChf1Qa2EtAnKgKYH00nwJ/km36NgirOSswcloOqS2d73klVQZRVjzWxRXMcYPFKOfWKcOtvwZ79NYa8bPLkxOdFxZqcsz11Wf0NUIXQIHJBVXpHLM5sRd2isx5b5MJpeCbR128IvbIicyTTPdBIm374A0nw9mQ4KMsEeQ7HFReQBelwjLsyjkcGU15aCOEcENzfLZbnaDXWzVKRqIUUdBeJnnZ/wkSwNHVNRMOqTgeHG6YgT+hljc+Sp37vOqXgm7m0qcyFbSPHptYa0V/66jt79qCLn54b4DK15jg7DO2qNNUTIilITo+0/nMCiFt1hQcJNS5FoLgEQI+rnNH+fyvBZwetm/rUg+lN9VjJv4sXHueeP0By5B0EKRPt+SmN63MpFL4jtsBh2WU3i4OKifHNu8ffhAMtFdCMTx7bhSg8VHtnmZN+dmc953zTCRQJa+Ie1w=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?96DBro5Xf4Jo0qyOQDN7/U9Bj1UanOp27iCgV2A2eXo0rXifMghF5/rEW3?=
 =?iso-8859-1?Q?vU928IFiQfcq2RRt9Aa10kOA3aZgZL/RwFMn2GQtLehZqdLMeZCUM3IEC4?=
 =?iso-8859-1?Q?1olredj/Fpvo1fuVeif7CtOSDiE93zB78N4CE16cHJosSL2dWUt3iiSk/q?=
 =?iso-8859-1?Q?vz3Mvj253OaUw6ZMGcSU75Ak9wGEAP9dKoGwJCPZgfWBdziTvaO4ZtjDzO?=
 =?iso-8859-1?Q?rJCKspd6ydUjsWi+77A6GcfH/x8sxF6Fo5+M4ivphfKzcLYjsjYR9ltZ0B?=
 =?iso-8859-1?Q?rozdP+ybPBRjC55/Aqsb+3y1Osj/Lv/XCV7lfHvpXEcN/GGXKAkKMT8Xwh?=
 =?iso-8859-1?Q?grAIhhzJbBPUHSHw3SHCMza+sxR42OfvqxKBcSO6M+VprvO1fITd9hBZ2b?=
 =?iso-8859-1?Q?MTcY2tCyJzFjcsXxfQfL3R6KNITfyIY2KrBaI5kOzddcg9wNkYsoNs5VVc?=
 =?iso-8859-1?Q?JNfI774ZPg+PogddaJLFywSax0WH5yg6PPquomprPxu/6XJouUijYK1Tb8?=
 =?iso-8859-1?Q?+JA+dRC8vWtv96wswnL03k1JhISlqpkgxQ8xiADzl4lxl0g8JEB7p/jlkO?=
 =?iso-8859-1?Q?Fv4qW3fu7rfJHum57gr1Ib0Wli7s4ZgL+nv6PTZYt3PfK0p7TvMces6hFE?=
 =?iso-8859-1?Q?g4ghIkfU7zLmn3tWqBvYnI1KZsMNrLunqDCZkzNDJiIp+li9Vv3PeMaKOC?=
 =?iso-8859-1?Q?Jgp3ghd+bEwrVKi/tMx0Si3svP07X9uPKQNt3E33B/Qw3R6OFtwBqr6s6E?=
 =?iso-8859-1?Q?7eq0jqxG5zzVFSOs5g5qvzogCivDzxPsH3TxsHDvQjFa/pHieC6Rmt0u82?=
 =?iso-8859-1?Q?OOxnp/bOhmGTxTVsxQcILyTt8efctoMSxfbdPViNlmc1nFeI0ibpqKIoIM?=
 =?iso-8859-1?Q?nlzygoEHSpdvH4sd0KmgJqfPCv/xAmtiKaJpmAel2PDHcgsnLlw4NqKM0t?=
 =?iso-8859-1?Q?e1cep2/YcUqC3Fu96simT7OchAw6gBGJRSoqGJ2aptfAZbdgmtfJYf8AVr?=
 =?iso-8859-1?Q?C5Jtan5Sr5/YnpP+3k9Nl6krxa26Rhxr7FFuUpipKSoLF4NdW4JlgKnhvR?=
 =?iso-8859-1?Q?DWaeE6+Fc/Kz3yBEcaMjAXhQav+RYJtyZoXAcqvpT9mMvEtp7PBow5dk8v?=
 =?iso-8859-1?Q?IL5YcLG32mj6PDM4pufnGyPJF2fg4k+zyb22x6NYA/1F/QpcFETd/err0F?=
 =?iso-8859-1?Q?kBgbJfE3tKbwn/raOXafiW2qsLP61xYVA3+f9cOELwy/Z29f2tOWviIurV?=
 =?iso-8859-1?Q?l9TAyia+6YthI5JqeEc/uOM/e3D1BEhnhZn4p4AcU0E8RxPO8S16D7MTz+?=
 =?iso-8859-1?Q?w5KdMtzNX3aUqAxveCqazW7GvCKdJORVn4kyxbmfxr8qhv4GoruifXBb0p?=
 =?iso-8859-1?Q?JESJO9ZREnVzKVeUvts4PPF3hD8dDm3N4gGDKALXRkXskI160flK0Kwtpv?=
 =?iso-8859-1?Q?6qrHn8uPUZAn8Khe47D0ela5Q5Bi36wEePPvyaW+DndwxWEmnfDTSe3xWt?=
 =?iso-8859-1?Q?OWkmQVGLOGFZkTZPKprd4qU8+EkvKkG+rUiNIwqrI6baANS7u/6QnuWOJ5?=
 =?iso-8859-1?Q?o2V6LVeWkx6h/lER0duVoAOs9bikLiP5cNfC8+KoHMCu6E73Y8c5MnSCmY?=
 =?iso-8859-1?Q?tTqGrVlURsH7M3sVEU/0QprJ9WPdM/gyQm6bJHU6ZTuKq/Ty2gQvXE/Gkc?=
 =?iso-8859-1?Q?VDPE841vyJ+UKTzztyUk6qToYdz6Q/YqjS5gqq2SBIuEjreGJb885uM+Bx?=
 =?iso-8859-1?Q?LxYfkGwJ20OSaYgRif0i2tp1H7nOdfT5djZcfmVSVTzGZ9UySMWfDBVhVO?=
 =?iso-8859-1?Q?xL65xbSX1A=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 23e946be-d757-47d7-b54b-08df39d0343b
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:50.1661
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 4Giti2ZelYXpdjvig2V5CfF87/k3phDvmcsz9BthPSXGB3CCeNRquadJAlNXgzVPYy+ayTtEa+6KbV9Ba59Z3Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-d62444/1793727052-BDE78757-4A09FECA/0/0
X-purgate-type: clean
X-purgate-size: 5177

From: Rahul Singh <rahul.singh@arm.com>

Stage-1 translation is handled by guest, therefore stage-1 fault has to
be forwarded to guest.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/drivers/passthrough/arm/smmu-v3.c  | 45 ++++++++++++++++++++++++--
 xen/drivers/passthrough/arm/vsmmu-v3.c | 44 +++++++++++++++++++++++++
 xen/drivers/passthrough/arm/vsmmu-v3.h |  8 +++++
 3 files changed, 95 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index 4f95b5206e..f213b3de12 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -871,7 +871,6 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_devi=
ce *smmu, u32 sid)
 	return 0;
 }
=20
-__maybe_unused
 static struct arm_smmu_master *
 arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid)
 {
@@ -892,10 +891,48 @@ arm_smmu_find_master(struct arm_smmu_device *smmu, u3=
2 sid)
 	return NULL;
 }
=20
+static int arm_smmu_handle_evt(struct arm_smmu_device *smmu, u64 *evt)
+{
+	int ret =3D 0;
+	struct arm_smmu_master *master;
+	u32 sid =3D FIELD_GET(EVTQ_0_SID, evt[0]);
+
+	switch (FIELD_GET(EVTQ_0_ID, evt[0])) {
+	case EVT_ID_TRANSLATION_FAULT:
+		break;
+	case EVT_ID_ADDR_SIZE_FAULT:
+		break;
+	case EVT_ID_ACCESS_FAULT:
+		break;
+	case EVT_ID_PERMISSION_FAULT:
+		break;
+	default:
+		return -EOPNOTSUPP;
+	}
+
+	/* Stage-2 event */
+	if (evt[1] & EVTQ_1_S2)
+		return -EFAULT;
+
+	mutex_lock(&smmu->streams_mutex);
+	master =3D arm_smmu_find_master(smmu, sid);
+	if (!master) {
+		ret =3D -EINVAL;
+		goto out_unlock;
+	}
+
+	if (master->domain)
+		ret =3D arm_vsmmu_handle_evt(master->domain->d, smmu->dev, evt);
+
+out_unlock:
+	mutex_unlock(&smmu->streams_mutex);
+	return ret;
+}
+
 /* IRQ and event handlers */
 static void arm_smmu_evtq_tasklet(void *dev)
 {
-	int i;
+	int i, ret;
 	struct arm_smmu_device *smmu =3D dev;
 	struct arm_smmu_queue *q =3D &smmu->evtq.q;
 	struct arm_smmu_ll_queue *llq =3D &q->llq;
@@ -905,6 +942,10 @@ static void arm_smmu_evtq_tasklet(void *dev)
 		while (!queue_remove_raw(q, evt)) {
 			u8 id =3D FIELD_GET(EVTQ_0_ID, evt[0]);
=20
+			ret =3D arm_smmu_handle_evt(smmu, evt);
+			if (!ret)
+				continue;
+
 			dev_info(smmu->dev, "event 0x%02x received:\n", id);
 			for (i =3D 0; i < ARRAY_SIZE(evt); ++i)
 				dev_info(smmu->dev, "\t0x%016llx\n",
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 17e83dcb1a..24588affe9 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -347,6 +347,49 @@ static void arm_vsmmu_send_event(struct virt_smmu *smm=
u,
     return;
 }
=20
+static struct virt_smmu *vsmmuv3_find_by_addr(struct domain *d, paddr_t pa=
ddr)
+{
+    struct virt_smmu *smmu;
+
+    list_for_each_entry( smmu, &d->arch.viommu_list, viommu_list )
+    {
+        if ( smmu->addr =3D=3D paddr )
+            return smmu;
+    }
+
+    return NULL;
+}
+
+int arm_vsmmu_handle_evt(struct domain *d, struct device *dev, uint64_t *e=
vt)
+{
+    int ret;
+    struct virt_smmu *smmu;
+
+    if ( domain_use_host_layout(d) )
+    {
+        paddr_t paddr;
+        /* Base address */
+        ret =3D dt_device_get_address(dev_to_dt(dev), 0, &paddr, NULL);
+        if ( ret )
+            return -EINVAL;
+
+        smmu =3D vsmmuv3_find_by_addr(d, paddr);
+        if ( !smmu )
+            return -ENODEV;
+    }
+    else
+    {
+        smmu =3D list_entry(d->arch.viommu_list.next,
+                          struct virt_smmu, viommu_list);
+    }
+
+    ret =3D arm_vsmmu_write_evtq(smmu, evt);
+    if ( ret )
+        arm_vsmmu_set_gerror(smmu, GERROR_EVTQ_ABT_ERR);
+
+    return 0;
+}
+
 static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid,
                               uint64_t *ste)
 {
@@ -1142,6 +1185,7 @@ static int vsmmuv3_init_single(struct domain *d, padd=
r_t addr,
     smmu->d =3D d;
     smmu->features =3D features;
     smmu->virq =3D virq;
+    smmu->addr =3D addr;
     smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES;
     smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES;
=20
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.h b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.h
index 9f4c86abd5..d4b7cf805f 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.h
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.h
@@ -8,6 +8,8 @@
=20
 void vsmmuv3_set_type(void);
=20
+int arm_vsmmu_handle_evt(struct domain *d, struct device *dev, uint64_t *e=
vt);
+
 #else
=20
 static inline void __init vsmmuv3_set_type(void)
@@ -15,6 +17,12 @@ static inline void __init vsmmuv3_set_type(void)
     return;
 }
=20
+static inline int arm_vsmmu_handle_evt(struct domain *d,
+                                       struct device *dev, uint64_t *evt)
+{
+    return -EINVAL;
+}
+
 #endif /* CONFIG_VIRTUAL_ARM_SMMU_V3 */
=20
 #endif /* __ARCH_ARM_VSMMU_V3_H__ */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470397.1679218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILY-00055T-Eh; Tue, 03 Nov 2026 17:30:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470397.1679218; Tue, 03 Nov 2026 17:30:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILY-00052a-0K; Tue, 03 Nov 2026 17:30:56 +0000
Received: by outflank-mailman (input) for mailman id 1470397;
 Tue, 03 Nov 2026 17:30:54 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILW-0004Z1-81
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILV-00BtPP-Kg
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:53 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4b-8faa-0a2a0a5109dd-0a2a4506a38e-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:53 +0100
Received: from [52.101.66.105]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4d-195a-0a2a45060019-3465426992d0-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:53 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:51 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=QgrkpV1dJl/37EqJCm5BW3jQc4KD3bFFjwu+hXRGvGI4r+WyouRWbjSRhvf29YUmJ28uyJWKJiFFdIHxa4SVve+imh+xg9ecMWJFOZ5LGPcNJ8OHF7gIimuYZAMV15Z2ZCA+js7WacIt2ukS9iv0FW6HLtZfXFpMy4lbXNhX78zwTUxbJmcdFCty21I415i9KSFml6bLNL6kF1kbWURlktJLPErXDm8RmJ5RViRwQ1kZ2c3xwWRr8vcrvUzSYJLKa5XumRHalQx8XBqXZ02Vqev7QkVmgqDIPrH92YG8i/sAAzIMO3OP0L91oOabb0q+HWjB5mc7+6pC1t/xhjeQyw==
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=EXv7mO4gOhCAOcGu3jVi+t8HReanW2K0WNYLDUyVoOo=;
 b=IDf2y89Lx1+CuzpsLGwy7Wqdj0RHMLcpHvi8UmOaBmIwJ9CuAbQ+d0qLLUv8XgFxDHO+UatVekVwdm64ZpkD5XWwo9DXT7HC+Hai9QhSUtPVGAa7vO2r2BOLsNhYY1KxObEVUI9ywbUU5C4yDT1RfaYWUBaQXV/Tk4vbLYDtzfLZk8XybO00+LpPs1BJrGT2OnKh0ltWQ1sdFyxZPb0iBNRTdxldFqnSfHnVuWRS/XcIT2Oyhyo9+DpzEnDBwZtwFK74iOPudUYqC44ORQeoUcTefTildIvUEnk9IsUVZsS3nFrx4lVRrFa8uU8bCfWp+YUPKY79Al+cG1j2VTEAqw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=EXv7mO4gOhCAOcGu3jVi+t8HReanW2K0WNYLDUyVoOo=;
 b=lngRCQJYL4Rihz2Ze7VKVsO/yuKhhidSL5nw352KBfRNd/4ncOmv7pAj9mfJcGkcIyzzwuALUe/3BHRH5VWEISY+zNMZF6QIi7zA8QFWuCgbi+xEO6iAFpTTdyQjlZKZEVnYFUw0T5GzL/WnMcOhKwzkfv0gt1T1CMp8m4l4uXgLqkuWKNiMNbwi+RK8poCHZY8WZl4C+FJKKFOEr1qmLk9Z1nMFrMmIJ9iR0fCIc7AhnoHLxfZ+IjBdhXqI/yRCKKkeWcFnUtXKBIjkPVd58m0a7q1fyZvK+1+2eLbK1ygDWolWsZ/q1HvMkd/o90DQDwjMOHo9+vzzH/VB9xwD2A==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, Milan Djokic
	<milan_djokic@epam.com>, Luca Fancellu <luca.fancellu@arm.com>
Subject: [PATCH v5 18/22] libxl/arm: vIOMMU: Modify the partial device tree
 for iommus
Thread-Topic: [PATCH v5 18/22] libxl/arm: vIOMMU: Modify the partial device
 tree for iommus
Thread-Index: AQHda7kS2ZcHsTrIxUqGMSOQ4IqfJw==
Date: Tue, 3 Nov 2026 17:30:51 +0000
Message-ID:
 <41dd6cb889d346b8c922a6cc4fee8ce69f58280c.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 28efc3a2-4a75-42dc-0e43-08df39d03510
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|11063799006|56012099006|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261102123227099003|261028144727099003|261026140227099003|261026121527099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 N6CjC5mAPtHayxuMKeg5sNTLZhuhRrVXKBW7O3ESKh87bBcLXsc/csX1ajeq+TIe3wlULYCsDfJaWaKPxIn7s8VOggm+3w/e1g+ts8/w4VIVEzfMecZjeAvaQW+OUXfHwI5sTPMgnTtdKtO0tSp9T+pgJWwvLUzKVg75BA+HK+ootNH4lPrMhCSmrH31+iM7CKbJW6qjMg5ZdPnY2YfX/Pi92ZR6SV+pBojKb0jFjkyWd6NH5KdaQ7Yedi7MsHK41AJZ2OMxB+OZ3Gd5SX6FgPvseMKh/JM9Oz8OmYIN5VR1uhy5TXXvhNCFgkawtL8ojhVDoZc0HtEis2YzS5UMdwZokXfFMNIbwafFQ1K799LPBTBpRdSHLfwOT/SzxqgXeNB8UAAs4bKeX9uq16NKcESKnY7hABDEXSPwWpqy3RHt9gBAcFS/qc2/6FkKlrl5WoeFHwkxFY3/9pnw2NKCJKAT0wBKWrO2eke94yzGReLVZXeMD6IytX+skVz+WcDb+kBRPqLhZ1TKA5/U8vST1+OZrkdZWbMHNogPSoEC71xcH8gGvSCoxAcVSaXCvqnIKu5iHl7ZTURlVaS/L20iJxJyxTWKa8z5L4ugb3APd+8E38wYnW+qSBteHFLwS8X4yI/EUgz5aZMwcWR7q+y1qjuncdoDxkHcSeuWEXp30QUXyO58hKg4fy+puK9nbLsHBC8QpwOs54qLaHdQwpYWfavJABkMbPpIDvIPLrEJUMI=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(11063799006)(56012099006)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261028144727099003)(261026140227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?3ihjdg8gp3nVGdjksPNDd2B7Xq0StlFqojg2OiKtdCC1o/Mykb0Yi7hyRS?=
 =?iso-8859-1?Q?2sVAM2I/6e8fVh8g9aSQx3SZJu0S3uPjz4Rw+OxfHHkNL/Wl2zFve8afym?=
 =?iso-8859-1?Q?SLjTB4+j4wLowTtLoYJeEsIxztvtdyRn+BOJ/fKxkd0WVbcffEGkX5HFLX?=
 =?iso-8859-1?Q?t+Bxe748dw9HQOTDvL5q4TKNgLnaT3z7QDeofiYf3svaWleHk1mT5rSjpj?=
 =?iso-8859-1?Q?ZUPhI6h+zkaq+7EW0dd1TRhHa8rVijdHjoxzu3D343EXBU1oihBaH9LWCu?=
 =?iso-8859-1?Q?9zgaS/p19ozUM4NBgBZcDIhWTaSDsDzMxZsCSSYZ0MtS81eEUsh6mTJXny?=
 =?iso-8859-1?Q?T7JesH8c2r4NOrnOArfaGYRfGsNiII0W44zUG2T+6f4QBREZVh16975xAq?=
 =?iso-8859-1?Q?JhzRA0Df6A2QQH7rWH2WcxchnIqmdYlUxG7+Ju1mehHmTtymBFKO9vSv+a?=
 =?iso-8859-1?Q?was12jCvu77B9MlM6EXwIVTIoVbgPaVTkrTj20PjLuFU1oNa0N1kcgbEQN?=
 =?iso-8859-1?Q?P+MmPoVubp+Cp1e6fwNUKw7RRdQb++1KMg2UQDwa243R3dr+3nNJ+QYaBW?=
 =?iso-8859-1?Q?l9cBwmDL9rpY7ZrBJVDlPmRqPqjByEgjD3v/ARaLZwnORxMYMAiAgRliMO?=
 =?iso-8859-1?Q?1rVbSfqoaJZm4W1OGqzkw3OgmmsHWLcEUIB06UfkQ0D/InXNBixGFoX9/5?=
 =?iso-8859-1?Q?8WlCtUr/RkcsgaRbTHe7Hun1aa02G02hKjem4q/9C2TaRl9b+keQ3ci0gR?=
 =?iso-8859-1?Q?qZouZ7oEbY7zUTx4BleLHcaHC42Y4Gu+SwaBYiGHHMMN3TnEBL9evLgD3H?=
 =?iso-8859-1?Q?ngEIxvk0AfJu52UngwxZ9Gul4+shEbJBoFWdj2DJyBuzYxD0XT3G84sgaE?=
 =?iso-8859-1?Q?Lv3iKPDaB5j9YCRiGGMLJjSjG/kAdzPn6W7x3pcfexGyXjrQPAEVG4ph+X?=
 =?iso-8859-1?Q?EiH6LUXUEFsjSJtnjMR1GUH5sYOIngltaX5QQ2VVFIlQPNSZF4qM/0J4Q1?=
 =?iso-8859-1?Q?q6d6Mb0hSnEjZKNxSTr9/WXLsWFO2khkxcUue/mLDlP3mA4WGSEFGDD5pu?=
 =?iso-8859-1?Q?3KhnJibROJfEpW9zk1dNiWfhxuTLb47ExCTyz+Hg06Vik1uGGtrf38AHEd?=
 =?iso-8859-1?Q?ssNivYrQduNDFgTD5JQIyW3JtJZ0LN56Zir7Htdo9USipEfki82fwUiJfI?=
 =?iso-8859-1?Q?/B6NdSndeT0uyDcqG5drQnPsTqR+piGieP2JQfPYqjij/QdJ2DK3dN+A7C?=
 =?iso-8859-1?Q?nLEdBqYiTWjzxyO009GZWZf7a7okIr3wWvJfM+ejPMo9bt9VEivUVU8N2f?=
 =?iso-8859-1?Q?AGdqY8LmMHAjuet1smrvgY7WvzG+73031dbx0Fi+Wh6bjbhhz9u4G+n266?=
 =?iso-8859-1?Q?nSZVhpIJilPVwP+YM5OhLDj1o8bQ7a9m2hcLXDcLHp8acKO299FnceNftN?=
 =?iso-8859-1?Q?RBPSULxNbnPSyHI9XFzj0Ni1IeKds9NhCyvpa0qnhS89hIg8V/FoMfU5Eh?=
 =?iso-8859-1?Q?UrO2aGNJncVt6h7gcNOP0d1G09uIu8i+mmtDHp7iJoo4oV4YdwSaX05EbJ?=
 =?iso-8859-1?Q?+G5cGJwM2lO2fCJKdjQ6zLdQwM8ZKERidDC6YhgHQcQsnCNG4nJc/X0hP9?=
 =?iso-8859-1?Q?yskbeepaOwX9RuoiEHjvbFw4yuTz0WY+XIeRpbqDYIEBb81BxI5TJzQEV5?=
 =?iso-8859-1?Q?nkMNDLcD/lQDz9x6iEcyXr63j+lb2gmkpKrnf4yyRezhtJZgKS/t6liaQN?=
 =?iso-8859-1?Q?I3hjvz8tPG2GoFiuF7gD2lCxDBY0eXwYDTrqpJwuwu0vip+niHPSxfrJX9?=
 =?iso-8859-1?Q?yCPobin5kA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 28efc3a2-4a75-42dc-0e43-08df39d03510
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:51.4974
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: brKz0XZSc4SX6lXky9UsA5WZW18PieRXHuDSQuc9B8fYcGpjyJqxoa2oiZwvgIy+gAI3cec1d+tMdpHJpxLK4A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-16d1c6/1793727053-F5E0E77B-4D7EF206/0/0
X-purgate-type: clean
X-purgate-size: 2973

From: Rahul Singh <rahul.singh@arm.com>

To configure IOMMU in guest for passthrough devices, user will need to
copy the unmodified "iommus" property from host device tree to partial
device tree. To enable the dom0 linux kernel to configure the IOMMU
correctly replace the phandle in partial device tree with virtual
IOMMU phandle when "iommus" property is set.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Singed-off-by: Milan Djokic <milan_djokic@epam.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
---
 tools/libs/light/libxl_arm.c | 47 +++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 72b19d68af..0dc3789d08 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -1342,6 +1342,41 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt=
, void *pfdt)
     return 0;
 }
=20
+static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
+{
+    int nodeoff, proplen, i, r;
+    const fdt32_t *prop;
+    fdt32_t *prop_c;
+
+    nodeoff =3D fdt_path_offset(pfdt, "/passthrough");
+    if (nodeoff < 0)
+        return nodeoff;
+
+    for (nodeoff =3D fdt_first_subnode(pfdt, nodeoff);
+         nodeoff >=3D 0;
+         nodeoff =3D fdt_next_subnode(pfdt, nodeoff)) {
+
+        prop =3D fdt_getprop(pfdt, nodeoff, "iommus", &proplen);
+        if (!prop)
+            continue;
+
+        prop_c =3D libxl__zalloc(gc, proplen);
+
+        for (i =3D 0; i < proplen / 8; ++i) {
+            prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
+            prop_c[i * 2 + 1] =3D prop[i * 2 + 1];
+        }
+
+        r =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
+        if (r) {
+            LOG(ERROR, "Can't set the iommus property in partial FDT");
+            return r;
+        }
+    }
+
+    return 0;
+}
+
 #else
=20
 static int check_partial_fdt(libxl__gc *gc, void *fdt, size_t size)
@@ -1360,6 +1395,13 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt=
, void *pfdt)
     return -FDT_ERR_INTERNAL;
 }
=20
+static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
+{
+    LOG(ERROR, "partial device tree not supported");
+
+    return ERROR_FAIL;
+}
+
 #endif /* ENABLE_PARTIAL_DEVICE_TREE */
=20
 #define FDT_MAX_SIZE (1<<20)
@@ -1482,8 +1524,11 @@ next_resize:
         if (d_config->num_pcidevs)
             FDT( make_vpci_node(gc, fdt, ainfo, dom) );
=20
-        if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3)
+        if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3) {
             FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) );
+            if (pfdt)
+                FDT( modify_partial_fdt(gc, pfdt) );
+        }
=20
         for (i =3D 0; i < d_config->num_disks; i++) {
             libxl_device_disk *disk =3D &d_config->disks[i];
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:30:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:30:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470401.1679223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILZ-0005JF-KY; Tue, 03 Nov 2026 17:30:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470401.1679223; Tue, 03 Nov 2026 17:30:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILZ-0005H8-5M; Tue, 03 Nov 2026 17:30:57 +0000
Received: by outflank-mailman (input) for mailman id 1470401;
 Tue, 03 Nov 2026 17:30:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILX-0004tz-Ct
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILW-003aA2-Ol
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:54 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4a-bab6-0a2a0a5309dd-0a2a4509cda8-10
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:54 +0100
Received: from [52.101.83.81]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4e-be1a-0a2a45090019-34655351c1db-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:54 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by DBBPR03MB10511.eurprd03.prod.outlook.com (2603:10a6:10:53d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:52 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=ii7VguH65cJ0VecA8UQfz/JmhLY7wKXEAERREYgzxHbK4/J1L7E4HDK+3wdZYIjZNNZ6fh+UmmpKnLCV8Fa+9i+TEhqRgw7g83tZQb1UZNlXmZcJkysyW97HKGzGqy/45f03+X8Cm81hmKpusP+ThMdvVNK8EqroKA7Dc4R0AQO48nCWsye4DQubo2WAIwfzosyslhlzgL1fC+uAGiItUazIiCEpNlgDQ4lE/m/YcnCbB2qlHGLygj/NVvBSqk4JyRe97/rtosILcOAYTS4Qqv4j5bDypabHThEn4cgm96QwVPq49G+UHxHm2o0UaIqoIfTmfqtk9g20pwXVfxBxhw==
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=04wlLDrCXxRbN44m6Xv1zNQ5EXjCUtM6cx5nIO/iEp8=;
 b=M3qahzUvwAd/7t/mhmQjfzW3WeCtH2wZZP1NtBR8pYzC68z8ivZhsU0gmPR0TCZcCn06QXi5KzilabyEpge/tj0QnJz7r/59O9fHVzPGgJRg5Ku0x05Zn1HDChCJcYmC63Dq7GgbOaNBE5nTeEVFBEbXkY9s9+frLCvHAEQm+R2wPWcnAV9ps9uzUQwSMkX2V6dUgI4DW5Hmqoc+0UFWTvUcJPoSUwT/0MyW57odHr3Gv01Ubgd4/4keMFrPrc3QKUrM+B066oSZQ42o/2IRZ+4pw1O+2+gZD8JEX0zFPp//tU/+WdiljpEK2TVRar8J67d0rOIOog/qLjaoF9KFwg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=04wlLDrCXxRbN44m6Xv1zNQ5EXjCUtM6cx5nIO/iEp8=;
 b=CLU4CGizHPRz/RFg92AVej+gLZUtATFeZJBRwEjlwcOE90mWPH5IxzZ7Ih5jSN+3BebtDI0uRVr7ANCfV/yyRLMJtDVQR8hvhg7K+RHLnGuu+4uhi9bickM+v9n/yfOIa/8j4f6cj+NLt86d63FHq1hEqzbJMy34i0cODgrdrVD+4q3mpaudPlMvQAfDl6ffgji0VpXnyWoALMtl04uco3q2hyGxsSqvT4waLM3DIvHePgKh0xuBq5O1ovSBfO4XRGsSF1cerUu7mbaQA64FuONsCrgBIhb/t+B6dxBQucMB/SqFMFbLyu+SGwWUwuCanFjWxY9xEKUk5PSWf6sCWA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Rahul Singh <rahul.singh@arm.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Milan Djokic
	<milan_djokic@epam.com>
Subject: [PATCH v5 19/22] xen/arm: vIOMMU: Modify the partial device tree for
 dom0less
Thread-Topic: [PATCH v5 19/22] xen/arm: vIOMMU: Modify the partial device tree
 for dom0less
Thread-Index: AQHda7kT4VFqDkiD1UGmccSWBKKiSg==
Date: Tue, 3 Nov 2026 17:30:52 +0000
Message-ID:
 <eda58449cb79816d97f32f79323e98d1f07f923f.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|DBBPR03MB10511:EE_
x-ms-office365-filtering-correlation-id: 93818c35-541a-4006-56e3-08df39d035b4
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|38070700021|11063799006|56012099006|261009223027099003|261021121427099003|261021123027099003|261102123227099003|261026121527099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 ZvbDM+5wapsZoTaW1Rdtp/RMv090ipdRTKmuiwkBaRdHaFQEifzbXOJ6o5g/PMtGGDZevmHff8EcWYBuSKRMjZGw8Mykl8qu9UiEJMLX/BjgkeD3Ls7rEUcCRqgxXBcZWnn3zJAh8QSeEMSGlCJbGf99GouH+c9yxip6d+aAFPjFnjKJkEb5nzdkWKIFxvrmcmWZ+FLFRpVEeboMLlwkHb86+DBEGlfwGqbumfNZOdetBpcYzXGFJwLszrYK4WwQmwkiIZBar5zwXF+9Ublhuz37o+xmXX4D0z5zhIYpTchevC9XFLRe0oJ0oQiNelTIkIEj+GFyCO1u4smgPNcMolw5enFmBVF7RbaWfBDqOQC9vqnQky3QxBOXB7T2pzj3F8WHgO5OQ8tFxkal66304FTILdXiwzCXB5KubN3TR9I6qQmH4IWwNPDXSbrUHWZtCzpH5nIXJa+xHYKDDNVJ+Y3zVJNhQ8DdPvOFhdj9sRRVdDypdZ3A43oF3qXx9YznF0hd34+XIxWFvd7PAuqD77rTU+y+BQ57IoMO7rzOoAbu7o6g6OMq4SoHsRfqzTBVJSengCvTz3WputEoGuOcUONWyboTjdw7+ffAO0uobQ9Gloeq0i5w4xkkqkbGyH5G61GGWuOoxejkXGYVP32mRPsJQ5sWD2f4GtizUh0SiBCNkIRLipbhfOv13yoHh3oISnaLmjAE+LgbR+tDksK4xMxxKHJDFL+CJ/1U/b4/NL0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(38070700021)(11063799006)(56012099006)(261009223027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ufz0SxnTUwrDtKGOt4MnsKmyBQqL+X7qgkbiKyC74UkO87AeBG5z5FWBfW?=
 =?iso-8859-1?Q?qNlct6ozoZMeoqK0dt0cXbBo8W2b3CPs0nnJyPTjNbefPw3zGoJ1m5/uEy?=
 =?iso-8859-1?Q?N1dgwMa5RM4qxfVEg6jY9jpzwlpp/xF8tMNsTZxAw66D1oqkvNiXTAvkTV?=
 =?iso-8859-1?Q?bFjIgo6uAyjG2ykJA+vKbKYl7fzA5hApTEoOz1cnKmc8yD0okKZlF3DqaJ?=
 =?iso-8859-1?Q?YYKThFFaZ1h325vHtmeJscDJaD2gj+rEORhZh7zrEcUGIMPqnvBC+dm1pw?=
 =?iso-8859-1?Q?hl/FWZwfSGUOM0+IVg16nhN82011ocBgSTLWUHrbN6Jsw+iUVoXkXJzNoq?=
 =?iso-8859-1?Q?TGb/LB6BTzXPaDy6eMdy1vZIg+uHUgcm3DLBbwUPgTrIlahmPmd/1yyX88?=
 =?iso-8859-1?Q?o8/qZb92aYVD2FLjyXLGaQuYypBicanL69eZVmJd+f6JQQ4V4SP7i8qnND?=
 =?iso-8859-1?Q?H4enkv8E4UmLlC7qaELd4c1nfQebEfhKhhocLNSNLEPP11a5GGSfmVnld1?=
 =?iso-8859-1?Q?ZciJPdHjcvA3hSrmbWXoWsHeKA9iDzMgK7M047Zi7Ld6NbRrkibC826joK?=
 =?iso-8859-1?Q?Vya5D9n7ySL6HDoUm26HPemfa+SxJ9/csFgnEV9Y7DfF0OpohB/BrWcrqi?=
 =?iso-8859-1?Q?TwLN7128GwbrHIN7JdvGJHtDrb4cZaomIbSuvQui2TpDVUe0oAAMXveTKt?=
 =?iso-8859-1?Q?5WhE3otTSevcnMtUhR29mCehpI6ETeAjj7Pz5JfLkVqr3SOy8pIvnxlM7N?=
 =?iso-8859-1?Q?0JWe+bUFuzzUbcAwMXffcwojO1RbMC4c9Q0EQ/8wI1NpUQxdwc3RQ6snb6?=
 =?iso-8859-1?Q?HZCmi5w2mqCyVv14+6Ly+Yz9iFrlpiaTzuFpNQpE2eJTHTSvFm3fVcSsUV?=
 =?iso-8859-1?Q?YfAmEqgh/JDhq4UjGJTuJny4+gF/3YMOvS4mkDjR/QUs6+AoV8eoqZSt9d?=
 =?iso-8859-1?Q?i9yx0RAnv/pAt/eDbXBnBWd9Nu3rzMOvBgLA61zreTyyVhI54Whq6dV8Sg?=
 =?iso-8859-1?Q?Bj8lUzQXQhBblFO0w1vcuFkem9BN8ZeAfYy3qGZXLdQi9MCUpj8w49rlGn?=
 =?iso-8859-1?Q?Qal8ElZa3F9ZTbbPlAvoIJo5T133xwDOXJtoNNz6A/uIjEeNhCLMjAwfTL?=
 =?iso-8859-1?Q?7Ct3/GZVMc8FP17an52rBo5AIQIZZmlv7QxlWv0sfWeBnEtm0/fBcJlNb5?=
 =?iso-8859-1?Q?CMRahdrxSMu0nhSguegl2VinTxLsFz3DBIlZUQOj5aik+AgWRe/SvpIn8f?=
 =?iso-8859-1?Q?Xu4R5FZ/IxVReqsODR4fTFkc70Ffc56kS49u2GtavF6krv3yS+Ms+1owBZ?=
 =?iso-8859-1?Q?w8h0JyiZklgJGBVm9eJp3EuEgbXhJS/+67AeTNusUHgtg4pLpaK/MnbIZI?=
 =?iso-8859-1?Q?AzNwwGAhnpS8if7+LVldYoNCg5DGdr1rMlU04f38EKX5/yoZ+JCzPAT9K/?=
 =?iso-8859-1?Q?ZchbLS7CykkEdxNAwW2HfZNrGj/Ypp+hhFekJXxIiobDC8eDZRpdO1EO7j?=
 =?iso-8859-1?Q?Y1nFQW4aLyY9antf5e/xydyomlT0WFudV/39t33iCm7d0V6MxhCDTQybyp?=
 =?iso-8859-1?Q?1PfGhzO7VoEPvP9s24ht6Y3hmgvFfWqrjwMncYVyJBXd9u96xUTSkL+0Iq?=
 =?iso-8859-1?Q?xD5EjcjjewjSdEteLg16HIKtMNrI2Cp9T94FEflwYyBzd5TDzUZOxkzOpp?=
 =?iso-8859-1?Q?mtQekgb2jqCEqJAbOC7s+msyyQ3a0FgkswwXCdS06vMp4qwUzyLvKkofTz?=
 =?iso-8859-1?Q?SFP+LshRi/ZL1nFK7TLl7MdBmD7fkrrcilNgiV9gf3mofD2/w0tl0Y4QAR?=
 =?iso-8859-1?Q?Dl1KqxCyFA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 93818c35-541a-4006-56e3-08df39d035b4
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:52.6622
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: qC5kj2QtJoifbhGi9pfbaj11sZGBwANOcjYv8xn6RUsy+7rw+vjm9jEbZSCsTL6Pq0K4AIzQqRdP3mKDJD02eQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10511
X-purgate-ID: tlsNG-bad1c0/1793727054-39CC7034-5DDA5E89/0/0
X-purgate-type: clean
X-purgate-size: 2750

From: Rahul Singh <rahul.singh@arm.com>

To configure IOMMU in guest for passthrough devices, user will need to
copy the unmodified "iommus" property from host device tree to partial
device tree. To enable the dom0 linux kernel to configure the IOMMU
correctly replace the phandle in partial device tree with virtual
IOMMU phandle when "iommus" property is set.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/common/device-tree/dom0less-build.c | 45 ++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr=
ee/dom0less-build.c
index a877e695ad..970f89ef68 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -332,7 +332,46 @@ static int __init handle_prop_pfdt(struct kernel_info =
*kinfo,
     return ( propoff !=3D -FDT_ERR_NOTFOUND ) ? propoff : 0;
 }
=20
-static int __init scan_pfdt_node(struct kernel_info *kinfo, const void *pf=
dt,
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+static int __init modify_pfdt_node(void *pfdt, int nodeoff)
+{
+    int proplen, i, rc;
+    const fdt32_t *prop;
+    fdt32_t *prop_c;
+
+    prop =3D fdt_getprop(pfdt, nodeoff, "iommus", &proplen);
+    if ( !prop )
+        return -EINVAL;
+
+    prop_c =3D xzalloc_bytes(proplen);
+    if ( !prop_c )
+        return -ENOMEM;
+
+    for ( i =3D 0; i < proplen / 8; ++i )
+    {
+        prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
+        prop_c[i * 2 + 1] =3D prop[i * 2 + 1];
+    }
+
+    rc =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
+    if ( rc )
+    {
+        dprintk(XENLOG_ERR, "Can't set the iommus property in partial FDT"=
);
+        goto out;
+    }
+
+ out:
+    xfree(prop_c);
+    return rc;
+}
+#else
+static inline int __init modify_pfdt_node(void *pfdt, int nodeoff)
+{
+    return -EOPNOTSUPP;
+}
+#endif
+
+static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
                                  int nodeoff,
                                  uint32_t address_cells, uint32_t size_cel=
ls,
                                  bool scan_passthrough_prop)
@@ -358,6 +397,10 @@ static int __init scan_pfdt_node(struct kernel_info *k=
info, const void *pfdt,
     node_next =3D fdt_first_subnode(pfdt, nodeoff);
     while ( node_next > 0 )
     {
+        rc =3D modify_pfdt_node(pfdt, node_next);
+        if ( rc )
+            return rc;
+
         rc =3D scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size_=
cells,
                             scan_passthrough_prop);
         if ( rc )
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:31:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:31:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470408.1679232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILc-0005sT-CS; Tue, 03 Nov 2026 17:31:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470408.1679232; Tue, 03 Nov 2026 17:31:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILb-0005rN-Tf; Tue, 03 Nov 2026 17:30:59 +0000
Received: by outflank-mailman (input) for mailman id 1470408;
 Tue, 03 Nov 2026 17:30:57 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILZ-0005Hj-9k
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILY-0082xo-MV
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:56 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a39-e002-0a2a0a5209dd-0a2a4508a990-22
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:56 +0100
Received: from [52.101.84.86]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a50-f659-0a2a45080019-346554567180-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:56 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by PA1PR03MB11410.eurprd03.prod.outlook.com (2603:10a6:102:565::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:54 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=y+u8XSYzkNn7OxrWiQoA6fr3QAZAFkRwG4DMRAyRCB5UMPGfzIKNmTF3rkHkOOQdkxp08/bYO+AM4gYtrN+YvbuCEKHwWp2NbcnIGrtgSdHKCaE5fnTvgdIWP4H1sHUwaFZZdukw9+D6jPTzIF9I5CLlVint8xjjPbONoF0UeBgmiW5UD8kjDk//go0TsDlFJBp14h0wwoN5nSHUgqVO9+kEY65VjUf1ZP7rzT5GqUQBqUk80QokCOxT0i5/7JQ3nBkI+ybLVWTThgHJelhDtSfPPrHxxvb3Hy5dlNT4qUNAvE0+M2SNHNgRmibHqkPSJB/F/YwJokIXKymTwbRxew==
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=rvAF21OjdmFjCHyccckotEKJx0kKkFQ9Xrm9Yb5MyWM=;
 b=L9BubjP0PrZnd+LWmk4rDSZNrX26LnfYfRW/eWiPcwzVVKsDCeobYLHm0Kio6cyKHZxSJpOvCwIH2+38pi0bH+jjH13+fZpTj8kiI6DxyTYbDWHOp0Fl9U2RkjfjtJkg0VkPwcVg1+u7X1Fa3Uv848003bKm4OSIX8LBRj0AQMqve9TOzDsjxPmYH/sepbm630aOxzlANvhL46LwVpzIxtR18stCsPLS/h7EPJVieLrVTlUYk9Tc9ehrF1gUBUrL0i2wvLsT/zM+hYJAHjVp8D1oPV37EId7U9BQSBNPKatuQsaO3RYC7AvZzO6xekK3ni+hFdvs9mngbThnoTwMbQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rvAF21OjdmFjCHyccckotEKJx0kKkFQ9Xrm9Yb5MyWM=;
 b=GYVxu0waZRyznJ+TpOCD7oUcJPnMIAauOi2p4/VfnVG7bfhFCS3UJRfjvWpyqnTYYKN2DWy2375WY9ooMMC4/yHI4rEk75YZNqC66wFWV6qAGxqXmSpVZnqflVUp1681tFgGnpNM4fqrxsws7s513/G9pVy2isirSQKzdJ8uljmBtw58JbCUJSbzqcX4aBNoctJY0erFyCIwzFMeml86zPttQ/DASR8jmYzXdtWx905KeAslNMGU3qchgHsape9sGjcsKHqNHApc20MKUhvQA3b8JU0fpnk5A8tGLxSeG8UKsH7GGThxLVY14zgIy6jFUeaUxvoBb+o7scVPvxdx9A==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Milan Djokic <milan_djokic@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Rahul Singh <rahul.singh@arm.com>, Jan
 Beulich <jbeulich@suse.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.com>
Subject: [PATCH v5 20/22] xen/arm: vIOMMU vSID->pSID mapping layer
Thread-Topic: [PATCH v5 20/22] xen/arm: vIOMMU vSID->pSID mapping layer
Thread-Index: AQHda7kULYxXGnfVkUmCgWLI1RRaWg==
Date: Tue, 3 Nov 2026 17:30:54 +0000
Message-ID:
 <112c09580e509dd89db411fd61e556d8637582d4.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|PA1PR03MB11410:EE_
x-ms-office365-filtering-correlation-id: 67bc4053-7b3c-4d1d-64c4-08df39d036c4
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|23010399003|1800799024|38070700021|261022075727099003|56012099006|11063799006|261009223027099003|261022105027099003|261102123227099003|261028144727099003|261021121427099003|261026121527099003|261026140227099003|261021123027099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 TFYBAzknEbyp0+914ps2ML0eFkzCm0noPCweU41KKuQHncmaVcsqJfllHMj2Q7/8PENqPS5R/u1fkQy9cvN66JiIVD1gzx07ogiH7Yut730aHS96CPhuufwhmW2EW53Qx0HVg5LtFfMSJxPepEbgQIr0rSCHuFpLKj31YvAAJqcLp4E5zjhZnWSw0rIO1XCjR7GY9Hip5iZtcJz7rWGPvH4W9e/ENuGDPpyjWQRRBI9depTN3hTWGV5AnDl8cBh3FKfXzu8gj7nrTz9XK4pdpIOL+dtrsB/gr/J8ma68wAJaks8pejm08+NiyT9E6PhlP0UkmTnOdbid1gm7XOcQslwoxcOIyBJVn5IN5WTeWYAD1JpzW1Z2uOhrVEccvt+N+zvFpvBLglAbV4OacLiPIj33lNdRRB1dU64VGs0rH2tPooBUTjrcupYQiZRapk5V198Onpu/v9/KwCEUjkfcJg1VHXfGxHU8/HoyfPTnMNrAsEFnCRuAsAf6Lo2sN/CUJi7e7QcDWftAW9eEPdLHItrlSrA8XhTjqPsMhLiWaeQuiQoHRJTckgeJpRYjQCj+a4MJgKiPORF0x2Rqn35Rz5V97dFhHqrnvuBDKbml0jH7+StD4t9ECXkffAAcJDYDyp6O2uvXS5bPfKZd0Xlza7DqFw1Dxg7Q7alHLn33BxWelMsMyTWW3z8uf+cFg9J63i+BzM2gibswbicdi1Hqe+WJN2KNCrxOJWMb9sang8U=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(23010399003)(1800799024)(38070700021)(261022075727099003)(56012099006)(11063799006)(261009223027099003)(261022105027099003)(261102123227099003)(261028144727099003)(261021121427099003)(261026121527099003)(261026140227099003)(261021123027099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?sfs7H3lX4zlulIxPK0Q582MxjKyUJf4h66d6uVEUVnfbFYm5yQI2hT8xoK?=
 =?iso-8859-1?Q?YCzqlB90Qs3HRVxNrKr8sI6M0/hdsbZvEtEMlD4EU/1a85OL0M+Vlqzzod?=
 =?iso-8859-1?Q?gU3j5W9LVwoHJdAPCrZA77OnH7hiUpGpFmVJYQm31Wi6Q/BetIVPB9RarG?=
 =?iso-8859-1?Q?mew5dBYfwu2z//fBSVOyIrL61VvgrBRwANDBAZERp9GGHh+rNPvhX5mDrP?=
 =?iso-8859-1?Q?kv+e2H8A25Z0wYvmP1rYtSFAQCT7rup3zXqOKHPRIq3MspvpO/jWNf5Pfr?=
 =?iso-8859-1?Q?QcDD+tL4TJFM1G8XX/2wmfuPNIKOyw+lZF1LhGnzmoljfNySln1m/Ox1gO?=
 =?iso-8859-1?Q?YUBPcp2E2BuXmP20oQTQv12CvCVR1tvDGFp1kQs5DpKrVUHrap1Z2IHO0l?=
 =?iso-8859-1?Q?yDJpOaYEJSzUbGwSmOJv0yAWmc6v6P+Np1yNyQI8+ho/r+NHothw2VCZq/?=
 =?iso-8859-1?Q?erulGMdqa/U1PN28NICaMYQ4frgL+VpAjnJ9stunKeLx/GAveHYFQHz0Cl?=
 =?iso-8859-1?Q?jCrLhOdHdD/RpUxW+0OVmneEgv45NB+CB5M1SdRnfo9WkOrpbyMhEL1WyT?=
 =?iso-8859-1?Q?cARkq0u4HC7nMCithAs0hBD6//BJQdb62+TEIsWhmvFdgEiJjgtoYiAX7s?=
 =?iso-8859-1?Q?WVhauL6ip6PSb9bQdC/nuJuxjSaP2gaSFO9RqOxZLGFsVbmKVzBAXibSAg?=
 =?iso-8859-1?Q?nX6jz5rO7EcEV9BW0/R6NSqRWWfikfQsdJq02vszKpESniqptzYuE5b+tG?=
 =?iso-8859-1?Q?Mm+yI2dFKp6qcjjIuANZKyi/KI8OjDOkO6YCdfrRoWomGDmuDo7RINIltQ?=
 =?iso-8859-1?Q?6aSX3yDWxUX9YxQYiEgBK4Fzvj7mo/mC+dELWNSRT2wD25VQs8iUFdUQF9?=
 =?iso-8859-1?Q?Sa+l5BHvuirFBTtEw37mUGMtU7nvj8HWOqWJCJ8BQ4O6ClZL9ZvUr/CKxG?=
 =?iso-8859-1?Q?a3yYto8zC02ZMMvqU29x1imjhP2MfBQ20XWyPtE1LMax6S48ofMDrysmYf?=
 =?iso-8859-1?Q?NAkIXTxHy1N0AFdj6s1zuEqpdAerPR2DNuJoj53TadYAAk6teqcf2GDRc3?=
 =?iso-8859-1?Q?0vmftoMbh1XQzY7ubk5BitC1QJtiIGB3xL3xcU51poPsDZr0+rEfUc8YXO?=
 =?iso-8859-1?Q?LHaLJ+OYOPVH315F6dJIBv6wO8BOMRrIujGd9AmeWomCn77d4esgSCVY9X?=
 =?iso-8859-1?Q?IkBOgBxglG0xCMu5f9NEG2KSbkXYJPeab0ARXqTyr4p/3aoark280u47sb?=
 =?iso-8859-1?Q?DTIZhL8g2D7DLVASr2geqHBV9H3vVNaVVzmiG8ef/0iZ4Wnrk39eWbDl1y?=
 =?iso-8859-1?Q?oEXlpEgI/cXc6ReP7LovSUONp4JaRox4OVHfRRBilp8IPczDwWBFTdC7KV?=
 =?iso-8859-1?Q?AQoUSWmBRAAKJNKkdxinFwuuAYO63fFR/crJ4OPjYbTXO9PlsiM29xfdR9?=
 =?iso-8859-1?Q?F6XBpQVZL6QQR+Bf9rB7t1U+Y1cq2iNEhutmybl2eQmxpeFpm+ky4SeAMm?=
 =?iso-8859-1?Q?sodgjVDT1Yh5iCZ+BTdaTomuPsocADvW1tg6j8RBcuJMgupdyX1/c86soI?=
 =?iso-8859-1?Q?eepkz04zuYHztIIQ7SG8YSppUnPJNIed4m8Eft3Dv9GH/Jpr8C0/LB2Le/?=
 =?iso-8859-1?Q?hL0Dytb/pWDe9F30j/ewim6M1IqE0BwkeBHZPWc+ThYHP+igVwCLfltmdP?=
 =?iso-8859-1?Q?WjzXaU21T4cgLv6e18tqtK1+EF0NOvvGlmLyAo86n6QjHQOGcDD4vjYGTe?=
 =?iso-8859-1?Q?QcKUPs9kQFm5jGFL1WE3wxJUCWZDwz6iHZVh7Mq3sYR5seKvGL05HP8kuh?=
 =?iso-8859-1?Q?X54rJfl2bg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 67bc4053-7b3c-4d1d-64c4-08df39d036c4
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:54.4688
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 9deS5gQszm/i02y+vLJaQI1nnRf/XmIYibIwMqgNW4BAdDj4Q07kIdEQ+KYdynvNJF5NSI+wKWMa5aUbM6LN7w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB11410
X-purgate-ID: tlsNG-c1860d/1793727056-CF35D87B-4C83D20E/0/0
X-purgate-type: clean
X-purgate-size: 18392

Introduce a vIOMMU mapping layer to support passthrough of IOMMU devices
attached to different physical IOMMUs, including devices with the same
Stream ID.

Add a new generic vIOMMU API, viommu_allocate_vsid(), which allocates a
guest vSID and maps it to the input pSID and the backing physical SMMU.

Once the mapping is established, the guest uses the vSID for stage-1
commands, and Xen translates the vSID to the corresponding pSID before
processing the command on the physical SMMU.

Implement usage of the new API for dom0less guests. Allocate vSIDs when
creating the guest device tree and replace the original pSIDs with vSIDs
that are subsequently used by the guest driver.

Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 xen/arch/arm/include/asm/viommu.h       |  12 ++
 xen/common/device-tree/dom0less-build.c |  35 +++--
 xen/drivers/passthrough/arm/smmu-v3.c   |  10 +-
 xen/drivers/passthrough/arm/viommu.c    |   9 ++
 xen/drivers/passthrough/arm/vsmmu-v3.c  | 184 +++++++++++++++++++++++-
 xen/include/xen/iommu.h                 |   6 +-
 6 files changed, 242 insertions(+), 14 deletions(-)

diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v=
iommu.h
index 5ae21042f0..3d0eb92655 100644
--- a/xen/arch/arm/include/asm/viommu.h
+++ b/xen/arch/arm/include/asm/viommu.h
@@ -34,6 +34,16 @@ struct viommu_ops {
      * Called during domain destruction to free resources used by vIOMMU.
      */
     int (*relinquish_resources)(struct domain *d);
+
+    /*
+     * Allocate free vSID/vRID for the guest device and establish vID->pID=
 mapping
+     * Called during domain device assignment.
+     * Returns 0 on success and sets vsid argument to newly allocated vSID=
/vRID
+     * mapped to physical ID (id argument).
+     * Negative error code returned if allocation fails.
+     */
+    int (*allocate_vsid)(struct domain *d, uint32_t id, uint32_t phandle,
+                         uint32_t *vsid);
 };
=20
 struct viommu_desc {
@@ -54,6 +64,8 @@ extern struct list_head host_iommu_list;
 int domain_viommu_init(struct domain *d, uint8_t viommu_type);
 int viommu_relinquish_resources(struct domain *d);
 uint8_t viommu_get_type(void);
+int viommu_allocate_vsid(struct domain *d, uint32_t id, uint32_t phandle,
+                         uint32_t *vsid);
 void add_to_host_iommu_list(paddr_t addr, paddr_t size,
                             const struct dt_device_node *node,
                             const void *iommu);
diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr=
ee/dom0less-build.c
index 970f89ef68..3b2a888698 100644
--- a/xen/common/device-tree/dom0less-build.c
+++ b/xen/common/device-tree/dom0less-build.c
@@ -32,6 +32,10 @@
 #include <xen/static-memory.h>
 #include <xen/static-shmem.h>
=20
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+#include <asm/viommu.h>
+#endif
+
 #define XENSTORE_PFN_LATE_ALLOC UINT64_MAX
=20
 static domid_t __initdata xs_domid =3D DOMID_INVALID;
@@ -333,11 +337,12 @@ static int __init handle_prop_pfdt(struct kernel_info=
 *kinfo,
 }
=20
 #ifdef CONFIG_ARM_VIRTUAL_IOMMU
-static int __init modify_pfdt_node(void *pfdt, int nodeoff)
+static int __init modify_pfdt_node(void *pfdt, int nodeoff, struct domain =
*d)
 {
     int proplen, i, rc;
     const fdt32_t *prop;
     fdt32_t *prop_c;
+    uint32_t psid, phandle, vsid;
=20
     prop =3D fdt_getprop(pfdt, nodeoff, "iommus", &proplen);
     if ( !prop )
@@ -347,10 +352,23 @@ static int __init modify_pfdt_node(void *pfdt, int no=
deoff)
     if ( !prop_c )
         return -ENOMEM;
=20
+    /*=20
+     * Assign <vIOMMU vSID> pairs to iommus property and establish
+     * vSID->pSID mappings
+     */
     for ( i =3D 0; i < proplen / 8; ++i )
     {
+        phandle =3D fdt32_to_cpu(prop[i * 2]);
+        psid =3D fdt32_to_cpu(prop[i * 2 + 1]);
+        rc =3D viommu_allocate_vsid(d, psid, phandle, &vsid);
+        if ( rc )
+        {
+            dprintk(XENLOG_ERR, "(DOMID=3D%u) Failed to allocate vSID for =
"
+                    "pSID: %u, pIOMMU: %u", d->domain_id, psid, phandle);
+            goto out;
+        }
         prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
-        prop_c[i * 2 + 1] =3D prop[i * 2 + 1];
+        prop_c[i * 2 + 1] =3D cpu_to_fdt32(vsid);
     }
=20
     rc =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
@@ -365,7 +383,8 @@ static int __init modify_pfdt_node(void *pfdt, int node=
off)
     return rc;
 }
 #else
-static inline int __init modify_pfdt_node(void *pfdt, int nodeoff)
+static inline int __init modify_pfdt_node(void *pfdt, int nodeoff,
+                                          struct domain *d)
 {
     return -EOPNOTSUPP;
 }
@@ -374,7 +393,7 @@ static inline int __init modify_pfdt_node(void *pfdt, i=
nt nodeoff)
 static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt,
                                  int nodeoff,
                                  uint32_t address_cells, uint32_t size_cel=
ls,
-                                 bool scan_passthrough_prop)
+                                 bool scan_passthrough_prop, struct domain=
 *d)
 {
     int rc =3D 0;
     void *fdt =3D kinfo->fdt;
@@ -397,12 +416,12 @@ static int __init scan_pfdt_node(struct kernel_info *=
kinfo, void *pfdt,
     node_next =3D fdt_first_subnode(pfdt, nodeoff);
     while ( node_next > 0 )
     {
-        rc =3D modify_pfdt_node(pfdt, node_next);
+        rc =3D modify_pfdt_node(pfdt, node_next, d);
         if ( rc )
             return rc;
=20
         rc =3D scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size_=
cells,
-                            scan_passthrough_prop);
+                            scan_passthrough_prop, d);
         if ( rc )
             return rc;
=20
@@ -489,7 +508,7 @@ static int __init domain_handle_dtb_boot_module(struct =
domain *d,
             res =3D scan_pfdt_node(kinfo, pfdt, node_next,
                                  DT_ROOT_NODE_ADDR_CELLS_DEFAULT,
                                  DT_ROOT_NODE_SIZE_CELLS_DEFAULT,
-                                 false);
+                                 false, d);
             if ( res )
                 goto out;
             continue;
@@ -499,7 +518,7 @@ static int __init domain_handle_dtb_boot_module(struct =
domain *d,
             res =3D scan_pfdt_node(kinfo, pfdt, node_next,
                                  DT_ROOT_NODE_ADDR_CELLS_DEFAULT,
                                  DT_ROOT_NODE_SIZE_CELLS_DEFAULT,
-                                 true);
+                                 true, d);
             if ( res )
                 goto out;
             continue;
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug=
h/arm/smmu-v3.c
index f213b3de12..b0ec004960 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -3103,7 +3103,7 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(co=
nst struct device *dev)
 }
=20
 static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d,
-				u32 sid)
+				u32 sid, const struct arm_smmu_device *smmu)
 {
 	int i;
 	unsigned long flags;
@@ -3119,6 +3119,9 @@ static struct iommu_domain *arm_smmu_get_domain_by_si=
d(struct domain *d,
 	list_for_each_entry(io_domain, &xen_domain->contexts, list) {
 		smmu_domain =3D to_smmu_domain(io_domain);
=20
+		if (smmu_domain->smmu !=3D smmu)
+			continue;
+
 		spin_lock_irqsave(&smmu_domain->devices_lock, flags);
 		list_for_each_entry(master, &smmu_domain->devices, domain_head) {
 			for (i =3D 0; i < master->num_streams; i++) {
@@ -3347,7 +3350,8 @@ static void arm_smmu_iommu_xen_domain_teardown(struct=
 domain *d)
 }
=20
 static int arm_smmu_attach_guest_config(struct domain *d, uint32_t sid,
-		const struct iommu_guest_config *cfg)
+				const struct iommu_guest_config *cfg,
+				const struct arm_smmu_device *smmu)
 {
 	int ret =3D -EINVAL;
 	unsigned long flags;
@@ -3357,7 +3361,7 @@ static int arm_smmu_attach_guest_config(struct domain=
 *d, uint32_t sid,
 	struct iommu_domain *io_domain;
=20
 	spin_lock(&xen_domain->lock);
-	io_domain =3D arm_smmu_get_domain_by_sid(d, sid);
+	io_domain =3D arm_smmu_get_domain_by_sid(d, sid, smmu);
 	if (!io_domain) {
 		ret =3D -ENODEV;
 		goto out;
diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough=
/arm/viommu.c
index b4b91ab1cb..e476567b49 100644
--- a/xen/drivers/passthrough/arm/viommu.c
+++ b/xen/drivers/passthrough/arm/viommu.c
@@ -76,6 +76,15 @@ int viommu_relinquish_resources(struct domain *d)
     return cur_viommu->ops->relinquish_resources(d);
 }
=20
+int viommu_allocate_vsid(struct domain *d, uint32_t id, uint32_t phandle,
+                         uint32_t *vsid)
+{
+    if ( !cur_viommu )
+        return -ENODEV;
+
+    return cur_viommu->ops->allocate_vsid(d, id, phandle, vsid);
+}
+
 uint8_t viommu_get_type(void)
 {
     if ( !cur_viommu || host_iommu_list_incomplete ||
diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou=
gh/arm/vsmmu-v3.c
index 24588affe9..5d225ccc08 100644
--- a/xen/drivers/passthrough/arm/vsmmu-v3.c
+++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
@@ -86,6 +86,8 @@
 #define smmu_get_ste_s1ctxptr(x)    FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK,=
 \
                                     FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, =
x))
=20
+#define MAX_VSID   (1 << SMMU_IDR1_SIDSIZE)
+
 /* event queue entry */
 struct arm_smmu_evtq_ent {
     /* Common fields */
@@ -133,6 +135,14 @@ struct arm_vsmmu_queue {
     uint8_t     max_n_shift;
 };
=20
+/* vSID->pSID mapping entry */
+struct vsid_entry {
+    struct list_head entry;
+    uint32_t    vsid;
+    uint32_t    psid;
+    struct arm_smmu_device *smmu;
+};
+
 struct virt_smmu {
     struct      domain *d;
     struct      list_head viommu_list;
@@ -157,6 +167,8 @@ struct virt_smmu {
     spinlock_t  cr2_lock;
     spinlock_t  strtab_cfg_lock;
     spinlock_t  irq_cfg_lock;
+    spinlock_t vsids_lock;
+    struct list_head vsids;
 };
=20
 /* Helper functions */
@@ -379,8 +391,31 @@ int arm_vsmmu_handle_evt(struct domain *d, struct devi=
ce *dev, uint64_t *evt)
     }
     else
     {
+        uint32_t sid =3D FIELD_GET(EVTQ_0_SID, evt[0]);
+        struct vsid_entry *vsid;
+        bool found =3D false;
+
         smmu =3D list_entry(d->arch.viommu_list.next,
                           struct virt_smmu, viommu_list);
+
+        spin_lock(&smmu->vsids_lock);
+
+        /* Translate pSID->vSID */
+        list_for_each_entry(vsid, &smmu->vsids, entry)
+        {
+            if ( vsid->psid =3D=3D sid && vsid->smmu->dev =3D=3D dev )
+            {
+                evt[0] &=3D ~EVTQ_0_SID;
+                evt[0] |=3D FIELD_PREP(EVTQ_0_SID, vsid->vsid);
+                found =3D true;
+                break;
+            }
+        }
+
+        spin_unlock(&smmu->vsids_lock);
+
+        if ( !found )
+            return -ENOENT;
     }
=20
     ret =3D arm_vsmmu_write_evtq(smmu, evt);
@@ -558,6 +593,71 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu =
*smmu, uint64_t *cmdptr)
     struct arm_vsmmu_s1_trans_cfg s1_cfg =3D {0};
     uint32_t sid =3D smmu_cmd_get_sid(cmdptr[0]);
     struct iommu_guest_config guest_cfg =3D {0};
+    struct arm_smmu_device *phys_smmu =3D NULL;
+    struct host_iommu *host_iommu;
+    uint32_t psid;
+    struct arm_smmu_evtq_ent ent =3D {
+        .opcode =3D EVT_ID_BAD_STREAMID,
+        .sid =3D sid,
+        .c_bad_ste_streamid =3D {
+            .ssid =3D 0,
+            .ssv =3D false,
+        },
+    };
+
+    /* vIOMMU->pIOMMU identity mapped for HW domain */
+    if ( domain_use_host_layout(d) )
+    {
+        psid =3D sid;
+        list_for_each_entry(host_iommu, &host_iommu_list, entry)
+        {
+            if ( host_iommu->addr =3D=3D smmu->addr )
+            {
+                phys_smmu =3D (struct arm_smmu_device *) host_iommu->iommu=
;
+                break;
+            }
+        }
+    }
+    else {
+        struct vsid_entry *vsid_entry;
+        bool entry_found =3D false;
+
+        spin_lock(&smmu->vsids_lock);
+        /* vSID out of range or no vSIDs allocated */
+        if ( sid >=3D MAX_VSID || list_empty(&smmu->vsids) )
+        {
+            spin_unlock(&smmu->vsids_lock);
+            arm_vsmmu_send_event(smmu, &ent);
+            return -EINVAL;
+        }
+
+        /* get vSID entry corresponding to passed vSID */
+        list_for_each_entry(vsid_entry, &smmu->vsids, entry)
+            if ( vsid_entry->vsid =3D=3D sid )
+            {
+                entry_found =3D true;
+                break;
+            }
+
+        /* vSID not mapped */
+        if ( !entry_found )
+        {
+            spin_unlock(&smmu->vsids_lock);
+            arm_vsmmu_send_event(smmu, &ent);
+            return -EINVAL;
+        }
+
+        psid =3D vsid_entry->psid;
+        phys_smmu =3D vsid_entry->smmu;
+        spin_unlock(&smmu->vsids_lock);
+    }
+
+    /* vSID mapped to invalid physical SMMU */
+    if (!phys_smmu)
+    {
+        arm_vsmmu_send_event(smmu, &ent);
+        return -EINVAL;
+    }
=20
     ret =3D arm_vsmmu_find_ste(smmu, sid, ste);
     if ( ret )
@@ -578,7 +678,7 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu *=
smmu, uint64_t *cmdptr)
     else
         guest_cfg.config =3D ARM_SMMU_DOMAIN_S1;
=20
-    ret =3D hd->platform_ops->attach_guest_config(d, sid, &guest_cfg);
+    ret =3D hd->platform_ops->attach_guest_config(d, psid, &guest_cfg, phy=
s_smmu);
     if ( ret )
         return ret;
=20
@@ -1189,6 +1289,13 @@ static int vsmmuv3_init_single(struct domain *d, pad=
dr_t addr,
     smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES;
     smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES;
=20
+    /*
+     * vSID->pSID mapping layer is only used in the context of domains tha=
t
+     * are not direct-mapped
+     */
+    if ( !domain_use_host_layout(d) )
+        INIT_LIST_HEAD(&smmu->vsids);
+
     spin_lock_init(&smmu->cmd_queue_lock);
     spin_lock_init(&smmu->evt_queue_lock);
     spin_lock_init(&smmu->gerror_lock);
@@ -1197,6 +1304,7 @@ static int vsmmuv3_init_single(struct domain *d, padd=
r_t addr,
     spin_lock_init(&smmu->cr2_lock);
     spin_lock_init(&smmu->strtab_cfg_lock);
     spin_lock_init(&smmu->irq_cfg_lock);
+    spin_lock_init(&smmu->vsids_lock);
=20
     ret =3D vgic_reserve_virq(d, virq);
     if ( !ret )
@@ -1317,8 +1425,16 @@ static int vsmmuv3_relinquish_resources(struct domai=
n *d)
     if ( list_head_is_null(&d->arch.viommu_list) )
         return 0;
=20
-    list_for_each_entry_safe(pos, temp, &d->arch.viommu_list, viommu_list =
)
+    list_for_each_entry_safe(pos, temp, &d->arch.viommu_list, viommu_list)
     {
+        struct vsid_entry *vsid, *vsid_temp;
+
+        list_for_each_entry_safe(vsid, vsid_temp, &pos->vsids, entry)
+        {
+            list_del(&vsid->entry);
+            xfree(vsid);
+        }
+   =20
         list_del(&pos->viommu_list);
         xfree(pos);
     }
@@ -1326,8 +1442,72 @@ static int vsmmuv3_relinquish_resources(struct domai=
n *d)
     return 0;
 }
=20
+static int vsmmuv3_allocate_vsid(struct domain *d, uint32_t id,
+                                 uint32_t phandle, uint32_t *vsid)
+{
+    uint32_t i =3D 0;
+    struct virt_smmu *smmu;
+    struct host_iommu *host_iommu;
+    struct arm_smmu_device *phys_smmu =3D NULL;
+    struct vsid_entry *entry;
+    struct list_head *vsid_head;
+
+    /* vSID->pSID mapping layer not used for direct-mapped domains */
+    if ( domain_use_host_layout(d) )
+        return -EOPNOTSUPP;
+
+    if ( list_head_is_null(&d->arch.viommu_list) )
+        return -ENODEV;
+
+    smmu =3D list_first_entry(&d->arch.viommu_list, struct virt_smmu, viom=
mu_list);
+
+    /*
+     * Find the physical SMMU corresponding to the device-tree phandle.
+     */
+    list_for_each_entry(host_iommu, &host_iommu_list, entry)
+    {
+        if ( host_iommu->dt_node->phandle =3D=3D phandle )
+        {
+            phys_smmu =3D (struct arm_smmu_device *) host_iommu->iommu;
+            break;
+        }
+    }
+
+    if ( !phys_smmu )
+        return -ENODEV;
+
+    spin_lock(&smmu->vsids_lock);
+    /* Get first free vSID index */
+    list_for_each(vsid_head, &smmu->vsids)
+        i++;
+
+    /* Max number of vSIDs already allocated? */
+    if ( i =3D=3D MAX_VSID )
+    {
+        spin_unlock(&smmu->vsids_lock);
+        return -ENOMEM;
+    }
+
+    entry =3D xzalloc(struct vsid_entry);
+    if ( !entry )
+    {
+        spin_unlock(&smmu->vsids_lock);
+        return -ENOMEM;
+    }
+
+    /* Establish vSID->pSID mapping */
+    entry->vsid =3D i;
+    entry->psid =3D id;
+    entry->smmu =3D phys_smmu;
+    *vsid =3D entry->vsid;
+    list_add_tail(&entry->entry, &smmu->vsids);
+    spin_unlock(&smmu->vsids_lock);
+    return 0;
+}
+
 static const struct viommu_ops vsmmuv3_ops =3D {
     .domain_init =3D domain_vsmmuv3_init,
+    .allocate_vsid =3D vsmmuv3_allocate_vsid,
     .relinquish_resources =3D vsmmuv3_relinquish_resources,
 };
=20
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 253f8bb6cb..c94ee4f08e 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -312,7 +312,10 @@ static inline int iommu_add_dt_pci_sideband_ids(struct=
 pci_dev *pdev)
 #endif /* HAS_DEVICE_TREE_DISCOVERY */
=20
 struct page_info;
+#ifdef CONFIG_ARM
 struct iommu_guest_config;
+struct arm_smmu_device;
+#endif
=20
 /*
  * Any non-zero value returned from callbacks of this type will cause the
@@ -391,7 +394,8 @@ struct iommu_ops {
=20
 #ifdef CONFIG_ARM
     int (*attach_guest_config)(struct domain *d, uint32_t sid,
-                               const struct iommu_guest_config *cfg);
+                               const struct iommu_guest_config *cfg,
+                               const struct arm_smmu_device *smmu);
 #endif
 };
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:31:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:31:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470412.1679239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILd-0006BE-S4; Tue, 03 Nov 2026 17:31:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470412.1679239; Tue, 03 Nov 2026 17:31:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILd-00067S-9f; Tue, 03 Nov 2026 17:31:01 +0000
Received: by outflank-mailman (input) for mailman id 1470412;
 Tue, 03 Nov 2026 17:30:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILa-0005Ru-6R
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:30:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILZ-004KAj-IW
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:57 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a4a-2eae-0a2a0a5409dd-0a2a45059e90-24
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:57 +0100
Received: from [52.101.84.105]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a51-4cb1-0a2a45050019-346554693e91-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:57 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by PA1PR03MB11410.eurprd03.prod.outlook.com (2603:10a6:102:565::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:55 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=xRrY4Wg2UKnU01vc9uC0tfIqwTJoIn7Sxu9JWxnH4PE6vQccdwJtTC/zFCxuFrzNY4WjBbwAoh8YD5fH3St/RdsqlVOOZGCS0YsKkN/2UFhTSdRnuLsDBoLYE2w7/qqU5i0RaHZRKOXLnoc+y+5llCH1EbwyQV9P6CaLXiM4IKfRObniC+rIlcRXX8MBxgH0nXD60pJHXPdOuFd8itDxlmmAuaKNGJhbxF6YuhM0sjKZ4gWXZrIbKr0BrFpWat2RDZInnCKpZWmO4A87MCcoUhILMZKQLP100Ar9HCRNSVIAbmumjTglqkUgpR1njFXLYFnlGmxFXmPEdErDcpnPOA==
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=pSSW6Rh05HRwOVKFxSjU37HdLhmlspzyOfCyNjR9daw=;
 b=UGpYeJTmw7MGZmo7rn9r+psqp9/mjftE+KaxIOYJFqeKFdAA+D55aowTkg4tzRvupB5EE2YU6/eVmnI53/iw8mec7XgZbERRQ0BSyFaAW079sDeWH+4YjMvyJYHDTZud7A+vx5nK0YCn6cES4hcp1d+XUFPLlrjNoj73yKJg2eZSwkI6YuW4dwprkxlYCVMhRUPKwbZBF6QH2E4j99eW4FIFECprwCg7xEDlqELNetRaa0ANv5w6r5DsdIX3n2WPg2RgCVKVwalv7LjumPRhtbKPiEvwEEX6cdbayCjEVBra+OmV13gpfgl6pxsDw1kzXNp8Z+JtTLuIcit/KBKgSQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pSSW6Rh05HRwOVKFxSjU37HdLhmlspzyOfCyNjR9daw=;
 b=lwe0kIOgI3XOyUyhVe5LbuKah6m5rvisUh26SS8Cc3jDF9dgteTSWzpSy71xu+g1hW2aXLQQXoIQ2pR65a6fGrbabQiOY99ICsiVxx+FqJiO2xEdwOy1foMqREkETdzDV4hCQIpggiejl5Djdnx/agWSlmDdJmmzqN49LHttxzd9otX0AbqUnAeUXi8LPEHrtBlZSvHFufnVWHFaxeOFGDCpTWcv+DG9tu+TPXjzSsqv/S03wy82mdWdCtmDF9TthJpxhDLoj8zeyHJtNcaARyAhQqHajsDEhXbqflN4Zq0US4APp8zW2bjJx8AUasm184mTxjYgIWPkVfpAl9FVjA==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Milan Djokic <milan_djokic@epam.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Michal Orzel <michal.orzel@amd.com>, Jan Beulich
	<jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger@xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>
Subject: [PATCH v5 21/22] libxl/arm: Introduce domctl command for IOMMU vSID
 mapping
Thread-Topic: [PATCH v5 21/22] libxl/arm: Introduce domctl command for IOMMU
 vSID mapping
Thread-Index: AQHda7kUl64qHI1HEUqmUhPAf5r8zA==
Date: Tue, 3 Nov 2026 17:30:55 +0000
Message-ID:
 <ee5fcdb5f74ab0c367e3006310b556bc4f5250da.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|PA1PR03MB11410:EE_
x-ms-office365-filtering-correlation-id: ba07bec5-0d56-4bec-565a-08df39d03761
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|7416014|376014|366016|23010399003|1800799024|38070700021|261022075727099003|56012099006|11063799006|261009223027099003|261022105027099003|261102123227099003|261028144727099003|261021121427099003|261026121527099003|261026140227099003|261021123027099003|10067099003|18002099003|22082099003|6133799003;
x-microsoft-antispam-message-info:
 O7OH/v2j99Fy25fmEUrc94pITuoLEYyQZX8MjBYlDx4cKMg1jKjbdLv9P1U6PC17i8Cr6VpFh0L7glLyMA2TgvPHtD/Lbe/v1mdUiz5r+6WdnO10W2KYdS+xCuVrElF+G44nEGJ6iL3njwABvw17IyLPvnhj3y50yXKSlTeXn7lCbc22KtBCR848W4L6Zv/0E+DLlQ6DfuvItcgcbdNqcds8LakcCV1ZDb7RA394+wQHV2AFaoBxvDzyaXrAFPgQxzNbMn4R2lv936HWFVeF5PVUlYss/9yhXnwCuOdtTR1mK2TT8PH+SPtCu1HEIv9MYW1CM8S560roEAOBGoyjnP1+ZNO7c05xhvWdLkS8nRoFlUDNIBgL2lyU8NVQlu1jPlSvs07O6+Isl3FKGyX5PddooUEZjI+mW4LM06zy9A8xGz+Cxw9wCIG9zFBZ2QPteih25kTZDj3IObOGfCbMoEdVQuDbLpn+kpmoGE4TiN5XAZtuuLkwHFPLjw85cuVInt1E/k0ZcAyw5UO/Mx7lmXPX8petVQKFlukfpaGgz+9WM9UiFvw23QpreZYPAKYmG0G1UCkMCNekZ6Yyq4J2r179CfLRbwGdyLiIb5gfKYP3I4eLwj5WSvUf1BALU8w2Kcz/WR1tbIpnqTX6yV16+O8UWyjw1RauGJ/9qQF4sBhXBOYFQyoMRb3CEdW1wTREqhQkOplm9OpeSxISBTpeD/6RIbDXZy3Og42whdaU15k=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(23010399003)(1800799024)(38070700021)(261022075727099003)(56012099006)(11063799006)(261009223027099003)(261022105027099003)(261102123227099003)(261028144727099003)(261021121427099003)(261026121527099003)(261026140227099003)(261021123027099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?UuZrV0oXi+nmDckBTyfzvMc+XS9IQJF4+2Ze2WsO2lNzP6SeceYmf1bWKU?=
 =?iso-8859-1?Q?05sNN4hxmDwT36C1+0hn+VOWi8MLBsoQi2c/WFmxNvCa8EVcakXgn8zcN4?=
 =?iso-8859-1?Q?RJQx6WPCo/32qli7Ensb4UDja8NK80KsoOUbMsR0ZD7gOG/EDD/ABarA0O?=
 =?iso-8859-1?Q?tcCJz0vCAuzvv/SCoszbH3l4NlXwRe3D/TvCFJsPeubIDW5ADVteb1Vb3I?=
 =?iso-8859-1?Q?dBkbRmBLyPnHQ3MTIKqdU2O1zL0S4eLlkw1tABCptnnxjJ2fOWdnF7XRXg?=
 =?iso-8859-1?Q?PJgITo+MdypI72Uo7HPSU9PKjLMXqMkzU4skHP7NI/2CWLG57WoLEZHDC5?=
 =?iso-8859-1?Q?e3f7iDq495DWElz0PgmvdQOGbBSIHrwyVr5Y9JTXdXL8lB4K4+FSVGbEvR?=
 =?iso-8859-1?Q?iivbD3FUnFcpDela1WyW8YmMOXYg9Vm2Y5J/XEOraaBfL55WbxPHH1tcA9?=
 =?iso-8859-1?Q?RInWD9CgEDfoUbDLbkU0FfpY+HxJJ7epW+Lgi9+IUylPfdXYuw9VCG2DEI?=
 =?iso-8859-1?Q?t7HhiLamtOp0eiQkF8bE+pAdt+JqQBrd2XUyIk3fHvEwli4Edh7dHBAFY/?=
 =?iso-8859-1?Q?rGlVd6ll+D291lxcn4paSOEixFO2NIWY1G0UIwYtgLlvFMMT6bmAMVMw3i?=
 =?iso-8859-1?Q?i8DcDFEzw5QVn37CPPz2LohAnRQTz/m5bpDWZiDMPjQ46s4rWZuZqUfPUx?=
 =?iso-8859-1?Q?+yS1+EvSjBScHc4IxuWQIOJIpOTiI8ciegQPvrorbexscBSGPwsTMX7Ksw?=
 =?iso-8859-1?Q?w/Q1W2i1m8EyNXxgPj0dKbVT1UGmsbyz+e/divuq1VvxABQViLj9uwCF/o?=
 =?iso-8859-1?Q?CYr8Au8n6LAlqb88NecGCXGhLZ3SCctuyyEN7BvWpE6E9fH9kOjQdQwT2S?=
 =?iso-8859-1?Q?GNIQcYb/zVjvuEbFv9kE6V3CG6+MnqSkYwKqtcljLmzLZo3ARPKVpfdzwi?=
 =?iso-8859-1?Q?arUiOrBXzfs5tLl6mQirkxPV4/gPRfZgJx7Grc5pnyBzsVu+Lr84B0Y8fg?=
 =?iso-8859-1?Q?atm3GHpk7g0ryqtM7nuvaaI9E7zxyZ6xWY4jlH9snGq/1ZVFOD/OrUETpR?=
 =?iso-8859-1?Q?5qNKJ/ifWd885T4Og3daMFRZ4Fbyj15vThfb7Z4MI9LwmadsAlVqPBp3YE?=
 =?iso-8859-1?Q?RdIrXsNTQkJ90lIbBdxAg3mjAEGf/ruj9xezeXICQTD6sAT38wy/kH2z60?=
 =?iso-8859-1?Q?E+svfIdu/412YM9sU/qz9ZAHisUmnA0wkeGBAho16is5MioOx2HANSvlTX?=
 =?iso-8859-1?Q?phHCtNXUkhmTSUxo+J93YCcr8IgL2LCQS03/RzMkWAxRYIxlib5p5UcI9S?=
 =?iso-8859-1?Q?i9U+BB70pGMJKn7ut/OS0upZS0LAr8iphYEJeWvp9q9gAuWYaSCLthuwu5?=
 =?iso-8859-1?Q?eOpUMsUhEVGFITuX/+cAgDaxyGr5OSfuhQUq22q57uVDlMTnzsC08mBX6H?=
 =?iso-8859-1?Q?3M1jFKGrJR+PmLX6A4OOAsfnBzL29Rr/4OxjcZJUhOlzQYCFkpV7q0qPUu?=
 =?iso-8859-1?Q?IYdncfnT2xysyESm8z7Qlm3uFDCqQwxNufDt+8jYFX7iFD9Ho36fqPR83f?=
 =?iso-8859-1?Q?C0A7QKsHUe2eFJi6oVAQJyIUog4xZw7xc7G/GUDlv86nl6Hzv76UtuzlBV?=
 =?iso-8859-1?Q?HLuhdySev+Wbb0gHoq+OqJwbFsD6w6VSo+CruKwZ+cqSmyi05XIEMcIit/?=
 =?iso-8859-1?Q?8ZSn9b6CwBAO7PvoKofNyt9GSRBnkSwvs/vQNsf30hCuml3ExUH9ZmXSdS?=
 =?iso-8859-1?Q?3bGYuLnGXLmSpNk0B2DP0tN+QI7YwaKFp8Iu2y5AFvlkqyP9+7aM5txVzs?=
 =?iso-8859-1?Q?uJzMQU3bnQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ba07bec5-0d56-4bec-565a-08df39d03761
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:55.4792
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: /FGUJg8DUfWEU5vnoJ3g8cgMneryWlPowqyoJR8396N24SUODW6qbaHvC/9Um/90elGsK1kI37dYjOv+FungWw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB11410
X-purgate-ID: tlsNG-c201ff/1793727057-F68B62A1-C0433D42/0/0
X-purgate-type: clean
X-purgate-size: 13881

For guests created via the control domain (xl, Zephyr xenlib), a partial
device tree is parsed and loaded on the control domain side.

SIDs in the guest device tree have to be replaced with virtual SIDs that
are mapped to the corresponding physical SIDs. To do this, the control
domain requests Xen to allocate a new vSID and map it to the original
pSID for each IOMMU stream ID associated with a guest device.

Introduce a new domctl command (XEN_DOMCTL_viommu_allocate_vid) that
allows the control domain to request a new vSID mapping and replace the
original pSID with the allocated vSID in the guest device tree.

Implement vSID allocation in libxl using this interface for devices
configured behind an IOMMU.

Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 tools/include/xenctrl.h             |  13 ++++
 tools/libs/ctrl/xc_domain.c         |  25 +++++++
 tools/libs/light/libxl_arm.c        | 112 +++++++++++++++++++++++++---
 xen/arch/arm/domctl.c               |  38 ++++++++++
 xen/include/public/domctl.h         |  22 ++++++
 xen/xsm/flask/hooks.c               |   4 +
 xen/xsm/flask/policy/access_vectors |   2 +
 7 files changed, 207 insertions(+), 9 deletions(-)

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 6f4ea7ca62..7075e54a27 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2670,6 +2670,19 @@ int xc_domain_set_llc_colors(xc_interface *xch, uint=
32_t domid,
                              const uint32_t *llc_colors,
                              uint32_t num_llc_colors);
=20
+/*
+ * Allocate guest IOMMU vSID and establish its mapping to pSID.
+ * It can only be used on domain DT creation.
+ * Currently used for ARM only, possibly for RISC-V in the
+ * future. Function has no effect for x86.
+ */
+int xc_domain_viommu_allocate_vsid_range(xc_interface *xch,
+                                         uint32_t domid,
+                                         uint16_t nr_sids,
+                                         uint32_t first_psid,
+                                         uint32_t phandle,
+                                         uint32_t *first_vsid);
+
 #if defined(__arm__) || defined(__aarch64__)
 int xc_dt_overlay(xc_interface *xch, void *overlay_fdt,
                   uint32_t overlay_fdt_size, uint8_t overlay_op);
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
index 94cfab0fa1..0bd3e45fbd 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -2222,6 +2222,31 @@ out:
=20
     return ret;
 }
+
+int xc_domain_viommu_allocate_vsid_range(xc_interface *xch,
+                                         uint32_t domid,
+                                         uint16_t nr_sids,
+                                         uint32_t first_psid,
+                                         uint32_t phandle,
+                                         uint32_t *first_vsid)
+{
+    int err;
+    struct xen_domctl domctl =3D {};
+
+    domctl.cmd =3D XEN_DOMCTL_viommu_alloc_vsid_range;
+    domctl.domain =3D domid;
+    domctl.u.viommu_alloc_vsid_range.first_psid =3D first_psid;
+    domctl.u.viommu_alloc_vsid_range.phandle =3D phandle;
+    domctl.u.viommu_alloc_vsid_range.nr_sids =3D nr_sids;
+
+    if ( (err =3D do_domctl(xch, &domctl)) !=3D 0 )
+        return err;
+
+    *first_vsid =3D domctl.u.viommu_alloc_vsid_range.first_vsid;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 0dc3789d08..c1e41ed7fe 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -1342,11 +1342,101 @@ static int copy_partial_fdt(libxl__gc *gc, void *f=
dt, void *pfdt)
     return 0;
 }
=20
-static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
+/*
+ * Store virtualized 'iommus' properties for every node attached to IOMMU
+ * and passthroughed to guest.
+ * Used as a lookup table for mapping <phandle pSID> -> <vhandle vSID>
+ */
+struct viommu_stream {
+    XEN_LIST_ENTRY(struct viommu_stream) entry;
+    char path[128];          /* DT path, stable across resizes */
+    uint32_t domid;
+    fdt32_t *iommus;         /* fully virtualized iommus property */
+};
+
+static XEN_LIST_HEAD(, struct viommu_stream) viommu_stream_list;
+
+/*
+ * Helper function which creates mapping of dt node to
+ * to virtualized 'iommus' property
+ * Mappings stored in a global 'viommu_stream_list' to
+ * make it reusable for every fdt resize
+ */
+static int viommu_get_stream(libxl__gc *gc,
+                             uint32_t domid,
+                             const fdt32_t *prop,
+                             int proplen,
+                             const char* path, fdt32_t **iommus)
 {
-    int nodeoff, proplen, i, r;
+    int i, r;
+    uint32_t vsid, psid, phandle;
+    struct viommu_stream *viommu_stream;
+
+    /* Lookup if stream for target device is already allocated */
+    XEN_LIST_FOREACH(viommu_stream, &viommu_stream_list, entry)
+    {
+        if (!strcmp(viommu_stream->path, path) &&
+            viommu_stream->domid =3D=3D domid) {
+            *iommus =3D viommu_stream->iommus;
+            return 0;
+        }
+    }
+
+    /* Allocate new viommu stream */
+    viommu_stream =3D malloc(sizeof(struct viommu_stream));
+    if (!viommu_stream)
+        return ERROR_NOMEM;
+    memset(viommu_stream, 0, sizeof(struct viommu_stream));
+    viommu_stream->iommus =3D malloc(proplen);
+    if (!viommu_stream->iommus) {
+        free(viommu_stream);
+        return ERROR_NOMEM;
+    }
+    memset(viommu_stream->iommus, 0, proplen);
+
+    LOG(DEBUG, "Creating vIOMMU stream for device %s",
+        path);
+
+    /*
+     * Virtualize device "iommus" property
+     * (replace pIOMMU with vIOMMU phandle and pSIDs with mapped vSIDs)
+     */
+    for (i =3D 0; i < proplen / 8; ++i) {
+        /* Allocate new vSID mapped to pSID and physical IOMMU */
+        phandle =3D fdt32_to_cpu(prop[i * 2]);
+        psid =3D fdt32_to_cpu(prop[i * 2 + 1]);
+        r =3D xc_domain_viommu_allocate_vsid_range(CTX->xch, domid, 1, psi=
d,
+                                                 phandle, &vsid);
+        if (r) {
+            LOG(ERROR, "Can't allocate new vSID/vRID for guest IOMMU devic=
e");
+            free(viommu_stream->iommus);
+            free(viommu_stream);
+            return r;
+        }
+        viommu_stream->iommus[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV=
3);
+        viommu_stream->iommus[i * 2 + 1] =3D cpu_to_fdt32(vsid);
+        LOG(DEBUG, "Mapped vSID: %u to pSID: %u", vsid, psid);
+    }
+
+    strcpy(viommu_stream->path, path);
+    viommu_stream->domid =3D domid;
+    *iommus =3D viommu_stream->iommus;
+
+    XEN_LIST_INSERT_HEAD(&viommu_stream_list, viommu_stream, entry);
+
+    return 0;
+}
+
+/*
+ * Used to update partial fdt when vIOMMU is enabled
+ * Maps dt properties of IOMMU devices to virtual IOMMU
+ */
+static int viommu_modify_partial_fdt(libxl__gc *gc, void *pfdt, uint32_t d=
omid)
+{
+    int nodeoff, proplen, r;
     const fdt32_t *prop;
     fdt32_t *prop_c;
+    char path[128];
=20
     nodeoff =3D fdt_path_offset(pfdt, "/passthrough");
     if (nodeoff < 0)
@@ -1360,11 +1450,16 @@ static int modify_partial_fdt(libxl__gc *gc, void *=
pfdt)
         if (!prop)
             continue;
=20
-        prop_c =3D libxl__zalloc(gc, proplen);
+        r =3D fdt_get_path(pfdt, nodeoff, path, sizeof(path));
+        if ( r < 0 ) {
+            LOG(ERROR, "Can't get passthrough node path");
+            return r;
+        }
=20
-        for (i =3D 0; i < proplen / 8; ++i) {
-            prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3);
-            prop_c[i * 2 + 1] =3D prop[i * 2 + 1];
+        r =3D viommu_get_stream(gc, domid, prop, proplen, path, &prop_c);
+        if (r) {
+            LOG(ERROR, "Can't get viommu stream");
+            return r;
         }
=20
         r =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen);
@@ -1376,7 +1471,6 @@ static int modify_partial_fdt(libxl__gc *gc, void *pf=
dt)
=20
     return 0;
 }
-
 #else
=20
 static int check_partial_fdt(libxl__gc *gc, void *fdt, size_t size)
@@ -1395,7 +1489,7 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt,=
 void *pfdt)
     return -FDT_ERR_INTERNAL;
 }
=20
-static int modify_partial_fdt(libxl__gc *gc, void *pfdt)
+static int viommu_modify_partial_fdt(libxl__gc *gc, void *pfdt, uint32_t d=
omid)
 {
     LOG(ERROR, "partial device tree not supported");
=20
@@ -1527,7 +1621,7 @@ next_resize:
         if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3) {
             FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) );
             if (pfdt)
-                FDT( modify_partial_fdt(gc, pfdt) );
+                FDT( viommu_modify_partial_fdt(gc, pfdt, dom->guest_domid)=
 );
         }
=20
         for (i =3D 0; i < d_config->num_disks; i++) {
diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
index b76af56fad..40f1582891 100644
--- a/xen/arch/arm/domctl.c
+++ b/xen/arch/arm/domctl.c
@@ -16,6 +16,7 @@
 #include <xen/types.h>
 #include <xsm/xsm.h>
 #include <public/domctl.h>
+#include <asm/viommu.h>
=20
 void arch_get_domain_info(const struct domain *d,
                           struct xen_domctl_getdomaininfo *info)
@@ -186,6 +187,43 @@ long arch_do_domctl(struct xen_domctl *domctl, struct =
domain *d,
     }
     case XEN_DOMCTL_dt_overlay:
         return dt_overlay_domctl(d, &domctl->u.dt_overlay);
+
+#ifdef CONFIG_ARM_VIRTUAL_IOMMU
+    case XEN_DOMCTL_viommu_alloc_vsid_range:
+    {
+        int rc =3D 0;
+        uint16_t i;
+        uint32_t vsid;
+        struct xen_domctl_viommu_alloc_vsid_range *vsid_range =3D
+            &domctl->u.viommu_alloc_vsid_range;
+
+        if ( vsid_range->pad || vsid_range->nr_sids =3D=3D 0 )
+            return -EINVAL;
+
+        for ( i =3D 0; i < vsid_range->nr_sids; i++ )
+        {
+            rc =3D viommu_allocate_vsid(d, vsid_range->first_psid
+                                          + i,
+                                          vsid_range->phandle,
+                                          &vsid);
+            if( rc )
+                return rc;
+        }
+
+        if ( !rc )
+        {
+            /* Calculate first vSID from allocated range */
+            vsid_range->first_vsid =3D vsid -
+                vsid_range->nr_sids + 1;
+            rc =3D copy_to_guest(u_domctl, domctl, 1);
+            if ( rc )
+                rc =3D -EFAULT;
+        }
+
+        return rc;
+    }
+#endif
+
     default:
         return subarch_do_domctl(domctl, d, u_domctl);
     }
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 4ca8a2d7ca..739a0cd68a 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1279,6 +1279,26 @@ struct xen_domctl_get_domain_state {
     uint64_t unique_id;      /* Unique domain identifier. */
 };
=20
+/*
+ * XEN_DOMCTL_viommu_alloc_vsid_range
+ *
+ * Allocate guest vSID range and
+ * establish pSID->vSID mapping for target range and physical IOMMU (phand=
le).
+ * Allocated range is continous
+ */
+struct xen_domctl_viommu_alloc_vsid_range {
+    /* IN: Range first pSID  */
+    uint32_t first_psid;
+    /* IN: Physical IOMMU phandle behind which the target device streams a=
re configured */
+    uint32_t phandle;
+    /* IN: Number of vSIDs to allocate */
+    uint16_t nr_sids;
+    /* padding, must be 0 */
+    uint16_t pad;
+    /* OUT: Mapped range first vSID */
+    uint32_t first_vsid;
+};
+
 struct xen_domctl {
 /* Stable domctl ops: interface_version is required to be 0.  */
     uint32_t cmd;
@@ -1371,6 +1391,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_gsi_permission                88
 #define XEN_DOMCTL_set_llc_colors                89
 #define XEN_DOMCTL_get_domain_state              90 /* stable interface */
+#define XEN_DOMCTL_viommu_alloc_vsid_range       91
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1439,6 +1460,7 @@ struct xen_domctl {
 #endif
         struct xen_domctl_set_llc_colors    set_llc_colors;
         struct xen_domctl_get_domain_state  get_domain_state;
+        struct xen_domctl_viommu_alloc_vsid_range viommu_alloc_vsid_range;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index d65ba0aeae..6321b4308b 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -881,6 +881,10 @@ static int cf_check flask_domctl(struct domain *d, str=
uct xen_domctl *op)
     case XEN_DOMCTL_set_llc_colors:
         return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__SET_LLC_COLO=
RS);
=20
+    case XEN_DOMCTL_viommu_alloc_vsid_range:
+        return current_has_perm(d, SECCLASS_DOMAIN2,
+            DOMAIN2__VIOMMU_ALLOC_VSID_RANGE);
+
     default:
         return avc_unknown_permission("domctl", op->cmd);
     }
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/acc=
ess_vectors
index bbb9c117ec..35acbefab2 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -253,6 +253,8 @@ class domain2
     set_llc_colors
 # XEN_DOMCTL_get_domain_state
     get_domain_state
+# XEN_DOMCTL_viommu_alloc_vsid_range
+    viommu_alloc_vsid_range
 }
=20
 # Similar to class domain, but primarily contains domctls related to HVM d=
omains
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:31:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:31:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470420.1679246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILf-0006YI-CP; Tue, 03 Nov 2026 17:31:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470420.1679246; Tue, 03 Nov 2026 17:31:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOILf-0006Vs-2o; Tue, 03 Nov 2026 17:31:03 +0000
Received: by outflank-mailman (input) for mailman id 1470420;
 Tue, 03 Nov 2026 17:31:00 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <milan_djokic@epam.com>) id 1xOILc-0005rU-39
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:31:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOILb-003aA2-EA
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:30:59 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a52-bab6-0a2a0a5309dd-0a2a4503a210-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:59 +0100
Received: from [52.101.65.96]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <milan_djokic@epam.com>)
 id 6aea1a52-fae8-0a2a45030019-346541609021-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:30:59 +0100
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com (2603:10a6:20b:595::7)
 by PA1PR03MB11410.eurprd03.prod.outlook.com (2603:10a6:102:565::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026
 17:30:57 +0000
Received: from AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5]) by AS2PR03MB9587.eurprd03.prod.outlook.com
 ([fe80::daa7:3b97:acb3:67d5%5]) with mapi id 15.21.0592.007; Tue, 3 Nov 2026
 17:30:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=eYklx4exUy6HYB8T1h5xABpPFt+iCwMGvNOe9+kwmWLEEEO8dDn1nWTR50KOmtizhvqsNcABXk7zeLhOAvq5X15UvKtaRj0DcnKRsujmolHf9TBAbLeFzlEnEqlBzrgh3DiAcypjF1d1C/xX8vl2OByauJQeutU4M/9bS8aP61ctfdWGs6RaBh2uoKpkiyLVBUhbA52/QYQ9ZXirhEb2td9oSqiej7aig/1tmx4uarwwNa4VbSF393CrIC64+8EjFlASWmH+P05413n5PfEiM8/T/zAuYiVg3XsBcv2y88NsIDj2Oh3AAVOmCMElv4JfTK5l55YtnrWccSwSVq6wRw==
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=BkEIodyuaVoGtFNd/VYbrgM84e/K/CdcVn4A7A7YZsc=;
 b=fsWryVoC/RgNT/YsCnPs7hE/HTTzEfZHAliYYgEpqS0U8RrAArzxFH5vgvYFZAVFl7P95m10+t9dwZ5LuQPMlDb427bJaZ0AiN89kUfmNNcQTej9l+tkGCSNdZkEIvEhiUMaUhsyHYBTHE58KcJrqMY43mRDeghlBUUbJ7i4pUVT96VlDD/lY7rg2RDN5S2wMHwoTowrPJBap5KAlpn6AUF7UJjXfD84aek7n+t7yrvo5x29reF2dc5iUu0/gzOda6WI8JdN5tVQZg1LU/v+0xCvSC4cgXcp5DIl9orbuf+kVv5LLOVugQPf3j7DrhEpkYluoNsh0LeG5/RGNu8Qvg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=BkEIodyuaVoGtFNd/VYbrgM84e/K/CdcVn4A7A7YZsc=;
 b=nJoqYilKRubyMXQxu8ic7WkiwpYqobnPoLTBtuJF+s1SThQef9+Wg/wFNPWdcWtdA4vQQ18ybSnMB9778EDojyCFJtGSLR5a6VDz4auBNWudZxNyYBNa5EPiUPzYqJr+5HMLRca9xoUAvpnOlESj/GpFyJRsS3/mvrvOYAorMsyCRyHoUVSJ9AXmJ+0uAD2xC4mUb1V6/P7V9YXJT1Y0w5Be19Ipr8pkoPA5zg6MP5iA5vOpuPpyEy0jl6G2ndVCBZoK9fEE0j7XqVbz+CI4RHC9lR6y6oKybCROGZYUNg8Lk3llQruvGr8Q+rEQ+Z6aCHM3Ott26v0UaGdLp1DUiQ==
From: Milan Djokic <milan_djokic@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Milan Djokic <milan_djokic@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v5 22/22] doc/arm: vIOMMU design document
Thread-Topic: [PATCH v5 22/22] doc/arm: vIOMMU design document
Thread-Index: AQHda7kVOQpBk50vJke3sL111cGeKw==
Date: Tue, 3 Nov 2026 17:30:57 +0000
Message-ID:
 <bbbd4955658ef9598b0940136149dd2ac9377d7a.1793726692.git.milan_djokic@epam.com>
References: <cover.1793726692.git.milan_djokic@epam.com>
In-Reply-To: <cover.1793726692.git.milan_djokic@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9587:EE_|PA1PR03MB11410:EE_
x-ms-office365-filtering-correlation-id: 1f43a9a5-e576-462b-9aee-08df39d03856
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|366016|23010399003|1800799024|38070700021|260925021311599003|260925022911599003|260925021911599003|261022075727099003|56012099006|11063799006|261009223027099003|261022105027099003|261022113327099003|261102123227099003|261102124527099003|261028144727099003|261021121427099003|261026121527099003|261026140227099003|261021123027099003|10067099003|32116099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 zh+XvcbqJz3Q+8uYiMPgWAuaN4dksHroodoNmoXnWRSoMthB3wWnjpA4P5/5pDx8vOb5+VLDhSwN/GM5bP66tyijmRGQnfTH05bT6+8m1wa0c4k4HkGOnbvpLvZfh100nTlg5D458b8dhCh1jlLhe7nbZ5KWg96J92ttGynitSgg+JQTGyRTPBjGWfwVaUl2FIKJaQGughXti077lHNDuwt6tJgQWp4+OBKYCJ1d5LawJenHjXJzYjxMVW/BYaiPoyZgtFsGiDVQU/6Hu7YwJFaHbOQ2yL9cEYMhvfARS2WJn7NVpCiL18S2WTXwyaPIopFGEwngM+UNkV6ykyOCI3nRtZ3OH8hm0vqgotveTVZmm2TbNL8ftASnwzvMzIq7aYBKkgBOFdq36rjTMuEqAXdzf68Js1lDEIlf9LHE9uObLK9HgNBUgT6CxhlNfScIAYJxZIlhW6GUon+gfj6MKI1+XWeu0lR4E4yrBqHXMPoN4XUp5Zh4m2dDMyzdR/b1C4WVgGye03mHre6hhgV/qc+aTOr8lZQ6TPfQSHj7dSFdyr/bRV+QpzBGQrP4aTU4ejytC9a5sMfnSBSEV7e/9ne/L5sWKlqeBVzHTSZJHkSW86tn4C++4NvjQDokDe+IU9BwyBoBP34G+DvPt8fOxg8vL4ltWur+KOB3JESOFeo=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9587.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(23010399003)(1800799024)(38070700021)(260925021311599003)(260925022911599003)(260925021911599003)(261022075727099003)(56012099006)(11063799006)(261009223027099003)(261022105027099003)(261022113327099003)(261102123227099003)(261102124527099003)(261028144727099003)(261021121427099003)(261026121527099003)(261026140227099003)(261021123027099003)(10067099003)(32116099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?tmmsENSuuKYpsDW09gaQvGqAOHDxO5OmfzA+bzd7wXGNqT6Mjqb2CiXc7M?=
 =?iso-8859-1?Q?qQXtGmRQXfvJwiTxwKvn8np8TsjiN9kqI77J6YowDb2VaMWVW1Rg32evi6?=
 =?iso-8859-1?Q?Z1xXj52oM2dRmHVt2aNJ4PSqbbZW16FLm6Xcdo/mXnAD9hkqwFigFOriwQ?=
 =?iso-8859-1?Q?OdyeCQnMyZCD7ZECGUMc7V8YZRwFUJbCzB+FBAqZuuUXwbxjUJHgLtVNR+?=
 =?iso-8859-1?Q?/B+28FboO6HprcxkN3Jc44QcLvOH321l3m+r3BVNBrBTn26+7o2dFvrCYq?=
 =?iso-8859-1?Q?oDMYKTZ4Xbco24sWFUZtWDh7Pt8zEVyzqVIlnUqfN25TscAMgMzv90de69?=
 =?iso-8859-1?Q?hlIswSbULNRW8Dj6uxqEx+dOol9Lw9ijMFZVqczZd/3vOqLPDik9BroiLW?=
 =?iso-8859-1?Q?2SxIhsFbO429davlXyCcVQiJIBy1iWk9J1gTak+BdWH/SFj/mPxWJ/GZ/I?=
 =?iso-8859-1?Q?Z9DH6YVd6r14riKneEqCZRFcB0WJpiPI3t+nc+iZscj+0eqJNo+ck+i/e/?=
 =?iso-8859-1?Q?u2FupcJZCLibmjTbCy+ww75SwFicyubvQSO6q+CXYOScDapv5JfbzTy380?=
 =?iso-8859-1?Q?r7wAbug1hNFb9ZF4h8KTuxPqIuU4ZQPafT6I1iU/F9jMgKY/CH4upY2jWf?=
 =?iso-8859-1?Q?CpXfZ79CtPvOukdI1k6BLfbxLFl9wg2WOrAapATnwvJdOc1NwYkWaXNwU3?=
 =?iso-8859-1?Q?jDK/+raZ7n+fl4H7t56KOZMRIZy4u5kUPFsskMHSyjfbq006qHjTdjOOzG?=
 =?iso-8859-1?Q?LRlNBNx9z4I5SlSEbKAcMmc/FclKVl1HAOfRcCO0bXBvKQdtPraBztsJSM?=
 =?iso-8859-1?Q?ntS8b53y5t9PcSWBQMe7RKy/hoOjO9OtP4as/9x6l+78QH252WGVet409w?=
 =?iso-8859-1?Q?fXdzcyO5deAcD8+TwjbageGBrGYymR1ZU2sgw0dZXRPAQTfAniyn5rcZmm?=
 =?iso-8859-1?Q?AN9d6o/6VT9diNfO+L1QHAPfLg0DgxFC6OQgPfTOXthY3uNykHc3RSAsWC?=
 =?iso-8859-1?Q?3ueDO6QyK8arwWW2cHepDbJmQt8yCr4vbffRk5PusKwNVm+/pe5It01MDv?=
 =?iso-8859-1?Q?aA/Ko/7TUbZan8gNg/+mDSRUSeZMJO0HZT+Kxb2aLigJ7l/LxFyjhbIF28?=
 =?iso-8859-1?Q?MFOZ2TS/YmV+8rFNNxmkBzRUqTMlRtHqoSxBu7rQbZaEmQMmXThjR4satn?=
 =?iso-8859-1?Q?C/w4Nf6MJ7odBdunW5zvs/Q7vxhWq3BJBlZTsLJMxg//faboO1teBchVAZ?=
 =?iso-8859-1?Q?aXbju2TnEZALaINxd5unVBIdcA9xiASq4VUprM35MFB3gEp02CW10Qtza7?=
 =?iso-8859-1?Q?ewffhDZcShvDnF1ewSDN6xTZk5/KRF1cyW+NxmnfJXLMIoxf5dXmC981iv?=
 =?iso-8859-1?Q?FtiGuEOcn0tokDYYsVY0TYZF7AAD6RhpTZ/FLahVD6JDUnE4HWzwaAqq4q?=
 =?iso-8859-1?Q?CC1UH3zuIvCU9p6eh3JL5xhThPm+E2+evIW/ivAH3cPch4XSIBQ5uH/sJI?=
 =?iso-8859-1?Q?xhXbzS6bn0nx+Qn0hHzixN0IHK8o0zdHbO8pzLvJx35CZOBb6fDBoBGqb5?=
 =?iso-8859-1?Q?I2IOhh9kFTjjxh8pVsQBkHiV7XCZvN2BzmAByLG7XhZTp6tZpuCnSsPviQ?=
 =?iso-8859-1?Q?hS+zCJYnQ/hGE/gBsQk13FdjHgemkDRsmrQS9zWAQpFfZC6NJ0orqEdxWp?=
 =?iso-8859-1?Q?uIh6xDLtyVnfNUdUZSNOl4774iE5H6wq29pPMmCChsZvHGj7YpurENT8Lb?=
 =?iso-8859-1?Q?rkDhTnPSv5qfh4spBGwoDGhdEWo4vB8NqcDv13J6MMpKIQAYZTRaHretFj?=
 =?iso-8859-1?Q?6lgAGvcUUg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9587.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f43a9a5-e576-462b-9aee-08df39d03856
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 17:30:57.0568
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: z0el7pwB8yaWjcfieuKCa0nKYvabKSDDcjW+waUqt0w3CnzPGAQ6fNWL7V4gPvph4pgtx7xDtiW5TTB3+roqEw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR03MB11410
X-purgate-ID: tlsNG-33051d/1793727059-76AF94E9-85FBB6E9/0/0
X-purgate-type: clean
X-purgate-size: 22502

This document outlines the design of the emulated IOMMU,
including supported features, security considerations
and future improvements.

Signed-off-by: Milan Djokic <milan_djokic@epam.com>
---
 docs/designs/arm-viommu.rst | 530 ++++++++++++++++++++++++++++++++++++
 1 file changed, 530 insertions(+)
 create mode 100644 docs/designs/arm-viommu.rst

diff --git a/docs/designs/arm-viommu.rst b/docs/designs/arm-viommu.rst
new file mode 100644
index 0000000000..de7bbf6998
--- /dev/null
+++ b/docs/designs/arm-viommu.rst
@@ -0,0 +1,530 @@
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D
+Design Proposal: Add SMMUv3 Stage-1 Support for XEN Guests
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+:Author:     Milan Djokic <milan_djokic@epam.com>
+:Date:       2026-02-13
+:Status:     Draft
+
+Introduction
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+The SMMUv3 supports two stages of translation. Each stage of translation=20
+can be
+independently enabled. An incoming address is logically translated from=20
+VA to
+IPA in stage 1, then the IPA is input to stage 2 which translates the IPA =
to
+the output PA. Stage 1 translation support is required to provide=20
+isolation between different
+devices within OS. XEN already supports Stage 2 translation but there is n=
o
+support for Stage 1 translation.
+This design proposal outlines the introduction of Stage-1 SMMUv3 support=20
+in Xen for ARM guests.
+
+Motivation
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+ARM systems utilizing SMMUv3 require stage-1 address translation to=20
+ensure secure DMA and
+guest managed I/O memory mappings.
+With stage-1 enabled, guest manages IOVA to IPA mappings through its own=20
+IOMMU driver.
+
+This feature enables:
+
+- Stage-1 translation for the guest domain
+- Device passthrough with per-device I/O address space
+
+Design Overview
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+These changes provide emulated SMMUv3 support:
+
+- **SMMUv3 Stage-1 Translation**: stage-1 and nested translation support
+  in SMMUv3 driver.
+- **vIOMMU Abstraction**: Virtual IOMMU framework for guest stage-1
+  handling.
+- **Register/Command Emulation**: SMMUv3 register emulation and command
+  queue handling.
+- **Device Tree Extensions**: Adds `iommus` and virtual SMMUv3 nodes to
+  device trees for dom0 and dom0less scenarios.
+- **Build Configuration**: Introduces a Kconfig arguments
+  (CONFIG_ARM_VIRTUAL_IOMMU, CONFIG_VIRTUAL_ARM_SMMU_V3) for build-time
+  enablement.
+
+Depending on the domain type, the emulated IOMMU model is the following:
+
+- For the hardware domain, the host layout is re-used. The number of expos=
ed
+  IOMMUs to hardware domain is equal to number of physical IOMMUs
+  present (1-1 mapping).
+- For non-hardware domain, a single vIOMMU device is exposed to the guest =
and
+  mapped to one or more physical IOMMUs through a Xen-managed translation =
layer
+
+The vIOMMU feature provides a generic framework together with a backend
+implementation specific to the target IOMMU type. The backend is responsib=
le
+for implementing the hardware-specific data structures and command handlin=
g
+logic (currently only SMMUv3 is supported).
+
+This modular design allows the stage-1 support to be reused
+for other IOMMU architectures in the future.
+
+With stage-1 support, Xen supports three SMMUv3 translation models:
+
+1. Stage-2-only: Used when the SMMU hardware does not support stage-1
+   translation or when nested translation is disabled.
+2. Stage-1-only: Used when the SMMU hardware supports stage-1 but not stag=
e-2
+   translation. This is a special mode restricted to trusted, direct-mappe=
d
+   guests.
+3. Nested: The default mode when the SMMU hardware supports both stage-1 a=
nd
+   stage-2 translation and nesting is enabled.
+
+vIOMMU architecture
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Responsibilities:
+
+Guest:
+ - Configures stage-1 via vIOMMU commands.
+ - Handles stage-1 faults received from Xen.
+
+Xen:
+ - Emulates the IOMMU interface (registers, commands, events).
+ - Provides vSID->pSID mappings.
+ - Programs stage-1/stage-2 configuration in the physical IOMMU.
+ - Propagate stage-1 faults to guest.
+
+The stage-1 context is shared between streams assigned to the same device.
+This follows the Linux SMMUv3 driver model, where the IOMMU domain is asso=
ciated
+with the master/device, while the individual SIDs are represented by separ=
ate
+STEs pointing to the same translation context. This is considered sufficie=
nt for
+the current SMMUv3 driver model, although the SMMUv3 architecture does not
+forbid having separate translation contexts for different SIDs.
+
+vIOMMU commands and faults are transmitted between guest and Xen via
+command and event queues (one command/event queue created per guest).
+
+vIOMMU command Flow:
+
+::
+
+    Guest:
+        smmu_cmd(vSID, IOVA -> IPA)
+
+    Xen:
+        trap MMIO read/write
+        translate vSID->pSID
+        store stage-1 state
+        program pIOMMU for (pSID, IPA -> PA)
+
+All hardware programming of the physical IOMMU is performed exclusively by=
 Xen.
+
+vIOMMU Stage-1 fault handling flow:
+
+::
+
+    Xen:
+        receives stage-1 fault
+        triggers vIOMMU callback
+        injects virtual fault
+
+    Guest:
+        receives and handles fault
+
+Register access
+---------------
+
+Guest accesses to SMMUV3 registers are trapped via MMIO regions. vIOMMU em=
ulates
+a subset of SMMUv3 registers relevant to currently supported features.
+Unsupported registers are handled as RAZ (Read-As-Zero) and WI (Write-Igno=
red)
+for the register read and write operations, respectively.
+
+vSMMUv3 is a partially emulated resource for the guest domain. Some
+feature register bits (SMMU_IDR) are reflecting what the underlying HW act=
ually
+support while the rest is preset in the emulation layer to limit guest fro=
m
+using features which are not supported by the emulation. Also, implementer
+identification register is fully emulated, providing generic ARM implement=
er
+ID values, to avoid activating errata/quirk paths in the guest SMMUv3 driv=
er.
+
+Supported SMMUv3 Commands
+-------------------------
+
+The vIOMMU implementation currently supports a subset of the SMMUv3
+architectural command set required for stage-1 translation management.
+
+Commands are submitted by the guest through the virtual Command Queue
+(CMDQ) and consumed by Xen, which translates them into operations on the
+physical SMMUv3 hardware.
+
+Some commands are fully handled by the emulation layer, while others are
+currently treated as architectural no-ops because the required behavior
+is either implicitly guaranteed by Xen or not yet modeled explicitly.
+
+Emulation handled commands:
+
+- CMD_CFGI_STE
+- CMD_TLBI_NH_ASID
+- CMD_TLBI_NSNH_ALL
+- CMD_TLBI_NH_VA
+
+No-op/Implicitly handled commands:
+
+- CMD_SYNC
+- CMD_PREFETCH_CFG
+- CMD_CFGI_CD
+- CMD_CFGI_CD_ALL
+- CMD_CFGI_ALL
+
+Command Handling Model
+----------------------
+
+The guest submits commands through the virtual CMDQ interface.
+
+Xen:
+
+- Validates commands
+- Translates virtual identifiers (vSID->pSID) where required
+- Programs the physical SMMU
+- Performs synchronization
+
+The physical SMMU executes the resulting invalidation or configuration
+operations.
+
+Unsupported Commands
+--------------------
+
+Commands associated with currently unsupported architectural features
+are not implemented.
+
+This includes commands related to:
+
+- PRI
+- ATS
+- Address/Range TLB invalidation (currently, all TLBI commands perform com=
plete
+  domain TLB invalidation)
+- Advanced stall/retry semantics
+- CD runtime update/sync
+
+vSID Mapping Layer
+------------------
+
+Each non-hardware domain-visible Stream ID (vSID) is mapped by Xen to a ph=
ysical
+Stream ID (pSID). The mapping is maintained per-domain. The allocation pol=
icy
+guarantees vSID uniqueness within a domain while allowing reuse of pSIDs f=
or
+different pIOMMUs.
+
+* Platform devices receive individually allocated vSIDs.
+* PCI devices receive a contiguous vSID range derived from RID space.
+
+
+Supported Device Model
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Currently, the vIOMMU framework supports only devices described via the
+Device Tree (DT) model. This includes platform devices and basic PCI
+devices support instantiated through the vPCI DT node. ACPI-described
+devices are not supported.
+
+Guest assigned platform devices are mapped via `iommus` property:
+
+::
+
+    <&pIOMMU pSID> -> <&vIOMMU vSID>
+
+PCI devices use RID-based mapping via the root complex `iommu-map`:
+
+::
+
+    <RID-base &viommu vSID-base length>
+
+PCI Topology Assumptions and Constraints:
+
+- RID space must be contiguous
+- Pre-defined continuous pSID space (0-0x1000)
+- No runtime PCI reconfiguration
+- Single root complex assumed
+- Mapping is fixed at guest DT construction
+
+Constraints for PCI devices will be addressed as part of the future work o=
n
+this feature.
+
+Security Considerations
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Stage-1 translation provides isolation between guest devices by
+enforcing a per-device I/O address space, preventing unauthorized DMA.
+With the introduction of emulated IOMMU, additional protection
+mechanisms are required to minimize security risks.
+
+1. Observation:
+---------------
+Support for Stage-1 translation in SMMUv3 introduces new data structures=20
+(`s1_cfg` alongside `s2_cfg`)
+and logic to write both Stage-1 and Stage-2 entries in the Stream Table=20
+Entry (STE), including an `abort`
+field to handle partial configuration states.
+
+**Risk:**
+Without proper handling, a partially applied configuration
+might leave guest DMA mappings in an inconsistent state, potentially
+enabling unauthorized access or causing cross-domain interference.
+
+**Mitigation:** *(Handled by design)*
+This feature introduces logic that writes both `s1_cfg` and `s2_cfg` to
+STE and manages the `abort` field - only considering
+configuration if fully attached. This ensures  incomplete or invalid
+device configurations are safely ignored by the hypervisor.
+
+2. Observation:
+---------------
+Guests can now invalidate Stage-1 caches; invalidation needs forwarding
+to SMMUv3 hardware to maintain coherence.
+
+**Risk:**
+Failing to propagate cache invalidation could allow stale mappings,
+enabling access to old mappings and possibly
+data leakage or misrouting between devices assigned to the same guest.
+
+**Mitigation:**
+The guest must issue appropriate invalidation commands whenever
+its stage-1 I/O mappings are modified to ensure that translation caches
+remain coherent.
+
+3. Observation:
+---------------
+Introducing optional per-guest enabled features (`viommu` argument in xl=20
+guest config) means some guests
+may opt-out.
+
+**Risk:**
+Guests without vIOMMU enabled (stage-2 only) could potentially dominate
+access to the physical command and event queues, since they bypass the
+emulation layer and processing is faster comparing to vIOMMU-enabled guest=
s.
+
+**Mitigation:**
+Audit the impact of emulation overhead effect on IOMMU processing fairness
+in a multi-guest environment.
+Consider enabling/disabling stage-1 on a system level, instead of per-doma=
in.
+
+4. Observation:
+---------------
+Guests have the ability to issue Stage-1 IOMMU commands like cache=20
+invalidation, stream table entries
+configuration, etc. An adversarial guest may issue a high volume of=20
+commands in rapid succession.
+
+**Risk:**
+Excessive commands requests can cause high hypervisor CPU consumption=20
+and disrupt scheduling,
+leading to degraded system responsiveness and potential=20
+denial-of-service scenarios.
+
+**Mitigation:**
+
+- Implement vIOMMU commands execution restart and continuation support:
+
+  - Introduce processing budget with only a limited amount of commands
+    handled per invocation.
+  - If additional commands remain pending after the budget is exhausted,
+    defer further processing and resume it asynchronously, e.g. via a
+    per-domain tasklet.
+
+- Batch multiple commands of same type to reduce emulation overhead:
+
+  - Inspect the command queue and group commands that can be processed
+    together (e.g. multiple successive invalidation requests or STE
+    updates for the same SID).
+  - Execute the entire batch in one go, reducing repeated accesses to
+    guest memory and emulation overhead per command.
+  - This reduces CPU time spent in the vIOMMU command processing loop.
+    The optimization is applicable only when consecutive commands of the
+    same type operate on the same SID/context.
+
+5. Observation:
+---------------
+Some guest commands issued towards vIOMMU are propagated to pIOMMU=20
+command queue (e.g. TLB invalidate).
+
+**Risk:**
+Excessive commands requests from abusive guest can cause flooding of=20
+physical IOMMU command queue,
+leading to degraded pIOMMU responsiveness on commands issued from other=20
+guests.
+
+**Mitigation:**
+
+- Batch commands that are propagated to the pIOMMU command queue and
+  implement batch execution pause/continuation.
+  Rely on the same mechanisms as in the previous observation
+  (command continuation and batching of pIOMMU-related commands of the sam=
e
+  type and context).
+- If possible, implement domain penalization by adding a per-domain budget
+  for vIOMMU/pIOMMU usage:
+
+  - Apply per-domain dynamic budgeting of allowed IOMMU commands to
+    execute per invocation, reducing the budget for guests with
+    excessive command requests over a longer period of time
+  - Combine with command continuation mechanism
+
+6. Observation:
+---------------
+The vIOMMU feature includes an event queue used to forward IOMMU events
+to the guest (e.g. translation faults, invalid Stream IDs, permission erro=
rs).
+A malicious guest may misconfigure its IOMMU state or intentionally trigge=
r
+faults at a high rate.
+
+**Risk:**
+Occurrence of IOMMU events with high frequency can cause Xen to flood the
+event queue and disrupt scheduling with
+high hypervisor CPU load for events handling.
+
+**Mitigation:**
+
+- Implement fail-safe state by disabling events forwarding when faults=20
+  are occurred with high frequency and
+  not processed by guest:
+
+  - Introduce a per-domain pending event counter.
+  - Stop forwarding events to the guest once the number of unprocessed
+    events reaches a predefined threshold.
+
+- Consider disabling the emulated event queue for untrusted guests.
+- Note that this risk is more general and may also apply to stage-2-only
+  guests. This section addresses mitigations in the emulated IOMMU layer
+  only. Mitigation of physical event queue flooding should also be conside=
red
+  in the target pIOMMU driver.
+
+7. Observation:
+---------------
+vIOMMU `CFGI_STE` commands can trigger serialized STE programming on the p=
IOMMU
+while `xen_domain->lock`, `devices_lock` and `cmd_queue_lock` are held, wi=
th
+local interrupts disabled. STE programming may issue multiple polling CMD_=
SYNC
+operations, each with a one-second timeout.
+
+**Risk:**
+An abusive guest can issue CFGI_STE commands that cause multiple CMD_SYNC
+operations to reach their polling timeout. This can keep a pCPU with inter=
rupts
+disabled for a significant period of time, delaying interrupt handling and
+potentially degrading the responsiveness of Xen and other domains running =
on
+the same pCPU.
+
+**Mitigation:**
+
+- Implement pinning or otherwise maintaining the lifetime of the required
+  objects before releasing the relevant locks, allowing the
+  serialized STE programming to be performed without holding locks and wit=
h
+  local interrupts enabled.
+- Consider redesigning the SMMUv3 command processing and locking model in
+  future improvements to avoid performing potentially long-running pIOMMU
+  operations while holding locks and with local interrupts disabled.
+
+8. Observation:
+---------------
+The vIOMMU feature supports stage-1-only translation for SMMU hardware
+that does not support stage-2 translation.
+
+**Risk:**
+When stage-1-only mode is enabled for an untrusted guest, there is no
+stage-2 translation to restrict device DMA accesses to the memory assigned
+to that guest. Consequently, a malicious guest could configure stage-1
+mappings to access arbitrary physical memory, potentially compromising
+isolation and accessing memory or configuration belonging to other domains=
.
+
+**Mitigation:**
+
+- Xen allows stage-1-only mode exclusively for direct-mapped domains.
+- The integrator must ensure that only trusted guests are configured as
+  direct-mapped domains with IOMMU access enabled.
+
+Performance Impact
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+With iommu stage-1 and nested translation inclusion, performance=20
+overhead is introduced comparing to existing,
+stage-2 only usage in Xen. Once mappings are established, translations=20
+should not introduce significant overhead.
+Emulated paths may introduce moderate overhead, primarily affecting=20
+device initialization and event/command handling.
+Testing is performed on Renesas R-Car platform.
+Performance is mostly impacted by emulated vIOMMU operations, results=20
+shown in the following table.
+
++-------------------------------+---------------------------------+
+| vIOMMU Operation              | Execution time in guest         |
++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
+| Reg read                      | median: 645ns, worst-case: 2us  |
++-------------------------------+---------------------------------+
+| Reg write                     | median: 630ns, worst-case: 1us  |
++-------------------------------+---------------------------------+
+| Invalidate TLB                | median: 2us, worst-case: 10us   |
++-------------------------------+---------------------------------+
+| Invalidate STE                | median: 5us worst_case: 100us   |
++-------------------------------+---------------------------------+
+
+With vIOMMU exposed to guest, guest OS has to initialize IOMMU device
+and configure stage-1 mappings for the devices
+attached to it.
+Following table shows initialization stages which impact stage-1 enabled=20
+guest boot time and compares it with
+stage-1 disabled guest.
+
+NOTE: Device probe execution time varies depending on device complexity.
+A USB host controller was selected as the test device in this case.
+
++---------------------+-----------------------+------------------------+
+| Stage               | Stage-1 Enabled Guest | Stage-1 Disabled Guest |
++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
+| IOMMU Init          | ~10ms                 | /                      |
++---------------------+-----------------------+------------------------+
+| Dev Attach / Mapping| ~100ms                | ~90ms                  |
++---------------------+-----------------------+------------------------+
+
+For devices configured with dynamic DMA mappings, DMA allocate/map/unmap=20
+operations performance is
+also impacted on stage-1 enabled guests.
+Dynamic DMA mapping operation trigger emulated IOMMU functions like mmio=20
+write/read and TLB invalidations.
+
++---------------+---------------------------+--------------------------+
+| DMA Op        | Stage-1 Enabled Guest     | Stage-1 Disabled Guest   |
++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+
+| dma_alloc     | median: 20us, worst: 5ms  | median: 8us, worst: 60us |
++---------------+---------------------------+--------------------------+
+| dma_free      | median: 500us, worst: 10ms| median: 6us, worst: 30us |
++---------------+---------------------------+--------------------------+
+| dma_map       | median: 12us, worst: 60us | median: 3us, worst: 20us |
++---------------+---------------------------+--------------------------+
+| dma_unmap     | median: 400us, worst: 5ms | median: 5us, worst: 20us |
++---------------+---------------------------+--------------------------+
+
+Testing
+=3D=3D=3D=3D=3D=3D=3D
+
+- QEMU-based ARM system tests for Stage-1 translation.
+- Actual hardware validation to ensure compatibility with real SMMUv3=20
+  implementations.
+- Unit/Functional tests validating correct translations (not implemented).
+
+Migration and Compatibility
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
+
+This optional feature defaults to disabled (CONFIG_ARM_VIRTUAL_IOMMU=3Dn,
+CONFIG_VIRTUAL_ARM_SMMU_V3=3Dn).
+
+Future improvements
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+- Implement the proposed mitigations to address security risks that are=20
+  not covered by the current design
+  (events batching, commands execution continuation)
+- PCI support
+- Support for other IOMMU HW (Renesas, RISC-V, etc.)
+
+References
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+- Original feature implemented by Rahul Singh:
+
+https://patchwork.kernel.org/project/xen-devel/cover/cover.1669888522.git.=
rahul.singh@arm.com/=20
+
+- SMMUv3 architecture documentation
+- Existing vIOMMU code patterns (KVM, QEMU)
\ No newline at end of file
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 17:31:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 17:31:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470506.1679264 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIMM-0001U1-Bi; Tue, 03 Nov 2026 17:31:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470506.1679264; Tue, 03 Nov 2026 17:31:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIMM-0001Tu-8W; Tue, 03 Nov 2026 17:31:46 +0000
Received: by outflank-mailman (input) for mailman id 1470506;
 Tue, 03 Nov 2026 17:31:45 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOIMK-0001SV-QR
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 17:31:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIMK-003aOy-1X
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:31:44 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aea1a7e-bab6-0a2a0a5309dd-0a2a450ca908-6
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:31:44 +0100
Received: from [209.85.219.53] (helo=mail-qv1-f53.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aea1a7e-f479-0a2a450c0019-d155db35d4bf-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:31:43 +0100
Received: by mail-qv1-f53.google.com with SMTP id
 6a1803df08f44-91c7a0c1617so71371146d6.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 09:31:43 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.246])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91ca7f254a1sm120862756d6.7.2026.11.03.09.31.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 09:31:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793727102; x=1794331902; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=eegksxV28ioEtuerGVBp7CC0Yc83uWN1TXj01mx1N9o=;
        b=CJBPWsAwTaAQs0Faam86OpRMGlXwbd1K1jAahg4JwfN35BOHcLNb9QCHcgwDahubp4
         coYB3npzDAz9eKUqnjiTVfNyagCbd6JI8DvaxrOONFb83MlJY1bk44rt4bppKsJ41Cc6
         n11+Mh1oRv97/7ZDmrBLVtm5MpMUWj7kWrAOXsqxUnFLuMOZh0lqkShh7KQYlQuDEP/Z
         nCI97o8VU6qsXUrkuRlTd0gaUG+FbfKKjdA47quKamIBIk0d9ESSoMU1iD2v9vfc4uEI
         +eaAnU2qAdBUNf10VIeuXi8of3l0TV9wVrkKMnVsoGlMX4ZC5Xe880bJJ+3/SIFgUG37
         i5aQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793727102; x=1794331902;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=eegksxV28ioEtuerGVBp7CC0Yc83uWN1TXj01mx1N9o=;
        b=re9fY5oCTzmikBk8Vu2h+eekLRGUV8So59qmBmRTYcORQrCQ/KueRnDfzbvrYvhryJ
         WZkcASZdvPCi9x1UJcKs87JVOW0RWo9f34bImkMuZF6BEsqK4kTvV6DKI/UkWddaEXBf
         SpuvhVVtmWxJpUdCWbX/xOD/ua9gDgewGz/RzvRYlwf7UZInc7KJiJb73e7jSlxP/tf/
         Ka9SAC0aZa3eXVU1xMeJAOUZ+LJJLCYb/QoXI42uijDaAPGX0hgVFfnRAiUsBwxA/J2u
         TvjysSPet/ME2lKOY8SaPJiLQR/91HxeRWcN0q0uUbhnNjk1of/FzgkkxA6GwAT9tawe
         OYpA==
X-Forwarded-Encrypted: i=1; AKwUvBxOohV/uC+HVJ5+pu09BzFQn+LbBjRjVll+enccRAIyXFCe6gy/wfFzIenadMWdQeQyTJPBDfO9YSs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9Sg+QDQzhseKTK1gIEMjITs9Z7+z2ahTLzh4/AV6kMxNonPVrM
	5aWcMOpefLjkp0MwGcdv/ZhbmcGgeA7oye31JA12O2NxRbveJCQGSUJUc6qxj7K4vF0=
X-Gm-Gg: AYBFou24vEfxcSpctQcjMRcEs14ucxzmmCcO2Gm4OnwMRZPyTpm3F1wVRSirPTUirIj
	f1zdFjcRLV+jl8ACwaMq/Z9WU1PU2tXlyjWapZWLQNznmwqSLA+2NpxUFCWv/qeJzTN5z+VPiKp
	+zYLL26eZpqDzPpDDMM1U55fpJMPfEB3kTsZdnNi5RlNA31bpUCZfsnVrwKcwLvpGksAziDyrRc
	++6WKTs7YjaAGJQluLbq9TIjBPToDKPPEfPyuhcj3Odx4/tim0SELX62+dv4MHYfcHhy4vF4YVP
	1EJAQS2Wq1yDK7R7c7VUTGOnRD2wX2zvKPuaPs9BKoKVa9EcrRXhaeYD27YoBmvU7dDy63spvGU
	i3GgUsqy5jdpjYFShsTsmeqYxPm1eU7HPxHzRJZbYsCMtZYIiCNJFljPUZnFJBp1t7P30MOgHIL
	x6ewFhCMacXYGMMaiX2eNvxQ9ok9yDnrb4/QB03pEL/+I0ekyBSQ0sGNnl2bQ44FYYTjRyQBRJ7
	lQ2bDbUvYUz7LRR7wZ3fzgJyLy3OQDFI3JV9ApeLRhNFY8Egh7lYNOAuCnZmkbO3x7vX8/VWdLC
	DPQO58STXJdRVpvikSUhCOz+W9w1aPHV/zp7mSTYE4ilpsSyvz8HJWUqxeT3N+6dlGs=
X-Received: by 2002:a05:6214:f09:b0:912:517b:40f6 with SMTP id 6a1803df08f44-91ca4b4d439mr219929456d6.40.1793727102334;
        Tue, 03 Nov 2026 09:31:42 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
To: Mina Almasry <almasrymina@google.com>
Cc: "David S. Miller" <davem@davemloft.net>,
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>,
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
 Andrew Lunn <andrew+netdev@lunn.ch>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
 Fernando Fernandez Mancera <fmancera@suse.de>,
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH net-next v3 02/15] net: skbuff: add skb_checksum_full() that reports failure
Date: Tue, 03 Nov 2026 17:28:00 -0000
Message-ID: <179372688053858.2.9209483466693222021@toxicpanda.com>
In-Reply-To: <CAHS8izMK8nrYny_jc-aTbjwP8tsDkY0a1ed7F=GfwzfXWm8o=A@mail.gmail.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-2-54ad0ab57614@toxicpanda.com>
 <CAHS8izMK8nrYny_jc-aTbjwP8tsDkY0a1ed7F=GfwzfXWm8o=A@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1793727103-50B3DA5B-D3E3B7D5/0/0
X-purgate-type: clean
X-purgate-size: 1958

On Mon, Nov 02, 2026 at 06:44:46PM -0800, Mina Almasry wrote:
> Hmm, but do we really want this intermediate state where skb_checksum
> and skb_checksum_full exist? Why not fix it in one go rather than
> little by little?

I don't want to keep it, the wrappers go away once the last caller is
converted.  I just can't get there in one go.

After this series skb_checksum() still has 44 call sites in 28 files:
11 in netfilter and ipvs, 13 in ipv4 and ipv6, 13 in six drivers, 2 each
in mptcp, bpf and pktgen, and 1 in xfrm.  Changing the prototype means
converting all of them in the same patch, and that one patch would go
through netfilter, ipsec, mptcp, bpf and the drivers at once.

It isn't a mechanical change either.  Each caller has to do something
with the error, and 17 of the 44 are in functions that return void, for
example udp4_hwcsum(), ip_cmsg_recv_checksum(),
mptcp_update_data_checksum() and nft_payload_set_eval().  Those need
their own callers looked at first.

skb_crc32c() looks smaller with three callers left, but one of them is
sctp_compute_cksum(), which has 11 callers of its own in sctp,
netfilter, openvswitch and act_csum.  The other two are siw and
batman-adv.

So this series converts the core users, because patch 3 closes a hole
where a packet that couldn't be checksummed passes validation and I
didn't want that to wait for the rest.  After that it's one small series
per subsystem, and the last one removes the wrapper.

This is my plan for everything, in response to your cover letter. I've
got a 15 patch limit and a one series per net/net-next. I'm trying to
make this as easy as possible so that they can be spot checked and
merged quickly. I started with core and I'm slowly working my way out.
I'm purposely avoiding "change all the callers" style patches because
that's harder to review. This is slower but easier for everybody, at
least I think it's easier.

Thanks,
Josef


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 18:09:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 18:09:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470527.1679273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIwN-0002TB-V3; Tue, 03 Nov 2026 18:08:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470527.1679273; Tue, 03 Nov 2026 18:08:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOIwN-0002T4-SN; Tue, 03 Nov 2026 18:08:59 +0000
Received: by outflank-mailman (input) for mailman id 1470527;
 Tue, 03 Nov 2026 18:08:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOIwM-0002SR-4X
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:08:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOIwK-00BgSl-35
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 19:08:56 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6aea2329-e002-0a2a0a5209dd-0a2a4507e2a2-48
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 19:08:56 +0100
Received: from [209.85.208.43] (helo=mail-ed1-f43.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6aea2337-b4ea-0a2a45070019-d155d02bb526-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 19:08:56 +0100
Received: by mail-ed1-f43.google.com with SMTP id
 4fb4d7f45d1cf-6b1afcd2d23so6537362a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:08:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793729335; cv=none;
        d=google.com; s=arc-20260327;
        b=NMrhnoUSZXtN+sYyzxLhDNfxIbSuA2i4W4OR2GqBtHZ6o9zexgE6QUy1hzpqDat3E6
         pTGwXT6n51ZP6T16m5UZWciyYqm4Vs0v6bgue2LwPh6nrZdeu7l2wZPnGYt1Xh9G90WF
         q8pJQIZmh1S3yUHuUPKTaZSQ7WPuFS0EdB/iHOJAfqx90i0pBEmO11NGXV12Z316w2iX
         WW5ia5nUrKI0PfcuDLpK+/WhmiSYDX3WGFOqDY1ov2qGRsSnplLcnvQYNkETelheb8v0
         OKzc7FwVP3WaKnGnZCKDE8IFMvoBD/+3dkPvJN39DlhGEHkj+NeW2K8M6iu7RBiMVCes
         1FxQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=BJey1qLpGncca5aTW0VYBYvYOxSWgotKBUYp0cXl14Y=;
        fh=/Bi8Cb5pjqlldEGH2AgGDw3cdpg6TEBLwzPwqKWehvA=;
        b=eLtBML1ADHHsUC5ZRBgfvo7XL4y0TlH6n8aO+JCbIHCI6yqNYg7Xm90vPB0NAk9mBm
         9KLOwQQyNWxmEvK3yLYJAoQhQ2xKofIEqBv/emULshV8y98lFCFPJ3LM3hWGRMAqTXmG
         u3ryBHpGOxWs9qHruvJ9WDsf9TcPpKa5b8mdDHSd1Ntub5u5QQ4e0uPx3XdeU7Mnwspd
         BBtiAxA0lK4Rmhr/q1j+I5cA/5Q13MZFnbvXvOsUPK1QKTgX8IZAV4lNvUnSq64DH2MQ
         d5+Z6iAvmSHFoxZT+BcYSyVHT4YAto3cAjTfFT9A1kiafN9M5cZz7k3ueMQCnoSsR+ag
         FcfQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793729335; x=1794334135; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=BJey1qLpGncca5aTW0VYBYvYOxSWgotKBUYp0cXl14Y=;
        b=ntxIbNAjBOL2Io6sc0yjvqZ9rnx+uVUvi/VkKRPQXw+kiO/Jx1lw3Hbh+nrih+IGlW
         Gd84RZb53y9CIm6TEUHcwGpcpCUGf25HvZVWW8GrZQJWRMdPHBG/wzqeHAde4iz5BSXR
         qMY9SIqUkZpY/AI/Ur3ppSLQgxGIJE87/nVqV/KzM1vnhleQsGGA2NwUmFDl6aezjvr7
         2Ddi7EKjN/K3ZeafAmEclobkJtulNVhIRVW0T1KgGRN1VahHa87lQcpih52sKYphEk18
         ULxY/8HoBfXMM6eU93Q0G7yBOFt/j64jl10w2cI7pbVnElxr8ZzcfruGlW1n+xnhbW4N
         trdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793729335; x=1794334135;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=BJey1qLpGncca5aTW0VYBYvYOxSWgotKBUYp0cXl14Y=;
        b=vtpBBB5US0rdG5y1EJPsXFyF9uWmTZxKo0P+meZ9z7y0qnFvnXIryr5MhdWfovzv/Z
         lVymliCBNOa+M/Kz2rKEm9GBQm3uivm5OWKmp2Z8Bk+h+1HA/DwfMGqOJ7EA3BMcTAJA
         P/TyF59iqvK41o4/X0MRrXzpt3JYW4lpickRhsVyLee+a5pOt7XOOuQ99K2NY3yeVYTa
         aHArULZELB0OpO9UQaEpwv93wYveAz9iFet3PPLqNzl70PKYBrS+OGDWP1HUKvNZjiS7
         ymPJtCjXl/YMbqMVvoI0eCMnIiu/3qWcds4STl31JLND5g6dpJpv4yLOn1isEQZ07ZQW
         2Q1Q==
X-Forwarded-Encrypted: i=1; AKwUvByeTk5vCn3wT6LLsoVSTv89XKPyMMgpg5uKsA8DCP16VVIUvYVKvdFR+ZvXzSgusGUs2WC67sbYs+Q=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+XoSAkU9CuLn1mDD4i4lEQlxbL4SCaQnmyWD9AIHgC30A2o/5L
	XNX/CoaHEQw1pjVpZ6KmHqm5UUYXpZE7vHUU1Jko2vkgHk+uuESCxQCSLO22w3ZuRcWcSH2nkZN
	uO7ax/B1kR7MH0jmok1h1X8eokhyqLuw=
X-Gm-Gg: AYBFou37JQKcyDro/M3Y8cHn34KtAiZf+xmKPwUzEqsu1mql4od7l9QrfGH/M/uNjAl
	JrQgP3pQC0akbVz11JVhb+ET3446rBYq3kbIamK6EjNMF+NqhLDVpZzej0l1ylR6Bf3/sbsY/N6
	HW1kH+2+2s3qxi4Td0TWPFgB3LtXuJIFqD6A7xndNIKvR8JbVTYlxwUsMUzrQHz8INMpUWrsL6Y
	+XzoNRqAXzwvid25i6bSx1MzRgP+tTKkMhpE2jBC3Q1jlFdKm38/0FCGQYW8lGkT40FevSi3HUL
	jYrht0QWMXnuu+X7Ms07JqUO+pDUgHuyhi5jAWLbNXfpJ2VeLRx4pOO0Pl9txUAeCEScGJHHvMm
	Eotk6cxSsvLDUeF3uE+yFV3WkET9nw0XSEgC7PQ==
X-Received: by 2002:a05:6402:5009:b0:6b4:d731:4bf3 with SMTP id
 4fb4d7f45d1cf-6b4d7315217mr10362792a12.41.1793729335335; Tue, 03 Nov 2026
 10:08:55 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu> <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
 <aunnuwhsx9ZOOXBX@redhat.com>
In-Reply-To: <aunnuwhsx9ZOOXBX@redhat.com>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Wed, 4 Nov 2026 02:08:41 +0800
X-Gm-Features: AclHuK8P6bHHgBWP0bpAQALyo5aHjtSP7ofvKj-lRIfhjZfCfQMKs0HHJgLdFgo
Message-ID: <CAE2XoE9Kj+C3JLvWMzuGLbBsaFY4KQMhxnwLNwAAhzRmZAFj9w@mail.gmail.com>
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>, 
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, qemu-devel@nongnu.org, 
	Anthony PERARD <anthony@xenproject.org>, Felipe Balbi <balbi@kernel.org>, 
	Aleksandar Rikalo <arikalo@gmail.com>, Philippe Mathieu-Daude <philmd@mailo.com>, 
	Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org, 
	Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>, 
	Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-ef75cf/1793729336-37CD7AE4-4ABA6D12/0/0
X-purgate-type: clean
X-purgate-size: 5759

On Tue, Nov 3, 2026 at 9:55=E2=80=AFPM Daniel P. Berrang=C3=A9 <berrange@re=
dhat.com> wrote:
>
> On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
> > On Tue, Nov 3, 2026 at 9:23=E2=80=AFPM BALATON Zoltan <balaton@eik.bme.=
hu> wrote:
> > >
> > > On Tue, 3 Nov 2026, Yonggang Luo wrote:
> > > > On Tue, Nov 3, 2026 at 4:16=E2=80=AFPM Daniel P. Berrang=C3=A9 <ber=
range@redhat.com> wrote:
> > > >>
> > > >> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
> > > >>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
> > > >>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
> > > >>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo an=
d the
> > > >>>>> type_init
> > > >>>>> function that calls type_register_static(). A later change need=
s to
> > > >>>>> pass a
> > > >>>>
> > > >>>> That's the point of the macro to hide the boiler plate code.
> > > >>>>
> > > >>>>> target mask into that registration, and the macros have no para=
meter
> > > >>>>> for it.
> > > >>>>
> > > >>>> Couldn't you just change the macros to take that parameter inste=
ad of
> > > >>>> expanding it everywhere?
> > > >>>>
> > > >>>
> > > >>> Problem of macros is that they don't have default parameters, so =
you
> > > >>> need variants for everything:
> > > >>>
> > > >>> DEFINE_MACHINE
> > > >>> DEFINE_MACHINE_EXTENDED
> > > >>> DEFINE_MACHINE_WITH_INTERFACES
> > > >>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
> > > >>> and now would need a new variant, with variant for other existing=
 ones.
> > > >>>
> > > >>> In the end, it's just simpler to remove this and add the boilerpl=
ate.
> > > >>> It's written once and never modified, so using a macro just save =
typing
> > > >>> those lines once.
> > > >>
> > > >> For each machine, it is only written once, but we add machines
> > > >> over time, and every time a new machine is added the code style
> > > >> is slightly different. We introduced all the variuos DEFINE_*
> > > >> macros for QOM to better ensure consistent style and usage as
> > > >> new code is added over time.
> > > >
> > > > I understand that the DEFINE_* macros are bloating because of this.
> > > > Indeed currently the only two macros used are "DEFINE_MACHINE" and
> > > > "DEFINE_MACHINE_EXTENDED"
> > >
> > > There are a few machines using some others but these are the most use=
d.
> > > That suggests maybe we should change the convenience wrappers to matc=
h
> > > what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one=
 that
> > > allows all parameters which should be rarely needed.
> > >
> > > > ; each time people want to add a new attribute, the macros is twice=
d.
> > >
> > > Not necessarily. The SECURE parameter did that to preserve previous
> > > behaviour but if you add new parameter changing all callers (which is=
 the
> > > same as expanding the macro that would also change all callers) then =
it's
> > > just a new parameter added not changing the number of DEFINE_MACHINE*
> > > wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED us=
ed
> > > less is an independent change.
> > >
> > > > And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replace=
d
> > > > with DEFINE_TYPES or TypeInfo
> > > > and be more explicit. When we used as macro parameter, we need thin=
k
> > >
> > > But that defies the purpose of hiding the QOM boiler plate as much as
> > > possible. New people are confused by QOM and it's easier for them to =
look
> > > up documentation on the DEFINE_MACHINE* macros to see what parameter =
is
> > > what and not care about how it's stored in QOM TypeInfo or what is th=
at
> > > at all.
> > >
> > > > what's that parameter means, and for
> > > > TypeInfo, we can directly know what that member is about(because we
> > > > are assigned with the member name).
> > >
> > > The parameter also has a name and documentation so it's not simpler t=
o
> > > look up TypeInfo than look at the macro definition or docs. In fact i=
t's
> > > harder to guess from TypeInfo as then you also need to get into QOM.
> > >
> > > > That's why I suggest keeping a single DEFINE_MACHINE, just like
> > > > DEFINE_TYPES; as they are the most
> > > > used macros(and simple enough), and won't suffer from changes much.
> > >
> > > That means exposing all the boiler plate for all machines other than =
the
> > > simplest case. I think it would be better to keep DEFINE_MACHINE_EXTE=
NDED
> > > but maybe rethink the existing wrappers and drop unused ones and mayb=
e add
> > > new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still k=
eep
> > > the boiler plate hidden.
> >
> > Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE=
_EXTENDED
> > and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
> > "targets" or "arch_mask" parameter.
>
> Given that we don't need to do general per-arch type filtering in
> QOM, we could just move 'is_available' out of TypeInfo, and into the

Hi Daniel,
The "is_available" is used for dealing with the QOM name conflict,
that is before the calling
to MachineClass call or any other class_init.

> MachineClass, so it is a regular class level property, which can be
> set in the class_init methods, and thus avoid any changes to the
> DEFINE_MACHINE macros.
>
> With regards,
> Daniel
> --
> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
> |: https://libvirt.org          ~~          https://entangle-photo.org :|
> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|
>


--=20
         =E6=AD=A4=E8=87=B4
=E7=A4=BC
=E7=BD=97=E5=8B=87=E5=88=9A
Yours
    sincerely,
Yonggang Luo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 18:59:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 18:59:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470543.1679282 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOJjZ-0004hi-HJ; Tue, 03 Nov 2026 18:59:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470543.1679282; Tue, 03 Nov 2026 18:59:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOJjZ-0004hb-E0; Tue, 03 Nov 2026 18:59:49 +0000
Received: by outflank-mailman (input) for mailman id 1470543;
 Tue, 03 Nov 2026 18:59:49 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <richard.henderson@linaro.org>) id 1xOJjZ-0004hN-2X
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 18:59:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOJjY-00ED2G-8R
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 19:59:48 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <richard.henderson@linaro.org>)
 id 6aea2f13-8faa-0a2a0a5109dd-0a2a4506df1c-14
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 19:59:48 +0100
Received: from [209.85.215.172] (helo=mail-pg1-f172.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <richard.henderson@linaro.org>)
 id 6aea2f22-195a-0a2a45060019-d155d7acacf4-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 19:59:47 +0100
Received: by mail-pg1-f172.google.com with SMTP id
 41be03b00d2f7-cd6a7b62ce8so1603480a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 10:59:47 -0800 (PST)
Received: from [192.168.0.4] (174-21-68-150.tukw.qwest.net. [174.21.68.150])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3b09445f7b3sm264830a91.5.2026.11.03.10.59.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 10:59:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Content-Language:From:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1793732386; x=1794337186; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=rjfyQfy5EO6T7cqM1mm/lGkAgE18E4V1yV903QuKr2M=;
        b=uuPG6QVDzfbKtbD8/NJpDtmW82CpRPsI0p3ZbpvnHJ7029NVdHP+7rM0sFCEV26pIZ
         j2D8dR8bHOouTH8CRmNDizXr4xTjxDhH6TtixriEi6AnzBemGrv7zkKc+G0sttj//Sev
         UW48wWHvWSdMH7D7JQ/o5AqRc8xGYiWe7er+CPWtsorvAuDCgx+gLOVY1EwbdoFHn4oD
         Acu1VN1Okiry1rn6MG4ty5DivB8PiwHkJGEunOUzZEg3nV8kz+wlsGPognuYFdBI75DR
         zYSYMJrk1I0kWGkOcwZv0CM6+3+/TjQeYvARpSlO5NBilM8EBcXlaXMf5ijJcdnibbhj
         k64w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793732386; x=1794337186;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=rjfyQfy5EO6T7cqM1mm/lGkAgE18E4V1yV903QuKr2M=;
        b=xBXIVitbKZ0fkVnWizNCxCkvbV7wDeKdab35klcZO1YaXlF1sEQLoYN1JkO0jL9kYp
         EjbcT0Pdd49gIoG7IsMMC7kUF7ULteKOXqC0frfw7s5/uvoEsAEoUY4gGx1wa4QciE7y
         95b9wy8K1lIkjVziDUpUPPjW1nPPkSjroHEhEwR3OSWZ+86EpWC8qylP0k9BsJwcDCpR
         skGdy8emBzi9kTXPfekxJNOirmrPyU07Ft7BiC3xVn8pZNIuSsZXio7Zh2Ptbv0L9oPq
         4LZzQWQuAVLXi1EpaJtzz6cQ4Arrs72iZ5lQmVZ9/iCGudHOSNHmSAX3b1IaViDnwIJM
         csbA==
X-Forwarded-Encrypted: i=1; AKwUvByXpN/ssrQsoIQvX0hcmsZHpMU7fMKHL3+PlNohZGpBzNdBzulwV688A/C2hBG/X4D5P3u5l2Vaif0=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+1QVBMxXS1E3PnDPvl3mltxhc+yV0D/P7HlChavaR+NG5gP95a
	Qjshcci4yFGOojCpj0OVXmByVvGbbynzU+7VatT22S4CUSg+V75pcPvOncj4evMKxn0=
X-Gm-Gg: AYBFou1uXG55UUMn61sWOKWDknqxpsyesjNkBWMYwSbtNNHsHphBEcJvgq52yi3jID9
	eH5WbipDrpH6MJeF1ebRsK5B2Pmtnu6mpEL4BqAXwYpKc/3rrde0f/i1/Y0/5j5PrRCpPzhvYCX
	LiJd9E+Kz2lDaCQgcIOW2RhpjmxIq144dVrqQuY0fe08Et15vMVV5NTDJ7TYzTNuRwqWNbq5Pi6
	tgECqTTchzRBJ5Oxj0UTlv303l5ZOgkz6v+2qHYbfwqNCDP7xgutAR4k8ceqa3XS0SjxugC+m83
	WCN7tD/CrBEjpoymIqUMGKBVupqeOLO2XZV8TudmDdNIReUifQYWxPVCnjM1XUWJ3iFzS3YThWN
	WTEI9ejujjMmw/CBmkWXpQgw2CXVdIwzPLTzTkGX28ez6YGL8q/gBBLd6hVTP71/kCxu6PTdMKx
	YYJ+G96gEhpElv2J+zRo/Zkx3RdSy7CFh9z5c4lktZ0j4+MowwhC3v4xEckaR8ilOAHyZ1eMnyi
	k8DzqMxhTteWdDh6la0QQg8Kt396vU+d+h0KBSb85AT8wEPoi/EJzo0zq9YbRD8tNHH7+QkBEJ1
	sre4P7VnfKEo1l+4guFsVZft0RZdNzZBy2MCVGjLVaDrEVFajN4Lko5ufr/36phAPYK4jw==
X-Received: by 2002:a17:90b:4483:b0:3ac:9259:1234 with SMTP id 98e67ed59e1d1-3ae8979ba8emr11422066a91.39.1793732385957;
        Tue, 03 Nov 2026 10:59:45 -0800 (PST)
Message-ID: <102e313c-1193-44b1-9908-a03c01a85e8d@linaro.org>
Date: Tue, 3 Nov 2026 10:59:43 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PULL 00/25] Tracing patches
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, Markus Armbruster <armbru@redhat.com>,
 Eric Blake <eblake@redhat.com>,
 Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,
 Helge Deller <deller@gmx.de>, xen-devel@lists.xenproject.org,
 Anthony PERARD <anthony@xenproject.org>, Paolo Bonzini
 <pbonzini@redhat.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Gerd Hoffmann <kraxel@redhat.com>, Alexey Kardashevskiy <aik@ozlabs.ru>
References: <20261102185831.1880189-1-stefanha@redhat.com>
From: Richard Henderson <richard.henderson@linaro.org>
Content-Language: en-US
In-Reply-To: <20261102185831.1880189-1-stefanha@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793732388-FDE0E77B-02A7726F/0/0
X-purgate-type: clean
X-purgate-size: 1299

On 11/2/26 10:58, Stefan Hajnoczi wrote:
> The following changes since commit 56afd82bd4db9688f1c1c9d0e2ea163b8cde3283:
> 
>    Merge tag 'qemu-sparc-20261101' ofhttps://github.com/mcayland/qemu into staging (2026-11-01 08:37:48 -0800)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request
> 
> for you to fetch changes up to 3b68720390b98f21e26ffcff8874851b7b49b7b7:
> 
>    trace: remove 'trace_event_get_state' wrapper (2026-11-02 13:52:14 -0500)
> 
> ----------------------------------------------------------------
> Pull request
> 
> Daniel Berrangé's 'disable' property removal and associated cleanups.

Function signature change in here somewhere that didn't get propagated 
to rust?

https://gitlab.com/qemu-project/qemu/-/jobs/17710633655#L4275

> error[E0308]: mismatched types
>    --> /builds/qemu-project/qemu/build/trace/trace-hw_char.rs:236:14
>     |
> 236 |       unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
>     |  ______________^
> 237 | |              trace_event_state_is_enabled(_TRACE_PARALLEL_IOPORT_READ_DSTATE) } ||
>     | |_____________________________________________________________________________^ expected `()`, found `bool`
>     |

etc.


r~


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 19:37:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 19:37:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470579.1679292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOKKB-0003iF-7l; Tue, 03 Nov 2026 19:37:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470579.1679292; Tue, 03 Nov 2026 19:37:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOKKB-0003i8-3W; Tue, 03 Nov 2026 19:37:39 +0000
Received: by outflank-mailman (input) for mailman id 1470579;
 Tue, 03 Nov 2026 19:37:37 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <robin.murphy@arm.com>) id 1xOKK9-0003hr-Bc
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 19:37:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOKK8-009fiY-OH
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 20:37:36 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <robin.murphy@arm.com>)
 id 6aea37ec-2eae-0a2a0a5409dd-0a2a4504dbde-20
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 20:37:36 +0100
Received: from [217.140.110.172] (helo=foss.arm.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTP (eXpurgate 4.57.1)
 (envelope-from <robin.murphy@arm.com>)
 id 6aea37fe-b57f-0a2a45040019-d98c6eacb5aa-1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 20:37:35 +0100
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1E7E41595;
 Tue,  3 Nov 2026 11:37:31 -0800 (PST)
Received: from [10.57.17.5] (unknown [10.57.17.5])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BC6CA3F673;
 Tue,  3 Nov 2026 11:37:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=foss header.d=arm.com header.i="@arm.com" header.h="Date:Subject:To:Cc:References:From:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;
	t=1793734654; bh=Rm8y5tIfxnWYPvt+78NGMbrQ7Xjp1++7s/xeLIgNX20=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=NVXWVGuW8y/VQO6Nl3FjzkUDEY3dr4YIzLnyURdSWlMUBR9Malf6oUwvl3YXJU8Zp
	 /8ybIJzPjeHB5BpkAgiFNUYuzhVHstSsXmrM8okvzFNt1McylpO6sBbtqJ+pBVeM5c
	 RthGexOKnqVtxBujM4QmlOqB7eJKov6qEZU8MLLM=
Message-ID: <3660110a-8add-486d-9a79-c057757550e6@arm.com>
Date: Tue, 3 Nov 2026 19:37:30 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 07/22] xen/arm: smmuv3: Extend HW features detection
 and apply errata
To: Milan Djokic <milan_djokic@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Rahul Singh <rahul.singh@arm.com>, Will Deacon <will@kernel.org>
References: <cover.1793726692.git.milan_djokic@epam.com>
 <6a25a02d52ad58d406200ebbe9aa17ca0e997104.1793726692.git.milan_djokic@epam.com>
From: Robin Murphy <robin.murphy@arm.com>
Content-Language: en-GB
In-Reply-To: <6a25a02d52ad58d406200ebbe9aa17ca0e997104.1793726692.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793734656-C2CCFB50-0D526A09/0/0
X-purgate-type: clean
X-purgate-size: 16615

On 2026-11-03 5:30 pm, Milan Djokic wrote:
> Backport Linux commits 4bbd63eb685b and fd86b5944215, adapted to the
> Xen SMMUv3 implementation, applying errata workarounds to prevent
> nesting on MMU-600 and MMU-700 products.

Note that there were subsequent releases of MMU-700 which fixed the 
offending errata and so don't need a workaround:

https://lore.kernel.org/linux-iommu/4c4664b2427cef212a06efdd78a9faa8d9ded302.1773933699.git.robin.murphy@arm.com/

Also note that if you do actually implement S1 vSMMU support for nested 
translation already, disabling it is a bit drastic. The real workaround 
is to take care with the appropriate invalidation sequences - those 
Linux patches were basically just a reminder to come back and take a 
better look once all the parts of our vIOMMU support do eventually fall 
into place.

Thanks,
Robin.

> 
> Detect IOMMU hardware features and store them in the IOMMU host list
> for each probed SMMUv3 device, allowing the emulated IOMMU to advertise
> features supported by the physical IOMMU.
> 
> Linux commits:
> 
>    4bbd63eb685b ("iommu/arm-smmu-v3: Work around MMU-600 erratum 1076982")
>    fd86b5944215 ("iommu/arm-smmu-v3: Add explicit feature for nesting")
> 
> Link: https://lore.kernel.org/all/08adbe3d01024d8382a478325f73b56851f76e49.1683731256.git.robin.murphy@arm.com/
> Link: https://lore.kernel.org/all/136c3f4a3a84cc14a5a1978ace57dfd3ed67b688.1683731256.git.robin.murphy@arm.com/
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4bbd63eb685b
> Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git fd86b5944215
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Will Deacon <will@kernel.org>
> Signed-off-by: Rahul Singh <rahul.singh@arm.com>
> Signed-off-by: Milan Djokic <milan_djokic@epam.com>
> ---
>   xen/arch/arm/include/asm/viommu.h      |  8 ++-
>   xen/drivers/passthrough/arm/smmu-v3.c  | 81 +++++++++++++++++++++++--
>   xen/drivers/passthrough/arm/smmu-v3.h  | 32 ++++++++--
>   xen/drivers/passthrough/arm/viommu.c   |  4 +-
>   xen/drivers/passthrough/arm/vsmmu-v3.c | 83 ++++++++++++++++++++++++--
>   5 files changed, 191 insertions(+), 17 deletions(-)
> 
> diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/viommu.h
> index 287595068b..844cf34d56 100644
> --- a/xen/arch/arm/include/asm/viommu.h
> +++ b/xen/arch/arm/include/asm/viommu.h
> @@ -12,6 +12,8 @@ struct host_iommu {
>       struct list_head entry;
>       /* IOMMU DT node used to establish virtual to physical IOMMU/SID mapping */
>       const struct dt_device_node *dt_node;
> +    /* Physical IOMMU device structure used to detect supported features */
> +    const void *iommu;
>       /* Used for dom0 vIOMMU instantiation (1-1 MMIO regions mappings) */
>       paddr_t addr;
>       /* Used for dom0 vIOMMU instantiation (1-1 MMIO regions mappings) */
> @@ -52,7 +54,8 @@ int domain_viommu_init(struct domain *d, uint8_t viommu_type);
>   int viommu_relinquish_resources(struct domain *d);
>   uint8_t viommu_get_type(void);
>   void add_to_host_iommu_list(paddr_t addr, paddr_t size,
> -                            const struct dt_device_node *node);
> +                            const struct dt_device_node *node,
> +                            const void *iommu);
>   void set_cur_viommu(const struct viommu_desc *desc);
>   unsigned int domain_viommu_get_num_mmio_handlers(struct domain *d);
>   
> @@ -77,7 +80,8 @@ static inline int viommu_relinquish_resources(struct domain *d)
>   }
>   
>   static inline void __init add_to_host_iommu_list(paddr_t addr, paddr_t size,
> -                                          const struct dt_device_node *node)
> +                                          const struct dt_device_node *node,
> +                                          const void *iommu)
>   {
>       return;
>   }
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index b85ad730db..d2dfb06cae 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -2509,6 +2509,37 @@ err_free_irqs:
>   	return ret;
>   }
>   
> +static void arm_smmu_device_iidr_probe(struct arm_smmu_device *smmu)
> +{
> +	u32 reg;
> +	unsigned int implementer, productid, variant, revision;
> +
> +	reg = readl_relaxed(smmu->base + ARM_SMMU_IIDR);
> +	implementer = FIELD_GET(IIDR_IMPLEMENTER, reg);
> +	productid = FIELD_GET(IIDR_PRODUCTID, reg);
> +	variant = FIELD_GET(IIDR_VARIANT, reg);
> +	revision = FIELD_GET(IIDR_REVISION, reg);
> +
> +	switch (implementer) {
> +	case IIDR_IMPLEMENTER_ARM:
> +		switch (productid) {
> +		case IIDR_PRODUCTID_ARM_MMU_600:
> +			/* Arm erratum 1076982 */
> +			if (variant == 0 && revision <= 2)
> +				smmu->features &= ~ARM_SMMU_FEAT_SEV;
> +			/* Arm erratum 1209401 */
> +			if (variant < 2)
> +				smmu->features &= ~ARM_SMMU_FEAT_NESTING;
> +			break;
> +		case IIDR_PRODUCTID_ARM_MMU_700:
> +			/* Arm errata 2268618, 2812531 */
> +			smmu->features &= ~ARM_SMMU_FEAT_NESTING;
> +			break;
> +		}
> +		break;
> +	}
> +}
> +
>   static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   {
>   	u32 reg;
> @@ -2597,8 +2628,10 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   	switch (FIELD_GET(IDR0_TTF, reg)) {
>   	case IDR0_TTF_AARCH32_64:
>   		smmu->ias = 40;
> +		smmu->features |= ARM_SMMU_FEAT_TTF_AARCH32_64;
>   		fallthrough;
>   	case IDR0_TTF_AARCH64:
> +		smmu->features |= ARM_SMMU_FEAT_TTF_AARCH64;
>   		break;
>   	default:
>   		dev_err(smmu->dev, "AArch64 table format not supported!\n");
> @@ -2607,6 +2640,8 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   
>   	/* ASID/VMID sizes */
>   	smmu->vmid_bits = reg & IDR0_VMID16 ? 16 : 8;
> +	if (reg & IDR0_ASID16)
> +		smmu->features |= ARM_SMMU_FEAT_ASID_16;
>   
>   	/* IDR1 */
>   	reg = readl_relaxed(smmu->base + ARM_SMMU_IDR1);
> @@ -2646,12 +2681,18 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   	smmu->evtq.max_stalls = FIELD_GET(IDR5_STALL_MAX, reg);
>   
>   	/* Page sizes */
> -	if (reg & IDR5_GRAN64K)
> +	if (reg & IDR5_GRAN64K) {
>   		smmu->pgsize_bitmap |= SZ_64K | SZ_512M;
> -	if (reg & IDR5_GRAN16K)
> +		smmu->features |= ARM_SMMU_FEAT_GRAN64K;
> +	}
> +	if (reg & IDR5_GRAN16K) {
>   		smmu->pgsize_bitmap |= SZ_16K | SZ_32M;
> -	if (reg & IDR5_GRAN4K)
> +		smmu->features |= ARM_SMMU_FEAT_GRAN16K;
> +	}
> +	if (reg & IDR5_GRAN4K) {
>   		smmu->pgsize_bitmap |= SZ_4K | SZ_2M | SZ_1G;
> +		smmu->features |= ARM_SMMU_FEAT_GRAN4K;
> +	}
>   
>   	/* Input address size */
>   	if (FIELD_GET(IDR5_VAX, reg) == IDR5_VAX_52_BIT)
> @@ -2684,15 +2725,46 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>   		fallthrough;
>   	case IDR5_OAS_48_BIT:
>   		smmu->oas = 48;
> +		smmu->features |= ARM_SMMU_FEAT_OAS_48_BIT;
>   		break;
>   	}
>   
>   	smmu->oas = min_t(unsigned long, PADDR_BITS, smmu->oas);
>   	smmu->ias = max(smmu->ias, smmu->oas);
>   
> +	switch (smmu->oas) {
> +	case 32:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_32_BIT;
> +		break;
> +	case 36:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_36_BIT;
> +		break;
> +	case 40:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_40_BIT;
> +		break;
> +	case 42:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_42_BIT;
> +		break;
> +	case 44:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_44_BIT;
> +		break;
> +	case 48:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_48_BIT;
> +		break;
> +	case 52:
> +		smmu->features |= ARM_SMMU_FEAT_OAS_52_BIT;
> +		break;
> +	}
> +
>   	/* Xen: Set maximum Stage-2 input size supported by the SMMU. */
>   	p2m_restrict_ipa_bits(smmu->ias);
>   
> +	if ((smmu->features & ARM_SMMU_FEAT_TRANS_S1) &&
> +		(smmu->features & ARM_SMMU_FEAT_TRANS_S2))
> +		smmu->features |= ARM_SMMU_FEAT_NESTING;
> +
> +	arm_smmu_device_iidr_probe(smmu);
> +
>   	dev_info(smmu->dev, "ias %lu-bit, oas %lu-bit (features 0x%08x)\n",
>   		 smmu->ias, smmu->oas, smmu->features);
>   	return 0;
> @@ -2887,9 +2959,8 @@ static int __init arm_smmu_device_probe(struct platform_device *pdev)
>   	spin_lock(&arm_smmu_devices_lock);
>   	list_add(&smmu->devices, &arm_smmu_devices);
>   	spin_unlock(&arm_smmu_devices_lock);
> -
>   	/* Add to host IOMMU list to initialize vIOMMU for dom0 */
> -	add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev));
> +	add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev), (void *) smmu);
>   
>   	return 0;
>   
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
> index f302c69d02..4a912be740 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.h
> +++ b/xen/drivers/passthrough/arm/smmu-v3.h
> @@ -60,6 +60,16 @@
>   #define IDR5_VAX			GENMASK(11, 10)
>   #define IDR5_VAX_52_BIT			1
>   
> +#define ARM_SMMU_IIDR			0x18
> +#define IIDR_PRODUCTID			GENMASK(31, 20)
> +#define IIDR_VARIANT			GENMASK(19, 16)
> +#define IIDR_REVISION			GENMASK(15, 12)
> +#define IIDR_IMPLEMENTER		GENMASK(11, 0)
> +
> +#define IIDR_IMPLEMENTER_ARM		0x43b
> +#define IIDR_PRODUCTID_ARM_MMU_600	0x483
> +#define IIDR_PRODUCTID_ARM_MMU_700	0x487
> +
>   #define ARM_SMMU_CR0			0x20
>   #define CR0_ATSCHK			(1 << 4)
>   #define CR0_CMDQEN			(1 << 3)
> @@ -603,10 +613,24 @@ struct arm_smmu_device {
>   #define ARM_SMMU_FEAT_COHERENCY		(1 << 8)
>   #define ARM_SMMU_FEAT_TRANS_S1		(1 << 9)
>   #define ARM_SMMU_FEAT_TRANS_S2		(1 << 10)
> -#define ARM_SMMU_FEAT_STALLS		(1 << 11)
> -#define ARM_SMMU_FEAT_HYP		(1 << 12)
> -#define ARM_SMMU_FEAT_STALL_FORCE	(1 << 13)
> -#define ARM_SMMU_FEAT_VAX		(1 << 14)
> +#define ARM_SMMU_FEAT_NESTING	    (1 << 11)
> +#define ARM_SMMU_FEAT_STALLS		(1 << 12)
> +#define ARM_SMMU_FEAT_HYP		(1 << 13)
> +#define ARM_SMMU_FEAT_STALL_FORCE	(1 << 14)
> +#define ARM_SMMU_FEAT_VAX		(1 << 15)
> +#define ARM_SMMU_FEAT_ASID_16		(1 << 16)
> +#define ARM_SMMU_FEAT_TTF_AARCH64		(1 << 17)
> +#define ARM_SMMU_FEAT_TTF_AARCH32_64	(1 << 18)
> +#define ARM_SMMU_FEAT_GRAN64K	(1 << 19)
> +#define ARM_SMMU_FEAT_GRAN16K	(1 << 20)
> +#define ARM_SMMU_FEAT_GRAN4K	(1 << 21)
> +#define ARM_SMMU_FEAT_OAS_32_BIT	(1 << 22)
> +#define ARM_SMMU_FEAT_OAS_36_BIT	(1 << 23)
> +#define ARM_SMMU_FEAT_OAS_40_BIT	(1 << 24)
> +#define ARM_SMMU_FEAT_OAS_42_BIT	(1 << 25)
> +#define ARM_SMMU_FEAT_OAS_44_BIT	(1 << 26)
> +#define ARM_SMMU_FEAT_OAS_48_BIT	(1 << 27)
> +#define ARM_SMMU_FEAT_OAS_52_BIT	(1 << 28)
>   	u32				features;
>   
>   #define ARM_SMMU_OPT_SKIP_PREFETCH	(1 << 0)
> diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough/arm/viommu.c
> index 2b16f11017..b4b91ab1cb 100644
> --- a/xen/drivers/passthrough/arm/viommu.c
> +++ b/xen/drivers/passthrough/arm/viommu.c
> @@ -18,7 +18,8 @@ static bool host_iommu_list_incomplete;
>   
>   /* Common function for adding to host_iommu_list */
>   void __init add_to_host_iommu_list(paddr_t addr, paddr_t size,
> -                            const struct dt_device_node *node)
> +                            const struct dt_device_node *node,
> +                            const void *iommu)
>   {
>       struct host_iommu *iommu_data;
>       int irq;
> @@ -46,6 +47,7 @@ void __init add_to_host_iommu_list(paddr_t addr, paddr_t size,
>           return;
>       }
>       iommu_data->irq = irq;
> +    iommu_data->iommu = iommu;
>   
>       printk("vIOMMU: Found IOMMU @0x%"PRIx64"\n", addr);
>   
> diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrough/arm/vsmmu-v3.c
> index 7540c6fc54..e3ef68d193 100644
> --- a/xen/drivers/passthrough/arm/vsmmu-v3.c
> +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c
> @@ -6,9 +6,13 @@
>   #include <asm/mmio.h>
>   #include <asm/viommu.h>
>   
> +#include "smmu-v3.h"
> +#include "vsmmu-v3.h"
> +
>   struct virt_smmu {
>       struct      domain *d;
>       struct      list_head viommu_list;
> +    uint32_t    features;
>   };
>   
>   static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info,
> @@ -30,7 +34,8 @@ static const struct mmio_handler_ops vsmmuv3_mmio_handler = {
>       .write = vsmmuv3_mmio_write,
>   };
>   
> -static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
> +static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size,
> +                               uint32_t features)
>   {
>       struct virt_smmu *smmu;
>   
> @@ -39,6 +44,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
>           return -ENOMEM;
>   
>       smmu->d = d;
> +    smmu->features = features;
>   
>       register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu);
>   
> @@ -51,23 +57,90 @@ static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size)
>   static int domain_vsmmuv3_init(struct domain *d)
>   {
>       int ret;
> +    struct host_iommu *hw_iommu;
> +    const struct arm_smmu_device *smmu;
> +
> +    if ( list_head_is_null(&host_iommu_list) )
> +        return -ENODEV;
> +
> +    /*
> +    * Check physical IOMMUs for Stage-1 and nesting support.
> +    * vIOMMU exposure is rejected if Stage-1 is not supported or
> +    * if both Stage-1 and Stage-2 are supported but nesting is
> +    * disabled, e.g. due to hardware errata.
> +    */
> +    list_for_each_entry(hw_iommu, &host_iommu_list, entry)
> +    {
> +        smmu = (const struct arm_smmu_device *)hw_iommu->iommu;
> +
> +        if ( !(smmu->features & ARM_SMMU_FEAT_TRANS_S1) )
> +        {
> +            printk(XENLOG_G_ERR
> +                "vSMMUv3: Stage-1 translation not supported by HW IOMMU\n");
> +            return -EINVAL;
> +        }
> +
> +        if ( (smmu->features & ARM_SMMU_FEAT_TRANS_S2) &&
> +             !(smmu->features & ARM_SMMU_FEAT_NESTING) )
> +        {
> +            printk(XENLOG_G_ERR
> +                "vSMMUv3: Nesting not supported by HW IOMMU\n");
> +            return -EINVAL;
> +        }
> +    }
>   
>       INIT_LIST_HEAD(&d->arch.viommu_list);
>   
>       if ( domain_use_host_layout(d) )
>       {
> -        struct host_iommu *hw_iommu;
> -
>           list_for_each_entry(hw_iommu, &host_iommu_list, entry)
>           {
> -            ret = vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size);
> +            smmu = (const struct arm_smmu_device *) hw_iommu->iommu;
> +            ret = vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size,
> +                                      smmu->features);
>               if ( ret )
>                   return ret;
>           }
>       }
>       else
>       {
> -        ret = vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE);
> +        /*
> +         * Require: For non-hardware domains, features must be uniform across
> +         * physical SMMUs to avoid advertising features that are unsupported by
> +         * certain units.
> +         */
> +        uint32_t features;
> +        hw_iommu = list_first_entry(&host_iommu_list, struct host_iommu, entry);
> +        smmu = (const struct arm_smmu_device *) hw_iommu->iommu;
> +        features = smmu->features;
> +        list_for_each_entry(hw_iommu, &host_iommu_list, entry)
> +        {
> +            smmu = (const struct arm_smmu_device *) hw_iommu->iommu;
> +
> +            if ( smmu->features != features )
> +            {
> +                printk(XENLOG_G_ERR
> +                       "vSMMUv3: Unsupported HW layout: physical SMMUs must " \
> +                       "have a uniform set of features\n");
> +                return -EINVAL;
> +            }
> +        }
> +
> +        /*
> +         * Reject vIOMMU exposure to non-hardware
> +         * domains if the physical SMMU does not support stage-2
> +         * (stage-1-only mode is supported for direct-mapped domains only)
> +         */
> +        if ( !(features & ARM_SMMU_FEAT_TRANS_S2) )
> +        {
> +            printk(XENLOG_G_ERR
> +                   "vSMMUv3: Physical SMMU must support stage-2 translation "
> +                   "for non-hardware domains.\n");
> +            return -EINVAL;
> +        }
> +
> +        ret = vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE,
> +                                  features);
>           if ( ret )
>               return ret;
>       }



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 20:45:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 20:45:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470629.1679299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOLNr-0007o4-Vs; Tue, 03 Nov 2026 20:45:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470629.1679299; Tue, 03 Nov 2026 20:45:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOLNr-0007nx-TL; Tue, 03 Nov 2026 20:45:31 +0000
Received: by outflank-mailman (input) for mailman id 1470629;
 Tue, 03 Nov 2026 20:45:30 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <sstabellini@kernel.org>) id 1xOLNq-0007nr-7r
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 20:45:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOLNp-00EPLS-D4
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 21:45:29 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6aea47e5-bab6-0a2a0a5309dd-0a2a4509b1ce-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 21:45:29 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6aea47e8-be1a-0a2a45090019-ac6904febc6c-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 21:45:29 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 40686601EF;
 Tue,  3 Nov 2026 20:45:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75C261F000C1;
 Tue,  3 Nov 2026 20:45:25 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:cc:Subject:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793738727;
	bh=d8eklC2VQhZz5EWJXYgNnZ+PKNEBrIyO3+DsJyq5YZU=;
	h=Date:From:To:cc:Subject:In-Reply-To:References;
	b=Be8FqblAJgEgKutq1JkQ2fRVdBZnjS+Lus8YMdD9WcqzfhDUjS6DVfvh33mlGGxsW
	 zv30BNhGysyap2ob6UjDLtsnJgjpf4QuB3tgyR4F7Io48gb/CjAB4MOqVoPrO19oDh
	 /LE9pnbLV6rdHLAhibmMXI6vkIMPh5WwYSVBPW8flMS0H/9H234C+T5R9V9RPuRIVN
	 0lEJSTxnuQ77KhReoyRn19JkMV4CwTYPC+wBGLaKMcwg95UtrQpmwSIL08IuMhnadZ
	 4JWaHADu4Ca0a8LCaQNCUFgNOGAJWbzU27HN3L9CwVLgt9hLsPSX2U42R2orGub0HB
	 nbYCArJn/dAKQ==
Date: Tue, 3 Nov 2026 12:45:20 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
To: Michal Orzel <michal.orzel@amd.com>
cc: xen-devel@lists.xenproject.org, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: domain_build.c: Use hwdom instead of dom0 where
 applicable
In-Reply-To: <20261103164624.195576-1-michal.orzel@amd.com>
Message-ID: <5ed90745-512a-53e7-f5ef-aa4422383cb1@kernel.org>
References: <20261103164624.195576-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-bad1c0/1793738729-3B4D3034-9B020834/0/0
X-purgate-type: clean
X-purgate-size: 8520

On Tue, 3 Nov 2026, Michal Orzel wrote:
> Since commit 52cb53f1816a ("xen/arm: dom0less hwdom construction"),
> construct_hwdom() and the helpers it relies on (allocate_memory_11(),
> prepare_dtb_hwdom(), handle_node(), find_gnttab_region(), etc.) are used
> not only for the regular dom0 but also for a hardware domain created by
> dom0less. Many comments and names on this path still refer to dom0, which
> is misleading.
> 
> No functional change other than the panic messages.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> This is just the cleanup for one file with the most number of occurences that
> I decided to do in the free time after reviewing latest DOM0_BOOT changes. Other
> files also need such cleanup on Arm.
> ---
>  xen/arch/arm/domain_build.c | 44 ++++++++++++++++++-------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 1ee1f1f6a733..606e85818eb4 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -100,7 +100,7 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
>  #endif
>  
>  /*
> - * Amount of extra space required to dom0's device tree. This covers
> + * Amount of extra space required to hwdom's device tree. This covers
>   * nodes generated by Xen, which are not directly copied from the host DTB.
>   * It is calculated as:
>   *  - Space for /hypervisor node (128 bytes).
> @@ -111,15 +111,15 @@ int __init parse_arch_dom0_param(const char *s, const char *e)
>   *    plus the appendage to the main /memory node (NR_SHMEM_BANKS * (160 + 16)
>   *    bytes). This overhead is dropped when CONFIG_STATIC_SHM is disabled.
>   */
> -#define DOM0_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
> -                             (NR_MEM_BANKS * 16) +                    \
> -                             (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
> -                              (NR_SHMEM_BANKS * (160 + 16)) : 0))
> +#define HWDOM_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
> +                              (NR_MEM_BANKS * 16) +                    \
> +                              (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
> +                               (NR_SHMEM_BANKS * (160 + 16)) : 0))
>  
>  paddr_t __init hwdom_get_fdt_alloc_size(void)
>  {
>      if ( acpi_disabled )
> -        return fdt_totalsize(device_tree_flattened) + DOM0_FDT_EXTRA_SIZE;
> +        return fdt_totalsize(device_tree_flattened) + HWDOM_FDT_EXTRA_SIZE;
>  
>      return ACPI_DOM0_FDT_MIN_SIZE;
>  }
> @@ -175,7 +175,7 @@ static bool __init insert_11_bank(struct domain *d,
>  
>      res = guest_physmap_add_page(d, _gfn(mfn_x(smfn)), smfn, order);
>      if ( res )
> -        panic("Failed map pages to DOM0: %d\n", res);
> +        panic("Failed map pages to %pd: %d\n", d, res);
>  
>      kinfo->unassigned_mem -= size;
>  
> @@ -245,19 +245,19 @@ fail:
>   *
>   * Requirements:
>   *
> - * 1. The dom0 kernel should be loaded within the first 128MB of RAM. This
> + * 1. The hwdom kernel should be loaded within the first 128MB of RAM. This
>   *    is necessary at least for Linux zImage kernels, which are all we
>   *    support today.
> - * 2. We want to put the dom0 kernel, ramdisk and DTB in the same
> + * 2. We want to put the hwdom kernel, ramdisk and DTB in the same
>   *    bank. Partly this is just easier for us to deal with, but also
>   *    the ramdisk and DTB must be placed within a certain proximity of
>   *    the kernel within RAM.
> - * 3. For dom0 we want to place as much of the RAM as we reasonably can
> + * 3. For hwdom we want to place as much of the RAM as we reasonably can
>   *    below 4GB, so that it can be used by non-LPAE enabled kernels (32-bit).
> - * 4. Some devices assigned to dom0 can only do 32-bit DMA access or
> + * 4. Some devices assigned to hwdom can only do 32-bit DMA access or
>   *    even be more restricted. We want to allocate as much of the RAM
>   *    as we reasonably can that can be accessed from all the devices..
> - * 5. For 32-bit dom0 the kernel must be located below 4GB.
> + * 5. For 32-bit hwdom the kernel must be located below 4GB.
>   * 6. We want to have a few largers banks rather than many smaller ones.
>   *
>   * For the first two requirements we need to make sure that the lowest
> @@ -293,7 +293,7 @@ fail:
>   * to be allocated in the low mem. Then for subsequent allocation, we
>   * initially allocate memory only from low mem. Once that runs out out
>   * (as described above) we allow higher allocations and continue until
> - * that runs out (or we have allocated sufficient dom0 memory).
> + * that runs out (or we have allocated sufficient hwdom memory).
>   */
>  static void __init allocate_memory_11(struct domain *d,
>                                        struct kernel_info *kinfo)
> @@ -311,7 +311,7 @@ static void __init allocate_memory_11(struct domain *d,
>      unsigned int bits;
>  
>      /*
> -     * TODO: Implement memory bank allocation when DOM0 is not direct
> +     * TODO: Implement memory bank allocation when hwdom is not direct
>       * mapped
>       */
>      BUG_ON(!is_domain_direct_mapped(d));
> @@ -409,8 +409,8 @@ static void __init allocate_memory_11(struct domain *d,
>  
>      if ( kinfo->unassigned_mem )
>          /* Don't want format this as PRIpaddr (16 digit hex) */
> -        panic("Failed to allocate requested dom0 memory. %ldMB unallocated\n",
> -              (unsigned long)kinfo->unassigned_mem >> 20);
> +        panic("Failed to allocate requested %pd memory. %ldMB unallocated\n",
> +              d, (unsigned long)kinfo->unassigned_mem >> 20);
>  
>      for( i = 0; i < mem->nr_banks; i++ )
>      {
> @@ -516,7 +516,7 @@ static int __init write_properties(struct domain *d, struct kernel_info *kinfo,
>           * * remove bootargs, linux,uefi-system-table,
>           *   linux,uefi-mmap-start, linux,uefi-mmap-size,
>           *   linux,uefi-mmap-desc-size, and linux,uefi-mmap-desc-ver
> -         *   (since EFI boot is not currently supported in dom0).
> +         *   (since EFI boot is not currently supported in hwdom).
>           */
>          if ( dt_node_path_is_equal(node, "/chosen") )
>          {
> @@ -1544,7 +1544,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
>  
>      /*
>       * Even if the IOMMU device is not used by Xen, it should not be
> -     * passthrough to DOM0
> +     * passthrough to hwdom.
>       */
>      if ( device_get_class(node) == DEVICE_IOMMU )
>      {
> @@ -1695,7 +1695,7 @@ static int __init prepare_dtb_hwdom(struct domain *d, struct kernel_info *kinfo)
>      kinfo->phandle_intc = dt_interrupt_controller->phandle;
>      fdt = device_tree_flattened;
>  
> -    new_size = fdt_totalsize(fdt) + DOM0_FDT_EXTRA_SIZE;
> +    new_size = fdt_totalsize(fdt) + HWDOM_FDT_EXTRA_SIZE;
>      kinfo->fdt = xmalloc_bytes(new_size);
>      if ( kinfo->fdt == NULL )
>          return -ENOMEM;
> @@ -1764,7 +1764,7 @@ static void __init find_gnttab_region(struct domain *d,
>          gnttab_resource_max_frames(d, XENMEM_resource_grant_table_id_shared);
>  
>      /*
> -     * The region used by Xen on the memory will never be mapped in DOM0
> +     * The region used by Xen on the memory will never be mapped in hwdom
>       * memory layout. Therefore it can be used for the grant table.
>       *
>       * Only use the text section as it's always present and will contain
> @@ -1776,7 +1776,7 @@ static void __init find_gnttab_region(struct domain *d,
>  
>  #ifdef CONFIG_ARM_32
>      /*
> -     * The gnttab region must be under 4GB in order to work with DOM0
> +     * The gnttab region must be under 4GB in order to work with hwdom
>       * using short page table.
>       * In practice it's always the case because Xen is always located
>       * below 4GB, but be safe.
> @@ -1941,7 +1941,7 @@ int __init construct_hwdom(struct kernel_info *kinfo,
>              return rc;
>      }
>  
> -    /* Map extra GIC MMIO, irqs and other hw stuffs to dom0. */
> +    /* Map extra GIC MMIO, irqs and other hw stuffs to hwdom */
>      rc = gic_map_hwdom_extra_mappings(d);
>      if ( rc < 0 )
>          return rc;
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 22:01:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 22:01:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470675.1679308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOMZK-0004sk-4N; Tue, 03 Nov 2026 22:01:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470675.1679308; Tue, 03 Nov 2026 22:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOMZK-0004sd-1B; Tue, 03 Nov 2026 22:01:26 +0000
Received: by outflank-mailman (input) for mailman id 1470675;
 Tue, 03 Nov 2026 22:01:24 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dakr@kernel.org>) id 1xOMZI-0004sP-Ke
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 22:01:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOMZH-00FeOK-PJ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:01:23 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dakr@kernel.org>)
 id 6aea59b0-2eae-0a2a0a5409dd-0a2a4505d9f0-4
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 23:01:23 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dakr@kernel.org>)
 id 6aea59b2-4cb1-0a2a45050019-aceafc1fb816-3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 23:01:23 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id B58204026B;
 Tue,  3 Nov 2026 22:01:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73E5C1F000C1;
 Tue,  3 Nov 2026 22:01:16 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:Subject:Cc:To:From:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793743281;
	bh=R6uA9hX7fD85rhN6sNXcNNPGP4g4K/KhTQ6rqqOfAX0=;
	h=Date:Subject:Cc:To:From:References:In-Reply-To;
	b=AuKAd+2pAiWxmodz6a5kLrzOGag2dQXGCvIWfiU2SqiHPwjnt+DZeZOIZzwDoeFgW
	 f5tvI82TTyJbTTJBeMupREcEqkEJOTnvm2tcg6rR6KzI977TOiUnB4XfJblBR0m8Ko
	 3on7l/RW87okd18TkMziqprxQ9KNwBaxunuTpwN+wdELBok8svqqglFYItI7OaAie9
	 SaIAxAjUUZc0FGMB/GEzff7Fem5FCCZW2y7K8Ha9aPGJ34HwNpxMac8F2DMTukXzX4
	 NMMYmaBoHXuYiAJmGYwn0YL5KCqaN+IzO8Fe7/dimMO7SXev4BOPXOSMGcMZiQPmb5
	 yEemvUz0AwJZg==
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 03 Nov 2026 23:01:15 +0100
Message-Id: <DMLWX8NY1N1N.2OMQMQCIVRR18@kernel.org>
Subject: Re: [PATCH v2 0/9] Add __must_init and require explicit
 kobj_type::release
Cc: "Kees Cook" <kees@kernel.org>, "Greg Kroah-Hartman"
 <gregkh@linuxfoundation.org>, "Miguel Ojeda" <ojeda@kernel.org>, "Rafael J
 . Wysocki" <rafael@kernel.org>, "Nathan Chancellor" <nathan@kernel.org>,
 "Nick Desaulniers" <ndesaulniers@google.com>, "Miguel Ojeda"
 <miguel.ojeda.sandonis@gmail.com>, =?utf-8?q?Christian_K=C3=B6nig?=
 <christian.koenig@amd.com>, "Zhihao Cheng" <chengzhihao1@huawei.com>,
 "Zhongqiu Han" <zhongqiu.han@oss.qualcomm.com>, "Sumanth Korikkar"
 <sumanthk@linux.ibm.com>, "Bill Wendling" <morbo@google.com>, "Justin
 Stitt" <justinstitt@google.com>, <driver-core@lists.linux.dev>,
 <llvm@lists.linux.dev>, <linux-hardening@vger.kernel.org>,
 <linux-fsdevel@vger.kernel.org>, <linux-doc@vger.kernel.org>,
 <linux-acpi@vger.kernel.org>, <linux-pm@vger.kernel.org>,
 <linuxppc-dev@lists.ozlabs.org>, <linux-sh@vger.kernel.org>,
 <linux-s390@vger.kernel.org>, <gfs2@lists.linux.dev>,
 <xen-devel@lists.xenproject.org>, <linux-mtd@lists.infradead.org>,
 <amd-gfx@lists.freedesktop.org>, <dri-devel@lists.freedesktop.org>,
 <linux-kernel@vger.kernel.org>
To: "Ian Rogers" <irogers@google.com>
From: "Danilo Krummrich" <dakr@kernel.org>
References: <20261027223847.652884-1-irogers@google.com>
In-Reply-To: <20261027223847.652884-1-irogers@google.com>
X-purgate-ID: tlsNG-c201ff/1793743283-738BE2A1-A7A6175B/0/0
X-purgate-type: clean
X-purgate-size: 1324

On Tue Oct 27, 2026 at 11:38 PM CET, Ian Rogers wrote:
> Clang supports the 'require_explicit_initialization' attribute on struct
> fields to enforce that the field is explicitly initialized when an
> aggregate object is constructed, emitting -Wuninitialized-explicit-init
> (enabled by default) if the field is omitted.
>
> Following discussion at the Linux Plumbers Conference [1], patch 1 adds
> the attribute to include/linux/compiler_attributes.h as __must_init. In
> v1 it was called __require_explicit_initialization. Kees picked up that
> patch with a first seq_file user [2], and in that thread Greg suggested
> the shorter __must_init spelling, which Kees and Miguel agreed to. As
> the attribute did not land in the v7.4 merge window, Kees asked that
> this series carry the renamed attribute. The Acked-by/Reviewed-by tags
> on patch 1 were given for the original spelling; the rename is
> mechanical.

This looks ready, and I plan to pick it up through the driver-core tree wit=
h the
minor commit message correction.

>   powerpc/secvar: Add missing kobject release callback to secvar_ktype
>   sh: sq: Add missing kobject release callback to ktype_percpu_entry
>   xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type

Some ACKs would be appreciated. :)

Thanks,
Danilo


From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470714.1679341 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnk-00031U-CT; Tue, 03 Nov 2026 23:20:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470714.1679341; Tue, 03 Nov 2026 23:20:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnk-00030F-79; Tue, 03 Nov 2026 23:20:24 +0000
Received: by outflank-mailman (input) for mailman id 1470714;
 Tue, 03 Nov 2026 23:20:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnj-0002y9-6j
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:23 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONni-0000000CofP-3RIZ;
 Tue, 03 Nov 2026 23:20:22 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONni-0000000EMFa-2uPe;
 Tue, 03 Nov 2026 23:20:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=u/xqvNkGLeAb23thkUDCLuctZV78xyIQ2mEEAVZx0bI=; b=ZkcVon2qXIegu7yDD+TTaB9afe
	mmZctwvre4xhOTA8I7W70uKmz51sT1w5cDs0fvh3u3XXb9xu0RhcvAT39ALruVviW/YXZq9cxN2TN
	UDy+tLvLXgizCtU1GkaYP192hqV98iKs7oTG3eUJj4sY53Vqqpoc4pQ8ocUw6bnq6aVY=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 04/44] x86/domain_page: drop redundant create_perdomain_mapping() call
Date: Tue,  3 Nov 2026 17:13:26 -0500
Message-ID: <20261103-asi-hvm-v6-4-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

We want to change per-domain mappings to be per-vCPU mappings.  In
preparation for that, we want to arrange that
create_perdomain_mapping() work either with a single perdomain area,
or with a per-vCPU perdomain area.

The one remaining call in a domain context turns out to be
unnecessary:

mapcache_domain_init() pre-plumbs L1 tables over the whole
inuse/garbage bitmap range (sized for the full MAPCACHE_ENTRIES
capacity), without populating any data pages.  The plumbing is
redundant: mapcache_vcpu_init() installs the bitmap pages the domain
will actually use with populating calls, which allocate any missing
page-table structure on demand -- and since d->max_vcpus is fixed
before any vCPU is created, the range those calls cover never grows.
The pre-plumbed tail beyond it backs virtual addresses that are never
populated at all.

In debug builds, and on hosts with memory hotplug or with more memory
than the PV directmap covers, the call was previously what first
allocated a PV domain's per-domain L3.  Since "x86/mm: allocate the
per-domain L3 in arch_domain_create()", the L3 comes with the domain.

Drop the call.

With the only fallible operation gone, mapcache_domain_init() becomes
void, and arch_domain_create()'s error handling for it goes away.

The per-domain-mapping work in mapcache_vcpu_init() stays where it is
rather than moving into mapcache_domain_init() along with this change,
ready for a later patch which introduces per-vCPU mapcaches.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Roger Pau Monné <roger@xenproject.org>
---
Changes in v6:
- Message: since "x86/mm: allocate the per-domain L3 in
  arch_domain_create()", the L3 comes with the domain, and this is the
  only call left in a domain context.

Changes in v3:
- Rebased onto staging without the GDT/LDT conversions (for the
  HVM-only series); no functional difference.
- Say why the per-vCPU part stays in mapcache_vcpu_init() (Jan).
- Say that the call also first allocated a PV domain's per-domain L3 in
  some builds, which all builds now do with the first vCPU.

Changes in v2:
- Added to the series (split out of the following patch).

Changes since the previously posted version:
- Split out of "x86/mm: switch {create,destroy}_perdomain_mapping()
  domain parameter to vCPU", where the removal was folded into the
  parameter switch without its own rationale.
---
 xen/arch/x86/domain.c             | 3 +--
 xen/arch/x86/domain_page.c        | 8 ++------
 xen/arch/x86/include/asm/domain.h | 2 +-
 3 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index e67c336b82..173daf9000 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -914,8 +914,7 @@ int arch_domain_create(struct domain *d,
     }
     else if ( is_pv_domain(d) )
     {
-        if ( (rc = mapcache_domain_init(d)) != 0 )
-            goto fail;
+        mapcache_domain_init(d);
 
         if ( (rc = pv_domain_initialise(d)) != 0 )
             goto fail;
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 5744754f11..f02be1675b 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -223,7 +223,7 @@ void unmap_domain_page(const void *ptr)
     local_irq_restore(flags);
 }
 
-int mapcache_domain_init(struct domain *d)
+void mapcache_domain_init(struct domain *d)
 {
     struct mapcache_domain *dcache = &d->arch.pv.mapcache;
     unsigned int bitmap_pages;
@@ -232,7 +232,7 @@ int mapcache_domain_init(struct domain *d)
 
 #ifdef NDEBUG
     if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
-        return 0;
+        return;
 #endif
 
     BUILD_BUG_ON(MAPCACHE_VIRT_END + PAGE_SIZE * (3 +
@@ -244,10 +244,6 @@ int mapcache_domain_init(struct domain *d)
                       (bitmap_pages + 1) * PAGE_SIZE / sizeof(long);
 
     spin_lock_init(&dcache->lock);
-
-    return create_perdomain_mapping(d, (unsigned long)dcache->inuse,
-                                    2 * bitmap_pages + 1,
-                                    NIL(l1_pgentry_t *), NULL);
 }
 
 int mapcache_vcpu_init(struct vcpu *v)
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 2d0a915410..212daae1f5 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -89,7 +89,7 @@ struct mapcache_domain {
     unsigned long *garbage;
 };
 
-int mapcache_domain_init(struct domain *d);
+void mapcache_domain_init(struct domain *d);
 int mapcache_vcpu_init(struct vcpu *v);
 
 /* x86/64: toggle guest between kernel and user modes. */
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470711.1679317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnf-0002XZ-Fo; Tue, 03 Nov 2026 23:20:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470711.1679317; Tue, 03 Nov 2026 23:20:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnf-0002XS-DA; Tue, 03 Nov 2026 23:20:19 +0000
Received: by outflank-mailman (input) for mailman id 1470711;
 Tue, 03 Nov 2026 23:20:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONne-0002X7-2g
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:18 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONne-0000000Cof9-044B
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:18 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnd-0000000EMFa-3TZV
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:Message-ID:Date:Subject:To:From;
	bh=8TVQHotIU3vLyQpGo5XKI9gNKCI1WFDEzRJA5Nleqb8=; b=IVPKSKmMGyKyTsiGSjTgFRQgzK
	Ig/nBxoYQtxJ8ZDQqfoQCcl8sOj+O7CvffQhntDDi2Fowk58SkEn7Al1FLVZ6LBn6/bR30BBQORNb
	eE4Lv2IP/NJqpRZxkrsU5b5bp0ZDZ1MH1xEZ05QlNF+wGH0PPe/NcQmU0kReZjpSH3jw=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Subject: [PATCH v6 00/44] ASI: HVM through X4
Date: Tue,  3 Nov 2026 17:13:22 -0500
Message-ID: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is the first part of a series to implement address space
isolation.

The approach is the same as v3 to v5: Start by focusing on just
getting ASI and intra-domain isolation for HVM guests.  PV support is
added where it's simple to do.

The full series can be roughly divided as below:

Included in this version, all posted before:

- VH (01-13): Give each vCPU of an HVM guest its own per-domain area
  and its own mapcache.

- DV (14-23): Maintain two "views" of the directmap: A full directmap,
  and a sparse directmap.  The full directmap is what we have now; the
  sparse directmap removes non-xenheap heap memory.

- X1 (24-30): Add a vCPU state window to the per-domain area (both for
  PV and HVM).  Move SVM VMCB structures and VMX guest MSR areas into
  it.

- X2 (31-34): Move every vCPU's saved register frame (PV and HVM), and
  the HVM emulator's operand caches, into the vCPU state window.  34
  also clears the vCPU's copy of an emulated I/O request once it has
  been consumed.

- X3 (35-37): Introduce map_domain_pages(), which maps several pages
  in the calling vCPU's per-domain area, and use it in place of vmap()
  for the shadow code's cross-page emulated writes and the HVM
  emulator's multi-frame accesses.

- X4 (38-44): Move the guest XSAVE areas into the vCPU state window.

Implemented but not yet posted:

- PH1: Preparation for per-pCPU stacks, modifying rendezvous and
  call-function IPIs to not use the stack

- PH2: Moving pCPU stacks into the perdomain area, allocating them
  from the domheap

- O: A number of optimizations to improve performance

The functionality of v6 (through X4) is the bare minimum that
XenServer needs to make it into 4.23.

v5 can be found here:

https://lore.kernel.org/xen-devel/20261028-asi-hvm-v5-0-13b908e0df0b@xenproject.org/

v6 is based on staging 2043d22b7e92.  v5's 01, "x86/PoD: map one page
at a time in p2m_pod_zero_check()", is now in staging (41ddcfe808ec),
so v5's NN is v6's NN-1.

The changes since v5 have been tested (below) and skimmed, but not
yet been over with a fine-tooth comb.

Changes in v6:

- Following Jan's suggestion on v5's 02, the per-domain L3 is now
  allocated when the domain is created, instead of refusing to promote
  an L4 while there is none: 01, "x86/mm: allocate the per-domain L3
  in arch_domain_create()", replaces v5's "x86/mm: refuse to promote
  an L4 while the domain has no per-domain L3".  A vCPU-PT domain has
  no domain-wide L3: each of its vCPUs gets its own in
  arch_vcpu_create() (08).  create_perdomain_mapping() no longer
  allocates an L3.

- To go with it, 07 gives init_xen_l4_slots() two forms around a
  common core: one taking the vCPU that a root page table is private
  to (HVM monitor tables, the compat L4), and init_xen_l4_slots_pv(),
  taking only the domain, for the root page tables a PV domain's vCPUs
  share (its L4s and their shadows).  promote_l4_table() therefore no
  longer needs vCPU 0.

- 02, 04, 05, 20 and 25 change to match, and 13 now cites the PoD fix
  by its hash; each patch's changelog has the details.  Jan's
  Reviewed-by on v5's 06 (now 05) has been dropped.

- In 16, sparse_dmap_init() is still called once the heap has all
  memory.  Since "x86: invoke xenheap_max_mfn() unconditionally"
  (f93ffa1309cd), that means after the loop for RAM above 5 TiB,
  rather than right after the change to SYS_STATE_boot.

Some more details:

15 is a work-around for a slow-down which causes a watchdog to fire.
(Proper performance fixes have been implemented but won't be posted
until the end of the entire series.)

34 also limits exposure of ioreq state: Completely isolating each
vCPU's I/O requests from being read by other vCPUs of the same domain
is complicated; as a mitigation, this patch clears the emulated I/O
request once it has been consumed, reducing the window available to
read the payload.

38-41 are Alejandro's patches from "x86: Address Space Isolation FPU
preparations" (v3, January 2025), revived.

State is moved from the xenheap into the per-domain area for both ASI
and non-ASI domains: VMCB, MSR List, vCPU register frame, and
XSAVE/FPU areas.  Same is true for users of map_domain_pages.  This
protects non-ASI domains from ASI domains.

One key thing to get feedback on is the question below 44's "---":
xstate_init() now panics on hardware whose XSAVE area needs more than
the three pages reserved for it in the vCPU state window.  No current
hardware does.  Should it do more, for instance size the reservation
from the size found at boot, or fall back to xenheap areas on such
hardware?

Note that at the end of this series, PV guests can be given the sparse
directmap; this isolates them from other domains, but doesn't isolate
vCPUs within a domain.  With this series, a PV domain's register
frames and XSAVE areas are also out of reach of domains on the sparse
directmap, whether or not the PV domain itself is on it.

Testing of v6:

- On the series as reworked, on staging 8b0a70ddd29d, before the
  rebase (so without "x86: invoke xenheap_max_mfn() unconditionally"
  and without the smaller review fixes):

  - Builds of xen/ at each of the 44 patches, in seven
    configurations: debug and release, !HVM, !PV, the PV shim, and
    shadow paging, debug and release.  No warnings or errors beyond
    those staging itself gives.

  - On an Intel NUC: whole-tree builds (xen, tools, stubdom, docs) at
    each of the 44, with tools/tests/vpci run.

  - QEMU (TCG) smoke boots at 08 and 44: PV and PVH dom0s (the PVH
    one on HAP and on shadow), and XTF's 32-bit PV and 32-bit HVM
    selftests as dom0, without asi= and with asi=1.  Each boot gets to
    dom0's userspace (or the test's result) with no crash, assertion
    or warning in Xen's log.

  - On the NUC: boots of 08 and 44 without asi= and with asi=1.  In
    each, a 64-bit PV guest is live-migrated to the same host in
    shadow log-dirty mode under a verified workload, with an HVM guest
    beside it; with asi=1, XTF's full suite, 32-bit PV included,
    passes twice (the usual four skips).

- On the rebased series: each patch's tree differs from the tested one
  only by staging's changes and the review fixes in 01, 07, 08 and 16,
  checked file by file.  The same builds and boots are being repeated
  on it; those finished so far have passed.

- The same basic code has been run through XenRT, with the issue
  addressed by 15 (slow dom0 kernel decompression triggering a
  watchdog on large machines) the only issue found.

A dependency graph of the above functionality can be found here:

https://xenbits.xenproject.org/people/gdunlap/asi-series-deps.html

Extending the intra-domain isolation to PV guests would involve
implementing per-vCPU root pagetables for PV guests.  There are draft
implementations of this, but they are quite complicated.

Alejandro Vallejo (4):
  x86/emulator: Refactor FXSAVE_AREA to use wrappers
  x86/mpx: Map/unmap xsave area in read_bndcfgu()
  x86/fpu: Pass explicit xsave areas to fpu_(f)xsave()
  x86/fpu: Pass explicit xsave areas to fpu_(f)xrstor()

George Dunlap (30):
  x86/mm: allocate the per-domain L3 in arch_domain_create()
  x86/mm: have init_xen_l4_slots() take a vCPU in place of the domain
  x86/domain_page: drop redundant is_pv_vcpu() checks
  x86/domain_page: don't unmap a mapcache entry that is not present
  x86/mm: let Xen's page-table walker operate on a given root
  xen/gunzip: process pending softirqs once per deflate block
  x86/mm: add hooks for a sparse view of the directmap
  x86/mm: build and maintain a sparse view of the directmap
  x86/domain_page: key the directmap fast paths on the loaded view
  x86/domain_page: clear a mapcache slot at its last unmap
  x86/mm: run guest contexts on the sparse directmap view
  x86/spec-ctrl: wire the sparse directmap view into the asi= option
  xen/xmalloc: return an emptied region after dropping the pool lock
  x86/mm: split a sparse directmap superpage with a page being freed
  x86/mm: introduce a per-vCPU state window in the perdomain area
  x86/svm: introduce SVM_MAP_VMCB() and SVM_UNMAP_VMCB()
  x86/svm: restore guest debug registers in svm_do_resume()
  x86/svm: drop svm_vmcb_dump()'s paddr
  x86/svm: allocate VMCBs from the domain heap behind the vCPU state
    window
  x86/vmx: move the guest MSR load/save list off always-mapped memory
  x86: access a vCPU's saved register frame through map/unmap helpers
  x86: move the saved register frame behind the vCPU state window
  x86/hvm: move the emulator's operand caches behind the vCPU state
    window
  x86/hvm: clear the vCPU's copy of an emulated I/O request once
    consumed
  x86/domain_page: introduce map_domain_pages()
  x86/shadow: use map_domain_pages() for cross-page emulated writes
  x86/hvm: use map_domain_pages() for multi-frame emulated accesses
  x86/xstate: classify xsave-area seam accesses by failure mode
  x86/domain: restore FPU state after switching to the new page tables
  x86/xstate: move guest XSAVE areas behind the vCPU state window

Roger Pau Monné (10):
  x86/mm: purge unneeded destroy_perdomain_mapping()
  x86/mm: prepare destroy_perdomain_mapping() for per-vCPU perdomain
    areas
  x86/domain_page: drop redundant create_perdomain_mapping() call
  x86/mm: prepare create_perdomain_mapping() for per-vCPU perdomain
    areas
  x86/spec-ctrl: introduce Address Space Isolation command line option
  x86/hvm: introduce per-vCPU L3 page-table
  x86/domain_page: prepare the mapcache for per-vCPU accounting
  x86/domain_page: move struct mapcache_vcpu to struct arch_vcpu
  x86/hvm: introduce per-vCPU mapcache for vCPU-PT domains
  x86/mm: introduce populate_perdomain_mapping()

 docs/misc/xen-command-line.pandoc           |  57 +++
 xen/arch/x86/Kconfig                        |   1 +
 xen/arch/x86/Makefile                       |   1 +
 xen/arch/x86/domain.c                       | 239 ++++++++--
 xen/arch/x86/domain_page.c                  | 461 ++++++++++++++++----
 xen/arch/x86/domctl.c                       |  98 +++--
 xen/arch/x86/hvm/domain.c                   |   6 +-
 xen/arch/x86/hvm/emulate.c                  | 243 ++++++++---
 xen/arch/x86/hvm/hvm.c                      | 122 +++---
 xen/arch/x86/hvm/svm/nestedsvm.c            |  12 +-
 xen/arch/x86/hvm/svm/svm.c                  | 147 +++++--
 xen/arch/x86/hvm/svm/vmcb.c                 |  74 +++-
 xen/arch/x86/hvm/svm/vmcb.h                 |  29 +-
 xen/arch/x86/hvm/vmx/vmcs.c                 | 151 ++++++-
 xen/arch/x86/hvm/vmx/vmx.c                  |   7 +-
 xen/arch/x86/hypercall.c                    |   4 +-
 xen/arch/x86/i387.c                         |  60 ++-
 xen/arch/x86/include/asm/config.h           |  42 +-
 xen/arch/x86/include/asm/domain.h           | 109 ++++-
 xen/arch/x86/include/asm/hvm/emulate.h      |   9 +-
 xen/arch/x86/include/asm/hvm/vcpu.h         |   7 +
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h     |  63 +--
 xen/arch/x86/include/asm/i387.h             |   1 +
 xen/arch/x86/include/asm/mm.h               |  32 +-
 xen/arch/x86/include/asm/sparse-directmap.h |  83 ++++
 xen/arch/x86/include/asm/spec_ctrl.h        |   3 +
 xen/arch/x86/include/asm/xstate.h           |  73 ++--
 xen/arch/x86/mm.c                           | 459 ++++++++++++++++---
 xen/arch/x86/mm/hap/hap.c                   |   2 +-
 xen/arch/x86/mm/shadow/hvm.c                |   6 +-
 xen/arch/x86/mm/shadow/multi.c              |   5 +-
 xen/arch/x86/pv/dom0_build.c                |  11 +-
 xen/arch/x86/pv/domain.c                    |  30 +-
 xen/arch/x86/pv/shim.c                      |   4 +-
 xen/arch/x86/setup.c                        |   4 +
 xen/arch/x86/sparse-directmap.c             | 455 +++++++++++++++++++
 xen/arch/x86/spec_ctrl.c                    | 183 +++++++-
 xen/arch/x86/traps.c                        |  20 +-
 xen/arch/x86/x86_64/mm.c                    |  14 +-
 xen/arch/x86/x86_emulate/blk.c              |  36 +-
 xen/arch/x86/xstate.c                       | 212 ++++++++-
 xen/common/Kconfig                          |  18 +
 xen/common/gzip/gunzip.c                    |   1 +
 xen/common/gzip/inflate.c                   |   1 +
 xen/common/page_alloc.c                     |  51 ++-
 xen/common/xmalloc_tlsf.c                   |  12 +-
 xen/include/xen/domain_page.h               |  21 +
 xen/include/xen/mm.h                        |  40 ++
 48 files changed, 3101 insertions(+), 618 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/sparse-directmap.h
 create mode 100644 xen/arch/x86/sparse-directmap.c


base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470712.1679327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnh-0002kT-Sf; Tue, 03 Nov 2026 23:20:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470712.1679327; Tue, 03 Nov 2026 23:20:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnh-0002kL-PU; Tue, 03 Nov 2026 23:20:21 +0000
Received: by outflank-mailman (input) for mailman id 1470712;
 Tue, 03 Nov 2026 23:20:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONng-0002jw-G5
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:20 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONng-0000000CofD-03Xm;
 Tue, 03 Nov 2026 23:20:20 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnf-0000000EMFa-3ZGa;
 Tue, 03 Nov 2026 23:20:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=vtDia1dYtGzUpfOhr+PQWn9sLmMvXEnKI84jgzczGq4=; b=f31WC/J4b87av2JxQr7luwD5FJ
	3g+TvCXUdZG2ul0X5l1erbH1VuHgfOfRkhpmnsSGsYanPSEATpF7iAg4h4gWr/Bc7l9POIsEN9tu7
	CNch47ImuHvOO35AmXsW+gTqR26TtubTJAH5U7UlmJ07VgwfL9BQ7n+IUXB2DPrajqoU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 01/44] x86/mm: allocate the per-domain L3 in arch_domain_create()
Date: Tue,  3 Nov 2026 17:13:23 -0500
Message-ID: <20261103-asi-hvm-v6-1-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

init_xen_l4_slots() relies on d->arch.perdomain_l3_pg being non-NULL,
or it will fill in a garbage value for slot 260.  Currently, this
is allocated only implicitly, as a side effect of calling
create_perdomain_mapping().  But depending on the specific
circumstances, this may not happen until several hypercalls after the
domain is created.  This is not robust: callers need to keep track of
when exactly certain structures happen to be created to ensure that
init_xen_l4_slots() operates properly.

Since fcf91ce9de66 ("x86/pv: don't populate the GDT/LDT L3 slot at
domain creation"), a PV domain gets its L3 with its first vCPU
(pv_create_gdt_ldt_l1tab()).  Only mapcache_domain_init() makes it
earlier, and release builds skip that unless memory hotplug is enabled
or the host's memory reaches past the part of the directmap PV guests
can see.  So in release builds on most hosts, an L4 that is promoted
before XEN_DOMCTL_max_vcpus has created the domain's vCPUs gets a
slot 260 entry made from a NULL page (0x803e900000000063).  libxl is
unaffected: it creates the vCPUs before it builds or restores a domain.

Allocate it explicitly in arch_domain_create() instead.  Introduce
allocate_perdomain_l3(), which will allocate a page with the
appropriate parameters and zero it.  create_perdomain_mapping() now
requires the L3 to exist, and BUG()s if it does not.

We return a pg rather than setting d->arch.perdomain_l3_pg directly,
because later we'll use the same function to initialize the per-vCPU
perdomain L3.

This removes the need to allocate it semi-implicitly (calling
create_perdomain_mapping() with nr == 0) in hvm_domain_initialise().

Fixes: fcf91ce9de66 ("x86/pv: don't populate the GDT/LDT L3 slot at domain creation")
Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- New in this version, replacing "x86/mm: refuse to promote an L4 while
  the domain has no per-domain L3": allocate the L3 with the domain
  instead (Jan).
---
 xen/arch/x86/domain.c         |  6 ++++++
 xen/arch/x86/hvm/hvm.c        |  5 -----
 xen/arch/x86/include/asm/mm.h |  1 +
 xen/arch/x86/mm.c             | 32 +++++++++++++++-----------------
 4 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 368e4deff3..e67c336b82 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -901,6 +901,12 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
+    if ( (d->arch.perdomain_l3_pg = allocate_perdomain_l3(d)) == NULL )
+    {
+        rc = -ENOMEM;
+        goto fail;
+    }
+
     if ( is_hvm_domain(d) )
     {
         if ( (rc = hvm_domain_initialise(d, config)) != 0 )
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index ef9c7cd057..46d3a520d5 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -620,10 +620,6 @@ int hvm_domain_initialise(struct domain *d,
     INIT_LIST_HEAD(&d->arch.hvm.mmcfg_regions);
     INIT_LIST_HEAD(&d->arch.hvm.msix_tables);
 
-    rc = create_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0, NULL, NULL);
-    if ( rc )
-        goto fail;
-
     hvm_init_cacheattr_region_list(d);
 
     rc = paging_enable(d, PG_refcounts|PG_translate|PG_external);
@@ -731,7 +727,6 @@ int hvm_domain_initialise(struct domain *d,
  fail0:
     hvm_destroy_cacheattr_region_list(d);
     destroy_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0);
- fail:
     hvm_domain_relinquish_resources(d);
     XFREE(d->arch.hvm.io_handler);
     XFREE(d->arch.hvm.pl_time);
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index aa515efbee..e77ac5ccdf 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -606,6 +606,7 @@ int compat_arch_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg);
 #define NIL(type) ((type *)-sizeof(type))
 #define IS_NIL(ptr) (!((uintptr_t)(ptr) + sizeof(*(ptr))))
 
+struct page_info *allocate_perdomain_l3(struct domain *d);
 int create_perdomain_mapping(struct domain *d, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg);
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index a1b7770db0..63e6aadcda 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6235,6 +6235,16 @@ static bool perdomain_l1e_needs_freeing(l1_pgentry_t l1e)
            (_PAGE_PRESENT | _PAGE_AVAIL0);
 }
 
+struct page_info *allocate_perdomain_l3(struct domain *d)
+{
+    struct page_info *pg = alloc_domheap_page(d, MEMF_no_owner);
+
+    if ( pg )
+        clear_domain_page(page_to_mfn(pg));
+
+    return pg;
+}
+
 int create_perdomain_mapping(struct domain *d, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg)
@@ -6248,24 +6258,12 @@ int create_perdomain_mapping(struct domain *d, unsigned long va,
     ASSERT(va >= PERDOMAIN_VIRT_START &&
            va < PERDOMAIN_VIRT_SLOT(PERDOMAIN_SLOTS));
 
-    if ( !d->arch.perdomain_l3_pg )
-    {
-        pg = alloc_domheap_page(d, MEMF_no_owner);
-        if ( !pg )
-            return -ENOMEM;
-        l3tab = __map_domain_page(pg);
-        clear_page(l3tab);
-        d->arch.perdomain_l3_pg = pg;
-        if ( !nr )
-        {
-            unmap_domain_page(l3tab);
-            return 0;
-        }
-    }
-    else if ( !nr )
+    BUG_ON(!d->arch.perdomain_l3_pg);
+
+    if ( !nr )
         return 0;
-    else
-        l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
+
+    l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
 
     ASSERT(!l3_table_offset(va ^ (va + nr * PAGE_SIZE - 1)));
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470713.1679336 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnk-0002yh-2a; Tue, 03 Nov 2026 23:20:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470713.1679336; Tue, 03 Nov 2026 23:20:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnj-0002ya-Vz; Tue, 03 Nov 2026 23:20:23 +0000
Received: by outflank-mailman (input) for mailman id 1470713;
 Tue, 03 Nov 2026 23:20:22 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONni-0002wo-Qw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:22 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONni-0000000CofN-1h5Q;
 Tue, 03 Nov 2026 23:20:22 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnh-0000000EMFa-2DVQ;
 Tue, 03 Nov 2026 23:20:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=3VJN5UNE9/z4qrpuleJ1/OW1QHRZAWYrv6m65EedvqM=; b=m5v61KqkHzWattc6yApMmTdIUu
	6NeSqowudPi3AnVvZ/xY6Cq+vSWsWY3OVoHpwiDFPoCAz3uYlaIhjFAI/Sx70UK4rnowrxH+0GIRm
	Zg3t6wdFp7T8ZmxHat404orQL+sxFkYrULxgRBRRXPzBz+pN7DmgU2d7tK3FzglXW6hA=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 03/44] x86/mm: prepare destroy_perdomain_mapping() for per-vCPU perdomain areas
Date: Tue,  3 Nov 2026 17:13:25 -0500
Message-ID: <20261103-asi-hvm-v6-3-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

We want to change per-domain mappings to be per-vCPU mappings.  In
preparation for that, we want to arrange that
destroy_perdomain_mapping() work either with a single perdomain area,
or with a per-vCPU perdomain area.

The one remaining caller, free_compat_arg_xlat(), is already in a vCPU
context, so we just need to change the parameter from a domain pointer
to a vCPU pointer.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Roger Pau Monné <roger@xenproject.org>
---
Changes in v4:
- Say "No functional change." (Roger).

Changes in v3:
- Rebased onto staging without the GDT/LDT conversions (for the
  HVM-only series): free_compat_arg_xlat() is the only caller left.
- Drop the linear-page-table fast path altogether (Jan): its only user
  would have been guest-driven LDT teardown, and without it the
  function does not depend on the linear mapping being available.

Changes in v2:
- Added to the series

Changes since the previously posted version:
- The fast path is gone (v3), and with it the previously posted
  version's sync_local_execstate() call.
- Reword and retitle for clarity (was: "x86/mm: switch
  destroy_perdomain_mapping() parameter from domain to vCPU").
---
 xen/arch/x86/include/asm/mm.h | 2 +-
 xen/arch/x86/mm.c             | 3 ++-
 xen/arch/x86/x86_64/mm.c      | 2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index e77ac5ccdf..1cdd30f7e2 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -610,7 +610,7 @@ struct page_info *allocate_perdomain_l3(struct domain *d);
 int create_perdomain_mapping(struct domain *d, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg);
-void destroy_perdomain_mapping(struct domain *d, unsigned long va,
+void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr);
 void free_perdomain_mappings(struct domain *d);
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 63e6aadcda..c784c4f726 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6356,10 +6356,11 @@ int create_perdomain_mapping(struct domain *d, unsigned long va,
     return rc;
 }
 
-void destroy_perdomain_mapping(struct domain *d, unsigned long va,
+void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr)
 {
     const l3_pgentry_t *l3tab, *pl3e;
+    const struct domain *d = v->domain;
 
     ASSERT(va >= PERDOMAIN_VIRT_START &&
            va < PERDOMAIN_VIRT_SLOT(PERDOMAIN_SLOTS));
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 8eadab7933..f467ed426b 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -739,7 +739,7 @@ int setup_compat_arg_xlat(struct vcpu *v)
 
 void free_compat_arg_xlat(struct vcpu *v)
 {
-    destroy_perdomain_mapping(v->domain, ARG_XLAT_START(v),
+    destroy_perdomain_mapping(v, ARG_XLAT_START(v),
                               PFN_UP(COMPAT_ARG_XLAT_SIZE));
 }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470717.1679363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONno-0003al-IP; Tue, 03 Nov 2026 23:20:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470717.1679363; Tue, 03 Nov 2026 23:20:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONno-0003a3-Di; Tue, 03 Nov 2026 23:20:28 +0000
Received: by outflank-mailman (input) for mailman id 1470717;
 Tue, 03 Nov 2026 23:20:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnm-0003QW-Sc
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:26 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnm-0000000Cofn-2hMV;
 Tue, 03 Nov 2026 23:20:26 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnm-0000000EMFa-0sJu;
 Tue, 03 Nov 2026 23:20:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=GsQusdW8CwK9lWg0WTbN8UcrqKWkfEhBlrYNLpqfu3M=; b=5bjzRnRQ0QOdV3xF/OMMo+7ue+
	xi2SKeb1Z3cpSjbaLKqm8cxu+7oxpm6HWtF0YEbscdUMd9An6W2Vz33lI6eSjbWmUlqCLU/vqLkdZ
	DdxRzGgMWnKIldOWcoZm2dar9hr58i3DZBQpjjhtRze6SYGj9ZvzvB+5whIjTYvM5CQU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 06/44] x86/spec-ctrl: introduce Address Space Isolation command line option
Date: Tue,  3 Nov 2026 17:13:28 -0500
Message-ID: <20261103-asi-hvm-v6-6-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

Introduce the `asi=` command line option, and the opt_vcpu_pt_hvm and
opt_vcpu_pt_hwdom knobs plus the per-domain d->arch.asi.vcpu_pt setting
they control.  The option is introduced ahead of the functionality it
enables, so that the newly added code can be keyed on it from the start;
all knobs currently default to off, and any use of the option, `asi=0`
included, adds a boot-time warning that the feature is not functional
and is meant for development only.

The mechanisms this option controls apply to HVM domains: an HVM vCPU
already runs on its own monitor table, so giving each vCPU its own
per-domain area needs no work at context switch.  d->arch.asi.vcpu_pt
is therefore only ever set for HVM domains, a PVH hardware domain
included; PV domains, a PV hardware domain included, are unaffected.

Besides the plain boolean, `pv=`, `hvm=` and `dom0=` select the features
for PV domains or HVM domains other than the hardware domain, or for the
hardware domain, PV or PVH.  None of the features applies to PV domains,
so `pv=` has no effect beyond a boot-log line saying it is ignored, and
`dom0=` acts on a PVH hardware domain only.

The boot log gains "ASI features for ..." lines for Dom0 and HVM
domains, so hardware-domain-only configurations remain visible.

Further per-mechanism tokens arrive with their mechanisms in later
patches.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Rename opt_pvh_vcpu_pt_hwdom back to opt_vcpu_pt_hwdom: that it acts
  on a PVH hardware domain only is a limitation of the implementation,
  not of the design (Roger).
- pv= logs that it is ignored (Roger).
- parse_asi() adds the development warning, so any use of asi= gives
  it and later sub-options need not extend a condition (Roger).
- print_details(): IS_ENABLED(CONFIG_HVM) rather than #ifdef (Roger).

Changes in v4:
- Docs: "domains" throughout, not "guests" (Roger).
- Group the per-domain settings as one-bit fields of d->arch.asi
  (Roger).
- Rename opt_vcpu_pt_hwdom to opt_pvh_vcpu_pt_hwdom: it acts on a PVH
  hardware domain only (Jan).
- parse_asi(): break in the success branch and fall through to
  default:, rather than a default: label after an else (MISRA C:2012
  Rule 16.2; Jan).
- Message: enabling a knob adds a boot-time warning; it does not taint
  (Roger).
- Add the pv= and dom0= sub-options here, beside hvm= (Roger).

Changes in v3:
- HVM only: drop the PV knob and its interaction with XPTI.  vCPU-PT
  applies to HVM domains and to a PVH hardware domain; the Dom0 boot
  log line says None for a PV one.

Changes in v2:
- Added to the series

Changes since the previously posted version:
- Include the hardware domain in the development warning and the boot
   log summary.
- Make the opt_vcpu_pt_* knobs plain booleans preinitialised to false,
   dropping the late -1 resolution.
- Documentation: mention possible protection against unmitigated
   attacks, and state that hvm= does not affect the hardware domain.
- Rewrite the commit message.
---
 docs/misc/xen-command-line.pandoc    | 29 ++++++++++
 xen/arch/x86/include/asm/domain.h    |  6 ++
 xen/arch/x86/include/asm/spec_ctrl.h |  2 +
 xen/arch/x86/spec_ctrl.c             | 87 ++++++++++++++++++++++++++++
 4 files changed, 124 insertions(+)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index a6f08463d1..839d06da26 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -202,6 +202,35 @@ to appropriate auditing by Xen.  Argo is disabled by default.
     This option is disabled by default, to protect domains from a DoS by a
     buggy or malicious other domain spamming the ring.
 
+### asi (x86)
+> `= List of [ <bool>, {pv,hvm,dom0}=<bool>,
+>              vcpu-pt=<bool> | vcpu-pt=hvm=<bool> ]`
+
+> Default: `false`
+
+Offers control over whether the hypervisor will engage in Address Space
+Isolation, by not having potentially sensitive information permanently mapped
+in the VMM page-tables.  Using this option might avoid the need to apply
+mitigations for certain speculative related attacks, at the cost of mapping
+sensitive information on-demand.  It might also offer some protection against
+unmitigated speculation-related attacks.
+
+The mechanisms currently implemented apply to HVM domains, including a PVH
+hardware domain.  PV domains, including a PV hardware domain, are unaffected.
+
+* `pv=`, `hvm=` and `dom0=` enable the features for PV domains or HVM domains
+  other than the hardware domain, or for the hardware domain, PV or PVH.  The
+  plain boolean does all three: `asi=1,dom0=0` leaves the hardware domain
+  out.  The forms naming no domain type (an un-suffixed `vcpu-pt=<bool>`)
+  cover the hardware domain too.
+
+**WARNING: manual de-selection of enabled options will invalidate any
+protection offered by the feature.  The fine grained options provided below
+are meant to be used for debugging purposes only.**
+
+* `vcpu-pt` gives each vCPU its own per-domain area: the per-domain slot of
+  each vCPU's monitor table maps a region private to that vCPU.
+
 ### asid (x86)
 > `= <boolean>`
 
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 212daae1f5..12f79feb42 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -474,6 +474,12 @@ struct arch_domain
     /* Don't unconditionally inject #GP for unhandled MSRs. */
     bool msr_relaxed;
 
+    /* Fine grained ASI related options. */
+    struct {
+        /* Give each vCPU its own per-domain area (HVM only). */
+        bool vcpu_pt:1;
+    } asi;
+
     /* Emulated devices enabled bitmap. */
     uint32_t emulation_flags;
 } __cacheline_aligned;
diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/asm/spec_ctrl.h
index 8f82533c41..b62229ab5d 100644
--- a/xen/arch/x86/include/asm/spec_ctrl.h
+++ b/xen/arch/x86/include/asm/spec_ctrl.h
@@ -87,6 +87,8 @@ extern uint8_t default_scf;
 
 extern int8_t opt_xpti_hwdom, opt_xpti_domu;
 
+extern bool opt_vcpu_pt_hwdom, opt_vcpu_pt_hvm;
+
 extern bool cpu_has_bug_l1tf;
 extern int8_t opt_pv_l1tf_hwdom, opt_pv_l1tf_domu;
 extern bool opt_bp_spec_reduce;
diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c
index bc8538a56f..8797523a62 100644
--- a/xen/arch/x86/spec_ctrl.c
+++ b/xen/arch/x86/spec_ctrl.c
@@ -86,6 +86,10 @@ bool __ro_after_init opt_bp_spec_reduce = true;
 
 static bool __initdata opt_ibpb_alt;
 
+/* Give each vCPU of an HVM domain its own per-domain area (vCPU-PT). */
+bool __ro_after_init opt_vcpu_pt_hvm;
+bool __ro_after_init opt_vcpu_pt_hwdom;
+
 static int __init cf_check parse_spec_ctrl(const char *s)
 {
     const char *ss;
@@ -487,6 +491,80 @@ static int __init cf_check parse_pv_l1tf(const char *s)
 }
 custom_param("pv-l1tf", parse_pv_l1tf);
 
+static int __init cf_check parse_asi(const char *s)
+{
+    static bool __initdata warned;
+    const char *ss;
+    int val, rc = 0;
+
+    if ( !warned )
+    {
+        warned = true;
+        warning_add(
+            "Address Space Isolation is not functional, this option is\n"
+            "intended to be used only for development purposes.\n");
+    }
+
+    /* Interpret 'asi' alone in its positive boolean form. */
+    if ( *s == '\0' )
+        opt_vcpu_pt_hwdom = opt_vcpu_pt_hvm = true;
+
+    do {
+        ss = strchr(s, ',');
+        if ( !ss )
+            ss = strchr(s, '\0');
+
+        val = parse_bool(s, ss);
+        switch ( val )
+        {
+        case 0:
+        case 1:
+            opt_vcpu_pt_hwdom = opt_vcpu_pt_hvm = val;
+            break;
+
+        default:
+            if ( (val = parse_boolean("pv", s, ss)) >= 0 )
+                printk(XENLOG_WARNING
+                       "No ASI feature applies to PV domains - ignoring 'asi=%.*s' setting\n",
+                       (int)(ss - s), s);
+            else if ( (val = parse_boolean("hvm", s, ss)) >= 0 )
+                opt_vcpu_pt_hvm = val;
+            else if ( (val = parse_boolean("dom0", s, ss)) >= 0 )
+                opt_vcpu_pt_hwdom = val;
+            else if ( (val = parse_boolean("vcpu-pt", s, ss)) != -1 )
+            {
+                switch ( val )
+                {
+                case 1:
+                case 0:
+                    opt_vcpu_pt_hwdom = opt_vcpu_pt_hvm = val;
+                    break;
+
+                case -2:
+                    s += strlen("vcpu-pt=");
+                    if ( (val = parse_boolean("hvm", s, ss)) >= 0 )
+                    {
+                        opt_vcpu_pt_hvm = val;
+                        break;
+                    }
+                    fallthrough;
+                default:
+                    rc = -EINVAL;
+                    break;
+                }
+            }
+            else if ( *s )
+                rc = -EINVAL;
+            break;
+        }
+
+        s = ss + 1;
+    } while ( *ss );
+
+    return rc;
+}
+custom_param("asi", parse_asi);
+
 static void __init print_details(enum ind_thunk thunk)
 {
     unsigned int _7d0 = 0, _7d2 = 0, e8b = 0, e21a = 0, e21c = 0, max = 0, tmp;
@@ -680,6 +758,12 @@ static void __init print_details(enum ind_thunk thunk)
            opt_pv_l1tf_hwdom ? "enabled"  : "disabled",
            opt_pv_l1tf_domu  ? "enabled"  : "disabled");
 #endif
+
+    printk("  ASI features for Dom0:%s\n",
+           opt_dom0_pvh && opt_vcpu_pt_hwdom ? " vCPU-PT" : " None");
+    if ( IS_ENABLED(CONFIG_HVM) )
+        printk("  ASI features for HVM VMs:%s\n",
+               opt_vcpu_pt_hvm               ? " vCPU-PT" : " None");
 }
 
 static bool __init check_smt_enabled(void)
@@ -1866,6 +1950,9 @@ void spec_ctrl_init_domain(struct domain *d)
     if ( pv )
         d->arch.pv.xpti = is_hardware_domain(d) ? opt_xpti_hwdom
                                                 : opt_xpti_domu;
+
+    d->arch.asi.vcpu_pt = !pv && (is_hardware_domain(d) ? opt_vcpu_pt_hwdom
+                                                        : opt_vcpu_pt_hvm);
 }
 
 void __init init_speculation_mitigations(void)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470715.1679353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnn-0003Rc-Lg; Tue, 03 Nov 2026 23:20:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470715.1679353; Tue, 03 Nov 2026 23:20:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnn-0003RO-IG; Tue, 03 Nov 2026 23:20:27 +0000
Received: by outflank-mailman (input) for mailman id 1470715;
 Tue, 03 Nov 2026 23:20:25 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnl-0003Ok-K9
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:25 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnl-0000000Coff-0TD7;
 Tue, 03 Nov 2026 23:20:25 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnj-0000000EMFa-3OKN;
 Tue, 03 Nov 2026 23:20:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=ULtiu4aFlCDZSTihWE2R472MpYJVuVy4Xwfo4YXyEfQ=; b=ca0ULvjt+26YeVsKccI+kqPVYi
	TCTjshxtmN45+mwavA28NEIDHyW/i/Yb2DsiPUbGqza64fCLUh0d/TTdF4dnOqZ/gvq7h3KIEijvw
	Oouq6luYB0dIgCulc19mxuV1j+dMKRIYFLmIKzP8x8biR/fmyw3GxAcnpRmWYFOmh3J8=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 05/44] x86/mm: prepare create_perdomain_mapping() for per-vCPU perdomain areas
Date: Tue,  3 Nov 2026 17:13:27 -0500
Message-ID: <20261103-asi-hvm-v6-5-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

We want to change per-domain mappings to be per-vCPU mappings.  In
preparation for that, we want to arrange that
create_perdomain_mapping() work either with a single perdomain area,
or with a per-vCPU perdomain area.

The remaining callers are already in a vCPU context.  This is no
accident: much of the perdomain area has always been laid out in
per-vCPU slices -- each vCPU has its own GDT/LDT window and its own
COMPAT_ARG_XLAT pages -- and each vCPU's slice is set up as that vCPU
is created.  For these callers, we just need to change the parameter
from a domain pointer to a vCPU pointer.  Once the perdomain area
itself becomes per-vCPU, the same calls will populate the owning
vCPU's own area rather than slices of a shared one.

Note that we cannot yet do a parallel movement of
free_perdomain_mappings(): the per-domain page-table hierarchy is
still a single domain-wide structure shared by all vCPUs, so tearing
it down from a per-vCPU path would pull the mappings out from under
sibling vCPUs (e.g. on a partially failed, retryable
XEN_DOMCTL_max_vcpus), and vCPU-create error paths can rely on domain
destruction to free a partially set up hierarchy.  Once a domain's
area is per-vCPU, a later change gives its vCPUs a teardown of their
own; the domain-wide teardown stays for domains with a shared area, PV
ones included.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Rebase over "x86/mm: allocate the per-domain L3 in
  arch_domain_create()".
- No longer add an implicit L3 creation in arch_vcpu_create().

Changes in v5:
- Message: the domain-wide mapcache is one pool, not per-vCPU windows:
  drop it from the per-vCPU slices, and say "much of" the area.

Changes in v4:
- Message: drop a sentence repeating its paragraph, and say that the
  domain-wide teardown stays for domains with a shared area (Roger).
- End the comment in arch_vcpu_create() at the colon (Roger).

Changes in v3:
- Rebased onto staging without the GDT/LDT conversions (for the
  HVM-only series): the capture parameters stay, as the PV GDT/LDT
  stash still uses them.

Changes in v2:
- Added to the series

Changes since the previously posted version:
- Keep free_perdomain_mappings() (and hence perdomain teardown)
  domain-scoped.
- Keep the idle domain without a perdomain area.
- Retitle (was: "x86/mm: switch {create,destroy}_perdomain_mapping()
  domain parameter to vCPU"); destroy_perdomain_mapping() was switched
  in a separate patch.
- Split the removal of mapcache_domain_init()'s redundant
  create_perdomain_mapping() call into its own (preceding) patch.
---
 xen/arch/x86/domain_page.c    | 6 +++---
 xen/arch/x86/include/asm/mm.h | 2 +-
 xen/arch/x86/mm.c             | 3 ++-
 xen/arch/x86/pv/domain.c      | 2 +-
 xen/arch/x86/x86_64/mm.c      | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index f02be1675b..f3e65e2d44 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -260,15 +260,15 @@ int mapcache_vcpu_init(struct vcpu *v)
     if ( ents > dcache->entries )
     {
         /* Populate page tables. */
-        int rc = create_perdomain_mapping(d, MAPCACHE_VIRT_START, ents,
+        int rc = create_perdomain_mapping(v, MAPCACHE_VIRT_START, ents,
                                           NIL(l1_pgentry_t *), NULL);
 
         /* Populate bit maps. */
         if ( !rc )
-            rc = create_perdomain_mapping(d, (unsigned long)dcache->inuse,
+            rc = create_perdomain_mapping(v, (unsigned long)dcache->inuse,
                                           nr, NULL, NIL(struct page_info *));
         if ( !rc )
-            rc = create_perdomain_mapping(d, (unsigned long)dcache->garbage,
+            rc = create_perdomain_mapping(v, (unsigned long)dcache->garbage,
                                           nr, NULL, NIL(struct page_info *));
 
         if ( rc )
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 1cdd30f7e2..e85a6db203 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -607,7 +607,7 @@ int compat_arch_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg);
 #define IS_NIL(ptr) (!((uintptr_t)(ptr) + sizeof(*(ptr))))
 
 struct page_info *allocate_perdomain_l3(struct domain *d);
-int create_perdomain_mapping(struct domain *d, unsigned long va,
+int create_perdomain_mapping(struct vcpu *v, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg);
 void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index c784c4f726..61bd4aa02a 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6245,10 +6245,11 @@ struct page_info *allocate_perdomain_l3(struct domain *d)
     return pg;
 }
 
-int create_perdomain_mapping(struct domain *d, unsigned long va,
+int create_perdomain_mapping(struct vcpu *v, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg)
 {
+    struct domain *d = v->domain;
     struct page_info *pg;
     l3_pgentry_t *l3tab;
     l2_pgentry_t *l2tab;
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 28ea0742ab..f3c711b85b 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -313,7 +313,7 @@ int switch_compat(struct domain *d)
 
 static int pv_create_gdt_ldt_l1tab(struct vcpu *v)
 {
-    return create_perdomain_mapping(v->domain, GDT_VIRT_START(v),
+    return create_perdomain_mapping(v, GDT_VIRT_START(v),
                                     1U << GDT_LDT_VCPU_SHIFT,
                                     v->domain->arch.pv.gdt_ldt_l1tab,
                                     NULL);
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index f467ed426b..7b04537066 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -732,7 +732,7 @@ void __init zap_low_mappings(void)
 
 int setup_compat_arg_xlat(struct vcpu *v)
 {
-    return create_perdomain_mapping(v->domain, ARG_XLAT_START(v),
+    return create_perdomain_mapping(v, ARG_XLAT_START(v),
                                     PFN_UP(COMPAT_ARG_XLAT_SIZE),
                                     NULL, NIL(struct page_info *));
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470719.1679387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnq-0004Aa-Ij; Tue, 03 Nov 2026 23:20:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470719.1679387; Tue, 03 Nov 2026 23:20:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnq-00049E-AM; Tue, 03 Nov 2026 23:20:30 +0000
Received: by outflank-mailman (input) for mailman id 1470719;
 Tue, 03 Nov 2026 23:20:29 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnp-0003yV-HG
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:29 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnp-0000000CogD-1FPr;
 Tue, 03 Nov 2026 23:20:29 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnn-0000000EMFa-3ykc;
 Tue, 03 Nov 2026 23:20:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=GNHcHVUgW1gDmGbSBl5sXl7NRkq4PP8PDdfXE6DiBQQ=; b=JB6IAy9ohjxqSmTsoSvQHCdgoJ
	zLWCcvVMj31ICbgua5mHcdTp/Y7qosaP80Yp9yYdWcki15/Ug2F5KJCdP9cDcg6TOGhuKByIKyTgW
	NRvun3gQ5IiETjM467nrCS7H32G31aBunR/NYOHOEvptjMVtWor+jwNHOtovU2TvLUq8=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 08/44] x86/hvm: introduce per-vCPU L3 page-table
Date: Tue,  3 Nov 2026 17:13:30 -0500
Message-ID: <20261103-asi-hvm-v6-8-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

Currently all of a domain's vCPUs share its per-domain area: one L3,
referenced from every root page-table associated with the domain, so
every mapping in it is visible to every vCPU of the domain.  Much of the
area is already laid out in per-vCPU slices (each vCPU's COMPAT_ARG_XLAT
pages, and for PV each vCPU's GDT/LDT window), but the visibility is
domain-wide.  Meanwhile, much of the per-vCPU state Xen maintains -- the
VMCB, the VMX MSR load/save areas, FPU/XSAVE state -- lives in
always-mapped memory.

For HVM domains, allow each vCPU a per-domain area of its own instead
("vCPU-PT").  HVM monitor tables are already per-vCPU, so this needs
nothing at context switch: every monitor table carries its vCPU's own L3
from creation, and the per-vCPU mappings are isolated from other running
vCPUs at once.  We will later build on this, adding a per-vCPU mapcache
and a per-vCPU state window, into which we can move the vCPU state
mentioned above.

Add pervcpu_l3_pg to the arch_vcpu struct, to correspond to the
perdomain_l3_pg in the domain struct.  (We retain both so that vCPU-PT
can be chosen domain by domain; PV domains always use the domain-wide
L3.)  Modify arch_domain_create() to only allocate a per-domain L3 if
vcpu_pt is not enabled for the domain; modify arch_vcpu_create() to
allocate a per-vCPU L3 if it is.

In {create,destroy}_perdomain_mapping(), if d->arch.asi.vcpu_pt, use
pervcpu_l3_pg as the per-domain L3; otherwise, use perdomain_l3_pg.
Introduce a helper, perdomain_l3(), to consistently choose the correct
one.

Introduce free_pervcpu_mappings() to free this tree, called from
arch_vcpu_destroy() on normal teardown.  Since the vcpu structure holds
the only reference to pervcpu_l3_pg, arch_vcpu_create() must also call
it on its error paths: nothing else records the allocation once the
vcpu struct is torn down.  The domain-wide free_perdomain_mappings()
keeps covering non-vCPU-PT domains.

init_xen_l4_slots() is given the vCPU that a table is private to.
Have it install that vCPU's perdomain_l3() in slot 260.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-fable-5-1, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Port to new explicit L3 allocation regime.

Changes in v5:
- init_xen_l4_slots()'s BUG_ON() follows slot 260 to perdomain_l3().
- Message: all of a domain's vCPUs share its per-domain area; the
  mapcache is not among the per-vCPU slices; the mode is "vCPU-PT".
  The comment above init_xen_l4_slots() names perdomain_l3(v) and the
  domain-wide L3.

Changes in v4:
- Rebase over earlier changes
- d->arch.vcpu_pt is now d->arch.asi.vcpu_pt.
- init_xen_l4_slots() taking a vCPU in place of the domain, and
  promote_l4_table() failing while the domain has none, are now patches
  of their own (Roger, Jan).
- Drop the fail_early label: every cleanup step after fail: is safe
  before its setup has run (Roger).
- free_pervcpu_mappings(): clear the pointer, then free, as XFREE()
  does (Roger).
- Likewise in free_perdomain_mappings().

Changes in v3:
- HVM only: PV domains keep the domain-wide area, so the PV parts go
  (the single-vCPU limit, the shadow refusals, the XPTI slot install).
  init_xen_l4_slots() takes the vCPU as an extra, optional argument
  rather than in place of the domain, so PV guest L4s, which no vCPU
  owns, are promoted exactly as before.
- Retitle (was: "x86/mm: introduce per-vCPU L3 page-table").
- free_compat_arg_xlat()'s comment names free_pervcpu_mappings() as the
  teardown for a vCPU-PT domain.

Changes in v2:
- Added to the series

Changes since the previously posted version:
- Expand the commit message with the motivation and the design
  rationale.
- Keep domain-wide freeing intact and introduce a vCPU-scoped
  free_pervcpu_mappings() instead of re-scoping
  free_perdomain_mappings(); fix the arch_vcpu_create() error-path
  leaks of a partially built per-vCPU hierarchy.
- Add a perdomain_l3() helper for the root selection, rather than
  open-coding the vcpu_pt choice (and testing both root pointers) at
  each site.
---
 xen/arch/x86/domain.c             | 17 +++++++--
 xen/arch/x86/include/asm/domain.h |  4 ++
 xen/arch/x86/include/asm/mm.h     |  2 +
 xen/arch/x86/mm.c                 | 61 +++++++++++++++++++++++--------
 4 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 173daf9000..46ca945b48 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -511,16 +511,23 @@ int arch_vcpu_create(struct vcpu *v)
 
     v->arch.flags = TF_kernel_mode;
 
+    if ( d->arch.asi.vcpu_pt &&
+         (v->arch.pervcpu_l3_pg = allocate_perdomain_l3(d)) == NULL )
+    {
+        rc = -ENOMEM;
+        goto fail;
+    }
+
     rc = mapcache_vcpu_init(v);
     if ( rc )
-        return rc;
+        goto fail;
 
     if ( !is_idle_domain(d) )
     {
         paging_vcpu_init(v);
 
         if ( (rc = vcpu_init_fpu(v)) != 0 )
-            return rc;
+            goto fail;
 
         vmce_init_vcpu(v);
 
@@ -568,6 +575,7 @@ int arch_vcpu_create(struct vcpu *v)
     vcpu_destroy_fpu(v);
     xfree(v->arch.msrs);
     v->arch.msrs = NULL;
+    free_pervcpu_mappings(v);
 
     return rc;
 }
@@ -588,6 +596,8 @@ void arch_vcpu_destroy(struct vcpu *v)
         pv_vcpu_destroy(v);
     else
         ASSERT_UNREACHABLE();
+
+    free_pervcpu_mappings(v);
 }
 
 int arch_sanitise_domain_config(const struct xen_domctl_createdomain *config)
@@ -901,7 +911,8 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
-    if ( (d->arch.perdomain_l3_pg = allocate_perdomain_l3(d)) == NULL )
+    if ( !d->arch.asi.vcpu_pt &&
+         (d->arch.perdomain_l3_pg = allocate_perdomain_l3(d)) == NULL )
     {
         rc = -ENOMEM;
         goto fail;
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 12f79feb42..4140a92f15 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -332,6 +332,7 @@ struct monitor_write_data {
 
 struct arch_domain
 {
+    /* Domain-wide L3 for the per-domain slot; NULL in a vCPU-PT domain. */
     struct page_info *perdomain_l3_pg;
 
     /* I/O-port admin-specified access capabilities. */
@@ -688,6 +689,9 @@ struct arch_vcpu
 
     struct vcpu_msrs *msrs;
 
+    /* Per-vCPU L3 for the per-domain slot; NULL in a non-vCPU-PT domain. */
+    struct page_info *pervcpu_l3_pg;
+
     struct {
         bool next_interrupt_enabled;
     } monitor;
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 0d2cecf1c7..7b9a0f561d 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -369,6 +369,7 @@ int devalidate_page(struct page_info *page, unsigned long type,
                          int preemptible);
 
 void init_xen_pae_l2_slots(l2_pgentry_t *l2t, const struct domain *d);
+struct page_info *perdomain_l3(const struct vcpu *v);
 void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
                        const struct vcpu *v, mfn_t sl4mfn, bool ro_mpt);
 void init_xen_l4_slots_pv(l4_pgentry_t *l4t, mfn_t l4mfn,
@@ -615,6 +616,7 @@ int create_perdomain_mapping(struct vcpu *v, unsigned long va,
 void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr);
 void free_perdomain_mappings(struct domain *d);
+void free_pervcpu_mappings(struct vcpu *v);
 
 void __iomem *ioremap_wc(paddr_t pa, size_t len);
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 10106d9f03..f52c72a605 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1682,6 +1682,18 @@ static int promote_l3_table(struct page_info *page)
 }
 #endif /* CONFIG_PV */
 
+/*
+ * The root of the per-domain area in use by @v: the vCPU's own L3 for a
+ * vCPU-PT domain, the domain-wide one otherwise.
+ */
+struct page_info *perdomain_l3(const struct vcpu *v)
+{
+    const struct domain *d = v->domain;
+
+    return d->arch.asi.vcpu_pt ? v->arch.pervcpu_l3_pg
+                               : d->arch.perdomain_l3_pg;
+}
+
 /*
  * Fill an L4 with Xen entries.
  *
@@ -1780,8 +1792,11 @@ void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
                        const struct vcpu *v, mfn_t sl4mfn, bool ro_mpt)
 {
     const struct domain *d = v->domain;
+    struct page_info *l3_pg = perdomain_l3(v);
 
-    _init_xen_l4_slots(l4t, l4mfn, d, d->arch.perdomain_l3_pg, sl4mfn, ro_mpt);
+    BUG_ON(!l3_pg);
+
+    _init_xen_l4_slots(l4t, l4mfn, d, l3_pg, sl4mfn, ro_mpt);
 }
 
 /*
@@ -6275,7 +6290,7 @@ int create_perdomain_mapping(struct vcpu *v, unsigned long va,
                              struct page_info **ppg)
 {
     struct domain *d = v->domain;
-    struct page_info *pg;
+    struct page_info *pg, *l3_pg = perdomain_l3(v);
     l3_pgentry_t *l3tab;
     l2_pgentry_t *l2tab;
     l1_pgentry_t *l1tab;
@@ -6284,12 +6299,12 @@ int create_perdomain_mapping(struct vcpu *v, unsigned long va,
     ASSERT(va >= PERDOMAIN_VIRT_START &&
            va < PERDOMAIN_VIRT_SLOT(PERDOMAIN_SLOTS));
 
-    BUG_ON(!d->arch.perdomain_l3_pg);
+    BUG_ON(!l3_pg);
 
     if ( !nr )
         return 0;
 
-    l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
+    l3tab = __map_domain_page(l3_pg);
 
     ASSERT(!l3_table_offset(va ^ (va + nr * PAGE_SIZE - 1)));
 
@@ -6386,16 +6401,16 @@ void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr)
 {
     const l3_pgentry_t *l3tab, *pl3e;
-    const struct domain *d = v->domain;
+    struct page_info *l3_pg = perdomain_l3(v);
 
     ASSERT(va >= PERDOMAIN_VIRT_START &&
            va < PERDOMAIN_VIRT_SLOT(PERDOMAIN_SLOTS));
     ASSERT(!nr || !l3_table_offset(va ^ (va + nr * PAGE_SIZE - 1)));
 
-    if ( !d->arch.perdomain_l3_pg )
+    if ( !l3_pg )
         return;
 
-    l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
+    l3tab = __map_domain_page(l3_pg);
     pl3e = l3tab + l3_table_offset(va);
 
     if ( l3e_get_flags(*pl3e) & _PAGE_PRESENT )
@@ -6434,16 +6449,11 @@ void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
     unmap_domain_page(l3tab);
 }
 
-void free_perdomain_mappings(struct domain *d)
+static void free_perdomain_l3(struct page_info *l3pg)
 {
-    l3_pgentry_t *l3tab;
+    l3_pgentry_t *l3tab = __map_domain_page(l3pg);
     unsigned int i;
 
-    if ( !d->arch.perdomain_l3_pg )
-        return;
-
-    l3tab = __map_domain_page(d->arch.perdomain_l3_pg);
-
     for ( i = 0; i < PERDOMAIN_SLOTS; ++i)
         if ( l3e_get_flags(l3tab[i]) & _PAGE_PRESENT )
         {
@@ -6479,8 +6489,29 @@ void free_perdomain_mappings(struct domain *d)
         }
 
     unmap_domain_page(l3tab);
-    free_domheap_page(d->arch.perdomain_l3_pg);
+    free_domheap_page(l3pg);
+}
+
+void free_perdomain_mappings(struct domain *d)
+{
+    struct page_info *l3pg = d->arch.perdomain_l3_pg;
+
+    if ( !l3pg )
+        return;
+
     d->arch.perdomain_l3_pg = NULL;
+    free_perdomain_l3(l3pg);
+}
+
+void free_pervcpu_mappings(struct vcpu *v)
+{
+    struct page_info *l3pg = v->arch.pervcpu_l3_pg;
+
+    if ( !l3pg )
+        return;
+
+    v->arch.pervcpu_l3_pg = NULL;
+    free_perdomain_l3(l3pg);
 }
 
 static void write_sss_token(unsigned long *ptr)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470718.1679380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnp-000423-Uu; Tue, 03 Nov 2026 23:20:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470718.1679380; Tue, 03 Nov 2026 23:20:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnp-00041h-O5; Tue, 03 Nov 2026 23:20:29 +0000
Received: by outflank-mailman (input) for mailman id 1470718;
 Tue, 03 Nov 2026 23:20:28 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONno-0003YQ-4G
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:28 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnn-0000000Cog2-2oTn;
 Tue, 03 Nov 2026 23:20:27 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnn-0000000EMFa-2ElZ;
 Tue, 03 Nov 2026 23:20:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=SDb1ZxgXV65R0hZws53PbRDvNFXyUOAfc8HwZa5MEvU=; b=rRG6C2ZLVRCc123dGWHhe/NrTD
	xjKc8krAbf/HysLL8U/tZlG9RpnYBxdTARxYTQq5GBaLrcbNdWcZBr5Z9RAJC2kws3NBf9pUlH7BC
	w/msqzI4mS1BQj8/ImQ0fnQODZ1Q5HD0hubX/pnfRYcZSUMhTSWIRzLof4BzDsN68vkk=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Tim Deegan <tim@xen.org>
Subject: [PATCH v6 07/44] x86/mm: have init_xen_l4_slots() take a vCPU in place of the domain
Date: Tue,  3 Nov 2026 17:13:29 -0500
Message-ID: <20261103-asi-hvm-v6-7-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A later change gives the vCPUs of some domains per-domain areas of
their own, and slot 260 of a table private to one vCPU must then hold
that vCPU's L3.  Eventually, all guest types may be able to support
either per-domain L3s or per-vCPU L3s.

HVM domains always have one root page table per vCPU; this does not
change.  So init_xen_l4_slots() needs the appropriate L3 at vCPU
creation, either the domain-wide L3 or the per-vCPU L3.

PV domains with a domain-wide L3 should behave as now: the Xen slots
of guest root pagetables need the domain-wide L3 installed.  But PV
guests with per-vCPU page tables can never run directly on guest
pagetables; they will always need some separate page table, which can
be initialized with the per-vCPU L3.

So, create two versions of init_xen_l4_slots(). The first is used in
contexts where we may be initializing a non-guest root, and must have
a vCPU L3 if per-vCPU L3s are in use; this takes a vCPU as an
argument.  The second is used for roots that all of a domain's vCPUs
share (a PV guest's own L4s, and their shadows), which only need an
L3 if domain-wide L3s are in use; this takes a domain as an argument.

Both wrap an internal function, which takes a domain and an L3
pointer, and leaves the slot empty if this pointer is NULL.  At the
moment, both always pass on the domain-wide L3, but in the future this
will change if the guest is using per-vCPU pagetables.

Otherwise no functional change: slot 260 still gets the domain's
per-domain L3.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Add init_xen_l4_slots_pv() form, which only takes a domain as an
  argument; promote_l4_table(), the PV dom0 builder and the shadows of
  PV guests' L4s use it, so promote_l4_table() no longer needs vCPU 0.

Changes in v5:
- promote_l4_table() checks for vCPU 0 itself, now that "x86/mm: refuse
  to promote an L4 while the domain has no per-domain L3" tests for the
  L3 instead.

Changes in v4:
- New in this version, split out of "x86/hvm: introduce per-vCPU L3
  page-table": init_xen_l4_slots() takes a vCPU in place of the domain
  (Roger, Jan).
- Reflow promote_l4_table()'s call to init_xen_l4_slots() (Jan).
---
 xen/arch/x86/include/asm/mm.h  |  4 +++-
 xen/arch/x86/mm.c              | 35 +++++++++++++++++++++++++++++-----
 xen/arch/x86/mm/hap/hap.c      |  2 +-
 xen/arch/x86/mm/shadow/hvm.c   |  2 +-
 xen/arch/x86/mm/shadow/multi.c |  5 +++--
 xen/arch/x86/pv/dom0_build.c   |  4 ++--
 xen/arch/x86/pv/domain.c       |  2 +-
 7 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index e85a6db203..0d2cecf1c7 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -370,7 +370,9 @@ int devalidate_page(struct page_info *page, unsigned long type,
 
 void init_xen_pae_l2_slots(l2_pgentry_t *l2t, const struct domain *d);
 void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
-                       const struct domain *d, mfn_t sl4mfn, bool ro_mpt);
+                       const struct vcpu *v, mfn_t sl4mfn, bool ro_mpt);
+void init_xen_l4_slots_pv(l4_pgentry_t *l4t, mfn_t l4mfn,
+                          const struct domain *d, mfn_t sl4mfn, bool ro_mpt);
 bool fill_ro_mpt(mfn_t mfn);
 void zap_ro_mpt(mfn_t mfn);
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 61bd4aa02a..10106d9f03 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1693,8 +1693,10 @@ static int promote_l3_table(struct page_info *page)
  * appropriate slots.  Pagetables not shared with guests will gain the
  * extended directmap.
  */
-void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
-                       const struct domain *d, mfn_t sl4mfn, bool ro_mpt)
+static void _init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
+                               const struct domain *d,
+                               const struct page_info *l3_pg,
+                               mfn_t sl4mfn, bool ro_mpt)
 {
     /*
      * PV vcpus need a shortened directmap.  HVM and Idle vcpus get the full
@@ -1723,7 +1725,7 @@ void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
 
     /* Slot 260: Per-domain mappings. */
     l4t[l4_table_offset(PERDOMAIN_VIRT_START)] =
-        l4e_from_page(d->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW);
+        l3_pg ? l4e_from_page(l3_pg, __PAGE_HYPERVISOR_RW) : l4e_empty();
 
     /* Slot 4: Per-domain mappings mirror. */
     BUILD_BUG_ON(IS_ENABLED(CONFIG_PV32) &&
@@ -1770,6 +1772,29 @@ void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
     }
 }
 
+/*
+ * v is the vCPU the table is private to.  For shared root pagetables, use
+ * init_xen_l4_slots_pv().
+ */
+void init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
+                       const struct vcpu *v, mfn_t sl4mfn, bool ro_mpt)
+{
+    const struct domain *d = v->domain;
+
+    _init_xen_l4_slots(l4t, l4mfn, d, d->arch.perdomain_l3_pg, sl4mfn, ro_mpt);
+}
+
+/*
+ * This is a version of init_xen_l4_slots for shared root pagetables;
+ * it only propagates domain-wide perdomain L3s, and so only needs a
+ * domain pointer.
+ */
+void init_xen_l4_slots_pv(l4_pgentry_t *l4t, mfn_t l4mfn,
+                          const struct domain *d, mfn_t sl4mfn, bool ro_mpt)
+{
+    _init_xen_l4_slots(l4t, l4mfn, d, d->arch.perdomain_l3_pg, sl4mfn, ro_mpt);
+}
+
 bool fill_ro_mpt(mfn_t mfn)
 {
     l4_pgentry_t *l4tab = map_domain_page(mfn);
@@ -1878,8 +1903,8 @@ static int promote_l4_table(struct page_info *page)
 
     if ( !rc )
     {
-        init_xen_l4_slots(pl4e, l4mfn,
-                          d, INVALID_MFN, VM_ASSIST(d, m2p_strict));
+        init_xen_l4_slots_pv(pl4e, l4mfn, d, INVALID_MFN,
+                             VM_ASSIST(d, m2p_strict));
         atomic_inc(&d->arch.pv.nr_l4_pages);
     }
     unmap_domain_page(pl4e);
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 0ede4181a0..aba4f77df9 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -407,7 +407,7 @@ static mfn_t hap_make_monitor_table(struct vcpu *v)
     m4mfn = page_to_mfn(pg);
     l4e = map_domain_page(m4mfn);
 
-    init_xen_l4_slots(l4e, m4mfn, d, INVALID_MFN, false);
+    init_xen_l4_slots(l4e, m4mfn, v, INVALID_MFN, false);
     unmap_domain_page(l4e);
 
     return m4mfn;
diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c
index e6fb97c4b6..0b23326214 100644
--- a/xen/arch/x86/mm/shadow/hvm.c
+++ b/xen/arch/x86/mm/shadow/hvm.c
@@ -760,7 +760,7 @@ mfn_t sh_make_monitor_table(const struct vcpu *v, unsigned int shadow_levels)
      * shadow-linear mapping will either be inserted below when creating
      * lower level monitor tables, or later in sh_update_cr3().
      */
-    init_xen_l4_slots(l4e, m4mfn, d, INVALID_MFN, false);
+    init_xen_l4_slots(l4e, m4mfn, v, INVALID_MFN, false);
 
     if ( shadow_levels < 4 )
     {
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 7f72b4b7b2..1831091b95 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -974,8 +974,9 @@ sh_make_shadow(struct vcpu *v, mfn_t gmfn, u32 shadow_type)
 
             BUILD_BUG_ON(sizeof(l4_pgentry_t) != sizeof(shadow_l4e_t));
 
-            init_xen_l4_slots(l4t, gmfn, d, smfn, (!is_pv_32bit_domain(d) &&
-                                                   VM_ASSIST(d, m2p_strict)));
+            init_xen_l4_slots_pv(l4t, gmfn, d, smfn,
+                                 (!is_pv_32bit_domain(d) &&
+                                  VM_ASSIST(d, m2p_strict)));
             unmap_domain_page(l4t);
         }
         break;
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 24f2fa0b7f..dd64af5616 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -724,8 +724,8 @@ static int __init dom0_construct(const struct boot_domain *bd)
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l4_page_table;
         l4start = l4tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
         clear_page(l4tab);
-        init_xen_l4_slots(l4tab, _mfn(virt_to_mfn(l4start)),
-                          d, INVALID_MFN, true);
+        init_xen_l4_slots_pv(l4tab, _mfn(virt_to_mfn(l4start)),
+                             d, INVALID_MFN, true);
         v->arch.guest_table = pagetable_from_paddr(__pa(l4start));
     }
     else
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index f3c711b85b..f139d8f83c 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -127,7 +127,7 @@ static int setup_compat_l4(struct vcpu *v)
     mfn = page_to_mfn(pg);
     l4tab = map_domain_page(mfn);
     clear_page(l4tab);
-    init_xen_l4_slots(l4tab, mfn, v->domain, INVALID_MFN, false);
+    init_xen_l4_slots(l4tab, mfn, v, INVALID_MFN, false);
     unmap_domain_page(l4tab);
 
     /* This page needs to look like a pagetable so that it can be shadowed */
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470716.1679360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONno-0003YX-9P; Tue, 03 Nov 2026 23:20:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470716.1679360; Tue, 03 Nov 2026 23:20:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONno-0003Xx-3B; Tue, 03 Nov 2026 23:20:28 +0000
Received: by outflank-mailman (input) for mailman id 1470716;
 Tue, 03 Nov 2026 23:20:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnm-0003QF-Q1
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:26 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnh-0000000CofL-0Vf8;
 Tue, 03 Nov 2026 23:20:21 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONng-0000000EMFa-1D4D;
 Tue, 03 Nov 2026 23:20:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=PGokQ3fmGWi+wfOTXKwVpSYtauVAwIDFBs65aAXW+/s=; b=IqnfxnpjNjOz+4qD0eSNG1Hmcp
	3lZE3nt0vaIFMbk6bU5eTwtwgX2wUarnEe7sFegqIutB9RFfYeHImSrgc+z8s9WYlkjLz15nlwcS0
	c1282hmJ+TVp7jGLoGBhJ5zvKUuYQvOoP5Kvr/66o9ug6BK9/bVobea9VLSbcLdEyU08=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 02/44] x86/mm: purge unneeded destroy_perdomain_mapping()
Date: Tue,  3 Nov 2026 17:13:24 -0500
Message-ID: <20261103-asi-hvm-v6-2-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

We want to change per-domain mappings to be per-vCPU mappings.  In
preparation for that, we want to arrange that
destroy_perdomain_mapping() work either with a single perdomain area,
or with a per-vCPU perdomain area.

There are two calls made from domain-scoped contexts; both calls turn
out to be unnecessary:

- destroy_perdomain_mapping() is not logically the undo of
  create_perdomain_mapping(), as the name and its use in
  hvm_domain_initialise() suggest.  destroy_ tears down mappings
  without freeing the per-domain L3; and since the call here passes
  nr == 0, it tears down nothing at all.  The per-domain L3 page is
  actually freed by free_perdomain_mappings(), which
  hvm_domain_initialise()'s caller, arch_domain_create(), already
  invokes on its failure path.

- The call in pv_domain_destroy() is redundant at both of its call
  sites.  arch_domain_destroy() unconditionally calls
  free_perdomain_mappings(), which tears down the same entries and
  additionally frees the page-table structures; and the other caller,
  the error path of pv_domain_initialise(), returns into
  arch_domain_create()'s failure path, which invokes
  free_perdomain_mappings() as well.

One vCPU-scoped caller, pv_destroy_gdt_ldt_l1tab(), is covered the
same way: a vCPU is only ever destroyed together with its domain, or
on the failure path of creating it, and both routes end in
free_perdomain_mappings(); the GDT/LDT slots hold no area-owned pages,
so there is nothing else for the call to do.  While we're getting rid
of unnecessary callers, drop this one too.

Note that free_compat_arg_xlat() keeps its explicit teardown:
switch_compat() calls it on the failure path.  While in practice most
toolstacks will immediately destroy the domain, in theory a toolstack
could let it live on as a 64-bit guest.  Release the resources
immediately rather than waiting for domain destruction.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes in v6:
- Message: create_perdomain_mapping() no longer allocates the per-domain
  L3, since "x86/mm: allocate the per-domain L3 in arch_domain_create()".

Changes in v4:
- Remove an unnecessary comment (Jan).

Changes in v3:
- Note that pv_domain_destroy()'s other call site, the error path of
  pv_domain_initialise(), is covered the same way (Jan).
- Also drop pv_destroy_gdt_ldt_l1tab(), the per-vCPU teardown call
  (Jan), and comment on why free_compat_arg_xlat() keeps its own.  The
  Reviewed-by tags given for the previous form are dropped.

Changes in v2:
- Added to the series

Changes since the previously posted version:
- Reworked the commit message to make it more clear how it fits in
  with the larger series.  No functional change.
---
 xen/arch/x86/hvm/hvm.c   |  1 -
 xen/arch/x86/pv/domain.c | 10 ----------
 2 files changed, 11 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 46d3a520d5..71da15c0a4 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -726,7 +726,6 @@ int hvm_domain_initialise(struct domain *d,
     XFREE(d->arch.hvm.irq);
  fail0:
     hvm_destroy_cacheattr_region_list(d);
-    destroy_perdomain_mapping(d, PERDOMAIN_VIRT_START, 0);
     hvm_domain_relinquish_resources(d);
     XFREE(d->arch.hvm.io_handler);
     XFREE(d->arch.hvm.pl_time);
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 0c42ae58aa..28ea0742ab 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -319,12 +319,6 @@ static int pv_create_gdt_ldt_l1tab(struct vcpu *v)
                                     NULL);
 }
 
-static void pv_destroy_gdt_ldt_l1tab(struct vcpu *v)
-{
-    destroy_perdomain_mapping(v->domain, GDT_VIRT_START(v),
-                              1U << GDT_LDT_VCPU_SHIFT);
-}
-
 void pv_vcpu_destroy(struct vcpu *v)
 {
     if ( is_pv_32bit_vcpu(v) )
@@ -333,7 +327,6 @@ void pv_vcpu_destroy(struct vcpu *v)
         release_compat_l4(v);
     }
 
-    pv_destroy_gdt_ldt_l1tab(v);
     XFREE(v->arch.pv.trap_ctxt);
 }
 
@@ -381,9 +374,6 @@ void pv_domain_destroy(struct domain *d)
 {
     pv_l1tf_domain_destroy(d);
 
-    destroy_perdomain_mapping(d, GDT_LDT_VIRT_START,
-                              GDT_LDT_MBYTES << (20 - PAGE_SHIFT));
-
     XFREE(d->arch.pv.cpuidmasks);
 
     FREE_XENHEAP_PAGE(d->arch.pv.gdt_ldt_l1tab);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:20:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:20:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470721.1679397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONns-0004XF-1Y; Tue, 03 Nov 2026 23:20:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470721.1679397; Tue, 03 Nov 2026 23:20:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONnr-0004Vy-Q1; Tue, 03 Nov 2026 23:20:31 +0000
Received: by outflank-mailman (input) for mailman id 1470721;
 Tue, 03 Nov 2026 23:20:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONnq-0004BH-GN
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:20:30 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnq-0000000CogL-1AtX;
 Tue, 03 Nov 2026 23:20:30 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnq-0000000EMFa-0gX1;
 Tue, 03 Nov 2026 23:20:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=S/tsd9lGldh/FCRRWK8hPBso1PhupuXumoKhOFQc+oM=; b=UlvwapHs2AsUIdTh+zfX8imUtG
	OiqPjv+mk1oqHQbYf0Yvk/W5Tnz20CBCPnYp4PErPN8RuEE2Ng8VtEEOlf6PuBWxQoR9mBojsr1wK
	lk9GUe6rhZrjHk0AmygTqYGhiv+irBDy+9wldu12mgdKG2Mq369Ng4LxWw+DsnpLK96U=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 09/44] x86/domain_page: drop redundant is_pv_vcpu() checks
Date: Tue,  3 Nov 2026 17:13:31 -0500
Message-ID: <20261103-asi-hvm-v6-9-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The is_pv_vcpu() checks after mapcache_current_vcpu() never fail: they
have been redundant since 622c9a5ba95d ("x86/mm: accurately track
which vCPU page-tables are loaded") made mapcache_current_vcpu() do
the check itself.  mapcache_current_vcpu() is now guaranteed to return
a PV vCPU with a caching structure (which is what is needed for the
subsequent dcache->inuse check): either a scheduled PV vCPU, or this
CPU's idle vCPU (possibly after finishing a lazy context switch).
Drop the checks; their speculation barriers (evaluate_nospec()) go
too.

mapcache_current_vcpu() returns NULL if this CPU's pgtable_vcpu is not
yet set (early boot) or is not a PV vCPU.  Otherwise it reads
pgtable_vcpu again and returns that.  In between, pgtable_vcpu changes
only when a lazy context switch from a PV vCPU is completed, by
mapcache_current_vcpu() itself (sync_local_execstate()) or first by an
interrupt such as a FLUSH_VCPU_STATE IPI; completing it loads the idle
vCPU's page-tables and sets pgtable_vcpu to the idle vCPU.  No other
writer of pgtable_vcpu runs in an interrupt that returns to the code it
interrupted.  During an EFI runtime call pgtable_vcpu is the idle
vCPU: efi_rs_enter() completes any lazy switch, then loads EFI's
page-tables, which carry the directmap.  So the vCPU returned is either
the PV vCPU checked or this CPU's idle vCPU.

The idle vCPU passes is_pv_vcpu(), as the idle domain is created
without XEN_DOMCTL_CDF_hvm, but its mapcache is never set up:
domain_create() returns for the idle domain before calling
arch_domain_create(), which is what calls mapcache_domain_init().  With
its dcache->inuse NULL, map_domain_page() uses the directmap, and
unmap_domain_page()'s ASSERT() on dcache->inuse still catches a
mapcache address unmapped with no mapcache in use.  In builds without
CONFIG_PV, is_pv_vcpu() is always false and mapcache_current_vcpu()
always returns NULL.

No functional change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v4:
- New in this version, split out of "x86/domain_page: prepare the
  mapcache for per-vCPU accounting", with a justification of its own.

NB I've included Claude's complete analysis in the commit message.
I've reworded the commit message so that the middle two paragraphs can
be dropped, or reworded more briefly on commit.
---
 xen/arch/x86/domain_page.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index f3e65e2d44..ed68483695 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -74,7 +74,7 @@ void *map_domain_page(mfn_t mfn)
 #endif
 
     v = mapcache_current_vcpu();
-    if ( !v || !is_pv_vcpu(v) )
+    if ( !v )
         return mfn_to_virt(mfn_x(mfn));
 
     dcache = &v->domain->arch.pv.mapcache;
@@ -179,7 +179,7 @@ void unmap_domain_page(const void *ptr)
     ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
 
     v = mapcache_current_vcpu();
-    ASSERT(v && is_pv_vcpu(v));
+    ASSERT(v);
 
     dcache = &v->domain->arch.pv.mapcache;
     ASSERT(dcache->inuse);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470789.1679413 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000hJ-6t; Tue, 03 Nov 2026 23:30:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470789.1679413; Tue, 03 Nov 2026 23:30:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000gz-0Y; Tue, 03 Nov 2026 23:30:38 +0000
Received: by outflank-mailman (input) for mailman id 1470789;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000c8-SD
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotK-3C0h;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoE-0000000EMFa-0N9V;
 Tue, 03 Nov 2026 23:20:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=JymEwuliQGpipSiVxt1K5QHdAnPa509ERWMPUlPlzDM=; b=zbrOD9foDHs/1ZurYAVqDbKW/M
	cv64cI8Um2wye+9aXyjo4/52fpfwcqx13OrvxZ04h3V5lKuhl7OZf3U3tBNPNEheICJfC7iMCehPu
	YJzdPU/DOSd/qgI2B0VMo6+gSQ593yGiBud8OHZ89lJ//R4kkbmb+uMUG4C50K2nmvds=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 42/44] x86/xstate: classify xsave-area seam accesses by failure mode
Date: Tue,  3 Nov 2026 17:14:04 -0500
Message-ID: <20261103-asi-hvm-v6-42-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The VCPU_MAP_XSAVE_AREA() seam currently cannot fail: the map is a
pointer fetch.  Once guest XSAVE areas move behind per-vCPU mappings,
mapping another vCPU's multi-page area becomes an operation that can
run out of resources.  Split the seam's users along that line ahead of
the change:

 - expand_xsave_states() and compress_xsave_states() address the full
   area; they gain an error return, which their four callers (the
   vcpuextstate domctls and the HVM context save/load handlers)
   propagate.  The two deserialising callers (the setvcpuextstate
   domctl and the HVM xsave-state load handler) restore the
   previously-set XCR0 fields if the deserialisation fails, so a
   failed restore leaves the vCPU's state as it was.

 - Accessors touching only the legacy region and the XSAVE header --
   vcpu_reset_fpu(), vcpu_setup_fpu(), hvm_save_cpu_ctxt() and
   arch_get_info_guest() -- switch to a new
   VCPU_MAP_XSAVE_AREA_PREFIX() variant.  The prefix always fits the
   area's first page, so that variant can remain infallible, and no
   error plumbing is needed on the paths (INIT/SIPI, S3 resume) that
   have no way to fail.

No functional change: both variants are still pointer fetches.

Assisted-by: Claude Code:claude-fable-5
Signed-off-by: George Dunlap <gwd@xenproject.org>

---
Changes in v5:
- New in this version.
---
 xen/arch/x86/domctl.c             | 26 ++++++++++++++++++--------
 xen/arch/x86/hvm/hvm.c            | 27 ++++++++++++++++++---------
 xen/arch/x86/i387.c               |  8 ++++----
 xen/arch/x86/include/asm/xstate.h | 13 +++++++++++--
 xen/arch/x86/xstate.c             | 18 +++++++++++++++---
 5 files changed, 66 insertions(+), 26 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 04bcde5580..f0dad47a87 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1010,10 +1010,10 @@ long arch_do_domctl(
                     goto vcpuextstate_out;
                 }
 
-                expand_xsave_states(v, xsave_area, xsave_size);
+                ret = expand_xsave_states(v, xsave_area, xsave_size);
 
-                if ( copy_to_guest_offset(evc->buffer, offset, xsave_area,
-                                          xsave_size) )
+                if ( !ret && copy_to_guest_offset(evc->buffer, offset,
+                                                  xsave_area, xsave_size) )
                      ret = -EFAULT;
                 xfree(xsave_area);
            }
@@ -1077,14 +1077,24 @@ long arch_do_domctl(
                 ret = -EINVAL; /* Not legitimate data. */
             else
             {
+                uint64_t old_xcr0, old_xcr0_accum;
+
                 vcpu_pause(v);
 
+                old_xcr0 = v->arch.xcr0;
+                old_xcr0_accum = v->arch.xcr0_accum;
                 v->arch.xcr0 = _xcr0;
                 v->arch.xcr0_accum = _xcr0_accum;
-                compress_xsave_states(v, _xsave_area,
-                                      evc->size - PV_XSAVE_HDR_SIZE);
+                ret = compress_xsave_states(v, _xsave_area,
+                                            evc->size - PV_XSAVE_HDR_SIZE);
 
-                if ( is_hvm_domain(d) )
+                if ( ret )
+                {
+                    /* Leave the vCPU's state as it was. */
+                    v->arch.xcr0 = old_xcr0;
+                    v->arch.xcr0_accum = old_xcr0_accum;
+                }
+                else if ( is_hvm_domain(d) )
                     hvmemul_cancel(v);
 
                 vcpu_unpause(v);
@@ -1468,10 +1478,10 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
 #define c(fld) (c.nat->fld)
 #endif
 
-    xsave_area = VCPU_MAP_XSAVE_AREA(v);
+    xsave_area = VCPU_MAP_XSAVE_AREA_PREFIX(v);
     BUILD_BUG_ON(sizeof(c.nat->fpu_ctxt) != sizeof(xsave_area->fpu_sse));
     memcpy(&c.nat->fpu_ctxt, &xsave_area->fpu_sse, sizeof(c.nat->fpu_ctxt));
-    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
+    VCPU_UNMAP_XSAVE_AREA_PREFIX(v, xsave_area);
 
     if ( is_pv_domain(d) )
         c(flags = v->arch.pv.vgc_flags & ~VGCF_in_kernel);
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index eadccf3d79..42a7d03b3a 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -932,10 +932,10 @@ static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
     ctxt.ldtr_base = seg.base;
     ctxt.ldtr_arbytes = seg.attr;
 
-    xsave_area = VCPU_MAP_XSAVE_AREA(v);
+    xsave_area = VCPU_MAP_XSAVE_AREA_PREFIX(v);
     BUILD_BUG_ON(sizeof(ctxt.fpu_regs) != sizeof(xsave_area->fpu_sse));
     memcpy(ctxt.fpu_regs, &xsave_area->fpu_sse, sizeof(ctxt.fpu_regs));
-    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
+    VCPU_UNMAP_XSAVE_AREA_PREFIX(v, xsave_area);
     ctxt.flags = XEN_X86_FPU_INITIALISED;
 
     return hvm_save_entry(CPU, v->vcpu_id, h, &ctxt);
@@ -1251,10 +1251,8 @@ static int cf_check hvm_save_cpu_xsave_states(
     ctxt->xcr0 = v->arch.xcr0;
     ctxt->xcr0_accum = v->arch.xcr0_accum;
 
-    expand_xsave_states(v, &ctxt->save_area,
-                        size - offsetof(typeof(*ctxt), save_area));
-
-    return 0;
+    return expand_xsave_states(v, &ctxt->save_area,
+                               size - offsetof(typeof(*ctxt), save_area));
 }
 
 /*
@@ -1279,6 +1277,7 @@ static int cf_check hvm_load_cpu_xsave_states(
     struct hvm_hw_cpu_xsave *ctxt;
     const struct hvm_save_descriptor *desc;
     unsigned int i, desc_start, desc_length;
+    uint64_t old_xcr0, old_xcr0_accum;
 
     /* Which vcpu is this? */
     vcpuid = hvm_load_instance(h);
@@ -1383,12 +1382,22 @@ static int cf_check hvm_load_cpu_xsave_states(
     }
     /* Checking finished */
 
+    old_xcr0 = v->arch.xcr0;
+    old_xcr0_accum = v->arch.xcr0_accum;
     v->arch.xcr0 = ctxt->xcr0;
     v->arch.xcr0_accum = ctxt->xcr0_accum;
-    compress_xsave_states(v, &ctxt->save_area,
-                          size - offsetof(struct hvm_hw_cpu_xsave, save_area));
 
-    return 0;
+    err = compress_xsave_states(v, &ctxt->save_area,
+                                size - offsetof(struct hvm_hw_cpu_xsave,
+                                                save_area));
+    if ( err )
+    {
+        /* Leave the vCPU's state as it was. */
+        v->arch.xcr0 = old_xcr0;
+        v->arch.xcr0_accum = old_xcr0_accum;
+    }
+
+    return err;
 }
 
 #define HVM_CPU_MSR_SIZE(cnt) offsetof(struct hvm_msr, msr[cnt])
diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index b796687eeb..d49e391e99 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -222,7 +222,7 @@ int vcpu_init_fpu(struct vcpu *v)
 
 void vcpu_reset_fpu(struct vcpu *v)
 {
-    struct xsave_struct *xsave_area = VCPU_MAP_XSAVE_AREA(v);
+    struct xsave_struct *xsave_area = VCPU_MAP_XSAVE_AREA_PREFIX(v);
 
     *xsave_area = (struct xsave_struct) {
         .xsave_hdr.xstate_bv = X86_XCR0_X87,
@@ -233,19 +233,19 @@ void vcpu_reset_fpu(struct vcpu *v)
     xsave_area->fpu_sse.fcw = FCW_RESET;
     xsave_area->fpu_sse.ftw = FXSAVE_FTW_RESET;
 
-    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
+    VCPU_UNMAP_XSAVE_AREA_PREFIX(v, xsave_area);
 }
 
 void vcpu_setup_fpu(struct vcpu *v, const void *data)
 {
-    struct xsave_struct *xsave_area = VCPU_MAP_XSAVE_AREA(v);
+    struct xsave_struct *xsave_area = VCPU_MAP_XSAVE_AREA_PREFIX(v);
 
     *xsave_area = (struct xsave_struct) {
         .fpu_sse = *(const fpusse_t*)data,
         .xsave_hdr.xstate_bv = XSTATE_FP_SSE,
     };
 
-    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
+    VCPU_UNMAP_XSAVE_AREA_PREFIX(v, xsave_area);
 }
 
 /* Free FPU's context save area */
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 3d57aaadd8..c23308cbe2 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -103,8 +103,8 @@ int __must_check validate_xstate(const struct domain *d,
                                  uint64_t xcr0, uint64_t xcr0_accum,
                                  const struct xsave_hdr *hdr);
 int __must_check handle_xsetbv(u32 index, u64 new_bv);
-void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size);
-void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size);
+int expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size);
+int compress_xsave_states(struct vcpu *v, const void *src, unsigned int size);
 
 /* extended state init and cleanup functions */
 void xstate_free_save_area(struct vcpu *v);
@@ -171,4 +171,13 @@ xsave_area_compressed(const struct xsave_struct *xsave_area)
  */
 #define VCPU_UNMAP_XSAVE_AREA(v, x) do { (void)(v); (x) = NULL; } while (0)
 
+/*
+ * Variant of VCPU_MAP_XSAVE_AREA() for accessors which touch nothing
+ * beyond the legacy region and the XSAVE header (the first
+ * XSTATE_AREA_MIN_SIZE bytes).  That prefix always fits within the
+ * area's first page, so this variant cannot fail.
+ */
+#define VCPU_MAP_XSAVE_AREA_PREFIX(v) VCPU_MAP_XSAVE_AREA(v)
+#define VCPU_UNMAP_XSAVE_AREA_PREFIX(v, x) VCPU_UNMAP_XSAVE_AREA(v, x)
+
 #endif /* __ASM_XSTATE_H */
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 3c9be271a3..2dd1699aba 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -177,14 +177,19 @@ static void setup_xstate_comp(uint16_t *comp_offsets,
  * It is the callers responsibility to ensure that there is xsave state to
  * serialise, and that the provided buffer is exactly the right size.
  */
-void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
+int expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
 {
     const struct xsave_struct *xstate = VCPU_MAP_XSAVE_AREA(v);
     const void *src;
     uint16_t comp_offsets[sizeof(xfeature_mask)*8];
-    u64 xstate_bv = xstate->xsave_hdr.xstate_bv;
+    u64 xstate_bv;
     u64 valid;
 
+    if ( !xstate )
+        return -ENOMEM;
+
+    xstate_bv = xstate->xsave_hdr.xstate_bv;
+
     /* Check there is state to serialise (i.e. at least an XSAVE_HDR) */
     BUG_ON(!v->arch.xcr0_accum);
     /* Check there is the correct room to decompress into. */
@@ -233,6 +238,8 @@ void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
 
  out:
     VCPU_UNMAP_XSAVE_AREA(v, xstate);
+
+    return 0;
 }
 
 /*
@@ -245,13 +252,16 @@ void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
  * It is the callers responsibility to ensure that the source buffer contains
  * xsave state, is uncompressed, and is exactly the right size.
  */
-void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
+int compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
 {
     struct xsave_struct *xstate = VCPU_MAP_XSAVE_AREA(v);
     void *dest;
     uint16_t comp_offsets[sizeof(xfeature_mask)*8];
     u64 xstate_bv, valid;
 
+    if ( !xstate )
+        return -ENOMEM;
+
     BUG_ON(!v->arch.xcr0_accum);
     BUG_ON(size != xstate_uncompressed_size(v->arch.xcr0_accum));
     ASSERT(!xsave_area_compressed(src));
@@ -302,6 +312,8 @@ void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
 
  out:
     VCPU_UNMAP_XSAVE_AREA(v, xstate);
+
+    return 0;
 }
 
 void xsave(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470790.1679419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000k2-EK; Tue, 03 Nov 2026 23:30:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470790.1679419; Tue, 03 Nov 2026 23:30:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000iG-79; Tue, 03 Nov 2026 23:30:38 +0000
Received: by outflank-mailman (input) for mailman id 1470790;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000cB-Sa
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cot8-2LqQ;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnv-0000000EMFa-1eLx;
 Tue, 03 Nov 2026 23:20:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=XSMwTIeZ5h90J4h/y2ZToyj+1NftG+yZwUVpCV46iA0=; b=18K9dXGFatSNazLPoV4skeQSFT
	9m9zBHvy/T7zHnZlWGYHWrkTe0ijP/75HmQF7E8VJPDCVhRoE51XkXQMha6iBx0ziBX//YzDTUZoO
	hTBTN45UpuF5b872RHoYxA9J8NAfVKxdqZRIG1bo2WPGaG7m9IibQF7TFAcAjCp8Hdsc=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 16/44] x86/mm: add hooks for a sparse view of the directmap
Date: Tue,  3 Nov 2026 17:13:38 -0500
Message-ID: <20261103-asi-hvm-v6-16-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The directmap maps all of RAM, and every root page-table carries it,
so while any guest context runs, all guest memory is reachable from
Xen's address space.  For ASI, guest contexts are to run on a sparse
view of the directmap which maps only what Xen must reach through it
at all times, leaving guest memory to transient mappings
(map_domain_page()).

A later patch builds such a sparse view alongside the full directmap,
once the boot allocator has handed its memory to the heap.  It is then
kept in step:

 - xenheap allocations are added, and taken out again before the pages
   are freed.  If that fails the pages stay mapped, and are leaked with
   a warning rather than reused;
 - memory handed to the heap later (boot modules, .init) is taken out,
   and is not handed over if that fails;
 - a PV dom0's initrd, assigned to dom0 in place, is taken out;
 - page-tables from the boot allocator, which the sparse view maps with
   every other boot-time allocation, are taken out when idle_pg_table's
   hierarchy frees them, and are not freed if that fails, so that the
   sparse view never keeps a page the heap may hand out;
 - changes to the full directmap through map_pages_to_xen() and
   modify_xen_mappings() are mirrored.  After boot, map_pages_to_xen()
   maps into the directmap only memory Xen keeps (stack guard and shadow
   stack pages, firmware tables); memory hot-add maps the new range into
   the full directmap only, so that the sparse view never needs
   page-table pages for it.

Add a hook at each of these points, and one where the view is to be
built; x86's are stubs in a new asm/sparse-directmap.h.  map_pages_in()
and modify_mappings_in() are no longer static: memory hot-add calls
map_pages_in() on idle_pg_table, and the sparse view will use both.

Common code gains four hooks for this, arch_heap_pages_init(),
arch_xenheap_needs_scrub() and arch_xenheap_pages_{alloc,free}(), no-ops
until an architecture implements them.  A failed
arch_xenheap_pages_alloc() may have mapped part of the pages:
alloc_xenheap_pages() then takes them out through
arch_xenheap_pages_free(), as a free would, before freeing them, and
leaks them if that fails too.

alloc_xenheap_pages() accepts pages still awaiting scrubbing
(MEMF_no_scrub).  That is harmless while the directmap maps all memory
anyway, but the sparse view would make such a page's contents, a dying
domain's data for instance, reachable from every context on it until
overwritten.  With a sparse view configured, arch_xenheap_needs_scrub()
makes xenheap allocations scrub those pages first, as domain heap
allocations do; clean pages need nothing extra.

arch_mfns_in_directmap() says whether an MFN range is reachable through
the directmap; it now answers for every context, so false once a sparse
view is configured.  Its one caller, init_node_heap(), then keeps a NUMA
node's heap metadata in the xenheap instead of carving it out of the
node's memory through the directmap: carved out of a range handed to the
heap, it would be left out of the sparse view, which every heap
allocation needs it in.

The hooks for now are just stubs.  No functional change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version, split out of "x86/mm: build and maintain a sparse
  view of the directmap".
---
 xen/arch/x86/include/asm/mm.h               | 12 +++++-
 xen/arch/x86/include/asm/sparse-directmap.h | 30 +++++++++++++++
 xen/arch/x86/mm.c                           | 30 ++++++++++++---
 xen/arch/x86/pv/dom0_build.c                |  4 ++
 xen/arch/x86/setup.c                        |  4 ++
 xen/arch/x86/x86_64/mm.c                    | 10 ++++-
 xen/common/page_alloc.c                     | 41 ++++++++++++++++++++-
 xen/include/xen/mm.h                        | 21 +++++++++++
 8 files changed, 142 insertions(+), 10 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/sparse-directmap.h

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 7b9a0f561d..61dc317dd4 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -7,6 +7,7 @@
 #include <xen/rwlock.h>
 #include <asm/io.h>
 #include <asm/page.h>
+#include <asm/sparse-directmap.h>
 #include <asm/uaccess.h>
 
 /*
@@ -599,6 +600,11 @@ mfn_t alloc_xen_pagetable(void);
 void free_xen_pagetable(mfn_t mfn);
 void *alloc_mapped_pagetable(mfn_t *pmfn);
 
+int map_pages_in(l4_pgentry_t *root, unsigned long virt, mfn_t mfn,
+                 unsigned long nr_mfns, pte_attr_t flags);
+int modify_mappings_in(l4_pgentry_t *root, unsigned long s, unsigned long e,
+                       pte_attr_t nf);
+
 int __sync_local_execstate(void);
 
 /* Arch-specific portion of memory_op hypercall. */
@@ -660,12 +666,16 @@ void write_32bit_pse_identmap(uint32_t *l2);
 
 /*
  * x86 maps part of physical memory via the directmap region.
- * Return whether the range of MFN falls in the directmap region.
+ * Return whether the range of MFN falls in the directmap region in every
+ * context: never, with a sparse directmap view configured.
  */
 static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
 {
     unsigned long eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
 
+    if ( sparse_dmap_configured() )
+        return false;
+
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
 
diff --git a/xen/arch/x86/include/asm/sparse-directmap.h b/xen/arch/x86/include/asm/sparse-directmap.h
new file mode 100644
index 0000000000..53747a98ad
--- /dev/null
+++ b/xen/arch/x86/include/asm/sparse-directmap.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef X86_SPARSE_DIRECTMAP_H
+#define X86_SPARSE_DIRECTMAP_H
+
+#include <xen/mm-frame.h>
+#include <xen/mm-types.h>
+#include <asm/page.h>
+
+static inline bool sparse_dmap_configured(void) { return false; }
+static inline void sparse_dmap_init(void) {}
+static inline int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn,
+                                         unsigned long nr, pte_attr_t flags)
+{
+    return 0;
+}
+static inline int sparse_dmap_mirror_modify(unsigned long s, unsigned long e,
+                                            pte_attr_t nf)
+{
+    return 0;
+}
+static inline int sparse_dmap_remove(mfn_t mfn, unsigned long nr)
+{
+    return 0;
+}
+static inline int sparse_dmap_drop_pagetable(mfn_t mfn)
+{
+    return 0;
+}
+
+#endif /* X86_SPARSE_DIRECTMAP_H */
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 39c6fa3d56..904ed7a258 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -127,6 +127,7 @@
 #include <asm/setup.h>
 #include <asm/shadow.h>
 #include <asm/shared.h>
+#include <asm/sparse-directmap.h>
 #include <asm/trampoline.h>
 #include <asm/traps.h>
 #include <asm/x86_emulate.h>
@@ -5442,10 +5443,17 @@ mfn_t xen_map_to_mfn(unsigned long va)
 
 /*
  * Free a page-table page that the hierarchy rooted at @root has stopped
- * using.
+ * using.  One of idle_pg_table's may be in the sparse directmap view: it is
+ * taken out first, under the sparse view's L3 lock inside an L3 lock of
+ * idle_pg_table's hierarchy (the only order in which the two nest), and
+ * kept if that fails.  The sparse view's own page-tables are not in it, and
+ * are freed directly: the caller may hold the sparse view's L3 lock.
  */
 static void free_pagetable_in(const l4_pgentry_t *root, mfn_t mfn)
 {
+    if ( root == idle_pg_table && sparse_dmap_drop_pagetable(mfn) )
+        return;
+
     free_xen_pagetable(mfn);
 }
 
@@ -5453,7 +5461,7 @@ static void free_pagetable_in(const l4_pgentry_t *root, mfn_t mfn)
  * map_pages_to_xen() in the hierarchy rooted at @root: idle_pg_table's, or
  * another hierarchy sharing its virtual addresses.
  */
-static int map_pages_in(
+int map_pages_in(
     l4_pgentry_t *root,
     unsigned long virt,
     mfn_t mfn,
@@ -5865,7 +5873,12 @@ int map_pages_to_xen(
     unsigned long nr_mfns,
     pte_attr_t flags)
 {
-    return map_pages_in(idle_pg_table, virt, mfn, nr_mfns, flags);
+    int rc = map_pages_in(idle_pg_table, virt, mfn, nr_mfns, flags);
+
+    if ( !rc )
+        rc = sparse_dmap_mirror_map(virt, mfn, nr_mfns, flags);
+
+    return rc;
 }
 
 int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
@@ -5888,8 +5901,8 @@ int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
  * modify_mappings_in() does so in the hierarchy rooted at @root, as
  * map_pages_in() does.
  */
-static int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
-                              unsigned long e, pte_attr_t nf)
+int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
+                       unsigned long e, pte_attr_t nf)
 {
     bool locking = system_state > SYS_STATE_boot;
     l3_pgentry_t *pl3e = NULL;
@@ -6169,7 +6182,12 @@ static int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
 
 int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
 {
-    return modify_mappings_in(idle_pg_table, s, e, nf);
+    int rc = modify_mappings_in(idle_pg_table, s, e, nf);
+
+    if ( !rc )
+        rc = sparse_dmap_mirror_modify(s, e, nf);
+
+    return rc;
 }
 
 int destroy_xen_mappings(unsigned long s, unsigned long e)
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index dd64af5616..829eafd67d 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -22,6 +22,7 @@
 #include <asm/pv/mm.h>
 #include <asm/setup.h>
 #include <asm/shadow.h>
+#include <asm/sparse-directmap.h>
 
 /* Allow ring-3 access in long mode as guest cannot use ring 1 ... */
 #define BASE_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_USER)
@@ -650,6 +651,9 @@ static int __init dom0_construct(const struct boot_domain *bd)
         {
             if ( assign_pages(mfn_to_page(_mfn(initrd_mfn)), count, d, 0) )
                 BUG();
+            /* The initrd is dom0's now: out of the sparse directmap. */
+            if ( sparse_dmap_remove(_mfn(initrd_mfn), PFN_UP(initrd_len)) )
+                panic("Cannot unmap dom0's initrd\n");
             /*
              * We have mapped the initrd directly into dom0, and assigned the
              * pages. Tell the boot_module handling that we've freed it, so the
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index df7cfcc563..e23ded0c86 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -54,6 +54,7 @@
 #include <asm/spec_ctrl.h>
 #include <asm/stubs.h>
 #include <asm/tboot.h>
+#include <asm/sparse-directmap.h>
 #include <asm/trampoline.h>
 #include <asm/traps.h>
 
@@ -1946,6 +1947,9 @@ void asmlinkage __init noreturn __start_xen(void)
         }
     }
 
+    /* The heap now has all memory, and page-tables come from it. */
+    sparse_dmap_init();
+
     bsp_stack = cpu_alloc_stack(0); /* Needs to know IDT vs FRED */
     if ( !bsp_stack )
         panic("No memory for BSP stack\n");
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 7b04537066..c5d9dd64a3 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1231,8 +1231,14 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     i = virt_to_mfn(HYPERVISOR_VIRT_END - 1) + 1;
     if ( spfn < i )
     {
-        ret = map_pages_to_xen((unsigned long)mfn_to_virt(spfn), _mfn(spfn),
-                               min(epfn, i) - spfn, PAGE_HYPERVISOR);
+        /*
+         * Into the full directmap only, not a sparse directmap view: the
+         * frame table and M2P carved from the start of the range are
+         * reached through their own mappings, and the rest goes to the
+         * heap, which the sparse view leaves out.
+         */
+        ret = map_pages_in(idle_pg_table, (unsigned long)mfn_to_virt(spfn),
+                           _mfn(spfn), min(epfn, i) - spfn, PAGE_HYPERVISOR);
         if ( ret )
             goto destroy_directmap;
     }
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 5243dba29f..2150dcbd5e 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1971,6 +1971,9 @@ static void init_heap_pages(
     unsigned long i;
     bool need_scrub = scrub_debug;
 
+    if ( !arch_heap_pages_init(page_to_mfn(pg), nr_pages) )
+        return;
+
     /*
      * Keep MFN 0 away from the buddy allocator to avoid crossing zone
      * boundary when merging two buddies.
@@ -2540,10 +2543,33 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
     if ( !(memflags >> _MEMF_bits) )
         memflags |= MEMF_bits(xenheap_bits);
 
-    pg = alloc_domheap_pages(NULL, order, memflags | MEMF_no_scrub);
+    /*
+     * Pages still awaiting scrubbing may do as xenheap pages: the directmap
+     * maps them anyway.  Not so if an arch's sparse directmap view makes them
+     * reachable where the rest of the heap's memory is not.
+     */
+    if ( !arch_xenheap_needs_scrub() )
+        memflags |= MEMF_no_scrub;
+
+    pg = alloc_domheap_pages(NULL, order, memflags);
     if ( unlikely(pg == NULL) )
         return NULL;
 
+    if ( arch_xenheap_pages_alloc(page_to_mfn(pg), order) )
+    {
+        /*
+         * The hook may have mapped part of the pages before failing: take
+         * them out again as a free would, and leak them if that fails too.
+         */
+        if ( arch_xenheap_pages_free(page_to_mfn(pg), order) )
+            printk(XENLOG_WARNING
+                   "Leaking xenheap pages %"PRI_mfn"+%u: still mapped\n",
+                   mfn_x(page_to_mfn(pg)), 1U << order);
+        else
+            free_domheap_pages(pg, order);
+        return NULL;
+    }
+
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info |= PGC_xen_heap;
 
@@ -2562,6 +2588,19 @@ void free_xenheap_pages(void *v, unsigned int order)
 
     pg = virt_to_page(v);
 
+    /*
+     * If the pages cannot be taken out of an arch's sparse directmap view,
+     * they may remain reachable through it: leak them rather than hand them
+     * out.
+     */
+    if ( arch_xenheap_pages_free(page_to_mfn(pg), order) )
+    {
+        printk(XENLOG_WARNING
+               "Leaking xenheap pages %"PRI_mfn"+%u: still mapped\n",
+               mfn_x(page_to_mfn(pg)), 1U << order);
+        return;
+    }
+
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info &= ~PGC_xen_heap;
 
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 153c57f5dd..e8f9993286 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -94,6 +94,27 @@ bool scrub_free_pages(void);
 #define alloc_xenheap_page() (alloc_xenheap_pages(0,0))
 #define free_xenheap_page(v) (free_xenheap_pages(v,0))
 
+/*
+ * Hooks for an architecture keeping a second, sparse view of its directmap,
+ * which maps the xenheap but not the rest of the heap's memory.
+ */
+static inline bool arch_heap_pages_init(mfn_t mfn, unsigned long nr)
+{
+    return true;
+}
+static inline bool arch_xenheap_needs_scrub(void)
+{
+    return false;
+}
+static inline int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order)
+{
+    return 0;
+}
+static inline int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
+{
+    return 0;
+}
+
 /* Free an allocation, and zero the pointer to it. */
 #define FREE_XENHEAP_PAGES(p, o) do { \
     void *_ptr_ = (p);                \
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470791.1679424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000pu-O1; Tue, 03 Nov 2026 23:30:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470791.1679424; Tue, 03 Nov 2026 23:30:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxe-0000mt-Fj; Tue, 03 Nov 2026 23:30:38 +0000
Received: by outflank-mailman (input) for mailman id 1470791;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000cJ-Sv
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cot6-2B2z;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo7-0000000EMFa-43ya;
 Tue, 03 Nov 2026 23:20:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=HhSSqAUO6JoWEvu4Yjy41Bg2ZJEqbHPy2eEHgBHq04s=; b=umzSBLXUktyoPhdhok+4W6/JTU
	PIshuMwNJTTl8KgM7Gkcu57T32wVgNqXfsmP34T1k2ZDgjrZyMw7KwCHkmYOzjutFWNfAPzGVDBD2
	Ye+7zBnhfuc3HmyNImgw0LAIaiYXUaTrT9/9n9kqk98wdaoekW94B0W5b+rMQlYp9pzg=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 33/44] x86/hvm: move the emulator's operand caches behind the vCPU state window
Date: Tue,  3 Nov 2026 17:13:55 -0500
Message-ID: <20261103-asi-hvm-v6-33-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The HVM emulator keeps two per-vCPU caches of guest data: the read cache
(struct hvmemul_cache), which records every guest-memory read made while
an instruction is emulated -- guest page-table entries, instruction
bytes and memory operands -- so that a re-execution observes the same
values, and the three MMIO caches, which hold the operand bytes of an
instruction's MMIO accesses.  Both are xvmalloc() allocations, from the
xmalloc pool on the xenheap, and so mapped in every context, the sparse
directmap view included.  Disabling the read cache when emulation
completes leaves its entries in place.

Put both in a domain-heap page of the vCPU's own, mapped for the life of
the vCPU at a new slot (index 7) of its state window: the read cache,
counts included, then the MMIO caches, 4032 bytes of the page.  As
"x86: move the saved register frame behind the vCPU state window" does
for the register frame, this applies to every HVM vCPU, whatever asi=
says; for a vCPU without per-vCPU page tables the window is in the
per-domain area that all its domain's vCPUs share, which only that
domain's page tables map.  The pointers in struct hvm_vcpu_io hold
window addresses.  hvmemul_cache_init() sets the page up through a
transient mapping, as the vCPU is still being built, and
hvmemul_cache_destroy(), now out of line, unmaps it before freeing it.

The emulator only ever works on the vCPU running, on its own page
tables, and reaches the caches through the window address;
hvmemul_find_mmio_cache() now asserts as much.  The read cache also has
users in other contexts: a debugger's guest page walk on a paused vCPU
(gdbsx, and the guest stack dump of the debug keys), which reads and
extends it if the vCPU was paused mid-emulation, and hvmemul_cancel(),
which disables it, on toolstack, VCPUOP_initialise and INIT/SIPI paths.
Its accessors therefore map the page transiently unless the vCPU is
running on its own page tables, as VCPU_MAP_REGS() does: a single page,
so no new failure paths.  They drop the mapping with
unmap_vcpu_state_page(), which also flushes this CPU's translation.
The read and write paths are split into an outer function, which checks
and maps the cache once, and a recursive inner one.

Cost: a page per HVM vCPU, where the caches took about 4KiB of the
xmalloc pool, and the emulator reaches them through a 4KiB mapping in
the per-domain area instead of the directmap.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.

Notes for reviewers: the sizes before and after, on x86-64
(CONFIG_PAGING_LEVELS 4, MAX_INST_LEN 15).

                   before                    after
read cache ents    16*2*(4+1) + 15*(4+1)     (16*2 + 15) * (4+1)
                   = 235 (nents)             = 235 (HVMEMUL_CACHE_ENTS)
read cache bytes   8 + 235*16 = 3768         the same offsetof(), at 0
MMIO buffer bytes  64 (max_bytes)            64 (MMIO_CACHE_BYTES)
MMIO cache bytes   24 + 64 = 88, three       88 (MMIO_CACHE_SIZE), three

The page:

offset  bytes  contents
     0      8  num_ents, max_ents
     8   3760  ents[235], 16 bytes each
  3768     88  mmio_cache[0]: 24-byte header, buffer[64]
  3856     88  mmio_cache[1]
  3944     88  mmio_cache[2]
  4032     64  unused

The four old allocations together asked for 4032 bytes, the span the
page now uses.  The limits the code checks, max_ents (235) and space
(64), are unchanged.  The BUILD_BUG_ON() in hvmemul_cache_init() keeps
the end within the page.
---
 xen/arch/x86/domain.c                  |   2 +
 xen/arch/x86/hvm/emulate.c             | 196 +++++++++++++++++++------
 xen/arch/x86/include/asm/config.h      |   1 +
 xen/arch/x86/include/asm/hvm/emulate.h |   9 +-
 xen/arch/x86/include/asm/hvm/vcpu.h    |   7 +
 5 files changed, 165 insertions(+), 50 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 03f6572086..66d71ec41b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -595,6 +595,8 @@ int arch_vcpu_create(struct vcpu *v)
         BUILD_BUG_ON(VCPU_STATE_IDX_N2VMCB >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_VMX_MSR >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_REGS >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_EMUL >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_EMUL == VCPU_STATE_IDX_REGS);
         /* Page tables only; torn down with the rest of the per-domain area. */
         rc = create_perdomain_mapping(v, VCPU_STATE_START(v),
                                       VCPU_STATE_NR_PAGES,
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index cd2831d34b..e2cf982c25 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -9,6 +9,7 @@
  *    Keir Fraser <keir@xen.org>
  */
 
+#include <xen/domain_page.h>
 #include <xen/init.h>
 #include <xen/iocap.h>
 #include <xen/ioreq.h>
@@ -56,6 +57,26 @@ struct hvmemul_cache
     } ents[];
 };
 
+/*
+ * AVX512F scatter/gather insns can access up to 16 independent linear
+ * addresses, up to 8 bytes size. Each such linear range can span a page
+ * boundary, i.e. may require two page walks.  Account for each insn byte
+ * individually, both for simplicity and to leave some slack space.
+ */
+#define HVMEMUL_CACHE_ENTS \
+    ((16 * 2 + MAX_INST_LEN) * (CONFIG_PAGING_LEVELS + 1))
+
+/* Operand bytes per MMIO cache: up to m512 or a tile row. */
+#define MMIO_CACHE_BYTES 64
+
+/* Layout of the caches' page: the read cache, then the MMIO caches. */
+#define MMIO_CACHE_SIZE                                                   \
+    ROUNDUP(offsetof(struct hvm_mmio_cache, buffer[MMIO_CACHE_BYTES]),    \
+            __alignof__(struct hvm_mmio_cache))
+#define EMUL_PAGE_MMIO_CACHE(i)                                           \
+    (ROUNDUP(offsetof(struct hvmemul_cache, ents[HVMEMUL_CACHE_ENTS]),    \
+             __alignof__(struct hvm_mmio_cache)) + (i) * MMIO_CACHE_SIZE)
+
 static void hvmtrace_io_assist(const ioreq_t *p)
 {
     unsigned int size, event;
@@ -1130,6 +1151,9 @@ static struct hvm_mmio_cache *hvmemul_find_mmio_cache(
     unsigned int i;
     struct hvm_mmio_cache *cache;
 
+    ASSERT(hvio == &current->arch.hvm.hvm_io);
+    ASSERT(this_cpu(pgtable_vcpu) == current);
+
     for ( i = 0; i < hvio->mmio_cache_count; i ++ )
     {
         cache = hvio->mmio_cache[i];
@@ -3057,77 +3081,133 @@ void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
 
 int hvmemul_cache_init(struct vcpu *v)
 {
-    /*
-     * AVX512F scatter/gather insns can access up to 16 independent linear
-     * addresses, up to 8 bytes size. Each such linear range can span a page
-     * boundary, i.e. may require two page walks.
-     */
-    unsigned int nents = 16 * 2 * (CONFIG_PAGING_LEVELS + 1);
-    unsigned int i, max_bytes = 64;
+    struct hvm_vcpu_io *hvio = &v->arch.hvm.hvm_io;
+    struct page_info *pg = alloc_domheap_page(v->domain, MEMF_no_owner);
+    void *va = (void *)VCPU_STATE_ADDR(v, VCPU_STATE_IDX_EMUL), *p;
     struct hvmemul_cache *cache;
+    unsigned int i;
+    mfn_t mfn;
 
-    /*
-     * Account for each insn byte individually, both for simplicity and to
-     * leave some slack space.
-     */
-    nents += MAX_INST_LEN * (CONFIG_PAGING_LEVELS + 1);
+    BUILD_BUG_ON(EMUL_PAGE_MMIO_CACHE(ARRAY_SIZE(hvio->mmio_cache)) >
+                 PAGE_SIZE);
 
-    cache = xvmalloc_flex_struct(struct hvmemul_cache, ents, nents);
-    if ( !cache )
+    if ( !pg )
         return -ENOMEM;
 
-    /* Cache is disabled initially. */
-    cache->num_ents = nents + 1;
-    cache->max_ents = nents;
+    mfn = page_to_mfn(pg);
+    clear_domain_page(mfn);
 
-    v->arch.hvm.hvm_io.cache = cache;
+    /* v != current, so we can't use the vCPU state window. */
+    p = map_domain_page(mfn);
 
-    for ( i = 0; i < ARRAY_SIZE(v->arch.hvm.hvm_io.mmio_cache); ++i )
+    /* Cache is disabled initially. */
+    cache = p;
+    cache->num_ents = HVMEMUL_CACHE_ENTS + 1;
+    cache->max_ents = HVMEMUL_CACHE_ENTS;
+
+    for ( i = 0; i < ARRAY_SIZE(hvio->mmio_cache); ++i )
     {
-        v->arch.hvm.hvm_io.mmio_cache[i] =
-            xvmalloc_flex_struct(struct hvm_mmio_cache, buffer, max_bytes);
-        if ( !v->arch.hvm.hvm_io.mmio_cache[i] )
-            return -ENOMEM;
-        v->arch.hvm.hvm_io.mmio_cache[i]->space = max_bytes;
+        struct hvm_mmio_cache *mmio = p + EMUL_PAGE_MMIO_CACHE(i);
+
+        mmio->space = MMIO_CACHE_BYTES;
     }
 
+    unmap_domain_page(p);
+
+    populate_perdomain_mapping(v, (unsigned long)va, &mfn, 1,
+                               __PAGE_HYPERVISOR_RW);
+
+    hvio->emul_pg = pg;
+    hvio->cache = va;
+    for ( i = 0; i < ARRAY_SIZE(hvio->mmio_cache); ++i )
+        hvio->mmio_cache[i] = va + EMUL_PAGE_MMIO_CACHE(i);
+
     return 0;
 }
 
+void hvmemul_cache_destroy(struct vcpu *v)
+{
+    struct hvm_vcpu_io *hvio = &v->arch.hvm.hvm_io;
+    unsigned int i;
+
+    if ( !hvio->emul_pg )
+        return;
+
+    unmap_vcpu_state(v, VCPU_STATE_IDX_EMUL, 1);
+    free_domheap_page(hvio->emul_pg);
+    hvio->emul_pg = NULL;
+    hvio->cache = NULL;
+    for ( i = 0; i < ARRAY_SIZE(hvio->mmio_cache); ++i )
+        hvio->mmio_cache[i] = NULL;
+}
+
+/*
+ * The read cache of @v, for access from any context: the window address in
+ * struct hvm_vcpu_io where v runs here on its own page tables, a transient
+ * mapping of the page otherwise, and the NULL left there once the cache is
+ * destroyed.  v's page tables being loaded is not enough: while this CPU
+ * holds v's state lazily, an IPI syncing that state for another CPU can
+ * switch them away at any time.
+ */
+static struct hvmemul_cache *map_cache(const struct vcpu *v)
+{
+    const struct hvm_vcpu_io *hvio = &v->arch.hvm.hvm_io;
+
+    if ( !hvio->emul_pg || (v == current && this_cpu(pgtable_vcpu) == v) )
+        return hvio->cache;
+
+    /* The read cache is at the start of the page. */
+    return __map_domain_page(hvio->emul_pg);
+}
+
+static void unmap_cache(const struct vcpu *v,
+                        const struct hvmemul_cache *cache)
+{
+    if ( cache != v->arch.hvm.hvm_io.cache )
+        unmap_vcpu_state_page(cache);
+}
+
+#define HVMEMUL_MAP_CACHE(v) map_cache(v)
+
+/* Drops the mapping of a vCPU's read cache and nullifies its pointer. */
+#define HVMEMUL_UNMAP_CACHE(v, cache) do {  \
+    unmap_cache(v, cache);                  \
+    (cache) = NULL;                         \
+} while ( false )
+
 unsigned int hvmemul_cache_disable(struct vcpu *v)
 {
-    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    struct hvmemul_cache *cache = HVMEMUL_MAP_CACHE(v);
     unsigned int token = cache->num_ents;
 
     cache->num_ents = cache->max_ents + 1;
 
+    HVMEMUL_UNMAP_CACHE(v, cache);
+
     return token;
 }
 
 void hvmemul_cache_restore(struct vcpu *v, unsigned int token)
 {
-    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    struct hvmemul_cache *cache = HVMEMUL_MAP_CACHE(v);
 
     ASSERT(cache->num_ents > cache->max_ents);
     cache->num_ents = token;
+
+    HVMEMUL_UNMAP_CACHE(v, cache);
 }
 
-bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
-                        void *buffer, unsigned int size)
+static bool read_cache(const struct hvmemul_cache *cache, paddr_t gpa,
+                       void *buffer, unsigned int size)
 {
-    const struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
     unsigned int i;
 
-    /* Cache unavailable? */
-    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
-        return false;
-
     while ( size > sizeof(cache->ents->data) )
     {
         i = gpa & (sizeof(cache->ents->data) - 1)
             ? -gpa & (sizeof(cache->ents->data) - 1)
             : sizeof(cache->ents->data);
-        if ( !hvmemul_read_cache(v, gpa, buffer, i) )
+        if ( !read_cache(cache, gpa, buffer, i) )
             return false;
         gpa += i;
         buffer += i;
@@ -3144,22 +3224,37 @@ bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
     return false;
 }
 
-void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
-                         const void *buffer, unsigned int size)
+bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
+                        void *buffer, unsigned int size)
 {
-    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
-    unsigned int i;
+    const struct hvmemul_cache *cache;
+    bool hit = false;
 
-    /* Cache unavailable? */
-    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
-        return;
+    if ( !is_hvm_vcpu(v) )
+        return false;
+
+    cache = HVMEMUL_MAP_CACHE(v);
+
+    /* Cache available? */
+    if ( cache->num_ents <= cache->max_ents )
+        hit = read_cache(cache, gpa, buffer, size);
+
+    HVMEMUL_UNMAP_CACHE(v, cache);
+
+    return hit;
+}
+
+static void write_cache(const struct vcpu *v, struct hvmemul_cache *cache,
+                        paddr_t gpa, const void *buffer, unsigned int size)
+{
+    unsigned int i;
 
     while ( size > sizeof(cache->ents->data) )
     {
         i = gpa & (sizeof(cache->ents->data) - 1)
             ? -gpa & (sizeof(cache->ents->data) - 1)
             : sizeof(cache->ents->data);
-        hvmemul_write_cache(v, gpa, buffer, i);
+        write_cache(v, cache, gpa, buffer, i);
         gpa += i;
         buffer += i;
         size -= i;
@@ -3186,6 +3281,23 @@ void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
     cache->num_ents = i + 1;
 }
 
+void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
+                         const void *buffer, unsigned int size)
+{
+    struct hvmemul_cache *cache;
+
+    if ( !is_hvm_vcpu(v) )
+        return;
+
+    cache = HVMEMUL_MAP_CACHE(v);
+
+    /* Cache available? */
+    if ( cache->num_ents <= cache->max_ents )
+        write_cache(v, cache, gpa, buffer, size);
+
+    HVMEMUL_UNMAP_CACHE(v, cache);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index c8d4a8ddc7..5bd9970fce 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -312,6 +312,7 @@ extern unsigned long xen_phys_start;
 #define VCPU_STATE_IDX_N2VMCB    1
 #define VCPU_STATE_IDX_VMX_MSR   2
 #define VCPU_STATE_IDX_REGS      6
+#define VCPU_STATE_IDX_EMUL      7
 
 #define ELFSIZE 64
 
diff --git a/xen/arch/x86/include/asm/hvm/emulate.h b/xen/arch/x86/include/asm/hvm/emulate.h
index 178ac32e15..16491a92b1 100644
--- a/xen/arch/x86/include/asm/hvm/emulate.h
+++ b/xen/arch/x86/include/asm/hvm/emulate.h
@@ -117,14 +117,7 @@ int hvmemul_do_pio_buffer(uint16_t port,
  *   further re-execution.
  */
 int __must_check hvmemul_cache_init(struct vcpu *v);
-static inline void hvmemul_cache_destroy(struct vcpu *v)
-{
-    unsigned int i;
-
-    for ( i = 0; i < ARRAY_SIZE(v->arch.hvm.hvm_io.mmio_cache); ++i )
-        XVFREE(v->arch.hvm.hvm_io.mmio_cache[i]);
-    XVFREE(v->arch.hvm.hvm_io.cache);
-}
+void hvmemul_cache_destroy(struct vcpu *v);
 bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
                         void *buffer, unsigned int size);
 void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 876c230784..ee7bc8be00 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -46,6 +46,13 @@ struct hvm_vcpu_io {
     unsigned char mmio_insn[16];
     struct hvmemul_cache *cache;
 
+    /*
+     * The page holding the caches above, mapped in the vCPU's state window:
+     * mmio_cache[] and cache hold addresses in the window, for use while the
+     * vCPU's own page tables are loaded.
+     */
+    struct page_info *emul_pg;
+
     /*
      * For string instruction emulation we need to be able to signal a
      * necessary retry through other than function return codes.
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470794.1679453 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxg-0001QN-T7; Tue, 03 Nov 2026 23:30:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470794.1679453; Tue, 03 Nov 2026 23:30:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxg-0001P4-Eb; Tue, 03 Nov 2026 23:30:40 +0000
Received: by outflank-mailman (input) for mailman id 1470794;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000cW-09
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cot2-1ezN;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoB-0000000EMFa-0jBr;
 Tue, 03 Nov 2026 23:20:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=nCu/9nxrMBPoeFP8cJd8ihmMLFkJzdeaGH0E1Itmh5E=; b=2+Go13xgx3rs6kb+85arVkIJfH
	PD27N7CAB47+Zq61Ro1SoMwlN6vQJuWTzGt/jSAF/Oi7uV4myISFSEv6xRhhYpQ/90UpiXzSxV3CB
	kr/U867nGpFzP8EmEPciCwJN1AIX5NQ8qyS3hj2UJJfWTjF8gbe9Sh1QnrORpT2z+tVU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Tim Deegan <tim@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 36/44] x86/shadow: use map_domain_pages() for cross-page emulated writes
Date: Tue,  3 Nov 2026 17:13:58 -0500
Message-ID: <20261103-asi-hvm-v6-36-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

sh_emulate_map_dest() picks its mapping method purely on whether the
write straddles a page boundary: a single page goes through
map_domain_page(), two pages through vmap() -- mapping the destination
in every context for the duration, those of domains on the sparse
directmap view included, whatever the guest's own configuration.
map_domain_pages() maps it only in the page tables of the guest's own
domain; use it for the two-page case.

The NULL return handling is unchanged: the primitive can fail only for
want of a free slot, and the emulation then bails out as unhandleable
exactly as before.

This is one of the two in-tree consumers of the primitive.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/mm/shadow/hvm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c
index 0b23326214..b1c3d5e637 100644
--- a/xen/arch/x86/mm/shadow/hvm.c
+++ b/xen/arch/x86/mm/shadow/hvm.c
@@ -506,7 +506,7 @@ static void *sh_emulate_map_dest(struct vcpu *v, unsigned long vaddr,
         /* Cross-page writes mean probably not a pagetable. */
         sh_remove_shadows(d, sh_ctxt->mfn[1], 0, 0 /* Slow, can fail. */ );
 
-        map = vmap(sh_ctxt->mfn, 2);
+        map = map_domain_pages(sh_ctxt->mfn, 2);
         if ( !map )
         {
             put_page(mfn_to_page(sh_ctxt->mfn[0]));
@@ -670,7 +670,7 @@ static void sh_emulate_unmap_dest(struct vcpu *v, void *addr,
     if ( unlikely(mfn_valid(sh_ctxt->mfn[1])) )
     {
         put_page(mfn_to_page(sh_ctxt->mfn[1]));
-        vunmap((void *)((unsigned long)addr & PAGE_MASK));
+        unmap_domain_pages(addr, 2);
     }
     else
         unmap_domain_page(addr);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470796.1679461 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxh-0001Yn-EP; Tue, 03 Nov 2026 23:30:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470796.1679461; Tue, 03 Nov 2026 23:30:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxg-0001VV-VS; Tue, 03 Nov 2026 23:30:40 +0000
Received: by outflank-mailman (input) for mailman id 1470796;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000cf-1O
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotM-3JWU;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo8-0000000EMFa-2DhE;
 Tue, 03 Nov 2026 23:20:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=xMTLrvxxwpwmKfoWs2RiIcYg6g+Liai9ytC5nmpdgLQ=; b=yWLy8e/IpNDGhWHzoGLtuB2yL2
	PWMLKC5wPoo+Ore5hFSM61WQpSUGH3hxeVFrPlXaOTYA8V47i3AFStTeL+FFob2B7+zAS5MkpPKcb
	JYrftt4kUH1/XCzAx94Sl+P5NF98llk8XuBMToqDdU+uRy2D8HnYplUopop/4zicq7QY=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 34/44] x86/hvm: clear the vCPU's copy of an emulated I/O request once consumed
Date: Tue,  3 Nov 2026 17:13:56 -0500
Message-ID: <20261103-asi-hvm-v6-34-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

hvmemul_do_io() keeps the request it is emulating in the vCPU's struct
vcpu_io: the data written, or the response once a device model has
supplied it, with the address and repeat count.  Once the access is done
only the state is set back to STATE_IOREQ_NONE, so the operand stays in
struct vcpu, a xenheap page mapped in every context, until the next
emulated I/O overwrites it.

Drop the copy wherever it is done with: when the response has been taken
into hvmemul_do_io()'s local copy on the instruction's re-execution,
when Xen's own handlers have completed the access, when the request is
retried, suspended or not sent, and in hvmemul_cancel().  A request sent
to a device model stays while it is in flight: the re-execution checks
it, and the port-I/O completion reads its address and size before
re-issuing it.  One which needs no completion -- a port write, or a
request whose data is a guest buffer's address -- loses its address,
data and count as soon as it is sent: the device model has its own copy,
and the completion path reads only the state, type, direction and
data_is_ptr.  Nothing reads the copy after STATE_IOREQ_NONE.

Only the x86 emulator changes.  struct vcpu_io is common code, and Arm's
MMIO completion reads the response from it.  Moving the in-flight copy
out of struct vcpu belongs with narrowing the ioreq server pages, which
carry the same operand while a device model handles it.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/hvm/emulate.c | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index e2cf982c25..da7c08b5d9 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -167,6 +167,16 @@ static const struct hvm_io_handler ioreq_server_handler = {
     .ops = &ioreq_server_ops
 };
 
+/*
+ * The vCPU's copy of an emulated I/O request is done with: nothing reads it
+ * before the next request overwrites it.  Clear it all, so that the operand
+ * and the address do not stay in struct vcpu.
+ */
+static void ioreq_done(struct vcpu_io *vio)
+{
+    vio->req = (ioreq_t){ .state = STATE_IOREQ_NONE };
+}
+
 /*
  * Drop all records of in-flight emulation. This is needed whenever a vCPU's
  * register state may have changed behind the emulator's back.
@@ -175,7 +185,7 @@ void hvmemul_cancel(struct vcpu *v)
 {
     struct hvm_vcpu_io *hvio = &v->arch.hvm.hvm_io;
 
-    v->io.req.state = STATE_IOREQ_NONE;
+    ioreq_done(&v->io);
     v->io.completion = VIO_no_completion;
     hvio->mmio_cache_count = 0;
     hvio->mmio_insn_bytes = 0;
@@ -265,8 +275,9 @@ static int hvmemul_do_io(
     case STATE_IOREQ_NONE:
         break;
     case STATE_IORESP_READY:
-        vio->req.state = STATE_IOREQ_NONE;
+        /* The local copy carries the response from here. */
         p = vio->req;
+        ioreq_done(vio);
 
         /* Verify the emulation request has been correctly re-issued */
         if ( (p.type != (is_mmio ? IOREQ_TYPE_COPY : IOREQ_TYPE_PIO)) ||
@@ -330,7 +341,7 @@ static int hvmemul_do_io(
     {
     case X86EMUL_OKAY:
     case X86EMUL_RETRY:
-        vio->req.state = STATE_IOREQ_NONE;
+        ioreq_done(vio);
         break;
     case X86EMUL_UNHANDLEABLE:
     {
@@ -383,7 +394,7 @@ static int hvmemul_do_io(
                 if ( s == NULL )
                 {
                     rc = X86EMUL_RETRY;
-                    vio->req.state = STATE_IOREQ_NONE;
+                    ioreq_done(vio);
                     break;
                 }
 
@@ -394,7 +405,7 @@ static int hvmemul_do_io(
                 if ( dir == IOREQ_READ )
                 {
                     rc = hvm_process_io_intercept(&ioreq_server_handler, &p);
-                    vio->req.state = STATE_IOREQ_NONE;
+                    ioreq_done(vio);
                     break;
                 }
             }
@@ -440,7 +451,7 @@ static int hvmemul_do_io(
                                     paddr_to_pfn(addr));
 
                         rc = X86EMUL_RETRY;
-                        vio->req.state = STATE_IOREQ_NONE;
+                        ioreq_done(vio);
                         break;
                     }
 
@@ -455,15 +466,24 @@ static int hvmemul_do_io(
                              dir ? "read from" : "write to", addr, size);
             }
             rc = hvm_process_io_intercept(&null_handler, &p);
-            vio->req.state = STATE_IOREQ_NONE;
+            ioreq_done(vio);
         }
         else
         {
             rc = ioreq_send(s, &p, 0);
             if ( rc != X86EMUL_RETRY || vio->suspended )
-                vio->req.state = STATE_IOREQ_NONE;
+                ioreq_done(vio);
             else if ( !ioreq_needs_completion(&vio->req) )
+            {
+                /*
+                 * Nothing comes back, and the device model has its own copy
+                 * of the request: keep only what completion checks.
+                 */
+                vio->req.addr = 0;
+                vio->req.data = 0;
+                vio->req.count = 0;
                 rc = X86EMUL_OKAY;
+            }
         }
         break;
     }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470795.1679448 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxg-0001Lm-EO; Tue, 03 Nov 2026 23:30:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470795.1679448; Tue, 03 Nov 2026 23:30:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxg-0001Hu-0T; Tue, 03 Nov 2026 23:30:40 +0000
Received: by outflank-mailman (input) for mailman id 1470795;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000cZ-0p
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cotc-3iEl;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo9-0000000EMFa-0gYZ;
 Tue, 03 Nov 2026 23:20:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=7+SfUGkgBYMN0fY336uRRwse3Bcl2E3YDqRetUP0NXs=; b=T0f1XdTxfYHZA9MbSfrp7iuMAM
	n+2K51ksVMGTYBaK68A/kaQwIXVGnPn+WUePRhQKS4Smbyblb3oymcfdXSFwdceZABLvIVwBKKSYM
	9h96ajWFLCjlUCw4N7hQ5gfZk5kC2/p/x+3SfGdrW2w3lya7CbWFPRqqVIlnoOy7TpbQ=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 35/44] x86/domain_page: introduce map_domain_pages()
Date: Tue,  3 Nov 2026 17:13:57 -0500
Message-ID: <20261103-asi-hvm-v6-35-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

map_domain_page() maps a single page, so callers needing a virtually
contiguous mapping of several (not necessarily physically contiguous)
frames have had to fall back to vmap(), which maps whatever the frames
hold in every context, those of domains on the sparse directmap view
included, for the lifetime of the mapping.  Provide a multipage
counterpart which maps them in the calling vCPU's per-domain area
instead, which only its domain's page tables carry:

    map_domain_pages(mfn, nr) / unmap_domain_pages(ptr, nr)

Each vCPU has MAPCACHE_MULTIPAGE_ENTRIES slots of its own for such
mappings.  With per-vCPU page tables, they are just above the vCPU's
single-page mapcache.  Where a domain's vCPUs share one per-domain
area, they are at the end of the mapcache sub-area, where each vCPU
has a fixed block of its own.  No single-page mapcache is needed: the
multipage slots are in the same VA range whether or not the domain has
one.  The mappings are order-aligned and tracked in a per-vCPU bitmap,
and bypass the maphash and the deferred garbage/epoch machinery.

At unmap a mapping's PTEs are cleared, and a local flush done.  Since
each vCPU has its own slots, even with a domain-wide L3, the local
flush suffices for correctness: even if a stray TLB entry is
speculatively loaded on another processor, no other vCPU will use that
mapping, and it will be flushed before the vCPU which owns the slots
runs on that CPU.

With regard to exposure: in a domain whose vCPUs share one per-domain
area, other vCPUs may be able to reach the mapping speculatively while
it exists, and afterwards through a stale TLB entry until their CPU
next flushes.  For guests on the full directmap, this doesn't expose
anything new, as the page is already mapped in the directmap anyway
(unless it's a PV domain and the page is past the short directmap).
For PV guests on the sparse directmap view, it's still an improvement
over the status quo, as exposure is limited to the domain, rather than
the whole system (as in the case of vmap).

An unmap will BUG() when given a pointer or a @nr which indexes
outside the vCPU's slots, unless that pointer is in the vmap area (see
below).

These slots are not available before the first page-table switch in
boot, nor with the idle vCPU's page tables loaded.  Currently no calls
are made during boot, and the only known way to reach
map_domain_pages() with the idle page tables loaded is on an error path
that will already ultimately crash the host.  Nonetheless, for
robustness, if called from a context where no mapping is available, it
will fall back to using vmap(); and unmap recognizes such an address
and vunmap()'s it.  This briefly exposes contents to every context,
and requires a system-wide TLB shootdown on unmap, but allows
execution to continue.  The alternative would be to BUG() in such a
context.  For those who want stricter isolation guarantees, at the
risk that more situations might come up in the future, a new
sub-option, asi=vmap-strict, off by default, makes the fallback a
BUG() instead.  The first fallback is logged.

The handling of a lazy context switch in mapcache_current_vcpu() moves
into pgtable_current_vcpu(), which map_domain_pages() uses whatever the
domain: an IPI can switch away page tables held lazily at any time.

Eight slots hold the largest mapping a known caller needs, a
three-page XSAVE area (four slots, order 2), with room for a two-page
mapping beside it.  Where a domain's vCPUs share one per-domain area,
the multipage area takes 256MiB of address space for MAX_VIRT_CPUS,
and one L1 table per 64 vCPUs.

Later patches convert the two known in-tree consumers.  Moving the
XSAVE areas off always-mapped memory needs the primitive too: the
XSAVE area exceeds one page on AMX-class hardware, and XSAVE/XRSTOR
require it to be virtually contiguous.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 docs/misc/xen-command-line.pandoc    |  10 +-
 xen/arch/x86/domain_page.c           | 171 +++++++++++++++++++++++++--
 xen/arch/x86/include/asm/config.h    |  14 +++
 xen/arch/x86/include/asm/domain.h    |   3 +
 xen/arch/x86/include/asm/spec_ctrl.h |   1 +
 xen/arch/x86/spec_ctrl.c             |   7 ++
 xen/include/xen/domain_page.h        |  21 ++++
 7 files changed, 216 insertions(+), 11 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 092c858f34..52e10eb393 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -203,7 +203,7 @@ to appropriate auditing by Xen.  Argo is disabled by default.
     buggy or malicious other domain spamming the ring.
 
 ### asi (x86)
-> `= List of [ <bool>, {pv,hvm,dom0}=<bool>, directmap=<bool>,
+> `= List of [ <bool>, {pv,hvm,dom0}=<bool>, {directmap,vmap-strict}=<bool>,
 >              vcpu-pt=<bool> | vcpu-pt=hvm=<bool> ]`
 
 > Default: `false`
@@ -245,6 +245,14 @@ are meant to be used for debugging purposes only.**
   and `dom0=`) set this too, on builds that support it; on other builds they
   leave it off.
 
+* `vmap-strict` crashes the host when a multipage transient mapping
+  (`map_domain_pages()`) is requested where the loaded page-tables
+  have no slots for one: in early boot, or on the idle vCPU's
+  page-tables.  By default such a mapping falls back to `vmap()`,
+  which maps the pages in every context.  The first such mapping is
+  logged.  The option is for hosts where a crash is preferable to such
+  a mapping; none is known to be made in normal operation.
+
 ### asid (x86)
 > `= <boolean>`
 
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 4198ee7c18..8e5ef4a34a 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2003-2006, Keir Fraser <keir@xensource.com>
  */
 
+#include <xen/bitmap.h>
 #include <xen/domain_page.h>
 #include <xen/efi.h>
 #include <xen/mm.h>
@@ -17,6 +18,7 @@
 #include <asm/flushtlb.h>
 #include <asm/hardirq.h>
 #include <asm/setup.h>
+#include <asm/spec_ctrl.h>
 
 /* Whether the vCPU supports mapcache usage, might not be in use. */
 static bool has_mapcache(const struct vcpu *v)
@@ -24,20 +26,22 @@ static bool has_mapcache(const struct vcpu *v)
     return is_pv_vcpu(v) || v->domain->arch.asi.vcpu_pt;
 }
 
-static inline struct vcpu *mapcache_current_vcpu(void)
+/*
+ * The vCPU whose page tables are loaded here, and stay loaded until the
+ * caller is done with what it maps in them.
+ */
+static struct vcpu *pgtable_current_vcpu(void)
 {
-    const struct vcpu *v = this_cpu(pgtable_vcpu);
     const struct vcpu *curr = current;
 
     /* During early boot pgtable_vcpu is not set, callers must handle NULL. */
-    if ( !v || !has_mapcache(v) )
+    if ( !this_cpu(pgtable_vcpu) )
         return NULL;
 
     /*
-     * If we are in a lazy context-switch state from a vCPU with a mapcache do
-     * a full switch to the idle vCPU now, otherwise an incoming
-     * FLUSH_VCPU_STATE IPI would change the page tables under our feet and
-     * invalidate any in-use mapcache entries.
+     * If we are in a lazy context-switch state do a full switch to the idle
+     * vCPU now, otherwise an incoming FLUSH_VCPU_STATE IPI would change the
+     * page tables under our feet and invalidate any in-use mappings in them.
      */
     if ( unlikely(this_cpu(curr_vcpu) != curr) )
     {
@@ -56,6 +60,17 @@ static inline struct vcpu *mapcache_current_vcpu(void)
     return ACCESS_ONCE(this_cpu(pgtable_vcpu));
 }
 
+static inline struct vcpu *mapcache_current_vcpu(void)
+{
+    const struct vcpu *v = this_cpu(pgtable_vcpu);
+
+    /* During early boot pgtable_vcpu is not set, callers must handle NULL. */
+    if ( !v || !has_mapcache(v) )
+        return NULL;
+
+    return pgtable_current_vcpu();
+}
+
 /* Whether @v's page-tables carry the sparse view of the directmap. */
 static bool on_sparse_dmap(const struct vcpu *v)
 {
@@ -341,6 +356,124 @@ void unmap_domain_page(const void *ptr)
     local_irq_restore(flags);
 }
 
+/*
+ * The mapcache index of @v's first map_domain_pages() slot: above the
+ * single-page slots of its own mapcache with per-vCPU page tables, otherwise
+ * at its stride of the domain-wide multipage area.
+ */
+static unsigned int multipage_first_slot(const struct vcpu *v)
+{
+    if ( v->domain->arch.asi.vcpu_pt )
+        return MAPCACHE_PERVCPU_ENTRIES;
+
+    return PFN_DOWN(MAPCACHE_MULTIPAGE_START(v) - MAPCACHE_VIRT_START);
+}
+
+/*
+ * Multipage mappings come from slots of the vCPU whose page tables are
+ * loaded, which no other vCPU uses, and bypass the maphash and the
+ * garbage/epoch machinery: at unmap a mapping's PTEs are zapped, and their
+ * translations dropped from this CPU's TLB, at their addresses and at their
+ * aliases in the per-domain mirror.
+ */
+void *map_domain_pages(const mfn_t *mfn, unsigned int nr)
+{
+    unsigned long flags;
+    unsigned int i, first;
+    struct vcpu *v;
+    int idx;
+
+    if ( !nr || nr > MAPCACHE_MULTIPAGE_ENTRIES )
+    {
+        ASSERT_UNREACHABLE();
+        return NULL;
+    }
+
+    if ( nr == 1 )
+        return map_domain_page(mfn[0]);
+
+    /* Early boot, or the idle vCPU's page tables: no multipage slots. */
+    v = pgtable_current_vcpu();
+    if ( !v || is_idle_vcpu(v) )
+    {
+        BUG_ON(opt_vmap_strict);
+        printk_once(XENLOG_WARNING
+                    "%pS: map_domain_pages() falling back to vmap()\n",
+                    __builtin_return_address(0));
+        return vmap(mfn, nr);
+    }
+
+    first = multipage_first_slot(v);
+
+    local_irq_save(flags);
+
+    idx = bitmap_find_free_region(&v->arch.mapcache.multipage_inuse,
+                                  MAPCACHE_MULTIPAGE_ENTRIES,
+                                  get_order_from_pages(nr));
+    if ( idx >= 0 )
+        for ( i = 0; i < nr; i++ )
+            l1e_write(&MAPCACHE_L1ENT(first + idx + i),
+                      l1e_from_mfn(mfn[i], __PAGE_HYPERVISOR_RW));
+
+    local_irq_restore(flags);
+
+    if ( idx < 0 )
+        return NULL;
+
+    return (void *)MAPCACHE_VIRT_START + pfn_to_paddr(first + idx);
+}
+
+void unmap_domain_pages(const void *ptr, unsigned int nr)
+{
+    unsigned long va = (unsigned long)ptr & PAGE_MASK;
+    unsigned long flags, slot;
+    unsigned int idx, first, i;
+    struct vcpu *v;
+
+    BUG_ON(!nr);
+
+    if ( nr == 1 )
+    {
+        unmap_domain_page(ptr);
+        return;
+    }
+
+    if ( va >= VMAP_VIRT_START && va < VMAP_VIRT_END )
+    {
+        vunmap((void *)va);
+        return;
+    }
+
+    v = pgtable_current_vcpu();
+    BUG_ON(!v || is_idle_vcpu(v) || va < MAPCACHE_VIRT_START);
+
+    first = multipage_first_slot(v);
+    slot = PFN_DOWN(va - MAPCACHE_VIRT_START);
+    BUG_ON(slot < first || slot - first >= MAPCACHE_MULTIPAGE_ENTRIES);
+
+    idx = slot - first;
+    BUG_ON(nr > MAPCACHE_MULTIPAGE_ENTRIES - idx);
+
+    local_irq_save(flags);
+
+    for ( i = 0; i < nr; i++ )
+    {
+        unsigned long addr = va + i * PAGE_SIZE;
+
+        ASSERT(l1e_get_flags(MAPCACHE_L1ENT(slot + i)) & _PAGE_PRESENT);
+        l1e_write(&MAPCACHE_L1ENT(slot + i), l1e_empty());
+        flush_tlb_one_local(addr);
+        if ( !is_pv_64bit_vcpu(v) )
+            flush_tlb_one_local(addr - PERDOMAIN_VIRT_START +
+                                PERDOMAIN_ALT_VIRT_START);
+    }
+
+    bitmap_release_region(&v->arch.mapcache.multipage_inuse, idx,
+                          get_order_from_pages(nr));
+
+    local_irq_restore(flags);
+}
+
 void mapcache_domain_init(struct domain *d)
 {
     struct mapcache_domain *dcache = &d->arch.pv.mapcache;
@@ -359,7 +492,7 @@ void mapcache_domain_init(struct domain *d)
 
     BUILD_BUG_ON(MAPCACHE_VIRT_END + PAGE_SIZE * (3 +
                  2 * PFN_UP(BITS_TO_LONGS(MAPCACHE_ENTRIES) * sizeof(long))) >
-                 MAPCACHE_VIRT_START + (PERDOMAIN_SLOT_MBYTES << 20));
+                 MAPCACHE_MULTIPAGE_VIRT_START);
     bitmap_pages = PFN_UP(BITS_TO_LONGS(MAPCACHE_ENTRIES) * sizeof(long));
     dcache->cache.inuse = (void *)MAPCACHE_VIRT_END + PAGE_SIZE;
     dcache->cache.garbage = dcache->cache.inuse +
@@ -376,12 +509,28 @@ int mapcache_vcpu_init(struct vcpu *v)
     unsigned long i;
     unsigned int ents, nr;
 
+    BUILD_BUG_ON(MAPCACHE_MULTIPAGE_ENTRIES > BITS_PER_LONG);
+
+    /* Without per-vCPU page tables, the vCPU's stride of the multipage area. */
+    if ( !is_idle_domain(d) && !d->arch.asi.vcpu_pt )
+    {
+        int rc = create_perdomain_mapping(v, MAPCACHE_MULTIPAGE_START(v),
+                                          MAPCACHE_MULTIPAGE_ENTRIES,
+                                          NIL(l1_pgentry_t *), NULL);
+
+        if ( rc )
+            return rc;
+    }
+
     if ( !has_mapcache(v) )
         return 0;
 
     cache = vcpu_mapcache(v, &dcache);
     if ( !dcache )
     {
+        BUILD_BUG_ON(MAPCACHE_PERVCPU_ENTRIES + MAPCACHE_MULTIPAGE_ENTRIES >
+                     MAPCACHE_ENTRIES);
+
         /* Per-vCPU bitmaps are an unsigned long each, in the vCPU itself. */
         cache->inuse = v->arch.mapcache.inuse;
         cache->garbage = v->arch.mapcache.garbage;
@@ -396,8 +545,10 @@ int mapcache_vcpu_init(struct vcpu *v)
 
     if ( ents > cache->entries )
     {
-        /* Populate page tables. */
-        int rc = create_perdomain_mapping(v, MAPCACHE_VIRT_START, ents,
+        /* Populate page tables, a per-vCPU cache's multipage slots included. */
+        int rc = create_perdomain_mapping(v, MAPCACHE_VIRT_START,
+                                          ents + (dcache ? 0
+                                                  : MAPCACHE_MULTIPAGE_ENTRIES),
                                           NIL(l1_pgentry_t *), NULL);
 
         /* Populate the domain-wide bit maps (kept in the per-domain area). */
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index 5bd9970fce..52d1ebc0e7 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -281,10 +281,24 @@ extern unsigned long xen_phys_start;
 #define MAPCACHE_VCPU_ENTRIES    (CONFIG_PAGING_LEVELS * CONFIG_PAGING_LEVELS)
 /* Single-page slots of a per-vCPU mapcache (vCPU-PT domains). */
 #define MAPCACHE_PERVCPU_ENTRIES 64
+/*
+ * Multipage slots of each vCPU: above the single-page ones of a per-vCPU
+ * mapcache, otherwise at the vCPU's stride of the multipage area.
+ */
+#define MAPCACHE_MULTIPAGE_ORDER    3
+#define MAPCACHE_MULTIPAGE_ENTRIES  (1U << MAPCACHE_MULTIPAGE_ORDER)
 #define MAPCACHE_ENTRIES         (MAX_VIRT_CPUS * MAPCACHE_VCPU_ENTRIES)
 #define MAPCACHE_VIRT_START      PERDOMAIN_VIRT_SLOT(1)
 #define MAPCACHE_VIRT_END        (MAPCACHE_VIRT_START + \
                                   MAPCACHE_ENTRIES * PAGE_SIZE)
+/* The multipage area, at the end of the sub-area. */
+#define MAPCACHE_MULTIPAGE_VA_SHIFT (MAPCACHE_MULTIPAGE_ORDER + PAGE_SHIFT)
+#define MAPCACHE_MULTIPAGE_VIRT_START \
+    (MAPCACHE_VIRT_START + (PERDOMAIN_SLOT_MBYTES << 20) - \
+     (MAX_VIRT_CPUS << MAPCACHE_MULTIPAGE_VA_SHIFT))
+#define MAPCACHE_MULTIPAGE_START(v) \
+    (MAPCACHE_MULTIPAGE_VIRT_START + \
+     ((v)->vcpu_id << MAPCACHE_MULTIPAGE_VA_SHIFT))
 
 /* Argument translation area. The third per-domain-mapping sub-area. */
 #define ARG_XLAT_VIRT_START      PERDOMAIN_VIRT_SLOT(2)
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 6b27af9eb5..3748e417ce 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -84,6 +84,9 @@ struct mapcache_vcpu {
         uint32_t      refcnt;
     } hash[MAPHASH_ENTRIES];
 
+    /* Which of the vCPU's map_domain_pages() slots are in use. */
+    unsigned long multipage_inuse;
+
     /* Accounting of a per-vCPU mapcache (vCPU-PT domains). */
     struct mapcache cache;
     /* Backing for cache.{inuse,garbage}. */
diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/asm/spec_ctrl.h
index b62229ab5d..d9ad94ddb0 100644
--- a/xen/arch/x86/include/asm/spec_ctrl.h
+++ b/xen/arch/x86/include/asm/spec_ctrl.h
@@ -88,6 +88,7 @@ extern uint8_t default_scf;
 extern int8_t opt_xpti_hwdom, opt_xpti_domu;
 
 extern bool opt_vcpu_pt_hwdom, opt_vcpu_pt_hvm;
+extern bool opt_vmap_strict;
 
 extern bool cpu_has_bug_l1tf;
 extern int8_t opt_pv_l1tf_hwdom, opt_pv_l1tf_domu;
diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c
index c86f5ff886..3c52916eda 100644
--- a/xen/arch/x86/spec_ctrl.c
+++ b/xen/arch/x86/spec_ctrl.c
@@ -86,6 +86,9 @@ bool __ro_after_init opt_bp_spec_reduce = true;
 
 static bool __initdata opt_ibpb_alt;
 
+/* BUG() where map_domain_pages() would fall back to vmap() (vmap-strict). */
+bool __ro_after_init opt_vmap_strict;
+
 /* Give each vCPU of an HVM domain its own per-domain area (vCPU-PT). */
 bool __ro_after_init opt_vcpu_pt_hvm;
 bool __ro_after_init opt_vcpu_pt_hwdom;
@@ -591,6 +594,8 @@ static int __init cf_check parse_asi(const char *s)
                     rc = -EINVAL;
                 }
             }
+            else if ( (val = parse_boolean("vmap-strict", s, ss)) >= 0 )
+                opt_vmap_strict = val;
             else if ( (val = parse_boolean("vcpu-pt", s, ss)) != -1 )
             {
                 switch ( val )
@@ -840,6 +845,8 @@ static void __init print_details(enum ind_thunk thunk)
             printk("  ASI features for PV VMs:%s\n",
                    sparse_dmap_pv() && !opt_xpti_domu
                                           ? " sparse-directmap" : " None");
+        printk("  ASI vmap-strict: %s\n",
+               opt_vmap_strict            ? "enabled"           : "disabled");
     }
 }
 
diff --git a/xen/include/xen/domain_page.h b/xen/include/xen/domain_page.h
index c89b149e54..bf45a4cf55 100644
--- a/xen/include/xen/domain_page.h
+++ b/xen/include/xen/domain_page.h
@@ -31,6 +31,27 @@ void *map_domain_page(mfn_t mfn);
  */
 void unmap_domain_page(const void *ptr);
 
+/*
+ * Map @nr page frames, not necessarily physically contiguous, at
+ * consecutive virtual addresses.  Returns the virtual address of the
+ * first frame, or NULL when no space is available.  As with
+ * map_domain_page(), the mapping is only valid within the current VCPU,
+ * and must be unmapped by it; unmap_domain_pages() takes the same @nr,
+ * and accepts a pointer carrying an in-page offset.  Implemented on x86
+ * only at present.
+ *
+ * @nr has an implementation-defined upper bound (x86:
+ * MAPCACHE_MULTIPAGE_ENTRIES).  Exceeding it is a caller bug rather than a
+ * transient failure, and fails the mapping; callers needing more pages
+ * than a per-VCPU window holds want vmap() directly.
+ *
+ * unmap_domain_pages() is fatal given a pointer or an @nr which indexes
+ * outside the current VCPU's multipage slots.  A wrong @nr within them
+ * is not detected: callers must pass the @nr they mapped with.
+ */
+void *map_domain_pages(const mfn_t *mfn, unsigned int nr);
+void unmap_domain_pages(const void *ptr, unsigned int nr);
+
 /*
  * Given a VA from map_domain_page(), return its underlying MFN.
  */
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470793.1679442 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxf-0001AL-Tq; Tue, 03 Nov 2026 23:30:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470793.1679442; Tue, 03 Nov 2026 23:30:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxf-00019S-HT; Tue, 03 Nov 2026 23:30:39 +0000
Received: by outflank-mailman (input) for mailman id 1470793;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000cT-VZ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cot4-20Zm;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo0-0000000EMFa-0SDF;
 Tue, 03 Nov 2026 23:20:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=Wl4nV3ZTDHnsWL9MvyITa+VNEqVOjsoYMCNqs+DR/ME=; b=DCH67ffzT10GOdQvjyNrsUDtsk
	KqP+JueGJBLXpmb3KMbMH1q3a8vxAlgitOTu9jhWg+30vnk5tp9epw1w+/6JUIvF+ARAZhMGsavgz
	/xZl/mSzoPv3jXEyJ+s/7DCme3WxS2zyP9I+nVev9cjulsmEJwtM65fhOflBqrYDAVBs=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 21/44] x86/spec-ctrl: wire the sparse directmap view into the asi= option
Date: Tue,  3 Nov 2026 17:13:43 -0500
Message-ID: <20261103-asi-hvm-v6-21-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Let asi= choose which domains run on the sparse view of the directmap,
when the hypervisor is built with CONFIG_SPARSE_DIRECTMAP:

 * `asi` and `asi=<bool>` enable or disable the sparse view, along with
   vCPU-PT, for every domain including the hardware domain, PV or PVH.
   HVM domains, a PVH hardware domain included, use the sparse view
   together with vCPU-PT, which gives them the mapcache it needs; PV
   domains all have one.  A PV domain on the sparse view keeps its
   domain-wide mapcache and per-domain mappings: the sparse view
   separates it from other domains, not its vCPUs from each other.

 * `asi=hvm=<bool>`, `asi=pv=<bool>` and `asi=dom0=<bool>` do the same
   for HVM or PV domains other than the hardware domain, or for the
   hardware domain, whatever its type: `asi=1,dom0=0` leaves the
   hardware domain out of ASI altogether.

 * A new `asi=directmap=<bool>` selects the sparse view for all domains,
   as `asi=vcpu-pt=<bool>` selects vCPU-PT; `vcpu-pt=` alone leaves the
   sparse view off.  On a hypervisor built without
   CONFIG_SPARSE_DIRECTMAP the forms enabling all features leave the
   sparse view off, and `directmap=` is rejected as invalid, as
   compiled-out `spec-ctrl=` sub-options are.  A domain type the build
   lacks is ignored, so that the sparse view is not built for nothing.

 * For now, a PV domain uses one of XPTI and the sparse view, not both.
   Enabled explicitly, for dom0, domUs or both, XPTI takes precedence:
   the PV domains it covers keep the full directmap, and the boot log
   says so.  Left to its default, XPTI yields: it is disabled for the PV
   domains using the sparse view, with a boot-log warning where it would
   otherwise be enabled, as the sparse view does not replace it yet (it
   still maps the xenheap and Xen's stacks).  Each domain's case is
   settled at its creation, and again if it becomes 32-bit, which XPTI
   does not cover: switch_compat() then puts a domain that XPTI kept off
   the sparse view on it, with the domain-wide mapcache, which release
   builds may not have set up for it.

The boot log gains a line with the directmap mode, "sparse" once a
sparse view is configured and "full" otherwise, and the "ASI features
for ..." lines, one for PV domUs now among them, say which domains use
the sparse view.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Follow "x86/spec-ctrl: introduce Address Space Isolation command line
  option": opt_vcpu_pt_hwdom's name, the development warning in
  parse_asi(), IS_ENABLED() in the boot log; pv= now replaces the line
  saying it is ignored.

Changes in v4:
- Docs, comments and message: "domains" throughout, not "guests"
  (Roger).
- Follow the rename of opt_vcpu_pt_hwdom to opt_pvh_vcpu_pt_hwdom and
  the move of the per-domain settings into d->arch.asi.
- pv= and dom0= move to the patch introducing asi=, beside hvm=;
  opt_sparse_dmap_hwdom and sparse_dmap_wanted()'s hardware-domain case
  to the patches that add the other knobs and sparse_dmap_wanted()
  (Roger).
- directmap= on a build without CONFIG_SPARSE_DIRECTMAP is rejected as
  invalid, as compiled-out spec-ctrl= sub-options are, rather than
  ignored with a warning (Roger).
- A PV domain that XPTI kept off the sparse view goes on it when it
  becomes 32-bit, which ends XPTI; it used to end up with neither.

Changes in v3:
- New in this version.
---
 docs/misc/xen-command-line.pandoc           |  30 +++++-
 xen/arch/x86/include/asm/sparse-directmap.h |   7 ++
 xen/arch/x86/pv/domain.c                    |  16 +++
 xen/arch/x86/spec_ctrl.c                    | 102 +++++++++++++++++---
 4 files changed, 138 insertions(+), 17 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 839d06da26..092c858f34 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -203,7 +203,7 @@ to appropriate auditing by Xen.  Argo is disabled by default.
     buggy or malicious other domain spamming the ring.
 
 ### asi (x86)
-> `= List of [ <bool>, {pv,hvm,dom0}=<bool>,
+> `= List of [ <bool>, {pv,hvm,dom0}=<bool>, directmap=<bool>,
 >              vcpu-pt=<bool> | vcpu-pt=hvm=<bool> ]`
 
 > Default: `false`
@@ -215,14 +215,16 @@ mitigations for certain speculative related attacks, at the cost of mapping
 sensitive information on-demand.  It might also offer some protection against
 unmitigated speculation-related attacks.
 
-The mechanisms currently implemented apply to HVM domains, including a PVH
-hardware domain.  PV domains, including a PV hardware domain, are unaffected.
+The mechanisms currently implemented are `vcpu-pt`, for HVM domains including
+a PVH hardware domain, and `directmap`, for all domains including the hardware
+domain, PV or PVH.  The plain boolean enables or disables both, wherever they
+apply.
 
 * `pv=`, `hvm=` and `dom0=` enable the features for PV domains or HVM domains
   other than the hardware domain, or for the hardware domain, PV or PVH.  The
   plain boolean does all three: `asi=1,dom0=0` leaves the hardware domain
-  out.  The forms naming no domain type (an un-suffixed `vcpu-pt=<bool>`)
-  cover the hardware domain too.
+  out.  The forms naming no domain type (an un-suffixed `vcpu-pt=<bool>`, and
+  `directmap=<bool>`) cover the hardware domain too.
 
 **WARNING: manual de-selection of enabled options will invalidate any
 protection offered by the feature.  The fine grained options provided below
@@ -231,6 +233,18 @@ are meant to be used for debugging purposes only.**
 * `vcpu-pt` gives each vCPU its own per-domain area: the per-domain slot of
   each vCPU's monitor table maps a region private to that vCPU.
 
+* `directmap` (only available when Xen is built with
+  `CONFIG_SPARSE_DIRECTMAP`) runs guest contexts on a sparse view of the
+  directmap, which maps the memory Xen needs to reach at all times (the Xen
+  heap, Xen's own image, firmware tables), while guest memory is mapped
+  transiently.  This selection is system-wide; `pv=`, `hvm=` and `dom0=`
+  make it for one domain type, along with the other features.  HVM domains use
+  the sparse view only together with `vcpu-pt`, and PV domains only without
+  XPTI, which yields to the sparse view unless enabled explicitly (see
+  `xpti`).  The whole-feature forms (`asi`, `asi=<bool>`, and `pv=`, `hvm=`
+  and `dom0=`) set this too, on builds that support it; on other builds they
+  leave it off.
+
 ### asid (x86)
 > `= <boolean>`
 
@@ -3132,6 +3146,12 @@ Meltdown for all domains.
 With `dom0` and `domu` it is possible to control page table isolation
 for dom0 or guest domains only.
 
+With `asi`, XPTI and the sparse directmap view (`asi=directmap`) exclude each
+other for a PV domain.  Enabled explicitly, as a whole or with `dom0` or
+`domu`, XPTI keeps the PV domains it covers off the sparse view, and the boot
+log says so.  Left to its default, XPTI is disabled for the PV domains using
+the sparse view, with a boot-log warning where it would otherwise be enabled.
+
 ### xsave (x86)
 > `= <boolean>`
 
diff --git a/xen/arch/x86/include/asm/sparse-directmap.h b/xen/arch/x86/include/asm/sparse-directmap.h
index 2f8b94f4c1..db4df82215 100644
--- a/xen/arch/x86/include/asm/sparse-directmap.h
+++ b/xen/arch/x86/include/asm/sparse-directmap.h
@@ -31,6 +31,10 @@ static inline bool sparse_dmap_configured(void)
     return opt_sparse_dmap_pv || opt_sparse_dmap_hvm || opt_sparse_dmap_hwdom;
 }
 
+static inline bool sparse_dmap_pv(void)    { return opt_sparse_dmap_pv; }
+static inline bool sparse_dmap_hvm(void)   { return opt_sparse_dmap_hvm; }
+static inline bool sparse_dmap_hwdom(void) { return opt_sparse_dmap_hwdom; }
+
 /* Whether a new domain of the given type is to use the sparse view. */
 static inline bool sparse_dmap_wanted(bool pv, bool hwdom)
 {
@@ -51,6 +55,9 @@ int sparse_dmap_drop_pagetable(mfn_t mfn);
 
 static inline bool sparse_dmap_configured(void) { return false; }
 static inline bool sparse_dmap_wanted(bool pv, bool hwdom) { return false; }
+static inline bool sparse_dmap_pv(void)    { return false; }
+static inline bool sparse_dmap_hvm(void)   { return false; }
+static inline bool sparse_dmap_hwdom(void) { return false; }
 static inline void sparse_dmap_init(void) {}
 static inline int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn,
                                          unsigned long nr, pte_attr_t flags)
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index f139d8f83c..579d6133f5 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -248,6 +248,20 @@ int switch_compat(struct domain *d)
     d->arch.has_32bit_shinfo = 1;
     d->arch.pv.is_32bit = true;
 
+    /*
+     * XPTI, cleared below, is for 64-bit domains.  A domain it kept off the
+     * sparse directmap view goes on it now if wanted, and the domain-wide
+     * mapcache the view needs is set up for the domain and its vCPUs.
+     */
+    if ( d->arch.pv.xpti && sparse_dmap_wanted(true, is_hardware_domain(d)) )
+    {
+        d->arch.asi.sparse_dmap = true;
+        mapcache_domain_init(d);
+        for_each_vcpu ( d, v )
+            if ( (rc = mapcache_vcpu_init(v)) )
+                goto undo_and_fail;
+    }
+
     /*
      * For 32bit PV guests the shared_info machine address must fit in a 32-bit
      * field within the guest's start_info structure.  We might need to free
@@ -301,6 +315,8 @@ int switch_compat(struct domain *d)
 
  undo_and_fail:
     d->arch.pv.is_32bit = d->arch.has_32bit_shinfo = false;
+    if ( d->arch.pv.xpti )
+        d->arch.asi.sparse_dmap = false;
     for_each_vcpu( d, v )
     {
         free_compat_arg_xlat(v);
diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c
index bcdcdf0476..c86f5ff886 100644
--- a/xen/arch/x86/spec_ctrl.c
+++ b/xen/arch/x86/spec_ctrl.c
@@ -387,6 +387,19 @@ int8_t __ro_after_init opt_xpti_domu = -1;
 
 static __init void xpti_init_default(void)
 {
+    /*
+     * XPTI and the sparse directmap view exclude each other for a PV domain
+     * (see spec_ctrl_init_domain()).  Enabled explicitly, XPTI takes
+     * precedence: the PV domains it covers stay off the sparse view.  Left to
+     * its default, it yields: it is off where the sparse view is asked for.
+     */
+    if ( !opt_dom0_pvh && opt_xpti_hwdom == 1 && sparse_dmap_hwdom() )
+        printk(XENLOG_ERR
+               "XPTI enabled, disabling Dom0 sparse-directmap\n");
+    if ( opt_xpti_domu == 1 && sparse_dmap_pv() )
+        printk(XENLOG_ERR
+               "XPTI enabled, disabling PV DomU sparse-directmap\n");
+
     if ( (boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) ||
          cpu_has_rdcl_no )
     {
@@ -397,10 +410,21 @@ static __init void xpti_init_default(void)
     }
     else
     {
+        bool yield_hwdom = opt_xpti_hwdom < 0 && !opt_dom0_pvh &&
+                           sparse_dmap_hwdom();
+        bool yield_domu = opt_xpti_domu < 0 && sparse_dmap_pv();
+
+        /* The default would be on here: say where it yields. */
+        if ( yield_hwdom || yield_domu )
+            printk(XENLOG_WARNING
+                   "XPTI defaults off for PV %s on the sparse directmap\n",
+                   yield_hwdom ? (yield_domu ? "Dom0 and DomU" : "Dom0")
+                               : "DomU");
+
         if ( opt_xpti_hwdom < 0 )
-            opt_xpti_hwdom = 1;
+            opt_xpti_hwdom = !sparse_dmap_hwdom();
         if ( opt_xpti_domu < 0 )
-            opt_xpti_domu = 1;
+            opt_xpti_domu = !sparse_dmap_pv();
     }
 }
 
@@ -491,6 +515,23 @@ static int __init cf_check parse_pv_l1tf(const char *s)
 }
 custom_param("pv-l1tf", parse_pv_l1tf);
 
+/*
+ * Set the sparse directmap view's knob for each domain type given.  A type
+ * the build lacks stays off, so that no view is built for it, and without
+ * CONFIG_SPARSE_DIRECTMAP all stay off.
+ */
+static void __init set_sparse_dmap(bool pv, bool hvm, bool hwdom, bool val)
+{
+#ifdef CONFIG_SPARSE_DIRECTMAP
+    if ( pv && IS_ENABLED(CONFIG_PV) )
+        opt_sparse_dmap_pv = val;
+    if ( hvm && IS_ENABLED(CONFIG_HVM) )
+        opt_sparse_dmap_hvm = val;
+    if ( hwdom )
+        opt_sparse_dmap_hwdom = val;
+#endif
+}
+
 static int __init cf_check parse_asi(const char *s)
 {
     static bool __initdata warned;
@@ -507,7 +548,10 @@ static int __init cf_check parse_asi(const char *s)
 
     /* Interpret 'asi' alone in its positive boolean form. */
     if ( *s == '\0' )
+    {
         opt_vcpu_pt_hwdom = opt_vcpu_pt_hvm = true;
+        set_sparse_dmap(true, true, true, true);
+    }
 
     do {
         ss = strchr(s, ',');
@@ -520,17 +564,33 @@ static int __init cf_check parse_asi(const char *s)
         case 0:
         case 1:
             opt_vcpu_pt_hwdom = opt_vcpu_pt_hvm = val;
+            set_sparse_dmap(true, true, true, val);
             break;
 
         default:
             if ( (val = parse_boolean("pv", s, ss)) >= 0 )
-                printk(XENLOG_WARNING
-                       "No ASI feature applies to PV domains - ignoring 'asi=%.*s' setting\n",
-                       (int)(ss - s), s);
+                set_sparse_dmap(true, false, false, val);
             else if ( (val = parse_boolean("hvm", s, ss)) >= 0 )
+            {
                 opt_vcpu_pt_hvm = val;
+                set_sparse_dmap(false, true, false, val);
+            }
             else if ( (val = parse_boolean("dom0", s, ss)) >= 0 )
+            {
                 opt_vcpu_pt_hwdom = val;
+                set_sparse_dmap(false, false, true, val);
+            }
+            else if ( (val = parse_boolean("directmap", s, ss)) >= 0 )
+            {
+                /* System-wide: every domain type, the hardware domain too. */
+                if ( IS_ENABLED(CONFIG_SPARSE_DIRECTMAP) )
+                    set_sparse_dmap(true, true, true, val);
+                else
+                {
+                    no_config_param("SPARSE_DIRECTMAP", "asi", s, ss);
+                    rc = -EINVAL;
+                }
+            }
             else if ( (val = parse_boolean("vcpu-pt", s, ss)) != -1 )
             {
                 switch ( val )
@@ -759,11 +819,28 @@ static void __init print_details(enum ind_thunk thunk)
            opt_pv_l1tf_domu  ? "enabled"  : "disabled");
 #endif
 
-    printk("  ASI features for Dom0:%s\n",
-           opt_dom0_pvh && opt_vcpu_pt_hwdom ? " vCPU-PT" : " None");
-    if ( IS_ENABLED(CONFIG_HVM) )
-        printk("  ASI features for HVM VMs:%s\n",
-               opt_vcpu_pt_hvm               ? " vCPU-PT" : " None");
+    {
+        bool hwdom_pt = opt_dom0_pvh && opt_vcpu_pt_hwdom;
+        bool hwdom_sd = sparse_dmap_hwdom() &&
+                        (opt_dom0_pvh ? hwdom_pt : !opt_xpti_hwdom);
+
+        printk("  ASI directmap mode: %s\n",
+               sparse_dmap_configured()   ? "sparse"            : "full");
+        printk("  ASI features for Dom0:%s%s%s\n",
+               hwdom_pt || hwdom_sd       ? ""                  : " None",
+               hwdom_pt                   ? " vCPU-PT"          : "",
+               hwdom_sd                   ? " sparse-directmap" : "");
+        if ( IS_ENABLED(CONFIG_HVM) )
+            printk("  ASI features for HVM VMs:%s%s%s\n",
+                   opt_vcpu_pt_hvm        ? ""                  : " None",
+                   opt_vcpu_pt_hvm        ? " vCPU-PT"          : "",
+                   opt_vcpu_pt_hvm && sparse_dmap_hvm()
+                                          ? " sparse-directmap" : "");
+        if ( IS_ENABLED(CONFIG_PV) )
+            printk("  ASI features for PV VMs:%s\n",
+                   sparse_dmap_pv() && !opt_xpti_domu
+                                          ? " sparse-directmap" : " None");
+    }
 }
 
 static bool __init check_smt_enabled(void)
@@ -1956,9 +2033,10 @@ void spec_ctrl_init_domain(struct domain *d)
 
     /*
      * The sparse directmap view needs a mapcache: PV domains all have one,
-     * HVM domains through per-vCPU page-tables.
+     * HVM domains through per-vCPU page-tables.  A PV domain using XPTI
+     * stays on the full directmap.
      */
-    d->arch.asi.sparse_dmap = (pv || d->arch.asi.vcpu_pt) &&
+    d->arch.asi.sparse_dmap = (pv ? !d->arch.pv.xpti : d->arch.asi.vcpu_pt) &&
                               sparse_dmap_wanted(pv, is_hardware_domain(d));
 }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470792.1679433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxf-00015b-FC; Tue, 03 Nov 2026 23:30:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470792.1679433; Tue, 03 Nov 2026 23:30:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxf-00013D-5m; Tue, 03 Nov 2026 23:30:39 +0000
Received: by outflank-mailman (input) for mailman id 1470792;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000cR-Ue
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotE-2nd9;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo6-0000000EMFa-2CES;
 Tue, 03 Nov 2026 23:20:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=ZOf/B1UVKOtb3aCxqsyxbTnFEMbHfy0ZTl7SCHGJvtY=; b=L3hfN98vo62L+nSTqXOD4KSUXO
	qNpyPmmtZkQ7eHEjXpQt8TtC5bDbE9Ml6sV8aT41QrolraK8mJk/tPAnnKPfbZrmlhKjLpsxi9s64
	uo7x6fk/IbLTo6Ta9yl/7tJ6G0o7QhH6KIcQsssGHP15BuWn6nnCfQjjkkjRWGFOs2V4=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 32/44] x86: move the saved register frame behind the vCPU state window
Date: Tue,  3 Nov 2026 17:13:54 -0500
Message-ID: <20261103-asi-hvm-v6-32-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

While a vCPU is not running, its register frame is saved in struct
vcpu: a xenheap page, mapped in every context, the sparse directmap view
included.  Under Address Space Isolation that leaves the general-purpose
registers of every descheduled vCPU reachable from other domains'
contexts, whether or not the vCPU's own domain is on the sparse view.

Keep the frame instead in a domain-heap page of the vCPU's own, mapped
for the life of the vCPU at a new slot (index 6) of its state window,
like the SVM VMCB and the VMX MSR list; indexes 3-5 are left for the
guest XSAVE area, which takes up to three pages.  Like the VMCB and MSR
list moves, this does not depend on asi=, and it applies to every guest
vCPU, PV and HVM: struct vcpu no longer holds a copy.  The page is
allocated in arch_vcpu_create() ahead of arch_vcpu_regs_init(), which
initialises the frame, and unmapped before it is freed, on the failure
path as at teardown.

An HVM vCPU using per-vCPU page tables has its window in its own page
tables.  For any other vCPU, PV ones included, the window is in the
per-domain area that all its domain's vCPUs share, which only that
domain's page tables map: a context on the sparse view reaches no other
domain's frames.  That includes a domain left off the sparse view, such
as dom0 under asi=1,dom0=0, whose vCPUs' frames are no longer mapped in
the contexts of the domUs on the sparse view.

__context_switch() saves the outgoing vCPU's frame while its page tables
are still loaded, and now restores the incoming vCPU's only after
write_ptbase(), once its window is mapped.  Nothing in between reads the
frame: set_xcr0(), the FPU restore, the ctxt_switch->to() hooks, and the
PSR and GDT updates.  Both copies go through the window address, with
interrupts off; a transient mapping would complete the lazy context
switch and re-enter __context_switch().

The save is skipped if the outgoing vCPU's page tables are no longer
loaded.  Only the shadow-mode paths which abandon a PV vCPU's page
tables early (update_cr3() failure in new_guest_cr3() and
_toggle_guest_pt()) leave them so, loading the idle page tables once
they have crashed the domain; anything else reaching that point is a
page-table tracking bug, fatal in every build.  After such a crash the
vCPU's saved frame is the one it was last switched in with, not its
registers at the crash, and that is what XEN_DOMCTL_getvcpucontext and
the debug keys report for it.

VCPU_MAP_REGS() returns the window address when the vCPU is running
here on its own page tables (v == current and this_cpu(pgtable_vcpu) ==
v), and otherwise a transient mapping of the page, which, for a single
page, cannot fail.  Its users all work on a vCPU other than the one
running here, normally paused or not yet run: vCPU creation, the
toolstack's vCPU context, the HVM CPU record, VCPUOP_initialise,
INIT/SIPI and S3 resets, a hypercall continued on another CPU, PV dom0
construction, and the debug-key dumps.  The vCPU's own page tables
being loaded is not enough: while a CPU holds a vCPU's state lazily
they are loaded there, but an IPI syncing that state for another CPU
can switch them away at any time.  VCPU_UNMAP_REGS() drops a transient
mapping with unmap_vcpu_state_page(), which also flushes this CPU's
translation.

The live frame on the pCPU's stack, which holds a running vCPU's
registers, is not affected.

Cost: a page per guest vCPU, and a transient mapping on each of the
cold paths above.  On every switch into a guest vCPU, the restore
reaches the frame through a 4KiB, non-global PTE in the per-domain
area, just after switch_cr3_cr4() has flushed the TLB, so it takes a
page walk, where struct vcpu was reached through a superpage of the
full directmap.  struct vcpu shrinks from 3072 to 2880 bytes (x86_64
defconfig).

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/domain.c             | 98 ++++++++++++++++++++++++++++++-
 xen/arch/x86/include/asm/config.h |  1 +
 xen/arch/x86/include/asm/domain.h | 26 +++++---
 3 files changed, 116 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 143f76babf..03f6572086 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -17,6 +17,7 @@
 #include <xen/cpu.h>
 #include <xen/delay.h>
 #include <xen/domain.h>
+#include <xen/domain_page.h>
 #include <xen/errno.h>
 #include <xen/event.h>
 #include <xen/grant_table.h>
@@ -493,6 +494,66 @@ unsigned int arch_domain_struct_memflags(void)
     return MEMF_bits(bits);
 }
 
+/*
+ * A vCPU keeps its register frame, while it is not running, in a domain-heap
+ * page of its own, mapped for the life of the vCPU at a fixed slot of its
+ * state window.
+ */
+static struct cpu_user_regs *regs_window(const struct vcpu *v)
+{
+    return (void *)VCPU_STATE_ADDR(v, VCPU_STATE_IDX_REGS);
+}
+
+static int vcpu_regs_alloc(struct vcpu *v)
+{
+    struct page_info *pg = alloc_domheap_page(v->domain, MEMF_no_owner);
+    mfn_t mfn;
+
+    if ( !pg )
+        return -ENOMEM;
+
+    mfn = page_to_mfn(pg);
+    clear_domain_page(mfn);
+    populate_perdomain_mapping(v, VCPU_STATE_ADDR(v, VCPU_STATE_IDX_REGS),
+                               &mfn, 1, __PAGE_HYPERVISOR_RW);
+    v->arch.regs_pg = pg;
+
+    return 0;
+}
+
+static void vcpu_regs_free(struct vcpu *v)
+{
+    struct page_info *pg = v->arch.regs_pg;
+
+    if ( !pg )
+        return;
+
+    unmap_vcpu_state(v, VCPU_STATE_IDX_REGS, 1);
+    v->arch.regs_pg = NULL;
+    free_domheap_page(pg);
+}
+
+struct cpu_user_regs *vcpu_map_regs(const struct vcpu *v)
+{
+    /*
+     * v's page tables being loaded is not enough: while this CPU holds v's
+     * state lazily, an IPI syncing that state for another CPU can switch
+     * them away at any time.
+     */
+    if ( v == current && this_cpu(pgtable_vcpu) == v )
+        return regs_window(v);
+
+    return __map_domain_page(v->arch.regs_pg);
+}
+
+void vcpu_unmap_regs(const struct vcpu *v, const struct cpu_user_regs *regs)
+{
+    if ( !regs || regs == regs_window(v) )
+        return;
+
+    unmap_vcpu_state_page(regs);
+}
+
 /* Initialise various registers to their architectural INIT/RESET state. */
 void arch_vcpu_regs_init(struct vcpu *v)
 {
@@ -533,6 +594,7 @@ int arch_vcpu_create(struct vcpu *v)
         BUILD_BUG_ON(VCPU_STATE_IDX_VMCB >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_N2VMCB >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_VMX_MSR >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_REGS >= VCPU_STATE_NR_PAGES);
         /* Page tables only; torn down with the rest of the per-domain area. */
         rc = create_perdomain_mapping(v, VCPU_STATE_START(v),
                                       VCPU_STATE_NR_PAGES,
@@ -547,6 +609,10 @@ int arch_vcpu_create(struct vcpu *v)
 
         vmce_init_vcpu(v);
 
+        /* The frame's storage, ahead of its initialisation. */
+        if ( (rc = vcpu_regs_alloc(v)) != 0 )
+            goto fail;
+
         arch_vcpu_regs_init(v);
 
         if ( (rc = init_vcpu_msr_policy(v)) )
@@ -589,6 +655,7 @@ int arch_vcpu_create(struct vcpu *v)
  fail:
     paging_vcpu_teardown(v);
     vcpu_destroy_fpu(v);
+    vcpu_regs_free(v);
     xfree(v->arch.msrs);
     v->arch.msrs = NULL;
     free_pervcpu_mappings(v);
@@ -613,6 +680,8 @@ void arch_vcpu_destroy(struct vcpu *v)
     else
         ASSERT_UNREACHABLE();
 
+    vcpu_regs_free(v);
+
     free_pervcpu_mappings(v);
 }
 
@@ -2135,6 +2204,19 @@ static void load_default_gdt(unsigned int cpu)
     per_cpu(full_gdt_loaded, cpu) = false;
 }
 
+/*
+ * The register frame of p or n, for __context_switch(), which runs with
+ * interrupts off and with the vCPU's own page tables loaded: the window
+ * address serves.  A transient mapping is not an option from here: it would
+ * complete the lazy context switch and re-enter __context_switch().
+ */
+static struct cpu_user_regs *vcpu_user_regs(const struct vcpu *v)
+{
+    BUG_ON(this_cpu(pgtable_vcpu) != v);
+
+    return regs_window(v);
+}
+
 static void __context_switch(void)
 {
     struct cpu_user_regs *stack_regs = guest_cpu_user_regs();
@@ -2149,7 +2231,17 @@ static void __context_switch(void)
     if ( !is_idle_domain(pd) )
     {
         ASSERT(read_atomic(&p->dirty_cpu) == cpu);
-        memcpy(&p->arch._user_regs, stack_regs, CTXT_SWITCH_STACK_BYTES);
+        /*
+         * p's frame is reached through its state window, mapped while p's
+         * own page tables are loaded, as they normally still are here.  Not
+         * so after the shadow-mode paths which abandon a vCPU's tables early
+         * (update_cr3() failure), which have crashed the domain: the frame
+         * is left unsaved.  A transient mapping would re-enter this function.
+         */
+        if ( likely(this_cpu(pgtable_vcpu) == p) )
+            memcpy(vcpu_user_regs(p), stack_regs, CTXT_SWITCH_STACK_BYTES);
+        else
+            BUG_ON(!domain_shutting_down(pd));
         vcpu_save_fpu(p);
         pd->arch.ctxt_switch->from(p);
     }
@@ -2165,7 +2257,6 @@ static void __context_switch(void)
 
     if ( !is_idle_domain(nd) )
     {
-        memcpy(stack_regs, &n->arch._user_regs, CTXT_SWITCH_STACK_BYTES);
         if ( cpu_has_xsave )
         {
             if ( !set_xcr0(n->arch.xcr0 ?: XSTATE_FP_SSE) )
@@ -2189,6 +2280,9 @@ static void __context_switch(void)
 
     write_ptbase(n);
 
+    if ( !is_idle_domain(nd) )
+        memcpy(stack_regs, vcpu_user_regs(n), CTXT_SWITCH_STACK_BYTES);
+
 #ifdef CONFIG_PV
     /* Prefetch the VMCB if we expect to use it later in the context switch */
     if ( using_svm() && is_pv_64bit_domain(nd) && !is_idle_domain(nd) )
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index 8a265e25c8..c8d4a8ddc7 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -311,6 +311,7 @@ extern unsigned long xen_phys_start;
 #define VCPU_STATE_IDX_VMCB      0
 #define VCPU_STATE_IDX_N2VMCB    1
 #define VCPU_STATE_IDX_VMX_MSR   2
+#define VCPU_STATE_IDX_REGS      6
 
 #define ELFSIZE 64
 
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 457eb69ace..6b27af9eb5 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -633,11 +633,12 @@ struct pv_vcpu
 struct arch_vcpu
 {
     /*
-     * The vCPU's register frame while it is not running: __context_switch()
-     * copies it here from the stack when the vCPU is switched out, and back
-     * when it is switched in.  Everything else goes through VCPU_MAP_REGS().
+     * The page holding the vCPU's register frame while it is not running,
+     * mapped in its state window: __context_switch() copies the frame there
+     * from the stack when the vCPU is switched out, and back when it is
+     * switched in.  Everything else goes through VCPU_MAP_REGS().
      */
-    struct cpu_user_regs _user_regs;
+    struct page_info *regs_pg;
 
     /* Debug registers. */
     unsigned long dr[4];
@@ -752,12 +753,20 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
  * registers for code working on a vCPU other than the one running (whose
  * registers are on the stack, see guest_cpu_user_regs()).
  *
+ * The frame is in the vCPU's state window: the window address serves while
+ * the vCPU runs here on its own page tables, and the page is mapped
+ * transiently otherwise, which cannot fail.
+ *
  * The pointer is valid until VCPU_UNMAP_REGS(), which clears it.  A mapping
- * must not be held across a scheduling point.
+ * must not be held across a scheduling point: a transient one is only valid
+ * on the pCPU which made it.
  *
  * @param v Owner of the register frame
  */
-#define VCPU_MAP_REGS(v) (&(v)->arch._user_regs)
+struct cpu_user_regs *vcpu_map_regs(const struct vcpu *v);
+void vcpu_unmap_regs(const struct vcpu *v, const struct cpu_user_regs *regs);
+
+#define VCPU_MAP_REGS(v) vcpu_map_regs(v)
 
 /*
  * Drops the mapping of a vCPU's register frame and nullifies its pointer.
@@ -765,7 +774,10 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
  * @param v Owner of the register frame
  * @param r Register frame of v, from VCPU_MAP_REGS()
  */
-#define VCPU_UNMAP_REGS(v, r) do { (void)(v); (r) = NULL; } while ( false )
+#define VCPU_UNMAP_REGS(v, r) do {  \
+    vcpu_unmap_regs(v, r);          \
+    (r) = NULL;                     \
+} while ( false )
 
 void arch_vcpu_regs_init(struct vcpu *v);
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470788.1679407 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxd-0000ew-TU; Tue, 03 Nov 2026 23:30:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470788.1679407; Tue, 03 Nov 2026 23:30:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxd-0000ep-Qy; Tue, 03 Nov 2026 23:30:37 +0000
Received: by outflank-mailman (input) for mailman id 1470788;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000c7-Rs
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotA-2VvB;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnx-0000000EMFa-2Ybs;
 Tue, 03 Nov 2026 23:20:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=RVROnRhnJ2CS9YJZ5lc9Ti4SNS+seTPBJxsek/UlS70=; b=VmLahDTeSZ7gRrgAACDuCbK0mK
	EG88uRdkFAszPuE9CCY26HvPqblM6gPUNGZvxlcgCDyHiQgXfEkyTXRb+trlIiV+ZyB4gUiug/y7N
	pZ2gCnlty+ZYdzv/oYCsYVW+4RwHxGFEph4l2kBJS4qM9AsQKPi0X4wF4QV2yFO8WxsU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 18/44] x86/domain_page: key the directmap fast paths on the loaded view
Date: Tue,  3 Nov 2026 17:13:40 -0500
Message-ID: <20261103-asi-hvm-v6-18-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

map_domain_page() returns directmap addresses whenever it can: for any
MFN the directmap covers in release builds, and for vCPUs without a
mapcache.  Once guest contexts may run on the sparse view of the
directmap, modify this to take the fast path returning the directmap
address only when the full directmap is loaded.

The release-build shortcut ahead of the vCPU lookup looks at the vCPU
whose page-tables are loaded, without completing a lazy context
switch: if that vCPU is not on the sparse view, its page-tables map
the page through the directmap, and completing the switch would only
move the CPU to the idle vCPU's page-tables, which map it too.

A vCPU on the sparse view always has a mapcache: HVM ones through
per-vCPU page-tables, PV ones through the domain-wide mapcache, which
mapcache_domain_init() now sets up for a domain using the sparse view in
release builds too, rather than only when the directmap does not cover
all memory.

map_domain_page_global() mappings must be valid in every context: use
vmap() for all of them once a sparse view is configured, as
arch_mfns_in_directmap() then says.

Add d->arch.asi.sparse_dmap for this; nothing sets it yet.

No functional change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v4:
- d->arch.sparse_dmap is now a one-bit field of d->arch.asi, beside
  vcpu_pt.
- Wrap a line that reached 80 columns.
- Drop sparse_dmap_active: d->arch.asi.sparse_dmap alone says whether a
  domain's root page-tables carry the sparse view (Roger).  Builds
  without CONFIG_SPARSE_DIRECTMAP compile the test out, as before.
- Drop the second directmap check after the vCPU lookup: the
  !cache->inuse case covers it.

Changes in v3:
- New in this version.
---
 xen/arch/x86/domain_page.c        | 34 ++++++++++++++++++++++++++++---
 xen/arch/x86/include/asm/domain.h |  3 +++
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 770fee80a4..6b662706fb 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -56,6 +56,13 @@ static inline struct vcpu *mapcache_current_vcpu(void)
     return ACCESS_ONCE(this_cpu(pgtable_vcpu));
 }
 
+/* Whether @v's page-tables carry the sparse view of the directmap. */
+static bool on_sparse_dmap(const struct vcpu *v)
+{
+    return IS_ENABLED(CONFIG_SPARSE_DIRECTMAP) &&
+           v->domain->arch.asi.sparse_dmap;
+}
+
 /*
  * The accounting for v's mapcache: its own for a vCPU-PT domain, the domain's
  * otherwise, in which case *dcache is set so the caller takes the domain-wide
@@ -135,9 +142,19 @@ void *map_domain_page(mfn_t mfn)
 
 #ifdef NDEBUG
     if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
-        return mfn_to_virt(mfn_x(mfn));
+    {
+        const struct vcpu *pt_vcpu = this_cpu(pgtable_vcpu);
+
+        /*
+         * The page-tables loaded map @mfn through the directmap, unless they
+         * carry the sparse view.
+         */
+        if ( !pt_vcpu || !on_sparse_dmap(pt_vcpu) )
+            return mfn_to_virt(mfn_x(mfn));
+    }
 #endif
 
+    /* No vCPU (early boot), or no mapcache: the full directmap is loaded. */
     v = mapcache_current_vcpu();
     if ( !v )
         return mfn_to_virt(mfn_x(mfn));
@@ -145,7 +162,10 @@ void *map_domain_page(mfn_t mfn)
     cache = vcpu_mapcache(v, &dcache);
     vcache = &v->arch.mapcache;
     if ( !cache->inuse )
+    {
+        ASSERT(!on_sparse_dmap(v));
         return mfn_to_virt(mfn_x(mfn));
+    }
 
     perfc_incr(map_domain_page_count);
 
@@ -294,7 +314,11 @@ void mapcache_domain_init(struct domain *d)
     ASSERT(is_pv_domain(d));
 
 #ifdef NDEBUG
-    if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    /*
+     * Not needed when the directmap loaded for the domain covers everything.
+     */
+    if ( !d->arch.asi.sparse_dmap && !mem_hotplug &&
+         max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
         return;
 #endif
 
@@ -378,8 +402,12 @@ void *map_domain_page_global(mfn_t mfn)
              system_state < SYS_STATE_active) ||
             local_irq_is_enabled()));
 
+    /*
+     * Global mappings must hold in every context: a sparse view of the
+     * directmap rules the directmap out.
+     */
 #ifdef NDEBUG
-    if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
         return mfn_to_virt(mfn_x(mfn));
 #endif
 
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 7076e38848..f84ac15759 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -490,6 +490,9 @@ struct arch_domain
     struct {
         /* Give each vCPU its own per-domain area (HVM only). */
         bool vcpu_pt:1;
+
+        /* The domain's root page-tables carry the sparse directmap view. */
+        bool sparse_dmap:1;
     } asi;
 
     /* Emulated devices enabled bitmap. */
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470798.1679469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxi-0001o1-Kz; Tue, 03 Nov 2026 23:30:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470798.1679469; Tue, 03 Nov 2026 23:30:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxh-0001kt-TS; Tue, 03 Nov 2026 23:30:41 +0000
Received: by outflank-mailman (input) for mailman id 1470798;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000cv-3D
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cots-3qoi;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo3-0000000EMFa-3OLA;
 Tue, 03 Nov 2026 23:20:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=LIuKm5SuhINw4v3U+2tzQzALxjgkASc2Xl749bMONok=; b=ePeXpb1Mh7jUMF3PfGRZTYMZZM
	bkbxwnP++45FDS7zVDwtzdsw9mDdhLoY0jiznArR1b3LzG6KCMV4Cf901E0dJy9pbnbk3w6fa+RSG
	H55VCMcyJfK0v1FNpM6AWsA/lZMJjbw5xcSks0BPiWk8puBsYV+jqbvm0rcUBW7RkNIQ=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 26/44] x86/svm: introduce SVM_MAP_VMCB() and SVM_UNMAP_VMCB()
Date: Tue,  3 Nov 2026 17:13:48 -0500
Message-ID: <20261103-asi-hvm-v6-26-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Some accessors of a vCPU's VMCB can run with that vCPU paused, from
another vCPU's context: context save/load, the segment and CPL getters,
PAT/TSC/intercept updates reachable from toolstack operations, vm_event,
the 'v' debug key, and construct_vmcb() itself, which runs before the
vCPU ever entered guest context.  svm_nested_features_on_efer_update()
is among them: it is reachable remotely via hvm_load_cpu_ctxt() ->
svm_update_guest_efer().

Route them through the new SVM_MAP_VMCB() and SVM_UNMAP_VMCB();
construct_vmcb() takes the VMCB from its caller.  svm_set_tsc_offset()
needs both VMCBs rather than just the active one, so it maps them
individually via SVM_MAP_VMCB_ONE().  A vCPU stays in nested guest mode
across a deschedule or a pause, so this path can run remotely with the
L2 VMCB active; guest mode does not imply v == current.  Hot vmexit-path
accesses all have v == current and keep dereferencing svm->vmcb
directly.

SVM_MAP_VMCB(), SVM_MAP_VMCB_ONE() and SVM_UNMAP_VMCB() are macros over
svm_vmcb_map(), svm_vmcb_map_one() and svm_vmcb_unmap(), so that
SVM_UNMAP_VMCB() can clear the caller's pointer, as
VCPU_UNMAP_XSAVE_AREA() does.

No functional change: the helpers return the VMCB's existing address.
They prepare for moving VMCBs off always-mapped memory, where a VMCB's
mapping is valid only in its own vCPU's context.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

Changes in v5:
- Map and unmap through SVM_MAP_VMCB(), SVM_MAP_VMCB_ONE() and
  SVM_UNMAP_VMCB(), which clears the pointer (George).
- Retitle (was: "x86/svm: introduce svm_vmcb_map() and
  svm_vmcb_unmap()").

Changes in v4:
- New in this version.
---
 xen/arch/x86/hvm/svm/nestedsvm.c |   4 +-
 xen/arch/x86/hvm/svm/svm.c       | 133 +++++++++++++++++++++++--------
 xen/arch/x86/hvm/svm/vmcb.c      |  29 ++++++-
 xen/arch/x86/hvm/svm/vmcb.h      |  18 +++++
 4 files changed, 145 insertions(+), 39 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index 128008321d..f5ce3e485c 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -1528,7 +1528,7 @@ void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
  */
 void svm_nested_features_on_efer_update(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
     u32 general2_intercepts;
     vintr_t vintr;
@@ -1585,6 +1585,8 @@ void svm_nested_features_on_efer_update(struct vcpu *v)
             vmcb_set_general2_intercepts(vmcb, general2_intercepts);
         }
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 void __init start_nested_svm(struct hvm_function_table *hvm_function_table)
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 1628c5e0ae..b539406f0c 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -107,7 +107,7 @@ static void cf_check svm_cpu_down(void)
 static void cf_check svm_update_guest_cr(
     struct vcpu *v, unsigned int cr, unsigned int flags)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     uint64_t value;
 
     switch ( cr )
@@ -173,11 +173,13 @@ static void cf_check svm_update_guest_cr(
     default:
         BUG();
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static void cf_check svm_update_guest_efer(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     unsigned long guest_efer = v->arch.hvm.guest_efer,
         xen_efer = read_efer();
 
@@ -204,6 +206,7 @@ static void cf_check svm_update_guest_efer(struct vcpu *v)
     guest_efer |= EFER_SVME;
 
     vmcb_set_efer(vmcb, guest_efer);
+    SVM_UNMAP_VMCB(v, vmcb);
 
     ASSERT(nestedhvm_enabled(v->domain) ||
            !nsvm_efer_svm_enabled(v));
@@ -352,7 +355,7 @@ static void svm_restore_dr(struct vcpu *v)
 
 static int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
 
     if ( vmcb->event_inj.v &&
          hvm_event_needs_reinjection(vmcb->event_inj.type,
@@ -362,13 +365,15 @@ static int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
         c->error_code = vmcb->event_inj.ec;
     }
 
+    SVM_UNMAP_VMCB(v, vmcb);
+
     return 1;
 }
 
 static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
 {
     struct page_info *page = NULL;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb;
     struct p2m_domain *p2m = p2m_get_hostp2m(v->domain);
 
     if ( c->pending_valid )
@@ -417,6 +422,8 @@ static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
     svm_update_guest_cr(v, 0, 0);
     svm_update_guest_cr(v, 4, 0);
 
+    vmcb = SVM_MAP_VMCB(v);
+
     if ( !paging_mode_shadow(v->domain) )
     {
         vmcb_set_np(vmcb, true);
@@ -436,6 +443,8 @@ static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
         vmcb->event_inj.raw = 0;
 
     vmcb->cleanbits.raw = 0;
+    SVM_UNMAP_VMCB(v, vmcb);
+
     paging_update_paging_modes(v);
 
     return 0;
@@ -443,7 +452,7 @@ static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
 
 static void svm_save_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
 
     data->sysenter_cs      = vmcb->sysenter_cs;
     data->sysenter_esp     = vmcb->sysenter_esp;
@@ -453,11 +462,13 @@ static void svm_save_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
     data->msr_star         = vmcb->star;
     data->msr_cstar        = vmcb->cstar;
     data->msr_syscall_mask = vmcb->sfmask;
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static void svm_load_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
 
     vmcb->lstar        = data->msr_lstar;
     vmcb->star         = data->msr_star;
@@ -467,6 +478,9 @@ static void svm_load_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
     vmcb->sysenter_cs  = data->sysenter_cs;
     vmcb->sysenter_esp = data->sysenter_esp;
     vmcb->sysenter_eip = data->sysenter_eip;
+
+    SVM_UNMAP_VMCB(v, vmcb);
+
     v->arch.hvm.guest_efer = data->msr_efer;
     svm_update_guest_efer(v);
 }
@@ -492,7 +506,7 @@ static int cf_check svm_load_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt)
 
 static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     unsigned int intr_shadow = 0;
 
     if ( vmcb->int_stat.intr_shadow )
@@ -503,13 +517,15 @@ static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v)
          : (vmcb_get_general1_intercepts(vmcb) & GENERAL1_INTERCEPT_IRET) )
         intr_shadow |= HVM_INTR_SHADOW_NMI;
 
+    SVM_UNMAP_VMCB(v, vmcb);
+
     return intr_shadow;
 }
 
 static void cf_check svm_set_interrupt_shadow(
     struct vcpu *v, unsigned int intr_shadow)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     bool block_nmi = intr_shadow & HVM_INTR_SHADOW_NMI;
 
     vmcb->int_stat.intr_shadow =
@@ -527,10 +543,13 @@ static void cf_check svm_set_interrupt_shadow(
 
         vmcb_set_general1_intercepts(vmcb, gen1);
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static int cf_check svm_guest_x86_mode(struct vcpu *v)
 {
+    /* Current only (see guest_cpu_user_regs() below): no mapping needed. */
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( unlikely(!(v->arch.hvm.guest_cr[0] & X86_CR0_PE)) )
@@ -544,8 +563,7 @@ static int cf_check svm_guest_x86_mode(struct vcpu *v)
 
 static void cf_check svm_cpuid_policy_changed(struct vcpu *v)
 {
-    struct svm_vcpu *svm = &v->arch.hvm.svm;
-    struct vmcb_struct *vmcb = svm->vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     const struct cpu_policy *cp = v->domain->arch.cpu_policy;
     u32 bitmap = vmcb_get_exception_intercepts(vmcb);
 
@@ -555,6 +573,7 @@ static void cf_check svm_cpuid_policy_changed(struct vcpu *v)
         bitmap &= ~(1U << X86_EXC_UD);
 
     vmcb_set_exception_intercepts(vmcb, bitmap);
+    SVM_UNMAP_VMCB(v, vmcb);
 
     /* Give access to MSR_SPEC_CTRL if the guest has been told about it. */
     svm_intercept_msr(v, MSR_SPEC_CTRL,
@@ -598,13 +617,18 @@ void svm_sync_vmcb(struct vcpu *v, enum vmcb_sync_state new_state)
 
 static unsigned int cf_check svm_get_cpl(struct vcpu *v)
 {
-    return vmcb_get_cpl(v->arch.hvm.svm.vmcb);
+    const struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
+    unsigned int cpl = vmcb_get_cpl(vmcb);
+
+    SVM_UNMAP_VMCB(v, vmcb);
+
+    return cpl;
 }
 
 static void cf_check svm_get_segment_register(
     struct vcpu *v, enum x86_segment seg, struct segment_register *reg)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
 
     ASSERT((v == current) || !vcpu_runnable(v));
 
@@ -645,12 +669,14 @@ static void cf_check svm_get_segment_register(
         *reg = (struct segment_register){};
         break;
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static void cf_check svm_set_segment_register(
     struct vcpu *v, enum x86_segment seg, struct segment_register *reg)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
 
     ASSERT((v == current) || !vcpu_runnable(v));
 
@@ -679,6 +705,7 @@ static void cf_check svm_set_segment_register(
     default:
         ASSERT_UNREACHABLE();
         domain_crash(v->domain);
+        SVM_UNMAP_VMCB(v, vmcb);
         return;
     }
 
@@ -716,33 +743,41 @@ static void cf_check svm_set_segment_register(
         ASSERT_UNREACHABLE();
         break;
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static int cf_check svm_set_guest_pat(struct vcpu *v, u64 gpat)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb;
 
     if ( paging_mode_shadow(v->domain) )
         return 0;
 
+    vmcb = SVM_MAP_VMCB(v);
     vmcb_set_g_pat(vmcb, gpat);
+    SVM_UNMAP_VMCB(v, vmcb);
+
     return 1;
 }
 
 static int cf_check svm_get_guest_pat(struct vcpu *v, u64 *gpat)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb_struct *vmcb;
 
     if ( paging_mode_shadow(v->domain) )
         return 0;
 
+    vmcb = SVM_MAP_VMCB(v);
     *gpat = vmcb_get_g_pat(vmcb);
+    SVM_UNMAP_VMCB(v, vmcb);
+
     return 1;
 }
 
 static void cf_check svm_set_tsc_offset(struct vcpu *v, uint64_t offset)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     struct vmcb_struct *n1vmcb, *n2vmcb;
     uint64_t n2_tsc_offset = 0;
     struct domain *d = v->domain;
@@ -750,25 +785,36 @@ static void cf_check svm_set_tsc_offset(struct vcpu *v, uint64_t offset)
     if ( !nestedhvm_enabled(d) )
     {
         vmcb_set_tsc_offset(vmcb, offset);
+        SVM_UNMAP_VMCB(v, vmcb);
         return;
     }
 
-    n1vmcb = vcpu_nestedhvm(v).nv_n1vmcx;
-    n2vmcb = vcpu_nestedhvm(v).nv_n2vmcx;
-
+    /*
+     * A vCPU stays in nested guest mode across a deschedule or a pause, so
+     * this can run remotely with the L2 VMCB active: map both explicitly.
+     */
     if ( nestedhvm_vcpu_in_guestmode(v) )
     {
+        const struct nestedvcpu *nv = &vcpu_nestedhvm(v);
+
+        n1vmcb = SVM_MAP_VMCB_ONE(v, nv->nv_n1vmcx, nv->nv_n1vmcx_pa);
+        n2vmcb = SVM_MAP_VMCB_ONE(v, nv->nv_n2vmcx, nv->nv_n2vmcx_pa);
+
         n2_tsc_offset = vmcb_get_tsc_offset(n2vmcb) -
                         vmcb_get_tsc_offset(n1vmcb);
         vmcb_set_tsc_offset(n1vmcb, offset);
+
+        SVM_UNMAP_VMCB(v, n2vmcb);
+        SVM_UNMAP_VMCB(v, n1vmcb);
     }
 
     vmcb_set_tsc_offset(vmcb, offset + n2_tsc_offset);
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static void cf_check svm_set_rdtsc_exiting(struct vcpu *v, bool enable)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     u32 general2_intercepts = vmcb_get_general2_intercepts(vmcb);
 
@@ -783,13 +829,14 @@ static void cf_check svm_set_rdtsc_exiting(struct vcpu *v, bool enable)
 
     vmcb_set_general1_intercepts(vmcb, general1_intercepts);
     vmcb_set_general2_intercepts(vmcb, general2_intercepts);
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 #ifdef CONFIG_VM_EVENT
 static void cf_check svm_set_descriptor_access_exiting(
     struct vcpu *v, bool enable)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     u32 mask = GENERAL1_INTERCEPT_IDTR_READ | GENERAL1_INTERCEPT_GDTR_READ
             | GENERAL1_INTERCEPT_LDTR_READ | GENERAL1_INTERCEPT_TR_READ
@@ -802,6 +849,7 @@ static void cf_check svm_set_descriptor_access_exiting(
         general1_intercepts &= ~mask;
 
     vmcb_set_general1_intercepts(vmcb, general1_intercepts);
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 #endif /* CONFIG_VM_EVENT */
 
@@ -1360,7 +1408,12 @@ static void cf_check svm_inject_event(const struct x86_event *event)
 
 static bool cf_check svm_event_pending(const struct vcpu *v)
 {
-    return v->arch.hvm.svm.vmcb->event_inj.v;
+    const struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
+    bool pending = vmcb->event_inj.v;
+
+    SVM_UNMAP_VMCB(v, vmcb);
+
+    return pending;
 }
 
 static void cf_check svm_cpu_dead(unsigned int cpu)
@@ -2318,45 +2371,55 @@ static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear)
 static bool cf_check svm_get_pending_event(
     struct vcpu *v, struct x86_event *info)
 {
-    const struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
+    bool pending = vmcb->event_inj.v;
 
-    if ( !vmcb->event_inj.v )
-        return false;
+    if ( pending )
+    {
+        info->vector = vmcb->event_inj.vector;
+        info->type = vmcb->event_inj.type;
+        info->error_code = vmcb->event_inj.ec;
+    }
 
-    info->vector = vmcb->event_inj.vector;
-    info->type = vmcb->event_inj.type;
-    info->error_code = vmcb->event_inj.ec;
+    SVM_UNMAP_VMCB(v, vmcb);
 
-    return true;
+    return pending;
 }
 
 static uint64_t cf_check svm_get_reg(struct vcpu *v, unsigned int reg)
 {
     struct vcpu *curr = current;
-    const struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     struct domain *d = v->domain;
+    uint64_t val = 0;
 
     switch ( reg )
     {
     case MSR_SPEC_CTRL:
-        return vmcb->spec_ctrl;
+        val = vmcb->spec_ctrl;
+        break;
 
     case MSR_SHADOW_GS_BASE:
         if ( v == curr )
             svm_sync_vmcb(v, vmcb_in_sync);
-        return vmcb->kerngsbase;
+        val = vmcb->kerngsbase;
+        break;
 
     default:
         printk(XENLOG_G_ERR "%s(%pv, 0x%08x) Bad register\n",
                __func__, v, reg);
         domain_crash(d);
-        return 0;
+        break;
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
+
+    return val;
 }
 
 static void cf_check svm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb_struct *vmcb = SVM_MAP_VMCB(v);
     struct domain *d = v->domain;
 
     switch ( reg )
@@ -2371,6 +2434,8 @@ static void cf_check svm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
         domain_crash(d);
         break;
     }
+
+    SVM_UNMAP_VMCB(v, vmcb);
 }
 
 static struct hvm_function_table __initdata_cf_clobber svm_function_table = {
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index a6f09672a7..5e193be9cd 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -43,11 +43,25 @@ void free_vmcb(struct vmcb_struct *vmcb)
     free_xenheap_page(vmcb);
 }
 
+struct vmcb_struct *svm_vmcb_map_one(const struct vcpu *v,
+                                     struct vmcb_struct *va, paddr_t pa)
+{
+    return va;
+}
+
+struct vmcb_struct *svm_vmcb_map(const struct vcpu *v)
+{
+    return svm_vmcb_map_one(v, v->arch.hvm.svm.vmcb, v->arch.hvm.svm.vmcb_pa);
+}
+
+void svm_vmcb_unmap(const struct vcpu *v, const struct vmcb_struct *vmcb)
+{
+}
+
 /* This function can directly access fields which are covered by clean bits. */
-static int construct_vmcb(struct vcpu *v)
+static int construct_vmcb(struct vcpu *v, struct vmcb_struct *vmcb)
 {
     struct svm_vcpu *svm = &v->arch.hvm.svm;
-    struct vmcb_struct *vmcb = svm->vmcb;
 
     vmcb->_general1_intercepts =
         GENERAL1_INTERCEPT_INTR        | GENERAL1_INTERCEPT_NMI         |
@@ -201,6 +215,7 @@ int svm_create_vmcb(struct vcpu *v)
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct svm_vcpu *svm = &v->arch.hvm.svm;
+    struct vmcb_struct *vmcb;
     int rc;
 
     if ( (nv->nv_n1vmcx == NULL) &&
@@ -211,7 +226,10 @@ int svm_create_vmcb(struct vcpu *v)
     }
 
     svm->vmcb = nv->nv_n1vmcx;
-    rc = construct_vmcb(v);
+
+    vmcb = SVM_MAP_VMCB(v);
+    rc = construct_vmcb(v, vmcb);
+    SVM_UNMAP_VMCB(v, vmcb);
     if ( rc != 0 )
     {
         free_vmcb(nv->nv_n1vmcx);
@@ -407,6 +425,7 @@ static void cf_check vmcb_dump(unsigned char ch)
 {
     struct domain *d;
     struct vcpu *v;
+    struct vmcb_struct *vmcb;
 
     printk("*********** VMCB Areas **************\n");
 
@@ -425,7 +444,9 @@ static void cf_check vmcb_dump(unsigned char ch)
                 continue;
             }
             printk("\tVCPU %d\n", v->vcpu_id);
-            svm_vmcb_dump("key_handler", v->arch.hvm.svm.vmcb);
+            vmcb = SVM_MAP_VMCB(v);
+            svm_vmcb_dump("key_handler", vmcb);
+            SVM_UNMAP_VMCB(v, vmcb);
 
             process_pending_softirqs();
         }
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 28dae325ce..d49c910d46 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -559,6 +559,24 @@ struct vmcb_struct {
 struct vmcb_struct *alloc_vmcb(void);
 void free_vmcb(struct vmcb_struct *vmcb);
 
+/*
+ * Access a VMCB of a vCPU that may not be current.  SVM_MAP_VMCB() takes
+ * the active VMCB, SVM_MAP_VMCB_ONE() a specific one.
+ */
+struct vmcb_struct *svm_vmcb_map_one(const struct vcpu *v,
+                                     struct vmcb_struct *va, paddr_t pa);
+struct vmcb_struct *svm_vmcb_map(const struct vcpu *v);
+void svm_vmcb_unmap(const struct vcpu *v, const struct vmcb_struct *vmcb);
+
+#define SVM_MAP_VMCB(v) svm_vmcb_map(v)
+#define SVM_MAP_VMCB_ONE(v, va, pa) svm_vmcb_map_one(v, va, pa)
+
+/* Drops the mapping of a VMCB and nullifies its pointer. */
+#define SVM_UNMAP_VMCB(v, vmcb) do {  \
+    svm_vmcb_unmap(v, vmcb);          \
+    (vmcb) = NULL;                    \
+} while ( false )
+
 int  svm_create_vmcb(struct vcpu *v);
 void svm_destroy_vmcb(struct vcpu *v);
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470797.1679478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxj-0001zZ-JB; Tue, 03 Nov 2026 23:30:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470797.1679478; Tue, 03 Nov 2026 23:30:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxi-0001xl-SL; Tue, 03 Nov 2026 23:30:42 +0000
Received: by outflank-mailman (input) for mailman id 1470797;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000ck-2I
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cotx-3yqC;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoG-0000000EMFa-2EMz;
 Tue, 03 Nov 2026 23:20:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=c8tN695W+rtN1RhSPiCaFplmtV0cEomDPq3ZGoUcUC8=; b=TBZcP5OrqDD/+cdHzIgjCNzMbb
	gaN18Y0vXeDJvJxK1h+FGqz/jPAdBEp2QzsyA3az8c639iJiCOWYQrtdTi54/UDHMM99XifdGEugw
	0JeOXNP5wk/ia41AOOrTtudbbOta9A7Mo4+NJr8e8ZtbIiRZxhRs3ondG6V55urnRUXw=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 44/44] x86/xstate: move guest XSAVE areas behind the vCPU state window
Date: Tue,  3 Nov 2026 17:14:06 -0500
Message-ID: <20261103-asi-hvm-v6-44-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Guest vCPUs' XSAVE areas hold guest-owned register state, yet live in
always-mapped memory: xenheap objects when they fit a page, vmap-backed
allocations on hardware (AMX-class) where they do not.  Under Address
Space Isolation both placements leave the state reachable from every
context.  Move them to individual domain-heap pages, installed once at
vCPU creation at a fixed reservation (indexes 3-5) in the per-vCPU
state window, following the pattern set by the SVM VMCB and VMX MSR
list relocations.  With this, all eight slots of the state window are
in use.

The seam introduced by the VCPU_MAP_XSAVE_AREA() wrappers now gains
its real implementation.  The window address serves when v runs here
on its own page tables: v == current, and this_cpu(pgtable_vcpu) == v.
Neither test suffices alone.  Inside the EFI runtime bracket, and after
a shadow-mode update_cr3() failure, `current`'s own page tables are not
loaded.  While a CPU holds v's state lazily, v's page tables are
loaded, but an IPI syncing that state for another CPU can switch them
away at any time.  The page-table test also structurally rules out one
vCPU reaching through a same-vcpu_id window address into another
domain's state, which a dispatch on `current` alone would have made
possible to get wrong silently.  With the owning vCPU running on its
tables, or for an idle vCPU, the map is a pointer fetch, so the hot
paths map nothing.  Otherwise (a paused, never-started or
lazily held vCPU) the full-area map uses map_domain_pages() and can
fail; those callers gained error handling in "x86/xstate: classify
xsave-area seam accesses by failure mode".  The prefix variant maps
only the area's first page, which the legacy region and header always
fit, and hence cannot fail.  A mapping of a single page is dropped with
unmap_vcpu_state_page(), which also flushes this CPU's translation of
it; unmap_domain_pages() flushes a multipage mapping itself.

__context_switch() saves the outgoing vCPU's FPU state after `current`
has moved to the incoming vCPU, with interrupts off, while the outgoing
vCPU's page tables -- and therefore its window -- are normally still
loaded.  It takes the window address through a path of its own,
vcpu_save_fpu_ctxt_switch(): the transient-mapping fallback must not
run from there, as it would sync the local execution state and
re-enter __context_switch().  The shadow-mode paths which abandon a
vCPU's page tables early (update_cr3() failure in new_guest_cr3() and
_toggle_guest_pt()) leave the idle tables loaded with the outgoing
vCPU's state still in registers.  Those paths have already crashed the
domain, so there is nothing worth saving, and the save is skipped there,
as the register frame's already is: both sit under one test of the
loaded page tables.  Anything else failing it is a page-table tracking
bug rather than a recoverable state, so it is fatal in every build.

The window reservation is fixed at three pages, sized for the largest
save area current hardware produces (AMX TILEDATA); xstate_init()
refuses, with an explanatory panic, hardware whose enabled feature
set exceeds it.  It does so on every boot, with or without asi=: every
guest vCPU's area moves.

Idle vCPUs keep a globally-reachable area (xenheap, or vmap space where
it exceeds a page, as with AMX) deliberately: it is scratch for
accesses which execute with a guest's page tables loaded
(read_bndcfgu(), xstate_set_init()) and holds no guest register state.
On such paths the area a guest's MPX state is transiently saved into
remains reachable from other contexts, as today.

The backing pages are caller-owned (no _PAGE_AVAIL0): the per-domain
teardown reclaims only the page tables, so xstate_free_save_area()
unmaps the pages from the window and frees them itself.  Without
per-vCPU page tables (every PV domain) the window is in the per-domain
area that all its domain's vCPUs share, which outlives a vCPU whose
creation fails.  A failed partial allocation unwinds in place, and
xstate_free_save_area() tolerates the resulting half-built state, which
arch_vcpu_create()'s failure path relies on.

Memory cost: sub-page areas (all non-AMX hardware) round up from a
2.7KiB xenheap object to a full page per vCPU.

The move does not depend on asi=, and applies to PV vCPUs as to HVM
ones.  A context switch now calls vcpu_xsave_area_ctxt_switch() for the
save, and vcpu_map_xsave_area() and vcpu_unmap_xsave_area() around the
restore, out of line, instead of reading v->arch.xsave_area.  The XRSTOR
following write_ptbase() reaches the area through a 4KiB, non-global PTE
in the per-domain area.  As switch_cr3_cr4() has just flushed every
non-global translation, that takes a page walk on every switch to a
guest vCPU, where a sub-page area, a xenheap object, was reached through
a superpage of the full directmap; the walk goes through the L1 table
which the register frame's restore has just walked.  On an Intel NUC, a
64-bit PV guest's vCPU context switch takes 15-30ns longer, with XPTI
off or on and against either the tree before the XSAVE work or the one
just before this change; code placement alone moves that measurement by
up to about 20ns between builds.  That was measured while the PV
guest's register frames were still in struct vcpu.

On AMX-class hardware, where the area takes three pages, a full-area
map for a vCPU other than the one running here goes through
map_domain_pages(): XEN_DOMCTL_getvcpuextstate and
XEN_DOMCTL_setvcpuextstate make one for PV save, restore and migration,
as the HVM XSAVE save record does for HVM guests.  The area is then
mapped in the calling vCPU's multipage slots, which only the calling
domain's page tables carry, and dropping the mapping flushes the
calling CPU's translations alone.  Each of those operations can now
fail with -ENOMEM.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.

xstate_init() now panics, with or without asi=, if the enabled XSAVE
features need more than the three pages the window reserves.  No
current hardware does.  Would you rather this did more, for instance
size the window's XSAVE range from the size found at boot, or fall back
to xenheap areas on such hardware?
---
 xen/arch/x86/domain.c             |  19 ++--
 xen/arch/x86/i387.c               |  23 +++-
 xen/arch/x86/include/asm/config.h |   3 +
 xen/arch/x86/include/asm/domain.h |  15 ++-
 xen/arch/x86/include/asm/i387.h   |   1 +
 xen/arch/x86/include/asm/xstate.h |  60 +++++------
 xen/arch/x86/xstate.c             | 172 +++++++++++++++++++++++++++++-
 7 files changed, 243 insertions(+), 50 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8222ad9e2a..f750ff4e6a 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -594,7 +594,11 @@ int arch_vcpu_create(struct vcpu *v)
         BUILD_BUG_ON(VCPU_STATE_IDX_VMCB >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_N2VMCB >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_VMX_MSR >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_XSAVE + VCPU_STATE_XSAVE_PAGES >
+                     VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_REGS >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_REGS < VCPU_STATE_IDX_XSAVE +
+                                           VCPU_STATE_XSAVE_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_EMUL >= VCPU_STATE_NR_PAGES);
         BUILD_BUG_ON(VCPU_STATE_IDX_EMUL == VCPU_STATE_IDX_REGS);
         /* Page tables only; torn down with the rest of the per-domain area. */
@@ -2234,17 +2238,20 @@ static void __context_switch(void)
     {
         ASSERT(read_atomic(&p->dirty_cpu) == cpu);
         /*
-         * p's frame is reached through its state window, mapped while p's
-         * own page tables are loaded, as they normally still are here.  Not
-         * so after the shadow-mode paths which abandon a vCPU's tables early
-         * (update_cr3() failure), which have crashed the domain: the frame
-         * is left unsaved.  A transient mapping would re-enter this function.
+         * p's frame and XSAVE area are reached through its state window,
+         * mapped while p's own page tables are loaded, as they normally
+         * still are here.  Not so after the shadow-mode paths which abandon
+         * a vCPU's tables early (update_cr3() failure), which have crashed
+         * the domain: both are left unsaved.  A transient mapping would
+         * re-enter this function.
          */
         if ( likely(this_cpu(pgtable_vcpu) == p) )
+        {
             memcpy(vcpu_user_regs(p), stack_regs, CTXT_SWITCH_STACK_BYTES);
+            vcpu_save_fpu_ctxt_switch(p);
+        }
         else
             BUG_ON(!domain_shutting_down(pd));
-        vcpu_save_fpu(p);
         pd->arch.ctxt_switch->from(p);
     }
 
diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index d49e391e99..239404b37b 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -177,7 +177,9 @@ void vcpu_restore_fpu(struct vcpu *v)
 
     ASSERT(!is_idle_vcpu(v));
 
+    /* v runs here on its own page tables: the map cannot fail. */
     xsave_area = VCPU_MAP_XSAVE_AREA(v);
+    BUG_ON(!xsave_area);
 
     if ( cpu_has_xsave )
         fpu_xrstor(v, xsave_area, XSTATE_ALL);
@@ -195,25 +197,36 @@ void vcpu_restore_fpu(struct vcpu *v)
  * On each context switch, save the necessary FPU info of VCPU being switch 
  * out. It dispatches saving operation based on CPU's capability.
  */
-void vcpu_save_fpu(struct vcpu *v)
+static void save_fpu(struct vcpu *v, struct xsave_struct *xsave_area)
 {
-    struct xsave_struct *xsave_area;
-
     ASSERT(!is_idle_vcpu(v));
 
     /* This can happen, if a paravirtualised guest OS has set its CR0.TS. */
     clts();
 
-    xsave_area = VCPU_MAP_XSAVE_AREA(v);
-
     if ( cpu_has_xsave )
         fpu_xsave(v, xsave_area);
     else
         fpu_fxsave(v, &xsave_area->fpu_sse);
+}
 
+/* Save the FPU state of v, the vCPU running here. */
+void vcpu_save_fpu(struct vcpu *v)
+{
+    /* As in vcpu_restore_fpu(): the fastpath, which cannot fail. */
+    struct xsave_struct *xsave_area = VCPU_MAP_XSAVE_AREA(v);
+
+    BUG_ON(!xsave_area);
+    save_fpu(v, xsave_area);
     VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
 }
 
+/* As vcpu_save_fpu(), for __context_switch() switching v out. */
+void vcpu_save_fpu_ctxt_switch(struct vcpu *v)
+{
+    save_fpu(v, vcpu_xsave_area_ctxt_switch(v));
+}
+
 /* Initialize FPU's context save area */
 int vcpu_init_fpu(struct vcpu *v)
 {
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index 52d1ebc0e7..498e3c91fa 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -325,6 +325,9 @@ extern unsigned long xen_phys_start;
 #define VCPU_STATE_IDX_VMCB      0
 #define VCPU_STATE_IDX_N2VMCB    1
 #define VCPU_STATE_IDX_VMX_MSR   2
+#define VCPU_STATE_IDX_XSAVE     3
+/* Pages reserved for the XSAVE area; bounded at boot in xstate_init(). */
+#define VCPU_STATE_XSAVE_PAGES   3
 #define VCPU_STATE_IDX_REGS      6
 #define VCPU_STATE_IDX_EMUL      7
 
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 3748e417ce..69ab854177 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -685,12 +685,19 @@ struct arch_vcpu
     unsigned long cr3;                  /* (MA) value to install in HW CR3 */
 
     /*
-     * The save area for Processor Extended States and the bitmask of the
-     * XSAVE/XRSTOR features. They are used by: 1) when a vcpu (which has
-     * dirtied FPU/SSE) is scheduled out we XSAVE the states here; 2) in
-     * #NM handler, we XRSTOR the states we XSAVE-ed;
+     * The save area for Processor Extended States, XSAVEd on context
+     * switch out and XRSTORed on context switch in.  For guest vCPUs
+     * the backing pages (xsave_pg[], xsave_pgcnt of them) come from the
+     * domain heap and are mapped once, for the life of the vCPU, at a
+     * fixed spot in the per-vCPU state window; xsave_area holds that
+     * window address, valid whenever the owning vCPU's page tables are
+     * loaded.  Idle vCPUs' areas are ordinary Xen allocations (xenheap,
+     * or vmap space when larger than a page), reachable from every
+     * context.  Any other access goes through VCPU_MAP_XSAVE_AREA().
      */
     struct xsave_struct *xsave_area;
+    struct page_info *xsave_pg[VCPU_STATE_XSAVE_PAGES];
+    unsigned int xsave_pgcnt;
     uint64_t xcr0;
     /* Accumulated eXtended features mask for using XSAVE/XRESTORE by Xen
      * itself, as we can never know whether guest OS depends on content
diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
index 0717005d31..8d28de3ba8 100644
--- a/xen/arch/x86/include/asm/i387.h
+++ b/xen/arch/x86/include/asm/i387.h
@@ -29,6 +29,7 @@ struct ix87_env {
 
 void vcpu_restore_fpu(struct vcpu *v);
 void vcpu_save_fpu(struct vcpu *v);
+void vcpu_save_fpu_ctxt_switch(struct vcpu *v);
 int vcpu_init_fpu(struct vcpu *v);
 void vcpu_destroy_fpu(struct vcpu *v);
 
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index c23308cbe2..a906df11ad 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -130,46 +130,43 @@ xsave_area_compressed(const struct xsave_struct *xsave_area)
 }
 
 /*
- * Fetch a pointer to a vCPU's XSAVE area
+ * Fetch a pointer to a vCPU's XSAVE area.
  *
- * TL;DR: If v == current, the mapping is guaranteed to already exist.
+ * Guest vCPUs' areas live on the domain heap, mapped once for the life
+ * of the vCPU at a fixed spot in the owning vCPU's state window.  For a
+ * vCPU running here on its own page tables, and for an idle vCPU, the
+ * "map" is a pointer fetch.
  *
- * Despite the name, this macro might not actually map anything. The only case
- * in which a mutation of page tables is strictly required is when ASI==on &&
- * v!=current. For everything else the mapping already exists and needs not
- * be created nor destroyed.
+ * Otherwise -- a paused, never-started or lazily held vCPU -- the area
+ * is genuinely mapped, and mapping the full, possibly multi-page area
+ * can fail: VCPU_MAP_XSAVE_AREA() may return NULL, and callers must
+ * handle that.  The _PREFIX variant below cannot fail.
  *
- *                         +-----------------+--------------+
- *                         |   v == current  | v != current |
- *          +--------------+-----------------+--------------+
- *          | ASI  enabled | per-vCPU fixmap |  actual map  |
- *          +--------------+-----------------+--------------+
- *          | ASI disabled |             directmap          |
- *          +--------------+--------------------------------+
- *
- * There MUST NOT be outstanding maps of XSAVE areas of the non-current vCPU
- * at the point of context switch. Otherwise, the unmap operation will
- * misbehave.
- *
- * TODO: Expand the macro to the ASI cases after infra to do so is in place.
+ * There MUST NOT be outstanding maps of another vCPU's XSAVE area at
+ * the point of context switch: such a mapping is only valid on the
+ * pCPU that created it, and only until the next reschedule.
  *
  * @param v Owner of the XSAVE area
  */
-#define VCPU_MAP_XSAVE_AREA(v) ((v)->arch.xsave_area)
+struct xsave_struct *vcpu_map_xsave_area(const struct vcpu *v);
+void vcpu_unmap_xsave_area(const struct vcpu *v, const void *area);
+struct xsave_struct *vcpu_map_xsave_area_prefix(const struct vcpu *v);
+void vcpu_unmap_xsave_area_prefix(const struct vcpu *v, const void *area);
+struct xsave_struct *vcpu_xsave_area_ctxt_switch(const struct vcpu *v);
+
+#define VCPU_MAP_XSAVE_AREA(v) vcpu_map_xsave_area(v)
 
 /*
- * Drops the mapping of a vCPU's XSAVE area and nullifies its pointer on exit
- *
- * See VCPU_MAP_XSAVE_AREA() for additional information on the persistence of
- * these mappings. This macro only tears down the mappings in the ASI=on &&
- * v!=current case.
- *
- * TODO: Expand the macro to the ASI cases after infra to do so is in place.
+ * Drops the mapping of a vCPU's XSAVE area and nullifies the local
+ * pointer on exit.
  *
  * @param v Owner of the XSAVE area
  * @param x XSAVE blob of v
  */
-#define VCPU_UNMAP_XSAVE_AREA(v, x) do { (void)(v); (x) = NULL; } while (0)
+#define VCPU_UNMAP_XSAVE_AREA(v, x) do {  \
+    vcpu_unmap_xsave_area(v, x);          \
+    (x) = NULL;                           \
+} while ( false )
 
 /*
  * Variant of VCPU_MAP_XSAVE_AREA() for accessors which touch nothing
@@ -177,7 +174,10 @@ xsave_area_compressed(const struct xsave_struct *xsave_area)
  * XSTATE_AREA_MIN_SIZE bytes).  That prefix always fits within the
  * area's first page, so this variant cannot fail.
  */
-#define VCPU_MAP_XSAVE_AREA_PREFIX(v) VCPU_MAP_XSAVE_AREA(v)
-#define VCPU_UNMAP_XSAVE_AREA_PREFIX(v, x) VCPU_UNMAP_XSAVE_AREA(v, x)
+#define VCPU_MAP_XSAVE_AREA_PREFIX(v) vcpu_map_xsave_area_prefix(v)
+#define VCPU_UNMAP_XSAVE_AREA_PREFIX(v, x) do {  \
+    vcpu_unmap_xsave_area_prefix(v, x);          \
+    (x) = NULL;                                  \
+} while ( false )
 
 #endif /* __ASM_XSTATE_H */
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 2dd1699aba..7543edc160 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -5,6 +5,7 @@
  *
  */
 
+#include <xen/domain_page.h>
 #include <xen/param.h>
 #include <xen/percpu.h>
 #include <xen/sched.h>
@@ -14,6 +15,7 @@
 #include <asm/cpu-policy.h>
 #include <asm/current.h>
 #include <asm/i387.h>
+#include <asm/mm.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
 #include <asm/xstate.h>
@@ -555,9 +557,61 @@ int xstate_alloc_save_area(struct vcpu *v)
 
     /* XSAVE/XRSTOR requires the save area be 64-byte-boundary aligned. */
     BUILD_BUG_ON(__alignof(*save_area) < 64);
-    save_area = _xvzalloc(size, __alignof(*save_area));
-    if ( save_area == NULL )
-        return -ENOMEM;
+
+    if ( !is_idle_vcpu(v) )
+    {
+        /*
+         * The pages are the vCPU's own (no _PAGE_AVAIL0): the area teardown
+         * leaves them alone, and xstate_free_save_area() frees them.
+         */
+        unsigned int nr = PFN_UP(size), i;
+        mfn_t mfns[VCPU_STATE_XSAVE_PAGES];
+
+        /* xstate_init() bounds the host size against the reservation. */
+        BUG_ON(nr > VCPU_STATE_XSAVE_PAGES);
+
+        for ( i = 0; i < nr; i++ )
+        {
+            struct page_info *pg = alloc_domheap_page(v->domain,
+                                                      MEMF_no_owner);
+
+            if ( !pg )
+            {
+                while ( i-- )
+                {
+                    free_domheap_page(v->arch.xsave_pg[i]);
+                    v->arch.xsave_pg[i] = NULL;
+                }
+                return -ENOMEM;
+            }
+
+            v->arch.xsave_pg[i] = pg;
+            mfns[i] = page_to_mfn(pg);
+            clear_domain_page(mfns[i]);
+        }
+        v->arch.xsave_pgcnt = nr;
+
+        populate_perdomain_mapping(v, VCPU_STATE_ADDR(v, VCPU_STATE_IDX_XSAVE),
+                                   mfns, nr, __PAGE_HYPERVISOR_RW);
+
+        /*
+         * The window VA is not reachable from the creating context (v is
+         * still being built); seed the initial register values through a
+         * transient mapping of the first page instead.
+         */
+        save_area = map_domain_page(mfns[0]);
+    }
+    else
+    {
+        /*
+         * Idle vCPUs' areas must be reachable from every context: they are
+         * scratch for accesses made with a guest's page tables loaded
+         * (read_bndcfgu(), xstate_set_init()).
+         */
+        save_area = _xvzalloc(size, __alignof(*save_area));
+        if ( save_area == NULL )
+            return -ENOMEM;
+    }
 
     /*
      * We're creating a vCPU, so conceptually we should be choosing the
@@ -578,7 +632,15 @@ int xstate_alloc_save_area(struct vcpu *v)
     save_area->fpu_sse.ftw = FXSAVE_FTW_RESET;
     save_area->fpu_sse.mxcsr = MXCSR_DEFAULT;
 
-    v->arch.xsave_area = save_area;
+    if ( !is_idle_vcpu(v) )
+    {
+        unmap_domain_page(save_area);
+        v->arch.xsave_area =
+            (void *)VCPU_STATE_ADDR(v, VCPU_STATE_IDX_XSAVE);
+    }
+    else
+        v->arch.xsave_area = save_area;
+
     v->arch.xcr0 = 0;
     v->arch.xcr0_accum = 0;
 
@@ -587,7 +649,103 @@ int xstate_alloc_save_area(struct vcpu *v)
 
 void xstate_free_save_area(struct vcpu *v)
 {
-    XVFREE(v->arch.xsave_area);
+    if ( !is_idle_vcpu(v) )
+    {
+        unsigned int i, nr = v->arch.xsave_pgcnt;
+
+        if ( nr )
+        {
+            unmap_vcpu_state(v, VCPU_STATE_IDX_XSAVE, nr);
+            for ( i = 0; i < nr; i++ )
+            {
+                free_domheap_page(v->arch.xsave_pg[i]);
+                v->arch.xsave_pg[i] = NULL;
+            }
+            v->arch.xsave_pgcnt = 0;
+        }
+
+        v->arch.xsave_area = NULL;
+    }
+    else
+        XVFREE(v->arch.xsave_area);
+}
+
+struct xsave_struct *vcpu_map_xsave_area(const struct vcpu *v)
+{
+    mfn_t mfns[VCPU_STATE_XSAVE_PAGES];
+    unsigned int i;
+
+    if ( is_idle_vcpu(v) )
+        return v->arch.xsave_area;
+
+    /*
+     * The window VA is valid while v's own page tables are loaded, but that
+     * alone is not enough: while this CPU holds v's state lazily, an IPI
+     * syncing that state for another CPU can switch v's page tables away
+     * at any time.  Hence the window only for v running here on its own
+     * page tables, which current's are not inside the EFI runtime bracket
+     * or after a shadow-mode update_cr3() failure.
+     */
+    if ( v == current && this_cpu(pgtable_vcpu) == v )
+        return v->arch.xsave_area;
+
+    for ( i = 0; i < v->arch.xsave_pgcnt; i++ )
+        mfns[i] = page_to_mfn(v->arch.xsave_pg[i]);
+
+    return map_domain_pages(mfns, v->arch.xsave_pgcnt);
+}
+
+void vcpu_unmap_xsave_area(const struct vcpu *v, const void *area)
+{
+    if ( !area || is_idle_vcpu(v) ||
+         area == (const void *)v->arch.xsave_area )
+        return;
+
+    /*
+     * A single page comes from the single-page mapcache, whose
+     * domain-wide form defers its flushes; unmap_domain_pages() flushes a
+     * multipage mapping itself.
+     */
+    if ( v->arch.xsave_pgcnt == 1 )
+        unmap_vcpu_state_page(area);
+    else
+        unmap_domain_pages(area, v->arch.xsave_pgcnt);
+}
+
+struct xsave_struct *vcpu_map_xsave_area_prefix(const struct vcpu *v)
+{
+    /* The legacy region and header always fit the area's first page. */
+    BUILD_BUG_ON(sizeof(struct xsave_struct) > PAGE_SIZE);
+
+    /* The window VA under vcpu_map_xsave_area()'s conditions. */
+    if ( is_idle_vcpu(v) ||
+         (v == current && this_cpu(pgtable_vcpu) == v) )
+        return v->arch.xsave_area;
+
+    return map_domain_page(page_to_mfn(v->arch.xsave_pg[0]));
+}
+
+void vcpu_unmap_xsave_area_prefix(const struct vcpu *v, const void *area)
+{
+    if ( !area || is_idle_vcpu(v) ||
+         area == (const void *)v->arch.xsave_area )
+        return;
+
+    unmap_vcpu_state_page(area);
+}
+
+/*
+ * The XSAVE area of @v for __context_switch() saving it: `current` has
+ * moved on to the incoming vCPU, but @v's page tables are still loaded, and
+ * interrupts are off, so the window VA serves.  A transient mapping is not
+ * an option from there: it would sync the lazy state and re-enter
+ * __context_switch().
+ */
+struct xsave_struct *vcpu_xsave_area_ctxt_switch(const struct vcpu *v)
+{
+    BUG_ON(is_idle_vcpu(v) || this_cpu(pgtable_vcpu) != v);
+
+    return v->arch.xsave_area;
 }
 
 static bool valid_xcr0(uint64_t xcr0)
@@ -934,6 +1092,10 @@ void xstate_init(struct cpuinfo_x86 *c)
         xsave_cntxt_size = cpuid_count_ebx(0xd, 0);
         printk("xstate: size: %#x and states: %#"PRIx64"\n",
                xsave_cntxt_size, xfeature_mask);
+
+        if ( PFN_UP(xsave_cntxt_size) > VCPU_STATE_XSAVE_PAGES )
+            panic("XSAVE area needs %lu pages, vCPU state window reserves %u\n",
+                  PFN_UP(xsave_cntxt_size), VCPU_STATE_XSAVE_PAGES);
     }
     else
     {
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470799.1679483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxj-000264-SC; Tue, 03 Nov 2026 23:30:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470799.1679483; Tue, 03 Nov 2026 23:30:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxj-00024B-BK; Tue, 03 Nov 2026 23:30:43 +0000
Received: by outflank-mailman (input) for mailman id 1470799;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000d1-4Q
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotU-3ZsP;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo5-0000000EMFa-24Wc;
 Tue, 03 Nov 2026 23:20:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=0lX6CHwDNVccQVi6T81X3E5uhExKP3Yedzo3WsWaf6A=; b=uCm6qzsi7xypOqhnHV2zL8csxu
	yR57HCBK+VvVmaCED4p8Pp9r5Limx6YykPo5W7LPM87i24TLgBU0NSeGTPjCTCyKUy+kLpx/5ZNUL
	nHLqhOTjnYxiq0x01gxY08viKc3peNXTplMBzL27zNcOAdwqoVCMMx9VDs8CMLYdaPOU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 30/44] x86/vmx: move the guest MSR load/save list off always-mapped memory
Date: Tue,  3 Nov 2026 17:13:52 -0500
Message-ID: <20261103-asi-hvm-v6-30-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The guest MSR load/save list holds guest MSR values (SPEC_CTRL, LBR,
PT, vPMU global control, and EFER on hardware without dedicated
controls), but lives on the xenheap, where it stays reachable from
every context.  Move the page to the domain heap and map it at its
fixed slot in the owning vCPU's state window, so that under Address
Space Isolation it is only mapped while that vCPU's page tables are
loaded.  Hardware is unaffected: the VMCS MSR-area pointers hold the
physical address, now derived from the page rather than from
virt_to_maddr() on a directmap VA.

The host MSR load list is left on the xenheap: it holds Xen's own
exit-time values, not guest data, so relocating it would serve no
isolation purpose.

The window VA is only valid in the owning vCPU's context.  Almost all
accesses have v == current and keep going through vmx->msr_area
unchanged (the vmentry-path LBR fixups, the failed-vmentry dump, vPMU,
and the MSR intercepts).  The remote accessors -- vmx_add_msr() /
vmx_del_msr() from vCPU construction, policy updates and context
load, and single-entry reads/writes from the HVM context save/load
and get/set-reg paths, all of which already require the target vCPU
to be paused -- dispatch through a transient mapping of the page,
dropped with unmap_vcpu_state_page(), which also drops this CPU's
translations of it:

 * vmx_add_msr() and vmx_del_msr() map internally around their
   search/insert/remove.

 * vmx_read_guest_msr(), vmx_read_guest_loadonly_msr() and
   vmx_write_guest_msr() move out of line and do the same, via
   vmx_find_msr_in(), the existing lookup parameterised on the mapped
   area.  vmx_find_msr() itself is unchanged for its remaining
   callers, which all run in current context and dereference the
   returned pointer through the window.

vmx_destroy_vmcs() takes the page out of the window before freeing it,
with unmap_vcpu_state(): without per-vCPU page tables the window is in
the per-domain area that all its domain's vCPUs share, which outlives
a vCPU whose creation fails.

The new page pointer goes with the existing page_info pointers after
pi_desc rather than next to msr_area: struct pi_desc is 64-byte
aligned, so inserting eight bytes ahead of it would have added 56
bytes of padding, growing struct vmx_vcpu from 448 to 512 bytes and,
via the union in struct arch_vcpu, every struct vcpu by 64 bytes
(x86_64 defconfig).

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Map and unmap through VMX_MAP_MSR_AREA() and VMX_UNMAP_MSR_AREA(),
  which clears the pointer (George).

Changes in v4:
- New in this version.
---
 xen/arch/x86/hvm/vmx/vmcs.c             | 142 ++++++++++++++++++++++--
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h |  63 +++--------
 2 files changed, 147 insertions(+), 58 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 8ec7ae7403..592722f1ca 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1416,8 +1416,11 @@ static struct vmx_msr_entry *locate_msr_entry(
     return start;
 }
 
-struct vmx_msr_entry *vmx_find_msr(const struct vcpu *v, uint32_t msr,
-                                   enum vmx_msr_list_type type)
+/* As vmx_find_msr(), but reaching the guest MSR area through @area. */
+static struct vmx_msr_entry *vmx_find_msr_in(const struct vcpu *v,
+                                             struct vmx_msr_entry *area,
+                                             uint32_t msr,
+                                             enum vmx_msr_list_type type)
 {
     const struct vmx_vcpu *vmx = &v->arch.hvm.vmx;
     struct vmx_msr_entry *start = NULL, *ent, *end;
@@ -1435,11 +1438,11 @@ struct vmx_msr_entry *vmx_find_msr(const struct vcpu *v, uint32_t msr,
         break;
 
     case VMX_MSR_GUEST:
-        start    = vmx->msr_area;
+        start    = area;
         break;
 
     case VMX_MSR_GUEST_LOADONLY:
-        start    = vmx->msr_area;
+        start    = area;
         substart = subend;
         subend   = total;
         break;
@@ -1458,6 +1461,77 @@ struct vmx_msr_entry *vmx_find_msr(const struct vcpu *v, uint32_t msr,
     return ((ent < end) && (ent->index == msr)) ? ent : NULL;
 }
 
+struct vmx_msr_entry *vmx_find_msr(const struct vcpu *v, uint32_t msr,
+                                   enum vmx_msr_list_type type)
+{
+    ASSERT(v == current || type == VMX_MSR_HOST);
+
+    return vmx_find_msr_in(v, v->arch.hvm.vmx.msr_area, msr, type);
+}
+
+static struct vmx_msr_entry *vmx_msr_area_map(const struct vcpu *v)
+{
+    const struct vmx_vcpu *vmx = &v->arch.hvm.vmx;
+
+    if ( v == current || !vmx->msr_area )
+        return vmx->msr_area;
+
+    return map_domain_page(page_to_mfn(vmx->msr_area_pg));
+}
+
+static void vmx_msr_area_unmap(const struct vcpu *v,
+                               const struct vmx_msr_entry *area)
+{
+    if ( v != current && area )
+        unmap_vcpu_state_page(area);
+}
+
+#define VMX_MAP_MSR_AREA(v) vmx_msr_area_map(v)
+
+/* Drops the mapping of a guest MSR area and nullifies its pointer. */
+#define VMX_UNMAP_MSR_AREA(v, area) do {  \
+    vmx_msr_area_unmap(v, area);          \
+    (area) = NULL;                        \
+} while ( false )
+
+int vmx_read_guest_msr(const struct vcpu *v, uint32_t msr, uint64_t *val)
+{
+    struct vmx_msr_entry *area = VMX_MAP_MSR_AREA(v);
+    const struct vmx_msr_entry *ent =
+        area ? vmx_find_msr_in(v, area, msr, VMX_MSR_GUEST) : NULL;
+
+    *val = ent ? ent->data : 0;
+    VMX_UNMAP_MSR_AREA(v, area);
+
+    return ent ? 0 : -ESRCH;
+}
+
+int vmx_read_guest_loadonly_msr(const struct vcpu *v, uint32_t msr,
+                                uint64_t *val)
+{
+    struct vmx_msr_entry *area = VMX_MAP_MSR_AREA(v);
+    const struct vmx_msr_entry *ent =
+        area ? vmx_find_msr_in(v, area, msr, VMX_MSR_GUEST_LOADONLY) : NULL;
+
+    *val = ent ? ent->data : 0;
+    VMX_UNMAP_MSR_AREA(v, area);
+
+    return ent ? 0 : -ESRCH;
+}
+
+int vmx_write_guest_msr(struct vcpu *v, uint32_t msr, uint64_t val)
+{
+    struct vmx_msr_entry *area = VMX_MAP_MSR_AREA(v);
+    struct vmx_msr_entry *ent =
+        area ? vmx_find_msr_in(v, area, msr, VMX_MSR_GUEST) : NULL;
+
+    if ( ent )
+        ent->data = val;
+    VMX_UNMAP_MSR_AREA(v, area);
+
+    return ent ? 0 : -ESRCH;
+}
+
 int vmx_add_msr(struct vcpu *v, uint32_t msr, uint64_t val,
                 enum vmx_msr_list_type type)
 {
@@ -1503,13 +1577,38 @@ int vmx_add_msr(struct vcpu *v, uint32_t msr, uint64_t val,
     {
         paddr_t addr;
 
-        if ( (*ptr = alloc_xenheap_page()) == NULL )
+        if ( type == VMX_MSR_HOST )
         {
-            rc = -ENOMEM;
-            goto out;
+            if ( (*ptr = alloc_xenheap_page()) == NULL )
+            {
+                rc = -ENOMEM;
+                goto out;
+            }
+
+            addr = virt_to_maddr(*ptr);
         }
+        else
+        {
+            struct page_info *pg = alloc_domheap_page(v->domain,
+                                                      MEMF_no_owner);
+            mfn_t mfn;
 
-        addr = virt_to_maddr(*ptr);
+            if ( pg == NULL )
+            {
+                rc = -ENOMEM;
+                goto out;
+            }
+
+            mfn = page_to_mfn(pg);
+            clear_domain_page(mfn);
+            populate_perdomain_mapping(v,
+                                       VCPU_STATE_ADDR(v,
+                                                       VCPU_STATE_IDX_VMX_MSR),
+                                       &mfn, 1, __PAGE_HYPERVISOR_RW);
+            vmx->msr_area_pg = pg;
+            *ptr = (void *)VCPU_STATE_ADDR(v, VCPU_STATE_IDX_VMX_MSR);
+            addr = mfn_to_maddr(mfn);
+        }
 
         switch ( type )
         {
@@ -1525,7 +1624,7 @@ int vmx_add_msr(struct vcpu *v, uint32_t msr, uint64_t val,
         }
     }
 
-    start = *ptr;
+    start = type == VMX_MSR_HOST ? *ptr : VMX_MAP_MSR_AREA(v);
     end   = start + total;
     ent   = locate_msr_entry(start + substart, start + subend, msr);
 
@@ -1565,6 +1664,8 @@ int vmx_add_msr(struct vcpu *v, uint32_t msr, uint64_t val,
     rc = 0;
 
  out:
+    if ( type != VMX_MSR_HOST )
+        VMX_UNMAP_MSR_AREA(v, start);
     vmx_vmcs_exit(v);
 
     return rc;
@@ -1576,6 +1677,7 @@ int vmx_del_msr(struct vcpu *v, uint32_t msr, enum vmx_msr_list_type type)
     struct vmx_msr_entry *start = NULL, *ent, *end;
     unsigned int substart = 0, subend = vmx->msr_save_count;
     unsigned int total = vmx->msr_load_count;
+    int rc = 0;
 
     ASSERT(v == current || !vcpu_runnable(v));
 
@@ -1605,11 +1707,17 @@ int vmx_del_msr(struct vcpu *v, uint32_t msr, enum vmx_msr_list_type type)
     if ( !start )
         return -ESRCH;
 
+    if ( type != VMX_MSR_HOST )
+        start = VMX_MAP_MSR_AREA(v);
+
     end = start + total;
     ent = locate_msr_entry(start + substart, start + subend, msr);
 
     if ( (ent == end) || (ent->index != msr) )
-        return -ESRCH;
+    {
+        rc = -ESRCH;
+        goto out;
+    }
 
     memmove(ent, ent + 1, sizeof(*ent) * (end - ent - 1));
 
@@ -1632,7 +1740,11 @@ int vmx_del_msr(struct vcpu *v, uint32_t msr, enum vmx_msr_list_type type)
 
     vmx_vmcs_exit(v);
 
-    return 0;
+ out:
+    if ( type != VMX_MSR_HOST )
+        VMX_UNMAP_MSR_AREA(v, start);
+
+    return rc;
 }
 
 void vmx_set_eoi_exit_bitmap(struct vcpu *v, u8 vector)
@@ -1829,7 +1941,13 @@ void vmx_destroy_vmcs(struct vcpu *v)
     vmx_free_vmcs(vmx->vmcs_pa);
 
     free_xenheap_page(v->arch.hvm.vmx.host_msr_area);
-    free_xenheap_page(v->arch.hvm.vmx.msr_area);
+    if ( v->arch.hvm.vmx.msr_area_pg )
+    {
+        unmap_vcpu_state(v, VCPU_STATE_IDX_VMX_MSR, 1);
+        free_domheap_page(v->arch.hvm.vmx.msr_area_pg);
+        v->arch.hvm.vmx.msr_area_pg = NULL;
+        v->arch.hvm.vmx.msr_area = NULL;
+    }
     free_xenheap_page(v->arch.hvm.vmx.msr_bitmap);
 }
 
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
index d0716e97d2..e5730780e2 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -140,6 +140,10 @@ struct vmx_vcpu {
      * context.  However, the data can be modified by toolstack/migration
      * actions.  Remote access is only permitted for paused vcpus, and is
      * protected under the domctl lock.
+     *
+     * The guest list is a domain-heap page (msr_area_pg, below) mapped at a
+     * fixed slot in the owning vCPU's state window: msr_area holds that
+     * window VA, which is only valid in the owning vCPU's context.
      */
     struct vmx_msr_entry *msr_area;
     struct vmx_msr_entry *host_msr_area;
@@ -185,6 +189,9 @@ struct vmx_vcpu {
 
     struct page_info     *pml_pg;
 
+    /* Backing page of msr_area; see the comment there. */
+    struct page_info     *msr_area_pg;
+
     /* Bitmask of trapped CR4 bits. */
     unsigned long        cr4_host_mask;
 
@@ -669,55 +676,19 @@ static inline int vmx_add_host_load_msr(struct vcpu *v, uint32_t msr,
     return vmx_add_msr(v, msr, val, VMX_MSR_HOST);
 }
 
+/*
+ * Look an MSR up in the guest or host list of @v.  The returned pointer
+ * reaches the guest lists through the vCPU state window, so for those it
+ * is only valid (and the call only permitted) in current context; the
+ * single-entry accessors below handle paused remote vCPUs.
+ */
 struct vmx_msr_entry *vmx_find_msr(const struct vcpu *v, uint32_t msr,
                                    enum vmx_msr_list_type type);
 
-static inline int vmx_read_guest_msr(const struct vcpu *v, uint32_t msr,
-                                     uint64_t *val)
-{
-    const struct vmx_msr_entry *ent = vmx_find_msr(v, msr, VMX_MSR_GUEST);
-
-    if ( !ent )
-    {
-        *val = 0;
-        return -ESRCH;
-    }
-
-    *val = ent->data;
-
-    return 0;
-}
-
-static inline int vmx_read_guest_loadonly_msr(
-    const struct vcpu *v, uint32_t msr, uint64_t *val)
-{
-    const struct vmx_msr_entry *ent =
-        vmx_find_msr(v, msr, VMX_MSR_GUEST_LOADONLY);
-
-    if ( !ent )
-    {
-        *val = 0;
-        return -ESRCH;
-    }
-
-    *val = ent->data;
-
-    return 0;
-}
-
-static inline int vmx_write_guest_msr(struct vcpu *v, uint32_t msr,
-                                      uint64_t val)
-{
-    struct vmx_msr_entry *ent = vmx_find_msr(v, msr, VMX_MSR_GUEST);
-
-    if ( !ent )
-        return -ESRCH;
-
-    ent->data = val;
-
-    return 0;
-}
-
+int vmx_read_guest_msr(const struct vcpu *v, uint32_t msr, uint64_t *val);
+int vmx_read_guest_loadonly_msr(const struct vcpu *v, uint32_t msr,
+                                uint64_t *val);
+int vmx_write_guest_msr(struct vcpu *v, uint32_t msr, uint64_t val);
 
 /* MSR intercept bitmap infrastructure. */
 enum vmx_msr_intercept_type {
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470800.1679491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxk-0002KR-Ly; Tue, 03 Nov 2026 23:30:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470800.1679491; Tue, 03 Nov 2026 23:30:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxk-0002GV-8s; Tue, 03 Nov 2026 23:30:44 +0000
Received: by outflank-mailman (input) for mailman id 1470800;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000d9-7L
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Coud-0N9q;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONns-0000000EMFa-2cO9;
 Tue, 03 Nov 2026 23:20:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=HsBQFYbAaJl6u0wptC/IWMz5BiLtWpaI/vOuJRWYogs=; b=CmNnCx1ZNqgpbIWYzRjf6vR++Y
	Zv1khxuautkhQOXO+CfVKSYZioovyhqp19GnAwzWeWWp6i2EQEvnaXxrRdEKCOYUAyfTalyiN2Dv+
	9Qj6+wMrcgIUg+lIyr0j+oZfkoJQ+kfzCWkpm//nQ4kqXMV9ctC6vqVUoEUGj9JdsT0w=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 14/44] x86/mm: let Xen's page-table walker operate on a given root
Date: Tue,  3 Nov 2026 17:13:36 -0500
Message-ID: <20261103-asi-hvm-v6-14-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

map_pages_to_xen() and modify_xen_mappings() maintain Xen's own
mappings, walking from idle_pg_table, whose Xen slots every other root
page-table copies.  A later patch introduces a second, sparse directmap
hierarchy: page tables for the directmap virtual address range that some
guest contexts use in place of idle_pg_table's.  It needs the same
maintenance at the same virtual addresses.

Give virt_to_xen_l{3,2,1}e() the L4 to walk from, and move the bodies of
map_pages_to_xen() and modify_xen_mappings() into map_pages_in() and
modify_mappings_in(), which take the root as well.  The public functions
pass idle_pg_table.  The EFI runtime-services page-tables mirror
idle_pg_table's L4 entries only, so a newly allocated L3 is propagated
to them only when the root is idle_pg_table.

map_pages_in() and modify_mappings_in() free page-table pages through
free_pagetable_in(), which takes the root too and for now only calls
free_xen_pagetable().

TLB flushing is unaffected: flushes are by virtual address and go to
every online CPU, which covers both hierarchies.

No functional change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Free page-table pages through free_pagetable_in(), for now a plain
  wrapper, split out of "x86/mm: build and maintain a sparse view of the
  directmap".

Changes in v4:
- Message: name the second hierarchy as sparse; flushes reach every CPU
  (Roger).

Changes in v3:
- New in this version.
---
 xen/arch/x86/mm.c | 78 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 56 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index f52c72a605..39c6fa3d56 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5247,13 +5247,14 @@ static DEFINE_SPINLOCK(map_pgdir_lock);
 
 /*
  * For virt_to_xen_lXe() functions, they take a linear address and return a
- * pointer to Xen's LX entry. Caller needs to unmap the pointer.
+ * pointer to Xen's LX entry in the page-table hierarchy rooted at @root
+ * (idle_pg_table for Xen's own mappings).  Caller needs to unmap the pointer.
  */
-static l3_pgentry_t *virt_to_xen_l3e(unsigned long v)
+static l3_pgentry_t *virt_to_xen_l3e(l4_pgentry_t *root, unsigned long v)
 {
     l4_pgentry_t *pl4e;
 
-    pl4e = &idle_pg_table[l4_table_offset(v)];
+    pl4e = &root[l4_table_offset(v)];
     if ( !(l4e_get_flags(*pl4e) & _PAGE_PRESENT) )
     {
         bool locking = system_state > SYS_STATE_boot;
@@ -5269,7 +5270,8 @@ static l3_pgentry_t *virt_to_xen_l3e(unsigned long v)
             l4_pgentry_t l4e = l4e_from_mfn(l3mfn, __PAGE_HYPERVISOR);
 
             l4e_write(pl4e, l4e);
-            efi_update_l4_pgtable(l4_table_offset(v), l4e);
+            if ( root == idle_pg_table )
+                efi_update_l4_pgtable(l4_table_offset(v), l4e);
             l3mfn = INVALID_MFN;
         }
         if ( locking )
@@ -5280,11 +5282,11 @@ static l3_pgentry_t *virt_to_xen_l3e(unsigned long v)
     return map_l3t_from_l4e(*pl4e) + l3_table_offset(v);
 }
 
-static l2_pgentry_t *virt_to_xen_l2e(unsigned long v)
+static l2_pgentry_t *virt_to_xen_l2e(l4_pgentry_t *root, unsigned long v)
 {
     l3_pgentry_t *pl3e, l3e;
 
-    pl3e = virt_to_xen_l3e(v);
+    pl3e = virt_to_xen_l3e(root, v);
     if ( !pl3e )
         return NULL;
 
@@ -5318,11 +5320,11 @@ static l2_pgentry_t *virt_to_xen_l2e(unsigned long v)
     return map_l2t_from_l3e(l3e) + l2_table_offset(v);
 }
 
-static l1_pgentry_t *virt_to_xen_l1e(unsigned long v)
+static l1_pgentry_t *virt_to_xen_l1e(l4_pgentry_t *root, unsigned long v)
 {
     l2_pgentry_t *pl2e, l2e;
 
-    pl2e = virt_to_xen_l2e(v);
+    pl2e = virt_to_xen_l2e(root, v);
     if ( !pl2e )
         return NULL;
 
@@ -5398,7 +5400,7 @@ mfn_t xen_map_to_mfn(unsigned long va)
     bool locking = system_state > SYS_STATE_boot;
     unsigned int l2_offset = l2_table_offset(va);
     unsigned int l1_offset = l1_table_offset(va);
-    const l3_pgentry_t *pl3e = virt_to_xen_l3e(va);
+    const l3_pgentry_t *pl3e = virt_to_xen_l3e(idle_pg_table, va);
     const l2_pgentry_t *pl2e = NULL;
     const l1_pgentry_t *pl1e = NULL;
     struct page_info *l3page;
@@ -5438,7 +5440,21 @@ mfn_t xen_map_to_mfn(unsigned long va)
     return ret;
 }
 
-int map_pages_to_xen(
+/*
+ * Free a page-table page that the hierarchy rooted at @root has stopped
+ * using.
+ */
+static void free_pagetable_in(const l4_pgentry_t *root, mfn_t mfn)
+{
+    free_xen_pagetable(mfn);
+}
+
+/*
+ * map_pages_to_xen() in the hierarchy rooted at @root: idle_pg_table's, or
+ * another hierarchy sharing its virtual addresses.
+ */
+static int map_pages_in(
+    l4_pgentry_t *root,
     unsigned long virt,
     mfn_t mfn,
     unsigned long nr_mfns,
@@ -5489,7 +5505,7 @@ int map_pages_to_xen(
         UNMAP_DOMAIN_PAGE(pl3e);
         UNMAP_DOMAIN_PAGE(pl2e);
 
-        pl3e = virt_to_xen_l3e(virt);
+        pl3e = virt_to_xen_l3e(root, virt);
         if ( !pl3e )
             goto out;
 
@@ -5542,10 +5558,10 @@ int map_pages_to_xen(
                         ol2e = l2t[i];
                         if ( (l2e_get_flags(ol2e) & _PAGE_PRESENT) &&
                              !(l2e_get_flags(ol2e) & _PAGE_PSE) )
-                            free_xen_pagetable(l2e_get_mfn(ol2e));
+                            free_pagetable_in(root, l2e_get_mfn(ol2e));
                     }
                     unmap_domain_page(l2t);
-                    free_xen_pagetable(l3e_get_mfn(ol3e));
+                    free_pagetable_in(root, l3e_get_mfn(ol3e));
                 }
             }
 
@@ -5613,7 +5629,7 @@ int map_pages_to_xen(
             free_xen_pagetable(l2mfn);
         }
 
-        pl2e = virt_to_xen_l2e(virt);
+        pl2e = virt_to_xen_l2e(root, virt);
         if ( !pl2e )
             goto out;
 
@@ -5643,7 +5659,7 @@ int map_pages_to_xen(
                         flush_flags(l1e_get_flags(l1t[i]));
                     flush_area(virt, flush_flags);
                     unmap_domain_page(l1t);
-                    free_xen_pagetable(l2e_get_mfn(ol2e));
+                    free_pagetable_in(root, l2e_get_mfn(ol2e));
                 }
             }
 
@@ -5658,7 +5674,7 @@ int map_pages_to_xen(
             /* Normal page mapping. */
             if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
             {
-                pl1e = virt_to_xen_l1e(virt);
+                pl1e = virt_to_xen_l1e(root, virt);
                 if ( pl1e == NULL )
                     goto out;
             }
@@ -5775,7 +5791,7 @@ int map_pages_to_xen(
                     flush_area(virt - PAGE_SIZE,
                                FLUSH_TLB_GLOBAL |
                                FLUSH_ORDER(PAGETABLE_ORDER));
-                    free_xen_pagetable(l2e_get_mfn(ol2e));
+                    free_pagetable_in(root, l2e_get_mfn(ol2e));
                 }
                 else if ( locking )
                     spin_unlock(&map_pgdir_lock);
@@ -5822,7 +5838,7 @@ int map_pages_to_xen(
                 flush_area(virt - PAGE_SIZE,
                            FLUSH_TLB_GLOBAL |
                            FLUSH_ORDER(2*PAGETABLE_ORDER));
-                free_xen_pagetable(l3e_get_mfn(ol3e));
+                free_pagetable_in(root, l3e_get_mfn(ol3e));
             }
             else if ( locking )
                 spin_unlock(&map_pgdir_lock);
@@ -5843,6 +5859,15 @@ int map_pages_to_xen(
     return rc;
 }
 
+int map_pages_to_xen(
+    unsigned long virt,
+    mfn_t mfn,
+    unsigned long nr_mfns,
+    pte_attr_t flags)
+{
+    return map_pages_in(idle_pg_table, virt, mfn, nr_mfns, flags);
+}
+
 int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
 {
     return map_pages_to_xen(virt, INVALID_MFN, nr_mfns, MAP_SMALL_PAGES);
@@ -5859,8 +5884,12 @@ int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
  * flags are ignored.
  *
  * It is an error to call with present flags over an unpopulated range.
+ *
+ * modify_mappings_in() does so in the hierarchy rooted at @root, as
+ * map_pages_in() does.
  */
-int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
+static int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
+                              unsigned long e, pte_attr_t nf)
 {
     bool locking = system_state > SYS_STATE_boot;
     l3_pgentry_t *pl3e = NULL;
@@ -5887,7 +5916,7 @@ int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
         UNMAP_DOMAIN_PAGE(pl2e);
         UNMAP_DOMAIN_PAGE(pl3e);
 
-        pl3e = virt_to_xen_l3e(v);
+        pl3e = virt_to_xen_l3e(root, v);
         if ( !pl3e )
             goto out;
 
@@ -6070,7 +6099,7 @@ int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
                 if ( locking )
                     spin_unlock(&map_pgdir_lock);
                 flush_area(NULL, FLUSH_TLB_GLOBAL); /* flush before free */
-                free_xen_pagetable(l1mfn);
+                free_pagetable_in(root, l1mfn);
             }
             else if ( locking )
                 spin_unlock(&map_pgdir_lock);
@@ -6114,7 +6143,7 @@ int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
                 if ( locking )
                     spin_unlock(&map_pgdir_lock);
                 flush_area(NULL, FLUSH_TLB_GLOBAL); /* flush before free */
-                free_xen_pagetable(l2mfn);
+                free_pagetable_in(root, l2mfn);
             }
             else if ( locking )
                 spin_unlock(&map_pgdir_lock);
@@ -6138,6 +6167,11 @@ int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
 
 #undef flush_area
 
+int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
+{
+    return modify_mappings_in(idle_pg_table, s, e, nf);
+}
+
 int destroy_xen_mappings(unsigned long s, unsigned long e)
 {
     return modify_xen_mappings(s, e, _PAGE_NONE);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470801.1679497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxl-0002XH-JA; Tue, 03 Nov 2026 23:30:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470801.1679497; Tue, 03 Nov 2026 23:30:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxl-0002RV-04; Tue, 03 Nov 2026 23:30:45 +0000
Received: by outflank-mailman (input) for mailman id 1470801;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dC-8n
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Couu-0oEt;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo3-0000000EMFa-0hqE;
 Tue, 03 Nov 2026 23:20:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=bXTFHOrcLhUOodXtLyqMdEEiIJaFfjlDFEIJV1YrfvQ=; b=PejvEQ5O3VI5tzJZp2wI//NpQ2
	m+Ot+wXdCQWCAa1tBiuo2FktJtMbdK/nYweFNsEpGmGhDnVkMe8BLymF+CFsNp6iaPscRKz4AKkC4
	trz+cw4sGR/stbOAXVZoBYqpbi+aWRZ86/U/XFt5lfVPobCuP/UZx/mVgsVDWluuFDOs=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 25/44] x86/mm: introduce a per-vCPU state window in the perdomain area
Date: Tue,  3 Nov 2026 17:13:47 -0500
Message-ID: <20261103-asi-hvm-v6-25-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Under Address Space Isolation, guest-owned register state that Xen
keeps in always-mapped memory moves to the domain heap, mapped only in
the contexts that use it.  The long-lived per-vCPU structures involved
(the SVM VMCB, the VMX guest MSR load/save list, the guest XSAVE area,
and later the aggregated small per-vCPU allocations) all want the same
shape: one or more domain-heap pages, mapped once at fixed per-vCPU
virtual addresses for the life of the vCPU.

Add a fourth per-domain-mapping sub-area providing that destination: a
small per-vCPU stride of page slots, with a fixed index assigned to
each relocated structure and the page tables created at vCPU creation
time.  Consumers allocate their own pages and install them with
populate_perdomain_mapping(); the backing pages remain caller-owned,
so their lifetime stays with the consumer, while the page tables are
torn down with the rest of the per-domain area.

Before freeing their pages, consumers take them out of the window with
unmap_vcpu_state(), on failure paths as at teardown: vCPU creation can
fail once a consumer has mapped its pages, and the domain lives on.
It flushes the domain's dirty CPUs, which include every CPU whose
page-tables carry the window, in the vCPU's own per-domain area or in
the one its domain's vCPUs share; so far that mask is empty on every
call, as the vCPU has not run or the domain is paused.  A consumer
reaching a page from another context, through a transient
map_domain_page() mapping, drops the mapping with
unmap_vcpu_state_page(), which also flushes this CPU's translations of
it, there and at its alias in the per-domain mirror: a domain-wide
mapcache defers that flush, and the translations would otherwise
outlive the mapping.

For a domain running without per-vCPU page tables the window has the
same domain-wide visibility as the other per-domain sub-areas: the
virtual addresses are keyed on vcpu_id, so the same VA arithmetic
serves both modes.  With vcpu-pt enabled, a vCPU's window is simply
absent from its siblings' address spaces.

This is infrastructure for moving the SVM VMCB, the VMX MSR load/save
lists, the saved register frames, the HVM emulator's caches and the
guest XSAVE areas off always-mapped memory.  Nothing occupies the area
yet; the only behavioural change is the page-table allocation itself and
the failure path that comes with it: vCPU creation can now fail with
-ENOMEM.  Both apply to every guest vCPU, with or without asi=, PV ones
included.  A domain with per-vCPU page tables gets an L2 and an L1 per
vCPU; any other domain, every PV domain among them, one L2 plus an L1
per 64 vCPUs: 2 pages for up to 64 vCPUs.  A PV domain's window stays
empty until the register frames and XSAVE areas move there.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Port over change to L3 allocation.

Changes in v5:
- Say that the PV register frames move into the window too, not only
  the XSAVE areas.
- Message and comments: "per-domain area", and which vCPUs share it.

Changes in v4:
- New in this version.
---
 xen/arch/x86/domain.c             | 12 ++++++++
 xen/arch/x86/include/asm/config.h | 21 +++++++++++++-
 xen/arch/x86/include/asm/mm.h     |  2 ++
 xen/arch/x86/mm.c                 | 47 +++++++++++++++++++++++++++++++
 4 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 46ca945b48..633619b400 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -524,6 +524,18 @@ int arch_vcpu_create(struct vcpu *v)
 
     if ( !is_idle_domain(d) )
     {
+        BUILD_BUG_ON((MAX_VIRT_CPUS << VCPU_STATE_VA_SHIFT) >
+                     (PERDOMAIN_SLOT_MBYTES << 20));
+        BUILD_BUG_ON(VCPU_STATE_IDX_VMCB >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_N2VMCB >= VCPU_STATE_NR_PAGES);
+        BUILD_BUG_ON(VCPU_STATE_IDX_VMX_MSR >= VCPU_STATE_NR_PAGES);
+        /* Page tables only; torn down with the rest of the per-domain area. */
+        rc = create_perdomain_mapping(v, VCPU_STATE_START(v),
+                                      VCPU_STATE_NR_PAGES,
+                                      NIL(l1_pgentry_t *), NULL);
+        if ( rc != 0 )
+            goto fail;
+
         paging_vcpu_init(v);
 
         if ( (rc = vcpu_init_fpu(v)) != 0 )
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index ee84c57432..8a265e25c8 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -158,7 +158,7 @@
 /* Slot 260: per-domain mappings (including map cache). */
 #define PERDOMAIN_VIRT_START    (PML4_ADDR(260))
 #define PERDOMAIN_SLOT_MBYTES   (PML4_ENTRY_BYTES >> (20 + PAGETABLE_ORDER))
-#define PERDOMAIN_SLOTS         3
+#define PERDOMAIN_SLOTS         4
 #define PERDOMAIN_VIRT_SLOT(s)  (PERDOMAIN_VIRT_START + (s) * \
                                  (PERDOMAIN_SLOT_MBYTES << 20))
 /* Slot 4: mirror of per-domain mappings (for compat xlat area accesses). */
@@ -293,6 +293,25 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
+/*
+ * Per-vCPU state window. The fourth per-domain-mapping sub-area: a small
+ * per-vCPU stride of page slots holding long-lived per-vCPU structures kept
+ * out of always-mapped memory, each mapped once for the life of the vCPU at
+ * a fixed index within the stride.
+ */
+#define VCPU_STATE_SLOT          3
+#define VCPU_STATE_VIRT_START    PERDOMAIN_VIRT_SLOT(VCPU_STATE_SLOT)
+#define VCPU_STATE_ORDER         3
+#define VCPU_STATE_NR_PAGES      (1U << VCPU_STATE_ORDER)
+#define VCPU_STATE_VA_SHIFT      (VCPU_STATE_ORDER + PAGE_SHIFT)
+#define VCPU_STATE_START(v)      \
+    (VCPU_STATE_VIRT_START + ((v)->vcpu_id << VCPU_STATE_VA_SHIFT))
+#define VCPU_STATE_ADDR(v, idx)  \
+    (VCPU_STATE_START(v) + (idx) * PAGE_SIZE)
+#define VCPU_STATE_IDX_VMCB      0
+#define VCPU_STATE_IDX_N2VMCB    1
+#define VCPU_STATE_IDX_VMX_MSR   2
+
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index d04a935aff..b253f4a807 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -628,6 +628,8 @@ void populate_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                 unsigned int flags);
 void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr);
+void unmap_vcpu_state(const struct vcpu *v, unsigned int idx, unsigned int nr);
+void unmap_vcpu_state_page(const void *va);
 void free_perdomain_mappings(struct domain *d);
 void free_pervcpu_mappings(struct vcpu *v);
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 0edf01f363..768270ec36 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6681,6 +6681,53 @@ void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
     unmap_domain_page(l3tab);
 }
 
+/*
+ * Take @nr slots of @v's state window, from @idx, out of the per-domain
+ * area, before the caller frees the pages behind them: the pages are the
+ * caller's own, and must not stay mapped once freed.  The window's
+ * translations are usable only on CPUs whose page-tables carry it, all in
+ * the domain's dirty mask: with per-vCPU page-tables, the CPU running v or
+ * holding it lazily; otherwise, those of any of the domain's vCPUs.
+ */
+void unmap_vcpu_state(const struct vcpu *v, unsigned int idx, unsigned int nr)
+{
+    const struct domain *d = v->domain;
+
+    /*
+     * Beyond the stride is the next vCPU's window, where the domain's vCPUs
+     * share a per-domain area.
+     */
+    BUG_ON(idx >= VCPU_STATE_NR_PAGES || nr > VCPU_STATE_NR_PAGES - idx);
+
+    destroy_perdomain_mapping(v, VCPU_STATE_ADDR(v, idx), nr);
+
+    flush_tlb_mask(d->dirty_cpumask);
+}
+
+/*
+ * Drop a transient mapping of a page behind a vCPU's state window, and this
+ * CPU's translations of it: at its address, and at its alias in the
+ * per-domain mirror, which every domain but a 64-bit PV one has (flushing
+ * that address there is harmless).  A per-vCPU mapcache flushes both
+ * already, with the slot's last mapping; a domain-wide one defers the
+ * flush, and CPUs running other vCPUs of its domain may have cached the
+ * slot too.  A directmap address, where the caller has no mapcache, needs
+ * nothing.
+ */
+void unmap_vcpu_state_page(const void *va)
+{
+    unsigned long addr = (unsigned long)va;
+
+    unmap_domain_page(va);
+
+    if ( addr < DIRECTMAP_VIRT_START )
+    {
+        flush_tlb_one_local(addr);
+        flush_tlb_one_local(addr - PERDOMAIN_VIRT_START +
+                            PERDOMAIN_ALT_VIRT_START);
+    }
+}
+
 static void free_perdomain_l3(struct page_info *l3pg)
 {
     l3_pgentry_t *l3tab = __map_domain_page(l3pg);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470802.1679507 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxm-0002nA-Oh; Tue, 03 Nov 2026 23:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470802.1679507; Tue, 03 Nov 2026 23:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxl-0002ip-Ts; Tue, 03 Nov 2026 23:30:45 +0000
Received: by outflank-mailman (input) for mailman id 1470802;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dM-AT
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Cov2-143P;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnr-0000000EMFa-3BRw;
 Tue, 03 Nov 2026 23:20:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=KFvkL5WqfDQDRrp7P3qFC/Nmk3HS+ngDzI09Wi+qTuQ=; b=B/0h5gJI7p7Eo47YEgnum4NZOn
	wacxYk7wL7yFZOaJwWu7ibel1X8VU3imtiTvTeeWuu9UgltEJwqZ3VT6JtB1uv6ZEpr/zhUUvPaoM
	RlS2xBxF7T3c/MnNI9fbVXnVj4yStfnvq0GDHntJ69gowwN0jcrSEOX1yFjBoaKVMV+s=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 12/44] x86/domain_page: don't unmap a mapcache entry that is not present
Date: Tue,  3 Nov 2026 17:13:34 -0500
Message-ID: <20261103-asi-hvm-v6-12-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mappings must be torn down by the vCPU that created them, and only
once.  Have unmap_domain_page() check that the entry it is handed is
present and bail out otherwise (ASSERT_UNREACHABLE()), rather than read
an MFN out of an empty PTE and act on it, as a second unmap of an entry
the first one zapped would.  (A second unmap of an entry the maphash
kept is caught, as before, only by the refcount ASSERT() in debug
builds.)

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Roger Pau Monné <roger@xenproject.org>
---
Changes in v4:
- Reword the comment on the new check (Roger).

Changes in v3:
- New in this version, split out of "x86/hvm: introduce per-vCPU
  mapcache for vCPU-PT domains" for review.
---
 xen/arch/x86/domain_page.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 205d7b832a..47ccefa4e9 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -223,6 +223,15 @@ void unmap_domain_page(const void *ptr)
     ASSERT(cache->inuse);
 
     idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
+    /*
+     * Sanity check: an entry that isn't present means a double or stray
+     * unmap.  Play it safe: don't act on the MFN in an empty PTE.
+     */
+    if ( !(l1e_get_flags(MAPCACHE_L1ENT(idx)) & _PAGE_PRESENT) )
+    {
+        ASSERT_UNREACHABLE();
+        return;
+    }
     mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
     hashent = &v->arch.mapcache.hash[MAPHASH_HASHFN(mfn)];
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470803.1679514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxo-0002yX-73; Tue, 03 Nov 2026 23:30:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470803.1679514; Tue, 03 Nov 2026 23:30:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxm-0002sD-Tt; Tue, 03 Nov 2026 23:30:46 +0000
Received: by outflank-mailman (input) for mailman id 1470803;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dG-9U
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CouW-0EqG;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnq-0000000EMFa-2enA;
 Tue, 03 Nov 2026 23:20:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=Qz96shbhY184atVnv3ju4Bmbb5aXR1JV+WrIp8a3N3k=; b=vMMvAm+YRur4tvjh5Ue+qJ12+7
	6h/cOgzRHvxd0W4kjN+PkgCjEibWGwcr+qxfsDNPNrtB5yDwIQdteqDwtIcjPrpmRYtU/3ZHEQNVQ
	i0yXJCTLpPxsGo3eTNfjJVqubxuBKOdkF1bxdT83Vo1hHZqc4BaegmOX5l1yi+eXNI54=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 10/44] x86/domain_page: prepare the mapcache for per-vCPU accounting
Date: Tue,  3 Nov 2026 17:13:32 -0500
Message-ID: <20261103-asi-hvm-v6-10-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

Currently, only PV domains have a mapcache, which is a domain-wide one.
In preparation for enabling per-vCPU mapcaches for HVM domains, split
the accounting out into a struct mapcache, embedded in struct
mapcache_domain.

Introduce has_mapcache(), for whether a vCPU has a mapcache, and
vcpu_mapcache(), which returns the accounting for a vCPU's mapcache
and, in *dcache, the domain-wide mapcache whose lock and TLB epoch the
caller has to take into account.  For now has_mapcache() is
is_pv_vcpu(), and vcpu_mapcache() always returns the domain's
accounting.

Move map_domain_page()'s handling of the domain-wide lock and TLB epoch
into three helpers: mapcache_enter() takes the lock and catches up with
a wrap another vCPU caused, mapcache_new_epoch() starts a new epoch
after a wrap, and mapcache_exit() drops the lock.  A per-vCPU
mapcache can then skip them without map_domain_page() being
re-indented.

struct mapcache_domain keeps its size (40 bytes, x86_64 debug build),
and so do the structures containing it.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v4:
- Reword has_mapcache()'s comment (Roger).
- Move the comment on the domain-wide lock and TLB epoch into the
  function body (Roger).
- Rename mapcache_lock() / mapcache_unlock() to mapcache_enter() /
  mapcache_exit() (Roger).
- mapcache_new_epoch(): assert that the domain-wide lock is held
  (Roger).
- mapcache_vcpu_init(): drop the comment on the early return for a
  disabled domain-wide mapcache (Jan).
- mapcache_vcpu_init(): initialise ents and nr at their declarations,
  as before (Jan).
- Dropping the redundant is_pv_vcpu() checks in map_domain_page() and
  unmap_domain_page() is now a patch of its own (Jan).

Changes in v3:
- New in this version, split out of "x86/hvm: introduce per-vCPU
  mapcache for vCPU-PT domains" for review.
---
 xen/arch/x86/domain_page.c        | 137 ++++++++++++++++++++----------
 xen/arch/x86/include/asm/domain.h |  19 +++--
 2 files changed, 102 insertions(+), 54 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index ed68483695..e4ea7a254f 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -18,17 +18,19 @@
 #include <asm/hardirq.h>
 #include <asm/setup.h>
 
+/* Whether the vCPU supports mapcache usage, might not be in use. */
+static bool has_mapcache(const struct vcpu *v)
+{
+    return is_pv_vcpu(v);
+}
+
 static inline struct vcpu *mapcache_current_vcpu(void)
 {
     const struct vcpu *v = this_cpu(pgtable_vcpu);
     const struct vcpu *curr = current;
 
-    /*
-     * During early boot pgtable_vcpu is not set, callers must handle NULL.
-     * Non-PV domains don't have a mapcache, the directmap covers all physical
-     * address space.
-     */
-    if ( !v || !is_pv_vcpu(v) )
+    /* During early boot pgtable_vcpu is not set, callers must handle NULL. */
+    if ( !v || !has_mapcache(v) )
         return NULL;
 
     /*
@@ -54,6 +56,52 @@ static inline struct vcpu *mapcache_current_vcpu(void)
     return ACCESS_ONCE(this_cpu(pgtable_vcpu));
 }
 
+/*
+ * The accounting for v's mapcache: the domain's, with *dcache set so the
+ * caller takes the domain-wide lock and TLB-epoch machinery into account.
+ */
+static struct mapcache *vcpu_mapcache(struct vcpu *v,
+                                      struct mapcache_domain **dcache)
+{
+    struct domain *d = v->domain;
+
+    *dcache = &d->arch.pv.mapcache;
+    return &(*dcache)->cache;
+}
+
+static void mapcache_enter(struct mapcache_domain *dcache,
+                           struct mapcache_vcpu *vcache)
+{
+    /* The domain's vCPUs share the mapcache's slots. */
+    spin_lock(&dcache->lock);
+
+    /* Has some other CPU caused a wrap? We must flush if so. */
+    if ( unlikely(dcache->epoch != vcache->shadow_epoch) )
+    {
+        vcache->shadow_epoch = dcache->epoch;
+        if ( NEED_FLUSH(this_cpu(tlbflush_time), dcache->tlbflush_timestamp) )
+        {
+            perfc_incr(domain_page_tlb_flush);
+            flush_tlb_local();
+        }
+    }
+}
+
+/* A wrap has just flushed this CPU's TLB: start a new epoch. */
+static void mapcache_new_epoch(struct mapcache_domain *dcache,
+                               struct mapcache_vcpu *vcache)
+{
+    ASSERT(spin_is_locked(&dcache->lock));
+
+    vcache->shadow_epoch = ++dcache->epoch;
+    dcache->tlbflush_timestamp = tlbflush_current_time();
+}
+
+static void mapcache_exit(struct mapcache_domain *dcache)
+{
+    spin_unlock(&dcache->lock);
+}
+
 #define mapcache_l2_entry(e) ((e) >> PAGETABLE_ORDER)
 #define MAPCACHE_L2_ENTRIES (mapcache_l2_entry(MAPCACHE_ENTRIES - 1) + 1)
 #define MAPCACHE_L1ENT(idx) \
@@ -66,6 +114,7 @@ void *map_domain_page(mfn_t mfn)
     struct vcpu *v;
     struct mapcache_domain *dcache;
     struct mapcache_vcpu *vcache;
+    struct mapcache *cache;
     struct vcpu_maphash_entry *hashent;
 
 #ifdef NDEBUG
@@ -77,9 +126,9 @@ void *map_domain_page(mfn_t mfn)
     if ( !v )
         return mfn_to_virt(mfn_x(mfn));
 
-    dcache = &v->domain->arch.pv.mapcache;
+    cache = vcpu_mapcache(v, &dcache);
     vcache = &v->arch.pv.mapcache;
-    if ( !dcache->inuse )
+    if ( !cache->inuse )
         return mfn_to_virt(mfn_x(mfn));
 
     perfc_incr(map_domain_page_count);
@@ -90,41 +139,30 @@ void *map_domain_page(mfn_t mfn)
     if ( hashent->mfn == mfn_x(mfn) )
     {
         idx = hashent->idx;
-        ASSERT(idx < dcache->entries);
+        ASSERT(idx < cache->entries);
         hashent->refcnt++;
         ASSERT(hashent->refcnt);
         ASSERT(mfn_eq(l1e_get_mfn(MAPCACHE_L1ENT(idx)), mfn));
         goto out;
     }
 
-    spin_lock(&dcache->lock);
+    mapcache_enter(dcache, vcache);
 
-    /* Has some other CPU caused a wrap? We must flush if so. */
-    if ( unlikely(dcache->epoch != vcache->shadow_epoch) )
-    {
-        vcache->shadow_epoch = dcache->epoch;
-        if ( NEED_FLUSH(this_cpu(tlbflush_time), dcache->tlbflush_timestamp) )
-        {
-            perfc_incr(domain_page_tlb_flush);
-            flush_tlb_local();
-        }
-    }
-
-    idx = find_next_zero_bit(dcache->inuse, dcache->entries, dcache->cursor);
-    if ( unlikely(idx >= dcache->entries) )
+    idx = find_next_zero_bit(cache->inuse, cache->entries, cache->cursor);
+    if ( unlikely(idx >= cache->entries) )
     {
         unsigned long accum = 0, prev = 0;
 
         /* /First/, clean the garbage map and update the inuse list. */
-        for ( i = 0; i < BITS_TO_LONGS(dcache->entries); i++ )
+        for ( i = 0; i < BITS_TO_LONGS(cache->entries); i++ )
         {
             accum |= prev;
-            dcache->inuse[i] &= ~xchg(&dcache->garbage[i], 0);
-            prev = ~dcache->inuse[i];
+            cache->inuse[i] &= ~xchg(&cache->garbage[i], 0);
+            prev = ~cache->inuse[i];
         }
 
-        if ( accum | (prev & BITMAP_LAST_WORD_MASK(dcache->entries)) )
-            idx = find_first_zero_bit(dcache->inuse, dcache->entries);
+        if ( accum | (prev & BITMAP_LAST_WORD_MASK(cache->entries)) )
+            idx = find_first_zero_bit(cache->inuse, cache->entries);
         else
         {
             /* Replace a hash entry instead. */
@@ -144,19 +182,18 @@ void *map_domain_page(mfn_t mfn)
                     i = 0;
             } while ( i != MAPHASH_HASHFN(mfn_x(mfn)) );
         }
-        BUG_ON(idx >= dcache->entries);
+        BUG_ON(idx >= cache->entries);
 
         /* /Second/, flush TLBs. */
         perfc_incr(domain_page_tlb_flush);
         flush_tlb_local();
-        vcache->shadow_epoch = ++dcache->epoch;
-        dcache->tlbflush_timestamp = tlbflush_current_time();
+        mapcache_new_epoch(dcache, vcache);
     }
 
-    set_bit(idx, dcache->inuse);
-    dcache->cursor = idx + 1;
+    set_bit(idx, cache->inuse);
+    cache->cursor = idx + 1;
 
-    spin_unlock(&dcache->lock);
+    mapcache_exit(dcache);
 
     l1e_write(&MAPCACHE_L1ENT(idx), l1e_from_mfn(mfn, __PAGE_HYPERVISOR_RW));
 
@@ -170,6 +207,7 @@ void unmap_domain_page(const void *ptr)
     unsigned int idx;
     struct vcpu *v;
     struct mapcache_domain *dcache;
+    struct mapcache *cache;
     unsigned long va = (unsigned long)ptr, mfn, flags;
     struct vcpu_maphash_entry *hashent;
 
@@ -181,8 +219,8 @@ void unmap_domain_page(const void *ptr)
     v = mapcache_current_vcpu();
     ASSERT(v);
 
-    dcache = &v->domain->arch.pv.mapcache;
-    ASSERT(dcache->inuse);
+    cache = vcpu_mapcache(v, &dcache);
+    ASSERT(cache->inuse);
 
     idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
     mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
@@ -205,7 +243,7 @@ void unmap_domain_page(const void *ptr)
                    hashent->mfn);
             l1e_write(&MAPCACHE_L1ENT(hashent->idx), l1e_empty());
             /* /Second/, mark as garbage. */
-            set_bit(hashent->idx, dcache->garbage);
+            set_bit(hashent->idx, cache->garbage);
         }
 
         /* Add newly-freed mapping to the maphash. */
@@ -217,7 +255,7 @@ void unmap_domain_page(const void *ptr)
         /* /First/, zap the PTE. */
         l1e_write(&MAPCACHE_L1ENT(idx), l1e_empty());
         /* /Second/, mark as garbage. */
-        set_bit(idx, dcache->garbage);
+        set_bit(idx, cache->garbage);
     }
 
     local_irq_restore(flags);
@@ -239,9 +277,9 @@ void mapcache_domain_init(struct domain *d)
                  2 * PFN_UP(BITS_TO_LONGS(MAPCACHE_ENTRIES) * sizeof(long))) >
                  MAPCACHE_VIRT_START + (PERDOMAIN_SLOT_MBYTES << 20));
     bitmap_pages = PFN_UP(BITS_TO_LONGS(MAPCACHE_ENTRIES) * sizeof(long));
-    dcache->inuse = (void *)MAPCACHE_VIRT_END + PAGE_SIZE;
-    dcache->garbage = dcache->inuse +
-                      (bitmap_pages + 1) * PAGE_SIZE / sizeof(long);
+    dcache->cache.inuse = (void *)MAPCACHE_VIRT_END + PAGE_SIZE;
+    dcache->cache.garbage = dcache->cache.inuse +
+                            (bitmap_pages + 1) * PAGE_SIZE / sizeof(long);
 
     spin_lock_init(&dcache->lock);
 }
@@ -249,15 +287,20 @@ void mapcache_domain_init(struct domain *d)
 int mapcache_vcpu_init(struct vcpu *v)
 {
     struct domain *d = v->domain;
-    struct mapcache_domain *dcache = &d->arch.pv.mapcache;
+    struct mapcache_domain *dcache;
+    struct mapcache *cache;
     unsigned long i;
     unsigned int ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
     unsigned int nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
 
-    if ( !is_pv_vcpu(v) || !dcache->inuse )
+    if ( !has_mapcache(v) )
+        return 0;
+
+    cache = vcpu_mapcache(v, &dcache);
+    if ( !cache->inuse )
         return 0;
 
-    if ( ents > dcache->entries )
+    if ( ents > cache->entries )
     {
         /* Populate page tables. */
         int rc = create_perdomain_mapping(v, MAPCACHE_VIRT_START, ents,
@@ -265,16 +308,16 @@ int mapcache_vcpu_init(struct vcpu *v)
 
         /* Populate bit maps. */
         if ( !rc )
-            rc = create_perdomain_mapping(v, (unsigned long)dcache->inuse,
+            rc = create_perdomain_mapping(v, (unsigned long)cache->inuse,
                                           nr, NULL, NIL(struct page_info *));
         if ( !rc )
-            rc = create_perdomain_mapping(v, (unsigned long)dcache->garbage,
+            rc = create_perdomain_mapping(v, (unsigned long)cache->garbage,
                                           nr, NULL, NIL(struct page_info *));
 
         if ( rc )
             return rc;
 
-        dcache->entries = ents;
+        cache->entries = ents;
     }
 
     /* Mark all maphash entries as not in use. */
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 4140a92f15..542c6b5eca 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -57,6 +57,16 @@ struct trap_bounce {
     unsigned long eip;
 };
 
+struct mapcache {
+    /* The number of array entries, and a cursor into the array. */
+    unsigned int entries;
+    unsigned int cursor;
+
+    /* Which mappings are in use, and which are garbage to reap next epoch? */
+    unsigned long *inuse;
+    unsigned long *garbage;
+};
+
 #define MAPHASH_ENTRIES 8
 #define MAPHASH_HASHFN(pfn) ((pfn) & (MAPHASH_ENTRIES-1))
 #define MAPHASHENT_NOTINUSE ((u32)~0U)
@@ -73,10 +83,6 @@ struct mapcache_vcpu {
 };
 
 struct mapcache_domain {
-    /* The number of array entries, and a cursor into the array. */
-    unsigned int entries;
-    unsigned int cursor;
-
     /* Protects map_domain_page(). */
     spinlock_t lock;
 
@@ -84,9 +90,8 @@ struct mapcache_domain {
     unsigned int epoch;
     u32 tlbflush_timestamp;
 
-    /* Which mappings are in use, and which are garbage to reap next epoch? */
-    unsigned long *inuse;
-    unsigned long *garbage;
+    /* Accounting of the domain-wide mapcache. */
+    struct mapcache cache;
 };
 
 void mapcache_domain_init(struct domain *d);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470804.1679521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxp-0003Gr-Oi; Tue, 03 Nov 2026 23:30:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470804.1679521; Tue, 03 Nov 2026 23:30:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxo-0003CF-Na; Tue, 03 Nov 2026 23:30:48 +0000
Received: by outflank-mailman (input) for mailman id 1470804;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dS-BI
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Cov0-0w8D;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo4-0000000EMFa-2viA;
 Tue, 03 Nov 2026 23:20:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=x3Vx8q2pS91S3VIbmLZaIAr7uWnHJgNTJ/Nzz6y5x7k=; b=wbvQCI/AKOeHsMMV8YDR6d+O+i
	wcQfJ59sX90HfnIR+e2NYtcVK8N+/sZrDPi1gnCubI/xaC9loStf9App35e6PbyaDj39wmLkuQq44
	Bphh6KMQg9/Gks66bMmehJyBAOqtvdwzddlb8E+6kIEB6K4EewkvCSOVPYMw+rDkYiI8=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 28/44] x86/svm: drop svm_vmcb_dump()'s paddr
Date: Tue,  3 Nov 2026 17:13:50 -0500
Message-ID: <20261103-asi-hvm-v6-28-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

svm_vmcb_dump() prints virt_to_maddr() of the VMCB, which is right only
while VMCBs are reached through the directmap.  Print the virtual
address alone.

This prepares for moving VMCBs off always-mapped memory.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

Changes in v5:
- Keep VCPU_svm_vmcb: svm_asm_do_resume() now uses it, since
  df8d101a3854 ("x86/svm: Work around VMRUN's corruption of
  VMCB.INTR_SHADOW") in staging.
- Retitle (was: "x86/svm: drop svm_vmcb_dump()'s paddr and the unused
  VCPU_svm_vmcb").

Changes in v4:
- New in this version.
---
 xen/arch/x86/hvm/svm/vmcb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 5e193be9cd..21005dc57f 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -280,8 +280,8 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
         svm_sync_vmcb(curr, vmcb_in_sync);
 
     printk("Dumping guest's current state at %s...\n", from);
-    printk("Size of VMCB = %zu, paddr = %"PRIpaddr", vaddr = %p\n",
-           sizeof(struct vmcb_struct), virt_to_maddr(vmcb), vmcb);
+    printk("Size of VMCB = %zu, vaddr = %p\n",
+           sizeof(struct vmcb_struct), vmcb);
 
     printk("cr_intercepts = %#x dr_intercepts = %#x "
            "exception_intercepts = %#x\n",
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470805.1679531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxr-0003Y2-T5; Tue, 03 Nov 2026 23:30:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470805.1679531; Tue, 03 Nov 2026 23:30:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxq-0003T5-8F; Tue, 03 Nov 2026 23:30:50 +0000
Received: by outflank-mailman (input) for mailman id 1470805;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000da-Cv
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Coun-0Y5z;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo2-0000000EMFa-2rqY;
 Tue, 03 Nov 2026 23:20:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=doZGPedjl6t4BduuLLhxAllV1eJixwYX8iV31mVCa6U=; b=1FC68PBmjd3pbBZ/jYcxL7sPEx
	SjTf2yfTDgVkTShKZDahj+YjBxkZ2wRREY7ORP9osVC6yRusmepkoAOzJY5OZ1zxyEPguC1K5ol57
	xKXpgqEqO/7Rl0r0su+afVmxjLxawrmlVi/BMJrKwcZ1gRmnRAdY3a5dtZd97k+cfnp4=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 24/44] x86/mm: introduce populate_perdomain_mapping()
Date: Tue,  3 Nov 2026 17:13:46 -0500
Message-ID: <20261103-asi-hvm-v6-24-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

The per-domain area has central machinery for building its page-tables
and for managing the backing pages it owns itself:
create_perdomain_mapping() / destroy_perdomain_mapping(), used by the
mapcache and the compat argument-translation area.  What the interface
lacks is a way to install a caller's own pages at a chosen address,
which a per-vCPU state window, introduced by a later patch, needs: its
users allocate their pages themselves and map them there.

Introduce populate_perdomain_mapping(v, va, mfn, nr, flags) for this.
It writes the given MFNs, with the given page-table flags, into v's view
of the per-domain area, walking the per-domain page-table structures
with transient mappings, so v need not be current.  Callers don't need
to know where the page-tables live, how the area is structured, or
whether v has a per-domain area of its own or shares its domain's.

We require the range to already have been populated down to the L1
tables by create_perdomain_mapping().  TLB flushing is left to the
caller.  A present entry not owned by the area (!_PAGE_AVAIL0) is
replaced.  A present entry owned by the area (_PAGE_AVAIL0, installed
by create_perdomain_mapping() itself) is never expected: such a page is
referenced only by the mapping, and no caller replaces area-owned
backing.  Should one ever do so, the page is leaked with a message
rather than freed.

The function is not for contexts with interrupts off: its users map
their pages when allocating them.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Comment above populate_perdomain_mapping(): the range lies within one
  sub-area (one PERDOMAIN_VIRT_SLOT()), not one "per-domain slot".
- Message: "whether v has a per-domain area of its own or shares its
  domain's".

Changes in v4:
- Re-introduced into the series.
- HVM only: the users are the state window's, all of which map their
  pages at allocation time, so drop the linear-mapping fast path and the
  IRQs-off walk that context-switch callers needed, along with the
  map_domain_page_irqoff() variants.
---
 xen/arch/x86/include/asm/mm.h |  3 ++
 xen/arch/x86/mm.c             | 62 +++++++++++++++++++++++++++++++++++
 2 files changed, 65 insertions(+)

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 50ace61ce7..d04a935aff 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -623,6 +623,9 @@ struct page_info *allocate_perdomain_l3(struct domain *d);
 int create_perdomain_mapping(struct vcpu *v, unsigned long va,
                              unsigned int nr, l1_pgentry_t **pl1tab,
                              struct page_info **ppg);
+void populate_perdomain_mapping(const struct vcpu *v, unsigned long va,
+                                const mfn_t *mfn, unsigned int nr,
+                                unsigned int flags);
 void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr);
 void free_perdomain_mappings(struct domain *d);
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index e1a80e9a5c..0edf01f363 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -6567,6 +6567,68 @@ int create_perdomain_mapping(struct vcpu *v, unsigned long va,
     return rc;
 }
 
+/*
+ * Map @nr pages, @mfn[0..nr-1], at consecutive pages from @va in v's view of
+ * the per-domain area, with page-table @flags.  The range must lie within a
+ * single sub-area (one PERDOMAIN_VIRT_SLOT()), and must already have been
+ * plumbed down to the L1 tables by create_perdomain_mapping().  Present
+ * entries are replaced, and no TLB flushing is done.
+ *
+ * The walk maps the per-domain page-table pages transiently, so v need not
+ * be current.  It is not for contexts with interrupts disabled.
+ */
+void populate_perdomain_mapping(const struct vcpu *v, unsigned long va,
+                                const mfn_t *mfn, unsigned int nr,
+                                unsigned int flags)
+{
+    struct page_info *l3_pg = perdomain_l3(v);
+    const l3_pgentry_t *l3tab;
+    const l2_pgentry_t *l2tab;
+    l1_pgentry_t *l1tab = NULL;
+    unsigned int i;
+
+    ASSERT(va >= PERDOMAIN_VIRT_START &&
+           va < PERDOMAIN_VIRT_SLOT(PERDOMAIN_SLOTS));
+    ASSERT(!nr || !l3_table_offset(va ^ (va + nr * PAGE_SIZE - 1)));
+    ASSERT(local_irq_is_enabled());
+
+    if ( !nr )
+        return;
+
+    BUG_ON(!l3_pg);
+    l3tab = __map_domain_page(l3_pg);
+    BUG_ON(!(l3e_get_flags(l3tab[l3_table_offset(va)]) & _PAGE_PRESENT));
+    l2tab = map_l2t_from_l3e(l3tab[l3_table_offset(va)]);
+    unmap_domain_page(l3tab);
+
+    for ( i = 0; i < nr; i++, va += PAGE_SIZE )
+    {
+        l1_pgentry_t *pl1e;
+
+        if ( !l1tab || !l1_table_offset(va) )
+        {
+            const l2_pgentry_t *pl2e = &l2tab[l2_table_offset(va)];
+
+            unmap_domain_page(l1tab);
+            BUG_ON(!(l2e_get_flags(*pl2e) & _PAGE_PRESENT));
+            l1tab = map_l1t_from_l2e(*pl2e);
+        }
+
+        pl1e = &l1tab[l1_table_offset(va)];
+        if ( perdomain_l1e_needs_freeing(*pl1e) )
+        {
+            printk(XENLOG_ERR
+                   "%pv: leaking area-owned page %"PRI_mfn" at %#lx\n",
+                   v, mfn_x(l1e_get_mfn(*pl1e)), va);
+            ASSERT_UNREACHABLE();
+        }
+        l1e_write(pl1e, l1e_from_mfn(mfn[i], flags));
+    }
+
+    unmap_domain_page(l1tab);
+    unmap_domain_page(l2tab);
+}
+
 void destroy_perdomain_mapping(const struct vcpu *v, unsigned long va,
                                unsigned int nr)
 {
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470807.1679540 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxt-0003xV-Tu; Tue, 03 Nov 2026 23:30:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470807.1679540; Tue, 03 Nov 2026 23:30:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxs-0003s8-Gi; Tue, 03 Nov 2026 23:30:52 +0000
Received: by outflank-mailman (input) for mailman id 1470807;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000do-FR
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Covg-1eHq;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoG-0000000EMFa-0CcU;
 Tue, 03 Nov 2026 23:20:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=DkoUGAtm2uD3yJT2Of+9zcbopY7hys4Hst7tr895h8s=; b=0zZZVuMbiTzSgULRHdyHIFL1nu
	JaOS1K6nBf0PCpyp7d5Tig3pUeuBzD94xkenpFTP2LIma4RNkDHkbDI5gVYdGJr497IajtC/7sMhi
	YiV6okeH+AQbg6PwplJQPcQIt6hy2zNZh725Cbgd501EmdscmeH9oUzcx0n/40cs1+NU=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 43/44] x86/domain: restore FPU state after switching to the new page tables
Date: Tue,  3 Nov 2026 17:14:05 -0500
Message-ID: <20261103-asi-hvm-v6-43-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

__context_switch() restores the incoming vCPU's FPU state
(vcpu_restore_fpu(n)) while still running on the outgoing vCPU's page
tables, before write_ptbase(n).  That dereferences n's XSAVE area
through whatever address it happens to have in p's address space --
fine today, when the area is globally mapped, but not once guest XSAVE
state moves to a per-vCPU mapping that need not exist in another vCPU's
address space (upcoming Address Space Isolation work).

Move the eager restore to just after write_ptbase(n), so it runs with
n's page tables loaded.  The XCR0/XSS setup stays where it is (it
programs control registers / an MSR, independent of the page tables,
and XSS must be set before the supervisor-state xrstor).  Nothing
between the save and the new restore point touches guest FPU state:
the ctxt_switch->to() hooks, psr and GDT handling are all FPU-free,
and Xen is built without SSE.

No functional change with the current global XSAVE-area mapping.

Assisted-by: Claude Code:claude-opus-4-8
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/domain.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 66d71ec41b..8222ad9e2a 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -2267,7 +2267,6 @@ static void __context_switch(void)
             if ( cpu_has_xsaves && is_hvm_vcpu(n) )
                 set_msr_xss(n->arch.msrs->xss.raw);
         }
-        vcpu_restore_fpu(n);
         nd->arch.ctxt_switch->to(n);
     }
 
@@ -2283,7 +2282,10 @@ static void __context_switch(void)
     write_ptbase(n);
 
     if ( !is_idle_domain(nd) )
+    {
         memcpy(stack_regs, vcpu_user_regs(n), CTXT_SWITCH_STACK_BYTES);
+        vcpu_restore_fpu(n);
+    }
 
 #ifdef CONFIG_PV
     /* Prefetch the VMCB if we expect to use it later in the context switch */
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470806.1679547 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxv-0004Eo-D6; Tue, 03 Nov 2026 23:30:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470806.1679547; Tue, 03 Nov 2026 23:30:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxt-000480-V9; Tue, 03 Nov 2026 23:30:53 +0000
Received: by outflank-mailman (input) for mailman id 1470806;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000di-EP
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CovY-1XYK;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnr-0000000EMFa-1M9j;
 Tue, 03 Nov 2026 23:20:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=6RX48R0QNYubdYR5xyvgMIQXSDrHO/YymvMThV7Bj0U=; b=Gc+TtgwSAdtYCMBpSUQ553r+Rb
	3cx8waJiOAJJuN+3+TQ55waQlxg1Wo5ffa0U9BRUzY1UjcaY5wbfdzPu7tSJl5PpXwQT5zuvK/ha4
	DvPVOMqOUrkAbyeZJF5sUoU6yhl8w1/rZFbWp1UIEq3+I4oGMAlMt+vXqJ1xP4Nee660=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 11/44] x86/domain_page: move struct mapcache_vcpu to struct arch_vcpu
Date: Tue,  3 Nov 2026 17:13:33 -0500
Message-ID: <20261103-asi-hvm-v6-11-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

struct mapcache_vcpu, the per-vCPU part of the mapcache (the maphash
and the vCPU's shadow of the domain's TLB epoch), lives in struct
pv_vcpu, as only PV vCPUs have a mapcache.  In preparation for
implementing mapcaches for HVM domains, move it to struct arch_vcpu:
v->arch.pv.mapcache becomes v->arch.mapcache.

struct pv_vcpu shrinks from 512 to 376 bytes, and struct vcpu grows
from 2880 to 3008 bytes (x86_64, debug build), within its page: from
here on HVM vCPUs carry the 136-byte struct mapcache_vcpu too, ahead of
its use by those of vCPU-PT domains.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Roger Pau Monné <roger@xenproject.org>
---
Changes in v3:
- New in this version, split out of "x86/hvm: introduce per-vCPU
  mapcache for vCPU-PT domains" for review.
---
 xen/arch/x86/domain_page.c        | 6 +++---
 xen/arch/x86/include/asm/domain.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index e4ea7a254f..205d7b832a 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -127,7 +127,7 @@ void *map_domain_page(mfn_t mfn)
         return mfn_to_virt(mfn_x(mfn));
 
     cache = vcpu_mapcache(v, &dcache);
-    vcache = &v->arch.pv.mapcache;
+    vcache = &v->arch.mapcache;
     if ( !cache->inuse )
         return mfn_to_virt(mfn_x(mfn));
 
@@ -224,7 +224,7 @@ void unmap_domain_page(const void *ptr)
 
     idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
     mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
-    hashent = &v->arch.pv.mapcache.hash[MAPHASH_HASHFN(mfn)];
+    hashent = &v->arch.mapcache.hash[MAPHASH_HASHFN(mfn)];
 
     local_irq_save(flags);
 
@@ -324,7 +324,7 @@ int mapcache_vcpu_init(struct vcpu *v)
     BUILD_BUG_ON(MAPHASHENT_NOTINUSE < MAPCACHE_ENTRIES);
     for ( i = 0; i < MAPHASH_ENTRIES; i++ )
     {
-        struct vcpu_maphash_entry *hashent = &v->arch.pv.mapcache.hash[i];
+        struct vcpu_maphash_entry *hashent = &v->arch.mapcache.hash[i];
 
         hashent->mfn = ~0UL; /* never valid to map */
         hashent->idx = MAPHASHENT_NOTINUSE;
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 542c6b5eca..45d308407e 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -545,9 +545,6 @@ struct arch_domain
 
 struct pv_vcpu
 {
-    /* map_domain_page() mapping cache. */
-    struct mapcache_vcpu mapcache;
-
     unsigned int vgc_flags;
 
     struct trap_info *trap_ctxt;
@@ -643,6 +640,9 @@ struct arch_vcpu
 #define async_exception_state(t) async_exception_state[(t)-1]
     uint8_t async_exception_mask;
 
+    /* map_domain_page() mapping cache. */
+    struct mapcache_vcpu mapcache;
+
     /* Virtual Machine Extensions */
     union {
         struct pv_vcpu pv;
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470808.1679558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxw-0004Ri-TO; Tue, 03 Nov 2026 23:30:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470808.1679558; Tue, 03 Nov 2026 23:30:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxv-0004O0-CD; Tue, 03 Nov 2026 23:30:55 +0000
Received: by outflank-mailman (input) for mailman id 1470808;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000ds-HC
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Covi-1oFa;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoC-0000000EMFa-2YTw;
 Tue, 03 Nov 2026 23:20:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=78UJyNn4VY/h+N1P7RYObuj4ivXfajt4ZYGSI254v8U=; b=3AAaRV0jEBDArkkKqQ4+hWBY7M
	0fi2JDdjjuWW0a4Tzp1Bz/dVPqGP0vMFXOOf1eBqxMQ8Qs60d3WFcH/SsNUnOiUIzd0N7yd5elt8R
	tSQqEBAmcF93TWmBQsEMURWMwB2gEEtDr/1yPEk4BKu7ba9F5ZLxHtbyX/H6gooCOjCY=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 39/44] x86/mpx: Map/unmap xsave area in read_bndcfgu()
Date: Tue,  3 Nov 2026 17:14:01 -0500
Message-ID: <20261103-asi-hvm-v6-39-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

The BNDCSR read executes XSAVE into the local idle vCPU's save area as
scratch space and pulls BNDCFGU out of the result.  Fetch that buffer
through the VCPU_MAP_XSAVE_AREA() seam rather than a raw dereference,
so the function is indifferent to where vCPU save areas live.  This
was the last raw access to another vCPU's save-area pointer outside
the seam.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Assisted-by: Claude Code:claude-fable-5
Signed-off-by: George Dunlap <gwd@xenproject.org>

---
Revived from "x86: Address Space Isolation FPU preparations" v3 patch
09/12 (<20250110132823.24348-10-alejandro.vallejo@cloud.com>; no v4
was ever posted).

Changes in v5:
- New in this version.

Changes since the previously posted version:
 - Constified the vcpu pointer, as requested by Jan Beulich on the
   original thread (the xstate pointer itself stays mutable: the
   asm()s write through it, as Jan noted in withdrawing that half of
   the request).
 - Expanded the commit message.
---
 xen/arch/x86/xstate.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 8336414c52..2eae3f098d 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -1023,9 +1023,10 @@ int handle_xsetbv(u32 index, u64 new_bv)
 
 uint64_t read_bndcfgu(void)
 {
+    uint64_t bndcfgu = 0;
     unsigned long cr0 = read_cr0();
-    struct xsave_struct *xstate
-        = idle_vcpu[smp_processor_id()]->arch.xsave_area;
+    const struct vcpu *v = idle_vcpu[smp_processor_id()];
+    struct xsave_struct *xstate = VCPU_MAP_XSAVE_AREA(v);
     const struct xstate_bndcsr *bndcsr;
 
     ASSERT(cpu_has_mpx);
@@ -1051,7 +1052,12 @@ uint64_t read_bndcfgu(void)
     if ( cr0 & X86_CR0_TS )
         write_cr0(cr0);
 
-    return xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR ? bndcsr->bndcfgu : 0;
+    if ( xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR )
+        bndcfgu = bndcsr->bndcfgu;
+
+    VCPU_UNMAP_XSAVE_AREA(v, xstate);
+
+    return bndcfgu;
 }
 
 void xstate_set_init(uint64_t mask)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:30:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:30:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470812.1679567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxy-0004re-Vq; Tue, 03 Nov 2026 23:30:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470812.1679567; Tue, 03 Nov 2026 23:30:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxx-0004l3-BU; Tue, 03 Nov 2026 23:30:57 +0000
Received: by outflank-mailman (input) for mailman id 1470812;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000eO-L1
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CowL-2IRJ;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoD-0000000EMFa-2Nu9;
 Tue, 03 Nov 2026 23:20:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=O3n3UQQODatRF1IOFe5HjC1fiBbAzhiwh2RBel9BdYM=; b=Ac3F6HMDN03iYHMp15QDsTkCtG
	e10Ll0MTW0eMH+z8uX3BQ8VpuWXkWMlHdGnk7BpYQKSC11HmlgSPS++kWp7KjHoTB9QE51hd6r3tR
	BHViVvKio1DBoCa5uMGlqkzknuOSMxf/Jx8ta+Z9LJrYaW1Y4xr0D7paeoXYYBSTtGAA=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 41/44] x86/fpu: Pass explicit xsave areas to fpu_(f)xrstor()
Date: Tue,  3 Nov 2026 17:14:03 -0500
Message-ID: <20261103-asi-hvm-v6-41-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Mirror of the save-side change: the restore entry point fetches the
vCPU's XSAVE area once, through the VCPU_MAP_XSAVE_AREA() seam, and
passes the pointer down explicitly.  xrstor() gains an area parameter
in place of its internal dereference (its fault-recovery writes go
through the same mapped pointer), fpu_fxrstor() reduces to taking just
the legacy region, and the two direct xrstor() callers -- XSETBV
emulation and xstate_set_init() -- pass the pointers they already hold
mapped.  In handle_xsetbv() this moves the xrstor inside the mapped
section, where it belongs.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Assisted-by: Claude Code:claude-fable-5
Signed-off-by: George Dunlap <gwd@xenproject.org>

---
Revived from "x86: Address Space Isolation FPU preparations" v3 patch
11/12 (<20250110132823.24348-12-alejandro.vallejo@cloud.com>, Acked-by
Jan Beulich; no v4 was ever posted).

Changes in v5:
- New in this version.

Changes since the previously posted version:
 - Regenerated against the eager-FPU-only tree: the entry point is now
   vcpu_restore_fpu() (the lazy/nonlazy split no longer exists), and
   the mask is always XSTATE_ALL.
 - Moved handle_xsetbv()'s xrstor() call inside its map/unmap
   bracket, which the explicit-area form makes possible.
 - Expanded the commit message.
---
 xen/arch/x86/i387.c               | 19 ++++++++++++-------
 xen/arch/x86/include/asm/xstate.h |  2 +-
 xen/arch/x86/xstate.c             |  7 +++----
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 65491b5697..b796687eeb 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -20,7 +20,8 @@
 /*     FPU Restore Functions   */
 /*******************************/
 /* Restore x87 extended state */
-static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
+static inline void fpu_xrstor(const struct vcpu *v,
+                              struct xsave_struct *xsave_area, uint64_t mask)
 {
     bool ok;
 
@@ -30,16 +31,14 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
      */
     ok = set_xcr0(v->arch.xcr0_accum | XSTATE_FP_SSE);
     ASSERT(ok);
-    xrstor(v, mask);
+    xrstor(v, xsave_area, mask);
     ok = set_xcr0(v->arch.xcr0 ?: XSTATE_FP_SSE);
     ASSERT(ok);
 }
 
 /* Restore x87 FPU, MMX, SSE and SSE2 state */
-static inline void fpu_fxrstor(struct vcpu *v)
+static inline void fpu_fxrstor(const fpusse_t *fpu_ctxt)
 {
-    const fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
-
     /*
      * Some CPUs don't save/restore FDP/FIP/FOP unless an exception
      * is pending. Clear the x87 state here by setting it to fixed
@@ -174,12 +173,18 @@ static inline void fpu_fxsave(const struct vcpu *v, fpusse_t *fpu_ctxt)
 /* Restore FPU state whenever VCPU is schduled in. */
 void vcpu_restore_fpu(struct vcpu *v)
 {
+    struct xsave_struct *xsave_area;
+
     ASSERT(!is_idle_vcpu(v));
 
+    xsave_area = VCPU_MAP_XSAVE_AREA(v);
+
     if ( cpu_has_xsave )
-        fpu_xrstor(v, XSTATE_ALL);
+        fpu_xrstor(v, xsave_area, XSTATE_ALL);
     else
-        fpu_fxrstor(v);
+        fpu_fxrstor(&xsave_area->fpu_sse);
+
+    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
 
     /* Xen doesn't need TS set, but the guest might. */
     if ( is_pv_vcpu(v) && (v->arch.pv.ctrlreg[0] & X86_CR0_TS) )
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 40bb6f152e..3d57aaadd8 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -96,7 +96,7 @@ void set_msr_xss(u64 xss);
 uint64_t get_msr_xss(void);
 uint64_t read_bndcfgu(void);
 void xsave(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
-void xrstor(struct vcpu *v, uint64_t mask);
+void xrstor(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
 void xstate_set_init(uint64_t mask);
 bool xsave_enabled(const struct vcpu *v);
 int __must_check validate_xstate(const struct domain *d,
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 058bc4c0bc..3c9be271a3 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -378,11 +378,10 @@ void xsave(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
         ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = fip_width;
 }
 
-void xrstor(struct vcpu *v, uint64_t mask)
+void xrstor(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
 {
     uint32_t hmask = mask >> 32;
     uint32_t lmask = mask;
-    struct xsave_struct *ptr = v->arch.xsave_area;
     unsigned int faults, prev_faults;
 
     /*
@@ -1011,8 +1010,8 @@ int handle_xsetbv(u32 index, u64 new_bv)
         clts();
 
         asm ( "stmxcsr %0" : "=m" (xsave_area->fpu_sse.mxcsr) );
+        xrstor(curr, xsave_area, mask);
         VCPU_UNMAP_XSAVE_AREA(curr, xsave_area);
-        xrstor(curr, mask);
         if ( cr0 & X86_CR0_TS )
             write_cr0(cr0);
     }
@@ -1079,7 +1078,7 @@ void xstate_set_init(uint64_t mask)
 
     xstate = VCPU_MAP_XSAVE_AREA(v);
     memset(&xstate->xsave_hdr, 0, sizeof(xstate->xsave_hdr));
-    xrstor(v, mask);
+    xrstor(v, xstate, mask);
     VCPU_UNMAP_XSAVE_AREA(v, xstate);
 
     if ( cr0 & X86_CR0_TS )
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470811.1679576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy1-0005IG-D9; Tue, 03 Nov 2026 23:31:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470811.1679576; Tue, 03 Nov 2026 23:31:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONxz-00059M-4k; Tue, 03 Nov 2026 23:30:59 +0000
Received: by outflank-mailman (input) for mailman id 1470811;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dy-HU
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CovM-1Iuh;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnw-0000000EMFa-012A;
 Tue, 03 Nov 2026 23:20:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=Y6ajORWqf8gpkH5v5C/jSbFAFNJo4H5wi/PdnzFQF1g=; b=hnVGcJnwAdVsodcqFoBr8j881f
	tyczsZaPBND8awqFECvJBujntyhSWR7/o81iKMLrTmD7CM+HCQ5l+Iz2tSeO56xcouyrEqfFkA4ml
	+wwX4U5Q6MHkCUsk1RD6tof9V2WDzyVTPDMdElcixiVchJG+8PJ0YibBwa9Lv09utzKk=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 17/44] x86/mm: build and maintain a sparse view of the directmap
Date: Tue,  3 Nov 2026 17:13:39 -0500
Message-ID: <20261103-asi-hvm-v6-17-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The directmap maps all of RAM, and every root page-table carries it, so
while any guest context runs, all guest memory is reachable from Xen's
address space.  For ASI, guest contexts are to run on a view of the
directmap which maps only what Xen must reach through it at all times,
leaving guest memory to transient mappings (map_domain_page()).

Rather than remove the directmap for everyone, keep the full directmap
as it is, for the idle domain and for guest contexts not using ASI, and
build a second, sparse view: page-tables for the same virtual addresses
(the part of the directmap PV guests can see, where everything Xen
reaches through the directmap lives), mapping a subset of what the full
directmap maps, each entry a copy of the full directmap's.  Boot and the
idle domain keep the full directmap, so nothing in them needs
converting.

The sparse view maps the xenheap, and memory never handed to the heap
allocator (Xen's image, boot-time allocations, firmware tables).  It is
built once the boot allocator has handed its memory to the heap, from
the full directmap minus the ranges the heap was given, plus the xenheap
allocations made meanwhile.  The page-tables then come from the heap,
and no other CPU is up.  The sparse view has an L3 for each of its L4
slots from the start, so its L4 entries never change and root
page-tables can take copies of them.  It is then kept in step through
the hooks added by "x86/mm: add hooks for a sparse view of the
directmap", which this patch implements for CONFIG_SPARSE_DIRECTMAP.

modify_xen_mappings_lite() needs no change: it only changes the mappings
of Xen's image, in L4 slot 261, which every root page-table shares with
idle_pg_table, outside the range the sparse view replaces.

xen_mapping_lookup(), built only with
CONFIG_SPARSE_DIRECTMAP, reads an entry of either hierarchy under the
L3 table lock.

The allocator may still have to scrub a page before returning it; this
will be mapped with map_domain_page().  This is fine for HVM domains
on the sparse view, as the mapcache is per-vCPU, so no other vCPU can
read unscrubbed data.  PV domains' mapcache is still domain-wide, so
for PV domains on the sparse view, this opens up a window where other
vCPUs could potentially speculatively access the unscrubbed data.
This would be fixed by having per-vCPU mapcaches for PV domains, or
synchronously scrubbing pages on free.  Neither are in the scope of the
current work.

The sparse view is built only when some domain type is to use it, which
nothing can request yet: this patch changes nothing on its own.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- Split: free_pagetable_in() moves to "x86/mm: let Xen's page-table
  walker operate on a given root", and the hooks with their stubs and
  callers to the new "x86/mm: add hooks for a sparse view of the
  directmap".

Changes in v4:
- Message: "domain type", not "guest type".
- Wrap a line that reached 80 columns.
- Memory hot-add maps the new range into the full directmap only.
- Define opt_sparse_dmap_hwdom here, beside the PV and HVM knobs
  (Roger).
- add_to_sparse_view(): assert that the lookup finds the MFN expected
  (Roger).
- cmp_mfn_range(): explicit return values, as in cmp_node() (Roger).
- Comments and variable name changes in sparse_dmap_init()'s loop over
  the heap's ranges (Roger).
- Message: drop "(NUMA node heap metadata)" (Roger).
- Message: drop the reference to the directmap removal series (Roger).
- Message: modify_xen_mappings_lite() needs no change (Roger).
- Message: note the limit of scrubbing at allocation for PV domains
  (Roger).
- Message: only boot and the idle domain keep the full directmap.
- Set the NX bit in this patch, rather than adding it in a later patch.

Changes in v3:
- New in this version.
---
 xen/arch/x86/Kconfig                        |   1 +
 xen/arch/x86/Makefile                       |   1 +
 xen/arch/x86/include/asm/mm.h               |   4 +
 xen/arch/x86/include/asm/sparse-directmap.h |  37 ++
 xen/arch/x86/mm.c                           |  74 ++++
 xen/arch/x86/sparse-directmap.c             | 431 ++++++++++++++++++++
 xen/common/Kconfig                          |  18 +
 xen/include/xen/mm.h                        |  14 +
 8 files changed, 580 insertions(+)
 create mode 100644 xen/arch/x86/sparse-directmap.c

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index e5535ac484..cd72102ccc 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -31,6 +31,7 @@ config X86
 	select HAS_SCHED_GRANULARITY
 	select HAS_SHARED_INFO
 	imply HAS_SOFT_RESET
+	select HAS_SPARSE_DIRECTMAP
 	select HAS_UBSAN
 	select HAS_VMAP
 	select HAS_VPCI if HVM
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 2be90ea098..86adf042e9 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -63,6 +63,7 @@ obj-y += shutdown.o
 obj-y += smp.o
 obj-y += smpboot.o
 obj-y += spec_ctrl.o
+obj-$(CONFIG_SPARSE_DIRECTMAP) += sparse-directmap.o
 obj-y += srat.o
 obj-y += string.o
 obj-$(CONFIG_SYSCTL) += sysctl.o
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 61dc317dd4..113ade0bbd 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -604,6 +604,10 @@ int map_pages_in(l4_pgentry_t *root, unsigned long virt, mfn_t mfn,
                  unsigned long nr_mfns, pte_attr_t flags);
 int modify_mappings_in(l4_pgentry_t *root, unsigned long s, unsigned long e,
                        pte_attr_t nf);
+#ifdef CONFIG_SPARSE_DIRECTMAP
+mfn_t xen_mapping_lookup(l4_pgentry_t *root, unsigned long va,
+                         pte_attr_t *flags, unsigned long *nr);
+#endif
 
 int __sync_local_execstate(void);
 
diff --git a/xen/arch/x86/include/asm/sparse-directmap.h b/xen/arch/x86/include/asm/sparse-directmap.h
index 53747a98ad..ea14d44334 100644
--- a/xen/arch/x86/include/asm/sparse-directmap.h
+++ b/xen/arch/x86/include/asm/sparse-directmap.h
@@ -6,6 +6,41 @@
 #include <xen/mm-types.h>
 #include <asm/page.h>
 
+#ifdef CONFIG_SPARSE_DIRECTMAP
+
+/*
+ * The part of the directmap the sparse view covers: the part PV guests can
+ * see, which is where everything Xen reaches through the directmap lives.
+ * SPARSE_DMAP_END_MFN is the first MFN past it.
+ */
+#define SPARSE_DMAP_START   DIRECTMAP_VIRT_START
+#define SPARSE_DMAP_END     HYPERVISOR_VIRT_END
+#define SPARSE_DMAP_END_MFN (virt_to_mfn(SPARSE_DMAP_END - 1) + 1)
+
+/*
+ * Which domains use the sparse view: PV domains and HVM domains other than
+ * the hardware domain, and the hardware domain, PV or PVH.
+ */
+extern bool opt_sparse_dmap_pv, opt_sparse_dmap_hvm, opt_sparse_dmap_hwdom;
+
+/* Root of the sparse view, once built (NULL before, or if not configured). */
+extern l4_pgentry_t *sparse_dmap_root;
+
+static inline bool sparse_dmap_configured(void)
+{
+    return opt_sparse_dmap_pv || opt_sparse_dmap_hvm || opt_sparse_dmap_hwdom;
+}
+
+void sparse_dmap_init(void);
+int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn, unsigned long nr,
+                           pte_attr_t flags);
+int sparse_dmap_mirror_modify(unsigned long s, unsigned long e,
+                              pte_attr_t nf);
+int sparse_dmap_remove(mfn_t mfn, unsigned long nr);
+int sparse_dmap_drop_pagetable(mfn_t mfn);
+
+#else /* !CONFIG_SPARSE_DIRECTMAP */
+
 static inline bool sparse_dmap_configured(void) { return false; }
 static inline void sparse_dmap_init(void) {}
 static inline int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn,
@@ -27,4 +62,6 @@ static inline int sparse_dmap_drop_pagetable(mfn_t mfn)
     return 0;
 }
 
+#endif /* CONFIG_SPARSE_DIRECTMAP */
+
 #endif /* X86_SPARSE_DIRECTMAP_H */
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 904ed7a258..0d475432ff 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5441,6 +5441,80 @@ mfn_t xen_map_to_mfn(unsigned long va)
     return ret;
 }
 
+#ifdef CONFIG_SPARSE_DIRECTMAP
+/*
+ * Look @va up in the hierarchy rooted at @root, without allocating anything.
+ * Returns the MFN mapped at @va, or INVALID_MFN, with the mapping's flags in
+ * L1 form in *flags, and in *nr the number of pages from @va to the end of
+ * the entry that maps @va (or that finds it unmapped).
+ */
+mfn_t xen_mapping_lookup(l4_pgentry_t *root, unsigned long va,
+                         pte_attr_t *flags, unsigned long *nr)
+{
+    bool locking = system_state > SYS_STATE_boot;
+    l4_pgentry_t l4e = root[l4_table_offset(va)];
+    const l3_pgentry_t *pl3e = NULL;
+    const l2_pgentry_t *pl2e = NULL;
+    const l1_pgentry_t *pl1e = NULL;
+    struct page_info *l3page;
+    unsigned int shift = L4_PAGETABLE_SHIFT;
+    mfn_t ret = INVALID_MFN;
+
+    L3T_INIT(l3page);
+    *flags = 0;
+
+    if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) )
+        goto out;
+
+    pl3e = map_l3t_from_l4e(l4e) + l3_table_offset(va);
+    l3page = l4e_get_page(l4e);
+    L3T_LOCK(l3page);
+
+    shift = L3_PAGETABLE_SHIFT;
+    if ( !(l3e_get_flags(*pl3e) & _PAGE_PRESENT) )
+        goto out;
+    if ( l3e_get_flags(*pl3e) & _PAGE_PSE )
+    {
+        /* The superpage PAT bit sits among the address bits. */
+        *flags = lNf_to_l1f(l3e_get_flags(*pl3e)) |
+                 (l3e_get_intpte(*pl3e) & _PAGE_PSE_PAT ? _PAGE_PAT : 0);
+        ret = _mfn((l3e_get_pfn(*pl3e) &
+                    ~((1UL << (2 * PAGETABLE_ORDER)) - 1)) +
+                   (PFN_DOWN(va) & ((1UL << (2 * PAGETABLE_ORDER)) - 1)));
+        goto out;
+    }
+
+    pl2e = map_l2t_from_l3e(*pl3e) + l2_table_offset(va);
+    shift = L2_PAGETABLE_SHIFT;
+    if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
+        goto out;
+    if ( l2e_get_flags(*pl2e) & _PAGE_PSE )
+    {
+        *flags = lNf_to_l1f(l2e_get_flags(*pl2e)) |
+                 (l2e_get_intpte(*pl2e) & _PAGE_PSE_PAT ? _PAGE_PAT : 0);
+        ret = _mfn((l2e_get_pfn(*pl2e) & ~((1UL << PAGETABLE_ORDER) - 1)) +
+                   l1_table_offset(va));
+        goto out;
+    }
+
+    pl1e = map_l1t_from_l2e(*pl2e) + l1_table_offset(va);
+    shift = PAGE_SHIFT;
+    if ( l1e_get_flags(*pl1e) & _PAGE_PRESENT )
+    {
+        *flags = l1e_get_flags(*pl1e);
+        ret = l1e_get_mfn(*pl1e);
+    }
+
+ out:
+    L3T_UNLOCK(l3page);
+    unmap_domain_page(pl1e);
+    unmap_domain_page(pl2e);
+    unmap_domain_page(pl3e);
+    *nr = ((((va >> shift) + 1) << shift) - va) >> PAGE_SHIFT;
+    return ret;
+}
+#endif /* CONFIG_SPARSE_DIRECTMAP */
+
 /*
  * Free a page-table page that the hierarchy rooted at @root has stopped
  * using.  One of idle_pg_table's may be in the sparse directmap view: it is
diff --git a/xen/arch/x86/sparse-directmap.c b/xen/arch/x86/sparse-directmap.c
new file mode 100644
index 0000000000..d35a8d6979
--- /dev/null
+++ b/xen/arch/x86/sparse-directmap.c
@@ -0,0 +1,431 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * A sparse view of the directmap.
+ *
+ * Xen maps all of RAM at DIRECTMAP_VIRT_START, and every root page-table
+ * carries those mappings.  The sparse view is a second set of page-tables
+ * for the same virtual addresses (the part of the directmap PV guests can
+ * see), mapping only what Xen needs to reach through the directmap at all
+ * times:
+ *
+ * - Memory never handed to the heap: Xen's image, boot-time allocations,
+ *   firmware tables.  Not a PV dom0's initrd, used in place, nor the frame
+ *   table and M2P pages carved from hot-added memory.
+ * - Memory handed to the heap, then allocated to the xenheap.
+ *
+ * The rest of the heap's memory, where guest memory comes from, is not
+ * mapped.  Every mapping in the sparse view is either identical to the
+ * full directmap's at the same address, or empty.
+ *
+ * Guest contexts selected on the command line run on root page-tables
+ * carrying the sparse view's L3s in the directmap slots.
+ */
+
+#include <xen/domain_page.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/numa.h>
+#include <xen/sort.h>
+
+#include <asm/page.h>
+#include <asm/sparse-directmap.h>
+
+bool __ro_after_init opt_sparse_dmap_pv;
+bool __ro_after_init opt_sparse_dmap_hvm;
+bool __ro_after_init opt_sparse_dmap_hwdom;
+
+/* Root of the sparse view: only ever walked and copied from, never loaded. */
+static l4_pgentry_t __aligned(PAGE_SIZE) sparse_l4[L4_PAGETABLE_ENTRIES];
+l4_pgentry_t *__ro_after_init sparse_dmap_root;
+
+/*
+ * Before the sparse view is built: the MFN ranges handed to the heap, which
+ * it leaves out, and the xenheap allocations made since, which it puts back.
+ */
+struct mfn_range {
+    unsigned long s, e;
+};
+static struct mfn_range early_heap[256];
+static unsigned int nr_early_heap;
+static struct mfn_range early_xenheap[2 * MAX_NUMNODES];
+static unsigned int nr_early_xenheap;
+static bool early_overflow;
+
+/*
+ * Clip [*mfn, *mfn + *nr) to what the sparse view covers; false if nothing is
+ * left.
+ */
+static bool clip_to_sparse_view(unsigned long *mfn, unsigned long *nr)
+{
+    unsigned long end = SPARSE_DMAP_END_MFN;
+
+    if ( *mfn >= end )
+        return false;
+    if ( *nr > end - *mfn )
+        *nr = end - *mfn;
+
+    return *nr;
+}
+
+static void early_range_add(struct mfn_range *r, unsigned int *nr,
+                            unsigned int max, unsigned long s, unsigned long e)
+{
+    if ( *nr && r[*nr - 1].e == s )
+        r[*nr - 1].e = e;
+    else if ( *nr < max )
+        r[(*nr)++] = (struct mfn_range){ s, e };
+    else
+        early_overflow = true;
+}
+
+static void early_range_del(struct mfn_range *r, unsigned int *nr,
+                            unsigned long s, unsigned long e)
+{
+    unsigned int i;
+
+    for ( i = 0; i < *nr; i++ )
+        if ( r[i].s == s && r[i].e == e )
+        {
+            r[i] = r[--*nr];
+            return;
+        }
+}
+
+/*
+ * Copy the full directmap's mappings of MFNs [mfn, mfn + nr) into the sparse
+ * view.
+ */
+static int add_to_sparse_view(l4_pgentry_t *root, unsigned long mfn,
+                              unsigned long nr)
+{
+    unsigned long start = (unsigned long)mfn_to_virt(mfn);
+    unsigned long va = start, end = start + (nr << PAGE_SHIFT);
+
+    while ( va < end )
+    {
+        pte_attr_t flags;
+        unsigned long n;
+        mfn_t va_mfn = xen_mapping_lookup(idle_pg_table, va, &flags, &n);
+        int rc;
+
+        ASSERT(mfn_eq(va_mfn, INVALID_MFN) ||
+               mfn_x(va_mfn) == mfn + ((va - start) >> PAGE_SHIFT));
+        n = min(n, (end - va) >> PAGE_SHIFT);
+        if ( !mfn_eq(va_mfn, INVALID_MFN) &&
+             (rc = map_pages_in(root, va, va_mfn, n, flags)) )
+            return rc;
+        va += n << PAGE_SHIFT;
+    }
+
+    return 0;
+}
+
+static int remove_from_sparse_view(unsigned long mfn, unsigned long nr)
+{
+    unsigned long va = (unsigned long)mfn_to_virt(mfn);
+
+    return modify_mappings_in(sparse_dmap_root, va, va + (nr << PAGE_SHIFT),
+                              _PAGE_NONE);
+}
+
+/* Memory is about to be handed to the heap allocator. */
+bool arch_heap_pages_init(mfn_t mfn, unsigned long nr)
+{
+    unsigned long s = mfn_x(mfn);
+
+    if ( !sparse_dmap_configured() || !clip_to_sparse_view(&s, &nr) )
+        return true;
+
+    if ( !sparse_dmap_root )
+    {
+        early_range_add(early_heap, &nr_early_heap, ARRAY_SIZE(early_heap),
+                        s, s + nr);
+        return true;
+    }
+
+    if ( remove_from_sparse_view(s, nr) )
+    {
+        printk(XENLOG_ERR
+               "sparse directmap: cannot unmap MFNs %#lx-%#lx, not freeing\n",
+               s, s + nr - 1);
+        return false;
+    }
+
+    return true;
+}
+
+/*
+ * Xenheap pages enter the sparse view, which guest contexts run on: those
+ * still holding a previous owner's data must be scrubbed first.
+ */
+bool arch_xenheap_needs_scrub(void)
+{
+    return sparse_dmap_configured();
+}
+
+/* Pages have been allocated from the heap as xenheap pages. */
+int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order)
+{
+    unsigned long s = mfn_x(mfn), nr = 1UL << order;
+
+    if ( !sparse_dmap_configured() )
+        return 0;
+
+    /* Xenheap pages must be reachable through the sparse view. */
+    BUG_ON(s + nr > SPARSE_DMAP_END_MFN);
+
+    if ( !sparse_dmap_root )
+    {
+        early_range_add(early_xenheap, &nr_early_xenheap,
+                        ARRAY_SIZE(early_xenheap), s, s + nr);
+        return 0;
+    }
+
+    return add_to_sparse_view(sparse_dmap_root, s, nr);
+}
+
+/*
+ * Xenheap pages are about to be freed.  A failure means the pages may still
+ * be reachable through the sparse view, and must not be reused.
+ */
+int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
+{
+    unsigned long s = mfn_x(mfn), nr = 1UL << order;
+
+    if ( !sparse_dmap_configured() )
+        return 0;
+
+    BUG_ON(s + nr > SPARSE_DMAP_END_MFN);
+
+    if ( !sparse_dmap_root )
+    {
+        early_range_del(early_xenheap, &nr_early_xenheap, s, s + nr);
+        return 0;
+    }
+
+    return remove_from_sparse_view(s, nr);
+}
+
+/* Memory leaves Xen's hands without passing through the heap. */
+int sparse_dmap_remove(mfn_t mfn, unsigned long nr)
+{
+    return arch_heap_pages_init(mfn, nr) ? 0 : -ENOMEM;
+}
+
+/*
+ * A page-table page of idle_pg_table's hierarchy is about to be freed.  One
+ * the boot allocator provided is in the sparse view, as every boot-time
+ * allocation is: take it out before the heap may hand it on.  One allocated
+ * since came from the heap and is not in the sparse view, which a lookup
+ * finds without changing, or flushing, anything.  Non-zero: the page may
+ * still be mapped, and must not be freed.
+ */
+int sparse_dmap_drop_pagetable(mfn_t mfn)
+{
+    unsigned long s = mfn_x(mfn), nr = 1, n;
+    pte_attr_t flags;
+    int rc;
+
+    if ( !sparse_dmap_root || !clip_to_sparse_view(&s, &nr) ||
+         mfn_eq(xen_mapping_lookup(sparse_dmap_root,
+                                   (unsigned long)mfn_to_virt(s), &flags, &n),
+                INVALID_MFN) )
+        return 0;
+
+    rc = remove_from_sparse_view(s, 1);
+    if ( rc )
+        printk(XENLOG_WARNING
+               "Leaking page-table page %"PRI_mfn": still in the sparse directmap\n",
+               mfn_x(mfn));
+
+    return rc;
+}
+
+int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn, unsigned long nr,
+                           pte_attr_t flags)
+{
+    if ( !sparse_dmap_root || virt < SPARSE_DMAP_START ||
+         virt >= SPARSE_DMAP_END )
+        return 0;
+
+    nr = min(nr, (SPARSE_DMAP_END - virt) >> PAGE_SHIFT);
+
+    return map_pages_in(sparse_dmap_root, virt, mfn, nr, flags);
+}
+
+int sparse_dmap_mirror_modify(unsigned long s, unsigned long e,
+                              pte_attr_t nf)
+{
+    unsigned long va;
+
+    if ( !sparse_dmap_root || e <= SPARSE_DMAP_START ||
+         s >= SPARSE_DMAP_END )
+        return 0;
+
+    s = max(s, SPARSE_DMAP_START);
+    e = min(e, SPARSE_DMAP_END);
+
+    if ( !(nf & _PAGE_PRESENT) )
+        return modify_mappings_in(sparse_dmap_root, s, e, nf);
+
+    /*
+     * A permission change applies where the sparse view maps anything: it
+     * never creates mappings, and the sparse view need not map all of [s, e).
+     */
+    for ( va = s; va < e; )
+    {
+        pte_attr_t flags;
+        unsigned long n;
+        mfn_t mfn = xen_mapping_lookup(sparse_dmap_root, va, &flags, &n);
+        int rc;
+
+        n = min(n, (e - va) >> PAGE_SHIFT);
+        if ( !mfn_eq(mfn, INVALID_MFN) &&
+             (rc = modify_mappings_in(sparse_dmap_root, va,
+                                      va + (n << PAGE_SHIFT), nf)) )
+            return rc;
+        va += n << PAGE_SHIFT;
+    }
+
+    return 0;
+}
+
+static int __init cf_check cmp_mfn_range(const void *a, const void *b)
+{
+    const struct mfn_range *l = a, *r = b;
+
+    if ( l->s > r->s )
+        return 1;
+    if ( l->s < r->s )
+        return -1;
+
+    return 0;
+}
+
+static void __init cf_check swap_mfn_range(void *a, void *b)
+{
+    SWAP(*(struct mfn_range *)a, *(struct mfn_range *)b);
+}
+
+/*
+ * Build the sparse view: the full directmap, minus the ranges handed to the
+ * heap so far, plus the xenheap allocations made from them.  Called once the
+ * heap has taken over from the boot allocator, so that the page-tables come
+ * from the heap, and before any other CPU is up.
+ */
+void __init sparse_dmap_init(void)
+{
+    unsigned long va, mapped = 0;
+    unsigned int i, heap_idx;
+
+    if ( !sparse_dmap_configured() )
+        return;
+
+    if ( early_overflow )
+    {
+        printk(XENLOG_WARNING
+               "Sparse directmap: too many early heap ranges, disabled\n");
+        opt_sparse_dmap_pv = opt_sparse_dmap_hvm = opt_sparse_dmap_hwdom =
+            false;
+        return;
+    }
+
+    /* An L3 for every slot, so that the L4 entries never change. */
+    for ( va = SPARSE_DMAP_START; va < SPARSE_DMAP_END;
+          va += 1UL << L4_PAGETABLE_SHIFT )
+    {
+        mfn_t l3mfn;
+        void *l3t = alloc_mapped_pagetable(&l3mfn);
+
+        if ( !l3t )
+            panic("Sparse directmap: out of memory\n");
+        unmap_domain_page(l3t);
+        sparse_l4[l4_table_offset(va)] =
+            l4e_from_mfn(l3mfn, __PAGE_HYPERVISOR);
+    }
+
+    sort(early_heap, nr_early_heap, sizeof(*early_heap), cmp_mfn_range,
+         swap_mfn_range);
+
+    /*
+     * The full directmap, leaf by leaf, minus the ranges added to the
+     * heap.  Leaves come in address order, which is MFN order in the
+     * directmap, and the heap ranges are sorted and disjoint, so
+     * heap_idx only moves forward.
+     */
+    for ( va = SPARSE_DMAP_START, heap_idx = 0; va < SPARSE_DMAP_END; )
+    {
+        pte_attr_t flags;
+        unsigned long n, s, e;
+
+        /* Get information about the leaf PTE at va. */
+        mfn_t mfn = xen_mapping_lookup(idle_pg_table, va, &flags, &n);
+
+        /* Clip the va range we're considering to SPARSE_DMAP_END. */
+        n = min(n, (SPARSE_DMAP_END - va) >> PAGE_SHIFT);
+        if ( mfn_eq(mfn, INVALID_MFN) )
+        {
+            va += n << PAGE_SHIFT;
+            continue;
+        }
+
+        /*
+         * Walk through the range [mfn, mfn + n) looking for ranges not
+         * handed to the heap.
+         */
+        for ( s = mfn_x(mfn), e = s + n; s < e; )
+        {
+            unsigned long upto = e;
+
+            /* Step past heap ranges that end at or before s. */
+            while ( heap_idx < nr_early_heap && early_heap[heap_idx].e <= s )
+                heap_idx++;
+
+            /* s lies in a heap range: skip to its end. */
+            if ( heap_idx < nr_early_heap && early_heap[heap_idx].s <= s )
+            {
+                s = min(e, early_heap[heap_idx].e);
+                continue;
+            }
+
+            /* Map up to the next heap range, or to the end of the leaf. */
+            if ( heap_idx < nr_early_heap )
+                upto = min(e, early_heap[heap_idx].s);
+
+            if ( map_pages_in(sparse_l4, va + ((s - mfn_x(mfn)) << PAGE_SHIFT),
+                              _mfn(s), upto - s, flags) )
+                panic("Sparse directmap: out of memory\n");
+            mapped += upto - s;
+            s = upto;
+        }
+
+        va += n << PAGE_SHIFT;
+    }
+
+    /*
+     * Now add back in ranges from the heap which were allocated to
+     * the xenheap.
+     */
+    for ( i = 0; i < nr_early_xenheap; i++ )
+    {
+        unsigned long nr = early_xenheap[i].e - early_xenheap[i].s;
+
+        if ( add_to_sparse_view(sparse_l4, early_xenheap[i].s, nr) )
+            panic("Sparse directmap: out of memory\n");
+        mapped += nr;
+    }
+
+    /*
+     * Nothing in the directmap is executed: its slots are NX, as the full
+     * directmap's are.
+     */
+    if ( cpu_has_nx )
+        for ( i = l4_table_offset(SPARSE_DMAP_START);
+              i < l4_table_offset(SPARSE_DMAP_END); i++ )
+            l4e_add_flags(sparse_l4[i], _PAGE_NX_BIT);
+
+    sparse_dmap_root = sparse_l4;
+
+    printk(XENLOG_INFO "Sparse directmap: %lu pages mapped\n", mapped);
+}
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 5b289e444f..8f2f605e45 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -167,6 +167,9 @@ config HAS_STATIC_MEMORY
 config HAS_SOFT_RESET
 	bool
 
+config HAS_SPARSE_DIRECTMAP
+	bool
+
 config HAS_STACK_PROTECTOR
 	bool
 
@@ -299,6 +302,21 @@ config SPECULATIVE_HARDEN_LOCK
 	  This option is disabled by default at run time, and needs to be
 	  enabled on the command line.
 
+
+config SPARSE_DIRECTMAP
+	bool "Sparse directmap view"
+	depends on HAS_SPARSE_DIRECTMAP
+	help
+	  Build support for a sparse view of the directmap, alongside the
+	  full one: it maps only the memory Xen needs to reach at all times
+	  (the Xen heap, Xen's own image, firmware tables), while guest
+	  memory is reached through transient mappings.  Guest contexts
+	  selected with the `asi=` command line option run on the sparse
+	  directmap view, narrowing the memory reachable from Xen's address
+	  space while they run, and hence the memory disclosure surface of
+	  speculative side channels.
+
+	  If unsure, say N.
 endmenu
 
 menu "Other hardening"
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index e8f9993286..2bcc45cf58 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -98,6 +98,19 @@ bool scrub_free_pages(void);
  * Hooks for an architecture keeping a second, sparse view of its directmap,
  * which maps the xenheap but not the rest of the heap's memory.
  */
+#ifdef CONFIG_SPARSE_DIRECTMAP
+/* Memory is about to be handed to the heap.  False: don't, keep it out. */
+bool arch_heap_pages_init(mfn_t mfn, unsigned long nr);
+/* Xenheap pages are to be allocated.  True: scrub those needing it first. */
+bool arch_xenheap_needs_scrub(void);
+/*
+ * Xenheap pages were allocated.  Non-zero: failed, possibly part-way; the
+ * pages go through arch_xenheap_pages_free() before being freed again.
+ */
+int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order);
+/* Xenheap pages are to be freed.  Non-zero: failed, don't reuse them. */
+int arch_xenheap_pages_free(mfn_t mfn, unsigned int order);
+#else
 static inline bool arch_heap_pages_init(mfn_t mfn, unsigned long nr)
 {
     return true;
@@ -114,6 +127,7 @@ static inline int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
 {
     return 0;
 }
+#endif
 
 /* Free an allocation, and zero the pointer to it. */
 #define FREE_XENHEAP_PAGES(p, o) do { \
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470809.1679584 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy3-0005mO-Jc; Tue, 03 Nov 2026 23:31:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470809.1679584; Tue, 03 Nov 2026 23:31:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy1-0005cJ-FR; Tue, 03 Nov 2026 23:31:01 +0000
Received: by outflank-mailman (input) for mailman id 1470809;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000e2-Hj
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CovU-1Q6V;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnz-0000000EMFa-0qxf;
 Tue, 03 Nov 2026 23:20:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=q/qAmagFc51kjK9l6VNA/qd139u3x0RJhFQgQhsvBr0=; b=H0D515jYxLVoIp5Z8X3NjblJ3Z
	WyIh54JUx1ENVuehDiLvIXhgK8EiqTzF4wO7hk4xiklLTsu7BvH9nWOGH8aJRtRL44QNRPKwTWccp
	cRL63PE7PWz+akQrObCLp5nzMdjAtVY0nw/c3ang53KLEGiPjwFq5Kf1vD2dF+dtzwLY=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 20/44] x86/mm: run guest contexts on the sparse directmap view
Date: Tue,  3 Nov 2026 17:13:42 -0500
Message-ID: <20261103-asi-hvm-v6-20-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

In _init_xen_l4_slots(), if d->arch.asi.sparse_dmap is set, point the
directmap slots at the sparse view, copying from idle_pg_table only
the Xen slots below them.  A root page-table not shared with a PV
guest gets no extended directmap, which the sparse view does not
cover.

d->arch.asi.sparse_dmap is decided at domain creation: PV domains all
have a mapcache, HVM domains need per-vCPU page-tables for one.  No
option asks for the sparse view yet.

The sparse view is built before any domain is created, so the root
page-tables of every domain using it carry it from their creation,
dom0's included.  Dom0's builders reach dom0's memory only through guest
virtual addresses and map_domain_page().  In PV shim mode,
replace_va_mapping() reads the guest's L4 through the directmap; map it
with map_domain_page() instead, as the lower levels already are.  Shadow
L4s, dom0=shadow's included, get the sparse view from
init_xen_l4_slots_pv().

The two directmaps differ where the sparse view leaves memory out, so no
translation of the full directmap may remain usable on page-tables
carrying the sparse view.  Directmap mappings stay global nevertheless:
every CR3 write which can move a CPU onto the sparse view goes through
switch_cr3_cr4(), which flushes the old page-tables' translations,
global entries included, before it returns.  The CR3 writes which keep
entries -- a PV vCPU's switch between its kernel and user page-tables,
XPTI's entry and exit -- stay within one vCPU's page-tables, which carry
the same directmap, or go to XPTI's per-CPU root, which maps only Xen's
own per-CPU pages there.  Removals from the sparse view are flushed on
every CPU, global entries included.  PV guests that run with global
pages, among them a PV dom0 not using the sparse view, therefore keep
their directmap TLB entries across switches between guest kernel and
user mode.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Port onto new dual-init_xen_l4_slots system.

Changes in v4:
- d->arch.vcpu_pt and d->arch.sparse_dmap are now d->arch.asi.vcpu_pt
  and d->arch.asi.sparse_dmap.
- Drop sparse_dmap_active and sparse_dmap_activate(): root page-tables
  carry the sparse view from their creation, dom0's included (Roger).
- The sparse view's slots are now marked NX in "x86/mm: build and
  maintain a sparse view of the directmap".
- PV shim: replace_va_mapping() maps the guest's L4 with
  map_domain_page().
- Give sparse_dmap_wanted() its hardware-domain case (Roger).
- init_xen_l4_slots() takes the directmap slots from the sparse view,
  rather than copying the full directmap's and overwriting them;
  sparse_dmap_install() goes (Roger).
- Message: drop the sentence on NX (Roger).

Changes in v3:
- New in this version.
---
 xen/arch/x86/include/asm/sparse-directmap.h |  9 +++++++
 xen/arch/x86/mm.c                           | 28 +++++++++++++++++++--
 xen/arch/x86/pv/shim.c                      |  4 ++-
 xen/arch/x86/spec_ctrl.c                    |  7 ++++++
 4 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/sparse-directmap.h b/xen/arch/x86/include/asm/sparse-directmap.h
index ea14d44334..2f8b94f4c1 100644
--- a/xen/arch/x86/include/asm/sparse-directmap.h
+++ b/xen/arch/x86/include/asm/sparse-directmap.h
@@ -31,6 +31,14 @@ static inline bool sparse_dmap_configured(void)
     return opt_sparse_dmap_pv || opt_sparse_dmap_hvm || opt_sparse_dmap_hwdom;
 }
 
+/* Whether a new domain of the given type is to use the sparse view. */
+static inline bool sparse_dmap_wanted(bool pv, bool hwdom)
+{
+    return sparse_dmap_root &&
+           (hwdom ? opt_sparse_dmap_hwdom
+                  : pv ? opt_sparse_dmap_pv : opt_sparse_dmap_hvm);
+}
+
 void sparse_dmap_init(void);
 int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn, unsigned long nr,
                            pte_attr_t flags);
@@ -42,6 +50,7 @@ int sparse_dmap_drop_pagetable(mfn_t mfn);
 #else /* !CONFIG_SPARSE_DIRECTMAP */
 
 static inline bool sparse_dmap_configured(void) { return false; }
+static inline bool sparse_dmap_wanted(bool pv, bool hwdom) { return false; }
 static inline void sparse_dmap_init(void) {}
 static inline int sparse_dmap_mirror_map(unsigned long virt, mfn_t mfn,
                                          unsigned long nr, pte_attr_t flags)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 0d475432ff..36a241a41c 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1704,7 +1704,8 @@ struct page_info *perdomain_l3(const struct vcpu *v)
  * l4t, l4mfn, and d are mandatory, but l4mfn doesn't need to be the mfn under
  * *l4t.  All other parameters are optional and will either fill or zero the
  * appropriate slots.  Pagetables not shared with guests will gain the
- * extended directmap.
+ * extended directmap, unless the domain runs on the sparse view of the
+ * directmap, which replaces the directmap slots.
  */
 static void _init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
                                const struct domain *d,
@@ -1713,7 +1714,7 @@ static void _init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
 {
     /*
      * PV vcpus need a shortened directmap.  HVM and Idle vcpus get the full
-     * directmap.
+     * directmap, unless the domain runs on the sparse view (below).
      */
     bool short_directmap = !paging_mode_external(d);
 
@@ -1748,6 +1749,29 @@ static void _init_xen_l4_slots(l4_pgentry_t *l4t, mfn_t l4mfn,
             l4t[l4_table_offset(PERDOMAIN_VIRT_START)];
 
     /* Slot 261-: text/data/bss, RW M2P, vmap, frametable, directmap. */
+#ifdef CONFIG_SPARSE_DIRECTMAP
+    if ( d->arch.asi.sparse_dmap )
+    {
+        unsigned int i = l4_table_offset(SPARSE_DMAP_START);
+
+        memcpy(&l4t[l4_table_offset(XEN_VIRT_START)],
+               &idle_pg_table[l4_table_offset(XEN_VIRT_START)],
+               (i - l4_table_offset(XEN_VIRT_START)) * sizeof(*l4t));
+
+        /*
+         * Every slot the sparse view covers gets its L3, whatever the full
+         * directmap has there, so that memory added later is covered too.  A
+         * PV root has guest slots above; any other root loses the rest of the
+         * directmap, which the sparse view does not cover.
+         */
+        for ( ; i < l4_table_offset(SPARSE_DMAP_END); i++ )
+            l4t[i] = sparse_dmap_root[i];
+        if ( !short_directmap )
+            for ( ; i < l4_table_offset(DIRECTMAP_VIRT_END); i++ )
+                l4t[i] = l4e_empty();
+    }
+    else
+#endif
 #ifndef NDEBUG
     if ( short_directmap &&
          unlikely(root_pgt_pv_xen_slots < ROOT_PAGETABLE_PV_XEN_SLOTS) )
diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index 41000b0523..2a47dbc56c 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -148,12 +148,14 @@ const struct platform_bad_page *__init pv_shim_reserved_pages(unsigned int *size
 static void __init replace_va_mapping(struct domain *d, l4_pgentry_t *l4start,
                                       unsigned long va, mfn_t mfn)
 {
-    l4_pgentry_t l4e = l4start[l4_table_offset(va)];
+    const l4_pgentry_t *l4t = map_domain_page(virt_to_mfn(l4start));
+    l4_pgentry_t l4e = l4t[l4_table_offset(va)];
     l3_pgentry_t l3e = l3e_from_l4e(l4e, l3_table_offset(va));
     l2_pgentry_t l2e = l2e_from_l3e(l3e, l2_table_offset(va));
     l1_pgentry_t *pl1e = map_l1t_from_l2e(l2e) + l1_table_offset(va);
     struct page_info *page = mfn_to_page(l1e_get_mfn(*pl1e));
 
+    unmap_domain_page(l4t);
     put_page_and_type(page);
 
     *pl1e = l1e_from_mfn(mfn, (!is_pv_32bit_domain(d) ? L1_PROT
diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c
index 8797523a62..bcdcdf0476 100644
--- a/xen/arch/x86/spec_ctrl.c
+++ b/xen/arch/x86/spec_ctrl.c
@@ -1953,6 +1953,13 @@ void spec_ctrl_init_domain(struct domain *d)
 
     d->arch.asi.vcpu_pt = !pv && (is_hardware_domain(d) ? opt_vcpu_pt_hwdom
                                                         : opt_vcpu_pt_hvm);
+
+    /*
+     * The sparse directmap view needs a mapcache: PV domains all have one,
+     * HVM domains through per-vCPU page-tables.
+     */
+    d->arch.asi.sparse_dmap = (pv || d->arch.asi.vcpu_pt) &&
+                              sparse_dmap_wanted(pv, is_hardware_domain(d));
 }
 
 void __init init_speculation_mitigations(void)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470810.1679593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy5-0006Cy-Be; Tue, 03 Nov 2026 23:31:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470810.1679593; Tue, 03 Nov 2026 23:31:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy3-00062i-DD; Tue, 03 Nov 2026 23:31:03 +0000
Received: by outflank-mailman (input) for mailman id 1470810;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000dv-Gq
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Covq-1ubp;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONny-0000000EMFa-2t77;
 Tue, 03 Nov 2026 23:20:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=r1VmGidvH1AZLdhk+0ig3hYGT6yhxdDnEfjoDf/SEiU=; b=d9FXRJIUIaGrZetJr5AfUpk4yz
	Zmu4v3VghhJWbE2i/nNLQayqltm599DBQ5PA5cnze4SlLx/8/YeSDY/uKnCfZqKy2T0ueQDCI6ApC
	aCBRP6UXgplQQHzZBwG1akKDVWZ4yeNx8RkWeBwV+oNkGAVX+053X8w1zCf2sjwmigCA=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 19/44] x86/domain_page: clear a mapcache slot at its last unmap
Date: Tue,  3 Nov 2026 17:13:41 -0500
Message-ID: <20261103-asi-hvm-v6-19-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

unmap_domain_page() keeps a recently unmapped slot in the vCPU's
maphash (MAPHASH_ENTRIES, 8 per vCPU) for a quick remap of the same
MFN, and leaves its PTE in place until the entry is displaced by a later
unmap or reclaimed by a full cache.  Until then the page stays mapped,
although nothing refers to the mapping and the mapcache holds no
reference to the page.  Where the mapcache clears a slot's PTE, it
defers the flush: the slot's translation can stay in the TLB of the CPU
which used it until that CPU next flushes.

While the full directmap is loaded, that reaches nothing it does not
map anyway.  On the sparse view of the directmap, Xen reaches
domain-heap memory only through mappings made for the purpose.  A
mapping or a translation left behind keeps the page reachable after its
last unmap: while Xen serves another of the guest's contexts on the
same vCPU, and, once the page is freed and handed to another domain,
from a context which has nothing to do with it.

So clear a slot's PTE when its last reference goes, maphash slots
included: the hash entry keeps the slot, not the mapping, and a later
hit maps the page again in the same slot.  The slot has mapped nothing
else in between, so that needs no flush.  Reusing the slot for another
page still goes through the garbage map, or through the replacement of
a hash entry when the cache is full, both of which flush first.

In a per-vCPU mapcache, as vCPU-PT domains have, also invalidate the
slot's translation on the local CPU, right after clearing the PTE.  The
slot has a second address, in the mirror of the per-domain area that
every domain but a 64-bit PV one gets for the compat argument
translation area, and its translation is invalidated too: two INVLPGs.
That leaves no translation on any CPU, as the vCPU's page-tables are
loaded on one CPU at a time, and a CPU loading other page-tables
(switch_cr3_cr4()) flushes non-global translations, the mapcache's
included.

A PV domain's domain-wide mapcache has its PTEs cleared but no
INVLPG, as CPUs running the domain's other vCPUs may hold the slot's
translation too, which a local INVLPG would not reach.  For it, as
before, builds with PV support flush a page freed by its owner from
TLBs before the page is handed out again.

The cost is one PTE write per unmap into the maphash and per remap from
it, and in a per-vCPU mapcache two INVLPGs per slot's last unmap.  A
second unmap of an entry in the maphash now finds its PTE not present
and is caught by the check unmap_domain_page() has for entries the
first unmap zapped, rather than by the reference count's ASSERT() in
debug builds only.

The change does not depend on asi= or on a sparse view of the directmap
being configured: PV vCPUs use the domain-wide mapcache on the default
command line too.  For them it adds the PTE writes above, and leaves up
to MAPHASH_ENTRIES fewer pages per vCPU mapped in the
domain-wide mapcache.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v4:
- Merge v3's 15/18 ("x86/mm: flush owned pages before reuse with the
  sparse directmap view") and 16/18 ("x86/domain_page: keep the
  maphash's slots, not their mappings").  Rather than flush pages freed
  by their owner before reuse wherever a sparse view is configured,
  invalidate a per-vCPU mapcache slot's translations on the local CPU
  right after its PTE is cleared (Roger).
- Message: don't restate when PV vCPUs use the mapcache (Roger).

Changes in v3:
- New in this version.

For reviewers: with a slot cleared and invalidated at its last unmap,
a per-vCPU mapcache's maphash saves only the search for a free slot,
and a second slot for a page mapped twice at once.  One page in two
slots is fine, and already happens when it is not in the maphash.  So
per-vCPU mapcaches could drop the maphash, and with it their garbage
map and wrap-time flush; that is left for a follow-up.
---
 xen/arch/x86/domain_page.c        | 53 +++++++++++++++++++++++++------
 xen/arch/x86/include/asm/domain.h |  5 ++-
 2 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 6b662706fb..4198ee7c18 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -130,6 +130,26 @@ static void mapcache_exit(struct mapcache_domain *dcache)
 #define MAPCACHE_L1ENT(idx) \
     __linear_l1_table[l1_linear_offset(MAPCACHE_VIRT_START + pfn_to_paddr(idx))]
 
+/*
+ * Clear a slot's PTE.  For a per-vCPU mapcache (HVM domains only), then also
+ * drop the slot's translations from this CPU's TLB, at its address and at its
+ * alias in the per-domain mirror, which every HVM domain has.  No other CPU
+ * can hold them: the vCPU's page-tables are loaded on one CPU at a time, and
+ * loading other page-tables flushes non-global translations.
+ */
+static void mapcache_zap(const struct mapcache_domain *dcache,
+                         unsigned int idx)
+{
+    unsigned long va = MAPCACHE_VIRT_START + pfn_to_paddr(idx);
+
+    l1e_write(&MAPCACHE_L1ENT(idx), l1e_empty());
+    if ( dcache )
+        return;
+
+    flush_tlb_one_local(va);
+    flush_tlb_one_local(va - PERDOMAIN_VIRT_START + PERDOMAIN_ALT_VIRT_START);
+}
+
 void *map_domain_page(mfn_t mfn)
 {
     unsigned long flags;
@@ -176,6 +196,14 @@ void *map_domain_page(mfn_t mfn)
     {
         idx = hashent->idx;
         ASSERT(idx < cache->entries);
+        /*
+         * An entry the maphash kept holds on to its slot, not to its mapping
+         * (see unmap_domain_page()): map the page again.  No flush is needed,
+         * as the slot has mapped nothing else since.
+         */
+        if ( !hashent->refcnt )
+            l1e_write(&MAPCACHE_L1ENT(idx),
+                      l1e_from_mfn(mfn, __PAGE_HYPERVISOR_RW));
         hashent->refcnt++;
         ASSERT(hashent->refcnt);
         ASSERT(mfn_eq(l1e_get_mfn(MAPCACHE_L1ENT(idx)), mfn));
@@ -208,8 +236,8 @@ void *map_domain_page(mfn_t mfn)
                 if ( hashent->idx != MAPHASHENT_NOTINUSE && !hashent->refcnt )
                 {
                     idx = hashent->idx;
-                    ASSERT(l1e_get_pfn(MAPCACHE_L1ENT(idx)) == hashent->mfn);
-                    l1e_write(&MAPCACHE_L1ENT(idx), l1e_empty());
+                    ASSERT(!(l1e_get_flags(MAPCACHE_L1ENT(idx)) &
+                             _PAGE_PRESENT));
                     hashent->idx = MAPHASHENT_NOTINUSE;
                     hashent->mfn = ~0UL;
                     break;
@@ -273,32 +301,39 @@ void unmap_domain_page(const void *ptr)
 
     local_irq_save(flags);
 
+    /*
+     * The maphash keeps a freed slot, not its mapping: the page may change
+     * hands meanwhile.  A domain-wide mapcache's translation left in a TLB
+     * is covered by the flush the allocator makes before reusing an owned
+     * page.
+     */
     if ( hashent->idx == idx )
     {
         ASSERT(hashent->mfn == mfn);
         ASSERT(hashent->refcnt);
         hashent->refcnt--;
+        if ( !hashent->refcnt )
+            mapcache_zap(dcache, idx);
     }
     else if ( !hashent->refcnt )
     {
+        /* The entry replaced has no mapping left: mark its slot as garbage. */
         if ( hashent->idx != MAPHASHENT_NOTINUSE )
         {
-            /* /First/, zap the PTE. */
-            ASSERT(l1e_get_pfn(MAPCACHE_L1ENT(hashent->idx)) ==
-                   hashent->mfn);
-            l1e_write(&MAPCACHE_L1ENT(hashent->idx), l1e_empty());
-            /* /Second/, mark as garbage. */
+            ASSERT(!(l1e_get_flags(MAPCACHE_L1ENT(hashent->idx)) &
+                     _PAGE_PRESENT));
             set_bit(hashent->idx, cache->garbage);
         }
 
-        /* Add newly-freed mapping to the maphash. */
+        /* Add the newly-freed slot to the maphash, without its mapping. */
+        mapcache_zap(dcache, idx);
         hashent->mfn = mfn;
         hashent->idx = idx;
     }
     else
     {
         /* /First/, zap the PTE. */
-        l1e_write(&MAPCACHE_L1ENT(idx), l1e_empty());
+        mapcache_zap(dcache, idx);
         /* /Second/, mark as garbage. */
         set_bit(idx, cache->garbage);
     }
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index f84ac15759..0e405157b4 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -74,7 +74,10 @@ struct mapcache_vcpu {
     /* Shadow of mapcache_domain.epoch. */
     unsigned int shadow_epoch;
 
-    /* Lock-free per-VCPU hash of recently-used mappings. */
+    /*
+     * Lock-free per-VCPU hash of recently-used mappings.  An entry without
+     * references keeps its slot but not its mapping (see unmap_domain_page()).
+     */
     struct vcpu_maphash_entry {
         unsigned long mfn;
         uint32_t      idx;
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470813.1679600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy7-0006iZ-K5; Tue, 03 Nov 2026 23:31:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470813.1679600; Tue, 03 Nov 2026 23:31:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy5-0006ZJ-Ls; Tue, 03 Nov 2026 23:31:05 +0000
Received: by outflank-mailman (input) for mailman id 1470813;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000e7-Iz
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CowF-2ALZ;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoB-0000000EMFa-2YLH;
 Tue, 03 Nov 2026 23:20:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=tI8rWUCKpztUW6i1B6fFTfydag4KVKVQaRj7AWM+f08=; b=PFdYYBSlPazogd+zDW6QBUkiY7
	krXZyDtMh2h+WOSWP1a1EFPa1w38RNzW0hp5gW/O75U0cR9bV8/udKImyscxFr7oztXsToMuO2UoV
	ew3BI2Iu2sVSETl1QmuahdOYfFPWIyUpRz8gvT72MKaMsaUUy1KdmPD73w8akAQp/gCs=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 37/44] x86/hvm: use map_domain_pages() for multi-frame emulated accesses
Date: Tue,  3 Nov 2026 17:13:59 -0500
Message-ID: <20261103-asi-hvm-v6-37-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

hvmemul_map_linear_addr() picks its mapping method purely on the frame
count: one frame goes through map_domain_page(), more through vmap() --
mapping the guest data in every context for the duration, those of
domains on the sparse directmap view included, whatever the guest's own
configuration.  map_domain_pages() maps them only in the page tables of
the guest's own domain; use it for the multi-frame case.

The NULL return handling is unchanged: the primitive can fail only for
want of a free slot, and the access then bails out as unhandleable
exactly as before.

This is one of the two in-tree consumers of the primitive.  Other
long-lived global mappings of guest pages (the ioreq server pages among
them) remain in the vmap area.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/hvm/emulate.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index da7c08b5d9..7e7beccb93 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -735,7 +735,8 @@ static void *hvmemul_map_linear_addr(
 
     /*
      * The maximum access size depends on the number of adjacent mfns[] which
-     * can be vmap()'d, accouting for possible misalignment within the region.
+     * can be mapped together, accounting for possible misalignment within
+     * the region.
      * The higher level emulation callers are responsible for ensuring that
      * mfns[] is large enough for the requested access size.
      */
@@ -824,9 +825,9 @@ static void *hvmemul_map_linear_addr(
     /* Entire access within a single frame? */
     if ( nr_frames == 1 )
         mapping = map_domain_page(hvmemul_ctxt->mfn[0]);
-    /* Multiple frames? Need to vmap(). */
-    else if ( (mapping = vmap(hvmemul_ctxt->mfn,
-                              nr_frames)) == NULL )
+    /* Multiple frames? Need a multi-page mapping. */
+    else if ( (mapping = map_domain_pages(hvmemul_ctxt->mfn,
+                                          nr_frames)) == NULL )
         goto unhandleable;
 
 #ifndef NDEBUG /* Poision unused mfn[]s with INVALID_MFN. */
@@ -867,7 +868,7 @@ static void hvmemul_unmap_linear_addr(
     if ( nr_frames == 1 )
         unmap_domain_page(mapping);
     else
-        vunmap(mapping);
+        unmap_domain_pages(mapping, nr_frames);
 
     for ( i = 0; i < nr_frames; i++ )
     {
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470814.1679610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyA-0007Jy-3a; Tue, 03 Nov 2026 23:31:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470814.1679610; Tue, 03 Nov 2026 23:31:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONy8-0007BW-BR; Tue, 03 Nov 2026 23:31:08 +0000
Received: by outflank-mailman (input) for mailman id 1470814;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000eU-N8
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CouI-06Vu;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoD-0000000EMFa-0N4L;
 Tue, 03 Nov 2026 23:20:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=+ze/mUts7B6alTNouyX2ejvqaet9bE/wAgVhHkz5gYM=; b=vblZ+qDcgbyK7289GtynIGBy6w
	Y4rD6msZISrkm+/4Gwolo9g7c1S4FaucHuqrKd9mUkx9W+5HXmD0QN+GtM/0YguYxR+/hVQ2FvH0/
	FVMmzdRR+3ePCDdRJs+AB+x6LWBCmlcFokQZIuiawZ5OQW49XWWW1hvHyY9KLjCKPJow=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 40/44] x86/fpu: Pass explicit xsave areas to fpu_(f)xsave()
Date: Tue,  3 Nov 2026 17:14:02 -0500
Message-ID: <20261103-asi-hvm-v6-40-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Have the save entry point fetch the vCPU's XSAVE area once, through
the VCPU_MAP_XSAVE_AREA() seam, and pass the resulting pointer down
explicitly: xsave() gains an area parameter in place of its internal
dereference, and fpu_fxsave() takes the legacy region directly.  The
lower-level helpers no longer know where a vCPU's save area lives,
which is the property the coming relocation of guest save areas
relies on; the vcpu pointers become const on the way.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Assisted-by: Claude Code:claude-fable-5
Signed-off-by: George Dunlap <gwd@xenproject.org>

---
Revived from "x86: Address Space Isolation FPU preparations" v3 patch
10/12 (<20250110132823.24348-11-alejandro.vallejo@cloud.com>, Acked-by
Jan Beulich; no v4 was ever posted).

Changes in v5:
- New in this version.

Changes since the previously posted version:
 - Regenerated against the eager-FPU-only tree: the entry point is now
   vcpu_save_fpu() (vcpu_xsave_mask()/_vcpu_save_fpu() no longer
   exist), and the mask is always XSTATE_ALL.
 - Expanded the commit message.
---
 xen/arch/x86/i387.c               | 18 ++++++++++++------
 xen/arch/x86/include/asm/xstate.h |  2 +-
 xen/arch/x86/xstate.c             |  3 +--
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index c6796bc97b..65491b5697 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -109,7 +109,8 @@ static inline void fpu_fxrstor(struct vcpu *v)
 /*******************************/
 
 /* Save x87 extended state */
-static inline void fpu_xsave(struct vcpu *v)
+static inline void fpu_xsave(const struct vcpu *v,
+                             struct xsave_struct *xsave_area)
 {
     bool ok;
 
@@ -119,15 +120,14 @@ static inline void fpu_xsave(struct vcpu *v)
      */
     ok = set_xcr0(v->arch.xcr0_accum | XSTATE_FP_SSE);
     ASSERT(ok);
-    xsave(v, XSTATE_ALL);
+    xsave(v, xsave_area, XSTATE_ALL);
     ok = set_xcr0(v->arch.xcr0 ?: XSTATE_FP_SSE);
     ASSERT(ok);
 }
 
 /* Save x87 FPU, MMX, SSE and SSE2 state */
-static inline void fpu_fxsave(struct vcpu *v)
+static inline void fpu_fxsave(const struct vcpu *v, fpusse_t *fpu_ctxt)
 {
-    fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
     unsigned int fip_width = v->domain->arch.x87_fip_width;
 
     if ( fip_width != 4 )
@@ -192,15 +192,21 @@ void vcpu_restore_fpu(struct vcpu *v)
  */
 void vcpu_save_fpu(struct vcpu *v)
 {
+    struct xsave_struct *xsave_area;
+
     ASSERT(!is_idle_vcpu(v));
 
     /* This can happen, if a paravirtualised guest OS has set its CR0.TS. */
     clts();
 
+    xsave_area = VCPU_MAP_XSAVE_AREA(v);
+
     if ( cpu_has_xsave )
-        fpu_xsave(v);
+        fpu_xsave(v, xsave_area);
     else
-        fpu_fxsave(v);
+        fpu_fxsave(v, &xsave_area->fpu_sse);
+
+    VCPU_UNMAP_XSAVE_AREA(v, xsave_area);
 }
 
 /* Initialize FPU's context save area */
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 0519379edb..40bb6f152e 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -95,7 +95,7 @@ uint64_t get_xcr0(void);
 void set_msr_xss(u64 xss);
 uint64_t get_msr_xss(void);
 uint64_t read_bndcfgu(void);
-void xsave(struct vcpu *v, uint64_t mask);
+void xsave(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
 void xrstor(struct vcpu *v, uint64_t mask);
 void xstate_set_init(uint64_t mask);
 bool xsave_enabled(const struct vcpu *v);
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 2eae3f098d..058bc4c0bc 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -304,9 +304,8 @@ void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
     VCPU_UNMAP_XSAVE_AREA(v, xstate);
 }
 
-void xsave(struct vcpu *v, uint64_t mask)
+void xsave(const struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
 {
-    struct xsave_struct *ptr = v->arch.xsave_area;
     uint32_t hmask = mask >> 32;
     uint32_t lmask = mask;
     unsigned int fip_width = v->domain->arch.x87_fip_width;
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470815.1679617 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyC-0007q6-45; Tue, 03 Nov 2026 23:31:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470815.1679617; Tue, 03 Nov 2026 23:31:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyA-0007gb-J5; Tue, 03 Nov 2026 23:31:10 +0000
Received: by outflank-mailman (input) for mailman id 1470815;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000eY-Oo
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000Cou6-48d4;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONnt-0000000EMFa-0lsh;
 Tue, 03 Nov 2026 23:20:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=Lb7F1xsyX+9AldokNzH9xX+s7w05jag/1Hr7PjUMcMQ=; b=DhpHWtVtRhvNWPOJI1DNHhivft
	JKoOPLcH5d8/imTCWzWnOp3VmVXKUhGwesWGBXYypnOHy/NO0qVF0Uh+jelHhnTq9WA+cMzorot9h
	8QzjWGsj859X4dEoxAmVerVS4I/GILqQh9dMgP/+WKl84HHIetsS/6+NotlxnnhCsHTw=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 15/44] xen/gunzip: process pending softirqs once per deflate block
Date: Tue,  3 Nov 2026 17:13:37 -0500
Message-ID: <20261103-asi-hvm-v6-15-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Nothing in the gzip decompressor lets the CPU run softirqs.  The NMI
watchdog treats a CPU as stuck once its timer softirq has not run for
the watchdog's timeout, 5s by default, so a decompression that runs
that long panics the host.

Decompression is normally quick, but it need not be.  Every compressed
deflate block builds its Huffman tables with xmalloc() and frees them
with xfree(), and those calls reach the xenheap whenever a request is a
page or more, or a free empties an xmalloc pool page.  A subsequent
change can make every xenheap free end in a TLB flush on all online
CPUs.  With it in effect, decompressing the PV dom0 kernel and reading
its ELF headers on a 480-CPU host took 5.2s instead of 0.5s; with
cpufreq=xen:performance max_cstate=1,0 dom0_nodes=0,relaxed added to
the command line as well, the watchdog fired before decompression had
finished, on each of eight boots.

Process pending softirqs after each deflate block, as libelf does for
each ELF note since c5089fae0f6f ("x86: avoid tripping watchdog when
constructing dom0"), and as the PV and PVH dom0 builders do in their
long loops.  Every caller of perform_gunzip() runs during domain
construction at boot, on the boot CPU with interrupts enabled and no
lock held: x86's PV and PVH dom0 builders, which call
process_pending_softirqs() themselves, and kernel_decompress(), which
Arm uses for dom0 and for dom0less domains.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/common/gzip/gunzip.c  | 1 +
 xen/common/gzip/inflate.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/xen/common/gzip/gunzip.c b/xen/common/gzip/gunzip.c
index 89f45d4050..9551d470aa 100644
--- a/xen/common/gzip/gunzip.c
+++ b/xen/common/gzip/gunzip.c
@@ -3,6 +3,7 @@
 #include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/mm.h>
+#include <xen/softirq.h>
 
 #define WSIZE           0x80000000U
 
diff --git a/xen/common/gzip/inflate.c b/xen/common/gzip/inflate.c
index cb146555c8..737aff505e 100644
--- a/xen/common/gzip/inflate.c
+++ b/xen/common/gzip/inflate.c
@@ -1018,6 +1018,7 @@ static int __init inflate(struct gunzip_state *s)
         r = inflate_block(s, &e);
         if (r)
             return r;
+        process_pending_softirqs();
     } while (!e);
 
     /* Undo too much lookahead. The next read will be byte aligned so we
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470816.1679629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyF-0008VS-Fs; Tue, 03 Nov 2026 23:31:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470816.1679629; Tue, 03 Nov 2026 23:31:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyD-0008OB-RC; Tue, 03 Nov 2026 23:31:13 +0000
Received: by outflank-mailman (input) for mailman id 1470816;
 Tue, 03 Nov 2026 23:30:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxg-0001WI-Tw
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:40 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotS-3RdR;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONoC-0000000EMFa-0N4x;
 Tue, 03 Nov 2026 23:20:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=FlX8i68BurZZbddP5JFg/suxuQm3LKHJ87QfUKq0fho=; b=htbWlk3KJqG5vECGkaAg8TQ5wn
	7uXoaZRD1izMpagwbi1PMdwVCkrkUJhA57EeehYboSwoZRIgbCCdD8UU5x6Nhv2vmIM3MuoeLq1+h
	9z6DjsG9kaBLG0RdTM0mqMQQ+zAXmfUxe9D5WL5KE6V1TTT9KA6HI49qTdC2vrQ84PoM=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 38/44] x86/emulator: Refactor FXSAVE_AREA to use wrappers
Date: Tue,  3 Nov 2026 17:14:00 -0500
Message-ID: <20261103-asi-hvm-v6-38-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Alejandro Vallejo <alejandro.vallejo@cloud.com>

The FXSAVE/FXRSTOR emulation scratch buffer is the calling vCPU's own
XSAVE area, reached today through a raw pointer dereference.  Route it
through the VCPU_MAP_XSAVE_AREA()/VCPU_UNMAP_XSAVE_AREA() seam
instead, so the buffer keeps working when guest XSAVE areas move
behind per-vCPU mappings.  This path always operates on `current`, for
which the map has a fastpath; the unmap is a no-op outside Xen builds.

The macro pair is named MAP_FXSAVE_AREA()/UNMAP_FXSAVE_AREA() rather
than keeping the bare FXSAVE_AREA name, so that the mapping operation
is visible at the use sites.

blk_fxsave() saves directly into the caller's buffer when it is large
enough, so it needs a second variable: the save destination and the
mapped area are not the same pointer, and only the latter may be
handed to the unmap.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>

---
Revived from "x86: Address Space Isolation FPU preparations" v3 patch
08/12 (<20250110132823.24348-9-alejandro.vallejo@cloud.com>, Acked-by
Jan Beulich modulo the rename below; no v4 was ever posted).

Changes in v5:
- New in this version.

Changes since the previously posted version:
 - Renamed FXSAVE_AREA to MAP_FXSAVE_AREA(), as requested by Jan
   Beulich on the original thread ("the existing macro better would be
   adjusted to become MAP_FXSAVE_AREA()"), making the map operation
   visible at the use sites.
 - Introduced the separate save-destination variable in blk_fxsave().
   The original unmapped `fxsr` after that variable had been
   repointed at the caller's buffer, so the unmap received a pointer
   that was never mapped.  Harmless while the unmap was a stub, but a
   latent bug, and exactly the class of mistake Jan predicted in the
   message quoted above when he objected to the mapping being
   invisible at the use sites.
 - Reworded the commit message.
 - Unmap before raising #GP for a reserved MXCSR bit in blk_fxrstor:
   generate_exception_if() leaves through the done: label, past the
   unmap.
---
 xen/arch/x86/x86_emulate/blk.c | 36 +++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/blk.c
index 9fddf649ee..b3055c8084 100644
--- a/xen/arch/x86/x86_emulate/blk.c
+++ b/xen/arch/x86/x86_emulate/blk.c
@@ -11,9 +11,12 @@
     !defined(X86EMUL_NO_SIMD)
 # ifdef __XEN__
 #  include <asm/xstate.h>
-#  define FXSAVE_AREA ((void *)&current->arch.xsave_area->fpu_sse)
+/* Has a fastpath for `current`, so there's no actual map */
+#  define MAP_FXSAVE_AREA() ((void *)VCPU_MAP_XSAVE_AREA(current))
+#  define UNMAP_FXSAVE_AREA(x) VCPU_UNMAP_XSAVE_AREA(current, x)
 # else
-#  define FXSAVE_AREA get_fpu_save_area()
+#  define MAP_FXSAVE_AREA() get_fpu_save_area()
+#  define UNMAP_FXSAVE_AREA(x) ((void)(x))
 # endif
 #endif
 
@@ -254,7 +257,7 @@ int x86_emul_blk(
 
     case blk_fxrstor:
     {
-        struct x86_fxsr *fxsr = FXSAVE_AREA;
+        struct x86_fxsr *fxsr = MAP_FXSAVE_AREA();
 
         ASSERT(!data);
         ASSERT(bytes == sizeof(*fxsr));
@@ -277,18 +280,26 @@ int x86_emul_blk(
                               (unsigned int)offsetof(struct x86_fxsr, rsvd)));
         memset(fxsr->rsvd, 0, sizeof(*fxsr) - offsetof(struct x86_fxsr, rsvd));
 
-        generate_exception_if(fxsr->mxcsr & ~mxcsr_mask, X86_EXC_GP, 0);
+        if ( fxsr->mxcsr & ~mxcsr_mask )
+        {
+            UNMAP_FXSAVE_AREA(fxsr);
+            generate_exception(X86_EXC_GP, 0);
+        }
 
         if ( s->rex_prefix & REX_W )
             asm volatile ( "fxrstorq %0" :: "m" (*fxsr) );
         else
             asm volatile ( "fxrstor %0" :: "m" (*fxsr) );
+
+        UNMAP_FXSAVE_AREA(fxsr);
+
         break;
     }
 
     case blk_fxsave:
     {
-        struct x86_fxsr *fxsr = FXSAVE_AREA;
+        struct x86_fxsr *fxsr = MAP_FXSAVE_AREA();
+        struct x86_fxsr *dst = fxsr;
 
         ASSERT(!data);
         ASSERT(bytes == sizeof(*fxsr));
@@ -296,17 +307,20 @@ int x86_emul_blk(
 
         if ( s->op_bytes < sizeof(*fxsr) )
             /* Don't chance consuming uninitialized data. */
-            memset(fxsr, 0, s->op_bytes);
+            memset(dst, 0, s->op_bytes);
         else
-            fxsr = ptr;
+            dst = ptr;
 
         if ( s->rex_prefix & REX_W )
-            asm volatile ( "fxsaveq %0" : "=m" (*fxsr) );
+            asm volatile ( "fxsaveq %0" : "=m" (*dst) );
         else
-            asm volatile ( "fxsave %0" : "=m" (*fxsr) );
+            asm volatile ( "fxsave %0" : "=m" (*dst) );
+
+        if ( dst != ptr ) /* i.e. s->op_bytes < sizeof(*fxsr) */
+            memcpy(ptr, dst, s->op_bytes);
+
+        UNMAP_FXSAVE_AREA(fxsr);
 
-        if ( fxsr != ptr ) /* i.e. s->op_bytes < sizeof(*fxsr) */
-            memcpy(ptr, fxsr, s->op_bytes);
         break;
     }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470817.1679639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyH-0000b0-ND; Tue, 03 Nov 2026 23:31:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470817.1679639; Tue, 03 Nov 2026 23:31:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyF-0000RM-Qi; Tue, 03 Nov 2026 23:31:15 +0000
Received: by outflank-mailman (input) for mailman id 1470817;
 Tue, 03 Nov 2026 23:30:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxg-0001VG-SO
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:40 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotC-2eSg;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo1-0000000EMFa-11KK;
 Tue, 03 Nov 2026 23:20:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=Tc/jXlrPlGsmLRuq65Xv7tixNRP0XkPfYKeLggB3t5w=; b=f3GROwuGazB+8axEW19HJyW0zn
	Z3mo3hXlBvI573/q1/wsQTyK9bi7a7dO+ofJ0acKPOq+pgntfxT0IcUJLKWf01lQc0QdTlpoo4s1D
	taJC27B0OTNhOUQioYT18177bRgKQlW6sm74at3zZg5a93ygdRhcYr4gmyS38eiuNCFE=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 23/44] x86/mm: split a sparse directmap superpage with a page being freed
Date: Tue,  3 Nov 2026 17:13:45 -0500
Message-ID: <20261103-asi-hvm-v6-23-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A xenheap free takes its pages out of the sparse directmap view.  Where
a superpage covers them, the superpage has to be split, and
modify_mappings_in() allocates the page-table page for that.  The sparse
view has such superpages wherever a xenheap block of 2MiB or more was
mapped whole, and wherever map_pages_in() merged the entries of a 2MiB
region into one, as it does in the full directmap, once all 512 pages
were mapped.  The allocation can fail once the hardware domain exists,
and the free then keeps its pages out of the heap for good, with a
warning.

Use one of the pages being freed instead.  The sparse view's free hook
makes the first of them what alloc_xen_pagetable() would return, and
passes it to modify_mappings_in(), which uses it, should a split need a
page, before allocating one.  The new L1 maps the rest of the superpage,
and the page's own entry is cleared along with the others being freed.
The hook tells free_xenheap_pages() whether it kept the page, and
free_xenheap_pages() then frees the rest of the block as blocks of
orders 0 to order - 1.  The page goes back to the heap once the L1 has
emptied, as any page-table page of the sparse view does.

One page is enough if the sparse view has no 1GiB pages: a block smaller
than 2MiB lies within one 2MiB page and needs one L1, and a larger block
covers whole 2MiB pages and needs none, where a block within a 1GiB page
could need an L2 as well.  So map_pages_in() makes 1GiB pages, by
mapping or by merging, only in idle_pg_table's hierarchy; the sparse
view keeps its 2MiB pages, mapped and merged.  A xenheap free then
allocates nothing in the sparse view.

The costs: a 2MiB region split this way can merge again only once it has
emptied, as its L1 is one of its own pages; where the sparse view maps a
whole 1GiB region, which takes memory never handed to the heap and
xenheap memory filling it, contexts on it use 2MiB pages instead of one
1GiB page; and arch_xenheap_pages_free() gains a parameter.  The other
removals from the sparse view (memory handed to the heap,
idle_pg_table's boot-time page-tables, and the undo of a failed xenheap
allocation) still allocate when they split a superpage.

The sparse view is correct without this, as a free that cannot split its
superpage fails safe.  It is kept apart from "x86/mm: build and maintain
a sparse view of the directmap" so that it can be weighed on its own.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New patch

This is a fairly complicated patch to handle a very niche corner case:

- All the 4k pages in a superpage happen to have been allocated into
the xenheap (and the page table automatically merged into a superpage)
- The system is completely out of singleton pages to allocate as pagetables
- A free_xenheap_page() is called on a subset of those pages

Without this patch, the freed page is leaked; with this patch, one of
the freed pages is used as a pagetable page instead.

Happy to drop this patch, or move it further to the end of the series,
if it helps the main bit of functionality get in.
---
 xen/arch/x86/include/asm/mm.h   |  2 +-
 xen/arch/x86/mm.c               | 34 ++++++++++++++++++++++------
 xen/arch/x86/sparse-directmap.c | 40 ++++++++++++++++++++++++++-------
 xen/common/page_alloc.c         | 14 ++++++++----
 xen/include/xen/mm.h            | 11 ++++++---
 5 files changed, 78 insertions(+), 23 deletions(-)

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 113ade0bbd..50ace61ce7 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -603,7 +603,7 @@ void *alloc_mapped_pagetable(mfn_t *pmfn);
 int map_pages_in(l4_pgentry_t *root, unsigned long virt, mfn_t mfn,
                  unsigned long nr_mfns, pte_attr_t flags);
 int modify_mappings_in(l4_pgentry_t *root, unsigned long s, unsigned long e,
-                       pte_attr_t nf);
+                       pte_attr_t nf, mfn_t *spare);
 #ifdef CONFIG_SPARSE_DIRECTMAP
 mfn_t xen_mapping_lookup(l4_pgentry_t *root, unsigned long va,
                          pte_attr_t *flags, unsigned long *nr);
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 36a241a41c..e1a80e9a5c 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5558,6 +5558,10 @@ static void free_pagetable_in(const l4_pgentry_t *root, mfn_t mfn)
 /*
  * map_pages_to_xen() in the hierarchy rooted at @root: idle_pg_table's, or
  * another hierarchy sharing its virtual addresses.
+ *
+ * Only idle_pg_table's hierarchy gets 1GiB pages: a xenheap free splits a
+ * superpage of the sparse directmap view with one of the pages it frees,
+ * which is enough for a 2MiB page only.
  */
 int map_pages_in(
     l4_pgentry_t *root,
@@ -5567,6 +5571,7 @@ int map_pages_in(
     pte_attr_t flags)
 {
     bool locking = system_state > SYS_STATE_boot;
+    bool page1gb = cpu_has_page1gb && root == idle_pg_table;
     l3_pgentry_t *pl3e = NULL, ol3e;
     l2_pgentry_t *pl2e = NULL, ol2e;
     l1_pgentry_t *pl1e, ol1e;
@@ -5619,7 +5624,7 @@ int map_pages_in(
         L3T_LOCK(current_l3page);
         ol3e = *pl3e;
 
-        if ( cpu_has_page1gb &&
+        if ( page1gb &&
              IS_L3E_ALIGNED(virt, flags & _PAGE_PRESENT ? mfn : _mfn(0)) &&
              nr_mfns >= (1UL << (L3_PAGETABLE_SHIFT - PAGE_SHIFT)) &&
              !(flags & (_PAGE_PAT | MAP_SMALL_PAGES)) )
@@ -5905,7 +5910,7 @@ int map_pages_in(
         }
 
  check_l3:
-        if ( cpu_has_page1gb &&
+        if ( page1gb &&
              (flags == PAGE_HYPERVISOR) &&
              ((nr_mfns == 0) || IS_L3E_ALIGNED(virt, mfn)) )
         {
@@ -5984,6 +5989,18 @@ int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
     return map_pages_to_xen(virt, INVALID_MFN, nr_mfns, MAP_SMALL_PAGES);
 }
 
+static mfn_t take_or_alloc_pagetable(mfn_t *spare)
+{
+    mfn_t mfn = spare ? *spare : INVALID_MFN;
+
+    if ( mfn_eq(mfn, INVALID_MFN) )
+        return alloc_xen_pagetable();
+
+    *spare = INVALID_MFN;
+
+    return mfn;
+}
+
 /*
  * Alter the permissions of a range of Xen virtual address space.
  *
@@ -5997,10 +6014,13 @@ int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
  * It is an error to call with present flags over an unpopulated range.
  *
  * modify_mappings_in() does so in the hierarchy rooted at @root, as
- * map_pages_in() does.
+ * map_pages_in() does.  @spare, if not NULL, may hold a page the caller
+ * gives up for a page-table page, which shattering a superpage then uses
+ * before allocating one.  *@spare reads INVALID_MFN once it has been used,
+ * and the page is then no longer the caller's.
  */
 int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
-                       unsigned long e, pte_attr_t nf)
+                       unsigned long e, pte_attr_t nf, mfn_t *spare)
 {
     bool locking = system_state > SYS_STATE_boot;
     l3_pgentry_t *pl3e = NULL;
@@ -6064,7 +6084,7 @@ int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
             }
 
             /* PAGE1GB: shatter the superpage and fall through. */
-            l2mfn = alloc_xen_pagetable();
+            l2mfn = take_or_alloc_pagetable(spare);
             if ( mfn_eq(l2mfn, INVALID_MFN) )
                 goto out;
 
@@ -6122,7 +6142,7 @@ int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
             {
                 l1_pgentry_t *l1t;
                 /* PSE: shatter the superpage and try again. */
-                mfn_t l1mfn = alloc_xen_pagetable();
+                mfn_t l1mfn = take_or_alloc_pagetable(spare);
 
                 if ( mfn_eq(l1mfn, INVALID_MFN) )
                     goto out;
@@ -6280,7 +6300,7 @@ int modify_mappings_in(l4_pgentry_t *root, unsigned long s,
 
 int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf)
 {
-    int rc = modify_mappings_in(idle_pg_table, s, e, nf);
+    int rc = modify_mappings_in(idle_pg_table, s, e, nf, NULL);
 
     if ( !rc )
         rc = sparse_dmap_mirror_modify(s, e, nf);
diff --git a/xen/arch/x86/sparse-directmap.c b/xen/arch/x86/sparse-directmap.c
index d35a8d6979..adec474f72 100644
--- a/xen/arch/x86/sparse-directmap.c
+++ b/xen/arch/x86/sparse-directmap.c
@@ -121,12 +121,13 @@ static int add_to_sparse_view(l4_pgentry_t *root, unsigned long mfn,
     return 0;
 }
 
-static int remove_from_sparse_view(unsigned long mfn, unsigned long nr)
+static int remove_from_sparse_view(unsigned long mfn, unsigned long nr,
+                                   mfn_t *spare)
 {
     unsigned long va = (unsigned long)mfn_to_virt(mfn);
 
     return modify_mappings_in(sparse_dmap_root, va, va + (nr << PAGE_SHIFT),
-                              _PAGE_NONE);
+                              _PAGE_NONE, spare);
 }
 
 /* Memory is about to be handed to the heap allocator. */
@@ -144,7 +145,7 @@ bool arch_heap_pages_init(mfn_t mfn, unsigned long nr)
         return true;
     }
 
-    if ( remove_from_sparse_view(s, nr) )
+    if ( remove_from_sparse_view(s, nr, NULL) )
     {
         printk(XENLOG_ERR
                "sparse directmap: cannot unmap MFNs %#lx-%#lx, not freeing\n",
@@ -188,10 +189,18 @@ int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order)
 /*
  * Xenheap pages are about to be freed.  A failure means the pages may still
  * be reachable through the sparse view, and must not be reused.
+ *
+ * If the caller allows, the first page serves as the page-table page that
+ * splitting a superpage of the sparse view needs: the new L1 maps the rest
+ * of the superpage, and the page leaves the sparse view with the others.
+ * One page is enough: the sparse view has no 1GiB pages, a block below 2MiB
+ * lies within one 2MiB page, and a larger one covers whole ones.
  */
-int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
+int arch_xenheap_pages_free(mfn_t mfn, unsigned int order, bool *first_kept)
 {
     unsigned long s = mfn_x(mfn), nr = 1UL << order;
+    mfn_t spare = INVALID_MFN;
+    int rc;
 
     if ( !sparse_dmap_configured() )
         return 0;
@@ -204,7 +213,22 @@ int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
         return 0;
     }
 
-    return remove_from_sparse_view(s, nr);
+    if ( first_kept )
+    {
+        struct page_info *pg = mfn_to_page(mfn);
+
+        /* Made what alloc_xen_pagetable() would return, in case it is used. */
+        pg->count_info &= ~PGC_xen_heap;
+        page_set_owner(pg, NULL);
+        spare = mfn;
+    }
+
+    rc = remove_from_sparse_view(s, nr, &spare);
+
+    if ( first_kept && mfn_eq(spare, INVALID_MFN) )
+        *first_kept = true;
+
+    return rc;
 }
 
 /* Memory leaves Xen's hands without passing through the heap. */
@@ -233,7 +257,7 @@ int sparse_dmap_drop_pagetable(mfn_t mfn)
                 INVALID_MFN) )
         return 0;
 
-    rc = remove_from_sparse_view(s, 1);
+    rc = remove_from_sparse_view(s, 1, NULL);
     if ( rc )
         printk(XENLOG_WARNING
                "Leaking page-table page %"PRI_mfn": still in the sparse directmap\n",
@@ -267,7 +291,7 @@ int sparse_dmap_mirror_modify(unsigned long s, unsigned long e,
     e = min(e, SPARSE_DMAP_END);
 
     if ( !(nf & _PAGE_PRESENT) )
-        return modify_mappings_in(sparse_dmap_root, s, e, nf);
+        return modify_mappings_in(sparse_dmap_root, s, e, nf, NULL);
 
     /*
      * A permission change applies where the sparse view maps anything: it
@@ -283,7 +307,7 @@ int sparse_dmap_mirror_modify(unsigned long s, unsigned long e,
         n = min(n, (e - va) >> PAGE_SHIFT);
         if ( !mfn_eq(mfn, INVALID_MFN) &&
              (rc = modify_mappings_in(sparse_dmap_root, va,
-                                      va + (n << PAGE_SHIFT), nf)) )
+                                      va + (n << PAGE_SHIFT), nf, NULL)) )
             return rc;
         va += n << PAGE_SHIFT;
     }
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 2150dcbd5e..349de3ddf3 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -2561,7 +2561,7 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
          * The hook may have mapped part of the pages before failing: take
          * them out again as a free would, and leak them if that fails too.
          */
-        if ( arch_xenheap_pages_free(page_to_mfn(pg), order) )
+        if ( arch_xenheap_pages_free(page_to_mfn(pg), order, NULL) )
             printk(XENLOG_WARNING
                    "Leaking xenheap pages %"PRI_mfn"+%u: still mapped\n",
                    mfn_x(page_to_mfn(pg)), 1U << order);
@@ -2580,6 +2580,7 @@ void free_xenheap_pages(void *v, unsigned int order)
 {
     struct page_info *pg;
     unsigned int i;
+    bool first_kept = false;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2593,7 +2594,7 @@ void free_xenheap_pages(void *v, unsigned int order)
      * they may remain reachable through it: leak them rather than hand them
      * out.
      */
-    if ( arch_xenheap_pages_free(page_to_mfn(pg), order) )
+    if ( arch_xenheap_pages_free(page_to_mfn(pg), order, &first_kept) )
     {
         printk(XENLOG_WARNING
                "Leaking xenheap pages %"PRI_mfn"+%u: still mapped\n",
@@ -2601,10 +2602,15 @@ void free_xenheap_pages(void *v, unsigned int order)
         return;
     }
 
-    for ( i = 0; i < (1u << order); i++ )
+    for ( i = first_kept ? 1 : 0; i < (1u << order); i++ )
         pg[i].count_info &= ~PGC_xen_heap;
 
-    free_heap_pages(pg, order, true);
+    if ( !first_kept )
+        free_heap_pages(pg, order, true);
+    else
+        /* The rest of the block, as the blocks of orders 0 to order - 1. */
+        for ( i = 0; i < order; i++ )
+            free_heap_pages(pg + (1u << i), i, true);
 }
 
 #endif  /* CONFIG_SEPARATE_XENHEAP */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 2bcc45cf58..debd511caf 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -108,8 +108,12 @@ bool arch_xenheap_needs_scrub(void);
  * pages go through arch_xenheap_pages_free() before being freed again.
  */
 int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order);
-/* Xenheap pages are to be freed.  Non-zero: failed, don't reuse them. */
-int arch_xenheap_pages_free(mfn_t mfn, unsigned int order);
+/*
+ * Xenheap pages are to be freed.  Non-zero: failed, don't reuse them.  With
+ * @first_kept not NULL, the arch may keep the first page for itself, and
+ * then sets *@first_kept to true: that page is not the caller's to free.
+ */
+int arch_xenheap_pages_free(mfn_t mfn, unsigned int order, bool *first_kept);
 #else
 static inline bool arch_heap_pages_init(mfn_t mfn, unsigned long nr)
 {
@@ -123,7 +127,8 @@ static inline int arch_xenheap_pages_alloc(mfn_t mfn, unsigned int order)
 {
     return 0;
 }
-static inline int arch_xenheap_pages_free(mfn_t mfn, unsigned int order)
+static inline int arch_xenheap_pages_free(mfn_t mfn, unsigned int order,
+                                          bool *first_kept)
 {
     return 0;
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470818.1679649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyJ-0000w2-NH; Tue, 03 Nov 2026 23:31:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470818.1679649; Tue, 03 Nov 2026 23:31:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyH-0000kj-N0; Tue, 03 Nov 2026 23:31:17 +0000
Received: by outflank-mailman (input) for mailman id 1470818;
 Tue, 03 Nov 2026 23:30:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxg-0001X0-Vb
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:40 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotG-2wkD;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo5-0000000EMFa-0SLy;
 Tue, 03 Nov 2026 23:20:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=bDsg//HU5JkYv43W8arroEfT2q3XVYeShKGP6Zhzsc4=; b=IaeKtIM09IITDGFhVxw5daTmBw
	05cXLdXdqSllw9DVEZWNS6b+iSWTXDRyyPO/R83l8PgzLaEGFw7A48bf5K1oFeZzFm8pYJQT1Zkb8
	2LabEpETrRkC43DaDlhv5v6yIMPih+/C5liGZDQOQ9YvMjxs6WJrrqtPn8rzzRlhc1vA=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 29/44] x86/svm: allocate VMCBs from the domain heap behind the vCPU state window
Date: Tue,  3 Nov 2026 17:13:51 -0500
Message-ID: <20261103-asi-hvm-v6-29-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The VMCB holds the full guest register save area, but lives on the
xenheap, where it stays reachable from every context.  Move it to the
domain heap and map it at a fixed slot in the owning vCPU's state
window, so that under Address Space Isolation it is only mapped while
that vCPU's page tables are loaded.  Hardware is unaffected: VMRUN,
VMLOAD and VMSAVE address the VMCB physically, and vmcb_pa now derives
from the page rather than from virt_to_maddr() on a directmap VA.

A vCPU can have two VMCBs: the primary (nv_n1vmcx) and the nested L2
one (nv_n2vmcx).  Both move, taking the first two slots in the window
stride.  The nested code's swapping of svm->vmcb / svm->vmcb_pa
between the two works unchanged, now swapping between two window VAs.
free_vmcb() takes a VMCB out of the window with unmap_vcpu_state()
before freeing the page: without per-vCPU page tables the window is in
the per-domain area that all its domain's vCPUs share, which outlives
a vCPU whose creation fails.

The window VA is only valid in the owning vCPU's context.
SVM_MAP_VMCB() and SVM_MAP_VMCB_ONE() return it for v == current, and
a transient map_domain_page() mapping otherwise, which SVM_UNMAP_VMCB()
drops with unmap_vcpu_state_page(), along with this CPU's translations
of it.  svm_ctxt_switch_to() no longer touches the VMCB, as it runs
before write_ptbase(); svm_ctxt_switch_from() keeps dereferencing the
window VA, as the outgoing page tables are still loaded at that point.
svm_asm_do_resume() reads the VMCB's interrupt shadow through the
window VA just before VMRUN, with the vCPU's own page tables loaded.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

Changes in v5:
- Describe the mapping in terms of SVM_MAP_VMCB(), SVM_MAP_VMCB_ONE()
  and SVM_UNMAP_VMCB(), which clears the pointer (George).
- v4's 26/30, "x86/svm: clear the VMCB clean bits in
  svm_ctxt_switch_from()", is dropped.  Ross's "x86/svm: Don't clear
  clean bits on every context switch", now in staging as 69633efbca3c,
  removes the clearing from svm_ctxt_switch_to() instead.
- svm_asm_do_resume() now reads the VMCB through svm.vmcb (staging's
  "x86/svm: Work around VMRUN's corruption of VMCB.INTR_SHADOW"); it
  runs in the vCPU's own context, where the window VA is valid.

Changes in v4:
- New in this version.
---
 xen/arch/x86/hvm/svm/nestedsvm.c |  8 +++---
 xen/arch/x86/hvm/svm/svm.c       | 10 ++++++++
 xen/arch/x86/hvm/svm/vmcb.c      | 43 ++++++++++++++++++++++----------
 xen/arch/x86/hvm/svm/vmcb.h      | 15 ++++++++---
 4 files changed, 56 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index f5ce3e485c..9a308cf628 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -71,10 +71,9 @@ int cf_check nsvm_vcpu_initialise(struct vcpu *v)
         goto err;
     memset(msrpm, 0x0, MSRPM_SIZE);
 
-    nv->nv_n2vmcx = alloc_vmcb();
+    nv->nv_n2vmcx = alloc_vmcb(v, VCPU_STATE_IDX_N2VMCB, &nv->nv_n2vmcx_pa);
     if ( nv->nv_n2vmcx == NULL )
         goto err;
-    nv->nv_n2vmcx_pa = virt_to_maddr(nv->nv_n2vmcx);
 
     return 0;
 
@@ -95,7 +94,10 @@ void cf_check nsvm_vcpu_destroy(struct vcpu *v)
      * of l1 vmcb page.
      */
     if ( nv->nv_n1vmcx )
+    {
         v->arch.hvm.svm.vmcb = nv->nv_n1vmcx;
+        v->arch.hvm.svm.vmcb_pa = nv->nv_n1vmcx_pa;
+    }
 
     if ( svm->ns_cached_msrpm )
     {
@@ -113,7 +115,7 @@ void cf_check nsvm_vcpu_destroy(struct vcpu *v)
 
     if ( nv->nv_n2vmcx )
     {
-        free_vmcb(nv->nv_n2vmcx);
+        free_vmcb(v, VCPU_STATE_IDX_N2VMCB, nv->nv_n2vmcx_pa);
         nv->nv_n2vmcx = NULL;
         nv->nv_n2vmcx_pa = INVALID_PADDR;
     }
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index df56245311..8b593b1b39 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -265,6 +265,10 @@ static void cf_check svm_enable_msr_interception(struct domain *d, uint32_t msr)
 
 static void svm_save_dr(struct vcpu *v)
 {
+    /*
+     * @v is the outgoing vCPU, whose page tables are still loaded: the
+     * VMCB's window VA serves, although current has moved on.
+     */
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int flag_dr_dirty = v->arch.hvm.flag_dr_dirty;
 
@@ -940,6 +944,12 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
 {
     int cpu = smp_processor_id();
 
+    /*
+     * NB we cannot access the VMCB here: this runs before
+     * write_ptbase(), so the incoming vCPU's state window is not
+     * reachable yet.
+     */
+
     /*
      * This is required, because VMRUN does consistency check and some of the
      * DOM0 selectors are pointing to invalid GDT locations, and cause AMD
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 21005dc57f..6588ec87e6 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -6,6 +6,7 @@
  *
  */
 
+#include <xen/domain_page.h>
 #include <xen/init.h>
 #include <xen/keyhandler.h>
 #include <xen/lib.h>
@@ -23,30 +24,40 @@
 #include "svm.h"
 #include "vmcb.h"
 
-struct vmcb_struct *alloc_vmcb(void)
+struct vmcb_struct *alloc_vmcb(struct vcpu *v, unsigned int idx, paddr_t *pa)
 {
-    struct vmcb_struct *vmcb;
+    struct page_info *pg = alloc_domheap_page(v->domain, MEMF_no_owner);
+    mfn_t mfn;
+
+    ASSERT(idx < VCPU_STATE_NR_PAGES);
 
-    vmcb = alloc_xenheap_page();
-    if ( vmcb == NULL )
+    if ( pg == NULL )
     {
         printk(XENLOG_WARNING "Warning: failed to allocate vmcb.\n");
         return NULL;
     }
 
-    clear_page(vmcb);
-    return vmcb;
+    mfn = page_to_mfn(pg);
+    clear_domain_page(mfn);
+    populate_perdomain_mapping(v, VCPU_STATE_ADDR(v, idx), &mfn, 1,
+                               __PAGE_HYPERVISOR_RW);
+    *pa = mfn_to_maddr(mfn);
+
+    return (struct vmcb_struct *)VCPU_STATE_ADDR(v, idx);
 }
 
-void free_vmcb(struct vmcb_struct *vmcb)
+void free_vmcb(struct vcpu *v, unsigned int idx, paddr_t pa)
 {
-    free_xenheap_page(vmcb);
+    ASSERT(idx < VCPU_STATE_NR_PAGES);
+
+    unmap_vcpu_state(v, idx, 1);
+    free_domheap_page(maddr_to_page(pa));
 }
 
 struct vmcb_struct *svm_vmcb_map_one(const struct vcpu *v,
                                      struct vmcb_struct *va, paddr_t pa)
 {
-    return va;
+    return v == current ? va : map_domain_page(maddr_to_mfn(pa));
 }
 
 struct vmcb_struct *svm_vmcb_map(const struct vcpu *v)
@@ -56,6 +67,8 @@ struct vmcb_struct *svm_vmcb_map(const struct vcpu *v)
 
 void svm_vmcb_unmap(const struct vcpu *v, const struct vmcb_struct *vmcb)
 {
+    if ( v != current )
+        unmap_vcpu_state_page(vmcb);
 }
 
 /* This function can directly access fields which are covered by clean bits. */
@@ -219,26 +232,29 @@ int svm_create_vmcb(struct vcpu *v)
     int rc;
 
     if ( (nv->nv_n1vmcx == NULL) &&
-         (nv->nv_n1vmcx = alloc_vmcb()) == NULL )
+         (nv->nv_n1vmcx = alloc_vmcb(v, VCPU_STATE_IDX_VMCB,
+                                     &nv->nv_n1vmcx_pa)) == NULL )
     {
         printk("Failed to create a new VMCB\n");
         return -ENOMEM;
     }
 
     svm->vmcb = nv->nv_n1vmcx;
+    svm->vmcb_pa = nv->nv_n1vmcx_pa;
 
     vmcb = SVM_MAP_VMCB(v);
     rc = construct_vmcb(v, vmcb);
     SVM_UNMAP_VMCB(v, vmcb);
     if ( rc != 0 )
     {
-        free_vmcb(nv->nv_n1vmcx);
+        free_vmcb(v, VCPU_STATE_IDX_VMCB, nv->nv_n1vmcx_pa);
         nv->nv_n1vmcx = NULL;
+        nv->nv_n1vmcx_pa = INVALID_PADDR;
         svm->vmcb = NULL;
+        svm->vmcb_pa = INVALID_PADDR;
         return rc;
     }
 
-    svm->vmcb_pa = nv->nv_n1vmcx_pa = virt_to_maddr(svm->vmcb);
     return 0;
 }
 
@@ -248,7 +264,7 @@ void svm_destroy_vmcb(struct vcpu *v)
     struct svm_vcpu *svm = &v->arch.hvm.svm;
 
     if ( nv->nv_n1vmcx != NULL )
-        free_vmcb(nv->nv_n1vmcx);
+        free_vmcb(v, VCPU_STATE_IDX_VMCB, nv->nv_n1vmcx_pa);
 
     if ( svm->msrpm != NULL )
     {
@@ -260,6 +276,7 @@ void svm_destroy_vmcb(struct vcpu *v)
     nv->nv_n1vmcx = NULL;
     nv->nv_n1vmcx_pa = INVALID_PADDR;
     svm->vmcb = NULL;
+    svm->vmcb_pa = INVALID_PADDR;
 }
 
 static void svm_dump_sel(const char *name, const struct segment_register *s)
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index d49c910d46..9e1e9ec1cd 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -556,12 +556,19 @@ struct vmcb_struct {
     uint64_t res18[291];
 };
 
-struct vmcb_struct *alloc_vmcb(void);
-void free_vmcb(struct vmcb_struct *vmcb);
+/*
+ * VMCBs are domain-heap pages: hardware addresses them physically, and
+ * Xen maps each one at a fixed slot in the owning vCPU's state window,
+ * so the returned virtual address is valid only in that vCPU's context.
+ * @idx is the VCPU_STATE_IDX_* slot to place the mapping in.
+ */
+struct vmcb_struct *alloc_vmcb(struct vcpu *v, unsigned int idx, paddr_t *pa);
+void free_vmcb(struct vcpu *v, unsigned int idx, paddr_t pa);
 
 /*
- * Access a VMCB of a vCPU that may not be current.  SVM_MAP_VMCB() takes
- * the active VMCB, SVM_MAP_VMCB_ONE() a specific one.
+ * Access a VMCB of a vCPU that may not be current: the window VA for
+ * current, a transient mapping otherwise.  SVM_MAP_VMCB() takes the active
+ * VMCB, SVM_MAP_VMCB_ONE() a specific one.
  */
 struct vmcb_struct *svm_vmcb_map_one(const struct vcpu *v,
                                      struct vmcb_struct *va, paddr_t pa);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470819.1679655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyL-0001Pi-Ie; Tue, 03 Nov 2026 23:31:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470819.1679655; Tue, 03 Nov 2026 23:31:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyK-0001JP-3b; Tue, 03 Nov 2026 23:31:20 +0000
Received: by outflank-mailman (input) for mailman id 1470819;
 Tue, 03 Nov 2026 23:30:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxh-0001fH-DV
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Couq-0h34;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo6-0000000EMFa-0a2k;
 Tue, 03 Nov 2026 23:20:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=NVGIgw99IFj4HEOzfc5+DvnxduyyMypiBLFSXW+Jamo=; b=u7pXdlPiOO2YZCVs5TKZwm+E7s
	PXwX5lElsgWzVSkR2TpMNP+x8aoyWlT5eppF2xihBKGFSaeigqO+dVS08ZKfLYyXHRSS2SAVJd2vT
	3c0f1S4K6LDYUo6Uwkn/yvuTgUSTvBfgCu7V/4KWr/TADnIgDRSJuBKYv/7If6ZOvaO0=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 31/44] x86: access a vCPU's saved register frame through map/unmap helpers
Date: Tue,  3 Nov 2026 17:13:53 -0500
Message-ID: <20261103-asi-hvm-v6-31-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When a vCPU is switched out, __context_switch() copies its register
frame from the stack into struct vcpu, and back when the vCPU is
switched in.  Code working on a vCPU other than the one running uses
that copy: vCPU creation, XEN_DOMCTL_{get,set}vcpucontext, saving and
loading the HVM CPU record, VCPUOP_initialise, INIT/SIPI and S3 resets,
the result of a hypercall continued on another CPU, PV dom0
construction, and the debug-key dumps.

Under Address Space Isolation the frame is to move out of struct vcpu,
which is mapped in every context, into memory which other domains'
contexts do not map.  Its users then need a transient mapping whenever
they run in another context.  Prepare for that:
introduce VCPU_MAP_REGS() and VCPU_UNMAP_REGS(), after
VCPU_MAP_XSAVE_AREA(), and convert every user but the context switch,
which moves the frame between the stack and its storage.  The field
becomes _user_regs, so that an access bypassing the helpers fails to
build: once the frame can live elsewhere, such an access would silently
use a stale copy.

vcpu_show_registers() now prints from a copy of the frame for PV vCPUs
as well as HVM ones, so that it holds no mapping while printing, and
vmx_set_info_guest() reads EFLAGS.TF before engaging the VMCS.

No functional change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v5:
- New in this version.
---
 xen/arch/x86/domain.c             | 94 ++++++++++++++++++-------------
 xen/arch/x86/domctl.c             | 72 ++++++++++++-----------
 xen/arch/x86/hvm/domain.c         |  6 +-
 xen/arch/x86/hvm/hvm.c            | 89 ++++++++++++++++-------------
 xen/arch/x86/hvm/vmx/vmcs.c       |  9 +--
 xen/arch/x86/hvm/vmx/vmx.c        |  7 ++-
 xen/arch/x86/hypercall.c          |  4 +-
 xen/arch/x86/include/asm/domain.h | 28 ++++++++-
 xen/arch/x86/pv/dom0_build.c      |  3 +-
 xen/arch/x86/traps.c              | 20 ++++---
 10 files changed, 204 insertions(+), 128 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 633619b400..143f76babf 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -496,8 +496,12 @@ unsigned int arch_domain_struct_memflags(void)
 /* Initialise various registers to their architectural INIT/RESET state. */
 void arch_vcpu_regs_init(struct vcpu *v)
 {
-    memset(&v->arch.user_regs, 0, sizeof(v->arch.user_regs));
-    v->arch.user_regs.eflags = X86_EFLAGS_MBS;
+    struct cpu_user_regs *regs = VCPU_MAP_REGS(v);
+
+    memset(regs, 0, sizeof(*regs));
+    regs->eflags = X86_EFLAGS_MBS;
+
+    VCPU_UNMAP_REGS(v, regs);
 
     memset(v->arch.dr, 0, sizeof(v->arch.dr));
     v->arch.dr6 = X86_DR6_DEFAULT;
@@ -1152,6 +1156,7 @@ int arch_set_info_guest(
 {
     struct domain *d = v->domain;
     const struct cpu_policy *p = d->arch.cpu_policy;
+    struct cpu_user_regs *regs;
     unsigned int i;
     unsigned long flags;
     bool compat;
@@ -1279,30 +1284,32 @@ int arch_set_info_guest(
     else
         vcpu_reset_fpu(v);
 
-    memset(&v->arch.user_regs, 0, sizeof(v->arch.user_regs));
+    regs = VCPU_MAP_REGS(v);
+    memset(regs, 0, sizeof(*regs));
 
     if ( !compat )
     {
-        v->arch.user_regs.r15               = c.nat->user_regs.r15;
-        v->arch.user_regs.r14               = c.nat->user_regs.r14;
-        v->arch.user_regs.r13               = c.nat->user_regs.r13;
-        v->arch.user_regs.r12               = c.nat->user_regs.r12;
-        v->arch.user_regs.rbp               = c.nat->user_regs.rbp;
-        v->arch.user_regs.rbx               = c.nat->user_regs.rbx;
-        v->arch.user_regs.r11               = c.nat->user_regs.r11;
-        v->arch.user_regs.r10               = c.nat->user_regs.r10;
-        v->arch.user_regs.r9                = c.nat->user_regs.r9;
-        v->arch.user_regs.r8                = c.nat->user_regs.r8;
-        v->arch.user_regs.rax               = c.nat->user_regs.rax;
-        v->arch.user_regs.rcx               = c.nat->user_regs.rcx;
-        v->arch.user_regs.rdx               = c.nat->user_regs.rdx;
-        v->arch.user_regs.rsi               = c.nat->user_regs.rsi;
-        v->arch.user_regs.rdi               = c.nat->user_regs.rdi;
-        v->arch.user_regs.rip               = c.nat->user_regs.rip;
-        v->arch.user_regs.cs                = c.nat->user_regs.cs;
-        v->arch.user_regs.rflags            = (c.nat->user_regs.rflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
-        v->arch.user_regs.rsp               = c.nat->user_regs.rsp;
-        v->arch.user_regs.ss                = c.nat->user_regs.ss;
+        regs->r15                           = c.nat->user_regs.r15;
+        regs->r14                           = c.nat->user_regs.r14;
+        regs->r13                           = c.nat->user_regs.r13;
+        regs->r12                           = c.nat->user_regs.r12;
+        regs->rbp                           = c.nat->user_regs.rbp;
+        regs->rbx                           = c.nat->user_regs.rbx;
+        regs->r11                           = c.nat->user_regs.r11;
+        regs->r10                           = c.nat->user_regs.r10;
+        regs->r9                            = c.nat->user_regs.r9;
+        regs->r8                            = c.nat->user_regs.r8;
+        regs->rax                           = c.nat->user_regs.rax;
+        regs->rcx                           = c.nat->user_regs.rcx;
+        regs->rdx                           = c.nat->user_regs.rdx;
+        regs->rsi                           = c.nat->user_regs.rsi;
+        regs->rdi                           = c.nat->user_regs.rdi;
+        regs->rip                           = c.nat->user_regs.rip;
+        regs->cs                            = c.nat->user_regs.cs;
+        regs->rflags                        =
+            (c.nat->user_regs.rflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
+        regs->rsp                           = c.nat->user_regs.rsp;
+        regs->ss                            = c.nat->user_regs.ss;
         v->arch.pv.es                       = c.nat->user_regs.es;
         v->arch.pv.ds                       = c.nat->user_regs.ds;
         v->arch.pv.fs                       = c.nat->user_regs.fs;
@@ -1315,18 +1322,19 @@ int arch_set_info_guest(
 #ifdef CONFIG_COMPAT
     else
     {
-        v->arch.user_regs.ebx               = c.cmp->user_regs.ebx;
-        v->arch.user_regs.ecx               = c.cmp->user_regs.ecx;
-        v->arch.user_regs.edx               = c.cmp->user_regs.edx;
-        v->arch.user_regs.esi               = c.cmp->user_regs.esi;
-        v->arch.user_regs.edi               = c.cmp->user_regs.edi;
-        v->arch.user_regs.ebp               = c.cmp->user_regs.ebp;
-        v->arch.user_regs.eax               = c.cmp->user_regs.eax;
-        v->arch.user_regs.eip               = c.cmp->user_regs.eip;
-        v->arch.user_regs.cs                = c.cmp->user_regs.cs;
-        v->arch.user_regs.eflags            = (c.cmp->user_regs.eflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
-        v->arch.user_regs.esp               = c.cmp->user_regs.esp;
-        v->arch.user_regs.ss                = c.cmp->user_regs.ss;
+        regs->ebx                           = c.cmp->user_regs.ebx;
+        regs->ecx                           = c.cmp->user_regs.ecx;
+        regs->edx                           = c.cmp->user_regs.edx;
+        regs->esi                           = c.cmp->user_regs.esi;
+        regs->edi                           = c.cmp->user_regs.edi;
+        regs->ebp                           = c.cmp->user_regs.ebp;
+        regs->eax                           = c.cmp->user_regs.eax;
+        regs->eip                           = c.cmp->user_regs.eip;
+        regs->cs                            = c.cmp->user_regs.cs;
+        regs->eflags                        =
+            (c.cmp->user_regs.eflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
+        regs->esp                           = c.cmp->user_regs.esp;
+        regs->ss                            = c.cmp->user_regs.ss;
         v->arch.pv.es                       = c.cmp->user_regs.es;
         v->arch.pv.ds                       = c.cmp->user_regs.ds;
         v->arch.pv.fs                       = c.cmp->user_regs.fs;
@@ -1341,6 +1349,8 @@ int arch_set_info_guest(
     }
 #endif
 
+    VCPU_UNMAP_REGS(v, regs);
+
     if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
         return -EINVAL;
 
@@ -1359,12 +1369,16 @@ int arch_set_info_guest(
     }
 
 #ifdef CONFIG_PV
+    regs = VCPU_MAP_REGS(v);
+
     /* IOPL privileges are virtualised. */
-    v->arch.pv.iopl = v->arch.user_regs.eflags & X86_EFLAGS_IOPL;
-    v->arch.user_regs.eflags &= ~X86_EFLAGS_IOPL;
+    v->arch.pv.iopl = regs->eflags & X86_EFLAGS_IOPL;
+    regs->eflags &= ~X86_EFLAGS_IOPL;
 
     /* Ensure real hardware interrupts are enabled. */
-    v->arch.user_regs.eflags |= X86_EFLAGS_IF;
+    regs->eflags |= X86_EFLAGS_IF;
+
+    VCPU_UNMAP_REGS(v, regs);
 
     nr_gdt_frames = DIV_ROUND_UP(c(gdt_ents), 512);
     if ( nr_gdt_frames > ARRAY_SIZE(v->arch.pv.gdt_frames) )
@@ -2135,7 +2149,7 @@ static void __context_switch(void)
     if ( !is_idle_domain(pd) )
     {
         ASSERT(read_atomic(&p->dirty_cpu) == cpu);
-        memcpy(&p->arch.user_regs, stack_regs, CTXT_SWITCH_STACK_BYTES);
+        memcpy(&p->arch._user_regs, stack_regs, CTXT_SWITCH_STACK_BYTES);
         vcpu_save_fpu(p);
         pd->arch.ctxt_switch->from(p);
     }
@@ -2151,7 +2165,7 @@ static void __context_switch(void)
 
     if ( !is_idle_domain(nd) )
     {
-        memcpy(stack_regs, &n->arch.user_regs, CTXT_SWITCH_STACK_BYTES);
+        memcpy(stack_regs, &n->arch._user_regs, CTXT_SWITCH_STACK_BYTES);
         if ( cpu_has_xsave )
         {
             if ( !set_xcr0(n->arch.xcr0 ?: XSTATE_FP_SSE) )
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 1e00510702..04bcde5580 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1461,6 +1461,7 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
     const struct domain *d = v->domain;
     bool compat = is_pv_32bit_domain(d);
     const struct xsave_struct *xsave_area;
+    const struct cpu_user_regs *regs;
 #ifdef CONFIG_COMPAT
 #define c(fld) (!compat ? (c.nat->fld) : (c.cmp->fld))
 #else
@@ -1479,29 +1480,32 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
     c(flags |= VGCF_i387_valid);
     if ( !(v->pause_flags & VPF_down) )
         c(flags |= VGCF_online);
+
+    regs = VCPU_MAP_REGS(v);
+
     if ( !compat )
     {
         /* Backing memory is pre-zeroed. */
-        c.nat->user_regs.r15               = v->arch.user_regs.r15;
-        c.nat->user_regs.r14               = v->arch.user_regs.r14;
-        c.nat->user_regs.r13               = v->arch.user_regs.r13;
-        c.nat->user_regs.r12               = v->arch.user_regs.r12;
-        c.nat->user_regs.rbp               = v->arch.user_regs.rbp;
-        c.nat->user_regs.rbx               = v->arch.user_regs.rbx;
-        c.nat->user_regs.r11               = v->arch.user_regs.r11;
-        c.nat->user_regs.r10               = v->arch.user_regs.r10;
-        c.nat->user_regs.r9                = v->arch.user_regs.r9;
-        c.nat->user_regs.r8                = v->arch.user_regs.r8;
-        c.nat->user_regs.rax               = v->arch.user_regs.rax;
-        c.nat->user_regs.rcx               = v->arch.user_regs.rcx;
-        c.nat->user_regs.rdx               = v->arch.user_regs.rdx;
-        c.nat->user_regs.rsi               = v->arch.user_regs.rsi;
-        c.nat->user_regs.rdi               = v->arch.user_regs.rdi;
-        c.nat->user_regs.rip               = v->arch.user_regs.rip;
-        c.nat->user_regs.cs                = v->arch.user_regs.cs;
-        c.nat->user_regs.rflags            = v->arch.user_regs.rflags;
-        c.nat->user_regs.rsp               = v->arch.user_regs.rsp;
-        c.nat->user_regs.ss                = v->arch.user_regs.ss;
+        c.nat->user_regs.r15               = regs->r15;
+        c.nat->user_regs.r14               = regs->r14;
+        c.nat->user_regs.r13               = regs->r13;
+        c.nat->user_regs.r12               = regs->r12;
+        c.nat->user_regs.rbp               = regs->rbp;
+        c.nat->user_regs.rbx               = regs->rbx;
+        c.nat->user_regs.r11               = regs->r11;
+        c.nat->user_regs.r10               = regs->r10;
+        c.nat->user_regs.r9                = regs->r9;
+        c.nat->user_regs.r8                = regs->r8;
+        c.nat->user_regs.rax               = regs->rax;
+        c.nat->user_regs.rcx               = regs->rcx;
+        c.nat->user_regs.rdx               = regs->rdx;
+        c.nat->user_regs.rsi               = regs->rsi;
+        c.nat->user_regs.rdi               = regs->rdi;
+        c.nat->user_regs.rip               = regs->rip;
+        c.nat->user_regs.cs                = regs->cs;
+        c.nat->user_regs.rflags            = regs->rflags;
+        c.nat->user_regs.rsp               = regs->rsp;
+        c.nat->user_regs.ss                = regs->ss;
         c.nat->user_regs.es                = v->arch.pv.es;
         c.nat->user_regs.ds                = v->arch.pv.ds;
         c.nat->user_regs.fs                = v->arch.pv.fs;
@@ -1515,18 +1519,18 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
     else
     {
         /* Backing memory is pre-zeroed. */
-        c.cmp->user_regs.ebp               = v->arch.user_regs.ebp;
-        c.cmp->user_regs.ebx               = v->arch.user_regs.ebx;
-        c.cmp->user_regs.eax               = v->arch.user_regs.eax;
-        c.cmp->user_regs.ecx               = v->arch.user_regs.ecx;
-        c.cmp->user_regs.edx               = v->arch.user_regs.edx;
-        c.cmp->user_regs.esi               = v->arch.user_regs.esi;
-        c.cmp->user_regs.edi               = v->arch.user_regs.edi;
-        c.cmp->user_regs.eip               = v->arch.user_regs.eip;
-        c.cmp->user_regs.cs                = v->arch.user_regs.cs;
-        c.cmp->user_regs.eflags            = v->arch.user_regs.eflags;
-        c.cmp->user_regs.esp               = v->arch.user_regs.esp;
-        c.cmp->user_regs.ss                = v->arch.user_regs.ss;
+        c.cmp->user_regs.ebp               = regs->ebp;
+        c.cmp->user_regs.ebx               = regs->ebx;
+        c.cmp->user_regs.eax               = regs->eax;
+        c.cmp->user_regs.ecx               = regs->ecx;
+        c.cmp->user_regs.edx               = regs->edx;
+        c.cmp->user_regs.esi               = regs->esi;
+        c.cmp->user_regs.edi               = regs->edi;
+        c.cmp->user_regs.eip               = regs->eip;
+        c.cmp->user_regs.cs                = regs->cs;
+        c.cmp->user_regs.eflags            = regs->eflags;
+        c.cmp->user_regs.esp               = regs->esp;
+        c.cmp->user_regs.ss                = regs->ss;
         c.cmp->user_regs.es                = v->arch.pv.es;
         c.cmp->user_regs.ds                = v->arch.pv.ds;
         c.cmp->user_regs.fs                = v->arch.pv.fs;
@@ -1638,10 +1642,12 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
         }
 #endif
 
-        if ( guest_kernel_mode(v, &v->arch.user_regs) )
+        if ( guest_kernel_mode(v, regs) )
             c(flags |= VGCF_in_kernel);
     }
 
+    VCPU_UNMAP_REGS(v, regs);
+
     c(vm_assist = d->vm_assist);
 #undef c
 }
diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
index 978d8b2222..71e16e25ba 100644
--- a/xen/arch/x86/hvm/domain.c
+++ b/xen/arch/x86/hvm/domain.c
@@ -103,7 +103,7 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg)
 int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
 {
     const struct domain *d = v->domain;
-    struct cpu_user_regs *uregs = &v->arch.user_regs;
+    struct cpu_user_regs *uregs;
     struct segment_register cs, ds, ss, es, tr;
     const char *errstr;
     int rc;
@@ -188,6 +188,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
             return -EINVAL;
         }
 
+        uregs = VCPU_MAP_REGS(v);
         uregs->rax    = regs->eax;
         uregs->rcx    = regs->ecx;
         uregs->rdx    = regs->edx;
@@ -198,6 +199,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
         uregs->rdi    = regs->edi;
         uregs->rip    = regs->eip;
         uregs->rflags = (regs->eflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
+        VCPU_UNMAP_REGS(v, uregs);
 
         v->arch.hvm.guest_cr[0] = regs->cr0;
         v->arch.hvm.guest_cr[3] = regs->cr3;
@@ -239,6 +241,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
             return -EINVAL;
         }
 
+        uregs = VCPU_MAP_REGS(v);
         uregs->rax    = regs->rax;
         uregs->rcx    = regs->rcx;
         uregs->rdx    = regs->rdx;
@@ -249,6 +252,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx)
         uregs->rdi    = regs->rdi;
         uregs->rip    = regs->rip;
         uregs->rflags = (regs->rflags & X86_EFLAGS_ALL) | X86_EFLAGS_MBS;
+        VCPU_UNMAP_REGS(v, uregs);
 
         v->arch.hvm.guest_cr[0] = regs->cr0;
         v->arch.hvm.guest_cr[3] = regs->cr3;
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 71da15c0a4..eadccf3d79 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -827,28 +827,29 @@ HVM_REGISTER_SAVE_RESTORE(TSC_ADJUST, hvm_save_tsc_adjust, NULL,
 
 static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
 {
+    const struct cpu_user_regs *regs = VCPU_MAP_REGS(v);
     struct segment_register seg;
     struct hvm_hw_cpu ctxt = {
         .tsc = hvm_get_guest_tsc_fixed(v, v->domain->arch.hvm.sync_tsc),
         .msr_tsc_aux = v->arch.msrs->tsc_aux,
-        .rax = v->arch.user_regs.rax,
-        .rbx = v->arch.user_regs.rbx,
-        .rcx = v->arch.user_regs.rcx,
-        .rdx = v->arch.user_regs.rdx,
-        .rbp = v->arch.user_regs.rbp,
-        .rsi = v->arch.user_regs.rsi,
-        .rdi = v->arch.user_regs.rdi,
-        .rsp = v->arch.user_regs.rsp,
-        .rip = v->arch.user_regs.rip,
-        .rflags = v->arch.user_regs.rflags,
-        .r8  = v->arch.user_regs.r8,
-        .r9  = v->arch.user_regs.r9,
-        .r10 = v->arch.user_regs.r10,
-        .r11 = v->arch.user_regs.r11,
-        .r12 = v->arch.user_regs.r12,
-        .r13 = v->arch.user_regs.r13,
-        .r14 = v->arch.user_regs.r14,
-        .r15 = v->arch.user_regs.r15,
+        .rax = regs->rax,
+        .rbx = regs->rbx,
+        .rcx = regs->rcx,
+        .rdx = regs->rdx,
+        .rbp = regs->rbp,
+        .rsi = regs->rsi,
+        .rdi = regs->rdi,
+        .rsp = regs->rsp,
+        .rip = regs->rip,
+        .rflags = regs->rflags,
+        .r8  = regs->r8,
+        .r9  = regs->r9,
+        .r10 = regs->r10,
+        .r11 = regs->r11,
+        .r12 = regs->r12,
+        .r13 = regs->r13,
+        .r14 = regs->r14,
+        .r15 = regs->r15,
         .cr0 = v->arch.hvm.guest_cr[0],
         .cr2 = v->arch.hvm.guest_cr[2],
         .cr3 = v->arch.hvm.guest_cr[3],
@@ -863,6 +864,8 @@ static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
     };
     const struct xsave_struct *xsave_area;
 
+    VCPU_UNMAP_REGS(v, regs);
+
     /*
      * We don't need to save state for a vcpu that is down; the restore
      * code will leave it down if there is nothing saved.
@@ -1020,6 +1023,7 @@ static int cf_check hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h)
     const struct cpu_policy *p = d->arch.cpu_policy;
     unsigned int vcpuid = hvm_load_instance(h);
     struct vcpu *v;
+    struct cpu_user_regs *regs;
     struct hvm_hw_cpu ctxt;
     struct segment_register seg;
     const char *errstr;
@@ -1182,24 +1186,26 @@ static int cf_check hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h)
     else
         vcpu_reset_fpu(v);
 
-    v->arch.user_regs.rax = ctxt.rax;
-    v->arch.user_regs.rbx = ctxt.rbx;
-    v->arch.user_regs.rcx = ctxt.rcx;
-    v->arch.user_regs.rdx = ctxt.rdx;
-    v->arch.user_regs.rbp = ctxt.rbp;
-    v->arch.user_regs.rsi = ctxt.rsi;
-    v->arch.user_regs.rdi = ctxt.rdi;
-    v->arch.user_regs.rsp = ctxt.rsp;
-    v->arch.user_regs.rip = ctxt.rip;
-    v->arch.user_regs.rflags = ctxt.rflags | X86_EFLAGS_MBS;
-    v->arch.user_regs.r8  = ctxt.r8;
-    v->arch.user_regs.r9  = ctxt.r9;
-    v->arch.user_regs.r10 = ctxt.r10;
-    v->arch.user_regs.r11 = ctxt.r11;
-    v->arch.user_regs.r12 = ctxt.r12;
-    v->arch.user_regs.r13 = ctxt.r13;
-    v->arch.user_regs.r14 = ctxt.r14;
-    v->arch.user_regs.r15 = ctxt.r15;
+    regs = VCPU_MAP_REGS(v);
+    regs->rax = ctxt.rax;
+    regs->rbx = ctxt.rbx;
+    regs->rcx = ctxt.rcx;
+    regs->rdx = ctxt.rdx;
+    regs->rbp = ctxt.rbp;
+    regs->rsi = ctxt.rsi;
+    regs->rdi = ctxt.rdi;
+    regs->rsp = ctxt.rsp;
+    regs->rip = ctxt.rip;
+    regs->rflags = ctxt.rflags | X86_EFLAGS_MBS;
+    regs->r8  = ctxt.r8;
+    regs->r9  = ctxt.r9;
+    regs->r10 = ctxt.r10;
+    regs->r11 = ctxt.r11;
+    regs->r12 = ctxt.r12;
+    regs->r13 = ctxt.r13;
+    regs->r14 = ctxt.r14;
+    regs->r15 = ctxt.r15;
+    VCPU_UNMAP_REGS(v, regs);
     v->arch.dr[0] = ctxt.dr0;
     v->arch.dr[1] = ctxt.dr1;
     v->arch.dr[2] = ctxt.dr2;
@@ -2563,7 +2569,7 @@ bool hvm_vcpu_virtual_to_linear(
 {
     unsigned long addr = offset, last_byte;
     const struct cpu_user_regs *regs = v == current ? guest_cpu_user_regs()
-                                                    : &v->arch.user_regs;
+                                                    : VCPU_MAP_REGS(v);
     bool okay = false;
 
     ASSERT(v == current || !vcpu_runnable(v));
@@ -2688,6 +2694,10 @@ bool hvm_vcpu_virtual_to_linear(
      * failed.  The permissions failure is not relevant to some callers.
      */
     *linear_addr = addr;
+
+    if ( v != current )
+        VCPU_UNMAP_REGS(v, regs);
+
     return okay;
 }
 
@@ -3956,6 +3966,7 @@ void hvm_init_hypercall_page(struct domain *d, void *ptr)
 void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
 {
     struct domain *d = v->domain;
+    struct cpu_user_regs *regs;
     struct segment_register reg;
 
     domain_lock(d);
@@ -3973,7 +3984,9 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
     vcpu_reset_fpu(v);
 
     arch_vcpu_regs_init(v);
-    v->arch.user_regs.rip = ip;
+    regs = VCPU_MAP_REGS(v);
+    regs->rip = ip;
+    VCPU_UNMAP_REGS(v, regs);
 
     v->arch.hvm.guest_cr[0] = X86_CR0_ET;
     hvm_update_guest_cr(v, 0);
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index 592722f1ca..78b0af29f2 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -2083,15 +2083,13 @@ static void vmx_dump_sel2(const char *name, uint32_t lim)
 
 void vmcs_dump_vcpu(struct vcpu *v)
 {
-    struct cpu_user_regs *regs = &v->arch.user_regs;
+    const struct cpu_user_regs *regs = v == current ? guest_cpu_user_regs()
+                                                    : VCPU_MAP_REGS(v);
     uint32_t vmentry_ctl, vmexit_ctl;
     unsigned long cr4;
     uint64_t efer;
     unsigned int i, n;
 
-    if ( v == current )
-        regs = guest_cpu_user_regs();
-
     vmx_vmcs_enter(v);
 
     vmentry_ctl = vmr32(VM_ENTRY_CONTROLS),
@@ -2236,6 +2234,9 @@ void vmcs_dump_vcpu(struct vcpu *v)
                vmr16(VIRTUAL_PROCESSOR_ID), vmr(VM_FUNCTION_CONTROL));
 
     vmx_vmcs_exit(v);
+
+    if ( v != current )
+        VCPU_UNMAP_REGS(v, regs);
 }
 
 static void cf_check vmcs_dump(unsigned char ch)
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 3c7374a9ff..bdbcd0ad4d 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2159,8 +2159,12 @@ static bool cf_check vmx_event_pending(const struct vcpu *v)
 
 static void cf_check vmx_set_info_guest(struct vcpu *v)
 {
+    const struct cpu_user_regs *regs = VCPU_MAP_REGS(v);
+    bool single_step = regs->eflags & X86_EFLAGS_TF;
     unsigned long intr_shadow;
 
+    VCPU_UNMAP_REGS(v, regs);
+
     vmx_vmcs_enter(v);
 
     __vmwrite(GUEST_DR7, v->arch.dr7);
@@ -2174,8 +2178,7 @@ static void cf_check vmx_set_info_guest(struct vcpu *v)
      * immediately vmexit and hence make no progress.
      */
     __vmread(GUEST_INTERRUPTIBILITY_INFO, &intr_shadow);
-    if ( v->domain->debugger_attached &&
-         (v->arch.user_regs.eflags & X86_EFLAGS_TF) &&
+    if ( v->domain->debugger_attached && single_step &&
          (intr_shadow & VMX_INTR_SHADOW_STI) )
     {
         intr_shadow &= ~VMX_INTR_SHADOW_STI;
diff --git a/xen/arch/x86/hypercall.c b/xen/arch/x86/hypercall.c
index dc0a90ca09..bfdc462874 100644
--- a/xen/arch/x86/hypercall.c
+++ b/xen/arch/x86/hypercall.c
@@ -107,9 +107,11 @@ unsigned long hypercall_create_continuation(
 
 void arch_hypercall_tasklet_result(struct vcpu *v, long res)
 {
-    struct cpu_user_regs *regs = &v->arch.user_regs;
+    struct cpu_user_regs *regs = VCPU_MAP_REGS(v);
 
     regs->rax = res;
+
+    VCPU_UNMAP_REGS(v, regs);
 }
 
 int hypercall_xlat_continuation(unsigned int *id, unsigned int nr,
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 0e405157b4..457eb69ace 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -632,7 +632,12 @@ struct pv_vcpu
 
 struct arch_vcpu
 {
-    struct cpu_user_regs user_regs;
+    /*
+     * The vCPU's register frame while it is not running: __context_switch()
+     * copies it here from the stack when the vCPU is switched out, and back
+     * when it is switched in.  Everything else goes through VCPU_MAP_REGS().
+     */
+    struct cpu_user_regs _user_regs;
 
     /* Debug registers. */
     unsigned long dr[4];
@@ -741,6 +746,27 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
     vfree(vgc);
 }
 
+/*
+ * Fetch a pointer to the register frame a vCPU was last switched out with,
+ * or which a toolstack, debugger or reset has put there since: the vCPU's
+ * registers for code working on a vCPU other than the one running (whose
+ * registers are on the stack, see guest_cpu_user_regs()).
+ *
+ * The pointer is valid until VCPU_UNMAP_REGS(), which clears it.  A mapping
+ * must not be held across a scheduling point.
+ *
+ * @param v Owner of the register frame
+ */
+#define VCPU_MAP_REGS(v) (&(v)->arch._user_regs)
+
+/*
+ * Drops the mapping of a vCPU's register frame and nullifies its pointer.
+ *
+ * @param v Owner of the register frame
+ * @param r Register frame of v, from VCPU_MAP_REGS()
+ */
+#define VCPU_UNMAP_REGS(v, r) do { (void)(v); (r) = NULL; } while ( false )
+
 void arch_vcpu_regs_init(struct vcpu *v);
 
 struct vcpu_hvm_context;
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 829eafd67d..a08362df16 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -1007,7 +1007,7 @@ static int __init dom0_construct(const struct boot_domain *bd)
      *          rSI = start_info
      *  [rAX,rBX,rCX,rDX,rDI,rBP,R8-R15 are zero]
      */
-    regs = &v->arch.user_regs;
+    regs = VCPU_MAP_REGS(v);
     v->arch.pv.ds = (compat ? FLAT_COMPAT_KERNEL_DS : FLAT_KERNEL_DS);
     v->arch.pv.es = (compat ? FLAT_COMPAT_KERNEL_DS : FLAT_KERNEL_DS);
     v->arch.pv.fs = (compat ? FLAT_COMPAT_KERNEL_DS : FLAT_KERNEL_DS);
@@ -1018,6 +1018,7 @@ static int __init dom0_construct(const struct boot_domain *bd)
     regs->rsp = vstack_end;
     regs->rsi = vstartinfo_start;
     regs->eflags = X86_EFLAGS_IF | X86_EFLAGS_MBS;
+    VCPU_UNMAP_REGS(v, regs);
 
     /*
      * We don't call arch_set_info_guest(), so some initialisation needs doing
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index ac01ba0872..3b4a01ba52 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -273,16 +273,17 @@ void show_registers(const struct cpu_user_regs *regs)
 
 void vcpu_show_registers(struct vcpu *v)
 {
-    const struct cpu_user_regs *regs = &v->arch.user_regs;
-    struct cpu_user_regs aux_regs;
+    const struct cpu_user_regs *regs = VCPU_MAP_REGS(v);
+    struct cpu_user_regs aux_regs = *regs;
     struct extra_state state;
     enum context context;
 
+    VCPU_UNMAP_REGS(v, regs);
+    regs = &aux_regs;
+
     if ( is_hvm_vcpu(v) )
     {
-        aux_regs = *regs;
         get_hvm_registers(v, &aux_regs, &state);
-        regs = &aux_regs;
         context = CTXT_hvm_guest;
     }
     else
@@ -916,6 +917,7 @@ void cf_check show_execution_state(const struct cpu_user_regs *regs)
 
 void vcpu_show_execution_state(struct vcpu *v)
 {
+    const struct cpu_user_regs *regs;
     unsigned long flags = 0;
 
     if ( test_bit(_VPF_down, &v->pause_flags) )
@@ -961,12 +963,16 @@ void vcpu_show_execution_state(struct vcpu *v)
          */
         console_unlock_recursive_irqrestore(flags);
 
-        show_hvm_stack(v, &v->arch.user_regs);
+        regs = VCPU_MAP_REGS(v);
+        show_hvm_stack(v, regs);
+        VCPU_UNMAP_REGS(v, regs);
     }
     else
     {
-        if ( guest_kernel_mode(v, &v->arch.user_regs) )
-            show_guest_stack(v, &v->arch.user_regs);
+        regs = VCPU_MAP_REGS(v);
+        if ( guest_kernel_mode(v, regs) )
+            show_guest_stack(v, regs);
+        VCPU_UNMAP_REGS(v, regs);
 
         console_unlock_recursive_irqrestore(flags);
     }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470820.1679663 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyN-0001pX-SX; Tue, 03 Nov 2026 23:31:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470820.1679663; Tue, 03 Nov 2026 23:31:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyL-0001gN-UJ; Tue, 03 Nov 2026 23:31:21 +0000
Received: by outflank-mailman (input) for mailman id 1470820;
 Tue, 03 Nov 2026 23:30:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxh-0001dv-Az
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000CovE-1Agc;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONns-0000000EMFa-0rTu;
 Tue, 03 Nov 2026 23:20:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=q61QcfEPbpij49BHXIR9hDLEn3Fryo2EnMJYGWj3XbE=; b=bqANd3lCanoJt+icnl190R5Cnl
	jOpFZvf6OXXpZhi8rL7sialzz1CAMtRNA4hhjW/dyor+EF8MNzteCFYkQnz2cq+dFpAII85leMYTw
	/yJHKWtM6kA0u0BJElFEHPRQhghvm9CbN3diYI91z50KU8gphUKYAnc5vZLCyEZNwLRM=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 13/44] x86/hvm: introduce per-vCPU mapcache for vCPU-PT domains
Date: Tue,  3 Nov 2026 17:13:35 -0500
Message-ID: <20261103-asi-hvm-v6-13-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Roger Pau Monné <roger.pau@citrix.com>

Add a struct mapcache to struct mapcache_vcpu for the per-vCPU
accounting, with MAPCACHE_PERVCPU_ENTRIES (64) slots. Its inuse and
garbage bitmaps are then an unsigned long each: declare them inline
in struct mapcache_vcpu, rather than mapping them in the per-domain
area as the domain-wide bitmaps are.

A per-vCPU mapcache is only ever used by its own vCPU, and so by one
pCPU at a time. We can therefore skip both the lock and the TLB-epoch
tracking the domain-wide mapcache needs; a wrap still flushes the
local TLB.

struct mapcache_vcpu grows from 136 to 176 bytes, and struct vcpu from
3008 to 3072 bytes (x86_64, debug build), within its page.

Unlike a domain-wide mapcache, whose one pool all the domain's vCPUs
draw on, a per-vCPU one cannot, by design, use more than its own
slots: MAPCACHE_PERVCPU_ENTRIES (64) is the most single-page
mappings such a vCPU can hold at once, interrupt handlers' included,
and one more hits the BUG_ON() in map_domain_page(). The PoD
zero-page sweep held up to 16 on top of its callers' until
41ddcfe808ec ("x86/PoD: map one page at a time in
p2m_pod_zero_check()"). A domain-wide
mapcache is sized at MAPCACHE_VCPU_ENTRIES (16) slots per vCPU, in
one shared pool; a per-vCPU one gets 64, for a wider margin. The
extra slots take no memory: the area is a whole L1 page whatever the
number of slots, and each bitmap is still one unsigned long. Wraps,
each of which flushes the local TLB, also come less often.

mapcache_current_vcpu()'s lazy-context-switch handling
(sync_local_execstate() plus a pgtable_vcpu re-read) now applies to
any vCPU with a mapcache: when the idle vCPU runs lazily on an HVM
vCPU's monitor table, the full switch happens before the idle context
uses a mapcache.

In release builds map_domain_page() still tries the directmap first,
for any vCPU; debug builds exercise the new mapcache.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
Changes in v6:
- Message: "x86/PoD: map one page at a time in p2m_pod_zero_check()" is
  in staging now, so cite it by its hash.

Changes in v5:
- Message: a domain-wide mapcache is one pool that all the domain's
  vCPUs draw on, not per-vCPU slots another vCPU could borrow.

Changes in v4:
- d->arch.vcpu_pt is now d->arch.asi.vcpu_pt.
- mapcache_lock() / mapcache_unlock() are now mapcache_enter() /
  mapcache_exit().  has_mapcache()'s comment no longer changes, and the
  early return in mapcache_enter() has a one-line comment instead of a
  sentence added to the block (Roger).
- mapcache_vcpu_init(): ents and nr become assignments here, ents now
  depending on the kind of mapcache (Jan).
- A per-vCPU mapcache gets 64 slots (MAPCACHE_PERVCPU_ENTRIES) in
  place of MAPCACHE_VCPU_ENTRIES (16), which still sizes the
  domain-wide mapcache; its bitmaps, now full, are described as an
  unsigned long each (Roger).
- Move the comment on why a per-vCPU mapcache needs only a local flush
  from map_domain_page()'s TLB flush to mapcache_new_epoch()'s early
  return, as one line (Roger).

Changes in v3:
- HVM only, and per-vCPU from the start: the HVM enablement of "x86:
  Initialize the mapcache for PV, HVM, and idle domains" (from the
  directmap removal series) is folded in, without the idle domain and
  without a domain-wide HVM mapcache.
- Retitle (was: "x86/mm: introduce a per-vCPU mapcache when using ASI").
- Say which second unmaps the not-present check in unmap_domain_page()
  catches: those of an entry the first unmap zapped.
- State the budget of single-page mappings a vCPU can hold at once.
- The mapcache accounting refactor, the move of struct mapcache_vcpu
  to struct arch_vcpu and the not-present check in unmap_domain_page()
  are split out, for review, into the three patches before this one.
---
 xen/arch/x86/domain_page.c        | 61 +++++++++++++++++++++++--------
 xen/arch/x86/include/asm/config.h |  2 +
 xen/arch/x86/include/asm/domain.h |  6 +++
 3 files changed, 53 insertions(+), 16 deletions(-)

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 47ccefa4e9..770fee80a4 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -21,7 +21,7 @@
 /* Whether the vCPU supports mapcache usage, might not be in use. */
 static bool has_mapcache(const struct vcpu *v)
 {
-    return is_pv_vcpu(v);
+    return is_pv_vcpu(v) || v->domain->arch.asi.vcpu_pt;
 }
 
 static inline struct vcpu *mapcache_current_vcpu(void)
@@ -34,10 +34,10 @@ static inline struct vcpu *mapcache_current_vcpu(void)
         return NULL;
 
     /*
-     * If we are in a lazy context-switch state from a PV vCPU do a full switch
-     * to the idle vCPU now, otherwise an incoming FLUSH_VCPU_STATE IPI would
-     * change the page tables under our feet an invalidate any in-use mapcache
-     * entries.
+     * If we are in a lazy context-switch state from a vCPU with a mapcache do
+     * a full switch to the idle vCPU now, otherwise an incoming
+     * FLUSH_VCPU_STATE IPI would change the page tables under our feet and
+     * invalidate any in-use mapcache entries.
      */
     if ( unlikely(this_cpu(curr_vcpu) != curr) )
     {
@@ -57,14 +57,21 @@ static inline struct vcpu *mapcache_current_vcpu(void)
 }
 
 /*
- * The accounting for v's mapcache: the domain's, with *dcache set so the
- * caller takes the domain-wide lock and TLB-epoch machinery into account.
+ * The accounting for v's mapcache: its own for a vCPU-PT domain, the domain's
+ * otherwise, in which case *dcache is set so the caller takes the domain-wide
+ * lock and TLB-epoch machinery into account.
  */
 static struct mapcache *vcpu_mapcache(struct vcpu *v,
                                       struct mapcache_domain **dcache)
 {
     struct domain *d = v->domain;
 
+    if ( d->arch.asi.vcpu_pt )
+    {
+        *dcache = NULL;
+        return &v->arch.mapcache.cache;
+    }
+
     *dcache = &d->arch.pv.mapcache;
     return &(*dcache)->cache;
 }
@@ -72,6 +79,10 @@ static struct mapcache *vcpu_mapcache(struct vcpu *v,
 static void mapcache_enter(struct mapcache_domain *dcache,
                            struct mapcache_vcpu *vcache)
 {
+    /* Only its own vCPU uses a per-vCPU mapcache: no lock or epoch needed. */
+    if ( !dcache )
+        return;
+
     /* The domain's vCPUs share the mapcache's slots. */
     spin_lock(&dcache->lock);
 
@@ -91,6 +102,10 @@ static void mapcache_enter(struct mapcache_domain *dcache,
 static void mapcache_new_epoch(struct mapcache_domain *dcache,
                                struct mapcache_vcpu *vcache)
 {
+    /* Per-vCPU: no epoch, as page-table loads flush its non-global entries. */
+    if ( !dcache )
+        return;
+
     ASSERT(spin_is_locked(&dcache->lock));
 
     vcache->shadow_epoch = ++dcache->epoch;
@@ -99,7 +114,8 @@ static void mapcache_new_epoch(struct mapcache_domain *dcache,
 
 static void mapcache_exit(struct mapcache_domain *dcache)
 {
-    spin_unlock(&dcache->lock);
+    if ( dcache )
+        spin_unlock(&dcache->lock);
 }
 
 #define mapcache_l2_entry(e) ((e) >> PAGETABLE_ORDER)
@@ -299,15 +315,25 @@ int mapcache_vcpu_init(struct vcpu *v)
     struct mapcache_domain *dcache;
     struct mapcache *cache;
     unsigned long i;
-    unsigned int ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
-    unsigned int nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
+    unsigned int ents, nr;
 
     if ( !has_mapcache(v) )
         return 0;
 
     cache = vcpu_mapcache(v, &dcache);
-    if ( !cache->inuse )
+    if ( !dcache )
+    {
+        /* Per-vCPU bitmaps are an unsigned long each, in the vCPU itself. */
+        cache->inuse = v->arch.mapcache.inuse;
+        cache->garbage = v->arch.mapcache.garbage;
+        ents = MAPCACHE_PERVCPU_ENTRIES;
+    }
+    else if ( !cache->inuse )
         return 0;
+    else
+        ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
+
+    nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
 
     if ( ents > cache->entries )
     {
@@ -315,13 +341,16 @@ int mapcache_vcpu_init(struct vcpu *v)
         int rc = create_perdomain_mapping(v, MAPCACHE_VIRT_START, ents,
                                           NIL(l1_pgentry_t *), NULL);
 
-        /* Populate bit maps. */
-        if ( !rc )
+        /* Populate the domain-wide bit maps (kept in the per-domain area). */
+        if ( !rc && dcache )
+        {
             rc = create_perdomain_mapping(v, (unsigned long)cache->inuse,
                                           nr, NULL, NIL(struct page_info *));
-        if ( !rc )
-            rc = create_perdomain_mapping(v, (unsigned long)cache->garbage,
-                                          nr, NULL, NIL(struct page_info *));
+            if ( !rc )
+                rc = create_perdomain_mapping(v, (unsigned long)cache->garbage,
+                                              nr, NULL,
+                                              NIL(struct page_info *));
+        }
 
         if ( rc )
             return rc;
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index aebd3e8f45..ee84c57432 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -279,6 +279,8 @@ extern unsigned long xen_phys_start;
 
 /* map_domain_page() map cache. The second per-domain-mapping sub-area. */
 #define MAPCACHE_VCPU_ENTRIES    (CONFIG_PAGING_LEVELS * CONFIG_PAGING_LEVELS)
+/* Single-page slots of a per-vCPU mapcache (vCPU-PT domains). */
+#define MAPCACHE_PERVCPU_ENTRIES 64
 #define MAPCACHE_ENTRIES         (MAX_VIRT_CPUS * MAPCACHE_VCPU_ENTRIES)
 #define MAPCACHE_VIRT_START      PERDOMAIN_VIRT_SLOT(1)
 #define MAPCACHE_VIRT_END        (MAPCACHE_VIRT_START + \
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 45d308407e..7076e38848 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -80,6 +80,12 @@ struct mapcache_vcpu {
         uint32_t      idx;
         uint32_t      refcnt;
     } hash[MAPHASH_ENTRIES];
+
+    /* Accounting of a per-vCPU mapcache (vCPU-PT domains). */
+    struct mapcache cache;
+    /* Backing for cache.{inuse,garbage}. */
+    DECLARE_BITMAP(inuse, MAPCACHE_PERVCPU_ENTRIES);
+    DECLARE_BITMAP(garbage, MAPCACHE_PERVCPU_ENTRIES);
 };
 
 struct mapcache_domain {
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470821.1679672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyQ-0002Ie-Af; Tue, 03 Nov 2026 23:31:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470821.1679672; Tue, 03 Nov 2026 23:31:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyO-00029Z-Eq; Tue, 03 Nov 2026 23:31:24 +0000
Received: by outflank-mailman (input) for mailman id 1470821;
 Tue, 03 Nov 2026 23:30:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxh-0001if-Jj
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxc-0000000Covy-22qa;
 Tue, 03 Nov 2026 23:30:36 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo0-0000000EMFa-3A1t;
 Tue, 03 Nov 2026 23:20:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=lmWRg/5OLo0R/NPywMyA45Uq6cr7VvMb3O4KA5pNTBc=; b=hxD5jd6dH1zu9XMJu3d5HMrRd9
	q++HMQfq0fOpxLNOdCkQR1KaU829Zgm8HmlGa8txftQJkMKSJmy+6ILhfG+xw50/yMIjfTgc0cQ5I
	yJrBhVxbpMwgnqlPK28xDknAHSm6erqNOCi96IvU7Rjm2lQ2kgeoe05YgGUZSujpU2n4=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 22/44] xen/xmalloc: return an emptied region after dropping the pool lock
Date: Tue,  3 Nov 2026 17:13:44 -0500
Message-ID: <20261103-asi-hvm-v6-22-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When a free leaves a whole region of an xmalloc pool empty,
xmem_pool_free() hands the region back through pool->put_mem() with
pool->lock still held.  For the xenheap pool that is
free_xenheap_pages(), which takes the heap lock inside the pool lock
and runs arch_xenheap_pages_free().  On x86 with a sparse directmap
view configured, the latter takes the page out of the sparse view,
at the cost of one to three rounds of TLB-flush IPIs to every CPU,
while every other CPU's sub-page xmalloc() and xfree() waits on the
pool lock.

By then the region is on no free list and no longer counted in the
pool, so nothing else can reach it.  Drop the lock first and return the
region afterwards, as xmem_pool_alloc() already does when it calls
pool->get_mem(), and say at both callbacks that they are called without
the pool lock, so that they keep not relying on it.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
 xen/common/xmalloc_tlsf.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/xen/common/xmalloc_tlsf.c b/xen/common/xmalloc_tlsf.c
index b43219b4af..caf33f1a04 100644
--- a/xen/common/xmalloc_tlsf.c
+++ b/xen/common/xmalloc_tlsf.c
@@ -106,7 +106,10 @@ struct xmem_pool {
     unsigned long used_size;
     unsigned long num_regions;
 
-    /* User provided functions for expanding/shrinking pool */
+    /*
+     * User provided functions for expanding/shrinking pool.  They are
+     * called without the pool lock held, and must not rely on it.
+     */
     xmem_pool_get_memory *get_mem;
     xmem_pool_put_memory *put_mem;
 
@@ -488,17 +491,18 @@ void xmem_pool_free(void *ptr, struct xmem_pool *pool)
 
     if ( (b->prev_hdr == NULL) && ((tmp_b->size & BLOCK_SIZE_MASK) == 0) )
     {
-        pool->put_mem(b);
         pool->num_regions--;
         pool->used_size -= BHDR_OVERHEAD; /* sentinel block header */
-        goto out;
+        spin_unlock(&pool->lock);
+        pool->put_mem(b);
+        return;
     }
 
     INSERT_BLOCK(b, pool, fl, sl);
 
     tmp_b->size |= PREV_FREE;
     tmp_b->prev_hdr = b;
- out:
+
     spin_unlock(&pool->lock);
 }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Tue Nov 03 23:31:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 03 Nov 2026 23:31:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1470822.1679684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyT-0002qF-0k; Tue, 03 Nov 2026 23:31:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1470822.1679684; Tue, 03 Nov 2026 23:31:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xONyQ-0002gQ-UM; Tue, 03 Nov 2026 23:31:26 +0000
Received: by outflank-mailman (input) for mailman id 1470822;
 Tue, 03 Nov 2026 23:30:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <gwd@xenproject.org>) id 1xONxh-0001k2-OQ
 for xen-devel@lists.xenproject.org; Tue, 03 Nov 2026 23:30:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONxb-0000000CotI-34NX;
 Tue, 03 Nov 2026 23:30:35 +0000
Received: from [2607:fb91:4c8c:bd3f:1da5:e92a:c5fb:865a]
 (helo=localhost.localdomain)
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.98.2)
 (envelope-from <gwd@xenproject.org>) id 1xONo4-0000000EMFa-1Ffa;
 Tue, 03 Nov 2026 23:20:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:
	References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From;
	bh=xyRRTvzAZ1uxBpB7gEOaI29dfhB9uSJD02k1XOtgRUc=; b=ml4/9THZCGPDm8R3VmKn92z6ID
	ydbYgOHSK2gWLbJAFp9pugzI1yQNry3IVCqcoLL0nR5/rWy2zluQkmsPqhUe1txxQIMqoEKOhW6we
	j+MChVpg7FY8VFkkIO2WdU2IuKTR2nxkUB75ynmRjLnlM8URa4ERTz1Je3AUx9FYuSUE=;
From: George Dunlap <gwd@xenproject.org>
To: xen-devel@lists.xenproject.org
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH v6 27/44] x86/svm: restore guest debug registers in svm_do_resume()
Date: Tue,  3 Nov 2026 17:13:49 -0500
Message-ID: <20261103-asi-hvm-v6-27-59dbc5ce9615@xenproject.org>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

svm_ctxt_switch_to() restores the guest's debug registers when its DR7
enables any of them, which also updates the VMCB.  Do it in
svm_do_resume() instead, which follows it whenever the vCPU is
scheduled in.

svm_do_resume() also runs when a vCPU keeps running on its pCPU
(continue_running()), without svm_ctxt_switch_to().  Where the guest's
debug registers are already loaded, the restore does nothing:
flag_dr_dirty records that they are, and only svm_save_dr() clears it,
from svm_ctxt_switch_from().

This prepares for moving VMCBs off always-mapped memory:
svm_ctxt_switch_to() runs before write_ptbase(), where the incoming
vCPU's VMCB will not be mapped.

Not yet run with a guest using debug registers.

Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-5-5
Signed-off-by: George Dunlap <gwd@xenproject.org>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

Changes in v4:
- New in this version.
---
 xen/arch/x86/hvm/svm/svm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index b539406f0c..df56245311 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -953,8 +953,6 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
      */
     disable_each_ist(per_cpu(idt, cpu));
 
-    svm_restore_dr(v);
-
     svm_tsc_ratio_load(v);
 
     if ( cpu_has_msr_tsc_aux )
@@ -978,6 +976,8 @@ static void noreturn cf_check svm_do_resume(void)
     bool vcpu_guestmode = false;
     struct vlapic *vlapic = vcpu_vlapic(v);
 
+    svm_restore_dr(v);
+
     if ( nestedhvm_enabled(v->domain) && nestedhvm_vcpu_in_guestmode(v) )
         vcpu_guestmode = 1;
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 01:31:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 01:31:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471091.1679723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOPpu-00070P-Uz; Wed, 04 Nov 2026 01:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471091.1679723; Wed, 04 Nov 2026 01:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOPpu-00070H-RV; Wed, 04 Nov 2026 01:30:46 +0000
Received: by outflank-mailman (input) for mailman id 1471091;
 Wed, 04 Nov 2026 01:30:45 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xOPpt-0006zx-AZ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 01:30:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOPpr-00Chf0-Ko
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:30:43 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aea8a75-e002-0a2a0a5209dd-0a2a450ce0c6-34
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:30:42 +0100
Received: from [52.101.53.15]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aea8ac1-f479-0a2a450c0019-3465350fd93f-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:30:42 +0100
Received: from CH5PR05CA0016.namprd05.prod.outlook.com (2603:10b6:610:1f0::21)
 by CH1PR12MB9600.namprd12.prod.outlook.com (2603:10b6:610:2ae::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 01:30:35 +0000
Received: from CH3PEPF00000010.namprd04.prod.outlook.com
 (2603:10b6:610:1f0:cafe::a2) by CH5PR05CA0016.outlook.office365.com
 (2603:10b6:610:1f0::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Wed, 4
 Nov 2026 01:30:35 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CH3PEPF00000010.mail.protection.outlook.com (10.167.244.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 01:30:34 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Tue, 3 Nov
 2026 19:30:34 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Tue, 3 Nov
 2026 19:30:34 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Tue, 3 Nov 2026 19:30:33 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=WgJJvbUANbTAy4+TSZzaKbVBdTGvE/9DLfak1GD6iKQ6vx1tJwx3/NnYUT4tlHO8bgtu4lSBlRa/R97+HQ+/0b5fU1IzJ163g2bO8+/le+F7Alz6gCMVVWYKi7Ie0Go4PxYsmfupsO3y8cmjguwPpD/CbLkjEURas1C5DpgKUMqrQUVIpQPEmtoe6drV0B1O0Zk9vC2CmJPAycc3ZNUNj6/shxCSQnX5dXrS0AGpKDUgxSplDMz22qEop9yEvBS7bdQ6epao1PLVSLyc1PYf0x1cBmICzBuQ+S64uzXUUSx5c9VteyQHthjigpHHTWpFk+uAjClaUN+QKMX+TsdOIw==
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=/4KkTE7RABblzwjhCGZMtm25YJM2v5qVGKmwGQAa0Hk=;
 b=uvdp2/sXe7D4iirwyUcbNVuBam0bz+m9e1nfIBp4PePCTlhnIinMvQhnF+be+CywYaN2wtr3V/cdO9i/yWeflyPUtahABpFjilsCm8gtPSldC06l6YXaGkDNh6PufTVxYJ0W8KXzhexGNeiMl4D7a9VRQseo1cCV0vW4yY0iUbUzCzvXaIfZ2it6YUfElLQuSaVosNLeZfS/z5ywjYQn55QgoKKRQ+c1P2vz9JA7etNdWVGOblxZJ2CgFU8MX/Or/bK7CMq0Z4JrY5YsSFEnMefVOGuCgINpYCw3TJMMWB3LJqaH28n47Sorw2MychJoR+M0yZI+sJYn7krRmvU2Wg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass
 (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;
 dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/4KkTE7RABblzwjhCGZMtm25YJM2v5qVGKmwGQAa0Hk=;
 b=L6hvkqOujIbeHLqnz5TrQTkpnW23XDvGS3MmCgON+ckYs1LYVqB9MiXqZI6sI3pxwstXqp4B51Ac2h0J2B6CbKkQWHy2XpJhAUJeusCPqKOFhjCzxx226Hz3YfmFbFs3fXSLFLWdw5kq/4Exy7xkbw6QEWVXFB4qmQPNDIUm1ss=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Jason Andryuk <jason.andryuk@amd.com>
To: Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
	<x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, Mario Limonciello
	<mario.limonciello@amd.com>, Yazen Ghannam <yazen.ghannam@amd.com>
CC: <xen-devel@lists.xenproject.org>, Ariadne Conill <ariadne@ariadne.space>,
	Sean Christopherson <seanjc@google.com>, Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>, <stable@vger.kernel.org>, Ingo Molnar
	<mingo@kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
Date: Tue, 3 Nov 2026 20:30:25 -0500
Message-ID: <20261104013026.185392-1-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000010:EE_|CH1PR12MB9600:EE_
X-MS-Office365-Filtering-Correlation-Id: b4ef121e-7884-49d3-90fd-08df3a13394f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700016|23010399003|260925022911599003|18002099003|260925021311599003|260925021911599003|261102123227099003|56012099006|10067099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|5023799004|11063799006|261028144727099003|261026121527099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	jswD/zhYDvaAX6T7oc88dlTbW69uUHve8rVrdA/duX9Rk8HzotcVPQ/2mztIehNEJykfecovpzNMNm66evQX2RqYDz5v70ekyhu0tvs7n77rhaK5b+uK+PSJci5PFL7x6K+5tD+abqAk+SVnP6FqKOCbkD1LsnQxO09R3/5nCnkb3gzISrJdhsMxNDFU71XalucSirXoYdVBcGWrIun4/PyUKbXhQRjtQ3PfJeGQ8pw5sAUIRpVY7hBh0q67WTCiyEPNQUf7ektlhIjrusKytZ0DvqbyiVJEYDszQ+A/0zK/Can112A8+vK/gFoiMt3+8gUwIJH6omYsRd1gIO+mhMFEkkef+BTZKseQAR8mJcqn6x42atOK5B4W6z4zIe31LY7s4JtMK6XlnvAQEpdpX6ducO7f+g9g/jrxfNY/ctuwgKO32NZNAfdfWxDaIaJllkOBjS+054yBauFRQ3cWQGuRDKuvVkqxVm5lAwXYblBFhbvW/NVfp3r4QbT1vfIC8pC4Hcgg8lIXQMq1ySQKmXwVhWsQXsFAcnXQBSUvq2/r68qH3kWOj/oOsUUob1wdaUBxaN3XDhmBov9Lce6q/M4NSqFyNVIBvGHiT5ybFyMLUmbJkTN1V3XsIMuASIcNMGFRxgr8zc9Cy0FEETAJiIO9ggH4jMMYgZ9Aui1IWRe1U06mfe1WtAqJWBO/xvYt3q56rsoklb2+w1GPig7K1w==
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)(376014)(1800799024)(36860700016)(23010399003)(260925022911599003)(18002099003)(260925021311599003)(260925021911599003)(261102123227099003)(56012099006)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(5023799004)(11063799006)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	OjS/bccuQx9CI8q/cnb9g62Faud4TSmnaxBwSmUzvSC1q/TMf1wZ4OkFAnyn72KPYCJHVArTRUm+RMzjqvgjkvyIpnuYMggmWPOhHB0JhVk6NwzpB/3zNGu2A9Ev/x6DF6JGUQRJ/VAiFrmXFu7UquRlE//OMbPGBlnP3Xox25x7rl6jLowngiIIyZnXq53zWUIZwOsKyTCuxHWz8JXzEsBfL63gGCNX6MYHvDcQO45MR31O0ppGlIhi+RDfLer6n3sZsfJ8vX9czrQXOoRd7lbJcbUMEoRVtBjkjrsMsqjkng77m5OKocDUzhqjQxkEVv9qck0XKJGcIgvMMnb4AO+1e9hwu977rk7jJwud3rlZAbM8XZvShvJHZgwkv2r2kU/tWYIE0lVP6SeemlVwVTJU5XvlZScZg+ea9VR/PoYpVDbL5pNhfHsL7PCMxWZ5
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 01:30:34.9625
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b4ef121e-7884-49d3-90fd-08df3a13394f
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:
	CH3PEPF00000010.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR12MB9600
X-purgate-ID: tlsNG-d25034/1793755842-018C5A5B-A1A8B7B3/0/0
X-purgate-type: clean
X-purgate-size: 2066

print_s5_reset_status_mmio() expects to read FCH MMIO on baremetal.  VMs
don't have emulated FCH registers, so there is nothing to check.  Add an
early exit when running on a hypervisor.

The real motivation is Xen PV domUs can't boot on Zen CPUs.  PV domUs
PTE contain system physical addresses - they don't have concept of guest
physical addresses.  domUs can only map physical addresses they are
assigned, so a domU fails to map the FCH MMIO addresses.  However
set_pte() does not return failure, so ioremap() returns a pointer while
the PTEs are unpopulated.  print_s5_reset_status_mmio() faults when
reading through the pointer, breaking the boot.  This change fixes Xen
PV domUs booting on Zen CPUs.

dom0 can map the FCH MMIO, but it has X86_FEATURE_HYPERVISOR set.  With
this change, it no longer prints the reset reason.

Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
Cc: stable@vger.kernel.org
Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
dom0 could work, but that would require a xen_initial_domain() check.

I've wondered about a different approach:  We can't directly check for a
device for the FCH_PM_BASE memory, but maybe we could check for a PCI
ISA Bridge with PCI_VENDOR_ID_AMD.  That might be close enough to
indicate real hardware?  But it would still be a heuristic, so I'm not
sure how much better that would be.
---
 arch/x86/kernel/cpu/amd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 40463bad1078..580ccc2ce5fc 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -1357,7 +1357,8 @@ static __init int print_s5_reset_status_mmio(void)
 	u32 value;
 	int i;
 
-	if (!cpu_feature_enabled(X86_FEATURE_ZEN))
+	if (!cpu_feature_enabled(X86_FEATURE_ZEN) ||
+	    cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
 		return 0;
 
 	addr = ioremap(FCH_PM_BASE + FCH_PM_S5_RESET_STATUS, sizeof(value));
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 01:58:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 01:58:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471109.1679733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQGi-0003lz-3W; Wed, 04 Nov 2026 01:58:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471109.1679733; Wed, 04 Nov 2026 01:58:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQGh-0003ls-Ve; Wed, 04 Nov 2026 01:58:27 +0000
Received: by outflank-mailman (input) for mailman id 1471109;
 Wed, 04 Nov 2026 01:58:26 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xOQGg-0003lZ-DY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 01:58:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOQGf-00ALSr-P3
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:58:25 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aea9132-e002-0a2a0a5209dd-0a2a4504e07a-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:58:25 +0100
Received: from [52.101.83.80]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aea9141-b57f-0a2a45040019-346553508bc5-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:58:25 +0100
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com (2603:10a6:803:113::29)
 by DBAPR03MB6389.eurprd03.prod.outlook.com (2603:10a6:10:195::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 01:58:22 +0000
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48]) by VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48%4]) with mapi id 15.21.0569.011; Wed, 4 Nov 2026
 01:58:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=v3QNo3xjTqIAdUWITT1zKa6DbVbdTVCcyEXuanqlTLq/vdSVE5WTnof7OZ0zPxpkRgmpJevyHFqWjH2KEUKYqXhjpjffTFCyAq3yCc0KFCdG3yhvRpe0tPMzmgB5ynFtCNKXbaOGv1tAkoDwMysGejFFhL0lT2kvz8WvaFoukLl1IRCg0GOHNY38GDjml7EBGViPVeD86gkDEd6iZjqUPi1ib6v4gqZjRsEKNWBp4DZ6yY1pD8fLTF5zF1UCM58NNZ/IJWc8+pDaMs8FyCTeBiFX2emyo1lqWTpMhQJh7GNGyNoFlIix1Ar2Yym8R5fKp41nSSerKT1VsCo58irx2Q==
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=bdzA7F00btTGPUo9AWqWqiTteHQNVVO/SIwforPfgDw=;
 b=lBf+CtEMAbQtmH4abLoogJ2Dh9MtgIBQ/m3Ir1uDhqDuL/so8E4xYt6/xcMD+UuxTwe9r65eg1wP2rOc1BUsKrbRubycWoucuyRLvnqAY0UNeCShs6wPi/pbEMr/5YGdkqHCH4j4yACCU9jcL06+9A8LBlj+k6+YGQcumqqltceZtteiKymhICQgx4kdIfMQeCNdiEfhWBRgLEQ3nPBA8Xqqyc9aznl2E8Dn081VOEX+PA8juX8S5y5ifbRu8kPlbM5zD+8rFqAp1ljfxtJQZFb11ZJGh6jiHvBkXNTtZX/qUxbT7/fYoIBuhqAZ+1JJ8Xm9pg1nAOBhnuG68TvrfQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bdzA7F00btTGPUo9AWqWqiTteHQNVVO/SIwforPfgDw=;
 b=ivo8BZ5F/6ofv8wrkML65CnrxxVCJGUfBUwABdl6Y6uf9Nte+DdYnxV29ZP7gKjIrqEwc0TG3WxRukl7p/Z9wV/yr3ocp+YxE1H1uCm1nX+l4G/KFVJbyIzYJLqbn0FXGxZIYjmoN2I1wVKJPZxNWh9LHAIEi0mOOTGvTCPdGHu/IH9yYRqYzt4Ncjzy9fxy8qBEm5CSWJI7DhyB+Tl1nvAShWjQDNbqi3TpPeX+Oh2JJuMF3mObnIrHdUblChb019mEF1DsdFPFEh4EOIBHrLnIxgO0T3af+vqlIxJqHkH4iP4gtN+FUN1IHhQwwHmFI7+qxOLFRE5rFc241Xa7Ow==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Michal Orzel <michal.orzel@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand
 Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH] xen/arm: domain_build.c: Use hwdom instead of dom0 where
 applicable
Thread-Topic: [PATCH] xen/arm: domain_build.c: Use hwdom instead of dom0 where
 applicable
Thread-Index: AQHda7Lnlb+EVt5zn0Gb7X+NgRmsnA==
Date: Wed, 4 Nov 2026 01:58:21 +0000
Message-ID: <87jymtnyro.fsf@epam.com>
References: <20261103164624.195576-1-michal.orzel@amd.com>
In-Reply-To: <20261103164624.195576-1-michal.orzel@amd.com> (Michal Orzel's
	message of "Tue, 3 Nov 2026 17:46:24 +0100")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: VE1PR03MB6078:EE_|DBAPR03MB6389:EE_
x-ms-office365-filtering-correlation-id: 13fd5216-2ae3-4f86-d45b-08df3a171afe
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|366016|42112799006|38070700021|261021123027099003|261022115727099003|261022105027099003|56012099006|11063799006|261028144727099003|261026121527099003|261009223027099003|261021121427099003|261021135927099003|261026140227099003|261022075727099003|10067099003|22082099003|261102123227099003|18002099003;
x-microsoft-antispam-message-info:
 JqN7lMWaoWSrRnoKzmClsrRGaKP4H8uv2KwGwswBY1ct/YC+ACh0fTHrnclDkOiNgRM77YkAhxtyv0SaLY8sjNfXgqcuVEnUmM7PziYeCtYjn28ne7/mQnJA0/bescTTjqqe4r6dwVfxAzz7WxXLrPBdsIKsEo3jzXjQwLluj/q4R8NK9SO452hTCV7b9Z68qldRNxMnP7yqKeE+bLaRHx8ys3lLJAJJv4DiMsgg9TdagXnYSV1wGu1FBEGzM/uylPdSn8TonnJqAzZS5bS/XX3JY/LFl+ETcgQTYOv+0RkQpuE/8Gzjr382vFWMITsaqcqy2mgHYqgqFIEh+9KLCqQCWoAdVhejyMiMQ7y/34G2MHdyA8Yn0ZNbiDFlD65NM1NWY3+tRm00DB6mWbI00tvCUd6JsRJaC8h7iRvm7RObCOvK+iSe4/OQ8EIU5wZDjGwvRmYhqIFmMQYPd/cXKbX2DZqIhUBgCX2/p3CRABodTQvd6Hx2uCKwk6AfjwLT9GxKzti9h/DER0oZRegjezHN7X5R1tWtiJXT0l/BDq5BKrgGx4lQ9oP7DEkckMvi7fskWvDgyRBFU6kYp6wK1C0uW8PiLIbMR96NHLI2DWfDlmzZ+XhiXGbcI8zm0MxPGqLfhOW4u1Q87TeLcwHXCVwh7G+Ymr2ALVnBMlA1IXLtt0U9M0Skc5WH2ll097PVt/X82GQncVP6PYR3mFSPJ2DSa/98wGmAmwgZq5D+ADU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR03MB6078.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(42112799006)(38070700021)(261021123027099003)(261022115727099003)(261022105027099003)(56012099006)(11063799006)(261028144727099003)(261026121527099003)(261009223027099003)(261021121427099003)(261021135927099003)(261026140227099003)(261022075727099003)(10067099003)(22082099003)(261102123227099003)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?5kE7XC6xs69hxMl4MU55/U9ELNRIb5ZXelidPZVgZkJ4u9vJ4nbFbsasPi?=
 =?iso-8859-1?Q?94qaJX+qxSqKrZZNRTqnVfdL3Aey/996TG1v0VoH8ErD03IbUn7rmXtxqD?=
 =?iso-8859-1?Q?ViaxClhRSesHAqO1EorxISNxCX9+UFkQJw4Dr8ayp/xzWDxxJNMoePPiDL?=
 =?iso-8859-1?Q?OkVIR7TEUCrObLHazTRXA+JwDmWjqaewDOZtuyIqpne/FQDRX6CAD8QUbA?=
 =?iso-8859-1?Q?aqmuRN2NsqrrEdVu2Hi3YC14/JUdOHOjw7ymhNb3rJ/d2yEJ9ve1CIXtP4?=
 =?iso-8859-1?Q?yies482+BUUbRcfeXPXRADVB4TT6R7XAy19cOAXtZzPqAseUGEm90t+Cy1?=
 =?iso-8859-1?Q?dyK2zEoLNTDrpSqGDavzF0F5kPfCPAi1uMjbTuPStp4gFXiQpHy/PvJazz?=
 =?iso-8859-1?Q?bb5qh5MJOWKCVoUZtbEJRNqy6iE28+Q8o1hhx4eXkSxYXZ54dH4LWMTzOs?=
 =?iso-8859-1?Q?E3m3HZWc4Flk5xW5OvJXeEb4ri/XUdhS0B/ttRKehMUbH0CpGb8uNV4Vjw?=
 =?iso-8859-1?Q?/nDmUmIyJYrM/JWy+29Y1AbcBHfKFNwAjenHQdWn5RG9Gvpsj+3BCtuHEz?=
 =?iso-8859-1?Q?sDmtlPMy81ec7DC1eVPy8ATI3T8X/FdGA0Vm/vpNPlvDNBwSm1FOgH+JhN?=
 =?iso-8859-1?Q?2YPWICIhbokn0CAgPMNfZi7LatWCj+Kkks9VtZpVbdyzlXFoU1xrLsEGBu?=
 =?iso-8859-1?Q?oFPjOI61YEb+pRh7N/cxlKbPqqMxmGGr/uRv43ystzJvkE+Cb8WM2+6VXv?=
 =?iso-8859-1?Q?8hIFhISouU2PTnQfwu92U5KvWFrUizEMtB0qNtk4sWW8eV1od09J6PbMTY?=
 =?iso-8859-1?Q?WVgfggd/AkoGrEOV6jLUDc2M1MwmgENdXTHyHUCy1mWyFOwiBbi5hTdNSO?=
 =?iso-8859-1?Q?DKGUjbTn2VOLBlcSlq6/YS8KlxkdfSgpbODVH7kDtaQsNPOT2dMSDL7kWl?=
 =?iso-8859-1?Q?GrXfrtipi99G8AlMldTqWqenY95P/6iLK4V4FCwdTfRxHg6M3TCNul2PQx?=
 =?iso-8859-1?Q?8Sf0sqfwuMbUpDMS3TSPJQ7pFMvtMfZw4Af2GKzUkMhs6szSVQHpWTaP4Q?=
 =?iso-8859-1?Q?powzGj7y3E5IEPJK6/VzakU4KeqZ643YT4KVxyQ+2JlNcB7OhvA4riuyCd?=
 =?iso-8859-1?Q?JA3L16BbqD1RkOIBZP14YzTZ2pxIeOAA7n9VnDN+2V2XTbuI7uVNIoxOi/?=
 =?iso-8859-1?Q?HGbPuv7B8tEMhlfLzq14UptOFQJqxZNWFiluS6dRF4Jq8i0IU9s6HCtRMh?=
 =?iso-8859-1?Q?am7rMAAYq33pOBZak7/R4Oy5tL3Z/7XfAQld8aFHSZqBIU8OlBcJ09pLbm?=
 =?iso-8859-1?Q?ziVCwxxgFvnNsF50YRmulAGvW4E8HL8kePFm6+tGzRQHzxJzqBs5GPAMF0?=
 =?iso-8859-1?Q?bFNz6TQbNgZitYEL/vTPUU0D/SrIcl5Nl79YjewvAA6inn8D2TQtPTjJWq?=
 =?iso-8859-1?Q?WAj32/3D4GXdgL4vDqLsMbl/WAQg+M1tPOvBaRzO93z8EeTpXXdsJqXOgv?=
 =?iso-8859-1?Q?jN7IwhNweZMeduYYs6RoNUJmq48Rb0oDJlGZYq60iX/Dvy8JnKo6y13EUk?=
 =?iso-8859-1?Q?Cst88U8ZbGEaK4dcBcC1FJPo8PStJKL7HYVn3N4bylrIuejRJHUIEa63fs?=
 =?iso-8859-1?Q?pS0mEx/krmrSH6SMP9aWBvMdL6kRq1+H1OXcM1GMd8yplqn/jGEAzkyqG3?=
 =?iso-8859-1?Q?HDV8P6KSuVXD6TpM3pjVgK+M71aON+UyeQIzA0ZncBWn7NT4EB7o409wiM?=
 =?iso-8859-1?Q?raXG08jORoU2kodtp7NknsJPESa3jpwkO55swYZarj1/u3fPmbL5xZ7Hu8?=
 =?iso-8859-1?Q?lr9E1TePG3o7cBsTjn4SfQTimRC9jbg=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: VE1PR03MB6078.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 13fd5216-2ae3-4f86-d45b-08df3a171afe
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 01:58:22.0910
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: KSilJWXl0v/p5sIHjv28EHbTpefSdZCgh8IEcfLmoMcbkMYKhkxTqC2xBFCIt3qwrCranM7Axza38rrZWVGor7fMfHIoHbzrJkprHpZMcBw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR03MB6389
X-purgate-ID: tlsNG-ebf023/1793757505-585C7B50-98E41AD2/0/0
X-purgate-type: clean
X-purgate-size: 8672

Hi Michal,

Michal Orzel <michal.orzel@amd.com> writes:

> Since commit 52cb53f1816a ("xen/arm: dom0less hwdom construction"),
> construct_hwdom() and the helpers it relies on (allocate_memory_11(),
> prepare_dtb_hwdom(), handle_node(), find_gnttab_region(), etc.) are used
> not only for the regular dom0 but also for a hardware domain created by
> dom0less. Many comments and names on this path still refer to dom0, which
> is misleading.
>
> No functional change other than the panic messages.
>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

> ---
> This is just the cleanup for one file with the most number of occurences =
that
> I decided to do in the free time after reviewing latest DOM0_BOOT changes=
. Other
> files also need such cleanup on Arm.
> ---
>  xen/arch/arm/domain_build.c | 44 ++++++++++++++++++-------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 1ee1f1f6a733..606e85818eb4 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -100,7 +100,7 @@ int __init parse_arch_dom0_param(const char *s, const=
 char *e)
>  #endif
> =20
>  /*
> - * Amount of extra space required to dom0's device tree. This covers
> + * Amount of extra space required to hwdom's device tree. This covers
>   * nodes generated by Xen, which are not directly copied from the host D=
TB.
>   * It is calculated as:
>   *  - Space for /hypervisor node (128 bytes).
> @@ -111,15 +111,15 @@ int __init parse_arch_dom0_param(const char *s, con=
st char *e)
>   *    plus the appendage to the main /memory node (NR_SHMEM_BANKS * (160=
 + 16)
>   *    bytes). This overhead is dropped when CONFIG_STATIC_SHM is disable=
d.
>   */
> -#define DOM0_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
> -                             (NR_MEM_BANKS * 16) +                    \
> -                             (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
> -                              (NR_SHMEM_BANKS * (160 + 16)) : 0))
> +#define HWDOM_FDT_EXTRA_SIZE (128 + sizeof(struct fdt_reserve_entry) + \
> +                              (NR_MEM_BANKS * 16) +                    \
> +                              (IS_ENABLED(CONFIG_STATIC_SHM) ?         \
> +                               (NR_SHMEM_BANKS * (160 + 16)) : 0))
> =20
>  paddr_t __init hwdom_get_fdt_alloc_size(void)
>  {
>      if ( acpi_disabled )
> -        return fdt_totalsize(device_tree_flattened) + DOM0_FDT_EXTRA_SIZ=
E;
> +        return fdt_totalsize(device_tree_flattened) + HWDOM_FDT_EXTRA_SI=
ZE;
> =20
>      return ACPI_DOM0_FDT_MIN_SIZE;
>  }
> @@ -175,7 +175,7 @@ static bool __init insert_11_bank(struct domain *d,
> =20
>      res =3D guest_physmap_add_page(d, _gfn(mfn_x(smfn)), smfn, order);
>      if ( res )
> -        panic("Failed map pages to DOM0: %d\n", res);
> +        panic("Failed map pages to %pd: %d\n", d, res);
> =20
>      kinfo->unassigned_mem -=3D size;
> =20
> @@ -245,19 +245,19 @@ fail:
>   *
>   * Requirements:
>   *
> - * 1. The dom0 kernel should be loaded within the first 128MB of RAM. Th=
is
> + * 1. The hwdom kernel should be loaded within the first 128MB of RAM. T=
his
>   *    is necessary at least for Linux zImage kernels, which are all we
>   *    support today.
> - * 2. We want to put the dom0 kernel, ramdisk and DTB in the same
> + * 2. We want to put the hwdom kernel, ramdisk and DTB in the same
>   *    bank. Partly this is just easier for us to deal with, but also
>   *    the ramdisk and DTB must be placed within a certain proximity of
>   *    the kernel within RAM.
> - * 3. For dom0 we want to place as much of the RAM as we reasonably can
> + * 3. For hwdom we want to place as much of the RAM as we reasonably can
>   *    below 4GB, so that it can be used by non-LPAE enabled kernels (32-=
bit).
> - * 4. Some devices assigned to dom0 can only do 32-bit DMA access or
> + * 4. Some devices assigned to hwdom can only do 32-bit DMA access or
>   *    even be more restricted. We want to allocate as much of the RAM
>   *    as we reasonably can that can be accessed from all the devices..
> - * 5. For 32-bit dom0 the kernel must be located below 4GB.
> + * 5. For 32-bit hwdom the kernel must be located below 4GB.
>   * 6. We want to have a few largers banks rather than many smaller ones.
>   *
>   * For the first two requirements we need to make sure that the lowest
> @@ -293,7 +293,7 @@ fail:
>   * to be allocated in the low mem. Then for subsequent allocation, we
>   * initially allocate memory only from low mem. Once that runs out out
>   * (as described above) we allow higher allocations and continue until
> - * that runs out (or we have allocated sufficient dom0 memory).
> + * that runs out (or we have allocated sufficient hwdom memory).
>   */
>  static void __init allocate_memory_11(struct domain *d,
>                                        struct kernel_info *kinfo)
> @@ -311,7 +311,7 @@ static void __init allocate_memory_11(struct domain *=
d,
>      unsigned int bits;
> =20
>      /*
> -     * TODO: Implement memory bank allocation when DOM0 is not direct
> +     * TODO: Implement memory bank allocation when hwdom is not direct
>       * mapped
>       */
>      BUG_ON(!is_domain_direct_mapped(d));
> @@ -409,8 +409,8 @@ static void __init allocate_memory_11(struct domain *=
d,
> =20
>      if ( kinfo->unassigned_mem )
>          /* Don't want format this as PRIpaddr (16 digit hex) */
> -        panic("Failed to allocate requested dom0 memory. %ldMB unallocat=
ed\n",
> -              (unsigned long)kinfo->unassigned_mem >> 20);
> +        panic("Failed to allocate requested %pd memory. %ldMB unallocate=
d\n",
> +              d, (unsigned long)kinfo->unassigned_mem >> 20);
> =20
>      for( i =3D 0; i < mem->nr_banks; i++ )
>      {
> @@ -516,7 +516,7 @@ static int __init write_properties(struct domain *d, =
struct kernel_info *kinfo,
>           * * remove bootargs, linux,uefi-system-table,
>           *   linux,uefi-mmap-start, linux,uefi-mmap-size,
>           *   linux,uefi-mmap-desc-size, and linux,uefi-mmap-desc-ver
> -         *   (since EFI boot is not currently supported in dom0).
> +         *   (since EFI boot is not currently supported in hwdom).
>           */
>          if ( dt_node_path_is_equal(node, "/chosen") )
>          {
> @@ -1544,7 +1544,7 @@ static int __init handle_node(struct domain *d, str=
uct kernel_info *kinfo,
> =20
>      /*
>       * Even if the IOMMU device is not used by Xen, it should not be
> -     * passthrough to DOM0
> +     * passthrough to hwdom.
>       */
>      if ( device_get_class(node) =3D=3D DEVICE_IOMMU )
>      {
> @@ -1695,7 +1695,7 @@ static int __init prepare_dtb_hwdom(struct domain *=
d, struct kernel_info *kinfo)
>      kinfo->phandle_intc =3D dt_interrupt_controller->phandle;
>      fdt =3D device_tree_flattened;
> =20
> -    new_size =3D fdt_totalsize(fdt) + DOM0_FDT_EXTRA_SIZE;
> +    new_size =3D fdt_totalsize(fdt) + HWDOM_FDT_EXTRA_SIZE;
>      kinfo->fdt =3D xmalloc_bytes(new_size);
>      if ( kinfo->fdt =3D=3D NULL )
>          return -ENOMEM;
> @@ -1764,7 +1764,7 @@ static void __init find_gnttab_region(struct domain=
 *d,
>          gnttab_resource_max_frames(d, XENMEM_resource_grant_table_id_sha=
red);
> =20
>      /*
> -     * The region used by Xen on the memory will never be mapped in DOM0
> +     * The region used by Xen on the memory will never be mapped in hwdo=
m
>       * memory layout. Therefore it can be used for the grant table.
>       *
>       * Only use the text section as it's always present and will contain
> @@ -1776,7 +1776,7 @@ static void __init find_gnttab_region(struct domain=
 *d,
> =20
>  #ifdef CONFIG_ARM_32
>      /*
> -     * The gnttab region must be under 4GB in order to work with DOM0
> +     * The gnttab region must be under 4GB in order to work with hwdom
>       * using short page table.
>       * In practice it's always the case because Xen is always located
>       * below 4GB, but be safe.
> @@ -1941,7 +1941,7 @@ int __init construct_hwdom(struct kernel_info *kinf=
o,
>              return rc;
>      }
> =20
> -    /* Map extra GIC MMIO, irqs and other hw stuffs to dom0. */
> +    /* Map extra GIC MMIO, irqs and other hw stuffs to hwdom */
>      rc =3D gic_map_hwdom_extra_mappings(d);
>      if ( rc < 0 )
>          return rc;

--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 02:15:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 02:15:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471121.1679740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQXI-0008I1-EO; Wed, 04 Nov 2026 02:15:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471121.1679740; Wed, 04 Nov 2026 02:15:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQXI-0008Hu-BE; Wed, 04 Nov 2026 02:15:36 +0000
Received: by outflank-mailman (input) for mailman id 1471121;
 Wed, 04 Nov 2026 02:15:35 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vulab@iscas.ac.cn>) id 1xOQXH-0008Ho-2U
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:15:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOQXF-00CluU-UN
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 03:15:33 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vulab@iscas.ac.cn>)
 id 6aea951b-2eae-0a2a0a5409dd-0a2a450b8334-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:15:32 +0100
Received: from [159.226.251.21] (helo=cstnet.cn)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <vulab@iscas.ac.cn>)
 id 6aea9541-b7e8-0a2a450b0019-9fe2fb15d4ea-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:15:31 +0100
Received: from dfae2b116770.home.arpa (unknown [36.110.52.2])
 by APP-01 (Coremail) with SMTP id qwCowABHcPpAlepq_Xc+AA--.41911S2;
 Wed, 04 Nov 2026 10:15:28 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Wentao Liang <vulab@iscas.ac.cn>
To: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org
Subject: [PATCH] xen/pciback: drop the device reference if the export fails
Date: Wed,  4 Nov 2026 02:15:37 +0000
Message-Id: <20261104021537.1468780-1-vulab@iscas.ac.cn>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:qwCowABHcPpAlepq_Xc+AA--.41911S2
X-Coremail-Antispam: 1UD129KBjvJXoWxGr4kXry7Kr47Gr1rKF18Grg_yoW5uF1Upa
	yftFW5ArWkGrZrKwnxXF1UWa4Ykw4Sv34fCryxA3y09395XayxKF95Ar1jga1xC3y8uF1a
	q3srJr48Wr4UAaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUUkqb7Iv0xC_Kw4lb4IE77IF4wAFc2x0x2IEx4CE42xK8VAvwI8I
	cIk0rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2
	AK021l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v2
	6r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14
	v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xf
	McIj6xIIjxv20xvE14v26rWY6Fy7McIj6I8E87Iv67AKxVW8Jr0_Cr1UMcvjeVCFs4IE7x
	kEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x0EwIxGrwCF04k20xvE74AGY7Cv
	6cx26r48ZrWUJr1UMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr
	4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxG
	rwCI42IY6xIIjxv20xvE14v26F1j6w1UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr
	1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJwCI42IY
	6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7IU5EQ6tUUUUU==
X-Originating-IP: [36.110.52.2]
X-CM-SenderInfo: pyxotu46lvutnvoduhdfq/1tbiBgIBA2rqY4K8dgAAst
X-purgate-ID: tlsNG-42698a/1793758532-AB6D29EA-BEA134A8/0/0
X-purgate-type: clean
X-purgate-size: 3344

xen_pcibk_export_device() takes a pcistub_device reference through
pcistub_get_pci_dev_by_slot().  On success xen_pcibk_add_pci_dev()
stores the device on the backend's device list and the reference is
released later by xen_pcibk_release_devices().

When the add fails before the device was queued -- the list entry
allocation fails, or for the vpci backend the device is a bridge or no
virtual slot is free -- the reference is never dropped.  psdev->pdev
then keeps pointing at the pdev that free_pdev() frees, and the device
can never be exported to a guest again because
pcistub_device_get_pci_dev() rejects a psdev that already has an owner.

Drop the reference on these paths, taking the device lock which
pcistub_put_pci_dev() requires.  Whether the device was queued is
checked with the coordinates the frontend sees, obtained through
xen_pcibk_get_pcifront_dev(), because the vpci backend hides the real
topology behind a single virtual bus.  The reference is kept when the
failure came from the publish callback, which runs after
list_add_tail() and is undone by xen_pcibk_release_devices().

Fixes: 30edc14bf39a ("xen/pciback: xen pci backend driver.")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/xen/xen-pciback/xenbus.c | 33 +++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/xen/xen-pciback/xenbus.c b/drivers/xen/xen-pciback/xenbus.c
index b34785ba72e1..07e89d4593bb 100644
--- a/drivers/xen/xen-pciback/xenbus.c
+++ b/drivers/xen/xen-pciback/xenbus.c
@@ -223,6 +223,22 @@ static int xen_pcibk_publish_pci_dev(struct xen_pcibk_device *pdev,
 	return err;
 }
 
+/* Is @dev on the device list of the backend behind @pdev? */
+static bool xen_pcibk_dev_is_exported(struct xen_pcibk_device *pdev,
+				      struct pci_dev *dev)
+{
+	unsigned int domain, bus, devfn;
+
+	/*
+	 * The lists are keyed on the coordinates the frontend sees, which
+	 * xen_pcibk_get_pcifront_dev() reports for @dev.
+	 */
+	if (!xen_pcibk_get_pcifront_dev(dev, pdev, &domain, &bus, &devfn))
+		return false;
+
+	return xen_pcibk_get_pci_dev(pdev, domain, bus, devfn) == dev;
+}
+
 static int xen_pcibk_export_device(struct xen_pcibk_device *pdev,
 				 int domain, int bus, int slot, int func,
 				 int devid)
@@ -246,8 +262,23 @@ static int xen_pcibk_export_device(struct xen_pcibk_device *pdev,
 
 	err = xen_pcibk_add_pci_dev(pdev, dev, devid,
 				    xen_pcibk_publish_pci_dev);
-	if (err)
+	if (err) {
+		/*
+		 * The reference taken above is only handed over once the
+		 * device is queued on the backend's device list.  Failures
+		 * before that (no entry, bridge on the vpci bus, no free
+		 * virtual slot) have to drop it here, otherwise the device
+		 * stays pinned to a pdev that is about to be freed.  A
+		 * failing publish callback comes after the queueing and is
+		 * undone by xen_pcibk_release_devices().
+		 */
+		if (!xen_pcibk_dev_is_exported(pdev, dev)) {
+			device_lock(&dev->dev);
+			pcistub_put_pci_dev(dev);
+			device_unlock(&dev->dev);
+		}
 		goto out;
+	}
 
 	dev_info(&dev->dev, "registering for %d\n", pdev->xdev->otherend_id);
 	if (xen_register_device_domain_owner(dev,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 02:18:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 02:18:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471134.1679750 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQaL-0000Tm-Rl; Wed, 04 Nov 2026 02:18:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471134.1679750; Wed, 04 Nov 2026 02:18:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOQaL-0000Tf-OB; Wed, 04 Nov 2026 02:18:45 +0000
Received: by outflank-mailman (input) for mailman id 1471134;
 Wed, 04 Nov 2026 02:18:44 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <vulab@iscas.ac.cn>) id 1xOQaK-0000TX-Rx
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:18:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOQaK-008wNy-8z
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 03:18:44 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <vulab@iscas.ac.cn>)
 id 6aea95db-2eae-0a2a0a5409dd-0a2a4508b88e-34
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:18:42 +0100
Received: from [159.226.251.21] (helo=cstnet.cn)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <vulab@iscas.ac.cn>)
 id 6aea954b-f659-0a2a45080019-9fe2fb15de00-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:15:42 +0100
Received: from dfae2b116770.home.arpa (unknown [36.110.52.2])
 by APP-01 (Coremail) with SMTP id qwCowAAXP_lLlepqgHg+AA--.9597S2;
 Wed, 04 Nov 2026 10:15:39 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Wentao Liang <vulab@iscas.ac.cn>
To: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org
Subject: [PATCH] xen/balloon: drop the device reference if registration fails
Date: Wed,  4 Nov 2026 02:15:48 +0000
Message-Id: <20261104021548.1468864-1-vulab@iscas.ac.cn>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:qwCowAAXP_lLlepqgHg+AA--.9597S2
X-Coremail-Antispam: 1UD129KBjvdXoWrZFWkur1fZryfKr1fAr1kKrg_yoWDZrX_KF
	s2v3s7Xrn5WF17Gry5Cw4avryFkF9rWFWfZwsxKFsagay3Xr4kZw15Zw4Fyr17Jr4xAFW3
	X3WUZr4Igr47KjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT
	9fnUUIcSsGvfJTRUUUbc8YjsxI4VWkKwAYFVCjjxCrM7CY07I20VC2zVCF04k26cxKx2IY
	s7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4
	kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Ar0_tr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_
	Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI
	0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2Wl
	Yx0E2Ix0cI8IcVAFwI0_Wrv_ZF1lYx0Ex4A2jsIE14v26r4UJVWxJr1lOx8S6xCaFVCjc4
	AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28IcxkI7VAKI48JMxAIw28IcVCjz48v1sIE
	Y20_Gr43Wr1UJr1l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGw
	C20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48J
	MIIF0xvE2Ix0cI8IcVAFwI0_Ar0_tr1lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr
	1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvE
	x4A2jsIEc7CjxVAFwI0_Gr1j6F4UJbIYCTnIWIevJa73UjIFyTuYvjxUyZmRDUUUU
X-Originating-IP: [36.110.52.2]
X-CM-SenderInfo: pyxotu46lvutnvoduhdfq/1tbiCRMBA2rqY-m5dQAAsO
X-purgate-ID: tlsNG-c1860d/1793758542-CDF4787B-CB1E2C3F/13/0
X-purgate-type: clean
X-purgate-size: 1025

register_balloon() registers the statically allocated balloon device.
When device_register() fails, device_add() drops the reference it took
itself but the reference taken by device_initialize() stays behind, so
the device's private data and name are never released.

Give up that reference with put_device() before unregistering the bus.

Fixes: 803eb047a28d ("xen-balloon: Move core balloon functionality out of module")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/xen/xen-balloon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/xen/xen-balloon.c b/drivers/xen/xen-balloon.c
index 67b0e2dbe84a..e1db8b2ffc1e 100644
--- a/drivers/xen/xen-balloon.c
+++ b/drivers/xen/xen-balloon.c
@@ -256,6 +256,7 @@ static int register_balloon(struct device *dev)
 
 	error = device_register(dev);
 	if (error) {
+		put_device(dev);
 		bus_unregister(&balloon_subsys);
 		return error;
 	}
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 02:53:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 02:53:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471199.1679760 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOR8E-0008Sa-DO; Wed, 04 Nov 2026 02:53:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471199.1679760; Wed, 04 Nov 2026 02:53:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOR8E-0008ST-8l; Wed, 04 Nov 2026 02:53:46 +0000
Received: by outflank-mailman (input) for mailman id 1471199;
 Wed, 04 Nov 2026 02:53:44 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <willemdebruijn.kernel@gmail.com>) id 1xOR8C-0008SN-Nh
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:53:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOR8B-00ARY1-TB
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 03:53:43 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <willemdebruijn.kernel@gmail.com>)
 id 6aea9d74-2eae-0a2a0a5409dd-0a2a450bea06-46
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:53:43 +0100
Received: from [209.85.221.175] (helo=mail-vk1-f175.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <willemdebruijn.kernel@gmail.com>)
 id 6aea9e36-b7e8-0a2a450b0019-d155ddafb8ec-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:53:43 +0100
Received: by mail-vk1-f175.google.com with SMTP id
 71dfb90a1353d-5eadadf23e5so117822e0c.2
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:53:43 -0800 (PST)
Received: from gmail.com (223.230.150.34.bc.googleusercontent.com.
 [34.150.230.223]) by smtp.gmail.com with ESMTPSA id
 71dfb90a1353d-5eca8d9fe6dsm681849e0c.9.2026.11.03.18.53.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 18:53:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:References:In-Reply-To:Message-ID:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793760822; x=1794365622; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:subject
         :references:in-reply-to:message-id:cc:to:from:date:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=pzzn/OZqyWunDAXh2LnA7PjhOwzn2ho40vKo9gOv0hI=;
        b=k4b4lkwx9e9izxVyut3JoMOfBKQkHFASxTwTAdj/PacYUIbgaco2qb6J+Q84Nxmw1x
         LRCPAlMj883EHgomw1LJZP9oqwrnOnR1ZNR5ZzfBdxUaU9A+2cPyKlg4UfIc8f2CfJQ5
         r2fvOVVPKHKFJkBJ8uJQi2SJKDiQB4UfA1VTNQp8PVGPZEc6Q+q1ffa+TK1RPM9wa2Zg
         7/kYa7/6Vyy/XsdJwWotEOFZL3yT0SrWZkicWZ2Aq6wxxHVTQ92Is2ljTXGuudGtHwzz
         1J2RV40jzsCY2F59N1/yei/rVD7kX5fUAd6sFFZPbgp/XfWAVrLPbWc7QfL/TqKaXTSG
         cDJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793760822; x=1794365622;
        h=content-transfer-encoding:content-type:mime-version:subject
         :references:in-reply-to:message-id:cc:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=pzzn/OZqyWunDAXh2LnA7PjhOwzn2ho40vKo9gOv0hI=;
        b=FLkiwDssFLBV8KDxVDlwhojGxIDFcU8qnof67GREJ1TnnXvd63XqiTupnn8i4WsGID
         pi+tNS/ZqRHreJqyqIyi3AUJZYLWnsIHkNHMpUXvrlIoVvn4fd2hzZGWapMAgTDa3JPH
         KVmg0uNo6yjFn88O5DKxBi5Z1Rfpth7ejStvjg4TM/drfXRfQchNOUBOtjUqS6yA+HXO
         +/1lVIXrK2/63x3+6geawuT8jpR9xUqhzckXt3+59daMUEB4QDaRJUlGCBEeAf9muRUx
         Z6MgbJsQeZqPydh7M5XDdTus4CyKkFwlQ/gOhSEYc6z04Gbcmx+cRWCKpUJ15kJfSGD2
         ameg==
X-Forwarded-Encrypted: i=1; AKwUvBx4xkiA49eYNb1k0CjDwaEIYB0soUn29HPCx+SfLnX+Tl/TaHruSJX/Qq3/ksOmrguy6bWyAEHyE/U=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8574qIcDFuN+u+tZMg0N2Gt4X9Nds06KGrBGY2WzNImFZFsavb
	uJeypFZwMAr6kRIfFCgRsfXsC0QxsOivHVrW7E+TqOjZ5LS/BtRbwg8+
X-Gm-Gg: AYBFou3jjVGSEUTpxBLIEMH4RpbkkoNNSVMWAlFTgnaDvQc9l0efm4eNdu5a1Hh+VsM
	bEeI/4SSWmbL0808iCEg9curlz6F2jYwdlq0nwVZ//Ztz0slPkDMFfo3woEfKOk5pCzxCxmdwI5
	v1ZukUb67QCWF/kfPe6FFppHQ/tAawRxRQiOcjI8CKCeOVZlLVF4tXkCWUopr0n4TbxeBZlbX5T
	H/TlSQPBpQjG8beWztKgASI0NqtCh/cUU5sJ5ALX8cW0nSfeIrPEQVfn+9J2jk6EOtqzkODIhau
	x3sje50lpPXO0078MZUh3vaskunYE8csF3aEoGK6eYiO3NxgATIEQVwWF7A5exmh5zMbNMjxMNA
	MCnoCBmwf5EpXkq4d2Y/xvRD2iPcM3HTaAJdxhJI9P5lH0QiMxyp+pct8HMya1/Iki+LW+102zY
	JykuEguQyIzpsUd/APllMrwWHGh8DKtsvpap4lXmcJnwXya8lXLFwpaTIwN3HnoqyXPIAj2bSN5
	seIitWTXblIQwD7kANKEVuZK1Y405/cMUanmP0rwtQNuz5BLDVTRc7DlPyzKTNeGNV29ksfLnTz
	msqxyvGEl73eGMHcNLW2REGwhv7pvH40w+AgRu2OGwZVfMQ7+isnLb4sq/T0BAWQRAFxBL4+2RN
	NPpJNUNjDDzlplkxcvzsKhZj2s76d6zEzHZ5KnkdsDxnhqkhMK8uBWg57j0AMVlVeu3CGgfP3
X-Received: by 2002:a05:6122:398b:b0:5ea:ddfd:3e99 with SMTP id 71dfb90a1353d-5ec68976e2amr6444630e0c.10.1793760822398;
        Tue, 03 Nov 2026 18:53:42 -0800 (PST)
Date: Tue, 03 Nov 2026 21:53:41 -0500
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Josef Bacik <josef@toxicpanda.com>, 
 "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, 
 Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, 
 netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, 
 Josef Bacik <josef@toxicpanda.com>
Message-ID: <willemdebruijn.kernel.6099d613565@gmail.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-11-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-11-54ad0ab57614@toxicpanda.com>
Subject: Re: [PATCH net-next v3 11/15] net: skbuff: don't run off frag_list in
 skb_segment()
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793760823-1A2C49EA-C5692D0F/0/0
X-purgate-type: clean
X-purgate-size: 1592

Josef Bacik wrote:
> skb_segment() keeps going until it has segmented head_skb->len bytes.
> It takes the data from head_skb and then from each member of the
> frag_list.  If head_skb->len counts data that this walk can't find, the
> walk runs out of members while it still owes data and dereferences a
> NULL list_skb.  There are two ways to get there:
> 
>  - head_skb->len is bigger than what head_skb and its frag_list hold.
>  - A member has a frag_list of its own.  head_skb->len counts those
>    bytes, but for each member the walk only looks at the linear part and
>    frags[].
> 
> No path in the tree is known to build a GSO skb like either.  GRO
> flushes instead of chaining an skb that already has a frag_list.  IP
> reassembly does nest frag_lists, but a reassembled skb isn't GSO.
> 
> Check list_skb in the three places where the walk moves on to it, and
> fail the segmentation with -EINVAL.  The KUnit cases in the next patch
> hit the NULL pointer dereference without this patch, and at least one of
> them hits it again with any one of the three checks taken out.
> 
> Without SG the payload is copied by helpers that check the length
> themselves and recurse into a nested frag_list.  That path still fails
> for a len that is too big, and still segments a nested frag_list.
> 
> Found by the Sashiko AI review of the BUG_ON() series.
> 
> Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>

Reviewed-by: Willem de Bruijn <willemb@google.com>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 02:58:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 02:58:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471208.1679768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xORCK-0000eN-0B; Wed, 04 Nov 2026 02:58:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471208.1679768; Wed, 04 Nov 2026 02:57:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xORCJ-0000eG-Sx; Wed, 04 Nov 2026 02:57:59 +0000
Received: by outflank-mailman (input) for mailman id 1471208;
 Wed, 04 Nov 2026 02:57:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <willemdebruijn.kernel@gmail.com>) id 1xORCJ-0000e3-6K
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 02:57:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xORCI-005LIU-C1
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 03:57:58 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <willemdebruijn.kernel@gmail.com>)
 id 6aea9f02-bab6-0a2a0a5309dd-0a2a450991f8-18
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:57:58 +0100
Received: from [209.85.222.53] (helo=mail-ua1-f53.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <willemdebruijn.kernel@gmail.com>)
 id 6aea9f35-be1a-0a2a45090019-d155de35b5b3-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:57:58 +0100
Received: by mail-ua1-f53.google.com with SMTP id
 a1e0cc1a2514c-98c78660542so150575241.1
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 18:57:57 -0800 (PST)
Received: from gmail.com (223.230.150.34.bc.googleusercontent.com.
 [34.150.230.223]) by smtp.gmail.com with ESMTPSA id
 ada2fe7eead31-7d277d13753sm62688137.10.2026.11.03.18.57.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 18:57:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:References:In-Reply-To:Message-ID:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793761077; x=1794365877; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:subject
         :references:in-reply-to:message-id:cc:to:from:date:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=QxPkYmlqBpasJs1WNWIGsKH6gd/q8cxBmo1mIv7+8yI=;
        b=NN14gVQ3Ms31OsBIfOk55Cxw2TE7quL3vk5yxpXJD85HPwCPgGGuelcMUlytSWbbIN
         yTfKYvYI/fCWILtcbJ3Z9VCNT6yFDo1vGUzt/qeL9QmMVoFNugkG8eXwXCVxZK2aX8wJ
         V14tuuZd2H5/TWP60A9yKaYMKlseAYotBGbC+Swo91f3vuuWc7RKkiLRNqJeSapw7sxp
         ODY+KrAaOQUdzybKn309xdXvb1/lVpTM7MgLqgjLUIBI21WZNVsD6wUVatkIlz1/fJEI
         9O7hIG/YjXUgTnD9AEzmTHrwMJHnFWutY2nKGD+4RdENeRyStjYbWUuDeszFMKjWYEW8
         yBhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793761077; x=1794365877;
        h=content-transfer-encoding:content-type:mime-version:subject
         :references:in-reply-to:message-id:cc:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=QxPkYmlqBpasJs1WNWIGsKH6gd/q8cxBmo1mIv7+8yI=;
        b=2dMk21fxzzIvGYJ11NL5GWNrmo2NYUsvb7KDWL/OuIuYZSeAOn6ne9iY2dCLsOIzbw
         n16NBPuRt8FqVxOAjRmojjbt83IDT9r8llWVEkI6qASuTs7ZQ0/+BcLNojQkjRcng6cX
         MzTTrwYeIkKbK8DNks17REQM/blCwGxE2O/QeZccn6kbsAJppuOyXOScviUAFkwy6IdK
         3jV5JXn6MBlHEosfHmUHWVwXaulScGIvN01cPuZtRv52TgdmQBOSIjC7/XxcrA3gAbph
         7AwGiJ5x4Ff8f7dhYnmipINgpHN0GvGL0V0rPxqM5Cxh0FWmmAV6woiOt/GCWV/G1XLW
         LsVQ==
X-Forwarded-Encrypted: i=1; AKwUvBzJRPxHZqD7MKGH57ZPFfGrRPaAl/L77AtsoGQc6k9SfPyvSU/wqXgpANTsRqHsdYp8XCx2VaIkfx4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+oP9B2RRxB5YTbJpr1Yp+z8Ic1jJXEBNaBTdtpkpDNVWI9VVvU
	E7UC7H3H3oWGH9HCVPZbQcp/D9LjofwRkKLT+4V+U4q9NmEKN0dlRSwg
X-Gm-Gg: AYBFou0PBLXqvuHt36l1Gh1Xw+8nlBM/cJxt+eZRGTnYt6R63b3WS8ZxBRdWW5YFSD9
	pjTXQzR5gR1kBlu3/0actRJtIEurkMlGpeO7HE195l1DSJJWZnfKfpLqeMQfgDsgZfra053117X
	7yOKPa1IVxjbJJZw3Q4w6H7mHj4zlxRFNuU8xrM142DMBKnzQm6k9rRS12qKoboNTwFZSKY5Pi6
	NYM/cUk8Sj9UsYDqaS2yxV9kfS8oIZTNvEokntfn02AKFMLJ4IaSwU15jn2a+SaMTOe1vWhYABU
	WTwQiinaz9vFqBeljw2mdVD9V57CqKh1iu77Kw1cb+9rXkTEcOF/v3npTr2+/TWOAkAQWUiM91I
	9KNikpOtFaqPsn9yXeJMmpwS3rbbJMiqkFmODYpyvtemtHcx+ZGyEGedlxtpYcSq3cjYn0BJzGN
	g5qSKnWBHDR1dK+qu/Xk/mRKZaKrK7pBEMzU+/hpETqs/COXeCflvX2K4x4LJCG89cGlAelRgrd
	YBIU5Tb177oG6FQgHkesdjofUHigI7fmn+Jdc3dihSAJUjIPaGITfL0qn2R9Fg59TBP8/0iPwoQ
	bVlhaTLJ+rH4Ewzy+1gxm4rukR/8WHzFwEho3EyWlJAVU414StmOh2RDBlFarcYqXLYlOigEWYX
	VrdzS7uK9/ZsEKXNPg38USw52YqN3bO+8ud7NHFxvnnSJ9ibVB7s+KC32A327gCSa64ncej0=
X-Received: by 2002:a05:6102:3706:b0:7bb:c382:2ff4 with SMTP id ada2fe7eead31-7d0726ca2femr5422927137.20.1793761076663;
        Tue, 03 Nov 2026 18:57:56 -0800 (PST)
Date: Tue, 03 Nov 2026 21:57:54 -0500
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Josef Bacik <josef@toxicpanda.com>, 
 "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, 
 Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, 
 netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, 
 Josef Bacik <josef@toxicpanda.com>
Message-ID: <willemdebruijn.kernel.2b23680b4ca01@gmail.com>
In-Reply-To: <20261103-b4-skbuff-bug-on-followups-v3-12-54ad0ab57614@toxicpanda.com>
References: <20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com>
 <20261103-b4-skbuff-bug-on-followups-v3-12-54ad0ab57614@toxicpanda.com>
Subject: Re: [PATCH net-next v3 12/15] net: test the skb layouts skb_segment()
 refuses
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1793761078-39AC0034-AF4480D7/0/0
X-purgate-type: clean
X-purgate-size: 1641

Josef Bacik wrote:
> The GSO KUnit test only checks layouts skb_segment() can segment.  Add
> the ones it has to refuse with -EINVAL:
> 
>  - The non-uniform frag_list with SG on, which used to hit the
>    BUG_ON(i >= nfrags) the existing test steps around.
>  - A frag_list member that has its own frag_list.
>  - An skb whose len counts bytes it doesn't hold.  The data runs out on
>    a segment boundary, in the middle of a segment, after the last
>    frag_list member, and with GSO_BY_FRAGS.
> 
> They warn on CONFIG_DEBUG_NET kernels, so run them with the warning
> backtrace suppressed.  Also update the comment on the non-uniform case,
> which still says SG would hit that BUG_ON().
> 
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>

Reviewed-by: Willem de Bruijn <willemb@google.com>

> -	/* TODO: this should also work with SG,
> -	 * rather than hit BUG_ON(i >= nfrags)
> +	/* TODO: this should also work with SG, rather than fail the
> +	 * i >= nfrags check in skb_segment()
>  	 */
>  	if (tcase->id == GSO_TEST_FRAG_LIST_NON_UNIFORM)
>  		features &= ~NETIF_F_SG;

The previous patch also addresses non-SG.

Do you want to run the new tests in both SG and non-SG mode?
>  
>  	SKB_GSO_CB(skb)->max_segs = tcase->max_segs;
> +
> +	if (tcase->err) {
> +		/* the suppression block doesn't run if it can't be set up */
> +		segs = NULL;
> +		kunit_warning_suppress(test) {
> +			segs = skb_segment(skb, features);
> +		}
> +		KUNIT_EXPECT_EQ(test, PTR_ERR_OR_ZERO(segs), tcase->err);
> +		if (!IS_ERR_OR_NULL(segs))
> +			kfree_skb_list(segs);
> +		goto free_gso_skb;
> +	}
> +


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 04:02:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 04:02:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471272.1679777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOSCg-00044Z-ET; Wed, 04 Nov 2026 04:02:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471272.1679777; Wed, 04 Nov 2026 04:02:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOSCg-00044S-Bj; Wed, 04 Nov 2026 04:02:26 +0000
Received: by outflank-mailman (input) for mailman id 1471272;
 Wed, 04 Nov 2026 04:02:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xOSCe-00044M-L6
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 04:02:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOSCY-004fjc-Qk
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 05:02:23 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeaae38-bab6-0a2a0a5309dd-0a2a4502a1e2-6
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:02:18 +0100
Received: from [40.107.130.107]
 (helo=MRWPR03CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeaae4a-6ca4-0a2a45020019-286b826b5234-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:02:18 +0100
Received: from AM6PR03MB6070.eurprd03.prod.outlook.com (2603:10a6:20b:d4::24)
 by VI0PR03MB11252.eurprd03.prod.outlook.com (2603:10a6:800:333::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Wed, 4 Nov 2026
 04:02:15 +0000
Received: from AM6PR03MB6070.eurprd03.prod.outlook.com
 ([fe80::6498:3539:2e93:7416]) by AM6PR03MB6070.eurprd03.prod.outlook.com
 ([fe80::6498:3539:2e93:7416%6]) with mapi id 15.21.0592.007; Wed, 4 Nov 2026
 04:02:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=QwBiqciYKGz6EqDwfUYZQJgwQFjg+Zn94CcvFxCa4l/9srsMtoavUc3GPNvlAOmD/7yaLhptqQ+d1MwtgKEQUSuwCMMCekAgIvQjhhPzIqjHXg6m7ctwOjvDUicgpmW9WVcsEW1LnPzdet4Il+9jHWaj8rKeRiWLeUnDP4NtBQXn41NKqodbXvEQMBOZMZHtwRRgvPDJxU/V1TvDp5Fig95DKO383aaFM1P+mJHBSn7IxCvyr2DD4VPtOmj2Xs9wYTujlChTRD7tj084M/5Fd/Li+zlcN2xInYiaf+L22ElXz9z5qBCEnA+0lH3NKwmtZfpFuAF5zmNBePuhVCiCIQ==
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=trhjAyrQ7+3CTUr81pxeGetCJ/nM4MIHU2VH05ROFdY=;
 b=qpwpZrovqtZPeXpKU/qSwU2sr3d56cgwJkiIS4uw8eVm5TnS/I9XgWOCyWIo+znab4qKdHi0lCcvwi7cw5xSqSwV5npbjeZ2QY2/OBjLqh+kEcKfUOS5iPLM6XgvVsPqDT1MiAopwBEUYwsIEY7463IVgRftsgl0sD19r+zFk4uX8MuRNsqaEUlcSwm27vO6u6ee8iMcYO7TY0ppp1sMkAaZ6qqIjKOWbbaIS5UuhAazPaZlohPQKMc9fh+AJpTX6711q7sCE8V3A9x2RaE65kKP7EHya687QenjsbmgX/9c9h87ZFvvN1GkhkmZWCKhgza+pPj5kjZpDoz4fiDzOg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=trhjAyrQ7+3CTUr81pxeGetCJ/nM4MIHU2VH05ROFdY=;
 b=rfm//xobVmVGcqh7FkdIt5dD0CBGdbGfgw+eNkxh1D184Ug1aZkdCgU3573NQUZsUfdiPRMOepPLLFOiAjCy7cwpz+TVaGJMIKpWhgnkgnjBFcEbWDbxwMZl/YsgpQLTFzZwWOnlqsmuLyGb0njkwJkDMzyoZ6sya6FhE7JfwqHXRavROz4+8C3aukLUgosSntrOZigQECWvZcnQJzgazsV4wbfr7LuqKbmIEE4J2af8ZpmwJkPAyAZhtljL5c2FphGVTkD5EhecsuZA5DEdO5IAMqE9GCSc2ZrIlhPFNKXq8vkqciKjpFfYV6lgIUjSUwZgEuXsz6aN1UhuTfIxdA==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger@xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Grygorii Strashko <grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 4/6] xen/arm: scmi: introduce SCI SCMI SMC multi-agent
 driver
Thread-Topic: [PATCH v15 4/6] xen/arm: scmi: introduce SCI SCMI SMC
 multi-agent driver
Thread-Index: AQHda6I5GzExcGGajkKEjRRj5IyqZw==
Date: Wed, 4 Nov 2026 04:02:14 +0000
Message-ID: <878q39nt17.fsf@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
	<a918c12ec2c60f85fdbfd707e309669e2d173732.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To:
 <a918c12ec2c60f85fdbfd707e309669e2d173732.1793717221.git.oleksii_moisieiev@epam.com>
	(Oleksii Moisieiev's message of "Tue, 3 Nov 2026 14:47:13 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM6PR03MB6070:EE_|VI0PR03MB11252:EE_
x-ms-office365-filtering-correlation-id: 3365048f-2d77-4ec4-aed8-08df3a286945
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|23010399003|366016|7416014|1800799024|42112799006|38070700021|261022105027099003|261009223027099003|261021121427099003|4143699003|11063799006|56012099006|261102123227099003|261021133027099003|261021135927099003|261022115727099003|261022075727099003|261021130227099003|261021123027099003|261026121527099003|261026135527099003|261026140227099003|261026130827099003|261028144727099003|261022113327099003|10067099003|22082099003|18002099003|3023799007|6133799003|4133799003;
x-microsoft-antispam-message-info:
 3jBNjwY68T6WqwP22cvbyEK6kg3zLvHIet8n0ulKAu+KN8zDAa2Dh7Ov9PZYMYShKGKCJE63ne/UcUoMboJ3pXUH6K15WxiWINwjO+F0dXkFnhfjQKub2LjqnMjPXWNLT+DRbiVPb3EoEpQJUsv/XAv6ZgbMaZSEAlBqDM0o1Qm5qnG7369HuLHe6t04WKNnkOx+rYj6Ut6I6pj2KQSIC0apc+94JGm5C5BXTevHXgvhWBTaxwCMoc50LGf9jmxz5Hwq9hnI3H0luiUDoen5B1alB4VqCA4mXLhCchjNRrlb7QozF6wYJd+SyIEbgQJiAtvNoRxSeXXtSOAVRoOvxSsbcl7MIVcyFrsi710uV8kUZb87F93rRh6M4ROmezStpPKjR1/yhBRRASE722TYOpj38zQOULwc7KdRgCZITTza/9BkMe21nP0x6jaCgdEdtaessD+/EB+cZArZcDhHR9lC9X1x2egMmF7vDC7KIXBp9TSD8sLXd8Xu8xWQiR7GR7QBG6d7eN772FMf3g2BOiVHNsZ1n4MfOWVkM0xwWlEft6nZYtl45emMacfWJncGx5dkU5hx4got4hlaRbzp0+lGMq7Do/LJM65XNALI4bgMXO1Ybirc0o5NK28LQXudPROomfclG6kkFBfJYOcUMEcqBxcVFzE6xm/9FMlIczA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR03MB6070.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(7416014)(1800799024)(42112799006)(38070700021)(261022105027099003)(261009223027099003)(261021121427099003)(4143699003)(11063799006)(56012099006)(261102123227099003)(261021133027099003)(261021135927099003)(261022115727099003)(261022075727099003)(261021130227099003)(261021123027099003)(261026121527099003)(261026135527099003)(261026140227099003)(261026130827099003)(261028144727099003)(261022113327099003)(10067099003)(22082099003)(18002099003)(3023799007)(6133799003)(4133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?OsdK01Wcgb3Vxtp0ziNBgVh+a0rtzhcAQyJOzAqy+iV6xgTsBlkr/ydpbq?=
 =?iso-8859-1?Q?eevQSZu5akQ9J8GBBIJ5WgaS2P97k5a5a0358DNGfNzo248YGpYRp3+7Ku?=
 =?iso-8859-1?Q?2iibpaFE9zyAvu2On6wk2CD93KB7e8j+W5fXtBJwzg3mEJPSukVbW5ZHVe?=
 =?iso-8859-1?Q?4Ckb5+Hw9nrjyAI9Z5w/59vCSAhWMFQeO0S3JGkchan1DzUmy6Ukq1YaaJ?=
 =?iso-8859-1?Q?lBxA01ea7Z4tmAkjubAqPvsMjI/L7TGPEJF2yFMdEFf5P51MnmCP1YmYBl?=
 =?iso-8859-1?Q?xlfj83ZNvNBVRCSYr8uUZQyAMPMzMD5Gp01JktmzPrab+Oc0yqiBogM6Iz?=
 =?iso-8859-1?Q?zJbNGyUg5srpJuMwPUlvjWLe6SReIxTa5ApZdKOqLn5YIf5xtaVgDkE0Xy?=
 =?iso-8859-1?Q?xCc3mXWGP/9Y9mEEf+4g1jtIcEzznNXLqcV6CRQddiFLe6s0wGD/cqrTtG?=
 =?iso-8859-1?Q?IsoznFW4UiFvlLF5wxQjJ34wKJGvPJxHkvcLk/RtaCfP/u2XbtYCX7bnaY?=
 =?iso-8859-1?Q?3NiUfN1k2A6EbwMiUZSM/CehqPotFk6YcNnP55nle6prnBRUTuh4MX7IPW?=
 =?iso-8859-1?Q?y+xvEZqys7qlZFcF6fuuvt7sPkbdcDxvDw3dWWWN6nCU+5pat3TS9chdN5?=
 =?iso-8859-1?Q?OYw12V7aP07sHVw/Xq09FCYJN0HPWjTh0v+kNKTpeYgCwPAnYktBTgmG1L?=
 =?iso-8859-1?Q?CHuipWmP//TfFXk9iG4jG2KQ66AsoaCNQMaR8bjZScoINwHnCpxwUmZYDu?=
 =?iso-8859-1?Q?Rxgjh2IB3DOdhWhArCCETniTljHfZ/lUj5iPAPiBPGfQnsIpZ2XUfbR586?=
 =?iso-8859-1?Q?+FHUZWSNLFhbcMZ4qpcq4rDiD6abVSF1Ichr+nm91YcIU++K9VEh1CMFUM?=
 =?iso-8859-1?Q?A4PvkpxjV8lrG1ExY0IHQmeYQUH35lGfV2LscZ3bHWOuPvJyFxykeguoKi?=
 =?iso-8859-1?Q?5ga2tgfoAtWWT/seBKtd4NfY7aq1O7a+1AZQTcoHPWovSR+i1wq5XkqWNw?=
 =?iso-8859-1?Q?VGiSU44Bnz6DkbQDeGwqgZoOumPPAbNhiBJulS9nUgmO/Itm1AQaiOiJP/?=
 =?iso-8859-1?Q?c6ZQ+Wmu0a5tSZrvJOAQecE1CiO+1Tj3qQwAj7FkGmcCMdJqkxtcBMQOnT?=
 =?iso-8859-1?Q?Ns7RLGoZI28c+pMybAucmR1HTbeCXY6RUj9ea5XUf0mr2U2X7VJOeWuUPY?=
 =?iso-8859-1?Q?FmLzsGEm/XgDtrviO74XPmWIj4M6SFGrTKaKpgr1krkSqRu2VWqh3R0kut?=
 =?iso-8859-1?Q?d/+TFpTH4Mnp12qRUBeJgCjQJ1HyBQJkUkAM3hNIYzXFbWI12ghjnhA5eX?=
 =?iso-8859-1?Q?myvOX18FrW0o2eBAdZFtegkNhAeN1HfOhsqh/6yWCuFEoOM1VsqhuiSmr0?=
 =?iso-8859-1?Q?Gf97EKa2QvjmbkXP799C7L6Y2PoYOXXVQkdtKJ2C4HftCtQM4PtcxPK4J7?=
 =?iso-8859-1?Q?xn2oX3bQ3sP9f2jzDSGYw1Po/x9BmOP9WHh0OMa9IYPH14zAez9p5t0qmU?=
 =?iso-8859-1?Q?ixMgeQZZ96eZ3852X1qqAsRv0FDcmwx+V7KxN+t9kDWYEr2MhvyFwzV6So?=
 =?iso-8859-1?Q?KA9NKXdf7aeCgPwQJnpS0P6J4xiuG5xetg5EjNQAsscoCEI8JoFjJebSoy?=
 =?iso-8859-1?Q?uysPJKwih1qHNvIm3k0c582sH51LpbV5wHdv8VPdUFItRv5RDZ5xKRqkg2?=
 =?iso-8859-1?Q?NCVOOU9VHq1iwvnhF170Gnic6MvuG77wRL6FnWKGADIgcuCfhif8fwAgQU?=
 =?iso-8859-1?Q?lvNJRjMF6orkXtcT1VyG3smpXyQQUDGvhNWY+xnpOwmVcsDGOVrg/qZF27?=
 =?iso-8859-1?Q?3mdUh/L/bZfRrE4fIY9XocmY8gZQIsE=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB6070.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3365048f-2d77-4ec4-aed8-08df3a286945
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 04:02:14.8637
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: cHQx1IQA5oiWiqEi+iyP4qAaNsc7i3zZuPzK3NjS0+DJgdFar1Rk6O5+yRaPo0p9g6+Ws08Nqs4HNTW4bSP9iuo2KmSlh7RuWFagULJZpTI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB11252
X-purgate-ID: tlsNG-720697/1793764938-F16AF2AC-C94CBA73/0/0
X-purgate-type: clean
X-purgate-size: 13152

Hi Oleksii,

Oleksii Moisieiev <Oleksii_Moisieiev@epam.com> writes:

> This patch introduces SCI driver to support for ARM EL3 Trusted Firmware-=
A
> (TF-A) which provides SCMI interface with multi-agent support, as shown
> below.
>
>   +-----------------------------------------+
>   |                                         |
>   | EL3 TF-A SCMI                           |
>   +-------+--+-------+--+-------+--+-------++
>   |shmem1 |  |shmem0 |  |shmem2 |  |shmemX |
>   +-----+-+  +---+---+  +--+----+  +---+---+
> smc-id1 |        |         |           |
> agent1  |        |         |           |
>   +-----v--------+---------+-----------+----+
>   |              |         |           |    |
>   |              |         |           |    |
>   +--------------+---------+-----------+----+
>          smc-id0 |  smc-id2|    smc-idX|
>          agent0  |  agent2 |    agentX |
>                  |         |           |
>             +----v---+  +--v-----+  +--v-----+
>             |        |  |        |  |        |
>             | Dom0   |  | Dom1   |  | DomX   |
>             |        |  |        |  |        |
>             |        |  |        |  |        |
>             +--------+  +--------+  +--------+
>
> The EL3 SCMI multi-agent firmware is expected to provide SCMI SMC shared
> memory transport for every Agent in the system.
>
> The SCMI Agent transport channel defined by pair:
>  - smc-id: SMC id used for Doorbell
>  - shmem: shared memory for messages transfer, Xen page
>  aligned. Shared memory is mapped with the following flags:
>  MT_DEVICE_nGnRE.
>
> The following SCMI Agents are expected to be defined by SCMI FW to enable=
 SCMI
> multi-agent functionality under Xen:
> - Xen management agent: trusted agents that accesses to the Base Protocol
> commands to configure agent specific permissions
> - OSPM VM agents: non-trusted agent, one for each Guest domain which is
>   allowed direct HW access. At least one OSPM VM agent has to be provided
>   by FW if HW is handled only by Dom0 or Driver Domain.
>
> The EL3 SCMI FW is expected to implement following Base protocol messages=
:
> - BASE_DISCOVER_AGENT (required for Xen and secondary agents without reg)
> - BASE_RESET_AGENT_CONFIGURATION (optional)
> - BASE_SET_DEVICE_PERMISSIONS (optional)
>
> The driver binds to the arm,scmi-smc management node inside a Xen-specifi=
c
> container compatible with xen,sci under /chosen/xen. Other SCMI nodes,
> including the host /firmware/scmi, are ignored by the mediator.
>
> Describe secondary agents as xen,scmi-agent children of an agents node
> inside the same container. The agents node uses #address-cells =3D <1> an=
d
> `#size-cells =3D <0>`. Each child provides arm,smc-id and a single shmem =
phandle.
> The optional single-cell reg property supplies the SCMI agent ID (0..254)=
.
> When reg is absent, Xen discovers the ID using BASE_DISCOVER_AGENT on tha=
t
> channel. Use agent@<id> for an explicit ID, and a node name without a uni=
t
> address for discovery. Disabled agent nodes are ignored; at least one
> enabled secondary agent is required.
>
> Resolve discovered IDs before adding channels to the list, so duplicate
> IDs are rejected consistently, including clashes with Xen's management
> agent. Explicit IDs avoid mapping and probing secondary channels during
> initialization. Xen always discovers its own management agent ID.
>
> Keep shared-memory nodes under xen_scmi_config and leave the platform's
> existing /firmware/scmi and host OSPM shared-memory node unchanged. Chann=
el
> nodes describe locations, rather than reserve memory: if firmware buffers
> occupy system RAM, the platform DT must reserve the whole firmware-owned
> range in /reserved-memory before Xen boots. A single reservation may cove=
r
> multiple channels, including unused ones. SRAM outside system RAM does
> not require a RAM reservation. Channel nodes need not be moved into
> /reserved-memory.
>
> For example:
>
> / {
>     #address-cells =3D <2>;
>     #size-cells =3D <2>;
>
>     scmi_shm_0: sram@47ff0000 {
>         compatible =3D "arm,scmi-shmem";
>         reg =3D <0x0 0x47ff0000 0x0 0x1000>;
>     };
>
>     firmware {
>         scmi: scmi {
>             compatible =3D "arm,scmi-smc";
>             arm,smc-id =3D <0x82000002>;
>             #address-cells =3D <1>;
>             #size-cells =3D <0>;
>             shmem =3D <&scmi_shm_0>;
>         };
>     };
>
>     chosen {
>         #address-cells =3D <2>;
>         #size-cells =3D <2>;
>         ranges;
>
>         xen {
>             #address-cells =3D <2>;
>             #size-cells =3D <2>;
>             ranges;
>
>             xen_scmi_config {
>                 compatible =3D "xen,sci";
>                 #address-cells =3D <2>;
>                 #size-cells =3D <2>;
>                 ranges;
>                 xen,dom0-sci-agent-id =3D <0>;
>
>                 /* Xen management channel */
>                 scmi_shm_1: sram@47ff1000 {
>                     compatible =3D "arm,scmi-shmem";
>                     reg =3D <0x0 0x47ff1000 0x0 0x1000>;
>                 };
>
>                 scmi_shm_2: sram@47ff2000 {
>                     compatible =3D "arm,scmi-shmem";
>                     reg =3D <0x0 0x47ff2000 0x0 0x1000>;
>                 };
>
>                 scmi_shm_3: sram@47ff3000 {
>                     compatible =3D "arm,scmi-shmem";
>                     reg =3D <0x0 0x47ff3000 0x0 0x1000>;
>                 };
>
>                 scmi_xen: scmi {
>                     compatible =3D "arm,scmi-smc";
>                     arm,smc-id =3D <0x82000003>;
>                     #address-cells =3D <1>;
>                     #size-cells =3D <0>;
>                     #access-controller-cells =3D <1>;
>                     shmem =3D <&scmi_shm_1>;
>                 };
>
>                 agents {
>                     #address-cells =3D <1>;
>                     #size-cells =3D <0>;
>
>                     agent@0 {
>                         compatible =3D "xen,scmi-agent";
>                         reg =3D <0>;
>                         arm,smc-id =3D <0x82000002>;
>                         shmem =3D <&scmi_shm_0>;
>                     };
>
>                     agent@2 {
>                         compatible =3D "xen,scmi-agent";
>                         reg =3D <2>;
>                         arm,smc-id =3D <0x82000004>;
>                         shmem =3D <&scmi_shm_2>;
>                     };
>
>                     agent@3 {
>                         compatible =3D "xen,scmi-agent";
>                         reg =3D <3>;
>                         arm,smc-id =3D <0x82000005>;
>                         shmem =3D <&scmi_shm_3>;
>                     };
>                 };
>             };
>         };
>     };
> };
>
> To discover a secondary agent ID instead, omit reg from its node:
>
>     agent-domu {
>         compatible =3D "xen,scmi-agent";
>         arm,smc-id =3D <0x82000004>;
>         shmem =3D <&scmi_shm_2>;
>     };
>
> The agents child nodes replace the former scmi-secondary-agents list and
> `#scmi-secondary-agents-cells` property. The xen,sci subtree is omitted f=
rom
> Dom0's DT; the host OSPM channel is passed through when SCMI is enabled
> for Dom0. Full configuration and domain examples are included in the
> binding documentation and the hypervisor guide in patch 6.
>
> SMC ID Configuration and SCMI Connection Compatibility:
>
> The configuration allows the same device tree to work for both baremetal
> Linux and Linux Dom0. This is achieved because:
>
> - Baremetal Linux uses: func_id 0x82000002, scmi-shmem 0x47ff0000
> - Dom0 Linux uses: func_id 0x82000002, scmi-shmem 0x47ff0000
> - Xen management uses: func_id 0x82000003, scmi-shmem 0x47ff1000
>
> This works because the privileged SCMI connection in EL3 firmware is not
> tied exclusively to func_id 0x82000002. The EL3 firmware supports multipl=
e
> SCMI agents with different SMC IDs and shared memory regions. Each agent
> (Dom0 via 0x82000002, Xen via 0x82000003, other domains via additional
> func_ids) has an independent communication channel to the firmware.
>
> The key distinction is that Xen's management channel (0x82000003) is used
> for privileged operations like agent configuration and device permissions
> (BASE_SET_DEVICE_PERMISSIONS, BASE_RESET_AGENT_CONFIGURATION), while Dom0=
's
> channel (0x82000002) is used for standard SCMI protocol operations (power=
,
> clock, sensor management, etc.). The firmware enforces different permissi=
on
> levels for each agent based on their agent_id, not the SMC ID.
>
> Therefore, there is no conflict: Linux Dom0 retains its standard SCMI
> connection for hardware management, while Xen uses its separate privilege=
d
> channel for mediating access between multiple domains.
>
> - It implements the SCI subsystem interface required for configuring and
> enabling SCMI functionality for Dom0/hwdom and Guest domains. To enable
> SCMI functionality for domain it has to be configured with unique support=
ed
> SCMI Agent_id and use corresponding SCMI SMC shared memory transport
> [smc-id, shmem] defined for this SCMI Agent_id.
> - Once Xen domain is configured it can communicate with EL3 SCMI FW:
>   -- zero-copy, the guest domain puts SCMI message in shmem;
>   -- the guest triggers SMC exception with smc-id (doorbell);
>   -- the Xen driver catches exception, do checks and synchronously forwar=
ds
>   it to EL3 FW.
> - the Xen driver sends BASE_RESET_AGENT_CONFIGURATION message to Xen
>   management agent channel on domain destroy event. This allows to reset
>   resources used by domain and so implement use-case like domain reboot.
>
> Dom0 Enable SCMI SMC:
>  - set xen,dom0-sci-agent-id=3D<agent_id> under the xen,sci container in
>    the Host DT. If the property is absent, SCMI is disabled for Dom0
>    and all SCMI nodes are removed from the Dom0 DT. The driver updates
>    the Dom0 DT SCMI node "arm,smc-id" value and fixes up the shmem
>    node according to the assigned agent_id.
>
>  - pass dom0=3Dsci-agent-id=3D<agent_id> in Xen command line. if not prov=
ided
>    SCMI will be disabled for Dom0 and all SCMI nodes removed from Dom0 DT=
.
>    The driver updates Dom0 DT SCMI node "arm,smc-id" value and fix up shm=
em
>    node according to assigned agent_id.
>
> Guest domains enable SCMI SMC:
>  - xl.cfg: add configuration option as below
>
>    arm_sci =3D "type=3Dscmi_smc_multiagent,agent_id=3D2"
>
>  - xl.cfg: enable access to the "arm,scmi-shmem" which should
>  correspond assigned agent_id for the domain, for example:
>
> iomem =3D [
>     "47ff2,1@22001",
> ]
>
>  - DT: add SCMI nodes to the Driver domain partial device tree as in the
>  below example. The "arm,smc-id" should correspond assigned agent_id
>  for the domain:
>
> passthrough {
>    scmi_shm_0: sram@22001000 {
>        compatible =3D "arm,scmi-shmem";
>        reg =3D <0x0 0x22001000 0x0 0x1000>;
>    };
>
>    firmware {
>         compatible =3D "simple-bus";
>             scmi: scmi {
>                 compatible =3D "arm,scmi-smc";
>                 arm,smc-id =3D <0x82000004>;
>                 shmem =3D <&scmi_shm_0>;
>                 ...
>             }
>     }
> }
>
> SCMI "4.2.1.1 Device specific access control"
>
> The XEN SCI SCMI SMC multi-agent driver performs "access-controller"
> provider function in case EL3 SCMI FW implements SCMI "4.2.1.1 Device
> specific access control" and provides the BASE_SET_DEVICE_PERMISSIONS
> command to configure the devices that an agents have access to.
> The DT SCMI node should "#access-controller-cells=3D<1>" property and DT
> devices should be bound to the Xen SCMI.
>
> &i2c1 {
>         access-controllers =3D <&scmi 0>;
> };
>
> The Dom0 and dom0less domains DT devices will be processed
> automatically through sci_assign_dt_device() call, but to assign SCMI
> devices from toolstack the xl.cfg:"dtdev" property
> shall be used:
>
> dtdev =3D [
>     "/soc/i2c@e6508000",
> ]
>
> xl.cfg:dtdev will contain all nodes which are under SCMI
> management (not only those which are behind IOMMU).
>
> Additionally, this patch adds documentation for the pre-existing
> scmi-smc-passthrough command line option, which was previously
> undocumented.
>
> [0] https://developer.arm.com/documentation/den0056
> [1] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi=
t/tree/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> [2] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi=
t/tree/Documentation/devicetree/bindings/access-controllers/access-controll=
ers.yaml
>
> Signed-off-by: Grygorii Strashko <grygorii_strashko@epam.com>
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>

Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

[...]


--
WBR, Volodymyr


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 04:28:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 04:28:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471295.1679787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOSbx-00089Q-Gu; Wed, 04 Nov 2026 04:28:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471295.1679787; Wed, 04 Nov 2026 04:28:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOSbx-00089J-CU; Wed, 04 Nov 2026 04:28:33 +0000
Received: by outflank-mailman (input) for mailman id 1471295;
 Wed, 04 Nov 2026 04:28:32 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xOSbw-00088t-B7
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 04:28:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOSbv-00Ac15-KP
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 05:28:31 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeab40f-2eae-0a2a0a5409dd-0a2a4503918c-38
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:28:31 +0100
Received: from [52.101.65.84]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeab46f-fae8-0a2a45030019-346541547770-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:28:31 +0100
Received: from AM6PR03MB6070.eurprd03.prod.outlook.com (2603:10a6:20b:d4::24)
 by PA4PR03MB6768.eurprd03.prod.outlook.com (2603:10a6:102:ee::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026
 04:28:27 +0000
Received: from AM6PR03MB6070.eurprd03.prod.outlook.com
 ([fe80::6498:3539:2e93:7416]) by AM6PR03MB6070.eurprd03.prod.outlook.com
 ([fe80::6498:3539:2e93:7416%6]) with mapi id 15.21.0592.007; Wed, 4 Nov 2026
 04:28:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=AiAzqDAdW2PET4qxDC8UVaJ20nGqhbcMEoJa1FdZMncHE7BKHDDG11xW9saGSfADPYTeaKPYcmgudcPkuBWytXlAaJ83eNIdmQnYBRk6KHwq2ShgxTd9Lv3NpzmM8U+eomaI8PIfED3rbjr8PCCiw6x5fhJ/PhZEpN8c8VnItQFUFDznADqfd9uNZnqsG37OArQJ7dfwA83IwZqm6yL9vyE+s1xlS/biEokbYya0zai88KIggmLR/XIhdCrUI3uxLG4hrfPAfwEWfz2FSsTiz8KjZJBSFAodWh+UuYLwE0pK6EG1Gam4u72uXEFhGolK3MHGCyZAcSITExihfTFYwg==
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=TRht7ADK3OkGCrMq17SjVmzvxhfyy1n/dOFstz7OzA8=;
 b=oOfT7d3brUF2opfw7hulzZ/ofgCbS0S4FfiPfqMC5ehK+Y1CWNKcB2Ewvp7bX55rzlLu698t9z7u8VgrLT7EKJ+z7Z4jWQq3r45AfNoP54DBO23wxw50FYhqIQFhhwK6oLu6oxRhJilV2Ot9wqbqkW6/u6flKixRJz5RrgVjF3+3z8i0bcz12AzIeUe/gPHVOIs0no49g10aufihdUSzrUsm78TvwGLZzR1Topgoat9e1nLaHBXfMO2Zr/eSXciy4r878zoNxM+QAzP5cPn9KBbwWRJM0i7/hPM7te0BK6slmxBMv6pPc+gApCZ06y+5+NMlXt1nDeuwM1NFPb3+Jw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TRht7ADK3OkGCrMq17SjVmzvxhfyy1n/dOFstz7OzA8=;
 b=LYv7kAuissaDOJrPxNudQLfijMnr8jUEUsoUzQfY05MBCbAqDL7M9oeSeXPTdJCyf9bQWdQoT0xac5AOm+4VyK/u3vi33moq2BqchQeTxIDxcyEPtoMOw5BkEZXn6atdTPhFCni6ueLKpGx5uy6EUYmY9X6pSjHj7swHwsq+twENY7jaRZQB6vJhBIhm0Jjuy+RGOCZK5QcAKufwdQy1OPRTAqMwGfnM3eSCo0uyM9EUdhzqxLqDWiwikfXsyCk084aiAa+xDfXz8lJ+fsd80yaKnWaDh2tOdSyJ0qM4dOatoZKnHn7TEFS2cZuuqg8JO8DjpNj7KoMs369eEdcfLw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?iso-8859-1?Q?Roger_Pau_Monn=E9?= <roger@xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Grygorii Strashko <grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I58Jpp38R9BUi7o+T9Doedpg==
Date: Wed, 4 Nov 2026 04:28:27 +0000
Message-ID: <874idxmd91.fsf@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
	<04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
In-Reply-To:
 <04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
	(Oleksii Moisieiev's message of "Tue, 3 Nov 2026 14:47:14 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AM6PR03MB6070:EE_|PA4PR03MB6768:EE_
x-ms-office365-filtering-correlation-id: 324cc903-4569-4a7e-345c-08df3a2c127f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|7416014|42112799006|38070700021|5023799004|11063799006|4143699003|56012099006|261021121427099003|261026140227099003|261021135927099003|261102123227099003|261009223027099003|261022075727099003|261028144727099003|261026121527099003|261022105027099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 aDOXmCus6JOEFcwBVTn5pOXR8fzELsXosv4nQ4YHUlRlprz8S7ExprN4EuhljbAheEIbM9rFpFslznU0g2zS9qcDdrkkxKDar+f31LNwLI0yP2SLuiVCbURhflKxotJj3eRAjfuX2VQ1WhXACgbt9L6on1TT4yKWD21wpEM3ZtMw5bwxbBTCX3hyZK03x9cba9fNxHaHBncFfOSuLuIFuuWTXm+kYh1bt/a8l+g9CNSl5Wjch9Zdv1G3em6KT9zpy8hDP217DQ+xpaMfAONOkg9SgXQneNDdZMML1ThLzdrpkte2b51qdMSlBJ2uGu/3HTTF9tHqTZQ+8cnQxTE/V8IelRsQPUd6ouHnfICcSeozGZpuG8pqBMZwOJO8JJU9xKD60QR0FYH/dw1vW2g0DNGOQB3a0clbBsRMx5OdPCz2vOpsiea5998yXWsSlAx2ACzqezaRonx/npEGrbVBdZqIfgt9IFmjqZgmBu1i6VELwCcRPB9cYqkhH9Mow9/ppyrCwu53kqrTXARvyMqRYYxZ2fC+scZdOI+HFnaqNlzvYxgiVrgxVHStyBvGPcd9IXGgKKwB2VorA4c41FTz9xa72oshj+VYW7u8Imf/x0ZS7mebyL/yKfGC95/bWjCbZmGOFEC6PQDbcnWhhniIBtUsFy/QQgplJ0pdjtsdYq4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR03MB6070.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(7416014)(42112799006)(38070700021)(5023799004)(11063799006)(4143699003)(56012099006)(261021121427099003)(261026140227099003)(261021135927099003)(261102123227099003)(261009223027099003)(261022075727099003)(261028144727099003)(261026121527099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?tlZauyBwxsrZmu5PTVtQyh7WxubA3lDNCxu9RUtfB/Di38rDqSwqw0payr?=
 =?iso-8859-1?Q?amTEEsxxaiuKzMjg96sZdEvRMQ4C3g+OKSgxZ/rkPtTxJLZJYw13Oa/6EY?=
 =?iso-8859-1?Q?bwDKDGGKSBnsRdpYYa291O0KCOl1sH2Xj3aANZ6LNLeL/pVkIxXz7Fkx3B?=
 =?iso-8859-1?Q?wZ9LjQaNLQk06xE2/YurmnF/A8z6MUcB7OXoKt87nV59V1PZsAA7++KXGx?=
 =?iso-8859-1?Q?EvOTdzh1vAo1958zjGnKnVsYzAQRWZLly1iJWj9h7ur9ZSTj+VPa0J4rPv?=
 =?iso-8859-1?Q?o03MWq/XaBwrF6hnJX62+QPWxwoaH7ggu3yd1oRPSw9cmYjrg37up/K4+G?=
 =?iso-8859-1?Q?JxaGEBYM/Qtq554HNZaDES4vVYJyHufQht0cpjRXj4SZ3BcR79UuGV09MH?=
 =?iso-8859-1?Q?1yfr926GhaHvdd1WmsbFuiadDEHH4LI3qkXXJZ5KPutUbG7klXATnhwRMZ?=
 =?iso-8859-1?Q?DpOEHdHtZB0UU7TtTgbMetFFVGEEwSOtQWOQvjeAorBaKeLuir+ZJLnq1W?=
 =?iso-8859-1?Q?mowfqHZWV2Pu2QELio6gttcOT+7Zz09X42z1VwS+P4bS112vtWb1/BWIZk?=
 =?iso-8859-1?Q?qzxQb7ZIMZny0xcRl+0r5Noim2RXwy9B3u5v+80/TDvbmjTiv0NoN3FcaS?=
 =?iso-8859-1?Q?U/Jf5zdtkZnJmsCw94InOUlf668mMGPIW7xxoRADbBA0TXtoaFYtAynJzt?=
 =?iso-8859-1?Q?sePK3JJf8j6buNo/kV5gD9RzUhcReOzhc960fAU/GdSo5nz6BEhe5As5PL?=
 =?iso-8859-1?Q?zyRjRc1AyWbUBgGujG3ov66xVXEg7xO13m3D/y+yz14mriqhsjXNu47gqH?=
 =?iso-8859-1?Q?GEWAH6m5pCOGELnMv2Ey74DCTIDERzHcMRD/T05ziAfEH5HDrZXv2U4LMV?=
 =?iso-8859-1?Q?fmrh80U4JGNrQiyrmu/Y8+jhtnuV/ZIPlGIMDTbMwwb8Xc1IUaeWbzBIS+?=
 =?iso-8859-1?Q?npoHkIiv/WzgrareaKa7s5AkcLVJHNmP58kEvveKvrcMYK3kd76/FPkj0Y?=
 =?iso-8859-1?Q?fy3phSbhpAJ3qfWPyNZc/IayVMHnAIBwlP/wdlWE3T1TTMfdBbGFadGiD9?=
 =?iso-8859-1?Q?ZcCsgmoOs6bz2OBEnNwUE9XQBzlpisjfE+TzJ1iEC2ttfDSyNd5jeriGBW?=
 =?iso-8859-1?Q?oKzMi2YglePkAWRC18xW5Y7rzK2kLmtWjMV7JX5tf6YKp8kRtXMuBo84by?=
 =?iso-8859-1?Q?60MGmGzpA49jxZoBJNOO1tIgHN1WaVVRFFSAaObbmf9tc54/X1AqstxXju?=
 =?iso-8859-1?Q?S3uF7zqjeslm4Nu/2xu0wTM9bAba4OXgN1TCELJQgUaLz77U/WV9vwDfVn?=
 =?iso-8859-1?Q?0TWL4PIbC557xtD/kxq08nhl/NbGSC+P0bfx+qPofOSq3lwHPyhq6V5Nfy?=
 =?iso-8859-1?Q?GvZN71IM2Qxgr3lGlmLwLHP3olen3pIkYNNlVgit2w+/2mD7GO9Zk1yVeb?=
 =?iso-8859-1?Q?wLm0O0ps/ZhmcpuugW4op21PrAxhmis87NPyfrDfINHS/LlOBDUAyjmuPo?=
 =?iso-8859-1?Q?iHXyJtrgY/AOltGkI809UEXGz05/g7Xp5aV1DGXpsoBdba+i6vsp+cQ1KD?=
 =?iso-8859-1?Q?w0Tq7ta4tbRV/pU1Dgvbgj9bDvKngow4f08oBmg4BI7QuVCYAFe2yz9K/t?=
 =?iso-8859-1?Q?koezobyqVC/YDXPEOVTCbk0y5lO7rvuwBJo4YFkYZIJHEKHF1pcqR/EeFL?=
 =?iso-8859-1?Q?pVAzKlNlDESzSHI10USzW9FDqk/Q0Xx9G4Pf5hBJE3xbo4qxM61reRs5Pn?=
 =?iso-8859-1?Q?a81XtA0CZXt9hNSYdxgEIfxnUu0GBfxPAqzJGh97LziTJe9o/YFQ64orSt?=
 =?iso-8859-1?Q?Lp2S3SRoQsbdoP4V1RvGXyFR/axrJ6A=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB6070.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 324cc903-4569-4a7e-345c-08df3a2c127f
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 04:28:27.2665
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: s/10ShI5mO3zXF17sU9x0i6kOHHUZzUzbVoEbpD8zmkdW6E/5biHQUlAD3W6uTY6EDPdsTIqH3hYP1BfzKFJ7bLtFv37J9uxk5Em3nR3Vyk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR03MB6768
X-purgate-ID: tlsNG-33051d/1793766511-764FC4E9-1AF56BD1/0/0
X-purgate-type: clean
X-purgate-size: 21730

Hi,


I'm sorry, I postponed documentation review till we finished with code
part. This was my mistake. I didn't expected that it require serious
proofreading. Anyway, I tried to highlight most glaring mistakes, but it
would be great if you proofread it by yourself once again.

Oleksii Moisieiev <Oleksii_Moisieiev@epam.com> writes:

> From: Grygorii Strashko <grygorii_strashko@epam.com>
>
> Add SCI SCMI SMC multi-agent driver documentation.
> It includes a detailed description of the SCMI multi-agent driver.
> This document explains the driver's functionality, configuration,
> and the compilation process. The Xen SCMI multi-agent driver is
> designed to provide SCMI access to system resources from different
> domains.
>
> Signed-off-by: Grygorii Strashko <grygorii_strashko@epam.com>
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
> ---
>
> (no changes since v14)
>
> Changes in v14:
> - describe secondary agents as xen,scmi-agent nodes under agents
> - update host, discovery and dom0less examples for the child-node format
> - clarify shared-memory placement and platform RAM reservations
>
> Changes in v10:
> - rephrase section about /firmware/scmi. Mentioned that this node is
> taken from Host DT and copied unmodified.
> - fix xen,reg address for secondary domains for Dom0less configuration
>
> Changes in v8:
> - update documentation to match the last DT format
> - fixed RST: "... code-block:: dts" -> ".. code-block:: dts"
> - update documentation with dom0less configuration example
> - update documentation with new param xen,dom0-sci-agent-id
> instead of the command line parameter
>
> Changes in v7:
> - update documentation in section of the xen_scmi configuration which
> is matched by "xen,sci" compatible instead of the direct path.
>
> Changes in v6:
> - remove all HVC mentions from the multi-agent doc
> - update sci-agent-id parameter description in the documentation
> - add missing Sign-of
> - minor fixes across the document
>
> Changes in v5:
> - rework multi-agent driver to leave Host Device-tree unmodified
>
>  .../arm/firmware/arm-scmi.rst                 | 405 ++++++++++++++++++
>  1 file changed, 405 insertions(+)
>
> diff --git a/docs/hypervisor-guide/arm/firmware/arm-scmi.rst b/docs/hyper=
visor-guide/arm/firmware/arm-scmi.rst
> index d9698f4e4b..25459d22dc 100644
> --- a/docs/hypervisor-guide/arm/firmware/arm-scmi.rst
> +++ b/docs/hypervisor-guide/arm/firmware/arm-scmi.rst
> @@ -36,6 +36,8 @@ The below sections describe SCMI support options availa=
ble for Xen.
>
>  | [1] `Arm SCMI
>  | <https://developer.arm.com/documentation/den0056/latest/>`_
>  | [2] `System Control and Management Interface (SCMI) bindings
>  | <https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi=
t/tree/Documentation/devicetree/bindings/firmware/arm,scmi.yaml>`_
> +| [3] `Generic Domain Access Controllers bindings <https://web.git.kerne=
l.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/device=
tree/bindings/access-controllers/access-controllers.yaml>`_
> +
>
>  Simple SCMI over SMC calls forwarding driver (EL3)
>  ------------------------------------------------------
> @@ -189,3 +191,406 @@ except explicitly enabling SCMI with "arm_sci" xl.c=
fg option.
>      ->        xen,reg =3D <0x0 0x47ff0000 0x0 0x1000 0x0 0x22001000>;
>      ->        xen,force-assign-without-iommu;
>        };
> +
> +SCMI SMC multi-agent driver (EL3)
> +-------------------------------------
> +
> +The SCMI SMC multi-agent driver enables support for ARM EL3 Trusted Firm=
ware-A (TF-A) which
> +provides SCMI interface with multi-agent support, as shown below.
> +
> +::
> +
> +      +-----------------------------------------+
> +      |                                         |
> +      | EL3 TF-A SCMI                           |
> +      +-------+--+-------+--+-------+--+-------++
> +      |shmem1 |  |shmem0 |  |shmem2 |  |shmemX |
> +      +-----+-+  +---+---+  +--+----+  +---+---+
> +    smc-id1 |        |         |           |
> +    agent1  |        |         |           |
> +      +-----v--------+---------+-----------+----+
> +      |              |         |           |    |

Xen, I believe?

> +      |              |         |           |    |
> +      +--------------+---------+-----------+----+
> +             smc-id0 |  smc-id2|    smc-idX|
> +             agent0  |  agent2 |    agentX |
> +                     |         |           |
> +                +----v---+  +--v-----+  +--v-----+
> +                |        |  |        |  |        |
> +                | Dom0   |  | Dom1   |  | DomX   |
> +                |        |  |        |  |        |
> +                |        |  |        |  |        |
> +                +--------+  +--------+  +--------+
> +
> +The EL3 SCMI multi-agent firmware is expected to provide SCMI SMC shared=
-memory transport
> +for every Agent in the system. The SCMI Agent transport channel defined =
by pair:
> +
> +- smc-id: SMC function id used for Doorbell
> +- shmem: shared memory for messages transfer, **Xen page aligned**.
> +  Shared memory is mapped with the following flags: MT_DEVICE_nGnRE and =
_PAGE_DEVICE, indicating that this

Do we have any line length limitation for .rst files? This one is 114
characters long.

> +  memory is mapped as device memory.
> +
> +The following SCMI Agents are expected to be defined by SCMI FW to enabl=
e SCMI multi-agent functionality
> +under Xen:
> +
> +- Xen management agent: trusted agents that accesses to the Base Protoco=
l commands to configure

"trusted agent", not "agents"

also, "that accesses the Base Protocol commands to configure..." or "that h=
as
access to the Base Protocol commands to configure..."

> +  agent specific permissions

"agent-specific"

> +- OSPM VM agents: non-trusted agent, one for each Guest domain which is =
 allowed direct HW access.

"non-trusted agents". Also, double space between "is" and "allowed"

> +  At least one OSPM VM agent has to be provided by FW if HW is handled o=
nly by Dom0 or Driver Domain.

"Hardware Domain", probably

> +
> +The EL3 SCMI FW is expected to implement following Base protocol message=
s:
> +
> +- BASE_DISCOVER_AGENT (required for Xen; required for secondary agents w=
ithout ``reg``)
> +- BASE_RESET_AGENT_CONFIGURATION (optional)

How Xen can guarantee that SCMI state is sane, if it can't reset agent
during domain destruction?

> +- BASE_SET_DEVICE_PERMISSIONS (optional)

If this is optional, does it mean that each agent will have access to
all devices in the system?

> +
> +The number of supported SCMI agents and their transport specifications a=
re SCMI FW implementation
> +specific.
> +
> +Compiling with multi-agent support
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +To build with the SCMI SMC multi-agent driver support, enable Kconfig op=
tion:
> +
> +::
> +
> +    CONFIG_SCMI_SMC_MA
> +
> +
> +Driver functionality
> +^^^^^^^^^^^^^^^^^^^^
> +
> +The SCI SCMI SMC multi-agent driver implements following functionality:
> +
> +- The driver is initialized from the Xen SCMI container ``xen_scmi_confi=
g``

Why "container"? It is called "node" in Device Tree lingo.

> +  under ``/chosen/xen`` (for example ``/chosen/xen/xen_scmi_config/scmi`=
`).
> +  Only one SCMI interface is supported. The SCMI configuration must live=
 under
> +  the Xen SCMI container ``xen,sci`` beneath ``/chosen``.
> +  The Xen SCMI mediator will bind only to the "arm,scmi-smc" node that i=
s a child of
> +  this "xen,sci" container; any other "arm,scmi-smc" nodes (for example =
under
> +  "/firmware") are ignored to avoid stealing the host's SCMI OSPM instan=
ce.
> +
> +.. code-block:: dts
> +
> +        scmi_shm_1: sram@47ff1000 {
> +            compatible =3D "arm,scmi-shmem";
> +            reg =3D <0x0 0x47ff1000 0x0 0x1000>;
> +        };
> +        scmi_xen: scmi {
> +          compatible =3D "arm,scmi-smc";
> +          arm,smc-id =3D <0x82000003>; /* Xen management agent */
> +          #address-cells =3D < 1>;
> +          #size-cells =3D < 0>;
> +          #access-controller-cells =3D < 1>;
> +          shmem =3D <&scmi_shm_1>; /* Xen management shared memory */
> +        };
> +
> +.. note::
> +   This layout keeps the Host DT unchanged for Dom0 and baremetal Linux =
by
> +   using func_id 0x82000002 / shmem 0x47ff0000 for Dom0, while Xen uses =
a
> +   separate privileged channel func_id 0x82000003 / shmem 0x47ff1000. EL=
3
> +   firmware enforces permissions per agent_id, so there is no conflict b=
etween
> +   Dom0 and Xen channels.
> +
> +- The driver reads secondary agents from an ``agents`` child of the

"child node"

> +  ``xen,sci`` container. This child has ``#address-cells =3D <1>`` and
> +  ``#size-cells =3D <0>``. Each enabled ``xen,scmi-agent`` child specifi=
es its
> +  doorbell in ``arm,smc-id`` and a single shared-memory phandle in ``shm=
em``.
> +  The optional single-cell ``reg`` property supplies the SCMI agent ID
> +  (0..254). IDs must be unique and distinct from Xen's management agent.
> +  At least one enabled secondary agent is required.
> +
> +  The shared-memory nodes remain under ``xen_scmi_config``; the host OSP=
M

I don't think that "remain" is a correct word here. Maybe "stay?". Or
reword it altogether: "The SCMI-specific ``shared-memory`` nodes should
be placed in ``xen_scmi_config`` node"

> +  shared-memory node and ``/firmware/scmi`` remain in the platform DT.
> +  A shared-memory node describes a channel location and does not reserve=
 RAM.
> +  If buffers occupy system RAM, the platform must reserve the entire
> +  firmware-owned range in ``/reserved-memory`` before Xen boots. A singl=
e
> +  reservation may cover multiple channels, including unused ones. SRAM
> +  outside system RAM does not require a RAM reservation. The channel nod=
es
> +  do not have to be moved into ``/reserved-memory``.
> +
> +.. code-block:: dts
> +
> +    / {
> +        #address-cells =3D <2>;
> +        #size-cells =3D <2>;
> +
> +        scmi_shm_0: sram@47ff0000 {
> +            compatible =3D "arm,scmi-shmem";
> +            reg =3D <0x0 0x47ff0000 0x0 0x1000>;
> +        };
> +
> +        firmware {
> +            scmi: scmi {
> +                compatible =3D "arm,scmi-smc";
> +                arm,smc-id =3D <0x82000002>; /* Host OSPM agent smc-id *=
/
> +                #address-cells =3D <1>;
> +                #size-cells =3D <0>;
> +                shmem =3D <&scmi_shm_0>; /* Host OSPM agent shmem */
> +            };
> +        };
> +
> +        chosen {
> +            #address-cells =3D <2>;
> +            #size-cells =3D <2>;
> +            ranges;
> +
> +            xen {
> +                #address-cells =3D <2>;
> +                #size-cells =3D <2>;
> +                ranges;
> +
> +                xen_scmi_config {
> +                    compatible =3D "xen,sci";
> +                    #address-cells =3D <2>;
> +                    #size-cells =3D <2>;
> +                    ranges;
> +                    xen,dom0-sci-agent-id =3D <0>;
> +
> +                    /* Xen management channel */
> +                    scmi_shm_1: sram@47ff1000 {
> +                        compatible =3D "arm,scmi-shmem";
> +                        reg =3D <0x0 0x47ff1000 0x0 0x1000>;
> +                    };
> +
> +                    scmi_shm_2: sram@47ff2000 {
> +                        compatible =3D "arm,scmi-shmem";
> +                        reg =3D <0x0 0x47ff2000 0x0 0x1000>;
> +                    };
> +
> +                    scmi_shm_3: sram@47ff3000 {
> +                        compatible =3D "arm,scmi-shmem";
> +                        reg =3D <0x0 0x47ff3000 0x0 0x1000>;
> +                    };
> +
> +                    scmi_xen: scmi {
> +                        compatible =3D "arm,scmi-smc";
> +                        arm,smc-id =3D <0x82000003>; /* Xen management s=
mc-id */
> +                        #address-cells =3D <1>;
> +                        #size-cells =3D <0>;
> +                        #access-controller-cells =3D <1>;
> +                        shmem =3D <&scmi_shm_1>; /* Xen management agent=
 shmem */
> +                    };
> +
> +                    agents {
> +                        #address-cells =3D <1>;
> +                        #size-cells =3D <0>;
> +
> +                        agent@0 {
> +                            compatible =3D "xen,scmi-agent";
> +                            reg =3D <0>;
> +                            arm,smc-id =3D <0x82000002>;
> +                            shmem =3D <&scmi_shm_0>;
> +                        };
> +
> +                        agent@2 {
> +                            compatible =3D "xen,scmi-agent";
> +                            reg =3D <2>;
> +                            arm,smc-id =3D <0x82000004>;
> +                            shmem =3D <&scmi_shm_2>;
> +                        };
> +
> +                        agent@3 {
> +                            compatible =3D "xen,scmi-agent";
> +                            reg =3D <3>;
> +                            arm,smc-id =3D <0x82000005>;
> +                            shmem =3D <&scmi_shm_3>;
> +                        };
> +                    };
> +                };
> +            };
> +        };
> +    };
> +
> +The ``xen,sci`` subtree is omitted from Dom0's DT. The host OSPM channel=
 is
> +copied to Dom0 when SCMI is enabled for it. Xen uses its separate privil=
eged
> +management channel to configure the other agents.
> +
> +To discover a secondary agent ID through ``BASE_DISCOVER_AGENT``, omit
> +``reg`` and use a node name without a unit address. For example, replace
> +only ``agent@2`` above with:
> +
> +.. code-block:: dts
> +
> +    agent-domu {
> +        compatible =3D "xen,scmi-agent";
> +        arm,smc-id =3D <0x82000004>;
> +        shmem =3D <&scmi_shm_2>;
> +    };
> +
> +Providing ``reg`` skips mapping and probing that secondary channel durin=
g
> +initialization. A malformed ``reg`` is rejected. Xen always discovers it=
s
> +own management agent ID. Thus ``BASE_DISCOVER_AGENT`` is mandatory for t=
he
> +management channel and for secondary channels whose ``reg`` is omitted.
> +The former flat secondary-agent properties are replaced by these nodes.
> +
> +.. note::
> +
> +    Note that Xen is the only one entry in the system which need to know=
 about SCMI multi-agent support.
> +
> +- The driver implements the SCI subsystem interface required for configu=
ring and enabling SCMI
> +  functionality for Dom0/hwdom and Guest domains. To enable SCMI functio=
nality for guest domain

"for a guest domain"

> +  it has to be configured with unique supported SCMI Agent_id and use co=
rresponding SCMI SMC

sometimes you write "agent_id" and sometimes "Agent_id"...

> +  shared-memory transport ``[smc-id, shmem]`` defined for this SCMI Agen=
t_id.
> +
> +- Once Xen domain is configured it can communicate with EL3 SCMI FW:
> +
> +  - zero-copy, the guest domain puts/gets SCMI message in/from shmem;

"to/from shmem". Also, "zero-copy: ", maybe?

> +  - the guest triggers SMC exception with agent "smc-id" (doorbell);
> +  - the Xen driver catches exception, do checks and synchronously forwar=
ds it to EL3 FW.

not "do checks". "Perform checks", maybe?


> +
> +- the Xen driver sends BASE_RESET_AGENT_CONFIGURATION message to Xen man=
agement agent channel on
> +  domain destroy event. This allows to reset resources used by domain an=
d so implement use-case

s/so//

> +  like domain reboot.
> +
> +
> +Configure SCMI for Dom0

"How to configure..." or "Configuring..."

> +^^^^^^^^^^^^^^^^^^^^^^^
> +Set the Dom0 SCMI agent ID in the device tree using the Xen SCMI contain=
er under ``/chosen``.
> +Add ``xen,dom0-sci-agent-id`` to the ``xen,sci`` node. If the property i=
s absent, SCMI stays
> +disabled for Dom0 and the SCMI nodes are removed from Dom0 DT.
> +
> +.. code-block:: dts
> +
> +  chosen {
> +    xen {
> +      ranges;
> +      xen_scmi_config {
> +        compatible =3D "xen,sci";
> +        xen,dom0-sci-agent-id =3D <0>;  /* Dom0 agent ID */
> +        /* agents, shared memory and scmi_xen as shown above */
> +      };
> +    };
> +  };
> +
> +The Host DT ``/firmware/scmi`` node is copied to the Dom0 DT unmodified.=
 However, for Dom0 SCMI
> +configuration, Xen relies on the ``agents`` child and the ``xen,dom0-sci=
-agent-id``

"child node"

> +property from the ``xen,sci`` container under ``/chosen``. If the ``/fir=
mware/scmi`` node is
> +missing or disabled, or if ``xen,dom0-sci-agent-id`` is not provided, th=
e Dom0 SCMI agent will not
> +be configured.

> +
> +.. note::
> +
> +  The ``xen,dom0-sci-agent-id`` value must match the ``func_id`` and ``s=
hmem`` pairing provided by
> +  the EL3 firmware for Dom0 (for example in the ``/firmware/scmi`` node)=
.

Well, maybe better to use phandle then? Like

xen,dom0-sci-agent-id=3D<&agent@0>

> +
> +Configure SCMI for for guest domain with toolstack

"How to configure..." or "Configuring..."

> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +* In domain's xl.cfg file add **"arm_sci"** option as below
> +
> +::
> +
> +    arm_sci =3D "type=3Dscmi_smc_multiagent,agent_id=3D2"
> +
> +* In domain's xl.cfg file enable access to the "arm,scmi-shmem" which sh=
ould correspond
> +  assigned "agent_id" for the domain, for example:
> +
> +::
> +
> +    iomem =3D [
> +        "47ff2,1@22001",
> +    ]
> +
> +.. note:: It's up to the user to select guest IPA for mapping SCMI share=
d-memory.
> +
> +* Add SCMI nodes to the Driver domain partial device tree as in the belo=
w example.
> +  The "arm,smc-id" should correspond assigned agent_id for the domain:
> +
> +.. code::
> +
> +    passthrough {
> +       scmi_shm_0: sram@22001000 {
> +           compatible =3D "arm,scmi-shmem";
> +           reg =3D <0x0 0x22001000 0x0 0x1000>;
> +       };
> +
> +       firmware {
> +            compatible =3D "simple-bus";
> +                scmi: scmi {
> +                    compatible =3D "arm,scmi-smc";
> +                    arm,smc-id =3D <0x82000004>;  <--- smc-id for agent_=
id=3D2
> +                    shmem =3D <&scmi_shm_0>;
> +                    ...
> +                }
> +        }
> +    }
> +
> +**Device specific access control**
> +
> +The XEN SCMI SMC multi-agent driver performs "access-controller" provide=
r function in case
> +EL3 SCMI FW implements SCMI "4.2.1.1 Device specific access control" and=
 provides the
> +BASE_SET_DEVICE_PERMISSIONS command to configure the devices that an age=
nts have access to.
> +The Host DT SCMI node should have "#access-controller-cells=3D<1>" prope=
rty and DT devices should
> +be bound to the SCMI node using Access Controllers bindings [3].
> +
> +For example:
> +
> +.. code-block:: dts
> +
> +    &i2c1 {
> +            access-controllers =3D <&scmi 0>;
> +    };
> +
> +Use domain's xl.cfg file **"dtdev"** property to assign SCMI devices fro=
m toolstack to the guest:
> +
> +::
> +
> +    dtdev =3D [
> +        "/soc/i2c@e6508000",
> +    ]
> +
> +.. note::
> +
> +    xl.cfg:"dtdev" need contain all nodes which are under SCMI managemen=
t (not only those which are

"need to contain"

> +    behind IOMMU) and passed-through to the guest domain.
> +
> +Configure SCMI for predefined domains (dom0less)

(the same as for previous section header)

> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +* add "xen,sci_type" and "xen,sci-agent-id" properties for required DomU=
 ("xen,domain") node
> +
> +::
> +
> +    xen,sci_type=3D"scmi_smc_multiagent"
> +    xen,sci-agent-id=3D2
> +
> +* add scmi nodes to the Driver domain partial device tree the same way a=
s above (toolstack case) and
> +  enable access to the "arm,scmi-shmem" according to the dom0less docume=
ntation. For example:
> +
> +.. code-block:: dts
> +
> +      scmi_shm_0: sram@22001000 {
> +            compatible =3D "arm,scmi-shmem";
> +            reg =3D <0x00 0x22001000 0x00 0x1000>;
> +    ->        xen,reg =3D <0x0 0x47ff2000 0x0 0x1000 0x0 0x22001000>;
> +    ->        xen,force-assign-without-iommu;
> +      };
> +
> +* For SCMI device access control configure pass-through devices in the g=
uest partial DT according to
> +  the dom0less documentation and ensure that devices SCMI management has=
 "xen,path" property set:
> +
> +Use the complete Xen SCMI configuration above. Remove
> +``xen,dom0-sci-agent-id`` if Dom0 does not use SCMI. The guest selects t=
he
> +secondary channel described by ``agent@2``:
> +
> +.. code-block:: dts
> +
> +    chosen {
> +        xen,domain@1 {
> +            compatible =3D "xen,domain";
> +            xen,sci_type =3D "scmi_smc_multiagent";
> +            xen,sci-agent-id =3D <2>;
> +            /* other domain properties here */
> +        };
> +    };
> +
> +.. code-block:: dts
> +
> +             i2c@e6508000 {
> +            ...
> +                     reg =3D <0x00 0xe6508000 0x00 0x1000>;
> +    ->        xen,path =3D "/soc/i2c@e6508000"
> +    ->        xen,reg =3D <0x0 0xe6508000 0x0 0x1000 0x0 0xe6508000>;
> +    ->        xen,force-assign-without-iommu;
> +        };

--
WBR, Volodymyr


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 06:10:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 06:10:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471352.1679794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUBx-0005Ab-LM; Wed, 04 Nov 2026 06:09:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471352.1679794; Wed, 04 Nov 2026 06:09:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUBx-0005AU-IF; Wed, 04 Nov 2026 06:09:49 +0000
Received: by outflank-mailman (input) for mailman id 1471352;
 Wed, 04 Nov 2026 04:51:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <oss.patchbox@gmail.com>) id 1xOSxq-0004Qx-Dl
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 04:51:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOSxp-008rnK-JX
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 05:51:09 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oss.patchbox@gmail.com>)
 id 6aeab9a2-8faa-0a2a0a5109dd-0a2a4502ce78-12
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:51:06 +0100
Received: from [209.85.219.51] (helo=mail-qv1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oss.patchbox@gmail.com>)
 id 6aeab9b9-6ca4-0a2a45020019-d155db33e9c7-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:51:06 +0100
Received: by mail-qv1-f51.google.com with SMTP id
 6a1803df08f44-91c67992ce5so2910836d6.3
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 20:51:06 -0800 (PST)
Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e7dfe973bsm9124196d6.22.2026.11.03.20.51.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 03 Nov 2026 20:51:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793767865; x=1794372665; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=Lko1J/xdlV9mXW4kngv+mqRt+rt4DBpN9L4JspYiP7M=;
        b=TMo/rHvacQX9Lq+rchRmEfUrQMBNGGQypMbapTXQdhcEQdwJ7JRJp5NmYv1+neVXl+
         mXQZXZGAeKqgPz5pXhV2OZKtefdGG7CRkhMDNrk++Rqu/5VBOTqiqiR1qe3G233QiSl6
         TBSrQCoZ+3sIdl7CxNXjFiT3yjoltYMR7fh0R6Klf8QgwTpB4mumP4EdRtwUebXZDM/O
         2pQA5aAACwSByKf3Pp32SgUGEMfzQXEv7MccCH07ifLkOpA1+WH8EOzvqLjSlASxamKA
         Nc36oGaQUPQN4zrxAk7FGQYiP7VEurW+USpQs+9prbOE1MlHsNztDyzWXm2tM5hq0bxr
         5sBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793767865; x=1794372665;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Lko1J/xdlV9mXW4kngv+mqRt+rt4DBpN9L4JspYiP7M=;
        b=Ig+FvxSpE68nxRG3IdNaIL7hvNlCz3UsG2dTys04FltNhQNdXZbYfP1M1F56gByiTo
         d2OK2SJJiPyzymZrwe6htEwrUaVT01EnjPZTo0EELKwG6aWMzyMbn3Ozt3lr/QnCn6WV
         ZMX1kS82kJkABX4bYsll73OxjawSqVX29BWU9oZLEdk5fQNdeO8+/18cZhpI6QK8jAav
         nHxpjeQjsNGAfdPF9x5EjjBbB1+5jrpFJ5dx9jAiAjHyWXSFHNjTgMieHTG1wFnO/nLM
         k8hIH4FQgJe3E8Kos3DBXmkI//eznF9J+5FPIimMC0LpPis50ihtmPhw+GQJy2BMjsT9
         jfcg==
X-Gm-Message-State: APuU4Z9PDA/kyZ6No/u8Yp/J/djjyFBBk9eVgs3JhyWSdAvDN91mrMwo
	zefqr/mTo/eeV3Qqr/T4dKvTt5VL6LfvIse9MkQSIBlxlenYos8XXiyHfatxRw==
X-Gm-Gg: AYBFou3vHQguG17j492EHmcabt0jMId2FVB1kPLuOHOkBxVVOyTfhI6Bnu+hw4Xxp8O
	7WBHwl9MFT/PGHTzEK92g04aY1qtSb5q5hH5tMTYfX2tKimAqV2ZtV5TkWmmyHXB7+VH6gbvZd9
	L24iCeld3kVrNKxmn+xzzIwvhHVktHKv0OvypmWJ2DS6qgEvDigMy1FPuqomzT0XZLWV59gj8jM
	UVd6DVUF7dXOYfa4oxLKhF7a5dn3LS2Dws1OsVBWV65reCyT4PRnR3lyYCwkcuYwGo2yRwo5+uq
	TufB7gl/ijqzEqmy06HswYuLj5umFSa5EviLz/PRf3lI4QyxHleSwkVckO+xIqRftLq83+ZOBCT
	H9ung94DoFgB4GfLK8lnHq+G1PMcbyP2wWkVxy9wbei4jpmdJk8TGR2xOKASvFEkjvuOMeAOVaH
	yUomUxnESUlQFhauzjQWom+BOEOWpZRiksXCIaAiEBI9yQm+VZmGbdZWhTfF/N7OokAmY/Wyd/9
	m6mLVgj4n1z4OpycAbjat/pNEGc/KU2PxLPQ2+UVwkIvSw3iKeGd3P7EjCAC7Gms2kwXdUpkYtA
	ti7YxxOY/W4emd4+tNJNja0/lpf0ec9S8p8gZJCYD0UI2UWnRIl8
X-Received: by 2002:a05:6214:519b:b0:91c:64ec:33e1 with SMTP id 6a1803df08f44-91ca4bc6c82mr238028266d6.53.1793767865247;
        Tue, 03 Nov 2026 20:51:05 -0800 (PST)
From: Yuho Choi <oss.patchbox@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Yuho Choi <oss.patchbox@gmail.com>
Subject: [PATCH] x86/platform: fix the MTRR rollback in XENPF_add_memtype
Date: Tue,  3 Nov 2026 23:50:50 -0500
Message-ID: <20261104045058.1434821-1-oss.patchbox@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793767866-668B42AC-F3DF2DBC/0/0
X-purgate-type: clean
X-purgate-size: 1272

If copying the result back to the caller fails, XENPF_add_memtype
tries to undo mtrr_add_page() with mtrr_del_page(ret, 0, 0). By then
ret holds -EFAULT, so mtrr_del_page() looks up an MTRR with base and
size 0 and releases nothing. The register that was added, or whose
usage count was raised, stays in use, and the caller only gets
-EFAULT, without the register number it would need to delete it.

Pass the register number saved in op->u.add_memtype.reg instead.

Fixes: 8ee614278c2d ("[XEN] Fix memtype accessor domctls.")
Signed-off-by: Yuho Choi <oss.patchbox@gmail.com>
---
Build-tested only (x86_64 defconfig); not run.

 xen/arch/x86/platform_hypercall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c
index 6dee4922f3..0f3c791fc2 100644
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -295,7 +295,7 @@ ret_t do_platform_op(
             ret = __copy_field_to_guest(u_xenpf_op, op, u.add_memtype) ?
                   -EFAULT : 0;
             if ( ret != 0 )
-                mtrr_del_page(ret, 0, 0);
+                mtrr_del_page(op->u.add_memtype.reg, 0, 0);
         }
         break;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 06:33:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 06:33:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471427.1679804 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUYP-0000jI-DP; Wed, 04 Nov 2026 06:33:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471427.1679804; Wed, 04 Nov 2026 06:33:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUYP-0000jB-A9; Wed, 04 Nov 2026 06:33:01 +0000
Received: by outflank-mailman (input) for mailman id 1471427;
 Wed, 04 Nov 2026 06:33:00 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOUYO-0000j5-KY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 06:33:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOUYO-0094eY-0w
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:33:00 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aead186-bab6-0a2a0a5309dd-0a2a4505816c-38
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:32:59 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aead19b-4cb1-0a2a45050019-d155dd31dcc1-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:32:59 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48c5358fc28so263458f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 22:32:59 -0800 (PST)
Received: from ?IPV6:2003:ca:b725:cdd3:6826:c9b1:b0c4:292e?
 (p200300cab725cdd36826c9b1b0c4292e.dip0.t-ipconnect.de.
 [2003:ca:b725:cdd3:6826:c9b1:b0c4:292e])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed45d7f7sm2031098f8f.38.2026.11.03.22.32.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 22:32:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793773979; x=1794378779; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=o2Z0FGgbycCNZtYGy3QAW8z3RKcD8L5wekjeHqw95lU=;
        b=MKLiPG3ty/V73sBnEqhZHH1DNAVgYoCf6mlLolz7DvFqQCBLABN6mYJjTk0S9jXSQW
         yC/Erya/kB3ffnuqMMSWzkjOfXxIs2WmE5xCZrPLNB4YtDPeQWppyN4rcfDqyKLRL2fI
         q/3MNhqdGeB0esyUeVLwT8guExEfOjF47463S+W9jiKijT+JwkhvZTqtAyqHGv4ePK4g
         Dq2fFDY6F67Ao7sJah1vw1WYIm7ZDk2q8FOQ5zwvvnVsZ/XasbKmdcFKQpeaiZ56ImwJ
         /Ehk11GTb4nICWT2F/QdhLHu0acTGXA9qmD6WBQo1Se/o0kJTnBFC9oXyc/gmN+roemr
         b8hQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793773979; x=1794378779;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=o2Z0FGgbycCNZtYGy3QAW8z3RKcD8L5wekjeHqw95lU=;
        b=nlpeAQLv55t62hYAEqwGvqA22LZ483NJ0+wh81uivVEivTKcOcDFETo7IIbFLo8264
         9Y4K3nrtP9rmF2HK1vI6SbUGIizH8EhZ/63IXmFLiV5PqiIItTnWlsnc7fzfzWbhgzEo
         w4gRpGQmygeo2QszdhOqMVEPpV4ml1a2wPYRuk/QUBW/8NK9ur9/bwDNKUB2T3J77EQ5
         ISQhhPJmOmg27z4PLoxWYszNvNhghtsnj9Hf8XdJoC//I5mTe1nFZFkce27/YDdj/dto
         3vNTf97nLr9SUE3T6fnbacf5ygsnY2FvczThGtBCPy7/6bCjDUQ2cg3n2WWnHUqEDjw+
         95tQ==
X-Forwarded-Encrypted: i=1; AKwUvBxKOxiYxtNOhgBlOtOd+UW/A0IBStcqX64lswAGSEcfImSvQ+zgW+/8Ij3/KT7dvqJwwYoMdWnKaxE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9tqFdjNWrlZFl8R7E6wJaAqytcNX+wF1iK25GNsvSaH8UmGinw
	pah1FuhEtov/SUDuEtcE8lrHP2/cCvz7bKO0bAAWnhj1tho+DMpQepcfVu/Zn9MrbQ==
X-Gm-Gg: AYBFou2dHGqFgP439j8MbztF5rd+y2Rt5dyWEF5iumntMaaCy2eC0mwICrnM+3KKH78
	jARlU3sFPYWwLrf5OSvErfakeRclbh01fZ2EaIZgitBgBlayYCGLVZA/0JLl77zfo87XWuR4a7A
	X+s1gh/HfJYg884HRjYQ71D7ACA1KPazal99Tog/iF+UwQ+xlG4uchQnC0hpDIGUP3VTEudnhg0
	1x19jRhP1iEeVvf6nZlRK2O8u4G9kQ/iSUvZwSblnt1XHak1etFriwm8Qbwwrzw30/EWw/fOk5k
	QxqlMiUpWueyY3b11dkgitwUXJ0nB41Lmz3tjCwDBd9GyJCmDBH5uQFNQ8EZa7UjC3v/zV0xM69
	GVFOD4qbKN2x6x0yaVAjAgYJFmdwTowhILC815q7bz06punBuEYcoC8eUIZ0rkeailAqu3f1XGS
	CVGfeseqB6oceP6TCHxMDrIhkHBNKokefLoCM1XdaJE7fazvabUfKfpp3k/TiWwbwRrNfQXCm/x
	7MhDWva9LSqvmaYZ+ddsb2bUfcUxm0hpUBsqAS80zzAkHwypj7S6jDXLhLwrR7zygRQQ08yslk9
	utzjqy0m/vaZ5PzWaiasEa+xECGKkvF69nowEMbb3A6+7anzXhvh+9aXxDtHY5raZDiA8J7uDg8
	fvC7+teZE6UUK0+Sytw6wVblKaQ/My5fWYpvat7tKOobEHOrOI3ZIvk9Hd855
X-Received: by 2002:a05:6000:184b:b0:48d:deaa:4dbb with SMTP id ffacd0b85a97d-48e6e2fc210mr33608354f8f.40.1793773979193;
        Tue, 03 Nov 2026 22:32:59 -0800 (PST)
Message-ID: <17601420-778b-4b68-983b-656edf3124cc@suse.com>
Date: Wed, 4 Nov 2026 07:32:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 21/22] libxl/arm: Introduce domctl command for IOMMU
 vSID mapping
To: Milan Djokic <milan_djokic@epam.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793726692.git.milan_djokic@epam.com>
 <ee5fcdb5f74ab0c367e3006310b556bc4f5250da.1793726692.git.milan_djokic@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ee5fcdb5f74ab0c367e3006310b556bc4f5250da.1793726692.git.milan_djokic@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793773979-736BD2A1-A6BC3E70/10/78276251493
X-purgate-type: spam
X-purgate-size: 2082

On 03.11.2026 18:30, Milan Djokic wrote:
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -1279,6 +1279,26 @@ struct xen_domctl_get_domain_state {
>      uint64_t unique_id;      /* Unique domain identifier. */
>  };
>  
> +/*
> + * XEN_DOMCTL_viommu_alloc_vsid_range
> + *
> + * Allocate guest vSID range and
> + * establish pSID->vSID mapping for target range and physical IOMMU (phandle).
> + * Allocated range is continous
> + */
> +struct xen_domctl_viommu_alloc_vsid_range {
> +    /* IN: Range first pSID  */
> +    uint32_t first_psid;
> +    /* IN: Physical IOMMU phandle behind which the target device streams are configured */
> +    uint32_t phandle;
> +    /* IN: Number of vSIDs to allocate */
> +    uint16_t nr_sids;
> +    /* padding, must be 0 */
> +    uint16_t pad;
> +    /* OUT: Mapped range first vSID */
> +    uint32_t first_vsid;
> +};
> +
>  struct xen_domctl {
>  /* Stable domctl ops: interface_version is required to be 0.  */
>      uint32_t cmd;
> @@ -1371,6 +1391,7 @@ struct xen_domctl {
>  #define XEN_DOMCTL_gsi_permission                88
>  #define XEN_DOMCTL_set_llc_colors                89
>  #define XEN_DOMCTL_get_domain_state              90 /* stable interface */
> +#define XEN_DOMCTL_viommu_alloc_vsid_range       91
>  #define XEN_DOMCTL_gdbsx_guestmemio            1000
>  #define XEN_DOMCTL_gdbsx_pausevcpu             1001
>  #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
> @@ -1439,6 +1460,7 @@ struct xen_domctl {
>  #endif
>          struct xen_domctl_set_llc_colors    set_llc_colors;
>          struct xen_domctl_get_domain_state  get_domain_state;
> +        struct xen_domctl_viommu_alloc_vsid_range viommu_alloc_vsid_range;
>          uint8_t                             pad[128];
>      } u;
>  };

One way or another this new sub-op wants explicitly marking as Arm-only.
The specific interface doesn't look like it might be meant to be arch-
independent, i.e. it's not just the fact that only Arm implements the
sub-op for now.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 06:37:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 06:37:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471439.1679814 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUd7-0001La-Vx; Wed, 04 Nov 2026 06:37:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471439.1679814; Wed, 04 Nov 2026 06:37:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUd7-0001LT-RX; Wed, 04 Nov 2026 06:37:53 +0000
Received: by outflank-mailman (input) for mailman id 1471439;
 Wed, 04 Nov 2026 06:37:52 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOUd6-0001LM-8S
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 06:37:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOUd5-00FSZM-Ht
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:37:51 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aead2b3-2eae-0a2a0a5409dd-0a2a45059dac-16
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:37:51 +0100
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aead2bd-4cb1-0a2a45050019-d155dd2bec9b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:37:50 +0100
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-48e4831c028so282551f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 03 Nov 2026 22:37:49 -0800 (PST)
Received: from ?IPV6:2003:ca:b725:cdd3:6826:c9b1:b0c4:292e?
 (p200300cab725cdd36826c9b1b0c4292e.dip0.t-ipconnect.de.
 [2003:ca:b725:cdd3:6826:c9b1:b0c4:292e])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed0844c8sm2137565f8f.26.2026.11.03.22.37.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 03 Nov 2026 22:37:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793774269; x=1794379069; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=MBykQPXKQvCmNmfGJvktyb+oW6DEUfPfa7BOi1X0UzY=;
        b=NEZPIZ/5t5OcrreQHOI+Vfa9MZSBUUkBH3Cs9a4xLTNwoI8L8p/dgQOn4Vy1W+ZVMB
         hvtiZSfZONGw5n0xr5ZWV1c9HpvnwQEqvD9Cjv++3oWzMzyxRxMtKXLeXoH6T6dIIzko
         qUjt3wOrpw1ah0mrShaMTDOmnSDyuIRxOqQjz0Umh5sahbKKrDjO4We28ZjeuBPwJN26
         HGyYYFvQZax4VT3ZqKKCO9q3tyc7tKCYDCIhKT2eZFwbb8BAduFOXS5bsMZH84wj95/5
         qnUgKGdIDreLtysKUd2eUDDegvsvhY2y1fVcqOV+ohlaELK089t1ltrbd+KvBtSz1gN/
         aI/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793774269; x=1794379069;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=MBykQPXKQvCmNmfGJvktyb+oW6DEUfPfa7BOi1X0UzY=;
        b=WQ30owD5i22dKe874W2OLlBW0JtjAwfiNvuxneqDZWVcgPtNLWjG0dZMf0cVBMgZMv
         CBQRvmFkhpLxmxD5jSC/yWF4qo5/a3p2KdMwBe3GV0ATWXWjLSxfweCCDophsvoRbEiS
         qj3I0o4TR0Io9hVea70/1mtpOix00TLAcjnGOzmq7+1rkfu8gVugSnN04mAvDLhUXSHp
         CJZ5RqD/Bpz1M/zAqPsvstVd/+QamsvEUqRmSyS+RrHzBmNklbBfcgkGRRhyYGlUefif
         A3gv0+HVUkffEs+geFAIFsnBWfWtRI8MqNeB40Rb3xJT7gyR/qGGGNis8BcbPzxTqITO
         clbg==
X-Forwarded-Encrypted: i=1; AKwUvBzRy/KgQQ6BUMZwtA+a21v3zi4TYuz80uLzn0cxTvHwTncn8DNIWQIkBB2BZIfx9xK7KSNVmmHkjGM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9bMOJ+xf4Y4FMonoSe4zOyV3teU+j0UVfgRFmPdZaXmhDRtURj
	YcS0+mPh2+/1gwb15gjoQWfxjcF8SetrnLL4aJkm64s0Hp3hpux8b4avvYwnLwZZtA==
X-Gm-Gg: AYBFou0s+rWcM4/4oxwOeb2RoSqgz4LQOigXWXAi27rwfvwQYzsr1/03cPW6TlnBpFQ
	T5wEm67VNmoDZkSleSKVkOwT1RFW/NeoAKmEFiXYhC1km7FaJIHexqLJ5fcoIFwad1Cg9TNZnlS
	k9upTFvuM5yC58amvkyL3MNN+CehBUY7zWUnDUP1rccxvjtQUZIDVm5T0aMaP4JlyHe0t8Oc5X5
	RoGGkWEPG/x3QdFg07vJO27GZGcfZ+wYz6H1p5FaKnWFt4+SoRfBhFvPjMX+Hp2Urre5QShBKcs
	DRjF309BRLRD3zXzICcWXFXlhi8pxmVsq3dqG6cwRx8KriDFRUfYLfuMCcFpBU0vompMEhxNZAs
	JhFlsS+dvizZmJHwVmlALrRGwEbfwySATGMs3Ch+BgHa9yr0b7IPQuzMpvXF3ViLNx/pHZqx5hg
	BIuwvwCl+12HcN6s5FDMqcEv+9Y8qeBFpLf51RAoVKZeAt6/b0r32UirBKke64tv0sbudhhmcBI
	ZjUq4LmdMpnZmSowBii3x9qmGsWSl1Nn4w1KBxJVoVXxqPEmkCC+U0cky1Z8QOujWNWhd4XOsvL
	Yeg2lTpX8U34fBVTXgiVVs2mn425vFnf6kw8KdCvWKsMQq3RlRwryFXDRDzvbwz3ZYQAJFIT7fd
	4GB16gVFjWtyEb1GCnm6YCFjctudH/a8dfK+BpPxgsztvX+2FsBZf10dkNDdJ
X-Received: by 2002:a05:6000:186f:b0:48f:db47:6ebf with SMTP id ffacd0b85a97d-48fdb476f92mr2428209f8f.38.1793774269558;
        Tue, 03 Nov 2026 22:37:49 -0800 (PST)
Message-ID: <e81c4959-401c-48ee-8fae-a7cc39e45a2c@suse.com>
Date: Wed, 4 Nov 2026 07:37:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/platform: fix the MTRR rollback in XENPF_add_memtype
To: Yuho Choi <oss.patchbox@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20261104045058.1434821-1-oss.patchbox@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261104045058.1434821-1-oss.patchbox@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793774270-F7CB82A1-23BFDE63/10/78276251493
X-purgate-type: spam
X-purgate-size: 1300

On 04.11.2026 05:50, Yuho Choi wrote:
> If copying the result back to the caller fails, XENPF_add_memtype
> tries to undo mtrr_add_page() with mtrr_del_page(ret, 0, 0). By then
> ret holds -EFAULT, so mtrr_del_page() looks up an MTRR with base and
> size 0 and releases nothing. The register that was added, or whose
> usage count was raised, stays in use, and the caller only gets
> -EFAULT, without the register number it would need to delete it.
> 
> Pass the register number saved in op->u.add_memtype.reg instead.
> 
> Fixes: 8ee614278c2d ("[XEN] Fix memtype accessor domctls.")
> Signed-off-by: Yuho Choi <oss.patchbox@gmail.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
for the immediate purpose. However, I wonder if we shouldn't drop the
rollback. Elsewhere when the final copy-out of a hypercall fails, we
don't do any such rollback.

Jan

> --- a/xen/arch/x86/platform_hypercall.c
> +++ b/xen/arch/x86/platform_hypercall.c
> @@ -295,7 +295,7 @@ ret_t do_platform_op(
>              ret = __copy_field_to_guest(u_xenpf_op, op, u.add_memtype) ?
>                    -EFAULT : 0;
>              if ( ret != 0 )
> -                mtrr_del_page(ret, 0, 0);
> +                mtrr_del_page(op->u.add_memtype.reg, 0, 0);
>          }
>          break;
>  



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 06:47:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 06:47:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471449.1679822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUm9-0002wg-Pl; Wed, 04 Nov 2026 06:47:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471449.1679822; Wed, 04 Nov 2026 06:47:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUm9-0002wZ-Mc; Wed, 04 Nov 2026 06:47:13 +0000
Received: by outflank-mailman (input) for mailman id 1471449;
 Wed, 04 Nov 2026 06:47:12 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Zhao.Jiaqing@amd.com>) id 1xOUm8-0002wS-DL
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 06:47:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOUm7-005mj0-QM
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:47:11 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Zhao.Jiaqing@amd.com>)
 id 6aead4e5-bab6-0a2a0a5309dd-0a2a4502dc80-30
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:47:10 +0100
Received: from [40.93.195.46]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Zhao.Jiaqing@amd.com>)
 id 6aead4ed-6ca4-0a2a45020019-285dc32edbcb-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:47:10 +0100
Received: from BN9PR03CA0367.namprd03.prod.outlook.com (2603:10b6:408:f7::12)
 by SA1PR12MB7150.namprd12.prod.outlook.com (2603:10b6:806:2b4::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Wed, 4 Nov
 2026 06:47:05 +0000
Received: from IA0PEPF00000045.namprd04.prod.outlook.com
 (2603:10b6:408:f7:cafe::31) by BN9PR03CA0367.outlook.office365.com
 (2603:10b6:408:f7::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Wed, 4
 Nov 2026 06:47:05 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 IA0PEPF00000045.mail.protection.outlook.com (10.167.249.169) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 06:47:05 +0000
Received: from zjiaqing-dev.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.53; Wed, 4 Nov
 2026 00:47:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=cbseGUAe85lzhhN1bIfrzt5CtesYSh992/W1hcfc3XRAbmjg1KNVeXyQIZJf5MHJ2Ir/INjEo4zBFR11P/As4YRo3KNMDnLcMv0umhk+ZrnjMtE8UGlWPjdNvZsVpmJ+34XGmQG22ReGqRxqbBn69Pf4lmnhHF4Mg7yFKB+yAfiH8g7NMsNcJDRQ4MfYtJEjdhU7sJVH4XS5tOfQe74fi3o7Fx2eKM3TbXHq2uwq1Sxa2IFLyPX1B3JYTMx3klWAkFVs+kLo43em22i7psuLURuzbmIR+jZt7slp7ELawOG61iRd2dFc1OVaxdINW7FXpI1ToJeI7br7mKmrIpcMNA==
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=xGbpboLTGfr9u2Y17PMtSLDxqQpn1FGLzhcqxMZFVTA=;
 b=BTnRwV3y1Yd3cinzQoe/Xd9DDAx9UW/BpB+4qkkDlDPO9Z1z37Yy9kFK3my+Z9y5ALtQEN4asadd+fh3xTEL4NKg5cqcF8KQw/qOS6EMpRpS3LtQKJTdXEp4xFTP8KdyGfKZLWMEx0/iPY9LRDpcA7t+Pb8nfjfJFl894UZAepIlUOxgNDBDaR7gGEJXYFAdJ1ALj/pUKaj3kTU+5Dz+GvpVSUllzdUOyinHUldHCXui6/hBuRc6SUqpGAXCYz2Rrp9WyAzilZZHf+hB3L3kxbYPgcPfU/oeDPa6vQGR/nq8mjLDHwESs965K7K5qPUJEX/ulx0iEeolpY2PxWcdbg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xGbpboLTGfr9u2Y17PMtSLDxqQpn1FGLzhcqxMZFVTA=;
 b=wBjMjhzgP1tGNLNlx6uduwcnEXBjE8gmPVv2zMu71MzKJlm82If+ImSIG7Qf/C5QiU6nf5Xs6JJO7efCMx7FI4UjvrGq4/WboQOgY9uMRH30KySUnCn+mHNlz+JwwcecpVATTh5qRND+PJYpWJFqQRMmoZjIZQ61+iu71WeQQfg=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jiaqing Zhao <Zhao.Jiaqing@amd.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Penny Zheng <penny.zheng@amd.com>
Subject: [PATCH] libxl: wait for QEMU exit before restarting a domain
Date: Wed, 4 Nov 2026 14:46:28 +0800
Message-ID: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com
 (10.181.42.216)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: IA0PEPF00000045:EE_|SA1PR12MB7150:EE_
X-MS-Office365-Filtering-Correlation-Id: fb7117f1-4a78-4fe2-c0c7-08df3a3f7053
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|36860700016|82310400026|261021121427099003|261026140227099003|56012099006|261102124527099003|11063799006|261021123027099003|10067099003|5023799004|261009223027099003|261028144727099003|261022105027099003|261022115727099003|261022075727099003|261102123227099003|261026121527099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	NWFf5ECy5rHv3yRA1q0pk8/kA0CTaGdWfquyldcPNH3dPf8zI88u+NXi74/jKtDP0mvSManmJR2RiTNj2zJzoYbn+nyUfjiWjolCd2NOMqaBurxTs6aZyWKx7bI/clS6RSBdURRgT115EFzTm866IPQXl6+FlT5gsF1z/oMAtQw+2nnwUDu3GpuNjh5Suges6n5gR6FZ8mqf533IOvSkCUFRoJycSqaXuNdfEwtIygZrQsfpzA0lH+RDeuoyj/QthRrHDAlMTWxlz6yT+4MRG9an4CH3nx2d4R2LLvLhXvDoCGprv5njn4x+RdteiJAUyL/62JsX8izSePVb1xA7JhhdWRXUULe7HpC/H6kTL3VcffRQ7tcLqyFJ3A3YEfW+j57zKO9rP+82XonhmlutMzfsoNh/iXlHAKmx7SPtYoR1fy5ZDtjPL6xhygdijs+u+ap1DrZcyomlqxi4ImMaYtrFoKKlopPn8HcSRzCGH+V51COuyUTAR2yIWSrG+pNUgfz1dAPoQEqgN7y8+4pHHx5EAsxboJNe5ChCiFe/jhRySJzMOMCMCO2hXZO7eLcu2IJ3b0gsIFbyl+5+gSpRbzTOMbEyhSulgud4tWiGlFVV1lZPd/p7E4V58HvBOdGKanwK0/aNwJP3cue0sVVA0x9R0DP5h5XuDS4Koij5USeDv0Ry+I9RHX0M/lyewOaV05DSSbLHd087IzDh2bBepA==
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)(23010399003)(1800799024)(36860700016)(82310400026)(261021121427099003)(261026140227099003)(56012099006)(261102124527099003)(11063799006)(261021123027099003)(10067099003)(5023799004)(261009223027099003)(261028144727099003)(261022105027099003)(261022115727099003)(261022075727099003)(261102123227099003)(261026121527099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	wu59VawDGj2RLWr+yQdo/mLrm6AQMdJwuFQSr+Q6YNO/HsAVHtCnaKv6i9bwZnvZBRH5OVq0I4lgI4CWySJBKSQDAmSIl3iBH32z/0BccY8oAlRS3t33FL0MhfTKACLctO0Ft0CGXI49LG7eRTUtwP7itrdLd4g2q6sProyO6SIDuZOK4+xFF2hJBvuNQ6uAPrD3Yd15FLjjLkfKGlnaYeWTHr+7xNvyTaXMBZSuf0/lGki4oc3BIx1QTW6rnyng/75XwHvAX3yEdxO9jYZLBm1m2loqasq0eyjJ2YLMQyQd2XAPfWLo2TlL+eBRBWLyJCnQK445ChGsEzLhJrBr+R9M7gK4ndQFM43asgYaBRTtHSUQW0I86lGyQ9xK2RirAW4WARoOc3zo4RUL2Qr+CiHmJwNkJxuqWZLiNRMNRLO1auxZoETlKzLuqOCxOUEn
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 06:47:05.1436
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fb7117f1-4a78-4fe2-c0c7-08df3a3f7053
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:
	IA0PEPF00000045.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7150
X-purgate-ID: tlsNG-720697/1793774830-F1EAB2AC-9D0EB6BE/0/0
X-purgate-type: clean
X-purgate-size: 7270

The PID-based device model destruction path returns immediately after
sending SIGHUP, before QEMU has necessarily exited. When an HVM guest
reboots with VNC enabled, the new QEMU process may fail to bind the VNC
port because the old process still holds it.

Wait for QEMU to exit in a child process after singaling it for at most
60 seconds. If waiting fails or times out, log the error and retain the
existing domain destruction behaviour.

Signed-off-by: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
---
Cc: Anthony PERARD <anthony.perard@vates.tech>
Cc: Juergen Gross <jgross@suse.com>
Cc: Roger Pau Monné <roger@xenproject.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Penny Zheng <penny.zheng@amd.com>
---
 tools/libs/light/libxl_aoutils.c  |  8 ++++--
 tools/libs/light/libxl_dm.c       | 45 ++++++++++++++++++++++++++-----
 tools/libs/light/libxl_domain.c   |  2 +-
 tools/libs/light/libxl_internal.h |  3 ++-
 4 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/tools/libs/light/libxl_aoutils.c b/tools/libs/light/libxl_aoutils.c
index c2d42e7cac..977a2705a8 100644
--- a/tools/libs/light/libxl_aoutils.c
+++ b/tools/libs/light/libxl_aoutils.c
@@ -628,10 +628,11 @@ void libxl__kill(libxl__gc *gc, pid_t pid, int sig, const char *what)
 
 /* Generic function to signal (HUP) a pid stored in xenstore */
 int libxl__kill_xs_path(libxl__gc *gc, const char *xs_path_pid,
-                        const char *what)
+                        const char *what, pid_t *pid_r)
 {
     const char *xs_pid;
-    int ret, pid;
+    int ret;
+    pid_t pid;
 
     ret = libxl__xs_read_checked(gc, XBT_NULL, xs_path_pid, &xs_pid);
     if (ret || !xs_pid) {
@@ -640,6 +641,9 @@ int libxl__kill_xs_path(libxl__gc *gc, const char *xs_path_pid,
         goto out;
     }
     pid = atoi(xs_pid);
+    if (pid_r) {
+        *pid_r = pid;
+    }
 
     ret = kill(pid, SIGHUP);
     if (ret < 0 && errno == ESRCH) {
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 511ec76a65..ac1db9fe6a 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -2859,7 +2859,7 @@ static void device_model_probe_spawn_outcome(libxl__egc *egc,
 
     /* Ensure our QEMU command line probe is killed. */
     rc = libxl__kill_xs_path(gc, dmss->spawn.pidpath,
-                             "qemu command-line probe");
+                             "qemu command-line probe", NULL);
     if (rc) {
         LOGD(WARN, dmss->guest_domid,
              "Killing qemu command-line probe pid from path %s",
@@ -3420,9 +3420,10 @@ out:
 }
 
 /* Generic function to signal a Qemu instance to exit */
-static int kill_device_model(libxl__gc *gc, const char *xs_path_pid)
+static int kill_device_model(libxl__gc *gc, const char *xs_path_pid,
+                             pid_t *pid_r)
 {
-    return libxl__kill_xs_path(gc, xs_path_pid, "Device Model");
+    return libxl__kill_xs_path(gc, xs_path_pid, "Device Model", pid_r);
 }
 
 /* Helper to destroy a Qdisk backend */
@@ -3433,7 +3434,7 @@ int libxl__destroy_qemu_xenpv_backend(libxl__gc *gc, uint32_t domid)
 
     pid_path = GCSPRINTF("libxl/%u/qdisk-backend-pid", domid);
 
-    rc = kill_device_model(gc, pid_path);
+    rc = kill_device_model(gc, pid_path, NULL);
     if (rc)
         goto out;
 
@@ -3454,6 +3455,21 @@ static void kill_device_model_uid_cb(libxl__egc *egc,
                                      libxl__ev_child *destroyer,
                                      pid_t pid, int status);
 
+/* Run in a child so waiting for QEMU does not block the libxl event loop. */
+static int wait_device_model_pid_child(libxl__gc *gc, uint32_t domid, pid_t pid)
+{
+    unsigned int i;
+
+    for (i = 0; i < LIBXL_DEVICE_MODEL_STOP_TIMEOUT * 10; i++) {
+        if (kill(pid, 0) && errno == ESRCH)
+            return 0;
+        usleep(100000);
+    }
+
+    LOGD(ERROR, domid, "Timed out waiting for device model [%d] to exit", pid);
+    return ERROR_TIMEDOUT;
+}
+
 /*
  * If we have a uid, we shouldn't kill by pid.  This is because a
  * hostile QEMU might have exited, in which case the pid we have may
@@ -3477,6 +3493,7 @@ void libxl__destroy_device_model(libxl__egc *egc,
     int domid = ddms->domid;
     char *path;
     const char *dm_kill_uid_str = NULL;
+    pid_t dm_pid;
     int reaper_pid;
 
     ddms->rc = 0;
@@ -3547,12 +3564,28 @@ void libxl__destroy_device_model(libxl__egc *egc,
     LOGD(DEBUG, domid, "Didn't find dm UID; destroying by pid");
 
     path = GCSPRINTF("/local/domain/%d/image/device-model-pid", domid);
-    rc = kill_device_model(gc, path);
-
+    rc = kill_device_model(gc, path, &dm_pid);
     if (rc) {
         ACCUMULATE_RC(ddms->rc);
         LOGD(ERROR, domid, "Killing device model pid from path %s", path);
+        goto out;
+    }
+
+    LOGD(DEBUG, domid, "Waiting for device model [%d] to exit", dm_pid);
+    reaper_pid = libxl__ev_child_fork(gc, &ddms->destroyer,
+                                      kill_device_model_uid_cb);
+    if (reaper_pid < 0) {
+        rc = ERROR_FAIL;
+        ACCUMULATE_RC(ddms->rc);
+        LOGD(ERROR, domid, "Unable to fork device model exit waiter");
+        goto out;
     }
+    if (!reaper_pid) {
+        rc = wait_device_model_pid_child(gc, domid, dm_pid);
+        assert(rc <= 0 && rc >= -125);
+        _exit(-rc);
+    }
+    return;
 
 out:
     /*
diff --git a/tools/libs/light/libxl_domain.c b/tools/libs/light/libxl_domain.c
index 37fcd92871..6e332cfed7 100644
--- a/tools/libs/light/libxl_domain.c
+++ b/tools/libs/light/libxl_domain.c
@@ -1270,7 +1270,7 @@ static void dm_destroy_cb(libxl__egc *egc,
         libxl__stubdomain_is_linux_running(gc, target_domid)) {
         char *path = GCSPRINTF("/local/domain/%d/image/qmp-proxy-pid", domid);
 
-        libxl__kill_xs_path(gc, path, "QMP Proxy");
+        libxl__kill_xs_path(gc, path, "QMP Proxy", NULL);
         /* qmp-proxy for stubdom registers target_domid's QMP sockets. */
         libxl__qmp_cleanup(gc, target_domid);
     }
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index b65e0064b9..f4fde8009e 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -97,6 +97,7 @@
 /* QEMU may be slow to load and start due to a bug in Linux where the I/O
  * subsystem sometime produce high latency under load. */
 #define LIBXL_DEVICE_MODEL_START_TIMEOUT 60
+#define LIBXL_DEVICE_MODEL_STOP_TIMEOUT 60
 #define LIBXL_DEVICE_MODEL_SAVE_FILE XEN_LIB_DIR "/qemu-save" /* .$domid */
 #define LIBXL_DEVICE_MODEL_RESTORE_FILE XEN_LIB_DIR "/qemu-resume" /* .$domid */
 #define LIBXL_QMP_CMD_TIMEOUT 10
@@ -2659,7 +2660,7 @@ bool libxl__async_exec_inuse(const libxl__async_exec_state *aes);
 _hidden void libxl__kill(libxl__gc *gc, pid_t pid, int sig, const char *what);
 /* kill SIGHUP a pid stored in xenstore */
 _hidden int libxl__kill_xs_path(libxl__gc *gc, const char *xs_path_pid,
-                                const char *what);
+                                const char *what, pid_t *pid_r);
 
 /*----- device addition/removal -----*/
 
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 06:50:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 06:50:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471461.1679830 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUpe-0004ca-9x; Wed, 04 Nov 2026 06:50:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471461.1679830; Wed, 04 Nov 2026 06:50:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOUpe-0004cT-7P; Wed, 04 Nov 2026 06:50:50 +0000
Received: by outflank-mailman (input) for mailman id 1471461;
 Wed, 04 Nov 2026 06:50:48 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xOUpc-0004cN-AH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 06:50:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOUpb-00DI1L-Mu
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:50:47 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6aead5c7-e002-0a2a0a5209dd-0a2a4506cb9c-0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:50:47 +0100
Received: from [40.93.196.43]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6aead5c1-195a-0a2a45060019-285dc42be729-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:50:42 +0100
Received: from BN8PR04CA0052.namprd04.prod.outlook.com (2603:10b6:408:d4::26)
 by CH3PR12MB8355.namprd12.prod.outlook.com (2603:10b6:610:131::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Wed, 4 Nov 2026
 06:50:37 +0000
Received: from BN2PEPF00004FBB.namprd04.prod.outlook.com
 (2603:10b6:408:d4:cafe::6d) by BN8PR04CA0052.outlook.office365.com
 (2603:10b6:408:d4::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.9 via Frontend Transport; Wed, 4
 Nov 2026 06:50:36 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN2PEPF00004FBB.mail.protection.outlook.com (10.167.243.181) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 06:50:36 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Wed, 4 Nov
 2026 00:50:34 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Wed, 4 Nov
 2026 00:50:34 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Wed, 4 Nov 2026 00:50:32 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=DyCbJRPJEFBFs598FDcZr599FkzxvKhquPbZiHTgFjz4z01/AoEoStizreH0/nw9poTRjYKncId4m6XEuIeOotQiCLWuvSSpS9ygvwEm9q5txEUGnbG2D5SC4nX+nPKxfDLtsfOvnrm/hm/Py2m40uHIQLKdANICxaTQkbjTwd5brGxX3Qpu5L+KAWRrwCWYj2zlvLhFFdl+qz6GB7znV8hNioT4e9UErxtBRPjoUOASa/JnHl14T/i6Y2CS+4CXDT1f47AjSI1fkcfkRr76xcIcszRSbzPwj1AK6q2c2pL9xgSmOOdzF1dUinmdbzUDnrVgkRVW1DVlmv+m1rKcOg==
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=iN86c+DTsA3xjSD86IoRp/C9OSENxZp8vtwoiqGn2/U=;
 b=xLdoaEuLsv2gs+ck8ZCx4c3j0RGWrVjzJ3QwtYGEZO2tHvKjoYcnE5gMeB/Q6e81Dcugnqr3lAn4G3t+lYUdtlFLS9amlqCmqMTFzbRtpT7Tr5P92jYU2Svz9wrO4SHsEwfibyUL79GJJcKsuoHDRwMyQnxxsvsDsY4VYFfoTVKK8uqXKFJsbxzRs8iFMISy8TWBh6NFgvP8PaOBeaa1eAetX1fDIWkufmO1gY5D7ZHBlXKxm4j8Y6BY+fAE+cGnmMonwPIAo9rg+LR00Yy3Dcg6ilgnXM1/WPNZU32h1t0CvGrMSRMRoW7OILulR6BHzg+AvQ7lnIo8rhI+VTxF4w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.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=iN86c+DTsA3xjSD86IoRp/C9OSENxZp8vtwoiqGn2/U=;
 b=vy6PjuSUhhcM/qlBCO5aIzmu12YcBOLXgIVT8bUyKCwno84lYb3VYpbwFlk3WVlEnxLT2MsXS8QsER7zk1vtxhST77ehJJRRL61pXTuEEwYU28hRn0k3oxrMkodecnfNMJQVYv2kp4p4TCMoeu3SN1b6A6spbT3TxSL3SDjzWIA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <8462d860-fd13-467f-baff-b7455fbe422a@amd.com>
Date: Wed, 4 Nov 2026 07:50:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/6] treewide: Make {invalidate/clean}_dcahce_va_range()
 void
To: Andrew Cooper <andrew.cooper3@citrix.com>, Xen-devel
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, Teddy Astie
	<teddy.astie@vates.tech>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>
References: <20261103152928.2142176-1-andrew.cooper3@citrix.com>
 <20261103152928.2142176-7-andrew.cooper3@citrix.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20261103152928.2142176-7-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBB:EE_|CH3PR12MB8355:EE_
X-MS-Office365-Filtering-Correlation-Id: 45a5432c-b2a9-4878-ed95-08df3a3fee72
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|7416014|36860700016|376014|1800799024|23010399003|6133799003|18002099003|10067099003|22082099003|11063799006|56012099006|4143699003|261026121527099003|261102123227099003|261021121427099003;
X-Microsoft-Antispam-Message-Info:
	rOQW6rE1p1is54WmfhBOYqgOK/Jb1ryPeP1oJSsFUrtq/Kb7MTmfxqA/n4/huWyNz0VAjJU+bngq2ezP7vJWoKXTcW1Uqo2dHDAmQXIY93RTjRghsKXJW3i0KSxTIhZfOmbwo84zdWtXZwjmWLWOjhplLsPswknWiwP8cgkLQgPY/mA2Qpu27f5CKB3zC1oXGeo4ZbXHMBoLOF0VMCKMggzaSxLH3m6YNcs32RRw8ncMJbWAkamRkEmXj/HGLI7I9I2HpTU7KrJ/6Am2QAUIGug/6EDI6XIwVSG/T3b/+xh9gx540StX+NLGS5kVTNhgX5eGvNvdA2PBYaQe/HkiEtVp/TQ826caMfuEI8Lim6BAm7kCzeYj5cM0Nz0J0JE0DykkrK9I65RbrTHYS5w/+ZBSQrBmgG7Fw5XFLfA5vbjVQhE9HvhFQXZqOuaforzRChxd1iGBf7EwnFbYROwK0SXm+EBidLBWaiEIiMhmCR8IDkmXZi7ZsLZyn2gQ00UvO8q64oMmfoe1HfZ84pwyVqvUo7uJL6CMILf1YXeU6umWDmNrYrf0ESWc2mHL+OOHdUnSIfB5w9JDfIcZgo92qXk4Jig6acmFM6hVT26hfcCp9JKhieUcRjRof7/A5x4VJq87w8pojv8ax9VFVHCnGfhWnQ8h9h0YO3Acm9irovvoXnIZPI8nttPcGwLZg9ftysmPghjusniNVDhCBph2UA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(36860700016)(376014)(1800799024)(23010399003)(6133799003)(18002099003)(10067099003)(22082099003)(11063799006)(56012099006)(4143699003)(261026121527099003)(261102123227099003)(261021121427099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	nWVcz/XrLyBOddRUQPXNp6KGM16rgOLrMv/O1/iBAYO9eEvpC3A+U01DkvKg9/MEcA6QrOrT+OEJBTwc6yrkNeYQfM/UogYc2VZ0QVpmsqqWdoZ4CNhR0f691Dt5uoSrrA4SEhY4n74SE+bcEPD/lZrYDS4nglhUr1WofJ+Pgy2qgkQkT6A3zuuXfcgjEyVKsmORqjzR4XHY0YXuFOFN1+B2Btm4DYJhhnHSCuJsm5twgLZ2aQWeo8LBY6enUQYOx2c285wfTKIjgTryhzuLsdqRMRziclzgGJ0RausNHNy2gJV7vK1jYVdz3I5TlnuH5ra1dpQAGfS8u2sfJFE214Gt2CElOWOMQ4xtWv5mGrGf1k1Npq+sOywmOHQh/izkMEaLbFhaKQCp0mJ2YZ04C/fDW1NGmvVIa+gvkmYBCzUTM6uRUJQOkKlNJQyIFzlr
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 06:50:36.7328
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 45a5432c-b2a9-4878-ed95-08df3a3fee72
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN2PEPF00004FBB.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8355
X-purgate-ID: tlsNG-16d1c6/1793775042-FC20077B-4B572300/0/0
X-purgate-type: clean
X-purgate-size: 474



On 03-Nov-26 16:29, Andrew Cooper wrote:
> Precisely two functions - RISC-V's flush_page_to_ram() and ARM's
> _cache_flush() - check the return value of these functions, yet all
> implementations return success, and ARM documents this as a requirement.
> 
> Make them void and simply the callers which care.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 07:12:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 07:12:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471481.1679840 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOVAg-0007lJ-Tk; Wed, 04 Nov 2026 07:12:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471481.1679840; Wed, 04 Nov 2026 07:12:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOVAg-0007lC-Qn; Wed, 04 Nov 2026 07:12:34 +0000
Received: by outflank-mailman (input) for mailman id 1471481;
 Wed, 04 Nov 2026 07:12:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <krzk@kernel.org>) id 1xOVAe-0007l6-UB
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:12:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOVAd-0054Zn-Ut
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 08:12:32 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <krzk@kernel.org>)
 id 6aeadadb-2eae-0a2a0a5409dd-0a2a450cb4aa-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:12:31 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <krzk@kernel.org>)
 id 6aeadade-f479-0a2a450c0019-aceafc1fa766-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:12:31 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 56B29409FD;
 Wed,  4 Nov 2026 07:12:29 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6AE551F000C1;
 Wed,  4 Nov 2026 07:12:28 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793776349;
	bh=bxPVSttrjRZNJw1tsx+VPo6VdRh7HalumXq9Vu4+3CE=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=W2ubsvT6ELNKnkmdO+5Xs/mzxUvQJDQtCsUe6PszNVvpDQz6BQLdqwoVw2Oggy9sr
	 J/QXKU9BM8Q/1yI5zTrwyPa6I51nKenWxebirQYXk0ZmCsbWYx5Qiyr9ihBHaWD9yd
	 iJZ0cbQq+QhUww6I5UP1BcDhFGd6u7Q9LuMrMLjUF8gFsYPq2q+TCluyLKI1MHLIA6
	 7UbNyeNIOCD1tzatH/VSyDKpDYIyXaEYK7DrISsdJouF/JuLHCO+VLllxAa8NP8mmb
	 J7TjrnIuB8FfTwLmRWL+wHGAQFlK+aeDMcxVKmGFSbCwF6y0bqr6oXGuEmnNf/cLmT
	 l8bRaNj0x/R2Q==
Date: Wed, 4 Nov 2026 08:12:26 +0100
From: Krzysztof Kozlowski <krzk@kernel.org>
To: Wentao Liang <vulab@iscas.ac.cn>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] xen/pciback: drop the device reference if the export
 fails
Message-ID: <20261104-vehement-tireless-goat-4ea84a@quoll>
References: <20261104021537.1468780-1-vulab@iscas.ac.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20261104021537.1468780-1-vulab@iscas.ac.cn>
X-purgate-ID: tlsNG-d25034/1793776351-778D5A5B-1883EE77/0/0
X-purgate-type: clean
X-purgate-size: 3131


On Wed, 04 Nov 2026 02:15:37 +0000, Wentao Liang wrote:
> xen_pcibk_export_device() takes a pcistub_device reference through
> pcistub_get_pci_dev_by_slot().  On success xen_pcibk_add_pci_dev()
> stores the device on the backend's device list and the reference is
> released later by xen_pcibk_release_devices().
> 
> When the add fails before the device was queued -- the list entry
> allocation fails, or for the vpci backend the device is a bridge or no
> virtual slot is free -- the reference is never dropped.  psdev->pdev
> then keeps pointing at the pdev that free_pdev() frees, and the device
> can never be exported to a guest again because
> pcistub_device_get_pci_dev() rejects a psdev that already has an owner.
> 
> Drop the reference on these paths, taking the device lock which
> pcistub_put_pci_dev() requires.  Whether the device was queued is
> checked with the coordinates the frontend sees, obtained through
> xen_pcibk_get_pcifront_dev(), because the vpci backend hides the real
> topology behind a single virtual bus.  The reference is kept when the
> failure came from the publish callback, which runs after
> list_add_tail() and is undone by xen_pcibk_release_devices().
> 
> Fixes: 30edc14bf39a ("xen/pciback: xen pci backend driver.")
> Cc: stable@vger.kernel.org
> Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> ---
>  drivers/xen/xen-pciback/xenbus.c | 33 +++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
> 

Multiple things here:
1. Your team ignored completely previous feedback. Multiple times.

2. You use multiple identities with this email address, thus I doubt that we
   speak with an actual person.

3. Your bot does not even bother running checkpatch, right?

4. Nothing of this was reproduced nor tested.

5. Finally, the same feedback:
You sent multiple independent patches, to multiple independent
subsystems. The amount of these patches clearly suggest this was
AI generated and most likely not tested.

More importantly, you sent all this work without properly organizing
relevant patches into patchsets. This makes reviewing difficult
and might cause multiple reviewers to address the same issue.
Replying to the entire set is impossible and requires handling each
patch independently, instead of applying or discarding the set.
Maintainers also won't see the bigger picture of your work. Quite
worrying.

This is on the verge of hostile patch: bomb us with so many
contributions, we won't be able to handle them in efficient manner,
like responding ONCE to ask you to slow down.  Considering all this
is untested and LLM generated, I have even more doubts whether this
should be considered for review.

Please read kernel documentation BEFORE posting more work. It will
explain you how to identify subsystems, how to organize your work per
subsystem (so a patchset grouping multiple patches with a short cover
letter), how to document the issue discovery method and what was
or was not tested.

Best regards,
Krzysztof






From xen-devel-bounces@lists.xenproject.org Wed Nov 04 07:42:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 07:42:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471508.1679849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOVdB-0003xE-2R; Wed, 04 Nov 2026 07:42:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471508.1679849; Wed, 04 Nov 2026 07:42:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOVdA-0003x7-Vc; Wed, 04 Nov 2026 07:42:00 +0000
Received: by outflank-mailman (input) for mailman id 1471508;
 Wed, 04 Nov 2026 07:41:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <krzk@kernel.org>) id 1xOVd9-0003x0-Ih
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 07:41:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOVd8-00DCwk-LX
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 08:41:58 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <krzk@kernel.org>)
 id 6aeae1c6-2eae-0a2a0a5409dd-0a2a450ad70e-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:41:58 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <krzk@kernel.org>)
 id 6aeae1c5-f2d2-0a2a450a0019-ac6904fee918-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:41:58 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id BC0F5601F6;
 Wed,  4 Nov 2026 07:41:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC17D1F000C1;
 Wed,  4 Nov 2026 07:41:55 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793778116;
	bh=fVUUJ8Dl8BM5zbCnaDwoeCDrtuTfYmgK5IGYTspP9KE=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=FwZyzsHnyOsLSyHFRJ74qtvoVXJqRKTpO25qiJwDy6ovTPNvRIFy9jB5VmQe8pEeO
	 ndopN9bA7jCsLV53uUX2vNCJPGbUeeZt7KhSsIyuX0R65B+P8u3eenybGVUDarPgwq
	 XxzzTLdAM82x6WrYX2aB30MN7iHC792WqCVXm96QVuTFFfoIyoHPOaS8I7A6w6dMkK
	 lFRkMN+9dZSzR2Ptfmjak54b1rDA3vQCmMwbQ0xqNoQddwvYurgrH6vUdhZAbMXfEU
	 5lCJCZ+9Tr0A5cGCCx0vXzaxLKxR+07h52A7c6Dr77wZgIvBlLb4tBs1zkeC4ZbcVo
	 ChXdorI2X+dKA==
Date: Wed, 4 Nov 2026 08:41:53 +0100
From: Krzysztof Kozlowski <krzk@kernel.org>
To: Wentao Liang <vulab@iscas.ac.cn>
Cc: xen-devel@lists.xenproject.org, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH] xen/balloon: drop the device reference if registration
 fails
Message-ID: <20261104-musical-trogon-of-climate-e4e0cb@quoll>
References: <20261104021548.1468864-1-vulab@iscas.ac.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20261104021548.1468864-1-vulab@iscas.ac.cn>
X-purgate-ID: tlsNG-4011c0/1793778118-51AC4CFC-D3997203/0/0
X-purgate-type: clean
X-purgate-size: 2296


On Wed, 04 Nov 2026 02:15:48 +0000, Wentao Liang wrote:
> register_balloon() registers the statically allocated balloon device.
> When device_register() fails, device_add() drops the reference it took
> itself but the reference taken by device_initialize() stays behind, so
> the device's private data and name are never released.
> 
> Give up that reference with put_device() before unregistering the bus.
> 
> Fixes: 803eb047a28d ("xen-balloon: Move core balloon functionality out of module")
> Cc: stable@vger.kernel.org
> Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> ---
>  drivers/xen/xen-balloon.c | 1 +
>  1 file changed, 1 insertion(+)
> 

Multiple things here:
1. Your team ignored completely previous feedback. Multiple times.

2. You use multiple identities with this email address, thus I doubt that we
   speak with an actual person.

3. Your bot does not even bother running checkpatch, right?

4. Nothing of this was reproduced nor tested.

5. Finally, the same feedback:
You sent multiple independent patches, to multiple independent
subsystems. The amount of these patches clearly suggest this was
AI generated and most likely not tested.

More importantly, you sent all this work without properly organizing
relevant patches into patchsets. This makes reviewing difficult
and might cause multiple reviewers to address the same issue.
Replying to the entire set is impossible and requires handling each
patch independently, instead of applying or discarding the set.
Maintainers also won't see the bigger picture of your work. Quite
worrying.

This is on the verge of hostile patch: bomb us with so many
contributions, we won't be able to handle them in efficient manner,
like responding ONCE to ask you to slow down.  Considering all this
is untested and LLM generated, I have even more doubts whether this
should be considered for review.

Please read kernel documentation BEFORE posting more work. It will
explain you how to identify subsystems, how to organize your work per
subsystem (so a patchset grouping multiple patches with a short cover
letter), how to document the issue discovery method and what was
or was not tested.

Best regards,
Krzysztof






From xen-devel-bounces@lists.xenproject.org Wed Nov 04 08:20:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 08:20:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471541.1679858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOWEF-0001k8-9b; Wed, 04 Nov 2026 08:20:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471541.1679858; Wed, 04 Nov 2026 08:20:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOWEF-0001k1-6g; Wed, 04 Nov 2026 08:20:19 +0000
Received: by outflank-mailman (input) for mailman id 1471541;
 Wed, 04 Nov 2026 08:20:17 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xOWED-0001jv-Ev
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 08:20:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOWEC-00DWny-Lz
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 09:20:16 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6aeaeabc-2eae-0a2a0a5409dd-0a2a4509c37a-20
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 09:20:16 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6aeaeac0-be1a-0a2a45090019-c387df82e68e-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 09:20:16 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id BD87321F36;
 Wed,  4 Nov 2026 08:20:15 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3D980134F0;
 Wed,  4 Nov 2026 08:20:15 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 8rhoBb/q6mp9bgAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 04 Nov 2026 08:20:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1793780415; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=SBs5ngltfceoGz65CnfqU4ni/SkBXbisTdH2AJEoDqw=;
	b=eXIA9Z1vNflgGIOD5PkcOdSYo7dHNT3ZabQ8geK1s2F/ydy0f/2FauA1E/q6xI/G4tZyCD
	hawq/AZcyJTCwHO50k9qt0L16WZYMLIFXjQjBvzvVyyI73gPknSCO1+pjFnwMyy3uAnB33
	nDaHGRkE17aD+t1GHtIKDO3ztODie7c=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1793780415; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=SBs5ngltfceoGz65CnfqU4ni/SkBXbisTdH2AJEoDqw=;
	b=eXIA9Z1vNflgGIOD5PkcOdSYo7dHNT3ZabQ8geK1s2F/ydy0f/2FauA1E/q6xI/G4tZyCD
	hawq/AZcyJTCwHO50k9qt0L16WZYMLIFXjQjBvzvVyyI73gPknSCO1+pjFnwMyy3uAnB33
	nDaHGRkE17aD+t1GHtIKDO3ztODie7c=
Message-ID: <d6d14b59-66a2-4a1d-ba57-15b86412ed1b@suse.com>
Date: Wed, 4 Nov 2026 09:20:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
To: Jason Andryuk <jason.andryuk@amd.com>, Thomas Gleixner <tglx@kernel.org>,
 Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,
 "H. Peter Anvin" <hpa@zytor.com>,
 Mario Limonciello <mario.limonciello@amd.com>,
 Yazen Ghannam <yazen.ghannam@amd.com>
Cc: xen-devel@lists.xenproject.org, Ariadne Conill <ariadne@ariadne.space>,
 Sean Christopherson <seanjc@google.com>, stable@vger.kernel.org,
 Ingo Molnar <mingo@kernel.org>, linux-kernel@vger.kernel.org
References: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------LKuNJD8fzNHF2QkAVsWACpJT"
X-Spam-Flag: NO
X-Spam-Level: 
X-Spamd-Result: default: False [-9.80 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.49)[0.998];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	ARC_NA(0.00)[];
	RCPT_COUNT_TWELVE(0.00)[15];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -9.80
X-purgate-ID: tlsNG-bad1c0/1793780416-BFAD0034-F4E5E011/35/110847
X-purgate-type: clean
X-purgate-size: 5442

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------LKuNJD8fzNHF2QkAVsWACpJT
Content-Type: multipart/mixed; boundary="------------aF0OXbWKlvGAtnWy4QKg8fQK";
 protected-headers="v1"; hp="clear"
Message-ID: <d6d14b59-66a2-4a1d-ba57-15b86412ed1b@suse.com>
Date: Wed, 4 Nov 2026 09:20:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
To: Jason Andryuk <jason.andryuk@amd.com>, Thomas Gleixner <tglx@kernel.org>,
 Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,
 "H. Peter Anvin" <hpa@zytor.com>,
 Mario Limonciello <mario.limonciello@amd.com>,
 Yazen Ghannam <yazen.ghannam@amd.com>
Cc: xen-devel@lists.xenproject.org, Ariadne Conill <ariadne@ariadne.space>,
 Sean Christopherson <seanjc@google.com>, stable@vger.kernel.org,
 Ingo Molnar <mingo@kernel.org>, linux-kernel@vger.kernel.org
References: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261104013026.185392-1-jason.andryuk@amd.com>

--------------aF0OXbWKlvGAtnWy4QKg8fQK
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDQuMTEuMjYgMDI6MzAsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IHByaW50X3M1X3Jl
c2V0X3N0YXR1c19tbWlvKCkgZXhwZWN0cyB0byByZWFkIEZDSCBNTUlPIG9uIGJhcmVtZXRh
bC4gIFZNcw0KPiBkb24ndCBoYXZlIGVtdWxhdGVkIEZDSCByZWdpc3RlcnMsIHNvIHRoZXJl
IGlzIG5vdGhpbmcgdG8gY2hlY2suICBBZGQgYW4NCj4gZWFybHkgZXhpdCB3aGVuIHJ1bm5p
bmcgb24gYSBoeXBlcnZpc29yLg0KPiANCj4gVGhlIHJlYWwgbW90aXZhdGlvbiBpcyBYZW4g
UFYgZG9tVXMgY2FuJ3QgYm9vdCBvbiBaZW4gQ1BVcy4gIFBWIGRvbVVzDQo+IFBURSBjb250
YWluIHN5c3RlbSBwaHlzaWNhbCBhZGRyZXNzZXMgLSB0aGV5IGRvbid0IGhhdmUgY29uY2Vw
dCBvZiBndWVzdA0KPiBwaHlzaWNhbCBhZGRyZXNzZXMuICBkb21VcyBjYW4gb25seSBtYXAg
cGh5c2ljYWwgYWRkcmVzc2VzIHRoZXkgYXJlDQo+IGFzc2lnbmVkLCBzbyBhIGRvbVUgZmFp
bHMgdG8gbWFwIHRoZSBGQ0ggTU1JTyBhZGRyZXNzZXMuICBIb3dldmVyDQo+IHNldF9wdGUo
KSBkb2VzIG5vdCByZXR1cm4gZmFpbHVyZSwgc28gaW9yZW1hcCgpIHJldHVybnMgYSBwb2lu
dGVyIHdoaWxlDQo+IHRoZSBQVEVzIGFyZSB1bnBvcHVsYXRlZC4gIHByaW50X3M1X3Jlc2V0
X3N0YXR1c19tbWlvKCkgZmF1bHRzIHdoZW4NCj4gcmVhZGluZyB0aHJvdWdoIHRoZSBwb2lu
dGVyLCBicmVha2luZyB0aGUgYm9vdC4gIFRoaXMgY2hhbmdlIGZpeGVzIFhlbg0KPiBQViBk
b21VcyBib290aW5nIG9uIFplbiBDUFVzLg0KPiANCj4gZG9tMCBjYW4gbWFwIHRoZSBGQ0gg
TU1JTywgYnV0IGl0IGhhcyBYODZfRkVBVFVSRV9IWVBFUlZJU09SIHNldC4gIFdpdGgNCj4g
dGhpcyBjaGFuZ2UsIGl0IG5vIGxvbmdlciBwcmludHMgdGhlIHJlc2V0IHJlYXNvbi4NCj4g
DQo+IEZpeGVzOiBhYjgxMzEwMjg3MTAgKCJ4ODYvQ1BVL0FNRDogUHJpbnQgdGhlIHJlYXNv
biBmb3IgdGhlIGxhc3QgcmVzZXQiKQ0KPiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZw0K
PiBTdWdnZXN0ZWQtYnk6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPg0KPiBTaWdu
ZWQtb2ZmLWJ5OiBKYXNvbiBBbmRyeXVrIDxqYXNvbi5hbmRyeXVrQGFtZC5jb20+DQpSZXZp
ZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KDQoNCkp1ZXJnZW4N
Cg==

--------------aF0OXbWKlvGAtnWy4QKg8fQK--

--------------LKuNJD8fzNHF2QkAVsWACpJT
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrq6r4FAwAAAAAACgkQsN6d1ii/Ey+X
Ngf+NSERpLNaHp3iNP/+G4bYmYAUbmiwYtU4yyLTSMiNx1rDMcPEAKSlzfKJxhvL400QiamrqdMU
eQQgp+A1yz3WYp+7q5AIf7XFq9uNjXAxknysZorXcaTYdi0X3OgAmyGClfHbBQ/d9FMqh1WYoFFE
cv3Nd25TdM5PXq5WVLrK565FnrgBHJB/b6AgX+kQGHQpy5qFvEEC1eOP+mGim9KZrMIibKgLoztb
tJaE0SFruiJehG/ueh6qSaEIKYl3KUSzNq7k2Czn/o5H83dE6eQ79k+YszaQkRDJXepCumXqmYD9
E3DBL8fcA5OvWQVs6B6+AWbWMqkfE9MWSB0a8W88Zw==
=Os7j
-----END PGP SIGNATURE-----

--------------LKuNJD8fzNHF2QkAVsWACpJT--


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 09:44:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 09:44:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471584.1679868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOXXJ-0003pS-AZ; Wed, 04 Nov 2026 09:44:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471584.1679868; Wed, 04 Nov 2026 09:44:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOXXJ-0003pL-66; Wed, 04 Nov 2026 09:44:05 +0000
Received: by outflank-mailman (input) for mailman id 1471584;
 Wed, 04 Nov 2026 09:44:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOXXH-0003pF-9t
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 09:44:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOXXG-00HBik-DI
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:44:02 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeafe5b-bab6-0a2a0a5309dd-0a2a4505a3c8-42
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 10:44:02 +0100
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeafe61-4cb1-0a2a45050019-d155dd35e825-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 10:44:01 +0100
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-48e09aa5264so214913f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 01:44:01 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48feda207d8sm2713188f8f.52.2026.11.04.01.44.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 01:44:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793785441; x=1794390241; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NamH/73RfpPGvbow4bV2m5TQ4lDJv8cYz4Xojo26n/8=;
        b=Ob4Sp7Hn/n+G5bMEN3YWk8JQyV5bX2THnjMP/HCsOz26w+AGJsiz7lPicdiPnoL19T
         sNwrB9/MHn89Tfbc88iu7b/nJo/TBHxiuMzQStQ+/0gsrq9fV07leq4Wo6GGmbG8n61+
         F1vlWJEqH4Ay7miWZ6uj7xXyggFsVmwrrhSfAUasWLFjNBbghq0FPAyFlqV5FMKULi5B
         4jpDeHM8Inh1gxFGt0UwYMx4lxR5f5mGZOF0RK0KTQrxuhEdL3Xmwk0DtdeNCSzKW9+I
         VLMAfvol9Y47a1rST+Zrr0Y//bdzaJSElNkkSpTuGnDTdLzDd39E+ayX8Z17suZzbJ4h
         zhcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793785441; x=1794390241;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=NamH/73RfpPGvbow4bV2m5TQ4lDJv8cYz4Xojo26n/8=;
        b=KcfI5IC7KeJ4DCcu1CfOg5JbIu9myjsaaWgxLqx2IdWi5B0VWk5LaiP9XSpCeuHFHo
         IcMOyCZ1GnECfOt6CKwPXkl4QVM2M++k2K8sC8aWd7OzhLqgL5C5zbDF1QJrNGrr7DH+
         +2dnhl1aKTITzolbW/pKcleh+XIOYCN5Ci50zzCw4qTjUfiBprXdMAs3vz+POOmbJPXH
         4efDx0WNXXS+Rj3BcbnG2lwlVA5Qg43GJW7lTpiGwFEMzUJQhM7W1QsJj5ToOf7lTVhv
         0mZsq5ImpDHpZOJ/YqK7spOjuFo8hQgB5FwEhozxz7g/0XmvFimlpIKfjY32KdfTIW2v
         w3Yg==
X-Forwarded-Encrypted: i=1; AKwUvBzrA6CXdfeEcFGwH6f779CxIVdW9q/EyMR2tk831ep2k65qcN03sSDeVkvVNofWc1JGebae4qsbN5c=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/dfz8+Mz3eH4G0HWT1hqeCPiqUevuOyOihmgXrh9Dqq+qMn6BO
	BQhoTRi4cQuwCousrHYfr59LMtalfPmL72P6OFfJbMAy+1F60NyNhbXoPVWzijQp6A==
X-Gm-Gg: AYBFou2owCjnGxMiH0jBwQ2vGN1NmxIH6kOegECj/8oppVNAm2TokMR96jwGC4TEN7W
	G4+D7tcu02fB5uJ1Kq5rU+L9WJYOHM8MXbWkKUerEEIM/b1AjEnM2vm4If9c441OR/yNWCPpxYA
	JYxkgXEn1n23a75FXw70gIB9m2Zy+2hE5qSeRWNJktTXON7MiEEf/srd1N5IcY3CIc8oK7gFZEo
	K02l11DiGpnwEBpIHq0wB6TJhnoXKj1aOBPtyBDsyzrQwUhOtdnKzf+0mtOYOlfNS96V96ALZNX
	CHwoI4Z/G57x7QZ4hIe7gSVGawy3KhfpOI7UillOfxL+E0vvnyaDokwuSA0wKzEslmkOSdSPiIq
	tDFBzc8yq6pN6UmPSMMzFF6BLvnba+pwSVCAdDJL2SJYt9nNozSh/Cw20T4MujXOc5u774HWdKl
	U7qk4HBCi0HmIzMva6ehTMEAbzyfmcEoGsPlRNo8essXLMmTk7ooGsymFwJvFS05Q9QCzvVwDdk
	9paKxoEt3vvFY9FT+TrmLsNC5MEiAiNFnwBAWXo2Ae9bN2vwJNOyzhmwGG4zxBgIc+GwXuifPW6
	KfLM+cUGEjtdesRbwxG7qIlGbSjS02OxZwnQ2PcgSsfYgX+9mlFWtMNQXzLS/m1Ibmf3lbPEV4F
	G1VB02XazZLb0vzU=
X-Received: by 2002:a05:6000:2288:b0:488:8ab9:f74c with SMTP id ffacd0b85a97d-48e6e2bbf04mr35372076f8f.3.1793785441345;
        Wed, 04 Nov 2026 01:44:01 -0800 (PST)
Message-ID: <5b36fc16-51f2-4cef-ab26-3945267b8fc3@suse.com>
Date: Wed, 4 Nov 2026 10:44:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/7] gnttab: rename a parameter of
 gnttab_populate_status_frames()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <38850629-8bfa-4737-99ff-0fd3f489e56e@suse.com>
 <06d74bd4-86f1-4c25-a6f7-f4e1c9de199f@suse.com>
 <b8a4b183-34c9-4fba-a3b8-d86c4ee7b531@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <b8a4b183-34c9-4fba-a3b8-d86c4ee7b531@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793785441-F64B42A1-A6FD504A/10/78276251493
X-purgate-type: spam
X-purgate-size: 1450

On 03.11.2026 17:59, Andrew Cooper wrote:
> On 28/07/2026 2:52 pm, Jan Beulich wrote:
>> --- a/xen/common/grant_table.c
>> +++ b/xen/common/grant_table.c
>> @@ -1807,12 +1807,9 @@ fault:
>>  
>>  static int
>>  gnttab_populate_status_frames(struct domain *d, struct grant_table *gt,
>> -                              unsigned int req_nr_frames)
>> +                              unsigned int grant_frames)
>>  {
>> -    unsigned int i;
>> -    unsigned int req_status_frames;
>> -
>> -    req_status_frames = grant_to_status_frames(req_nr_frames);
>> +    unsigned int i, req_status_frames = grant_to_status_frames(grant_frames);
>>  
>>      /* Make sure, prior version checks are architectural visible */
>>      block_speculation();
>>
> 
> I fully agree that it's misnamed.
> 
> However, I'd suggest req_grant_frames to match the req_status_frames,
> and also to hint at why it's not just gt->nr_grant_frames.

When we discussed this earlier on, I think we had settled on deliberately
omitting the req_ prefix here: It's correct only for the use of the function
from gnttab_grow_table(), but not quite for that from gnttab_set_version().

> It might also be worth a comment saying /* The number of status frames
> is always derived from the number of grant frames */ or something similar?

That's a comment we may want to have in or ahead of grant_to_status_frames(),
but not at every of its call sites.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 10:11:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 10:11:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471617.1679876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOXxr-0007tG-B2; Wed, 04 Nov 2026 10:11:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471617.1679876; Wed, 04 Nov 2026 10:11:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOXxr-0007t9-80; Wed, 04 Nov 2026 10:11:31 +0000
Received: by outflank-mailman (input) for mailman id 1471617;
 Wed, 04 Nov 2026 10:11:30 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOXxq-0007t3-P8
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:11:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOXxp-00GBhM-Te
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:11:29 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb04ce-8faa-0a2a0a5109dd-0a2a4508e7de-16
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:11:29 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb04d1-f659-0a2a45080019-d1558036c4ce-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:11:29 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a214af2076so3179055e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:11:29 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b43c17ecdasm66418615e9.5.2026.11.04.02.11.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 02:11:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793787089; x=1794391889; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=XlNv9wby1nKD2zqGSHjj/t/EeDOe5xMy1sw4OFFn9q8=;
        b=H/EBd0bo0iXiCskIStlC68Z+H9FND1ujaWxxiXb17PYbeVS9LSoWBqb8RTez6sjj11
         89/vp40GethDxMyT6hH+0KkxsaHaTycDfSEd9pnReUQ5hKWp91NxG+SQ3/dTkZgOUS/y
         qZYMhA+ZeDim6H60yc20QQcutrL3pI5iSga/mo81WL2dELjc1CV7M5qzVKE1qtfaVe0L
         uPhvEa4SsBaEsN4nA3S1qBkNxeRA3lCmEptDU1i/iGzbY8HHQgfI4srRKqQ9aJ1emi5E
         dpbA4cdST4YqHru77094AW3BMNJ/A+K0JqOGcxt8RaiO903hs/050fwxzVnVDeMX0m2U
         3EVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793787089; x=1794391889;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=XlNv9wby1nKD2zqGSHjj/t/EeDOe5xMy1sw4OFFn9q8=;
        b=njSGikUc94rD39l8LicXy3VUne5oiH2gxUndUk6++sgk3NIb5rODURg55ILU1TglEY
         HRYJMOU7d3x6pxm8+sUAzAi4eTzgmssLf8Rad7tDx4zqh9nIENCq9bXl90t4ddET6/Xb
         cbMBzQlEXgXEGkqd3S8LYNFUR5fRozaNdn/S71IYsLA3+9sVCv2JM8uJ0rJMzVDV9aDs
         xVQrJ40Q30hGhDAfd3sFQPN4yJUaA4+nmcVr6aVvevLC/zKPZziHpEBTJxAlxlK2KIIQ
         Vv/EmfVlRalgUA9rS6uw+wpfqEJvDTp1qLTTa+PRcg9zGNwcyF2YvwW80q4fldpiKdaw
         JCBg==
X-Gm-Message-State: APuU4Z8yGlCMSi7YgXHu2y5Kh/3tGtpMQuZCZVvAp4FyOCLdjUFM3QP0
	a6Z3MLKAfN1lgabZ2GoZpoN1Y/r2LfC5Xx/TZRHNDv3rvRL9vg7uwgv+5VCKuFUyKw==
X-Gm-Gg: AYBFou3XbTOi1Wdp52iEtMgVCnk9BJ4oCUSPMSlGyFg7pZxu6iwE8wmEUYkzekdq77G
	0X15DY/zkYxPt5HqQ8si218ClUveyeAJWYWPNNhunTUjGve1s6BjP1MEZZECGXslgAWzidL1DHc
	gb2lZU4DQeuPYURhU1sbuuLbBNheGgq3DH2MCZBlywe6JxlSOYj89Zoip5Sq9BxK0rHkULxHdYW
	CUdOX+h33a1k+ANv9yOuoA1mADZG0rZwPqDIe236F8d1TSGZmwuVuEtcnKSffT4nklA5HvFkjEU
	PMswmbSWW66rc9A3hrvFKtzlrE3PjpIwrAeZP1pMuqhHHGBJYoKPooGt+Ht04EKrQdMnrERtk9X
	M3gRnG4s9Xm6bo+B0EIOFivBc1tMJtmsrqKz1SgePLNc3+1v7khMF48N2cqXkAlOnj6wj8soT51
	wxK4oQutQiWa71yp/NDLvsIoXQauUChgJyHbWq1qPHwM+iSecK7y0S/iih9SdlKML5jlyISde2V
	oKPlN7k7Ex9b1Txx20O94SNRFjc3sST0ncUELei8ouwlx16LmfwikVGRTWZ4PdedsXAYCCEEfnJ
	xrlYXZmzpJKiFxw0lCiO3Y36sEr2cIc61m0KC8GCVP4xDRX+8cYikOwb5GVjsgNjqWx11cn9BqE
	s5xNwjffyQ33eGJIRmA==
X-Received: by 2002:a05:600c:e552:b0:4b1:4da2:ca99 with SMTP id 5b1f17b1804b1-4b14da2cb6fmr139256985e9.10.1793787089308;
        Wed, 04 Nov 2026 02:11:29 -0800 (PST)
Message-ID: <721b7eab-3893-4a0a-81b7-e6bde01118e0@suse.com>
Date: Wed, 4 Nov 2026 11:11:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 12/15] x86/PVH: heed the kernel in pvh_steal_ram()
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <032c1cb0-55b8-489d-bcf4-4d4c14a590ae@suse.com> <atHPRLewczIY8Qm1@Mac.lan>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <atHPRLewczIY8Qm1@Mac.lan>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793787089-CED4087B-56515CC2/10/78276251493
X-purgate-type: spam
X-purgate-size: 2253

On 16.10.2026 09:16, Roger Pau Monné wrote:
> On Mon, Oct 12, 2026 at 10:25:40AM +0200, Jan Beulich wrote:
>> While the function working downwards will typically result in no conflict
>> with the kernel range, there's no guarantee of that.
>>
>> Fixes: 1d74282c455f ("x86: setup PVHv2 Dom0 ACPI tables")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -186,8 +186,12 @@ static int __init pvh_populate_memory_ra
>>  /* Steal RAM from the end of a memory region. */
>>  static int __init pvh_steal_ram(struct domain *d, unsigned long size,
>>                                  unsigned long align, paddr_t limit,
>> +                                const struct elf_binary *elf,
>>                                  paddr_t *addr)
>>  {
>> +    paddr_t kernel_start = (paddr_t)elf->dest_base & PAGE_MASK;
>> +    paddr_t kernel_end = ROUNDUP((paddr_t)elf->dest_base + elf->dest_size,
>> +                                 PAGE_SIZE);
>>      unsigned int i = d->arch.nr_e820;
>>  
>>      /*
>> @@ -203,6 +207,11 @@ static int __init pvh_steal_ram(struct d
>>              continue;
>>  
>>          *addr = (entry->addr + entry->size - size) & ~(align - 1);
>> +
>> +        /* Avoid kernel range, if this is the region it lives in. */
>> +        if ( *addr < kernel_end && *addr + size > kernel_start )
>> +            *addr = (kernel_start - size) & ~(align - 1);
>> +
>>          if ( *addr < entry->addr ||
>>               /* Don't steal from the low 1MB due to the copying done there. */
>>               *addr < MB(1) )
> 
> If you clip addr to remove the kernel range for allocation purposes
> you need to restore it before the `entry->size = *addr - entry->addr`
> adjustment.
> 
> Overall I continue to think this will be much simpler if we passed
> around a rangeset.  This series is adding a fair amount of extra code
> to deal with overlaps between kernel/initrd allocations vs everything
> else, which could be solved more easily by using a rangeset.

I've started moving to that approach. With the kernel range removed from
the rangeset early on, the need for this separate patch then disappears.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 10:30:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 10:30:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471630.1679885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYG1-0002oq-PN; Wed, 04 Nov 2026 10:30:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471630.1679885; Wed, 04 Nov 2026 10:30:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYG1-0002oj-MQ; Wed, 04 Nov 2026 10:30:17 +0000
Received: by outflank-mailman (input) for mailman id 1471630;
 Wed, 04 Nov 2026 10:30:16 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <berrange@redhat.com>) id 1xOYG0-0002od-56
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:30:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYFz-00AECs-Ao
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:30:15 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 6aeb092e-2eae-0a2a0a5409dd-0a2a4509b406-42
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:30:15 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <berrange@redhat.com>)
 id 6aeb0935-be1a-0a2a45090019-aa0a817c72dd-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:30:14 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-269-2XW9K-evPbCMOJuVoGm3kw-1; Wed,
 04 Nov 2026 05:30:10 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 0BEC5180054D; Wed,  4 Nov 2026 10:30:08 +0000 (UTC)
Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id AD6AA431; Wed,  4 Nov 2026 10:30:03 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793788213;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=s7JQbULKv+WOJqpIOxNfeiT2Ln28699D6hmY8bZfJb0=;
	b=FJ+MwjLynnOaPi6AczQm5O3SmagQszaBduy5ZdCjSAnh+jQATSDrMGDdqIa/IrbaKCrrZf
	p0WSFIXsGF29hJ0T7+iTgz9V/ScuLrA0xDRJd4WQSU5nS4wV2TyNurB9xLyl6Rt9RyI/MA
	vP4TGY7tBhwmERPdzHfOZPxVCJFzxj4=
X-MC-Unique: 2XW9K-evPbCMOJuVoGm3kw-1
X-Mimecast-MFC-AGG-ID: 2XW9K-evPbCMOJuVoGm3kw_1793788208
Date: Wed, 4 Nov 2026 10:30:00 +0000
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org,
	qemu-ppc@nongnu.org, Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	=?utf-8?Q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>,
	Helge Deller <deller@gmx.de>, xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Alexey Kardashevskiy <aik@ozlabs.ru>
Subject: Re: [PULL 00/25] Tracing patches
Message-ID: <ausJKNfBbqXtPDe9@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20261102185831.1880189-1-stefanha@redhat.com>
 <102e313c-1193-44b1-9908-a03c01a85e8d@linaro.org>
MIME-Version: 1.0
In-Reply-To: <102e313c-1193-44b1-9908-a03c01a85e8d@linaro.org>
User-Agent: Mutt/2.4.3 (2026-10-09)
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: aWEK6UUaqWW2Nj2Gh1sO7Vtox97P8USKgCEZKDa0yco_1793788208
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793788214-BC8C9034-0752CF6D/35/111497
X-purgate-type: clean
X-purgate-size: 1831

On Tue, Nov 03, 2026 at 10:59:43AM -0800, Richard Henderson wrote:
> On 11/2/26 10:58, Stefan Hajnoczi wrote:
> > The following changes since commit 56afd82bd4db9688f1c1c9d0e2ea163b8cde3283:
> > 
> >    Merge tag 'qemu-sparc-20261101' ofhttps://github.com/mcayland/qemu into staging (2026-11-01 08:37:48 -0800)
> > 
> > are available in the Git repository at:
> > 
> >    https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request
> > 
> > for you to fetch changes up to 3b68720390b98f21e26ffcff8874851b7b49b7b7:
> > 
> >    trace: remove 'trace_event_get_state' wrapper (2026-11-02 13:52:14 -0500)
> > 
> > ----------------------------------------------------------------
> > Pull request
> > 
> > Daniel Berrangé's 'disable' property removal and associated cleanups.
> 
> Function signature change in here somewhere that didn't get propagated to
> rust?
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/17710633655#L4275
> 
> > error[E0308]: mismatched types
> >    --> /builds/qemu-project/qemu/build/trace/trace-hw_char.rs:236:14
> >     |
> > 236 |       unsafe { (bindings::qemu_loglevel & bindings::LOG_TRACE) != 0 &&
> >     |  ______________^
> > 237 | |              trace_event_state_is_enabled(_TRACE_PARALLEL_IOPORT_READ_DSTATE) } ||
> >     | |_____________________________________________________________________________^ expected `()`, found `bool`
> >     |
> 
> etc.

Bug in the "trace: include qemu_loglevel_mask(LOG_TRACE) in guard" patch

Guess I must have not had --enable-rust set after I changed that code.

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 10:37:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 10:37:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471639.1679893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYNG-0003Up-DR; Wed, 04 Nov 2026 10:37:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471639.1679893; Wed, 04 Nov 2026 10:37:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYNG-0003Ui-Aj; Wed, 04 Nov 2026 10:37:46 +0000
Received: by outflank-mailman (input) for mailman id 1471639;
 Wed, 04 Nov 2026 10:37:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@swg.vates.tech>)
 id 1xOYNF-0003Uc-3U
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:37:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYNE-00BkEd-DV
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:37:44 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@swg.vates.tech>)
 id 6aeb0aed-2eae-0a2a0a5409dd-0a2a450be2c0-48
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:37:44 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@swg.vates.tech>)
 id 6aeb0af7-b7e8-0a2a450b0019-b9ff1c229bad-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:37:43 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a622ce02000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 04 Nov 2026 10:37:41 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 46374830F0;
 Wed,  4 Nov 2026 11:37:40 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=rlQ6QYU5x1DF39EqjWg2Wo1P45aHvdDyQ6CCfPnER1U=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=b8qWuXzbdI376Xo15IHgEVR34HI/5XsMTzqsqYLb0EDB7MTM4TPBX4uuFjbcQPiwFc8vwl+bA
 0TzVp5t5ktn+48zSYcsCVcKQUrE4y1lvJxyb18DCsNZDGdALDniM1PhRzdmCENEL/fv27nBznC3
 948eiVedN4+Xm+monvKTZLyO/sC4HORtrPONLfjsw4bjWGJYoL0gh32wkMPCGVvHI8YY9WCsJOk
 iGZCYw8ajpbvmEnxiWc+ZcxM5TL71RcqwS0RjhiWh9W5T86JKfAv4NeoTCXUs03eR3C7HTyYSZF
 /fIWt4LgV5NUz9J2uYsaG7UN8cmon+PYKKbZtx++n+iA==
X-Zone-Loop: 65e10794f9f8623fadfe017a4c2149dd23cf23b549c3
x-campaign-type: default
x-transaction-id: 6cfe9d27-be46-40af-8534-5ee17a3dc164
x-swg-uid: 01-15326072-e535-46c3-870e-9fee0aefbcdc
X-Mailer: Sweego
Message-ID:
 <1793788661.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@vates.tech>
x-swg-bid: 1793788661.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 35/39] xen/riscv: wake up a descheduled vCPU on a
 guest external interrupt
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <4e78b90482e23b049774eb00b19422d8c147970a.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <4e78b90482e23b049774eb00b19422d8c147970a.1790779209.git.oleksii.kurochko@gmail.com>
Date: Wed, 04 Nov 2026 11:37:33 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793788655; l=5875;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=TRDt494DvO0qsCruWvOukShsue6ftFlJ2yj7tmfogA4=;
 b=XqJOydAAbrQ5UUwusP6/lTTt6WwBOMmnkEVzSpeI4YykIRVFtxpIJWmR8kI56qkUQkWOVRCgq
 oRIPg9u1sAEAuGAnCDWXbx66rlu8yhvXF8a1GigHQF/NQgomn9VBif/
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793788660492
X-purgate-ID: tlsNG-42698a/1793788664-196C29EA-688B1BA3/0/0
X-purgate-type: clean
X-purgate-size: 5875

> While a vCPU is running, MSIs written to its h/w IMSIC guest interrupt
> file are delivered straight to VS-mode. Once the vCPU is descheduled
> nobody observes that file anymore, so a guest blocked on such an
> interrupt would stay blocked until some unrelated event happens to
> schedule it again.
> 
> Let Xen observe the file in that window: on deschedule set the vCPU's
> bit in HGEIE, which turns an interrupt pending in its VS-file into an
> HS-level SGEI, and clear the bit again on schedule-in. HGEIP only
> reports an interrupt file number, so to find the vCPU to kick, keep a
> per-pCPU owners[] array indexed by file number and updated in
> vgein_assign()/vgein_release() together with the VGEIN bitmap. The SGEI
> handler clears the HGEIE bits it has seen before kicking their owners,
> so that the interrupt doesn't keep firing until the vCPU is switched in.

Please explain why this is enough for a descheduled
vCPU to never miss a wake-up: an interrupt pending in a VS-file always
shows up in HGEIP, but it reaches VS-mode only if hstatus.VGEIN selects
that file, and traps to Xen as an SGEI only if the file's HGEIE bit is
set. While the vCPU is descheduled, HGEIE is therefore Xen's only way to
notice it. And as HGEIP reflects the file's current state rather than
being latched, an interrupt which arrived before the bit got set still
raises the SGEI once it is.


> [ ... 49 lines skipped ... ]

> --- a/xen/arch/riscv/aia.c
> +++ b/xen/arch/riscv/aia.c
> @@ -18,6 +18,13 @@ struct vgein_ctrl {
>      /* The least-significant bits are implemented first, apart from bit 0 */
>      unsigned long bmp;
>      spinlock_t lock;
> +    /*
> +     * Guest interrupt file IDs run from 1 to geilen inclusive (0 means that
> +     * no guest external interrupt source is selected), and geilen can never
> +     * exceed BITS_PER_LONG - 1, so indexing this array by the ID directly
> +     * always fits.
> +     */
> +    struct vcpu *owners[BITS_PER_LONG];

It looks like owners[] already carries the information bmp provides.
Couldn't we drop bmp and use owners[] alone, with owners[i] == NULL
meaning that file i is free? That would avoid having to keep the two in
sync, and vgein_release() could then check ASSERT(owners[id] == v)
rather than just that the bit was set. A linear scan over 1..geilen in
vgein_assign() should be fine given geilen < BITS_PER_LONG.

If you agree, it would probably be cleaner to introduce owners[] in
place of bmp in the earlier "add basic VGEIN management" patch, rather
than adding bmp there and replacing it here.
> [ ... 26 lines skipped ... ]
> +
> +void hgei_interrupt(void)
> +{
> +    unsigned long hgei_mask, flags;
> +    struct vgein_ctrl *vgein = &this_cpu(vgein);
> +
> +    hgei_mask = csr_read(CSR_HGEIP);
> +    hgei_mask &= csr_read(CSR_HGEIE);
> +
> +    csr_clear(CSR_HGEIE, hgei_mask);
> +
> +    spin_lock_irqsave(&vgein->lock, flags);
> +
> +    /*
> +     * Bit 0 of HGEIP/HGEIE is read-only zero: guest interrupt file ID 0
> +     * means that no guest external interrupt source is selected.
> +     */
> +    ASSERT(!(hgei_mask & 1));

Is this ASSERT() really needed? Bit 0 of HGEIP/HGEIE is read-only zero
per the spec, and vgein_init() already relies on that when computing
geilen. Even if it were ever reported, owners[0] is never assigned, so
the loop below would simply skip it.
> [ ... 35 lines skipped ... ]
> --- a/xen/arch/riscv/imsic.c
> +++ b/xen/arch/riscv/imsic.c
> @@ -555,12 +555,37 @@ void cf_check imsic_ctxt_switch_from(struct vcpu *p)
>  
>      write_lock_irqsave(&imsic_state->vsfile_lock, flags);
>      imsic_state->vsfile_cpu = p->processor;
> +    /*
> +     * Start to observe the VS-file from HS-mode: while the vCPU isn't
> +     * running an interrupt pending in its VS-file is reported through HGEIP
> +     * instead of being delivered to VS-mode, which lets Xen wake the vCPU up.

"instead of" reads as if HGEIP only reports it while the vCPU isn't
running. It always does; what changes is that VGEIN no longer selects
the file and the HGEIE bit set below turns it into an SGEI.

> [ ... 29 lines skipped ... ]
>  int imsic_map_guest_file(struct vcpu *v, unsigned int vsfile_id)
> @@ -695,6 +720,12 @@ static void cf_check imsic_vsfile_local_read_clear(void *data)
>      struct imsic_mrif *mrif = idata->mrif;
>      unsigned long new_hstatus, old_hstatus, old_vsiselect;
>  
> +    /*
> +     * The HGEIE bit imsic_ctxt_switch_from() armed belongs to the old owner
> +     * only.
> +     */
"Old owner" is ambiguous: it reads like another vCPU, but it's the same
vCPU on the file it is leaving. To mirror imsic_local_hgeie_set(), I'd
rather have an imsic_local_hgeie_clear() called from here, documenting
the pairing the same way, e.g.:

/*
 * Stop observing an interrupt file which a vCPU leaves when it moves to
 * another pCPU by clearing the bit imsic_ctxt_switch_from() set.
 *
 * Counterpart of imsic_local_hgeie_set() for the new file.
 */

In that case ...
> +    csr_clear(CSR_HGEIE, BIT(idata->hgei, UL));
> +
>      /*
>       * The file is reached by retargeting hstatus.VGEIN, and
>       * imsic_vs_csr_swap() alters vsiselect. Both belong to the vCPU running
> @@ -1044,6 +1075,21 @@ int __init vimsic_make_domu_dt_node(struct kernel_info *kinfo,
>      return fdt_end_node(fdt);
>  }
>  
> +/*
> + * Start to observe the interrupt file from HS-mode, the same way
> + * imsic_ctxt_switch_from() does it for a vCPU which is switched out.
> + *
> + * The counterpart, clearing the bit of the interrupt file which is left
> + * behind, is done by imsic_vsfile_local_read_clear(), which already runs on
> + * the pCPU owning that file.
 ... this wouldn't be needed at all.

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 10:47:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 10:47:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471651.1679902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYWE-0005AE-A1; Wed, 04 Nov 2026 10:47:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471651.1679902; Wed, 04 Nov 2026 10:47:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYWE-0005A7-7F; Wed, 04 Nov 2026 10:47:02 +0000
Received: by outflank-mailman (input) for mailman id 1471651;
 Wed, 04 Nov 2026 10:47:00 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOYWC-0005A0-Ao
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:47:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYWB-00AI82-Nt
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:46:59 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb0d22-8faa-0a2a0a5109dd-0a2a45049130-12
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:46:59 +0100
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb0d1e-b57f-0a2a45040019-d155dd2ef0c9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:46:54 +0100
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-48e04773687so201815f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:46:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fecac1a1csm3153700f8f.12.2026.11.04.02.46.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 02:46:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793789214; x=1794394014; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=30A1bfQ7LdKKRF9Zidp9+TUWRKwU2+ZacTc/RxfXgCQ=;
        b=d9knW2LpeyAgdo/pCTbzz/g402AgYHE4nAiyZr4qp5PYYgwc9eW5OoDFHPHA3xvc3h
         2wxI4ObO5Co5+1Ct5fwhiuNKyczB7Wn3n9zhZ7Kh/lCDVSgotY+LXYDGZWVBL0HMaKLl
         CULYQ3do7JMWm5ucO0nNdo2r6Cvk4vKZqrrzqUQeEyy1Jh1YVm9d+4OxdkYtGpXD0Ibl
         16DRnFBSuYk2A2FvzK9Bw1QHpYksawr3abjvMP2QxrFvAnaR4VSWpKTBE9XqTa0gaosF
         jRp1c2jCx6TgsBdYsubH7klfA6Fvl+Ex+8zyZAyQwmTyVkAdsgFm5nfjGQvUu5uDBmyi
         cd0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793789214; x=1794394014;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=30A1bfQ7LdKKRF9Zidp9+TUWRKwU2+ZacTc/RxfXgCQ=;
        b=sTEQwOFPfi3oMSX4awuQPPHKLi0waW17NkLeNCh0BFhYgnks59RU2zBFAFC8e/2sau
         apgtJc0wMwSqAe9lN+1RcKCvDfvX2h9KgHHO/+J9LAM1BUhsHEbgHaUveTVzVxZac3hL
         HP/U0Rc6BoSwdBBEiyCixQjegxDadJl9vfPctG3HZzynkCbT13x5GFBhoebN7jfm5oXD
         wU659dCiPlxU1GTr2vZKfwxQ9g7ZkMiaxTRbt66mJbnjoCCf1vTS9wgj5PQVUKHobHka
         C5pWH7na/Qxr0/emWP/hChuDoJ6dy3HSQHoHW/wLLfryENtTDEf0vpb5u7HG23iIfQ2R
         RYFQ==
X-Forwarded-Encrypted: i=1; AKwUvBxufTPsaojKUHi+b2mnTxvAgknqylvfxPg/TYJBM3E8MYCCaHekDfz5DJstr5JboLLZxK2r/Ps1gYU=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+OJgOrDNPM/VaSGBGPBy/WSDPInQ3hBkkZ6xpnpXAZlcFS4S15
	oO3eh21PQSgePQtKm0Al7Ehdzal/gLMmOV1UEp9A5xiXeLdD2hzdP48pS5yEetozjQ==
X-Gm-Gg: AYBFou1Fclm82t9+6+1sfsBZg9coEBBQ8qcnsqYspWagJj88wt2G095Pb3jw1R0MgRv
	gvMeMYyBkvDzfwUG/oOcjmV1PzEURMwe62RaJ7PWSpFBwVnI4W0qEvD2bsOf/V6gdvS9bdrC/FT
	BB0MdLMbWIL2TlaoSuYFJF6xsvzDCo8FzJ0lMir2g2P7zm2WUlGruBx61wnZeK2pmBambneBuqK
	rZpd+I3sP/c+vu2U4t74tCoq1fkDwh4BTviOgtBjJcV5qY/h/HiYGCZz8dJgNoMaSYxNh3h1knF
	eINlkuVt6RsJgQ37XbsLjS2c2OqcvhjmIiOLTlP+M3/Sci2XEWN/UPiByHc8fu1qZG6Dq9R9sZz
	kDJSQYiyRDEYMb7eTXRLiiXZdS/YB6mweEAMVIXjtbE+IcG7gx/stNCVZOW920dPdvMHxINUIXX
	EjcQkqCDRSMWigm1QJLakBGcD4IuFYMN35XUGuFledMz1xn7OndcO5Wlpv4zzmuDDODYoHaG/GT
	SgiV1H5t04S3W13R1ygFrW5aG5wTcHGTH7afDwXsURhXU56BrLfzyW5YNc4C2fnEedTVMDk6k16
	OBsHb/ItsyiJvtSqPDPbm+52jPQ+8SGGpTuODMCBRoHObzz6Udh5U8lhLJur1cIMoadK72yKVy/
	XgjynVXzxOkvY9VI=
X-Received: by 2002:a05:6000:26cd:b0:48e:8882:6d91 with SMTP id ffacd0b85a97d-48e88826d9dmr15712896f8f.1.1793789213916;
        Wed, 04 Nov 2026 02:46:53 -0800 (PST)
Message-ID: <63d71f41-6d5d-4b53-9af4-9d0938a2ef7a@suse.com>
Date: Wed, 4 Nov 2026 11:46:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/44] x86/mm: allocate the per-domain L3 in
 arch_domain_create()
To: George Dunlap <gwd@xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20261103-asi-hvm-v6-0-59dbc5ce9615@xenproject.org>
 <20261103-asi-hvm-v6-1-59dbc5ce9615@xenproject.org>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261103-asi-hvm-v6-1-59dbc5ce9615@xenproject.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793789214-583C0B50-399E3915/10/78276251493
X-purgate-type: spam
X-purgate-size: 2023

On 03.11.2026 23:13, George Dunlap wrote:
> init_xen_l4_slots() relies on d->arch.perdomain_l3_pg being non-NULL,
> or it will fill in a garbage value for slot 260.  Currently, this
> is allocated only implicitly, as a side effect of calling
> create_perdomain_mapping().  But depending on the specific
> circumstances, this may not happen until several hypercalls after the
> domain is created.  This is not robust: callers need to keep track of
> when exactly certain structures happen to be created to ensure that
> init_xen_l4_slots() operates properly.
> 
> Since fcf91ce9de66 ("x86/pv: don't populate the GDT/LDT L3 slot at
> domain creation"), a PV domain gets its L3 with its first vCPU
> (pv_create_gdt_ldt_l1tab()).  Only mapcache_domain_init() makes it
> earlier, and release builds skip that unless memory hotplug is enabled
> or the host's memory reaches past the part of the directmap PV guests
> can see.  So in release builds on most hosts, an L4 that is promoted
> before XEN_DOMCTL_max_vcpus has created the domain's vCPUs gets a
> slot 260 entry made from a NULL page (0x803e900000000063).  libxl is
> unaffected: it creates the vCPUs before it builds or restores a domain.
> 
> Allocate it explicitly in arch_domain_create() instead.  Introduce
> allocate_perdomain_l3(), which will allocate a page with the
> appropriate parameters and zero it.  create_perdomain_mapping() now
> requires the L3 to exist, and BUG()s if it does not.
> 
> We return a pg rather than setting d->arch.perdomain_l3_pg directly,
> because later we'll use the same function to initialize the per-vCPU
> perdomain L3.
> 
> This removes the need to allocate it semi-implicitly (calling
> create_perdomain_mapping() with nr == 0) in hvm_domain_initialise().
> 
> Fixes: fcf91ce9de66 ("x86/pv: don't populate the GDT/LDT L3 slot at domain creation")
> Assisted-by: Claude Code:claude-opus-5-5
> Signed-off-by: George Dunlap <gwd@xenproject.org>

Reviewed-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 10:58:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 10:58:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471665.1679912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYhf-000703-Ad; Wed, 04 Nov 2026 10:58:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471665.1679912; Wed, 04 Nov 2026 10:58:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYhf-0006zw-78; Wed, 04 Nov 2026 10:58:51 +0000
Received: by outflank-mailman (input) for mailman id 1471665;
 Wed, 04 Nov 2026 10:58:49 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOYhd-0006zq-Pz
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 10:58:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYhc-00AKwa-Vx
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:58:49 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb0fe8-8faa-0a2a0a5109dd-0a2a4508a7fc-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:58:48 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb0fe8-f659-0a2a45080019-d1558030a45f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:58:48 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a549cd7fd2so4745875e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 02:58:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4134ff2a3sm42205495e9.2.2026.11.04.02.58.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 02:58:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793789928; x=1794394728; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=G/74xMzCy1qrkh5nS4TT5y5CUMY7oP3+jZg9UUxgPNQ=;
        b=BTEHmzMTLeXeLrn4ITnyGXwyxxmo0n17nkUpO/2VAqZpT0DYqcol3tYYgEPh8YGQmp
         1lfiAAELk+PBb0DEdd+erYEmnIeqv+naju+i69W/d4NnQ0y6qEM5zjqz7QKhUEuJeoyt
         WpU3aOJtEOZicnf7vO0cNjOUWGCpZMKk7YMGFMCwH5fJGGIzFfO69efsuIMy8PO2V/I8
         cqkrvrSY8vuEqqSpF+R/2UEQsM5hNDYYbpWt1gTuB+v7upC5bPE8rIi+BK/AzyBqQiNM
         QR2gVVCZYNrsZHgNgnaESH4DtU9EbXrzabXT1DHxAUL0yjWF/6P2r25i2oZwi3dmtA6w
         1DXg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793789928; x=1794394728;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=G/74xMzCy1qrkh5nS4TT5y5CUMY7oP3+jZg9UUxgPNQ=;
        b=YwFbxwiAlKqyj9Al6N1oMxaMjPQrK898vH/0tvkLFRDjVhxo4SQpniLS5ymjgDPFgi
         CZ+d06X6/npUMkW9lgaZfgiQb4dkeRXxvE1cYe4kd6r1YeRIHxAeYGukXJ3uiVap2dWs
         36KO5xzRukGyK7qirGn5uCiRoB864gG37FUs+ielXOMgyRSzGzzMPWpBujJX01VSC4ZH
         VH9uW0MoaMBvb6k/BlBUDe9tu0uJa50hF3GojvZ2xM47uVuJ5Q3OR/Q3dV4c6rnOSGPy
         domSw0LFyhUzpiiWqKQHPmkR2VR8Lhsp5vDslxt0XpZJyFLQUuabbGrDiVoyoA4M5uV8
         y7vQ==
X-Forwarded-Encrypted: i=1; AKwUvBxDbaQfj+DF3FE0qZhq5XUAb9ML8MUBQfJWxyBWNC1pS/84re1sFjDXso1xUM2blhbXgisuCmUlrjw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9oEIr+xs9vH9w7VkVhBLn/tmuGZYHftsvDiOvz0blWu86IqFAP
	TsCDLhOJEJmBZvOXJwN3DBMtII1fYRIGaPaRTQMj99oIB8LJFy8p87odkczRU5kQ8w==
X-Gm-Gg: AYBFou1QRrG46+Tsgb1XHlxkOKAFRiO4BFEbm6Kikdj+a1xsiUbF3gw9dT92T2L6TEi
	KhgvZyXeFdgwqjnjC27eRrOtHP/EylrOZ1Viczz/crzjyn/ISUZYUEf0PFNqayLBdEkQJlDYKD3
	j5gD7kpLqEa/N/B+N5c/yeACa8MmKsdF8HJKvkSsrUDdoimGPbaeF4EwvAYSP6kI59SN0s9c0ok
	/QTd0gCeY/I34bZRj/2hFhDj47m4jCpNkn+xuXE68vOrJwgWGyyjImbGoTPzCAya4DhR/JSyQDY
	4RqZ1aT46drE24FiIkcBMjI+rC2kYHV89j/KbJEOncAa4KY3b6eIIYeiqVOwdahV1wO/7hNNcHK
	ARRXpBdXvXNYVT0LxSm32NjZbPLDr8PbeMxZbUJ3ZFKXxVjatGdvUrBPKscpSqwG/1GlT09yUHe
	pEdfVAj1chsNCaqpFdgp6zw00ZU47dH0WKkdbdLXeBoe5XYjb1eOx6XaYF6GBaQ5zpUuXtxd7hs
	A9W8ubnie2SJd4v0bIrNsnnJz29ljgOD45ypJaliznKFZHgf5YpeqFlR5YkvLofligyedBi+cJY
	pwOkPa8Wj5vAyJYDe0JeL+Xn7n3YUCNmLaZOF0hmDf5TQlAFxZ3J6jAVgNdjcxJMGcZCINiYBAP
	59TJyddzBKKr3PJySE4UkxuayhK8Y0Z8HvkKK
X-Received: by 2002:a05:600c:848c:b0:4a3:5da2:38ae with SMTP id 5b1f17b1804b1-4ac17a3628emr357729515e9.14.1793789928294;
        Wed, 04 Nov 2026 02:58:48 -0800 (PST)
Message-ID: <4c03ba94-6635-4f86-bd05-944fc396f3ec@suse.com>
Date: Wed, 4 Nov 2026 11:58:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] automation/eclair: deviate MISRA C Rule 11.8 for
 xfree() and vfree()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
 <4accfe649e163bb4d0372c432256ed394b4ee50d.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <4accfe649e163bb4d0372c432256ed394b4ee50d.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793789928-DFCD387B-8AF0C178/10/78276251493
X-purgate-type: spam
X-purgate-size: 760

On 03.11.2026 11:29, Dmytro Prokopchuk1 wrote:
> Livepatch passes const-qualified pointers from struct payload to xfree()
> and vfree(), which take a 'void *' argument. The cast that removes the
> const qualifier is a violation of MISRA C Rule 11.8.

I can only repeat my prior suggestion here: xfree(), vfree(), and other
similar freeing / unmapping functions should take pointer-to-const. Andrew
has been of the opposite opinion, thus being unhappy about e.g. vunmap()
or unmap_domain_page() taking pointer-to-const. I think we need to come to
a project-wide position towards this, and only then can we decide whether
(and if so how) to deviate any of those functions.

Further, if you deviate xfree() and vfree(), why not also xvfree()?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:00:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:00:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471674.1679921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYix-0008TN-JP; Wed, 04 Nov 2026 11:00:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471674.1679921; Wed, 04 Nov 2026 11:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYix-0008TG-GV; Wed, 04 Nov 2026 11:00:11 +0000
Received: by outflank-mailman (input) for mailman id 1471674;
 Wed, 04 Nov 2026 11:00:10 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOYiw-0008TA-Bv
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:00:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYiv-00ALUa-OC
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:00:09 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1036-e002-0a2a0a5209dd-0a2a4508ae56-24
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:00:09 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1038-f659-0a2a45080019-d155802eb1a0-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:00:09 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4a2153c8525so3357025e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:00:09 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b43c748105sm43632025e9.6.2026.11.04.03.00.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 03:00:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793790008; x=1794394808; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=PbFWdUa4VlrjpcKmBu2JCg52vYF9RRdG6E4DaLLh+cM=;
        b=TrhpY0UaM3o39jITf4y3qEU+jkKIBvOekevnAO4wBzz8urPLh67EXCLfBXoqCRD53A
         iRa0DcF+mdU/zhg0YcwEQbjIlPBJMxAAnmrHYG9WxxDVC3KLh6FsREnQ++QlLV+lYZKu
         2mKyHb73zbODu561c+smA//FkcRkrZNaA1sNK0VxpmjWVOZ6/DW7WCAoHAOVe7KIdeSe
         HZdvTrYOK4ueTGKEF+0aRKF+iR45GaVaHwS+puKaWp78oM2PU8I7yc5HMZnUVDYdUnO+
         6v6Z5N/DN2+fCZTdESlZSSb09A6VDCq4umlpt1vD91qFi3YBcIx2EeqbU5FLvvT15O1e
         407A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793790008; x=1794394808;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=PbFWdUa4VlrjpcKmBu2JCg52vYF9RRdG6E4DaLLh+cM=;
        b=LzlEpf1V8KPlI+xtQ7SxANs5RhLMBOlVxW+HlE0zSck8h/pXe1vPpoYMMU0zqn4ho7
         c0OKZ+KWyfIJ2YKQELggBB3iqeeeQ+UtdyskbNIO6mGtjAGAfvNqPqOo3xShrA8jbyVQ
         BcvGDmxdfXI2CGhRncJ1uPXB5gbm9E/vFJ9IpLggOEtw8rCcq0D6fOq1WORzMYdo7sDk
         ChBjUGlUFQPU15mCQTz94Q9ni1TrI3kMv8z9qnPTkzqEv+fQ1D3u5w4OBJJb2hU5FtIw
         Gz0GWYWeTm8wlt2Qhg4VSRPffJUZOtWyFNZUwNgIMPlOmGT5SwIYdJ0vSnvNNPLajbFp
         W6dg==
X-Gm-Message-State: APuU4Z+xjBqxD19Cdtcl6OuBvwDGIDIzYsevfjK1DTdIIoooZJwTmuBd
	1CrQJ2cOZ5fOTgSkIvVipIW1IHgu2eXROjI9dHIe3CJJ9i1UWHVw88Y3
X-Gm-Gg: AYBFou282I/Nl+1CsJBfB0hkZvSY2hPNUGBhZ46LqhYSrJwT+Tuadx+PwFErGYgFwoY
	oCPqQ5x/hNbBTfuUbb+PTY3DwZaAFZNWM0JFrZWyJYCOjRJScqdxlcPpsagso6wh6P/vYwGuVAK
	uocmEw3P5ssmGdbTYsVexl4Rm3heoMV+STH7ZjrgA/x00B5/L5HHLzB8dagrZWkc72J4yGroEUF
	m0u2NQg1k1NbTTfFIW4qfzncscz47GTeeIJCIlNkY7MB/fPB2b8iqHXCbYgLMsRqejv7VhTkv2R
	k+jwobgo4FfOI6LcAaxBIo7V8rGIPeP50QXeRF93loSgPsSXPPzQuyIGJ9mS5lWBR/0JGqDk03z
	cbCUIyTw86Q20m9/fTivfxGnRcYJfhMhC02MtRVjOodxPYVL+7Vh/uwgJ5FDsVX3R61hshx/FBY
	Yy2LnnVz2m84dxsvCusVJp5xPukOCeRpO2uq8CQkoDOjwtby68BUh7REK0mVbsIBTnVYsdSnN9y
	ymqsVNPOH/Gb43kSwdk6Pz8E977WnwjaWcYO9PU20crgJ7Gi52FdBWxPdN/eARruna7NbcvnkEk
	MVn1epuvT20c3XQBNsmmp8iR9px/YR8arpzV9NVqSvbLVkf34nunBqfN9bple+4GSaYFulgwxuQ
	gS1g=
X-Received: by 2002:a05:600c:c4b8:b0:4a0:1b14:e283 with SMTP id 5b1f17b1804b1-4ac150b38dbmr372936045e9.1.1793790007994;
        Wed, 04 Nov 2026 03:00:07 -0800 (PST)
Message-ID: <6a00cec2-b58e-4a83-a115-393f283d1cf6@gmail.com>
Date: Wed, 4 Nov 2026 12:00:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/39] xen/riscv: extend exception tables with type and
 data fields
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <8c1c0c2adf56a395b6419335161da9f11fc827c5.1790779209.git.oleksii.kurochko@gmail.com>
 <1792508383.8631fc262581453bbf619ec5b2062170.1a159d3517e000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792508383.8631fc262581453bbf619ec5b2062170.1a159d3517e000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793790009-CFCD387B-06EFA35D/10/73395122804
X-purgate-type: spam
X-purgate-size: 6466



On 10/20/26 4:59 PM, Baptiste Le Duc wrote:


>>   
>>   static void __init __maybe_unused build_assertions(void)
>>   {
>> +/*
>> + * GPR_LIST() puts nothing between its entries, so the separator has to come
>> + * from here. It is emitted ahead of each entry rather than after it, so that
>> + * the expansion doesn't end with one and its use below can be terminated like
>> + * an ordinary statement.
>> + */
>> +#define CHECK_GPR_INDEX(num, name)                          \
>> +    ; BUILD_BUG_ON(offsetof(struct cpu_user_regs, name) !=  \
>> +                   offsetof(struct cpu_user_regs, zero) +   \
>> +                   (num) * sizeof(unsigned long))
>> +
>>       /*
>>        * Enforce the requirement documented in struct cpu_info that
>>        * guest_cpu_user_regs must be the first field.
>>        */
>>       BUILD_BUG_ON(offsetof(struct cpu_info, guest_cpu_user_regs));
>> +
>> +    /*
>> +     * Enforce the requirement documented in struct cpu_user_regs that the
>> +     * x0..x31 fields are contiguous and in architectural register-number
>> +     * order, which is what lets a register number be resolved to its saved
>> +     * value by indexing them as an array anchored at ->zero.
>> +     */
>> +    GPR_LIST(CHECK_GPR_INDEX);
>> +
>> +#undef CHECK_GPR_INDEX
>>   }


>> diff --git a/xen/arch/riscv/include/asm/gpr-num.h b/xen/arch/riscv/include/asm/gpr-num.h
>> new file mode 100644
>> index 0000000000..867ee172c0
>> --- /dev/null
>> +++ b/xen/arch/riscv/include/asm/gpr-num.h
>> @@ -0,0 +1,53 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * Based on Linux 6.16 arch/riscv/include/asm/gpr-num.h, with the
>> + * register list turned into GPR_LIST() instead of being open-coded
>> + * with .irp, so that it can also be used outside of assembly.
>> + */
>> +#ifndef RISCV_GPR_NUM_H
>> +#define RISCV_GPR_NUM_H
>> +
>> +/*
>> + * GPRs by ABI name, together with their register number (x0 .. x31).
>> + *
>> + * This is the single source of truth for the mapping; users expand it with
>> + * their own per-register macro. Among them, the layout of struct cpu_user_regs
>> + * is checked against this list at build time (see build_assertions() in
>> + * domain.c), so neither list can be changed without the other.
>> + */
>> +#define GPR_LIST(x)                                 \
>> +    x(0,  zero) x(1,  ra)  x(2,  sp)  x(3,  gp)     \
>> +    x(4,  tp)   x(5,  t0)  x(6,  t1)  x(7,  t2)     \
>> +    x(8,  s0)   x(9,  s1)  x(10, a0)  x(11, a1)     \
>> +    x(12, a2)   x(13, a3)  x(14, a4)  x(15, a5)     \
>> +    x(16, a6)   x(17, a7)  x(18, s2)  x(19, s3)     \
>> +    x(20, s4)   x(21, s5)  x(22, s6)  x(23, s7)     \
>> +    x(24, s8)   x(25, s9)  x(26, s10) x(27, s11)    \
>> +    x(28, t3)   x(29, t4)  x(30, t5)  x(31, t6)
>> +
>> +/* Number of GPRs described by GPR_LIST(). */
>> +#define NR_GPRS 32
>> +
>> +#ifdef __ASSEMBLER__
>> +
>> +/*
>> + * Generate the .L_gpr_num_<name> assembler symbols, used to turn a register
>> + * name emitted by the compiler into a register number.
>> + *
>> + * The separator is emitted ahead of each entry rather than after it, so that
>> + * the expansion doesn't end with one: whatever follows a use of the list has
>> + * to supply its own separator, instead of silently relying on a trailing one.
>> + */
>> +#define GPR_NUM_EQU(num, name)  ; .equ .L_gpr_num_##name, num
>> +GPR_LIST(GPR_NUM_EQU)
>> +#undef GPR_NUM_EQU
>> +
>> +#else /* __ASSEMBLER__ */
>> +
>> +/* See the comment ahead of the __ASSEMBLER__ flavour above. */
> It's hard to understand which comment you're talking about, if you are
> talking about the separator comment above GPR_NUM_EQU, may I
> suggest something like:
> 
>      /* See the GPR_NUM_EQU()'s comment about separator use */

Agree, I will apply this suggestion. Maybe a little but more precise:

/* See the comment above the assembler GPR_NUM_EQU() about the separator. */

> 
> 
>> +#define GPR_NUM_EQU(num, name)  "\n.equ .L_gpr_num_" #name ", " #num
>> +#define DEFINE_ASM_GPR_NUMS     GPR_LIST(GPR_NUM_EQU)
>> +
>> +#endif /* __ASSEMBLER__ */
>> +
>> +#endif /* RISCV_GPR_NUM_H */
>>
>> diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
>> index 647268e6d0..599ae3cd60 100644
>> --- a/xen/arch/riscv/include/asm/riscv_encoding.h
>> +++ b/xen/arch/riscv/include/asm/riscv_encoding.h
>> @@ -911,8 +911,13 @@
>>   #define REG_OFFSET(insn, pos)		\
>>   	(SHIFT_RIGHT((insn), (pos) - LOG_REGBYTES) & REG_MASK)
>>   
>> +/*
>> + * The x0..x31 block of struct cpu_user_regs is not required to sit at the
>> + * start of the structure, so anchor the offset at ->zero (x0) rather than
>> + * at the structure itself.
>> + */
>>   #define REG_PTR(insn, pos, regs)	\
>> -	(unsigned long *)((unsigned long)(regs) + REG_OFFSET(insn, pos))
>> +	(unsigned long *)((unsigned long)&(regs)->zero + REG_OFFSET(insn, pos))
> I don't see why this hunk is needed here. Nothing in the tree uses REG_PTR()
> (nor GET_RS*() / SET_RD()), and ->zero is the first member of struct
> cpu_user_regs, so this is a no-op today. It is also unrelated to the extable
> change.
> 
> If you want REG_PTR() to follow the same layout assumption as regs_gpr_ptr(),
> I'd rather see it built on top of it, e.g. regs_gpr_ptr(regs, REG_OFFSET(insn,
> pos) >> LOG_REGBYTES), in a separate patch together with its first user.
> Otherwise please drop the hunk (and the matching sentence in the commit
> message).
> 

I'd rather keep it here. It isn't a standalone change waiting for a 
user: it follows from this patch relaxing the layout requirement. Until 
now the requirement wasn't written down anywhere, and REG_PTR() 
implicitly relied on the stricter form of it, x0..x31 starting at offset 
0 of struct cpu_user_regs. This patch documents the requirement as 
"contiguous and in register-number order, anchored at ->zero", with the 
BUILD_BUG_ON()s anchored the same way (look at build_assertions() 
above). Leaving REG_PTR() as is would make that comment untrue for the 
one other piece of code in the tree that resolves a register number to 
its saved value. Moving the block would then still build, and REG_PTR() 
would silently compute wrong addresses. It's a no-op today simply 
because the block still sits at the start of the structure.

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:11:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:11:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471694.1679930 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYtl-00021n-Hr; Wed, 04 Nov 2026 11:11:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471694.1679930; Wed, 04 Nov 2026 11:11:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOYtl-00021g-F3; Wed, 04 Nov 2026 11:11:21 +0000
Received: by outflank-mailman (input) for mailman id 1471694;
 Wed, 04 Nov 2026 11:11:20 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOYtj-00021a-Ti
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:11:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOYtj-00E8U9-A7
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:11:19 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aeb12ce-2eae-0a2a0a5409dd-0a2a450bbede-38
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:11:19 +0100
Received: from [52.101.70.99]
 (helo=AS8PR04CU009.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aeb12d6-b7e8-0a2a450b0019-3465466371da-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:11:19 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by DB3PR0302MB8966.eurprd03.prod.outlook.com
 (2603:10a6:10:435::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026
 11:11:16 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Wed, 4 Nov 2026
 11:11:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=YCrkV+T1K71MPw5qpOxACSaJBUc4QEgtBo386EZxV1TKK3ievSAu679d9tlnHhPY6Ma4Gu+mBcz7TjoAw+/XUn0fYgy5Jes7OzLp5vpC7Ky9OISwOE9Sz0CITp6/5Zy19+B8olvfp36TDxEMi3iPEiEyvvrqlqxQ2pAfXUd/A23AMOzyFr/VZV50x+qTL9026srM+ZuyNOG+HmvJ/8nN4LiG1xXNPNg1GxLhNgTO/DqDn3eqFUWZLm0W94laKnRvylJst1ggkB+MT5uB6BRNwjU0aWSpQLysawqXCIxu/Vwf3FxMnAHa77GM1FsbDbcjCMC7wRN7VirvErgr3Q8QTg==
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=Wqsn9dtNsgHFjpJoJjke5jWkUOqru+6q+VExSgD8qVI=;
 b=Mz5ePTtwVBRBDyxTIsC5mz1W16s8uz7dIKDIJGqTBZm+72sj47Pjh/02pYwc+Pu/8wHvMDr54Lp6Ee+77TEoq+AWSHqQ/qeabL3X7N1xgCaAwDQLwDK90nePSI6L3QX7IU6oH1NGuTDYvH+AzbtfXhsh0PKWuZW/f7d0KfINtHsGh0d6yWy/dPo9e7HggG1qlVfNy4Vt8AI4G88qU6uvsH8+wYcNd5p7nkqyYDVErPXjJjO5Cg1Hm8rdXdffHORR9mTMtqtPby1silqMx6rgch4RwNcmcrfq6LQm84DyuzcyshwlhtrhHor8BepHS8EgLS6Ep4L11laB+MFzc1OSUA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Wqsn9dtNsgHFjpJoJjke5jWkUOqru+6q+VExSgD8qVI=;
 b=tgs/CFvY4wew8ZR5CB8zW+Sp+qfVLycw0/vRPeRaKKyocbqjSEvj4t8Brdk4yLZczGIu7h3j5LBAee+7Fb2XU6KE0ZI2pCOl2LpklbOdyHmYGtNwUOn2bx7/Fjyb7AxOq37NiQtyssuohVa9ocy6GizbGRqtxuaQ9pzY5WIPkmc9gtSGS9Vtkc7Xe1GEZqhq9WUrCjck18+YWisM6km6r5XVoROVAoGUFTEnGrvzQR2KuATaz6lTQBK6GViQed3nbAvwuB9LE2CVRX7JsUaW/AHrgrS1VD0hNVD5dqSCHcDJSA1LtH+ev17QYXZQI+ehWjuWSbJdzen3UQd4vWOO7A==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I31v/+oPR9ykKZQEp+RtbzYLcdwyWA
Date: Wed, 4 Nov 2026 11:11:16 +0000
Message-ID: <2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
 <04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
 <874idxmd91.fsf@epam.com>
In-Reply-To: <874idxmd91.fsf@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|DB3PR0302MB8966:EE_
x-ms-office365-filtering-correlation-id: f4a96759-de7a-4348-3cb0-08df3a64585b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|7416014|366016|1800799024|376014|261028144727099003|261026121527099003|261026140227099003|261009223027099003|261102123227099003|261021121427099003|261021135927099003|261022075727099003|261022105027099003|4143699003|5023799004|11063799006|56012099006|3023799007|10067099003|6133799003|22082099003|18002099003|38070700021;
x-microsoft-antispam-message-info:
 +owLBvBzI3cZbt79x/wov8o5UCiocFCtMHa+gcH1ixm4bD0jw0yhaCOZgmgJEIs32VKnia/GhG/4uvcEBY966GJf6YRLsxTiCyrBAG5uUnr9ma/ph6KIsm9otnCSisXI0GRjMY8IWB5p5uE9mkXWVW7NPn7sSmI/vP91AisOTWnNXuT9OZXNrIKkHsTU4Nk+2TT807LJ/O83vqpdwCFIsJ6q+K1GLHguY2IQrtQDKlwmuLgtCpsMEyDzYlUAYH+JrKRMbkl196OzeI0UZnHy8LQWhuv5dy9lR9ur6Vqm3qFLNv0Iq5CahwTTnv6BGge5ggmcvz/qCEBvoZML8AHtB1ygKNoIfAu0tlIs/ljThmBpf639+lw+JXO9oGaFnf6v+xr4vNn2Mp8Ts5Ytm0S/PilWDF/0bi3DKdqOE7Y+ndZz6XpjVz4tm4OoVNEr1JF4RSyPHZgt7+otoepxI0YasMVY/fBZ6I1oS/pB0Lt0JP+BYVbNtBfW/KoLgFJncYfDDA9hs9gBhxrKWuiSF4M77UN1q8HXvNoGimo5B8GEfw75DjxgcnSj/3eHvFgUPDIp7W3xP+aHI8HLjR1GKKPZVP+5vP6OP+qj7utuAHnMWCXOnmy1W4XOjPrL3+8mYcBrL0mBBM69f2uWi+YGkb4BZKXadkzaGM++TDS1RIQxH5c=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(7416014)(366016)(1800799024)(376014)(261028144727099003)(261026121527099003)(261026140227099003)(261009223027099003)(261102123227099003)(261021121427099003)(261021135927099003)(261022075727099003)(261022105027099003)(4143699003)(5023799004)(11063799006)(56012099006)(3023799007)(10067099003)(6133799003)(22082099003)(18002099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?QkJBWDFCYlNYQ1g5ZUdRZjFOZFpVTXpRM010Qlh1SzVzMHpTQUIyRjFhNHZM?=
 =?utf-8?B?TE83SjE4UHJ2aDRoWnlzM3lOTEZjUHRrWnRMVVVUazRPT040a2x6czhrTTNP?=
 =?utf-8?B?eGhuN0pLQ3hmNGZicFRGTGZOa1hSYXhJVEs1NkxLQ0FUSDlPYnJhbktWQ2Y2?=
 =?utf-8?B?b2VYRWFoWVRuWldGMXFzS0YrYno4c0ZId3pnYTM4ekE2YzlUOTVzOTRidWVp?=
 =?utf-8?B?U3cvOFkxSklGUUdjcENmeVlKTkV2YjhXeWpIMVJEOUJWRGplSk11ZllYQVN6?=
 =?utf-8?B?VVlqZGxMdU9DSG5MOEhuS1NhWmI0d2V1ZlhJdHpUUS95cGtHRTVHUk1iQVFk?=
 =?utf-8?B?VVNlaFFSUGVxTlkrdm5jYlh6d2lOd1craVp5WVpCU01LbXJCN011Rmx6bnJr?=
 =?utf-8?B?WHVjY3N6MVlCam1UbTRFenFrNS95SnRkSzlMQlVsTVBubGRwTC9VYnA5cXZ3?=
 =?utf-8?B?TlZkQUw4aU93VXk1d1pCajl0U3d6QTVkTHp5RGpiNTVwbnZDamwzcFZmbWd0?=
 =?utf-8?B?WEtiaHNkYy9zVHRXQThQZWF5RE1GaEVCZkdvNEh6ZHJnQ3MxdGwvb1pqbVlE?=
 =?utf-8?B?L242aytHNXNoc29Qc1NndWk3a1daN05Wb1J5dXY1cG0rYzU5K0UrMXhQNEFX?=
 =?utf-8?B?b0c0bXRsakQvNHMrbkk3RTVwS1cvckRhSlRRT2ZjOU5SYWlYOTZrcnVGRmFt?=
 =?utf-8?B?VXFGajQ4eGpvczNXTVNZME1saW8wVmFhWklEQlp2Q3hHQ1J2TFprbjhrSWFO?=
 =?utf-8?B?dk9TSGs1Tk8ybi9Ya0U5TzRITFJvbnd2U1h1eEc5TW5DUTdTU1FGYnlNUmc0?=
 =?utf-8?B?VStzMytkNVBFRkdhYUJCdUpZS3IrckVUS3duVU5hU04xdlBySm4xZ3JUSGNv?=
 =?utf-8?B?cHBGWjBVcEtEV2RVeDdPR0wxMTY0SXRXanNZdndHRVhCSUxNblZlQmJZZzNW?=
 =?utf-8?B?djMzRnZ4MC9xakZxbmRNaW9aTkZMZ2o3NE96dGt1OHNOVHMyUlJWcEtONE0r?=
 =?utf-8?B?OGtwN0xjNk1qQnI4Qmw5VW13ZjdxUU4yNEozUW93cVNTcUhqQ1RFVmxQc1FS?=
 =?utf-8?B?cGR0em9ySVg3YTJROHI3TnFlcGhwSUJrajdZSS8zdjZyc3RGZkhVV053azRF?=
 =?utf-8?B?bGphck5pLzFETUUwVEoxcmxMdVFObjlYS2dQS3h4OTZYU1EyNHRFRSs4QWFu?=
 =?utf-8?B?bUF4dTdXRWh1REtUclFFZ3kzNTlJWnp5b1orMlpBQmJyZDA1U1JEMkpBNStq?=
 =?utf-8?B?WERCMFQvcDZ1dmxQeS96aVNtYlhDSFpKd2RNVTJCRVhWSDd2MlhPVWsrQTZx?=
 =?utf-8?B?aEc3TVRXMU96VWJaekI1M3JQbkRxSEtoQ0ZaL0R4WWVidVdqOUdwdHJObW5w?=
 =?utf-8?B?azVoL0QxeGkxbEtoK0J6OWViQ0t5RnhUOSt4Y0lqUHpESzRpRWZieEhKTmJi?=
 =?utf-8?B?RjJnaGgyTzVoSExaaWZHbmplTFN0eFBvVi95NHdyU1BZVUxETkNBWUJtSnpt?=
 =?utf-8?B?WnZGVVBlWjl3S2haNFRad3g0and6ZUlhTVJTbnRLSGVxK0x3K2hORVNLOUJK?=
 =?utf-8?B?bVVVclJDcmlzM1VqNEtPbFJqUEg5UWdoQzNDYmFaRWE5dmphY3FmTXlmcUhT?=
 =?utf-8?B?SDgxdmpadlhFRUlJRkZyRFEyME9NQjc1V3dXakJ4dlF6c2tNaEhQTlQ3dFBr?=
 =?utf-8?B?d2ppclpXeTdEbnRHaDU5WWM0S0MzSTVQMzljSHlKSTZtZjIwdTQ1amFIZTBH?=
 =?utf-8?B?Vzk2Q01GWEowTmpuc2xhdjJzUDZpcVlyanBvbWk0M1gxUXpBMDVFbWsyZ2o2?=
 =?utf-8?B?TCtHeGM1RnhUOHBrTGdVbHd4dDhnaFE2MDVCdjBTc29hTGxxNUFKd2wvdFB0?=
 =?utf-8?B?NGlRcEwvT1NXbmpNNWxiRS9Jdzl3UW4zSVlyL0Z5RUJuelpZS3ZPYmJHZlJV?=
 =?utf-8?B?RG8rSnFienhPLzV1eGg5M3F3TVV3dXF0ZDczMDN2dnA4b1I4MEt5bkhpbC9M?=
 =?utf-8?B?cVNDYVdzdVdyQU9wMjJlZEFKQmg1VGtYc2tidlRueTg4bmRlVmFjY1IxZVhz?=
 =?utf-8?B?V3cvb2FOSmZZZ25wbTA3SWFCT2FGMjBhOWVYUThja2t5cUNvNWpwc3VLMzdE?=
 =?utf-8?B?RmQrTG1aZjZHajdObVlqSjhETDdFZmsxdWh6ZDk5WFZvMXNxSEwwYUpqTEVD?=
 =?utf-8?B?TVBGWlk2cWhVOTIvQk1SbHJtSENWUllzbGpyN0NWT2ZhTnZ0T1FIVnZDbzBJ?=
 =?utf-8?B?NWRaWmZEQWgxUW00eThUUmd6T21MSnIwNzlrcDVTeDV2R04xNjVQeVpxWjFB?=
 =?utf-8?B?dWhCNFFVeVRob0I4NUR5Tktlc256aVVZMlFlZEpRdmhrcW5EeFlQSXdCZGcx?=
 =?utf-8?Q?BqoQsvhuAOL7QpGg=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <0CF5FE9031C9BF4EA516219C4DA869A0@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f4a96759-de7a-4348-3cb0-08df3a64585b
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 11:11:16.3295
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 4nTqlZVb8GaoSGp6E1KMYTTScH0WjD5mgUO91hUm0L7XdfEJ6+kZ2pHjKlVL4dUwql0g5P1g5Qe1UoIKofaD2c71k6XgxyXBWqYRi8/u+tk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0302MB8966
X-purgate-ID: tlsNG-42698a/1793790679-A90CD9EA-4EE10155/0/0
X-purgate-type: clean
X-purgate-size: 32046

SGkgVm9sb2R5bXlyLA0KDQpUaGFuayB5b3UgZm9yIHRoZSByZXZpZXcuIHBsZWFzZSBzZWUgYmVs
b3c6DQoNCk9uIDA0LzExLzIwMjYgMDY6MjgsIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOg0KPiBI
aSwNCj4NCj4NCj4gSSdtIHNvcnJ5LCBJIHBvc3Rwb25lZCBkb2N1bWVudGF0aW9uIHJldmlldyB0
aWxsIHdlIGZpbmlzaGVkIHdpdGggY29kZQ0KPiBwYXJ0LiBUaGlzIHdhcyBteSBtaXN0YWtlLiBJ
IGRpZG4ndCBleHBlY3RlZCB0aGF0IGl0IHJlcXVpcmUgc2VyaW91cw0KPiBwcm9vZnJlYWRpbmcu
IEFueXdheSwgSSB0cmllZCB0byBoaWdobGlnaHQgbW9zdCBnbGFyaW5nIG1pc3Rha2VzLCBidXQg
aXQNCj4gd291bGQgYmUgZ3JlYXQgaWYgeW91IHByb29mcmVhZCBpdCBieSB5b3Vyc2VsZiBvbmNl
IGFnYWluLg0KPg0KPiBPbGVrc2lpIE1vaXNpZWlldiA8T2xla3NpaV9Nb2lzaWVpZXZAZXBhbS5j
b20+IHdyaXRlczoNCj4NCj4+IEZyb206IEdyeWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaV9zdHJh
c2hrb0BlcGFtLmNvbT4NCj4+DQo+PiBBZGQgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZl
ciBkb2N1bWVudGF0aW9uLg0KPj4gSXQgaW5jbHVkZXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBv
ZiB0aGUgU0NNSSBtdWx0aS1hZ2VudCBkcml2ZXIuDQo+PiBUaGlzIGRvY3VtZW50IGV4cGxhaW5z
IHRoZSBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LCBjb25maWd1cmF0aW9uLA0KPj4gYW5kIHRoZSBj
b21waWxhdGlvbiBwcm9jZXNzLiBUaGUgWGVuIFNDTUkgbXVsdGktYWdlbnQgZHJpdmVyIGlzDQo+
PiBkZXNpZ25lZCB0byBwcm92aWRlIFNDTUkgYWNjZXNzIHRvIHN5c3RlbSByZXNvdXJjZXMgZnJv
bSBkaWZmZXJlbnQNCj4+IGRvbWFpbnMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogR3J5Z29yaWkg
U3RyYXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KPj4gU2lnbmVkLW9mZi1ieTog
T2xla3NpaSBNb2lzaWVpZXYgPG9sZWtzaWlfbW9pc2llaWV2QGVwYW0uY29tPg0KPj4gLS0tDQo+
Pg0KPj4gKG5vIGNoYW5nZXMgc2luY2UgdjE0KQ0KPj4NCj4+IENoYW5nZXMgaW4gdjE0Og0KPj4g
LSBkZXNjcmliZSBzZWNvbmRhcnkgYWdlbnRzIGFzIHhlbixzY21pLWFnZW50IG5vZGVzIHVuZGVy
IGFnZW50cw0KPj4gLSB1cGRhdGUgaG9zdCwgZGlzY292ZXJ5IGFuZCBkb20wbGVzcyBleGFtcGxl
cyBmb3IgdGhlIGNoaWxkLW5vZGUgZm9ybWF0DQo+PiAtIGNsYXJpZnkgc2hhcmVkLW1lbW9yeSBw
bGFjZW1lbnQgYW5kIHBsYXRmb3JtIFJBTSByZXNlcnZhdGlvbnMNCj4+DQo+PiBDaGFuZ2VzIGlu
IHYxMDoNCj4+IC0gcmVwaHJhc2Ugc2VjdGlvbiBhYm91dCAvZmlybXdhcmUvc2NtaS4gTWVudGlv
bmVkIHRoYXQgdGhpcyBub2RlIGlzDQo+PiB0YWtlbiBmcm9tIEhvc3QgRFQgYW5kIGNvcGllZCB1
bm1vZGlmaWVkLg0KPj4gLSBmaXggeGVuLHJlZyBhZGRyZXNzIGZvciBzZWNvbmRhcnkgZG9tYWlu
cyBmb3IgRG9tMGxlc3MgY29uZmlndXJhdGlvbg0KPj4NCj4+IENoYW5nZXMgaW4gdjg6DQo+PiAt
IHVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIG1hdGNoIHRoZSBsYXN0IERUIGZvcm1hdA0KPj4gLSBm
aXhlZCBSU1Q6ICIuLi4gY29kZS1ibG9jazo6IGR0cyIgLT4gIi4uIGNvZGUtYmxvY2s6OiBkdHMi
DQo+PiAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggZG9tMGxlc3MgY29uZmlndXJhdGlvbiBl
eGFtcGxlDQo+PiAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggbmV3IHBhcmFtIHhlbixkb20w
LXNjaS1hZ2VudC1pZA0KPj4gaW5zdGVhZCBvZiB0aGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcg0K
Pj4NCj4+IENoYW5nZXMgaW4gdjc6DQo+PiAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIHNlY3Rp
b24gb2YgdGhlIHhlbl9zY21pIGNvbmZpZ3VyYXRpb24gd2hpY2gNCj4+IGlzIG1hdGNoZWQgYnkg
InhlbixzY2kiIGNvbXBhdGlibGUgaW5zdGVhZCBvZiB0aGUgZGlyZWN0IHBhdGguDQo+Pg0KPj4g
Q2hhbmdlcyBpbiB2NjoNCj4+IC0gcmVtb3ZlIGFsbCBIVkMgbWVudGlvbnMgZnJvbSB0aGUgbXVs
dGktYWdlbnQgZG9jDQo+PiAtIHVwZGF0ZSBzY2ktYWdlbnQtaWQgcGFyYW1ldGVyIGRlc2NyaXB0
aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uDQo+PiAtIGFkZCBtaXNzaW5nIFNpZ24tb2YNCj4+IC0g
bWlub3IgZml4ZXMgYWNyb3NzIHRoZSBkb2N1bWVudA0KPj4NCj4+IENoYW5nZXMgaW4gdjU6DQo+
PiAtIHJld29yayBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gbGVhdmUgSG9zdCBEZXZpY2UtdHJlZSB1
bm1vZGlmaWVkDQo+Pg0KPj4gICAuLi4vYXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdCAgICAgICAg
ICAgICAgICAgfCA0MDUgKysrKysrKysrKysrKysrKysrDQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA0
MDUgaW5zZXJ0aW9ucygrKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kb2NzL2h5cGVydmlzb3ItZ3Vp
ZGUvYXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdCBiL2RvY3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0v
ZmlybXdhcmUvYXJtLXNjbWkucnN0DQo+PiBpbmRleCBkOTY5OGY0ZTRiLi4yNTQ1OWQyMmRjIDEw
MDY0NA0KPj4gLS0tIGEvZG9jcy9oeXBlcnZpc29yLWd1aWRlL2FybS9maXJtd2FyZS9hcm0tc2Nt
aS5yc3QNCj4+ICsrKyBiL2RvY3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNj
bWkucnN0DQo+PiBAQCAtMzYsNiArMzYsOCBAQCBUaGUgYmVsb3cgc2VjdGlvbnMgZGVzY3JpYmUg
U0NNSSBzdXBwb3J0IG9wdGlvbnMgYXZhaWxhYmxlIGZvciBYZW4uDQo+Pg0KPj4gICB8IFsxXSBg
QXJtIFNDTUkNCj4+ICAgfCA8aHR0cHM6Ly9kZXZlbG9wZXIuYXJtLmNvbS9kb2N1bWVudGF0aW9u
L2RlbjAwNTYvbGF0ZXN0Lz5gXw0KPj4gICB8IFsyXSBgU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFn
ZW1lbnQgSW50ZXJmYWNlIChTQ01JKSBiaW5kaW5ncw0KPj4gICB8IDxodHRwczovL3dlYi5naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3Ry
ZWUvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Zpcm13YXJlL2FybSxzY21pLnlh
bWw+YF8NCj4+ICt8IFszXSBgR2VuZXJpYyBEb21haW4gQWNjZXNzIENvbnRyb2xsZXJzIGJpbmRp
bmdzIDxodHRwczovL3dlYi5naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
dG9ydmFsZHMvbGludXguZ2l0L3RyZWUvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2FjY2Vzcy1jb250cm9sbGVycy9hY2Nlc3MtY29udHJvbGxlcnMueWFtbD5gXw0KPj4gKw0KPj4N
Cj4+ICAgU2ltcGxlIFNDTUkgb3ZlciBTTUMgY2FsbHMgZm9yd2FyZGluZyBkcml2ZXIgKEVMMykN
Cj4+ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQo+PiBAQCAtMTg5LDMgKzE5MSw0MDYgQEAgZXhjZXB0IGV4cGxpY2l0bHkgZW5hYmxpbmcg
U0NNSSB3aXRoICJhcm1fc2NpIiB4bC5jZmcgb3B0aW9uLg0KPj4gICAgICAgLT4gICAgICAgIHhl
bixyZWcgPSA8MHgwIDB4NDdmZjAwMDAgMHgwIDB4MTAwMCAweDAgMHgyMjAwMTAwMD47DQo+PiAg
ICAgICAtPiAgICAgICAgeGVuLGZvcmNlLWFzc2lnbi13aXRob3V0LWlvbW11Ow0KPj4gICAgICAg
ICB9Ow0KPj4gKw0KPj4gK1NDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciAoRUwzKQ0KPj4gKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICsNCj4+ICtUaGUgU0NNSSBT
TUMgbXVsdGktYWdlbnQgZHJpdmVyIGVuYWJsZXMgc3VwcG9ydCBmb3IgQVJNIEVMMyBUcnVzdGVk
IEZpcm13YXJlLUEgKFRGLUEpIHdoaWNoDQo+PiArcHJvdmlkZXMgU0NNSSBpbnRlcmZhY2Ugd2l0
aCBtdWx0aS1hZ2VudCBzdXBwb3J0LCBhcyBzaG93biBiZWxvdy4NCj4+ICsNCj4+ICs6Og0KPj4g
Kw0KPj4gKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN
Cj4+ICsgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+
PiArICAgICAgfCBFTDMgVEYtQSBTQ01JICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4g
KyAgICAgICstLS0tLS0tKy0tKy0tLS0tLS0rLS0rLS0tLS0tLSstLSstLS0tLS0tKysNCj4+ICsg
ICAgICB8c2htZW0xIHwgIHxzaG1lbTAgfCAgfHNobWVtMiB8ICB8c2htZW1YIHwNCj4+ICsgICAg
ICArLS0tLS0rLSsgICstLS0rLS0tKyAgKy0tKy0tLS0rICArLS0tKy0tLSsNCj4+ICsgICAgc21j
LWlkMSB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4gKyAgICBhZ2VudDEgIHwg
ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8DQo+PiArICAgICAgKy0tLS0tdi0tLS0tLS0t
Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKw0KPj4gKyAgICAgIHwgICAgICAgICAgICAgIHwg
ICAgICAgICB8ICAgICAgICAgICB8ICAgIHwNCj4gWGVuLCBJIGJlbGlldmU/DQoNCkl0IGlzLiBC
dXQgaW4gdGVybXMgb2YgU0NNSSB0aGlzIGlzIHByaXZpbGVnZWQgYWdlbnQuIEhhdmVuJ3QgbWVu
dGlvbmVkDQpYZW4gaGVyZSBmb3IgdGhlIHNha2Ugb2YNCg0KZGlhZ3JhbSBzaW1wbGljaXR5IChq
dXN0IGRvbid0IHNlZSBhIGdvb2QgcGxhY2Ugd2hyZSBJIGNhbiBwbGFjZSAiWGVuIg0KaW4gdGhp
cyBkaWFncmFtLiBUaGUgbWFpbiBpZGVhIGlzDQoNCnRoYXQgZHJpdmVyIGxlYXZlcyBzY21pIHBy
aXZpbGVnZWQgYWdlbnQgZm9yIGl0c2VsZiAoYWdlbnQxIGluIG91ciBjYXNlKQ0KcmVnYXJkbGVz
cyB3aGVyZSB0aGlzIGRyaXZlciBydW5zLg0KDQpUaGlzIGZvcm1hdCB3YXMgdGFrZW4gc2luY2Ug
ZHJpdmVyIGl0c2VsZiBpcyBhdmFyZSBhYm91dCB0aGUgZG9tYWlucyBhbmQNCmNoYW5uZWxzLg0K
DQo+PiArICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwgICAgfA0K
Pj4gKyAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCj4+
ICsgICAgICAgICAgICAgc21jLWlkMCB8ICBzbWMtaWQyfCAgICBzbWMtaWRYfA0KPj4gKyAgICAg
ICAgICAgICBhZ2VudDAgIHwgIGFnZW50MiB8ICAgIGFnZW50WCB8DQo+PiArICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCj4+ICsgICAgICAgICAgICAgICAgKy0t
LS12LS0tKyAgKy0tdi0tLS0tKyAgKy0tdi0tLS0tKw0KPj4gKyAgICAgICAgICAgICAgICB8ICAg
ICAgICB8ICB8ICAgICAgICB8ICB8ICAgICAgICB8DQo+PiArICAgICAgICAgICAgICAgIHwgRG9t
MCAgIHwgIHwgRG9tMSAgIHwgIHwgRG9tWCAgIHwNCj4+ICsgICAgICAgICAgICAgICAgfCAgICAg
ICAgfCAgfCAgICAgICAgfCAgfCAgICAgICAgfA0KPj4gKyAgICAgICAgICAgICAgICB8ICAgICAg
ICB8ICB8ICAgICAgICB8ICB8ICAgICAgICB8DQo+PiArICAgICAgICAgICAgICAgICstLS0tLS0t
LSsgICstLS0tLS0tLSsgICstLS0tLS0tLSsNCj4+ICsNCj4+ICtUaGUgRUwzIFNDTUkgbXVsdGkt
YWdlbnQgZmlybXdhcmUgaXMgZXhwZWN0ZWQgdG8gcHJvdmlkZSBTQ01JIFNNQyBzaGFyZWQtbWVt
b3J5IHRyYW5zcG9ydA0KPj4gK2ZvciBldmVyeSBBZ2VudCBpbiB0aGUgc3lzdGVtLiBUaGUgU0NN
SSBBZ2VudCB0cmFuc3BvcnQgY2hhbm5lbCBkZWZpbmVkIGJ5IHBhaXI6DQo+PiArDQo+PiArLSBz
bWMtaWQ6IFNNQyBmdW5jdGlvbiBpZCB1c2VkIGZvciBEb29yYmVsbA0KPj4gKy0gc2htZW06IHNo
YXJlZCBtZW1vcnkgZm9yIG1lc3NhZ2VzIHRyYW5zZmVyLCAqKlhlbiBwYWdlIGFsaWduZWQqKi4N
Cj4+ICsgIFNoYXJlZCBtZW1vcnkgaXMgbWFwcGVkIHdpdGggdGhlIGZvbGxvd2luZyBmbGFnczog
TVRfREVWSUNFX25HblJFIGFuZCBfUEFHRV9ERVZJQ0UsIGluZGljYXRpbmcgdGhhdCB0aGlzDQo+
IERvIHdlIGhhdmUgYW55IGxpbmUgbGVuZ3RoIGxpbWl0YXRpb24gZm9yIC5yc3QgZmlsZXM/IFRo
aXMgb25lIGlzIDExNA0KPiBjaGFyYWN0ZXJzIGxvbmcuDQpyc3RjaGVjayBnaXZlcyAwIGVycm9y
cywgYnV0IEkgY2FuIHJlZm9ybWF0IGl0IHdpdGggbWF4bGluZSAxMjAuDQo+PiArICBtZW1vcnkg
aXMgbWFwcGVkIGFzIGRldmljZSBtZW1vcnkuDQo+PiArDQo+PiArVGhlIGZvbGxvd2luZyBTQ01J
IEFnZW50cyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCBieSBTQ01JIEZXIHRvIGVuYWJsZSBT
Q01JIG11bHRpLWFnZW50IGZ1bmN0aW9uYWxpdHkNCj4+ICt1bmRlciBYZW46DQo+PiArDQo+PiAr
LSBYZW4gbWFuYWdlbWVudCBhZ2VudDogdHJ1c3RlZCBhZ2VudHMgdGhhdCBhY2Nlc3NlcyB0byB0
aGUgQmFzZSBQcm90b2NvbCBjb21tYW5kcyB0byBjb25maWd1cmUNCj4gInRydXN0ZWQgYWdlbnQi
LCBub3QgImFnZW50cyINCj4NCj4gYWxzbywgInRoYXQgYWNjZXNzZXMgdGhlIEJhc2UgUHJvdG9j
b2wgY29tbWFuZHMgdG8gY29uZmlndXJlLi4uIiBvciAidGhhdCBoYXMNCj4gYWNjZXNzIHRvIHRo
ZSBCYXNlIFByb3RvY29sIGNvbW1hbmRzIHRvIGNvbmZpZ3VyZS4uLiINCj4NCj4+ICsgIGFnZW50
IHNwZWNpZmljIHBlcm1pc3Npb25zDQo+ICJhZ2VudC1zcGVjaWZpYyINCj4NCj4+ICstIE9TUE0g
Vk0gYWdlbnRzOiBub24tdHJ1c3RlZCBhZ2VudCwgb25lIGZvciBlYWNoIEd1ZXN0IGRvbWFpbiB3
aGljaCBpcyAgYWxsb3dlZCBkaXJlY3QgSFcgYWNjZXNzLg0KPiAibm9uLXRydXN0ZWQgYWdlbnRz
Ii4gQWxzbywgZG91YmxlIHNwYWNlIGJldHdlZW4gImlzIiBhbmQgImFsbG93ZWQiDQo+DQo+PiAr
ICBBdCBsZWFzdCBvbmUgT1NQTSBWTSBhZ2VudCBoYXMgdG8gYmUgcHJvdmlkZWQgYnkgRlcgaWYg
SFcgaXMgaGFuZGxlZCBvbmx5IGJ5IERvbTAgb3IgRHJpdmVyIERvbWFpbi4NCj4gIkhhcmR3YXJl
IERvbWFpbiIsIHByb2JhYmx5DQo+DQo+PiArDQo+PiArVGhlIEVMMyBTQ01JIEZXIGlzIGV4cGVj
dGVkIHRvIGltcGxlbWVudCBmb2xsb3dpbmcgQmFzZSBwcm90b2NvbCBtZXNzYWdlczoNCj4+ICsN
Cj4+ICstIEJBU0VfRElTQ09WRVJfQUdFTlQgKHJlcXVpcmVkIGZvciBYZW47IHJlcXVpcmVkIGZv
ciBzZWNvbmRhcnkgYWdlbnRzIHdpdGhvdXQgYGByZWdgYCkNCj4+ICstIEJBU0VfUkVTRVRfQUdF
TlRfQ09ORklHVVJBVElPTiAob3B0aW9uYWwpDQo+IEhvdyBYZW4gY2FuIGd1YXJhbnRlZSB0aGF0
IFNDTUkgc3RhdGUgaXMgc2FuZSwgaWYgaXQgY2FuJ3QgcmVzZXQgYWdlbnQNCj4gZHVyaW5nIGRv
bWFpbiBkZXN0cnVjdGlvbj8NCg0KSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBpbXBsZW1lbnRlZCBi
eSB0aGUgU0NQIGZpcm13YXJlLCBidXQgdGhlIGZpcm13YXJlDQpwcm92aWRlcyBhZ2VudF9udW0g
PiAxLCB0aGVuIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgU0NQDQpmaXJtd2FyZS4g
V2UgbWFkZSB0aGlzIG9wdGlvbmFsIHRvIGNvdmVyIGV4YWN0bHkgdGhpcyBjYXNlIOKAlCB3aGVy
ZSB3ZQ0KZG9uJ3QgaGF2ZSBSRVNFVF9BR0VOVF9DT05GSUdVUkFUSU9OIGJ1dCBzdGlsbCBoYXZl
IGFnZW50X251bSA+IDEsIHdoaWNoDQpjb3VsZCBiZSBhcHBsaWNhYmxlIHRvIGEgZG9tMGxlc3Mg
Y29uZmlndXJhdGlvbiAoZm9yIGV4YW1wbGUpIGFuZCBzaG91bGQNCmJlIHVzZWQgY2FyZWZ1bGx5
IGJ5IGRldmVsb3BlcnMuDQoNCg0KPg0KPj4gKy0gQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05T
IChvcHRpb25hbCkNCj4gSWYgdGhpcyBpcyBvcHRpb25hbCwgZG9lcyBpdCBtZWFuIHRoYXQgZWFj
aCBhZ2VudCB3aWxsIGhhdmUgYWNjZXNzIHRvDQo+IGFsbCBkZXZpY2VzIGluIHRoZSBzeXN0ZW0/
DQoNClByb2JhYmx5LiBCdXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQncyB0aGUgb25seSBjYXNlLiBG
b3IgZXhhbXBsZSwgYQ0KcmVzb3VyY2UgY291bGQgYmUgYWNxdWlyZWQgb24gZmlyc3QgYWNjZXNz
IChub3QgYSByZWFsLXdvcmxkIGNhc2UsIGJ1dA0KaXQncyBwb3NzaWJsZSkuIFNvIHdlIGNhbid0
IG1ha2UgdGhpcyBkZWNpc2lvbiBvbiBiZWhhbGYgb2YgdGhlIFNDUA0KZmlybXdhcmUuDQoNCj4+
ICsNCj4+ICtUaGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBTQ01JIGFnZW50cyBhbmQgdGhlaXIgdHJh
bnNwb3J0IHNwZWNpZmljYXRpb25zIGFyZSBTQ01JIEZXIGltcGxlbWVudGF0aW9uDQo+PiArc3Bl
Y2lmaWMuDQo+PiArDQo+PiArQ29tcGlsaW5nIHdpdGggbXVsdGktYWdlbnQgc3VwcG9ydA0KPj4g
K15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCj4+ICsNCj4+ICtUbyBidWlsZCB3
aXRoIHRoZSBTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgc3VwcG9ydCwgZW5hYmxlIEtjb25m
aWcgb3B0aW9uOg0KPj4gKw0KPj4gKzo6DQo+PiArDQo+PiArICAgIENPTkZJR19TQ01JX1NNQ19N
QQ0KPj4gKw0KPj4gKw0KPj4gK0RyaXZlciBmdW5jdGlvbmFsaXR5DQo+PiArXl5eXl5eXl5eXl5e
Xl5eXl5eXl4NCj4+ICsNCj4+ICtUaGUgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBp
bXBsZW1lbnRzIGZvbGxvd2luZyBmdW5jdGlvbmFsaXR5Og0KPj4gKw0KPj4gKy0gVGhlIGRyaXZl
ciBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBYZW4gU0NNSSBjb250YWluZXIgYGB4ZW5fc2NtaV9j
b25maWdgYA0KPiBXaHkgImNvbnRhaW5lciI/IEl0IGlzIGNhbGxlZCAibm9kZSIgaW4gRGV2aWNl
IFRyZWUgbGluZ28uDQo+DQo+PiArICB1bmRlciBgYC9jaG9zZW4veGVuYGAgKGZvciBleGFtcGxl
IGBgL2Nob3Nlbi94ZW4veGVuX3NjbWlfY29uZmlnL3NjbWlgYCkuDQo+PiArICBPbmx5IG9uZSBT
Q01JIGludGVyZmFjZSBpcyBzdXBwb3J0ZWQuIFRoZSBTQ01JIGNvbmZpZ3VyYXRpb24gbXVzdCBs
aXZlIHVuZGVyDQo+PiArICB0aGUgWGVuIFNDTUkgY29udGFpbmVyIGBgeGVuLHNjaWBgIGJlbmVh
dGggYGAvY2hvc2VuYGAuDQo+PiArICBUaGUgWGVuIFNDTUkgbWVkaWF0b3Igd2lsbCBiaW5kIG9u
bHkgdG8gdGhlICJhcm0sc2NtaS1zbWMiIG5vZGUgdGhhdCBpcyBhIGNoaWxkIG9mDQo+PiArICB0
aGlzICJ4ZW4sc2NpIiBjb250YWluZXI7IGFueSBvdGhlciAiYXJtLHNjbWktc21jIiBub2RlcyAo
Zm9yIGV4YW1wbGUgdW5kZXINCj4+ICsgICIvZmlybXdhcmUiKSBhcmUgaWdub3JlZCB0byBhdm9p
ZCBzdGVhbGluZyB0aGUgaG9zdCdzIFNDTUkgT1NQTSBpbnN0YW5jZS4NCj4+ICsNCj4+ICsuLiBj
b2RlLWJsb2NrOjogZHRzDQo+PiArDQo+PiArICAgICAgICBzY21pX3NobV8xOiBzcmFtQDQ3ZmYx
MDAwIHsNCj4+ICsgICAgICAgICAgICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCj4+
ICsgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjEwMDAgMHgwIDB4MTAwMD47DQo+PiArICAg
ICAgICB9Ow0KPj4gKyAgICAgICAgc2NtaV94ZW46IHNjbWkgew0KPj4gKyAgICAgICAgICBjb21w
YXRpYmxlID0gImFybSxzY21pLXNtYyI7DQo+PiArICAgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4
MjAwMDAwMz47IC8qIFhlbiBtYW5hZ2VtZW50IGFnZW50ICovDQo+PiArICAgICAgICAgICNhZGRy
ZXNzLWNlbGxzID0gPCAxPjsNCj4+ICsgICAgICAgICAgI3NpemUtY2VsbHMgPSA8IDA+Ow0KPj4g
KyAgICAgICAgICAjYWNjZXNzLWNvbnRyb2xsZXItY2VsbHMgPSA8IDE+Ow0KPj4gKyAgICAgICAg
ICBzaG1lbSA9IDwmc2NtaV9zaG1fMT47IC8qIFhlbiBtYW5hZ2VtZW50IHNoYXJlZCBtZW1vcnkg
Ki8NCj4+ICsgICAgICAgIH07DQo+PiArDQo+PiArLi4gbm90ZTo6DQo+PiArICAgVGhpcyBsYXlv
dXQga2VlcHMgdGhlIEhvc3QgRFQgdW5jaGFuZ2VkIGZvciBEb20wIGFuZCBiYXJlbWV0YWwgTGlu
dXggYnkNCj4+ICsgICB1c2luZyBmdW5jX2lkIDB4ODIwMDAwMDIgLyBzaG1lbSAweDQ3ZmYwMDAw
IGZvciBEb20wLCB3aGlsZSBYZW4gdXNlcyBhDQo+PiArICAgc2VwYXJhdGUgcHJpdmlsZWdlZCBj
aGFubmVsIGZ1bmNfaWQgMHg4MjAwMDAwMyAvIHNobWVtIDB4NDdmZjEwMDAuIEVMMw0KPj4gKyAg
IGZpcm13YXJlIGVuZm9yY2VzIHBlcm1pc3Npb25zIHBlciBhZ2VudF9pZCwgc28gdGhlcmUgaXMg
bm8gY29uZmxpY3QgYmV0d2Vlbg0KPj4gKyAgIERvbTAgYW5kIFhlbiBjaGFubmVscy4NCj4+ICsN
Cj4+ICstIFRoZSBkcml2ZXIgcmVhZHMgc2Vjb25kYXJ5IGFnZW50cyBmcm9tIGFuIGBgYWdlbnRz
YGAgY2hpbGQgb2YgdGhlDQo+ICJjaGlsZCBub2RlIg0KPg0KPj4gKyAgYGB4ZW4sc2NpYGAgY29u
dGFpbmVyLiBUaGlzIGNoaWxkIGhhcyBgYCNhZGRyZXNzLWNlbGxzID0gPDE+YGAgYW5kDQo+PiAr
ICBgYCNzaXplLWNlbGxzID0gPDA+YGAuIEVhY2ggZW5hYmxlZCBgYHhlbixzY21pLWFnZW50YGAg
Y2hpbGQgc3BlY2lmaWVzIGl0cw0KPj4gKyAgZG9vcmJlbGwgaW4gYGBhcm0sc21jLWlkYGAgYW5k
IGEgc2luZ2xlIHNoYXJlZC1tZW1vcnkgcGhhbmRsZSBpbiBgYHNobWVtYGAuDQo+PiArICBUaGUg
b3B0aW9uYWwgc2luZ2xlLWNlbGwgYGByZWdgYCBwcm9wZXJ0eSBzdXBwbGllcyB0aGUgU0NNSSBh
Z2VudCBJRA0KPj4gKyAgKDAuLjI1NCkuIElEcyBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3Qg
ZnJvbSBYZW4ncyBtYW5hZ2VtZW50IGFnZW50Lg0KPj4gKyAgQXQgbGVhc3Qgb25lIGVuYWJsZWQg
c2Vjb25kYXJ5IGFnZW50IGlzIHJlcXVpcmVkLg0KPj4gKw0KPj4gKyAgVGhlIHNoYXJlZC1tZW1v
cnkgbm9kZXMgcmVtYWluIHVuZGVyIGBgeGVuX3NjbWlfY29uZmlnYGA7IHRoZSBob3N0IE9TUE0N
Cj4gSSBkb24ndCB0aGluayB0aGF0ICJyZW1haW4iIGlzIGEgY29ycmVjdCB3b3JkIGhlcmUuIE1h
eWJlICJzdGF5PyIuIE9yDQo+IHJld29yZCBpdCBhbHRvZ2V0aGVyOiAiVGhlIFNDTUktc3BlY2lm
aWMgYGBzaGFyZWQtbWVtb3J5YGAgbm9kZXMgc2hvdWxkDQo+IGJlIHBsYWNlZCBpbiBgYHhlbl9z
Y21pX2NvbmZpZ2BgIG5vZGUiDQorDQo+PiArICBzaGFyZWQtbWVtb3J5IG5vZGUgYW5kIGBgL2Zp
cm13YXJlL3NjbWlgYCByZW1haW4gaW4gdGhlIHBsYXRmb3JtIERULg0KPj4gKyAgQSBzaGFyZWQt
bWVtb3J5IG5vZGUgZGVzY3JpYmVzIGEgY2hhbm5lbCBsb2NhdGlvbiBhbmQgZG9lcyBub3QgcmVz
ZXJ2ZSBSQU0uDQo+PiArICBJZiBidWZmZXJzIG9jY3VweSBzeXN0ZW0gUkFNLCB0aGUgcGxhdGZv
cm0gbXVzdCByZXNlcnZlIHRoZSBlbnRpcmUNCj4+ICsgIGZpcm13YXJlLW93bmVkIHJhbmdlIGlu
IGBgL3Jlc2VydmVkLW1lbW9yeWBgIGJlZm9yZSBYZW4gYm9vdHMuIEEgc2luZ2xlDQo+PiArICBy
ZXNlcnZhdGlvbiBtYXkgY292ZXIgbXVsdGlwbGUgY2hhbm5lbHMsIGluY2x1ZGluZyB1bnVzZWQg
b25lcy4gU1JBTQ0KPj4gKyAgb3V0c2lkZSBzeXN0ZW0gUkFNIGRvZXMgbm90IHJlcXVpcmUgYSBS
QU0gcmVzZXJ2YXRpb24uIFRoZSBjaGFubmVsIG5vZGVzDQo+PiArICBkbyBub3QgaGF2ZSB0byBi
ZSBtb3ZlZCBpbnRvIGBgL3Jlc2VydmVkLW1lbW9yeWBgLg0KPj4gKw0KPj4gKy4uIGNvZGUtYmxv
Y2s6OiBkdHMNCj4+ICsNCj4+ICsgICAgLyB7DQo+PiArICAgICAgICAjYWRkcmVzcy1jZWxscyA9
IDwyPjsNCj4+ICsgICAgICAgICNzaXplLWNlbGxzID0gPDI+Ow0KPj4gKw0KPj4gKyAgICAgICAg
c2NtaV9zaG1fMDogc3JhbUA0N2ZmMDAwMCB7DQo+PiArICAgICAgICAgICAgY29tcGF0aWJsZSA9
ICJhcm0sc2NtaS1zaG1lbSI7DQo+PiArICAgICAgICAgICAgcmVnID0gPDB4MCAweDQ3ZmYwMDAw
IDB4MCAweDEwMDA+Ow0KPj4gKyAgICAgICAgfTsNCj4+ICsNCj4+ICsgICAgICAgIGZpcm13YXJl
IHsNCj4+ICsgICAgICAgICAgICBzY21pOiBzY21pIHsNCj4+ICsgICAgICAgICAgICAgICAgY29t
cGF0aWJsZSA9ICJhcm0sc2NtaS1zbWMiOw0KPj4gKyAgICAgICAgICAgICAgICBhcm0sc21jLWlk
ID0gPDB4ODIwMDAwMDI+OyAvKiBIb3N0IE9TUE0gYWdlbnQgc21jLWlkICovDQo+PiArICAgICAg
ICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Ow0KPj4gKyAgICAgICAgICAgICAgICAjc2l6
ZS1jZWxscyA9IDwwPjsNCj4+ICsgICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzA+
OyAvKiBIb3N0IE9TUE0gYWdlbnQgc2htZW0gKi8NCj4+ICsgICAgICAgICAgICB9Ow0KPj4gKyAg
ICAgICAgfTsNCj4+ICsNCj4+ICsgICAgICAgIGNob3NlbiB7DQo+PiArICAgICAgICAgICAgI2Fk
ZHJlc3MtY2VsbHMgPSA8Mj47DQo+PiArICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8Mj47DQo+
PiArICAgICAgICAgICAgcmFuZ2VzOw0KPj4gKw0KPj4gKyAgICAgICAgICAgIHhlbiB7DQo+PiAr
ICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDI+Ow0KPj4gKyAgICAgICAgICAgICAg
ICAjc2l6ZS1jZWxscyA9IDwyPjsNCj4+ICsgICAgICAgICAgICAgICAgcmFuZ2VzOw0KPj4gKw0K
Pj4gKyAgICAgICAgICAgICAgICB4ZW5fc2NtaV9jb25maWcgew0KPj4gKyAgICAgICAgICAgICAg
ICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2NpIjsNCj4+ICsgICAgICAgICAgICAgICAgICAgICNh
ZGRyZXNzLWNlbGxzID0gPDI+Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMg
PSA8Mj47DQo+PiArICAgICAgICAgICAgICAgICAgICByYW5nZXM7DQo+PiArICAgICAgICAgICAg
ICAgICAgICB4ZW4sZG9tMC1zY2ktYWdlbnQtaWQgPSA8MD47DQo+PiArDQo+PiArICAgICAgICAg
ICAgICAgICAgICAvKiBYZW4gbWFuYWdlbWVudCBjaGFubmVsICovDQo+PiArICAgICAgICAgICAg
ICAgICAgICBzY21pX3NobV8xOiBzcmFtQDQ3ZmYxMDAwIHsNCj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCj4+ICsgICAgICAgICAgICAg
ICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjEwMDAgMHgwIDB4MTAwMD47DQo+PiArICAgICAg
ICAgICAgICAgICAgICB9Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgc2NtaV9zaG1f
Mjogc3JhbUA0N2ZmMjAwMCB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJs
ZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0g
PDB4MCAweDQ3ZmYyMDAwIDB4MCAweDEwMDA+Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgfTsN
Cj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgIHNjbWlfc2htXzM6IHNyYW1ANDdmZjMwMDAg
ew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2ht
ZW0iOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0N2ZmMzAwMCAw
eDAgMHgxMDAwPjsNCj4+ICsgICAgICAgICAgICAgICAgICAgIH07DQo+PiArDQo+PiArICAgICAg
ICAgICAgICAgICAgICBzY21pX3hlbjogc2NtaSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zbWMiOw0KPj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwMz47IC8qIFhlbiBtYW5hZ2VtZW50IHNtYy1pZCAq
Lw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Ow0KPj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDA+Ow0KPj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICNhY2Nlc3MtY29udHJvbGxlci1jZWxscyA9IDwxPjsNCj4+ICsgICAg
ICAgICAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMT47IC8qIFhlbiBtYW5hZ2Vt
ZW50IGFnZW50IHNobWVtICovDQo+PiArICAgICAgICAgICAgICAgICAgICB9Ow0KPj4gKw0KPj4g
KyAgICAgICAgICAgICAgICAgICAgYWdlbnRzIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAjYWRkcmVzcy1jZWxscyA9IDwxPjsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAjc2l6
ZS1jZWxscyA9IDwwPjsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudEAw
IHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2Nt
aS1hZ2VudCI7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwwPjsNCj4+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtLHNtYy1pZCA9IDwweDgyMDAwMDAyPjsN
Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzA+Ow0K
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH07DQo+PiArDQo+PiArICAgICAgICAgICAgICAg
ICAgICAgICAgYWdlbnRAMiB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBh
dGlibGUgPSAieGVuLHNjbWktYWdlbnQiOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWcgPSA8Mj47DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQg
PSA8MHg4MjAwMDAwND47DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNobWVtID0g
PCZzY21pX3NobV8yPjsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KPj4gKw0KPj4g
KyAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50QDMgew0KPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wYXRpYmxlID0gInhlbixzY21pLWFnZW50IjsNCj4+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVnID0gPDM+Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcm0sc21jLWlkID0gPDB4ODIwMDAwMDU+Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMz47DQo+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgfTsNCj4+ICsgICAgICAgICAgICAgICAgICAgIH07DQo+PiArICAgICAgICAgICAgICAgIH07
DQo+PiArICAgICAgICAgICAgfTsNCj4+ICsgICAgICAgIH07DQo+PiArICAgIH07DQo+PiArDQo+
PiArVGhlIGBgeGVuLHNjaWBgIHN1YnRyZWUgaXMgb21pdHRlZCBmcm9tIERvbTAncyBEVC4gVGhl
IGhvc3QgT1NQTSBjaGFubmVsIGlzDQo+PiArY29waWVkIHRvIERvbTAgd2hlbiBTQ01JIGlzIGVu
YWJsZWQgZm9yIGl0LiBYZW4gdXNlcyBpdHMgc2VwYXJhdGUgcHJpdmlsZWdlZA0KPj4gK21hbmFn
ZW1lbnQgY2hhbm5lbCB0byBjb25maWd1cmUgdGhlIG90aGVyIGFnZW50cy4NCj4+ICsNCj4+ICtU
byBkaXNjb3ZlciBhIHNlY29uZGFyeSBhZ2VudCBJRCB0aHJvdWdoIGBgQkFTRV9ESVNDT1ZFUl9B
R0VOVGBgLCBvbWl0DQo+PiArYGByZWdgYCBhbmQgdXNlIGEgbm9kZSBuYW1lIHdpdGhvdXQgYSB1
bml0IGFkZHJlc3MuIEZvciBleGFtcGxlLCByZXBsYWNlDQo+PiArb25seSBgYGFnZW50QDJgYCBh
Ym92ZSB3aXRoOg0KPj4gKw0KPj4gKy4uIGNvZGUtYmxvY2s6OiBkdHMNCj4+ICsNCj4+ICsgICAg
YWdlbnQtZG9tdSB7DQo+PiArICAgICAgICBjb21wYXRpYmxlID0gInhlbixzY21pLWFnZW50IjsN
Cj4+ICsgICAgICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwND47DQo+PiArICAgICAgICBzaG1l
bSA9IDwmc2NtaV9zaG1fMj47DQo+PiArICAgIH07DQo+PiArDQo+PiArUHJvdmlkaW5nIGBgcmVn
YGAgc2tpcHMgbWFwcGluZyBhbmQgcHJvYmluZyB0aGF0IHNlY29uZGFyeSBjaGFubmVsIGR1cmlu
Zw0KPj4gK2luaXRpYWxpemF0aW9uLiBBIG1hbGZvcm1lZCBgYHJlZ2BgIGlzIHJlamVjdGVkLiBY
ZW4gYWx3YXlzIGRpc2NvdmVycyBpdHMNCj4+ICtvd24gbWFuYWdlbWVudCBhZ2VudCBJRC4gVGh1
cyBgYEJBU0VfRElTQ09WRVJfQUdFTlRgYCBpcyBtYW5kYXRvcnkgZm9yIHRoZQ0KPj4gK21hbmFn
ZW1lbnQgY2hhbm5lbCBhbmQgZm9yIHNlY29uZGFyeSBjaGFubmVscyB3aG9zZSBgYHJlZ2BgIGlz
IG9taXR0ZWQuDQo+PiArVGhlIGZvcm1lciBmbGF0IHNlY29uZGFyeS1hZ2VudCBwcm9wZXJ0aWVz
IGFyZSByZXBsYWNlZCBieSB0aGVzZSBub2Rlcy4NCj4+ICsNCj4+ICsuLiBub3RlOjoNCj4+ICsN
Cj4+ICsgICAgTm90ZSB0aGF0IFhlbiBpcyB0aGUgb25seSBvbmUgZW50cnkgaW4gdGhlIHN5c3Rl
bSB3aGljaCBuZWVkIHRvIGtub3cgYWJvdXQgU0NNSSBtdWx0aS1hZ2VudCBzdXBwb3J0Lg0KPj4g
Kw0KPj4gKy0gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBTQ0kgc3Vic3lzdGVtIGludGVyZmFj
ZSByZXF1aXJlZCBmb3IgY29uZmlndXJpbmcgYW5kIGVuYWJsaW5nIFNDTUkNCj4+ICsgIGZ1bmN0
aW9uYWxpdHkgZm9yIERvbTAvaHdkb20gYW5kIEd1ZXN0IGRvbWFpbnMuIFRvIGVuYWJsZSBTQ01J
IGZ1bmN0aW9uYWxpdHkgZm9yIGd1ZXN0IGRvbWFpbg0KPiAiZm9yIGEgZ3Vlc3QgZG9tYWluIg0K
Pg0KPj4gKyAgaXQgaGFzIHRvIGJlIGNvbmZpZ3VyZWQgd2l0aCB1bmlxdWUgc3VwcG9ydGVkIFND
TUkgQWdlbnRfaWQgYW5kIHVzZSBjb3JyZXNwb25kaW5nIFNDTUkgU01DDQo+IHNvbWV0aW1lcyB5
b3Ugd3JpdGUgImFnZW50X2lkIiBhbmQgc29tZXRpbWVzICJBZ2VudF9pZCIuLi4NCj4NCj4+ICsg
IHNoYXJlZC1tZW1vcnkgdHJhbnNwb3J0IGBgW3NtYy1pZCwgc2htZW1dYGAgZGVmaW5lZCBmb3Ig
dGhpcyBTQ01JIEFnZW50X2lkLg0KPj4gKw0KPj4gKy0gT25jZSBYZW4gZG9tYWluIGlzIGNvbmZp
Z3VyZWQgaXQgY2FuIGNvbW11bmljYXRlIHdpdGggRUwzIFNDTUkgRlc6DQo+PiArDQo+PiArICAt
IHplcm8tY29weSwgdGhlIGd1ZXN0IGRvbWFpbiBwdXRzL2dldHMgU0NNSSBtZXNzYWdlIGluL2Zy
b20gc2htZW07DQo+ICJ0by9mcm9tIHNobWVtIi4gQWxzbywgInplcm8tY29weTogIiwgbWF5YmU/
DQo+DQo+PiArICAtIHRoZSBndWVzdCB0cmlnZ2VycyBTTUMgZXhjZXB0aW9uIHdpdGggYWdlbnQg
InNtYy1pZCIgKGRvb3JiZWxsKTsNCj4+ICsgIC0gdGhlIFhlbiBkcml2ZXIgY2F0Y2hlcyBleGNl
cHRpb24sIGRvIGNoZWNrcyBhbmQgc3luY2hyb25vdXNseSBmb3J3YXJkcyBpdCB0byBFTDMgRlcu
DQo+IG5vdCAiZG8gY2hlY2tzIi4gIlBlcmZvcm0gY2hlY2tzIiwgbWF5YmU/DQo+DQo+DQo+PiAr
DQo+PiArLSB0aGUgWGVuIGRyaXZlciBzZW5kcyBCQVNFX1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJ
T04gbWVzc2FnZSB0byBYZW4gbWFuYWdlbWVudCBhZ2VudCBjaGFubmVsIG9uDQo+PiArICBkb21h
aW4gZGVzdHJveSBldmVudC4gVGhpcyBhbGxvd3MgdG8gcmVzZXQgcmVzb3VyY2VzIHVzZWQgYnkg
ZG9tYWluIGFuZCBzbyBpbXBsZW1lbnQgdXNlLWNhc2UNCj4gcy9zby8vDQo+DQo+PiArICBsaWtl
IGRvbWFpbiByZWJvb3QuDQo+PiArDQo+PiArDQo+PiArQ29uZmlndXJlIFNDTUkgZm9yIERvbTAN
Cj4gIkhvdyB0byBjb25maWd1cmUuLi4iIG9yICJDb25maWd1cmluZy4uLiINCj4NCj4+ICteXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXg0KPj4gK1NldCB0aGUgRG9tMCBTQ01JIGFnZW50IElEIGluIHRo
ZSBkZXZpY2UgdHJlZSB1c2luZyB0aGUgWGVuIFNDTUkgY29udGFpbmVyIHVuZGVyIGBgL2Nob3Nl
bmBgLg0KPj4gK0FkZCBgYHhlbixkb20wLXNjaS1hZ2VudC1pZGBgIHRvIHRoZSBgYHhlbixzY2lg
YCBub2RlLiBJZiB0aGUgcHJvcGVydHkgaXMgYWJzZW50LCBTQ01JIHN0YXlzDQo+PiArZGlzYWJs
ZWQgZm9yIERvbTAgYW5kIHRoZSBTQ01JIG5vZGVzIGFyZSByZW1vdmVkIGZyb20gRG9tMCBEVC4N
Cj4+ICsNCj4+ICsuLiBjb2RlLWJsb2NrOjogZHRzDQo+PiArDQo+PiArICBjaG9zZW4gew0KPj4g
KyAgICB4ZW4gew0KPj4gKyAgICAgIHJhbmdlczsNCj4+ICsgICAgICB4ZW5fc2NtaV9jb25maWcg
ew0KPj4gKyAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2NpIjsNCj4+ICsgICAgICAgIHhlbixk
b20wLXNjaS1hZ2VudC1pZCA9IDwwPjsgIC8qIERvbTAgYWdlbnQgSUQgKi8NCj4+ICsgICAgICAg
IC8qIGFnZW50cywgc2hhcmVkIG1lbW9yeSBhbmQgc2NtaV94ZW4gYXMgc2hvd24gYWJvdmUgKi8N
Cj4+ICsgICAgICB9Ow0KPj4gKyAgICB9Ow0KPj4gKyAgfTsNCj4+ICsNCj4+ICtUaGUgSG9zdCBE
VCBgYC9maXJtd2FyZS9zY21pYGAgbm9kZSBpcyBjb3BpZWQgdG8gdGhlIERvbTAgRFQgdW5tb2Rp
ZmllZC4gSG93ZXZlciwgZm9yIERvbTAgU0NNSQ0KPj4gK2NvbmZpZ3VyYXRpb24sIFhlbiByZWxp
ZXMgb24gdGhlIGBgYWdlbnRzYGAgY2hpbGQgYW5kIHRoZSBgYHhlbixkb20wLXNjaS1hZ2VudC1p
ZGBgDQo+ICJjaGlsZCBub2RlIg0KPg0KPj4gK3Byb3BlcnR5IGZyb20gdGhlIGBgeGVuLHNjaWBg
IGNvbnRhaW5lciB1bmRlciBgYC9jaG9zZW5gYC4gSWYgdGhlIGBgL2Zpcm13YXJlL3NjbWlgYCBu
b2RlIGlzDQo+PiArbWlzc2luZyBvciBkaXNhYmxlZCwgb3IgaWYgYGB4ZW4sZG9tMC1zY2ktYWdl
bnQtaWRgYCBpcyBub3QgcHJvdmlkZWQsIHRoZSBEb20wIFNDTUkgYWdlbnQgd2lsbCBub3QNCj4+
ICtiZSBjb25maWd1cmVkLg0KPj4gKw0KPj4gKy4uIG5vdGU6Og0KPj4gKw0KPj4gKyAgVGhlIGBg
eGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgdmFsdWUgbXVzdCBtYXRjaCB0aGUgYGBmdW5jX2lkYGAg
YW5kIGBgc2htZW1gYCBwYWlyaW5nIHByb3ZpZGVkIGJ5DQo+PiArICB0aGUgRUwzIGZpcm13YXJl
IGZvciBEb20wIChmb3IgZXhhbXBsZSBpbiB0aGUgYGAvZmlybXdhcmUvc2NtaWBgIG5vZGUpLg0K
PiBXZWxsLCBtYXliZSBiZXR0ZXIgdG8gdXNlIHBoYW5kbGUgdGhlbj8gTGlrZQ0KPg0KPiB4ZW4s
ZG9tMC1zY2ktYWdlbnQtaWQ9PCZhZ2VudEAwPg0KDQpJdCBpcyB1c2VkIHRvIHNldCBhcm1fc2Np
X2FnZW50X2lkIGluIHRoZSBjb25maWcgYW5kIHdvcmtzIHRoZSBzYW1lIHdheQ0KYXMgbGlieGws
IHNvIHdlIG1haW50YWluIGNvbnNpc3RlbnQgYXBwcm9hY2hlcyBmb3Igc2V0dGluZyBkb21faWQg
aW4NCmJvdGggbGlieGwgYW5kIHRoZSBkZXZpY2UtdHJlZS4NCg0KQWRkaXRpb25hbGx5LCB0aGUg
YWdlbnRfaWQgaXMgdXNlZCB3aGVuIGFjcXVpcmluZyB0aGUgc2NtaV9jaGFubmVsLg0KDQpJIGRv
bid0IHNlZSBhbnkgcGFydGljdWxhciBiZW5lZml0cyB0byB1c2luZyBhIHBoYW5kbGUgaGVyZSwg
YnV0IHBlcmhhcHMNCkkndmUgbWlzc2VkIHNvbWV0aGluZy4gQ291bGQgeW91IGNsYXJpZnk/DQoN
Cj4+ICsNCj4+ICtDb25maWd1cmUgU0NNSSBmb3IgZm9yIGd1ZXN0IGRvbWFpbiB3aXRoIHRvb2xz
dGFjaw0KPiAiSG93IHRvIGNvbmZpZ3VyZS4uLiIgb3IgIkNvbmZpZ3VyaW5nLi4uIg0KPg0KPj4g
K15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+PiAr
DQo+PiArKiBJbiBkb21haW4ncyB4bC5jZmcgZmlsZSBhZGQgKioiYXJtX3NjaSIqKiBvcHRpb24g
YXMgYmVsb3cNCj4+ICsNCj4+ICs6Og0KPj4gKw0KPj4gKyAgICBhcm1fc2NpID0gInR5cGU9c2Nt
aV9zbWNfbXVsdGlhZ2VudCxhZ2VudF9pZD0yIg0KPj4gKw0KPj4gKyogSW4gZG9tYWluJ3MgeGwu
Y2ZnIGZpbGUgZW5hYmxlIGFjY2VzcyB0byB0aGUgImFybSxzY21pLXNobWVtIiB3aGljaCBzaG91
bGQgY29ycmVzcG9uZA0KPj4gKyAgYXNzaWduZWQgImFnZW50X2lkIiBmb3IgdGhlIGRvbWFpbiwg
Zm9yIGV4YW1wbGU6DQo+PiArDQo+PiArOjoNCj4+ICsNCj4+ICsgICAgaW9tZW0gPSBbDQo+PiAr
ICAgICAgICAiNDdmZjIsMUAyMjAwMSIsDQo+PiArICAgIF0NCj4+ICsNCj4+ICsuLiBub3RlOjog
SXQncyB1cCB0byB0aGUgdXNlciB0byBzZWxlY3QgZ3Vlc3QgSVBBIGZvciBtYXBwaW5nIFNDTUkg
c2hhcmVkLW1lbW9yeS4NCj4+ICsNCj4+ICsqIEFkZCBTQ01JIG5vZGVzIHRvIHRoZSBEcml2ZXIg
ZG9tYWluIHBhcnRpYWwgZGV2aWNlIHRyZWUgYXMgaW4gdGhlIGJlbG93IGV4YW1wbGUuDQo+PiAr
ICBUaGUgImFybSxzbWMtaWQiIHNob3VsZCBjb3JyZXNwb25kIGFzc2lnbmVkIGFnZW50X2lkIGZv
ciB0aGUgZG9tYWluOg0KPj4gKw0KPj4gKy4uIGNvZGU6Og0KPj4gKw0KPj4gKyAgICBwYXNzdGhy
b3VnaCB7DQo+PiArICAgICAgIHNjbWlfc2htXzA6IHNyYW1AMjIwMDEwMDAgew0KPj4gKyAgICAg
ICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQo+PiArICAgICAgICAgICByZWcg
PSA8MHgwIDB4MjIwMDEwMDAgMHgwIDB4MTAwMD47DQo+PiArICAgICAgIH07DQo+PiArDQo+PiAr
ICAgICAgIGZpcm13YXJlIHsNCj4+ICsgICAgICAgICAgICBjb21wYXRpYmxlID0gInNpbXBsZS1i
dXMiOw0KPj4gKyAgICAgICAgICAgICAgICBzY21pOiBzY21pIHsNCj4+ICsgICAgICAgICAgICAg
ICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc21jIjsNCj4+ICsgICAgICAgICAgICAgICAg
ICAgIGFybSxzbWMtaWQgPSA8MHg4MjAwMDAwND47ICA8LS0tIHNtYy1pZCBmb3IgYWdlbnRfaWQ9
Mg0KPj4gKyAgICAgICAgICAgICAgICAgICAgc2htZW0gPSA8JnNjbWlfc2htXzA+Ow0KPj4gKyAg
ICAgICAgICAgICAgICAgICAgLi4uDQo+PiArICAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAg
IH0NCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyoqRGV2aWNlIHNwZWNpZmljIGFjY2VzcyBjb250cm9s
KioNCj4+ICsNCj4+ICtUaGUgWEVOIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBwZXJmb3Jt
cyAiYWNjZXNzLWNvbnRyb2xsZXIiIHByb3ZpZGVyIGZ1bmN0aW9uIGluIGNhc2UNCj4+ICtFTDMg
U0NNSSBGVyBpbXBsZW1lbnRzIFNDTUkgIjQuMi4xLjEgRGV2aWNlIHNwZWNpZmljIGFjY2VzcyBj
b250cm9sIiBhbmQgcHJvdmlkZXMgdGhlDQo+PiArQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05T
IGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBkZXZpY2VzIHRoYXQgYW4gYWdlbnRzIGhhdmUgYWNj
ZXNzIHRvLg0KPj4gK1RoZSBIb3N0IERUIFNDTUkgbm9kZSBzaG91bGQgaGF2ZSAiI2FjY2Vzcy1j
b250cm9sbGVyLWNlbGxzPTwxPiIgcHJvcGVydHkgYW5kIERUIGRldmljZXMgc2hvdWxkDQo+PiAr
YmUgYm91bmQgdG8gdGhlIFNDTUkgbm9kZSB1c2luZyBBY2Nlc3MgQ29udHJvbGxlcnMgYmluZGlu
Z3MgWzNdLg0KPj4gKw0KPj4gK0ZvciBleGFtcGxlOg0KPj4gKw0KPj4gKy4uIGNvZGUtYmxvY2s6
OiBkdHMNCj4+ICsNCj4+ICsgICAgJmkyYzEgew0KPj4gKyAgICAgICAgICAgIGFjY2Vzcy1jb250
cm9sbGVycyA9IDwmc2NtaSAwPjsNCj4+ICsgICAgfTsNCj4+ICsNCj4+ICtVc2UgZG9tYWluJ3Mg
eGwuY2ZnIGZpbGUgKioiZHRkZXYiKiogcHJvcGVydHkgdG8gYXNzaWduIFNDTUkgZGV2aWNlcyBm
cm9tIHRvb2xzdGFjayB0byB0aGUgZ3Vlc3Q6DQo+PiArDQo+PiArOjoNCj4+ICsNCj4+ICsgICAg
ZHRkZXYgPSBbDQo+PiArICAgICAgICAiL3NvYy9pMmNAZTY1MDgwMDAiLA0KPj4gKyAgICBdDQo+
PiArDQo+PiArLi4gbm90ZTo6DQo+PiArDQo+PiArICAgIHhsLmNmZzoiZHRkZXYiIG5lZWQgY29u
dGFpbiBhbGwgbm9kZXMgd2hpY2ggYXJlIHVuZGVyIFNDTUkgbWFuYWdlbWVudCAobm90IG9ubHkg
dGhvc2Ugd2hpY2ggYXJlDQo+ICJuZWVkIHRvIGNvbnRhaW4iDQo+DQo+PiArICAgIGJlaGluZCBJ
T01NVSkgYW5kIHBhc3NlZC10aHJvdWdoIHRvIHRoZSBndWVzdCBkb21haW4uDQo+PiArDQo+PiAr
Q29uZmlndXJlIFNDTUkgZm9yIHByZWRlZmluZWQgZG9tYWlucyAoZG9tMGxlc3MpDQo+ICh0aGUg
c2FtZSBhcyBmb3IgcHJldmlvdXMgc2VjdGlvbiBoZWFkZXIpDQo+DQo+PiArXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+PiArDQo+PiArKiBhZGQgInhl
bixzY2lfdHlwZSIgYW5kICJ4ZW4sc2NpLWFnZW50LWlkIiBwcm9wZXJ0aWVzIGZvciByZXF1aXJl
ZCBEb21VICgieGVuLGRvbWFpbiIpIG5vZGUNCj4+ICsNCj4+ICs6Og0KPj4gKw0KPj4gKyAgICB4
ZW4sc2NpX3R5cGU9InNjbWlfc21jX211bHRpYWdlbnQiDQo+PiArICAgIHhlbixzY2ktYWdlbnQt
aWQ9Mg0KPj4gKw0KPj4gKyogYWRkIHNjbWkgbm9kZXMgdG8gdGhlIERyaXZlciBkb21haW4gcGFy
dGlhbCBkZXZpY2UgdHJlZSB0aGUgc2FtZSB3YXkgYXMgYWJvdmUgKHRvb2xzdGFjayBjYXNlKSBh
bmQNCj4+ICsgIGVuYWJsZSBhY2Nlc3MgdG8gdGhlICJhcm0sc2NtaS1zaG1lbSIgYWNjb3JkaW5n
IHRvIHRoZSBkb20wbGVzcyBkb2N1bWVudGF0aW9uLiBGb3IgZXhhbXBsZToNCj4+ICsNCj4+ICsu
LiBjb2RlLWJsb2NrOjogZHRzDQo+PiArDQo+PiArICAgICAgc2NtaV9zaG1fMDogc3JhbUAyMjAw
MTAwMCB7DQo+PiArICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQo+
PiArICAgICAgICAgICAgcmVnID0gPDB4MDAgMHgyMjAwMTAwMCAweDAwIDB4MTAwMD47DQo+PiAr
ICAgIC0+ICAgICAgICB4ZW4scmVnID0gPDB4MCAweDQ3ZmYyMDAwIDB4MCAweDEwMDAgMHgwIDB4
MjIwMDEwMDA+Ow0KPj4gKyAgICAtPiAgICAgICAgeGVuLGZvcmNlLWFzc2lnbi13aXRob3V0LWlv
bW11Ow0KPj4gKyAgICAgIH07DQo+PiArDQo+PiArKiBGb3IgU0NNSSBkZXZpY2UgYWNjZXNzIGNv
bnRyb2wgY29uZmlndXJlIHBhc3MtdGhyb3VnaCBkZXZpY2VzIGluIHRoZSBndWVzdCBwYXJ0aWFs
IERUIGFjY29yZGluZyB0bw0KPj4gKyAgdGhlIGRvbTBsZXNzIGRvY3VtZW50YXRpb24gYW5kIGVu
c3VyZSB0aGF0IGRldmljZXMgU0NNSSBtYW5hZ2VtZW50IGhhcyAieGVuLHBhdGgiIHByb3BlcnR5
IHNldDoNCj4+ICsNCj4+ICtVc2UgdGhlIGNvbXBsZXRlIFhlbiBTQ01JIGNvbmZpZ3VyYXRpb24g
YWJvdmUuIFJlbW92ZQ0KPj4gK2BgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgaWYgRG9tMCBkb2Vz
IG5vdCB1c2UgU0NNSS4gVGhlIGd1ZXN0IHNlbGVjdHMgdGhlDQo+PiArc2Vjb25kYXJ5IGNoYW5u
ZWwgZGVzY3JpYmVkIGJ5IGBgYWdlbnRAMmBgOg0KPj4gKw0KPj4gKy4uIGNvZGUtYmxvY2s6OiBk
dHMNCj4+ICsNCj4+ICsgICAgY2hvc2VuIHsNCj4+ICsgICAgICAgIHhlbixkb21haW5AMSB7DQo+
PiArICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sZG9tYWluIjsNCj4+ICsgICAgICAgICAg
ICB4ZW4sc2NpX3R5cGUgPSAic2NtaV9zbWNfbXVsdGlhZ2VudCI7DQo+PiArICAgICAgICAgICAg
eGVuLHNjaS1hZ2VudC1pZCA9IDwyPjsNCj4+ICsgICAgICAgICAgICAvKiBvdGhlciBkb21haW4g
cHJvcGVydGllcyBoZXJlICovDQo+PiArICAgICAgICB9Ow0KPj4gKyAgICB9Ow0KPj4gKw0KPj4g
Ky4uIGNvZGUtYmxvY2s6OiBkdHMNCj4+ICsNCj4+ICsgICAgICAgICAgICBpMmNAZTY1MDgwMDAg
ew0KPj4gKyAgICAgICAgICAgIC4uLg0KPj4gKyAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4
MDAgMHhlNjUwODAwMCAweDAwIDB4MTAwMD47DQo+PiArICAgIC0+ICAgICAgICB4ZW4scGF0aCA9
ICIvc29jL2kyY0BlNjUwODAwMCINCj4+ICsgICAgLT4gICAgICAgIHhlbixyZWcgPSA8MHgwIDB4
ZTY1MDgwMDAgMHgwIDB4MTAwMCAweDAgMHhlNjUwODAwMD47DQo+PiArICAgIC0+ICAgICAgICB4
ZW4sZm9yY2UtYXNzaWduLXdpdGhvdXQtaW9tbXU7DQo+PiArICAgICAgICB9Ow0K


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:24:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:24:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471708.1679940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZ6i-0003wo-Pj; Wed, 04 Nov 2026 11:24:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471708.1679940; Wed, 04 Nov 2026 11:24:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZ6i-0003wh-M6; Wed, 04 Nov 2026 11:24:44 +0000
Received: by outflank-mailman (input) for mailman id 1471708;
 Wed, 04 Nov 2026 11:24:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xOZ6h-0003wb-6k
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:24:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOZ6g-00BvRR-Je
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:24:42 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb15f4-8faa-0a2a0a5109dd-0a2a450ccec4-26
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:24:42 +0100
Received: from [52.101.57.29]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb15f9-f479-0a2a450c0019-3465391d90cc-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:24:41 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BLAPR03MB5556.namprd03.prod.outlook.com (2603:10b6:208:297::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 11:24:40 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 11:24:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=ogfFkj9ieF8gl5RsBsKXLpae4Kvj4cM37rjgNSJbTOfCIhClLbQKxsBpDOGS+KdTKqaErHYeStxLLo8vm/NRiX4inbjGV4icOXqGfV3yfgtc4cEaRFwwYZbXi6faa3D4R75G1d2pzexhOTJscRzFbFAlR12ir4UgvNUi8ucA+tChmXdYg/tmYceJLHWm0TCOcr4UaoTbAVHPMNeinQRQAzz8SOYzP0RMaYlubrYggUQyJ0YdctoUv/oXgAkG8A+Gt1dJlfUTEDQOaECVGz17iJXL6YAYTQY7IFTFsFehjm2ZLE+6S0ef77v+tk+OuQyKZgNgfbcIj5itbBd/vICXFg==
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=iBPMcX8RjO2+i82SwiSUdTPfy6bL9PXZsbff7x7UdjY=;
 b=lyo0bo7pFjpeUgSTziW++snzuAJx7QZgYWOecxqHem0Q0GqB3sH6sALJp71n2X5HR75o5PUsGevNB/fAWD7kGV2X+Ni0qWR6R5h8jlQsRx0KQsWkZJtlA9aXqk5jV6A7c6+KzESdHmpBfuXuyurcm1RMed+Za9HbkuVAoeX3wESKfxqukC4mKbflVf0/hb+6xEV65CAclYSmp99nzoOFpCsuG6aU6K60ByhAha5HSiBid37mG6hxsc5jiM26l06Zbemd5zusRdorTVIdtlTnZcDmaZnzdo+epkkTs/PCsjsbSJN05hoYFVZTaAJhQMaOX14A3aUkp6BVelxPcSS5bQ==
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=iBPMcX8RjO2+i82SwiSUdTPfy6bL9PXZsbff7x7UdjY=;
 b=j/7gxdvBwchMEolkg1Jb29F1ZLcGPl/ggFQwTESUFVF21Qm/gGKJ/jpQu5TF1qKVtLklmUCI9aP9EtqoBuTD+ZfZqacLYhfw8ywytKZmuGPvLxaRJqWgEHRvWUcn2MduHfM6A6Qw6InwBYZzIJC7yl46IuqpndRZXDiJlkjlwY0=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <de39dd8c-1db0-45a9-a9c9-ad2f2e0a90cb@citrix.com>
Date: Wed, 4 Nov 2026 11:24:36 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Subject: Re: [PATCH 4/4] automation/eclair: deviate MISRA C Rule 11.8 for
 xfree() and vfree()
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
 <4accfe649e163bb4d0372c432256ed394b4ee50d.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <4accfe649e163bb4d0372c432256ed394b4ee50d.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO6P123CA0007.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:338::9) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BLAPR03MB5556:EE_
X-MS-Office365-Filtering-Correlation-Id: 2ccf0975-f901-47c6-3275-08df3a663732
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|7416014|376014|366016|1800799024|261021121427099003|261026121527099003|4143699003|11063799006|10067099003|56012099006|22082099003|18002099003|261102123227099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	yavHZFC2tSvFoNJiG64OfoTAc+rXeW9Xtjmai9Z4A1NTdOBo/ixl/a5KpUiWwwwNxjGueosvuMxJEmnCMeTs01BqYBJdNWOBCH8iLfS+7jwahiPgYIYloLlFkfFyXthlNEpIyAB9nktASb1Hu916sssK98eC9JZPKZeTumFVtJ0+ErNcnNUMMiK++0/2jpkc1mpr+dfnAt0eqv4m4/cWXy6KzCm123jwr8ZdreRfi7vUeMdLKoZ1mX1OcmI37QqYteEp73Ch1B9JuMgTZ2ir2KsJacoEb4kxdHvgaXSDOqZMCpF3sUnn5gYpZ9i8rCayxOMttl68FLIEl3fMI0ExrsUkoyjG28pWY55C/pOmeLbnfX8FG6y80vG5L2kGb5J54Ah3WFr59dlTtZ8qYLjqEr2KkKOk372NPNCCehsFrsFnVKQ9xYWjUNvc6QntbuO8ScgBdK+evvBkaQ+28rwqFniPx6Mmu2W5vx9kZ1MhPBMIQxiXYX/1KSLhkMVY3M+c/39KZUX0QlSYttuiO9kMy05slmZqu96dqZZbJ7f+CLv3c8zOJu/FneTaNRaN+gz+iczC8dHxMFJGFYf6A1qhhqvi1wqTfzAezN4L9lnDlF1oSMaLBhJNwjKMFFIFlDooBKJiwxvHSPI2fWqghF4ywmEpSja6rwd7jbiPXbfP1Gs=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(7416014)(376014)(366016)(1800799024)(261021121427099003)(261026121527099003)(4143699003)(11063799006)(10067099003)(56012099006)(22082099003)(18002099003)(261102123227099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cW5XampQZkdsdHRmTXNhSmxlQzNKakwrYUs4UUxUV2VvUHR5NTFZeVNiSWpq?=
 =?utf-8?B?L3c4TGV2TEhSTTNFYy9Kbm8zWGNBL1NwZGF2NkE3UXNQOVppaC9hUUw5bWxx?=
 =?utf-8?B?T0dPUWI1aXdqLzdUZ2FzeDVESzhhZys4UGxRSVMrK2RHM0dtSlE1eEE1dmo3?=
 =?utf-8?B?c3pVczBOL1RaZ0ttcmdRQWJOdVdGQWUxTG4vYjBZVnJxSWJHaHk0eENnSExW?=
 =?utf-8?B?NExIU1VISUI0TTRmcEVQVitRS2dCMTh5bWVDdlZQZ1VDaENQMStYM0RqbnFy?=
 =?utf-8?B?UjFjZjNGWlRSaE5vNXRleDFZS1U0N1hyZGwxay93WndHTURnME1kdGRnUFI2?=
 =?utf-8?B?RTY0eE0zd2o2bFp3RWFRYklNUFlwTU8xb3JVR1ZzTGN4M0wrS1ZtU0lUbFJS?=
 =?utf-8?B?SjdlbWtCSVFFSHRIVXB5dDMxNzNyWUdqV3NBM2NkdHZQcm9FYzFCTitBbS9Q?=
 =?utf-8?B?UVVzZUpySkluWW5kV0h4NlhQekRTdENIaW0wYUNrQW1BU25mQW1nOU10Wklp?=
 =?utf-8?B?cHZoQzlBbG1GelJrN0hHR3ZtQ25ISXYrWlhXQ2Z2Ym5uMnpsYWtLTW0xRHFw?=
 =?utf-8?B?RlVnWGprWkFFV2tPREtMS05DOE4rOWpVMS9ORFBIeXBvclQ1RVRRbVV2NkVk?=
 =?utf-8?B?SEJka093eG4zRkxSUGhUSXA5WWZCSlI5eU9zcXNZWU8wMUhMVnRXWk1weHpQ?=
 =?utf-8?B?QkJMTEp1RDcxVVN5aGxQdjJYUW9zd1l2NG40TkUyeHFUMEt2SW5vellNejVT?=
 =?utf-8?B?eDU5NXh4cHFNL3J4UHBZejVTRXVzeDlUazZPZytXNGtKdjFGUlpMVHJ1MEpH?=
 =?utf-8?B?cjU5L2ovVllvRSt5eGlDUnRiT01VYjhrZWFEWC9kSmhHQlREelpTWkxYZkFR?=
 =?utf-8?B?Qzh5N04rZUthNjFIZU9PaS8yNjZBVWVSZzR6Y0h5Q2xvMTAvSGFCVENEVTJM?=
 =?utf-8?B?Qm9XNmNUUjk0cDEydHhiL2NzMkwvTzRVREFBT29hMlRacTNFcENYNUZPYWtY?=
 =?utf-8?B?aHl0RTJJa0lUdHlkd2crNlBTN3ZCS3Nqb205cXdtdU5sNVNKcGI2Z3dCSkQr?=
 =?utf-8?B?ZWRFdW5URmFFTS9MV2VQNDRybnAycnl4aEpUaHorcmF5anFFUk53ZEhGSE51?=
 =?utf-8?B?TUJDK1d0WlhRM0tYQWFFaTlYNE0rN2x3OFBqdU16cHVhc1FHcTM5alIweEJR?=
 =?utf-8?B?R1RqODhMYklPU3RQR2RuMFRkcGwyb1l1SUxRWHQ1UmJuUXU0NUE2eFFIUUth?=
 =?utf-8?B?N1VzVytFS3pGSUpHTi9zMzNxT3EzNDAwN1FtVHY1eGgzQ2RFczV1TjViUXhS?=
 =?utf-8?B?b1AycHArSUJiUE1sZHkybzlYSy9NTi9YaGtvWTV3Z3JwR1ZRK1VIcTBpQUVZ?=
 =?utf-8?B?eDFsTXlNQ0VjTzRJT3E2QitUQktEUlQ3ZjZiVWNCYTJEa3BsMktNNTJyRlpC?=
 =?utf-8?B?ZUdqRjRyYzk2VEplRFY1Yjk3T1ZwaDVWeWNHSFRiNnl0RVVpT25VYndDWHdI?=
 =?utf-8?B?MVZzbnJINVNCTFFXNE9IUkhNUVhZS00vN1hZa05LRnV5S29ndVpCbU5nKzd1?=
 =?utf-8?B?dFlwaTFxYnhlNWJXbmdLQThvS05qcEdzQkpleVI4K3ViT05qbzhHTjgxRFdz?=
 =?utf-8?B?WXF6SE5URjBFTEJkWjNuR3ZSdVhWdkxoWUZGdldpeWtscEhGOS9kYURSbVdl?=
 =?utf-8?B?cVQ0UXFXMnczTUJRMEJTSkFXTjNFWlJBOXBjT2lCRDZXSEphbW9LRTI4aVBM?=
 =?utf-8?B?Zzk0VXY2ZzBndDRlVDB6Wk0zQWRNNVhOdE0rbkpDY2dLY0RhTC9QUW9lZVVz?=
 =?utf-8?B?K2JiMFppaWMwTk9OYXJrdW1VL3F6QjU1SzZDb25xallnT2FXU3VJcVR0SDJp?=
 =?utf-8?B?Zjd0Y01qb3dUMjhGRElLMm9HcTZibENTalh5RTB1Z2M5T3VxTXFtb0E4Vkd5?=
 =?utf-8?B?VG9pd09qZkM1MFpicy9MdkpzaDB4c2xsWlRTZmRmSFVSRi9JL2p3NHFaZGN2?=
 =?utf-8?B?REdmOExaSU94Z1g4bjJkWm5sTWxHNjc0cURINnF6M1QrY3hkQVZlN3NXTzkw?=
 =?utf-8?B?Q1VTOFFLaldRYXpoRkxBQ3Q2QXV3NC9DeExPd3ZPWkR1OWU4ODRPL05PMDMy?=
 =?utf-8?B?MXNWVENtUWhqc0pManh5Mjl4M2tCL3Fnbzh4eUVOZzMzUnBzU3RBblkwQ29o?=
 =?utf-8?B?UlYwQXNIcUJlRHdWKzd5QVRIT0FzTGkxd1U1WXdrWVd3aDI3VXcwZEx1RUMw?=
 =?utf-8?B?WmVsNFI3RGZqcDhjek9vdUxEV2Y1cks2NlMwWTRtTjZRVGJyNCtEa1NFOS93?=
 =?utf-8?B?TzlhYzJIVFdpMksyMlplVFBEemhFSFdYVk5Kam4wUlZyTi85d0tTdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2ccf0975-f901-47c6-3275-08df3a663732
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 11:24:39.8703
 (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: J6p/JlRXcK3VIumCj7ppP/pAzcTTGBafvLz66MJzHHW2QonfRkqBtcrf1uRpBXP5IX/g1jSIT6NlmwyQDfyR1ICdESa5lBhCGM0MCjnEp6E=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR03MB5556
X-purgate-ID: tlsNG-d25034/1793791482-5290EA5B-FD4386CD/0/0
X-purgate-type: clean
X-purgate-size: 1153

On 03/11/2026 10:29 am, Dmytro Prokopchuk1 wrote:
> Livepatch passes const-qualified pointers from struct payload to xfree()
> and vfree(), which take a 'void *' argument. The cast that removes the
> const qualifier is a violation of MISRA C Rule 11.8.
>
> Such casts are safe.  The deallocation functions neither read nor write
> the content of the object being freed, and the object is not accessed
> after it has been freed.

I have a very firm objection to this.

It is impossible for any allocation from malloc()/calloc()/etc to point
to read-only memory, which is why free() takes a mutable pointer, not a
const pointer.  The same is true of any other heap implementation.

It is impossible to make an object in read-only memory undefined. 
Objects in read-only memory by definition have a global lifetime, and it
is absurd to argue that a specific heap implementation ought to permit
making such objects undefined.


The bug here is livepatch storing a heap allocation in a const pointer.

This comes from deeper problem where some contributors/reviewers want
the const keyword to mean something it doesn't.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:34:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:34:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471719.1679948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZFc-0005fJ-Io; Wed, 04 Nov 2026 11:33:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471719.1679948; Wed, 04 Nov 2026 11:33:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZFc-0005fC-Fj; Wed, 04 Nov 2026 11:33:56 +0000
Received: by outflank-mailman (input) for mailman id 1471719;
 Wed, 04 Nov 2026 11:33:55 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOZFb-0005f6-42
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:33:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOZFa-00A62d-Gm
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:33:54 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1816-2eae-0a2a0a5409dd-0a2a4503d82e-20
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:33:54 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1822-fae8-0a2a45030019-d155dd2dd878-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:33:54 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-490c1d337d8so23835f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:33:54 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48feda2007esm3354133f8f.47.2026.11.04.03.33.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 03:33:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793792034; x=1794396834; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=3zDMyA4rVT7YPhbltgk8jepE5SDB7NJpRffzDpRyBOE=;
        b=EImNaH9GjBY2udj+CD0Q/3KK/TqS2LVSGWlYpuz5TY0wIgj3+4leorkAWa6oocKghW
         Xpxf9+ZpCxDW5vT/OYnl5G5GQB2Lbz5yHKNZCX8v6cc/j4IparmQmSCz5ETEyJiusdkp
         +MGTzSfTNO389dvK7OFz+pxUesEsWIMqUcYuEg8Ct1j2QxTx4YfWN/vXiFi/523midxw
         ZrgFYxKg8VqNXBwoF3QtKEc+thhMUn5oM2rsKi9wZ7qT8dQtpJb66Cwz3aIFJIwPIABE
         k2aKO+GiWzjDvuwRxjmUxeG9tOaJLbBy/J/2DtHGhQkKLQvvIT2fEZUfEdkVIY7hpU5Y
         1vbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793792034; x=1794396834;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=3zDMyA4rVT7YPhbltgk8jepE5SDB7NJpRffzDpRyBOE=;
        b=pPLkNMJeC0rvVjgVkWUmlN/PtWPL59N8vV/3SWrZZ/69UgdpnRNCyD0olHpMP5HnzF
         9FP4dEJyqg3Qk/7aGKr5Abc68y90TC16H+7FokhQw5KFQBSnPUDPpPhJDCWz/vRhVNJz
         M0OqgA/U3FV6VoCRCds/aQZlgSo+i2Tknu4LATPPYTzjIjvox7soMdsVc8dbCMGMexbQ
         6R400NYZ2ikVuiARLTOEKbBscI03un583l1fAZdV+apgJRfUkux/waxIYra/IdQCzPRX
         6FYbhklfOoyVrK9C7i2a8EGTFzzsnyH0zHiJHTxaeYMCpeZGFqqn8X/aQgjhEgsU/xln
         /TsA==
X-Gm-Message-State: APuU4Z/5bTsknG4AerXfpITWGyjtdRsc5FWe89S5i7cEdO4kfCLEgtEj
	3xeoBO35nohniC96HmGANX0fDylvvrchOHph1b/NgsffPrK80bb1R0VA
X-Gm-Gg: AYBFou1xqVzhf2aqfA3p9nJClZt97d4rLSIe/5QmETAuVKOgBGXcc4ryk86cLfNyF9D
	bTildGyiAhL6hv8mIywJE1sonSgu0+3/bnmx+u5EZHabNuv/YDRRv7iF5rGx1WIU+XqlwpC9iwj
	MHX0RiJflaSSbzCU7bUudGzlog/m3NAfdoTD3xyaF/YoGiSXfhBYNZioOIZlOqoBUc5/gL4m6lw
	OvjAT+qWJZh4HarqDjYI7mf+9vua3Oz+rX0XG3TFRcH4H0kfoxUCXjuqarDiY8TsU5cq0qirr8k
	5LM1RVO1m3FGPWvkAeM5etPSbZlDUSkNfjnwNE4wdLp8tlAt6U86IGmtzLhnJsijK3uDbyHbsK/
	o4v3zqQoVhrMx2yd5ZBV4K4UXp2cEdlof5o1uZho599tnyosvv/o8RzZjK4BqoFhqZCM0X0c+7a
	VFopWwTDOsar2v9KebNGGMGTQJnDXhLHBBQfa74chr2bhr35dqINpZB0OQ5owaDu53g7s6j7QgY
	nVyugfRcZyOnDaf8zPeD33MLdfhWxvXR6X5yCyD3TyKdgKqXY8/0j8WncEAQodGjvaPQcwuqZ97
	kDgKjVJMwAyHkuX2WShVHYD/+xWka1nGt/hkmJy45TtONLs5vDP7wxlA1LL0Fi4M0KdvYZfeTr6
	kYuc=
X-Received: by 2002:a5d:64e7:0:b0:48e:17d1:16c9 with SMTP id ffacd0b85a97d-48e6e4f5652mr33870451f8f.40.1793792033715;
        Wed, 04 Nov 2026 03:33:53 -0800 (PST)
Message-ID: <0c5c754a-e072-4c95-9adb-85ad4ce5fddf@gmail.com>
Date: Wed, 4 Nov 2026 12:33:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 17/39] xen/riscv: add guest page fault handling stub
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <42d1a37341eadd764022a1658bebcffcee15238a.1790779209.git.oleksii.kurochko@gmail.com>
 <1792508386.8631fc262581453bbf619ec5b2062170.1a159d35ad4000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792508386.8631fc262581453bbf619ec5b2062170.1a159d35ad4000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793792034-6C8DD4E9-57397E9B/10/73395122804
X-purgate-type: spam
X-purgate-size: 8542



On 10/20/26 4:59 PM, Baptiste Le Duc wrote:
>> Add a handler for guest page faults and hook it into the trap path,
>> providing the trap-side entry point which will later feed the MMIO
>> dispatch.

Based on your comments below I will update here to:

  Add a handler for guest page faults and hook it into the trap path,
-providing the trap-side entry point which will later feed the MMIO
-dispatch.
+providing the trap-side entry point for the MMIO dispatch.

>>
>> This will be used, for example, to trap accesses to APLIC registers so
>> that a guest can initialize and drive an emulated interrupt controller.
>>
>> A G-stage (stage-2) fault has one of three causes, reported via scause:
>> - Fetch fault: guest tried to execute from a guest-physical address
>>    that is unmapped or that G-stage marks non-executable. Never
>>    emulatable (nothing to emulate a fetch into). On real hardware
>>    this raises an instruction access fault, so Xen reflects the same
>>    fault back to the guest. Decided here.
>>
>> - Load fault / Store fault: left undecided by this patch, this is
>>    where MMIO emulation will hook in later.
> Nit: should drop "in later" as it would be stale in the future. I'd
> suggest:
>    - Load fault / Store fault: this is where MMIO emulation will hook.
>      Not in scope of this patch.

I will re-use your option with small remark:

"this is where MMIO emulation *hooks in*. Not in scope of this patch."

'hooks in' instead of 'will hook'.

> 
>>
>> Any of these three faults can instead be reported via a pseudoinstruction
>> in htinst, when both:
>>
>> (a) the fault occurred on an implicit access Xen made to walk a
>>      VS-stage page table, and
> Xen doesn't access the VS-stage page tables here: the implicit access is
> done by the hardware page-table walker, while translating a guest access
> through the guest's VS-stage page tables. I'd suggest to use spec's
> wording. Moreover, "and" is not needed between both conditions as you said
> above "when both" which already indicates that both should be true.
> 
> Here is a proposition:
> ```
>      Any of these three faults can instead be reported via a
>      pseudoinstruction in htinst, when both:
>          (a) the fault is caused by an implicit memory access for VS-stage
>              address translation.
>          (b) htval holds a nonzero value: the guest-physical address of that
>              VS-stage PTE, not of the guest's original access.
> ```
This option better. I will use it.

>>
>> However, none of these paths consult the p2m first, and the future MMIO path
>> won't either: RISC-V has no populate-on-demand, no paging, and no
>> mem_access, so every guest mapping is established eagerly. A G-stage
>> fault therefore never indicates a mapping Xen could lazily resolve to
>> let the access complete.
>>
>> resolve_faulting_gpa() is a stub which always fails for now, so any guest
>> page fault other than one taken on an implicit access for VS-stage
>> translation currently crashes the domain. That one is reflected to the
>> guest through trap_redirect(), which is still a BUG_ON() placeholder
>> though, and so takes the host down. This is no worse than before this
>> patch, where these traps fell through to do_unexpected_trap() and die().
>>
>> Cache the "trap came from the guest" test in a local, as the guest page
>> fault case needs it too.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> +    default:
>> +        domain_crash(current->domain, "Impossible cause (%#lx) in %s?\n",
>> +                     gf->cause, __func__);
> Nit: please drop __func__, the message is unique enough to find where it
> comes from.

Agree, not to much sense. It will be dropped.

> 
>> +        return;
>> +    }
>> +
>> +    trap_redirect(&utrap);
>> +}
>> +
>> +void handle_guest_page_fault(struct cpu_user_regs *regs, unsigned long cause)
>> +{
>> +    struct guest_fault gf = {
>> +        .regs = regs,
>> +        .cause = cause,
>> +        .gpa = INVALID_PADDR,
>> +    };
>> +    int rc;
>> +
>> +    gf.htinst = csr_read(CSR_HTINST);
>> +    gf.htval = csr_read(CSR_HTVAL);
>> +    gf.stval = csr_read(CSR_STVAL);
>> +
>> +    /*
>> +     * A guest-page fault may arise due to an implicit memory access during
>> +     * first-stage (VS-stage) address translation, in which case a guest
>> +     * physical address written to htval is that of the implicit memory
>> +     * access that faulted - for example, the address of a VS-level page
>> +     * table entry that could not be read. (The guest physical address
>> +     * corresponding to the original virtual address is unknown when
>> +     * VS-stage translation fails to complete)
> Nit: I think this paragraph could be re-written by using what you said
> in the commit message.
> ```
>      htinst reports one of the special pseudoinstruction values when both:
>        (a) the fault is caused by an implicit memory access for VS-stage
>            address translation
>        (b) htval holds a nonzero value: the guest physical address of that
>            VS-stage PTE, not of the guest's original access, which is
>            unknown as VS-stage translation didn't complete.
> 
>      No access to emulate then: to match bare hardware behavior, inject an
>      access fault of the ORIGINAL access type (Instruction, Load, or
>      Store/AMO) that initiated the address translation.
> ```

I will use then your option.

> 
>> +     *
>> +     * In such cases htinst reports one of the pseudoinstructions recognized
>> +     * by htinst_is_pseudo(), and the fault requires separate handling (since
>> +     * G-stage translation failed on an unpopulated/unmapped guest physical
>> +     * address during a hardware page-table walk). To match bare hardware
>> +     * behavior, we must inject an access fault of the ORIGINAL access type
>> +     * (Instruction, Load, or Store/AMO) that initiated the address
>> +     * translation.
>> +     *
>> +     * FIXME: This assumes that guest page tables never reside in an emulated
>> +     * MMIO region, i.e. that an implicit access faulting at G-stage always
>> +     * targets an unpopulated GPA. Guests may (even transiently) place page
>> +     * tables in MMIO-backed memory, e.g. a video frame buffer. Supporting
>> +     * that would require walking the VS-stage page tables in software,
>> +     * accessing the PTEs (including A/D updates) through the MMIO handlers,
>> +     * and then emulating the original access, instead of injecting a fault.
>> +     */
>> +    if ( htinst_is_pseudo(gf.htinst) )
>> +    {
>> +        inject_access_fault(&gf);
>> +
>> +        return;
>> +    }
>> +
>> +    rc = resolve_faulting_gpa(&gf);
>> +    if ( rc )
>> +        goto out;
>> +
>> +    switch ( cause )
>> +    {
>> +    case CAUSE_LOAD_GUEST_PAGE_FAULT:
>> +        rc = emulate_load(&gf);
>> +        break;
>> +
>> +    case CAUSE_STORE_GUEST_PAGE_FAULT:
>> +        rc = emulate_store(&gf);
>> +        break;
>> +
>> +    case CAUSE_FETCH_GUEST_PAGE_FAULT:
>> +        /*
>> +         * Guest is trying to reach unmapped/unpopulated, or G-stage PTE doesn't
>> +         * allow execution (X=0). Generate fetch fault in this case.
>> +         */
>> +        inject_access_fault(&gf);
>> +        return;
>> +
>> +    default:
>> +        ASSERT_UNREACHABLE();
>> +        rc = -EOPNOTSUPP;
>> +
>> +        break;
>> +    }
>> +
>> + out:
>> +    if ( rc )
>> +        domain_crash(current->domain,
>> +                     "%s: unable to handle guest page fault (cause=%#lx) at gpa %#"PRIpaddr"\n",
>> +                     __func__, cause, gf.gpa);
> Probably __func__ can be dropped as the message is unique enough.

Agree with dropping of __func__.

> 
>> +}
>> diff --git a/xen/arch/riscv/traps.c b/xen/arch/riscv/traps.c
>> @@ -193,6 +194,7 @@ void do_trap(struct cpu_user_regs *cpu_regs)
>>   {
>>       register_t pc = cpu_regs->sepc;
>>       unsigned long cause = csr_read(CSR_SCAUSE);
>> +    bool from_guest = cpu_regs->hstatus & HSTATUS_SPV;
>> @@ -275,3 +289,9 @@ enum mc_disposition arch_do_multicall_call(struct mc_state *state)
>> +
>> +/* Redirect trap to Guest. */
> This duplicates the comment on the prototype in traps.h, so I'd drop it
> here.
> 

Agree, it is enough to have the comment only in prototype.

Thanks!

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:41:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:41:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471733.1679956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZN7-0007OJ-9k; Wed, 04 Nov 2026 11:41:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471733.1679956; Wed, 04 Nov 2026 11:41:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZN7-0007OC-6t; Wed, 04 Nov 2026 11:41:41 +0000
Received: by outflank-mailman (input) for mailman id 1471733;
 Wed, 04 Nov 2026 11:41:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOZN5-0007O6-7S
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:41:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOZN4-006oUD-KY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:41:38 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb19e9-8faa-0a2a0a5109dd-0a2a4504e6ae-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:41:38 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb19f2-b57f-0a2a45040019-d155802fc5f6-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:41:38 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4a20a37703bso4211665e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:41:38 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed5538basm3246056f8f.44.2026.11.04.03.41.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 03:41:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793792498; x=1794397298; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=adNm7kEBtahaDnpiW3zrayP8SQn/LsbQiKyz3cypDyM=;
        b=dfTriTCKj7IXlddR6AhADE6rVoC0eetKz/Mnywtbe7/5Oh4iN/tgRU8AZFyZ6tdQKD
         Owh1xV1XiY+Ci+ztyYRPMneFAIBqMGY5YDlJ93WJpJ8qclrRxQVZ/3t+qqEHp3ilrTXv
         aLkSieM9hNNWEJ9ieeUhZIkVz7DLZ3nUb1jHRHxg6sh0LmeA5aJXc8UzlIg9hJ1apOKL
         uNn7ALl2BU6iz8Eb/CDif+KImUd1+3y0YLrlbKpVc3GjmHsFbyqkljNjXkmQ2hiMZYGL
         tN4SyiuTLko8s7MgczhZwRC2qLqHciEEtgHkJUntqEHb8w0WzhbgQ4XOy/hzLjdRrycN
         VgKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793792498; x=1794397298;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=adNm7kEBtahaDnpiW3zrayP8SQn/LsbQiKyz3cypDyM=;
        b=mdK4ROWSkkgnLuFRRPTImYIgoqHSms5M+AsIrMnB8S3m6oBchlt1wSykKWKnl7MOxk
         7mFkvL+quT+BhWnAZK+2v1qaK1Mp2Tsj7URETGpLOOLHC7nb+HCExNp8OSkBEX9Zk9/N
         fcRVt85bKIwmFaupGBLTxU+QEPUKH2N3VyoYsPPtAlmdBBWV+fB4NAFjuuA6MP8grLQL
         fA1wzpK3gr+Uxp9R8njbRMgFju/AJxX6s6xaHVyyLNEfcyJuzMgOY2M2xXRdD87s0vZv
         YOeafH/CT+PbSkmoYEdohNNIElE+nGz/PlhcpnDybNSncnz9cGTyyCd276oIQtW/MVNK
         Gg1w==
X-Gm-Message-State: APuU4Z+Ti75zT8bsNUZV03cHh+aJSfP71Ywi/vW4Nwhw0eDDf3RvAKb3
	enb9LkRxUdOI8BkQ4Vq1DmO0QDlIdNd6WZrFR1pQ4QZp6zJQog4IbRzc
X-Gm-Gg: AYBFou0zXNOsHK/AfGwkZJwmQl0TPedADQFMaxshdnhliQuHt/DDmsFCB+99yibfMWJ
	AC3J8msxsQ8LKNx6MpUqwNUBNxtnpAI++B9ABx1YsnJNe3QM0fqB7W5Rl/TZxFZIWoKVBQ8+Kik
	kywOsiw4Cdfec5g79+IRcYWHzyxhsl6bir1K/FAAG3ovFwJc7zFUwjYYR0IIbwGL3R3v3Inq5oY
	xSusVAkGEMLSopzDB+llZmsHpJDVgw8KTY5/n0wbGkYF9cHP18Ut49NsnTc1Uyik4qoNkKG9O5v
	GwLRbx/YneOy2x5kndIgP2abMm6YEzZ6tkSO2kWA1bh5c+VNdZJu7dVNQnYfTR/jyikwYD7eqbh
	dZaWSAxznlrzq6FSTkm0kOUvc99erdn6bNKA+ql9/jEoD0LerII0N8+xuFeBcQGoeISzYZJrgWU
	EcnXcfirQY7mHberZ/VO2+ixDmBGeVcv8WisaY4VRsdS7ce9JDRgZfN9zJnNP66kdQuQEUxzzfQ
	KKHPPI1usOsRGOIIothF6/93Iflf5fE8fRshR4dATMF68cX0U7n2V75obAGGHvXccsXhMGosIyU
	3dU7ZpzvLeYi4Q8iBj7bXGeSG5ZHsS7uqIrT6A4gBdwhD7XVNFRZA1rv7DSwxsWbmxEZTeLyi2f
	SPk4=
X-Received: by 2002:a05:600c:83c5:b0:4a1:88de:9e8b with SMTP id 5b1f17b1804b1-4ac17191074mr325681235e9.5.1793792497976;
        Wed, 04 Nov 2026 03:41:37 -0800 (PST)
Message-ID: <8d0df627-236e-4fa0-b3bd-b803305f6fc3@gmail.com>
Date: Wed, 4 Nov 2026 12:41:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 18/39] xen/riscv: implement trap redirection to a guest
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <109f3a920a2f5e58de5889ac2bcb834cc7ce967a.1790779209.git.oleksii.kurochko@gmail.com>
 <179250973602.489973.14893581320042795275.b4-review@b4>
 <1792509935.8631fc262581453bbf619ec5b2062170.1a159eafd67000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792509935.8631fc262581453bbf619ec5b2062170.1a159eafd67000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793792498-520D5B50-D842B6E2/10/73395122804
X-purgate-type: spam
X-purgate-size: 850



On 10/20/26 5:25 PM, Baptiste Le Duc wrote:
> 
> 
> On 10/20/26 5:22 PM, Baptiste Le Duc wrote:
>>> [ ... 54 lines skipped ... ]
>>> @@ -107,6 +107,11 @@
>>>   #define SIP_SSIP            MIP_SSIP
>>>   #define SIP_STIP            MIP_STIP
>>> +/* stvec/vstvec: MODE is bits [1:0], BASE is bits [XLEN-1:2] */
>>> +#define STVEC_MODE_MASK        _UL(0x3)
>>> +#define STVEC_MODE_DIRECT        _UL(0x0)
>>> +#define STVEC_MODE_VECTORED        _UL(0x1)
>>
>> Nit: STVEC_MODE_MASK needs a third tab for its value to line up with the
>> other two (and with the surrounding #define-s).
>>
> Instead of this small Nit, everything LGTM:

I suppose here you meant "Except of ...". I will apply your Nit.

> Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

Thanks!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:49:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:49:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471748.1679965 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZUa-0008BQ-4W; Wed, 04 Nov 2026 11:49:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471748.1679965; Wed, 04 Nov 2026 11:49:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZUa-0008BJ-1Z; Wed, 04 Nov 2026 11:49:24 +0000
Received: by outflank-mailman (input) for mailman id 1471748;
 Wed, 04 Nov 2026 11:49:23 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOZUY-0008BC-Uq
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:49:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOZUY-00AVBv-BZ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:49:22 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1bbc-e002-0a2a0a5209dd-0a2a4507a592-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:49:22 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb1bc2-b4ea-0a2a45070019-d155dd31c96b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:49:22 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48df4e9d2d4so396797f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 03:49:22 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fecf8ef85sm3874725f8f.27.2026.11.04.03.49.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 03:49:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793792962; x=1794397762; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=PIT0qOE1RjrKqBqCTk81briilbRzQcHjDROuAN2fnMs=;
        b=WnzqPhF/CpJGBRbNfgzzJG0DsyCQBQDupXWthVMLEgwfvgKWm1gas4/AYwyXkGHPLi
         WB8oYJkjzXFaBBr2i04B8Ykn8fnv3NZGoW3blyTy3ZtFzCKSIrT+fxLBtCCajC4+BR40
         1ibHYPkmikPMJR0tjfiJFslOdubn4BEs0dlMawIcMyZjJeWIqyiFB7sqOVfc53e3aC/I
         b99vp60u5obJrzVY9iufIhfk1wPPi7n5KqItty73pqFY8hMdEDzhlp7QkWM4d/4vGcSA
         THLeGO+3+Uxm5/NF18wCP6f9tYAza9ZjmapNOShEbBWFeZiSfvz35GnlSPyU8m/JAwBL
         YUxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793792962; x=1794397762;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=PIT0qOE1RjrKqBqCTk81briilbRzQcHjDROuAN2fnMs=;
        b=Hh10w9jSgHMI1QUWyBSRRFN3wkU00MLY8gvRYQQjjJudDFGtfczt7566H4HYekx30q
         yXDqPaPIgEryJHfrmezk3kwT6nH3wXXukFJbo5+g9GlNHIhbeSn5h1sU3pD8iS/97b7b
         fuxsdPJNEsP+8A3TjrYOrB78B0tpY6FSGh8/jX6xK3WOKuaAVOgzc1tl+1sP1T2SjRUN
         L6V5tWBiCycT+D/jCmlsRF+rwRNE7seaAgeu2y8XAuORnFvPgx9Cds7YASO48lGNktj9
         gN0Z1wU6HLQ+p8/OIZwMqwi96gRkHIM257kLk/RwK1hpCqwUbN+afBNssZhfIqYf4Myc
         05oQ==
X-Gm-Message-State: APuU4Z+OcUziap2/YWFlruR80OFcq5OmZUXUJpTUO21L+JKJ4gewK7gm
	U0OJc0cYRIBhHi2iK/n49h5QgPag5zo/HigB4klY5Vd7BE0nTqQvD2Ml
X-Gm-Gg: AYBFou0Y2EJbtjAPZLiSXzbHqPbj3MPFzNVwASun2c36jgnb+cxjQcLtITD5jwyHD+L
	NqeeRMAMpI0hz2REQWsmoxHV/qij1dbvghZhZDuv8beg2MHZA1TW83yQspTC4mwYAUigJ1hDk/a
	mxKEtG2pXIvp5xAy6HcCnXWynoNHCr7/Uc9VPxHkt6eFQ19gQUk4F9fj04Il80vPG/TADU137DE
	G+s1YCCxvHZMZSV5M97Kf88Zt50YnhgZRscGcHH96uKpWGQVGdzIt571AYGYPUDYE47TvPD1Ht4
	IdErGP8XCtwEd2RAcaXtpz7y64nTN4pke2M1Z5Bvk5eA8LghusLvVL+Gufp25toOJyjKhZlCVlS
	bFr0vgx4So8vf+kTXDSUa1D40vZiANbAcUyM5XNDwf/5Z2oPEa8tBYSh3l0wwU3BzMClHhMOS0+
	CmJ3+qswTJpEoDO4KKFjDm7Vy0QQTai9IOSfFcQqns0UbHJWeMEpfoZRgEV0utb5fTtIxkpGxnd
	dWLpWYNKzlzWe9U7Uwo+M3xEurXfOUmInR2ryQQVILBaAg6mjMLSQ2+HPNVUAXuTftKSiNelh6E
	UlCwsBaYW2/tKVKMYmvP7W1Lf1/tNYbKEf0euTL40RGbJLMcVpM/QJ0zd+uaqgrbA0wjfjjCGiS
	11rc=
X-Received: by 2002:a05:6000:4a13:b0:48c:72fc:363e with SMTP id ffacd0b85a97d-48e6e308acdmr32315089f8f.44.1793792961778;
        Wed, 04 Nov 2026 03:49:21 -0800 (PST)
Message-ID: <7068584f-2aed-48a4-950f-97802d321502@gmail.com>
Date: Wed, 4 Nov 2026 12:49:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 20/39] xen/riscv: resolve the faulting guest physical
 address
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <f828fe51cde79f10632094067c82a7fc6f05391f.1790779209.git.oleksii.kurochko@gmail.com>
 <1792583108.8631fc262581453bbf619ec5b2062170.1a15e4785ac000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792583108.8631fc262581453bbf619ec5b2062170.1a15e4785ac000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1793792962-378D1AE4-939441C2/10/73395122804
X-purgate-type: spam
X-purgate-size: 1132



On 10/21/26 1:45 PM, Baptiste Le Duc wrote:
>> Recover the guest physical address from htval and stval. On a guest-page
>> fault to hypervisor, htval holds the guest physical address shifted
>> right by 2, so that an address wider than HSXLEN fits, and stval holds
>> the faulting guest virtual address. The shift is done on paddr_t rather
>> than on the raw register: a guest physical address is 34 bits wide on
>> RV32 with Sv32x4, so shifting an XLEN-wide value would drop its top two
>> bits.
> Nit: "The shift" reads as the right shift just described, while what is meant
> is shifting htval back left by 2 to recover the address. Could you say so
> explicitly?

Sure, I'll update it accordingly. Thanks for clarifying!

> Something like:
> 
> ````
> Shift htval back left by 2 and take the two low bits from stval. htval
> is first converted to paddr_t, then shifted: a guest physical address is
> 34 bits wide on RV32 with Sv32x4, so shifting the XLEN-wide register
> itself would drop the top two bits.
> ```
> 
> Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 11:49:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 11:49:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471749.1679975 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZUl-0008QA-BI; Wed, 04 Nov 2026 11:49:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471749.1679975; Wed, 04 Nov 2026 11:49:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOZUl-0008Q1-88; Wed, 04 Nov 2026 11:49:35 +0000
Received: by outflank-mailman (input) for mailman id 1471749;
 Wed, 04 Nov 2026 11:49:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xOZUk-0008PV-5V
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 11:49:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOZUj-0061uB-IM
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:49:33 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb1bbe-8faa-0a2a0a5109dd-0a2a45089ef8-48
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:49:33 +0100
Received: from [40.107.209.54]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb1bcb-f659-0a2a45080019-286bd13637a9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:49:33 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ2PR03MB7043.namprd03.prod.outlook.com (2603:10b6:a03:4fa::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Wed, 4 Nov 2026
 11:49:29 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 11:49:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=B5FJSre8s9leNPBhhICO9UYq+ssD2y9Z1ymW+UDzSgPQOgJ3p04J1Ppcwnx2fDFzuL8XUomgw6HMBgeizjQqbKSoELwMCQ1mnju1JMGv4x92jwFUyxH/be9e9H2hG+/e5rpUXXjk6NUfNX+iBJ+3GgZRcceWRad472ZOX4dMbmXp8AkzV+Jwnl37NfKI90ZAbimvOsCtqDik/f/iFpHnobjjXH6hmPth8KZzQG3vACvuIXCkF6DRPeWqfhIsq2qr4yKpEzLVg0EpFJLgePmcVVBRi5kjOxp8NpqHogsYYOb4oPWf2GxI0g7/aiG7hSjjtX+E4sW2/oKE5EGyLv3gwA==
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=EbrqTKGKZgdHSI1x8TFbF3+zSNZJaIQRnESbavUJu7Q=;
 b=jzwLb6GDA/OqEdMbwLJQxupLoI8vdUJLN7KSir+UHhg+4cTEu+lm5JwuXRfuPuaEPry4dO3rRq+YnMX6OYev6m5R9Tdl6vuyzVP9B75qfSGbGYlMAYt/7XUbJlEjLq6OMzcQhFdEc0MPvvCiz5H0IuUzSqNXTKe78tDvnjwIUfHXE2PmNukhorO8bpWU55WiZHUVfB0YgFpiHBOGqgqOvdhYwgZBF1bys/vMKe3P9x+5kBlyDFCDyFCRC3JVkJUjyPVx9bz0G/DfUx3jIo5NF08lGkpxH5EqvaJPUPbh830HSJbNgF2ouIzYw6Ts96DR68HpGGqe4LkJ7MmlTHxtQw==
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=EbrqTKGKZgdHSI1x8TFbF3+zSNZJaIQRnESbavUJu7Q=;
 b=QtVb0WpKdYr65aK/53r+5fq8P+omzlu+zFHn1ktVmgNunOC6gYYf2cTAtLuUmwk0l1c44oDwI4SD43YOQp1unrJFrSdVm3Xxi/3D2CWDhkXuQiLFRF/FxEtXMrO6k0Uh7Bt8MIP4aC+AkVjNN/iZ9EH3gAGJVEVrGraWQxYVDlo=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <f66d95a3-51cf-4a10-9984-e1e44a7ceedf@citrix.com>
Date: Wed, 4 Nov 2026 11:49:25 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 1/4] xen: make stop_machine_run() take const void *
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1793699713.git.dmytro_prokopchuk1@epam.com>
 <60f768b63656cc41b664678618c17248823b2d7c.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <60f768b63656cc41b664678618c17248823b2d7c.1793699713.git.dmytro_prokopchuk1@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0666.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:316::17) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SJ2PR03MB7043:EE_
X-MS-Office365-Filtering-Correlation-Id: 474c31da-8ca6-4453-565d-08df3a69af20
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|23010399003|7416014|376014|4143699003|22082099003|18002099003|5023799004|11063799006|56012099006|261009223027099003|261026121527099003|261022075727099003|261021121427099003|261102123227099003|10067099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	VyS1YBcgpZaqvNlka70bKqF6lcHkZG5SwoeFybj7TtyyPb//rZIHvX91V5WFKec3CkW/tm59+pLOBRdWO0i77XUHu6q9/b2yRKfyelqWv8hCDcJC8cGIbxQqPw1zQ8oDon3R7DfXiKGlNg/Z+8o4R+2P4vkFRA4Xy2jGvyCSparT3TxGwMYo9EROlXO2lLPU2qiJgKJyJZc2Q3yJdqkGrkSF1u1GCLbHCCuR3zVpTntZxn6YdyHNojAQI01x7UfgK6EMXjkWxdHSoeONal3yVYIr58FDwN1LZHTHHjzaAoP8kumH/soQEAGak/H9yPUSb9cmnLUS+okRGXw8SmhcV2rGfuJcVbVNBILDBrYpb9SzPyIPjZFBlunrVn5dJj+TUZJqyPtQm44gYH4wagku/Pq8YdhPspqVjoXmeuE/OdHzZ/IbtQsVMyu483DCRr0QFt/cVlvhQUiHNhX1JpawUi+tRf4P+ELU0bIejZoFwTMzIE9SxDzuPrx/aerr1+ihi6rBcW6ImufMboDQetnBoDYrVIrihGkcCnY+Qk8hLCHBjVXK+TtuIgUL2wOOn3u8ug/LlUk/RqjaOeDUi5+3t4SAoNQMWd1DdZeMhWUEWoowVjdtP1EvRxb7lGtkwRjWth1cahEkSFys2Zqvt+yXYhwK+1pBQ5WgtYSAL+otL6s=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(7416014)(376014)(4143699003)(22082099003)(18002099003)(5023799004)(11063799006)(56012099006)(261009223027099003)(261026121527099003)(261022075727099003)(261021121427099003)(261102123227099003)(10067099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TFdFYUVaWU1RWGZjUnFaeXUveHNlZ25JUXlyTUJMZ1kxVWRWYWU2RTJHUGlZ?=
 =?utf-8?B?RElLVDFreEVBSEZYUmM3NDhYSWRLWDlEZTloMW5qemZ6SDlkdkd1R3NKSHo0?=
 =?utf-8?B?YlgzZVRaTGpsV09ublhMM0lOQVV0Ny8zUFJ5ck8vL1VwZFlyMTRzbmQ3ZlhE?=
 =?utf-8?B?NXFVdU1CMXRzeENockNTanVTZ1NvejN5U1JNYVloWXdQd1hEeTQxTmI5YWtO?=
 =?utf-8?B?TkNuVVgzY1gxSlVtV01ETjV4VEFYWDViSmlVa1dxOUdNTWRDZzlCSWtXWm94?=
 =?utf-8?B?WVdydW9ySitZbjMvUzZjdktzS3FrK1h2ZjNVd3NadDlLMGJPeWpTMnJKY0pn?=
 =?utf-8?B?aWJHK0dmOWExOXR0LzcwaEpFTzc5UXFWOU83OXp5RVIxUS81cWJXVUo3c0pZ?=
 =?utf-8?B?djlZdWpNeE9VeVB4ZkxvUFNhdG9kb3VPNktnMWt1VlU1VCtDbGF4SFJiMGtW?=
 =?utf-8?B?d0huVzR6TldRTDQvN0dGSHNRZ0s0QkxyM1J3Q0puRWI5aDRrb3VhMmdHN0xy?=
 =?utf-8?B?UkxOMU1hLzJpL3hteGVJRjh3bXhyVmV1ck8wWUoyKzkxcHRwVnlUU0piUEFN?=
 =?utf-8?B?L3NUY2pqRFZERDI3NlFxVTRMWGNUbi8zTVBldVdRTkl1a0JLZmFvRnJ1K1dH?=
 =?utf-8?B?MlF4VGFyNkxwdjM2K3A0NytBQUdpV0pnVnF6eCt1NG9BMk4zdHh3RjJrVW1F?=
 =?utf-8?B?VWJ3RzRyREFGaGdBTzVUZitHZFArbkdxM0FWRWwvTUxhY2dlazVuU2wxL1lz?=
 =?utf-8?B?R3pGRDl4ekFEZ0pheG9vNi9aVVlWTS81cFJZalBudHF4eG1FSkVVVzlRMHFj?=
 =?utf-8?B?UWp5cHlTNWwwRnpObEVRNGd3bTlZTmZ4YjhHMHllUXhrQjdocEZqT0Y4Z0Fs?=
 =?utf-8?B?anJUc1N0eVdMeEMwczZTTDgyTXFkZU1wdWw2dzdrelhXZmZxSG1xZmlTZnFL?=
 =?utf-8?B?TUh2b2FtUzRsYTAyZ0g1RnlFWm10SEFKOWc3Vnk1aGZhRG9SQ2t1anYrdUJx?=
 =?utf-8?B?Y0VyZng0RGdJb1V2OEw5UVdWQW5sYnN4cHRLbk9CWG83NTNVNndGc1VwNTBl?=
 =?utf-8?B?QWpFM0hFcXA2ME1DTXJyL3JKV2E1SjUwclgxMklLSTYxOVd0RXo5U2E3a0xV?=
 =?utf-8?B?VlFJTkdFdjQ2alRBeWxSTGo1Vi9MdmdOb0prRlQzb0c4WlJYWENqMnN6T3Jx?=
 =?utf-8?B?SjI1NThpY1p3ZTRkaXlVYVBycnl5OXpCUjAxY1FWdGY3KzNqOWd0N2h2cXN4?=
 =?utf-8?B?dUpVWktjbnFLMGRPcnB2NSt2Mk9KcFpZRXp1bkZScGVXUDdoY2FhMHR4c25N?=
 =?utf-8?B?bWt3a0xVbHJNdkU0cUdWN0twWDBuZHF2akJoeGkzYVYwbW9nQUlydHR1SmJk?=
 =?utf-8?B?SGNZVDc0ZndmTjJiN0srQ0hQK2c4Vm5zenM0UDBybHdwc01RZkoxV1Z4NmI4?=
 =?utf-8?B?Rks3SVZJNmVZWEs0ajFaNzhsb2tTSHoxbTZiaS9VYkRuQ01OclVOQmxqYTVX?=
 =?utf-8?B?UzNzbjkzZjgySUhUTWY1eTI3ZFhpeUQrSi9kTlNWY1pzLzcvRUJ6UVZDL2JC?=
 =?utf-8?B?aHI0MHM2c2ZqQlI0UCtma0Zmd2dWMEZWbExXNEU0bWJRejIvOEgvdWEva2E1?=
 =?utf-8?B?cisyQmIxZ0pWRThhaFZvM0NyYklWL0tUbG5vZFhxTWo4ZnpLSmtLU3gyaHcz?=
 =?utf-8?B?SlptM2NLMW9EYkUweXUxMm1INlAvWDVOKy9xaUVrQUs3bUlKRU9aOXViclds?=
 =?utf-8?B?dHgwRHFOVnQ0ZVNmMklCa2RuVDNKNFpueGcrb014WWdmeU5yeTFBSkxtaHlj?=
 =?utf-8?B?R0FKQ1BoWUs1aEtkUXoreVNSSmYxeW5qaDZsUTlDWnByRjVkZmVISUdWRWdW?=
 =?utf-8?B?SG05OUVvTHp6b0NrVitRYlV3alNUNUMrZ2hCdjk5M1N3b1hzcUxCa2FYTmZ3?=
 =?utf-8?B?RDZ1aUdYeW1qeTN2U0JubjFDUzNmbVNjY0lFM3M2UDZJOGlZaHI1ZXdjTWpZ?=
 =?utf-8?B?ZlVJUnJld1pvL0ozK0xUdG1pZlN0M25NV0x0allobU9jK0FOeGFWd3NNeXdD?=
 =?utf-8?B?a1p1UVRoclhLQmk2aXhVZnFWSEx1TkhNeG5YUG85aXpwOThCcTBkMGtOWGdV?=
 =?utf-8?B?OVBPWHZqVmFCeUxLeU85cnRBRkZkbUlwOGNvajFidmxvdU0yQ0NQQmYxTEtS?=
 =?utf-8?B?VjdSN2MwSWhKMVVLblFyUU9aMm1EaG1hWXNzS2IvVFNNbTUzczQvTmNpZ1Iy?=
 =?utf-8?B?eERienMxa3U3dWwxWDhJMjhFSllJajFlNnlQM01ISjNPQTJjTnpocjFmWUR2?=
 =?utf-8?B?ZVpucFE4RFpRelJoeEQ1OXRpd1VtVnlSZmpYekJxd1dyOVhNa0ZHUT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 474c31da-8ca6-4453-565d-08df3a69af20
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 11:49:29.5439
 (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: 7dIoOWYUUB24+uGRmhzbiV9ksiykefDsLrRQCwk5Q3/7tMJEuluM1HRFbD7TqDOJm93D3cnMG/jkYWbhxuIPYzVhu7ssMDd5G9EbPC7eCAU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR03MB7043
X-purgate-ID: tlsNG-c1860d/1793792973-CC57487B-AE2D2D65/0/0
X-purgate-type: clean
X-purgate-size: 1848

On 03/11/2026 10:29 am, Dmytro Prokopchuk1 wrote:
> MISRA C Rule 11.8 forbids casts that remove the const qualifier from
> the pointed-to type. On Arm, enable_cpu_capabilities() and
> enable_nonboot_cpu_caps() cast a const struct arm_cpu_capabilities
> pointer to void * so that it can be passed to the capability enable
> callback, either directly or through stop_machine_run().
>
> None of the stop_machine_run() callbacks modify the data they are
> given. Make stop_machine_run() and its callback type take const void *,
> and update the callbacks to match:
>
>  - the Arm capability enable hook and its implementations
>    (enable_smccc_arch_workaround_1(), enable_spectre_bhb_workaround(),
>    enable_bp_inv_hardening() and enable_ic_inv_hardening()),
>  - __apply_alternatives_multi_stop() on Arm,
>  - do_microcode_update() on x86,
>  - take_cpu_down() in common code.
>
> This allows the casts in cpufeature.c to be dropped.
>
> take_cpu_down() is always invoked with NULL, so it now passes NULL to
> _take_cpu_down() explicitly. _take_cpu_down() keeps its void * argument
> because it is also used as an on_selected_cpus() callback.
>
> No functional changes.
>
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>

I think this is a backwards step.  It is pure luck that none of the
callbacks right now modify their passed pointer, but it is very
intentional that some callbacks might.

Callbacks use mutable void pointers in C, and this is a known friction
with the C type system.  If there existed a way of matching mutability
between the callback and the pointer, we'd be using that, but it doesn't
exist in C.

The safety here comes from the fact that an individual function doesn't
modify the thing it was passed a pointer to.  I think those want local
deviations.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 12:25:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 12:25:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471829.1679984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOa3d-0006Cw-Aj; Wed, 04 Nov 2026 12:25:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471829.1679984; Wed, 04 Nov 2026 12:25:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOa3d-0006Cp-7s; Wed, 04 Nov 2026 12:25:37 +0000
Received: by outflank-mailman (input) for mailman id 1471829;
 Wed, 04 Nov 2026 12:25:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOa3b-0006Cj-FZ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:25:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOa3a-0069Gq-Fd
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:25:34 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb2437-8faa-0a2a0a5109dd-0a2a4504cd78-34
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:25:34 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb243e-b57f-0a2a45040019-d1558032e99f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:25:34 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a2167bd087so5112005e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 04:25:34 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b411de95b4sm37178325e9.0.2026.11.04.04.25.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 04:25:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793795134; x=1794399934; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=xqUmeipCfeknZSMsGou+n7GuJVTBeNa3ADvT/lOjSdI=;
        b=pzYoimftGDro2DPgeByi6o7uABCUNsxr0QJ1/M8AFq+BCC5RQKFEsow3Fr4CDiyovb
         r3o/g2OiyeoPKJXZrV58MaX6Hx/P2jpaJrgtLTS8jBnsF7gFxEfDGBzGbXi0BMfumVP9
         1zOj1IChHNZd5pJielUKzhfanYdeYiWwBvOOHc0dmUftI62Gr3Hw0vCAUdu24XQEEwu4
         s8gYe0pA5eRZ+fwcdw5V3tTTdH0V5bKL1PTZQoqxMxzh3CRUg7joGV773t/8C/HzVNnB
         AV509CmYqoHDxm54Pf5YuTMMEr4I6pOtsEVK9grmZeMpsQ0e3HGT7yDrtisIwgLen6bh
         12JQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793795134; x=1794399934;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=xqUmeipCfeknZSMsGou+n7GuJVTBeNa3ADvT/lOjSdI=;
        b=DRlYj5NKH3lfLyzNPrWLwdya5po77kbaJGwUs3DSYK1XNAqGyZltcRl0t+864/k0xm
         mBJjpQLRYcdEC4ysbBZe/YdVsAPxjCJdr/A4iPUJvtojs7VNLVuBafAwWxtt6YrADa8m
         dSnmBw7jPvjzsqso9N0DV3jFLpiZXxyK9NEWjkHKm6fqsA1yd1in916mkK0QpgMx4Te+
         stG0/rqSAa/Z/ByDLnr+utCwvYK1Yr+t4QKbQIj50Hz7McBY+o0bCwvdM0YHxkvKJ5mI
         pGOU8i63G0oZWdUkv4swGn202hts7viACbn5bR/3G6EuijDhu3tABtzz9JjfoKmSadfm
         qLdA==
X-Gm-Message-State: APuU4Z96YonmrWAL95DL3UDoHRlaOK67eJKRQHcimzJh3tN8W5f4Qp1G
	8bi2xlAJNGqbsatCzO1yGCdmJEP/mQDc6I/qyNzWOtGIWjozep0JM6Uy
X-Gm-Gg: AYBFou30ZCh++45Al1mpPm40AFOpZN4DPNim/cu9p6duvCJacQpkE0TE3wq75oBgu3q
	+q6dXAfT2lSvKiCOiqnlLqiONUKv6ezsZhAV7Cn5R9pe+KuQBDokExSH3PCPAMc26K47+uKdOWI
	2Kfl0iuo+v1Aw2xgUXtKt38S0ey8z69XTvsUM2+XXXbldjts3rlLAVs8J6pY787v1+gDh6B1i/G
	hlMFO/+jNqFCTAI/zHTmYtH+EeFqhPg7HO6c4Me6tdlg0KxCyWAt1WuzhNna2iQ3abLe4us5UB7
	/eSYW3L4+W5iexrlNH/hlWt9J2wITBJvkrmiu27MpDCfec4SILf2ppOWkPy3w4aDnvTy0t34Wu0
	9qWiPxT7J6pJdNWAVsW8mvJ5+x63R0v0jSmSBHmR6c/cY2xwKSC+H1bpWDv89EXz7S67juBubMe
	FQolt69ZuvJXn+7efpaIZOPj+IputwO2twpfIFcK7JszopxWloKe5DJnVIm0UGehykoKFVFtZmu
	GKgRM3DDupOdumEGLHEh/nqCdjqrBJAqPdFjewulHFqESYs4rLNsl52L/lYIX4DH3goXy4VC7fR
	nZy1ecaMzfZHd+UBEEFgaXEFWvaE4Ku5wrwew/pja1p89aiL4yWgzukmkPHtlbpqGq0HaUK5byX
	p5s4=
X-Received: by 2002:a05:600c:3ba5:b0:4a2:a6e:80f5 with SMTP id 5b1f17b1804b1-4ac16fa356cmr436637405e9.11.1793795133837;
        Wed, 04 Nov 2026 04:25:33 -0800 (PST)
Message-ID: <18863ff2-0e9b-4ca4-bbbb-8859cae824ea@gmail.com>
Date: Wed, 4 Nov 2026 13:25:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/39] xen/riscv: add guest memory read helper
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <c77408157f7674ad2ffc775d1267470b724fdecf.1790779209.git.oleksii.kurochko@gmail.com>
 <1792594596.8631fc262581453bbf619ec5b2062170.1a15ef6d2f2000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792594596.8631fc262581453bbf619ec5b2062170.1a15ef6d2f2000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793795134-C1CD7B50-EF35D404/10/73395122804
X-purgate-type: spam
X-purgate-size: 3743



On 10/21/26 4:56 PM, Baptiste Le Duc wrote:
>> [ ... 75 lines skipped ... ]
>> +/*
>> + * Read machine word from guest memory
>> + *
>> + * @guest_addr: Guest address to read
>> + * @read_insn: Flag representing whether we are reading instruction
>> + * @trap: Output pointer to trap details if something went wrong during read.
>> + *        It must be zero-initialised by the caller: it is written only when
>> + *        an access faults, so trap->scause == 0 on return is what tells the
>> + *        caller that the read succeeded.
>> + *
>> + * The hlv/hlvx instructions translate guest_addr through the live
>> + * vsatp/hgatp CSRs, so the read is only meaningful for the address
>> + * space of the currently running vCPU. It must therefore only be called
>> + * while handling a trap taken from that vCPU, never from a nested trap
>> + * taken in HS-mode, which may have interrupted Xen at a point where
>> + * hstatus, vsatp or hgatp don't belong to the vCPU.
>> + *
>> + * At most two halfwords are fetched when @read_insn is true, i.e. encodings
>> + * wider than 32 bits are not supported. Such an encoding cannot be completed
>> + * by calling this function again at @guest_addr + 4: the length check is
>> + * applied to the first halfword read, which would then be a continuation of
>> + * the instruction rather than its opcode. It is up to the caller to reject
>> + * anything that is neither a 16- nor a 32-bit encoding.
>> + */
> Shouldn't docstring belong to header file?

I don't know if we have such rule but I think that I will move this to 
header to be in sync with other functions in asm/traps.h.

But in the matter of taste it seems to me that having such explanation 
in C code is more useful as it at some point explains a code.

>> +unsigned long read_guest(unsigned long guest_addr, bool read_insn,
>> +                         struct trap_info *trap)
>> +{
>> +    /*
>> +     * Poison the result: if the very first access faults, the fixup skips
>> +     * over the loads without writing it. Callers must check trap->scause.
>> +     */
>> +    unsigned long val = ~0UL, tmp;
>> +
>> +    /*
>> +     * hlv/hlvx use hstatus.SPVP for the privilege of the access, and the
>> +     * live vsatp/hgatp for the translation. Xen never installs a value of
>> +     * its own in hstatus (it is only saved on trap entry and restored
>> +     * before sret) and it doesn't reschedule before returning to the
>> +     * guest, so all three still belong to the vCPU which trapped.
>> +     */
>> +    if ( read_insn )
>> +    {
>> +        asm volatile ( "\n"
>> +            "1: hlvx.hu %[val], (%[addr])\n"
>> +            ASM_EXTABLE_TRAP_INFO(1b, 3f, %[ti])
>> +            "   andi %[tmp], %[val], 3\n"
>> +            "   addi %[tmp], %[tmp], -3\n"
>> +            "   bnez %[tmp], 3f\n"
>> +            "   addi %[addr], %[addr], 2\n"
> Could you add a short comment explaining that the andi/addi/bnez sequence
> checks the low two bits of the first halfword to tell a compressed
> instruction from a 32-bit one? It is not obvious on first read.
> Something like:
> ```
>      /*
>       * bits[1:0] != 0b11: 16-bit (compressed) instruction, nothing more
>       * to read.
>       */
> ```
> 

I thought that the last paragraph of the comment above read_guest() 
explains it but I am okay to add the suggested small comment. I will put 
it immediately after ASM_EXTABLE:

             ASM_EXTABLE_TRAP_INFO(1b, 3f, %[ti])
             /*
              * bits[1:0] != 0b11: 16-bit (compressed) instruction, nothing
              * more to read.
              */
             "   andi %[tmp], %[val], 3\n"

Thanks!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 12:27:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 12:27:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471839.1679992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOa5F-0006fp-Kt; Wed, 04 Nov 2026 12:27:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471839.1679992; Wed, 04 Nov 2026 12:27:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOa5F-0006fi-Hz; Wed, 04 Nov 2026 12:27:17 +0000
Received: by outflank-mailman (input) for mailman id 1471839;
 Wed, 04 Nov 2026 12:27:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xOa5D-0006fZ-Iw
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:27:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOa5C-00095o-Vq
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:27:15 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeb249a-2eae-0a2a0a5409dd-0a2a450ba166-16
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:27:14 +0100
Received: from [52.101.84.86]
 (helo=DB3PR0202CU003.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aeb24a2-b7e8-0a2a450b0019-3465545691f9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:27:14 +0100
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com (2603:10a6:803:113::29)
 by DBAPR03MB6504.eurprd03.prod.outlook.com (2603:10a6:10:19e::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Wed, 4 Nov
 2026 12:27:11 +0000
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48]) by VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 12:27:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=nnuEC0YDdT7Moq7y9m4UNazTnrpDRDnHJycC1jm0evPhayd76YZQZbP0Jd6PimILTmZBP3MUa9uMRnaexL570oBcHEtvEC12sl+LKaGPtiIPBvcHsDLrx4ZhTZjsZIqJQ4/N1JqwFcMvg8vA9u86f0z+0YfwZ8+Acg76gOdBir2mfF8epZmcMABsQCM+HdQLc27c2wTLjv8nSB3RetnmFNfB4ET7nvnLJdJS3z/d8JRME69mp/LG4rkbPDGnTUJ07MyRzPqXEg4ox07J8AInbQBxGMjuDjVcj6RgR9ECyU5E6KBiN6nH21dmtyRV3ezFmJCYTqzIISxdWsLfmB0xOQ==
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=juGN/oCooC5P9O4uchrKQJizYx/SFLtbAbY+C8MYgoI=;
 b=GXABYuEtI8suVRYmN9kTFn+E8anawySro8PHKd2YS+PcBPQQ0rcHJjxRmNvV5/tdU3C1XQCR3bJBf7Ayh2nincdgUinySCCehuJS/OPv5JYVYCgy6Y+YiqyJglbzioBQWon13tyZz7HfgjPKyPOy6bqJkVIvFfltVCwrwIc4qW7zYCpQyGfE8yCqyyzMV6lrzzcEZJNn9huaawxk+xdFKUpHLnV1VUIL+6iCXVuC28bblVC5ROdWzlD8K3xQHMUMiMfKbADDkHgjsaaWGiC6LQ+xbvTAJEpmXqHOpjoadDWCJaNO/np0f2+kylHobTyvBQN/hXoMFBIiwo02kR72+g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=juGN/oCooC5P9O4uchrKQJizYx/SFLtbAbY+C8MYgoI=;
 b=pueWZrmiEv5m1YATPXVzmYHqiwb3txHY9O3RnyMd5jhjAqOQ3WgYhO0Z1tgujM80GEBia5sVqacq45cvOtZXB7JpA7k8/yemT7XHJI4OE7fdxG9XOck3llSvqZJnmbeBA1mRmQMjm9DpC/PWFET847foTzeOLmME8mOFOjlGR8dgV6n5dT8HdFP/shfF87o917bRypD5r2NfkkYNr6DS3mEPJnlOzSxegWQmHI1w4XV5oY7mCvPWFAaK5Suc0nCV41/1UOKxvHF64Eqa1Y/j1WSMgE9O+lzj0rgIAUxkRM3yO8TwPqNB28Xxl5OzrgOro/key1ljrkm20lMjSz4qhw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I58Jpp38R9BUi7o+T9Doedpg==
Date: Wed, 4 Nov 2026 12:27:11 +0000
Message-ID: <87pkwklr3f.fsf@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
	<04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
	<874idxmd91.fsf@epam.com>	<2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com>
In-Reply-To: <2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com> (Oleksii
	Moisieiev's message of "Wed, 4 Nov 2026 11:11:16 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: VE1PR03MB6078:EE_|DBAPR03MB6504:EE_
x-ms-office365-filtering-correlation-id: 41ac7ab2-2414-4e18-d544-08df3a6ef34d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|42112799006|376014|23010399003|7416014|366016|1800799024|6133799003|10067099003|18002099003|22082099003|3023799007|38070700021|56012099006|4143699003|11063799006|261022075727099003|261026140227099003|261022105027099003|261102123227099003|261028144727099003|261026121527099003|261021121427099003|261021135927099003|261009223027099003;
x-microsoft-antispam-message-info:
 K0wTxn5tknbpC3fY/+TVwU4oeA7Qxkyrjzxw738y6RsCh4lKBOtE2CRQjw0oCqZ788UH4mCXXd/A3nGSZIDO25y5ehX5HOhcYnRJeJ137I322ir2ZPuoUTWUlU3oVJu8OdUpbYuSR+953Wo3qTYuw/gXInzp8MC6v8AE7/ECKGKTHu+hXsCTwmi8zmncyriylS1w1sgiBgu/0FX7l9DmdXaPO6B/BPAccCeG1dTo6AVMdg4P7/usgnjvvLSeTuxrQ/sZr+w7mD/JYM5cPlWKwAQUxFHXQKURLj1DDx2TSllbBXxnIBWFETvLBq79sB5ebV7L2N4Mrf+Hr3ySguI8GRucjN1fMD84A6OPvvcJ41OFuaU2sNVW1e3cjPdiLHPVzhNu7nMAK9T94VpW/o6/A7DC1FaRJ8ZxTJ3eexHESztF6DMlzPu82IRAFtUYJ39LhW4wGcFVTXqPQID89wSb0mKDJNij8EzQGvbzMydWK0eMKxuc2M41/2jagXPeOiddBVVCtlEuHG9OGnowpNenECWYMD+OB9WhjneOt8oX7Ivn/SKayOLMQRF+7iry0LkoMNwy6qCNaFpRNXiQtXncq1STfQJk8KvEybItUamJp2vlHz4nMRaNlAm2JtBYh565UwLnj8jkn3P4sGEpSf7fvTdvxu0auMz7JfN3vpQVESil8OrxoGdzvRkcOv8bFba3
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR03MB6078.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(42112799006)(376014)(23010399003)(7416014)(366016)(1800799024)(6133799003)(10067099003)(18002099003)(22082099003)(3023799007)(38070700021)(56012099006)(4143699003)(11063799006)(261022075727099003)(261026140227099003)(261022105027099003)(261102123227099003)(261028144727099003)(261026121527099003)(261021121427099003)(261021135927099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Q0FSeXBnWVV1dlpBTW0ycHhXaGJBS0loMHFMbVVtUWdSTDZCRml4MWJFQlFW?=
 =?utf-8?B?QzFpOWsvUEdNR3FXOVBnZGR3U1ZzMDJQMnJNYkg0Vm5vSndpem1kYnFKdDZJ?=
 =?utf-8?B?c3h5VEwyWlBBQnhjSHJwb0wxaS9veVNkTGI4cTZCQ0lzZkk1Vjlhd3VSVDZa?=
 =?utf-8?B?WHgwandZdXBMZE42d1pnNVVXYnFmcmVTNWF2SmV3WGZveHlFY0gvWDd6MHpK?=
 =?utf-8?B?M2RyZlRXUEMxeDkvTEdaWEJES1FJU3E1eS9Xa21pTWh6ZmhiQkFYeUprRWF4?=
 =?utf-8?B?RXV0aW5kWjB1Z3ZqeGJCZE9QMEtrNlNkR1ZRczFFZERGaldvVDl5MTFYRTRs?=
 =?utf-8?B?RW9sMTQrajl4VXpMWVR5VGR1dzJVU2xZbVRKVmJLNGlRY1VkSG5abGZ0WXVn?=
 =?utf-8?B?ZWlyTzhYZFdqZGVqdUMzcmJMZ1F6aHBsSXBwZFVRSG5uYXlvZ1pCeTc1VFJ3?=
 =?utf-8?B?V1JHa0ZNTTJvOHZmN25YNHRvbzhDbnhkdmtRMGdyL2RXK3czQ20xYTd6RWxO?=
 =?utf-8?B?WG1POHJWakpEdkIxSXcxS2hyZEwraHlyMkM4MnpnbkRkTFJkd1VHWFI5V3Jo?=
 =?utf-8?B?NjNjeXUxWHl3TER2MC9YdTZveFpDeHUyR2duZ29EdmpDMG1EZmlxSXlQUmls?=
 =?utf-8?B?UnloY0hUaE1hdWZJV3JsekpNSSs5NTNBY1JWUHNkRXRxemZIZ0wrNEN1b1ls?=
 =?utf-8?B?N1p4RkI3SktIekd2RnEzK2ZXNjgvSnBCMTYzK3dpZCtORjFaSFpNMEhQaXhu?=
 =?utf-8?B?MmxFZEh5Tm5jb2JvcmR2MUwwbUQ5TnJxTjBwUDVNOE1ubDdDZ1crVVJLSzFn?=
 =?utf-8?B?NGc5QzlXNmhSV2FmSE15NG8zTDJ6dnB1T2FyUmMxL1pPN2pQODQrMnV5cnlQ?=
 =?utf-8?B?enBtdHV0NGwweHphOXMzZEU2TlhlT2NFMlpOcGFoWmpQOGxXa2krN3lILzhk?=
 =?utf-8?B?eEJ0VnRuRE52ZTg0NVptOThnakphOHE3aGI2Vk0wM0J5ZnljMzZ6WHo0YnlV?=
 =?utf-8?B?UTNTR2wrTnNQUzVkMnlUWFZINjFCcExVOTlPUGZadFZxS2ZhcDlqRjJjVEl5?=
 =?utf-8?B?dlQxVG9Na2ZzYWlvK2FNZFJrZmZQdDNNSVR1WFU4bWVLQWcweVJNRFhBZUFr?=
 =?utf-8?B?M3pRVjdydVdzOGNPNkFzQWJWbTJqYUp5bzdrNUFsdjIwTTIzelQyVm55aHBv?=
 =?utf-8?B?cUpMckN3K05rY0pBeENYRGs3ZTVNWWkyZlpnYXUxTklVVjhIMGRTVEdtUHpC?=
 =?utf-8?B?cUh6SWJXVUJzTWhUM1REWTQ4SXJCUVEwVW1lNkFVc0RnaGNaZHpuSWhSRUh4?=
 =?utf-8?B?TEh6alp3RllQdzIyanRYOE41NGMwbXRTdVRtOEhjcmhEaS8rT1AxQ2s3Nmtz?=
 =?utf-8?B?NWEvTTczbS9WNWdZTk9TczZwdlh0TU40cUFNa3VncTYvZHN2QnNMSUgyNWU1?=
 =?utf-8?B?VVFsZWtkcGQxZ2FwTS9pRjVOSlpMeVNmVTVlSjhVREJYUGM1TVZnQVdHRXkw?=
 =?utf-8?B?UXhWd0wvUTUrYXZuRjNGSkYzV3JrR1FIODdZZTNlWWhjUGVYdjZYRFRSR2hT?=
 =?utf-8?B?dmd6bCtRMVVxQmdqaGlpOXcxdUpObTc4YlBqMzI2bGhnVTNpemVyMnhGZjNl?=
 =?utf-8?B?aEZUbUNFKzhacFZvYmczTCtkaFE1Z2F1TnRxWmxEMmtkQmpYNm5yY2xCOThL?=
 =?utf-8?B?d0pZakNYZDU3TkJwZjRCYnllejZXZXJ3V0dXUHU3RlUySUMvY3FSN052UlJv?=
 =?utf-8?B?VndyYWs5RGNUN0NUWmRiVDVac1gxdWRIVXZ5Sjd3SUhwT0lxWEVPV3FUUFNm?=
 =?utf-8?B?c29KZ1hLNS9PYjRCMU1FaE10MHVoTkduZFl1M0lsUHY0cHdGbm8yYlBKbncw?=
 =?utf-8?B?UWp4Z3VGVUVwc3lKcGZEK1ZWTDRvczArcGRHbUd1OU1sdk5GaGdlbU9ZM2Fi?=
 =?utf-8?B?TktTbTRyZ1hzQ3puZHdLNG1VVlEwRHY0anlsRnBwY0o4bzhOTVFxUTNYYmxm?=
 =?utf-8?B?b1hWTjFsUkV5SGhsOUVyL0ZhS1E3eGQ0TnI2QVZrMGRldllGekhFRVk5OGxZ?=
 =?utf-8?B?WDNhRzVyOEZZbTNNT01LejRUbUJiUHJxcGZ3YVVMRkRVUzkxdzhScEUwRkFs?=
 =?utf-8?B?bURBMWN2RlN4ODZPYWZtMFh6WDI5SEdxTWtUUVBJd3NZMGFnQVRlbWxjOUZH?=
 =?utf-8?B?dWhtTDRpb1NsWXM4VW1wa2tid0ZMZXFhKzRwdmlXK2lqdXBSSEVjQzlBNzM2?=
 =?utf-8?B?Z01BVUw4alBndDQrS0JUTzRDTzJtZlhUQ3kzcERGclhjOTltbmMzT293Mldl?=
 =?utf-8?B?UHp5K1BUcWVjZGY2SC95b3IyQ3NKQ2FDSUlzaDFZeTFWRkxBdFQxUWxFMVJp?=
 =?utf-8?Q?L2tlU8OT2Y57/mwU=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <40D6584997AC994A9CEB362A37BDA50F@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: VE1PR03MB6078.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 41ac7ab2-2414-4e18-d544-08df3a6ef34d
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 12:27:11.2643
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Q4iCblwS7eh8Ikh6RcLrJG0HAgxwjMzrZ0kWZ0xAe50cVTllor3fetlHCYR62UUTDlcz+9UXrFcun5l6jz+1M2f9zM2iiPtz1vivyCcE7Ac=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR03MB6504
X-purgate-ID: tlsNG-42698a/1793795234-2C59A9EA-8FA6830B/0/0
X-purgate-type: clean
X-purgate-size: 15990

SGkgT2xla3NpaSwNCg0KT2xla3NpaSBNb2lzaWVpZXYgPE9sZWtzaWlfTW9pc2llaWV2QGVwYW0u
Y29tPiB3cml0ZXM6DQoNCj4gSGkgVm9sb2R5bXlyLA0KPg0KPiBUaGFuayB5b3UgZm9yIHRoZSBy
ZXZpZXcuIHBsZWFzZSBzZWUgYmVsb3c6DQo+DQo+IE9uIDA0LzExLzIwMjYgMDY6MjgsIFZvbG9k
eW15ciBCYWJjaHVrIHdyb3RlOg0KPj4gSGksDQo+Pg0KPj4NCj4+IEknbSBzb3JyeSwgSSBwb3N0
cG9uZWQgZG9jdW1lbnRhdGlvbiByZXZpZXcgdGlsbCB3ZSBmaW5pc2hlZCB3aXRoIGNvZGUNCj4+
IHBhcnQuIFRoaXMgd2FzIG15IG1pc3Rha2UuIEkgZGlkbid0IGV4cGVjdGVkIHRoYXQgaXQgcmVx
dWlyZSBzZXJpb3VzDQo+PiBwcm9vZnJlYWRpbmcuIEFueXdheSwgSSB0cmllZCB0byBoaWdobGln
aHQgbW9zdCBnbGFyaW5nIG1pc3Rha2VzLCBidXQgaXQNCj4+IHdvdWxkIGJlIGdyZWF0IGlmIHlv
dSBwcm9vZnJlYWQgaXQgYnkgeW91cnNlbGYgb25jZSBhZ2Fpbi4NCj4+DQo+PiBPbGVrc2lpIE1v
aXNpZWlldiA8T2xla3NpaV9Nb2lzaWVpZXZAZXBhbS5jb20+IHdyaXRlczoNCj4+DQo+Pj4gRnJv
bTogR3J5Z29yaWkgU3RyYXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KPj4+DQo+
Pj4gQWRkIFNDSSBTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgZG9jdW1lbnRhdGlvbi4NCj4+
PiBJdCBpbmNsdWRlcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBTQ01JIG11bHRpLWFn
ZW50IGRyaXZlci4NCj4+PiBUaGlzIGRvY3VtZW50IGV4cGxhaW5zIHRoZSBkcml2ZXIncyBmdW5j
dGlvbmFsaXR5LCBjb25maWd1cmF0aW9uLA0KPj4+IGFuZCB0aGUgY29tcGlsYXRpb24gcHJvY2Vz
cy4gVGhlIFhlbiBTQ01JIG11bHRpLWFnZW50IGRyaXZlciBpcw0KPj4+IGRlc2lnbmVkIHRvIHBy
b3ZpZGUgU0NNSSBhY2Nlc3MgdG8gc3lzdGVtIHJlc291cmNlcyBmcm9tIGRpZmZlcmVudA0KPj4+
IGRvbWFpbnMuDQo+Pj4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBHcnlnb3JpaSBTdHJhc2hrbyA8Z3J5
Z29yaWlfc3RyYXNoa29AZXBhbS5jb20+DQo+Pj4gU2lnbmVkLW9mZi1ieTogT2xla3NpaSBNb2lz
aWVpZXYgPG9sZWtzaWlfbW9pc2llaWV2QGVwYW0uY29tPg0KPj4+IC0tLQ0KPj4+DQo+Pj4gKG5v
IGNoYW5nZXMgc2luY2UgdjE0KQ0KPj4+DQo+Pj4gQ2hhbmdlcyBpbiB2MTQ6DQo+Pj4gLSBkZXNj
cmliZSBzZWNvbmRhcnkgYWdlbnRzIGFzIHhlbixzY21pLWFnZW50IG5vZGVzIHVuZGVyIGFnZW50
cw0KPj4+IC0gdXBkYXRlIGhvc3QsIGRpc2NvdmVyeSBhbmQgZG9tMGxlc3MgZXhhbXBsZXMgZm9y
IHRoZSBjaGlsZC1ub2RlIGZvcm1hdA0KPj4+IC0gY2xhcmlmeSBzaGFyZWQtbWVtb3J5IHBsYWNl
bWVudCBhbmQgcGxhdGZvcm0gUkFNIHJlc2VydmF0aW9ucw0KPj4+DQo+Pj4gQ2hhbmdlcyBpbiB2
MTA6DQo+Pj4gLSByZXBocmFzZSBzZWN0aW9uIGFib3V0IC9maXJtd2FyZS9zY21pLiBNZW50aW9u
ZWQgdGhhdCB0aGlzIG5vZGUgaXMNCj4+PiB0YWtlbiBmcm9tIEhvc3QgRFQgYW5kIGNvcGllZCB1
bm1vZGlmaWVkLg0KPj4+IC0gZml4IHhlbixyZWcgYWRkcmVzcyBmb3Igc2Vjb25kYXJ5IGRvbWFp
bnMgZm9yIERvbTBsZXNzIGNvbmZpZ3VyYXRpb24NCj4+Pg0KPj4+IENoYW5nZXMgaW4gdjg6DQo+
Pj4gLSB1cGRhdGUgZG9jdW1lbnRhdGlvbiB0byBtYXRjaCB0aGUgbGFzdCBEVCBmb3JtYXQNCj4+
PiAtIGZpeGVkIFJTVDogIi4uLiBjb2RlLWJsb2NrOjogZHRzIiAtPiAiLi4gY29kZS1ibG9jazo6
IGR0cyINCj4+PiAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggZG9tMGxlc3MgY29uZmlndXJh
dGlvbiBleGFtcGxlDQo+Pj4gLSB1cGRhdGUgZG9jdW1lbnRhdGlvbiB3aXRoIG5ldyBwYXJhbSB4
ZW4sZG9tMC1zY2ktYWdlbnQtaWQNCj4+PiBpbnN0ZWFkIG9mIHRoZSBjb21tYW5kIGxpbmUgcGFy
YW1ldGVyDQo+Pj4NCj4+PiBDaGFuZ2VzIGluIHY3Og0KPj4+IC0gdXBkYXRlIGRvY3VtZW50YXRp
b24gaW4gc2VjdGlvbiBvZiB0aGUgeGVuX3NjbWkgY29uZmlndXJhdGlvbiB3aGljaA0KPj4+IGlz
IG1hdGNoZWQgYnkgInhlbixzY2kiIGNvbXBhdGlibGUgaW5zdGVhZCBvZiB0aGUgZGlyZWN0IHBh
dGguDQo+Pj4NCj4+PiBDaGFuZ2VzIGluIHY2Og0KPj4+IC0gcmVtb3ZlIGFsbCBIVkMgbWVudGlv
bnMgZnJvbSB0aGUgbXVsdGktYWdlbnQgZG9jDQo+Pj4gLSB1cGRhdGUgc2NpLWFnZW50LWlkIHBh
cmFtZXRlciBkZXNjcmlwdGlvbiBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KPj4+IC0gYWRkIG1pc3Np
bmcgU2lnbi1vZg0KPj4+IC0gbWlub3IgZml4ZXMgYWNyb3NzIHRoZSBkb2N1bWVudA0KPj4+DQo+
Pj4gQ2hhbmdlcyBpbiB2NToNCj4+PiAtIHJld29yayBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gbGVh
dmUgSG9zdCBEZXZpY2UtdHJlZSB1bm1vZGlmaWVkDQo+Pj4NCj4+PiAgIC4uLi9hcm0vZmlybXdh
cmUvYXJtLXNjbWkucnN0ICAgICAgICAgICAgICAgICB8IDQwNSArKysrKysrKysrKysrKysrKysN
Cj4+PiAgIDEgZmlsZSBjaGFuZ2VkLCA0MDUgaW5zZXJ0aW9ucygrKQ0KPj4+DQo+Pj4gZGlmZiAt
LWdpdCBhL2RvY3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0IGIv
ZG9jcy9oeXBlcnZpc29yLWd1aWRlL2FybS9maXJtd2FyZS9hcm0tc2NtaS5yc3QNCj4+PiBpbmRl
eCBkOTY5OGY0ZTRiLi4yNTQ1OWQyMmRjIDEwMDY0NA0KPj4+IC0tLSBhL2RvY3MvaHlwZXJ2aXNv
ci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0DQo+Pj4gKysrIGIvZG9jcy9oeXBlcnZp
c29yLWd1aWRlL2FybS9maXJtd2FyZS9hcm0tc2NtaS5yc3QNCj4+PiBAQCAtMzYsNiArMzYsOCBA
QCBUaGUgYmVsb3cgc2VjdGlvbnMgZGVzY3JpYmUgU0NNSSBzdXBwb3J0IG9wdGlvbnMgYXZhaWxh
YmxlIGZvciBYZW4uDQo+Pj4NCj4+PiAgIHwgWzFdIGBBcm0gU0NNSQ0KPj4+ICAgfCA8aHR0cHM6
Ly9kZXZlbG9wZXIuYXJtLmNvbS9kb2N1bWVudGF0aW9uL2RlbjAwNTYvbGF0ZXN0Lz5gXw0KPj4+
ICAgfCBbMl0gYFN5c3RlbSBDb250cm9sIGFuZCBNYW5hZ2VtZW50IEludGVyZmFjZSAoU0NNSSkg
YmluZGluZ3MNCj4+PiAgIHwgPGh0dHBzOi8vd2ViLmdpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu
dXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9Eb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvZmlybXdhcmUvYXJtLHNjbWkueWFtbD5gXw0KPj4+ICt8IFszXSBgR2Vu
ZXJpYyBEb21haW4gQWNjZXNzIENvbnRyb2xsZXJzIGJpbmRpbmdzIDxodHRwczovL3dlYi5naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3Ry
ZWUvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FjY2Vzcy1jb250cm9sbGVycy9h
Y2Nlc3MtY29udHJvbGxlcnMueWFtbD5gXw0KPj4+ICsNCj4+Pg0KPj4+ICAgU2ltcGxlIFNDTUkg
b3ZlciBTTUMgY2FsbHMgZm9yd2FyZGluZyBkcml2ZXIgKEVMMykNCj4+PiAgIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+IEBAIC0xODks
MyArMTkxLDQwNiBAQCBleGNlcHQgZXhwbGljaXRseSBlbmFibGluZyBTQ01JIHdpdGggImFybV9z
Y2kiIHhsLmNmZyBvcHRpb24uDQo+Pj4gICAgICAgLT4gICAgICAgIHhlbixyZWcgPSA8MHgwIDB4
NDdmZjAwMDAgMHgwIDB4MTAwMCAweDAgMHgyMjAwMTAwMD47DQo+Pj4gICAgICAgLT4gICAgICAg
IHhlbixmb3JjZS1hc3NpZ24td2l0aG91dC1pb21tdTsNCj4+PiAgICAgICAgIH07DQo+Pj4gKw0K
Pj4+ICtTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgKEVMMykNCj4+PiArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+ICsNCj4+PiArVGhlIFNDTUkgU01DIG11bHRp
LWFnZW50IGRyaXZlciBlbmFibGVzIHN1cHBvcnQgZm9yIEFSTSBFTDMgVHJ1c3RlZCBGaXJtd2Fy
ZS1BIChURi1BKSB3aGljaA0KPj4+ICtwcm92aWRlcyBTQ01JIGludGVyZmFjZSB3aXRoIG11bHRp
LWFnZW50IHN1cHBvcnQsIGFzIHNob3duIGJlbG93Lg0KPj4+ICsNCj4+PiArOjoNCj4+PiArDQo+
Pj4gKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4+
PiArICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4+
ICsgICAgICB8IEVMMyBURi1BIFNDTUkgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+Pj4g
KyAgICAgICstLS0tLS0tKy0tKy0tLS0tLS0rLS0rLS0tLS0tLSstLSstLS0tLS0tKysNCj4+PiAr
ICAgICAgfHNobWVtMSB8ICB8c2htZW0wIHwgIHxzaG1lbTIgfCAgfHNobWVtWCB8DQo+Pj4gKyAg
ICAgICstLS0tLSstKyAgKy0tLSstLS0rICArLS0rLS0tLSsgICstLS0rLS0tKw0KPj4+ICsgICAg
c21jLWlkMSB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4+ICsgICAgYWdlbnQx
ICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4+ICsgICAgICArLS0tLS12LS0t
LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0rDQo+Pj4gKyAgICAgIHwgICAgICAgICAg
ICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgIHwNCj4+IFhlbiwgSSBiZWxpZXZlPw0KPg0K
PiBJdCBpcy4gQnV0IGluIHRlcm1zIG9mIFNDTUkgdGhpcyBpcyBwcml2aWxlZ2VkIGFnZW50LiBI
YXZlbid0IG1lbnRpb25lZA0KPiBYZW4gaGVyZSBmb3IgdGhlIHNha2Ugb2YNCj4NCj4gZGlhZ3Jh
bSBzaW1wbGljaXR5IChqdXN0IGRvbid0IHNlZSBhIGdvb2QgcGxhY2Ugd2hyZSBJIGNhbiBwbGFj
ZSAiWGVuIg0KPiBpbiB0aGlzIGRpYWdyYW0uIFRoZSBtYWluIGlkZWEgaXMNCg0KSSB0aGluayB5
b3UgY2FuIHBsYWNlICJYZW4iIGluIHRoZSBjZW50cmUuIFRoZXJlIGlzIGZyZWUgc3BhY2UgZm9y
IGl0IGZpdC4NCkp1c3QgYWRkIGEgbmV3IGxpbmUsIHNvIGl0IGlzIG5pY2UgYW5kIGNlbnRlcmVk
LCBsaWtlIHRoaXM6DQoNCisgICAgICB8ICAgICAgICAgICAgICB8ICAgWGVuICAgfCAgICAgICAg
ICAgfCAgICB8DQoNCj4NCj4gdGhhdCBkcml2ZXIgbGVhdmVzIHNjbWkgcHJpdmlsZWdlZCBhZ2Vu
dCBmb3IgaXRzZWxmIChhZ2VudDEgaW4gb3VyIGNhc2UpDQo+IHJlZ2FyZGxlc3Mgd2hlcmUgdGhp
cyBkcml2ZXIgcnVucy4NCj4NCj4gVGhpcyBmb3JtYXQgd2FzIHRha2VuIHNpbmNlIGRyaXZlciBp
dHNlbGYgaXMgYXZhcmUgYWJvdXQgdGhlIGRvbWFpbnMgYW5kDQo+IGNoYW5uZWxzLg0KPg0KPj4+
ICsgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICB8DQo+Pj4g
KyAgICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCj4+PiAr
ICAgICAgICAgICAgIHNtYy1pZDAgfCAgc21jLWlkMnwgICAgc21jLWlkWHwNCj4+PiArICAgICAg
ICAgICAgIGFnZW50MCAgfCAgYWdlbnQyIHwgICAgYWdlbnRYIHwNCj4+PiArICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCj4+PiArICAgICAgICAgICAgICAgICst
LS0tdi0tLSsgICstLXYtLS0tLSsgICstLXYtLS0tLSsNCj4+PiArICAgICAgICAgICAgICAgIHwg
ICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+PiArICAgICAgICAgICAgICAgIHwg
RG9tMCAgIHwgIHwgRG9tMSAgIHwgIHwgRG9tWCAgIHwNCj4+PiArICAgICAgICAgICAgICAgIHwg
ICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+PiArICAgICAgICAgICAgICAgIHwg
ICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+PiArICAgICAgICAgICAgICAgICst
LS0tLS0tLSsgICstLS0tLS0tLSsgICstLS0tLS0tLSsNCj4+PiArDQo+Pj4gK1RoZSBFTDMgU0NN
SSBtdWx0aS1hZ2VudCBmaXJtd2FyZSBpcyBleHBlY3RlZCB0byBwcm92aWRlIFNDTUkgU01DIHNo
YXJlZC1tZW1vcnkgdHJhbnNwb3J0DQo+Pj4gK2ZvciBldmVyeSBBZ2VudCBpbiB0aGUgc3lzdGVt
LiBUaGUgU0NNSSBBZ2VudCB0cmFuc3BvcnQgY2hhbm5lbCBkZWZpbmVkIGJ5IHBhaXI6DQo+Pj4g
Kw0KPj4+ICstIHNtYy1pZDogU01DIGZ1bmN0aW9uIGlkIHVzZWQgZm9yIERvb3JiZWxsDQo+Pj4g
Ky0gc2htZW06IHNoYXJlZCBtZW1vcnkgZm9yIG1lc3NhZ2VzIHRyYW5zZmVyLCAqKlhlbiBwYWdl
IGFsaWduZWQqKi4NCj4+PiArICBTaGFyZWQgbWVtb3J5IGlzIG1hcHBlZCB3aXRoIHRoZSBmb2xs
b3dpbmcgZmxhZ3M6IE1UX0RFVklDRV9uR25SRSBhbmQgX1BBR0VfREVWSUNFLCBpbmRpY2F0aW5n
IHRoYXQgdGhpcw0KPj4gRG8gd2UgaGF2ZSBhbnkgbGluZSBsZW5ndGggbGltaXRhdGlvbiBmb3Ig
LnJzdCBmaWxlcz8gVGhpcyBvbmUgaXMgMTE0DQo+PiBjaGFyYWN0ZXJzIGxvbmcuDQo+IHJzdGNo
ZWNrIGdpdmVzIDAgZXJyb3JzLCBidXQgSSBjYW4gcmVmb3JtYXQgaXQgd2l0aCBtYXhsaW5lIDEy
MC4NCj4+PiArICBtZW1vcnkgaXMgbWFwcGVkIGFzIGRldmljZSBtZW1vcnkuDQo+Pj4gKw0KPj4+
ICtUaGUgZm9sbG93aW5nIFNDTUkgQWdlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBkZWZpbmVkIGJ5
IFNDTUkgRlcgdG8gZW5hYmxlIFNDTUkgbXVsdGktYWdlbnQgZnVuY3Rpb25hbGl0eQ0KPj4+ICt1
bmRlciBYZW46DQo+Pj4gKy0NCj4+PiArLSBYZW4gbWFuYWdlbWVudCBhZ2VudDogdHJ1c3RlZCBh
Z2VudHMgdGhhdCBhY2Nlc3NlcyB0byB0aGUgQmFzZSBQcm90b2NvbCBjb21tYW5kcyB0byBjb25m
aWd1cmUNCj4+ICJ0cnVzdGVkIGFnZW50Iiwgbm90ICJhZ2VudHMiDQo+Pg0KPj4gYWxzbywgInRo
YXQgYWNjZXNzZXMgdGhlIEJhc2UgUHJvdG9jb2wgY29tbWFuZHMgdG8gY29uZmlndXJlLi4uIiBv
ciAidGhhdCBoYXMNCj4+IGFjY2VzcyB0byB0aGUgQmFzZSBQcm90b2NvbCBjb21tYW5kcyB0byBj
b25maWd1cmUuLi4iDQo+Pg0KPj4+ICsgIGFnZW50IHNwZWNpZmljIHBlcm1pc3Npb25zDQo+PiAi
YWdlbnQtc3BlY2lmaWMiDQo+Pg0KPj4+ICstIE9TUE0gVk0gYWdlbnRzOiBub24tdHJ1c3RlZCBh
Z2VudCwgb25lIGZvciBlYWNoIEd1ZXN0IGRvbWFpbiB3aGljaCBpcyAgYWxsb3dlZCBkaXJlY3Qg
SFcgYWNjZXNzLg0KPj4gIm5vbi10cnVzdGVkIGFnZW50cyIuIEFsc28sIGRvdWJsZSBzcGFjZSBi
ZXR3ZWVuICJpcyIgYW5kICJhbGxvd2VkIg0KPj4NCj4+PiArICBBdCBsZWFzdCBvbmUgT1NQTSBW
TSBhZ2VudCBoYXMgdG8gYmUgcHJvdmlkZWQgYnkgRlcgaWYgSFcgaXMgaGFuZGxlZCBvbmx5IGJ5
IERvbTAgb3IgRHJpdmVyIERvbWFpbi4NCj4+ICJIYXJkd2FyZSBEb21haW4iLCBwcm9iYWJseQ0K
Pj4NCj4+PiArDQo+Pj4gK1RoZSBFTDMgU0NNSSBGVyBpcyBleHBlY3RlZCB0byBpbXBsZW1lbnQg
Zm9sbG93aW5nIEJhc2UgcHJvdG9jb2wgbWVzc2FnZXM6DQo+Pj4gKw0KPj4+ICstIEJBU0VfRElT
Q09WRVJfQUdFTlQgKHJlcXVpcmVkIGZvciBYZW47IHJlcXVpcmVkIGZvciBzZWNvbmRhcnkgYWdl
bnRzIHdpdGhvdXQgYGByZWdgYCkNCj4+PiArLSBCQVNFX1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJ
T04gKG9wdGlvbmFsKQ0KPj4gSG93IFhlbiBjYW4gZ3VhcmFudGVlIHRoYXQgU0NNSSBzdGF0ZSBp
cyBzYW5lLCBpZiBpdCBjYW4ndCByZXNldCBhZ2VudA0KPj4gZHVyaW5nIGRvbWFpbiBkZXN0cnVj
dGlvbj8NCj4NCj4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgU0NQ
IGZpcm13YXJlLCBidXQgdGhlIGZpcm13YXJlDQo+IHByb3ZpZGVzIGFnZW50X251bSA+IDEsIHRo
ZW4gaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBTQ1ANCj4gZmlybXdhcmUuIFdlIG1h
ZGUgdGhpcyBvcHRpb25hbCB0byBjb3ZlciBleGFjdGx5IHRoaXMgY2FzZSDigJQgd2hlcmUgd2UN
Cj4gZG9uJ3QgaGF2ZSBSRVNFVF9BR0VOVF9DT05GSUdVUkFUSU9OIGJ1dCBzdGlsbCBoYXZlIGFn
ZW50X251bSA+IDEsIHdoaWNoDQo+IGNvdWxkIGJlIGFwcGxpY2FibGUgdG8gYSBkb20wbGVzcyBj
b25maWd1cmF0aW9uIChmb3IgZXhhbXBsZSkgYW5kIHNob3VsZA0KPiBiZSB1c2VkIGNhcmVmdWxs
eSBieSBkZXZlbG9wZXJzLg0KDQpPa2F5LCBJIHNlZS4uLiBPbiBvbmUgaGFuZCBpdCBpcyBub3Qg
d29yc2UgdGhhbiB0aGUgY3VycmVudCBzdGF0ZSBvZg0KYWZmYWlycywgd2hlbiB3ZSBqdXN0IGRl
c3Ryb3lpbmcgYSBkb21haW4gYW5kIGxlYXZpbmcgaXRzIGRldmljZXMgaW4NCnVuZGV0ZXJtaW5l
ZCBzdGF0ZS4gT24gb3RoZXIgaGFuZCwgU0NNSSBpcyBtZWFudCB0byByZXNvbHZlIHRoaXMNCnBh
cnRpY3VsYXIgcHJvYmxlbSwgc28gaXQgd2lsbCBiZSBzdHJhbmdlIHRvIGhhdmUgU0NNSSBidXQg
bm90IHRvIGhhdmUNCnRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBNYXliZSBpdCBpcyB3b3J0aCB0
byB3cml0ZSBhIGh1Z2Ugd2FybmluZyBpZiBhDQpTQ01JLWVuYWJsZWQgZG9tYWluIGlzIGRlc3Ry
b3llZCwgYnV0IHdlIGNhbid0IGNhbGwgUkVTRVQgZm9yIGl0Pw0KDQpMb29rcyBsaWtlIEkgb3Zl
cmxvb2tlZCB0aGlzIGNhc2Ugd2hlbiByZXZpZXdlZCAieGVuL2FybTogc2NtaToNCiBpbnRyb2R1
Y2UgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciINCg0KPg0KPg0KPj4NCj4+PiArLSBC
QVNFX1NFVF9ERVZJQ0VfUEVSTUlTU0lPTlMgKG9wdGlvbmFsKQ0KPj4gSWYgdGhpcyBpcyBvcHRp
b25hbCwgZG9lcyBpdCBtZWFuIHRoYXQgZWFjaCBhZ2VudCB3aWxsIGhhdmUgYWNjZXNzIHRvDQo+
PiBhbGwgZGV2aWNlcyBpbiB0aGUgc3lzdGVtPw0KPg0KPiBQcm9iYWJseS4gQnV0IHRoYXQgZG9l
c24ndCBtZWFuIGl0J3MgdGhlIG9ubHkgY2FzZS4gRm9yIGV4YW1wbGUsIGENCj4gcmVzb3VyY2Ug
Y291bGQgYmUgYWNxdWlyZWQgb24gZmlyc3QgYWNjZXNzIChub3QgYSByZWFsLXdvcmxkIGNhc2Us
IGJ1dA0KPiBpdCdzIHBvc3NpYmxlKS4gU28gd2UgY2FuJ3QgbWFrZSB0aGlzIGRlY2lzaW9uIG9u
IGJlaGFsZiBvZiB0aGUgU0NQDQo+IGZpcm13YXJlLg0KDQpBZ2FpbiwgdGhpcyBtaWdodCBiZSBu
b3Qgd2hhdCB1c2VyIHdhbnRzIG9yIGV4cGVjdHMuIEFuZCBpdCBpcyBldmVuDQp3b3JzZSB0aGVu
IHRoZSBwcmV2aW91cyBjYXNlLCBiZWNhdXNlIHdpdGhvdXQgU0NNSSBJIGFtIHN1cmUgdGhhdCBp
ZiBJDQpkaWRuJ3QgZ2F2ZSBhIGRvbWFpbiBhY2Nlc3MgdG8gYSBwZXJpcGhlcmFsLCB0aGVuIGl0
IGNhbid0IGFmZmVjdHMgaXRzDQpzdGF0ZS4gSWYgeW91IHJlYWxseSB3YW50IHRvIHN1cHBvcnQg
c3VjaCBjYXNlLCB0aGVuIHlvdSBzaG91bGQgZW5zdXJlDQp0aGF0IG9ubHkgSFdET00gY2FuIGFj
Y2VzcyBTQ01JIG9mIFNDUCBkb2VzIG5vdCBzdXBwb3J0DQpTRVRfREVWSUNFX1BFUk1JU1NJT05T
Lg0KDQoNClsuLi5dDQoNCg0KPj4+ICtDb25maWd1cmUgU0NNSSBmb3IgRG9tMA0KPj4gIkhvdyB0
byBjb25maWd1cmUuLi4iIG9yICJDb25maWd1cmluZy4uLiINCj4+DQo+Pj4gK15eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eDQo+Pj4gK1NldCB0aGUgRG9tMCBTQ01JIGFnZW50IElEIGluIHRoZSBkZXZp
Y2UgdHJlZSB1c2luZyB0aGUgWGVuIFNDTUkgY29udGFpbmVyIHVuZGVyIGBgL2Nob3NlbmBgLg0K
Pj4+ICtBZGQgYGB4ZW4sZG9tMC1zY2ktYWdlbnQtaWRgYCB0byB0aGUgYGB4ZW4sc2NpYGAgbm9k
ZS4gSWYgdGhlIHByb3BlcnR5IGlzIGFic2VudCwgU0NNSSBzdGF5cw0KPj4+ICtkaXNhYmxlZCBm
b3IgRG9tMCBhbmQgdGhlIFNDTUkgbm9kZXMgYXJlIHJlbW92ZWQgZnJvbSBEb20wIERULg0KPj4+
ICsNCj4+PiArLi4gY29kZS1ibG9jazo6IGR0cw0KPj4+ICsNCj4+PiArICBjaG9zZW4gew0KPj4+
ICsgICAgeGVuIHsNCj4+PiArICAgICAgcmFuZ2VzOw0KPj4+ICsgICAgICB4ZW5fc2NtaV9jb25m
aWcgew0KPj4+ICsgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLHNjaSI7DQo+Pj4gKyAgICAgICAg
eGVuLGRvbTAtc2NpLWFnZW50LWlkID0gPDA+OyAgLyogRG9tMCBhZ2VudCBJRCAqLw0KPj4+ICsg
ICAgICAgIC8qIGFnZW50cywgc2hhcmVkIG1lbW9yeSBhbmQgc2NtaV94ZW4gYXMgc2hvd24gYWJv
dmUgKi8NCj4+PiArICAgICAgfTsNCj4+PiArICAgIH07DQo+Pj4gKyAgfTsNCj4+PiArDQo+Pj4g
K1RoZSBIb3N0IERUIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlzIGNvcGllZCB0byB0aGUgRG9t
MCBEVCB1bm1vZGlmaWVkLiBIb3dldmVyLCBmb3IgRG9tMCBTQ01JDQo+Pj4gK2NvbmZpZ3VyYXRp
b24sIFhlbiByZWxpZXMgb24gdGhlIGBgYWdlbnRzYGAgY2hpbGQgYW5kIHRoZSBgYHhlbixkb20w
LXNjaS1hZ2VudC1pZGBgDQo+PiAiY2hpbGQgbm9kZSINCj4+DQo+Pj4gK3Byb3BlcnR5IGZyb20g
dGhlIGBgeGVuLHNjaWBgIGNvbnRhaW5lciB1bmRlciBgYC9jaG9zZW5gYC4gSWYgdGhlIGBgL2Zp
cm13YXJlL3NjbWlgYCBub2RlIGlzDQo+Pj4gK21pc3Npbmcgb3IgZGlzYWJsZWQsIG9yIGlmIGBg
eGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgaXMgbm90IHByb3ZpZGVkLCB0aGUgRG9tMCBTQ01JIGFn
ZW50IHdpbGwgbm90DQo+Pj4gK2JlIGNvbmZpZ3VyZWQuDQo+Pj4gKw0KPj4+ICsuLiBub3RlOjoN
Cj4+PiArDQo+Pj4gKyAgVGhlIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgdmFsdWUgbXVzdCBt
YXRjaCB0aGUgYGBmdW5jX2lkYGAgYW5kIGBgc2htZW1gYCBwYWlyaW5nIHByb3ZpZGVkIGJ5DQo+
Pj4gKyAgdGhlIEVMMyBmaXJtd2FyZSBmb3IgRG9tMCAoZm9yIGV4YW1wbGUgaW4gdGhlIGBgL2Zp
cm13YXJlL3NjbWlgYCBub2RlKS4NCj4+IFdlbGwsIG1heWJlIGJldHRlciB0byB1c2UgcGhhbmRs
ZSB0aGVuPyBMaWtlDQo+Pg0KPj4geGVuLGRvbTAtc2NpLWFnZW50LWlkPTwmYWdlbnRAMD4NCj4N
Cj4gSXQgaXMgdXNlZCB0byBzZXQgYXJtX3NjaV9hZ2VudF9pZCBpbiB0aGUgY29uZmlnIGFuZCB3
b3JrcyB0aGUgc2FtZSB3YXkNCj4gYXMgbGlieGwsIHNvIHdlIG1haW50YWluIGNvbnNpc3RlbnQg
YXBwcm9hY2hlcyBmb3Igc2V0dGluZyBkb21faWQgaW4NCj4gYm90aCBsaWJ4bCBhbmQgdGhlIGRl
dmljZS10cmVlLg0KPg0KPiBBZGRpdGlvbmFsbHksIHRoZSBhZ2VudF9pZCBpcyB1c2VkIHdoZW4g
YWNxdWlyaW5nIHRoZSBzY21pX2NoYW5uZWwuDQo+DQo+IEkgZG9uJ3Qgc2VlIGFueSBwYXJ0aWN1
bGFyIGJlbmVmaXRzIHRvIHVzaW5nIGEgcGhhbmRsZSBoZXJlLCBidXQgcGVyaGFwcw0KPiBJJ3Zl
IG1pc3NlZCBzb21ldGhpbmcuIENvdWxkIHlvdSBjbGFyaWZ5Pw0KDQpIYXZpbmcgbGVzcyByb29t
IGZvciB1c2VyIGVycm9yLiBIYXZpbmcgcGhhbmRsZSwgeW91IGNhbiBleHRyYWN0IGJvdGgNCmZ1
bmNfaWQgYW5kIHNobWVtIGZyb20gaXQuIEJ1dCwgdGhpbmtpbmcgb2YgaXQsIHlvdSBjYW4gZXh0
cmFjdCBzaG1lbQ0KanVzdCBieSBsb29raW5nIGF0IGZ1bmNfaWQuLi4gT24gb3RoZXIgaGFuZCwg
aXQgaXMgYmV0dGVyIHRvIG1vdmUgY2hlY2tzDQp0byB0aGUgY29tcGlsYXRpb24gdGltZS4gJ2R0
Yycgd2lsbCB0ZWxsIHlvdSBpZiBpdCBjYW4ndCBmaW5kIGEgcGhhbmRsZSwNCmJ1dCBpdCB3aWxs
IG5vdCB0ZWxsIHlvdSBpZiBudW1lcmljIGFnZW50X2lkIGRvZXMgbm90IG1hdGNoIGFueSBlbnRy
eSBpbg0KdGhhdCBhZ2VudHMgYXJyYXkuDQoNClsuLi5dDQoNCi0tDQpXQlIsIFZvbG9keW15cg0K


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 12:39:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 12:39:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471851.1680001 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOaHP-00008l-Pn; Wed, 04 Nov 2026 12:39:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471851.1680001; Wed, 04 Nov 2026 12:39:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOaHP-00008e-N6; Wed, 04 Nov 2026 12:39:51 +0000
Received: by outflank-mailman (input) for mailman id 1471851;
 Wed, 04 Nov 2026 12:39:51 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOaHP-00008Y-0r
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 12:39:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOaHO-00AfXU-Co
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:39:50 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb2794-e002-0a2a0a5209dd-0a2a4505949c-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:39:50 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb2796-4cb1-0a2a45050019-d155802ccc96-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 13:39:50 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a1fbd52ab6so4472695e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 04:39:50 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fe7189883sm4008598f8f.0.2026.11.04.04.39.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 04:39:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793795990; x=1794400790; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=T22XU2GDqyU2x8IfThojmgkKyOvo1tS1CyaQ5SiM8Uw=;
        b=n9PDK4YcKzqDs0e/bPMMUjT6so58qLFBRQGvCqMer1tf6Y0Zb1jXsfs4q+ZeF7ZPVH
         0/KvKrG/uU8DabSI3yYy5Ivx1SB7j3oSwluWPyVBVdSCyLPP1s7nv5VzIAjIj1UUaNjd
         3jE3eUtoARYj/Qj2guIDyNsW7v9UGL9M7a+/dyKmOTR2KmV4jl0QXmXx2aXkWpE1subo
         2o9Rb1AY61jgZqjP0mPKIQ6rRNayUpkHCSTjt9wFT2wXVNTS3aLIWE6C+SL0BDNj3gpz
         xf29ph0EaXvkYzCfmRKaRpR6DqH8fi/kRslRiejNoNh3W35+m8mcdWFX4uN0cPhaaG7v
         FnVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793795990; x=1794400790;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=T22XU2GDqyU2x8IfThojmgkKyOvo1tS1CyaQ5SiM8Uw=;
        b=WHuHCA8c0wBuEeoH8UmB0V3JvpdbaA/Ao2dXrA9OyDh1OXzMDoVsICXvINEEmczLUs
         GXAqKttlyuXSfD5aIhY1IICFXCglBYe+AZC1ERoivR88HSOhaboqWgNx2AN+3p5LAuF5
         mzlUZ6VXd8iziSovq0RVi8L4jFUXKdro/q/1b6iM4lptsAHM07Fy9yPEYb/UHt2jBeFH
         2wUbxigeSMAh5b5OwY9mu3Ld8SnrH+ZyG1P3hsMwXIgs4JwR5T+jzp6xdTJ2eZ2cTS1c
         wCRM2nuL6AsrdL4CP+kQxs0QQ/iSrvLvVGscT9/Nl7fThTWWcdnrwdwkLudYRbrsV1ZS
         A4aQ==
X-Forwarded-Encrypted: i=1; AKwUvBwUGifRUp32nOnNp0iIvgu56IXJgUHEFQTL6EdFApjEHtxaOkz5BCp6H7usBcj1mpMPnJIVNWMyoxg=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8+30ydjvkDNMCUpTAgHVHUCduK3Rff3z/yOJJVKXUvum/aRfeB
	C8J3nIbUUNYEVm9XyBhtorbxIdOb7Vk8tJ75iW5FVlPuOB5E5HGWn5m2SmOz4Q==
X-Gm-Gg: AYBFou1LSE79JjQfP6XwarqfonqbDtn5UVu2Q0R2hD+gMsh4vaBAJK/Y6UlHGcMHvEu
	PWVFXLqpw/9fol1cGzkgiPVmFQPMzfHuCJvZKo++MJSdPeChUdo1g5k7SRb02O/4NMCcEvktdOG
	mF7QvNWtpXgWzHMgncvPL4mRcAdI9YN5kcw8xMm6ckrxjetzAlCe+ctXupwU0SvfxTqhM60PS0e
	EzNCVNoQ5v4e/+pAg7XBXHIfFVBLex8Ee0ZfBXms9COTYMoEVIjLfOp1cnpE2h+7fCE7CT+fSDA
	5PIHvNnM6uLrxYsogcqRj2daKDj0gxlLF+TMM4n7omh6mupR2vwFOD/oKTP5xMXMUoxJ/11MrKB
	C37IPcDVvW3No10cy3bHYEeWKKXTXffK0pv4W1fYz18vKdiXmY4snXTN2eVqsyTaKKO+vnVYU33
	BLPEB/fIkJt3teu4EX0gsquXDYilqmdAe3NuLIlWWfb7fVV7xZ3zYU67QNuLg5oJQi8bIgZRxEm
	Dn+wzgZs8Ir6cjDn8sxR8nJaVNQXDMjFCkt0t6VEkS5kvp5AZi4Ke0fO2D1AFXn1cS9gdOIVwCp
	gr+Ryv781SZQkV8oaQTwvpMCJKfyJgjscc3WkaVh9RJqLfRUZofgv5TgHMzwDYQ9sANL3br+yBo
	R6yU=
X-Received: by 2002:a05:600c:3114:b0:4b1:32c8:27db with SMTP id 5b1f17b1804b1-4b132c8286fmr181124555e9.22.1793795988927;
        Wed, 04 Nov 2026 04:39:48 -0800 (PST)
Message-ID: <9c74569c-82a9-46b0-a013-c502c36c8d38@gmail.com>
Date: Wed, 4 Nov 2026 13:39:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/39] xen/riscv: add guest memory read helper
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 xen-devel@lists.xenproject.org
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <c77408157f7674ad2ffc775d1267470b724fdecf.1790779209.git.oleksii.kurochko@gmail.com>
 <1792595464.8631fc262581453bbf619ec5b2062170.1a15f041119000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792595464.8631fc262581453bbf619ec5b2062170.1a15f041119000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793795990-F5AAF2A1-51557FB1/10/73395122804
X-purgate-type: spam
X-purgate-size: 2772



On 10/21/26 5:11 PM, Baptiste Le Duc wrote:
> Sorry I forgot one thing.> +unsigned long read_guest(unsigned long 
> guest_addr, bool read_insn,
>> +                         struct trap_info *trap)
>> +{
>> +    /*
>> +     * Poison the result: if the very first access faults, the fixup 
>> skips
>> +     * over the loads without writing it. Callers must check trap- 
>> >scause.
>> +     */
>> +    unsigned long val = ~0UL, tmp;
>> +
>> +    /*
>> +     * hlv/hlvx use hstatus.SPVP for the privilege of the access, and 
>> the
>> +     * live vsatp/hgatp for the translation. Xen never installs a 
>> value of
>> +     * its own in hstatus (it is only saved on trap entry and restored
>> +     * before sret) and it doesn't reschedule before returning to the
>> +     * guest, so all three still belong to the vCPU which trapped.
>> +     */
>> +    if ( read_insn )
>> +    {
>> +        asm volatile ( "\n"
> I think this would need asm_inline instead...> +            "1: hlvx.hu 
> %[val], (%[addr])\n"
>> +            ASM_EXTABLE_TRAP_INFO(1b, 3f, %[ti])
>> +            "   andi %[tmp], %[val], 3\n"
>> +            "   addi %[tmp], %[tmp], -3\n"
>> +            "   bnez %[tmp], 3f\n"
>> +            "   addi %[addr], %[addr], 2\n"
>> +            "\n"
>> +            "2: hlvx.hu %[tmp], (%[addr])\n"
>> +            ASM_EXTABLE_TRAP_INFO(2b, 3f, %[ti])
>> +            "   slli %[tmp], %[tmp], 16\n"
>> +            "   or %[val], %[val], %[tmp]\n"
>> +            "3:\n"
>> +        : [val] "+&r" (val), [tmp] "=&r" (tmp), [addr] "+&r" 
>> (guest_addr),
>> +          "+m" (*trap)
>> +        : [ti] "r" (trap) );
>> +
>> +        /*
>> +         * Although HLVX instructions' explicit memory accesses 
>> require execute
>> +         * permissions, they still raise the same exceptions as other 
>> load
>> +         * instructions, rather than raising fetch exceptions instead.
>> +         */
>> +        if ( trap->scause == CAUSE_LOAD_PAGE_FAULT )
>> +            trap->scause = CAUSE_FETCH_PAGE_FAULT;
>> +    }
>> +    else
>> +    {
>> +        asm volatile ( "\n"
> ... same for here.

read_guest() is an out-of-line function with its only caller in another 
translation unit, so asm_inline wouldn't change any inlining decision here.

volatile is still needed, as the asm may trap and reads memory which can 
change behind the compiler's back.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:28:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:28:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471882.1680011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb2G-0006od-8D; Wed, 04 Nov 2026 13:28:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471882.1680011; Wed, 04 Nov 2026 13:28:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb2G-0006oV-4O; Wed, 04 Nov 2026 13:28:16 +0000
Received: by outflank-mailman (input) for mailman id 1471882;
 Wed, 04 Nov 2026 13:28:15 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmytro_prokopchuk1@epam.com>) id 1xOb2E-0006oP-UJ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:28:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOb2E-00GrCE-4Y
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:28:14 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6aeb32e8-e002-0a2a0a5209dd-0a2a450cd374-26
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:28:14 +0100
Received: from [52.101.69.83]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmytro_prokopchuk1@epam.com>)
 id 6aeb32ed-f479-0a2a450c0019-34654553f6e2-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:28:13 +0100
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17)
 by DU0PR03MB9542.eurprd03.prod.outlook.com (2603:10a6:10:41e::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Wed, 4 Nov 2026
 13:28:11 +0000
Received: from AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com
 ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 13:28:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=DpM/l77s6jUROToJw7RxbhKc+xy0UDv2q47fJswSCZ0hDzCRGPcSl05/1NNiDzMWzXMXpd1JPp5+B+ElulI9C+AZc9fU8b/WF93rd+bMEp8kJOq7GcypI6P858Lq2VefTD+NT5o3I0jJJ9n2+e26Y0aSl3dXzIOD4JR9Mw3xnzy6Yg2AJDaQH7l8LIUpRggKkQTTxTyIaXKTIFFU8wiLvVY/L/WLn2Ys1sq933jUoOS1iU4SDBnpklR+sszaEEi2duMfuUYQdn9GBY1l2YKVGrqsi+H7KXmyNksZA355m4HBDr0ZW1xmgJffG97r0D303EIr7cmq6yUuTsagK+sVOw==
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=YIdISH3GrjazHmecmvBpMjJGTcsxz7q0z/8VV+GeRNo=;
 b=Nm2WOeFT40ePf3phA6vjRWOk9ySliaZCH3kgWuMzjgH3Jnh6jT0STPB6tFtz6txCzqPwjdU5kpikoqJlCRJG7jKVF9bMMbJRhVgAJ1TkPBtOXFWbyO+V+UBgMaCRryLKHO1L3f41OGMBZb3KW9mE30PKvScVyK4ZO5qqicW2tInimFweWJUOmhRVR+lWBeEYKAHrTiAlp/XUCS8wQSHs2lLYH7PP62F7oxQwFbZ4GYRs+lQK9d2uL9QJrmAfe5jPEvxo/2+x/Z+XEw7ghDYhjT4FAv98bYXHetb2+psyMDKNKVSZkmDraiZiW2lEP3BQCeb75SRLt2nwdAbGr1Lmdg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YIdISH3GrjazHmecmvBpMjJGTcsxz7q0z/8VV+GeRNo=;
 b=Dt+/PHNel+jhzX/xnpSTlkfiZMwibRK+hCVV8K89T0FkNSgFS08coDlnb0B3c4jxD9eeFnpc2xXM7qQxzIloihrOSXnrcgrmZT5wnxLA9JfaxuMUtatBeYb1oEGcf/fTqKIuXNRG9PxMDPnYLYZF7tQbscFg2hy52V1ShhzZhD+Eus57rnoF4LNJTbKWZIKqK/MEF8GJccGyC+eydWFR097hzO8V846Cwnvo67ERfTSM+KgxYPDcrvupXNqjumNroe2tTpssGLdLDdRL0LD1uTluYtNex6VuUoMjS8lckVZgcBUjwRuIoWt9FLhShFwDsp3vnvzjVKdC4VpdZawkhQ==
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <7ce2c3c6-f73c-405e-adb5-e8a2b68427f9@epam.com>
Date: Wed, 4 Nov 2026 15:28:09 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Jan Beulich <jbeulich@suse.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
 <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
 <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
 <fddeac51-52fc-4ab9-bb24-0b3b33faf07a@epam.com>
 <6cde35ac-186f-4a9e-bd66-71b752582a21@suse.com>
Content-Language: en-US
From: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
In-Reply-To: <6cde35ac-186f-4a9e-bd66-71b752582a21@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: AS4P251CA0026.EURP251.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d3::15) To AM9PR03MB7526.eurprd03.prod.outlook.com
 (2603:10a6:20b:3de::17)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM9PR03MB7526:EE_|DU0PR03MB9542:EE_
X-MS-Office365-Filtering-Correlation-Id: 2d2a3c93-c571-41d4-1e36-08df3a7778ae
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|376014|1800799024|366016|23010399003|10067099003|18002099003|22082099003|4143699003|261022105027099003|56012099006|5023799004|11063799006|261022113327099003|261021121427099003|261026121527099003|261028144727099003|261102123227099003|261026140227099003|261009223027099003|261009221227099003|261022075727099003;
X-Microsoft-Antispam-Message-Info:
	l+LBds9iD834yLy+II6dqjWxrWzDDW7Ql13CggfTkWBH8/CMvy97aSJR8dnW+ouL1UIOqMTL3tv1KAsprxckH8Dja0JkC5QTXTjjebXufdyJuNUIp9R32cbune11EbiP55jqTRlnGx2G21XIJO8KPsoyG8KZcElxSX7XmW/W63kD4adwdiJqomoUzK5Qlzo97mPKD/Nwwv3fJLYZOqzDacRuI6MyIirI7hoDSWNffJqHieOuJ0x2cH3oYoOrP8n7jFDyO4hkawExoFnVsctkUY8hFrpf7CqpHElKbfXc8vHt9rthUaAnMsLBfqEBZuONnDVBMvsLlGsbFIdDXMWVjDVSDiRCS01XMYoA2WVYJjzpxQ7/YmQys0BtSq7u2ibx86Ing0kgt7/J31OIATncPYQ2Sq7ptPYPGH/Lmm7EvGt73q5Igc6mkWHSZiNEiOJkAp5doKVI8Ap3mKy6bdTmko2OR5HxoD0LXvV9gywlwJ2aLRGSLWMbmSP/ZDKQSthQVXcyfGYSco1uwGAb5BYcZCYivlh1oCvHP73tzh2yCeTJz/1N9QHM41/q7Ir6v+7D9g42/ZhrMjm8wVTRUuJMyhTfpdWqOzvaLSEZrcshphW1mB7LBLectbTBG8F1X2nnz2zBCp9BfRGy0jMzMqeZ0H2RQh49PSwFIZPh0G80gpA=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(23010399003)(10067099003)(18002099003)(22082099003)(4143699003)(261022105027099003)(56012099006)(5023799004)(11063799006)(261022113327099003)(261021121427099003)(261026121527099003)(261028144727099003)(261102123227099003)(261026140227099003)(261009223027099003)(261009221227099003)(261022075727099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dHN4ckRoVEFDZlNrb0ZBYTFWQmVxVy9FU00vczhBWkRHczEvak45WkN5dGcw?=
 =?utf-8?B?NlIrUXhORnZSc3E4MXVraTZVVEgrY0JCRWtzSWdmUzZaaWlaU2tiUDl3OVZz?=
 =?utf-8?B?V3ZKTTFDVEh6N09KSC9UdlN0MTdURk1qUjMzdVNEdVdDdjdSL0tQdzBHVW05?=
 =?utf-8?B?bmJjL1I1Y3ZSdlAzcjhtMWt0QlAyUGNjTDFzTnNHK3E2K0dTSUNyakNIMEVj?=
 =?utf-8?B?aWZEL1dhVDN5eEFRYU8vb2ljU2lnc0xNL0loMWg3VVR3K3pqdGY1NHRnREcx?=
 =?utf-8?B?U29OTUxsQ2hPK2xtZ1hXbXc3UC9FeXJVK015SlhFVUtxVXl5MFN5SE1ac2ZR?=
 =?utf-8?B?WW5xUWxyREMzbmljVzdnSG0wOWJsQm9STWdvN1Z0TmZibzNiK3ljdzNBZXVP?=
 =?utf-8?B?V3VvRDdhQWMzZ0JGZ3VrZzJDMlkzdWR4VkZtU3BpRnlFMHNYRUhrZTJEV0xP?=
 =?utf-8?B?VFArZUEyZGxTNWZIY3pEWlNvNldpTDBiSENWbnBKVEJOMS95RVBkc3ZlbzAw?=
 =?utf-8?B?RW02N1JqNGI1Wm1FU1QyVzU0eFkraHk4dkE4czZqTlFFMTRXb1MwclZqRWdk?=
 =?utf-8?B?NjNUU0x3bzRXTk5xRysrWXpEOFI1b1haQ08yUkMyR01mNm9OZm1DWkt5U0p4?=
 =?utf-8?B?U2lZbmtHTWdNRHJVamlCT0dDdEtnSlZYb2xsMm5ET09uQUNMN0gyWnZGNEVM?=
 =?utf-8?B?eEMzc1V2ajgwNDJyOEtIbzIzc3JDNVZiem9VTTIvNWUrZ3VYVUdDeGQvODRk?=
 =?utf-8?B?SHQzcnZrNWdEQVlWU3BRMHpMNlgzTXFISzhxcWVVd3dTZ3U1UVBZS0F4L2JL?=
 =?utf-8?B?ZUpIZldFL0JLNjVPNXRFakRsRm9acEpMcVpwVUk1V2srSWlRa0dQZ2JjcEo3?=
 =?utf-8?B?aFAxS0hOUThETkhnak05V3ZTc1hLbzlGLy9XWGtMTlJmYnhNWEpFSWJxYnUv?=
 =?utf-8?B?Uy84d1VtcXprM3pyRml6K2tvNGhRdWFKYzVCNGFYRmRDbkszSlo4SG1FY1J5?=
 =?utf-8?B?dkpyaG1IUERoWFBWSWpJSWpiTTdGRE5NcEN0cCtneTZXSHpXU0ZvWTVaMldi?=
 =?utf-8?B?aTk0YmN2L005dFBoWUl3aXRKQXFScU5GK25LWTFBelNaMUpBbUVORTN3ZGFP?=
 =?utf-8?B?YTZLMW9XRDRBbUV4eld4WlE5Y204aXQ3aDlkZEtpQlRZcXlsWVdyZVdJYjFa?=
 =?utf-8?B?M2hNaDdLaW9FSG1BQXoxZ1BYSFkzdUR3R1Z1ZTV6WXlYYlIxeDVFYnEvQWlw?=
 =?utf-8?B?QTAzMk9GakdPNGVNblBPWnRRK3JZZjB2REZTTWZ0ajllQWNTTUYyS3NQUmE2?=
 =?utf-8?B?UzhUVHk4ekJEdGdqNnlRVlYzSTI0NVVIaEtNdDhnN2M1STFOS1RyaHpVbU0r?=
 =?utf-8?B?bk9GSnZDVkVyS1RJYnU5ZENxaVphZ2Z4RHBEOGNWTU5pSjRZaG9zWGkyS1hQ?=
 =?utf-8?B?eE0xeFdScUtFYUU2NUFVSllLcUhLcVpuekN0ejh3R3o2NVJQQjF6c2lWa2NM?=
 =?utf-8?B?blNGdGpWd0MvT2hIb2dDNHVmMWhqcVRJNjVnMk0zR3Njazk2bFZVSFVxTVRt?=
 =?utf-8?B?b3phWW5TT3N4UzVVTzVRL3FTNXlCZXltR2tKT1Yvanh4VU0rM0NTNWhTNDlG?=
 =?utf-8?B?dlBqd3llb0tkcDVrb2xBNVFrdTNlaTZzTHJCMzZId3BaYi9hdXVtYmplTEN2?=
 =?utf-8?B?NnNUSytqWVkxOS9zQ1IxR1BLWjRMbWVRM0tKVFBldUJPMFc2ODVEV2pqMVM2?=
 =?utf-8?B?Q3d4V3dsYVBjbE9KQy92L0pDeG8zckVqMU16cWoyaDJHNkJJc3hSRzI2YlQx?=
 =?utf-8?B?M2pvdzNaVG8vTmVPZ2kyeitJWEJUNUNQM1ZyUzVDenVtMkpmQTkzYzVMVG8w?=
 =?utf-8?B?V3orRjN4VVZOSkZ3UnQ5YUFKOEJnci83MUR4ZFByUDlTTWlBSUFldTdOeHVj?=
 =?utf-8?B?bkJVci9qYmU2VWRLMFJxVEpkcFRCajJPemZtU1E0bzRFb0NnNmRwdGFpeDFm?=
 =?utf-8?B?alBMQlZhVTk4U3Fsci82SGJkZnFKUkRlcjRaalZ3M01QMmxybTNrbnhuSk55?=
 =?utf-8?B?Uk9xQ1F6ZTg1MTcxR1o0UnNaeDZsMXpaR0sram10a2oxREphWFZwKzY1NzNs?=
 =?utf-8?B?RGVVbFEvSXpBVHNnajVRNXZCcFNsVzZhYVFkWThuR2VNVU9TNHpwVUZKY1Vn?=
 =?utf-8?B?VDdYYlpBVVVzSUR1NWR1eldYUU0vdkcrM3prVWF3NGlSM3NFRHBISXdiRm5w?=
 =?utf-8?B?NlJqeUdzbHB4WmE2TU12cUpUUXUrQUhXelpNSTd1UCtnOHV3M28zRm5OcEsx?=
 =?utf-8?B?QlJFTkFxM1kyV3huOCtMcU9ybFF1VGk1Q2NWUVdTeTJFeVdZZkJvVEdyWHRH?=
 =?utf-8?Q?Epi7DphaGTkGyv5c=3D?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2d2a3c93-c571-41d4-1e36-08df3a7778ae
X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 13:28:11.1953
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: eO3g58YoLW4m2HhQysKCseQrs/W/WYDYCOnKIrE+UfvQMq1nw1UoXwJ/txAv9u4XX2vtd2qGbmXt6alw/PHNpWJB/5LbZClt6/HsHEKKc6w=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9542
X-purgate-ID: tlsNG-d25034/1793798893-002F0A5B-1DC86522/0/0
X-purgate-type: clean
X-purgate-size: 3055



On 11/2/26 17:45, Jan Beulich wrote:
> On 02.11.2026 15:43, Dmytro Prokopchuk wrote:
>>
>>
>> On 11/2/26 12:52, Jan Beulich wrote:
>>> On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
>>>> On 10/26/26 13:13, Jan Beulich wrote:
>>>>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>>>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>> @@ -335,6 +335,11 @@ still non-negative."
>>>>>>     -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>>>>>     -doc_end
>>>>>>     
>>>>>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>>>>>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>>>>>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>>>>>> +-doc_end
>>>>>
>>>>> Why the restriction to add/sub/mul? The text ...
>>>>
>>>> Because this is the pattern found in the Eclair's report, and it can be
>>>> deviated safely (as opposed to unary minus, division and remainder which
>>>> are not included intentionally).
>>>
>>> Division and remainder aren't very useful with boolean operands, so can
>>> surely be left out. However, more generally: How does "Eclair's report"
>>> matter here? In deviation wording we want to go from what the Misra spec
>>> says. The spec covers all operators. Hence any special casing we do
>>> wants to be justified. And, right now at least, I see no justification
>>> for restricting the deviation to just add/sub/mul.
>>
>> Agreed, the report shouldn't be the argument.
>> The deviation should cover only the established idioms with a clear
>> meaning, and leave the rule's protection in place elsewhere. With a
>> Boolean operand these idioms are:
>> - + and - (and += / -=): "count it if the condition holds",
>> - * (and *=): "this value if the condition holds, else 0".
>>
>> Other operators have no such idiom (at least, I'm not aware of them).
> 
> The use with * easily extends to <<. With that it's only logical to also
> include >>.
> 
> With + and - covered, it feels pretty much natural that relational
> operators also want covering.
> 
> Once there, and with division and modulo agreed upon to leave out, there
> isn't that much else left, I think.
> 
> Jan

I agree these uses would be equally well defined.

My thought is about deviating them without a need. For these operators 
there is currently nothing in Xen. Without the deviation the rule keeps 
protecting new code: e.g. Boolean operand of << would be reported and 
looked at, rather than silently accepted.

So I'd prefer to keep deviation limited to +, - and * (and assignment 
forms). If you still think the wider scope is preferable, I'll of course 
go with that in v3.

BR, Dmytro.


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:29:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:29:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471890.1680019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb31-0007ET-FC; Wed, 04 Nov 2026 13:29:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471890.1680019; Wed, 04 Nov 2026 13:29:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb31-0007EM-Bp; Wed, 04 Nov 2026 13:29:03 +0000
Received: by outflank-mailman (input) for mailman id 1471890;
 Wed, 04 Nov 2026 13:29:02 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOb30-0007D1-47
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:29:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOb2z-00CKAa-GX
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:29:01 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb3316-2eae-0a2a0a5409dd-0a2a4503d710-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:29:01 +0100
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb331c-fae8-0a2a45030019-d155dd33c0ba-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:29:00 +0100
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-48b042c0759so410166f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:29:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed08536dsm3543031f8f.32.2026.11.04.05.28.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 05:28:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Cc:Content-Language:References:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793798940; x=1794403740; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :cc:content-language:references:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=vNm8RDO0dXMvB7146YlHAPn4FQqDBobCaiCX5pUPnDo=;
        b=GYJxnKtyF+pboFQsbAkGHM6W+CsPQRJjVM0doIp5XyNdVjeVwQqB7X12J8xmYQGBId
         36IMC1Ar+lFXo/n3t4DED9TMwxCupqQvUbb0Fuw33aTlTtYmjYp7prjShMUEx/TvBieq
         czqH7Nhc8AgicWDuAHaoKVi7AjBiNTZnldzO+G1hPXiCbY02UvaLF+fd6pp8WrF9krlb
         WsvBvskrLiEEL85aP4xZgNfabVsEgZrBZ3KIr2OEPvI9NCi9VckbeEy4mwl2zeF2KlvC
         WQANbBdUm3wpIilMW8ucMxyxXd1leqQ6bIMMB6SXwDYTm6cz68hXH8/q+0FYHbxmzzGM
         gG5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793798940; x=1794403740;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :cc:content-language:references:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=vNm8RDO0dXMvB7146YlHAPn4FQqDBobCaiCX5pUPnDo=;
        b=DO/hkHBGsYBdv9HU3sqkK88jrIT4PDqM1KzqHOfsd/aH4ngqfQlodJkW+b7nkREybu
         aXrkR49EcnnXatv+wAfDk2J4PoQhY4V4nzcgu428IsF0Us0C5m56sfvcVrKfSVOUCN73
         aL5iTb6T1Env6kox9hEyDeujig1JGpzRtfh6BCLyIMerT7AARnnUawvdmmAE1E0rxIK4
         SKawPx+ebN5iw4hxNZSkfa6UPOrDOe3nBojzkRXeWhUDxXr3SaDYX/cbLyK6n66yyCWh
         1HByenWXQsSa8QPnl+686gw7DzVUaDHQdNhSQPvatanCvSws+X2NCKGk1fsCB858ljog
         pvYw==
X-Forwarded-Encrypted: i=1; AKwUvByk0gcU8r9pKJzNIIgUQ6roP7+pz9o90ys1y2ZKpdEANAIc5ZarVRugDtJkLOIEsBGHdzOtGG2I+OY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9mOT1OT8dzfkGlxJwcqcPMuZBQDPsQ2jLZvf05ywK3+jJ62Xdj
	yLuBH+TJacKxR4pzuNLMJuQtzy+ZD/oUNhKZoS6A88rZmdnK5eS1KiGtA5E/cqsDGg==
X-Gm-Gg: AYBFou0M+89Tj9l85V1fRsEnBpQeTmu377SpKLOxBhItgBlXKCm3nOad7PmCzq02NWr
	KPFIrCpKB23ie4bNeUEN3Y8+HNw15OrGYM4Z0xTyT8I8crI6wXOumshfg7hFhBI9anz06TC5kRk
	9wjLmhVAlArBWuLP7J50k+KA7UfD3tpd2vCJu/FxQAu9Z7TaFJj4IkTWUuXHEKfLSohC/E6yH4I
	YKQbn4+JlO6nRG632P1GWDSjvBazACReoA/KDLi39iCZba9muGROuBu6tmrp8DiCocmeTLx8Hew
	RwdQYN61ZnJCHPjVl/BJIWwDZeeUJXT2R9DGNS9tukO9vXMs9HxmH5OygSAsGV02EQ0qy3jZcha
	fAKp9Jhwlzc8Xqd1FavFooEQO9BTfZ+m7W+1Oi7LK9gpEACDrG5E0kFStZQy+1gOKUMYzRiffar
	haE44KWDWwMeRXAIsZwtXTBO39+kMkDdfjip8BM4s28wzs9k1wKlfaHPzfBKS5A3CAsfgJOKMIT
	6MoRG6Jcv09y0XuZm9xWAoX1IwIvASsyP+yKAkNtxb5LXdklDAh+Gxjetw6cAzvpnoVSS9MvrQr
	Pmb+dALrMtfhCBRDThnd0FiLGdDDNhomEhAkNlSrckl0CcKaX8EXs3Fkct1DEdqaK2kvsnuNu/y
	UTSffsayaNugEx0CP
X-Received: by 2002:a05:6000:24c5:b0:48e:d7c:4bc8 with SMTP id ffacd0b85a97d-48e6e2bdddbmr38793365f8f.7.1793798939930;
        Wed, 04 Nov 2026 05:28:59 -0800 (PST)
Message-ID: <a7217959-5019-40fa-ab49-b6270727b4be@suse.com>
Date: Wed, 4 Nov 2026 14:28:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/39] xen/riscv: add guest memory read helper
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <c77408157f7674ad2ffc775d1267470b724fdecf.1790779209.git.oleksii.kurochko@gmail.com>
 <1792595464.8631fc262581453bbf619ec5b2062170.1a15f041119000f79f@vates.tech>
 <9c74569c-82a9-46b0-a013-c502c36c8d38@gmail.com>
Content-Language: en-US
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 xen-devel@lists.xenproject.org
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9c74569c-82a9-46b0-a013-c502c36c8d38@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793798940-758824E9-BB507B43/10/78276251493
X-purgate-type: spam
X-purgate-size: 2950

On 04.11.2026 13:39, Oleksii Kurochko wrote:
> 
> 
> On 10/21/26 5:11 PM, Baptiste Le Duc wrote:
>> Sorry I forgot one thing.> +unsigned long read_guest(unsigned long 
>> guest_addr, bool read_insn,
>>> +                         struct trap_info *trap)
>>> +{
>>> +    /*
>>> +     * Poison the result: if the very first access faults, the fixup 
>>> skips
>>> +     * over the loads without writing it. Callers must check trap- 
>>>> scause.
>>> +     */
>>> +    unsigned long val = ~0UL, tmp;
>>> +
>>> +    /*
>>> +     * hlv/hlvx use hstatus.SPVP for the privilege of the access, and 
>>> the
>>> +     * live vsatp/hgatp for the translation. Xen never installs a 
>>> value of
>>> +     * its own in hstatus (it is only saved on trap entry and restored
>>> +     * before sret) and it doesn't reschedule before returning to the
>>> +     * guest, so all three still belong to the vCPU which trapped.
>>> +     */
>>> +    if ( read_insn )
>>> +    {
>>> +        asm volatile ( "\n"
>> I think this would need asm_inline instead...> +            "1: hlvx.hu 
>> %[val], (%[addr])\n"
>>> +            ASM_EXTABLE_TRAP_INFO(1b, 3f, %[ti])
>>> +            "   andi %[tmp], %[val], 3\n"
>>> +            "   addi %[tmp], %[tmp], -3\n"
>>> +            "   bnez %[tmp], 3f\n"
>>> +            "   addi %[addr], %[addr], 2\n"
>>> +            "\n"
>>> +            "2: hlvx.hu %[tmp], (%[addr])\n"
>>> +            ASM_EXTABLE_TRAP_INFO(2b, 3f, %[ti])
>>> +            "   slli %[tmp], %[tmp], 16\n"
>>> +            "   or %[val], %[val], %[tmp]\n"
>>> +            "3:\n"
>>> +        : [val] "+&r" (val), [tmp] "=&r" (tmp), [addr] "+&r" 
>>> (guest_addr),
>>> +          "+m" (*trap)
>>> +        : [ti] "r" (trap) );
>>> +
>>> +        /*
>>> +         * Although HLVX instructions' explicit memory accesses 
>>> require execute
>>> +         * permissions, they still raise the same exceptions as other 
>>> load
>>> +         * instructions, rather than raising fetch exceptions instead.
>>> +         */
>>> +        if ( trap->scause == CAUSE_LOAD_PAGE_FAULT )
>>> +            trap->scause = CAUSE_FETCH_PAGE_FAULT;
>>> +    }
>>> +    else
>>> +    {
>>> +        asm volatile ( "\n"
>> ... same for here.
> 
> read_guest() is an out-of-line function with its only caller in another 
> translation unit, so asm_inline wouldn't change any inlining decision here.
> 
> volatile is still needed, as the asm may trap and reads memory which can 
> change behind the compiler's back.

Yet that's not expressed by volatile, but by a memory clobber.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:31:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:31:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471903.1680028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb52-0000Ob-Tb; Wed, 04 Nov 2026 13:31:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471903.1680028; Wed, 04 Nov 2026 13:31:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOb52-0000OU-Qw; Wed, 04 Nov 2026 13:31:08 +0000
Received: by outflank-mailman (input) for mailman id 1471903;
 Wed, 04 Nov 2026 13:31:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOb51-0000O0-Hq
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:31:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOb50-00EaCs-UY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:31:06 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb339a-bab6-0a2a0a5309dd-0a2a4503b9c6-8
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:31:06 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb339a-fae8-0a2a45030019-d1558030c83c-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:31:06 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4ac95761c85so5065215e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:31:06 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b43d4c9d4csm73165215e9.12.2026.11.04.05.31.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 05:31:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793799066; x=1794403866; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=kEKyi63FwfdhLQCi+rq0mDadwoOTO7xrjoRDGEKx9yQ=;
        b=hHFCYSvsAeOgjPPHFVuVKep0OtZGGHuBVSzFk6s0Do4P0wWQV9Q5Y7OJNegrmhMQVi
         tJBg55YWmO+vpJDIf9ZGLgP4xSwxjr+jQPlnr85cAaHzuEerQNE5kmW94FHyjO36TLJi
         Kw1/RSUiRbk3It4tr+tx4zUdBjAFeM4Rf4sK0QO2CQYRxcGkGzETdwlXy2AGg9dcEZfd
         6ErpBEJQ2nBxI89fcjUk5+qVfWBm2VoySajpBzms/0JmZjdjiy7abMh8G+C6TI0lD/G2
         5+vF/MbOKFT230tUlQoJmSYlL/zlbUpzYjPnrbj8T3UWdsI25Iwi+FHpamThQdceBHHo
         MC0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793799066; x=1794403866;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=kEKyi63FwfdhLQCi+rq0mDadwoOTO7xrjoRDGEKx9yQ=;
        b=l/YhDRsBKPjHSCHln7Dndf7nDbAHRnYYm8VrdZlkq/M30Q63r1Qudzyj0fmBeJeg0M
         ybohbpimkf78qrrV9EGfAV4X8zVYqrMTCEjPmPtEdBwdyUChvLgkOK0vgFIIh9wmLye0
         YAbd/+TcH5I+MwXg6kdLRWO4+A6UKDXT9fboem9bo1t0i5FCex+LE9eBZBwJYxtN4kD+
         l5QzKVTHUZ5DXatByKcZuL9r+cXwf8Q593E5PSLvEEAhK/SK5UF05o+pXiZ0IvthLtd3
         /+DkF7FNhORtlMpkKkU+axOovKf936c/f7pCcH1OHY48i6Gn6XXCaZPFZxA//LKv3HcJ
         skmw==
X-Forwarded-Encrypted: i=1; AKwUvBxEWKvd2ysYouAA0cuaM63fiaNJghpyNtPJXy+hq86DYZwiirO+rv0w8tKff6zUZeI5MQ4ibKJuIQo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8jXLH89jkLEkdRSTVMFRR19850gjei0vlz8lTmu1ki6Y1QyVVx
	iPDpOkeOBB60FVmxPg7TcYQw/+DGT0OqAvdvfLDcpgvj1zpDixx9mwqqX+L4z6lixg==
X-Gm-Gg: AYBFou2Np5m3tn5AHSG4PR/klrnmrveEQ28HAyK9/mVeWxCvpBX5mBCPUrwxKKJOi1E
	LjBlZsrNenkW/97T7dR/M+H2PPw9AyFsxKUYqtbqUSSLvKokVcchnbRXpnHLdbIYLYus65LZCWe
	WFI34WB5a3oMSqXPNZATnqMl/A6H2iKW5BVa/USPdmN5haxzKvak9V+42Py7iFHPMINUNV7fJ2K
	CYMV8d76F2SSPNdHgu0SFSfwG0HwRGrTqARkdeM1HR0HYuKGgq2W1Rqmnf2rPrDrHHNre2XM6YT
	anLb2KnEMIv596W6vCz8PkYtOeqRyvgw8ZLLoMW3X4VBh5PMuSTU4KtyXDSwgLJEzkloU+Lcjrw
	3DTFd+1R3nX4cmgfSYifgKu7gBsJDKXk8UnHB7fnMCkxvFzTS7kyxKuagbZhK7gIAHYHX56Ms4d
	cEbq9CWkSNH9gIF6u7Zca7VS0ffCV/EXnsZqJXESou7LJImUlcYb52Y2LWoyv0asddIstSXrfiA
	xE0hWey5vM/6SWCRH8FkQ35WVNNzY7GoQsP0+W/qybMj8LxUi5dCjm0gIXJG3x7hBKi7vFaESwQ
	znLrwxiRGVVY/EENB2RrkfPROE/TJzELWZrodS41eisi2+TSUtSa1lBC4bRmFDKCXn7T7xd9ZpG
	dqkvaz5kIyjxL49bm
X-Received: by 2002:a05:600c:8b0a:b0:4a2:191f:7cbd with SMTP id 5b1f17b1804b1-4ac17191009mr366200125e9.11.1793799065766;
        Wed, 04 Nov 2026 05:31:05 -0800 (PST)
Message-ID: <3293924d-2333-4edd-97c1-91baa5ba00d4@suse.com>
Date: Wed, 4 Nov 2026 14:31:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of
 arithmetic
To: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626.git.dmytro_prokopchuk1@epam.com>
 <83187933-b4cd-46df-b428-368d6f71cfaa@suse.com>
 <dd2f093b-4151-4c42-ba7a-c7b1ce96e02d@epam.com>
 <929b051d-2735-4d33-9240-fdf13355c11c@suse.com>
 <fddeac51-52fc-4ab9-bb24-0b3b33faf07a@epam.com>
 <6cde35ac-186f-4a9e-bd66-71b752582a21@suse.com>
 <7ce2c3c6-f73c-405e-adb5-e8a2b68427f9@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7ce2c3c6-f73c-405e-adb5-e8a2b68427f9@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793799066-77AC44E9-028094A7/10/78276251493
X-purgate-type: spam
X-purgate-size: 3275

On 04.11.2026 14:28, Dmytro Prokopchuk wrote:
> 
> 
> On 11/2/26 17:45, Jan Beulich wrote:
>> On 02.11.2026 15:43, Dmytro Prokopchuk wrote:
>>>
>>>
>>> On 11/2/26 12:52, Jan Beulich wrote:
>>>> On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
>>>>> On 10/26/26 13:13, Jan Beulich wrote:
>>>>>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>>>>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>>> @@ -335,6 +335,11 @@ still non-negative."
>>>>>>>     -config=MC3A2.R10.1,etypes+={safe, "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"}
>>>>>>>     -doc_end
>>>>>>>     
>>>>>>> +-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
>>>>>>> +so using it as an operand of an arithmetic operator is well defined and well known to all Xen developers."
>>>>>>> +-config=MC3A2.R10.1,etypes+={safe, "stmt(operator(add||sub||mul||add_assign||sub_assign))", "src_type(ebool||boolean)"}
>>>>>>> +-doc_end
>>>>>>
>>>>>> Why the restriction to add/sub/mul? The text ...
>>>>>
>>>>> Because this is the pattern found in the Eclair's report, and it can be
>>>>> deviated safely (as opposed to unary minus, division and remainder which
>>>>> are not included intentionally).
>>>>
>>>> Division and remainder aren't very useful with boolean operands, so can
>>>> surely be left out. However, more generally: How does "Eclair's report"
>>>> matter here? In deviation wording we want to go from what the Misra spec
>>>> says. The spec covers all operators. Hence any special casing we do
>>>> wants to be justified. And, right now at least, I see no justification
>>>> for restricting the deviation to just add/sub/mul.
>>>
>>> Agreed, the report shouldn't be the argument.
>>> The deviation should cover only the established idioms with a clear
>>> meaning, and leave the rule's protection in place elsewhere. With a
>>> Boolean operand these idioms are:
>>> - + and - (and += / -=): "count it if the condition holds",
>>> - * (and *=): "this value if the condition holds, else 0".
>>>
>>> Other operators have no such idiom (at least, I'm not aware of them).
>>
>> The use with * easily extends to <<. With that it's only logical to also
>> include >>.
>>
>> With + and - covered, it feels pretty much natural that relational
>> operators also want covering.
>>
>> Once there, and with division and modulo agreed upon to leave out, there
>> isn't that much else left, I think.
> 
> I agree these uses would be equally well defined.
> 
> My thought is about deviating them without a need. For these operators 
> there is currently nothing in Xen. Without the deviation the rule keeps 
> protecting new code: e.g. Boolean operand of << would be reported and 
> looked at, rather than silently accepted.
> 
> So I'd prefer to keep deviation limited to +, - and * (and assignment 
> forms). If you still think the wider scope is preferable, I'll of course 
> go with that in v3.

I do think the wider form is what we want to go with, yet at the same time
it's not just me to take that decision.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:51:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:51:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471920.1680037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOu-0003Iz-GV; Wed, 04 Nov 2026 13:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471920.1680037; Wed, 04 Nov 2026 13:51:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOu-0003Is-DX; Wed, 04 Nov 2026 13:51:40 +0000
Received: by outflank-mailman (input) for mailman id 1471920;
 Wed, 04 Nov 2026 13:51:39 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xObOt-0003Im-8e
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:51:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xObOs-000SBp-LW
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:38 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb3863-e002-0a2a0a5209dd-0a2a4505bbd4-16
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:38 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb386a-4cb1-0a2a45050019-d1558033a566-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:38 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a9a8d6cea8so7105755e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:51:38 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4107b7198sm27919235e9.0.2026.11.04.05.51.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 05:51:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793800298; x=1794405098; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=jaSUwdtn0fOJl3oyF97eAOx5DNghLz7v5vcZc9L3meE=;
        b=KafRJ2o+OZRBcC4wRznev0sFp/98dIyER/L6xsB62ED0c+TsCXRckbmMSGpxyDhiZe
         Zgo82vcuZjAksOQ4OXde7ye8YPF35Z/rWIqDfIm11jCth6wjsxBFCPFw2YAlUGTY2AFP
         naEjOgORsTBknT4mSX5ghKyCiiX+ZJYK6Xpus=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793800298; x=1794405098;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=jaSUwdtn0fOJl3oyF97eAOx5DNghLz7v5vcZc9L3meE=;
        b=vIFIiWdHfqz1EjT+zneFPBmrW8tefQhveEHXQuIz+PO2D6UZ1uYdGEekwR6LDDNWZa
         VgH0F1dd0i/9c0ng4F0ON0kESdM6T5zkX5ljAdaG37Fu3P+pQiqDt53+o9tlBRDkLRvT
         ruAsrcACFRBElkauYvHi14RqfDvP7nP05xOoxjroaH9la7qBMbvuJJrGA9LkT9C9G67G
         lPs2FP3d0kzH1czwLGgM2KUDw20qVVdV728xZqiB/rzoyWCv+t8p6dACMAPYJp7MfPXG
         tbrIBXVR2bCNPb2cCz04S8QNb/REYTNI12oFZSouFQeReeALCyge+NABCk/1WBeZZJ+d
         s3XQ==
X-Gm-Message-State: APuU4Z+Rygyuf4ljjs9/3dBv5D1jDyKu+ydXpTGmFmh7Jt/JoOfNYX3l
	ZiqM1GV42dRwVBhhZp7UaYO8sUqKaMTQDgTILq7yi9Dfg0uMw3IqxLtAq7Bm2PpuRipiD0jwie4
	c47gzd+8=
X-Gm-Gg: AYBFou3ixZd1pAu+0gunTWJgxtcXKoIhRniodsXDzpC9+j503TyJaLcuzlTmThgrpo9
	YOWs8teaFMBegQ3phCQ++L3pFPLZ7UbHcZtLVQFiw1Rj7FmB6vabnZfMjHgC7jc1kFyea+j/C6g
	VpJvtkN7OX8GR53mLhVO1LNZj9VzuEk7ltvAwspysOF93vbZfOYCvVtSZfvD6Z1+VlxPDuRKQ7S
	V6yiOgQppGjyPOytaxAxuPpNUpwXqYjW0WtffZYcsV0WHOjzVIIsAelYx84HsgjhknIPtxJwj1U
	Dvq6pIMwgOsVatPTyf/yjzHhSLWgeDEuLcFe9g3NEdjeXTci//+aFBjLLmhi8Cr1jv3tAyl4ZqI
	k05fk0vkLpE4/teO+vsdrQ5UnRin4dqJ6l7l1v+CoooyQ4KaLkaAJzy8QQZR+rJA0ZX3HHTEyko
	jZgc9CAcnxVlGeidHrix1GjAYdJ/wRNNL5otJijBSt5oQoxrvUVDcKwiaP7N3EPQqJJu0wMs4lG
	puJ7ElTUtM3ccpytbTakkCXzgwImFIkv4GvOpHNghP9oWGmTWJ4phT4GVjdeGQWbpIRwzm+wmip
	YkqziDENoqkfW2Ch8muos2Jq/8mitzDCmw4wGoJjpl6ckpZ4kIUodWsiHh3SlFuaU0FNV/RPLKE
	MDC4=
X-Received: by 2002:a05:600c:3b02:b0:4b4:a551:681a with SMTP id 5b1f17b1804b1-4b4a55168c2mr27758865e9.3.1793800297918;
        Wed, 04 Nov 2026 05:51:37 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 2/2] xen/build-id: Drop xen_build_id_check()
Date: Wed,  4 Nov 2026 13:51:33 +0000
Message-Id: <20261104135133.2209628-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793800298-734BC2A1-74C92054/10/78276251493
X-purgate-type: spam
X-purgate-size: 4984

The function is misnamed; it really is looking for a GNU Build ID note, not a
Xen note as the name suggests.

It also has an awkward API to use.  For a GNU Build ID, the content is always
at +16 from the start, so really doesn't need to be returned by pointer, nor
is it necessary be doing additional checks on the returned pointers being
valid.

Switching to is_gnu_build_id() allows xen_build_init() to be simplified,
returning after the first successful find rather than passing an rc down the
function to skip later checks.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Julien Grall <julien@xen.org>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>

The 16 probably ought to be a define somewhere, but I see no obvious
candidates in the ELF spec.
---
 xen/common/livepatch.c    | 13 +++++--------
 xen/common/version.c      | 41 +++++++--------------------------------
 xen/include/xen/version.h |  2 --
 3 files changed, 12 insertions(+), 44 deletions(-)

diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index 7515a040ad46..9960db589b76 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -453,22 +453,19 @@ static int parse_buildid(const struct livepatch_elf_sec *sec,
                          struct livepatch_build_id *id)
 {
     const Elf_Note *n;
-    int rc;
+    unsigned int len;
 
     /* Presence of the sections is ensured by check_special_sections(). */
     ASSERT(sec);
 
     n = sec->addr;
+    len = sec->sec->sh_size;
 
-    if ( sec->sec->sh_size <= sizeof(*n) )
+    if ( !is_gnu_build_id(n, len) )
         return -EINVAL;
 
-    rc = xen_build_id_check(n, sec->sec->sh_size, &id->p, &id->len);
-    if ( rc )
-        return rc;
-
-    if ( !id->len || !id->p )
-        return -EINVAL;
+    id->p   = n   + NT_GNU_HDR_SIZE;
+    id->len = len - NT_GNU_HDR_SIZE;
 
    return 0;
 }
diff --git a/xen/common/version.c b/xen/common/version.c
index 7eb8a0221d82..63a5261a2279 100644
--- a/xen/common/version.c
+++ b/xen/common/version.c
@@ -145,36 +145,6 @@ bool is_gnu_build_id(const Elf_Note *n, unsigned int len)
     return true;
 }
 
-int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
-                       const void **p, unsigned int *len)
-{
-    /* Check if we really have a build-id. */
-    ASSERT(n_sz > sizeof(*n));
-
-    if ( NT_GNU_BUILD_ID != n->type )
-        return -ENODATA;
-
-    if ( n->namesz + n->descsz < n->namesz )
-        return -EINVAL;
-
-    if ( n->namesz < 4 /* GNU\0 */)
-        return -EINVAL;
-
-    if ( n->namesz + n->descsz > n_sz - sizeof(*n) )
-        return -EINVAL;
-
-    /* Sanity check, name should be "GNU" for ld-generated build-id. */
-    if ( strncmp(ELFNOTE_NAME(n), "GNU", n->namesz) != 0 )
-        return -ENODATA;
-
-    if ( len )
-        *len = n->descsz;
-    if ( p )
-        *p = ELFNOTE_DESC(n);
-
-    return 0;
-}
-
 struct pe_external_debug_directory
 {
     uint32_t characteristics;
@@ -201,7 +171,6 @@ void __init xen_build_init(void)
 {
     const Elf_Note *n = __note_gnu_build_id_start;
     unsigned int sz;
-    int rc;
 
     /* --build-id invoked with wrong parameters. */
     if ( __note_gnu_build_id_end <= &n[0] )
@@ -213,14 +182,18 @@ void __init xen_build_init(void)
 
     sz = (uintptr_t)__note_gnu_build_id_end - (uintptr_t)n;
 
-    rc = xen_build_id_check(n, sz, &xen_build_id, &xen_build_id_len);
+    if ( is_gnu_build_id(n, sz) )
+    {
+        xen_build_id     = n  + NT_GNU_HDR_SIZE;
+        xen_build_id_len = sz - NT_GNU_HDR_SIZE;
+        return;
+    }
 
 #ifdef CONFIG_X86
     /*
      * xen.efi built with a new enough toolchain will have a CodeView record,
      * not an ELF note.
      */
-    if ( rc )
     {
         const struct pe_external_debug_directory *dir = (const void *)n;
 
@@ -241,7 +214,7 @@ void __init xen_build_init(void)
             {
                 xen_build_id = info->signature;
                 xen_build_id_len = sizeof(info->signature);
-                rc = 0;
+                return;
             }
         }
     }
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
index ee857616f9e4..6e9a24b7fadf 100644
--- a/xen/include/xen/version.h
+++ b/xen/include/xen/version.h
@@ -25,8 +25,6 @@ extern unsigned int xen_build_id_len; /* 0 -> No build id. */
 
 #ifdef BUILD_ID
 void xen_build_init(void);
-int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
-                       const void **p, unsigned int *len);
 bool is_gnu_build_id(const Elf_Note *n, unsigned int len);
 #else
 static inline void xen_build_init(void) {};
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:51:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:51:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471922.1680055 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOy-0003iq-TP; Wed, 04 Nov 2026 13:51:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471922.1680055; Wed, 04 Nov 2026 13:51:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOy-0003ij-Py; Wed, 04 Nov 2026 13:51:44 +0000
Received: by outflank-mailman (input) for mailman id 1471922;
 Wed, 04 Nov 2026 13:51:43 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper3@citrix.com>) id 1xObOx-0003eU-Fi
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:51:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xObOw-00EfZF-Sd
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:42 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb3869-bab6-0a2a0a5309dd-0a2a4502df3e-20
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:42 +0100
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb3869-6ca4-0a2a45020019-d155dd29e98f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:37 +0100
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-48bbb06e746so470445f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:51:37 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4107b7198sm27919235e9.0.2026.11.04.05.51.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 05:51:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793800297; x=1794405097; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=zyhWJc0WzTY4V2MRzOh2aP3P8zgX4P7gXVVJwlwaSC4=;
        b=Iv2q0cOUu91VEqaqpn4+JLlDUg/wuwNHSYQaWbRERkjUjAnb0ouQ4z0rOB1/kP9FCQ
         BBc9oez0mRvNARDNHjN9FLWyGRaJyDjNQYHJNBgvrBfBczNm++BurfXRVuw/UMoponxO
         MBVMy8gcIAiTB3Sjy/2nKDXwXvuoImX/r8Kbo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793800297; x=1794405097;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=zyhWJc0WzTY4V2MRzOh2aP3P8zgX4P7gXVVJwlwaSC4=;
        b=yd9Z+vY8SUwhyBBDWo11Z1dnzIiSWwfB4b7Vgnd290mneK3leDV/bMZiWAO9GE3u+j
         Q+b5j9NUtk1ZIits9JzbCUyQIV6RdorzCKnjO0w8aBGNckA+R4lhVDggp0Q33p35D9Ff
         yqv68P0KQphZoPUpf8kIXfzvL4fBXM4diKgyl53BGeoTmfQNXKrVB9NarSJpmI+h8qAc
         06gp5/3DTSoNG9uugeYNLAVDOlPsHyPb58QmDHkXavtEBTVpWjNnJ36KCJiw4L28aGhi
         /kdpA/vyJcJ74QAey3s5pd8nFnoIBjdZ5IhuCxOBqSzye9D1t7iR05Bg0nn5cS9jjM+v
         wr9Q==
X-Gm-Message-State: APuU4Z8/q3vLtGK5h05j7qsv6ZRTsw+J3QQFPbXLqN7M9yubyI8ihsTl
	qolsGAxKGjgc9YbpHlN7xn35pY4Hddbam7udmlOBC9GnD2SeeUgpdX49fcxQolC4VTtB9Oc3pWH
	prtStTck=
X-Gm-Gg: AYBFou2f23YlzYuxl7DArUZwCcYqe6v4QV/PMUObfIozLJYj9zyj3y63leKv1P7tsaT
	xuKEwJVvA/gDFizTkNBpUD6mILgJs+aq1dutu2/8Lh+YAxzAB/KqgMSIpXil4kbvy0b3TzWcyBW
	uua0pA2O2TMOo8wzs0ZgIZDVyNCOgCzIe3hwHz03o3+sfsrlr8sEdoVuRafogTU7P6NGBJbmKlk
	iK+PgVOI7hv4Rp0QcpPJ5JklHfZQi/xZpXn+p1zUb0SxI8IE1NzPQxzFzYoHM4Acs5GZZk42Omz
	3bvx85Qn7Br+t7Dey7beCPMHSjw991MRA5/RJH+7RG4jeJbL2N0Pbdr4yMLH8dKHIC+bR9SoIeR
	uVAtgujxTtYaX2OvexjP6x980ajBrYpX6kpHhXdvqvrph9y07K3+bljSwBCPm7QkcX0cXUwI9Ii
	m6EL+DTfED8Ve3e2I+ARF5NR/Ty1/kV/8DJE2VJVWMcN/pfun/8dlsZMHlPNZZ24Fblw7NMlRIi
	xA10dprcXed5s3IhMtMo+NxsxQf3r7VlChjHExAyVU7mOTQCM/1WrwdpLO/SCd4ud2AeW7ERqvH
	2VHWJkBcDTTTlMgvqixgMxF7QEnE9yAdoPNjZFyjYftzRsLqXoGE3a/QMHR4xIyNSlPFqYkxGv0
	Oot4KSOYqslckij4Tlsb6vxFn
X-Received: by 2002:a05:600c:6212:b0:4a4:de70:2ad4 with SMTP id 5b1f17b1804b1-4ac17ffa395mr352272655e9.22.1793800296536;
        Wed, 04 Nov 2026 05:51:36 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 0/2] xen/build-id: Further cleanup
Date: Wed,  4 Nov 2026 13:51:31 +0000
Message-Id: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793800302-31DC92AC-58C54EAB/0/0
X-purgate-type: clean
X-purgate-size: 515

This is the final piece of work 32b63424e4e4 "x86/EFI: Fix detection of
buildid" which is rather overdue a first posting.

Andrew Cooper (2):
  xen/build-id: Introduce is_gnu_build_id()
  xen/build-id: Drop xen_build_id_check()

 xen/common/livepatch.c    | 11 +++-----
 xen/common/version.c      | 56 +++++++++++++++++++++------------------
 xen/include/xen/version.h |  4 +--
 3 files changed, 35 insertions(+), 36 deletions(-)


base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 13:51:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 13:51:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471921.1680046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOw-0003VT-MD; Wed, 04 Nov 2026 13:51:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471921.1680046; Wed, 04 Nov 2026 13:51:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObOw-0003VK-Ja; Wed, 04 Nov 2026 13:51:42 +0000
Received: by outflank-mailman (input) for mailman id 1471921;
 Wed, 04 Nov 2026 13:51:41 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xObOv-0003UD-Fb
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 13:51:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xObOu-00EfW9-Si
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:40 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb3869-bab6-0a2a0a5309dd-0a2a4502df3e-0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:38 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aeb3869-6ca4-0a2a45020019-d1558035d9c5-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 14:51:37 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a35db1f202so5588575e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 05:51:37 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4107b7198sm27919235e9.0.2026.11.04.05.51.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 05:51:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793800297; x=1794405097; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=OqSioAZzTvnhGM+tiUAbYDv/FOQtdV5dVRzP9neOBc4=;
        b=bhuUbDQytX7y1xM9E0HcOSYH2RFcAQGxG1ugvGsa2pz6W4fbsP59A8PmZy/ppRCpFP
         akdrckLC+7rxSzh9LwmB9awZEUEY7JbORxzWYEm8M63tQ7NGXy/yXSY7W+GR2r6cO2+r
         mzBC1lzGWIThFlLUj3U2I+gH4MHhDx9keYKlI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793800297; x=1794405097;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=OqSioAZzTvnhGM+tiUAbYDv/FOQtdV5dVRzP9neOBc4=;
        b=hNMMDrNJ3Yo2sI4iE3mIYlY/b9mAQd3DheChrZmyAKWpeyALwyBPoSZlPL2sjF6sdn
         +hBjMzHnIxT0gIEV0X+LaD9q4PJXySrw29VQp+2LhmpQYPdHnzKb1IexeKJ0Z+QqBVns
         LUCTOlN/hQCAt1TrSpFDjasMw2bFmdl9S/GyIepPYnXI+oxqk/RvXi+oRx92OTEZYv6x
         zv8ESCNskafS8xiRCLIdjMOGHZXCP0RrC5wm0izU99lIvHkB5p+l7wuTjlQmiR3Dcb+X
         V4vI9wXAq6Vga0m8fuD45PwD/9cfWFCQG+l8QqbOnyvFw34TwRrloXbM8h2WjBMxJuiL
         8GZg==
X-Gm-Message-State: APuU4Z9z2MZNq3gaCs6OwLSD6ZMPRQ73+CEtuqCyDbNuNFA4u5tVD1AB
	2DaZEZ4zeXGHSZYtLY2pvbBfB2ZW76rdIyCb+jXsMISJrOeNUD41JrnVp8QSvn6/GWc/P3XjyUs
	b6nbJYNc=
X-Gm-Gg: AYBFou1ueQJ31c7skZGgwizJ0hoi2aF0kcLCAabNfhGq8Qt766p+zeaeCqDgx/MHsN5
	vp6q2+8CKF/+e4C2yoJLDmq7rLTCnWB8JhW29I13J1bMldOOHJjOEmeB6zhbSsrU+5YC7T5WA3u
	C8xDO08HF0aVVwzKZz2hwKIP7gGAxn3/tDV2d+mLLGZiwv4StlmI34P1Omeq4onEghg6/tdGhui
	0vTvrTCn5rLSqV/n16zx3RnR7FZXbTc9hVFM40IAcS3PLec2CgJZLP+842a3qTm4fGNcG9K5ZHh
	mIsLRovCTrpR7epM38Y21uBn7qlk33W+ny4r03gbS+5eJlAbWtSrJWm+Grh+aEielULzaTGnkwM
	AtANSyqs9qSnJb/iflTwxrQ8i7AqMJggqhFRLulMG8BUB4VUwNhlDChU7VecK+zUU7HlpK2956V
	B8u5jKULAteIXTxX67AVmnX9MtgTBaq2EM0VMAjgfnwLm2URo6lsPqaZQ/Lq6O53OSSlbg66cvu
	GsD/4IClyYIhptV3GLUtvtTy4pVpQBU5z3MO8rt4sJUAmxTf4TI86o6eXKGLVsdMG/VngVidvFt
	fmDC+x/EtVq4BYZvnm2arpTzXnAXv/5Ba6+n2k+31lMQIFRuIU8KLuw8D35/vGD9t+igIuwkJVU
	Ymu4=
X-Received: by 2002:a05:600c:c16d:b0:4a1:e00b:a0ea with SMTP id 5b1f17b1804b1-4ac150b204fmr354563865e9.1.1793800297209;
        Wed, 04 Nov 2026 05:51:37 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/2] xen/build-id: Introduce is_gnu_build_id()
Date: Wed,  4 Nov 2026 13:51:32 +0000
Message-Id: <20261104135133.2209628-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793800297-67EBB2AC-84823A1B/10/78276251493
X-purgate-type: spam
X-purgate-size: 3387

Broken out of the subsequent change for legibility reasons.  It will be used
to replace xen_build_id_check().

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Jan Beulich <jbeulich@suse.com>
CC: Julien Grall <julien@xen.org>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/common/version.c         | 33 +++++++++++++++++++++++++++++++++
 xen/include/xen/elfstructs.h |  2 ++
 xen/include/xen/version.h    |  2 ++
 3 files changed, 37 insertions(+)

diff --git a/xen/common/version.c b/xen/common/version.c
index 80e7a9b981cf..7eb8a0221d82 100644
--- a/xen/common/version.c
+++ b/xen/common/version.c
@@ -114,6 +114,37 @@ void print_version(void)
 /* Defined in linker script. */
 extern const Elf_Note __note_gnu_build_id_start[], __note_gnu_build_id_end[];
 
+/*
+ * Check whether @n is a GNU Build ID note.
+ *
+ * We check that:
+ *  - type is NT_GNU_BUILD_ID
+ *  - name is GNU\0
+ *  - desc is non-empty and exactly covering the rest of the buffer
+ *
+ * If this returns true, the contents starts at n + NT_GNU_HDR_SIZE.
+ */
+bool is_gnu_build_id(const Elf_Note *n, unsigned int len)
+{
+    const char *name;
+
+    if ( len <= NT_GNU_HDR_SIZE )
+        return false;
+
+    if ( n->type != NT_GNU_BUILD_ID ||
+         n->namesz != 4 )
+        return false;
+
+    name = ELFNOTE_NAME(n);
+    if ( strncmp(name, "GNU", 4) != 0 )
+        return false;
+
+    if ( len != n->descsz + NT_GNU_HDR_SIZE )
+        return false;
+
+    return true;
+}
+
 int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
                        const void **p, unsigned int *len)
 {
@@ -234,6 +265,8 @@ static void __init __maybe_unused build_assertions(void)
 {
     BUILD_BUG_ON(sizeof(unsigned long) != sizeof(void (*)(void)));
     BUILD_BUG_ON(sizeof(void *) != sizeof(void (*)(void)));
+
+    BUILD_BUG_ON(NT_GNU_HDR_SIZE != sizeof(Elf_Note) + 4);
 }
 
 /*
diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h
index 8ee0d5aa5b15..1f0287aeed49 100644
--- a/xen/include/xen/elfstructs.h
+++ b/xen/include/xen/elfstructs.h
@@ -46,6 +46,8 @@ typedef uint32_t	Elf64_Word;
 typedef int64_t		Elf64_Sxword;
 typedef uint64_t	Elf64_Xword;
 
+#define NT_GNU_HDR_SIZE 16 /* sizeof(Elf_note) + "GNU\0" */
+
 /* Unique build id string format when using --build-id. */
 #define NT_GNU_BUILD_ID 3
 
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
index b9fa8d70520d..ee857616f9e4 100644
--- a/xen/include/xen/version.h
+++ b/xen/include/xen/version.h
@@ -2,6 +2,7 @@
 #define __XEN_VERSION_H__
 
 #include <xen/elfstructs.h>
+#include <xen/stdbool.h>
 
 const char *xen_compile_date(void);
 const char *xen_compile_time(void);
@@ -26,6 +27,7 @@ extern unsigned int xen_build_id_len; /* 0 -> No build id. */
 void xen_build_init(void);
 int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
                        const void **p, unsigned int *len);
+bool is_gnu_build_id(const Elf_Note *n, unsigned int len);
 #else
 static inline void xen_build_init(void) {};
 #endif

base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:01:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:01:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471950.1680064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObY2-0006A6-Ri; Wed, 04 Nov 2026 14:01:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471950.1680064; Wed, 04 Nov 2026 14:01:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObY2-00069z-Or; Wed, 04 Nov 2026 14:01:06 +0000
Received: by outflank-mailman (input) for mailman id 1471950;
 Wed, 04 Nov 2026 14:01:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@swg.vates.tech>)
 id 1xObY1-00069r-Co
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:01:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xObY0-00EYjg-JT
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:01:04 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@swg.vates.tech>)
 id 6aeb3a98-e002-0a2a0a5209dd-0a2a4506bdee-18
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:01:04 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@swg.vates.tech>)
 id 6aeb3a9f-195a-0a2a45060019-b9ff1c23840b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:01:03 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a6dcf00e000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 04 Nov 2026 14:00:59 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id C61CC821D0;
 Wed,  4 Nov 2026 15:00:58 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=hSvh9tIJZudOU7akmVf6d7si3GhoDN2Ygh0sY5giZ0s=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=CHtWPm5qQ7qhbWqO/x5FSIqFZam6X3+SZJJKKYO3iY+jlsU0c7kV4ak2vospG82P9+SQBmW8e
 1llibiF8PUNQJqUfUyWtsCE/2sXQL1Dunx/Ugr+9Ah2qwosPJ1ZCfbo23rzZHykb4+1PgOB3iGv
 kroYQmLovRYrlqg7zfm6XmTyA/o0hVwon3W5NS0hIUeTM/8uI2tPj/FeibKVCx2eOTT9ojcQ8w8
 ixL7OJwNIrX46PCJAahw5oMNuiD1w9jFX7mhbwuSFQZiXAQhBj396e1MwpdwI+RUwDTH2kT6WfO
 7H+x+1hqjfHHE41rzxe8r/z0/tULqJc2rrukhtNxEQnQ==
X-Zone-Loop: 844fcfab838b5d821057add834ab5cc9ade412b5e98f
x-campaign-type: default
x-transaction-id: 635ced06-c1d8-4989-9473-279cf7bc1871
x-swg-uid: 01-8c46f024-b652-42d7-9b7f-50ee49b5929e
X-Mailer: Sweego
Message-ID:
 <1793800859.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@vates.tech>
x-swg-bid: 1793800859.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 37/39] xen/riscv: implement continue_new_vcpu()
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <0d254188c7f21c88ef1982dc9c5810f7b503e38e.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <0d254188c7f21c88ef1982dc9c5810f7b503e38e.1790779209.git.oleksii.kurochko@gmail.com>
Date: Wed, 04 Nov 2026 15:00:50 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793800853; l=2013;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=/knFn1VKfhNtR1yW6m3cyPzh9rzT7yTH+1/ivqer6G8=;
 b=BU3lTBHrU/K3BRx24WT1O1ig+mwJuF03kON/DZ4yoO6EyLet15ESYlaRNpsuj5OFRHJrKkPnK
 JxyjZvx6/cOCCL00QQSAlTJgn4Mz7rX0QnUtSpyw2c5l7M7NfRQfZEz
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793800859044
X-purgate-ID: tlsNG-16d1c6/1793800863-FE67277B-C1A9AE69/0/0
X-purgate-type: clean
X-purgate-size: 2013

> continue_new_vcpu() is the arch hook invoked the first time a freshly
> created vCPU is scheduled. Implement both cases it has to cover:
>  - for the idle vCPU, switch to its own stack and jump to idle_loop();
>  - for a guest vCPU, enter the guest through the new
>    return_to_new_vcpu() path in entry.S, which restores hstatus and
>    sepc, passes the hart id in a0 and, in a1, either the DTB address
>    (boot vCPU, as expected by the RISC-V boot protocol) or the opaque
>    value passed to SBI HSM hart_start() (secondary vCPUs), clears the
>    remaining GPRs, sets sstatus.SPP and sstatus.SPIE and executes sret.
> 
Nit: the guest vCPU sentence is hard to follow in one go. Maybe split it:

  - for a guest vCPU, enter the guest through the new
    return_to_new_vcpu() path in entry.S. It restores hstatus and
    sepc and passes the hart id in a0. a1 holds the DTB address for
    the boot vCPU (as expected by the RISC-V boot protocol), or the
    opaque value passed to SBI HSM hart_start() for secondary vCPUs.
    It then clears the remaining GPRs, sets sstatus.SPP and
    sstatus.SPIE, and executes sret.

> [ ... 94 lines skipped ... ]
> --- a/xen/arch/riscv/entry.S
> +++ b/xen/arch/riscv/entry.S
> @@ -147,3 +147,42 @@ FUNC(__context_switch)
>  
>          ret
>  END(__context_switch)
> +
> +/*
> + * Enter a vCPU for the first time. Must be called with interrupts disabled,
> + * see continue_new_vcpu().
> + */
> +FUNC(return_to_new_vcpu)
> +        REG_L   t0, CPU_USER_REGS_HSTATUS(sp)
> +        csrw    CSR_HSTATUS, t0
> +
At this point regs->hstatus only has SPV | SPVP (arch_vcpu_create()), so
VSXL is written as 0, which is a reserved encoding. That only gets fixed
by "xen/riscv: set the guest's XLEN explicitly in hstatus.VSXL", which
comes later in the series. Wouldn't it be better to move that one ahead
of this patch?

Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:18:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:18:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1471980.1680073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObom-0008B2-2g; Wed, 04 Nov 2026 14:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1471980.1680073; Wed, 04 Nov 2026 14:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xObom-0008Av-04; Wed, 04 Nov 2026 14:18:24 +0000
Received: by outflank-mailman (input) for mailman id 1471980;
 Wed, 04 Nov 2026 14:18:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewprecious388@gmail.com>) id 1xObok-0008Ao-3y
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:18:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOboj-006VoV-Gy
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:18:21 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6aeb3ead-e002-0a2a0a5209dd-0a2a4501dee2-0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:18:21 +0100
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6aeb3ead-5984-0a2a45010019-d155dd36bcd5-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:18:21 +0100
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-48c45111bebso371427f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 06:18:21 -0800 (PST)
Received: from andrew-B650M-DS3H.. ([102.213.49.86])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec8d8748sm4203955f8f.16.2026.11.04.06.18.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 06:18:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793801901; x=1794406701; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=xHxxC+uoeAFYFHz/KDliWgJlTU3QRuBEN3NX80yiIhI=;
        b=ZIJv/gmUjV/dkYFBYqPe1YWXkRkhf1T49ArJW1zJ205pNQHqRFB5Swe0z4/3d8SKac
         0usdscSMOmh1VUvg3wPdPmGo8X36D2Jd9XIv/9w9fWsvaDFmnuGslxViu0qQjg9tOOq+
         faO6nDrVcWfcX/vvr05QrlTf1AwbYTqnUoCnHvUyBBIsaxiMwqSXk2bh9+0ajbsmAKVq
         QJszDGzm2Buvv55YhMkCTn0RQvdG9sGK0oziboMkokx0EahU9A8i+H1oTozkr5W1UmAM
         hG6O+MHX4gfryHwdPoYLJhfwBFV66hSS5821IiZ1N6DOTXcKLG8u3b6kXGoVVghe+KV4
         jxMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793801901; x=1794406701;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=xHxxC+uoeAFYFHz/KDliWgJlTU3QRuBEN3NX80yiIhI=;
        b=s26SeUz3YNjW0ImogVP9WxACrKT6t3uFCBQ4gdSRj2dumJ6XFWKoT6Quj71LkhybPm
         0HX8H2eyuIiINuuBJuCr6v9GVYypZg5HN2jAsE5SuWapxhxWMvVEfVN3SLJdkrFGHWhG
         vESzpYCPrlKN4KpnFzQxGVlz+nPsF7Dqybvf4EHsjw/B664q+CUGuN1V/WqoHRuSVuC3
         G272JGfgf+PdJ8hv06er/laVn8oXOozDC0cVpCefR6E2NG7MFoO2iweK5eJdq4+zRd06
         RLbVhOlS/sJTlKBqX+0WmWguQsU0x9RZ69EZ8SobDGTQ8dyol+3W8XXCPuElGV/tiwU9
         oc4w==
X-Gm-Message-State: APuU4Z8n66i4IJRja1qFCjOFX6JQwohB10mn2VrrSv5k6Z+gCHVUHrzz
	9U0GHbWP66HQDTAvqr1Yg4/qirQtivfqGWFZZhupIBDmfT0S+1fO5qymg5mJxUlR
X-Gm-Gg: AYBFou2oJknMwzqoXWaWW9h5LDuCAbdBRWmxxXmTNVno2Xel7Cf/RZU6kzLq+PbGQOl
	jvo8x371RwmLvheDpWctyDYDBf597ToSW1ibzsoLuvSeMzl715jAAqVC5fv5kMsfNtifGvoR6Gu
	QGtxKu5gyAkqKTE7fNdbxNrd5zFRrcBVX5ZUZeHUqzHONFnkR7HObLO++RaoQr6lWvxQLdRFNdc
	2Ll2jT/jQhM6e9tuD2+tXNnVZDVI7f/aY30ZI3wWf5GF6XChDA1MJcH0ztA9UkkAZeFTqz2rZkB
	J2WpZ4jdLnBhqMKL2kVBDBzFk+Obq57o5tuH3d5e3iGL5f9AqFzRX0vuwmN+v3EI7ZwhZPXPMIM
	ZA/WryrrSwM7ybVZYLmFC9QIRwN4HqmQCn6ZceC4ZLTAbr7mDAvoiRZTVWFo8/88XyA1Hm/fYLN
	08Jte6+3JcsG3UM9vYRHsW4nqI6Jd50s+Cz037X86/9h9G1+Fv6OcH/EIL+dRfNy7lOL6Ni6fgf
	mewcjT6WIChGCRiUGrbApxXF7ny5H32LYcnQ3njwD3MvVXb7UqrrR1t481JkiaVDhqX5XnVWXgv
	dx8Kmm8GM4CfYkoerzem1pWhJjihsP9Ib8OCjnJqRvkOOz0=
X-Received: by 2002:a05:6000:40dc:b0:48e:412:3829 with SMTP id ffacd0b85a97d-48e6e3071f9mr37430249f8f.15.1793801900396;
        Wed, 04 Nov 2026 06:18:20 -0800 (PST)
From: Andrew Mbugua <andrewprecious388@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Mbugua <andrewprecious388@gmail.com>
Subject: [PATCH] tools/libs/guest: LZMA_OPTIONS_ERROR message cleanup
Date: Wed,  4 Nov 2026 17:18:13 +0300
Message-ID: <20261104141813.312697-1-andrewprecious388@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793801901-1F86F757-C2867395/0/0
X-purgate-type: clean
X-purgate-size: 1145

Code cleanup. No functional change.

The current message is formatted as:

DOMPRINTF("%s: %s decompression error: %s",
__FUNCTION__, what, msg);
free(out_buf);
goto lzma_cleanup;

Which outputs: Unsupported compression options

I have formatted the message to give insight to users who may encounter
compression filters such as BCJ filters without cluttering the log output.

The other option was to simply remove the "// FIXME: Better message?"
line and leave the message as is to cleanup the codebase.


Signed-off-by: Andrew Mbugua <andrewprecious388@gmail.com>
---
diff --git a/tools/libs/guest/xg_dom_bzimageloader.c b/tools/libs/guest/xg_dom_bzimageloader.c
index 32b3c682a4..a7ad260c27 100644
--- a/tools/libs/guest/xg_dom_bzimageloader.c
+++ b/tools/libs/guest/xg_dom_bzimageloader.c
@@ -217,8 +217,7 @@ static int _xc_try_lzma_decode(
             break;
 
         case LZMA_OPTIONS_ERROR:
-            // FIXME: Better message?
-            msg = "Unsupported compression options";
+            msg = "Unsupported compression options or filters";
             break;
 
         case LZMA_DATA_ERROR:


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:38:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:38:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472014.1680083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOc7h-0002mL-IQ; Wed, 04 Nov 2026 14:37:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472014.1680083; Wed, 04 Nov 2026 14:37:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOc7h-0002mE-Fb; Wed, 04 Nov 2026 14:37:57 +0000
Received: by outflank-mailman (input) for mailman id 1472014;
 Wed, 04 Nov 2026 14:37:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@swg.vates.tech>)
 id 1xOc7f-0002m8-JH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:37:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOc7e-006Zk7-Ox
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:37:54 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@swg.vates.tech>)
 id 6aeb4339-8faa-0a2a0a5109dd-0a2a45019d24-28
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:37:54 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@swg.vates.tech>)
 id 6aeb4341-5984-0a2a45010019-b9ff1c128025-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:37:54 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a6fea90d000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 04 Nov 2026 14:37:49 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id B24C681651;
 Wed,  4 Nov 2026 15:37:48 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=9OpyWEIyQp2Jx+57NWRUR/8fx0qobXOdmfVjys9TCoI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=qXCHoc4JV/D+czfXHUJ7WZy4S40+xrmRLyL1sjPQyMk5fwt8+Poz94ykP8OPO+WyKgcfoWqJp
 /EA4Laeu4MGTm+bl6ia8MsCcMEOpuL+e+LmHQRgNGPIKuS/SZI8aOUp01FdT7VOzJRhuGJ4wS2K
 BjA7S6ZSVZXKSW4rOHffkIiuCfKM4egNrs9IsPEXiZB49fz+/9qbeoKLZ+I9KKwguyZ9A8fzLd6
 DibVd+/VpT+RLIS/8p2AjjAwgXBJdrYXKdW4REWKZUGvNmmLxFa6r2fC3LxTsLhGhyNiIXTtHNc
 cw5C1v90WyNk5oaRnwMPrIoDcDoosIRv8CSy78tdpBdQ==
X-Zone-Loop: 49f7691744f65d734672d0a6e603ab92ef4f575485e6
x-campaign-type: default
x-transaction-id: 1fd07bc9-ffb3-4872-9a26-d677f741657c
x-swg-uid: 01-c7c42bef-17e3-42d8-bc69-e4a59a1f2b36
X-Mailer: Sweego
Message-ID:
 <1793803069.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@vates.tech>
x-swg-bid: 1793803069.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 38/39] xen/riscv: set the guest's XLEN explicitly in
 hstatus.VSXL
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <0c65801cec7cdac1556abc610e076f33c1500d1f.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <0c65801cec7cdac1556abc610e076f33c1500d1f.1790779209.git.oleksii.kurochko@gmail.com>
Date: Wed, 04 Nov 2026 15:37:42 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793803063; l=2436;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=gh2qu5G612IP4ZMCdKZoH5G7A8y1YxQiIilN27WQ/Xk=;
 b=nOBcv9+8RgoWotQH17xxETg00XYikCVtAwSxi8EtOd3fhmvA71gmtsfuGtpuBShUSu35eEDeq
 37p6INFqcVmBhypgGFXAxvnJYoX0Ltef6RKpxg6/xTdCfUjahaWEltp
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793803068938
X-purgate-ID: tlsNG-d62444/1793803074-BE664757-CA094241/0/0
X-purgate-type: clean
X-purgate-size: 2436

> [ ... 97 lines skipped ... ]
> --- a/xen/arch/riscv/domain.c
> +++ b/xen/arch/riscv/domain.c
> @@ -51,6 +51,119 @@ static struct csr_masks __ro_after_init csr_masks;
>  #define HENVCFG_VALID_MASK 0xe0000003000000ffUL
>  #define HSTATEEN0_VALID_MASK 0xde00000000000007UL
>  
> +/*
> + * Return the hstatus.VSXL value encoding the guest's XLEN. Whether the
> + * hardware can actually provide that width is a separate question, answered
> + * by hstatus_vsxl_settable().
> + *
> + * The switch() deliberately has no default case, so that adding a new
> + * domain_type (a 128-bit one, in particular) fails to build until this
> + * mapping is updated.
> + */
> +unsigned int domain_vsxl(const struct domain *d)
> +{
> +    switch ( d->type )
> +    {
> +    case DOMAIN_32BIT:
> +        return XLEN_FIELD_32;
> +
> +    case DOMAIN_64BIT:
> +        return XLEN_FIELD_64;
Couldn't we add to avoid having to explain why there is no default in
the comment above, and to respect MISRA rules?
default:
    break
> +    }
> +
> +    ASSERT_UNREACHABLE();
> +
> +    /* A reserved encoding, which hstatus_vsxl_settable() never accepts. */
> +    return 0;
Could this get a name next to XLEN_FIELD_{32,64,128} in riscv_encoding.h,
e.g.:

#define XLEN_FIELD_RESERVED     _UL(0)
so the comment isn't the only thing explaining the 0?
> [ ... 88 lines skipped ... ]
> +
>  void __init init_csr_masks(void)
>  {
>      /*
> @@ -91,6 +204,10 @@ static void vcpu_csr_init(struct vcpu *v)
>  {
>      v->arch.hedeleg = HEDELEG_DEFAULT & csr_masks.hedeleg;
>  
> +    /*
> +     * hstatus.VSXL is left zero here: the domain's type, and hence the
> +     * guest's XLEN, is only known once its kernel image has been probed.
> +     */

"Probe" refers to two different things in this series: the hardware
probe of the settable hstatus.VSXL values (init_hstatus_vsxl_settable_mask())
and the guest kernel header parsing (kernel_probe()). This comment is
about the latter, but it is easy to read it as the former, which already
ran at boot. Could you name it explicitly and state the ordering that
actually matters? I'd suggest:

    /*
     * hstatus.VSXL is left zero here: vCPU0 is created before
     * kernel_probe() reads the guest kernel header, so the domain's type,
     * and hence the guest's XLEN, is not known yet.
     */

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:39:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:39:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472022.1680091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOc9M-0003Kh-S0; Wed, 04 Nov 2026 14:39:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472022.1680091; Wed, 04 Nov 2026 14:39:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOc9M-0003Ka-PA; Wed, 04 Nov 2026 14:39:40 +0000
Received: by outflank-mailman (input) for mailman id 1472022;
 Wed, 04 Nov 2026 14:39:39 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOc9L-0003KS-Hw
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:39:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOc9K-000cn8-Ur
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:39:38 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aeb43a7-2eae-0a2a0a5409dd-0a2a4505b6f2-10
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:39:38 +0100
Received: from [52.101.66.100]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aeb43a6-4cb1-0a2a45050019-346542640895-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:39:35 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by AS8PR03MB9368.eurprd03.prod.outlook.com
 (2603:10a6:20b:5a0::5) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026
 14:39:32 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Wed, 4 Nov 2026
 14:39:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=R+w/KRTfV+mqhAZpM7TM59Xm+yI6It+iSUP+2G7rt7sl2TT+M5a6W0DYghJ1RShJuB7Xpsmy7jncCz6vjI8tnoJViIyUhNhLCdkoi0CofcOgTlRb+DgwZlOpf67EBG8AaSasWiJuL5gAAm5fcn3Z8HJrI2D8oaC/Omf+LIwqasNEkvwa0F2Cv1AI/J3xurQqPdC7Cni9602AD+XbabBEVD9L5zt5z0Q/mzly04KUULeyDZuI/GdoX+46n4vQ8ln4IQWb2AUZ/Fol4qIxtbIc9JY57ERfU6FOirMbfGi5BzW663LObykLT8YoQ7Dg1j/u57y/2FS3u+WlfdEdvjFgwA==
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=Xuj3bTeBzM/5Z1mSS1MBhHV23EvbcBN9zmOfa4nMTtY=;
 b=JRcT/J0fbVLN2vwDSd28enkYIDEgiotFxoXJaraxXlDkMcoiXFvQq7bF87kc6D40rWSgtb+J4ogXKVrXMMM6iI2VlKzuM7R65AdoEvgAr1NqWdd9zyIBzqzI71edWPZXImFtkfCkIehrJ52D/TTRJ/nRqa9RcARoyN7bYNJ3RHKAQF78ErQBUk9Zub5PDUbXTFoRqP4pHk/VNpdM4L0gYqqFst8wF4dB5fW8xqP2D2O0bsVb/Yv7GVSyK5eltkEn8IfDaKd+iOeWcquPijuSjTLU9lJLsstq4LBsqqJ++bNbk+s18eVezATgpTl5l9nZNX6HEl2876VXnD/yJzlhNQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Xuj3bTeBzM/5Z1mSS1MBhHV23EvbcBN9zmOfa4nMTtY=;
 b=cB3ZhGWYT4CpwvUcBT9oaTlk/kCFNybZmmT/KMGJRc2TKhqxmFmQZ84GQBXWqTyD+NXMDby0ngY3FfYVNV9f2Sk3RJbX60QQS8Ac5Llw2m2KmxopQ8btOjvyz1GrWfZdl8xDE/YyWZpc49gQe40PRIGXNwU8IkX5M9DRn+BmX7f+o00EvZWl7JPT72dj0rgC5SLg0LaNKyuudSGIHyl4IlrfisQ+Zj6D8IogNm1gG6iXGHJuIWGUaYrFTOigNqWydhHdoNxCrbore/9vF/3i/14Er2uZbvBWu09OtB0QkB4AMKsOh4hyNntMP2GoV9ZxSb93ckEv4PBem/rLkW2zqw==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I31v/+oPR9ykKZQEp+RtbzYLcd/VQA
Date: Wed, 4 Nov 2026 14:39:31 +0000
Message-ID: <d914b586-0901-4b29-8d92-187c4478473a@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
 <04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
 <874idxmd91.fsf@epam.com> <2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com>
 <87pkwklr3f.fsf@epam.com>
In-Reply-To: <87pkwklr3f.fsf@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|AS8PR03MB9368:EE_
x-ms-office365-filtering-correlation-id: 860eaa63-be42-461c-1609-08df3a817048
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|7416014|23010399003|376014|1800799024|6133799003|10067099003|22082099003|18002099003|3023799007|38070700021|56012099006|4143699003|11063799006|261022105027099003|261102123227099003|261022075727099003|261026121527099003|261028144727099003|261026140227099003|261021121427099003|261009223027099003|261021135927099003;
x-microsoft-antispam-message-info:
 8Nqt+nfMvwlJPuCpktYn7SIQzTv9Be7pKMxqjImchQECsty/q21nvXPbSUHYcqvaRMYGSSdGt0qswIdwBM5fSx7/74izCPt/WWieNjIS5j4FMebiuLJDp3/HUmOWeTJEpSP0Yhzii+9w/pdzkO/d89qYImkKMA2rqheYk2eAjTYZkYBpDXLZkKUGqCmzAhvdxy9GqJQ2bY4t799gjH7dfH541rEWT2hPTZKa3E9H0snS3WkMLy676gOXrr0DRuH7U3jHAfMMH+aGYtF7h11hJTpR3O3Jzw731qk4cHMmG96cw40axBfz92m2XoBbR3Hm3tiLfDyWuH5zwr9ogf7vNfsTaeYS5/0e7OseJ7waz7B6rNcZQKP4pKEwEOxB/uycExfTYT/b7Y1ipjA/XfBCy50wLwCPbb2R9KDOkqkBhOH2HQ54JZr04AMA1TvtHCim0eFYYVB/ltOqrfik5z5av6+oHNUfkkaN85KnbVAL0mKGQ2/MIE/lJGoZWW/HIsdy4mOyOLN0NYHhUgWeHrBEOIcG2zyxFBRlvNUy5gs3H8CvZiIEcjXLHtPNWaAIQbERQaNaGjjxZeGvf0xiANUIOKNA6CHcP11pe8xB27kKP8CLF8KuLm9TMxe+MCXvH30qlKZ+cCHnK15uHxEop6EmW3f6Lg68O/YiowJYrmqGmVEyVi+uvhIpjl1ptMJtPqY3
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(23010399003)(376014)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(3023799007)(38070700021)(56012099006)(4143699003)(11063799006)(261022105027099003)(261102123227099003)(261022075727099003)(261026121527099003)(261028144727099003)(261026140227099003)(261021121427099003)(261009223027099003)(261021135927099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MjVJamhQQy9RaFRWVFk3N1YrZFl6Zll5TzFhWGM4R3NFQlNmNDg0SitROU9M?=
 =?utf-8?B?MDV3WVhIbWs0NXRsanpLK2ZLemE5TlUxL3B1S1lnVDdxVk9yVy9RcDQ4aldG?=
 =?utf-8?B?L0VvMVphSis2VG9Kb2tEZGpSeEdvTWFteUlPYnI0alRmNHcxb3dneW45dUxH?=
 =?utf-8?B?TjY5bzlVc1JMSnJuUXkweHFuMWxhUVRBVDRPSUhMT2dZOTl0aUc2Tjh5ZEtD?=
 =?utf-8?B?YUsxekpnZkdCNHg2emIzeFMwNWlDU08wVmhxS2FLVnRBUU1KZkVpdmVpYW1B?=
 =?utf-8?B?MGZQSnpQTStFZXZyMU9SQzc3OGRJT2F1aitjRXJUbE1ibzlDY2ZQN2RGWjF6?=
 =?utf-8?B?QklxVWcybWZlNVlPcVRpSlVhcXRNcFZzVnlRck95bWtaUFg4MXBxVkhFU0t0?=
 =?utf-8?B?dnM4K1h2aHd2ZE9oSTA0WWxjMURjTDlVZEFDeDQrQTJZM2tDOERnbDVKTm9G?=
 =?utf-8?B?ZHdrUUJ5ZU9mR2F5cWlNVTNJYUphZmVjQVZWMmkreUlldFpRczhSbVUyOTNu?=
 =?utf-8?B?OUtseEJSYkx2NFhvTHRHbTdFSzhUUTVIYnhQNlo0UUFBVGVBemNDUnIyTU4w?=
 =?utf-8?B?OStuOXpxeGR5MUhLNjh1Z0hWWk9SZWNYMGFlVkQ4Z051dmN4RXYra2JYQ290?=
 =?utf-8?B?ZUY5cWE5a3JtSjR5SVI5MXBhSXJuRFNBVWJReEFmSHd5ck5leE5mRFVGa0lS?=
 =?utf-8?B?bmd6d3BrdEJLaDduR00wSUV0TWwxZytpSlJMUGhaeWNwQnJrQVZTZ1pPdFBx?=
 =?utf-8?B?SEJpWmljZ1ZVdHF5a0ErdFo1OG9xMmJCQ3pzQ0xJREdad3FuRmRCcTYzejQ3?=
 =?utf-8?B?ckRrRzhnbk1GZEJBZE9JVkRxOGN2UHNTZk8rMW53U0tBQXZ2VVQyMjNVVmpB?=
 =?utf-8?B?MGxYYWNpeGhON3JpZCtaRjdmUU1SZE05WDVlZnpyaVdoM283L1E1R2d4UTRL?=
 =?utf-8?B?ZDd2Tnd1cFBSU0NzOElRODdpS2dSZnpSNmNScFZZTGxHZi9ZNjRCZXk3cUg1?=
 =?utf-8?B?dEVZTm1hbDZ0eG5Fd1VncC8xTktXSnRtS1BQOWNRVHJhY1E4THoyYkdTVXpE?=
 =?utf-8?B?NTZSOE9DU3RaL3hPZ0IvMnJtQXQ0M1UwaWYyTFdlaFRXaWJFWm5vVDMyZGdN?=
 =?utf-8?B?U3ozK2p6amlmWDE2NWxqUGhYUDBBTElkMjMzcEdlUnFmY2VldVNVNHh4Wmps?=
 =?utf-8?B?em9HeU9KaU02QnRBVzBBTDVhekpxMlRLRGZybzh2OVpqMFJuYURqMm16ZVBX?=
 =?utf-8?B?dWpocWdrSmNMQWQ3cVlmV21mU0xkbU5mTGlBbjdCamtrT3pzQ3VXa1dOZk9H?=
 =?utf-8?B?RWt2Ykl6QXVYQ3c0S3E1Ylo2R09CZXNyT0FTZURDQVJYdlc3S2U1ZUw4TlZy?=
 =?utf-8?B?TGZkMFc2WVNIeW95Z2g4N2ttS0hKbEZ1aFVqSERXTmFCNzEzbFNpLy93dHNk?=
 =?utf-8?B?WFBreEJzeEpYdkM4NUUyU1I3MzMyWUxQNUxHTUVhNWZNZk1xMHppWFp5U2Rx?=
 =?utf-8?B?cTNPdHl3TVM4MnpWQ2RRT0JnMzltL0hOcHlTTFpNcVdEZnpLcHdRdnJoRXF0?=
 =?utf-8?B?SHhWK0FIWXlhZWZrQ1FPNnVGK1F1QTJKKzZaWFhaSUFsdHBzTTFmVXQva0hn?=
 =?utf-8?B?MzRCM0hIeWh3TTF2RFVxMjhrL3Z0WHFpSXMxZURsZjFLUkcrTXpDcmxTNVhC?=
 =?utf-8?B?V3NGL3Zuamg2bFNwQ0YvVFJOM0M5ekNhWXQ2T0FBRm1yMUxsUkRCVFY1YWRt?=
 =?utf-8?B?WmY0SUFMQy9pNUwwQjlId3AvaExhQzJRZmdLaE55TUIvbERXOWdhT1YrZmZr?=
 =?utf-8?B?K3VsUU12V0ZyTGZMNnRVaXA4NEVtWjJiamJMVnhiT2pwNTAyZkU5NTI0ZnFm?=
 =?utf-8?B?a3ZqWFRiS096MkcvbWlTUGhGc2VoWWJjdXpua0hJZURRQTdqdnBZV0thcWo1?=
 =?utf-8?B?V0JsVzNzdGNJbnQxYVQzUS92SUpvRUZZRTdrYlVmWGFWaXpHaW5rQnhUb0I0?=
 =?utf-8?B?Q24vY0FLYU0vT05qYjlza0s4aW5NNXpLMVdCS3NlTVJEVy9BalZkVFlsZnVL?=
 =?utf-8?B?K0szVUdtbW5mQXUyRlV5ZG04SDNrUlV5SFhTMnNqaFZpZWU1N2NKN2IwSit1?=
 =?utf-8?B?SkJBWjVMRmdzMUJtTmtWSm5sV2IzTnQvaGdrblEyRWl6eWI2YXgvTUVYQ1Fw?=
 =?utf-8?B?QkJPQlV1Q1pHU2Y3SjErbURzbFRNWExvYWVYTUxBV1ZRa216Ykt2cFNFcENp?=
 =?utf-8?B?Ly9WTnY1alcza3V1emgrdzNVUS9SWjFMa0daamZFcGRHSmd3R0JmRGZYMjlP?=
 =?utf-8?B?MHY3Q1o0RTZpcUFORktMTGxqbWIvd2R1S0VVWWQ5WnNrRi94MHlZOURPVmhN?=
 =?utf-8?Q?WKzcm2ZX4MpI8eDA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <900CC2FB8F1C324E9F0A4388BA9B8337@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 860eaa63-be42-461c-1609-08df3a817048
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 14:39:31.8417
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 502Tfnhn9mrec8/2MTxe0feA9cFSq2G1bI6hIDP2XZTqfhvDMehUBzv0u3Oejt0b1AUjyUNnnEUN9WiydPq63PhfIazbJUMDQ/eA5Pl/bF0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB9368
X-purgate-ID: tlsNG-c201ff/1793803175-F5AAF2A1-953FCB45/0/0
X-purgate-type: clean
X-purgate-size: 17884

DQpPbiAwNC8xMS8yMDI2IDE0OjI3LCBWb2xvZHlteXIgQmFiY2h1ayB3cm90ZToNCj4gSGkgT2xl
a3NpaSwNCj4NCj4gT2xla3NpaSBNb2lzaWVpZXYgPE9sZWtzaWlfTW9pc2llaWV2QGVwYW0uY29t
PiB3cml0ZXM6DQo+DQo+PiBIaSBWb2xvZHlteXIsDQo+Pg0KPj4gVGhhbmsgeW91IGZvciB0aGUg
cmV2aWV3LiBwbGVhc2Ugc2VlIGJlbG93Og0KPj4NCj4+IE9uIDA0LzExLzIwMjYgMDY6MjgsIFZv
bG9keW15ciBCYWJjaHVrIHdyb3RlOg0KPj4+IEhpLA0KPj4+DQo+Pj4NCj4+PiBJJ20gc29ycnks
IEkgcG9zdHBvbmVkIGRvY3VtZW50YXRpb24gcmV2aWV3IHRpbGwgd2UgZmluaXNoZWQgd2l0aCBj
b2RlDQo+Pj4gcGFydC4gVGhpcyB3YXMgbXkgbWlzdGFrZS4gSSBkaWRuJ3QgZXhwZWN0ZWQgdGhh
dCBpdCByZXF1aXJlIHNlcmlvdXMNCj4+PiBwcm9vZnJlYWRpbmcuIEFueXdheSwgSSB0cmllZCB0
byBoaWdobGlnaHQgbW9zdCBnbGFyaW5nIG1pc3Rha2VzLCBidXQgaXQNCj4+PiB3b3VsZCBiZSBn
cmVhdCBpZiB5b3UgcHJvb2ZyZWFkIGl0IGJ5IHlvdXJzZWxmIG9uY2UgYWdhaW4uDQo+Pj4NCj4+
PiBPbGVrc2lpIE1vaXNpZWlldiA8T2xla3NpaV9Nb2lzaWVpZXZAZXBhbS5jb20+IHdyaXRlczoN
Cj4+Pg0KPj4+PiBGcm9tOiBHcnlnb3JpaSBTdHJhc2hrbyA8Z3J5Z29yaWlfc3RyYXNoa29AZXBh
bS5jb20+DQo+Pj4+DQo+Pj4+IEFkZCBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIGRv
Y3VtZW50YXRpb24uDQo+Pj4+IEl0IGluY2x1ZGVzIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2Yg
dGhlIFNDTUkgbXVsdGktYWdlbnQgZHJpdmVyLg0KPj4+PiBUaGlzIGRvY3VtZW50IGV4cGxhaW5z
IHRoZSBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LCBjb25maWd1cmF0aW9uLA0KPj4+PiBhbmQgdGhl
IGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoZSBYZW4gU0NNSSBtdWx0aS1hZ2VudCBkcml2ZXIgaXMN
Cj4+Pj4gZGVzaWduZWQgdG8gcHJvdmlkZSBTQ01JIGFjY2VzcyB0byBzeXN0ZW0gcmVzb3VyY2Vz
IGZyb20gZGlmZmVyZW50DQo+Pj4+IGRvbWFpbnMuDQo+Pj4+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6
IEdyeWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbT4NCj4+Pj4gU2ln
bmVkLW9mZi1ieTogT2xla3NpaSBNb2lzaWVpZXYgPG9sZWtzaWlfbW9pc2llaWV2QGVwYW0uY29t
Pg0KPj4+PiAtLS0NCj4+Pj4NCj4+Pj4gKG5vIGNoYW5nZXMgc2luY2UgdjE0KQ0KPj4+Pg0KPj4+
PiBDaGFuZ2VzIGluIHYxNDoNCj4+Pj4gLSBkZXNjcmliZSBzZWNvbmRhcnkgYWdlbnRzIGFzIHhl
bixzY21pLWFnZW50IG5vZGVzIHVuZGVyIGFnZW50cw0KPj4+PiAtIHVwZGF0ZSBob3N0LCBkaXNj
b3ZlcnkgYW5kIGRvbTBsZXNzIGV4YW1wbGVzIGZvciB0aGUgY2hpbGQtbm9kZSBmb3JtYXQNCj4+
Pj4gLSBjbGFyaWZ5IHNoYXJlZC1tZW1vcnkgcGxhY2VtZW50IGFuZCBwbGF0Zm9ybSBSQU0gcmVz
ZXJ2YXRpb25zDQo+Pj4+DQo+Pj4+IENoYW5nZXMgaW4gdjEwOg0KPj4+PiAtIHJlcGhyYXNlIHNl
Y3Rpb24gYWJvdXQgL2Zpcm13YXJlL3NjbWkuIE1lbnRpb25lZCB0aGF0IHRoaXMgbm9kZSBpcw0K
Pj4+PiB0YWtlbiBmcm9tIEhvc3QgRFQgYW5kIGNvcGllZCB1bm1vZGlmaWVkLg0KPj4+PiAtIGZp
eCB4ZW4scmVnIGFkZHJlc3MgZm9yIHNlY29uZGFyeSBkb21haW5zIGZvciBEb20wbGVzcyBjb25m
aWd1cmF0aW9uDQo+Pj4+DQo+Pj4+IENoYW5nZXMgaW4gdjg6DQo+Pj4+IC0gdXBkYXRlIGRvY3Vt
ZW50YXRpb24gdG8gbWF0Y2ggdGhlIGxhc3QgRFQgZm9ybWF0DQo+Pj4+IC0gZml4ZWQgUlNUOiAi
Li4uIGNvZGUtYmxvY2s6OiBkdHMiIC0+ICIuLiBjb2RlLWJsb2NrOjogZHRzIg0KPj4+PiAtIHVw
ZGF0ZSBkb2N1bWVudGF0aW9uIHdpdGggZG9tMGxlc3MgY29uZmlndXJhdGlvbiBleGFtcGxlDQo+
Pj4+IC0gdXBkYXRlIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgcGFyYW0geGVuLGRvbTAtc2NpLWFn
ZW50LWlkDQo+Pj4+IGluc3RlYWQgb2YgdGhlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXINCj4+Pj4N
Cj4+Pj4gQ2hhbmdlcyBpbiB2NzoNCj4+Pj4gLSB1cGRhdGUgZG9jdW1lbnRhdGlvbiBpbiBzZWN0
aW9uIG9mIHRoZSB4ZW5fc2NtaSBjb25maWd1cmF0aW9uIHdoaWNoDQo+Pj4+IGlzIG1hdGNoZWQg
YnkgInhlbixzY2kiIGNvbXBhdGlibGUgaW5zdGVhZCBvZiB0aGUgZGlyZWN0IHBhdGguDQo+Pj4+
DQo+Pj4+IENoYW5nZXMgaW4gdjY6DQo+Pj4+IC0gcmVtb3ZlIGFsbCBIVkMgbWVudGlvbnMgZnJv
bSB0aGUgbXVsdGktYWdlbnQgZG9jDQo+Pj4+IC0gdXBkYXRlIHNjaS1hZ2VudC1pZCBwYXJhbWV0
ZXIgZGVzY3JpcHRpb24gaW4gdGhlIGRvY3VtZW50YXRpb24NCj4+Pj4gLSBhZGQgbWlzc2luZyBT
aWduLW9mDQo+Pj4+IC0gbWlub3IgZml4ZXMgYWNyb3NzIHRoZSBkb2N1bWVudA0KPj4+Pg0KPj4+
PiBDaGFuZ2VzIGluIHY1Og0KPj4+PiAtIHJld29yayBtdWx0aS1hZ2VudCBkcml2ZXIgdG8gbGVh
dmUgSG9zdCBEZXZpY2UtdHJlZSB1bm1vZGlmaWVkDQo+Pj4+DQo+Pj4+ICAgIC4uLi9hcm0vZmly
bXdhcmUvYXJtLXNjbWkucnN0ICAgICAgICAgICAgICAgICB8IDQwNSArKysrKysrKysrKysrKysr
KysNCj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDQwNSBpbnNlcnRpb25zKCspDQo+Pj4+DQo+Pj4+
IGRpZmYgLS1naXQgYS9kb2NzL2h5cGVydmlzb3ItZ3VpZGUvYXJtL2Zpcm13YXJlL2FybS1zY21p
LnJzdCBiL2RvY3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0DQo+
Pj4+IGluZGV4IGQ5Njk4ZjRlNGIuLjI1NDU5ZDIyZGMgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RvY3Mv
aHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0DQo+Pj4+ICsrKyBiL2Rv
Y3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0DQo+Pj4+IEBAIC0z
Niw2ICszNiw4IEBAIFRoZSBiZWxvdyBzZWN0aW9ucyBkZXNjcmliZSBTQ01JIHN1cHBvcnQgb3B0
aW9ucyBhdmFpbGFibGUgZm9yIFhlbi4NCj4+Pj4NCj4+Pj4gICAgfCBbMV0gYEFybSBTQ01JDQo+
Pj4+ICAgIHwgPGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4wMDU2
L2xhdGVzdC8+YF8NCj4+Pj4gICAgfCBbMl0gYFN5c3RlbSBDb250cm9sIGFuZCBNYW5hZ2VtZW50
IEludGVyZmFjZSAoU0NNSSkgYmluZGluZ3MNCj4+Pj4gICAgfCA8aHR0cHM6Ly93ZWIuZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVl
L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9maXJtd2FyZS9hcm0sc2NtaS55YW1s
PmBfDQo+Pj4+ICt8IFszXSBgR2VuZXJpYyBEb21haW4gQWNjZXNzIENvbnRyb2xsZXJzIGJpbmRp
bmdzIDxodHRwczovL3dlYi5naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
dG9ydmFsZHMvbGludXguZ2l0L3RyZWUvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2FjY2Vzcy1jb250cm9sbGVycy9hY2Nlc3MtY29udHJvbGxlcnMueWFtbD5gXw0KPj4+PiArDQo+
Pj4+DQo+Pj4+ICAgIFNpbXBsZSBTQ01JIG92ZXIgU01DIGNhbGxzIGZvcndhcmRpbmcgZHJpdmVy
IChFTDMpDQo+Pj4+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KPj4+PiBAQCAtMTg5LDMgKzE5MSw0MDYgQEAgZXhjZXB0IGV4cGxpY2l0
bHkgZW5hYmxpbmcgU0NNSSB3aXRoICJhcm1fc2NpIiB4bC5jZmcgb3B0aW9uLg0KPj4+PiAgICAg
ICAgLT4gICAgICAgIHhlbixyZWcgPSA8MHgwIDB4NDdmZjAwMDAgMHgwIDB4MTAwMCAweDAgMHgy
MjAwMTAwMD47DQo+Pj4+ICAgICAgICAtPiAgICAgICAgeGVuLGZvcmNlLWFzc2lnbi13aXRob3V0
LWlvbW11Ow0KPj4+PiAgICAgICAgICB9Ow0KPj4+PiArDQo+Pj4+ICtTQ01JIFNNQyBtdWx0aS1h
Z2VudCBkcml2ZXIgKEVMMykNCj4+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCj4+Pj4gKw0KPj4+PiArVGhlIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBlbmFi
bGVzIHN1cHBvcnQgZm9yIEFSTSBFTDMgVHJ1c3RlZCBGaXJtd2FyZS1BIChURi1BKSB3aGljaA0K
Pj4+PiArcHJvdmlkZXMgU0NNSSBpbnRlcmZhY2Ugd2l0aCBtdWx0aS1hZ2VudCBzdXBwb3J0LCBh
cyBzaG93biBiZWxvdy4NCj4+Pj4gKw0KPj4+PiArOjoNCj4+Pj4gKw0KPj4+PiArICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4+PiArICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4+PiArICAgICAgfCBF
TDMgVEYtQSBTQ01JICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4+PiArICAgICAgKy0t
LS0tLS0rLS0rLS0tLS0tLSstLSstLS0tLS0tKy0tKy0tLS0tLS0rKw0KPj4+PiArICAgICAgfHNo
bWVtMSB8ICB8c2htZW0wIHwgIHxzaG1lbTIgfCAgfHNobWVtWCB8DQo+Pj4+ICsgICAgICArLS0t
LS0rLSsgICstLS0rLS0tKyAgKy0tKy0tLS0rICArLS0tKy0tLSsNCj4+Pj4gKyAgICBzbWMtaWQx
IHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8DQo+Pj4+ICsgICAgYWdlbnQxICB8ICAg
ICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4+PiArICAgICAgKy0tLS0tdi0tLS0tLS0t
Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKw0KPj4+PiArICAgICAgfCAgICAgICAgICAgICAg
fCAgICAgICAgIHwgICAgICAgICAgIHwgICAgfA0KPj4+IFhlbiwgSSBiZWxpZXZlPw0KPj4gSXQg
aXMuIEJ1dCBpbiB0ZXJtcyBvZiBTQ01JIHRoaXMgaXMgcHJpdmlsZWdlZCBhZ2VudC4gSGF2ZW4n
dCBtZW50aW9uZWQNCj4+IFhlbiBoZXJlIGZvciB0aGUgc2FrZSBvZg0KPj4NCj4+IGRpYWdyYW0g
c2ltcGxpY2l0eSAoanVzdCBkb24ndCBzZWUgYSBnb29kIHBsYWNlIHdocmUgSSBjYW4gcGxhY2Ug
IlhlbiINCj4+IGluIHRoaXMgZGlhZ3JhbS4gVGhlIG1haW4gaWRlYSBpcw0KPiBJIHRoaW5rIHlv
dSBjYW4gcGxhY2UgIlhlbiIgaW4gdGhlIGNlbnRyZS4gVGhlcmUgaXMgZnJlZSBzcGFjZSBmb3Ig
aXQgZml0Lg0KPiBKdXN0IGFkZCBhIG5ldyBsaW5lLCBzbyBpdCBpcyBuaWNlIGFuZCBjZW50ZXJl
ZCwgbGlrZSB0aGlzOg0KPg0KPiArICAgICAgfCAgICAgICAgICAgICAgfCAgIFhlbiAgIHwgICAg
ICAgICAgIHwgICAgfA0KPg0KPj4gdGhhdCBkcml2ZXIgbGVhdmVzIHNjbWkgcHJpdmlsZWdlZCBh
Z2VudCBmb3IgaXRzZWxmIChhZ2VudDEgaW4gb3VyIGNhc2UpDQo+PiByZWdhcmRsZXNzIHdoZXJl
IHRoaXMgZHJpdmVyIHJ1bnMuDQo+Pg0KPj4gVGhpcyBmb3JtYXQgd2FzIHRha2VuIHNpbmNlIGRy
aXZlciBpdHNlbGYgaXMgYXZhcmUgYWJvdXQgdGhlIGRvbWFpbnMgYW5kDQo+PiBjaGFubmVscy4N
Cj4+DQo+Pj4+ICsgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAg
ICB8DQo+Pj4+ICsgICAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t
LS0rDQo+Pj4+ICsgICAgICAgICAgICAgc21jLWlkMCB8ICBzbWMtaWQyfCAgICBzbWMtaWRYfA0K
Pj4+PiArICAgICAgICAgICAgIGFnZW50MCAgfCAgYWdlbnQyIHwgICAgYWdlbnRYIHwNCj4+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8DQo+Pj4+ICsgICAg
ICAgICAgICAgICAgKy0tLS12LS0tKyAgKy0tdi0tLS0tKyAgKy0tdi0tLS0tKw0KPj4+PiArICAg
ICAgICAgICAgICAgIHwgICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+Pj4gKyAg
ICAgICAgICAgICAgICB8IERvbTAgICB8ICB8IERvbTEgICB8ICB8IERvbVggICB8DQo+Pj4+ICsg
ICAgICAgICAgICAgICAgfCAgICAgICAgfCAgfCAgICAgICAgfCAgfCAgICAgICAgfA0KPj4+PiAr
ICAgICAgICAgICAgICAgIHwgICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+Pj4g
KyAgICAgICAgICAgICAgICArLS0tLS0tLS0rICArLS0tLS0tLS0rICArLS0tLS0tLS0rDQo+Pj4+
ICsNCj4+Pj4gK1RoZSBFTDMgU0NNSSBtdWx0aS1hZ2VudCBmaXJtd2FyZSBpcyBleHBlY3RlZCB0
byBwcm92aWRlIFNDTUkgU01DIHNoYXJlZC1tZW1vcnkgdHJhbnNwb3J0DQo+Pj4+ICtmb3IgZXZl
cnkgQWdlbnQgaW4gdGhlIHN5c3RlbS4gVGhlIFNDTUkgQWdlbnQgdHJhbnNwb3J0IGNoYW5uZWwg
ZGVmaW5lZCBieSBwYWlyOg0KPj4+PiArDQo+Pj4+ICstIHNtYy1pZDogU01DIGZ1bmN0aW9uIGlk
IHVzZWQgZm9yIERvb3JiZWxsDQo+Pj4+ICstIHNobWVtOiBzaGFyZWQgbWVtb3J5IGZvciBtZXNz
YWdlcyB0cmFuc2ZlciwgKipYZW4gcGFnZSBhbGlnbmVkKiouDQo+Pj4+ICsgIFNoYXJlZCBtZW1v
cnkgaXMgbWFwcGVkIHdpdGggdGhlIGZvbGxvd2luZyBmbGFnczogTVRfREVWSUNFX25HblJFIGFu
ZCBfUEFHRV9ERVZJQ0UsIGluZGljYXRpbmcgdGhhdCB0aGlzDQo+Pj4gRG8gd2UgaGF2ZSBhbnkg
bGluZSBsZW5ndGggbGltaXRhdGlvbiBmb3IgLnJzdCBmaWxlcz8gVGhpcyBvbmUgaXMgMTE0DQo+
Pj4gY2hhcmFjdGVycyBsb25nLg0KPj4gcnN0Y2hlY2sgZ2l2ZXMgMCBlcnJvcnMsIGJ1dCBJIGNh
biByZWZvcm1hdCBpdCB3aXRoIG1heGxpbmUgMTIwLg0KPj4+PiArICBtZW1vcnkgaXMgbWFwcGVk
IGFzIGRldmljZSBtZW1vcnkuDQo+Pj4+ICsNCj4+Pj4gK1RoZSBmb2xsb3dpbmcgU0NNSSBBZ2Vu
dHMgYXJlIGV4cGVjdGVkIHRvIGJlIGRlZmluZWQgYnkgU0NNSSBGVyB0byBlbmFibGUgU0NNSSBt
dWx0aS1hZ2VudCBmdW5jdGlvbmFsaXR5DQo+Pj4+ICt1bmRlciBYZW46DQo+Pj4+ICstDQo+Pj4+
ICstIFhlbiBtYW5hZ2VtZW50IGFnZW50OiB0cnVzdGVkIGFnZW50cyB0aGF0IGFjY2Vzc2VzIHRv
IHRoZSBCYXNlIFByb3RvY29sIGNvbW1hbmRzIHRvIGNvbmZpZ3VyZQ0KPj4+ICJ0cnVzdGVkIGFn
ZW50Iiwgbm90ICJhZ2VudHMiDQo+Pj4NCj4+PiBhbHNvLCAidGhhdCBhY2Nlc3NlcyB0aGUgQmFz
ZSBQcm90b2NvbCBjb21tYW5kcyB0byBjb25maWd1cmUuLi4iIG9yICJ0aGF0IGhhcw0KPj4+IGFj
Y2VzcyB0byB0aGUgQmFzZSBQcm90b2NvbCBjb21tYW5kcyB0byBjb25maWd1cmUuLi4iDQo+Pj4N
Cj4+Pj4gKyAgYWdlbnQgc3BlY2lmaWMgcGVybWlzc2lvbnMNCj4+PiAiYWdlbnQtc3BlY2lmaWMi
DQo+Pj4NCj4+Pj4gKy0gT1NQTSBWTSBhZ2VudHM6IG5vbi10cnVzdGVkIGFnZW50LCBvbmUgZm9y
IGVhY2ggR3Vlc3QgZG9tYWluIHdoaWNoIGlzICBhbGxvd2VkIGRpcmVjdCBIVyBhY2Nlc3MuDQo+
Pj4gIm5vbi10cnVzdGVkIGFnZW50cyIuIEFsc28sIGRvdWJsZSBzcGFjZSBiZXR3ZWVuICJpcyIg
YW5kICJhbGxvd2VkIg0KPj4+DQo+Pj4+ICsgIEF0IGxlYXN0IG9uZSBPU1BNIFZNIGFnZW50IGhh
cyB0byBiZSBwcm92aWRlZCBieSBGVyBpZiBIVyBpcyBoYW5kbGVkIG9ubHkgYnkgRG9tMCBvciBE
cml2ZXIgRG9tYWluLg0KPj4+ICJIYXJkd2FyZSBEb21haW4iLCBwcm9iYWJseQ0KPj4+DQo+Pj4+
ICsNCj4+Pj4gK1RoZSBFTDMgU0NNSSBGVyBpcyBleHBlY3RlZCB0byBpbXBsZW1lbnQgZm9sbG93
aW5nIEJhc2UgcHJvdG9jb2wgbWVzc2FnZXM6DQo+Pj4+ICsNCj4+Pj4gKy0gQkFTRV9ESVNDT1ZF
Ul9BR0VOVCAocmVxdWlyZWQgZm9yIFhlbjsgcmVxdWlyZWQgZm9yIHNlY29uZGFyeSBhZ2VudHMg
d2l0aG91dCBgYHJlZ2BgKQ0KPj4+PiArLSBCQVNFX1JFU0VUX0FHRU5UX0NPTkZJR1VSQVRJT04g
KG9wdGlvbmFsKQ0KPj4+IEhvdyBYZW4gY2FuIGd1YXJhbnRlZSB0aGF0IFNDTUkgc3RhdGUgaXMg
c2FuZSwgaWYgaXQgY2FuJ3QgcmVzZXQgYWdlbnQNCj4+PiBkdXJpbmcgZG9tYWluIGRlc3RydWN0
aW9uPw0KPj4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgU0NQIGZp
cm13YXJlLCBidXQgdGhlIGZpcm13YXJlDQo+PiBwcm92aWRlcyBhZ2VudF9udW0gPiAxLCB0aGVu
IGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgU0NQDQo+PiBmaXJtd2FyZS4gV2UgbWFk
ZSB0aGlzIG9wdGlvbmFsIHRvIGNvdmVyIGV4YWN0bHkgdGhpcyBjYXNlIOKAlCB3aGVyZSB3ZQ0K
Pj4gZG9uJ3QgaGF2ZSBSRVNFVF9BR0VOVF9DT05GSUdVUkFUSU9OIGJ1dCBzdGlsbCBoYXZlIGFn
ZW50X251bSA+IDEsIHdoaWNoDQo+PiBjb3VsZCBiZSBhcHBsaWNhYmxlIHRvIGEgZG9tMGxlc3Mg
Y29uZmlndXJhdGlvbiAoZm9yIGV4YW1wbGUpIGFuZCBzaG91bGQNCj4+IGJlIHVzZWQgY2FyZWZ1
bGx5IGJ5IGRldmVsb3BlcnMuDQo+IE9rYXksIEkgc2VlLi4uIE9uIG9uZSBoYW5kIGl0IGlzIG5v
dCB3b3JzZSB0aGFuIHRoZSBjdXJyZW50IHN0YXRlIG9mDQo+IGFmZmFpcnMsIHdoZW4gd2UganVz
dCBkZXN0cm95aW5nIGEgZG9tYWluIGFuZCBsZWF2aW5nIGl0cyBkZXZpY2VzIGluDQo+IHVuZGV0
ZXJtaW5lZCBzdGF0ZS4gT24gb3RoZXIgaGFuZCwgU0NNSSBpcyBtZWFudCB0byByZXNvbHZlIHRo
aXMNCj4gcGFydGljdWxhciBwcm9ibGVtLCBzbyBpdCB3aWxsIGJlIHN0cmFuZ2UgdG8gaGF2ZSBT
Q01JIGJ1dCBub3QgdG8gaGF2ZQ0KPiB0aGlzIHBhcnRpY3VsYXIgZmVhdHVyZS4gTWF5YmUgaXQg
aXMgd29ydGggdG8gd3JpdGUgYSBodWdlIHdhcm5pbmcgaWYgYQ0KPiBTQ01JLWVuYWJsZWQgZG9t
YWluIGlzIGRlc3Ryb3llZCwgYnV0IHdlIGNhbid0IGNhbGwgUkVTRVQgZm9yIGl0Pw0KPg0KPiBM
b29rcyBsaWtlIEkgb3Zlcmxvb2tlZCB0aGlzIGNhc2Ugd2hlbiByZXZpZXdlZCAieGVuL2FybTog
c2NtaToNCj4gICBpbnRyb2R1Y2UgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciINCnRo
aXMgY291bGQgYmUgZG9uZS4gV2lsbCBhZGQgaHVnZSB3YXJuaW5nLg0KPj4NCj4+Pj4gKy0gQkFT
RV9TRVRfREVWSUNFX1BFUk1JU1NJT05TIChvcHRpb25hbCkNCj4+PiBJZiB0aGlzIGlzIG9wdGlv
bmFsLCBkb2VzIGl0IG1lYW4gdGhhdCBlYWNoIGFnZW50IHdpbGwgaGF2ZSBhY2Nlc3MgdG8NCj4+
PiBhbGwgZGV2aWNlcyBpbiB0aGUgc3lzdGVtPw0KPj4gUHJvYmFibHkuIEJ1dCB0aGF0IGRvZXNu
J3QgbWVhbiBpdCdzIHRoZSBvbmx5IGNhc2UuIEZvciBleGFtcGxlLCBhDQo+PiByZXNvdXJjZSBj
b3VsZCBiZSBhY3F1aXJlZCBvbiBmaXJzdCBhY2Nlc3MgKG5vdCBhIHJlYWwtd29ybGQgY2FzZSwg
YnV0DQo+PiBpdCdzIHBvc3NpYmxlKS4gU28gd2UgY2FuJ3QgbWFrZSB0aGlzIGRlY2lzaW9uIG9u
IGJlaGFsZiBvZiB0aGUgU0NQDQo+PiBmaXJtd2FyZS4NCj4gQWdhaW4sIHRoaXMgbWlnaHQgYmUg
bm90IHdoYXQgdXNlciB3YW50cyBvciBleHBlY3RzLiBBbmQgaXQgaXMgZXZlbg0KPiB3b3JzZSB0
aGVuIHRoZSBwcmV2aW91cyBjYXNlLCBiZWNhdXNlIHdpdGhvdXQgU0NNSSBJIGFtIHN1cmUgdGhh
dCBpZiBJDQo+IGRpZG4ndCBnYXZlIGEgZG9tYWluIGFjY2VzcyB0byBhIHBlcmlwaGVyYWwsIHRo
ZW4gaXQgY2FuJ3QgYWZmZWN0cyBpdHMNCj4gc3RhdGUuIElmIHlvdSByZWFsbHkgd2FudCB0byBz
dXBwb3J0IHN1Y2ggY2FzZSwgdGhlbiB5b3Ugc2hvdWxkIGVuc3VyZQ0KPiB0aGF0IG9ubHkgSFdE
T00gY2FuIGFjY2VzcyBTQ01JIG9mIFNDUCBkb2VzIG5vdCBzdXBwb3J0DQo+IFNFVF9ERVZJQ0Vf
UEVSTUlTU0lPTlMuDQo+DQoNCldoZW4gb25seSB0aGUgSFdET00gaGFzIGFjY2VzcyB0byB0aGUg
U0NNSSBvZiB0aGUgU0NQIHdpdGhvdXQNClNFVF9ERVZJQ0VfUEVSTUlTU0lPTlMgc3VwcG9ydCwg
dGhlcmUgaXMgbm8gcG9pbnQgaW4gdXNpbmcNCnNjbWktbXVsdGlhZ2VudCBhdCBhbGwuIEluIHRo
aXMgY2FzZSwgc2NtaS1zaW5nbGUtYWdlbnQgKHdoaWNoIGhhcw0KYWxyZWFkeSBiZWVuIG1lcmdl
ZCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCg0KU28gSSB0aGluayB3ZSBzaG91bGQgcHJvYmFi
bHkgbWFrZSBTRVRfREVWSUNFX1BFUk1JU1NJT05TIHN1cHBvcnQNCm1hbmRhdG9yeSBpbiB0aGlz
IGNhc2UgYW5kIGZhaWwgaWYgaXQgaXMgbm90IHN1cHBvcnRlZC4gV2Ugc2hvdWxkIGFsc28NCm1l
bnRpb24gdGhpcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4NCg0KV2hhdCBkbyB5b3UgdGhpbms/DQoN
Cj4gWy4uLl0NCj4NCj4NCj4+Pj4gK0NvbmZpZ3VyZSBTQ01JIGZvciBEb20wDQo+Pj4gIkhvdyB0
byBjb25maWd1cmUuLi4iIG9yICJDb25maWd1cmluZy4uLiINCj4+Pg0KPj4+PiArXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl4NCj4+Pj4gK1NldCB0aGUgRG9tMCBTQ01JIGFnZW50IElEIGluIHRoZSBk
ZXZpY2UgdHJlZSB1c2luZyB0aGUgWGVuIFNDTUkgY29udGFpbmVyIHVuZGVyIGBgL2Nob3NlbmBg
Lg0KPj4+PiArQWRkIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgdG8gdGhlIGBgeGVuLHNjaWBg
IG5vZGUuIElmIHRoZSBwcm9wZXJ0eSBpcyBhYnNlbnQsIFNDTUkgc3RheXMNCj4+Pj4gK2Rpc2Fi
bGVkIGZvciBEb20wIGFuZCB0aGUgU0NNSSBub2RlcyBhcmUgcmVtb3ZlZCBmcm9tIERvbTAgRFQu
DQo+Pj4+ICsNCj4+Pj4gKy4uIGNvZGUtYmxvY2s6OiBkdHMNCj4+Pj4gKw0KPj4+PiArICBjaG9z
ZW4gew0KPj4+PiArICAgIHhlbiB7DQo+Pj4+ICsgICAgICByYW5nZXM7DQo+Pj4+ICsgICAgICB4
ZW5fc2NtaV9jb25maWcgew0KPj4+PiArICAgICAgICBjb21wYXRpYmxlID0gInhlbixzY2kiOw0K
Pj4+PiArICAgICAgICB4ZW4sZG9tMC1zY2ktYWdlbnQtaWQgPSA8MD47ICAvKiBEb20wIGFnZW50
IElEICovDQo+Pj4+ICsgICAgICAgIC8qIGFnZW50cywgc2hhcmVkIG1lbW9yeSBhbmQgc2NtaV94
ZW4gYXMgc2hvd24gYWJvdmUgKi8NCj4+Pj4gKyAgICAgIH07DQo+Pj4+ICsgICAgfTsNCj4+Pj4g
KyAgfTsNCj4+Pj4gKw0KPj4+PiArVGhlIEhvc3QgRFQgYGAvZmlybXdhcmUvc2NtaWBgIG5vZGUg
aXMgY29waWVkIHRvIHRoZSBEb20wIERUIHVubW9kaWZpZWQuIEhvd2V2ZXIsIGZvciBEb20wIFND
TUkNCj4+Pj4gK2NvbmZpZ3VyYXRpb24sIFhlbiByZWxpZXMgb24gdGhlIGBgYWdlbnRzYGAgY2hp
bGQgYW5kIHRoZSBgYHhlbixkb20wLXNjaS1hZ2VudC1pZGBgDQo+Pj4gImNoaWxkIG5vZGUiDQo+
Pj4NCj4+Pj4gK3Byb3BlcnR5IGZyb20gdGhlIGBgeGVuLHNjaWBgIGNvbnRhaW5lciB1bmRlciBg
YC9jaG9zZW5gYC4gSWYgdGhlIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlzDQo+Pj4+ICttaXNz
aW5nIG9yIGRpc2FibGVkLCBvciBpZiBgYHhlbixkb20wLXNjaS1hZ2VudC1pZGBgIGlzIG5vdCBw
cm92aWRlZCwgdGhlIERvbTAgU0NNSSBhZ2VudCB3aWxsIG5vdA0KPj4+PiArYmUgY29uZmlndXJl
ZC4NCj4+Pj4gKw0KPj4+PiArLi4gbm90ZTo6DQo+Pj4+ICsNCj4+Pj4gKyAgVGhlIGBgeGVuLGRv
bTAtc2NpLWFnZW50LWlkYGAgdmFsdWUgbXVzdCBtYXRjaCB0aGUgYGBmdW5jX2lkYGAgYW5kIGBg
c2htZW1gYCBwYWlyaW5nIHByb3ZpZGVkIGJ5DQo+Pj4+ICsgIHRoZSBFTDMgZmlybXdhcmUgZm9y
IERvbTAgKGZvciBleGFtcGxlIGluIHRoZSBgYC9maXJtd2FyZS9zY21pYGAgbm9kZSkuDQo+Pj4g
V2VsbCwgbWF5YmUgYmV0dGVyIHRvIHVzZSBwaGFuZGxlIHRoZW4/IExpa2UNCj4+Pg0KPj4+IHhl
bixkb20wLXNjaS1hZ2VudC1pZD08JmFnZW50QDA+DQo+PiBJdCBpcyB1c2VkIHRvIHNldCBhcm1f
c2NpX2FnZW50X2lkIGluIHRoZSBjb25maWcgYW5kIHdvcmtzIHRoZSBzYW1lIHdheQ0KPj4gYXMg
bGlieGwsIHNvIHdlIG1haW50YWluIGNvbnNpc3RlbnQgYXBwcm9hY2hlcyBmb3Igc2V0dGluZyBk
b21faWQgaW4NCj4+IGJvdGggbGlieGwgYW5kIHRoZSBkZXZpY2UtdHJlZS4NCj4+DQo+PiBBZGRp
dGlvbmFsbHksIHRoZSBhZ2VudF9pZCBpcyB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBzY21pX2No
YW5uZWwuDQo+Pg0KPj4gSSBkb24ndCBzZWUgYW55IHBhcnRpY3VsYXIgYmVuZWZpdHMgdG8gdXNp
bmcgYSBwaGFuZGxlIGhlcmUsIGJ1dCBwZXJoYXBzDQo+PiBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcu
IENvdWxkIHlvdSBjbGFyaWZ5Pw0KPiBIYXZpbmcgbGVzcyByb29tIGZvciB1c2VyIGVycm9yLiBI
YXZpbmcgcGhhbmRsZSwgeW91IGNhbiBleHRyYWN0IGJvdGgNCj4gZnVuY19pZCBhbmQgc2htZW0g
ZnJvbSBpdC4gQnV0LCB0aGlua2luZyBvZiBpdCwgeW91IGNhbiBleHRyYWN0IHNobWVtDQo+IGp1
c3QgYnkgbG9va2luZyBhdCBmdW5jX2lkLi4uIE9uIG90aGVyIGhhbmQsIGl0IGlzIGJldHRlciB0
byBtb3ZlIGNoZWNrcw0KPiB0byB0aGUgY29tcGlsYXRpb24gdGltZS4gJ2R0Yycgd2lsbCB0ZWxs
IHlvdSBpZiBpdCBjYW4ndCBmaW5kIGEgcGhhbmRsZSwNCj4gYnV0IGl0IHdpbGwgbm90IHRlbGwg
eW91IGlmIG51bWVyaWMgYWdlbnRfaWQgZG9lcyBub3QgbWF0Y2ggYW55IGVudHJ5IGluDQo+IHRo
YXQgYWdlbnRzIGFycmF5Lg0KPg0KPiBbLi4uXQ0KTW92aW5nIHRoZSBjaGVja3MgdG8gJ2R0Yycg
Y29tcGlsYXRpb24gdGltZSBzb3VuZHMgcmVhc29uYWJsZS4NCg0KSSBjYW4gcmVvcmdhbml6ZSB0
aGlzIGluIHRoZSBmb2xsb3dpbmcgd2F5Og0KMSkgTWFrZSBpdCBsb29rIGxpa2U6DQogICB4ZW4s
ZG9tMC1zY2ktYWdlbnQgPSA8JmFnZW50QDA+Ow0KDQoyKSBGb3IgZG9tMGxlc3MgY29uZmlndXJh
dGlvbjoNCiAgIGNoYW5nZTogIHhlbixzY2ktYWdlbnQtaWQgPSA8Mj47DQogICB0byBsb29rIGxp
a2UgeGVuLHNjaS1hZ2VudCA9IDwmYWdlbnRAWD47DQoNCjMpIGZvciB4ZW4tc2NtaS1hZ2VudCBu
b2RlIGFkZCB4ZW4sc2NpLWFnZW50LWlkIG9wdGlvbmFsIHByb3BlcnR5Lg0KDQpEb2VzIHRoaXMg
bWF0Y2ggd2hhdCB5b3UgaGFkIGluIG1pbmQ/DQoNClRoaXMgY291bGQgYWN0dWFsbHkgc2ltcGxp
ZnkgdGhlIGNvbmZpZ3VyYXRpb24gd2hlbiB3ZSByZWx5IG9uIHRoZQ0KbWVjaGFuaXNtIHdoZXJl
IFhlbiByZXF1ZXN0cyBhbiBhZ2VudF9pZCBmb3IgZWFjaCBmdW5jX2lkLg0KDQpPdmVyYWxsLCBJ
IGxpa2UgeW91ciBpZGVhIGFuZCB3aWxsIHRoaW5rIGFib3V0IGl0IGZ1cnRoZXIuDQoNClRoYW5r
IHlvdSENCg0KDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:49:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:49:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472040.1680101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcJF-00059v-SI; Wed, 04 Nov 2026 14:49:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472040.1680101; Wed, 04 Nov 2026 14:49:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcJF-00059n-Os; Wed, 04 Nov 2026 14:49:53 +0000
Received: by outflank-mailman (input) for mailman id 1472040;
 Wed, 04 Nov 2026 14:49:52 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOcJE-00059h-Ba
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:49:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcJD-00B7bQ-OH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:49:51 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb460f-2eae-0a2a0a5409dd-0a2a4507c5de-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:49:51 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb460f-b4ea-0a2a45070019-d155dd31d4cf-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:49:51 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48e00eee27dso453556f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 06:49:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b43cff3b14sm57617735e9.10.2026.11.04.06.49.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 06:49:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793803791; x=1794408591; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4YSul6A+Yvf0xViQCRiwP4iZhdP7bYxM5Sccp0+2ABg=;
        b=g24MCQv3fxFvnPgdXKobFVadQXkPJ2cvt2atnx8uyYDnOoqaSeJcbH9GWqDWb9s1Uo
         lRw0KESw+4VOQomufLaBdpl05uS9Yli99xXa/yCUzkdd6oMjzaXqayRtmCRGqTxmvsdM
         vOfdsj+mkdgap7S1vdslwMgfkdcfrGtgex2qNJv8PNLUAeW0KBtCvvlZ1FoRnw1rTZBw
         V3ZxsUlwM6Z27y4i+ImFBmaI2iMQ/6MrAwD8/Kr/LiQxF7iEn9pfWdamG8W9JB0aYLF5
         MieKmfQrkyCKZbp1p1ozWbn0TOUtlS17JOpU7J/6vtY+gDsmudxbdvaGpa1fMHPXbt1w
         E5HQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793803791; x=1794408591;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=4YSul6A+Yvf0xViQCRiwP4iZhdP7bYxM5Sccp0+2ABg=;
        b=x5B5SD1zcJiblroPKrJhZPt823bVHLm+l3es4UmOJPR8RMJhPfvul+qxGDFUQOL+mR
         LeytlC3lVTzfbbM7BEbWv4g7cmhg/4P2u0VvZVWVtBK3PRmT1fXISq2hiWqitIjPB0+N
         /io+aGxNUC6JIwmyUo4u6V4EREBikoZaMy/0q6Bdx6KBrAOcPiXE5SMBEu3qgUQxTXyO
         ZPvh0uzfmTfrDMvmgbFKo0QFlvuON5oQG3ukKAFxy/m3TOhTWS4qZrwCAWoBxGoiO1nt
         xPFjgg34tP0Yuz6YxBQKaV4iFxKgy5M8f4HwprsqfSFAyljIPK8C579ElkPUo3CSPCw8
         Nwnw==
X-Forwarded-Encrypted: i=1; AKwUvBwV6CzUEne5kdDqA9O0KBhWPFD5QT3okfLhudZJT2etscM2vMkEIaRR/xnK2jJ9t0eyraJA+pbI33g=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9Ayiti43KXcpNmEv/cqUeQZCO5DrALRZung9CfIGktOi9CNtmJ
	QhjcK6DOj+AOrWZVd/6JMTOiVSVdTkmFYbHClvB6DEP5CZJBiFfTmfds5OF6UvS3WQ==
X-Gm-Gg: AYBFou2c3B4qjPRMnb0RMZvNunsUGn2mPJzCn6aCG1Tb04w6jHvIbNB2MVRyTujGJT5
	TacoEZBvpw3Kwc/v+hh1kUg2qhZHM5hy6SBA+jas9VMN4C8d8EwMZL9RWnCL5zCCPAU/EhgQsx8
	/MpiW46mRkro7o3fflp4HjWWx2QUUaFtIP8PJMWS8hwP24NhfIoVxmdwWKBmLWT4JzgyENfE8B+
	0YlI8qJNg2LrrifxxZ4meK/6YdV6m8FnNIZ9LbJGficC3r0OdLYpI/ww8aVLfhmO5w4dshNXPJ+
	WAaphsKuxq3rOmLvH5j1g9A37iskxvWtcBQnHo3kT4o7L02hI/DXkcJRw/KyZP8uo/CC4TOi6sF
	rsgNj/2P+A/DSmoWTL2psk/UdMsRqkWmf4dfeDmvZufKJcv84r1BMhtGXbM34mbLL9+iR127UIF
	ZsOE8Vjd2NJqvlD+C5lbQkykhm6NwWhH7nNftaqbCTq5cRlC6fZJ3Ob5/FQMMkZOL95HaxCAtLS
	ZrRB82Dwel0Vzg4BXFC93YTc56jSvEyt+T0OWdJQFwMtNHYdRe9BuWerS1EzHjJCBv/tQh7y7w4
	f/FtcaTF3mSpyUQ5CpSJ+ojYc8y0LbOR4WRhyHKdvWBMe8/A4NLYSzea1IohnWwip52ltCv6yw2
	7nx7eW6rNN2Rti/I=
X-Received: by 2002:a05:600c:4714:b0:4a6:30c3:1114 with SMTP id 5b1f17b1804b1-4ac180f1c7amr369418085e9.12.1793803790980;
        Wed, 04 Nov 2026 06:49:50 -0800 (PST)
Message-ID: <9f55c251-af36-41e0-8afe-cb218d41f6cc@suse.com>
Date: Wed, 4 Nov 2026 15:49:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] xen/build-id: Introduce is_gnu_build_id()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
 <20261104135133.2209628-2-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261104135133.2209628-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793803791-35CC7AE4-89336EF3/10/78276251493
X-purgate-type: spam
X-purgate-size: 2138

On 04.11.2026 14:51, Andrew Cooper wrote:
> Broken out of the subsequent change for legibility reasons.  It will be used
> to replace xen_build_id_check().
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Ross Lagerwall <ross.lagerwall@citrix.com>
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Julien Grall <julien@xen.org>
> CC: Roger Pau Monné <roger@xenproject.org>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> ---
>  xen/common/version.c         | 33 +++++++++++++++++++++++++++++++++
>  xen/include/xen/elfstructs.h |  2 ++
>  xen/include/xen/version.h    |  2 ++
>  3 files changed, 37 insertions(+)
> 
> diff --git a/xen/common/version.c b/xen/common/version.c
> index 80e7a9b981cf..7eb8a0221d82 100644
> --- a/xen/common/version.c
> +++ b/xen/common/version.c
> @@ -114,6 +114,37 @@ void print_version(void)
>  /* Defined in linker script. */
>  extern const Elf_Note __note_gnu_build_id_start[], __note_gnu_build_id_end[];
>  
> +/*
> + * Check whether @n is a GNU Build ID note.
> + *
> + * We check that:
> + *  - type is NT_GNU_BUILD_ID
> + *  - name is GNU\0
> + *  - desc is non-empty and exactly covering the rest of the buffer
> + *
> + * If this returns true, the contents starts at n + NT_GNU_HDR_SIZE.
> + */
> +bool is_gnu_build_id(const Elf_Note *n, unsigned int len)
> +{
> +    const char *name;
> +
> +    if ( len <= NT_GNU_HDR_SIZE )
> +        return false;
> +
> +    if ( n->type != NT_GNU_BUILD_ID ||
> +         n->namesz != 4 )
> +        return false;
> +
> +    name = ELFNOTE_NAME(n);
> +    if ( strncmp(name, "GNU", 4) != 0 )
> +        return false;
> +
> +    if ( len != n->descsz + NT_GNU_HDR_SIZE )
> +        return false;

Isn't this too strict a check? Build-IDs can, iirc, take different formats
(yes, this is under our control, but still), and I don't think there's a
guarantee that all current and future ones are coming without any padding.
IOW I think len wants comparing against the rounded up sum.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 14:51:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 14:51:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472048.1680110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcL1-0006c6-5d; Wed, 04 Nov 2026 14:51:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472048.1680110; Wed, 04 Nov 2026 14:51:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcL1-0006bz-2r; Wed, 04 Nov 2026 14:51:43 +0000
Received: by outflank-mailman (input) for mailman id 1472048;
 Wed, 04 Nov 2026 14:51:42 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOcL0-0006bt-CE
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 14:51:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcKz-00Ak3d-PA
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:51:41 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb4674-e002-0a2a0a5209dd-0a2a450b943e-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:51:41 +0100
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeb467d-b7e8-0a2a450b0019-d155dd29ac2d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 15:51:41 +0100
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-48e3b22e971so425524f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 06:51:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec8d8e29sm4510590f8f.19.2026.11.04.06.51.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 06:51:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793803901; x=1794408701; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Uc8W2UpuSTrMsgDJbRnprQBO1BgyU+dWXGRRmxPKO2Y=;
        b=Lpm2X4ySRCfNpbBAPqreGCn6le4xVypK567jhdezzNyxJl27efwNfnIVl5uN9hCajn
         QgLz1okvFfG0YbjipHgUSHjtpIvhduSWJskWSJMRXBgrK/UfSfpHpOIEk9kAhf3rvt4B
         VbMKklQ4PyzJzPGsYWbNlYndEkQ25EqDtn8Z06MBO9ItcrR68b9gMOOB5MgROiaSbIWt
         xO90mENRV9iRbsQEzenA0Ckm6bgf8vWDuKt/EP6uaBpGhJUQm9N5lvh+ETV9hv585tBl
         6oFEKhLMtqfUUAJvMXK02xZVdiyRSf4haI31Nn/qQHsCKzVIcT8jmgRjUq9R3UF8TqsD
         sSwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793803901; x=1794408701;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Uc8W2UpuSTrMsgDJbRnprQBO1BgyU+dWXGRRmxPKO2Y=;
        b=sgNgXpJZt91SXleowTVlk1TrZt9gqtR9X7HkpePLIpz66fbiSkCrmKixZe+IAVwheI
         IR/cbatxgkbr+04nLeV/TteD/yCOk4AKBueVno698QoFtiofrKKFxEELzEHZl4fJusGy
         OZNlyIeLRCKwL/ENzKxwsqM0q3hA0VHTp3xOc7azcStp0K4O9p7ec6eIl/my2z46OXxI
         eTutXqvuyOWo+a9931SIETfTZ998DlcfQ9VIYZNbOib+gZylwgy/8I3bA22Q2+xwbm5+
         uSGggRN3TWjPUb/+3VrKTtfGp3PrTfHhLG6iMrI0EZF0dRWJO4acQgKmVxq74YYSS13Z
         2v9w==
X-Forwarded-Encrypted: i=1; AKwUvBwtpGV5KMIssXHMcS/1ZbH71Ksc0PzLPuBY/2/3FAFM5b9TTeL0+HbPVzSOjZ5Z2rBeffZM+b+/UjY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+kVSLuIPEFzc1jbGHrz4fdnMsfzOSz1/jv7PkqYXdA8Tmy7QHY
	ysfIkLnu1NjNXU0976n3uUil48MW6x2um+M5V0BiRTKELWP8vEXdpXJNPiL+pgeJt//yNEW4JUf
	fUzyafA==
X-Gm-Gg: AYBFou26q9um/8Fv5BzS/MFY9+/Svp3O2lhlr+454MnJeNTt2BlJe1voTdZZe3litFj
	jjxQX0eTakXoq3tEkkwldsvBZoneKuPnYC14MoYTuoxn0sl9tgJSVKnmdMpfobosrciclalfTWI
	PC/iykOtpuRjpPwJY+kjsrWp0W9JUrEUYwFQgvG6dYlO1d7tJUTv/0OldrHUjiUHYm16kT+tsMJ
	HC2xDyM1hYAcb3H42bV3Fb0vAlQQrlb4I3PKYz2G62xN2amaQUVF5X3OCEvGefcAbPW5QgIDrlg
	DkbTbRvwyMbQbMKKb3bZ+majHDcXKxOMf7iH5rYuCpXncfIjS0TpD9qPSyvZZbbKuNo+RZKNsXY
	tsnkhoMkheIuJM276VEURDTDRFcZ8V5BEoxUojwMeqVt4CXWHAQ/Od2PGXfsGZbCrjBgDQV5Gpm
	JsTVQTYVl1zvQ8jUR2HDLOV7EeezhPJYn+4uTp0vpG8ZDZUJSGVWQd6c5ethTwkJMJq2+9hyhJs
	kRlzq40RBPLFz666GasenJbqOrs4mLYBsoljeqBC84Hz/CsXbMKR4qu6+HiVUVq81qB0LM+u7/Z
	WfEo61Iz9kUIghgNs+fEgsfhx5Iy7iIV7JoI0zffFFGOkV/HHRlMpPzfSQa7KoA6VwXWHOsTDTi
	PyC3wPUdnVbV0yAjb
X-Received: by 2002:a5d:4ec6:0:b0:48e:bf0:30f with SMTP id ffacd0b85a97d-48e6e308ed9mr28652479f8f.34.1793803901049;
        Wed, 04 Nov 2026 06:51:41 -0800 (PST)
Message-ID: <28839e8c-bcde-463e-8617-92576ca8e8e6@suse.com>
Date: Wed, 4 Nov 2026 15:51:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/build-id: Drop xen_build_id_check()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
 <20261104135133.2209628-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261104135133.2209628-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793803901-1B6D29EA-6E48B235/10/78276251493
X-purgate-type: spam
X-purgate-size: 946

On 04.11.2026 14:51, Andrew Cooper wrote:
> The function is misnamed; it really is looking for a GNU Build ID note, not a
> Xen note as the name suggests.
> 
> It also has an awkward API to use.  For a GNU Build ID, the content is always
> at +16 from the start, so really doesn't need to be returned by pointer, nor
> is it necessary be doing additional checks on the returned pointers being
> valid.
> 
> Switching to is_gnu_build_id() allows xen_build_init() to be simplified,
> returning after the first successful find rather than passing an rc down the
> function to skip later checks.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

> The 16 probably ought to be a define somewhere, but I see no obvious
> candidates in the ELF spec.

That's for NT_GNU_HDR_SIZE in patch 1? Why should the ELF spec care about
GNU notes?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 15:07:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 15:07:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472077.1680118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcZk-00005r-Ch; Wed, 04 Nov 2026 15:06:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472077.1680118; Wed, 04 Nov 2026 15:06:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcZk-00005k-9z; Wed, 04 Nov 2026 15:06:56 +0000
Received: by outflank-mailman (input) for mailman id 1472077;
 Wed, 04 Nov 2026 15:06:55 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@swg.vates.tech>)
 id 1xOcZj-00005d-0p
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:06:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcZi-000h7D-5p
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:06:54 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@swg.vates.tech>)
 id 6aeb4a0d-bab6-0a2a0a5309dd-0a2a4508bc52-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:06:54 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@swg.vates.tech>)
 id 6aeb4a04-f659-0a2a45080019-b9ff1c23ae73-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:06:45 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1a71918bf000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 04 Nov 2026 15:06:42 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 596DE80048;
 Wed,  4 Nov 2026 16:06:41 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=WsnGw1XKluz1wAj9pRnicBsXXdD74+XSsiqUJzURjQI=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=RvP3uELX0v4DumNmXHm3NZunnWP0Is4iNcc0m2wPclKQ3mSjsJajsaUuhMszTH3WIqSuw5Qz8
 xdwYOIEKwjP8n3a9sZaLmRjWCKfTAD+wTioCf+qa0puHjK5hpN0LdOIxRfnKDT6Jzef4vTB2cjU
 xmB0TDq7Srr+nnC+sLL4ffuhNsTLMvE5EVqhprjqZ6d48kr9yNqIThQTQ5O14R1pRNkGMqx38mw
 OpyXhCLCYlNPjUa23y/zWxB/K6NaI8QE1pJo2i0ckBAY/GFRAoTrPkmH/LCDm77FwWqvxVqNy/m
 0vXAuyxllirBqrOh7TowB0mTvIK/FWB3Y+b28cd8lO2w==
X-Zone-Loop: 8090b5cf5bc2820ba06cccdc0a9be75166143a7a3b6f
x-campaign-type: default
x-transaction-id: 490542b1-850a-4b7e-bad2-8068667503d3
x-swg-uid: 01-556a1f5a-23ec-414d-8533-97bac7fd4bc5
X-Mailer: Sweego
Message-ID:
 <1793804802.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@vates.tech>
x-swg-bid: 1793804802.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 39/39] xen/riscv: introduce IMSIC h/w interrupt file
 attaching to vcpu
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <fa5788d0133c98ae3feac474da325239d27ed153.1790779209.git.oleksii.kurochko@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <fa5788d0133c98ae3feac474da325239d27ed153.1790779209.git.oleksii.kurochko@gmail.com>
Date: Wed, 04 Nov 2026 16:06:35 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793804796; l=1978;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=TG2ilno3oMAyjY/dALHWAeDd/9BilLa42Lhx3kBElYc=;
 b=75Fk8ruii/UzAjFUo6B6p6ZIoE3H2MhdLTeGG6015zuoH72eN8Dt9L6b84oncuBa+LkZgLZjG
 aAJCp2Nr+wIDZtosgy8/Yid6gUOM3ykTpo91mfizjgEF7BsAvGFxBHO
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793804801572
X-purgate-ID: tlsNG-c1860d/1793804805-CEB4187B-79B8FC3D/0/0
X-purgate-type: clean
X-purgate-size: 1978

> Introduce imsic_vsfile_attach() to give a vCPU a working guest
> interrupt file.
> 
> A guest (VS) interrupt file has to be backed by one of the hardware
> guest interrupt files of the pCPU the vCPU runs on, so that pCPU has to
> be known first. arch_vcpu_create() is therefore not a suitable place:
> the pCPU assigned to a vCPU can still change before the vCPU is first
> scheduled, which would mean taking another file and remapping the
> guest's IMSIC page to it. Call imsic_vsfile_attach() from
> continue_new_vcpu() instead, i.e. when the vCPU is scheduled for the
> first time; as that isn't an __init context, neither is
> imsic_vsfile_attach().
> 
> Giving a vCPU its first file shares most of the steps with moving it to
> a new one on migration, so move the body of imsic_migrate_vcpu() to
> imsic_vsfile_move() and use it for both. Its first_attach argument skips
> the part which moves the interrupt state out of the old file: the vCPU
> has never run at that point, so the freshly acquired and zeroed file is
> all the interrupt state it has, and hstatus.VGEIN can be pointed at it
> right away.
> 
> vAPLIC target registers are reconfigured on the first attach as well: a
> target the guest writes for a vCPU which has no h/w guest interrupt file
> yet only updates the stored copy, which reaches the h/w at this point.
> 
Nit: I didn't quite understand this paragraph, "only updates"
leaves out that the h/w APLIC write is skipped, because there is no file
to point the target at yet. Maybe something like:

    The guest may program a vAPLIC TARGET register for a vCPU which has
    not run yet. That vCPU has no h/w guest interrupt file yet, so
    vaplic_mmio_write() only stores the value. imsic_vsfile_move() then
    writes it to the h/w APLIC on the first attach, pointing to the newly
    acquired file.

Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 15:18:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 15:18:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472109.1680127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcl3-0001vj-CP; Wed, 04 Nov 2026 15:18:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472109.1680127; Wed, 04 Nov 2026 15:18:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcl3-0001vc-9q; Wed, 04 Nov 2026 15:18:37 +0000
Received: by outflank-mailman (input) for mailman id 1472109;
 Wed, 04 Nov 2026 15:18:35 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Yazen.Ghannam@amd.com>) id 1xOcl1-0001vW-2n
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:18:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcl0-00BD7M-9m
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:18:34 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Yazen.Ghannam@amd.com>)
 id 6aeb4cbd-e002-0a2a0a5209dd-0a2a4505c562-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:18:33 +0100
Received: from [40.93.196.43]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Yazen.Ghannam@amd.com>)
 id 6aeb4cc7-4cb1-0a2a45050019-285dc42b83ea-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:18:33 +0100
Received: from DM4PR12MB6374.namprd12.prod.outlook.com (2603:10b6:8:a3::18) by
 SA3PR12MB8024.namprd12.prod.outlook.com (2603:10b6:806:312::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026
 15:18:29 +0000
Received: from DM4PR12MB6374.namprd12.prod.outlook.com
 ([fe80::af35:a7a6:6ca:7fcf]) by DM4PR12MB6374.namprd12.prod.outlook.com
 ([fe80::af35:a7a6:6ca:7fcf%5]) with mapi id 15.21.0592.007; Wed, 4 Nov 2026
 15:18:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=ivtVQsckVY/Ug2gDv3HWA8A4T3+mysyRF+ZUaThjFmgXOZs2tWerQ2eR6XIY+VTZHQn5UlsUDHjWAKXUcfdkCXuDQ94RkOwvA11JUomcPcNIx4w7YbZAQK6PXccWGcK251YYdLeLD1CbtvoaHgeV7y+D0nW+MrFPctDxC+yCUYY+jRntPNp9kCt1NAeDUkcLF5vwOblFyezEW9TXQrUBop/UgAc1LeHnKqSwGbM1x62qYtr6TPEVk8+/cjj5//w/pcyMuCtxjXE2rf+j/OgaDKS2F4aaJKaXEQmTgAuQgppK894J5oxUp7w8Z7dbfqQBiq/h5g0v7UVBRsGxsv01jg==
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=85b4qb0k5l+wxRsvgF3PPoa9EpZeNI2UjIuR5x0lcTI=;
 b=qTRDazYoFLR8itJp0M84kEqSfFBfXrSEcd+ymeoihTggUdYG5MIaRVb160KRXcrADQsgf7WPRuogEyotlbFokh5eaQols4EG+HE+CyNho/Sa2TBVXzAyQWev9SZmBcTlAKw+L9EXALLSVami2ziORKF06NCO10SYtoBBiEMm+is6/KQ2B9oJtYhv4HOBHIeY6j50Hp5Cnh7BUYDFmjcWgSqKSbiD78DkDBeQPi+W3nRtoqTDI2R+vW3DYetQW3nJSZQMoH/jaEck/Ny2PLX3gf/iBY/+hJZrx7faJ/jcA/gHpynJkUhrGzeSP6JxPGywpOZa11wAWE6AbMQvBGGAMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
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=85b4qb0k5l+wxRsvgF3PPoa9EpZeNI2UjIuR5x0lcTI=;
 b=NlBAKukBI1RHl2BBbAwm1L3NKzNuBH8QVTqUsNNdox5maGKiKWfdor+YiobAvlLLPTz5Jtj8/vY7gZh8NcwkUZDYIe421+1O6A+TnaNQiSxP9ErWRurbkmm7ZfSEv2VWKymeYLi8drNY0+aS9XjTNytNxmjVpST16hbPpiLpuFg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 4 Nov 2026 10:18:20 -0500
From: Yazen Ghannam <yazen.ghannam@amd.com>
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	xen-devel@lists.xenproject.org,
	Ariadne Conill <ariadne@ariadne.space>,
	Sean Christopherson <seanjc@google.com>,
	Juergen Gross <jgross@suse.com>, stable@vger.kernel.org,
	Ingo Molnar <mingo@kernel.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
Message-ID: <20261104151820.GA716491@yaz-khff2.amd.com>
References: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20261104013026.185392-1-jason.andryuk@amd.com>
X-ClientProxiedBy: BL1P222CA0026.NAMP222.PROD.OUTLOOK.COM
 (2603:10b6:208:2c7::31) To DM4PR12MB6374.namprd12.prod.outlook.com
 (2603:10b6:8:a3::18)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM4PR12MB6374:EE_|SA3PR12MB8024:EE_
X-MS-Office365-Filtering-Correlation-Id: 4438fe91-8b9b-4d76-1a14-08df3a86e140
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|23010399003|376014|1800799024|366016|260925022911599003|260925021911599003|260925021311599003|5023799004|11063799006|56012099006|261021121427099003|261009223027099003|261021123027099003|261026121527099003|261022105027099003|261026140227099003|261028144727099003|261102123227099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	NG8Zcjr3DlrYJxWdftLf/y3xgxeNkk7BQUqr749vA/LCUfgy5h8aLYSuShhfedQK0nwyi4WcEtPUpOUurIUml39IWtDwivou3lxDSJzWllcAcOSBOJnnhvqviowR1rKlrZBUM9Nmt1TWl6nsT2pcqASWc/MPWHtkZPL+NK1JIOTSFJ6I9VoDKGLcDQjh2o7qedPq0prrm4LB4FL9e9zEFRJ8DkkL28j9v1wo3vILII6zm1FCuRTDal7pCKjvrRJ7mqUYRQPMCeBfwC8cZsNSbGVjjrNIz2AWGUrZK/TJ9nMu1H1AaumGzRqciN3L86iHyHanj2CzVDEYncgbCZMRS8zAeynCmMAHB2sZp7VvRIFH3gT1lpcu9ABcwTFchEBKzJxqA4DBpgWyMYFXLbwN62nm42nQMQe5KuDhQUcrF7o5/cZ14kk0XQLReKcTnvIFbhUaFF4yDgN2F33QgWQq8b4QO4pwiAYY3oaIUrwWByewCCy0U2I8iMg0+lpJbmuNioIsHfQNCKV12Q/y62ABqnmViKuqzEmGH1nJhCvgGCyh1HmBebIXTvaBhYOOfzsEA6LQmA3Bx3RrXfq3gzc6qvPdhZ1HeP6naHJsa4vzTHqjTg84J4GRSYN0Z2gITlqp
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB6374.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(376014)(1800799024)(366016)(260925022911599003)(260925021911599003)(260925021311599003)(5023799004)(11063799006)(56012099006)(261021121427099003)(261009223027099003)(261021123027099003)(261026121527099003)(261022105027099003)(261026140227099003)(261028144727099003)(261102123227099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?3MDBuWWJLJGXBrgI7+auT3MsPGkkA8FjIHqKBQYnVdz4Gb4Dz1ePvjt/Gd7w?=
 =?us-ascii?Q?P1k930asaXEo3pstXTLx75ifsu02gSF4CvwhMn/XGbbhZ4y/LKXIDIjdXREB?=
 =?us-ascii?Q?QfD4kHp7S1wiwKwXqWjcAsMu2sORNcvQc2XxM0EDtGpAgUk5UT4zhfa/MwN/?=
 =?us-ascii?Q?sygPalz13gB6haoG4znhWcg/cp0yHqFgccFdplu/3CQEY2/uKatwQxAQ2vg2?=
 =?us-ascii?Q?brttvUsmxfpOOAPYR+VP3yT3/Ayq1ONqZjq/J2ybaD7Q6yEcyJpgBrcCWNeW?=
 =?us-ascii?Q?G+Br3OhcV8LM8cg80qz6Gzim/8tL6osjQJUQPCsbWLmzlZw3wYEk0MvgWdYJ?=
 =?us-ascii?Q?o1BOOx/49iSTsg4zFQfz5bFnLjkPZTQpy/V1B/fOEaYBTkwaVXSLEOhSJacu?=
 =?us-ascii?Q?aOFi7ZFRBFHA3rTZBsBF+xKm4Q9A7GZU3SqcHTf12izSNSmnuolFuZKOPtl1?=
 =?us-ascii?Q?vrl243SBtA5ophqrhDsfJDmRkKDSMtK2BR+VbSlxUNHZbJC+73UbVhferoJP?=
 =?us-ascii?Q?nDHPSBp8LZnuijbPHOVmPyGBfiZM4gXTURPeUrr9HttxFu5gYki7V8eshb9Y?=
 =?us-ascii?Q?atYzKUSPfA20eP/cGN78mvC1wahRLT8YX/afi6DDXzVFyHgSsE+RRW3d8xD4?=
 =?us-ascii?Q?zxdae3lHk85b0Q1YwFOlesIUJOgU1fNfj1lj6EYIwSe1bByGPwa+207j4W0O?=
 =?us-ascii?Q?LJRpZzQdJFnBeHl0qnQRzTt9ieuSITUGzxvxWrb8T78h7V8HTBuduvCO7ZkK?=
 =?us-ascii?Q?kDnh7n+L4D8OBezLvcmlOIWrFidjZ2AJHxqoWdhQwAh5m44qWYCvP0wrRHbU?=
 =?us-ascii?Q?4S1C4EAGe0MUKtbOSvBUog7MoT7xYVsYkQqEVf5nRM0bITHBiGg/+0oWZY9d?=
 =?us-ascii?Q?MLdKdho/0s85VJTZMpl2tzz1i0RftRN0Zxd9OyK8vHaPdVBPlPXWw/32Jz4c?=
 =?us-ascii?Q?iYJXk3chPMo55bkgya4l9dSKrtgGDydvhObF0YLpkd729nc3LDxZBleppBhx?=
 =?us-ascii?Q?eSl/VE9oAeRhgl5xO5c6JKXSCT3HdR/bXYQbYu/SNRfrI89OkdSow8oOckPo?=
 =?us-ascii?Q?eoOlJi2bGyg3BFMAKWLX+w1ayNXB3KV1qyxZ74JI5l4we6OHaz6O/KCaKNJH?=
 =?us-ascii?Q?Pw6xef5Ys/Osb1+xKN09mQhMMxTY1RvZf2u4/l1nKUY51Yy1sc65P8LmGQ6k?=
 =?us-ascii?Q?W5GIK5AWowSTl0Osxzlpd6oVj1suNamLI2VZq+WukXSYlbBOlLc7+eEftA8V?=
 =?us-ascii?Q?m+i+UDVy9kewxNVQY0UAAAZXYdsb9wP3azc7OVqUemvSCKoaTEsUXHC8Ubds?=
 =?us-ascii?Q?P7d/uQtdj4hVSjx0yVFpBn7acHHX/v6J0hJa++p41tZqSZCD+xzkAEYk4PWI?=
 =?us-ascii?Q?A4m7OaC1oKwBjiSbY+kPD90JqwCgRE58fFsaR/nbOuqsjZ7P6L41dOb55o3c?=
 =?us-ascii?Q?7qHm+xT5eF9G9FjvBGtEDJ7vDBtMRj8U/g8uIivj7BcPqBEV1A4TjmX624iG?=
 =?us-ascii?Q?ujlxo/TJR5txNXOfyojC/1KAMVFFkTSvKav8xJUXd+oSKz6kxVbiCLLTumt+?=
 =?us-ascii?Q?FMHXYVsIPbHpkeHeBP/mKymPrYxaKWSR1+tH00ia94e62eJs1Oz1pSkRJq4Y?=
 =?us-ascii?Q?jWUx8BcT2ChDYCXcUIeXR8pmgT5JGV5QrsWnPZmn7h8mTopy+i8vZnf42m9v?=
 =?us-ascii?Q?fSGXPl2STDKO8Jdox+YYhkdq6z/qH+zofZUQJyR5Wlmg/fSbsNeW9dL1q4Vq?=
 =?us-ascii?Q?Im0X5buSLQ=3D=3D?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4438fe91-8b9b-4d76-1a14-08df3a86e140
X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB6374.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 15:18:29.1360
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: TwwsL6Tcf3AXpqaPorpMG7ITn5VaGJOIMHt0mlryfOeownrBXNepE4ArkvpmTD1AC2xZvTkB70sGy0ywmKyQjA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8024
X-purgate-ID: tlsNG-c201ff/1793805513-718AE2A1-DB97C8B0/0/0
X-purgate-type: clean
X-purgate-size: 2467

On Tue, Nov 03, 2026 at 08:30:25PM -0500, Jason Andryuk wrote:
> print_s5_reset_status_mmio() expects to read FCH MMIO on baremetal.  VMs
> don't have emulated FCH registers, so there is nothing to check.  Add an
> early exit when running on a hypervisor.
> 
> The real motivation is Xen PV domUs can't boot on Zen CPUs.  PV domUs
> PTE contain system physical addresses - they don't have concept of guest
> physical addresses.  domUs can only map physical addresses they are
> assigned, so a domU fails to map the FCH MMIO addresses.  However
> set_pte() does not return failure, so ioremap() returns a pointer while
> the PTEs are unpopulated.  print_s5_reset_status_mmio() faults when
> reading through the pointer, breaking the boot.  This change fixes Xen
> PV domUs booting on Zen CPUs.
> 
> dom0 can map the FCH MMIO, but it has X86_FEATURE_HYPERVISOR set.  With
> this change, it no longer prints the reset reason.
> 
> Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
> Cc: stable@vger.kernel.org
> Suggested-by: Borislav Petkov <bp@alien8.de>
> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
> ---
> dom0 could work, but that would require a xen_initial_domain() check.
> 
> I've wondered about a different approach:  We can't directly check for a
> device for the FCH_PM_BASE memory, but maybe we could check for a PCI
> ISA Bridge with PCI_VENDOR_ID_AMD.  That might be close enough to
> indicate real hardware?  But it would still be a heuristic, so I'm not
> sure how much better that would be.

Maybe, I had an older version that used the smbus device / i2c driver.
https://lore.kernel.org/all/20230407203720.18184-1-yazen.ghannam@amd.com/

Is this available in dom0?

> ---
>  arch/x86/kernel/cpu/amd.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index 40463bad1078..580ccc2ce5fc 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -1357,7 +1357,8 @@ static __init int print_s5_reset_status_mmio(void)
>  	u32 value;
>  	int i;
>  
> -	if (!cpu_feature_enabled(X86_FEATURE_ZEN))
> +	if (!cpu_feature_enabled(X86_FEATURE_ZEN) ||
> +	    cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
>  		return 0;
>  
>  	addr = ioremap(FCH_PM_BASE + FCH_PM_S5_RESET_STATUS, sizeof(value));
> -- 

Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>

Thanks,
Yazen


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 15:26:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 15:26:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472124.1680136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcs8-0003fh-69; Wed, 04 Nov 2026 15:25:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472124.1680136; Wed, 04 Nov 2026 15:25:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcs8-0003fa-39; Wed, 04 Nov 2026 15:25:56 +0000
Received: by outflank-mailman (input) for mailman id 1472124;
 Wed, 04 Nov 2026 15:25:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOcs7-0003fU-5N
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:25:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcs6-006jVC-IT
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:25:54 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb4e72-e002-0a2a0a5209dd-0a2a4508b076-28
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:25:54 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb4e82-f659-0a2a45080019-d155dd30b5c9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:25:54 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48c4d99c32bso743365f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 07:25:54 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec9cd43bsm4560927f8f.14.2026.11.04.07.25.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 07:25:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793805954; x=1794410754; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4bcYCk6Y8Zhx25KuV8eKjws5b1k4b6hr1DLSooow4P4=;
        b=UA2GAci39ukgMMAGgslIVTeWlj14RYsDWKuS1VL2dJrAllvZS8LObGC0JVAFe/+icw
         xJJLNf/hF5JZ46yJXqVVy4VQWcsmq0h2DGCrm0rMF2wlKv9gOvrXmlSwaPHKwP+n63gS
         49srkP/vLZe7pIyPDtH2/U68ccPVfocNqAGUKGOtZ3+CW51/IM1L/jz6qQXLiNSR+zxS
         gn9RRFqUwf9VxMDuSoFRI+wRPBJP4UNIZGZABJ93uUHgajPp7QVPQkQuUT85g5JShoW0
         Dy5kHvlWZPviFRKH/7CEawXiet3fF55Wu7DQTDegflsCPWM3Hl3stx5QqooRIiaD3721
         WX9g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793805954; x=1794410754;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=4bcYCk6Y8Zhx25KuV8eKjws5b1k4b6hr1DLSooow4P4=;
        b=aZyBA78Ndb94KEvOOhKbuEhzpxCQvV+Phag3g8IhwbLTUBTBdkpMyzOgboLl0WKXif
         yziC2v4yFInBD06Qj62Aia8AWyNiPDzpLOvedErlpNicWZRgJBLnjvbUF/k5vKidf7nY
         CLsO6gdVV7NqIbnsR6USllg1G7VMmBBZ+F78SRxCjA465pKGnkaxIRRHY4UHNRjIloLI
         PMxCfSE4boZrRs6HBO/inIvtk5aaknJOJ8/uOXQbZ/vXZVM6sqP1MgcyQm8G/qUf21+N
         57+UR9oDkocFEqgCMztyFJTOr3gp3okv/CZnkx0fd15RpY695Iuc4ZNhlBlMno6RFFgI
         9bqA==
X-Forwarded-Encrypted: i=1; AKwUvBxQRGQy//uWbhzY+5woV01Do+4djyCII71+tLfMXs4gkjGqTLsNCm5QSq8/hZmiplO4gi5A9X5HiRc=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8Y/VIFxKXOeEckSp9P0A12fK5Pg3o7fius8BweMVtjn6Bv3DeA
	SaGNV+aiVvK+EFOUfP8uVZbBfRKHM+5phiBO0ixRWt75+1G1wFHN7V5N
X-Gm-Gg: AYBFou0nLA7ZCPZ2hc/Ze+FdkWzGgn9jyjAAKg+SUYgS/ptpPUSNSK88I5dKhLay32Z
	1th05uOEzYBzxxXxZA4aYSpJ9FWYqtnnQD7CmIBhu1uXsrePAjlnllIjSH25LN7gPbUjhYhjbvt
	Gxnp8vOG7l6NUf/y3zzgup2zWVEncqKOQQwcBSz0VJPHjuyrVMhtCkVZXmyFUEgHWlielGtqa1B
	KLfkxSA1MS2jSB4damDMCo4uq+rbf0JvMGQf9zRa1OO1BJiMs5IyzFJX2VieEiAvToRAMNkJKYt
	vZTCdt6jGT8zUmWFtJwV34Qrc/Ym4XT0IhLI7DcmgGs5Qz+uxWb7pWNV09MUMfgvfDSEoceTu5X
	ypc2Ny9We/22Cpvmap+ykCXyzl1ltcr15tvBiy8WapriXC94cDfvfcO35wLENP4L383ChGvAjbl
	9wCxPXmywHqvrm6zK/2GtBAdyGU5a6nUP/i9H2dsCx7bnRu6DlL1mpGrooKSQBGFbq+d3rBcS4x
	iiSQC6rsf4JqbgCU0MNBTP5r5mhEkeW7kXsGiPfFjUz1Ie4p9DqqmD7Dcl8OJeDhhx84WevVyy3
	59NyaaShbM5FLSIhXfUqFWzwtLXK8HZBkw97nhkc18n8Z5H2eb/73a921S36d8WX/hyBbS4OG2c
	SY04=
X-Received: by 2002:a05:6000:46c6:b0:48e:d88:55e5 with SMTP id ffacd0b85a97d-48e6e2bc9b7mr26256307f8f.6.1793805953226;
        Wed, 04 Nov 2026 07:25:53 -0800 (PST)
Message-ID: <b5f8e706-4691-460d-a377-7b1ae87b97c3@gmail.com>
Date: Wed, 4 Nov 2026 16:25:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/39] xen/riscv: add guest memory read helper
To: Jan Beulich <jbeulich@suse.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 xen-devel@lists.xenproject.org
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <c77408157f7674ad2ffc775d1267470b724fdecf.1790779209.git.oleksii.kurochko@gmail.com>
 <1792595464.8631fc262581453bbf619ec5b2062170.1a15f041119000f79f@vates.tech>
 <9c74569c-82a9-46b0-a013-c502c36c8d38@gmail.com>
 <a7217959-5019-40fa-ab49-b6270727b4be@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <a7217959-5019-40fa-ab49-b6270727b4be@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793805954-D594A87B-6FBF9407/10/73395122804
X-purgate-type: spam
X-purgate-size: 3827



On 11/4/26 2:28 PM, Jan Beulich wrote:
> On 04.11.2026 13:39, Oleksii Kurochko wrote:
>>
>>
>> On 10/21/26 5:11 PM, Baptiste Le Duc wrote:
>>> Sorry I forgot one thing.> +unsigned long read_guest(unsigned long
>>> guest_addr, bool read_insn,
>>>> +                         struct trap_info *trap)
>>>> +{
>>>> +    /*
>>>> +     * Poison the result: if the very first access faults, the fixup
>>>> skips
>>>> +     * over the loads without writing it. Callers must check trap-
>>>>> scause.
>>>> +     */
>>>> +    unsigned long val = ~0UL, tmp;
>>>> +
>>>> +    /*
>>>> +     * hlv/hlvx use hstatus.SPVP for the privilege of the access, and
>>>> the
>>>> +     * live vsatp/hgatp for the translation. Xen never installs a
>>>> value of
>>>> +     * its own in hstatus (it is only saved on trap entry and restored
>>>> +     * before sret) and it doesn't reschedule before returning to the
>>>> +     * guest, so all three still belong to the vCPU which trapped.
>>>> +     */
>>>> +    if ( read_insn )
>>>> +    {
>>>> +        asm volatile ( "\n"
>>> I think this would need asm_inline instead...> +            "1: hlvx.hu
>>> %[val], (%[addr])\n"
>>>> +            ASM_EXTABLE_TRAP_INFO(1b, 3f, %[ti])
>>>> +            "   andi %[tmp], %[val], 3\n"
>>>> +            "   addi %[tmp], %[tmp], -3\n"
>>>> +            "   bnez %[tmp], 3f\n"
>>>> +            "   addi %[addr], %[addr], 2\n"
>>>> +            "\n"
>>>> +            "2: hlvx.hu %[tmp], (%[addr])\n"
>>>> +            ASM_EXTABLE_TRAP_INFO(2b, 3f, %[ti])
>>>> +            "   slli %[tmp], %[tmp], 16\n"
>>>> +            "   or %[val], %[val], %[tmp]\n"
>>>> +            "3:\n"
>>>> +        : [val] "+&r" (val), [tmp] "=&r" (tmp), [addr] "+&r"
>>>> (guest_addr),
>>>> +          "+m" (*trap)
>>>> +        : [ti] "r" (trap) );
>>>> +
>>>> +        /*
>>>> +         * Although HLVX instructions' explicit memory accesses
>>>> require execute
>>>> +         * permissions, they still raise the same exceptions as other
>>>> load
>>>> +         * instructions, rather than raising fetch exceptions instead.
>>>> +         */
>>>> +        if ( trap->scause == CAUSE_LOAD_PAGE_FAULT )
>>>> +            trap->scause = CAUSE_FETCH_PAGE_FAULT;
>>>> +    }
>>>> +    else
>>>> +    {
>>>> +        asm volatile ( "\n"
>>> ... same for here.
>>
>> read_guest() is an out-of-line function with its only caller in another
>> translation unit, so asm_inline wouldn't change any inlining decision here.
>>
>> volatile is still needed, as the asm may trap and reads memory which can
>> change behind the compiler's back.
> 
> Yet that's not expressed by volatile, but by a memory clobber.

Agree, this was incorrect justification of volatile. Volatile still is 
needed I think as suppose the calling code looks like this:
   read_guest(guest_addr, false, trap);
In other words, the return value is ignored.

Theoretically, if volatile is removed, GCC may determine that:
  val is not used;
  tmp is not used;
  guest_addr is not used after the asm block;
  trap is not accessed after the function call.
If the compiler can also prove that modifications to *trap are not 
observable, it may eliminate the entire asm block. So to avoid that 
volatile will be better to keep here.

Memory clobber still seems like isn't needed here as the only Xen object 
written behind its back, by the fixup path, is *trap, which is already 
an "+m" operand.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 15:31:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 15:31:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472136.1680147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcxo-0005Mf-QB; Wed, 04 Nov 2026 15:31:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472136.1680147; Wed, 04 Nov 2026 15:31:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOcxo-0005MY-Ly; Wed, 04 Nov 2026 15:31:48 +0000
Received: by outflank-mailman (input) for mailman id 1472136;
 Wed, 04 Nov 2026 15:31:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <superm1@kernel.org>) id 1xOcxn-0005MQ-Vg
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 15:31:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOcxn-007b1n-CA
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:31:47 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <superm1@kernel.org>)
 id 6aeb4fd8-2eae-0a2a0a5409dd-0a2a450189ae-24
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:31:47 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <superm1@kernel.org>)
 id 6aeb4fe1-5984-0a2a45010019-ac6904fe9ef6-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:31:46 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 5A2C1609EC;
 Wed,  4 Nov 2026 15:31:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id EBBEA1F00919;
 Wed,  4 Nov 2026 15:31:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:Subject:To:Cc:References:From:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793806305;
	bh=BbsPBio+Oi/xjMetnaljYPX/wuA13D25oo61h67SSDU=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To;
	b=Y28sZgTeh32lyjy9/v4jGgSg5tYNX2dB5uW6e8Jgp5bOOWnfUO8J3iDnDmdJZXmL5
	 bxsT7bcvSFfswUkpXDSv+vMnUiFg/trE9LxdVv6Ln75jfGUzg/CkSPuM295rzSqm3u
	 zIxEHZwf4UcfbJ3G8EMYNAgMBK8SUrS/D8g+brBRZ2DC7agrujCn1A8uUvXitnePb7
	 b/h+egSL7WRRN1bczwqsHOyiyHo6xnd36UEZYYWoRQ1NLN1B7woLQr5uEGp8cw+pvX
	 6m5PF5+CqyaAQvAJleJW+xzqr70F7/rVhSApysM8OVsCA5wWjKsChXmmCwdVN+UwD8
	 tsxhFKCeYPIzg==
Message-ID: <a64878d7-c765-4311-8c59-fa855fddfbda@kernel.org>
Date: Wed, 4 Nov 2026 09:31:42 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
To: Jason Andryuk <jason.andryuk@amd.com>, Thomas Gleixner <tglx@kernel.org>,
 Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,
 "H. Peter Anvin" <hpa@zytor.com>, Yazen Ghannam <yazen.ghannam@amd.com>
Cc: xen-devel@lists.xenproject.org, Ariadne Conill <ariadne@ariadne.space>,
 Sean Christopherson <seanjc@google.com>, Juergen Gross <jgross@suse.com>,
 stable@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
 linux-kernel@vger.kernel.org
References: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Language: en-US
From: Mario Limonciello <superm1@kernel.org>
In-Reply-To: <20261104013026.185392-1-jason.andryuk@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793806307-1D272757-E887482B/0/0
X-purgate-type: clean
X-purgate-size: 2256



On 11/3/26 19:30, Jason Andryuk wrote:
> print_s5_reset_status_mmio() expects to read FCH MMIO on baremetal.  VMs
> don't have emulated FCH registers, so there is nothing to check.  Add an
> early exit when running on a hypervisor.
> 
> The real motivation is Xen PV domUs can't boot on Zen CPUs.  PV domUs
> PTE contain system physical addresses - they don't have concept of guest
> physical addresses.  domUs can only map physical addresses they are
> assigned, so a domU fails to map the FCH MMIO addresses.  However
> set_pte() does not return failure, so ioremap() returns a pointer while
> the PTEs are unpopulated.  print_s5_reset_status_mmio() faults when
> reading through the pointer, breaking the boot.  This change fixes Xen
> PV domUs booting on Zen CPUs.
> 
> dom0 can map the FCH MMIO, but it has X86_FEATURE_HYPERVISOR set.  With
> this change, it no longer prints the reset reason.
> 
> Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
> Cc: stable@vger.kernel.org
> Suggested-by: Borislav Petkov <bp@alien8.de>
> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
> ---
> dom0 could work, but that would require a xen_initial_domain() check.
> 
> I've wondered about a different approach:  We can't directly check for a
> device for the FCH_PM_BASE memory, but maybe we could check for a PCI
> ISA Bridge with PCI_VENDOR_ID_AMD.  That might be close enough to
> indicate real hardware?  But it would still be a heuristic, so I'm not
> sure how much better that would be.
> ---
>   arch/x86/kernel/cpu/amd.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index 40463bad1078..580ccc2ce5fc 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -1357,7 +1357,8 @@ static __init int print_s5_reset_status_mmio(void)
>   	u32 value;
>   	int i;
>   
> -	if (!cpu_feature_enabled(X86_FEATURE_ZEN))
> +	if (!cpu_feature_enabled(X86_FEATURE_ZEN) ||
> +	    cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
>   		return 0;
>   
>   	addr = ioremap(FCH_PM_BASE + FCH_PM_S5_RESET_STATUS, sizeof(value));

Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:25:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:25:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472192.1680154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdnZ-0004J0-DY; Wed, 04 Nov 2026 16:25:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472192.1680154; Wed, 04 Nov 2026 16:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdnZ-0004It-As; Wed, 04 Nov 2026 16:25:17 +0000
Received: by outflank-mailman (input) for mailman id 1472192;
 Wed, 04 Nov 2026 16:25:16 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOdnY-0004In-Dv
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:25:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOdnX-00Csmt-Qw
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:25:15 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5c65-2eae-0a2a0a5409dd-0a2a45038fda-28
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:25:15 +0100
Received: from [52.101.85.12]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5c68-fae8-0a2a45030019-3465550c1c9b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:25:15 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by MW4PR03MB6990.namprd03.prod.outlook.com (2603:10b6:303:1b9::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Wed, 4 Nov 2026
 16:25:09 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 16:25:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=R+0mRhot+ujOiFCm6HlqoLqkC/YCZVVMpjjLqwbyccc6AYYszlojXednXRGUPhfRXCMzsNUQvEawvg/eGzYiHmrTwebPswG0zlem4Bf7zXgNLe1sT7unDDqxw+znbGpBbBU17BT2Sn4PgTym+1RrVJ9vlqgUOV8ego4AYhv1s7U1Kese+opOBWlLxSnxdYEcLGMLnvOejuvVWMrHF+8/BKPFSiUDgFuLsPlT/lbwR2xZiyCtZcz54P22ZueyFb1xCO06+VHXYU3Vm2HGGuEq3tRnM/ZHrp8K5bDphgZPbRVyW+s2QgbYLGP2GcQMqPznkyoeMM2NOczH7Izy3/WNEA==
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=zdig1zY0Dv5t/iGTAjx9LBXwCFIeEfeZE7pMk03XenA=;
 b=yl0NqiZI9k1XsJpFFPVJUyHa797Kz19WgxEWiSsUlPKRzr7FjixxPdO0e6pl+4fmNav0AE3FTGyFp5U15jldJtK98WPH4ueTmWKOvOhQ0MBDuB946w7EglwxhHTH7pBtL7Lu6LMDnFXDsdRf0aV9wyBJHGzOMhfXtvB9aevA3++UNdva21tYVuCyecEIljMdaip5g1QwgCeqxBjYGsCWGugcsts0pREFLMM5Y6sdTxzTZTOB8X/6PzinGEamM9G8y2/gck33XAhvv4VP1pDwwpWT4y6dHiEQOqSgNQNeuEe6cmamu8Sc12Y1wbGtC5zV4wGIc8OOM29KGJpELTLyig==
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=zdig1zY0Dv5t/iGTAjx9LBXwCFIeEfeZE7pMk03XenA=;
 b=V1dZ5soo5zQvshhkF4bfggl4fTzFeifIlRWwQjZP+52seYuJ3Kpk83W3bCR+fOCyfWRAqDJpeoNeDAKSPmW7DL7Y8NCbsJz/QRokkp9R2Zn+37XYTdQ/sVgha+YCEPYZxyAjypcJ9CRFs96E0rWVrD+WFrkW2LzXAEswmDQ+kNQ=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e63f8ee9-0537-4d3f-aea9-5fe2f356b86b@citrix.com>
Date: Wed, 4 Nov 2026 16:25:04 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 1/2] xen/build-id: Introduce is_gnu_build_id()
To: Jan Beulich <jbeulich@suse.com>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
 <20261104135133.2209628-2-andrew.cooper3@citrix.com>
 <9f55c251-af36-41e0-8afe-cb218d41f6cc@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <9f55c251-af36-41e0-8afe-cb218d41f6cc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR1P264CA0041.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:2cb::6) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|MW4PR03MB6990:EE_
X-MS-Office365-Filtering-Correlation-Id: 9252a7cf-2ab5-4618-b1e3-08df3a90312c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|10067099003|18002099003|22082099003|56012099006|4143699003|5023799004|11063799006|261022105027099003|261026140227099003|261028144727099003|261026121527099003|261021121427099003|261102123227099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	4WwXFSti3PXpaSLCbQzBFNKVan+PrH88AzS3dbisTAeW2xAHUPElSPRRh3xIj+htPoUygEitr7Fcw2DR8o+BwciUW7XS6fQ/hOLDYfZoeo5Di0agUdQpDLCG6W5Y+dLPwrzmjWmn6FWdg3dsOBnJ7Fk9l/P+GskdqNEMqwK2RaiVgouM5LpAWmZLINQGWr+sOmRwhPgx7jduk2aWGredN5Sq1+zTb7EIMzajowvk/1UoffMiYIFcToYggPOrq7zBDowPSlL8uL/6RnAVAMuE5h7024UAL1OTj2PzJJPrY+hSSp7ozLP+hwF2UdwpbG04yx60dubCIcPaUgRC6q1QcshFAGGZWY6kGmgZLj6FxqFFtpNKG7XGNsuZktbIVbmJkUD4inss0+dqWt5YUM1/5s5ouWC3gEIqygIOSX+BskEIBWBQ9CSb1zdOJhnreO/g5HdlLvo+YOXBM7Pazsduk3OaxPIdhgpISKKRsJCkaGqSIkJw2al9BMOIS0M0vBk+Rc1kwZV4HFc2HuddWOedPMj+f76xnu+eCEXoCa4ByHH/cT5ZFgeJ9zmdM3HywPi0YlH9tt+WBed5QDtKROIXGOi+it481/OAKSu6pMWf2WDKqTAQjoFNt/GuwixYytpNe/InxdHZ/XJABGR/oihPsenLoO6hdB220BKL0ynjpJw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(10067099003)(18002099003)(22082099003)(56012099006)(4143699003)(5023799004)(11063799006)(261022105027099003)(261026140227099003)(261028144727099003)(261026121527099003)(261021121427099003)(261102123227099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NnhVQkJnU0tvN0UyQzhnd2h0VnBDaithMUxzSlZRenpiRDBZdGhkaDBGcW0y?=
 =?utf-8?B?d2lnZUI2RzBVeHppUHNtOGNrT2lIZlpFRlVWNGhXQVFnWjBOYXJjR2hSNHh3?=
 =?utf-8?B?c1U1Z1VTdXhhN1J6QjRWS2NLdkNtay83UUU1R1Z1RU0zNzJOWDUyYlhMNjg4?=
 =?utf-8?B?R0FGbnFIck0xd2wrdU54MXVHZFpNNmdaUXZxckFoWU1OSXcxWmtuU1NrSkhi?=
 =?utf-8?B?U1RsQndyaWtUanZlenQ4SEtrVDNaKzc0NnF4RnA1eGFhUEc4eFpFZFFOSEJJ?=
 =?utf-8?B?V29QZjdxYXg2akZSZ2hUOUlFdkp1UFZ0NVNpNWV2V285cDRzWXRwcDZIRXFp?=
 =?utf-8?B?bWtPYmtNRmxyZWNqVnVNMFBGNFh3TG4wb0xHRkFOWCsyQmNkU2U5V2I0OTBG?=
 =?utf-8?B?YjIzUmowYW1IL2gxZWtZcmgzK3BHdXkzdnl4bDFCVW9xWFRlMFg3aEplaDQ4?=
 =?utf-8?B?VHNsSURzS3hFVjBwYUNXcjBMc3JaVUhzdEpJTlczRzNQc2hxVFNKZGtJNzhP?=
 =?utf-8?B?Z3hES0Q1OVlDeDhwL3V3MWtEeEVJRllMUW96NWhKb0xQaGZpbXc4RVBRdFFE?=
 =?utf-8?B?aXVOVHJSVmxVRTFEek5XYWVpckJMOThET2ZGdGNpRUYxR1V0Zk9nYnFNQUQ5?=
 =?utf-8?B?L0J0S3J5VnBoRUZnTVk2Z0FDVHZ2Ukx0LzhTOTQ1b2FkcVM0RDBGT2Jmck4w?=
 =?utf-8?B?U3AwOWRJQjVNdlRaMlFlMHZIdktzK0E2cUV5dFZLNkhBWDFIa082eXhQLzMz?=
 =?utf-8?B?RU1Sd05zdStqQnhIRmdhTlNoL3cxNTFpWWFUN2w0NWU0NFZMK2RWcUZjcEoz?=
 =?utf-8?B?clQzR2FZbklnVHZ2U21lNlMrOXFXanZIMzJBT1RNTHNUbEhQQXBsdUhRc0sx?=
 =?utf-8?B?REZrcllDQXlocVdCb2hiekF1T2dSTnpYWGNIRm93dWFJWDNXbTg1cHlyV3dh?=
 =?utf-8?B?SUNnb2lJSnBrZmllaWw3NkJsZkFPNnpnYkpYMVhUU1A5N3djNWdaMi9nWmF6?=
 =?utf-8?B?SWhtVGNSM3FZT1J3eUJucDVaeElDbTBud1hOS1dONGY3WDU1OUtBd0JqeXRl?=
 =?utf-8?B?QVBtVXpQUDMxN0habjFUb0ZUYXFQUDkvVDgvY0xESzVzbnBSbGxBMFllMGpS?=
 =?utf-8?B?aEtIc1BPd3ZWM1VVcFg3MkxjTXEvNTJEcllaZXo1TDBmMlFGYlJ2ekhyWWEx?=
 =?utf-8?B?aGloZXYvTy9HRjQyY1gxVnRscXNBRHVKd1c5dHAvTUtlN2JSQ1BkTXlKeGtl?=
 =?utf-8?B?OGRZZCs1Y3pYK3pHM2JOZ2tjMzNCOXFDU2NrNXl4WTU5cTJJTjV0TnNtaVoy?=
 =?utf-8?B?cUM0OXpaWndudGxsU1lBTzlRb1FVY2dhTHVWbmVScUVkZWo1cHUyREoxb0hh?=
 =?utf-8?B?eTFwazlVTFJMUnM0R2RxRStidkZQeU1rY1owVHVGZlpjNmtyVENLVG5kN1hq?=
 =?utf-8?B?bnM1RFRCVnJ6eExtblkzc2crbVBNWWM0MXNJNk5DVWJmMUczcmFvb3BjY0gv?=
 =?utf-8?B?bmNVeGtoNEZmYWVTcWp2aFZvTzNuTmIwVHZ3SkhLcmRYWjBLUCszYTZNcjhp?=
 =?utf-8?B?cjI0QlVNSml1aU9oUjVLUHlrV2VFZ2xaNmVCNS9oVXVWNjR4VnBTNG9NSkVz?=
 =?utf-8?B?SkVxamU0UTJ0M2s3N0xxQVdvUFZJUC91SHgzUmROa21UUy91Mms3SmZ4T3B2?=
 =?utf-8?B?OFhKVnNud1p3T0ppeDZBYTlySWpqMThwS29UdHpKeWozWmNLZEVnU3d0djh4?=
 =?utf-8?B?alFyY2ozNXZSS29xMFdpVlJFcU9NY0NsYjhtbHRCdk5zSnFEQlh1eWNiU0FW?=
 =?utf-8?B?aVhIT2pNdHdtd0lIM0lQUFdHM2pFbEoyZEZkNXg1TGE0SWwrRlZzS09jQTl0?=
 =?utf-8?B?Z3RnTkFtczNXanBHSWJXOEovVW9Td0FMU0p6cXdDN1RWekcrRU1QS0NzR0l2?=
 =?utf-8?B?aUZVQzVxY1N1RFFPWnN2SVVvVUN2UGlUTUJJYitEVHZxbGc5RWgwQVBoNHFW?=
 =?utf-8?B?S2g1NzQ0WUpMRTNVODlDV1BvK01iQ2p6enJrdjlZWHMyTkFaVnJGRGFWd2J3?=
 =?utf-8?B?c09GbS9hc202ZS9uK1d5V2hZK3o5bG1pRGYyOXdYdEhxN1JKMklTWEg4NzdU?=
 =?utf-8?B?STNUdkczd3R3dVNHTGpwTHhBZjNYamxDOHBlc25pa0tGOSs5YmtEZkdVYlJE?=
 =?utf-8?B?VU5HZStUeXpDYkZzQVcwbWd6a1RyZWREcnMyeFZhYUtjRXFVWjV4bG5SZGJW?=
 =?utf-8?B?U09WSy8zYlJLTmRNWkRUVXRUSFpwU3dVRFkyTzVoekdUcHNFcEtMcUIxVTN0?=
 =?utf-8?B?UDNDa0cwZVlMUVZDQ281c2lnYTQ1cnpCSXVPRWJFRi9sa0ZBL2p1QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9252a7cf-2ab5-4618-b1e3-08df3a90312c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 16:25:08.5294
 (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: hDd5FGREHM3l+vie3OmkR/KQfuie0JREBVRxE4QXn9OC9UWq42e1tRc6n5mEp+JodcQkQEmcnwYTTCQrkoIbv6dsGI6vcMh+iHMjJpOjNAA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR03MB6990
X-purgate-ID: tlsNG-33051d/1793809515-6DAD44E9-B78EC560/10/78276251493
X-purgate-type: spam
X-purgate-size: 2753

On 04/11/2026 2:49 pm, Jan Beulich wrote:
> On 04.11.2026 14:51, Andrew Cooper wrote:
>> Broken out of the subsequent change for legibility reasons.  It will be used
>> to replace xen_build_id_check().
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Ross Lagerwall <ross.lagerwall@citrix.com>
>> CC: Anthony PERARD <anthony.perard@vates.tech>
>> CC: Michal Orzel <michal.orzel@amd.com>
>> CC: Jan Beulich <jbeulich@suse.com>
>> CC: Julien Grall <julien@xen.org>
>> CC: Roger Pau Monné <roger@xenproject.org>
>> CC: Stefano Stabellini <sstabellini@kernel.org>
>> ---
>>  xen/common/version.c         | 33 +++++++++++++++++++++++++++++++++
>>  xen/include/xen/elfstructs.h |  2 ++
>>  xen/include/xen/version.h    |  2 ++
>>  3 files changed, 37 insertions(+)
>>
>> diff --git a/xen/common/version.c b/xen/common/version.c
>> index 80e7a9b981cf..7eb8a0221d82 100644
>> --- a/xen/common/version.c
>> +++ b/xen/common/version.c
>> @@ -114,6 +114,37 @@ void print_version(void)
>>  /* Defined in linker script. */
>>  extern const Elf_Note __note_gnu_build_id_start[], __note_gnu_build_id_end[];
>>  
>> +/*
>> + * Check whether @n is a GNU Build ID note.
>> + *
>> + * We check that:
>> + *  - type is NT_GNU_BUILD_ID
>> + *  - name is GNU\0
>> + *  - desc is non-empty and exactly covering the rest of the buffer
>> + *
>> + * If this returns true, the contents starts at n + NT_GNU_HDR_SIZE.
>> + */
>> +bool is_gnu_build_id(const Elf_Note *n, unsigned int len)
>> +{
>> +    const char *name;
>> +
>> +    if ( len <= NT_GNU_HDR_SIZE )
>> +        return false;
>> +
>> +    if ( n->type != NT_GNU_BUILD_ID ||
>> +         n->namesz != 4 )
>> +        return false;
>> +
>> +    name = ELFNOTE_NAME(n);
>> +    if ( strncmp(name, "GNU", 4) != 0 )
>> +        return false;
>> +
>> +    if ( len != n->descsz + NT_GNU_HDR_SIZE )
>> +        return false;
> Isn't this too strict a check? Build-IDs can, iirc, take different formats
> (yes, this is under our control, but still), and I don't think there's a
> guarantee that all current and future ones are coming without any padding.
> IOW I think len wants comparing against the rounded up sum.

Hmm.  There should be no padding included by the __note_gnu_build_id_end
marker, but there may be in the section size used by livepatching. 
Still, there must not be any rounding.

is_gnu_build_id() needs to return 0 for failure, and n->descsz for
success, and this check needs to become len > n->descsz +
NT_GNU_HDR_SIZE in order to tolerate tail padding.

The caller cannot subtract NT_GNU_HDR_SIZE from the input length,
because otherwise the padding would be considered part of the buildid.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:26:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:26:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472203.1680164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdp1-0004uS-QP; Wed, 04 Nov 2026 16:26:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472203.1680164; Wed, 04 Nov 2026 16:26:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdp1-0004uL-NI; Wed, 04 Nov 2026 16:26:47 +0000
Received: by outflank-mailman (input) for mailman id 1472203;
 Wed, 04 Nov 2026 16:26:46 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOdoz-0004t4-Rz
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:26:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOdoy-00HQae-UM
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:26:44 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5cbe-8faa-0a2a0a5109dd-0a2a4509bb78-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:26:44 +0100
Received: from [52.101.48.68]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5cc2-be1a-0a2a45090019-346530448573-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:26:44 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH0PR03MB989099.namprd03.prod.outlook.com (2603:10b6:510:3ae::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Wed, 4 Nov 2026
 16:26:41 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 16:26:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=E4H+kyLyMjfw6KhAVo65/W+3OYMA9BNLXZPvi7Blu7c3fwTfFA6JHTCU46YtMRhw1JWgQF655DTcrKEKsBN8k5kNw9smwdzw+tYg9F4XkNFwn5FDV2/m5BBCg57Wz4p8wY5/2F6NwnArANrgOmLPqDDMdN2cNMIwJdNIsCiK0BF/6b3siH9OWANOaQY/6n+y51Ds6AsZ+Ctg70d0MvCn0HgDB8VY5YH+AJx+VFi+xYv7mTRJHAQUijKkOE0oIA8GoCxcqje7ZFkjc1PRSunQlodjB8n6VXai+i6tN1VdaJANkXBuf9/98ktWthFHfMCU1PAeK+vtKKJXscw9xGlPwg==
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=YzEK3gzuj+8QXHftfDw4UE8h9LAlmr6hLfSRZ+Ewkhk=;
 b=dyH5LhnX+vJh8yGDM1shT7sQD030CQ8Xip2hvAoB8C8sLGOOxSKk3hpUm2amuckvTKVwjaZo+/G5ufUWm01o7eZsJ6bCI84qweD1HD4+/Q6Z5xLjATJYBazG9FB3Jzg4LEAdTBse2cDg5g3XErJxGnRiUfkcPvukmHdog2o3W4IBjzm1cwfZtCY7JigOlvdT33/eVMQcPGXPIAa1qfR4OybYjXZ1T0m+K3yKPnCR/DJlPczpJFoWCNvOB5qKCOeiSx/JYMqohwWz+2Uf9y5OfPbamPjd3W4YCk4jo4IQCoMlVoY73vH5vv8L9hf7TEgoicfDlIgK/1fJ2YrK+jkhhQ==
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=YzEK3gzuj+8QXHftfDw4UE8h9LAlmr6hLfSRZ+Ewkhk=;
 b=O6t4hcACOnXFY1kDx0acZOCEjxqjiv/syen/1LLAqKKC7PqUb3HKoAV+kXCBMTd6Obpqw+OkK18kPXT07WZgKCXN/uoGp/ri8nVBslGB1FJvy1Wc2Qt4zfMwnOU7AII5oFQZZ8vWCDBEKTSqMV/I6M4zYyZuOIWDh2nxG7rDUPg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <3263bece-7df4-4b45-bfc4-cbec83e13657@citrix.com>
Date: Wed, 4 Nov 2026 16:26:36 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 2/2] xen/build-id: Drop xen_build_id_check()
To: Jan Beulich <jbeulich@suse.com>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
 <20261104135133.2209628-3-andrew.cooper3@citrix.com>
 <28839e8c-bcde-463e-8617-92576ca8e8e6@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <28839e8c-bcde-463e-8617-92576ca8e8e6@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR1P264CA0043.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:2cb::20) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH0PR03MB989099:EE_
X-MS-Office365-Filtering-Correlation-Id: cc59410b-0249-445c-9608-08df3a90685a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|366016|1800799024|4143699003|11063799006|56012099006|261028144727099003|261021121427099003|261022105027099003|261022075727099003|261026121527099003|261102123227099003|261026140227099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	vpq/jB3vukKCMd+jQaav0A3AT6xa7oWswhj/eLSdJUTjbrCu8WdF/31vFOjpHrL+yBgW1nZMFGg/Gl5J52KaKenocv8B2WlNP7tpzglswbrRQ1rUmY5ApAZHLddvkijZT2nWkLtlf3vkJbeZprzfDGeouCsMIXvyvITCivcFX+b4jWgpBzCbFIWm0Xx1XfuVmmD2Cg6NiKVzJSsYYs5bqPlkbYUzWVA1mthqgBFUND+GNgKZdqtirjOQF3rJetezXulZKCKrpWuMOyQzqeidAksxQ+L3DRVUWjl5s261tPhMXghX1ZM/UFQkds+H+zhOqPEh7XQ6/SM2W6kAfiZJlRj+xHD4IB1VIl3Sxf7ccwYkwXwG3b6TmrpwiMVst6CLhjjbrVq0QxPZ9onaBDv8cxOKslL2+C9cOfFXWKQqfrD/l/Tt5tswhsEIw9hes5e8mO9aG79XHjRObfG7f2hyiXjSVWQcY878cYXZJuRwUrx74QayBz6OMmpuJjIv6sJ+rGoyFSWRfckbDYXO7dEoXApZzhRnOfV9l4WQ1ERikPBWKfNwmHwFqeYGn+bVb7/ruBu2zqm55ho9gmodL416JZEY5yOO91eXzdpxv/FXhgR09EL6oQeCAqthKzGp/yKAteQZqmE8/jk49qkxqk9UPprxywxstWogVSfX4G2Tkls=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(366016)(1800799024)(4143699003)(11063799006)(56012099006)(261028144727099003)(261021121427099003)(261022105027099003)(261022075727099003)(261026121527099003)(261102123227099003)(261026140227099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aHh2Nm9MUnZ3RWhzV0JLZ2xmbHF3Wi9qMmxuVUF2VWtEclZvTWRzRHd3VitI?=
 =?utf-8?B?a0gyYzV5Qkx3UWtrMHllS0xOc1JIMlJVVmEzejVXMjBIeFJTcHJhTnlTeXdu?=
 =?utf-8?B?MGFTa0tnVkd5S0lVcUZEWlJrZThkWTVsc3cxTmtSaTBLN2xobG1JZzdXNmMz?=
 =?utf-8?B?R1hpSHlJaStlWEZwZ0hpZmFFZmE1YkdDOWpFanN2RXdNYm9XNFZqUGQ4UUFr?=
 =?utf-8?B?T0JiU3NSVGZNSnRORG9OeW02bFdCNE5vMk9lRWVEd0FUQnh3RC9tOXlNNjBD?=
 =?utf-8?B?QzNBeFJ3K0t3RVAwa1UrSytOeEF2Z3dJSGVvWElDRWJnVU55VjZ5ejZ0OHUr?=
 =?utf-8?B?c2xlYkFuaEU0R0cyWGFaM1hDVitaN1drSFU2VmNhLzFhL29YOUgzZENqcFR6?=
 =?utf-8?B?RUVTZGVoTDhTa1E4YTZablkrMzZXM2pHRTVhbzNnNkRGQ2RKcW5nR2tma2Q4?=
 =?utf-8?B?UXhHWFk1L0d4RnUyS2NOR1BNL0tXUTVqNytUNXZLcldKWDZJdHZmV0MvRkhD?=
 =?utf-8?B?b0tNMk5pdHF5QVVJTDZVb1VBVFgrTUJHbER6NWJwOEFIK1RJZ3lpeTdoUTdX?=
 =?utf-8?B?RVBIK2pIc24yVTVFT3ZQbU5pcXYyem1LbEdmVUlYNFhDc0pQTlhObnV4bThI?=
 =?utf-8?B?OXkwamFWU29qUE1LZ09seWN2bGhKOHhlT2NKbWVDTHNIWUFRbDN0RDkreURR?=
 =?utf-8?B?d0NtZUtzN1VJQUF0eWYydzRFeThCdk1tM3QxTXQrZVVWUVhaa21pUldoRWxl?=
 =?utf-8?B?azVOdEhrSU1PcUVWZzEwMmRFUFk1eUZ0NWYwbFdPOGxkNzltSlJSTzNWWDRK?=
 =?utf-8?B?czdBY2NGZzI5VzVkUld0SUtmRnc1ckwzZlY4NzFqRk5SQ0QzdVJPbEpqUGxr?=
 =?utf-8?B?b1hmWERFZ2padGYwcUNnYnd5dEdUcWVmcFRzM0FLOGcxTzdQY1NLVE43ejNw?=
 =?utf-8?B?SXhaRm5KT2xUaFJYT3B4R2UvREpNbnNrblhGNWVaRlBEZFE5N3puVC9KQnR6?=
 =?utf-8?B?R05MdlRlZW1TVnN2KzlMZVVGOGx6YWdjbUlyeWgrWTBwQzFSRzFhR1FVcWlP?=
 =?utf-8?B?VlRxYUsyOGRUa2VscGZFZHhEeExkeUlPUDVMcVlTaSs4RGltazdDWDJCK1g5?=
 =?utf-8?B?UEF4VzRHdm1HK0pIZ0pkRG5EcjhsSHRGRmFyckJrV003TXV0VWZNdFNqbWM3?=
 =?utf-8?B?TEt4OEUyNHl1WlJLRE53SFF3cXRENmpJMGJqSG1kVURhT3ptMEhnZ3NuMjRm?=
 =?utf-8?B?cE5UcDI2d3loendYV1lORndlc2lUcWVkT0F3RytncUFXU3A0MzJHckVKY1VY?=
 =?utf-8?B?Mm96eVRodVlJSjFjSzFPZ2pjbFh4TEpBYkFrRkJXYmVGajZEb2FaUjJsQ281?=
 =?utf-8?B?NHkvdUVVR29kR2syTWNIY2ZxRlRzUXdzbjQwdEFwK0xjZEJhbENJMC9tL3M4?=
 =?utf-8?B?ZFY5TlVCM1hEVFlaRlI2blAwWjRHa0sxelNzZDdBVVNJdEVMN0Y3aEczU2ZX?=
 =?utf-8?B?RWNWVVRvdmNGMFpuMlpzUCtvbVlkWTA1OUoraGl3TXk1RXF5MHFOa29zaVBW?=
 =?utf-8?B?Nk0rcFlwam9scGduMVNtTytEMkhJZXFwZVpmdFMzVHF5T0hoeGRZYlo5aDBW?=
 =?utf-8?B?QzFiQ05GVENpM2FUVmdkMHRYc1pYWFc2RFRWYWFudmZoaTlwc3phY1BIYmli?=
 =?utf-8?B?MnJuT2VqMk1wMjJkdDY0QTNIYlUyOUVqcHg4c2pIUDhKQnVGR1lRUUxyTzZk?=
 =?utf-8?B?dXB4Zmljc1M4S2lzbDl3MkFBYzZ0dzk4bXluNG9qMExkYWR4enpMREZCYTdk?=
 =?utf-8?B?RytxdDh0UWxCczYxU3VZVHV3RmM0RU03WHA4WFJxRzV2ODVGMjE2MWwxSXpU?=
 =?utf-8?B?MCtwNVZaSzBSTnlyZ2I2MVFFNzJhOHpBZnBoT0U0Si9rZWtxOFp1UGh5ekdZ?=
 =?utf-8?B?c0RjUDlwWHBZT0JSTkxUcHV5RE43WDdNRU5hL2FiMjBlUW8zamNOZnRSME02?=
 =?utf-8?B?bFFtVDVBTm5lVi9FdFVscmFyd3NIU2xoanZybXVXQVp4SDJHcVExSldOTVoy?=
 =?utf-8?B?QVlnZlFBZFEvaUN3NkFtNHFpc3VvQ2xObjZLNmxxb2E0UmxjQ0dacERoZmU5?=
 =?utf-8?B?ZGJLSE5lNHoyTHBscElmREN6ZDZQdlgvaTczVWZKTGt2Y1Y5eEdCUG1LQnZS?=
 =?utf-8?B?NkIvTko3QXpZakNkV2N6YitRbGlZTnI3VXNuamw1eWx4NWtqWlVCNXVwcGd6?=
 =?utf-8?B?UkYzSlZxdjZGbGNSeHdSZDEzeThEcmJUMkg1SmNzR2F6VlJRVEhZb3ZrUUpW?=
 =?utf-8?B?SmZPMlk0cjB6ZFhqTjdvSkIzWDJUNXRabjQwTG5hTlg1TUVidFlxQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cc59410b-0249-445c-9608-08df3a90685a
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 16:26:41.1085
 (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: b3lXmFkhkM+rBuJfjA3+e3BkELQkq1oGgO4bueGg421PVMrYBwOkZBbx/xUwY1zM52ii/3qEpee0IfNA22KLCEyC9MdattHncEvFh0HIX/g=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB989099
X-purgate-ID: tlsNG-bad1c0/1793809604-3BED6034-E0065595/10/78276251493
X-purgate-type: spam
X-purgate-size: 1302

On 04/11/2026 2:51 pm, Jan Beulich wrote:
> On 04.11.2026 14:51, Andrew Cooper wrote:
>> The function is misnamed; it really is looking for a GNU Build ID note, not a
>> Xen note as the name suggests.
>>
>> It also has an awkward API to use.  For a GNU Build ID, the content is always
>> at +16 from the start, so really doesn't need to be returned by pointer, nor
>> is it necessary be doing additional checks on the returned pointers being
>> valid.
>>
>> Switching to is_gnu_build_id() allows xen_build_init() to be simplified,
>> returning after the first successful find rather than passing an rc down the
>> function to skip later checks.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks (subject to the API needing to change in patch 1)

>
>> The 16 probably ought to be a define somewhere, but I see no obvious
>> candidates in the ELF spec.
> That's for NT_GNU_HDR_SIZE in patch 1? Why should the ELF spec care about
> GNU notes?

Oops.   I wrote that note when I was still using raw +/- 16's, and
forgot to remove it when I introduced NT_GNU_HDR_SIZE.

I meant elf.h, but decided to just reuse the NT_ prefix because
everything appears to be ad-hoc.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:31:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:31:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472211.1680173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdtW-0006gw-AK; Wed, 04 Nov 2026 16:31:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472211.1680173; Wed, 04 Nov 2026 16:31:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOdtW-0006gp-7b; Wed, 04 Nov 2026 16:31:26 +0000
Received: by outflank-mailman (input) for mailman id 1472211;
 Wed, 04 Nov 2026 16:31:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOdtU-0006gj-Ir
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:31:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOdtT-00F0EG-Vm
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:31:24 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5dd3-2eae-0a2a0a5409dd-0a2a4501c530-34
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:31:23 +0100
Received: from [40.93.194.7]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb5dda-5984-0a2a45010019-285dc20747ce-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:31:23 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DM6PR03MB4940.namprd03.prod.outlook.com (2603:10b6:5:1e3::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Wed, 4 Nov
 2026 16:31:19 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 16:31:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=Od/wcol4xdMNlGGqc/Zl3IFUYKv9tZYNY0QFCc5vi1gxn+9uI+3Qp3z1ufot3hHki2ToDUH57h+qStgWfX2Bvfxah+0b14uxgLqTOSBR52UspLFkFLMK1Rzs3EC8/ufR2LTJP8hTAopKUrdSt8oxScDvJKQEXHF+kzETTsmWKiLJ6T4BAvTsORxlN54Rlg08ra8QMnXmky18MfkX364cOmBcxvE6Xl3CJNeklbvwn6JzHtWhjt7njtcNeT/2R+AwJjVHSbmgNMFmPsJ8oID5tppQMxA+Wi4k+RleX/xjhDO8qPLogRwomK+wvfFXMY1WSChEBgw08YXjI2QWt9HxUg==
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=zH0AnDnT78PdGq6FySrWUDxu0XRcC48TxmYqlUNdiQA=;
 b=wYTqx/6SIJdGJYCN4wcMyBfxtLSfQooLbibNe4E8QZKCJ7BsI3zFVef4RoqGkG/ccw4MY9hhEW9nnnxy5vK1M+2NENXBWbp79o5ZvCMkyrNlxx6accwviHELImQwTetk5KtyxdIQBLk3WV7gJGiVLobk3r1mOJqwvz0ACntxyA/9uFj1drUqfKSrPg2NIouneye5hHNns/AZTb5k7pAIUpoUpCvnN8tcmejLbPLXwFYNqxL1/SIDoFfKBKZXUCa4enf1ArOVjp+Jh0DZuWtnt76dPyixtgY87hd/JpVNvXjmz6NH2DBobQgVR0BYDnxYX111/CXlcCF74FR3v0OUqQ==
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=zH0AnDnT78PdGq6FySrWUDxu0XRcC48TxmYqlUNdiQA=;
 b=mI14yNMDvPPuktzpv2G1jR5SF00R1QyWycLR9nkF7/bqaTqubP0WT+F/U/GSgvkPahHtshmmulk3f/rNDj1rfCr9UJJ90EHcfy9+BB2IUW5RmSiBpkIVTgN1BX/MBETWR0wttFxII7iV1komT2kufvMT+/V3xZv0/ovtr5dFyz0=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <67b28949-be62-416e-be27-5f1b81bea8c0@citrix.com>
Date: Wed, 4 Nov 2026 16:31:16 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86/svm: Adjust vNMI handling to update the cleanbit
To: Jan Beulich <jbeulich@suse.com>
References: <20261102134621.1693316-1-andrew.cooper3@citrix.com>
 <6648b7f8-bbb5-4231-9c30-ed7843a5d59a@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <6648b7f8-bbb5-4231-9c30-ed7843a5d59a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P265CA0055.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2af::11) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|DM6PR03MB4940:EE_
X-MS-Office365-Filtering-Correlation-Id: 15c1a8c1-73fa-4533-ed6d-08df3a910e3f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|10067099003|18002099003|22082099003|4143699003|56012099006|11063799006|5023799004|261022075727099003|261102123227099003|261026121527099003|261021121427099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	5gzXlrsi11scQHgma/h7UrwGmoioAuNpGTJTL412zi4IIbxhxJsb31RFczxIjbC8Ne2dd459mI7b6VqLYUoBVE1e47SUBHg+5BReqFC9EO8hyZaSNbHy87qcH79eljkLoMxrXXxJiR8/ykFcXMylndAEJ8N+e7YCbEZ4quCKNJyiRxEWeU4vxKWnEdzDDyPkWooEKJ1wsfkL5N9DwKJEybFJwW7oOrfaQCOLf8dYHOf7JZ9SYltcllMAzF5SRlSSVkbzd003IQP2QchhkL1OL5/a1p2qecAhjrVLO6IstTujm6cdG3mCZzZ1XGYu6e8B/QCW0WSDZz5ClFGPZL7qJP+kSZNC7G/QCG5CxoSgBwWneVncM/pAx5BJERNj41VLkLTjSI6DZbXqKEBx/anLbl024UsuDP39KHCxrpGYIOdX0mrF4uxe5ltpNk3TQJR9cIoTyt1SsgOEPFfcOSljbOzBvjEaRJBO7OzuQRrGxm8y/PNO98wIMuePVBIIN21/q69BK7LV02QowbrPRUPAckCj8Q/cko7PbRXJKoGrMEZRmSfEfo2lyABbB3yC/C+rj9Sjy1z2V2EtMfRvFvmM8wYbnk14DDgZNkThWtmYsPF8Of9GSbcl06BB+8t0K56i4Hqk57BoFkJRt3gYvv8GAewuirPKGZtmjWTjcuZa0AM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(10067099003)(18002099003)(22082099003)(4143699003)(56012099006)(11063799006)(5023799004)(261022075727099003)(261102123227099003)(261026121527099003)(261021121427099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VnJDa0VsNUo2ZWVhK0xSekRsODlkNDhDV1VJaTlvb0Z1bEpibHZ6TGo2a0h3?=
 =?utf-8?B?TkM4TWVuTjFzNElIM3pPOU80QVBoOSt5cWlsaHh0eCt0SjJzUERzczF1UXBZ?=
 =?utf-8?B?MVJIN1kxUVFoWExRODVRVGlDRkpFMkV1VGNsdkg0aTZaWGN2STZ5eXdnU0pa?=
 =?utf-8?B?eFNrVENzcmdMai96eERGdVMzQ1lIc0xIZzlKTVhadGcxN3N5T05RLzhBNjRP?=
 =?utf-8?B?TmpMKzk3Q0RweTB1QjJGUXAxeG85MFc4eGRXWURHeVRBR2l2M0JidXV3UURX?=
 =?utf-8?B?OXMrVVY4d2Y4aTg5TklsU1NRbzM3SFBjUmNwaGxwcWt0TlhDUG5sRWNUanc5?=
 =?utf-8?B?RU5vaHNyVlNkZUVYT2xaYmNGTXI4dVNWY0pDYnJnRThaU3lKRW5uZitjQTVK?=
 =?utf-8?B?ZVR1SkdmRm85aGk0bHA0cHJYem5yVVdaZkgyU2sxSDNtTVA1R3VjaWx6Z0Fx?=
 =?utf-8?B?OC9CcUlteS9mQ0N4TTVKNkhBSlFJK1piUFo4dE9iS28rdXY3SUYzRzZZRWdl?=
 =?utf-8?B?K2ZRNXZsVldtblRHZlNwNWRlY0s3eDdvZzQyRzAwM1k2VVdxUTkyZ3pLazU4?=
 =?utf-8?B?Q0V6RDYxSkEwN2FrT01jWFN3QUxqcy9DNEpkalZUS2FWdDVKcktuSCtvb0t5?=
 =?utf-8?B?K2pBenFxZndsMDVSaDJEVWhUWnBjTWRpbXdPUWpwSmxBQmFJd2xieXFlZnQ3?=
 =?utf-8?B?RnU3bk9kOU5oczNMRmxHOXFoZG5ObWc3aDV1V1BGSDdwemNGTUx5VERPejVa?=
 =?utf-8?B?V2VZcnpyWUx3K0JnKytYMCtRcGVJNTBVQzF1ZExZMUY1Qk9sQytTRGwvWWVE?=
 =?utf-8?B?Vy9mbHdjSE5PVTRkbkx4R09qaDJlaWdqQUc0SkwzKzRJNzFmekc4dEtNZ2Nx?=
 =?utf-8?B?QkI4SW8yU2Q5a2xiVm1hbmIyUlQ0WVVrU3oxUkpJZXlDMGNyZHB5MFFpRXBk?=
 =?utf-8?B?Z292Vmx0TGM2N2lOUmpEc2ord01UR0pKREdiaFRvWlVnQTIwY3hrRTcxVWZn?=
 =?utf-8?B?WmxVVC9TWmRGcTF0d044dCtPT2tlblhRL3UyUjNnNHRHdkNZNzFKN01pTFdE?=
 =?utf-8?B?RWxnd2Z6NU5KR3FhV0Q3bFg2T0ZzV1ExcmxveThEeVFoVVVIZ3dzUGhUT1Zy?=
 =?utf-8?B?a0tETkk5QjFPak8xQXVjM25DdFh1ZXh3TGZPbmxXRjg0UFpVSEZ0b3d4dkI4?=
 =?utf-8?B?bm5aVkpzK1V0L0hxbkN0UFdEamxtYVllNktNcXJmUGxKenp0d0F3R0IvNDM5?=
 =?utf-8?B?dllFN3drMk5uaGYxNWVsRGYzRkFyM2ZNSDJjZDMxM0ltWmFkTk56QlNQdE1M?=
 =?utf-8?B?UVduaXFmR29tdExybFdKVjhnV2t1cVQrSGYwQU11N0JFdFY1eGNDS0Rma0dX?=
 =?utf-8?B?SmJqbllycHNjQjJQZ29vdHBCS2dzeW4zV1VHMGtBWDRsQ1BJNlNoSmZHdGRw?=
 =?utf-8?B?L01pU0hJZml2L2hUd1JlUnF6Nmhqb1QwbTNXaWxOaFpmVmFlTkc4WENwSHlR?=
 =?utf-8?B?eFlRVXdrRVVPT1Aybnc1bXJxRHYraVU2TGNyczZwZm4zMWYxTlBvMnVYTVpB?=
 =?utf-8?B?ejlyUFF3b09SOXhLZ2E4VE0wSHVJaU9rNlJDVXNWMHRvV3hiZzI3dDRjSFpT?=
 =?utf-8?B?UlJ3ZW1rc1pldUVQamw1VDdocjhKdWwxY3gxT1VhVk4zeXBjazFucFQxRFB3?=
 =?utf-8?B?RWF6d3pmMkY3NVp5UVdJcWlGbUhHQlBiUXlNNnQyc0VZWlhQTENGNUtJbEZm?=
 =?utf-8?B?Y05yU1BuRDZXVTJVNHVpR0lIbFl6bHgwR28yNTVvNlpRaHhJNFhMZGxVUG1R?=
 =?utf-8?B?MW11RU4rY2pRTlZTMHFUbERPL3BHZGM3MnkzOXZjT0pnWk85N2pBdDJHQkdw?=
 =?utf-8?B?UDZReU54cS9EZHk5czNVMUcrRTFjbm1ySiswRWM2Y3pkOVh0Qm00ejBlZ2VT?=
 =?utf-8?B?aVNHTWR2ZkVPRUdDK1pPSUx3K2U3M1kzenFVRlJ1bzVMblc4TElSczNsZ2Rs?=
 =?utf-8?B?OXFvc2ZYVDk4dmpyQUZvUnNzYmxMWDllVUZTVjg0MzRtQnZVV2traFk0aXh0?=
 =?utf-8?B?Z3Jtdk42VE5UVFFhMStCZXNCVVk2SDRFOFllTGRjOFNXTTc3M1I0Mmk2K1Fx?=
 =?utf-8?B?d2ZaeTFkNWhObFFtZWd6VlQ5Rkp6QVpXTDlsSUZoMXczMXk0RHpZSGJaSkNK?=
 =?utf-8?B?aDR5azNjVTVuQTlKaVpoTGRRZHNHSHVXeFZaSjB3ZUg2TExKRzdZdDU5UWk0?=
 =?utf-8?B?TkZCSERjK0ZFQWVrOG1SeG1BcTI1eCt6YS9aNFpQQnpFayt2em5jaG56Y2Js?=
 =?utf-8?B?T1IvdllPOFVCOWo5dXpjdnpyQ0tKZVVtUmhuN2xPeTU1QUloUitxZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 15c1a8c1-73fa-4533-ed6d-08df3a910e3f
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 16:31:19.5236
 (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: TrXGozmsMut1dkr0MNGeBBPtHQONQHEazWnyabSS30QGwMdEg6Q16n35+uV13Z7sLJ5q6MSHQtHvKXNiUW8cMhbCcvPbj0IfjD+bHgkCWvg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4940
X-purgate-ID: tlsNG-d62444/1793809883-C495A757-4EF2FE9C/10/78276251493
X-purgate-type: spam
X-purgate-size: 1079

On 02/11/2026 1:51 pm, Jan Beulich wrote:
> On 02.11.2026 14:46, Andrew Cooper wrote:
>> Despite prior information to the contrary, APM Vol2 revision 3.46 October 2026
>> has been adjusted to state that the vNMI fields in vINTR are covered by the
>> TPR cleanbit.
>>
>> Adjust svm_inject_nmi() and svm_set_interrupt_shadow() to use vmcb_set_vintr()
>> rather than writing into the VMCB directly.
>>
>> In svm_inject_nmi(), fix an inefficiency from the introduction of vNMI.  Move
>> the reading of vmcb_get_general1_intercepts() to the point at which it is
>> used; tt does not need reading on the case that vNMIs are enabled.
> Nit: s/tt/it/ ?

Fixed.

>> Fixes: 86a203ab8d38 ("x86/svm: Support vNMI on capable hardware")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Assuming the first sentence of the description kind of implies trust into this
> being the final word on the matter:

It is formally written statement on the matter, where previously there
was none.

> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:38:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:38:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472227.1680187 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe0S-0007bt-1O; Wed, 04 Nov 2026 16:38:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472227.1680187; Wed, 04 Nov 2026 16:38:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe0R-0007bm-U5; Wed, 04 Nov 2026 16:38:35 +0000
Received: by outflank-mailman (input) for mailman id 1472227;
 Wed, 04 Nov 2026 16:38:35 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOe0Q-0007bc-N6
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:38:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOe0P-000x1H-VJ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:38:33 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb5f81-bab6-0a2a0a5309dd-0a2a450c951c-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:38:33 +0100
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb5f89-f479-0a2a450c0019-d155dd34d917-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:38:33 +0100
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-490a0e72588so333723f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:38:33 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed0844e2sm3739894f8f.28.2026.11.04.08.38.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 08:38:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793810313; x=1794415113; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=7oPzuPFyKO/r7exvkxR3tK22R6tRkddL2ZLbRLJk17g=;
        b=tav7Op5a2+BlpMmOzyRXblOVwi6/m5dZnj5Wb+yK7a7SCOO7BFLBWdoobZ8l6SrLFK
         dZskwvApAH5wImF6+GAvjes2AhgBDdAg/i5WC8tH2HK7mKDdkMAakSe2Tef/JUAUkOmQ
         xx1l5NeOCtNClroqsW5+ICqbikljA89h425KnG2s7zuZLB2xv4ZGQyr/rFaGNAN74sMN
         8Rr7YWekVmBNnvqO1KajC1QeeuLyqcIUVeB80YYrYUBoHN9Eml3CuxBayCJyzw584uMu
         u4il6sue+fhF//FKemuZK0vY8QqbMHPnez15ES4o5JFCxzKRsJTTGTXotISKWeubwwCd
         NT7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793810313; x=1794415113;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=7oPzuPFyKO/r7exvkxR3tK22R6tRkddL2ZLbRLJk17g=;
        b=v3A6++Q61+DDgq4TtxsvnbOaLUNE8KvQIWpUoDmXXnVNhMyC8aRybY+Yq44r6kqydy
         /yGSVlZbdQ0ngPSI57SvdmHW55U7vDHO5DwG44Qqolg3EtZ17rrJFeBCUGECX5As20wH
         HjOIED1ZC530LbAk1B0VfaV0ZfoCHmynAaNpGAjelx4II67JH2pdR1HEh8BEZcCXavxi
         lTvM1WQCVqZH3RDQwlZXY9yg1/e3arHY4kNUu4TY+lzG0chwtR8NBDETOOZFG68fqdjq
         lfq40CXDu4RjVDaQxzEYJ+5aUVW9z+LX1Gk/AIXaX0Kb0h2BFyR/QCFCX9NBrK7nyu/U
         hgLg==
X-Gm-Message-State: APuU4Z+UswB6dyc+KboKlffZNfGwvyR0CnWp1C5hVqXkPUCvoXUuh7FO
	+cyaCxruZutpubiaUdNamQjFx8FvrQ1Z3QPi83+iytj9fLOse9c03ZeG
X-Gm-Gg: AYBFou0JBN3WX6lvOvLdCq6xW1JqmRODf4W6tSNt8DsfkqXkxHhSRq01KslGL4pNoQD
	b5bGH7JibGfyZjIADEtlu29zUh3ptzQ4qlp9s9HgE1HcB1WShkTivKfDZ59B/DVga6N36RKaBgC
	/A4oa4cQcPWhO3UAXD+jhTP2tV1wiZUX1C10A+ZyU9DNkJfhtr8LNtxVhTBEkQi5P5SpLAf9j63
	O5rWIoqHWd+2tVGd4OlMIhcFNpU3w1WDJRzi8wjpYVGNgqaolsjBW4pwXXbbhNIlEEPGq+nK0XF
	sFV4xN7UJZukyPXiPkmti+4s6Fjsr50LQTCrQkzCuDpBqOIHmNwoK/euDsN56+osaaGXCLORJDL
	PTZTxOTXmdsYK6YpS2eY79k0d84yBoezImbDKPHZ2zxbegxKVSvQf+WtW388k4uRJ9ZaivHzZ+U
	YraCax1tmR8uO8a5TwGHkHP8GX8ysVI3kKsieGxcaAYCne8wD8PzF8GMmFIGK5aAlqGX8vW+d4V
	HG+uo5W3VUkskdFtmi5TTW+b+fhGA6KAFE1Fs5TUT0fyXn3ZpnH69sD9qtBSwcl59RXxc0n8Z6Y
	JIWaBMzG5UsBKzzJz7FB89VHZXfZEj7ZeT1RVVSmX88OZ3kEc1A9SLwLwFw0QkKKvCvsRwZYail
	tVDU=
X-Received: by 2002:a05:6000:2a03:b0:48a:fba3:d5b1 with SMTP id ffacd0b85a97d-48e6e50b502mr25808328f8f.55.1793810312999;
        Wed, 04 Nov 2026 08:38:32 -0800 (PST)
Message-ID: <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
Date: Wed, 4 Nov 2026 17:38:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 23/39] xen/riscv: add helpers for decoding a trapped
 load or store
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <bac190288e65f82ef51d85e32c939558c21776d0.1790779209.git.oleksii.kurochko@gmail.com>
 <1792663384.8631fc262581453bbf619ec5b2062170.1a1631070d2000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792663384.8631fc262581453bbf619ec5b2062170.1a1631070d2000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1793810313-002F0A5B-C0CE863C/10/73395122804
X-purgate-type: spam
X-purgate-size: 14273



On 10/22/26 12:02 PM, Baptiste Le Duc wrote:
>> emulate_load() and emulate_store() will both need to obtain the
>> instruction which caused a guest MMIO trap, decode it, and locate the
>> register operand it names. Add what the two share, ahead of either of
>> them being implemented: struct decoded_insn, insn_fetch_faulted(),
>> decode_ldst_insn(), guest_xlen(), guest_gpr() and advance_pc(), together
>> with the XLEN_FIELD_*, INSN_OPCODE_* and RV_RD()/RV_RS2() definitions
>> they need.
>>
>> Nothing calls any of this yet, so reference the functions from the
>> emulate_load() stub to keep the build going; the references go away once
>> emulate_load() gains its body later.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>> How these helpers are used can be seen in the patches adding emulate_load()
>> and emulate_store().
> Appreciate this precision, thanks!

Welcome!

>> [ ... 116 lines skipped ... ]
>> +/*
>> + * The effective XLEN of the guest at the point of the trap: hstatus.VSXL for a
>> + * trap taken from VS-mode, vsstatus.UXL for one taken from VU-mode.
>> + *
>> + * VSXL is consulted whichever mode the trap came from, as it also gives the
>> + * width of vsstatus itself: where VSXL says 32, that register has no UXL field
>> + * to consult and VU-mode is 32-bit as well, there being nothing to configure.
> Reading "it also gives the width of vsstatus itself", one might
> understand that VSXL equals UXL in all cases, while, as you mentioned,
> this only holds when VSXL says 32. I would slightly reword it, e.g.:
> ```
>      VSXL is consulted whichever mode the trap came from: if VSXL says
>      32, vsstatus has no UXL field, so VU-mode is 32-bit as well and
>      there is nothing to configure.
> ```

Agreed. I'll use your suggested wording.

>>
>> + *
>> + * It is needed to decode a trapped instruction: the encodings which exist only
>> + * for XLEN=64 must not be recognized for a 32-bit guest. Besides those simply
>> + * being reserved there, the compressed ones are ambiguous: C.LD and C.FLW
>> + * share the encoding 0x6000 (mask 0xe003), and likewise C.SD/C.FSW,
>> + * C.LDSP/C.FLWSP and C.SDSP/C.FSWSP.
>> + *
>> + * IS_ENABLED() can't be used here as HSTATUS_VSXL is defined for
>> + * __riscv_xlen == 64 only, the field not existing on RV32 in the first place.
>> + */
>> +static unsigned int guest_xlen(const struct cpu_user_regs *regs)
>> +{
>> +#ifdef CONFIG_RISCV_32
>> +    return 32;
>> +#else
>> +    unsigned long xl = MASK_EXTR(regs->hstatus, HSTATUS_VSXL);
> xl only ever holds a 2-bit field, so unsigned int would be better here.

MASK_EXTR() yields the type of its operands, unsigned long here (and 
unsigned long long for the UXL extraction), as do the XLEN_FIELD_* 
constants xl is compared against. Making xl unsigned int would add an 
implicit narrowing conversion: harmless value-wise but I think it will 
violate one of MISRA rules at least if build everything with 
-Wconversion then it will tell: conversion from 'long unsigned int' to 
'unsigned int' may change value.

>> [ ... 49 lines skipped ... ]
>> +static unsigned long *guest_gpr(struct cpu_user_regs *regs,
>> +                                const struct decoded_insn *di)
>> +{
>> +    /*
>> +     * decode_ldst_insn() is what fills @di in, and it rejects an access
>> +     * wider than a guest register.
>> +     */
>> +    ASSERT(di->len <= (guest_xlen(regs) / BITS_PER_BYTE));
> Nit: the parentheses around the division aren't needed.

I can drop them but I think it improves readability here a little bit.

>> [ ... 14 lines skipped ... ]
>> +static bool insn_fetch_faulted(const struct guest_fault *gf,
>> +                               struct decoded_insn *di)
>> +{
>> +    unsigned long htinst = gf->htinst;
>> +
>> +    /*
>> +     * A pseudoinstruction says nothing about the instruction the guest was
>> +     * executing, and comes with a guest physical address which isn't the one
>> +     * that instruction accessed. handle_guest_page_fault() deals with such a
>> +     * fault on its own, so no emulation can ever start for one.
>> +     */
>> +    ASSERT(!htinst_is_pseudo(htinst));
>> +
>> +    /*
>> +     * Bit[0] == 1 implies trapped instruction value is transformed instruction
>> +     * or custom value. A transformed instruction is a 32-bit encoding, so a
>> +     * value with any bit above bit[31] set is a custom one, which is of no use
>> +     * for decoding: fetch the instruction from guest memory then, as for zero.
>> +     */
>> +    if ( (htinst & BIT(0, UL)) && (htinst == (uint32_t)htinst) )
>> +    {
>> +        /*
>> +         * The transformation always yields the 32-bit format, with bits[1:0]
>> +         * holding a marker instead of the original opcode bits: bit[0] set to
>> +         * flag the transformation, bit[1] clear if the trapped instruction
>> +         * was a compressed one. Restoring the opcode bits makes the value the
>> +         * valid 32-bit encoding decode_ldst_insn() decodes. Its handling of
>> +         * compressed encodings exists for the branch below, where a
>> +         * compressed instruction is read from guest memory as is: a trapped
>> +         * one arrives here already expanded to its 32-bit equivalent, and the
>> +         * opcode bits just restored have it decoded as such.
> Reading this, I first understood that something had to be done to recover
> the original compressed opcode. "Restoring the opcode bits" suggests going
> back to the trapped encoding, while it is only setting bits[1:0] to 0b11 of
> an already expanded instruction. Maybe say that first, e.g.:
> 
> ```
>      /*
>       * A compressed instruction is reported already expanded to its
>       * 32-bit equivalent by the hardware, so htinst always holds a
>       * 32-bit encoding, apart from bits[1:0] which is holding a marker:
>       * bit[0] is set to flag the transformation and bit[1] is clear if
>       * the trapped instruction was compressed. Setting both bits gives
>       * the original 32-bit encoding for decode_ldst_insn().
>       */
> ```

Agree, it will be better.

>> +         *
>> +         * The length then cannot come from the value anymore, only from
>> +         * bit[1]. And only a 16- or a 32-bit instruction is ever reported
>> +         * this way: the standard load and store instructions the hardware
>> +         * transforms are all of one of these two lengths, anything else comes
>> +         * as the zero special value handled below.
>> +         */
>> +        di->insn = htinst | 3;
>> +        di->insn_len = (htinst & BIT(1, UL)) ? 4 : 2;
>> +    }
>> +    else
>> +    {
>> +        const struct cpu_user_regs *regs = gf->regs;
>> +        struct trap_info utrap = {};
>> +
>> +        /*
>> +         * Bit[0] == 0 implies trapped instruction value is zero or special
>> +         * value. With the pseudoinstructions ruled out above, only zero (or a
>> +         * custom value, see above) is left: the instruction has to be read from
>> +         * guest memory.
> Nit: as the assert would disappears in release build, this comment is
> partially true. I would suggest something like:
> ```
>           * Bit[0] == 0 implies trapped instruction value is zero or
>           * special value. With the pseudoinstructions ruled out (see
>           * comment above) only zero (or a custom value, see above) is
>           * left: the instruction has to be read from guest memory.
> ```
> 

Agree "ruled out" could be read incorrectly. I think it will be better then:

          /*
           * Bit[0] == 0 implies trapped instruction value is zero or 
special
-         * value. With the pseudoinstructions ruled out above, only 
zero (or a
-         * custom value, see above) is left: the instruction has to be 
read from
-         * guest memory.
+         * value. Pseudoinstructions never get here (see the comment 
ahead of
+         * the ASSERT() above), so only zero (or a custom value, see 
above) is
+         * left: the instruction has to be read from guest memory.
           */

>> +         */
>> +
>> +        di->insn = read_guest(regs->sepc, true, &utrap);
>> +        if ( utrap.scause )
>> +        {
>> +            /*
>> +             * If during getting of trapped instruction a fault happen in
>> +             * G-stage translation then CAUSE_LOAD_GUEST_PAGE_FAULT is
>> +             * generated. Such faults during this operation is considered as
>> +             * bus error.
> Typo: "Such faults ... are considered" (plural subject). Also "a fault
> happen" above should be "a fault happens", and "as bus error" -> "a
> bus error". Maybe:
> 
>      /*
>      * If a G-stage translation fault happens while fetching the
>      * trapped instruction, CAUSE_LOAD_GUEST_PAGE_FAULT is generated.
>      * Such faults are treated as an access fault.
>      */
> I used access fault instead of bus error because the code below sets
> CAUSE_FETCH_ACCESS which is more like an access fault.
> 

Suggestion LGTM with one nit that "... instruction acccess fault" + 
mentioned of that it is because of hlvx instruction so:

              /*
-             * If during getting of trapped instruction a fault happen in
-             * G-stage translation then CAUSE_LOAD_GUEST_PAGE_FAULT is
-             * generated. Such faults during this operation is 
considered as
-             * bus error.
+             * If a G-stage translation fault happens while fetching the
+             * trapped instruction, CAUSE_LOAD_GUEST_PAGE_FAULT is 
generated,
+             * hlvx being a load. Such a fault is reported to the guest 
as an
+             * instruction access fault.
               */
              if ( utrap.scause == CAUSE_LOAD_GUEST_PAGE_FAULT )
                  utrap.scause = CAUSE_FETCH_ACCESS;



>> [ ... 54 lines skipped ... ]
>> +/*
>> + * Decode the load or store instruction fetched into @di, filling in the
>> + * remaining fields of it (@di->insn and @di->insn_len are filled by
>> + * insn_fetch_faulted()). Fields which don't apply to the instruction are left
>> + * alone, so @di is expected to start out zeroed.
>> + *
>> + * @xlen is the effective XLEN of the guest, needed as
>> + * the encodings which exist for XLEN=64 only must not be recognized for a
>> + * 32-bit guest.
> Nit: odd wrapping, "the encodings" fits on the line above.
> 

Missed that, it could be really on the prev line.

>> + *
>> + * Returns false if the instruction is not a load or store which can be
>> + * emulated here.
>>
> Nit: maybe reword for clarity:
> 
>   * Returns false if the instruction is not a load or store, or cannot be
>   * emulated here.
> 

Agree, your option is better

>> + */
>> +static bool decode_ldst_insn(struct decoded_insn *di, unsigned int xlen)
>> +{
>> +    uint32_t insn = di->insn;
>> +    unsigned int funct3, width_log2;
>> +
>> +    if ( INSN_IS_16BIT(insn) )
>> +    {
>> +        /*
>> +         * C.LW, C.LD, C.SW and C.SD (bits[1:0] == 00), and their sp-relative
>> +         * C.*SP forms (bits[1:0] == 10), have bits[15:13] of the form x1y:
>> +         * x is set for a store, and y selects a width of 4 or 8 bytes.
>> +         */
>> +        funct3 = RV_X(insn, 13, 3);
>> +
>> +        if ( (insn & 1) || !(funct3 & 2) )
>> +            return false;
>> +
>> +        di->is_write = funct3 & 4;
>> +        width_log2 = 2 + (funct3 & 1);
>> +
>> +        if ( !(insn & 2) )
>> +            /* Quadrant 0: bits[4:2] encode rd' (load) or rs2' (store) */
>> +            di->reg = RVC_RS2S(insn);
>> +        else if ( di->is_write )
>> +            /* Quadrant 2 (CSS): bits[6:2] encode rs2 for C.SWSP / C.SDSP */
>> +            di->reg = RVC_RS2(insn);
>> +        else
>> +        {
>> +            /* Quadrant 2 (CI): bits[11:7] encode rd for C.LWSP / C.LDSP */
>> +            di->reg = RV_RD(insn);
>> +
>> +            /* C.LWSP and C.LDSP are reserved with rd being x0. */
>> +            if ( !di->reg )
>> +                return false;
>> +        }
>> +    }
>> +    else
>> +    {
>> +        /*
>> +         * funct3[1:0] is log2 of the width in bytes, and funct3[2] selects
>> +         * zero-extension for a load, while being reserved for a store.
>> +         */
>> +        funct3 = RV_X(insn, 12, 3);
> 
> Nit: the RVC branch above says where funct3 lives (bits[15:13]), this one
> doesn't. Maybe mention bits[14:12] as well, so the reader doesn't wonder why
> 12 here vs 13 above:
> 
> ```
>          /*
>           * LOAD and STORE (I/S-type) have funct3 in bits[14:12]: funct3[1:0]
>           * is log2 of the width in bytes, and funct3[2] selects zero-extension
>           * for a load, while being reserved for a store.
>           */
> ```

Agreed. Will apply your comment.

> 
>> [ ... 51 lines skipped ... ]
>> diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
>> index b01da95f7e..1af309aa4a 100644
>> --- a/xen/arch/riscv/include/asm/riscv_encoding.h
>> +++ b/xen/arch/riscv/include/asm/riscv_encoding.h
>> @@ -65,6 +65,14 @@
>>   #define SSTATUS64_UXL			MSTATUS_UXL
>>   #define SSTATUS64_SD			MSTATUS64_SD
>>   
>> +/*
>> + * Width encoded by the MXL, SXL, UXL and VSXL fields, all of which share one
>> + * encoding. 0 is reserved.
>> + */
>> +#define XLEN_FIELD_32			_UL(1)
>> +#define XLEN_FIELD_64			_UL(2)
>> +#define XLEN_FIELD_128			_UL(3)
> Do we really need long here? int wouldn't be enough?
> 

Good question.

These are values of fields living at bits 33:32 (VSXL, UXL, SXL), so a 
plain int would overflow if one were ever shifted into place. That isn't 
the case at the moment, but I think it's worth looking beyond the 
current uses: this header is included all over arch/riscv, and we can't 
know how these definitions will be used in the future. Using UL also 
keeps them in line with the other field values in this header, e.g. 
SATP_MODE_* and STVEC_MODE_*.

Thanks for review!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:45:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:45:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472241.1680194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe6d-0000lt-Oq; Wed, 04 Nov 2026 16:44:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472241.1680194; Wed, 04 Nov 2026 16:44:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe6d-0000lm-Lk; Wed, 04 Nov 2026 16:44:59 +0000
Received: by outflank-mailman (input) for mailman id 1472241;
 Wed, 04 Nov 2026 16:44:59 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOe6c-0000lg-Rl
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:44:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOe6c-00CwVg-8j
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:44:58 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb6103-8faa-0a2a0a5109dd-0a2a4505d6c6-12
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:44:58 +0100
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb610a-4cb1-0a2a45050019-d155802de1dd-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:44:58 +0100
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4afe2d546f9so11075945e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:44:58 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fecac1a1csm4770116f8f.12.2026.11.04.08.44.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 08:44:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793810698; x=1794415498; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=oFh9XNruOl1l6IBdaleaL/z/voJOsGRPAKXD7uXm8bU=;
        b=RevVNKjRhScs++UEVT8116hhT72pRYzUWfF1wz1UXf8YJpL69rnHvpSKFzFLKHxFCq
         Coeh2iMwnuwKQpEWgGgfmzvt3pyTR+nL6SErs+tj5s3zp488ZR4UpxMiIlgOyUTG4aGo
         L2Jdpsl3pKgLrBTxQ4eBsLL/5Pi+fxILYZHqmvrjkY7oOfJGgFH/cMvFpRnjuXWmSC/g
         8JcuQ/BCHhK9gW716sMgfOInNxhpGagn2vaI7i910KmKIu2qphPuOnqeO/KBrmH41//G
         1tscbw8N0GzVBCM7jMJuV3s2tfTc1+wa4WA97vedFARKTioCQUTYXx2tUQWnUsPIBL59
         Yvig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793810698; x=1794415498;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=oFh9XNruOl1l6IBdaleaL/z/voJOsGRPAKXD7uXm8bU=;
        b=gP++M3bG964nzkokx80ZA395d25kO7Xu1uBs7GSQr7v3otksjMLlT54hrnd1vyMx10
         DFyilTpJ0RiPoaJPq25xTWBu5/eAg+4IXXPkOQ6IgA0u4ZGSQQ3CKX4NcbgjHDFcOoDD
         vs7cnjx0fWWeoCt+PP1nioxki2TW/65nS8pioCXAAKlZwBQACOh0SNsECsd+B6YubqFl
         floozn8bWXJ9BWqSlGmbMzHe6c+rv8plOhI/dVUb6AvwQ9SQ1hS+E7m4teeyEg9KdrEE
         OReE3GzYnzyRI0RPT//x7bWue1Z0VV661XGjbHUVt8ER2gQWKIL7mxuYBu6smVQHtHsy
         vM6g==
X-Gm-Message-State: APuU4Z/YtCUFjpDyC1hQhNOE+OT3ngS9a2N9t5GhzHGDSBUszj26i0bh
	ET5c0R9C03FIePMMw2kASChNNjdr93NlOVqWnjti3u/8OkDgbnFJdQrP
X-Gm-Gg: AYBFou1+y63WB9PAccB4KfhKNbKG3fCJH9Wrsg2d3abt6w+NbNyW9/eT1d48kNIvPWT
	289flP/zexwSo8yXSl+d+jY4l5atm54Jndue+IpWYELXKHY8tGXBLdBPLSY2I8ypDO3aIDC2DH2
	fzp7PH3PvqchuulkUn+5bLGzYTYAPD5absjrjOlCpsd/lAjiG+h8yE1U1EyL67BidBC0FTJefZy
	GZm9W3pFQiBgGEd+QcJbB7G6maov1jXntjwXUGNM9S64kDkTziQmkqhzODdzGaCVmDQUNI6vjAw
	wlI3MGmMPDm4tjLdWrCrwkOhrXUSzhGPjv2mfJRo0dQmhgEAFlTq3r7QOGOaMPW3k37dW5nj1QD
	AIiekVymaOOGJcQnQyff+4HSX9c1drT3KXX1z4VsqSBn21kQTWrSC6JUYHAWexCY0JQdgrsZIta
	9nvkqyzsaA2ex8eDu9VHnb4umkQWS4F+ymcZ+HjZRqcKCWUiMMFo/pGHDvYYkrRk5Zx1URaD07j
	sifkuZnYSy4sex6TD1JpGPxGrSd42mRGBXf0IyO5iBKsu9LB1T5x3wqTptDANIyUQ99hXA2rTtM
	pXagotfvqN3ymlswaPFd2FW5qfi7dOlImDlwz/5jd4vnsRXm7XC1j7LdtFj3RJSuJ4D3Tgc+veo
	59Fm9Ul31SpIswhsFF3HBcTAi
X-Received: by 2002:a05:600c:198c:b0:4a2:5ca:767f with SMTP id 5b1f17b1804b1-4ac151a9a36mr384284625e9.4.1793810697523;
        Wed, 04 Nov 2026 08:44:57 -0800 (PST)
Message-ID: <23edf5df-0910-4239-82ab-a28549a7c240@gmail.com>
Date: Wed, 4 Nov 2026 17:44:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 24/39] xen/riscv: add guest load emulation for trapped
 MMIO accesses
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <d4304a157181d8a8432b8f65f92019e0ead3bec7.1790779209.git.oleksii.kurochko@gmail.com>
 <9943b1f4-1890-4917-ae39-bf9c70fc36c7@gmail.com>
 <1792671188.8631fc262581453bbf619ec5b2062170.1a1638784d8000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792671188.8631fc262581453bbf619ec5b2062170.1a1638784d8000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793810698-F7CB82A1-2720EB97/10/73395122804
X-purgate-type: spam
X-purgate-size: 3653



On 10/22/26 2:13 PM, Baptiste Le Duc wrote:
> On 2026-10-15 16:59:53+02:00, Oleksii Kurochko wrote:
>> On 9/30/26 6:23 PM, Oleksii Kurochko wrote:
>>
>>> Implement emulate_load() on top of the decoding interface introduced by
>>> the previous patch: fetch the trapped instruction, decode it, dispatch
>>> the access to a registered MMIO handler via do_mmio(), write the result
>>> back into the destination register and step over the instruction.
>>>
>>> Xen dispatches MMIO synchronously to an in-hypervisor handler, so unlike
>>> KVM RISC-V there is no userspace exit/return step and no equivalent of
>>> the kvm_io_bus_read() / KVM_EXIT_MMIO / kvm_riscv_vcpu_mmio_return()
>>> split; the result is consumed in place.
>>>
>>> Sign extension is done here rather than in the handlers: a signed load
>>> is normalized by a shift pair, so a handler need only report the value
>>> it read.
>>
>> This part of commit message should be updated. Suggestion look below...
>>
>>> At the moment vINTC is the only backend registered with the MMIO
>>> dispatch, so in practice this only covers vINTC traps. An access which
>>> no handler claims currently crashes the domain; injecting an access
>>> fault into the guest instead is left for later.
>>>
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>
>> [...]
> Sorry I don't understand, did you forget to put the suggestion?
> 

Sorry for confusion, I put it here to drop the code which isn't 
necessary for my suggestion. and my suggestion was just at the end of my 
original reply (I will just copy it here):

 >   static int emulate_load(const struct guest_fault *gf)
 >   {
 > -    /* Transient, until the helpers gain their users. */
 > -    (void)advance_pc;
 > -    (void)guest_xlen;
 > -    (void)guest_gpr;
 > -    (void)insn_fetch_faulted;
 > -    (void)decode_ldst_insn;
 > +    struct cpu_user_regs *regs = gf->regs;
 > +    mmio_info_t info = { .is_write = false };
 > +    struct decoded_insn di = {};
 > +    unsigned int shift = 0;
 > +    int rc;
 >   -    return -EOPNOTSUPP;
 > +    /* A fault taken re-reading the instruction is redirected to the 
guest. */
 > +    if ( insn_fetch_faulted(gf, &di) )
 > +        return 0;
 > +
 > +    if ( !decode_ldst_insn(&di, guest_xlen(regs)) || di.is_write )
 > +        return -EOPNOTSUPP;
 > +
 > +    if ( !di.is_unsigned )
 > +        shift = BITS_PER_BYTE * (sizeof(info.data) - di.len);
 > +
 > +#ifdef EMULATE_LOAD_DEBUG
 > +    gdprintk(XENLOG_DEBUG, "pc=%#lx, addr=%#"PRIpaddr", len=%u, 
shift=%u\n",
 > +             regs->sepc, gf->gpa, di.len, shift);
 > +#endif
 > +
 > +    rc = do_mmio(&info, gf->gpa, di.len);
 > +    if ( rc )
 > +        return rc;
 > +
 > +    /* A load into x0 discards its result. */
 > +    if ( di.reg )
 > +        *guest_gpr(regs, &di) = (long)(info.data << shift) >> shift;

It would be more correct to have here:

     shift = BITS_PER_BYTE * (sizeof(info.data) - di.len);
     ...
     if ( di.reg )
         *guest_gpr(regs, &di) = di.is_unsigned
                                 ? (info.data << shift) >> shift
                                 : (long)(info.data << shift) >> shift;

and update the commit message part "Sign extension is done here…" to:

Sign and zero extension are done here rather than in the handlers: a
shift pair drops whatever lies above the access width in the value read
and, for a signed load, sign-extends it, so a handler need only report
the value it read.

 > +
 > +    advance_pc(regs, di.insn_len);
 > +
 > +    return 0;
 >   }
 >

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:46:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:46:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472249.1680203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe8M-0001F7-3b; Wed, 04 Nov 2026 16:46:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472249.1680203; Wed, 04 Nov 2026 16:46:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOe8M-0001F0-0i; Wed, 04 Nov 2026 16:46:46 +0000
Received: by outflank-mailman (input) for mailman id 1472249;
 Wed, 04 Nov 2026 16:46:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOe8K-0001Er-MH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:46:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOe8K-007mur-3G
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:46:44 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb6166-bab6-0a2a0a5309dd-0a2a450a956c-18
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:46:44 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb6173-f2d2-0a2a450a0019-d1558030ed2b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:46:44 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a1b07c3c5fso8364365e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:46:44 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec9cd40csm4791391f8f.13.2026.11.04.08.46.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 08:46:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793810803; x=1794415603; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ilgnMHOX8V2Ck18VdxJ8LoPsXSjyvGiRkOyNPRe5n0s=;
        b=agHyRmflelse5XpVSqV9D6Ar6bNUX26BQK36jIlMoAz/M8NZ3lxL18uEcROtCUNQuL
         EtaBPVZ01GH9SVxeugU4iRHaQz4+gzYk9nJJyUa0sDxctmXAQM3kQCjzZjmBF8BwkmL7
         SCzZHeId99GMMw81vuCy9h4CvfZOOsDfyplAxwv28tepYRz0VlW54+HmtoqsZIx6IMI6
         P0WS3nMAipz+qJf+d1JpxRvuQQlP/BUdwvbRjFUQG2ZBRqowA8Zk/mCPEIAtVFEj5AGq
         694boTFmYogsnIzrlyg3OVTaXCYgsHo3QyjfbeaEmWKP4qR690tw//CoSmCQnOG3IMJy
         lZKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793810803; x=1794415603;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ilgnMHOX8V2Ck18VdxJ8LoPsXSjyvGiRkOyNPRe5n0s=;
        b=t6OlK6e5BHS91NlPHevCv0YHKy+MPMnpRmh67cB4UNBgHW8i628VzSFbPrvQK8TArV
         G26ue1aBLXDcw744bnzWLgMUMLcUj5LCWc6wYHuQhR1RdwVCYNaZgwusJw9Vk/81EoqV
         xzMnryhEPf1pkNXIsvoyhdG5ZM4U/zlFxQSx9DBejbjG15bukLikfgR4RNupDfvcL1QC
         GbotQc8G28zbsHashaCWvJgcxIUB6OB1M0DRWAovQXDmUbFUIlgZw/OR7Jd27Vxyq4IM
         nQqNZaJ402np6wMAm/CFX8uZYwoYTLNt9OZ8QDPfcSt7ZmOlOTEg+myrjY6lQnztIADe
         2YOg==
X-Gm-Message-State: APuU4Z/PX7ZEzm0PwlRixy5jy8y9WtpF2hhaG2wyLWBNS+DQvbpwcOZH
	Ks8FkUG5/Aur+2VJYy+C00iuz6vynh9VhO9uxe0hQaP3ETL7pYx+KrqB
X-Gm-Gg: AYBFou3wCVbHU0AD0RhQ9hL1VrLp3G6A+ukOWCT5LVV845xdQZ8NkfMMU6gyLxOcEH5
	DZKmKfjJB8UpXeuHU6bpMIEkj02szBlbwCBxtZDukE0CYTWK2zSu6dvB0xfPsPUYN6mbh59kIPU
	t4EIZ2/+I+/cemLv8Eo3jU4rrNJ8tGwpxa9omL877AZI4PXYdyACvmTmFlcnlu2NHJUHNL1qULc
	H4zNSzMrQHqqYI+VvBaSZaTuu3aAaiHFrULNsa+c3boW9QqBgNKDGvLEnn9Z3xFCGc7Xc8UpOFs
	v31wncnrJN+Rmw3ZfQ3pW3ISsNfdyy1J5PWpm4ti0YRhEw1LOHo/eFetxQX6DiK3+eAXRhohtpN
	kEzS09Hhj8lrIHb/lHVB8pJij8CauDXXiW5U2Wa/yX3NEu5GUW79RsLgLMObjOIuzXZcn1nVvPq
	gz/j+wuiW5Bf9gduukSbkGJhblrAXlyoxF74/srmu6JJWv2hTLeSw5/gQ8Fo/CLEVJDNIfjs3Q1
	CMnaJJ4iqUVh6ydxQl/A9FV+IkCF+AzR5BKGilaLfnNieN3qTsnyQvwMPSvmcewqD0rtTuFu1dF
	FgWkbafkRE915DDgxV5oNhFD1QqzAV1p4hyHyW2pCnsgl6NTe+nSd/9HbwKBBZWCIhSmq6KsuWL
	6LwY=
X-Received: by 2002:a05:600c:5397:b0:4a3:5991:719 with SMTP id 5b1f17b1804b1-4ac1899353bmr369165235e9.31.1793810803506;
        Wed, 04 Nov 2026 08:46:43 -0800 (PST)
Message-ID: <75a5e61a-f68c-46f2-82ba-fac1767b69d2@gmail.com>
Date: Wed, 4 Nov 2026 17:46:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 24/39] xen/riscv: add guest load emulation for trapped
 MMIO accesses
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <d4304a157181d8a8432b8f65f92019e0ead3bec7.1790779209.git.oleksii.kurochko@gmail.com>
 <9943b1f4-1890-4917-ae39-bf9c70fc36c7@gmail.com>
 <1792672239.8631fc262581453bbf619ec5b2062170.1a163979000000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792672239.8631fc262581453bbf619ec5b2062170.1a163979000000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793810804-52ADCCFC-689ABF2C/10/73395122804
X-purgate-type: spam
X-purgate-size: 3665



On 10/22/26 2:30 PM, Baptiste Le Duc wrote:
> On 2026-10-15 16:59:53+02:00, Oleksii Kurochko wrote:
>> On 9/30/26 6:23 PM, Oleksii Kurochko wrote:
>>
>>> Implement emulate_load() on top of the decoding interface introduced by
>>> the previous patch: fetch the trapped instruction, decode it, dispatch
>>> the access to a registered MMIO handler via do_mmio(), write the result
>>> back into the destination register and step over the instruction.
>>>
>>> Xen dispatches MMIO synchronously to an in-hypervisor handler, so unlike
>>> KVM RISC-V there is no userspace exit/return step and no equivalent of
>>> the kvm_io_bus_read() / KVM_EXIT_MMIO / kvm_riscv_vcpu_mmio_return()
>>> split; the result is consumed in place.
>>>
>>> Sign extension is done here rather than in the handlers: a signed load
>>> is normalized by a shift pair, so a handler need only report the value
>>> it read.
>>
>> This part of commit message should be updated. Suggestion look below...
>>
>>> At the moment vINTC is the only backend registered with the MMIO
>>> dispatch, so in practice this only covers vINTC traps. An access which
>>> no handler claims currently crashes the domain; injecting an access
>>> fault into the guest instead is left for later.
>>>
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>
>> [...]
>>
>>>    static int emulate_load(const struct guest_fault *gf)
>>>    {
>>> -    /* Transient, until the helpers gain their users. */
>>> -    (void)advance_pc;
>>> -    (void)guest_xlen;
>>> -    (void)guest_gpr;
>>> -    (void)insn_fetch_faulted;
>>> -    (void)decode_ldst_insn;
>>> +    struct cpu_user_regs *regs = gf->regs;
>>> +    mmio_info_t info = { .is_write = false };
>>> +    struct decoded_insn di = {};
>>> +    unsigned int shift = 0;
> As shift is always computed, I don't think it makes sense to init it.

Good point!
I think that originally I took that into account when tried to the 
suggestion but missed to sent here. I will double check!

>>> +    int rc;
>>>    
>>> -    return -EOPNOTSUPP;
>>> +    /* A fault taken re-reading the instruction is redirected to the guest. */
>>> +    if ( insn_fetch_faulted(gf, &di) )
>>> +        return 0;
>>> +
>>> +    if ( !decode_ldst_insn(&di, guest_xlen(regs)) || di.is_write )
>>> +        return -EOPNOTSUPP;
>>> +
>>> +    if ( !di.is_unsigned )
>>> +        shift = BITS_PER_BYTE * (sizeof(info.data) - di.len);
>>> +
>>> +#ifdef EMULATE_LOAD_DEBUG
>>> +    gdprintk(XENLOG_DEBUG, "pc=%#lx, addr=%#"PRIpaddr", len=%u, shift=%u\n",
>>> +             regs->sepc, gf->gpa, di.len, shift);
>>> +#endif
>>> +
>>> +    rc = do_mmio(&info, gf->gpa, di.len);
>>> +    if ( rc )
>>> +        return rc;
>>> +
>>> +    /* A load into x0 discards its result. */
>>> +    if ( di.reg )
>>> +        *guest_gpr(regs, &di) = (long)(info.data << shift) >> shift;
>>
>> It would be more correct to have here:
>>
>>       shift = BITS_PER_BYTE * (sizeof(info.data) - di.len);
>>       ...
>>       if ( di.reg )
>>           *guest_gpr(regs, &di) = di.is_unsigned
>>                                   ? (info.data << shift) >> shift
>>                                   : (long)(info.data << shift) >> shift;
>>
>> and update the commit message part "Sign extension is done here…" to:
>>
>> Sign and zero extension are done here rather than in the handlers: a
>> shift pair drops whatever lies above the access width in the value read
>> and, for a signed load, sign-extends it, so a handler need only report
>> the value it read.
> this LGTM.

Thanks for checking that!

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 16:51:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 16:51:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472256.1680212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOeCp-0002y2-KT; Wed, 04 Nov 2026 16:51:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472256.1680212; Wed, 04 Nov 2026 16:51:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOeCp-0002xv-Hh; Wed, 04 Nov 2026 16:51:23 +0000
Received: by outflank-mailman (input) for mailman id 1472256;
 Wed, 04 Nov 2026 16:51:21 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOeCn-0002xp-SR
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 16:51:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOeCl-00FBkI-Q4
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:51:19 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb6278-2eae-0a2a0a5409dd-0a2a4501c6ee-38
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:51:19 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeb6287-5984-0a2a45010019-d1558030a5ae-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:51:19 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a9a8d6cea8so9223835e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 08:51:19 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-146-71.play-internet.pl.
 [109.243.146.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fecac2772sm4644595f8f.18.2026.11.04.08.51.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 04 Nov 2026 08:51:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793811079; x=1794415879; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=/MCZLJXtxRcTXjBlxoOYfqF5W8tL36EU8/bZoI0OaAw=;
        b=Ss8p33iD9QgUvjsy9P9qwX4BA5dWx4o0GzvLcYQXJc1NhIRz/+2/e/ayhX/jrjZQIz
         bDaZ3Z+MDO8vVuWjlfXofDqCAeHU8sy/sVDww0omIDZ8HArlMkLNA6W/OuIPP05duMj8
         0Aw0URWDat/UXSeKzmDjWHTBmgIB9TS9gcqPD/0IpRxD/q8nAtxpqmr2jk+w/OM/cgOX
         /1QfUueJh1Fctgz1W0xJTDOgy01i+d762hQlrF/9N7zcVcNNXBnS9rPnKYYlj3OQRbJm
         ZINBJ0GpJMe2yiThWPF4lf7/jUewqlcQLgNMiAlpkSXhnukWxkt2yjg7kv9vvC92sDG7
         +7yA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793811079; x=1794415879;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=/MCZLJXtxRcTXjBlxoOYfqF5W8tL36EU8/bZoI0OaAw=;
        b=DIdVn4aPn6PIBLlo1k3N8UMMw6vK5ddwu99Va4s4gwLCKYgnC5Jr3PNBgOg6d8i9OF
         eCBNsj3gv+iu/pXzfWBDB0nyv1cS7mE4JKt0gTNghuCw9Wc9xhNr9DoJuhq9glqQPNik
         dDx8VM3C3TBvYU2dsx87UP4R1czkIV6n+Hi6c/p94mSoF3uo4MLGXk7Hh2SwX38L3zdN
         ibyrUgkGvHlrTlvyu7yodim73XWGMlN2aFsbv/Ky1ZGE+oLrAcOoZWRNGZQdm+Lgdxch
         LhcUyRb1gIJTq7IpGwUQtwEPBhKhzuvVCMJyI7t93HtYAZQ56wOk8hBRRZ6MzxAmrDYW
         BJ3g==
X-Gm-Message-State: APuU4Z+Poc/0OL9KWlpxZFvpMup7v95ifadTsiZd4jjS2XIukJL/SrO6
	vKbYrqtVks6depekRYlK0pKO0KoQwZZG97KcNnnhXIwIc/LSDMjmGFPD
X-Gm-Gg: AYBFou2pFftBxfUgGlmBzE9kiSmY7fiZ4OHJ/7TqIyhI1bj1QVKw6M/FouXh9uzGegj
	UIMwrZdJOhMN0iQrDfaDTuHZZ60YQ2YSW8oeujIS7DzJJ/aeaVA+eFciAdjuqojCjbQ6IlnOjjr
	a2UkQ6VewO06gOv/B9eaafqDonB7kon8lg7MV6h7eepx8HaGOj+bf40fT4nlZhxMJyKKfsuDHTl
	QkR1d2o/3epb+hFpoy/tSyuktKZCIRLZFhlvX9GhcERFw1hJPPm1YzhXPGY2br3a5o9V2IaoR3Z
	aN+9lTCwhkmKgD5a8mkJovfCsWf4FDGCTaN26LmlKICnCShML/x9IX/w8DMetDRdHBmFy60a/kY
	rQ43facWvROvvRTfPRGf8SbHvO6L6AQi7lNjZ+nnd1dHz+B8pSjKXFNjPfoMvSbi2hyp0gF3J4w
	ECpmJ+51hzRd+e6DpfGbq9N91zx6rEUqTRqANPOXPgTCRfGsztsFa+Oyr4Ceg12xsRgCtuev8ES
	vHTGCMrDstBTB1XYn7ix2azWAd2jIgVm14QsXcCN8TTiI9+zbdy4PBbzjFpdyU9Y5rTovzYO+t9
	0fK6d1/PS6NzGkN52CmlauAaj1amRm+0UoP4Qoaw7gLtMY+5xPVASXT3IwMkJsaiYEGVazxm8Rm
	7MeA=
X-Received: by 2002:a05:600c:a111:b0:4a2:c41:d85b with SMTP id 5b1f17b1804b1-4b56135a436mr353325e9.17.1793811079145;
        Wed, 04 Nov 2026 08:51:19 -0800 (PST)
Message-ID: <8b64f6d6-096c-41f7-9ea2-8429be44582b@gmail.com>
Date: Wed, 4 Nov 2026 17:51:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 25/39] xen/riscv: add guest store emulation for trapped
 MMIO accesses
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <ee4611cd5d3388eda12c611eeebec6b354a49681.1790779209.git.oleksii.kurochko@gmail.com>
 <1792672657.8631fc262581453bbf619ec5b2062170.1a1639df031000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792672657.8631fc262581453bbf619ec5b2062170.1a1639df031000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793811079-C495A757-5E130CA5/10/73395122804
X-purgate-type: spam
X-purgate-size: 1182



On 10/22/26 2:37 PM, Baptiste Le Duc wrote:
>> Extend the guest page fault handler with store emulation to support MMIO
>> write accesses.
>>
>> Like emulate_load(), emulate_store() obtains the trapped instruction with
>> insn_fetch_faulted(), which also deals with a fault taken while re-reading
>> it, and decodes it with decode_ldst_insn(). As with the load path, the
>> access is completed synchronously through do_mmio().
>>
>> At the moment only virtual interrupt controller (vINTC) traps are expected
>> to occur, since it is currently the only backend registered with the MMIO
>> handler dispatch, so in practice the store is emulated via the vINTC
>> backend.
> Nit: the wording is unclear because "emulated via the vINTC backend" sounds
> like the vINTC does the decoding, I'd suggest:
> ```
>      At the moment the only MMIO handler registered is the vAPLIC one, so in
>      practice every trapped guest store ends up in vaplic_mmio_ops' write
>      handler.
> ```
> Instead of that, 

Good suggestion, it is really better!

> everything LGTM, so:
> Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
> 

Thanks!

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 17:17:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 17:17:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472289.1680222 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOebw-0006uW-Ja; Wed, 04 Nov 2026 17:17:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472289.1680222; Wed, 04 Nov 2026 17:17:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOebw-0006uP-Gf; Wed, 04 Nov 2026 17:17:20 +0000
Received: by outflank-mailman (input) for mailman id 1472289;
 Wed, 04 Nov 2026 17:17:18 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xOebu-0006uJ-A3
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:17:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOebt-00D47L-FR
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 18:17:17 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aeb688a-bab6-0a2a0a5309dd-0a2a450bc778-16
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:17:16 +0100
Received: from [52.101.57.20]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aeb6899-b7e8-0a2a450b0019-346539144e12-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:17:14 +0100
Received: from PH8P220CA0059.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:2d9::7)
 by CH3PR12MB7692.namprd12.prod.outlook.com (2603:10b6:610:145::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 17:17:09 +0000
Received: from SJ5PEPF000001CE.namprd05.prod.outlook.com
 (2603:10b6:510:2d9:cafe::15) by PH8P220CA0059.outlook.office365.com
 (2603:10b6:510:2d9::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Wed, 4
 Nov 2026 17:17:08 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ5PEPF000001CE.mail.protection.outlook.com (10.167.242.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 17:17:08 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Wed, 4 Nov
 2026 11:17:00 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Wed, 4 Nov
 2026 11:17:00 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Wed, 4 Nov 2026 11:16:59 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=VH5SvwdhM20PrtB8ZjETjQgaJSn31TGQtmxGSLaFYHj4r6w1QQfO0DiJ1PcmQmfIbwjDwThNbdujMA9xIcd9R4BU4ICesuZz+Navw6U5DaOlKYeQ5MNLEuA3sWiZsqdP+VpWnYcMFK81oN+Mf/JiwsPnPE83Wz6m7k/6V/T4aZd5g8fJy14Viwk/Adrg5zOYXdx4pp7Sgwm8/tnT89G2mcOVYYKb91b3aRsv0nqicON8wWQqJrJFGpELZupxzGaRKrRjol9udLNSXnjsDbhId1JTZ3f6idHWg6gVv6K0cJuDbUuxn+e6TR02gQer/OSazvzqZvOJrfgSC98GWwndTA==
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=2a9nj85GgAHRcrZfTxnIuENU34xXt0EJ0rqjSE+rjYc=;
 b=qmxpId/FXSCN/ig/EI/pNfYF7ecYAaAHB/fK8puXOW0UMbCi230yiiWmXYWmOykO+0/+k2PbZft/JDWWcORAsS4D6bAq2gqnEK2qrIdgOPSkSfP+mQO7pRlIOiwYoPluxKqoaeNMVo3ECwcsitsuZmb2jES5y2FuIp0Bd1KBVFTQAXMtbSkRLTRTuy/7oSC9OzKfU1eM5tBsryNenIgw8+UMMwA9PVe16yK31oMFWPGzZalrMlVFdkn3By/nFnAVISG69PkxxR7/sXPCrTEX2zXbCRZZi4Xdkfw4l+2U95pYSZcEUzV679UT6whEWJNtJCYq5Pb6knJLaP/8KrA3sw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass
 (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;
 dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2a9nj85GgAHRcrZfTxnIuENU34xXt0EJ0rqjSE+rjYc=;
 b=Rm9aF1tsS1DpQnv00byhbXyrDKwogEf7FAW35NcvWOx1FHWpeFhswm1eUu8XrJEGOx+/jLiy/z7qSpS2Zyl51/wPdraSlfAdfLcrnGCw0HQK8k6Gad6PwDt8soCVYtwjbuRbl8GppJWnUyxc1cktv6frZ9vDoJlCmi6tJPbsXOk=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <4cd83347-7c98-48d8-8883-2fec24e201b0@amd.com>
Date: Wed, 4 Nov 2026 12:16:59 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/CPU/AMD: Don't print reset reason in VMs
To: Yazen Ghannam <yazen.ghannam@amd.com>
CC: Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
	<x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, Mario Limonciello
	<mario.limonciello@amd.com>, <xen-devel@lists.xenproject.org>, Ariadne Conill
	<ariadne@ariadne.space>, Sean Christopherson <seanjc@google.com>, "Juergen
 Gross" <jgross@suse.com>, <stable@vger.kernel.org>, Ingo Molnar
	<mingo@kernel.org>, <linux-kernel@vger.kernel.org>
References: <20261104013026.185392-1-jason.andryuk@amd.com>
 <20261104151820.GA716491@yaz-khff2.amd.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261104151820.GA716491@yaz-khff2.amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CE:EE_|CH3PR12MB7692:EE_
X-MS-Office365-Filtering-Correlation-Id: 162ac3d2-d68d-43cd-88cb-08df3a977510
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|376014|7416014|1800799024|22082099003|18002099003|10067099003|261102123227099003|11063799006|5023799004|4143699003|261021123027099003|261026121527099003|261026140227099003|261022075727099003|261009223027099003|261028144727099003|261022105027099003|260925022911599003|261021121427099003|56012099006|260925021311599003|260925021911599003;
X-Microsoft-Antispam-Message-Info:
	feS7RXoyVg7zwk3WxLJQHRx2/j8+vSmBO3tyDpIqw9d7pX52ciNCccC+PN2PhW7hzrv2yJlqCYevE27Sdv4mgVp0xx/4rk2+4+F15eAAoAywe52SMgGafiht9IxmATTaYWEhjinOofqyGwZ7znrD2eE2ECt7d8wc+xlM+kQ/zL8FLQLfzrQ7/irwfso8mqSRnkTwnpeipsAPdtFShFlvuH0RB1ZqvGfo2Qrm6GroOZjWuE8rtMMr0n7oaoj2feOhZh49P9ANIqTL5HAFfRb1tPR0BvekO1VBkFRvJ1U42F+cmcFeyy9N8MQ+GNdj73yVrI6x1mEt2+3/hpNL+VqS/stdnj3gocS8b4t868aHfHrfcQkVjNnhkQa6PcaYRlJfms0qggKbDf086dHBM9qqfTVDNwWqRfNXxY12VmJ4JvkyfOa0rZgDgbnqkAQFzV6++o6/Xu+iQg4cEBO5iktfeFNvs7HcXWS1Ctktt2OkmjpfDGrF+y6c814kq9g6NMdYTxwUCC5zwyMCJ/2VCa/XLaIa1qzxZwA+H3ACsiqLaTy9lSMlJ0KaH6Md8fpdCtJXr4NwN2NKTkiq9fsMvMurH5HU8oX2FESf7y1oBVyofEH8W+Xv5KZ26NpVGnWtRNIFuCRV/CVHeyy2SwLEnikUL83MMdyXq2ViBgjIjD0w1fI=
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)(82310400026)(23010399003)(376014)(7416014)(1800799024)(22082099003)(18002099003)(10067099003)(261102123227099003)(11063799006)(5023799004)(4143699003)(261021123027099003)(261026121527099003)(261026140227099003)(261022075727099003)(261009223027099003)(261028144727099003)(261022105027099003)(260925022911599003)(261021121427099003)(56012099006)(260925021311599003)(260925021911599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	gRfP2mCEPcxlVCCDG86YObuTqFmaIhX9PDmGvHeX6rTEnMLgSPFMvRxnaCLgfSl3bGpQiOOWnPaGv6k+2BwLoNcX03nm1swSVmwwmFkNVljl20J0WWNV0dgyxo4QunCWxoZHpXsDd1yqqDYeinSjZc6Dtz3+Ex92hU6VuI4gE9mrfUbo+9fticZb/4lVu/l71spmawxM93UTjdW9O0hQdgHJcEe9XrlHHQa/5f7jPQr1uHOYeVMeIv+GOmHLlVppqON744K7o1BDh7PnhQzsrHpmCGV+KhS7i++SVQScwCzW6G6jq/Rub+fz2OqjLtOndgeYULvAQzyAgEch20pibpHpSlny8r4Sto+LQnLzbZkhT035mgvBZj+HSEh91zknVl0k4/teRXaiZK7RGSu5qKlAeRyXc4vL8Zj5gqA2ylnDylt4jrsvIgdBn1HCjrDp
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 17:17:08.6996
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 162ac3d2-d68d-43cd-88cb-08df3a977510
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:
	SJ5PEPF000001CE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7692
X-purgate-ID: tlsNG-42698a/1793812636-1BAD09EA-A4267175/0/0
X-purgate-type: clean
X-purgate-size: 2717

On 2026-11-04 10:18, Yazen Ghannam wrote:
> On Tue, Nov 03, 2026 at 08:30:25PM -0500, Jason Andryuk wrote:
>> print_s5_reset_status_mmio() expects to read FCH MMIO on baremetal.  VMs
>> don't have emulated FCH registers, so there is nothing to check.  Add an
>> early exit when running on a hypervisor.
>>
>> The real motivation is Xen PV domUs can't boot on Zen CPUs.  PV domUs
>> PTE contain system physical addresses - they don't have concept of guest
>> physical addresses.  domUs can only map physical addresses they are
>> assigned, so a domU fails to map the FCH MMIO addresses.  However
>> set_pte() does not return failure, so ioremap() returns a pointer while
>> the PTEs are unpopulated.  print_s5_reset_status_mmio() faults when
>> reading through the pointer, breaking the boot.  This change fixes Xen
>> PV domUs booting on Zen CPUs.
>>
>> dom0 can map the FCH MMIO, but it has X86_FEATURE_HYPERVISOR set.  With
>> this change, it no longer prints the reset reason.
>>
>> Fixes: ab8131028710 ("x86/CPU/AMD: Print the reason for the last reset")
>> Cc: stable@vger.kernel.org
>> Suggested-by: Borislav Petkov <bp@alien8.de>
>> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
>> ---
>> dom0 could work, but that would require a xen_initial_domain() check.
>>
>> I've wondered about a different approach:  We can't directly check for a
>> device for the FCH_PM_BASE memory, but maybe we could check for a PCI
>> ISA Bridge with PCI_VENDOR_ID_AMD.  That might be close enough to
>> indicate real hardware?  But it would still be a heuristic, so I'm not
>> sure how much better that would be.
> 
> Maybe, I had an older version that used the smbus device / i2c driver.
> https://lore.kernel.org/all/20230407203720.18184-1-yazen.ghannam@amd.com/
> 
> Is this available in dom0?

lspci shows 00:14.0 FCH SMBus Controller
Kernel driver in use: piix4_smbus
Kernel modules: i2c_piix4, sp5100_tco

so, yes, it seems so.

>> ---
>>   arch/x86/kernel/cpu/amd.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
>> index 40463bad1078..580ccc2ce5fc 100644
>> --- a/arch/x86/kernel/cpu/amd.c
>> +++ b/arch/x86/kernel/cpu/amd.c
>> @@ -1357,7 +1357,8 @@ static __init int print_s5_reset_status_mmio(void)
>>   	u32 value;
>>   	int i;
>>   
>> -	if (!cpu_feature_enabled(X86_FEATURE_ZEN))
>> +	if (!cpu_feature_enabled(X86_FEATURE_ZEN) ||
>> +	    cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
>>   		return 0;
>>   
>>   	addr = ioremap(FCH_PM_BASE + FCH_PM_S5_RESET_STATUS, sizeof(value));
>> -- 
> 
> Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 17:31:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 17:31:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472310.1680235 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOepW-0002Ay-TU; Wed, 04 Nov 2026 17:31:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472310.1680235; Wed, 04 Nov 2026 17:31:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOepW-0002Ar-Qq; Wed, 04 Nov 2026 17:31:22 +0000
Received: by outflank-mailman (input) for mailman id 1472310;
 Wed, 04 Nov 2026 17:31:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOepV-0002Al-Gc
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:31:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOepU-00FBkM-Q1
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 18:31:20 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb6bdd-bab6-0a2a0a5309dd-0a2a450a8d7a-6
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:31:20 +0100
Received: from [40.107.200.68]
 (helo=CH5PR02CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aeb6be7-f2d2-0a2a450a0019-286bc844fd18-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:31:20 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA6PR03MB7661.namprd03.prod.outlook.com (2603:10b6:806:445::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Wed, 4 Nov
 2026 17:30:17 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 17:30:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=x2Jwl0v277wS9A36pHV+5+Htnif0AfCAsN0shUj0VYJ0LT3yMXkgLuAdgfwFSAkZG03xGx4nHBHKKk9U7nyFCw/QVQ1/yQgmZsgWnKXdAmN4tH40QEkBhiNlUkF4BrX+G59QwVkHj3Y0t2ZfT3CwkLs6FTUjIMS5kC0fUmIRvcTytBIcqvWUaNxjdyoVPJNhBJJru4BwEpvW8tNp0zZthJfz+yJDO9DgfHG+Zs9M/C51ag5xB5W1ZWV/GvWsAmA/zbnzOinKOXsOi+xApQNt3x4iYguM4tHEYSkSwm1WQwSgFKlzSXeR/fqpCnwXMqweXbkphvVswaep2uGmLc4JPw==
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=yDfXFmcmMDRA6NAMGkrjr8e7Lu5heBgaItstTbiCc+U=;
 b=jeEPNcLrIByS0D3djCR1NxdzUKTGLUO0zbi9glNl9DEdXRVxdzjFlYI+L5iMwGQpqa+zHQaH2MYHRC+zk4ICY5gPIoQkLxFiVpjBAqWQ/m+2BLKOi8EGDQCWHNFMe2pJdFroUWOnW35ycmB0+1W/4JaIm3d8rvKeBb7OYpBu6VJVadCYN2tFhfQl91V/8WrGDMur9o4/13UsacMxs7H9xw8QhNFJKoi2snB63PShxJmsTMcOiDBwrMTza+WkEdke9/fHCyNLNqBJOJsX9clE1cxdWxem/D2CZ+eB4+qdb9fV/C7z1haGcKDQvEfEeiBVGRPgYO2boyc+LPKJ21LSxw==
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=yDfXFmcmMDRA6NAMGkrjr8e7Lu5heBgaItstTbiCc+U=;
 b=daEJySlplqOMb87CnBRAq0CxrEBMFOehncn0Xg1Ribl06eUWE8PWwENMqcvsjyNjum19r48FYq0Iw/YUBfqfXB0D2TcelkloNSrEp3ojfAJLAJ80mC8o7S3s2N4NYOESNxHhcUgM+KUXWEdaMZKa0eXmY18S3TO0LYFSjBsVcqQ=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <1d5fca53-602b-44d5-9ab0-37707e45c845@citrix.com>
Date: Wed, 4 Nov 2026 17:30:12 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86/pv: Improve code generation in
 async_exception_cleanup()
To: Jan Beulich <jbeulich@suse.com>
References: <20261102174234.1764070-1-andrew.cooper3@citrix.com>
 <b3e50554-a045-42b7-908a-7e7c34c0dd90@citrix.com>
 <3b08e987-30b3-411d-a9db-27a18196c5bb@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <3b08e987-30b3-411d-a9db-27a18196c5bb@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0076.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2bd::11) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA6PR03MB7661:EE_
X-MS-Office365-Filtering-Correlation-Id: 16e486b1-7db1-4ffe-51c6-08df3a994989
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|23010399003|1800799024|6133799003|10067099003|22082099003|18002099003|56012099006|11063799006|4143699003|261022105027099003|261102123227099003|261026121527099003|261028144727099003|261026140227099003|261021121427099003;
X-Microsoft-Antispam-Message-Info:
	Cmh48ZyUPAWjeKXZZuCG7dEgV6fYVFhu8qlURCsah+uz9MUYpIA6UmzvSFNYqrquri+p9F406AOT5ZBtSeiSqX/xi0Gcyu2dTT1LFWkU6yi95EgcD8AW8FLAhfD9vGLE9Y0sAqBWmP6Xt7jHUsqFXSUwZQVLJkmUxsvToEuxUmFzADEag7Ok/4bVif5WpJUd/q9NnToFs9Zbp2ntTZcSUF9+dCe8REdGlgMIlnvzoajp8W0kCxS4gwWGlKk1DDA9V3zsq3Z5vV+5x9eTmnjddlFEyIfkJ4YKLqlAx1j+DaN692sGCjO3fi9RGezWoVB9vg7GG+q9b466Yx0MSxoHhqMTuvC1PAzj8V4+yYnp55DPp9YPEOVyyh76t1DEzP8yqnG77MxNuNjOALx+sq6ixgFkIyCSV0itmhgIjXXEuC1BBjMRqy7P9Ad3FEj729sOdWQxgJ0EB9mxWi23abQqGa7YwzhM6nSnFGbFXshoOsEW1nekO2CHG88JFZABeDcI5XULH9UA1rjOZT6fUyUxKk6/AS5CCbLHBPphb64gmCOWoejihNLsYc7/MMskuuFVcGItNTj6bSDtw65R9RSaqazzcEKoXVHAIKlcuYQDntnOTT8Yuv+2fVBvOdSZAnWeezIiOWlVCK8fF+7fTOZE1w40PZyzqEr/BWscI7lpFsw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(4143699003)(261022105027099003)(261102123227099003)(261026121527099003)(261028144727099003)(261026140227099003)(261021121427099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WGFmWVYxdlUvTkFndFl0TXU4OGlRVithUExjU3JrNlNZZU1pTllKWlpKaHZq?=
 =?utf-8?B?YVpKaHZhNXVzTVVPbkd3UnM3TG5HYjVkTGVhczhLSEhPUzVOR05uSU5HUTgz?=
 =?utf-8?B?V0Rqc29WeWpKU1Y3RTFYVU9RNDltb2VDUWlDRm9uVDdYZUtDYXQ1QlRPNE9i?=
 =?utf-8?B?bmxYa1VkeXowckMxdWUxZ0VOMlpIVVEvdFhmWEI0MUtqQkVHZW1PY0xXTktz?=
 =?utf-8?B?R3lKWFZjcURoemQ1R09YT1ZBNGliQVVXTUY5ZHQwYVNCYWttQm12dXVJa1Mv?=
 =?utf-8?B?anZVNk5YaEV2QjVqckp5U0FYYzdwMnBlb0o3b25RWVROQ3hiVW1OYVY0M0N4?=
 =?utf-8?B?NUNrMkpjVSs5SHdNbUVjVFc0citlWFBkYjhOTnVaM0ZoYXYydnRuZVBlRFV4?=
 =?utf-8?B?d1RUWXgxdEpuUmUwRWhld01hZTlUaUd3UHlXbU9YM05WOHlkT3N0ditiSExt?=
 =?utf-8?B?SEM2bjl4TU1RS2s0MDE5UlNUbnYzYnhvdllBU1d3alYrN2xLRXlnQm1oNGdh?=
 =?utf-8?B?cms3Y25GamUyZnZLZ2o5QWh6QVJJakd2QjU2dG8yY0pTOFZ4UzU1QlYreFBp?=
 =?utf-8?B?WXpJaUw4VkVlYTYzeUlKN2J5YWVmVzBLTVpqYlFiakJuNnBRSlBPTGNkbTNW?=
 =?utf-8?B?QkxmK2NwTnFaZkNVM212TmVtVWlMSmxUOURWa0xoTHJIcS9HR1VpRTFQWmx3?=
 =?utf-8?B?Y1B3MkQ3SXVQbGZjWGJWeTVPUmFpTlE4SkVxb0FjSVF6RVh2bm9VTXFIOUlL?=
 =?utf-8?B?bHhSaENWNmRJNElrWEZFVlFOSXFobFhURGJaUWZZazhITkVlTDRJaUJxMVBN?=
 =?utf-8?B?aFBUYytCVHFlQVhrQk9Qd1N1TmRpb2VUM2I0QkJrS2hWendTSllsYWNnSEY2?=
 =?utf-8?B?TDVBVm1JQ2srcmUzVDRQeGdOZDNsbytDWjUrdExBMmE3QUdiNkRLRGdYT3I5?=
 =?utf-8?B?WU1tVTdzTG0vRjdjWFo5UGxoMDZtMjY0TnhTclhUOFJZOTB5SGNrSVdaOVZL?=
 =?utf-8?B?QkZKYVZWRmZUa2o4TEY1d25mSjJYelNJaitnMmNad3FZUlNuODg2VldCTTV0?=
 =?utf-8?B?VUJzRm10czBJRHdMKy9tQk1VYUIwUk9uUk1NYmVrcUJGRGtabjVWQTFha0Jn?=
 =?utf-8?B?UTZ3cjA3WkRDbzNhODJQRWdsRmJLdHd5NVJqYUdsMVJtSnZEcTVFajF4K2Y0?=
 =?utf-8?B?SHQ3TTRrK1ZVNStTWVpIZVpNR2FXUlhIT3d5ZzZBUGozTld2NkdZVWJUcURi?=
 =?utf-8?B?K2VaU05WUDc3V0pvV1hsMG1uSk01Wk0wdm5TZTRuaUVjUEN0dFRRNWlZZjRi?=
 =?utf-8?B?VWV3SVVmUjlRTHFyUXhrVS9Oc05NTjRSSEJrWWNjaVRuUVpjMGVWem5Oblhz?=
 =?utf-8?B?bS90ckIzVzFYNm5OU1J3N0lHZjI4ZXhaeG5NakpUTmQ1MjBUT0FvRFJuL2Np?=
 =?utf-8?B?TFFnQkFwd205cUJvSHEvM1JBaWtmSlpoNm15NW9nZGozOW5uczNSN3lLM1hC?=
 =?utf-8?B?Y0dIVThKWlVrOXpsa3NQaUl3OVZ5czNEcFk5a0p5VHF5dVd0bjV2RVJYcElP?=
 =?utf-8?B?UngyWENQQkl3c3dXbUxvcGFpMHdReTUzMXRzY3lSTjJmWlNuQUlXT25aSVlQ?=
 =?utf-8?B?cG95ZkdKMUxhNStPYVBkVFJ0OXhsS25PRGlXa0d6aStZTVkzOWZzcmxCTkh0?=
 =?utf-8?B?T1c5ZThJNk8yeWtGZHBUNnVTSW51R1RnU29DSzhCSS9TdjYrNkdtWXJ0M0tI?=
 =?utf-8?B?Y0p0YU9CNDg2VytUalNCM0tIZXJqYWFHY1RHRlcrYllKZmlMa0hzK1Eyb1Nh?=
 =?utf-8?B?anl4cUFiaVJza0dQYnhjaFRLVFdFd3Nwa3M3clZ3UHg2M1oyaTh1dUtBdFg3?=
 =?utf-8?B?L1Q1ZVQ5T0ZpVHZEUjRibGNFVUg0ZHpQR21acmloUGowR2w1T3A1Zlp5aldD?=
 =?utf-8?B?U2VtelhocEdJR3hWeVNqcnEwajlFY1J2Z1N5dDdoL0kvVWU5TWllbkFDTGdN?=
 =?utf-8?B?a0llTkxmWUNMaExnWUZGSzZvc25ZcE9adDcwSHNOWldSdWVWWlhadkMyczZW?=
 =?utf-8?B?cUU1K05BR2VvSkQ2Rk9hSDIyVmJEUVRRWERDR2tqR0dMSFlrRnFIOWVVN0k3?=
 =?utf-8?B?eWZBQUpFWi9UN09WZ1EreXByOXI1YVpuVzlidDlsSDRma3JITU5wYmsyaThp?=
 =?utf-8?B?QS9wbDdZcWw4VlVXSkZjQUVKNG1qaFhKTER0WWl0S3JjRUNBZEdYNUI0cmhy?=
 =?utf-8?B?ZzlqbndPNkZ6bHM3UStGSG80ZENKSU5JSStleHZkRnI5WmFKOURiZjNwWEpl?=
 =?utf-8?B?KzVkM2ZwQmtBT1VFMjBpZlo1cEIwVnFFSm9nSzdmdk9EQktjd01HZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 16e486b1-7db1-4ffe-51c6-08df3a994989
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 17:30:14.9718
 (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: ZjzvHEWEjv65Mf2XWHQACCzwwNY4dHlU4bSgoBwXUk7e0gJfvJYwX5vp/S+dFdNw+Wcfde8Syz9AjhbDIFOTm7bekqXlUPihXRdTenKhKeQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR03MB7661
X-purgate-ID: tlsNG-4011c0/1793813480-512C8CFC-CFF449E7/10/78276251493
X-purgate-type: spam
X-purgate-size: 2110

On 03/11/2026 11:36 am, Jan Beulich wrote:
> On 03.11.2026 12:00, Andrew Cooper wrote:
>> On 02/11/2026 5:42 pm, Andrew Cooper wrote:
>>> Use new helper functions to simplfiy the logic.  This removes an alternative
>>> behind the scenes.
> Does it? __scanbit() engages an alternative only when its 2nd argument is
> BITS_PER_LONG.

Oh, yes.  I'll drop that sentence.

>>> No functional change.
>>>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Jan Beulich <jbeulich@suse.com>
>>> CC: Roger Pau Monné <roger@xenproject.org>
>>> CC: Teddy Astie <teddy.astie@vates.tech>
>>>
>>> async_exception_cleanup() is complete nonsense.  It's not remotely close to
>>> how interupt blocking works in x86.
> Are you perhaps expecting something that (for PV) was never intended?

I've long since given up being surprised at PV doing bizarre things.

This async_exception_state[].pending is used for HVM guests; this aspect
does need to change.

async_exception_state[].old_mask is specific to PV and, AFAICT,
interlocks both NMI and #MC together so they nest, with HYPERCALL_iret
"refcounts" the unwinding.

Architecturally, NMIs are blocked until the next sequential IRET, while
#MC has no blocking capabilities at all.

PV guests behaving the way they do violates the principle of least surprise.

>>> --- a/xen/arch/x86/pv/iret.c
>>> +++ b/xen/arch/x86/pv/iret.c
>>> @@ -31,8 +31,8 @@ static void async_exception_cleanup(struct vcpu *curr)
>>>      if ( !curr->arch.async_exception_mask )
>>>          return;
>>>  
>>> -    if ( !(curr->arch.async_exception_mask & (curr->arch.async_exception_mask - 1)) )
>>> -        trap = __scanbit(curr->arch.async_exception_mask, VCPU_TRAP_NONE);
>>> +    if ( !multiple_bits_set(curr->arch.async_exception_mask) )
>>> +        trap = ffs(curr->arch.async_exception_mask) + 1;
>> This should of course be a -1 rather than +1.  Fixed locally.
> Acked-by: Jan Beulich <jbeulich@suse.com>
> (with the description corrected or you pointing out which other alternative
> you mean)

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 17:33:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 17:33:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472316.1680244 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOera-0002lr-7b; Wed, 04 Nov 2026 17:33:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472316.1680244; Wed, 04 Nov 2026 17:33:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOera-0002lk-4o; Wed, 04 Nov 2026 17:33:30 +0000
Received: by outflank-mailman (input) for mailman id 1472316;
 Wed, 04 Nov 2026 17:33:29 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xOerY-0002le-S2
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 17:33:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOerY-0000wf-1V
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 18:33:28 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aeb6c67-bab6-0a2a0a5309dd-0a2a450be85e-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:33:27 +0100
Received: from [40.93.196.66]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aeb6c66-b7e8-0a2a450b0019-285dc4428109-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 18:33:27 +0100
Received: from CH2PR10CA0026.namprd10.prod.outlook.com (2603:10b6:610:4c::36)
 by IA0PPF52B16157D.namprd12.prod.outlook.com
 (2603:10b6:20f:fc04::bce) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 17:33:19 +0000
Received: from BN2PEPF000044A2.namprd02.prod.outlook.com
 (2603:10b6:610:4c:cafe::84) by CH2PR10CA0026.outlook.office365.com
 (2603:10b6:610:4c::36) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Wed, 4
 Nov 2026 17:33:19 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF000044A2.mail.protection.outlook.com (10.167.243.153) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 17:33:19 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Wed, 4 Nov
 2026 11:33:19 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Wed, 4 Nov
 2026 11:33:18 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Wed, 4 Nov 2026 11:33:18 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=jpNTTe8ywusT/7uWiEMDzFJyqxt3+vIj9Q5yOhoOUhqSQUwqSGe53Tzx9ZO5x8jt6faf5SG+obDxSXvZNCqU5RSIN3E3BrCtl0xPWLV/sq6KpZF2nuHzcC2zcyHxCsEnBPuvOxsPATCpIjIPxNNZWacUnTJFiK850dW3WzgAPLdhFlvQpHWVuK/HfpOb68C7YirArmwi2dPaQV9ff3Zi72G5HVtZTJh4ZkIh+w3rUrZ33JJUK3rfeewyP+OjnlUijIjGJv1MBjFvbUcHLh2v8guMseoFGf7KY3qsOAndEDJPgc42cJ4ubzwT8fnh1KN1syZavUe2jp15fMbLYhnydA==
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=KH0cjcSzGgPO3uZLJv4e8L2XyUvuLRkjrWF6x9bITw8=;
 b=Dc7kixC6R+ScFYhUU+mOMFXHZnLdiR7IYQhE642lyV6Sy7gMNh812YTEEmsr5Jn7MHJH+eAW68JzOWjK5wk0kQb3BkONh9qmIYY8pOFy6aWkpvUIBUaTC1U3Qc8QEiM7rD1L1pbAXbc0UnMKb6cs+ByxN12dxArZP/c8eqpZ3PnCaT6Fl/MbeIAVhNf1qE6Wdnc2Dil+YwcHu7toneZaj0LUn3to4hIXBmIC09aPR+EncO/NW9rUyT+6i3GJaT+H1K9nQgoXJDUjrwZI8MqG0fgJ6MLT7IPLQVslnmcqCcJNnNRyLebrq5jNRzy+En3H+XmrS1L2FEmQlMfpqJawbQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KH0cjcSzGgPO3uZLJv4e8L2XyUvuLRkjrWF6x9bITw8=;
 b=bzb7w0ouT6j7nugYZdGD20R0ud+pMENzukY9+fh6JtFAoicdHTivcQbJCJqzWa+Kxa/4Esf6q4SLX/ltDFW0bztfXHu6xWCHBQ44LNegZubAhrJIdbXMsZS6/6kgNoq2etTVVAf4fPOKD9WsW3H+mut0eghnd62cTtubUYDEwsc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <0762b21d-3173-4014-bd43-fa2a9cef9c85@amd.com>
Date: Wed, 4 Nov 2026 12:33:17 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] libxl: wait for QEMU exit before restarting a domain
To: Jiaqing Zhao <Zhao.Jiaqing@amd.com>, <xen-devel@lists.xenproject.org>
CC: Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross
	<jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Penny Zheng
	<penny.zheng@amd.com>
References: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
Content-Language: en-US
In-Reply-To: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044A2:EE_|IA0PPF52B16157D:EE_
X-MS-Office365-Filtering-Correlation-Id: 8ab8ff3b-c498-4921-c789-08df3a99b792
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|1800799024|36860700016|376014|82310400026|261022105027099003|11063799006|56012099006|261021123027099003|261021121427099003|261009223027099003|261102123227099003|261022115727099003|261022075727099003|261026121527099003|261026140227099003|261028144727099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	WH19Cg+eg6Kkh6VGuJWU5MV5ClDva/0FRD1/YbyB+TXbzc6NxXQyzrA0VrTOcUtd4KL2DHX7+yUHKSpS7ZHsuOUKQhX9dSQQXdNtmRswHStTTVV2Ih7c0EvezpqjvTDf14wXMiLZA16fPO4U00NTKx6qvMr5FIg3ZAfN9FrwKpWXsv28OuQtXCSTXKHhTvH5ZrEFTUhFs8PtaOj33qSWIEA92gPVk1+4/LNdFPJLDbeu6u30AERPiyPuaRYlwyTFbLZ5BmqfAWl8Y3eJoc5IdQ3ImntoZVfNpOd0FlT2NRqZ5OsA+R5sLvmZKe4RQdYZmXfCT20YmfXBbl9v0XKffJoG8OuCkFfbnufEIv63ksVNIbfupSGVUc6vsSA5NVVZyAVtNUegBL6IJ7BZLAEe5dmQEybSf05OaLvhqbLEvhrubYcsvyjE5hSahih03gwMS2Zob9qiarIISQoT2mbR78sI5mQKfEm5oTcaY9qT7COCE9gEH8WQ8gDGH5vIeExicMbzGjdd38S+m7qc48TVGM/p5/ujpfc5WI+2nWAO2AKvfSMIwaXsAIw7KZeZzm2Nd+1tJMQ/WfOhEGX20RuiTDDBSZHiCxKZPyxRSBqeuy/1qEnU0tiO2M8Q6KjDH5SeOT2NO0UP2ZkcLua9YKXMKtJa+AkHWtnRTTg0V5KTGxNK9QqgUKbk5GqfPLIcLSO8Iw3C0Bjr38eL0vkOhWkjyQ==
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)(23010399003)(1800799024)(36860700016)(376014)(82310400026)(261022105027099003)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261009223027099003)(261102123227099003)(261022115727099003)(261022075727099003)(261026121527099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	CaRZeSBACH4asmgpIzDmQYOiTEwEcgb+7CsCFtjVNSlybhz2IkhEBMaKyGNsJtGEOEC3FsWtAGcwBCmEjK8+N7OfOcCGU02L7Mj4nQEfjUlEXEOBD0NKbbipQc7CUDWoqHIDSfs1UezS/SbQIMwQEGQm0cijvfyeXAcH7YgoWU2vz24NiVpa0Xxmq3QkPQfo/gawWEFJMUcUh52Qjkh92zlGphNJ8wDvw8mZOeTwOr8tUMYg4DEUFh60zufkX1LNpqRzHPeEp2QKAS6WarWSZr1qgkK3czbsacPL9gJQJcp1in1eHTUJ0mWK0U2u0r8kswhzVt8U+dxTbTwFAZtmh3GoDYSCH4RMXzvsvg4ZwRl2nM7yMCLhc4NqTQz4vFapxRIv/y25CgR5UcSTn5qoTGCyHXyCTMkzx2339uJHr8lh9Z+4rRy9pKCrBRE887LY
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 17:33:19.3728
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8ab8ff3b-c498-4921-c789-08df3a99b792
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:
	BN2PEPF000044A2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF52B16157D
X-purgate-ID: tlsNG-42698a/1793813607-A86CA9EA-5A29D937/0/0
X-purgate-type: clean
X-purgate-size: 2324

On 2026-11-04 01:46, Jiaqing Zhao wrote:
> The PID-based device model destruction path returns immediately after
> sending SIGHUP, before QEMU has necessarily exited. When an HVM guest
> reboots with VNC enabled, the new QEMU process may fail to bind the VNC
> port because the old process still holds it.
> 
> Wait for QEMU to exit in a child process after singaling it for at most

"signaling"

> 60 seconds. If waiting fails or times out, log the error and retain the
> existing domain destruction behaviour.

60 seconds seems like a lot.  Did you measure the time to see how long 
it takes?  It's an upper bound, but maybe 10 seconds would be better?

> Signed-off-by: Jiaqing Zhao <Zhao.Jiaqing@amd.com>

> @@ -3547,12 +3564,28 @@ void libxl__destroy_device_model(libxl__egc *egc,
>       LOGD(DEBUG, domid, "Didn't find dm UID; destroying by pid");
>   
>       path = GCSPRINTF("/local/domain/%d/image/device-model-pid", domid);
> -    rc = kill_device_model(gc, path);
> -
> +    rc = kill_device_model(gc, path, &dm_pid);

If you just read the pid directly here, you don't need to change 
kill_device_model().  But your approach is only a single read, so maybe 
it's better.  I'm undecided, but maybe someone else has an opinion.

>       if (rc) {
>           ACCUMULATE_RC(ddms->rc);
>           LOGD(ERROR, domid, "Killing device model pid from path %s", path);
> +        goto out;
> +    }
> +
> +    LOGD(DEBUG, domid, "Waiting for device model [%d] to exit", dm_pid);
> +    reaper_pid = libxl__ev_child_fork(gc, &ddms->destroyer,
> +                                      kill_device_model_uid_cb);

The reaper_pid handling below is duplicated from
`if (dm_kill_uid_str) {`

Put the above pid code in an else, and use a single implementation of 
the reaper_pid handling.

> +    if (reaper_pid < 0) {
> +        rc = ERROR_FAIL;
> +        ACCUMULATE_RC(ddms->rc);
> +        LOGD(ERROR, domid, "Unable to fork device model exit waiter");
> +        goto out;
>       }
> +    if (!reaper_pid) {
> +        rc = wait_device_model_pid_child(gc, domid, dm_pid);

Though this would need an additional conditional.

Thanks,
Jason

> +        assert(rc <= 0 && rc >= -125);
> +        _exit(-rc);
> +    }
> +    return;
>   
>   out:
>       /*


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 19:38:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 19:38:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472456.1680326 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOgo0-000819-EE; Wed, 04 Nov 2026 19:37:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472456.1680326; Wed, 04 Nov 2026 19:37:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOgo0-000811-9F; Wed, 04 Nov 2026 19:37:56 +0000
Received: by outflank-mailman (input) for mailman id 1472456;
 Wed, 04 Nov 2026 19:37:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3j4nragYKCa4gSObXQUccUZS.QcalSb-RSjSZZWghg.lSbdfcXSQh.cfU@flex--seanjc.bounces.google.com>)
 id 1xOgny-00080v-GA
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 19:37:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOgnx-008CFj-M9
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:37:53 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3j4nragYKCa4gSObXQUccUZS.QcalSb-RSjSZZWghg.lSbdfcXSQh.cfU@flex--seanjc.bounces.google.com>)
 id 6aeb8965-2eae-0a2a0a5409dd-0a2a450be336-20
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:53 +0100
Received: from [209.85.214.197] (helo=mail-pl1-f197.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3j4nragYKCa4gSObXQUccUZS.QcalSb-RSjSZZWghg.lSbdfcXSQh.cfU@flex--seanjc.bounces.google.com>)
 id 6aeb8990-b7e8-0a2a450b0019-d155d6c5bc1d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:53 +0100
Received: by mail-pl1-f197.google.com with SMTP id
 d9443c01a7336-2eb2437d752so15698195ad.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 11:37:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1793821071; x=1794425871; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:from:subject
         :message-id:references:mime-version:in-reply-to:date:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=/5MszlfJHB7Xr7Xp5GjEvhWx25u5UBjAyc2/c9bnue0=;
        b=J2fSJV7nhESuY30FinsxwoYfs+beLGy9Ukk0R88oAst9/DNbgFjQuXwz8GbNqDJALO
         aGuSyi7Dv2EenHmlm93r9rWIPJmsyMTzUd2qR2AqDe3qi3GPfXzFwBYHgWXqNR1N2Lkc
         G0SR1gHj14acw57uzBFTOjz3MHHMdvxpgDYxYMhoJkXgiB0qHA5phVCnQR2rYIaZxGkR
         IFRjYP7P04blH6xs2/rOyeScRO2btc8qSerzx79Cop5KFYlyzk5ZfU0oYYzC+4UzlzRi
         5miS0Xoi3CJwLN7W8oAr38Frb4BbR7wWuJzum2m9h51jF9UIETLp2m8M4GB9MCOwcH1A
         OxvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793821071; x=1794425871;
        h=content-transfer-encoding:content-type:cc:to:from:subject
         :message-id:references:mime-version:in-reply-to:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=/5MszlfJHB7Xr7Xp5GjEvhWx25u5UBjAyc2/c9bnue0=;
        b=rz2fDJO7kcDMZA8WPKJU4jSWjlbtgYuOWVaPHWmpZ18QQzuB3Cm7kSzzBxLTI+mkX6
         Fxu2GhwXe2e3IjpOAJXAhKkvxhXX35PjbO9coUFgoeobO+lf2H9di0EFdf0Yor/5c4Nb
         KyqdS1d7tdj5SAZJAiqmXPgrRpv4krl7WOrzs8p3BiTCD9cBNcC13VuJ+3eqWwAE6xSx
         paIutkID6h5LZvlgkzqDVJ9oFpKDh0e/IQ/aGtSm9Wj3THrNs9+N9CW/d5BC9GwGOlQr
         I9WYKxCvFJLpdDXJHJzC2fFZ53+G/vgCG9oXErzR4rxirv9OrCpArs3ZLYGavP7vFv1B
         W2WA==
X-Forwarded-Encrypted: i=1; AKwUvBysEsq5pvGfIGvzUKD5CCoa/sbE+7as1LYvG6h3HoM2cr8Q+95nZZsusJ0Dm6/v8qh9S9ORuxmp6DM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8wyiO9wHoKROrEYz4Ci0VAglZONJpNDDZMpCMKs/FuQ0aNV/SV
	zx0oKRQVGLvh+BqFoR+ZchxrwKCbi1HKazUnbAW/ggLahFaac79cBboEoCiCsPDSNEUxFuuDPud
	NKh2wRA==
X-Received: from plww1.prod.google.com ([2002:a17:902:d101:b0:2e9:4a78:9294])
 (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:1986:b0:2e9:4d9f:a65b
 with SMTP id d9443c01a7336-2eb3651d564mr160599195ad.53.1793821071087; Wed, 04
 Nov 2026 11:37:51 -0800 (PST)
Date: Wed, 4 Nov 2026 11:37:50 -0800
In-Reply-To: <c9a6455eb88c24d4271b7a7c86f7a4e90799e40a.camel@infradead.org>
Mime-Version: 1.0
References: <20260806233609.212337-1-seanjc@google.com> <aqLv9GwBNymyHs8q@google.com>
 <c9a6455eb88c24d4271b7a7c86f7a4e90799e40a.camel@infradead.org>
Message-ID: <auuJjiowddGlysWI@google.com>
Subject: Re: [PATCH v6 00/51] x86: Try to wrangle PV clocks vs. TSC
From: Sean Christopherson <seanjc@google.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Kiryl Shutsemau <kas@kernel.org>, Rick Edgecombe <rick.p.edgecombe@intel.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, "K. Y. Srinivasan" <kys@microsoft.com>, 
	Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
	Dexuan Cui <decui@microsoft.com>, Long Li <longli@microsoft.com>, 
	Ajay Kaher <ajay.kaher@broadcom.com>, Alexey Makhalov <alexey.makhalov@broadcom.com>, 
	Jan Kiszka <jan.kiszka@siemens.com>, Dave Hansen <dave.hansen@linux.intel.com>, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Juergen Gross <jgross@suse.com>, 
	Daniel Lezcano <daniel.lezcano@kernel.org>, Thomas Gleixner <tglx@kernel.org>, 
	John Stultz <jstultz@google.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, Stephen Boyd <sboyd@kernel.org>, 
	Miroslav Lichvar <mlichvar@redhat.com>, x86@kernel.org, linux-coco@lists.linux.dev, 
	kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
	virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, 
	xen-devel@lists.xenproject.org, Michael Kelley <mhklinux@outlook.com>, 
	Tom Lendacky <thomas.lendacky@amd.com>, Nikunj A Dadhania <nikunj@amd.com>, 
	Thomas Gleixner <tglx@linutronix.de>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-42698a/1793821073-2C39B9EA-02C00EFF/0/0
X-purgate-type: clean
X-purgate-size: 1892

On Thu, Sep 10, 2026, David Woodhouse wrote:
> On Thu, 2026-09-10 at 10:59 -0700, Sean Christopherson wrote:
> > On Thu, Aug 06, 2026, Sean Christopherson wrote:
> > > The primary goal of this series to fix flaws with SNP and TDX guests =
where a
> > > PV clock provided by the untrusted hypervisor is used instead of the =
secure
> > > TSC that is controlled by trusted firmware.
> > >=20
> > > The secondary goal is modernize running under KVM.=C2=A0 Currently, K=
VM guests will
> > > use TSC for clocksource, but not sched_clock.=C2=A0 And Linux-as-a-KV=
M-guest doesn't
> > > support paravirt enumeration of the TSC/APIC frequencies, even though=
 QEMU
> > > provides that information by default.
> > >=20
> > > The tertiary goal is to clean up the PV clock code to deduplicate log=
ic across
> > > hypervisors, and to hopefully make it all easier to maintain going fo=
rward.
> > >=20
> > > The quaternary goal is to clean up the TSC calibration code, which wa=
s made
> > > stupidly hard to follow by hypervisor code mixing in with the native
> > > calibration routines, instead of being implemented as a pure alternat=
ive.
> > >=20
> > > Note, the VMware and Xen changes still probably should get acks from =
those
> > > maintainers, as my understanding of what they're trying to do may be =
flawed.
> >=20
> > This (thankfully) still applies cleanly.=C2=A0 What can I do to help mo=
ve this forward?
>=20
> Nudge Thomas to spot that this is guest-side and we want him to pick it u=
p, I guess?

Amazingly, still applies cleanly on 7.4-rc1 and tip/master.  I know we're s=
hortly
after the merge window, but this has been sitting idle for months and addre=
sses
issues that are impacting a variety of end users.

Note, this also provides meaningful hardening for SNP and TDX.  /me stares =
intently
in the direction of Dave and Boris.


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472512.1680343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR7-0006zA-MI; Wed, 04 Nov 2026 20:18:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472512.1680343; Wed, 04 Nov 2026 20:18:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR7-0006yz-Iy; Wed, 04 Nov 2026 20:18:21 +0000
Received: by outflank-mailman (input) for mailman id 1472512;
 Wed, 04 Nov 2026 20:18:19 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhR5-0006yh-UR
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR5-00FaIj-BH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:19 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92e1-8faa-0a2a0a5109dd-0a2a450cab48-42
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:19 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930a-f479-0a2a450c0019-aa0a817c6587-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:19 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-q0c7-ZoyMI6eDXRYxmbnqg-1; Wed,
 04 Nov 2026 15:18:14 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 98ED8195605F; Wed,  4 Nov 2026 20:18:12 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id B7AFE1956089; Wed,  4 Nov 2026 20:18:11 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823497;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=VsdKm1LSZTE764H3BvnnumzwQKzcHlHW/sITvbevc3A=;
	b=M1YqrL6Zm1IANN3XUkYhlsHDqz/mQPknNzVZMZ89WTRiucbzohPdEMGz0ly5NtEn8v9ByY
	DE54brExUDzcq99pRBvmau8oMO+C50ZAazK5vO9Qp99HkXdKwSrcBxhWrdtKt6KG+2fGiC
	4FI0D1vZrrNzxKK793r/r2wsTTkKnFg=
X-MC-Unique: q0c7-ZoyMI6eDXRYxmbnqg-1
X-Mimecast-MFC-AGG-ID: q0c7-ZoyMI6eDXRYxmbnqg_1793823492
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL v2 04/25] hw/xen: replace "long unsigned int" with "unsigned long " for dtrace
Date: Wed,  4 Nov 2026 15:17:40 -0500
Message-ID: <20261104201802.11556-5-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: hNX9eAkhkXr6LnVRE9wFdEOvgkiyRCaKA4Qu23qsZmU_1793823492
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793823499-00ECAA5B-BC52033E/35/111497
X-purgate-type: clean
X-purgate-size: 1986

From: Daniel P. Berrangé <berrange@redhat.com>

dtrace (or at least systemtap's fake "dtrace" binary) doesn't like to
see "int" and "long" together in the typename, it just wants the
bare "long".

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-5-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/xen/trace-events | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index b67942d07b4..a31983ce1d3 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -57,8 +57,8 @@ cpu_ioreq_config_read(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uin
 cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
 cpu_get_ioreq_from_shared_memory_req_not_ready(int state, int data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O request not ready: 0x%x, ptr: 0x%x, port: 0x%"PRIx64", data: 0x%"PRIx64", count: %u, size: %u"
 xen_main_loop_prepare_init_cpu(int id, void *cpu) "cpu_by_vcpu_id[%d]=%p"
-xen_map_ioreq_server_shared_page(long unsigned int ioreq_pfn) "shared page at pfn 0x%lx"
-xen_map_ioreq_server_buffered_io_page(long unsigned int ioreq_pfn) "buffered io page at pfn 0x%lx"
+xen_map_ioreq_server_shared_page(unsigned long ioreq_pfn) "shared page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_page(unsigned long ioreq_pfn) "buffered io page at pfn 0x%lx"
 xen_map_ioreq_server_buffered_io_evtchn(int bufioreq_evtchn) "buffered io evtchn is 0x%x"
 destroy_hvm_domain_cannot_acquire_handle(void) "Cannot acquire xenctrl handle"
 destroy_hvm_domain_failed_action(const char *action, int sts, char *errno_s) "xc_domain_shutdown failed to issue %s, sts %d, %s"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472513.1680352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR9-0007Cl-TK; Wed, 04 Nov 2026 20:18:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472513.1680352; Wed, 04 Nov 2026 20:18:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR9-0007Cb-Pq; Wed, 04 Nov 2026 20:18:23 +0000
Received: by outflank-mailman (input) for mailman id 1472513;
 Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhR8-00078R-JE
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR2-00FVKT-W7
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:22 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92cc-bab6-0a2a0a5309dd-0a2a45019152-46
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:16 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9307-5984-0a2a45010019-aa0a817c4e33-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:16 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-655-JDL770NYNC2MMGl88jTgGA-1; Wed,
 04 Nov 2026 15:18:13 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id E645019560B2; Wed,  4 Nov 2026 20:18:10 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 32B22195604C; Wed,  4 Nov 2026 20:18:09 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823495;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=hPW7K8e9PhjSibqn/e/tSwEgnDdS9m32/bMUTsYxbh0=;
	b=aArUD6kG9uYUHU0Vj5Bg9vWYS6mzC6qDq/8WB38CB8W3EzGAR7v5xozKHwBKsqRjDCKQPk
	79Xla9eO3u3kij3TpuRE92GPMWNBm7/sIXSNc1UzGnNGDvMFb2w4b5a3Qumq+z4PapQEY2
	dpYCoS61p3+aDTuUtkBDJaL17F5jPm8=
X-MC-Unique: JDL770NYNC2MMGl88jTgGA-1
X-Mimecast-MFC-AGG-ID: JDL770NYNC2MMGl88jTgGA_1793823491
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 03/25] trace: fix handling of char** in UST backend
Date: Wed,  4 Nov 2026 15:17:39 -0500
Message-ID: <20261104201802.11556-4-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: T_U90vlWzc2-NbCjzfUq3xo_J-JVCzYMKM8CZGYox8M_1793823491
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793823496-BE867757-10741FBF/35/111497
X-purgate-type: clean
X-purgate-size: 1519

From: Daniel P. Berrangé <berrange@redhat.com>

The UST trace backend fails to compile on version 2.14.0, as we
pass a "char **" arg as to ctf_string(), which only expects 'char *'.
It should instead be treated the same way as generic pointers, and
emitted as hex.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-4-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/format/ust_events_h.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py
index cee7970a403..76c883bc5c0 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -72,7 +72,9 @@ def generate(events, backend, group):
             names = e.args.names()
             fmts = e.formats()
             for t,n,f in zip(types, names, fmts):
-                if ('char *' in t) or ('char*' in t):
+                if ('char **' in t) or ('char**' in t):
+                    out('       ctf_integer_hex(' + t + ', ' + n + ', ' + n + ')')
+                elif ('char *' in t) or ('char*' in t):
                     out('       ctf_string(' + n + ', ' + n + ')')
                 elif ("%p" in f) or ("x" in f) or ("PRIx" in f):
                     out('       ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')')
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472511.1680335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR3-0006l2-Fq; Wed, 04 Nov 2026 20:18:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472511.1680335; Wed, 04 Nov 2026 20:18:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhR3-0006kr-Ao; Wed, 04 Nov 2026 20:18:17 +0000
Received: by outflank-mailman (input) for mailman id 1472511;
 Wed, 04 Nov 2026 20:18:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhR2-0006kl-GI
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR1-00FVKT-TK
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:15 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92cc-bab6-0a2a0a5309dd-0a2a45019152-42
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:15 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9306-5984-0a2a45010019-aa0a817c8983-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:15 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-UbiHqfl6O8qu1UKLLUissw-1; Wed,
 04 Nov 2026 15:18:12 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 13EDA1955DD6; Wed,  4 Nov 2026 20:18:09 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 0186139206; Wed,  4 Nov 2026 20:18:07 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823493;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jKP5HFz810ebf9alfWmuhAqqhtocmxxt5vjo0KJQomg=;
	b=NtRPeRQGbAQIudRlFmTmh46UJ6Lz9EYgYUbWBgIhpYpC9Td/t77bRlYfJVRmSXmVT6exIO
	dJPGBDgFhL+6Vfj0+HWRJ0qfcTMXT7vJMlmH5NB4eG2OyrSAlfNWTwd+lBCUQkb5EshDmJ
	yW07FIUTZPpfEenQsv3xWXn4UyBtfN4=
X-MC-Unique: UbiHqfl6O8qu1UKLLUissw-1
X-Mimecast-MFC-AGG-ID: UbiHqfl6O8qu1UKLLUissw_1793823489
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 02/25] trace: use 'ignore_value()' instead of a dummy variable
Date: Wed,  4 Nov 2026 15:17:38 -0500
Message-ID: <20261104201802.11556-3-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: _KbILR3izsUpT4IbHrYUAjGQl6aVXuCmP9jWhRuq-cQ_1793823489
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793823495-BE664757-F6DAF0A9/35/111497
X-purgate-type: clean
X-purgate-size: 2669

From: Daniel P. Berrangé <berrange@redhat.com>

This pattern is more concise than using a dummy variable which
in turn needs annotating as unused.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-3-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/ftrace.c | 3 +--
 trace/simple.c | 9 ++++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/trace/ftrace.c b/trace/ftrace.c
index 6875faedb9c..c1ed6ad4454 100644
--- a/trace/ftrace.c
+++ b/trace/ftrace.c
@@ -41,7 +41,6 @@ static int find_mount(char *mount_point, const char *fstype)
 void ftrace_write(const char *fmt, ...)
 {
     char ftrace_buf[MAX_TRACE_STRLEN];
-    int unused __attribute__ ((unused));
     int trlen;
     va_list ap;
 
@@ -50,7 +49,7 @@ void ftrace_write(const char *fmt, ...)
     va_end(ap);
 
     trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
-    unused = write(trace_marker_fd, ftrace_buf, trlen);
+    ignore_value(write(trace_marker_fd, ftrace_buf, trlen));
 }
 
 bool ftrace_init(void)
diff --git a/trace/simple.c b/trace/simple.c
index c0aba00cb7f..e148ca44530 100644
--- a/trace/simple.c
+++ b/trace/simple.c
@@ -163,7 +163,6 @@ static gpointer writeout_thread(gpointer opaque)
     } dropped;
     unsigned int idx = 0;
     int dropped_count;
-    size_t unused __attribute__ ((unused));
     uint64_t type = TRACE_RECORD_TYPE_EVENT;
 
     for (;;) {
@@ -179,13 +178,13 @@ static gpointer writeout_thread(gpointer opaque)
             } while (!g_atomic_int_compare_and_exchange(&dropped_events,
                                                         dropped_count, 0));
             dropped.rec.arguments[0] = dropped_count;
-            unused = fwrite(&type, sizeof(type), 1, trace_fp);
-            unused = fwrite(&dropped.rec, dropped.rec.length, 1, trace_fp);
+            ignore_value(fwrite(&type, sizeof(type), 1, trace_fp));
+            ignore_value(fwrite(&dropped.rec, dropped.rec.length, 1, trace_fp));
         }
 
         while (get_trace_record(idx, &recordptr)) {
-            unused = fwrite(&type, sizeof(type), 1, trace_fp);
-            unused = fwrite(recordptr, recordptr->length, 1, trace_fp);
+            ignore_value(fwrite(&type, sizeof(type), 1, trace_fp));
+            ignore_value(fwrite(recordptr, recordptr->length, 1, trace_fp));
             writeout_idx += recordptr->length;
             free(recordptr); /* don't use g_free, can deadlock when traced */
             idx = writeout_idx % TRACE_BUF_LEN;
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472514.1680358 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRA-0007Fi-92; Wed, 04 Nov 2026 20:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472514.1680358; Wed, 04 Nov 2026 20:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRA-0007El-0T; Wed, 04 Nov 2026 20:18:24 +0000
Received: by outflank-mailman (input) for mailman id 1472514;
 Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhR8-0007AC-Ns
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR8-00FVOo-3Q
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:22 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92f2-bab6-0a2a0a5309dd-0a2a45029e7a-26
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:22 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930b-6ca4-0a2a45020019-aa0a857cb3ab-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:20 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-444-Saaa4D5FPI6OohZgO6qhLQ-1; Wed,
 04 Nov 2026 15:18:16 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 07399180059D; Wed,  4 Nov 2026 20:18:07 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 1D6A5195604E; Wed,  4 Nov 2026 20:18:05 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823499;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=TqkKXu2f79+4gbliMkvun6ZA/q+B5xT3gEohpgAcSnM=;
	b=M+BTIXjmFCKYbfi4/cUOI0p3p5YdORd8tOlUy9cNVMdxVf1mXPCvb3ZvJ8dgDsDWxUeQqa
	+BYi3j+TcKboSoYEMDe1hD/501+YBdmXyt69DiPp0od8R9zL7QPMp38ihgdnb7YAkJPVri
	CwiWfEzz4sL/0nLH53g1ydTx5vHbeMo=
X-MC-Unique: Saaa4D5FPI6OohZgO6qhLQ-1
X-Mimecast-MFC-AGG-ID: Saaa4D5FPI6OohZgO6qhLQ_1793823487
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 01/25] osdep: add 'ignore_value(x)' macro
Date: Wed,  4 Nov 2026 15:17:37 -0500
Message-ID: <20261104201802.11556-2-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: djIbAbOIj9JWaQFMUGCl6wej_c-6GcysoPrp4ZMXLjA_1793823487
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793823500-F26B72AC-F8AF51CE/35/111497
X-purgate-type: clean
X-purgate-size: 1574

From: Daniel P. Berrangé <berrange@redhat.com>

Functions annotated with 'warn_unused_result' cannot be cast
to (void) to silence the compiler. Add the ignore_value()
macro which tricks the compiler into thinking the result is
genuinely used, avoiding the need for manual workarounds where
the return value is intentionally ignored.

This clever macro is derived from one originating with the
GNULIB project:

  https://gitweb.git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/ignore-value.h;hb=HEAD

but simplified since we don't need compat with old GCC and
optimizing on clang is overkill.

Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-2-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/qemu/osdep.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 50c7ce33b6a..b27d159d5bb 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -251,6 +251,14 @@ extern "C" {
 #endif
 
 
+/*
+ * Merely casting to (void) is not sufficient for functions
+ * annotated with the "warn_unused_result" attribute
+ */
+#define ignore_value(x) \
+    (__extension__ ({ __typeof__(x) __x = (x); (void) __x; }))
+
+
 /*
  * For mingw, as of v6.0.0, the function implementing the assert macro is
  * not marked as noreturn, so the compiler cannot delete code following an
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472515.1680363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRA-0007Gz-HI; Wed, 04 Nov 2026 20:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472515.1680363; Wed, 04 Nov 2026 20:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRA-0007GT-6N; Wed, 04 Nov 2026 20:18:24 +0000
Received: by outflank-mailman (input) for mailman id 1472515;
 Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhR8-00079R-L8
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR8-007PCO-28
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:22 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92ed-e002-0a2a0a5209dd-0a2a450b9f1c-24
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:21 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9307-b7e8-0a2a450b0019-aa0a857c7e69-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:16 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-596-NR1f4T1OPZWxkvYgafSrRg-1; Wed,
 04 Nov 2026 15:18:11 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 03BBB18002EC; Wed,  4 Nov 2026 20:18:05 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 80FA11848D42; Wed,  4 Nov 2026 20:18:03 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823495;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=7D6FRaI17g5La1VKpEb91sSZYaYl9ZQWL6H1VMc1WdA=;
	b=cS/0A9lG2ptb6PUUHTH+fNdxElI2kiN9Dk5BJRKC22ZjVT6nYVEdIhMkAbLC18vGMa7QF+
	dG6yKKzyQun0qAhPTS7PF8hGjJPyxgSXC0coxNBuWvXJeXtdrLiunCexiICem/GDGI7eog
	05IkC+UHfdoV88XtvyVH2sutZNvn12g=
X-MC-Unique: NR1f4T1OPZWxkvYgafSrRg-1
X-Mimecast-MFC-AGG-ID: NR1f4T1OPZWxkvYgafSrRg_1793823485
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>
Subject: [PULL v2 00/25] Tracing patches
Date: Wed,  4 Nov 2026 15:17:36 -0500
Message-ID: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: ql7ZPWMpoqEobV69gI5aWH8fLMFwUL8NlzSFvKbhuro_1793823485
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793823501-1B6D29EA-D774183E/35/111497
X-purgate-type: clean
X-purgate-size: 6550

The following changes since commit f29ccc287a6cfdd51d3a4fd17fbe9af3310a0ac5:

  Merge tag 'pull-11.2-misc-fixes-031126-1' of https://gitlab.com/stsquad/qemu into staging (2026-11-03 14:44:10 -0800)

are available in the Git repository at:

  https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request

for you to fetch changes up to ddfa19c50616657cda4476260ce300c9463b09d3:

  trace: remove 'trace_event_get_state' wrapper (2026-11-04 13:19:12 -0500)

----------------------------------------------------------------
Pull request

v2:
- Update "trace: include qemu_loglevel_mask(LOG_TRACE) in guard" so the Rust build succeeds [Daniel]

----------------------------------------------------------------

Daniel P. Berrangé (25):
  osdep: add 'ignore_value(x)' macro
  trace: use 'ignore_value()' instead of a dummy variable
  trace: fix handling of char** in UST backend
  hw/xen: replace "long unsigned int" with "unsigned long " for dtrace
  trace: block use of "long int" for dtrace
  trace: drop unused trace_event_set_state_dynamic_init()
  trace: remove obsolete references to vcpu property
  trace: drop 'id' from TraceEvent struct when not required
  trace: change "DSTATE" variables from uint16_t to uint8_t
  trace: add testing of 'nop' trace backend
  trace: don't emit TraceEvent structs when 'nop' backend is used
  trace: add test of generation with all backends enabled
  trace: remove redundant headers from simple trace backend code
  trace: include probe name in Rust format strings
  trace: add missing newline in ftrace Rust format string
  trace: eliminate dupe trace_event_get_state_dynamic_by_id() calls
  audio: remove mistaken use of trace_event_get_state()
  hw/ppc: remove mistaken use of trace_event_get_state()
  monitor: remove mistaken use of trace_event_get_state()
  trace: include qemu_loglevel_mask(LOG_TRACE) in guard
  target/hppa: use PRIx64 in trace-events
  trace: remove "disable" property from trace files
  trace: stop tracking static disabled state
  trace: remove parsing of "disable" event property
  trace: remove 'trace_event_get_state' wrapper

 docs/devel/tracing.rst                       |  27 +----
 qapi/trace.json                              |   5 +-
 include/qemu/osdep.h                         |   8 ++
 tests/tracetool/all.h                        | 100 +++++++++++++++++++
 tests/tracetool/dtrace.h                     |   6 +-
 tests/tracetool/ftrace.h                     |  14 ++-
 tests/tracetool/log.h                        |  26 +++--
 tests/tracetool/nop.h                        |  25 +++++
 tests/tracetool/simple.h                     |  10 +-
 tests/tracetool/syslog.h                     |  14 ++-
 tests/tracetool/ust.h                        |   6 +-
 trace/control-internal.h                     |   8 +-
 trace/control.h                              |  49 +--------
 trace/event-internal.h                       |  19 +---
 audio/audio-mixeng-be.c                      |   2 +-
 hw/ppc/vof.c                                 |  13 +--
 monitor/qmp.c                                |   4 +-
 stubs/trace-control.c                        |   6 --
 tests/tracetool/all.c                        |  61 +++++++++++
 tests/tracetool/dtrace.c                     |  10 +-
 tests/tracetool/ftrace.c                     |  10 +-
 tests/tracetool/log.c                        |  10 +-
 tests/tracetool/nop.c                        |   7 ++
 tests/tracetool/simple.c                     |  12 +--
 tests/tracetool/syslog.c                     |  10 +-
 tests/tracetool/ust.c                        |  10 +-
 trace/control-target.c                       |  29 ------
 trace/control.c                              |  19 +---
 trace/ftrace.c                               |   3 +-
 trace/qmp.c                                  |  47 +++------
 trace/simple.c                               |   9 +-
 hw/display/trace-events                      |   2 +-
 hw/xen/trace-events                          |   4 +-
 scripts/tracetool/__init__.py                |  32 ++----
 scripts/tracetool/backend/__init__.py        |   7 +-
 scripts/tracetool/backend/dtrace.py          |   2 -
 scripts/tracetool/backend/ftrace.py          |   8 +-
 scripts/tracetool/backend/log.py             |  22 ++--
 scripts/tracetool/backend/simple.py          |   9 +-
 scripts/tracetool/backend/syslog.py          |   6 +-
 scripts/tracetool/format/c.py                |  68 ++++++-------
 scripts/tracetool/format/d.py                |   3 -
 scripts/tracetool/format/h.py                |  48 ++++-----
 scripts/tracetool/format/log_stap.py         |   3 -
 scripts/tracetool/format/rs.py               |  30 +++---
 scripts/tracetool/format/simpletrace_stap.py |   3 -
 scripts/tracetool/format/stap.py             |   3 -
 scripts/tracetool/format/ust_events_c.py     |   3 -
 scripts/tracetool/format/ust_events_h.py     |   7 +-
 target/hppa/trace-events                     |  28 +++---
 tests/tracetool/all.d                        |  10 ++
 tests/tracetool/all.log-stap                 |  15 +++
 tests/tracetool/all.rs                       |  98 ++++++++++++++++++
 tests/tracetool/all.simpletrace-stap         |  16 +++
 tests/tracetool/all.stap                     |  14 +++
 tests/tracetool/all.ust-events-c             |  14 +++
 tests/tracetool/all.ust-events-h             |  56 +++++++++++
 tests/tracetool/dtrace.rs                    |   6 +-
 tests/tracetool/ftrace.rs                    |  10 +-
 tests/tracetool/log.rs                       |  12 ++-
 tests/tracetool/meson.build                  |   4 +-
 tests/tracetool/nop.rs                       |  51 ++++++++++
 tests/tracetool/simple.rs                    |   6 +-
 tests/tracetool/syslog.rs                    |  10 +-
 tests/tracetool/tracetool-test.py            |  12 ++-
 65 files changed, 747 insertions(+), 454 deletions(-)
 create mode 100644 tests/tracetool/all.h
 create mode 100644 tests/tracetool/nop.h
 create mode 100644 tests/tracetool/all.c
 create mode 100644 tests/tracetool/nop.c
 create mode 100644 tests/tracetool/all.d
 create mode 100644 tests/tracetool/all.log-stap
 create mode 100644 tests/tracetool/all.rs
 create mode 100644 tests/tracetool/all.simpletrace-stap
 create mode 100644 tests/tracetool/all.stap
 create mode 100644 tests/tracetool/all.ust-events-c
 create mode 100644 tests/tracetool/all.ust-events-h
 create mode 100644 tests/tracetool/nop.rs

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472516.1680379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRB-0007og-UD; Wed, 04 Nov 2026 20:18:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472516.1680379; Wed, 04 Nov 2026 20:18:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRB-0007nD-OD; Wed, 04 Nov 2026 20:18:25 +0000
Received: by outflank-mailman (input) for mailman id 1472516;
 Wed, 04 Nov 2026 20:18:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRA-0007GN-Co
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR9-00FVOo-Pb
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:23 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930e-bab6-0a2a0a5309dd-0a2a4501af60-6
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:23 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930e-5984-0a2a45010019-aa0a857cd18b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:23 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-84-QalMV7oEOzeCMKM3d8bdqg-1; Wed,
 04 Nov 2026 15:18:18 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id D5B5D195609D; Wed,  4 Nov 2026 20:18:15 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 36D281956089; Wed,  4 Nov 2026 20:18:15 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823502;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=8UH5nYrF7hB5atKv+0kCjyLnZFXkjL/Cltw+H/p8G/s=;
	b=C+4TKrkQjp85hBKO/8387ujrynR58YEYatQZmQI88+3ZQKdJvoJln7OcH2/GnN/a4ZZIgO
	x7uN6rCqxoxX28uQ4hhvG+GW52eooVvolCl9SWw5oavn1G4fZlOqib1oiK7UQuliSB9Wch
	Cwv+W3JheLElsHHD8aaQ3b9qyYQCWAM=
X-MC-Unique: QalMV7oEOzeCMKM3d8bdqg-1
X-Mimecast-MFC-AGG-ID: QalMV7oEOzeCMKM3d8bdqg_1793823496
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 06/25] trace: drop unused trace_event_set_state_dynamic_init()
Date: Wed,  4 Nov 2026 15:17:42 -0500
Message-ID: <20261104201802.11556-7-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: Ikgqgbf0-ca2nAZrgR23FoBVEhXw90OCwKdQVVRyp8Q_1793823496
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793823503-1F86F757-4F664800/35/111497
X-purgate-type: clean
X-purgate-size: 2438

From: Daniel P. Berrangé <berrange@redhat.com>

The use of this method was mistakenly dropped in 0d4e995c73.
When the 'vcpu' property was dropped, however, this became
functionally identical to trace_event_set_state_dynamic().

Fixes: 0d4e995c7368 ("trace: convert code to use event iterators")
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-7-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/event-internal.h |  2 --
 stubs/trace-control.c  |  5 -----
 trace/control-target.c | 21 ---------------------
 3 files changed, 28 deletions(-)

diff --git a/trace/event-internal.h b/trace/event-internal.h
index 0c24e01b521..1d57b0ff1b5 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -37,6 +37,4 @@ typedef struct TraceEvent {
     uint16_t *dstate;
 } TraceEvent;
 
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state);
-
 #endif /* TRACE__EVENT_INTERNAL_H */
diff --git a/stubs/trace-control.c b/stubs/trace-control.c
index b428f34c878..3f196835db0 100644
--- a/stubs/trace-control.c
+++ b/stubs/trace-control.c
@@ -11,11 +11,6 @@
 #include "trace/control.h"
 
 
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
-{
-    trace_event_set_state_dynamic(ev, state);
-}
-
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     bool state_pre;
diff --git a/trace/control-target.c b/trace/control-target.c
index 57ceac21084..24d9b7abbde 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -10,27 +10,6 @@
 #include "qemu/osdep.h"
 #include "trace/control.h"
 
-
-void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
-{
-    bool state_pre;
-    assert(trace_event_get_state_static(ev));
-    /*
-     * We ignore the "vcpu" property here, since no vCPUs have been created
-     * yet. Then dstate can only be 1 or 0.
-     */
-    state_pre = *ev->dstate;
-    if (state_pre != state) {
-        if (state) {
-            trace_events_enabled_count++;
-            *ev->dstate = 1;
-        } else {
-            trace_events_enabled_count--;
-            *ev->dstate = 0;
-        }
-    }
-}
-
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     assert(trace_event_get_state_static(ev));
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472517.1680384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRC-0007uP-95; Wed, 04 Nov 2026 20:18:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472517.1680384; Wed, 04 Nov 2026 20:18:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRC-0007tB-28; Wed, 04 Nov 2026 20:18:26 +0000
Received: by outflank-mailman (input) for mailman id 1472517;
 Wed, 04 Nov 2026 20:18:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRA-0007O9-SN
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRA-007PCO-94
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:24 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92f6-e002-0a2a0a5209dd-0a2a4509bbbc-44
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:24 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930f-be1a-0a2a45090019-aa0a857ce6fb-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:24 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-94-mjBi57jdNC6N6sRwpfIbiA-1; Wed,
 04 Nov 2026 15:18:19 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 63BDD1800542; Wed,  4 Nov 2026 20:18:17 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id CE7E8301D916; Wed,  4 Nov 2026 20:18:16 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823503;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=s2fQy26Nzh4pevOCqiRqluICNBTrWSgxg/L8ugtFtns=;
	b=DkZlVMzT8xvU4Ak5SavTGHhHNw1gXHxOA6p9+JQiKGH55awodDEQpPtyVEuP9baCB5wrWh
	BT7NSDMUAcPULIN0cQtzqcWgiIsWANkK6ZNE8i/F6KHnFztR9ma/FBv4SyorEcik2K6AUi
	9N4aLnGM91v1v6nLQ11XV6Ro9KeYrBw=
X-MC-Unique: mjBi57jdNC6N6sRwpfIbiA-1
X-Mimecast-MFC-AGG-ID: mjBi57jdNC6N6sRwpfIbiA_1793823497
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL v2 07/25] trace: remove obsolete references to vcpu property
Date: Wed,  4 Nov 2026 15:17:43 -0500
Message-ID: <20261104201802.11556-8-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: wQCs9WlhuiLLZJEe648mq-LKD63sc5iiQ_lk14WmhtY_1793823497
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793823504-FC817034-7B5B5309/35/111497
X-purgate-type: clean
X-purgate-size: 4069

From: Daniel P. Berrangé <berrange@redhat.com>

The 'vcpu' property for trace events was removed 2 years ago
but some mentions of it remain in the code.

Fixes: 7ffc4894a63b ("trace: Remove deprecated 'vcpu' field from QMP trace events")
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-8-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/control.h        | 12 ------------
 trace/event-internal.h | 11 -----------
 trace/control-target.c |  6 ------
 trace/control.c        |  6 ------
 4 files changed, 35 deletions(-)

diff --git a/trace/control.h b/trace/control.h
index 6754bfe052b..20033fb6669 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -139,8 +139,6 @@ static bool trace_event_get_state_static(TraceEvent *ev);
  * trace_event_get_state_dynamic:
  *
  * Get the dynamic tracing state of an event.
- *
- * If the event has the 'vcpu' property, gets the OR'ed state of all vCPUs.
  */
 static bool trace_event_get_state_dynamic(TraceEvent *ev);
 
@@ -149,8 +147,6 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
  *
  * Set the dynamic tracing state of an event.
  *
- * If the event has the 'vcpu' property, sets the state on all vCPUs.
- *
  * Pre-condition: trace_event_get_state_static(ev) == true
  */
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
@@ -203,14 +199,6 @@ extern QemuOptsList qemu_trace_opts;
  */
 void trace_opt_parse(const char *optstr);
 
-/**
- * trace_get_vcpu_event_count:
- *
- * Return the number of known vcpu-specific events
- */
-uint32_t trace_get_vcpu_event_count(void);
-
-
 #include "control-internal.h"
 
 #endif /* TRACE__CONTROL_H */
diff --git a/trace/event-internal.h b/trace/event-internal.h
index 1d57b0ff1b5..cc095a6ad54 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -10,12 +10,6 @@
 #ifndef TRACE__EVENT_INTERNAL_H
 #define TRACE__EVENT_INTERNAL_H
 
-/*
- * Special value for TraceEvent.vcpu_id field to indicate
- * that the event is not VCPU specific
- */
-#define TRACE_VCPU_EVENT_NONE ((uint32_t)-1)
-
 /**
  * TraceEvent:
  * @id: Unique event identifier.
@@ -23,11 +17,6 @@
  * @sstate: Static tracing state.
  * @dstate: Dynamic tracing state
  *
- * Interpretation of @dstate depends on whether the event has the 'vcpu'
- *  property:
- * - false: Boolean value indicating whether the event is active.
- * - true : Integral counting the number of vCPUs that have this event enabled.
- *
  * Opaque generic description of a tracing event.
  */
 typedef struct TraceEvent {
diff --git a/trace/control-target.c b/trace/control-target.c
index 24d9b7abbde..87b0f5037df 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -14,12 +14,6 @@ void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     assert(trace_event_get_state_static(ev));
 
-    /*
-     * There is no longer a "vcpu" property, dstate can only be 1 or
-     * 0. With it, we haven't instantiated any vCPU yet, so we will
-     * set a global state instead, and trace_init_vcpu will reconcile
-     * it afterwards.
-     */
     bool state_pre = *ev->dstate;
     if (state_pre != state) {
         if (state) {
diff --git a/trace/control.c b/trace/control.c
index 49f0a4c5cda..6971157cbe7 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -37,7 +37,6 @@ typedef struct TraceEventGroup {
 static TraceEventGroup *event_groups;
 static size_t nevent_groups;
 static uint32_t next_id;
-static uint32_t next_vcpu_id;
 #ifdef CONFIG_TRACE_SIMPLE
 static bool init_trace_on_startup;
 #endif
@@ -304,8 +303,3 @@ void trace_opt_parse(const char *optstr)
     trace_opts_file = g_strdup(qemu_opt_get(opts, "file"));
     qemu_opts_del(opts);
 }
-
-uint32_t trace_get_vcpu_event_count(void)
-{
-    return next_vcpu_id;
-}
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472520.1680397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRF-0008O5-HS; Wed, 04 Nov 2026 20:18:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472520.1680397; Wed, 04 Nov 2026 20:18:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRF-0008Nt-Cz; Wed, 04 Nov 2026 20:18:29 +0000
Received: by outflank-mailman (input) for mailman id 1472520;
 Wed, 04 Nov 2026 20:18:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRD-0008Bp-BJ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhR7-007PCO-OL
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:21 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92ed-e002-0a2a0a5209dd-0a2a450b9f1c-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:21 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930c-b7e8-0a2a450b0019-aa0a817ccaf9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:21 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-629-i7IYKqUFNF-_rcqAOOI-mw-1; Wed,
 04 Nov 2026 15:18:16 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 4904F1955D57; Wed,  4 Nov 2026 20:18:14 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 6B5FF301D919; Wed,  4 Nov 2026 20:18:13 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823500;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=5CRUR1O7jhB6e7y26qawG8i1UCupwuJ1vSueU290k1s=;
	b=aKEEuN3RbZ5Fc5ujPBoN+gMUdMRjsz94HUfESHOvBUjI7o/s+c0AMxsHVX+dCNzyvMzv1i
	9coO858yLelD9y0+gJj1lm1DykvgermHf2A8lxDgQHEwR/HD1c1GWqr1VIPIr9mzuB1Aj1
	aHK8qpgNNImBH1wZXEhjzXE+JV2sdys=
X-MC-Unique: i7IYKqUFNF-_rcqAOOI-mw-1
X-Mimecast-MFC-AGG-ID: i7IYKqUFNF-_rcqAOOI-mw_1793823494
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 05/25] trace: block use of "long int" for dtrace
Date: Wed,  4 Nov 2026 15:17:41 -0500
Message-ID: <20261104201802.11556-6-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: jOeIcrhhqdAGbFh3xL55GZZoLD4vtSwx61M9KkBPrGw_1793823494
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793823501-AAEDE9EA-D4568A38/35/111497
X-purgate-type: clean
X-purgate-size: 1132

From: Daniel P. Berrangé <berrange@redhat.com>

dtrace (or at least systemtap's fake "dtrace" binary) complains about a
syntax error due to use of "long int", as it wants a bare "long" type
Enforce this when parsing the trace-events files.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-6-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/__init__.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 61ba6f1ba8c..6ed7cdd6ce4 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -177,6 +177,11 @@ def out(*lines, **kwargs):
 
 def validate_type(name):
     bits = name.split(" ")
+
+    if "long" in bits and "int" in bits:
+        raise ValueError("Invalid use of 'int' typename in %s, "
+                         "use 'long' alone" % name)
+
     for bit in bits:
         bit = re.sub(r"\*", "", bit)
         if bit == "":
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472521.1680401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRF-0008RE-Ux; Wed, 04 Nov 2026 20:18:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472521.1680401; Wed, 04 Nov 2026 20:18:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRF-0008Pz-Nq; Wed, 04 Nov 2026 20:18:29 +0000
Received: by outflank-mailman (input) for mailman id 1472521;
 Wed, 04 Nov 2026 20:18:27 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRD-0008Is-QG
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRD-00BuCu-7K
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:27 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:27 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9311-f2d2-0a2a450a0019-aa0a817cddd5-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:27 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-399-h-2ICopVPpm5iXv0ERIT1A-1; Wed,
 04 Nov 2026 15:18:20 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id BC28818003FD; Wed,  4 Nov 2026 20:18:18 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 66A0F26C; Wed,  4 Nov 2026 20:18:18 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823505;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=1+Fb/pNuDVJKjUmAlJEVqK84jM77qkTAumiP1SiO8JU=;
	b=DRENEx/2pmI70rkqwflSY87z7ZvWlmReXZeIhEAcaHaK1IRWMDIa+a7b3DazBlirDRS/uw
	dDp7mXhFG+hosjeg/cKrCy1DhjLCS3zllHKp1ZjJ6ATVoLL42cCK6sKY3gjfFwE/sJ2062
	gEF/RsYLZCgAqkB3b6nyrEtO15FCOaM=
X-MC-Unique: h-2ICopVPpm5iXv0ERIT1A-1
X-Mimecast-MFC-AGG-ID: h-2ICopVPpm5iXv0ERIT1A_1793823499
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 08/25] trace: drop 'id' from TraceEvent struct when not required
Date: Wed,  4 Nov 2026 15:17:44 -0500
Message-ID: <20261104201802.11556-9-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: _Mj7Yljal7Dx5mIS5YZoK_ldI0DY9LqjqSZqNvq2NUw_1793823499
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823507-595C3CFC-FC3E2BE1/35/111497
X-purgate-type: clean
X-purgate-size: 7751

From: Daniel P. Berrangé <berrange@redhat.com>

Only "simpletrace" uses the "id" field from the TraceEvent struct.
Omit it when this backend is not enabled to save memory.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-9-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 trace/control-internal.h      | 2 ++
 trace/control.h               | 3 ++-
 trace/event-internal.h        | 2 ++
 tests/tracetool/dtrace.c      | 4 ++++
 tests/tracetool/ftrace.c      | 4 ++++
 tests/tracetool/log.c         | 4 ++++
 tests/tracetool/simple.c      | 4 ++++
 tests/tracetool/syslog.c      | 4 ++++
 tests/tracetool/ust.c         | 4 ++++
 trace/control.c               | 4 +++-
 scripts/tracetool/format/c.py | 2 ++
 11 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/trace/control-internal.h b/trace/control-internal.h
index 8d818d359be..f626b047264 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -19,11 +19,13 @@ static inline bool trace_event_is_pattern(const char *str)
     return strchr(str, '*') != NULL;
 }
 
+#ifdef CONFIG_TRACE_SIMPLE
 static inline uint32_t trace_event_get_id(TraceEvent *ev)
 {
     assert(ev != NULL);
     return ev->id;
 }
+#endif
 
 static inline const char * trace_event_get_name(TraceEvent *ev)
 {
diff --git a/trace/control.h b/trace/control.h
index 20033fb6669..e77c07a8e68 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -81,13 +81,14 @@ TraceEvent *trace_event_name(const char *name);
  */
 static bool trace_event_is_pattern(const char *str);
 
-
+#ifdef CONFIG_TRACE_SIMPLE
 /**
  * trace_event_get_id:
  *
  * Get the identifier of an event.
  */
 static uint32_t trace_event_get_id(TraceEvent *ev);
+#endif
 
 /**
  * trace_event_get_name:
diff --git a/trace/event-internal.h b/trace/event-internal.h
index cc095a6ad54..ecf2caabd03 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -20,7 +20,9 @@
  * Opaque generic description of a tracing event.
  */
 typedef struct TraceEvent {
+#ifdef CONFIG_TRACE_SIMPLE
     uint32_t id;
+#endif
     const char * name;
     const bool sstate;
     uint16_t *dstate;
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 0484177481c..490d6f379a5 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index 9f862fa14d2..05a93918240 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -8,13 +8,17 @@
 uint16_t _TRACE_TEST_BLAH_DSTATE;
 uint16_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_blah",
     .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
+#endif
     .name = "test_wibble",
     .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
diff --git a/trace/control.c b/trace/control.c
index 6971157cbe7..947b220056a 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -36,8 +36,8 @@ typedef struct TraceEventGroup {
 
 static TraceEventGroup *event_groups;
 static size_t nevent_groups;
-static uint32_t next_id;
 #ifdef CONFIG_TRACE_SIMPLE
+static uint32_t next_id;
 static bool init_trace_on_startup;
 #endif
 static char *trace_opts_file;
@@ -65,10 +65,12 @@ QemuOptsList qemu_trace_opts = {
 
 void trace_event_register_group(TraceEvent **events)
 {
+#ifdef CONFIG_TRACE_SIMPLE
     size_t i;
     for (i = 0; events[i] != NULL; i++) {
         events[i]->id = next_id++;
     }
+#endif
     event_groups = g_renew(TraceEventGroup, event_groups, nevent_groups + 1);
     event_groups[nevent_groups].events = events;
     nevent_groups++;
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 50e03313cbf..abe738ac423 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -34,7 +34,9 @@ def generate(events, backend, group):
 
     for e in events:
         out('TraceEvent %(event)s = {',
+            '#ifdef CONFIG_TRACE_SIMPLE',
             '    .id = 0,',
+            '#endif',
             '    .name = \"%(name)s\",',
             '    .sstate = %(sstate)s,',
             '    .dstate = &%(dstate)s',
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472522.1680408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRG-0008VZ-HT; Wed, 04 Nov 2026 20:18:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472522.1680408; Wed, 04 Nov 2026 20:18:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRG-0008UX-5Q; Wed, 04 Nov 2026 20:18:30 +0000
Received: by outflank-mailman (input) for mailman id 1472522;
 Wed, 04 Nov 2026 20:18:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRE-0008L4-5l
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRD-007PCO-J9
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:27 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9312-e002-0a2a0a5209dd-0a2a450997ac-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:27 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9312-be1a-0a2a45090019-aa0a817c5105-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:27 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-211-O9dhJazzNeeykFcfvJtPlA-1; Wed,
 04 Nov 2026 15:18:22 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5A91219560B2; Wed,  4 Nov 2026 20:18:20 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id CE1A4195604C; Wed,  4 Nov 2026 20:18:19 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823505;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DFGAhqQ+xaxqaeHjSPXfZYHtf1rW7LNoujQ+nr96Ekg=;
	b=Ej7nom9dH3aY91VeyU5MoAyi3xVXbXxXsAqTkX5nB7BTU/93H6bgGjx1Xmns9/pQoTeisc
	zuuRA+SMtFB6UZBFUSnxpxQl+NAYiO/IeHQi+b4w7leppCP/eoyCAgdhxAqaBVclwcFjpN
	bD1o2sfMFR1JOCcOOrfBhhM1023B5Sc=
X-MC-Unique: O9dhJazzNeeykFcfvJtPlA-1
X-Mimecast-MFC-AGG-ID: O9dhJazzNeeykFcfvJtPlA_1793823500
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 09/25] trace: change "DSTATE" variables from uint16_t to uint8_t
Date: Wed,  4 Nov 2026 15:17:45 -0500
Message-ID: <20261104201802.11556-10-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: SCr4T_OPOhU8n5gGfgOSrSBulP9CaKOsVpXUByFZNQ4_1793823500
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793823507-3B6D2034-A49F11F8/35/111497
X-purgate-type: clean
X-purgate-size: 13802

From: Daniel P. Berrangé <berrange@redhat.com>

Previously these variables had two distinct semantics. For
most probes DSTATE was treated as a simple boolean, while
for vcpu probes it was treated as a bitmask of vCPU indexes.

With vcpu probes removed, it is now exclusively a boolean
and thus using uint16_t is a waste of memory.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-10-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/dtrace.h       | 4 ++--
 tests/tracetool/ftrace.h       | 4 ++--
 tests/tracetool/log.h          | 4 ++--
 tests/tracetool/simple.h       | 4 ++--
 tests/tracetool/syslog.h       | 4 ++--
 tests/tracetool/ust.h          | 4 ++--
 trace/event-internal.h         | 2 +-
 tests/tracetool/dtrace.c       | 4 ++--
 tests/tracetool/ftrace.c       | 4 ++--
 tests/tracetool/log.c          | 4 ++--
 tests/tracetool/simple.c       | 4 ++--
 tests/tracetool/syslog.c       | 4 ++--
 tests/tracetool/ust.c          | 4 ++--
 scripts/tracetool/format/c.py  | 2 +-
 scripts/tracetool/format/h.py  | 2 +-
 scripts/tracetool/format/rs.py | 4 ++--
 tests/tracetool/dtrace.rs      | 6 +++---
 tests/tracetool/ftrace.rs      | 6 +++---
 tests/tracetool/log.rs         | 6 +++---
 tests/tracetool/simple.rs      | 6 +++---
 tests/tracetool/syslog.rs      | 6 +++---
 21 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/tests/tracetool/dtrace.h b/tests/tracetool/dtrace.h
index c8931a8d7b3..0b5b47089e8 100644
--- a/tests/tracetool/dtrace.h
+++ b/tests/tracetool/dtrace.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index 1dfe4239413..b34eef17d10 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include "trace/ftrace.h"
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index c7795871f85..ff510d54908 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include "qemu/log-for-trace.h"
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index ec6fcb22c3c..735cb21d911 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 void _simple_trace_test_blah(void *context, const char *filename);
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index ed4305554c1..4203b8b37dc 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include <syslog.h>
diff --git a/tests/tracetool/ust.h b/tests/tracetool/ust.h
index b7acd0c39b1..079b2c74491 100644
--- a/tests/tracetool/ust.h
+++ b/tests/tracetool/ust.h
@@ -8,8 +8,8 @@
 
 extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint16_t _TRACE_TEST_BLAH_DSTATE;
-extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 #include <lttng/tracepoint.h>
diff --git a/trace/event-internal.h b/trace/event-internal.h
index ecf2caabd03..ad1578aa2c5 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -25,7 +25,7 @@ typedef struct TraceEvent {
 #endif
     const char * name;
     const bool sstate;
-    uint16_t *dstate;
+    uint8_t *dstate;
 } TraceEvent;
 
 #endif /* TRACE__EVENT_INTERNAL_H */
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 490d6f379a5..820ddb575b0 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index 05a93918240..f83d06252ea 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -5,8 +5,8 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint16_t _TRACE_TEST_BLAH_DSTATE;
-uint16_t _TRACE_TEST_WIBBLE_DSTATE;
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 TraceEvent _TRACE_TEST_BLAH_EVENT = {
 #ifdef CONFIG_TRACE_SIMPLE
     .id = 0,
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index abe738ac423..de1c154a881 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -30,7 +30,7 @@ def generate(events, backend, group):
         '')
 
     for e in events:
-        out('uint16_t %s;' % e.api(e.QEMU_DSTATE))
+        out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
     for e in events:
         out('TraceEvent %(event)s = {',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index dd58713a158..4dc1ad7eb15 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -32,7 +32,7 @@ def generate(events, backend, group):
             event = e.api(e.QEMU_EVENT))
 
     for e in events:
-        out('extern uint16_t %s;' % e.api(e.QEMU_DSTATE))
+        out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
     # static state
     for e in events:
diff --git a/scripts/tracetool/format/rs.py b/scripts/tracetool/format/rs.py
index 7d9af7edfee..1fddcee1ad2 100644
--- a/scripts/tracetool/format/rs.py
+++ b/scripts/tracetool/format/rs.py
@@ -26,7 +26,7 @@ def generate(events, backend, group):
         '',
         '#[allow(dead_code)]',
         '#[inline(always)]',
-        'fn trace_event_state_is_enabled(dstate: u16) -> bool {',
+        'fn trace_event_state_is_enabled(dstate: u8) -> bool {',
         '    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0',
         '}',
         '',
@@ -39,7 +39,7 @@ def generate(events, backend, group):
 
     for e in events:
         out('    #[allow(dead_code)]',
-            '    static mut %s: u16;' % e.api(e.QEMU_DSTATE))
+            '    static mut %s: u8;' % e.api(e.QEMU_DSTATE))
     out('}',
         '')
 
diff --git a/tests/tracetool/dtrace.rs b/tests/tracetool/dtrace.rs
index 3490fcb271a..07398f4731b 100644
--- a/tests/tracetool/dtrace.rs
+++ b/tests/tracetool/dtrace.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 use std::cell::UnsafeCell;
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index 34f66004902..ff0bcde4b8b 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/log.rs b/tests/tracetool/log.rs
index 770758611d1..0f052bb2c9c 100644
--- a/tests/tracetool/log.rs
+++ b/tests/tracetool/log.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/simple.rs b/tests/tracetool/simple.rs
index 92f896ef178..976feddde5b 100644
--- a/tests/tracetool/simple.rs
+++ b/tests/tracetool/simple.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
diff --git a/tests/tracetool/syslog.rs b/tests/tracetool/syslog.rs
index 378d03d34b2..9688dac84a5 100644
--- a/tests/tracetool/syslog.rs
+++ b/tests/tracetool/syslog.rs
@@ -8,7 +8,7 @@
 
 #[allow(dead_code)]
 #[inline(always)]
-fn trace_event_state_is_enabled(dstate: u16) -> bool {
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
     (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
 }
 
@@ -18,9 +18,9 @@ fn trace_event_state_is_enabled(dstate: u16) -> bool {
 }
 extern "C" {
     #[allow(dead_code)]
-    static mut _TRACE_TEST_BLAH_DSTATE: u16;
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
     #[allow(dead_code)]
-    static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
 }
 
 #[inline(always)]
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472524.1680421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRI-0000ZU-8Y; Wed, 04 Nov 2026 20:18:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472524.1680421; Wed, 04 Nov 2026 20:18:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRH-0000XS-UT; Wed, 04 Nov 2026 20:18:31 +0000
Received: by outflank-mailman (input) for mailman id 1472524;
 Wed, 04 Nov 2026 20:18:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRG-0000Bz-Vj
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRG-007PCO-C4
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:30 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92dc-e002-0a2a0a5209dd-0a2a4508de80-36
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:30 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9315-f659-0a2a45080019-aa0a817cd485-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:30 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-97-nGipy6pWP5CWYJDVjEyCHA-1; Wed,
 04 Nov 2026 15:18:25 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9082C1955DBE; Wed,  4 Nov 2026 20:18:23 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 93ECE1829C21; Wed,  4 Nov 2026 20:18:22 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823508;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=sNaYu08RePiA3/TOJj7oi5LlAFNAX4bokf8QMENnVcY=;
	b=Mgle1CxIO3L/k4aXuhS2eHv9zA38tu1XIDGrnM2z3txIV8zuBp8Y32537461i15eBR5jp6
	VVTNQ6rq37YbGAYl7fM/wwKXCH/NzvhSSbAqo87ftG/Tn+tgBrss7+NcApvawXyip9g7uh
	059+tKLX649z+ZC52PXA1Zjc8o191Bk=
X-MC-Unique: nGipy6pWP5CWYJDVjEyCHA-1
X-Mimecast-MFC-AGG-ID: nGipy6pWP5CWYJDVjEyCHA_1793823503
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 11/25] trace: don't emit TraceEvent structs when 'nop' backend is used
Date: Wed,  4 Nov 2026 15:17:47 -0500
Message-ID: <20261104201802.11556-12-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: -TxCAdJQ7TMQcpsY57vdbmrgnG1HCRyTl7VkoPzGPT4_1793823503
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793823510-D477387B-414A2536/35/111497
X-purgate-type: clean
X-purgate-size: 6154

From: Daniel P. Berrangé <berrange@redhat.com>

The 'nop' backend is a short-hand for no trace probe usage
at all. The emitted functions become a no-op, and as such
there is no need to emit the TraceEvent structs, nor the
DSTATE variables they reference.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-12-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/nop.h         |  6 +--
 tests/tracetool/nop.c         | 29 ---------------
 scripts/tracetool/format/c.py | 69 ++++++++++++++++++-----------------
 scripts/tracetool/format/h.py | 14 ++++---
 4 files changed, 46 insertions(+), 72 deletions(-)

diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
index 443f5e0cf6e..64b6b005684 100644
--- a/tests/tracetool/nop.h
+++ b/tests/tracetool/nop.h
@@ -6,10 +6,8 @@
 
 #include "trace/control.h"
 
-extern TraceEvent _TRACE_TEST_BLAH_EVENT;
-extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
-extern uint8_t _TRACE_TEST_BLAH_DSTATE;
-extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define _TRACE_TEST_BLAH_DSTATE 0
+#define _TRACE_TEST_WIBBLE_DSTATE 0
 #define TRACE_TEST_BLAH_ENABLED 1
 #define TRACE_TEST_WIBBLE_ENABLED 1
 
diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c
index f83d06252ea..d34cc0ca742 100644
--- a/tests/tracetool/nop.c
+++ b/tests/tracetool/nop.c
@@ -5,32 +5,3 @@
 #include "qemu/module.h"
 #include "trace-testsuite.h"
 
-uint8_t _TRACE_TEST_BLAH_DSTATE;
-uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-TraceEvent _TRACE_TEST_BLAH_EVENT = {
-#ifdef CONFIG_TRACE_SIMPLE
-    .id = 0,
-#endif
-    .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
-    .dstate = &_TRACE_TEST_BLAH_DSTATE
-};
-TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
-#ifdef CONFIG_TRACE_SIMPLE
-    .id = 0,
-#endif
-    .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
-    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
-};
-TraceEvent *testsuite_trace_events[] = {
-    &_TRACE_TEST_BLAH_EVENT,
-    &_TRACE_TEST_WIBBLE_EVENT,
-  NULL,
-};
-
-static void trace_testsuite_register_events(void)
-{
-    trace_event_register_group(testsuite_trace_events);
-}
-trace_init(trace_testsuite_register_events)
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index de1c154a881..5f6669c917c 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -29,41 +29,42 @@ def generate(events, backend, group):
         '#include "%s"' % header,
         '')
 
-    for e in events:
-        out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
+    if len(list(backend.backend_modules())):
+        for e in events:
+            out('uint8_t %s;' % e.api(e.QEMU_DSTATE))
 
-    for e in events:
-        out('TraceEvent %(event)s = {',
-            '#ifdef CONFIG_TRACE_SIMPLE',
-            '    .id = 0,',
-            '#endif',
-            '    .name = \"%(name)s\",',
-            '    .sstate = %(sstate)s,',
-            '    .dstate = &%(dstate)s',
+        for e in events:
+            out('TraceEvent %(event)s = {',
+                '#ifdef CONFIG_TRACE_SIMPLE',
+                '    .id = 0,',
+                '#endif',
+                '    .name = \"%(name)s\",',
+                '    .sstate = %(sstate)s,',
+                '    .dstate = &%(dstate)s',
+                '};',
+                event = e.api(e.QEMU_EVENT),
+                name = e.name,
+                sstate = "TRACE_%s_ENABLED" % e.name.upper(),
+                dstate = e.api(e.QEMU_DSTATE))
+
+        out('TraceEvent *%(group)s_trace_events[] = {',
+            group = group.lower())
+
+        for e in events:
+            out('    &%(event)s,', event = e.api(e.QEMU_EVENT))
+
+        out('  NULL,',
             '};',
-            event = e.api(e.QEMU_EVENT),
-            name = e.name,
-            sstate = "TRACE_%s_ENABLED" % e.name.upper(),
-            dstate = e.api(e.QEMU_DSTATE))
+            '')
 
-    out('TraceEvent *%(group)s_trace_events[] = {',
-        group = group.lower())
+        out('static void trace_%(group)s_register_events(void)',
+            '{',
+            '    trace_event_register_group(%(group)s_trace_events);',
+            '}',
+            'trace_init(trace_%(group)s_register_events)',
+            group = group.lower())
 
-    for e in events:
-        out('    &%(event)s,', event = e.api(e.QEMU_EVENT))
-
-    out('  NULL,',
-        '};',
-        '')
-
-    out('static void trace_%(group)s_register_events(void)',
-        '{',
-        '    trace_event_register_group(%(group)s_trace_events);',
-        '}',
-        'trace_init(trace_%(group)s_register_events)',
-        group = group.lower())
-
-    backend.generate_begin(active_events, group)
-    for event in active_events:
-        backend.generate(event, group)
-    backend.generate_end(active_events, group)
+        backend.generate_begin(active_events, group)
+        for event in active_events:
+            backend.generate(event, group)
+        backend.generate_end(active_events, group)
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 4dc1ad7eb15..6ffb7256e31 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -27,12 +27,16 @@ def generate(events, backend, group):
         '#include "%s"' % header,
         '')
 
-    for e in events:
-        out('extern TraceEvent %(event)s;',
-            event = e.api(e.QEMU_EVENT))
+    if len(list(backend.backend_modules())):
+        for e in events:
+            out('extern TraceEvent %(event)s;',
+                event = e.api(e.QEMU_EVENT))
 
-    for e in events:
-        out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
+        for e in events:
+            out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE))
+    else:
+        for e in events:
+            out('#define %s 0' % e.api(e.QEMU_DSTATE))
 
     # static state
     for e in events:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472525.1680433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRK-00014I-JH; Wed, 04 Nov 2026 20:18:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472525.1680433; Wed, 04 Nov 2026 20:18:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRK-00013s-Dn; Wed, 04 Nov 2026 20:18:34 +0000
Received: by outflank-mailman (input) for mailman id 1472525;
 Wed, 04 Nov 2026 20:18:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRH-0000SB-Se
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRH-007PCO-95
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:31 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9312-e002-0a2a0a5209dd-0a2a450997ac-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:31 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9315-be1a-0a2a45090019-aa0a817c8afb-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:30 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-221-0n45YEU1NAq4Orr0v3_tpA-1; Wed,
 04 Nov 2026 15:18:24 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 8F11E1955EA0; Wed,  4 Nov 2026 20:18:21 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 4544626C; Wed,  4 Nov 2026 20:18:21 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823509;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HVLiXlgRnVDt9HN6YEs055+fC583nu5lD1opbfo202g=;
	b=THAaKW7ywNyT8MDum3hE+yqnkD+wI/oebrZafWLtcSz3d4vTXDf4e7RKnu6MuAGw+eD60D
	3APzsX5n5wPeigPTwX0OQ7cTgMaUgGCzNOWKIJ8xUTwCbOs5lQmOCa0yDhznHYyh1HdDPt
	A/WB5Fm/smC5tpBQpp3rnFJL8EgUcx4=
X-MC-Unique: 0n45YEU1NAq4Orr0v3_tpA-1
X-Mimecast-MFC-AGG-ID: 0n45YEU1NAq4Orr0v3_tpA_1793823501
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 10/25] trace: add testing of 'nop' trace backend
Date: Wed,  4 Nov 2026 15:17:46 -0500
Message-ID: <20261104201802.11556-11-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: GL6LRPdCjsa2JGG19WnSwosxo20GsK7EaHA_uZqYKUM_1793823501
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793823511-3B0DD034-93B4A404/35/111497
X-purgate-type: clean
X-purgate-size: 5329

From: Daniel P. Berrangé <berrange@redhat.com>

This will be used to demonstrate that tracetool outputs the bare
minimum of code when tracing is disabled. Currently, as of this
initial commit of reference output, too much code is generated.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-11-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/nop.h             | 29 ++++++++++++++++++
 tests/tracetool/nop.c             | 36 ++++++++++++++++++++++
 tests/tracetool/meson.build       |  1 +
 tests/tracetool/nop.rs            | 51 +++++++++++++++++++++++++++++++
 tests/tracetool/tracetool-test.py |  2 +-
 5 files changed, 118 insertions(+), 1 deletion(-)
 create mode 100644 tests/tracetool/nop.h
 create mode 100644 tests/tracetool/nop.c
 create mode 100644 tests/tracetool/nop.rs

diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
new file mode 100644
index 00000000000..443f5e0cf6e
--- /dev/null
+++ b/tests/tracetool/nop.h
@@ -0,0 +1,29 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef TRACE_TESTSUITE_GENERATED_TRACERS_H
+#define TRACE_TESTSUITE_GENERATED_TRACERS_H
+
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_TEST_BLAH_EVENT;
+extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define TRACE_TEST_BLAH_ENABLED 1
+#define TRACE_TEST_WIBBLE_ENABLED 1
+
+#define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
+    false)
+
+static inline void trace_test_blah(void *context, const char *filename)
+{
+}
+
+#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
+    false)
+
+static inline void trace_test_wibble(void *context, int value)
+{
+}
+#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c
new file mode 100644
index 00000000000..f83d06252ea
--- /dev/null
+++ b/tests/tracetool/nop.c
@@ -0,0 +1,36 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+#include "qemu/module.h"
+#include "trace-testsuite.h"
+
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_blah",
+    .sstate = TRACE_TEST_BLAH_ENABLED,
+    .dstate = &_TRACE_TEST_BLAH_DSTATE
+};
+TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_wibble",
+    .sstate = TRACE_TEST_WIBBLE_ENABLED,
+    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
+};
+TraceEvent *testsuite_trace_events[] = {
+    &_TRACE_TEST_BLAH_EVENT,
+    &_TRACE_TEST_WIBBLE_EVENT,
+  NULL,
+};
+
+static void trace_testsuite_register_events(void)
+{
+    trace_event_register_group(testsuite_trace_events);
+}
+trace_init(trace_testsuite_register_events)
diff --git a/tests/tracetool/meson.build b/tests/tracetool/meson.build
index 09bbaaa86bf..f4f583e6224 100644
--- a/tests/tracetool/meson.build
+++ b/tests/tracetool/meson.build
@@ -5,6 +5,7 @@ test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
 test_env.set('PYTHONIOENCODING', 'utf-8')
 
 backends = [
+    'nop',
     'dtrace',
     'ftrace',
     'log',
diff --git a/tests/tracetool/nop.rs b/tests/tracetool/nop.rs
new file mode 100644
index 00000000000..5f007cecd04
--- /dev/null
+++ b/tests/tracetool/nop.rs
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// This file is @generated by tracetool, do not edit.
+
+#[allow(unused_imports)]
+use std::ffi::c_char;
+#[allow(unused_imports)]
+use util::bindings;
+
+#[allow(dead_code)]
+#[inline(always)]
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
+    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
+}
+
+extern "C" {
+    #[allow(dead_code)]
+    static mut trace_events_enabled_count: u32;
+}
+extern "C" {
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah_enabled() -> bool
+{
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
+{
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble_enabled() -> bool
+{
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
+{
+}
+
diff --git a/tests/tracetool/tracetool-test.py b/tests/tracetool/tracetool-test.py
index 59e9ab3d6ef..74f315a4629 100755
--- a/tests/tracetool/tracetool-test.py
+++ b/tests/tracetool/tracetool-test.py
@@ -14,7 +14,7 @@ def get_formats(backend):
         "c",
         "h",
     ]
-    if backend in {"dtrace", "ftrace", "log", "simple", "syslog"}:
+    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog"}:
         formats += ["rs"]
     if backend == "dtrace":
         formats += [
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472530.1680437 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRL-0001AH-Ex; Wed, 04 Nov 2026 20:18:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472530.1680437; Wed, 04 Nov 2026 20:18:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRL-00019a-1Q; Wed, 04 Nov 2026 20:18:35 +0000
Received: by outflank-mailman (input) for mailman id 1472530;
 Wed, 04 Nov 2026 20:18:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRJ-0000vZ-T8
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRJ-007PCO-6H
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:33 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9312-e002-0a2a0a5209dd-0a2a450997ac-20
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:33 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9317-be1a-0a2a45090019-aa0a857ccb6d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:32 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-642-e78b6v3xPsO7Zd8btrPKnA-1; Wed,
 04 Nov 2026 15:18:27 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 6F68A1955DBB; Wed,  4 Nov 2026 20:18:25 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 87A7A195604F; Wed,  4 Nov 2026 20:18:24 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823511;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=2Ozn+n7oejeYEU5bC9zbT0ZwSD6t+CLu8qMU+CoA5yo=;
	b=UlBv0oXWGGAep/nbgVP914poNBtY1+rQPZdicd0hMXXUVXcOllAQ03sxeyQYDScENZHCQi
	6hgvMFx0E1feJ3SOcDCahl5AdL68pa0ZKfli9BMhE6BZcVj0194PAyskaozZep0hSMgUzK
	/jci/2S0aEvwp3a34a/C+Vdf+jaG/ko=
X-MC-Unique: e78b6v3xPsO7Zd8btrPKnA-1
X-Mimecast-MFC-AGG-ID: e78b6v3xPsO7Zd8btrPKnA_1793823505
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 12/25] trace: add test of generation with all backends enabled
Date: Wed,  4 Nov 2026 15:17:48 -0500
Message-ID: <20261104201802.11556-13-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: fzv-QG7HF_Sj6Tzeex7bmCD8iS5ruD-oeZCZfJYfNKk_1793823505
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793823513-FC610034-117E6017/35/111497
X-purgate-type: clean
X-purgate-size: 18093

From: Daniel P. Berrangé <berrange@redhat.com>

This reveals potentially interesting patterns in the generated
code when multiple backends are present.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-13-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                | 102 +++++++++++++++++++++++++++
 tests/tracetool/all.c                |  65 +++++++++++++++++
 tests/tracetool/all.d                |  10 +++
 tests/tracetool/all.log-stap         |  15 ++++
 tests/tracetool/all.rs               |  90 +++++++++++++++++++++++
 tests/tracetool/all.simpletrace-stap |  16 +++++
 tests/tracetool/all.stap             |  14 ++++
 tests/tracetool/all.ust-events-c     |  14 ++++
 tests/tracetool/all.ust-events-h     |  56 +++++++++++++++
 tests/tracetool/meson.build          |   3 +-
 tests/tracetool/tracetool-test.py    |  12 ++--
 11 files changed, 392 insertions(+), 5 deletions(-)
 create mode 100644 tests/tracetool/all.h
 create mode 100644 tests/tracetool/all.c
 create mode 100644 tests/tracetool/all.d
 create mode 100644 tests/tracetool/all.log-stap
 create mode 100644 tests/tracetool/all.rs
 create mode 100644 tests/tracetool/all.simpletrace-stap
 create mode 100644 tests/tracetool/all.stap
 create mode 100644 tests/tracetool/all.ust-events-c
 create mode 100644 tests/tracetool/all.ust-events-h

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
new file mode 100644
index 00000000000..41fa4d0e8a2
--- /dev/null
+++ b/tests/tracetool/all.h
@@ -0,0 +1,102 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef TRACE_TESTSUITE_GENERATED_TRACERS_H
+#define TRACE_TESTSUITE_GENERATED_TRACERS_H
+
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_TEST_BLAH_EVENT;
+extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
+extern uint8_t _TRACE_TEST_BLAH_DSTATE;
+extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+#define TRACE_TEST_BLAH_ENABLED 1
+#define TRACE_TEST_WIBBLE_ENABLED 1
+#ifndef SDT_USE_VARIADIC
+#define SDT_USE_VARIADIC 1
+#endif
+#include "trace-dtrace-testsuite.h"
+
+#undef SDT_USE_VARIADIC
+#ifndef QEMU_TEST_BLAH_ENABLED
+#define QEMU_TEST_BLAH_ENABLED() true
+#endif
+#ifndef QEMU_TEST_WIBBLE_ENABLED
+#define QEMU_TEST_WIBBLE_ENABLED() true
+#endif
+#include "trace/ftrace.h"
+
+#include "qemu/log-for-trace.h"
+
+void _simple_trace_test_blah(void *context, const char *filename);
+void _simple_trace_test_wibble(void *context, int value);
+
+#include <syslog.h>
+
+#include <lttng/tracepoint.h>
+#include "trace-ust-testsuite.h"
+
+/* tracepoint_enabled() was introduced in LTTng UST 2.7 */
+#ifndef tracepoint_enabled
+#define tracepoint_enabled(a, b) true
+#endif
+
+
+#define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
+    QEMU_TEST_BLAH_ENABLED() || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    tracepoint_enabled(qemu, test_blah) || \
+    false)
+
+static inline void trace_test_blah(void *context, const char *filename)
+{
+    QEMU_TEST_BLAH(context, filename);
+    tracepoint(qemu, test_blah, context, filename);
+    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+#line 4 "trace-events"
+        ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
+#line 62 "all.h"
+        if (qemu_loglevel_mask(LOG_TRACE)) {
+#line 4 "trace-events"
+            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
+#line 66 "all.h"
+        }
+        _simple_trace_test_blah(context, filename);
+#line 4 "trace-events"
+        syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
+#line 71 "all.h"
+    }
+}
+
+#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
+    QEMU_TEST_WIBBLE_ENABLED() || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    tracepoint_enabled(qemu, test_wibble) || \
+    false)
+
+static inline void trace_test_wibble(void *context, int value)
+{
+    QEMU_TEST_WIBBLE(context, value);
+    tracepoint(qemu, test_wibble, context, value);
+    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+#line 5 "trace-events"
+        ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
+#line 91 "all.h"
+        if (qemu_loglevel_mask(LOG_TRACE)) {
+#line 5 "trace-events"
+            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
+#line 95 "all.h"
+        }
+        _simple_trace_test_wibble(context, value);
+#line 5 "trace-events"
+        syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
+#line 100 "all.h"
+    }
+}
+#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
new file mode 100644
index 00000000000..820ddb575b0
--- /dev/null
+++ b/tests/tracetool/all.c
@@ -0,0 +1,65 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+#include "qemu/module.h"
+#include "trace-testsuite.h"
+
+uint8_t _TRACE_TEST_BLAH_DSTATE;
+uint8_t _TRACE_TEST_WIBBLE_DSTATE;
+TraceEvent _TRACE_TEST_BLAH_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_blah",
+    .sstate = TRACE_TEST_BLAH_ENABLED,
+    .dstate = &_TRACE_TEST_BLAH_DSTATE
+};
+TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
+#ifdef CONFIG_TRACE_SIMPLE
+    .id = 0,
+#endif
+    .name = "test_wibble",
+    .sstate = TRACE_TEST_WIBBLE_ENABLED,
+    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
+};
+TraceEvent *testsuite_trace_events[] = {
+    &_TRACE_TEST_BLAH_EVENT,
+    &_TRACE_TEST_WIBBLE_EVENT,
+  NULL,
+};
+
+static void trace_testsuite_register_events(void)
+{
+    trace_event_register_group(testsuite_trace_events);
+}
+trace_init(trace_testsuite_register_events)
+#include "qemu/osdep.h"
+#include "trace/control.h"
+#include "trace/simple.h"
+
+void _simple_trace_test_blah(void *context, const char *filename)
+{
+    TraceBufferRecord rec;
+    size_t argfilename_len = filename ? MIN(strlen(filename), MAX_TRACE_STRLEN) : 0;
+
+    if (trace_record_start(&rec, _TRACE_TEST_BLAH_EVENT.id, 8 + 4 + argfilename_len)) {
+        return; /* Trace Buffer Full, Event Dropped ! */
+    }
+    trace_record_write_u64(&rec, (uintptr_t)(uint64_t *)context);
+    trace_record_write_str(&rec, filename, argfilename_len);
+    trace_record_finish(&rec);
+}
+
+void _simple_trace_test_wibble(void *context, int value)
+{
+    TraceBufferRecord rec;
+
+    if (trace_record_start(&rec, _TRACE_TEST_WIBBLE_EVENT.id, 8 + 8)) {
+        return; /* Trace Buffer Full, Event Dropped ! */
+    }
+    trace_record_write_u64(&rec, (uintptr_t)(uint64_t *)context);
+    trace_record_write_u64(&rec, (uint64_t)value);
+    trace_record_finish(&rec);
+}
+
diff --git a/tests/tracetool/all.d b/tests/tracetool/all.d
new file mode 100644
index 00000000000..5cc06f9f4f5
--- /dev/null
+++ b/tests/tracetool/all.d
@@ -0,0 +1,10 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+provider qemu {
+
+probe test_blah(void * context,const char * filename);
+
+probe test_wibble(void * context,int value);
+
+};
diff --git a/tests/tracetool/all.log-stap b/tests/tracetool/all.log-stap
new file mode 100644
index 00000000000..092986e0b61
--- /dev/null
+++ b/tests/tracetool/all.log-stap
@@ -0,0 +1,15 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.log.test_blah = qemu.test_blah ?
+{
+    try {
+        argfilename_str = filename ? user_string_n(filename, 512) : "<null>"
+    } catch {}
+    printf("%d@%d test_blah Blah context=%p filename=%s\n", pid(), gettimeofday_ns(), context, argfilename_str)
+}
+probe qemu.log.test_wibble = qemu.test_wibble ?
+{
+    printf("%d@%d test_wibble Wibble context=%p value=%d\n", pid(), gettimeofday_ns(), context, value)
+}
+
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
new file mode 100644
index 00000000000..c8c9d288366
--- /dev/null
+++ b/tests/tracetool/all.rs
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// This file is @generated by tracetool, do not edit.
+
+#[allow(unused_imports)]
+use std::ffi::c_char;
+#[allow(unused_imports)]
+use util::bindings;
+
+#[allow(dead_code)]
+#[inline(always)]
+fn trace_event_state_is_enabled(dstate: u8) -> bool {
+    (unsafe { trace_events_enabled_count }) != 0 && dstate != 0
+}
+
+extern "C" {
+    #[allow(dead_code)]
+    static mut trace_events_enabled_count: u32;
+}
+extern "C" {
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_BLAH_DSTATE: u8;
+    #[allow(dead_code)]
+    static mut _TRACE_TEST_WIBBLE_DSTATE: u8;
+}
+
+use std::cell::UnsafeCell;
+
+extern "C" {
+    #[allow(dead_code)]
+    static qemu_test_blah_semaphore: UnsafeCell<u16>;
+    #[allow(dead_code)]
+    static qemu_test_wibble_semaphore: UnsafeCell<u16>;
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah_enabled() -> bool
+{
+    (unsafe {qemu_test_blah_semaphore.get().read_volatile()}) != 0 ||
+    trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
+{
+    ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
+        let format_string = c"Blah context=%p filename=%s";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
+        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
+            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+        }
+        extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
+        unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
+        let format_string = c"Blah context=%p filename=%s";
+        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
+    }
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble_enabled() -> bool
+{
+    (unsafe {qemu_test_wibble_semaphore.get().read_volatile()}) != 0 ||
+    trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
+    false
+}
+
+#[inline(always)]
+#[allow(dead_code)]
+pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
+{
+    ::trace::probe!(qemu, test_wibble, _context, _value);
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
+        let format_string = c"Wibble context=%p value=%d";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
+        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
+            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+        }
+        extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
+        unsafe { _simple_trace_test_wibble(_context, _value); }
+        let format_string = c"Wibble context=%p value=%d";
+        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
+    }
+}
+
diff --git a/tests/tracetool/all.simpletrace-stap b/tests/tracetool/all.simpletrace-stap
new file mode 100644
index 00000000000..d064e3e286a
--- /dev/null
+++ b/tests/tracetool/all.simpletrace-stap
@@ -0,0 +1,16 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.simpletrace.test_blah = qemu.test_blah ?
+{
+    try {
+        argfilename_str = filename ? user_string_n(filename, 512) : "<null>"
+    } catch {}
+    argfilename_len = strlen(argfilename_str)
+    printf("%8b%8b%8b%4b%4b%8b%4b%.*s", 1, 0, gettimeofday_ns(), 24 + 8 + 4 + argfilename_len, pid(), context, argfilename_len, argfilename_len, argfilename_str)
+}
+probe qemu.simpletrace.test_wibble = qemu.test_wibble ?
+{
+    printf("%8b%8b%8b%4b%4b%8b%8b", 1, 1, gettimeofday_ns(), 24 + 8 + 8, pid(), context, value)
+}
+
diff --git a/tests/tracetool/all.stap b/tests/tracetool/all.stap
new file mode 100644
index 00000000000..9c5d8a527ce
--- /dev/null
+++ b/tests/tracetool/all.stap
@@ -0,0 +1,14 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+probe qemu.test_blah = process("qemu").mark("test_blah")
+{
+  context = $arg1;
+  filename = $arg2;
+}
+probe qemu.test_wibble = process("qemu").mark("test_wibble")
+{
+  context = $arg1;
+  value = $arg2;
+}
+
diff --git a/tests/tracetool/all.ust-events-c b/tests/tracetool/all.ust-events-c
new file mode 100644
index 00000000000..db232240568
--- /dev/null
+++ b/tests/tracetool/all.ust-events-c
@@ -0,0 +1,14 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "qemu/osdep.h"
+
+#define TRACEPOINT_DEFINE
+#define TRACEPOINT_CREATE_PROBES
+
+/* If gcc version 4.7 or older is used, LTTng ust gives a warning when compiling with
+   -Wredundant-decls.
+ */
+#pragma GCC diagnostic ignored "-Wredundant-decls"
+
+#include "trace-ust-all.h"
diff --git a/tests/tracetool/all.ust-events-h b/tests/tracetool/all.ust-events-h
new file mode 100644
index 00000000000..4621a995fc1
--- /dev/null
+++ b/tests/tracetool/all.ust-events-h
@@ -0,0 +1,56 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER qemu
+
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./trace-ust.h"
+
+#if !defined (TRACE_TESTSUITE_GENERATED_UST_H) || \
+     defined(TRACEPOINT_HEADER_MULTI_READ)
+#define TRACE_TESTSUITE_GENERATED_UST_H
+
+#include <lttng/tracepoint.h>
+
+/*
+ * LTTng ust 2.0 does not allow you to use TP_ARGS(void) for tracepoints
+ * requiring no arguments. We define these macros introduced in more recent * versions of LTTng ust as a workaround
+ */
+#ifndef _TP_EXPROTO1
+#define _TP_EXPROTO1(a)               void
+#endif
+#ifndef _TP_EXDATA_PROTO1
+#define _TP_EXDATA_PROTO1(a)          void *__tp_data
+#endif
+#ifndef _TP_EXDATA_VAR1
+#define _TP_EXDATA_VAR1(a)            __tp_data
+#endif
+#ifndef _TP_EXVAR1
+#define _TP_EXVAR1(a)
+#endif
+
+TRACEPOINT_EVENT(
+   qemu,
+   test_blah,
+   TP_ARGS(void *, context, const char *, filename),
+   TP_FIELDS(
+       ctf_integer_hex(void *, context, context)
+       ctf_string(filename, filename)
+   )
+)
+
+TRACEPOINT_EVENT(
+   qemu,
+   test_wibble,
+   TP_ARGS(void *, context, int, value),
+   TP_FIELDS(
+       ctf_integer_hex(void *, context, context)
+       ctf_integer(int, value, value)
+   )
+)
+
+#endif /* TRACE_TESTSUITE_GENERATED_UST_H */
+
+/* This part must be outside ifdef protection */
+#include <lttng/tracepoint-event.h>
diff --git a/tests/tracetool/meson.build b/tests/tracetool/meson.build
index f4f583e6224..b024dc6e405 100644
--- a/tests/tracetool/meson.build
+++ b/tests/tracetool/meson.build
@@ -11,7 +11,8 @@ backends = [
     'log',
     'simple',
     'syslog',
-    'ust'
+    'ust',
+    'all'
 ]
 
 # The tracetool-test.py program has portability problems on Windows.
diff --git a/tests/tracetool/tracetool-test.py b/tests/tracetool/tracetool-test.py
index 74f315a4629..2f6328e68c3 100755
--- a/tests/tracetool/tracetool-test.py
+++ b/tests/tracetool/tracetool-test.py
@@ -14,16 +14,16 @@ def get_formats(backend):
         "c",
         "h",
     ]
-    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog"}:
+    if backend in {"nop", "dtrace", "ftrace", "log", "simple", "syslog", "all"}:
         formats += ["rs"]
-    if backend == "dtrace":
+    if backend in {"dtrace", "all"}:
         formats += [
             "d",
             "log-stap",
             "simpletrace-stap",
             "stap",
         ]
-    if backend == "ust":
+    if backend in {"ust", "all"}:
         formats += [
             "ust-events-c",
             "ust-events-h",
@@ -36,8 +36,12 @@ def test_tracetool_one(tracetool, backend, fmt, src_dir, build_dir):
     actual_file = Path(build_dir, rel_filename)
     expect_file = Path(src_dir, rel_filename)
 
+    backends = backend
+    if backends == "all":
+        backends = "dtrace,ftrace,log,simple,syslog,ust"
+
     args = [sys.executable, tracetool,
-            f"--format={fmt}", f"--backends={backend}", "--group=testsuite"]
+            f"--format={fmt}", f"--backends={backends}", "--group=testsuite"]
 
     if fmt.find("stap") != -1:
         args += ["--binary=qemu", "--probe-prefix=qemu"]
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472534.1680450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRO-0001fn-Ca; Wed, 04 Nov 2026 20:18:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472534.1680450; Wed, 04 Nov 2026 20:18:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRO-0001eU-1X; Wed, 04 Nov 2026 20:18:38 +0000
Received: by outflank-mailman (input) for mailman id 1472534;
 Wed, 04 Nov 2026 20:18:36 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRL-0001Bx-Ka
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRL-00BuCu-1Q
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:35 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:35 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9319-f2d2-0a2a450a0019-aa0a817c96e5-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:34 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-463-OrIPcHMtNfWaL90iiMEVww-1; Wed,
 04 Nov 2026 15:18:29 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 521391800596; Wed,  4 Nov 2026 20:18:27 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 591BD39206; Wed,  4 Nov 2026 20:18:26 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823513;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=gkkz7NQLFS94E1ZeoUXFtFHJe+s6Qg+c1y84IQKKE4k=;
	b=Sys5afgdNy4IFpBCjmgfoplsc2g5uw0vwptSnc9RT19Spaqr28MF9Q3LftnXN0nWkbIG6S
	M01yW8g/3i4O41UUmjXDK3/q3lfhtdgp+a0R0geXzsdzaEQQcIQSLON5GpvgeEQBnVwSKC
	Ozz8/g5finnhpv8kAxe1imRN64CCISs=
X-MC-Unique: OrIPcHMtNfWaL90iiMEVww-1
X-Mimecast-MFC-AGG-ID: OrIPcHMtNfWaL90iiMEVww_1793823507
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 13/25] trace: remove redundant headers from simple trace backend code
Date: Wed,  4 Nov 2026 15:17:49 -0500
Message-ID: <20261104201802.11556-14-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: Kbh4u2abBcGiFYqOYNCevSkVwuTW_7kTCP5QVNzVfO4_1793823507
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823515-4B6D6CFC-EC9662FD/35/111497
X-purgate-type: clean
X-purgate-size: 2149

From: Daniel P. Berrangé <berrange@redhat.com>

The main formatter for .h/.c files for generated trace code
already includes osdep.h and control.h, so it is redundant
for the simple trace backend to add them too.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-14-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.c               | 2 --
 tests/tracetool/simple.c            | 2 --
 scripts/tracetool/backend/simple.py | 4 +---
 3 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
index 820ddb575b0..3b8d4d32d17 100644
--- a/tests/tracetool/all.c
+++ b/tests/tracetool/all.c
@@ -34,8 +34,6 @@ static void trace_testsuite_register_events(void)
     trace_event_register_group(testsuite_trace_events);
 }
 trace_init(trace_testsuite_register_events)
-#include "qemu/osdep.h"
-#include "trace/control.h"
 #include "trace/simple.h"
 
 void _simple_trace_test_blah(void *context, const char *filename)
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 820ddb575b0..3b8d4d32d17 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -34,8 +34,6 @@ static void trace_testsuite_register_events(void)
     trace_event_register_group(testsuite_trace_events);
 }
 trace_init(trace_testsuite_register_events)
-#include "qemu/osdep.h"
-#include "trace/control.h"
 #include "trace/simple.h"
 
 void _simple_trace_test_blah(void *context, const char *filename)
diff --git a/scripts/tracetool/backend/simple.py b/scripts/tracetool/backend/simple.py
index b131e4fc194..e22683c7d2a 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -48,9 +48,7 @@ def generate_h_backend_dstate(event, group):
 
 
 def generate_c_begin(events, group):
-    out('#include "qemu/osdep.h"',
-        '#include "trace/control.h"',
-        '#include "trace/simple.h"',
+    out('#include "trace/simple.h"',
         '')
 
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472535.1680456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRP-0001mA-6A; Wed, 04 Nov 2026 20:18:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472535.1680456; Wed, 04 Nov 2026 20:18:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRO-0001jw-N5; Wed, 04 Nov 2026 20:18:38 +0000
Received: by outflank-mailman (input) for mailman id 1472535;
 Wed, 04 Nov 2026 20:18:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRL-0001CD-Ly
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRL-00FVOo-2m
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:35 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb930e-bab6-0a2a0a5309dd-0a2a4501af60-28
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:35 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9319-5984-0a2a45010019-aa0a817ccb6f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:34 +0100
Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-577-XdjpUXIEPBmDb0Z7Y61BCA-1; Wed,
 04 Nov 2026 15:18:30 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id AC0C51955DD7; Wed,  4 Nov 2026 20:18:28 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 2CAFC195604C; Wed,  4 Nov 2026 20:18:28 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823513;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DlKbUaAjj04ta+A1/nUMfLg/CAVRg3igZyolJR7CeYY=;
	b=D7KqFFtlGRQp6sADKaeDGPqR3G+cnGa5fV8UXuqz4U+0mbcKsbXlX/AWnd0HVKxbTa0ypa
	DajvBOXfXSQ0vYLq+jQIIX+5yzLVwrxulyt1NXEVQQbB0GvwYRSuvnJpY/iUEOOlAbtZxR
	LOfqf7DOJn9p5IrCm7UnAw50Su4fXY0=
X-MC-Unique: XdjpUXIEPBmDb0Z7Y61BCA-1
X-Mimecast-MFC-AGG-ID: XdjpUXIEPBmDb0Z7Y61BCA_1793823508
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 14/25] trace: include probe name in Rust format strings
Date: Wed,  4 Nov 2026 15:17:50 -0500
Message-ID: <20261104201802.11556-15-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: j3Gj4VdTxfpgW9jjr9TscMLVfZqbiN0uE3B8uq49JoE_1793823508
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793823515-BC95A757-A913449A/35/111497
X-purgate-type: clean
X-purgate-size: 6988

From: Daniel P. Berrangé <berrange@redhat.com>

The C format strings all include the probe name as a prefix,
however, this was missed in the Rust generators for ftrace
and syslog.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-15-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/backend/ftrace.py | 2 +-
 scripts/tracetool/backend/syslog.py | 2 +-
 tests/tracetool/all.rs              | 8 ++++----
 tests/tracetool/ftrace.rs           | 4 ++--
 tests/tracetool/syslog.rs           | 4 ++--
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index e03698a2edf..ba2a0c83770 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -47,5 +47,5 @@ def generate_h_backend_dstate(event, group):
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
-        fmt=expand_format_string(event.fmt),
+        fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py
index 12b826593db..746efd35fb9 100644
--- a/scripts/tracetool/backend/syslog.py
+++ b/scripts/tracetool/backend/syslog.py
@@ -41,7 +41,7 @@ def generate_h(event, group):
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s";',
         '        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, %(args)s);}',
-        fmt=expand_format_string(event.fmt),
+        fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
 
 def generate_h_backend_dstate(event, group):
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index c8c9d288366..14afd86281e 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -47,7 +47,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -55,7 +55,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
         }
         extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
         unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -75,7 +75,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -83,7 +83,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
         }
         extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
         unsafe { _simple_trace_test_wibble(_context, _value); }
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index ff0bcde4b8b..39959d3fdd1 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
diff --git a/tests/tracetool/syslog.rs b/tests/tracetool/syslog.rs
index 9688dac84a5..b90ad4be7f4 100644
--- a/tests/tracetool/syslog.rs
+++ b/tests/tracetool/syslog.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d";
         unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472537.1680462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRQ-00020g-I8; Wed, 04 Nov 2026 20:18:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472537.1680462; Wed, 04 Nov 2026 20:18:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRQ-0001wl-0j; Wed, 04 Nov 2026 20:18:40 +0000
Received: by outflank-mailman (input) for mailman id 1472537;
 Wed, 04 Nov 2026 20:18:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRN-0001XZ-H3
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRM-007PCO-TH
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:36 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9312-e002-0a2a0a5209dd-0a2a450997ac-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:36 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb931b-be1a-0a2a45090019-aa0a857cb83f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:36 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-542-XnmutKvYO4KxXFQRP6T0vA-1; Wed,
 04 Nov 2026 15:18:33 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 5AABD1800610; Wed,  4 Nov 2026 20:18:31 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 106D51848D44; Wed,  4 Nov 2026 20:18:30 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823515;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=j3nROunoF4CikVbyQLt/Mk8W5QtQdfAuIa85rpQ5scA=;
	b=IGh9+RKsTS8OSbM+Z+pC0cTU9uieecyvFxYbpqC9ZSMffRT66A3nxQmD6YYLjWBT7xpMH4
	VkyhbDF26Vpc+ImGYBkKtoTx6NYsGIgVjTyDZ9/3rHecsnsDR1QwrraY1Jv+32+utjwZQZ
	r77749YXZOijuzz4088StE6MQdgG2to=
X-MC-Unique: XnmutKvYO4KxXFQRP6T0vA-1
X-Mimecast-MFC-AGG-ID: XnmutKvYO4KxXFQRP6T0vA_1793823511
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 16/25] trace: eliminate dupe trace_event_get_state_dynamic_by_id() calls
Date: Wed,  4 Nov 2026 15:17:52 -0500
Message-ID: <20261104201802.11556-17-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: 62vJSNOYvI7lj5YEErOwgtr9Nj-3kvWLUo0xtxBA5jM_1793823511
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793823516-3A0C5034-5C1A1BD6/35/111497
X-purgate-type: clean
X-purgate-size: 8670

From: Daniel P. Berrangé <berrange@redhat.com>

Each backend generates the same trace_event_get_state_dynamic_by_id()
call for the TRACE....DSTATE() macro body, so when multiple backends
are enabled, the same check is repeated:

 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     tracepoint_enabled(qemu, test_wibble) || \
     false)

Expanding the use of the 'backend.check_trace_event_get_state'
attr in the C header generator removes the duplication, in the
same way that the Rust generator already does.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-17-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                 | 22 ++++++++--------------
 scripts/tracetool/backend/__init__.py |  4 ++--
 scripts/tracetool/backend/ftrace.py   |  4 ----
 scripts/tracetool/backend/log.py      |  4 ----
 scripts/tracetool/backend/simple.py   |  5 -----
 scripts/tracetool/backend/syslog.py   |  4 ----
 scripts/tracetool/format/h.py         |  8 +++++++-
 7 files changed, 17 insertions(+), 34 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 41fa4d0e8a2..5627c1d8930 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -44,11 +44,8 @@ void _simple_trace_test_wibble(void *context, int value);
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     QEMU_TEST_BLAH_ENABLED() || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     tracepoint_enabled(qemu, test_blah) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     false)
 
 static inline void trace_test_blah(void *context, const char *filename)
@@ -58,26 +55,23 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 62 "all.h"
+#line 59 "all.h"
         if (qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 66 "all.h"
+#line 63 "all.h"
         }
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 71 "all.h"
+#line 68 "all.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     tracepoint_enabled(qemu, test_wibble) || \
+    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     false)
 
 static inline void trace_test_wibble(void *context, int value)
@@ -87,16 +81,16 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 91 "all.h"
+#line 85 "all.h"
         if (qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 95 "all.h"
+#line 89 "all.h"
         }
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 100 "all.h"
+#line 94 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/scripts/tracetool/backend/__init__.py b/scripts/tracetool/backend/__init__.py
index 9109a783c72..72f549c77c4 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -133,8 +133,8 @@ def generate_begin(self, events, group):
     def generate(self, event, group, check_trace_event_get_state=None):
         self._run_function("generate_%s", event, group, check_trace_event_get_state=check_trace_event_get_state)
 
-    def generate_backend_dstate(self, event, group):
-        self._run_function("generate_%s_backend_dstate", event, group)
+    def generate_backend_dstate(self, event, group, check_trace_event_get_state=None):
+        self._run_function("generate_%s_backend_dstate", event, group, check_trace_event_get_state=check_trace_event_get_state)
 
     def generate_end(self, events, group):
         self._run_function("generate_%s_end", events, group)
diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index e304ef21999..94cffc45a9d 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -40,10 +40,6 @@ def generate_h(event, group):
         argnames=argnames)
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s\\n";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 9e3e5046f5f..577ee158584 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -41,10 +41,6 @@ def generate_h(event, group):
         argnames=argnames)
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
 def generate_rs(event, group):
     out('        let format_string = c"%(fmt)s\\n";',
         '        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {',
diff --git a/scripts/tracetool/backend/simple.py b/scripts/tracetool/backend/simple.py
index e22683c7d2a..15f27e26bd5 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -42,11 +42,6 @@ def generate_h(event, group):
         args=", ".join(event.args.names()))
 
 
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
-
-
 def generate_c_begin(events, group):
     out('#include "trace/simple.h"',
         '')
diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py
index 746efd35fb9..ba269cb6a33 100644
--- a/scripts/tracetool/backend/syslog.py
+++ b/scripts/tracetool/backend/syslog.py
@@ -43,7 +43,3 @@ def generate_rs(event, group):
         '        unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() as *const c_char, %(args)s);}',
         fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
-
-def generate_h_backend_dstate(event, group):
-    out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-        event_id="TRACE_" + event.name.upper())
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 6ffb7256e31..5ad3a419f82 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -55,7 +55,13 @@ def generate(events, backend, group):
             api=e.api(e.QEMU_BACKEND_DSTATE))
 
         if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group)
+            backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
+
+            if backend.check_trace_event_get_state:
+                event_id = 'TRACE_' + e.name.upper()
+                out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
+                    event_id=event_id)
+                backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
 
         out('    false)')
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472539.1680468 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRR-0002Ej-Py; Wed, 04 Nov 2026 20:18:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472539.1680468; Wed, 04 Nov 2026 20:18:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRR-0002D0-4l; Wed, 04 Nov 2026 20:18:41 +0000
Received: by outflank-mailman (input) for mailman id 1472539;
 Wed, 04 Nov 2026 20:18:38 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRO-0001eT-4u
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRN-00BuCu-Hm
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:37 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-26
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:37 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb931c-f2d2-0a2a450a0019-aa0a817cd0e9-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:37 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-117-NQIBVkeeM3W-CF4SunFbPQ-1; Wed,
 04 Nov 2026 15:18:35 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 50E0C1800556; Wed,  4 Nov 2026 20:18:33 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 46E4E1956089; Wed,  4 Nov 2026 20:18:32 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823516;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=MMzIqwZzfLbxitsjp49xs/Ty7Ev+lHRLVyhej1u9jzk=;
	b=d2UkOK1P2W+6pTbwvWLhBxR6rf5DTRvaDPaQughokqiejjZfZMW8I814XGmhJMLPRmG1kH
	2j4RznXQyzUgBJ08e2Rn0glIugMAG6guTYzVoVK2ijg2YbOx6dYeBsQ2BXY+Y1Q/BP/vy7
	+2hhVbqjV5YzqiT13BLdszjJj/Qk5hE=
X-MC-Unique: NQIBVkeeM3W-CF4SunFbPQ-1
X-Mimecast-MFC-AGG-ID: NQIBVkeeM3W-CF4SunFbPQ_1793823513
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL v2 17/25] audio: remove mistaken use of trace_event_get_state()
Date: Wed,  4 Nov 2026 15:17:53 -0500
Message-ID: <20261104201802.11556-18-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: SHABY8BTj5odWt0IcC9mQp8IJdXHRsL9ipmuyK8Umw0_1793823513
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823517-4BCD3CFC-B8746AA5/35/111497
X-purgate-type: clean
X-purgate-size: 1364

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-18-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 audio/audio-mixeng-be.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/audio/audio-mixeng-be.c b/audio/audio-mixeng-be.c
index f6fd5014e0e..815d4fad2f5 100644
--- a/audio/audio-mixeng-be.c
+++ b/audio/audio-mixeng-be.c
@@ -1179,7 +1179,7 @@ void audio_run(AudioMixengBackend *s, const char *msg)
     audio_run_in(s);
     audio_run_capture(s);
 
-    if (trace_event_get_state(TRACE_AUDIO_RUN_POLL)) {
+    if (trace_event_get_state_backends(TRACE_AUDIO_RUN_POLL)) {
         /* Convert seconds to microseconds for trace event */
         int64_t elapsed_us = g_timer_elapsed(s->run_timer, NULL) * MICROSECONDS_PER_SECOND;
         trace_audio_run_poll(msg, elapsed_us);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472540.1680473 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRT-0002Pz-0z; Wed, 04 Nov 2026 20:18:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472540.1680473; Wed, 04 Nov 2026 20:18:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRS-0002Mh-7v; Wed, 04 Nov 2026 20:18:42 +0000
Received: by outflank-mailman (input) for mailman id 1472540;
 Wed, 04 Nov 2026 20:18:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRO-0001iW-Ou
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRO-00FVOo-3T
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:38 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92f2-bab6-0a2a0a5309dd-0a2a45029e7a-48
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:38 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb931c-6ca4-0a2a45020019-aa0a817c9af1-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:37 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-583-rNNLn0ZlOIW5eoSaQrhCbg-1; Wed,
 04 Nov 2026 15:18:33 -0500
Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 173F91955E97; Wed,  4 Nov 2026 20:18:30 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id BE14D195604C; Wed,  4 Nov 2026 20:18:29 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823516;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=LGa+HMdMyZp+fDqANZnP8jW3DD1gu9BvhH368Mvy95o=;
	b=TFgdoKRQaRbLa1fQjnt9os8xNjnsQ24V/sFWhBiKZ2yWmLDriwE1Bxa3pF29Hi1WHVIysD
	Hq2eRfK6iCeL945be0HGSpTti+06VXef9HSw2ptx12Q45Feltq7gwifeK7u4kqsfCwZol2
	9Eoi8LMp0I22zOQV7kIRgaG2Dxo5DVk=
X-MC-Unique: rNNLn0ZlOIW5eoSaQrhCbg-1
X-Mimecast-MFC-AGG-ID: rNNLn0ZlOIW5eoSaQrhCbg_1793823510
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 15/25] trace: add missing newline in ftrace Rust format string
Date: Wed,  4 Nov 2026 15:17:51 -0500
Message-ID: <20261104201802.11556-16-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12
X-Mimecast-MFC-PROC-ID: BX0dv8EyFQBklVu0qifOdxkFsUzQJbVNWxewvfnYuQc_1793823510
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793823518-319CB2AC-0B807656/35/111497
X-purgate-type: clean
X-purgate-size: 3936

From: Daniel P. Berrangé <berrange@redhat.com>

The ftrace_write() method expects the caller to provide the
newline.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-16-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 scripts/tracetool/backend/ftrace.py | 2 +-
 tests/tracetool/all.rs              | 4 ++--
 tests/tracetool/ftrace.rs           | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
index ba2a0c83770..e304ef21999 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -45,7 +45,7 @@ def generate_h_backend_dstate(event, group):
         event_id="TRACE_" + event.name.upper())
 
 def generate_rs(event, group):
-    out('        let format_string = c"%(fmt)s";',
+    out('        let format_string = c"%(fmt)s\\n";',
         '        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, %(args)s);}',
         fmt=expand_format_string(event.fmt, event.name + " "),
         args=event.args.rust_call_varargs())
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index 14afd86281e..f48bdf4aab5 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -47,7 +47,7 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
@@ -75,7 +75,7 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs
index 39959d3fdd1..1ad13172b17 100644
--- a/tests/tracetool/ftrace.rs
+++ b/tests/tracetool/ftrace.rs
@@ -36,7 +36,7 @@ pub fn trace_test_blah_enabled() -> bool
 pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s";
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
     }
 }
@@ -54,7 +54,7 @@ pub fn trace_test_wibble_enabled() -> bool
 pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d";
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
         unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
     }
 }
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472546.1680485 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRW-00034D-LB; Wed, 04 Nov 2026 20:18:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472546.1680485; Wed, 04 Nov 2026 20:18:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRV-0002zP-7u; Wed, 04 Nov 2026 20:18:45 +0000
Received: by outflank-mailman (input) for mailman id 1472546;
 Wed, 04 Nov 2026 20:18:42 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRS-0002My-Fa
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRR-00BuII-Qn
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:41 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-30
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:41 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9320-f2d2-0a2a450a0019-aa0a817ce11b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:41 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-695-8gi46V3fPbuorzIqtOGZcA-1; Wed,
 04 Nov 2026 15:18:37 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C696A1956055; Wed,  4 Nov 2026 20:18:35 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 7AEE11848D40; Wed,  4 Nov 2026 20:18:35 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823520;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Uufc4nv38yI9zDdiGbNpg4ZIN69J3LElu5ZGq15CX2Y=;
	b=VMqSnzMnsrLR2mlc3qXu7nTmeB5FT1/gkfv/ZXAP32oN55sgZg82BQzvzrlsiBRyupuvzn
	76P7pkkPLzzNvnLvNkcRA8LDvxGPWljwMKHlDJaNpswu0JJ5EfS5Z32BDYtsr1JrOo6khT
	rPugs2b9JT07YuCDZA474a0fWKj18dA=
X-MC-Unique: 8gi46V3fPbuorzIqtOGZcA-1
X-Mimecast-MFC-AGG-ID: 8gi46V3fPbuorzIqtOGZcA_1793823515
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 19/25] monitor: remove mistaken use of trace_event_get_state()
Date: Wed,  4 Nov 2026 15:17:55 -0500
Message-ID: <20261104201802.11556-20-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: wkH5n77aLcWUjxyz2LEavSJ-y432_Tdz8KhxVaR7gj0_1793823515
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823521-5A3DCCFC-589374A5/35/111497
X-purgate-type: clean
X-purgate-size: 1697

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-20-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 monitor/qmp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/monitor/qmp.c b/monitor/qmp.c
index d2e45d3993b..2f66257e4ad 100644
--- a/monitor/qmp.c
+++ b/monitor/qmp.c
@@ -440,7 +440,7 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data)
 
         /* Process request */
         if (req_obj->req) {
-            if (trace_event_get_state(TRACE_MONITOR_QMP_CMD_IN_BAND)) {
+            if (trace_event_get_state_backends(TRACE_MONITOR_QMP_CMD_IN_BAND)) {
                 QDict *qdict = qobject_to(QDict, req_obj->req);
                 QObject *id = qdict ? qdict_get(qdict, "id") : NULL;
                 GString *id_json;
@@ -496,7 +496,7 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)
 
     if (qdict && qmp_is_oob(qdict)) {
         /* OOB commands are executed immediately */
-        if (trace_event_get_state(TRACE_MONITOR_QMP_CMD_OUT_OF_BAND)) {
+        if (trace_event_get_state_backends(TRACE_MONITOR_QMP_CMD_OUT_OF_BAND)) {
             QObject *id = qdict_get(qdict, "id");
             GString *id_json;
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472548.1680490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRX-0003Fu-QR; Wed, 04 Nov 2026 20:18:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472548.1680490; Wed, 04 Nov 2026 20:18:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRW-0003DX-GE; Wed, 04 Nov 2026 20:18:46 +0000
Received: by outflank-mailman (input) for mailman id 1472548;
 Wed, 04 Nov 2026 20:18:44 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRT-0002bO-Oq
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRT-00BuII-5L
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:43 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-32
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:43 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9322-f2d2-0a2a450a0019-aa0a857c8a2d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:43 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-92-VowBVlDvMFS89mrsGpqQ2g-1; Wed,
 04 Nov 2026 15:18:40 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id BAD431955F21; Wed,  4 Nov 2026 20:18:38 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 6F7051955EB8; Wed,  4 Nov 2026 20:18:38 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823521;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=vbjdzJandTBXbN/NbJQon1SW3S6mArhMeBbnMOT68dI=;
	b=IVEcBJVzKFDatdnka2euF5wqoYKvNvJn0VVacrgXvpbUa5za+BKMOFioCbqe1l1qLgYPaU
	g5+n9nSbrcUNNzD29d0uBl3WXBCQcDrfKYufabVu24ehQPpZPwpHGaWUCpS+lDaof1Z5uo
	nbxBXIa3Z4j853udgPPiGQ/1kG6SQus=
X-MC-Unique: VowBVlDvMFS89mrsGpqQ2g-1
X-Mimecast-MFC-AGG-ID: VowBVlDvMFS89mrsGpqQ2g_1793823518
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 21/25] target/hppa: use PRIx64 in trace-events
Date: Wed,  4 Nov 2026 15:17:57 -0500
Message-ID: <20261104201802.11556-22-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: EgJE076s1aWik_LGKocpmw2mB-ugu0CxFTYIVdbDeYk_1793823518
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823523-514C7CFC-8F7BC616/35/111497
X-purgate-type: clean
X-purgate-size: 4007

From: Daniel P. Berrangé <berrange@redhat.com>

%lx is not portable to Windows platforms. This bug was not noticed
since the trace events are annotated with 'disable', but this will
be removed in the next commit. Addresses should also be prefixed
with "0x".

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-22-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 target/hppa/trace-events | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/target/hppa/trace-events b/target/hppa/trace-events
index 01761a4559b..9514f039f2d 100644
--- a/target/hppa/trace-events
+++ b/target/hppa/trace-events
@@ -1,19 +1,19 @@
 # See docs/devel/tracing.rst for syntax documentation.
 
 # mem_helper.c
-disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=%08lx"
-disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%lx phys=0x%lx"
-disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%lx size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%lx phys=0x%lx size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%lx va_e=0x%lx pa=0x%" PRIx64
-disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
+disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
+disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
 disable hppa_tlb_ptlb(void *env) "env=%p"
 disable hppa_tlb_ptlb_local(void *env) "env=%p"
 disable hppa_tlb_ptlbe(void *env) "env=%p"
-disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%lx phys=0x%lx"
-disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%lx"
+disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
 
 # op_helper.c
-disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%lx level=%d want=%d"
+disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472547.1680499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRa-0003qo-Cq; Wed, 04 Nov 2026 20:18:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472547.1680499; Wed, 04 Nov 2026 20:18:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRZ-0003jt-4W; Wed, 04 Nov 2026 20:18:49 +0000
Received: by outflank-mailman (input) for mailman id 1472547;
 Wed, 04 Nov 2026 20:18:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRS-0002Nv-Ip
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRR-00FVOo-TO
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:41 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9321-bab6-0a2a0a5309dd-0a2a4508d822-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:41 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9320-f659-0a2a45080019-aa0a817c61f1-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:41 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-675-zdS2rWdHNv-Xv-3HeQGrHg-1; Wed,
 04 Nov 2026 15:18:36 -0500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 9307C1800547; Wed,  4 Nov 2026 20:18:34 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id 44EF21829C21; Wed,  4 Nov 2026 20:18:34 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823520;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=4/XTSFHkdQ+Pw5IV0/sk+ny/n4mSrenG0IJ4ieTlAdY=;
	b=QTtF1gEh99e+JihTEvARNIkW/y6jJ/VGO42k1HZ8BMNwItp6bBbq+yjdq9B3OL/C+NY/Sj
	qbLbSsENtC2WWEd3J3ow3dZ9YEpfpK91KWZJQGeWAvZN2M8+OTF8p/RPSPzg0+M7xoA5yc
	5l7Q/CoUojHOxBq9dnxoKxfU/izxhvo=
X-MC-Unique: zdS2rWdHNv-Xv-3HeQGrHg-1
X-Mimecast-MFC-AGG-ID: zdS2rWdHNv-Xv-3HeQGrHg_1793823514
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>
Subject: [PULL v2 18/25] hw/ppc: remove mistaken use of trace_event_get_state()
Date: Wed,  4 Nov 2026 15:17:54 -0500
Message-ID: <20261104201802.11556-19-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Mimecast-MFC-PROC-ID: i5JMgSt7Tf6LynCT1WCPk195l8ZxaaPbsH7HYHsyO4o_1793823514
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793823521-CE54487B-ECF4AC11/35/111497
X-purgate-type: clean
X-purgate-size: 2737

From: Daniel P. Berrangé <berrange@redhat.com>

Conditional checks must call trace_event_get_state_backends()
which checks the state of all backends (dtrace, ftrace, log,
syslog, simple & ust), while trace_event_get_state() only
validates state for backends using QEMU's internal state
tracking (ftrace, log, syslog, simple).

Furthermore, checking qemu_loglevel_mask() is inappropriate since
there are many trace backends, of which 'log' is only one.

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-19-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/ppc/vof.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/vof.c b/hw/ppc/vof.c
index 873e967f1e4..e2ff9bf96a3 100644
--- a/hw/ppc/vof.c
+++ b/hw/ppc/vof.c
@@ -252,8 +252,7 @@ static uint32_t vof_getprop(const void *fdt, uint32_t nodeph, uint32_t pname,
              */
             ret = proplen;
             /* Do not format a value if tracepoint is silent, for performance */
-            if (trace_event_get_state(TRACE_VOF_GETPROP) &&
-                qemu_loglevel_mask(LOG_TRACE)) {
+            if (trace_event_get_state_backends(TRACE_VOF_GETPROP)) {
                 prop_format(trval, sizeof(trval), prop, ret);
             }
         }
@@ -337,8 +336,7 @@ static uint32_t vof_setprop(MachineState *ms, void *fdt, Vof *vof,
         goto trace_exit;
     }
 
-    if (trace_event_get_state(TRACE_VOF_SETPROP) &&
-        qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state_backends(TRACE_VOF_SETPROP)) {
         prop_format(trval, sizeof(trval), val, vallen);
     }
     ret = vallen;
@@ -584,8 +582,7 @@ static uint32_t vof_write(Vof *vof, uint32_t ihandle, uint32_t buf,
         }
 
         /* FIXME: there is no backend(s) yet so just call a trace */
-        if (trace_event_get_state(TRACE_VOF_WRITE) &&
-            qemu_loglevel_mask(LOG_TRACE)) {
+        if (trace_event_get_state_backends(TRACE_VOF_WRITE)) {
             tmp[cb] = '\0';
             trace_vof_write(ihandle, cb, tmp);
         }
@@ -599,9 +596,7 @@ static void vof_claimed_dump(GArray *claimed)
     int i;
     OfClaimed c;
 
-    if (trace_event_get_state(TRACE_VOF_CLAIMED) &&
-        qemu_loglevel_mask(LOG_TRACE)) {
-
+    if (trace_event_get_state_backends(TRACE_VOF_CLAIMED)) {
         for (i = 0; i < claimed->len; ++i) {
             c = g_array_index(claimed, OfClaimed, i);
             trace_vof_claimed(c.start, c.start + c.size, c.size);
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472555.1680506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRb-00041x-Ky; Wed, 04 Nov 2026 20:18:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472555.1680506; Wed, 04 Nov 2026 20:18:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRa-0003xm-Dj; Wed, 04 Nov 2026 20:18:50 +0000
Received: by outflank-mailman (input) for mailman id 1472555;
 Wed, 04 Nov 2026 20:18:45 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRV-0002yl-9Z
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRU-00FaN9-Ky
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:44 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9318-8faa-0a2a0a5109dd-0a2a4505a500-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:44 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9323-4cb1-0a2a45050019-aa0a817ca341-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:44 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-357-nseSXMS8MA6KZW1lD6Z7mg-1; Wed,
 04 Nov 2026 15:18:42 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 22555195606F; Wed,  4 Nov 2026 20:18:40 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id C59C7301D91B; Wed,  4 Nov 2026 20:18:39 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823523;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=bzIJc3V05DowmcLi7i1y5B9HyXtVMAI3zmPBHgeliGU=;
	b=JfS7rzFEidDE7sGUf46aM5JV4Pax2Dt6c0alZPkhaBSHzJhEHJmbnZASIzajhOCtzXgISO
	ZA3YmDRymJV6MNbKXIfnzvJioHfT2/Ne60Tqf4eQzKM2Cr8kb+gW/WgrWjQLOAy3hO9mFP
	tVRllSq1k62uk2byqOP4es4Jea1KY3U=
X-MC-Unique: nseSXMS8MA6KZW1lD6Z7mg-1
X-Mimecast-MFC-AGG-ID: nseSXMS8MA6KZW1lD6Z7mg_1793823520
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 22/25] trace: remove "disable" property from trace files
Date: Wed,  4 Nov 2026 15:17:58 -0500
Message-ID: <20261104201802.11556-23-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: kUIT7iN_VVCSlh2-rrYlcbOiwbG_CHObL5z99ALD2MY_1793823520
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793823524-2491C2A1-1ABAE911/35/111497
X-purgate-type: clean
X-purgate-size: 4924

From: Daniel P. Berrangé <berrange@redhat.com>

The scenarios are not significant enough to justify its use

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-23-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/display/trace-events  |  2 +-
 target/hppa/trace-events | 28 ++++++++++++++--------------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/hw/display/trace-events b/hw/display/trace-events
index c5e7e42af23..223a085922b 100644
--- a/hw/display/trace-events
+++ b/hw/display/trace-events
@@ -60,7 +60,7 @@ virtio_gpu_dec_inflight_fences(uint32_t inflight) "in-flight- %u"
 virtio_gpu_cmd_suspended(uint32_t cmd) "cmd 0x%x"
 
 # qxl.c
-disable qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t val) "%d %s addr=%u val=%u"
+qxl_io_write_vga(int qid, const char *mode, uint32_t addr, uint32_t val) "%d %s addr=%u val=%u"
 qxl_create_guest_primary(int qid, uint32_t width, uint32_t height, uint64_t mem, uint32_t format, uint32_t position) "%d %ux%u mem=0x%" PRIx64 " %u,%u"
 qxl_create_guest_primary_rest(int qid, int32_t stride, uint32_t type, uint32_t flags) "%d %d,%d,%d"
 qxl_destroy_primary(int qid) "%d"
diff --git a/target/hppa/trace-events b/target/hppa/trace-events
index 9514f039f2d..9fd37b1e2cb 100644
--- a/target/hppa/trace-events
+++ b/target/hppa/trace-events
@@ -1,19 +1,19 @@
 # See docs/devel/tracing.rst for syntax documentation.
 
 # mem_helper.c
-disable hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
-disable hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
-disable hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
-disable hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
-disable hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
-disable hppa_tlb_ptlb(void *env) "env=%p"
-disable hppa_tlb_ptlb_local(void *env) "env=%p"
-disable hppa_tlb_ptlbe(void *env) "env=%p"
-disable hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
-disable hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
+hppa_tlb_flush_ent(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_find_entry(void *env, void *ent, int valid, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p valid=%d va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_find_entry_not_found(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64
+hppa_tlb_get_physical_address(void *env, int ret, int prot, uint64_t addr, uint64_t phys) "env=%p ret=%d prot=%d addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+hppa_tlb_fill_excp(void *env, uint64_t addr, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+hppa_tlb_fill_success(void *env, uint64_t addr, uint64_t phys, int size, int type, int mmu_idx) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 " size=%d type=%d mmu_idx=%d"
+hppa_tlb_itlba(void *env, void *ent, uint64_t va_b, uint64_t va_e, uint64_t pa) "env=%p ent=%p va_b=0x%" PRIx64 " va_e=0x%" PRIx64 " pa=0x%" PRIx64
+hppa_tlb_itlbp(void *env, void *ent, int access_id, int u, int pl2, int pl1, int type, int b, int d, int t) "env=%p ent=%p access_id=0x%x u=%d pl2=%d pl1=%d type=%d b=%d d=%d t=%d"
+hppa_tlb_ptlb(void *env) "env=%p"
+hppa_tlb_ptlb_local(void *env) "env=%p"
+hppa_tlb_ptlbe(void *env) "env=%p"
+hppa_tlb_lpa_success(void *env, uint64_t addr, uint64_t phys) "env=%p addr=0x%" PRIx64 " phys=0x%" PRIx64 ""
+hppa_tlb_lpa_failed(void *env, uint64_t addr) "env=%p addr=0x%" PRIx64 ""
 
 # op_helper.c
-disable hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
+hppa_tlb_probe(uint64_t addr, int level, int want) "addr=0x%" PRIx64 " level=%d want=%d"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472560.1680512 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRc-0004FZ-VO; Wed, 04 Nov 2026 20:18:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472560.1680512; Wed, 04 Nov 2026 20:18:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRb-0004D4-Nd; Wed, 04 Nov 2026 20:18:51 +0000
Received: by outflank-mailman (input) for mailman id 1472560;
 Wed, 04 Nov 2026 20:18:46 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRV-00031B-GC
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRU-00BuII-SV
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:44 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9305-2eae-0a2a0a5409dd-0a2a450acd02-36
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:44 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9323-f2d2-0a2a450a0019-aa0a817c5d03-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:44 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-lZ5o66JzNnSHg7pQePNiqg-1; Wed,
 04 Nov 2026 15:18:39 -0500
Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 87E481955E9C; Wed,  4 Nov 2026 20:18:37 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id C718D301D916; Wed,  4 Nov 2026 20:18:36 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823523;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=qET1C5bDfM2VhuVuw7XPqzaGlvXdrrKHqoGPXvja8g8=;
	b=N2h7B11F4RKWDyXjyHccLudYbubVTwn73+aGG/xHA70/jsoHjwBvbIojiXI+QT+wk/8GRp
	e+oUi0MHA3czkX6WcBGMYqGLtgdImlpu5YOHyTDatGShKQTNtjfeIpFP9Q2M/Awr6Rx8w9
	18t8CGLfPSN9AK0XTnG37iApI8c66ak=
X-MC-Unique: lZ5o66JzNnSHg7pQePNiqg-1
X-Mimecast-MFC-AGG-ID: lZ5o66JzNnSHg7pQePNiqg_1793823517
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 20/25] trace: include qemu_loglevel_mask(LOG_TRACE) in guard
Date: Wed,  4 Nov 2026 15:17:56 -0500
Message-ID: <20261104201802.11556-21-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4
X-Mimecast-MFC-PROC-ID: l4Bg5CrEwMx9gNhromCQCKBlg4lXJF3KERHofc3as3w_1793823517
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793823524-510C9CFC-BC8C723E/35/111497
X-purgate-type: clean
X-purgate-size: 12543

From: Daniel P. Berrangé <berrange@redhat.com>

If emitting a trace event requires computation for the parameters
passed to the probe, the callers should guard that computation
with trace_event_by_state_backends(), which is a macro expanding
to a check of the "TRACE_...._DSTATE()" expression. For the
log backend this should include a check for LOG_TRACE being
present in the configured log level.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/tracetool/all.h            | 34 +++++++++++++++++++-------------
 tests/tracetool/log.h            | 20 +++++++++----------
 scripts/tracetool/backend/log.py | 24 +++++++++++++++++-----
 tests/tracetool/all.rs           | 16 +++++++++++----
 tests/tracetool/log.rs           |  6 ++++--
 5 files changed, 65 insertions(+), 35 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 5627c1d8930..0ae2598eb1d 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -44,6 +44,8 @@ void _simple_trace_test_wibble(void *context, int value);
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     QEMU_TEST_BLAH_ENABLED() || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     tracepoint_enabled(qemu, test_blah) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
     false)
@@ -51,25 +53,28 @@ void _simple_trace_test_wibble(void *context, int value);
 static inline void trace_test_blah(void *context, const char *filename)
 {
     QEMU_TEST_BLAH(context, filename);
+    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
+#line 4 "trace-events"
+            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
+#line 61 "all.h"
+    }
     tracepoint(qemu, test_blah, context, filename);
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 59 "all.h"
-        if (qemu_loglevel_mask(LOG_TRACE)) {
-#line 4 "trace-events"
-            qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 63 "all.h"
-        }
+#line 67 "all.h"
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 68 "all.h"
+#line 71 "all.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
     QEMU_TEST_WIBBLE_ENABLED() || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     tracepoint_enabled(qemu, test_wibble) || \
     trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
     false)
@@ -77,20 +82,21 @@ static inline void trace_test_blah(void *context, const char *filename)
 static inline void trace_test_wibble(void *context, int value)
 {
     QEMU_TEST_WIBBLE(context, value);
+    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
+#line 5 "trace-events"
+            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
+#line 90 "all.h"
+    }
     tracepoint(qemu, test_wibble, context, value);
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 85 "all.h"
-        if (qemu_loglevel_mask(LOG_TRACE)) {
-#line 5 "trace-events"
-            qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 89 "all.h"
-        }
+#line 96 "all.h"
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 94 "all.h"
+#line 100 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index ff510d54908..9957a854c00 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -16,32 +16,32 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     false)
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
-        if (qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 29 "log.h"
-        }
+#line 30 "log.h"
     }
 }
 
 #define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
-    trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
+    (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) && \
+     qemu_loglevel_mask(LOG_TRACE)) || \
     false)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
-        if (qemu_loglevel_mask(LOG_TRACE)) {
+    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+        qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 44 "log.h"
-        }
+#line 45 "log.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 577ee158584..0e7909efe8b 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -16,7 +16,6 @@
 
 
 PUBLIC = True
-CHECK_TRACE_EVENT_GET_STATE = True
 
 
 def generate_h_begin(events, group):
@@ -29,11 +28,13 @@ def generate_h(event, group):
     if len(event.args) > 0:
         argnames = ", " + argnames
 
-    out('        if (qemu_loglevel_mask(LOG_TRACE)) {',
+    out('    if (trace_event_get_state(%(event_id)s) &&',
+        '        qemu_loglevel_mask(LOG_TRACE)) {',
         '#line %(event_lineno)d "%(event_filename)s"',
         '            qemu_log("%(name)s " %(fmt)s "\\n"%(argnames)s);',
         '#line %(out_next_lineno)d "%(out_filename)s"',
-        '        }',
+        '    }',
+        event_id="TRACE_" + event.name.upper(),
         event_lineno=event.lineno,
         event_filename=event.filename,
         name=event.name,
@@ -41,10 +42,23 @@ def generate_h(event, group):
         argnames=argnames)
 
 
+def generate_h_backend_dstate(event, group):
+    out('    (trace_event_get_state_dynamic_by_id(%(event_id)s) && \\',
+        '     qemu_loglevel_mask(LOG_TRACE)) || \\',
+        event_id="TRACE_" + event.name.upper())
+
 def generate_rs(event, group):
-    out('        let format_string = c"%(fmt)s\\n";',
+    out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
+        '        let format_string = c"%(fmt)s\\n";',
         '        if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {',
         '            unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, %(args)s);}',
         '        }',
+        '    }',
         fmt=expand_format_string(event.fmt, event.name + " "),
-        args=event.args.rust_call_varargs())
+        args=event.args.rust_call_varargs(),
+        event_id="TRACE_" + event.name.upper())
+
+def generate_rs_backend_dstate(event, group):
+    out('    ((unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 &&',
+        '     trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE})) ||',
+        event_id="TRACE_" + event.name.upper())
diff --git a/tests/tracetool/all.rs b/tests/tracetool/all.rs
index f48bdf4aab5..eb94d5c62a5 100644
--- a/tests/tracetool/all.rs
+++ b/tests/tracetool/all.rs
@@ -37,6 +37,8 @@ fn trace_event_state_is_enabled(dstate: u8) -> bool {
 pub fn trace_test_blah_enabled() -> bool
 {
     (unsafe {qemu_test_blah_semaphore.get().read_volatile()}) != 0 ||
+    ((unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 &&
+     trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE})) ||
     trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
     false
 }
@@ -47,12 +49,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 {
     ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr());
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
-        let format_string = c"test_blah Blah context=%p filename=%s\n";
-        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         let format_string = c"test_blah Blah context=%p filename=%s\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
             unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         }
+    }
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
+        let format_string = c"test_blah Blah context=%p filename=%s\n";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _filename.as_ptr());}
         extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
         unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
         let format_string = c"test_blah Blah context=%p filename=%s";
@@ -65,6 +69,8 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 pub fn trace_test_wibble_enabled() -> bool
 {
     (unsafe {qemu_test_wibble_semaphore.get().read_volatile()}) != 0 ||
+    ((unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 &&
+     trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE})) ||
     trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
     false
 }
@@ -75,12 +81,14 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
 {
     ::trace::probe!(qemu, test_wibble, _context, _value);
     if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
-        let format_string = c"test_wibble Wibble context=%p value=%d\n";
-        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         let format_string = c"test_wibble Wibble context=%p value=%d\n";
         if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 {
             unsafe { bindings::qemu_log(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         }
+    }
+    if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
+        let format_string = c"test_wibble Wibble context=%p value=%d\n";
+        unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int */);}
         extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
         unsafe { _simple_trace_test_wibble(_context, _value); }
         let format_string = c"test_wibble Wibble context=%p value=%d";
diff --git a/tests/tracetool/log.rs b/tests/tracetool/log.rs
index 0f052bb2c9c..17597209b7c 100644
--- a/tests/tracetool/log.rs
+++ b/tests/tracetool/log.rs
@@ -27,7 +27,8 @@ fn trace_event_state_is_enabled(dstate: u8) -> bool {
 #[allow(dead_code)]
 pub fn trace_test_blah_enabled() -> bool
 {
-    trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) ||
+    ((unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 &&
+     trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE})) ||
     false
 }
 
@@ -47,7 +48,8 @@ pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
 #[allow(dead_code)]
 pub fn trace_test_wibble_enabled() -> bool
 {
-    trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) ||
+    ((unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE) != 0 &&
+     trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE})) ||
     false
 }
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472571.1680520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRf-0004mS-8e; Wed, 04 Nov 2026 20:18:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472571.1680520; Wed, 04 Nov 2026 20:18:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRe-0004fp-2H; Wed, 04 Nov 2026 20:18:54 +0000
Received: by outflank-mailman (input) for mailman id 1472571;
 Wed, 04 Nov 2026 20:18:50 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRZ-0003kt-D4
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRY-00BuII-Om
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:48 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9328-2eae-0a2a0a5409dd-0a2a45078680-0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:48 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9327-b4ea-0a2a45070019-aa0a857cc851-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:48 +0100
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-280-dGA9SqUMNreAxbtGZFRaGg-1; Wed,
 04 Nov 2026 15:18:43 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id C7AFD195607B; Wed,  4 Nov 2026 20:18:41 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id E6AE918004FC; Wed,  4 Nov 2026 20:18:40 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823527;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=z+pc48rjFwC1YPMnBCEt4xr6ekBLWcGs39MtawFeyiM=;
	b=LPX3MDt8TFxOUdrNw2qI1RSReLbL1/GIMvdL+dgKNlGQjHqsrhK1KsRBulWFuU+ItIr4Ks
	CgxlGFbtCdOCxgNOaEVFIUEbng8d+Ad6CSpcewQj0UvDMPAneHm/MnNjxwEh2/2rPOqp20
	EolvoSkd6iw3SiyNBVi+9Ra3E+JpJWI=
X-MC-Unique: dGA9SqUMNreAxbtGZFRaGg-1
X-Mimecast-MFC-AGG-ID: dGA9SqUMNreAxbtGZFRaGg_1793823521
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 23/25] trace: stop tracking static disabled state
Date: Wed,  4 Nov 2026 15:17:59 -0500
Message-ID: <20261104201802.11556-24-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: dqXdXLUmCZLWnGhvLZDwB2sISL0TAnQlO30TCyp8NIE_1793823521
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1793823528-356C2AE4-FC3B731F/35/111497
X-purgate-type: clean
X-purgate-size: 24322

From: Daniel P. Berrangé <berrange@redhat.com>

The TraceEvent struct contains a "bool sstate" field which track whether
a trace event was disabled statically. i.e. at build time via the
"disable" property annotation in trace-events.

The only runtime use of this field is to let "trace-event-get-state"
report that an event is "unavailable" instead of reporting an error for
an unknown trace event.

Trace events are not ABI so their names can change and the event can
come and go at any time. Thus there is little utility in reporting the
existence of a disabled event that cannot ever be used at runtime.

Removing the "bool sstate" field from TraceEvent saves 8 bytes of
space in the struct, adding up to approx 64 KB across all current
events.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-24-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 qapi/trace.json               |  5 ++--
 tests/tracetool/all.h         | 14 +++++------
 tests/tracetool/dtrace.h      |  2 --
 tests/tracetool/ftrace.h      |  6 ++---
 tests/tracetool/log.h         |  6 ++---
 tests/tracetool/nop.h         |  2 --
 tests/tracetool/simple.h      |  2 --
 tests/tracetool/syslog.h      |  6 ++---
 tests/tracetool/ust.h         |  2 --
 trace/control-internal.h      |  6 -----
 trace/control.h               | 27 +++-----------------
 trace/event-internal.h        |  2 --
 stubs/trace-control.c         |  1 -
 tests/tracetool/all.c         |  2 --
 tests/tracetool/dtrace.c      |  2 --
 tests/tracetool/ftrace.c      |  2 --
 tests/tracetool/log.c         |  2 --
 tests/tracetool/simple.c      |  2 --
 tests/tracetool/syslog.c      |  2 --
 tests/tracetool/ust.c         |  2 --
 trace/control-target.c        |  2 --
 trace/control.c               |  9 -------
 trace/qmp.c                   | 47 ++++++++++-------------------------
 scripts/tracetool/format/c.py |  2 --
 scripts/tracetool/format/h.py |  8 ------
 25 files changed, 31 insertions(+), 132 deletions(-)

diff --git a/qapi/trace.json b/qapi/trace.json
index 29c76256055..8533e378977 100644
--- a/qapi/trace.json
+++ b/qapi/trace.json
@@ -16,8 +16,6 @@
 # @TraceEventState:
 #     State of a tracing event.
 #
-# @unavailable: The event is statically disabled.
-#
 # @disabled: The event is dynamically disabled.
 #
 # @enabled: The event is dynamically enabled.
@@ -25,7 +23,7 @@
 # Since: 2.2
 ##
 { 'enum': 'TraceEventState',
-  'data': ['unavailable', 'disabled', 'enabled'] }
+  'data': ['disabled', 'enabled'] }
 
 ##
 # @TraceEventInfo:
@@ -69,6 +67,7 @@
 # @enable: Whether to enable tracing.
 #
 # @ignore-unavailable: Do not match unavailable events with @name.
+#      Deprecated: since 11.2
 #
 # Since: 2.2
 #
diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 0ae2598eb1d..01971827e4b 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
 #define SDT_USE_VARIADIC 1
 #endif
@@ -57,17 +55,17 @@ static inline void trace_test_blah(void *context, const char *filename)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 61 "all.h"
+#line 59 "all.h"
     }
     tracepoint(qemu, test_blah, context, filename);
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 67 "all.h"
+#line 65 "all.h"
         _simple_trace_test_blah(context, filename);
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 71 "all.h"
+#line 69 "all.h"
     }
 }
 
@@ -86,17 +84,17 @@ static inline void trace_test_wibble(void *context, int value)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 90 "all.h"
+#line 88 "all.h"
     }
     tracepoint(qemu, test_wibble, context, value);
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 96 "all.h"
+#line 94 "all.h"
         _simple_trace_test_wibble(context, value);
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 100 "all.h"
+#line 98 "all.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/dtrace.h b/tests/tracetool/dtrace.h
index 0b5b47089e8..b9283851eb0 100644
--- a/tests/tracetool/dtrace.h
+++ b/tests/tracetool/dtrace.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #ifndef SDT_USE_VARIADIC
 #define SDT_USE_VARIADIC 1
 #endif
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index b34eef17d10..4eba6b4d599 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include "trace/ftrace.h"
 
 
@@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
-#line 28 "ftrace.h"
+#line 26 "ftrace.h"
     }
 }
 
@@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
-#line 41 "ftrace.h"
+#line 39 "ftrace.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index 9957a854c00..9afbe721a47 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include "qemu/log-for-trace.h"
 
 
@@ -26,7 +24,7 @@ static inline void trace_test_blah(void *context, const char *filename)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
-#line 30 "log.h"
+#line 28 "log.h"
     }
 }
 
@@ -41,7 +39,7 @@ static inline void trace_test_wibble(void *context, int value)
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
-#line 45 "log.h"
+#line 43 "log.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
index 64b6b005684..00771577943 100644
--- a/tests/tracetool/nop.h
+++ b/tests/tracetool/nop.h
@@ -8,8 +8,6 @@
 
 #define _TRACE_TEST_BLAH_DSTATE 0
 #define _TRACE_TEST_WIBBLE_DSTATE 0
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 
 #define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
     false)
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index 735cb21d911..9b066364b0a 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 void _simple_trace_test_blah(void *context, const char *filename);
 void _simple_trace_test_wibble(void *context, int value);
 
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index 4203b8b37dc..6a9304489f6 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include <syslog.h>
 
 
@@ -24,7 +22,7 @@ static inline void trace_test_blah(void *context, const char *filename)
     if (trace_event_get_state(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
-#line 28 "syslog.h"
+#line 26 "syslog.h"
     }
 }
 
@@ -37,7 +35,7 @@ static inline void trace_test_wibble(void *context, int value)
     if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
-#line 41 "syslog.h"
+#line 39 "syslog.h"
     }
 }
 #endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
diff --git a/tests/tracetool/ust.h b/tests/tracetool/ust.h
index 079b2c74491..c6c5d6d7c1c 100644
--- a/tests/tracetool/ust.h
+++ b/tests/tracetool/ust.h
@@ -10,8 +10,6 @@ extern TraceEvent _TRACE_TEST_BLAH_EVENT;
 extern TraceEvent _TRACE_TEST_WIBBLE_EVENT;
 extern uint8_t _TRACE_TEST_BLAH_DSTATE;
 extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
-#define TRACE_TEST_BLAH_ENABLED 1
-#define TRACE_TEST_WIBBLE_ENABLED 1
 #include <lttng/tracepoint.h>
 #include "trace-ust-testsuite.h"
 
diff --git a/trace/control-internal.h b/trace/control-internal.h
index f626b047264..9a95e6714bb 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -33,12 +33,6 @@ static inline const char * trace_event_get_name(TraceEvent *ev)
     return ev->name;
 }
 
-static inline bool trace_event_get_state_static(TraceEvent *ev)
-{
-    assert(ev != NULL);
-    return ev->sstate;
-}
-
 /* it's on fast path, avoid consistency checks (asserts) */
 #define trace_event_get_state_dynamic_by_id(id) \
     (unlikely(trace_events_enabled_count) && _ ## id ## _DSTATE)
diff --git a/trace/control.h b/trace/control.h
index e77c07a8e68..71f254728d4 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -102,39 +102,21 @@ static const char * trace_event_get_name(TraceEvent *ev);
  * @id: Event identifier name.
  *
  * Get the tracing state of an event, both static and the QEMU dynamic state.
- *
- * If the event has the disabled property, the check will have no performance
- * impact.
  */
 #define trace_event_get_state(id)                       \
-    ((id ##_ENABLED) && trace_event_get_state_dynamic_by_id(id))
+    (trace_event_get_state_dynamic_by_id(id))
 
 /**
  * trace_event_get_state_backends:
  * @id: Event identifier name.
  *
- * Get the tracing state of an event, both static and dynamic state from all
+ * Get the tracing state of an event from all
  * compiled-in backends.
  *
- * If the event has the disabled property, the check will have no performance
- * impact.
- *
- * Returns: true if at least one backend has the event enabled and the event
- * does not have the disabled property.
+ * Returns: true if at least one backend has the event enabled
  */
 #define trace_event_get_state_backends(id)              \
-    ((id ##_ENABLED) && id ##_BACKEND_DSTATE())
-
-/**
- * trace_event_get_state_static:
- * @id: Event identifier.
- *
- * Get the static tracing state of an event.
- *
- * Use the define 'TRACE_${EVENT_NAME}_ENABLED' for compile-time checks (it will
- * be set to 1 or 0 according to the presence of the disabled property).
- */
-static bool trace_event_get_state_static(TraceEvent *ev);
+    (id ##_BACKEND_DSTATE())
 
 /**
  * trace_event_get_state_dynamic:
@@ -148,7 +130,6 @@ static bool trace_event_get_state_dynamic(TraceEvent *ev);
  *
  * Set the dynamic tracing state of an event.
  *
- * Pre-condition: trace_event_get_state_static(ev) == true
  */
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
 
diff --git a/trace/event-internal.h b/trace/event-internal.h
index ad1578aa2c5..40f06691063 100644
--- a/trace/event-internal.h
+++ b/trace/event-internal.h
@@ -14,7 +14,6 @@
  * TraceEvent:
  * @id: Unique event identifier.
  * @name: Event name.
- * @sstate: Static tracing state.
  * @dstate: Dynamic tracing state
  *
  * Opaque generic description of a tracing event.
@@ -24,7 +23,6 @@ typedef struct TraceEvent {
     uint32_t id;
 #endif
     const char * name;
-    const bool sstate;
     uint8_t *dstate;
 } TraceEvent;
 
diff --git a/stubs/trace-control.c b/stubs/trace-control.c
index 3f196835db0..6016307ed8b 100644
--- a/stubs/trace-control.c
+++ b/stubs/trace-control.c
@@ -14,7 +14,6 @@
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
     bool state_pre;
-    assert(trace_event_get_state_static(ev));
 
     /*
      * We ignore the "vcpu" property here, since there's no target code. Then
diff --git a/tests/tracetool/all.c b/tests/tracetool/all.c
index 3b8d4d32d17..670f9f06e85 100644
--- a/tests/tracetool/all.c
+++ b/tests/tracetool/all.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/dtrace.c b/tests/tracetool/dtrace.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/dtrace.c
+++ b/tests/tracetool/dtrace.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/ftrace.c b/tests/tracetool/ftrace.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/ftrace.c
+++ b/tests/tracetool/ftrace.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/log.c b/tests/tracetool/log.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/log.c
+++ b/tests/tracetool/log.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/simple.c b/tests/tracetool/simple.c
index 3b8d4d32d17..670f9f06e85 100644
--- a/tests/tracetool/simple.c
+++ b/tests/tracetool/simple.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/syslog.c b/tests/tracetool/syslog.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/syslog.c
+++ b/tests/tracetool/syslog.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/tests/tracetool/ust.c b/tests/tracetool/ust.c
index f83d06252ea..d51ba85503a 100644
--- a/tests/tracetool/ust.c
+++ b/tests/tracetool/ust.c
@@ -12,7 +12,6 @@ TraceEvent _TRACE_TEST_BLAH_EVENT = {
     .id = 0,
 #endif
     .name = "test_blah",
-    .sstate = TRACE_TEST_BLAH_ENABLED,
     .dstate = &_TRACE_TEST_BLAH_DSTATE
 };
 TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
@@ -20,7 +19,6 @@ TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
     .id = 0,
 #endif
     .name = "test_wibble",
-    .sstate = TRACE_TEST_WIBBLE_ENABLED,
     .dstate = &_TRACE_TEST_WIBBLE_DSTATE
 };
 TraceEvent *testsuite_trace_events[] = {
diff --git a/trace/control-target.c b/trace/control-target.c
index 87b0f5037df..348125a5822 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -12,8 +12,6 @@
 
 void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
 {
-    assert(trace_event_get_state_static(ev));
-
     bool state_pre = *ev->dstate;
     if (state_pre != state) {
         if (state) {
diff --git a/trace/control.c b/trace/control.c
index 947b220056a..d414b1a9072 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -167,15 +167,6 @@ static void do_trace_enable_events(const char *line_buf)
 
     trace_event_iter_init_pattern(&iter, line_ptr);
     while ((ev = trace_event_iter_next(&iter)) != NULL) {
-        if (!trace_event_get_state_static(ev)) {
-            if (!is_pattern) {
-                warn_report("trace event '%s' is not traceable",
-                            line_ptr);
-                return;
-            }
-            continue;
-        }
-
         /* start tracing */
         trace_event_set_state_dynamic(ev, enable);
         if (!is_pattern) {
diff --git a/trace/qmp.c b/trace/qmp.c
index 074a27b204f..331496a1471 100644
--- a/trace/qmp.c
+++ b/trace/qmp.c
@@ -11,9 +11,10 @@
 #include "qapi/error.h"
 #include "qapi/qapi-commands-trace.h"
 #include "control.h"
+#include "qemu/error-report.h"
 
 
-static bool check_events(bool ignore_unavailable, bool is_pattern,
+static bool check_events(bool is_pattern,
                          const char *name, Error **errp)
 {
     if (!is_pattern) {
@@ -24,27 +25,8 @@ static bool check_events(bool ignore_unavailable, bool is_pattern,
             error_setg(errp, "unknown event \"%s\"", name);
             return false;
         }
-
-        /* error for unavailable event */
-        if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
-            error_setg(errp, "event \"%s\" is disabled", name);
-            return false;
-        }
-
-        return true;
-    } else {
-        /* error for unavailable events */
-        TraceEventIter iter;
-        TraceEvent *ev;
-        trace_event_iter_init_pattern(&iter, name);
-        while ((ev = trace_event_iter_next(&iter)) != NULL) {
-            if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
-                error_setg(errp, "event \"%s\" is disabled", trace_event_get_name(ev));
-                return false;
-            }
-        }
-        return true;
     }
+    return true;
 }
 
 TraceEventInfoList *qmp_trace_event_get_state(const char *name,
@@ -56,7 +38,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
     bool is_pattern = trace_event_is_pattern(name);
 
     /* Check events */
-    if (!check_events(true, is_pattern, name, errp)) {
+    if (!check_events(is_pattern, name, errp)) {
         return NULL;
     }
 
@@ -68,14 +50,10 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
         value = g_new(TraceEventInfo, 1);
         value->name = g_strdup(trace_event_get_name(ev));
 
-        if (!trace_event_get_state_static(ev)) {
-            value->state = TRACE_EVENT_STATE_UNAVAILABLE;
+        if (trace_event_get_state_dynamic(ev)) {
+            value->state = TRACE_EVENT_STATE_ENABLED;
         } else {
-            if (trace_event_get_state_dynamic(ev)) {
-                value->state = TRACE_EVENT_STATE_ENABLED;
-            } else {
-                value->state = TRACE_EVENT_STATE_DISABLED;
-            }
+            value->state = TRACE_EVENT_STATE_DISABLED;
         }
         QAPI_LIST_PREPEND(events, value);
     }
@@ -91,18 +69,19 @@ void qmp_trace_event_set_state(const char *name, bool enable,
     TraceEvent *ev;
     bool is_pattern = trace_event_is_pattern(name);
 
+    if (has_ignore_unavailable && ignore_unavailable) {
+        warn_report_once("the 'ignore-unavailable' property is deprecated "
+                         "and has no effect");
+    }
+
     /* Check events */
-    if (!check_events(has_ignore_unavailable && ignore_unavailable,
-                      is_pattern, name, errp)) {
+    if (!check_events(is_pattern, name, errp)) {
         return;
     }
 
     /* Apply changes (all errors checked above) */
     trace_event_iter_init_pattern(&iter, name);
     while ((ev = trace_event_iter_next(&iter)) != NULL) {
-        if (!trace_event_get_state_static(ev)) {
-            continue;
-        }
         trace_event_set_state_dynamic(ev, enable);
     }
 }
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 5f6669c917c..9f06894623e 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -39,12 +39,10 @@ def generate(events, backend, group):
                 '    .id = 0,',
                 '#endif',
                 '    .name = \"%(name)s\",',
-                '    .sstate = %(sstate)s,',
                 '    .dstate = &%(dstate)s',
                 '};',
                 event = e.api(e.QEMU_EVENT),
                 name = e.name,
-                sstate = "TRACE_%s_ENABLED" % e.name.upper(),
                 dstate = e.api(e.QEMU_DSTATE))
 
         out('TraceEvent *%(group)s_trace_events[] = {',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 5ad3a419f82..544bbc0ba93 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -38,14 +38,6 @@ def generate(events, backend, group):
         for e in events:
             out('#define %s 0' % e.api(e.QEMU_DSTATE))
 
-    # static state
-    for e in events:
-        if 'disable' in e.properties:
-            enabled = 0
-        else:
-            enabled = 1
-        out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled))
-
     backend.generate_begin(events, group)
 
     for e in events:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:18:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:18:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472577.1680528 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRh-000551-4G; Wed, 04 Nov 2026 20:18:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472577.1680528; Wed, 04 Nov 2026 20:18:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRf-00050n-HR; Wed, 04 Nov 2026 20:18:55 +0000
Received: by outflank-mailman (input) for mailman id 1472577;
 Wed, 04 Nov 2026 20:18:52 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRb-00043T-1d
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRa-00FaN9-CC
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:50 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92fe-8faa-0a2a0a5109dd-0a2a450489b2-28
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:50 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb9329-b57f-0a2a45040019-aa0a817cb317-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:50 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-333-U_0NOw0JMTG5B1fJWdDKJg-1; Wed,
 04 Nov 2026 15:18:44 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 087B91955EA9; Wed,  4 Nov 2026 20:18:43 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id AC81218004FC; Wed,  4 Nov 2026 20:18:42 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823528;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iBUiZ9J/MXAwZUcV5uBewFxgpdyM35rzQHUpr8XDSZ8=;
	b=Mqxe8DEJJIvYJ8BSWCx9d5NKPudxY3VDddMhm5yGt5jeGZiY1r1gRGVR4hAkOllMTvESS4
	DRRcOWEqXFNasTJp+pbvE4vm/rSiaf3wXPtrrGy9gcdmnJGHoSEyXcNiRlnTgIRx4QLUvp
	gA4gZITuN5MIYRINCUOFdy/tdEI/P7E=
X-MC-Unique: U_0NOw0JMTG5B1fJWdDKJg-1
X-Mimecast-MFC-AGG-ID: U_0NOw0JMTG5B1fJWdDKJg_1793823523
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 24/25] trace: remove parsing of "disable" event property
Date: Wed,  4 Nov 2026 15:18:00 -0500
Message-ID: <20261104201802.11556-25-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: uJwLsL2D9X0e3gWC2-4elq_xQGF5nH9stbUkDxtWoqI_1793823523
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793823530-52ECEB50-41DB3AF4/35/111497
X-purgate-type: clean
X-purgate-size: 15713

From: Daniel P. Berrangé <berrange@redhat.com>

Finish the removal of the "disable" event property by removing code
that parses properties and the backend code generators.

This "fixes" a bug in the UST backends which looked for a property
called "disabled" instead of "disable".

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-25-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 docs/devel/tracing.rst                       | 27 +++---------------
 scripts/tracetool/__init__.py                | 27 ++++--------------
 scripts/tracetool/backend/dtrace.py          |  2 --
 scripts/tracetool/format/c.py                |  9 ++----
 scripts/tracetool/format/d.py                |  3 --
 scripts/tracetool/format/h.py                | 30 +++++++++-----------
 scripts/tracetool/format/log_stap.py         |  3 --
 scripts/tracetool/format/rs.py               | 26 ++++++++---------
 scripts/tracetool/format/simpletrace_stap.py |  3 --
 scripts/tracetool/format/stap.py             |  3 --
 scripts/tracetool/format/ust_events_c.py     |  3 --
 scripts/tracetool/format/ust_events_h.py     |  3 --
 12 files changed, 39 insertions(+), 100 deletions(-)

diff --git a/docs/devel/tracing.rst b/docs/devel/tracing.rst
index f4557ee20e4..4bc344f0331 100644
--- a/docs/devel/tracing.rst
+++ b/docs/devel/tracing.rst
@@ -230,9 +230,6 @@ The "nop" backend generates empty trace event functions so that the compiler
 can optimize out trace events completely.  This imposes no performance
 penalty.
 
-Note that regardless of the selected trace backend, events with the "disable"
-property will be generated with the "nop" backend.
-
 Log
 ---
 
@@ -366,30 +363,14 @@ To facilitate simple usage of systemtap where there merely needs to be printf
 logging of certain probes, a helper script "qemu-trace-stap" is provided.
 Consult its manual page for guidance on its usage.
 
-Trace event properties
+Trace event conditions
 ======================
 
-Each event in the "trace-events-all" file can be prefixed with a space-separated
-list of zero or more of the following event properties.
-
-"disable"
----------
-
-If a specific trace event is going to be invoked a huge number of times, this
-might have a noticeable performance impact even when the event is
-programmatically disabled.
-
-In this case you should declare such event with the "disable" property. This
-will effectively disable the event at compile time (by using the "nop" backend),
-thus having no performance impact at all on regular builds (i.e., unless you
-edit the "trace-events-all" file).
-
-In addition, there might be cases where relatively complex computations must be
+There might be cases where relatively complex computations must be
 performed to generate values that are only used as arguments for a trace
 function. In these cases you can use 'trace_event_get_state_backends()' to
-guard such computations, so they are skipped if the event has been either
-compile-time disabled or run-time disabled. If the event is compile-time
-disabled, this check will have no performance impact.
+guard such computations, so they are skipped if the event is not currently
+enabled:
 
 ::
 
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 6ed7cdd6ce4..bdbb06b5205 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -362,8 +362,6 @@ class Event(object):
         The event name.
     fmt : str
         The event format string.
-    properties : set(str)
-        Properties of the event.
     args : Arguments
         The event arguments.
     lineno : int
@@ -373,23 +371,18 @@ class Event(object):
 
     """
 
-    _CRE = re.compile(r"((?P<props>[\w\s]+)\s+)?"
-                      r"(?P<name>\w+)"
+    _CRE = re.compile(r"(?P<name>\w+)"
                       r"\((?P<args>[^)]*)\)"
                       r"\s*"
                       r"(?P<fmt>\".+)?"
                       r"\s*")
 
-    _VALID_PROPS = set(["disable"])
-
-    def __init__(self, name, props, fmt, args, lineno, filename):
+    def __init__(self, name, fmt, args, lineno, filename):
         """
         Parameters
         ----------
         name : string
             Event name.
-        props : list of str
-            Property names.
         fmt : str
             Event printing format string.
         args : Arguments
@@ -401,7 +394,6 @@ def __init__(self, name, props, fmt, args, lineno, filename):
 
         """
         self.name = name
-        self.properties = props
         self.fmt = fmt
         self.args = args
         self.lineno = int(lineno)
@@ -411,11 +403,6 @@ def __init__(self, name, props, fmt, args, lineno, filename):
             raise ValueError("Event '%s' has more than maximum permitted "
                              "argument count" % name)
 
-        unknown_props = set(self.properties) - self._VALID_PROPS
-        if len(unknown_props) > 0:
-            raise ValueError("Unknown properties: %s"
-                             % ", ".join(unknown_props))
-
 
     @staticmethod
     def build(line_str, lineno, filename):
@@ -435,7 +422,6 @@ def build(line_str, lineno, filename):
         groups = m.groupdict('')
 
         name = groups["name"]
-        props = groups["props"].split()
         fmt = groups["fmt"]
         if fmt.find("%m") != -1:
             raise ValueError("Event format '%m' is forbidden, pass the error "
@@ -448,14 +434,13 @@ def build(line_str, lineno, filename):
 
         args = Arguments.build(groups["args"])
 
-        return Event(name, props, fmt, args, lineno, posix_relpath(filename))
+        return Event(name, fmt, args, lineno, posix_relpath(filename))
 
     def __repr__(self):
         """Evaluable string representation for this object."""
-        return "Event('%s %s(%s) %s')" % (" ".join(self.properties),
-                                          self.name,
-                                          self.args,
-                                          self.fmt)
+        return "Event('%s(%s) %s')" % (self.name,
+                                       self.args,
+                                       self.fmt)
     # Star matching on PRI is dangerous as one might have multiple
     # arguments with that format, hence the non-greedy version of it.
     _FMT = re.compile(r"(%[\d\.]*\w+|%.*?PRI\S+)")
diff --git a/scripts/tracetool/backend/dtrace.py b/scripts/tracetool/backend/dtrace.py
index f0b58cc1585..6bce25c8d2d 100644
--- a/scripts/tracetool/backend/dtrace.py
+++ b/scripts/tracetool/backend/dtrace.py
@@ -79,8 +79,6 @@ def generate_rs_begin(events, group):
     # These are the Rust declarations of the .probes section semaphores
     # generated by dtrace(1) in its .o file output.
     for e in events:
-        if 'disable' in e.properties:
-            continue
         out('    #[allow(dead_code)]',
             f'    static qemu_{e.name}_semaphore: UnsafeCell<u16>;')
     out('}',
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 9f06894623e..3754c7e06fd 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    active_events = [e for e in events
-                     if "disable" not in e.properties]
-
     header = "trace-" + group + ".h"
 
     out('/* This file is autogenerated by tracetool, do not edit. */',
@@ -62,7 +59,7 @@ def generate(events, backend, group):
             'trace_init(trace_%(group)s_register_events)',
             group = group.lower())
 
-        backend.generate_begin(active_events, group)
-        for event in active_events:
+        backend.generate_begin(events, group)
+        for event in events:
             backend.generate(event, group)
-        backend.generate_end(active_events, group)
+        backend.generate_end(events, group)
diff --git a/scripts/tracetool/format/d.py b/scripts/tracetool/format/d.py
index e9e33dfe30a..df7780cb0af 100644
--- a/scripts/tracetool/format/d.py
+++ b/scripts/tracetool/format/d.py
@@ -30,9 +30,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disable" not in e.properties]
-
     # SystemTap's dtrace(1) warns about empty "provider qemu {}" but is happy
     # with an empty file.  Avoid the warning.
     # But dtrace on macOS can't deal with empty files.
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 544bbc0ba93..f719fe09397 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -46,14 +46,13 @@ def generate(events, backend, group):
             '#define %(api)s() ( \\',
             api=e.api(e.QEMU_BACKEND_DSTATE))
 
-        if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
+        backend.generate_backend_dstate(e, group, check_trace_event_get_state=False)
 
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
-                    event_id=event_id)
-                backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            out('    trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
+                event_id=event_id)
+            backend.generate_backend_dstate(e, group, check_trace_event_get_state=True)
 
         out('    false)')
 
@@ -63,16 +62,15 @@ def generate(events, backend, group):
             api=e.api(),
             args=e.args)
 
-        if "disable" not in e.properties:
-            backend.generate(e, group, check_trace_event_get_state=False)
+        backend.generate(e, group, check_trace_event_get_state=False)
 
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                cond = "trace_event_get_state(%s)" % event_id
-                out('    if (%(cond)s) {',
-                        cond=cond)
-                backend.generate(e, group, check_trace_event_get_state=True)
-                out('    }')
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            cond = "trace_event_get_state(%s)" % event_id
+            out('    if (%(cond)s) {',
+                cond=cond)
+            backend.generate(e, group, check_trace_event_get_state=True)
+            out('    }')
         out('}')
 
     backend.generate_end(events, group)
diff --git a/scripts/tracetool/format/log_stap.py b/scripts/tracetool/format/log_stap.py
index 259303a189d..3fa6c2dd3f2 100644
--- a/scripts/tracetool/format/log_stap.py
+++ b/scripts/tracetool/format/log_stap.py
@@ -90,9 +90,6 @@ def generate(events, backend, group):
         '')
 
     for event_id, e in enumerate(events):
-        if 'disable' in e.properties:
-            continue
-
         out('probe %(probeprefix)s.log.%(name)s = %(probeprefix)s.%(name)s ?',
             '{',
             probeprefix=probeprefix(),
diff --git a/scripts/tracetool/format/rs.py b/scripts/tracetool/format/rs.py
index 1fddcee1ad2..97d89a981da 100644
--- a/scripts/tracetool/format/rs.py
+++ b/scripts/tracetool/format/rs.py
@@ -52,11 +52,10 @@ def generate(events, backend, group):
             '{',
             api=e.api(e.QEMU_RUST_DSTATE))
 
-        if "disable" not in e.properties:
-            backend.generate_backend_dstate(e, group)
-            if backend.check_trace_event_get_state:
-                out('    trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) ||',
-                    event_id = 'TRACE_' + e.name.upper())
+        backend.generate_backend_dstate(e, group)
+        if backend.check_trace_event_get_state:
+            out('    trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) ||',
+                event_id = 'TRACE_' + e.name.upper())
 
         out('    false',
             '}',
@@ -68,15 +67,14 @@ def generate(events, backend, group):
             api=e.api(e.QEMU_TRACE),
             args=e.args.rust_decl())
 
-        if "disable" not in e.properties:
-            backend.generate(e, group, check_trace_event_get_state=False)
-            if backend.check_trace_event_get_state:
-                event_id = 'TRACE_' + e.name.upper()
-                out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
-                    event_id = event_id,
-                    api=e.api())
-                backend.generate(e, group, check_trace_event_get_state=True)
-                out('    }')
+        backend.generate(e, group, check_trace_event_get_state=False)
+        if backend.check_trace_event_get_state:
+            event_id = 'TRACE_' + e.name.upper()
+            out('    if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {',
+                event_id = event_id,
+                api=e.api())
+            backend.generate(e, group, check_trace_event_get_state=True)
+            out('    }')
         out('}',
             '')
 
diff --git a/scripts/tracetool/format/simpletrace_stap.py b/scripts/tracetool/format/simpletrace_stap.py
index c7bde97a855..393d85319c7 100644
--- a/scripts/tracetool/format/simpletrace_stap.py
+++ b/scripts/tracetool/format/simpletrace_stap.py
@@ -24,9 +24,6 @@ def generate(events, backend, group):
         '')
 
     for event_id, e in enumerate(events):
-        if 'disable' in e.properties:
-            continue
-
         out('probe %(probeprefix)s.simpletrace.%(name)s = %(probeprefix)s.%(name)s ?',
             '{',
             probeprefix=probeprefix(),
diff --git a/scripts/tracetool/format/stap.py b/scripts/tracetool/format/stap.py
index 285c9203ba7..e3d16b72d34 100644
--- a/scripts/tracetool/format/stap.py
+++ b/scripts/tracetool/format/stap.py
@@ -34,9 +34,6 @@ def stap_escape(identifier):
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disable" not in e.properties]
-
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '/* SPDX-License-Identifier: GPL-2.0-or-later */',
         '')
diff --git a/scripts/tracetool/format/ust_events_c.py b/scripts/tracetool/format/ust_events_c.py
index 074226bfd37..93f88a03e90 100644
--- a/scripts/tracetool/format/ust_events_c.py
+++ b/scripts/tracetool/format/ust_events_c.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disabled" not in e.properties]
-
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '/* SPDX-License-Identifier: GPL-2.0-or-later */',
         '',
diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py
index 76c883bc5c0..441e6a41933 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -16,9 +16,6 @@
 
 
 def generate(events, backend, group):
-    events = [e for e in events
-              if "disabled" not in e.properties]
-
     if group == "all":
         include = "trace-ust-all.h"
     else:
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:19:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:19:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472582.1680538 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRj-0005eV-Lh; Wed, 04 Nov 2026 20:18:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472582.1680538; Wed, 04 Nov 2026 20:18:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhRi-0005ZX-EP; Wed, 04 Nov 2026 20:18:58 +0000
Received: by outflank-mailman (input) for mailman id 1472582;
 Wed, 04 Nov 2026 20:18:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefanha@redhat.com>) id 1xOhRc-0004Kb-FZ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:18:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhRb-007PIv-S1
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:18:51 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb92ed-e002-0a2a0a5209dd-0a2a450b9f1c-46
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:51 +0100
Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefanha@redhat.com>)
 id 6aeb932a-b7e8-0a2a450b0019-aa0a857c7239-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:18:51 +0100
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-426-9LKdvOF9PRmCp-mtU7SZQQ-1; Wed,
 04 Nov 2026 15:18:46 -0500
Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 3B3D018002C0; Wed,  4 Nov 2026 20:18:44 +0000 (UTC)
Received: from localhost (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP
 id DE5B3187C36F; Wed,  4 Nov 2026 20:18:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793823530;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=+1r5cewGuHrpbpbmxHK1RLiqtliFySIlR2NRA4f1vA0=;
	b=iRg0dxrMWWwXXeEqaI+tn3TyYzG4rM+PRUc/WLVjfE9Sdr2EIw/1iYHlHF9A2HBr+UCUiE
	vex7Gi6Qxy6pLdQ8cqpEUsQo+v+8/g39nSW+yUPjcblvkYuHqwiZVH9rlZernrogPcbQA/
	430KpWqZYdz/Pu6GXNiNtz3onchGE/c=
X-MC-Unique: 9LKdvOF9PRmCp-mtU7SZQQ-1
X-Mimecast-MFC-AGG-ID: 9LKdvOF9PRmCp-mtU7SZQQ_1793823524
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	xen-devel@lists.xenproject.org,
	qemu-ppc@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	Anthony PERARD <anthony@xenproject.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Helge Deller <deller@gmx.de>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Subject: [PULL v2 25/25] trace: remove 'trace_event_get_state' wrapper
Date: Wed,  4 Nov 2026 15:18:01 -0500
Message-ID: <20261104201802.11556-26-stefanha@redhat.com>
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
References: <20261104201802.11556-1-stefanha@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111
X-Mimecast-MFC-PROC-ID: WJjpYbs1bWKRPkBsFxZI7k6CUs3B1R_OCHS0FbBH2Cg_1793823524
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793823531-A96C29EA-440EB7E2/35/111497
X-purgate-type: clean
X-purgate-size: 9567

From: Daniel P. Berrangé <berrange@redhat.com>

The 'trace_event_get_state' macro is a wrapper around the
'trace_event_get_state_dynamic_by_id' macro, which is a direct
check of the _TRACE_...._DSTATE global variable.

The only code that should be using this is the generated trace
probes, but the name looks rather appealing causing it to be
mistakenly used in other places, instead of the recommended
'trace_event_get_state_dynamic_backends'.

Removing the 'trace_event_get_state' macro reduces the potential
for confusion.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20261102142844.3464712-26-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/tracetool/all.h                 | 8 ++++----
 tests/tracetool/ftrace.h              | 4 ++--
 tests/tracetool/log.h                 | 4 ++--
 tests/tracetool/simple.h              | 4 ++--
 tests/tracetool/syslog.h              | 4 ++--
 trace/control.h                       | 9 ---------
 scripts/tracetool/backend/__init__.py | 3 ++-
 scripts/tracetool/backend/log.py      | 2 +-
 scripts/tracetool/format/h.py         | 2 +-
 9 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 01971827e4b..d4c91cdd1a4 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -51,14 +51,14 @@ void _simple_trace_test_wibble(void *context, int value);
 static inline void trace_test_blah(void *context, const char *filename)
 {
     QEMU_TEST_BLAH(context, filename);
-    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
 #line 59 "all.h"
     }
     tracepoint(qemu, test_blah, context, filename);
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
 #line 65 "all.h"
@@ -80,14 +80,14 @@ static inline void trace_test_blah(void *context, const char *filename)
 static inline void trace_test_wibble(void *context, int value)
 {
     QEMU_TEST_WIBBLE(context, value);
-    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
 #line 88 "all.h"
     }
     tracepoint(qemu, test_wibble, context, value);
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
 #line 94 "all.h"
diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
index 4eba6b4d599..b55ee08bbfe 100644
--- a/tests/tracetool/ftrace.h
+++ b/tests/tracetool/ftrace.h
@@ -19,7 +19,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
 #line 26 "ftrace.h"
@@ -32,7 +32,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
 #line 39 "ftrace.h"
diff --git a/tests/tracetool/log.h b/tests/tracetool/log.h
index 9afbe721a47..02bb1309e20 100644
--- a/tests/tracetool/log.h
+++ b/tests/tracetool/log.h
@@ -20,7 +20,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 4 "trace-events"
             qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context, filename);
@@ -35,7 +35,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE) &&
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) &&
         qemu_loglevel_mask(LOG_TRACE)) {
 #line 5 "trace-events"
             qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
diff --git a/tests/tracetool/simple.h b/tests/tracetool/simple.h
index 9b066364b0a..0b9e7cba35c 100644
--- a/tests/tracetool/simple.h
+++ b/tests/tracetool/simple.h
@@ -20,7 +20,7 @@ void _simple_trace_test_wibble(void *context, int value);
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
         _simple_trace_test_blah(context, filename);
     }
 }
@@ -31,7 +31,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
         _simple_trace_test_wibble(context, value);
     }
 }
diff --git a/tests/tracetool/syslog.h b/tests/tracetool/syslog.h
index 6a9304489f6..173b35dcf69 100644
--- a/tests/tracetool/syslog.h
+++ b/tests/tracetool/syslog.h
@@ -19,7 +19,7 @@ extern uint8_t _TRACE_TEST_WIBBLE_DSTATE;
 
 static inline void trace_test_blah(void *context, const char *filename)
 {
-    if (trace_event_get_state(TRACE_TEST_BLAH)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH)) {
 #line 4 "trace-events"
         syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context, filename);
 #line 26 "syslog.h"
@@ -32,7 +32,7 @@ static inline void trace_test_blah(void *context, const char *filename)
 
 static inline void trace_test_wibble(void *context, int value)
 {
-    if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
+    if (trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE)) {
 #line 5 "trace-events"
         syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
 #line 39 "syslog.h"
diff --git a/trace/control.h b/trace/control.h
index 71f254728d4..dfb52b23ac4 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -97,15 +97,6 @@ static uint32_t trace_event_get_id(TraceEvent *ev);
  */
 static const char * trace_event_get_name(TraceEvent *ev);
 
-/**
- * trace_event_get_state:
- * @id: Event identifier name.
- *
- * Get the tracing state of an event, both static and the QEMU dynamic state.
- */
-#define trace_event_get_state(id)                       \
-    (trace_event_get_state_dynamic_by_id(id))
-
 /**
  * trace_event_get_state_backends:
  * @id: Event identifier name.
diff --git a/scripts/tracetool/backend/__init__.py b/scripts/tracetool/backend/__init__.py
index 72f549c77c4..2749c4e6315 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -26,7 +26,8 @@
                             considered "public".
 CHECK_TRACE_EVENT_GET_STATE If exists and is set to 'True', the backend-specific
                             code inside the tracepoint is emitted within an
-                            ``if trace_event_get_state()`` conditional.
+                            ``if trace_event_get_state_dynamic_by_id()``
+                            conditional.
 =========================== ====================================================
 
 
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 0e7909efe8b..4f620c5492f 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -28,7 +28,7 @@ def generate_h(event, group):
     if len(event.args) > 0:
         argnames = ", " + argnames
 
-    out('    if (trace_event_get_state(%(event_id)s) &&',
+    out('    if (trace_event_get_state_dynamic_by_id(%(event_id)s) &&',
         '        qemu_loglevel_mask(LOG_TRACE)) {',
         '#line %(event_lineno)d "%(event_filename)s"',
         '            qemu_log("%(name)s " %(fmt)s "\\n"%(argnames)s);',
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index f719fe09397..ad4ce4414fe 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -66,7 +66,7 @@ def generate(events, backend, group):
 
         if backend.check_trace_event_get_state:
             event_id = 'TRACE_' + e.name.upper()
-            cond = "trace_event_get_state(%s)" % event_id
+            cond = "trace_event_get_state_dynamic_by_id(%s)" % event_id
             out('    if (%(cond)s) {',
                 cond=cond)
             backend.generate(e, group, check_trace_event_get_state=True)
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:45:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:45:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472747.1680568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhr5-0001uN-B6; Wed, 04 Nov 2026 20:45:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472747.1680568; Wed, 04 Nov 2026 20:45:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhr5-0001uG-7b; Wed, 04 Nov 2026 20:45:11 +0000
Received: by outflank-mailman (input) for mailman id 1472747;
 Wed, 04 Nov 2026 20:45:09 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <cody.zuschlag@xenproject.org>) id 1xOhr3-0001t5-FJ
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:45:09 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <cody.zuschlag@xenproject.org>)
 id 1xOhr3-0000000Eofw-1f24 for xen-devel@lists.xenproject.org;
 Wed, 04 Nov 2026 20:45:09 +0000
Received: from mail-lf1-f47.google.com ([209.85.167.47])
 by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2)
 (envelope-from <cody.zuschlag@xenproject.org>)
 id 1xOhr3-00000008sFu-18nq for xen-devel@lists.xenproject.org;
 Wed, 04 Nov 2026 20:45:09 +0000
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-5bfc32574e7so4787e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:45:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Content-Type:To:Subject:Message-ID:Date:
	From:MIME-Version; bh=w3vs4MCiCHxV/XvaKQ2NyFj908UocSA/DP6/SHw9hFo=; b=iYQ+XI0
	DXc1hCEUzyHlFBCVoNsfgSRHIa7A+LXNbJ423PGe7q/uOev3AG+MPPZhDcleqVKrQyMNV8nUfNomf
	GeDCE+oFoDmO8ehp96kR2hWJyeHZkuhIAVVaoq+mmKCYih7iBLIveyTyXZ0WuTsTVNunMk7y1wyVs
	QDl3+NC01g=;
X-Gm-Message-State: APuU4Z9H0/xn7M1X1JueXgykwWIRIrdRvkgrHD2i7jqrpA46vO3h3nNI
	EokWM+pSP2B7iztwXrMQExCEI7AjvW19or8CfzmOuEKdomfjqT0r2n982/gcegbDWVYdyWNmjyN
	wjIwRfxt7EDbjr0Xu+qHvcjYZwmp5UJM=
X-Received: by 2002:a05:6512:6188:b0:5bf:d226:a231 with SMTP id
 2adb3069b0e04-5bffa14d867mr159351e87.18.1793825108135; Wed, 04 Nov 2026
 12:45:08 -0800 (PST)
MIME-Version: 1.0
From: Cody Zuschlag <cody.zuschlag@xenproject.org>
Date: Wed, 4 Nov 2026 21:44:56 +0100
X-Gmail-Original-Message-ID: <CAJbE=Kx7quW471oRgh=PBH6PuQXxzZvaEhQyzA2eWLpKkhWkkg@mail.gmail.com>
X-Gm-Features: AclHuK-2q0aKiv8EdvSykK2l9NCivmFFoXWBNkaUFtne4GONeE_7DUWHvPtskcc
Message-ID: <CAJbE=Kx7quW471oRgh=PBH6PuQXxzZvaEhQyzA2eWLpKkhWkkg@mail.gmail.com>
Subject: [ANNOUNCE] Xen Community Call - Thursday, 5 November at 16:00 UTC
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000005c147c065f797458"

--0000000000005c147c065f797458
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi everyone,

The November Xen Project Community Call is on *Thursday, 5 November 2026 at
16:00 UTC* (16:00 UK time / 17:00 CET). Whether you have an update to share
or just want to listen in, we=E2=80=99d love to have you join.

*Preparation*

=F0=9F=91=89 Please review and update the agenda
<https://cryptpad.fr/pad/#/2/pad/edit/8XTdIOKaKCY1tMrba4AkNc2h/> before the
call. Add your name and any topics or project updates, suggest items we can
defer, and include links to patches, mailing list threads, or documentation
where helpful.

We=E2=80=99ll check in on Xen Safety, documentation priorities, and outstan=
ding
follow-ups from the Xen Summit design sessions.

*Call details*

   - *Date and time* - Thursday, 5 November 2026 at 16:00 UTC =C2=B7 Find y=
our
   local time
   <https://www.worldtimebuddy.com/?qm=3D1&lid=3D5368361,2988507,5128581,26=
43743,100,1850147,6&h=3D2988507&date=3D2026-11-5&sln=3D17-18&hf=3Dundefined=
&c=3D1064>
   - *Join* - Xen Project Community Call on Jitsi
   <https://meet.jit.si/XenProjectCommunityCall>

Want to be copied on future community call announcements? Add or remove
yourself from the sign-up sheet
<https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/>.

See you Thursday!

Cody Zuschlag
Xen Project - Community Manager

--0000000000005c147c065f797458
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><p>Hi everyone,</p><p>The November Xen Project Commun=
ity Call is on <strong>Thursday, 5 November 2026 at 16:00 UTC</strong> (16:=
00 UK time / 17:00 CET). Whether you have an update to share or just want t=
o listen in, we=E2=80=99d love to have you join.</p><p><strong>Preparation<=
/strong></p><p>=F0=9F=91=89 Please <a href=3D"https://cryptpad.fr/pad/#/2/p=
ad/edit/8XTdIOKaKCY1tMrba4AkNc2h/" target=3D"_blank">review and update the =
agenda</a> before the call. Add your name and any topics or project updates=
, suggest items we can defer, and include links to patches, mailing list th=
reads, or documentation where helpful.</p><p>We=E2=80=99ll check in on Xen =
Safety, documentation priorities, and outstanding follow-ups from the Xen S=
ummit design sessions.</p><p><strong>Call details</strong></p><ul><li><stro=
ng>Date and time</strong>=C2=A0- Thursday, 5 November 2026 at 16:00 UTC =C2=
=B7 <a href=3D"https://www.worldtimebuddy.com/?qm=3D1&amp;lid=3D5368361,298=
8507,5128581,2643743,100,1850147,6&amp;h=3D2988507&amp;date=3D2026-11-5&amp=
;sln=3D17-18&amp;hf=3Dundefined&amp;c=3D1064" target=3D"_blank">Find your l=
ocal time</a></li><li><strong>Join</strong>=C2=A0-=C2=A0<a href=3D"https://=
meet.jit.si/XenProjectCommunityCall" target=3D"_blank">Xen Project Communit=
y Call on Jitsi</a></li></ul><p>Want to be copied on future community call =
announcements? <a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAO=
e6RFPz0sRCf+/" target=3D"_blank">Add or remove yourself from the sign-up sh=
eet</a>.</p><p>See you Thursday!</p></div><div><div dir=3D"ltr" class=3D"gm=
ail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><img src=
=3D"https://ci3.googleusercontent.com/mail-sig/AIorK4x5nkRDCOFJDJAv9aMXdZ0m=
ghItsp3D36JrwBCQtitBSW_0NeDS6mBmJ2F4vZVE2oBOqnY6IaJUrl12"><br><div>Cody Zus=
chlag</div><div>Xen Project - Community Manager</div></div></div></div></di=
v>

--0000000000005c147c065f797458--


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:47:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:47:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472757.1680589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtk-0002o2-DG; Wed, 04 Nov 2026 20:47:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472757.1680589; Wed, 04 Nov 2026 20:47:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtk-0002mE-7N; Wed, 04 Nov 2026 20:47:56 +0000
Received: by outflank-mailman (input) for mailman id 1472757;
 Wed, 04 Nov 2026 20:47:55 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtj-0002dA-5Y
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhti-00BcE3-Ib
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:54 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99d6-e002-0a2a0a5209dd-0a2a450282b2-18
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:54 +0100
Received: from [209.85.160.174] (helo=mail-qt1-f174.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99f9-6ca4-0a2a45020019-d155a0aeb8b4-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:54 +0100
Received: by mail-qt1-f174.google.com with SMTP id
 d75a77b69052e-53bb57f1310so11349381cf.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:54 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d479a7easm292770685a.12.2026.11.04.12.47.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825273; x=1794430073; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=4zFbC/7v49JIwDAMUqTjgaY3Ekh9T54PUOgPwA6tYbI=;
        b=QYt9t59govcQuK+XLBMfxW8hcGWMg3+2J1WuXzqUCLajk76yIyYrqWHYNBpbSbS0Ao
         x2ObypGFcmXdogA05L2IyGDqRRuT+0aFkJtUFdv+xwHAGhJSGqj4uXEl1JFOOCQ0eHV0
         a5Y6ceUisMWrZnsqVHK7NgS9ea4Gy0/I8zBbZk9sTGaSup0cm1cDMQwR1IIBsQt2QUoy
         cQxB02VL7kx2W1XlzOwXM9AOUeyEl6ws8FG2beyBH160Vz479bCVR3bZcPiZgRXepYwp
         R6dYATBtPtNT/AJVj4XyQWz0tEiyD0ijZrAksIpobLz5PMP0aDAHJVoenVBmU3tdZMO4
         S4Bg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825273; x=1794430073;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4zFbC/7v49JIwDAMUqTjgaY3Ekh9T54PUOgPwA6tYbI=;
        b=rVz4joHoK8pHab9EKGdkNETCIcK+qRLWfZRpKOu69l1FKvPrcCM9Tl9mQqJZY7iki2
         /TiZiD0MAmWNHQO3oQBRaqjvRF63m9M58hCXb8TtCR4r4nR4ov/FTZP4/eR9mkFxXA6Z
         yJDaktXs1A9PsOo/pr2gqitwekfa+n1IzKRe4GJzNTL9UK9tPqu1kZemlo+qhVKdywHq
         ZiRcFmqmWydx8g5Cm3QIEFqgV4Rp/og3IrLomyR80WRQyuHUIUOAHowXJupOdaxEe7cm
         Trsf8HudODwntRxPhaKJq2QhhvnLtumWrwoD6pSLRVtALPlQX5T9rEYMzJp0oNCXEIUd
         vDgg==
X-Forwarded-Encrypted: i=1; AKwUvBxx3Tam0doHUZytqYCy+2O4QTFSlXosRz45cw85UyHt7638umPwsp5Y4hDfjHsLldR6qn/HYgvtiWY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+9xUPiN527UkqA8phAwXLscksPi9IAYpq5FhqwXmayhISUUQZe
	eSPi8kiRCalNGRaEkZGpm3k01Xbwg2DIzM+qoS5Z157Jsw2IWbCdZ1h5yfna47ZADeg=
X-Gm-Gg: AYBFou2+PUlYl45P3rYEL9vG6eE5yZmvgjrymdI78heJGid15SejRn/ee5+LBLNp1as
	2EgoULJVV+iR9PnUbBo5xptBHtufasLdc9mg9RTyFpyKmi1Vulh0OljB0fjEySB7jjnlFSrre0Z
	n8h5tEu25JjFbgjAhUCJfYbcPPph8KPOElQLgdDFNXvD9GZS+g39dk0nkY8gCyUGAjhQkEnNasV
	TVSM+G4bXY5rFe/5rlutWQckS/piYHvOhHMuFWCd+u6nlu76DIE90yfVjrTe2wU3Cy8JVTAYyCh
	rE47TgK3GJ2UT9Gz5/K3ptlm3EDU5py6y39oRQO8ZQeWHR13QF9bVgpmW8nxioOuHz1yNE1BE/R
	KbMjN/3qo5uFV3J0/r0ByNRFCUNkNz6orDT6gyi6g3bmRb4ltX7A/MBINWeWktdYC1dt7SoQkci
	DcOTgv9D3x7pLtj4Itz+6GzUW44oXc7bgWMCsTcjVdsI8kUyuDEYlDA+T52dlk2ASCnGhQ7NXMF
	XguJpnJZon/k0hvBSxKKRtwlM9djaFYLuFgt40d8aMqLC2bL4ETeEc9pF+NE9wLfbtu17JNnb8V
	8xZvfR2USWxyfm3e5qFA+IAAcDbUMzp9rUMMC7RiA37oAw==
X-Received: by 2002:a05:620a:6485:b0:93e:94f2:ada5 with SMTP id af79cd13be357-94421659b6cmr2765029485a.25.1793825272920;
        Wed, 04 Nov 2026 12:47:52 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:14 +0000
Subject: [PATCH net-next v4 02/15] net: skbuff: add skb_checksum_full()
 that reports failure
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-2-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=7462;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=d2CsFLSStwR7TGVFC+ZiW187zIVn3/uYt4yIWAhReOw=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QBXORyJhU0rJllDflHqUJ2j1KtvdAJ3xu+S8gR8KsNKR8EZZffwb0bw4sZdXclvEZDEkJjiW8pD
 dMjfKjVkjGAQ=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-720697/1793825274-664B62AC-5279312C/0/0
X-purgate-type: clean
X-purgate-size: 7464

skb_checksum() can't fail.  When the range runs into unreadable frags or
past the end of the skb, skb_checksum() returns 0, which is also a valid
checksum, so its callers can't tell a sum from a failure.

Add skb_checksum_full(), which adds the range's sum to *@csump and
returns 0.  On failure it leaves *@csump alone and returns -EFAULT, or
-EINVAL for a negative length.  It is __must_check.  Its frag_list loop
sits in a noinline function so that taking the address of a local
doesn't give skb_checksum_full() a stack protector.

skb_checksum() becomes a wrapper for the callers that aren't converted
yet, and still returns 0 on failure.  Three things change for them:

 - When a frag_list member fails, skb_checksum() returns 0 for the whole
   range instead of the sum of the parts it could read.  Neither value
   is the checksum of the range.
 - skb_checksum() only warns about unreadable frags if @skb itself has
   them.
 - A negative length returns 0 instead of reaching csum_partial().

Convert skb_checksum_help(), which can already return an error, so that
a packet that can't be checksummed is dropped instead of sent with a
wrong checksum.  The following patches convert checksum validation,
skb_segment() and pskb_trim_rcsum().  The rest will follow per
subsystem.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |   2 +
 net/core/dev.c         |   7 +++-
 net/core/skbuff.c      | 111 ++++++++++++++++++++++++++++++++++++-------------
 3 files changed, 90 insertions(+), 30 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index f4c092b78006..608c1491597e 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4282,6 +4282,8 @@ int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
 int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
 int __must_check skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 					u8 *to, int len, __wsum *csump);
+int __must_check skb_checksum_full(const struct sk_buff *skb, int offset,
+				   int len, __wsum *csump);
 int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset,
 		    struct pipe_inode_info *pipe, unsigned int len,
 		    unsigned int flags);
diff --git a/net/core/dev.c b/net/core/dev.c
index 3ac700d37e59..00a62c391056 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3665,7 +3665,7 @@ void skb_warn_bad_offload(const struct sk_buff *skb)
  */
 int skb_checksum_help(struct sk_buff *skb)
 {
-	__wsum csum;
+	__wsum csum = 0;
 	int ret = 0, offset;
 
 	if (skb->ip_summed == CHECKSUM_COMPLETE)
@@ -3697,13 +3697,16 @@ int skb_checksum_help(struct sk_buff *skb)
 			  offset, skb_headlen(skb));
 		goto out;
 	}
-	csum = skb_checksum(skb, offset, skb->len - offset, 0);
+	ret = skb_checksum_full(skb, offset, skb->len - offset, &csum);
+	if (ret)
+		goto out;
 
 	offset += skb->csum_offset;
 	if (unlikely(offset + sizeof(__sum16) > skb_headlen(skb))) {
 		DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
 		WARN_ONCE(true, "offset+2 (%zu) > skb_headlen() (%u)\n",
 			  offset + sizeof(__sum16), skb_headlen(skb));
+		ret = -EINVAL;
 		goto out;
 	}
 	ret = skb_ensure_writable(skb, offset + sizeof(__sum16));
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index f52b0717e4da..d51fdcb3e016 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3536,27 +3536,88 @@ int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len)
 }
 EXPORT_SYMBOL(skb_store_bits);
 
-/* Checksum skb data. */
-__wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
+/* The frag_list part of skb_checksum_full().  It's out of line so that taking
+ * the address of csum2 doesn't cost every caller a stack protector.
+ */
+static noinline int skb_checksum_frag_list(const struct sk_buff *skb, int start,
+					   int offset, int len, int pos,
+					   __wsum csum, __wsum *csump)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
+
+	skb_walk_frags(skb, frag_iter) {
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			__wsum csum2 = 0;
+
+			if (copy > len)
+				copy = len;
+			err = skb_checksum_full(frag_iter, offset - start, copy,
+						&csum2);
+			if (err)
+				return err;
+			csum = csum_block_add(csum, csum2, pos);
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+			pos    += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+out:
+	*csump = csum;
+	return 0;
+}
+
+/**
+ *	skb_checksum_full - checksum a range of an skb
+ *	@skb: buffer to checksum
+ *	@offset: offset in @skb to start at
+ *	@len: number of bytes to checksum
+ *	@csump: the sum to add to; on success the range's sum is added to it
+ *
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	runs out before @len does, or if the range goes past the linear area
+ *	of an skb, @skb or one on its frag_list, that has unreadable frags.
+ *	On failure *@csump is not changed.
+ */
+int skb_checksum_full(const struct sk_buff *skb, int offset, int len,
+		      __wsum *csump)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
+	__wsum csum = *csump;
 	int pos = 0;
 
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
+
 	/* Checksum header. */
 	if (copy > 0) {
 		if (copy > len)
 			copy = len;
 		csum = csum_partial(skb->data + offset, copy, csum);
 		if ((len -= copy) == 0)
-			return csum;
+			goto out;
 		offset += copy;
 		pos	= copy;
 	}
 
-	if (WARN_ON_ONCE(!skb_frags_readable(skb)))
-		return 0;
+	if (!skb_frags_readable(skb))
+		return -EFAULT;
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 		int end;
@@ -3585,37 +3646,31 @@ __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
 			}
 
 			if (!(len -= copy))
-				return csum;
+				goto out;
 			offset += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		int end;
+	return skb_checksum_frag_list(skb, start, offset, len, pos, csum,
+				      csump);
+out:
+	*csump = csum;
+	return 0;
+}
+EXPORT_SYMBOL(skb_checksum_full);
 
-		WARN_ON(start > offset + len);
+/* skb_checksum() has no way to report failure, so it returns 0, which is a
+ * valid checksum.  Use skb_checksum_full() in new code.
+ */
+__wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
+{
+	int err = skb_checksum_full(skb, offset, len, &csum);
 
-		end = start + frag_iter->len;
-		if ((copy = end - offset) > 0) {
-			__wsum csum2;
-			if (copy > len)
-				copy = len;
-			csum2 = skb_checksum(frag_iter, offset - start, copy,
-					     0);
-			csum = csum_block_add(csum, csum2, pos);
-			if ((len -= copy) == 0)
-				return csum;
-			offset += copy;
-			pos    += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
+	if (unlikely(err)) {
+		WARN_ON_ONCE(err == -EFAULT && !skb_frags_readable(skb));
 		return 0;
 	}
-
 	return csum;
 }
 EXPORT_SYMBOL(skb_checksum);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:47:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:47:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472756.1680581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtj-0002fk-U2; Wed, 04 Nov 2026 20:47:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472756.1680581; Wed, 04 Nov 2026 20:47:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtj-0002fW-QK; Wed, 04 Nov 2026 20:47:55 +0000
Received: by outflank-mailman (input) for mailman id 1472756;
 Wed, 04 Nov 2026 20:47:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhti-0002bo-2g
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhth-00FYWL-Fr
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:53 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99e8-bab6-0a2a0a5309dd-0a2a450c9a30-18
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:53 +0100
Received: from [209.85.219.52] (helo=mail-qv1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99f8-f479-0a2a450c0019-d155db34aca4-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:53 +0100
Received: by mail-qv1-f52.google.com with SMTP id
 6a1803df08f44-91c76540d0bso12576946d6.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:53 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e8dac2a3esm13006576d6.1.2026.11.04.12.47.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825272; x=1794430072; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=gH271GlUICfDLFVrS64JI/r5nC3Lsa5y8Cpm0L9A1DU=;
        b=V5xN3MfyqbiSFu/dJDdo1wtIzbUIpfHKmj4mfgS3QM4exmmZUIEMV/kbpSFNMKMRuX
         iMkfdPpQwnhUtGeoB+YzBz9aCAp6t/S8xv+0n8LMvYoixpW8EyQ7A/QAF6kE1MfSXzIy
         aKCjnO+QniVQL8TTKnHyZ/MRT0gxtJ932lb6h974pN9Q+J2WJo56+IZlWGsQkCqWQZSP
         XNOFkfA7RuPrwOgbRnbLNgt5vQol9iv9Kt5uXJfbUbOlcGZneRXLQrZeF+Mj9VIYtpij
         spDsDv4UdEEa+9fnhto9Wxg6Wyn47dpyFMQYtfFRsRKDEZEa/w8HJSq5sHndehguLgpC
         OOmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825272; x=1794430072;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=gH271GlUICfDLFVrS64JI/r5nC3Lsa5y8Cpm0L9A1DU=;
        b=Lj7Ze0nLbBEs2kmo0jK7zuUhKWXabiOuJ1lx9Vvxf0TKNgo9Gi/s/mwvvkQlCww8rL
         /Rbjaisz4Yi4kyvqoojmr6Bd/zVtCCz5s1kS0XtX/Y0QiwEjogm4X92CRcOx8R0/wAh0
         lJAH+i3S+h7qL00N/PpkCpKfpZ6wPPuAhX/nVcF/tpAnT67nOiHgSnpisc1n0ailfE9k
         e2likeOqIjB5VI6fKprJarsAESvP8lcDIiv0SNH/QTYqLwbabAeh6rsBq5ZFqc4nGLku
         14taHmR1SvL1OHVJfnfeKFIbRD/Nk7Rr/TQeV2lbCWZMggoNRT3NiZcnBmxEkL3HnEWz
         S7Rw==
X-Forwarded-Encrypted: i=1; AKwUvBwZlr/bm5HEIJCLLAWhye6R9OrSbv9VghzehrlPt6tySX58EIB5D+hWXMQlyO21abdh9lcvueuRzpQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z87Vk4s/T4AB3RR7wb3i/xazhP3qUQg3ydrR6gCqGV+AeTKQHI3
	GSQPuffQXvEhe3po32d7tfaSndsr9FHpd2u2sA/2u/hb1ziaGtOmZoTWQHr7dYAzjhk=
X-Gm-Gg: AYBFou2zxoGL4Im4F4cbC08kZw3C9hP+/FcPCFiv5Eplx91MF5++bCOUk4/YhIRprcX
	QscDX85M2zIXYF/0mZK0PFsfnPvcP2aVlSO5n/XrGqm2QEiwHdtDbWxy/vSLnnDw1CztB0qq2nw
	bBBB2Kl2i1uEMZHc5bxBi1oKVMtf3X1cUN4HS+h3nbe5ZFjlXa/EwNxgW1DhCXGkg5O1FcmE75M
	OITFh4Rlle0jESy30umLWET1DDngJBqHdvUqZLU2Z/pqYT5Rnion4Y6PtFSdfbMkdXlujDyJwBp
	oLCLAeZBW3kNgNynXo5lab2i0tbZxW9leCFyJHRxW9XinKCqMqjjOuR/8FfQz92K7saEwpR4mox
	hMOJ8HBpa8uVai/AEjCAm/28hVF84wP19gCQ4sdBrLSyThC/u09qWzSA21Ohc9faMGI/mrktAIn
	4KJwHzbQS0bpJzvgRJpV2phrwncNb0zHJfMWWz9B/9peHaylgzL0EZeDypAqFA5UdPKR3FqcqfQ
	6MaxpzMyaYXdML80Md5uv/udk12cKEkX8iTrUUlRaG8NqLUJxsChbR5L81eEL7vtsKLhsvRHZXT
	XfGTozwS//7I+sntZVIMa51FCXZjBAoukSncsWhug2/+11o+Xs2zw9vkelLc9njqchtn
X-Received: by 2002:a05:6214:5bc5:b0:91c:7da5:2185 with SMTP id 6a1803df08f44-91ca4bb4a15mr307849916d6.38.1793825271664;
        Wed, 04 Nov 2026 12:47:51 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:13 +0000
Subject: [PATCH net-next v4 01/15] net: skbuff: make
 skb_copy_and_csum_bits() report unreadable frags
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-1-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=13813;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=EWpLlq8Mw3XxwjVP1ClwIfXj7doLlC4zD1PirZnOhYE=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QJqO/KYWLso78B3NTCNEG4Z4lztm1S6ZIMPwryAlJHaZV5533DWzIbtoHA2wJ0OEbED8w0X7uPN
 RS3fTmef4xAo=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793825273-5093EA5B-E2411D77/0/0
X-purgate-type: clean
X-purgate-size: 13815

skb_copy_and_csum_bits() has no way to fail.  When it reaches unreadable
frags, or runs out of skb before @len, it zero-fills the rest of the
buffer and returns 0.  Its callers can't tell that the copy didn't
happen.

In the !sg && !csum branch of skb_segment() that turns a devmem TCP
payload into zeroes under a valid TCP checksum, and the peer accepts
them as stream data.  It takes a device with both SG and TX checksum
offload turned off.  A test module that segments an skb with 3000 bytes
in an unreadable frag gets 3 all-zero segments before this patch and
-EFAULT after it.

Return 0 or -EFAULT, hand the checksum back through a pointer, and mark
the function __must_check.  Every caller takes the error path it already
has for a failed copy.  skb_copy_and_csum_dev() can't return an error,
so it zeroes the whole frame.  csum_partial_copy_to_xdr() no longer
checksums the bytes it didn't copy.  That only ran when the function was
about to fail anyway, and skb_checksum() warns on an unreadable skb.

The !sg && csum branch of skb_segment() copies with skb_copy_bits() and
returns -ENOMEM when that fails.  Make it -EFAULT as well, so that both
branches report the same failure the same way.

The frag_list loop takes the address of a local, so it moves into a
noinline function to keep a stack protector out of
skb_copy_and_csum_bits().

Found by the Sashiko AI review of commit ab9414ed70bd ("net: skbuff:
don't leave stale bytes in skb_copy_and_csum_bits()").

Fixes: ab9414ed70bd ("net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()")
Fixes: 417261779eab ("net: skbuff: don't BUG() on leftover length in skb_copy_and_csum_bits()")
Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Link: https://lore.kernel.org/all/179148235783.434549.14322374227477832817@kernel.org/
Suggested-by: Mina Almasry <almasrymina@google.com>
Reviewed-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 drivers/net/ethernet/sun/sunvnet_common.c |  10 ++-
 include/linux/skbuff.h                    |   4 +-
 net/core/skbuff.c                         | 137 ++++++++++++++++++++----------
 net/ipv4/icmp.c                           |   9 +-
 net/ipv4/ip_output.c                      |  11 ++-
 net/ipv6/icmp.c                           |   7 +-
 net/ipv6/ip6_output.c                     |  11 ++-
 net/sunrpc/socklib.c                      |   9 +-
 8 files changed, 130 insertions(+), 68 deletions(-)

diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c
index 5cca95869052..4f229fcecc32 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.c
+++ b/drivers/net/ethernet/sun/sunvnet_common.c
@@ -1167,9 +1167,13 @@ static inline struct sk_buff *vnet_skb_shape(struct sk_buff *skb, int ncookies)
 
 			/* copy the rest, with csum calculation */
 			*(__sum16 *)(skb->data + offset) = 0;
-			csum = skb_copy_and_csum_bits(skb, start,
-						      nskb->data + start,
-						      skb->len - start);
+			if (skb_copy_and_csum_bits(skb, start,
+						   nskb->data + start,
+						   skb->len - start, &csum)) {
+				dev_kfree_skb(nskb);
+				dev_kfree_skb(skb);
+				return NULL;
+			}
 
 			/* add in the header checksums */
 			if (skb->protocol == htons(ETH_P_IP)) {
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 6787fcf6ac3e..f4c092b78006 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4280,8 +4280,8 @@ void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
 int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
 int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
 int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
-__wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to,
-			      int len);
+int __must_check skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
+					u8 *to, int len, __wsum *csump);
 int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset,
 		    struct pipe_inode_info *pipe, unsigned int len,
 		    unsigned int flags);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 48f676411724..f52b0717e4da 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3620,14 +3620,74 @@ __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum)
 }
 EXPORT_SYMBOL(skb_checksum);
 
-/* Both of above in one bottle. */
+/* The frag_list part of skb_copy_and_csum_bits().  It's out of line so that
+ * taking the address of csum2 doesn't cost every caller a stack protector.
+ */
+static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
+						int start, int offset, u8 *to,
+						int len, int pos, __wsum csum,
+						__wsum *csump)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
+
+	skb_walk_frags(skb, frag_iter) {
+		__wsum csum2;
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			if (copy > len)
+				copy = len;
+			err = skb_copy_and_csum_bits(frag_iter, offset - start,
+						     to, copy, &csum2);
+			if (err) {
+				/* The child zeroed its part; zero the rest. */
+				memset(to + copy, 0, len - copy);
+				return err;
+			}
+			csum = csum_block_add(csum, csum2, pos);
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+			to     += copy;
+			pos    += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		/* Don't hand the caller a buffer with stale bytes in it. */
+		if (len > 0)
+			memset(to, 0, len);
+		return -EFAULT;
+	}
+out:
+	*csump = csum;
+	return 0;
+}
 
-__wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
-				    u8 *to, int len)
+/**
+ *	skb_copy_and_csum_bits - copy data out of an skb and checksum it
+ *	@skb: source buffer
+ *	@offset: offset in @skb to start copying from
+ *	@to: destination buffer
+ *	@len: number of bytes to copy
+ *	@csump: where to store the checksum of the copied bytes
+ *
+ *	Return: 0 on success, or -EFAULT if @skb has unreadable frags or runs
+ *	out before @len does.  On failure *@csump is not set and the part of
+ *	@to that couldn't be filled is zeroed.
+ */
+int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
+			   u8 *to, int len, __wsum *csump)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
 	int pos = 0;
 	__wsum csum = 0;
 
@@ -3638,7 +3698,7 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 		csum = csum_partial_copy_nocheck(skb->data + offset, to,
 						 copy);
 		if ((len -= copy) == 0)
-			return csum;
+			goto out;
 		offset += copy;
 		to     += copy;
 		pos	= copy;
@@ -3648,7 +3708,7 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 		/* Don't hand the caller a buffer with stale bytes in it. */
 		if (len > 0)
 			memset(to, 0, len);
-		return 0;
+		return -EFAULT;
 	}
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
@@ -3680,43 +3740,18 @@ __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 			}
 
 			if (!(len -= copy))
-				return csum;
+				goto out;
 			offset += copy;
 			to     += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		__wsum csum2;
-		int end;
-
-		WARN_ON(start > offset + len);
-
-		end = start + frag_iter->len;
-		if ((copy = end - offset) > 0) {
-			if (copy > len)
-				copy = len;
-			csum2 = skb_copy_and_csum_bits(frag_iter,
-						       offset - start,
-						       to, copy);
-			csum = csum_block_add(csum, csum2, pos);
-			if ((len -= copy) == 0)
-				return csum;
-			offset += copy;
-			to     += copy;
-			pos    += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
-		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
-		return 0;
-	}
-	return csum;
+	return skb_copy_and_csum_frag_list(skb, start, offset, to, len, pos,
+					   csum, csump);
+out:
+	*csump = csum;
+	return 0;
 }
 EXPORT_SYMBOL(skb_copy_and_csum_bits);
 
@@ -4001,9 +4036,15 @@ void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to)
 	skb_copy_from_linear_data(skb, to, csstart);
 
 	csum = 0;
-	if (csstart != skb->len)
-		csum = skb_copy_and_csum_bits(skb, csstart, to + csstart,
-					      skb->len - csstart);
+	if (csstart != skb->len &&
+	    skb_copy_and_csum_bits(skb, csstart, to + csstart,
+				   skb->len - csstart, &csum)) {
+		/* Send zeroes rather than intact headers on a payload that
+		 * couldn't be copied.
+		 */
+		memset(to, 0, skb->len);
+		return;
+	}
 
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
 		long csstuff = csstart + skb->csum_offset;
@@ -5057,16 +5098,20 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 			if (!csum) {
 				if (!nskb->remcsum_offload)
 					nskb->ip_summed = CHECKSUM_NONE;
-				SKB_GSO_CB(nskb)->csum =
-					skb_copy_and_csum_bits(head_skb, offset,
-							       skb_put(nskb,
-								       len),
-							       len);
+				if (skb_copy_and_csum_bits(head_skb, offset,
+							   skb_put(nskb, len),
+							   len,
+							   &SKB_GSO_CB(nskb)->csum)) {
+					err = -EFAULT;
+					goto err;
+				}
 				SKB_GSO_CB(nskb)->csum_start =
 					skb_headroom(nskb) + doffset;
 			} else {
-				if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len))
+				if (skb_copy_bits(head_skb, offset, skb_put(nskb, len), len)) {
+					err = -EFAULT;
 					goto err;
+				}
 			}
 			continue;
 		}
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
index 90c0e22c29be..35008785e3d2 100644
--- a/net/ipv4/icmp.c
+++ b/net/ipv4/icmp.c
@@ -364,12 +364,15 @@ static int icmp_glue_bits(void *from, char *to, int offset, int len, int odd,
 	DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data,
 			IP_OPTIONS_DATA_FIXED_SIZE);
 	__wsum csum;
+	int err;
 
 	icmp_param = from;
 
-	csum = skb_copy_and_csum_bits(icmp_param->skb,
-				      icmp_param->offset + offset,
-				      to, len);
+	err = skb_copy_and_csum_bits(icmp_param->skb,
+				     icmp_param->offset + offset,
+				     to, len, &csum);
+	if (err)
+		return err;
 
 	skb->csum = csum_block_add(skb->csum, csum, odd);
 	if (icmp_param->data.icmph.type <= NR_ICMP_TYPES &&
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 3396f177a18d..f7da4538d05b 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1162,9 +1162,14 @@ static int __ip_append_data(struct sock *sk,
 			data += fragheaderlen + exthdrlen;
 
 			if (fraggap) {
-				skb->csum = skb_copy_and_csum_bits(
-					skb_prev, maxfraglen,
-					data + transhdrlen, fraggap);
+				if (skb_copy_and_csum_bits(skb_prev, maxfraglen,
+							   data + transhdrlen,
+							   fraggap,
+							   &skb->csum)) {
+					err = -EFAULT;
+					kfree_skb(skb);
+					goto error;
+				}
 				skb_prev->csum = csum_sub(skb_prev->csum,
 							  skb->csum);
 				data += fraggap;
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index a95b0351824f..31ca3da80b1f 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -322,9 +322,12 @@ static int icmpv6_getfrag(void *from, char *to, int offset, int len, int odd, st
 	struct icmpv6_msg *msg = (struct icmpv6_msg *) from;
 	struct sk_buff *org_skb = msg->skb;
 	__wsum csum;
+	int err;
 
-	csum = skb_copy_and_csum_bits(org_skb, msg->offset + offset,
-				      to, len);
+	err = skb_copy_and_csum_bits(org_skb, msg->offset + offset,
+				     to, len, &csum);
+	if (err)
+		return err;
 	skb->csum = csum_block_add(skb->csum, csum, odd);
 	if (!(msg->type & ICMPV6_INFOMSG_MASK))
 		nf_ct_attach(skb, org_skb);
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 25fe0ba98b1a..d259e7dca8ba 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1724,9 +1724,14 @@ static int __ip6_append_data(struct sock *sk,
 			skb->transport_header = (skb->network_header +
 						 fragheaderlen);
 			if (fraggap) {
-				skb->csum = skb_copy_and_csum_bits(
-					skb_prev, maxfraglen,
-					data + transhdrlen, fraggap);
+				if (skb_copy_and_csum_bits(skb_prev, maxfraglen,
+							   data + transhdrlen,
+							   fraggap,
+							   &skb->csum)) {
+					err = -EFAULT;
+					kfree_skb(skb);
+					goto error;
+				}
 				skb_prev->csum = csum_sub(skb_prev->csum,
 							  skb->csum);
 				data += fraggap;
diff --git a/net/sunrpc/socklib.c b/net/sunrpc/socklib.c
index d8d8842c7de5..5d780ad4ae3a 100644
--- a/net/sunrpc/socklib.c
+++ b/net/sunrpc/socklib.c
@@ -49,7 +49,9 @@ xdr_skb_read_bits(struct xdr_skb_reader *desc, void *to, size_t len)
 	if (desc->need_checksum) {
 		__wsum csum;
 
-		csum = skb_copy_and_csum_bits(desc->skb, desc->offset, to, len);
+		if (unlikely(skb_copy_and_csum_bits(desc->skb, desc->offset,
+						    to, len, &csum)))
+			return 0;
 		desc->csum = csum_block_add(desc->csum, csum, desc->offset);
 	} else {
 		if (unlikely(skb_copy_bits(desc->skb, desc->offset, to, len)))
@@ -142,11 +144,6 @@ int csum_partial_copy_to_xdr(struct xdr_buf *xdr, struct sk_buff *skb)
 	desc.csum = csum_partial(skb->data, desc.offset, skb->csum);
 	if (xdr_partial_copy_from_skb(xdr, &desc) < 0)
 		return -1;
-	if (desc.offset != skb->len) {
-		__wsum csum2;
-		csum2 = skb_checksum(skb, desc.offset, skb->len - desc.offset, 0);
-		desc.csum = csum_block_add(desc.csum, csum2, desc.offset);
-	}
 	if (desc.count)
 		return -1;
 	if (csum_fold(desc.csum))

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:47:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:47:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472755.1680578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtj-0002dP-NC; Wed, 04 Nov 2026 20:47:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472755.1680578; Wed, 04 Nov 2026 20:47:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtj-0002dG-Ji; Wed, 04 Nov 2026 20:47:55 +0000
Received: by outflank-mailman (input) for mailman id 1472755;
 Wed, 04 Nov 2026 20:47:53 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhth-0002bn-NG
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtg-000QZ3-Uy
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:53 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99da-8faa-0a2a0a5109dd-0a2a4504c3a6-32
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:52 +0100
Received: from [209.85.160.179] (helo=mail-qt1-f179.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99f7-b57f-0a2a45040019-d155a0b3f01d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:52 +0100
Received: by mail-qt1-f179.google.com with SMTP id
 d75a77b69052e-536717a4d83so9729401cf.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:52 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e7e714b5dsm28532706d6.34.2026.11.04.12.47.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825271; x=1794430071; darn=lists.xenproject.org;
        h=cc:to:content-transfer-encoding:content-type:mime-version
         :message-id:date:subject:from:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=zhYTiDxjkNZdIoq9TXFfJAb58fxAg2S9aoRAAm7o7cY=;
        b=obFoVHzLhRoO5q+Rco2lsLEsJCrKp3YyHdY+8r72LLpi6OOYkvu7MbchCp/2gL8N3p
         VVzXCsxRYQKSTtedIFne3RczWqsVvUhgZycimXegM9NuUYppvyu8ztv4XwWP/Zy2kZZW
         G5PHFv583N1evAwaDuomQHhdDeW6L/J3ehW5u5O7SxwkelumqjCP4UqrQAtqscAPIg3O
         otll+JK5EgvLUF7Uf6YfVn4Vhwy4McsMCQJZsnFjR6QBo2KsnLCWm5uaReAF7F0jabn2
         eOPi65AYpkirz02ITKjJuNS5O1ijTwL9gqE9F4vS5B3H/YaUYV5C/cjL0H6+FIE1cCQo
         LF5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825271; x=1794430071;
        h=cc:to:content-transfer-encoding:content-type:mime-version
         :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=zhYTiDxjkNZdIoq9TXFfJAb58fxAg2S9aoRAAm7o7cY=;
        b=y4G00p7kk0aoz+tJZdaACXuG+R5V/429vWNPEVtM+/yVDbm9uH0+coGWLsoMWdqtBR
         zR9w5vMeQxhbsx6wHyoOyaa/TEy37gwhXhQcCAU/8TG8QljZE7d0lqY8uZDkm7ItI4qX
         edCmh0ZyjaLrUIHwd6OHTvn8WO7vIHvb79Ax4CfSu+12Sq10Zx8FYY4UGstnmKnrejgE
         T/vziVBdUxAHKx1WnkL6n9cDj/Y1mJ4GrwgxQgANCXLgtHB7WWS8zHXY0xHYSwZdeMY9
         FMHsJ944YM9AdSZTxAkkvX/63oE7DTaoOBbZQrV+3W8Gvd2NZ+R+EX6HXnNq2uRfZKMu
         uUwA==
X-Forwarded-Encrypted: i=1; AKwUvBzcfMKdCVUXy8gnycfFMskcw64of135MQpP+kxtkL5I/+86QQnq6ZZk+fY+q2OdwICK+eIJA6lD7dM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z96YMMfrT6jh22+ut42xjP3+EBW7rwh+vYhkuq1+WJO1y73vZW4
	tfjB+3G4eJSJgF3NfMUT7axtCZjxrFYLCNTfotqBGaE6VIze8xh4L9rfhA8uXDZkk2Q=
X-Gm-Gg: AYBFou0HH6gLPWxoETK0N8N8LrL6L4UxO0mdKO2RovTquIoFkCBxaogc5EuAjz5rm1E
	Q7e6zRY81UGZVpPUGUtdY24fucXG22VcIOoxemqtQgPylJU25btzpGWtDFDLVrnmOqY3pdwSZS6
	Xvxk4RmJMqnb4vd/bkwraAX3TKjHxYTo8WJh+GFYwyzZ8ZkWg2lCWm0DlMd4iYJR6+Yv5EpfEmK
	pjfspESEOhDSSutbAfFpyd5yngag2gQoKQVQQwKCMU6aLYz/TUSDYQDdaCZWmecxmm37GBVf6Kk
	AhJsR+IrvMGNOobfzA4KQbMNtw4QlSdxjINxYp8id570wEq6KIK4EOeTEFERdDmZKtkH9JoDxdl
	I2t+Y34KLL7DYLPNED2OVCLbmwoVeGU8Rqx2jbinJJ0tTgHIHuFBw4UpSFE00hmpiQG7BT83nu8
	sGt+VGXcwlCbnUJbQ+uLYIj2k3jyKF7KsFGOmt2lZY+rRK9jxypHwWWKEL7xCn1cVDEzYGPpCQS
	O5M7KqOrpqA6z2nmcVQWYuZKAmVEclfNgrmPoKEeQKvNnC79fmD01UCNjepCALayTvcH51w1/GK
	45ZZyp7Nsv1yRjbbETZ0sfzT1F4m9QxRYv80c17PD5pyUT8=
X-Received: by 2002:a05:622a:314:b0:533:91bb:b81e with SMTP id d75a77b69052e-542b714241bmr282875581cf.31.1793825270475;
        Wed, 04 Nov 2026 12:47:50 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Subject: [PATCH net-next v4 00/15] net: skbuff: follow-ups to the BUG_ON()
 removal
Date: Wed, 04 Nov 2026 20:47:12 +0000
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIANKZ62oC/33OzU6EMBAH8FfZ9Oy4bSmw68n3MB6m7XSpsi2hg
 JgN7y5UE01UjvP1m/+NJeo9JfZwuLGeJp98DGuh7g7MNBguBN6uNZNcVoKLCrSC9KpH50CPF4g
 BXGzb+DZ2CdAKgdbJU4mKrUDXk/Nzxp9YoAECzQN7/pykUb+QGTZ729WYCHSPwTRbq+2OWh1z8
 59v21Hj0xD79xx+EvnNV87zXs5JAAclrCZXcn129eMQZ286DBbvTbzmiJP84Umx68nVk4j1iSM
 vSqn+9IpvT/Bi1ytWr1RoOeqyrsRvb1mWD50R6Ya6AQAA
X-Change-ID: 20261016-b4-skbuff-bug-on-followups-ad11adf285a4
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>, 
 Willem de Bruijn <willemb@google.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=10376;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=tW+L0zf4390cg7J6QlTFchtXt2TlBYwRyjkUWvYsyWU=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QE/52Pg4UW6eMI++PDgJfN2uDIv4MYHALkyPzsSUzqqtahX6ZQWkFzqJYtvdKLNPhIGnhv8dWOy
 2oZSIna5CkAA=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-ebf023/1793825272-C12DCB50-A1550C46/0/0
X-purgate-type: clean
X-purgate-size: 10378

v1: https://lore.kernel.org/all/20261019-b4-skbuff-bug-on-followups-v1-0-41dbef50b9f7@toxicpanda.com/
v2: https://lore.kernel.org/all/20261021-b4-skbuff-bug-on-followups-v2-0-2aa780a03524@toxicpanda.com/
v3: https://lore.kernel.org/all/20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com/

v3->v4:
- 1: the !sg && csum branch of skb_segment() returns -EFAULT instead of
  -ENOMEM when skb_copy_bits() fails, like the branch next to it.  The
  new cases in 12 made that stand out.  I kept Mina's Reviewed-by.
- 12: run the nested and short skb cases without SG too (Willem).
- 11: no code change.  The commit message was wrong that the path
  without SG was fine before.  Three of the new cases in 12 hit the NULL
  pointer dereference without SG if the list_skb check in the clone
  branch condition is taken out, because the walk reads list_skb before
  it looks at SG.
- Picked up Mina's Reviewed-by on 1 and Acked-by on 4, Willem's
  Reviewed-by on 11 and 12, and Juergen's Reviewed-by on 13.
- No other changes, same base as v3.
v2->v3:
- 1, 2, 6: move the frag_list recursion into a noinline function, so
  that taking the address of a local there doesn't give the helpers a
  stack protector (Paolo).  On x86_64 defconfig plus CONFIG_IP_SCTP
  none of skb_copy_and_csum_bits(), skb_checksum_full(),
  skb_crc32c_full() or the two wrappers has one now, and
  __ip_append_data(), __ip6_append_data() and skb_segment() are
  unchanged.  The callers that pass a local do gain one.  Besides the
  seven I listed on v2, that's __skb_gro_checksum_complete() and
  skb_checksum_help(), which are converted in this version, and
  skb_crc32c_csum_help().
- 1: put the Fixes: tags back (Fernando, Sashiko).  csump in the
  prototype, and drop the "Both of above in one bottle" comment
  (Fernando).  skb_copy_and_csum_dev() zeroes the whole frame when the
  copy fails, since leaving the checksum alone doesn't guarantee a bad
  one (Sashiko).
- 2, 6: the kernel-doc describes the unreadable check as it is, the
  wrappers don't blame unreadable frags for -EINVAL, and the commit
  messages say what changes for a failing frag_list member (Fernando,
  Sashiko).
- 2: convert skb_checksum_help() too, as 6 does for its crc32c twin, and
  add Fixes: 20ddd0fd2fcd.
- 3: convert __skb_gro_checksum_complete() too (Fernando, Sashiko).
  Take the skb off CHECKSUM_COMPLETE on failure.  Otherwise conntrack,
  which doesn't drop on a bad checksum, leaves the pseudo-header sum in
  skb->csum and TCP's validation accepts the packet after all
  (Sashiko).  Update the comments, and add Fixes: 65249feb6b3d.
- 4: the commit message was wrong that devmem TX reaches this checksum.
  Its skbs carry SKBFL_SHARED_FRAG, so the segment fails to linearize
  first.  The patch is hardening, and the commit message says so now.
- 5: when the tail can't be checksummed but what's left can be read,
  set CHECKSUM_NONE instead of failing the trim, which dropped packets
  that used to be accepted (Sashiko).  Retitled, and add Fixes: tags.
- 7, 8: add the Fixes: tags for the original commits, and correct the
  history in 8's commit message (Sashiko).  8 also says what it takes
  to reach the memcpy().
- 7: reject a negative @len or @hlen on entry.  The reorder left nothing
  ahead of the skb_put(), which panics on one.
- 8: the truesize check refuses the coalesce instead of only warning,
  and runs before the head is stolen.  With len unsigned and nothing
  else, an skb with a len above INT_MAX went from refused to coalesced.
- 9: check data_len > len directly and zero the frame.  The old check
  missed CHECKSUM_PARTIAL (Sashiko).  Retitled.
- 10: drop both len > 0 tests, and correct what the commit message says
  they covered (Sashiko).
- 9, 10: drop the Fixes: tags.  Both problems are older than the commits
  the tags named, and neither has a known trigger.
- 11: Willem, this one changed again after you OK'd the walk up front.
  A nested frag_list is only one way for the walk to run out of members.
  A len that counts bytes the skb doesn't hold gets to the same NULL
  pointer dereference, and the walk up front doesn't catch that.  So the
  patch now checks for a NULL list_skb in the three places where the
  walk moves on to it, and that's all it does: no pass up front, which
  also takes care of the cost you pointed out for BIG TCP, and none of
  v2's skb_has_frag_list() tests.  You asked on v2 whether the first two
  checks were needed.  For a nested frag_list they weren't, for this
  they are.  12 has a case for each, and taking any one of the three
  checks out brings the oops back.  The path without SG is left alone
  again.  The commit message says that IP reassembly does nest
  frag_lists, just not on GSO skbs (Sashiko).  Retitled.
- 12: add four cases for a len that counts bytes the skb doesn't hold.
  Retitled.
- 13: correct what the commit message says about when bounce_skb() runs
  and when skb_copy_bits() fails.
- 14: update the comment above skb_nsg() (Sashiko).
- 15: one more stale comment, in net_test.c.
- Picked up Fernando's Reviewed-by on 4.  Dropped Mina's on 1 and
  Fernando's on 2, since the frag_list loop moved in both, and Willem's
  on 12, since it grew.
- Shortened the commit messages.
- Rebased onto current net-next.
v1->v2:
- skb_segment(): check each frag_list member as the walk takes it,
  instead of an extra pass over the frag_list up front (Willem).
- KUnit test: braces around the suppressed skb_segment() call (Willem),
  and the comment update for the non-uniform case moved into the same
  patch (Mina).
- Picked up Willem's Reviewed-by and Mina's Acked-bys.

--- Original email (v1) ---

Hello,

Jakub applied v2 of my skbuff BUG_ON() series[1] before I got v3 out, so
this is what v3 would have changed, as fixes on top of what landed, plus
the skb_copy_and_csum_bits() patch I'd been sending to net on its own.

Patch 1 is that patch[2], moved to net-next as Mina suggested, with his
Reviewed-by.  It makes skb_copy_and_csum_bits() report failure, and the
rest of the series builds on it.  Please drop the net version.

Patches 2 through 6 deal with skb_checksum() and skb_crc32c().  My v2
had them return 0 when they run out of skb, and that turned out not to
be safe: 0 is a valid checksum, and it can make a packet that was never
fully checksummed pass verification.  So they get versions that report
failure, skb_checksum_full() and skb_crc32c_full(), and the core users
switch to them: checksum validation now rejects a packet it can't
checksum, skb_segment() and pskb_trim_rcsum() fail instead of using a
bad sum, and skb_crc32c_csum_help() drops the packet.  skb_checksum()
and skb_crc32c() stay as wrappers that behave as before, and I'll
convert the rest of their callers per subsystem in later series.

Patches 7 through 10 fix problems Sashiko and an LLM review found in
what was applied.  skb_zerocopy() refuses a zero-length copy that Open
vSwitch can trigger from a user namespace, skb_try_coalesce() and
skb_copy_and_csum_bits() can be handed a negative length, and
skb_headlen() can underflow in skb_copy_and_csum_dev().

Patches 11 and 12 make skb_segment() refuse a nested frag_list, which
could still oops on a NULL list_skb, and add KUnit cases for the layouts
it refuses.  Patches 13 and 14 get rid of the same BUG_ON()s in
xen-netfront's bounce_skb() and tls's __skb_nsg(), and patch 15 updates
comments that still describe the old BUG_ON()s.

I tested this with the net_core KUnit tests, a test module that drives
each of these paths under KASAN and fault injection, an Open vSwitch
reproducer for patch 7, and a stress run over veth with netem.  Thanks,

Josef

[1] https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
[2] https://lore.kernel.org/all/20261013-b4-skb-segment-nosg-unreadable-v2-1-6c28d8ffa51e@toxicpanda.com/

---
Changes in v4:
- Link to v3: https://patch.msgid.link/20261103-b4-skbuff-bug-on-followups-v3-0-54ad0ab57614@toxicpanda.com

Changes in v3:
- Link to v2: https://patch.msgid.link/20261021-b4-skbuff-bug-on-followups-v2-0-2aa780a03524@toxicpanda.com

Changes in v2:
- Link to v1: https://patch.msgid.link/20261019-b4-skbuff-bug-on-followups-v1-0-41dbef50b9f7@toxicpanda.com

---
Josef Bacik (15):
      net: skbuff: make skb_copy_and_csum_bits() report unreadable frags
      net: skbuff: add skb_checksum_full() that reports failure
      net: skbuff: fail checksum validation when the skb can't be checksummed
      net: skbuff: fail segmentation when a segment can't be checksummed
      net: skbuff: drop hw csum if trim can't checksum tail
      net: skbuff: add skb_crc32c_full() that reports failure
      net: skbuff: let skb_zerocopy() copy a short skb without head_frag
      net: skbuff: make skb_try_coalesce()'s len unsigned
      net: skbuff: reject data_len > len in copy_and_csum_dev
      net: skbuff: reject a negative length in skb_copy_and_csum_bits()
      net: skbuff: don't run off frag_list in skb_segment()
      net: test the skb layouts skb_segment() refuses
      xen-netfront: don't BUG() when skb_copy_bits() fails in bounce_skb()
      net/tls: don't BUG() on leftover length in __skb_nsg()
      net: update comments that still describe the skb BUG_ON()s

 drivers/net/ethernet/sun/sunvnet_common.c |  10 +-
 drivers/net/xen-netfront.c                |   7 +-
 include/linux/skbuff.h                    |  12 +-
 net/core/dev.c                            |  14 +-
 net/core/filter.c                         |   6 +-
 net/core/gro.c                            |  11 +-
 net/core/net_test.c                       | 160 ++++++++++-
 net/core/skbuff.c                         | 451 +++++++++++++++++++++++-------
 net/ipv4/icmp.c                           |   9 +-
 net/ipv4/ip_output.c                      |  11 +-
 net/ipv6/icmp.c                           |   7 +-
 net/ipv6/ip6_output.c                     |  11 +-
 net/sunrpc/socklib.c                      |   9 +-
 net/tls/tls_sw.c                          |   8 +-
 14 files changed, 577 insertions(+), 149 deletions(-)
---
base-commit: 4dd16e31135ea8437a720222df34e8745f385d6d
change-id: 20261016-b4-skbuff-bug-on-followups-ad11adf285a4



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:47:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:47:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472758.1680604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtl-0003Hs-Qh; Wed, 04 Nov 2026 20:47:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472758.1680604; Wed, 04 Nov 2026 20:47:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtl-0003Hj-Lo; Wed, 04 Nov 2026 20:47:57 +0000
Received: by outflank-mailman (input) for mailman id 1472758;
 Wed, 04 Nov 2026 20:47:56 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtk-0002la-AY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtj-00BcE3-NR
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:55 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99ea-e002-0a2a0a5209dd-0a2a4507c1e0-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:55 +0100
Received: from [209.85.160.178] (helo=mail-qt1-f178.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fa-b4ea-0a2a45070019-d155a0b2d40a-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:55 +0100
Received: by mail-qt1-f178.google.com with SMTP id
 d75a77b69052e-53c4b82919fso14039711cf.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:55 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-54b10a7006asm33796401cf.17.2026.11.04.12.47.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825274; x=1794430074; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=VmZ/3gC03rOFS4IvFRf+urbZu7mk8uManzJKXnUZilo=;
        b=ER7WJ2KxQWtLg8ehy0NfGsVeGwsog8MGdRF3EP8g08Jy2JS8G+gfrch38webm5p2Sv
         QxjHPk8i7+/m9bHXUt3yHMwC1StY6fqmzapJrJUrcMCp9rikF7a227SqWmaSEyTjzTTB
         0olHFJP7Cr+1DDbt3ZU9vp72TR6Wc0saunwqmUTHvDfiF1oWbx36Yms359/gPrkhFPPa
         /eJozkvX++34c0FinZXJOTpmQs9K6AeMhr52vbSTejOBd1G/3Kpot79awyyM3zGnaW4D
         Lg/zWDBYq+JOLTbX6ClxpJllUF0UO3/GXIwiSYODW/TsBMCy4A6nshfZumdwujoQMbZp
         fUeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825274; x=1794430074;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=VmZ/3gC03rOFS4IvFRf+urbZu7mk8uManzJKXnUZilo=;
        b=FWEcPHOTUdmuefWrEVuA2RGi4JLXrEivBwcTK3kyF3T57EoNRxwBOc8zZqhalPWxaJ
         bQS743wEv7vsaTo10cb8bA2KLXeIZwmQoypcO/Z+1FxCOPCpVFzSaT+/mt/xI6+AehX1
         HwrL3rkUhW9mIIvz7q1dnRC27zY5ClrqRD5xcwSoiOJY7n+kOUZelaXVwNMYK2qCZjL6
         L7aAQ791mXmEgGESAcTkdZdETqwy5GiiehXGpIUt2RAmYSWQbeu/ugnVTKh6EWB+rtbi
         XRgOW+ApKo69dKHAPQHylx+l5CUORGx5PfRh0TaFR1sPSKExwuaIYNoGkXUjJtKSzsSj
         chDw==
X-Forwarded-Encrypted: i=1; AKwUvByXYOeK6BwB+Ecb0x0z+l/pWYD9cArbBcgSlNVU7PSHp7DIAxKXGMpJZq0lWRkj4Wjk3qFktwOXTB4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/cGCX88rtqeGcV/Q6Ze8hNZXk0p08LdSPoPV6NxLSz/6ufcMep
	tkgpff3O4XmBdh7+41BBk5peMvsxH3FkszsOvx1gY63qtr9/4dufsFkCdoqINFP1WLA=
X-Gm-Gg: AYBFou1qXZnUYSNuykV3FyU54Drh7FspFgBYMa4N20ydS6A2O9rSZtTehp/OgiORHJ2
	dZxphz9RwNdL651KGSIkZY5z2hqmJalidhDE6b7nmQKzt4ylp2NypHqL03WLmh1X/Z3QII6YoHY
	KRqeGnkPb77iLPAbVW4DgmIPgpiX4mEUskE4HFZ/9/ZNRYMylSFOQb0QqdklcToMZ9Oa+05r8oi
	0/JyERlEMJUePWinnwRQIQnW5gYeZevkJZ9z9zFBAFpa1RS41BiRsP1dinhe+DPaZ/HynFYuB3Q
	MJrRIMIH9qynKT+GarMh27XiNeuYdi9Pv29JLuvGpIyq1OYOhvUI49YF3402BNBCj5uDvq8pWd3
	x5Zux5ez8tBHsnTgTYpdsmGeleKN0NuufaKJyHvxn4Qy/574LmvDS97qL41lrp/Ufar3ePicT5D
	yq+DtJHfsNlASEdOqzH/J9fw4kWQK1htuFKZLkSVVed150J9pktvvK7Iu6zSy772/m32yqrkWph
	0u2M53ZDhnOvv6tjKHItjLmwPkLNeZuGmaKqSFqEuBFjfFV8CHmeWwGzawZ16LI39a9p0dRa+2D
	/po91z80Yuaa6AeLzCo7mCoRINsDdP+5S5RTZPn6BprUlg==
X-Received: by 2002:ac8:59d3:0:b0:536:3a49:f76 with SMTP id d75a77b69052e-542b62a60f2mr301290451cf.27.1793825274007;
        Wed, 04 Nov 2026 12:47:54 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:15 +0000
Subject: [PATCH net-next v4 03/15] net: skbuff: fail checksum validation
 when the skb can't be checksummed
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-3-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=5641;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=Lx+sg563Gwi7/eqkbjWaelHQ+u2/rBUxkXNgf6ZDN3A=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QIBEqqq3ka7HmeaWWRJD2T+myoIbf+nMkpwdF2b0vlJsA0tYmEFfRvaeCBuvlGjyE/GzzQk+iqN
 3kCfR/y6KEwc=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-ef75cf/1793825275-A6EDEAE4-9DED2C98/0/0
X-purgate-type: clean
X-purgate-size: 5643

__skb_checksum_complete() and __skb_gro_checksum_complete() verify a
packet with skb_checksum(), which returns 0 when the payload is in
unreadable frags or the skb's lengths don't add up.  Both add that 0 to
the pseudo-header sum, so they accept the packet whenever the
pseudo-header sum folds to 0xffff.  The sender controls that sum through
the addresses and the length.

Use skb_checksum_full() in both, and in __skb_checksum_complete_head(),
and report an skb that can't be checksummed as having a bad checksum.

Also take the skb off CHECKSUM_COMPLETE on that path.  nf_ip_checksum()
stores the pseudo-header sum in skb->csum before it calls
__skb_checksum_complete(), and conntrack doesn't drop a packet with a
bad checksum.  If the skb stayed CHECKSUM_COMPLETE,
__skb_checksum_validate_complete() would add the same pseudo-header sum
to skb->csum and accept the packet under the same condition.

A test module builds an skb that claims 50 more bytes than it holds,
with a pseudo-header sum of 0xffff.  Both functions accept that skb
before this patch and reject it after.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Link: https://lore.kernel.org/all/179273111951.3134.3452028799437573017@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |  4 ++--
 net/core/gro.c         | 11 +++++++++--
 net/core/skbuff.c      | 27 +++++++++++++++++++++++----
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 608c1491597e..5a5354a6b6ba 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4892,7 +4892,7 @@ static inline void skb_checksum_complete_unset(struct sk_buff *skb)
  *   0: checksum is validated or try to in skb_checksum_complete. In the latter
  *	case the ip_summed will not be CHECKSUM_UNNECESSARY and the pseudo
  *	checksum is stored in skb->csum for use in __skb_checksum_complete
- *   non-zero: value of invalid checksum
+ *   non-zero: value of invalid checksum, or 1 if the skb can't be checksummed
  *
  */
 static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb,
@@ -4932,7 +4932,7 @@ static inline __wsum null_compute_pseudo(struct sk_buff *skb, int proto)
  *
  * Return values:
  *   0: checksum is validated or try to in skb_checksum_complete
- *   non-zero: value of invalid checksum
+ *   non-zero: value of invalid checksum, or 1 if the skb can't be checksummed
  */
 #define __skb_checksum_validate(skb, proto, complete,			\
 				zero_okay, check, compute_pseudo)	\
diff --git a/net/core/gro.c b/net/core/gro.c
index 1b033855a20d..e2e847c95270 100644
--- a/net/core/gro.c
+++ b/net/core/gro.c
@@ -798,10 +798,17 @@ EXPORT_SYMBOL(napi_gro_frags);
  */
 __sum16 __skb_gro_checksum_complete(struct sk_buff *skb)
 {
-	__wsum wsum;
+	__wsum wsum = 0;
 	__sum16 sum;
 
-	wsum = skb_checksum(skb, skb_gro_offset(skb), skb_gro_len(skb), 0);
+	/* If the data can't be checksummed it can't be valid either, and
+	 * NAPI_GRO_CB(skb)->csum only holds the pseudo checksum.
+	 */
+	if (skb_checksum_full(skb, skb_gro_offset(skb), skb_gro_len(skb),
+			      &wsum)) {
+		NAPI_GRO_CB(skb)->csum_valid = 0;
+		return (__force __sum16)1;
+	}
 
 	/* NAPI_GRO_CB(skb)->csum holds pseudo checksum */
 	sum = csum_fold(csum_add(NAPI_GRO_CB(skb)->csum, wsum));
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index d51fdcb3e016..0082b12544cf 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3885,11 +3885,28 @@ u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
 EXPORT_SYMBOL(skb_crc32c);
 #endif /* CONFIG_NET_CRC32C */
 
+/* The data can't be checksummed, so it can't be valid either.  The caller has
+ * put the pseudo header's checksum in skb->csum, so don't leave the skb
+ * CHECKSUM_COMPLETE for a later validator to take that for the packet's.
+ */
+static __sum16 skb_checksum_complete_failed(struct sk_buff *skb)
+{
+	if (!skb_shared(skb)) {
+		skb_checksum_complete_unset(skb);
+		skb->csum_valid = 0;
+	}
+	return (__force __sum16)1;
+}
+
 __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len)
 {
+	__wsum csum = skb->csum;
 	__sum16 sum;
 
-	sum = csum_fold(skb_checksum(skb, 0, len, skb->csum));
+	if (skb_checksum_full(skb, 0, len, &csum))
+		return skb_checksum_complete_failed(skb);
+
+	sum = csum_fold(csum);
 	/* See comments in __skb_checksum_complete(). */
 	if (likely(!sum)) {
 		if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE) &&
@@ -3909,14 +3926,16 @@ EXPORT_SYMBOL(__skb_checksum_complete_head);
  *
  * It returns non-zero if the recomputed checksum is still invalid, otherwise
  * zero. The new checksum is stored back into skb->csum unless the skb is
- * shared.
+ * shared. If the skb can't be checksummed it returns non-zero, skb->csum is
+ * left alone, and the skb is no longer CHECKSUM_COMPLETE unless it's shared.
  */
 __sum16 __skb_checksum_complete(struct sk_buff *skb)
 {
-	__wsum csum;
+	__wsum csum = 0;
 	__sum16 sum;
 
-	csum = skb_checksum(skb, 0, skb->len, 0);
+	if (skb_checksum_full(skb, 0, skb->len, &csum))
+		return skb_checksum_complete_failed(skb);
 
 	sum = csum_fold(csum_add(skb->csum, csum));
 	/* This check is inverted, because we already knew the hardware

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:47:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:47:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472759.1680613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtn-0003W7-21; Wed, 04 Nov 2026 20:47:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472759.1680613; Wed, 04 Nov 2026 20:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtm-0003Vz-TR; Wed, 04 Nov 2026 20:47:58 +0000
Received: by outflank-mailman (input) for mailman id 1472759;
 Wed, 04 Nov 2026 20:47:57 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtl-00037q-ID
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtk-00DUt0-Nq
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:56 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99da-2eae-0a2a0a5409dd-0a2a4508964c-44
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:56 +0100
Received: from [209.85.160.177] (helo=mail-qt1-f177.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fb-f659-0a2a45080019-d155a0b1dc8f-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:56 +0100
Received: by mail-qt1-f177.google.com with SMTP id
 d75a77b69052e-53634b8328eso9650621cf.0
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:56 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e7e728f87sm28503726d6.36.2026.11.04.12.47.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825275; x=1794430075; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Z0ofG8i+5G3+D6Lky4QQ+QewxWtJgEdu+4PNn/sRjok=;
        b=kr0H6+XKXUvBB2A5SCmhTrbHwCLJhC4CcSo4QA4uX9M7rcDpK3s39jUQHEEhfZM1F7
         BBbIA2meHQHICMjoe0+WLNimrc74eP+pBm8YVUWzVcPcDhtFeKnaLnaLjbFGiy8buyVW
         EwTMH5cfvc7l4rPTcUISC+7AIIm70TqIwCA0K2gZQPvfpGq6cQZGUmpkx5hP7QlFtnU+
         VzQqdpApNxBYgyOFx+N+9t83tcL/Jv477Ru1EVIKFCvas70ZWOxTiUug37L5T3oseQq1
         SxSEmlsWCRPoRCdvpgFS94C8fACcr/V0qfN9WXYEWNI10q53puxt5wfaMNJaQMjukh1Q
         f5mg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825275; x=1794430075;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Z0ofG8i+5G3+D6Lky4QQ+QewxWtJgEdu+4PNn/sRjok=;
        b=KM19QDiaqw1hSNa3FEv8Hsn+kHXJjyhkUTH1p+uP4pfQpJeycNrut+Wv6tDAC9hrlF
         R+2zNsgrGvqEphfK3jnA/ale/J6kLlyNwu0ygFFtW+FJzVdPv5sfZORMQRUugFwrEKht
         0/5v55Hq2Y9xA2iWG8B9k7l7/YILpobNlXo4ynNQr9n+AZ8hymrXNsjWZ9RNjNy6Q2rN
         DbxRoZllRvbB1H97UJS90oFuYsBN0KYvV9Lxj9TSgt9xr2P2SxP5O1JaPdiTXePGCYKO
         ShQlZ+nLgsHaqIqnBaGjxMdhbzR5Inp0NbYCK1epYoxsl6zT+rD2jsnr6sH30MNepz3l
         bhfg==
X-Forwarded-Encrypted: i=1; AKwUvBz+JiBt3e6boRMxN7aQk3vWWFAj/5weXS+B0QEodhBpC2JvtwnsvzzjEMRWy+Cz5DlaOOhdawgrXdE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/rUgg5PCN0yxxfYf1WV5en0yJ6ODVLyxjR2u7rTHc+xhDLxMzr
	BQGCrPlcbevLJRE81pGC5ZDqho5FRdFCz7SilrVDEsIfwEFB/mtFA0h4AkimJYhZv0o=
X-Gm-Gg: AYBFou0uQSAJ17PJJy1WX5d7VLiJnpoSR0GaazvDi84ixUbOk5TO/ATMjLxf7fqncKG
	ZHdK1DKVROIMecfDNYPC9MqoxPmp+e7ojURLZUhxTRRIIvhrTJWe4F8Pii8TBMRLYvjyJ1i8DYT
	hvOiu2vJ8MlgqSmw4VK7veX1F/uST4O8gsi7JytJmbRj2mW9qVvhYhp2EmINcspUva8B8gTFh6N
	/Vtlm5jt1ssZeRvJjkTmYNFlS3qsanKNa3T2pdqTDwlHSYGGHpxr2p8c6EDo8hqzL16cfbc7+g/
	JAl9iBuCn52Cr1zbluWxZ/1XhFY02vH2njCDN84LbOVB2da8bBHEo00lvWWsy3UZWmssGuncs7g
	GRNFaZ8eqveIaZjGUDEBpoawuQo8SAk8w5EF7HCEjoZvBHT/mo1NIA+udq45yXHpBePQIIgic8G
	eJ2Bo9tn4hRytYDm8GGRKm6NZ2kL1ZWLEUbH0x+dmA0cU7KBz++0VBvIlGnPd2tSO1+XgOivLeB
	SJ+IWe5fo2Cpm/8FxGYUQN63n4I3TCbgxH3PAEl3Z/lmH2XTOU0+gek0brZC6OasLWEh4lSSvCd
	X8N+qMUhcEPapr32FxSEo1RJQ6NrfsHO2uxzUkqQNiZQTmRFkxS3rpB5XCONgCz+MRc=
X-Received: by 2002:a05:622a:5b88:b0:53f:a444:dc7c with SMTP id d75a77b69052e-5489bf4ed8dmr148147081cf.56.1793825275132;
        Wed, 04 Nov 2026 12:47:55 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:16 +0000
Subject: [PATCH net-next v4 04/15] net: skbuff: fail segmentation when a
 segment can't be checksummed
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-4-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=1797;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=wq7jmBov95d1ubPFIBwmfjjLdm8phK81PlxkHkS1v7k=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QC+K6YoFA8/X2w62wsZpb6RlJydDVfMR0awgE6H/Srw2FuCPuHi1hJdV2my2TnKDRzcBlXa3JFb
 7M90ontNv/wM=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-c1860d/1793825276-CD34D87B-35A2638F/0/0
X-purgate-type: clean
X-purgate-size: 1799

When the device can't checksum the protocol, skb_segment() checksums
each segment with skb_checksum().  If the segment has unreadable frags,
or its lengths don't add up, skb_checksum() returns 0 and the segment
goes out with a checksum that doesn't cover its payload.

Devmem TCP doesn't get that far today.  Its skbs take SKBFL_SHARED_FRAG
from the zerocopy uarg, so skb_segment() tries to linearize the segment
first, and that fails with -ENOMEM for unreadable frags.  No other path
is known to bring an unreadable segment here either.

Use skb_checksum_full() and fail the segmentation with -EFAULT, so that
the checksum doesn't depend on that flag.

Found by the Sashiko AI review of an earlier fix for the same path with
SG off.

Link: https://lore.kernel.org/all/20261009-b4-skb-segment-nosg-unreadable-v1-1-7e2334a55fe8@toxicpanda.com/
Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Acked-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 0082b12544cf..43bfaa010db7 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5294,9 +5294,13 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 			if (!nskb->remcsum_offload)
 				nskb->ip_summed = CHECKSUM_NONE;
-			SKB_GSO_CB(nskb)->csum =
-				skb_checksum(nskb, doffset,
-					     nskb->len - doffset, 0);
+			SKB_GSO_CB(nskb)->csum = 0;
+			if (skb_checksum_full(nskb, doffset,
+					      nskb->len - doffset,
+					      &SKB_GSO_CB(nskb)->csum)) {
+				err = -EFAULT;
+				goto err;
+			}
 			SKB_GSO_CB(nskb)->csum_start =
 				skb_headroom(nskb) + doffset;
 		}

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472760.1680622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhto-0003kg-8f; Wed, 04 Nov 2026 20:48:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472760.1680622; Wed, 04 Nov 2026 20:48:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhto-0003kO-4j; Wed, 04 Nov 2026 20:48:00 +0000
Received: by outflank-mailman (input) for mailman id 1472760;
 Wed, 04 Nov 2026 20:47:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtm-0003Lw-7m
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtl-00FYWL-K6
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:57 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99e8-bab6-0a2a0a5309dd-0a2a450c9a30-22
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:57 +0100
Received: from [209.85.160.178] (helo=mail-qt1-f178.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fc-f479-0a2a450c0019-d155a0b2d9a2-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:57 +0100
Received: by mail-qt1-f178.google.com with SMTP id
 d75a77b69052e-533778ab0bdso11880941cf.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:57 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-54b1086db63sm33603081cf.11.2026.11.04.12.47.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825276; x=1794430076; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=76u0opG5lCQGub1g5v24NFjQ04Vm85vyhWc2VR6fzD8=;
        b=nqYZXPQIbVE8MlPOwSsMgmbBKf6H8K7DShEFiBS4hvEnVH8PL1jQPPq9wb+eSRJVXa
         Bcezo0p8/lEuPF2ToBi6NSIv8wRyabdpGdifen0IBNN2WD/1qdYfXFaOGJe8ChNWZ+fk
         hogAu/2YJ722DgpIkCUndRQ78BVcTKskRG0VnVcSCdMFWFZU/D6zL47rkJNoio2EtD0c
         pxh845KqMzoytr53/u4rk/LLxmrnUJJxbivqKOq+dN+k9VlGAwdpk3EQNlwf5ht7Wa0L
         pHf3oKseuiOJFR5xl+Hn4fuy8BgeKhK8vfh9NUnsHRQOn52DKYulcA+8dArjV3b9R33x
         Omkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825276; x=1794430076;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=76u0opG5lCQGub1g5v24NFjQ04Vm85vyhWc2VR6fzD8=;
        b=exzmnWI/xL0ZQ+VUg3p/wVDnxh0iFYPfFXMEWOTgbmHHiizAEKoCBgsG7nalb3g8mB
         ycQmq16fTLlXPXxqpM+JRN+lLydCED2bVpHFIV1Szh9l7bZUnT2SeUfwfMRksXrQzM14
         gH6B/E0mFLEy4yUkvoz5MY6Qc4EEqn3GDdadODbGeYu6g5hiMj7a0z51koLOm7/UdFYB
         TiwdIamWxsnJkkxOS87jwo6sNbnTR+hzknqtTKnqYG26GlR02kFK71ZYWy0Kj69EeYZ8
         END0cg6LVyfSy092HFGHj7cusO3RbwCfMOfcXc/Xb0s/98sFIx5OD24cN8dIX+3SmkFT
         cxWw==
X-Forwarded-Encrypted: i=1; AKwUvBwdkPa0W9yUgFI2qebSYhQ+EaMiz3pt5u0uROtrTdwur4HFCZ04yNmkmDfSq3B1wOpE5MChZKJEQ1I=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8Lzk6kkdVpOPdDW7mjsa9qys0cHy/rkTstYzLCKJr7c3TvP+6e
	WmTkcgFOfja9ERqGcpEZi1ZIi6XVb+vO5w8Q6+my5fhOAU8YmHCi/7aCCg1no3kGRkM=
X-Gm-Gg: AYBFou34k0cuJLMyA3G0f/M6erh+R/WcKUbio+ESV4zp/Z25xEAprpFk/5ELx13K8xB
	mkA6kj/HOSTYms53iq8qW3P0nNEIBig+0ANQGm+E0wOAuBJIPNm2FSVwxsEInn6r7hakjU8CffW
	VnAiHHLXCNnU3FCyEoMfJXlJsr3FsGfEcKeYDQ+686nCxS3egzJk9V9RsoVnE8fn2INB1TS5axc
	1ddS/4utP1zPAQa/hNlauFBQEEDI13s6N8XmBzjhIa3RfLkGQW7LPDXoxzYZU0bGklyzbhNpLiX
	6rWjB5Qaj4wSvOzgdYkqab1IOshXGvP1Z4Xc6K95AUMiWiLyrOgWU8P/uCL44LeFriZuDwuWdCF
	soEkxD8loiiz58xaFOg0QFTnxuJ5n5Rz6DPXBKAY5YRHAHUtKWa5amWcwVKkWd8zn0QxJPwBZRC
	+3ncdho5EWTlPpf+vXUhT40wpwp64HvAXERfM8Dnq4BEKSNYvXheKSfUziZyLanUqPRLkrdADSs
	nKnB9ulSx3gyO1oLU3WGhcY4UwZY4CFshEsbB/XbgEisQsGbyOP0HE+dVeTuA8pLA+ca941QwVu
	9nKP5wP87xrEXK0U25ZMewn+bT00CZ+uL9oBEf6T+PWZRQ==
X-Received: by 2002:a05:622a:164a:b0:535:20ea:cefe with SMTP id d75a77b69052e-542b639cb3dmr296202871cf.18.1793825276187;
        Wed, 04 Nov 2026 12:47:56 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:17 +0000
Subject: [PATCH net-next v4 05/15] net: skbuff: drop hw csum if trim can't
 checksum tail
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-5-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=2083;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=VhuNRWOW3RZfgkvn1rBlfP7PvQEEgt9QwL/nWscgVi0=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QEREoQ9M5gk5NXv0IYrsYL5d3xD0iqwQBzSWkwyENQ0s2oG9H/Gc4OPqk98ZP46iyupEQkfEnKm
 OaNK0sIyfUgQ=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793825277-02EDAA5B-EAB0FD4E/0/0
X-purgate-type: clean
X-purgate-size: 2085

For a CHECKSUM_COMPLETE skb, pskb_trim_rcsum() subtracts the checksum of
the trimmed bytes from skb->csum.  It gets that checksum from
skb_checksum(), which returns 0 if the trimmed range runs into an
unreadable frag_list member or past the end of the skb.  skb->csum then
still covers the trimmed bytes.

commit 2e357f002c61 ("net: Avoid checksumming unreadable skb tail on
trim") handles an skb that is itself unreadable, but not a readable head
with an unreadable frag_list member.

Use skb_checksum_full().  When it fails, do what pskb_trim_rcsum()
already does for an unreadable skb.  Set CHECKSUM_NONE if the remaining
packet can be read, so that software checksums it, and fail the trim
with -EFAULT if it can't.

The stale skb->csum was only reproduced with a hand-built skb in a test
module.

Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 43bfaa010db7..66ba9bfa8fc7 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2821,9 +2821,23 @@ static int pskb_trim_rcsum_complete(struct sk_buff *skb, unsigned int len)
 	int delta = skb->len - len;
 
 	if (skb_frags_readable(skb)) {
-		skb->csum = csum_block_sub(skb->csum,
-					   skb_checksum(skb, len, delta, 0),
-					   len);
+		__wsum csum = 0;
+		int err;
+
+		if (!skb_checksum_full(skb, len, delta, &csum)) {
+			skb->csum = csum_block_sub(skb->csum, csum, len);
+			return 0;
+		}
+
+		/* The trimmed bytes can't be checksummed, so skb->csum can't
+		 * be adjusted.  Software can checksum the remaining packet
+		 * after trimming, as long as it can read it.
+		 */
+		csum = 0;
+		err = skb_checksum_full(skb, 0, len, &csum);
+		if (err)
+			return err;
+		skb->ip_summed = CHECKSUM_NONE;
 		return 0;
 	}
 

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472761.1680627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhto-0003og-Pb; Wed, 04 Nov 2026 20:48:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472761.1680627; Wed, 04 Nov 2026 20:48:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhto-0003nn-Ig; Wed, 04 Nov 2026 20:48:00 +0000
Received: by outflank-mailman (input) for mailman id 1472761;
 Wed, 04 Nov 2026 20:47:59 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtn-0003Yk-D0
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:47:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtm-000QZ3-Pp
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:58 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99a0-8faa-0a2a0a5109dd-0a2a4501dd76-46
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:58 +0100
Received: from [209.85.222.173] (helo=mail-qk1-f173.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fd-5984-0a2a45010019-d155deada5ca-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:58 +0100
Received: by mail-qk1-f173.google.com with SMTP id
 af79cd13be357-945ae2daa68so118183685a.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:58 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d4899dc6sm291976285a.43.2026.11.04.12.47.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825277; x=1794430077; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=2iqbyIbqll56rZUjTWyhCsGjkAY8FnoBuOzACgDTjoA=;
        b=Zs1KVzpAla11JYbnEPduhouBUUPhE2/iTv8I2QsNcxPsYqCnCohWlqAXxIOnjp6iMK
         30b8RxswdEmFo8Z6n8MhgEHdqzzji6mHpNXQxacavAMS3gs2QNqlJuVcTeAo9dzBYmQG
         S1VLMJOcjqe6/QdO27s5tYr0Zfr6dxSr5yqM6NnqrF/5BDiOigu6qsRsXKD4Z5LZtEgK
         QeAWoUivNWgjd7ZmetFBn8Ebp2xJ5YZwh9IHvzWLDfQkPNMV31X+LDE2X+sFW0LAMBSa
         x/bUbcGwK1xLmapcKy+vYQbTWdHemdy1sjGMkXIQrymHqLkeYsxJSy1shILhTVvAk+dk
         JFsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825277; x=1794430077;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=2iqbyIbqll56rZUjTWyhCsGjkAY8FnoBuOzACgDTjoA=;
        b=sOVKiRmLExLY3/2lslr1tuB9yqKcwnjTZOHFXPHQfZ7pbkW5dSmr/5vp00jfCc77LS
         d4RQmmFMPN6Cxri+0CAH21iiRPPMzIwBFk9MZQXLU5UnwLhyV3DjINmkTLX6/JqpbQKa
         6L1DQ/xPOrZhY81zUgQYMfB1KOb1LIttJgxlp/k0O7zxYOHWAq2P2RLHtnc2rkdF73eK
         5q0GCSjLIvbSznxLf4rVH6+AYk/gVQHrh65KcxBrJJrGDAGeTZxCpfyuIDgJX5p5P5nS
         yzNAl9DtX9QzsTzFOECVoOihOMSTz4EiFJOEQnGvFawTr8PeQEzi5jbobmgtlDEaF6U9
         fI5w==
X-Forwarded-Encrypted: i=1; AKwUvByCARWgxvQVFUyIQr/BKuD1CEngKn7jizT+CZ/yF2rYok5gwA/lWfbO0i1/3I5Xs3j1BSazB4ZYxIk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8ay5A7SjkRHbrRwE4/eqZk2cil0iJjgsdhGZnJJ6oku7sf7SDt
	j4fdHKFAl9aLeN/OzerOPfFnZCTA6OJmAcq13x0r5HUnfw9Noo/Bg+Bmogk8v0io/S8=
X-Gm-Gg: AYBFou2gjulltGmhcvzGML3pu31pb+IJAhCCfkpKjrHho8CC+ZwL1ufxYhE4wiDaceV
	J8kjtIyLL3s6RIgK5bySWYZiFozdbtxE/NfnbHJZkCviPCL0sI4G8A6UsLbcOxs4D8miuj6iO+i
	tce31n51O+dyX6iTVuN6dJmIt4iY4XL7i0vEsWE2IP03h7Is0Eeza417LaHZc+2cN1wAmh+VB09
	4nT4JH9ke4g2KcjsLRTifLSNillMFxKpeOfKfqRgcZrdajJZ7zL7eBSzxViJVY6TqfULd9s9NLU
	z6Au5314bKRzIU3DS3UkPrJ7cMhp+W8Gm6CyXN6w/i8i+l3/97av5J/g3LwkN3EW+s35knTnUt/
	TSCOVrj2Qvq2EkcRYSjcFgXTq4AiO8FJt+fV3TIiFtPjGeSITr1PAnXXSxQOReNeSR4Zo1FKJRC
	BWhoS8a0YaagjmJmGf/lMGrb/+IK19ZU43Nk9j0x1dG4cCl3CRMoYmYN+3dGwkx9rUGY8XHQWIv
	+YeXNYeLUE4tCbAVnU2msthARF6D88v7gtooeTr2I6NlSLmM9k5mPsa5sCpFC0EoAXuNmR+Hur8
	vxskKciGkPsrTxusb1vznUnNNzxREeBJwFm6LNTpUED+6w==
X-Received: by 2002:a05:620a:2788:b0:93f:3834:31f9 with SMTP id af79cd13be357-945e16aa3e7mr108928085a.12.1793825277204;
        Wed, 04 Nov 2026 12:47:57 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:18 +0000
Subject: [PATCH net-next v4 06/15] net: skbuff: add skb_crc32c_full() that
 reports failure
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-6-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825268; l=5927;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=DmjhWQ5DbJzFnm4Wwg1TpS3SDY+QYZAOw6lUp58u+o4=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QBjRiNxwpgAKwONkFhB+BneqX78IwJRr+LyApr85bnefV3HRAkCkhFAn5Dl/gju2+QcLKWjlQoe
 FEZd97LNDlQ4=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d62444/1793825278-1DA7E757-58C06D0E/0/0
X-purgate-type: clean
X-purgate-size: 5929

skb_crc32c() has the same problem as skb_checksum().  When the range
runs into unreadable frags or past the end of the skb, skb_crc32c()
returns 0, which is also a valid CRC.  sctp_compute_cksum() and
skb_crc32c_csum_help() complement it, so a failed walk looks like a
checksum of 0xffffffff whatever the packet contains.

Add skb_crc32c_full(), which works like skb_checksum_full().
skb_crc32c() becomes a wrapper for the callers that aren't converted
yet.  The wrapper still returns 0 on failure, but it no longer warns
when only a frag_list member has unreadable frags.

Convert skb_crc32c_csum_help(), which can already return an error, so
that an SCTP packet that can't be checksummed is dropped on transmit.
The other callers will follow with the skb_checksum() callers.

Fixes: 20ddd0fd2fcd ("net: skbuff: don't BUG() on leftover length in skb_checksum() and friends")
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 include/linux/skbuff.h |   2 +
 net/core/dev.c         |   7 +++-
 net/core/skbuff.c      | 100 +++++++++++++++++++++++++++++++++++++------------
 3 files changed, 83 insertions(+), 26 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 5a5354a6b6ba..5581ed3cbf47 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4332,6 +4332,8 @@ static inline int memcpy_to_msg(struct msghdr *msg, void *data, int len)
 
 __wsum skb_checksum(const struct sk_buff *skb, int offset, int len,
 		    __wsum csum);
+int __must_check skb_crc32c_full(const struct sk_buff *skb, int offset,
+				 int len, u32 *crcp);
 u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc);
 
 static inline void * __must_check
diff --git a/net/core/dev.c b/net/core/dev.c
index 00a62c391056..f9878db781df 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3752,8 +3752,11 @@ int skb_crc32c_csum_help(struct sk_buff *skb)
 	if (ret)
 		goto out;
 
-	crc = ~skb_crc32c(skb, start, skb->len - start, ~0);
-	*(__le32 *)(skb->data + offset) = cpu_to_le32(crc);
+	crc = ~0;
+	ret = skb_crc32c_full(skb, start, skb->len - start, &crc);
+	if (ret)
+		goto out;
+	*(__le32 *)(skb->data + offset) = cpu_to_le32(~crc);
 	skb_reset_csum_not_inet(skb);
 out:
 	return ret;
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 66ba9bfa8fc7..96c8835a262b 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3825,23 +3825,79 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 EXPORT_SYMBOL(skb_copy_and_csum_bits);
 
 #ifdef CONFIG_NET_CRC32C
-u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
+/* The frag_list part of skb_crc32c_full().  It's out of line so that taking
+ * the address of crc doesn't cost every caller a stack protector.
+ */
+static noinline int skb_crc32c_frag_list(const struct sk_buff *skb, int start,
+					 int offset, int len, u32 crc,
+					 u32 *crcp)
+{
+	struct sk_buff *frag_iter;
+	int copy, err;
+
+	skb_walk_frags(skb, frag_iter) {
+		int end;
+
+		WARN_ON(start > offset + len);
+
+		end = start + frag_iter->len;
+		copy = end - offset;
+		if (copy > 0) {
+			copy = min(copy, len);
+			err = skb_crc32c_full(frag_iter, offset - start, copy,
+					      &crc);
+			if (err)
+				return err;
+			len -= copy;
+			if (len == 0)
+				goto out;
+			offset += copy;
+		}
+		start = end;
+	}
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+out:
+	*crcp = crc;
+	return 0;
+}
+
+/**
+ *	skb_crc32c_full - CRC32C a range of an skb
+ *	@skb: buffer to read
+ *	@offset: offset in @skb to start at
+ *	@len: number of bytes to include
+ *	@crcp: the CRC to continue from; on success, updated with the range
+ *
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	runs out before @len does, or if the range goes past the linear area
+ *	of an skb, @skb or one on its frag_list, that has unreadable frags.
+ *	On failure *@crcp is not changed.
+ */
+int skb_crc32c_full(const struct sk_buff *skb, int offset, int len, u32 *crcp)
 {
 	int start = skb_headlen(skb);
 	int i, copy = start - offset;
-	struct sk_buff *frag_iter;
+	u32 crc = *crcp;
+
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
 
 	if (copy > 0) {
 		copy = min(copy, len);
 		crc = crc32c(crc, skb->data + offset, copy);
 		len -= copy;
 		if (len == 0)
-			return crc;
+			goto out;
 		offset += copy;
 	}
 
-	if (WARN_ON_ONCE(!skb_frags_readable(skb)))
-		return 0;
+	if (!skb_frags_readable(skb))
+		return -EFAULT;
 
 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 		int end;
@@ -3866,34 +3922,30 @@ u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
 			}
 			len -= copy;
 			if (len == 0)
-				return crc;
+				goto out;
 			offset += copy;
 		}
 		start = end;
 	}
 
-	skb_walk_frags(skb, frag_iter) {
-		int end;
+	return skb_crc32c_frag_list(skb, start, offset, len, crc, crcp);
+out:
+	*crcp = crc;
+	return 0;
+}
+EXPORT_SYMBOL(skb_crc32c_full);
 
-		WARN_ON(start > offset + len);
+/* skb_crc32c() has no way to report failure, so it returns 0, which is a
+ * valid CRC.  Use skb_crc32c_full() in new code.
+ */
+u32 skb_crc32c(const struct sk_buff *skb, int offset, int len, u32 crc)
+{
+	int err = skb_crc32c_full(skb, offset, len, &crc);
 
-		end = start + frag_iter->len;
-		copy = end - offset;
-		if (copy > 0) {
-			copy = min(copy, len);
-			crc = skb_crc32c(frag_iter, offset - start, copy, crc);
-			len -= copy;
-			if (len == 0)
-				return crc;
-			offset += copy;
-		}
-		start = end;
-	}
-	if (unlikely(len)) {
-		DEBUG_NET_WARN_ON_ONCE(1);
+	if (unlikely(err)) {
+		WARN_ON_ONCE(err == -EFAULT && !skb_frags_readable(skb));
 		return 0;
 	}
-
 	return crc;
 }
 EXPORT_SYMBOL(skb_crc32c);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472762.1680639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtq-0004Be-97; Wed, 04 Nov 2026 20:48:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472762.1680639; Wed, 04 Nov 2026 20:48:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtq-0004Ax-0T; Wed, 04 Nov 2026 20:48:02 +0000
Received: by outflank-mailman (input) for mailman id 1472762;
 Wed, 04 Nov 2026 20:48:00 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhto-0003lk-Hi
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtn-00DUt0-Ud
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:47:59 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fc-2eae-0a2a0a5409dd-0a2a4505a2d4-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:59 +0100
Received: from [209.85.219.47] (helo=mail-qv1-f47.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99fe-4cb1-0a2a45050019-d155db2fa983-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:47:59 +0100
Received: by mail-qv1-f47.google.com with SMTP id
 6a1803df08f44-91c7a706b1fso28851516d6.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:47:59 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e7e008399sm28523796d6.23.2026.11.04.12.47.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825278; x=1794430078; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=umuQbJBZ+T+/ul5GPlAUT8hdRrJpMBpkwqdC6QE4K5Q=;
        b=ln+AOLUMDhKMIQcKf8z/wVpD4VzPzaL1ahG6thz/Q8BfPcZ7ZBedH1+emN9Ebmos69
         h5+duzJn7gq++P78hdnyWPZQbk5NirC/O+f9rbMsvGzCFZ8L5eEh/+ctBbzPeAdfoWmu
         6qFCY0+VM1YGmsU2QIL/aexycsR4/sEMpKqcDWF31BHKeQIvJG5BAPc3dxrK4ucY8OLn
         ab5CIKFwVNc3WZK4Mvw8x2DRWojVwGcE+KDCAlCZFcnsLnqBhGk5PYF4rkHqIoSdckwq
         fFq5OEx1KDAKudEzucUMBcPrkrZGdgL3aVha+tGqB4hIcO3rF4YXb3yiYvZC7wn7IVmK
         4zBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825278; x=1794430078;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=umuQbJBZ+T+/ul5GPlAUT8hdRrJpMBpkwqdC6QE4K5Q=;
        b=rsiXCYeJCbTaFbHFA6IR9hiaCD7W1XBA1Thjl1llcX8csuUZdcasjuSp0/sDUq2IEn
         HU8ekVAaJY9qCpO4yo3mvHkQXgELRKjk1iX8Qwf+bM9wtqyI1Z7IlfF6spY7NTWf7Osa
         hJHmNy7C4dFk/4RdzvGIkI+azQmlOfviSSkM0SFweTFy5zVLNYuCfwQOJaUIhyACle7X
         RQz8eiaVBfzJFpa6OBUcbU7+Yfc4YUhcMCicgAhmUERPLLePjqYzPa7gduVY40r0pfpW
         Xvix+iaYOqUDBktPjF3UiFZnnktx2fmp1zTSExBfzj+qbdSsDft5jAveUFcXpeAOt5Na
         poyA==
X-Forwarded-Encrypted: i=1; AKwUvBzF/vXRnBfYCakMepYncDrtycuU71JS5/PZgTfHxMgZKHe/itiLAiztoSAmAlEO9lu2YMRQ235JLDU=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9wIleogyPatUKaimDV7oUeCU6+yZhkQo9rJCC3qw/fzBndqPtY
	i5YlfWklrqHHhr2oPUAW/n89xujVGZ/7yxXpQBKubBq0akKlhnTnezB61rISWFxtodc=
X-Gm-Gg: AYBFou32PA4lUcFXoacoFiflm6jjJrCupNZxCY5E2TIOiISeNTpPQJOt/jmqnMkhdL7
	u+7UqWHeWOflC2YhZhNOss/Yk32GjyOBtnbL1SFvcWzAyZ9uGiaTihulcibiocFoK9tY/TfKVR1
	gkrwIaK5zN1/+x1bGL4rSNkkRg5SdICNikww6geOCXS1L+ZRQHjqv9EweB12ChQb8MoA8PGhCyF
	RmLQyYEJwRfeaESH3XrfAw4YPyBZhGLB/yWHixI3YdhlFzoKPdnk97wHgtBgERUtJUC6bqAmAn6
	9Qu4ztKeYy0PwQAG1QQSp9UO2t1/lKe4TyhMR+Q3JJ5zzfEziPnpreJYM+ZNGx0KTPZ8tYPodSu
	2R8lHAL1CROOCiZ+88X8UcxO//yw/SzP+CbeKYvSR7LYK9eUdiZnF12rT3aVbBllYdJR4gmhg1n
	qxsf1vuKnD7lHC2+d7x/wrMc0nmX/QeaDMW7FlHnZfuteTOw9novKXkuCZIMD+sqs4hVcIWXoqj
	RB292xYTE8//MnkOHwakGCW7GSfz7zSI4S7IAM1DBlJR+a88x2riv+8krzE+rKiAFl6U6j4a8Kv
	AXFKGxovTwx0qPJ4i03X5yuVGotJqgGYTsCKkSEH+Lsgmg==
X-Received: by 2002:a05:6214:62b:b0:914:3120:b7c3 with SMTP id 6a1803df08f44-91e942fb275mr13978456d6.7.1793825278319;
        Wed, 04 Nov 2026 12:47:58 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:19 +0000
Subject: [PATCH net-next v4 07/15] net: skbuff: let skb_zerocopy() copy a
 short skb without head_frag
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-7-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=3270;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=313gSpe/OEgGmNrXVMk6Bxzm48vCKWeKxx/RzkLjq2I=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QHgvwpS66JnChP5h4nxV7iE4T6sQFYhC59dUOgap4jvS9EDZJ7F4fJ80RgGphM7ipwgq23QtCp8
 fwTiLMJkDtAI=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-c201ff/1793825279-24F1F2A1-ACB7C31F/0/0
X-purgate-type: clean
X-purgate-size: 3272

skb_zerocopy() refuses an skb with no head_frag when the caller passes
hlen == 0, because it can't reference such a head as a page.  That check
sits ahead of the small-payload path, which copies everything with
skb_copy_bits() and never references the head.

Open vSwitch gets there with an ordinary request.
OVS_PACKET_CMD_EXECUTE allocates the packet with a kmalloc'd head, a
POP_ETH action on a 14 byte frame leaves it empty, and a USERSPACE
action calls skb_zerocopy(user_skb, skb, 0, 0).  The upcall fails, with
a WARN on CONFIG_DEBUG_NET kernels.  Before
commit 433380f5ab8f ("net: skbuff: don't BUG() on a missing head_frag in
skb_zerocopy()") it hit a BUG().  The request only needs CAP_NET_ADMIN
in the user namespace that owns the network namespace.

Move the check below the small-payload path and document the -EFAULT
case.  A genetlink reproducer run as an unprivileged user in its own
namespaces warns before this patch and doesn't after it.

The small-payload path hands @len to skb_put(), which panics on a
negative value, and nothing runs ahead of it now.  Reject a negative
@len or @hlen on entry with -EINVAL.  Neither caller passes one.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 433380f5ab8f ("net: skbuff: don't BUG() on a missing head_frag in skb_zerocopy()")
Fixes: af2806f8f90a ("net: Export skb_zerocopy() to zerocopy from one skb to another")
Link: https://lore.kernel.org/all/179173804997.434549.4450793967361922984@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 96c8835a262b..fd4689cea94b 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4072,8 +4072,10 @@ EXPORT_SYMBOL_GPL(skb_zerocopy_headlen);
  *	Return value:
  *	0: everything is OK
  *	-ENOMEM: couldn't orphan frags of @from due to lack of memory
- *	-EFAULT: skb_copy_bits() found some problem with skb geometry, or readable head
- *      payload would be mixed with unreadable frags.
+ *	-EFAULT: skb_copy_bits() found some problem with skb geometry, @from has
+ *	no head_frag and @hlen is 0 while @len doesn't fit in @to's tailroom,
+ *	or readable head payload would be mixed with unreadable frags.
+ *	-EINVAL: @len or @hlen is negative
  */
 int
 skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
@@ -4084,15 +4086,23 @@ skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
 	struct page *page;
 	unsigned int offset;
 
-	if (unlikely(!from->head_frag && !hlen)) {
+	if (unlikely(len < 0 || hlen < 0)) {
 		DEBUG_NET_WARN_ON_ONCE(1);
-		return -EFAULT;
+		return -EINVAL;
 	}
 
 	/* dont bother with small payloads */
 	if (len <= skb_tailroom(to))
 		return skb_copy_bits(from, 0, skb_put(to, len), len);
 
+	/* Without a head_frag the head can't be referenced as a page, so the
+	 * caller has to ask for it to be copied.
+	 */
+	if (unlikely(!from->head_frag && !hlen)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EFAULT;
+	}
+
 	to->pp_recycle = from->pp_recycle;
 	if (hlen) {
 		ret = skb_copy_bits(from, 0, skb_put(to, hlen), hlen);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472763.1680647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtr-0004Sn-Ld; Wed, 04 Nov 2026 20:48:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472763.1680647; Wed, 04 Nov 2026 20:48:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtr-0004SC-E0; Wed, 04 Nov 2026 20:48:03 +0000
Received: by outflank-mailman (input) for mailman id 1472763;
 Wed, 04 Nov 2026 20:48:01 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtp-00043D-M4
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtp-00BcE3-2b
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:01 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99ea-e002-0a2a0a5209dd-0a2a4507c1e0-26
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:01 +0100
Received: from [209.85.219.43] (helo=mail-qv1-f43.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a00-b4ea-0a2a45070019-d155db2bb83b-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:00 +0100
Received: by mail-qv1-f43.google.com with SMTP id
 6a1803df08f44-91bb5795792so12669786d6.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:00 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e962b4403sm2743706d6.20.2026.11.04.12.47.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825279; x=1794430079; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=I0fgOhN7DOs5sphgS4nlyf+SCbWBYGAvkUGVDVkmjaU=;
        b=P8tOIqDwaUqwLbJ2UaNgF6Dcp9+03A/kyRo0thS6UWMn5A/cHsdYAkMlDtzo4C7E33
         DMJ8Bb0hOkz2fHBSy+xLVpMOMVnkL+IOCdAs3yg0c/J8OJuZ6CksHyCGtg+VRAKsWr23
         vVSwchGLyL14Cf/AkQO7LQVN1eo/XHYC6LWibUB47tssPKh/+Am22jj1fZ1zlLz8AtyS
         9r1QafQxPfB+4ih3zHScmmrjwsyC8X+J7bubyu/FSAGH3+UNnPrWktnvcB1+UENaG3hX
         6JEvgTs3dYsJ2uMFtNn3N9GnsitHyNvLyzSmzcUIs02arGMmjflQqIppNx2/XTqN6POD
         Oikw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825279; x=1794430079;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=I0fgOhN7DOs5sphgS4nlyf+SCbWBYGAvkUGVDVkmjaU=;
        b=IRqYaNztOkSmiS/qM0Qn27FOPTNVmmwHBKI1JSPXDLambcgsvQQ6l7JDu80ESY4rt6
         bJqk3pH0Xi1ioxv8eKy53b7sP8QwsYvd13iqQkrc0lqH9jL9EtrM5eK3E7VgtAmYxJ3Y
         Jj5cPsKtDtuR9EKciV+8SUcVm9COD8Z2xyQcqG/nVpuOdYQL1FbDHuZ6AWWDSKysKfN1
         7+FmtqcXzR5T9V+VW6/ozURUdsUUL4haFfRZHY1NQibJfLyNxegfsw6yOj7rZw4GAPdW
         8o6IBpUOZSETM5bb1scy12fymCv9BOtO32JNTjjiPSbERz7wxBjgPoTB0ewCisfr0/WP
         2SSQ==
X-Forwarded-Encrypted: i=1; AKwUvBy2QCcd7MR9a6OjpG9FjpSxtgvPoAPHACP3Ofg1g/E15jmVzZHTu9Uq66zw/hMt39LGNMXzxjN3GF4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z84J5KeW8nUtP07N2GSPcZ7YukiMX6z8ZnTVreCs6r5MIhVLh9w
	6b3zr9OIRuZq/C7FDUxXMki+tkHAP8CObib0/doKmjvbNRo6D09WIKiKIRYqu0zOdE4=
X-Gm-Gg: AYBFou1pvxi3Q5J+PDS4gwBghjs0x3g2bnTv5tI0/q8fwcbTiTaDiDwFGKmOdej9Kuf
	c30YGxf/dlC48HBOzHQDNoIeb0ntYEUouZQjf2HGejUhXEtksjt4tmP+4k6qJmlhrK7PlX+zzDU
	FDi+lUywjBbTAk1+7SO23GtJuCCddUpYZd3xOy0jS+xaU2sBU0mH+mwkeo8F6idqtE6FjeyWhmJ
	1dEAvAcQQTp5JATUmiW07DIRYd3P7hrTh7bM41rHWY1gjvdwoNy5vvxwc2FCvPH7kw/WJKXbGc3
	94kiSkgG22O/0YNqtLNKn4EJXUjY8n4R89dHewIFOgSAUO4x0iq3hF+yrUr2/+lYJa/aQq4wIqw
	hGl49enGKzkqSk2q45gswr3qN96hcSFm/urhPTFz2n6/RaXuGGZ8dfu25kJk1pzffzf0+IkdeWt
	AHzHp2BlOw6PneY1O+EZ7v3sIPKv2uGOEdxBG39/uaOfeUIoHcWWW1nu7kBrGcQ/hWZwkQ7wmN7
	inS9sGq2WD4YCrE9Rw0jiIimxaE0l/NdS+wHYiQhmcIgGbVCYrH5CBP/QHUVPs01fBxnCZctBZs
	IwV8xdo4P0qoWA2GnZNIp8MWdd9g9EnBgIp/A2M96E9Iwg==
X-Received: by 2002:a05:6214:3017:b0:914:1807:dc70 with SMTP id 6a1803df08f44-91ca4adcf1emr285668046d6.13.1793825279344;
        Wed, 04 Nov 2026 12:47:59 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:20 +0000
Subject: [PATCH net-next v4 08/15] net: skbuff: make skb_try_coalesce()'s
 len unsigned
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-8-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=3910;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=1Fxify4JpxLzLM1Ti2e+64TfuNshdGdOIM7pownAVrU=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QHxEsFLzJgR3nlUT1UdgoB00cssfz8v87Mti65uiGcMrjonP4uPcKrvqTbz8Wc8/j5y224vXNuI
 0BaUMX9dJ8Aw=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-ef75cf/1793825281-378D1AE4-4D669ED1/0/0
X-purgate-type: clean
X-purgate-size: 3912

skb_try_coalesce() keeps from->len, which is unsigned, in an int.  A
corrupt from->len above INT_MAX turns negative, gets past the
len <= skb_tailroom(to) check, and reaches skb_copy_bits() as a negative
length.  skb_copy_bits() returns -EFAULT for most such skbs.  If
skb_headlen(from) is still a small positive value, skb_copy_bits()
clamps the head copy to the negative length and memcpy() takes that as
2GB or more.

skb_put() used to run before the copy, and its overflow check caught
most of these lengths, but not the ones that wrap skb->tail back below
skb->end.  commit 279877d86c82 ("net: skbuff: don't BUG() when
skb_copy_bits() fails in copy helpers") moved the copy ahead of
skb_put(), which left only the tailroom check.

Make len unsigned, like from->len, so that such an skb doesn't take the
copy path.  It gets to the truesize sanity check instead, which sees
that from->len is more than from->truesize can hold.  That check only
warns, and only after the head of @from has been added to @to as a frag
of that size.  Make the check refuse the coalesce, and move it ahead of
the head steal so that @to isn't touched.  The check compares the int
delta against len, so it now tests delta < 0 explicitly.

An skb from a driver that under-reports truesize used to warn once and
get coalesced.  It isn't coalesced any more.

A test module that coalesces an skb with a page frag head and a len of
0x80000010 gets false and an untouched @to.

Found by the Sashiko AI review of the BUG_ON() series.

Fixes: 279877d86c82 ("net: skbuff: don't BUG() when skb_copy_bits() fails in copy helpers")
Fixes: bad43ca8325f ("net: introduce skb_try_coalesce()")
Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index fd4689cea94b..2c246f563555 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -6480,7 +6480,8 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		      bool *fragstolen, int *delta_truesize)
 {
 	struct skb_shared_info *to_shinfo, *from_shinfo;
-	int i, delta, len = from->len;
+	unsigned int len = from->len;
+	int i, delta;
 
 	*fragstolen = false;
 
@@ -6525,9 +6526,6 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		return false;
 
 	if (skb_headlen(from) != 0) {
-		struct page *page;
-		unsigned int offset;
-
 		if (to_shinfo->nr_frags +
 		    from_shinfo->nr_frags >= MAX_SKB_FRAGS)
 			return false;
@@ -6536,13 +6534,6 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 			return false;
 
 		delta = from->truesize - SKB_DATA_ALIGN(sizeof(struct sk_buff));
-
-		page = virt_to_head_page(from->head);
-		offset = from->data - (unsigned char *)page_address(page);
-
-		skb_fill_page_desc(to, to_shinfo->nr_frags,
-				   page, offset, skb_headlen(from));
-		*fragstolen = true;
 	} else {
 		if (to_shinfo->nr_frags +
 		    from_shinfo->nr_frags > MAX_SKB_FRAGS)
@@ -6551,7 +6542,19 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
 		delta = from->truesize - SKB_TRUESIZE(skb_end_offset(from));
 	}
 
-	WARN_ON_ONCE(delta < len);
+	/* @from claims more data than it has memory for.  Leave @to alone. */
+	if (WARN_ON_ONCE(delta < 0 || delta < len))
+		return false;
+
+	if (skb_headlen(from) != 0) {
+		struct page *page = virt_to_head_page(from->head);
+		unsigned int offset;
+
+		offset = from->data - (unsigned char *)page_address(page);
+		skb_fill_page_desc(to, to_shinfo->nr_frags,
+				   page, offset, skb_headlen(from));
+		*fragstolen = true;
+	}
 
 	memcpy(to_shinfo->frags + to_shinfo->nr_frags,
 	       from_shinfo->frags,

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472764.1680654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhts-0004WF-9Z; Wed, 04 Nov 2026 20:48:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472764.1680654; Wed, 04 Nov 2026 20:48:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtr-0004Ux-RM; Wed, 04 Nov 2026 20:48:03 +0000
Received: by outflank-mailman (input) for mailman id 1472764;
 Wed, 04 Nov 2026 20:48:02 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtq-0004Fh-JS
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtp-000QZ3-W3
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:02 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a01-8faa-0a2a0a5109dd-0a2a4501da4a-2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:01 +0100
Received: from [209.85.222.172] (helo=mail-qk1-f172.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a00-5984-0a2a45010019-d155deacb8de-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:01 +0100
Received: by mail-qk1-f172.google.com with SMTP id
 af79cd13be357-93f3c89594cso103162685a.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:01 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.244])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e896f09e3sm18368646d6.25.2026.11.04.12.47.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:47:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825280; x=1794430080; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=buSYjS3GdLDfaKyeptPicEQ91X+3t3GOSNONVwKle3Y=;
        b=eAh3+POKqMbgGG9K6tJUxKyNBKudRiMj2B6eaFazBfD/f1XRoqb03wlFd+ic2dmVfP
         FGgA/iKfGmClQ7haNQTpDQUWq7AwVcI92GJY2PZ3C4K3qxh0GScPf3J5Ey6psUqhfnju
         WgMk1ZUND/yHXn99gufQgMr4RL66fjs2fC2Si+7aVXiLzCX8bzzUkAo+Mx2R3bslUnjj
         TpGZm3xmPTCaVysTLTuRur5egmN1YQAk6tuakt9ZCwsBGB7rL7AHURJX/qix0tjCXd4D
         ASbFtOWMUG9GmIM+aocTdX3c32O/x4HmyYC3NylbAhbBdgKZJ5kG2T89SR0UOXbgrNyI
         n6mA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825280; x=1794430080;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=buSYjS3GdLDfaKyeptPicEQ91X+3t3GOSNONVwKle3Y=;
        b=L9Nm0+tNK2jvNGGR8oM8lXf1QIvPmPf6gscpk/z0e90AIo0JB6fNesw4mYRT5UvqwA
         slkOmS//jTfe5C1+M3p0gBOAYpOX6TZnxxsVSgAgfxtQxUUXMzaV5wCyz1cdOdnaU50T
         CCQW8+nn8MsJZOi9Hy4qIyexNNgZxDFvLe/qXC9Kq2TJqvpQ9F+gd587E3wiCPcopZc8
         vclj7Q+fh9sldMZW1CBcMBM5kDQ4s9YHeHF1k8KW/Se9qlEYYc3Z2WNLAVTu3Db6OEje
         s3r5rDePvvA1CBgLlnhUVxBF3gv81Jt9U66wbLF0+2OmC98MXX+fEm03y6ZwF5mGbaan
         RG2A==
X-Forwarded-Encrypted: i=1; AKwUvBwW9vEwQ5BFvcH2FXnwiJVurMBFe7sEJAt6L4GY4eLAsvQX6jRCaPhBgwH+Mu2FdwEh3C+F4JkwVVY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+Bh5u9CTwChiJxy/Celeo72XbVbhRsREfhpUEAVowd/GgOsSdp
	RZjZpbWSgMWNtGVkdHEpB8bXd5NY+RSkqmtsa+wAuAUn5KpIQbikLny4DnsP7wF2miQ=
X-Gm-Gg: AYBFou0uYqqjahFySZCdfF270ORTFWSgiLtQ7P9jIL2CvVPbb0EFLrRkINxDSpmoDfz
	ffygUxOtH8YwpIblwiKhaojvvxFn5w3aYg/lcunJnhsiulJm03DaqXVyKMJaQZivSYmSWhGa64q
	EUnc9h++eIvIccLs4Jpo20yOQj1haf+YzhdtEUKY76HTovvbfJYIPnyZbXyt+VOUYQFV+ChZDGf
	e4r6m+ViaNjqs5AdQijtyzEB8dzNGqQi7Iqr550mXZdHlNVfeXmRqhc24FBXLmp44WUf2hzaBZq
	PhFtCGG5qR+5z5qSUAa2+TDZHN3TRcegL0vhAHJ4mchPwMctv/HXdNnAgE9BsQtUpmNfpSorYRu
	ZkfQRlc7qrE1z2J40xki7EFgtnnarXzSGZ8QNnhOuO0zAjjT9q2c8qmp3emL3UEfN8pyW4TjpXA
	WLvIPohqzmKtm1MqLFv+ooJoIbkxchb/+GT48Ylpe5xQg+8kKx7Rcan81eMfEVXz6VR06hoWuLV
	E/sviC1Pr68/y4DoADjA5E30de67gMOQRPDMMjEaa+mC22h+qqDNuN1oIbZ1+xrZ2ua2Y2G8sQf
	JDbC+rngy4mcb0bVm/u11XipVSWljsiSzgNcNYU1A0NlNg==
X-Received: by 2002:a05:620a:3181:b0:944:907:8f64 with SMTP id af79cd13be357-9442174703bmr2898691085a.67.1793825280424;
        Wed, 04 Nov 2026 12:48:00 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:21 +0000
Subject: [PATCH net-next v4 09/15] net: skbuff: reject data_len > len in
 copy_and_csum_dev
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-9-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=1669;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=3g9gWyq3LNSnz8GQIQ6Nd2kWG1X8iSKYPw0MOlaABeg=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QKwOCX5WX+o2z0CP94Bi0sfWoF2Js1lcQMZ0CTKZpHu/4B9z0ISKOPPwpZOGdR/7NPil22GR5Na
 aLXWG/bs0rA4=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d62444/1793825281-BC75B757-09DC7915/0/0
X-purgate-type: clean
X-purgate-size: 1671

skb_headlen() is len - data_len in unsigned arithmetic, so it underflows
to about 4GB for an skb whose data_len is bigger than its len.
skb_copy_and_csum_dev() compares the checksum start against
skb_headlen(), so its checks don't catch such an skb:

 - Without CHECKSUM_PARTIAL the checksum start is skb_headlen() itself.
   On 64-bit the 4GB value becomes the length of the linear copy.
 - With CHECKSUM_PARTIAL any checksum start below len passes, whatever
   the linear area really holds.

The BUG_ON() that commit 56453199d28f ("net: skbuff: don't BUG() on a
bad csum_start in skb_copy_and_csum_dev()") replaced compared against
the same value, so this isn't new.  No path is known to build such an
skb.

Check for data_len > len before anything uses skb_headlen(), and zero
the frame.

Link: https://lore.kernel.org/all/179273112823.3134.12241973533522574538@kernel.org/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 2c246f563555..b017c9f861fe 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4165,6 +4165,15 @@ void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to)
 	__wsum csum;
 	long csstart;
 
+	/* skb_headlen() underflows if data_len is bigger than len, and then
+	 * the checks below don't bound the copy from the linear area.
+	 */
+	if (unlikely(skb->data_len > skb->len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		memset(to, 0, skb->len);
+		return;
+	}
+
 	if (skb->ip_summed == CHECKSUM_PARTIAL)
 		csstart = skb_checksum_start_offset(skb);
 	else

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472767.1680664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtt-0004tM-M8; Wed, 04 Nov 2026 20:48:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472767.1680664; Wed, 04 Nov 2026 20:48:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtt-0004rq-C2; Wed, 04 Nov 2026 20:48:05 +0000
Received: by outflank-mailman (input) for mailman id 1472767;
 Wed, 04 Nov 2026 20:48:03 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtr-0004SD-Ko
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtr-00BcE3-0l
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:03 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a01-e002-0a2a0a5209dd-0a2a45038e4e-4
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:03 +0100
Received: from [209.85.222.181] (helo=mail-qk1-f181.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a02-fae8-0a2a45030019-d155deb5c020-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:02 +0100
Received: by mail-qk1-f181.google.com with SMTP id
 af79cd13be357-93f22a8515eso113948285a.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:02 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d468f69asm294179385a.1.2026.11.04.12.48.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825281; x=1794430081; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=PP/fidHZYkfblatQP/IijP74GKPYKHpT3ch7DoXcS4E=;
        b=MgCtR2BWB5A5mxpH0Rac4lDPz0ake9pFy6Z12iO5Gn8VXDX3AkYKAjt0i9xsrMF63c
         WZL5FLk1YG0mQRpXoxHFbYwW7A7jAdgkqNtrgal0iDYeVuZqyGV2snJKcL1gY0w0dQNY
         PSvwvM8SUv2lrT0F03uq3HDi1ZVjUbyjdLtfQbEj4eQfFApnvYY/iFrEnOQehIyBbh2Z
         ETU6FNay+PCrYZSD1N3C3Xm2BjwP+apRRn5wJJF3OSOPQpyBH6uoMlnvfIpLdUI4N4hN
         MuUNJie+rnr8s1V76i8wA+2rOJVZTb9PihRL3Ql4DSb+gy3qWPP/k/jpgizMzGplJbI5
         2x8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825281; x=1794430081;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=PP/fidHZYkfblatQP/IijP74GKPYKHpT3ch7DoXcS4E=;
        b=18GrjvBDfUTfcl07XkrXIlffSwQra3GO9NQX3D5tC7JIPq+6AVJmHWNUa4sH8/jYQo
         uAimljbEPXzw+GVRz2JO3eQHh+B/m/jcZQMS/NeAoI5EhuCpJATGtpxixLzgPK2pLzot
         PhqGXxo1iuJ1q/Hj17Ntc7F/5zihPufaQsvnoJVk8hz4GAPRFGHbjt976JPTFLgAd3Gs
         eSN3MC+osy/fmHNwlIuXIrALj78aTj+AxiirEbZYP7/e60XBOFfP+Owbgkcc+9mzhvMe
         YzIWi3KK4XjbpWZqk0sbpMsD1rgs4TMdeDc13uW6bPjX92B2/W1vR4byYCZNS6KVaDHi
         nofg==
X-Forwarded-Encrypted: i=1; AKwUvBxTsFH3SJoA3A00st0R1fOfsb0ng/ji3mPS74JVOX7vF6hmL74xIKmGKw2z8h7en44ggLKWopfq9Zc=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9djqmlQyqgS9uj5WvovG0TorO48618VrnCKfxqyKFCvU48T9S9
	IykcD8JG2fA6qkMgP6SOchk6cqab7RsV8C7W3G2gdgNktHMzWzj81P4F98IAbPSkH2Y=
X-Gm-Gg: AYBFou3zTOlj/fc6LJR959ij08vpye697VnRfx1Ql5LucPFM9A8EiLQXRsXvhn626ad
	dtxWuzfAn7B6YgzJcLlRgoRLv+Ta5iyZ1EUf6eKhlZzeOhv6vtlV0/Yz8aB6EPydN9Dk72uGGlZ
	KlWt8fov7wH1ZDDj21sJ0azQODj5KlA8GIBG1JkNergeUKPVRiUNITN1Pv9DCS80Q54AKhu8nuz
	SRIttgLYiQ2JQV+N03e9U6SXsyMB2xTE26V4mn6DmJZJLiLgOKHbM0jYUVDIl5GICjcyXdJD/t1
	kvVrs8jAOt9KCVdEcLcHwJOQBX0bWg0Q+hi01GfeQyZaDybHFStjlZaMlUwccyu5fJqX8BC5oRP
	+f09SUxzFKXKkSZt6l8Yrc8Qi1yao2WsXlz4r+pvV6Ou2tyJo4eoLoA5LWzGoVTwf+J7MXKKylk
	ZMA+W7BZS9M31RTkQmO48JSkYNzydRIfiJMltNk8jIARBzsakWxG4eNOx3HtIBVrbB62FhdFFCr
	j1bS62IpJKuTpR72RbembtsfTuT/q0G2bceONAePM5baS2yrM/xag+jnSe6BbyEiuqXyFDoNCYZ
	CXBBpL0Wt490VdUCClsWgwrxJnhtjDkjEgY1f/5fBs2ukg==
X-Received: by 2002:a05:620a:2b8b:b0:93f:2941:6b8d with SMTP id af79cd13be357-94421581808mr2833471185a.6.1793825281522;
        Wed, 04 Nov 2026 12:48:01 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:22 +0000
Subject: [PATCH net-next v4 10/15] net: skbuff: reject a negative length in
 skb_copy_and_csum_bits()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-10-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=2784;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=wThWIHnCxUs0o2n1wKVOZp8MJH+DkfwjLDuEZ2TxA3k=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QFsB+WUd2uViaXOb0v3E8Fyx/YypTY3hkcuEnhwIIaLSj1kGnyibicHErE4iRl1Wqf0Tvo/bwuX
 fykUuqyoPQgk=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-33051d/1793825282-6F8C54E9-A1D9DCAF/0/0
X-purgate-type: clean
X-purgate-size: 2786

The head, frag and frag_list copies in skb_copy_and_csum_bits() each
clamp their length to @len.  A negative @len from a broken caller
therefore becomes the copy length, and the copy takes it as a huge
unsigned value.  The two len > 0 tests around the zero-fills only
protect the zero-fills.

Reject a negative @len on entry with -EINVAL and drop the two tests.
@to isn't touched in that case.  Every caller already handles an error,
and skb_copy_and_csum_dev() zeroes its whole frame on one.  No caller is
known to pass a negative length.

Found by the Sashiko AI review of the BUG_ON() series.

Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index b017c9f861fe..7ecf6701f68c 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3731,8 +3731,7 @@ static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
 	if (unlikely(len)) {
 		DEBUG_NET_WARN_ON_ONCE(1);
 		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
+		memset(to, 0, len);
 		return -EFAULT;
 	}
 out:
@@ -3748,9 +3747,10 @@ static noinline int skb_copy_and_csum_frag_list(const struct sk_buff *skb,
  *	@len: number of bytes to copy
  *	@csump: where to store the checksum of the copied bytes
  *
- *	Return: 0 on success, or -EFAULT if @skb has unreadable frags or runs
- *	out before @len does.  On failure *@csump is not set and the part of
- *	@to that couldn't be filled is zeroed.
+ *	Return: 0 on success, -EINVAL if @len is negative, or -EFAULT if @skb
+ *	has unreadable frags or runs out before @len does.  On failure *@csump
+ *	is not set.  On -EFAULT the part of @to that couldn't be filled is
+ *	zeroed, and on -EINVAL @to is not touched.
  */
 int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 			   u8 *to, int len, __wsum *csump)
@@ -3760,6 +3760,14 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 	int pos = 0;
 	__wsum csum = 0;
 
+	/* Everything below clamps its copy to @len, so a negative one would
+	 * turn into a huge copy.
+	 */
+	if (unlikely(len < 0)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
+
 	/* Copy header. */
 	if (copy > 0) {
 		if (copy > len)
@@ -3775,8 +3783,7 @@ int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset,
 
 	if (!skb_frags_readable(skb)) {
 		/* Don't hand the caller a buffer with stale bytes in it. */
-		if (len > 0)
-			memset(to, 0, len);
+		memset(to, 0, len);
 		return -EFAULT;
 	}
 

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472768.1680669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtu-00055O-SE; Wed, 04 Nov 2026 20:48:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472768.1680669; Wed, 04 Nov 2026 20:48:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtu-00053l-DU; Wed, 04 Nov 2026 20:48:06 +0000
Received: by outflank-mailman (input) for mailman id 1472768;
 Wed, 04 Nov 2026 20:48:04 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhts-0004fo-OM
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhts-00BcE3-57
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:04 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a01-e002-0a2a0a5209dd-0a2a45038e4e-6
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:04 +0100
Received: from [209.85.222.173] (helo=mail-qk1-f173.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a03-fae8-0a2a45030019-d155deadf066-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:03 +0100
Received: by mail-qk1-f173.google.com with SMTP id
 af79cd13be357-93f1e5d7450so114462485a.2
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:03 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.255])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d4813a6fsm293565585a.21.2026.11.04.12.48.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825283; x=1794430083; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=21AXhK/7pbqORDSG4HxUO46u8d65H6wDFEiP5u1gVuA=;
        b=cwTvmlVeJo7m10G+m/hC028Nv+UHHlAwFIcnzpGu7Ocgxd58Q+XEMncQEi/hP41gIe
         EVst13OdDfzMyft9iU88+Wc1999LTzUj64gWNjt4jZXHO3ITGNrVn2Y0Ubx8gdxMNm8B
         2+59dmoq2+ycltNdM5v7kyZjXBu08jkNHFyHby8Jh9LGX9imsh2irBfJeNYjv2hPd4tZ
         RkJH7tdSmfVmmz91kjxjKUQeCij+dG+7Lp4GhKq9hcguvNLx2i74sqWyPfD3QyF6Jwik
         V8l+6NgEYA5fckRGLeGNlpkydyoTm2hv2bu2qsdAlZ1iWmW9lYte2kXpbeicuhgKCXk6
         NSkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825283; x=1794430083;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=21AXhK/7pbqORDSG4HxUO46u8d65H6wDFEiP5u1gVuA=;
        b=0vTs+UTcoG1IJ4+nPrUAf7qc37M5VKWjLLTLMCQ+gKCfkeSnXyPhIITnexnsTCdrHC
         aCxkFx4pf7nueLlOaKUK3WfW4+49eTURjc0aFDfZOARZnH9gxu7zodHsYl4MuYv4AglM
         m6u5NQ/h4gsESobMZlGKrADOXaekhS0Ic0wKrOXQxqD1yH1i2vIfDu6+tNJT4UWgCbSz
         iIxMJf0x5FEQM3X04qFMYmjqxENEGaP/ybRJbf8hi0wfAh39RMeB3NAxl+sE+l7Z7xu4
         7kcnc/5MYWO7JyubrDatAoem03LOFy8RHCXRMhG26DUAnje9QCXQK9flF8bNPn6ot/WD
         IsnQ==
X-Forwarded-Encrypted: i=1; AKwUvBwLlAHd2+kQQOpSG5dF1uk3P8SO9JFx5NVat7AqllN+B+Q7Mp8hdiRz/LRunUUhUextWaWdR+aqaw4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+jlR23cH1OPKgqdU56NoCkrEQ4i/2JOEEvOKwxxv0ly7idruHu
	KOz9QOcNHgFsoen/xvmy5bC6r2uUm1Xcfe/SFxyeTj+BBSTnvZWOWU9gF73D6CCIfpM=
X-Gm-Gg: AYBFou0gPlBgvk8b/30N3KDphVlRDgn6u7A1ycis6GOMFCydCI9yJT4IwFxpuDq5WSP
	4dWhV5A+sKNvozWUgeyaO1bQR1oah3F+tBBDuN4LiMk/nxXmEb8NNYr70DoVzlU3Df97mLzd0L6
	ZpTMUc/tlhv5DSrUQHdLyYoX4j6Pm3bpGUY04Q6jMYhCxmVAiTHJ1VioCUS9DP/5iUr9FAZqho/
	tjaOk0F3MqOC0/Zv74ux7gAg5M45ut26g88ADDL3Y4Qs74JlwLpwzSy/8wuHo8YussCV8OBCSlw
	7Ru3HcATN0JDKDbBtzKsL2dcs+GWdi4kspAziWHfP8M08Ni6TUs21LjDZHsxc0jBOfTqczf7J08
	kfUsGCw8QiQITCxho2pZy95Z0ddVgn+k9PHDcJS3gxwUFRBTec+4SteMEChD8HBi4d0dU1y/xeS
	4aFfH1fbqxh9y1uKT20EnnoBIC17PCMkcAS1kOXiBXR1zBW/4vNw1Bm9c/qtgVgI1NZ37joWQOv
	+7rQY14ulkJMjRz+DaT3G7OuqNVp65Nx7jbWr7AUKVKVlLdthUjrA3egDigtIKAjuuq/l6w0U40
	NMkzmXscZp9QmKEY3RaFYqLaLiwqKFCPlr3xSAJSmZYOFQ==
X-Received: by 2002:a05:620a:2984:b0:93f:2e7e:c818 with SMTP id af79cd13be357-94421799c57mr3047302585a.59.1793825282649;
        Wed, 04 Nov 2026 12:48:02 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:23 +0000
Subject: [PATCH net-next v4 11/15] net: skbuff: don't run off frag_list in
 skb_segment()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-11-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Willem de Bruijn <willemb@google.com>, 
 Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=3248;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=6s0PzVt82/I3gWDSKQnU5ZDEZJBYWsfTYigRyKi8yTo=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QBVz2JFcgnUXu6h2/lcBh0xilKeArmwQIEfFWo4537wo7SLcPc1F7X+FqiGAn38PBEs5QZhYRtT
 GHOVrXmke0Qc=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-33051d/1793825284-6D8D54E9-96F4567D/0/0
X-purgate-type: clean
X-purgate-size: 3250

skb_segment() keeps going until it has segmented head_skb->len bytes.
It takes the data from head_skb and then from each member of the
frag_list.  If head_skb->len counts data that this walk can't find, the
walk runs out of members while it still owes data and dereferences a
NULL list_skb.  There are two ways to get there:

 - head_skb->len is bigger than what head_skb and its frag_list hold.
 - A member has a frag_list of its own.  head_skb->len counts those
   bytes, but for each member the walk only looks at the linear part and
   frags[].

No path in the tree is known to build a GSO skb like either.  GRO
flushes instead of chaining an skb that already has a frag_list.  IP
reassembly does nest frag_lists, but a reassembled skb isn't GSO.

Check list_skb in the three places where the walk moves on to it, and
fail the segmentation with -EINVAL.  The KUnit cases in the next patch
hit the NULL pointer dereference without this patch, and at least one of
them hits it again with any one of the three checks taken out.

Turning SG off doesn't avoid it.  The walk reads list_skb to decide
whether to clone the next member before it looks at SG.  With the checks
in place the payload is copied by skb_copy_bits(), which checks the
length itself and recurses into a nested frag_list.  So without SG a len
that is too big fails in the copy, and a nested frag_list is segmented.

Found by the Sashiko AI review of the BUG_ON() series.

Link: https://lore.kernel.org/all/20261007-b4-skbuff-bug-on-v2-0-b9a5f732895b@toxicpanda.com/
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/skbuff.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 7ecf6701f68c..45cd77e153f1 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5164,7 +5164,16 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 		int hsize;
 		int size;
 
+		/* list_skb runs out early if head_skb->len counts data that
+		 * this walk can't find: bytes that aren't there, or a member's
+		 * own frag_list, which the walk never looks inside.
+		 */
 		if (unlikely(gso_by_frags)) {
+			if (unlikely(!list_skb)) {
+				DEBUG_NET_WARN_ON_ONCE(1);
+				err = -EINVAL;
+				goto err;
+			}
 			len = list_skb->len;
 		} else {
 			len = head_skb->len - offset;
@@ -5174,7 +5183,8 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 		hsize = skb_headlen(head_skb) - offset;
 
-		if (hsize <= 0 && i >= nfrags && skb_headlen(list_skb) &&
+		if (hsize <= 0 && i >= nfrags && list_skb &&
+		    skb_headlen(list_skb) &&
 		    (skb_headlen(list_skb) == len || sg)) {
 			if (unlikely(skb_headlen(list_skb) > len)) {
 				DEBUG_NET_WARN_ON_ONCE(1);
@@ -5296,6 +5306,12 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
 
 		while (pos < offset + len) {
 			if (i >= nfrags) {
+				if (unlikely(!list_skb)) {
+					DEBUG_NET_WARN_ON_ONCE(1);
+					err = -EINVAL;
+					goto err;
+				}
+
 				if (skb_shinfo(nskb)->nr_frags &&
 				    nskb->pp_recycle != list_skb->pp_recycle) {
 					nskb->data_len = pos - offset - hsize;

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472773.1680680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtw-0005UR-JU; Wed, 04 Nov 2026 20:48:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472773.1680680; Wed, 04 Nov 2026 20:48:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtw-0005Se-8b; Wed, 04 Nov 2026 20:48:08 +0000
Received: by outflank-mailman (input) for mailman id 1472773;
 Wed, 04 Nov 2026 20:48:06 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtu-0004yP-4k
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtt-000QZ3-Hi
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:05 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99bc-8faa-0a2a0a5109dd-0a2a4509d8b0-24
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:05 +0100
Received: from [209.85.219.52] (helo=mail-qv1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a04-be1a-0a2a45090019-d155db34bd32-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:05 +0100
Received: by mail-qv1-f52.google.com with SMTP id
 6a1803df08f44-91c63449320so12032306d6.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:05 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.244])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e962b4403sm2745066d6.20.2026.11.04.12.48.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825284; x=1794430084; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=p0RXmawfasrTX5jMs9+VRHea8GI7D/GAkKgJQ1fq4BU=;
        b=ppjf1vB1A1Rbr+usYZ23bnfAuHlp50cZb8tDDi6Juuvqp5WunItAP9Uskpj0fQ4Yo9
         me+5+Fglu7FvBtmZPRP1kRvGcbUq7mR6csA053v1NAsZ2hyzdRzBgkJOn4jYlsqEBfiS
         pJmJl1PL8N+6QdRAA14cEVKXz1I7theCqtA09sbHlcgDAXugcHe4fQ4vT5rWKLtCtNHa
         HgVY3WRHy8rveAytG6uIhBAU2znn/KNMvyhIYC+XYjl41B1iEFpQG3AXcSNyxPjkB70p
         BJb+JdEPo7FM2w/i0bhx3WwUBrfT/v3+8aJAF8Cs6UP+9ISnkuGSb4Sw34PCyFTAdA7J
         QC8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825284; x=1794430084;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=p0RXmawfasrTX5jMs9+VRHea8GI7D/GAkKgJQ1fq4BU=;
        b=huPtoLPM4EkChk+nlHTQCFpcyl7Qj/zLVuGlh59hmQKQWSt5QCqwyaNY+ZBvd6IOzx
         Uz3YJfdrgy1WQwnI/7LqT7D3uhFYFAQME20uqwNjcBR80HLc6bJJTEw42REZ8TJMen7D
         ge0H95FXNWEW7lF/fX2TrySC/q9vWJiwL14gFGLLfGAdC+HwYlPsSKENCnpSa+VDXpBH
         Z9AKUf0dBbDWGQvRa+49bbB3weClLQJzrDcPTaMpF0CX5kMNHq7Qom7aT4Eh38QauOjF
         opm9/nZK1NiDnM04hHFi9m+UiSz5WmfIvpCKWt7BGuUttagS4LiYnYgMrSAEFnBurJQm
         frqA==
X-Forwarded-Encrypted: i=1; AKwUvBzQPAGaA8ipWphUfB9+uvvuVbSkujAjW9/T6WCTBuj/Wu48wtGLwnJkN8tCUzuZHjqAaAOafou8MQs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/GfD5tiec790ui+JaeOIGe3wv4QUrOJ2ZcV6x7Iqqk6tcMVSwa
	uO2Xr8ASs0Z/yxJfj7WG6wewi2N1syEQV9JxkUsiMU74MUwm4a5RV5By4e0wkIzQcfk=
X-Gm-Gg: AYBFou3J9weMItWIfcqh6kyzXyBMHP2+fmfj++exWLVMsMb8kgZfQJtK+XzESRjQM8d
	FsvZnNiq1WEAXvXHYDpQ5t5A/AhTeVFN/slqfoVQslQNAzOoIc4Lmm2AlaWj6sX7mYrygzszlqC
	FgDAFLZhV9OQg/cmwWZ7QXgTb4oL6AUdgcb/aVMsy2B4vWaDAJhudjlDCnjr7iB+SD0PgMiCNkW
	w5Iz9iRdtWhIOBW/Trb5HtEbnSf54dTVSQCW4Zo5Hivi0r395zHcLQ9gB/2GQ146zFBDRqb6t71
	reBpGnLqWWkBc+X6PFvNp/PTBZDxpZTYu4WDfEtqv3h08f7/ZiQ7/FKHX9WTGf5F6CyDn/6/xCR
	6jss5gaLIKSI0eNwkZj9v7bkOnpcAGlGrw7pff2W97fvC7i9mB22kWBk0kszWhKJzcV+jeGJgTq
	VezLFrIPOe5NXGUjmjoV7HS/kStap1IJhh8mgj/ZwvUfkw5NCkWjacq0vkbfF80MxnnYBL0SIPT
	j76GcslGc1Q4ZRkcHqTlmKVPBH4GuevjTakyDFnaj2K5VuauZIRfj0Ve+o8yf5zwwgEbTctcER6
	5CtyRYjtKaN2bVF9KnfYEUFGct99J23P+ldQT3hW4s2rIA==
X-Received: by 2002:ad4:5ae6:0:b0:91e:93df:7968 with SMTP id 6a1803df08f44-91e93df8690mr14233906d6.58.1793825283878;
        Wed, 04 Nov 2026 12:48:03 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:24 +0000
Subject: [PATCH net-next v4 12/15] net: test the skb layouts skb_segment()
 refuses
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-12-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Willem de Bruijn <willemb@google.com>, 
 Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=7318;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=7eIKfmXdYFyO4gt39hdEL3I6I1+zpcaXVGaqmsE4mDU=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QER7Iemt/O5h6axALU8K/KXqZQqDuQVWaPwTSf9id6brnuO7euiqtgPfKirDjVhsD76QG+PWs0G
 ladydqEnuSgU=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-bad1c0/1793825285-BCCCF034-E3F1425D/0/0
X-purgate-type: clean
X-purgate-size: 7320

The GSO KUnit test only checks layouts skb_segment() can segment.  Add
the ones it has to refuse:

 - The non-uniform frag_list with SG on, which used to hit the
   BUG_ON(i >= nfrags) the existing test steps around.
 - A frag_list member that has its own frag_list.
 - An skb whose len counts bytes it doesn't hold.  The data runs out on
   a segment boundary, in the middle of a segment, after the last
   frag_list member, and with GSO_BY_FRAGS.

Run the last two groups without SG as well.  There the nested frag_list
is segmented.  A len that is too big fails with -EFAULT from
skb_copy_bits(), except with GSO_BY_FRAGS, which still gets -EINVAL.

They warn on CONFIG_DEBUG_NET kernels, so run them with the warning
backtrace suppressed.  Also update the comment on the non-uniform case,
which still says SG would hit that BUG_ON().

Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/net_test.c | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 154 insertions(+), 4 deletions(-)

diff --git a/net/core/net_test.c b/net/core/net_test.c
index 2b5080c22663..03203454cd19 100644
--- a/net/core/net_test.c
+++ b/net/core/net_test.c
@@ -41,6 +41,17 @@ enum gso_test_nr {
 	GSO_TEST_RESEGMENT_MULTI,
 	GSO_TEST_RESEGMENT_TAIL,
 	GSO_TEST_RESEGMENT_ONE_MSS,
+	GSO_TEST_FRAG_LIST_NON_UNIFORM_SG,
+	GSO_TEST_FRAG_LIST_NESTED,
+	GSO_TEST_SHORT_LINEAR,
+	GSO_TEST_SHORT_LINEAR_STRADDLE,
+	GSO_TEST_SHORT_FRAG_LIST,
+	GSO_TEST_SHORT_GSO_BY_FRAGS,
+	GSO_TEST_FRAG_LIST_NESTED_NO_SG,
+	GSO_TEST_SHORT_LINEAR_NO_SG,
+	GSO_TEST_SHORT_LINEAR_STRADDLE_NO_SG,
+	GSO_TEST_SHORT_FRAG_LIST_NO_SG,
+	GSO_TEST_SHORT_GSO_BY_FRAGS_NO_SG,
 };
 
 struct gso_test_case {
@@ -58,11 +69,18 @@ struct gso_test_case {
 	unsigned int gso_type;
 	/* skbs from alloc_skb() instead of build_skb(), head_frag clear */
 	bool no_head_frag;
+	/* bytes that skb->len counts but the skb doesn't hold */
+	unsigned int missing_len;
+	/* segment without NETIF_F_SG */
+	bool no_sg;
 
 	/* output as expected */
 	unsigned int nr_segs;
 	const unsigned int *segs;
 	const unsigned int *gso_segs;
+
+	/* skb_segment() is expected to fail with this error */
+	int err;
 };
 
 static struct gso_test_case cases[] = {
@@ -241,6 +259,110 @@ static struct gso_test_case cases[] = {
 		},
 		.gso_segs = (const unsigned int[]) { 0, 0, 0, 0 },
 	},
+	{
+		/* frag_list members that don't end on gso_size boundaries
+		 * can't be segmented with SG
+		 */
+		.id = GSO_TEST_FRAG_LIST_NON_UNIFORM_SG,
+		.name = "frag_list_non_uniform_sg",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 4,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE, 1, GSO_TEST_SIZE, 2 },
+		.err = -EINVAL,
+	},
+	{
+		/* the second frag_list member hangs off the first one's
+		 * frag_list instead of off the head's
+		 */
+		.id = GSO_TEST_FRAG_LIST_NESTED,
+		.name = "frag_list_nested",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE, GSO_TEST_SIZE },
+		.err = -EINVAL,
+	},
+	{
+		/* the data runs out on a segment boundary */
+		.id = GSO_TEST_SHORT_LINEAR,
+		.name = "short_linear",
+		.linear_len = GSO_TEST_SIZE,
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
+	{
+		/* the data runs out in the middle of a segment */
+		.id = GSO_TEST_SHORT_LINEAR_STRADDLE,
+		.name = "short_linear_straddle",
+		.linear_len = GSO_TEST_SIZE + 500,
+		.missing_len = 700,
+		.err = -EINVAL,
+	},
+	{
+		.id = GSO_TEST_SHORT_FRAG_LIST,
+		.name = "short_frag_list",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 1,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE },
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
+	{
+		.id = GSO_TEST_SHORT_GSO_BY_FRAGS,
+		.name = "short_gso_by_frags",
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { 100, 200 },
+		.missing_len = 50,
+		.err = -EINVAL,
+	},
+	{
+		/* without SG the nested data is copied by skb_copy_bits(),
+		 * which does look inside a member's own frag_list
+		 */
+		.id = GSO_TEST_FRAG_LIST_NESTED_NO_SG,
+		.name = "frag_list_nested_no_sg",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE, GSO_TEST_SIZE },
+		.no_sg = true,
+		.nr_segs = 3,
+		.segs = (const unsigned int[]) { GSO_TEST_SIZE, GSO_TEST_SIZE, GSO_TEST_SIZE },
+	},
+	{
+		/* without SG it is skb_copy_bits() that runs out of data */
+		.id = GSO_TEST_SHORT_LINEAR_NO_SG,
+		.name = "short_linear_no_sg",
+		.linear_len = GSO_TEST_SIZE,
+		.missing_len = 50,
+		.no_sg = true,
+		.err = -EFAULT,
+	},
+	{
+		.id = GSO_TEST_SHORT_LINEAR_STRADDLE_NO_SG,
+		.name = "short_linear_straddle_no_sg",
+		.linear_len = GSO_TEST_SIZE + 500,
+		.missing_len = 700,
+		.no_sg = true,
+		.err = -EFAULT,
+	},
+	{
+		.id = GSO_TEST_SHORT_FRAG_LIST_NO_SG,
+		.name = "short_frag_list_no_sg",
+		.linear_len = GSO_TEST_SIZE,
+		.nr_frag_skbs = 1,
+		.frag_skbs = (const unsigned int[]) { GSO_TEST_SIZE },
+		.missing_len = 50,
+		.no_sg = true,
+		.err = -EFAULT,
+	},
+	{
+		.id = GSO_TEST_SHORT_GSO_BY_FRAGS_NO_SG,
+		.name = "short_gso_by_frags_no_sg",
+		.nr_frag_skbs = 2,
+		.frag_skbs = (const unsigned int[]) { 100, 200 },
+		.missing_len = 50,
+		.no_sg = true,
+		.err = -EINVAL,
+	},
 };
 
 static void gso_test_case_to_desc(struct gso_test_case *t, char *desc)
@@ -337,21 +459,49 @@ static void gso_test_func(struct kunit *test)
 		skb->data_len += total_size;
 		skb->truesize += total_true_size;
 
-		if (tcase->id == GSO_TEST_GSO_BY_FRAGS)
+		if (tcase->id == GSO_TEST_GSO_BY_FRAGS ||
+		    tcase->id == GSO_TEST_SHORT_GSO_BY_FRAGS ||
+		    tcase->id == GSO_TEST_SHORT_GSO_BY_FRAGS_NO_SG)
 			skb_shinfo(skb)->gso_size = GSO_BY_FRAGS;
+
+		if (tcase->id == GSO_TEST_FRAG_LIST_NESTED ||
+		    tcase->id == GSO_TEST_FRAG_LIST_NESTED_NO_SG) {
+			struct sk_buff *first = skb_shinfo(skb)->frag_list;
+
+			skb_shinfo(first)->frag_list = first->next;
+			first->next = NULL;
+			first->len += tcase->frag_skbs[1];
+			first->data_len += tcase->frag_skbs[1];
+		}
 	}
 
+	skb->len += tcase->missing_len;
+	skb->data_len += tcase->missing_len;
+
 	features = NETIF_F_SG | NETIF_F_HW_CSUM;
 	if (tcase->id == GSO_TEST_GSO_PARTIAL)
 		features |= NETIF_F_GSO_PARTIAL;
 
-	/* TODO: this should also work with SG,
-	 * rather than hit BUG_ON(i >= nfrags)
+	/* TODO: this should also work with SG, rather than fail the
+	 * i >= nfrags check in skb_segment()
 	 */
-	if (tcase->id == GSO_TEST_FRAG_LIST_NON_UNIFORM)
+	if (tcase->id == GSO_TEST_FRAG_LIST_NON_UNIFORM || tcase->no_sg)
 		features &= ~NETIF_F_SG;
 
 	SKB_GSO_CB(skb)->max_segs = tcase->max_segs;
+
+	if (tcase->err) {
+		/* the suppression block doesn't run if it can't be set up */
+		segs = NULL;
+		kunit_warning_suppress(test) {
+			segs = skb_segment(skb, features);
+		}
+		KUNIT_EXPECT_EQ(test, PTR_ERR_OR_ZERO(segs), tcase->err);
+		if (!IS_ERR_OR_NULL(segs))
+			kfree_skb_list(segs);
+		goto free_gso_skb;
+	}
+
 	segs = skb_segment(skb, features);
 	if (IS_ERR(segs)) {
 		KUNIT_FAIL(test, "segs error %pe", segs);

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472775.1680686 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtx-0005br-La; Wed, 04 Nov 2026 20:48:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472775.1680686; Wed, 04 Nov 2026 20:48:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtx-0005a9-21; Wed, 04 Nov 2026 20:48:09 +0000
Received: by outflank-mailman (input) for mailman id 1472775;
 Wed, 04 Nov 2026 20:48:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtv-0005FE-Jk
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtv-00FYc5-0I
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:07 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb99e8-bab6-0a2a0a5309dd-0a2a450c9a30-38
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:06 +0100
Received: from [209.85.160.169] (helo=mail-qt1-f169.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a06-f479-0a2a450c0019-d155a0a9d174-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:06 +0100
Received: by mail-qt1-f169.google.com with SMTP id
 d75a77b69052e-5363316fa0cso12558791cf.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:06 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 d75a77b69052e-54b10c4dcddsm33675341cf.20.2026.11.04.12.48.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825285; x=1794430085; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=NVn21fMcy6xP3x95gJReWbvgO5dQmcWPIIyj1sSFlXQ=;
        b=qkbNCB/VjwjgzW2BZrXb7Ljh6ZRisp9nLEmgAHchvKVC53C/TdHcvKF80Cx8dgUBk9
         Bkw1pimbXpQvo+E8f5YrOJMHhQtED4b8BtjaTGg6TwudfZue/FRANTQoIhUXGQi0ta/x
         FzoGAjRIX6rLXtdMJSMd9wZBHEZ14kJjGijeuOqZ1KQVG9I8bYAyXJvU7eoTP8dOKYM8
         t2jYfBm1QVFu8qmQ5qVYErtjWzGCSobzM7zwn4Qo8j9KUlFm+5rP1DpynlMYNgA7e3OG
         1hG3kjKYpJI8u6jQ4uLf4pMP9bDDWiYwoI7yUSb4mJJXH25EwKAelj5qHMxNr0vR7Kjf
         4N6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825285; x=1794430085;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NVn21fMcy6xP3x95gJReWbvgO5dQmcWPIIyj1sSFlXQ=;
        b=I4p6lLGKAne+4PYgqWiGAV4LN7C9YimOT1mI49THpX8jP6nvryKhs2/SZLiPqIy917
         hv4hY0Q0xIAeEu1d03XfFYdwQpJExFKGvNzbxqGlZt/QitWrKFGdN+ATM5QR+r4brDcX
         r3t3J9v5pMUeFD6K1Dx9hwRylP7xnGYAHdpDpeh2/1Pxlu3lIonG1pa/KDlOGR5ed0Jc
         61Dksk+dMlL5EpdCMG6bog9YDd4Nbo7CYpnorMRpbRJw6OJwH8xyS3x8IqRTbx0DK8ny
         PeeFSHyoiNsozlhme0RxYhMk2MHJTA/Ob41DfioW6JH9buajKuJrWKbygMaj44M/b4/P
         2OXg==
X-Forwarded-Encrypted: i=1; AKwUvBxuR5PgjXLbjaYbIsOjLh4knnaTSurjBmkSsrOx+V8Ic8UfwFLCPAN1uM8aWyPo2q9lRK4VQN4OCNk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8niGa86vJAzZTHm0D6BrYr4ZIWRrK3c7jTYu0Sc4vhOPsznTsZ
	zQL6fF0xO4J/67MTgHkvlw6gcOqySKq7QW3t2eA8QCeEL+TXbQWtm8/0p4xizDTCvlo=
X-Gm-Gg: AYBFou0yjXXAl65rmKUAmkmUnRnnVvUWwpypqbUr9fYSIlIEKfd0mcmC9auqSvHSY+b
	/X1Ny7IhFI1zJ4/lJmxJURN4tshnSAAolYahAJ2P0+ATQfV4RyG7paSnK4fRNyRn/qR5vSgtkyM
	3m+VsSs2k70YrJuGj6o6DtrZVfLaO8cYjGgtkeAvAcf4warbQuNkI4nQ9csNxaF0v9oKgfX4vKd
	3KVQEFxLuE4e3zMXs9ILsGaMwIO69wm7w5SmK8Yb/K08dS5kXBAsExOETjLTDb+N/ziuCXb1ZI8
	Tnj7cGx8SxYP8kRmImeu3zqAWG3Oyu5gi6T5f5jX3HCvLRX/uT3LJ9xpLXtoO3goMQciZwD3iM1
	luV4IyJwpV8m7vyikWzDGgTh0dYqptXMkmpHExonn2GRJ4buICJG/zVxSxWOEpLn9utyqQ7Y/VV
	Ci/oRdVW4fCUO1ac0/0i/ofJDOkLWnAqMx5zPh5nYfVEtTV6h33Vldb5hjzH6WD45Ngvexh2otm
	OUOnkfBdyZpHCY8EI5POiWdnigiykHxxCZBCekjXcV0DMRZpa+KuOin+5jZXJLdUVMYPavxY3Bd
	l08ucLgw7kyxQfsC1WIqBSTIFRVmqySHdFIvVdZyJKc3Mg==
X-Received: by 2002:a05:622a:5919:b0:536:5ee8:cca9 with SMTP id d75a77b69052e-542b6780e91mr301127981cf.12.1793825285045;
        Wed, 04 Nov 2026 12:48:05 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:25 +0000
Subject: [PATCH net-next v4 13/15] xen-netfront: don't BUG() when
 skb_copy_bits() fails in bounce_skb()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-13-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=1259;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=zzsYthMv8IPVXjBtHviI0y09ueLAi8MeGKpMdcW0nP0=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QPdw7QRLxn5IZHZCHDO5ZCwaqrEZRXxs42UXzWDr7r7WRHwPZva73HxZD3G3reol2INnyXLXU4W
 ViF0TlWuOfAA=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d25034/1793825286-5290EA5B-C37E0449/0/0
X-purgate-type: clean
X-purgate-size: 1261

bounce_skb() is an open-coded skb_copy() into a page-aligned buffer, and
it has the same BUG_ON(skb_copy_bits()).  skb_copy_bits() fails when the
skb's lengths don't add up or its frags are unreadable.

bounce_skb() already frees the new skb and returns NULL when the
allocation comes back misaligned, and xennet_start_xmit() drops the
packet in that case.  Take the same path, with a
DEBUG_NET_WARN_ON_ONCE() for debug kernels.

Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 drivers/net/xen-netfront.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index fdcb91042f29..17811d81937c 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -695,7 +695,12 @@ static struct sk_buff *bounce_skb(const struct sk_buff *skb)
 	/* Set the tail pointer and length */
 	skb_put(n, skb->len);
 
-	BUG_ON(skb_copy_bits(skb, -headerlen, n->head, headerlen + skb->len));
+	if (unlikely(skb_copy_bits(skb, -headerlen, n->head,
+				   headerlen + skb->len))) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		kfree_skb(n);
+		return NULL;
+	}
 
 	skb_copy_header(n, skb);
 	return n;

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472776.1680695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhtz-0005u1-7x; Wed, 04 Nov 2026 20:48:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472776.1680695; Wed, 04 Nov 2026 20:48:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhty-0005rS-Fm; Wed, 04 Nov 2026 20:48:10 +0000
Received: by outflank-mailman (input) for mailman id 1472776;
 Wed, 04 Nov 2026 20:48:09 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtw-0005WC-R8
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhtw-000QZ3-6r
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:08 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a01-8faa-0a2a0a5109dd-0a2a4501da4a-10
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:08 +0100
Received: from [209.85.222.174] (helo=mail-qk1-f174.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a07-5984-0a2a45010019-d155deaed51d-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:08 +0100
Received: by mail-qk1-f174.google.com with SMTP id
 af79cd13be357-93e635220b4so106364985a.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:07 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.245])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d4899dc6sm292004485a.43.2026.11.04.12.48.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825287; x=1794430087; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=vm4X83cKQV2cViXLrBy8CdaLxj8kNgfl4SZFvLru4UA=;
        b=fj+3rV7D0DZObpoMlJckGVvFKWfGqQ2jCB/kCt8UdEYuqPeQm2pjfioUBQwavCqysO
         4gjdVkHwcqiv/SgLCR7IBY5BHjdiLu4ei32bxle5N/bMBwbmNKwpoZKTxC8mr+x+nCRB
         PYTDVcuXFa3MCRXYveVMZEl+hzRRw1nY0zI/b5f9Azuz/5lpzFoVpXwam2fo5ZgwClNZ
         cG6CkKrx3k/64ezKXtm3ePmoWhwLi16aG9+XsfCeLHrLve8yxhJlt4WeYNh4UQqFyRq1
         Szrcs2SPid1UAY+NjcyNcJExL8AVuiTdTxIY/r4PKtoSPzZgwmyB1+KkECDW1cwv4eVp
         TOdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825287; x=1794430087;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=vm4X83cKQV2cViXLrBy8CdaLxj8kNgfl4SZFvLru4UA=;
        b=b++Wj5QkA3uaVtIK9cEYoAGsDc8gPBi6ytEtNAUPJEz5H89P9UelF5OgbQNlVk8qLx
         dif1QWrJONccpY9Tjrfya16BONlciISYQl7LT4AsNAnvawSSS4+fWR/7D2r1bNz1IuAm
         asXk5fakn4s48nua83/SwmrPQmTMLNqxaHQyg8koALm4onj6KTIkF5O66vBg5hYNqkot
         9Pp/j/5L+SvetmMrhRcryBGT6U/T6gmYKYY/HTizIODXCdZYAXKVMyrkUMsr8spohNWU
         zUcyqNNrXw5QBO+FzyT4h2cL4ur4P5zxWvgbCI8qmqnH3Z7I5/46mJThEfUETXiYDtXQ
         giBA==
X-Forwarded-Encrypted: i=1; AKwUvBymSLjRPMvFaRip90XmDJxM8NGrlXZdhfbxO4cQd15Gv317svlBxqBgvd0xtThbTGfbYiBi+4+jAOY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9u1ENBFh/oTwdwxdbxegInrq0a3AcHOVXM4hez0Xj3L6QgrGS2
	5Rs7T/X1wHnuYvFSxZ5Kr7f5JSSeYzkaqA/FnSl9nleNHku+AAOTRZ9dKYjSrtszq9M=
X-Gm-Gg: AYBFou3o0/uJ7PZqOuy5DubSrOPqNNh2NyRwQ17zXb23y0W8bzcin48wUi/FJ0jbP08
	sZ21F5TEa8sW5RJTk1AhpfRTKMZBjI2+FHDr99LyQ4KhgikOekTldUa9idbVXIWJUaM836Bi1Iy
	AMm/sjSSW54rNcrP+K6cE62pCT2mqCfmNR/g88mIVoVnrTSElEpbu9pqDdlCSXjAfQIfbwpSxA9
	PD7Va59LzuC6CUApX8okG6X6EBodTUrTPdDWQuAKQm6DOsXBL7DDF4dOEHl8x9tWqARDgaGX1Ij
	MLq2OR7ZZe/4ZcinQcoLpVjFHBr59U0z6/a1k+Sp+jNTYHyGgFKeunJxdlO8z5hVuh8MK57pe/U
	PIz3yPKRBeMWSkft0VhboCAUiTcZs7yYIGzKwolQFskfv47EPZrQFSYYZxETMFS70q/ZK2aXTp8
	U2iwaxKgDp53uAsHAjPIVsFD4fsE6wQtyEy/Jr4zUA2VENE2f6oDi/+HUeVgvjwzVs2aynPEOXS
	EyMBohcHq7TP9ZpZHdwdNvilg4inL9gZ5qDrRlW2mc3sxUxXvyPNBNGs1NUIKduml8U/QcF6qoc
	6V2JUixkYKPrtTQcmkMDuxLMg2MfseU7KB2rwYPRN4NBsqYh1JBr8yDEnfVo8FeY2yY=
X-Received: by 2002:a05:620a:4043:b0:93f:31f0:6a7f with SMTP id af79cd13be357-9442172a5c1mr3191494585a.69.1793825286622;
        Wed, 04 Nov 2026 12:48:06 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:26 +0000
Subject: [PATCH net-next v4 14/15] net/tls: don't BUG() on leftover length
 in __skb_nsg()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-14-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=1573;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=jtewRftckK13p/nQalxWcrhfGpFqhqstsSARsz5AoHI=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QDKngciEsEX8JG2Ad0fN9Mloe1uVw1/l2WZ7sISbd/Ng5VMersZpizDOJC2J3tEMBwMooCA/YD/
 B+ZXmrDCaGAc=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-d62444/1793825288-1EE60757-E8A99555/0/0
X-purgate-type: clean
X-purgate-size: 1575

__skb_nsg() counts the scatterlist entries for a range of an skb with a
copy of the __skb_to_sgvec() walk, including its BUG_ON(len) when the
skb runs out before the range does.  tls_decrypt_sg() calls it on the
same range it then passes to skb_to_sgvec(), so a bad range would BUG()
here before it got to skb_to_sgvec()'s error return.

__skb_nsg() already returns -EMSGSIZE for a frag_list nested too deep,
and tls_decrypt_sg() fails the record on any return below 1.  Return
-EINVAL for the leftover length too, with a DEBUG_NET_WARN_ON_ONCE() for
debug kernels, and say so in the comment above skb_nsg().

Acked-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/tls/tls_sw.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 771e02bff519..748ae27f2b88 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -142,12 +142,16 @@ static int __skb_nsg(struct sk_buff *skb, int offset, int len,
                         start = end;
                 }
         }
-        BUG_ON(len);
+	if (unlikely(len)) {
+		DEBUG_NET_WARN_ON_ONCE(1);
+		return -EINVAL;
+	}
         return elt;
 }
 
 /* Return the number of scatterlist elements required to completely map the
- * skb, or -EMSGSIZE if the recursion depth is exceeded.
+ * skb, -EMSGSIZE if the recursion depth is exceeded, or -EINVAL if the skb
+ * runs out before @len does.
  */
 static int skb_nsg(struct sk_buff *skb, int offset, int len)
 {

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 20:48:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 20:48:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472780.1680707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhu1-0006Tj-SR; Wed, 04 Nov 2026 20:48:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472780.1680707; Wed, 04 Nov 2026 20:48:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOhu1-0006QU-AN; Wed, 04 Nov 2026 20:48:13 +0000
Received: by outflank-mailman (input) for mailman id 1472780;
 Wed, 04 Nov 2026 20:48:11 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <josef@toxicpanda.com>) id 1xOhtz-0005xS-2x
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 20:48:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOhty-00DUt0-FD
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:48:10 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a03-2eae-0a2a0a5409dd-0a2a45069bb8-14
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:10 +0100
Received: from [209.85.222.177] (helo=mail-qk1-f177.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <josef@toxicpanda.com>)
 id 6aeb9a09-195a-0a2a45060019-d155deb1f143-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 21:48:10 +0100
Received: by mail-qk1-f177.google.com with SMTP id
 af79cd13be357-93f079a63b8so112332785a.3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 12:48:10 -0800 (PST)
Received: from toxicpanda.com ([153.61.196.253])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-945d483d762sm294338885a.27.2026.11.04.12.48.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 04 Nov 2026 12:48:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=toxicpanda.com header.i="@toxicpanda.com" header.h="Cc:To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=toxicpanda.com; s=google; t=1793825288; x=1794430088; darn=lists.xenproject.org;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=UbSwO3gZAlShSf8y/3JGnXMddTOZvjpIdY8ib59dlm8=;
        b=YIqhOJN7ZCzDLcp9eweAn2J7TdnGMx4sCzPFuN9HZ5SZUxk50OYO6UE7CNfjcqROIS
         1hzB9bS6SdTQ8KuFb/wRVcJgUVXE5L87ktEucpDLcOAxRgKmmGIgguLyrXm3EXZWZysj
         dSnAnsuoB9bwQnUEmzQcrCHbtVdanV4mDOUo2Is+kxsfih0oHEsU1N2Euw8fwAKGZIrM
         Kqb5b9iqQJWSuvP8gd2R05GZduYtPkoiKzisHta4RK3mrHnWfBztFJzJ5MCa380zx6xi
         2g9vyEyaB93JkLzcFdHnNogWQ7hC3+B+BZYg3uCgbpspHRbweV1KBmt3FRXaa0Lgola0
         Sfaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793825288; x=1794430088;
        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
         :content-type:mime-version:subject:date:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=UbSwO3gZAlShSf8y/3JGnXMddTOZvjpIdY8ib59dlm8=;
        b=uW0TDYwG9/b29OSSV9cECXuCF9LdWCKQFJfbfCKYXLIev/v3OwE+RBvXrRVVlL+HiI
         opnqoEz143kBuuzU+Nx6sw/xtirKGWvcXi/wewnkXVNRm2Fg1xHtZMyZQ/ezg/wsrYth
         MN7NBxTCQgJVFTjHxC74WTRO1Cc3qebFDKeeWJ/qTB9IM4histfBJUdbFBxBfoIYo2KE
         ddE6a5UgVSPXqtSjAr+8mNFNcS2QSlsWIywqizyAHgwMLGy/b1It/DR5kjn+E9CL4WYP
         sDpfETfs1jf2/uYXVLLA4HEL/40sfbzASE2IdOmrTa0AUJssyz1PzqtWwOM2ZuX9oYAs
         qHMA==
X-Forwarded-Encrypted: i=1; AKwUvBxc6KJtExaxmMNkAyKbYY5tVbRPXyrEeH+alqRxRXDxC77sq71si8kziKUnlfN7E/R5dTT5wt+3oVA=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9xDhj7H7FoBkkGevxSE7SzjLp8INq+GZI/ilfsqsGCw/W2tOC2
	PU5WDh7ZuamnP9ifTRyKG5qzbmv4tRtlgMLj8q0Bys230aa87udbu3QP0GuQe1zAKZA=
X-Gm-Gg: AYBFou2+agZqlT+5vKCHQAgQd7rqJlSMLMHgLU0+uNZ6fvt6Y1qOcWw4Z/IckUlievX
	wqp06zSarzX+zA3cbHQHG95rzC9RNy4RznBjJOu/QpI9DBs+GTSQkiC1EbCzhd+kwcbF3Hhbu2E
	y8Y1W7q9IWKphrd0+mKN/vikEgpLqMqQBNP3wxT8I2fHMncDq45Wl5xsp2JrNjvNt0oVRKcp2Jn
	g0t4mPSeG3mtvx5L/RPX5KJT6MrM/lMMrjQq8/L4SQYqbvt/OjnVSom5f/IeSuNUj/puopQG+Lk
	es2SG7SEQuCjmkJTZoZNgLnzuT2Lh851DsvL1p8xuzqgTlv1eU48kw1AufU7yGMo7CUwxffTr90
	Obbrc7NNpRsyL4ZIr1WiIQQQR9L1uiNQyn2QBR5evWKxZ002BHCyQ2nkgsXBBrcqecyW9JvzUuU
	eVrBA/e+x3W6338xoYJR1e+7qIzGlRHFiMLAvymiFApkyXl4s/dW/krzlECdu/q8424OEmjZUn1
	LVoGtGZOk4/uooMnQncKpSokyCKKLa7EV6ZtZO5aIrU/OvXSVpLwMLdF9Qze+HKAoJUiFRz4bsE
	l9VQluTaVGV6nTZgXHTtbPuD17YIMa9XfvKVb1C/+xCnlA==
X-Received: by 2002:a05:620a:a905:b0:945:b9c8:de5a with SMTP id af79cd13be357-945b9c8dedbmr1356158885a.20.1793825287918;
        Wed, 04 Nov 2026 12:48:07 -0800 (PST)
From: Josef Bacik <josef@toxicpanda.com>
Date: Wed, 04 Nov 2026 20:47:27 +0000
Subject: [PATCH net-next v4 15/15] net: update comments that still describe
 the skb BUG_ON()s
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261104-b4-skbuff-bug-on-followups-v4-15-b7ffeb364f5d@toxicpanda.com>
References: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
In-Reply-To: <20261104-b4-skbuff-bug-on-followups-v4-0-b7ffeb364f5d@toxicpanda.com>
To: "David S. Miller" <davem@davemloft.net>, 
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>, 
 Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>, 
 Andrew Lunn <andrew+netdev@lunn.ch>
Cc: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Willem de Bruijn <willemdebruijn.kernel@gmail.com>, 
 Fernando Fernandez Mancera <fmancera@suse.de>, 
 Mina Almasry <almasrymina@google.com>, 
 David Laight <david.laight.linux@gmail.com>, netdev@vger.kernel.org, 
 xen-devel@lists.xenproject.org, Josef Bacik <josef@toxicpanda.com>
X-Mailer: b4 0.15.2
X-Developer-Signature: v=1; a=openssh-sha256; t=1793825269; l=2967;
 i=josef@toxicpanda.com; h=from:subject:message-id;
 bh=EAJ0bQj/Oj/in9lIWu/G1LG29YPEIg8lFuBrNd3Sw5Q=;
 b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgUBr36M/n0nWN0DNbnxwzIiCZez6MG
 JiruuNaSCI/zXsAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA
 QHf4WC7tdHNHClwRAYr93iv9/GKE9HPJjZnVhEDjCwlX4VLZbqFYVp2C6I1QijW+aNqGzDet3wR
 d30tDtFHCMgo=
X-Developer-Key: i=josef@toxicpanda.com; a=openssh;
 fpr=SHA256:C8kOX2QUJCMqnCX+KEeoqRAjLo9L+ELOSH2NSAJHqGA
X-purgate-ID: tlsNG-16d1c6/1793825290-F6A7477B-32DDD58F/0/0
X-purgate-type: clean
X-purgate-size: 2969

The skbuff BUG_ON() conversions left a few comments behind:

 - bpf_skb_net_grow() says skb_segment() BUG()s on a frag_list with
   head_frag set at the downgraded MSS.  It fails the segmentation and
   the packet is dropped, which is still why the skb gets linearized.
 - The skb_to_sgvec() kernel-doc doesn't list the -EINVAL that
   __skb_to_sgvec() returns when @offset and @len run past the end of
   the skb.
 - A comment in the netmem KUnit test names BUG_ON(i >= nfrags) in
   skb_segment(), which is a check that fails the segmentation now.

No functional change.

Acked-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 net/core/filter.c   | 6 +++---
 net/core/net_test.c | 2 +-
 net/core/skbuff.c   | 5 +++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/core/filter.c b/net/core/filter.c
index 09c60a58c82a..9881ac89e94c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -3723,9 +3723,9 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 off, u32 len_diff,
 		shinfo->gso_segs = 0;
 
 		/* Due to header growth, MSS needs to be downgraded.
-		 * There is a BUG_ON() when segmenting the frag_list with
-		 * head_frag true, so linearize the skb after downgrading
-		 * the MSS.
+		 * Segmenting a frag_list with head_frag true at the new MSS
+		 * fails and the packet gets dropped, so linearize the skb
+		 * after downgrading the MSS.
 		 */
 		if (!(flags & BPF_F_ADJ_ROOM_FIXED_GSO)) {
 			skb_decrease_gso_size(shinfo, len_diff);
diff --git a/net/core/net_test.c b/net/core/net_test.c
index 03203454cd19..976d14896251 100644
--- a/net/core/net_test.c
+++ b/net/core/net_test.c
@@ -1524,7 +1524,7 @@ static void netmem_ref_test_skb_segment(struct kunit *test)
 	/* 5. Linear head_skb (nr_frags=0) + mixed pp_recycle frag_list where
 	 * member A has linear + frag (pp_recycle=1) and tail member B has
 	 * linear len == skb_headlen(A) (pp_recycle=0): keeps SG clone path
-	 * synchronized without hitting BUG_ON(i >= nfrags).
+	 * synchronized without failing the i >= nfrags check.
 	 */
 	head = alloc_skb(64, GFP_KERNEL);
 	list = alloc_skb(64, GFP_KERNEL);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 45cd77e153f1..29951ce11850 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -5641,8 +5641,9 @@ __skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len,
  *
  *	Fill the specified scatter-gather list with mappings/pointers into a
  *	region of the buffer space attached to a socket buffer. Returns either
- *	the number of scatterlist items used, or -EMSGSIZE if the contents
- *	could not fit.
+ *	the number of scatterlist items used, -EMSGSIZE if the contents
+ *	could not fit, or -EINVAL if @offset and @len run past the end of
+ *	the skb.
  */
 int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)
 {

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Wed Nov 04 21:13:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 21:13:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472893.1680721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOiIA-0001iH-2t; Wed, 04 Nov 2026 21:13:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472893.1680721; Wed, 04 Nov 2026 21:13:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOiI9-0001iA-WE; Wed, 04 Nov 2026 21:13:10 +0000
Received: by outflank-mailman (input) for mailman id 1472893;
 Wed, 04 Nov 2026 21:13:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bp@alien8.de>) id 1xOiI8-0001i4-9F
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 21:13:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOiI7-00Fboi-JY
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 22:13:07 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bp@alien8.de>)
 id 6aeb9fd7-bab6-0a2a0a5309dd-0a2a45028148-24
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 22:13:07 +0100
Received: from [65.109.113.108] (helo=mail.alien8.de)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <bp@alien8.de>)
 id 6aeb9fe3-6ca4-0a2a45020019-416d716c94e2-3
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 22:13:07 +0100
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 6CD5940E015B; 
 Wed,  4 Nov 2026 21:13:06 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 3U2b1QxYClr0; Wed,  4 Nov 2026 21:13:03 +0000 (UTC)
Received: from ehlo.thunderbird.net (mobile-166-137-178-199.mycingular.net
 [166.137.178.199])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256)
 (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id A83DE40E0184;
 Wed,  4 Nov 2026 21:12:25 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=alien8 header.d=alien8.de header.i="@alien8.de" header.h="Date:From:To:CC:Subject:In-Reply-To:References"
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1793826783; bh=0j7BAmeDQwwtoMBbI3yPl2jkhlbza1J7ZyqEZwxFy/Q=;
	h=Date:From:To:CC:Subject:In-Reply-To:References:From;
	b=U2D3wB8gdl4a43Fm64mNA6ZM2USpJCLIwCtamRC4PcjkbT+N3A+hed3l9E18bhVyX
	 oyhZdr4pmbZ9eFP5+UCjaiCqxDqDEyCl5ThDEaSCrWe2xKlb2DMAun1RtooMcmRDqa
	 eDsyzK2506LRm7jgiN+z6u0Z1GSJ6mRPPgSKdtbyccDShhNEccOFW/K62qudpbnOHO
	 SuXkb4mORY7livXLiDQ5+Ip3dhFyNLyBkSYk8+E/lcB8GyQjyDz6I/LGeYT5wFvdBj
	 FKYmI/T9PuFn7AWswVv0APe7rfg2hIcSKMRF4R3nCwdF87X5HfcAZi2pnEz6WA2+8k
	 bEgan0ne6CSX6MMOvrHt4UoxaCLJIB74x5NpPo5jrHn7UD+kmGPkTKobaONv8p8eym
	 lsXxoQ+Iw1u25zQiuWo2B+I6nBcwQfZxDqWFuXkh0s8suZoS+fsGW5BIXPFwGHmCjW
	 h9d+gKicHVqg9hI1B/pB8JJ71qDvalixTPqVIl6tG+dSHRTJSU8ENCPsEW7V+RMGV9
	 f+p4oTHAT38MTk38E04WDhaktVkQ3/v2M/KgowJqc897S71W4JCMPk05g3RqtWVczr
	 14fNyyPqp67ozGOUyRQEtaJDemz2FCPZ+WTgKsrUg+W0CM0uspv1CtxXXyYzxM65w5
	 7jyZ1iDKDaNuk1lF+8s1+8zs=
Date: Wed, 04 Nov 2026 21:12:19 +0000
From: Borislav Petkov <bp@alien8.de>
To: Sean Christopherson <seanjc@google.com>,
 David Woodhouse <dwmw2@infradead.org>
CC: Kiryl Shutsemau <kas@kernel.org>, Rick Edgecombe <rick.p.edgecombe@intel.com>,
 Paolo Bonzini <pbonzini@redhat.com>, "K. Y. Srinivasan" <kys@microsoft.com>,
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>,
 Dexuan Cui <decui@microsoft.com>, Long Li <longli@microsoft.com>,
 Ajay Kaher <ajay.kaher@broadcom.com>,
 Alexey Makhalov <alexey.makhalov@broadcom.com>,
 Jan Kiszka <jan.kiszka@siemens.com>,
 Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>,
 Peter Zijlstra <peterz@infradead.org>, Juergen Gross <jgross@suse.com>,
 Daniel Lezcano <daniel.lezcano@kernel.org>,
 Thomas Gleixner <tglx@kernel.org>, John Stultz <jstultz@google.com>,
 Vitaly Kuznetsov <vkuznets@redhat.com>,
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>,
 Stephen Boyd <sboyd@kernel.org>, Miroslav Lichvar <mlichvar@redhat.com>,
 x86@kernel.org, linux-coco@lists.linux.dev, kvm@vger.kernel.org,
 linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 Michael Kelley <mhklinux@outlook.com>,
 Tom Lendacky <thomas.lendacky@amd.com>, Nikunj A Dadhania <nikunj@amd.com>,
 Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v6 00/51] x86: Try to wrangle PV clocks vs. TSC
User-Agent: K-9 Mail for Android
In-Reply-To: <auuJjiowddGlysWI@google.com>
References: <20260806233609.212337-1-seanjc@google.com> <aqLv9GwBNymyHs8q@google.com> <c9a6455eb88c24d4271b7a7c86f7a4e90799e40a.camel@infradead.org> <auuJjiowddGlysWI@google.com>
Message-ID: <375997C1-577B-440C-B347-B8D256FA84B3@alien8.de>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1793826787-F22A92AC-2A2137A6/0/0
X-purgate-type: clean
X-purgate-size: 2397

On November 4, 2026 7:37:50 PM UTC, Sean Christopherson <seanjc@google=2Eco=
m> wrote:
>On Thu, Sep 10, 2026, David Woodhouse wrote:
>> On Thu, 2026-09-10 at 10:59 -0700, Sean Christopherson wrote:
>> > On Thu, Aug 06, 2026, Sean Christopherson wrote:
>> > > The primary goal of this series to fix flaws with SNP and TDX guest=
s where a
>> > > PV clock provided by the untrusted hypervisor is used instead of th=
e secure
>> > > TSC that is controlled by trusted firmware=2E
>> > >=20
>> > > The secondary goal is modernize running under KVM=2E=C2=A0 Currentl=
y, KVM guests will
>> > > use TSC for clocksource, but not sched_clock=2E=C2=A0 And Linux-as-=
a-KVM-guest doesn't
>> > > support paravirt enumeration of the TSC/APIC frequencies, even thou=
gh QEMU
>> > > provides that information by default=2E
>> > >=20
>> > > The tertiary goal is to clean up the PV clock code to deduplicate l=
ogic across
>> > > hypervisors, and to hopefully make it all easier to maintain going =
forward=2E
>> > >=20
>> > > The quaternary goal is to clean up the TSC calibration code, which =
was made
>> > > stupidly hard to follow by hypervisor code mixing in with the nativ=
e
>> > > calibration routines, instead of being implemented as a pure altern=
ative=2E
>> > >=20
>> > > Note, the VMware and Xen changes still probably should get acks fro=
m those
>> > > maintainers, as my understanding of what they're trying to do may b=
e flawed=2E
>> >=20
>> > This (thankfully) still applies cleanly=2E=C2=A0 What can I do to hel=
p move this forward?
>>=20
>> Nudge Thomas to spot that this is guest-side and we want him to pick it=
 up, I guess?
>
>Amazingly, still applies cleanly on 7=2E4-rc1 and tip/master=2E  I know w=
e're shortly
>after the merge window, but this has been sitting idle for months and add=
resses
>issues that are impacting a variety of end users=2E
>
>Note, this also provides meaningful hardening for SNP and TDX=2E  /me sta=
res intently
>in the direction of Dave and Boris=2E

Would you believe me if I told you you're in the "review" mbox?

The damn thing just keeps growing constantly :-/

I would love it if we had a review scoring thing like the net folks - whoe=
ver reviews others' patches, gets looked at first=2E=2E=2E and no, I don't =
mean you with that=2E

:)
--=20
Small device=2E Typos and formatting crap


From xen-devel-bounces@lists.xenproject.org Wed Nov 04 23:30:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 04 Nov 2026 23:30:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1472977.1680729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOkQS-0001nd-AL; Wed, 04 Nov 2026 23:29:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1472977.1680729; Wed, 04 Nov 2026 23:29:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOkQS-0001nW-7K; Wed, 04 Nov 2026 23:29:52 +0000
Received: by outflank-mailman (input) for mailman id 1472977;
 Wed, 04 Nov 2026 23:29:51 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xOkQQ-0001nQ-Qy
 for xen-devel@lists.xenproject.org; Wed, 04 Nov 2026 23:29:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOkQQ-00Dnem-01
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 00:29:50 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aebbfb4-bab6-0a2a0a5309dd-0a2a4504ec74-18
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:29:49 +0100
Received: from [40.107.159.118]
 (helo=OSPPR02CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6aebbfed-b57f-0a2a45040019-286b9f76d24b-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:29:49 +0100
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com (2603:10a6:803:113::29)
 by PR3PR03MB6457.eurprd03.prod.outlook.com (2603:10a6:102:5e::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov
 2026 23:29:45 +0000
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48]) by VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48%4]) with mapi id 15.21.0592.009; Wed, 4 Nov 2026
 23:29:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=jWGOhII9nnXZ5NXi6Z7SJArhOeZRH6Un/GGpDDH98AmkRRHp0qnI7T6LzA6hHgV/y7OghGjFZzftYi8dcWiLex8r4IK9x662b5FBgulvTnFQB1iVLWBFUNXg19W9aOQDkv/D/Q6otX8DUhM6zWN6NvPtyRij83+hTMDPFsLHrUBflNKzWK+fP2F8ezzhM0wjsumwAUsvJdXHHS4tNmBH47n2s4zWyXs5N3HydgO6M9II3ITqcjnPqQtIEktuw8DrvoEVS47WUuoIjbDqtmJyz8nXjsyaAmx9LhVGksHUc7Ryen+cAUT5GKYjjRA6xZ/3m/6goCGyLLVe36/XmstwEA==
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=aW/J84UYYspchmpXs/hqxSkIj0kRnG5mNapCxfNuBkY=;
 b=hODfwgXkn6PBPVkUpT1rCi9N9QONq/9Ne9a2h0N20I7990CgaWi/b7XnkCR2V1lvjfep3uZ9COD+G3LNDs+GZTQRCkUBz/7RvYkR4NfAgw9zUUA7ZprKiEuxVxZPALLgIAO9BjA3SHEYeaPFSdOMEMZS6n/NGDUuc0WrTDFEl8G1X4sIiSTgJTz1SFZxuFr6vqFg0656uSuHR28soCcfUiu5645Gb4FKxy/bAkCnlagqTaZ2TP7fyJj/m25IesHJjtPwjt19rsm7EdP2tw+bEtizbuHDxF73KpuGtOp3bOVlj1VCA4CBpboaXeHI3/fHRLeMdmp/94dgjQ2QnzwCzg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aW/J84UYYspchmpXs/hqxSkIj0kRnG5mNapCxfNuBkY=;
 b=j9Ca0qADslBZTZUryQS4JT6EdSQQxeCXBOitSvXCWSWaZ8NCaeW1WwFxeWzSQO7umPD2hm13oqPhSfu7etKRIgoVps13oPtDvx4Ta5CvpX//vQQ6uNoL7zg5jRf58iu1yl+Jg3QyhCl3X807qE12X7yhbSTyJw0i//H2Q+Cy+d42vUWCh+RaOjENRxntn0+0gz/72cYH9AoW8n+he9a0zLTk5DvHOc6uzmvnO1SIRSs82M7P37Z3OQYBQzl3nuLhjy/VnH4DZ822AgPGUEof2HFKwU5l2eYyFhYec1pNXSm10owaSOzCC2WmnO/LoldMhFtAh8PucEGotjvz8+SpRw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I58Jpp38R9BUi7o+T9Doedpg==
Date: Wed, 4 Nov 2026 23:29:43 +0000
Message-ID: <878q38kwez.fsf@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
	<04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
	<874idxmd91.fsf@epam.com>	<2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com>
	<87pkwklr3f.fsf@epam.com>	<d914b586-0901-4b29-8d92-187c4478473a@epam.com>
In-Reply-To: <d914b586-0901-4b29-8d92-187c4478473a@epam.com> (Oleksii
	Moisieiev's message of "Wed, 4 Nov 2026 14:39:31 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: VE1PR03MB6078:EE_|PR3PR03MB6457:EE_
x-ms-office365-filtering-correlation-id: 751ea3c4-7176-4064-0d8d-08df3acb8203
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|7416014|376014|366016|42112799006|38070700021|261102123227099003|261021121427099003|4143699003|11063799006|56012099006|261021135927099003|261026140227099003|261028144727099003|261022105027099003|261026121527099003|261022075727099003|261009223027099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 hb3skPkmXIdanUzKRHAsaUM/19c8hNbq8YHIzbzU9xQYuPKxl1c1HuwF0PepWi3FH1yetFofX2jIglMQ3Tnu6nPR6S2omQSlVEhl6oYZ9ytKbdbwRD+u6zCEvSvIM2p91RogIfLyDhwV8XbRj6PCaRi+x+45azO6xbqXG/G61z9Vr9tDMs7/mOKJyE7QqHiwyMcU8MGt1KO3CtKFbr9Ek4Si2h7agHHCHtgCLr+RWLUD7pFKZx/5tDqngZC44r+/8p2wxq1g0rr4uF7DhzOK6YV6U/nToGGGnQ0ej2hR6cOQGTs/c1okLdwjWyvVmUyos3s/mYykRGPM9sTw+WQ3v8Vd4fYCIK0RA6IbWc2IXpQaTaBvIJroqHrPsfqI9Or2vki+RoioPS6sFeGiYDXV6G+rd4+cLkEEkjpO8Ua8HoPqmcNgy4wmlJBzuEqsaaIXcNsPvJ4szZ6f3G4iKHst12PgTkjmly6/TDGUy4FvTZyn0Qc928LmgUMaY/ZCQfBX3PYge11ZXkZ1gfdZn/g6F5mr0BAh1YPWOX5YSBAxihKIJDt1bsJNrM0+d8txdXeD9gSanqi7wKSMb9xAlS1xjZKda1Iw6holVJNEg61PMWDzh9yeBODTrRn1YyXWpp/9r7yn3wiAJgcI+ZfWfiOuw625RbXZzOzJDaxQPgm6kdG+0aqSV185XVH3L0Pgq5A0
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR03MB6078.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(7416014)(376014)(366016)(42112799006)(38070700021)(261102123227099003)(261021121427099003)(4143699003)(11063799006)(56012099006)(261021135927099003)(261026140227099003)(261028144727099003)(261022105027099003)(261026121527099003)(261022075727099003)(261009223027099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?WS9CUUhjaXlmNUN1NmxEMGRNNFAvUGhUeWRlM1lTUmJXN1BTbUxRMWZGeW5V?=
 =?utf-8?B?Q09vYi9IYjNZbTFxWWpCWUhkK2tLQVZySmZ2WnJaRlBhRDNvdTJDcU84bFhx?=
 =?utf-8?B?Um5zV3V4aFc0V1VLRGNWMExFVXZNR1RnKzc1ejA5UFFNRm5YWkJta0Iya1ha?=
 =?utf-8?B?a0dONmdvUTl2dVFrakdLN0JLbGdsS3dqeXl4anlsWHdvRkZDYnlmZE5FVHZ0?=
 =?utf-8?B?d1RTT2xWWjE2anlFb0NHZWtLNXdmLy80K2Y4VGJnQy9pUm12Vm9TOExXRHJn?=
 =?utf-8?B?WitxN082Q21uVmVURHllOE1GWHFYelhUaXdkbTJrZVdVbWg0R2NOOU1HUDlV?=
 =?utf-8?B?N2psZVNka1g1WDAzQ1lmU29CWUFpbmI4ZDNnZXNWdHdCQjhWZXRzU2dNRzl2?=
 =?utf-8?B?OUdIY1F3YnZOTDFuQjVkZVVQQmMxd1A3a21wcVJjb0s2QVFOMENzU3g0Tk1N?=
 =?utf-8?B?V25DOFJ4d1BCUEFLeHhnZFl2MVlGY2dwTWR2MTRZWTc4bVl4enBLOXBsYmNk?=
 =?utf-8?B?QnRNN2ZOK1FnZHk0aDBCd1ZLeElpYVlvY0ZGeTlYekNsUkhLVmZwcTByczFR?=
 =?utf-8?B?Y3FCaEk2TGdMVHMzcGI5c3ExVndyMEFMU2FKeXI3MjY3TjhpT2RONndzT1JX?=
 =?utf-8?B?VlkwalJ1Z2M5K2FrMldRMGhDc3NNTGYxZjlhYXNQSjZ3cnhHZHpzeEpMd09t?=
 =?utf-8?B?Y2NERXczeFU2NEhLanREd0dqQ3lmN1hKZ053SlB0U3hOamZpUHNqbDJOSE5W?=
 =?utf-8?B?VUtoelhxNFFiWGVuMVYzRGpwQ0MxRytkNHNoNXk1emRvcTYxVHFLMytjNUJn?=
 =?utf-8?B?UmU0aE13WHJVNGpweDY4K1NTbW9FUXZLS04wOWtEM25ybmw3Nm91YWNIa3du?=
 =?utf-8?B?OUp0cE5BZGJ3dy9hR1NyN3RnMS9iWEkrNDkwRXVvY0dUeEV4Q252YzUvd0Zp?=
 =?utf-8?B?eU01WkVGK1l2ZWIxcDRnT2dTeFhRekN4cGwwUE5sMDBaN2FhdUJLZTRzZDRn?=
 =?utf-8?B?MnFaS1lpeC9TT0szeUlDK1JubWxUcVRIZXpMaU90RmVBY3VSUVJJWjRpUlow?=
 =?utf-8?B?dXc5ZVZYb3lQdkI1NDV4a1ZTZld2UTFoKytQNEhpV3Z3OXA0ZHJRc2JUMVRj?=
 =?utf-8?B?YkxIL2RjRkxCSnBaaVdLQW5tZEFhU1o0eU1JVzZHSUI1YTB6Tm8vYzZKNElE?=
 =?utf-8?B?Z1pZMy8wNjB5ekM1WE9yenNHUkxGSnIrUS9lUFExdTlzaHd6VVZFS0prQWRY?=
 =?utf-8?B?NVhxTmtwWHQweHNidFhybzdWKyt6WjlqcFl0eDVZTERiWWJaWHFQOG01cEdR?=
 =?utf-8?B?OHVMaU1lTnVsUGhtMFdJWU1uMmJNWGVQSU5zYW9vUE5HVFRnNXowK3JsKzF1?=
 =?utf-8?B?NWtCR25POVZFT3hHT0g0dzFvS1o1TlZJaXdFVFpaSCtXbm5WZWF0endpNCtj?=
 =?utf-8?B?bjBrWDg4UnZrc1grejA4cXlRWTQ0SS9ZT0lYVFRiS0JFcldIbGRyTGJSS2o0?=
 =?utf-8?B?MGJSNXZKZFNhdCs4WWU1TnNud1VVQ1NFVERTNk4yVHhsdzN4MzU0elJVUkEv?=
 =?utf-8?B?ZVZDdjlLZFZsOEhneDlZckFiejJxVlFlZWY0QWt1Ynl5bllZQUJHL3h3NlEw?=
 =?utf-8?B?QUpvTzJxeEw1NHVuaXN6bVlmcEx6UkJRc0hVNVkxUGlvUmc5Y2FhOU90MEtH?=
 =?utf-8?B?S1FmQjZJaGxxbGd0VEM3akVmTHpRRjFjWFErUTNHWUtDUjJ4RytlVUlxTWNQ?=
 =?utf-8?B?NmFFM2taMDl5SzluNXo2WnlQTkFpSWsybnJkcmFSanhyVmlpNG0weUJ2cldv?=
 =?utf-8?B?NGhXNEh2OHFvaWJ1dVY0ZzJESkgrUGplODJlUUxtbVYwd1V6OVBMbXJHbm1K?=
 =?utf-8?B?Z0JUY00wR1pKRXhVa0NERDRlRzk0Q0hqNTI0cGtRVi85V0xQME5WeUYvVytJ?=
 =?utf-8?B?c3lFaVcwaWRWZ2ZKK3NzOTd2eGU4ZmZJdUNDTC9xamtHaEg5eC8ybXBZK2Rr?=
 =?utf-8?B?V3F3eTBud0RZVXllNC9BaHQ3Vk9qZVNObXc5djdQWVRkdXZtUmdRVm1najJi?=
 =?utf-8?B?NzFFVzBHZHVMcmVmTERMMkkvWnZZWUFRcmZmNXVPT2oydVp5RTE2b1ViZDRZ?=
 =?utf-8?B?VlZjQ09GMjRZZFJhSWN0WEFBb2UwNlFsY0cwdHczUGpnN0UyNEd0NEVxRTZF?=
 =?utf-8?B?TFRpMktGUVBwY3Rmd3kvT2RxNlA0UHcweEhpMzJoM0pObUVucXI3V3RZd3dY?=
 =?utf-8?B?Q242ajZkOThERWV4ZEVtVnlSaEMvckcrenJaYy9SV1d1NzJNK1hrL2hRdita?=
 =?utf-8?B?OU5BaUlGKzU5ajZPSFFET3I5VWRCZ3gra3BxSHZORWFIZ0h3azRFUkdkL2dq?=
 =?utf-8?Q?0brPiiLeGe6rD9TA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <AFC195E9E1A2CC47A19537541A622DED@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: VE1PR03MB6078.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 751ea3c4-7176-4064-0d8d-08df3acb8203
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2026 23:29:44.3689
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: tuoxF6Vk4qUennxkhakbmWmd8Jl3OaNEAcCfY5S3wbdys/9cTsbMz2fTyQiU94F1pAUvNOfOSwwRa8SUKT8lCvvkv2bCH9UnuAoNuz1cLfY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR03MB6457
X-purgate-ID: tlsNG-ebf023/1793834989-C0AD8B50-B79853B4/0/0
X-purgate-type: clean
X-purgate-size: 18512

SGksDQoNCk9sZWtzaWkgTW9pc2llaWV2IDxPbGVrc2lpX01vaXNpZWlldkBlcGFtLmNvbT4gd3Jp
dGVzOg0KDQo+IE9uIDA0LzExLzIwMjYgMTQ6MjcsIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOg0K
Pj4gSGkgT2xla3NpaSwNCj4+DQo+PiBPbGVrc2lpIE1vaXNpZWlldiA8T2xla3NpaV9Nb2lzaWVp
ZXZAZXBhbS5jb20+IHdyaXRlczoNCj4+DQo+Pj4gSGkgVm9sb2R5bXlyLA0KPj4+DQo+Pj4gVGhh
bmsgeW91IGZvciB0aGUgcmV2aWV3LiBwbGVhc2Ugc2VlIGJlbG93Og0KPj4+DQo+Pj4gT24gMDQv
MTEvMjAyNiAwNjoyOCwgVm9sb2R5bXlyIEJhYmNodWsgd3JvdGU6DQo+Pj4+IEhpLA0KPj4+Pg0K
Pj4+Pg0KPj4+PiBJJ20gc29ycnksIEkgcG9zdHBvbmVkIGRvY3VtZW50YXRpb24gcmV2aWV3IHRp
bGwgd2UgZmluaXNoZWQgd2l0aCBjb2RlDQo+Pj4+IHBhcnQuIFRoaXMgd2FzIG15IG1pc3Rha2Uu
IEkgZGlkbid0IGV4cGVjdGVkIHRoYXQgaXQgcmVxdWlyZSBzZXJpb3VzDQo+Pj4+IHByb29mcmVh
ZGluZy4gQW55d2F5LCBJIHRyaWVkIHRvIGhpZ2hsaWdodCBtb3N0IGdsYXJpbmcgbWlzdGFrZXMs
IGJ1dCBpdA0KPj4+PiB3b3VsZCBiZSBncmVhdCBpZiB5b3UgcHJvb2ZyZWFkIGl0IGJ5IHlvdXJz
ZWxmIG9uY2UgYWdhaW4uDQo+Pj4+DQo+Pj4+IE9sZWtzaWkgTW9pc2llaWV2IDxPbGVrc2lpX01v
aXNpZWlldkBlcGFtLmNvbT4gd3JpdGVzOg0KPj4+Pg0KPj4+Pj4gRnJvbTogR3J5Z29yaWkgU3Ry
YXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0KPj4+Pj4NCj4+Pj4+IEFkZCBTQ0kg
U0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIGRvY3VtZW50YXRpb24uDQo+Pj4+PiBJdCBpbmNs
dWRlcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBTQ01JIG11bHRpLWFnZW50IGRyaXZl
ci4NCj4+Pj4+IFRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgdGhlIGRyaXZlcidzIGZ1bmN0aW9uYWxp
dHksIGNvbmZpZ3VyYXRpb24sDQo+Pj4+PiBhbmQgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRo
ZSBYZW4gU0NNSSBtdWx0aS1hZ2VudCBkcml2ZXIgaXMNCj4+Pj4+IGRlc2lnbmVkIHRvIHByb3Zp
ZGUgU0NNSSBhY2Nlc3MgdG8gc3lzdGVtIHJlc291cmNlcyBmcm9tIGRpZmZlcmVudA0KPj4+Pj4g
ZG9tYWlucy4NCj4+Pj4+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBHcnlnb3JpaSBTdHJhc2hrbyA8
Z3J5Z29yaWlfc3RyYXNoa29AZXBhbS5jb20+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2lp
IE1vaXNpZWlldiA8b2xla3NpaV9tb2lzaWVpZXZAZXBhbS5jb20+DQo+Pj4+PiAtLS0NCj4+Pj4+
DQo+Pj4+PiAobm8gY2hhbmdlcyBzaW5jZSB2MTQpDQo+Pj4+Pg0KPj4+Pj4gQ2hhbmdlcyBpbiB2
MTQ6DQo+Pj4+PiAtIGRlc2NyaWJlIHNlY29uZGFyeSBhZ2VudHMgYXMgeGVuLHNjbWktYWdlbnQg
bm9kZXMgdW5kZXIgYWdlbnRzDQo+Pj4+PiAtIHVwZGF0ZSBob3N0LCBkaXNjb3ZlcnkgYW5kIGRv
bTBsZXNzIGV4YW1wbGVzIGZvciB0aGUgY2hpbGQtbm9kZSBmb3JtYXQNCj4+Pj4+IC0gY2xhcmlm
eSBzaGFyZWQtbWVtb3J5IHBsYWNlbWVudCBhbmQgcGxhdGZvcm0gUkFNIHJlc2VydmF0aW9ucw0K
Pj4+Pj4NCj4+Pj4+IENoYW5nZXMgaW4gdjEwOg0KPj4+Pj4gLSByZXBocmFzZSBzZWN0aW9uIGFi
b3V0IC9maXJtd2FyZS9zY21pLiBNZW50aW9uZWQgdGhhdCB0aGlzIG5vZGUgaXMNCj4+Pj4+IHRh
a2VuIGZyb20gSG9zdCBEVCBhbmQgY29waWVkIHVubW9kaWZpZWQuDQo+Pj4+PiAtIGZpeCB4ZW4s
cmVnIGFkZHJlc3MgZm9yIHNlY29uZGFyeSBkb21haW5zIGZvciBEb20wbGVzcyBjb25maWd1cmF0
aW9uDQo+Pj4+Pg0KPj4+Pj4gQ2hhbmdlcyBpbiB2ODoNCj4+Pj4+IC0gdXBkYXRlIGRvY3VtZW50
YXRpb24gdG8gbWF0Y2ggdGhlIGxhc3QgRFQgZm9ybWF0DQo+Pj4+PiAtIGZpeGVkIFJTVDogIi4u
LiBjb2RlLWJsb2NrOjogZHRzIiAtPiAiLi4gY29kZS1ibG9jazo6IGR0cyINCj4+Pj4+IC0gdXBk
YXRlIGRvY3VtZW50YXRpb24gd2l0aCBkb20wbGVzcyBjb25maWd1cmF0aW9uIGV4YW1wbGUNCj4+
Pj4+IC0gdXBkYXRlIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgcGFyYW0geGVuLGRvbTAtc2NpLWFn
ZW50LWlkDQo+Pj4+PiBpbnN0ZWFkIG9mIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyDQo+Pj4+
Pg0KPj4+Pj4gQ2hhbmdlcyBpbiB2NzoNCj4+Pj4+IC0gdXBkYXRlIGRvY3VtZW50YXRpb24gaW4g
c2VjdGlvbiBvZiB0aGUgeGVuX3NjbWkgY29uZmlndXJhdGlvbiB3aGljaA0KPj4+Pj4gaXMgbWF0
Y2hlZCBieSAieGVuLHNjaSIgY29tcGF0aWJsZSBpbnN0ZWFkIG9mIHRoZSBkaXJlY3QgcGF0aC4N
Cj4+Pj4+DQo+Pj4+PiBDaGFuZ2VzIGluIHY2Og0KPj4+Pj4gLSByZW1vdmUgYWxsIEhWQyBtZW50
aW9ucyBmcm9tIHRoZSBtdWx0aS1hZ2VudCBkb2MNCj4+Pj4+IC0gdXBkYXRlIHNjaS1hZ2VudC1p
ZCBwYXJhbWV0ZXIgZGVzY3JpcHRpb24gaW4gdGhlIGRvY3VtZW50YXRpb24NCj4+Pj4+IC0gYWRk
IG1pc3NpbmcgU2lnbi1vZg0KPj4+Pj4gLSBtaW5vciBmaXhlcyBhY3Jvc3MgdGhlIGRvY3VtZW50
DQo+Pj4+Pg0KPj4+Pj4gQ2hhbmdlcyBpbiB2NToNCj4+Pj4+IC0gcmV3b3JrIG11bHRpLWFnZW50
IGRyaXZlciB0byBsZWF2ZSBIb3N0IERldmljZS10cmVlIHVubW9kaWZpZWQNCj4+Pj4+DQo+Pj4+
PiAgICAuLi4vYXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdCAgICAgICAgICAgICAgICAgfCA0MDUg
KysrKysrKysrKysrKysrKysrDQo+Pj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgNDA1IGluc2VydGlv
bnMoKykNCj4+Pj4+DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZG9jcy9oeXBlcnZpc29yLWd1aWRlL2Fy
bS9maXJtd2FyZS9hcm0tc2NtaS5yc3QgYi9kb2NzL2h5cGVydmlzb3ItZ3VpZGUvYXJtL2Zpcm13
YXJlL2FybS1zY21pLnJzdA0KPj4+Pj4gaW5kZXggZDk2OThmNGU0Yi4uMjU0NTlkMjJkYyAxMDA2
NDQNCj4+Pj4+IC0tLSBhL2RvY3MvaHlwZXJ2aXNvci1ndWlkZS9hcm0vZmlybXdhcmUvYXJtLXNj
bWkucnN0DQo+Pj4+PiArKysgYi9kb2NzL2h5cGVydmlzb3ItZ3VpZGUvYXJtL2Zpcm13YXJlL2Fy
bS1zY21pLnJzdA0KPj4+Pj4gQEAgLTM2LDYgKzM2LDggQEAgVGhlIGJlbG93IHNlY3Rpb25zIGRl
c2NyaWJlIFNDTUkgc3VwcG9ydCBvcHRpb25zIGF2YWlsYWJsZSBmb3IgWGVuLg0KPj4+Pj4NCj4+
Pj4+ICAgIHwgWzFdIGBBcm0gU0NNSQ0KPj4+Pj4gICAgfCA8aHR0cHM6Ly9kZXZlbG9wZXIuYXJt
LmNvbS9kb2N1bWVudGF0aW9uL2RlbjAwNTYvbGF0ZXN0Lz5gXw0KPj4+Pj4gICAgfCBbMl0gYFN5
c3RlbSBDb250cm9sIGFuZCBNYW5hZ2VtZW50IEludGVyZmFjZSAoU0NNSSkgYmluZGluZ3MNCj4+
Pj4+ICAgIHwgPGh0dHBzOi8vd2ViLmdpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvZmlybXdhcmUvYXJtLHNjbWkueWFtbD5gXw0KPj4+Pj4gK3wgWzNdIGBHZW5lcmljIERv
bWFpbiBBY2Nlc3MgQ29udHJvbGxlcnMgYmluZGluZ3MgPGh0dHBzOi8vd2ViLmdpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9Eb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYWNjZXNzLWNvbnRyb2xsZXJzL2FjY2Vzcy1j
b250cm9sbGVycy55YW1sPmBfDQo+Pj4+PiArDQo+Pj4+Pg0KPj4+Pj4gICAgU2ltcGxlIFNDTUkg
b3ZlciBTTUMgY2FsbHMgZm9yd2FyZGluZyBkcml2ZXIgKEVMMykNCj4+Pj4+ICAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4+Pj4gQEAg
LTE4OSwzICsxOTEsNDA2IEBAIGV4Y2VwdCBleHBsaWNpdGx5IGVuYWJsaW5nIFNDTUkgd2l0aCAi
YXJtX3NjaSIgeGwuY2ZnIG9wdGlvbi4NCj4+Pj4+ICAgICAgICAtPiAgICAgICAgeGVuLHJlZyA9
IDwweDAgMHg0N2ZmMDAwMCAweDAgMHgxMDAwIDB4MCAweDIyMDAxMDAwPjsNCj4+Pj4+ICAgICAg
ICAtPiAgICAgICAgeGVuLGZvcmNlLWFzc2lnbi13aXRob3V0LWlvbW11Ow0KPj4+Pj4gICAgICAg
ICAgfTsNCj4+Pj4+ICsNCj4+Pj4+ICtTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIgKEVMMykN
Cj4+Pj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+PiArDQo+
Pj4+PiArVGhlIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBlbmFibGVzIHN1cHBvcnQgZm9y
IEFSTSBFTDMgVHJ1c3RlZCBGaXJtd2FyZS1BIChURi1BKSB3aGljaA0KPj4+Pj4gK3Byb3ZpZGVz
IFNDTUkgaW50ZXJmYWNlIHdpdGggbXVsdGktYWdlbnQgc3VwcG9ydCwgYXMgc2hvd24gYmVsb3cu
DQo+Pj4+PiArDQo+Pj4+PiArOjoNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4+PiArICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPj4+Pj4gKyAgICAgIHwgRUwzIFRGLUEg
U0NNSSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+Pj4+ICsgICAgICArLS0tLS0tLSst
LSstLS0tLS0tKy0tKy0tLS0tLS0rLS0rLS0tLS0tLSsrDQo+Pj4+PiArICAgICAgfHNobWVtMSB8
ICB8c2htZW0wIHwgIHxzaG1lbTIgfCAgfHNobWVtWCB8DQo+Pj4+PiArICAgICAgKy0tLS0tKy0r
ICArLS0tKy0tLSsgICstLSstLS0tKyAgKy0tLSstLS0rDQo+Pj4+PiArICAgIHNtYy1pZDEgfCAg
ICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCj4+Pj4+ICsgICAgYWdlbnQxICB8ICAgICAg
ICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4+Pj4gKyAgICAgICstLS0tLXYtLS0tLS0tLSst
LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCj4+Pj4+ICsgICAgICB8ICAgICAgICAgICAgICB8
ICAgICAgICAgfCAgICAgICAgICAgfCAgICB8DQo+Pj4+IFhlbiwgSSBiZWxpZXZlPw0KPj4+IEl0
IGlzLiBCdXQgaW4gdGVybXMgb2YgU0NNSSB0aGlzIGlzIHByaXZpbGVnZWQgYWdlbnQuIEhhdmVu
J3QgbWVudGlvbmVkDQo+Pj4gWGVuIGhlcmUgZm9yIHRoZSBzYWtlIG9mDQo+Pj4NCj4+PiBkaWFn
cmFtIHNpbXBsaWNpdHkgKGp1c3QgZG9uJ3Qgc2VlIGEgZ29vZCBwbGFjZSB3aHJlIEkgY2FuIHBs
YWNlICJYZW4iDQo+Pj4gaW4gdGhpcyBkaWFncmFtLiBUaGUgbWFpbiBpZGVhIGlzDQo+PiBJIHRo
aW5rIHlvdSBjYW4gcGxhY2UgIlhlbiIgaW4gdGhlIGNlbnRyZS4gVGhlcmUgaXMgZnJlZSBzcGFj
ZSBmb3IgaXQgZml0Lg0KPj4gSnVzdCBhZGQgYSBuZXcgbGluZSwgc28gaXQgaXMgbmljZSBhbmQg
Y2VudGVyZWQsIGxpa2UgdGhpczoNCj4+DQo+PiArICAgICAgfCAgICAgICAgICAgICAgfCAgIFhl
biAgIHwgICAgICAgICAgIHwgICAgfA0KPj4NCj4+PiB0aGF0IGRyaXZlciBsZWF2ZXMgc2NtaSBw
cml2aWxlZ2VkIGFnZW50IGZvciBpdHNlbGYgKGFnZW50MSBpbiBvdXIgY2FzZSkNCj4+PiByZWdh
cmRsZXNzIHdoZXJlIHRoaXMgZHJpdmVyIHJ1bnMuDQo+Pj4NCj4+PiBUaGlzIGZvcm1hdCB3YXMg
dGFrZW4gc2luY2UgZHJpdmVyIGl0c2VsZiBpcyBhdmFyZSBhYm91dCB0aGUgZG9tYWlucyBhbmQN
Cj4+PiBjaGFubmVscy4NCj4+Pg0KPj4+Pj4gKyAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAg
ICB8ICAgICAgICAgICB8ICAgIHwNCj4+Pj4+ICsgICAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tKy0tLS0tLS0tLS0tKy0tLS0rDQo+Pj4+PiArICAgICAgICAgICAgIHNtYy1pZDAgfCAgc21j
LWlkMnwgICAgc21jLWlkWHwNCj4+Pj4+ICsgICAgICAgICAgICAgYWdlbnQwICB8ICBhZ2VudDIg
fCAgICBhZ2VudFggfA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAg
ICAgICAgICB8DQo+Pj4+PiArICAgICAgICAgICAgICAgICstLS0tdi0tLSsgICstLXYtLS0tLSsg
ICstLXYtLS0tLSsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgfCAgICAgICAgfCAgfCAgICAgICAg
fCAgfCAgICAgICAgfA0KPj4+Pj4gKyAgICAgICAgICAgICAgICB8IERvbTAgICB8ICB8IERvbTEg
ICB8ICB8IERvbVggICB8DQo+Pj4+PiArICAgICAgICAgICAgICAgIHwgICAgICAgIHwgIHwgICAg
ICAgIHwgIHwgICAgICAgIHwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgfCAgICAgICAgfCAgfCAg
ICAgICAgfCAgfCAgICAgICAgfA0KPj4+Pj4gKyAgICAgICAgICAgICAgICArLS0tLS0tLS0rICAr
LS0tLS0tLS0rICArLS0tLS0tLS0rDQo+Pj4+PiArDQo+Pj4+PiArVGhlIEVMMyBTQ01JIG11bHRp
LWFnZW50IGZpcm13YXJlIGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgU0NNSSBTTUMgc2hhcmVkLW1l
bW9yeSB0cmFuc3BvcnQNCj4+Pj4+ICtmb3IgZXZlcnkgQWdlbnQgaW4gdGhlIHN5c3RlbS4gVGhl
IFNDTUkgQWdlbnQgdHJhbnNwb3J0IGNoYW5uZWwgZGVmaW5lZCBieSBwYWlyOg0KPj4+Pj4gKw0K
Pj4+Pj4gKy0gc21jLWlkOiBTTUMgZnVuY3Rpb24gaWQgdXNlZCBmb3IgRG9vcmJlbGwNCj4+Pj4+
ICstIHNobWVtOiBzaGFyZWQgbWVtb3J5IGZvciBtZXNzYWdlcyB0cmFuc2ZlciwgKipYZW4gcGFn
ZSBhbGlnbmVkKiouDQo+Pj4+PiArICBTaGFyZWQgbWVtb3J5IGlzIG1hcHBlZCB3aXRoIHRoZSBm
b2xsb3dpbmcgZmxhZ3M6IE1UX0RFVklDRV9uR25SRSBhbmQgX1BBR0VfREVWSUNFLCBpbmRpY2F0
aW5nIHRoYXQgdGhpcw0KPj4+PiBEbyB3ZSBoYXZlIGFueSBsaW5lIGxlbmd0aCBsaW1pdGF0aW9u
IGZvciAucnN0IGZpbGVzPyBUaGlzIG9uZSBpcyAxMTQNCj4+Pj4gY2hhcmFjdGVycyBsb25nLg0K
Pj4+IHJzdGNoZWNrIGdpdmVzIDAgZXJyb3JzLCBidXQgSSBjYW4gcmVmb3JtYXQgaXQgd2l0aCBt
YXhsaW5lIDEyMC4NCj4+Pj4+ICsgIG1lbW9yeSBpcyBtYXBwZWQgYXMgZGV2aWNlIG1lbW9yeS4N
Cj4+Pj4+ICsNCj4+Pj4+ICtUaGUgZm9sbG93aW5nIFNDTUkgQWdlbnRzIGFyZSBleHBlY3RlZCB0
byBiZSBkZWZpbmVkIGJ5IFNDTUkgRlcgdG8gZW5hYmxlIFNDTUkgbXVsdGktYWdlbnQgZnVuY3Rp
b25hbGl0eQ0KPj4+Pj4gK3VuZGVyIFhlbjoNCj4+Pj4+ICstDQo+Pj4+PiArLSBYZW4gbWFuYWdl
bWVudCBhZ2VudDogdHJ1c3RlZCBhZ2VudHMgdGhhdCBhY2Nlc3NlcyB0byB0aGUgQmFzZSBQcm90
b2NvbCBjb21tYW5kcyB0byBjb25maWd1cmUNCj4+Pj4gInRydXN0ZWQgYWdlbnQiLCBub3QgImFn
ZW50cyINCj4+Pj4NCj4+Pj4gYWxzbywgInRoYXQgYWNjZXNzZXMgdGhlIEJhc2UgUHJvdG9jb2wg
Y29tbWFuZHMgdG8gY29uZmlndXJlLi4uIiBvciAidGhhdCBoYXMNCj4+Pj4gYWNjZXNzIHRvIHRo
ZSBCYXNlIFByb3RvY29sIGNvbW1hbmRzIHRvIGNvbmZpZ3VyZS4uLiINCj4+Pj4NCj4+Pj4+ICsg
IGFnZW50IHNwZWNpZmljIHBlcm1pc3Npb25zDQo+Pj4+ICJhZ2VudC1zcGVjaWZpYyINCj4+Pj4N
Cj4+Pj4+ICstIE9TUE0gVk0gYWdlbnRzOiBub24tdHJ1c3RlZCBhZ2VudCwgb25lIGZvciBlYWNo
IEd1ZXN0IGRvbWFpbiB3aGljaCBpcyAgYWxsb3dlZCBkaXJlY3QgSFcgYWNjZXNzLg0KPj4+PiAi
bm9uLXRydXN0ZWQgYWdlbnRzIi4gQWxzbywgZG91YmxlIHNwYWNlIGJldHdlZW4gImlzIiBhbmQg
ImFsbG93ZWQiDQo+Pj4+DQo+Pj4+PiArICBBdCBsZWFzdCBvbmUgT1NQTSBWTSBhZ2VudCBoYXMg
dG8gYmUgcHJvdmlkZWQgYnkgRlcgaWYgSFcgaXMgaGFuZGxlZCBvbmx5IGJ5IERvbTAgb3IgRHJp
dmVyIERvbWFpbi4NCj4+Pj4gIkhhcmR3YXJlIERvbWFpbiIsIHByb2JhYmx5DQo+Pj4+DQo+Pj4+
PiArDQo+Pj4+PiArVGhlIEVMMyBTQ01JIEZXIGlzIGV4cGVjdGVkIHRvIGltcGxlbWVudCBmb2xs
b3dpbmcgQmFzZSBwcm90b2NvbCBtZXNzYWdlczoNCj4+Pj4+ICsNCj4+Pj4+ICstIEJBU0VfRElT
Q09WRVJfQUdFTlQgKHJlcXVpcmVkIGZvciBYZW47IHJlcXVpcmVkIGZvciBzZWNvbmRhcnkgYWdl
bnRzIHdpdGhvdXQgYGByZWdgYCkNCj4+Pj4+ICstIEJBU0VfUkVTRVRfQUdFTlRfQ09ORklHVVJB
VElPTiAob3B0aW9uYWwpDQo+Pj4+IEhvdyBYZW4gY2FuIGd1YXJhbnRlZSB0aGF0IFNDTUkgc3Rh
dGUgaXMgc2FuZSwgaWYgaXQgY2FuJ3QgcmVzZXQgYWdlbnQNCj4+Pj4gZHVyaW5nIGRvbWFpbiBk
ZXN0cnVjdGlvbj8NCj4+PiBJZiB0aGlzIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIGJ5IHRo
ZSBTQ1AgZmlybXdhcmUsIGJ1dCB0aGUgZmlybXdhcmUNCj4+PiBwcm92aWRlcyBhZ2VudF9udW0g
PiAxLCB0aGVuIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgU0NQDQo+Pj4gZmlybXdh
cmUuIFdlIG1hZGUgdGhpcyBvcHRpb25hbCB0byBjb3ZlciBleGFjdGx5IHRoaXMgY2FzZSDigJQg
d2hlcmUgd2UNCj4+PiBkb24ndCBoYXZlIFJFU0VUX0FHRU5UX0NPTkZJR1VSQVRJT04gYnV0IHN0
aWxsIGhhdmUgYWdlbnRfbnVtID4gMSwgd2hpY2gNCj4+PiBjb3VsZCBiZSBhcHBsaWNhYmxlIHRv
IGEgZG9tMGxlc3MgY29uZmlndXJhdGlvbiAoZm9yIGV4YW1wbGUpIGFuZCBzaG91bGQNCj4+PiBi
ZSB1c2VkIGNhcmVmdWxseSBieSBkZXZlbG9wZXJzLg0KPj4gT2theSwgSSBzZWUuLi4gT24gb25l
IGhhbmQgaXQgaXMgbm90IHdvcnNlIHRoYW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YNCj4+IGFmZmFp
cnMsIHdoZW4gd2UganVzdCBkZXN0cm95aW5nIGEgZG9tYWluIGFuZCBsZWF2aW5nIGl0cyBkZXZp
Y2VzIGluDQo+PiB1bmRldGVybWluZWQgc3RhdGUuIE9uIG90aGVyIGhhbmQsIFNDTUkgaXMgbWVh
bnQgdG8gcmVzb2x2ZSB0aGlzDQo+PiBwYXJ0aWN1bGFyIHByb2JsZW0sIHNvIGl0IHdpbGwgYmUg
c3RyYW5nZSB0byBoYXZlIFNDTUkgYnV0IG5vdCB0byBoYXZlDQo+PiB0aGlzIHBhcnRpY3VsYXIg
ZmVhdHVyZS4gTWF5YmUgaXQgaXMgd29ydGggdG8gd3JpdGUgYSBodWdlIHdhcm5pbmcgaWYgYQ0K
Pj4gU0NNSS1lbmFibGVkIGRvbWFpbiBpcyBkZXN0cm95ZWQsIGJ1dCB3ZSBjYW4ndCBjYWxsIFJF
U0VUIGZvciBpdD8NCj4+DQo+PiBMb29rcyBsaWtlIEkgb3Zlcmxvb2tlZCB0aGlzIGNhc2Ugd2hl
biByZXZpZXdlZCAieGVuL2FybTogc2NtaToNCj4+ICAgaW50cm9kdWNlIFNDSSBTQ01JIFNNQyBt
dWx0aS1hZ2VudCBkcml2ZXIiDQo+IHRoaXMgY291bGQgYmUgZG9uZS4gV2lsbCBhZGQgaHVnZSB3
YXJuaW5nLg0KPj4+DQo+Pj4+PiArLSBCQVNFX1NFVF9ERVZJQ0VfUEVSTUlTU0lPTlMgKG9wdGlv
bmFsKQ0KPj4+PiBJZiB0aGlzIGlzIG9wdGlvbmFsLCBkb2VzIGl0IG1lYW4gdGhhdCBlYWNoIGFn
ZW50IHdpbGwgaGF2ZSBhY2Nlc3MgdG8NCj4+Pj4gYWxsIGRldmljZXMgaW4gdGhlIHN5c3RlbT8N
Cj4+PiBQcm9iYWJseS4gQnV0IHRoYXQgZG9lc24ndCBtZWFuIGl0J3MgdGhlIG9ubHkgY2FzZS4g
Rm9yIGV4YW1wbGUsIGENCj4+PiByZXNvdXJjZSBjb3VsZCBiZSBhY3F1aXJlZCBvbiBmaXJzdCBh
Y2Nlc3MgKG5vdCBhIHJlYWwtd29ybGQgY2FzZSwgYnV0DQo+Pj4gaXQncyBwb3NzaWJsZSkuIFNv
IHdlIGNhbid0IG1ha2UgdGhpcyBkZWNpc2lvbiBvbiBiZWhhbGYgb2YgdGhlIFNDUA0KPj4+IGZp
cm13YXJlLg0KPj4gQWdhaW4sIHRoaXMgbWlnaHQgYmUgbm90IHdoYXQgdXNlciB3YW50cyBvciBl
eHBlY3RzLiBBbmQgaXQgaXMgZXZlbg0KPj4gd29yc2UgdGhlbiB0aGUgcHJldmlvdXMgY2FzZSwg
YmVjYXVzZSB3aXRob3V0IFNDTUkgSSBhbSBzdXJlIHRoYXQgaWYgSQ0KPj4gZGlkbid0IGdhdmUg
YSBkb21haW4gYWNjZXNzIHRvIGEgcGVyaXBoZXJhbCwgdGhlbiBpdCBjYW4ndCBhZmZlY3RzIGl0
cw0KPj4gc3RhdGUuIElmIHlvdSByZWFsbHkgd2FudCB0byBzdXBwb3J0IHN1Y2ggY2FzZSwgdGhl
biB5b3Ugc2hvdWxkIGVuc3VyZQ0KPj4gdGhhdCBvbmx5IEhXRE9NIGNhbiBhY2Nlc3MgU0NNSSBv
ZiBTQ1AgZG9lcyBub3Qgc3VwcG9ydA0KPj4gU0VUX0RFVklDRV9QRVJNSVNTSU9OUy4NCj4+DQo+
DQo+IFdoZW4gb25seSB0aGUgSFdET00gaGFzIGFjY2VzcyB0byB0aGUgU0NNSSBvZiB0aGUgU0NQ
IHdpdGhvdXQNCj4gU0VUX0RFVklDRV9QRVJNSVNTSU9OUyBzdXBwb3J0LCB0aGVyZSBpcyBubyBw
b2ludCBpbiB1c2luZw0KPiBzY21pLW11bHRpYWdlbnQgYXQgYWxsLiBJbiB0aGlzIGNhc2UsIHNj
bWktc2luZ2xlLWFnZW50ICh3aGljaCBoYXMNCj4gYWxyZWFkeSBiZWVuIG1lcmdlZCkgc2hvdWxk
IGJlIHVzZWQgaW5zdGVhZC4NCj4NCj4gU28gSSB0aGluayB3ZSBzaG91bGQgcHJvYmFibHkgbWFr
ZSBTRVRfREVWSUNFX1BFUk1JU1NJT05TIHN1cHBvcnQNCj4gbWFuZGF0b3J5IGluIHRoaXMgY2Fz
ZSBhbmQgZmFpbCBpZiBpdCBpcyBub3Qgc3VwcG9ydGVkLiBXZSBzaG91bGQgYWxzbw0KPiBtZW50
aW9uIHRoaXMgaW4gdGhlIGRvY3VtZW50YXRpb24uDQo+DQo+IFdoYXQgZG8geW91IHRoaW5rPw0K
DQpXZWxsLCB0aGlzIGNlcnRhaW5seSBpcyBhbiBvcHRpb24uIEluIG90aGVyIHdvcmRzLCBJIGFt
IGZpbmUgd2l0aCB0aGF0Lg0KDQo+PiBbLi4uXQ0KPj4NCj4+DQo+Pj4+PiArQ29uZmlndXJlIFND
TUkgZm9yIERvbTANCj4+Pj4gIkhvdyB0byBjb25maWd1cmUuLi4iIG9yICJDb25maWd1cmluZy4u
LiINCj4+Pj4NCj4+Pj4+ICteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXg0KPj4+Pj4gK1NldCB0aGUg
RG9tMCBTQ01JIGFnZW50IElEIGluIHRoZSBkZXZpY2UgdHJlZSB1c2luZyB0aGUgWGVuIFNDTUkg
Y29udGFpbmVyIHVuZGVyIGBgL2Nob3NlbmBgLg0KPj4+Pj4gK0FkZCBgYHhlbixkb20wLXNjaS1h
Z2VudC1pZGBgIHRvIHRoZSBgYHhlbixzY2lgYCBub2RlLiBJZiB0aGUgcHJvcGVydHkgaXMgYWJz
ZW50LCBTQ01JIHN0YXlzDQo+Pj4+PiArZGlzYWJsZWQgZm9yIERvbTAgYW5kIHRoZSBTQ01JIG5v
ZGVzIGFyZSByZW1vdmVkIGZyb20gRG9tMCBEVC4NCj4+Pj4+ICsNCj4+Pj4+ICsuLiBjb2RlLWJs
b2NrOjogZHRzDQo+Pj4+PiArDQo+Pj4+PiArICBjaG9zZW4gew0KPj4+Pj4gKyAgICB4ZW4gew0K
Pj4+Pj4gKyAgICAgIHJhbmdlczsNCj4+Pj4+ICsgICAgICB4ZW5fc2NtaV9jb25maWcgew0KPj4+
Pj4gKyAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4sc2NpIjsNCj4+Pj4+ICsgICAgICAgIHhlbixk
b20wLXNjaS1hZ2VudC1pZCA9IDwwPjsgIC8qIERvbTAgYWdlbnQgSUQgKi8NCj4+Pj4+ICsgICAg
ICAgIC8qIGFnZW50cywgc2hhcmVkIG1lbW9yeSBhbmQgc2NtaV94ZW4gYXMgc2hvd24gYWJvdmUg
Ki8NCj4+Pj4+ICsgICAgICB9Ow0KPj4+Pj4gKyAgICB9Ow0KPj4+Pj4gKyAgfTsNCj4+Pj4+ICsN
Cj4+Pj4+ICtUaGUgSG9zdCBEVCBgYC9maXJtd2FyZS9zY21pYGAgbm9kZSBpcyBjb3BpZWQgdG8g
dGhlIERvbTAgRFQgdW5tb2RpZmllZC4gSG93ZXZlciwgZm9yIERvbTAgU0NNSQ0KPj4+Pj4gK2Nv
bmZpZ3VyYXRpb24sIFhlbiByZWxpZXMgb24gdGhlIGBgYWdlbnRzYGAgY2hpbGQgYW5kIHRoZSBg
YHhlbixkb20wLXNjaS1hZ2VudC1pZGBgDQo+Pj4+ICJjaGlsZCBub2RlIg0KPj4+Pg0KPj4+Pj4g
K3Byb3BlcnR5IGZyb20gdGhlIGBgeGVuLHNjaWBgIGNvbnRhaW5lciB1bmRlciBgYC9jaG9zZW5g
YC4gSWYgdGhlIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlzDQo+Pj4+PiArbWlzc2luZyBvciBk
aXNhYmxlZCwgb3IgaWYgYGB4ZW4sZG9tMC1zY2ktYWdlbnQtaWRgYCBpcyBub3QgcHJvdmlkZWQs
IHRoZSBEb20wIFNDTUkgYWdlbnQgd2lsbCBub3QNCj4+Pj4+ICtiZSBjb25maWd1cmVkLg0KPj4+
Pj4gKw0KPj4+Pj4gKy4uIG5vdGU6Og0KPj4+Pj4gKw0KPj4+Pj4gKyAgVGhlIGBgeGVuLGRvbTAt
c2NpLWFnZW50LWlkYGAgdmFsdWUgbXVzdCBtYXRjaCB0aGUgYGBmdW5jX2lkYGAgYW5kIGBgc2ht
ZW1gYCBwYWlyaW5nIHByb3ZpZGVkIGJ5DQo+Pj4+PiArICB0aGUgRUwzIGZpcm13YXJlIGZvciBE
b20wIChmb3IgZXhhbXBsZSBpbiB0aGUgYGAvZmlybXdhcmUvc2NtaWBgIG5vZGUpLg0KPj4+PiBX
ZWxsLCBtYXliZSBiZXR0ZXIgdG8gdXNlIHBoYW5kbGUgdGhlbj8gTGlrZQ0KPj4+Pg0KPj4+PiB4
ZW4sZG9tMC1zY2ktYWdlbnQtaWQ9PCZhZ2VudEAwPg0KPj4+IEl0IGlzIHVzZWQgdG8gc2V0IGFy
bV9zY2lfYWdlbnRfaWQgaW4gdGhlIGNvbmZpZyBhbmQgd29ya3MgdGhlIHNhbWUgd2F5DQo+Pj4g
YXMgbGlieGwsIHNvIHdlIG1haW50YWluIGNvbnNpc3RlbnQgYXBwcm9hY2hlcyBmb3Igc2V0dGlu
ZyBkb21faWQgaW4NCj4+PiBib3RoIGxpYnhsIGFuZCB0aGUgZGV2aWNlLXRyZWUuDQo+Pj4NCj4+
PiBBZGRpdGlvbmFsbHksIHRoZSBhZ2VudF9pZCBpcyB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBz
Y21pX2NoYW5uZWwuDQo+Pj4NCj4+PiBJIGRvbid0IHNlZSBhbnkgcGFydGljdWxhciBiZW5lZml0
cyB0byB1c2luZyBhIHBoYW5kbGUgaGVyZSwgYnV0IHBlcmhhcHMNCj4+PiBJJ3ZlIG1pc3NlZCBz
b21ldGhpbmcuIENvdWxkIHlvdSBjbGFyaWZ5Pw0KPj4gSGF2aW5nIGxlc3Mgcm9vbSBmb3IgdXNl
ciBlcnJvci4gSGF2aW5nIHBoYW5kbGUsIHlvdSBjYW4gZXh0cmFjdCBib3RoDQo+PiBmdW5jX2lk
IGFuZCBzaG1lbSBmcm9tIGl0LiBCdXQsIHRoaW5raW5nIG9mIGl0LCB5b3UgY2FuIGV4dHJhY3Qg
c2htZW0NCj4+IGp1c3QgYnkgbG9va2luZyBhdCBmdW5jX2lkLi4uIE9uIG90aGVyIGhhbmQsIGl0
IGlzIGJldHRlciB0byBtb3ZlIGNoZWNrcw0KPj4gdG8gdGhlIGNvbXBpbGF0aW9uIHRpbWUuICdk
dGMnIHdpbGwgdGVsbCB5b3UgaWYgaXQgY2FuJ3QgZmluZCBhIHBoYW5kbGUsDQo+PiBidXQgaXQg
d2lsbCBub3QgdGVsbCB5b3UgaWYgbnVtZXJpYyBhZ2VudF9pZCBkb2VzIG5vdCBtYXRjaCBhbnkg
ZW50cnkgaW4NCj4+IHRoYXQgYWdlbnRzIGFycmF5Lg0KPj4NCj4+IFsuLi5dDQo+IE1vdmluZyB0
aGUgY2hlY2tzIHRvICdkdGMnIGNvbXBpbGF0aW9uIHRpbWUgc291bmRzIHJlYXNvbmFibGUuDQo+
DQo+IEkgY2FuIHJlb3JnYW5pemUgdGhpcyBpbiB0aGUgZm9sbG93aW5nIHdheToNCj4gMSkgTWFr
ZSBpdCBsb29rIGxpa2U6DQo+ICAgIHhlbixkb20wLXNjaS1hZ2VudCA9IDwmYWdlbnRAMD47DQo+
DQo+IDIpIEZvciBkb20wbGVzcyBjb25maWd1cmF0aW9uOg0KPiAgICBjaGFuZ2U6ICB4ZW4sc2Np
LWFnZW50LWlkID0gPDI+Ow0KPiAgICB0byBsb29rIGxpa2UgeGVuLHNjaS1hZ2VudCA9IDwmYWdl
bnRAWD47DQo+DQo+IDMpIGZvciB4ZW4tc2NtaS1hZ2VudCBub2RlIGFkZCB4ZW4sc2NpLWFnZW50
LWlkIG9wdGlvbmFsIHByb3BlcnR5Lg0KPg0KPiBEb2VzIHRoaXMgbWF0Y2ggd2hhdCB5b3UgaGFk
IGluIG1pbmQ/DQoNClllcy4NCg0KSnVzdCBhIHNtYWxsIG5vdGU6IGl0IHdpbGwgbm90IHdvcmsg
ZXhhY3RseSBsaWtlIHRoYXQsIGJlY2F1c2UgYWdlbnRAeA0KaXMgYSBub2RlIG5hbWUsIG5vdCBh
IG5vZGUgbGFiZWwuIFlvdSdsbCBlbmNvdW50ZXIgYW4gZXJyb3IgaWYgeW91J2xsIHRyeQ0KdG8g
Y29tcGlsZSBkZXZpY2UgdHJlZSB3aXRoIHRoaXMgZXhhY3QgY29kZS4NCg0KWy4uLl0NCg0KLS0N
CldCUiwgVm9sb2R5bXlyDQo=


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 00:08:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 00:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473030.1680739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOl2A-0008NO-RB; Thu, 05 Nov 2026 00:08:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473030.1680739; Thu, 05 Nov 2026 00:08:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOl2A-0008NH-Nl; Thu, 05 Nov 2026 00:08:50 +0000
Received: by outflank-mailman (input) for mailman id 1473030;
 Thu, 05 Nov 2026 00:07:27 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kavi@edera.dev>) id 1xOl0p-0008Gs-8X
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 00:07:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOl0o-00DrPP-Ll
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:07:26 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kavi@edera.dev>)
 id 6aebc852-bab6-0a2a0a5309dd-0a2a4502ce68-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:07:26 +0100
Received: from [209.85.160.177] (helo=mail-qt1-f177.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <kavi@edera.dev>)
 id 6aebc8bd-6ca4-0a2a45020019-d155a0b1b575-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:07:26 +0100
Received: by mail-qt1-f177.google.com with SMTP id
 d75a77b69052e-5495d549924so12467761cf.1
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 16:07:26 -0800 (PST)
Received: from localhost.localdomain
 ([2600:4040:2e7a:3100:d9e8:a7bf:8c30:7336])
 by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-91e7dfdfb5fsm32786346d6.16.2026.11.04.16.07.24
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Wed, 04 Nov 2026 16:07:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793837245; x=1794442045; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=XCpW/b5tui0bRd/i8QmB/FeEdN2UMNiMD2TH2Q2ymh4=;
        b=H89zCo+PfIWoSpchAgRgJFHbP/kNUIT9wTFwmS9sIrP3+T7OVJ4DnYkMDPQskkzzFW
         yUIcgtQatpKmrYAtqfTZJJrf/JLmzY6uwnxD6Il+kfnoZzELmH5u/2n4t/jYfqbGgqnT
         g6W3e1Hl/GZhgFMOrcQLFOArF0qN9xWv+8lTriH6to3hCOoZ8ES1eMgp7W6mQTCRmJaV
         ocnc6HJCi1Pqxro+7lv11TXDVaduu88sfaa6mTPSy8lgUbdipLZBpX9fBEcyHfFuXQiC
         pClcdUtRUApvYLTmJfc0eNYNjSWX6uVjK6ZtBqCaA7MH+0G242a8Qb+l834ExrH2xLDk
         WZVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793837245; x=1794442045;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=XCpW/b5tui0bRd/i8QmB/FeEdN2UMNiMD2TH2Q2ymh4=;
        b=ygl14wSrPN4MjPButU0AtYlgi+0ZxIf4oBn8i/yMDYjidt2Ne2t+Anmk4xP7F4/eII
         ROVpUQZGLVfH/BUXNJqh4tD+wefpQNAZFqv+c2U8xMiY6Bf4eKIknVw95wm5hW5Hyl0w
         Ue1/2Z11XGBs51u5rALnNUR0jCnbAoC/FGNydDW7fRQk85m4Ei5NqWZNj5YkYjoHZejx
         TedbFda5G0XBmp2tsvdihK9iC7SdaVipeqkyvMl1T/ku+gNZLx1hsZ7unUWMUp6VXpAb
         iKjxjYbQIhagfI5h2FApAAOpfk6SFfBalKqSbvnarVvlNn0+dnsnGGQrgmBepcxm+2Cd
         Rsfg==
X-Forwarded-Encrypted: i=1; AKwUvBxOfhDzEIZvd6llTLAqWq8fZYHlFcuoo99s0xlGyAOxVpvN9gG2IcB4fc5/WspU+vgrJxB2zMX96mI=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+qC2sR7pPqdDiI+tebJIX4PCeMBRlEjG3cAUT8nHKnkMf859XT
	oENYRHWOEvVDEObcmq7qv5C99i/YOa4k0LHhTnJ8mLJZNsyJIIl95RoaISyRMtNIhi8=
X-Gm-Gg: AYBFou0tFtk+HEnRULX47T9jO7DImF63ozhu8Sh655dKFqddAlRSROoj83yMlWtD/6X
	U8x9PdYqG2eOID4CAitatN/dB1+g4h5uho+qhmJpK6cntEQb9yleWq2RDimHu45Ld+yI1fiORyO
	vtCJq5dKA2L9o8ZYdBPjMEx+T7ajFCZ9XHfX9hwXN14akdCFaMA/EIlKdlE910O8ofMfMalCW1O
	oTyZz782tNiMCtFUL01hd16SbZLwrUI7tOFt719hpuTsNXcFIvnwH54DZVJxuXROEcWzTv8BxcX
	pAYHHyEy7vcFj32/TLmS0b4is/Tqzqz5+Lm8Q/IUoRfBj5FpzresoWxz/JVCx6yM7AlhO/xSwTg
	rDwIG7L5wgBNsjMp+GXWTLevSwqEjeKN7pPB40KLb7VZlUrXRWhNaKFinygcCAlwnjkFfm/TNaj
	mwXDnYz6oEbrZeJcaoh0oYION5A3W0D9Y/8/s+ApLvMgwcKT4/vgrMJ1BN03EmE1rv7adXhq7Yz
	EYXiJ4ZkA+n+HBz2hvikMUYdzJzeulpQ+alIe+tvfVhDhq9MGiNPBJyviNh5CvpATQaWrgmaPWa
	yzU0tUeq9Jac4GVKevDM56+KfWpUORwAXHIKJt3451BbjD/hCCCjMsgmbpqUJIIjKufzMxA5gnf
	26upmy2YM
X-Received: by 2002:a05:622a:1f90:b0:535:80b:9911 with SMTP id d75a77b69052e-542b658d18amr268931571cf.24.1793837244780;
        Wed, 04 Nov 2026 16:07:24 -0800 (PST)
From: Kavitha Daula <kavi@edera.dev>
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	Kavitha Daula <kavi@edera.dev>
Subject: [PATCH] xen/grant-table: annotate on-stack work in gnttab_unmap_refs_sync()
Date: Wed,  4 Nov 2026 19:07:16 -0500
Message-ID: <20261105000716.83314-1-kavi@edera.dev>
X-Mailer: git-send-email 2.50.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1793837246-311CF2AC-4E303F2C/0/0
X-purgate-type: clean
X-purgate-size: 2911

Both callers of gnttab_unmap_refs_sync(), free_persistent_gnts() and
xen_blkbk_unmap_purged_grants() in blkback, keep their struct
gntab_unmap_queue_data on the stack. gnttab_unmap_refs_async() sets up
the delayed work inside it with INIT_DELAYED_WORK(), so with
CONFIG_DEBUG_OBJECTS_WORK and CONFIG_DEBUG_OBJECTS_TIMERS every
persistent grant teardown warns twice, once for the work and once for
its timer:

  [  104.366085] ODEBUG: object ffffc9004020fad8 is on stack ffffc9004020c000, but NOT annotated.
  [  104.371551] WARNING: CPU: 1 PID: 48 at lib/debugobjects.c:672 lookup_object_or_alloc.part.0+0x12b/0x1f0
  Call Trace:
   <TASK>
   __debug_object_init+0xfe/0x1a0
   debug_object_init+0x38/0x50
   __init_work+0x28/0x30
   gnttab_unmap_refs_async+0x18/0xa0
   gnttab_unmap_refs_sync+0x61/0x90
   free_persistent_gnts+0x179/0x280
   xen_blkbk_free_caches+0x16/0x30
   xen_blkif_disconnect+0xfa/0x2d0
   frontend_changed+0x90/0x680
   xenbus_otherend_changed+0x80/0xb0
   frontend_changed+0x14/0x20
   xenwatch_thread+0x96/0x1a0
   kthread+0x11d/0x250
   ret_from_fork+0x29f/0x2d0
   ret_from_fork_asm+0x1a/0x30
   </TASK>

gnttab_unmap_refs_sync() waits for the unmap to complete before it
returns, so the work never outlives the caller's frame. Initialise it
with INIT_DELAYED_WORK_ONSTACK() when the item is on the stack and
destroy it before returning. The function is exported, so an item that
is not on the stack keeps INIT_DELAYED_WORK().

Fixes: b44166cd46e2 ("xen/grant: introduce func gnttab_unmap_refs_sync()")
Signed-off-by: Kavitha Daula <kavi@edera.dev>
---
 drivers/xen/grant-table.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index f75b5cc..5a85908 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -38,6 +38,7 @@
 #include <linux/sched.h>
 #include <linux/mm.h>
 #include <linux/slab.h>
+#include <linux/sched/task_stack.h>
 #include <linux/vmalloc.h>
 #include <linux/uaccess.h>
 #include <linux/io.h>
@@ -1360,12 +1361,21 @@ static void unmap_refs_callback(int result,
 int gnttab_unmap_refs_sync(struct gntab_unmap_queue_data *item)
 {
 	struct unmap_refs_callback_data data;
+	bool on_stack = object_is_on_stack(item);
 
 	init_completion(&data.completion);
 	item->data = &data;
 	item->done = &unmap_refs_callback;
-	gnttab_unmap_refs_async(item);
+	/* blkback keeps @item, and so its retry work, on the stack. */
+	if (on_stack)
+		INIT_DELAYED_WORK_ONSTACK(&item->gnttab_work, gnttab_unmap_work);
+	else
+		INIT_DELAYED_WORK(&item->gnttab_work, gnttab_unmap_work);
+	item->age = 0;
+	__gnttab_unmap_refs_async(item);
 	wait_for_completion(&data.completion);
+	if (on_stack)
+		destroy_delayed_work_on_stack(&item->gnttab_work);
 
 	return data.result;
 }
-- 
2.50.1 (Apple Git-155)



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 00:09:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 00:09:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473016.1680748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOl2U-0000DT-1m; Thu, 05 Nov 2026 00:09:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473016.1680748; Thu, 05 Nov 2026 00:09:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOl2T-0000DM-VF; Thu, 05 Nov 2026 00:09:09 +0000
Received: by outflank-mailman (input) for mailman id 1473016;
 Thu, 05 Nov 2026 00:01:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kavithadaula@kavithas-macbook-pro.local>)
 id 1xOkvU-0008B1-Gd
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 00:01:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOkvT-00FtPN-F6
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:01:55 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kavithadaula@kavithas-macbook-pro.local>)
 id 6aebc762-2eae-0a2a0a5409dd-0a2a450c9428-10
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:01:55 +0100
Received: from [72.66.120.178] (helo=Kavithas-MacBook-Pro.local)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTP (eXpurgate 4.57.1)
 (envelope-from <kavithadaula@kavithas-macbook-pro.local>)
 id 6aebc772-f479-0a2a450c0019-484278b2cd41-1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:01:55 +0100
Received: by Kavithas-MacBook-Pro.local (Postfix, from userid 501)
 id 4A07A1A585A2; Wed,  4 Nov 2026 19:01:54 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Kavitha Daula <kavithadaula@Kavithas-MacBook-Pro.local>
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	Kavitha Daula <kavi@edera.dev>
Subject: [PATCH] xen/grant-table: annotate on-stack work in gnttab_unmap_refs_sync()
Date: Wed,  4 Nov 2026 19:01:37 -0500
Message-ID: <20261105000137.82224-1-kavithadaula@Kavithas-MacBook-Pro.local>
X-Mailer: git-send-email 2.50.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793836915-51737A5B-C19AC4A2/0/0
X-purgate-type: clean
X-purgate-size: 2951

From: Kavitha Daula <kavi@edera.dev>

Both callers of gnttab_unmap_refs_sync(), free_persistent_gnts() and
xen_blkbk_unmap_purged_grants() in blkback, keep their struct
gntab_unmap_queue_data on the stack. gnttab_unmap_refs_async() sets up
the delayed work inside it with INIT_DELAYED_WORK(), so with
CONFIG_DEBUG_OBJECTS_WORK and CONFIG_DEBUG_OBJECTS_TIMERS every
persistent grant teardown warns twice, once for the work and once for
its timer:

  [  104.366085] ODEBUG: object ffffc9004020fad8 is on stack ffffc9004020c000, but NOT annotated.
  [  104.371551] WARNING: CPU: 1 PID: 48 at lib/debugobjects.c:672 lookup_object_or_alloc.part.0+0x12b/0x1f0
  Call Trace:
   <TASK>
   __debug_object_init+0xfe/0x1a0
   debug_object_init+0x38/0x50
   __init_work+0x28/0x30
   gnttab_unmap_refs_async+0x18/0xa0
   gnttab_unmap_refs_sync+0x61/0x90
   free_persistent_gnts+0x179/0x280
   xen_blkbk_free_caches+0x16/0x30
   xen_blkif_disconnect+0xfa/0x2d0
   frontend_changed+0x90/0x680
   xenbus_otherend_changed+0x80/0xb0
   frontend_changed+0x14/0x20
   xenwatch_thread+0x96/0x1a0
   kthread+0x11d/0x250
   ret_from_fork+0x29f/0x2d0
   ret_from_fork_asm+0x1a/0x30
   </TASK>

gnttab_unmap_refs_sync() waits for the unmap to complete before it
returns, so the work never outlives the caller's frame. Initialise it
with INIT_DELAYED_WORK_ONSTACK() when the item is on the stack and
destroy it before returning. The function is exported, so an item that
is not on the stack keeps INIT_DELAYED_WORK().

Fixes: b44166cd46e2 ("xen/grant: introduce func gnttab_unmap_refs_sync()")
Signed-off-by: Kavitha Daula <kavi@edera.dev>
---
 drivers/xen/grant-table.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index f75b5cc..5a85908 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -38,6 +38,7 @@
 #include <linux/sched.h>
 #include <linux/mm.h>
 #include <linux/slab.h>
+#include <linux/sched/task_stack.h>
 #include <linux/vmalloc.h>
 #include <linux/uaccess.h>
 #include <linux/io.h>
@@ -1360,12 +1361,21 @@ static void unmap_refs_callback(int result,
 int gnttab_unmap_refs_sync(struct gntab_unmap_queue_data *item)
 {
 	struct unmap_refs_callback_data data;
+	bool on_stack = object_is_on_stack(item);
 
 	init_completion(&data.completion);
 	item->data = &data;
 	item->done = &unmap_refs_callback;
-	gnttab_unmap_refs_async(item);
+	/* blkback keeps @item, and so its retry work, on the stack. */
+	if (on_stack)
+		INIT_DELAYED_WORK_ONSTACK(&item->gnttab_work, gnttab_unmap_work);
+	else
+		INIT_DELAYED_WORK(&item->gnttab_work, gnttab_unmap_work);
+	item->age = 0;
+	__gnttab_unmap_refs_async(item);
 	wait_for_completion(&data.completion);
+	if (on_stack)
+		destroy_delayed_work_on_stack(&item->gnttab_work);
 
 	return data.result;
 }
-- 
2.50.1 (Apple Git-155)



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473164.1680757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMw-0003Sz-0Y; Thu, 05 Nov 2026 01:34:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473164.1680757; Thu, 05 Nov 2026 01:34:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMv-0003Sr-T4; Thu, 05 Nov 2026 01:34:21 +0000
Received: by outflank-mailman (input) for mailman id 1473164;
 Thu, 05 Nov 2026 01:34:20 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmMt-0003Se-FF
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmMs-00E0LG-Ke
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:18 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdcc3-8faa-0a2a0a5109dd-0a2a45098d66-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:18 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd18-be1a-0a2a45090019-94a39217b6d0-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:18 +0100
Received: from pps.filterd (m0482516.ppops.net [127.0.0.1])
 by m0482516.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mali1531031
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:34:16 -0800
Received: from sa9pr02cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11013018.outbound.protection.outlook.com
 [40.93.196.18])
 by m0482516.ppops.net (PPS) with ESMTPS id 4hr9tfbh7w-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:34:16 -0800 (PST)
Received: from LV3P220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:234::25)
 by PH6PR16MB682182.namprd16.prod.outlook.com (2603:10b6:510:3f7::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:13 +0000
Received: from MN7PEPF00000151.namprd04.prod.outlook.com
 (2603:10b6:408:234:cafe::a) by LV3P220CA0015.outlook.office365.com
 (2603:10b6:408:234::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:13 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MN7PEPF00000151.mail.protection.outlook.com (10.167.254.43) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:12 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50no211488046
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:11 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232whvt-6
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:11 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmMjxugK2z55iOmMkxXHqZ; Thu, 05 Nov 2026 01:34:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=pv6
	n2AWX+aK3aExx3SOvgOayNtOgONeHXWipd04265s=; b=dEgmJz1Y46YWgbbjypC
	n3+5OxcWz5JD87TR7YaCkxWW43wrgWcyQeeixyAeRZuv1eJDpgVzN62dFs49R5Q4
	BcrJ9X21+uGOTZk5FxL5qQCmGHqZ0reJj5Y1YLyipSDf2ZFr8N7t/gc49y2tEmCz
	5fxKthyiyCHonmGsI50bWtdlD01oj8UCczFeSMnyBhxEdyzbJpfpvaVN0rgqmVqt
	iPULZupRp/lbw1nuj+g0lyLeFBzmCDnqcs4WsEOQ5FTG5RJud7NdtfPi8GWGtOOG
	2ObARAWsd97YdGTufHd8t6V0kAgysnag5OcecgOy+KF/EElsWVD/KNiwYbrP3dzp
	pBQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=CToBE0o284YyW82BFjzhfDk/Bx77Lj4S2R/ktdTaNUKn5OLXOXZGR7c3umxy0JaIf4DtLcPfrOwo9JtgXLF12VL6VUz7PVId3ZDN0jfa7DhhaG4MnPTBtXWjihPXAq9wNrtyHJIZEQ92z0EbDT+0EQZuUcrTLFCqYNlRq2Ka2ckZKWPt+5uvazhRMhFUwndrbFlEKTkcvGKN8kLMRdBpjoDOpV3sJ0NsRkFIYkBaCiGUTnNJ3k1Z4ldqqcrr/z/xWaErnUgCRCqKe4zXbz0HA8UCFGXwJS/pO9HESj79hutldRfCVIpgwMTq81JQBkcj71y/3V/njHuTyHoE4KRW5w==
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=pv6n2AWX+aK3aExx3SOvgOayNtOgONeHXWipd04265s=;
 b=jre0OpIHWEWWL7TUYpZ1EDN//HGOUhHJGJ2pq4ATOkIZlDV6OO9Hje+Z5rpAPaTlFaT+F9DkvNVEzemfBe5cESnyZ8DfcXK/e0vHKnWZnZAtNhSPhP8lV/KYtTQJhcLcbtNApdm1jJ0CMwso+3QLd2btCE4c9zapi2M31ye1mTDRxj3aKA6UnkZdDACvMqRjm+ZTnHHA5EODa8gekzu2kLe3klqk8TAD8lF2IojzhzyDJsox0H16l/iAQB5j0BKaFQFGtNEz+GrtKg+bPlGDR/ONX2Qfld+EmAlYHKDblozIiV1uokfASOv3JOc9jVuArPlrAVIDxi6ZFiVEs8Xdgg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pv6n2AWX+aK3aExx3SOvgOayNtOgONeHXWipd04265s=;
 b=RiZjXfzB6VCx6wa0oQDxgwz6sxOFM9+yUBrilsTm+21XPiEbNjg/bRq2jqvOQGa2utfmOkX1KvKuoiTFL3C0pLj/XC4vYJPjmItg9I0PPVGPp0qynmos7qvRE5v581HplPFvR79hv0cgZHSYVtMpFz59YXKzYwXUStBtV36ozsU=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=pv6n2AWX+aK3aExx3SOvgOayNtOgONeHXWipd04265s=; b=
	ncoBhTJaO4DjOokWgtq/XpfhNOpSjtoFiakFr2/CubQBkx/fihJ9vchNFLxTDUmo
	XghEv5K8LGCkVQKA9foY1ovB7wtquW0DXsm4Lsz5u/obtO3M5Y847FpM5Fig+RIY
	YnPeBBO+zgtKSrPb6OZBqmchi1ZOrRf9bIiHbf0jPqAtGcUfJUGiwaAiZaEDdDEo
	vUrMGZ3JVG77hasgZkRuW2fDPC20yH2olWXC92IQNS4x/9MBu8+2W5dT8pDEkYvp
	QnElU4QygMsQO5WRnr81ETENikbnmDkmjHIgFs6B7kOKFRKvMfuQB5uTgttawOt7
	Xk292o57T0qzp1KLFauYrQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=pv6n2AW
	X+aK3aExx3SOvgOayNtOgONeHXWipd04265s=; b=BQnEb7Z3rMnONoJLW+0oRGM
	fA9EdipsJQBRAUaovRjZDQTDenYK7qD/S3gbdXo1R4nJd8UsQLQj9cqORT12Ws8+
	iOJnlIRhwlBq56EBUmuoeZEMY+ibainDF99e5agH8X84MDvNu6eGa3y71rzPbdcy
	aaRcKtwquQK4Ccu6fM2i0/cHXnY585qnP7DRMDt1izGJI3nwm7rATtYzt6CJz+JU
	OvLVi0ToC2xMeIiXqiqezJXikDIiAYIgBphmzAsZDUy9nBPpAyVtF/SFhtLSa1sp
	HEHeB80JbeJSE8+HMQFsMAwrGu4AJ+cyDhymmclHz9B4meun/v4VsgFFCYFixyQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMjxugK2z55iOmMkxXHqZ
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 01/28] x86/hvm: move SVM feature printout to a separate function
Date: Wed,  4 Nov 2026 17:33:18 -0800
Message-ID: <20261105013347.719392-2-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN7PEPF00000151:EE_|PH6PR16MB682182:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: dbd45c27-dfca-4fad-8e87-08df3adce56e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|82310400026|36860700016|11063799006|56012099006|261021123027099003|261022075727099003|261022105027099003|261021121427099003|261102123227099003|261009223027099003|261028144727099003|261026140227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	829yYN63s6PoNAgKX7HtAdrljif5Vd5GdSce5wCZG3Z0tZP2dl7HuVXgLPTSyn0H7neWo3qVpXRWzkaa9sZVA+ihvCWzrrBaCjlQ20HUbZVZLJJHzF5bMv7d5gYP57UoTp/+xtaRlNqMfWJjq84+eFML+WPozPkdBEKuKVkxJV1DqorEwYwFFm1ZNpqYQpTiXewTM6XtwQuIu+Oe28trGJmST1/NDJ+IsUuU1tbhQiEPw/rVkRxAXZgCVQm6GMEc2FebeH6Y/GhU7GwdADTgoKP80j/SXHlh8lgiDfwHoIlpdz6z3Mr3oDW9eUXGpMBbiVQtByL7abVgqAtG2TbaQMbIGoL2iZn3a2xBci/PPFKDFXRd8u8kG3MVbxwLWEQC++tQfSM45WPXlbmF/SjtH5kEwS6UWLu9xG/+8VoCPNFFz2cCWPPuvqtm7W5tteJaDbwrfYMA/hCX6Tey311RDcmRE/Ke7nANuOLoPIHfNIAXbzIxwMB5ccKf5R33TnjnlxnaUl23MiwaMwtceaSt8qjHnscrUbcWmzekKF3CTGVrNaqJbnpiDaJTvr+amKxGdjbaN0LF3iCCzsbxV3L2+WEQKXu4mB7L77wo9Sg8MO0W8QGatAJC/jRSwrcrFqaKwx3M4FQk4Kua2rrLdEjrS10UdG91kjZyhnsPllBJc/++7eb0VrsShCZI6LiCnac9tBdDdxdkSn208MTVIbrrSw==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021123027099003)(261022075727099003)(261022105027099003)(261021121427099003)(261102123227099003)(261009223027099003)(261028144727099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TrpEcCxRkUjKPeVyoAy6Utv53m8HLU077qwL80Wf9fiBVWMHWXMABNp/oCj3cU9xYaMcQgHBqb8vIcVKKG3svF40nkLNs7Ao7VH4cNfEpXfX8XWEOwh2JUijP0HnWhYOgzIeVnfUXOsP60IbMentx0CLOcSJJYsNH6jT6mNQyAUZyMDcyLylI0LsDwwlZZ1v3ElAgp2oY0ulgCWgSkEXpQvnmjdWtksoobdgUsvD4c+2r+9piKyIBDOPPAqzddx5EQXuVk28ENVk3tmwDoPIJAQnxPDWP+9LFrCWqyQqfMzgBssgtKNjpwyhTDdTgX4lJWGFdTQyPEnhsm9O+WiHmWtwNlVyBdqDFNBvT1NUC7iZBtvhu5A+AOa6smNx5Fu6P8euvyw9QmNxqTEwLRG+d/hMwhNs0PNGCx3JyLL/UCHSN6WhmZBczdbr3XVcnCf9
X-Exchange-RoutingPolicyChecked:
	VS0Hmu+eIjwk+htoLhc++AGD4KspfF0N6qUbPYqC54+/dvAvf/URNRPnq/xO8rOZps7yBe78QvCUIFx4hedrAg44d4yz1wl+IkZaAF5t3TraSz+QTPIAyvod5VcLBC9XAdkHtvoBR1RB46EL4v0TYgvNeRddiZAyVjCmW6CAdRBxsNABI4aPK+YMSAqCTj7d6cAYbpoiwY8k8ceNM7mp+YDZqLRkvxH/MvFX08yRaVNImYjM60wnln4xyZbKqsR2ZZqcVBerJ80tbhNUQAEXyFCRu8hZLZ4ycR+CbxjR+PJiOygrqnrjNavMC/4sfcsOkI7sYoC2xvS8Jla9vE0urw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	p4LE+fDPC3p1SIb4d1E4JZl7liThSxZaq+CVuxFMS2Ph4QNrdCLUeBKrBu6CsN5mh9F7aSSxJTzoME0f2Vimqj74jHOfxSWUG5OQAf1xGGrfEhPT6WzPgGRFqr67OLpwDSmgNL1u9GcD4BLQ1rdrTCWiyqdH68NbEodv0+YdW6UIktFiq+DmyoH764hWUAHTXgxNYpRiRXZZ3j+szVBke9+0ZVVPbX9DVBkqT3I+aEhZ39VWnh9/HI4L4hwPMeJtG5rb3sPxZ+hIUn4+dkxcd755ahwo0PivCUb4CaPOiGBhsTyyb4up8jG58qpz30Ivy2CX1Ff/hVF3CWwOMPelglrv5cbWqjBUa7kcbTBKH/4v+infTl5+OQ/fOQDGD6KTUVpVXGIJq4203wBhdXqxdOaFOReX9SAk53rSaDTje4QHYfDuswYvovFk3QgYZU2dloVNDgf50+W7Yn+/t+vYG93xlhva5yNG+HQwM9sznE9zDb8rXfAkineuhGW5jO9cWlX28EBEQ22s8EqtWZ0H1gqkMWotG7CkFt7t4cF+gDFHNksMKw9yzTBBcwLE9+w9rP6Pha4Tlbt+8vzt60gL5z1CpqkCScic7AG8CJZTGq5TSgNZKxJauR9/secPkagNkVduOO1ilfrQys/pjCUGKA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:12.3203
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dbd45c27-dfca-4fad-8e87-08df3adce56e
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN7PEPF00000151.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH6PR16MB682182
X-Authority-Analysis: v=2.4 cv=XfAcX455 c=1 sm=1 tr=0 ts=6aebdd18 cx=c_pps
 a=H/ESeL7FTwDXaNlIHo07Cw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=NvsXeTrgx-CJMFV-xl94:22 a=cbNQJ9GKAAAA:8
 a=kKEyoEiVLeL724AGoU8A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX7kKxUmBHjp9V
 V9oNDXzM0Dw5UAaMEjI/xFp5IAXmpvYMaCtSl+P6TiCNKjqwxj8mgXwd4hYZj7EfXzmS9C4hBv/
 k7yzsOuKqKjuJ+O7huD4eB7M62eI3dtEb9qfL78YdfRqaUc/OcK2
X-Proofpoint-GUID: O1eLQ5L_I3EwiYXj6igzbTSAPVjNzFlP
X-Proofpoint-ORIG-GUID: O1eLQ5L_I3EwiYXj6igzbTSAPVjNzFlP
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyH9TAmwnevWR
 OkgvROeN50guXi8tUJGBmYoaiWvNbBBEhXqKDjzP5kehlKaY9VTI1BWBKuJQNgVKoWBsllfjzsl
 HWe866V4KzDviChr67Qnb8OaAh/7bCoqDfMHer96N94sOSIg6tmgYIGWPF3eOc/ncp00X6pYhY5
 L4O4O68fOvF5hLofPxGrCloL/C6+QGKxmLBw0jQ6bMRe4Fs68vVEaiBKwefNM5awkfffnsfk2QQ
 m27RAsOCY02hNXoDsUJR9sYkhPgMIhlrKL4k5YEo1JytaD+xaCXZUxjgSgQGEdcxu3DonaVEH5e
 3sPccYzdcdmqanbFMv2UtZTXCscglIkb/tN9V22l6RQmjX0nw2G8OJ5ou5mGcx895hW96CX7Zxq
 KldFAi6Imp4orjaXjPWEiFREjmaTVv0ciiCD0P586OdYF6YVfskVCGbEZeDYcK8CPTNlotWfFNp
 Xkv/mzza8rAj+C3RrQA==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 bulkscore=0 clxscore=1015 malwarescore=0 impostorscore=0
 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-bad1c0/1793842458-39CC7034-D306E108/0/0
X-purgate-type: clean
X-purgate-size: 2767

From: Denis Mukhin <dmukhin@ford.com>

Isolate long SVM feature list printout in a separate function to
improve readability.

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/svm.c | 49 +++++++++++++++++++++-----------------
 1 file changed, 27 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 666bcd3eb483..e11d5c55248d 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2434,33 +2434,12 @@ static struct hvm_function_table __initdata_cf_clobber svm_function_table = {
     },
 };
 
-const struct hvm_function_table * __init start_svm(void)
+static void __init print_svm_features(void)
 {
     bool printed = false;
 
-    svm_host_osvw_reset();
-
-    if ( _svm_cpu_up(true) )
-    {
-        setup_clear_cpu_cap(X86_FEATURE_SVM);
-        printk("SVM: failed to initialise.\n");
-        return NULL;
-    }
-
-    setup_vmcb_dump();
-
-    if ( boot_cpu_data.extended_cpuid_level >= 0x8000000aU )
-        svm_feature_flags = cpuid_edx(0x8000000aU);
-
     printk("SVM: Supported advanced features:\n");
 
-    /* DecodeAssists fast paths assume nextrip is valid for fast rIP update. */
-    if ( !cpu_has_svm_nrips )
-        __clear_bit(SVM_FEATURE_DECODEASSISTS, &svm_feature_flags);
-
-    if ( cpu_has_tsc_ratio )
-        svm_function_table.tsc_scaling.ratio_frac_bits = 32;
-
 #define P(p,s) if ( p ) { printk(" - %s\n", s); printed = 1; }
     P(cpu_has_svm_npt, "Nested Page Tables (NPT)");
     P(cpu_has_svm_lbrv, "Last Branch Record (LBR) Virtualisation");
@@ -2481,11 +2460,37 @@ const struct hvm_function_table * __init start_svm(void)
 
     if ( !printed )
         printk(" - none\n");
+}
+
+const struct hvm_function_table * __init start_svm(void)
+{
+    svm_host_osvw_reset();
+
+    if ( _svm_cpu_up(true) )
+    {
+        setup_clear_cpu_cap(X86_FEATURE_SVM);
+        printk("SVM: failed to initialise.\n");
+        return NULL;
+    }
+
+    setup_vmcb_dump();
+
+    if ( boot_cpu_data.extended_cpuid_level >= 0x8000000aU )
+        svm_feature_flags = cpuid_edx(0x8000000aU);
+
+    /* DecodeAssists fast paths assume nextrip is valid for fast rIP update. */
+    if ( !cpu_has_svm_nrips )
+        __clear_bit(SVM_FEATURE_DECODEASSISTS, &svm_feature_flags);
+
+    if ( cpu_has_tsc_ratio )
+        svm_function_table.tsc_scaling.ratio_frac_bits = 32;
 
     svm_function_table.caps.hap = cpu_has_svm_npt;
     svm_function_table.caps.hap_superpage_2mb = true;
     svm_function_table.caps.hap_superpage_1gb = cpu_has_page1gb;
 
+    print_svm_features();
+
     return &svm_function_table;
 }
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473167.1680783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN0-00046G-RS; Thu, 05 Nov 2026 01:34:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473167.1680783; Thu, 05 Nov 2026 01:34:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN0-000467-OV; Thu, 05 Nov 2026 01:34:26 +0000
Received: by outflank-mailman (input) for mailman id 1473167;
 Thu, 05 Nov 2026 01:34:26 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmMz-0003vB-Sb
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmMz-000x9s-9K
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:25 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1d-e002-0a2a0a5209dd-0a2a450acf66-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:25 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1f-f2d2-0a2a450a0019-94a39217f36e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:24 +0100
Received: from pps.filterd (m0367126.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50ntOX3733991
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:23 GMT
Received: from ch4pr04cu002.outbound.protection.outlook.com
 (mail-northcentralusazon11013042.outbound.protection.outlook.com
 [40.107.201.42])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr983v0m4-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:22 +0000 (GMT)
Received: from BY3PR03CA0008.namprd03.prod.outlook.com (2603:10b6:a03:39a::13)
 by LV3PR16MB6319.namprd16.prod.outlook.com (2603:10b6:408:1d3::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:20 +0000
Received: from MW2PEPF00014673.namprd04.prod.outlook.com
 (2603:10b6:a03:39a:cafe::98) by BY3PR03CA0008.outlook.office365.com
 (2603:10b6:a03:39a::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.9 via Frontend Transport; Thu, 5
 Nov 2026 01:34:19 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MW2PEPF00014673.mail.protection.outlook.com (10.167.249.180) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:18 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mupB060090
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:17 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh45-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:17 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmMoxdH5ImeVDOmMpxZk7V; Thu, 05 Nov 2026 01:34:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=aR9
	l/0zpCxaOUzt7iatNB4TFWCmkHiKvjdLyt05m9Ps=; b=XCymjOXnzE2rKMGS8By
	r1Ji7u0VzGKCqrCcIlWB14kPab9XKjzrUPiF347x0D7o/6df+X17CV3IEfQaLa0H
	iPLtmmVdeQ05lCsvJwbVGnpv/W2zCf4twAwi8r0wHibmDoi2pKInOBUWJG/sFdYN
	qNQdWugXy1K0Qv9Cmm0g9DamlBmKdv6HZ+ItNpUtpoGX6kTekhAqR/smbuXrpTfg
	kALZb1JDXs03v+egVAyNpEqVPoI9A10WUcLq7v/iKFMK4q6Ev3zMyHXmeh2Jnk9t
	QC33KHnFUPntgxpZULLkXOmhEDwMJwO6zJzlw0dvhoib9lCFYWOFzFjw+mDWomkf
	S+Q==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yuQv8Aqh14BtRnI6aqpiIwOOM+w4VGitEn7Xxb8+WgL2DsB8n6w+kZUvCnSYyoIh6iwgtIuzTTmdzlM0TowS8fHt08eq+EhlM6hQkSYml4dS95UIQvWXm/YvFRZ+06AZnkzvpJidjvV9zb2VFPQG4zS7071XBpvFuZ/YLc1pzIZPS/TdJyfSfDCSdAAj/mac7Q9taoMPCe6x8czxZq2ZQCxjOVy+6kCwu6HLgPyTjDCpn42VVpRi4R/Jw2z3R8rArENdluXOyWJO1i5mJTYHArs0hvncjkmKpASp9/Z12VKxSzllLY+QEVKdYmpduAh4pxQTrZnPbR+J48u9Ha9t4A==
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=aR9l/0zpCxaOUzt7iatNB4TFWCmkHiKvjdLyt05m9Ps=;
 b=uHA1OmQsmc9qWf7ONGkpCw9XDKsa3ZrD/xXh837XZu2xJ+fdwKyuc+i3SoPN2Q0CbA+SkoYndMLGZ6CY3XG0idv3WEx1jYkjE4dglZ/CYvq6Qzet2UV50Jg0j+/ZDAAPc7fB14goe7cBAdcuGWjDIzVqrf6FBQaJtPFMSxeczwkYVT045uLAnGWjOPnYYJrHuYGIdrRRx96vxOGRsiDvPjqh02K/Q/EMoH8FgJBz62OqM+7f1jyYnaFU3Lg07NLzlB0nc4ys75hXLgjrz/kqXZU9O+eRsMnkCejwAqLXfE8HxNo6/F9iwhTZchYqfqNI6nG+qw451XMTHzQEhOPELA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aR9l/0zpCxaOUzt7iatNB4TFWCmkHiKvjdLyt05m9Ps=;
 b=a4Bv+hLWPLlP3rzWKKJZkbMLOZdQEpnZH1U1ptLpd5Po8wIHchBG+PQrnujhZuOQvDTu06Tupm4gPWKtBUMviM777SZAhCzopOT3YXB5JAwNDDQu+3suqGJU9ug9Qb87J4k5KFNdSMO0OFlpB+yTM91d9rbimUm4FAHAQqDe7Zc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=aR9l/0zpCxaOUzt7iatNB4TFWCmkHiKvjdLyt05m9Ps=; b=
	b1dYqH2LIEUj1ZHPuvoaKM9aBaXFycTnilvQTaQecrf2O8RX0AHbOSHL5lhZJ4TK
	sF0Ck3FBlK/bHWUyBWRftKg1qVtqgP5SGDavkArQQVox3ht50sLuV5B2P8ltfVqj
	bxLt76FrrDo8WllAZ7ZcRq2kzGpXJR1Qw8Oz0JocqZWaTfP37Byzm5391CcZQiR3
	QGO93MCbiBHzxRtZbR8C/62E7IE9e1xEqgp+tK6yc/smKLUzNoYFKjd5jJ2prvAi
	M6exYJaqH0HlHPxQw4m1ODZH76/ruKOUUBq4uyZe2/Fx8iGKtuyJDqd0l2cAwFSf
	FKXfGDgHeQ5blEEIpNIiKw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=aR9l/0z
	pCxaOUzt7iatNB4TFWCmkHiKvjdLyt05m9Ps=; b=RaylWV0eku5koOE3eu+lxC0
	baKn0bR9SDqv/hJujfKZFUof4z2ryLVDNgvSV+/tpw//UIzFK8eqlurgVo2i01kN
	1vn/ndjZx088MfCAaENy/ew8XR5huS2fGKFLZHc5YbK/Ta3ZF4YVZ1GPMtw8M0mW
	QYWHl6GrkL+sC1UkGHDVxQdLnq047ywsunxl/griOi7/jg8oGFGISllJqcKMwDbe
	rq8rIWzcaOtSV9QBnazyAamGjOrFYiDZCzXE0ertTrd86X0q7ufAR//WynnAAs1o
	Gp18MSJW0v9Q9kMFjIld7Iw2eek2/QuKTIaU6RThvoegkWN3vmAO1pEe89eh16Q=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMoxdH5ImeVDOmMpxZk7V
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 03/28] x86/hvm: report SVM x2AVIC support
Date: Wed,  4 Nov 2026 17:33:20 -0800
Message-ID: <20261105013347.719392-4-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW2PEPF00014673:EE_|LV3PR16MB6319:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: f328773a-ee3f-4572-e484-08df3adce92e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|1800799024|23010399003|36860700016|18002099003|22082099003|261009223027099003|261021121427099003|261026121527099003|11063799006|56012099006|10067099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	/vytHFj2Q7rWFRDMjSeP9VDVY/TqTMFp7qwZdJpK+xhLfEi/xcFFbRltibc4HJnk89w7c8lySd8uLIThagTnjjZfDeWxc2S1j1S1Fyra7EMw6Bj1smcLOItAByRqorbnxWPDOb/hs/k9u5NASnTusSWOCPv5XLOmcVKdG9xmdj+Ejk5A/C1EHGLdXxydGIFvc1NyFAht/FmKAuqY7p5T99Xf2BwOYBgiOwR63Ny9DnmpTzB83ADiqAvYRUVrW0iHk/AH8M/9bNJvAwmATMnVNoCJa/QSJE2W+LZ3aU6QDUiUL8lMsbg00b6eNaeZ+lH9XfdslRh393Q1A7HmhtH2qC60f6uZY6cRuV0yZIPnylfErpLt/aS6VlrCfsAGaWiHAwiL0Pb4/2b/Evimg0g4fqiPf5lz1tP823MBDTOANh/FHRH6zJ1xEM93j09hKudHO/YRldCQPOkJoidkbnH3ZWzb4lhYYSsnCF8YoTl0JkMStNwNlPwyHAbFoSWb8TFkXFMVx92xGPAhxR3Gl+Ezo1KKV1hsP51N22ggwX8+iwAnlbXdkZHwxeqIZ5wWCktH5pyRC/bTon64l+qwyK1g5ow6hrLs2Yp5HEcFEUl5ITn9etqoe2MJ34Lvh822n3iYFAXUGCVXTidpAxR0u1uftYv9Sxb2I8iQHl2KeAywdBZXpUFAdx18qTu9nPiu/rDSW2QfhAXOBYwaWhKmBNAv3w==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(23010399003)(36860700016)(18002099003)(22082099003)(261009223027099003)(261021121427099003)(261026121527099003)(11063799006)(56012099006)(10067099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	dDkk6lyeECFHriMZyg+4ItIfWtYL2vlaKFxADVBHRUrZKfMWuGhqoSx45qBy3V712SIH3raWcoEBRFMe9wCVTSOCkKGv1U5bSZ+9s6YANiXewDZVfH/caBoCJxQbz96fsaAXqelsvQj9d/Y26HlIrDA13lbdUz3EsVJV3m9gKTBQBTYJS58jE8Rks7BSVfthJtWSBDPO5rgAKITw4dcvZuioy9iXf0nT23HaMDO4a99W0xRk44Ymr7X8IexZomxie8N+f6JrKkoBh+kvkp1k8t57GJJU+fjIpmWcVAipAN4Wffjgp9DmMR7feBtEOSld/SwHMhOb8waxiwPhTOmuPdXq02JnJowwXOqiKSKr7Il6AmVjjGHrsAxQ+Dm+LX4iX9iFI0rWuvuAs4q1pTma6VFqaNKGc0xTcFDBbQ/P/tt0Yoi/lAnrA1mcrY3ppXpP
X-Exchange-RoutingPolicyChecked:
	Oth/pAmil6PujGxxpkQZ08pknE5AY6Y9Cmkxc6LNSNOYvfsVghgoVIcrVfiLNnBkTMlALUpnPNPqfcwKx8/MJ6G28aWZ/AxTViwB9xNROBNzfV8+tqEPY+ySAf+mEhqWHCUC+pqPTtwCqKWnFHcBrx1zdzZ9eTe2Wd+IijJa676fyOz3zPRVlSRQYqpiMMofn3BEvs7QJZA7rZ4vcRSt82s6tEV1YlmDPrfVv6gW5RfISGLfBKkVb9L+7gSiisikJlrMazquY704WT5SGVd9uGcO+K+xnAQc7XFQxN7bFGDumkbJWk4Q6HpeOF9SYkZLykmAfZJ7smeJCStfj5JELw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	iNT09a0pCaJv4wt0/aUTfeySW8NmxAn7QUJ67Zm0JooLwTkZAH71566K3qbZDYIGDkDXCzV1Faj5jzgSKvN1dhghCNN4RYRdq1MTq0W4LKFifJJ6gdWssdTFFz2CRILNFo3rjVbTw3UfizsLcsJgFU9HMJ01JsUDQ0nL5XQDblHMQVM05Hg1ITSGMqBbUoUVbh7Jxd06LKWk1MyI+CrJczSon6a1IzL0qEbr2qrLLWqqVLB64HVnrb50x6m96DZ7c+C309Bh9Yt6lppkrXjFmuE9Bhb08PIGI8blnFwDR8BB4310wtOeKngxbWTQpLEjDR9ytu8igl/meo8Uu4AxrWIVa9YRJOBiake+SZ2N3Ic2f1dU1qTmNjNxKK+koeWbu2VTnVAKFlujaz4SIeisrSYQidEDqyfZhITY3P//GNssdu1XN5x7B3eJOet2vQLt5F2tKMMC+cm8b+m+MOYDuTgQsi0xF2Tw1FUH+TvsM9sim5s+FDu3Gh4QOZmWKpdamtARSNC6WHiGqDcM0XVhvIIykGy7ZkBxmAROHOTe4XjdnD7+b6hHq820QV+g0lxwxKUjDgnD2b/B5RxFkWBGEG8l4mlBDh+sHEJxIhPgihqeP/VvMssQuouq+40e2gn/ZJfa9+0qDJ3cVpz41K8hnQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:18.6392
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f328773a-ee3f-4572-e484-08df3adce92e
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MW2PEPF00014673.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR16MB6319
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyR+EDEA4YuMk
 UAkbXtN6HZ/GpKLtPKoxA+FOn2MkKqyBEKteEVjr47166LC7UvkrFoQUM+1fmv+ROwIf/nIC3sF
 q0ld2/yYlMuuTHyHkRKEPtSouK3odnBrGyS55dnHF2+y1X35xUFYOV2B8HTCUrFT4FZrXhUMCjD
 dSLy7a+k3PT95YhikKGSkI0qTfZYRUineQGoNcy+4gtb1KKfI7iGb1Uco5uPQ9aAmBowyh96K1W
 1DzBNHdKHVEtC/ItgD+Ow2tM7nCr6mWNowlHHXn2D4a/4xXYUjw0cCdUnBgnKxKwuZkU62PY/Zi
 eZ+hJtV0TNky6PPUp7xa3OefuKrwH5rEB5s7q6RH7RoSRlp7NVSaC8207HQkKZYkZP89+JYAh56
 wSUvZlckP1M3zFSNzKYjNU9CJtz9X+QvShrcM6Dpkr7XRu2nCpMh4mw07jhCe0fiJyyaevWf4Uf
 RL8GcBQns2IzgocsYbw==
X-Authority-Analysis: v=2.4 cv=AYYkjHXG c=1 sm=1 tr=0 ts=6aebdd1e cx=c_pps
 a=MKhdtnkEmnO/r5iZxkZDBQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=-OawqTZBqJjt90xPb8wn:22 a=cbNQJ9GKAAAA:8
 a=3FUhnyOFzl1vmK9vYlIA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-GUID: QtEeslBpNyBJQ2trS_eZjq_pXTVP2Uqp
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX/Lv8t+BCHmBS
 kmwh6bBpbFl7HL/QBZuvyFTwGpCeaRejO888b5NVAc55MMsI7XQkULaELgErWHzOvR4pTGGwco+
 truIiJL4se4vUT9Cdmvs2LwoE5Zlkdkg5KNdnwhLjPVeD8C07CV0
X-Proofpoint-ORIG-GUID: QtEeslBpNyBJQ2trS_eZjq_pXTVP2Uqp
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 phishscore=0 adultscore=0 clxscore=1015 lowpriorityscore=0
 spamscore=0 priorityscore=1501 bulkscore=0 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-4011c0/1793842465-591C5CFC-D8318DE5/0/0
X-purgate-type: clean
X-purgate-size: 2167

From: Denis Mukhin <dmukhin@ford.com>

Report SVM AVIC support from CPUID Fn8000000A_EDX[X2AVIC](bit 18).

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/svm.c         | 1 +
 xen/arch/x86/include/asm/hvm/svm.h | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index cf008a8acdf2..db81dad4b681 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2457,6 +2457,7 @@ static void __init print_svm_features(void)
     P(cpu_has_svm_vnmi, "Virtual NMI");
     P(cpu_has_svm_bus_lock, "Bus Lock Filter");
     P(cpu_has_svm_avic, "Advanced Virtual Interrupt Controller");
+    P(cpu_has_svm_x2avic, "x2 Advanced Virtual Interrupt Controller");
 #undef P
 
     if ( !printed )
diff --git a/xen/arch/x86/include/asm/hvm/svm.h b/xen/arch/x86/include/asm/hvm/svm.h
index 0fc33f41b09d..292a9ee19b11 100644
--- a/xen/arch/x86/include/asm/hvm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm.h
@@ -36,6 +36,7 @@ extern u32 svm_feature_flags;
 #define SVM_FEATURE_AVIC          13 /* Advanced Virtual Interrupt Controller */
 #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
 #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
+#define SVM_FEATURE_X2AVIC        18 /* x2 Advanced Virtual Interrupt Controller */
 #define SVM_FEATURE_SSS           19 /* NPT Supervisor Shadow Stacks */
 #define SVM_FEATURE_SPEC_CTRL     20 /* MSR_SPEC_CTRL virtualisation */
 #define SVM_FEATURE_VNMI          25 /* Virtual NMI */
@@ -57,6 +58,7 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
 #define cpu_has_pause_thresh  cpu_has_svm_feature(SVM_FEATURE_PAUSETHRESH)
 #define cpu_has_tsc_ratio     cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)
 #define cpu_has_svm_avic      cpu_has_svm_feature(SVM_FEATURE_AVIC)
+#define cpu_has_svm_x2avic    cpu_has_svm_feature(SVM_FEATURE_X2AVIC)
 #define cpu_has_svm_vloadsave cpu_has_svm_feature(SVM_FEATURE_VLOADSAVE)
 #define cpu_has_svm_sss       cpu_has_svm_feature(SVM_FEATURE_SSS)
 #define cpu_has_svm_spec_ctrl cpu_has_svm_feature(SVM_FEATURE_SPEC_CTRL)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473165.1680766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMx-0003fg-8d; Thu, 05 Nov 2026 01:34:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473165.1680766; Thu, 05 Nov 2026 01:34:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMx-0003fZ-5g; Thu, 05 Nov 2026 01:34:23 +0000
Received: by outflank-mailman (input) for mailman id 1473165;
 Thu, 05 Nov 2026 01:34:21 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmMv-0003Sl-7t
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmMu-00E0LG-Kq
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:20 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd05-8faa-0a2a0a5109dd-0a2a4504aa82-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:20 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1b-b57f-0a2a45040019-94a38ff14b48-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:20 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mb3I2611371
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:19 GMT
Received: from sn4pr2101cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11012058.outbound.protection.outlook.com
 [40.93.195.58])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rv8q-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:18 +0000 (GMT)
Received: from BL1P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::12)
 by PH7PR16MB6193.namprd16.prod.outlook.com (2603:10b6:510:314::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:16 +0000
Received: from MN7PEPF0000014D.namprd04.prod.outlook.com
 (2603:10b6:208:2c5:cafe::1a) by BL1P221CA0001.outlook.office365.com
 (2603:10b6:208:2c5::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:16 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MN7PEPF0000014D.mail.protection.outlook.com (10.167.254.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:15 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50o3jt3232408
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:14 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp8d-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:14 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmMlx17S0gTjoOmMmxgaMx; Thu, 05 Nov 2026 01:34:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=eM5
	Yf9oLT5mBcx2NrH7BE/p18L2T/go/cV8xvH+52Uo=; b=gSW/17vNOV4qWvMBmwD
	4XWr33SUM8YfBpn00Lwjwm0+4oGRJFqw7frwpuFsiQ3wclXV6a7N5NBPtUoU1m3V
	tpQmLxFLlZ0fKotX0PNYfKcDcxfDfjuXCDiABjxwqcLHxOsuxoGari6XOS7wI0X8
	FtaCyxwim1b38TsHKShFIVcZTADce9pH0xZUJ50KSd4JdLThJoJX6317Lj1RKu2H
	rRHaUVC/s3hWDTD4HLfd2AS/Awv3I17M1vBSsZb5zuqTbeh+Z4b4icL07YbVEzN7
	GlwcsXeFQvW7BDtsN2RXEtgMoQewBOEioDlsKqMY7WTvVgu5Bn35N5EUq6oulla4
	96A==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vAddVjx/8AWEaaRmQuZ442ob8dW3Euy5pY/pZ5YJ85xxyWjUqVGaoGhvKzjfR348ohIOVYpQF3O4Bl1wcA8gjfqgUzDxjE9GrPTJ1pXBgRIUxD2PkmjhdzQ1VRCj7SXclDw6/nUqK8fcAloSRQ9lLlCmwvmjWPWCsXNCl0Ld2g2zdYxhhEpplDKfT4Jpa/WE1UounkQEXfcgF4VZXsTREOvVHaI2GgQNB7kINpjEkmKNQKg4cLIMmgxMBmx8DyZz6X89jwcBDVN3MXaGQzg4J85k6Eo+yVRfapd/gOnGmkF0bDMlvPzNXP60FqNQT/GyI5Zld++VfbaHFwyeZ6PjsQ==
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=eM5Yf9oLT5mBcx2NrH7BE/p18L2T/go/cV8xvH+52Uo=;
 b=dtXEjWGPrTiJ5AWhMha67blLWKQ7owtWh2w9BhMvt1xe9G0TcL2E8UV8b3Ln+ryXI5nLo+QeYEvcC4rS9icnLyAfdE6SmGL3iqdfN8TKdxeizaEG3PpGZF/nktTJGjuJAGw7K+lpyhgxSgKI7Ww2P3yZT8XcMzVJSLG0VmTjb4uRVdgREBR3gSppGNcrxjqo/KgtQfZuuEdf7RtZStR67/8MPBkgpGOsu7EuQwLRbaoQjt8+N0SeJMgnyVMFJlOWNLTiT6PEom94K2pugwJtKpe+kBn8y3m0EBYIIwN0hqr0tgTljIslTHBlZAJTvpf1ShZ2kg5y/cMtvpRAvPlnOA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eM5Yf9oLT5mBcx2NrH7BE/p18L2T/go/cV8xvH+52Uo=;
 b=jY7V0/gP8SawPX3LT7pB6tE4UHJVAguU2vjwrlQM/Q+9PsqckvtDp2cCDNC/0wQU27a1+maaYV5hqbFbc/bWawHRsUHk1kQrGnedAMdtESifM65Ueu81eMew2oUJir0Xk6eh4uiDAKnWOodALV9/KatDMXv7xMa00zqYhSUE7t8=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=eM5Yf9oLT5mBcx2NrH7BE/p18L2T/go/cV8xvH+52Uo=; b=
	V3CCesyaIilPMMH6+1wyQl0JFE1RHS0yYIWVtc2dETsfnM86QrEa2KnwnrqC3awU
	y259x1aGOFPKsrigAWzehJKoRIBzN+Y6PRmgrgr93SGAomT+BEbWNAApzXT9gYVE
	vVo6As+MrX5lRvR7jXTq1cGvFpZ9VNr8lhK3CHZSSVOh6pNKDgmx3bfcZKEP7+4f
	YtnggN0iONyi7JyZt8EM5tAKXXL3UIXqPbp5e+qETg2sAGmh/AblZa0d1j6VoTEH
	oJpDYF9+em8HR2zMUak5LaEYA4xRqR0dKhh/uNyNgl8W7IHQSAlMXJ66ForWCi8/
	UiLwvIbeJfmab3QnBRZxfA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=eM5Yf9o
	LT5mBcx2NrH7BE/p18L2T/go/cV8xvH+52Uo=; b=unG+b2wDYqKzZRsjjty4P8R
	o4NHm7SVVnJV5UdauWi5FD87n/rTqwWIzIJvn2x92iLGq20nZODkMSlUlflLWV40
	t08sW/MrGlAnbRrSQXf8f9LzZtmsRWx8DcIt0KbEmWsEziDzQOEdcxQ9ZTx74U34
	jS6ct0tv61QbCfKtnkyRjd7UrvpP64ZS6bQTkGAeeTCpSkzFbsjrp9NTiH1ZEmPw
	UjgloJzanyYY6pGGFxn3vSg7byHP3+oV6L1NLrvuexzDmF98ml/Z1SveLh74PW7A
	gSdvwayRYNM3+2uFWyAmK+ehdllK0droEREwpHaDmHURRbX3Jto9Sv0c5tv8y6A=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMlx17S0gTjoOmMmxgaMx
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 02/28] x86/hvm: report SVM AVIC support
Date: Wed,  4 Nov 2026 17:33:19 -0800
Message-ID: <20261105013347.719392-3-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN7PEPF0000014D:EE_|PH7PR16MB6193:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 35e5080c-94d8-4d1c-960b-08df3adce758
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|22082099003|18002099003|10067099003|56012099006|11063799006|261026121527099003|261021121427099003|261102123227099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	brWZaokiCh3ct7nvVKDIs6r+9ik8oZBigS+5JAhQ/IxWGhJ8pj01JtTRGo5iNQbbzh+neJKbkGzA60SvHN5TgmxvM+lPk6hJ494sZBGhcMLCVxOnM+yyeKxnyoMCeTrEx7T9d9WrMYWwpmhgei4EsLrQtLStTzdJWsNHWX2pyUnL/3HOXY/15TQnjBp3OLLPZlxrjobM80qoQ3zDbb27kg619h0komQhIWQ+jggt5Nyn/dXLMVyHP4zoIvHu9eLQ58sywm+RBrUz9NTU6l50kbOJKxrzPCoxrrpiGKs0Ra1lZEItomyuNrQbkA54Hb1Afq54/pRLQwksZMfR/a0w5kdxy/b0uAzUOZblrggesNQZfPL7kdPkEDIFGiDdGHR5lG8V0DtLB3n8OVC8AjRc08utybdDUmruTVuBMsiV5p5x1+ynJFQCJgwwsfMdp4AhJopvZcPWT2JQwDlbz8pveSCMSJfOFsRKVUw95siE1YQtVvDqgJAHQiHBEy5pnDgY0WJ7sWyzgI+MAqupgjsXoIYKA+RiiSfWqcJ6O0RM2mSBl02ds2l96S80sR+li0eetp56iWJehiGZAi9y0WN33LcjblWtX8j83eP3SuMS8O05TEgmC6SCC9xvvg2YMuo1ZqoIi8FrRitx7XABuaaZe3KacMr4qcIDjTTG6BAgLIogWNRWPq96gjp0dj3MAUeGinoodg82pq/Xd2mQOwLyOQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(22082099003)(18002099003)(10067099003)(56012099006)(11063799006)(261026121527099003)(261021121427099003)(261102123227099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8JRb86P/lOja4cTbi07ZLyMBW9BqPB5CzIPaZdgzaWHx3PIknBPfmg2OZ5he03kQfvNmLOMmbRoFWXuo+5a/uG70EqNigIWPdRcavpT1EVhvFxKOFDJd1YSM2sa2yjMPAMlvnm4HWvZb2ZAomVgiacFuyyX1USjPRNh4ychg6X/xa9BQqpJDOwcthsgO1biFykodaPGTFpEGf5noReloGugmesedLpyacazhtqQTWw+WaiV2ZzfJUEA3FHxoRlmKKYOp70XPvVClA2oYF7wB24k+LlZ8zJaejreB/+FaIepGnZykMCP/7VocP7+90A3MfX5afIOqOXOs3znE+e/qODtwDfGG/2c/bTlA/qWjTbmGd1TFTkeAMoxp0MQbjJ4ICpXtG/HUrwv0+Mvjyry+F3jtIWCSxYzxdC60kZg85+SZW8nv3E6wKA9NdpgeTWiF
X-Exchange-RoutingPolicyChecked:
	4j56ei9FZ05oDRHcqFmFz+bpoTE6PHCT3URHKvLr91SXYyfH864KcVloCcDQ/KI13fsBE7qSUZNr6lAKVr5R11Rwoa0t4LJrq1woqdzPDReo8+2A7IEz9N5zlDKsL4BaCrLRaXSgq1Zi9Rikdu+7srk43d0PaXcPNmzHpQJIFwEow4pgCYCUDD3+UrDc1Q+jTmtQzWVIVKotjUwpC1b6pGCfeZ3hmu6bKPnULtnh4nH7zA1F8Cb7rXLigpPeVdVGur0X+79DIBODPGrdXk6T8J2idx5pa0GcaA8NQiDn43Ak8br8NvMLzbXh9DS2nF/Uz1j6x6G2WlfSGs47qxSylA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	uA3W9GugIUxqeDZS78xu60TbRTbcm6EMyvnDGoAAOlUZ5Vm/d7HYai6pN8hE4yK0Zq+AKyekM6GfeUR/vhNKNwTY1k7mxagoMfvPgcCoah0EcI0o4QNqcw11wMBxXVKPvnAvVQiNSHYfF5kTIZ/SzNL5c8VcX8V6c+62SBCgQb2fbzt7Y4vpzUR4zTjVlZssZmpXkOA8L6JxnM02eATkBhB2r5u6TBHsaIw0spwezxUXYH2t2w8Nrka0UZuvurZfHBwIJu+mR37SGck325tFjvrHBTB4crcZTocQhaLxLsoI/kWIzIjP/Y4WtiCFMycXt53DaOm/f2mXz3ZsJl03Tq9y7dA/iiOsdd9z5ulMtiRIi+aC4X+4ei2E/0QiC8AQCUWLII67JrTKhhD7Up/rtb/hDEs9tL2rmcTq8jrzYLzJ99hBrKHriDS3LfiWD+zhQNAHJJJxWE8UN69AZcwCJaoj7X8ufsrAWOyrpthMlDTmYQsyV8+YlWwotjKwp4mWN/kOX4qnj8/SGL5hcUlESwhDeRKyDtqADtu6R5yKGmIehnzpbucla5vDN130G1z0JSHKvT2VVhvLmW9bDniifHQKqgKIrmnn1MV2Q2ZxDmLSSna5GIx5urPsICyB+Wgb1+vlOrKcLmiShiAWqlMGiw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:15.5316
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 35e5080c-94d8-4d1c-960b-08df3adce758
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN7PEPF0000014D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR16MB6193
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebdd1a cx=c_pps
 a=3V5Erj4uy8rJXAE3nhxHpg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=cbNQJ9GKAAAA:8
 a=3FUhnyOFzl1vmK9vYlIA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyXc3Fzf72iF8
 KyrHygb/Vvoqou2InRS0XeLRA8CjA3/43MJKJShwiod50fP5sR1mhjGWYGzOjTmHavIQ0wtqi43
 X/5nxeiWGkLJeMKb7B/yHxl8cNc+wRMW5GSBrkdp5ggsmp5mF6Y+
X-Proofpoint-ORIG-GUID: fPKHFTn7iX0wA9K2cdVTY04dH8P-d8t9
X-Proofpoint-GUID: fPKHFTn7iX0wA9K2cdVTY04dH8P-d8t9
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX0lZXaO7skBdn
 pukfY2nclUHGKgB9AozBdzkzs7abrttsPXc8B3LCMYYLInOweKBKCY/cRRAEZTDXirrH64/RKD0
 qLeRjz18SCkdWOal1cvSbQ7aBv0XNuHBzB+99UJQOGR0G5DF/O2osn8dU9UtQvJa2t+zNFMh4VS
 o57B58V2Ewn/9Uufv7IBjRyqhxuC7aRCgKbGuI//6qVoNIJ/jLZHTAhsIFkxn+uO5P09zOn4vDC
 Inj7N1HR1rg0OOqjIfMaCxHA2KP11vx2LKEhv1XMMfhHNX0cgZcn6OAIJ2kmeRlsXPUFF+Y8j7A
 hYxrLbxG8M6fmcr4YM2DO2SYEHo9YD+0+yD18yTd4xexXY0NyCs8it9f4NltcLQe5kSrBp+7fqH
 D0V0BSwauMYKekxk0lWMJYh2S8b1i+BKbCzV5Tm4Gq8RlQyWaIhmKmcuoTgQ100uo581IPQQOQC
 0mDzg8CvKIIVJzZ4v3Q==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-ebf023/1793842460-C12DCB50-40B851EC/0/0
X-purgate-type: clean
X-purgate-size: 2164

From: Denis Mukhin <dmukhin@ford.com>

Report SVM AVIC support from CPUID Fn8000000A_EDX[AVIC](bit 13).

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/svm.c         | 1 +
 xen/arch/x86/include/asm/hvm/svm.h | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index e11d5c55248d..cf008a8acdf2 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2456,6 +2456,7 @@ static void __init print_svm_features(void)
     P(cpu_has_svm_spec_ctrl, "MSR_SPEC_CTRL virtualisation");
     P(cpu_has_svm_vnmi, "Virtual NMI");
     P(cpu_has_svm_bus_lock, "Bus Lock Filter");
+    P(cpu_has_svm_avic, "Advanced Virtual Interrupt Controller");
 #undef P
 
     if ( !printed )
diff --git a/xen/arch/x86/include/asm/hvm/svm.h b/xen/arch/x86/include/asm/hvm/svm.h
index a35a61273baa..0fc33f41b09d 100644
--- a/xen/arch/x86/include/asm/hvm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm.h
@@ -33,6 +33,7 @@ extern u32 svm_feature_flags;
 #define SVM_FEATURE_DECODEASSISTS  7 /* Decode assists support */
 #define SVM_FEATURE_PAUSEFILTER   10 /* Pause intercept filter support */
 #define SVM_FEATURE_PAUSETHRESH   12 /* Pause intercept filter support */
+#define SVM_FEATURE_AVIC          13 /* Advanced Virtual Interrupt Controller */
 #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
 #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
 #define SVM_FEATURE_SSS           19 /* NPT Supervisor Shadow Stacks */
@@ -55,6 +56,7 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
 #define cpu_has_pause_filter  cpu_has_svm_feature(SVM_FEATURE_PAUSEFILTER)
 #define cpu_has_pause_thresh  cpu_has_svm_feature(SVM_FEATURE_PAUSETHRESH)
 #define cpu_has_tsc_ratio     cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)
+#define cpu_has_svm_avic      cpu_has_svm_feature(SVM_FEATURE_AVIC)
 #define cpu_has_svm_vloadsave cpu_has_svm_feature(SVM_FEATURE_VLOADSAVE)
 #define cpu_has_svm_sss       cpu_has_svm_feature(SVM_FEATURE_SSS)
 #define cpu_has_svm_spec_ctrl cpu_has_svm_feature(SVM_FEATURE_SPEC_CTRL)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473166.1680775 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMz-0003sh-Fs; Thu, 05 Nov 2026 01:34:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473166.1680775; Thu, 05 Nov 2026 01:34:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmMz-0003sZ-CX; Thu, 05 Nov 2026 01:34:25 +0000
Received: by outflank-mailman (input) for mailman id 1473166;
 Thu, 05 Nov 2026 01:34:23 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmMx-0003fR-6a
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmMw-001wz8-Jp
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:22 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd16-2eae-0a2a0a5409dd-0a2a450285f6-10
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:22 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1d-6ca4-0a2a45020019-94a38ff15b26-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:22 +0100
Received: from pps.filterd (m0367129.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n3kN891327
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:21 GMT
Received: from bl2pr02cu003.outbound.protection.outlook.com
 (mail-eastusazon11011000.outbound.protection.outlook.com [52.101.52.0])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hr99fkwvu-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:20 +0000 (GMT)
Received: from BL1PR13CA0369.namprd13.prod.outlook.com (2603:10b6:208:2c0::14)
 by SA1PR16MB4801.namprd16.prod.outlook.com (2603:10b6:806:23a::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:13 +0000
Received: from MN7PEPF00000150.namprd04.prod.outlook.com
 (2603:10b6:208:2c0:cafe::91) by BL1PR13CA0369.outlook.office365.com
 (2603:10b6:208:2c0::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.546.15 via Frontend Transport; Thu, 5
 Nov 2026 01:34:13 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MN7PEPF00000150.mail.protection.outlook.com (10.167.254.42) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:10 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nD1d2970229
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:10 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrj8-11
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:09 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmMhxcJp0uKemOmMixhJOl; Thu, 05 Nov 2026 01:34:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:Message-ID:MIME-Version:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=ppford; bh=y/S2S9e+0ZwFb7lcmG+OgUsZq
	q/XCtOAyVvhCKcp33I=; b=ab8AQWbnSibShqHyObLi491uM/N6SQ5ZrxFuhTV64
	yKj9kAaGFuvyv5pvCfXv+OheMABZEqqpYeMqOOSHCL9ntICqmlAfmmJG5qfEaQ2b
	u+InFva8ocxZ9sngFu0RiWUtARCjqtoUyPohx1EuOBce/UdGcpFeYZ7MlNhqGHv8
	8+PfmEIBQLeZPY1/RYWU92NLpDPMWmVasTvX8brAhry4b/vH+/5Z6pF07nixiupe
	1Uaeafgzc49n6Rwd/RqRUb8DqQuV4qYaj/t1RNPm9hBI+elnCRi/ErvIx+vYYA28
	Ik7t7l/Eu64pVX2CuMs1BvLs0P7i5h0KF1w2bSa31sBeg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uL8L57NIO4BOWVCNhhX2DK4nZJoq9IeSghRlnN25cXRwHAoSZqrj1pHoh+U7CZWBMbNsHsieyx9tf9tpLgpMBZhpjCm+cK9/CzDBeZtUbQsSbqnq9GMRduNv0J4uEIN+8mSTabdB0489duxahvtqqu+FPQCQA8vjXFfj8AkiMHmYF/PKl7zi8O7/x1POchCLnYQ+8uwIGH9W9OgXe9vPtaNxt2EDRgZVKQ2JAEW03DtCkC/kppfL4TfurfL/Gc6sarDCt6jTHjhY1eKuvhfSGzDtUgd+4a8fsLaIiiIA5MAoRbTKUU/ZM91yS2FEHYU3hDzpsYP9eygR/jXSMZx3ug==
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=y/S2S9e+0ZwFb7lcmG+OgUsZqq/XCtOAyVvhCKcp33I=;
 b=InxK4TV6R+WmPQfbjxYRFoFeJbxG+hF5e2N2yzxiApu2x0KFcC4yOwxUYu+/fwPNJq6L6aQPOlEUFG875lPiJZGwmjjV5zAuKc/+4l23dKqPLxvKjCI2dloctRwmnbvGv9bzH8Jg0dQQ0WUsQTrhjE+jyhxt1NX1BZoSCnJao7y0Dtm2GNxvTjW7Erg30w9FMOLbuH8OrgEwfgDQVnVSSO+S472zU7vTIyJQPcCPTL2XHz6n2TVNzZUEFtsccOhY4MgQ1LLFRUtxgH0C3KfABktm06DrtoKxldQ7KSMC36Qnc7y81cwGCywjMrhpK4+AO7ozHPnjagJXJqZobSe35A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=y/S2S9e+0ZwFb7lcmG+OgUsZqq/XCtOAyVvhCKcp33I=;
 b=HFs0oVtgAD+NOHxVOByI1s9U1rF9CultM3vpORVDn6ophW5Pho+rTRMNcKw+xV63KSV9V1ZzgSGtVdRZ/yVPbvf0u4XDJdD8ziq8VyjGWZvpoZieqwYISIlkX0sHTefCJ4n0yJWCjQ1RjSnMY8njVXAbu8SInd50MBy1p/qXvsQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 205.220.161.53)
 smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:message-id:mime-version:subject:to; s=ppserprodsaar; bh=y/S2S9e
	+0ZwFb7lcmG+OgUsZqq/XCtOAyVvhCKcp33I=; b=VIDRXYtkO3s5Yp49eV0YZQA
	Dichd8uwLyRrm9COwviiE5VozhVFilwdhbgIO/m3uXsUQFJTGYru0JcsuyVYmmUV
	3iIlQPOiWrwB7kcxTif5ClHyVVFxTgwEepBCrGCzT2hkjntR/r6aN04Gs7tOb9H5
	aX1snbrm9xvglDPPXfElquB/P6e6R2kDRDviZJaJier3r67+SL1pHJl9IoyPSMk+
	lIQge1k90ZJFNS4LXoca35iqB8KJADtOoXIP1+rQ25gL12h2eeLNg2RX3hpuMbBF
	lUMSIkpzXjOYCUyopAL6rC7rsNJEPsCKEZZf+FYOc3vYTJnX8R3hqccDkLKsGmg=
	=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:message-id:mime-version
	:subject:to; s=ppfserpocford; bh=y/S2S9e+0ZwFb7lcmG+OgUsZqq/XCtO
	AyVvhCKcp33I=; b=D+VOEP1MzZwoxKnwG0YCkR10/MYjrYo6vQFEtVy0UAnibyW
	P4Kaw9UWx4ksw6Ecc3QNlfnCG6GDmrTF5lPMu+prJTiV49/s1mZuMhrzyXdyktgG
	F0CBhAe/9iBR8DYTvYuG7jLj7THxgDmq8mGO62CeD2so3TF2knc951szH4Tap2o+
	edNJ/pSz+VrF9mkOWKNqOMwiehiyhPRub3sOfju5KK8dGu7TDBTO6O9kSKx6ev0F
	Vh6U3Nr8fYFZq/ODJ2LvdsVVETU5vP2MgwhE/nWtzjsO2AH2yDYcQSgO+UJNXA+t
	MwLpe4sN89eS6221Ylco7WlqU0IN75pAeow3pIQ==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMhxcJp0uKemOmMixhJOl
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 00/28] x86: initial SVM AVIC support
Date: Wed,  4 Nov 2026 17:33:17 -0800
Message-ID: <20261105013347.719392-1-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN7PEPF00000150:EE_|SA1PR16MB4801:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 0b6ba5de-c877-4edd-4c65-08df3adce481
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|6133799003|10067099003|18002099003|4133799003|13003099007|11063799006|261021123027099003|261026140227099003|261028144727099003|261026121527099003|261022075727099003|261102123227099003|261009221227099003|261009221727099003|56012099006|261021121427099003|261009223327099003|261009220027099003|261009223027099003|261022105027099003|260925021311599003|260925021911599003|260925022911599003;
X-Microsoft-Antispam-Message-Info:
	UxaikQAUcf6p5ZG+KUoeNmJJkAfBsroZKP6TWhVDA0M+edYSQ+3gnbPbJk+8eTClGWqrjTwO5KysfLidaT0Tl+sUzzTrP8yESuo2dyvrA+BNEN0/JmWmxhqkToEcdKEtBxKzU1ZpWyqr1BMx9aAwsk7stPnNia9nMe6Se3DUEUPdzy1bJ9E1qeSnWjNlajc+8lzTNcOZ045FQF1DN7KPqj0SZauBrSo/IxTZJB4T1sV5PVjFPesHHmDzUohPhV2VZqFtfaUWBKXM98DQiDX7SyasK0fI5wADnBf592Q57m54In0kh1K8XNeI5MTSDEUhV/vdK9zqD6lZEzICscQlR2Tr9ksCIk8rqXnDHvtmfOvGmk+n3QFNPiKbK871Ofd5w9eUcE2trL4bD0kbevsD6x+F4kGcp90/88IUBeXJOPHisxP3T5k35jywgI5xZKCe7i2a1U8XKsujnuBglMn3ihAX39Q2/5MR8Ew3/LKfds11cxR8h9Dp0naaeW5Aqk60JpJ0CCu5iuq/wLoyUawScsfQc1Iek1TGYSoxB+h35T35zEJ7dZJzLsYRWrdRKwc9e3EPIB6TEufPVc3NYyu2uohMJ9knQKcj1vobzQ0hybmni9Mmuk3lelUJ7kYu0f8ltGQqjuVuKLOa046isWXQn/4by+CCXrEPHgFPOWEt688=
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(18002099003)(4133799003)(13003099007)(11063799006)(261021123027099003)(261026140227099003)(261028144727099003)(261026121527099003)(261022075727099003)(261102123227099003)(261009221227099003)(261009221727099003)(56012099006)(261021121427099003)(261009223327099003)(261009220027099003)(261009223027099003)(261022105027099003)(260925021311599003)(260925021911599003)(260925022911599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	pHk6xrHyndVUNrHGODfD6wxwrkxxMR/pS1V8BKmu/vI7zovOjtzlvDAvrCGmDfrK0bmNZhsqXxXq6RVwk21JOrFhiikis9gd3Ytb2QxUgMVfz9UQQWqSiDtoeLZvD8biHw1sbZHLBSUB3jCn9qbXSih2asodlkntz+O/hT9UMVLthb8Fa+zKIl1z//aXdB7GsQdKxaGWv09nZIiLmUc0CI8aAYCzqbJ1E+eH2uneZ7aPw3Fz8rfQPTjDsp8UOFyLeE3ZxAxfTcmkqaLaaIonyofmyakmXFxiMaEEt+24WXHVJlPaImWuA8nbv0qie+39tWLxlnNcrVw+CTYXglt01Fy1vo4T+55PX/cz1vw/+1YwR5i+xH22hoyOnXDF81wCRHjZEVx1LQsOqaIz5t5NOoSSSTOlgCGJa8BlmAGD8BO2x+MHsShg0xWvuiBJ1Nw6
X-Exchange-RoutingPolicyChecked:
	Xh+uGNwMj8d7hQ//gQTuyU+E2HY/ie9k0Vpxy0mAwNHHQxotyFNtKCgvmzarWJaMcTvSQlHOBvR4Kgb8MK7QS78w/gqDMcUcGqU28Zj9K0z+V1nZeMoWXJuNfoq3ErwUn/JYN7IFIJMYO2ruXd9eH0GL+fzwkN6PNd8T4EYZnWYXnyq1kGReRUG73xVk5QYQgjGcpV5mgIyxdxMHD0u1uhTfNXvpraEPcXpbS1QV9buaKr4iLMLK8nFhYnf+wHYFGXeRrB6jWzbXfmJI+rQH1C2viK4A5/QpeQekZQ9dTu1FEgFFCY8fihdMCTkNxIDGjEQ5G2yP0xPoBhDtOpFfsg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	YVRtyCFzudhOPieUIBOoVa62uNuej07bA7gB70Hg4xcMWgnTovcr7JsXWR3PpDYa2gh8LoyQ7KojMAUCqaAxtI2DcD3BNuI+sk0jnpqT/rM3J+Biic+rlUC/ZLL26sv1FnCzk+RqnMe3jafabUYhqOG/zSv7mMQZ6TkSlsBPQfVtd3X6c4RXmRJaIx9nsHtOfRZn5i3dQ820hcCG+29TsGS5/3YKYZvsuCwAJJ/waNbMwDaVLYp5PhrRg0omk9TILdqN5wP70dVHd6zMPuzB+qVCQL4hQy6PMZqsqnXyC0vVOun6SclAzAvVGhcVvsEzKJaZjuUm72qbs6/brT+s5BYbZcPvvDL8tcI2MRo9ryikG9Q9S76BS/36mE4KJ7qfGvjCa6FrADE7LoqYBMKn+06prsPpzV9MAFliWsI0GQt4weAA1hH3syQpHUMm7jH5qHIX8FO84DAIkybukB7Frt5if+9kispuKwlRa/pdiZ35zed6HTCqBDR8fWZmcICp7XW1+QF0QeNdkPMwnNQrC+SMVa+P3yqZ8YpntaijyCpMMtS+PXfPCxL/nYzDlvYHzhbIKAO8gVUUcTsiSZfIsvwctYrmbXzyU/lWcNqh6TUcZhQr/w2RuSenNZgtON3bAlF1Tg8tejB4Furhu5k5fw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:10.7878
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0b6ba5de-c877-4edd-4c65-08df3adce481
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN7PEPF00000150.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB4801
X-Proofpoint-GUID: 12UWCpLRJ4W7k9m9r9c4GpdL-0dweeCz
X-Proofpoint-ORIG-GUID: 12UWCpLRJ4W7k9m9r9c4GpdL-0dweeCz
X-Authority-Analysis: v=2.4 cv=LcKpeTfi c=1 sm=1 tr=0 ts=6aebdd1c cx=c_pps
 a=CTIJcRslT32CQvadRVAfuw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=X3KReqg2EL6A36SYCKpz:22 a=zd2uoN0lAAAA:8
 a=vnREMb7VAAAA:8 a=4oupQTzvAAAA:8 a=VwQbUJbxAAAA:8 a=p0WdMEafAAAA:8
 a=NEAV23lmAAAA:8 a=Ko6J3DuGGfzDdmGFQ4cA:9 a=3whSkbs7g9Me0DR5EJEX:22
 a=WmVTiCyuxqgg3mnwYu6p:22 a=F_R_EHrqUKoJocvyGl7m:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXwk3HWv1+cNpW
 XErTLpbz7MH4VD2v4EfcWsXNLPnYl9mbmawHKB5nZS3Tm7o3CXlBXVJ4tZP5aH1KXIGSaUo028c
 k3rQmnjXAhMI6RbP05MSsagFTHcQVHhwqUdqbxhVDv+I6nJj3nzpXZEcxDI7wuMrl1HqxNp7MkZ
 sVwM0+kQPmnFeLnZ/+AMqySdr69WJb1yfAfa8/q49j3Hoq0jKX9j6tFxTUO0ZgJsFpqUsZBTH/Y
 1QJeSdzfNr3v358bxcw7gMlVztTGgZG5xbWhwcBXYDqk1ZH2GgoVrc92rYnqz5TrT0exCyufkR7
 JW0StFiVH1X4S3O2S3TelG4NV+OqVco3BS1HxuSIg+No3OvsSamMXnsPyXN+/HZQ9fOluZNtUCs
 KX0H8dSFXLO5mnwfW+zYHWJikPXRRfTvlKhRLuB3FwRJOl7eWGl0NkYzjSzv5m/xZGmxC9ZQh3f
 npDp/tjpWUx1eHx0/Xw==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX/5t4tNqmzZ8v
 sOwxx935Qd9JF1E7etbqTGeAc8gyVSNaALnPYt9EkQr7B8ESdKb7uDHXdxX27biiV/UfKvwwyBW
 FoSnf+37Dx8ytt52KVVNFM+36K+rWFLdTtlyLV6g3C7wbAgU5R6c
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0
 adultscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-720697/1793842462-F0AA52AC-D113FA2D/0/0
X-purgate-type: clean
X-purgate-size: 15234

Overview
========

Modern AMD processors provide hardware-assisted LAPIC virtualization
support known as AVIC (Advanced Virtual Interrupt Controller). See
"15.29 Advanced Virtual Interrupt Controller" in [1].

The main objective is to improve interrupt delivery for a given VM
by avoiding expensive LAPIC emulation in hypervisor.

At a high-level, there are several types of interrupts needed to be
managed for a Xen domain:
  (a) IPIs
  (b) Posted interrupts (Xen-to-domain, such as event channels)
  (c) External devices (MSI, needs coordination with IOMMU)

This initial implementation addresses (a) and (b).

Current limitations:
- Only vLAPIC in xAPIC mode with AVIC enabled
- No GALog support

Please see [2] for more details on the scope.

This work is loosely based on previously submitted work [3] and [4],
including AVIC support in Linux KVM.

The feature is experimental and disabled in the default configuration.

Patch Series
============

Basically the entire work is divided into three big series:
 (A) Current series: initial SVM AVIC [5]
 (B) XTF interrupt latency test [6]
 (C) XTF infra in public CI [5]

For this AVIC series:

 Patches 1, 5, 6, 9, 11-16 introduce various cleanups and fixups.

 Patch 20 changes XEN_DOMCTL_debug_op implementation to allow
 more debug operations added (like enabling/disabling AVIC at
 run-time - used by the XTF test).

 Patches 2, 3, 4, 7, 8, 10, 17, 18-25 represent AVIC implementation
 including performance counters and run-time controls via debug
 hypercall.

 Patches 26-28 cover various documentation updates.

Testing
=======

Mainly, the patch series has been tested through public hardware runners.
Full CI run (including manually scheduled jobs) is available at [10].

Approach: I decided to write my own synthetic XTF [6] which runs as dom0
on a hardware target to capture some fine-grained metrics for IPIs and
posted interrupts (event channel).

System                                  | Test results
----------------------------------------+-------------
Zen2: Family 23 (0x17), Model 96 (0x60) | [7]
Zen3: Family 25 (0x19), Model 68 (0x44) | [8]
Zen5: Family 26 (0x1a), Model 36 (0x24) | [9]

Synthetic test:

    vCPU0                                     vCPU1
                                       executes some workload
 +-> t0
 |   |
 |   write ICR2 [*]
 r   write ICR
 e   |---------------- interrupt -----------> t0' = recv_tsc
 p   return from APIC emulation [*']          ISR
 e   |                                        t1' = handler_tsc
 a   t1
 t   |
 |   sync against ISR
 |   |
 +---+

First 1K samples is dropped, total number of samples is 20M.

IRQ delivery latency : t0' - t0
IRQ issue latency    : t1  - t0
IRQ handler latency  : t1' - t0'

[*]  For event channel that is EVTCHNOP_send hypercall.
[*'] For event channel that is return from the EVTCHNOP_send hypercall.

For all tested Zen2/Zen3/Zen5 targets there are overall improvements
w/ AVIC enabled: the test duration decreased, IPI delivery improved,
ISR latency improved.

Basically, AVIC optimizes long tails in the latency distribution leading
to more deterministic workload.

There's some peculiar behavior w.r.t. doorbell MSR which roughly takes 2us on
Zen5 - fallback to vcpu_kick() turned out to be faster. I added a run-time
configuration knob for a fallback, just in case.

There are also some outliers in the latency distributions which I haven't
ruled out yet: like look at max latency w/ and w/o AVIC in [7], [8], [9]: once
it a blue moon I've seen AVIC giving p99.999 values as a maximum (~15us vs
~45us for the entire 20M population).

Results for Zen5 target are more pronouced, so I am duplicating them below.

Zen5: Workload #1: IPI
----------------------

                    no AVIC                  |             AVIC
---------------------------------------------+------------------------------------
A: noaccel: IPI send latency (VCPU#0) (20000000 samples)
B: accel: IPI send latency (VCPU#0) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                12240            6.131 us |             140               70 ns
avg                12955            6.489 us |             155               77 ns
p50       <        13000            6.512 us |  <          170               85 ns
p99       <        14000            7.013 us |  <          170               85 ns
p99.9     <        34000           17.031 us |  <          170               85 ns
p99.99    <        35000           17.532 us |  <          190               95 ns
p99.999   <        98000           49.092 us |  <        23000           11.521 us
max                99100           49.643 us |           86660           43.411 us
A: noaccel: IPI delivery latency (VCPU#0 -> VCPU#1) (20000000 samples)
B: accel: IPI delivery latency (VCPU#0 -> VCPU#1) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                    0                0 ns |             620              310 ns
avg                 1402              702 ns |             626              313 ns
p50       <         1400              701 ns |  <          650              325 ns
p99       <         1500              751 ns |  <          700              350 ns
p99.9     <        20000           10.018 us |  <          700              350 ns
p99.99    <        20000           10.018 us |  <          700              350 ns
p99.999   <        71000           35.566 us |  <        23000           11.521 us
max                87740           43.952 us |           87000           43.581 us
A: noaccel: IPI handler latency (VCPU#1) (20000000 samples)
B: accel: IPI handler latency (VCPU#1) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                15520            7.774 us |             160               80 ns
avg                16256            8.143 us |             174               87 ns
p50       <        17000            8.515 us |  <          190               95 ns
p99       <        17000            8.515 us |  <          190               95 ns
p99.9     <        17000            8.515 us |  <          190               95 ns
p99.99    <        17000            8.515 us |  <          190               95 ns
p99.999   <        23000           11.521 us |  <          190               95 ns
max                33880           16.971 us |             200              100 ns

Workload time                      182552 ms                               9919 ms
(20000000 samples)                                                    (~18x boost)

Zen5: Workload #2: evtchn
-------------------------

                    no AVIC                  |             AVIC
---------------------------------------------+------------------------------------
A: noaccel: evtchn send latency (VCPU#0) (20000000 samples)
B: accel: evtchn send latency (VCPU#0) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                 5800            2.905 us |            6020            3.015 us
avg                 5988            2.999 us |            6204            3.107 us
p50       <         6000            3.005 us |  <         6200            3.105 us
p99       <         6100            3.055 us |  <         6200            3.105 us
p99.9     <        27000           13.525 us |  <        27000           13.525 us
p99.99    <        28000           14.026 us |  <        29000           14.527 us
p99.999   <        28000           14.026 us |  <        92000           46.086 us
max                92160           46.166 us |           92680           46.427 us
A: noaccel: evtchn delivery latency (VCPU#0 -> VCPU#1) (20000000 samples)
B: accel: evtchn delivery latency (VCPU#0 -> VCPU#1) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                    0                0 ns |            5440            2.725 us
avg                 1412              707 ns |            5497            2.753 us
p50       <         1400              701 ns |  <         5600            2.805 us
p99       <         1500              751 ns |  <         5600            2.805 us
p99.9     <        19000            9.517 us |  <         6000            3.005 us
p99.99    <        19000            9.517 us |  <         6200            3.105 us
p99.999   <        71000           35.566 us |  <        28000           14.026 us
max                87600           43.882 us |           91760           45.966 us
A: noaccel: evtchn handler latency (VCPU#1) (20000000 samples)
B: accel: evtchn handler latency (VCPU#1) (20000000 samples)
metric          cycles A              time A |        cycles B              time B
min                15540            7.784 us |             180               90 ns
avg                15803            7.916 us |             184               92 ns
p50       <        16000            8.015 us |  <          190               95 ns
p99       <        16000            8.015 us |  <          210              105 ns
p99.9     <        16000            8.015 us |  <          210              105 ns
p99.99    <        16000            8.015 us |  <          210              105 ns
p99.999   <        24000           12.022 us |  <          210              105 ns
max                33120           16.591 us |             200              100 ns

metric          cycles A              time A |        cycles B              time B
min                    0                0 ns |            5400            2.705 us
avg                 1425              713 ns |            5467            2.738 us
p50       <         1500              751 ns |  <         5500            2.755 us
p99       <         1500              751 ns |  <         5600            2.805 us
p99.9     <        19000            9.517 us |  <         6000            3.005 us
p99.99    <        19000            9.517 us |  <         6200            3.105 us
p99.999   <        71000           35.566 us |  <        28000           14.026 us
max                87800           43.981 us |           91940           46.055 us

Workload time                      175951 ms                              62951 ms
(20000000 samples)                                                   (~2.5x boost)

Thanks a lot to Marek for hooking Zen5 runner to public CI.

Thanks a lot to Stefano and Andrew with advices and fixing the access to the
fleet of hardware runners.

References
==========

[1] AMD APM Volumes 1-5:
    https://docs.amd.com/v/u/en-US/40332_4.11_APM_Vol1-5
[2] Xen Summit 2026 SVM AVIC:
  - YouTube: https://www.youtube.com/watch?v=RhaJsOU_PIA&list=PLGe6RWOETgTQ
  - Slides: https://hosted-files.sched.co/xensummit2026/05/dmukhin_2026_x86_SVM_AVIC.pdf?_gl=1*158gk36*_gcl_au*MjU3OTQwMDQ2LjE3ODg0NzE3NDQ.*FPAU*MjU3OTQwMDQ2LjE3ODg0NzE3NDQ
[3] Archive v1:
    https://lore.kernel.org/xen-devel/1474264368-4104-1-git-send-email-suravee.suthikulpanit@amd.com/
[4] Archive v2:
    https://lore.kernel.org/xen-devel/20180507210753.2280-1-Janakarajan.Natarajan@amd.com/
[5] Current patch series:
    https://gitlab.com/xen-project/people/dmukhin/xen/-/commits/svm-avic-v3
[6] XTF interrupt latency test:
    https://gitlab.com/xen-project/people/dmukhin/xtf/-/tree/x86_64-ipi-latency?ref_type=heads
[7] Zen2: Family 23 (0x17), Model 96 (0x60): interrupt latency results:
    https://gist.github.com/dmkhn/289f1af656cce74c0fbc81642727a2a4
[8] Zen3: Family 25 (0x19), Model 68 (0x44): interrupt latency results:
    https://gist.github.com/dmkhn/9192105efc49cfedd15e2820b8ad23fd
[9] Zen5: Family 26 (0x1a), Model 36 (0x24): interrupt latency results:
    https://gist.github.com/dmkhn/e9f50b43cbc48b82175ec517d6cfe6f5
[10] CI:
    https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/3025987819

Denis Mukhin (28):
  x86/hvm: move SVM feature printout to a separate function
  x86/hvm: report SVM AVIC support
  x86/hvm: report SVM x2AVIC support
  x86/hvm: avic: add domain state initialization
  x86/hvm: cleanup svm_create_vmcb()
  x86/hvm: introduce vlapic_reg_read()
  x86/hvm: avic: add VMCB state initialization
  x86/hvm: avic: add AVIC_INCOMP_IPI VMEXIT handler
  x86/hvm: fix hvm_emulate_one_vm_event() definition
  x86/hvm: avic: add AVIC_NOACCEL VMEXIT handler
  x86/hvm: introduce vcpu_is_vlapic_tpr_emulated()
  x86: apic: use APIC_EIO_ACK instead of open-coded 0
  x86/time: fix typo s/interruopt/interrupt/
  x86/hvm: vlapic: update signatures of both vlapic_{clear,test}_*
  x86/hvm: vlapic: add checks before posted interrupt delivery
  x86/hvm: move VINTR disable to svm_clear_intr_window()
  x86/hvm: avic: route interrupt delivery to vCPU
  x86/hvm: add facility to print hardware-assisted vLAPIC info
  x86/hvm: avic: enable SVM AVIC statistics reporting
  x86/hvm: rework XEN_DOMCTL_debug_op
  x86/hvm: enable debug hypercall for posted interrupts
  x86/hvm: avic: ensure SVM AVIC supports xAPIC operation only
  x86/hvm: avic: enable vLAPIC mode switch hook
  x86/hvm: avic: ensure SVM AVIC is disabled with nested guest
  x86/hvm: avic: account for AMD erratum 1235
  docs: add coverage for svm_avic=
  CHANGELOG.md: add note on initial SVM AVIC support
  MAINTAINERS: add myself as SVM AVIC reviewer

 CHANGELOG.md                             |   3 +
 MAINTAINERS                              |  11 +
 docs/misc/xen-command-line.pandoc        |  23 +-
 xen/arch/x86/cpu-policy.c                |   3 +-
 xen/arch/x86/domctl.c                    |  24 +-
 xen/arch/x86/hvm/emulate.c               |   5 +
 xen/arch/x86/hvm/hvm.c                   |  74 +-
 xen/arch/x86/hvm/svm/Makefile            |   1 +
 xen/arch/x86/hvm/svm/avic.c              | 921 +++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |  41 +
 xen/arch/x86/hvm/svm/intr.c              |  22 +
 xen/arch/x86/hvm/svm/nestedsvm.c         |   9 +-
 xen/arch/x86/hvm/svm/svm.c               | 186 ++++-
 xen/arch/x86/hvm/svm/svm.h               |   2 +
 xen/arch/x86/hvm/svm/vmcb.c              |  29 +-
 xen/arch/x86/hvm/svm/vmcb.h              |  27 +-
 xen/arch/x86/hvm/vlapic.c                |  25 +-
 xen/arch/x86/hvm/vmx/vmx.c               |   4 +
 xen/arch/x86/include/asm/apic.h          |   3 +-
 xen/arch/x86/include/asm/apicdef.h       |   2 +-
 xen/arch/x86/include/asm/hvm/hvm.h       |  47 +-
 xen/arch/x86/include/asm/hvm/svm-types.h |  31 +
 xen/arch/x86/include/asm/hvm/svm.h       |   4 +
 xen/arch/x86/include/asm/hvm/vlapic.h    |   1 +
 xen/arch/x86/include/asm/msr-index.h     |   1 +
 xen/arch/x86/irq.c                       |  24 +
 xen/arch/x86/time.c                      |   2 +-
 xen/include/public/domctl.h              |   2 +
 28 files changed, 1411 insertions(+), 116 deletions(-)
 create mode 100644 xen/arch/x86/hvm/svm/avic.c
 create mode 100644 xen/arch/x86/hvm/svm/avic.h

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473168.1680794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN3-0004Kn-4i; Thu, 05 Nov 2026 01:34:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473168.1680794; Thu, 05 Nov 2026 01:34:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN3-0004Kc-0I; Thu, 05 Nov 2026 01:34:29 +0000
Received: by outflank-mailman (input) for mailman id 1473168;
 Thu, 05 Nov 2026 01:34:28 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmN2-0004IS-4n
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmN1-001wz8-Eg
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:27 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdcb9-2eae-0a2a0a5409dd-0a2a4507d75c-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:27 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd22-b4ea-0a2a45070019-94a38ff1868c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:27 +0100
Received: from pps.filterd (m0367129.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mrHX890979
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:25 GMT
Received: from ph8pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11012032.outbound.protection.outlook.com [40.107.209.32])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hr99fkww7-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:25 +0000 (GMT)
Received: from CH5P221CA0005.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::29)
 by PH0PR16MB5183.namprd16.prod.outlook.com (2603:10b6:510:29d::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:21 +0000
Received: from BN7PEPF000000A8.namprd05.prod.outlook.com
 (2603:10b6:610:1f2:cafe::44) by CH5P221CA0005.outlook.office365.com
 (2603:10b6:610:1f2::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:21 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN7PEPF000000A8.mail.protection.outlook.com (10.167.245.232) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:20 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nU6g3231477
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:19 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp7y-8
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:19 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmMrxwiCZDnFpOmMsx5gs9; Thu, 05 Nov 2026 01:34:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=/ry
	tJLaOrpToKNYYdwh3BV0gO7/pEbXcSOViRTflAPA=; b=Je5G3iSwG8zKW8nI0Il
	yRsYp1KggvQeUdzEjjQuyWcISPgAoIZcWXusFZUJywd/vfzctquNUA2xpbVHZ2oA
	s49c9uvPFKH2VrSMyIlGjq0fAqjM+QTWNQpWfmL8WWo89TDsHKs9f0scDjhE8j5X
	w0LVb6xKD9YoS1lYAUW9/GshHiptSwVVIMw8Do5XF3pKDqZB8kvVGqgkcUzVbYPb
	/F82zhtQsyeB/QLMUwxrjbEDPFdkvQ5PzvsXx1fkLsubg39ykFU//VtbbTPwId8T
	n5HCts+NLzrbeFGCfLrT+VBETtaeTQsjboLcTdnud53VIN8aCgguU85/j7OjDCiG
	ldA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=mhZ9hwWCX3syEKEYwKmHkMudbA/p72i12cd9lpTHetNDwFwv4evyKh/wmU0KDBYw9qNEhasOF6U7bXSKwKEZiD9eKKXYEHb2GMmyL30wUkZgTViAEq6q4WVwLNJO5/mdZdg1H8zUMD0lzxAEXrV1YO9CW1fR8pbRcG3e8ZLOpbOewpQKG4jwxOp7PTUdzqu/5lCHDLCaGdKC6Eo0VVUFJtyVOyxwFIGZPP9CLKc/0oQu4NIj4KwUkX6V0kHOq4bUq/l2m9KeS1O0tXZdcb/Y0ymYFNiTNeyyB8jtIJm+7dlmQTvfUryzrWoSFYb8jFuSL2nRIeRSA50jL4WIEGaygA==
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=/rytJLaOrpToKNYYdwh3BV0gO7/pEbXcSOViRTflAPA=;
 b=NsF55cMiba715zDOShXRt6ypcFjJoyhJMqUD1SysBTYjlijjiV+0w/9pkDjEVnKTo3r8nisO5Ar6BRCXcxb53PTDx69KIZlzPqGBK/sQ1+E6J9ySIdHWJBq+uS5lRMPtmeNjAqskP1ftffQ66FhWoOWyhlc2BWtwciDqgf7apKp+Mm/JkvfNEXDPNh+Cu1+3ADVaWSMcY2HiiJdCs3ksw7TDmcrK7/fEa71bOqjo6M5HLMyede1Xn7apojN2aWHb+AkpaNkM698JrlkXFZ/TjC8nyk80+TAf+tjkxXSPYlbTFkrUuVeBUH04ofjDZ0zf9I429+IYPEKMZj3Ypjz1Mg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/rytJLaOrpToKNYYdwh3BV0gO7/pEbXcSOViRTflAPA=;
 b=erfcBUAKWiKEj7PYDlsCFV+JwnSkTjhn8cV6/k6lVt5KYjMjgoXY5r9eQBn1lgG0lx+I5tLC2KrqNWrEIgC+91jPfcFbpp7Ha6iLbq6yPvaUg2rm9LCeI2zU++phkWuWjxHm0ZGkrhokkdOoUr9uOLeO/6n4+np2fUAes+oPyuM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=/rytJLaOrpToKNYYdwh3BV0gO7/pEbXcSOViRTflAPA=; b=
	GTOsEOIpprL7gyxNdZsiQK8D4Yzo/wMu6yx7dczMWFYXkMjzb5jX9FqpctWffF8k
	Cer+PGPhy8D4ml++5eIEGreP4qkK8nrQ9wiVAjXk2w+5/1/QKWhYXXfI1sSQV/bx
	0vJez0zGfgSVdE459UTBAm/ABgqwm0W2CzKVa1kyXSz8j3+Z2OrXNH2lYPqEaCTP
	JexY71aHkNa1MwTuCpK2k/lSCpX/bcgxbLHrlEuMsbohLWEof2duSYkrS2dYVIyd
	QgxvPiRpq/omTw7bgbixNpbyIqItJ6xvBkBtR+6dXuCc9/veQfiXCigZ9xU4Zz5D
	kOcAb5XJeTpkRwFvr225eg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=/rytJLa
	OrpToKNYYdwh3BV0gO7/pEbXcSOViRTflAPA=; b=tT7tJvbVEihWKbNWlTO13XG
	7lYaSFfneNvvwDEMmsErOVOK7rs+WdPA8/5KY2JCKTHFZ1mIBxWnZvY+QKnDo9TW
	Vqvs/Ly4m4+uwk6RL8k0g/GB6ny6hMLMOS3lGZ9ulfhGoC4SYJyaAOIIHdgITp+J
	Mq35gpwtb1LzY0Sv8cYO6iIvxMzukA3gNHsEhJHNP42AzjZCny+HHjVBFRB7KwaH
	OJfpXbwI2vYfCp/zuTqSc7Jz5tsysZeLGTnuhZnsIypeUMIybpeitcVslY1ggXdN
	330OMw1izLY44vLapNDnr+BMXi33TpWaNnYbLL7sViKOrF5gbsry0Bi4LyWNwbQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMrxwiCZDnFpOmMsx5gs9
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 04/28] x86/hvm: avic: add domain state initialization
Date: Wed,  4 Nov 2026 17:33:21 -0800
Message-ID: <20261105013347.719392-5-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF000000A8:EE_|PH0PR16MB5183:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 0d2be5b8-95da-4459-68d0-08df3adcea5d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|22082099003|18002099003|6133799003|10067099003|56012099006|11063799006|261026140227099003|261026121527099003|261028144727099003|261021121427099003|261022105027099003|261102123227099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	Eteuo5GLf8GzO2UvN0vuWVmgdvy/1l/Ii+cQ8nWisG2FF4ofHsl12RaHBofvk4LydgHQhSIkzlXMYLrkwnMnXmiEZl11uRaG8c1Meg4akK/HfV/FWvZm+YLVNXQ/cD/T9gQVSJNEPGjMRQlg3Ur540mQMfEXg67Cvyxgg/NVdEveealoMlF5JbHC3i8Nb80cEsc74FXXLSTtGBWVXHG/hrHUHqzQhwHe0dnkBbIw0sTuYqNDUgsDFcyOJb954mzEGVFkryP6lpdsC9Io6qeXe/NrBtLQrFrZtj6Qk4xAS/SDeoVxpwf+JZSzXpc/izIXnxNdMSrsP+Dd/BjEoXHlGNRbLpWv0tM932tTnjnl8DfZL+C4GxExjlwr3OTAh+OhIAueQgHiYn6exyPGn+qOQEn3xDlQQKCa6P8pDcz8D3lC4+SFgrw6kxqpDNM3WeWSXcdk/3rK0JPpWJ53XruDdAWaK1WX5PA4glKQRn+419kYjn17+M/xkj6TpvcobWfzFXWeaI6UlS8Zrx0k32YjdqY4Cbn8hI3ksfiR2fWN/OlMeVrKfmOxi0XVV9cRtfk7ORZWNEUGjvGzOXFfnPRjsrIkKC0kYDB+8ZB2GJyevO+gbDC0uo3gIkixTAZeuggHpGu4qefnw2jLWaK4i7uiAZEaLVuS0Lt4//p+7KWlE5B8+1ScijpAlgfTxyafq4awkUlzh46l8FcWI8vSCsMrsw==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(22082099003)(18002099003)(6133799003)(10067099003)(56012099006)(11063799006)(261026140227099003)(261026121527099003)(261028144727099003)(261021121427099003)(261022105027099003)(261102123227099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	kdmMjnEr/BKbkI8tOqCENzRgcD2BV4TvT+TWSPDhFBxRhkzFV/917HAYUjKCu2XlBlAYfbqL4Wz1MmkLA/2VQJP3nyX9Xla9I/DOaRLevGJq9x8VlzPOSGsisk18+0x9/LH1Sc3ejfa3HzlLe1SLz6oIISm9w8b+gi3Bxa9Q42pJYZq5Az/5LecIpWTpHs6cLlHuKG/OVunnIDN4zFcKXoldNjiamp1o468VclmLC3C3Rqp0T0LHuzW5U0xYwu7TwRmyuS4CbApyv+kjttyZyD/iuayl4YMQcXsv7MH0p/LWKl9de780dDoyvPeogh1NNfvirAAE84GGs0kFn45FePlddX6zW0nK4Ama3aDT0aoDrjGOiZNNUQw73qsUr1caGNzKhGBFX3XoVtaJBiD0sKSIfDa7PqN9ZtEzkxWQbJl681N+0PYJvKVCoQpFYxNf
X-Exchange-RoutingPolicyChecked:
	yh26y6cnjlc9WruqWkG0fzJBnPHOrHv+zUJGu08CkHbQuCddc/ul34RN6PDUfNeQBG4+D1thaN3tGsE74Ml7mwO3AiyvgJAoAZCVvgKByjy5m0nCmlaE0KCVYPnd2ky2VO0A/N7isoGw41fq3+et5dvNbh7v4g6eG+9o51P3nnZt+iRMz/jApdd3QGMCd0oP2MC6FjGPz/LiULO0rEc5MYDpEkbQ1MAs3TVtQM+NKzxoO1up+lsbjEZWyRgh40BksfP6U6So4/+N00kvHabvbDwnYvXr28Zr4i8iC/0EU7LEgxk9RIE5bSIi8cOl5Fz4YTQryT+7wzvX35C7E0wBWg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	HxMAGQSi+xh8ZT8RbPoQQOVKcGdDy2D4DYzOlP7WTKiebRtEi3qHPs01LvwsiujE+0zkts58AbHc5yvRbgyn6QVTqpzCXyyI20TI6FfC44vUzABjOlRGil/VkmVFnA5/HH93lJHp/Ft9bJ1L8SrI/n06d898FK6oeRoJfB4hYJw8jT/7S0QX2KgNiNVJshi3gfh2YiyhS5E4lXLgkDyAZWbTjYtFuKNCw8AxwyMHs7xkfWlGlttbExZ2bExZtBjO2KdnVSRGO1gy58XwItvciIYOmbYFTmLfshiVL+sO0CigO7dB613V2uHErULyV7IkZB2YynGMBOLnS3iz4qHxbdkY+rkGSvhEN/sTya9v1X+gwVHvpa+1sGzEIAtljAS3tyr+0yZ2wFrbgm575SE/isTy0PQRpMHDE7v1urJSmRKfpaW2Scvfg9q+zhGTCMQE7RI0cG88e7RteWjKMrSRKDMLSPA8z0jExJdFvXfeBa2ZKU8wQN8WNyW77YBNV50DVXYhhFQ/LovxPNqH0MnfGpa5vr44go06GOwANcgajpO1aGO4q8djxUKAWpcQmZJEesD15ZgU9rU+Xh3ryTSDqOCREOjK+Wb4katUjv4HEaUqGMQYtpSHVKSDz+ZXQc8CCSYNXGssenhURaQBHvVl5w==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:20.5983
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0d2be5b8-95da-4459-68d0-08df3adcea5d
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN7PEPF000000A8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB5183
X-Proofpoint-GUID: M2S_k9zGP5pFJBsaG4adDjK_75sAOxFm
X-Proofpoint-ORIG-GUID: M2S_k9zGP5pFJBsaG4adDjK_75sAOxFm
X-Authority-Analysis: v=2.4 cv=LcKpeTfi c=1 sm=1 tr=0 ts=6aebdd21 cx=c_pps
 a=Eb813/LJkoRL1pr8t+D1ZA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=X3KReqg2EL6A36SYCKpz:22 a=cbNQJ9GKAAAA:8
 a=zB3gE8vstAoKj83shg8A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXxt6yiVB3ECx4
 aXxiwdSkY9d1SokJit2rZpLKV4cC83pTdrhPrHkmYT57PAa1aSwKeVbS7Kw9DyTVJbbYNDd1cc9
 ii8w+cFCUOU1r6RyAOcw7nHEQULa5fbE693QUXioamUjG37C6/BTnLK/V7Er4SLh3KPPcmM7zAG
 xWl/f7A0QPwaHGLmzTN+EhL342/N0J+KtapKOVnCOaEkPT27gZCPm57ue3fsD2taVEEgzpvc2V6
 ECByO3miMU7ShTNJMISFUYoFmlgLbUAjyTCvuuonhMddv3/Bdh45RoG9Hp9Mb3fFhpeRwLw/JQ7
 MiQQofRMleNoFTOrgTpC3ZdXqjshr9tAbGuCAulfJBUKTqeuqDrZDgg5im39Vmwq5LUeWXacNV9
 S0eIl06Olan+7d0Wm6rfVpkYWjiuUGbOTaPAM85STsWLp5ADq/LiX4q8Mc4I+HqxbVSmll4+wOI
 3Fr1uV3nSQg2+xb+6Pg==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXwACeWiCR0vkR
 SQPLloUqZgIDr4Xw/+zaLC0WUNO/k5nyzjjn+q7eCPCEvHUUjvpAEVIQQqgsFJiJrYVDeiFGRHp
 Dz47mLSUYjGlOZoiT/fY295KzqLhvAdZt/3irRQfPN5A8GrbS7as
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0
 adultscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-ef75cf/1793842467-A7CD7AE4-1913EE39/0/0
X-purgate-type: clean
X-purgate-size: 7952

From: Denis Mukhin <dmukhin@ford.com>

Establish per-domain SVM AVIC backing page mapping and SPA mappings
for APIC physical/logical ID tables. Use MEMF_no_refcount mappings
similarly to Intel's VMX APICv setup.

Gate per-domain AVIC state initialization behind 'svm_avic=' command
line option.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/Makefile            |   1 +
 xen/arch/x86/hvm/svm/avic.c              | 136 +++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |  14 +++
 xen/arch/x86/hvm/svm/svm.c               |  20 ++++
 xen/arch/x86/include/asm/hvm/svm-types.h |   8 ++
 5 files changed, 179 insertions(+)
 create mode 100644 xen/arch/x86/hvm/svm/avic.c
 create mode 100644 xen/arch/x86/hvm/svm/avic.h

diff --git a/xen/arch/x86/hvm/svm/Makefile b/xen/arch/x86/hvm/svm/Makefile
index 8a072cafd572..7dd16e32a77d 100644
--- a/xen/arch/x86/hvm/svm/Makefile
+++ b/xen/arch/x86/hvm/svm/Makefile
@@ -1,4 +1,5 @@
 obj-y += asid.o
+obj-y += avic.o
 obj-y += emulate.o
 obj-bin-y += entry.o
 obj-y += intr.o
diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
new file mode 100644
index 000000000000..2c0e113ae34e
--- /dev/null
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -0,0 +1,136 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * AMD Advanced Virtual Interrupt Controller (AVIC)
+ */
+
+#include <asm/hvm/emulate.h>
+#include <asm/msr.h>
+#include <asm/p2m.h>
+#include <xen/param.h>
+
+#include "avic.h"
+
+bool __read_mostly svm_avic_enable;
+
+static const char __section(".bss.page_aligned.const") __aligned(PAGE_SIZE)
+    avic_apic_access_page[PAGE_SIZE];
+
+static int cf_check avic_parse_cmdline(const char *s)
+{
+    int rc;
+
+    rc = parse_bool(s, NULL);
+    if ( rc != -1 )
+    {
+        svm_avic_enable = !!rc;
+    }
+    else if ( *s == '\0' )
+    {
+        svm_avic_enable = true;
+    }
+    else
+    {
+        return -EINVAL;
+    }
+
+    return 0;
+}
+custom_param("svm_avic", avic_parse_cmdline);
+
+/*
+ * Enable guest accesses to APIC_DEFAULT_PHYS_BASE.
+ *
+ * AVIC walks the nested page table to check access permissions, but
+ * ignores the SPA from the leaf entry and instead uses the address in
+ * VMCB.avic_backing_page.
+ *
+ * Install a mapping so APIC accesses don't trap to Xen while xAPIC is
+ * accelerated.
+ */
+static int avic_set_mmio_p2m_entry(struct domain *d)
+{
+    gfn_t gfn = _gfn(paddr_to_pfn(APIC_DEFAULT_PHYS_BASE));
+    mfn_t mfn = _mfn(virt_to_mfn(avic_apic_access_page));
+
+    return map_mmio_regions(d, gfn, 1, mfn);
+}
+
+static int avic_clear_mmio_p2m_entry(struct domain *d)
+{
+    gfn_t gfn = _gfn(paddr_to_pfn(APIC_DEFAULT_PHYS_BASE));
+    mfn_t mfn = _mfn(virt_to_mfn(avic_apic_access_page));
+
+    return unmap_mmio_regions(d, gfn, 1, mfn);
+}
+
+int svm_avic_domain_initialise(struct domain *d)
+{
+    struct svm_domain *sd = &d->arch.hvm.svm;
+    struct page_info *pg;
+    mfn_t mfn;
+
+    if ( !svm_avic_enable || !has_vlapic(d) )
+        return 0;
+
+    /* AVIC logical APIC ID table */
+    pg = alloc_domheap_page(d, MEMF_no_refcount);
+    if ( !pg )
+        return -ENOMEM;
+
+    mfn = page_to_mfn(pg);
+    clear_domain_page(mfn);
+
+    sd->avic_logical_id_table_mfn = mfn;
+    sd->avic_logical_id_table = map_domain_page_global(mfn);
+
+    /* AVIC physical APIC ID table */
+    pg = alloc_domheap_page(d, MEMF_no_refcount);
+    if ( !pg )
+        return -ENOMEM;
+
+    mfn = page_to_mfn(pg);
+    clear_domain_page(mfn);
+
+    sd->avic_physical_id_table_mfn = mfn;
+    sd->avic_physical_id_table = map_domain_page_global(mfn);
+
+    return avic_set_mmio_p2m_entry(d);
+}
+
+void svm_avic_domain_relinquish_resources(struct domain *d)
+{
+    struct svm_domain *sd = &d->arch.hvm.svm;
+    mfn_t mfn;
+
+    (void)avic_clear_mmio_p2m_entry(d);
+
+    mfn = sd->avic_physical_id_table_mfn;
+    if ( !mfn_eq(mfn, _mfn(0)) )
+    {
+        unmap_domain_page_global(sd->avic_physical_id_table);
+        sd->avic_physical_id_table = NULL;
+
+        free_domheap_page(mfn_to_page(mfn));
+        sd->avic_physical_id_table_mfn = _mfn(0);
+    }
+
+    mfn = sd->avic_logical_id_table_mfn;
+    if ( !mfn_eq(mfn, _mfn(0)) )
+    {
+        unmap_domain_page_global(sd->avic_logical_id_table);
+        sd->avic_logical_id_table = NULL;
+
+        free_domheap_page(mfn_to_page(mfn));
+        sd->avic_logical_id_table_mfn = _mfn(0);
+    }
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
new file mode 100644
index 000000000000..3da62f59b0cf
--- /dev/null
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * AMD Advanced Virtual Interrupt Controller (AVIC)
+ */
+
+#ifndef __SVM_AVIC_H__
+#define __SVM_AVIC_H__
+
+extern bool svm_avic_enable;
+
+int svm_avic_domain_initialise(struct domain *d);
+void svm_avic_domain_relinquish_resources(struct domain *d);
+
+#endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index db81dad4b681..8b7bfed0049f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -40,6 +40,7 @@
 
 #include <public/sched.h>
 
+#include "avic.h"
 #include "nestedhvm.h"
 #include "svm.h"
 #include "vmcb.h"
@@ -1084,6 +1085,11 @@ static int cf_check svm_domain_initialise(struct domain *d)
         .to   = svm_ctxt_switch_to,
         .tail = svm_do_resume,
     };
+    int rc;
+
+    rc = svm_avic_domain_initialise(d);
+    if ( rc )
+        return rc;
 
     d->arch.ctxt_switch = &csw;
 
@@ -1095,6 +1101,11 @@ static int cf_check svm_domain_initialise(struct domain *d)
     return 0;
 }
 
+static void cf_check svm_domain_relinquish_resources(struct domain *d)
+{
+    svm_avic_domain_relinquish_resources(d);
+}
+
 static int cf_check svm_vcpu_initialise(struct vcpu *v)
 {
     int rc;
@@ -2384,6 +2395,7 @@ static struct hvm_function_table __initdata_cf_clobber svm_function_table = {
     .cpu_up               = svm_cpu_up,
     .cpu_down             = svm_cpu_down,
     .domain_initialise    = svm_domain_initialise,
+    .domain_relinquish_resources = svm_domain_relinquish_resources,
     .vcpu_initialise      = svm_vcpu_initialise,
     .vcpu_destroy         = svm_vcpu_destroy,
     .save_cpu_ctxt        = svm_save_vmcb_ctxt,
@@ -2464,6 +2476,12 @@ static void __init print_svm_features(void)
         printk(" - none\n");
 }
 
+static void __init svm_avic_start(void)
+{
+    if ( !cpu_has_svm_avic || pv_shim )
+        svm_avic_enable = false;
+}
+
 const struct hvm_function_table * __init start_svm(void)
 {
     svm_host_osvw_reset();
@@ -2487,6 +2505,8 @@ const struct hvm_function_table * __init start_svm(void)
     if ( cpu_has_tsc_ratio )
         svm_function_table.tsc_scaling.ratio_frac_bits = 32;
 
+    svm_avic_start();
+
     svm_function_table.caps.hap = cpu_has_svm_npt;
     svm_function_table.caps.hap_superpage_2mb = true;
     svm_function_table.caps.hap_superpage_1gb = cpu_has_page1gb;
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index 71427b3c11d1..30bdaf27a856 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -15,6 +15,14 @@ struct svm_domain {
             uint64_t status;
         };
     } osvw;
+
+    /*
+     * Domain AVIC state.
+     */
+    mfn_t avic_logical_id_table_mfn;
+    uint32_t *avic_logical_id_table;
+    mfn_t avic_physical_id_table_mfn;
+    uint64_t *avic_physical_id_table;
 };
 
 struct svm_vcpu {
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473171.1680802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN7-0004dl-GU; Thu, 05 Nov 2026 01:34:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473171.1680802; Thu, 05 Nov 2026 01:34:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmN7-0004dd-Ce; Thu, 05 Nov 2026 01:34:33 +0000
Received: by outflank-mailman (input) for mailman id 1473171;
 Thu, 05 Nov 2026 01:34:31 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmN5-0004aF-KQ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmN5-000x9s-15
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:31 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdcfb-e002-0a2a0a5209dd-0a2a4505afaa-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:31 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd25-4cb1-0a2a45050019-94a392172a28-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:30 +0100
Received: from pps.filterd (m0367126.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n2FD3732573
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:28 GMT
Received: from ph0pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11011008.outbound.protection.outlook.com [40.107.208.8])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr983v0mj-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:28 +0000 (GMT)
Received: from SJ0PR03CA0174.namprd03.prod.outlook.com (2603:10b6:a03:338::29)
 by LV3PR16MB6148.namprd16.prod.outlook.com (2603:10b6:408:1ae::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 01:34:25 +0000
Received: from MWH0EPF000C6187.namprd02.prod.outlook.com
 (2603:10b6:a03:338:cafe::68) by SJ0PR03CA0174.outlook.office365.com
 (2603:10b6:a03:338::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.8 via Frontend Transport; Thu, 5
 Nov 2026 01:34:25 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MWH0EPF000C6187.mail.protection.outlook.com (10.167.249.119) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:24 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n7xA3230794
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:24 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp8m-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:24 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmMvxjRLZf5COOmMwxlL7c; Thu, 05 Nov 2026 01:34:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=l3V
	I2UqiyuTXtjuzK4WdaMvCnS6o/o+hC2gZAMXBQR4=; b=WXE1jCTQ+WbgVcdqpN0
	P0I6aHik/4TV1WNTXDbw5HqtJ2ZELhbMZuxOVZjtwWl9Zn3YN3/tlQWd3msN7pSo
	YXt/HP51pY4PwtUR/9z8WHL41+tQLZuXHHGzndhWuJE8Nuq/1fWuB5WT0YUe919X
	bcM8YMV95tK8med1Bf0cRR8QHdcaZ9hBtbdaPBpGduxbuZaVIYAAgbs03y6ERDMO
	Dnd9SSb4WKPX5+VxZEYmxJJSs4CxzH722NGGvjPUmBmpRpY3jI2CrREWPMObuT7T
	Zu5oDDrsUAwaTGhHruFkOYP/Cm3wCL8ahNf+dk7UPHY3UPdo36sgl1h/plSpRV5k
	+xw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vIaCAtprUNX6oFPmVXmUftqL2Tzin78b/Jo3F+LC+7Beis8aHaGYvELyhF9TCOSqFiOL65XNDlruza0B+ILLgWce29hxFTSvXEJ1eAu4gI1We9fhTvLBN/L3doAA6uqQw79MjzaDt6d57ojb4DWQT5Ocsa9MNCnQPOexw+i6iMzlPfdqBrTCBO79tV1pEu0wufYCPXf3AMz2MtryMJtx0nOrKFJxDvamGrz2a5c5La4isD/K+3q10M2pmckHOdTw0i+2QXvSPEBFl98sNMpRFjJK+0TX6HMho/YNb1wikIJaX+Z4TxMLTWUJwt8wNw1ZKpcMdgyoovSkEN+AHwOPvw==
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=l3VI2UqiyuTXtjuzK4WdaMvCnS6o/o+hC2gZAMXBQR4=;
 b=Ds3ky+rYAGkOc0mAE6OWMMzq8TU2xvTvDHLAu2S1YkY1P8cimC2VCLUeV4NirvWb4fzRyrUnhdpqFfldy035cyw+B39VgmIpO1nmHzSmC2jxncSPJLybuOw3ANxEo2So78BYHV98bGHxUkeHwjaCsujbnMNEBS8hMbvqw/vpiurqGgepRaXbgJVtl11rAVsB6CKpIgJBIzJeSCSwGfFiGBZXVjpKSPAieT+RSxM25Fe2nOvRrH40FeqQSDs48PN53Mga1da5hWsvHmQDj+JpRNHDIEsxckVEmzAXM/ZTtAt3DayD20ariGs4hZCPCkVdQou06LM2yYlSpbpjRBxpKg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=l3VI2UqiyuTXtjuzK4WdaMvCnS6o/o+hC2gZAMXBQR4=;
 b=U4ub1Q3dXhIYKr4XNKsQFiyS2yxpbkuodT7jkCZNQi8VbxSBOdiV8rCmaN4Dt/fYG3ShbzEYk/IjZXC0LtInY8Rbp5zH7O5yzSwlLYVWbdyVy5RVEKAO4AdA8CqhRjtNhJtFfkwjqGJgza5TpWRgHAzEa29IXtEwelEIcbZVkaA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=l3VI2UqiyuTXtjuzK4WdaMvCnS6o/o+hC2gZAMXBQR4=; b=
	Nm+tR6neIIrfeQY9P3c/MSTJYvowbkzp+vJBU280JAReWLLZKougDDb9jBevgaAj
	jeb27WoO2iZv680AA+HmwBW6BmoxA4eTpfHTpxAzBMCWg65Ck3F/pvxDvQw+urms
	g+iw+sfbZNN8dgKEFXavp534AuyYyBm7maADXMf0t8Gbpq2BQ5QzlvtiuZ4J6rr+
	wcBG/Y8aCZftg8yqP7OLC6UR05gTQ/SA4onsR8C07MNyqW7grDwQFuBsOxH82V05
	yDcM+JBCflz8f+2dEa6vWVyJE99TuKL44KEGXZJ0d3p+aZ4x2Dxxn769cmSILavB
	cEHcTAjXZVRwrvOoBr8nqw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=l3VI2Uq
	iyuTXtjuzK4WdaMvCnS6o/o+hC2gZAMXBQR4=; b=Kday18v9AP2nwQDvjmm48oS
	ob2iwendLQHRgRbkF80m+QFtCqcxGigD1lM/AZfFtpU+LUts/VhYWwC8phzdCj/L
	W3tqDhtzzTzKia1glkQeZX95nKzgihuzbsUZgrnihDe9mk6cgld5diK1htB5DHS4
	sl0KKTat7uXyImOEtLH0IsBDeCz25aqC+f8YeJ1FCwIFRhqg7wyYdbpG5oAKlFoX
	KuQtMa3iMfv8YBlG82/Ji0lbxir+21oVeh0cYJLcxggCQKMfgfQT+R9hUdWZIlqn
	eii94LZotLlz/elWjYFKvXcdkUGmlZnogpL3fBZ+O64hnit3LVPNSmzt9Q31FhQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMvxjRLZf5COOmMwxlL7c
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 06/28] x86/hvm: introduce vlapic_reg_read()
Date: Wed,  4 Nov 2026 17:33:23 -0800
Message-ID: <20261105013347.719392-7-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000C6187:EE_|LV3PR16MB6148:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 6e4dc320-b287-4952-b5ab-08df3adcecc4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|23010399003|82310400026|36860700016|11063799006|261021121427099003|261009223027099003|261022105027099003|56012099006|261102123227099003|261028144727099003|261026140227099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	XT/G3HyibNJZGhhEUFRp0y0Pn21VaG/psZteCbcWYHikXxGofoaUrD7UELCb53F+sI4U2xWhIcZPJ51CWNTMOu65AnAk/kzkZhfwsUeUSHkPrKTQrwvcIVoyx2etahGoEcDY5FADFWpgqASOTJAdroc9kBdeqtBqw/2xzspNG0wB7Xg3E1ErniO57ZFBgTh2GXfQ2a+9FZQuxT/v0j0xTytQVXBO0xy/f6iOX2JXDiU4HDCaIEgBbZ+pspSqMdd/U0Kv7S6jKJgpBowaTt8bKKmYgo4jTDsXVAqkkX1ro77P0Kb6A/I+a7uFaX+hXwUascrC0SIB7E15hU6h+5qmlOnUuk2XO0DMrLZsIvfREbG4mpI7hg6TVs9q0uKO2tb47vJhiVpkizuY6GqEi6OczJYtLsdefVzpx+9zo+p4m/ZQFJ7N5A1qJ6tabDICSHMXQA46+UlNtGLxvW3uGaM6qDynmhWIiWaggNBoddJalZsZyORnD24MZNcBI6/IvVCyOBlhMjSnL3NIPCwnmF7szBnvog5AE0LdS/OZ+LRZoHwM/dCQYsiXN+00KHIZS5f99YzVdhGLY7NdQZAQv1xm30YFC7zUGgghTEbDi+uFXL2H7N5IbpqoMWtaNpM32mXRbr+dB3eimD68b0uLZDMMD0G0zSW3CqmdqP7bz5m02vEGsuy3ebxcR7wy7LnQm1Db+8NaM2h7AEnxeQrpZ1/0QA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(82310400026)(36860700016)(11063799006)(261021121427099003)(261009223027099003)(261022105027099003)(56012099006)(261102123227099003)(261028144727099003)(261026140227099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	G9rRAs2m4fxSgJHTJZBttB78kDwmtL91VZp8c2CUe3J21qWESRMXQOZdqnwLdvahZ6gxyp7r9wuyguBQKa8HS/MnaCKJOoy7m9nSIz+JeB3iQ1k+skFZ9mww9vM9vO/B76i2LaQNcSggpWLF5t/6zub7iqZ4ANpEo3J0xdYpZQMZSlUDtAwWkFGkIYF3lFGt5K0nXkCNdx+0THhVt4Qzjjz6nknENk3UjXGuEu87CAWdvJpXbamSAUa7RPUn2IZfD4cQu07K8wHGQUWSXwEE1mzhRc3gEmWxm9T0gde3OWLx3kOKosa6/vbY7GoOGvbKrQflwNAmUnH+Smro9iS2F8dUOwlJLBgVUbemEg1W9QruDIp50OaffeiFn6/UOLhbpoTBLKzaHkKRPkZQmpwmBagUnx6oeKARlVcmOtVWM/pn+TH/Uv6ipBz6JtgFb3m+
X-Exchange-RoutingPolicyChecked:
	YCcOHLDnsuzMQGM5fWFKgyh0jefqCqgE8dNOhY3NYY366lFv3HXlXi3ypIJVOtTkC6BjQuPWpQTByW/IBl4uDOh+u8BEcBOw+6m3D1veBjzqrB1z9hSkQiIhXuh7HK55UQgFSFdsCeab0xMWD51PU64WncKtOAnrxCIbOEokRfVuxGn4PqPhLhoRTE8p4WUOKw5Q6GvQQkkOwltYtWsZ5cWJ0SY4chJio7/2BirS2aS6o83ZVXgrCXzO/mzkeh468zBXophrvarwGbiLwHvYZhntWZvOkIdjBeD73BSH43lwxDuPaBRRwZMKAHe+Ay2dek3aDv55AElRP3GUPp1YPA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	bH6aZ+6HzvtHRAlO1iEkhVzMF/AbhHgQziS3AE3aqlNiuSMCkyEyXbEbjQHepFA4O8VJzZ+mvokasOdjICZBL6VudzDtVUIG03K1mlF7dGHj0Pd2FYCgi2FSeUZba7V1XWOUMpF1pWVw0YjBVJSI905eyNpOgeOI7YOqyKBoMPQR5E602RPMieFp49BKs+GRUZZxL5QkSSvf9/knWu3bO7UEC133Np14GyZnoIP49CE8My3z/8V3+DZaxU7HhzjgTN0HALfkCu9LTj8Ztou7sQm0/76iwfTnQX1UlizyES6L5DNxxCBF0lUO+phh3Fl0vD0t66WnsI4uciLqwOZOqGzOwi6DBrfJ3bZBtlfUg5p0ZRvI/cMoKSmDs8XS4y8OrbwW5XLllCK/nuc2v3m1gz9BUu6BecnVcgQgrbW7m/6EIw63Ahkhj8gv/oHro6+A2EcyqSDPOOhb8l5eH9RCmzIDLdBVhIbI6UMiEcbTGwxIgNO8lKyvoDguwBkfjeYQajuRK+asM/njMgqqgNISS8WphEyzk2QtjGD8+lChueQXuxiRcBGtFEljIHoDXm1qhHoXbIfseBnfR6Bd4eEUuR0Hx0O9YOzRUqP0q+Ql/5vFYbr8E3Bgbbul5f7y2pm7Ft9o5MN+rJQomDZBF8vuNw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:24.8096
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e4dc320-b287-4952-b5ab-08df3adcecc4
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000C6187.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR16MB6148
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX8owVnu/EsSNi
 S+cgn0gUqbtQdZE4HjOV6Bd4tmoRS4nbtX9m+oTi77/rhnOmbO189QJHnrCoQJDb2e1xCaJirqI
 LmMjQ80TH+Kd6Wr6MUmj4VFPjBgXfvfUk7qcqiNcYDfC1xMwMPyu8719yTM1HNEJzcddWMAMOz3
 70OaKPj6iuDN+Hu9uTUPtE3HeQEVuHBFmRlAZcN2Sn1NU/maDpyo84fe65dLyb9AR4yGgy6CRsZ
 EZtxPlH77XL5TUMmRX6IXWRtZUxwizqDlIwO8zrGMFhJvwGr8cLEQ2dJ4dTzg3qqB+8D1UXYnTd
 QP62hecB/SEz30G/cdU4JrknQZxO4Wl0v3N1ol2TMXiBJySLJEVknZGyhz7EDVMcgFvyhYAHzSM
 DNo1lAzojhpo6lrZ6VbfkM9SMdLt9dj1AnHnA8tTXxKuuMq5I3SlI9TsWBt15XV+pmbiWSshW4w
 NiZ77Y4ckOv7RcVNJpw==
X-Authority-Analysis: v=2.4 cv=AYYkjHXG c=1 sm=1 tr=0 ts=6aebdd24 cx=c_pps
 a=1GamL6rn6SUPLdETXxLFew==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=-OawqTZBqJjt90xPb8wn:22 a=cbNQJ9GKAAAA:8
 a=F9tOGt1jHpDytgJGuyAA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-GUID: MZ-sftMiLuKeln8qfxirwgBNNxbqC3_L
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX+xpFQ7TRVfe/
 iALExdwUs3Ap7G41Dbm+bJ1g/VAmR84RSYHJ0GbgQYHlvMeVTaNsNXmF+NlqvmNx08fHvUJdEWa
 TeVyNwSqJT1KhOv+yf4+laMLJjxFhJ2AWl4avfVaxcn1RhXY5P4N
X-Proofpoint-ORIG-GUID: MZ-sftMiLuKeln8qfxirwgBNNxbqC3_L
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 phishscore=0 adultscore=0 clxscore=1015 lowpriorityscore=0
 spamscore=0 priorityscore=1501 bulkscore=0 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c201ff/1793842470-720AA2A1-2A1305D2/0/0
X-purgate-type: clean
X-purgate-size: 1370

From: Denis Mukhin <dmukhin@ford.com>

Add vlapic_reg_read() for integration with components relying
on emulated LAPIC accesses.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/vlapic.c             | 5 +++++
 xen/arch/x86/include/asm/hvm/vlapic.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 6698779e227c..f929fdfd74ee 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -618,6 +618,11 @@ static uint32_t vlapic_read_aligned(const struct vlapic *vlapic,
     return 0;
 }
 
+uint32_t vlapic_reg_read(const struct vcpu *v, unsigned int reg)
+{
+    return vlapic_read_aligned(vcpu_vlapic(v), reg);
+}
+
 static int cf_check vlapic_mmio_read(
     struct vcpu *v, unsigned long address, unsigned int len,
     unsigned long *pval)
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index f442dec3d975..95f6dfe9e941 100644
--- a/xen/arch/x86/include/asm/hvm/vlapic.h
+++ b/xen/arch/x86/include/asm/hvm/vlapic.h
@@ -97,6 +97,7 @@ static inline void vlapic_set_reg(
 }
 
 void vlapic_reg_write(struct vcpu *v, unsigned int reg, uint32_t val);
+uint32_t vlapic_reg_read(const struct vcpu *v, unsigned int reg);
 
 bool is_vlapic_lvtpc_enabled(struct vlapic *vlapic);
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473176.1680811 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNE-00053b-Nx; Thu, 05 Nov 2026 01:34:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473176.1680811; Thu, 05 Nov 2026 01:34:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNE-00053G-KG; Thu, 05 Nov 2026 01:34:40 +0000
Received: by outflank-mailman (input) for mailman id 1473176;
 Thu, 05 Nov 2026 01:34:39 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmND-00050I-GH
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNC-001wz8-TO
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:38 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd16-2eae-0a2a0a5409dd-0a2a450285f6-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:38 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd2d-6ca4-0a2a45020019-94a38ff1eb72-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:38 +0100
Received: from pps.filterd (m0367130.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mYBH2064415
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:37 GMT
Received: from sn4pr0501cu005.outbound.protection.outlook.com
 (mail-southcentralusazon11011015.outbound.protection.outlook.com
 [40.93.194.15])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrbp3t5w5-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:37 +0000 (GMT)
Received: from SJ0PR05CA0202.namprd05.prod.outlook.com (2603:10b6:a03:330::27)
 by SJ0PR16MB4798.namprd16.prod.outlook.com (2603:10b6:a03:42e::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:33 +0000
Received: from BY1PEPF00026956.namprd05.prod.outlook.com
 (2603:10b6:a03:330:cafe::88) by SJ0PR05CA0202.outlook.office365.com
 (2603:10b6:a03:330::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Thu, 5
 Nov 2026 01:34:33 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 BY1PEPF00026956.mail.protection.outlook.com (10.167.244.164) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:32 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50msot3109191
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:32 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swayd-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:31 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmN3xqmAt9qreOmN4xphDU; Thu, 05 Nov 2026 01:34:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=nTk
	i03+UZl4gqycijB+8IvHThLFtDt3d8yvUXUI72Io=; b=CUYcPoSsefN2pGo04jO
	hLevqQyjt7KZW/N/CkdF6JYX3fRjFGyJMlZvP7m4MjwCRc1eW7Kd587nVmhyVPdA
	XewUdHDVgmAHpQO1BAwbikYkGetIs/H77kI4PAsRj8yg7K84ds/W4YKSCWPCAaph
	NfdpuzW6VJsFQR57z1GRX48l9J+4GGBGB4eXL+W+3OE9TQBryGNzSkl4rHcj625N
	iKIp5Wz04CAQiV+TTDm5eEIrMGJQiE+yaTFERXtspdq1Rcwu6xTdGErJ1ERLfm5F
	BxS0qpDtBj325VX3LM7SBZbHGV+EwkM8ismWwQAFbXKQf1ZPNQHI2GruHv43/oWN
	jNg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YkA+Uc5xrKi2U5Pemwi9se9R18Bsxen+B8aDi+XnliSyyPEeXjXW0N0HXmalnnqTDH8KAJ3O0aZIhvaXETTDz25q+Hox+FLVw2tVJziDOqGMTI9uEDH1fPSno/9cstsNUWmVmcEBZg4ECuu9Gpw8XnUEOb71dYy6TUnyIPG/k3VJDzi8WrOByaOCb/Ey3kvqpSfh6UffhQjZAn0Wj1Tvw/IYsOYm2AfyHzvERWsKRRYL1cl2ytRPXTSLnClZYRAWVDJ++3LrlE5oqg/4y8qSvpODNzjk7pQQAguuv2+UoOC2HI0bRfF7btm/PfieSyz9w/e99QTsOL7Jx56yA/HgXQ==
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=nTki03+UZl4gqycijB+8IvHThLFtDt3d8yvUXUI72Io=;
 b=mCPjDQTcDzevPEQxlNvyo+2u4mVcCDxLXadxNl3MUXWE2esast4/3n6Lp1JJyOs1uok1y4YICb0KYHxP3UILWP+yK+qvTQYctI8EDliRpOahT0FhuCELUT5EUnSY2C6O6My0+fEqB+HbgjCNeuo4FMg8infeM5TFFDTAcU65tYBRXNwoAof5lysetiQnVxzA3847e86ivWtsWAJIzZfz/syvgKV0pryzeSuh9sVwHjCyTOvUQgwOVZhEbYwZttpiZ9i/Iss7xMTdZaV+lMbWx1IQegSVSElCOENOSj0fAx1uYJ0lcI+Px0/BYBbSEsI1aQ1/UcfRGlaJIjhxqv2pJQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nTki03+UZl4gqycijB+8IvHThLFtDt3d8yvUXUI72Io=;
 b=BEsmsHXj1ugyNU44pk418GpLZPJ0Uom4OHx4r0EyoXKUImZYJORRvNlAS+fC6E1zJwaU6lCrkhnDblHvAwMWHh/Om2MvFDEZTefgerJs3lWTgy/e3R/Bp3lXcaJe1IU5Ityvhxf6rk3ql0p/Xqrjg/lCFx+vOSPFWWX1pkCcxKw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=nTki03+UZl4gqycijB+8IvHThLFtDt3d8yvUXUI72Io=; b=
	bau7B4e1mzH3RDf8f3k5w8vs5SQ/zPMHzeK51o/IWNJtuECN9fazYPvMNq9HefRQ
	ejXL9W7rdXJZnAecXQbj2FHP1pmH15egDshSWd0NZYSywCm1Fqyq93LfLAnnuvUA
	+HNm/ED8YnVi/esn9O7VCRpNEh0Fd7H95a+sgtU4JbacmmtcjR0xVA5XpOUItq78
	KA4eAEroT5dHXpZnSRsEqcGom2QQETszXm/tJgEK8hdsSSsuj7L95pzoRlqwnx+x
	/Ca2COemg09pHpNAYCVwXLyAO0aaJxvVU0PmGQYlOulBm0bWxg4qdYklHGr8IJYZ
	gHfiSQ9kgCR48owasRYV9w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=nTki03+
	UZl4gqycijB+8IvHThLFtDt3d8yvUXUI72Io=; b=q2ge5zX0a9P9srRabtoHJBF
	x+8SMvsVfpKb/ILQzxitwT6mC2BuPzVeES57e8HHNv/EXWu7oS5gCmHuJp789Yyt
	pwpCufSMIc8M20ePnmGlJmEtQgNJ9YsNkWPN9kmDB4m8Yn5UchiUJVJMKFxIHKGa
	rbt2JEN6zWoptz7tRxQjEQbPRDyGHgGGyYre3G7D+AtMI1E1VbRMrfyA+A0FF59x
	e1ezCRQ91ifH/6uX2KgH1AvAbU5OTpXUMFgA0iWmE3MkYfF2CNWURr2qUqswqRrS
	P6K3Tgqojlp+R77pbCaPaQMtamPBgEkVV1LFsZnYt/dxyUEGmwyJQe6g2QiatOA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmN3xqmAt9qreOmN4xphDU
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 09/28] x86/hvm: fix hvm_emulate_one_vm_event() definition
Date: Wed,  4 Nov 2026 17:33:26 -0800
Message-ID: <20261105013347.719392-10-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF00026956:EE_|SJ0PR16MB4798:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 8e9c5f47-cc0c-4651-adb9-08df3adcf1b0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|10067099003|22082099003|18002099003|56012099006|11063799006|261102123227099003|261021121427099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	emQWucfHkP0nRzdC497p35+LDdUipX5hLMCpcdFzw+84n/ioKmtSdoCbT6Vy0dfgKW7uis3XUUKs2SuSBrNeH6fCM7awYBSgPR58HmSCcbxfKTOpbfaHzXtdZvD95/vqHJjCujggBubhIGQcXZxYcwihTDdrZrPfPgG6aM3Pam6Yg5pHH3Td+LMGRaOSQ9G4ISe4+ExnYM/tsyFbs4ZRc/n4aBfbz2Jqd0oR8HZ4mp21ojWq++Sg0aVoJSZivfmAJM6Uo+vo+Xe/dTY02UkKNl9aO5xJVcGWe3fOcKMsQEbvjlgo/rxxmE4rIDBU+kFH/gmqxNtmZwjc51eqwxkdNC0EsU4YD9vvYYYBYooUUqGcP+0+ZOgHCO5uGNNIm9tphpZ2gUhOMZcB84Q70i8/xnGnD76blbObmNDOrCttAWrYm75s4j7HJoPhpOxNvf/jAgoUFmkP9wk5FWOjKCGXM5y2hh86FCBOiUhceRVrq/VUrzDwHran97Gp6r1LKmG44qG7mFo4aZoiMgwL+ALD6CH8riGo7dKDLA5df9RtB5DjE7QRUigdCZRjApCNGviydVUtAj1opt0mP5X8V3KIzcUGFP8AHSUdjFkzG3S9P13tHF50mqq8I6Tm7FMEs2f7VwoNWCuFxbGTy5czDMisS+7GgfCEc2R5NSkvx9mgHj44niPSiSqIs2ozleIu3Xfx3dmQzhVPFQ+6Aq+EEse1YA==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(261102123227099003)(261021121427099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	muub5RWd1h/gWhJGcy8srySSPGlWQti3Xhu24XhL8dIpV6ALBfy7HFDNHTiuFdAwg2gAoQ2TY//XgANE7zrFkm6Nt8zTnsCftHl43PC5W2vjmQwmko0Hcm3G05ELazzCRk644roql+4ngt9Pb+HIKyTW1DVespXZk/H7dxqOmpqsmn/lvLIQ+GJTrZGDUux+pLdDtavx+RxIhSaTIiUxQ7WOWEKD4EXa/e9IO+kwXSjsmbJ19tnY1NAVZ90bJptfEixxw0ntPrilho1+4PaqJJP1s+dObpRcIhogj4K4pJIYaxqCXnR3tikh6gODknIrbpbqR9sRL3p2LNzgyt16OxpXJYGTo2NINtpNYvjx1BOrWjJG0VRAHcbwtRK8RW1lFXCYAh0iYdEqheE/TrPV1wvOSnQkbKOTHECK69qUbtBghqeGrzU0wDvz/TkTLJ5b
X-Exchange-RoutingPolicyChecked:
	ukXh7pShRVhYnZ7XOk0Z/uYn6UogwDY0NrNQ3eeCG3ynuvhy033pVGFToqsGN2GAghrm7ogIbrJezsrriqiFo1IXzsfPwsrQtNV2usId8twTY8U1/UguKpQOQcgyovOUDYGcCf0azxyzneHO2OR4QL2bjcU3xmWytiPvcSki78J9SJGj7LEIA3vyM5a291135W9ujKWVZYVykmvgHJf5ViOPvjH9LFsIcm1JC53dr/ucZEbIy68FWMBt2wv4jR+TPbHlXdxVMX22pxpKJsJ3iYPA5L/i/OI7sk1xtgaaNqKsT5Wvvr1qNFO7tAA29IGMs6J5XFTu2a/CQI3Zy1fbxg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	pPddtdl4daxUFEDp70k3/ECnpR6s6CfdkT+Oj5qoNQPoj2NnF5vE8AmiSMR7PzdoMEgZPgevb/1unSxI5qOFlFbhGZ9ZJu8QTF1ynWZnzvc18TirPwEExr6STwvQh2M50S75m7eFnNdEzts/BR/NMMNmojDqkT3b0M9bu4GfZLcgY2vxWT8zeU+zVyPE91VIHpR3V03A9ueFWROolu/dRRZu0fwv2o58XcHMD8iZC6C6aGZXqwyViDpbE0A003ZL1gWozK/5DBdVb0pOvf4NcCImMNPsf82CnPwFeve698g+oavwOx+YPCYvHKE2vEnQ7aqeI+uV7yriIsl7Sybp4vl5YrH1Tpq6Q01AiS+MvlOgt14SXa5M+Y4/5v4I9DiYq8JW2GSmnS4t5784Mj70EknyebFhN0FmzQZRD38ATiz683NMkksL7nZ4knIZ/u9xQFfNk4YBH8kNccpW8+fn5KrpELONKr+o/t9ttmGJx6LTKxoZJAMVTtDQzO4kpWBiz2H/RtdB6azdWE/XolsqhofXVi8D9UOQUhhQLrOcKlWka4XWLjeRjGMCLc31sUFcZpL+vsCT50PTfSCzv71S5dMIdc8idxp5CSSDlQ29CE4YEQGTsCFdJ9Lk6G19Jfg9jQYGN8uMMILpHcKGoibmgg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:32.8910
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e9c5f47-cc0c-4651-adb9-08df3adcf1b0
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF00026956.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR16MB4798
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX/QUi8FzXpBYI
 2j8v29mMf6TkbYSZE3l/XnarvvXpTFbXlJNpBNQppwf8IW8SOaWkSSgw8oYH6917kzeTF9SUwTp
 tddbIBstSu9tfbnpQMKvnPPPM4EOXr28OhNi4sarExrgLG5xeX6E
X-Proofpoint-GUID: CEQAcarf_A8mZH3YuZsAi2MZy8Ysrz6C
X-Authority-Analysis: v=2.4 cv=XuBvqlF9 c=1 sm=1 tr=0 ts=6aebdd2d cx=c_pps
 a=awRqKgK+okXhs1gjjWqUCg==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=vnUQfov-gS4s1L7hHvr-:22 a=cbNQJ9GKAAAA:8
 a=Nk3K2K5yrmZsCe4kseQA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX8avMRQ36qxif
 OH3K7yQUN1iquLLHwelg+C9yQPGjcTRG+4bDoLMrto2kW1h/q/7iJHLcu9ogmhdlhvMot09IcNy
 vD+gaRnheVA/nRuQV2l0iMcWUlzTrQJfIB8xdm0u8SvkZTfHFqP3SAQxZkpRkPWuN7CnU8Xk0DH
 yx3ZHAGTmDT+0uU+R4LPTNRjfCA6UW0daf+VgI1p0GiPgAP/Ue/EFPJL4EPA6IarJCpFDums0hv
 hbIhHiKaPfOCk9Dp07uFOS489FqJ98XD64wXY8GOrhBUwpmo7yC/6837MU4sctV8bZy7bE23Ol5
 IpUUh6tKlQyBgVd5n8EA4GKEOWmMo4Gn7HCCQpL8prjRtgQhBEP6K3o76Xj8KltrYK6nPhOdojC
 +EknkyFst3ugcKHjxCjDEwxWOYiSJMmLALKNtixAFNdankeMp4n8Xm0BWrOEven/Ip0VjCuXZsv
 RTUC2R2Q+G1YcMe/2nw==
X-Proofpoint-ORIG-GUID: CEQAcarf_A8mZH3YuZsAi2MZy8Ysrz6C
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 malwarescore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0
 clxscore=1015 suspectscore=0 spamscore=0 phishscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-720697/1793842478-F3CBA2AC-46FD2151/0/0
X-purgate-type: clean
X-purgate-size: 760

From: Denis Mukhin <dmukhin@ford.com>

Add empty definition for !CONFIG_VM_EVENT case.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/emulate.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index cd2831d34b44..c441cf278614 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2925,6 +2925,11 @@ void hvm_emulate_one_vm_event(enum emul_kind kind, unsigned int trapnr,
 
     hvm_emulate_writeback(&ctx);
 }
+#else
+void hvm_emulate_one_vm_event(enum emul_kind kind, unsigned int trapnr,
+                              unsigned int errcode)
+{
+}
 #endif /* CONFIG_VM_EVENT */
 
 void hvm_emulate_init_once(
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473179.1680820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNJ-0005RS-AF; Thu, 05 Nov 2026 01:34:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473179.1680820; Thu, 05 Nov 2026 01:34:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNJ-0005RL-2z; Thu, 05 Nov 2026 01:34:45 +0000
Received: by outflank-mailman (input) for mailman id 1473179;
 Thu, 05 Nov 2026 01:34:43 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNH-0005LO-FJ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNG-00CQOL-SL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:42 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd2a-e002-0a2a0a5209dd-0a2a450bc7a6-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:42 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd31-b7e8-0a2a450b0019-94a39217998c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:42 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mXoF2568296
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:40 GMT
Received: from mw6pr02cu001.outbound.protection.outlook.com
 (mail-westus2azon11012067.outbound.protection.outlook.com [52.101.48.67])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb0c-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:40 +0000 (GMT)
Received: from BN9P223CA0015.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:10b::20)
 by CH4PR16MB485681.namprd16.prod.outlook.com (2603:10b6:610:518::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:36 +0000
Received: from BN3PEPF00022BCA.namprd03.prod.outlook.com
 (2603:10b6:408:10b:cafe::73) by BN9P223CA0015.outlook.office365.com
 (2603:10b6:408:10b::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.11 via Frontend Transport; Thu, 5
 Nov 2026 01:34:36 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN3PEPF00022BCA.mail.protection.outlook.com (10.167.248.167) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:35 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50o3k63232408
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:35 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp8u-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:34 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmN5xkVxeqQa1OmN6xYkaz; Thu, 05 Nov 2026 01:34:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=tWe
	58/kB3r5LGv0urdMemSBr2xgv7ruuQtdgdFz87js=; b=ctAhcZOYTvXcXNmiScu
	zbGU9cM8KirWMMwG5d9Oa62mkbVKkmCtRjLTnwnAzvp3FJjLG1PaFNUUvJ0KXI+J
	2Lt8eZpq5fGbKvad1lEPVTTMwsxa37AS4CPKAGO/81Xrf+aAiWNyC1DnWYwRmtCS
	FxZqPEnKh+bu5w8dHb/NiqgTt8bMQL5A2aSNJ7S+Mh8GOuLYwSu4WXMIwTi8IxkG
	hSWfDA6dXt71UcN+9jNXsj5FfvOesAnT5JuQRCkRNlJ6yQwD1yzzUL4iSKzD+yM8
	+mcAkjqb6vqhVR83VoDEuXg/4SVadearmhY1EclSP1DYLrNZcFdoklaqgeJlSqxO
	ryg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hk7GL4ofILC6ag79GQxumrbG7aG5bBfytuY2zir9BrjdwjzeEyHbl9ukzMJmeIsfuN+yU/eM8D2EzVB8qCEfJ9O7k/Jc/3/1CpzLh58PYfGmkqdiKLxf5Qpey1rArGzNJ2rb1+QF+dvUIElU136ObLPnsjeHD9UF4ib26j0bav+DsgQ8MssRU6uPuKjjGWSCV70gzAWK/M8vWTdD01PCtPwsDj8k01CEjrY5KTKmVTsgSGA9pnklIVCWkHH9v62tgidqFw3aV9+WsXwAAGbtrXZz/WOoSuwJCdOCOZ2mlIQDFqAC9vOZQQudTLXIWVgm/l8/LlMnqCNm4f1/R/gJZw==
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=tWe58/kB3r5LGv0urdMemSBr2xgv7ruuQtdgdFz87js=;
 b=t0MR4LlVblecawtwNqDPGzX6+cSTkAvkbcHBAIovfIkxVfEyZW7eaVFBKvp+TrpR243YYrlJ8l5r5Yjkpjm2/kV44LAhlL+5DdN2DL1PRlIweNM9IyBJXVJTXVcZikAQSKAb1cvdQ8msQT31Aj7CYpgMpG0ZA888w2BhT7a2cyoE/xG4VO7D0QQ8Ad9dTJ227RF+Kei66MXCHNOqAXAHVlFGw23+CMIy4kja4BsURG3ai1n2+UBQQ/JPxOjscZxNU2RH/ZwmAZ136NXGOQYew9siuQL/pBETRb+YB9WxrahqYlCC02uamsFz5On0B2ZOamyF5Cfz7M4y3hkj1x1C1Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tWe58/kB3r5LGv0urdMemSBr2xgv7ruuQtdgdFz87js=;
 b=fajFF0MrR0OhMyPFOj/7HH8bTttFtiXMkf9ImiZNSEMbjPz+yL+zEW93LTFtw+ydvE8L4/7wcVbJrwCOB50fDs5UNwkVhsTFsUzXrI01tKoJ3KvxkqxoHZ2e+8fbUHr2fGAnbSDKgUaPOqf1VyiBsUCG0rmnrVoqAXO71g+tT3E=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=tWe58/kB3r5LGv0urdMemSBr2xgv7ruuQtdgdFz87js=; b=
	hqEIAjooQoov1/ZZxczNdmyD0Bsj39gy/tY2OztyAah8Nvfe7VR3ucDpmp3r4t9s
	ruERfJm/BzLulBcpzOpjYlAYZ9VTzMIPdv8rbpPsniskJeQTpqzuQs0Tu1L6ih0e
	IYTLMGVAzn6G8J7PdrYaol6UHMMw8LREy0H5Sa5uk9Esh3Q0OeAhVqHpyClsUi9e
	ONAwxUPzW/Fk4GDq4cO1mcPvikIKSmtnUGxyMnYz3uMD1G+hk3D4LU+8iGJ7ZVL2
	s59E1pi2iwrGz3CvDuoHzMQixfcshkMDcQbv4DuEk7J+Hb3a5qIH5xwnHGt1mgJh
	9RMsP4ExNtQStyggy4vDyQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=tWe58/k
	B3r5LGv0urdMemSBr2xgv7ruuQtdgdFz87js=; b=BRyHlSBOnDfYVyqcKsFE4+c
	y0rhAB18ck5lWBmROW08l/E2jwhdbkOHPeok3DLkRFKAd1nYtTsj5o47LsOEuPl5
	m+pEFEjg+cWsar0OxTbfTY75j7JbjqRBon5qD2rn8M812D1qJ8xc9aQ78fGu/lDI
	jSoHRbMAQF+m98dJFtIE31X8Aw0K8Mk16Jqj0EOkta4C7iW3CMrc7beu7x8uqaB1
	WDscDrSNytz8Tzfkvgxw3G21BMo0bpmYdb9l4ph2g3VEQVJ0qbl9kqKBXfEjWk+o
	3q/e6VqwDmH/UBnK2q341stf6HacNXu9johZKRAGPvgRPxMf0wFSZZBEXoKf03Q=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmN5xkVxeqQa1OmN6xYkaz
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 10/28] x86/hvm: avic: add AVIC_NOACCEL VMEXIT handler
Date: Wed,  4 Nov 2026 17:33:27 -0800
Message-ID: <20261105013347.719392-11-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF00022BCA:EE_|CH4PR16MB485681:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 3afd2530-2326-495a-d307-08df3adcf369
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022075727099003|261022105027099003|261009223027099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	lsx3Gaztf7bxSZaCWhXsQ1rw2F99X6VEk40vR752pWC3VSJp+hUC9VCgtF4YM5yh63XbDbEpEPPI2bEL80v2HRZNZwMTUdmSiHKiDzSVsLFZNIZ5OswepR945c34VliVve/xBkPkLVY+u5UzGwJeXABE0hHBBrNrDT1r2J1x6vl2WZGXN5wyAKUD0lBKHlDzjnYf8/msd562+1UMclnJAHHzYXeS6fqbGTODeCNMrCIfYKqqxg+gec7cM7UCyE46Etbxl3JhZrbQjDlBicopjG3ZXjEVO9ybo+5kjme7/BuntDLWzSvyb9rT3StX+9+q7WpzBElLsRBohPZm5n9/R3LBTu+J45oxXJoLDcEeLusNMH4Cd6mVLNGvBX9T/syXBrWMXjDA1WI0+MZWFJFuW5cEOb5s3Nrk4SJaRCx8KiCGwalOMOajvuP2yRnXQw4XEzHijkqqL7RZqqTEqU/iXywM8+3pFFV7KOaGJ4sgRX/v0UoUsUa8nSXn9XAf2cqYIitp478NA++c2arjm293C8ihfLQgzznLKCkSjR/Q05FSXD/DCuixrVOQtj896bcQWuMU2ev5fvV5GmD/X0D2buIwlC2+tHvcYeWcUVqjaeaXaYIZktt9qyvcgI4dkW9+VLmusYIO3oJVOWrCwXooJKpAtVdOnnnMIoeWkctUBGbIxBz+9eo9WfuYC9WqF+pmYq/N4hXFi6bIkUlvg45jdQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022075727099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ZyNyfK5ioTX0kHSCnwZZx0Yr8EuiXkbFq6pxE7O6yhsoV4snxSZp7ZJlaYhR6cdSyw9MM/ZS6jHuJ1ItSjVVAHNid4n3y8kR4UE474hoejNzyUXqVmINVNzBMvI6U6CSrxIikEJEg6gmsSFxvfaZPpeZN7h1wx+As0i04b8jkOlm/RxFfqdJhrKo/0nm+wOt+cDXIOAW0hFH/DupZ+GDz66uAXAoa6IcJ8RXgVV2u20Ffv0iGPmNhX4nZBShruvClCtDIrZxxheU+4j1gbDxt04HAJYg4YW1+j3+x/oPPeQacvMRxuSYKznRp5wRz7AKN1CKRQO3MSYpGFwU9BIV4SIs6NO+HUq8TXJfsQcwZ8fnUkRP1XjPFug6DXWg3xDb8OwYKc3s2ovC27izAFrlBc9kat74pFPzTFY/KrDBjzf0nodXuHq7B+2rY6Xng/rR
X-Exchange-RoutingPolicyChecked:
	D/WAYVFkcsODyPMf1BXK4WFHIr7s/ULKISNqEpvOIukmH1cUc8M+Ox+wGjcbCEUG7Bs0aFVhfMXkdDNzh2nvc6gS6Gy+/4o78b3DQTzfnmROaD6rrjLz6xcGoS7ZYdu1K/bx6rbTXBU96rDXOyWv3Sy/9WjBqDxMoWiv7dGaiHqBAruLjY5vlHonyPGDDHPP3vjdvi2qbfCfOGvgKsW1ms8zmmcPJLjK+jzGogAvtBJvYPV2oYxrRZIJAYhVZLD1LUdfAl+R8LBCfAuctI/Gf0wqw3yLQfUHJtBGqlLkpK6p+iNQQzsRd2UZwrwxCoY7Dq5QMg4L+2Pt5FXaciadaQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	wbzbvU8C2cgTWUEfOAaXpP6DnIzJOZdFooun4Mif6rQ0R/HccVvYP89tiyVclxpUoVzNQbi0RIxUQmpSx+iUfkusQAmeCFFGnoO0FWW7DnpumGEirNr4jcxJmFq6E1MH6wO8BzEfHNjrAXus3PBms9CSzlhcmzZVukoip1G6eHfGtGQJlnyl7PWcLt/+DwR7VZk7PXc6aZoZBIvQnJ9b5L7MIbXvYMj8lS7Kc/ATa8m523qpZ9n/1niZsXnZ8VrMfSsEmY45NTx3JgpbIPzQBZ8wgADbyfQlWmSQmmq+uu0vAVjPenT2bgy2HtM5OGMnZNSX7z4aSmBA4OX8m0BFnPLJxMCPELue8hp2fPxFAO+4pPyBy9ti0BxU0uBjIR61bSVkPICIEn3fWKkJCbZ8oA0thpZ7+Xloqt47OznRFF4ZvfsydpxngahTgubuqxPcTACxAiEyRsOdwQpmJGdGf8+ISEn9EPbc+i98YLHuOlpZEdhhH8dBHcy074O9S5zMnVai7LWoxGHf7Ik1YBUnIh5SZYhIm78i1wSER0Oj0XBzz/FL+Gb7rtUdvmvubsQmFDP38mEhyI66030Ze8KfV6pqJo4iHuVv21M6pcZ6XeqcLJEVBbodwcL7Ar1vDikuzip15756aFRCGd568y6Urg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:35.7964
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3afd2530-2326-495a-d307-08df3adcf369
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN3PEPF00022BCA.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR16MB485681
X-Proofpoint-GUID: o3BbgxQLKNzUpGJ4Gf7ebypfVRsSa4VK
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX6LKu/U15RMUx
 UKUBDrpV+JjPBbFAd5ZJAzCe8OxEDBhznvVCJbd1HH6/7yQ1dPdlbpAmGBADmVCwMy7iQWWITlD
 lHBtUNK0l+iRCIWFuML2yVRG+xvs0fRwTN84IOVxgHbkqMOI8oU8zDjqC9nqJyiV6hf3iGwKdg4
 guP8pmgi+F+4EM5yacqeRbwrHT5nYUnFo071mZo78c1537dCfQILQQhBoqtrPNmghpGarre5JyU
 /Dvu+9g+hreF/sOnLalSiEiuipKxQ0kGPOsNDZizD9dE1NCvjw6X0iE169nfw+k8Nc2OJqMBmjy
 qN+C1rHfLPwpzm9sG8xug8z0V4yA1wFIpzvr2d350RGJvXXiycehhkfV/i7RmgwbpE4B4BXPzgq
 Pnw0zRu5jBezSHWuOWvYMSVfJjbgOW4Ajx9Hap3AsjjyMEUnUs1vl9tq2twc1AW8EQpNW4u8JJ+
 uk8Z5tKXl7UZsJJwhQQ==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd30 cx=c_pps
 a=9ZCHOKVckkl3mlSiZqIMSA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=sanJ8Y4dvTXCnbUUTQYA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: o3BbgxQLKNzUpGJ4Gf7ebypfVRsSa4VK
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyPByiB8AgStu
 1VIYYd859UhE+2EInGaBhS4Jj+/BiPurK/3pXflNgdJanJNFBTfXSxpKpe8idpGmqPUZ+CaztU9
 jgCI+okH1z0iduUlIj6sm5X5KL2SXLHAzf5VBcDatCP0yac6/ZuJ
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-42698a/1793842482-AA8D99EA-CD3C9EDE/0/0
X-purgate-type: clean
X-purgate-size: 9939

From: Denis Mukhin <dmukhin@ford.com>

Normally, TPR, ICR and EOI guest accesses to vLAPIC are accelerated.

Introduce new VMEXIT reason 0x402 [1] to handle the case when a when a
guest access to an vLAPIC register that cannot be accelerated by AVIC.
In this case, emulate register access, specifically, LDR and DFR.

Also, generate fault if an EOI is attempted when the highest priority
in-service interrupt is set for level-triggered mode.

[1] AMD64 APM Volume 2, Table 15-22 "Guest vAPIC Register Access Behavior"
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c              | 196 +++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |   1 +
 xen/arch/x86/hvm/svm/svm.c               |   4 +
 xen/arch/x86/hvm/svm/vmcb.h              |   1 +
 xen/arch/x86/include/asm/hvm/svm-types.h |   6 +
 5 files changed, 208 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 0cfb21cb8e3f..18a814871133 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -12,9 +12,20 @@
 #include "svm.h"
 #include "vmcb.h"
 
+#define AVIC_PHYSICAL_ID_ENTRY_VALID_MASK               BIT(63, ULL)
+#define AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK          BIT(62, ULL)
 #define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK        GENMASK_ULL(51, 12U)
+/* Width of Host Physical APIC ID in the AVIC physical table. */
+#define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK    GENMASK_ULL(11, 0U)
 #define AVIC_PHYSICAL_ID_TABLE_SIZE_MASK                (0xFFULL)
 
+#define AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK    (0xFFU)
+#define AVIC_LOGICAL_ID_ENTRY_VALID_BIT                 (31U)
+#define AVIC_LOGICAL_ID_ENTRY_VALID_MASK                BIT(31, U)
+
+#define AVIC_UNACCEL_ACCESS_WRITE_MASK                  (0x1U)
+#define AVIC_UNACCEL_ACCESS_OFFSET_MASK                 (0xFF0U)
+
 /*
  * For AVIC, the max index allowed for physical APIC ID table is 0xfe (254), as
  * 0xff is a broadcast to all CPUs, i.e. can't be targeted individually.
@@ -211,6 +222,7 @@ int svm_avic_vmcb_create(struct vcpu *v)
     id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
 
     sv->avic_physical_id = &sd->avic_physical_id_table[id];
+    sv->avic_dfr = APIC_DFR_FLAT;
 
     entry = vmcb->avic_backing_page & AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK;
     entry |= AVIC_PHYSICAL_ID_ENTRY_VALID_MASK;
@@ -350,6 +362,190 @@ void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs)
     }
 }
 
+static uint32_t *
+avic_get_logical_id_entry(const struct svm_domain *sd, uint32_t ldr, bool flat)
+{
+    unsigned int dest_id = GET_xAPIC_LOGICAL_ID(ldr);
+    unsigned int cluster;
+    unsigned int index;
+
+    if (flat)
+    {
+        cluster = 0;
+    }
+    else
+    {
+        cluster = dest_id >> 4;
+
+        if ( cluster >= 0xF )
+            return NULL;
+
+        dest_id &= 0x0F;
+    }
+
+    if ( !dest_id || (dest_id & (dest_id - 1)) )
+        return NULL;
+
+    index = ffs(dest_id) - 1;
+    if ( index > 7 )
+        return NULL;
+
+    index += cluster << 2;
+
+    return &sd->avic_logical_id_table[index];
+}
+
+static void avic_invalidate_logical_id_entry(struct vcpu *v)
+{
+    const struct svm_domain *sd = &v->domain->arch.hvm.svm;
+    const struct svm_vcpu *sv = &v->arch.hvm.svm;
+    uint32_t *entry;
+    uint32_t ldr = sv->avic_ldr;
+    bool flat = (sv->avic_dfr == APIC_DFR_FLAT);
+
+    entry = avic_get_logical_id_entry(sd, ldr, flat);
+    if ( !entry )
+        return;
+
+    clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, entry);
+}
+
+static void avic_ldr_write(struct vcpu *v, uint8_t id, uint32_t ldr)
+{
+    struct svm_domain *sd = &v->domain->arch.hvm.svm;
+    uint32_t *entry, new_entry;
+    uint32_t dfr = vlapic_reg_read(v, APIC_DFR);
+    bool flat = (dfr == APIC_DFR_FLAT);
+
+    entry = avic_get_logical_id_entry(sd, ldr, flat);
+    if ( !entry )
+        return;
+
+    new_entry = ACCESS_ONCE(*entry);
+    new_entry &= ~AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK;
+    new_entry |= (id & AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK);
+    new_entry |= AVIC_LOGICAL_ID_ENTRY_VALID_MASK;
+    ACCESS_ONCE(*entry) = new_entry;
+}
+
+static void avic_noaccel_ldr_update(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    uint32_t ldr = vlapic_reg_read(v, APIC_LDR);
+    uint32_t id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
+
+    if ( ldr == sv->avic_ldr )
+        return;
+
+    avic_invalidate_logical_id_entry(v);
+
+    sv->avic_ldr = ldr;
+
+    avic_ldr_write(v, id, ldr);
+}
+
+static void avic_noaccel_dfr_update(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    uint32_t dfr = vlapic_reg_read(v, APIC_DFR);
+
+    if ( dfr == sv->avic_dfr )
+        return;
+
+    avic_invalidate_logical_id_entry(v);
+
+    sv->avic_dfr = dfr;
+}
+
+static int avic_noaccel_trap_write(struct vcpu *v)
+{
+    const struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    uint32_t offset = vmcb->exitinfo1 & AVIC_UNACCEL_ACCESS_OFFSET_MASK;
+    uint32_t reg = vlapic_reg_read(v, offset);
+
+    switch ( offset )
+    {
+    case APIC_ID:
+        /*
+         * Currently, we do not support APIC_ID update while the vCPUs are
+         * running, which might require updating AVIC max APIC ID in all
+         * VMCBs. This would require synchronize update on all running VCPUs.
+         */
+        return X86EMUL_UNHANDLEABLE;
+
+    case APIC_LDR:
+        avic_noaccel_ldr_update(v);
+        break;
+
+    case APIC_DFR:
+        avic_noaccel_dfr_update(v);
+        break;
+
+    default:
+        break;
+    }
+
+    vlapic_reg_write(v, offset, reg);
+
+    return X86EMUL_OKAY;
+}
+
+static inline bool is_svm_avic_vmexit_noaccel_trap(uint32_t offset)
+{
+    static const unsigned long avic_trap[] = {
+#define REG(x) (1UL << (APIC_ ## x >> 4))
+        REG(ID)   | REG(EOI)     | REG(RRR)   | REG(LDR)  |
+        REG(DFR)  | REG(SPIV)    | REG(ESR)   | REG(ICR)  |
+        REG(LVTT) | REG(LVTTHMR) | REG(LVTPC) | REG(LVT0) |
+        REG(LVT1) | REG(LVTERR)  | REG(TMICT) | REG(TDCR)
+#undef REG
+    };
+    uint32_t pos = offset >> 4;
+
+    return pos < (sizeof(avic_trap) * 8) && test_bit(pos, avic_trap);
+}
+
+/*
+ * Handle VMEXIT_AVIC_NOACCEL when AVIC is enabled.
+ *
+ * The hardware generates this fault when:
+ * - A guest access to an APIC register that is not accelerated by AVIC
+ *   hardware.
+ * - EOI is attempted when the highest priority in-service interrupt is
+ *   level-triggered.
+ */
+void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs)
+{
+    struct vcpu *v = current;
+    struct domain *d = v->domain;
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    const struct vmcb_struct *vmcb = sv->vmcb;
+    uint32_t offset = vmcb->exitinfo1 & AVIC_UNACCEL_ACCESS_OFFSET_MASK;
+    uint32_t rw = (vmcb->exitinfo1 >> 32) & AVIC_UNACCEL_ACCESS_WRITE_MASK;
+
+    if ( is_svm_avic_vmexit_noaccel_trap(offset) )
+    {
+        /* Handle AVIC Trap (intercept right after the access). */
+
+        if ( !rw )
+            /*
+             * If a read trap happens, the CPU microcode does not implement
+             * the spec.
+             */
+            domain_crash(
+                d, "%pv: AVIC: Invalid #VMEXIT due to trap read (%#x)\n",
+                v, offset);
+
+        if ( avic_noaccel_trap_write(v) != X86EMUL_OKAY )
+            domain_crash(
+                d, "%pv: AVIC: Failed to handle trap write (%#x)\n",
+                v, offset);
+    }
+    else
+        /* Handle AVIC Fault (intercept before the access). */
+        hvm_emulate_one_vm_event(EMUL_KIND_NORMAL, X86_EXC_UD, X86_EVENT_NO_EC);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index 2668d4481425..f9ff3ffc9346 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -15,5 +15,6 @@ int svm_avic_vmcb_create(struct vcpu *v);
 void svm_avic_vmcb_destroy(struct vcpu *v);
 
 void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs);
+void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs);
 
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 693b5c29287a..673c818a0039 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -3082,6 +3082,10 @@ void asmlinkage svm_vmexit_handler(void)
         svm_avic_vmexit_incomp_ipi(regs);
         break;
 
+    case VMEXIT_AVIC_NOACCEL:
+        svm_avic_vmexit_noaccel(regs);
+        break;
+
     default:
     unexpected_exit_type:
         gprintk(XENLOG_ERR, "Unexpected vmexit: reason %#"PRIx64", "
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 532382bd02f3..db3f2689d7f5 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -297,6 +297,7 @@ enum VMEXIT_EXITCODE
      * Table 15-22. Guest vAPIC Register Access Behavior
      */
     VMEXIT_AVIC_INCOMP_IPI  = 1025, /* 0x401 */
+    VMEXIT_AVIC_NOACCEL     = 1026, /* 0x402 */
 
     /* Remember to also update SVM_PERF_EXIT_REASON_SIZE! */
     VMEXIT_INVALID          =  -1
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index 93629418c225..377ad2494e7c 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -45,6 +45,12 @@ struct svm_vcpu {
 
     /* VMCB has a cached instruction from #PF/#NPF Decode Assist? */
     uint8_t cached_insn_len; /* Zero if no cached instruction. */
+
+    /*
+     * vCPU AVIC state.
+     */
+    uint32_t avic_ldr;
+    uint32_t avic_dfr;
 };
 
 struct nestedsvm {
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473180.1680825 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNJ-0005Vk-PY; Thu, 05 Nov 2026 01:34:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473180.1680825; Thu, 05 Nov 2026 01:34:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNJ-0005Ux-GR; Thu, 05 Nov 2026 01:34:45 +0000
Received: by outflank-mailman (input) for mailman id 1473180;
 Thu, 05 Nov 2026 01:34:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNH-0005Ll-MA
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNH-001wz8-2h
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:43 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd20-2eae-0a2a0a5409dd-0a2a450191ee-10
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:43 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd31-5984-0a2a45010019-94a38ff11828-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:42 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n5MA227443
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:41 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010038.outbound.protection.outlook.com [52.101.61.38])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurbrk-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:41 +0000 (GMT)
Received: from BN0PR04CA0062.namprd04.prod.outlook.com (2603:10b6:408:ea::7)
 by BL3PR16MB4411.namprd16.prod.outlook.com (2603:10b6:208:33a::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 01:34:38 +0000
Received: from BN3PEPF00022BD0.namprd03.prod.outlook.com
 (2603:10b6:408:ea:cafe::39) by BN0PR04CA0062.outlook.office365.com
 (2603:10b6:408:ea::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:38 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN3PEPF00022BD0.mail.protection.outlook.com (10.167.248.166) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:37 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mn2H2969641
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:36 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrke-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:36 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmN7xugeYz55iOmN8xXIL0; Thu, 05 Nov 2026 01:34:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=epf
	nUdbtf7rNlmst+lBbQXBN+HCXSuGOjupcOfOOzY4=; b=SJkPKmoTFSnHBzz5iqd
	lOM2Gi6E4J8O7+AFebMtgPT5oX0kmIS+riBRKehGa1eZ+RzyPCzAkJuZuomMv4SF
	GMKLpM40sNCUUtodT/tyLZaq9vr+L3cRlkSC1qp8KoiJKCwN75BllbN10IzhYpZ2
	NRemO9c5vbgJWlPNT4n6o5KoLrSVXXyPom3qWBJ5Y398Hu8MUGhYJfZZYZz/0o9u
	e7F1wf0H2iBnSQwdw58xXLYq79sslmNU+lBorDRmeCK6cXeHApbRau6zY295t6Vc
	zpq4xaO606wAHMfTdKNFgBtpg2hZyjFHI6mDszgdyQf5BcHqCFGP32Nb8Uf5mT9g
	AfA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Ldgb/Fn1VnCien9g6i4NduTptysqtsvs0FxdX/Ek8a3LHzdwetIO5kc098beW3SWF37Vu9w8ZBPFR5j3nW1Jh88c1DWTTUgRRENiy1YwpO9RJB1V27xSd5GBJAmiZ+Mtux3j6uz1Z6O8VgNMaLMwuJiENmtRq7DCHftHjY8mE4ViV4PHAFrWCmPGH+2mX8sHkV4XnQiWMdVclr3r7sEKJdLcdxrTatMyIL6P02In2mn3ccmBiIlHSHwNKHw8Ouq+Vh86lANaNRSvVWxnF3l+JGylt5hrUitfsD46OSDNym5GATjdpDZrsCV7+qx+8duW7Hmi83LKq2wqC40lNTklBg==
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=epfnUdbtf7rNlmst+lBbQXBN+HCXSuGOjupcOfOOzY4=;
 b=iehks+zFxJF8zdie0EFxDD+xkTmI3/WfryQlTP0pgf9L3zR2yegmjPgXz8MagV6GmMb1lPfgYT0M0XCkepUjyGQfD0/vDqbqzu+O/yngXlJ8nNmyvkWtUIRAHdg80+qvzRwr+QHWOrnfexPTBt11oi0CQlVeCzgqtvHwg0F6jEaY/NmQHnjENKURWN6FrM60mHPu777l3RE4ZdEOkiJNmg1+OfjfZUaLG/naY/r0ps3WwLVpoMoSEezYWImzOdWHD/1nO0MfXD/bzsSjZSfOTeoDZVpkrEITLgYA53o4GuH+PVZPHkBt3g2NCd1pZfMmy7+674xmOk+4+N1Jyily+w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=epfnUdbtf7rNlmst+lBbQXBN+HCXSuGOjupcOfOOzY4=;
 b=FjxgWzHrX9zygaJXAaMrS0LRvsSZmmMtrVMqBmP160P4+r4oI10P4iC39XmMfMWVfM1ETIuFFNz1+QVtQ11ix1u3thbvWo9TmwN1dwEwLygR8oOhpYs1ZdZIH2002D1pxXz0avP5CXfcVgGWgxp+T7AoGIXJlUZA+TgpwPtYQKQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=epfnUdbtf7rNlmst+lBbQXBN+HCXSuGOjupcOfOOzY4=; b=
	I1VSgPs9fLI1ftUmvDU4LodUKr+MW+fr7EhuoVaWeKyy3hsqNgzB2o9sXnjLhvey
	jnFvHeT0YKQUfzpq3EG+7bFbik8n5xQC3DMQqEcdMjN73qZpEgKBA3tmOu4ft0xD
	F++3boetlzfbDfL/eqd6lWYR2ccHs207HzVV9zZ9JCoiY8rguHFZZeWI1oWcxImH
	c9dHmQDcXMnSm92YwURAgqaBoKaOi13llCjfCHKHE7V7HDfB5jFJ5SDgHl1ziYXc
	R+SxfvNJLSnqRWt6OSjEtTQqty0rsTrJ6+ieH8islCcLWpF+zv+soIJLdcIGeOl0
	nvbF+6Dc33olpkVYK9aAlA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=epfnUdb
	tf7rNlmst+lBbQXBN+HCXSuGOjupcOfOOzY4=; b=I+Q3Jz/AEvXcyCxpRoYQNRn
	TDeaQvAt7cUTivQVNWcD1SiidKZHvBzyUn5su9Lljtgq/f3vuxKeXRvfK3bHSHtD
	dbL7NNrVGqaK0AUwh2YFkaKYUkwjJgzBqa0fwTWQMSmQqCJ36xKCgGROK8G4Zq0h
	tp8johUak6LhbdMa9/LZzSDPevXC/3jR4QW8O+NWJ4iiPS4SG2bUicYupeHl3o86
	umGwic9pxTUaIVe5jt9SztqweHKQ7MzULJI0CmlYHUXr3retCXOdTJ5ZKWGoCJKB
	mKhktqlxW0IE7cWi+pO55D4+HGyUuOHwdPyI2nS+S9n+4KPMbRwvGfFFytEjnxg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmN7xugeYz55iOmN8xXIL0
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 11/28] x86/hvm: introduce vcpu_is_vlapic_tpr_emulated()
Date: Wed,  4 Nov 2026 17:33:28 -0800
Message-ID: <20261105013347.719392-12-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF00022BD0:EE_|BL3PR16MB4411:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 7df96abc-59e7-497b-7ef8-08df3adcf499
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700016|23010399003|22082099003|18002099003|261102123227099003|56012099006|10067099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261022075727099003|11063799006|261028144727099003|261026121527099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	daWWRcRtddaBexuQdYCs3MUCGMVYl1Hrn+uRFYQ9jzGFR0ceG/dO9HTtiqxZtKbfdjKKdUH+v5MjbvL/CshPWWg4BPzmiSpgsakaLO0F7wyRJYUZtQv0ysloNyLFtAE+QX11BiOg41+s3vnfjMYEYejN8ZRPi2VH4FTsvaF3e8vDyC3OlaiqunTJ/nuH4myWRzUF3Ry+OXr4gmTkiekFRR5t7eMTJiERGDSTar7n6DmyLLdILBZQ5gTAG5FUK4m1PK9nzeTj9JQbgCNuERdBNbqJX3pXy+ByHoLwCXqeKwCttpmPCoqwYjbodxFXYnOAmdsbRZya+nSo2IC04PBz4vchrQBjfOsHd5QUnrqekzZH/dk1NL1CdKaEqZ1kENhHuX3BP6oQ0zerD7oSc799eQt/YLLUifPy6Opv+cpwv6KL3Xh/ZYEegl0QexE+vE2hzgcRn9Tbe3aHmw9LOLotbf6AdT+E5ypBF2ICW+Bv/FQ3GBK/MZXJcdLTW7iMin4k4aZtgWQYUQV+iQ1cCE1hx8iym/pXAY7vxYmQSXDXBWHsdJsuq2R8y2DvZQr0J2nFAL0mfRmRYSMxPHarUds7h1r99paf9zCqRbWkxOaBaU0kTC2odttYyAUd9fydQQ2zC3XV0Km1RKZNcPD6/lLDFZT+cTpKb8AGJGKvQmJFIBIPZA1yIQwatEmnJkkeGk3uD1LSWN6Y56xECVARwR0eHw==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(376014)(1800799024)(36860700016)(23010399003)(22082099003)(18002099003)(261102123227099003)(56012099006)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261022075727099003)(11063799006)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YchnYcNeHMh2Esxya08htpEwD6rgPg2/Z2mt/cAfYaRr1q8WLzqgU752NMxTbOpJnpdbRwB4mEdIHBxCD1MovpTHLmKyekFHxRtirwZ6KqcG89nzzvquwIzE41Tp42SH9WnSB6Qbue4P/DtQ39YjxUQKbzWEaRIujj181qLD+UpuQVjumW3+6K5Hf+KfRd/+oI3OzqBLiZGLyt08LMoWLGNLKJz6qnEMqSwhMol54onHydtgtf6ZTX/CkD5sx9p/aoUxWKDIE/Dx4L3B51BWVlUMWYNw0N0T5q5YUiUaoPmFvfeQyX7+F3hznkSTbZoWB4OYbIXOFa7BP60ACNXKYUETgZ/4xIrrNCqwUqnru7Z576OvPxxjCpXmSAz8cXpI/zKGgRDNXAof30vJ4xYf041dGcD7yo9MtSnaOsZr+jRTlUZZouSDM+IPkRAbKj3R
X-Exchange-RoutingPolicyChecked:
	UC9g8vDliZ0+7O3rzfcupsWV2iJQ7aMf+b7RXsXIICHGCdSBs+ulsU3QJyGx+CPtSyYQtLqnqwOn8HS7cRcp3bvyJVIy6nfGlwlgHYHeRJpwEqiiX4j6UaifZKcKHumo7VBgoAvOBEusTJVYQnUNoGOMrZpDjkY+ck0K9lke7SRbMOPEfW87UaagWTD3J0D3M5T8CtAagxbp3BIjUvA1BZP2koIee+CKQvFcZeJpUaiUzyk5w8D9sod+Qf+jVAsshX8SqRElEAcK0bUn1aZeWILBEbm0t/9LB43zFArG27pGamZIBxRlJGcgj05sOp0ErqXIJf4uAO1r/CY2JLDJOg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	V2PYRsoTEOgx5DtJhx3+UBNgpSiC/OniLrVJt4lX54WATacN7PHoE74K7j5u75YhnaqHgaM2YW9pZklbCVX+uAj3rabFNX3zJPLi45e7uUgZ9woDA8TUg9Iatht3vInrVyaMPLpRahcxaxKPWlnnNyBxcek4+2Zoc/PtkvUue+sPR681jy4CoANYrJ9PiYYaBcjwdwl5ar1wh8v8AxQlvz06BCStoO+r00ipqlRhoru47GsPu8WsmqyqeDeFh25FFZGiMlcBBelTpHlu+6tcCXf8r9+/QSgVwKcQRhwVFtHHhTti19C4nNvm3+dYCtfNRwYi+eAfvLcDNdlxLHZxNB/nrxmZ3dzamRIEl3GohzZtDJtFPhbid+/xTiTLXCTLyCQ0TxOvdSfnDp4miS5/9a1C9tUkxMJ1m5cOP55RS+Q/piSyjRaN2zYg3CkSAIo4HDIwSj7D3e3NgUBx/kcfHoXSj/30yzzJxGPrF1eV+witb+5e6/IsAkRruvMNMCcYMmMAEJaTDWEvIheurtEwMSO1PnAF+bR17AjyG7ZzGwFXsY4gSm01SvXbtbdDxcf0dAwlAvuHoAItJpV5M8995ADNPqtkpsoi5XC0n9EFuQ7t9gQ9jr3TaBg495XM4oLmc3DEFDj0xrhfDsfgC/T12Q==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:37.7899
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7df96abc-59e7-497b-7ef8-08df3adcf499
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN3PEPF00022BD0.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR16MB4411
X-Proofpoint-GUID: MR41UklxQ1OxSHoScIXIkj9CjgroxtNk
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX9HnzP/uT9nXe
 3YzXO7SmfI9CYrEbWo/cSKeEyriX/SaDgP/M0IFNMiERAUlBhmnjnJNYfqbW8D/BIPHDdjXxoff
 M9+AZzjHWkWBFiWO2RvuH+eTb+RcvvAghYn+rKctl5VPo5zuOA7l
X-Proofpoint-ORIG-GUID: MR41UklxQ1OxSHoScIXIkj9CjgroxtNk
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXxuQOy0pAjrPf
 sA3XZjF3bi77TSS/Mmivrhza3QRGovBROUhPV73k/VKXH9wZngmq0docbw+UWsTNjYn13pzkoks
 lZVGEmWTLCqWjkOmQrtvvcUqGIsz0e6Z1gJfl1A/b/u0PlHod8Jh9Jig45K4vy8RsoNuSgXKqBq
 mCePPLx8Snd/Ee9VAgzvkPXK/67d/ioY9DxTcPRJ6isAjdpge73a/RfIq1HV54kQ0yA1qqNG+he
 w/H9nwHqPEjZi/ZWbhnHgVOXrZNwigxKawC9nVJGonxa6diVRfLZiyQQw8aZC3p7xqypaK49QFS
 PSvnC7CQtMwixm1RL1kRUYO+ARq63dM83GUtdnjfabhjLyD2NaWvkJWgXaGQiFA/dSFiBB5NKrL
 AjbPVZzlOWHVWJ4pWmZeKjE+oDINWZBOOJw8IxyTUI4rHzeEjdiSOxLCYIGGa/Uvnya5EzB988f
 AR1faa7JConxiR8r3eQ==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdd31 cx=c_pps
 a=uwUl5xS/OuIXHPkYzYKLCw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=XLFSpuJ1Vscf6XR70B8A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-d62444/1793842483-BF262757-ED1E101D/0/0
X-purgate-type: clean
X-purgate-size: 3425

From: Denis Mukhin <dmukhin@ford.com>

Introduce vcpu_is_vlapic_tpr_emulated() in genetic SVM code to account
for the case when platform provides accelerated access to vLAPIC's TPR.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/svm.c | 38 +++++++++++++++++++++++++++-----------
 1 file changed, 27 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 673c818a0039..14a86ca4ff8f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -925,6 +925,19 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
     }
 }
 
+static bool vcpu_is_vlapic_tpr_emulated(const struct vcpu *v, bool force_noaccel)
+{
+    const struct vlapic *vlapic = vcpu_vlapic(v);
+
+    if ( force_noaccel )
+        return false;
+
+    if ( vlapic_hw_disabled(vlapic) )
+        return false;
+
+    return true;
+}
+
 static void noreturn cf_check svm_do_resume(void)
 {
     struct vcpu *v = current;
@@ -933,7 +946,6 @@ static void noreturn cf_check svm_do_resume(void)
                         v->domain->arch.monitor.software_breakpoint_enabled ||
                         v->domain->arch.monitor.debug_exception_enabled);
     bool vcpu_guestmode = false;
-    struct vlapic *vlapic = vcpu_vlapic(v);
 
     if ( nestedhvm_enabled(v->domain) && nestedhvm_vcpu_in_guestmode(v) )
         vcpu_guestmode = 1;
@@ -959,8 +971,9 @@ static void noreturn cf_check svm_do_resume(void)
         vmcb->cleanbits.raw = 0;
     }
 
-    if ( !vcpu_guestmode && !vlapic_hw_disabled(vlapic) )
+    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode) )
     {
+        struct vlapic *vlapic = vcpu_vlapic(v);
         vintr_t intr;
 
         /* Reflect the vlapic's TPR in the hardware vtpr */
@@ -2538,7 +2551,6 @@ void asmlinkage svm_vmexit_handler(void)
     int insn_len;
     vintr_t intr;
     bool vcpu_guestmode = false;
-    struct vlapic *vlapic = vcpu_vlapic(v);
 
     regs->rax = vmcb->rax;
     regs->rip = vmcb->rip;
@@ -2565,8 +2577,10 @@ void asmlinkage svm_vmexit_handler(void)
      * NB. We need to preserve the low bits of the TPR to make checked builds
      * of Windows work, even though they don't actually do anything.
      */
-    if ( !vcpu_guestmode && !vlapic_hw_disabled(vlapic) )
+    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode) )
     {
+        struct vlapic *vlapic = vcpu_vlapic(v);
+
         intr = vmcb_get_vintr(vmcb);
         vlapic_set_reg(vlapic, APIC_TASKPRI,
                    ((intr.fields.tpr & 0x0F) << 4) |
@@ -3097,14 +3111,16 @@ void asmlinkage svm_vmexit_handler(void)
     }
 
   out:
-    if ( vcpu_guestmode || vlapic_hw_disabled(vlapic) )
-        return;
+    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode ) )
+    {
+        struct vlapic *vlapic = vcpu_vlapic(v);
 
-    /* The exit may have updated the TPR: reflect this in the hardware vtpr */
-    intr = vmcb_get_vintr(vmcb);
-    intr.fields.tpr =
-        (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
-    vmcb_set_vintr(vmcb, intr);
+        /* The exit may have updated the TPR: reflect this in the hardware vtpr */
+        intr = vmcb_get_vintr(vmcb);
+        intr.fields.tpr =
+            (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
+        vmcb_set_vintr(vmcb, intr);
+    }
 }
 
 /*
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473182.1680838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNL-0005tb-DS; Thu, 05 Nov 2026 01:34:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473182.1680838; Thu, 05 Nov 2026 01:34:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNL-0005t2-3a; Thu, 05 Nov 2026 01:34:47 +0000
Received: by outflank-mailman (input) for mailman id 1473182;
 Thu, 05 Nov 2026 01:34:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNI-0005Qq-US
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNI-001wz8-B2
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:44 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd16-2eae-0a2a0a5409dd-0a2a450285f6-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:44 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd32-6ca4-0a2a45020019-94a39217a804-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:43 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mSm22567967
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:42 GMT
Received: from dm5pr21cu001.outbound.protection.outlook.com
 (mail-centralusazon11011022.outbound.protection.outlook.com [52.101.62.22])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb0k-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:41 +0000 (GMT)
Received: from PH8PR07CA0030.namprd07.prod.outlook.com (2603:10b6:510:2cf::16)
 by SA1PR16MB5804.namprd16.prod.outlook.com (2603:10b6:806:3a8::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 01:34:39 +0000
Received: from BY1PEPF0002695A.namprd05.prod.outlook.com
 (2603:10b6:510:2cf:cafe::77) by PH8PR07CA0030.outlook.office365.com
 (2603:10b6:510:2cf::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:39 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF0002695A.mail.protection.outlook.com (10.167.244.171) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:39 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nN3g1487541
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:38 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232whwt-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:38 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmNAxrjDUCiSDOmNAxv3zn; Thu, 05 Nov 2026 01:34:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=fSW
	o+rzVhuBSLE4305o2x3UcvXK/wQrY+oQkdfxG9Zw=; b=r+V1KcKULE/CbiAPPHH
	fDneC4+xhMTWBaMIW9SxzKTnlcHlCGM29chMFzOnu3zyu9Dae0jQOGZhY0JH6txk
	Aw6U3U2cz4cGKbGjnYQpwyU986E7rCneelYmTH8Ka3sQtQbVKVynqA7R3HjnbOag
	kwEWkxR0I9vePGxxz2vau2HBVoAbReQ8sU666wuy7YuS/pP++tCD8uIqvTYgSoMA
	sXCGA7ADX8e90EeXXJhcrZOqknB0lpVjs3c5gjSJmeWPiP9wsfwMg4/YQ26oLnHG
	ZjJAj/gDIr/iQ2sBp6oYE31o9+nXi/QEmaQgw2SeAfXsmrTGcahDsTET+UB/52T/
	b8w==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=urhZIDY1gT1c4qP2x0GhvhgYNgBWskkT78sfLHHvgalq58FpUJL/SuPnhESQY+AbrhXFPm8Udu2UTKokShVRfDbwENL384ZpqlqNMi8lAu9iK51GwfYkjRZzyQI6Ps8Lh/x2bd80j5G1YkUbYs136s8KEZ0IhhxefZWhD0w0qNpJxYLj9mIATH1t0bwo+0EHhAZQchotV0YfLVUSe92jlsl9fWZL/ClQ7XqxMFYqyBarbx+QaP+NpNBYxKCKmQWh19vptR8TjJSll53922PzqYh53Bi5+9N3MHm+snt6jQ7YJSCnx57NYOAtaEVR+JI+znTKTuyQsA1kzuOCrOAcEQ==
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=fSWo+rzVhuBSLE4305o2x3UcvXK/wQrY+oQkdfxG9Zw=;
 b=h39SDFUKWG2OgGu/VtH0+urXvm0JKnTdbLMoV4BMLpn9SQpHywJtk9LLJtNYJfmKBNBFXrWZafBIatf4rK0yCzQjE2SfqCSEsEoVBwGPidpdqpQ1vPoTEnTrvtyXMrjxRuy4eywvdvgj/8hDtmJ0jyGG/Xq0Y4KGqtI6l3QYc0e5jSmTCyG6vLZVV+mKFJ5FaJNeqfaLDxQpPhEwy5nx2wCBhWj40KB/CJRDnwgXmnRhFj6fCJAbA+v3BFPhHUz1NsdeiUkNMaHtii5OfXCxMzxdEHZMRjpg6wKxydmXDnUvEOCO53qjubq2G3K39ZEvDrWfQYg5NbuG1gjpEIytVA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fSWo+rzVhuBSLE4305o2x3UcvXK/wQrY+oQkdfxG9Zw=;
 b=WRDbdh/Y1hQp3jbdGvN0rpYU4RdV2elzDA4I4Bx3k/y9b+V9vIDc7hmWfCH5psY/+ax28n9M4PKbUk7b5nOmfSq2QUYroqIwV6OKejVaPaOM3JCdFSBhDJ0AgBhSnW0IHKmU3ox5Ji5BX4qN8jdh26k4W3eT6gs/yQgmGVWcfL8=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=fSWo+rzVhuBSLE4305o2x3UcvXK/wQrY+oQkdfxG9Zw=; b=
	Mz0gYGj6ogWNDxCzvW2ADZpmCF+nIvYkrvrmJyhtFEc/ND9VnybZTmr4HQUtC8QW
	+gIkblH6/XRsl+3mWp0vmihx0f8GxNM59dMICUkG+domeqZ9+BoJLcXMoqn/Mg/m
	64nCEAy+/Ek0ZtBVCAQJA3bCMow59XGnV4M9qixCT6hOvWajYi0Be1yhnkCkzlKr
	uOIbeTLYjymS/tINCjisoXlKMkYCPHl5EpNgSMWuuLEP5zrmJbasPgLC8N/xgkFe
	oCwr958EYyTRBlUuva8OFKK6iugx+9JyyG7mVHaPxgBU3HIopyQBwb61be5+G2ph
	ipBVXG2XN7dzJdCwYUfGKw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=fSWo+rz
	VhuBSLE4305o2x3UcvXK/wQrY+oQkdfxG9Zw=; b=VbwhICTlVy3zABVGouCLcMB
	D8LAQwpwj5smmHaWR4WAOqhtQOjx4xvXOBDczOppkuxwW/TVKvZFNL/9dbV0cHid
	RfDtV5r4QeBR1r40Q/q+9bgtEJ0r5ROVQAkIPHtQ1puK7dPT/sej36TT8hAkt2Uf
	4xPtLi1INb14REbv9KzGm7qbo3llg+rmM5rFZM+fHIdLd5hI0olNuIgtD4jpqRI/
	L4ARiUR6fpLFzd/3FPR1tY8IA9Q7rZYYvYUo6XG9jIKQWBB/qThyPR2tO/r/LLJz
	PgNfGCco8BbrAvr6yfUHjpq2sDt09dO2gaC0pvuuvO+kjkvwsnS9eVVirna35dg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNAxrjDUCiSDOmNAxv3zn
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of open-coded 0
Date: Wed,  4 Nov 2026 17:33:29 -0800
Message-ID: <20261105013347.719392-13-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0002695A:EE_|SA1PR16MB5804:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 4aafd863-a241-458e-8ad9-08df3adcf530
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|23010399003|10067099003|22082099003|261102123227099003|18002099003|261009223027099003|261028144727099003|11063799006|56012099006|261022105027099003|261026140227099003|261026121527099003|261021121427099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	WuSigKOZbQ0gAC5SBT42MRFvnEH1z22R2s0RZIYGYyRN9mObT9x/awRBBlEFLuh3NCJ9pfr8fnoGcnWc7UsC03dX/kgaS1/ihWuFh5P++4kRSxSCk/Fc0KdFSca3CBUb3FL+ZV3Og85175Fi1CUhFW+WAla7g4MPPjQoGSYIM/otuUxBLNOw2tWth7pLgpKonTaEmz1eNQUYoXfsfeVQqEaZV4Ofr5oLHPoNw9pln8yA8ZuONofuCg4Bp+5wACWUiKVhlFDPmdAZKbMJwXxOjrw5vj9RrACvUY6FKbttUrObj0SbKsO0Gcnrc/fg9MttF2kCJq2DgSk+0qxOYWRslRIgOhQjWl0aGziJSnIgcj3AKwgLI0zQekYxx9ThUaXU4hO1CiNIyBU1QE/1eaPj0Y34GW/EnAmNqhAgFm7nx7jS+1JESkmdpw0T+aAt6hUC6n8xAzYitEWm0B9mMRT2M/JE+k0v184Wh6mHb7YuPU7FMe1nN3BJz7YFG/fTJ6yFq2byMvFzQbl/b7JdOuRQJPS5HaD4KUNMxO4U+E5BLj2SBz3TqmQVZvgBsEQOyn6RyWlL6JqK/4lkvrifQfKk9tmY6cTfun7KLXTp2Tu5pwXcb0uDDo53Ve94GRuSiQlq7DWmPIZRSOkb7FVydnNlm8V6spc8E6PojjEfGQgCgzDRMtNtuAeXc+gda0g1+BS0GovH1WTGZsUhAO7rP4KobQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(1800799024)(23010399003)(10067099003)(22082099003)(261102123227099003)(18002099003)(261009223027099003)(261028144727099003)(11063799006)(56012099006)(261022105027099003)(261026140227099003)(261026121527099003)(261021121427099003)(261021123027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	emGIfYYIRw3FUolnJpPUzPoBs+IVZKjz8BSWn/yndpKSkxoimXFW1Qh14nPS36nrhvHF+lAIo6AI4/nc+BPqRCwPhSZiMhbSd8O2zmVWYl4D0Q6oU66tOFknuaMqEOgBhdKiTaMogqLEed7Jf1k7asyweOd8idv1tTiC4n0kbBschGhY6AlobL+voaH6YU24Zz5KuWmAyucW1WpN45bXvvXs1J6oSAk9RNo8ddjm7r/D0l0gHws4jHSz/mHDP6iCfoKaqmXENeEjW1FOiOE3hpOMOe8vMrRDeU3hACZODDHDU3TYER+7uTsjiYPv2Ep71EZtaTMuYZFyeqsZRof+VjihCFI+/2W5dFk+CAZ5t40tSJP9P/DMeLFlTAYNSLyK8zch04U0KiIhK9ZsTCivdR+QMThzXLXBf8ZMn6kSmxZj8O31/MZ6QYAdh98kjJqO
X-Exchange-RoutingPolicyChecked:
	esV55IRQCGV6nEkHau8puQPAZ7I9tjzEJMYerJxDSjE2F/vd3O7opxO6lZ4ZDpMhwKE5mYLsSKjd91yV0C7RdqJh2gdr+hp3vXldbhG1y/xD+ouflXSSTrwqg11siJdbF+apemJF0B28H4XJOH1W88LvRvAYjfaDzJrxTXwpSIeIF2UJjq86Q9kgzTgXMp2C8Cxkhj51VxVPwSbE06NXX1LacP7OQz0IZf6vbaGM7GyyBRPCwTMEkx9s3/PCvsdkkdhjtvpM3u740bxKSquV52VAVdW5ks3jrxRsqKqVI0WFyAcJnbNKpH6C9p7qpAzk6vgMP7pc4wh4vxAenhs5aA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	jLwLrbgpyRxcsCTU6HhWQtPf7SmZplmMQa7Zd/vpTyjyhXPyh4ATjuzkGgD53QOboC3Am5+wA+igVbyfpR2ZjmSMs3cIzqFLcR0VgFE8+TWqVc9W/FSvn7WFjst5Xnm4x1o+BSs3uWIFXVXgrhVAOlS4oO/Jupcuagk3UnAIVRl2zS+L6K6L9/NHFSphOmUukbAX+8HHdfaNFnpdvDmMqIjXvzT/noNF3UGd8MWe2Q7Zn6wFqWUMZuC5wGlJRxafRCqtN/qQnYoQWtRNs0hWAJPOhlSt3M31dAKKpeLuerCmcat8+DYiwTf9uY1AiBxNGKU3UGa2OQJ3jNDyexZWxxlPEo17WHCZe+nQsUUNm46uuRHTduaLHzp+gCeW52pdUBaP0ES6UDLWsi4psZK5p/uUbcokiPopKyw31XWFobIq72z3QTPyIi7XA77CqdbdRjINCmZHWhdALqdp8Mk9kWcQnLVGLObIIS9JFx1M5xeD2k10mjBSTvPBgTSFjpsKaUdVRDK47WtWdOK0NGEStigXHU0qoNO3szs3rMp39Lt0e6YFBZmAmUvYk3/y38uEqk+rXASeCPA4EbatzobVzTm2+7WB8SVQ86YuJsCxDNs+/oo+7KZEgriYctrePAG08czm58Z1Fubkg7f7+WLg8Q==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:39.0218
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4aafd863-a241-458e-8ad9-08df3adcf530
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0002695A.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB5804
X-Proofpoint-GUID: WlIS0IacexTMsJhDVYgMMFtwm5cs_GCK
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX2hWtmBn7Bzp7
 Z8O0a8a8uLLdka5SkvS/QdZVGdSz5EcUOUj5Efw1LEdFlj9wr3XOzgWpelkbvtUCrOwLmQeQuwv
 oh4dNpEW0Feq7yGRFnEgU8HDbls1G2XOUACHhI7A4J5EAzEXcR9q7f1yAtnZQ4BOcDZFkCtr+Wr
 a3wlwIaMo8/Tim58WkSW2K4ER22BOKLZKGRfqJXEjZcmbtdoT0WhrK4Jl42dYdzIAQwvG53qFFN
 R1wNQYAdHxpySUtZlu8fqO+9L54rediNm5yfQ+h/VIvOfhmfAM+vJJJWG2G5s1lDmoTFKs0tXwY
 k/vsNLY8T3KqKF2R/0AchbIdwnWmUpt/hku0XuR1oIHzwCt8u/hIQp8zQ850lXfvjpY3f3PB8F/
 kdl0UFNfjcASaxOm3DnjrnYhKsDuixiH9ApKnPOsAaHYqd/9YBy/uqh5RgbgNQhgV2d8jcvQ+Ky
 WGWaC9d58i/EZXL8FRg==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd31 cx=c_pps
 a=OTtHDJnq+OHIMh0/YV57GA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=150EHzJ1OXbf-ekTTTkA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: WlIS0IacexTMsJhDVYgMMFtwm5cs_GCK
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX4hqtA/c8bBVJ
 JA9kZqRR/PwwxxjG0fM9EDEpBLfaKxUIO3znYXmsnv7Z0tKWU4BJ87pIrfhljaVvho0m21arSKO
 nezlpwkK7GswzWKt4mMEDT7UbfSv05hSWnt1eB0t2iKnCko9Zkxi
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-720697/1793842484-31DC92AC-D6E5DDF5/0/0
X-purgate-type: clean
X-purgate-size: 1383

From: Denis Mukhin <dmukhin@ford.com>

Use the symbolic value in ack_APIC_irq() instead of open-coded 0.

Also, correct the EIO -> EOI typo in the constant name.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/include/asm/apic.h    | 3 +--
 xen/arch/x86/include/asm/apicdef.h | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h
index f30d57ad22c5..a4f6d2c26ce1 100644
--- a/xen/arch/x86/include/asm/apic.h
+++ b/xen/arch/x86/include/asm/apic.h
@@ -155,8 +155,7 @@ void apic_wait_icr_idle(void);
 
 static inline void ack_APIC_irq(void)
 {
-	/* Docs say use 0 for future compatibility */
-	apic_write(APIC_EOI, 0);
+	apic_write(APIC_EOI, APIC_EOI_ACK);
 }
 
 extern int get_maxlvt(void);
diff --git a/xen/arch/x86/include/asm/apicdef.h b/xen/arch/x86/include/asm/apicdef.h
index 112c1dc613a1..d3dc7b1d7643 100644
--- a/xen/arch/x86/include/asm/apicdef.h
+++ b/xen/arch/x86/include/asm/apicdef.h
@@ -25,7 +25,7 @@
 #define			APIC_ARBPRI_MASK	0xFF
 #define		APIC_PROCPRI	0xA0
 #define		APIC_EOI	0xB0
-#define			APIC_EIO_ACK		0x0		/* Write this to the EOI register */
+#define			APIC_EOI_ACK		0x0		/* Docs say use 0 for future compatibility */
 #define		APIC_RRR	0xC0
 #define		APIC_LDR	0xD0
 #define			APIC_LDR_MASK		(0xFFu<<24)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473187.1680846 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNM-0006CF-L7; Thu, 05 Nov 2026 01:34:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473187.1680846; Thu, 05 Nov 2026 01:34:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNM-0006BP-GC; Thu, 05 Nov 2026 01:34:48 +0000
Received: by outflank-mailman (input) for mailman id 1473187;
 Thu, 05 Nov 2026 01:34:47 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNK-0005lP-Sw
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNK-000xGY-9k
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:46 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd17-bab6-0a2a0a5309dd-0a2a4508a5ec-10
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:46 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd34-f659-0a2a45080019-94a38ff13686-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:46 +0100
Received: from pps.filterd (m0482515.ppops.net [127.0.0.1])
 by m0482515.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mpY51195364
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:34:44 -0800
Received: from sn4pr2101cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11012062.outbound.protection.outlook.com
 [40.93.195.62])
 by m0482515.ppops.net (PPS) with ESMTPS id 4hra4eu9ta-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:34:44 -0800 (PST)
Received: from BN9PR03CA0559.namprd03.prod.outlook.com (2603:10b6:408:138::24)
 by IA4PR16MB945187.namprd16.prod.outlook.com (2603:10b6:207:12d::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:42 +0000
Received: from BN3PEPF00022BD1.namprd03.prod.outlook.com
 (2603:10b6:408:138:cafe::53) by BN9PR03CA0559.outlook.office365.com
 (2603:10b6:408:138::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.496.5 via Frontend Transport; Thu, 5
 Nov 2026 01:34:42 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN3PEPF00022BD1.mail.protection.outlook.com (10.167.248.171) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:42 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nN3n1487541
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:41 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232whwa-12
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:41 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmNCxjS8Lf5COOmNDxlMUu; Thu, 05 Nov 2026 01:34:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=ZZQ
	M5nCB0fo0vhti3rWWFAY2uJEHZznhmJpZdSoQNFA=; b=p0IQi0Srx7xZCpE2+rZ
	JL6laTlero/FdZ+alqBwfL3x6k4eMkZSzhJ3SZ2pASJ8ac0vxprrBMWoj/aua40V
	cOSxd7QWR57na4eSnmf9/mHue6UaRVjzbDmxjcx88/5Sh7uch4dW/AkQ+VxoNpkt
	70I9lQX5kNQmOnLFLWe35J4UAC0Bcm118CmNCcJ7ApLbAqkYO17Zyv92eZ1FnD44
	hA6I55LTMludum3F1le+BovWiPPMvEQnATADN//Lcmyj/Yo/GOVhksIBzYILqLXy
	j9pbYWiOAPDx1FTpzONO7s9qp446VTyxVkXKi+Elx1ZPnl7scQdJq6ib57FwH/96
	iIw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=AOjtx6BCzJsg8IjrH2jF1xXUrC8wNnKm/e7T42cguGnYEozq/DEGV8kwIf2n71xPLdPsDakpF2ICieVq5xjUyR9vgLQKGKAvXMehqNYZX+PvBaLSI2x6kpJppam6rpXrahul3jRB5Jqn8yKOvAst35oXk4yANV7SMpgQ5Jid4/R5tpECmt0kaCVyQwHtgCLvxr0btyHu9ppm6pqqMO/SvSgrYqlTVnRUPjdovHQONNbfeqnOGDrOky3D/UiZ89bvPZdV//EKeYY5RzdnO/XWTDDukzzkthV4WNv+OXN1Mtd1HqaBFsvkOGs6Y32euRsxCSuHgV3fsrPycwnSEf+DXg==
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=ZZQM5nCB0fo0vhti3rWWFAY2uJEHZznhmJpZdSoQNFA=;
 b=llrCSSrszrTuNDl2ZeEGQc15yojB+mm3U/wAgBlBMiNBwgF20wgle1LPMOiGGZGSiXl3zodMKYAAchpftSB7V61Oc59uV0wEQhEAg5+jODq88IN/DFVO+z430AA1FnfB41zgR+67ByMVwAMPRn5itfLPGVlgNzV5WmH37oj7G6yLg3L4WaJCnoA3ZTetR8hGcZSLaGQ28PKjFC4Vwti4jLV9Qmg/pGml+r1YFt3d7e6TZCxcKAJzbV6hnzTxwVnykCYbSBrMD4OMDZxaYecLWAssFOY34CxQv5OtLf6tlc3sDzvPXVrP7LDu2mOdNXJzF8NjG8KnmuITDOf/900l/A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZZQM5nCB0fo0vhti3rWWFAY2uJEHZznhmJpZdSoQNFA=;
 b=TDarcvo1Ur5C8IQq3/a5lyzfR8uRMSFsfptgz1xBtswFJpln5UIEMJY1cLcETPbN5OqbpHxO4S0eVg5Dte2f+aBxazb02zDpA4JLaCciAFO1X1wjuPMHv9JTcFuCKHDP8Q/AS/x3DD/+MUnsgTGfE/0KIOkr1mtjjTt/rW2YYdc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=ZZQM5nCB0fo0vhti3rWWFAY2uJEHZznhmJpZdSoQNFA=; b=
	nZOeKhAgWAyTT18G3GDHvsbFFBFUDncgEv4iecblqA8h7C/Eaj24l83JfYXgqKY9
	oZvbZCt0Q7gLl+q6ymsZKWW8NyMI1aET7uVjbmjwec/Enmr4cpygscE3e5lGT1su
	vSPcQ/0P1sJiTndRLOJ3PA+pXJn9izT4gfg3j5KhKMdm4Wv+EntNrP0yW/6S2oJT
	mr1LerG0CAQ0OISzyu5uSybJlWTCvMwN5vc7BtXXaKdsrtBe5PGvYaT9A9HT+BiL
	S/Cz5wZWUjVlEq5oySoBNZR/Fb4L7OC+l5AgXwsG0QJQG8GNKKp04ticjLEf+ZeY
	mVls5N1iNv4FphNUB+ywew==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=ZZQM5nC
	B0fo0vhti3rWWFAY2uJEHZznhmJpZdSoQNFA=; b=oAwJMFYFojjm2weSusjacCA
	AF+ZmhEwyOJGkAmA35UJmkWu9KtMia81mQFec256i6CnynxLVXuRVmrJ48Pohevt
	CsHO72b+Xx+3G6nv3gA6jywpARDjerrlvN7Vmn4r4hW3Z5h/cQo7TS/yJDLBCC/X
	Npp5PcQ+U6TBVsUh/PsJxTAqxUxTHw4vFFvw6RBx+BqTSpJi27+9/RsaF1Tk3rvG
	aE+ERo40j0VN0FnfLJARLn41KQI7/D5IbydfZmJPBgP8xrBp++susom7mU6rUIXo
	uF5fvNWz0KDMiQCc2UqWS8f8qBSTZzxKMiQuAMnFjyMhsrlj8taGWK/q7F0lecw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNCxjS8Lf5COOmNDxlMUu
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 13/28] x86/time: fix typo s/interruopt/interrupt/
Date: Wed,  4 Nov 2026 17:33:30 -0800
Message-ID: <20261105013347.719392-14-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF00022BD1:EE_|IA4PR16MB945187:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 050e26d8-74d6-4f22-3022-08df3adcf752
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|261021123027099003|56012099006|261021121427099003|261102123227099003|261026140227099003|261022105027099003|261028144727099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	CHRcDVsQz6NAj781Ojf3bB9YvUU3s3PoL/LCNUhLjF6Q6Zu78nsA++At4d1D1QPiPNxAZvR4yCFud8+6sLd52dtO6q32uz283bfwcQuoL+PFiCqza0RO+E6GsGDhSnOfrXphZkHE/C55jtFg8fEX+Rs02N78GmdUpsMc+WSNDshglqAeoVi3uItoOoHm2j3NTH7wkma4AEJZyscUwH4er3o6xv447W3JHgJLLqtg6D4li1RRLsLQP3JR3xPFpSir2ffGG1ouhFxMgrlZMMYYGjnsAN0JT/GJdNHNradJUr9llCPUNk0V2mG/6+KmzmclGsDGoXYG8WRnLIz8RtirRdPUkieZiuMsOPVXz0Dkkmg25EEsa+mSknY2e4utnsEEGtjvbrL8xcwiAFKNJG0Iv3gMavm7e2lEo6Hf1IDRT4XtX/E+4WVeW3F2WBUzt9HqVM7WMzAHuSbY0Q+47tKJIk5DTpp5oaKfChHKv9lSFWSJEhWdS+3xFkKrqg9Oz1rW4nkkDeHcjtgYwCo+a3fwkyPwbi6tifD+cjL7hQTaZf6KnSr2sFQSbwnKWs0jaxGfA2GT/EzTt6y1HAjaatzDbHWn2TcA23kEPMtQyS/3kr0SeFAkkPAPboZDUQCUxkri3+C7PvR2hydrNJhTTNncetqk5rqluIh211Q9vKXirtjNIukbMlLgbqe9gPMfNtUF3dfDCZRssbx6X+QBoW00Pg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(261021123027099003)(56012099006)(261021121427099003)(261102123227099003)(261026140227099003)(261022105027099003)(261028144727099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	JYZ4Igpo/jPt7MROqGrZVdP5gfpuYpEUY8oW6kIZtMOeeJcrj3KMtPqnLIQsUrCcqp/fAW7uJYuQOYEBWkKZixGfg7BsvZ3KgQHlWHwiqxOmTEEsffpryYVAwpoW+/t1RB9PQJwt7QbiImWtiZYGjNSIZd6Rif9WOVBSWEhD8PuDigvjrSRnDVW6ZZXKwF5SHMQn6OM8iE7sIUqaUfPmmy5aXi4V+tGHntKd9VoW9VVl2hCQT3+hQSNhgErYA7IHwzF1zGsSQvHumDoptTOvWkrm3YXWuBNrQg1AjhivtprT8QJC7NA6SvJver7oaphy1PrXsvhV4mk2egqprZU2FUokFCzcpcXEwtdyr4Yb4ldsefKSipfOjBLI/wstBrnB7UpTWU/p0IIHzIM7rHRwcM8mi97AWZCcfa/MRHg/5rRs2VemGmCWL0QQuHeCLJLi
X-Exchange-RoutingPolicyChecked:
	Z/MxnTnVZEiXGiXEH2hJPdt6cQ8i91bHo79oQNCjtFLljyJsRrZg2dw031Fm4ZZQV5GD/NQ0iRWMGnd3fSlGcho5Tx/CzzyEZ05/xdGTbG2K02dXYqCAv5jPfhgkV2rh41sOtI3RO3Eu4UFTyY5s7AeQ2SPCxye2JEqnxk3hF6FOE4pRuPuhoy/NYNLd4MJu2Qa8xMGgN/B55pzDEuenZLW618yr0jK+xUT4oV0wYq+yXPRwuIn4FU9jeSloqappsekDVTsDvN5bcj2IEohrA9E9J+d4AJFOHAojAr11wd6viNMmRnRvs63Xrx21hy3LFqFz1ZwbZIPIpbZU7irBwg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	t6WbleZnfv8Wrby2nKeMHU8PkIfh9GLuuMlKu0wAzbHeJuTRdHe1QBxsr/wZgYEZ/KaPq5XEQDYdP2hq1HQQtWoYE2UAx1eHILyttzCy+SLUMrqwoToN8nTkt88uB8sA2P7Jd1AH8rJuv05Q2K9Y+2KPAt0xMHEu2Rx5T+GmNXu095DFBBbRYXFSUXeD6tj/8V66q4zxpZf5Ja5i0HQ+2C78aOLixpV5N/3ylOwUfneXHy9mQy8STUpIeJ50S9/M4CZJcneYRPn0f0r2KI5brXJzcolDpia8p7r1704v+gfBmhRWv6lWY8UjFMNFJXtBTzwE1j6d6tXXCsSTE3wFW7H4njjjVgb6NoAnpRXMzGNCFLyCGdh+kbNixrnODkmw2QNudm2qkztQVGqs6T+wHrYoBAbjpufiddBY90F8OHNyd8vtx5SIKTii7ytUPYaFT6zyaBYWTKgtt6U5Nk1MNuaVwWFH7kRlaFNp9U4fPceworKhaajMvvxxsK2DUTXqLPIJp9apbFk4BJ45+PT2sluTmOrkGC6pQ0QRF0AQSlJFGfYiWj4j9zbHaMbnkqKjJWeQ4KWz6ZFI0YRSyOgqNC76us9zW75gXkkbj5rKmv7Ay80HTHyV8G9s5jsEvZrYHLuCx2lt4TWEvHe28ZbhOw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:42.2842
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 050e26d8-74d6-4f22-3022-08df3adcf752
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN3PEPF00022BD1.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR16MB945187
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyRdnlUIsozA+
 kzLSvCiSLDLIf+mHklNs+fupn5ZFANq7m9uhgXAoVs6+hU9S4qUojNt/8MBs+tdOuqo5Uj/h+2d
 7Ui5QHvekg9h9dJXpx9EWc6/3gdv4J1UM8XwchI/PfXh/IzLbq03dTTh+Et+og7l8Vm8ySPWXOm
 fIGF+KjrGqw+5ldhTBTAAtYHLc6XfyG+k8AhQajddp1B1/oV2qnpnH+12pjaHCJWLcmSfXrZ52H
 yQo+v8VwJ3M7WqJHRklw1jUzCRgSLUYWdE4jv3wKMrwUZk+l2rnBHxGZG/o1JU9gcDQ2EK8RPvf
 LZLRsAoEVBcHiPnb4ALQ12207nlDzo9nQdiWdA1Fao0p8zaB4GIbUvDcun9i/8pH4dhIaP7JOq8
 naZU4mHt2lTfjr9jk6a4XWwDiT4X4lU1yxld45Du1Y9gUEUWXjgyH/RUxTINZ8hq0VImL1RMtWI
 E//UQ9PP7gRcEjbQ92A==
X-Authority-Analysis: v=2.4 cv=UfzE26SN c=1 sm=1 tr=0 ts=6aebdd34 cx=c_pps
 a=KmUIp0grITFNz0c0ipdWMg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=0GA0A_IKJoUHBEAzNTkD:22 a=cbNQJ9GKAAAA:8
 a=oX6sQOh5f4QriJ02HC0A:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX2GcUnDcdlG6D
 8n/S2NrlKvb+7q2B3PrEsXZRCrIpps2f1Qhz+K/kiJHFbxI2jzRAnqtydUCF2NOMUKqn+BbAfMx
 Z8Z9ENU0A+uOxbraxEKEmVSYhhJtYeOfETieCjznb4OPVIdrFRPo
X-Proofpoint-GUID: YKZHHk6r_pzn22p8R3tJDo0M9rivIB-a
X-Proofpoint-ORIG-GUID: YKZHHk6r_pzn22p8R3tJDo0M9rivIB-a
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0
 impostorscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015
 priorityscore=1501 lowpriorityscore=0 adultscore=0 suspectscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c1860d/1793842486-D674387B-5FFC1A70/0/0
X-purgate-type: clean
X-purgate-size: 707

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/time.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index f37fddc61e47..0e5d06a9a879 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -207,7 +207,7 @@ static void cf_check timer_interrupt(int irq, void *dev_id)
     if ( hpet_legacy_irq_tick() )
         return;
 
-    /* Only for start-of-day interruopt tests in io_apic.c. */
+    /* Only for start-of-day interrupt tests in io_apic.c. */
     pit0_ticks++;
 
     /* Rough hack to allow accurate timers to sort-of-work with no APIC. */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473204.1680856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNT-00071g-Fx; Thu, 05 Nov 2026 01:34:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473204.1680856; Thu, 05 Nov 2026 01:34:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNT-0006zY-AG; Thu, 05 Nov 2026 01:34:55 +0000
Received: by outflank-mailman (input) for mailman id 1473204;
 Thu, 05 Nov 2026 01:34:53 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNR-0006ny-8u
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNQ-000xGY-La
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:52 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3a-bab6-0a2a0a5309dd-0a2a4505ed80-2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:52 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3b-4cb1-0a2a45050019-94a38ff17072-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:52 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50miCb2611914
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:51 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013049.outbound.protection.outlook.com
 [40.93.201.49])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rvcg-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:50 +0000 (GMT)
Received: from MW4PR04CA0210.namprd04.prod.outlook.com (2603:10b6:303:86::35)
 by LV0PR16MB108449.namprd16.prod.outlook.com (2603:10b6:408:3dd::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:48 +0000
Received: from BY1PEPF0001AE1D.namprd04.prod.outlook.com
 (2603:10b6:303:86:cafe::a0) by MW4PR04CA0210.outlook.office365.com
 (2603:10b6:303:86::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:47 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF0001AE1D.mail.protection.outlook.com (10.167.242.106) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:47 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50noOk1488051
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:46 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232whx2-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:46 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmNHxrjLGCiSDOmNIxv4A7; Thu, 05 Nov 2026 01:34:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=zdr
	SjCV06jvCBbIMYqihzyNNatKFVXpQLzFOygG/sG8=; b=wbC+RE8wPI/tkAp7GeF
	ZT1EQEYM0+VM787SNpDxW6MZOedYNXynETBGq3A9nF5LT9AEYgPBaYnRLfZ4/BO/
	PM+fnGSlkuGTJYQpEUdBkJ0233hzZ4/H2xvFp31TiKqZm2fFgQoawJcjix0gm39N
	gPAAAfapv0AYaNkBeGdordZ8ZvKc3hGpSKYh2Kdgnvj1fOvJdEGoCoxGcNYo9kzv
	21npRN0n8UxyiuNdDZCUQoUvzZyHLRGEuo3y/WKHsU1qAF0e5MPgAYNEa3Yo/ly+
	dfkUHkd/D3rd8/TDrSJUjohFYgsuSWChXFZ4hBHR6Nr0O+7Mjlr7XNUvmXqrKTvd
	ToQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=w0xjH/W/1wro52t53F/mvc1rPgJRQt8aufAP718Vq8Kt2CSiuke8/5sWkmYVD31eLDGnpZ2O45VFtBvlXy4Tp9KVOTjMGJB9luH4UFB4r8wLeUashv4mYUKVpXJ6aBVXvX29SvvPkiyM6l1iRZ1xGp3BmFhk4cXcqTtQA6OBJIDrXR+hTQ78AAxqVUUiX9Po0pwv59itXUcDSIoO9QwrjaY3JczrJxt1hiVzDwcsNYa+NAqAuiQauXj8wGbMVPYiZ/MZa9X5qfDkPi3o3LtgRf6ZQ8Mfd+/XmQ0MV3MUn1tk2iT//PGvB27CrNiAV8VdTw4wzUAAv9ZY/IuWz1de8A==
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=zdrSjCV06jvCBbIMYqihzyNNatKFVXpQLzFOygG/sG8=;
 b=qbI/vqinlQcvMKbvyRrfEGAa6YpqlziXtLoxwFlYpZDNStm4nE5o33EN9rbPP3PhgEZqBG87UHo97tAnywlNAmY5rxDZFhVb+k/Uvof2xUvq2jTjfOGX7raWY0rwWjnvAgAoSHxddgIboYLyz1mznWXGF0BYEHCUIy43Yet12+bHmKbGUVAiiYbL3SvOsj+E7pvExKQsJIQDYgBBjp9R89QTuPIQKc1TblT6sIJNsbxCNSSd8/KS6DMqSfydDvISHz8+T+Dtm3VS2LlX90qDN55mP39O7UgcjtozjdFVVyvNy92/EXXeQgIX9LtjKrEgzPb/Bnekxq22lYX1FgomkQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zdrSjCV06jvCBbIMYqihzyNNatKFVXpQLzFOygG/sG8=;
 b=at9/CYW48892KQJrXcuIUD4BHXeAXfRAwMMd1pYuh4r38KbY3TwJbLafXN9rHU174fFH5IogR4GFZsIGPe3fSFfVfwJy1Yg6ejEwGLm16HWmBwKNzOic+rLCYfa2fyOtpAHIbXix/qd15uJ2RIQXGwAqWBFAgDVysFCdlFyRN0Q=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=zdrSjCV06jvCBbIMYqihzyNNatKFVXpQLzFOygG/sG8=; b=
	L3lI+bKWuddZsvk4V2inB+egSmBnW2vu2PEU2om0JdgOPvJAjGSt6VXUwaw/TK9K
	rnjpsuYhjlS/XLP48SU205YUraMqofDl3f09gwKQovQ8QTckKEJiqS0vddpp8xxq
	BpoPI1L3WfDwnByDa8FvjXuSN9SE3cgFmYfHqXxHfV+SjDICMnpQzKw9cn18dNrH
	n5N0YY1ijlhtvN99rD4hMDcpHkqQlsHZ5HxB0vOnGxm8wDuOiNtEmEzTtc2fttdV
	Za/h2FV6X60/sqwlwceioCLaoYS7Lp/lRcUdpNVpJ9II64ZXnzQoNO/muNj4mrfQ
	Sb1Sky4pVfPRvpuI9DrMGw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=zdrSjCV
	06jvCBbIMYqihzyNNatKFVXpQLzFOygG/sG8=; b=E2HbeJof6am60l2ip217kpu
	LTTTFo0AZt6/jg8F1uVJg50dgDyP8MUJrGE0O0MfkQtIWAU2TEdhC3nZqcoINz6D
	I5uzrwxUrX0VkB6MLQ8eN+yh71TTbhWAkQSug4KOHq3tvOkIfozT/a6HoK8B2Jxj
	FfEh53v6lh0r561d69QlLRgt726Civiw/UfIRReSPz+wX334LYCNxLqTugDNp9jv
	0rl/3B2JX2umBYF9i+wXX2RpbYFjtGczPIiIYRiSbicHlbNDfjkIJ1i4SklxXVn6
	dVDCVek7Z31KiRu/stoJpiZUPdXg4fzeAex4Yx3aCvQEP2bvf81t1EFw7l9CX4Q=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNHxrjLGCiSDOmNIxv4A7
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 15/28] x86/hvm: vlapic: add checks before posted interrupt delivery
Date: Wed,  4 Nov 2026 17:33:32 -0800
Message-ID: <20261105013347.719392-16-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE1D:EE_|LV0PR16MB108449:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: ca708f3d-166e-427f-e37a-08df3adcf9f6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|376014|1800799024|10067099003|18002099003|22082099003|11063799006|261022105027099003|261028144727099003|261026140227099003|261102123227099003|261021121427099003|261021123027099003|261009223027099003|56012099006;
X-Microsoft-Antispam-Message-Info:
	IClIYAgvw4rL/1biAw+sd5UMn5wZKJbENyS5UCUFl4NuClwrpn/G3cTGycAPE1GKVj87tfYqgiJ1q12yR2bHWmYg4tkAzgNXdveucz9V/hWbdvQUoxS1rZf/QzSReEsgNfV63o3VlVWQHPxIffCrGIVi//QVA3OM36PKfFoiYAr8ydwxPUNuuwYM1OslPvKuVEDH8tsE25DRmMSf2XX+5xi3Yb03UFXUV16bJT0eWcaZoN8RerkKDSF+ahwdbLgQOhNzg0cxQTIdUoTxB9+LsG19jBLCENiupt2Zz8p2ya5JqOxkIicLNbKiAFvXfzBVJIa/qAGt3XLV1VZ+yRPOfYKNw5GbPR1yu1CVzeefyrF+wqCQ6L5au3fjlaygIWbO4gg36C91Arjv/pI8b1r8QWU1Db3uYRmWzyiOLf5p0ci5q4NBG23Spz5aLRxu0QqXINatrJTZXNKIAod2WGQajPoC7a9CHYOcoStHXOjaRTsr8YiHJWjpSvchaYo8057/d0UeXNDA+GlmHjKka+AxyQo5l+AVunk2LR1m4QZwC8XW4lJrBi9i3pIxHtXZ8UPIZ55k8e8vUDd50w/6V17KWbXtHoflk/QTmt4NihbAx8F5PlUGTqT4JcnA9wsMFe9xF+Ze9Z3+cJoJjZb+qFxZKaznbJohx4uKCB8V68+bHQOTY8V0UgNO6mxeFjmWS8MJb445FYSwxYy+bBB3OFSx4w==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(23010399003)(376014)(1800799024)(10067099003)(18002099003)(22082099003)(11063799006)(261022105027099003)(261028144727099003)(261026140227099003)(261102123227099003)(261021121427099003)(261021123027099003)(261009223027099003)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	n5Dn7LSREK5AYo1FSJOODPaStbtSJ8n1cyDbyK6sQD52gIvIkCqCgxpPHI7CGDWFx6cOEwJMwfy2wk9lYIJq9umsI02jFsEpcC8mWof4qtzBqIbZmOdZV+r0xQv6dAioMypnkxsKXVoc1TaGXugznMlUo6vmJnHT0bO0Y6Bjnj0McYD1IbTza9+gjrnwNbaHJXd13W8mCZLv/LhCS8n0CSbz3HitP92ChrrcuvCH2/VkCFCmWHhTLIRPajY9KpuzqP0rKdFvAJt9uOWPAo74kLdO8TutvfNiVjzLxP5qBIXxsdoiagdJ/y80T6yWVllVZrYZjrLxzA7EKDEPNlHhMIX5DcsaS0BDR0xMdmlrI1/SdJk/NAr+Qk2WETWbAl25Q4rikLJ5AitCOKNsFJtu63p5ipfoi7M/B9T+YuJcJ+7K/BR3R/A9g6nFjaQDPCnQ
X-Exchange-RoutingPolicyChecked:
	L/PAYwBIcpTw+QBhUTGNXF3T48c95GSJiGE7MlIW6aUUWyBW78qVKJCUMDb0WHDrvWXVDgIgBvlnYs35kEo7Go0zKh6kouqmHXfDkA1YqfHERqgggg0y8B8nfO12mHp9i2WWnLkreyc1ULGnjcgwV7U8H2mv3Hrr6nKmEQdFzKURE8nVnRhzt3WtMhrAB/W8QrLPK6J34fR4vufkjzacrc8Ju5TjoFhLuZKe7vMWqO2ULYvrgcbPA/PE6fHvRBZJuJsPRC7e3eYgqPWLAuzmL2A6aBCVVWJQ6GqwbngM4dQ2/E2+B1ftZ8nI090E9nngJ5ZIKEuj1/tWslD0C1LnWA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	gtZeqtu5dUYFddkpj+ZoOkdUqpx2ZozmuV/rpixq5WlHx23gtIjo2kPWIsduq6yWv4ygHzejueS2o2J7UbSklieN5cGj8lbTMA6ZJRwiuvav9sCVS2JdP9S3xGcn4kQFq69UH6hVuXaiG5poNYhnJCUILrWk+QcucGOsfofzsvEg7fh/W+m+v2aKI784T1QvyMudnlZXfqFQH1muc0Y7UnpWNqDySqhcVQGyi6+ydj8v7jYDmh6WaPrDXGLo4DJ3dXKvXD9wPPWrruVSV+yEoHAvMWdZ5dS4WGojfSue3AOd73PnDHGUIhx9ZV11FOkHoUQa3o+62RhKYZbM5cQL4FYlFuwXZ5bYYImFEeKgPPVBgq4277ta5C+xo04qaWUCiD5QdqRruyupsGC0F21Uw+RxoiQxhvSML0HqpnEY6r/KRlNlJ1E48Gv8VYwJNWL+XqJiHwpQGzG3ESCvsSmM2esaWCs6PBe15ubwE7Ryk+AXXpVmtBdhLRmS4VW7U6xYS+PVAAq7cBWIJGoCG3vIXQNR0XXIdToe5K2zmfvjkF/fM5FgZFFNOc2BfrguChMT4FzPbJuR7/egUQk/AoFazN1kf+luAz03KWPJwjHI+Qf8zjoS0Lc2Cd6r8e10WlKlFb8sSo23ImmIV1UQDGiUSA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:47.0321
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ca708f3d-166e-427f-e37a-08df3adcf9f6
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0001AE1D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV0PR16MB108449
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebdd3a cx=c_pps
 a=onUmW/TBZy4T/WhMO3N4DQ==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=cbNQJ9GKAAAA:8
 a=pmcM1Ed31OFrkSDlWIIA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzexnzVpAis6S
 e6EgBjY8cz2gG01aun39BkWVGJG8VeSFzIw1hL8lxdDEMZ6F6SvhTfn3dUqN1PvseKeyuqL9TKw
 Y5CdXLTBCwo3pzl1mkJh/Xdh9/JnAt8LJvKE2afSSG5viVhrzZ+K
X-Proofpoint-ORIG-GUID: MhbiSFx_dq-CRH0r_Zr6B4s4SS3MsyUS
X-Proofpoint-GUID: MhbiSFx_dq-CRH0r_Zr6B4s4SS3MsyUS
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX39Bvu8wG2Ac/
 ib9TWJyr/1XlwTNDmqD+OpD8a41ItiZTxGLmGoz+aGbDgvW9etL+0YwvI5aHtDtAuHtFWLKjdxj
 cE9TL5L6/FzpMXIEvsoWQDxRu3YmSw915CCj0k7ro8YM3oqsEcvJU9MBgmJFFYOYPGmWNrDsBum
 EIQ8jetaQVowZGK+/iSs9qnMBrXxjXocCfpBaD03+PAetxSSx154Nt26KzPCHkI+KVbt3Adk8/c
 vjaO1JAy6LLcJ52L18TDQ2lj2Qezi5ILJAMecEsvZ7AxzvV49zm0d1Qfd8HDN6RELgQ2mfoPfd3
 Rw25NkWTJL6K8AsGP19XAtmm3unr22npYMWu8CPaYlLz+DHmfH2cdUl+zRWW84EHPSGYeGstP6d
 HFveorRRcnzyNwFmp3dQDL/L6PHpTty8/E6SbTEPtNOWnJVteScL3uizXh75GQBgwn/yuEMJPxJ
 QLYOdXUbgkZcoF38pVw==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c201ff/1793842492-F62AB2A1-8C0AB5BC/0/0
X-purgate-type: clean
X-purgate-size: 1219

From: Denis Mukhin <dmukhin@ford.com>

Hoist IRR check for pending vector in question to avoid calling into
posted interrupt delivery callback.

Also, avoid calling posted interrupts when current vCPU is target vCPU.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/vlapic.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 22c472d569b5..222a78b02b77 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -164,9 +164,17 @@ void vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig)
     if ( hvm_funcs.update_eoi_exit_bitmap )
         alternative_vcall(hvm_funcs.update_eoi_exit_bitmap, target, vec, trig);
 
+    if ( vlapic_test_and_set_irr(vlapic, vec) )
+        /* Interrupt vector is already pending */
+        return;
+
+    if ( target == current )
+        /* Kick remote vCPUs only */
+        return;
+
     if ( hvm_funcs.deliver_posted_intr )
         alternative_vcall(hvm_funcs.deliver_posted_intr, target, vec);
-    else if ( !vlapic_test_and_set_irr(vlapic, vec) )
+    else
         vcpu_kick(target);
 }
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:34:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:34:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473214.1680865 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNW-0007P5-OQ; Thu, 05 Nov 2026 01:34:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473214.1680865; Thu, 05 Nov 2026 01:34:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNW-0007Om-Jq; Thu, 05 Nov 2026 01:34:58 +0000
Received: by outflank-mailman (input) for mailman id 1473214;
 Thu, 05 Nov 2026 01:34:57 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNV-0007JM-3f
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNU-000xGY-GT
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:56 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3a-bab6-0a2a0a5309dd-0a2a4505ed80-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:56 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3e-4cb1-0a2a45050019-94a392171e92-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:56 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mWtX2568283
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:54 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010004.outbound.protection.outlook.com [52.101.61.4])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb1u-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:54 +0000 (GMT)
Received: from PH7P220CA0179.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::27)
 by LY0PR16MB450305.namprd16.prod.outlook.com (2603:10b6:404:201::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:32 +0000
Received: from MW2PEPF00014677.namprd04.prod.outlook.com
 (2603:10b6:510:33b:cafe::33) by PH7P220CA0179.outlook.office365.com
 (2603:10b6:510:33b::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:32 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MW2PEPF00014677.mail.protection.outlook.com (10.167.249.184) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:31 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mTd13091555
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:30 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhg9-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:30 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmN1xdHLJmeVDOmN1xZkSG; Thu, 05 Nov 2026 01:34:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=aIj
	ZuqVWwlCdqrpZV1nVy5ZvbYSxc2s85Odwd4BoSOI=; b=kXZy/2Q2heTvuwHvsHc
	pGbiRrSvZenRBSPXX+sLWolAYGllmfXUDKEOmM5nJTtXA9ZBALhYxe/YonpbYTYk
	p4NIGbU9NLSMimQr4oYInKHeZIBACgv5EyClD1/J04Gp/zXv17s5eQQrx+tSTUvU
	rJtZyZzOeBvMhyLcsArQflYWuoJ5R34N8MD5jer7oTn7GfLNsbYIqkLw7zvlM4Xn
	SVB4dgXo8NgAsOOTTiX8rqKyJUMZ710NopVq1XaGx1+zS/Csb/knX5DKh06BdQ9f
	nsIE/Wv1gzU3mIJ4kfF5nHARUmDta8efrb+IWk4JmDFu+jjtVzOQHgNwC9Gio8f7
	Tyw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gCyz5K8il4bPwxEo6dLcI/ThcsHVFL30BqxMGdjq31u8VCAu58GcCJ3IuhdT2tXlmkFT3BaYpsEk0KOpiwAPJn2k7zMR8csP5Pjk8Thl8aip8h4I9rd+LMmqI3vVWx5jLVY1P0jtS5wnid/3ImNLsRHIB9AQLWqMdM1cJDcaXKIhF0qAXufasXSCXW8SfMNSHm3gOQyJQ5cZr5m9nLsWSUzK9HJUNUgj+c2H7fPpMbUXd1+0+vCQrzChOkxF3oT0iOHffvUZvbJK2udHU6KwX8WCU4e8MHLLf+gz/J724bUjDPmZ0jorrPisqJl/9HxjKbs8+O+2vtVzB5fsyM6Xsg==
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=aIjZuqVWwlCdqrpZV1nVy5ZvbYSxc2s85Odwd4BoSOI=;
 b=D3t+mek+f+K/LrZcYCYSA36gK4YMRpBq8xIhxZSLQPftDzkmYcMVAABj9BEQ6AgD0XzwFkfK77aiUkhH8IQ4ozRkOQYG8aCLL6VkHOhzz4popghYXy6URKortGwyNbfUtdXmktjc8fDNgNgaRHgq3CYr/lD0DG/5wF8anCgKnvHTvP0sJ/ini6BRE4Q4a6mPpeUmbFO91glDl9Yr23acFlY+6LqB13DDPSc0s6P+qW/H0F2fgN7qO5W/pzmTT834VeaK//k8jLTJkD/+6g4AQppuMFfquyXmNGkkUD+UzCUC3+D7xmwZvJuqPEMJBpNVc+vhjGg8SZ8Ohh3szUvZgA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aIjZuqVWwlCdqrpZV1nVy5ZvbYSxc2s85Odwd4BoSOI=;
 b=HThygJ7nPa1gzIx/pjWe6nLXuOGYkghMzXoOJL5U69t+4H5mdEz7Lay7wfuL6biXsE4ySZ38V1FFfIUev1c9LDZeCUppkzObjCNsBEBuzHW+4THleJ0B+NXc0ygQZniptwM60A1QFD/7lvr+Wv4NH/sxMh6rjDxOUGKBZfHQuWM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=aIjZuqVWwlCdqrpZV1nVy5ZvbYSxc2s85Odwd4BoSOI=; b=
	laEgtucCNfUaZSjrlycTQLtO6GygvzKjstPnmMisS9PHKKwPrzspLHxwryFv04G8
	n4NtnOc4KWIZc/aTddIngjR8qS/4UXFBuHK1zqUzq45os/2FHfWN0X+MmJJthr5R
	GwAXf1ZxANe2Snjk8cOPqkJGRm7bu1c7NzSEPUkNCAn8UJusPzJebfQtakClMUaI
	Qf8kHPnNUgkV1mzetcw5vhOrFi/GbGftGK7r58mu/eUvjJ/G+LSHlvnlzrH+C/TP
	p7dKHuLkBKh+9arUCecic32lTHicnHqHuWGUE9ArcJD4sLDwxbnSk0BzX3qS/fj1
	yDETdN5cxjEEkjVPoiITBw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=aIjZuqV
	WwlCdqrpZV1nVy5ZvbYSxc2s85Odwd4BoSOI=; b=N1cLg+bAfhgnVEAcB51Q+Wd
	M5TZm0gFYWOZz9L24v4pp5sgRloYVY5W/5AEk0Z8wlwOidHiH90jrNBFuCUxnzTS
	Bm89GzcOBIe4RYiMfwAURoLsUGO8Zzgy4UJ63GQvamKwYk63bVVrJcL6+xfdNMSZ
	2csar1ajph9ybE7UtF9oq7sOdxW/9VpkFTCBv5dMWCl+2H6BDvZ4dYOv2d+v+4pQ
	Pq+ZE45NDD+chTE886B/BUhWthItQKmcYf4ArO1SaN/LTBc6CZAqIUObb7eXHBd2
	2EDjmwhoJGfSzbfkgGR1jYq/qrxatgA5rAi2cFTSswEwn/CBHoMdVd6JdOCC8YA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmN1xdHLJmeVDOmN1xZkSG
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 08/28] x86/hvm: avic: add AVIC_INCOMP_IPI VMEXIT handler
Date: Wed,  4 Nov 2026 17:33:25 -0800
Message-ID: <20261105013347.719392-9-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW2PEPF00014677:EE_|LY0PR16MB450305:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 8c4fd31a-bd1b-4204-587c-08df3adcf098
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|11063799006|56012099006|261021123027099003|261021121427099003|261009223027099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|261102123227099003|261028144727099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	Y3zgA0xg1/ziAKYCon/Einfg4at83zcCe0QBktFX3ytSkISzdd2fbhXMUHQZiDbgOyjtWs5W6lt2RxydtPUwrPQCj79/4nvILzGpLtD2odnzAMGi1xsWEaqyRTMdJhIiiHN4lUdh0TKV1dwrj6blVLPJXtwi9btS6WvG8rm39+8EViqAcIpbeQwYY1/FR554jG9H4Hq1tE9TcKeHSiOVMFBbr2k7hJNrbuNW35QIRQthANGaHiVtQQXuS0bH1jcmPw1PI12GVMlVR2QCSU3rko0ydVP5bCXQB234nr6d3D/QDMPiOoGvva5RG2An7+kTO3w6v4UBRw0QfXIdRChkdE/Fjbi1sKPPILA5ZafoWfSVejvt9E2oLu9/ymuGaU6lhpjUu2cP1idUJIwPjCc88GJUiubDW83ncp4Sezt3suH4mB3n+zqzQIyr32DEerAc3MTILeM6jYrK3szu8JfkvDqVevl2vjbvsTPSgp567Vi5zAhS5OrPKfKCIQabotooM+42TVjcrjtnbWaJBs8ZauJM14CH8saHkEsE6RMuOsr9SuLnr3wsZAhVzfVrURCH122pvLstiZuFSI1350CoCJBNKYXnUxFjMdmIoaf82rVYAmXnO9m6JmAk/xnBp11FaEy6VzgR1cEtKQsMLOBNlY+yEHoXgslGQwdjo4DjscLGQfUtj/zdqxXdgt/WrYAOyVBwLGTSQ6rrbqhcNa7CJw==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261009223027099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(261102123227099003)(261028144727099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	OSjodAyaewIkS7Xx1sVlTraK1ab8MWa0eNPA4CNPwu8165IqS3eLcVqUPQ1vGlhQRIPMvj4mxwQP5Vbusuh8/tpeGm5YgYyD5n7JkyJ5/LAalRgdgxLb0qjDiiG+sGnsL6b2HXgQffTX+mox/BiFxalKXLbuWiyXojDRlueN4kzIFT7fAOrY0BLwqoqlIK4PLCR8plYgvef8vYPotwwyGnHHhyZmHoLRF8EJ0NIxBLXgu5yRWFe2R0OX4Z6cZSmmsyaXjVSgnfWtVHNqFLB0PYqpkar62pzGI8O6IaWOd5ThUJXwpcv+nKMz+Qhz3Mt01NKSuj7MFbHcepJSqbdPQl1XsGau06JQ+tviRdFhfF+Akun0C+kyJD7CSettZgttHn9jU9GPGWrJBDzNzna/h21LHH/217VKlzYQvI4a+/enb7PyFAXjuNnYriQTPI8+
X-Exchange-RoutingPolicyChecked:
	Rm94ts4nTv4tcQWq3688MeqGDl37/wmfBVzf+oVmY3k5E056YtTVUUDjkqOmXkASAcmbWQEdJWXPbIviaJScyukbi5awzXEq+pfwPh06KBhVlnPVqlQUvT8YvQX9l4b+CWHEZREqAfi66XxqkaEo2V8kPLWDbm/h7CxiPG7nwqmZ309LHBZMqeJ4PduCDkpdlPLfkjSACE2v98bG/DAHsY72QKVqb7ea2hX/0JYTVM1UtkGhVOMpscbMQHuFGkNyJZSlkNLUyt8Qtv9X/yIt24BUq0rYFqMHFuy5xaB0cTp1s7HqAst4EH46Eio6hBLiEgcvm75fTo/pGTWcgrtDKg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	xQ6ya1+GAHNStCvykCauE1RcC5rFSAZnBpRPBmVvtsoHRoMU46veNdbSg/XwSD7elFjy7ddzK8rgxLQ5FaWEkHl4IltJWIYH97Amc2pR4DiyxWT3hxx0gaRntlhy013f4mdWmi1ttIRLLqdq8h1nEvpb7XH82qCH9VzN9dLWJQ6s914wOAI5RwK2MPLMIrUbC/f9DngKvXv2CCE4J5baLQhD4U0Oc0HY0VMOrXmM7eruLhtP34aPbran5hpWmscUoG3hmg8wBlXNv01C5KbeRG8cMDjJso+1pgwsVSRDzZ2sgtbJe5DV3nkETrEnxzuSOn6wA86+rLu3Nbnaq6QzsPliuzEg3sm76StG9VMA8yO+Pxmf5knn9QvVKJy00IWUk74ufhxKjFvNkWaQ1q10c5spD7dq4sH+/Cz8JiwXI2RpqJ+t42fZD76k0dOfelxf8aeXyB8rURVYQTHjuU11VlOqWtwh+mW7G1gWxh7YYdOvrzmB587hfzeUZuTvKAtt+jSallMQ+kTfcqB1UFFxc1Rdiu9fzaEljPGZ9PaXiP+Yb4EJVUypPy7uKCgquHedL23U/kVR7HNKWV1G2Ey1Y4t7TAUNKDknNxGHaVdEjDGPKQ7ZCTVQQHhSwCa+aCbQsrNqTZDdd3grOpgHkjkpEg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:31.1365
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8c4fd31a-bd1b-4204-587c-08df3adcf098
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MW2PEPF00014677.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LY0PR16MB450305
X-Proofpoint-GUID: zokRtB1cl-3Wn6I9nNuTCN5wuABKhg4_
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX4Xk9tr+/PRjV
 5MnM5HYgDD1raUXK10BAFXDQlhtAqjvwuvUVqGschXcame3A4Gh/ZzzrelMohjJsciLMaR3m37H
 mI7w7KbfpLNS3fgxrUsaMLC+YflvzEgVTlj40+snChyC0/J1X/NN4KtDGBrr0U/TU+nNv1Y1map
 HM1PkDuzo1cXI9m84hKovb/AWKAocYTGBe2efpjEdNGlmj/3EFLYz4HcmWGQviHSMhMlgMTRfWW
 KJ17V52+LTdBP9rL4ZxbpKAGi4RkjRs5tDonvGo86hKyXmvTGrN36BT4n/8jeqAzfKe3fGSzfak
 yF5tS+o/U23Rg4l6bFneo5uD2DTE/1rkQ3Xyv14F5Le0CE+EbXba6Xp1zKqwLc3jZQLuOtoRqQD
 baZGz4ln0j5fIqL2MZIGGitwy5+5DIXqWAyd6L4HSwzCpPouRr7/SD2rW0VJp+N9RPoMliE0oGJ
 k5YXAiUF80AjiuFv+cA==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd3e cx=c_pps
 a=R4qMYQySjg0trGpnu7oNJw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=3HVv6gUSBiGGIqaBedQA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: zokRtB1cl-3Wn6I9nNuTCN5wuABKhg4_
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX0H/Kb0fcZ+MF
 oJzScU9AwVRY0UryVEV9mdp/il0nojZap/HxLW0kf1jMlsCdQv8WEOovm8GWOcG+3C9MiWPD3rK
 gJ2yTRbRf0k7RUxjwqthr36+nw0Ftdyv/bEM6oNQwZFWjwkN08sZ
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c201ff/1793842496-F7CB82A1-FF241251/0/0
X-purgate-type: clean
X-purgate-size: 7841

From: Denis Mukhin <dmukhin@ford.com>

Introduce new VMEXIT reason 0x401 [1] to handle the case when an IPI cannot
be delivered to all targeted guest virtual processors because at least one
guest virtual processor was not allocated to a physical core at the time.

If incomplete IPI occurs, try to emulate an IPI.

[1] AMD64 APM Volume 2, Table 15-22 "Guest vAPIC Register Access Behavior"
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c              | 115 +++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |   2 +
 xen/arch/x86/hvm/svm/svm.c               |   4 +
 xen/arch/x86/hvm/svm/vmcb.h              |   7 ++
 xen/arch/x86/include/asm/hvm/svm-types.h |  10 ++
 5 files changed, 138 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index bc98661a7057..0cfb21cb8e3f 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -9,6 +9,7 @@
 #include <xen/param.h>
 
 #include "avic.h"
+#include "svm.h"
 #include "vmcb.h"
 
 #define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK        GENMASK_ULL(51, 12U)
@@ -235,6 +236,120 @@ void svm_avic_vmcb_destroy(struct vcpu *v)
     vmcb->avic_vapic_bar = 0;
 }
 
+/*
+ * Handle the AVIC_INCOMP_IPI #VMEXIT when AVIC is enabled.
+ *
+ * The hardware generates this fault when an IPI could not be delivered to
+ * all targeted guest virtual processors because at least one guest virtual
+ * processor was not allocated to a physical core at the time.
+ */
+void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs)
+{
+    struct vcpu *v = current;
+    struct domain *d = v->domain;
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    const struct vmcb_struct *vmcb = sv->vmcb;
+    uint32_t icrh = vmcb->exitinfo1 >> 32;
+    uint32_t icrl = vmcb->exitinfo1;
+    uint32_t id = vmcb->exitinfo2 >> 32;
+    uint32_t index = vmcb->exitinfo2 & 0x1FFU;
+
+    if ( id >= AVIC_IPI_FAILURE_MAX )
+    {
+        domain_crash(
+            d, "%pv: AVIC: Unknown IPI interception (exitinfo1=%#"PRIx64" exitinfo2=%#"PRIx64")\n",
+            v, vmcb->exitinfo1, vmcb->exitinfo2);
+        return;
+    }
+
+    BUG_ON(sv->avic_physical_id == NULL);
+
+    switch ( id )
+    {
+    case AVIC_IPI_FAILURE_INVALID_INT_TYPE:
+        /*
+         * AVIC hardware handles the delivery of IPIs when the specified
+         * Message Type is Fixed (also known as fixed delivery mode) and the
+         * Trigger Mode is edge-triggered. The hardware also supports self and
+         * broadcast delivery modes specified via the Destination
+         * Shorthand(DSH) field of the ICRL. Logical and physical APIC ID
+         * formats are supported. All other IPI types cause a #VMEXIT, which
+         * needs to emulated.
+         */
+        gprintk(XENLOG_ERR,
+                "%pv: AVIC: Invalid IPI type (icr=%#08x:%08x, idx=%u)"
+                " avic_physical_id=%#"PRIx64"\n",
+                v, icrh, icrl, index, ACCESS_ONCE(*sv->avic_physical_id));
+
+        vlapic_reg_write(v, APIC_ICR2, icrh);
+        vlapic_reg_write(v, APIC_ICR,  icrl);
+
+        break;
+
+    case AVIC_IPI_FAILURE_INVALID_TARGET:
+        /*
+         * AVIC can report an invalid target for guest IPIs, for example when
+         * a logical destination mask contains IDs that are not backed by
+         * vCPUs. This is guest-controlled input and is not a reason to crash
+         * the domain. Handle invalid-target exits like unsupported interrupt
+         * types.
+         */
+        gprintk(XENLOG_ERR,
+                "%pv: AVIC: Invalid IPI target (icr=%#08x:%08x, idx=%u)"
+                " avic_physical_id=%#"PRIx64"\n",
+                v, icrh, icrl, index, ACCESS_ONCE(*sv->avic_physical_id));
+
+        vlapic_reg_write(v, APIC_ICR2, icrh);
+        vlapic_reg_write(v, APIC_ICR,  icrl);
+
+        break;
+
+    case AVIC_IPI_FAILURE_TARGET_NOT_RUNNING:
+    {
+        /*
+         * At this point, we expect that the AVIC HW has already set the
+         * appropriate IRR bits on the valid target vCPUs. Kick all the
+         * appropriate vCPUs (e.g. logically addressed or broadcast IPI).
+         */
+        struct vcpu *target;
+        uint32_t dest = GET_xAPIC_DEST_FIELD(icrh);
+        uint32_t short_hand = icrl & APIC_SHORT_MASK;
+        bool dest_mode = icrl & APIC_DEST_MASK;
+
+        for_each_vcpu ( d, target )
+        {
+            if ( target == v )
+                continue;
+
+            if ( vlapic_match_dest(vcpu_vlapic(target),
+                                   vcpu_vlapic(v),
+                                   short_hand, dest, dest_mode) )
+            {
+                vcpu_kick(target);
+            }
+        }
+
+        break;
+    }
+
+    case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE:
+        domain_crash(
+            d, "%pv: AVIC: Invalid backing page (icr=%#08x:%08x, idx=%u)\n",
+            v, icrh, icrl, index);
+        break;
+
+    case AVIC_IPI_FAILURE_INVALID_IPI_VECTOR:
+        domain_crash(
+            d, "%pv: AVIC: Invalid IPI with vector < 16 (%#x)\n",
+            v, index);
+        break;
+
+    default:
+        ASSERT_UNREACHABLE();
+        break;
+    }
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index 1084ae683944..2668d4481425 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -14,4 +14,6 @@ void svm_avic_domain_relinquish_resources(struct domain *d);
 int svm_avic_vmcb_create(struct vcpu *v);
 void svm_avic_vmcb_destroy(struct vcpu *v);
 
+void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs);
+
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 8b7bfed0049f..693b5c29287a 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -3078,6 +3078,10 @@ void asmlinkage svm_vmexit_handler(void)
         vmcb->bus_lock_count = 1;
         break;
 
+    case VMEXIT_AVIC_INCOMP_IPI:
+        svm_avic_vmexit_incomp_ipi(regs);
+        break;
+
     default:
     unexpected_exit_type:
         gprintk(XENLOG_ERR, "Unexpected vmexit: reason %#"PRIx64", "
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 1ee5da053a9a..532382bd02f3 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -291,6 +291,13 @@ enum VMEXIT_EXITCODE
     VMEXIT_BUS_LOCK         = 165, /* 0xa5 */
     /* Remember to also update VMEXIT_NPF_PERFC! */
     VMEXIT_NPF              = 1024, /* 0x400, nested paging fault */
+
+    /*
+     * AMD64 Architecture Programmer's Manual Volume 2: System Programming
+     * Table 15-22. Guest vAPIC Register Access Behavior
+     */
+    VMEXIT_AVIC_INCOMP_IPI  = 1025, /* 0x401 */
+
     /* Remember to also update SVM_PERF_EXIT_REASON_SIZE! */
     VMEXIT_INVALID          =  -1
 };
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index 30bdaf27a856..93629418c225 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -25,6 +25,16 @@ struct svm_domain {
     uint64_t *avic_physical_id_table;
 };
 
+/* AVIC_INCOMP_IPI #VMEXIT reason. */
+enum avic_ipi_failure_cause {
+    AVIC_IPI_FAILURE_INVALID_INT_TYPE       = 0,
+    AVIC_IPI_FAILURE_TARGET_NOT_RUNNING     = 1,
+    AVIC_IPI_FAILURE_INVALID_TARGET         = 2,
+    AVIC_IPI_FAILURE_INVALID_BACKING_PAGE   = 3,
+    AVIC_IPI_FAILURE_INVALID_IPI_VECTOR     = 4,
+    AVIC_IPI_FAILURE_MAX,
+};
+
 struct svm_vcpu {
     struct vmcb_struct *vmcb;
     unsigned long *msrpm;
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473216.1680873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNZ-0007k4-AR; Thu, 05 Nov 2026 01:35:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473216.1680873; Thu, 05 Nov 2026 01:35:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNZ-0007jY-4m; Thu, 05 Nov 2026 01:35:01 +0000
Received: by outflank-mailman (input) for mailman id 1473216;
 Thu, 05 Nov 2026 01:34:59 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNX-0007SG-5k
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:34:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNW-000xGY-IA
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:34:58 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3a-bab6-0a2a0a5309dd-0a2a4505ed80-8
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:58 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd40-4cb1-0a2a45050019-94a3921731ec-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:58 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mYSf1469773
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:34:56 GMT
Received: from ch4pr04cu002.outbound.protection.outlook.com
 (mail-northcentralusazon11013002.outbound.protection.outlook.com
 [40.107.201.2])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk511hm-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:34:56 +0000 (GMT)
Received: from MW4PR03CA0302.namprd03.prod.outlook.com (2603:10b6:303:dd::7)
 by SA5PPF62FFCEA39.namprd16.prod.outlook.com (2603:10b6:80f:fc04::910) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 01:34:45 +0000
Received: from MWH0EPF000C6187.namprd02.prod.outlook.com
 (2603:10b6:303:dd:cafe::94) by MW4PR03CA0302.outlook.office365.com
 (2603:10b6:303:dd::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.546.21 via Frontend Transport; Thu, 5
 Nov 2026 01:34:44 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MWH0EPF000C6187.mail.protection.outlook.com (10.167.249.119) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:44 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50noKJ3231662
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:44 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp92-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:43 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmNFxugmKz55iOmNGxXIW4; Thu, 05 Nov 2026 01:34:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=Kgg
	dkTBONLpG3Nrk6HtndLPsZ+Hk+ameXYc1oBVj1jM=; b=ex7o79w4fmZ5/WZnAG1
	v7iv4nv6IgvhF58XClz8hOpB20JuJ9ISzQ4W7H16BcIfC/iN9rrsM4ucMGxfELj3
	j0hpFGqa50l2F2r35UPmN2CNlSnirlwVFbmfthfS7YNeD8CAIVPPUrIuLk5dKfAd
	F6euxmwQZ5KvpnQMz/TL5PSJDKO+2sTSjHCIGcMcv3OPlOYCWvBHHyi5+fiXGt3l
	h3lwVuuCv1Ng3k0bD99RykpSLrmi3XyvE3DO6ziDps9Ix+sHe62FsdJ0ujqFC2Xm
	szAZioVBaB4fAEJMiQU/JimlkhNG4v1cJJr2x1k1dnjRHK7Tb/TawH62cMmXaRII
	qRQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X3cqgSjQWL1rGQ7+QDQ1iuOuiN3hVZFD13jEFym2HzTqGYMkfvNQRk7KKCIk+497ASNx8HUouH28/TogxpH6r3eb5C1bhmvhy8OFW5495s+LSTTiHNqvMjntvtsAxoeMENpmVXyjeDIrqwhoadhOi48ShlYAnSVSm3f0ytl051uVy8W5oik1Ol1I5GJYnnpzhvkam5SgfeJiginNYasRt0UwTcI/a3fu2HD0PdTXiNZiPJWgnoUnTyjtK8h4f1lI5/eFdrdxtaIC3J1hKTUNTUD9U6kaOE6VOSWr0GvU4jxzTeNA88C8PqHGkFgKmwoP7Pom1xWYuLRfGHpIvBOBFA==
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=KggdkTBONLpG3Nrk6HtndLPsZ+Hk+ameXYc1oBVj1jM=;
 b=k3h+IKAQA+GzIB1W0wgUMaDIOpUSSuLfcJh+FGNGB4/l366srjZw92fxz7fjYJ16e3qwYrSqLhZXVgpogKs8bOxBLR7NZLKhZYaeES/ZxoxLoYPkskTgwA2KwTjxVc8ahMjh/ao5IpAuN4UC1YUYxKhhETA8r3S6LFmK3sImLss98AOnb/b3XWxRYWtkEprGgvTeOI6aIORzWTWOUs1sxlzs9colKoRE1tn0SbdeKuyHrwmdfiiWK9U7b8eYdWHuiLyaymzhFrBxyytojBdgK4BJnPghIekOBUS7ywzQIr1lvKD8M6NDcMj5hIiYOqmw7c2ZYtZvZHt5xutKl1qH5g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KggdkTBONLpG3Nrk6HtndLPsZ+Hk+ameXYc1oBVj1jM=;
 b=kNMoRiBSo5eGXjGB3LrsrKhefcp5zR266IXbEjErAXWcKF0n/2tcf6fI7CCNfwi5SrfvJSip5wakcHNRuj46dagZJG7WKy7hEPWlfFQzIUimgs8wzTrqLW/HLj7uv0/DLeb2h4nlu/We50j/PDSVc+hUraxrf9HBoP2yRk2dIBE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=KggdkTBONLpG3Nrk6HtndLPsZ+Hk+ameXYc1oBVj1jM=; b=
	OtqrAVQTTHyTG3PPKmWKbC2zcn+u2tb4tT1O7d0jo8B9PS39pG7GD07ctNpvwRCE
	z1qWh70JKh91dL1SN376TfDGA01ThBUKW3qdqai58djQocIn0n4R+BozN1vehN5J
	KgGDqxCrqRky1oAbGzIyccwr6XB4Q6+SPe9LdfiywaWNM894OZZ16mlmMIGHkZe3
	LV5xl+VLtV0jMpFFRd1xaIFyc4TnaTxmd7riG0wQwNP9l4Vg9UmKbD1dWCOqWHPI
	gkkDuRse0Egc7UCuaInLdVHclNZXnKWwC8tYjkVs4snsT5nBO7xL3zmRjHjS8eti
	Et+fuPeFDkvJmosxiWQwCA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=KggdkTB
	ONLpG3Nrk6HtndLPsZ+Hk+ameXYc1oBVj1jM=; b=vBf4avrC1JQDWVz/O1IJUvS
	M3YVoPuCv7FccOQbIpX7BOhA4P6ptfjrPfs+MZzgZtJ9hnUctlmT5Ilvs/wtRZEZ
	WRSoTINM0Tpofgck2tWvWL470Yn8gtS3lfjukK6qXbEOCgrLHNMqnnmjtKbTXZaD
	DU1C18jm2ss7As5KO6De7GVw4Zy1DhOXRUc3Z9ttPFNLqDhnlwxuis6dLDQY/HJc
	RByrnSFNBhOis5JccIiK5EWC8TCTZbhkg/bXjEPwVwRcgI59gXd3QRdYuydRu/dB
	o8E6UrrVEzXyEAVAYzWofO9mKH6YweGcRe+GyEafOQTQscMIYeEqbxSInYTCXhQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNFxugmKz55iOmNGxXIW4
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 14/28] x86/hvm: vlapic: update signatures of both vlapic_{clear,test}_*
Date: Wed,  4 Nov 2026 17:33:31 -0800
Message-ID: <20261105013347.719392-15-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000C6187:EE_|SA5PPF62FFCEA39:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 8587b89f-83e7-4023-4e3e-08df3adcf888
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|10067099003|18002099003|22082099003|56012099006|11063799006|261028144727099003|261026140227099003|261102123227099003|261021123027099003|261009223027099003|261021121427099003|261021135927099003|261022105027099003;
X-Microsoft-Antispam-Message-Info:
	MTk8XXRxqlbzou3/xpknZIYVD8LmIr2T7IoTnu92WhHmCtRIIWa+FxDNT7likvODJhi+WpgFr2TWYNIiKnEKv9g9F0CDFIwq5OkNW8ojOkBj/VQdai6CzHuxqbHj1I//7fddbcyoTRGFah/w9poFWKtqCIFU+/OPLPwgKKr87+i6LzbqwZKmIK29T0/xsedorH4EZF2VV22tA+c0OUL63wGSNz114g4nvlUEH/Vs1H6ibRg+gAguTKSyUj3YkF8ZP5B/CCWerFEbH0yuhNjWfV2J2ozcVPRXybiqPSWmWS6RWwjrR8RRM/zLxdkJ6aRZ8WbBD8KoP6Kv9Poz3DZuYJXfOoXIwGEfJqzRXG4KwgFqCgOrX2Evxfy2Ru9NBQZH5v+DluxMn78VdplI3bnveqqfACxekV7wyjTlGP5wNuR4hN7Ie8W89kbWlQEs1UxOICDMPIVXoHthvD0UospaqF5guxIGGL3TurCbWNhnoVKEWE7N0xL68QGdJ0cYf2zLLIS+pdIZg3IdcysQK2MDbdMZ2fr4RoFC55cc3UCQ74KOd6MTKw9B+TRx3Ys3ouZPfJKchVJwsYPLwaBtSJiqZT1yMHZD1hUUGO+UH/JtEptnVgfFhUeSJVDYdTLdfUmK64vW4gMWIaH4Z/ASQaocG6DsuHVOUKjrIMQLrbIzgdYv28NzAAH5qTHl2RqA9buA1pGqZciEu2XHPyM1EtitIQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006)(261028144727099003)(261026140227099003)(261102123227099003)(261021123027099003)(261009223027099003)(261021121427099003)(261021135927099003)(261022105027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	E1tP51nUNcBc+4TQCnOaRk9B0OnVt2u9K1tIV19AmFtxyekpuMVPtYQo1iDxXlX1T2lSwLL0qLzpYOZEJKwVlXS0gi2/mGNnNI0pxltvbAUvZfNlMGdh2ELj4VW/3yr53ja9UoRYNDN6G9NagHDOSf/fPwP+T0ZL/+HexmX2WCeTSh8BA7tBsxXAxAt2Fb+o88uanp2r7qK0AlScevEhCKsC1bQhDKFFP3SClfgVCxrouVwXWRdwZNuqakUjmeSDGC3ID2vr4EL690rYldhwWTcAwV8ZMVvtYZ0Nx8kHyBI4hAOpVCt72qnQ+aOj52EpZ7zV/7TrHEILpZv6MFAsSUde8OlCK3JDHksLvd4eg1NeV3KFPk3Nkuec/IGb00mezancK2eRkWKA6my5DI14Ct9lrG8If6UGNZZuYXuO7H69r1ME7s2Mh0wfg3JCUley
X-Exchange-RoutingPolicyChecked:
	vJOM1YTQk+UduZCY+RL+YZc8VJ0UEeuIx3p1F/OMZ//4dWWlnAcXKp3fQeOBsyPHXE41hEgmUlOHlyhap0UA1hLEJZWj4xAj8sjgcG0V+016c42KTpQjXS8oSwq1ZM61YUx1ic9LvX/uZVXaK0RJ9T0d5yKoHWcrRmR09tgdwMk8BQGO982GaNNUDpC5WCK1JzI0D71a87xkE4Qzb0kRQdckD8PQXawnj2FV8TUoEC/vnWQyHzFTOxO/BBiBF8LG3niq7F96DvECRQ4/arnsf4CSexhm6493lkdFKxzcfyH1hJPoOJBVpKqtJ8BkjSccmPwGohaS1TttJiidBunpug==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	rrGAJB2OI6WmT5qSfWvZ3htP+A4QGpWxeYd5JvDWMpqZXFkMajEV6xOfCoMUNlseBv8yrEH0O8GNCmmwKeEWa/1sSGqehiyM75Tp3GfB7GhYfbKh98kvigLopp0sMRjbP77iYTGx0kvUPE1LGUiE0cjsX0cuWAmYv9nKLrlQ9D3sESz/PIK4VLXVjChA2uRHGQlmlDjqM+QAC0h1bVtTnxQrcOIeWbgGRctkxAPhdGzfzqs6UMZu5UJYK+mEpSbUUUduHI6tCNXi/Vgw+L3jsHpZH8o/9gl9sajpVgOZ7Yxn83yQG/JeLJGyZZGsW60BQ5QL++kMP2YnNG/6W4sN6IeEj54W6YCOJ3SgPlaoqpUQAjNhiAW3jWRJe7JYe7v+S/xHHA46BLEH1EYjTTak5u0xOxjmgFTnczprecVGvK85wlv1xiW8jvEesdbJ81kljHSdw7JPr4ue+RvQuV4pvauGUWDZW59D259Y5RvBPCuTek/g8YOoJj5ddXOLk64toHBDOSG/xy9jezS/xRElDQ9tqeOH2UizHDO9SVRRvdfXscujzdJ5CX/JgL6aRtk8vSjvA/EYSMuyNda7TlgO7Q0yXcHx/33KnTwYRz7AgEdLdhVPuW1uXL/wqW/EgwyRICjsNqAyS0+lmm3fMEnUTA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:44.5479
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8587b89f-83e7-4023-4e3e-08df3adcf888
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000C6187.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPF62FFCEA39
X-Proofpoint-GUID: yGlsVi8ch0rTRn4Q8leWj6OgtYsQ-BD_
X-Proofpoint-ORIG-GUID: yGlsVi8ch0rTRn4Q8leWj6OgtYsQ-BD_
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzOIftse1mrFP
 5KnUhwAzGZ7mWLMnky5m58jhuRp/hQaauHjajxAeKT+q5njQKtlEhUzpUP/lu2MfTgFS2FqvgOn
 X0J/GcGTFUbmP8O/kloiob/pAmNCn+IWgP0lx1UUaRW8UQUJyWyK
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX43uSmvA4rz9g
 gUh5St1uhMVMzmAenS5tr8ugWEz8RjM5IBdI7Ti0r0iogoJS/ShvHuog0+ZUCxt5hHmv2lKb6Dd
 6Wjo8VVoOMlbIcfs+3J8TddrPs5uu3CmgGDI88BSPshBViSm8ueFOz+M97WG7MI3qFsNRkOQaj4
 xmui4coErXOjsMmTuTLrBp17sPtt8ClficS8yfAV5pG8SxlgNYeWO462AdbYdEy/TY0XOXy5+DI
 54SYleKCWMXM8Qa9c6hhkK9dbWc4K3FQ+hU0SUzc4ONntvykEiFAGlcgigycEpPyJ/p64YL3qCx
 8N2kUhSbXYz8MZvof8XDTO6eR1fhUWLXsbrRbZgaHusF14W4BBYrueMcDY2XshK775lSpSXlz+h
 2LeI8BfLOHIrqPtCw+eXzGOvEW3lTPY6DwmDx7a5Hm057gq2juC7qEFcZw4kpKi0/SdHFcUxOJv
 Ln/DOEuXypQvPKl6ypA==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebdd40 cx=c_pps
 a=uYXQfM3GD41LpGGBCGkGnQ==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=mmTB1-tFgOqA9qSa41MA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c201ff/1793842498-71CA82A1-35597299/0/0
X-purgate-type: clean
X-purgate-size: 2027

From: Denis Mukhin <dmukhin@ford.com>

Update the signatures of both vlapic_{clear,test}_* calls to
pass 'struct vlapic *' as the first argument and correct 'vector'
to be 'uint8_t'.

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/vlapic.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index f929fdfd74ee..22c472d569b5 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -85,14 +85,14 @@ static int vlapic_find_highest_vector(const void *bitmap)
  * IRR-specific bitmap update & search routines.
  */
 
-static int vlapic_test_and_set_irr(int vector, struct vlapic *vlapic)
+static int vlapic_test_and_set_irr(struct vlapic *vlapic, uint8_t vec)
 {
-    return vlapic_test_and_set_vector(vector, &vlapic->regs->data[APIC_IRR]);
+    return vlapic_test_and_set_vector(vec, &vlapic->regs->data[APIC_IRR]);
 }
 
-static void vlapic_clear_irr(int vector, struct vlapic *vlapic)
+static void vlapic_clear_irr(struct vlapic *vlapic, uint8_t vec)
 {
-    vlapic_clear_vector(vector, &vlapic->regs->data[APIC_IRR]);
+    vlapic_clear_vector(vec, &vlapic->regs->data[APIC_IRR]);
 }
 
 static int vlapic_find_highest_irr(struct vlapic *vlapic)
@@ -166,7 +166,7 @@ void vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig)
 
     if ( hvm_funcs.deliver_posted_intr )
         alternative_vcall(hvm_funcs.deliver_posted_intr, target, vec);
-    else if ( !vlapic_test_and_set_irr(vec, vlapic) )
+    else if ( !vlapic_test_and_set_irr(vlapic, vec) )
         vcpu_kick(target);
 }
 
@@ -1414,7 +1414,7 @@ int vlapic_ack_pending_irq(struct vcpu *v, int vector, bool force_ack)
          !viridian_synic_is_auto_eoi_sint(v, vector) )
         vlapic_set_vector(vector, &vlapic->regs->data[APIC_ISR]);
 
-    vlapic_clear_irr(vector, vlapic);
+    vlapic_clear_irr(vlapic, vector);
 
     return 1;
 }
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473218.1680883 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNa-0007yG-Ln; Thu, 05 Nov 2026 01:35:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473218.1680883; Thu, 05 Nov 2026 01:35:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNa-0007xx-El; Thu, 05 Nov 2026 01:35:02 +0000
Received: by outflank-mailman (input) for mailman id 1473218;
 Thu, 05 Nov 2026 01:35:01 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNY-0007hY-N9
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:00 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNY-00G6d6-48
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:00 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1f-8faa-0a2a0a5109dd-0a2a4503bb5c-12
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:00 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd42-fae8-0a2a45030019-94a392173f32-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:34:59 +0100
Received: from pps.filterd (m0482516.ppops.net [127.0.0.1])
 by m0482516.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mlYw1531545
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:34:58 -0800
Received: from sn4pr2101cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11012002.outbound.protection.outlook.com
 [40.93.195.2])
 by m0482516.ppops.net (PPS) with ESMTPS id 4hr9tfbhbv-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:34:57 -0800 (PST)
Received: from SJ0PR03CA0288.namprd03.prod.outlook.com (2603:10b6:a03:39e::23)
 by SAAPR16MB330156.namprd16.prod.outlook.com (2603:10b6:802:302::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:52 +0000
Received: from BY1PEPF0001AE19.namprd04.prod.outlook.com
 (2603:10b6:a03:39e:cafe::89) by SJ0PR03CA0288.outlook.office365.com
 (2603:10b6:a03:39e::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:52 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF0001AE19.mail.protection.outlook.com (10.167.242.101) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:51 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nD1o2970229
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:51 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrkf-5
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:51 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNMxrjPFCiSDOmNNxv4Er; Thu, 05 Nov 2026 01:34:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=e3L
	Z4m0W4czz8dEMCWl5vmq0g3rWTQs9k90QwOMyDoo=; b=HUt/0LgLoZCPJ4Y6ovm
	lE4PESarrismXD6xvOUTqiSORJ2RGIbgcyN951iOZ0PDOSR1R7csBcK9aEvCGyGg
	wV5ZCez3kmrwADxdckHlHkLqVp5lJtyYv20oBOSEqcMOF9mvpXJrPY48aQfL1A0V
	jAauIQ+jv3gl1uQ15KeotcvuW+tC8sTjcDOPxQhoP9V4728MYTgPpoVdIHCGbV5D
	mmp7xjLGlRbzZK3xSmKErreUlzAaFH/Cy7tyJmtxY+JM48TmYRl3Cfw27PELQH5s
	nNO0LcTuU9uNZFX9My8SLmFzcUQjFUVZHJdyFXq+hp+e3CKTZ1a6oD7MGoZOHpL5
	5nw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bKJJLsfeA2tAcuHdCugD1ynmAIaptLMWUYuVJnms6iimDsdFAafJ/Pf0t+88UhN0oIAufJCk/O7tV5F2JQgqPcuJfPTBkBDT5LSJra07BG61ZskludaF99fZP5E8pLAQpkyJ0Ya6s/2I5f3uMRRhyp6xiJs9Va7YaryXKW8GVyb4/Kjp6XJmiw7+VpPkZPE2BM/AJeFgAIoXfQj2K7J0dm5QxOP7izdYIk3BcbA2c/9TeoHDZvN0yuf18xBMKLvIf9o8DjWWSdUtsfdSlxy5iS2A36aWYgfQ+4oDoZpx4SR4BglN3hDtehQEoD8TUWbLxtmsp79jLh0xPFtWGuPsWQ==
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=e3LZ4m0W4czz8dEMCWl5vmq0g3rWTQs9k90QwOMyDoo=;
 b=tVj100aER/FKLCC+m96z0poDcjM0JgGNOMORJupg5bhLjUdr/PEFC2f5coB8bH7Stjty3JPJ0BQqWy9j0D1wzphcdiz1bBJFCjxoy3snVrRTkWWWrnjiJVcHYX+x6p4TquJxjfqRX/3oMqx5+wiSPGTpD//eMV/2zeFNWcrpvkGdWgSrqZMMzJUfqCn0QcSDfpiOLYKPJwGq4HkFbGzqYChRMsm82RQk5vf7FuxNjmB/rV5rOvgkjCAYWpBcfYuby2kri4s4O+FE8aC+OeEgL6ZxrLM+FsWh4uljZr3W065Sa/m8m4blSA7eZMeoZN3FaNifYkjKxpZEp8Nup+EXbw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=e3LZ4m0W4czz8dEMCWl5vmq0g3rWTQs9k90QwOMyDoo=;
 b=TM3GWSaXlVUDHPHvnGVuq6jLZSCLuwZSauAOkhGrwObfmZBKXSgq7kHBkRllMrSEQ8WacmzPXOGLb1NDez65Ud3n/0SxeDcKlMbpQTlxYC1fevoNPATSbCOO9M4Li8Cr62r3jQLuO6obi+qhzRaComSedXE0FjKxJEsUdC6UDZQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=e3LZ4m0W4czz8dEMCWl5vmq0g3rWTQs9k90QwOMyDoo=; b=
	DyVSxIpl/xVWpG5l/uycLvVGCKBXAMvGjQIgE1VlOnm6CoFV3rCdbrXxtX73TUvV
	1eHVRlpqwF6vxJQ7Mfp0FPlnrT53lI+C5GofbBHPGTTcPii9gx3wASNqOSE7gZ1Z
	5vhYYTuw0D1GIztNy8mC5xrQx0wipcY2Oux3h9sPxxjstg5LT7hjEyvBwO1sKTjS
	CHDtk5U/XrEZyTrpKGfYC/af4IsSz2oH+V1HNG8omU8YrRSqLBGF2zpZ+nABma/e
	P5km8AwsiVB9eBPB4G3fIkHQ0p2rYVFKO5yTeK09r83vLkhaOECIWOuR9UxmGFLI
	h4i2U7uVJluu1Qs7j5XM7w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=e3LZ4m0
	W4czz8dEMCWl5vmq0g3rWTQs9k90QwOMyDoo=; b=snsb/7FrxhKzg4TbT5ZyY2l
	wGDZV72Os6LRcwDipIGIj12QVQI64yyei2CcHb+L8bY/gSbCvtYjKRObBVGp9XOg
	4Rgg55F++D1NdlsjnNEVDR3nvqsxIAybtkAuOqiSDGwS7sC3jCDAi7kZMYnxEU4L
	HPkZPN4dDU/qpBXa4J+9Vc/60QVj6AMEHAeEp/n4a5msMbSj+Gf1cKcTKZTEu3Cu
	u6BPzWgskgtARig7H4JBEevgXDrUwOCl4N5R/0+2Sl91uaAMIMB2L89o3FTz1+aj
	gNsPHw6bQpmEMg3SS6WK4+a5h2rtnRHBh1jy85pajfE+r6KjkjrwJtFZF0AmsJA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNMxrjPFCiSDOmNNxv4Er
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 17/28] x86/hvm: avic: route interrupt delivery to vCPU
Date: Wed,  4 Nov 2026 17:33:34 -0800
Message-ID: <20261105013347.719392-18-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE19:EE_|SAAPR16MB330156:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 339fb0cd-6ad1-4cda-b71c-08df3adcfcd1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021123027099003|261021121427099003|261022105027099003|261022075727099003|261009223027099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	YW11dLMlk7Z4mR3ha76jy/6I0Fpfc1wv4kaBTxTowXlXs9eazVtStkUE1ZLWPNeNH7EvyhRRCFBCQt0jEix730RZc7JgCsGxIqZ3XUzfTbRj6lBns24cQcijWe6+wZCfkYykFQDuPCPi9wEJfa5Ad0Qwv7yEmricIxDu8UZplfKWjg4sxO3m1AYFeE+buoepfRAxM8Dl6c7POhgZEweCSLGHLSHUnssBHH0Bf5SBOSyW96UtmLWaiP8/jDByvS9t501SC9unDYqsbNE/7Wfp+liVE0Y5auFT8JJuN/Ah5uPyZHuNMxFZ4D26yEbW8l5zi0UAt1hyDZI6ewsLmbQSq8npdEm4wRY9df6LURw2OlrcHsMNlBhzR5ccDC6xq1wsCPPXw28j0DFKtfXjghTmfabM6yJ1HgCvqMo5fQyIA1u8wRX+JvDrjIVdpHMHWyDSRUePYsC4Fz/R1w6GDddGT8yNj5D3Vd3WRFJpLDwCC7qGI9saLQs2pb5nFVa5MNs8nse5KZyjuNMpeM3cGANAU77KYz+Nutkt5atUUSQamh5qjFgEYp50eLH6ZsGFM8MQEwDnrA39OWb4Ht+w+yum4K786Q2uAzy84fRvDzAi1TcFFYK0prT1dQ0UTR56ctomO9pVWyzJvSIxcTM2Ja4VoZDTszpNYb8OJ6Pqs8+a/kCK/4Ufm/m0ql9VbsWqk5WnQMwjWlWrJ5tjrHCm0bB23Q==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261022105027099003)(261022075727099003)(261009223027099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	W243dfjhwVLviO6df3uexQMD/sJXsY+DwEl6AANLEnVjK9VNEA7ngOOvcZ3JdvtrEes/LuaHfI03mfC3woPWko2uNNEV392xs/0jp2eyAOQTmEe5amxK5IHlKubMFKdXbxf8Na7ij0lFLcTmif6K86UZRjQ1v74obu5OC2ORHOcuNfCQNz/9EUIMLwF2Ic7tqxFClsB4w2L61c/cYm+yn00lwvgRfPWBHwhoXaN3uexMVp/rlTqCGuTYyliuvrI2du+WGQy6c7Rk0i4gR5QzwChlijVHHA2fXD9kgzrbYdjVC/DuU9RiXxRnax0b+DEoAjdFOSC0wYCsk6O6HUr+t0+mx7QCyZ/JS6bQ5qwyWev9B9FPiGGBi7migd0kS87yW7aQfJSQ3OT7FuRkZVd1xdc0P0fJfDOVy6II2zTN2fAMJ1aVhCd+gNkO6nwII8bE
X-Exchange-RoutingPolicyChecked:
	xZyDK3v0BywQGes90kWFZdEM7XcU4A1GO92C683255Cwp1ICNT+OPpmpqJ0rejDptfCINkgFcOTH5KbD0XXzh2ZoTSleY55/7syJ9YHkrVB7xLRM/s5Q4RfXJ++FwKHXbucq1T8BeAGZj7WbMOxXsnvEqQE2tmsYjRAFecseD6o6pYAMUcWVu4wOOiBezYtsLboEgesbzG1VRuCwa+RIbwvJpoygMyULwgVG+FxqJapKB08FfHkDgwVSYTvP+AwgXuGp7gusw9DvkRnrtGp3pnRbTF8DA32AEnWpfiFC6sENCz44oOjR5PI1RBZlg2COKkE/jUlbQ8TPuOxpsEcftA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	SrwAnGskudoWjByS2RRliAZFeDSmjLSSqaq3oXuHFnTelAYOza48nybuEDwBLxVHLJRIWjmKUHTnB5SB8hgg+fF6Ay5SevBzPmoYnQUfUAqOe0zn0LcTNEICF/WfvkjilBngBVwOQ5dpzX99+PK0FPQAezqj/nciRhUcZ/yoPfVn9QP2ua/6366XHzfppo9dAQwSzC7SvIhswLDko7HyQ0ioHlsQ0kp/tUAc3gFi3K7WE4GESGYO6gbCEPbmTpJJHgTH1yvLGeN11IZyJCN+p2SdvQEvUoT6zfjsntoOYzmOC9KJNzZxlCP2rtco18OFgvZ1A8ZtylPDDKEiods69ju1Ga5eGnVrl2m4HQzpV5m1/JuRgyLjU2N+IuvP16YzMEbIf+zkYydxLNcwn+L2w1vnvVPXMo3xfmGrhnE1ftr/YEagJ52isK3C26TwUJwT6fg2WouYz1lDns8X9B9qrDh3qdyhOFvdR9n5FZsQZ0e+yGWTnXECEeqpMYpf8yh0n1Bls21NtNif/l2Gxrh9B/sywpIVdI8Ut9EICcdadNDoIDnlAFsFCSB7iM90VHCHaFYQmz5riENDCawQK90lTmqXa2XzkqQ+YzspUK5vdJWXgOuSC5pvK5nPXtzd2k+t8CwypacK0sA57KiB7GplOw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:51.8196
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 339fb0cd-6ad1-4cda-b71c-08df3adcfcd1
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0001AE19.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SAAPR16MB330156
X-Authority-Analysis: v=2.4 cv=XfAcX455 c=1 sm=1 tr=0 ts=6aebdd41 cx=c_pps
 a=LBR8CsJoUNkXwF8+XrmcNA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=NvsXeTrgx-CJMFV-xl94:22 a=cbNQJ9GKAAAA:8
 a=eYvIa5XWC3BHbn6lEHkA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzDRqV38T1sCN
 Uo0JeeFUe+GMb1ZKZBk57zV1z3U1maqlUZWkgLLsVdxIUiDXMIei6TVw4oYezoTBL/7Ni5/EEcE
 oyVXoNzbcJcRkPAsqTMOHa0M/oWPpei5MApv4xg+Y/4fkglHBj2f
X-Proofpoint-GUID: FneIbTRcH1kCe1BdGrISqCo6TgLT1rIm
X-Proofpoint-ORIG-GUID: FneIbTRcH1kCe1BdGrISqCo6TgLT1rIm
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX/Kqob5IwLuCB
 bWEt8Q4x9gxwsvmvvB0bKqfOmN/5LW3BsC+pFw/emV6g05GWv+QeaZpYn40gxJZJp8hT6ZW2Gdt
 IklY2bOOjpevPb5ARO6BrDvNBxP9+qJCaAV/GYQAeu2xYZw2LYJaSf3f9qEARLvCxW6w72auB1P
 sjcUUzPv0ot1Oknl4S9Tp85JTVxNWCIPDYkQW1/4MALODPgXCJf5YR7ANj04t+PR177uP7w0AZL
 U+cu1lRRs0feFQRB3s8tEAWELnUErjq1VeN7ivH48ozqG1qcrM1Te7+oOsLE6Fq/uQqlFxlNevQ
 jCXCRXg0o7gn2uV8Wol+urbAPsdYqqq3RuIcjHBv/G6koOnTlXwu6y76Ywio5IxjKm/5x+AJpjc
 tFYp29Td9iX/iyWh3hjeKwBwWYbzE41zqKZu36SF+NlpsPm1lLLc1WEeOmUqbR/JCwKjHGO1PrF
 X7l/my1KawuVZ0Yfp3g==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 bulkscore=0 clxscore=1015 malwarescore=0 impostorscore=0
 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-33051d/1793842500-6DCD34E9-1B88FE81/0/0
X-purgate-type: clean
X-purgate-size: 12429

From: Denis Mukhin <dmukhin@ford.com>

Enabling AVIC implicitly disables the V_IRQ, V_INTR_PRIO, V_IGN_TPR,
and V_INTR_VECTOR fields in the VMCB Control Word.

Introduce new interrupt injection code via AVIC backing page.

Essentially, that is handling of 'IsRunning' bit in physical APIC ID
table entry: it needs to be in sync with the scheduled vCPU. Shadow
the state to work around hardware not perceiving 'IsRunning' bit.

Add new doorbell MSR to accelerate IPI emulation. The MSR can be used
for posting interrupts from hypervisor to the guest (e.g. event
channels).

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c              | 156 +++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |  17 +++
 xen/arch/x86/hvm/svm/intr.c              |   9 ++
 xen/arch/x86/hvm/svm/svm.c               |  32 +++++
 xen/arch/x86/include/asm/hvm/svm-types.h |   2 +
 xen/arch/x86/include/asm/msr-index.h     |   1 +
 6 files changed, 217 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 18a814871133..0bcab0465227 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -33,6 +33,8 @@
 #define AVIC_MAX_PHYSICAL_ID                            (0xFEU)
 
 bool __read_mostly svm_avic_enable;
+unsigned int __read_mostly svm_avic_features = AVIC_HW_ISRUNNING |
+                                               AVIC_DOORBELL_MSR;
 
 static const char __section(".bss.page_aligned.const") __aligned(PAGE_SIZE)
     avic_apic_access_page[PAGE_SIZE];
@@ -50,6 +52,11 @@ static int cf_check avic_parse_cmdline(const char *s)
     {
         svm_avic_enable = true;
     }
+    else if ( !strcmp(s, "nodoorbell") )
+    {
+        svm_avic_enable = true;
+        svm_avic_features &= ~AVIC_DOORBELL_MSR;
+    }
     else
     {
         return -EINVAL;
@@ -228,6 +235,7 @@ int svm_avic_vmcb_create(struct vcpu *v)
     entry |= AVIC_PHYSICAL_ID_ENTRY_VALID_MASK;
 
     ACCESS_ONCE(*sv->avic_physical_id) = entry;
+    ACCESS_ONCE(sv->avic_shadow_id) = entry;
 
     avic_vcpu_enable(v, true);
 
@@ -248,6 +256,102 @@ void svm_avic_vmcb_destroy(struct vcpu *v)
     vmcb->avic_vapic_bar = 0;
 }
 
+static void avic_vcpu_set_cpu(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    unsigned apic_id = cpu_data[v->processor].apicid;
+    uint64_t entry;
+
+    BUG_ON(sv->avic_physical_id == NULL);
+    ASSERT(!(apic_id & ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK));
+
+    entry = ACCESS_ONCE(sv->avic_shadow_id);
+    entry &= ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK;
+    entry |= apic_id;
+
+    ACCESS_ONCE(*sv->avic_physical_id) = entry;
+
+    ACCESS_ONCE(sv->avic_shadow_id) = entry;
+}
+
+static void avic_vcpu_set_running(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    uint64_t entry;
+
+    BUG_ON(sv->avic_physical_id == NULL);
+
+    entry = ACCESS_ONCE(sv->avic_shadow_id);
+    entry |= AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK;
+
+    /* Shadow IsRunning state update. */
+    ACCESS_ONCE(sv->avic_shadow_id) = entry;
+
+    /*
+     * If hardware has problems detecting IsRunning (erratum 1235)
+     * keep IsRunning in the shadow entry only.
+     */
+    if ( svm_avic_features & AVIC_HW_ISRUNNING )
+        ACCESS_ONCE(*sv->avic_physical_id) = entry;
+}
+
+static void avic_vcpu_clear_running(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    unsigned apic_id = cpu_data[v->processor].apicid;
+    uint64_t entry;
+
+    BUG_ON(sv->avic_physical_id == NULL);
+    ASSERT(!(apic_id & ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK));
+
+    entry = ACCESS_ONCE(sv->avic_shadow_id);
+    entry &= ~AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK;
+
+    /*
+     * If hardware has problems detecting IsRunning (erratum 1235)
+     * keep IsRunning in the shadow entry only.
+     */
+    if ( svm_avic_features & AVIC_HW_ISRUNNING )
+        ACCESS_ONCE(*sv->avic_physical_id) = entry;
+
+    /* Shadow IsRunning state update. */
+    ACCESS_ONCE(sv->avic_shadow_id) = entry;
+}
+
+/* vCPU enters blocking state. */
+void svm_avic_vcpu_block(struct vcpu *v)
+{
+    avic_vcpu_clear_running(v);
+}
+
+/* vCPU is preparing to resume guest execution. */
+void svm_avic_vcpu_resume(struct vcpu *v)
+{
+    avic_vcpu_set_running(v);
+}
+
+/* vCPU is being assigned a new pCPU. */
+void svm_avic_vcpu_switch_to(struct vcpu *v)
+{
+    avic_vcpu_set_cpu(v);
+}
+
+/* vCPU is being removed from a pCPU. */
+void svm_avic_vcpu_switch_from(struct vcpu *v)
+{
+    avic_vcpu_clear_running(v);
+}
+
+bool svm_avic_vcpu_enabled(const struct vcpu *v)
+{
+    const struct svm_vcpu *sv = &v->arch.hvm.svm;
+    const struct vmcb_struct *vmcb = sv->vmcb;
+
+    ASSERT(!(vmcb->_vintr.fields.x2avic_enable));
+
+    return vmcb->_vintr.fields.avic_enable;
+}
+
 /*
  * Handle the AVIC_INCOMP_IPI #VMEXIT when AVIC is enabled.
  *
@@ -546,6 +650,58 @@ void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs)
         hvm_emulate_one_vm_event(EMUL_KIND_NORMAL, X86_EXC_UD, X86_EVENT_NO_EC);
 }
 
+static void avic_deliver_posted_intr(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    uint64_t entry;
+    unsigned int apicid;
+
+    smp_mb();
+
+    entry = ACCESS_ONCE(sv->avic_shadow_id);
+
+    if ( !(entry & AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK) )
+        return;
+
+    /*
+     * Some AMD systems (e.g. Zen5 Family 26 (0x1a), Model 36 (0x24)) have
+     * broken remote notification via doorbell MSR.
+     * Fallback to brute force, if requested.
+     */
+    if ( svm_avic_features & AVIC_DOORBELL_MSR )
+    {
+        apicid = entry & AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK;
+
+        /* Ensure the pending interrupt wakes vCPU. */
+        vcpu_unblock(v);
+
+        /*
+         * AMD APM, 5.29.8.2 Doorbell Mechanism
+         * The serializing semantics of WRMSR are relaxed when writing to
+         * the Doorbell Register.
+         */
+        wrmsrl(MSR_AMD_AVIC_DOORBELL, apicid);
+    }
+    else
+    {
+        vcpu_kick(v);
+    }
+}
+
+void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector)
+{
+    ASSERT(v != current);
+
+    if ( svm_avic_vcpu_enabled(v) )
+    {
+        avic_deliver_posted_intr(v);
+    }
+    else
+    {
+        vcpu_kick(v);
+    }
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index f9ff3ffc9346..098924925e89 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -6,6 +6,15 @@
 #ifndef __SVM_AVIC_H__
 #define __SVM_AVIC_H__
 
+#include <xen/const.h>
+
+/* Known AVIC hardware quirks. */
+enum {
+    AVIC_HW_ISRUNNING       = BIT(0, U),    /* See erratum 1235 */
+    AVIC_DOORBELL_MSR       = BIT(1, U),    /* Remote vCPU notification OK */
+};
+
+extern unsigned int svm_avic_features;
 extern bool svm_avic_enable;
 
 int svm_avic_domain_initialise(struct domain *d);
@@ -17,4 +26,12 @@ void svm_avic_vmcb_destroy(struct vcpu *v);
 void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs);
 void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs);
 
+bool svm_avic_vcpu_enabled(const struct vcpu *v);
+void svm_avic_vcpu_block(struct vcpu *v);
+void svm_avic_vcpu_resume(struct vcpu *v);
+void svm_avic_vcpu_switch_to(struct vcpu *v);
+void svm_avic_vcpu_switch_from(struct vcpu *v);
+
+void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector);
+
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 1d39f25e5209..9cceca704a91 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -24,6 +24,7 @@
 #include <public/hvm/ioreq.h>
 #include <xen/domain_page.h>
 
+#include "avic.h"
 #include "nestedhvm.h"
 #include "vmcb.h"
 
@@ -80,6 +81,14 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
 
     ASSERT(intack.source != hvm_intsrc_none);
 
+    if ( svm_avic_vcpu_enabled(v) )
+        /*
+         * AVIC delivers pending LAPIC interrupts from the backing page
+         * when the guest becomes interruptible, no need to arm the legacy
+         * V_IRQ/VINTR interrupt-window mechanism.
+         */
+        return;
+
     if ( nestedhvm_enabled(v->domain) )
     {
         struct nestedvcpu *nv = &vcpu_nestedhvm(v);
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index d1a95e441f03..2fac76725c4f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -35,6 +35,7 @@
 #include <asm/p2m.h>
 #include <asm/paging.h>
 #include <asm/processor.h>
+#include <asm/pv/shim.h>
 #include <asm/vm_event.h>
 #include <asm/x86_emulate.h>
 
@@ -877,6 +878,10 @@ static void cf_check svm_ctxt_switch_from(struct vcpu *v)
     svm_tsc_ratio_save(v);
 
     svm_sync_vmcb(v, vmcb_needs_vmload);
+
+    if ( svm_avic_vcpu_enabled(v) )
+        svm_avic_vcpu_switch_from(v);
+
     svm_vmload_pa(per_cpu(host_vmcb, cpu));
 
     /* Resume use of ISTs now that the host TR is reinstated. */
@@ -914,6 +919,9 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
 
     svm_tsc_ratio_load(v);
 
+    if ( svm_avic_vcpu_enabled(v) )
+        svm_avic_vcpu_switch_to(v);
+
     if ( cpu_has_msr_tsc_aux )
         wrmsr_tsc_aux(v->arch.msrs->tsc_aux);
 
@@ -935,6 +943,9 @@ static bool vcpu_is_vlapic_tpr_emulated(const struct vcpu *v, bool force_noaccel
     if ( vlapic_hw_disabled(vlapic) )
         return false;
 
+    if ( svm_avic_vcpu_enabled(v) )
+        return false;
+
     return true;
 }
 
@@ -982,6 +993,9 @@ static void noreturn cf_check svm_do_resume(void)
             (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
         vmcb_set_vintr(vmcb, intr);
     }
+    else if ( svm_avic_vcpu_enabled(v) )
+        /* AVIC accelerates TPR accesses. */
+        svm_avic_vcpu_resume(v);
 
     hvm_do_resume(v);
 
@@ -1091,6 +1105,12 @@ static int cf_check acpi_c1e_quirk(
     return X86EMUL_OKAY;
 }
 
+static void cf_check svm_vcpu_block(struct vcpu *v)
+{
+    if ( svm_avic_vcpu_enabled(v) )
+        svm_avic_vcpu_block(v);
+}
+
 static int cf_check svm_domain_initialise(struct domain *d)
 {
     static const struct arch_csw csw = {
@@ -1104,6 +1124,7 @@ static int cf_check svm_domain_initialise(struct domain *d)
     if ( rc )
         return rc;
 
+    d->arch.hvm.pi_ops.vcpu_block = svm_vcpu_block;
     d->arch.ctxt_switch = &csw;
 
     svm_guest_osvw_init(d);
@@ -2493,6 +2514,13 @@ static void __init svm_avic_start(void)
 {
     if ( !cpu_has_svm_avic || pv_shim )
         svm_avic_enable = false;
+
+    if ( !svm_avic_enable )
+        return;
+
+    svm_function_table.deliver_posted_intr = svm_avic_hvm_deliver_posted_intr;
+
+    svm_function_table.caps.virtual_intr_delivery = true;
 }
 
 const struct hvm_function_table * __init start_svm(void)
@@ -2814,6 +2842,10 @@ void asmlinkage svm_vmexit_handler(void)
 
     case VMEXIT_VINTR:
         svm_clear_intr_window(v);
+
+        if ( svm_avic_vcpu_enabled(v) )
+            domain_crash(v->domain, "%pv: VMEXIT_VINTR=%#"PRIx64"\n", v, intr.bytes);
+
         break;
 
     case VMEXIT_INVD:
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index 377ad2494e7c..cc40b1b02095 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -51,6 +51,8 @@ struct svm_vcpu {
      */
     uint32_t avic_ldr;
     uint32_t avic_dfr;
+    uint64_t *avic_physical_id;
+    uint64_t avic_shadow_id;
 };
 
 struct nestedsvm {
diff --git a/xen/arch/x86/include/asm/msr-index.h b/xen/arch/x86/include/asm/msr-index.h
index ad1c6c97f8f7..84fd9b6581b6 100644
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -406,6 +406,7 @@
 #define MSR_K8_PSTATE7			0xc001006BU
 #define MSR_K8_ENABLE_C1E		0xc0010055U
 #define MSR_K8_VM_HSAVE_PA		0xc0010117U
+#define MSR_AMD_AVIC_DOORBELL		0xc001011bU
 
 #define MSR_AMD_FAM15H_EVNTSEL0		0xc0010200U
 #define MSR_AMD_FAM15H_PERFCTR0		0xc0010201U
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473223.1680893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNd-0008TV-Dc; Thu, 05 Nov 2026 01:35:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473223.1680893; Thu, 05 Nov 2026 01:35:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNd-0008TG-6v; Thu, 05 Nov 2026 01:35:05 +0000
Received: by outflank-mailman (input) for mailman id 1473223;
 Thu, 05 Nov 2026 01:35:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNb-0008B4-Iv
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNa-001wz8-V9
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:02 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd20-2eae-0a2a0a5409dd-0a2a450191ee-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:02 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd45-5984-0a2a45010019-94a39217574c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:02 +0100
Received: from pps.filterd (m0384718.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n8nV967253
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:00 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010009.outbound.protection.outlook.com [52.101.46.9])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrc5ghv2k-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:00 +0000 (GMT)
Received: from BY1P220CA0024.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::9)
 by CH4PR16MB6603.namprd16.prod.outlook.com (2603:10b6:610:228::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:34:56 +0000
Received: from SJ1PEPF000037A4.namprd04.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::ab) by BY1P220CA0024.outlook.office365.com
 (2603:10b6:a03:5c3::9) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:56 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 SJ1PEPF000037A4.mail.protection.outlook.com (10.167.244.136) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:55 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mP0C3108414
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:54 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swayu-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:54 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmNRxkWJTqQa1OmNRxYl2S; Thu, 05 Nov 2026 01:34:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=wKw
	xSCddw3N6g1jdEGFy2Ei+Ah8bdjLIK81kbPqdH28=; b=tZifbnWc4GScEbJz9Jp
	xuqM7jQyQdARrf2SOuO4aQ/DC/6sCt+C8raIZv1ltUMW+z5Axie1Qb6WQqxRSBOn
	XbqXRUJ3NwVVqmVdiasV6E0O+S4lFqRMa+ySbdtLQ9OBYeALzY/oO+vP/OWto5qo
	xjiUF5gnIDeKc8bL//I5MDkh7nhrfHhN34OsJikxnPKc8PyE9t//4OiUrJNpe1Gy
	fdQP7EQxjyrFRJGfhqszsTrltT1/NWalaGYbIzEA3lE4t4L9fthdnivJicuTGgak
	Q2v6Zdt5zo0w1liazNXf9GwqcTzD9KyaxWesn+6rJJUilDJ5X/gb5VD2C7eRBpJJ
	rnw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qHzM4fuo69yaBHBcRKydFy04Tqna1brjS8wbPmhFtVPHO6iB2BWoGLgEKqPQFcOWIodEYe6DvOUO7vpu9rwnSE9FujOmzHbC112mCDY5DMBXGXjA00LxrQ1hQQRvp5B7TONlsH6mYEx4LxElC3gpOMUiIb4GFudBowW59zmnI6f34GGX7jEjAefLessjKpcn/knNnv8A/E1Ul8if7EBT1DxcTDSTyG4odQwjRsn1aLhr8UUDm9pUTNbWZ6FcBmyZ7pPjLeXunwDTFWncgJMShR5//6Z1G9P+C4piLml/b4yDFiazXOzc67/g1Zkmbbw92ajOWNVhNd8SU1B7Z+1GTw==
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=wKwxSCddw3N6g1jdEGFy2Ei+Ah8bdjLIK81kbPqdH28=;
 b=PXaLOubTMpOkq+Oy8xsHEIQO3dhP29IVjSqmUUQzmGJ5nJ5xycT2THdVC/zLTg50S/mowrRL/rdqVlgxnA22aU4/z4mvgrm9QVAn1j+BCl4PbP1J+h9u1MrRGJhjZN4EMLQRLDiNqIQ9bIQurlPcuHhSaTrI6fdr6tArmZxtYHm0S/rW4s/GcGHxHzCyUNlUy1Q+oYQjqtcladBAa6U8LbW6I/lWpY4zZKACTbLuzzXWsKS/zrmDPOVIgG+4V2RTq4YxJ8r1xUcrTKxke58Nx/psk35ddBMdkQ1s2dl/sg0BWb4uCkT/Me5BXc51cVP+tlvyRzVqhhHFiSB/ALsZNw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wKwxSCddw3N6g1jdEGFy2Ei+Ah8bdjLIK81kbPqdH28=;
 b=i3A/YhNqs/o3fkjd/WTldIsW43OfJNdAly2i18kbN1FArgoWkpQaOXWTfo2+5MZ4gjseTOr98vkPwKwhB7tUEd7Bi9bmsxh7MuVPeHzGa9zox2BzyfZJPhsT7LdaLXma2AYZZosvVQsvGSe6XKJOYCndHzFmTG6hhPH5R9oTGdA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=wKwxSCddw3N6g1jdEGFy2Ei+Ah8bdjLIK81kbPqdH28=; b=
	ORVSEUKwAh1vWZKtOIWQg3XqYaHCDNDfWR7MCQwT8JPiboIrY07ssTOr/+5kRxc1
	88qxVAxglLB/E6TD9CWvFXOMBe/BTDuKXsaIX2GbV64RNsdIAgRC1/du9QHImlx3
	j78obmiUX5pYpXyauDW2JZTIsNzcJ8vMB9yTaF4o3AR3nA5oAIPoFNmmvVbrf7SA
	tI3IHOBFCsRHo+x2ckDJz9A6llHNWL6B08Chjn7LtXZqDsdAOO2ZXRmbbrzIidAA
	n64nzkuLalxwMjBh55ZjjNMX7IWSYwIM96xrO34hN6KxWW8VoZemD8/qj/kphn2S
	4Q8UyKV6GP7klBYgVR+NmQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=wKwxSCd
	dw3N6g1jdEGFy2Ei+Ah8bdjLIK81kbPqdH28=; b=t0MH9/PxqSs9lHttD6OvrmK
	TBGVGi03o0Rq6Bpg7q3YtaVsaAg1OemB1Qmoj/4nKWZEDNX9zfpe12mNrJn/vzFv
	RPB93w1dzuGNIipBEyyGIE18C78BtfE/qb5ENP1+NPr1zaY1IsU/tPTErlTW1FDT
	ki4yi+s6xC8/dzeu1bOEQqlEqIalBeHmPmy+u924yw99bdQCDwdtTLuiA5fvs9Vv
	q6R8dSkk+Cc4rZdA/DTESS616dyxSVwwlhfvq+50RnHYP5du9tANFfFKS43IyMP2
	Ai+DeOtx3Txbc2IqOx1h/bLY4o5FWEcGv0nDcKUz0gQaONKvtzhcUTFRtetDp+A=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNRxkWJTqQa1OmNRxYl2S
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 19/28] x86/hvm: avic: enable SVM AVIC statistics reporting
Date: Wed,  4 Nov 2026 17:33:36 -0800
Message-ID: <20261105013347.719392-20-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000037A4:EE_|CH4PR16MB6603:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 6fe61f51-917c-4c52-91bf-08df3adcff44
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261021123027099003|261022105027099003|261022075727099003|261009223027099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	h20bseIsp1ZswDcyQfJWX/lB6a4AQAkJDWeEc7KW1ZFCDPnr/8gzyUj3MEYXpeO2ChjWpPlN5+FL6negjkR5M4UkRvWogiXWN6ooH5ye9zS1mdgB050tLii9XiLyaDyKj7BQMKucpzYWy/AO2bgQdw+VYFdRKnHYoSVMakzsPYGR4SbCYslsN5TDQdhuCweoF0EkabKw8enac9sU8XxWT1z/QZFtuRyteqPuQlLy8Y+5BnugFjF0WOZbJwuIeHgXcfHg6iAJZom46ZCTWF13FZi4nkUcmNeiP5p5tB3h/YENkk8KeYlnFjdqy2GmtmajQD5r6q0ncPtr8SkVqVBQc/PMgujVsKtB2XBoofXlIfWkEtzaSCNcImPtbjiJEYOz+OZtwH9+9Eax6qUQQQ2qPOHVT2vxjRDoLvUjJNJY5rluRTl9lsuRADINJh9qYxl7Fxk8cgPmqW7qVMDx/kqZMaMdAr/Vz6JdLFSuXm3/iQawFpPs/WOrgSphNTeP+2DeU84AZshJiUlvmJFGMC+wkP7EFscC8gGz5jsVKKKNG030wHFvwg3Q/C8Ogh4ABC7Wz5K6gfaMzXLvxJgfqFfoXreYOtTUgGPjwS7XfhZY+Kcnn9nS5xkam6Y6kpEbom7OMmkHoM+C8Q82GjdT6UxV7NmuARoLtRib1xWdju1y7Vk+Z4AZSaxRLJVRx1/7GmTJ7e3AUzO7DmdYA+BvIXnJLQ==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261021123027099003)(261022105027099003)(261022075727099003)(261009223027099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	kJXV3LOEkfXMJx12rsTy3t/XIp/2Rzh3wUyIJwI8FWA197TwjK3Rl6djXKpeiib0WVpT87WutnswRUYEzO+jOx2KnldzK1kVq0LxEHOhgf0BwhQbHqXktEHisdhVi76IdzQ5z2edwQfwIQEwIW90vZd0/O2LN3tovq9M7M4o8T+uxdtFvxxdbO0V71JHB7pI2raDC7W+eHdlsiiITs1LHrJSB3PIYPAN7nKMS4mFZct+I/GE2RJxKeYY6YuK6Vi7TOggqB4x7DvcyLe4RJXabRRnZn+sfhJqNM9/YGBC1vWrV8x/q3rI0Ptx/HVWfDSO5/Tn4r/+4cS82+JO7ukQpXbkxVjAxCPtBKHDyH2TpJFQ8yrciOH1EHT0RykpJlv5sr6XAYztI5vohhWvY8mzffrsT0neeNyooY/CqIWQ7cIEX2h29GdLJJD/soM9UpTp
X-Exchange-RoutingPolicyChecked:
	I3LNy89iHPi5eAchmlNhv9vAcJ+DZWZqN/hkwASALe+GI95rnXS2aR1xgI9ZIDCmYMSimNv15ZhnWuzUhLgPOUqTLil1zJFbgcay+x5P8cctIEgZAxe0jpR9C3lmYRgdlwGv66oYCGfcKCZVRpITAAHUdN7ceu3E6zMfUKu2Nvq6MPRPOXTYt5ygP13T5H1wjuW7RY/6cFNyh8ZWXmEvdkUPYFFsUN+h5oO1nK0i9iFJxCBCoKxF0twAsjbtZdItP9fqFVqxp7dXpxzHYy2JyudPeZdUuk7jzaXohUKbv5xZ36IsKtQjtd9QRpgrzxn9ZqwffC5JegVTXt90a9Bh/Q==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	potCOeB1GtCc/bOEohpzo5kJYanriDPWuCgVTnz2b6SQvAWgjUL6XOspMhNx0+2k13z4vtlVgSHpHq3HijfZdAWGc6AA2jSrSQxQcIoN6uVuYN2e0WCJcQvFsHmiAViVbo3GHOBHaQhtoYiP4rancDiNwuLt9dx9E0GA6446ctDMACUHSAeAgrxwM+qcUJv+jfsSJhbjVjuz7cFjIe+2bASXHkuwwV2E4NrnSoqVaAqa8BgP9vcibjqNIQRbisCDk37W44KWC/Ln9lhpKS4BygBDLQ+qHHRCKU4aqvqyiipHiUlmWfiPvJ2985sfzqq8IkQzsFHzXfxksV18xe2+0d9ZD8S6SOHv7ibMY1i4nhMb7ux9UFnWARQ/30fKfyWhnh+W65rSEHlrWmroo4Tbr43WNH5K1kJZ0VgjVogY1DDON/YLU+MtAFr68GeFKTNy2aFIkQ3jWTwu7gFFACFdnUwo+UMLer0Mo2UnTRPGMp9a3SvWzY2kyBev1bbE2jzgzxUiUvRIauSdtGBp2McIca5hh2ICMPO6mrrHz0/ARAR0F9U/m9r7wmNXSPExldAfNiZu1nkDu6Hi3Db3uxLS4Qu0ErQhrTE7mcB6mOynVktIH1mfFPTUjom39YGxz5BVS1aJsAMDAv8QEAQ85d7FSw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:55.7100
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6fe61f51-917c-4c52-91bf-08df3adcff44
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF000037A4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH4PR16MB6603
X-Authority-Analysis: v=2.4 cv=JawpPkKV c=1 sm=1 tr=0 ts=6aebdd44 cx=c_pps
 a=aX6hwv3pUrsX0fnHaj1tZQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=ARvDHhclS48edyKYUbLB:22 a=cbNQJ9GKAAAA:8
 a=8c1b9s5flN10_E_f-5UA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX1d1xnYn64a/c
 CtC5gKMlR6SWgDJ+y0wze84DxO7P//DBBF4Za8YF7sOiCaEPplunHLdklxI92vfG6fFr/UpgRNc
 /k6EG+0Ttkrk6OIu7PtwolEFxNcHbaOZud7p2Oylp45aPaJfz2y83tHvsjai457WUbcwMdlACMb
 TxwNAqjz6yhZNVisi1BTcXkVQzvD4Id2cWZ3rEWSsYMc2BvNVfy0gb/aLaQOngJTu/UKkRie0E9
 dr+kLJ0isnVUe/lktLcMN2V8j+5Fv1zbbnqFGFi6+CINMLpaO+xChLPu/9dyuK+ivIo+368qoam
 Fzn8bPi4LnWuDMNQdiOLs+Yu5A9spf/6kGKUR9jbDj7oKp41Cq4cpqYOZxmhyvnflSL7tXIcQt4
 8kZiA+sfnCtWPzn+Kg3ef9Ic4KbFjk2Hl2W8Pnmyketw01Y40H2PPeTcwlHeezLF9puNDpHcnuf
 P8ryJRK5JASfl9r2wow==
X-Proofpoint-ORIG-GUID: uMYsOMqY2WNkYA1keQ_4BIw9WvrU3gWQ
X-Proofpoint-GUID: uMYsOMqY2WNkYA1keQ_4BIw9WvrU3gWQ
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX+Ythho2ecsGb
 mkc0/6RcV3Zal6RcUlulGEjwIQwr2b5Uv45oEKefZjxLDnvqObRcu9lMnU8I0Ekpv4UhG0nNrzn
 DOtnCTG4XLVTj/1+IEUlJf2qMyPOlqMpCmRrwm/hZDLyB9sjwl8Z
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 lowpriorityscore=0 suspectscore=0 clxscore=1015
 impostorscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0
 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-purgate-ID: tlsNG-d62444/1793842502-1D87F757-4AC6D9CE/0/0
X-purgate-type: clean
X-purgate-size: 5608

From: Denis Mukhin <dmukhin@ford.com>

Introduce performance counters for AVIC.

Enable statistics reporing via new 'dump_posted_intr' mechanism.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c              | 50 ++++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h              |  1 +
 xen/arch/x86/hvm/svm/svm.c               |  1 +
 xen/arch/x86/include/asm/hvm/svm-types.h |  5 +++
 4 files changed, 57 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 0bcab0465227..4dcd2c94ea87 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -201,6 +201,17 @@ static void avic_vcpu_enable(const struct vcpu *v, bool enable)
            v->domain->max_vcpus);
 }
 
+static void avic_stats_reset(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+
+    memset(sv->avic_cnt_incomp_ipi, 0, sizeof(sv->avic_cnt_incomp_ipi));
+    sv->avic_cnt_noaccel = 0;
+    sv->avic_cnt_post_intr = 0;
+    sv->avic_cnt_doorbell = 0;
+    sv->avic_cnt_kick = 0;
+}
+
 int svm_avic_vmcb_create(struct vcpu *v)
 {
     struct domain *d = v->domain;
@@ -237,6 +248,8 @@ int svm_avic_vmcb_create(struct vcpu *v)
     ACCESS_ONCE(*sv->avic_physical_id) = entry;
     ACCESS_ONCE(sv->avic_shadow_id) = entry;
 
+    avic_stats_reset(v);
+
     avic_vcpu_enable(v, true);
 
     return 0;
@@ -380,6 +393,8 @@ void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs)
 
     BUG_ON(sv->avic_physical_id == NULL);
 
+    sv->avic_cnt_incomp_ipi[id]++;
+
     switch ( id )
     {
     case AVIC_IPI_FAILURE_INVALID_INT_TYPE:
@@ -627,6 +642,8 @@ void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs)
     uint32_t offset = vmcb->exitinfo1 & AVIC_UNACCEL_ACCESS_OFFSET_MASK;
     uint32_t rw = (vmcb->exitinfo1 >> 32) & AVIC_UNACCEL_ACCESS_WRITE_MASK;
 
+    sv->avic_cnt_noaccel++;
+
     if ( is_svm_avic_vmexit_noaccel_trap(offset) )
     {
         /* Handle AVIC Trap (intercept right after the access). */
@@ -675,6 +692,8 @@ static void avic_deliver_posted_intr(struct vcpu *v)
         /* Ensure the pending interrupt wakes vCPU. */
         vcpu_unblock(v);
 
+        sv->avic_cnt_doorbell++;
+
         /*
          * AMD APM, 5.29.8.2 Doorbell Mechanism
          * The serializing semantics of WRMSR are relaxed when writing to
@@ -684,24 +703,55 @@ static void avic_deliver_posted_intr(struct vcpu *v)
     }
     else
     {
+        sv->avic_cnt_kick++;
+
         vcpu_kick(v);
     }
 }
 
 void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector)
 {
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+
     ASSERT(v != current);
 
     if ( svm_avic_vcpu_enabled(v) )
     {
+        sv->avic_cnt_post_intr++;
+
         avic_deliver_posted_intr(v);
     }
     else
     {
+        sv->avic_cnt_kick++;
+
         vcpu_kick(v);
     }
 }
 
+void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v)
+{
+    const struct svm_vcpu *sv = &v->arch.hvm.svm;
+
+    /* NB: Do not gate with svm_avic_vcpu_enabled() check for tests */
+    printk("%pv: AVIC: incomp_ipi = %"PRIu64"/%"PRIu64"/%"PRIu64"/%"PRIu64"/%"PRIu64""
+                     " noaccel = %"PRIu64""
+                     " post_intr = %"PRIu64""
+                     " doorbell = %"PRIu64""
+                     " kick = %"PRIu64""
+                     "\n",
+           v,
+           sv->avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_INVALID_INT_TYPE],
+           sv->avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_TARGET_NOT_RUNNING],
+           sv->avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_INVALID_TARGET],
+           sv->avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_INVALID_BACKING_PAGE],
+           sv->avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_INVALID_IPI_VECTOR],
+           sv->avic_cnt_noaccel,
+           sv->avic_cnt_post_intr,
+           sv->avic_cnt_doorbell,
+           sv->avic_cnt_kick);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index 098924925e89..24d5fab59b29 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -33,5 +33,6 @@ void svm_avic_vcpu_switch_to(struct vcpu *v);
 void svm_avic_vcpu_switch_from(struct vcpu *v);
 
 void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector);
+void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v);
 
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 2fac76725c4f..83977d411b0a 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2519,6 +2519,7 @@ static void __init svm_avic_start(void)
         return;
 
     svm_function_table.deliver_posted_intr = svm_avic_hvm_deliver_posted_intr;
+    svm_function_table.dump_posted_intr = svm_avic_hvm_dump_posted_intr;
 
     svm_function_table.caps.virtual_intr_delivery = true;
 }
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index cc40b1b02095..ac411f781ed4 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -53,6 +53,11 @@ struct svm_vcpu {
     uint32_t avic_dfr;
     uint64_t *avic_physical_id;
     uint64_t avic_shadow_id;
+    uint64_t avic_cnt_incomp_ipi[AVIC_IPI_FAILURE_MAX];
+    uint64_t avic_cnt_noaccel;
+    uint64_t avic_cnt_post_intr;
+    uint64_t avic_cnt_doorbell;
+    uint64_t avic_cnt_kick;
 };
 
 struct nestedsvm {
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473228.1680901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNf-0000U0-NM; Thu, 05 Nov 2026 01:35:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473228.1680901; Thu, 05 Nov 2026 01:35:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNf-0000Tk-IF; Thu, 05 Nov 2026 01:35:07 +0000
Received: by outflank-mailman (input) for mailman id 1473228;
 Thu, 05 Nov 2026 01:35:05 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNd-0008TB-9Y
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNc-001wz8-M2
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:04 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd16-2eae-0a2a0a5409dd-0a2a450285f6-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:04 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd46-6ca4-0a2a45020019-94a392176616-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:04 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mVFi1469714
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:02 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010044.outbound.protection.outlook.com [52.101.46.44])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk511jk-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:02 +0000 (GMT)
Received: from SJ0PR03CA0081.namprd03.prod.outlook.com (2603:10b6:a03:331::26)
 by IA4PR16MB511274.namprd16.prod.outlook.com (2603:10b6:207:12c::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:59 +0000
Received: from SJ1PEPF000023CB.namprd02.prod.outlook.com
 (2603:10b6:a03:331:cafe::5d) by SJ0PR03CA0081.outlook.office365.com
 (2603:10b6:a03:331::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.11 via Frontend Transport; Thu, 5
 Nov 2026 01:34:58 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 SJ1PEPF000023CB.mail.protection.outlook.com (10.167.244.5) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:58 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nw2N2971351
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:58 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrm2-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:57 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNSx19cggTjoOmNTxge7s; Thu, 05 Nov 2026 01:34:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=mHb
	Y2cEQEvRPTVjvhml188mlseK3hau22WWwZyaMhvo=; b=VJgI7XY5Z+hU2/V8YcP
	Lm6oeuycYs3/+Z8+J69EjD3Pkv17FLVJJCpFBo/xli53zX4kBZfcggh4vBss5Ovd
	ojfLeHZH8uvHfOhzfKfZ4ob14HpdR6BYUCyQEsFU+eBJiG3R8jIFgajjyaJmrvwF
	hwMI4n0Pmym/eYSPCOWgXpYPUgZrxszknEMETl7IX7Wvo5PMC/LX5Icg2QI8WtHV
	wjunbSNFohupXsotwikB4mFY5EgL65//MUK7rQp4or6tu77AwH1VWUZ3EKh1YiAU
	suq6qlkMso+oruGdYdxmPesj419qx/8BCE1fKvpZWXg8wP+BbTGCZAR4ebQuBTO8
	6dg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=twPlspMbv48vtMQFVIWr+FCnSHNS8xWQi+rKSPs85j3Tl9WV6n1IDfrWFifybrbOUvxV2kdwC96eKam0EVjfuJJ51oEjXlLyekXt2LDArpvTokILshh0KipQZCa9xx+y/i0X3woT4VAVo2J1YkJ+6pgcVoRI1ZzS83e+5giw3UxdTRGOhB8olO2u34c7OA3kI5zwCd3Z1OG3X8ZMmTaSH7W62snIsy0J+YD8s0LMo42L8APZmDtBK8y5G0inJwtwi3PWsHK4tYviUnO4b5TOqUCTJ8Cairjl3cZAaQPVUUNthEyPsaUx/RX8CkgKLLY/BK6IIkL+6vefT8M/ZyTeEA==
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=mHbY2cEQEvRPTVjvhml188mlseK3hau22WWwZyaMhvo=;
 b=AQ+1IHT2IXjoq/3EWRZGguePDr2T6sfzp6e1H9Ctv5J2lz8k1UELcPsUF//asmOgvi4cDmpYvEj/58rFP1KvmEHKIMTobdC96lF/UQg9wN4H4KGy94L8/8sbhPGpo0ACBamfO/Rtnl7Fd5o1x5c3aMV4TGB7UKUV01Od25wTjn49orRwKoOvqRZRSlM5V63KkrxFG4F5r4YlixLAuZgLJMuz8/VkUVnr3Q6EG0eCJemoKgByNHQ88pxAxOTwHkXUyD7vdn8LGxl3VUYtV1W4UP/YdhOhO8rdDHpOL+xgMZ+DU/nhWMJRV65bIMwtHisx5OXhzoDdVa4KmpQCk5Mwew==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mHbY2cEQEvRPTVjvhml188mlseK3hau22WWwZyaMhvo=;
 b=ansV6Sh4hwTIbCZ7cdgfCdGAptBUunrg/tbswng7/D0eXHUzK3KYTO1n1SFREoG2uIqLlA6H8CwjPYB43MTR6sHcejXkzJ9aeNhqM9cpoGFAwOmMg4fsYjBNbu7Ouwcoa+Nc7I/tU8HXqGOe7IAp42cAo2ScKidDlgO5UinUm3o=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=mHbY2cEQEvRPTVjvhml188mlseK3hau22WWwZyaMhvo=; b=
	hvA/C7P2lZoMmaJRYU2Pkc4YSHVvN/AlZ2HSOZVZJZ0azEPlLKtbf2XcldqFtJJv
	0ixhr5ddCD1getVAnlquHHQ+KRMR3T0JdQ6Ll+8jaabJNA+rvSgP1TG1muZrXZHY
	3NDrT5w2jA6LJ7c/KsD0gXM3POpeJ1sWSBxePxanDuT4FblPJfxpdyshNp6D/d+/
	pm6HxOPGItmDKum3KOF13800zGe/dLky9oe/g78s9v8d3jGGa4I9JOGTrFLph1me
	J3g0PaTiYgBBqPaiT0RQCEdtr8y8kdrZLRpMe0Ic1WbTfCVW3bQSDp6YDH7fzqf3
	YzulVmpQKpfW1GjLGxYksw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=mHbY2cE
	QEvRPTVjvhml188mlseK3hau22WWwZyaMhvo=; b=R9jcIeIbKa0t8o2369uQv1S
	a41oJQ5bR6s3g/GIIXFCHeQKMjA32Q8FLJz+m8pPeLhDt6bT5nSRHU5b1ygxmNxG
	R1VMFCYI6UcjNqrN6Y9dG/+5+YhcqKKF2cHzWfEQB6QVaIeaziJFdIe8ZMnUK+2k
	pbHc0DfTRE3hYL3UbJp5MacpCUnAPALY+5LLsS3RpGK1i6YxqWOSWc9P65cEQQ8x
	3XsoLTDOXl8ZMbH7a0+wb+xYzPkam5f15RzdSSm5t1olIRLjgYZIYKrjvpzS8PTt
	fmRyhj6RAW7Nr47peSEeIrHJUW+SvhQwkD2/TCwKlOr8oYSSfLkfl0TwDdqDgbA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNSx19cggTjoOmNTxge7s
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 20/28] x86/hvm: rework XEN_DOMCTL_debug_op
Date: Wed,  4 Nov 2026 17:33:37 -0800
Message-ID: <20261105013347.719392-21-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023CB:EE_|IA4PR16MB511274:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 4b51e687-7cb7-40a7-2c8d-08df3add00b1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|261021123027099003|56012099006|261009223027099003|261021121427099003|261102123227099003|261026140227099003|261022105027099003|261028144727099003|261026121527099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	11OCqQrw7ASxqgxf/t8SUdI/ez6Khfel0J0+UsbiXtxgIuc5ynPDx3SPHKepiySJVAwL8snT+Y0eBhhV/NuCSNWse7KSCPb17CDDtkzlaA+WaEygLzyJp+4i+3Zdw/lMr9QomzRyke/ZkyTBrjFLepI82bOMCDKtLV7zMo/0XJCsHiuyJFWvtTIZyMTLvgincz4DTO10L0+iNI1eRkBPcBalTofr270HqeAMmLx0VkTE54NILVQY9u0KOElCU2pAZuuGIbYvTRs3Tak/OQbSJDmzQgfjv6isVqftopvhLqwfMYqPuNaVgyEq+8FKdAEzy+R9QaEVYUIq6vg3bncSQ2kfNxH74yxFprUDDahVkfeee3mBU1aLNcJ48+L752P0ZvxEcNny1HQXQINk/cY1gfP2pAoBd1HX7ZAe/0CVW/bkM4IWjEG0C2N4i78KhTIV+UDAwLxl0uibY1qffLWhmimKc/5RRXFDJGGaB4Zqsi0MLHkNe6sD/Ko5eaHYfJkgcO79cBtB/ZCG7DhwsLebSoJko15KlfW2emV9fzKOVUr7fRakHCOKEAWzlhrNZX36Tul47W48QFD73uUYNvZyNf6YttJB4Oyr+llY5yII30Jf/WnCcSKIP6dgbIF9wHJir4GHG7GCORxJgtkdo/njMe7HDS5dOqjo+KhGq1entU2DZQjwCfEwrwOFPzgPYiWzsiMQbyg13J/8raH+5nxsgA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(261021123027099003)(56012099006)(261009223027099003)(261021121427099003)(261102123227099003)(261026140227099003)(261022105027099003)(261028144727099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8qPuxy7Gkefx32IycoV0Il+cYHVsbvbGHfmnCpwC508OOWLdaCDEZhjCbPYOfCxcKIXV1BzhvmB/kUxGWzWFVawAajm3A8ZG7r8NPAMj3bNSF2MB1TE9SwZcvajM6bc7heiceL+dspzvMElza90A/pfRsmXhZ6Pl9b3tDYhHYU85C+R9FTOs/ouW3HV4LqAe8wtL1ElhTncVDY0NvRyC2rU31W0i64UR6y0KyN5743A5prcvHiZhFF9Izj6MDMfyulu/MfkznzOOIX/Ai9KGHfWqGuzY6LZrQ6wrluu7Wvn4tRKc3VXMyVYTIZb2rgv5wsgoyeNBNS5BrzFDueqCqLMowJKD2H5swHA2z9RInmxB8CsQZFluYpmmAlAbfIxTAU/T2WH0nLwL5jaQJl08ezRAjYJydRl3VmrF95kaYXyCweWmBwIflcCZ+xcoNqpb
X-Exchange-RoutingPolicyChecked:
	tpuKP1mCJbHk8Eh3c1fbR233jZeI27QI/FHKfK9zszhGlPzayNpTdO5SpGbw015K4cdqOZHk/zk3sT1Eih5hsFGy+XWn3hhoEGvyhD9/UIaDbf0H6YrdBEkQW7n5YdILe9CrEchu8KUMmuLf+YK6yTmDJjP8Xk68AVj+KoJZP6ndhnDc1JbEzClKz1Z5fY6IBOR9zQnnZOhWqnQ1vxKU8W9f6fUg8FqV+60rOsd1DwJeNU4DWjQzOi+m7892UpRFHc4HcLXRb2w0JNx6B7stUlqphMQLAzXpcKDoLvz4srpT/rTfSdk08PUJCjXmOrJfPQecGeSJRzuQ8MbArJEBXQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	XqtLds2ieEgEq5ydxJ4+WSHXjI/GGjl8J7lAHjpQNgy7W7GDBOnEkGXaVdc+gdLB/fEQasJxNTpiMnRGcRM1kbkThLiPWatmMJ1qAQ7zPg5em9y1S7f6rATJqEzB0sopsH8SdXLgm0DIAbVx0A6bSzO72l/UsexIILTl6gWGmw5UwiHTe1gmr81k+0N8jJOOVjt4oNXTGCRtwRkXcxYeOpgKeyghNa1zh8gIlVgmZwnMhgLXAUzt0vPtCtXCh5652xZKkfRoH8v0Wm9+3mVWGvlRMvC4tkavmR+84J3fYyMVUM0CaoVolMbIPAOgcr6alVnwMOo9AAZ7T1UBXhTsiP/ksy0rKfUSGzG46NE7bfZrSnlkBISAaaD7zNAHmxDaT24xkPOqAEsspS0nygCK5zMs823S12lBC2lSS5WF4wBBEe+s9krrovVIxlx+TulgmRUBZg9NTWrAFBkntcDiOuqJbaj+nLCjYg4H6XDI8kkLFXb0pdJ09bg1/ypQmis0CzDt6tpMGvRVS5s6FUyYTIEXXxtcpt1MYcuJAsW3u4PLDjgufrbmjXIoFEKr2RlSIPgFUoJ8WH2cF6SDs153zuI7a3Av62UXozloJ1cbveqOfDC+zHT5Z1plz0FwvuSDuZMSORXk7M+6WMYtvUTkHA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:58.3153
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4b51e687-7cb7-40a7-2c8d-08df3add00b1
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF000023CB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR16MB511274
X-Proofpoint-GUID: S2gwo7FINhk4xp7sCcAO8UPhwEU3Ufdv
X-Proofpoint-ORIG-GUID: S2gwo7FINhk4xp7sCcAO8UPhwEU3Ufdv
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX3kEZrvH8bUZx
 jhZNty9tUwsboc61kPAsEbvC3J0JkYgLBt/Ydts0FueeZvkXVV4R2eLBf7JnDWjZG00TZtVEFyJ
 JAd/RRnQXoWRaDmsYUCjvJawaDNxHDn521aP03aCfzGN3XH4zoT0
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX5eD6dy5YTCWU
 sig03n8ODmKmI2t7zsemZ+uht7/tCJP7RnawUvhuUSPR+l+MPl2Uf8jypAEojjKoCaWAD0wZfmO
 Afgb7OljhJjUnuMJPcH3WCnb2H7B7161vZLqmahuLWkCeJSbNIWVe/aejsti6JULgVsdOAQ28B2
 jYbr8HFc5HRAlwksVaNC5OGqrq1r7ZCrAf3MrvGQA/poIAO+EmED8MN5yDaVe3JGvNcHdAdCJ2X
 Yibx2yEsoYsjQSq58v2IJ7Khxf1Yy4YNayTK/9qliuNN7POHhNajdXQk4fs8+IIXk/1RKTHz8Ld
 Cu1zWvs/Lt9Y5nF7TmH8fEEpT6iZsTivbH7qZ7tKq2O2Ov6QNpNmoREfmjRiNhq6+zItZdL6Jwg
 PKKWM5HfXzgZQsV04oBPw4/drJyUqV7LSX3Y1T2//LUNCZuJePKkxVn/9eghYEDC+Uk5f9oQepv
 pJk6rgEB8b1wQXlK3ng==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebdd46 cx=c_pps
 a=feJg8xcwi6yo0k/5NfVkgw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=AkNqmx6zKqa0tKD4cjMA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-720697/1793842504-30FCE2AC-9EF12CA4/0/0
X-purgate-type: clean
X-purgate-size: 5134

From: Denis Mukhin <dmukhin@ford.com>

Currently, XEN_DOMCTL_debug_op assumes operations on VCPUs only
and only for Intel VMX-supported HVM domains. This limits its
usability in the test infrastructure.

Generalize XEN_DOMCTL_debug_op to allow operations on any x86 HVM
domain.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/domctl.c              | 24 ++++--------
 xen/arch/x86/hvm/hvm.c             | 59 ++++++++++++++++++++----------
 xen/arch/x86/include/asm/hvm/hvm.h |  3 +-
 xen/include/public/domctl.h        |  1 +
 4 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 12c14bb3f514..7a52aff71620 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -912,23 +912,13 @@ long arch_do_domctl(
 
     case XEN_DOMCTL_debug_op:
     {
-        struct vcpu *v;
-
-        ret = -EOPNOTSUPP;
-        if ( !IS_ENABLED(CONFIG_HVM) )
-            break;
-
-        ret = -EINVAL;
-        if ( (domctl->u.debug_op.vcpu >= d->max_vcpus) ||
-             ((v = d->vcpu[domctl->u.debug_op.vcpu]) == NULL) )
-            break;
-
-        ret = -EINVAL;
-        if ( (v == curr) || /* no vcpu_pause() */
-             !is_hvm_domain(d) )
-            break;
-
-        ret = hvm_debug_op(v, domctl->u.debug_op.op);
+        if ( IS_ENABLED(CONFIG_HVM) )
+            ret = hvm_debug_op(d,
+                               domctl->u.debug_op.op,
+                               domctl->u.debug_op.vcpu,
+                               domctl->u.debug_op.arg);
+        else
+            ret = -EOPNOTSUPP;
         break;
     }
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index ef9c7cd05777..42139837904a 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -5200,32 +5200,52 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-int hvm_debug_op(struct vcpu *v, int32_t op)
+static int hvm_debug_op_single_step_allowed(const struct domain *d,
+                                            unsigned int vcpu)
 {
+    if ( (vcpu >= d->max_vcpus) || (d->vcpu[vcpu] == NULL) )
+        return -EINVAL;
+
+    if ( (d->vcpu[vcpu] == current) || /* no vcpu_pause() */
+         !is_hvm_domain(d) )
+        return -EINVAL;
+
+    if ( !IS_ENABLED(CONFIG_INTEL_VMX) || !cpu_has_monitor_trap_flag )
+        return -EOPNOTSUPP;
+
+    return 0;
+}
+
+int hvm_debug_op(struct domain *d, unsigned int op, unsigned int vcpu,
+                 unsigned int arg)
+{
+    struct vcpu *v;
     int rc = 0;
 
-    switch ( op )
-    {
-        case XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON:
-        case XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF:
-            if ( !cpu_has_monitor_trap_flag )
-                return -EOPNOTSUPP;
-            break;
-        default:
-            return -ENOSYS;
-    }
-
-    BUILD_ERROR_IF_NOT(CONFIG_INTEL_VMX);
-
-    vcpu_pause(v);
-
     switch ( op )
     {
     case XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON:
+        rc = hvm_debug_op_single_step_allowed(d, vcpu);
+        if ( rc )
+            break;
+
+        v = d->vcpu[vcpu];
+
+        vcpu_pause(v);
         v->arch.hvm.single_step = true;
+        vcpu_unpause(v); /* guest will latch new state */
+
         break;
 
     case XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF:
+        rc = hvm_debug_op_single_step_allowed(d, vcpu);
+        if ( rc )
+            break;
+
+        v = d->vcpu[vcpu];
+
+        vcpu_pause(v);
+
         v->arch.hvm.single_step = false;
 
 #ifdef CONFIG_ALTP2M
@@ -5233,15 +5253,14 @@ int hvm_debug_op(struct vcpu *v, int32_t op)
         v->arch.hvm.fast_single_step.p2midx = 0;
 #endif
 
+        vcpu_unpause(v); /* guest will latch new state */
+
         break;
 
-    default: /* Excluded above */
-        ASSERT_UNREACHABLE();
+    default:
         return -ENOSYS;
     }
 
-    vcpu_unpause(v); /* guest will latch new state */
-
     return rc;
 }
 
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index 1f0f7749b579..6efc533b35df 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -369,7 +369,8 @@ void *hvm_map_guest_frame_ro(unsigned long gfn, bool permanent);
 void hvm_unmap_guest_frame(void *p, bool permanent);
 void hvm_mapped_guest_frames_mark_dirty(struct domain *d);
 
-int hvm_debug_op(struct vcpu *v, int32_t op);
+int hvm_debug_op(struct domain *d, unsigned int op, unsigned int vcpu,
+                 unsigned int arg);
 
 /* Caller should pause vcpu before calling this function */
 void hvm_toggle_singlestep(struct vcpu *v);
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 4ca8a2d7ca65..546d9a8ac9c0 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -768,6 +768,7 @@ struct xen_domctl_subscribe {
 struct xen_domctl_debug_op {
     uint32_t op;   /* IN */
     uint32_t vcpu; /* IN */
+    uint32_t arg;  /* IN */
 };
 
 /*
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473232.1680910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNh-0000kb-BR; Thu, 05 Nov 2026 01:35:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473232.1680910; Thu, 05 Nov 2026 01:35:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNh-0000jc-5r; Thu, 05 Nov 2026 01:35:09 +0000
Received: by outflank-mailman (input) for mailman id 1473232;
 Thu, 05 Nov 2026 01:35:08 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNf-0000Tg-M7
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNf-000xGY-2C
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:07 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd28-bab6-0a2a0a5309dd-0a2a450c8a0c-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:02 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd45-f479-0a2a450c0019-94a38ff1cdc2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:02 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50meLi2611674
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:00 GMT
Received: from cy7pr03cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11010058.outbound.protection.outlook.com
 [40.93.198.58])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rvdt-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:00 +0000 (GMT)
Received: from BLAPR03CA0056.namprd03.prod.outlook.com (2603:10b6:208:32d::31)
 by CH0PR16MB5337.namprd16.prod.outlook.com (2603:10b6:610:18b::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:54 +0000
Received: from MN7PEPF0000014B.namprd04.prod.outlook.com
 (2603:10b6:208:32d:cafe::3) by BLAPR03CA0056.outlook.office365.com
 (2603:10b6:208:32d::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:54 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 MN7PEPF0000014B.mail.protection.outlook.com (10.167.254.37) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:54 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50o3Jj1488836
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:53 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232whx5-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:53 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNPxwimvDnFpOmNQx5heC; Thu, 05 Nov 2026 01:34:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=7Of
	eq2WpHsK3IHZPkWuWlAntiWL+LEDmFt6Pi7PGeq0=; b=d+/DuG+7B9A1G8z3ssq
	/4xoA+AF5UIaSKd2mrtTHrSj1jO7wCJ3/Hco4/R6KPW8qX19WVlQ5BBxxPbuSUG9
	M+QmDcN/XhGoh9sUNLs/vwI6Ao/UmWwGNaGL8edLomeL3KPmGBe3sI10hejdH4bx
	CQOpCFkCVIkowVbOcCv2gArPD1VROhZ+3XYHYqykfF1HRzlHGSkjHSHOtwXUxT5W
	VPYSio9HLTbi+B3LWm8AM6GZFdpfUFyHEJ7RZx+Jc3rZ1yv6P6VeiTBo/YupPIz2
	joysY/G9JKt45/1zt9pU3fPE+IGNReXeEdO+rlgxZ6II2HFWWpNCifnc1umNs6OD
	KIw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uraGYyNY/CYa11E3KRHm4r1ZjdmQxK8xgG0mwAnO2O2cbugLozabF4YM1Z4EVyeV3QNbGJ0KsSUpJ8eGlKMFQq7BbgNaY5xtt2LEF/zKOI2AluOhu4H3D51P2czXi4VfoUIhDYZuV7/0HZhtv8DCM8SW2oUvHQ7r51R5JFPQK+ciEmknaXafOTGX1txYOKNbqu6k98uotEVWv0ed6rpIbHEgxog1whaj1lKsWTiTjgBpJBci8I6Zl0bllnv84xULfKryGxcYfm0WrgSAEjmVizOtYOhnDPr5vaLA19ENeMoNCb13O4JhMA1yCpOokSybqeFVgYou6TfEN+/USoor0g==
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=7Ofeq2WpHsK3IHZPkWuWlAntiWL+LEDmFt6Pi7PGeq0=;
 b=RnXuFwjODABjiiC8QuDgrGvaFg/v1y1Y+KwDgGU6Kx6WNCO/qtOPjyf2Pt/Hbg495MK7kgh5v5NQxvGpsZKdlV+FhnUzfeEiSc/xSQR+xv4zowrhZItTBvwT7AXTG+ZmOLpHQ6ETIj6sMubsTNZDjz8/crj8JFlDma+7Df+mcoOL0yt8N85ChKFzil/12Y+135XlW+GvG3FAHiWN5q1p0b3NgtVXxR0CCoGEK1QOkobIx2AxYtrYpn/9rHYe53vUCrPJgViloQaV4SaZslFKJBYKDcFKMGLsjwfHpjCkyNJLm50Gq3SZ5ATTJMHItHwHnc+gC/7IxyTOL3w2huX9zQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7Ofeq2WpHsK3IHZPkWuWlAntiWL+LEDmFt6Pi7PGeq0=;
 b=BSFP8y1D+SPNYJd9tfyL89/mCLxOzBQIDaVdJnr0zSj0OpuS3cXUNU1meOvEdcPYrcZOM3tmv4Y4m5LgNzwEecTKVe1cW3SoyBhFdFvhxHkIXX0ed2hrj4ez+awmTw+bxhrQ8wUxs+RfrFs8jcSNy3X2h336hGZJHrbqUNNnqNc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=7Ofeq2WpHsK3IHZPkWuWlAntiWL+LEDmFt6Pi7PGeq0=; b=
	aZbJvFw0QF/EWTY0hwHJ3cxYyZtOhYyu+xQ+rF7zDM9mZsrrDYHgw18/f8XsvuZU
	CkdGVe4mv+nzrQUFGfQEPELzKd2TdgkIKqL/QInPqDXrP5Fv1PECtS/Bawdam3MY
	9zRBeNqhV6eIETCL3ZwfwqlvdJn1RH+hTN7hqohtalqDBDmoWCbothHX1EiB4j3+
	dVgvnLOuFcCsmb82oHOgEiCUiCO4P5hQhYWBa7k88VBKKO7LO786L9Yk0xgfnSKB
	huTrOXbP+GtAtJ7D+D4YwTAEQyzatCE5nGHXNaFacEaWhavhD0u0NRo2wZyIOxYh
	cvcO4lXGwFIfVt4TfETKKg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=7Ofeq2W
	pHsK3IHZPkWuWlAntiWL+LEDmFt6Pi7PGeq0=; b=eEZ3+eze65ogdEmzpnXmEJu
	ArYl7539rhof2RZRikxlorpTTn8BWTYSPQEqj3olsFxV2l4WfW+SN05IZYM53nRk
	FjDImGumJwhJS3h0nK9BAgFrWK30xCq+WGjTA1PSm1hNC8JtUZo3CKLIT31h5SJt
	2UjmSyZM0Ik3W31fC2dHAotcmbMq8XaEX+XAMjPkaPRxRIUINozISFdioN1SItcO
	PW7DSxnDVm2snj5jR4I05mQq58gAxLxshSNJHT09qxz2nrPqQ0H1NJk2RVnapYqu
	3nTzx09suwHXoivAnr7V+X2lFUfcRaAIRzW4nE07t64+jNHX74c8D86fmR+hq3w=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNPxwimvDnFpOmNQx5heC
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 18/28] x86/hvm: add facility to print hardware-assisted vLAPIC info
Date: Wed,  4 Nov 2026 17:33:35 -0800
Message-ID: <20261105013347.719392-19-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN7PEPF0000014B:EE_|CH0PR16MB5337:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 70ab23dc-44d6-401e-9375-08df3adcfe6a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|56012099006|11063799006|261009223027099003|261026140227099003|261022105027099003|261021123027099003|261102123227099003|261022075727099003|261026121527099003|261021121427099003|261028144727099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	TcVtbFUrasnOY+skDs+q8k7xFlmY9d3oZRpHJOlXO6Z87w4Y1rluEaDUqfqUfQB36Zi1uT8+U5Wj93V5rmBU5AQBhCGvyZ8ZOrAUlMRfEoQtBNqhetpLS0O4HYByA8rUwjPRe1Zj6hFiSSXKqhwNj4Tu8kqVwm+jvaLQBDrqKWOfTIRN5Oq+44XaPqb2AKLW1WC70A9KkodEfPIX/tdg0lVKwcXNxoVvk+agMlsCqRlakqLZuTWC3dddnTvxv1+lE0IVASTwhCgAIyl9QoBcMT3PQoru9a8BC4fAA0mj9Z0uzdY77P3P7ryAlIQXQqC9gUBQulOpnEuhHjw7FsrzrPAMeXlfQ1/wzR06Owm0Brqsov3n+DWdOnwI1DWOhQ5HIBxm4+xjlmlLPYa1Zj40ej6AH7JsXJbFfLPiedtnioXAfkJoL4XWPRqVUZ7hxOWp50DhKbwtGuRkAneNx24Vtg11juopNEbsV6KKwYDYUDhKFmxRlXXH2lNphY4TRBgxtUbdiNsAL/Hr7tc6Uox46bKgKs8P3QROGWjFC2sPap+gwdbu0rBUT4EvJLldCBd/yp3zOD9SZEqkozfHr96LBScoXxnGlX7f+zD9dzciXQvQA+zXWf71v2iyKdGCUXOm7fvfq45qB11bD4JJ3FSkpy078baQQ+vXTQuUptihBcE+hoYUjYCbXG52ciMgnutK3UjZyeCpfR8Sq3UfGb2Q7Q==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(56012099006)(11063799006)(261009223027099003)(261026140227099003)(261022105027099003)(261021123027099003)(261102123227099003)(261022075727099003)(261026121527099003)(261021121427099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	G9HBY90xgv/GeUtpWbXxo0Vqvxb03tnGywN02ut6PM9eA5qF0bU3fAchIW1mujuTxJuDPD1l7rNHt4zmc5yYjLLsdLKYhc1k+oGuJPZFq8Zpxe8428899xIbfDH13dEdsPAqskSNpnRvTFdgUHJjnfZaj57l5RPxY+mNvsR5yX0FQRHS2AtnzBfqKCqXsp0tRt8t2eHALuhYbNZYCTB6UQB2j+CxzZqeAM/WD2ixhcygMsEgThc8EdiRp6rqaDT9ibJi6DNvu0UJ+P7W7NQIM3wGItJk8riaUWTY8n2FwCZmvbR4Vw+Ua2+LpEVY6WeW8+V74HAuLnbccRjl+2xS3+8tYOsspKxjG1QiBwgL7xj3JWvEMZBAIAJqZADMu4CxDbAQtxjFrOnWZo41wkZq6G2U0fMkH97ApEaGUJM+mzhFtuAmDdy4BQKrx9IC2gz1
X-Exchange-RoutingPolicyChecked:
	kpr9i6F4UTWbAuRqTN4r+QHoFsPQ4MDotGozADxoj7YBKkCx5DdNch5A46Q4HETW3As8PMccHJNwVL4l7iFj5cWKwYZKpEop2SHyFHgSK0qBIh/3CYyJHSAqxU2KTtebwBhOYTvPw+/KmukuMJkXxAEa63ajBlZwOqQYZLIaNpdS046LySVD/ngBDno9/WaBPFjfzA1gdkAo5H6LtHW7PoZYFe9i15lDttw1N23xTr8NnbSCAw/Trwzbx2AVfBd6/WpXeTa9HxiQaHV6FbEIuzhqFpKsi5Q5yueMxGjRSgDcJ+bLfqclxtVoQpYq8yEqsXLvbnh2F/TiiSJ0aLVahw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	EttMKd5KHKz+3oLsOXfPbHdqU03x6Oo3ecyLCZ2OB+c2PwsH2lYfTPgBlFiRotWv/JDTJ70plBQWle8Kyon2aJ63onpeSw9GvfjY32KSuidV8jfXYqq6EyAKuP1KqELhHkSeBsqYRh4GomIqYEw+JBx4TWxtKss9PUOLCE2Km9jhmyC9u4n2NlbBkr0MBK1MX+RbS66sb344FfBZIl/G14YJ9unc6g4WpbCNQIMZMwDMhuNsbFFq/59HG6Saxm++YwufMGHmE/7R/PlJ/V96Sy9TrcAk8SEmlRXgeIBUO95cTfVKxPMIFDnGRnWQvalBqUMySFtGQ3yLn3r8eZY4rGl8yRo3p6w8sftUZoZzw2RASsXel9wbNGhVxcpPppj3QkqzYjbFB/vJurzfa7A4YckNjmNOMpqPLyH5sOLfBs10qNPCj4IDA0V06CoJxbUbLoXDSoYfRxoL/VvsAvUoGKffKgOjj9lq3L4ts8J0r3F+1ck2oBG5uFGh9zvta1dYGTOZx6EqHqtK76vTt9CNdjgpZEjknXayQMQY7AtchRFWUBfsCZv7G4c6DNFeKcWadDi7Qv80oanZo7DBgL1p6zf11/2N4W5yWJmXtTG5o5RHwdsDRdSTOlsT0KfoYoM1xmdSbTSjLmSBsOrB3rHoKw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:54.2609
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 70ab23dc-44d6-401e-9375-08df3adcfe6a
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN7PEPF0000014B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR16MB5337
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebdd44 cx=c_pps
 a=lG9UAvPfEC4VfFSIqus9xw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=cbNQJ9GKAAAA:8
 a=cHMDla566H0nh-0__SgA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX8Kktu+OhnsX4
 ds4PTiKH684uUHRpdXlpHyE6wqneo1GhW7hVk9epdIZ1X2UaU2scIg/VV5qoQwoTPmJNDfycQ7c
 IZBPGq9qw6dVBtobsNramSHmUDulNxmLQDWVnwElKEOdQVPPBS4G
X-Proofpoint-ORIG-GUID: iUINUCIM8Obz9kqXn3q49AOXpBsnc1RF
X-Proofpoint-GUID: iUINUCIM8Obz9kqXn3q49AOXpBsnc1RF
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX2M/xW0adbW5E
 IDNHUARIwAVBRJNwtANqkhRVu2A6ualRQw05Et84T2ZXol9Q7VDsI14r5/mSyMteZjx4yDSDS5U
 m9CFrhhps430quE6vq58GumLv5ziMYLk9rHq7yBoFT5o5B6XdUyCqzaoTEEF9jPQ0kndFPQtwxe
 nSxb4aY5olrJicHiJsEr1EvzAJiYWCE9Suw2taxgTOyboxhz84B4UpBGOIg6h8VJbjonxFfIbkX
 aXcI+JSYmQfAZGDIBk0UlzcXvVDW0P9kCJqblJ3zvhdBZJNZUcczrTRW6rOA0FCOtyOoY8rYKky
 MRLhxgG3BH1c/ZtDb9Kzq9Jt2kYFd1zTmoshBIvCBZlyFackfxpiBmJ0XaJRDCOqa57M50pCJe/
 uuQfo5kaWxpCxobB9MqDN/qSLeC3j96PuCdZmwT+xKjHpvY4/0SSOQasLr2V3dNrvR2ks1ecKtr
 Du9OjwefonSiSzcy2ZQ==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-d25034/1793842502-00CCBA5B-F27C115B/0/0
X-purgate-type: clean
X-purgate-size: 3046

From: Denis Mukhin <dmukhin@ford.com>

Introduce new method 'dump_posted_intr' in 'hvm_function_table' to enable
hardware-assisted vLAPIC printouts (e.g. performance counters).

Update 'interrupt bindings' keyhandler with a call to the newly introduced
hvm_dump_posted_intr().

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/include/asm/hvm/hvm.h | 12 ++++++++++++
 xen/arch/x86/irq.c                 | 24 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index 9bf2064925fa..1f0f7749b579 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -217,6 +217,7 @@ struct hvm_function_table {
     void (*update_eoi_exit_bitmap)(struct vcpu *v, uint8_t vector, bool set);
     void (*process_isr)(int isr, struct vcpu *v);
     void (*deliver_posted_intr)(struct vcpu *v, u8 vector);
+    void (*dump_posted_intr)(const struct vcpu *v);
     void (*sync_pir_to_irr)(struct vcpu *v);
     bool (*test_pir)(const struct vcpu *v, uint8_t vector);
     void (*handle_eoi)(uint8_t vector, int isr);
@@ -851,6 +852,12 @@ static inline void hvm_sync_pir_to_irr(struct vcpu *v)
         alternative_vcall(hvm_funcs.sync_pir_to_irr, v);
 }
 
+static inline void hvm_dump_posted_intr(const struct vcpu *v)
+{
+    if ( hvm_funcs.dump_posted_intr )
+        alternative_vcall(hvm_funcs.dump_posted_intr, v);
+}
+
 #else  /* CONFIG_HVM */
 
 #define hvm_enabled false
@@ -958,6 +965,11 @@ static inline void hvm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
     ASSERT_UNREACHABLE();
 }
 
+static inline void hvm_dump_posted_intr(const struct vcpu *v)
+{
+    ASSERT_UNREACHABLE();
+}
+
 #define is_viridian_domain(d) ((void)(d), false)
 #define is_viridian_vcpu(v) ((void)(v), false)
 #define has_viridian_time_ref_count(d) ((void)(d), false)
diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index 32a75f77a46d..de79e36fdfe7 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2527,6 +2527,28 @@ void free_domain_pirqs(struct domain *d)
     pcidevs_unlock();
 }
 
+static void dump_posted_intr_info(void)
+{
+    struct domain *d;
+    struct vcpu *v;
+
+    rcu_read_lock(&domlist_read_lock);
+
+    printk("****** Posted Interrupts Statistics ******\n");
+
+    for_each_domain ( d )
+    {
+        printk("\n>>> Domain %d <<<\n", d->domain_id);
+
+        for_each_vcpu ( d, v )
+            hvm_dump_posted_intr(v);
+    }
+
+    printk("******************************************\n");
+
+    rcu_read_unlock(&domlist_read_lock);
+}
+
 static void cf_check dump_irqs(unsigned char key)
 {
     int i, irq, pirq;
@@ -2605,6 +2627,8 @@ static void cf_check dump_irqs(unsigned char key)
             printk("   %#02x -> %ps()\n", i, direct_apic_vector[i]);
 
     dump_ioapic_irq_info();
+
+    dump_posted_intr_info();
 }
 
 static int __init cf_check setup_dump_irqs(void)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473238.1680919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNk-0001Gc-R3; Thu, 05 Nov 2026 01:35:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473238.1680919; Thu, 05 Nov 2026 01:35:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNk-0001GJ-LW; Thu, 05 Nov 2026 01:35:12 +0000
Received: by outflank-mailman (input) for mailman id 1473238;
 Thu, 05 Nov 2026 01:35:11 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNj-00017F-E6
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNi-00CQOL-QF
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:10 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd2a-e002-0a2a0a5209dd-0a2a450bc7a6-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:10 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd4c-b7e8-0a2a450b0019-94a39217a1d8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:10 +0100
Received: from pps.filterd (m0482517.ppops.net [127.0.0.1])
 by m0482517.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mp3B1644786
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:35:08 -0800
Received: from bn1pr04cu002.outbound.protection.outlook.com
 (mail-eastus2azon11010011.outbound.protection.outlook.com [52.101.56.11])
 by m0482517.ppops.net (PPS) with ESMTPS id 4hra2g3ajj-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:35:08 -0800 (PST)
Received: from SJ0PR13CA0192.namprd13.prod.outlook.com (2603:10b6:a03:2c3::17)
 by MW3PR16MB3915.namprd16.prod.outlook.com (2603:10b6:303:51::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.9; Thu, 5 Nov 2026
 01:35:00 +0000
Received: from MW2PEPF00014674.namprd04.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::a5) by SJ0PR13CA0192.outlook.office365.com
 (2603:10b6:a03:2c3::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4 via Frontend Transport; Thu, 5
 Nov 2026 01:35:00 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MW2PEPF00014674.mail.protection.outlook.com (10.167.249.181) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:00 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mViX3091702
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:59 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhgw-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:59 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNVxcKX5uKemOmNWxhKEH; Thu, 05 Nov 2026 01:34:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=KVy
	Hg65VjisPRHtr2bi3zOba6+8hFJxogzy5Htt3tIA=; b=oHv79CBL0tFjhrDJN7i
	VQe4fcbcB6Zzpe7q3qUBQJ4f0UCZUwwnip+fy3hEviztNjVKnQ7THNItde04AIQG
	YQF1aqYqTcP/gG2utcWyH/pOrvM7tq5BMUAJEUFpNmyJrrHAoNXabfuQ5krzyFIu
	KJ82USVILxsjW93ki4U7X1YQZZpJlUzXdMSCfDySYcotGw9nosTGhOe8F6RsocXx
	Hg8qdO7XGylI9qLzUIO7tL93Kh1uGE+UcN/+wsbxKGIoiP9heZN5lbKnW5VdTJ+W
	9IqfNr0ij3pCNJiu5k9D4lntbCJ70Eua85asDoLq7Z/Dzu3snHpCAXiwqUPGnYVx
	WFw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=oN32ZjSXMeUgAeAbQgRqTcSOS9PzvwRUAgpE2l1IBS2XlzAY27M7Kw4XRqVoCvQVePfORLzvtk2mNU2ZfYdcQduufqu4nVflH+94pDV5xMHswsmYrP1CPYhWL1FZh3xLzQzBTNF/tX6AodYKiTU9CRbNTP8/weXl3W/Coc+M3JeDlmUUewvfYCmoMIz6RCfXC3tgFq1i0Qkosf9QydWtzzdA6iGnuwG3TozbcGuqkoUULwsGghCALS0hjkIVurarBNldPtfgWeA3JLAFwzFXKmtV/UguqPQrnF/MIs5X+L+PS6IZ64jt21m9oxY8WjyYntwODLmFOPEEqriHDFBpuw==
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=KVyHg65VjisPRHtr2bi3zOba6+8hFJxogzy5Htt3tIA=;
 b=xuI99meYZ88eoqWiLiJJ7Z6CMzqYAyVR7fJcl3n1b6KXZHDoMTklQJo61kUHZwyBfiBC7BkAm8E4ikAJUgngYiZP0HYmBBuHHjG217lZVc/TdoAQ7Ahq5vDlCFeo0Udy8YVMJO3goOLF5Ml5ifT5owCfESYh4YmgYDUwvvSWIcFKEHuCNR2MrqLjeWvA0xNK1pbcYTTMJS1pcAujT4SjuJBeTYj6vv5dtASDhf12v2kdFoXm34C+cuWFuyTHM8YRNIVGzPNFL9Wen8HuDR5GrQKiSKft1q3So7bYPXnldmqU4mtHLBIXHT3uLj2g/c82TNlgwguu7FlwUfCEioWfOg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KVyHg65VjisPRHtr2bi3zOba6+8hFJxogzy5Htt3tIA=;
 b=dRzHQXVJldt0HD+OQFlP1QHAXiN1jLsDqpiuO8ztiTSGm4Y3fbzF7Ht9nTXN7aHv8K2ZXdqpyK5NpkbSDdgKrMe8rYLoISL5c8NzMcK+PMRnSRNTCkJjhnRMgpV1kcI2030kD9xkkr/Z6/27y5xXKaqTtjhSfBYXAVkRVTIYFtQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=KVyHg65VjisPRHtr2bi3zOba6+8hFJxogzy5Htt3tIA=; b=
	AcuKu3QYW4YMNS0RliRJDn579SqAMYrYC03C2T7hNv1zFEq9PMhgRW0Xq2u5mUF7
	SG1JrYy5AFcAUrEyVqlRs4lEYKdmool7WvUBTVDfgH4XDr+H9O1SSNX1TmiUO+vU
	OnGhgdncN5p2razIjWXd2BpMDG7gswUaSfzwz+LoDjoH5UZtQi72xx2oEM7qKFlR
	rdKcZeWrvsmYPVcW7TfGD5Hvl5m72SkG4Ap6Ah0cTQYif+OSN5nzHUbso4f6Y3rw
	cDxmjXQ3xW+37143KDyHEZiktBZ+SOAY+U9qY3mTiWWvGY+D87fNkdkLtwo/a07t
	r9y0duFLRnsncJsYSuXWtA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=KVyHg65
	VjisPRHtr2bi3zOba6+8hFJxogzy5Htt3tIA=; b=tsyk4vK9gOx8aFZy0xksHsD
	St+xHDqlfSrQFU2jZh91sDV18vTjcJ+ADnJ+ZQNN2rcT1ttyPmByXeSt2gZIDc5J
	0NkO9WxeCTR3YuLehXKfP8NFe4F+MfdcRuoNzj4vpoR4HA+drvg5ozWa9PedAhpv
	3kyBhwK0X+h01XQ0FQX/7eR+WfQVB2MsWNAgcAyyTgdrEuSQffSWCqrdj8p9M8AQ
	g1hCR1sSuXd99Z8x+W27KHNM9kYP/4T0hlEIh1XcUHz9QNG1qWHknT+F2joLfq81
	fDYwSG/N+O/qY+15jMBsBYpO448YoRpVBATfGaQgtgi894jJ5glanCrbyDxwZEA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNVxcKX5uKemOmNWxhKEH
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 21/28] x86/hvm: enable debug hypercall for posted interrupts
Date: Wed,  4 Nov 2026 17:33:38 -0800
Message-ID: <20261105013347.719392-22-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW2PEPF00014674:EE_|MW3PR16MB3915:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: b57625e8-35c3-41f2-8468-08df3add0207
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|1800799024|376014|82310400026|36860700016|261102123227099003|261022105027099003|261102130727099003|11063799006|261022075727099003|261009223027099003|261026140227099003|261028144727099003|56012099006|261021123027099003|261026121527099003|261021121427099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	Pwoo131EPJi5KbhXWY0dS9c2iTHqbN6WjvbUGhmnaUghq+azfwMDwzLdShoE3+2UIPy03nRhWM+4x3ceaTKHZ6PGiS7Me8LnNa+r8EUHRhojDuGykk/xvF7ps948ZDVUlOSY6W+Da41rJFOR0i707Xe35Vjn4J97pdMIls7GlfkV9kXLFrxbuwC13+1wg0+D/SSnTMQnILafgW9bmU2WQRONm3lWWNkLOwHoGWVXfWhq9SRR3BGHhrjrMQ92a3JxOnmR9AoohCD4lIMdNa7LcJFIypSQh2A1xc3Cf3Oo1Imjwtnngyj4dqYfoAKPQMwcTG+craXnKcoUfZtioPzFswSfwf9ah3yiRyN3rCKHs0F7OUtoAVtaoK3TkgG2JUlo811Dw8Y5j+3oImIJIxe6HtIuevCU6GcU3xWT0KstvfwQ8BsUQaf/qEU8ueczwKPCQEjp7BNOe6v+gooG9p4AwsqoXi9gvzno+/2T4hZ+aiNwj/VfiNwmPxuJiX75orhvS1MvSk5AWhhRYfeiTyrcAgP0BsfO7vvd+u/fLu7MMzMQKdLQ+Ec520G4mD6fmOCUnnFe+9nS0e6C8tXtyhVfYMQNFfbTqpSgggfwHuC0i91tY3IhCt+yQQ0foW5+53+YVRGijKZkXPJ8Z7z0FY2E77B4U8r9wqrkXzGUtwmfrT4P+ZQA66SVq5abSr6NLLm0f7pMHjB7ocadKorvJXmEqg==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(82310400026)(36860700016)(261102123227099003)(261022105027099003)(261102130727099003)(11063799006)(261022075727099003)(261009223027099003)(261026140227099003)(261028144727099003)(56012099006)(261021123027099003)(261026121527099003)(261021121427099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qLBHLA2X222/X5n8YXjAp9l/1YhyZyWMohgR5fezhl8X6M8KKn2L3/n5ZoKxdUrV24invbS3XWUcRtTg8JxVEz3KxNjabisQUhESx5JCdNfezUVWDKEx1xO23cpuw/MI56XAZpH3ywD0BMe4QCw8KLs/rpXdyHccWhrU0wtw1DE6s1kuQN6P/nsiVvFDLscENSFzkc6EaQeEKvB9FezyxVy3qvPmmUYVNYFTE3jnpZqKr5JQcqEJmsqXEe/HvvvyLFyW/LrY57B7/yX/npDyqevQoZJjnAocu/YscrENDTtDHS5D8TWzYKGokfuv+TIY02slZaEM2xEFrm/Jm+XsxYws85GwJk9LZSwoReDKAYuFhF0j1D8GXN/w15HookAaQaz9bCSXI4ZKrSutvusAo+OmmJuoLi/9FcOHwCQScdQdNSbEfYEOYb/i9VpLAIpb
X-Exchange-RoutingPolicyChecked:
	acjz5cgwQB4BZLVMJr7yfqK2kucRS99V0ewUSgbZGmClQcVaa10aH02bCo28hTOylkFI93mx0+Wsp49mg9cdUa/2k1K4zMRRTwk3572LDI9vCAeliuiVvquONV6gQ3HKmEkj+Byg2DG30Y0pTURmSnHH5icQ/cO2MUWfnJGnofeb9gSFeeFafgzXxyJEi+Jywk/Vqu7s9Q7b3CKpVTwYnCFCWoZRLCT3zH7wXXl9BodDz6LnCYjFhRLJ2BeS7xZVGjUxekknggStDM+NCT6TWshJ2Y7TaD4fEjmdc4nZJe829425iC4D2/puER+p4AisFY8g+qiA746Vlcqfe/QN1Q==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	hBnGsuytwQBWptnaD681E2EF9WlWLHtVvX/lNA2ofBX/T7BlfMVn/qn4+BjsbD8ket3u1qAj0FJV1r8yG+PHhLRrdk4CkrcQzoPM9Qb9/RP8F2bKTmXSz7BB7HzsIc4aa+eNdE0hXx7wKXaddSfKimcHWzILxlPkLesBqd91ou6apsxgG5HDnt4ExOxHmTaYWgbMw+MfOieRsAr52UskdudoxZ5EeTDSJRinhteRw5plH4UsEq2/hOGV0uKzu8zGaV6inkUq7UHHj07FKcEk8m14oK3EonmEGThZgSI8W51KjK6hCy/XnJZxw/eD43kP+viOfnYCjUgmNw4e8jjw6gbwTdc9bi8p0sRjuB03nTOsre8R+adIeyw+VLdd53+yafppibk2roTk9fEEVD1TmsGgwyZd14oFbMC0zMGzuPguIz/gAiZAT2giluUR9mwz3xgRTXERv8nec6NEhjCVpRKEtM8OmuGrDhbs7Gp+IIhD7wgdYFGE1fKBmwIoRtNs+ZgZnhghZ4xD4866zT0TaLvgfr5Tfxa5qRx/bH5ddgTYZfcV31BULP3clAvzCC6AeyLPiRIsjNDzzO9u0ENgkmFUSM69FZIwLOSRIxiKLRGxoVYXL15/Q4/ByM9H1yO0i/Yz3cwjXZQ1hPIkOUoZXg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:00.3859
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b57625e8-35c3-41f2-8468-08df3add0207
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MW2PEPF00014674.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR16MB3915
X-Authority-Analysis: v=2.4 cv=Y+ptIReN c=1 sm=1 tr=0 ts=6aebdd4c cx=c_pps
 a=zclsoE7mv10+eI8hWvbpiQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=MLwXIh1eZMowsRZfVxRb:22 a=cbNQJ9GKAAAA:8
 a=94UBVn76oIeqiFH9A0MA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX93w5sAQ56Wd4
 MPmsGSTmzGaGHWj4Mt+ARFCUCfkQNUSDwOoOk0mTSW1TXvHhlIRrssu13NpX8bti8o9bcdR1yCG
 +XCmamTr4bPKoiYABLbImx56+m52AE+nC8mS43MDJn9VLM+iuSa4M7/jg5yYcVG/fTYiwNgWuhH
 PdClNHeLSoUlJMaWAcvhzzvgFRxI6TrSlyNc4j5Z1lYM2PeiJox0KsQGspl83BUf0wwznSmRiKd
 zDGEXhziYWpUoBUATKSoO/m0H0Smzc85vdHLWlqsqRo7R37Arn8kbDrp2osEn83rxUkrAhwRAh6
 AU73E+FEoufO5Z+5KKUdQy3G9SLO297yG3z6NAbB1ZTuvo8kxMespDCJa7d2MjZfMGSUEwYINBE
 yHTrrjeH5YdYL5Ht1mUaLhyrtI9QSjhhpuLj2ff8KmTbm1mB9nIhCWPxk+C4p4YCCP8NrmICjJy
 M+RgG+MuCD7xHA0rj9w==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXwGBnz56aBb4P
 2qiJ/AfIc/iCVuuOPVNNmc2BrlnfUHM7bFDVpadCrsEr8wYRb9XuNgutA0mOJnL/vrUAkuZIyMT
 NFnCQe4TjXNDALD6gFHZqwSGVYXWX6qNC6KzufjZKa1n3UW6pzFN
X-Proofpoint-ORIG-GUID: NjQdv2lWF26715IYeF41JiHXCp3DCV4v
X-Proofpoint-GUID: NjQdv2lWF26715IYeF41JiHXCp3DCV4v
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0
 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-42698a/1793842510-ABCD79EA-3D337AF5/0/0
X-purgate-type: clean
X-purgate-size: 8143

From: Denis Mukhin <dmukhin@ford.com>

There is a need to change AVIC behavior at run-time to enable feature
testing.

Add new subcommand XEN_DOMCTL_DEBUG_OP_POSTED_INTR for XEN_DOMCTL_debug_op
hypercall.

Perform necessary plumbing through hvm_function_table and export
convenience functions for AVIC.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/hvm.c             |  15 ++++
 xen/arch/x86/hvm/svm/avic.c        | 132 +++++++++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h        |   2 +
 xen/arch/x86/hvm/svm/svm.c         |   1 +
 xen/arch/x86/include/asm/hvm/hvm.h |  17 ++++
 xen/include/public/domctl.h        |   1 +
 6 files changed, 168 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 42139837904a..a6ca56b08942 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -5257,6 +5257,21 @@ int hvm_debug_op(struct domain *d, unsigned int op, unsigned int vcpu,
 
         break;
 
+    case XEN_DOMCTL_DEBUG_OP_POSTED_INTR:
+        gdprintk(XENLOG_G_INFO,
+                "%pd: XEN_DOMCTL_DEBUG_OP_POSTED_INTR %u\n",
+                d, arg);
+
+        if ( current->domain != d )
+            domain_pause(d);
+
+        rc = hvm_debug_posted_intr(d, arg);
+
+        if ( current->domain != d )
+            domain_unpause(d);
+
+        break;
+
     default:
         return -ENOSYS;
     }
diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 4dcd2c94ea87..ca779be22eea 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -729,6 +729,81 @@ void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector)
     }
 }
 
+static void avic_domain_noaccel_state_sync(struct domain *d)
+{
+    struct svm_domain *sd = &d->arch.hvm.svm;
+    struct vcpu *v;
+
+    memset(sd->avic_logical_id_table, 0, PAGE_SIZE);
+
+    for_each_vcpu ( d, v )
+    {
+        struct svm_vcpu *sv = &v->arch.hvm.svm;
+        uint32_t ldr = vlapic_reg_read(v, APIC_LDR);
+        uint32_t dfr = vlapic_reg_read(v, APIC_DFR);
+        uint32_t id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
+
+        sv->avic_ldr = ldr;
+        sv->avic_dfr = dfr;
+
+        avic_ldr_write(v, id, ldr);
+    }
+}
+
+static void avic_domain_enable(struct domain *d)
+{
+    struct vcpu *v;
+    int rc;
+
+    rc = avic_set_mmio_p2m_entry(d);
+    if ( rc )
+        goto out;
+
+    /* Re-load LDR/DFR from vLAPIC */
+    avic_domain_noaccel_state_sync(d);
+
+    for_each_vcpu ( d, v )
+    {
+        /* VINTR=0 */
+        svm_clear_intr_window(v);
+
+        /* VMCB.avic_enable=1 */
+        avic_vcpu_enable(v, true);
+    }
+
+    return;
+
+ out:
+    gdprintk(XENLOG_INFO,
+             "%pd: AVIC: failed to enable APIC MMIO access: %d\n",
+             d, rc);
+}
+
+static void avic_domain_disable(struct domain *d)
+{
+    struct vcpu *v;
+    int rc;
+
+    for_each_vcpu ( d, v )
+    {
+        /* IsRunning=0 */
+        avic_vcpu_clear_running(v);
+
+        /* VMCB.avic_enable=0 */
+        avic_vcpu_enable(v, false);
+
+        avic_stats_reset(v);
+    }
+
+    rc = avic_clear_mmio_p2m_entry(d);
+    if ( !rc )
+        return;
+
+    gdprintk(XENLOG_INFO,
+             "%pd: AVIC: failed to disable APIC MMIO access: %d\n",
+             d, rc);
+}
+
 void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v)
 {
     const struct svm_vcpu *sv = &v->arch.hvm.svm;
@@ -752,6 +827,63 @@ void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v)
            sv->avic_cnt_kick);
 }
 
+static void avic_domain_dump_stats(struct domain *d)
+{
+    struct vcpu *v;
+
+    for_each_vcpu ( d, v )
+    {
+        svm_avic_hvm_dump_posted_intr(v);
+        avic_stats_reset(v);
+    }
+}
+
+/* Interrupt acceleration control operations. */
+enum {
+    POSTED_INTR_DISABLE     = 0,
+    POSTED_INTR_ENABLE      = 1,
+    POSTED_INTR_DUMP_STATS  = 2,
+};
+
+void cf_check svm_avic_hvm_debug_posted_intr(struct domain *d,
+                                             unsigned int arg)
+{
+    struct vcpu *v;
+
+    /* Ensure no vCPU can VMRUN while updating VMCB for AVIC. */
+    for_each_vcpu ( d, v )
+    {
+        if ( !avic_vcpu_supported(v) )
+            goto out;
+
+        if ( v != current )
+            vcpu_pause(v);
+    }
+
+    switch ( arg ) {
+    case POSTED_INTR_DISABLE:
+        avic_domain_disable(d);
+        break;
+
+    case POSTED_INTR_ENABLE:
+        avic_domain_enable(d);
+        break;
+
+    case POSTED_INTR_DUMP_STATS:
+        avic_domain_dump_stats(d);
+        break;
+
+    default:
+        ASSERT_UNREACHABLE();
+        break;
+    }
+
+ out:
+    for_each_vcpu ( d, v )
+        if ( v != current )
+            vcpu_unpause(v);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index 24d5fab59b29..e40aa77264ad 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -34,5 +34,7 @@ void svm_avic_vcpu_switch_from(struct vcpu *v);
 
 void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector);
 void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v);
+void cf_check svm_avic_hvm_debug_posted_intr(struct domain *d,
+                                             unsigned int arg);
 
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 83977d411b0a..f2eb01799c63 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2520,6 +2520,7 @@ static void __init svm_avic_start(void)
 
     svm_function_table.deliver_posted_intr = svm_avic_hvm_deliver_posted_intr;
     svm_function_table.dump_posted_intr = svm_avic_hvm_dump_posted_intr;
+    svm_function_table.debug_posted_intr = svm_avic_hvm_debug_posted_intr;
 
     svm_function_table.caps.virtual_intr_delivery = true;
 }
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index 6efc533b35df..d44f136fae8f 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -218,6 +218,7 @@ struct hvm_function_table {
     void (*process_isr)(int isr, struct vcpu *v);
     void (*deliver_posted_intr)(struct vcpu *v, u8 vector);
     void (*dump_posted_intr)(const struct vcpu *v);
+    void (*debug_posted_intr)(struct domain *d, unsigned int arg);
     void (*sync_pir_to_irr)(struct vcpu *v);
     bool (*test_pir)(const struct vcpu *v, uint8_t vector);
     void (*handle_eoi)(uint8_t vector, int isr);
@@ -859,6 +860,16 @@ static inline void hvm_dump_posted_intr(const struct vcpu *v)
         alternative_vcall(hvm_funcs.dump_posted_intr, v);
 }
 
+static inline int hvm_debug_posted_intr(struct domain *d, unsigned int arg)
+{
+    if ( !hvm_funcs.debug_posted_intr )
+        return -ENOSYS;
+
+    alternative_vcall(hvm_funcs.debug_posted_intr, d, arg);
+
+    return 0;
+}
+
 #else  /* CONFIG_HVM */
 
 #define hvm_enabled false
@@ -971,6 +982,12 @@ static inline void hvm_dump_posted_intr(const struct vcpu *v)
     ASSERT_UNREACHABLE();
 }
 
+static inline int hvm_debug_posted_intr(struct domain *d, unsigned int arg)
+{
+    ASSERT_UNREACHABLE();
+    return -EOPNOTSUPP;
+}
+
 #define is_viridian_domain(d) ((void)(d), false)
 #define is_viridian_vcpu(v) ((void)(v), false)
 #define has_viridian_time_ref_count(d) ((void)(d), false)
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 546d9a8ac9c0..b72164f61ce2 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -765,6 +765,7 @@ struct xen_domctl_subscribe {
 /* XEN_DOMCTL_debug_op */
 #define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF         0
 #define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON          1
+#define XEN_DOMCTL_DEBUG_OP_POSTED_INTR             3
 struct xen_domctl_debug_op {
     uint32_t op;   /* IN */
     uint32_t vcpu; /* IN */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473241.1680926 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNm-0001Zu-NA; Thu, 05 Nov 2026 01:35:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473241.1680926; Thu, 05 Nov 2026 01:35:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNm-0001YL-Bf; Thu, 05 Nov 2026 01:35:14 +0000
Received: by outflank-mailman (input) for mailman id 1473241;
 Thu, 05 Nov 2026 01:35:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNk-0001Eg-Hr
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNj-001x47-Uw
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:11 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd28-bab6-0a2a0a5309dd-0a2a450c8a0c-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:11 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd4e-f479-0a2a450c0019-94a38ff12e06-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:11 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nAqt227538
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:10 GMT
Received: from byapr05cu005.outbound.protection.outlook.com
 (mail-westusazon11010035.outbound.protection.outlook.com [52.101.85.35])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurbwd-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:10 +0000 (GMT)
Received: from PH8P222CA0019.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:2d7::21)
 by SJ0PR16MB5148.namprd16.prod.outlook.com (2603:10b6:a03:4e7::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:35:03 +0000
Received: from BY1PEPF0002695A.namprd05.prod.outlook.com
 (2603:10b6:510:2d7:cafe::82) by PH8P222CA0019.outlook.office365.com
 (2603:10b6:510:2d7::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:02 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF0002695A.mail.protection.outlook.com (10.167.244.171) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:02 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mce42969017
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:02 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrm5-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:02 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNXxjT51f5COOmNYxlO9j; Thu, 05 Nov 2026 01:35:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=yfW
	zWSdEQkaEo9tnDH8JrNq7bLBhhcFF+YBxmutS6Ek=; b=mgAFM4Nziv7RqIbelwf
	dUmwxOjeu08xwP+X+7W8EffOVUicAk5zsjWA1b/dGrUh+N5oou912e0UAgA49ATD
	VmTaZOBdXeS6gc/59ZNR6CNlXiygUMK7yGyS+h4FaNjBReN1VHxcYEjfWCPfX4Ds
	+4ctvG/mAZl3bF9dHNFnfPOKh3alUhNLwi9wkIXzY8OT0qjSx88oWCUM4kK2ZwGS
	R/NlAc7TyjA5s1kXemzU/PzwjnrX+eh/cnY2k7/hC0o1KW9At8GIvHgf9WDhMjzf
	f4IKhZeRFwzu1cumMuDQMxJjVbZfhiLtQLrEopk6QLmioCN9LmNKyDtYEbuXL+hB
	FWA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=tiSpvNlMnVwqUrVNfvoHduFz9O1fOaXAUUHlJvbNDUPrajIH2dAGKOPqpPqzT8mqraG59UbnyflUac6+7+S/bq62PWBTzogS4OYLx1b3V2hmhUHp+TY8YDa/GjU3qllENV3c8yq5cPvxV+j9IXngCWIcALvpnT5B7haDXKIai8yvPU+OWdToFh9XrR2gMHLueMRiWH7I4hdk2Za7a7LnMHoZwjFECQx5h0Ndad2Ai2w218TUqyNVcNvCiKRMgR+oLXyjoriRj8VwpPiYMMn+UfdbuoDt2flcGxGARVeupI6bwUK9v9/WHdBdwV4p+fzvom/FW1TvlifDWOUBWqWaqg==
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=yfWzWSdEQkaEo9tnDH8JrNq7bLBhhcFF+YBxmutS6Ek=;
 b=tIuuZYXW8veKg8vIZnXJH9kSXncCyIkhObEAawhiKKt+lzYprylFuY6ER8p5u64ux7mmGViRYxDxDsC2gAjx1ud4cm1p5kbSMOeSZ1YHQ0UjzGZIpqDvIh8nRqxGEGRlwKOaduCrkC2BhIOtmTI7JxVS2TjtqgkOoKdX+NUpimJPAWBBWFRNbAt0rY3qVaX1p4e/uWfbUvPLyV08v6wn5u7+JbYlIlER7WY2UGeLjewU+S73dt5m5a/f1C7LNRQI/a5B00xnw0jpQhdZ2D8k4vuv5CdFPX9/b2o1TdUKpN++1Huv3XkPhL40skZZrKL3E1gPKENExAee2xJiHH7KkA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yfWzWSdEQkaEo9tnDH8JrNq7bLBhhcFF+YBxmutS6Ek=;
 b=eM97GlhWKtiFztJsVbx60RrZpXQB8iZZWtr0yTyXy56fws5kqgzuWSqBsylodtBpYSLRvwgD8CeJicVvzbCscJ8XSmkb0NyVW6WH9RluFdKwZFsOBzoDNz7e6ygB1H471mzRKnStkoYhmS96wkcfLL/LVkHivjd2lg49+UlNBLo=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=yfWzWSdEQkaEo9tnDH8JrNq7bLBhhcFF+YBxmutS6Ek=; b=
	HvJTvcVWyPjxEwGJIYTLwiD4t5LRUZKKCQTpLxxhqDodJ1dDZh0PvqgwFIzokjrM
	gXncB7UFuyRk/ZHkvSFheLiT9VD6ur4Dy7DxScnmsmnpEZyKSa+QAlxqLHehY2iJ
	kP59Aq1jz/rfW+FyVrSk4OMPGIIMD1bLZW3qeelTjoLoDHRn4gI5Hlumz4uaXlEA
	PPbo9QMYe0g+7lbIVRaE+xd+1XluK+ZPrh+8Bpq/uufVt7bd4xhbqsTxfo4cWpmH
	vJAxpkSPnxV/b9cyVmlSa9ajMdyu+ZOmZ4+PIcqgPd8/fdMhDSFTZwuYniNlY1YU
	jVCmBrz2zSYOP/Sz3gShiA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=yfWzWSd
	EQkaEo9tnDH8JrNq7bLBhhcFF+YBxmutS6Ek=; b=VayVIzJFQ1BgrjoGgIHP2vT
	9Ba3U8OZZu4wIb3JdxnzfWUAYb2tEVz3OvaEAJLwV08KMpTJL6Q3pP+8OH3lfKwC
	A3nBXzDDvhU/dJNog4KQfI+4BuCo3Am+7xcYbZd0hNHdNpO6gt/lLBxlTUUzZ5Kd
	JXc1ziS3mD6DbDluXQxueOv2acsYLMTzyDvsw1VHS7XI6MYpi/8oJMM51czOxZpA
	kiZbBskstS7n868VrZGz0eUBZi9pPSmSRmqdA0U2UCAPJl9L+Q5HjtDbDm6A83bq
	mu79wRyUHVM4Z5lud+FPaG0vMTDnvE0qVC49zVYoRGHcvFnUPuHzEClJgDYL6aQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNXxjT51f5COOmNYxlO9j
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 22/28] x86/hvm: avic: ensure SVM AVIC supports xAPIC operation only
Date: Wed,  4 Nov 2026 17:33:39 -0800
Message-ID: <20261105013347.719392-23-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0002695A:EE_|SJ0PR16MB5148:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: c42e024b-40c9-416e-df22-08df3add0361
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|6133799003|10067099003|22082099003|18002099003|56012099006|11063799006|261026121527099003|261022105027099003|261102123227099003|261026140227099003|261009223027099003|261021121427099003|261021123027099003|261028144727099003;
X-Microsoft-Antispam-Message-Info:
	nDBT/mGnLp9RYIX3RoEL5F8tTJ0i+QeP4Bvh/BC6WYT5pAl0pk6y9aWyUniDljttp7XCIaaS/aeMsptzYEqqfzEIYNL5OpWgTLOljW8c9Y3Et+jvKDU2/q4/brEovJpyIez2So4zOKfatw2hqJw9bYLCytjbZy1Nuz2hJMZO1j+WwL4oDD5fSrZ0fZuSrliLy2UM3KGHN9ehmiUQK0if4BS0vtYEZns2KxVyYPWBnOpe5amRzkTK/3eOclc9FJvfId6sr9spHw0W+/TibQFE2vQty7ZxgQMI1fmPW1u6FNgMi8yzANXL4r1Mq4lrs8aeGLuHxtka5sUxxYk8WXeYm1Y2U9cdSr2EULVTlnhv5khrDRj54VvEga7Vpo4gxdr8hI6slBqDRumEgXwBlDKEHEthXIOIhNrdJ4I9zAI6T7XDwlZy44wZy/EcfbZ2Lhn6kre4lChH2vcPprQCEjAqi9mya1dBgZ2yrmbqoHqJuDpA8l3xQGJt4lyObJzEvon/SnbNM3FVj0bqVhFtd0tSECDbaYx5yic7Hm07yuWLsFS3vAoOMlPzcdAa5BGCs7aK1WbDEACEYzG+pBcgLpG1fcQDewq8ErHc6MTFsLg/wRIYagPcFBdSe++NQhSn1RVvehpiuBLfFhY1tapjbXiAkrTjpMd6zhMv76Z+WR1PXiN6WLHIHMZCEWKCa72FHo3JObMgEzXQok9iDuzSCSXhyA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(261026121527099003)(261022105027099003)(261102123227099003)(261026140227099003)(261009223027099003)(261021121427099003)(261021123027099003)(261028144727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ielA725XeTWFy1okZi+UCWU0zODmWXEIAwkjmmBrIxR6t/Cwuzsv+Pik68bZmyYfxes78ElRwRakUZ4afh2yMz3w5A7fieTOFRYVy/Cu5cWQm27QC6VUNLfDR8J71W9DMzKHOotSjhfqY/lY/KW7TKiRIuHuUiXPxrdd1kbuJo6BfbGcM5wvo+6IajagzdzSVY6k7vnrhTvROTa04cSC9pHRFEQELzeuhDhx5u3jqF4BQYKjNObRJZTs0i3oIS/fndImtiDYDcSORxCgSKKNEiNc0WDUQIIrMjErEdhNAJRLwLcYx/9mMkudJdWpYNrM04bzORFJSvBpJPbIYC6Q6W5cT186l6MpbCBFVtTO+/DaZks7ZUEaFIEexvQQvQ33OEnZlOC0P3TH+Gss45V+S2w38eROwztfTLATBCmd1kliV2gn5w/WjbhFYD129d8N
X-Exchange-RoutingPolicyChecked:
	TUTkd+MCStKhnjdyw0/cEkCSRrXUYfIQ6u5L4ugrKmFvFCg18MpUSRT6TZTl4p5CaL5RBDWAPhwToBMt7/+ukA6ddmUEWrXdohTfPhPrvmiYqBqQv/W5X+S3w19XFmaSFNFtIIz9uk22L55YPYzLa1ZHvJbMAuk3SOMvE4y3m+xNMfYkph1YixWRyxoX4JGXYED/yhvMkQReyJ6rPtH1vTCgY3xDuAotzSPcs3xhUEr3DZ0aU0UWiTrY3besz9D2UvQbj/1GW1E9713GkgngCRGxmAcs14QC4ZEq3nFM1Fq7HKO7EJxpYM7MAR2o3/h41mu9Z74rZXUt/6IRsG1+Gw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	GnzUxfseW3QwIYu1ghoWgdDmjqnoMk0dvb7VbuIbxbWpApWirv4ZuQ2NVIhfwZixHDZ6XXkgpqK7nY8E3SRNBLiFVa0WGlfyhFuE5bZ7Q2IGkLOcFHpSoORxYUf5xmd6GpHgrUqvSFHOM3CYpVI8DidiQ53Uyd5kvqMf34TxcJEA7pTGBcL2zt/yaAdm1Le0JYSb6BwOs93H//NQepnY9EgnAfztpJr3aJ+ARe0ZCbAVNne8UQfyRPyiY2hOkzegmOZg71RPMIMAk11zaRgq4KEjJfrmffWKmwym+Kf1zgsUYrmZlhZZl553dgknOem+bmbh2TtQpt7bAav8wAGd+/2lvF8jcI2Lf+gh0teraeG1u1UXTSWDIDtrfFj3RtOeYADDj+rJWAII6OoGcCyQHyHKNuL7G+yXJhkr7pQHWi4Dm7n0MClJ5bBoCo3bcx5Kwph15HwIb3BULr+UUxEtrftoUJkEev33t5P3MSgZBRZpL5/L7TJyvenfI/lK+VgWaYUqYtbtW1kX6GD3h6HPIA63g1IIt3KB8mkisEmVzowjKq/wQQuewHP77eXp5qE4X7/44IAFAld/+OcSbxH5url1ZSv68HnTCV+dhx+CkPjLU3Chs5OUq56tTpEFv9WHYGqDRPGuFXtC9Rayk2solA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:02.8289
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c42e024b-40c9-416e-df22-08df3add0361
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0002695A.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR16MB5148
X-Proofpoint-GUID: J6ZRyGUP1vELyGhrdDTCBjOiwCO6I8Hz
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzRZ93667s//X
 rqwbtKBeV8vZatxC6jGStcHl2IXjOXvN8BDnFmeQoXEKfuIjlRrNeQUvToaeoiVefKqE4F8q+/n
 cQmQKtNXP6CzNViq1XY25g/xFPjKFCsMT6KXiXBVMjom1VKiDL96
X-Proofpoint-ORIG-GUID: J6ZRyGUP1vELyGhrdDTCBjOiwCO6I8Hz
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX4gFQIJzJnrTH
 SWYuWTorTb3EH1sWHGFEZ+1o6GN/Axisj81Otl91PajCMhIM8yn9Rh4fPcJCy0BgCCkSFKzDIcp
 Ry4qapH36IfibUvSNTNLzg0i2ZCIUlwRCIVgPnfsa35Q5+jURQmBd2WzCi9FEXqDxj6VUctEpeL
 eELQmJsctP9fJXGx3JgVk278K3E6BRP1NQCJjx+8LsdQV2y4ycty/OF2lVAkT4hGWn87YOVV43z
 qJr4YV1GZym+TdTjLHG+Ec6CkxrabfL3yLy5oa81K5Ft23ZRpuQeqhRr49ePDZJAsQn8lM9yMrB
 2vlZMoX3GjwuMaHTHxIIH8p9Pyq39BOAyZTih7AhU9KaZ50EwjQipdyKP2br+kHo7ijINImrR/t
 8wksIUw1FhLu6zD20qt6Nhv+Nq0uYUGX4fgyj2wjJdw5qhknvEuC9pMThL8VgIzPBpeAhD0y0LR
 SHFnV5yFGI4hwkD8EeQ==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdd4e cx=c_pps
 a=pHgAWWeLuDyFdJvI4ceQVA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=yphJJbrcoA6tzcLAcZoA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-d25034/1793842511-77AD4A5B-837078AF/0/0
X-purgate-type: clean
X-purgate-size: 3633

From: Denis Mukhin <dmukhin@ford.com>

xAVIC does not support x2APIC operation (yet).

Until x2APIC mode is supported, don't advertise x2APIC to HVM
guests when SVM AVIC is enabled.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/cpu-policy.c          |  3 ++-
 xen/arch/x86/hvm/svm/svm.c         | 12 ++++++++++++
 xen/arch/x86/hvm/vmx/vmx.c         |  4 ++++
 xen/arch/x86/include/asm/hvm/hvm.h | 15 ++++++++++++++-
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 48a3185eed8d..ca9b1a523570 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -764,7 +764,8 @@ static void __init calculate_hvm_max_policy(void)
      * (x2)APIC isn't enabled.
      */
     __set_bit(X86_FEATURE_APIC, fs);
-    __set_bit(X86_FEATURE_X2APIC, fs);
+    if ( hvm_x2apic_supported() )
+        __set_bit(X86_FEATURE_X2APIC, fs);
 
     /*
      * We don't support EFER.LMSLE at all.  AMD has dropped the feature from
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index f2eb01799c63..667e8b05eecc 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2478,6 +2478,10 @@ static struct hvm_function_table __initdata_cf_clobber svm_function_table = {
     .tsc_scaling = {
         .max_ratio = ~TSC_RATIO_RSVD_BITS,
     },
+
+    .caps = {
+        .x2apic = true,
+    },
 };
 
 static void __init print_svm_features(void)
@@ -2523,6 +2527,14 @@ static void __init svm_avic_start(void)
     svm_function_table.debug_posted_intr = svm_avic_hvm_debug_posted_intr;
 
     svm_function_table.caps.virtual_intr_delivery = true;
+
+    /*
+     * xAVIC does not support x2APIC operation.
+     *
+     * Until x2AVIC/hybrid AVIC support is implemented, don't expose
+     * x2APIC to guests when SVM AVIC is enabled.
+     */
+    svm_function_table.caps.x2apic = false;
 }
 
 const struct hvm_function_table * __init start_svm(void)
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 3c7374a9ff42..bad43b38efea 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2916,6 +2916,10 @@ static struct hvm_function_table __initdata_cf_clobber vmx_function_table = {
     .tsc_scaling = {
         .max_ratio = VMX_TSC_MULTIPLIER_MAX,
     },
+
+    .caps = {
+        .x2apic = true,
+    },
 };
 
 /* Handle VT-d posted-interrupt when VCPU is blocked. */
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index d44f136fae8f..b701fc003ced 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -119,7 +119,9 @@ struct hvm_function_table {
              virtual_intr_delivery:1,
 
              /* Nested virt capabilities */
-             nested_virt:1;
+             nested_virt:1,
+
+             x2apic:1;
     } caps;
 
     /*
@@ -716,6 +718,11 @@ static inline bool hvm_nested_virt_supported(void)
     return hvm_funcs.caps.nested_virt;
 }
 
+static inline bool hvm_x2apic_supported(void)
+{
+    return hvm_funcs.caps.x2apic;
+}
+
 #ifdef CONFIG_ALTP2M
 /* updates the current hardware p2m */
 static inline void altp2m_vcpu_update_p2m(struct vcpu *v)
@@ -905,6 +912,12 @@ static inline bool hvm_nested_virt_supported(void)
     return false;
 }
 
+static inline bool hvm_x2apic_supported(void)
+{
+    ASSERT_UNREACHABLE();
+    return false;
+}
+
 static inline bool nhvm_vmcx_hap_enabled(const struct vcpu *v)
 {
     ASSERT_UNREACHABLE();
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473248.1680937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNp-00029L-Ay; Thu, 05 Nov 2026 01:35:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473248.1680937; Thu, 05 Nov 2026 01:35:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNp-00027M-0l; Thu, 05 Nov 2026 01:35:17 +0000
Received: by outflank-mailman (input) for mailman id 1473248;
 Thu, 05 Nov 2026 01:35:15 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNn-0001fK-Bk
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNm-00G6d6-OJ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:14 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd1f-8faa-0a2a0a5109dd-0a2a4503bb5c-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:14 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd50-fae8-0a2a45030019-94a39217c9c6-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:14 +0100
Received: from pps.filterd (m0384718.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mklW966588
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:12 GMT
Received: from dm5pr21cu001.outbound.protection.outlook.com
 (mail-centralusazon11011046.outbound.protection.outlook.com [52.101.62.46])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrc5ghv3w-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:12 +0000 (GMT)
Received: from PH8PR20CA0006.namprd20.prod.outlook.com (2603:10b6:510:23c::11)
 by LV3PR16MB6171.namprd16.prod.outlook.com (2603:10b6:408:1ae::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:35:07 +0000
Received: from BY1PEPF00026967.namprd05.prod.outlook.com
 (2603:10b6:510:23c:cafe::62) by PH8PR20CA0006.outlook.office365.com
 (2603:10b6:510:23c::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:06 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF00026967.mail.protection.outlook.com (10.167.244.151) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:06 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nDhu3230937
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:06 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnp9a-11
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:05 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmNbx1A3igTjoOmNcxget3; Thu, 05 Nov 2026 01:35:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=f6p
	UCrSAnHxjf21Dv5dCHT2C8S7asfpdB8+/fRI4YCM=; b=hVk3jnYPtSRJGvkozNH
	hEUO5U4G9l/cv3f+i7e1gyhkMaJ8Q8Yl0+daclcVYS9k83G/DZc8Y7QEM/HyLUh4
	KBwb3dARcAiScjVvOdfu01haURqAOEPUGHQa2R5/IGVDnYZ4Hvd1NOPNTkEc7/5O
	iB3WjOkxwnJTO3A07Dbw7Smu9W+M2LDGw3tuD80vkwGIz8rZowsRG8I1oGny7B62
	/IOgQc+EHV+hJni7vXL7ATc0gV6/e9VXsLFvc5GCFdRvwD7fUNF0bm3S02oMHWlY
	IyXe+I5SrA1CbYhO0FKXNl6CdEU7Bl34lqaiLb8JPT6zBjzELG+gxXPvPuwwpuNS
	Xfg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=f55cWL0mHCpkmmrBRMud5SSrlVhwQGZuHtLyztB/mEzTFmA/h+svD+MVvrdhRnNNR5X1oeTAnh2eMfSCN2QJ3xlzN23z0en4geg5N/h4moA3Qt29IBUi+La+GBtAgZEJykUUgbL9WFYiwngAZN3TCa/XL4+DyIDW2IyLN08BAbHLwFNpSHEAFuGVaZ/oei5fBRnjQgdeMK10ChhMERzupiD8hG96hvolmjdFvs8TO8dkBotz3QBDKFkYHMDgNEykgNiNtDK1DOgn4YvXkUodxotaFO9yBFTOs2AahNHlvMSt5ADHxlZnHYOLq9tdNpauojtSiBjH4ExJme1IKhEezQ==
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=f6pUCrSAnHxjf21Dv5dCHT2C8S7asfpdB8+/fRI4YCM=;
 b=hz/z/RCw+vPcpm5D9KD2LokVLZw/MC/3z5wdFxISqtj5uTZ5zVcYuyNEgsXXS81N7Wp2uaUlt0MUPgdS2RcxQVSkArB9hSUUu18QNUeAJYeG4LCjewmTLlz9IeJ4iMtD1ELQOw8RlBo0CR2YGwq0ThyiMKcTcHLTPUupeqpXM6h0shCyhHvoe0AdioA85/WYJ2usxNnTGxepEGzjPl6lg7+L2zBM3r9GWsiO8lOruBIuh4fvLpZaC2WKap3p2wG4PClN85Yc5ZJsnHf1jSo0FC8IMDnoTB5AtuBiNtUZ4r/svBUDvl8HPsneHbLTpzdIGPWFWyqn09RKDgJ+cMqmZg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=f6pUCrSAnHxjf21Dv5dCHT2C8S7asfpdB8+/fRI4YCM=;
 b=PRWQzP4cftxl6aMsAKXmhXNctHXpZTg8sSSOFpIYGYsRdIZBcCppjdAjxkheNtuuGhFlMUiFeoeWnQwZn4pVz4iOm0FSyW0U/z4tzjH8zDssdxfQ0VWnE4F8XExfrWYulNY/8PfaGaSno1LFbSIsFeTlVjQcpj+GyJGtK49TLnY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=f6pUCrSAnHxjf21Dv5dCHT2C8S7asfpdB8+/fRI4YCM=; b=
	cTCVJYZkAwS0VwqYzCCmc2xZWN59po6vyoOHwVc4L00ewIVusQzt1sTuy7BL9zGJ
	YjyyO60gtYI0iPid9GMo033QxvV8cEqzuZMOSfRUzTY1TcMtfH37PNapadIZkScx
	0Lh/2rj8WS6GSZbEIJmbJo3DRDoO5Lc+zFERv9isIUOFJrtaCDampcwcOV9KzmYM
	kLvEm5G+dxrLA9VSnpt7B2s5kzUuZv9RE1fj4L83o8xqaQ5CHcFCrAG6gSXahJIA
	/DEPryc/hC9nGhJ38c/LThYGCn0QPsL5GHUC91Zsh+j+kKYKQ9sRV9o9vXERKQ+D
	7pPF2tTMQ+fp+Af19Y3/KQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=f6pUCrS
	AnHxjf21Dv5dCHT2C8S7asfpdB8+/fRI4YCM=; b=N4NSYfXFUEihgGDZlLcnmj9
	6JJb2EzkHk864XHejMDiUv1m6wqYcMeY2m21rohxoCao4ARz615sym+So193YaHw
	m8u6QTnRFjvaxbfg5zjJFfX4yN+hwZt38xNCV8fgMbzS++iqmjx50E+vujdBYPe/
	hpUueq5yyZLmpN8yroVBLfsEcyMNgRNM7++VJu1KgIrabfX25cgeWaTCBDnxNpnq
	VT7R5vjITQolK7rT3bOCI4nMkk5a2sObXvuQZqFkdCqoKd1zE0r5TR9P8Ga214yU
	abf9SaNejr8bKYU1XmpDSTBriG4yVSEpWQZeKbyyUAsJ+CU4WfeUPlC+GXX4BUQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNbx1A3igTjoOmNcxget3
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 23/28] x86/hvm: avic: enable vLAPIC mode switch hook
Date: Wed,  4 Nov 2026 17:33:40 -0800
Message-ID: <20261105013347.719392-24-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF00026967:EE_|LV3PR16MB6171:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: aa652974-ffc5-4f0a-fca8-08df3add058c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|1800799024|23010399003|6133799003|10067099003|18002099003|22082099003|11063799006|261026140227099003|261022075727099003|261102123227099003|261022105027099003|261028144727099003|261026121527099003|261021121427099003|56012099006|261021123027099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	VPElIBkCeuYP5cXp6I1l9yOLc5usi761014ipNe9GdtUB7miWaBZOLMj9p+lDfHONNqBwqEy34da1rPKNnX8Bq3kwt63E5NE6RPjgDgC5S42+kuKdA8HVy3HPxNkFTbWfml6eA1mLeNLTBm5P5DkN5oQwmniwH2J/PM3xzwxLdyO4XGbmiFGWIVyMyG2fVPApCOgGIiUoy/s4ieYQ0GnjAsFRMv2ZONDA2JCcZpm5d8mogAz374ss2XNLmTsE0+xJ0l9NKWU0ks/3VOWgjp2dsOE+A/FSyUps2EDhDGCAINeHGRg8/egTZp/5iCnHSF+l1jHrI1hnc2fMCW8EZIF8IQHbB0krKZPaY1vX7MjXIfZ1+QiQbTaoVvxgV3proIJXqDDGO9FZ0DcW6kImHzwZEAZIsCHX1MsiTGNXbgo/eUc2pPJ6Gjdroa2QH1JDhEgyliBVqwAygpwaFvIC1+UR403fn9htzP1tixtZQ3pXivO6ujIAgFxl/h20NjotszP/b5erVcgvnUFhR9sTFqPDygY+J8jV2m5u5gwV4AENiGY9Nklf3VAzcnvm1za3BumsS3TBRJMPfiRY2Ferff6HCu45ELFTUbDuXopGB7cVl5sN0fMk77ws5uUNeP9DdqquJqGYnBte+/SCug7wixyX0Xm2BANBxc4NHRr+I4ituJ0HCWr59jj8andnkv65ypSAOXvPK9vmwJiMFX9Aw9LBQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(1800799024)(23010399003)(6133799003)(10067099003)(18002099003)(22082099003)(11063799006)(261026140227099003)(261022075727099003)(261102123227099003)(261022105027099003)(261028144727099003)(261026121527099003)(261021121427099003)(56012099006)(261021123027099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	UU3vscGxiAbmaAKqTHKMboeVPMzC3aHu71tBTBMNR1Vin9vlEUaGqwT4UBBIrqcxA5zi5jDk5NhP5wVm9fHUD5nGfYOhEwsHOie/XYdNKOUFSBxGvZKu4icQ4WDvjqAssyzziUjJ1JLvl6VIBNLplKc7vtHP8NEWvZTiMWDiHK8op+pXywwU5NsPNdxNuJZ56OVrUMsjk+iuQLszUwAFahlWI1PQssV6vzv712anN1d+N0EH2yqv3q47Bdg8eanv9Xz0nma5yM+W4jsLhSyHyJZSomtdxks6kjoips+Tt4A/XKyfHqkc7IIz/fB9Ed4RC8r7hKEOK8WaArpvhb6fjmljQmkS7CiLax/FJHdpiJaZln/e1j1lYIIunp3baa2MFpOLGjZm+BTV56VVfEx50ksJqeCvAAzODz7dMPN6MBu+Ay25bTdiv0nYciFd9/17
X-Exchange-RoutingPolicyChecked:
	iLMPd+pDGlVOrQwqwaqYA7f/pvOUkwmvrDfgq0Fkhcb8ZfaaKPIg9KKPcVNa21ogA4O+QaM6u5JUOkKzeqU4N3usVI6YRosKaL68A30sP5AIUHST+Gbk2IEU4nk9n53bIxj5IGrKHBfQkTiccbhjkkGuAzXQcrmYUNFdR8U9W/kUKGz2p9NREybhKhZ/4H7ri2vP/baMl7iKELFISI1vzQNfdCyR11cdKoc0n4+76Z8zjT5iBOO5SUkLJjzJtdgbLG2M3sElI8IkbYELMdhtF7kJLGj95t7UEkim/wlqzMGnCA1umsy1DA4i9NkP5wo/uwwHjOhFcOx7T9VKq+4NOg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	ew4//NccEg/TLpivDMq6u0mpyoSMpwczG6SAquWOMwoxEAv8aT/AY7uGK9mOq1WGDbsBIGSE065x70GjkZhA+h5EuW77nuwbFeXOQBp5wtWLHhR1vyZwLc5fYhHRx3akyIoEw6FQJr+k48LmPrzZqRZ4SmNIkJAMgb37L4JDW2tuSKRNFjXj21HTzOKQ1Uk9s2rtFKz2Bye/5MuDEj2uwNf3YghxAUa6DrxNwwAvDJ4q3wV+CCa/wt5zze5Kjma1nrI92oG6uMYgO/wQp6Ps7srfDHx/lmSRwfDiXOzuzLCzo5wOLD4MAwyTqn7PUrl/L5St4XBUnn09t08CLhxEWOkey86cTmeNZR+/IRtoqDD/6ZEmQnlTq/NYbK0LihgVJvlhjvVeizXvljSC797bYHHGkOkaAgSJTwylSW8ejBSpPjoipjSzmlXR+ehuizLBgSpcEYyT7GkqPv6PReggtcTn22V8GDwkUfGbXCy5wPVgIL7w5nl+ratHdHq3CqRYbeT1yoStm0Urcqqx5ND3l3Le7JoMgJOLPJMlJECzirCsv0xPGQoC3476suKi4Si8ncP82Q97304qF9TICuVQUaQ38h/po0JxPSnVaSK4om6kdEmJhc/GEfJNtTESBg/6fRyEJ9scl+6maZkU/oMWhg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:06.4681
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: aa652974-ffc5-4f0a-fca8-08df3add058c
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF00026967.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR16MB6171
X-Authority-Analysis: v=2.4 cv=JawpPkKV c=1 sm=1 tr=0 ts=6aebdd50 cx=c_pps
 a=m/LAOfpIcXRJv0ug5Ru3ZQ==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=ARvDHhclS48edyKYUbLB:22 a=cbNQJ9GKAAAA:8
 a=gxlwDS1KxA4S_MIEyUMA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX1DPhimV95HIg
 qAOjW9qRNHkh0y7RcnnEpcHxCr5PM+J0583mmgdbv/tzcCiAd5FlLPYgMesqmUB0s9oYFqdjWbs
 JeR0R8jdV8DUIu9pA9JUJEC/ArS694X4kRS6h4HEIyR4Eow8+4SdgqEjWfFmwp3ukz19Df0kQF3
 3JE1HbUxuuey4t80frqVQa8ySIVRX/bPFA5sVwuG28ghM61t7LWjjt8+oIEKjDuc7CpGECkNzv1
 D8tR1I9ewsvKZyvMNUyqP/dK9AxGteXO8JfGPbuImDHDBdNm5prGTp7N3qfkBoHNgC4TJG0pPHm
 n2YKCgbjKz0W+R9bUkx2g07NPt2AzNLBiEgvd12SdcNFNJPzGbewAaZkSe+StnnqZ8IK3jg93YO
 peo/TjP0K+7Ax+6Hbf5FhGT5Izks3i09V7gjQDlVQJhC/3cbp7BNPj/YxzDCS3UDDeehrLxNB5W
 ORaSB1Xh1cF8qR4epRw==
X-Proofpoint-ORIG-GUID: 506hmCYN783NJh5m-5b84Siclx3YlG1-
X-Proofpoint-GUID: 506hmCYN783NJh5m-5b84Siclx3YlG1-
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX8dOOYPotzhyl
 mp4vu2fWbbeh8l96SNpszCdxjauhqbKPSpzIBNSwN/WxlSeGI0kDhUaxIv0w4oLXj7EbhBcqp/b
 Va/MPqcKUsi37PPuC+ldWMiJbbDc+DvVL6oB09JMjSu8PdaB2tQy
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 lowpriorityscore=0 suspectscore=0 clxscore=1015
 impostorscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0
 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-purgate-ID: tlsNG-33051d/1793842514-6E8CD4E9-055C4F4A/0/0
X-purgate-type: clean
X-purgate-size: 2452

From: Denis Mukhin <dmukhin@ford.com>

xAVIC does not support x2APIC operation (yet).

Until x2APIC mode is supported, ensure that AVIC gets disabled
if guest OS attempts to switch vLAPIC to x2APIC mode.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c | 17 +++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h |  1 +
 xen/arch/x86/hvm/svm/svm.c  |  1 +
 3 files changed, 19 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index ca779be22eea..37a857f28d14 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -827,6 +827,23 @@ void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v)
            sv->avic_cnt_kick);
 }
 
+void cf_check svm_avic_hvm_update_vlapic_mode(struct vcpu *v)
+{
+    const struct vlapic *vlapic = vcpu_vlapic(v);
+
+    if ( !svm_avic_vcpu_enabled(v) )
+        return;
+
+    if ( !vlapic_x2apic_mode(vlapic) )
+        return;
+
+    avic_domain_disable(v->domain);
+
+    gprintk(XENLOG_WARNING,
+            "%pv: AVIC: x2APIC mode is not supported; AVIC disabled\n",
+            v);
+}
+
 static void avic_domain_dump_stats(struct domain *d)
 {
     struct vcpu *v;
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index e40aa77264ad..61bfca7a9239 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -36,5 +36,6 @@ void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector);
 void cf_check svm_avic_hvm_dump_posted_intr(const struct vcpu *v);
 void cf_check svm_avic_hvm_debug_posted_intr(struct domain *d,
                                              unsigned int arg);
+void cf_check svm_avic_hvm_update_vlapic_mode(struct vcpu *v);
 
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 667e8b05eecc..77f8278c598b 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2525,6 +2525,7 @@ static void __init svm_avic_start(void)
     svm_function_table.deliver_posted_intr = svm_avic_hvm_deliver_posted_intr;
     svm_function_table.dump_posted_intr = svm_avic_hvm_dump_posted_intr;
     svm_function_table.debug_posted_intr = svm_avic_hvm_debug_posted_intr;
+    svm_function_table.update_vlapic_mode = svm_avic_hvm_update_vlapic_mode;
 
     svm_function_table.caps.virtual_intr_delivery = true;
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473249.1680942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNq-0002CZ-4X; Thu, 05 Nov 2026 01:35:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473249.1680942; Thu, 05 Nov 2026 01:35:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNp-0002BJ-EA; Thu, 05 Nov 2026 01:35:17 +0000
Received: by outflank-mailman (input) for mailman id 1473249;
 Thu, 05 Nov 2026 01:35:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNn-0001iC-Fi
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNm-001x47-SV
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:14 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd17-bab6-0a2a0a5309dd-0a2a4508a5ec-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:14 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd51-f659-0a2a45080019-94a39217caca-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:14 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mSps2567972
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:12 GMT
Received: from ch1pr05cu001.outbound.protection.outlook.com
 (mail-northcentralusazon11010046.outbound.protection.outlook.com
 [52.101.193.46])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb3g-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:12 +0000 (GMT)
Received: from BN0PR04CA0119.namprd04.prod.outlook.com (2603:10b6:408:ec::34)
 by PH9PR16MB087844.namprd16.prod.outlook.com (2603:10b6:510:418::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:35:08 +0000
Received: from MN1PEPF000793FB.namprd05.prod.outlook.com
 (2603:10b6:408:ec:cafe::5e) by BN0PR04CA0119.outlook.office365.com
 (2603:10b6:408:ec::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:08 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MN1PEPF000793FB.mail.protection.outlook.com (10.167.249.198) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:08 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mr833109156
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:07 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swayr-10
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:07 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNexkWXaqQa1OmNexYlM2; Thu, 05 Nov 2026 01:35:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=TID
	9m9slSC/X7gfNkK51xRN4bPBb6TjSoHkpoAhZQu4=; b=etXIn6NVUhQDxbhFALw
	YmgJJozMju+QH6duJTFvuSGIQUefnB1xHv0hv0xRLY+g2eivFBc1n174quZe9Suu
	bcqq5oVrfubXxmzqJ49gVyBfPnSL0LDSr0hsyR41eABtpW8qacHGtIO5STnagEur
	IoVlN/14Pe8v6XEJSDYUvE0n19DOGZLmzo2VxG6tMF9hW4ZWn+eamu1QX8M6rC4o
	apOXFANOnHPEt5s0e9Ygn7wJHPlD16m0bQMmCjxpXfod0HrKYPphp4Kspgms+djn
	8zwELPqKguuxbsFEPZg4nZDpBYXnmFIb1FX1NmWIjNB1ZtPvMyVluMlZO764cSEw
	WZA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hfXGVsK0QK+zOj0eM5gYb/djcrEZcvk7IqunWupE3D7aRhL1Rb23vcORo2fm2PIFVnPPqRR+Ma93BRdUrNvESHNJjcKmFblsTCkuAH5o5cZCznJw9KBWiBOmjabkzct0H4rzupePvIkVZS5XdcRvw1ejM45bV1J+DKBqxmusm3+oYPpDLLD2VSlOr1KapjcrJuPm0zvhEwRaSF8fa3YPQMITFTUIbp8WxWStJ2V0HF4x1ZIfI6pEZSC4/xRKI6jiTbWmBe6fh004IM4wHWgJpSCEdjAKFKlgSR8rlrRhmha0396Ox318IayICZusMoMr6oZ3jkH00XNfV6EV4BjVUw==
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=TID9m9slSC/X7gfNkK51xRN4bPBb6TjSoHkpoAhZQu4=;
 b=UodO4KEmW1migpj2cLMemhgUUaBBG9TuRJQ6vXL2h1Y0fPF4YMCBH7sh0gVvpTDTr2527LUAd+LnTkEE9CAHoOhD0nV9SgJ8hf0vlnv3qNZoLYrgaL1GUGCVtoyQe4E8k2tVjIOQrW+MQv63sZu4j6IIEIpRUM+WEl62sWmMtme/erX5a1nKYoxl5T56RYzCOUZB3uNgZw5kqzIMxkr+/NIaP4Q/CzYrXmBli1W0hvXTBSEbX1S4kpXiXwbfWEq8uLuACFfTviBNA5Uzlj49iKZbq9ohoggNJMEvP10y/Su6hUiIPFJc7eZOgfk1yK/VSkgtU6NWgK0qQta2mCOmTQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TID9m9slSC/X7gfNkK51xRN4bPBb6TjSoHkpoAhZQu4=;
 b=jGEQGzN8OZjay1djeDFziQrkhVfp3BoCK2XiLTt6wASf1fV8PcnJ2p6EpbmBfLvYP6qOP202kVkPPi/SlkR7zkbMm4liE20FqdkTeEWD4uPmEco4uY1BGUZvMmb86hx0hRFJW+fdq0F6/IsIOH5s5WY6FixwYRkkWvz27ZLyuiY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=TID9m9slSC/X7gfNkK51xRN4bPBb6TjSoHkpoAhZQu4=; b=
	D33nwO+cbfornE1g1riOSyfEbiJvAVji7bBHl6rGQrYO3p1d6WEke10FeeVzq42R
	9nta5DlpodYIIlFTQFo1uwhbRGKEyrah4/XiHTR8zV4Su4SFnSaE1IyxO0pDhhbg
	hgCrIQYSo5YpBa3YZBPehUrOI6XmzIKAVKs8FXPI/ll1Plcz3Ul/AABPU/rsrIXy
	m+8rufxDSNmDxA84VmReAAfyRsVPEAFYgYUw9tLYlwUBHLb/yixO8Kx1hyOAQAu1
	pfF/geG6x9vnuwaxRZzinO01T32ASEhXspFNDauEIX3ZVX2jl/N672BHk1GORHJ0
	3VlVDR/DAdMrSxgyOPbqbg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=TID9m9s
	lSC/X7gfNkK51xRN4bPBb6TjSoHkpoAhZQu4=; b=JEsDO8gy9vW0vaQ1O1z7Afb
	gfkLdsWy2lilm7UtxeGroJ/q19lZ7X8eGPrVn4OJjfFkXkfE4a3RGBfz2N9nU0/m
	nvC+pD0SjFl80cu5V4Aj9uU26HqQzYWWp7olEEthaDWUJEmP57sVQR/zW/fFgLI6
	hd7sxeDPDIvHSIYEziAb3wshGNK4Gw5smSbCtHF9t5IjwBcm4/ol92c6/C9++KWR
	SUWGjPncF+c7auUXR4KKvLaEnT6ZRKttXCB80X2oDRw0HiEcxuqPaq6T+/2aumPn
	VCJXN6angCfsPTLxie+8A9ovIdlFwScmN2lPxHUPZGLxFdrQikSsBbmYG9cINlg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNexkWXaqQa1OmNexYlM2
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 24/28] x86/hvm: avic: ensure SVM AVIC is disabled with nested guest
Date: Wed,  4 Nov 2026 17:33:41 -0800
Message-ID: <20261105013347.719392-25-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF000793FB:EE_|PH9PR16MB087844:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: f803c5a9-24a0-4854-6c6c-08df3add06a0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|82310400026|36860700016|261022075727099003|11063799006|56012099006|261021121427099003|261009223027099003|261028144727099003|261026140227099003|261102123227099003|261022105027099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	u8Ud374LLM3X7yaNkOBJLn4f2K372dC43ntbCY3+FahlbP8YSEKqySUWULoI8+dZEFnORODPhTeGLcerGZKjDTA4kWfa2aILD92tlidwhtI10zqwiAl6PxuOlmDVTFzvktnGNj4FwOFaCIDfXxXVgYvN0Yct1KJ1uBxt+qBvk69UQPq/B5QQ6I4eS2d5qIHvqqGXg/3AoXqlQYoYAmVkm6ofOhAdkx4oPJUyKBC0O/NMB/BlGnRWxLmYnpT1R4qsvTwrWu1FXIrYA6RYr3LzBJLtG+RMgeVbctRaxwWR6OI33abdJhogk3y0jGXZXxI9vT2kj4BLqZwzJA+pOSdYxFbY8NZvRWPT3RSZpGj/FUQ2gnASpDr6zg4Cyb0dLQUeyYPM+VRPhiH+QWlH2SBoWp/P7ShwEt51HXLOo1gU8u7xO1JzTl7EJdJwUr5VaWR9LiXXyhAGYoU5Spb7gHY0tv1oMvb3sJZS6BVluBaCQbERdsIhfdLSIUmhfGJgvTMV7DS4mwxr4FwDQVdMrAZLUCh9c+rtjnvf/h0NbAt4369DJaq0nzXyb+hE8a7wrFbrCTd6YWoyOGuY/VZzj52YjzoTQ9Gbq+jMNHwV6x4LnNcUXR5xEHxacEplC6qqJqghi71M9e+BhRACQTqSLtOBmnpoyesZPoOKxzLFWcFtTdoz073o+AMUHTAccIckRXyiRNGB3cu05kiDwrDhO79xOg==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(82310400026)(36860700016)(261022075727099003)(11063799006)(56012099006)(261021121427099003)(261009223027099003)(261028144727099003)(261026140227099003)(261102123227099003)(261022105027099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0YG2HBQzSZ1Al6OM+s9yZP631oM0PEB0XV4Baly/kaYXBc6sOl5Y7R20EHDDSBsUxUzf0cLL7tELZlHtBO6OE6cMUmOjEMqpLKFC7G6Q8QUf9KrV7ukTxvDjW3OufoltkHppAbEpq0KwSTri0Wz0k7Y626fkXfKKjVibknA2CA5mti7JWsJlxyIVZb2rlfo8rTXsHwdk+eFP1rVyeF71lTKhI95e90443OVdNu1ZHd3NV4IB0vDPxInYQMPWK727XSxhX+RXlS5MxY+s6/SEArQYshJeFK0I+XbvKBEruXK4X4tLQ6Aor2cFbEVlqW9ZMYBSRPSBlbrwRf8NjUtQmOhGdxvxF0W0jDMLY/Q2JXBJ/cjn3ptuVZpF+Q1C21SxM4gw2pUa/QJCNiYAjdVsknJU4yo8AqLNfpxrZFYea6MpmJ+JWvFRz0wZo24f0/+L
X-Exchange-RoutingPolicyChecked:
	QVeObkV2QivwosxHkvzFqQAuXfVCMNtUrGLdsubxkaV2gTf33mi3U/DxMn5oYK5fAe3n8wzHFN4h+GFYyQar85+KIeCmiiolISA0F/uXbSX1cLdZVKHKrZgCITgbwvptgx4tj8geBgsYn0UdoWatFn+gsVPKL4Ducz4k7CQ0yeoIsMTeuC7jmvTIFC/m/2Co0+h4RrdDqZ4iuxacGt83Ed8PXC8D2LXkHfpmT8mcZjioksNLPv2gavPEfN7k/Z5SLDQAqf9yEZVAYlmT8u5RJMDqGEZw00T0Hq3ZnH2DQ+FryM0lCHI0HsG63XofsPJ7IuKwqgwVtrbKY7XFvAlWPg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	u4XT3zLA5awHBXZseEZPVw0j0tbPJSbFeNZ4d+Gyd0ZDUxcvCpnW9UWlOxgvtfe1l8udWMPAcmabbdwntnduC1GxDlCVC4AQXKbpzp0ep6yck0kb2NALk8bH9sca3xzW6XUeKzh6WmFtVBl1Hpgl/lAEHOU0ZRlNgVYvoEph5IBVb5I1tNohHJkDlhiPFeRIA3HGqJZp1gE/oXptZIecsSPggUZZxnoj3oiFGviZkAzY/3MADwLXmBmIilXlmJNnJtwd8fDaiYbwP8oFQufab4amuMlk+t2injjRWUfR2QP+03bayTX4f29xNrQkuLE0fVVIt6fIrALqKXwKJ+mEeuxm8r/btFYrA5LpeDJeAMAOUbqUiGN5Dxpqr3G1u/6VoxFgfJt0Exu5g/qDtGj9DkQhrMaxjkk8Id6YqnlDMXwUIScodo6yW6NvVqJr3EzK6cd6jwT+jMeeIeq2ucwbMQ7Q/pLseq776dxXD6je5vb/Dmpvppd62mL122EBsvr2B4rEJEHCbKEKrsY9N227UQwsbkQE0sKspZBIBNe4DlCN4CuuJlWBZ40fl3X8XOvn67CfhF8myrDHLMoJr2yK7lqfW9eFI+y7bUbwG6DYTNB7Lrsc4gClXQpHZvyZU2IZxtCDNb329RLBCGchrF4gTw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:08.2255
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f803c5a9-24a0-4854-6c6c-08df3add06a0
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF000793FB.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH9PR16MB087844
X-Proofpoint-GUID: oGQYiwwe1Qv4fqW-RitbcpiyK6k3Ox_G
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX6tRb3zyQneHK
 oBzZoMlbdJDQIOuhaiq6mGC/0agDm8T1OcajNHayOHhjYiSyNQXw+ST9Q4NR47H/IJyvIpdt0sA
 nHGE8X4JFpTYi7GYHW3Gfvs+54gqEtTlA/HSF3ghJYrbARYJMyoa8EjI2AG39F0WfTx3zjjjJ9L
 KxRItPxjz9zADonq8DLzS0FXZ7eNKX1eEogc+kQJwrkq2kKCNcWK53CyrsIotF0Fgc5KWZUAx/Z
 H/VnWnYyFu9eAAHQs2jgoP353Fykgukrdye5+VIaJJqeRrqXWs+8DKPCjc8RESPB9uI0sSgm3+Z
 8Vfa4/VXUjL+ROLs0ozwqpGwdPaF/AVktGC9mS5G5+p+xou59MpTRotw9qy42NV3Tx7hEZF0WJn
 QxpUHREbhS3npq/wQMW0DZaY9LNT3AgPwk5XYtk+aUPWZ/9GfqYOi9ePX/xBcKUVtWJDe1BV8nk
 aQq6swb7RgqFUQq9YPQ==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd50 cx=c_pps
 a=imb72M7KABO0D7Cp285+Zw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=PhQ_d4hdkDVKxeSN50QA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: oGQYiwwe1Qv4fqW-RitbcpiyK6k3Ox_G
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX3kiFhynsj+dj
 M7QMTpHRGLRF+66OQlKkroXs/mLKK4+GrGsP0COXzrK5GgnW3P+j0KwGj3Vp2UVzAx531D2ANV4
 zhxFiXGmODiB4yS5EABWvmM5zHyuPtRPE0eih2aspdYkzM31fJTV
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-c1860d/1793842514-D477387B-5F0F9D40/0/0
X-purgate-type: clean
X-purgate-size: 1201

From: Denis Mukhin <dmukhin@ford.com>

AVIC in nested virtualization environment is not supported as of yet.

Ensure there will be no problems in any production environments if AVIC
got enabled in nested guest by short-circuiting logic in
svm_avic_create_vmcb().

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 37a857f28d14..e19489bd485c 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -4,6 +4,7 @@
  */
 
 #include <asm/hvm/emulate.h>
+#include <asm/hvm/nestedhvm.h>
 #include <asm/msr.h>
 #include <asm/p2m.h>
 #include <xen/param.h>
@@ -170,6 +171,14 @@ static bool avic_vcpu_supported(struct vcpu *v)
         return false;
     }
 
+    if ( nestedhvm_enabled(d) && nestedhvm_vcpu_in_guestmode(v) )
+    {
+        gprintk(XENLOG_WARNING,
+                "%pv: AVIC: nested guest is not supported\n",
+                v);
+        return false;
+    }
+
     id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
     if ( id > AVIC_MAX_PHYSICAL_ID )
     {
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473254.1680947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNr-0002W1-Bo; Thu, 05 Nov 2026 01:35:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473254.1680947; Thu, 05 Nov 2026 01:35:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNq-0002Ru-TS; Thu, 05 Nov 2026 01:35:18 +0000
Received: by outflank-mailman (input) for mailman id 1473254;
 Thu, 05 Nov 2026 01:35:16 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNo-0001w4-FS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNn-001x47-Rs
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:15 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd28-bab6-0a2a0a5309dd-0a2a450c8a0c-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:15 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd52-f479-0a2a450c0019-94a38ff154f4-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:15 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mssp226770
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:14 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010048.outbound.protection.outlook.com [52.101.61.48])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurbwy-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:13 +0000 (GMT)
Received: from BN9PR03CA0445.namprd03.prod.outlook.com (2603:10b6:408:113::30)
 by SA2PR16MB4108.namprd16.prod.outlook.com (2603:10b6:806:142::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:35:11 +0000
Received: from BN5PEPF0004698E.namprd02.prod.outlook.com
 (2603:10b6:408:113:cafe::9c) by BN9PR03CA0445.outlook.office365.com
 (2603:10b6:408:113::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:11 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN5PEPF0004698E.mail.protection.outlook.com (10.167.245.43) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:10 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nw2T2971351
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:09 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrm9-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:09 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNfxmbw6UazzOmNgx0wHI; Thu, 05 Nov 2026 01:35:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=5Fn
	4IgCzV0wLuko316bDEMgqGzHlTRCj+opPIQ8cwGQ=; b=Q7GTjDfuGAAxu4RT7Tu
	suprVMlEvJ5PKethmbCiYPOtsrsqyo37cCtsaTL+gujM3aDMJq7bgi3Or7hoq1Sx
	n3EFqy66e8nfJejmRIv1vInn4ouvt0Oh9lAh0dICeRKrPOaqA2ZviBEBy6cEp330
	K2kGotGtvy5XCrfcSBh5qOTAuTPKNJ+vfJFgH7ussCof7LFMJOTR9YYlploo9/pE
	8ASrT3Dyc3kVw0HI7kDTfbt5GHuPTTr30jawCuAmVJyJTPRh1diiyLD4TcNrCDxJ
	3xIOwiE+eZGRNuO9CvV4+16OpJF1ZzNprr88ZRFgcAjwFvv8bw3oP25lIWCJa4OO
	CbA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PWvAAoWn1RI5kmm0ajaocVFBcXPmkZMLV9jerCoUS+OCp1Hebzp5v7ODwDnXIBMmbDwux2fMj1/M5WwrZ8B6EgUBHE4joCXuRA0nSC6GUsFOOewckaxrsaZvU6dqoX5+xKIEiUKW6Q59Cx/OviZkdBzhtEzn2Vj9fCPgU+2sx+eGCDEjMr0F6wxmHMLu7fSsqNEVXPcOU8s+uGmu1ZXAKs9WMNT1NHUUP23wrnmxbpv+SD2J9oZv37Xw/Jgt+va4XbQwHD4Uf4TbFl415qV+t7AWUPnVDNkp9sNuANRkNtrYSEwTkZ49QtKDjwwTFgHvFkCNg29/nR3o+kNj9aXLcA==
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=5Fn4IgCzV0wLuko316bDEMgqGzHlTRCj+opPIQ8cwGQ=;
 b=wVK7UAuOHcBV7s0DIMBIwnPkiYqDNaMBEOkTvZwZntynVy77BfnTaOC1WkwURg8nIxt7ILCfgz2vUt4XN9JYA1dLUz1O0R3SvfQPADcd3AjLx29iC78Ib2v35/0+aiYJyff1eVn7jdo/AYVW7sh/585pcAeJC+Z0esSohlfL+Rh4ZWK6T5yF9um/P12M5oNfNkIM0HvicMglmxYsQIs/gZnVqC/+gMARmM1BQ90Wzq1uybakA6qOf28NYp4Uh/YbsEQES1/uxouRM2GCesVVhSmfhFO3KeI3O2J/mgNGE5kLdeXvxbSByFR0BjBUjt7JXuLqZlJbInoekP+nuKApXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5Fn4IgCzV0wLuko316bDEMgqGzHlTRCj+opPIQ8cwGQ=;
 b=KtjymthYSKLuHyDouFcovB+v86UbE3305d8N+6+bYj1sauMdpVRYio9ziUozDDECk41j+AQ46woWPt2TKSQS3jfDg3xz30Duv6bEQWqeiGlPYUZLLt7BsEHW/ZyP148CNVtk/9h/qWi2+xwzR9lqO/jPYihF7b2+WE3LuarJpeE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=5Fn4IgCzV0wLuko316bDEMgqGzHlTRCj+opPIQ8cwGQ=; b=
	bBl4c4rcjApURX2LsybC7qbkFkturXjo51A8uWhQB5J3LwJ6s1F3D/LgQcmsfhsl
	HGVNfdIR87LK1b/q3jLd/zKsVngIhvSRT/QR7u2S8vTrY88bixo5NiXpiWN1pRh4
	Tk5Wsesh06/FrfswjfU2/jI3i61CjjVw6duXDDbI5+0Bb2ZnmtdkbK0UYsuMntGe
	uqOlQ1CvLwmSlgUvH+jGMo1AS2Joc044m39T2Mt/7ir3dJrZzFEEHAGTelK+5g6u
	aHPSxsw4HmdiPvUyv/iQa/UVyqTOM67Omm9XMUo/DHWy+0X9NcNPG3QlcVP8jryw
	xq5igrsUtW/iCgJ/pEXGpQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=5Fn4IgC
	zV0wLuko316bDEMgqGzHlTRCj+opPIQ8cwGQ=; b=QdGQ2WZGsuFaoQFPX+TDORN
	eIumfJCsMfBJ4FSiYf3aL5f00SAgXM3+5z+i+gJ2DFgcmjoLHVMk06YxT2lEcHgl
	8hGIGRSQLcWqde5TlHPahGj8/kuc1bBj6ZEfgNSv3MJpml0yAPsLOxq/T1m8VNHG
	874LN4RHXyQZO6nnkFguUGLwDmdYqYAcs6hWtQZgILPapQZJyFnCCLfzpelJeNtB
	m3H6Yjrvwwn8aTEMy5mpgRVVrPB+cSeeLF//pObRGGBM40kX6f3LqHXKXgdhemve
	t/kDE7os01/AqsrUxT3xobgMes7kPWUpMb3vFPMHjCm0nLSeaClGRvSO0/0RxOA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNfxmbw6UazzOmNgx0wHI
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 25/28] x86/hvm: avic: account for AMD erratum 1235
Date: Wed,  4 Nov 2026 17:33:42 -0800
Message-ID: <20261105013347.719392-26-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN5PEPF0004698E:EE_|SA2PR16MB4108:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: a3b53f1f-96b5-4ab7-761e-08df3add0838
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|11063799006|56012099006|261009223027099003|261021121427099003|261022075727099003|261102123227099003|261026140227099003|261022105027099003|261028144727099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	AreewE9vTTqnaFgPwBv0Zc6ij+MpSUlqRKFL92csTg9Taj26FfxqHgwLoMNLTSWWpSLl1bG02buTAtDMj6oZHaBXQRtisbwvme+5xbuc8DGHVj1t9XBxs9+8kUBHrTv9IWLY0t5R+HxKLqqH1uxzpsNeYVrfZkufyJGDPGgSyT9SPEVaYGiKublXqOoCZY7LpIqFDQ+3SBziQo6LaDVxizJvkRN661J3HtW2XUfwfTtYQI5RkLjrw2yKA5CJ/5T67chKQ2R77DwHIEX+MHyNh3oh/yxD2mDF3p/Wav951TT6S+/rnzjYlU0G8FXhvYvFlNs9q006HWtDKRZ1F3Kg9Q/ZtHBbDbYgzGUSfsnOYYmRZ17dWORBWI/jshXNZjlM0trTUe6KzzIb52ZOi0koxKcANUfg/YsYXA2tEpgxUVKhpjEH+R2NFVcxPYIbvrUtlGTO6Qw/KDws+1V+YRMrTVh2zIdHy3qWxYIEjVXtM19CMYfeGeIrb9ObvixkCs9v/Sb5tm/tChYFKVjSC+l1Gefk8e2/ffWbMKvrYXEFO9ZsTvslAeKm9/IeKVAdx3oube9rRf7sHzJNUXjm7C33nW3tsRQ3DKjAeC5RN0OnJNht7w5+Zi+90BuHbKWVCGOzl7GxiLh/UeOmhTiz6No1b8fLlyxbf2BpEpjJ3JhfTyRsA8tNH9vtIlzUfGUdL5gJ5eXVQsUKcDHGS3/B/tSFoQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(11063799006)(56012099006)(261009223027099003)(261021121427099003)(261022075727099003)(261102123227099003)(261026140227099003)(261022105027099003)(261028144727099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GqJK81dkWLrSYYWj7Rjq/x9kgafgExSaS+9QlAkDt6ISoCtcPGqMlHhc8jEA633AeT1KdvvGnWYqTqizw0EkLkRZD0wrbu10EmZ3efFb3LXiC1iehxvo/0FkTTRzTqNU3h8PnIsiZ4PejKz+Cg2IUfa4sthoDW63dk5+4jL1tf4bThcI5xG5C+DqAdOR7d29K2hdyqp9o1clsCY35pbaTFe0wNC5uM4s2IKUEbo7CUkFCACg/gU04jHagDUuamJOHX2IQUVlqB8/EDnFAtd3vNCzj3m8gYFYBKa9FbLEz3WMfL/5Iejpy7+mLeKl67ybOqjunBmXYjNby81EGVLO3j9I+BDndvNytjMG8xRCJlXs0zwW/8AwkuQU42vrc5+X4lzDNOMQmTENmbbuWxf0qaKZBzAp31kx9MRS5asOCH3dKa4Ig/gRYM8IkN6RvMyr
X-Exchange-RoutingPolicyChecked:
	l5lJf0l505IUueLpDw3goGq3SY18zrYgDjKZZSIi7KnKs0VS+0WauyGVCw1VVRSjU5zY033VsQOwQzb/Ph5I4CCsLHLQLcHXT7rsS7zjaRX1eAuXw5sgNP1Z5yIV2I3XwCRRtYicGriEyxpIsILLyUaZ/E0qrsYSZYivavIHkDbCVitKEA9J7E2pKfA6F92gyryK3881VyZ/Cmz5VGbsI+Ch5uMdZ3PB7qMrHI1OGgGaWxMLgLmsxEzIqRr/r9yOOBD1fKHsYtK1hOPUxCN1u3n/QZAkRxNRoAPgGrN4Il4UHQ8jmXbwHmge06T4r80xrKqHbeRjaAqTg/d/izoBww==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	FA+AGWWmo3y9f/3t59+dFLlEa9NttpaSEf3NXR7RsHU3sHL+arz7Os6dBiYE/Dw5xQ7JaWSt+J7CJ7ZFozDwSIYXV9YfOrpNF0SZzBnvtJpFQU+Z9KXz3URUIEmXTCZ/22XvxrcDfHZjWlXjTuTfI8LB9lIfySAZfEAR71OgqtXysNL6unqH/q15frIOZnRd8zCoTfidiDaVj7M3HTCEm0XY5bFElRLGaUxCKb/rLvWWATe1LsIpk+aOBTTGVBtHQLsDJ6GgXSutmR8SvgUuA7tGWBnBO2xmgfqFw49EhSHdoq+2FthEf5JCg5NJGbIi7f1NbTv6eCCQOhbxrB9mMdj3y0ElLXLoKkN+xE5BFN01XOKjMtY2nlSxdZlhlubCQ+IEujc6eXvcQDGeJUoCT8FhQE+onEckEEaKmQ8Iz70hN2HYuKilXSY9N18OFyOaDR/QEMU+G7uoHUPj5xoyvXGcZ/PPoPhYfR3HFetzCDqjbFKI3Xc1nWuaFAg4WAgdgfmBPBYrbsER+n3KFXfNGhFZDB55DG9wCRYmfnySllvH8P8xYn7HsLbECgWO8BJ50xk4kY7w25W9MC50HkfZxZYCb7YATEpz+biHgS9EaiAyRZdVQOcW6fH72FoRBVj9tx/Yq+z0nkHcBKabmXCngQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:10.6841
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a3b53f1f-96b5-4ab7-761e-08df3add0838
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN5PEPF0004698E.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR16MB4108
X-Proofpoint-GUID: 4zEkgKtDU8pg4kA_zy4npj4WOQnfdAXd
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzyusaY6GqjFP
 FdzIvSz6NK3FMJ51pB2+Wr0/3DQkwBjAYFiOPtuAUyAOM7Uxy1PMwZwBO9plE7o14ZC4FtUvkpL
 KGlN7cJahRxKJLnOrNvLwwDLumb7Otp+xel4SHoQIZiajat4Dt0d
X-Proofpoint-ORIG-GUID: 4zEkgKtDU8pg4kA_zy4npj4WOQnfdAXd
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX5oDrmCDSnx6Q
 /wC6BijOddMN8oj2MH/9GI9/WDOPZkqGaQRmdRPAGbzheG2or9hlRqA8HCjIjjG1vBMzC48qxZM
 jN5YL3kmAYA0/BEd1wUh9Q2DfbpAHLS/XaVdnpOCzqAjAkfxoszywaRS6mkIm6wISeHZgBUEKle
 m0r07PmZMuB4yWcGSXh+TQJYFlztyErIyE5EVA+mSnGZKIuCR6UDWHQcQiEIXwhFRMgVcTA9KkS
 ybpCC3+qCm4zpMXJ8Q7lqDmkNkcssUqXfXTj1IC//EEK122vV+7nqqulvqcAc5DnIY5sunnjAvN
 KpZ4wOBBEMC0O4XC3xKM2UaRLwIXwxmM4xTO3M0KnzL2w6vlkmmzv5NhrB3pULkX6UEaJeb6Ixl
 7BxBuBVoiAS2oYx6kSNDPWGHXjRu3uV5ql9L61L0hdGZYXz16DmsmwdRITuKnHWmTKjVZpmSAhd
 CDrLIMY3Ha7f8kYPwGw==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdd51 cx=c_pps
 a=MmwiYf2CWIeG5bfvH5NISQ==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=mm34HD63QLQtMxViUbgA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-d25034/1793842515-01CC3A5B-F08E628B/0/0
X-purgate-type: clean
X-purgate-size: 1533

From: Denis Mukhin <dmukhin@ford.com>

Disable IPI virtualization for AMD Family 17h (Zen1 and Zen2) and
Hygon Family 18h (derived from AMD Zen1) CPUs due to erratum 1235,
which results in missed VM-Exits on the sender and thus missed wake
events for blocking vCPUs due to the CPU failing to see a software
update to clear 'IsRunning' bit.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/svm.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 77f8278c598b..fd06ccfaab3f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2536,6 +2536,21 @@ static void __init svm_avic_start(void)
      * x2APIC to guests when SVM AVIC is enabled.
      */
     svm_function_table.caps.x2apic = false;
+
+    /*
+     * Disable IPI virtualization for AMD Family 17h (Zen1 and Zen2) and
+     * Hygon Family 18h (derived from AMD Zen1) CPUs due to erratum 1235,
+     * which results in missed VM-Exits on the sender and thus missed wake
+     * events for blocking vCPUs due to the CPU failing to see a software
+     * update to clear 'IsRunning' bit.
+     */
+    if ( boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18 )
+    {
+        svm_avic_features &= ~AVIC_HW_ISRUNNING;
+
+        printk(XENLOG_WARNING
+               "SVM: AVIC IPI acceleration disabled (erratum 1235)\n");
+    }
 }
 
 const struct hvm_function_table * __init start_svm(void)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473258.1680952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNs-0002es-Ej; Thu, 05 Nov 2026 01:35:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473258.1680952; Thu, 05 Nov 2026 01:35:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNs-0002cV-3b; Thu, 05 Nov 2026 01:35:20 +0000
Received: by outflank-mailman (input) for mailman id 1473258;
 Thu, 05 Nov 2026 01:35:18 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNq-0002Dp-0V
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNp-00G6d6-Cn
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:17 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd50-8faa-0a2a0a5109dd-0a2a450ba0fe-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:17 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd53-b7e8-0a2a450b0019-94a39217e386-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:17 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mYQp1469774
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:15 GMT
Received: from ph8pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11012034.outbound.protection.outlook.com [40.107.209.34])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk511mb-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:14 +0000 (GMT)
Received: from BN9PR03CA0450.namprd03.prod.outlook.com (2603:10b6:408:113::35)
 by SA1PR16MB6977.namprd16.prod.outlook.com (2603:10b6:806:4b8::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:35:12 +0000
Received: from BN2PEPF0000A993.namprd04.prod.outlook.com
 (2603:10b6:408:113:cafe::8e) by BN9PR03CA0450.outlook.office365.com
 (2603:10b6:408:113::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:11 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 BN2PEPF0000A993.mail.protection.outlook.com (10.167.248.135) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:11 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mwLw3092205
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:11 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhgy-4
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:10 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNhxcKituKemOmNixhKUC; Thu, 05 Nov 2026 01:35:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=TYM
	ocsRux56pcfeS2Q+gOlkmmV23pRJGzYNFKN2hxR8=; b=sUQuy3GK29cevPDL67O
	gnIVxWqvWwNqb+BBCvFQomEay1p+YVsqw2lmJXAGvjmWYtvTyEL8h11MWGOk4Aw5
	EdWpqOMprB3CvnPrAorfvql/L4qWdcj3MgS73ZF9OUI+bN+MByXDd9tKhhIviQyQ
	KB1KPaeMROlZm4EM5YnuafbE0fDsotiTrQLbZ7Xhl2OnFuTn90juUFuzXybDV04E
	EYf9he1HxWvyp6DhUaElpoaA5U0d84xXeoQqpj68XzpkZ+m9CYjkvrBYxLhkVq29
	6rmK/a252AYjzjI/xUkz+lqM7HBodCwtZiE+ionSxzddTY6fjs1X4HyyOYdq+ndn
	8EA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=g2UG5NCll6yirxJNEgOtM9c30RRgGZmruJEAgDpLIH7exQKSvTo0dmZoxwAbPqMrzz3DTQYfidyHEdkO3SrBVPT20GxmJJkDgXz5x2s4IwzZr5DvrPHkO2NER1QclPTBxj86oApM3Q3iRBWBGUS2aGtGEYD2OAwxkC+fqUX1P1Aish4Yyi7QobgmAQJkSnb6DfCp5+V4t9SapsymvZ+UsqnwXaoVMMSYnPhRKEWhfWOXlIufa0Sl2wA3UHWM2nEOUGyPnvkswV050iqh/9kbdCHjocfM7szKEWppxCcsxgwc+iRqMeMX3yiSEQ3R7hto99DKsvPyVRX+ajtPBZ8PpQ==
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=TYMocsRux56pcfeS2Q+gOlkmmV23pRJGzYNFKN2hxR8=;
 b=fkwjDicHCakl0KfVBW1f6gg03iknaIbjdvblPgBP56wy8RbCcjmrqSAK99Vr/Umx6+8KB0u3fRFopgJRwMOcUheGgptR/Cc1YkHWcfNZSZGaVuDyqqUZuleAvfGODrLEMWffqDzrMyOF+dA+ymeTDEA0jgj9+RTmvzbZBdM9g6MlLgX6mevgDx3y1GV5lRG/qnfBcb0tKAorChonME+yYi/qdSiMKUms0QQSI0M2K+CVBlCaMqf8xqer4esKTIlBkPNYcQKgzo+BbRSIGMGyXKYPXJZ5dKgtxY3htFkp5F2qxBPfyig3pbz0eWSi5TVTVS+x+xvsMRAroVB6AyNpAg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TYMocsRux56pcfeS2Q+gOlkmmV23pRJGzYNFKN2hxR8=;
 b=Fpf9hdPOz72/qi4rMeQsQD24rYcKhkMe5SlbZabcC/5VWkNH0OZ6mV9yQW5x9Ym/RnkZtcD7h3parwDRyoppVvvU2wK4Evku3Oh8p+R6EWUG1OHAFRNJpwRzAdXW60R6Mh54ybp1LllL3G/jpKLhU2/i86rzqElRZxyQGLq/JeA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=TYMocsRux56pcfeS2Q+gOlkmmV23pRJGzYNFKN2hxR8=; b=
	mHyEQT9SuKOFDv8d4iFVZ7WMyw/DVwehh0AiPgfwAsHqP0RALIta8wTSWBAesMY5
	XWvHcbHvRppMtrQMMzeHtkBVBFmp1OjEo4tv7QMb8aHVlzh7RY5c+l2P9gVROhNS
	fFIt9tjzjWjPtt8XKYoignd4N9GeMlcRUoOHn8oS7w04h4TU75HzbqfaxNXGiWvL
	AazzWUOw5CD3L22GQBPMwzP2Kfc0VR6TLZh3TKoaQctqzs7sqq9tnacq+j3hDjrM
	U0gnR7/qcX/PXEhC3yBdw885ouzmfFC27qKnT9NzEAxkOnI65KRN7cB2kZxVc4wm
	R7kRhU/hz239bYkCiLk9Jg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=TYMocsR
	ux56pcfeS2Q+gOlkmmV23pRJGzYNFKN2hxR8=; b=JcHyDcEfqtr/lr6dvf32bEh
	BXcVkqMxhg408gjuHzdZbfqplFNlktDbEo6jVGRTvj3x2UZ7k+0omdhp1/gcBMeN
	53DrTGfPXjD0oOuX25EI9DAhph4umXQU5rLJEctuGUrDx0zNIsOKnNv44szGl0wN
	nVME7li6kCvtOmBaPg2rY/VlpSxLHWXxpxVPqvqIHjZEsAQN8HwdjF+GVYQv7+RF
	wC+vlMXxw9OOpUvXWfKmlut7e77sy/PJ0mTRaCikhISbfPV2vsztT/WbucGkJ3r/
	XZN9N4AHizUqZBaFfwcKoXM9PtDLAFS6AM+Q0g+74wmE4mon0A0PTQV0MHLOs8A=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNhxcKituKemOmNixhKUC
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 26/28] docs: add coverage for svm_avic=
Date: Wed,  4 Nov 2026 17:33:43 -0800
Message-ID: <20261105013347.719392-27-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF0000A993:EE_|SA1PR16MB6977:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 3fdce89e-044e-4e4e-9dc5-08df3add08c1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|6133799003|10067099003|18002099003|22082099003|3023799007|11063799006|261022105027099003|261028144727099003|261026140227099003|261026121527099003|261022075727099003|261102123227099003|261021121427099003|261021123027099003|261009223027099003|56012099006;
X-Microsoft-Antispam-Message-Info:
	zOs7gQT4W/CnsfJkGXlPIferq2atQQzdr0Smku1dAeml8JxH0A4WyQmTsq0PLZiB8lbe708HL5zT5nHpwptSunx5n8elTkN81s12ohppHtNRHMzviIXFTvP5a0+GuNIHACr1nzV/YZrt/bDV1Jd6534mJongiMcGceEiF1daPLrfcL8pqCrqRTHZInqu+uOzjpah4saOqWMNlJHu2eqPl5KNhmB822wDY1YnOGXQAHtioxOsMvpRYyZyAB8TaqxgllyMJIHGeNDV3W+8NNxaXuZk2tbLCXQYKNFcQwepsUAilUHhCOjJ/qGVYZVMqwCTDziYVUNnKF/nfThziMFWqlPLDuApLBeF8eeAUArY2Be1YbIariDLB/951fXNZFd5S4YeCipO72ZGGw9V0Icgbn0eU1NOFNZLtLKNVtwz19Vvut5NOxYU9j+jhKGDyiCXnhKTTtvGbmSARRW53YESPh+XoptmV5Ko8AXsaXZzA79oGMiVPnXYvbqeFHSxlbKYE6ZjIgtp7R6ghfAmk35ecRiwO7Fbh3DqgbID6ecc7G39xOex2z5jm4oBT8i5ns/fAQg/wXbBTCTxbJ9C8O26PS2q581b6nJNFkka0OFamg4Xky1h6X20jMpnB2/S1naKFb4/rSWiBQAacSMOZ/S6noN1xoeM9aLXebowJdvdqyxoplOovN3jO0sMR7PdQ8f7QUh0oolv/yws7MXn4qwpFg==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(18002099003)(22082099003)(3023799007)(11063799006)(261022105027099003)(261028144727099003)(261026140227099003)(261026121527099003)(261022075727099003)(261102123227099003)(261021121427099003)(261021123027099003)(261009223027099003)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	cuyzh4pyNokuNW80DS5c1z7YO22t5cfbJ7SzEDb60ThpIzBIQqCz9ImxmClt073C7EuGQvNzxkXooayZnAz5FC9Dlhqupea40Hz4V63YeeaapBVqVM4EpFjuDb5tzMwSLpfshbs/5nc0S06mGvjXPRUWo+cTFd1I2D4bcCzK1S1Cihi94tuLip1lfMF0YBACDSMc7R1yFyy5tBFcQb+RiH86BxL1yeXD/eLqctWgppLqBQxN77AewZWmiYTozTAaID8jPPq1zIel93xpRoHcCD/1vxdkWqNBkUR0mZYmZ/FhCn4jObjov53vLap2NAvNW8z6XBc8Iqb9AWB+Oc5WjiDXGLua+TcQEJX3LB70nHPQcYwAXO99hSDTaWQ3N/9j3QmKI8CQXGU0ulaY0CqbWTDeaOrlZGbTlK7ZdA8/uMEOdz/a9To4rX0pCx+UGTFY
X-Exchange-RoutingPolicyChecked:
	tgBKwPw86KhenSzjJOs21bPDItBdJzX/iAUNnskxq+071FhLNJ28EgvxdUERmdkG4Lb2k9gbzPyX3/e9oO/ZILwym31shWFUf2alqrPv4Bs1BQ8fuQe43i2UUZEKdpKesoXPiyYdc+FpwNUdTV7JSb8cTwXyslU4MWs99rKK0DumR61lIb6CindzUEIwkJ8kWkR/9K1+aA1HLAHKqELMlXJ7vrUtFSTRV+HCgwLJbUBeV41NFOhulu3l58ylNX9TjvTk+FiNoWr5K60zN7ggwPsa2/4p5gebgGRx62pyqtqmLQRjQkUUGgcpAHKNZSHFIGHwXT6KaI5AcnxugeVryQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	WFwJyY9yYgoVmtC8SyZD+YKBqAqFKRzUNL5q+zhV2i6oNKgcAHWQtNNn1wnEG3xez+iwL2aYLWLUfDFqP9ti4FB9IZ3+co3jLYfAT54Hls26Q1nzhyUTFM69QyO4fBsMxlK4FrleW266tvFi/Y9yRotFxQB2g1bhyx2v6am2Te6/r+6rw4sQrocHZHW5vZ/oTpzjnMR44mlrd94hAgsrgLzSes1DVsfQQiq79p5iJ204+CEgPk2vEuyMd3YVUWE+/pU88Ia9FWFjNnVqNchhr1Fv3p5JKfTHmQcL4caY/OrFac8GnDR3Fuv48tIaPCi9WLGxeb9gxlAb0fusmi0eXen31Yl/Q9cgdeGeQZR8UF1MR6eCoVhrFN8k1zaPtg5yjP+lOyXHYP89ugjR+TvN4JFyiB6UMTBx6YGiFz9h5K+Rf10Tot4rBqJcI0g5Mhs3NWYQbLR1C3KZkD5cg+QjqNKnJ7WCw0yfTA3nHSiG4hDC+AFMlCynmxVo2nw0q5HGNwBU4Ul7kWOBud+yW5h0jde3i6CLfndt+r/Kr3xrb/cfZDLgjFlnSfnLoZMYEiYNYwsH2PWwxRQ/izY+elRTAUSW8AMX2CnCGNaSg9cNVWbDEamR3ZnPjOm3aR6Uco+JsSJnr0qqAmqpFwrKkwiD2A==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:11.7977
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3fdce89e-044e-4e4e-9dc5-08df3add08c1
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN2PEPF0000A993.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB6977
X-Proofpoint-GUID: M1cMgPAUFa5vT9rngEbpFatR1TjZs_hg
X-Proofpoint-ORIG-GUID: M1cMgPAUFa5vT9rngEbpFatR1TjZs_hg
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXwIiqHXj+2Iw/
 O7dOil0WJkPL1yQxUgy1kVDAkHktTDCny64pw3wmK500OGDacJI4xKvuKVdh7ZsPirZSkQZs2Np
 MsG6zSu1N+OeGfjfvo+WgqPXA7fjthYXY6UUJv+ElIottDJnSN/J
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX5+Uc23RnQA4P
 RmPv15nfKc7s7Pk4iVx5Q6DuYD7Yb12lZximyLgb2zPr6l4Z0xNwDMN6JfqDByyiDnfPqjLKPU/
 dVYdvGtiIw/Ghm6CNBxY1rYYovJuX1N4Y6StUvuqTEGUnU3oemYM7Kbg9NKT//jfnsDVb+B3sUn
 VM3OuYRpaL3W24Pn+JSvp3JgZAU8f+boVI29FdwRFIte6Ou4Tequ1KKRtAvi1GJlD800skPZUGY
 F3vJR+NAFp7Vc8kfv52VXlV+eHHv6pThhe8KWZQvOLV6t5XB8b8phVRrYdHuPrMZ4npW2MLCnuf
 JFxrb8raQVyOK2Sqc8lAccBn8AMWG1/WI1oxr7fhEsyiygcVtY3ev73J1BUrFbExyKmjztcgH6o
 zc6dnX4k9gwqDV7/bA3db2eEQO2CXL6EmGcEwIXEpXmvI9+m9uwB7w0jbaFreAkRxvJ2Lab8tv8
 TOjoHORTMGxvpUjVdmw==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebdd52 cx=c_pps
 a=p5SqRtR3VJW1kgksvcX22A==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=An-mqNOh_l-qzLSVOUUA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-42698a/1793842517-AB8D19EA-42F95C9E/0/0
X-purgate-type: clean
X-purgate-size: 2133

From: Denis Mukhin <dmukhin@ford.com>

Document new command line switch to enable/disable SVM AVIC driver
in the hypervisor.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 docs/misc/xen-command-line.pandoc | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index a6f08463d177..e810f8836fe7 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1623,7 +1623,7 @@ boolean (e.g. `iommu=no`) can override this and leave the IOMMUs disabled.
     This option depends on `intremap`, and is disabled by default due to some
     corner cases in the implementation which have yet to be resolved.
 
-    This option is only valid on x86, and only builds of Xen with HVM support.
+    This option is only valid on Intel x86, and only builds of Xen with HVM support.
 
 *   The `crash-disable` boolean controls disabling IOMMU functionality (DMAR/IR/QI)
     before switching to a crash kernel. This option is inactive by default and
@@ -2673,6 +2673,27 @@ On Sappire and Emerald Rapids CPUs with May 2025 microcode or later, the
 `ibpb-alt=` option can be used to switch to the alternative mitigation for
 Intel SA-00982.  Intel suggest that some workloads will benefit from this.
 
+### svm_avic (x86)
+> `= true | false | nodoorbell`
+
+This option configures Advanced Virtual Interrupt Controller (AVIC), which
+is an extension of AMD Secure Virtual Machine (SVM) to virtualize local APIC
+for guest VM.
+
+This parameter is experimental and for expert configuration only.
+
+Xen has mitigatations for the following AVIC hardware flaws:
+
+ * AMD Erratum 1235. A hardware flaw affecting certain AMD Family 17h and
+   Hygon Family 18h processors where the CPU hardware reads a stale
+   `IsRunning=1` bit during Interrupt Control Register (ICR) write emulation.
+
+Limitations:
+
+ * AVIC in x2APIC mode is not supported.
+
+ * AVIC in nested virtualization setup is not supported.
+
 ### sync_console
 > `= <boolean>`
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473267.1680972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNw-0003XN-9v; Thu, 05 Nov 2026 01:35:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473267.1680972; Thu, 05 Nov 2026 01:35:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmNv-0003W5-Vk; Thu, 05 Nov 2026 01:35:23 +0000
Received: by outflank-mailman (input) for mailman id 1473267;
 Thu, 05 Nov 2026 01:35:21 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmNt-0002r1-Cy
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmNs-00G6d6-Ox
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:20 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd50-8faa-0a2a0a5109dd-0a2a450ba0fe-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:20 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd57-b7e8-0a2a450b0019-94a38ff18596-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:20 +0100
Received: from pps.filterd (m0367129.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n3kW891327
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:19 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010003.outbound.protection.outlook.com [52.101.61.3])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hr99fkx66-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:18 +0000 (GMT)
Received: from MW4PR03CA0349.namprd03.prod.outlook.com (2603:10b6:303:dc::24)
 by IA2PR16MB6450.namprd16.prod.outlook.com (2603:10b6:208:4b5::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:35:16 +0000
Received: from MWH0EPF000D8952.namprd05.prod.outlook.com
 (2603:10b6:303:dc:cafe::95) by MW4PR03CA0349.outlook.office365.com
 (2603:10b6:303:dc::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:35:15 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MWH0EPF000D8952.mail.protection.outlook.com (10.167.249.218) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:35:15 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mM3K3108343
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:35:14 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb03-4
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:35:14 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmNjxjTfWf5COOmNkxlP9d; Thu, 05 Nov 2026 01:35:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=qOs
	JRjyoDQvTbvcH6l7zxEClwnEuff0f3kYC5ZzqB5o=; b=nTjDpRcsvmErmw/Fkky
	peUsxVgO8YUJBflteWCSL+R9kQArZdMcqgPnNve1qHSz7rehxY23oKiKRUqHiXX1
	0q2jp9ugJYfHuLSU7IJAaWhHpTf+bWgHgweRULdVdN/m1/vv+75QjQvriBBJg6dP
	o8J9xunZ+VbBvWP/MqHOyOobSW4cGp8qzUjzaN6tGCLw3dPiMVRbc0dlepcwCSZu
	kx1yHQmoKfDnX8ZDy/kenryRCGv1J9vKvAPcsRjZQV3+1dtuchzhRD0jTjMdrrpX
	5mF1OqZ4B9/uZn3ewJdQ9C4zMh7SFKsApEM83kBZEXLx3oBMaR9sT0wHsiqqtYVx
	CoA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BLk86YELZ8917nLMLUuG3LbDdyoB8iXkimCYHPqkVQ+R6aI0kGMpxWhiJSi8/STbWyog6wpLEvpo9P4pBBnru8Gc+2CAg+nvZJe0NXN7cpyunyJQv/yaazmjgHfojAqSlBxh621X4DKkD5pu2+uDQa1xD5czQ4pR2tVhFgDbZepI7C5HJnSdBUklBWyWsSmVe1Xxg5+2/1ZMDNgoq4O9ysjtkHqAV8yfLBrDc8JXOi8isPV9SZAcFsdlOC635y7p8cqmZxg4wPbXCXihxKM21aG0Es8Dm9NwFwir8D4SmLVkMccERMlB7TKvlHTW1bMlbTgx1YJxc451FbZzesHkPQ==
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=qOsJRjyoDQvTbvcH6l7zxEClwnEuff0f3kYC5ZzqB5o=;
 b=inahtb92IkcpRKSzGkgy80djss6vPAyuIZ6B11StVcXVyYwBkElyy8mI97EuTsxCfdHo5NNlxRR/8IDDdBaGe+ZWXmkPjDFFoTauEE9knyGwMEpRqJ4sR48/Sa8Ky6/UgJgVO59tDKwjs6xxZg0NtvcpfZZdf/65+FssSNXYEDxlBL69DtI6hevOti+DJaT+P48nK3VGO4Oxsr/WOxGkAhc643wutgE+gN058BMDXSxu2l34cfSPO/mwc5RECMF4O22QafX7rdksaafdxneVxul54C64t1bOtMfIfPUl/dsuOqP7gtnSX3Ph+aYXZwe0OSsPx/yGEZDdSFJufWNRSQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qOsJRjyoDQvTbvcH6l7zxEClwnEuff0f3kYC5ZzqB5o=;
 b=lq4Xed6LegmkAeEemHuc6B+FS0hYiOSlm8SSYpG7dBsxubwdqdJ3WhrxkN2cgf0bUwaw5vsx6YguZ1wAdofPAG4kkXFQFvlSytQ51QNPXI5vsSnrIedt0JGzeoMqrtuwXOh7gsHn8tmSgTulUiDmTOucdZsJyfwTZWuxGNYbifc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=qOsJRjyoDQvTbvcH6l7zxEClwnEuff0f3kYC5ZzqB5o=; b=
	glYqaB/k02mM8btyH77b8quWiXXSX9bSyGy9U/v8NumopMGOn37wSE0EboWJixpU
	VcLGlJycaRbTdGCU6AWaQnqwNEQI/srJ4kmqDh+apMsEF2x/soJgw/uYstz1HERM
	aVPZjojgsPmUK9HHUgKOG48bt3nJBlw3f9du9qSVD3mP2iZ6u1U3Xow2Y93Maiid
	VdS30+UU9vNP3DH+YoA053+9qo1qvTNtwspbCRbcC7j/Wc8O16NFmpkSexDY6oTf
	rCQPL5Mzakommu9ntcpjdv9xw7DOdk4do+10Daawoyv2MIDL7lGvXc5FhcTyxp20
	wpEuV6YUQ2ecaF9ONAZk7w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=qOsJRjy
	oDQvTbvcH6l7zxEClwnEuff0f3kYC5ZzqB5o=; b=RINZk+XqgyF0kROSQskOj6I
	LLRo8pmro7z9aJ71UKiw6SSyzM/llY2P7xgktGa2nFcbf6n5hyQRJNHQVIF3y4i9
	AyVIXPrzv/VlwS86zVQLwZ68y2Xa/x2FaE2ogDBwGtZx3mSu7ad5Jlz+b9eiOfVs
	szGrCU31z7v18VRVKiW91jhEWt/yH8TkVplzsanGwQkxnUvHxJqS5F97V1Y1KY5E
	K71dlcSmh9lRcSy90xn57yIl7UaqoTU2b8OqahETA93qyKXLxa2pL9QQ8CuuvpOi
	ZH0wMbqFHZpusZ5EcVIzjqUJlQrV/xb0n1SZxBqb4XIw0eetSM7rJyvLNsthNEQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNjxjTfWf5COOmNkxlP9d
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 27/28] CHANGELOG.md: add note on initial SVM AVIC support
Date: Wed,  4 Nov 2026 17:33:44 -0800
Message-ID: <20261105013347.719392-28-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000D8952:EE_|IA2PR16MB6450:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: a13d5a9b-10cc-4791-769a-08df3add0ae4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|36860700016|82310400026|11063799006|56012099006|261021121427099003|261022105027099003|261009223027099003|261102123227099003|261026121527099003|261026140227099003|261028144727099003|10067099003|18002099003|22082099003|13003099007;
X-Microsoft-Antispam-Message-Info:
	gbDXFJL6Q0SKSXpQdEnWwrg/HufYP0SHYvfugKZWgBRCp4BtpfpGtwZG/X0oTla1FQnwhJ8Fqa0pJxdqxqraWa8NbVBj+le2CK+cs49ZxjN2VkX3zTPSu/AlLjtyXLf+vz8Wzgi/HIMwQotlRSmnQv8LdPSEGg938fn9WGJnyOEJULQ3gpw4W9J7vmLSmliIB2VEnAGe2LUbazL/cw1xLBUnL1JnEWcGthdgvm5DkLgsVEyu+tkeCfR/Y+uAczIGXLbOn0Ht8bWkg/lTonFJoOpCjG8xY0bvKt1iMvPv8oMulNYII7GRY5A51lU/nUQJCLSr9AENlqjInfZ9K23EIT9N6p8vhMvYzg6Ft45ebWdVY9jABA5fkTgbvsQQ+D/4qlRMi9rRYCHlLNSehyLx72mISk9pfcgTch8KkkjdaO0QCjS1ZEcSWZZMlPCSJTwMU5asZFepJG7rxly87gjFew4qxklZPT8QDYDjRGX+Ow3qW5/HC8uC+OsNu6ETSiRGEv6yYEBQecxoEfXv7I1Iu6ERKoZg9u3bzFkii8JVsh1Duwmkywm4PzRKmv91u2fobqPyga04nfoXqMXvkH1VCxGqpLjELf2mPoHCRf2k+fmAFpzQN+hch2KfmqLOe1wcQdswZzQqXx1mhlXL1T3ouQWc07Btb4UChqOhmv3k6N4=
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(36860700016)(82310400026)(11063799006)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026121527099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	VfKBbbVrlWkMs+t+WSlYvdYk1JZt98T8bKBBw3X+1ul3suPOEXyM4R+d7LXeUGCYXBJPwJTdzHX0WC1n6oAn8RZoMD6OkcVezjA4907JXAPhBeiEdg+7syobE0e7ICrhVvbTqKuMn79xBmJp9mxbfnnjA4zrvKEYR+s23M2MVDyYAPgwTILNImddxe4UptNb5sciUC91Hl6MBigd993dFZk8i33oQpthpueqGCzJpgq4AKx/nFizsOtVyBOwVjBLL7hX68rlRHoyfLwhhenDtISkr2oRSNZkdYq/Z4aH7KUTVui0HHbyZ341xCRvBMsiisyx3qNgexAoEOvUMVnwHa5jQOkfx3CNVSViSXtah7Be+t/5d7pe+8NZlxMmqbNZa2LaTBVkb7C2BXLS9Nf3S6yBkCq+upzeMGHanZS0JiYn35Bp48IOy1ftHyYyTuB0
X-Exchange-RoutingPolicyChecked:
	FHZcIaJWG66pKtNSxLjT+YVIGXurYhX3nuDVyZ9D3ewrBwkJeMJ7v4ENXjkH4zv0DA5OVGTDqtlldoYmLRiVLKVh9SqiTqTXMqK/3u0W6KsFO7SmlmNIPpHFlK4dZmdDlnN9ngdq6/2z6BPz/Xn5HV86x8cKrToDlsQ/jZlpIB+hhH6RL2uZUEa7zXz6xe3EBPxivW8Xzf1cCl0kl4qTTDSxGDYseR47QWDzIh1TTXT/Rq9BGfW9VsMkCOA+RPK7b+esxdqwY47dQkrzUKCTSS3L41EXZcNI9oGgGp9ALuhXx/xFIsoDcJkAuQ+nF0rjXnbYurOcmOfhRTsWFNL8Lg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	wYRJoBs01WEaea/qjTtoklUAyexLqpdnx/tpJhAoRqSptZ1NuVJ/Z/85uSl6O47xPfka8NkqZKEoaE5lqp+G3C+2/mRmHQXB3SVHqPC+XgJ8wDGYrvwKD/jRJJxDBCzVmMOC9WJ2hcUUbkplOkYmm6VTKTENU4dX3gO/NdNRaVu+B3NBf8UOfWhwjxqkk28ZqWTv+2gRG9qqSQU6aA0umBG3DaavWEXx8Q4SwrXCVa2XYrHUJeU/v++z9QMGxzxd4Qy92HPac81HSxRVzlVBGGnnHPWwSYFjqECDqG7ZM9TvMrSugzYoApvU/6jy3ucUaBPUM2j4aYzVdH9wFFz1rpkgDrDBLvzBI/pZ390Yrwl14SpGB8bGHuMHUClyNHXOSCkbCSo/fW5gt8yyZAz81tozrYofaDvPjZXW6DtemAiALyuYsoIGAyoTuM6iD5CaQS3aDdh06IE2VtBMWtt+t8qro4PZRxgNxVyIPEkzRachoR0ycK0+QpnLxZBJ0mYHVEAvRlHR1nrQl83yFEzUyJO+1LgSmx8yllkDeFrHak7jTDDc8r0kVRlll3+hal7myQ7q1DNgmEX20t8pk/3IDPvbrU1tPP8vgGHcxoxyk1kUJmsOPqDytbKcOvF5CUVYcsZPhXIWVDXitqZS0dDuEg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:35:15.1974
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a13d5a9b-10cc-4791-769a-08df3add0ae4
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000D8952.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA2PR16MB6450
X-Proofpoint-GUID: rAWjpCUdPTUsD9DfHqSEKpXrJD-mxYZV
X-Proofpoint-ORIG-GUID: rAWjpCUdPTUsD9DfHqSEKpXrJD-mxYZV
X-Authority-Analysis: v=2.4 cv=LcKpeTfi c=1 sm=1 tr=0 ts=6aebdd56 cx=c_pps
 a=z4Cvy7J80qD6KqIazgzwmw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=X3KReqg2EL6A36SYCKpz:22 a=IUhvlq-UAAAA:8
 a=cbNQJ9GKAAAA:8 a=Mp1fN1wBtM18aOJufkkA:9 a=DqJYxgmhk6moR-_7_KoZ:22
 a=WmVTiCyuxqgg3mnwYu6p:22 a=HAt3PS7web1Nm6r8Pb4Y:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX2jKxd7r9M0Ho
 XuDPB4fIT3LVdf2LM2HraM8Qx6NUfBI+r171U2uijiUrfKv6o5sZchleske3ubicpUmnxDZ6lAe
 vUfXAIHFRNte6oa2YUMDjMywWdjM7i9364JFvdeq2J4/BZ5FUkfaPTkUSXNm+/crRsJlfpGMOec
 XcvXn0euDZf1o7niiicagO+pGNM3940ZTLS5JFOHapbV28CBt/uxlUFp+/XNz6AUDMV77Q8fLvC
 wN/Hhvcv0TaWfznrY0cHYM5lxxgjmN9b6T2YGDMHyWmetfKMDKtfV4QA6cW6mmNIaretM/A20Qr
 fYG4N29uzc10R2ZCxNggJBVSw4Pfutbsuz8SrIxJAKWvILvXE1EF6dlAzluF6jN7OLkWzGDaoLc
 3dbN/inuI2R0WzxLIoml7PrqQIZlAAC1xRxGkvnJI/vrlS4t/ZVWI7f0pGjApDtMqqv5pBpa0sd
 GRL0hABOOhc/0KTfuqA==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX59k8+1zhyvt0
 3jpfIGh2aP5SVAF+Det+mALli37Kh+PXm5w1D19krs6OhMYCulIAIfIv2tEr/qTGf7kw5FK898i
 JvkVNdvmhHcVkVOWn1Y9/WAb4jv+VvAuaAOF5/Wu6925xM4b1zCg
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0
 adultscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-42698a/1793842520-AA2C49EA-9287A31D/0/0
X-purgate-type: clean
X-purgate-size: 721

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 CHANGELOG.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 225397f12876..f657efba6389 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
      permissions for the port range in question.
      XEN_DOMCTL_ioport_permission now needs invoking up front /
      afterwards.
+   - Initial SVM AVIC support to accelerate IPIs and posted interrupts on AMD
+     systems. AVIC with vLAPIC in x2APIC mode is not supported, GALog is not
+     supported.
 
 ### Added
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:35:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:35:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473321.1680982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmOG-0005kX-Tr; Thu, 05 Nov 2026 01:35:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473321.1680982; Thu, 05 Nov 2026 01:35:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmOG-0005kF-Pc; Thu, 05 Nov 2026 01:35:44 +0000
Received: by outflank-mailman (input) for mailman id 1473321;
 Thu, 05 Nov 2026 01:35:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmOF-0005gD-HU
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:35:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmOE-001x5b-UL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:35:42 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd3a-2eae-0a2a0a5409dd-0a2a4509db66-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:42 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd6d-be1a-0a2a45090019-94a39217d2ea-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:35:42 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mfSb2568379
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:35:40 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010040.outbound.protection.outlook.com [52.101.61.40])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb53-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:35:40 +0000 (GMT)
Received: from PH5P222CA0008.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:34b::10)
 by MW4PR16MB5087.namprd16.prod.outlook.com (2603:10b6:303:1be::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:34:29 +0000
Received: from PH3PEPF0005961D.namprd05.prod.outlook.com
 (2603:10b6:510:34b:cafe::a4) by PH5P222CA0008.outlook.office365.com
 (2603:10b6:510:34b::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:28 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 PH3PEPF0005961D.mail.protection.outlook.com (10.167.243.27) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:27 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nw2C2971351
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:27 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrk8-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:26 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmMyxjRSdf5COOmMzxlLKX; Thu, 05 Nov 2026 01:34:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=UnF
	VM1D32Q8PVzU9oZlOxLlg1sYnLTK8jp9jrh0Jn4Y=; b=iB1XS8v+q4RL1hCmtMR
	4YaHgthfisWlBlaL5J2YLkStDJNWyjjciwgvuXRgr/gqNLsh9HicyXp0+SVVuN5M
	haSlYcwS0ev0efdJA6pSJg0gq4vLMiLlrnu1G1CH6aq6u3qu2HUvFKlEWBSzd6en
	QBTMY6W/PZMGkL8ocvoXEDdDWPyWlGaMff7ZG8F3eADLbeX3lY0gKtH4YLxeC/PR
	YUXATv/e+S22chZ0hTo4DfohtCfOTbhj4ZWI8FP7QQ8Iwoooeqi7WT/h4+e8XjWG
	3uKhmquZcGZSYaYensGfw9rXJl717qeZKgRrVyfCXwwrBMSZ3r7moPLFRaY/UEVG
	zyA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Qk+IM3DLHYGiA00opPW3/OfLKt5XNOS0voGkrnZnDePm1mFUOxtpFZ9utrjp+71YEe1RfPSk6Wyb7jQSDc9Cm9iRfWivCxF2xUhNY53mkp6pmGJN2JjwpGRqWRcqXfR6bZjH7Vg2L7PdTiiWtuHzdXGDI60Ng12ZsTDVnjWuYYqfZf8TS7a4sTFWIW55RJjeyAmTI0y6+HCj7MGbFefVPaJIViu2XKFFVnWW8YEFtpwTTQBq3U3+SkYCXJm3f6zXBigiQ/SpJGrT7gHge+PKJ6U/b6XcT6+HxKfUP6JGKJc8Og0LOaWOPsYcHOCYpu0AdZERi9lJ0GVvlXe+GCKgpQ==
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=UnFVM1D32Q8PVzU9oZlOxLlg1sYnLTK8jp9jrh0Jn4Y=;
 b=WT9gSu6eRmP5lypwNONvIoGevIyWoab+h24iU72lA3lA8b/lwQTaWkflWouqTFY/XosVSJeMJGheiVPPpp8UdjsbNONX8j/kIpWBhev3KEEIIP5Zw1BiFdozvQ6a3R28wsASswXMaUJZ78N6ZkoSRaDVT7d/iEjELRlWwJn69qFNnrnhhSLpMvdwj2mzunBaexLNLEFQy8IfsgXiYogyASJgXPLs9IhegmFPOg66l8liRkw9DeomgvO0b0kIEhuh5mhmAGK6zWuydFKbqhVLjsKGZlREJbOLqf8VRx8GPnDKJ24qbuwttvhkF7l12FRRMwALAdM4p27jdNag3H+xvA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UnFVM1D32Q8PVzU9oZlOxLlg1sYnLTK8jp9jrh0Jn4Y=;
 b=AbpBsRMV0hYrfS8NqJyesf48bbQfTCmoSVYuUqP7/j+15UC/OCCIJJPwUhz/C2MPsXIKpy+p3iVpauwW87d2awwdJGED1bH8yoe5C45E85BA57mP9QWrxwmioPwEyWi9ROTPR1BfxhKIMzm33lRS70tkk3qjAcRRgMXL6gCgbh8=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=UnFVM1D32Q8PVzU9oZlOxLlg1sYnLTK8jp9jrh0Jn4Y=; b=
	BOq1Yb6ptAIG+gnm6XL1IMtAYZC4u3Bim2AExV9G3vXDColQaTGs441u56riVzBg
	f3NcUHxVilNxPSWIXHG6RWAarZ9xaE86LtRye3N5z4Ub30by0/Migi0/r8Mo8zh2
	ajh7HVHxaiWdIw9dF93cDbVGE4ZaCPxZqG0nrvsgkJtvz5UWYXQOaV0BwmL8h/Yy
	ybR+Oqr7AYDUZTOtc+N7d0Uy6lmiohPLiZ/CsmVRCpLsJ9AkBTrxL7hAQKSYqLaX
	BYlUkoZxmPTFZQG8MpzfPSWYFyy7Qb8WYHGnZ/YwqJINWUgVTTq5Nj2b/OiNUqMS
	HwM5xiEa/iG44ZNKt+AnTg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=UnFVM1D
	32Q8PVzU9oZlOxLlg1sYnLTK8jp9jrh0Jn4Y=; b=CYWSoEaXv6AkQV8ZqfQBNCZ
	k7WErDch4E+okcrFFuXC8OGVBxIYgczOx6aREEaQ+YS5ku23xWOstPhezXcwCiaj
	882mhRi0gCWl3HZMdzLjjJeEZLgn8AZaI3yWg0iXgNF2llshxGeg4Le0Ice1PM0C
	iilFJFG36S+nGt11mS7PJ2aN0YGuRrGkJbwAiG4LJsI7PhrsRTxqzAtzODVvpc13
	G8Qc+0teKAIBupqp80NneXuPK4b6/dmj00QPBTW4tQC1NXgonGfAKtr9y5QYxDY2
	JzmxNhu4mD5eLvaLYPsuDujHaI+Y/mEuT4mw/iGggjg90sUMC7tal+Y43+dH7AA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMyxjRSdf5COOmMzxlLKX
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 07/28] x86/hvm: avic: add VMCB state initialization
Date: Wed,  4 Nov 2026 17:33:24 -0800
Message-ID: <20261105013347.719392-8-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH3PEPF0005961D:EE_|MW4PR16MB5087:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 1df2eed9-27af-495a-854e-08df3adcee59
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|36860700016|82310400026|261009223027099003|261021121427099003|261021123027099003|11063799006|56012099006|261102123227099003|261022075727099003|261026140227099003|261022105027099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	url9H1lcwI83DpUkLbesMo6R/4ZsxSSmBpzDEQhT72M3GddXUA75ov3IiEx/SHP/JNuY3yfJULV032Hnvk0KXg+pEFcSHDCcABuSd4TXXFSm0agfGXXP9Dkzjkviqo9xleDkzqZTgxcPVlJc8KBH4wYpf7A8Qt3To8JM4f33pQ7P+hiw4GfVMBFk5o8gRrvlMeaqcEWu5DbmfO7Z36ZYNzBiADVO7BakGoQ1DLV60GcKVQLUWGIgdxSboWxvJo+0ZkMIb2w64eVtVnRQO5IMotOhYF1k1DuKOV6KUrrpaL3nLJ2pzjWYJGDiUjEnO5iZsYh2DbcRVVkKBrtUpQ10Rl5Q/OqoIWOHYXxRGUWVfps2sfBk2hp0K4ZAVfgUoBnRJ19ZqGbrj+HjrTZYr2lOKBsSdGE0LytJGXPVgg49hVpB/Z7GTktKZu+Sp2uAukgMkz8BMzdCjgzJBg2vkQOjjeQqidJnnNe5GwVgKReELEZp2k6MAMyjjl0ZIsqzkkeg/CIrd7+tGkJVHcocEgFwTteRSflO0sJ0MHh+Fe31+7Wn9u2koUr/8oNoiCFLrzQt1KIjFLGbwM36/m17tZNSwV+XlNLoariDUQORTza3e4OVtJnXZTvv6VM62++QVnn4rzV6kez1er292+2lkTe1dJt+Lc8fXNsj84aVz0HEGquviqyxl3iuxNXt7Zn1tG/7TDNqOGVEG9jgnJhDEKZYyg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(36860700016)(82310400026)(261009223027099003)(261021121427099003)(261021123027099003)(11063799006)(56012099006)(261102123227099003)(261022075727099003)(261026140227099003)(261022105027099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	zNqdHCnoWprRZ99eOK2AISB6i8gx/q/piUykbQNBTW7PTX9352NBcBQlRni3qBKbV/WxAgsC6URsxh9c+jsCDKQC8TZ2glcCbtRmDVOGlv+b0j8xvEXEF3wLi032zcFXtWljkEveC7/Gogy83wfeVkk8YQhS3KgPFOnEqmkqjS6XX85wW+v5rvNOqRMZm3Ka5Tyxc+pvu/36u963ctz3nlsXluX9gnwj6Ux5o+wbvJYuZ5694joCRu9l2P2eWiyk0tRWlMm6rR95wP05IwGuOdN7deolY1Mz8aElESHyv5izqQXogoKgmyASkALXhVCt6qqqFLtmroj71wh95FZ5D42mtz0wzyaKvC4tUKqK8kXcTqq31JMPgK+mk6JihEPfbU3V5n9nMxIDdGywpmahBD1SV7T0svbPi+d8khaAKYYilK6fTte95NSxXhwzXcMP
X-Exchange-RoutingPolicyChecked:
	CQIvjwWCwe3UTu3zkEO9lMnk4BQb2oh9rx9Khu9Eq7BISlTenlzplfCvqvBBj7efMjkB2KDB9S11SLjcxWfJ8Ugu/og/8QZAopJxsHy7pA32xBCJTAPae9ETDqCasJh9DNPGnijkXMJQ7Fpvwxcf8ThQXa49xiwc6bBOcU8EMC25TucaIS+9wkxwA2rjCHEWEhqPffvD1w6gg4JJ3oCqCYi5crHfrJLK0aS4JzPBErcRHQ5oo3N7RgkRcnUITkwvA3o7lWJdg54UHN7q6DlzCWvcG/cOebST6WhECiO6LoPE5IANYbS9cuseeSUoTk8pm1V21ZoTs0TzTc7r/qZSpw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	/6F/wv8B4AnKh3+cTcWqODzwHgycO/RuJXVzp2SkwXeYDEPl3mNtl6YYpBNoV3bk1MRmv+hnfcOmCTJXNXlEbD4OnwM7jcrsU3EHIb2bnqgcmx0cXWilgNFAwXwy2GAQuev3fejF9V6IQkLYYH4JsQI6DnOox04zYYelk67Lk5/ec/rT++Tr8+Z+zvcNwFVURkiTnTVzpoDODLJOoPtMyxDUTUSkPNvSKpQIRC3PL4r55U5g7BTSIE75ajWzefOFhjCXg1+qwSisVvL56AmgMiLBwxGVn7UY9t/dgYn4gDevd+mHa2BxIXGLcnQWt3zH6X3Qt9RZTp2qH6WPKZ5Jp39QB5MIo7wU6kN9a08+I9ECLUAzlCJ4mI43mLylaZIYzGk+Y1GgwJC1gai24YmEEy+2eQpc3pdmFwsz6agmJdMiU9bhlFmCWzydnSDQmsO+HybBXyGJbbnDxKmauJQYhfrwrfMaJJElFGQMSwydZzAlIW7rsl4JYtGE1LkeYpf9NQaylNksnKALkpBaN6bzJYiL4qXEnp8/YnUOp0lIf9F8eck6x/c9l+3Uk3oBNFZpK3YjbGvV7wFGfFYQSLDfMAzZSJdj8v/5gpxPVfq8aunqVb+FvQMmdM6mHsyracWGVy9t+5rjf2eCzqQPtCZXMQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:27.5000
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1df2eed9-27af-495a-854e-08df3adcee59
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	PH3PEPF0005961D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR16MB5087
X-Proofpoint-GUID: g2kYAiWPnxTJAPWSgBuC-gghkGGePTZK
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXzQ+/cGirvAxX
 jJonAOG2I6ILL3m4MiK8l1/UAHzyae2BDo8WJpAz7lOBIZ+Et+g8m7iKkwkzOcV8V+f4q96FVFA
 EtQ0BnwBKoVhi8JQUxdDaTJ9egs+T9BWe96vYRBcV1dgdm3M0GmsDL0eIvZVeFN/6yuiwktXQDZ
 MaQ5jtIDCrS2UaaRPgr2GsWECNNUS6ts7bMux8Nh2GuTSAcEPpoYerOtlWCis1vfu203tOBFv+/
 ph8+S8aQyksdAKa9Qb+UZZfFu1UfkkWK24L0uCeX45W47SKWpp3tWHXHlYsOdMi5wjnFDCf39qK
 wcSyv+MmMK2yyT+izvigWk93rPl0t+jv6VMNAzZpD3xg8HeYKdQ2y3bKfK14p7IndjoXoWwU1gj
 M3NYNQBBcp+T3IUMoQ3SLEyYiqmu1std7e8rsdw9/jr0CYt0uKD24VdmNAuozEPS2R08C4wvTdH
 vjFuzetwAGBMvtlBa6w==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd6c cx=c_pps
 a=v5NpUkBk8u87wj8Ets5Xkg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=uumIENlhXCaLf2fO76MA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: g2kYAiWPnxTJAPWSgBuC-gghkGGePTZK
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyda6KKswhthO
 1jxJwJ48jXdvTIaK9zscI+nTCNjBCrjVgwQWgMfcF29QyFdLxJ4T5Eh0cNYgdUnPQF26xgJv9s4
 bqR9NmSTSQ4LDgE+fBzYFK4JfnfWNf+L2WfbHV+r8rDluh8DObqK
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-bad1c0/1793842542-FCC15034-A7E6F79C/0/0
X-purgate-type: clean
X-purgate-size: 8087

From: Denis Mukhin <dmukhin@ford.com>

Update SVM VMCB with AVIC-related data types as per [1].

Install AVIC backing page and logical/physical APIC ID tables mappings
into VMCB.

Set VMCB 'avic_enable' bit to 1 in case of successful initialization.

[1] AMD APM Volumes 1-5 "15.29 Advanced Virtual Interrupt Controller".
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/avic.c | 110 ++++++++++++++++++++++++++++++++++++
 xen/arch/x86/hvm/svm/avic.h |   3 +
 xen/arch/x86/hvm/svm/vmcb.c |   7 +++
 xen/arch/x86/hvm/svm/vmcb.h |  19 +++++--
 4 files changed, 135 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
index 2c0e113ae34e..bc98661a7057 100644
--- a/xen/arch/x86/hvm/svm/avic.c
+++ b/xen/arch/x86/hvm/svm/avic.c
@@ -9,6 +9,16 @@
 #include <xen/param.h>
 
 #include "avic.h"
+#include "vmcb.h"
+
+#define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK        GENMASK_ULL(51, 12U)
+#define AVIC_PHYSICAL_ID_TABLE_SIZE_MASK                (0xFFULL)
+
+/*
+ * For AVIC, the max index allowed for physical APIC ID table is 0xfe (254), as
+ * 0xff is a broadcast to all CPUs, i.e. can't be targeted individually.
+ */
+#define AVIC_MAX_PHYSICAL_ID                            (0xFEU)
 
 bool __read_mostly svm_avic_enable;
 
@@ -125,6 +135,106 @@ void svm_avic_domain_relinquish_resources(struct domain *d)
     }
 }
 
+static bool avic_vcpu_supported(struct vcpu *v)
+{
+    struct domain *d = v->domain;
+    unsigned int id;
+
+    if ( !svm_avic_enable || !has_vlapic(d) )
+        return false;
+
+    if ( d->max_vcpus * 2 >= AVIC_PHYSICAL_ID_TABLE_SIZE_MASK )
+    {
+        gprintk(XENLOG_WARNING,
+                "%pv: AVIC: unsupported domain max_vcpus %u\n",
+                v, d->max_vcpus);
+        return false;
+    }
+
+    id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
+    if ( id > AVIC_MAX_PHYSICAL_ID )
+    {
+        gprintk(XENLOG_WARNING,
+                "%pv: AVIC: unsupported APIC ID %u\n",
+                v, id);
+        return false;
+    }
+
+    return true;
+}
+
+static void avic_vcpu_enable(const struct vcpu *v, bool enable)
+{
+    const struct svm_vcpu *sv = &v->arch.hvm.svm;
+    struct vmcb_struct *vmcb = sv->vmcb;
+
+    vmcb->_vintr.fields.x2avic_enable = 0;
+    vmcb->_vintr.fields.avic_enable = enable;
+    vmcb->cleanbits.avic = 0;
+
+    printk(XENLOG_INFO
+           "%pv: AVIC: %s: apic_id=%#x avic_physical_id=%#"PRIx64" max_vcpus=%u\n",
+           v,
+           enable ? "enable" : "disable",
+           GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID)),
+           sv->avic_physical_id ? ACCESS_ONCE(*sv->avic_physical_id) :
+                                  0xDEADDEADUL,
+           v->domain->max_vcpus);
+}
+
+int svm_avic_vmcb_create(struct vcpu *v)
+{
+    struct domain *d = v->domain;
+    struct svm_domain *sd = &d->arch.hvm.svm;
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    struct vmcb_struct *vmcb = sv->vmcb;
+    const struct vlapic *vlapic = vcpu_vlapic(v);
+    mfn_t mfn;
+    uint64_t entry;
+    unsigned int id;
+
+    if ( !avic_vcpu_supported(v) )
+        return 0;
+
+    vmcb->avic_vapic_bar = APIC_DEFAULT_PHYS_BASE;
+    vmcb->avic_backing_page = page_to_maddr(vlapic->regs_page);
+
+    mfn = domain_page_map_to_mfn(sd->avic_logical_id_table);
+    vmcb->avic_logical_id_table = mfn_to_maddr(mfn);
+
+    mfn = domain_page_map_to_mfn(sd->avic_physical_id_table);
+    vmcb->avic_physical_id_table = mfn_to_maddr(mfn);
+    vmcb->avic_physical_id_table |= (d->max_vcpus * 2) &
+                                    AVIC_PHYSICAL_ID_TABLE_SIZE_MASK;
+
+    id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
+
+    sv->avic_physical_id = &sd->avic_physical_id_table[id];
+
+    entry = vmcb->avic_backing_page & AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK;
+    entry |= AVIC_PHYSICAL_ID_ENTRY_VALID_MASK;
+
+    ACCESS_ONCE(*sv->avic_physical_id) = entry;
+
+    avic_vcpu_enable(v, true);
+
+    return 0;
+}
+
+void svm_avic_vmcb_destroy(struct vcpu *v)
+{
+    struct svm_vcpu *sv = &v->arch.hvm.svm;
+    struct vmcb_struct *vmcb = sv->vmcb;
+
+    if ( svm_avic_vcpu_enabled(v) )
+        avic_vcpu_enable(v, false);
+
+    vmcb->avic_physical_id_table = 0;
+    vmcb->avic_logical_id_table = 0;
+    vmcb->avic_backing_page = 0;
+    vmcb->avic_vapic_bar = 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
index 3da62f59b0cf..1084ae683944 100644
--- a/xen/arch/x86/hvm/svm/avic.h
+++ b/xen/arch/x86/hvm/svm/avic.h
@@ -11,4 +11,7 @@ extern bool svm_avic_enable;
 int svm_avic_domain_initialise(struct domain *d);
 void svm_avic_domain_relinquish_resources(struct domain *d);
 
+int svm_avic_vmcb_create(struct vcpu *v);
+void svm_avic_vmcb_destroy(struct vcpu *v);
+
 #endif /* __SVM_AVIC_H__ */
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 3ec5bdddf588..c4282bfd6c6e 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -20,6 +20,7 @@
 #include <asm/p2m.h>
 #include <asm/spec_ctrl.h>
 
+#include "avic.h"
 #include "svm.h"
 #include "vmcb.h"
 
@@ -215,6 +216,10 @@ int svm_create_vmcb(struct vcpu *v)
     if ( rc )
         return rc;
 
+    rc = svm_avic_vmcb_create(v);
+    if ( rc )
+        return rc;
+
     paddr = virt_to_maddr(nv->nv_n1vmcx);
     nv->nv_n1vmcx_pa = paddr;
     svm->vmcb_pa = paddr;
@@ -227,6 +232,8 @@ void svm_destroy_vmcb(struct vcpu *v)
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct svm_vcpu *svm = &v->arch.hvm.svm;
 
+    svm_avic_vmcb_destroy(v);
+
     if ( nv->nv_n1vmcx != NULL )
         free_vmcb(nv->nv_n1vmcx);
 
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 8b351679fac5..1ee5da053a9a 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -346,7 +346,9 @@ typedef union
         u64 intr_masking: 1;
         u64 vgif_enable:  1;
         u64 vnmi_enable:  1;
-        u64 :             5;
+        u64 rsvd2:        3;
+        u64 x2avic_enable:1;
+        u64 avic_enable:  1;  /* bit 31 */
         u64 vector:       8;
         u64 rsvd3:       24;
     } fields;
@@ -362,6 +364,10 @@ typedef union
     uint64_t raw;
 } virt_ext_t;
 
+/*
+ * AMD64 Achitecture's Programmer's Manual, Volume 2
+ * 15.15.3 VMCB Clean Field
+ */
 typedef union
 {
     struct {
@@ -377,7 +383,7 @@ typedef union
         bool seg:1;        /* 8:  cs, ds, es, ss, cpl */
         bool cr2:1;        /* 9:  cr2 */
         bool lbr:1;        /* 10: debugctlmsr, last{branch,int}{to,from}ip */
-        bool :1;
+        bool avic:1;       /* 11: AVIC */
         bool cet:1;        /* 12: msr_s_set, ssp, msr_isst */
     };
     uint32_t raw;
@@ -469,7 +475,8 @@ struct vmcb_struct {
         };
         uint64_t _np_ctrl;
     };
-    uint64_t res08[2];
+    uint64_t avic_vapic_bar;    /* offset 0x98 */
+    uint64_t res08;             /* offset 0xA0 */
     intinfo_t event_inj;        /* offset 0xA8 */
     uint64_t _h_cr3;            /* offset 0xB0 - cleanbit 4 */
     virt_ext_t virt_ext;        /* offset 0xB8 */
@@ -478,7 +485,11 @@ struct vmcb_struct {
     uint64_t nextrip;           /* offset 0xC8 */
     uint8_t  guest_ins_len;     /* offset 0xD0 */
     uint8_t  guest_ins[15];     /* offset 0xD1 */
-    uint64_t res10a[8];         /* offset 0xE0 */
+    uint64_t avic_backing_page;      /* offset 0xE0 */
+    uint64_t res09a;                 /* offset 0xE8 */
+    uint64_t avic_logical_id_table;  /* offset 0xF0 */
+    uint64_t avic_physical_id_table; /* offset 0xF8 */
+    uint64_t res10a[4];         /* offset 0x100 pad to save area */
     uint16_t bus_lock_count;    /* offset 0x120 */
     uint16_t res10b[3];         /* offset 0x122 */
     uint64_t res10c[91];        /* offset 0x128 pad to save area */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:36:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:36:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473363.1680990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmOy-0007N1-6V; Thu, 05 Nov 2026 01:36:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473363.1680990; Thu, 05 Nov 2026 01:36:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmOy-0007Mu-3o; Thu, 05 Nov 2026 01:36:28 +0000
Received: by outflank-mailman (input) for mailman id 1473363;
 Thu, 05 Nov 2026 01:36:26 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmOw-0007LM-HK
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:36:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmOv-00G6iA-UK
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:36:25 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd50-8faa-0a2a0a5109dd-0a2a450ba0fe-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:36:25 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd98-b7e8-0a2a450b0019-94a38ff1f396-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:36:25 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mst1226770
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:36:24 GMT
Received: from bn1pr04cu002.outbound.protection.outlook.com
 (mail-eastus2azon11010034.outbound.protection.outlook.com [52.101.56.34])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurc6p-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:36:24 +0000 (GMT)
Received: from SJ0PR03CA0243.namprd03.prod.outlook.com (2603:10b6:a03:3a0::8)
 by DSVPR16MB680370.namprd16.prod.outlook.com (2603:10b6:8:379::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:50 +0000
Received: from EA8PEPF0000000A.namprd05.prod.outlook.com
 (2603:10b6:a03:3a0:cafe::61) by SJ0PR03CA0243.outlook.office365.com
 (2603:10b6:a03:3a0::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:49 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 EA8PEPF0000000A.mail.protection.outlook.com (10.167.249.233) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:49 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mcdn2969017
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:49 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrkt-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:48 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmNKxwii4DnFpOmNLx5hXl; Thu, 05 Nov 2026 01:34:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=XKf
	hXQ94ZWYPTs798CJgynYPHUJjbi7rDBAXa8MZb4g=; b=GcKbeH+V8JRXHcERpPY
	E6VcFtSBFkAHEcn6nr0aqb56vjrJlaOqYjd8Omjeto7tQneiUuB7zFOVo9hTp5Sw
	Y9fpk5S/wxP52ltg2v0tXA33tumrHmAEy7nFbK+mHTqyq2GYFTTiHqjOtbcNeDGP
	ZHSGPpz2QqXp6vhGYRahdEalL3DDHDSWS7Ku9gl8sBzZ8ySqFQDgXfR8uHKlAN7S
	uOYwjcnXsugO+GlHyYu4KYYjtrQRgtce/G9FNUB0C5ligIS8zB0hfXhNcOtxSygK
	u1am+iAgeRc9Ezq5r49kGT2gGrjqR4B9nQudOBVALFctxiuvkw7StQoIJk1wkoTX
	zYQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Iq43u5c8VXCBRzmiy4MOH4Dh0qSn1fN9efsGm5RnyhJZa0ajUJj8R1Z3AVr8/SfS4sRM9NxbHugS90kR0bjrx7D9LCeWQFiNJT+Sch8m5nuz3FqKvEuDg5bG3hMNXJRBcFa5SdiA+nG0AqdOe0jT3+1693WvtCa/PiJds+GOA3SRG55gK5K26cArMWpxPSJHIpYZ2+6wLyjOYAOG71VjRmT+ZX23jmy1RO/v5dJb1J5LbHp8eNiN+MRUnFom62sm1h+GsVUu9VoP20FDWaWR6oxwAPhdRW3n2PiaGuUU48/03qilLB/4kwJT6S5Vk2r/QT1kloX28wfno/UrPyuwTQ==
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=XKfhXQ94ZWYPTs798CJgynYPHUJjbi7rDBAXa8MZb4g=;
 b=zEWeiWOF+I1vGFpsmd8LO2/yyZyJ4Dq2y8T0vW7OliqqPG5D+jHk8SgWEEZeTu1ulsF5J9rYSy/jedzy5EeQ8+t/8Wy5JUUMpHxFeltY+6glkvWpEoVdAe3ZxxJp2pxJPJ5TMzkEnhm2e5VXEH6rtWFE4VqgGMbk2ocIfTF/zr8EuA9MdybJCJ3ScqC2cG2Il/5uGUiwntjoE2QOSV61fWU4GxWiQ85IKegasOaVpjoHNOC1Nh6IhTLYf8+5k9yuyD8CnmhW3G4RzBy+5h8mAxaWuT/16XahhbhreKkdQRQ5CZwRKfuiDKrBlH9ffVKFBnvAfRJkmJcvruvZ+615xw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XKfhXQ94ZWYPTs798CJgynYPHUJjbi7rDBAXa8MZb4g=;
 b=UgCjhk3P/Jyv1F9KvM4cGs6x4cVmfEzJOY25ZKJzLDFkRiaQQdViIEsgWF+gF2mhk70C3waPCNojpstTtZG6SWElMlealCzXE7DcJ160Uinvbl3C0cL9EEvRlMC8nCcr4P0UWcYL+W+9PdwgQiNoAoOKjy0T9cjTY1J68LFJ/nY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=XKfhXQ94ZWYPTs798CJgynYPHUJjbi7rDBAXa8MZb4g=; b=
	lnm1xY69iXrgRul1zN7l4T9VxDXhLmXhEmEjokyx6pm+70pTNPp3KDyGInRlPCYm
	DQXcF4/xDkPNDOWYF73i+95mTiqy0aUzTTNGkvtkvdrZe1jvZtKFk9Cw4NIC4ifD
	PjgMPuqd+A3DGO5F+wX/GjLRrKHTHXzIhOZeSKy5ojWaj+7jo1eideeueQDVU4mP
	j3QiBu9J9ViQ8ira0LQLAHFYTBB41i0PHQXeNEXyPHd0UbLQaVhcqVl+RFZQg/wQ
	QSFzI+gJmZLlqwRnLloI2fI941L5VqxYR9HDExAEjz08Hrr+AyIeFvxZ1LCtGw+M
	YdCLZW7JnzAQHA+6K+IWpQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=XKfhXQ9
	4ZWYPTs798CJgynYPHUJjbi7rDBAXa8MZb4g=; b=EJ4WWZCyXG6gg0Z99ENQ7Ie
	Nrt7gNgMcWUiEVEGBm22XykLNsXpQB66LKMAZV8PgkKkb8vupNr2etK3u/ogAxH8
	h/tbH3reySeiRyfFlgRaalVTyD+xE0YxLx7rbtExdrGhyoFbv+iY7aPTNY8CWAa7
	/uQ0pdVdo1f8By3M2qyyqUOzO3QecGcrqhijG/V8RZPrZUSUgiJDehhzFqTK6mP8
	NT3Gb+4NdWq5F7vKzihvkS55kXsKghIz8nXXjAonkXRfBdK6x/4N3xFRZHhfLrAO
	63aYsG5LGvnTQLClZ1Ucco/UD6x3bbzbU0hb45aHGldDKQQx2bHtRcZE1MlolRg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmNKxwii4DnFpOmNLx5hXl
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 16/28] x86/hvm: move VINTR disable to svm_clear_intr_window()
Date: Wed,  4 Nov 2026 17:33:33 -0800
Message-ID: <20261105013347.719392-17-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: EA8PEPF0000000A:EE_|DSVPR16MB680370:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: b448ca5c-7b62-4378-fcc6-08df3adcfb90
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700016|23010399003|1800799024|10067099003|18002099003|22082099003|11063799006|261022075727099003|261102123227099003|261021121427099003|261026121527099003|261021123027099003|261009223027099003|56012099006;
X-Microsoft-Antispam-Message-Info:
	Uw60AXoffS867QTw2gXkA0JLDd3Jj3vH/dOazAypFHKD4u/veoNfV3NvaxCBg8npYauMNtcqQMX7bLFGyFSSdl4ppXiLX7OPoNbuUVcsQ9qNyx0zHknVBxrZGdwogkI13cXfiP4vttCv28S1k1WZywvgklsUQAEVZ6ax9SfqA4Pq0VQ+6CVhPQkpc5Df8bSIgjQdYIH9Wk4YOq0UWA8fP8IgfqkQO/7USQKw32KV7cLoyNxASz6WCWUn1w1rvqAUexcL4R7dQkIr2HZGccMRN6tWPoWHnb+249znbjQnsCJdvVlitF2teC0R51KOAVWn+EDGseiNsVxE+aSdrerA4QO9e9HJhs4G8eULXLWxluc7OuZku05TkfMGRJGNrLu7zEGc50NMXt8xXij0Ab8VcjabgQg1Eph7Ez3bXAOvqLtxQt7rPCsUe+erQ4Fm9LNIqs0/2gubha72OPAgXPCYedqXY5hQI1M7bdeRXx18pZQG03HQXjVVx7iI6LPbhnNuB49aH6bHebu2Mil+rfQ8OajBpqyKtlwBHJjYTR56FHOwrG3U+/Ieue2NIlZXtOcYWAGs7oJVTW9ILlZorGY5sGxoAB/lf/A+AlETzMnLQ2qIhFhHEQlVQ+0RbQ9pddKIGBbOerKmCR3cNLOAiN3llODwQKioV7XWU6AplskbSxFFi7M4Y/D7BPd5twu30vuJtMBkK9K3Kp6FPqy+h+riFA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700016)(23010399003)(1800799024)(10067099003)(18002099003)(22082099003)(11063799006)(261022075727099003)(261102123227099003)(261021121427099003)(261026121527099003)(261021123027099003)(261009223027099003)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TAPulE8rXZDOz4jA1G9pHeIHczxyX4P69UCCSxgPabSu19nZ5W0KG+q+BBatK6kgfhneqHWlc2TK+C1YV1ZNbIdzu0eIL414oGqITtRGbr+hF10ZBNq0/qJrgar3ldoebPK2vmD8CUNKteVcd7/7VASjh4U20Z67EJ+jAfsB5RMEi9vhZYTctMzCn996IH9Tud3AoNlqF2Hu/RBX3ahv8q93RfstgeLjkgt6EVq0ADsjDpH6r8jRPrO2x0zZ41QIawQcQmH+oUU4zcqeiDO0T/DczFOkB4UYX9vNezeqE9MG2M7VpIbn9dsdNdZwycZ2qDOrSdfMAki3ZnocbJGVIaQZHudlKs9+0DqCmmloO4ibtiQgUS/e9xp88d8pxscK7aGa1GdbK9oU7oLSGxoreKndHFAy+jnXkZT2J8c51jNnZHe4fK952ZTAoqqv2+r0
X-Exchange-RoutingPolicyChecked:
	gLAi5Q/1by0K5/zD2QRIt98ydGbEJQAHmuANtGr+fbeBRAwoWlSxgyt6tSYfIh05GtX7Es32RpHlt8u2jQZAf7D6jXZ2UuPE9pZmiLklEPjmBcxH/pF2OG6Z1vcicN0TkipPE7PPR7ppXrdo05WBmeE5m7EE/l63JTGw4dVWV77pWGAL6YHCHDzkdvCm7WY6R6d2uhzZ1ybHyoHmCL+Ffj6+WTN6Hd2NF5ah5618XlB6NfqyZahpP6OGajfZi3S0LVeykdMOFlj3Et49s8LD0d35Sik45FKWg2F6xFp/JcBre0y5fe0sQwrdhuwmqfNwWoZvdeCE3g1OD0NjsOjcEA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	+MZNtWN9ts4vFtw13UORMcCF3jibMhiCdQPkv2L8P0PxjOe2Vk1mvnL/ZjwF06mzqyNBvbwWNCmwUsZAgwBtx/xbSF0oxz6tVVSWH1xxaTnjyLqO8kv8aSOO2OyUnNUnDee+rdyiNR24Rs5QjZ/tIIc7mwVV52s1pSZ1uSpzFxoLwpeFa0DAfLx63kEmk+MsHqf+c6KjUBdUiIiXUVDvSGIjTCYUmC0exrTAlPg9BryFPS6NfntCH24s7x07O+Tag6La3fgM49blkT6YtkhxSlbG/Ioio1EC/z/HXuldvdNZuFbx6nMKW8w0wGgv3vybtu2xUOMRhhUr6iPLvnob/sdlcwxvCGgXdbNCfseolAZ7GdfUDQ0Yb/wTYUUIkQekPmYD/GaXWPYQJCq3Yo5P/7PKpJVezpHhqSGAewwcMj0zrhgyHaklaPKcyB86J3jgcjpL+AQ8s7kdkM6xssrTvxJSKRGjpR9fAZG7xzLibfbDO6S812T3FKFnhDm9UJn0rNQVZFyOspDYQVtqSCC04fJYfXiWopdkhIsgKeQR2ki8f//IfBSEP2xs70SVpWsBg3dZQeNpksOti0QPdG48BqXBE88Wk6kRBqi3lErf9r0V55I2JJCSg9Bucd8b8b0tGru0cJQzm8yOsIfXw7E/vg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:49.6392
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b448ca5c-7b62-4378-fcc6-08df3adcfb90
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	EA8PEPF0000000A.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSVPR16MB680370
X-Proofpoint-GUID: 0-2xOImOvIPKZchs2U8nFSFeWZIjo6gu
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX7snwec6XfiQw
 8587LOoseSYBt1NgoRqI5fZkq2jFtMlCIH06Ptgo/3XbCjgO3KiQlQkU+eFTCULgtK/2iMtFETp
 ddhpHpccM9JiZdUFHlO7FswiFTQttqIxVLXP1JhY8I8TlCssMI7x
X-Proofpoint-ORIG-GUID: 0-2xOImOvIPKZchs2U8nFSFeWZIjo6gu
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXwYxDr9hld9Pk
 Wl74FjawC5CfmpeJpVpSXjEBdj9DAhLWXazfbk5KwqFcHNSsasCvj4d76/pxNZo9V9L7bSZhF5S
 ZN9AvZsxoXUkrt0w54Qg7XgtMPc9v5XbsfdTpV4bLbjnonqDUFOiwsKsJunF1Qwr8Ee11YDDpFz
 bNDpz2SCL3ee6uZNmRIYdwTfKf7wjWiFJH34uY7Yfhn+ptYjvxMjcBaJu6nq+zml8VFTDy5VwG6
 Sz9ikdtOGBlQM9jdQ8PZ+kQPyBUwh8e0I+pgSlym0NxpzL8Nivd9mdOIr8NkXrY7sTVtx+t+Le9
 JYkJAzRcuxbOEXyBZEH4L8CEJROsQdAChq89vO7bakdpD/KoGIKaZmqT3Hg49zBPOZ0sWvp/ZuG
 64Q6MngTlmmKUBBFAnVVWAbMSbpEBQkcCV2KVkYUVvE5IFHv3C1Ma7fnPuWFnTUmSAPsJbD15YI
 w92WAKiBmEdTzi9hFiw==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdd98 cx=c_pps
 a=KX2Ufr5/9I0VBrHrQzOW6Q==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=07a2wwpM4XN4qWhE_GkA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-42698a/1793842585-AA6DA9EA-EE74A898/0/0
X-purgate-type: clean
X-purgate-size: 3556

From: Denis Mukhin <dmukhin@ford.com>

Wrap duplicate code for disabling VINTR into svm_clear_intr_window().

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/intr.c      | 13 +++++++++++++
 xen/arch/x86/hvm/svm/nestedsvm.c |  9 +--------
 xen/arch/x86/hvm/svm/svm.c       | 11 +----------
 xen/arch/x86/hvm/svm/svm.h       |  2 ++
 4 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 2224f1834741..1d39f25e5209 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -238,6 +238,19 @@ void asmlinkage svm_intr_assist(void)
         svm_enable_intr_window(v, intack);
 }
 
+void svm_clear_intr_window(struct vcpu *v)
+{
+    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    uint32_t general1_intercepts = vmcb_get_general1_intercepts(vmcb);
+    vintr_t intr = vmcb_get_vintr(vmcb);
+
+    intr.fields.irq = 0;
+    general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
+
+    vmcb_set_vintr(vmcb, intr);
+    vmcb_set_general1_intercepts(vmcb, general1_intercepts);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index d970869cfd96..c7fde48d5281 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -1491,10 +1491,7 @@ void svm_vmexit_do_stgi(struct cpu_user_regs *regs, struct vcpu *v)
 
 void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int inst_len;
-    uint32_t general1_intercepts = vmcb_get_general1_intercepts(vmcb);
-    vintr_t intr;
 
     if ( !nsvm_efer_svm_enabled(v) )
     {
@@ -1508,11 +1505,7 @@ void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
     vcpu_nestedsvm(v).ns_gif = 0;
 
     /* After a CLGI no interrupts should come */
-    intr = vmcb_get_vintr(vmcb);
-    intr.fields.irq = 0;
-    general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
-    vmcb_set_vintr(vmcb, intr);
-    vmcb_set_general1_intercepts(vmcb, general1_intercepts);
+    svm_clear_intr_window(v);
 
     __update_guest_eip(regs, inst_len);
 }
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 14a86ca4ff8f..d1a95e441f03 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2813,17 +2813,8 @@ void asmlinkage svm_vmexit_handler(void)
         break;
 
     case VMEXIT_VINTR:
-    {
-        u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
-        intr = vmcb_get_vintr(vmcb);
-
-        intr.fields.irq = 0;
-        general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
-
-        vmcb_set_vintr(vmcb, intr);
-        vmcb_set_general1_intercepts(vmcb, general1_intercepts);
+        svm_clear_intr_window(v);
         break;
-    }
 
     case VMEXIT_INVD:
     case VMEXIT_WBINVD:
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index cfa411ad5ae1..0dd5ee78fce3 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -21,6 +21,8 @@ void svm_asid_handle_vmrun(void);
 unsigned long *svm_msrbit(unsigned long *msr_bitmap, uint32_t msr);
 void __update_guest_eip(struct cpu_user_regs *regs, unsigned int inst_len);
 
+void svm_clear_intr_window(struct vcpu *v);
+
 static inline void svm_vmload_pa(paddr_t vmcb)
 {
     asm volatile ( "vmload" :: "a" (vmcb) : "memory" );
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:36:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:36:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473366.1681000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmP5-0007gM-IJ; Thu, 05 Nov 2026 01:36:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473366.1681000; Thu, 05 Nov 2026 01:36:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmP5-0007gD-EV; Thu, 05 Nov 2026 01:36:35 +0000
Received: by outflank-mailman (input) for mailman id 1473366;
 Thu, 05 Nov 2026 01:36:34 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmP4-0007fK-Lq
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:36:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmP4-00G6iA-2T
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:36:34 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd38-8faa-0a2a0a5109dd-0a2a4507dfb6-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:36:34 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdda0-b4ea-0a2a45070019-94a39217c8c8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:36:33 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mSqB2567972
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:36:29 GMT
Received: from ch5pr02cu005.outbound.protection.outlook.com
 (mail-northcentralusazon11012033.outbound.protection.outlook.com
 [40.107.200.33])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvb8v-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:36:29 +0000 (GMT)
Received: from CH5P221CA0021.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::8)
 by SA0PR16MB3727.namprd16.prod.outlook.com (2603:10b6:806:80::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:34:23 +0000
Received: from BN7PEPF000000A8.namprd05.prod.outlook.com
 (2603:10b6:610:1f2:cafe::13) by CH5P221CA0021.outlook.office365.com
 (2603:10b6:610:1f2::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:34:23 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN7PEPF000000A8.mail.protection.outlook.com (10.167.245.232) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:34:23 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mcdX2969017
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:34:22 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrk5-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:34:21 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmMtxqlyn9qreOmMuxpgwi; Thu, 05 Nov 2026 01:34:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=TQL
	xEbnwFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=; b=bAWcRP/UKnOZM5llHR9
	r32ngBLirgs++9R0GRZKlZlggRgfRmaM0x88KjvGra0sochCyLini2zQQhgulWpE
	9IpbepDKTLdznhtnjXhPuhalY9SbGqKaha3DQ+cgSPRIITD0jws4VAeEjgcUPhIi
	qvL9Jek9qXnlhNcUZQ3BFDAuGn6lIWIimQ8M2nPXOZXXMWrc4C3D/oohyvADrCWA
	CNvQkLj02PCb0PJ4AjeV5j9Gf/uYNzus6Tuaso6kJAkSbr0eWKjziBOlBRxZbmSy
	kOSDECbyvJsalyHRkZK2aH1P7JhcM2OUHeQG1wTfNGizknn8hc6aVn1Yq8zAld/U
	zxA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uHZj2nOi2aZ1KeiruirmczAjNZvzmECznFALhd8CbPYiX3rLnPdDE2UFs6kkiQvaxOoL5yDlDgr1UEZ0DqcbVuTnOEcAtEOzIKmMRfdpVMFF/qU4dx+i/gy3y8WtMoCx12OVj4menL+mbiLyQVw4AhBrXS6YraYGpvLn4WsPk6qUGjTQISqBvuBK/3/bDfOooxN4muLj13qcS0dms57qYdN1FP9SgeiHewVmhF6NgnvrEeR3I9Bm7e71S638+uBLvxMcni4hHZ+maIyqwQ01bzOJms3lrzjhsuCiQSixTeF8OdWEn+r4T8SA3Yu73OD5YPSGlU86CwbgTItCudNmRA==
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=TQLxEbnwFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=;
 b=jp722KmxaxgmgWHa40gFVOLLeo07rkqaOVbU8ZVjVacQAUM8P5faSHhTwbUNcCOeRVPbN6F6BxtU+DVNRi7ASr0JpaWeKw/NCDAilNHzhZpoSoIbjMjZ80rlqTN9qz+7GqbavjATPrhd5aGk5l73OBQ/Lh7tsxXL67aMu9KVZ+m8n/U2uVMv6Gz3wbBueiAL7fJL+0+2WCLtpmictgv9OMrqaQjGUX25ss9gLem89hgKF6EzYW3HR468hbrsfp+mSy0X91OTLUnjDTbzoHVXhT1CJxmUAUUEztDUZkO7poF6fe8c6YcU/OTLKdrSTs7WgZlpmx85qilR88Lul/OTPA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TQLxEbnwFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=;
 b=RnmLgHO1vDwWtjIUtlvsCGHte7HG13DHw1/wkktiiwRn+gLsPdoo1mxmhjJfjNw/cAJTYolYch3iKkhE3gKckQsOtrsofAFjKzPL465AGgneBZXDyV+pbC8fZGk98EmyN2kd22v/YMRuQlWeiuMCfCtRqP1JNtNQkU0oIl9spek=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=TQLxEbnwFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=; b=
	UXwl+wdEcY+yE7hNObG5/ZAFvEbEmGWuwGwWvRuyJzXw+VdqKXOoT8aRbWn9uzxB
	r0wHdN9m5CeomP+RjjcbUrNMt+C3ZETw/LmMOyFAvleLW49j5vNWJrbz7JQ/+4D6
	w4s24SfCidH8Hw9H6WobbaGZqWbj7TadCihgj4roGSBM+WRTsvxVnt9KjcFOzHf0
	YaVoMOYMnWtAnIPnb/KIpTmxQXqMRF0/+/fLEAi8auctLsyIsaZPgYvFCg5iCD6M
	yZcJgKBHntF/WsXICFvPxca7dMxNWqnOGQHIiOXIc7RCmlbVdUZL7gkystBeN83a
	ssxIPikg9fbnMOjrGZT5Hw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=TQLxEbn
	wFJ4mjqvukAWDSTdndiTYycGzw2U2ukxH/7k=; b=GxTAL2ypooPzRPwG3ulQPNH
	OpaTnEGTXPzaUXbD/yHL2FDhdQLjA0us+vAJF+/C8Iv5Stf9h1jM+Jj3V4/1dMZp
	NVSv7XagE7bcTVOXf1e6unUxIE79/LO/LrUAGlzvGU+PpEgBFeoo+ssULNE9cQUb
	nyooay/i51USsBOgXMhKF+lDNZdO+ZJdFJWzV93dNE57J1AXPVC3S3u+4r4V9VmM
	O8rX/6QNTyoUvYMPtczOSveqGCNyKmWtV+g7iTGDx9vm/TGSP7QM9OQHcM9BcNRN
	qxllSBp6fk1u7zmXggBqLo6SYo5OGIse2nbF5wljlpcG3ZBWY140rOgRhnXssDw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmMtxqlyn9qreOmMuxpgwi
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
        roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 05/28] x86/hvm: cleanup svm_create_vmcb()
Date: Wed,  4 Nov 2026 17:33:22 -0800
Message-ID: <20261105013347.719392-6-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013347.719392-1-dmukhin@ford.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF000000A8:EE_|SA0PR16MB3727:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: bde41214-9d5a-459c-9e9c-08df3adcebde
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|22082099003|10067099003|18002099003|56012099006|11063799006|261021123027099003|261022105027099003|261028144727099003|261009223027099003|261026121527099003|261102123227099003|261021121427099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	Iv0hugzLb1s7FQjJeV/+kTTyPWdrbiQRXPsJ5JFww6x8PKQB1UAEUR1d82rlU0iwMy7Lt2R7OpgUztgDK+3kxtjMuavwlfHh/cekkBcD5lq5egUK7QLcF9uLsGGxLQVMbLxyYvEJHMpuLUbzFFBKmN1ko7DNU3leCL2UBsau3xmWL19pd9zZA85JVvhyyF+lorCZW2WCtWP/nIoXXkGPXgSOYilhOX7jJGjTJBv7drtFO8ysL+FGOnVv1WFGyd6rDvzvkSr+B8xVoYeTxif4IbeBSUqM7b5daFAQASUowJfYWgE+T9n6InHwILnnpqm08gPGbC+EplG3mhRXpx4Yda4rn6u+iDZkdFr0KxF6YzEFiYmbe6tfWfATTcwh3veojAW+PNOw0X4BfZH2zAswDrmL04KYj6jpNAAa5EGOFoxcTHEH/72X06wD+ggFG4a1JtQbLiN3WOyaRj5LQv7kEFPPkKBvwN0GksVoEzVGXPGedUpX6H7imMEfIQoP/QvUYjPZ9z7io8DJ8A3DK2xVrpOfQ0BumOlx7mh2AK04C5L/jn0PurCt5eDBfNoIdyNAAvzCA45YorWguGqYw+eJr8swe2hpFH0+bor7iJrJMLzmc3SqzrR7LO5Xihf5Ndnzk/TWpn23ofIVLKOv2I47nme4w1WvGfP4QAM6TjXV6Jx0dg3y2wuWTrt0Zd7ufvEGKChqTLnn7sujhx+NJPDgrA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(22082099003)(10067099003)(18002099003)(56012099006)(11063799006)(261021123027099003)(261022105027099003)(261028144727099003)(261009223027099003)(261026121527099003)(261102123227099003)(261021121427099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	BfS9oxtXbhmvKjfSGj7q6eTjJSiQ5g7iPa6kv0DL6JOZ95LKIXtCqlOs7Vxw+h9QtljHORAkHGOzWKAB52hBN89NAYNgTs0W1f/bBAfGfSD7CMcJvXrALjAga0ZdS96R5lEw9gQjUCUXoTCKaqnCC72AgI0Fm40EHXt9ADO0RSoYXF7hetyTPOgjHgnFhcmDM1XLT2nTjvuDXV1Vc1iJSJmE4IjgQVFabaD24QWU2MJOcJNDrY4NK8XqRjUPHLPpEfsgw2uzk65dDpJL+zCVjwHgezuO026C8gcYAavtKEfFL3TA2O3nWDQHoSqyEVdcFxpkeEb55hPuNR351sHd9c+kljIy+Pp/7axQSfILfiy514uigW35oCzRkh4C2dU6dIctyPVW9RwYmmuHuD6nwV8G0eIikA9Fl6t8nUAZt0L165h/ih//5qljY92AA5y5
X-Exchange-RoutingPolicyChecked:
	PkhWPAK/68EDdddcooLt5BLJfJ0Wl4NAGo3XeJALJ71k+j4vPO4HPh/zce5YjDjuYHJsTWe8owWxqYzduILxtFdpA1NyDfcYvS/2oNC/jgHww5NrJG4dqPn76PW+1679TZuiRTaJAMeRUZdH09ojhita1aCljDVUpopj4khvZUTQXGO+ceEejfgSz+cLJHIfwsOb4+n+tlhgIyYm04MCJVBb6FVPcayNOFeyM9iqbsrsOVeN+EkfAUzLvCH8ZCru/wa5FxqxIJ2vCXCGaOqF38QeYqzIhtZJl2roDo01MJmWh4YdKSmMNYBsPok+NMRJmUEeBXV4fA9BF83CvTPsxg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	XseIZWm/LoWxGhIbx94f84eQBMuXjE5UUY8EgoJ+0+if3TiWWbQSWAPjBC0krXzVvTR+cfDMat0w4GsTJ5s7zhFUuXqRpsgrNN/4Suqt+c74tUecqKE8PaFY99J9tmnKvNDTnc9YqwbJklx0n5gUa6gvDUJtEV396PPssHmPfN3eYfCZbPWzBHm+yI9Ido21U1+GyptfKIvnByDIDUifOS3cELuN1q7F02J721hF4KGB+cmJTBW+mJ/NUs3jcBPl7fudWWHZhnnliJirn6DBN9fhiMM5FFkHYBChpY97JEgKn9JYVJtJ++y76Asi/spLnT9SU8T8K63e+FoKCUFvwlHmCloGm4t+yRkAXZ2yPWCkPKVsKmfUymAwZSdoWU8IYOOBcUzLhvBZO5vUq3NyDqfPfX9I5U/bTYUPFpangTbGbZqq6p2Rz2PxyRkNk3xyD1tkA7Gp1zPmmjqHa09uscQ9xrXJ6CrUexPIiw4ipZiMN+s0vtcIOVs+KsuYofkDr5YcqsjWh9mA9e6ZE3isms61tuB/6XBj2inX8rqJvb3cnUvJVFrNeO6I+kBNO+s2K1tHNmOHZoYj0Uivl8j3q3juiGBRvxruXDQGFsdjEvGvzRLpHVqz8HdGk5X+3aefUKk82lrZUWmKSR6XdGl7NQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:34:23.1262
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bde41214-9d5a-459c-9e9c-08df3adcebde
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN7PEPF000000A8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR16MB3727
X-Proofpoint-GUID: QfyAVFa7IwVjMXQ-Ln31LrFlw0E2EOGf
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfXyufE4KNGpleJ
 hzuBE4T6gTTfsLtvTm7PaokA4fUbusNar0pa1H72Q33Zlz9a6h5ufb7Dp6E/UEhtJbzQzqs0PX6
 Bs5sW/jF/Jg9S53Zodb3T53pjcpA9qotCwUzZUcgLe1YZktXBT2vPfyjDZFzakDWu7KoL3d9lVq
 4jBxYibRncSY7ScCwmwxNDomWsi1Mv+urs44GWLMMCaqOQW5Q4iF+GEeHgxEveoz2fM24HPqt0E
 2CW0X60llqZJDIvgk092EYmHGpdsFwuVwTHVt9G0KY5Bizor1s36ay7Uxwrwje7I4Pt7ZtFQrZp
 D9mDUJoK5Silgt3NODPQFBrLyP5hyXc/6P56C3CtvkqgUX5GYjB9hiFgJObWlMttXN5/CufF7kS
 GJa+lVmhmo5ZBQgYT0YwMJmAdRQx8jH1NAXpf/SkY7B87PjaHwBgt3ZTettc0VQQstI0fWJ/cjD
 yjsxLEx9x7Ra/YWulCg==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebdd9d cx=c_pps
 a=7wosIiAuCGbz/5oJp7M3oA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=Ia841Hrn3UmJ3hU7yQUA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: QfyAVFa7IwVjMXQ-Ln31LrFlw0E2EOGf
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNSBTYWx0ZWRfX3PkKoYW8cfiI
 pAHOKMR59G0hQLL1uT8Uk6IYcVhutyTAJY3s8J3YGn5cUQLpk1q6vw9joQXzH6tKSBT++2Aw74A
 OWpNjbiGYKbi4QBCYJSqdsQ5KFdtW67zrQOF4hJ5EISBjNh4OqrT
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050005
X-purgate-ID: tlsNG-ef75cf/1793842594-A68D9AE4-CE1B49B9/0/0
X-purgate-type: clean
X-purgate-size: 1609

From: Denis Mukhin <dmukhin@ford.com>

svm_create_vmcb() does not need to be idempotent because in case of
failure caller must call svm_destroy_vmcb().

Simplify code in svm_create_vmcb() to account for that.

Also, fix MISRA violations in double assignment to vmcb_pa and
nv_n1vmcx_pa.

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/vmcb.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 33c85ea3bfc5..3ec5bdddf588 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -201,26 +201,24 @@ int svm_create_vmcb(struct vcpu *v)
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct svm_vcpu *svm = &v->arch.hvm.svm;
+    paddr_t paddr;
     int rc;
 
-    if ( (nv->nv_n1vmcx == NULL) &&
-         (nv->nv_n1vmcx = alloc_vmcb()) == NULL )
-    {
-        printk("Failed to create a new VMCB\n");
+    ASSERT(nv->nv_n1vmcx == NULL);
+
+    nv->nv_n1vmcx = alloc_vmcb();
+    if ( !nv->nv_n1vmcx )
         return -ENOMEM;
-    }
 
     svm->vmcb = nv->nv_n1vmcx;
     rc = construct_vmcb(v);
-    if ( rc != 0 )
-    {
-        free_vmcb(nv->nv_n1vmcx);
-        nv->nv_n1vmcx = NULL;
-        svm->vmcb = NULL;
+    if ( rc )
         return rc;
-    }
 
-    svm->vmcb_pa = nv->nv_n1vmcx_pa = virt_to_maddr(svm->vmcb);
+    paddr = virt_to_maddr(nv->nv_n1vmcx);
+    nv->nv_n1vmcx_pa = paddr;
+    svm->vmcb_pa = paddr;
+
     return 0;
 }
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473379.1681009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPm-0000Lf-Qh; Thu, 05 Nov 2026 01:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473379.1681009; Thu, 05 Nov 2026 01:37:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPm-0000LK-NI; Thu, 05 Nov 2026 01:37:18 +0000
Received: by outflank-mailman (input) for mailman id 1473379;
 Thu, 05 Nov 2026 01:37:17 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPl-0000JG-An
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPk-000xTH-Nj
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:16 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddb9-bab6-0a2a0a5309dd-0a2a450be758-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:16 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcb-b7e8-0a2a450b0019-94a38ff1d6f0-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:16 +0100
Received: from pps.filterd (m0367129.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mqJP890958
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:15 GMT
Received: from ph0pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11011046.outbound.protection.outlook.com [40.107.208.46])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hr99fkxjk-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:14 +0000 (GMT)
Received: from CH2PR07CA0050.namprd07.prod.outlook.com (2603:10b6:610:5b::24)
 by SA2PR16MB4202.namprd16.prod.outlook.com (2603:10b6:806:142::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:11 +0000
Received: from CH1PEPF0005BD5C.namprd02.prod.outlook.com
 (2603:10b6:610:5b:cafe::a5) by CH2PR07CA0050.outlook.office365.com
 (2603:10b6:610:5b::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:11 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CH1PEPF0005BD5C.mail.protection.outlook.com (10.167.244.245) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:11 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mVmb3091702
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:10 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhk2-6
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:10 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPdxuiyDz55iOmPdxXLOt; Thu, 05 Nov 2026 01:37:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=Gi0
	GkP+/xd+rHATXYw/FTHcTO00/b0m8RhZLAHJ7HuU=; b=AMydzGN9DEN3bt8ozZB
	aMiAKSw2UZC890tH1v3oLtGXTPr50FVFSlQ3Pr12OpS0k7+xvnhaX0yCedmlOQRl
	z5/iCeYCXy44kTtJt/C3hJgJAHZhO841YDA8BXtGPZGD7hgVrCG5JjRVjvE8hshH
	Hia2nzfcDt+NUP0OPedFPG2ki5IoyEWlRAtV+5MemZc6/qyE8e1fqsEQLaK/pFst
	B4GpKchkKO7IlwAhU0B4UxS/A2bM27czsfzHgaFUcWzBi3GaRjH+Uncj3T5ffzuV
	n2MMPX8l1LZ39svGHLTqFU775uElZAvsBfzlOuraPrS4Bb/k+y9+Um8bwAfQD7XJ
	CVg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YSoAtRsq4UKXgrX7stvoIr/JQOXjfe+PfHQqTgVvt1PQjzT44oY4a9/xaJWB5RkTAu1IzML4UyZKi3aRQq1L+SOuqSQTpCx8fFD2AyzuHAHPVBvThylQq/DocRcBAJoWMITo+lM59iZJFo/1H897U/fMfx+OSFavn0//mebwSvSqB0diWIqRAFgZmiFwBCt11f9NSP/QQdNb5dRJrHzfYCFg06jMUGnrwQ32mziK0DexV92+OAl9to2/c9bat8D0sHpXcJZhTSwNdXDYHLHzRvDxBAqSS+d/hUAWPyMxqy3FsCb0FaubLHhueLiCIa9cH6ye3F6OQom5K0oQoVwDoQ==
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=Gi0GkP+/xd+rHATXYw/FTHcTO00/b0m8RhZLAHJ7HuU=;
 b=Pxi2JwqJxxfwSwkEkC6I9IlBC+urYMlANBqmwNpJ1yDH0iPMXNZdMtljJ9yrJb4igY8eyREAUKUwJpIMr0/FMnFTq8/FTnuVRAzhtHEJULNxzvoWvSSwTnzmVKc9OJ5b7Q7bfKl0uwB59MsojuvByneoLhvQnxtRSfB/vPGM34mT6v9ZpcELWus9liEvowpOFR0EpNGjQr55C1CPVAw+IRTB3KVJ1F0UT4ymzmXSxlllhw1QYQp9CQf/mjDdC0/Ki46jVtgs8CcZ6+EcJ3GBslUdIIeYNUd4f+GZMaCdtIYsPD0/nK4Zoez3LoxV7/9O6/bw8FPx/A2WTjlm2aHf9w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Gi0GkP+/xd+rHATXYw/FTHcTO00/b0m8RhZLAHJ7HuU=;
 b=Oz8jcaRVxj4nxTZHGvyZ980N1XW5zG88i4vKs/dbtkesTXwx6tywZQp+X5VL7PHAhBHoGEms+CdcAV2bWvpKlysFtRSrQJU7SpeMe1qYl7bbQVppcZPNau9Z5uCzFjMkas2bnEXS+COqRh0SCnKVkG6NTYu86flizFct8h6shdY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=Gi0GkP+/xd+rHATXYw/FTHcTO00/b0m8RhZLAHJ7HuU=; b=
	NzJcubw+UR9tWQy8fmGYNOYFwzuaX8uyy+bfrqTd7cWozeAEb1H+0hHkYsHoaC2o
	tm0V2T8GBpUDcJDlbXH65fSUgWSGLnqliTJ4IpymuR3wMAXHFPYmqER2afejltEF
	OBw4UQWSCv4/R8rSxK70NWbjlFlOJ000umBIoIAopx/bhnI3ldn24vXvyIGtu1Yv
	jdSOx+zWpHyJKTWfYwbGRPU5pAvbfGELuODaEQ8nzu8o2rSH300wyfIlKvTE2iBJ
	m/1eZAMVuI6pibRwBcsCfud8tj1z1M4iX43Sqd2o5Wy3z5MD5LG67c8kP9xQ5TbI
	31FP9KGN+IsPU+WCdwaNwQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=Gi0GkP+
	/xd+rHATXYw/FTHcTO00/b0m8RhZLAHJ7HuU=; b=uj9H7FqcHkOBP8CUTpTwNCc
	Y4GbDe+ufuNYvEb5TizjNf0IGNMIyI9aJ8C++tXy1wdG/bP9V6p4QF/dn57NXVhn
	y1reEF5dvJKkAqD8GpRCiw9g2JQIgv9qqzVTeAq9712B9gZxxFtkdy9959LnVro/
	1QoyHeicf5uOQv5tKUclbX1bsWX6W5FvshemgB1znn1AlNbFwuy24/MTCKmvJOsc
	k6KD/1LtgOXPO7eMbCORGJsvAyOyRlL/hJMV8kcpV/dOnybBlLFuMiCIB0BRyG2l
	fnB6G2ImLRcmhBkcJFQMGft2oNmROaz3CCWObskTBKVuwYnvNkGu2UgHkoNpdhw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPdxuiyDz55iOmPdxXLOt
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 02/13] CI: unify hypervisor console parametrization
Date: Wed,  4 Nov 2026 17:36:50 -0800
Message-ID: <20261105013701.719658-3-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0005BD5C:EE_|SA2PR16MB4202:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 9ef6ffcc-5e6e-4c2f-a8ad-08df3add4ffc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|10067099003|18002099003|22082099003|6133799003|3023799007|56012099006|11063799006|261022115727099003|261026140227099003|261028144727099003|261022105027099003|261009223027099003|261021121427099003|261021123027099003|261102123227099003|261022075727099003|261026121527099003|260925021911599003|260925021311599003|260925022911599003;
X-Microsoft-Antispam-Message-Info:
	FtqaJtWc9cBXvoYSwVB2lkD6qG0p0g2R3A4w21IPZ+avPbwtMHkR5bcvc4XxXlP3vkFXDutfb2RdO9Nlsbt5RvYLiUrDEbYUy4IFKKlz84TSkCbP1d3cw2qp7BzXssaiWn7pu/tt/Q7fiXS9QMCAB1GhAhLPjOgayVSSV2UDUcXIfFAJ2SYs0uQ1N+R/wHNYLGt4bc1tE8rgYn35uCTvPjfmK1IVL1QWYmCzRjUDCQ7wblTpokyb9mIFRH3F/7gHE+sQt6JIo1IcypAJQQFaNaip2dNt+TIIDIfXtGUKM9rmNi4ch5K/5gprHHyZrfM1I83ouwtTDCTHUUUJv/HGydjmc+dA5w/vAXNbUCVhq70OvoQ1SQKByJgMTm5ppol/NM5UhgV2QOLD22nE+EWvHHBEswMYvNZ3w4gVYKnO0PM892OTMRaGd51gs7LnigZECtB5ETHTB961mCxeduEAHK8vbip8qaRi9tCldU1cfRxIS6I51XOtfmuhtJnnUo80F2RX1+v1pk+A6QSrWsqvnuxlU+OdAedwn2mGU+k1f7KfG1kp5cSP57z3/zOd1uCHxylsKBt+wvL5FjIjH+TpaTV+hHDUUMnt7tHoEjmamy4YVinWWRIgxB4Xm7uye2Sa4wWnFZk+y9kKd755xaz/2GsLtmrB0/5Po16UD0rOcJSIRwSigIhlMUundeiITTQvwqKVhe5XwmHhGEALHg0/yw==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007)(56012099006)(11063799006)(261022115727099003)(261026140227099003)(261028144727099003)(261022105027099003)(261009223027099003)(261021121427099003)(261021123027099003)(261102123227099003)(261022075727099003)(261026121527099003)(260925021911599003)(260925021311599003)(260925022911599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	hzgsExPivAPpQHkuMWOMMplFERa/HUSFBPBQ6ScZ7Rm10xWzM9aq8YTqVngtkjaQWfbe8Hg9CluEG+rUv6YyspFdr4grZvThN4Kbrfh7cB7bs6F7HhTHk1DlM0mZWddRKs/b5joZ2XKnTLnQdW6SB+mCdAm5xGpwdeD83o6gaF6Y2yMqXLlV/Gx/0Y3HiEyfqpH01kKPwmPx6UfdXzcLYk1DBr9JbUgpAOqXZs5z6DlQ6GDAhxuxVEHQCSsgw7yg9OclG7+Wi5es//9A+Pcy6DFy+gwAfnk+5AqTieLaS4ELlKC7CE/05/pCRXHyWhcsP9kQ8HgIpgXre/lDF96c1GEDwEEjwZpBexzPM5LvNnSrvAqWFzk3qfpfzWmnPlcbfc7r6YMX4Jqn4LYJ6IG19510Q7d3CcrR1xzK/WjfCpVOowLGdiuftVYnI4u8Q4Th
X-Exchange-RoutingPolicyChecked:
	11uWfrnGp9XJCtzFNbXaKcc8Vt20vE4ZaeiKBWdYGdOV/iwwVJJglC5ydJZYN8WT+uy6NIH4aknqwQR4fJX/9NTtQimN0WEitxhEuODxmWsnMcHU/1baLyDpX51fM5G6zAud28L023M6iyJNvk8Q9HyE5uQUmHGVaKWP3pSzKwEXTZRRWUqx2LbHSrjAVxcJvKOeFwv8Zt3SBOOvSBafvU9Tg+649KThEEgxIE7tA7oL+r2D+CxSNf2undQwfYnqd2BgaC2abezVqq05FOKWzr6WbgxB+z2Wi2EaLLtWdjS9KawOX2lvz52lFN/IX3sJNSs/vzrYQtsKCoaxybjA4Q==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	BQOGhLT1G7XhYirHiVSDLtOBpnIn89vce07ADTFTEQWabf7+dYVFpcIrA9fAL12jKnVgvmPNe8m72/XUNcytVDIQRiQmaHJDrVxdJk+v34XEE/i92a4p+/LPDoSSJARCUlV+PRiViklAClXq7ofvsutyNT7z0ngzDDotl3s98us8A5AxYAu7+cEmKt4pzKRerT1zyaMxbN6j4r5h9GW6PIPQHQUNlGZTGCIjmzDDZOFLwIpnwjiJe/LahPY4Q1zU3YmdRt4DJZBCCBjYX1/XLfJwxnFqvwTpCjcl1sF7V6wEKvz5X6oYV2cHUtwn0+pIe3U4HDFGh1p2tTTETMgqyyxXFdvAZvK9DBoE/xxxcxTgv4CWz5LyblAua77UFAUiakDt38jxvs9fFw40jQW+0uh67KkGu8O8qHgkAwgd0X4QkTc/7kChV3mDxV7mD+MOEaSaq49Ktvj4luImeNJvrl7Z4F7FaqYPDvImK2CGQ0B+FY87qRZXbHqExinlfvDCl6eYaLlHw3QSevkkcfJwAIoSNWkBeFJRrasSWYiMtlXqBuhwWsrqYlhedT4O+JN5rI0JHXTsSBTqx+SuBzmfuFx78kgpN0m/CXdTOl70/O9j6gWtXVMJ0mwet7U5MqLBxSCZ4skKZy3lV24c69mgvg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:11.2826
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9ef6ffcc-5e6e-4c2f-a8ad-08df3add4ffc
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH1PEPF0005BD5C.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR16MB4202
X-Proofpoint-GUID: hOsGKOxnJOwnWcDQWmDq0s4wgAYVPEm6
X-Proofpoint-ORIG-GUID: hOsGKOxnJOwnWcDQWmDq0s4wgAYVPEm6
X-Authority-Analysis: v=2.4 cv=LcKpeTfi c=1 sm=1 tr=0 ts=6aebddca cx=c_pps
 a=U7vFK3P1qsHFYF4fogjkkw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=X3KReqg2EL6A36SYCKpz:22 a=cbNQJ9GKAAAA:8
 a=RNNgTiXw3qIT2INU9RwA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6CWJ0nbHlk8p
 1GsofrzkXmpMdOox7wfKGnPck9CRnFN0ODea5PCwxUgoBkrEOiQHE12mDOQiCXnJp2TsQgXFHVA
 S2dE12FG8Ofexw6FrnBZGoqNDUhrsQbBJhQfbejYSi5uaqK+7+264aaDsE3ljojj2A3MMBMWEPy
 +MoNMbus9uwmEI8lvZGF0OBj7dEkXfY5aor9BgPGiTD1LQFXRD+kNOrcFrOE9GLMzAroriWA35O
 dlF0h/vF9oIBcgc/uHmi5pG8E3SwjN2w9tSNWaOLCkthvqGi1Y+0GXYunuTU/A1VI8hFNBNObUG
 +8HeSBSPCmKsKZ2/2wg62f05ofXQNffJhTFIFWQ6lvo/7KLMeoxBg7WJo4wRmQr5eAvGwFQfLdt
 ZwZdAY7yFGvLhm2Z88C2vNYQoJHfb1EWp7iJ4Jz68atglzNpw6CkNHxg5QGYdPQcYevFSYktkVB
 whvzAjZ2qTwW3RLxaXQ==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX1ETofrUPTd1b
 bh/A4qDeFM4T0xH6jMxHZskazS+jdO2pszMs6RO0UnuVqTtKm/RK/sIAJztWE9wGyPIBCGLt0l8
 p7vtpybfWRtdrSt9HXYoaXtEAKa1O2KbwNN9l85VPmpchICcE121
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0
 adultscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842636-1A2C49EA-E1861193/0/0
X-purgate-type: clean
X-purgate-size: 4330

From: Denis Mukhin <dmukhin@ford.com>

gitlab CI configuration uses different environment variables for
passing Xen console arguments to the test jobs.

Switch all tests uniformly to 'XEN_CONSOLE=' environment variable.

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml                 | 12 ++++++------
 automation/scripts/qubes-x86_64.sh             |  4 ++--
 automation/scripts/xilinx-smoke-dom0-x86_64.sh |  2 +-
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 96127995d7be..f984c34a922e 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -121,7 +121,7 @@
   variables:
     CONTAINER: ubuntu:xilinx-hw-runner
     LOGFILE: xilinx-smoke-x86_64.log
-    XEN_CMD_CONSOLE: "console=com2 com2=57600,8n1,0x2F8,4"
+    XEN_CONSOLE: "console=com2 com2=57600,8n1,0x2F8,4"
     TEST_BOARD: "crater"
     TEST_TIMEOUT_OVERRIDE: 1000
   artifacts:
@@ -144,7 +144,7 @@
     LOGFILE: smoke-test.log
     PCIDEV: "03:00.0"
     PCIDEV_INTR: "MSI-X"
-    CONSOLE_OPTS: "console=com1 com1=115200,8n1"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1"
     SUT_ADDR: test-2.testnet
   artifacts:
     paths:
@@ -165,7 +165,7 @@
   variables:
     PCIDEV: "00:1f.6"
     PCIDEV_INTR: "MSI"
-    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,0"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,0"
     SUT_ADDR: test-3.testnet
   tags:
     - qubes-hw3
@@ -176,7 +176,7 @@
   variables:
     PCIDEV: "56:00.0"
     PCIDEV_INTR: "MSI-X"
-    CONSOLE_OPTS: "console=com1 com1=115200,8n1"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1"
     EXTRA_XEN_OPTS: "fred"
     SUT_ADDR: test-22.testnet
   tags:
@@ -188,7 +188,7 @@
   variables:
     PCIDEV: "01:00.0"
     PCIDEV_INTR: "MSI-X"
-    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi,04:00.0"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,msi,04:00.0"
     SUT_ADDR: test-1.testnet
   tags:
     - qubes-hw1
@@ -199,7 +199,7 @@
   variables:
     PCIDEV: "01:00.0"
     PCIDEV_INTR: "MSI-X"
-    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,msi"
     SUT_ADDR: test-11.testnet
   tags:
     - qubes-hw11
diff --git a/automation/scripts/qubes-x86_64.sh b/automation/scripts/qubes-x86_64.sh
index 065f03931bea..73cbdff2be72 100755
--- a/automation/scripts/qubes-x86_64.sh
+++ b/automation/scripts/qubes-x86_64.sh
@@ -260,14 +260,14 @@ TFTP=/scratch/gitlab-runner/tftp
 CONTROLLER=control@thor.testnet
 
 echo "
-multiboot2 (http)/gitlab-ci/xen $CONSOLE_OPTS loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts
+multiboot2 (http)/gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts
 module2 (http)/gitlab-ci/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 --nounzip (http)/gitlab-ci/initrd-dom0
 " > $TFTP/grub.cfg
 
 echo "#!ipxe
 
-kernel /gitlab-ci/xen $CONSOLE_OPTS loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts || reboot
+kernel /gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts || reboot
 module /gitlab-ci/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen || reboot
 module /gitlab-ci/initrd-dom0 || reboot
 boot
diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
index 5379738019a7..0fe96d62534b 100755
--- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
+++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
@@ -146,7 +146,7 @@ cd ..
 
 # Load software into TFTP server directory.
 TFTP="/scratch/gitlab-runner/tftp"
-XEN_CMDLINE="${XEN_CMD_CONSOLE} ${XEN_CMD_XEN} ${XEN_CMD_DOM0} ${XEN_CMD_EXTRA}"
+XEN_CMDLINE="${XEN_CONSOLE} ${XEN_CMD_XEN} ${XEN_CMD_DOM0} ${XEN_CMD_EXTRA}"
 cp -f binaries/xen ${TFTP}/${TEST_BOARD}/xen
 cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
 cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473380.1681018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPo-0000Zy-5w; Thu, 05 Nov 2026 01:37:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473380.1681018; Thu, 05 Nov 2026 01:37:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPo-0000Zl-2G; Thu, 05 Nov 2026 01:37:20 +0000
Received: by outflank-mailman (input) for mailman id 1473380;
 Thu, 05 Nov 2026 01:37:19 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPm-0000Lk-Vn
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPm-001xJk-CY
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:18 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd93-8faa-0a2a0a5109dd-0a2a450a8d3c-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:18 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcc-f2d2-0a2a450a0019-94a392177e92-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:17 +0100
Received: from pps.filterd (m0482516.ppops.net [127.0.0.1])
 by m0482516.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mZ5k1530997
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:37:16 -0800
Received: from sj2pr03cu001.outbound.protection.outlook.com
 (mail-westusazon11012002.outbound.protection.outlook.com [52.101.43.2])
 by m0482516.ppops.net (PPS) with ESMTPS id 4hr9tfbhpb-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:37:15 -0800 (PST)
Received: from PH8PR22CA0010.namprd22.prod.outlook.com (2603:10b6:510:2d1::14)
 by SA6PR16MB6766.namprd16.prod.outlook.com (2603:10b6:806:41a::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:11 +0000
Received: from CY8PEPF0000005B.namprd21.prod.outlook.com
 (2603:10b6:510:2d1:cafe::ab) by PH8PR22CA0010.outlook.office365.com
 (2603:10b6:510:2d1::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.9 via Frontend Transport; Thu, 5
 Nov 2026 01:37:10 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CY8PEPF0000005B.mail.protection.outlook.com (10.167.247.25) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.2
 via Frontend Transport; Thu, 5 Nov 2026 01:37:10 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mceI2969017
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:10 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrp7-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:09 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmPaxwlRiDnFpOmPbx5lWm; Thu, 05 Nov 2026 01:37:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=xge
	uzrEthdNFuFx9EdJgbNva0B8MdVED+N7Xgwhf5oc=; b=FrKYiLqac8x+r166ZWt
	5eUCVGdICM/130/gfAwLaiwH7Qdv9UlBpcjm+yNoRdN9eDKneHsJE43MQhfIJ3ec
	J7M8PfNJ7uuTch88mVu/bhtKJ3+vTNJ9LSczVFA83+xu0s/NIrFM702vUtO9iDmB
	5qRPLm5O2GIVMdfPVO2f/F+Fpgy5sz9+JMalQExyJPTtdwPdd3a+VK2g0OuyHS+6
	xZIsYFgY2MHv6mRJ48V6y+WTf4Di9a0FEdj1ZRsoiJYxusBYfvmRchYLh45s0Gt/
	NTPwoUMI5ekWDvx0pWpmQI7hHW789ygCiG2Db6ZbC/AOv1mIo9Kay7VBeJYkCB1o
	1MQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QWo2N6aDn3CZg1BWwivf0PhGNxT0zZTe/6Ga+gdSIWhHgyt1e+oKUXSWnYzMTlyAg0AbhlDTzW/zXIDQaEEtNUqBSjUAryQC2vlzOmm/hm7pNRWzKvYsRwZ0dIzCVfkYXLB3XV5eAn7D7NIHgeSBTb1js4hDZFTehGb+nFfG41ZDQAkQ/Mlauaqm5baxjTokYvJCswy2EGBHvrhzi4wie43CZoPwnAX1FDZv+xu0RcpQqw3OvojnR2BLRxizL+CN74lVEJXfkHVIJdXgL3r0zmBPX13syrXOzVJqZ+zETQngwrQ2FHRuxXntukIN94Uv1aYoTk6oXFy+RdJ/4aS/Jw==
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=xgeuzrEthdNFuFx9EdJgbNva0B8MdVED+N7Xgwhf5oc=;
 b=r1tVbBtO+tsbkiwerhF5YSvzGMKzxoPuliPDBl+qPBP7d/ovAw/JB5GEuph9TbRpL1bW5zi8bi+yiSO7rACj6JPG+YD7vCd2EqT/3cNdR0gn/IOp8T0u7oQT8p+WILizdj8Wtwiab504II7H3R4C6DWX0a2WCBNj+ROniQxex6BrxBVV7hGUK3S7LY9n3fmTwggTv20YTF1PK/x+XRrVqmCdlzbiw7J3JvQ9w1fKULekYu7Jp86gg31fVemHM42nrA7ZiBCFjS81PrmzUilx3gWpeCQgNfgdFBAyB4fhqmmJssTlktjeJFt8eOu9SOO1+jpcSNUNG0Fg/Dr8aIcQyw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xgeuzrEthdNFuFx9EdJgbNva0B8MdVED+N7Xgwhf5oc=;
 b=aAWP0IeDXUfH0KnMxNr12gxdL8lHR2uj1MONd3gjXVO0P85vq8daQDYojhIzBYwy+7iA5tJl4Aw50x+CBXB8Y4aToS0pCJyT+2b11Qr7FHXvQoBXDYf9slVkvUSFtjV6AtEr5bC0/pZ0E/E3R8bxPz1gGjWmVVtIMMgC+L3+DxE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=xgeuzrEthdNFuFx9EdJgbNva0B8MdVED+N7Xgwhf5oc=; b=
	Oed3OCsdNPwbnrO9pcflrJ9//ZyOegYv7VeNNyXoDG58r9BkkVHPHqW7K11NaMqw
	f+rvvoMdHDTCk1BSG97K148pxbEfIhqT3pBshyaZyxJPXdIx8VijqU0sRuR+snhn
	oQIL99sEJcrz3ROrnUQcNzFZjdLZBe5Yboc5I8bhd40GFcZUmHkSlmuDCuMasmdd
	WxAlneowozVO7+Hc/nuP0OiPUs8p7lxbMJIQxYGamvMAVnBcQ0xD0Zk0Yf88IEsv
	P/mJbim6mN7JxB6n5gv4RKXEkOpvDMNUR1kJv/UQo1nEeLXSnoMpk9OhF/M/wYWV
	4w+7+KZqz5iJVm9pZmbXpw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=xgeuzrE
	thdNFuFx9EdJgbNva0B8MdVED+N7Xgwhf5oc=; b=rKLC/qqRJcIrpwO77QxrEJ2
	AF9PjW3pUx6ANcror5CTFNnghS19K6rmKVVVmSheZEFxf4sZhsvXkdZnmKPcbUkL
	NId91tSx56A2iReQ3ZIcVrlQE9I8JP2RytDtHtiCPq6zqMJY6VaDgJcfrE5J7PQj
	WIR4XjD9Bf8EhvBq27+OID9vup38AQZP1OYrcscW05qeniytKVZIK5pUPD+OjYgB
	MjVwV+I2+parPdIqSh14z7jwZxOTu+rfsGNDmD05nja6FN4rmULFQIz7vnPLlBLl
	ASD8PfSoLmyVPErpo7iYD7MR1qvgOWZk6lnxXyzx6t5D2mZlYCCYW0MtFny3uSA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPaxwlRiDnFpOmPbx5lWm
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 01/13] gitignore: exclude QEMU testing artifacts
Date: Wed,  4 Nov 2026 17:36:49 -0800
Message-ID: <20261105013701.719658-2-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PEPF0000005B:EE_|SA6PR16MB6766:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 444c318a-1724-4ed2-3529-08df3add4f9c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|23010399003|1800799024|10067099003|18002099003|22082099003|56012099006|11063799006|261021121427099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	C7Lq4r4UMgZUf6eOq/BI6Fb4N+hkafQYmBrBsiOC26U524fj32PgI99uaI+HmI2LewfRgKGof5IO2FOmp1u+maFYrux+UPLgWDywwvXr9LsWAl9TLr7Il3nbn/UPWG00xPP1jbGa1v0LRSHli3LWtOqdS7NIOWv4/2ueQ2Z7nkw6HY1CUi0DPq9rzN1UIfzJmm2yNZV4+GQQweIcyduZj8Lj27spK04POGmCiUJui9xYmLKdqeR1fmRv5Ymw1XA1idRYs5h9Ov+QOGTCc5IgELf+L0U4ilPCRtxsJb7SGjKZjuZ/8T2Dpl5qa3pvJRuYtLwCpARjeCvb+QP9FOzbyFqJ7r2UNtRtNY2MWPKvjDj8UTra5mg9ox6FrjKU+5jU8l4hll+KWSVLhVnTzsVomWvauFgrqOLl5J7bCrmJ3wi3BqR39tTEUrjgzRLBpMtGHBgRaDcMo+AW2hKRD7ueJaAMhjSolW++bL2EzR+ozps9O2+Z9fAjV82Ef7wjlx4xCRB6A8PQQExBmDHwtRW4fWX/AEDtZ8Rgc5Ks7XhyTt0RTsRtPDGMHMr+lUOZzd9Wi0iCUOXRDHbT8IjbDYVaJH9ovjHflfvZtloQjDqIGkO8RdhoF4gZZgcutj9JsTe2R3XTIWKBx7IGyUXwbxHWUtaIGGNYZV8g5bY48J1OH8LBVlC0nsq3JciEEQmO7ARd4vwIKjRN+yBDVmEIbmTTdA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(23010399003)(1800799024)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006)(261021121427099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PBeF46tu8nUzUmn+eYjqbuhnS7flg7sBXUfWc8sIG72TmQma1T5+GCxVrNfe4NAKt97De15bZ8Bt52COKn9Hoilk6bAAXcFmO0SH67tPZH6/XRh5RqBrFxMVSKGY+SC4yw4m6tw+zATreWErW4oDja0LgohRoK0rhtHM+0a3cKZxWgoGaKgWOEBkAF3c9xleKxqlJ+5obpHwMdHsg/P2Y72XlTOaFf5CJoAK7toRamkgPmOv6GFain3jKb3KoJkM2L4JsTMsMuyEJ6QDU14aTRpmNfJl2LlDkTwV0YSAOwtD7YGSQ+aYQI2g3F0KMx40Tb2Aihhayd3vNn6PFiJSCpyTCEgkW/PuFfAcMC0VU6vP2alFQifXcXdAS8FN5IZrsRdkPZlkL0+enwiOz20fZ0hcyu7gPlu6FcoUz+KMvmfhP2BxdsMfhFMTrTCd3Bwd
X-Exchange-RoutingPolicyChecked:
	i+F6qt4pzepd2vXdTgpRE6ak3CqoJ2zZntDlSZHwNMhK21jxR8TDPlzsC43BgpLS96Hk/yPR/mVhPNDynO+DhbqXeY1iNxX5H6qJdjh8EN09QPve7uLxBThemFuC8N9WiuEbmotVX6njIATHuld1pHjDTPkjb703ONdI55MMXaXISg4mia7GxUWfwt5qtddIyghYreo8m/k0QCB4s7CYGIB4FK4fT6vgMSW4Jlhf/EeyBGEng+/1IBgv3UucUmx/WY2KnVTYpSgbXv4xwqPoSgme7Sbz6fJd5T3DKM1WXw++uEOjiOivDX2WYxlmqi3BUOHsENGaV175hobGE/Whxg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	qMqzrjREA7+D6Is4G9abg3TMzh63Jl6x/2YHvhJH6AMxQI9qk9pKka75jB7h5ZZkJwCQFidADb8fAzDGGYyEsh0n+SSSd/Nd7rbomeXnrEiC8drDfrmVn3h9rqLJfw+uXzn82boCQqAyQyktS9iQHWu7Kpe+UDlTJ0W+UglHoDKT2i3xQfHXjhC1bVdxcAGCpUX+DYOb5LsnFsx8j1qPLaXh4CgNkjknLAbP8czhEamA+kMRWg76YgO7+TDKTvqnnFeAQqMJrbF8laDSzsQRMM35/yE8xuCPA59knJKbecWe4Vvp8/kxHKARW4xwRnDDX5ZrhL46GcvZcmFtmGZd/Gp4PAsGg5NW0FY/sW9KSWYpfdfnxNLiUrKJKWe9A2XT3qVTCbAU72YkolsD7A26lZVuX/5/c32B/zy/yx2+H16yTS5iwNIRv400VJHv9PEBJvk1pMsyXHUOsa8pJcoE7X4ztQtUXay2cD8DZ7CiBCx7LopdUeg31i05vRIaaW3567NP1qXyoH03fsIBOy0xDg13dZFmsVY//l7Pp+j7CMlkDdHXGqxz3yyWK18TgfRwb4qinRPGBz8Y9GZHr0DWpllUpz/iUDfaP6tQBZVcDCtsIBaM+aijwU61tzZtrqtdTxpGrRxRLKgA/CntkPk13g==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:10.5694
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 444c318a-1724-4ed2-3529-08df3add4f9c
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY8PEPF0000005B.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR16MB6766
X-Authority-Analysis: v=2.4 cv=XfAcX455 c=1 sm=1 tr=0 ts=6aebddcc cx=c_pps
 a=E0F994Awt23I4DNeuEdoUA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=NvsXeTrgx-CJMFV-xl94:22 a=cbNQJ9GKAAAA:8
 a=oX6sQOh5f4QriJ02HC0A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6COQaDlywrwr
 sJ4yOHpKFXyUFlaIVPmfC6O0Lkrw7DWVFSL5/HHGwzsO0ihcDgOQco0qW3WZzwtLjN056Wt0j6H
 bStL3mBuAXjUBm5IATHAHxsAoV/8aFcuHN35Xk01FgO9aAjU0DTs
X-Proofpoint-GUID: QV0QpYOPfwBW3lGo7UJAELbnc4tRH8Rn
X-Proofpoint-ORIG-GUID: QV0QpYOPfwBW3lGo7UJAELbnc4tRH8Rn
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX8OeoO7X7Wovl
 f8kNi5AepZS2c33KXTKh+Kk2y7PwGCNU5rq1O5pX+C5ysHPdqCE6O1GSO2rO2hHrh3q3ty2C25C
 /1+Lt8H5+vdFXk9xziddzyzsHYpPH8YYf7AuQ1grB3InbKAFK333DXXGsKdoWunyMlOkeikuwnl
 S7ghZNrcYRvWjVG2kH24XSMZ3Oa4lcu8yJKFAAGx8fSe0g2HDpyIZtfIBEGwdwoN+GID7p2ivxG
 0W3jm+LpO0OcNzTlT5Bt5u8zZIl8R6tSelakS1pMLE5bYFFM2ghuS7+ehvIOYuu+demKJ/C8oKu
 /3Atxf7Ylhjr0du/Bfax87wn+2w+jKUTw7tS2GsRuaS8pC+XyaRpQrlACad2tEegSmG6iN0kCIr
 7Dqf8gK+rw5MgqTVVCUrmnbH+imEX/LzZeS87zzOE8NVZLM3GhuUgoJpWW6rPJqrockO3u01iZU
 azJ57EuTsIIJ8k6/3Dg==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 bulkscore=0 clxscore=1015 malwarescore=0 impostorscore=0
 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842638-58FC6CFC-5E03C39D/0/0
X-purgate-type: clean
X-purgate-size: 743

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 .gitignore                    | 5 +++++
 automation/scripts/.gitignore | 1 +
 2 files changed, 6 insertions(+)

diff --git a/.gitignore b/.gitignore
index 0aa9b801de63..46d14a86da84 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,11 @@ cscope.po.out
 .vimrc
 .vscode
 
+# Local QEMU testing
+binaries
+smoke.serial
+xen-config
+
 dist
 
 autom4te.cache/
diff --git a/automation/scripts/.gitignore b/automation/scripts/.gitignore
index a01b533c60a8..f5f0c15d2606 100644
--- a/automation/scripts/.gitignore
+++ b/automation/scripts/.gitignore
@@ -3,4 +3,5 @@
 /smoke.serial
 /xtf-*/
 
+*.log
 *.rom
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473381.1681027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPr-0000ri-CU; Thu, 05 Nov 2026 01:37:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473381.1681027; Thu, 05 Nov 2026 01:37:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPr-0000rZ-8k; Thu, 05 Nov 2026 01:37:23 +0000
Received: by outflank-mailman (input) for mailman id 1473381;
 Thu, 05 Nov 2026 01:37:21 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPp-0000on-NJ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPp-000xTH-3c
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:21 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddb9-bab6-0a2a0a5309dd-0a2a450be758-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:21 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcf-b7e8-0a2a450b0019-94a392179934-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:20 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mW5Z1469725
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:19 GMT
Received: from ph8pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11012027.outbound.protection.outlook.com [40.107.209.27])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk511yn-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:18 +0000 (GMT)
Received: from PH0PR07CA0037.namprd07.prod.outlook.com (2603:10b6:510:e::12)
 by CH3PR16MB5843.namprd16.prod.outlook.com (2603:10b6:610:1b1::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:37:15 +0000
Received: from PH2PEPF00048919.namprd05.prod.outlook.com
 (2603:10b6:510:e:cafe::7f) by PH0PR07CA0037.outlook.office365.com
 (2603:10b6:510:e::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:14 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 PH2PEPF00048919.mail.protection.outlook.com (10.167.243.75) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:14 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nDlC3230937
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:14 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnpbe-3
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:14 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmPfxdKHgmeVDOmPgxZoaF; Thu, 05 Nov 2026 01:37:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=zuj
	fODrMzhuoOtTw8KoD9MLBWhlkSYHoJbtVpREWChU=; b=JT+pHz9Af1JLdkJ83HN
	PLLXcn4eIoQy0RJW69h3YZzAFyyXOd/A4XD2Y88ExSKvNW4NQZG201NUDhb4LUlT
	tSLQ+VtmiKSL4ms+Amk2tdHCzMABK7E+wFPFP1ALJtmibNVvsyoE5ommJ4VUx717
	BAgAb1ZwzdenjwpOx7H2VkAMb7ZDB644BNcvQzs2JHNAFUJygDHCXr+V9MqZYy02
	IFQAv9PyaRyiKL+0a7vIYa3TdhJj/FMYq/tqxKgWAJy9BlGn5MixpFeBSaMmPZ/Q
	oHVbwt16P5opYmURlSm/+S9Gmv5JiikNmS6uaVXtV6df6oDBd9EloA263+ms24qT
	Rqw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Z9nu0rGVF0BGa72rupRwbfYRlsw2HF3r3zQcuQkLuT9TGTIWXE3Uud0wzir49B45QVXWSQH6MK3sCMB+Vn+55RTH5iDt3yDqW/OW/Pmdrg1+GWrTu8RkBaU0UWdMhLOGKJawpJu0B8F0baegY5CcCBYCvVFnXC8TgG/UagUTixGtl/xLZNC7Mvh4iaLYF43QjQzrsTnUJNRBdaY12rC2uI3s7aQRG7EZqE/l3m1hj7M/4daKgEuwRbJrCoBvKIk9GyilEuYCWCDf6dVS+oj9u3V9Rlgndd8EAq0XgufrG5Q80zIuNz4HIrbOEGNk0+9GeTBYRLDInTAZq/mPdmRzcw==
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=zujfODrMzhuoOtTw8KoD9MLBWhlkSYHoJbtVpREWChU=;
 b=GYDeRk2pR1nzLvq/GJQh/DKSra/MBdUjQWo325MDP9iRuVE1KPrFI+F6jEXaJFsQZhp0QMEte8oHFhFzSTjussaQEItBxBBTYbzPcRLe4h/7bPRJ3hWNxjrtNhbAd2DUSZCJ9yfgE0E+/ko1Hh9zSMFW6IHs7jVZisdBDp+mFkoD7gAHYZqQROkG/I3aLLW1YF9+lEo5dZrZV4PnlgzpnDBpa1rnr47kQkuVZJOPsL4ksGNKSCv4yhBZINYFh99KfEnxU70Xp4752IEXG5TSjoI3biC2iijrIGeUCVd0bIIM0VT0VkK7suENnJcklUYUJJ0hv+CCw2JvUD7zK9gxfA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zujfODrMzhuoOtTw8KoD9MLBWhlkSYHoJbtVpREWChU=;
 b=hiB0JDp4cPZXW6tUe7NM0DFVX2vGr265UNAfsAErJNg/gAfeJEiXaQd3LQVz7lEqxSjK2wep3nWovwyyxcXJ5yCfCubzeaQv50Hp/TJ+xPlTWMWW65skhUVxkYWXE0IvanmS5YGwgCH01dmc4dQc5HVPZ/xF0CMy241MGpcQn6o=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=zujfODrMzhuoOtTw8KoD9MLBWhlkSYHoJbtVpREWChU=; b=
	RgMHRHXvXRfrVk/u9sxbxjfCOOURFHsDHLsOfxvvz6RK4Iki2d8A0pBUWKtQJv9y
	Q631x895lgScwDeRcKnmj6GQsBFtVMSQfU50jkLPNQk1Ir+jI8C/TXwIKqdSPbKB
	5r/SvXuS6hgPmSeg0fBXTl0fZmAMJg1ByH/nHWnL1DGCRC6b2pX69d9BAMnsMuFI
	19Ruo8THkfeuvo8dw1y90KtvZXXFjn9M22mUjkOEYu+RBn4SYYNbY/HSgUdsYeUZ
	pLv/2NJW7cdOClQ/FCB9NJoioqhByxx1NSFJ4PFSnlZ1BXxLFnhAUBSFuALuov02
	MqT88GNOXQnfS5iWBpdtvg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=zujfODr
	MzhuoOtTw8KoD9MLBWhlkSYHoJbtVpREWChU=; b=TjJdanySDhS17JNeEcu0JRm
	PBE+Gsg3yshARg67k6XzOLX8816k46uZSyUqWAP2B1KxBZc4hE+Rk7dXDmIj9GD7
	TyM3YM7o2/Gb+XKcHdsJ5DVW/H/xirkX1cdLVBA/1HBSJYCBX7qf7EPNuHrCAl14
	nvyl+B1mEk8M9vNCFNQSe7UjAy2seuVBEA7knNnEnglwOnGpAZCJkq5j6W5gR0DR
	8wgalSRJxE4WeAxqMP+pfSZPe7FBQ6njcEW/oE7/u/gx6cbHfiuzr42qDCXtX2jl
	1fO2qeVsqjXNrvLzSfnHTLLmxtP63Z0fYsKW7t0yHjogdGSSLGBBT7ov8E2ebbQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPfxdKHgmeVDOmPgxZoaF
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 03/13] CI: unify naming for hypervisor extra arguments
Date: Wed,  4 Nov 2026 17:36:51 -0800
Message-ID: <20261105013701.719658-4-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH2PEPF00048919:EE_|CH3PR16MB5843:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: ff9b5b01-fc9e-47a3-967c-08df3add521b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|1800799024|376014|82310400026|36860700016|261026121527099003|11063799006|261021123027099003|261021121427099003|56012099006|261009223027099003|261102123227099003|261022075727099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	eEscxWOw0zFSSERa1CuplHZZIe/Kx8DCWHwnChWhzXzpxQRxOXD8JtKj2LRJGwiyjyxHOc6MTyhW9f0s/2bkg5iF91zR5Ja2gmVal/YcNfphw2OygUqwFcaBC0G7o0spFiQHvBibc3GVQRrX9YBhn429DwACWrxJypBQn/ttHSXoxbLzsZ44N31rEKOWDSXNVB4+pR/yntCjIbt7eUGswMhaXKGaG2UiOCyxN2iJ01iGpdZWXeC5nYPqnmj4qqe5ufPMSVxD7WRUss/RTcRBlksFlSkQpDcNiWlnd6rodMi/+WB0x8gmijZiy0wp5MGKulMTwD1FY1wEo1Vu95/MygUCqn4hwr3FU3ukIPCQ6rSHVmULOUI9cFYNMjd+XThPtYb5e5JiY99YIEHjk/sjRh3gm+1XlbxJCkGozrKOyVCKSQmlmomoqtJ5lvGTy1s0UjuwMqVoBMeJ1HgDckSK74sSGbdKKMCiSpzColOKgl+S/zllX8M5nVHb8Q1pG2SJ1Cb3IhdZdrPAy9hZDeMStr2HEZYULx/ULbnoPcD5h46mbfwUJZbaEoVNlAZeGRwsVc90P/qh23nu7M4GEem19Vb/P6CKsoxdTtMsS+WQXlic5+ueRc8qr+UGRt4YB7yhLwTCmUcHoa3XTaesTgoxpWVqc6Fj4T1tfv4wmgnCI2ueqbI9dTW3Ww6TbOqeu9jMB/N0vRP5Bjpo766cI5CFAQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(82310400026)(36860700016)(261026121527099003)(11063799006)(261021123027099003)(261021121427099003)(56012099006)(261009223027099003)(261102123227099003)(261022075727099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PI0iDt+1o8oFl7MxFHqEt/SleM+CO7MFLvMlV031G96L7B2Mx6MjkPKMpV8oRX0Y7IJY0W9/8mn+oAPMFo1IqSybfefZ13tb6Tl6OMu/Tp0Ek31nXXepmqExKSr+aTphBOpYmPLVTMNUMLqKl+OpzWepItR9RwZJVABdBCPWslze1UeHifip48UQR/TXpRhBwCfPpQMHwvSh5UhwnVmwYfoZ5mZMO+kAfkj0vyr7k1fe1rZ8QVLs1zo/lWC45gnREyaBZiRtsl2RhN3vcb8TLhc5SWRorvidFQ+Tq1ubbJJW2guuEXU5+8/EZ7qkFt5O/GnaeobesfIRkJNhwAMKEPvOQMzy4XtkXOXOEisYF2pVPOcPx/d5ymKLKh3jh2LtEpOioDy+0uov5KNZwCu53aQ0JP/w7vAEDi6pfNy+u0RbeCvTyMKuom+fI85uXIs6
X-Exchange-RoutingPolicyChecked:
	Uj4lmp/cqOieyxRO4FZEKU/KlcOCpMOP1VTkl4ZjrMZsIdjWwVeN3vrYm50c3CWO/ugLK5VGsXLttHENR7iIlSMKAzV8VGCG769eutEObxiRgV4VsNhvR77MP6siLezKFJ4cOfTmXFIIqdg8iSi4zy7N/UaxjDAs6Ck2uMvvH/G7MnUxMIrWmGS3q4CKLXTnL62IM2cgJWHzfYWBVOvQTJmDP3dzffO/IroiEJDkDJafdh3mR1Bddo3g29Sq3A2JKrjAW9dqGZkTz6vzUOlcURZuS7HDSWfHA5/HFyZ1uMZnHrGDZgZ6h6/KWLKqzNxU3FCpGIO6rTGQRiy2ocoydw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	+W3OeRaDrPqyKazuochSXhnEyqWbxv+leGxiYdhyP3I3NU8l6qAyOwChRsDY1MqpHGxAvO3i4SqWV0RxPO9DmrpohuIyeo7UlLGMflWCXRoXtTEE2gSKz35VUxGi2Ucor8bidRT9P8wi034RHSrKf4w+8P7Vp79WvW1BX0eHS6epKJ7V2kRyjnpvHVcBvzX7EX5kgyN9kZWn8MQpQLUN4f09kjfVcGRNvWWpCIezLcrVhWHF6tse/0UM1SRUf3gG+4/2Y2i/gdBjQsaccvkzMmt0DkF68hzbuDPQNQTsNNIwF8IcbS+IDBCu3h9f6HhBIcm+UdCDxdf7Q1ysrwY3t4N1d+ro3iMb6KOWC+lS9cnLXA/Sa43/9G3QiGF1HgbxphtdpFmK7YzvdAqoGnchunk2OAq71/HdxeYluByc/jhoqeNrsO1tMwaKrWJHmZq0ZHfRR1GcYtz+BwYPnhRMGHbuiYSnuItH7eJwAxYBtPucOWuLFOeZ2cyliGAndKBiKRvEFvdNCm2dV8m8stkCMfyuKaF9/tdj9Eyo1bUgSrcFC3L4prylu3txuP/L8uhgVd4z5xDA9zL4Mp8DHm9reNe6fatxsqyR4gcCoU085RKlR3lEb9mjLYO0XViUwf0fjxgV8n5x431V483lkdr1mA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:14.8466
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ff9b5b01-fc9e-47a3-967c-08df3add521b
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	PH2PEPF00048919.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR16MB5843
X-Proofpoint-GUID: elxcNwdaW8WDbxOEV0XBj0QGt2o6uGgu
X-Proofpoint-ORIG-GUID: elxcNwdaW8WDbxOEV0XBj0QGt2o6uGgu
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXzHJs0noRi0oS
 MEowB1HjiUZNy+pbB1TO1SpqiD4SbD8tYDZp6OrxRkWlDEUKvnNULQHE/XJNm2CfnwWaAizI3NW
 beyqBSB4mheg6+SvT8ZT0nT4rjyw7p+2lMqnjaobNuM0XrUsRqXL
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6HwY3DwQNvxo
 kj6ftHT8iZjp2LE/OsRQLXJMv2Dx6W9sAjKEte5Rf7MMC9TEDz9UqPDE+Tg/bYab3Ak7V8KX25p
 YvH3iHD2i1/Fx5d+YgXi/i/exwLeUdBF9yPn8xUC52E/w9vu8vtuZpg5PjLHaEk4qwJfTzDQskI
 c8/3/gF9qQoOYwm0BofmKsknT+mkhW/lWcvjxWetQ2GQCvZfrE/EH+90GHhUkHitfH8ozwuyjs2
 2mW1c637qi/P00xbBhFPd9OyfRowORygN+ASBF5EFg2fXYvPEXv8fE8lsdLa9bRW2+VrVCJ4Qw6
 Balbca9ZSCWgHuPsAXO/delXFPbic1iSf95iJr2owQkOlpZpp70zNvUuiXQ1TgLbdODzQATPuoc
 UtDFXX+Y0I/K6xrJ00c3TZEI4v2WmvXdbROXY3yqbUl79nS3RK11cqcrNqTsDLdxm6+vGSlIbZb
 IAumMcyUMtezjR23B5Q==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebddce cx=c_pps
 a=HiuaN0cSM6iMs60el9to+g==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=Z880l8yvlKrMw_Gkw6kA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842641-AB0DD9EA-DF2C9586/0/0
X-purgate-type: clean
X-purgate-size: 2117

From: Denis Mukhin <dmukhin@ford.com>

Update the name of environment variable used to append an extra
hypervisor arguments to 'EXTRA_XEN_CMDLINE' for consistency
with existing 'XEN_CMDLINE'.

Not a functional change.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml     | 2 +-
 automation/scripts/qubes-x86_64.sh | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index f984c34a922e..047c4d513a65 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -177,7 +177,7 @@
     PCIDEV: "56:00.0"
     PCIDEV_INTR: "MSI-X"
     XEN_CONSOLE: "console=com1 com1=115200,8n1"
-    EXTRA_XEN_OPTS: "fred"
+    EXTRA_XEN_CMDLINE: "fred"
     SUT_ADDR: test-22.testnet
   tags:
     - qubes-hw22
diff --git a/automation/scripts/qubes-x86_64.sh b/automation/scripts/qubes-x86_64.sh
index 73cbdff2be72..580a1e86f1ef 100755
--- a/automation/scripts/qubes-x86_64.sh
+++ b/automation/scripts/qubes-x86_64.sh
@@ -260,14 +260,14 @@ TFTP=/scratch/gitlab-runner/tftp
 CONTROLLER=control@thor.testnet
 
 echo "
-multiboot2 (http)/gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts
+multiboot2 (http)/gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_CMDLINE-} $extra_xen_opts
 module2 (http)/gitlab-ci/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 --nounzip (http)/gitlab-ci/initrd-dom0
 " > $TFTP/grub.cfg
 
 echo "#!ipxe
 
-kernel /gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_OPTS-} $extra_xen_opts || reboot
+kernel /gitlab-ci/xen $XEN_CONSOLE loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot watchdog ${EXTRA_XEN_CMDLINE-} $extra_xen_opts || reboot
 module /gitlab-ci/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen || reboot
 module /gitlab-ci/initrd-dom0 || reboot
 boot
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473382.1681031 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPr-0000v2-LB; Thu, 05 Nov 2026 01:37:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473382.1681031; Thu, 05 Nov 2026 01:37:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPr-0000u1-Gt; Thu, 05 Nov 2026 01:37:23 +0000
Received: by outflank-mailman (input) for mailman id 1473382;
 Thu, 05 Nov 2026 01:37:22 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPp-0000ov-Pg
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPp-001xJk-6Q
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:21 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddbd-8faa-0a2a0a5109dd-0a2a4505a81e-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:21 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcf-4cb1-0a2a45050019-94a38ff105a8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:20 +0100
Received: from pps.filterd (m0384717.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mn6s1339679
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:19 GMT
Received: from dm5pr21cu001.outbound.protection.outlook.com
 (mail-centralusazon11011005.outbound.protection.outlook.com [52.101.62.5])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrbv9t303-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:19 +0000 (GMT)
Received: from BN9PR03CA0099.namprd03.prod.outlook.com (2603:10b6:408:fd::14)
 by SJ0PR16MB4773.namprd16.prod.outlook.com (2603:10b6:a03:42d::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 01:37:09 +0000
Received: from IA0PEPF0000003D.namprd03.prod.outlook.com
 (2603:10b6:408:fd:cafe::73) by BN9PR03CA0099.outlook.office365.com
 (2603:10b6:408:fd::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Thu, 5
 Nov 2026 01:37:09 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 IA0PEPF0000003D.mail.protection.outlook.com (10.167.249.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:09 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mtE63092129
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:07 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhk7-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:07 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmPXxheeBkWyrOmPYxKE5s; Thu, 05 Nov 2026 01:37:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-ID:MIME-Version:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=ppford; bh=aDC1lM/h49/xUMqIMAbI1efwe
	aDfCKcHFFRHExvyUKA=; b=kdwBsFIopSoWwWPbZJZeMPRlIFtdtlM+FJso+pKdA
	Kj1cMLt/a5TjaqXY4rkAeZl6yAt/0n6WPZvsPQ/+08/b3BVqTsJXUNgrkrU/EqDg
	W/bAXsdCWzvPQtDkcqIk1onQq2yj0XRMnQK9VwVrkZX/XjdV1qf0TV2W57659XWa
	vddQXLLr2QrroEpSwWsfZ8u0XhgX1/BvY5CIIiYxnuTgebg7Brs4fTsSMxne6Awa
	QhYS/nCLslloB97GlBN/VoCvPJVfeh/2TQ2ctoDqCLuXyY/kJ5fjYHt7fghGTF/N
	2xYBWFh1F7oFfFmCkUnwS2TDAMz1BHBiV2uQbjuH8q/xA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UMfCtlfBPr+vmdG8bbIa46/skY6no6MgGIzIyjgNs8WYzlJqzkynmEhwTTRK4m6+2srjS3l7Kka9Gb3umi+z4dlka+lojmhWLbLo3NTJAoI5EkR/BVpumGH+B4rsdwqPdaWZwsRZlKpD2qtWH8AAt9j6ZpsKGhq7kG4ELv0vJM57deTRewwF5Ly2lUAOMPE7ULPTJdaqQqy1ojSL1Pt8krwZjJF/vH30oFUghRpo75g//LbJcYlkqrflA93qJZSsCzRzZ5zN5XeK9xv4G6C1cd1oOAzkkMq50vq5iR5AW5CiZeXOz70oP54kISKNQzHRYeBCgUO0z4O5wSV11G5afg==
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=aDC1lM/h49/xUMqIMAbI1efweaDfCKcHFFRHExvyUKA=;
 b=cuJoCeYqG9UHiDU7VnCkdxdFrjLKBdBVRmHDsuhi3P1R+88GQKOjIPmzJ7OUisx6cIO6IyT5KMm5Xoe+EOAEPOaIGtxjFox1WfV+h6smgFddyAANWUSL7VFFvID6MBQtHbmS/VTB2fGi42b855oQMfvvzXbayaGeTyIzhgMaDP7H2IjxExerBSozlz2bubMM7gzz9bqPXhMyhfNWur0OajVTol0WLY3kS2K7r2+bioSbmfa9fkj8QqHyEX4mE07xUB0kW1Vi3Cm3OaavnzwHYjJM38KpWyOEn6x+EqFvA5ivAElGpbPuklpl7rNdvP/BsL40yzOcYmBJ2V/vBV1q3g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aDC1lM/h49/xUMqIMAbI1efweaDfCKcHFFRHExvyUKA=;
 b=Xy61N8yCXA42QJ1mBF1VZu/+8SBjYrSvAOylRHb6rBjSkO/vTTTn1zs32/SFKSqa3L0hIoxEdgIxpJeEJzZgo63qJ0m3my8/HDAf15VbdujG66H8RduVvOLw1fQSraMZ92fzkeptkyXDdyTsvhK+JwWtenEygXMUEu29BMAu1Os=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:content-type
	:date:from:message-id:mime-version:subject:to; s=ppserprodsaar;
	 bh=aDC1lM/h49/xUMqIMAbI1efweaDfCKcHFFRHExvyUKA=; b=cDepNnsaCEtj
	4k5Xbd+ofOKPujLIqd1HOtnEX/vB+88BI/PXNhp9NMAIantcATu2WOZnA/8r6YPC
	5+fXwgdnn6AFwtC+7QHONwZM/ZY5VnF40QcQqL83OIbqCtqV84zUK9MBGbf/KSqw
	sXGNZxCB5zB8KX3je/D0LxcNxfi46pnBn4qbRT2UJJMUm1rJsDNP6TiaIJJll4gr
	fWr+UcP+sto3E9fWubsS8aBbUsw67b+liaBZRs/fi/X2b02oV6lD0EHZdpN3kZXa
	lOxrBvRAg9vAgv8nV0QYAI5lerq1+XAHMtRSBA+Ypcv8E5GcuAeYTKE8GMtGI7Im
	geAYKgsX6w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=ppfserpocford; bh=aDC1lM/h49/xUMqIMA
	bI1efweaDfCKcHFFRHExvyUKA=; b=hCNe+yn8SSrJg6M/nrS79PWFaHkL4u/7hE
	LyLuFgZ9gNrxnZ6gw8wsms3bJN0T0svZBbmLF3ERcAKC1V69KaSAc0BkOPX6xyGJ
	xfTEwAlILYnkbtSIfZ7NNbFZPoffMHx2+Tsjo17cC/EBRo8Dv+bf/8vTbTMHYdGX
	7AV7ww72hwGF3C/JSpjswiXNNbfPc4yLvFlqAkl3NaJlVDhFfbuT06ImZngVIvGh
	S6HWaeeJtjLsFkvjpv8MG0KPb9/FmD2oBAHrgpGCH11KoPG5IrUQU2259tWmGiWo
	zo2Df3/k2wfjddxyp/xnk+pjJKdfIALmhdMQGsSQuqUlS6ZOs2vA==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPXxheeBkWyrOmPYxKE5s
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 00/13] CI: updates for XTF jobs
Date: Wed,  4 Nov 2026 17:36:48 -0800
Message-ID: <20261105013701.719658-1-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: IA0PEPF0000003D:EE_|SJ0PR16MB4773:EE_
X-MS-Office365-Filtering-Correlation-Id: 0d7cdd83-c767-4bae-2245-08df3add4eb2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|23010399003|6133799003|260925021311599003|260925021911599003|260925022911599003|56012099006|261102123227099003|3023799007|10067099003|13003099007|18002099003|261009223027099003|261021121427099003|261022105027099003|261021123027099003|11063799006|261028144727099003|261026121527099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	wVOwhnnhA2tm19KcCvQ9EiZCGa16uRhhzugQyr7QFSG7Sqa/jXMl7t6Wuu/3uZvUX7Z3G2FXJTZahdGp2oc+Z4PvlUzAY0ZcYiEiU4d4F0e3aEJGR8Yhn5Oyzu+wa7dYft0Cr3KvZQ9v6KpGxiqrfZt/iEPms4r1w1frdpslTdKpLC89vy+9ZN+pUNJITKNFwCYB2ywIzkk6uJxVOnjFE/AKXC6oVmdwKBYDRU4JtBS1RCKxyu11aMLFFlB6u/+f5GsGS76IbGba2ZW3lyA8E9mAC9OQdxl6QKbgScy2fxBbVoTUYtdYII+yp9mcYEfoDV3wCIrdvdBN8cvTYaLIY9rF9XgkyE6+1iMhejNkQ+ZILSbJOvsBnm8Adln39F7ZMyyxIMuQ6cHNQgn+TRVoDa7d9Q9EMvaH49NGwzVaXfyk9JJUOFWGKWDtgC6wOsW18+OapHa6UNmb7Kzu3Zg+eOCqj5vS/e8DBirm/yORN0wkB+oIA6PxowXdwLAXdXM8hKghT6VoadU/AUW0xvE0clfGzZ5qCslHba1ZrLB/lPNF1RXzaWF2BZaQGA91vM+PZMNIYpFoDt76MiVXkYLn0+oBXhIG3txMMyrcy6/4sWvX5Kxws718qXk8569x3JhoYBekSvwdHv27CJkkAm1InzKiEvTdMgo/Lpe9zL9bwYk=
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(23010399003)(6133799003)(260925021311599003)(260925021911599003)(260925022911599003)(56012099006)(261102123227099003)(3023799007)(10067099003)(13003099007)(18002099003)(261009223027099003)(261021121427099003)(261022105027099003)(261021123027099003)(11063799006)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GDICFdwEmWrx3mCxmXWayVyxnkJxF6F2KH92anHwHm3n5aNNfrEZQ5vxUVLiHPL2R6k9gdy0TdItpzWuhVSxOKQUvpsajtdqoXz7Bv7ZFfO6iTPZ2VfBZBmmBACEY9TDmM6KX/SFXqt90o7TRblefeBMXshfBOkm0JMNNZ1UjhRpd9ztKTfJuzC/QDO+5Bwebj85AqAZC2XKy0iFxZ9tBDdVCDqInOR2cgkVVnYWEd0pCdsSPpnkylcfQ5gpO/Kt7nGsYQBsRYnkMoQWdv7Gs2D+lalyHQ58i1y0SXFgXsF5L/3zipjnLuzXIWxxtMsjTThyj8W0LI7Enru3ubq47Fsmv9dj75ybsnYA/kiEwGfNlqtHrxFvHnxogLTnSwXmrgoOUanjfou61KfgMSONw92ad/t8SMNuG5qk5w+WK0N9lvFFHCzI8c322sjgl1vV
X-Exchange-RoutingPolicyChecked:
	s9NxjHhLAPQJ1egGczEzLlneV0bGZt+2ykhLCFssWLbNCKAJ9zRv1/8Lj/z9XJDliRQ4J0ZuWSptDCJbJoMpFRJVRCwWFyys067TtnCAPNYPdPgtwBJ4JpVbUMi8xYm9gm4NxaEyEZiI9BfidxdcErgStxzFvbs3ngYgVsQidyzkD2BxCMz32oPWmWsYkgWfp++POaUU5G/J80KdXbcxj+SbgUhwP3NtW/elRQ21FNpZbxuSNh4BV5hxeS+e95iYIOkE2Va84+msPA7k0Tcn2pHhRljn6wZPXfhNQKSxBSSyg9rad/DYUzgznr1eIF4+ardsGsB9V6qYj+h20+ZWEg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	Es3MFsB5OFeQPsBF+mJvqJShXdc41ndj7OsEt8t4pCxJ7+OniI7M/HnMlSG62Cvz23MespFH1QO6uMZDFm0UwtZPrF0vsKFR7A8GFUP4uMlbW3DkQLJ9o2duQHra6XcH7oE7vInK1V6hU147JSXxGhm6h5ZxmGEQaieR93oOOFXaMBUByAnG1VTRzxODQ6AoXtQuktGuMJS+zdRa5LowO7h0aNoJM4X6+rbdIaZMVynmhfGZ5K6pM4KEZaqh4cKl3w+rfIEyX5Rm+2Wk/pnVxfEHcqdcg4s8pYQ25zeJU8dc/bA1yHJsfErr+xtH5kNWLpdorK0vZBkmMTPHsEuyQVWRwJ1SfWtL3I/kFg3aJmFMf4Cx7ybArx2O2AIWIjdWCpXd+ryR2G+Ts5JQsufkSkcyFXxdPcdVKklg0uhH7v7ARZjaZa+VPVhaMalPD7qBuz+D+FddF2jG0N2RonzVk3eBgYUDQS/CFM4iV6jhrH0x78Caa+U/zU4IWFa5D1X2vcYVKJc+x8cvyuUKpe0e6ASb9LmhyUijYNuYOMFdDJWgAujkTZGg+zcw2KEecf1JVwVMIRaf/0MxPmTV+9JOXHjxLZcsOyJq62cNqr6sqNhImR8CnmKJuoSaTQzKChCC0+We58mEtdeAdvrC84g/fA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:09.1158
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0d7cdd83-c767-4bae-2245-08df3add4eb2
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	IA0PEPF0000003D.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR16MB4773
X-Proofpoint-GUID: 5zO1SilbBUP90xZJAXygp4WwpVKP2ztx
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX/9rWoI9rma9g
 Dv7aKVhPklMuE2MXX1XUNmgClfwIZ/uscWT4EqCYDI+lPpe7lJQHSdpLYzMNIsVRpv6UL+k0ass
 GctBBafZhFKyo/B5ofcetVE9zxEEx58YkOGMGrUa7RfkRV0i5EWc
X-Authority-Analysis: v=2.4 cv=JKmuIMKb c=1 sm=1 tr=0 ts=6aebddcf cx=c_pps
 a=F30aWN9Bm7kNfdI93JtEUg==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=IkcTkHD0fZMA:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=AHe91QgOk3R4nFVtG5At:22
 a=p0WdMEafAAAA:8 a=VwQbUJbxAAAA:8 a=cWRNjhkoAAAA:8 a=MBFdvfcDGwvs-Ucc41wA:9
 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=P0bj-C3X3jJDpopQwM1U:22
 a=WmVTiCyuxqgg3mnwYu6p:22 a=sVa6W5Aao32NNC1mekxh:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX14Fo2K+o3dsK
 T8QsLs7LL5Y22Qt617uRnvcuo28BM4KiKnEt2dIe0xIA+Br8dMlJCwRdnm6R1hfjt1V2znvkAXw
 whiwWjHRjo9a8FUEhVoyDfs38P2nDXZv1+4eAlQyCksYlrvDnsMFvAsXSngszBwvpxES7rSQsso
 B3+zJaPkuNHvmETUi6lIGVg+rp7FQlIL2gC2BqjGKjG0TQbduVEOKtMVKKGAhfca1Smh4SqHL8T
 l2oXeNZC1DP4ecojGWYeQreBX6BqiT4miCpx8b5/Knv/Tva+DV0Y5nPi3ZBocdGv8/1+5Hym8Mk
 6hgMG9aBdAYGr/L42S5M44IOoCz8M1/lALCg4fRAW6kJMbeygMjTVNAXuRi8uN1ns1f0TJcKMwi
 BPFXFsPSQCw4bhIjI/gEBrloj2UIYbZshU9zcMv7Y/h4+/vEbr2K9+Hywly3YG0NIUHof2XRz7F
 g3A3V3jCZlI3s5WgITA==
X-Proofpoint-ORIG-GUID: 5zO1SilbBUP90xZJAXygp4WwpVKP2ztx
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 clxscore=1015
 phishscore=0 suspectscore=0 malwarescore=0 priorityscore=1501
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-c201ff/1793842641-F7CB82A1-AD4F087A/0/0
X-purgate-type: clean
X-purgate-size: 6324


This series has started as a tooling for SVM AVIC series to allow
running AVIC tests [1] on a real target. The series depends on
the SVM AVIC series, see [2].

The series performs the overhaul of the existing XTF tooling to allow
XTF test suite orchestration on both QEMU and real hardware targets.

It also fixes up the XTF error code reporting and accounting of the
tests, e.g.:

```
  Total : 2
  CRASH : 0
  ERROR : 0
  SKIP : 0
  FAIL : 0
  UNKNOWN : 0
  EOF : 0
  PASS : 2
  TIMEOUT : 0
```

QEMU XTF jobs updates:
  - x86 XTF jobs now batch 75 XTFs each at once (~7m for the entire run)
    XTF batching eliminates few existing jobs which simplifies the
    existing test pipeline.
  - Arm XTF job run 2 available tests at once (<1m)

Patch 1 is a housekeeping to avoid committing test artifacts after
local QEMU XTF runs. Turns out to be very convenient to run QEMU XTFs
locally.

Patches 2 and 3 is a non-functional cleanup meant to unify the CI jobs
definitions.

Patch 4 adds per-arch per-compiler XTF builds. This way the XTF test
jobs can skip re-building the XTF world and pull from the artifactory
instead.

Patch 5 updates console.exp to recognize known XTF-reported test
statuses for building fine-grain test reports.

Patch 5 adds binutils to docker containers used by XTF jobs.  This is
needed for patch 6.

Patch 6 is a mega-overhaul of the existing qemu-xtf.sh. I kept it bash
for simplicity, but it makes sense to make another pass and switch
(finally) to pytest (see [3] and [4]). I deliberately decided not to
split it into smaller chunks and I __hope__ that would be OK for this
code to be reviewed in such a form, since that is tooling and there's a
public evidence of it being functional. But - sorry in advance, that is
a big change. The example output is here:
  https://gitlab.com/xen-project/people/dmukhin/xen/-/jobs/17749986186

Patches 7-12 - enable qubes runners to be used for XTFs. All XTF jobs
runnable on a real hardware are made disabled by default. They can be
selected via CI variables or manually triggered (but still needs
elevated CI privileges). Here I want to thank Marek for providing Zen5
runner and the initial set of Zen5 jobs.

Patch 13 is meant to provide a way to execute the new interrupt-latency
test on AMD x86 runners. Shall not be merged.

[1] XTF branch: https://gitlab.com/xen-project/people/dmukhin/xtf/-/tree/x86_64-ipi-latency?ref_type=heads
[2] Xen AVIC + CI infra branch: https://gitlab.com/xen-project/people/dmukhin/xen/-/tree/svm-avic-v3?ref_type=heads
[3] https://lore.kernel.org/xen-devel/20260922100900.29129-1-anthony@xenproject.org/
[4] https://lore.kernel.org/xen-devel/1793715358.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@vates.tech/
[5] CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/3028917985

Denis Mukhin (12):
  gitignore: exclude QEMU testing artifacts
  CI: unify hypervisor console parametrization
  CI: unify naming for hypervisor extra arguments
  CI: enable XTF build jobs
  CI: enable XTF status codes
  CI: enable binutils for alpine and debian containers
  CI: rework to allow hardware runners
  CI: enable on-demand XTF on qubes runners
  CI: enable on-demand IPI latency test on AMD Zen2/Zen3 runners
  CI: x86: attempt to fixup flaky tests
  CI: add on-demand XTF test jobs on AMD Zen5
  CI: do not merge: re-wire XTF repos to custom branches

Marek Marczykowski-Górecki (1):
  CI: add test jobs on AMD Zen5

 .gitignore                                    |   5 +
 .../build/alpine/3.24-arm64v8.dockerfile      |   3 +
 .../build/alpine/3.24-x86_64.dockerfile       |   3 +
 automation/build/debian/12-arm64v8.dockerfile |   3 +
 automation/build/debian/13-x86_64.dockerfile  |   3 +
 automation/gitlab-ci/build.yaml               |  56 +++
 automation/gitlab-ci/test.yaml                | 289 ++++++++++---
 automation/scripts/.gitignore                 |   1 +
 automation/scripts/console.exp                |  25 +-
 .../scripts/include/configs/xtf-arm64-config  |   2 -
 .../scripts/include/configs/xtf-x86_64-config |   0
 .../include/configs/xtf-x86_64-efi-config     |   0
 .../scripts/include/manifests/qemu-x86_64     |  75 ++++
 automation/scripts/include/xtf-runner         | 138 ------
 .../include/{xtf-arm64 => xtf/qemu-arm64}     |  13 +-
 .../include/{xtf-x86_64 => xtf/qemu-x86_64}   |  13 +-
 .../{xtf-x86_64-efi => xtf/qemu-x86_64-efi}   |  13 +-
 automation/scripts/include/xtf/qubes-hw1      |   1 +
 automation/scripts/include/xtf/qubes-hw11     |   1 +
 automation/scripts/include/xtf/qubes-hw2      |   1 +
 automation/scripts/include/xtf/qubes-hw21     |   1 +
 automation/scripts/include/xtf/qubes-hw22     |   1 +
 automation/scripts/include/xtf/qubes-hw3      |   1 +
 automation/scripts/include/xtf/qubes-x86_64   |  54 +++
 automation/scripts/qemu-xtf.sh                |  28 --
 automation/scripts/qubes-x86_64.sh            |   4 +-
 .../scripts/xilinx-smoke-dom0-x86_64.sh       |   2 +-
 automation/scripts/xtf                        | 395 ++++++++++++++++++
 28 files changed, 864 insertions(+), 267 deletions(-)
 delete mode 100644 automation/scripts/include/configs/xtf-arm64-config
 delete mode 100644 automation/scripts/include/configs/xtf-x86_64-config
 delete mode 100644 automation/scripts/include/configs/xtf-x86_64-efi-config
 create mode 100644 automation/scripts/include/manifests/qemu-x86_64
 delete mode 100644 automation/scripts/include/xtf-runner
 rename automation/scripts/include/{xtf-arm64 => xtf/qemu-arm64} (79%)
 rename automation/scripts/include/{xtf-x86_64 => xtf/qemu-x86_64} (53%)
 rename automation/scripts/include/{xtf-x86_64-efi => xtf/qemu-x86_64-efi} (75%)
 create mode 120000 automation/scripts/include/xtf/qubes-hw1
 create mode 120000 automation/scripts/include/xtf/qubes-hw11
 create mode 120000 automation/scripts/include/xtf/qubes-hw2
 create mode 120000 automation/scripts/include/xtf/qubes-hw21
 create mode 120000 automation/scripts/include/xtf/qubes-hw22
 create mode 120000 automation/scripts/include/xtf/qubes-hw3
 create mode 100644 automation/scripts/include/xtf/qubes-x86_64
 delete mode 100755 automation/scripts/qemu-xtf.sh
 create mode 100755 automation/scripts/xtf

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473383.1681044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPu-0001Mc-2b; Thu, 05 Nov 2026 01:37:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473383.1681044; Thu, 05 Nov 2026 01:37:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPt-0001MR-Un; Thu, 05 Nov 2026 01:37:25 +0000
Received: by outflank-mailman (input) for mailman id 1473383;
 Thu, 05 Nov 2026 01:37:24 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPs-00018g-GS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPr-00E0Zh-ST
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:23 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddc1-2eae-0a2a0a5409dd-0a2a4509c1f6-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:23 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddd2-be1a-0a2a45090019-94a38ff11f32-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:23 +0100
Received: from pps.filterd (m0384717.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mn6t1339679
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:22 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010056.outbound.protection.outlook.com [52.101.46.56])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrbv9t30a-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:22 +0000 (GMT)
Received: from DS1PR03CA0018.namprd03.prod.outlook.com (2603:10b6:8:233::15)
 by IA4PR16MB644269.namprd16.prod.outlook.com (2603:10b6:207:148::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:17 +0000
Received: from CH7PEPF00000019.namprd21.prod.outlook.com
 (2603:10b6:8:233:cafe::18) by DS1PR03CA0018.outlook.office365.com
 (2603:10b6:8:233::15) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:17 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CH7PEPF00000019.mail.protection.outlook.com (10.167.244.168) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.0
 via Frontend Transport; Thu, 5 Nov 2026 01:37:17 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mhEP2969470
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:16 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrpb-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:16 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmPixkZZHqQa1OmPixYpeF; Thu, 05 Nov 2026 01:37:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=xKM
	I1QxU/Ai3xJowBb3M7E1rgRfwSD9G3lY0z8xfDrs=; b=FE+gG7Zi1WbY9shEbyX
	hqPZls86A2FoL8teTUyYOe8B9Xd7PQINJ5YUKmG/XEHtB18t8ko9ysw4+744pJL+
	wDzP+KVcxvqeiGox5aEf7nnkEIvcMgvF4mSq0CLhj4gyiT1ETtLXRMW6m8sJE2hL
	VPvuDzdwT7vWsTVso0u7dH3ZnMze4gvUGMQs52QxXFAABH8ZHM3J2kaEee12CB/j
	xroARCj0TnkJwBI9Oy3hXb99SD0HKmVM6x7ckMC2gjsbzJFXcrTkJfHWFGq4qtQH
	JhZypBlbo6n8DV0KbCe6QvhKOVaGpivPl3sEk6tukd+tZMrrfoDguERH/tmuIQ4x
	BQg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fSrSUDv/tdI7SY/Pg8FZhW/xZwAQJbjwpKLm1g69mwTDtXFtIpm6pnwz6Cq7n3a0lppwtyaQJSqvxwBda5gxTJnDmDO8vIVxD7djGbV4Ez55veop6S6Yek+bSMSIeMJf0JHSedOpFF0jRw9vtSSv7khRX9mGpPoJwNKhJPxYOmvoVRyGfx2qliZw52ATEcML/A3A7HDjhkPTKxAXyEC+r9dKG/5uHQqa0Zfd1ZS9Q4JaDZLYyVnqSwrnxzjpSJE/haXm7aN6u5YpnA7K4ktedXPQxLnUfx1wTDIpUxShid7D+/C4wOsh7OeF1OogSl/aTFkTR5QCOhJn6zUOeAY/0Q==
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=xKMI1QxU/Ai3xJowBb3M7E1rgRfwSD9G3lY0z8xfDrs=;
 b=WfVTmOkRTsn7mnLp2uX/7SR1qMJNhn0ycFwvdXYbiOT3ACoZQ6Q45nd30cL3/bN7g9J4TC6q9ccG9f4iWCW7hFvLiWSBYOi1CM6Vb8TYK9kgIXjCEibLYmbZhLXCuHhmVs88yX7NCy7fNcjv4JX6DYuZWEE8osymtXT2m8xmqQ5BwkSPtWVWRcjkmCl257q2/a/RU4xAdml9we59qLqoa2jLKexwk05J3nnWOCih3zH+0O+QO0iSeDdni3QhxUyfPrlEGA21MwuGEwxeCxRNCBCGGEYGCD2HgNk7ywOeZ4oZaOIILKODCRCd0sgsw8C3TohJl3kmeBZhk9TIhWSlVg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xKMI1QxU/Ai3xJowBb3M7E1rgRfwSD9G3lY0z8xfDrs=;
 b=IfRTYTQIoLngtmhTD+WNXecJ9kKfCaYdZ7S2DkQT9829qZ+3Io1WO/oCe2hMLUCmGnv6PPCQo8Lv/w1uvfsZT0kekETiLrulZ0DRcMXYgMPhSTjGSu5fi4uUmTtDHrrXcWKcADXfl52SQWTUkR1JHFoeNPpmKqHeCaUfpfshENE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=xKMI1QxU/Ai3xJowBb3M7E1rgRfwSD9G3lY0z8xfDrs=; b=
	bu8Fb0WRpOzpzC6AIaydDi/maqeQKSyhAtlXjHAyEsJeFl0KuaFE4b7lPbl4byEU
	J8O1qvklBFtthtvyIiu4WDdBhjAz2xG0WznbltWCUO/37PHX6n3J1DT5i6az9q1A
	5+Ep4MxXf3vZ0Hcsg6HPXbmXn3+8aB6vvqkAqh8BGYPFMQz6XYetiSeHKWNeVETt
	Jv7V+OhjfqDsmAy2yzSfmZDK8BQW+CkQ1pl/Vv3u70YRt03mSXePxYDaqL4C2rlU
	ngRN5HoT/yEPFoNteXu23Bz5Tfwnl9JBw3LMy2aF31xRcD6/ZjzShLwSEXXVSrAu
	Qnns5ipUeXdabSo7fOp5ww==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=xKMI1Qx
	U/Ai3xJowBb3M7E1rgRfwSD9G3lY0z8xfDrs=; b=BVKUdOrpvhhN+33GrrrmVwn
	k6IXsJnd4X9pZKXzGuLJPmMed2KruTBv2SjS18O7NgMFBxIxU5TI1yrBBFveTeDe
	XkP6jTGqk1VabRIi1ze5Hi1Sm5JY89ZapY9TfE5KZhTAEmG3IkC2dlOghfC1l8Hv
	XboVDTAZ5MimW+6jpYcuvOoVs/atLlFaUwwQiGW6PuFlR4BzlgWqVWPxzKC0b3zj
	BXcP898AQvipxn3XVDMWU2+iQEHy7m2YrEP+Kt2MoYX1iaPcavahqfGyQ6Mg1Z9w
	FNCAdDoVSMxcA+LlB5upW9cNcONQwFvlSA897NjGp531J3eHUTQCKbOUe0hdGHQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPixkZZHqQa1OmPixYpeF
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 04/13] CI: enable XTF build jobs
Date: Wed,  4 Nov 2026 17:36:52 -0800
Message-ID: <20261105013701.719658-5-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH7PEPF00000019:EE_|IA4PR16MB644269:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 20fbe84e-9841-4acd-ff4d-08df3add53a0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|22082099003|18002099003|13003099007|10067099003|11063799006|261021121427099003|261028144727099003|261026121527099003|261102123227099003|261026140227099003|261009223027099003|56012099006|261022105027099003;
X-Microsoft-Antispam-Message-Info:
	laLWfneKHkPT0lcRCum4xwWyrEzD3SScC9sAcrlnu9LhM35zvMuLC3q3UqwrLHquif/mZk6jih1ADXlsiUmaFRo9c58+dUJS+wLykERa4xdwLN8pO/DTNtZPlLxlBSKMobOpM/8EUSEjgSmJdZFXDWIr0618ccdAJx/YTefI7lta7zTUmgIvtS/wHM+SAt3XfWzApT83gpDt/2K/mcdJV0odsSFuX+KQI5O+WziG0/9quNApIKVhnIXzTsD82W3vJ5TmDWaaGpp2tc+aa72M/jxe5xsym7RwNhi6+0iR/pdB9svSorhNtE1R/dP2bb5j3sXjOhDgzc+PlZVYAszkrPKO9bqgxZrfmqf2QsK5X1uh6SuUdQVZizW3VSw0mdLffCrf5upImzTOuTtnZqDfq5lYu7Ml8J5WigRK1Jx0/jIttgggzejx5fRh22eM7c8ONt7nYt3nFr/88YRiMZ84FZcv7gijWtRSjazvgwBYkdiBDYMAEkyX9xrTRapW6KkvfXDiJ48M3a6iEQfL8Sd2u2SQlJ4uXGKubqWjC2FiK8HjM7gH5u+6zAhwLbqNOw/1/egCde5TqmBGtm3VbbnyjoENuZiAS0wnOtbUQ+aUYyhTvTaoq77bTVWEWV2CEgEVs8DjKRKL0Zhx82uqx3I+6Q==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(22082099003)(18002099003)(13003099007)(10067099003)(11063799006)(261021121427099003)(261028144727099003)(261026121527099003)(261102123227099003)(261026140227099003)(261009223027099003)(56012099006)(261022105027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qzXUjBSNmLPlOQqITd98clfDi98VMVD6FvXf9As1t9f5wrLJMBs4/qzL/spCQGuNtnaHFN3mHpFXqCjFh+H2+vJR9jKgonNfFa/KhxO0fBWbNMUgivBWXOhdBsLAmZfD83nhT3HQp+rC6OxqMjqMLjA6JZ26BJ1v7uaFrbypVxPkRHtiGzSUlgmOqhx4JFyHLhXyedYUqznZz8Rou441ikSMrn59G5jEfOT7daDFLWkGQvEimeR082FFEUzBPnr0g4xz2R9HXuQxDrr3j/bs0e11Uk3DPvBQVYjoftUGn/vr7j57DZ1m4aBRtKrvkOulPy3bu2F+El+3eVjUHI/7hwLv1xdoI+y8dU9q+qy1a765FyQFB6nv34hDHWhIl+WMvRfsz4g/MTIMjpm35tKD8OcHq9WXNN3HABJzjjVEwTUzlLUnFy3AXcNQYclsvG/p
X-Exchange-RoutingPolicyChecked:
	d98+Rjp8k3YoGx2Lah/XO4BJkSYx2opieX7WKcJPyjiSj91AnLBCZMhTM8WrEMdMDDUWk9MZC5RZS51fIbD8eeA1SkkAxDVK3beZDf8foLwxBOwRzzR5wBlcdSl86/0fA0YSP3O61TXBD5IJ7ahlLneazp3EH9PN/tFhXqViygzsdWffb0OMgq7maI60Nnse2uBLVNyQi/yhe5375kTAuch6Xwf+s2DWTjD/2uACTorUKtgs7XU56loOiX9gPTcYtqM7SFe2Y01K1SMCiDbIkVQpP2ZL82IQ/9Q5M45/pDEtWccO3o1/zA69om02lW22g1foucEIvMcxbUUYdbsqAg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	XnrzHzKCNzl/MOpHKlnwOkQxmsAgL0wS/tR24t6nwEOXf51TF5IzMhKPJboxRLIrw/YDBKgtcgwoswk+9hqkX63Cnack0bqV7A8e1VoDKIYqGVHIvKTPWdnXtBRDtolsDAAVxkhddKQRG7mMEMm99eO1u5vwGAvynE/KGV1BqGa3KQ7NA9om3xNykEpl4IP3JonG1oAe+/U8xWhzdFfa1heIZSM72rEaLhoPmbkiaDPqaact7vW33W/JcbDWE/5+g2zBLuzTm+8o6vpQKeiIqcQOawaKaUtQj6oHHRqhjTDl8VwikuFjtjSQulE99cDDNODAuY8UUGYFWN3An3p289Yl9fXrqWIwhqtnhhLAWb45usQ0yLSlmeJp7MploLiPmuDNB+LJZEwK2dYBxYAi+ZmoC3yRxY1ZOJ7Sr8oaSUTW1Ka593IxpBntkPjHLpzCLtS1TVxavC8Ece3QLSirQiJZpv15KCiCwjN8zQPmdsk0RDhZVGCqFjRK/PFA8JCiKGscWKg1SZlLaHXsxzUTHvTb4xQ5VVYPToYamd1KxcHpesQXzXXVMk0Tkb+/qEEWV6VOjB8AoSKHltglOi1tuKR4buW5jvyq11DiKJcmEq+Fjj86tdHiQFjPv0KiD6x2K9HWcva5AVDSxc5D8lk4Fg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:17.2752
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 20fbe84e-9841-4acd-ff4d-08df3add53a0
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH7PEPF00000019.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR16MB644269
X-Proofpoint-GUID: kNccnbaLNz494VNHsTc2Qxb70v0vs8wl
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX1LzQ+2KYORlw
 +8JBYLA/mYpMRu4pXA4j7CD+LN0S3DaQL3h7i7EqmcqkjfxkqNGUI6pEseaA0odJkGJcJdAwhqc
 LWBBI3lhHpsKnKkv3OmIARR4gkBTt2CcPGTFriX1E/bGaTJ+pkEC
X-Authority-Analysis: v=2.4 cv=JKmuIMKb c=1 sm=1 tr=0 ts=6aebddd2 cx=c_pps
 a=0PDhd3HO6khzWhHQYbQRQA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=AHe91QgOk3R4nFVtG5At:22 a=p0WdMEafAAAA:8
 a=mLnsDVdbAAAA:8 a=cbNQJ9GKAAAA:8 a=rN6oJH6SHpm60vEaH9gA:9
 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22 a=xnp1pY6zelCj5OLna2To:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX21jx1L+2emCy
 b55cFXxBs7cqPjvuh5B0RhmqJzz3ggMR3KlzivV6Wi+uXXPQd9IPlIGMeh0m8wmkd1x4d+Iq4N1
 hwkorbNWaX8kJV1yUdw+DIGS+8KZmalCRfEPjmGNr2l3Q112xk0TNmIoCt4G6hSljseEuZ55Orh
 bs/rCSwSEpm5zkgj68OtAgGmmD1h8UYI/c+pX7496lkMj4w/O86Eojc9xqE1o/98vlzvmerlxf+
 IqWs5NacCB4JBf5KsNKz6HZ+l7w4hz+7Rm3rHEyZa8V4ejF7XUu4Wr0pRkxHkl6TB3t5T2pz7eJ
 RBvOz9FsA0eaI2I4fENh7LZ2JRBbDYLkVk8U74FIw2hxYgDB3XnWZ/Yc/CJwz1WHfgpPwDnm6Am
 O0Y44BrIX6DYd2TmeAkwkiohMzkMn8I9060rjktDl4X54/uRXmOmCXnRFNRmDqBd7xcetypzoQt
 TOiQCXnNhcFXof/fSWA==
X-Proofpoint-ORIG-GUID: kNccnbaLNz494VNHsTc2Qxb70v0vs8wl
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 clxscore=1015
 phishscore=0 suspectscore=0 malwarescore=0 priorityscore=1501
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-bad1c0/1793842643-BC8C9034-CF8D6F40/0/0
X-purgate-type: clean
X-purgate-size: 2559

From: Denis Mukhin <dmukhin@ford.com>

Build and publish XTF binaries to be consumed by test jobs.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/build.yaml | 56 +++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 3d37e0b572d0..1f6228ba74ff 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -288,6 +288,7 @@ alpine-3.24-x86_64-gcc-debug:
       CONFIG_ARGO=y
       CONFIG_UBSAN=y
       CONFIG_UBSAN_FATAL=y
+      CONFIG_SHADOW_PAGING=y
       CONFIG_MICROCODE_SCAN_DEFAULT=y
       CONFIG_XHCI=y
 
@@ -297,6 +298,9 @@ debian-13-x86_64-gcc-debug:
   variables:
     CONTAINER: debian:13-x86_64
     EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_UNSUPPORTED=y
+      CONFIG_ARGO=y
       CONFIG_SHADOW_PAGING=y
 
 debian-13-x86_64-clang-debug:
@@ -305,6 +309,9 @@ debian-13-x86_64-clang-debug:
   variables:
     CONTAINER: debian:13-x86_64
     EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_UNSUPPORTED=y
+      CONFIG_ARGO=y
       CONFIG_SHADOW_PAGING=y
 
 debian-13-ppc64le-gcc-debug:
@@ -840,3 +847,52 @@ macos-26-arm64:
   variables:
     XEN_TARGET_ARCH: arm64
     CROSS_COMPILE: aarch64-elf-
+
+.xtf-common:
+  variables:
+    BUILD_QEMU_XEN: y
+  script:
+    - git clone ${XTF_URI} xtf-${ARCH} -b ${XTF_BRANCH}
+    - make -C xtf-${ARCH} -j$(nproc) ${XTF_CONFIG}
+    - DESTDIR=$(pwd) xtfdir=/binaries make -C xtf-${ARCH} ${XTF_CONFIG} install
+  artifacts:
+    paths:
+      - binaries/*
+
+xtf-arm64-gcc-debug:
+  extends:
+    - .gcc-arm64-build-debug
+    - .xtf-common
+  <<: *build-test
+  variables:
+    CONTAINER: alpine:3.24-arm64v8
+    ARCH: arm64
+    XTF_URI: https://gitlab.com/xen-project/fusa/xtf.git
+    XTF_BRANCH: xtf-arm
+    XTF_CONFIG: |
+      CONFIG_GICV2=y
+      CONFIG_SBSA_UART=y
+
+xtf-x86_64-gcc-debug:
+  extends:
+    - .gcc-x86_64-build-debug
+    - .xtf-common
+  <<: *build-test
+  variables:
+    CONTAINER: alpine:3.24-x86_64
+    ARCH: x86_64
+    XTF_URI: https://xenbits.xen.org/git-http/xtf.git
+    XTF_BRANCH: master
+    XTF_CONFIG:
+
+xtf-x86_64-clang-debug:
+  extends:
+    - .clang-x86_64-build-debug
+    - .xtf-common
+  <<: *build-test
+  variables:
+    CONTAINER: debian:13-x86_64
+    ARCH: x86_64
+    XTF_URI: https://xenbits.xen.org/git-http/xtf.git
+    XTF_BRANCH: master
+    XTF_CONFIG:
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473385.1681054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPw-0001gF-HC; Thu, 05 Nov 2026 01:37:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473385.1681054; Thu, 05 Nov 2026 01:37:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmPw-0001fv-CI; Thu, 05 Nov 2026 01:37:28 +0000
Received: by outflank-mailman (input) for mailman id 1473385;
 Thu, 05 Nov 2026 01:37:26 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmPu-0001Me-67
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmPt-001xJk-Iu
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:25 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddbd-8faa-0a2a0a5109dd-0a2a4505a81e-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:25 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddd4-4cb1-0a2a45050019-94a38ff12f80-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:25 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nMpm2612664
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:24 GMT
Received: from bn1pr04cu002.outbound.protection.outlook.com
 (mail-eastus2azon11010023.outbound.protection.outlook.com [52.101.56.23])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rvuw-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:23 +0000 (GMT)
Received: from CH5P221CA0004.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::20)
 by BLAPR16MB3809.namprd16.prod.outlook.com (2603:10b6:208:27d::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 01:37:21 +0000
Received: from CH2PEPF00000145.namprd02.prod.outlook.com
 (2603:10b6:610:1f2:cafe::20) by CH5P221CA0004.outlook.office365.com
 (2603:10b6:610:1f2::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:20 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CH2PEPF00000145.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:20 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mP0v3108414
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:20 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb2g-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:19 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id OmPkxrldyCiSDOmPlxv6yb; Thu, 05 Nov 2026 01:37:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=jZy
	qy7ONjIuLvt0qadiSp89ZlsXU0AWfGQO1jBxQc+Y=; b=ZxW0Zwr6rtS80cdYAax
	NYArDaXgBTP5V5Wk0o1ZLVayNZdNNBF82yo8w0wkmKuHFYGr7lYATUuTitnnnbAQ
	aYISei9g06AmLtJYajN0VMy8v06Cr/6C++dX6RPRC7mUqv+elPwYxVi0Uhrj6UC/
	pV/tm1OD90uBd2Z0XxZfTJdkrg/3Z86pUDoOszYO1HZjcMo98RlLFkJDSIgSe/bW
	wFVjQa4YdtemBs89hmSJhPGTbxSiW3tBBViG6bINj8iisxqwX7JrUMO8tBwGrdQb
	wK4busveRxuyxqbrG/9u1ftxdfTDCEn4kEudiTGuDVuBqlaPAb4fv8SzXgKh+Td4
	Spg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rqHLr6ZpBxtmR4+o48Gl0VtuM1ZgIm9FazP75iA6EQ6dJLEa/2NXqg/AOg7g2pBoavO2XFl1wXptQr/CbejhXMbAdZZC7lMaM/bmgaiPo2Il7nxafZJVPBw17w4m6JUsD2TGmFrans/xdo76i4U7Qs2YvfjAldq7GigUAhOQvN6ryFbeTaUq9WSK/8CqxcbnW+IEhqTujBbm26hYJ+Kc7K4HcZ07c737CFfFW7jNmrkV4xQcCSd9Ll2MQTclpr7OGA8yKnOAO+tFyaLmdHg1IkxV6iGQdouinJ0BPNjVhvRm1J62CZkR4+sTZT/Zt/dR8z1VWUvLNRbm4beRLi3AQg==
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=jZyqy7ONjIuLvt0qadiSp89ZlsXU0AWfGQO1jBxQc+Y=;
 b=hXTRrDeYxOF4t3wZih/A5YuZjg4adsBdv7Srm2ZYTuSAcT+Cm4HdHuYjPOJvMNs8yi4Lnc+kP062+cQQea/6ZHN0Eqt4lb6PEdp6t6/sJC+aopOhmmFetaBqXyhGPE7A3uksEyohJBxaoqZRZ/qcm19JX7u8P3GcDe6+43OI0VIn6xdT3Gsb+fyxzA0JVvgsm/6ceFjSG17HxOMnHmKO0k10quoRie4jGNDGeSZNrZTDAcnZkCmLJ1rf3xPgAhCAxFKtbcsUgUN8yVs1+gTG+j+BZVf9luOEZWGrSW5aME64PHab9R2SXUE9lGSInd5IQhPL2dyd/8wYJ30XOJCgsw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jZyqy7ONjIuLvt0qadiSp89ZlsXU0AWfGQO1jBxQc+Y=;
 b=iOOywY5N+yCdlXTYmGEc2XEG13NaahCNKBnspflfUteuLqQ4eeEDOXNpIxqGeDDBzj1JHbvBuo2uIlLL4VrPry4h3W1+KeRqbaW28XPfN8MKvcnxcnyUpaK6pP+jAxOM4gJq55h8Hh+Q/QBI7sB7b3VKJ2pVVB0AnsEhMbjIWTE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=jZyqy7ONjIuLvt0qadiSp89ZlsXU0AWfGQO1jBxQc+Y=; b=
	mt5vYDvfKJCFxejh3fakLgTdHUW1azTHxtB3jzTMtMhivtgzk3nTTGHSkgxjvKNV
	GWFkJfTowpZl+Nsi64GCuwZv7rFzv1AU713GmRIV/ld18OgcSDBD3PxjBKmWdh3X
	Ymkp1EecnZ0dN9Jd1Lha3m+ichLX319RhA/45nfHhyYXGkH+zS5GQojLsvBUXyLl
	YHygSksikCFTAWqvao0uAuW8a9OkBTW36ukRbDcLRh8XYGjOhMTXIICGKteaLP9h
	WshoeoSk3+CsHRvbs5S1k+QAhQu+RAWIFDqeSCv9mGF9P088bvtTPF4LYm1o/jlh
	HOP6vEqhOFOf6/NXzG0oIQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=jZyqy7O
	NjIuLvt0qadiSp89ZlsXU0AWfGQO1jBxQc+Y=; b=HNSTCerGiQI5PHBqhLk28v/
	jvy6giEaB6O9+gRs1WD6FqJe7iZRSE9WTwQEVym9NbegLtekfsqLZuw7SzxRO59P
	OKh+RndumSm0ecnhdILfbJQR4C94Roq0qWIqEE/5g1Efq8ZeITQ8WnKLfKydzeMj
	58Xy370LG71NuWaFrY8acvJkW5+xgfpsGf7IwjJk/l6wx+SSBltGUgEwvVALGXZA
	k/usXo6a56m1iBM1y+069MtrrSFfoTH7DDhQwzPRoToBjsTgmiXG6uaVVoXwPsXl
	bgmLlD6eIaTsHWzODLk0SpwGxiVn+/kR+uxhczhtwhHM0GuHjjwJMuaJ+UN9hsw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPkxrldyCiSDOmPlxv6yb
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 05/13] CI: enable XTF status codes
Date: Wed,  4 Nov 2026 17:36:53 -0800
Message-ID: <20261105013701.719658-6-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF00000145:EE_|BLAPR16MB3809:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: b6fef1a6-975c-4948-844d-08df3add559d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|6133799003|10067099003|22082099003|261102123227099003|18002099003|3023799007|56012099006|261022105027099003|261009223027099003|261021123027099003|261021121427099003|11063799006|261028144727099003|261026121527099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	FLgbFR9twPWXet/qcluti3/j+CUHo2kYAuBrOmebGtitGKqlhHE2Rw7hmPebRVVCPkxRsW6eH6w2S1pB3GzYNsTyUTPc0G2eoAJ2SleVRtUAnpfYEF65H7cBmi/9d+XqLIhoVjT98zVodsU2OFpm5W2JDbhQtXLgCI+/XjHWcpB0amijGRqibmsdhz7x3NXa8khEmH2NrhaoxwHG8nmblOKYq8dK0BLsbs4vKG3zBdUFlgnn/LiOJsL0TZOB7Y6pjBVPs05CqfsKvAcRS5OEomMX9jZAYRdtI9se3prcx3vynM3WQ6vgqR0zUlAUi+GjGFEhtorxD7wZHrkAKZDCEKxDOhZy+or8Tmnl0mO9iuAkIkebsF2cbAp2J6xGsnKca3piDrm4LyGmmcD17gw4CI+oromhXjgywKIHTRC2cY01GppUEg8MqBTtNRWFxX8L3rHaHPs4I791I1bqAK/BDTnGR/Nl/FHUPWTmyvf+H9WamkzGrtwFLnWnXWDH3/IxtJvbrhKkVpIqXHnfIbdvYeMOIrr5mAhPL02PDxPBOcUkzrhZfeEr35jLKByYO6tn4k9IoFVWd6mXBTkNZMylhH8a6jdjYtvrAYnetqJURYnCAWzUAQJG5fEHc+VLtp52l14TUVzJYKPMPS8cT5PQWCW+z3J/TJ+sLporFjZxdZgqO1DZGQ9Loo2uJiONqWuE
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(22082099003)(261102123227099003)(18002099003)(3023799007)(56012099006)(261022105027099003)(261009223027099003)(261021123027099003)(261021121427099003)(11063799006)(261028144727099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	tntugV8kr8Owu/gUI1QEniTo9hbu5FJD2xqUTgb8FZJzVHUoKH84DrnpBS1lGVdTs7DPTMrEuFtuJsonkRVYpczUCyoQT+ljvorjRMEghSk6NJSAuSQ80Ufw+pVexygruE5dnmx2OQejBZDMPbOSEf6MrJGMVk5Djrmmuv2PNM6NLg+vjdi8/Fv8PfSeRuYvfh5P20cB40SR4O8rILVU6LYKRaHLWos3edlwNmIQuwHGHxJM4M3L0Uuy2ZF5XJ+hod7gUPQXGD1zb6YcWiFeBURNBw8sqrEMRmqPZdI6Hs2UyDl3kjUQUfBKyxenphbdez+Ln+ucnOXWqf4rI6LqMtKUBfdneybF6wTV09vrqllarVSooJKN+JumSsl7UUE618bNKq31dEF6tisYtpwY5WjQpl3RC8ESQ4/ikR8OvqW90pqn8YosXPCaKEgO1at0
X-Exchange-RoutingPolicyChecked:
	H0yKHVBRp86TX2CvraLT3GL+jGlReSb6B4Eeh22t/RHVe140L/SgDuDT2lEHVSZQOTUgkc3v263uR8UbGaAcW2JVNelw/xQCJpKgRXkqwfP7vCWRh7oOm2GVUA2GWtaBt8FM3UW9Y+EJTHKMBJpaO3aRCvpji8aNGtoos27pYGG10Vk6j52hV+TQqRR6OozO3o/livA/q9sppR+6VdPPZMScMC5eCNdOLLHl0px6BgxHOLnMbuYtNKSlQcbgiLZcDhV2vN3mIx5ZkQonVGSQQsnP/EiNhGN9vsKTu2MUh+vNu7IHKkyStvJELTb+FmZJSVjKaLGDwd5XP6UvlUYWww==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	dXTah2JuzeCpIHvObBvOAwPQOaYBUx0ARB71hcE/uZxz3jtz3H2jMuwS+xRrg7hNx7fvuONBXZ54OCIdqq9DLONs3jvr6oRrTN8yaEx+cCwZUKVLj0dJh5aPRkDZoH9GHqebDVUHVhylZbEzNPxJv652hNzePnajlXWPTooluVqNThmsWENT8p7uBrEq6gznTTExyRi3t3jeJLCmuEKQGrpzV0xoL6Csh8fDgZ3sFvAbAyl8gj5iPi7TocB1r2CqL8qEvYiSJzU0RL0OHa3lyby8l6XHeRToz/vT3HcxzzMtPmcTZUq6VOjk39KvA8cn7Qow+frkhm6CxEuMd0NQokx2XiWjx0DCMW8dinvmgoqCktmbw9peKXJ/ICvVHowqBYc5xWIEMVOdvp93mQuxGZNTNGl5rNYZmTbdBzro6ZjCEpUwHkhLMWVXEqKSxhpWhuTMDexEnHiM74EZ8saALndUrVJpOLaOkA/ZeCzoa6aIFSGk9+VYoOfxvvecmK18+a3zQW0qEDFPT4wQRpk8mHHEg9sKSJtDpZwt1CXo4AuA/M3O9KX4nKwnMUzR21x00BnED0O0HgCqXXfMBIRZR+O7XZwVXYYD3NnHHW7Fmovh8LwxXXOJ9Pk73ZWj0ZQywUcHwmLOBD9quSncyn3+6g==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:20.7048
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b6fef1a6-975c-4948-844d-08df3add559d
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH2PEPF00000145.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR16MB3809
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebddd3 cx=c_pps
 a=55pr0gqEmxT9FJl44qZDsQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=cbNQJ9GKAAAA:8
 a=Ol5xH1M5udD1RAionIcA:9 a=O8hF6Hzn-FEA:10 a=DqJYxgmhk6moR-_7_KoZ:22
 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXwkq/ZqrjRSu8
 gZ7V6NTuXkCEjVxh0lEIPA23aL7Dwk2/qLLq5lJ+cwqUtNaRVDnVHBKBmHH8QSEzTruQiBbC828
 aJ+EvQtIRABurXJblzDLcRjgPcOZ+7cm0iE4zFwaoEPDW2VdEltB
X-Proofpoint-ORIG-GUID: JT4nA8rwGjvj1s7_RVhvZVdoS5PpUOdE
X-Proofpoint-GUID: JT4nA8rwGjvj1s7_RVhvZVdoS5PpUOdE
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX382/s89NMGoN
 c9Fy4enXc3EiuXnWyrNv46+YZyoukY1g7GO4VpKkyiiGnGPFT/0Bc3E80iKLmLn5XA11kwWZTdq
 Wb58YALNZtPuhV571LhlxAcybjF9ckOjJBgNxRxjJ93XA+C3Z9XbPBrMwxmNthV+ujl6F/jOsoU
 wx2X3X+18WufKDEspuyz70A2cx13MEd/fcfpkI+p+XsqWIb29/qzIy2lgEtIeKSUoJ07Qv7W7Oe
 M6KhcnDcD2diRnz9SNRuzB+KMwY5s65zCGDnj7w62K1YCrqRMDkriTkAIVsvIGBa6kI4NuyPODj
 kpPP+7OBc+6vlf+Vp+RcdRT1eBGIvFlXk8v/IRkb+iqCaMHqh4BYVBNLCS70Ld8685WpFHOmg5x
 hM1203sKghK4HpQsDllmc3lcMCy6oRYEobtGeU7cu7mq3JB30uB4AjN6VBqIDH8YMO77oC5RIEj
 i6MolOvsGKFa3YwT0Fw==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-c201ff/1793842645-F46A52A1-43B704DE/0/0
X-purgate-type: clean
X-purgate-size: 2167

From: Denis Mukhin <dmukhin@ford.com>

Enable XTF status code parsing detection similarly to python
'xtf-runner' script (XTF repo) to allow fine-grained test report.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/scripts/console.exp | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/automation/scripts/console.exp b/automation/scripts/console.exp
index e27886bbef23..55373f86e673 100755
--- a/automation/scripts/console.exp
+++ b/automation/scripts/console.exp
@@ -14,8 +14,9 @@
 # - WAKEUP_CMD (optional): command to execute to wakeup the system 30s after
 #   seeing SUSPEND_MSG
 # - LOG_MSG (optional): final console message to wait for
-# - PASSED: message to look for to consider test a success; if LOG_MSG is set,
+# - PASSED (optional): message to look for to consider test a success; if LOG_MSG is set,
 #   both LOG_MSG and PASSED must appear (in any order) for test to succeed
+# - TEST_XTF (optional): distinguish XTF error codes
 
 if {[info exists env(TEST_TIMEOUT_OVERRIDE)]} {
     set timeout $env(TEST_TIMEOUT_OVERRIDE)
@@ -31,12 +32,24 @@ match_max 10000
 
 eval spawn $env(TEST_CMD)
 
+if {[info exists env(TEST_XTF)]} {
+    expect_before {
+        -re {Test result: SUCCESS} { exit 0 }
+        -re {ERROR-EOF}            { exit 2 }
+        -re {Test result: SKIP}    { exit 3 }
+        -re {Neither HAP nor Shadow available} { exit 3 }
+        -re {Test result: ERROR}   { exit 4 }
+        -re {Test result: FAILURE} { exit 5 }
+        -re { crashed }            { exit 6 }
+    }
+}
+
 expect_after {
     -re "(.*)\r" {
         exp_continue -continue_timer
     }
     timeout {send_error "\nERROR-Timeout!\n"; exit 1}
-    eof {send_error "\nERROR-EOF!\n"; exit 1}
+    eof {send_error "\nERROR-EOF!\n"; exit 2}
 }
 
 if {[info exists env(UBOOT_CMD)]} {
@@ -71,9 +84,11 @@ if {[info exists env(LOG_MSG)]} {
     }
 }
 
-expect {
-    -re "$env(PASSED)" {
-        exit 0
+if {[info exists env(PASSED)]} {
+    expect {
+        -re "$env(PASSED)" {
+            exit 0
+        }
     }
 }
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473389.1681064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ3-0002Ax-VS; Thu, 05 Nov 2026 01:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473389.1681064; Thu, 05 Nov 2026 01:37:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ3-0002Ah-Nf; Thu, 05 Nov 2026 01:37:35 +0000
Received: by outflank-mailman (input) for mailman id 1473389;
 Thu, 05 Nov 2026 01:37:33 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQ1-00024p-Dv
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQ0-00G6uF-RG
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:32 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddbb-e002-0a2a0a5209dd-0a2a4503e104-18
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:32 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddb-fae8-0a2a45030019-94a38ff1723c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:32 +0100
Received: from pps.filterd (m0367130.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50moWA2064640
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:31 GMT
Received: from bn8pr05cu002.outbound.protection.outlook.com
 (mail-eastus2azon11011018.outbound.protection.outlook.com [52.101.57.18])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrbp3t6g6-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:31 +0000 (GMT)
Received: from DS1P221CA0024.NAMP221.PROD.OUTLOOK.COM (2603:10b6:8:242::14) by
 SAEPR16MB405700.namprd16.prod.outlook.com (2603:10b6:802:204::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:27 +0000
Received: from CY4PEPF000392DB.namprd03.prod.outlook.com
 (2603:10b6:8:242:cafe::4c) by DS1P221CA0024.outlook.office365.com
 (2603:10b6:8:242::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.546.22 via Frontend Transport; Thu, 5
 Nov 2026 01:37:27 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CY4PEPF000392DB.mail.protection.outlook.com (10.167.247.121) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:27 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50noPL1488051
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:26 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232wj0v-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:26 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPrxjYxqf5COOmPsxlY7v; Thu, 05 Nov 2026 01:37:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=hiW
	GmLd5gN5t6oIVVRWaRZVSnc3B8aqJqB2CNlBTkxo=; b=eevnNSJK40AJXdZekio
	R40bE6WKURtIi7T9xnyYVxOdRDxTPl9At6uSVhz5a/VnBqPVqYQRz4Zj6T43q+u2
	Y6Kozwrc5zbylap3RiierD6M6UBrT4zslOHL/ZISHHXpy2SA16oyCn8j8P68bijJ
	AaXbsPsk82RZE8VYI0O8yLMkysc6UMlDY0k/FDFjq0aQGaoL+R88QYzpayhmZonv
	6NZWjcEnG8npYwXTpqhuQ+u9U3RUOzx99BX5vV0osy5gc6654R/rE0ep6LDcyoz7
	a2BPSC+EkkD+6gbBAjhQlvftwYRW9l3RncM8gND5QDUprZytfiCI6/0d1xdMd1/G
	Z+g==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RsQtRySCOXfttOyQXiWwkKF+3OgBkMznpuBSxRL+kFSfoPPaDDmpPhwtbbXRsaNI+4NgYEmzen6s35RL1chqj/H01DH+Ubm3V4iS75fA+rzkxCmEmGyQJOmIuzm4ahNrF4a5rsjrv2uSYqXecqABSQ/dH08xkeyocglWWbyq9Q5R5fPWWrJUmzDijYuJOs199UgXahDIC29EE1NGzybN4SoEYGX+yo3qfgqn0L3zO2XocGb97et24fmUnoxcRZ82qVKAQZKJgZ2626KO6Lv41kqJNIc/0ZaJkL73GUNOufF8C7+V437PH0GWK6Op7Xf2Nz6tl5hXMBt9/SGbSglnWQ==
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=hiWGmLd5gN5t6oIVVRWaRZVSnc3B8aqJqB2CNlBTkxo=;
 b=UA6jKtRo9jUyhCmYdEuw9qJiZlMUC+wOG2qzdEkhrSa3rS+o/dyjBNQMBMGim97eeIaPooGQWFKwdeO0YaL+NlSb1iDU0ekPyFgeuR6v/TbbdCnOpiPlpbUMOvaRE84KBx9qUvcJq71wrEdC+KiRR76p6a7tcDw/OR2WvfEbWnXri9/9ifWoAx4smIzRKQtMRwzHfD/qpQmaAhE6bJKoFm/XDcdNuoipj44wbyE0GKXAMpjQvysXnSfXLnDQ+ZiKIizbUwPB9UpFNZVE6xgmh4y5HBIbFoPJQk0nk9Jjy+1WdjrdX5CFEPwCe4x8nOnK+7DAnPMhZK80Lt2AMjLIzA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hiWGmLd5gN5t6oIVVRWaRZVSnc3B8aqJqB2CNlBTkxo=;
 b=ljDLnr6BwJ+QrNn56jepuHKZ+AE7c9RElcYyyIQQY74OIHtoqCct1Ce398ljV01i/3fE2AFV+1l3MWt+briNvwZXnk9Io1f3mfYYIcmElur/h49ZwtRFva3fj9akm56sQyNjlv8H0z5NWsnCPmDjgMIDpxT45DwQiojFI8vFEYw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=hiWGmLd5gN5t6oIVVRWaRZVSnc3B8aqJqB2CNlBTkxo=; b=
	g1wiNb/n4SuLEB/VhRS/nDmRtEJu2Jp9jvifpkeXNiei9Zo34A+1EZnzQHxW4vPZ
	vWd9lprNyRPuWpczxC2i2G2XuFVQlXFm+R0TXWLgktaDhzqMK88HFMvC1uGA2+z6
	9sOlleD+UB63FcaGKoJRxqng5EeHIX4hjxoC11HD/7UzqvfiYpUdpQDXOy660kHn
	f5vNGho0RV2fMuAt4JpwFeTagzCCI0Z5QnxTB3X+1yf+7BnlbRSWfVu44GG9NWAW
	IXsNb4Fy2uOiAktuFLovj32TBjDciLtNS1nROYrlAaC8HTEqsAWkwHgEV5OHyYRf
	9dTwVcV1vW8SMCymvqWfDA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=hiWGmLd
	5gN5t6oIVVRWaRZVSnc3B8aqJqB2CNlBTkxo=; b=XAnvq1Eky3FE1IBdUkoKmiY
	hLj88b5ktT5pd4DAKIU1HDaconXokKCBA6xuUTIt49Mg0cUaEpz8/scuXJKx2pBB
	CSw197qE4Q1POMNhxpOO4bUjb+hDsgiFOnRYX09DJS6vzg4rHJxoTYAlKHKQeDyc
	VrMT+dcsAk9LZDgmwhGD2SqUnNsC49NkIjPeZEqOGM07QkwI66UnNQaLEn9FOSK0
	a506A6pM3JRq2HHtSmm2JPjMPb1MZmflOO7wbjR2bHULJoESSRB+ty/itu7n+edt
	+yE1dWAvhXtpBk6LHdfMPX9HF3lAbWeEws9B2QUUqSOZ3QJG6iA2Pu9/s5DlvDA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPrxjYxqf5COOmPsxlY7v
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 08/13] CI: enable on-demand XTF on qubes runners
Date: Wed,  4 Nov 2026 17:36:56 -0800
Message-ID: <20261105013701.719658-9-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF000392DB:EE_|SAEPR16MB405700:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 662e86e1-0617-4149-3e5a-08df3add5993
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022075727099003|261009223027099003|261102130727099003|261102123227099003|261026121527099003|10067099003|18002099003|22082099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	2oIQZAxFXDEdABafFSdbCwuIOEeOrAnSv4fBtrtWfuDNzX8ggyq+PdrFTlCHyAmzDCETa40+U0boqoghBW8D8/enshWFSbWpJOu64VztZffOVy0I/wEh6kYxGtbCr35gVjzibNsXTlkmvaqKMtQ57QMT3vHPOyoff9NlVlxs2mnH/xZTB0Q8FfsDWQ6S98MDLvkueeuwVkYKQnzK6iXn4JZ3jjmdYTmFIhyN5n3MlHOQWix6UiRU4s9I5rTxBvHWox8dWqb+Xk5m+qRbA0wj3M9RiG49JUB3liyI0duVwnAOlH73AMGPLjIyMlywZmfdHMvuyWKX5g42hHyfb0OBY7NMUi/jkyBVndmxS7AHvTvuPe0P/yxV0OOAJA899HjCVc9eLhJgcf9gU1zJPMSEgmuQIv2XSlY+nJCIfW7Up5sSWjiFBxuYLzTMyHFo7LFY/nHZDJ356x+CTq6OopWzbbZN9rwzXkgz30x/SqdEyaK0uwWQvl0CByW3amNli5gbFsAqKAijP5ibLfpA9LgwSWTsf7/UKZ3oal2qBDW3wSjsPr2nHSCXZ1wZhkKw6DwHmOQT2ugsx1vvapt9xVJNvq2Zg8cu55M3mcMQmE7vWaR0wZ+rzoWKKXU+Ot2f70Ivl/cLzy3J6l5J+7n2Ja8ICDb7v2r0AlY6wObCzbc+3cd7jXTyCIoNRGU3QLHZxM29JMjZqnD+YQuOnIHgUJml8g==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022075727099003)(261009223027099003)(261102130727099003)(261102123227099003)(261026121527099003)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	5SXn2/abMPSnVpUfxsyuia1ROGFqXQ2vzbaRBxXADquKmsaeLZtlE7n1cR3MW7/PqyqvQsVW0kqbsz5W423Hwf/tl5ZXn3N7HwVHHZubM//2uCNTTZrF33bWzisdMxOsmK1Pcb+orU3DYipLAoY3c79kv8NxKcwEdBmwE5BBznXB0viJTzw2CdP3sitnHlvXb3OozMuq7vtx0GZ/3JkU64NamCXxGTTSs8HVESjTM9NzM2XXcZZJA4sdJu6zMekC9eQ59ho2jEDL//3xrxrrZ98eS6obqruLx70s+IyIue8CLPJ97NXUak9SmGQiR3gB+PxiSJsoHy2+Ue0AXiEBCjV8Oikb/QHqL0U5okmwKkXPYgA7NwA0+x6kh7aK2iLKm3L0CTWf5g4FLEsSRq8qP2aNe9GU4hyY9rzg2Vz0B6iJkMyXtX4tIxK75Ekoifk6
X-Exchange-RoutingPolicyChecked:
	ue1U4RnesL3Dv0UgzIUk5cGrGsEFlvTihTNcTLpw9sl7vd2uJd3qlASOicqdIOTdNnLrIEX09NwJdZgfn0taAJtyR1PogMZQCDPw3xI1IYvkV31kWV/mru+jDJ3zNqx5tsua29dl8DHtrzSrN8m0p7rGoXhzMt+bqQZ9h4C61VIVcgfyQdxOBmjN7mTrbJ7uxhOP9+Lb3w7bIjhIMwt3V5nWvHsxXzJ/25WKRHpz3TV+kklXaUm2h0MMBkY/zLy2K7d84letCbjJQnTl3e7PSycFWdrH0IhwrXR0loRtS7FpiW13alZjoIjp+Q8yb+ad5cKLNArP9idl8EbeyvpHjA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	3yGF3KpKvqT3gGc/545Nik3dLa92wqFP8xSwZthFTq0Ok1g4hVIPlCMSzsuXkAAVtzeEa8sbZxp4uTF9hPMVSqrUPZwDjyy5YChkrNhU7NKynFiX8JgZTqqIKU3mnJXkWoIF+hElKLFDEoEKDqXm6EiG3YwTnRMWj2iKZDtKbyktxZauZAdWOrScJEEpgcGviw8xVGz97kDTFcfMo1ir8mMzUhp8HbWEwmUnX51FmOLwqs45trmXyx9D23Eg1nlxofkruWOAkZsqOdV58MvhsxtNUaIUEEVqiMJ9rsLMg7mWmotOA+/A6RAz2ePmafaqrj0bYpgCIVSONq8qFZQ+L1uWhAzF6nUPmQkUsyjXvnz4eKFqRYx3ssxXKNKcvDB1HPzwGh42OQiL654XXJdGoDxwdYn6Pp0ql7ZemktrwIe+EdyenRSHS6TrScKad3pRjtg/crQL51fIaXK6u0nRaqVsTJj1owXRgqL1w5xV9OPry9u9e0m0KbFe9eEOD4C0vWdGrYQwlbvrLYmzmqZDcSBT72TsQ5KtoA55ZTLpwn2i9BD4cBou42VRjNIYiaeB+jqrmIq+8jizHgnlfo7jJDyax3iVaL5Kh9UP64aAyVjjB0pH5bH5ygE4Wis6CLdCMiVeHj18zCc5Kxzunp60sg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:27.3417
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 662e86e1-0617-4149-3e5a-08df3add5993
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF000392DB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SAEPR16MB405700
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXyNBBprHDkJHG
 snA2yUqNkFso3YTeowFLmtUdH6HgCKD/76xUNZDVoUORzxSzVN/BGGjC+dCV07gZ7XHOUv53Hsy
 hlwDz4M/iw55y9HyOwfAY3QMHebamd3oHPNwzestDuo5a4cs7K4Q
X-Proofpoint-GUID: 36881nZaHXi5zlNKuG5PuuogFUcykD6u
X-Authority-Analysis: v=2.4 cv=XuBvqlF9 c=1 sm=1 tr=0 ts=6aebdddb cx=c_pps
 a=f2oOq7llzQIcdXl5NAnHtg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=vnUQfov-gS4s1L7hHvr-:22 a=cbNQJ9GKAAAA:8
 a=VcXuASJrcN1Qb-N3H0wA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXxueltAkUkch8
 So3S2FldrOsjnYVWKdhvdHoCF+SH9n/Vl9Bi1xhJ/dgHTvcc0FpH3hCcqXX/UgrG0VfSQjavhgC
 uFDQmCG20yF7uH0gXOuvtujXB9FadhNJleE8nvS1lLk3eeHXGoVRPyLbCTbsO1LIyazi3hMoVtm
 9KgUlouB2GtKvBzWWBETvpNC7fJLZd2lplE1NY1SYDUAToKj4qqtwb/z1dm3rDPeLSppDjwNBGV
 6fj+dxBeJOnUS7I3HeQRFXbjlNC9Ch7t1nCTqVjGfh9hdZVAHT9T5TDe1XFiSXuwd4m9RFn385Z
 9Y4C0n+D28apwEj08v761tPh6w+cMVn2uVlC9Zft2p2W6WcEwmZcgHvP4z5Sk/VWi/BMbwLJYwz
 JvVODX9AmhrIRDmUVBrvC/21t6moExoY7GMJiJtS78kL1DPgp2cBF0xNJ8ZD0Esw/D0JmBcF7pd
 J6gVknmvZ6aIJEv1zOw==
X-Proofpoint-ORIG-GUID: 36881nZaHXi5zlNKuG5PuuogFUcykD6u
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 malwarescore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0
 clxscore=1015 suspectscore=0 spamscore=0 phishscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-33051d/1793842652-6D8D54E9-6361D09C/0/0
X-purgate-type: clean
X-purgate-size: 4614

From: Denis Mukhin <dmukhin@ford.com>

Currently, public CI infra has no job to run an XTF on the hardware
runner.

This change enables running XTFs on hardware runners on demand, such
as test job on a development branch.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml              |  2 +
 automation/scripts/include/xtf/qubes-hw1    |  1 +
 automation/scripts/include/xtf/qubes-hw11   |  1 +
 automation/scripts/include/xtf/qubes-hw2    |  1 +
 automation/scripts/include/xtf/qubes-hw22   |  1 +
 automation/scripts/include/xtf/qubes-hw3    |  1 +
 automation/scripts/include/xtf/qubes-x86_64 | 54 +++++++++++++++++++++
 7 files changed, 61 insertions(+)
 create mode 120000 automation/scripts/include/xtf/qubes-hw1
 create mode 120000 automation/scripts/include/xtf/qubes-hw11
 create mode 120000 automation/scripts/include/xtf/qubes-hw2
 create mode 120000 automation/scripts/include/xtf/qubes-hw22
 create mode 120000 automation/scripts/include/xtf/qubes-hw3
 create mode 100644 automation/scripts/include/xtf/qubes-x86_64

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 9ca93842dfe7..4d7d5e3d9a11 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -244,6 +244,7 @@
     PCIDEV_INTR: "MSI-X"
     XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,msi,04:00.0"
     SUT_ADDR: test-1.testnet
+    XTF_TARGET: qubes-hw1
   tags:
     - qubes-hw1
 
@@ -255,6 +256,7 @@
     PCIDEV_INTR: "MSI-X"
     XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,msi"
     SUT_ADDR: test-11.testnet
+    XTF_TARGET: qubes-hw11
   tags:
     - qubes-hw11
 
diff --git a/automation/scripts/include/xtf/qubes-hw1 b/automation/scripts/include/xtf/qubes-hw1
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw1
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
diff --git a/automation/scripts/include/xtf/qubes-hw11 b/automation/scripts/include/xtf/qubes-hw11
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw11
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
diff --git a/automation/scripts/include/xtf/qubes-hw2 b/automation/scripts/include/xtf/qubes-hw2
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw2
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
diff --git a/automation/scripts/include/xtf/qubes-hw22 b/automation/scripts/include/xtf/qubes-hw22
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw22
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
diff --git a/automation/scripts/include/xtf/qubes-hw3 b/automation/scripts/include/xtf/qubes-hw3
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw3
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
diff --git a/automation/scripts/include/xtf/qubes-x86_64 b/automation/scripts/include/xtf/qubes-x86_64
new file mode 100644
index 000000000000..d183dd33e4af
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-x86_64
@@ -0,0 +1,54 @@
+#!/bin/bash
+#
+# XTF test utilities (qubes-* hardware x86_64 runners).
+#
+
+# Target-specific environment overrides.
+function xtf_init()
+{
+    export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen}"
+
+    XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all guest_loglvl=all dom0_mem=4G console_timestamps=boot}"
+    export EXTRA_XEN_CMDLINE="${XEN_CMDLINE} ${XEN_CONSOLE}"
+
+    export TFTP="/scratch/gitlab-runner/tftp"
+    export CONTROLLER="control@thor.testnet"
+}
+
+# Perform target-specific XTF environment setup.
+function xtf_setup_host()
+{
+    cat > "$TFTP/grub.cfg" <<EOF
+serial --port=auto --speed=115200 --word=8 --parity=no --stop=1
+terminal_input serial
+terminal_output serial
+
+insmod multiboot2
+
+echo Loading Xen...
+multiboot2 (http)/gitlab-ci/xen $XEN_CMDLINE
+
+echo Loading XTF...
+module2 (http)/gitlab-ci/xtf
+
+echo Booting Xen...
+boot
+    EOF
+
+    cat > $TFTP/boot.ipxe <<EOF
+#!ipxe
+kernel /gitlab-ci/xen $XEN_CMDLINE || reboot
+module /gitlab-ci/xtf || reboot
+boot
+EOF
+
+    cp ${XEN_BINARY} $TFTP/xen
+    cp ${XTF_BINARY} $TFTP/xtf
+
+    export TEST_CMD="ssh $CONTROLLER console"
+
+    trap "ssh $CONTROLLER poweroff" EXIT
+
+    # Boot the system
+    ssh $CONTROLLER gitlabci poweron
+}
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473390.1681068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ4-0002FM-C2; Thu, 05 Nov 2026 01:37:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473390.1681068; Thu, 05 Nov 2026 01:37:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ4-0002Cs-3J; Thu, 05 Nov 2026 01:37:36 +0000
Received: by outflank-mailman (input) for mailman id 1473390;
 Thu, 05 Nov 2026 01:37:33 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQ1-00024v-Fo
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQ0-000xdn-Sz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:32 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddb9-bab6-0a2a0a5309dd-0a2a450be758-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:32 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddb-b7e8-0a2a450b0019-94a38ff171a8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:32 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mdh32611538
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:31 GMT
Received: from bn8pr05cu002.outbound.protection.outlook.com
 (mail-eastus2azon11011069.outbound.protection.outlook.com [52.101.57.69])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rvva-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:30 +0000 (GMT)
Received: from DS7P220CA0080.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:259::13) by
 DM4PR16MB5096.namprd16.prod.outlook.com (2603:10b6:8:52::11) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.10; Thu, 5 Nov 2026 01:37:24 +0000
Received: from DS4PEPF000001C4.namprd21.prod.outlook.com
 (2603:10b6:8:259:cafe::76) by DS7P220CA0080.outlook.office365.com
 (2603:10b6:8:259::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Thu, 5
 Nov 2026 01:37:24 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 DS4PEPF000001C4.mail.protection.outlook.com (10.167.23.170) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.2
 via Frontend Transport; Thu, 5 Nov 2026 01:37:24 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nw2r2971351
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:23 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrph-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:23 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPpxuj9tz55iOmPpxXLdZ; Thu, 05 Nov 2026 01:37:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=eMJ
	7+fJaPspHNS78QHkdRIUv28HyzylFQ4loU77c2z4=; b=PbIRd8+UuAkHlTMJB1Y
	aIFbIkkMISSjWlMT/B48IrAnSVxYkV2+/RopSe7wCMgq1aYcrnKjAu5suZXTM0gS
	pbBOOZBOllANB6uEYOUMvByyDIGuiTciIDLzvmiN3Mj1SxULkC+Wp91WzVrNkHaK
	YgqktrHh9ffUo0kZ8jJ3ReIRvPdbqg55EnP1Jqx8YBKIGfJ2GdNWcncchiIxOS8m
	1ud4LARvsO+q16bbpPtDmUow/NBeWtIxfKILJPFkVIEs/zX7lRnhaS7QtbWA92Xv
	k1bYuIbUvSD48zhU6gRvthqRdLbYqb66/Jv8sBWdlDIcp1K2+rQT+OnWVXM/9/qK
	QmA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uTFx4kTQgN4gsUi5HlkMgQn6Og+w8DRQECFdGUeprSwR0pQO+lF8ntSux6yDlp+VuhnSfVkm9cG8WPGImDfNMAmc2pqGRT21fe0YJUWVHGODiut9aalKxffEHpvAUMkfpDJ7DeymKeKpSNVm7f9an0Yp2U9L6iTNGqNvdqHQWOwkkqFF8/kr7t+0HdpKDm4/Q3a7n7odcr9OalAs1tnthbP2MmE+JTDfV8QJjaRsqRjidTSjVS04p4PvcSHi3ZRPW1vmutnWi0STD2jTRiJKefYCaSl9ZWazlAWjC09/I6lNcaZmBKG/Td3FregqWx/5eaJQdfTaK6qiUx/qbbTbPA==
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=eMJ7+fJaPspHNS78QHkdRIUv28HyzylFQ4loU77c2z4=;
 b=PXRmtaHDhOY9Y/bneboHPRoXIAvJWDUAUcZs2ki2Ly1XdUoKCEThgWwwgRxW2+mQwY3Ft9v2A3K7V+GpBcdlDTw7pEFlHm0zVpx1pnRjaIgrJs6EdInrU03afMHgY4UVUfCsaxQdwn9fZzbD7khdx64gNvZiEJi7kVF6r9E7XhipCPDfXqlHgpNRlfqeLAm02ZuBLvnSNRcosCSVNsqqaBBhhKEmYtirONCYkT+S4eBw9AQBffj1ZMgaeF31sy5EZB5y8XAjMxO+c4PNXehe4Lm1B/C1m5eYvjdmiOmJNecEhv/OzZSoXfKXT8Yb/zMUWZBKUopyY6kLT1xor19akw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eMJ7+fJaPspHNS78QHkdRIUv28HyzylFQ4loU77c2z4=;
 b=a7e3jcA3e9Fdq+5PSBTgD6AN3oBQHmt/2oZMF3HoKxetfq3n4VcrU6VBct7pvtYmD8CrPV0EO1t/OI2qc6yx08Wd8AF1nOdBtQOG6nYfaUoNFTPb5EqIDKAD+sWkM5fG9hevV03YnFS6lvgXHgOrco/wvdp2+ySLOXx3P3fB4zw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=eMJ7+fJaPspHNS78QHkdRIUv28HyzylFQ4loU77c2z4=; b=
	FX9Toz3R0wsGd/DYm4hBUD+i5J+b/JioJh5lBakjlp0xpwkyf9lxCb8rflUGZRXz
	ez2rOOUmdNJK+GuPxQyFIi9FptAfFK+FcDJCimINdfwJpQ9gMg5INy/buothXbi9
	czaYdcEePHwFBEP6sctKgBXa6S844dSVkwzPZEl1YuYM9iWVYyDut55rieaz1FLM
	BE2bfUa7RJBpETITq4jRHfksLDmD50s6Z2XPowEVgZuSrCEQDKage2cJMtIxWj86
	DmvdK3Il6WmkNbvTw/gu6bfZ/JboP1b+yBRC3tXCgpPYYeOuEt/xHHC279oTkcjh
	tYzAa4iUxVSpslNOS9Vhzg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=eMJ7+fJ
	aPspHNS78QHkdRIUv28HyzylFQ4loU77c2z4=; b=Z53iHNw1QzlvDGWLDO+Kq/N
	lOD5/P7EgD/NMeTh24bNHp4S/vph3RzQY5eb9BZaPwm/bJFXxdMwS0YQC9ExVOyO
	krZA0LRrhzjVytuwcyEX7iwGtivGzZiksAoBDwxJn2g73AF11NNDMRjKmvze3RZ2
	Z543SECe7JSTrpI77JAPpS5xk+kdAQ4AltVtAkx3pFjHbp8uuVgBqGOMpzJDBEhg
	Cc9bVWSc/c9bsEMhYHQErp+/1g2kCCecYUpJVBlCyjXQIeT2U7LmBNfaBG1VSYl8
	KyNxrRGg63yvYV6T6Jr76kpl6FKf8fpi1Giw03u/o8KBKIxVsZrj3PvW6bGNK2g=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPpxuj9tz55iOmPpxXLdZ
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 07/13] CI: rework to allow hardware runners
Date: Wed,  4 Nov 2026 17:36:55 -0800
Message-ID: <20261105013701.719658-8-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS4PEPF000001C4:EE_|DM4PR16MB5096:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 1fa11602-8110-44f5-aabe-08df3add57dd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700016|23010399003|376014|22082099003|18002099003|6133799003|10067099003|3023799007|13003099007|56012099006|11063799006|261026140227099003|261022115727099003|261026121527099003|261102130727099003|261028144727099003|261021121427099003|261021123027099003|261022075727099003|261102123227099003|261022105027099003|261009223027099003|260925022911599003|260925021911599003|260925021311599003;
X-Microsoft-Antispam-Message-Info:
	CAjGAQ6r0xd2gM1VintJjo1TtOaYNyl2B73+ZXUAj+zZImb2ogWYpQEL7Mo2eDCU/QqRot2XcYRVku+3ZbENeKJI3nsLcKIvvoR/SyH6yRb9k81s55djTi/FADCOSj2DPeMv9zR7KUHDbOTZDpn6G0hDbk1vAiU6ik77yUuw5f+Dg/fbsOIa5D4l/tr/exgr7Kyf9k5t1JECyYZCWlExfBfiGIQedurh5CtgkM3oTD4zneIfB1+9HCa68e+7oNOymqDTz9pBgfvbGC8wcanHvSynIXoCnjExpb4LBqH+suuAYgpQk9Xvtjlxzl500SWWfe30oOJTApjmhBEcnYHr5z9ehyAC54x8bMIAVlc5uli8tSxSCBtptDeTSylt/VUsmbMnE65QRFecqlvkbAI1t87aNhOvoS5ObTuMPlVeU34bFH4HvrtSFsWBZw81cYwHey4yfcyppCW4yQxySSjVwDbMYPvd+gsNY1nB6syzzsHqr4lBZ9/mPC0oJHCbRynDdnenADWRbIG52eSpIMS7wFy47XpOrtML5mfK4NtiAPW9ogSF+9XxhS6cgj8rdBNLYBMuyfLM7C/S7B3uQvEl6J2/4c0EBaUIH0Tlh1HudtF3dL74tfYWjQsw5EowD8ayTc97nSsVe+bGKO+MEoUrqg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(3023799007)(13003099007)(56012099006)(11063799006)(261026140227099003)(261022115727099003)(261026121527099003)(261102130727099003)(261028144727099003)(261021121427099003)(261021123027099003)(261022075727099003)(261102123227099003)(261022105027099003)(261009223027099003)(260925022911599003)(260925021911599003)(260925021311599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TCBjZejOBWwoxltoWMsOcu3zkZHoC0PMqLPODGMIHKPnke568w5ib33fj+WU0WmSAHhhAQ234oiO7iLpKCyCRr8+7w6GvX2WbTEV1IK/Vra3QUaW+sFlhoL9XlxUCsrFTzzhThExEdgILgS3JaYHB+DvqHh4olA7Zqyocdp9axUaOGEYCaax01x0lBETDlxgqOOA2bI8YI4tRR0Oiq9f4bmxAwYx0q9VdqWNjniMYwZHoTvPFKEu82BBn+OG1QmXomvyEs7T9QVXvzyC/4K/UgJp7lGupaltdKhOkEkxcU4m08oVHSO2FJdGFAXkuxB1GT4Kxanr4+ttjq9dokqnuysszbLJ4TayxkPE9sCgRyXB29x1pHDp5Xwb/OXKQ5g0dauWkjmuENrEgdM/ADSyJ0LLZhb2nuZQ5IRaGJ+4WcduCTKNjy7YQd2+ci3XFfA6
X-Exchange-RoutingPolicyChecked:
	tqAA86xomtOi4kYPAwuOInUtPMm6nKVBdfE09sjBsJkYS3IGJIjtePqoCx98GXu2eKIhgWUgKJFbWJCkP8QI0ChJGzyCoDEcM9+aLPx04TB0NkkZhjNm2ZCFfVwi2k6476BZ64Z1jE8/QFWt6j2Wi1EMnRgUsjjriIzTVrS4vQBj2yprU93sXMYmWk9t7NE4KSK0bG6Dgxo6dnjbciLg+DpMAp+by5H02v2szII0KDp9LX5yky1OoHom4f4w+s/LUJsAQouNt441PGh/FdmUxjl3gkiqc0+nUnIDsRdTbsxhCqlhsMDoMdr9lggzfkbm+kFG9pKOsnS2jLoVpnqgpA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	7x5TfF9uN4ifopv1VHQ1hIeciAGrKiUvE6h8EIpuP5SErwWbktltvbkV2+NF/4gx61TJb7kPo/3/IU3keYlNxSbo1leARi+WLc3LhACwsarHRp4H9SF+6U0TNajjsFQ7LyxukiOUFiPhmqjSO6Kco/OdlESwpu2IkPOHH2IENP7daevcHsVDa7sw3A67gQCI7WeoSoL3yUuD+GONKYaRu7aWGBbKTlr7fqga3d8gJsqHpWHtWzpFx3mYUmnqT9l1qLLB6Oq8pzZSpu5Dur3aHUJYN7Y9gbQfgRAqSsQHD9n268yHUb10pStvhXCP916XB474Iz/8C/LvuHP/H7CMqMXrqG+6e11kdMBrudaC1Bu/7e5wnYoueQeQatRYTTEAMNETs+wJEiNPL/opItNKwCqyx86u+pj6nn23GYOuaOxAFfICmT4dGcWYwxM4FfsLecTyw00D+WSjvG/qndmCoZbIJRQgCOfGiF0cXfv+RFw7I/MiT2lJQX9Yovai5nu4JIRV/kFtUSKLkz5FqJgxtf8sKDSqkc4QvDwG5I6PYMsDUrEj1rUNCkvjKz2TgJsJkhsgSX+GrU10K+qdw0Erd2Wur/JHDMw/y/5eW/AvHpw82XeELwq9Ffnhh8iY/Iae2qcB0SzSCN3UesEGCLBjSQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:24.4036
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1fa11602-8110-44f5-aabe-08df3add57dd
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS4PEPF000001C4.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR16MB5096
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebddda cx=c_pps
 a=e0i8hnKg6rYC2BAxtNpLhQ==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=VwQbUJbxAAAA:8
 a=cWRNjhkoAAAA:8 a=p0WdMEafAAAA:8 a=mLnsDVdbAAAA:8 a=cbNQJ9GKAAAA:8
 a=Kh_WWJUcqPMiyg44z38A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
 a=sVa6W5Aao32NNC1mekxh:22 a=xnp1pY6zelCj5OLna2To:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX+OPa15ZZoGsB
 0rg8ELFSGNMII2h3fQW0PZMTovCAxAli1i7KcoF58UqG5pGrjhw5mcMcqI1/3Zq93ycvPz7VHDw
 QceNO1lTv+9UeU0K69uQd3rTBN1zQKAeVOQEjL0AJ4RHVyErUadH
X-Proofpoint-ORIG-GUID: wnO-Lte5Ca-nU2Mr1Zhv4j4nyCmfzr-Z
X-Proofpoint-GUID: wnO-Lte5Ca-nU2Mr1Zhv4j4nyCmfzr-Z
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX9Yu1qaBG5WWj
 0+8vfikgH2AW3aE/XtAE3Dtj27ZGDE+aeoyJRwX+bBxwMOhkXhcbc7wXQJOxI6vP4N/ypxU/sJ1
 Eg8VRxPczOkNyKKyUrUBj4hco6BxYoz8e2s8RPmkSA6sVNHQ6sgqwRLAcB5I0bsSKLFARIzfHL0
 EVXdmnCHALZ/zJsq43UVukJO9r6Atd7jQScT1rW35vk0ENcheseumwAihT1+mR7gxa89vPVnFnl
 BN0C4lnB2VdQUKd2nbehlbLb4RFMHnRvQjtzvVvaNHD+h44OjMO5JI0I5PrTXxNTWpBeBR+komx
 8w418IahxY/fAJxat1TGbq+moJyvgUMXPXoh8pHzcanU+CVNf7yRn0bveVnqldVwSyvpvM/OsN5
 DT596eDFZoRcON/XcimQqLTGUdtrMtPhCS6Vx59qTDv9M+jc0oTD59cDYPJ/ml8F+uC1+hGmKRZ
 BkcyqcaNeS5k2szcg7Q==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842652-19AC09EA-5E7ACD6B/0/0
X-purgate-type: clean
X-purgate-size: 30910

From: Denis Mukhin <dmukhin@ford.com>

Rework current bash tooling to simplify its use for local testing
and CI integration.

Allow batching multiple tests in one run.

The batching rules are:
- Use 'SELECTED_GROUP_ONLY' for running only XTF group of jobs.
  If unset, run all XTF jobs.
- Use file passed in 'XTF_MANIFEST' to select a group of tests to
  run. If unset, run all known tests.
- Use regex in 'SELECTED_XTF_ONLY' environment variable to select
  a group of XTF tests. If unset, run all tests.

Correctly resolve individual XTF test statuses returned from
console.exp for pretty accounting.

Include per-test title in the output.

Rely on per-XTF 'info.json' for assembling per-test Xen command line.

Prefix all per-arch XTF QEMU configuration fragments with "qemu-"
prefix and move them under 'xtf' directory. While here, rename
qemu-xtf.sh to xtf.sh since the code is now generic, not QEMU
specific.

Update all affected QEMU XTF jobs.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
That may clash with
  https://lore.kernel.org/xen-devel/20260922100900.29129-1-anthony@xenproject.org/
and
  https://lore.kernel.org/xen-devel/1793715358.8631fc262581453bbf619ec5b2062170.1a1a1c44b87000403d@vates.tech

My take - pytests is the way to go, but I had to unblock myself
with running some AVIC testing, so ended up with existing bash
infra cleanup.
---
 automation/gitlab-ci/test.yaml                | 165 +++++---
 .../scripts/include/configs/xtf-arm64-config  |   2 -
 .../scripts/include/configs/xtf-x86_64-config |   0
 .../include/configs/xtf-x86_64-efi-config     |   0
 .../scripts/include/manifests/qemu-x86_64     |  75 ++++
 automation/scripts/include/xtf-runner         | 138 ------
 .../include/{xtf-arm64 => xtf/qemu-arm64}     |  13 +-
 .../include/{xtf-x86_64 => xtf/qemu-x86_64}   |  13 +-
 .../{xtf-x86_64-efi => xtf/qemu-x86_64-efi}   |  13 +-
 automation/scripts/qemu-xtf.sh                |  28 --
 automation/scripts/xtf                        | 395 ++++++++++++++++++
 11 files changed, 590 insertions(+), 252 deletions(-)
 delete mode 100644 automation/scripts/include/configs/xtf-arm64-config
 delete mode 100644 automation/scripts/include/configs/xtf-x86_64-config
 delete mode 100644 automation/scripts/include/configs/xtf-x86_64-efi-config
 create mode 100644 automation/scripts/include/manifests/qemu-x86_64
 delete mode 100644 automation/scripts/include/xtf-runner
 rename automation/scripts/include/{xtf-arm64 => xtf/qemu-arm64} (79%)
 rename automation/scripts/include/{xtf-x86_64 => xtf/qemu-x86_64} (53%)
 rename automation/scripts/include/{xtf-x86_64-efi => xtf/qemu-x86_64-efi} (75%)
 delete mode 100755 automation/scripts/qemu-xtf.sh
 create mode 100755 automation/scripts/xtf

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 047c4d513a65..9ca93842dfe7 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -5,6 +5,31 @@
   - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
     when: on_success
 
+.test-jobs-group:
+  extends:
+    - .test-jobs-common
+  rules:
+    - if: '$CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $SELECTED_GROUP_ONLY =~ /(^|,)(all|[*])(,|$)/'
+      when: on_success
+    - if: '$CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $SELECTED_GROUP_ONLY =~ $GROUP_REGEX'
+      when: on_success
+    - if: '$CI_JOB_NAME =~ $SELECTED_JOBS_ONLY'
+      when: manual
+      allow_failure: true
+    - when: never
+
+.test-jobs-perf:
+  extends:
+    - .test-jobs-group
+  variables:
+    GROUP_REGEX: '/(^|,)perf(,|$)/'
+
+.test-jobs-hardware-xtf:
+  extends:
+    - .test-jobs-group
+  variables:
+    GROUP_REGEX: '/(^|,)xtf(,|$)/'
+
 .arm64-test-needs: &arm64-test-needs
   - project: $ARTIFACTS_REPO
     job: $LINUX_JOB_ARM64
@@ -27,11 +52,44 @@
     job: microcode-x86
     ref: $ARTIFACTS_BRANCH
 
+.xtf-arm64-gcc-debug:
+  variables:
+    ARCH: arm64
+  script:
+    - time ./automation/scripts/xtf 2>&1 | tee ${LOGFILE}
+  artifacts:
+    paths:
+      - '*.log'
+    when: always
+  needs:
+    - *arm64-test-needs
+    - alpine-3.24-arm64-gcc-debug
+    - xtf-arm64-gcc-debug
+
+.xtf-x86_64-gcc-debug:
+  variables:
+    ARCH: x86_64
+  script:
+    - |
+      if [[ "${CONTAINER}" != "debian:13-x86_64" ]]; then
+          apk add --no-cache binutils
+      fi
+    - time ./automation/scripts/xtf 2>&1 | tee ${LOGFILE}
+  artifacts:
+    paths:
+      - '*.log'
+    when: always
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+    - xtf-x86_64-gcc-debug
+
 .qemu-arm64:
   extends: .test-jobs-common
   variables:
     CONTAINER: debian:13-arm64v8
     LOGFILE: qemu-smoke-arm64.log
+    XTF_TARGET: qemu-arm64
   artifacts:
     paths:
       - smoke.serial
@@ -58,6 +116,7 @@
   variables:
     CONTAINER: debian:13-x86_64
     LOGFILE: qemu-smoke-x86_64.log
+    XTF_TARGET: qemu-x86_64
   artifacts:
     paths:
       - smoke.serial
@@ -66,11 +125,6 @@
   tags:
     - x86_64
 
-.qemu-smoke-x86_64:
-  extends: .qemu-x86_64
-  variables:
-    TEST_TIMEOUT_OVERRIDE: 120
-
 .qemu-riscv64:
   extends: .test-jobs-common
   variables:
@@ -503,6 +557,12 @@ zen2-suspend-x86_64-gcc-debug:
     - *x86_64-test-needs
     - alpine-3.24-x86_64-gcc-debug
 
+zen2-xtf-x86_64-gcc-debug:
+  extends:
+    - .zen2-x86_64
+    - .xtf-x86_64-gcc-debug
+    - .test-jobs-hardware-xtf
+
 zen3p-smoke-x86_64-gcc-debug:
   extends: .zen3p-x86_64
   script:
@@ -565,6 +625,12 @@ zen3p-tools-tests-pvh-x86_64-gcc-debug:
     - *x86_64-test-needs
     - alpine-3.24-x86_64-gcc-debug
 
+zen3p-xtf-x86_64-gcc-debug:
+  extends:
+    - .zen3p-x86_64
+    - .xtf-x86_64-gcc-debug
+    - .test-jobs-hardware-xtf
+
 qemu-smoke-dom0-arm64-gcc:
   extends: .qemu-arm64
   script:
@@ -653,21 +719,13 @@ qemu-smoke-dom0less-arm64-gcc-debug-earlyprintk:
     - *arm64-test-needs
     - alpine-3.24-arm64-gcc-debug-earlyprintk
 
-qemu-xtf-dom0less-arm64-gcc-hyp-xen-version:
-  extends: .qemu-arm64
-  script:
-    - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
-  needs:
-    - *arm64-test-needs
-    - alpine-3.24-arm64-gcc
-
-qemu-xtf-dom0less-arm64-gcc-debug-hyp-xen-version:
-  extends: .qemu-arm64
-  script:
-    - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
-  needs:
-    - *arm64-test-needs
-    - alpine-3.24-arm64-gcc-debug
+qemu-xtf-arm64-gcc-debug:
+  extends:
+    - .qemu-arm64
+    - .test-jobs-common
+    - .xtf-arm64-gcc-debug
+  variables:
+    TEST_TIMEOUT_OVERRIDE: 10
 
 qemu-smoke-dom0-arm32-gcc:
   extends: .qemu-arm32
@@ -741,49 +799,36 @@ qemu-alpine-x86_64-gcc:
     - *x86_64-test-needs
     - alpine-3.24-x86_64-gcc
 
-qemu-smoke-x86_64-gcc:
-  extends: .qemu-smoke-x86_64
-  script:
-    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 example 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-x86_64-gcc-debug
-
-qemu-smoke-x86_64-clang:
-  extends: .qemu-smoke-x86_64
-  script:
-    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 example 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-x86_64-clang-debug
-
-qemu-smoke-x86_64-gcc-pvh:
-  extends: .qemu-smoke-x86_64
-  script:
-    - ./automation/scripts/qemu-xtf.sh x86_64 hvm64 example 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-x86_64-gcc-debug
-
-qemu-smoke-x86_64-clang-pvh:
-  extends: .qemu-smoke-x86_64
-  script:
-    - ./automation/scripts/qemu-xtf.sh x86_64 hvm64 example 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-x86_64-clang-debug
-
-qemu-smoke-x86_64-gcc-efi:
-  extends: .qemu-smoke-x86_64
-  script:
-    - ./automation/scripts/qemu-xtf.sh x86_64-efi pv64 example 2>&1 | tee ${LOGFILE}
-  needs:
-    - debian-13-x86_64-gcc-debug
-
-qemu-xtf-argo-x86_64-gcc-debug:
-  extends: .qemu-smoke-x86_64
+qemu-xtf-x86_64-gcc-debug:
+  extends:
+    - .qemu-x86_64
+    - .test-jobs-common
+    - .xtf-x86_64-gcc-debug
   variables:
-    TEST_TIMEOUT_OVERRIDE: 60
+    TEST_TIMEOUT_OVERRIDE: 10
+    XTF_MANIFEST: include/manifests/qemu-x86_64
+
+qemu-xtf-x86_64-efi-gcc-debug:
+  extends: qemu-xtf-x86_64-gcc-debug
+  variables:
+    XTF_TARGET: qemu-x86_64-efi
+
+qemu-xtf-x86_64-clang-debug:
+  extends: .qemu-x86_64
+  variables:
+    ARCH: x86_64
+    TEST_TIMEOUT_OVERRIDE: 10
+    XTF_MANIFEST: include/manifests/qemu-x86_64
   script:
-    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 argo 2>&1 | tee ${LOGFILE}
+    - time ./automation/scripts/xtf 2>&1 | tee ${LOGFILE}
+  artifacts:
+    paths:
+      - '*.log'
+    when: always
   needs:
-    - alpine-3.24-x86_64-gcc-debug
+    - *x86_64-test-needs
+    - debian-13-x86_64-clang-debug
+    - xtf-x86_64-clang-debug
 
 qemu-smoke-riscv64-gcc:
   extends: .qemu-riscv64
diff --git a/automation/scripts/include/configs/xtf-arm64-config b/automation/scripts/include/configs/xtf-arm64-config
deleted file mode 100644
index 99427409276d..000000000000
--- a/automation/scripts/include/configs/xtf-arm64-config
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_GICV2=y
-CONFIG_SBSA_UART=y
diff --git a/automation/scripts/include/configs/xtf-x86_64-config b/automation/scripts/include/configs/xtf-x86_64-config
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/automation/scripts/include/configs/xtf-x86_64-efi-config b/automation/scripts/include/configs/xtf-x86_64-efi-config
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/automation/scripts/include/manifests/qemu-x86_64 b/automation/scripts/include/manifests/qemu-x86_64
new file mode 100644
index 000000000000..82b40deb94e5
--- /dev/null
+++ b/automation/scripts/include/manifests/qemu-x86_64
@@ -0,0 +1,75 @@
+test-hvm32-argo
+test-hvm32-cpuid
+test-hvm32-debug-regs
+test-hvm32-example
+test-hvm32-invlpg
+test-hvm32-lm-ts
+test-hvm32-selftest
+test-hvm32-xsa-122
+test-hvm32-xsa-188
+test-hvm32-xsa-239
+test-hvm32-xsa-317
+test-hvm32pae-argo
+test-hvm32pae-cpuid
+test-hvm32pae-debug-regs
+test-hvm32pae-example
+test-hvm32pae-invlpg
+test-hvm32pae-selftest
+test-hvm32pae-xsa-122
+test-hvm32pae-xsa-188
+test-hvm32pae-xsa-317
+test-hvm32pse-argo
+test-hvm32pse-cpuid
+test-hvm32pse-debug-regs
+test-hvm32pse-example
+test-hvm32pse-selftest
+test-hvm32pse-xsa-122
+test-hvm32pse-xsa-188
+test-hvm32pse-xsa-317
+test-hvm64-argo
+test-hvm64-cpuid
+test-hvm64-debug-regs
+test-hvm64-example
+test-hvm64-invlpg
+test-hvm64-lbr-tsx-vmentry
+test-hvm64-lm-ts
+test-hvm64-rtm-check
+test-hvm64-selftest
+test-hvm64-xsa-122
+test-hvm64-xsa-168
+test-hvm64-xsa-173
+test-hvm64-xsa-188
+test-hvm64-xsa-195
+test-hvm64-xsa-221
+test-hvm64-xsa-231
+test-hvm64-xsa-232
+test-hvm64-xsa-269
+test-hvm64-xsa-277
+test-hvm64-xsa-278
+test-hvm64-xsa-304
+test-hvm64-xsa-317
+test-hvm64-xsa-454
+test-hvm64-xsa-463
+test-pv64-argo
+test-pv64-cpuid
+test-pv64-example
+test-pv64-rtm-check
+test-pv64-xsa-122
+test-pv64-xsa-182
+test-pv64-xsa-188
+test-pv64-xsa-193
+test-pv64-xsa-212
+test-pv64-xsa-221
+test-pv64-xsa-224
+test-pv64-xsa-227
+test-pv64-xsa-231
+test-pv64-xsa-232
+test-pv64-xsa-234
+test-pv64-xsa-255
+test-pv64-xsa-259
+test-pv64-xsa-279
+test-pv64-xsa-286
+test-pv64-xsa-296
+test-pv64-xsa-317
+test-pv64-xsa-333
+test-pv64-xsa-7
diff --git a/automation/scripts/include/xtf-runner b/automation/scripts/include/xtf-runner
deleted file mode 100644
index d1ef888465c3..000000000000
--- a/automation/scripts/include/xtf-runner
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/bin/bash
-#
-# XTF test utilities.
-#
-# Environment variables:
-#   BOOT_MSG: Expected boot message
-#   FW_PREFIX: Firmware images path including '/' at the end
-#   PASSED: XTF test printout in case of a pass
-#   QEMU_PREFIX: QEMU path including '/' at the end
-#   TEST_LOG: Output log file
-#   UBOOT_CMD: U-Boot command line
-#   WORKDIR: Test working directory
-#   XEN_BINARY: Xen binary location
-#   XEN_CONSOLE: Xen console device name
-#   XTF_SRC_CONFIG: XTF config file
-#   XTF_SRC_BRANCH: XTF branch
-#   XTF_SRC_URI: XTF source code URI
-
-# Output log file
-TEST_LOG="${TEST_LOG:-${XEN_ROOT}/smoke.serial}"
-# XTF test printout in case of a pass
-PASSED="${PASSED:-Test result: SUCCESS}"
-# Expected boot message
-BOOT_MSG="${BOOT_MSG:-Latest ChangeSet: }"
-# Test working directory
-WORKDIR="${WORKDIR:-${XEN_ROOT}/binaries}"
-# XTF source code
-XTF_SRC_CONFIG="${XTF_SRC_CONFIG:-include/configs/xtf-${ARCH}-config}"
-
-function die()
-{
-    set +x
-    echo "FATAL: $*" >&2
-    exit 1
-}
-
-# Build an XTF test binary.
-# $1 Test variant.
-# $2 Test name.
-function xtf_build_binary()
-{
-    local xtf_variant=$1
-    local xtf_name=$2
-    local xtf_dir="xtf-${ARCH}"
-
-    # Crude check for local testing
-    if [ ! -d ${xtf_dir} ]; then
-        git clone ${XTF_SRC_URI} ${xtf_dir} -b ${XTF_SRC_BRANCH}
-    fi
-
-    make \
-        -C ${xtf_dir} \
-        -j$(nproc) \
-        $(tr '\n' ' ' < ${XTF_SRC_CONFIG}) \
-        TESTS=tests/${xtf_name}
-
-    export XTF_NAME="${xtf_name}"
-    export XTF_VARIANT="${xtf_variant}"
-    export XTF_WORKDIR="$(readlink -f ${xtf_dir})"
-    export XTF_BINARY="${XTF_WORKDIR}/tests/${xtf_name}/test-${xtf_variant}-${xtf_name}"
-}
-
-# Build Xen command line for running an XTF test.
-# $1 Test variant.
-# $2 Test name.
-function xtf_build_cmdline()
-{
-    local xtf_variant=$1
-    local xtf_name=$2
-    declare -a cmdline=()
-    declare -A per_test_args=(
-        [argo]="argo=1,mac-permissive=1"
-    )
-
-    cmdline+=("${XEN_CMDLINE}")
-
-    # NB: OK to have hvm64, which is x86-only variant
-    if [[ $xtf_variant == "hvm64" ]]; then
-        cmdline+=("dom0-iommu=none dom0=pvh")
-    fi
-
-    if [[ -v per_test_args[${xtf_name}] ]]; then
-        cmdline+=("${per_test_args[${xtf_name}]}")
-    fi
-
-    export XEN_CMDLINE="${cmdline[@]}"
-}
-
-# Build an XTF test environment.
-# $1 Test variant.
-# $2 Test name.
-function xtf_build_test()
-{
-    local v=$1
-    local xtf_name=$2
-    local xtf_variant=""
-
-    for x in ${XTF_SRC_VARIANTS}; do
-        if [[ "${x}" == "${v}" ]]; then
-            xtf_variant=${v}
-            break
-        fi
-    done
-    if [[ -z $xtf_variant ]]; then
-        die "unsupported test variant '$1', supported variants: ${XTF_SRC_VARIANTS}"
-    fi
-
-    xtf_build_binary ${xtf_variant} ${xtf_name}
-    xtf_build_cmdline ${xtf_variant} ${xtf_name}
-}
-
-# Execute an XTF test.
-function xtf_run_test()
-{
-    rm -f ${TEST_LOG}
-    export BOOT_MSG PASSED TEST_CMD TEST_LOG UBOOT_CMD
-    ./console.exp |& sed 's/\r\+$//'
-}
-
-# Setup environment and run an XTF test.
-# $1 Test variant.
-# $2 Test name.
-function xtf_test()
-{
-    # Out: FW_*, QEMU_*, XEN_{BINARY,CONSOLE}, XTF_SRC_*
-    xtf_arch_prepare
-
-    # In: XTF_SRC_*
-    # OUt: XTF_{BINARY,NAME,VARIANT,WORKDIR} and XEN_CMDLINE
-    xtf_build_test $@
-
-    # In: FW_*, QEMU_*, XTF_*, XEN_*
-    # Out: BOOT_MSG, PASSED, TEST_{CMD,LOG}, UBOOT_CMD
-    xtf_arch_setup
-
-    # In: BOOT_MSG, PASSED, TEST_{CMD,LOG}, UBOOT_CMD
-    xtf_run_test
-}
diff --git a/automation/scripts/include/xtf-arm64 b/automation/scripts/include/xtf/qemu-arm64
similarity index 79%
rename from automation/scripts/include/xtf-arm64
rename to automation/scripts/include/xtf/qemu-arm64
index 5d851af788a1..1f23e33fc0ac 100644
--- a/automation/scripts/include/xtf-arm64
+++ b/automation/scripts/include/xtf/qemu-arm64
@@ -3,20 +3,17 @@
 # XTF test utilities (arm64).
 #
 
-# Arch-specific environment overrides.
-function xtf_arch_prepare()
+# Target-specific environment overrides.
+function xtf_init()
 {
     export FW_PREFIX="${FW_PREFIX:-/usr/lib/u-boot/qemu_arm64/}"
     export QEMU_PREFIX="${QEMU_PREFIX:-}"
     export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen}"
-    export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=dtuart}"
-    export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-xtf-arm}"
-    export XTF_SRC_URI="${XTF_SRC_URI:-https://gitlab.com/xen-project/fusa/xtf.git}"
-    export XTF_SRC_VARIANTS="mmu64le"
+    export EXTRA_XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=dtuart}"
 }
 
-# Perform arch-specific XTF environment setup.
-function xtf_arch_setup()
+# Perform target-specific XTF environment setup.
+function xtf_setup_host()
 {
     # Crude check for local testing
     if [ ! -d imagebuilder ]; then
diff --git a/automation/scripts/include/xtf-x86_64 b/automation/scripts/include/xtf/qemu-x86_64
similarity index 53%
rename from automation/scripts/include/xtf-x86_64
rename to automation/scripts/include/xtf/qemu-x86_64
index 186f074bd8eb..0e079893dc25 100644
--- a/automation/scripts/include/xtf-x86_64
+++ b/automation/scripts/include/xtf/qemu-x86_64
@@ -3,20 +3,17 @@
 # XTF test utilities (x86_64).
 #
 
-# Arch-specific environment overrides.
-function xtf_arch_prepare()
+# Target-specific environment overrides.
+function xtf_init()
 {
     export FW_PREFIX="${FW_PREFIX:-}"
     export QEMU_PREFIX="${QEMU_PREFIX:-}"
     export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen}"
-    export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=com1}"
-    export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}"
-    export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}"
-    export XTF_SRC_VARIANTS="hvm64 pv64"
+    export EXTRA_XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=com1}"
 }
 
-# Perform arch-specific XTF environment setup.
-function xtf_arch_setup()
+# Perform target-specific XTF environment setup.
+function xtf_setup_host()
 {
     export TEST_CMD="${QEMU_PREFIX}qemu-system-x86_64 \
         -no-reboot \
diff --git a/automation/scripts/include/xtf-x86_64-efi b/automation/scripts/include/xtf/qemu-x86_64-efi
similarity index 75%
rename from automation/scripts/include/xtf-x86_64-efi
rename to automation/scripts/include/xtf/qemu-x86_64-efi
index 15c6463dcdc5..dd2b8c3c6e52 100644
--- a/automation/scripts/include/xtf-x86_64-efi
+++ b/automation/scripts/include/xtf/qemu-x86_64-efi
@@ -3,20 +3,17 @@
 # XTF test utilities (x86_64, EFI).
 #
 
-# Arch-specific environment overrides.
-function xtf_arch_prepare()
+# Target-specific environment overrides.
+function xtf_init()
 {
     export FW_PREFIX="${FW_PREFIX:-/usr/share/OVMF/}"
     export QEMU_PREFIX="${QEMU_PREFIX:-}"
     export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen.efi}"
-    export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=com1}"
-    export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-master}"
-    export XTF_SRC_URI="${XTF_SRC_URI:-https://xenbits.xen.org/git-http/xtf.git}"
-    export XTF_SRC_VARIANTS="hvm64 pv64"
+    export EXTRA_XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=com1}"
 }
 
-# Perform arch-specific XTF environment setup.
-function xtf_arch_setup()
+# Perform target-specific XTF environment setup.
+function xtf_setup_host()
 {
     local esp_dir="${WORKDIR}/boot-esp"
     local efi_dir="${esp_dir}/EFI/BOOT"
diff --git a/automation/scripts/qemu-xtf.sh b/automation/scripts/qemu-xtf.sh
deleted file mode 100755
index 55c221b36dc5..000000000000
--- a/automation/scripts/qemu-xtf.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-#
-# XTF test runner (QEMU).
-#
-
-set -e -o pipefail
-
-if [ $# -lt 3 ]; then
-    echo "Usage: $(basename $0) ARCH XTF-VARIANT XTF-NAME"
-    exit 0
-fi
-
-export ARCH="$1"
-shift
-
-set -x
-
-export XEN_ROOT="${PWD}"
-cd $(dirname $0)
-
-source include/xtf-runner
-
-if [ ! -f "include/xtf-${ARCH}" ]; then
-    die "unsupported architecture '${ARCH}'"
-fi
-source include/xtf-${ARCH}
-
-xtf_test $@
diff --git a/automation/scripts/xtf b/automation/scripts/xtf
new file mode 100755
index 000000000000..9f75ad5f99d0
--- /dev/null
+++ b/automation/scripts/xtf
@@ -0,0 +1,395 @@
+#!/bin/bash
+#
+# XTF test utilities.
+#
+# Environment variables:
+#   ARCH: Target CPU architecture
+#   BOOT_MSG: Expected boot message
+#   FW_PREFIX: Firmware images path including '/' at the end
+#   QEMU_PREFIX: QEMU path including '/' at the end
+#   TEST_LOG: Output log file
+#   UBOOT_CMD: U-Boot command line
+#   WORKDIR: Test working directory
+#   XEN_BINARY: Xen binary location
+#   XEN_CONSOLE: Xen console device name
+#   XTF_SRC_CONFIG: XTF config file
+#   XTF_SRC_BRANCH: XTF branch
+#   XTF_SRC_URI: XTF source code URI
+#   XTF_TARGET: Target name
+
+function die()
+{
+    set +x
+    echo "FATAL: $*" >&2
+    exit 255
+}
+
+set -e -o pipefail
+set -x
+
+if [[ -z "${ARCH}" ]]; then
+    die "'\$ARCH' is not defined"
+fi
+
+if [[ -z "${XTF_TARGET}" ]]; then
+    die "'\$XTF_TARGET' is not defined"
+fi
+
+TOP="$(readlink -f $(dirname $0))"
+xtf_include="${TOP}/include/xtf/${XTF_TARGET}"
+
+if [[ ! -e "${xtf_include}" ]]; then
+    die "cannot find '${xtf_include}'"
+fi
+
+# Scratch directory
+XEN_ROOT="${PWD}"
+# Output log file
+TEST_LOG="${TEST_LOG:-${XEN_ROOT}/smoke.serial}"
+# Expected boot message
+BOOT_MSG="${BOOT_MSG:-Latest ChangeSet: }"
+# Test working directory
+WORKDIR="${WORKDIR:-${XEN_ROOT}/binaries}"
+# XTF source code
+XTF_SRC_CONFIG="${XTF_SRC_CONFIG:-include/configs/xtf-${ARCH}-config}"
+
+cd ${TOP}
+
+source include/xtf/${XTF_TARGET}
+
+function xtf_string_from_elf()
+{
+    str="$1"
+    xtf_binary="$2"
+    local addr=0
+    local size=0
+    local idx=0
+    local sec_off=""
+    local offset=0
+
+    if ! command -v readelf &>/dev/null; then
+        die "readelf not found (install binutils)"
+    fi
+
+    # Get symbol address, size, and section index.
+    read -r addr size idx < <(
+        readelf -Ws "${xtf_binary}" |
+        awk '$8 == "'${str}'" && $7 ~ /^[0-9]+$/ {
+            print $2, $3, $7
+            exit
+        }'
+    )
+
+    if [[ -z "${idx}" || ${size} == 0 ]]; then
+        die "no ${str} in '${xtf_binary}'"
+    fi
+
+    # Get section virtual address and file offset.
+    read -r sec_addr sec_off < <(
+        readelf -WS "${xtf_binary}" |
+        awk -v idx="${idx}" \
+            '$0 ~ "^[[:space:]]*\\[[[:space:]]*" idx "\\]" {
+                sub(/^[[:space:]]*\[[[:space:]]*[0-9]+\][[:space:]]*/, "")
+                print $3, $4
+                exit
+            }'
+    )
+
+    if [[ -z "${sec_off}" ]]; then
+        die "failed to extact ${str} from '${xtf_binary}'"
+    fi
+
+    # xtf_binary symbol address -> file offset.
+    offset=$((16#${sec_off} + 16#${addr} - 16#${sec_addr}))
+
+    # Extract the NUL-terminated string.
+    dd if="${xtf_binary}" bs=1 skip="${offset}" count="${size}" status=none |
+        tr -d '\000'
+}
+
+function xtf_get_bootargs()
+{
+    local xtf_info=$1
+    local line
+    local re='"xen,xen-bootargs"[[:space:]]*:[[:space:]]*"([^"]*)"'
+
+    while IFS= read -r line || [[ -n "$line" ]]; do
+        if [[ "$line" =~ $re ]]; then
+            printf '%s\n' "${BASH_REMATCH[1]}"
+            return 0
+        fi
+    done < "$xtf_info"
+}
+
+# Build Xen command line for running an XTF test.
+# $1 Test variant.
+# $2 Test manifest.
+function xtf_setup_cmdline()
+{
+    local xtf_variant=$1
+    local xtf_info=$2
+    local -a cmdline=("${EXTRA_XEN_CMDLINE}")
+
+    if [[ "$xtf_variant" == hvm* ]]; then
+        cmdline+=("iommu=0 dom0-iommu=none dom0=pvh")
+    fi
+
+    if [[ -f "$xtf_info" ]]; then
+        cat "${xtf_info}"
+        cmdline+=($(xtf_get_bootargs "${xtf_info}"))
+    fi
+
+    export XEN_CMDLINE="${cmdline[*]}"
+}
+
+# Execute an XTF test.
+function xtf_run()
+{
+    rm -f ${TEST_LOG}
+    export BOOT_MSG TEST_CMD TEST_LOG UBOOT_CMD
+
+    printf "XTF binary: %s\n" "${XTF_BINARY}"
+    printf "XTF log: %s\n" "${XTF_LOG}"
+    printf "Xen binary: %s\n" "${XEN_BINARY}"
+    printf "Xen Command Line: %s\n" "${XEN_CMDLINE}"
+
+    TEST_XTF=y ./console.exp |& sed 's/\r\+$//'
+}
+
+function print_title()
+{
+    local str="$1"
+    local width=$(( 80 - ${#str} - 2 ))
+    local left=$(( width / 2 ))
+    local right=$(( width - left ))
+
+    printf -v lhs '%*s' "$left" ''
+    printf -v rhs '%*s' "$right" ''
+    printf '\n%s %s %s\n' "${lhs// /=}" "$str" "${rhs// /=}"
+}
+
+function main()
+{
+    declare -A nr_tests_by_status=(
+        [PASS]=0
+        [TIMEOUT]=0
+        [EOF]=0
+        [SKIP]=0
+        [ERROR]=0
+        [FAIL]=0
+        [CRASH]=0
+        [UNKNOWN]=0
+    )
+    local -A xtf_completed=()
+    local -A xtf_binaries_selected=()
+    local -A xtf_binary_by_path=()
+    local -a xtf_binaries=()
+    local -a xtf_binaries_filtered=()
+    local nr_tests=0
+    local xtf_binary xtf_file xtf_variant xtf_name xtf_title
+
+    xtf_init
+
+    #
+    # Pass 1: Discover all XTF ELF binaries.
+    #
+
+    while IFS= read -r -d '' xtf_binary; do
+        if ! readelf -h "$xtf_binary" &>/dev/null; then
+            continue
+        fi
+
+        # Some XTF build quirks
+        case "$ARCH" in
+        arm64)
+            if [[ "$xtf_binary" != *-syms ]]; then
+                continue
+            fi
+
+            xtf_binary="${xtf_binary%-syms}"
+
+            if [[ ! -s "$xtf_binary" ]]; then
+                die "Missing ARM64 boot image '$xtf_binary'"
+            fi
+            ;;
+        *)
+            ;;
+        esac
+
+        xtf_binaries+=(${xtf_binary})
+    done < <(find "$WORKDIR" -mindepth 2 -type f -name 'test-*' -print0)
+
+    if (( ${#xtf_binaries[@]} == 0 )); then
+        die "No XTF ELF binaries found in '$WORKDIR'"
+    fi
+
+    #
+    # Load test suite manifest, if any.
+    #
+
+    if [[ -n ${XTF_MANIFEST:-} ]]; then
+        local -a lines=()
+
+        if [[ ! -r "$XTF_MANIFEST" ]]; then
+            die "Cannot read '$XTF_MANIFEST'"
+        fi
+
+        mapfile -t lines < "$XTF_MANIFEST"
+        for x in "${lines[@]}"; do
+            xtf_binaries_selected["${x}"]=1
+        done
+
+        if (( ${#xtf_binaries_selected[@]} == 0 )); then
+            die "No tests found in '$XTF_MANIFEST'"
+        fi
+    fi
+
+    #
+    # Pass 2: Filter discovered XTF binaries.
+    #
+
+    for xtf_binary in "${xtf_binaries[@]}"; do
+        xtf_file=$(basename "${xtf_binary}")
+
+        # Filter 1: YAML
+        if [[ -n ${XTF_MANIFEST:-} && -z ${xtf_binaries_selected[$xtf_file]:-} ]]; then
+            continue
+        fi
+
+        # Filter 2: regex
+        if [[ -n ${SELECTED_XTF_ONLY:-} && ! $xtf_file =~ $SELECTED_XTF_ONLY ]]; then
+            continue
+        fi
+
+        xtf_binaries_filtered+=("$xtf_binary")
+    done
+
+    for xtf_binary in "${xtf_binaries_filtered[@]}"; do
+        local xtf_dir=$(dirname "$xtf_binary")
+        xtf_binary_by_path["$xtf_binary"]="${xtf_dir}/info.json"
+    done
+    nr_tests=${#xtf_binary_by_path[@]}
+
+    if (( ${nr_tests} == 0 )); then
+        die "No XTF tests matched the selection"
+    fi
+
+    #
+    # Pass 3: Execute selected tests.
+    #
+
+    print_title "Selected tests (${nr_tests})"
+
+    local nr=1
+    for xtf_binary in "${!xtf_binary_by_path[@]}"; do
+        local ret status_str
+        local xtf_pid progress_pid
+        local t_start t_end
+        local xtf_info="${xtf_binary_by_path[${xtf_binary}]}"
+
+        xtf_file="${xtf_binary##*/}"
+
+        xtf_variant="${xtf_file#test-}"
+        xtf_name="${xtf_variant#*-}"
+        xtf_variant="${xtf_variant%%-*}"
+
+        # Some XTF build quirks
+        case "$ARCH" in
+        arm64)
+            xtf_title=$(xtf_string_from_elf "test_title" "${xtf_binary}-syms")
+            ;;
+        *)
+            xtf_title=$(xtf_string_from_elf "test_title" "${xtf_binary}")
+            ;;
+        esac
+
+        export XTF_BINARY="${xtf_binary}"
+        export XTF_LOG="${TOP}/${xtf_file}.log"
+
+        printf "%3d/%3d %s (%s): " "$nr" "$nr_tests" "${xtf_title}" "${xtf_file}"
+
+        # Spawn in a subshell so that bash traps could be used
+        # (e.g. for power cycling the target)
+        t_start=$SECONDS
+        (
+            set -x
+
+            xtf_setup_cmdline "${xtf_variant}" "${xtf_info}"
+
+            # In: FW_*, QEMU_*, XTF_*, XEN_*
+            # Out: BOOT_MSG, TEST_{CMD,LOG}, UBOOT_CMD
+            xtf_setup_host
+
+            # In: BOOT_MSG, TEST_{CMD,LOG}, UBOOT_CMD
+            xtf_run
+        ) &> "${XTF_LOG}" &
+        xtf_pid=$!
+
+        # Print a dot every second while the test is running.
+        (
+            while kill -0 "${xtf_pid}" 2>/dev/null; do
+                sleep 1
+
+                if ! kill -0 "$xtf_pid" 2>/dev/null; then
+                    break
+                fi
+
+                printf '.'
+            done
+        ) &
+        progress_pid=$!
+
+        if wait "${xtf_pid}"; then
+            ret=0
+        else
+            ret=$?
+        fi
+        t_end=$SECONDS
+
+        # Stop the progress indicator.
+        kill "$progress_pid" 2>/dev/null || true
+        wait "$progress_pid" 2>/dev/null || true
+
+        # See console.exp and xtf-runner
+        case "$ret" in
+            0) status_str="PASS" ;;
+            1) status_str="TIMEOUT" ;;
+            2) status_str="EOF" ;;
+            3) status_str="SKIP" ;;
+            4) status_str="ERROR" ;;
+            5) status_str="FAIL" ;;
+            6) status_str="CRASH" ;;
+            *) status_str="UNKNOWN" ;;
+        esac
+
+        (( nr_tests_by_status[${status_str}] += 1 ))
+
+        xtf_completed["${xtf_title}"]="${XTF_LOG}"
+
+        printf '%s (%ss)\n' "${status_str}" $(( t_end - t_start ))
+        (( nr += 1 ))
+    done
+
+    for xtf_title in "${!xtf_completed[@]}"; do
+        print_title "${xtf_title}"
+        cat -v "${xtf_completed[$xtf_title]}" || true
+    done
+
+    print_title "Report"
+    printf "  Total : %d\n" ${nr_tests}
+    for x in "${!nr_tests_by_status[@]}"; do
+        printf "  %s: %d\n" "$x " "${nr_tests_by_status[$x]}"
+    done
+
+    nr_success=$(( nr_tests_by_status[PASS] + nr_tests_by_status[SKIP] ))
+    if (( nr_tests == 0 )); then
+        exit 255
+    elif (( nr_success == nr_tests )); then
+        exit 0
+    else
+        exit 1
+    fi
+}
+
+set +x
+main $@
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473392.1681079 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ6-0002j0-7k; Thu, 05 Nov 2026 01:37:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473392.1681079; Thu, 05 Nov 2026 01:37:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ6-0002hg-2M; Thu, 05 Nov 2026 01:37:38 +0000
Received: by outflank-mailman (input) for mailman id 1473392;
 Thu, 05 Nov 2026 01:37:37 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQ4-0002Kd-NM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQ4-001xJk-3h
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:36 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddf-8faa-0a2a0a5109dd-0a2a450b9320-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:35 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddd-b7e8-0a2a450b0019-94a3921721b8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:34 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mcq01469823
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:33 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010002.outbound.protection.outlook.com [52.101.61.2])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk5120t-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:32 +0000 (GMT)
Received: from CH5P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::6)
 by LV8PR16MB6149.namprd16.prod.outlook.com (2603:10b6:408:1ec::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 01:37:22 +0000
Received: from CH2PEPF00000145.namprd02.prod.outlook.com
 (2603:10b6:610:1f2:cafe::8) by CH5P221CA0001.outlook.office365.com
 (2603:10b6:610:1f2::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:22 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CH2PEPF00000145.mail.protection.outlook.com (10.167.244.102) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:22 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mVLf059417
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:21 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh7n-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:21 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPnxuj8Lz55iOmPoxXLbn; Thu, 05 Nov 2026 01:37:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=Ats
	0e9qcsuS0OWl1Vk48D5A1NngnKfkQlNlY/HvDBqI=; b=EhYkgCmbBNVBmrkdtlB
	3d/iC1nSNWb5Vm1rPyp1hwYX+M/dVX5GNmwr0kmCufu+8LksW+1W80GTTh+K6AYm
	CzYKeTtRnwRZSbsL/H1QOXmGFla+o3TDJXyjdPGHilwTeNXTcQzktCH+o0HIoiNK
	/iIFPKj+zmLmVcAF4OiOGnE8nKQ9N9J9kvFgWLva3GdDHnLtVuPj13wx6ZswcYrA
	h+N8kAdVu5TBCciyTJCbCOa/09EAcTqcn7E6Ye2cxffpEe5qyORuRE8cnMaDzYSq
	hxxn15WgR0S7L0R0j7kmvQzvbz9fGJFzNv5NP9cF14/LYBs/S5tmq9FKZ8efJFiS
	qpw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=krHV0HQPpkEGFEMFrTckdb/T4zO4+2S/IzbWmo3dMyeFeYoS9WKnfRKR+lG9TzvSknz9NstVqetjHbI5lnfGUQpA/E2jpFin+SQG4x9VPctXe4I6GZ6qNxO6+rSTAWzx688iCbUij8WuNSqm0c9gEbZi9WdZlCsUGgvyJhuZZj5H4qNtSP4hhqs+8CYluMcMkA9OgmlX3olo+pqkYOYrdseHgvo1uxOUTsiU1ZEGo1pAwHnFGeSJrbqNOB8/ilBPzwAAk9Jypc9AjXmY8XlbK5S6hxerVexIx9M5VpTKCGjiVxWwQtnAXE1l6TNxnExC3WmFEg9endNrCQ7YTJB0Bg==
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=Ats0e9qcsuS0OWl1Vk48D5A1NngnKfkQlNlY/HvDBqI=;
 b=QLN2lL5T7x7lHIpZbng2mE2iFarKV6sJDXxcm04ustjHzxRLNGOERHPu9loc2s27V5exDgr4bPCfh3H97jucpQDsfCJi+Cl6HwU5O8BYRT8c736XpmW+dqmrVV46gI0ljHxRyGErxBpgu8cpAEB1tWqNZBaB5pgJawR67RuQPjugkHSFmf2tv3yA/LyaJE05fNEXKDo9P4298Z/Ub9PsWlT2I1WNi4r6ntGHEeG9YbQHHf1C9rdlR4Xo9jfa/a5JVZ1wFzCtp+sqIHGoCO2naSNkLzzEVS9mNDseFK4LYwAvzyCelbipNsoEp8nHyQ5NVL6PvXbps6qmF1X9wDPpZA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ats0e9qcsuS0OWl1Vk48D5A1NngnKfkQlNlY/HvDBqI=;
 b=dNo0IcD0/YfgcSivVPwz82t8T2uSuKZCHZBp15EQeekgOB0qiIgB0sv4b0nfyVmRniLmUckgUEWXQ8aeWgqJtd2/y5tj5IaqD0al3BzR5ikwDlit0sQmDOOX3IgGZxoymw4STR5BDVVOOzQM2UpOFBTWggFhFXxAnNefHmr+i9c=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=Ats0e9qcsuS0OWl1Vk48D5A1NngnKfkQlNlY/HvDBqI=; b=
	QndsomkNkoUCnt1OZKHJo/6Glz1GTbQSKkm+1MX4INnuxJcIwUx+RjuOPODl9Di9
	zc7J2Vs1f069uAykQplB0LAC1BrAEz0grES+VfyHbKWgLnpL/L8Lf6WI/ZGDZtOU
	HfSmdeucWUfFIVKaa03GZJwyBXnsPbnTbd1TCj6sPhWtObICCiXUK3QjPRXqaOeB
	6MSIj3gJMgJueKhPsiJ7ADvtHIPOxtTrxJE+x4OQ73LHgUs8yOEvnqnJ2qtw/hDe
	a5B5jI4WXqC2AP2qAeKUbaw275gpzku6c87ce9QC0GKyA19FTvFsrsoHfnWNwcC5
	FqN8HjcgYPvgfiULw49EnA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=Ats0e9q
	csuS0OWl1Vk48D5A1NngnKfkQlNlY/HvDBqI=; b=TvyQYA3Wd/HJ4foUa/Mg5gg
	jgtpkIkDUrd5pHpx5wDGRcFp7Y93DZVnmqWKsw/A2FnvzlwGkhNgr9uClRlEMfow
	OU47EtP1bSSvg85NguOKVzVGv6GLuew+CvNfqOOGGGJTg4ehz/iw0lFwXNf1aOkR
	6b6qgZ5Z8JjKJx8yPyolO9OEu74q9LWoF5kacpO0zwr0Ajx5ZvJlppabKijlnyDs
	EwLnaUp9gBZ9rwAJssE9cHf39Hl2EPKZ7WEShn1OPmhKmbrcmtF5X0G2a0HcSNBr
	U9zFcuoRUSzwzZn2ealQ6AugqnzgyK7S4R+B0V4cqu80pxazli2I01vOtKVhShA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPnxuj8Lz55iOmPoxXLbn
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 06/13] CI: enable binutils for alpine and debian containers
Date: Wed,  4 Nov 2026 17:36:54 -0800
Message-ID: <20261105013701.719658-7-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF00000145:EE_|LV8PR16MB6149:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 8e60c9be-3017-48d8-97ec-08df3add5666
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|260925022911599003|260925021911599003|260925021311599003|11063799006|56012099006|261021123027099003|261021121427099003|261009223027099003|261022115727099003|261022075727099003|261026121527099003|261102123227099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	1LWnYal7Fnaagh5wciq5KERF3+lAu6buq6RPNKgwGOgakvrNHjnoutS17frwOLLu91v+Arpc8NdJaXejafx8lNT7e3Qz14r1ighGFbmYGRFXGecBFVEDMpwIgwqjxSG9GE1L1XoPLkMDk/DR86bIsdWKucptyGQWQ95SJy0FKjPsZuGywHaNNg0Q51dGRiH1WHXF/T9DzPMSzkmQ6xI8mVwsLGGWc5G3pFwX65jmBSqSZ5IF2ChF4jSjVAINDR/SxupKc2E77o9ekWUnBOOMkDfGxW5TzR27CORzt21LFjOUoWHVEHPVVX2+TCQ6KnIRL/RfdN973mtZ8+FjwkRQbgv7DwAq7PCyYZgvy+zeTWMKPi9LCruR9Cz14E3u8xaAB4SiDYGB1r4mLsrSsIlIUWsHCFxCyam13MEeUq1htY6GpFQX/jVpg3PJ00y4KKpqR62wjYdhax3p2PMdv1q2POCLPwc3s1EUDgp/uh14o1jvXRnZZMjEm0Iv0qWnoGP4iV+r+u7Ym7v+/yGxmBw7A7CSHCczH+4n7wjCMmVpWtd4eWnWkJfJKkIZpdTIzgD4+LeWq+nmK90la9aQFS7MK8vCpizVQCisyyuSBJJ25q8bFaeJ2FnDyWm478DF/YuRucZvjVJkB0/NfXnfPn9ocuRQXU/7AF+wWWNmQkw4WuL3ZwctbLslUQFk1hfoJygBef94QK4kcdl0TPBNOjRhyg==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(260925022911599003)(260925021911599003)(260925021311599003)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261009223027099003)(261022115727099003)(261022075727099003)(261026121527099003)(261102123227099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	kgqKQBdIWcx1xKOmntrsgX0Dt+RiweGUfvXrDUG/mssIu8QdjcUTWSXL9GpbIy2w/IBSQzvXNybACtIvxeu8yQb8RUYs3hY2svSysurEJjN1eT7y6CareuJzRwlHcgYSEQkn5UiAL0FvzGssCb9STRCyZ30/Cz3CjzZtO6/QiywMjCccLPXVQL03NSGGhg0o8Wos7NEO4GVCThgb8hMZ68TAJG6nFu1nAOqNJZPH6RUxHnsaTAxMA2/29yhjCyYc0SEwlvMeQt3XhAtT1C66Kl7NBWvtWnhVfCDBYa6DmtGbCVCthEJ91FSS2P5g8pggh+vqjSzjwq40l8HPP8icgR4KZDXn1XthrsGrJZGY2Dq+oZIJereno8fBklbvr7y+hkGb53Nd4w9ZxxJovmVNml5FBugAhRli1N6ZtrP7J8naVOJvNaDNcVLbtCTc4wIb
X-Exchange-RoutingPolicyChecked:
	n9QZA47WRfKwuV7jeTqUK4q9LdPGHVPasVRI2AX9uGk9g3EBxc8ARYVyyK/Sy6+QfDgyJCsfxPBgzPyt3xt26iAMh/emnxN3rFuy2XjNMMqrBKLp8Tg9BPS/bLcsN962I5o2F0z2b1rPqPEPlJgwhHMV4iNvKtm5uWu5wrExc4P3UY8jgVXb2VCYd9OwlmV3Hx7cWJrxkHrP1tolKa5s0pMFoVjl3Ovz2dgYzlWhOVzzqHsnPkPwj1uED4NghOGhqWcU+Bi2mmdzks7En1OL8wA2QYtaJkn0Nl6X8AD4OaSsmNxpcKwwJP3JPD5qPZ5256QcrWMVyGJjxkHznRbnYw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	+EzKiBolm2yD+nHyFtDkuilaeiOJZ8wz89jVRi1b8SDgYnzUTBgruBoBp4Qs0YZ0GyQIW4ju+z3vYXeDOpJFFyo9WVg0CmUiWrdkfCMA6XUP4NW7+Cls3GHEXA7wGSD0ur9WO8P/3bf4XaQ+9QAbtWcgroHvJHg9ANHylJQe676V51r3leOI3VWdsVTTpkU73iiCqH5dKpa877duztdQ7ZNmfCQhjjN7ev8EpA+QbDGCzPYArSuSwWwzFmC6R9RWWVhyXToO+9j6kiKvpq3j6iAi+D46pDlYqC6ewWPRTXPm1fblPJIy02e0W9e3Rf0XU7lOnQQcq/WNe67ObgWd+OwymhWizDt/o+qOzTa/IyI4eT6E63yT68qhZuNYR2ysZcGWH5INmW9gzPUGCMQfkFUBOtb3ZIjMsVu7zuNwzLtonvJ5u9pPpau3TMKYkpR1BjB9n79+514DnzKtK1SFsx/KD34CwWRz6yHWmlmvfbC2XrXbIUqMmPmdoZJHUrUa2xIC34kWpxE6d6uvCGaJBnMltoEElXUbsf3j/uXbb6v8BZOcWQerTlUD3SUsAjRkEkj0FeFOnNWpq/cu38nK2JA+kHuxGK2Oj84CZSu2w8C42QyFsZCKP6JZcDxxec8bJb2JL/4XweUeo8+Vs0LQvQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:22.0196
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e60c9be-3017-48d8-97ec-08df3add5666
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH2PEPF00000145.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR16MB6149
X-Proofpoint-GUID: ktpeZN8BmRAW-SdQtCm1VcJnHpOiUeMQ
X-Proofpoint-ORIG-GUID: ktpeZN8BmRAW-SdQtCm1VcJnHpOiUeMQ
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXxoE3BCqVVEHs
 lapkZ9Aw06V1VVqgGJ1KliPrAnKavUjEFrXAlK35pwWuiQ/znkIKSk2eqCQRqiGwEAO1CyCTcyG
 tt/MzdQdcnYsfcnzNuM5Zps3ww3dnkZxsYnKBcr0yOtZD0W2hhtF
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX9LOq4xR8IwyU
 SXB8vPgoOII/8EfQCQI/oW77gtnhUxLmuzneEqFDy6Uv6rY70Y1e0tdTx20uy1kG7n240isQaSw
 L/lKm0KAnrkuWJ0GfwNWKm4/DopOI6KOWyvSbX5n3wPk/Phj+J/1TXZTLgTDd6PQlInZUP9vFzJ
 EEH5FExR6cmTfcP5NbHES5gehXfFV7VbIAgfm7woF4NNNWn2LxR1y5+L/7YVwe3TNcHsdtwlV2H
 WnuLBZKp6Gn4h62WElqEmzRsaLy0b7wTT+68XXnpuL/6YiPubcJ3JM5Dxvou0VKDxE1y053t0ij
 3B7koTwDS4ZQmLara41xZvYgQ+ApetTuZ9u2jIDIO2uKbHpMQwh5s6lgpReTV5l/Na2J2+AIe+D
 yqg1tbQ4jnB7p4IpsQTcidzPOUhvmDRmr0Y39dfUFDeys6/aWQ6B71xJQw6ugdg/xQM9aSVWzXr
 tDI1TZVmOICiBp8eS0w==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebdddc cx=c_pps
 a=h3cS895ItAADrFIx/0pANw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=y7AnYa6Roqe19iSE5WAA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842655-19EC69EA-DBA3E51B/0/0
X-purgate-type: clean
X-purgate-size: 2301

From: Denis Mukhin <dmukhin@ford.com>

Enable binutils for the docker images used for test runners
(e.g. 'readelf' may be useful for inspecting build artifacts).

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/build/alpine/3.24-arm64v8.dockerfile | 3 +++
 automation/build/alpine/3.24-x86_64.dockerfile  | 3 +++
 automation/build/debian/12-arm64v8.dockerfile   | 3 +++
 automation/build/debian/13-x86_64.dockerfile    | 3 +++
 4 files changed, 12 insertions(+)

diff --git a/automation/build/alpine/3.24-arm64v8.dockerfile b/automation/build/alpine/3.24-arm64v8.dockerfile
index 5b28d874efae..7952005141fc 100644
--- a/automation/build/alpine/3.24-arm64v8.dockerfile
+++ b/automation/build/alpine/3.24-arm64v8.dockerfile
@@ -44,6 +44,9 @@ RUN <<EOF
         # Ocaml bindings/oxenstored
         ocaml
         ocaml-findlib
+
+        # XTF
+        binutils
     )
 
     apk add --no-cache "${DEPS[@]}"
diff --git a/automation/build/alpine/3.24-x86_64.dockerfile b/automation/build/alpine/3.24-x86_64.dockerfile
index f93158e0186d..e7bb73b05044 100644
--- a/automation/build/alpine/3.24-x86_64.dockerfile
+++ b/automation/build/alpine/3.24-x86_64.dockerfile
@@ -56,6 +56,9 @@ RUN <<EOF
 
         # livepatch-tools deps
         elfutils-dev
+
+        # XTF
+        binutils
     )
 
     apk add --no-cache "${DEPS[@]}"
diff --git a/automation/build/debian/12-arm64v8.dockerfile b/automation/build/debian/12-arm64v8.dockerfile
index 5cc4de822cc6..6003a8eef0c6 100644
--- a/automation/build/debian/12-arm64v8.dockerfile
+++ b/automation/build/debian/12-arm64v8.dockerfile
@@ -58,6 +58,9 @@ RUN <<EOF
         ovmf
         u-boot-qemu
         u-boot-tools
+
+        # XTF
+        binutils
     )
 
     apt-get -y --no-install-recommends install "${DEPS[@]}"
diff --git a/automation/build/debian/13-x86_64.dockerfile b/automation/build/debian/13-x86_64.dockerfile
index 784299d52dc3..f11085685a37 100644
--- a/automation/build/debian/13-x86_64.dockerfile
+++ b/automation/build/debian/13-x86_64.dockerfile
@@ -62,6 +62,9 @@ RUN <<EOF
 
         # for build-each-commit-gcc
         ccache
+
+        # XTF
+        binutils
     )
 
     apt-get -y --no-install-recommends install "${DEPS[@]}"
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473394.1681084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ6-0002ll-KS; Thu, 05 Nov 2026 01:37:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473394.1681084; Thu, 05 Nov 2026 01:37:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ6-0002ko-BK; Thu, 05 Nov 2026 01:37:38 +0000
Received: by outflank-mailman (input) for mailman id 1473394;
 Thu, 05 Nov 2026 01:37:37 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQ4-0002MU-Sz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQ4-001xJk-9G
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:36 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd93-8faa-0a2a0a5109dd-0a2a450a8d3c-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:36 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddc-f2d2-0a2a450a0019-94a38ff17c7e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:33 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mj4M226500
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:32 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013070.outbound.protection.outlook.com
 [40.93.201.70])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurccv-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:32 +0000 (GMT)
Received: from BN9PR03CA0297.namprd03.prod.outlook.com (2603:10b6:408:f5::32)
 by SJ0PR16MB4045.namprd16.prod.outlook.com (2603:10b6:a03:31a::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 01:37:29 +0000
Received: from BN2PEPF0000A7FE.namprd02.prod.outlook.com
 (2603:10b6:408:f5:cafe::33) by BN9PR03CA0297.outlook.office365.com
 (2603:10b6:408:f5::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:29 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 BN2PEPF0000A7FE.mail.protection.outlook.com (10.167.245.165) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:28 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nXJq060892
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:28 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [44.208.76.22])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh7q-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:28 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPuxmeB5UazzOmPvx0zBS; Thu, 05 Nov 2026 01:37:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=SCX
	gU3x8B/FZNE7qSXywTJSGB2nRpb27JgPjklZSPWg=; b=f7gy3wqM5auisiK8LdG
	1MS7wTkdMeoc/OrlrOGYfpeD81nF238lfmL49dIvG+qgjQWfcKryzOjaEaGCpJvn
	mtd9KX3dsMjnR3mISRlBy5QO+WANSFiAX9S3Do4jJitrgrb2/3dJM99qWfKzTsxG
	KtQkXNrH/FqdaQBfCtZLnmiORplm61xpBWlNi2Jpt6TA9aL+ynlwy67xq1J67+nd
	pHhhNsxdl4uh7kcFYDVDuBzcRs81uZvAdTXMRYhJq4nJEU/pe0Wxhf//+NB2wKnI
	xNPXZ/TEI+3kMj6mGDY+bHcq5cChhKAqVn97P04DJ2FnVz0uGyP8R54fHsj9Xsn3
	ZGQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Med27qo5LemjrLj3PNqzIyfQBfZFslavwyTNGEt3K7KGiU1ATx7UbIbBjCDBkbhxVPCY8s75KkkzvMSVt0n/aRZId7c4LwOmurOa201Dn53ku4BjrXpZlBm4A2aRmPsMqH8MOnjGpgdzs/MwPI4F1OG8iwEABJRV2UqRJ3XIGvfq9DJqUZM6+boRL/qxP6VVa0CWWQt95oDRSOgqPn52OteCzQewOeZbh6LLR9T6QQXsvEeiuAupPZveOxqhcgHOfNmbZ0MItnfSWvAuzKAPwxLouL8IXO7WtqFuNgxtWq0ysFxOFTPp8V0JHX+YuvKCjcKq1rZIM5kUD3bQkMkEeA==
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=SCXgU3x8B/FZNE7qSXywTJSGB2nRpb27JgPjklZSPWg=;
 b=FTPbndhcpYOak0Qotjfqwwt3104rbMoX5evgangQenPQ4Dvz7MWuPD6fteBsU+mSqza2zAQ4fRjEmw7CvzRs7DjWoALxMTMaTSvdc9wIhOB4rikdtiuuo7ABTcFjm6AZ1mkHMrQgtlroVvfNlk+euOnEhATrHFKLgtxCSmng45TrvYYNPVeCMGWEPh3mEPyRDG4Z+Br5vPnZABzeGWE/TyTvfutyPiIqCsqEaOHIHe6rl7zoirivF/cBEIbEWAwE4kZeeuN1Oxx9Olq8cPBR+lJOUONUsuAWbdE/jiSCuO/ehvP4fxaUKymHafeMDxTS5W7nDviPWjtSk6IjxPubvQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SCXgU3x8B/FZNE7qSXywTJSGB2nRpb27JgPjklZSPWg=;
 b=NEI+tAQ246Jk5JGJ6+ay6UjFM+9zLzfOEfvfpqComkTpNOxq221R3TWvn6aud0HHoySZ+OIRqesyjCgxwbJvRulGAvuP0MFRL7p+IcErfE5zJIWoQ0+uzG3oyiM8HVedLEGpZCt/ympre4VFZE36JFpZeWX+fd8Fnarys5S3eS0=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=SCXgU3x8B/FZNE7qSXywTJSGB2nRpb27JgPjklZSPWg=; b=
	MpNY+cm3ZZ9pcbRM99mIOjp/dydDjs/2C0qXqSxgaO5s5uLiehnhOYbgU4wDKyUq
	hg8nrJ81o4prmzHkmm7TDhKM0wlX9D0vll0p93XkRoNBgHKjQ2X5RGhiLNBHBkzC
	ev7DnDSG8UCxvZ1m0k1Ck3MXL250K6JhY2wsdFLn/kCKC+sVHief55K9HSWpJz5j
	qxt8yC5unDpV2GgKUwxeDgW8SVW3jXF0HcXH2BLAxcSG03+fGy8Tq/Apt74Vqj5E
	+H6z+H8FWYnFmEUEvJBIozzT2rAbM0aQB9BOiAGxszfq3961rYCiQ1I/edamJ3um
	8SmYkIYfzhzFUDm68wWVkQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=SCXgU3x
	8B/FZNE7qSXywTJSGB2nRpb27JgPjklZSPWg=; b=Lw6jYSIG8t8wPjhaWJOAO38
	ZWAbofia4i1w0AW/UWyZNm/sUCuLgzR83G7cf1L6odl3mboNBdpoLmubHz79XEcw
	Q5lx8kbfMvJsOe3K+78JLFEEvNZTYl76mASYS9fyDsrNXDXydczHpB+2zzy/zyGd
	67Flb6FW++T5zJqJ/9vvfSgVF/Nk+WhEnLjIWcYtJMD1J3sdETAdFPLTRmSuluLE
	CmqKL0vygP0QWLCmIwUvorBEsEFz7KGdbNoya7gAH5mQMKlRR3Q3XxO3xrKRcOun
	tGBuGov1LSxZF+KWsrPu2daiirJcz0zxjHMGb/QzQslFtrVKsQHGf7boFt0D3mA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPuxmeB5UazzOmPvx0zBS
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 09/13] CI: enable on-demand IPI latency test on AMD Zen2/Zen3 runners
Date: Wed,  4 Nov 2026 17:36:57 -0800
Message-ID: <20261105013701.719658-10-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF0000A7FE:EE_|SJ0PR16MB4045:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 5a021010-3b9c-42cf-5755-08df3add5a85
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|23010399003|82310400026|36860700016|11063799006|261102123227099003|56012099006|261021121427099003|261026121527099003|261009223027099003|10067099003|22082099003|18002099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	ZesyBvytBIzeJQe3J2C8ibdCOCOLRHwJy57TS2tHlwSER/7Gldu9vAXPSJrG/ZOv4Ag91YEFIBGi4S5Ie5gK7IXnjxHEvSfEbqgW7N/L2WPmdTmIyyN8bcKXd/5zOLrGuFuv2dv3xGXjN9rLJ1A7WozfAApZOa3jZftHESSqircQl/gUcxBQ1XHC9ur/SFPaeJsFLZLOy+zwpCiK4QqusbHcr2REzF0j7W7cehOIwSRziFZCoumsAeKwwizHk8Pg0KVhuIOOBUlk8I8DFLcazuInRB8JauWEUCIGZ6arzGM5k0xQptd7chbTLVqlSYdn8+TgfqC5zSDKGAvkzqvND8/dEsSSedhh8rtZIGYi6Lq1d3oSfGjqZP6qYEaHC1iDuOWEg0izXiquWsKe7Bl49NCFiw77HglBg5EM6C3eChhL//qHkVLoFJByy8D1W5ZdFLn7R309il/rsj3G6bTzEbJIH/pPth2eCzzAdeuKgE5s8zn+Fz/LyjrpNZwQsHFsOyT77+QWhU88oJ6jXBwhzEhj2qh5GiNhXDh46RtZA9ydlnweXLNmbdsgBZ0TRuYynWQONdfJeK72BiyPccJIN6QNO6LG8CFhHsYZZilM8xr7cDzdIlbTvuIvvY0FMd2Nkx0MKLP6zjxtd6quqxsAXEwbZfez5xUqSI/BCcMX9zGCkBbB2+ddDQmD/dGYY/RC5iVIWPIy8yV82OBG+Drhlw==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(82310400026)(36860700016)(11063799006)(261102123227099003)(56012099006)(261021121427099003)(261026121527099003)(261009223027099003)(10067099003)(22082099003)(18002099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	LukKsN9cwqYGWqvNIThlV4lcn3A/csB2tKPpdtKR1DNv0QM8hGFjJsl58FYjpfRwVqVoZczZxt9VumHkgGXzhZDGChNyVHyIu0r5ldrRjMEzq5jo+tJBXOuqpmO4Z1426VCEqiTavWo7uIEayqR2sxk8rA+Zd1doYprTWmMiHKtCAUrC8rEn1OKgEGWE2s7APQ1KC8LtpscwfuhGSKoC30uPbIXS6ZseqvHocLsG7Ij7+2tjygIfDb7HERgha/CySRUhc7rqXj8Hn4B7EGk2ElDYkpTW6a2ODiw1JuXjKhqWDSr/b2dpcSAWyd3kIXVWvOPjSK5mjyGVj04juc2z+G7nTs/Q/TEEre9Bh4DmXnZsZR2VsWiAZHucs58b5k0u/MJGCvHEGt2ySFKBWGCWk5dJqr7B32+mCzx6EgyQnOjSu5J/paa9TM8W7ZC4w143
X-Exchange-RoutingPolicyChecked:
	bXYYTDekdmdTTOqor88jcAu/KuiODryWoUQxI5HfqwyVXc7r5ByXj+JNkc5itD8bs0hUBJ9y596vUPuhklf/On7xdSm7Bj3vc4nEfAIc0oMFud42t3Q0EkQqiMmphKMDsapJv1HPBxfvx/eghBsDCiqWAtycTZoVOju2rjGSDevDjekHYXQfbBV0K7KR2tor835UnLzH+MXJIzm4oTnp2W5woiFaP2cAvXmkQqylA07c86sP+uOwvcAzrPh9Gcj7D9njg0XfqseFTA16WUX9bksqc6qJPFoQpGcrd2e9c1o/ZKGUuD7rJF7GYj4tc6/iZcW0K/3Q3fg7EWeMtsBslQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	sdVbMmZw0aWCWtMLcgOaWnc4zU5YFE+60BHrTG1yyUlQzh3F3W/p3L8VVoJJK2og9edx9sYVs16EfoCytSFlOQKTUp41t0vdzeyQHDVcMvUX70tWzGoG2Zehk0DT60njo63UP/+BjNLhN7olpSgu02zapLyIOLre/vjebgo1epJG8KUZplrFB4QZns1wxLdnOMrwIMIdMYZJdwXbTSA6pKYlPKeZj8N+2lhsu1vqzQ7wHeC1EAhPZK33uLbie8fuQY8t1JvYQfpLEcNmJdFcQONxu6G/KuIOkFs2h8MpcRVjtK1TJ7yWMn/aNQJ5HU19OO3SzJ+GWIk34qXxvj0ZT8rWEpS0+tSlLnYKpd/4TX8TfmuRfcOigXsTubGWdPCt4a3lD77YwcAsQBZGq7CjLoAW9DjzHbFbMitLHohvTG32s4qmkwlGeInd/GybBXCMXBt6MiNDo5BOIaLhpcb/vYDmdvV2OFkcrDz429UF8J5TkZMHCXNdNyhUIHGG0R7VubEfVyIkIuMYwhLjWFsX4zE6faSr9vvStgSIMyXPmQasRRXtn62wWcKkOaTjxQCopMS2MW9UfnJ0e7ekm/P3UZvJXAJigccRMZLDwFeDL5dV7rUkm5DnQinK7waqikbXr/SGDRBobHGb5qawfUHSpw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:28.9768
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a021010-3b9c-42cf-5755-08df3add5a85
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN2PEPF0000A7FE.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR16MB4045
X-Proofpoint-GUID: LdYcvV7dt2uZfVJy1tLfz1hjn3itwTX7
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX4XqErT6y8/gF
 CGXOYK8IYsKNSM5iI5ohCdmQB4cxwUUtFOkSmeogR1wJytVVXd8924m3Qhtea3VyzzmUR8auGwS
 gvyD//vFP/sfyN0IAxSE6BBND7Hp81dAEQ7oNFUhXaRcINOYq5VS
X-Proofpoint-ORIG-GUID: LdYcvV7dt2uZfVJy1tLfz1hjn3itwTX7
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX/lUtAhkwjExi
 MPfCA7inGCIKlUK2IksX7pFhAPe+w/Op4wQCqcePBEqCPKvJ14YLAaZQd04viDYxz7cJwSfn7GV
 KbnqLDowZtLglaiiodRi4kgJd3rTW9mgw3W8Ytr0eEbv8P+/56psjyuo7co6mgb3AVKAZMwhwCv
 jxRMH4nt2gU7ulDbWiTlv/EIOVQOsDvcOaghL4gcJ0u+BkeJHQ5wEjU/zH06+8rtemt5INrSTVa
 yBMR4YlvzMps9A5Pk7ZyOPbSB/GU5GjiLEIhQf2GrUlso+pwtsSxHWquCK4pAN68DT5D5QVu9Zf
 GYNuFBUSXZ0e5DOZ8WPHJfgd1U2mvkgZ9zS45z/9B3oM6WvZGsxgJHi+UuXYgAW0Zl+Kee2Bopy
 btzbuUBYAIiBHs/wb7wvYjwPIvOODItbuLb/SZj7Q+mzE3zFJn90UVeZBmsbFw/qfQND024qJVv
 wAwIVD7lM+8ObwQDygA==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdddc cx=c_pps
 a=IOfmNx34m1n4z7i1CuCPOA==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=iNDwEz7dJgEmMV4xwJQA:9 a=3whSkbs7g9Me0DR5EJEX:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842653-526DECFC-C17D61BA/0/0
X-purgate-type: clean
X-purgate-size: 1238

From: Denis Mukhin <dmukhin@ford.com>

Enable IPI latency test on hardware Zen2/Zen3 runners.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 4d7d5e3d9a11..98edf7eb9ff5 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -565,6 +565,14 @@ zen2-xtf-x86_64-gcc-debug:
     - .xtf-x86_64-gcc-debug
     - .test-jobs-hardware-xtf
 
+zen2-hvm64-interrupt-latency:
+  extends:
+    - zen2-xtf-x86_64-gcc-debug
+    - .test-jobs-perf
+  variables:
+    SELECTED_XTF_ONLY: test-hvm64-interrupt-latency
+    TEST_TIMEOUT_OVERRIDE: 600
+
 zen3p-smoke-x86_64-gcc-debug:
   extends: .zen3p-x86_64
   script:
@@ -633,6 +641,14 @@ zen3p-xtf-x86_64-gcc-debug:
     - .xtf-x86_64-gcc-debug
     - .test-jobs-hardware-xtf
 
+zen3p-hvm64-interrupt-latency:
+  extends:
+    - zen3p-xtf-x86_64-gcc-debug
+    - .test-jobs-perf
+  variables:
+    SELECTED_XTF_ONLY: test-hvm64-interrupt-latency
+    TEST_TIMEOUT_OVERRIDE: 600
+
 qemu-smoke-dom0-arm64-gcc:
   extends: .qemu-arm64
   script:
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473395.1681099 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQA-0003WK-7g; Thu, 05 Nov 2026 01:37:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473395.1681099; Thu, 05 Nov 2026 01:37:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQ9-0003Vf-VT; Thu, 05 Nov 2026 01:37:41 +0000
Received: by outflank-mailman (input) for mailman id 1473395;
 Thu, 05 Nov 2026 01:37:39 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQ7-00034N-OI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQ7-001xPV-56
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:39 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd93-8faa-0a2a0a5109dd-0a2a450a8d3c-36
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:39 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdde1-f2d2-0a2a450a0019-94a392174776-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:38 +0100
Received: from pps.filterd (m0384718.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50moFM966677
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:37 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013043.outbound.protection.outlook.com
 [40.93.201.43])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrc5ghvjb-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:36 +0000 (GMT)
Received: from CH5PR03CA0011.namprd03.prod.outlook.com (2603:10b6:610:1f1::23)
 by LV3PR16MB6320.namprd16.prod.outlook.com (2603:10b6:408:1d4::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:33 +0000
Received: from BN7PEPF000000A9.namprd05.prod.outlook.com
 (2603:10b6:610:1f1:cafe::1d) by CH5PR03CA0011.outlook.office365.com
 (2603:10b6:610:1f1::23) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:33 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN7PEPF000000A9.mail.protection.outlook.com (10.167.245.233) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:32 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50o3Kd1488836
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:32 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232wj14-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:31 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmPwx1G7KgTjoOmPxxgpBO; Thu, 05 Nov 2026 01:37:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=i59
	xJQT544TdeZe9R8pJlXN01S8B9AW1arnw7L5ocSs=; b=Ec5I2hdXCoX0w2bzS1M
	+2VmTK95/mlrKqQbO+8YlVQ5j+KAn289YcjOE907AQwLPCWhkpVu6idIBYE4PxTr
	tLxRrSDLZ7Rq7GYgaMu+ne4YxHz72Plhe1dtXYQZ16tf9Yv39HK6mz9oGgqQgWS2
	j8DUY/kZhHUW9y5R71NaXKNKB8pjVCBegqa7vzEGM/jyW5yEHoNXHIEAGDmdfGps
	9xvLrzQMG//fo9gxFfxOJze4pCRE94YW6PsBUi7Fs/C/ypx/7nvoMoUv1MGV/wKt
	5NrqeZ4u3jQI8jn+qdzSE8k09/TDTmGi4rbadgjxjTHPzq/9HifA6oUCdFRXa/gr
	PtA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QsXQTRRi+Bwj87JGtWrnAp+hL9YRkGTeTW6fgQdhCpKmxMqaNSsIR2lYCfK+mZ6lUk4LNVlb/gNytR76uz55edrBzOY7aoWA8CI/rNlXDfs1OfkN63Dpj7JJOIZlYL7mABuepTp5z7bchoJlPAwPD9PPLBk8NEqdX3ymNFv82RtdjNtsgfLRupjaIVrsQ16Lr4EoARfWY+MCz/gfu/xGLGqLo7CbqCL1G1d422D9Qmc1PX8Ke2k2grBfeBubbIzO7919r08edpQkUZY+5LURHb6mDadTwchs/L0YiIXyZYe2SKGf4KBpeiKLBA/SwweWsRt56ySD7G7LJ2jXm58bzQ==
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=i59xJQT544TdeZe9R8pJlXN01S8B9AW1arnw7L5ocSs=;
 b=ftrz6GBOvP7FqEyt/b/HE10++DymrtqPtQocOApgcUsQJyHhD0HbP1gJtjWJbzYkVWJSR8Cz6M1MnavSuQeJ7e2FE9xCPQZRCKkN0HsNyoybt2c/iv4vQmD1hPrRoKuFCYAnHOjcUyp1QgEnostePzLwv5g7KngYwU4A0gmGdsvi10FBeuk+CJD4eyZPph39Q9iL3ehWwu3BhMvndVT9VN+oulsmIeRxcx/HmBwa9cnIixw9MAIbgdRfvXtWVEA+Ja5Rpp2kQTOZtHShvZBR9pMMxaXxk3LgJtXhtPw2iF2Exnbqe8XFMaVXCLPDLkVpdtpzTPc5WzcEkkpcplL3Iw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=i59xJQT544TdeZe9R8pJlXN01S8B9AW1arnw7L5ocSs=;
 b=CBiJeunL/gxzdGjx3275xh3mJSKIvCiynac6nYjktXJD4C6l9eltT5ZQeDOCBOCG7/JIimhhnZ/X9SrB7TR19xHeMkabXG0bei9tkxlJ41UTGn3cwaBZ3upl/gB1bxSMEadUDkVoRoHD1+EJPa7cxtzebVEeowcmzRGvLE1LQCE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=i59xJQT544TdeZe9R8pJlXN01S8B9AW1arnw7L5ocSs=; b=
	nvlXwP/fXW2sby1GFETowQbpgUhFfHMbfrIi2jcmqMt3QKvq+BoW8nCPo7MlZhg+
	vnTNrYgVxs2l6Z1Zm2yxC1EXBrQvq4/bzG/qkuRBvhjwj89sHRaHuRkfZu3ApV24
	l8CXCCWiwLbd2VRzUQxaBlQbFK/W3IUnVInwyQRWBPU9awfiPqa5IAl3B2eHNRWq
	Lv+NRZq19MS8BZSfECTEISu1UVAh03eLGKp9v3iqiGyEz6ZU3l1CZq+f4nwgKa47
	V0rk3cXGvBkwfhw1TLo0wF+AWVZo8o1o3NBx3gzj2Bvv2Q+vmvUTELYQDXAw+Nd4
	bvky7gadBLFq5mXRfhgbsg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=i59xJQT
	544TdeZe9R8pJlXN01S8B9AW1arnw7L5ocSs=; b=LUhkvlVqemEUHfEuX7mEdoJ
	DiWe/4eOiPJ8IpN1XyoAU4/N/mJJt3aUcth/rkQgSMh3sk6Kwk3rm8bhkfjpgW7u
	mEG7exT1ldwcWezwKLwm1HeT+z/1kdJ2Ayr8O3//sV+zeOHb4oH7ACjd5rYK/fto
	HJu1ttkYXIiXBaoSqrpFf5IFThW7pKnybdhmwnqlRFKQo/luOFEKf+GGgiJObXsa
	m20CmUbWtmu2HzJbZ9rKOPJHlbyVJU7iGTSetqoKoVv2BOOyK4nb1gMSjQeh1mHC
	zgENkIjCHohn0DsqnXtcyxzCj4wiH3aUo6Fw3s6tYmN2rQArX8FHvglEw8oi0SQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmPwx1G7KgTjoOmPxxgpBO
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 10/13] CI: x86: attempt to fixup flaky tests
Date: Wed,  4 Nov 2026 17:36:58 -0800
Message-ID: <20261105013701.719658-11-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF000000A9:EE_|LV3PR16MB6320:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 178ff83c-dead-4ae8-2503-08df3add5cf3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|376014|1800799024|10067099003|22082099003|18002099003|11063799006|56012099006|261102123227099003|261022105027099003|261026140227099003|261028144727099003|261021121427099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	seHy3/qpZ8zvmDzE1P2a1jnnWDYGDF3XAa4ZIVBdgDp7N+Eppm0VBjDc1b7kZV8+uhCPOCUjgOvQNqjvzm2RI07zwLbwPll7XbfZ1vTIVKr2oge20G1YmHEk3ZShgj02mzjRmatsrfZg7vPTks2yvVxFOJcW+5PGrXQK8ssXPsstRlOeN9Rwk5xsssP/Mbk0UoPwJgiMtgfjUpucc4Xco7Nl0ppCyAgAQtUv2jgqQ3DGBOyKEaE1Vm/7+JYGi8j9epI2jiTNKNoElV4PzqiUQhvsx4xxlpuo96VL6W9dRNwNEc/J6nzBke/av1C8x0MUDVgMdaCMB/XMYW0JskK0cuPkauIdOWpIQpuKWFqwUDz8NtW2cm5p5UqnUh90epII57T8EfQUPBgAlVD5ZUBIUbNJIrAAC1DbZQkMzp+sX6mbfxakET02x4vVnoO3/JsCu82jRGxwV3vKV9lHARE6HTo2Qve2cp2zigElH48J+yadDi4Qo+XpCp9NYbdigxQd5dy+n7DN1d18p1EYY/P0W08Gr0Ru/8n3zv10qA+t0jBkfKoipgz8NHhE2Rjd0Ws/rDQspX4ldywWzQF/oI83WS3trGa0arwwv3IpL7AqzTW9Wva2y9tc9hpuVF75LT2imDwUZPls1OfsAvX1n+3RBu/Zt3P4nBZTudf/mnwaoYzEAeAZkqTNSuM+A5245nI8THuIZnZcn8+7jjXadZLHeg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(23010399003)(376014)(1800799024)(10067099003)(22082099003)(18002099003)(11063799006)(56012099006)(261102123227099003)(261022105027099003)(261026140227099003)(261028144727099003)(261021121427099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	P/qMQX6b3WOG4fO/3KCNFw4a6HtKHPqnrf856NeW3Wa83QPOBuO+AhmAzlQzgPrKmw0LWsFmLNzDbrJTReRcT6q/aMadDVjFZ665V3rl7oYvhEC8K0XAIpisxKgCC91u1LPOBscbYrU8KPz6plAeAE6mszDCe2qNK60ArMI20mob2kZealEVffg71kMt9oREjXKBazojmm3z+0Gji/uJkqDZcD7YTV736COldVTEf8BgJzUB0YKV5SGYMmsJOojZoyfMnElbphkuJW0D8/IieEJ9uGFsEgjRq/ypRrF9nL00imx8GNbTN8YYplZA3s9dScVaS0vC2804Zc2s4yb9zVR1QJBHH8D5oFRn0NuAM8Y3Iq9q5NHm5gjeFnXpA4/4lpWSCWw9cFuNWH4I99p48NtLrdy84HB9SyssIWXVPwcp3fFeBS1K714eZTerVMgy
X-Exchange-RoutingPolicyChecked:
	CTmx9ukMAjSKNqlmZt8spWP4xzDpSxyyk/ewGsUKevFCX21lerLnzlGjBwjba+HYMo2bgswEI8+fLAjliokQb9MzM34bjhcGJZmKYCP3aCUrOC8JAdd+QZDeOxccw4wOiLZJgEPzVFN0AzhLROePF63eVqkKTApURZoqQ9YstbTPxlK9OQrs+48Ky4Q1Q4jsneJ1bf7g8IC95jeFF3upwU0m52fjbiCKY3W4gMEJgfUrLCYrWx5lyqdI6wMQdHhjucw7E4TNU+Rc8BEdNj2AL1eZfD+dNSdbvt109fi9gdcf0m+ffPKAEk+Ld9gJFAQm8uitZB9Rbs8SRUw+QwYYZQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	/mN4iDg/wFKI7HD1DNJrYqPnOA4aBGivvrSdodN8Wwng8tzIC6BwsuGy4qoHI7FNGDz5+BKUq4BwBXsVRDk9fsaqxXRpTKBg4hSYKo+VuO7S93lOEk8h8vaCTvqoa4TwUXOPjqTQzui6U1WZnF7046CMzieF9cGxhSJHCR+f8Kh006vQVzRnv9LddisOZZRZCzcv0QDcaotcwzkGWgGdGq8nI64tzsHVECkMNQJ03kMpQP4ecUpGbLadgOvNvkJ8zdS5UbSze2CXAY2uyTIzkpzZbTjGoltTbG44vZhRVZi4WZLxgaEQ6CguahPpbUyAFXTG8uWI4XMXK0r3iVo+og+lCSr1w3YazbBmj6UON7NUugjcZF8dKJawS0ytsxcTEArZr7aPMnjEDemvOjoc2YEFfzjg7S4xtMgrwy1Cdefm+NowHVLjRu5zLNEHV6Wis8cq2RD6g1UjM7Wfs35Jp+U2wB4UAArcZx64/xLXgFvIUMn4DQ6YPIoA+KrXm3gSvgdQg+vDx7YYA9x4a1uMTsdSBgDGX1y2NR6WKgefsWXyfsPMP2kqiMgYwBE/NB+YyHAt94HZd8sp/7dNSwdQJzLHPqaF/0ima+18lKhFSGyrMimEh+etYV4OXaMCEi5Mh1RYNMjFUJ4knpnTf0LcuA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:32.8436
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 178ff83c-dead-4ae8-2503-08df3add5cf3
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN7PEPF000000A9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR16MB6320
X-Authority-Analysis: v=2.4 cv=JawpPkKV c=1 sm=1 tr=0 ts=6aebdde0 cx=c_pps
 a=XNh4DmHdy4Cg7KTw7bneTw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=ARvDHhclS48edyKYUbLB:22 a=cbNQJ9GKAAAA:8
 a=seZbWGLfxG4hbgvkuS8A:9 a=zgiPjhLxNE0A:10 a=P0bj-C3X3jJDpopQwM1U:22
 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX8oR30Ck0mbMz
 oD+xUxQV8VaX96ZOHFI+iwT6tnCSiPLoP1kcfIhKXN8j8vzCjQXiETxM/jj2mMhZFZQGa44LpU1
 QNUbS9RQxwoosDU8Ii9VUP/8BsvKCW42fVrAsMpc0Iyi3PaTe5uB/eTUocZLaRzIitjdDUotw99
 OgM5vLdepWr5vzucFvJFIVVZ4kHJAe/W0Z6U/nTCf8mPfCpDjPnQw283ArrkhoOoF+s/6Ybm/Ay
 xwh0Mcma7k0VDh/SKPy4is+KsPfA3WB9Fm9rC09uCYc2QFZ1Nc3UyrwY9HUkFob3ajUQOYhHk+B
 t17SvvNANrzMl+PmbdqdTiJcb7E7NbSrek0qs3V6a95BKYy7TOjE5+QcVcyaEW8A4JUCpzgDHjm
 8aIrNhQNYHN5MsI9saIRKEKU9rFmBzWsIEVn/uFD+L7PkwI3WLi7KpsKc/cwW+Zko7L4FHetUBV
 obvk0ndUcuGWtf/WUyA==
X-Proofpoint-ORIG-GUID: wg-2z3iIUI0pFlZ_mVV2lzkhx5GhfSNK
X-Proofpoint-GUID: wg-2z3iIUI0pFlZ_mVV2lzkhx5GhfSNK
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXw3bfECyeU/CU
 Gth/RPyMbNuVjItn27bBRUEv81gSeVZ6gMxmOVsgc2Kuz/CWPWZ07ZegPX31HkFwNTDDvsiFSQv
 oN2hUTOGN8pt/jm3faHBf2Pbw4VXYgcM08XyqoOkv38nn+w7OhEu
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 lowpriorityscore=0 suspectscore=0 clxscore=1015
 impostorscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0
 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842659-59DDFCFC-0B8D2E4F/0/0
X-purgate-type: clean
X-purgate-size: 743

From: Denis Mukhin <dmukhin@ford.com>

Allow maximum of 2 retries to account for flaky infrastructure
scripting for powering on the target board.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 98edf7eb9ff5..bf12b9123f1e 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -192,6 +192,10 @@
 
 .adl-x86_64:
   extends: .test-jobs-common
+  # Account for infra failure
+  retry:
+    max: 2
+    when: script_failure
   variables:
     # the test controller runs on RPi4
     CONTAINER: alpine:qubes-hw-runner
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473402.1681109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQC-0003uy-I8; Thu, 05 Nov 2026 01:37:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473402.1681109; Thu, 05 Nov 2026 01:37:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQC-0003uj-BJ; Thu, 05 Nov 2026 01:37:44 +0000
Received: by outflank-mailman (input) for mailman id 1473402;
 Thu, 05 Nov 2026 01:37:42 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQA-0003bJ-LO
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQA-00G6uF-1N
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:42 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddbb-e002-0a2a0a5209dd-0a2a4503e104-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:42 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdde4-fae8-0a2a45030019-94a38ff1c9cc-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:41 +0100
Received: from pps.filterd (m0367130.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mYBZ2064415
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:40 GMT
Received: from sa9pr02cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11013025.outbound.protection.outlook.com
 [40.93.196.25])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrbp3t6h1-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:40 +0000 (GMT)
Received: from MW4P223CA0027.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:80::32)
 by SA6PR16MB6693.namprd16.prod.outlook.com (2603:10b6:806:418::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:37 +0000
Received: from MWH0EPF000D894C.namprd05.prod.outlook.com
 (2603:10b6:303:80:cafe::8b) by MW4P223CA0027.outlook.office365.com
 (2603:10b6:303:80::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:37 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MWH0EPF000D894C.mail.protection.outlook.com (10.167.249.212) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:36 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mNQH3091282
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:36 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhm0-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:35 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmQ0xdKbtmeVDOmQ1xZp2h; Thu, 05 Nov 2026 01:37:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=EBo
	lYqzeKQgYX1dht4yk+gCZOOLYEi83ixWjkx0D5VE=; b=LMKjWv1Jv1khdcKLykf
	PqeVrFkKnyXgunJTSPHQD/KSTDMbAwN44DDB7KRjw5NBlsWPo31Du4+6L5ZqTOh/
	aTSkF6kzUvxwF3eRrmHCADL+CQR4qdy+Fa/UNTqZDcQFf+i/Mk99SRyvykp248+c
	dKqGxnazdfe4SESR7TIVoTrLrkS1GrIYOrDa75qmzfJ8MwZ6Z6Ho8+tCaBHZUMqB
	7fYLfR3gczvNrrx879tVx3WTGby9QQ+s1HaO+sRDWpOw9Y24AVJX+GeJ440wI5+h
	53XoQviOnJZVmwKwF3v2KWtwy+U7FNYdL5vgHxBd3++utsQqWKin9LpC+XsKjf9F
	bOg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=a0OvVYpTmIcL2sDVGUQ9pdyNhYx3cf3GbnLBubjIHiVahF98CG2DFBlPIlSPOD8oJDhdSG0MU9/NZQjV711fYwXi4xDswXZKpiinn6a16uWhGKU/Te9nfVk9TF1bnyu/piwiMqLXgiNO+cANs6oFirbOPWSy87I9kwMYzp1SXhJ2FwwNT4aSlL6psXw3C6z1sfps3li3Us6VmEQTJWHfmJN4QU5z7Y13VKuSunrkBjDBTk0K3tLHgvNS6GlvKnXTEBf0DxOqXbl2tReP1canIaXrPJQjWt6KYaN2Qiyve3sXbUUflKy8w0ijFrCj5i8WlC4KXVX15BDB4bmxcGc60g==
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=EBolYqzeKQgYX1dht4yk+gCZOOLYEi83ixWjkx0D5VE=;
 b=MDgcAe0GJCuidaUoz+d1ek8q8q6mzbg2zKXEanxnRmlZCzlg39lN3MFTXn7Tps9x0wyj9MCq4061O3oGTovryHDBb9HBJ6KRmqIyRRxAyRyhr1pIdZ6MaVbA5HxMqmImFdQa/bEfqRrHdUpdBK/wMhzZiS6RWbb4fXe7exawXtbVQslpBxl909GVuc+JnMWl0O48vOutoE/h4LNH5mswL+J5MNdytWQfUh/G/ONcWvGbPpWJRpz2SopCYRHnXU8TQKZ9mTVSikWdpLyGCZxdgcSWwd/Cj8Qu+BXQ54oqhQYf6Lw1Nt9kIePdyXEdNO0xZwbqejYL4vNZhMzHp7b6BQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=EBolYqzeKQgYX1dht4yk+gCZOOLYEi83ixWjkx0D5VE=;
 b=QuiAhPKwm3qN07QKjvqw7qPAdSdGdIn129EOUJRlHpe0jSI068qjcjK9+QDJM1jyyzCMhI8EFgcLdZc7A9wXA8hehoZB62EwRRI5jsx17P1/Bmjo9E9LB8D7krMtrufWc2ANIWVxuNdGmInZUqPCTDMrQnB6kM652sAY/dUFce4=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:content-type
	:date:from:in-reply-to:message-id:mime-version:references
	:subject:to; s=ppserprodsaar; bh=EBolYqzeKQgYX1dht4yk+gCZOOLYEi8
	3ixWjkx0D5VE=; b=imAu+JQYTcAA06SFuBZRzRHW5ptOX/lWgH3lWqWz9JAvcMz
	Q0VgKVjnvDW6iHXcTjBv6OQcEmoobMfzHxl5JzOJwlAllt0UOxObpZIImIrPGAXs
	EfoDS9igQtxk/lxe7Nrr294OdutDAKJqrRqajCmfGSjEw0+wlPD5y+i5mIYXypD9
	uGkdPhTHK6UnmsYBl2ebdGQ4EAkMWWc2OJbrQTKmjXbgSsB3oOfBdIiQghN0A1Qr
	hFcUQ6adYxq7bfRyKe41HlnooA/CEYlHYaTuZCadLQ0WGInyMsZtHBqo1sMgOLL2
	gZuhx7SA0PaLvbUzaULnucNRFiSKoNfm3ZDTJ0A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppfserpocford;
	 bh=EBolYqzeKQgYX1dht4yk+gCZOOLYEi83ixWjkx0D5VE=; b=gKa6qhO24sdn
	xmEC9EjGfn0Ngt6okixwaFXD4uCq1355UlKdfvmVgaDTrP8CpwPEjRFvE28MvY7K
	SVfkMFTXP15BgTVN3a9sL/K6Ve0DWFBLDZzqPUWwDmVSMKtf3fn8o+2hw9A2baLo
	obrpLGSHS12XQanMtknpquMDLKdjYkJ7cOgnlim7h2RU0VvPPKwlyfVxxaTxrdJX
	uPB448BTpnhuTd1m++O5SDsE6QX/vWYCKLe5aoCJSoqCWyDNA2lvTq3rmn/2Do+G
	P5zRPakWYot8DQv61De1Vo+lrizfRJuBEe7dclltVky7wF/kHrMhMpWaecnhVub5
	hkqwpKewPw==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQ0xdKbtmeVDOmQ1xZp2h
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>,
        =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v1 11/13] CI: add test jobs on AMD Zen5
Date: Wed,  4 Nov 2026 17:36:59 -0800
Message-ID: <20261105013701.719658-12-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000D894C:EE_|SA6PR16MB6693:EE_
X-MS-Office365-Filtering-Correlation-Id: 6e7d71aa-2e33-494c-153a-08df3add5f5b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|82310400026|36860700016|11063799006|56012099006|261009223027099003|261021121427099003|261026140227099003|261026121527099003|261022105027099003|261028144727099003|261102123227099003|22082099003|18002099003|6133799003|10067099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	7u0ZN9/oP0Ww4BYkg4Kl2DAKaj4Ff0GS5JGqI/nm7kD2cgT8ewiaNj2bN2cpI/vmblWubbON18LpfFqCo1Zoe0+poDrJiU6kg9vWHO1UcZjbT6xlwFARBdtUc9HGFNA/9tmfbrtU4hGkedUVmU7nxpBoz0FiFNDc8tk8wV4FFjkcwQlzQ4uwFqN/a/xGGpPWuER0z2/EKZ1X3Q7TdO26BsY4kXHOSg2ho7JVDPPEl8sx4xOuyu53wfWQ0hHMCmIiXb5pllphiLsbRn+Mxn8DO0zqCUhjv5cNLtZsQUTnXPSdNYYXn/KewgRFgrkUFt67tEtbogNm50C8a53qtcJ+5k9b5ovX0LzDQCFm4+KCd1ktqnQX2AsIdU1cP71Knn/QbIkFZSB7d24EzwD4ErHd/j6cmBdWK1Ksmw28/M3/pNgj4gKzTccswlNps19JT6VLJudvqetMsuQmdevdxTOWttOQb1BVl1NUiMHhn52oPn/rYzqFzkbaH8dRyXP+KtxcyJucMPepzRs2e/xQIsYqqysyvP9lbqMJyKEH5UD04Jirtm8zqu/XeESbvoaueGy9eptwtIoxo/syJivTGPiVDPZVpCXR2AahGz/IyV0ZzwAzgj7CpqVKM3xs0XOxOSLqWss3YRLCLcA4xZqLB/DqXSeRtM3wwmyRyFFYXsoWwZS/Pg7LY+8u3lafJgE+yoOMqLFYvXlC9C3OZkd8v0iyew==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261009223027099003)(261021121427099003)(261026140227099003)(261026121527099003)(261022105027099003)(261028144727099003)(261102123227099003)(22082099003)(18002099003)(6133799003)(10067099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	UZs5efE0mqLve7HUNeydX7Wh72oa19pRgXcLDIKcNMj64D6bJbOdhtBB4ii5FBInu1wyImTr7L+DfUxnQb8wiRu35WJn1Mt5ZYNYOnpIc3FFUN57NQfE3cn0w0xFhR1ozsAM9Tle0+t7d3yXoystaRFC8OFbR83ATCCwIWeZog8Bnyk3RJ+OTRQXuKHRBfjOKFuuMe3dNdMl8lXoPM9w5BV4+8upjl9nVegzp6zcuBevmuxq25sbsKWfvBL0Rawulg2+IRQKtjBWBOMI85pbOOOHr04H333SYgfWrNRKdbM59KDwkmZ9v0XARiEsYIROZK0OsDRD3QUD7WZbj7ClkXWWqaGZCLja/zpAUY4gyQu/cDvySw/lL9grAs8b13PqEza/qdBiqNPXCd8o8awrnCEAhhenC7wGyFmoiBzHcTuqXjiKG41w9pzTzXgaOaUs
X-Exchange-RoutingPolicyChecked:
	TLSmT7pvK1cmpCeHHmA5B61h7XIeJgCS3jjmLE/+unkcsAYlkhUKNZEEmRjvM0DS/XKSAKCRMLtqXeOkxU7diRm/2BdzOWj2m7zczIF6TcKClRB0vQNjgfN8V5/1dNnt7YxdKHnwXBhVhHBTiKcacP26m5lweOyn0kOY/+cDl6qeKVhHdhD5L/RBDdG7QM/9RXt5a+IWznjZ0Hle3nA++8dcc6Vv8KAxXwh6R7qe5voiQ6Qb+ieX8yVbQT20K/udF1opvPPMXuEm2fAfK3y/HyyB/MmiNKKRDM6+cxtl4zh9TwkBx0yfEn9U30ygjoOAMpDkfIrr5/SPaueMSEve5g==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	zFAcsE+4pzkunabw/tagI8MFdqHSyJ+Zey9QyltduaKaUFgnl4QePvDDoza9Weo2VaWxgRCd0J2LTU60MIxBCcdoMPNfI+FXuO3N54T7Xf+GNJsifLrunwqTAa1bCDVOM8B3rvjuZRTzh11jYjPcOmNxBBuvyVc53J/ABv8ll3i+g2X4APFbOh5NtWH6y/wajqQMV4YiDqaU3hCZNK+MEHdZjgQwlT2+HgMZjoyPL5MJoN8ZDihfkNv+zq6KQg++acd49bN8rKuq1lypJjw8cXTTXPX1HNTUvjX/vXkTFXCvSo1onCFQrnF1v08my5lyRuG35Q+Qm/EfueO3qdYZUBo5rntOlGsKvC/B7SqrVHYh3x0SRfVIx6VonG5BlU4SSbaJ9UoyhzIkuKnSTcGPvBcK8rStkjl1ZtpwEZnvOozekUWt1m7dvFfITFjwI3fLrrwB/aLd2Hq9EDg+Ooly6k1qgM4svnOx/Nsrh68JqnzEpxJ+iYRUbRFe7GA+1SbabUWbB+9bsbApm7yYBL4xdZLo1L1012Fv4vuKgrt+NPH7MPJODx3K/zDBI0YtuF/7tDqezh+NoQDR6r4Ppz3kA5AtR5y4j73+qT/R1BQg8y4vtuyeeXxvhfUJL3feOfV4wxhCSLMAPz8tjmU59BiRJQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:36.9015
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e7d71aa-2e33-494c-153a-08df3add5f5b
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000D894C.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR16MB6693
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX9TgWFdV60PMh
 Ze8ZZzddVDznnuYAhgmsgVkLJ1rWyxGZaXXoZttEBFMSAfog6nyNydYwb0OcvWfoAAKksm2QC15
 MLOsrRMNp9SksshQ0DP5gRMPVVPNZ2VcML8cOGZQvm/Sed9mvaM9
X-Proofpoint-GUID: qO2MTXGcDl0zfk3lwW2Y0A6lnpQriLf5
X-Authority-Analysis: v=2.4 cv=XuBvqlF9 c=1 sm=1 tr=0 ts=6aebdde4 cx=c_pps
 a=XslAgrSL5Auaid5C2fKBmA==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=IkcTkHD0fZMA:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=vnUQfov-gS4s1L7hHvr-:22
 a=vkfgAjWNAAAA:8 a=cbNQJ9GKAAAA:8 a=MLJBxw-F2uju8ffh_fYA:9 a=3ZKOabzyN94A:10
 a=QEXdDO2ut3YA:10 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
 a=s88AYcEWOXMFsoP9cgP2:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX4R6WdNnG9ZiP
 Vim+WNxjPixbqHtIZsaoER3x+9gYwez/deHb2pRpuy7DS/y5S59uHAL0bwG+YvP9fqxYZ1sO6qe
 0hBwWo/MPjNtYwloD87wSlmNv6Zq4ZmdvSka84t/kc21k3fEGXf0O+Q0x9Ei2vDhnR2MfSVQv6R
 N5F39tNwcaN2qSa7lfX1bI1/c6zjaVbUk06wgncZJmgBmAqxJ7NhMY3wQHjwDhle5fTjo9dOrpS
 Y5uPhtaaHyEDmLmnL7sTd3L7RP9WF2t83kHgzy7OhuD1wTFq82RXBC3P+S5kmqzrQZsiu3xdweL
 avfeVvHZSc64QvlvzPH1oWnpgql7eZax9+c/1Sd0zIwnkbjxoQ3T2IHCxFgxva2LcYaByy/cx7x
 2ZPluQRkY5qf89LXWwmZdCVKxjwJK4tqsc+lH92a2s4wrYUP8kJ4gJs/zvI+a3KAIw6umO3EOZS
 usyRyFpu3KOIjyJ+8tQ==
X-Proofpoint-ORIG-GUID: qO2MTXGcDl0zfk3lwW2Y0A6lnpQriLf5
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 malwarescore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0
 clxscore=1015 suspectscore=0 spamscore=0 phishscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-33051d/1793842662-6C4DF4E9-3CCD6F67/0/0
X-purgate-type: clean
X-purgate-size: 2955

From: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

This is Minisforum X1 Pro AI mini PC with AMD Ryzen AI 9 HX 370.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml | 74 ++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index bf12b9123f1e..05dbd0d3e07c 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -264,6 +264,18 @@
   tags:
     - qubes-hw11
 
+.zen5-x86_64:
+  # it's really similar to the above
+  extends: .adl-x86_64
+  variables:
+    PCIDEV: "c3:00.0"
+    PCIDEV_INTR: "MSI-X"
+    XEN_CONSOLE: "console=com1 com1=115200,8n1,pci,msi"
+    SUT_ADDR: test-21.testnet
+    XTF_TARGET: qubes-hw21
+  tags:
+    - qubes-hw21
+
 # Test jobs
 build-each-commit-gcc:
   extends: .test-jobs-common
@@ -653,6 +665,68 @@ zen3p-hvm64-interrupt-latency:
     SELECTED_XTF_ONLY: test-hvm64-interrupt-latency
     TEST_TIMEOUT_OVERRIDE: 600
 
+zen5-smoke-x86_64-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh dom0pv 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-smoke-x86_64-dom0pvh-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh dom0pvh 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-smoke-x86_64-dom0pvh-hvm-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-pci-hvm-x86_64-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh pci-hvm 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-pvshim-x86_64-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh pvshim 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-tools-tests-pv-x86_64-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh tools-tests-pv 2>&1 | tee ${LOGFILE}
+  artifacts:
+    reports:
+      junit: tests-junit.xml
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
+zen5-tools-tests-pvh-x86_64-gcc-debug:
+  extends: .zen5-x86_64
+  script:
+    - ./automation/scripts/qubes-x86_64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE}
+  artifacts:
+    reports:
+      junit: tests-junit.xml
+  needs:
+    - *x86_64-test-needs
+    - alpine-3.24-x86_64-gcc-debug
+
 qemu-smoke-dom0-arm64-gcc:
   extends: .qemu-arm64
   script:
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:37:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:37:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473429.1681117 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQL-0005D3-7b; Thu, 05 Nov 2026 01:37:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473429.1681117; Thu, 05 Nov 2026 01:37:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQL-0005C3-0G; Thu, 05 Nov 2026 01:37:53 +0000
Received: by outflank-mailman (input) for mailman id 1473429;
 Thu, 05 Nov 2026 01:37:51 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQJ-0004xv-73
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:37:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQI-000xdn-K3
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:37:50 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdde2-bab6-0a2a0a5309dd-0a2a4504c1d0-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:50 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdded-b57f-0a2a45040019-94a38ff12084-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:50 +0100
Received: from pps.filterd (m0482515.ppops.net [127.0.0.1])
 by m0482515.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50n1Xq1195592
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:37:49 -0800
Received: from sa9pr02cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11013058.outbound.protection.outlook.com
 [40.93.196.58])
 by m0482515.ppops.net (PPS) with ESMTPS id 4hra4eua8m-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:37:48 -0800 (PST)
Received: from PH7PR02CA0001.namprd02.prod.outlook.com (2603:10b6:510:33d::18)
 by PH0PR16MB5231.namprd16.prod.outlook.com (2603:10b6:510:299::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:40 +0000
Received: from CY8PEPF0000005C.namprd21.prod.outlook.com
 (2603:10b6:510:33d:cafe::1e) by PH7PR02CA0001.outlook.office365.com
 (2603:10b6:510:33d::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:40 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CY8PEPF0000005C.mail.protection.outlook.com (10.167.247.26) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.2
 via Frontend Transport; Thu, 5 Nov 2026 01:37:39 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mP113108414
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:39 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb2u-3
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:38 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmQ5xwnEoDnFpOmQ5x5ofK; Thu, 05 Nov 2026 01:37:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=9Wv
	vWrvz9JXzkSSTkfi4w4G945Ei7sBYZKGt66bpnvM=; b=hY5VYEAoS2mb1nYQfT/
	yKA5In5wFQX6qFOTI/jJ1ENqeG+emtQNa0yeLReryyVwMA3zrxCu89YTGy142bNO
	vRnNBCyzFl1KuXuUmnsiUNjaG207dhLZFehybsxcFimKTfT7hvmUw6D9WZmMec5I
	9gEHO+DSluSvlmDFgjNcWWWaEy9ecEFdatm5ceXO34+ekQNP3JZ0N0Gq4EQUaNom
	f7iv/wAZw4GxFvvdYA3xeBbW0lE5tUG3y3Z1RT3gGO27drsOWHadq/mmlto8/D3T
	KR0VLSg2S9Dm9m6C+O08/6vAuL7wmnmAislJ+Flayw4MHGbeoUTOXXPbWY1/Naux
	VQw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=n2WK0er4cbmojYspYbisprjX1SkmD2EwlK30llUcPBE78Xkvet+2/3GoSMHFNAuUZlwC6SRa7uhsfDJAAd6sEVTkjyU4nh98v5tZSGnzMN6LXnbPiO8ApXTQIDvChAcrMxfXSpWZDl6GnJ/EOyMSI3r8KxXFeQh/or34ZYgwYTJq8PERcq5B6IbQIpxmGUup6mc67xbL1non+P4QXYokRqNCe64zpl9zl5DlashavxPNYktAzmdSzrQBwtynGfRiHldWa02FlD0GsDba6ydPSKqW1B0hP1zU2LIHqqO6Rjx8M8scQZ345qeEBPS2ZvFKjfQflpPd9RQkYUvYgh4MSg==
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=9WvvWrvz9JXzkSSTkfi4w4G945Ei7sBYZKGt66bpnvM=;
 b=rh4qvWpVun5dvlzxZoAyQkNP22uGGQ4959NnnQbOrmAhjOA2fmd48n8eWs8BjVX53+keVHyJlFrE5FcqaYE3UaFNj9Ak4OMH7pfPDy0ynsQGH+ln6ktdqIqsFiu5BwtZ0EhCtoNBts+Wp1lnn2SurwrakgsSS8FRntvsBKsNAs0y1p95o7PAxi0eC3MReUhQggVGlldxYtA8JhrHbWItK2UJ8mprMov/G0jNZK5EtRg6vbveGqUtHKetEhMPUPolGNyBLLHRsTsnpxOMvEUtyKrh50N2LkySqcuG+6r7C40rYBl5s8OHDJSQlD7qzUC/XgAcsluDC+wl7GeMHTyWGA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9WvvWrvz9JXzkSSTkfi4w4G945Ei7sBYZKGt66bpnvM=;
 b=dUQwiPVO/fSmt3d/mTJaRW3rTfJP4kqIa3qcD76S8SHsAHZfbVx9Gm+857C0zZXDil8XwPpV6/yWJAuwmto7fNhZmmyMqXV/1tEVMJtC88vkw57TzUNwqsBcENP4zAaVcE1UonzjDdBmyaB0DjUWnhhpl7AT/BUdpRKsY4V1kvw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=9WvvWrvz9JXzkSSTkfi4w4G945Ei7sBYZKGt66bpnvM=; b=
	VeMXFcF2StZm5nhQpiujNIgG5CWX0RtwuEOti5xvMC8OU2KNRv6ht3VS6wFiOKg7
	YB1yTolj8151tis7FB/utiT3PHrLuYWYaDA4V9OpQ3rbCiBVHWTPimtDpGHEuML9
	ZOa77tpjyWJCsBCPqTnkVOHdg9FRPtoGXbq60yf5/O3uYu47mIQ+715Ve38kBwBY
	o5G6tKCUbr48+juCLlqCLmC23Xx1GkSY7yYNFv5WLkRWSaBQF6SAgxlths5u5eab
	q9ysJy1RIcli12zDoBNKJzObffUFZVAdX7SgsFP+TKwIXlV8wotSSJHgCeLhV59e
	OS30o0SY3st5P8XIssV1JQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=9WvvWrv
	z9JXzkSSTkfi4w4G945Ei7sBYZKGt66bpnvM=; b=FZcQgDTVDaVrJx7iUoD+HNU
	+7VO6uKJS4kjgNuzQFWoRTg+tUPl02oKszMGU7HqEZDJze2wxvsFP+fqkxpx0Wdz
	miEqJPds6lcYX+tREnw2nDW6+gu+zqM93kXo0DfpBT+VHQG9tIedcyhFTvIPSH2g
	8lb+gOSPzfgIdyHuQIcv+6O2OOnCjJS7rFRKwhnp4FEhnxSMjBwQm94C1sDhU1fk
	cjZ7GITO6+ymZJxOs5/Zb7L7tNZWMCM3D9KUdj0cNW0SREMTi4TF9SUQC7Wll+7D
	aMtr0bGepxTjdoJdc1lEoMf1AdMEzG4W3+NR6+Zn4CgSh0g1nGUdPrWI26Nj5Zg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQ5xwnEoDnFpOmQ5x5ofK
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 13/13] CI: do not merge: re-wire XTF repos to custom branches
Date: Wed,  4 Nov 2026 17:37:01 -0800
Message-ID: <20261105013701.719658-14-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY8PEPF0000005C:EE_|PH0PR16MB5231:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: a5b9ea93-d5d0-402b-56d0-08df3add6109
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|82310400026|23010399003|36860700016|13003099007|18002099003|22082099003|261009223027099003|261021121427099003|261021123027099003|261028144727099003|261022105027099003|10067099003|261026140227099003|56012099006|11063799006|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	X968+PJbEemVOrc+ZnzAlXUCKjUJOleEl+egLFSJLENk2pG4oulzqQEQhuDCZuNDIrKZKIRJI7WpbuYFMfvBdcvf0Epv2wsDV7EHE8KwuOgNR6qxLEsGSXwzDd3sVAjw+2RRXwsHIX6eygSLaJ9CFrN5sX4Ur5Yz7zrMAtlll6scFykkhOqQTibjaXsTRzME37GTKShfnxW4JxPqv7jxnrBeoYlEzxBZ2FKxzodwxqfu8tFnlTye/rZNX8WBzpxLtel3PcZ8/Y3aaMb0iw+Ptmq/HULr+W/ABi+3yUEo9wT4iX+OMIaqdIiNvVWQ+tAHEb1tlCv+pZ9fzOs1HKdoGRSV7gF1xOqmsoEI9qtpV13zCQLNb0chGpUNSmdei6tnE2mKewxDkV/6vqvGtzitIu6B0wzcdM2W4ZvUdj+y+/AMsKa8rjpFpGVp3QqJOiN9zn7ElYOVbw1f9EMB3GXKyQ7IHmhu6WZRnBr4ZXMo7vSVDWt1pmCzm8BAvPUrOTZOR2GsdWcZUtxvFH9FgNJ5ODYWrOvaMSTHGBYba+at0GKGw4T4/wtZgf/RvigQ9YwzrmFYwNnEhbA0xdFzuswoZyP+nOGcvJNvNF7ygINUe63KjF92rEETm0yn9srQkX4/m49t1SaXsA4Ebg07i3R+DD/gx89VUHc6woWRT5dxRfc=
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(23010399003)(36860700016)(13003099007)(18002099003)(22082099003)(261009223027099003)(261021121427099003)(261021123027099003)(261028144727099003)(261022105027099003)(10067099003)(261026140227099003)(56012099006)(11063799006)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	C+bIV1iF0j3XPmQA1yj270UEKLrTCR91o5xcHkGSy194XipQ9wJ/pmpKomfUG7g/orv80r9qznjmZBaqMFOzEYTvaP2dzfU0kB5rsS7UJN0eDxeXEHAxvB72Un83U1YrhyWckUnjHXvxG1JmfWxtj7YcgSVZSOSEZkPifxfHYhJOj7/od72X+ibzy8kttJDstObQbZUDRWpJXqh+8JPUeasiScokSRFyhRKPa0dA9QJhq3LI5rbmlhrOPFZvX0/I2gZLIISGwpPHjPkD3TSiwbEVFqvkPsEfUyQAJi9Mojy0y3692OKeQ4F6jBP6xeCQuEHb1zaJ2x7ml4TzkxlB+I9RNwCgHoOVbCrmeDfZEc9QrwTSkCm2THp05ws2ndZLJrJMGUQR9KnwWm1lKw2vEzOnwgbXk7hcbbIdPd0KWu9xqUShVgmJZlySycnjxVyz
X-Exchange-RoutingPolicyChecked:
	EK+qPH3Df2gxzKmsPtAbXlmlocq6SCFWERPVOaXOlrvIKBndkriHIaAE0GBnWX5hZl8UuqAerccIAU7pH6i+6FKoqf/Hj8CW/nC7gZZgX6g75XCcBquRCbEjqeaEvsxtyN/+0mTahYQgXhUiAm8BM6vQxSU0+o46vqdCh3k4AXyTDa29p0T3+TqymMeSYyon5IL2m3fjmyEol901AkJgFJ2m2DfEpNUe2BZ7ApxiN+zmPF3/y4SoHFuFjMJxJLkeG20UngwMLigTvkRKgfQWnpebB9xWUkPHUuE/60dPY0+RduNVQ2mXRuLw214mopssPEpDIjjazVhj/2i6rg+SIw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	PZBZZ3Ogw5muhPSg096vW3uGbwsARQdmQ7nT4Ic5a0PFH9aJiCZ2+xBaWXPXtD757XaYCq7KQBxl5yJRta7vzCHDf/yyztsb9z40Nv+zNqhh+j7oG5Kz/x/lDvKVfozGKTcF7tTeX8jWPqm3OIO1gJj6yjrSW+8/EeSfsyiVCP7W5YqavwyXu22fIM9Yh1PcD0XdciB8FUbMBnIRPsyEduGSViIBGjdk4zCSYqgHywFONbkYhNfRIvA3aH1r6cBw6x3YtbJSpCSfvwtn+VQIhGzZU8vOsvd3kI24Sy2r6C/8edlcft8qZcYSYSYfjgM5bHoDa0UXZo0u5uuVGJbh70pRSao966DGOhDO1GfoiYXJ8IJ0QhdFUgBtSgIdz4Yq6kiCtnzkFFSmGVyGp6K0ZUNeMyuLRk/Y720vnDx3sxN3BqqIfA3lZLCm4paob2KfSNqRAx4s3cDCZvK+T5mFiZSgohfeUE8ytmk3Sny9KA7yo/H5r3eFVH186mSYZJarmo4Udp+lJ0/+5t01TCd/hl6O91aOHDT0fHKJKC0sPSn05wf5zqqmPfL7aIIWP5uA7kkR9pLMbBstplZNoIwlbi4MQQgzaeDOc1B4VhsklfWYEhxFoVYpdCFIcB7YYDpQ/Htg6gNvV6a8qSHLUMX4QA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:39.8148
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a5b9ea93-d5d0-402b-56d0-08df3add6109
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY8PEPF0000005C.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB5231
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX88qpPlU/k+fK
 sSl2aCNoIcB1Er2EyljNcUjDwTQxSpYo3UsMUwGZL+rKvb+TX5RxNbNmDjJ7kds8pos3G5fzIFW
 jzTZ3b2xvefxLbR0WI6deQHHMVO1gwDsAZ5llH0bPDGtHJB2JxOTEvLJq8VGwGJLxbFvckT8EQK
 gLLkcniGmj8Nn0CKKzOiktK6gbMJVzdIBen/5tnzW9I0j/gGaHXmXwgB27j8jGBw9HMVpriT/qN
 YPzHOYSZmUKHWaBp3O+2lwdJ+du/QtlP73B0VVw+zTzNgbqrn2RyMnei1mhfLU73oaiyIfP063n
 BccFb2zB9jFgG4iGkWK7ljSvEJ0/qIqcF1WGQo6kq/RH59/IISjQaLFSpYYUTEyRbqGu7hpJYs2
 MlFjWHXzMEib1w6ObMq4+9dFh7cZqLWaiRKKN7uA0+KD30jrp3RLlcvR5jnnCCHENYc34AqI3pg
 2UhPNP++5JbKzz6i0KA==
X-Authority-Analysis: v=2.4 cv=UfzE26SN c=1 sm=1 tr=0 ts=6aebddec cx=c_pps
 a=5YU8ENXygJz5UkgxsLF+dA==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=0GA0A_IKJoUHBEAzNTkD:22 a=p0WdMEafAAAA:8
 a=mLnsDVdbAAAA:8 a=cbNQJ9GKAAAA:8 a=5kmKzhDK46sTO3VOasUA:9
 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22 a=xnp1pY6zelCj5OLna2To:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX++JS9z7kbmQ1
 nL9+Fs7TV+WhzDVtMgy1cuZ0uMkllSBopt8yHe+Al8pdRjNOV9VRzWlkgZQt9l2/kIUnOy7jf+g
 8plg0sjtxsWhrBYx21Cz5VvYCOdBWYyHhKQ6RHMblJxGdGOPDmaQ
X-Proofpoint-GUID: qaSBHx66ZET7YcuZJ0wH_1ckoheKagNw
X-Proofpoint-ORIG-GUID: qaSBHx66ZET7YcuZJ0wH_1ckoheKagNw
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0
 impostorscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015
 priorityscore=1501 lowpriorityscore=0 adultscore=0 suspectscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-ebf023/1793842670-C12DCB50-D937E314/0/0
X-purgate-type: clean
X-purgate-size: 1462

From: Denis Mukhin <dmukhin@ford.com>

Only for testing.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/build.yaml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 1f6228ba74ff..a9f85fd9915f 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -867,8 +867,8 @@ xtf-arm64-gcc-debug:
   variables:
     CONTAINER: alpine:3.24-arm64v8
     ARCH: arm64
-    XTF_URI: https://gitlab.com/xen-project/fusa/xtf.git
-    XTF_BRANCH: xtf-arm
+    XTF_URI: https://gitlab.com/xen-project/people/dmukhin/xtf.git
+    XTF_BRANCH: xtf-arm64
     XTF_CONFIG: |
       CONFIG_GICV2=y
       CONFIG_SBSA_UART=y
@@ -881,8 +881,8 @@ xtf-x86_64-gcc-debug:
   variables:
     CONTAINER: alpine:3.24-x86_64
     ARCH: x86_64
-    XTF_URI: https://xenbits.xen.org/git-http/xtf.git
-    XTF_BRANCH: master
+    XTF_URI: https://gitlab.com/xen-project/people/dmukhin/xtf.git
+    XTF_BRANCH: x86_64-ipi-latency
     XTF_CONFIG:
 
 xtf-x86_64-clang-debug:
@@ -893,6 +893,6 @@ xtf-x86_64-clang-debug:
   variables:
     CONTAINER: debian:13-x86_64
     ARCH: x86_64
-    XTF_URI: https://xenbits.xen.org/git-http/xtf.git
-    XTF_BRANCH: master
+    XTF_URI: https://gitlab.com/xen-project/people/dmukhin/xtf.git
+    XTF_BRANCH: x86_64-ipi-latency
     XTF_CONFIG:
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473478.1681126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQy-00080Z-Hj; Thu, 05 Nov 2026 01:38:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473478.1681126; Thu, 05 Nov 2026 01:38:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQy-00080S-Ej; Thu, 05 Nov 2026 01:38:32 +0000
Received: by outflank-mailman (input) for mailman id 1473478;
 Thu, 05 Nov 2026 01:38:31 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQx-0007y9-48
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQw-00G6uF-H0
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:30 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdde8-e002-0a2a0a5209dd-0a2a4505b2da-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:30 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde15-4cb1-0a2a45050019-94a38ff1bf50-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:30 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mrKT226617
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:28 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010062.outbound.protection.outlook.com [52.101.46.62])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurckv-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:28 +0000 (GMT)
Received: from CH2PR02CA0006.namprd02.prod.outlook.com (2603:10b6:610:4e::16)
 by LY0PR16MB450305.namprd16.prod.outlook.com (2603:10b6:404:201::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:25 +0000
Received: from CH01EPF000BE94B.namprd02.prod.outlook.com
 (2603:10b6:610:4e:cafe::6f) by CH2PR02CA0006.outlook.office365.com
 (2603:10b6:610:4e::16) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:25 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CH01EPF000BE94B.mail.protection.outlook.com (10.167.244.200) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:24 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nXK4060892
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:24 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh8u-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:24 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmQoxuk6nz55iOmQoxXMoQ; Thu, 05 Nov 2026 01:38:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:Message-ID:MIME-Version:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:Message-ID:MIME-Version:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:message-id
	:mime-version:subject:to; s=ppford; bh=jBRiD9h/ZX2roh54YQ1pUbgyR
	VmQ6R2m0JJUxrli01c=; b=Uv5g86In65OxqkhKbP0HXDB6dYBMOYqTyRKERPSlg
	EHDGUaFaZeDgjwxXd8CJ7jNM6zLec6FS1dL53i+CJfHEn5OuF7ZTAfxDTdgUQmvW
	5eK3JUjEUUzeHxBu5tPxhA8Ov5nuNGVW5b897tpJDN0lLldjihBDKa1aqwwubl/y
	X5P85mmvx+f+18peZvmiNLqVfDu5rCf60XXRECPPxrGZnqyvRYqBfMqu6UharxQJ
	+7XkD8XXbrlXze4E+alkNwpOnavTKn0Yu3xv0RZIN13hS4wf9ydyyiOgQAvHQ9EY
	DfF1xH8xC0daYae9NK6nXfXMe1anE2KXjIMcD/CtWvT6A==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OkaG+qMMVjXts+V9Z+zZ6Zi/JsCgEhfmGMDbB+sAqFwQw8yiZ3uUu7FDA9hEfEZWBV7t+oeidytXc5Hy0aErLedvQog3NKLIW9PqUTG4Y1xBTOcxK+Gi3y4XT23APDAVzdjem7hIMgGV6PjEQC51W7f3bJ8OBhJpOntptumX4a+CcRxQKXPdsiIE6UBBjtsspNyCQZwrXG16nOau3DVYghKCgoWEdXRwXxdTI+Gw1+fEIofbAOrZ9a0b2Niy+E+SacsHsz6M6L2cWBwiBUlF9T/t+VMTGGuR07Zi4zQ/7f1F8wuqjeTnWbEt1ro/48DbOCGjaYJOXW5DRYFucLGEcQ==
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=jBRiD9h/ZX2roh54YQ1pUbgyRVmQ6R2m0JJUxrli01c=;
 b=lpfJCoIm7euhqeVLnPbfotTILcJrCwpROUvhe1fd/gZ19MSDqH2TFvPlyJJ4IL2R0kAYV/RUZKmHqtvtcI8ksOykzwNRxHjgSZ9X6+9W3Ujk2b1y3F2tuPfd0yro/K/4lkDzMK2vd9GzJVANStfh+ROiN6hcN0GUgvvckxmrqxbsJC1VyHMjdaA87+S/AieLrBavt8E/dHmvq5RyvdvTnQtpaksEeFk7vwzb4J59bwBrg/fbNS6Eabxg9uaWV/F1Wh7I1xnNvOwRsbjxXF6RjuJBbGkvhQnEqDOkqi9aw2ITJutIuTEypDQrxO1cAgIlJwitXGtPdi5VeGsET1+AiQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jBRiD9h/ZX2roh54YQ1pUbgyRVmQ6R2m0JJUxrli01c=;
 b=UQ2wkzkgSTKHIs5ljffR4Rbp5sRLx/4ZYZ0Pobe4+Lr8c8TRAvuX1BEfhdw91L5BTHfPfM6u301haF4hlUdecW1ERvShXgIxX0LbopLP0Il3EwR41iJwAXUGatOFIEJoCMR9NLntGqDQzAfUWj+1tZrhIIzxeh7yza0x9r7/z4Q=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:message-id:mime-version:subject:to; s=ppserprodsaar; bh=jBRiD9h
	/ZX2roh54YQ1pUbgyRVmQ6R2m0JJUxrli01c=; b=MB2rB/t5rgaG1q5UkwUHooN
	keWYk8CohnnAWTJiwOXQMmut+tCzjn+aPYif7vL08w9AxY+BrBNurkFxXL6ibn0z
	IrLA2uhKzJ3jDDz8CQ1UclCU2y4ffXLtvguTfyPqzTEbQ8KKx9NOzM5P6l4bYXZG
	Qd2Mj6NaEnW4+eQla/XuHbAuhVowTktd8p0Ja1+hqNUMcGiLUUgU4yxRjFrS0wmh
	hh+sM2JaRAdU+2DCNr//izvt0Z+CQsIeUszeoh02V8pCLVrtZegrtX4TT760f+bR
	Fg6o2cuZIBn0cPiVUiRcQIfJIQPAPw0uu8Efd036JLhFLDmrZf50/0bfjGDV4Hg=
	=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:message-id:mime-version
	:subject:to; s=ppfserpocford; bh=jBRiD9h/ZX2roh54YQ1pUbgyRVmQ6R2
	m0JJUxrli01c=; b=eo8h1Mz6Jl7NtSdt7O/NB0gPCGDwRMG8R06One1BuVyVOXL
	GpNTXdYrocL+8Wj87W2vNoBv5lWQnrEDRlVRk3GcOxbQm0BVa87Fp7xxweQjW9gL
	tUcNoaXveuv62VMyfeEaHBkWPIoFX/78D+8J76tzasVY3/RJbnBTRabckDzUl3Kf
	sqGMpWT/zuUISmi0Yj83/wSxhrdk14bMXCdOqU+97JRljtpvPpMA5c9gdkLzKybN
	f1ZkQ/44tRSYgSfBFApMwNLBRgHpMfVYkCXgfzqr8Gl1PB0NMR2Lu514n06srwjD
	U1yHHBmlO07dWN/emqadVnvHCWBlj/yWVaXEqFA==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQoxuk6nz55iOmQoxXMoQ
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 00/15] x86: add interrupt latency test
Date: Wed,  4 Nov 2026 17:38:02 -0800
Message-ID: <20261105013817.719823-1-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH01EPF000BE94B:EE_|LY0PR16MB450305:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: ceeb114f-b928-436a-bbd2-08df3add7be5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|260925022911599003|260925021911599003|260925021311599003|11063799006|56012099006|261021123027099003|261021121427099003|261009223027099003|261102130727099003|261022075727099003|261026121527099003|261022105027099003|261026140227099003|261102123227099003|261028144727099003|10067099003|18002099003|6133799003|13003099007;
X-Microsoft-Antispam-Message-Info:
	yHn3XB81B0lt7TYPieDUzGVId5vos176eqiC205GenaAwdFE2CPcEEeaIt0aO6l+MHotm6X6X02zNXfhWNaeOKZCdrx/Rcy5q53QPxo1su/e64Z4SWUZHK/fTJeoDF9C6DcSKgXm88INGxY8LlJZQPmuX9YaSfImdUs8JuBNBpYAeo+s72zsPbOQZa0+Lzrkvtn+Du3YI9M6awPw1lzossAToIRA728vs+MONBhKVAIVi701NRBGRyMc4bYPtVG/PZByPZZK6+HdRVofX2rktL8uy051SEgE7Q7hFFH7ZKseCEwyxeUqf7jUiu4fW3z/msIQuS5kPyP6n+r1mUCJH4kqtMduXSKKcDZqcJd/afMA4NuxrWCZxIlO9splvXTK5jYTEjE2nTd7afAJsktNLs5wwZcAqBk5GV0PBcpbov28HjFGshKbuuoz82avWtcVuEK4raYIw/zaytzvwEktnlSmIz9wG+CakX1rQPadf5yhEvdXxhj6r0tC3lAFf7jepnIC8D+ne3xnVhQ7PoAdOjCFoPcPrRl6jMvHjootXPEDP/3yfAfM3qG7yGu1XzE5kjhGYsDUBtIf+d4kMf7XRNR5AWGr8yIt6em19/FEklPg7d8510fjrE0+bQ34PdLZwqoUNS6AwDJjxudY0aKe3uNxOAGQXC2AgkaJuKyP2xKHTkbg4mFY95tdt/79lMc9ruxtWBSvX+CUxe+zUtAuZQ==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(260925022911599003)(260925021911599003)(260925021311599003)(11063799006)(56012099006)(261021123027099003)(261021121427099003)(261009223027099003)(261102130727099003)(261022075727099003)(261026121527099003)(261022105027099003)(261026140227099003)(261102123227099003)(261028144727099003)(10067099003)(18002099003)(6133799003)(13003099007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	jo4sPQFbBm51JBxlp/mJIhtStjeIAYVfrp7pKjkN337nca/ReZYGR2vr1oDHhG6m6E1QwRBOKmNOwOv87jTLlXr3h6YLEK+xB1d+L9249TeBXkcEVlAGjqTBkRtYD8jsOkwMtNcJV+WOxcMwVdcSggWtX3GDiL5clM2Ue3figvmgruX3En4OeLbekfVnmOzMVFUVhyVYcDGU2Kku/EwYSDyPjYcJIhES4EN/JhOkPRihINYqr+lR7g1oeEj1lGDbE7A/5a2IieL+Ay47g89s0jdyyub4O/jt7d9Kp0hS5iXd+4y8ZZvyL6kXTwZJMfYwZQcXQ7p+byWFD+WzmzS68u7fc2Ixh2ljTwKtb+XQLQ03CPqOUXZ3fE/X9FnVE1dn+9UuTlnQ6aYGM2jczOt0FMV87yiQI0cXxQVdv/mTJPjiPerl8Pq1VEJCfmT7UIQk
X-Exchange-RoutingPolicyChecked:
	R3RB8DdD/PrtDi1/c7Ofl0iGtpSUzA0IyO+4kW8kUoPrVj3SMGR6d/Bkpdym1NKf/G48AmttrzX/w85YnqLgAP+VrKG5720E3SPcQzczTdILCUGRcJE6X1MYX5/yQEt8fuaEanywau0rIz9RAfVHYTF4E9dkM9Ync6EPOQ8B4vRnTRwHWCNbIb+lLqt2d1JqOJqMaMwcxAhXTQIgPIwCNiH812WwFkVl8UE3ZxluwPQ2Ze8bpC5yXPCRoZgoZFtpLtPOmGxsY0BEDdZTPE9s7OFEvCqQW1eT6YD4OX3JtUiYjKAPnifYbu/GOigtBIGnAWTWudgYRcfuTisohp7ERg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	LM3wkxT1Z6CHX4o1jF9G99ywHbR7ZC/glEHcFtrH1WdEW4CbiIX5CddWCplrhaJL6sVhc+cC8AMoT4pr/hsmkcL5KrN8yEVaGSE6GeHqib/MgdfFom1l0g+3q1P8jKNeUnrGAc39rbFQU3E7Nsj8gmZeCv5Ffy/pJPs3EGvfSPA8Q+ra3ASigOL6UNl94tcTliDXU993fI7GbnkVuCJMNIeA6zAatLNdhOmWoi/FcT+Vp9iIWceCnJRicea3YosienCW+Q7ZNf70IIc0lCbEg8SIKbteBP6+ttR7vIKTmlOaPzTKjtEv7KOp3LVHQMeFbR9frOaAG6EqWnqJF02t8bGshc7UlQXi+qTxSgGxTIRpxs2+6gad7s+ekM1ciCNd2w549XUWbIvvs7SeKgj9p7CrC5I22z1qS7bze1+c/QOVLJjp4atM50j8K5dTyyian4cN39oEGZpLWhNpNSNundsgJ+AnlpHSC841I2Vnd3MuMOo15bv8dWpDimylwk6PhXRm+fUi4ha2U1HrV65GsMf0mFbARjHhCly8DaZhl2s3MIiL2J8o8Ghc7qf+CSsEqBNr0/br31RKWZQSh0Af7GYeQr7XqmnUnQOrRx39wCTGkOP6ITd0J1wvCUQxhi5abxc6bvUEEB7tOyWGW49fcg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:24.9272
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ceeb114f-b928-436a-bbd2-08df3add7be5
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH01EPF000BE94B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LY0PR16MB450305
X-Proofpoint-GUID: Nw7rVIRUSXY1GuasFGmTsG8ecHOPzCIC
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX4+9OEqoHz5qc
 Mfx6J5T22h1N4YGlXQSlQIPqLtUZguwIJg1YFBfQxblrSPUtVmyEOUDbfYF6cqtAyoQAl8fMdkM
 7pA99W64eRhwGw+Xl8H7GntlXwRlfhe9LYFn9Su/h3co2WfQInYz
X-Proofpoint-ORIG-GUID: Nw7rVIRUSXY1GuasFGmTsG8ecHOPzCIC
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXwoX9Yti6WdYd
 3bprgIMoh9H+QUj9Z5LP723F+pkBElb6ilBVPGMXAMvDsCG1hSG6tcA0qqqoyCuajgM41VXVhAv
 gdu1hLRIScIrk8YVJgkZHxBV3kceHuZWh7mncnuNX9fHPhD1s3aFAeONg9mxpA7NVWPX3a+aIHb
 cmFLWfCqL+OMkrIj+QNGqMjuSjKgIGRGcQGmMNNKfxrS6YVwfIKi8NyGMaKQAUrR8Li393k/lBZ
 0miVSe3r9r4f0dwsoQn+uACxTeMzK5DspUImP4eFX/Y4WZF0PqvALe0KlDS0weYHntZ08gGSM2x
 fk33SS0wk+an42oK2dnHdgtVPf53KbFcSg8hCr6aMmFbLTfce7wzRLwOvHJZpp3b/gpFGyTKP/6
 QUAW45WHwLNceg43SQFm+8tVgvPUeaoSMy+I4ozDb7jqUP+iTu742wseOxRQ1+CXDg3O1d6jqjY
 OgSJbtn4MxRc8kGzcEQ==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebde14 cx=c_pps
 a=QjrP5IPIVlaYm/X31SuGbg==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=p0WdMEafAAAA:8
 a=6GFfu_wQOdvJcrVRfoYA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-c201ff/1793842710-F6EB12A1-11FC6F12/0/0
X-purgate-type: clean
X-purgate-size: 4326

The series introduces updates to XTF to enable a test for measuring
IPI/posted interrupts latencies required by [1].

The test has lots of dependencies, so series grew big.

The series is available via gitlab branch [2].

Complete CI run is available via [3].

Patch 1 aligns Arm XTF with x86 XTF; does not affect x86 XTF runs.

Patch 2 enables per-test Xen configuration.

Patch 3 adds hypervisor cmdline into argo test artifacts.

Patch 4 ports ACCESS_ONCE() from Xen.

Patch 5 adds simple atou() for test command line parsing.

Patch 6 adds missing evtchn management hypercalls.

Patch 7 adds XEN_DOMCTL_debug_op hypercall.

Patch 8 adds minimal measuments sampling framework.

Patch 9 adds cpu_relax() for x86.

Patch 10 adds TSC-based time management.

Patch 11 and 12 are small updates for setting up test environment.

Patch 13 adds primitives for enabling/disabling interrupts.

Patch 14 adds few more APIC registers for tests.

Patch 15 adds the interrupt latency test.

[1] Xen AVIC + CI infra branch: https://gitlab.com/xen-project/people/dmukhin/xen/-/tree/svm-avic-v3?ref_type=heads
[2] XTF branch: https://gitlab.com/xen-project/people/dmukhin/xtf/-/tree/x86_64-ipi-latency?ref_type=heads
[3] CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/3028917985

Denis Mukhin (15):
  common: account for installing *-sym files
  common: add per-test Xen bootargs file
  argo: export hypervisor command line for test
  common: harden type checks in ACCESS_ONCE()
  common: add simple atou()
  common: add missing evtchn hypercalls
  common: enable XEN_DOMCTL_debug_op domctl
  common: add primitives for measurements
  x86: introduce cpu_relax()
  x86: introduce simple time management
  x86: export per-vCPU IDTR initialization
  x86: isolate FEP in setup_fep()
  x86: add primitives for interrupt enable/disable
  x86: apic: add few more registers
  x86: add interrupt latency test (hvm64)

 arch/x86/hvm/traps.c                 |   7 +-
 arch/x86/include/arch/apic.h         |  29 ++
 arch/x86/include/arch/idt.h          |   7 +
 arch/x86/include/arch/processor.h    |   3 +
 arch/x86/include/arch/system.h       |   7 +
 arch/x86/include/arch/time.h         |  48 ++
 arch/x86/setup.c                     |  80 +--
 arch/x86/tsc.c                       |  32 ++
 build/files.mk                       |   3 +
 build/gen.mk                         |   4 +-
 build/mkinfo.py                      |   8 +-
 common/libc/string.c                 |  24 +
 common/statistics.c                  | 364 ++++++++++++++
 common/time.c                        |   6 +
 include/xen/arch-x86/cpuid.h         |  26 +
 include/xen/domctl.h                 |  63 +++
 include/xen/event_channel.h          |  13 +
 include/xen/hvm/hvm_op.h             |  17 +
 include/xtf/hypercall.h              |  31 ++
 include/xtf/lib.h                    |   6 +-
 include/xtf/libc.h                   |   2 +
 include/xtf/statistics.h             |  23 +
 include/xtf/time.h                   |   8 +
 tests/argo/bootargs.in               |   1 +
 tests/interrupt-latency/Makefile     |  11 +
 tests/interrupt-latency/ap-asm.S     |  50 ++
 tests/interrupt-latency/ap-main.c    | 164 +++++++
 tests/interrupt-latency/ap.h         |  12 +
 tests/interrupt-latency/bootargs.in  |   1 +
 tests/interrupt-latency/extra.cfg.in |   1 +
 tests/interrupt-latency/main.c       | 706 +++++++++++++++++++++++++++
 31 files changed, 1711 insertions(+), 46 deletions(-)
 create mode 100644 arch/x86/include/arch/system.h
 create mode 100644 arch/x86/include/arch/time.h
 create mode 100644 arch/x86/tsc.c
 create mode 100644 common/statistics.c
 create mode 100644 common/time.c
 create mode 100644 include/xen/domctl.h
 create mode 100644 include/xtf/statistics.h
 create mode 100644 include/xtf/time.h
 create mode 100644 tests/argo/bootargs.in
 create mode 100644 tests/interrupt-latency/Makefile
 create mode 100644 tests/interrupt-latency/ap-asm.S
 create mode 100644 tests/interrupt-latency/ap-main.c
 create mode 100644 tests/interrupt-latency/ap.h
 create mode 100644 tests/interrupt-latency/bootargs.in
 create mode 100644 tests/interrupt-latency/extra.cfg.in
 create mode 100644 tests/interrupt-latency/main.c

-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473479.1681136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQz-0008FJ-SW; Thu, 05 Nov 2026 01:38:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473479.1681136; Thu, 05 Nov 2026 01:38:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmQz-0008F4-Nt; Thu, 05 Nov 2026 01:38:33 +0000
Received: by outflank-mailman (input) for mailman id 1473479;
 Thu, 05 Nov 2026 01:38:32 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmQy-00080P-Id
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmQx-001xPV-VO
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:31 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdddf-8faa-0a2a0a5109dd-0a2a450b9320-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:31 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde16-b7e8-0a2a450b0019-94a38ff1cd52-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:31 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mpH5226606
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:30 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013000.outbound.protection.outlook.com
 [40.93.201.0])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurcm5-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:30 +0000 (GMT)
Received: from CH2PR19CA0009.namprd19.prod.outlook.com (2603:10b6:610:4d::19)
 by SJ5PPF2FE4C64A5.namprd16.prod.outlook.com
 (2603:10b6:a0f:fc02::acd) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 01:38:27 +0000
Received: from DM3PEPF000265B1.namprd02.prod.outlook.com
 (2603:10b6:610:4d:cafe::c) by CH2PR19CA0009.outlook.office365.com
 (2603:10b6:610:4d::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:27 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 DM3PEPF000265B1.mail.protection.outlook.com (10.167.23.40) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:26 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mNu43091274
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:26 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhms-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:26 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmQqxuk8Wz55iOmQqxXMqf; Thu, 05 Nov 2026 01:38:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=4ya
	lAjYsUxxsmkW5FJo/Dk9J4B1KdHhLsXkLz4WvQu8=; b=nz4paN+3cLHRAD3jh2w
	EoZSYcRtRcb237l+9YaPKqHnaXojf4sCwgWYAfoz5vYIUerMKT+fk7rsEQYHdUDj
	sEJI0Rqu6Vm7sdFu+/rearEEn2TfF3S/LYm2m9jVMJX6mgkCM7bXtY+0zwoJj3uL
	GXOuz0E7kkidRlEIxTH0p8Cyilh1PLwtBgKv0vKc/SL/rDj+aeD9kOB1TRhjlNs0
	ut9FA8uqNccC8OAl7+cCBGe+6tmRNhPYYNzV6hwf0kSmrITpZMQJLcPWG0UG63xt
	ugjV8qv5QYbAf2SYogwyrLNGLyfQ3a0kr6iqcBQgckud+k6QipKq0YYUjbnFEe0L
	eBg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zQi+B2jdPU9X10rSzSLlTbZwXGtXYRFI6FUrX/Bnwo6VsauwMAwPpN+9GikDP6EW8n+U5rNsBk+aIAF6WB9EX9d7Gz23tUF+rSN6vUdn+xqtqhfxAtlZRn8NTUN+C4lXNMqCPAmlKyVfQozanIr8JA2FCvvHM3plaoeQqg+5DdpkzpLJgg4ESZ0OaXAyJ9j4bMl3+n1iCOIm8HpIinxqhCr7cAzT1Haao7LN8PGpgPxMAQekISTz8zAsR2blsQXnOCCSOoAf136vYk6rmifrnsd3BkCopQ88jMV5v3IwPnziLm5hR5rbzml1BoXox8RUyFmD8SfRxLT80MwpyLbzuw==
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=4yalAjYsUxxsmkW5FJo/Dk9J4B1KdHhLsXkLz4WvQu8=;
 b=BBMRVqSj4Cb2HtJWSQ44ys16XMI85vfz28yXVZrekAP5DcFMyvSsJNDdsH5VvMAY3L4dKmx/oqtuU8RjbX+GFG036NKIM+V+meOy2v7pntOlydKiw69c3rXIzdWO75klSi18kjALH0+A/ObRUMFMyuKrVLYseIV2aWHh2D38fLRXWIkgGBYsITxktBZgmPh87B2dS1syq4iE3YTWce6bZdPuDoNgWuqeVaKorl8LCls40q4xJfPQ4LuAqKoPbxZCBoNihB6TKRksJzG4Mb0D65H6gELeJhQrCM7HFROhMczSZ8+0PL0thBzRX2ufcGV/el3USk3MRv+NmcHBV8ygyQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4yalAjYsUxxsmkW5FJo/Dk9J4B1KdHhLsXkLz4WvQu8=;
 b=TcNMojm5B9SrB1vcNxh3KGaJ6ozTMk9XEu6XvLAvQQ6L92YBvEk6ytqfeAMGIbI52RllqktmGAQFvprP1W3ZLSq3vCqcRCICrOdZTro9MsmTYK9wVrQksUWq1Es1g8K+8VBQhgcM4ojmHnMo1HkA10lNzsBwEIsoHEQwGcwjvZQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=4yalAjYsUxxsmkW5FJo/Dk9J4B1KdHhLsXkLz4WvQu8=; b=
	gqJ5/fqeNrY/IREJnaUIsFqddDBWb33A/VSxQNkRa6ClYJwo8CgFkShpbpNJshfw
	ul81c1IQXJ0q/yO6itRjXwHe50jdguLr6RPqPDlp7nB1dFoyzScnNM7dnJbhi+/d
	W338C0pvZxEz0wnGsqK5fUv+uOAvg3L6sMMi0rB8K1/Y2MOZd+mZWxuQ6WRKZX3D
	Wz9ddNm+pUJ6TxE83Iz8x21y40ZrZbuqsfR4h+/WPtkPAAWLyq5asGWr2Yv4XcgH
	FiuXzCfjqx42Ax0wQV8qCSshGSJGeWi0eaniQl4mBXMRpEUt2LSgXoGo1ieTYtcU
	pz0q3BQ/l9qyxu8kXP42Nw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=4yalAjY
	sUxxsmkW5FJo/Dk9J4B1KdHhLsXkLz4WvQu8=; b=rjBwoOF7KAmZahHahT0yRnG
	bMkBliSrTayniHTGiyxjapKE+66vazzKaFjetrr3F2DHJmZGSJzYzK2aSqq0pw9O
	mXuDYyuH03rRMBf/tCeP9jVYClxz1ZeYvmrlrhJCkq6pc7F6euMiTnfjPh7A+IAg
	TFnkN2MSa6b6pyBgoT0Ut4ZRDFdkZ1OgumTx9+ufyoyMQaoY0NcYrkyxoyRfS5oQ
	F2WxeKFVylIdqspPiwe/JguZCzuginRuj6a15lCCX9OHMruSeFQI9nQxapm62J64
	TbadVv0dweKMV5u2z/ILT5i07pvJUe7ZCza/FWSd5ndYPSxNc6oIThkS1VGr4DQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQqxuk8Wz55iOmQqxXMqf
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 01/15] common: account for installing *-sym files
Date: Wed,  4 Nov 2026 17:38:03 -0800
Message-ID: <20261105013817.719823-2-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM3PEPF000265B1:EE_|SJ5PPF2FE4C64A5:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 2b7a2f00-1f42-4606-9feb-08df3add7d25
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|10067099003|22082099003|18002099003|11063799006|56012099006|261021121427099003|261021123027099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	AQ4odqdERB/qgaWCbb3i7duMr1Vz4+7cBIWLHeykhWrr0yQJtCRSMHPBG3MNhaqCIlle9Fzv9+FOT6OnDqYT+ry1byqbc9pvQQO4RUg/dtc/dYGHNYHyfQVmMCJEij8Hk6CIugO31iYm42BiBrxLp4t0UjWqyLrst3psnwsUiOIuubnu97ie6WuU3zqAA9F23z5TyeyqMnavZ1DJ6O/tH9lcPRZ9s2dw4CR11pMph1VuUJlNFjYXs/W81uw5QJsmwyPQT988Kn0hGdJclGd43EYkA6JOaOdM6Y8y9pvNNFCGqv5i7TDDo3/9odNs6YcY/0u2/1h0M4MWoEdnDedEYHbbuANTOaxvod6TQic8WgqY/oFpvvJxTwj7tHg/QOxedsbFkSa1hcuGSdStkH0+tNG0k4ricrttKxRoRk5yjrt4kGgutjhX1dVYDdiUxIy0o5IrRTFpYYO4uDeXWGn53pNZGoBB21uKMPL45x03L/tHPsr7Wk196MVuejYFE7T9HuI5dfrjPGCPNE/cK5+Cs0PAwx9WZoHESLfHDLJGI+HVl5dl6QJFz6PuFZ90qqd8qFCyWJY/Rs1i4pvgXI1JekLDclap5SBluERoOEArD/LT45r6Amwxj2pLxiXREwfvs+P8QbniX5hJbZbdW3C3GhWSwkSAeKaG0ghH+nbAe+/BSsyEXJx39YBSS7dINinxmWwDLElrBZiqT79a52NpPg==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(10067099003)(22082099003)(18002099003)(11063799006)(56012099006)(261021121427099003)(261021123027099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	0HEZGCQ8lgt1o1eO1KWLN0vsdmbdVjLUpccQcB9z/om+K1smu21uPxszB1X2ZTV/C1daLdUb0xvB8DjBA0nrxXlAoKHMgljUiDAibj8d3a/XYZaaUbHq3+rTp+EAPQ+nNuX2v7je4+/j+vTjROiG64YhKtJ8pVrVKLCgEg92jtIJESHwHqwj+rfe5Z7OIHqhyWGPVYer91vTxGvR3rN7fyuIQXLW4uuENSuGABHbAWfX9Fs3zIaj5e1n/rLV9BsK/vNNVE79tHgurdv8QWRoG1u9BFo5tEd3w4fMLsytUghzJSJdMhd8xf/fiF4zzos4/MOjKtU3MbqZ6RECmiyk/UEg+jLGwMRVKditSKpS+Qu47N2zN8uhIdYsZyxvdBmNel4db+oXVcQneeB7N8FY2n0zXcngbBQnuNf9vmw0GniknwbWl8NLW07KbD9IlwmB
X-Exchange-RoutingPolicyChecked:
	RsJ6H1G6mHgowV0h72TOO6aGni3JE7bxR0CgjgidJMvDEU2+U1br08iShuGlPKa/nSBfHoMZgBHDVEZcXNPNsrHdIh0cDZQfV0oVFpselDWRJ2ovasPps5idmo/4FyZPJWMtuVszAyf0w/LqlI7mw7DrIWrad+wb11ISr+yv7kctYkMtauw6nnEvAXI35ND+EegbWtjnb85vRL0+ItuOcNw0oyVLQVJPCNCqMCww5Rj+hJHMAmxzDc12ehneEIWD6QnEuz4ANbByFFMvsEtWKDjj9VNyVbEiBWqCbDvEM/GXjs3dd5HkmBBX5NJ/hIs6NR3tEUOuoeVCQ79f/sHU6A==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	2vg3vut1LEGTTh4yzXRaBd2QBjKKqgqxe812Y/843sMHyvcluNb7D5nrcTvsHp5XjhH+ulPAsYed2DPb1a7N5H6ex4PqsREoK8RWsd9StvagcMwenKyeBAUUCOIFqQ5eR51py3DBFA3HXsOjw2zos1g1h3Z1I11mpkYDjoqt2/KsrjXxJguy85jSGmNzpjcH2v00j8diLgJMhBJA892vQrL55OAkUzUOqLaCIFDcFuwty3CaJ33SjaieW1KDWOGMwDsZgPdFyD1p5x8Ou6AnHhlo3iwRfxAF+7mwjl7yb0Ia3aI08v2Ml/mkqNZyCUBRDLuvKN8UUonnFQ2sSPr0tbFsGRPeUziC+fi51nvL771lxySK9CvybYaAkG2VbW21Y18dEnzrXLDL2Jnpeop9B4SolHXJ75jUkuTyCVlfuLWJgpRnn2FauxZoPBlr5CkUHsCZmzoxhX+qS+8GsQyS2Wpmm5RdTsyquwa+kIxRjkF/reW8mc7ENG3MoY2OwrFHs3DbhV+mQHS/QPEmwNDQ8lYaGFZTCD9sMyu/rweH3j7Knl16rlRdv30Y3jSx48frGE+eHi1d6F5XMaj7aBrrEO1aP0ZM0XCe8+xaGBCPnDqt15w46KNr5/w65WhjN+CnQDyNbp9m4yHiFXNhrk1mCA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:26.9842
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2b7a2f00-1f42-4606-9feb-08df3add7d25
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DM3PEPF000265B1.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ5PPF2FE4C64A5
X-Proofpoint-GUID: YGHU-ZAHaWeqwi2chJVMW-MbP5GScavW
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX90WGtDypZBf1
 K0Cyrccgb0qg0ww0qevjHbJLNNgCattqnJTgKK1Q0FX4LvnaZgNy9JZQvzNJnlZSRJjH/cC6yr+
 DrhgCvnhMUScsr8IECISHGV6odYk9DLnl9iJMNwmQwbD6HfaBX2l
X-Proofpoint-ORIG-GUID: YGHU-ZAHaWeqwi2chJVMW-MbP5GScavW
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXw768euobHN7p
 Ykx41Kp3tlsEvJJcInzEV1YFlgZGwseUwfZy1kF5nlT1diFaSnlaDpfEFoKWNRZXJbNBwqTsjG4
 KRBskuJefPtq7QLiBN1KjSmUdjDLpeTvWI2SSVmGo2EiVzS3d628ClRIGoMsVexfIsNY/438AMC
 QiXzA+7tEkyRihMCb4YGxZ442JAAtmEQVuTdtBt3Bv6bWBu/Nb4qlygK23JiMwhECfDO9t2VHoV
 523+9FT3C+wGro0KfvOPsuYl/odL38k5d/CrX+G7/brG3sr+Yt7SjhlSKXHMkmuru9V2c+i69L+
 04/fEzPeqm2AJEPGTV2BcEvysNuKeK0+iULImLLsFXPtTXCDQ3ZKCTBwWiCc/YJWTFd69Q23zWp
 +qS2ulq9k6oYAigk99b2BnGRJDU+icdAwz9IOrIn+KzHFv6pCzhCzH9qV/9bnzuTYDFW1O1liVG
 RkhPLrXylFeuXfatLoQ==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebde16 cx=c_pps
 a=snd9/+/+5efdJOckOpJmHA==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=aL_kcGaodeMCETBUHCsA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842711-1A0C59EA-080E2E59/0/0
X-purgate-type: clean
X-purgate-size: 853

From: Denis Mukhin <dmukhin@ford.com>

Install *-sym files to support XTF packaging across all supported
architectures.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 build/gen.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build/gen.mk b/build/gen.mk
index df474a121de9..8c400e6595e9 100644
--- a/build/gen.mk
+++ b/build/gen.mk
@@ -78,7 +78,7 @@ test-$(1)-$(NAME)~%.cfg: $$(cfg-default-deps) $(ROOT)/config/%.cfg.in
 .PHONY: install-$(1) install-$(1).cfg
 install-$(1): test-$(1)-$(NAME)
 	@$(INSTALL_DIR) $(DESTDIR)$(xtftestdir)/$(NAME)
-	$(INSTALL_PROGRAM) $$< $(DESTDIR)$(xtftestdir)/$(NAME)
+	$(INSTALL_PROGRAM) -t $(DESTDIR)$(xtftestdir)/$(NAME) $$< $$(wildcard $$<-syms)
 
 install-$(1).cfg: $(filter test-$(1)-%,$(TEST-CFGS))
 	@$(INSTALL_DIR) $(DESTDIR)$(xtftestdir)/$(NAME)
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473480.1681143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR5-0000Cp-4I; Thu, 05 Nov 2026 01:38:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473480.1681143; Thu, 05 Nov 2026 01:38:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR5-0000Cc-1U; Thu, 05 Nov 2026 01:38:39 +0000
Received: by outflank-mailman (input) for mailman id 1473480;
 Thu, 05 Nov 2026 01:38:37 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmR3-00007y-8W
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmR2-00E0eP-LW
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:36 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde1c-2eae-0a2a0a5409dd-0a2a450b9526-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:36 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde1a-b7e8-0a2a450b0019-94a39217891c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:36 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mW5o1469725
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:34 GMT
Received: from sn4pr2101cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11012042.outbound.protection.outlook.com
 [40.93.195.42])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk51285-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:34 +0000 (GMT)
Received: from PH7PR13CA0013.namprd13.prod.outlook.com (2603:10b6:510:174::11)
 by PH0PR16MB4296.namprd16.prod.outlook.com (2603:10b6:510:54::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:31 +0000
Received: from MW3PEPF00001654.namprd21.prod.outlook.com
 (2603:10b6:510:174:cafe::27) by PH7PR13CA0013.outlook.office365.com
 (2603:10b6:510:174::11) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4 via Frontend Transport; Thu, 5
 Nov 2026 01:38:30 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MW3PEPF00001654.mail.protection.outlook.com (10.167.249.198) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.0
 via Frontend Transport; Thu, 5 Nov 2026 01:38:30 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mZU43108458
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:29 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb3b-13
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:29 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmQsxdLMvmeVDOmQtxZq0N; Thu, 05 Nov 2026 01:38:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=WQw
	UsoGgprLH4OGDgy2XzFRPDedseFXNxlnsn+UVQxo=; b=JWQIGfQS8qJKoqTDGcw
	Uk8xafFhO1ikql7obixfUIEjO5MSwg3ynGu787fGdjlRHTcZ35LtW1nJ/O7oA9xq
	AHa2mAVah6ZvbtKY1htTQ0NDjSQ88RDTZGjvdFxmZUXyygU9Bznlq+uWEP49aYCz
	htUvRAg+NfPY21n2n6dIu0PWSZHVrh3T2OZS2ne0BrEl6aQibbWMr+Dk2TT9XgfF
	KadWjPEjdD9Yq4oYKJMJe5AytYfB0JZWStHlwtv3jKzf2J6TtRmo2FFqZf76DukO
	N4D3zP4xQ+fAgJEi0j0g6nioI1cSHh7UEhDMLOyi8O3/Hi/KECE/M0HYtkqzkDKa
	1vw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wVZphTNTGSK/IR2XcueTZxjqmtY5V9hI/ltXf5r1KAhf/B1VkywS0z3vDUFbved5Pe1EKXW88UVfbA+Gj0q0PaNAuahZ3KoBmNZ2v+LLrDVSaXA1Nn0VFj3o88HrKMdK+A1LmvGyaD7rYlYdliXQjMKz0lD7mJ1JPVQ2AsS+yRxbTPy3lAfcBhld0QnWOEmUTRXgs7mZk5zlZfmEoHtX/OaDTio7TO+2QSJWFM1JgW2+LT0XY9R9ZYCoov4ams0FQxgzczvFeR8hmJrFi6Ts3fdBkCV/ihxxmrS1wHoSRbBkLaQv4lbAXVTPXusWxHnwCIGwixMJKa9h6Ux8fArCPA==
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=WQwUsoGgprLH4OGDgy2XzFRPDedseFXNxlnsn+UVQxo=;
 b=JSXv6DAV4al1kggbqwgnFPGDc+LYoy3SIdYt7sUeJ1qVxlTDdTKFh2Df605/tD6SKQ/Tdc8GkEMufHbHeR0husurl0f7I25aRS6NBhRGlbvoX7Pm40I+X3j/9zygVwG19HvxivTeo7MpJia2o/fqjIHkpClOxzPw9s1+nHKnZ1YGU6p3mTIAK52CCjth3jsMkgCJ7Fwf6SBOwibq4Fw9u5jfOK/SSTwaNfLw8UORGFmT6jOBbNbCL3O1F/0V0BVwuldaBVNN7p0uqyiQnXIWdVC8DOMFYwUXYoUXfj5+an4CuQi6xmf9rKCJfAIKURxblna0AivC8ooi01ap5D9Zjg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WQwUsoGgprLH4OGDgy2XzFRPDedseFXNxlnsn+UVQxo=;
 b=ID3lDvextgV847XCnB5FfIJC7Hgzly59Ec2J6gbgOf3gWlEOL6ep2abLUsuCdNPneuW55VTE0GD7jgZ2tcCCY+2JLvIVa/N0+mbcsd+U7V3TLGF2Y99+os5jnNdwYvZme7wRIFiFQ/kmD36sFegyoOpcc/BOHO5U4wrXh9VGFK0=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=WQwUsoGgprLH4OGDgy2XzFRPDedseFXNxlnsn+UVQxo=; b=
	ZzobaZWhGc1AKOodifzTw4g5GGb/giUKnjVOKtrBgsdkM2YIH57QVRU4JGJdSvE2
	eULLEHJ7LABjxUwLovHPX3Yh/v66Mtkv3K2/ONqJ82ug4d46tHpjZxxltZq4TKNK
	Yn08OVEXN/Qci1jUzRNgimiaLciNyo9ZssXjDw/yp7cdPHt3dt/lb5TlC2HxV7Yo
	kwMJJ5Q0FS5ZX/uPznmeOGFGIXeBMaJobu9tqyXPSPtVWhneE3Exy++VvEJ5YHz1
	P2XW7Jq6nMLEsNT1Di08bSihV3aP/24JV3VouzIiy2GRR2F1SwiZX5NGuABiakty
	vSL+j/fTopXLAwFXu5RN/A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=WQwUsoG
	gprLH4OGDgy2XzFRPDedseFXNxlnsn+UVQxo=; b=KawqF345Mpk6L6510Dc3Q8w
	VtIjjJiPkcF9IcJZQgIbEOrlwX/5sKWlHrMzpB7v0XGxyN/+SDpq+qLNJotIl4G8
	2wrzwYjOfRhuxsT0jc2H4+iyoc8NjbE57AWjVKOgqQrxWkNSgCnZHh0+WvpjLQ3O
	fKOrvWLKUllecFK92gNeHEdguqL+jekm/+uFrNHs6yKwl1r1Ho/5z7U1INNvlLxr
	mHIVgShoerbTNO7+lcZuENf/z+EyC3ST9Ubq1D1htgMbUlL4VkqjG2ud2Lt5IwRU
	rsfKyEsoeMP9CgJ9cKex5GEJnO2yFmaZAlZ2ZhP2ky+6DBPkCArPOwFw1gul53w=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQsxdLMvmeVDOmQtxZq0N
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 02/15] common: add per-test Xen bootargs file
Date: Wed,  4 Nov 2026 17:38:04 -0800
Message-ID: <20261105013817.719823-3-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW3PEPF00001654:EE_|PH0PR16MB4296:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 875878dd-4ef9-4547-a9e0-08df3add7f51
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|56012099006|11063799006|261022075727099003|261021123027099003|261021121427099003|261102123227099003|10067099003|22082099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	JUhEOd2s1m+bpsttxFTqPnsDW1KYHPiJejsgUQrj3syOYD5DijiKHxUHEkC+tR9XmkYSa/Mpg89VJ8lBJIqjkMQD+r6KhJJLSFKwI4Ksidg0hTNuEDRBQq1ElbJFU09EGfynmMVvFyhG/4PY94JCOl8ii8NNgaR2ENZdfjGdBubQe3G+u48nsDXLHh/Xy+SiC7J5v2Np5+SEa6L3Qf742agY6VwxCvt8YSOkMEoMdIuJE3cIGbwsFAnYun/r5GRcjTMAQEkY8wQvgH8tSABTCoYG9LwGfcGg7i09idKDWALSunydgrVR8Cvd0RD2qs1NaV6swOMCtQSvaFEsdbU21jdSH9CjgZtlu3+lka9MOyXROgp1luLHWTAqdqnMAuR2k2xFKzFoslSWwr172EnhVqlwpi1iy84pqjT8rK4eRXKMtx1WRAEb6S3w9mqIIRrK9ZhQwobwu1mPKKY0fr8ZlsMoGGoQMPmkflUEayiIwKlhODjkCJ/OuJXDGcfZYAWZYECmXvLAxGSdx4e7xmYny8W7NUL+G0LxMfFI25Rti9qVxuLLm9iZ/2LrFbdsvi9/Bkqp5DAVD97cnGCEXJ25JSgrmqa5+7fGkayKSXT+WgsygL0pfFL+y7bxIIUMkKAnzj9VYRB+AMPXoQQs4xUXs9bUeLQpLGzp6niknhb6pfzTXVeg2F+u6X768Mecd8CftIlqfNXxvfY6eIASxtVuIw==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(56012099006)(11063799006)(261022075727099003)(261021123027099003)(261021121427099003)(261102123227099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ol3w9s+t8WG5nWyQIEbGZ70qyKFKoSG4fmk0ngRzEXvrEOfi85YOK8Gk20OeKRUynA4mXHwGoz/2HtOcqbN+rI3gVopn/X/sn4z2RwX33VfuEtN7pL/tOgdSU58RBrJu82FXyryol+n8Z/m43eF7ADMaQwxxzdUyPQ1AFtgAphfhjgbiGFaVeQ0XW7k6VD9fD358F7kii8GB4Zn1YygAXHFu+oexXR1x9zh/KI44N/1fg9XfGgwWnEe/rrooHJhCMFrv2kI+B8SFxaV6mNE7w0Z3zkypDXao90zOab3f6tFJBTDL2u34vdp6BoIjzSnjaAyRDcdTekXwytnOJBppgCmPRky02AVXR1tgFt8eg1p7yU32c06s4kUqNhite6sWyBs12FxIiSCTW8rD89BNeCXzJRjv5L960aYfQlERyoY0axELJOBkP8baoTOEkvbE
X-Exchange-RoutingPolicyChecked:
	WxB/QvRc0vB9mz+fs08M+FGvsVJNi6jM1T7Xh77i3hYgre7OTPPwoa4Cx7bTcQBc4dPh8AVFLjrn9cmIKqmi5Q0KzPiAvGdVqxr60pO5nbGBR4PpsovqPi2sOyS3blvt4GIvX6UiBZSPr+70vejIIQWhsTB2S0448P+e/QdQFO8YKMnlWP6H6PTPs9PUjO0tF8PK09MhEWxws9S2JFZWi0utOWZtypfdjGBIO2kb18/4ydCvYYovnPnEebugyKMi3WxejE32Wzibmkm4j1CFdghKJGqznzfw1zhYQPaHvau15PN0k7McBOd3HtF1Iump5+lZ8Bqe0/sOJvUGyni4Sg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	ddJbrKw/LFxQF24KdrgCZQitfXoZtE+KmXrgPD3Ntr2fvCihaGiQW+kFCfSkc0GhBF9/rxZNrDeukeQEEeINy8sbEXRYgbaorxsxgLI+ADL1L5ERqOKf65y5Xx3zMToPRAxTrPPtE8HhkkE+lGRH2i4w3E7xHPBEmy6DsCDEiWhTwU2Tp/ftTvRqclavjDhNiefUaHVaGbHjusYglpuLr3YaMnbjl5dIo2pL0BH4Wd7Pd1f3rBNgRHB+eHd2sx/fuofEvsSpd22xN7HH/DxSHEymB1lHWtLxqng0E258jKhyBPI+qMWspIakixt0461s/DJnhSjDV+AFGrB9UbxPbhd0JqqywpFH1NrqNeLKdUzLsnEKuRMccFk7yUzkyKvShCrmvG+zM2G1NPDOX6yC24oZI4dklgAdQdgRSakbfpK5ybed0dltGPma0lHmWlXgufEXVxTOkmStA/+n+PBfz2OCsI/9PhfAubSX1C2cLVBJhSRfl1/LC+XmwIomaLHI++ZIkrDsEPydizfow8GxjbtjzebbH4rn0/yUTJJ+TmRYcWKQsiYoXeny3124GuIE/imbc+QkY3/axXXsm3MVxrWojhCxylcNBRGECredeL8K76uaKyOF32FKm8IIPiYWluB/Uj5uIFuFy78QUxd71w==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:30.5280
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 875878dd-4ef9-4547-a9e0-08df3add7f51
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MW3PEPF00001654.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB4296
X-Proofpoint-GUID: FQd21s2VIJfsWvBx10bpD-HmDFWDA1Vw
X-Proofpoint-ORIG-GUID: FQd21s2VIJfsWvBx10bpD-HmDFWDA1Vw
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXxonOpWPAyjE1
 DSpB4Fz07DMKNGVL0NjgwGbZT82Fc8uPZrYLs988Z4lmeYLyeIYRwjdRwOq5RCEUut+JdVQjZw+
 Yj2G3Iv3e3Lht3ASfSSCu5y6DaXOTWkagfm0BtLaA5AiPRhKr3lk
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX3H6AmtpJlavI
 o8OobDQwuE7dyGlU/EfMpgpeP5pmylT1/PRC2oI4UFP+q6pi1BYUKqxyZp9Agug5bkKwQBfyiuA
 mXM400er+onCXZMmTLha0+GEo0At02KD+ttlDT+qsQqrHGpDxB55z+IFYXHmKqjToiRK+ukrzyd
 A2vqNKhvY7hkZW7L5Tgdgmzs9tOBK28HBB+6vMAo6qIzqlUqzixkmKzWAcIrdmKBq6AqGH0mt95
 92HZicYJFe/ClrFn6d3X8XNAWnsU3TvRuMcefN33jX6yo2J3lGztNDu+y2UYsOvcXdVNV/nxncL
 DnGSEnfRTSH5BZNQYa4f8vNhXltB1nXDX/7CczD0Njv7ODyRS6wZcxK5mNBAvjvCCxdoJnaSewn
 5dcKGi7VyW8hzBuSLr4hGfRP37OswjjhUoZ5xGjIeGMvVdPlO4Z2d7bGcuXp7Y75W8XOrgJPWUS
 OyaNLPKH4lCkG9NAqwQ==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebde1a cx=c_pps
 a=WIVU+UPliRI2+OFOdf1Qsw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=X1Y2loGY_Tf15Hl3f4EA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-42698a/1793842716-AA6DA9EA-FCAAD760/0/0
X-purgate-type: clean
X-purgate-size: 1622

From: Denis Mukhin <dmukhin@ford.com>

Some tests (e.g. Argo) need special Xen configuration to run
the test. Add support for test boot arguments to mkinfo.py.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 build/gen.mk    | 2 +-
 build/mkinfo.py | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/build/gen.mk b/build/gen.mk
index 8c400e6595e9..999c2e0dddc6 100644
--- a/build/gen.mk
+++ b/build/gen.mk
@@ -36,7 +36,7 @@ build: $(foreach env,$(TEST-ENVS),test-$(env)-$(NAME)) $(TEST-CFGS)
 build: info.json
 
 info.json: $(ROOT)/build/mkinfo.py Makefile
-	$(PYTHON) $< $@ "$(NAME)" "$(CATEGORY)" "$(TEST-ENVS)" "$(VARY-CFG)"
+	$(PYTHON) $< $@ "$(NAME)" "$(CATEGORY)" "$(TEST-ENVS)" "$(VARY-CFG)" "$(firstword $(wildcard $(1).bootargs.in bootargs.in))"
 
 .PHONY: install install-each-env
 install: install-each-env info.json
diff --git a/build/mkinfo.py b/build/mkinfo.py
index 30f99832711f..f1c70f3c444a 100755
--- a/build/mkinfo.py
+++ b/build/mkinfo.py
@@ -2,15 +2,17 @@
 # -*- coding: utf-8 -*-
 import json
 import sys
+import os
 
 # Usage: mkcfg.py $OUT $NAME $CATEGORY $ENVS $VARIATIONS
-_, out, name, cat, envs, variations = sys.argv
+_, out, name, cat, envs, variations, bootargs = sys.argv
 
 template = {
     "name": name,
     "category": cat,
-    "environments": [],
-    "variations": [],
+    "environments": envs.replace('"', '').split(),
+    "variations": variations.replace('"', '').split(),
+    "xen,xen-bootargs": open(bootargs).read().strip() if os.path.exists(bootargs) else "",
     }
 
 if envs:
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473481.1681153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR7-0000Th-Gi; Thu, 05 Nov 2026 01:38:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473481.1681153; Thu, 05 Nov 2026 01:38:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR7-0000TX-CP; Thu, 05 Nov 2026 01:38:41 +0000
Received: by outflank-mailman (input) for mailman id 1473481;
 Thu, 05 Nov 2026 01:38:40 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmR6-0000NC-2z
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmR5-00E0eP-Fj
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:39 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddb2-2eae-0a2a0a5409dd-0a2a450cae26-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:39 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde1d-f479-0a2a450c0019-94a392179e10-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:38 +0100
Received: from pps.filterd (m0384718.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50moFX966677
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:36 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010062.outbound.protection.outlook.com [52.101.46.62])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrc5ghvrb-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:36 +0000 (GMT)
Received: from CY5PR19CA0075.namprd19.prod.outlook.com (2603:10b6:930:69::19)
 by SJ2PR16MB5540.namprd16.prod.outlook.com (2603:10b6:a03:547::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:38:32 +0000
Received: from CY7PEPF000000F5.namprd05.prod.outlook.com
 (2603:10b6:930:69:cafe::5b) by CY5PR19CA0075.outlook.office365.com
 (2603:10b6:930:69::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:32 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CY7PEPF000000F5.mail.protection.outlook.com (10.167.247.153) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:32 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mctD2969098
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:31 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrqv-3
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:31 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmQvxwqHuDnFpOmQwx5u65; Thu, 05 Nov 2026 01:38:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=p1h
	Rhj/Ub8yOyNTkQn1HHcuh/Gv58YB72bl1ZifmJn0=; b=EQo0xY9YUIq0omHjObx
	+EwLjWbvAS9c8s8aJXBcVlzQqKkfivEnQhMflg/zZoQe8zoLroXB9SfPFCUE6kBq
	wfesetOLRMeqPNOsrgsztILPLsyoNFYkSsmFloBEwfjiby1h0q5qPUiIqBTYp99h
	sHv3Xj9Rp+tmzeD6tJbuhTzAwP27+6S3wr7xCpGKo3G6IMEfZ1LLoYKhFuQrmo1J
	4RIs3xNKqPXY+9csPWj+cXMo79cdMchfa3jW+gk7oJcLc1Ff4dzguK8kDL1EeqMD
	OECbdG3QOhrPi9CPmsknajX59SolAccybUFqaB7VkjbONFifb+24dNLXJQOuyYu/
	rtg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vESKsS62LR8FFrd4xbv7NzqKWKePFB2Vae9K62d//Y6vc6w9m8I19XCd1zrbcByBhtvnkZmO9K2RrEya6UI3rZ4+SPV4Ff5IPYIORJa6PCPybTDzdvDUlNO0C//408H6c1mqJ9nwJd6K5cWXj9mBuWAJ7ZRyq01aVzo3T8LbGSkenYqlvlP9vVA/TDckgWoN9+IMUU5u2kgz0UFNa/IPx9Mnpb3cow5svWz7LSu+i/zTiBL1RvJLfH66i7HR/8VA+lqmx/tcl27763cSPFv2IXoHn3+ooEzVIGA9OYy1EC/k7H3h4nlbAFnfLXhgiAlt5NG4UbiciZ/5XjMZrj1z8A==
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=p1hRhj/Ub8yOyNTkQn1HHcuh/Gv58YB72bl1ZifmJn0=;
 b=gfLRiijsOOI3WOmVk3RoaIav/BEtH2nxdfyRYnTvKpF4rJl7kiWpVPS5eS5cCm5498UnMkXx+F86eCSCJgxW5UJFUuBWA//RRYHqM96F8jCaT3G8tnQXnBQz2yJKyDgM1F36Q0+dgU1xin5spn+7wpfwFeKqWrGCVCmN6Y3/Fs91GO2SWhSA8bsmG5AQo5xqhtzxRkWOSkhe+Pgb5ddhadGn/JsqIEwfu796lxTPa3GHt48yDxqhiLbN4AcOyI+QhJPWTDllQdPi52RIbuKnyQlAulnoRU5jRaTnn4GGpg/LEUQ5PjgyZa03ENDQwIZHAmqHAfsxngLf8qNRBcRC1w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p1hRhj/Ub8yOyNTkQn1HHcuh/Gv58YB72bl1ZifmJn0=;
 b=YOSAD94Es4QJUSryBFmyFYn6RzqLI7DVQTv3Jh7CDfDmq1L5C7PKjVoiklikdgDblnzASNPFkJ2vTJFQgLBLwkh0J0ihNFc3Eef5gWR0Z/hHWqCcCavjij3y3qeiMt7itfvz1/l94M3A+x5sFTxTltIbaGyQdpoPKZWCBh0FXOs=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=p1hRhj/Ub8yOyNTkQn1HHcuh/Gv58YB72bl1ZifmJn0=; b=
	UpGYwRaaPlnLK6tut9El4+sBs6Pt8uG5QrvebOzM5f+e8fODuPu5s+H07RSpGqxb
	+tPQ/MGK5yuSqLit33M/XkxTSVAAfj/vUSuFo94CUyMYsU0PjqYC8YcSMZhFE9JZ
	a3JHNag21i1qAtZDKy3AvyzfXVhezA7U0yffDeq93YhG2hZJWTnAgw7RSUa+yD1Y
	rpOY/iEhTCerP5pQmskUlurn6HMob5VJlNqG4ilQ0yECItFcmc4o1SgPWkXe+zJi
	DIE4WLqmfqG1UqourkN5qjjkqzCGXBbyMTrVOTHUaPsnScwQiRJcPWjt8bbcamJq
	LOH1nO8/FU4jNmHGUbFMqw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=p1hRhj/
	Ub8yOyNTkQn1HHcuh/Gv58YB72bl1ZifmJn0=; b=lw9DVe+xUQ2yzw2BrRbBAAe
	l9+HKTCFPwU6fKnvb65/d9lS1/RVRN7vx8x8Sa9pCxkWf9eRO+Xig44Cd9tjUwdS
	9Movu6P+uB0tdYoO63lUF0xPN+ftwoDwtw4b/5f7ovw4+JMK9i34pwpc84mVUCJS
	HBVuHE+RRW7qDwahD4CDEZQf7px8hh0ofF5Jqp+wWP65LMtSA3nwzmr6NMqCDt98
	ACC3r3JZxJJn26lYHFdxRV7QtRduYwH3+3sgPf9nJbzefRfeFBd4IHglu8mCwoEQ
	Z0ml9UB4kPpGJFppKCgc1JG7JeHLRL24lZivAEug+M2QPdztcyiuK3gtKnF2Xfw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQvxwqHuDnFpOmQwx5u65
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 03/15] argo: export hypervisor command line for test
Date: Wed,  4 Nov 2026 17:38:05 -0800
Message-ID: <20261105013817.719823-4-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY7PEPF000000F5:EE_|SJ2PR16MB5540:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: f34cc0f8-5c50-40ad-c271-08df3add804e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|82310400026|36860700016|261102123227099003|11063799006|56012099006|261021121427099003|261102130727099003|261026121527099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	DrQgdCE1/ikyLEj0JU7w2PynZmh8WT/hXP7zHXFtTwnhGitInq55Z8H2tsBCVorVy8JNROnXNM7fu689LSnHTfTY84mixQvsYSUM05iIKqa6vMnUa+sOdHMIFRHAWrKD9A0Sk5KARc7GYqkIB1MEe7FWSA//C3MLs1cDlxu0UQf0fwIS3o6vYdqWO9/uCEMAJ7v4WGMiBQCpm/gy4pKdJYEMVpLiO0ooynp7Vl0BfzLAQlLJkShJ6tqb/rPd95Fg3mfNfqTnGdpebNOhiPEDWHCvjHNzYwPog+uVwUiGVW7smM5xHY8asREeBiszuJY6JW5ip93TBBa0N1JF0B6Bhr9W3n1hvpa5QFwmjG47Zzcm0yGm93t2NdBfFvdaBBBz7UkvByRMjv+WztzYjzxw19nyXjMP5lYavUanZGS3q8gmMUqqJFGiSS4Bugxz3lff6mCf/cAx5ltBnsv1Ypn+FbqEX0jnuhjG8SY38HbFR9y4w3Dy7XqSP6CAFN8TQ9xfpwban0sL2hVP/wfRIOW4gUkORyNMHB8dRAw2/I+qbc1xK8dI6GK9migC9rpCE8RWDjNpwWbm1dMrkOVt3Nn+CBg2YK+/luiKz9fL6662VmgYu52sHbwHyliCDEuNgFQvvZ/iQ5gVYarh1nxuT+NOMNrHeypAZDiHmsCXxo2I6Eb7cWJyEJu1BMdQk8p/lTo+ucO/8Uy127XHNCViTwiNeg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(82310400026)(36860700016)(261102123227099003)(11063799006)(56012099006)(261021121427099003)(261102130727099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	CQjHuQy3BrPK62OugUyvjB0K5OaT/sBqOGvFGL1+BE3ctRGtM0gLbJ8nmsJAUdxtWfyOYDFMOsPrJbFbxm65E01VHO0w5hwDhhrzgGh+TIU/Bq8WoSe9OF6T0xpEgFXhw5N3t6CBJ0MX/kYMmTQ3NbeeAn9pzia1C8Vo1GD2c3uNKGKTSlU5FfFs0QcbLxhV2lHBkSLjoeeqcEas3DRKZ2KRWpVICU7AaL5yiwFWLSTxbjcJAg0j1JaU+I5CcqWOB1jP5fnDM5oco7Vwpp/7mUqovOA8MvCg7dt4r01XCXP+lSZIo/Stfg0U9HV1x9FqiUpJDYVYIbjvBG4XbbKFs05Vvl7ld9y7sVzPFefISJlRd2ePJtMawLjiyigMY1blm8FEHiMqvs81ecUUFzG9d/x58TUZjjoWBtaVYazSvXVThyv8A2aRKGLSdxEOqyIZ
X-Exchange-RoutingPolicyChecked:
	jDOHOXqlN6QOl5NKxWQc2lyMX3280wB2jrBiUvXxUqwMriWITf6dHaY5nZp+9TGx5MK2zhE4MsO+cbaTLcDtmMrlWq1OqGR12wmo7r1u7p8B5EtDhKw10I4nk8TVR3u90jsBsnT0sRcnERB5Ey2Gh4uCZeWHw3LK6XUX/XNX1hFZZgbT5wqrSux+/1XrTVjPgfhBhBhjyNlgC9J8umXjczTM1FrJk3smN8g3d95rCUJbXDgI5NzY37MvkF/POUGY71w0lpSLQJHDbYcPYA353wpIpG1VFfzQgN96J5KlcCJzZFM24NKAqDUptS6trEx2LC2JBzFqE8xbCa7BPhkmEA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	EyFKQgYboOl6t8NZmDeppaAy0ml4dQ6Ycj/7gxVPHL+L5KIC7Dkn8qr+304Unt1Gy0gqXix6vkgHchD10xOZ0X+eLm8MpkXKuoJLiZkRZTnGljSCn9WJ3IGKsxbostTTTu21CEXoR7sZvo1UcvjaOpHIPbCZvhveFSeEdJUSYtLR7spBkXYV2GfslbehTJHDO2L6O48DfewvROCiUfUCHSQXvMIns6EbffUmYue1b/hpqrejMU+4mQOc2wgMmbzOQ0SnI8bqh1T0Xw9/Hm79BODcL/pTDSDgibOqNWReEame/CcFDlNPMq7KsrZsoqRI8FuM83BByH33ZhX7/matdVJqsaAX0+eGfTEkPwKlfpbEclo9cZRmF0GY7KOoRPPXBXpG/TFIx6UlwIen4/nxE56gRZgCwRKz6nHJLLprn/0K7AJcizB4l7FkKx4XvNH4MviNrgOjbGvnkRyYW9YxwNQQS8RJ1df8HoFzqVCP3gc0krYCNuax3ggQaW62ve1zzLimD8RDVqyQIlKxWky+9sxkGlpviskiJSWNYvqG3ucv8xdzKojltxqP+vycLmkxeKtlTUL8tb+GgtI/NTfDy4zuP7LVs7WaCOGPRpTtzh984cTYkEQcYH2OuYcQVMFmBGujE2lcF7OmfZ2Wxkg9tw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:32.3255
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f34cc0f8-5c50-40ad-c271-08df3add804e
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY7PEPF000000F5.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR16MB5540
X-Authority-Analysis: v=2.4 cv=JawpPkKV c=1 sm=1 tr=0 ts=6aebde1c cx=c_pps
 a=QjrP5IPIVlaYm/X31SuGbg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=ARvDHhclS48edyKYUbLB:22 a=cbNQJ9GKAAAA:8
 a=lxmSaIH9oWjhjDVrdmUA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX8stQpIJVxxZ2
 7r6s2GL9LHpYYUJ/8v6kzbW/HZHwLDf0lLz2pzJGXbPjvFMxOE8xEqDlUGgKmB0yrpxAxq0LGUm
 msToUzSkgjDtacrX7EoiM9SMbEI+7bdwwczIXu1UU0aqynU7zPv8J3M2PPPoYwzu7f2TETBMdeg
 CtiX5XhGqifeX+4PGpzuOQLLf4xc5SUQzi49kzQHwScFXgv+A0F/4f1uR0oBWMf6TJrZplT+9KN
 5smmiMXjkCbFjhxJBlbqs/Ne0xinvfRGb2Xz6oXF4pLyAhgW05qPXq+ONoNvxfDycFLWQa28F03
 EFgHz3IucsUhnuWIN6n1Cc6lcBFBmBbgSmigKkpIsyMIia0ALGXyueroepjrdocxykIUvt4CplB
 rARr50Ss+k0Jpo5PR+mvOyXnm74tuugRduhHAQvzHDq07GHoWnx0gyg4QdUgawDPkrr3jTe4F0x
 Yc+uXs9oUbP7jcp7L9Q==
X-Proofpoint-ORIG-GUID: 5po11N2PL5Vy7mn203FWOrb665jAVxxE
X-Proofpoint-GUID: 5po11N2PL5Vy7mn203FWOrb665jAVxxE
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX9/EdjVxYmNZ1
 XOX399y5eQrJkgG5Kp2Gv8XKxzqW+auRdFtj/xLGazBtvO27tkr86pO48xitKqm0avsk0ZNr77S
 HZpaB1jxtuPCIzfmquNahdcO/2/6lYPGEFAvPW+CJQKovzDzCj5y
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 lowpriorityscore=0 suspectscore=0 clxscore=1015
 impostorscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0
 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-purgate-ID: tlsNG-d25034/1793842718-51538A5B-E60BE365/0/0
X-purgate-type: clean
X-purgate-size: 495

From: Denis Mukhin <dmukhin@ford.com>

Add bootargs.in for exporting hypervisor command line via
info.json

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 tests/argo/bootargs.in | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 tests/argo/bootargs.in

diff --git a/tests/argo/bootargs.in b/tests/argo/bootargs.in
new file mode 100644
index 000000000000..f586be4de9fe
--- /dev/null
+++ b/tests/argo/bootargs.in
@@ -0,0 +1 @@
+argo=1,mac-permissive=1
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473484.1681161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR9-0000n9-OK; Thu, 05 Nov 2026 01:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473484.1681161; Thu, 05 Nov 2026 01:38:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmR9-0000mv-Kq; Thu, 05 Nov 2026 01:38:43 +0000
Received: by outflank-mailman (input) for mailman id 1473484;
 Thu, 05 Nov 2026 01:38:42 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmR8-0000ht-MI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmR8-00CQpG-2x
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:42 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcf-bab6-0a2a0a5309dd-0a2a4502bfa8-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:42 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde20-6ca4-0a2a45020019-94a38ff135ca-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:41 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mhQq226494
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:40 GMT
Received: from bl0pr03cu003.outbound.protection.outlook.com
 (mail-eastusazon11012002.outbound.protection.outlook.com [52.101.53.2])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurcnf-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:40 +0000 (GMT)
Received: from PH5P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::8)
 by MN6PR16MB5452.namprd16.prod.outlook.com (2603:10b6:208:479::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 01:38:36 +0000
Received: from PH4PEPF0000B60D.namprd21.prod.outlook.com
 (2603:10b6:510:34a:cafe::38) by PH5P220CA0001.outlook.office365.com
 (2603:10b6:510:34a::8) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:36 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 PH4PEPF0000B60D.mail.protection.outlook.com (10.167.243.88) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.2
 via Frontend Transport; Thu, 5 Nov 2026 01:38:35 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50nXK6060892
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:35 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh93-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:35 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmQxxhfsGkWyrOmQyxKFdO; Thu, 05 Nov 2026 01:38:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=1d8
	+XzUZdonsIHMia6oE4cdHIDpUnF1JMunvXbneVCc=; b=DlsJOiWYgKR1OQAnfBw
	KW08FMam1tp3CXrEmtYDpEeFSTypXlctrBU6eXon+wa5uwBi7wrj+VrAjhltCbZf
	yUAWuTCEL4T3vKzasLe6HNZsn+cSh9ncMZrYR8Xw+gbxfeT/QKDvbmrCpt+KIXaP
	eXo1CphjOl2puBOXTt6iMJduBdmny33xVtVVt7igdkRrLkA8JBfQGMczfe0FaXOJ
	bT9DHAeowycAPLK0C4V2aPKKtQAPxdr2ou3b/pNHG9fRouWT7LyAzE5IrmILcrrX
	cwmYaE5TqEgLXVLXsKJSbTF7MqD3S3FyXC8tSyd6DpNLchk1sFDFPyYHyLAbb9EI
	Avw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UyBoGwEYrQVoqR661tKCRVlKPbdiyMBKmVJc2b+gNDa5To1yc6JcxDt/n7FgnVQPrpjvOAFkgAjUwzh3uau4+n7+2VkChIkZUwig9hSWY7YcAYP2PJ00v6y3ENuWIWR5Bl1zM/WJrfji0hc71VtR7oy60s269a+4ruRO1AAIb5iDntsZdImhFqwxevKon875QDxWYYMSx0Ods+IU7hnvhTVg9TQ52ZuuSb563uYH/80aKQras9dB70iXsIV+xFr4s4uDaH5WOloqyGDCA4WYI/GH5mth1iaG3BNhi4qAJpiZwEdNTxBr8UtCpBfct/AtRqzGCercAg6ff56rCtN8sA==
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=1d8+XzUZdonsIHMia6oE4cdHIDpUnF1JMunvXbneVCc=;
 b=Geq7il4+3qJhoGXvNmPaCgNodzKe0bvu7I7AIBACX8HRLEuHqonOek9JuHh7MknW/jwAuZoybTn+aWJc142YRJu1EYEo2cgrShuvyhROEZJatABr3YS7nun1uw9CwzOGmZcI+In5dI22knicGSWALOyEJBQSFK3VFX0yrXZ21oy7UDFb/dbsf988qBrHgOgcv15LxsKIVKf/5FdhfQDOFo+r+CIwqwteXlGSqxJvl655/WQQ9Pl4mCaTdWgbYNHaAJsVpvm+yXgCR8AQ0LTL0P0yjdO7BH0Vrz2n63bZtl3ISxfk1bOyQJ15MNuOezCX8fMpmHeIEXyMZ/l65m4jIA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1d8+XzUZdonsIHMia6oE4cdHIDpUnF1JMunvXbneVCc=;
 b=BxQ5TbAFgX+7BATJ4a6MnZ0IwLauVmJaz3kEzKw8EBCan3VGn9mx1KYuZRAxJtxxDJF8GeoES2evcwhV6/kzL8qihNyRpKIvqqoKtRgJALvzncFs4ljkpRNa9jx/oYeqvgCOqdPNe0LhsZmmNS+3e67cuwRlcCxQx4duAiTSSm8=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=1d8+XzUZdonsIHMia6oE4cdHIDpUnF1JMunvXbneVCc=; b=
	e0HAnisLpA6KxGg5rdnrhffBgX0ISDGXfLi/PXikEfEY3x1cuGeQW5+kKOxWwiuR
	6vycQH0WOcY1QAunkYFIuNHKVccMsWQKg4bokuBZtogudDh54C4tqJnAo30xfIGT
	UWdJaD97Gd90CxECWjKLPaTTNUnvITl7EPUJXbSObNlIOgaxbHsEsaIXFEOK7UqG
	VqgfwVU6P1sWHv9avVhjYSYohpRVJazYfqjgO8AjPiVrMlgIlOW81hwFlwRCmHwr
	8GXduETWmxz7xgfQ2He3TJeYGoEinOlbzUsyMcqb/5f2rXE4IYZAr9/YFeCYsXVB
	vopC4MK/cPE9OPJ2kcWgHA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=1d8+XzU
	ZdonsIHMia6oE4cdHIDpUnF1JMunvXbneVCc=; b=SaTNFzBsQBWZ8h44Q0rMbci
	tqE9bIp1s4BDHVQqlhxD0XUC2V/3ZzF2zYur/ILrWwWtwI4Z7jCBf71AKAbphdmT
	3gHesqb6xVZn4UnlblnnOdSPsXkDBWOToUP0QPcO814OywvmplP1HFuXC9ww05LE
	EE5zuUga6OLzgvOFJOx3yGihAQa5Vf9O6e88mLErR5j0Dw07KgaghCUdKlGtyV+/
	v8VIOZBwtqthuVFjAixK58I72wy2Abi8GvdFt1PEsdPOaYsGJ2xmWO/fxegAU8vG
	GQhkG4e2YDN3r/6SLhCOw/DThAPdYRn2bWJfJi+T608eAsf1YkslWWJbRMcCifg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQxxhfsGkWyrOmQyxKFdO
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 04/15] common: harden type checks in ACCESS_ONCE()
Date: Wed,  4 Nov 2026 17:38:06 -0800
Message-ID: <20261105013817.719823-5-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH4PEPF0000B60D:EE_|MN6PR16MB5452:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 9b1a6963-3112-4a90-e72b-08df3add8282
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700016|23010399003|22082099003|18002099003|56012099006|261102123227099003|11063799006|261021121427099003|261021135927099003|10067099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	29zD2W00C1V7375MskNb2i6S8vlqTPGTIGCCvzw+D4za7g66iWVklO5gw3cQGHtqukLSRp5NaOg3VwKagzkCY8UlPtPBzFY+32Kw+Een9iHr0KweMa0/RDfhTMds3RNkytN6rdA/0pad/337anvRBAf/WeAFxAVKkB6CSTyNjF3dX7wsBt+AAW0/rOtEaisbdJlfJbTAM47quLC3nHIdUfLRzkS+wnvMJeUIlIUZqkhxjhlP2eFTOe+04hf030W7s1XYbvlguKtRX8DLA+pV/5bQnN/cZatKH6woPpJ0RP8BxJ3qNNsDwwqppbkaE6fDXUiU3eg6VEO+HjsA5IVh4mIpOd2f8IrIgZI7/K2oLT26V9dphNyeWXXxdWYxKMxI+COIyihKDPAAuypm/WiVOXPfTkZKjXcRnSNyvYOwL9hW0AoGjDrHBFz+esLcyTV7n9XPNJDYowIryzdnn70oeaSHwDR7d3+HPNmmQxTBhoZOp1hR6XI/SeWIVb1Kh9ubsXgoCDnRzd7pwWmkVdpThtm5zCqHpXJew1axa5AsWz0Nj0jCcEEfz05cT/L5+TIXd/jvTw5BebBUTdxCIWbRFFiQQyn503gOUJhsVtKUKP78TIx+FtqeoxnLNArjGpjp+HWkw6QEo81DpEC9NlVJoBQ2/GxpEbLBiBgz8X+2yIIV33CnU7xt6mR70FD9UK5RfnkiKf2XfX3BLyGVzQrcjQ==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700016)(23010399003)(22082099003)(18002099003)(56012099006)(261102123227099003)(11063799006)(261021121427099003)(261021135927099003)(10067099003)(261021123027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1FBZnCR1GN+ZovZif1KrfHLpgcCZctDEM2bYvNus6cWMndKC77LFC5q2UlJO/iYC2MNQrC/T82vdfFGmSTGKLz3jIgJfpiZwf2u42KuivTHHERS2P142VG954IxSXXgDPqDjOuRrWPLiB5Yq+WpQU4B/01lZHw7owpWtOnoWT6wnPKInXMLfMYYn0EQ22FTddeJl1n2r0IX5fFFDsrLo2s+uR6g3U/q9xy82JtKDVA5fJid6WhiDuKGPVZH/Jxw47MpzvWjfJ+y8kn+82i9vJr4JC9wWV9wF4JQ0uRz0+KDRGEeDNYbwy64jT/vFawFNoTk8/jJOQQRkqpwWiLe6pPcm/YD2X7f1qimh4HjY+OvROdUjKQ38B4TlRTcE2RPFbN7XCZ+QMqiTkf45GlY4nSz0BN74rJQQftUgHGvaJS6NjDb5vWBE/57nzUtLhFUd
X-Exchange-RoutingPolicyChecked:
	Gyj+jLFHRhW0jvBbKE18Cf4X0SU2MY5dPzPb7dc36L+nG0EryXGLgXh2D4WozWxWCMC+sWtpb2FdG9P6w/oqrTTVRx5C2YjlnczsKZQS5SEKSiGcPkPokk9Fzk3rXT41LVC7GTOINm/uHrDwlUkQEeUxWs8frMiv0szsp3lJQL+fYMTmMgamq2xhruRRfAslD38T0DyD4RHn1uRiF90pdpv7N4kXd/seJGu5QQwoPDNEE/Gf/TL1AIsUxLBmueBdP08/QTJDDtRHnuHkmNJsi+cxuIe6SRVMk3vHrqzXVPRLqbEFnGg7TPfvfVDI4y/B3+aN2w4pXaRK/VTNwJlFkw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	0sMCvYScA748gTZvyyGgCB7NTL67YMbKgkAvWMhx5refOSp3BCMeMspbS9Qk2KIk9SbU4+ntklGaUpRYVPSXe7hNe06VSzyDKVDB49PxoMW8DZiLmVv2hb1dbAnPJpfasePZp6Cc+uk4u8Yiv2sxyYQ7H0mC1dhGC87bGkZjDHAAZargmX6QwIad/d/DretZ74ApB+c0pIWG+rPVWQzAIEU5/uDFrQP7UTN5tCLGmrl3XzBooEeYq4QbSmTHGrNADSqnL2VqWIsc5QfM2riALGGkr0XgOt5+70LMRZsoNMBKe989vwS3TUFRwFB+UyNEhxI8azfvakEi5MjX5DLBSHPSX+TbFklTrSVQU2jzFDC1CzCxeBq/9irpo0jTynR7LMydE7/GKgMggNR8r3is2NBkJF1Ztgq3Sqq+NodJE61YhVtUqZ9AKLqdqjXpWq8aznx5NN8z9QmmebaLOQ9fgsd6GtIHm5QZqSvZukhRlNnrOUKVC1YSmxUB3cDwXkBec3JEgMOocmFT20y9t5Ph7UqeHVJHbBlB1UsSa+BQbe3pRcyijW6x/Wgkqv6Mjl7SayIBBfh+uUIy4pjB8JrRTI4KGC0AqGQGB9zwgr2/Mi3bdv10hKkN+wMcYQtHyH7LagDe3D6J813if9ZmSW7+2A==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:35.9245
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9b1a6963-3112-4a90-e72b-08df3add8282
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	PH4PEPF0000B60D.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR16MB5452
X-Proofpoint-GUID: eq6P0PPodglDVPmRmvN8S3zBX-TSn03G
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXyCj6vK4j6Ozc
 N+D/jmRLagX7ZdwOkztiN7LTC7+e5lP7BKrdF1S2/Qo4PD1MExmOY8Q+JQKhFBKkLFxfVAhpe9P
 YBKBb9dbxqNk6oGhLPD4BRddq6+Iu+8/lxxGz6SxTU6ieiBBuRM8
X-Proofpoint-ORIG-GUID: eq6P0PPodglDVPmRmvN8S3zBX-TSn03G
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXxb3aHIpGHFSj
 7kgndsf3sg0yWaFEZPDq6A08w3OqNAoCVb/vfEwYnQ0ZoLLPr9Om+2npk3hvzm82Ngm0UZ4Fer9
 HjzrJGdJWaIszSeFSSlUZqg4Vjeg2IxePZu+OS4h/02832C2913kv2pWwRyXT6AxgaYOtMVA13j
 u+VMAKQmVi7TwF/739VcEAzOpQqULEf38DaX8RWhaxbTaQ/vXZlyXyuYbbEUfeo63aGDSlgnzcw
 YHeNuC1ckNdlAPg43UUuy+2V7pUyW8L3KZeLphO8OD3tLmNDFk2WntVifBZXB7OFWlA1SQtUEiw
 jwIfO8qwt/4CE7tpZrUfp+QHiqatsWOyg/MEFpofpYTqRbGhfrEu6TBFVpqF0FP194RMl+muqLU
 daGWk+7CtzSP1cKZmNlgG94Sj/5pEPQxr4SBU4PHWa+ZzzN3quJJaai3AhxGA1Q9KgrBSUgH/il
 BLrrvLu/ZdQ37JWJtRQ==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebde20 cx=c_pps
 a=boTDQTO5XcRoDQ12XycLVw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=oX6sQOh5f4QriJ02HC0A:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-720697/1793842722-30FCE2AC-56F47DC7/0/0
X-purgate-type: clean
X-purgate-size: 683

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 include/xtf/lib.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/include/xtf/lib.h b/include/xtf/lib.h
index 9ced1e795258..629de4904d60 100644
--- a/include/xtf/lib.h
+++ b/include/xtf/lib.h
@@ -7,7 +7,11 @@
 
 #define ARRAY_SIZE(a)    (sizeof(a) / sizeof(*a))
 
-#define ACCESS_ONCE(x)   (*(volatile typeof(x) *)&(x))
+#define __ACCESS_ONCE(x) ({ \
+    (void)(typeof(x))0; \
+    (volatile typeof(x) *)&(x); \
+})
+#define ACCESS_ONCE(x)   (*__ACCESS_ONCE(x))
 
 void __noreturn panic(const char *fmt, ...) __printf(1, 2);
 
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473485.1681171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRC-00016d-5m; Thu, 05 Nov 2026 01:38:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473485.1681171; Thu, 05 Nov 2026 01:38:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRC-00016V-1o; Thu, 05 Nov 2026 01:38:46 +0000
Received: by outflank-mailman (input) for mailman id 1473485;
 Thu, 05 Nov 2026 01:38:44 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRA-0000sJ-8y
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmR9-00CQpG-Lr
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:43 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde11-bab6-0a2a0a5309dd-0a2a450a8416-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:43 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdde6-f2d2-0a2a450a0019-94a38ff1da14-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:37:43 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n9mx227512
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:37:42 GMT
Received: from cy7pr03cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11010059.outbound.protection.outlook.com
 [40.93.198.59])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurcdp-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:37:41 +0000 (GMT)
Received: from SJ0PR03CA0233.namprd03.prod.outlook.com (2603:10b6:a03:39f::28)
 by SA1PR16MB6389.namprd16.prod.outlook.com (2603:10b6:806:3ec::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:37:38 +0000
Received: from SJ1PEPF000037A7.namprd04.prod.outlook.com
 (2603:10b6:a03:39f:cafe::5e) by SJ0PR03CA0233.outlook.office365.com
 (2603:10b6:a03:39f::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:37:38 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 SJ1PEPF000037A7.mail.protection.outlook.com (10.167.244.139) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:37:38 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mNuo3091285
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:37:37 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhm1-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:37:37 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmQ3xwn7xDnFpOmQ4x5oTg; Thu, 05 Nov 2026 01:37:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=aGn
	WhuaGCwq0xHnXisD59MwxXEWdfjgkFUiaprDKxqI=; b=jlRekNG32+/ceZCoUMG
	86HW8aeaBU0NV2zL1Hnm3AwADHikAxb7Jw1QX0v489aWnn5NziyuKZ9BT2HRpb4/
	b0UtAxKtBeqUIALSCGG2QcLwZZSy3QhsJFTENnx7VJpqw927hGwaQS8xZFVNDJ7h
	z4YThSnjPszQ0hb1xO7Dr0ckiQnKu1BjPpDicxowdEoSaaGpkezGDfRLjhC2TbRh
	gsS/26eu67gZanjOgRxGHz4hyM2m9KmCN672xUVIPcRxDket/IJ9n/YpTNR9qrJj
	DuSlChW3VPp6ocIlqLsRnkMBdWrMA/obvNmDiu71nEuBcvs6+ZmHihnksfX99Rkf
	sbg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OYPrr4gB8R0Bcw+GhGeH6MVl10jpLdUrPvUlQ37Y4ISZBI0FfohIeIGVRFaGMAGh6mq34Wf70rtW4R/Z/bSP9M29VgChNm1NYEkq3ZPoHFQHn2EqQhLwBtp264xCFNHZ6XqzuZjkWyETuQp4AWO5iWuQwq7ojf5y5AVdGcOECY90R4veN4QVeRAOgBlX5ix+3+xdFHWLa2wq7u0maItMLd9JDeH35KCSunBFLOohGZo8/p6vzXzbAvDqDfd7JjKWidU4sTPMJx0MmHpfJ3KnfgAJNOQuBtYVB052yzshgL1yvaW9q2/KU1Do2GbHrlRcJhWbCbhcAGodxjaWZfrWzA==
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=aGnWhuaGCwq0xHnXisD59MwxXEWdfjgkFUiaprDKxqI=;
 b=pA9XGgMPCmYTt/m5ypvCIC/pA1GqBA72fKwnxyMab9oGCLDbVPYHUprhTTmJNtgHnifJ5AHMSPoUfn4dC90/DWYqpjYD5dGx1hemGWK6r2PWx9E8uf6Dyp56n6khFCf3rOkEMunC2qs73ymGjJSFFOHL3xspoSBZvYt5R7yxVm+FSMovfL3y170fgPPSsKmaNMB73L9mWZqxmWEmt1WARDkL9+TNny83WUZjVzFrl23vlTmgCp6qDiCswadth/fb+u1a3DDaTK1a1oiYl9UlgupOsUXz5H9N9j4HT2sm3V8Hdqe1A+k5RINaq9MlyH4HzeN5dXQ6Sat7DEapqTumHQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aGnWhuaGCwq0xHnXisD59MwxXEWdfjgkFUiaprDKxqI=;
 b=G2xgtuSOquqaQvF6xp9oofcEog1+b+TZwosZLbF0B0l2loLB8UINkzhje9wL6MFhHAWgIGbo8Tbq1Suwtvkhb+uOoUcLvDCtLqggoB8ZBUP+giyLsMzkZMkTDOs96aUVF/xRUv9NziREUeIbNenhAcWz3NEPjOLBhRMswmPpAUU=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=aGnWhuaGCwq0xHnXisD59MwxXEWdfjgkFUiaprDKxqI=; b=
	NEuXivryXu3i8Yxjna5BlW04gsBYbrr//Lqr4GSNyV/myQmjxsmwJDc3xo4kZioZ
	yzTfwZDf/rHZjUDXAHwK333UGKcRj1RoiYNhdGbkWQoZZPJeldogar+Y0Y+4iiyF
	Jy6LVthCaY0G1FDAvLQ50a+auifIm5lqHgDSqO+W8w7F2pEpL/QC4uWOvQP6w+zp
	Us/YkwFbjwnUTl7dAEJFvHN/E2PHCZPX94CNNDBXWdDFAPBbpdVyrhY7Q4zjMTaq
	bb2EcXV0eFtVw630cIYsLwPRC2gGuEMFHfDGu7pD9rsyp+bbcF561hLF5T2QGjvL
	g+YDYO2oyrB437U69ZhcUg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=aGnWhua
	GCwq0xHnXisD59MwxXEWdfjgkFUiaprDKxqI=; b=SXMBUAHY2he9FAsdysc5mA2
	MJkQNzbkT08oSt3h2LKOoqs3K0Go8BRucg5srQWlaB4z35FDTDpiveFAczH7ympB
	pieMIEXQTSTwk8RbOcQIKjF61DbGRyevBd7eF6Nqj7oveOt7Cnqf6FzXkU5p9iwz
	j+jbIxRpsTBhcCWJVVPm8RDLSId0TZ/GnXX1NQkt/eeMOH2ikgUdt/hFUmbsnynY
	0UcQJLRZhyW0CpjOVQvI6atiSHXxwuukDRrl11pqVHujn5pi0phLyW026lsX46e5
	v6BH4N16bFhNPFTvk5W4rfqhXracKKu/KxjOIO7FiWQs0MAI170EbjfS5+DFtUA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmQ3xwn7xDnFpOmQ4x5oTg
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v1 12/13] CI: add on-demand XTF test jobs on AMD Zen5
Date: Wed,  4 Nov 2026 17:37:00 -0800
Message-ID: <20261105013701.719658-13-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013701.719658-1-dmukhin@ford.com>
References: <20261105013701.719658-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050005
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000037A7:EE_|SA1PR16MB6389:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 4c40deab-0666-4a08-fc67-08df3add6023
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022113327099003|261009223027099003|261102123227099003|10067099003|18002099003|22082099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	JBWoeEEjOb1SyZPG/OszIXMp+lP30KbY0C4NxxAwUGAb4W/2K5l4cAxOTiYZ2DzQ7kjIWDJnQuEJzyi1OUI6Y4g4vEptE/NwlMeyxdyp3lVIl3hoxW3D9QvDuXyR6xJM2rorG5lgVNnbgX6ZqTs4UBLYR+XNvdhjOoLlXWJ5mZUi2E0itq48hBfAxxPztcJy5Yyt1LcYsBEP722yeu4AO+p4tsbP9BtW99pboD/0smZj7JoXR6per7J39EoPfL856PeiDzsAMBYYWxEz0qBrik/jrIZf9lAqgMQl/uyogaTsiIEkj7WYZTMOJXw4faTJDYMffpkdXRFtPVEK3EkXyIMZI9Xjku/h6/kZPQ4HVcWsZiWbzirDMNymPMxBZiNg++O3DhsRfDl9d31RJ4zK8am9BA/s+RKM2WEskwlHPV2VUll8jVLDUIBlQbNt3g84U28JtMcvHBzLPPidlV5bc7PsS2CauApqCk34tbzmSxabab1bM561IM6o44mVk2URnZntQ6l+9h4ggL1YyVm7TjeV55yiFW2h8qwTtYELnpmkCNKYAXEs9VZ5oG0m5yiBm4e5TvnhzOZ/gUUvC3nY+fvkQCfwVUteX4TYAzO+XWqkwSfA7LJ+XEOjTOzY3pl/hYczwhSrx7SK8/3/MDRVdrc4k6PNhsp2+NTsvwTMIxRipCWVK2/qxvcj7dhCG6/bPyN7HJy61Re8/ZMxjMMBBw==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022113327099003)(261009223027099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	OFEwv81f5Pkcz+arACc09iuKu7eu0fBty0hk2d/TwvxkoEaixw0wIkXuPJjD61PhuwQ4XtCdJG+6py/EF8MknIcILjTA3ildjn9HT1tHK+UzjCjvTdYoecVaFuvTR0HA5inWF0OUdXnHkfF4db7u2yE8AibfP/wzBMD1hYzsYYQQeUMsZZwmBYUqMgdRaK+pZi1XodnfSyjjpgJMGQgOJ0Q8ri9oIosMoZ1XYwqWwwEL1dUy3nScvr2Rw32WBi3LwJfxTPnBEu6AAfl2fmKwF22j62sGZFVmdWfJEOY4ve6WIo5qCYI5gRH45KE9sFnH2hhe/I27TbEi0BWUDhrxvjp/Ba0Ct6jfl31lZAUqS3/jX8uMz+aHx1M6Wn2FUR/2bNE/85siTlqEYjEHJlwwWTr4Zow1mpN/kFZPXsiggG4KqYQeGk/yZzoet9ZagL26
X-Exchange-RoutingPolicyChecked:
	H6Qz31pb5k3XMFvVJaun7GnNAsdo4e6IE6n5pB2F1QUs6S4Z/18fxTzOgKzxHxEm8etVu7M77QUmkwvv1Ky1ukHjZ4TW5/mWesSvCszVigwbvw4hU3Marw9/BGfCGhy+ktJvnGsAQhu8N1K0Du38PfwOBGl7n2WEHou/Ba/wllJUKph3AGqwOjpOIjUBZQ+BAHpzg2/4YD5WY0cuYMPawnEbDHsEjBZypqVR7RNZ5aH26aqtOhiTujXxGcXXcNaPfNUHDxRO5IaSpN06oNoNhb1Px0bb05BI9y41/V1X7zKB7473UUvfO0/JZh18b4RmsThkwTnv9ed5eCkYO3qgbw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	vfvGtonreTOSX/yM0kIVl2ya0dgzfu9Gx7Web88BVJj+w18MAgk3NW/Drug1G745Wrjxz4LQRhGr8MYBrO2H51PiM+ZBjTsYI8g5OVVfEa9kz7qrHJz9rgmFfsJM4uMbVHUNgRTUbjCjILZC0M4LJuGWdjd5fJvpJxyH8kz2ROlcqReUzZMaKys38wgLW0cr8x04QRmGbGt8AwwNWj7vTwwtQOgNg6HaZ3I1qlYN/iS/mHk+/uueUkeocMS3xI3a2hLDBEj6yeqoovjQPns4fFk3Fqa7o+q1DminFUHSKOhq54iyxxqYPmIoZKrZLGcKsZxErEHGCir+sT3ZKSWvLzBU/3rFA+yKNlhWD6R2LbXLJCIu2f1U9sdAHLodRTa7gn6nL1pxw12wNU52xiqdnWz6CM6AnUie55sR/jmlVBQrqByqGz75muLnZz5TLr9GujFRyJoSQb2ZnkoIP/68VQnboTVqQS6TC/YnJFquucyWUnPjejBFK66agOcdkz9tfv8hskPpEHfBXusnpupgHkibqyAbSJNCnWi0TuHVBCR2fNAT1aEXMj5xSQhK/vm5y4kDKmrSR2CWTz1FsHLBiZEQRcyG28yicJijmVMIcsoX8FJlSZ/J4XFVbLoBCzZjVwV+STmXVLWX9+79A2M7PQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:37:38.2403
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c40deab-0666-4a08-fc67-08df3add6023
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF000037A7.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB6389
X-Proofpoint-GUID: -7ZVy3MIUtDPOewcpzq1BkdlsxrUPNoo
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX2TisGYBVXdwG
 bl44eXw2nPIIlZaio/kRPAyX5Io8CfNzJgVsdXkqE5DSC/UREiFJh0Pz+nH2/0JoN3NaoZqO84P
 Mb5e0e5IsQV+A6l955j5twEU/JmX8ELwBF+6wcfcg2Vr9IJ8rsqS
X-Proofpoint-ORIG-GUID: -7ZVy3MIUtDPOewcpzq1BkdlsxrUPNoo
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX3rX0UOw7e/cf
 dl4d5mXb0Qm29PlVpaAZOU2Ld4rWpQXxnxRITPNj956UtXGVzPB16dAs0TIBUWDkAgRWaMaLJjr
 tNYCKG8neCl4GdtbHBq0jzT6eyedsCl82agwHbsZ+h4TwJUQZNfydZgmvdLEJsU3e8TFWKQboI6
 0C5anFRBYDN53aAlHBQCcLXLpTwsyuer8shSB5opVx09/CHM1RhsYRlKROF6BGcJoO17Dyt8EJP
 U8ee6zxDGo89ZfZiTr4sxLY+OBIcoPDkDwG301myXvxSmBoWbWFveQdSHTSh0G6zgo9aqKj9u+5
 oyesf0bLk2CU+gbC/A39iPEi2gbnC6pHW5dXKRJXOaqGauiX/xr2Bfc87cH4l74HZD6VlHF/NPo
 tLeXz23BRx65J/KvvWcoI8ChgGZ0Gwo+yD8Oh4DJqKQSAqbyIFMwR31YyGN1bmThOPSkUQ1YgF7
 ph6cmjpQdp5m+oMj57Q==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebdde5 cx=c_pps
 a=iByqbumfC+QZNsSPXlDUmw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=b0jTZZKeQAALQPtHgsYA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842663-583CCCFC-698BBBD6/13/0
X-purgate-type: bulk
X-purgate-size: 1366

From: Denis Mukhin <dmukhin@ford.com>

Add on-demand XTF test jobs: complete run of all tests and
a standalone interrupt latency test (AVIC).

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 automation/gitlab-ci/test.yaml            | 14 ++++++++++++++
 automation/scripts/include/xtf/qubes-hw21 |  1 +
 2 files changed, 15 insertions(+)
 create mode 120000 automation/scripts/include/xtf/qubes-hw21

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 05dbd0d3e07c..f65758cf3b96 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -276,6 +276,20 @@
   tags:
     - qubes-hw21
 
+zen5-xtf-x86_64-gcc-debug:
+  extends:
+    - .zen5-x86_64
+    - .xtf-x86_64-gcc-debug
+    - .test-jobs-hardware-xtf
+
+zen5-hvm64-interrupt-latency:
+  extends:
+    - zen5-xtf-x86_64-gcc-debug
+    - .test-jobs-perf
+  variables:
+    SELECTED_XTF_ONLY: test-hvm64-interrupt-latency
+    TEST_TIMEOUT_OVERRIDE: 600
+
 # Test jobs
 build-each-commit-gcc:
   extends: .test-jobs-common
diff --git a/automation/scripts/include/xtf/qubes-hw21 b/automation/scripts/include/xtf/qubes-hw21
new file mode 120000
index 000000000000..c6b7de7308b6
--- /dev/null
+++ b/automation/scripts/include/xtf/qubes-hw21
@@ -0,0 +1 @@
+qubes-x86_64
\ No newline at end of file
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473489.1681180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRF-0001Te-GP; Thu, 05 Nov 2026 01:38:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473489.1681180; Thu, 05 Nov 2026 01:38:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRF-0001TO-BV; Thu, 05 Nov 2026 01:38:49 +0000
Received: by outflank-mailman (input) for mailman id 1473489;
 Thu, 05 Nov 2026 01:38:47 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRD-0001Iq-BD
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRC-00CQpG-Ns
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:46 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde26-bab6-0a2a0a5309dd-0a2a450ccef8-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:46 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde24-f479-0a2a450c0019-94a39217eee0-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:46 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mSxu2567952
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:44 GMT
Received: from mw6pr02cu001.outbound.protection.outlook.com
 (mail-westus2azon11012004.outbound.protection.outlook.com [52.101.48.4])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvbjp-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:44 +0000 (GMT)
Received: from CY8PR12CA0033.namprd12.prod.outlook.com (2603:10b6:930:49::12)
 by LV8PR16MB6443.namprd16.prod.outlook.com (2603:10b6:408:228::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:39 +0000
Received: from PH2PEPF00048918.namprd05.prod.outlook.com
 (2603:10b6:930:49:cafe::33) by CY8PR12CA0033.outlook.office365.com
 (2603:10b6:930:49::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:38 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 PH2PEPF00048918.mail.protection.outlook.com (10.167.243.74) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:38 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mTea3091555
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:37 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhmm-12
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:37 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmR0x1H70gTjoOmR1xgqPP; Thu, 05 Nov 2026 01:38:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=7ZN
	6LuhG///1TOpgWfiNFXmahkcaCTnzZxgTiky8Tpc=; b=aVZoExcQq/pysBZXdZh
	sCcBOOcG07rNSbYqwEyaJu/BaHV7b6T01YzmCRLlHL2Q6teyRw404J7mm+DkRuHN
	ziUCrqFF+mfgo3/VyebmarpFabXdtd22bgRva9IK+k4Hz/7WpxKL5KEU79hCEan6
	mvzL6yxpZ8r2elaVccpYezEWRk2Y+kim9S2J315wGxuNzHxq6YAH8lYh3Whqg/7T
	36qP9hjLpDV1346P14SWrtSp4ILXkA61Y6MsfAvfjmy+eloiXrzef0ooPOXZxZqQ
	awZu83FvBc1/Sb//aw5qXI6CsH4xjZGl2rmlq+miSsPpts3O+hfFnJo/Rvn49R8+
	Yug==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OnBAlriM0pXbMAnPkYYrWizUZFGo2+jglSd3TDm7cblU+hlJ3tZjxmjuimIxYnn5OYWlZWJGdatffRUd5FskLFkL5Hq8r72m0Y77oO4pnj2hOICpM51EnK8VCYKsHOXQg9cNyiV+upAsPOGWI5H1VE+erlvVU2HzC+XTLILqE0vn/wRo2LeJBi95cmf/BFMHPXR64HO5sFVYh+CqoWSNgF881EkcS7b/JXMwn7MLI6l6kQfByqcXVNVrEzJ1x+hXkNrtyZenZ/gAVKsQ1AgcEgR6EPiuTL7qtNs2tzIW4MrvfE33DCi7m/ny2N/gSwZz8ygE2cmNMb7unEPewSmWdA==
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=7ZN6LuhG///1TOpgWfiNFXmahkcaCTnzZxgTiky8Tpc=;
 b=i7DgbTJZF0zyS29mfyeBwikXy6qW0jQEim8ak++ulaO1s+KOYQIf2OuuxH6WxBDk0IYcPh4H+hCq4dHSIGMHNzb1nb8SylrXKVeTs8iT0728dapzzUDayo2tfm1Ai0vPtBbyTkqI321jijPW6l1Q886BOcf4gM5uqwrz7C2D91IwZQ8DWyN3KfIaAsINEpmRm+oSO6z4ODY7L8MLJnUuFqhFUAUtF2uU6Da1QwrO1Bqq4qnNJf/z2Jz3CKDvrNihe9lVZO5tvUf7TlMUSMKBe3GEN+12CH4IQCxA4OmjyqIv7e3EYJ+kVIp3U5bf7+8OE2eG3NZ6a/mpANI8v8E3Tg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7ZN6LuhG///1TOpgWfiNFXmahkcaCTnzZxgTiky8Tpc=;
 b=Efn9NuVup6wIVNeVyBwWIrWNXc19LDSTpRA6ciXTXw1IwKIWD1NYhk6NXll2ARhdIop5GNfjhAgR+FnVGJHganfUqmpe1035frqXBSDwAFtMH1p5Wq3PPwo+nHmp9+ZiSnL2EMYwNnMtAsdcVQeyjH3jbf469RwWUk2NQV2rGUA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=7ZN6LuhG///1TOpgWfiNFXmahkcaCTnzZxgTiky8Tpc=; b=
	RsCUMx0hThX2g9L2OabSsbCgQJr+aosq/MvuGZVwvpGMCIYbbjnlyAP8Ki8g44N1
	Kb7S1NrsWzqGOc3t4wSfh3RZ2jcURa1tUIqorvc41aEgJ4tmsNZJnGApovAL7gLV
	0t4RZ+hZruoQ5q10VKnUKx+w+pAH7sgYfYn4cmHJb2uZGtWgi7+qIsdKM2/AhxYv
	MSJc+WRgGZ+EHajgswvCtdICCFmtkHjCtzYqc5XUBbYgE7RGc8c2ghjZWR6SEDlq
	iE92MEDiZXcbHzIv2JIin/xr/Vu9rNAW5KKi/gfu4Mt9rC95R299ruJi4Xdl6Rxa
	9cye63W2xDRzpsv68GThXw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=7ZN6Luh
	G///1TOpgWfiNFXmahkcaCTnzZxgTiky8Tpc=; b=H2gkDglNYAEJverh+imwrGN
	RryM65af4vX6l2FWpQLLqfamzgNTEwYMOrGjDQGh2Hj4zjYE7Ep21v3Evo3Izpnb
	AXgIW9JKiaD3x0/akmGl1eZk38oKi0NtKBfmZm/J57GUon5SqAjZFnnx2YPfHHpQ
	rWstnPK5J+XRUEkz3HH0//dND1jMpoVqLbxVZSBN/WU17W6GVktIVNxe0tj2JRt3
	nGFTZHOqqCCqAv6fKbcp71PEiCWxYi7+7DNbOSeYKKzIxJ0qJyPpdT8ZNAqGVx0B
	RIBW39Nlp3NsivkuAB9xQ37SgF9SG7DIid8nGlAsaZtbTEmlN5CPzEUv/gMoMsg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmR0x1H70gTjoOmR1xgqPP
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 05/15] common: add simple atou()
Date: Wed,  4 Nov 2026 17:38:07 -0800
Message-ID: <20261105013817.719823-6-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH2PEPF00048918:EE_|LV8PR16MB6443:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: adf7b269-f834-458f-a421-08df3add83ef
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261009223027099003|261102123227099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	b8Pb36MCw8k46pK9sOf/Et0vSPCqNsgbGDinv9KI/5dBcDPVbPHslXePxY2RIymeA7iPOkuxaldIPcizuHySAACe+WUrig4deTzJR3HaEo2B6wZnqd3c9ROOOwTyIPR+PVNXmbrRSgyJ5PzvGImSS/m2S65BKoDYXjILSIpa4R2iQ0lcGPTiLsH8nqNhP/VxnNoHW8SPDVZ2p9RgkFQcz3E1+YRVbVPTMwIcYdyEK5l5YFbsXi9OVFGzVg8L6zVRNqUY8XtVaC2PYAg6Brr2VIXjLlCLlHUQRrO9fI+awdiL4LU5Ziq3MYzqP2Vtod6cHlH81m/QloudfoCwzBb1Fw2tHCij6jK93FEV+0GpU+4GQ1H12UvEBVmzMJ1wH9PaULeRsHHM6ve1t6t/+VICijWE1gmbsNpsDgg5M3gwzKoiBKPhH6WVpl2NzlOaWGwGQMHY7X0/VSLRmB9dbPt5CwEpR9A0syN1GJCDLZYgOitY6rrG9PrrmWuVnr4bsnv8oZJmDw0gSGAjCnmWo1LOkTLmLD8rzDcLqa7PFK+oBl55vP/6NFsiO5RryaK4t/cj1KDu50tRo/MGckH4cnleGiWt7BXAAuxOldidc+tFydJbYtpiplhn3ty26YR+zDWPr05HcrIz8fPk+abUKhAe0OK7EYhEH2PxmafX8IbrYYAp61wcDzhrAsKpRsSDb7dx0keAX6WUOx0JXT4TA1/N5Q==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261009223027099003)(261102123227099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	1yJ5StI0hg99uf2v0XBzXvmzHSwDSKCKmXREXV73bMPJznRPkJTMAxjDtflaiKWxRCcjOvEJ36LEinI3ZHKIRf0+fCEAxJXiw9dM6UaiOGNKLic3DHb2N68mXyub3aK9Qco54l/XUuccCcBkwWJt4O80dk2Yu8moBTONf/Ov1ZClXxvrELSMA+f1G5VKASHei9ku1KQ/0RjeESvZ8CwUolVOMxQxiAo2qBBkTmJwXlhs/2/UhQO7yr1xeQ8DmipDRQZBbcXYB7gfmEIpZz7t5rDuDjB/Op+HiKILvEx0+7hr3ND0OsKtwSfxSnIf/niG9sGcR1qLRVGt7mE84gSG6o26nwAkRKygv41DrZma0PQ2UArnZC7sHcL3qDRLYstqBYqi0J9Q2pFQ9gbppRKfbOnGl0r21hUO8d+7zXZ6F0XyUJW5Yp4Npv1VtvoTyBUp
X-Exchange-RoutingPolicyChecked:
	bMyVn2j7Kh1f8Be8sBfvxbDzc5K71HLYbepeJAz/LyLxWYI2aDuZA4Fk1nS6tOhA4wKMHIH292LJoEKxt70yywG/t/T9HX+UYn2qVArk2bWXjq3PtxRrm+5DZ0C7AIs8tPjkBc/buf5GmmSaxievwH0O6Wj3Bkoyrgselfo8sgr64Pfk6VrcOrRXiuVMGW4wgSHgORTn5ridT6XAE5PtO5zcqAmgQXt7v07AOpgkAKblpPJJhzLtmlnm3V+q6MebJXHir578cJY4rAOdFQC2VcUR4hZ41eMkBXV3q9JVW1AEfJ3WlBTf6E0DugdiQGLvFh1lw6XwApSyfV2n5drEsA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	XLgQudZ55KJ4o4rvJZpIpTVE7gYGf2+JJIfd/vVsRE7wNdgrKIcQ+CMRuT8GcaRuT0UBGkOfPMt7jXogDqnlfdkMkuGf1SJp51VW8ZTAhjquulyZ4G711++H6grODej2dQTgEs2B7R+/6RyCuNqEI8Yh7hRiYTJA2g/r6ZjXQ/7zyjqNbRxN7Ns4gsjtda/8PlVrp+/qHUC4rYUmm5Hp6DsDZBgI1UiznQRaPlPsEdEV59igV7c+fouu2jDQSYhX5UFBYDdRSN8aTEtceEaXMUalBFl2nLAs88ybCAyLcUHUJXhaywFjgX5njJw0IjuHNgcIwRCFOTz8k4QwHX6Jui9CUZl8HJS2i4BUdeudjNvk5m2qKr7tfNwUmSEYiktHO7sSEKiHBDtLlKVqiLX+354mtBIGMi9iYkRHPkjJy7gsILQUlaQKE0gp+Z2v6wLCNBVTbU8+uh+clMfO7z5j0tlBF6cFdDDArGMCoPFNINSkPloCyU4xSpuBFAra5I64AAjZK+iHJcpg4WbeA1AKcytTw283IbMOx+fKJRcJScPjr6yFvAuZjhxujbmql1I+/23PgDuhDF/MqqNfrhL6CzAV8ACP8b9NqP5TbdzHxNq7vFJ6vzOqSjYg6FK676FwplcgyR9AXAv0jJ9a/PAXtA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:38.3549
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: adf7b269-f834-458f-a421-08df3add83ef
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	PH2PEPF00048918.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR16MB6443
X-Proofpoint-GUID: bUpQXXN30HAeZ0J2KmLEpkaPhwGM0ZXu
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6hjbYLrGhX3Z
 ho+zXEFzOrr0WAajN0tAamdg9D5BcZDBoFH6vVS95WXMdCh4W7hVc8nxz+8S/srK7pgVXeQIVxV
 8tox+KOWqP+Ei8x3NsvaVvWdVeTgIgXw45gXKX2Bd4eyPjCTL06MAyZyZwkdCgeWhPaLPedRgra
 RfpOElkugMJYz5CYEfwYt184vWT4yAjtVQVhRyDKzryc1g/eAO85uHHLiMKiGLCDy/qKrjqe/mK
 T/cuhF6tu+6eByS0iWDqPOtEUlqSXxxu1q8XpQQGvJdmeho+kpyegkPdGFEgbLhQP2OQRasQKMQ
 LzqMESqXoATysRES3aT0rY/lWfeElA/TpTBuORNQJg7KzdcjHJg1u7LWySfrQ1qW+/4zdAHdHVM
 GCDMSWP3BOjN5NTye524eQdYVTaWxyu3V2E28vcEVzhU1avMCiIJ++BYSb8NE+BXwriSZ4dfFgr
 iW/xvfUD6Zm5OeNsbqw==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebde24 cx=c_pps
 a=2pTyoxkMaluYXS6DGsynPQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=QxTsT6-JQxPL54EDDM4A:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: bUpQXXN30HAeZ0J2KmLEpkaPhwGM0ZXu
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX/9RxMCe/brvW
 vYgtC7HXalBicM40cxa7Us4SNiHfsnVAmK03Facwp5lTtQk8S4MEz2qAw0l+1eK4xPBVT0yMmCT
 lm2EC8zvNgSOrs4YvpipMVoexjv4xyKFcxzEPCBdIH6NwW2KTXnZ
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-d25034/1793842726-774D7A5B-42EE9F0C/0/0
X-purgate-type: clean
X-purgate-size: 1387

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 common/libc/string.c | 24 ++++++++++++++++++++++++
 include/xtf/libc.h   |  2 ++
 2 files changed, 26 insertions(+)

diff --git a/common/libc/string.c b/common/libc/string.c
index 8ddceab7419d..e0e40ccfa1df 100644
--- a/common/libc/string.c
+++ b/common/libc/string.c
@@ -97,6 +97,30 @@ int (memcmp)(const void *s1, const void *s2, size_t n)
     return res;
 }
 
+unsigned int atou(const char *s)
+{
+    unsigned int val = 0;
+
+    while ( *s == ' ' || *s == '\t' || *s == '\n' ||
+            *s == '\r' || *s == '\f' || *s == '\v' )
+        ++s;
+
+    if ( *s == '+' )
+        ++s;
+
+    while ( *s >= '0' && *s <= '9' )
+    {
+        unsigned int digit = *s++ - '0';
+
+        if ( val > (~0u - digit) / 10 )
+            return ~0u;
+
+        val = val * 10 + digit;
+    }
+
+    return val;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/include/xtf/libc.h b/include/xtf/libc.h
index 86d2abdf2c6a..62fd37c77d65 100644
--- a/include/xtf/libc.h
+++ b/include/xtf/libc.h
@@ -40,6 +40,8 @@ int memcmp(const void *s1, const void *s2, size_t n);
 
 size_t strnlen(const char *str, size_t max);
 
+unsigned int atou(const char *s);
+
 /*
  * Internal version of vsnprintf(), taking extra control flags.
  *
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473490.1681186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRG-0001X6-0N; Thu, 05 Nov 2026 01:38:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473490.1681186; Thu, 05 Nov 2026 01:38:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRF-0001VU-Lb; Thu, 05 Nov 2026 01:38:49 +0000
Received: by outflank-mailman (input) for mailman id 1473490;
 Thu, 05 Nov 2026 01:38:47 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRD-0001JK-Bt
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRC-00CQpG-Oh
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:46 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebdd76-bab6-0a2a0a5309dd-0a2a4508a366-48
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:46 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde24-f659-0a2a45080019-94a39217eeaa-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:46 +0100
Received: from pps.filterd (m0384718.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mkls966588
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:44 GMT
Received: from dm1pr04cu001.outbound.protection.outlook.com
 (mail-centralusazon11010058.outbound.protection.outlook.com [52.101.61.58])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrc5ghvrv-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:44 +0000 (GMT)
Received: from CH0PR13CA0039.namprd13.prod.outlook.com (2603:10b6:610:b2::14)
 by FT1PR16MB412983.namprd16.prod.outlook.com (2603:10b6:170:35::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:41 +0000
Received: from CH1PEPF0000A345.namprd04.prod.outlook.com
 (2603:10b6:610:b2:cafe::3e) by CH0PR13CA0039.outlook.office365.com
 (2603:10b6:610:b2::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4 via Frontend Transport; Thu, 5
 Nov 2026 01:38:41 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CH1PEPF0000A345.mail.protection.outlook.com (10.167.244.8) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:41 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50no3F1488046
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:40 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232wj2b-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:40 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmR3xqupP9qreOmR4xpvkl; Thu, 05 Nov 2026 01:38:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=IFm
	siu+h+ub8blEeRWfanAwLjZ8dBPkcuMyJSicCH0c=; b=lhk1JeOjZoaVEraPrt5
	lq0RpWxf6FeGb8TowBNyaq+VpdTEelZxA9+44Q0ugVucG3owbyBSLl9b+t9WZ7/G
	vwRqlhXVlKdrOPRXNBaXOA8wkmnXgC0qmVb2FY0Eiivqcf6ddGCuNcraWohykSjs
	RF84h/uIFxyoBN+CXtXsBNTklb/zxLdPasf4O3mMB+Acp1Xzo3DQZYMdM1ODJaUe
	amrIidseH3sLzDCaCQAXUBzBV8EGqPiNhj8SVsT4hJUqBuU44aRDtfBSuKy99HfF
	D1gmtWOklEgWihQzHboxJ2C00FsbMtY4UTIRrfMPekMVQsf+S075fAXUCZ+Q9sKr
	3SQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=w5yQiGKsSpGN/YvMX8kqFgmw+a6g0XGbcNGmgGZyM+evLB5LtM/u3HwmIDBz5yNUtKz5Q4IGnLrEqBjfttvr1MGUHZeovogsIh0vJ82f9IlqL4cGEDlgR1AgI6Xew4/EJmn/jQf7QW5BZd4btJxkB4JWjNp5+tiZ907R6FvobBwl0IY+KLi1J2AOwiXMMZNdFtF5WLgM78ihtRFzoOY1jf7EVnuYeH93vMlodfgiUdrmoO8MBb9XDRkqqsmhdHWMchaEEfuq8imkTmphjb592/5mesHSkEs13yZjGf0GR6c6oe+sVBdRJw0DA4vkApCuGUOQIVCMtXfjE2tD5qM/sw==
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=IFmsiu+h+ub8blEeRWfanAwLjZ8dBPkcuMyJSicCH0c=;
 b=ggO8sUHmgf9y1wRmHIanblfTeA3FdF0RmJ4t2FomSPGAiEGt1igQYGyZrEvMitV1GRE3irHzLZ0dNGI8NznRi+wYDtsHLMS+ZYfdeVO2BSU0JuaS1ePcxJ25u/HWs6xNlAYixn2UbjMp2X2cpsLZlubJ+L1T6X80+8neaydjq6CNxXF0P4s3oFCEJZlDbfxo+KuJDh5fOSCccjg98mZmkXSt2lYuXWHo26qWlX5IsYQCD1YzU26CcDKPLKAQMn4juAiyjdB/qN8O0iFlWUx0CKJsAwoG8r3l3SImXVsTUvbV3AVXpz/taQElcPWODqkcpjkggkPCgdBqPxj1Gogy/A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IFmsiu+h+ub8blEeRWfanAwLjZ8dBPkcuMyJSicCH0c=;
 b=Jt+hDo+b0UM6ZnJZmsvjl8DfP10Bb/UWlm4+ltnxiIkavTxbWj0MStUmeXmdInO5aTWhAZA1rIOnz5C6HFOsUaOzmclD+1xdtW4FFUs8QXS/IK4vvg5IAyHcRLO6iR/H1KpwcyCBVmlLd8majO49HkPXLoua+RqwWMtD2M9ID+E=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=IFmsiu+h+ub8blEeRWfanAwLjZ8dBPkcuMyJSicCH0c=; b=
	A8NEEfbDS31mWlPRaNtWVDIYAETZ7NTqVKHYFjOoNh7AuXZ0QlKXTe94wHzSSOAs
	5VMh6jD9GHeBFkc1w7JXRBA1y52Xp8sMB9RoqZbtXP0KKsZ5yPK9kuUof3JzKKf5
	FY836mT2MXpgvrOcoun16uLRSZowhSvm+7UsG54agMriD9ljGIoW4+554fDTxfCv
	mSYg+E3fsAXnjJs/uA667bitnT2mIQgwCQdyzoRm1yrs4YbuUGOFBvEr6G6v6k0E
	JMzSoO9MVgX1GLjGl3Pj6dQBKc5ChZMky8srI2Jn0tUl0YRBf/h9Mm2Uf//nj1z8
	zf0MZulcIcy74/gI8tC/YA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=IFmsiu+
	h+ub8blEeRWfanAwLjZ8dBPkcuMyJSicCH0c=; b=eOb7drPAMapeN4u+BkpeW3P
	6oit4+P6+4Eevz+WoV2thRxNeZaYCIaAAkFyCN+oDA8h1TyEblcOTRcRYmLpkHLB
	kluOKbAmwYDvZUrlvdvvbZqsBMgPMMNaFM+byUwMTyzuoG/wyqqrOdQFjaDa4D9c
	AStma2kq+XA7PMjcSK1WZqxx26PmxxZHlQm9ucr+KeKB1NlE8rs1SEkgfINJUdH+
	J1Tyfm+k+TK4LfkN4ZkC9a4pBJuzAxnVmtA6D0HsX4nEFF6MNYh1JpMHcA98o/3u
	v4HZ0khGLwhR1/F/nzjNlpEzO623UaTTTsjdVljWmd9S/Sl5+HwbYwkxVCxg0eg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmR3xqupP9qreOmR4xpvkl
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 06/15] common: add missing evtchn hypercalls
Date: Wed,  4 Nov 2026 17:38:08 -0800
Message-ID: <20261105013817.719823-7-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000A345:EE_|FT1PR16MB412983:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 60a1f426-f9fd-47f4-031d-08df3add85d0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261009223027099003|261021121427099003|261102123227099003|261026140227099003|261022105027099003|261028144727099003|261026121527099003|10067099003|22082099003|18002099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	2ex8wKIF1PNG9SgiHhfmJJJxYmDPJ5FX3H1LxXuNI9A+mGgmeDo8uY7BS+HE+lLf2XPclbndSAnOyyPbm5vWZeWG6VB6hSElVbOZAyT8CNyEeNrnIiJ2VAldzDDN1Hf4YLOYOIqjvYNJU79xkhmZy31o3gx8kI9NdQrFzonbAD+lcW1eejtEq2nT/UuRPwD57TJZylKTbj+pwjrrKGzKqRpu4NnLFMJOqhCtjGsLZ7kgtsxJewRsLrYTU2aSBRiyL5AoeaNEiXuvDNv2KcXItQiBiIEEAbmC3IDeovesQERpjbHJ//1TiyyBLLOcLV/ElFAXvbcOLs+C4smWdl67m3touh1nZ4QgomT5KTGrj0yy9OXJEes1bCz7Wu0B0Y3cnT/K+4Ei/wVPsCfVCMPtf1yMt0USJOgjTmh7PPgZh5UFjTDFCLvwHTEvN/NDHeqQ8XTgjnDapAdkHeU3ycJ7oaBip+/8BsVF91k1ekhqJDC8F5OW1dlo9OKUpH5BTASL7MUSQxZ5p6WE6eWosjBuL+u0BZajZjP8keJ/JwMzvU6zUOjidxHXMXDYS8JdwW/gHEh+bf6fGmhs5bUofFtCnLAf79wWgBbuhCQwsQifdLsgij5XnYvNXUDW7EVjQB6VWVluXsBsyWKPzSQucbqhp3Mr4kMIIevu55L+LnumWyRMhx3vAF6bAX6kDUiGZreu1Ey4xwCDmRTBd8bvlmLSMA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261009223027099003)(261021121427099003)(261102123227099003)(261026140227099003)(261022105027099003)(261028144727099003)(261026121527099003)(10067099003)(22082099003)(18002099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9LEqpzk4tGEM1MRNb+5KlGK2YLsVSzNRs+PToV277+PZVKUTjeQGFKqb32FSgUz30JVqoFUy8QzS2L0GkbR1z2N7HZmVjYezdcmv5jpvn/eVexli+b2dtUiNkAXJFw1dWO/pUaaYwveL7DHDf8njpwbMTTnVlXiRRq/n8F/p/wz1b2YcMkocr5TcaHLnOTa3z2zKU7mzy9ITEe9JWdrbuYsRK5LJvAzvzUQeIajTsOQQnU/uR9RpKHFbohEegdAqWD46KSDKImO1PoHpS6Dw1EsqVsKVeWalIJy9WT5+Tr7bGYkAJ8buQwH/5n91jO/JGeYooJWzisyWt/eu6vV5bJ4LQdzjT9tXLUWbZOuwS9ScNAhOLB23iuTbI0cRDePEk4DuWw+e0LBoPUNuSoolTFlitLruRIwdHwTukUCOwCbrH2BJqiEygV0vyIvIEh6T
X-Exchange-RoutingPolicyChecked:
	Sx3Ld0RwGp5j9P738p/suyk/h8oV482NvtJWPeFQYXeFA5s8eJQCfDGdyJ97aVlVdtk0WLXGumuQwyk561nAYTTWzuW6BLLtPnsTlD0EPJhbUK7aAKHP+910eknl4mtLwog1PtVxyhJC98WGo/RTVcMGCj/ah0u2fcTCoVDaqOY+t04TnBOpZ2GVyhGgUZJpY3UDSbTdAczxMIGUvAodFJky7s/ednAXg+GcgKtGrhYgl1VwS+aP8FDtgqR5Zj5dMq4CunxoMPSdFuapkI5o1sgDl7cPhZzz4i7m/laVtfw2wTsuITxiybuDDJx5BGhZ0QZW/ApM/SedHzuhMpsAZA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	N8KnThcq28KAyxWrojyubnEtNjExw5hMnjPtUuzzCrh4zwtHBRhxSQXP3OlKs+bif4e6sC8G3S9LlQIBIvUlemLLuPYnzt7gxry90aE3MrXzdLufiNTvWSqMV2ctm1+Mxd2OSSVDd47rDkGlmAWBuB13Cook1TVLUPhD52ZI/HvFFhjB2t5zy433Or5VdMviDQT7SwObD6zgOwgsH66ZewlBgnaeKespzZ9CD7SeSfexa9NR5M7IqTI7rAza3elUR0KxO41ERYHa1WlPrT2KjjUgl7GQUxKp+/4al0AVLJ5ufKSizjEawtxba4ebSngRH6cuId/IZWx+/7mIlN2MxzN1OaDJW/BZLJG8SkuXe94ZXFIhBZsOe1wQqGROBCycejgSaqZmJS5GGm3+csOV61vfLt1nJSdGlyiZuoGTtu/Gd0LATvVxDtsq+Tk6V4+APu1xNoU1Ui08lSm74NG8quIMawS+pJwYKs2RkSKPmAa0WqoCj234StqmYRvDYl0hptXYjRdqQJzDH/QTwxuK2EfYaim2fwvAfAlaVAHdV2PtjTE3Qj1qMqgrAYcYgw5UukB/OtYUyViTMov0n3cRexcTNY7jV9redZ4NFTtzAiSVFneWR9iqFhFlu4gDxY/3fTTJrVbJtB4oFpslIpMbzw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:41.4693
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 60a1f426-f9fd-47f4-031d-08df3add85d0
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH1PEPF0000A345.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FT1PR16MB412983
X-Authority-Analysis: v=2.4 cv=JawpPkKV c=1 sm=1 tr=0 ts=6aebde24 cx=c_pps
 a=2PUY6gUHBEqav+0eoazkAw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=ARvDHhclS48edyKYUbLB:22 a=cbNQJ9GKAAAA:8
 a=e17CkGIfPB0j-OmyU8UA:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX93UChqCGE11G
 FgRESNHAmLk9rJf6nCpmzEVLERfFX8dRiiaguDXaJmoY1sUN+/r70Y98Gu5esavRoM8NAAzj4Z4
 lqQgPyiA92+HvQJM+dTMwjlw2tzGKlb88dB0cX60X13ryxh3FG68ekX0Fsb8kHys6JBO8ZJr9zb
 n0yrtmB5ljWqN4KD0AO31HpxG/jHdyiDAIIDeD1IommWACBtbWkVb4ewzBMXXYpRiRoJvsrEPvu
 V3sJX2o0pJ1QD1vfSwssNm3BN/prLs9Uh7Kl8tXmpeRv5didQFKbuy8l5TRDspQ/qQKFq4GKvpa
 VyNE42Ut5hQhkjMGZXzl2W+uismJ+1oAbhVcoDVST5crbA+/cfCKh6BYUDCknw/2XnLRWVKlwKh
 pF1tvOH8aQIKn48wBWxyy0/hywuxVkUqg/37S7evN4IueGnVypVqWzbGoBfy1cdIlbECWCkHkfD
 G56TQVfKfhg4xrNBrbw==
X-Proofpoint-ORIG-GUID: l2-mazBy0BDwqoqfcJ-eU_9GBNSFUSaq
X-Proofpoint-GUID: l2-mazBy0BDwqoqfcJ-eU_9GBNSFUSaq
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX5AUpqIgEIdEq
 vrGWx+vMyx7ovDM0fx0uEEbAqW59czCo6enXJADL5xsNXcZjHThvxBhMc3OeXem0Yc5AoMTyuEm
 Bv42422LMl5DwLlQ00v7+38H+kjNyjPV9FnqTyS8jZueWEI30RTu
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 lowpriorityscore=0 suspectscore=0 clxscore=1015
 impostorscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0
 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound
 adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-purgate-ID: tlsNG-c1860d/1793842726-D497287B-525C4ACD/0/0
X-purgate-type: clean
X-purgate-size: 3258

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 include/xen/event_channel.h | 13 +++++++++++++
 include/xen/hvm/hvm_op.h    | 17 +++++++++++++++++
 include/xtf/hypercall.h     | 25 +++++++++++++++++++++++++
 3 files changed, 55 insertions(+)

diff --git a/include/xen/event_channel.h b/include/xen/event_channel.h
index 2068cc09eeba..734889356252 100644
--- a/include/xen/event_channel.h
+++ b/include/xen/event_channel.h
@@ -7,6 +7,8 @@
 #define EVTCHNOP_send             4
 #define EVTCHNOP_status           5
 #define EVTCHNOP_alloc_unbound    6
+#define EVTCHNOP_bind_ipi         7
+#define EVTCHNOP_unmask           9
 #define EVTCHNOP_init_control    11
 #define EVTCHNOP_expand_array    12
 
@@ -46,6 +48,17 @@ struct evtchn_alloc_unbound {
     evtchn_port_t port;
 };
 
+struct evtchn_bind_ipi {
+    uint32_t vcpu;
+    /* OUT parameters. */
+    evtchn_port_t port;
+};
+
+struct evtchn_unmask {
+    /* IN parameters. */
+    evtchn_port_t port;
+};
+
 struct evtchn_init_control {
     /* IN parameters. */
     uint64_t control_gfn;
diff --git a/include/xen/hvm/hvm_op.h b/include/xen/hvm/hvm_op.h
index 8c240d8d90b9..2b1866c7494c 100644
--- a/include/xen/hvm/hvm_op.h
+++ b/include/xen/hvm/hvm_op.h
@@ -15,6 +15,23 @@ struct xen_hvm_param {
 };
 typedef struct xen_hvm_param xen_hvm_param_t;
 
+#if defined(__i386__) || defined(__x86_64__)
+
+/*
+ * HVMOP_set_evtchn_upcall_vector: Set a <vector> that should be used for event
+ *                                 channel upcalls on the specified <vcpu>. If set,
+ *                                 this vector will be used in preference to the
+ *                                 domain global callback via (see
+ *                                 HVM_PARAM_CALLBACK_IRQ).
+ */
+#define HVMOP_set_evtchn_upcall_vector 23
+struct xen_hvm_evtchn_upcall_vector {
+    uint32_t vcpu;
+    uint8_t vector;
+};
+
+#endif /* defined(__i386__) || defined(__x86_64__) */
+
 #endif /* XEN_PUBLIC_HVM_HVM_OP_H */
 
 /*
diff --git a/include/xtf/hypercall.h b/include/xtf/hypercall.h
index 68b3da111d85..9d6d901d1668 100644
--- a/include/xtf/hypercall.h
+++ b/include/xtf/hypercall.h
@@ -241,6 +241,31 @@ static inline int hypercall_evtchn_alloc_unbound(struct evtchn_alloc_unbound *ub
     return hypercall_event_channel_op(EVTCHNOP_alloc_unbound, ub);
 }
 
+static inline int hypercall_evtchn_bind_ipi(struct evtchn_bind_ipi *bind)
+{
+    return hypercall_event_channel_op(EVTCHNOP_bind_ipi, bind);
+}
+
+static inline int hypercall_evtchn_unmask(evtchn_port_t port)
+{
+    struct evtchn_unmask unmask = {
+        .port = port,
+    };
+
+    return hypercall_event_channel_op(EVTCHNOP_unmask, &unmask);
+}
+
+static inline long hypercall_set_evtchn_upcall_vector(
+    unsigned int cpu, unsigned int vector)
+{
+    struct xen_hvm_evtchn_upcall_vector p = {
+        .vcpu = cpu,
+        .vector = vector,
+    };
+
+    return hypercall_hvm_op(HVMOP_set_evtchn_upcall_vector, &p);
+}
+
 static inline int hvm_set_param(unsigned int idx, uint64_t value)
 {
     xen_hvm_param_t p = { .domid = DOMID_SELF, .index = idx, .value = value };
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473493.1681198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRJ-0002B6-Fk; Thu, 05 Nov 2026 01:38:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473493.1681198; Thu, 05 Nov 2026 01:38:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRJ-0002Aq-9n; Thu, 05 Nov 2026 01:38:53 +0000
Received: by outflank-mailman (input) for mailman id 1473493;
 Thu, 05 Nov 2026 01:38:51 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRH-0001vR-J5
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRG-00CQpG-VO
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:50 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddcf-bab6-0a2a0a5309dd-0a2a4502bfa8-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:50 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde29-6ca4-0a2a45020019-94a38ff18e7e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:50 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mlwA226521
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:49 GMT
Received: from sa9pr02cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11013021.outbound.protection.outlook.com
 [40.93.196.21])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurcpq-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:49 +0000 (GMT)
Received: from CH2PR11CA0008.namprd11.prod.outlook.com (2603:10b6:610:54::18)
 by CH3PR16MB5468.namprd16.prod.outlook.com (2603:10b6:610:166::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:44 +0000
Received: from CH3PEPF0002457F.namprd04.prod.outlook.com
 (2603:10b6:610:54:cafe::1) by CH2PR11CA0008.outlook.office365.com
 (2603:10b6:610:54::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:44 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CH3PEPF0002457F.mail.protection.outlook.com (10.167.252.25) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:43 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n70b3230794
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:43 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnpd9-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:42 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmR6xkNAB7GL1OmR6xfFXb; Thu, 05 Nov 2026 01:38:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=OGy
	vi42fzytVdUxeSyzYUzwhVDhaRx7lfQ6dSZh8isA=; b=jdVAAT+SUPkIPDyqq0C
	t4vcQYJoQvZmAl5DXVcL1gopmpd0rR1jc46AEVVVLuUL5gyfg/ApTUj8CqE99Kax
	IoFWz/37GamPjE0+lj7rmoK/AbB2S8ybrgZmPAugvug5j3nxne0/mknxvMdshP5k
	EiZTFQ1OjuDgEF4iLGDYrPlnF+7uD6D/+IBJ+M9YMsZY/OpC5bhTrqt6riTaaM9S
	CvCwZEvTH4vWuDtsRSEZXAn9hNOKDEHwvjhc8vXxVwVe6+Z5rgKOGMOEGzYItbtN
	i476YHEGrb8daau+/onrUZmJlygH0XjIR4DSQBr+xAfjAiCuVX8oCTnH30PZKUV2
	KEw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=E3ymvlrndbYtmuFjuLAh2wROyFS/Wq3653Kn0f8lRf3xccnJzzp8KzVXvtLJcXvvA0Y7BwltU2vxDLxtlzK+I01nKPu5T2+bq0sjmGYdxIFhTD/h6d6ViVefJYGfY4IaWo0TvInbZJ02hrjyOeIfGlB/7hOaDBJmXaDuUf796HiPT4/CgYlSkD5p2t+82azU6RG6kmgI09LHhwKDlvhFDxFBVW5At/GE2qb6ElRplBqjKco8+wYIu6usHVOrET2F+gL2rYWq9I4awiHH9mC5X870dJv+sW0PqhgH4WanSiqb/nw1mKdahprhEIPgqWxujkOu8nJ/xL6I4JMZ+xaw1A==
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=OGyvi42fzytVdUxeSyzYUzwhVDhaRx7lfQ6dSZh8isA=;
 b=obj1Vx8AOeW4Q+rffUJtZse6xitSHL/d1WSK53170HTH1Z+HC+LoMvQfo6F10npY/zfBo2OW/i+7fJ2QmfQhjJzzcjDOQb+PNdTmFYZRuw3lZWMaKJNHr1rBD84Ml2F8hYQMkW5MYLsLpHhUwAWTvKgkq3TZ/DHS8vmRSts1e8mjdmrieNpsJH7uz5ho2BOPfqjLlW6OkyMbyiwJQWsjP2nT8MYjch+xu+HRbOp8w2n2c4IIFxoKPqsgs11Kf23m4TKHBaWvQOZPmh07+rHJGBv6Z0TgO/Js0ovGDDaa7WB00G/Sf2AEfAc7gBTl3qBwAenzz9wFc/UMHURDSUX8uA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OGyvi42fzytVdUxeSyzYUzwhVDhaRx7lfQ6dSZh8isA=;
 b=gADKhpWD7GeAtFCaA5HDOVWq3FhnhXd0EbznS/ShjM3EXXaftEEa+SOACILZJF2fYpL1u3IU6Q0NCfjQYaE5zrex65uBtmmq5j/hxrcPnwpt57dJjYIbRhSEvIzC0dfJ/1BnslLYAQbnv/o33jqOdjfOjnmcDOvhsUSdVtH/gdM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=OGyvi42fzytVdUxeSyzYUzwhVDhaRx7lfQ6dSZh8isA=; b=
	lQr9nxHR9ebLeMY5oLjPvaJWrUCxmPZDr1oaCJNrkS/HB8OfbW+RTeZMuvL41n6e
	PmRCRlidgbKFuFLFOZy6izQJ46xuid7nV+VWdqiJt5qTSiSM+iq11p3KmjjjNLzS
	brwf3KrCn9Us4UkPVY+QaHPNL/+PDjPakGKgLmYFK14MDUZXhyCBmmnEdasslqCI
	RlAI3i2x0ETdWkyYW0VXQicoVtBz6CIRhDzDtRFxVskxzHilEWSS5E55ynTfiOqU
	06pgygOxBDjHi59BzMXCvtauIpxzU+2u/rBrmbD+aXJ8glbChTB1Gj0HQWxSYkhf
	/vs6NL4y19hgHK1qdVZM4g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=OGyvi42
	fzytVdUxeSyzYUzwhVDhaRx7lfQ6dSZh8isA=; b=bFj/U80llO6Wqi61MR0MXwm
	PYy+dZLDd4umudTb/Q17UDyf9TzegtnzpP2M9xYc5hzN1nHO/Rz6QOCzZO69oxvn
	VsO3gbkEoGimEW27n5xrBunAbt3xa9I6FmIydnlMBjpi/MR2ajmgAfB6CNEL4vEj
	PlH+oluKIi+VfXyiUxBYl61B4uFwPdD1/sVRlUx+VIQ4CPwsdVnrxtrZGyR46AXl
	SXUq3vUj6BhMKP6ozY8MspA6LuhNdGFTiFqj87M+aewiHZ/+otOmi24by2JlYimM
	o1UmUwUyck5ciI8xWnMR4uKb8cGAqnDDQC8PVydTZilysbJRx9ZO9x30JMaU2Gw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmR6xkNAB7GL1OmR6xfFXb
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 07/15] common: enable XEN_DOMCTL_debug_op domctl
Date: Wed,  4 Nov 2026 17:38:09 -0800
Message-ID: <20261105013817.719823-8-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF0002457F:EE_|CH3PR16MB5468:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: c8fdc2aa-66f2-487a-b40e-08df3add872d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022105027099003|261009223027099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	fplAwnkOhZW4XRzfpISAtY2bWXmQl0zV5enOSwflgYqTMpc6bAuUSDSQye/5mRemiHqHULh+ypo/FZRYCGRISTwaTQHVigIqHThyHYm3U1tk3L1+LV6E4OKv5lZHblaniH2NE09RFUCjWP+Ma4fSUJ1v6hlcEFt4jqH/Uf9R4rgdTM4XzBW+v8PcMm+Lnq08yplF4Q06O2zi7ScilxvydFeOgDAGUxsPCHX190bhWq9/+uxWSOP9NLBjVbDRywndRaL+9UNHkoYXPp3jrPlFdaI/E4XMxZFrK0ySzpWGddu2W6caAC2LVBASdn0eQ3YBSrVddV5QDHWjBk31s8mAtjD8wJFRFVn1ba1nBwSUEv7VsjonH7gLQA40ulIaDBB4ylaRuSwnF744cOoyWNipFezAmm48QdHgdEBWgT1t/tOq1OhQzFjfmXHbGHk4zSQ4Bnf+2wRL7Z+VmSGKd10FQxx3nL5WRL2UjJ6JBh1cMX+FEcYTxvLCVYIFhBWVm56Lyn+8aZAZdKEl8csJxTytcFLNabr2UvePHEySyjFohKAOOnifpUQIA3fWQ0sTNMq8y7OXlhADajsyI5yZyS+24AdHefUH5X8IjAamlrzn8rfeMhqyb3bVQQRYA1cUiBQn/Chw+Uarm7jvjCokJ4k6y8D37AKyRh62y2PuxczUx0Ct3B0CLdISN1f3vYOa9EdR8n4QmEPlzGZb2kmf33FUjQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	8bL+NIM+eg51LA5Edmv8mltxf/amug9s7ADO3L0wgNjp63pT9xFKDDFMob2NORoIibBdUYP44x3yl4Shp4mMTHVrUoN9gzO2skSovfPVx6pY+/Zlnjn8+6NX2XOqq+IlzS+JHvOoXyxG255++6+KWDpTpnVQrkqnxtmv2vZZZ7c13g0BeN5G9OccApwW4L5m1YPhiYhshIfd1iX4EtKhQm8FtcVHrswEDuYP8KgBLaRQhqwvXjfDwfWL0uPyt+/229BCyuGx7ZjelfFzQA5orTbkP60M3X33xp9wEgtfxsUJ7NeQF7muBzcrCmWyaosMcl2cnU8hddhSX7cq6FDZBAZIVQ51EsDBnfhWGP88fAHrGNuHFc1FsqzHIcpbwNCIxOIeuI+3tUKPJ4VCoEBLO2Jk1mqFkFM/rb1DFwjuX7D9CM9J1opDpqgqV75cpJfn
X-Exchange-RoutingPolicyChecked:
	hsf1ukqrOIxRlXLfIzo2V6LEkK150zfRDA8w3RKX09jjW3dzThSnx/CUKRNQCHy9Erxe3o9hNQUQeB7YmJJEwYVP2Mj4BaaTeow+4rYTVAKzxRZ2CDc9tSzs3489aPeRkyJlMLuGijtLE8d9nDGcd+qdz+doIVUhhhyZ9v+eW8NMr0CngANSsD270zqz2rGQu0Ekvrmw+djzxcjOKYnU3alJqIco9rcwW7L7Ti2hLyS3kvCfUZzL3UQOdGdyOP/r3bDVun1UO6uYFv1grHmW+CfZefuIurXuhrE16IguTmQUzlEGJu5TDVRjsDarDjDflbho1hGQyakQ7vgHx5di0A==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	VQYpSwjj28y/79G5JIJg02girAkGo2itRQfV89YMJrCfadfVQdUusf5/MxES9686CmJN7cauxEFhYdkkPFiuFZ4RFc1McJilBm2XObVI9pHp6RF+Orn3rDZkFrjs8Mr6m3UvQgGl8i8PUn/eZsZFV8ulVQ9LpebacpXQBci0Q86ka97Es7MzyokkB6ATlKcihOzl+/0heAsIQEqg/uZq1wRs7CMUccb5QiscHoeS55H4bAOIG7msHQY1xG/5uLoSHkJLJN391ZDD6+kSX42kg8wTu9K7GU0xd62Blg1GFb9bDKHOuDzpcsBOAh9EBGyBKF+JwEl9WZbTkRmYlxeeeHUzcsowspREzbHmZ/9mjz+lpMSarNnzL6wSLX8kHfKoHXu05M4yOX7YI1N5S9lsNrctsHtyYlGVjIU/PkxldZGXYwqS368CW1aY9MRwdEmU6qHL+B7VieiURyG/H6US+2XLHsISalwyqwwIYY8JhyT2v2ViUlSf+KdoQEWAud/OS84DOL06QmYOb8vbP91YPt1Ad3R/R4iUqqRuLILG4NIAgvcM0f7C8j4EaMKmZJrFHsx9zP/Lw22/KEW8McykkoAACjfaeYVDrJG5houk6RMhwS36A8iO+4MP5qvMkUjUIvE5MxgIs+pubG6w75gTAA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:43.7649
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c8fdc2aa-66f2-487a-b40e-08df3add872d
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH3PEPF0002457F.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR16MB5468
X-Proofpoint-GUID: rgm5xMh6MMD-CICUxkI_a5hPDYZ6s6JR
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6GcLVmv4welN
 3/6XE15SZQMX/lcHT0ukD7RIgbgme1VVashrSYP11+eQBzX6Y5teDjHcczkShfaKpt0qBw0cJSq
 E6OVVc6j/SBirrTHrr87rg07q0iSOm8MUFVrjCemOiC/TbRtgkIM
X-Proofpoint-ORIG-GUID: rgm5xMh6MMD-CICUxkI_a5hPDYZ6s6JR
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX1dZIk9JInhy6
 aV/15xxhhkQNzpaTB2XhbWf2m8AvY5Lzw6OQ1UPk+/VlMrwMa/huJXgFBatBM0pspMf/+pr+u/p
 pKU+MxhNv8cKN/fRC1tXojIS24kDs3yat5oxhlc47AEpDoVnA1WrmKY1ThWqiDqKSL81nxe1lTx
 WPMuGokCxEO9pZuCOLRJxQAYDuF5f6G7nXuoBd4fFOzhYuscbGB1POUs8msNq9pD+UUSUWAI8vE
 AUfpAp3OS5z3lq18uFQR3kMrVIUiKIyjjyeXhBFpXR3zLDkCtNtaH3H4ESLX2LD7mAl1QipkBzw
 VihL2R8PBRgtK54C1Ona+quqz7IOF8KgzyAiMeRksc+86SbA2K13Tb3TMzKPMVjoBqH0e3o4p5j
 nPxv1nZKkkcCQ2Vc0WM+N4HzV4qppegt3hpuLgQjSMKa5Kw41EJERjGXZuVxrLSKeO9hZ2s1HvZ
 C7tfhgSht3cKBjX3ZtA==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebde29 cx=c_pps
 a=L/RFU+sPSyhylg1snxNseA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=26-L8s441i07vw0byR8A:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-720697/1793842730-303C42AC-5757E5B5/0/0
X-purgate-type: clean
X-purgate-size: 3273

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 include/xen/domctl.h    | 63 +++++++++++++++++++++++++++++++++++++++++
 include/xtf/hypercall.h |  6 ++++
 2 files changed, 69 insertions(+)
 create mode 100644 include/xen/domctl.h

diff --git a/include/xen/domctl.h b/include/xen/domctl.h
new file mode 100644
index 000000000000..5c3241d503d1
--- /dev/null
+++ b/include/xen/domctl.h
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: MIT */
+/******************************************************************************
+ * domctl.h
+ *
+ * Domain management operations. For use by node control stack.
+ *
+ * Copyright (c) 2002-2003, B Dragovic
+ * Copyright (c) 2002-2006, K Fraser
+ */
+
+#ifndef __XEN_PUBLIC_DOMCTL_H__
+#define __XEN_PUBLIC_DOMCTL_H__
+
+#include "xen.h"
+
+/*
+ * The interface version needs to be incremented by 1 in case the interface
+ * is modified in an incompatible way AND if the version hasn't been
+ * incremented in the current development cycle already.
+ * Pure additions (e.g. new sub-commands) or compatible interface changes
+ * (e.g. adding semantics to 0-checked input fields or data to zeroed output
+ * fields) don't require a change of the version.
+ * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
+ *
+ * Last version bump: Xen 4.23
+ */
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000019
+
+/* XEN_DOMCTL_debug_op */
+#define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_OFF      0
+#define XEN_DOMCTL_DEBUG_OP_SINGLE_STEP_ON       1
+#define XEN_DOMCTL_DEBUG_OP_POSTED_INTR          3
+struct xen_domctl_debug_op {
+    uint32_t op;   /* IN */
+    uint32_t vcpu; /* IN */
+    uint32_t arg;  /* IN */
+};
+
+struct xen_domctl {
+/* Stable domctl ops: interface_version is required to be 0.  */
+    uint32_t cmd;
+#define XEN_DOMCTL_debug_op                      54
+    uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
+    domid_t  domain;
+    uint16_t _pad[3];
+    union {
+        struct xen_domctl_debug_op          debug_op;
+        uint8_t                             pad[128];
+    } u;
+};
+typedef struct xen_domctl xen_domctl_t;
+
+#endif /* __XEN_PUBLIC_DOMCTL_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/include/xtf/hypercall.h b/include/xtf/hypercall.h
index 9d6d901d1668..61127eeae174 100644
--- a/include/xtf/hypercall.h
+++ b/include/xtf/hypercall.h
@@ -42,6 +42,7 @@ extern uint8_t hypercall_page[PAGE_SIZE];
 #include <xen/hvm/hvm_op.h>
 #include <xen/hvm/hvm_vcpu.h>
 #include <xen/hvm/params.h>
+#include <xen/domctl.h>
 #include <xen/memory.h>
 #include <xen/physdev.h>
 #include <xen/sched.h>
@@ -185,6 +186,11 @@ static inline long hypercall_sysctl(xen_sysctl_t *arg)
     return HYPERCALL1(long, __HYPERVISOR_sysctl, arg);
 }
 
+static inline long hypercall_domctl(xen_domctl_t *arg)
+{
+    return HYPERCALL1(long, __HYPERVISOR_domctl, arg);
+}
+
 static inline long hypercall_argo_op(unsigned int cmd, void *arg1, void *arg2,
                                      unsigned long arg3, unsigned long arg4)
 {
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473494.1681207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRM-0002c1-5f; Thu, 05 Nov 2026 01:38:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473494.1681207; Thu, 05 Nov 2026 01:38:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRM-0002bl-0b; Thu, 05 Nov 2026 01:38:56 +0000
Received: by outflank-mailman (input) for mailman id 1473494;
 Thu, 05 Nov 2026 01:38:54 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRJ-0002Bx-UD
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRJ-00CQpG-31
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:53 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde11-bab6-0a2a0a5309dd-0a2a450a8416-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:53 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde2b-f2d2-0a2a450a0019-94a392173334-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:52 +0100
Received: from pps.filterd (m0367124.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mW5r1469725
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:51 GMT
Received: from ph7pr06cu001.outbound.protection.outlook.com
 (mail-westus3azon11010020.outbound.protection.outlook.com [52.101.201.20])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdk51295-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:50 +0000 (GMT)
Received: from CY8PR19CA0028.namprd19.prod.outlook.com (2603:10b6:930:6::6) by
 CO6PR16MB4020.namprd16.prod.outlook.com (2603:10b6:303:a4::22) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.10; Thu, 5 Nov 2026 01:38:46 +0000
Received: from PH3PEPF0005961D.namprd05.prod.outlook.com
 (2603:10b6:930:6:cafe::5b) by CY8PR19CA0028.outlook.office365.com
 (2603:10b6:930:6::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:46 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 PH3PEPF0005961D.mail.protection.outlook.com (10.167.243.27) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:46 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mP183108414
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:45 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb48-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:45 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmR9xukLqz55iOmR9xXN7N; Thu, 05 Nov 2026 01:38:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=wPk
	5MiQpW3L4/cUn6ZNGOeDWfT7+2sCu03MdvRd5xzk=; b=dstgd3V7sEztBcDJOxh
	/68m4DNxUNu/jb/zpVa4RKIVEzewdXYLTEgt6ckfyX/i+/hF69Od32V9vkXF9ugb
	WH78sGnIdbQ2sRdLKeG53hQu4hsMjSZiQaOjoPUan0VUCwbc7IR5KYqcVUYtMAM+
	mh46dIKxfCiSV7R4rjGYpDBzDxX3sRs5TcfqlKb869SV12pOP7SEUbQCe1EFEMrk
	XaYRs4sICwYPVo65aGxN9wmdE3qkMN+vjHb+Jk7OakWvKi87DJxRsPM8Eu1INvwO
	6LfgnV1KvbqK9VGTyEIudXVXI8Tgl5e+9vgLEcaAG/IhNfb1FuN1aeOsW6yEbQZc
	9cA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=W/3XnYa9VLUYeGGwkcOH+SMh22RJRNrM65iZYx2uuJTVCwX+S7+cp+fPy2FF4rLp/IK0n2jvDazGBnWt3J5qfTndxFdFrQYk03Nlf1XEZotXUMYQ4wxB3tyyni+GYd6GHyoI7Qq+hWM1dgkUGrtgELrZk2C3Wq5MFI5SRvbF2TQzivSJyHHidOm/elZytCDKDT9RO5UZM1TGL7QkgIo23oqL3rARTfCx7LK6zItt+GQPv01pmiCeVBBEIryit8TKkLJIZH4DmjjGj1iyIgbOfdLHxFCdX3qIAkdTzAguh8xEQArtrDN6RlgxO23wmxsZSxzgfyrGraYe92IRH46KaA==
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=wPk5MiQpW3L4/cUn6ZNGOeDWfT7+2sCu03MdvRd5xzk=;
 b=CeoZErfFdWT9vE39wiFnQ0DIet2uumiotrkG2rf1jAMZJSnOQaDgUqEvLmeDbCB11W5FAsHn/Z/zGn2nJMjK013mtweebeZf/WXuUf5w0oLFlQwB0pkAF1SLXuYyfp4SkT7Vt50gmAMfG+jNMqq5wUQNH4Ac7f0pcAc5L2u6vZTeOZZmbvkO2X0yKBar2BjAMae2sdsZhWBY7gSZv/BjVQAIUcTEQ0cpsdlm+Ion8mdeN0evlKCHjhFFD18gkGovAktxcmulorq4car2pcnu21dtAz6QeV6mRiECZUD7gECKLHGHFiG2KSjVW7+c2FOB0bP3NCdvo/7s/8RwctPZ1w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=wPk5MiQpW3L4/cUn6ZNGOeDWfT7+2sCu03MdvRd5xzk=;
 b=JXFPvEKc7hiLiiCuHvYLb57Fq+JxHJ0+ahEx1hNbh7sbx1QyIw8dxo12vQbPQ3/quE1nr10SIQDBDKcvGb7vCbSeQoXpoUrcjYUPPrd7fHEyA0Yxgnn5b1bZ8GAjMdTKtlhX7wW4q9ZadwkiLXl0SZ8xOQYn0z+GVtGp3dXjyFU=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=wPk5MiQpW3L4/cUn6ZNGOeDWfT7+2sCu03MdvRd5xzk=; b=
	g+YVPgGxl1ziyOcXGucZZbyZVhvSAa0AWGOaayI0ThS5g/9BQw12lDIfZKWKZQpW
	AR6xG0MrPeMZDOGaJjw6EJDtBSj7nWbRT+AJwpBnKZa3ikUkEDosozvBptyvHTX7
	+Jcg1uB4w+kVFgiHBzAdhMXcpEmQBbiwbS2FDokcoXn3dSho0/Iot3q0yNWIZqvI
	XEcQDlddbJG95WCGNM1tLObgs2NoCnDRqPPSquDjbKcrAKmzcJIvOfuMa7dCDsLa
	gwtc3BWQLA2erc7RIhqcO5or1DqTH7dbl8dkGZ4VN8cSZXelV4dvm5aPpz23aTPK
	4hsp5yUWkWEI9dwXnurQhg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=wPk5MiQ
	pW3L4/cUn6ZNGOeDWfT7+2sCu03MdvRd5xzk=; b=qgCDHBae+828qas9eqQRh+T
	MrmjaZ+itfkjcebQ1i3HqpTNZvv7LQCqmpEJTUL2jj3Xeuw1usff9AKaD/a/WAhs
	CD16U8WMXdiD5Uutj8cgyyrQaC1aIrMXnk/gkCk6ZsIh3z9drQJYD6j+WvX3bDBR
	kURSFLSsSDTuVN2qMMOMM92NITHSZrn3S/wSp75SNmjMiJXUldyem0qR9mhUfVFf
	FtLJZWFp2UCyVkTnUQYfZCw4bGtnbMCVn7Xa3Re5FAbdnoIdlj1CGuJZ5uvuen47
	is1uLbiN8kULMDVos4ZQoWM2xbyywKnpAshnJBV32UUztqvlEvvcIkckqEWTJuw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmR9xukLqz55iOmR9xXN7N
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 08/15] common: add primitives for measurements
Date: Wed,  4 Nov 2026 17:38:10 -0800
Message-ID: <20261105013817.719823-9-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH3PEPF0005961D:EE_|CO6PR16MB4020:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 1cd60091-5abc-4dd0-2ce8-08df3add8891
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|376014|23010399003|1800799024|6133799003|10067099003|22082099003|18002099003|56012099006|11063799006|261022115727099003|261022105027099003|261022075727099003|261102123227099003|261028144727099003|261026140227099003|261021121427099003|261009223027099003|260925022911599003|260925021911599003|260925021311599003;
X-Microsoft-Antispam-Message-Info:
	Armf5Z4UqJ6fy5QB/H/lmln3CDFuvJzlL6UVLFy0kb4ECGQRE8c0DqFvNJYuGJJuXiDrpF8U6T3IWEoUADnwGnLP/h1iFu9nsF7u88t8iBk2kBUbQ9Syo3vzHhDPhgrPTqpIeTLQ68zaR16lQBbqS1SU1CnBIJKJuQwS7dOG85jhRes+S8guy8ha2xVKITlYjcYcGVD5UMt5R+TCJjboAvFDfFvJWeH2zzdqKnkV9kORaF+7uFeoxQ22U8GNyyXtYOIIruJY/7ISCP2oj3A2D0L2ua9bMTbYs2k3s94lbC5xbag+/Fg6Z6nqTymCGNEa+QEG1IWq0pNJJBzhTuC7ko0TtZViCyccCTtzKa9FRowq5Uv8BN8nSW/vAgxLewI7gGkzzEjVOSkRBDcgbeaUV1D4lHV7gWq2XD4HzkacCxnaUAbpsK/l+mpcDFBfzJC9Un+cXMPy6Vz3BckClDEifb0nMuy64rVvcRaD23VdehYitRko0gZ9LeqRq8P+iUpUhpFZOnRchCl3M85j26rknyWeIVdWvdldHKl50M6O6m2ZZxik8tickkt6VEFJxF21spgb32uV/aE1rSFb2GF6VgIT+U95OsU5yDtnJQ057TN8jt2PB2hfHySUKW66MhK0JiDy2Uim1wd8+BGzT5RSExINOY/QDGyTPgOGS26IiNx84FioNVOKyKl91xrsQK+ghjIe1m/OdGS2EW5Qq9XtCA==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(23010399003)(1800799024)(6133799003)(10067099003)(22082099003)(18002099003)(56012099006)(11063799006)(261022115727099003)(261022105027099003)(261022075727099003)(261102123227099003)(261028144727099003)(261026140227099003)(261021121427099003)(261009223027099003)(260925022911599003)(260925021911599003)(260925021311599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	BifAZB8Hai80RrDtvWedhzUz1IyYMCN1ZcSppHVXpNm+arGAe++0xIBV6oua88Ie6jqgckNZOC5q4bOz3ky/CObcInYIlt/n0D0btgeBbXm9jsYYy2j8JbGUZdILPN1uzokI+Fx5cCyZ60f1bZI80Uf6OimKSciVwrtX+0ci29B5WYf1PNK5kb71XceJurE2JVOIPusiunjrq+U1lpzBEuoD7cn/9GP7/EskuJbZmtGxQWR5h6Sf/JyFQjEeb0bvsddGmngy3noYUBf4DI4d94glYKxJgc9nJN56BzLQ0W8P/c2S1VNdmDt/F4i4nksbU0UN0cUeQIw0s1pPJn/15vwO3nqnxzPzKZyoVvCDRRE08gA+0U68YoUg9VrWPnKF6twg1S8B3s69pUiqAx3jnviObObFvrlMTX4jyHDnS39H6GsVAAKPvHm85u68U7t2
X-Exchange-RoutingPolicyChecked:
	ZM+a7rNOxoIU3BfCFqHlm9wVAdL/KIcgf3sXJCsXLu1cbuZY43l8uH5ad3I2pDpV+miPl5O708CGEeXqH5rcL8DQsjARwQTfWR/VgWd2EmkRPe1wWifheje7RLOYPri7eBELeECzkcLHBm9qun2tNpZqM52YHFrZzfjSCYtWNblQWCdHQ8xP5zgamLDAga0JUv2dZyx4VDYl2dMmyw09kCB9MBfcSf/j3iaghLR4wMn44pKSMX15exE5YXyI0kCoWlfEIhakXgHgdL/EDfBGqQpDQV5EAGndwflC4r60K3foHSle8IW+39BDFKtV7v5cJ6jZ01n6026cfcKhkuYYnA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	TTuZr/uwaR5PxHjE6r+bVRNNOnKWEzMaKMjvNBEjsYlrGGMAiuODNKxKP/kVUoqyD2Se3F9cw9xymuVTF4nhZDutsKyVDYbpqCPNhEWQQ1dSgWy2eUkW+/Rrmkz7xNnmg/wWoY8vwzkfzhArrcyD23ukkR7gvdEN1k+Lvd/nRg1CO2gfzmI/WLtL7VXmioLZXll3AXCG2XwFyD0KcaqADcaf8ichCGjZYzGhzzDCmPj6H4OXuVVkEo3IEiDRlYVJCmn/lt/S9Bx3CjAys+BGr5548AsbcoW7GHnjlQSMbGhdcnp48nbTbbG6vrOVxkXFjZHEgcIwV4+HksrHu/4elRimTitr2hB83Ak123buKGVzyhjdsuXzTu2FPNXEr3Wq3BmstXb6P6a0nRxEAhXLwBVa2h9HDIMpYNHbgdEn70en4V/iKESQdi3gus8X3BRhVY3Fq9NYyXESGkH/4x2vrX8vuoGbm2mkxziuRtu0Pl0CYFvJQPcoslg+fiqVniBAs9rULemKiJqTLwl0OH9pFu2lAZqzx503a47NMI4/8lUJ5KNLr6UvVRUJpLazYPqXZEmnBlvv2rGYokvHA/TOzn9NWCtVPKxRMfJCpWS4lBSYFgOy9heAhbdwN3roSDaOfoGLBwjKSCvor7ccXoXbQg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:46.1636
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1cd60091-5abc-4dd0-2ce8-08df3add8891
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	PH3PEPF0005961D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR16MB4020
X-Proofpoint-GUID: ZuyTCo__SJEOOeifXxqjEyv6IjKimppe
X-Proofpoint-ORIG-GUID: ZuyTCo__SJEOOeifXxqjEyv6IjKimppe
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX5YuU3NBxo4Hv
 n3DqGVwnPWkmi+oiUlO4XD0+VxPFLV2dGHxH1tKrryzbxVbRGfkKepUHM3uoayL9oTvt7qJGV+9
 +2wLcstFPkTlhKAmwYZslXBxjLHAYFoaEqLTilSeBEWd9WVIEO/j
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX6W1JEStfKAkd
 XlRmYqbEe5Su5dVy8JQqWGJtk9Ple5M46vyg8qwBeEpWrmLH6Dm0CMiJl+b0CQhPpQiDDfQVQhk
 jRiikK58BQPQAzhET+31u8EjkWgGSpdr5cwts0Jlj+0da6K/vul1xThXKEEmi1g6Cs9GTjlJeYx
 S9/wJ3msCoHG5Tt5kjoppRyyAR73ax6B1bb3g0GiqshMkuNIFdEGt1hFP3EjORyos1EdH/He3Pn
 6Z9KcfLh7KrmvmE+BiMAVtpxIvE0j0UstNzUPlULEH8MtTTGZJzgnnp62KqXkxMm0adqjPZPNDR
 xEaRHxeRHi1qi739S+AE5MY6QMuFEjoubvh0lnLDSBBDg56WbKqEjUc7Tt45V4S6JL+xoWSjUQS
 ioR3ao6nx+EuIHPZjG2wZMu5txVLChh8q86QcYCGg+uyCZG9fjnpsIF/5lu45Mb60MDm0lY1AtM
 N2xl9AAhz5lJlpSUKyQ==
X-Authority-Analysis: v=2.4 cv=BOImP1QG c=1 sm=1 tr=0 ts=6aebde2a cx=c_pps
 a=RzNzSA3Xhmsnv5027CV2rw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=YJXg7OVxOWrJwj3yZo-i:22 a=cbNQJ9GKAAAA:8
 a=MNfMRlR0M0Ee9eYNpn8A:9 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 suspectscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0
 adultscore=0 clxscore=1015 malwarescore=0 impostorscore=0 bulkscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842733-51CC3CFC-7AD9DD13/0/0
X-purgate-type: clean
X-purgate-size: 12645

From: Denis Mukhin <dmukhin@ford.com>

Add new module (hvm64 only) to enable measurements aggregation and
printing from the XTF.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 build/files.mk           |   1 +
 common/statistics.c      | 364 +++++++++++++++++++++++++++++++++++++++
 include/xtf/statistics.h |  23 +++
 3 files changed, 388 insertions(+)
 create mode 100644 common/statistics.c
 create mode 100644 include/xtf/statistics.h

diff --git a/build/files.mk b/build/files.mk
index 11624a89a21c..8a7d6f8d588f 100644
--- a/build/files.mk
+++ b/build/files.mk
@@ -55,4 +55,5 @@ $(foreach env,$(32BIT_ENVIRONMENTS),$(eval obj-$(env) += $(obj-32)))
 
 # 64bit specific objects
 obj-64  += $(ROOT)/arch/x86/entry_64.o
+obj-64  += $(ROOT)/common/statistics.o
 $(foreach env,$(64BIT_ENVIRONMENTS),$(eval obj-$(env) += $(obj-64)))
diff --git a/common/statistics.c b/common/statistics.c
new file mode 100644
index 000000000000..00292d97c8cb
--- /dev/null
+++ b/common/statistics.c
@@ -0,0 +1,364 @@
+#include <xtf/lib.h>
+#include <xtf/statistics.h>
+#include <xtf/time.h>
+#include <xtf.h>
+
+#define HIST_WIDTH 50
+
+static const uint64_t bucket_limit[] = {
+    /* 0 .. 10, step 1. */
+    1ull, 2ull, 3ull, 4ull, 5ull,
+    6ull, 7ull, 8ull, 9ull, 10ull,
+
+    /* 10 .. 100, step 10. */
+    20ull, 30ull, 40ull, 50ull, 60ull,
+    70ull, 80ull, 90ull, 100ull,
+
+    /* 100 .. 500, step 10. */
+    110ull, 120ull, 130ull, 140ull, 150ull,
+    160ull, 170ull, 180ull, 190ull, 200ull,
+    210ull, 220ull, 230ull, 240ull, 250ull,
+    260ull, 270ull, 280ull, 290ull, 300ull,
+    310ull, 320ull, 330ull, 340ull, 350ull,
+    360ull, 370ull, 380ull, 390ull, 400ull,
+    410ull, 420ull, 430ull, 440ull, 450ull,
+    460ull, 470ull, 480ull, 490ull, 500ull,
+
+    /* 500 .. 1000, step 50. */
+    550ull, 600ull, 650ull, 700ull, 750ull,
+    800ull, 850ull, 900ull, 950ull, 1000ull,
+
+    /* 1000 .. 5000, step 100. */
+    1100ull, 1200ull, 1300ull, 1400ull, 1500ull,
+    1600ull, 1700ull, 1800ull, 1900ull, 2000ull,
+    2100ull, 2200ull, 2300ull, 2400ull, 2500ull,
+    2600ull, 2700ull, 2800ull, 2900ull, 3000ull,
+    3100ull, 3200ull, 3300ull, 3400ull, 3500ull,
+    3600ull, 3700ull, 3800ull, 3900ull, 4000ull,
+    4100ull, 4200ull, 4300ull, 4400ull, 4500ull,
+    4600ull, 4700ull, 4800ull, 4900ull, 5000ull,
+
+    /* 5000 .. 10000, step 100. */
+    5100ull, 5200ull, 5300ull, 5400ull, 5500ull,
+    5600ull, 5700ull, 5800ull, 5900ull, 6000ull,
+    6100ull, 6200ull, 6300ull, 6400ull, 6500ull,
+    6600ull, 6700ull, 6800ull, 6900ull, 7000ull,
+    7100ull, 7200ull, 7300ull, 7400ull, 7500ull,
+    7600ull, 7700ull, 7800ull, 7900ull, 8000ull,
+    8100ull, 8200ull, 8300ull, 8400ull, 8500ull,
+    8600ull, 8700ull, 8800ull, 8900ull, 9000ull,
+    9100ull, 9200ull, 9300ull, 9400ull, 9500ull,
+    9600ull, 9700ull, 9800ull, 9900ull, 10000ull,
+
+    /* 10000 .. 100000, step 1000. */
+    11000ull, 12000ull, 13000ull, 14000ull, 15000ull,
+    16000ull, 17000ull, 18000ull, 19000ull, 20000ull,
+    21000ull, 22000ull, 23000ull, 24000ull, 25000ull,
+    26000ull, 27000ull, 28000ull, 29000ull, 30000ull,
+    31000ull, 32000ull, 33000ull, 34000ull, 35000ull,
+    36000ull, 37000ull, 38000ull, 39000ull, 40000ull,
+    41000ull, 42000ull, 43000ull, 44000ull, 45000ull,
+    46000ull, 47000ull, 48000ull, 49000ull, 50000ull,
+    51000ull, 52000ull, 53000ull, 54000ull, 55000ull,
+    56000ull, 57000ull, 58000ull, 59000ull, 60000ull,
+    61000ull, 62000ull, 63000ull, 64000ull, 65000ull,
+    66000ull, 67000ull, 68000ull, 69000ull, 70000ull,
+    71000ull, 72000ull, 73000ull, 74000ull, 75000ull,
+    76000ull, 77000ull, 78000ull, 79000ull, 80000ull,
+    81000ull, 82000ull, 83000ull, 84000ull, 85000ull,
+    86000ull, 87000ull, 88000ull, 89000ull, 90000ull,
+    91000ull, 92000ull, 93000ull, 94000ull, 95000ull,
+    96000ull, 97000ull, 98000ull, 99000ull, 100000ull,
+
+    /* 100000 .. 1000000, step 50000. */
+    150000ull, 200000ull, 250000ull, 300000ull, 350000ull,
+    400000ull, 450000ull, 500000ull, 550000ull, 600000ull,
+    650000ull, 700000ull, 750000ull, 800000ull, 850000ull,
+    900000ull, 950000ull, 1000000ull,
+
+    /* Coarse tail buckets. */
+    10000000ull, 100000000ull, 1000000000ull, ~0ull,
+};
+
+_Static_assert(ARRAY_SIZE(bucket_limit) == NR_BUCKETS,
+               "NR_BUCKETS must match bucket_limit[]");
+
+/* First bucket whose upper limit is strictly greater than sample. */
+static unsigned int find_bucket_gt(uint64_t sample)
+{
+    unsigned int lo = 0, hi = NR_BUCKETS - 1;
+
+    while ( lo < hi )
+    {
+        unsigned int mid = lo + (hi - lo) / 2;
+
+        if ( sample < bucket_limit[mid] )
+            hi = mid;
+        else
+            lo = mid + 1;
+    }
+
+    return lo;
+}
+
+void xtf_add_sample(struct statistics *s, uint64_t sample)
+{
+    if ( sample < s->min )
+        s->min = sample;
+
+    if ( sample > s->max )
+        s->max = sample;
+
+    s->sum += sample;
+    s->count++;
+    s->bucket[find_bucket_gt(sample)]++;
+}
+
+/* Nearest-rank percentile, expressed as a rational number. */
+static unsigned int get_bucket_by_quantile(const struct statistics *s,
+                                           unsigned int numerator,
+                                           unsigned int denominator)
+{
+    uint64_t target, seen = 0;
+    unsigned int i;
+
+    if ( !s->count )
+        return 0;
+
+    target = (s->count / denominator) * numerator;
+    target += ((s->count % denominator) * numerator + denominator - 1) /
+              denominator;
+
+    for ( i = 0; i < NR_BUCKETS; ++i )
+    {
+        seen += s->bucket[i];
+
+        if ( seen >= target )
+            return i;
+    }
+
+    return NR_BUCKETS - 1;
+}
+
+static uint64_t get_bucket_value(unsigned int bucket)
+{
+    /* Last bucket is open-ended; report its lower bound. */
+    if ( bucket >= NR_BUCKETS - 1 )
+        bucket = NR_BUCKETS - 2;
+
+    return bucket_limit[bucket];
+}
+
+/*
+ * Choose units by magnitude while preserving nanosecond precision:
+ *   < 1 us: integer ns
+ *   < 1 ms: us with three fractional digits
+ *  >= 1 ms: ms with six fractional digits
+ *
+ * Select units independently for each histogram boundary.
+ */
+enum time_unit {
+    TIME_NS,
+    TIME_US,
+    TIME_MS,
+};
+
+static enum time_unit get_time_unit(uint64_t ns)
+{
+    if ( ns >= 1000000 )
+        return TIME_MS;
+
+    return ns >= 1000 ? TIME_US : TIME_NS;
+}
+
+/* Fixed-width time field for histogram and summary columns. */
+static void print_time_field(uint64_t ns)
+{
+    switch ( get_time_unit(ns) )
+    {
+    case TIME_NS:
+        printk("%15"PRIu64" ns", ns);
+        break;
+
+    case TIME_US:
+        printk("%11"PRIu64".%03"PRIu64" us",
+               ns / 1000, ns % 1000);
+        break;
+
+    case TIME_MS:
+        printk("%8"PRIu64".%06"PRIu64" ms",
+               ns / 1000000, ns % 1000000);
+        break;
+    }
+}
+
+static void print_metric_value(const char *op, uint64_t cycles)
+{
+    printk("%2s %12"PRIu64"  ", op, cycles);
+    print_time_field(cycles_to_ns(cycles));
+}
+
+void xtf_print_histogram(const struct statistics *s)
+{
+    uint64_t low = 0, hits = 0, peak = 0;
+    unsigned int i, entries = 0;
+
+    for ( i = 0; i < NR_BUCKETS; ++i )
+        if ( s->bucket[i] > peak )
+            peak = s->bucket[i];
+
+    for ( i = 0; i < NR_BUCKETS; ++i )
+    {
+        uint64_t count = s->bucket[i];
+
+        if ( count )
+        {
+            uint64_t pct;
+            unsigned int width, j;
+
+            hits += count;
+            entries++;
+
+            /* Per-bucket percentage rounded to 0.00001%. */
+            pct = (count * 10000000ull + s->count / 2) / s->count;
+
+            /* Round up and show at least one marker for a nonempty bucket. */
+            width = (count * HIST_WIDTH + peak - 1) / peak;
+
+            if ( i == NR_BUCKETS - 1 )
+                printk("  >=%12"PRIu64"%12s", low, "");
+            else
+                printk("%12"PRIu64" .. %12"PRIu64,
+                       low, bucket_limit[i] - 1);
+
+            printk(" | ");
+
+            if ( i == NR_BUCKETS - 1 )
+            {
+                printk("  >=");
+                print_time_field(cycles_to_ns(low));
+                printk("%18s", "");
+            }
+            else
+            {
+                print_time_field(cycles_to_ns(low));
+                printk(" .. ");
+                print_time_field(cycles_to_ns(bucket_limit[i] - 1));
+            }
+
+            printk(" | ");
+
+            for ( j = 0; j < HIST_WIDTH; ++j )
+                printk("%c", j < width ? '#' : ' ');
+
+            printk(" | %3"PRIu64".%05"PRIu64"%% | %10"PRIu64"\n",
+                   pct / 100000, pct % 100000, count);
+        }
+
+        if ( i != NR_BUCKETS - 1 )
+            low = bucket_limit[i];
+    }
+
+    ASSERT( hits == s->count );
+
+    printk("\nTotals:\n");
+    printk("    Hits: %"PRIu64"\n", s->count);
+    printk("    Entries: %u\n", entries);
+    printk("\n");
+}
+
+void xtf_finalize_statistics(struct statistics *s)
+{
+    s->p99 = get_bucket_value(get_bucket_by_quantile(s, 99, 100));
+}
+
+enum metric_id {
+    METRIC_MIN,
+    METRIC_AVG,
+    METRIC_P50,
+    METRIC_P99,
+    METRIC_P999,
+    METRIC_P9999,
+    METRIC_P99999,
+    METRIC_MAX,
+};
+
+static const struct {
+    const char *name;
+    unsigned int numerator, denominator;
+} metric[] = {
+    [METRIC_MIN]    = { "min",     0,     0 },
+    [METRIC_AVG]    = { "avg",     0,     0 },
+    [METRIC_P50]    = { "p50",    50,   100 },
+    [METRIC_P99]    = { "p99",    99,   100 },
+    [METRIC_P999]   = { "p99.9", 999,  1000 },
+    [METRIC_P9999]  = { "p99.99", 9999, 10000 },
+    [METRIC_P99999] = { "p99.999", 99999, 100000 },
+    [METRIC_MAX]    = { "max",     0,     0 },
+};
+
+static void print_metric_column(const struct statistics *s, unsigned int id)
+{
+    uint64_t cycles;
+    const char *op = "";
+
+    if ( !s->count )
+    {
+        printk("%2s %12s  %18s", "", "-", "-");
+        return;
+    }
+
+    if ( id == METRIC_MIN )
+        cycles = s->min;
+    else if ( id == METRIC_AVG )
+        cycles = s->sum / s->count;
+    else if ( id == METRIC_MAX )
+        cycles = s->max;
+    else
+    {
+        unsigned int bucket = get_bucket_by_quantile(
+            s, metric[id].numerator, metric[id].denominator);
+
+        op = bucket == NR_BUCKETS - 1 ? ">=" : "<";
+        cycles = get_bucket_value(bucket);
+    }
+
+    print_metric_value(op, cycles);
+}
+
+void xtf_print_metrics(const struct statistics *s, const struct statistics *t)
+{
+    unsigned int i;
+
+    if ( t )
+    {
+        printk("A: %s (%"PRIu64" samples)\n", s->name, s->count);
+        printk("B: %s (%"PRIu64" samples)\n", t->name, t->count);
+    }
+    else
+        printk("%s (%"PRIu64" samples)\n", s->name, s->count);
+
+    if ( t )
+    {
+        printk("%-8s %2s %12s  %18s", "metric", "", "cycles A", "time A");
+        printk(  " | %2s %12s  %18s",           "", "cycles B", "time B");
+    }
+    else
+        printk("%-8s %2s %12s  %18s", "metric", "", "cycles",   "time");
+
+    printk("\n");
+
+    for ( i = 0; i < ARRAY_SIZE(metric); ++i )
+    {
+        printk("%-8s ", metric[i].name);
+        print_metric_column(s, i);
+
+        if ( t )
+        {
+            printk(" | ");
+            print_metric_column(t, i);
+        }
+
+        printk("\n");
+    }
+}
diff --git a/include/xtf/statistics.h b/include/xtf/statistics.h
new file mode 100644
index 000000000000..e074435ed5ad
--- /dev/null
+++ b/include/xtf/statistics.h
@@ -0,0 +1,23 @@
+#ifndef __XTF_STATISTICS_H_
+#define __XTF_STATISTICS_H_
+
+#include <stdint.h>
+
+#define NR_BUCKETS  271u
+
+struct statistics {
+    uint64_t bucket[NR_BUCKETS];
+    uint64_t min;
+    uint64_t max;
+    uint64_t p99;
+    uint64_t sum;
+    uint64_t count;
+    const char *name;
+};
+
+void xtf_add_sample(struct statistics *s, uint64_t sample);
+void xtf_finalize_statistics(struct statistics *s);
+void xtf_print_histogram(const struct statistics *s);
+void xtf_print_metrics(const struct statistics *s, const struct statistics *t);
+
+#endif /* __XTF_STATISTICS_H_ */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:38:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:38:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473497.1681211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRM-0002h5-N6; Thu, 05 Nov 2026 01:38:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473497.1681211; Thu, 05 Nov 2026 01:38:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRM-0002gP-Gh; Thu, 05 Nov 2026 01:38:56 +0000
Received: by outflank-mailman (input) for mailman id 1473497;
 Thu, 05 Nov 2026 01:38:55 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRL-0002U3-3V
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:38:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRK-001xXk-GN
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:38:54 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde2e-8faa-0a2a0a5109dd-0a2a4501aed0-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:54 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde2c-5984-0a2a45010019-94a392174248-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:38:54 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50muPS2568912
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:52 GMT
Received: from sa9pr02cu001.outbound.protection.outlook.com
 (mail-southcentralusazon11013053.outbound.protection.outlook.com
 [40.93.196.53])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvbk6-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:52 +0000 (GMT)
Received: from BN1PR10CA0030.namprd10.prod.outlook.com (2603:10b6:408:e0::35)
 by PH0PR16MB4758.namprd16.prod.outlook.com (2603:10b6:510:144::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:49 +0000
Received: from MN1PEPF000793FF.namprd05.prod.outlook.com
 (2603:10b6:408:e0:cafe::a2) by BN1PR10CA0030.outlook.office365.com
 (2603:10b6:408:e0::35) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:48 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 MN1PEPF000793FF.mail.protection.outlook.com (10.167.249.201) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:48 +0000
Received: from pps.filterd (m0373461.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mUFQ059308
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:48 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxy7wh89-22
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:48 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmRBx1HGfgTjoOmRCxgqan; Thu, 05 Nov 2026 01:38:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=l0B
	c7UvjVWNKwVqISqrH6KsHohhMtGct7Y+WRUIvu3M=; b=VMQixCAMjuHdeRxD/d9
	HqTIgpKsszARn2eBsw6kbIXfXQhMnb1lyGDXxcIhKN9ps+/oXRoamN4LcbGAouim
	lps+Hys/Ubttjirxw3IS5dlk6ry1hiVL4F49tryZlMkC/K/8rzgudyAjLDdNnxCN
	7ji3G/gkeYn67vvTkIiIzJ9fdSq69pANHPPAKgibHFAanjyt5GtJSG/dZilenvIh
	e/1WkIFPtf2/uYTfExIKwVCkga9WZHieO+KE+iePVpcdEaxlCQm3P7uUB2/0c+4q
	AQvr3wGVSGYit4potaRdm9CYq8sB2Zk3SHwjU6n+FUEl2dMWHptvzsKpfex2iDBp
	Rfg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X2E2ow72aBygUvwcl1KC3guiA9Pxa2zZnb7sdliiI3IphuSydOaXb3rr9dSlHpNcuE+pvXTuL/5H/wuJbcy/39Ov+tPtfmE3G7xqFjcgZ8EZ3aVo9yiQicvZO5hPI/ZQxnR+B34ogOnN/BaES31KunQTK3N6r0NXBsz6myTArxK4me68zqtbHMTtdJ0swRGvdg2piu0p4Q1jtw2j2ZS7SBRuLpzAXFO+xRyN8xGPqEPxqPvKwWVmSdbAWAtUb2eP4chElG5uWOgzQqGnV6qDXargLt7yE+cOaC0dTwDY34limD0w6NlSu5pSmsEJCiYcTmWkzxyPHwAy3wJJ6dGYkg==
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=l0Bc7UvjVWNKwVqISqrH6KsHohhMtGct7Y+WRUIvu3M=;
 b=Ia85GlgWjfC3HSTNSJzeOgben04QMbOt/K7J7Zhp0YU6KXOmISFCCf00QaoRVb3o7UjYj3Wp9R0bPExL2mwYwr33Kf8VkBwZ/qqS5y1GchnpG+XmesNac+vrNorFmW/R1+m0IouxAtifhkwIOfgAteVvKLkdMdH0qJeC7VPNfga8zw+ymic0Lt/3Xmkg0p4y9L6+GfLEd6aZV7+NwPY/upfrX+Yut98c1iMjOoVxjD9XKEXcFfrJkOtBzCSiPXXboXhQ4jg9VQLvEg+q+HhjiFq/ucvqNqjvU99n32qPjyJXQOC7pkM/VpX9Nnrm/mKIdWA6MQAvtU4fL/Mr4RhLXA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=l0Bc7UvjVWNKwVqISqrH6KsHohhMtGct7Y+WRUIvu3M=;
 b=ljzackNOXkIer6YOfJ33ZsTgDwf9rG7lzwuoGoxyFzyLKI7zPSoE/OAAyy7B3C3NKzk8d2+yDOyFIRXl30ZpfUStOY/rRDP2U8Ni+HPCBWERuL7ClbxD3xW8a31nV33toSctp6OBvyEHEOLuhmj20NBSGpE6GOFs5EF0IegM8WQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=l0Bc7UvjVWNKwVqISqrH6KsHohhMtGct7Y+WRUIvu3M=; b=
	ou7Lsws3du1q7H34TQEotLK7ucgMePoBP4/BbgONdFncK4W253xQL7bUtnMUFZxr
	YIEwmU2qDa6/ACUuNG0jsr8LWYEFqiUfKoW2l2UzzzePGRQ9lksqdyYNBDvV7dWl
	Sb/aC46lVR+8hTleLjWREwXK2XZR3AkVJHnN0xA+J+XspXBFCP2ObWGAyLf//iPF
	KP4LOWlWyJ1WsFrfH6V+ys2FxZA3qQ0T7qkX3QWkgKEIgKw3iLlqWp6+HhBFSvk9
	uAuWcAkMJbQnWcsi9hWrdnKabbalneStgTxlDtuyMAWOYs0RhhPPeJ+cp3wczMf3
	LA2bx4VswT8OeBfLnc461Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=l0Bc7Uv
	jVWNKwVqISqrH6KsHohhMtGct7Y+WRUIvu3M=; b=G7hbQzxsolh0g1Ymmv+s6T5
	rnhISmDpzZoT3UozXhd5d7TDWQWWwtaMiPDFMAHchKdDNk9QjMpc0e0A/tti/p0e
	NBjMLyuTnwwId6HpiVBNCvceDvMwMkn66k0ZTuGYiTWYrT0bXR+L8tKNmqdaoD1q
	QJ+ezafKsGLkwMSdnYIlMmByEzlDZ/IF3R7QW1zy1eoIioYQgZCC7R3jVLOmizdP
	DAuroiocDxGnLzz5LpPhS5FTMzD6rUYGJEfbOvxaPBVge5U/UzJ0pVcJm849nHfA
	Idv5wrEQCeX3ALxUKY4xhfmii0NID0KIkKgPfUP9kVjz+HCogGPLWanO3fk4EKA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRBx1HGfgTjoOmRCxgqan
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 09/15] x86: introduce cpu_relax()
Date: Wed,  4 Nov 2026 17:38:11 -0800
Message-ID: <20261105013817.719823-10-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 phishscore=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF000793FF:EE_|PH0PR16MB4758:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 1c5ae541-480d-473c-6644-08df3add8a0c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|261021121427099003|11063799006|56012099006|261009223027099003|261028144727099003|261102123227099003|261022105027099003|261026140227099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	oNj5Z8mb5XHnUh66uWqvoDB2HwFQfHO+mVCfbg6jU4JI3TmnrLK1zPtn3MyQoHBi5IC3vjOW1kkKBIWgJqiCbj9KhkW8+r45nnuZw5IWoFpIYFYHw+0lKsiUaF9Q3gb23145l8vmO4KVrCHHuqdPBlklWIAEXu2YYLszMtPipU2JeMzX1yHmYMpD8K8LUs/TQXlvpShE3sUCU+AmSLWPE4AevLRmj9TL9jSt2N6MxTKmNJxTiO6TJjQjOY+kX4uHbsbZg4BRpUS44m/tXM4oR64PwrS+A3Cy1uHREE4aWYRygIrG2KCWq1nzf5y8MY8MVbfX0VIK4Xo+nceVvK92fmUtldaJQCYaV7G9dp4gznxrZvuVza7h9pymfERupqzTZO56AVGvp8BtDG77QavujERsKPUvLMacKpJXHYP7E8XMmaNalB4Eix7nqQ/A9BlP2xSM08BwGwd+o/gbChpiPDV1o9nn5E9rrvIaSmgqhkXjRdU2i994MIgAPaZ1riHOsf3/UoNTPJ/lIYrJvLoOmDOGVAipB66klf6shGSCAQ09lXCzdGmNNPLPG8SKlh+v6mqqTvrh9IsWhEsqlZ25mAStyA/R/VwBSkcJ3/lBQJYC9AHBDJk+KQYp+yDgcwYXzhxb77cZJzLLScWNTLZzAWDKtyj4n0I45mxliG6AG61f1vRYefZ9I4+vRF6+6DdWEyZrfhtqgRiiMro6DSXwlA==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(261021121427099003)(11063799006)(56012099006)(261009223027099003)(261028144727099003)(261102123227099003)(261022105027099003)(261026140227099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SaFgSQaVCmUl4p/M7bxE2T0BMJaEm1xzlTZOuv1LU5Sbqd5A66FvWBFkmkt4T/Ulg9uo5pdgBUUvXSC8B9AWlh97XFGrfrbcbDdk8xvqk6CXx8oFnrIKcQtG4vagj9HYMG2EcUYJAlnsDdP6eCcWGvXZhdeUTv6YHjMVsJPPB2usnTdX8f3w7OGSW7GF1SERZ+wkX2m/LL3BG4KiT4NIFgDlNmr1s5lEKl7JBDKYTP1nsLuU0T2bfSH2gSQHy+MaJZcSctCk1OGpxp5aH55F1/dWdRfeIodM3ULyRk51OcT9vLmi/ro5E7Yd8rikrUA2uiTcTWuP05hrMWCbcI6pGBk9N/AKUd1qpWr5+TwoMmYEuHOOQVMG+fseThBnaJraMZ2w++vur4HH+JDeK3NeoNNsP8GBLKjHe3usrM+AjJ3+QhSReEgCQA9sPS8cSLGr
X-Exchange-RoutingPolicyChecked:
	DaKttg7+GE0wOWbVyNK5mM+UI/5K6EMI1xaU7CaTcbVgSAZUj5aVs6tU8KiAdUpbsRc66MOT5Us1msFibXk9nb5GGDgEBzyQjtuws9Tr914wXpzznoPBc6JFNXnr391KFt5vdSAODIAnSZst3i/VY3SciWLvUFLdgPU9Ne2F01XxeX7P1jDWnrXgJwdDxsGFe/mR5r2N29XYi/enm+TNkWD/++WU7mkiU6m2l6Mz+/IobdQ+y+79EpN5VYmRDSltl+ZdqJIzbe0EJj/nNJ99BzDPn8y2k3JUq3wCG1pU2wipQOKdHS5nO324xutKu07bTB8NUSpzd2Fvu9+Qxr3A0A==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	pq4rh1AMv9VFoXXwlJ0dn7L17erxKBD1v0Vc7TLTX1WAlt9ioFqa1wo5w8ZNhpTAN7jMBF4Alx4Kwn/ZFp4GnsVacq5qXrs6HetzrzoQBNKWpYLeC8bWI5SVuxnjP/mGMC3A+uQh+DnhEEyNmuxJX3X//O0VlkYB7PdBvfwXOzU+9wwNQq5eWKrzcAUbYwvTU2yZot5NhTJETcJwp9DfFCrWUntHkrz6jQjkyKZ4GyaUrb7KZeAm0jJS4457JZGJ21F+ii8wRCAX/uHkm40To3SkPNCwU40aF4GLvc97BKLntZjaui+wEB/rNxXEVwqmqAOWULcU4waCG/fOQj5lwPuZfGwKITM0TSc0zwxUdRUTedXbrOiECsb9XOmkM1tZ67XLpKmbac6E2tO2pRzxg/acqA6YyMmAbftdIMRpkprYKE+KTzGR7zqsy4MbpR6KW45MfQ+lJlsRKErB1uuYj84Lvd8Vu/0IcFTBWIemvHC2S3B571s9+reA+/Nh+l/OSj4B7xGOfnIB5ZNd5pCTWh2CZulVt3nbHJXCH8ISoGdCeUFbmUfuwYRM4FWVkuyDP4H+YO+Ozj3WuSsGntO9FRMQlRj34LDc/LLCGVhDHvcE4oPutIMrMhQlU2bfqdSP0t9dQ68m5PhFbqyXSiA0Mg==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:48.7123
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1c5ae541-480d-473c-6644-08df3add8a0c
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF000793FF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB4758
X-Proofpoint-GUID: XveLlC_Hy_YrXxUhTems1mGPXJ8p5OBx
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXyOVLQw/Qp9GT
 U7FDdC4Ct1bt/h0qSeURKntLsixRA31PlHhSXwYafe9ZbwRaX0rdyUFhfFxAe8zZxltR7MoDpfd
 0mqEgxGEj7ffsfA8YRp/6LxNzsm3L9M9V1TwJ8x6f3XOgRoeLHIImq/JSjn53/T6DePZ5HOIl0U
 DDKUMv/sZ4A128wbrdWqIJBSXNjNZU32Zf6zRHoNCG2kNZ/f1cIrOh/DFlK2cWZ+DJ4Cn0DxQ7j
 uhynNZSPpkA2e0w3oO3xCNspPHzqePSz5qu5P2R/LLjQJeq2uI4YrEqTui0FY63IMp1/JMzFii9
 YGYle2lipTTviWNziNHtppSU8q+pZ1m+VW/befH8x7zgwPtKXgp84cRA+semFeuj6b+taOynXKi
 yLaQnjI2Djm9U5Q3gaVrVNJu5u9/6KVI/BYZqQRaYvh8RZCNN0wdPihKtm4z81HxUpdmQs7id0H
 t0cwaS+PyzF6VsYyYKg==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebde2c cx=c_pps
 a=5zjvB78PlnLPEzvzEo0MXg==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=oX6sQOh5f4QriJ02HC0A:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: XveLlC_Hy_YrXxUhTems1mGPXJ8p5OBx
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX278m+kod83sV
 SvpCdFdYhA3L9LKbElPPT5WWXF44PMAcE9oUkM/ervGRLxTcgM/ocG5gpaMbcGfRnUBbdsmS5t0
 8+GErXzVwrECr9H6zrnuLNVa/newbP7vZix8M7mqJXq3esfITczx
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-d62444/1793842734-BC75B757-465A91BE/0/0
X-purgate-type: clean
X-purgate-size: 636

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/include/arch/processor.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/include/arch/processor.h b/arch/x86/include/arch/processor.h
index 9cf2fe08669f..9db352f18c7c 100644
--- a/arch/x86/include/arch/processor.h
+++ b/arch/x86/include/arch/processor.h
@@ -190,6 +190,9 @@
 #define X86_SEL_GDT       0
 #define X86_SEL_LDT       X86_SEL_TI
 
+/* Pause for busy-wait loops. */
+#define cpu_relax()       asm volatile ( "pause" ::: "memory" )
+
 #endif /* XTF_X86_PROCESSOR_H */
 
 /*
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:39:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:39:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473508.1681225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRT-0003in-Ev; Thu, 05 Nov 2026 01:39:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473508.1681225; Thu, 05 Nov 2026 01:39:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRT-0003i3-9y; Thu, 05 Nov 2026 01:39:03 +0000
Received: by outflank-mailman (input) for mailman id 1473508;
 Thu, 05 Nov 2026 01:39:01 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRR-0003XG-6b
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:39:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRQ-001xXk-JL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:39:00 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddeb-8faa-0a2a0a5109dd-0a2a4509e25a-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:00 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde32-be1a-0a2a45090019-94a392177ebc-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:00 +0100
Received: from pps.filterd (m0482517.ppops.net [127.0.0.1])
 by m0482517.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50mnp31644775
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:38:58 -0800
Received: from dm5pr21cu001.outbound.protection.outlook.com
 (mail-centralusazon11011019.outbound.protection.outlook.com [52.101.62.19])
 by m0482517.ppops.net (PPS) with ESMTPS id 4hra2g3bb8-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:38:58 -0800 (PST)
Received: from CH0PR03CA0019.namprd03.prod.outlook.com (2603:10b6:610:b0::24)
 by SA1PR16MB4705.namprd16.prod.outlook.com (2603:10b6:806:228::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:53 +0000
Received: from BL6PEPF00022573.namprd02.prod.outlook.com
 (2603:10b6:610:b0:cafe::3e) by CH0PR03CA0019.outlook.office365.com
 (2603:10b6:610:b0::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:52 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BL6PEPF00022573.mail.protection.outlook.com (10.167.249.41) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:52 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50noPk1488051
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:51 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hp232wj2k-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:51 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmRExrnFYCiSDOmRFxv92b; Thu, 05 Nov 2026 01:38:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=spt
	xzYpZv34nfUv1217Kb+esMhpYGTwiPke9zMb5K9c=; b=JqJ5ROW5y/M7ye4VP6r
	Tw/nhX/1SjZrTTOmVGiJx8sKiRtAitttTmLVez+qPnp/tcbtwWGcUuIeKC1fJEt4
	0Ss/ED7lGAoZpbBYCl61bUIW60cEDOXlbI8DqlXFPpJG1jgAbFI3e34LHEdY0k9c
	/2VCPc56awC3xHROGjlW+FBVchZQ+/8eJReVrigonb/rqplSKuVTHefCZYooGYMp
	WMRnoanc/e7oUlbG/Omk5nLfWDCt2oC4IRSKNDLyWRbp4uTt5zWDmK73Pd/pem8m
	4TGMYTQdxfx5lYDhX78sLKLyIpySiz1fKsrb3Us5S9A9bd71ayzRbstsyVCe425f
	H3A==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=h4loumtle1G96QGe+zkj6xFRGsfkRhB3qcpIRXTEJsxSac1APcR4NMBkLe09zwwMQASwFutWDt5tksbI2FDtDzxKdappIyobkAzfzXkbftkXAhojJx/jbcFAbrB/1LySwQ2TlY8Y7k8UUxAb/NqgZcPU5BDHLd3OEX7WuvhzXujKH3wC8duwzRUnazCxK5c9ztc0axAfyvOMNLjgdGp/rJEU7RAmGkxYSGADh4WEUDhIMUjgYfg7IVEeK8YGUW/sqNikRePUInnAx4iLVKGZcM5x81bsdqgEUsKdtpJa5fwQzpaNGZutwkvz1tsa3T3Iqicrm1VrYW13K73ohc68OQ==
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=sptxzYpZv34nfUv1217Kb+esMhpYGTwiPke9zMb5K9c=;
 b=ezE+VHjtBgcv28HYPsdExNsl7kPJHFBXlVqPa09G1bKM0f4b2RzlMnjpFKvZK5oR1ajLIq2j4DF8jZSflWV/Ywwz2gUB/4bvrLhtMcstxEM8gzSYS8KKSyttDqLtz3Hhryk0qoGRKsCBBeEQ97YT+Upae6TGIjQlgRYk7Y3HKc+SRNem8+SZ2hKUPiWZo5l+RDdggiWPltFqmxAB9Ae0w0UOM1zhbM1isuRmd4NMS344RwR0+HRcu9nVAUNpsJjR9nK1mUGVqiW+MDhnVkFzbOVhUfa9kz/NtTXZRptNZHOSLSZ/GjFajaet4MYNMI9wls5IGZHHdvz1S56x1QrbrA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sptxzYpZv34nfUv1217Kb+esMhpYGTwiPke9zMb5K9c=;
 b=Lc6ovUsDYhSjW3JQszdTFFRXLF3PqK3qItLYqJJK8Hy0qdlqPu068B5vwol0LmlowjNKclVibaa2gF+vpBvHNkYqdp6EdaiyLzF5Sq8WIOCtbdxW6G2fngul6NLF75PT1fsn+yIBhTtsRKeTtx88qBiLNKrU8o/hpPDiqKi+JI0=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=sptxzYpZv34nfUv1217Kb+esMhpYGTwiPke9zMb5K9c=; b=
	H5BgvUkpLyfKUvVHpvPPrXVQOCcwZHvIxezyKM83+cwdd5SlCA8srzoaJIy58LbM
	wpyvGUQ2ZNOyox8SqPFFGoyEJcC/EI4qTqX6ycXqp9owAn3Dr5ESKX0nYKdG0tNn
	COJDARAUmdS3BJ5fJsclyJz6q/1ie08bublate5GFbg77iQtqZApucoiy1cd3BJx
	W6SFO4bOoh6PEU8QDvXcbbTJ1k5xtLhIiiPNIeBdsr0fexSz4AJDgRqah2Lsi+ts
	k+Q1pT1fVRZ8EQr+q+cH45XAz0kjpuQTWSPpegEX4vYb0+NQFR7an+PMn0twy6e8
	Mpfy03lKiW7XnrH6RN0Org==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=sptxzYp
	Zv34nfUv1217Kb+esMhpYGTwiPke9zMb5K9c=; b=OKucfrLEK9D6M6D1heGko/w
	DoZgOIxRqo3Fe2T5Pt3qno9O8RnGfX2Wp1AZQuyjAYHtWa9BII0v/gHyy3hVQ3pV
	d8oWMWNCfFAPnOH23zWy8F5GOmHOI9m4XlVvFl9rjqvO3OTYrCNsStbTvg5GzRYX
	SzrzWJu5+ZGUIOEINxksfFuCL9P+wIUOmj8B9kq4bBLBg6nfJAY7Ny9+ImdaVF82
	6NHNZb2OduhGGIcDx6KhETj+5a8eGaHyDilvnavMfKvVs7BtwJUACbXGcVGpfVJm
	Zv4J/kyun6gV9WFgQyECseJsKE5ZfcSX9x10nmuxnlYholEjh8s3tW98fUrwW1g=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRExrnFYCiSDOmRFxv92b
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 10/15] x86: introduce simple time management
Date: Wed,  4 Nov 2026 17:38:12 -0800
Message-ID: <20261105013817.719823-11-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0
 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022573:EE_|SA1PR16MB4705:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 165d2f1a-a064-4246-141f-08df3add8c38
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022075727099003|261009223027099003|261022105027099003|261102123227099003|261026140227099003|261028144727099003|10067099003|18002099003|22082099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	UEL+42vpIjTmBQp9WuBmEJGgKFbBDl4k6KXXZAMlKAdiOIozkfhZZ74ylW3VKxyn9UUoyZl1WWPZQ7phy+nainRGghEVJdQtxKl6wR6FvEY4ds/GWuT+xXkwOzxFty/fN/IoVp8cNj3vt/mbrNEipV+CSMquYtIfnO0/OVlBPGPa1UNCUkU/b7M1kkPcPmmNwHddOu7cMZH7EtvHGDs7k6klpwdMNlSC75rj2mzCUmCCvy0ueEkiCoOkWVG6//OqOdHuuKBR0RugdpGfxpc72hj+5TgKHs64TCytLboYqUOTkmAyIt484NzTQ9vgMhYogbr1ifpLJJHAaB4iVHHf+yMryhv4QJIaM4MisD9KpJ7jF4ui6KeHw7xE0iPaJiVo93YSPCvmuc/d1ETb5roVR9xpM1VMShyXIh+gzhqEEHAg0jy984F8hQvs/dqHWsu4HJgUtDUCab68IPXc6B30AWqUz5gUgbWaOBd/T7C4dX2uhoJZT+Xavs6r2E+vRXtHoVCTgXvePHcsJ0/Rymem9eeG+W7AUy+5a/6yPqYX9B+3+IKehRqUkoUA+WQkXS0nC81689w6Y+jlcgwlm5acAxLG37PSNL9c+ENRa3R8jB04xCkD5NfScHJlAJJbb8p/dAqJQ6/PghqiY7GxGxZKWs/hdnpPnvW/3XPyg2j9yop3a8dlNDDLgcj9J1x6KVkERJNHE6m38Wow4dKrq3vwmg==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022075727099003)(261009223027099003)(261022105027099003)(261102123227099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	St+t7bb/uaUqOfB13wnwvJpqzEgIwATZHQTKAYV0Mt6bVu36+uahmBNy6mVQ2i8wWB4y/62jT3b8Q1W/tk4BdXQ1J9MgRVzyFVBMLsBXulcY8SFISBfT5LIeudMtv1GUcSyAfJP5woIbWCE0OddCpaCzVYo0wMHfKCtDn+udZHt9H+q8x1VLAxyahDOtyzrhH6rNa1tYqaZbi/8F4Sk/+v8KWjkMjx86HfhFi8B7RhBomfkFM72DuzZTlxuLwyWVKbyBKAYZzr5shpDqRB9g0qkHpkgWcfpfC/JNxrZlu6dQ+7AMJZLuR82XSNqyfEDAvdIXSQ+kDsMsMCjZAfMkAcSkS52UH6M2yLFaC6dQ8bfDQlaHtEqQJxhLh0zowbr8/G914GPMDhUOLOyGEzedA+Ug+N4JEJeZ0dJHScVfCmKTZM9cf1aO7Bb2fEjZ3p6q
X-Exchange-RoutingPolicyChecked:
	Hzjbimjo6klbhZ6/hNQrWQ+9N3oO5qK4toZTD4ZvbJv6D0AJw19R3hd7fAOixtVx6/99yWWOq+jovmY4Dp1VMzZ6DWB4HKjX5JLePuX1J2w9G6kVXPXG/aT3rczHE7KY392X+i7JEO/GCze2WoSL5uS0v0PcoQdWoWTDGD121GGSONXsJKIhlNJv0MKHdW9BXUGatt+iWw0QvV8a/hem772cy0oWCZSwpDYORNiSiIqYgPE+ghp96H3MdzYw3+Q1MCRjgvmP3ff57t+1mKTMmC9V1FQWMpfsjW7u1UPNSw5EEMDK3rZfcblPuJe4M4IcI970pU6h2rCWcZl86TbSVw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	FzP94JBCT8k/+3Uv8jXVmBEUKuu171JIIT3kSpFwoZG0LjBfaTCFj0pkGSY5P/o+CYZm0Cuzo+yvgXIDBOO0Nb1F8keJcfXUZjTUvAKsHu7NUnYJtpsE9P01Wp0fyvSnw+A5gxeVSuiLaq53Db5wkFyMudbWbiizZaHHKT7Ig8ZrAkhq/7TfQo1J5CKuIK2j16xxPlPKrjwwtvEJ9Ka3eHNetTlv6FmHkrMG1UoaEIaHEZJUGEoNHNR4Trttb5/4Zq/X86OlAKrIMGxldJnI0FBFxGR3IvTOojPbZREIOeLaLBOjFTUaPI4Wdj0TgfeSiwBWFn8FwIqUNRNUi1nDGU8lQp7nAScgvFeuoGplUPBUbj85J2VmuN+47bMPjRq5USUHi0Ea/VndkwYvAxRQkhYUjlKIZIuEtrhB5l8ih3MwOzCVYnKg01zk1QeQRFX5ydmDXFMmadHu3rMFkL8KCiMRyW6+20iEWBnSaIDNeC+cM6KxYpCjTnEWNgoDNQlY29wzeftZDSZC2AAotkCMoy5pDstgBycjyZWnPE6EXzqnflXK9PsGkx1csaZJ9myrEj3y+HYRwb5DrRhLTiG82mURTvIviUZDP9ypxWQJlTrT8fr6ofXm8xdMbP7B7jF3X4IY3aTX3IH9b9FHU2Qn0A==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:52.2134
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 165d2f1a-a064-4246-141f-08df3add8c38
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF00022573.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB4705
X-Authority-Analysis: v=2.4 cv=Y+ptIReN c=1 sm=1 tr=0 ts=6aebde32 cx=c_pps
 a=UyUtkpB65yKBl9uddpDweA==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=MLwXIh1eZMowsRZfVxRb:22 a=cbNQJ9GKAAAA:8
 a=qOLhJHLYC8HWDslCEH4A:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX8ZdN0pbH1rWh
 7mFWCYeDp+WQortGa3Ilnp+KKTvj3c3mayPV3v+yuosIsg2cdVwghFZGLlELM+Gb/AvZ5pa9bpt
 hR+A4ZQ9U7pm2r41XBhykSv8SWjGHWubYyAnseF9uSWzWSuXb495HCSG/wRIqvfnDzDqA+4ipf6
 8eBvV69oPs6xDz/BQHl5Qm5pTClEg0Ch3fZbJJgssmJux0HNBs671adXKXdgSSrM8gpBfE38tgH
 xKrugYekNdHZkaTw9Q8l9el8Mlf6WGB709C7MtjNhAay+Zovwjg/n3yyEU3vZmnr4bvHbVP+Gyn
 SYNDjLsicESYEJqEtopJLLOFfuPWGfk1AAFJgi3nGwQBJM1Vw+Kr6PnWlTkDTNCvoGb8mPEz5/D
 21ySiHU9KsfN4K1WbGWuwsTBIxooFvXSXaK+pQcPWXffrf3mooLGy4hCg2B28tCbH/EL/6uW3IX
 KnsNx782DwHhCTArgKA==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX0SSyR/uEK3lX
 5bOu10dnlEsHbK/vFJjz2NzsSjkek01rYtonaD4jqkUwRu46EW0japMFqcbSRPgQU8VPwtt7UBr
 PINQBKr5fHpWSa3lJf3Xgyvbi7chbIfzQA0VTt1uwZ8vpMrTGERC
X-Proofpoint-ORIG-GUID: NCLEHeHwzx4U1pvT_ZBVqYFHJH6Dr2nv
X-Proofpoint-GUID: NCLEHeHwzx4U1pvT_ZBVqYFHJH6Dr2nv
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0
 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-bad1c0/1793842740-FC817034-6A83EF9D/0/0
X-purgate-type: clean
X-purgate-size: 5961

From: Denis Mukhin <dmukhin@ford.com>

Some tests needs some estimation on certain operations longevity.

On x86 systems Xen conveniently exposes TSC frequency via
CPUID[ECX] 0x40000003.

Add TSC-based primitives into XTF to allow time measurements, including
TSC to time conversion routines.

Add common xtf_init_time() so that it can be called on demand if
the test needs time management.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/include/arch/time.h | 48 ++++++++++++++++++++++++++++++++++++
 arch/x86/tsc.c               | 32 ++++++++++++++++++++++++
 build/files.mk               |  2 ++
 common/time.c                |  6 +++++
 include/xen/arch-x86/cpuid.h | 26 +++++++++++++++++++
 include/xtf/time.h           |  8 ++++++
 6 files changed, 122 insertions(+)
 create mode 100644 arch/x86/include/arch/time.h
 create mode 100644 arch/x86/tsc.c
 create mode 100644 common/time.c
 create mode 100644 include/xtf/time.h

diff --git a/arch/x86/include/arch/time.h b/arch/x86/include/arch/time.h
new file mode 100644
index 000000000000..3a244a2a6eda
--- /dev/null
+++ b/arch/x86/include/arch/time.h
@@ -0,0 +1,48 @@
+#ifndef __X86_TIME_H_
+#define __X86_TIME_H_
+
+#include <stdint.h>
+
+extern uint32_t tsc_khz;
+
+void arch_init_time(void);
+
+static inline uint64_t rdtsc_ordered(void)
+{
+    uint32_t lo, hi;
+
+    asm volatile (
+        "lfence;"
+        "rdtsc;"
+        : "=a" (lo), "=d" (hi)
+        :
+        : "memory"
+    );
+
+    return ((uint64_t)hi << 32) | lo;
+}
+
+static inline uint64_t cycles_to_time_units(uint64_t cycles, uint64_t mult)
+{
+    if ( !tsc_khz )
+        return 0;
+
+    return cycles * mult / tsc_khz;
+}
+
+static inline uint64_t cycles_to_ns(uint64_t cycles)
+{
+    return cycles_to_time_units(cycles, 1000000ULL);
+}
+
+static inline uint64_t cycles_to_us(uint64_t cycles)
+{
+    return cycles_to_time_units(cycles, 1000ULL);
+}
+
+static inline uint64_t cycles_to_ms(uint64_t cycles)
+{
+    return cycles_to_time_units(cycles, 1ULL);
+}
+
+#endif /* __X86_TIME_H_ */
diff --git a/arch/x86/tsc.c b/arch/x86/tsc.c
new file mode 100644
index 000000000000..93c4de197984
--- /dev/null
+++ b/arch/x86/tsc.c
@@ -0,0 +1,32 @@
+#include <arch/cpuid.h>
+#include <arch/time.h>
+
+#include <xtf.h>
+
+uint32_t tsc_khz;
+
+void arch_init_time(void)
+{
+    uint32_t eax, ebx, ecx, edx;
+    bool emulated, reliable;
+
+    cpuid_count(XEN_CPUID_LEAF(3), 0, &eax, &ebx, &ecx, &edx);
+
+    tsc_khz = ecx;
+    emulated = !!(eax & XEN_CPUID_TSC_EMULATED);
+    reliable = !!(eax & XEN_CPUID_HOST_TSC_RELIABLE);
+
+    printk("Xen TSC: emulated=%u reliable=%u mode=%u "
+           "guest=%u kHz incarnation=%u\n",
+           emulated, reliable,
+           ebx, ecx, edx);
+
+    cpuid_count(XEN_CPUID_LEAF(3), 2,
+                &eax, &ebx, &ecx, &edx);
+
+    printk("Xen TSC: host=%u kHz\n", eax);
+
+    if ( emulated || !reliable )
+        xtf_warning("Xen TSC: time measurements are not reliable\n");
+}
+
diff --git a/build/files.mk b/build/files.mk
index 8a7d6f8d588f..ad39c00751b7 100644
--- a/build/files.mk
+++ b/build/files.mk
@@ -14,6 +14,7 @@ obj-perbits += $(ROOT)/common/libc/string.o
 obj-perbits += $(ROOT)/common/libc/vsnprintf.o
 obj-perbits += $(ROOT)/common/report.o
 obj-perbits += $(ROOT)/common/setup.o
+obj-perbits += $(ROOT)/common/time.o
 obj-perbits += $(ROOT)/common/xenbus.o
 obj-perbits += $(ROOT)/common/weak-defaults.o
 
@@ -25,6 +26,7 @@ obj-perenv += $(ROOT)/arch/x86/hypercall_page.o
 obj-perenv += $(ROOT)/arch/x86/msr.o
 obj-perenv += $(ROOT)/arch/x86/setup.o
 obj-perenv += $(ROOT)/arch/x86/traps.o
+obj-perenv += $(ROOT)/arch/x86/tsc.o
 
 
 # HVM specific objects
diff --git a/common/time.c b/common/time.c
new file mode 100644
index 000000000000..c6e5136a1567
--- /dev/null
+++ b/common/time.c
@@ -0,0 +1,6 @@
+#include <xtf/time.h>
+
+void xtf_init_time(void)
+{
+    arch_init_time();
+}
diff --git a/include/xen/arch-x86/cpuid.h b/include/xen/arch-x86/cpuid.h
index 2fbc8eb656a0..9e1e7e6ac51b 100644
--- a/include/xen/arch-x86/cpuid.h
+++ b/include/xen/arch-x86/cpuid.h
@@ -15,6 +15,7 @@
  */
 
 #define XEN_CPUID_FIRST_LEAF 0x40000000
+#define XEN_CPUID_LEAF(i)    (XEN_CPUID_FIRST_LEAF + (i))
 
 /*
  * Leaf 1 (0x40000x00)
@@ -36,6 +37,31 @@
  * EDX: Features 2. Unused bits are set to zero.
  */
 
+/*
+ * Leaf 4 (0x40000x03)
+ * Sub-leaf 0: EAX: bit 0: emulated tsc
+ *                  bit 1: host tsc is known to be reliable
+ *                  bit 2: RDTSCP instruction available
+ *             EBX: tsc_mode: 0=default (emulate if necessary), 1=emulate,
+ *                            2=no emulation, 3=no emulation + TSC_AUX support
+ *             ECX: guest tsc frequency in kHz
+ *             EDX: guest tsc incarnation (migration count)
+ * Sub-leaf 1: EAX: tsc offset low part
+ *             EBX: tsc offset high part
+ *             ECX: multiplicator for tsc->ns conversion
+ *             EDX: shift amount for tsc->ns conversion
+ * Sub-leaf 2: EAX: host tsc frequency in kHz
+ */
+
+#define XEN_CPUID_TSC_EMULATED               (1u << 0)
+#define XEN_CPUID_HOST_TSC_RELIABLE          (1u << 1)
+#define XEN_CPUID_RDTSCP_INSTR_AVAIL         (1u << 2)
+
+#define XEN_CPUID_TSC_MODE_DEFAULT           (0)
+#define XEN_CPUID_TSC_MODE_ALWAYS_EMULATE    (1u)
+#define XEN_CPUID_TSC_MODE_NEVER_EMULATE     (2u)
+#define XEN_CPUID_TSC_MODE_PVRDTSCP          (3u)
+
 /*
  * Leaf 5 (0x40000x04)
  * HVM-specific features
diff --git a/include/xtf/time.h b/include/xtf/time.h
new file mode 100644
index 000000000000..1e5895122a34
--- /dev/null
+++ b/include/xtf/time.h
@@ -0,0 +1,8 @@
+#ifndef __XTF_TIME_H_
+#define __XTF_TIME_H_
+
+#include <arch/time.h>
+
+void xtf_init_time(void);
+
+#endif /* __XTF_TIME_H_ */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:39:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:39:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473509.1681230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRU-0003rL-64; Thu, 05 Nov 2026 01:39:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473509.1681230; Thu, 05 Nov 2026 01:39:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRT-0003on-Qy; Thu, 05 Nov 2026 01:39:03 +0000
Received: by outflank-mailman (input) for mailman id 1473509;
 Thu, 05 Nov 2026 01:39:01 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRR-0003Zs-Lh
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:39:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRR-00CQvb-2Q
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:39:01 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde11-bab6-0a2a0a5309dd-0a2a450a8416-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:01 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde33-f2d2-0a2a450a0019-94a3921783fc-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:00 +0100
Received: from pps.filterd (m0367123.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mSLm2567982
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:38:58 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013016.outbound.protection.outlook.com
 [40.93.201.16])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hr8vmvbkw-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:38:58 +0000 (GMT)
Received: from BN9PR03CA0155.namprd03.prod.outlook.com (2603:10b6:408:f4::10)
 by DM6PR16MB3720.namprd16.prod.outlook.com (2603:10b6:5:2b3::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:55 +0000
Received: from BN7PEPF000000A8.namprd05.prod.outlook.com
 (2603:10b6:408:f4:cafe::4c) by BN9PR03CA0155.outlook.office365.com
 (2603:10b6:408:f4::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:55 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BN7PEPF000000A8.mail.protection.outlook.com (10.167.245.232) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:55 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mitI2969554
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:54 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrrc-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:53 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmRHxrnJ3CiSDOmRIxv96N; Thu, 05 Nov 2026 01:38:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=ICn
	i6QafSI0sZgyeoJf0rlSYN5mlAf+VMp/I2BHcwlQ=; b=IfODV3qjhcklkP4mc17
	FCclZQz06K9ZczmuUzM5xXDf4MSryxfPWig0h84+45Co0pxe4qJEHKlzzSiU1/KN
	1PPReKy6FpD7VhEfY3D4qT1RCuBtS4Q98r8e4U+6A17niPpizwH8iYqwVx0ne6lP
	GoZ/UIJEGhWIXY4bAFQEzlmlpLhIfz1Ai6zrMMxF1QrOHdwBobP/eExR0MhHCT2g
	fdFsEO3k2Ei2WWpEmP3hpZQz8wPG7Qg0dWlIsrimxEqbA1tJfxvr5Wo1X/KI/gHb
	H5qmfxf+0Hg4bFv5Sw5aDf04BHV2vBROOE4Nwxc/P/uA6Kfet+H4XljfRZNigInC
	rnw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rSoiKLAaZmhPJHu24O26VeBqTWs2LSObiEmvnVa3RSEL634lgQHnfBsHz7gqg+NrMBc8Olhws//2aij/RrdZoOjC8ynSn6As7B0/MGpzl5ykcQlUiNKbSZyO2nf9lnmiOeontdLyf7ZEGFPEymj0jEO0EYD2J+Mkmd0h5dMohtCQUGE4Wb+TQPz6bvzZF5UIBnl+OnvB9v7psS6FxuClbZHxi93G25GF8wokhI52vtFm03qmTp5jFazI0UClYiKkgAEokSBkYGn+PvVuG9MItMKrQdhY1pcnend7jTWX4dws5usefKrqbv6e4CZ6+qbwmoFYpYX2vfYEV5NTaxHw4w==
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=ICni6QafSI0sZgyeoJf0rlSYN5mlAf+VMp/I2BHcwlQ=;
 b=nWZDy0JLxnl0m8IXUBZ+DW5mY4gj1brH1zWu1mOE2WeNRZ0iz+1QRpnRmbOuIxBMZNyKcjoeW2Ww4rLIRgRfX4QnIglDe0EYIKfjcTupQJsljfLqHVIMWFGxnL6vOVMayhpRkjqthJR1pQRGMZvVMpwyJxPTBONzsBWF57HhhcxeXA5yfaXP8G7IkrATrtVKm6sDqB8t+eu4Ax2IIax6XImVXYcjMrOisrV+ecw5VMeiUXWVBSbcOexiok4ZCCusF0Gn+pYg4Nu/KkDNIFDknfU5G9zqCiSHKAAwkHONBEjwx9RxOYDjf39qesbLZ+IeijD0cgZEvRpFBv/8Xct3Rw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ICni6QafSI0sZgyeoJf0rlSYN5mlAf+VMp/I2BHcwlQ=;
 b=gmXd3yR6H8euIezUUR8ch6osothBVLI6XB7/hsG9HoMP6UitPs9UG3WSC7IDjlI0T3mFiH7IhftNneDDLDxt9SYXEf4HZ/XZ8Ni43iDwzvfu/XmhkNPAUT/NmEuXR1oSlPHR4bRgvju9X1EtdoPUVayW92RbD5Nqf0fWFNr6HLk=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=ICni6QafSI0sZgyeoJf0rlSYN5mlAf+VMp/I2BHcwlQ=; b=
	M9unIzxud54RLbKAu7jVkOReIVf2unWrW/tixm8CXEC/RusejZUA4toKMEtF0nVH
	MIi0qb5kZ08nheWrGHHNN7A2OWTjk2IVo0wnbOrIJwCYLqowy0O0xS92sRLfO96B
	MWWKZeD/t6JUlmL4itGAMRMNe5b82YJlKkmeFzz6TM65xqNljt/90czrdG5lqNZi
	2innSyLSkReRqvg3Cfglk5u1I4Bzc8rrfkvNDsHYS8/rEiewiYQn0kMxijZM8Co5
	mglerU7s70xCUOvc3Wu+TPAbXdp+yyE8xDHHIfTsKDIJPIT5xePOmWFsAhrxixVp
	HXADuZkvm2gmiSOAl6/BmA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=ICni6Qa
	fSI0sZgyeoJf0rlSYN5mlAf+VMp/I2BHcwlQ=; b=VQJAzYPpHn3wwASe0AUpDcT
	m14pw1U3MO384xcBlLRDeCj8k44BsY94V861Ne5wQc4lzQ23tBTvIv5ESs8Y6IqK
	3p+wjLRJ9l0EnDBtx71ZYnobr7b3I2DqXKF+ucQbQ7pPcNFIdLg79eacqgQehfrH
	JCwcLFb3V3FkKZaSCGceMDUAOmIw37W7u2WDNjx9TKpLnGEkv9LUUGWb5Tno/3Dk
	xYzXud/So91SNcZoaxEyWITdZ/8wymdDcp2sn5OEWyCsRIIBu9vWcHAdeswIfM9V
	FWpM50pwsl4QNydPXw0znoCbcpe76ivIKbxHhCEJRu4zDGQPZaD7kmdrr0sLsxg=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRHxrnJ3CiSDOmRIxv96N
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 11/15] x86: export per-vCPU IDTR initialization
Date: Wed,  4 Nov 2026 17:38:13 -0800
Message-ID: <20261105013817.719823-12-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF000000A8:EE_|DM6PR16MB3720:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: e6c078b8-417a-4446-e639-08df3add8dee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|82310400026|36860700016|11063799006|56012099006|261102123227099003|261021123027099003|261009223027099003|261021121427099003|22082099003|18002099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	BTXIPYP9fMjyq7c2H+pur7DxyMg8ZaBekJ5pHfLT70fu2b+GmN3wv9gg7QcYX8e/5InXj4RBw4XmOQz3FA/exaMUJZNTfq5fv6hF2E7S+VtxkTv+6+qTKgWBLggGtXBBwIOJTFeAfQrRfwk/UYES433L1fvTOognGhSLMsIxr9ty1DLk3dIN26r+faVipBVACPjVfSraRZuzK0RRHSbqO0UgN9FydthHgAG3zzGTGtJE8ngLhPMG85rbET3WXTNKL1470y2xEiqaDRNNHLzw5ZUx44DDk38n1c4gQINd4O5O6d80nmM0nP9WYOx6xopCojvDm02KRmrxXvJthibeMffNBsDjoI15C4/kha0Wthfj3Q885eWIMg1+NOjW4mJyjB/t097QQERR218aw2p22WjsC4A8v/Iq9xq7HCLM7D2g68EkTRzlhDRCuzPNBDW1ExcpD+XoJ1LJxAUuQcugXGMHXDiGcH5Gct976CTxJTmg6iySpsz2w48SoIy8VTY0b9T448Ya5zVISc9F9YC1Xt6Vo+aIPnqW5Z9aGcLWK3oRxPPh7Ki9x5b1eS3iIBvpz/PuOFF5k5j1SaZiPYXE5+oL5Dm76q9I7162kDYtSsZZWBDWEJGZzmZtHYwIV9m886zfUL5Us3zd1gdf0NwJFWSWdcoyzkR+tmAB1pUteCHinpfxQNA4nkjkIMbmB4Z5HWMNt7GB2m25MGmK7Z4+Aw==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(82310400026)(36860700016)(11063799006)(56012099006)(261102123227099003)(261021123027099003)(261009223027099003)(261021121427099003)(22082099003)(18002099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Hh4VgoE6dZyGC/OBy6uOgZmApsD+sPpo+WRc/BakRifm6W29WqGPJWTxtL4O6xMs7GAUuPH5k+1Ro/rgEDHeL0ki0ZCHZ0pWavoI5HmWPDFYRaJELzz1LM7GMzNH3CBcuNFdfSkaI1CSJUA1HlUyx/n7lPVpcT07hioZG3NXWuHSXGguKAwud/ZnLN2/7iGPgClC2NKg6GUnXVgfgHxKORIL3FueUgiYuEygSvKAV+Bd6OXT5tOFk0Ce9HzpgAyDJWOzZN1ikIS9vaz08mAqZMGLOM9GLmGaW3+sn5lvQj4Z+7qQQyVnplj88vfeY5iFdejY6wPc3DgBdV6sBcQOPTZB8gf9Nz7vJFPTGp7hqdz2glQssMmKMOjY/e8PmKE9BWWNLGVN+vpmYEC7piBNAmTjRKBh8R1OQpiVrkK1wXI7E28qdQ4258wY1kFoNhXu
X-Exchange-RoutingPolicyChecked:
	WRL+mPYa3xJDaaiu1vA5+qBLnv+0R3xTVApH2GhuGRGp3ndjlLLsmtNBcBw0Vdy0a1EXNSWYobSPsq7WsUmIu2vFtVcEpUVT9c9CwdSMipD5yvq3iubD0tcLgSGok/Y+2CMgwmcCeBz3QHIPciy11oUuQzxXB61bv9QQK5X858KKB3TcGAQgmQyNvQPX/+J+hi+JIFOllAhkaBVG/ZuSXRx7Jbf7Vc7Qdt1KBDcIzm/Ka7WHFLdrpam0VzZaFbGwhQUd6Ud+GRkWcPM7nr4lfs3lKU2sXHi1zUaUygDr3WWfGYGlPIv4qYC/5jqFUYGcsQtjTsF4T15KLuUMrO8bdQ==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	VU8bZ4C2+masFBBoH83dSgqpbqtbxYNwzs0GgToe+v0yHUnXyb0scg+UnppzF45n79tOVSBokhVFZpklA8M/s6AOsvILquG8LH2f4s93DOa+CoA+OvKUJf6OxazDZz76MzyAwxUKNPKxc80dfGeq0T4PMxxvIhYO3i+IjVc75EdwkYJLCz2FovTfS3BAigv7J5RCUlHn+IB9tm552KfM4vOEIJUSyC1pYfX39XSGx8YOKrXhecaPIr2eFVyXwqgEwaw/aOkDWrOpo81JyPOls4hUKScM1tp4FlSWErD5vBhrcvVVsvrgjrnANwELA/iEhRN+FaIEa5TRWpRJzGX2y9iQME6hUBv16Zgtwi62VNX85JVuYl+W8ZHO1Ms6yQ2XrP1B6K8c8n3dIDQvulLTfCBEBx3lf4CTlFShxkXm1ot/bICTE9WjWq4cAyItwzr3g/SlNrTGJutVq3ladQ8Kf4Uk5cXD0jYMSaKLCvnZ24kwVObpmUMSnjYhFMbHIPJSljwSIohb5oxvjIPsPiMIfBqSKgq4oZ9wOYBD9qXl7aUPe+X5kAP/fDgJFOrW9RTtC66a/gMPFQAu9P95k48NSYSxe7c5ycuA1HFRv7RF/XtPN9+bwwKGd3lY2IKrwtsardqgqcH1FZl4ierZ/Phzkw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:55.0246
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e6c078b8-417a-4446-e639-08df3add8dee
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN7PEPF000000A8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR16MB3720
X-Proofpoint-GUID: TQc44XDuifNNeXNtXFuQxmicAoj_GqVo
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX7R5rysskA5/K
 TG1VS3RqpMmX24k7ujGwSASSQCDbrkwjmaZjwA5aWSYyUQQ6NYdcny5fTt1750mINDkiz2cRx2p
 MHKs44LSGigocDiIf0QhYESELRjJ/DNueN/2Q8GAQcjKTVh300uuWxMMghQaQFjcyjae8y9ZOnP
 oE0fAWaup6g1vwKdQffuZGUySWnOWxyR6mEllfQVcQtxXrzeyQMiGQLooS5P0Ug91c1XPk5mo4s
 ZvxNOrLfw6GOOo5VGoQz3MkR4LVKkBu/S87geTqqUwDgs5UnbXcsSlJkXJGOP+B/6frlaWfUPb5
 CEpMCTGK4LRnF7jgTBfMEP8fMTS2i/ZYSiaVZqvZnA6EgD5PBf6tI72yn7BgAhiXZJTwHc8Exd+
 2Se20uxa150lOCB9P1FeMv3OgRsGzNM4ST2Z08hF54upmnzRktfaKu8CP56oDwzOUv5TkiRvPtb
 Lk14wDF3eOczF3Qo82w==
X-Authority-Analysis: v=2.4 cv=T7AZ3PKQ c=1 sm=1 tr=0 ts=6aebde32 cx=c_pps
 a=YOgfsySBG6Gh3lLixmEA+w==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=N9_n2FxmZfwfyRXvS9-E:22 a=cbNQJ9GKAAAA:8
 a=lWYGAnqwF_VhU8H50RwA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-ORIG-GUID: TQc44XDuifNNeXNtXFuQxmicAoj_GqVo
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX7pudwCv6eTLs
 WgvGLkQZhk/POruqdUEp/E0/DXR6CB70RksHiuTrGGqw4RfbPCM3mCN+eSV9I/gotKNiD4zun7e
 qCx9fRaouE+UffrpNOwd48k/B9fWmakqR8XzjcGrvw/Gl63EcAFX
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0
 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-4011c0/1793842741-583CCCFC-F86AE3AD/0/0
X-purgate-type: clean
X-purgate-size: 1378

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/hvm/traps.c        | 7 ++++++-
 arch/x86/include/arch/idt.h | 7 +++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/arch/x86/hvm/traps.c b/arch/x86/hvm/traps.c
index ad7b8cbc3dda..dc7d617b80c5 100644
--- a/arch/x86/hvm/traps.c
+++ b/arch/x86/hvm/traps.c
@@ -70,6 +70,11 @@ static env_tss tss_DF __aligned(16) =
     .iopb = X86_TSS_INVALID_IO_BITMAP,
 };
 
+void xtf_load_idt(void)
+{
+    lidt(&idt_ptr);
+}
+
 int xtf_set_idte(unsigned int vector, const struct xtf_idte *idte)
 {
     pack_intr_gate(&idt[vector], idte->cs, idte->addr, idte->dpl, 0);
@@ -116,7 +121,7 @@ void arch_init_traps(void)
     pack_intr_gate(&idt[X86_VEC_RET2KERN],
                    __KERN_CS, _u(&entry_ret_to_kernel), 3, 0);
 
-    lidt(&idt_ptr);
+    xtf_load_idt();
 
     pack_tss_desc(&gdt[GDTE_TSS], &tss);
     ltr(GDTE_TSS * 8);
diff --git a/arch/x86/include/arch/idt.h b/arch/x86/include/arch/idt.h
index 02955d54bae4..b54dbec830f0 100644
--- a/arch/x86/include/arch/idt.h
+++ b/arch/x86/include/arch/idt.h
@@ -29,6 +29,13 @@ struct xtf_idte
     unsigned int cs, dpl;
 };
 
+
+/**
+ * Load per-vCPU IDTR.
+ */
+void xtf_load_idt(void);
+
+
 /**
  * Set up an IDT Entry, in a guest agnostic way.
  *
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:39:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:39:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473514.1681240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRV-0004JE-TS; Thu, 05 Nov 2026 01:39:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473514.1681240; Thu, 05 Nov 2026 01:39:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRV-0004IF-Mx; Thu, 05 Nov 2026 01:39:05 +0000
Received: by outflank-mailman (input) for mailman id 1473514;
 Thu, 05 Nov 2026 01:39:04 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRU-0003qo-5A
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:39:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRT-001xXk-He
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:39:03 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde2e-8faa-0a2a0a5109dd-0a2a4501aed0-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:03 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde36-5984-0a2a45010019-94a38ff10ea8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:03 +0100
Received: from pps.filterd (m0367127.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mlwB226521
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:39:01 GMT
Received: from cy7pr03cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11010059.outbound.protection.outlook.com
 [40.93.198.59])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrfaurcr2-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:39:01 +0000 (GMT)
Received: from PH0PR07CA0065.namprd07.prod.outlook.com (2603:10b6:510:f::10)
 by CO6PR16MB4179.namprd16.prod.outlook.com (2603:10b6:303:a7::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:38:58 +0000
Received: from BY1PEPF0001AE16.namprd04.prod.outlook.com
 (2603:10b6:510:f:cafe::87) by PH0PR07CA0065.outlook.office365.com
 (2603:10b6:510:f::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:38:58 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BY1PEPF0001AE16.mail.protection.outlook.com (10.167.242.104) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:38:57 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50n9203230812
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:38:57 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrnpdp-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:38:57 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmRKxkNQ07GL1OmRLxfFqS; Thu, 05 Nov 2026 01:38:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=xYm
	b4BtcVfetBTbh+LvIz+mcd8Dino49KtqJpL9zxw4=; b=M8utuVrmLPQMr5HXc8C
	0/BzgGpLfaClId1nqmi6okW9d6u6gB6lznEvXPywdW2tQqqOhXgW+MDLXn2oGZle
	YA5tioI/5kzQNgCPlor1/gGR1ivBPytB9UDLY7hCzkKHemz2WaGEJN15FdDIPO7x
	2kvzj7bpxqKLoalbY2dhbVGmQ/oy5AtrSlMR89G7FHI2O0aUedlAXoWfpSaZ5cvO
	GnizgVAx3gY5uMuWKD/UVT2fS8QqfAaVgjkwWd/kSyh64FWO2B+ZzXD+3tfQGANl
	ce5qrat4tJpfzV4z3APF4o65jrWWXWr+3nJf+HIv/1Yv72qLi3RYvFspSTSmV0iv
	Sgg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rhilKR5HZD9M4sMjVerxM6YwqJmyvbhp+rwjrS20Lb25TxhYUsEA4uE7RrTtZM6wYPERahL7hGY57XXa96wEtq8NfeuXwaB2Q40sKZ4Z0QxIM7aYDzSSvpNIy/EBKmetHapkADmyIgi2WyNSFwmPbj/HqZuVnJxpErPqfqY/82h8m//SORMgmOATz5P1PTILVuZIE4/Ks+Ok/LvxWQBdurPS9KGXJiqjLanUTGw3TICbiVOGSNIaNQufTH3ML2n/xKj/YjyERkfkUErutKNDV2VwTsBGglMRXMo35JM2dmVcsmTsDoqu2cOqLhIA6NSYa2gTDIxa65dy7Uz0tqMqIw==
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=xYmb4BtcVfetBTbh+LvIz+mcd8Dino49KtqJpL9zxw4=;
 b=U1HbKLjuLJg1/i4xqdops6YuXLh/3nDbmsowG1fGKeMyFP7FGd1D49l0OWWpmiHy8n07iA14fg4aqFdkWeasPhaR7Zd9OMyge/F6czUFq1mxPyf8dw9+JSgSHx64VynYEIwtVelS5jvPCIgXX+znNCccC9pm5M7Pp/MOReYaf0XUlLJ+u9tQQJecTGeC/nIpxaSzH9NULBn5tIOst+Od06q6x4N4i02y+LVbpnNtDfqcSRGlWKcXlMhV7OmuPCKhMcSpMId6PEDN6tdM4rZZG5xVvZIpdyvi1pymP9+uXZn+r7AiTKWzEY3EG67+vHlq1M408SgcVJJ5WFrnbZ/1pQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xYmb4BtcVfetBTbh+LvIz+mcd8Dino49KtqJpL9zxw4=;
 b=gF+lL4Hk65qff5vxDi6IwFDkia+Cx5hUhOvhaSJMWyWHbGGrSY4PMMXXWQAqMpHm8dF7Fxr6y95mpPeMyyuWj+hzFvfxdS1owbgj2uAQQHovDtE5KhuY/8FyG117MqqguRttU/sZ7JExwuh1BVSiJFs0PY2PxujO0ypiPXA6ViY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=xYmb4BtcVfetBTbh+LvIz+mcd8Dino49KtqJpL9zxw4=; b=
	Ubay+O0MF96IGSh/adrHOn3+cLFJnYlDJPEvVnv8Yr++JJxImGp+KcqeGg3O0+5u
	sxu57BslhXKC4uTWxQHvrfomsgJxKjbkkFnoN3GkE51bv8QobyiBE4ZceNCw2FpX
	WWsyW3UdqzGsdtnTN+CPM7KhBj1WD9BJe1dUCRIZstyqNahnkOV0yZlgMXwf4yXe
	vhoyRlcA2JavFCGY+sEr+XaOXWaU+wfDUTstQtHRVefDTZmNQjH6uiOCioOzUlAc
	+k3eVljp2mRmwShsVaooVhJOUDadOWODtdXMBSj29R5JpjckaLPFCl0fMe/vkl4i
	xPseTVlo5sgWVKH3mU2Alg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=xYmb4Bt
	cVfetBTbh+LvIz+mcd8Dino49KtqJpL9zxw4=; b=F4fWo+d264MahD6VFhVX783
	+tgGs+0oEcCFeuGCKfoADa4/xensk1oWY09Md/rBZA85ICo1iX8zzrY2gLMxzjVj
	fkvvNLQOV00u9OYmHuFHHe/vpJM8NrNL1Ajgmn8RM0sSaWGEyB6XYGnZ7FLN/1j6
	YTpcOPTOBZUtBkopIOdWYbgZLWx3gGEs9gjDYigQ+5hdRJmqVmz6cjc2ccyURteB
	qosDHwG6F7nzGGYX6EPgJQ445qaKyBvBj18EPrwFLGloOMUag0sC8p2dBaHHufBE
	utkkNEWheHUE9SaaI3NfElrMk8sk0jRkZq1S6y0K0lG4pUEGZ59Q4YOIxgzwUSw=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRKxkNQ07GL1OmRLxfFqS
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 12/15] x86: isolate FEP in setup_fep()
Date: Wed,  4 Nov 2026 17:38:14 -0800
Message-ID: <20261105013817.719823-13-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE16:EE_|CO6PR16MB4179:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: b7b8a888-5067-4bdb-045d-08df3add8f77
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|23010399003|36860700016|82310400026|11063799006|56012099006|261022075727099003|261021121427099003|261021123027099003|261009223027099003|261026140227099003|261102123227099003|261026121527099003|261028144727099003|261022105027099003|10067099003|22082099003|18002099003|6133799003|3023799007;
X-Microsoft-Antispam-Message-Info:
	MDWnP8gbLKUUkEFfscdmQGOeLp5rBtKnBvRmy7E7G62Mbil2AG3CK4l68uj8wCRaKGyWx+EgIFQc4rxcfDaMVBMQ96ZAOCTDC5ivlBjliRHmCURfvt68mriEguQHXbjEUalWk9TgL15+kRhLidV7cRqqNKWOLB41HZ4y6D7Pe/GFXlaSKHEdRSRUphrLTCGTpn8N6+umrmRy4mc3NeSYHF/0hvHKGXqzkHUdEziFD7IaQ5QLxMGIV2mwY4QPpAktZDmdxwhe4XZ/AYhAPlQ1p3l7C35WOUoBFjGtCWFVimLKk1vR9911CEInQq6muIJtY5BieM/annhYVKsFQZOzDXmhi0QyPJfB+0M/Q0bKLFEsrMQuudaC0u3MD/Bn8CxOuh2e3iOMU56v8X0RCAObUnBMf7yuyA1e8mijT6x4ZTbqdYGxMGY3zVyQnZHX5eIH7vEZOke3ABq8BcYDn7B4pKvnuoYDSrcxDBARBJkrVnXvKvMMdWmf4jJZ4Bf3wbBVHANc0Zdxunf6fNNoVQIOt/YgtMx7UzeQPI3rQbrqGEMaVODx1ewRC8FncHP5cNNCCKSZRwGg50SQxoaGLSlglqZqxA7bgHTUOek8IxNaypJm+YeEt8NgBfbvAT1oz2iQYH3Oa3dcwq5paql8ncpvUEuc0VdVy5up4AA/+1uo6MiImBGent0hFoVLXl95ePQhbTcaHQ+TmiDZNeipezFbcw==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(36860700016)(82310400026)(11063799006)(56012099006)(261022075727099003)(261021121427099003)(261021123027099003)(261009223027099003)(261026140227099003)(261102123227099003)(261026121527099003)(261028144727099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(6133799003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PaVLpixfAPOiKCquGs/676puofZzrsJ+W/7BqWpaXQc5AWcQUgfhi/hfUH8eR0/t4e+55s3ea4fBkhtQp+DzuJb0CmFWmScSEVwZOIIxVdhAT9hM77ZdBeznNYOpg90cN6IxzuXHc7wdW2rOz5YmxDcey6upNUATPgCDvrjkPrH7oWlgC1+F6lis+UWs06sadaYaFxG71xsz44zMtPikGFGXZSKTbD0xWzZpHdnPhLJV3UxQs5rwSP8qY8xnam37Z2vQE86MyIKjOa3Kca0u+puzu0LSZjRY38EAlvecOd9n8vpLHAN7fr/hVMd2q8IKd5yFkka/vcf1JSW9fKU7hTZY7rlkgTTBMvr/mEI9k3uHxQdpnSe7VpUqo1PwGKwN7CWlmJD9nJN/mvFvuSVELKx+7Buo7Tvym8JQIHzT35tFY6p5CMop1XfaLpwGsEte
X-Exchange-RoutingPolicyChecked:
	cHWJ3sL3pvy2muu3xvqNopuADZvvqsBOTjOwEv1noyinLU81e5Ir1JgE0xJgDvsOlOULkZotUpl21PeWdxQjdl7ATHW3c71UL5q3fk4+k6KQ6UNBqfM5DcfggcAHvUTTxCjE+4xW68Ek2q0zq/5q1tldJWlPYmZ46kZTD4ZymhqYiLcer58Dd4gRPUTqpl6h7UozVc5AtEcVxtnJD7G6zUUpktPZIRETnVUhm3zlFt5sICeO2aL22L8x/vyvfNINheOPCvOV73/WShUYhe8HoyYO7olukD3JM6Z3ZcGv3aXvCRKcPGh+y51HE0yuaBSO35AkdE8F8hFJfctOx+epQA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	HlkWUbYbxD7/lGh5yU/v7h4acnuDlNkNPdnupTrF31r/I3SQU/JubZjbTzviLtSM7S1pbz4C0G/2vxMzWj8Qw3VCM6Rt5lY5zatCyf2Iikyo5AaAZ7PvdzTWBBa86zwJE+u/Mh+w4gyjFgzXvlsNlSBBDQwJR4+yT1Ull4jXb2kC8nY80vnw7AppdUo905qNx857In6fhUReHdqX30oNi1R4NguPN7+kWHTc4qcX6MQ+xivkYg1aduv3Cky8R01HcRijloBwHzcDCalDHjQb02U69yLoQfG3p3OC7P5W82nlX5pv3WLLhmnSYizTqtTSSmQL55d0ODV/Yb+Ln5GVKMXPe21zjMspyj4codrllyGso6QZK9FQK44rz4h5rl/FBNFkVz064u/4VSlffXnD1jBLsNXO89ASQgyGwkOVmJmI+dGfS2ygLERk94kmmP+VDYBwNU/7bas02k0PQld+ZouB14SgShfPj/lpwKs/H93q5wEjl1ZcliIOnHOQajgqZ1btIsnUWnfM6RT/7qat2V6Tzp+aN3Lph/AIf0n8ooNLx82Vep2SYGCTCpWZl1YEmUuYNt3IWAwVqv9+K6wEgbZU+ZJrVSiWbCHOcb4wMTcnWSesrKbszWAJY13BGhOxaWwIUeXV8y/AhlXgjWBy4A==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:38:57.8540
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b7b8a888-5067-4bdb-045d-08df3add8f77
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0001AE16.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR16MB4179
X-Proofpoint-GUID: QcXdEoiILrRYDuxwHa6JbvdXhF0Cqwlz
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX5fH4M3n6oFHY
 W4WHRQ1To+GH8BgxMJHex83vxIOxVkn45XDrmbBuOqI8JrDl11kgg0bvaHHtxn7r20k6nNhmx7F
 pG9NC+wCoqEhj572XvhHA4lLxV9BJ3RGVAOsG2nzno6jXKYdvDJw
X-Proofpoint-ORIG-GUID: QcXdEoiILrRYDuxwHa6JbvdXhF0Cqwlz
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX/w5426rJtp6S
 iQjNBe0XsO3iKbi0ChonPb5yWyxsJbyGrUvKccZQLk0YhpXHkos6bA9LeHFoHdN4Cn0RzRjq+oV
 Nywp9jpv/VH6Xl0mVWVV4K25LgOsOhbp+aWc8jxj7CDejqLADCB/M9ukcdEhKUN2YaZIsvpg0mO
 fjtZA+vKx/3VwQKf0IxqpQqtspmm6CstqPXsxJ90xnJhxT16xbMASVn/390J4zqsd9WZ6yQrJRa
 OhkZPMkSKexlaeUQGF4dGG5DwWJmoSJhXQeME4zXDIxTvvtqCTynrsEskQ4+uyvXNKQPJsoAe/f
 mUS4cyW9SAQakBoQ6A3u18kzbu+Q4LYxhcXiMrZdYviGE9/RNWwuuvBvz6jnRE1E08h0QkK1a9g
 J8411Pc7d/pt3RY2MXfjjHB86GkLoDhEmymVojlavZrw2HbaY0DAm8AENbBSngopUiqUtOBvrx7
 QRymv4wHxvLfFd2PtlA==
X-Authority-Analysis: v=2.4 cv=ScVi5fRu c=1 sm=1 tr=0 ts=6aebde35 cx=c_pps
 a=iByqbumfC+QZNsSPXlDUmw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=dw5MciS7gY-znkhJuOLE:22 a=cbNQJ9GKAAAA:8
 a=ObMOV3ej4XRLPq6fSaIA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 phishscore=0
 malwarescore=0 spamscore=0 bulkscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-d62444/1793842743-BC558757-96FF4147/0/0
X-purgate-type: clean
X-purgate-size: 3345

From: Denis Mukhin <dmukhin@ford.com>

Keep weak symbol test_setup() for per-test definition.

Isolate FEP into a new setup_fep() call which is executed on a common x86
path.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/setup.c | 80 +++++++++++++++++++++++++-----------------------
 1 file changed, 41 insertions(+), 39 deletions(-)

diff --git a/arch/x86/setup.c b/arch/x86/setup.c
index ba6f9c320843..8fea6495de1c 100644
--- a/arch/x86/setup.c
+++ b/arch/x86/setup.c
@@ -253,6 +253,45 @@ static void xen_console_write(const char *buf, size_t len)
     hypercall_console_write(buf, len);
 }
 
+/*
+ * Common test setup:
+ *
+ * xtf_has_* indicates the availabiliy of options which require runtime
+ * detection.
+ */
+bool xtf_has_fep = false;
+
+/*
+ * Default weak settings.
+ *
+ * test_wants_* indicates default settings for the framework, which may be
+ * overridden by individual tests by providing non-weak variables.
+ *
+ * test_needs_* indicates options required by the test, without which the test
+ * isn't worth running.
+ */
+bool __weak test_needs_fep = false;
+
+static void setup_fep(void)
+{
+    /*
+     * Attempt to use the forced emulation prefix to set the value of
+     * xtf_has_fep to the value of 1.  Use the exception table to compensate
+     * for the #UD exception if FEP is not available.
+     */
+    asm volatile ("1:" _ASM_XEN_FEP "mov $1, %[fep];"
+                  "2:"
+                  _ASM_EXTABLE(1b, 2b)
+                  : [fep] "=q" (xtf_has_fep)
+                  : "0" (false));
+
+    if ( test_needs_fep && !xtf_has_fep )
+    {
+        printk("FEP unavailable, but needed by test. (Is Xen support\n");
+        return xtf_skip("compiled in, and booted with 'hvm_fep'?)\n");
+    }
+}
+
 void arch_setup(void)
 {
     if ( IS_DEFINED(CONFIG_HVM) && !pvh_start_info )
@@ -275,6 +314,8 @@ void arch_setup(void)
     }
 
     map_shared_info();
+
+    setup_fep();
 }
 
 int arch_get_domid(void)
@@ -293,45 +334,6 @@ int arch_get_domid(void)
     return -1;
 }
 
-/*
- * Common test setup:
- *
- * xtf_has_* indicates the availabiliy of options which require runtime
- * detection.
- */
-bool xtf_has_fep = false;
-
-/*
- * Default weak settings.
- *
- * test_wants_* indicates default settings for the framework, which may be
- * overridden by individual tests by providing non-weak variables.
- *
- * test_needs_* indicates options required by the test, without which the test
- * isn't worth running.
- */
-bool __weak test_needs_fep = false;
-
-void test_setup(void)
-{
-    /*
-     * Attempt to use the forced emulation prefix to set the value of
-     * xtf_has_fep to the value of 1.  Use the exception table to compensate
-     * for the #UD exception if FEP is not available.
-     */
-    asm volatile ("1:" _ASM_XEN_FEP "mov $1, %[fep];"
-                  "2:"
-                  _ASM_EXTABLE(1b, 2b)
-                  : [fep] "=q" (xtf_has_fep)
-                  : "0" (false));
-
-    if ( test_needs_fep && !xtf_has_fep )
-    {
-        printk("FEP unavailable, but needed by test. (Is Xen support\n");
-        return xtf_skip("compiled in, and booted with 'hvm_fep'?)\n");
-    }
-}
-
 /*
  * Local variables:
  * mode: C
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:39:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:39:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473521.1681252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRa-000596-AZ; Thu, 05 Nov 2026 01:39:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473521.1681252; Thu, 05 Nov 2026 01:39:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRa-00058q-6f; Thu, 05 Nov 2026 01:39:10 +0000
Received: by outflank-mailman (input) for mailman id 1473521;
 Thu, 05 Nov 2026 01:39:08 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRY-0004o0-7P
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:39:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRX-001xXk-KF
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:39:07 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebddeb-8faa-0a2a0a5109dd-0a2a4509e25a-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:07 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde39-be1a-0a2a45090019-94a39217c48c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:07 +0100
Received: from pps.filterd (m0482516.ppops.net [127.0.0.1])
 by m0482516.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50maiC1531040
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:39:05 -0800
Received: from sj2pr03cu001.outbound.protection.outlook.com
 (mail-westusazon11012003.outbound.protection.outlook.com [52.101.43.3])
 by m0482516.ppops.net (PPS) with ESMTPS id 4hr9tfbj14-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:39:05 -0800 (PST)
Received: from BY1P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::13)
 by PH7PR16MB6167.namprd16.prod.outlook.com (2603:10b6:510:2fb::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 01:39:02 +0000
Received: from CO1PEPF00018866.namprd03.prod.outlook.com
 (2603:10b6:a03:5c3:cafe::96) by BY1P220CA0016.outlook.office365.com
 (2603:10b6:a03:5c3::13) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:39:02 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 CO1PEPF00018866.mail.protection.outlook.com (10.167.249.150) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:39:01 +0000
Received: from pps.filterd (m0426316.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mNQU3091282
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:39:00 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hnycbnhnn-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:39:00 -0500 (EST)
Received: from localhost ([19.12.76.222]) by cmsmtp with ESMTPSA
 id OmRNxdLolmeVDOmROxZqYn; Thu, 05 Nov 2026 01:38:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=oYf
	26GDzfF+IzeihIfuSby2Ls4TyHYFhd7UaP/EZlao=; b=jpt3oj0HtDco5euDjtO
	+K2W0/4rIGkfXy6BSmmCLns55GqmEhOatPvj1oxjkyFLWYxsat+Qb3Hk+qyBUFhg
	APVm72B/aUxNQ7zAs89l3q0URTxfzhmTMg7F4ZdBeRA7bFWt/DJXJZdLFJaTQgdd
	IrQggUjxA47mwcId7x9NxpgdU/swSV8+szELQNGROHDu3q522P1ueyObOVwyNNXa
	3Vx2r76FHEgQeuTGVDyHESxA8X71byZLeO+ctPiIo6WmqK2QCMPrheRNEegRvy5u
	AHnLD/oAp1uTRc8bmrr4MwcpwxWFtJvpt3EIrJKe2MZJk+dZapvBHSOfx62kktFW
	mDg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Gvhqa8o+DGzXHNk7KVi1hzRlBXqMdbUWh1m277cq0I6nruUX5Yd/NLKXzyR+kSAbr9m/zTY3W/O6sRCmUtRnWjy5Z9zmiBLUFugdneiUiTgJkW4gQgl2uFXOCYfEwz9489IJwCIkBVe1uoa6jtrquTh7NLd1+R8QDeVfy/3Q45BFVQidQBbMh0wNPHwFYSzMHC0QaG2Nq5RHv5rlPXtcKYfZsSFB+TLUwI3eDbnFz/cKsPZ/R6FIQTfasASENPkCuGqQUfsQLHFm0u34Q5MMWUzWSjzc3MskQbBG1kN8fiJiQMO2zO2celiB8CtVk9m+K0i5gr0rW4iEbT0rjP+0Ng==
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=oYf26GDzfF+IzeihIfuSby2Ls4TyHYFhd7UaP/EZlao=;
 b=FCB+ED0ZeotnC/DQXu7ZrfTNKap31Dd6EhUonCI3XRnNCSd5f2VyoRUNh3k/6WEVgx3VSYnoxWunRCTRsTvgQdrVrVVzmrxpgbm6GrlSkUtAsiwLXipm2Pa8nF1zCDrVeQwzTeHzSBh58pzFS++YbUfJq8XT0HawcMHjmaeaqzq3rLGgq7d2VEvWHfBqQekjbt4ZQF3dcCcAJ9j5FfpclgsAleRrZUEgi76l2X0NalMz+cLhVNs9cuOXol+RWRS4HL1aMWRap4ID644IONwb6qA+5PcDWGPVyropZRDjnyKj4C5tqv6kvt7Ajv4MX60uv2uzmcaUjT3Gtf3DO7Qlbw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oYf26GDzfF+IzeihIfuSby2Ls4TyHYFhd7UaP/EZlao=;
 b=EzflSAU9QeIVI1Hu8XfVSGk9QF8svpGYLv2mfsxadgBevmYJmQPs4tY/oMNYKdjkYHkPdt79P7VRZAvj5w2MNnOJFSnqnA9aMa82PVJ5qG5082xyBTsjLYTr97+01gpw3U0pSBT1fOlxX08n3T4n6JWKCuWIu5HurQAWgJZXN20=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=oYf26GDzfF+IzeihIfuSby2Ls4TyHYFhd7UaP/EZlao=; b=
	Npxhf9ucB0SylwZinMMYO9odCPnTBV2QKdY/rPYbpNusRUTdDrG6sbz7e/PAJjci
	yjXI4HcLuGL2HS4tGzWhbLkUuN0/Fb3qQAU/lSSzs+bRtizzW1OejFIsPg2hBjiP
	AU8CQLdyU1LlD5/sTs1GWSxcGFWAY5A0Uvn1E3a9Aw9pbyBSre8B7uhAJshFUuhT
	1YAXgHKRKAXDqj+A4mMHgghEBYyw5xsjca0fjTSlfWHfiYxdtSiYB/dvfWd+Pj0O
	xI9fuS6/YpC58jo+h+lMBt3dClflOms/igUhGB9Jd0ZrIZlkWLTSaBSs3LrOU4Cu
	QYPjlZfNq4d09WhdT3wYkw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=oYf26GD
	zfF+IzeihIfuSby2Ls4TyHYFhd7UaP/EZlao=; b=ksVgjMCq6FfJxF+UG7pbIZL
	Mt/mvL5wbmOWwBhsNm0Z6uvR4H0L1QNAtCRGm7bFvxB1iEUIA6caDGa0rXWKVvBD
	ABJxgtPRTQScP24dXOWl2UIpGujkG84/AMEVNNBbt3a+vXen8ivk+ksIPRmwrEbT
	tS1m1hJHoo5LSfnGwb03Lx6s9vAZruIEr88hYgXa0wqJG+WNUfz1DEYnofcZGJpU
	MKyKnMNhAftzIicDTIJPWMb+D/35w16/RQODVGaOtjoFqPLCrVRSZuqTjvZK6yFx
	zymKExjn/AmJ6+AVssTYty6wbhwNY6kGYxBrSj2sAtEqXdGr55CLQZnv84gTiuA=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRNxdLolmeVDOmROxZqYn
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 13/15] x86: add primitives for interrupt enable/disable
Date: Wed,  4 Nov 2026 17:38:15 -0800
Message-ID: <20261105013817.719823-14-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 adultscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0
 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF00018866:EE_|PH7PR16MB6167:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: e5e75e12-9dbf-434d-93dd-08df3add91da
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|36860700016|82310400026|261021121427099003|11063799006|56012099006|261102123227099003|261009223027099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	EUrLFYvqgQKisk4N1DGhtfhkBEJ6fPf20fyk0soyp32Rrfd7Cc49wa9VyEDh0k4h4bgWmkU3NN11s3iCUFAdb7yj6OB7RBJLJOWR1iADZD2brmR35wferey88qDqsPIVrEd64ZWfAgNcv+BQwfpWJk6z1oxqCqG6e1q+0WvGfhN210M0ARU2WcIqaRedqxcIwquhPQJk366fFOzFjYFRPjzLXOkTf0I4uhLdbl+x+tb0RH/RLz+8W+Ru+T4lCTRj1XoENS7pYSUbRqVJbKCFxQOx/kOTeoqhAecNS538AcZC05awSnJ175Jc6wmy7YnH7NghXxbadJJz9VCc2PzGQaMZsTm5+VRvukNxmMLC5j+18zIcGw32vjNltO5k6oRLM2xBuEOMtWTSZO3CHFLjf0NcpntGN+GCmg4v6VZgIAP2p1unKtsLMahbhY2W0IOZSk9lWHka0d9nCHiHWosdWLn4vw9vDxTr4Ud+ftzIKQWLzReuUW3DejMdwW3o3VVq6Pgm2WYMuMcJkcKbLg7ScwNziZH797GJxo7gRsDIQwxkD7QUxUNf6vvfqHuQ/LaNByL4d6h0Saly162gF/8D2yxRriYKiKvUwlr72zPUwvFlmamMYvNhT8DXY8ULYZqaNp7ZvTOExix3c5UE98AAQHvaR9gxUMeMf4/N4fi0gK49eEeqh9v5dDo5f7CMIdr23zLujRK2Yp0n05b2MZdziQ==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(36860700016)(82310400026)(261021121427099003)(11063799006)(56012099006)(261102123227099003)(261009223027099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9jBH1YVOObButIBgLOxYhnk4c++joq8AuDuYC3WzbYCTqo5l7ngn0liGO4Kyw/yeziyCrtspcSmAc/icdmtBHaTe4U1FKOLVNPa34tFxDqrNPoAxto1Gz+TUs+TkQN9UevD2953nEyVaha8pKvYjSZdBtu7QMiJo3eg9C4fUfgW5qVG8/uTFfdRLNb00IVrtQeYsTKPC0kf91wyeUrfuBGl7glAYdr0FsQwNWCtZeogFtgvp+YFBT6KGW5dKhTzjUzyzHYF98nq07kC0OdehiLGGRCBwiaQxbwtYcmyHHaDDz6aknGBD9lInjcd//D8d4H+0YbOonsiAzjWIpceJEmASP0TsIKwM+HEP1SzB7pHGfYSpd2/feCF6RRH+A7QqtTnID1p3J7esVkoMPyf4rWOFv6wSYsozi7vqC2buEv63iHBCH/TuT/DNrnMng8Hi
X-Exchange-RoutingPolicyChecked:
	UKwV04fKk8yrlOr0hH/KF6YfQNSQWfIK8Z/e4P9pibZQUSkHSUwt79O+Okjp0yYAbmTrT+E/EjYfKq8C/2Md8B3xwtXCdIRlZ1AbGNICih4N07pyVJddeLBTTF8fJSBFLDVTM2Zp51Q4sy7kB8uuYjZmG6EaSP9ndepbWaLu2NWTVoVgldjsJp17YU5j+5dL9AsjQQ/cQdVQYqgq2ymvk1MGla65pSpsct+PfMXdpzM0yw67qpS0coI6KSBn1rv0a7KusbgEVX1AwCPjkb4yUNmuTGK7rrMWro3rQ5e+MQ3+deo/0n5eN7NEeClQa9WJ5uL8VsSCtdjCQAMnIxg56A==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	3jzcgzVr24TEqej3i4ObOmIqQygY50H0XpyjU2ABRLwnarI13SRhUlr7iuArOPtZIlmz317py1rG3U2tdYsETuGlNBWBKsMJbEagNNLLXdzkwtcnr0jetkrH/ldgwBYqAp+qBpdsGJAQXHoDq+sfcLqXYXmCfb47CiMU0Kyn4qlS+0XkKT3oIA3oe4LHwFxA/YjDuX6ichHXnvkVVy53AcIZrwWQRFIUrFP0jZWzy2EUdJt1lWahV9bD2OJ2mXg0unR4bMqdz3K7N5iuA7ISj/NLDsNBXPAu/qpzylvNjvyzNfCd5Fr0gKoc5z87e4+/ivgTJJZ5rjZcVHXCc02Eg6GI/nOJjoA+sOzLIjUS5nl0WDm2SuLga1wdzjPQIaaW60L3HAmsOLIYll3kEdWycxcE8VOX1Z2H+RTqYfTc3oXmxwfFQEfq+o/pUfdKZ/WDc6i90atQbw6/WqWcR/R3SAM4Lux1hiImeT/UZIAj4QdjMDQX5jbDo8PPV/HQEM5VPlTtnR6ECqQgwvX8XA+pWsMCtWBy8+6+IrCdvH6eKMafiiaiaJb4OzVIZH1Zk0Mm1UJUZeL7x0zW3Kx76mzk36wUu4YW8HIX3cx7OZCmDYAx/zv+nGtvA9cmFhhWTHoxeLCUpmCuF8F0xJyEA2t6Ag==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:39:01.6237
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e5e75e12-9dbf-434d-93dd-08df3add91da
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF00018866.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR16MB6167
X-Authority-Analysis: v=2.4 cv=XfAcX455 c=1 sm=1 tr=0 ts=6aebde39 cx=c_pps
 a=ayBBURk7jZ4GzqZFlR2IhQ==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=NvsXeTrgx-CJMFV-xl94:22 a=cbNQJ9GKAAAA:8
 a=oX6sQOh5f4QriJ02HC0A:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXyOVP+SHsKOFA
 sz6u6/0T4swop6tHk6e67Z4NZVL7HquOw0zoY6TPj185xzMDEznjMMW/+OT66OTVlYEsfWnnT0J
 gLBgcofFxPzorzQTSm2OBwqtdNXnSfh2HhD1CCO2jzwqQ8uBIyTO
X-Proofpoint-GUID: JAqPgAl7sFXmi0tvRLv9B2ra1f1OkcRA
X-Proofpoint-ORIG-GUID: JAqPgAl7sFXmi0tvRLv9B2ra1f1OkcRA
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX+b7yEmPE8cG5
 qwqjgxnji1UrUiZet+P/4mw0BtovQ3Dmz/kRVxMnKbmK+ydL3SmvyfNZe3uHoKM70QZ/jGSgYaG
 Dh3VMujdJYneV2OERkUXJjmcfziEHTbMfaoZU19FmBtdaK03Iw9ZQMgeV6ypF8rY36Ry24wJJXh
 Q3nsm0tWjkt9AL8ckKkFJv51w1a5kNhssg8D1V0K1FYIb0QToDQnIxHCTs1mFAAnGVuzym2Wmsq
 WtV/mgklwp/OzDotMp+3eS9/X+MmbccLKHuwDi+bMwS5YDYEV4Drag1cXHVLLbhPnCqwSwMNRbS
 FY1SMdqVyBtRKTy5PRFuZBBHqzvCmpglxBc79SuZT1f8MGuEVXRUyynG6H9Mnb0BGZOBg4WmItj
 K9NrbQ+kvJ3j9wkdH4FzZf/frapJsX6FoZbECJzL6pbBGRzGYluKZxQwlZvfoliMuOvWiUNgXWc
 C8EEkCzzawm7pHOsbSw==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 bulkscore=0 clxscore=1015 malwarescore=0 impostorscore=0
 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-bad1c0/1793842747-BD6C2034-01117F50/0/0
X-purgate-type: clean
X-purgate-size: 675

From: Denis Mukhin <dmukhin@ford.com>

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/include/arch/system.h | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 arch/x86/include/arch/system.h

diff --git a/arch/x86/include/arch/system.h b/arch/x86/include/arch/system.h
new file mode 100644
index 000000000000..3f1c20263a3c
--- /dev/null
+++ b/arch/x86/include/arch/system.h
@@ -0,0 +1,7 @@
+#ifndef __X86_SYSTEM_H_
+#define __X86_SYSTEM_H_
+
+#define xtf_irq_disable()     asm volatile ( "cli" : : : "memory" )
+#define xtf_irq_enable()      asm volatile ( "sti" : : : "memory" )
+
+#endif /* __X86_SYSTEM_H_ */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:39:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:39:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473546.1681261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRi-0006Fb-1m; Thu, 05 Nov 2026 01:39:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473546.1681261; Thu, 05 Nov 2026 01:39:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmRh-0006FS-QA; Thu, 05 Nov 2026 01:39:17 +0000
Received: by outflank-mailman (input) for mailman id 1473546;
 Thu, 05 Nov 2026 01:39:17 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmRg-00065k-JM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:39:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmRf-00G70N-W7
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:39:16 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde3c-e002-0a2a0a5209dd-0a2a45099ad6-8
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:15 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde42-be1a-0a2a45090019-94a3921718c2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:39:15 +0100
Received: from pps.filterd (m0482517.ppops.net [127.0.0.1])
 by m0482517.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A50nImt1645808
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 17:39:13 -0800
Received: from byapr05cu005.outbound.protection.outlook.com
 (mail-westusazon11010003.outbound.protection.outlook.com [52.101.85.3])
 by m0482517.ppops.net (PPS) with ESMTPS id 4hra2g3bcu-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 17:39:13 -0800 (PST)
Received: from MW4PR02CA0008.namprd02.prod.outlook.com (2603:10b6:303:16d::27)
 by SJ0PR16MB4205.namprd16.prod.outlook.com (2603:10b6:a03:31b::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:39:08 +0000
Received: from SJ1PEPF000037A8.namprd03.prod.outlook.com
 (2603:10b6:303:16d:cafe::1d) by MW4PR02CA0008.outlook.office365.com
 (2603:10b6:303:16d::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 01:39:07 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 SJ1PEPF000037A8.mail.protection.outlook.com (10.167.244.181) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:39:07 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mitN2969554
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:39:07 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4nrrs-2
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:39:06 -0500 (EST)
Received: from localhost ([19.12.92.222]) by cmsmtp with ESMTPSA
 id OmRTxkNaH7GL1OmRUxfG2e; Thu, 05 Nov 2026 01:39:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=o9Z
	Yc4v+PWcDcI6hzGhrBFkRY7QkqkSCRaiH8rIbRQ8=; b=qsKjfjkiX5yPpRf74FV
	wou3dHR93d/mYutJ3Xio18fZGmw1BqE//p0QuFjNnXFW9uuPEuI4cxf6lIpwJ1RB
	0+vbvkVXW9l2xVymB8TQM93zFgGpV/ahXcYntl5hjEVCLbeBF0rpUODPvEl1lnAW
	izuo9PpM5NUSEj09mtRws87l6Yy8lGbMq1WMzTi710l3plOXnV+KAX5UFMAxzR2K
	1dKVl1LEAh4cZu0LFhYrGj6K3xtJ37cVc57A7JYW7S74QYi5exAeCdIg1zk06muA
	ashdMraJ4geMO5sh+0DwwSUeQFC/ryOphL3J1jEqyeLbEBe/KnqMgFnUn6ntKNpM
	63g==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=n82vU5AwZKDYSJPqlRO8S82X1vrgmSl2ul7pup5Wifaz0qhsMFppoFc9NoqQSX6svTYpL9tkmQKE4IwvIukLo8kNZzlxr7NlkabnSNkqRPKR8kG0nIm918nBxoUpoV2k+Ji9D9P/T8umAyOq21rDQW1l5192wULPaAEqavDOMBVXsitjZvLWZdeR9eW2LFz80BuG/lqTe+F/FWOTU+uZa7Wf4r/RCzEGJ+pwp1MQiGLAdyN/L8rBgNGE6t4Slu1uNobX/CsnwkPMFtaZZ+KYj7W9IWuQb/vCPfQdIS16U4ptwbKVe3YodHX1bMhjuA7+Lo21NW9zKoFsH1BJ8tBygQ==
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=o9ZYc4v+PWcDcI6hzGhrBFkRY7QkqkSCRaiH8rIbRQ8=;
 b=Q6BhdLWrkr532Na6Ia0hnWmwaVOlvkjKbU+0l4+blX5p1Ha2CqxOAu/4VXx5PwJsVkfDmpAesUtip3d7NV5H+f5KTzAiIYnpvgPwdDyJrNSGOcWlwrOoV7Hb/Ic14I95cFGaGw5/6Jan9EDxXWtWQ22mdCsuKTS1c0PgK6OH7VmsyC4qVZ0j6UGLL3BverDz7O8jsltIEfY8lVd/YkmSgQMkygOpVyLbz8Q3lTasJQK30z/G3qKsZmypLFA8ylrGc7Pae6ScpGRANZqB/TPL3puaUjF4pcjLeldHVn4euU0w7wI+1jsCm9liudYMFMGOySngJBK1o/W5MdF/8cEonQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=o9ZYc4v+PWcDcI6hzGhrBFkRY7QkqkSCRaiH8rIbRQ8=;
 b=YMj2dIw6gsM/RRs67vDDHokEKsYvYxsJs1SJJ6uHu4VfLS8/MqgQarc269AIBSjM31dhAa18blShr1wIyLX9PripOc9c9A8Lo122Ca63XZfALd4d2wSLRm+EawHR4MsmoeqxFOStUGyxE7ADiAshsH1sMC5GHFesQZqAbFxFpX4=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=o9ZYc4v+PWcDcI6hzGhrBFkRY7QkqkSCRaiH8rIbRQ8=; b=
	nJrdlw2xrC5fLnF57rnX69hBDQpmHbplMOsCULdl6Hr09MCbb4r16NuTzRCaKhtF
	+wPCUbBmCTTFFHGBahPzVRAG7bbjvv1gjaGzgS2aHAePQR5SFB+JNjnRO9H0+jph
	ahRz5hmBbtrJTAS88s9eNahX7+nN4oslyJcWBFphmCTMnd7xpsfvMxLWwCWwm81o
	kRvi5K3pgcR1KZHBksLU85ZUdhms+1qTf/UzZI8O2eal9IPS149bn5/j6138Aa0T
	KC3J2LyOVQOREWBOlFtOcrn7qELEuxihj8N9iJosYK9JNk6Ejs+xxQ3pV86j5n3D
	66yK9Dq8WhjQiWpmkdbDRg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=o9ZYc4v
	+PWcDcI6hzGhrBFkRY7QkqkSCRaiH8rIbRQ8=; b=MVpnv9W5PYGMjXY64PYqtHL
	8orLI0g3p5YBOIkzAKImoklEqG/D/b1Ac6kEg7zWewEiV6zYJ/Xsb1GtL4lNcrft
	fmbRuSNYcKYBYYJ0zSvk1h5T8X4uVGuVTJKIALTuPA8gAwfSptnbyzq8ZdDRLuWD
	b2yNRHnx5sLQJAqboMO0B5J2mAL4lnyl04PGFuMcRpI0/tEOUdGRteZouSXSCtxC
	fBhDFZ+ft8a6Mq4lfZxjvYNTvMAtANCk0hgoGm7OM9BY8+IkKcEamq66uVmabapW
	8yta7oAWCHfYF2Mu4ehnQPJSAQlA08RTNxFuTXrPQx4UzXD9CswcPw0LenBspIQ=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRTxkNaH7GL1OmRUxfG2e
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 15/15] x86: add interrupt latency test (hvm64)
Date: Wed,  4 Nov 2026 17:38:17 -0800
Message-ID: <20261105013817.719823-16-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000037A8:EE_|SJ0PR16MB4205:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 057d6e16-7411-4a0f-9cdf-08df3add9523
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|30052699003|1800799024|82310400026|36860700016|261102130727099003|11063799006|5023799004|261021123027099003|261021121427099003|56012099006|261026121527099003|261022105027099003|261022075727099003|261028144727099003|261102123227099003|261009223027099003|261026140227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	OdNjX0qC+wrIu6NTLmJvTr6Hv9y417/VoZZUVb0ro8zlmoqLSxcgVNKqZGpTejL1THWQBtu7WGrOs23asvEKdvY7mBj+IkTB6KG5guiPG1Sg/o6C8QQjl+yXLzPrtT2wXpF7qJA+YBmwMFML1I+qbPCMxmohHONM7xUmMZ+52al3+h17aVzhFH5QqAfiL/eMfs2wAbg2DB1FUb6Lg0BxH+MXKk/ALhZNkk+CbmDRcra4Y3aZEKMCeWQeTou0gGFzHwaoswYYd2ZkkmJe+alOhASLM7etLKksvF8INppOGYgRJmc/Zi9tpj1VopPueZXq/Lq5PckI4C7W9j/im2NVvGAvNAykHPrN/nWa+JBJrEpm2LR8iYQNZXQcC7XAzO+nlWcCTIR4hP7w5ech7ih83YE546ueO5iYgo50gWyMdkZaN3qO/WdTS6jVwzF2P/UgDC+0Ay2/tB/2EQg2UMpsoxH7xOqF9vZhjJZChcBxzkTVZNlCfnaHKC6RMgFS8+4fyWGayDbSWIV5z4rWGoW02PX5nEjUhIGQ/9VSxPuK/q5lHTxO7DW7SVOemHpT29ULq/X/ORDWKtT28WFBZm99Mb1tA+6O25riydA88aS01naFhemQF6dT/9My+1LhRIS2lDwEEoti9N9hgDxf/liF3FRusrtvxpZheLzQnfSVTW3grCTWgJUidRbdDLHB8bJMmq8tYrS/IQRuEqxugGXGeQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(23010399003)(376014)(30052699003)(1800799024)(82310400026)(36860700016)(261102130727099003)(11063799006)(5023799004)(261021123027099003)(261021121427099003)(56012099006)(261026121527099003)(261022105027099003)(261022075727099003)(261028144727099003)(261102123227099003)(261009223027099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	/Xunv9mZvr/0NF1JJHynGt2svZAEoeLoRa3TzGP/JCLbTIa4fflOszDjgMAgXbZQ10+cAqoniiKwt2/0qNjHNYm4ByZkPKmukbbhYrlops2znT7qBOQjXqJKwsnxPYZrgEkATkkQCrvtbPMAaiv+MinbQB/tPoD1S0BafdC7GbF1biMrHB+UHFjpBn9g679PSwkEnW76SGtetLPltluB2/O9ZmZFRR2RC5WHblB2O4HPcLcha8VThdIFfTUPTDV9GhgMlUNGzBo8H3y+jzRZnOGVnYGRjMHX2mte3zB4HsyXJz0CQe98WbTSDbWSob1/qaXLmWF7MdkKWHuxi03vhGXmq+BBmFS57nAH5w3TW50/qi6N6j3G/RHiQP/vHt1ozUUxDjl9prW//7rNPmXVIZLuvFnM39/8XrWlqAWtvuceWwFuTYAvK8J2C5EbPAM4
X-Exchange-RoutingPolicyChecked:
	0s/MojbgnC3OvsXRx1VHcBD3r6x1e4qs/7p0kf0jEJ62YsrwWB89DjLj4vhAGqQX/Tz+9hoE58n/2esYHLriRdZHFQ52gc/bH62V36otVUeVdOXejgaw2aRcPfFoxhBbi3+Sxg7umfoIbSqNYkiaosYoPQKVOEOVI1iobEdwXmV6dETyDvyDCcxN8KNjtlxfJqlhE/8foCg+rryqlrP+xB14Mn2NA81m1YWz7GQYoT8hqHoVqnYQzDt1ygR8kRpZN58gTN7Gr7x9l8XJAECz7L8CDwlfdvNTgT67gL5Yty8MvopNEDk3IQCsYJxkgPZ0UfExyHWt3lP++wDYIPBwJA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	vJBg6ryy4xWd5jhHIxJRB6tL/mcOzsHRhs2r53xKpVPoDh4nqEc5b4yLZzR1psNAvz6zHxVK5wuBSucuN7h6nHwPd1PJWmz5ifDq2v47iWh8K+2ExaR6YfssJZXb4EhcfR+7mVyI6IG74auw5inpPn5PkAOG51K8LvN8orNTsSACz1e9Zx4GrFZCl7vAhD1q3rbRsFbLJbwMJgV3F9FI7mbMDJBHTHC31vjbFMhJPuOm5bzZ0x3NraHsAyHu835K8DrayMaQ1Q/qsqJUHtrMwBrauVnrdXyw4JNdJvxsJ1IrawQbcbQ8C0YODtjcqAYhzuuS7fVe8+durdupa/dj7PLS2S7LrkVQlYv/kMPRVLOsl09ymwMvZOl3aGylG2KWH+yJnQqpr48rJcCnQT227J3vKRyWtYsQJHA5BISOQPqrrEwSc9a7LT3q9ybXxPHj+UKBhMVnDHoeAnQUunfrwLRC2HG7Obgmr3pjCGwdNfMWlxM8/QZnKTWPJhxV6ZVEp4bH8v1iAJIIyiI0e10c2ElVfGVFWUFWg3yqN+uc/qNDkYc1/XbNQ0a85/S9d5G4/udSo1ASRvmBWJ+oTu7sGE3XHLcTWBXBbD2C1veesaeu0w8+ysH6zkFIUhgNkvyllTUp2W+Y/R64lWeKORn5VA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:39:07.3743
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 057d6e16-7411-4a0f-9cdf-08df3add9523
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF000037A8.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR16MB4205
X-Authority-Analysis: v=2.4 cv=Y+ptIReN c=1 sm=1 tr=0 ts=6aebde41 cx=c_pps
 a=uej8S9duoQdrJ4czObxKNw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=MLwXIh1eZMowsRZfVxRb:22 a=cbNQJ9GKAAAA:8
 a=LXXH8h5DU--Z2YSLYwQA:9 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX3s2QwczfEVbU
 yuYB116vhNDWiroKNbTLLH17sHzEBNgqdBZRIIw2rb8kSfcVAFoaeoEu05K5Pz6v7KhaBOQsQ8G
 xiRC9qejn52sMVn0yeAQKhxKQqTuOoaVhsc3sV/hJnPuq9kW+J8uuVTvOKD2iEAIXiS/HFcD8Kc
 hAsqDrkkTiF1H2ubWW07WlutHxTTdu/6PS6uq4ZihlspgsQQvUcddgMh6RLajQ/dqVirV9eHs17
 DK0CUvMpzbK2O2qTJ+duTVW4yDO50C11FCrK/sP/S2hpvJxlKct53Kquab1krpIoZmExss7DuA1
 lR6mgp+ozmdbQR4p06teH7C0iNYHx5XtPlBIAPfrvsq+pVJA+BvG6/imeOibcWzF+qoz6w6Cr1f
 XAEDXpjuVeIPHKXgvc50O0+ROFHYTrXjSjUThN/qCq3zSZ4P0O9KWpu0k6P+nyx86OLaCZdjRvi
 1quhMBsRUnIZzbpFpYw==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXyoC7ARf/4IKV
 ajafgDMo6hUxQg/e+iZN0ucuwMlUWsO4Cu+zlqo8NyLyLewAysO/ARnSQCai+RzGYUwNfxgc211
 2qru1bc3UoIBZHxsvivRH9lJvO9fUHxZCud2O5gLhtQBzrHyG+zI
X-Proofpoint-ORIG-GUID: f-rbkOIWaWaZpTA9PclLfZbUB38eUNoK
X-Proofpoint-GUID: f-rbkOIWaWaZpTA9PclLfZbUB38eUNoK
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0
 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0
 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-bad1c0/1793842755-BFCD7034-FFE3EF77/0/0
X-purgate-type: clean
X-purgate-size: 28042

From: Denis Mukhin <dmukhin@ford.com>

Introduce new test to measure IPI/posted interrupts latencies.

The test uses 2 vCPUs.

vCPU#0 (BSP) issues IPI vector 0x21 to vCPU#1 (AP) in a loop, then performs
data accounting. vCPU#1 runs some noisy code which keeps trashing the CPU
cache.

vCPU#1 (AP) is brought up via minimal framework which is frankenstained
from xsa-472-3. It just starts AP in hvm64 flat mode. Xen conveniently
provides a way to skip INIT/SIPI steps by using VCPUOP_{initialise,up}
hypercalls, which simplified solution.

Had to plumb minimal GDT setup and re-initialize APIC into xAPIC mode.

Also, I was lucky with Xen exposing TSC frequency via CPUID.

Exported and used domctl hypercalls, specifically so it is possible to use
XEN_DOMCTL_DEBUG_OP_POSTED_INTR.

Added missing evtchn hypercall to EVTCHNOP_bind_ipi/EVTCHNOP_unmask test
vector.

There are several measurements done.

    vCPU0                                     vCPU1
                                       executes some workload
 +-> t0
 |   |
 |   write ICR2 [*]
 r   write ICR
 e   |---------------- interrupt -----------> t0' = recv_tsc
 p   return from APIC emulation [*']          ISR
 e   |                                        t1' = handler_tsc
 a   t1
 t   |
 |   sync against ISR
 |   |
 +---+
    vCPU0                                     vCPU1

IRQ delivery latency : t0' - t0
IRQ issue latency    : t1  - t0
IRQ handler latency  : t1' - t0'

[*]  For event channel that is EVTCHNOP_send hypercall.
[*'] For event channel that is return from the EVTCHNOP_send hypercall.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 tests/interrupt-latency/Makefile     |  11 +
 tests/interrupt-latency/ap-asm.S     |  50 ++
 tests/interrupt-latency/ap-main.c    | 164 +++++++
 tests/interrupt-latency/ap.h         |  12 +
 tests/interrupt-latency/bootargs.in  |   1 +
 tests/interrupt-latency/extra.cfg.in |   1 +
 tests/interrupt-latency/main.c       | 706 +++++++++++++++++++++++++++
 7 files changed, 945 insertions(+)
 create mode 100644 tests/interrupt-latency/Makefile
 create mode 100644 tests/interrupt-latency/ap-asm.S
 create mode 100644 tests/interrupt-latency/ap-main.c
 create mode 100644 tests/interrupt-latency/ap.h
 create mode 100644 tests/interrupt-latency/bootargs.in
 create mode 100644 tests/interrupt-latency/extra.cfg.in
 create mode 100644 tests/interrupt-latency/main.c

diff --git a/tests/interrupt-latency/Makefile b/tests/interrupt-latency/Makefile
new file mode 100644
index 000000000000..43f2a3c69a62
--- /dev/null
+++ b/tests/interrupt-latency/Makefile
@@ -0,0 +1,11 @@
+include $(ROOT)/build/common.mk
+
+NAME      := interrupt-latency
+CATEGORY  := functional
+TEST-ENVS := hvm64
+
+TEST-EXTRA-CFG := extra.cfg.in
+
+obj-perenv += main.o ap-main.o ap-asm.o
+
+include $(ROOT)/build/gen.mk
diff --git a/tests/interrupt-latency/ap-asm.S b/tests/interrupt-latency/ap-asm.S
new file mode 100644
index 000000000000..60587c803ac2
--- /dev/null
+++ b/tests/interrupt-latency/ap-asm.S
@@ -0,0 +1,50 @@
+#include <arch/segment.h>
+
+    .text
+
+    .globl ap_load_gdt
+    .type ap_load_gdt, @function
+ap_load_gdt:
+    lgdt    gdt_ptr(%rip)
+    pushq   $__KERN_CS
+    leaq    1f(%rip), %rax
+    pushq   %rax
+    lretq
+1:
+    ret
+    .size ap_load_gdt, . - ap_load_gdt
+
+    .globl x86_vec_avail_entry
+    .type x86_vec_avail_entry, @function
+x86_vec_avail_entry:
+    pushq %rax
+    pushq %rcx
+    pushq %rdx
+    pushq %rsi
+    pushq %rdi
+    pushq %r8
+    pushq %r9
+    pushq %r10
+    pushq %r11
+    pushq %r12
+
+    movq %rsp, %r12
+    andq $-16, %rsp
+
+    call ap_irq_handler
+
+    movq %r12, %rsp
+
+    popq  %r12
+    popq  %r11
+    popq  %r10
+    popq  %r9
+    popq  %r8
+    popq  %rdi
+    popq  %rsi
+    popq  %rdx
+    popq  %rcx
+    popq  %rax
+
+    iretq
+    .size x86_vec_avail_entry, . - x86_vec_avail_entry
diff --git a/tests/interrupt-latency/ap-main.c b/tests/interrupt-latency/ap-main.c
new file mode 100644
index 000000000000..af781232df40
--- /dev/null
+++ b/tests/interrupt-latency/ap-main.c
@@ -0,0 +1,164 @@
+/**
+ * IPI latency test.
+ */
+
+#include <arch/apic.h>
+#include <arch/desc.h>
+#include <arch/system.h>
+
+#include <xtf/framework.h>
+#include <xtf/time.h>
+#include <xtf.h>
+
+#include "ap.h"
+
+#if !defined(NR_APS)
+#error NR_APS is not defined!
+#endif
+
+struct ap_percpu {
+    unsigned int apic_id;
+    unsigned int cpu;
+};
+
+static struct ap_percpu ap_cpu[NR_APS] __page_aligned_bss;
+
+static uint8_t ap_stack[NR_APS][PAGE_SIZE] __page_aligned_bss;
+
+/* See ap-asm.S */
+extern void ap_load_gdt(void);
+extern void x86_vec_avail_entry(void);
+
+static const struct xtf_idte x86_vec_avail_idte = {
+    .addr = _u(x86_vec_avail_entry),
+    .cs   = __KERN_CS,
+    .dpl  = 0,
+};
+
+int ap_set_irq(unsigned int apic_id, unsigned int vector)
+{
+    apic_write(APIC_ICR2, SET_xAPIC_ID(apic_id));
+    apic_write(APIC_ICR,  vector | APIC_DM_FIXED);
+
+    return 0;
+}
+
+static int ap_ipi_init(void)
+{
+    int rc;
+
+    xtf_load_idt();
+
+    xtf_set_idte(X86_VEC_AVAIL + 0, &x86_vec_avail_idte);
+    xtf_set_idte(X86_VEC_AVAIL + 1, &x86_vec_avail_idte);
+
+    rc = apic_init(APIC_MODE_XAPIC);
+    if ( rc )
+        return rc;
+
+    apic_write(APIC_TPR, 0);
+
+    return 0;
+}
+
+static struct ap_percpu *ap_percpu_ptr(unsigned int cpu)
+{
+    if ( !cpu || cpu > NR_APS )
+        return NULL;
+
+    return &ap_cpu[cpu - 1];
+}
+
+static void ap_main(struct ap_percpu *percpu, void (* thread)(void))
+{
+    unsigned int apic_id;
+
+    xtf_irq_disable();
+
+    ap_load_gdt();
+
+    if ( ap_ipi_init() )
+        goto fail;
+
+    apic_id = get_apic_id();
+    ACCESS_ONCE(percpu->apic_id) = apic_id;
+
+    while ( !ACCESS_ONCE(percpu->cpu) )
+        cpu_relax();
+
+    thread();
+
+ fail:
+    arch_crash_hard();
+}
+
+int ap_start(unsigned int cpu, void (* thread)(void))
+{
+    struct xen_vcpu_hvm_context ap_ctx = { 0 };
+    struct ap_percpu *percpu = ap_percpu_ptr(cpu);
+    int rc;
+
+    if ( cpu == 0 )
+        /* Nothing to do. */
+        return 0;
+
+    /*
+     * Setup vCPU context.
+     */
+
+    ap_ctx.mode                     = VCPU_HVM_MODE_64B;
+
+    ap_ctx.cpu_regs.x86_64.rdi      = _u(percpu);
+    ap_ctx.cpu_regs.x86_64.rsi      = _u(thread);
+    ap_ctx.cpu_regs.x86_64.rip      = _u(ap_main);
+    /* Stack grows backwards and keep canary. */
+    ap_ctx.cpu_regs.x86_64.rsp      = _u(&ap_stack[cpu - 1][PAGE_SIZE]) - 8;
+
+    ap_ctx.cpu_regs.x86_64.rflags   = X86_EFLAGS_MBS;
+
+    /* Same execution environment as BSP. */
+    ap_ctx.cpu_regs.x86_64.cr0      = read_cr0();
+    ap_ctx.cpu_regs.x86_64.cr3      = read_cr3();
+    ap_ctx.cpu_regs.x86_64.cr4      = read_cr4();
+    ap_ctx.cpu_regs.x86_64.efer     = rdmsr(MSR_EFER);
+
+    rc = hypercall_vcpu_op(VCPUOP_initialise, cpu, &ap_ctx);
+    if ( rc )
+    {
+        xtf_error("BSP: unable to init CPU%u: %d\n", cpu, rc);
+        return rc;
+    }
+
+    /*
+     * Start the vCPU execution.
+     */
+
+    rc = hypercall_vcpu_op(VCPUOP_up, cpu, NULL);
+    if ( rc )
+    {
+        xtf_error("BSP: unable to start CPU%u: %d\n", cpu, rc);
+        return rc;
+    }
+
+    /*
+     * Synchronize the AP thread execution.
+     */
+
+    while ( !ACCESS_ONCE(percpu->apic_id) )
+        cpu_relax();
+
+    ACCESS_ONCE(percpu->cpu) = cpu;
+    smp_mb();
+
+    return 0;
+}
+
+unsigned int ap_apic_id(unsigned int cpu)
+{
+    struct ap_percpu *percpu = ap_percpu_ptr(cpu);
+
+    if ( percpu )
+        return percpu->apic_id;
+
+    return get_apic_id();
+}
diff --git a/tests/interrupt-latency/ap.h b/tests/interrupt-latency/ap.h
new file mode 100644
index 000000000000..02a214af8fea
--- /dev/null
+++ b/tests/interrupt-latency/ap.h
@@ -0,0 +1,12 @@
+#ifndef __AP_H_
+#define __AP_H_
+
+#define NR_APS  1
+
+int ap_start(unsigned int cpu, void (* thread)(void));
+
+int ap_set_irq(unsigned int apic_id, unsigned int vector);
+
+unsigned int ap_apic_id(unsigned int cpu);
+
+#endif /* __AP_H_ */
diff --git a/tests/interrupt-latency/bootargs.in b/tests/interrupt-latency/bootargs.in
new file mode 100644
index 000000000000..c56ba76658e1
--- /dev/null
+++ b/tests/interrupt-latency/bootargs.in
@@ -0,0 +1 @@
+sched=null dom0_max_vcpus=2 dom0_vcpus_pin smt=0 cpuidle=0 cpufreq=xen:performance watchdog=0 bootscrub=0 svm_avic=1 -- samples=20000000
diff --git a/tests/interrupt-latency/extra.cfg.in b/tests/interrupt-latency/extra.cfg.in
new file mode 100644
index 000000000000..95c6aa2abaa9
--- /dev/null
+++ b/tests/interrupt-latency/extra.cfg.in
@@ -0,0 +1 @@
+vcpus = 2
diff --git a/tests/interrupt-latency/main.c b/tests/interrupt-latency/main.c
new file mode 100644
index 000000000000..907bad7752ec
--- /dev/null
+++ b/tests/interrupt-latency/main.c
@@ -0,0 +1,706 @@
+/**
+ * Interrupt latency test:
+ * - IPI
+ * - Syntheric interrupts (evtchn)
+ */
+
+#include <arch/system.h>
+
+#include <xtf/statistics.h>
+#include <xtf/time.h>
+#include <xtf.h>
+
+#include "ap.h"
+
+const char test_title[] = "Interrupt latency test";
+
+#define DEST_CPU_ID         1
+#define NOISE_PAGE_SIZE     KB(256)
+
+/* Interrupt acceleration control operations. */
+enum {
+    POSTED_INTR_DISABLE     = 0,
+    POSTED_INTR_ENABLE      = 1,
+    POSTED_INTR_DUMP_STATS  = 2,
+};
+
+/* Collected statistics. */
+enum stats_id {
+    STAT_IRQ_SEND           = 0,
+    STAT_IRQ_DELIVERY       = 1,
+    STAT_IRQ_HANDLER        = 2,
+    NR_STATS,
+};
+
+enum metric_id {
+    METRIC_MINIMUM          = 0,
+    METRIC_MAXIMUM          = 1,
+    METRIC_AVERAGE          = 2,
+    METRIC_P99              = 3,
+    METRIC_ELAPSED_TIME     = 4,
+    NR_METRICS,
+};
+
+enum workload_id {
+    WORKLOAD_IPI_NOACCEL    = 0,
+    WORKLOAD_IPI_ACCEL      = 1,
+    WORKLOAD_EVTCHN_NOACCEL = 2,
+    WORKLOAD_EVTCHN_ACCEL   = 3,
+    NR_WORKLOADS,
+};
+
+enum group_id {
+    TEST_IPI                = 0,
+    TEST_EVTCHN             = 1,
+    NR_TESTS,
+};
+
+struct event {
+    union {
+        evtchn_port_t evtchn;
+        struct {
+            unsigned int apic_id;
+            unsigned int vector;
+        } ipi;
+    } u;
+};
+
+struct workload {
+    const char *name;
+    unsigned int intr_vector;
+    unsigned int init_debug_op;
+    unsigned int done_debug_op;
+    struct event event;
+    struct statistics stats[NR_STATS];
+    int (*setup)(unsigned int idx, unsigned int cpu, unsigned int vector);
+    int (*send)(struct event *);
+    void (*ack)(struct event *);
+    void (*teardown)(unsigned int idx);
+};
+
+struct test_group {
+    const char *name;
+    enum workload_id noaccel;
+    enum workload_id accel;
+    enum stats_id stats;
+    enum metric_id metric;
+};
+
+struct shared_stats {
+    uint64_t t_handler_start;
+    uint64_t t_handler_end;
+    uint64_t t_elapsed;
+    unsigned int seq;
+    unsigned int isr_fail_cnt;
+    unsigned int irr_fail_cnt;
+    unsigned int t_skew_cnt;
+};
+
+static int ipi_setup(unsigned int idx, unsigned int cpu, unsigned int vector);
+static int ipi_send(struct event *e);
+static void ipi_teardown(unsigned int idx);
+
+static int evtchn_setup(unsigned int idx, unsigned int cpu, unsigned int vector);
+static int evtchn_send(struct event *e);
+static void evtchn_ack(struct event *e);
+static void evtchn_teardown(unsigned int idx);
+
+static struct workload workload[NR_WORKLOADS] = {
+    [WORKLOAD_IPI_NOACCEL] = {
+        .name = "IPI noaccel",
+        .intr_vector = X86_VEC_AVAIL,
+        .init_debug_op = POSTED_INTR_DISABLE,
+        .done_debug_op = POSTED_INTR_DUMP_STATS,
+        .setup = ipi_setup,
+        .send = ipi_send,
+        .teardown = ipi_teardown,
+        .stats = {
+            [STAT_IRQ_SEND] = {
+                .name = "noaccel: IPI send latency (VCPU#0)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_DELIVERY] = {
+                .name = "noaccel: IPI delivery latency (VCPU#0 -> VCPU#1)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_HANDLER] = {
+                .name = "noaccel: IPI handler latency (VCPU#1)",
+                .min = ~0ULL,
+            },
+        },
+    },
+
+    [WORKLOAD_IPI_ACCEL] = {
+        .name = "IPI accel",
+        .intr_vector = X86_VEC_AVAIL,
+        .init_debug_op = POSTED_INTR_ENABLE,
+        .done_debug_op = POSTED_INTR_DUMP_STATS,
+        .setup = ipi_setup,
+        .send = ipi_send,
+        .teardown = ipi_teardown,
+        .stats = {
+            [STAT_IRQ_SEND] = {
+                .name = "accel: IPI send latency (VCPU#0)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_DELIVERY] = {
+                .name = "accel: IPI delivery latency (VCPU#0 -> VCPU#1)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_HANDLER] = {
+                .name = "accel: IPI handler latency (VCPU#1)",
+                .min = ~0ULL,
+            },
+        },
+    },
+
+    [WORKLOAD_EVTCHN_NOACCEL] = {
+        .name = "evtchn noaccel",
+        .intr_vector = X86_VEC_AVAIL + 1,
+        .init_debug_op = POSTED_INTR_DISABLE,
+        .done_debug_op = POSTED_INTR_DUMP_STATS,
+        .setup = evtchn_setup,
+        .send = evtchn_send,
+        .ack = evtchn_ack,
+        .teardown = evtchn_teardown,
+        .stats = {
+            [STAT_IRQ_SEND] = {
+                .name = "noaccel: evtchn send latency (VCPU#0)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_DELIVERY] = {
+                .name = "noaccel: evtchn delivery latency (VCPU#0 -> VCPU#1)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_HANDLER] = {
+                .name = "noaccel: evtchn handler latency (VCPU#1)",
+                .min = ~0ULL,
+            },
+        },
+    },
+
+    [WORKLOAD_EVTCHN_ACCEL] = {
+        .name = "evtchn accel",
+        .intr_vector = X86_VEC_AVAIL + 1,
+        .init_debug_op = POSTED_INTR_ENABLE,
+        .done_debug_op = POSTED_INTR_DUMP_STATS,
+        .setup = evtchn_setup,
+        .send = evtchn_send,
+        .ack = evtchn_ack,
+        .teardown = evtchn_teardown,
+        .stats = {
+            [STAT_IRQ_SEND] = {
+                .name = "accel: evtchn send latency (VCPU#0)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_DELIVERY] = {
+                .name = "accel: evtchn delivery latency (VCPU#0 -> VCPU#1)",
+                .min = ~0ULL,
+            },
+            [STAT_IRQ_HANDLER] = {
+                .name = "accel: evtchn handler latency (VCPU#1)",
+                .min = ~0ULL,
+            },
+        },
+    },
+};
+
+static struct test_group groups[NR_TESTS] = {
+    [TEST_IPI] = {
+        .name = "IPI latency",
+        .noaccel = WORKLOAD_IPI_NOACCEL,
+        .accel = WORKLOAD_IPI_ACCEL,
+        .stats = STAT_IRQ_DELIVERY,
+        .metric = METRIC_ELAPSED_TIME,
+    },
+
+    [TEST_EVTCHN] = {
+        .name = "evtchn latency",
+        .noaccel = WORKLOAD_EVTCHN_NOACCEL,
+        .accel = WORKLOAD_EVTCHN_ACCEL,
+        .stats = STAT_IRQ_DELIVERY,
+        .metric = METRIC_ELAPSED_TIME,
+    },
+};
+
+static struct shared_stats shared_stats[NR_WORKLOADS] __page_aligned_bss;
+
+static uint8_t noise_page[NOISE_PAGE_SIZE] __page_aligned_bss;
+
+static unsigned int current_workload = WORKLOAD_IPI_NOACCEL;
+static unsigned int opt_samples_measure;
+static unsigned int opt_samples_warmup;
+static unsigned int noisy_neighbour_seq;
+static domid_t domid;
+
+static int ipi_setup(unsigned int idx, unsigned int cpu, unsigned int vector)
+{
+    struct workload *w = &workload[idx];
+
+    w->event.u.ipi.apic_id = ap_apic_id(cpu);
+    w->event.u.ipi.vector = vector;
+
+    return 0;
+}
+
+static int ipi_send(struct event *e)
+{
+    return ap_set_irq(e->u.ipi.apic_id, e->u.ipi.vector);
+}
+
+static void ipi_teardown(unsigned int idx)
+{
+    struct workload *w = &workload[idx];
+
+    w->event.u.ipi.apic_id = 0;
+    w->event.u.ipi.vector = 0;
+}
+
+static int evtchn_setup(unsigned int idx, unsigned int cpu, unsigned int vector)
+{
+    struct workload *w = &workload[idx];
+    struct evtchn_bind_ipi bind = {
+        .vcpu = cpu,
+    };
+    int rc;
+
+    rc = hypercall_set_evtchn_upcall_vector(cpu, vector);
+    if ( rc )
+        return rc;
+
+    rc = hypercall_evtchn_bind_ipi(&bind);
+    if ( rc )
+        return rc;
+
+    rc = hypercall_evtchn_unmask(bind.port);
+    if ( rc )
+        return rc;
+
+    w->event.u.evtchn = bind.port;
+
+    return 0;
+}
+
+static int evtchn_send(struct event *e)
+{
+    return hypercall_evtchn_send(e->u.evtchn);
+}
+
+static void evtchn_ack(struct event *e)
+{
+    struct vcpu_info *vi = &shared_info.vcpu_info[DEST_CPU_ID];
+
+    if ( !test_and_clear_bit(e->u.evtchn, shared_info.evtchn_pending) )
+        (void)vi;
+
+    ACCESS_ONCE(vi->evtchn_upcall_pending) = 0;
+    ACCESS_ONCE(vi->evtchn_pending_sel) = 0;
+}
+
+static void evtchn_teardown(unsigned int idx)
+{
+    struct workload *w = &workload[idx];
+
+    (void)hypercall_evtchn_close(w->event.u.evtchn);
+    w->event.u.evtchn = 0;
+}
+
+static int hvm_debug_posted_intr(unsigned int arg)
+{
+    struct xen_domctl domctl = { 0 };
+
+    domctl.domain = domid;
+    domctl.cmd = XEN_DOMCTL_debug_op;
+    domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
+    domctl.u.debug_op = (struct xen_domctl_debug_op){
+        .op = XEN_DOMCTL_DEBUG_OP_POSTED_INTR,
+        .vcpu = ~0U,
+        .arg = arg,
+    };
+
+    return hypercall_domctl(&domctl);
+}
+
+void ap_irq_handler(void)
+{
+    unsigned int idx = ACCESS_ONCE(current_workload);
+    struct workload *w = &workload[idx];
+    struct shared_stats *s = &shared_stats[idx];
+    uint64_t start, end;
+
+    start = rdtsc_ordered();
+
+    if ( w->ack )
+        w->ack(&w->event);
+
+    if ( !apic_isr_read(w->intr_vector) )
+        ACCESS_ONCE(s->isr_fail_cnt)++;
+
+    if ( apic_irr_read(w->intr_vector) )
+        ACCESS_ONCE(s->irr_fail_cnt)++;
+
+    apic_write(APIC_EOI, APIC_EOI_ACK);
+
+    end = rdtsc_ordered();
+
+    ACCESS_ONCE(s->t_handler_start) = start;
+    ACCESS_ONCE(s->t_handler_end) = end;
+
+    smp_wmb();
+    ACCESS_ONCE(s->seq)++;
+}
+
+static void do_noisy_neighbour(void)
+{
+    unsigned int nr = NOISE_PAGE_SIZE / sizeof(uint64_t);
+    unsigned int i;
+    uint64_t *noise = (uint64_t *)noise_page;
+    uint64_t sum = 0;
+
+    xtf_irq_enable();
+
+    for ( i = 0; i < nr; i++)
+        noise[i] = i;
+
+    while ( !xtf_status_reported() )
+    {
+        ACCESS_ONCE(noisy_neighbour_seq)++;
+
+        for ( i = 0; i < nr; i++ )
+        {
+            sum += ACCESS_ONCE(noise[i]);
+            ACCESS_ONCE(noise[i]) = sum;
+        }
+    }
+}
+
+static void do_workload_on_noisy_neighbour(enum workload_id idx, unsigned int cpu)
+{
+    struct workload *w = &workload[idx];
+    struct statistics *stats = w->stats;
+    struct shared_stats *s = &shared_stats[idx];
+    unsigned int i;
+    int rc;
+
+    rc = w->setup(idx, cpu, w->intr_vector);
+    if ( rc )
+        return xtf_error("BSP: cannot ->init(%d): %d\n", idx, rc);
+
+    i = 0;
+    while ( i < opt_samples_warmup + opt_samples_measure )
+    {
+        unsigned int seq;
+        uint64_t t_send_start, t_send_end;
+        uint64_t t_handler_start, t_handler_end;
+
+        seq = ACCESS_ONCE(s->seq);
+
+        t_send_start = rdtsc_ordered();
+
+        rc = w->send(&w->event);
+
+        t_send_end = rdtsc_ordered();
+
+        if ( rc )
+            return xtf_error("BSP: cannot ->send(%u): %d\n", idx, rc);
+
+        while ( ACCESS_ONCE(s->seq) == seq )
+            cpu_relax();
+
+        smp_rmb();
+
+        t_handler_start = ACCESS_ONCE(s->t_handler_start);
+        t_handler_end = ACCESS_ONCE(s->t_handler_end);
+
+        /*
+         * Mitigate for inter-core TSC skew, looks like vCPU#1 can
+         * report TSC values from the past; drop such samples.
+         */
+        if ( t_send_start > t_handler_start )
+        {
+            s->t_skew_cnt++;
+            /* Do not update stats with unstable time, retry the sample. */
+            continue;
+        }
+
+        if ( i++ < opt_samples_warmup )
+            continue;
+
+        xtf_add_sample(&stats[STAT_IRQ_DELIVERY],
+                       t_handler_start - t_send_start);
+
+        xtf_add_sample(&stats[STAT_IRQ_SEND],
+                       t_send_end - t_send_start);
+
+        xtf_add_sample(&stats[STAT_IRQ_HANDLER],
+                       t_handler_end - t_handler_start);
+    }
+
+    w->teardown(idx);
+}
+
+static void test_parse_cmdline(void)
+{
+    const char *optname = "samples=";
+    char *s;
+    size_t optname_len;
+
+    if ( !IS_DEFINED(CONFIG_HVM) )
+        return xtf_skip("N/A\n");
+
+    s = (char *)(uintptr_t)pvh_start_info->cmdline_paddr;
+    optname_len = strlen(optname);
+
+    /* samples=1000 */
+    while ( *s && *s == ' ' )
+        s++;
+
+    if ( !strncmp(s, optname, optname_len) )
+        opt_samples_measure = atou(s + optname_len);
+    else
+        opt_samples_measure = 1000u;
+
+    /* Drop 0.01% of samples at the beginning of the workload. */
+    opt_samples_warmup = opt_samples_measure / 10000u;
+    if ( opt_samples_warmup == 0 )
+        opt_samples_warmup = 100u;
+}
+
+void test_setup(void)
+{
+    unsigned i;
+    int rc;
+
+    if ( !IS_DEFINED(CONFIG_64BIT) )
+        return xtf_skip("BSP: need CONFIG_64BIT\n");
+
+    rc = xtf_get_domid();
+    if ( rc < 0 )
+        return xtf_error("BSP: cannot retrieve domain ID\n");
+    domid = (domid_t)rc;
+
+    test_parse_cmdline();
+
+    rc = apic_init(APIC_MODE_XAPIC);
+    if ( rc )
+        return xtf_error("BSP: cannot enable xAPIC: %d\n", rc);
+
+    xtf_init_time();
+
+    if ( ap_start(DEST_CPU_ID, do_noisy_neighbour) )
+        return xtf_error("vCPU#%u: failed to start\n", DEST_CPU_ID);
+
+    for ( i = 0; i <= NR_APS; i++ )
+        printk("vCPU#%u: APIC ID 0x%x\n", i, ap_apic_id(i));
+}
+
+static void run_workload(enum workload_id idx)
+{
+    struct workload *w = &workload[idx];
+    struct shared_stats *s = &shared_stats[idx];
+    struct statistics *stats = w->stats;
+    uint64_t t0, t1;
+    unsigned int apic_id = ap_apic_id(DEST_CPU_ID);
+    unsigned int seq;
+    unsigned int i;
+    int rc;
+
+    printk("\n");
+    printk("BSP: %s: workload %u vector 0x%x APIC ID 0x%0x warmup %u samples %u\n",
+           workload[idx].name,
+           idx,
+           w->intr_vector,
+           apic_id,
+           opt_samples_warmup,
+           opt_samples_measure);
+
+    rc = hvm_debug_posted_intr(w->init_debug_op);
+    if ( rc < 0 )
+        return xtf_error("BSP: failed hvm_debug_posted_intr(%u): %d\n",
+                         workload[idx].init_debug_op, rc);
+
+    /*
+     * Serialize against the noisy neighbour so that interrupt workload
+     * will not lead to VMEXIT w/ AVIC_IPI_FAILURE_TARGET_NOT_RUNNING
+     * reason.
+     */
+    seq = ACCESS_ONCE(noisy_neighbour_seq);
+    while ( ACCESS_ONCE(noisy_neighbour_seq) == seq )
+        cpu_relax();
+
+    ACCESS_ONCE(current_workload) = idx;
+
+    smp_rmb();
+
+    t0 = rdtsc_ordered();
+
+    do_workload_on_noisy_neighbour(idx, DEST_CPU_ID);
+
+    t1 = rdtsc_ordered();
+
+    ACCESS_ONCE(s->t_elapsed) = t1 - t0;
+
+    rc = hvm_debug_posted_intr(workload[idx].done_debug_op);
+    if ( rc < 0 )
+        return xtf_error("BSP: failed hvm_debug_posted_intr(%u): %d\n",
+                        workload[idx].done_debug_op, rc);
+
+    for ( i = 0; i < NR_STATS; i++ )
+    {
+        xtf_finalize_statistics(&stats[i]);
+        xtf_print_metrics(&stats[i], NULL);
+        xtf_print_histogram(&stats[i]);
+    }
+
+    printk("TSC skew %u times\n",
+           s->t_skew_cnt);
+    printk("ISR[%x] %u IRR[%x] %u\n",
+           w->intr_vector, s->isr_fail_cnt,
+           w->intr_vector, s->irr_fail_cnt);
+    printk("Elapsed time %"PRIu64" ms\n",
+           cycles_to_ms(s->t_elapsed));
+    printk("\n");
+}
+
+/* Some rough criteria for success. */
+static bool check_critetia(struct test_group *tg)
+{
+    struct workload *wa = &workload[tg->noaccel];
+    struct workload *wb = &workload[tg->accel];
+    struct statistics *sa = &wa->stats[tg->stats];
+    struct statistics *sb = &wb->stats[tg->stats];
+    struct shared_stats *sha = &shared_stats[tg->noaccel];
+    struct shared_stats *shb = &shared_stats[tg->accel];
+    const char *name, *sign = "", *units;
+    uint64_t x, y, t;
+    int64_t delta;
+    unsigned int i;
+    bool pass;
+
+    switch ( tg->metric ) {
+    case METRIC_MINIMUM:
+        name = "min";
+        x = sa->min;
+        y = sb->min;
+        break;
+
+    case METRIC_MAXIMUM:
+        name = "max";
+        x = sa->max;
+        y = sb->max;
+        break;
+
+    case METRIC_AVERAGE:
+        name = "avg";
+        x = sa->sum / sa->count;
+        y = sb->sum / sb->count;
+        break;
+
+    case METRIC_P99:
+        name = "p99";
+        x = sa->p99;
+        y = sb->p99;
+        break;
+
+    case METRIC_ELAPSED_TIME:
+        name = "elapsed";
+        x = sha->t_elapsed;
+        y = shb->t_elapsed;
+        break;
+
+    default:
+        xtf_error("unsupported metric '%u'\n", tg->metric);
+        return false;
+    }
+
+    if ( x < y )
+    {
+        delta = y - x;
+        sign = "-";
+    }
+    else
+    {
+        delta = x - y;
+    }
+
+    if ( delta >= 1000000 )
+    {
+        units = "ms";
+        t = cycles_to_ms(delta);
+    }
+    else if ( delta >= 1000 )
+    {
+        units = "us";
+        t = cycles_to_us(delta);
+    }
+    else
+    {
+        units = "ns";
+        t = cycles_to_ns(delta);
+    }
+
+    pass = y <= x / 2;
+
+    printk("%s(%s) delta = %s(%s) - %s(%s) = %s%"PRIu64" (%s%"PRIu64"%s): %s\n",
+           name, tg->name,
+           name, wa->name,
+           name, wb->name,
+           sign, delta,
+           sign, t, units,
+           pass ? "PASS" : "FAIL");
+
+    for ( i = 0; i < NR_STATS; i++ )
+        xtf_print_metrics(&wa->stats[i], &wb->stats[i]);
+
+    return pass;
+}
+
+static bool test_passed(void)
+{
+    bool passed = true;
+    unsigned int i;
+
+    for ( i = 0; i < ARRAY_SIZE(groups); i++ )
+        if ( !check_critetia(&groups[i]) )
+          return false;
+
+    return passed;
+}
+
+void test_main(void)
+{
+    uint64_t t0, t1;
+    unsigned int idx;
+
+    if ( xtf_status_reported() )
+        return;
+
+    t0 = rdtsc_ordered();
+
+    /* Execute all necessary workloads. */
+    for ( idx = 0; idx < NR_WORKLOADS; idx++ )
+        run_workload(idx);
+
+    /* Signal noisy neighbour to stop. */
+    xtf_success(NULL);
+    smp_mb();
+
+    if ( !test_passed() )
+        xtf_failure("Interrupt acceleration does not work!\n");
+
+    t1 = rdtsc_ordered();
+
+    printk("\n");
+    printk("Total elapsed time %"PRIu64" ms\n",
+           cycles_to_ms(t1 - t0));
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 01:40:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 01:40:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473598.1681270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmSa-0001OJ-Gz; Thu, 05 Nov 2026 01:40:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473598.1681270; Thu, 05 Nov 2026 01:40:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOmSa-0001O6-Dc; Thu, 05 Nov 2026 01:40:12 +0000
Received: by outflank-mailman (input) for mailman id 1473598;
 Thu, 05 Nov 2026 01:40:11 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xOmSZ-0001N3-42
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 01:40:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOmSY-001xd7-Ct
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:40:10 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde1c-8faa-0a2a0a5109dd-0a2a4504ca8e-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:40:10 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aebde79-b57f-0a2a45040019-94a38ff174b2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:40:10 +0100
Received: from pps.filterd (m0367128.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mupM2612052
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 01:40:08 GMT
Received: from ch5pr02cu005.outbound.protection.outlook.com
 (mail-northcentralusazon11012068.outbound.protection.outlook.com
 [40.107.200.68])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrdw8rw9t-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:40:08 +0000 (GMT)
Received: from BN9PR03CA0656.namprd03.prod.outlook.com (2603:10b6:408:13b::31)
 by LV8PR16MB6305.namprd16.prod.outlook.com (2603:10b6:408:1bc::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 01:39:04 +0000
Received: from BN7PEPF00000094.namprd03.prod.outlook.com
 (2603:10b6:408:13b:cafe::3f) by BN9PR03CA0656.outlook.office365.com
 (2603:10b6:408:13b::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.9 via Frontend Transport; Thu, 5
 Nov 2026 01:39:04 +0000
Received: from mx0b-00498f04.pphosted.com (148.163.138.245) by
 BN7PEPF00000094.mail.protection.outlook.com (10.167.245.72) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5
 via Frontend Transport; Thu, 5 Nov 2026 01:39:04 +0000
Received: from pps.filterd (m0426315.ppops.net [127.0.0.1])
 by mx0b-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A50mM4E3108343
 for <xen-devel@lists.xenproject.org>; Wed, 4 Nov 2026 20:39:03 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [34.209.42.160])
 by mx0b-00498f04.pphosted.com (PPS) with ESMTPS id 4hp33swb4q-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Wed, 04 Nov 2026 20:39:03 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id OmRQx1HWxgTjoOmRRxgqva; Thu, 05 Nov 2026 01:39:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Transfer-Encoding:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppford; bh=BDm
	abGfQnILh3U1P9bmeX8e0pffiRErfGCa95EvFXp0=; b=GQLUnvPP0njQel/u5MC
	SYM1I7KAhdGtLKMh4L9VV/IuKwvkK9y1W+Z1bUa281Vn+BHa4oZJ7KIGJPDXsah8
	Xlaa90kT8rcCO98yb4PuHVKGMPoEmr5lIXJ9N/5ReXrD1xKqW596eavId27ClGyP
	P69BKNKOYFQj5tKt3RPabZK8pEPkYblHhrvVMPEhMO+FS2MznqTavBVRBcYFB/sM
	KWHzroBFQtXP4OoBdPZI4VjN7UpT6uo4/U1iueEbP0n7gYydC96JPIcyMdTfwHDB
	D26/kuO1xFX/D9AVluYpSfIAPesfgABkmfdU23L13FYFel/a2s/IQtkoq5qvpz7n
	1XA==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bEFJ/BDNe/Y81i09kPocEVSWroveaHRDahaomo3ZvKP+wu7S+c/kKi632rfCGQfZ6o0GttnRtoQgpgOvEFJ9bQOJ6yHD2StJ4AVBrlqy4LzBvnpZo+703ugpsQ+O3lLd1ZHav0A8BhkPGwhlg0kWVcr26h5+ngWCt5W+VYP4Y0p9gGsdAU2y8dTX19Ao2gocSyjqj1a1NycnBRRcTexAC0xfcEj+ZJr2TO0bKJH1FLC4KMv3Zrk1gnrAorFHkmyb3sCAmNzmGEongMtgAxkzug/HQW1cxnqig9m54foI58ZGbVgmUajQvEbUCN/98wFGI5KdYTOhaJKMFlE6lG9I0A==
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=BDmabGfQnILh3U1P9bmeX8e0pffiRErfGCa95EvFXp0=;
 b=uDP7/x6TIw3btVjmkMU5oH6z2U1hGz1dFe4G+8mGvRCtXM+V8oGVvZhMF/FI/5Jr+uHcd+v1mUzuQkcj0yIj5A3nSOP1RaB0bmXPb6dqVUkYRxX/ff9dxe+2ejp+U3NGDY5NqkCu9giREE02viTfg0Ubq2ZQfy3nU4tzuwZA4zphFeU6RbdbCBHzfUHPfTLKfKXR06jdpXm41a3/NPS8XqsZ31ChzTsAtpFg3OGmPl7541KyTspD6ME2ogWA/J79R8JLLtVsYtRjeSq5Gk19c+3tb1o8b+fdQlIwvJwJ5Vev9FDtgyI5thjILcsnSaCB12/4eTNft6Anz8U+2PoNZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 148.163.138.245) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=BDmabGfQnILh3U1P9bmeX8e0pffiRErfGCa95EvFXp0=;
 b=LngqwtMHYpC1+zQhII/+owKHZwvVp8WnmD8e+W95YPJe1VHRIk3xTmqWfHiyaUijG9R01Qet7i/J9i8Pq9ZH5QjBO6nEf/Lkxpz8F0zccGiH/ZLQEvp9SVURxgGoTYJzGWZ4yTwUWl8MV8Bjc0ycdEa50FXxT/0R0qkR0tDOMgs=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 148.163.138.245) smtp.mailfrom=ford.com; dkim=pass (signature was
 verified) header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 148.163.138.245 as permitted sender) receiver=protection.outlook.com;
 client-ip=148.163.138.245; helo=mx0b-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-transfer-encoding:date:from
	:in-reply-to:message-id:mime-version:references:subject:to; s=
	ppserprodsaar; bh=BDmabGfQnILh3U1P9bmeX8e0pffiRErfGCa95EvFXp0=; b=
	K1mQyhsnJJovs1VYmeustH3Yqi6ynbZ3vg1HSUPYOj7wYyq39zHp+9koHPoftzxB
	cUryl+UcVeBW8MX/tB0Hz9geLsovCznWXC0zWaGGxTmmCA/vCIXr5coC15vYRv3U
	3v/wxf6fpQE/TsZh57d1gfpobOdZM8tVoRPr1pPQIJl4uG79tRnkn8TJxnfLLzW0
	TF/wmdBas7AmtvcaGq18ENgkgjW9zaeb1HLyQxApEkib6bqBULzUE6zGh+fJ+p3/
	9Ho1fWqLdRqJTgu3UdEAzPIjI3xpVNKRvCvJAXrgH7hsBPkpQXTJM1kZRSWxXhHA
	qswC+WuwkbfMukeATAtO9Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-transfer-encoding:date:from:in-reply-to:message-id
	:mime-version:references:subject:to; s=ppfserpocford; bh=BDmabGf
	QnILh3U1P9bmeX8e0pffiRErfGCa95EvFXp0=; b=Jbv4/wiCDQWCAb98EXahxkd
	eNdPL+XbnRdVAv6hlB79UKM0w/RBJzIR0W1nDDpoSt9YSHlb3kJqcaVMmLcte0En
	sGaigY7P73Y9vuVadyWy2GJX61n5KHnsLW4228jaSVfr0AIfUxoYg5R4Qz3Msfe2
	8uKw3UtGV+kE588aV6hDIEsu1tyImJTp5KMGOM4wKDeHUYvLlYoW/KqMUHZ10Y5G
	0FR3unkLCsB/c2VvHTC8KhhhQKkX/8hWidSCioTDlDgV8esZqrn0aLaerNCMzyjr
	g32Z4ZzI7F8YN0DhMM/XIaqtNP5up3b0d7Wuz8FRifJwaCvJdN69h8NxrDEtf1g=
	=
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: OmRQx1HWxgTjoOmRRxgqva
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
To: xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, jbeulich@suse.com,
        julien@xen.org, michal.orzel@amd.com, roger@xenproject.org,
        sstabellini@kernel.org, dmukhin@xen.org,
        Denis Mukhin <dmukhin@ford.com>
Subject: [XTF PATCH v1 14/15] x86: apic: add few more registers
Date: Wed,  4 Nov 2026 17:38:16 -0800
Message-ID: <20261105013817.719823-15-dmukhin@ford.com>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105013817.719823-1-dmukhin@ford.com>
References: <20261105013817.719823-1-dmukhin@ford.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0
 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050006
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF00000094:EE_|LV8PR16MB6305:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: a9da4333-ef4d-405b-a736-08df3add9364
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|1800799024|23010399003|36860700016|22082099003|18002099003|261009223027099003|261021121427099003|261022105027099003|261026140227099003|11063799006|56012099006|10067099003|261028144727099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	XBj9OERz844k4q8LAwfAqINEPMBq2OWGaGDpuD1P7dZ+rT/O76Z3hBQDNO9C2JV6ElA7itxysn/Oa3Mmio2kgiMeKvsrXsNqK+lDAMl2TO34pWJjlTBv+PPMP81fcyTSc32/nUE04rdswsIkjLZViDq0dFAB4FUUSm03GGiV3eAmglOS18StHWZIpBcf2V8l4J9P0RS9bzGsaeRroamkouII8drvnU24PhljL1k2sY6Wczcq9y/gikOI51snUIHVhJ0QCoZAAXVUcB2WVAYSi+TjwS8jS3VjVV2vZ51F7qZKBPR9cBWk0vc/A3ZW2vCqjzjr7NzpuXxfHHQxX+Sb62Eb5sCIxjtW+x6GIfyK3OK/jjQxV1GQCfBQHAMottKCoMaY1r/1QnAgRV8BHUnDGkRPOUYJhJyuYFpuutUAP42osyEc1Ucy1bTtc0ZQ0H3SVqkldLjB00Pds5BG7RnwsWgUPeDf9RhoS17v206ekgmWGacG/r2GweT8ZiNYbk6iRg54NvuOrsNPhNLOGkOZI/sjkM7a7OynxbyDhn5OXKt/i0ww1qtFBkWlG/jj9Ld6oIdS6JsVQsfsbd/JmRnm31kXs+D0ErDFODMvBildKbzAE8cjsqBYTysH4W0svQqx6VOr3D4aU/vZKwmd1UrL+CkoVugsLNSQmtHB5h5SGzn2cXWVnaAYoYXHBSUsTjwcCbbrOyI4+xgZFc82I0ld+w==
X-Forefront-Antispam-Report:
	CIP:148.163.138.245;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0b-00498f04.pphosted.com;PTR:mx0b-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(23010399003)(36860700016)(22082099003)(18002099003)(261009223027099003)(261021121427099003)(261022105027099003)(261026140227099003)(11063799006)(56012099006)(10067099003)(261028144727099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TW0Goc3oxaPx/eBB9jdtICQqCc3acGGS84oCQXu4Pd7Hen5L36OJ5BlFBnkGhLV4XygKGCCcpaKmTZJWHiOZsjWEvuFhbUdzh2/AwUC5CIZ3VaLBdHhJCAuyq9lXNVCnMaxPkhxIAy9TZ1qHxrbDRj1cup2B43RM+FngPOtwbgLFYCMPgY2ACDESwJKQ5wdlrhXlwDn0yG9TCGLKlmBK5hkXWDpkUzHNLZbByU4q3hZO3JuIaBZFdVYCiaa+HwDgtZ4u5ALDPAhyduo1jA1yXd6cv3/iDioTb5MxhabmOMeFVisz/pXEMzWy8I2YP5C+CpDgx72p61xXnfjoGL09KQb1zY8XXMxNkX7WNEuhUksOHg09qVeLm9kzBWyQ20xkKwmfZ/52peujnPy4EGEmg6hWJfNDJbFhYYnmiYE5fmIq59qHlqhtr4DUgbJR3nO6
X-Exchange-RoutingPolicyChecked:
	d53I9eKLhTKQeJtGXaLqcwltEc7EtkqxT3urMeswC/iT1NkQ92BhwqdHO2RBidlgdf66y1+uC26VbcWEASTrigiVZ9oidbvbgcF7G5nj2ahtNOqoPZn2JKhWg2s8Mt5dk7hPGvaAPTfTsz1739mDL6pDXWRxPl1GiMhpP4KOZct8DZ2JY1nE1/FfpNnjJd2NMMBpX4t0d7pv2u0vk7iOHYTBEcrB/r9WCx1kzeY0h0A+hOX4tCUyp3GCg82iJBgFkS8usTX5kcnyj2J7Do16VLeJ040KJcl6OSzVHkt1vRTbuSkmhNHbg/RMU4NdGg2vey9ExvWh6eZUHz6nHJam1A==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	iFIVGx28kM3o9DFt5a9bjHoHC8ULLY+8Yi2cOrx7cDEDt4/fXsfvkeFz4F9oc3zhfAgadXwW77dkCuGfYttjMumlSVlfe2naXWgjpazzX9QT/EeMXF94H4WULSkQhN0lqcQzSzAm7IZuHp/Z5GJs5Ny6IqgMy3qnHN+Po8Bh9SWxntmkyNt0g/nrVSppCJdvRLGhI0VkRVsUxT+eIOIE9T7MSaN2Ikm8JGtAWI11tMASU7WRJrUD66OAVB6oeDA46isFcmzwlqjluClbwgU0mfAn9ensFrLZ+fSZyyesmD0bOIM8T1qxqTLQjUn0N0QbMwoH0goBT5ZLAopKS7X6Th21scSEzSKdR/WbD0D4rdRZLR3Wni9V7gIAvJ3TkgljmO+7RT1tBhV9sbSSDO8l5O8HADVLCmufV1qWClhq7avtROx62feky9G5Tju22sMlJ/YvCYIqK14N/9y3IoILHaWIwMD2jhO1n4+0Pae4FghS6KFpDco7DirPf4vN72sITMcom1a4XjkMZ0J/NqBTkg1qMSBno+lZWQDKtrnxOLrU0K/guQKFp7LPg/iZIEzxbsR/fWu6vFBQWNON04AOhtDohNXPpKQz6cPc3k48f9kN0dMWziV2H9WDGb5ene5+R3huot3y8n8hXlkKODeEaQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 01:39:04.3922
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a9da4333-ef4d-405b-a736-08df3add9364
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[148.163.138.245];Helo=[mx0b-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN7PEPF00000094.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR16MB6305
X-Authority-Analysis: v=2.4 cv=JPiuIMKb c=1 sm=1 tr=0 ts=6aebde78 cx=c_pps
 a=hdF+edV3qND9tYm1xB2jJw==:117 a=b7IhknPlfT0FN1EembXvig==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=zJRp6_cAMcgA:10 a=3PXLN80vpJUA:10
 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10 a=VkNPw1HP01LnGYTKEx00:22
 a=P_n1zlmtWsCQbjROFjcg:22 a=WER9OelvoqQQjwJToBYG:22 a=cbNQJ9GKAAAA:8
 a=oPC_3ZP6ZZf3ktXkmvMA:9 a=P0bj-C3X3jJDpopQwM1U:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfXwWmZUH4EO8IN
 xWiW1TTnRhWLPf6mdNv+HKeyBWdwiqqU4n0CjUK/JqpNrn7QNTfZ5y3OISMTgawdcq2pbAPY+9p
 /WDulsvGAUOCANiyebiSCErf4nszo4NfHVFgd4MNoQb7B2sSyaHl
X-Proofpoint-ORIG-GUID: UmexJFntBELCuqD9TyApYI7uuypCG2gG
X-Proofpoint-GUID: UmexJFntBELCuqD9TyApYI7uuypCG2gG
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAwNiBTYWx0ZWRfX1nwyY/TguEG7
 3Mt3m65aU98Wlb26a/zcvvEMDrIOBXTAc9hfwH8qb4WlX8fPAlu09HaMQOrB4B3MX7oAyM26pVr
 lL4/xTV2sYt7Gp2j9h/OGi8tulBTyOyoS0wxS7FSg9aJu1M4hh77ZLtEtZdde31DLPCRo01aEF/
 GjIaEtS2KrMnEn/MFMDnzum1FTraTgxqjxNK+cfiYgqb3H5FEQ9Z7rkO5D1HNqetbZXHKYq9JVr
 gmZWFF5x7naSPsB9/yLSbJ7AKQYl6N26QggEnu3svxH6aiM/GdXihuiFMYSMblyhY1lP7+taYvs
 tY9VOCD68y1CRdEUa9Ne8dpmdbqv44l8TyaxczlTQNtLXcIGN0tVZ1insZIjlGO7TO0miBYUHEX
 +3+53E4e70ao+seHishSeDS17vNyVS9i0y4VXgYR8RZvPr2sswoS/XwzZ9xGQ0o79Esf+IhCL3P
 R2yuh1/JtDzqc/WdhxQ==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_01,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1015
 malwarescore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0
 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050006
X-purgate-ID: tlsNG-ebf023/1793842810-C26CAB50-75914A91/0/0
X-purgate-type: clean
X-purgate-size: 1808

From: Denis Mukhin <dmukhin@ford.com>

Add few more registers definitions for testing: TPR, EOI, ISR, IRR.

Add routines to extract APIC ID from register 0x20.

Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
 arch/x86/include/arch/apic.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/arch/x86/include/arch/apic.h b/arch/x86/include/arch/apic.h
index 71c09a836998..8cf28ba5a39b 100644
--- a/arch/x86/include/arch/apic.h
+++ b/arch/x86/include/arch/apic.h
@@ -17,10 +17,24 @@
 
 /* Local APIC register definitions. */
 #define APIC_ID         0x020
+#define   GET_xAPIC_ID(x)         (((x) >> 24) & 0xffu)
+#define   SET_xAPIC_ID(x)         (((x) << 24))
+
 #define APIC_LVR        0x030
+
+#define APIC_TPR        0x080
+#define   APIC_TPR_MASK           0x000FF
+
+#define APIC_EOI        0x0b0
+#define   APIC_EOI_ACK            0x00000
+
 #define APIC_SPIV       0x0f0
 #define   APIC_SPIV_APIC_ENABLED  0x00100
 
+#define APIC_ISR        0x100
+
+#define APIC_IRR        0x200
+
 #define APIC_ESR        0x280
 #define   APIC_SIV                0x00020 /* Send Illegal Vector */
 #define   APIC_RIV                0x00040 /* Recieve Illegal Vector */
@@ -126,6 +140,21 @@ static inline void apic_icr_write(uint64_t val)
         return apic_msr_icr_write(val);
 }
 
+static inline bool apic_isr_read(unsigned int vector)
+{
+    return apic_read(APIC_ISR + (vector / 32 * 0x10)) & (1U << (vector % 32));
+}
+
+static inline bool apic_irr_read(unsigned int vector)
+{
+    return apic_read(APIC_IRR + (vector / 32 * 0x10)) & (1U << (vector % 32));
+}
+
+static inline unsigned int get_apic_id(void)
+{
+    return GET_xAPIC_ID(apic_read(APIC_ID));
+}
+
 #endif /* XTF_X86_APIC_H */
 
 /*
-- 
2.55.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 05:37:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 05:37:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473916.1681295 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOq9d-0001f1-8D; Thu, 05 Nov 2026 05:36:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473916.1681295; Thu, 05 Nov 2026 05:36:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOq9d-0001eu-5U; Thu, 05 Nov 2026 05:36:53 +0000
Received: by outflank-mailman (input) for mailman id 1473916;
 Thu, 05 Nov 2026 05:36:51 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Zhao.Jiaqing@amd.com>) id 1xOq9b-0001eo-L9
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 05:36:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOq9a-00Comw-UF
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 06:36:50 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Zhao.Jiaqing@amd.com>)
 id 6aec15d2-bab6-0a2a0a5309dd-0a2a45089640-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 06:36:50 +0100
Received: from [40.93.194.57]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Zhao.Jiaqing@amd.com>)
 id 6aec15f0-f659-0a2a45080019-285dc239f33b-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 06:36:50 +0100
Received: from CHBPR12MB780315.namprd12.prod.outlook.com
 (2603:10b6:610:36a::15) by CH3PR12MB504971.namprd12.prod.outlook.com
 (2603:10b6:610:34a::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 05:36:46 +0000
Received: from CHBPR12MB780315.namprd12.prod.outlook.com
 ([fe80::6f6:156c:5674:75e7]) by CHBPR12MB780315.namprd12.prod.outlook.com
 ([fe80::6f6:156c:5674:75e7%6]) with mapi id 15.21.0592.009; Thu, 5 Nov 2026
 05:36:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=p09/G4CtcCGmS1De82c5rIJBS1d5pQsRvr2h3oecRLCN1MJGOYHeCaoR2n3glE3ZaTyHwgMoSCFkEuEQqOJSzClmGyGU04PrqvsUrJEv8YguRR6aeFSCXRsJwhy6BvFq9WULYeXzMEGDce94HQJLxIVrB/cyWQ22WzyohgGMRRcJGyIPCJyTXvdWeRmnnhYk8MGYqT/3WAt1sPNYr3yZPKV97iUmbBeKsH5P6AZs2O0cPkcjJmI5Sk4vu9zbn4JGZv4QOxEGyvC7hd7UjhpW+oby53MHxjV0dOiuFEzNV9XoQN5cCNHWSFMELCeoidpBhu/kQg0qx4dNpf5YXA2gSg==
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=nTdQjIkgwe2il1v3wDnnVUE8kYmkCUg3nXFxQlfrlEk=;
 b=b69tFUlJ/T92O6BtEeD9ZpQaSnwvq48HwHwExyAeSHpmd4Ei4cnbCAcFSXWHwO1jTWafMQpuesRQa5aM2fceVHZTdIggmmGEeULIMqCMGCK6JLo/uNQr27wqOdlkUb3MjN0wh+DY74NoDPcQtETaCNHp5b90D7ZJlvQXY5EBj/rWkWP66P1YxSMvAeG0WZpgZ4TLxZWHo50/J+MGmdcxLkAregmFQfjlzw6QquWL7gZcTCdPiCbfoL73A/96xPKuHHQl0ZNPv5oy+Cfv5ImEzUZyT1WauIxLyvyznMBaN8lbr3ENecPWCQiacqsfsCkDkiZle3cCPX1Tsv0b3cMu4g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
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=nTdQjIkgwe2il1v3wDnnVUE8kYmkCUg3nXFxQlfrlEk=;
 b=Elb3rKX8WIK200ekTtHFgOxEIMQ4KJdENrBhXPpIc5z2M0w05d82j3E+1Gm+BZDEIsHArgnYxSLhQtEOO+4eO3bv7a36qMs5K1edpAAwgUnHlHhA/jABNRy3EEjGRdUxfYjLMI/3XG71+tX8KM9EBjeGKRQoBJbxuIg6JPKh9KM=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <7750495f-c007-4b56-aaba-cb85ecfa6820@amd.com>
Date: Thu, 5 Nov 2026 13:36:38 +0800
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] libxl: wait for QEMU exit before restarting a domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Penny Zheng <penny.zheng@amd.com>
References: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
 <0762b21d-3173-4014-bd43-fa2a9cef9c85@amd.com>
Content-Language: en-US
From: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
In-Reply-To: <0762b21d-3173-4014-bd43-fa2a9cef9c85@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: TPYP295CA0058.TWNP295.PROD.OUTLOOK.COM (2603:1096:7d0:8::9)
 To CHBPR12MB780315.namprd12.prod.outlook.com (2603:10b6:610:36a::15)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CHBPR12MB780315:EE_|CH3PR12MB504971:EE_
X-MS-Office365-Filtering-Correlation-Id: 943e01ef-8e78-4a02-ae2a-08df3afec79a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|10067099003|18002099003|22082099003|56012099006|11063799006|4143699003|261026121527099003|261026140227099003|261028144727099003|261022105027099003|261102123227099003|261021123027099003|261021121427099003|261009223027099003|261022075727099003|261022115727099003;
X-Microsoft-Antispam-Message-Info:
	yts3wB+7sndaSGLcuMxg7cv9sk17a+4P3Z8LiNvFV1snpyJ+GTIGUmdLIsffowM7mWYJrKZspgtuuHta1EBocrr5YyHd4inbpqSYVQkG3DZ4dZPHAJCuf3sSAk7tZbVTjbXbWskIGLARpiTwgQb1LLi9IqRI3C+bFemInFezuwy6qEt8r/WVNd5xZibTVt1eu1usajn0RGiIWUPKCVKj7Umnq9ohWzjlnG2XZrvTnM8KEfw4BKQqWnBH9/dKGN5Gv0pTvT0uSu7Oir8e2TqqQs35b7HYF+hATV9ujrtvNh/XDgbxsHo/4jeGflw/nxB8qM/ESa7NYKuEhAirYnIkrNJofMSiJSpRlCHB1ay7OG+Iw+cnR7Wb753T4ORSnfrmKy/tdGYXWEvTg8K2f0mwiUEK1O7OyPH2ddTADraMFqRnNtBJGe9OcXmqpvnKsQUEgOqkWTeAg4Pfdjsk1dAuJzfU2ohB2BPNBPIi7kho/GAUyJ1eQ8eT4PTr3ITx88eoz7/nONhv3yU2cbTY8/GsZGUlXRcyQnyh8GNliFFid5HRfb/UPZHCHIIV3zAUYbayg3NE+rXWPbtJJ5lGf9IkWh8wChvrTL70uNVICVCCuLwZw7r7q26nqnD+E+TeWefaP/0Do7ceOh0XHdCUiMFP4dqabha37Bk0kO+DVswQtqk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CHBPR12MB780315.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006)(4143699003)(261026121527099003)(261026140227099003)(261028144727099003)(261022105027099003)(261102123227099003)(261021123027099003)(261021121427099003)(261009223027099003)(261022075727099003)(261022115727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TmlyMFJDU0ZTWUdIK1FGZmhTUXlyU1RWT1IrWG8vQVY4VHhWVlM3UUpKbG9o?=
 =?utf-8?B?T1BLYW9ZWDVDWW16NmF6djlaMllyblkwQ1JkZHRvUVkvQUxwa1U3cmxGRDJq?=
 =?utf-8?B?MkxVVzUxdTRKVUFOeTVPNkljWXdoUVNocm9KTHFxbC93MUVmVE1TQnVCeUNz?=
 =?utf-8?B?dWZyZDBvQzRCd25uQW42Q0hhZnVqQStnWmdaMjBxYUQ3Qzc1V05ubTBJVTVR?=
 =?utf-8?B?aHNQYnV5Q29tVWRoNlRwRnVEVmhRa3Bwd2pteXIzbEJLQklBVzQ2ZFdUVHVX?=
 =?utf-8?B?SGJDa0J6ZnJxSC9rMTJnZnAxL2JsWlUrVzZ2U2VXc3ZtT3pqaTg3eXJ4NWxF?=
 =?utf-8?B?cml1RS9XSU5Wd2kzV29pMnZuaG1IWWI5dnY4RGphTXpRU0lTbEpKM3ZCdUFL?=
 =?utf-8?B?RldKYXh3RFUrbHAwK1FyS3REaUxBeEVLN0w3Z3ZnYzRacVJZd0JzbEpZdFdI?=
 =?utf-8?B?dTZDM2ZySDR3YlhIY0dPU2c2RDNQNVk2cjlIMXlwYUZ2RWVLNENLMVEvQ2ZR?=
 =?utf-8?B?T2NrYklOYmtSODZHSHkrZmJZcmt3QzR2Um1jUE1za3loSG10ZmlJSUQ0YTZK?=
 =?utf-8?B?SXBxbStST2ZDYnROZWlDeHl5UjhtZklEU213NnozZ3c2TWE3aEx2Q1dIM2pL?=
 =?utf-8?B?NGlLbWFIY3Z2SENsRGx2cElGeWt6NThLL3p1bUJRak5zYkVlOG1QcjVUQU9o?=
 =?utf-8?B?eHY5c2p0MjZ3bDdoYkI4Vmk0eStQaTErZ0g4Q29SblNBSUdMY05vTGhqbDFP?=
 =?utf-8?B?akVyQ0YvWjFIZlRSOHVxcElYL3FwdlZ1SUFTVitQSWl5TUNtTE9iWk1kaEto?=
 =?utf-8?B?WTVwa1Y0dWRGemJRaTFRdDZXVVpzMVY1N2t0ZVcyOUIySENMQ0ZEWEIwVmVw?=
 =?utf-8?B?Q0ZVdU02c1RJZWo5cWFRTzFoaUlXWUtEMVh1OWEzMU94ZHNNbURDNlJtYVB1?=
 =?utf-8?B?Z0sxYTN3OGczRi8waUNkMDdvbXJrdFF0c2RYUXk0T0VOa2RGV2RvY1RxODJo?=
 =?utf-8?B?NHF5TkRmWWt1UnovRThqc1hlZDRPbU5kUE1HYUV5eHQ5TnUrRFBYTDd3WFZn?=
 =?utf-8?B?OC9aVmtmMDZhRkI2QlpSQ0k2OTBQVXF6TEVyVFZhdUVaMGtBUHlhZndvWHFV?=
 =?utf-8?B?UnlZVGFEbWxjK1pEWEFBQVhucHZEcmVDaUE5a2VLVW1RWE0wQ28wazBoWXFy?=
 =?utf-8?B?VTJLUmh1NlhSaDZwRWZqQ1NOZ09wUGI4Z2t3eStReCtZVmw1UjYvM20xTCs1?=
 =?utf-8?B?ZEJLNXpEbklIMUJ0QTNvSG40Qkt3eHpmZXgvV3ZnOXlNV3Z5ejVIczE0OE55?=
 =?utf-8?B?L04yTVFGNVVtaEJGOVlseFZRYlBhc1lqSEZSMHpiTmNOdzlxdlkvV1laaGpJ?=
 =?utf-8?B?OTlaUXE3dVVQSzNIZkdCUWNobzM2K1c0cDJyQ2REQnhJbFNtNHN6V2x1TmU2?=
 =?utf-8?B?QTFhQnk0ekNNRXZ5Z3ByMXJhdkFRU3IvMExTUkxRd2tNcjN3ZmFHV3pmTWRi?=
 =?utf-8?B?WGFrM0lnUUZNR3NrYTM4TVMzeWRPQStqdCtVNUNPbUd3YnF1VzYrVjJTQU9s?=
 =?utf-8?B?aVFMa0ZxdmM3dWxqNFdUN3RYNCtrK0hWUVhBQkJxUGdSQkpxUnJqcjFLNjcy?=
 =?utf-8?B?bGlkWUlHTTNmZHpCaU85anBXcDN2YjNOT1ZXRVVHbk1LaHZGUjZUemFjSDRk?=
 =?utf-8?B?QnBXeXY0OTdmeWxUU3lBQnVBTTVpYlE4K3RWcXI0VUxkeXhuVmNLNkdKWWw1?=
 =?utf-8?B?TklTcG5rUXdYK29JcTBURzhwU3VWU05kaDhEcmZuR0N4N1dUcHBJRElCOS9u?=
 =?utf-8?B?NFR6eHJ1aldFME42VXcxaVYrd3M4S1J5NDlFMUkwc2xLQmJ2cGJsTU90clJq?=
 =?utf-8?B?MmVUWTYrd0R6bGJIUG00UFZNa3JKUW1MQzVicUJJMHp5VjNGU0pqMUVXcFRS?=
 =?utf-8?B?N3A4TXBFMlhPS3FlQTFnRVBBLzlvWGpFZVJHU3JJaFozYUF0a09GRktSMTdx?=
 =?utf-8?B?UE9aSy9wbXRYY0xtRTkxYUlxUFVtK1NRQ1M2VklLcUp5N2ZWWUZuK0VHMldC?=
 =?utf-8?B?WkM2d0FrYngyalVVa0hnRS9Ha3hJWG1scmIrMWw0dm5wK213R0ljL1Z2TWpC?=
 =?utf-8?B?VkovQlg0aGkxMzI5NFczTGNBOFprdVR3Uld4a3NPNEFKaWdUYzdFVGJIcjJR?=
 =?utf-8?B?R2xicG1SRk1iRzU1MTNUanYrNVhOdGZWYW9pWFl4dDVNWmFabVFud0FJOGJz?=
 =?utf-8?B?ZGlGMnZGOE9pdTFVMm9XeVY4bzBJcWpGdlphd1RYRHN2RDNkNG53T3FYQWRv?=
 =?utf-8?B?T1JYOW5zZnYrNXQ3RW1NUG85eVMxUEwrc3JVU05TVTNJcHdMSExuZz09?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 943e01ef-8e78-4a02-ae2a-08df3afec79a
X-MS-Exchange-CrossTenant-AuthSource: CHBPR12MB780315.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 05:36:45.7600
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 8R0xCMPD7N+7mMArhNHY096vS+7Y7ekmApDfYDPd5Jyl7ybMW7AcqSyeydQ9D8KZRGWrs2G6asn9yecbIZuOmw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB504971
X-purgate-ID: tlsNG-c1860d/1793857010-D735D87B-F32D9353/0/0
X-purgate-type: clean
X-purgate-size: 2845

On 2026-11-05 01:33, Jason Andryuk wrote:
> On 2026-11-04 01:46, Jiaqing Zhao wrote:
>> The PID-based device model destruction path returns immediately after
>> sending SIGHUP, before QEMU has necessarily exited. When an HVM guest
>> reboots with VNC enabled, the new QEMU process may fail to bind the VNC
>> port because the old process still holds it.
>>
>> Wait for QEMU to exit in a child process after singaling it for at most
> 
> "signaling"
> 
>> 60 seconds. If waiting fails or times out, log the error and retain the
>> existing domain destruction behaviour.
> 
> 60 seconds seems like a lot.  Did you measure the time to see how long it takes?  It's an upper bound, but maybe 10 seconds would be better?

Typically it costs less than 3s. Most time it only takes 1s. Will change
to 10s in v2.

>> Signed-off-by: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
> 
>> @@ -3547,12 +3564,28 @@ void libxl__destroy_device_model(libxl__egc *egc,
>>       LOGD(DEBUG, domid, "Didn't find dm UID; destroying by pid");
>>         path = GCSPRINTF("/local/domain/%d/image/device-model-pid", domid);
>> -    rc = kill_device_model(gc, path);
>> -
>> +    rc = kill_device_model(gc, path, &dm_pid);
> 
> If you just read the pid directly here, you don't need to change kill_device_model().  But your approach is only a single read, so maybe it's better.  I'm undecided, but maybe someone else has an opinion.

Yes keeping old kill_device_model() requires an extra libxl__xs_read_checked()
to read the pid. Let's wait for more comments.

>>       if (rc) {
>>           ACCUMULATE_RC(ddms->rc);
>>           LOGD(ERROR, domid, "Killing device model pid from path %s", path);
>> +        goto out;
>> +    }
>> +
>> +    LOGD(DEBUG, domid, "Waiting for device model [%d] to exit", dm_pid);
>> +    reaper_pid = libxl__ev_child_fork(gc, &ddms->destroyer,
>> +                                      kill_device_model_uid_cb);
> 
> The reaper_pid handling below is duplicated from
> `if (dm_kill_uid_str) {`
> 
> Put the above pid code in an else, and use a single implementation of the reaper_pid handling.
> 
>> +    if (reaper_pid < 0) {
>> +        rc = ERROR_FAIL;
>> +        ACCUMULATE_RC(ddms->rc);
>> +        LOGD(ERROR, domid, "Unable to fork device model exit waiter");
>> +        goto out;
>>       }
>> +    if (!reaper_pid) {
>> +        rc = wait_device_model_pid_child(gc, domid, dm_pid);
> 
> Though this would need an additional conditional.
> 
> Thanks,
> Jason

Sure, will do in v2.

>> +        assert(rc <= 0 && rc >= -125);
>> +        _exit(-rc);
>> +    }
>> +    return;
>>     out:
>>       /*



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 06:05:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 06:05:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1473652.1681304 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOqbU-0002Nm-Gy; Thu, 05 Nov 2026 06:05:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1473652.1681304; Thu, 05 Nov 2026 06:05:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOqbU-0002Nf-EG; Thu, 05 Nov 2026 06:05:40 +0000
Received: by outflank-mailman (input) for mailman id 1473652;
 Thu, 05 Nov 2026 02:15:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <robin@bella-hats.com>) id 1xOn0a-0005Rh-U2
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 02:15:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOn0V-007ylk-3n
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 03:15:15 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <robin@bella-hats.com>)
 id 6aebe67a-e002-0a2a0a5209dd-0a2a450b8062-18
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 03:15:15 +0100
Received: from [156.224.82.101] (helo=mail-m82101.xmail.ntesmail.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <robin@bella-hats.com>)
 id 6aebe6af-b7e8-0a2a450b0019-9ce05265be24-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 03:15:14 +0100
Received: from robin@bella-hats.com( [10.176.105.92] ) by ajax-webmail (
 [127.0.0.1] ) ; Thu, 5 Nov 2026 10:15:10 +0800 (GMT+08:00)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Content-Type: multipart/alternative; BOUNDARY="=_Part_1100518_960103319.1793844910185"
To: Xen-devel <xen-devel@lists.xenproject.org>
Subject: =?UTF-8?B?UHJlbWl1bSBXb29sIEZlbHQgRmVkb3JhIEhhdHMgd2l0aCBDbGFzc2ljIFNpbGhvdWV0dGUgJiBTdGFibGUgU2hhcGU=?=
X-Priority: 3
MIME-Version: 1.0
From: Robin <robin@bella-hats.com>
Disposition-Notification-To: robin@bella-hats.com
Date: Thu, 5 Nov 2026 10:15:10 +0800 (GMT+08:00)
X-WM-Tid: 0aa1a97d185ed0c0kusyee8a9c93161544
Message-ID: <AOgAsgCcLFF-yvXfTZAOIKoD.1.1793844910712.5448606.robin@bella-hats.com>
X-purgate-ID: tlsNG-42698a/1793844915-A88C99EA-8190145E/3/8917966806
X-purgate-type: bulk
X-purgate-size: 11257

--=_Part_1100518_960103319.1793844910185
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

CgoKCkhlbGxvLAoKVGhpcyBpcyBSb2JpbiBmcm9tIEJlbGxhIEhhdCwgc3BlY2lhbGl6aW5nIGlu
IG1ha2luZyBoaWdoLXF1YWxpdHkgZmFzaGlvbiBmZWx0IGhhdHMgZm9yIGJyYW5kIHJldGFpbGVy
cyBhbmQgYm91dGlxdWUgc2VsbGVycy4KCgoKV2UgY3JhZnQgYSBmdWxsIGxpbmUgb2YgY2xhc3Np
YyBGZWRvcmEgaGF0cyB3aXRoIHRoZSBpY29uaWMgcGluY2hlZCBjcm93biBhbmQgZmxleGlibGUg
d2lkZSBicmltLgogQWxsIHN0eWxlcyBmZWF0dXJlIGNsZWFuIHRhaWxvcmluZywgc21vb3RoIGZl
bHQgdGV4dHVyZSBhbmQgZXhjZWxsZW50IHNoYXBlIHJldGVudGlvbiwga2VlcGluZyBhIG5lYXQg
YW5kIGVsZWdhbnQgbG9vayBmb3IgZGFpbHkgd2VhciwgaG9saWRheSBvdXRmaXRzIGFuZCBmb3Jt
YWwgb2NjYXNpb25zLgoKV2UgcHJvdmlkZSBmbGV4aWJsZSBkZXRhaWxzIHRvIG1hdGNoIHlvdXIg
YnJhbmQgc3R5bGU6CuKAkSBNdWx0aXBsZSBjbGFzc2ljICYgbW9kZXJuIEZlZG9yYSBzaGFwZXMg
Zm9yIG1lbiwgd29tZW4gYW5kIHVuaXNleCBjb2xsZWN0aW9ucwrigJEgUHJlbWl1bSBzb2Z0IHdv
b2wgZmVsdCBtYXRlcmlhbCwgY29tZm9ydGFibGUgYW5kIHNraW4tZnJpZW5kbHkK4oCRIEN1c3Rv
bSBoYXQgYmFuZHMsIHJpYmJvbnMsIG1ldGFsIGJhZGdlcyBhbmQgaW5uZXIgd292ZW4gbGFiZWxz
CuKAkSBBZGp1c3RhYmxlIGlubmVyIHN3ZWF0YmFuZCBmb3IgcGVyZmVjdCBoZWFkIGZpdArigJEg
U3RhYmxlIHNoYXBpbmcsIG5vdCBlYXN5IHRvIGRlZm9ybSBkdXJpbmcgZGFpbHkgd2VhcmluZyBv
ciBwYWNraW5nCgpXZSBzdXBwb3J0IHNhbXBsZSBtYWtpbmcgYW5kIHNtYWxsIHRyaWFsIG9yZGVy
cywgd2l0aCBjb25zaXN0ZW50IHF1YWxpdHkgZm9yIGJ1bGsgcmVzdG9ja2luZy4KIElmIHlvdSBh
cmUgbG9va2luZyBmb3IgcmVsaWFibGUgRmVkb3JhIGhhdCBzdXBwbGllcnMgdG8gZW5yaWNoIHlv
dXIgaGF0IGNvbGxlY3Rpb24sIHdlIGNhbiBwcm92aWRlIGZ1bGwgc2FtcGxlIHJlZmVyZW5jZXMg
YW5kIGNvbXBldGl0aXZlIHByaWNpbmcgZm9yIHlvdXIgcmV2aWV3LgoKTG9va2luZyBmb3J3YXJk
IHRvIHdvcmtpbmcgd2l0aCB5b3UuCgpCZXN0IHJlZ2FyZHMsCgpSb2JpbgoKV2hhdHNBcHA6ICs4
NiAxODkzMjY2NTgyMwoKRW1haWw6IHJvYmluQGJlbGxhLWhhdHMuY29tCgoKCgoKCiAKIApDb250
aW51ZSByZWNlaXZpbmcgZnJlc2ggdGlwcyBhbmQgZmVhdHVyZXMgYnkgaGl0dGluZyAuIEdvIFdp
dGggRnV0dXJlIE5ld3MKVG8gZWxpbWluYXRlIHRoaXMgY29tbXVuaWNhdGlvbiwganVzdCBoaXQg
TWFuYWdlIEluYm94IEZsb3cuCgoKCgoKCiBST0JJTgpyb2JpbkBiZWxsYS1oYXRzLmNvbQoKCuet
vuWQjeeUsSDnvZHmmJPkvIHkuJrpgq7nrrEg5a6a5Yi2CgoK
--=_Part_1100518_960103319.1793844910185
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OlNvdXJjZSBIYW4gU2Fucztmb250LXNpemU6MTRweDts
aW5lLWhlaWdodDoxLjU7IiBkYXRhLW1jZS1zdHlsZT0iZm9udC1mYW1pbHk6U291cmNlIEhhbiBT
YW5zO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNTsiPjxicj48L2Rpdj48ZGl2IHN0eWxl
PSJmb250LWZhbWlseTpTb3VyY2UgSGFuIFNhbnM7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6
MS41OyIgZGF0YS1tY2Utc3R5bGU9ImZvbnQtZmFtaWx5OlNvdXJjZSBIYW4gU2Fucztmb250LXNp
emU6MTRweDtsaW5lLWhlaWdodDoxLjU7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1p
bHk6U291cmNlIEhhbiBTYW5zO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNTsiIGRhdGEt
bWNlLXN0eWxlPSJmb250LWZhbWlseTpTb3VyY2UgSGFuIFNhbnM7Zm9udC1zaXplOjE0cHg7bGlu
ZS1oZWlnaHQ6MS41OyI+SGVsbG8sPGJyPjxicj5UaGlzIGlzIFJvYmluIGZyb20gQmVsbGEgSGF0
LCBzcGVjaWFsaXppbmcgaW4gbWFraW5nIGhpZ2gtcXVhbGl0eSBmYXNoaW9uIGZlbHQgaGF0cyBm
b3IgYnJhbmQgcmV0YWlsZXJzIGFuZCBib3V0aXF1ZSBzZWxsZXJzLjxicj48YnI+PGltZyBzcmM9
Imh0dHBzOi8vZG93bmxvYWQub2ZmaWNlLjE2My5jb20vY293b3JrLXN0b3JhZ2UvYWdlbnQlMkYy
MDI2JTJGMDklMkYwNyUyRmYwOGQyYjYzM2IwYjRlN2FiZmY3MTMwNTZmNWRjYmUzLnBuZz9TaWdu
YXR1cmU9QkZLOXdVcGZNNjRQSm9EZFklMkZyNDltUE5DaFAzMEZQb0xVV3FjbzRxdmVjJTNEJmFt
cDtFeHBpcmVzPTIxMDQxMjU3NzgmYW1wO05PU0FjY2Vzc0tleUlkPTBjZDc5NmQwNGEzYTQ1ZGJh
MmVmOTRhMmYyYTBjMjE4IiBkYXRhLXRpbWVkYXRlPSIxNzg4NzY1Nzc5NTgyIiB3aXJ0ZS1vcmln
aW4tc3JjPSJodHRwczovL2Rvd25sb2FkLm9mZmljZS4xNjMuY29tL2Nvd29yay1zdG9yYWdlL2Fn
ZW50JTJGMjAyNiUyRjA5JTJGMDclMkZmMDhkMmI2MzNiMGI0ZTdhYmZmNzEzMDU2ZjVkY2JlMy5w
bmc/U2lnbmF0dXJlPUJGSzl3VXBmTTY0UEpvRGRZJTJGcjQ5bVBOQ2hQMzBGUG9MVVdxY280cXZl
YyUzRCZhbXA7RXhwaXJlcz0yMTA0MTI1Nzc4JmFtcDtOT1NBY2Nlc3NLZXlJZD0wY2Q3OTZkMDRh
M2E0NWRiYTJlZjk0YTJmMmEwYzIxOCIgd2lkdGg9Ijc5NyIgaGVpZ2h0PSI0NzAiPjxzcGFuIGRh
dGEtbWNlLXR5cGU9ImJvb2ttYXJrIiBpZD0ibWNlXzNfc3RhcnQiIGRhdGEtbWNlLXN0eWxlPSJv
dmVyZmxvdzpoaWRkZW47bGluZS1oZWlnaHQ6MHB4IiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbjsg
bGluZS1oZWlnaHQ6IDBweDsiPjwvc3Bhbj48YnI+PGJyPldlIGNyYWZ0IGEgZnVsbCBsaW5lIG9m
IGNsYXNzaWMgRmVkb3JhIGhhdHMgd2l0aCB0aGUgaWNvbmljIHBpbmNoZWQgY3Jvd24gYW5kIGZs
ZXhpYmxlIHdpZGUgYnJpbS4gPGJyPkFsbCBzdHlsZXMgZmVhdHVyZSBjbGVhbiB0YWlsb3Jpbmcs
IHNtb290aCBmZWx0IHRleHR1cmUgYW5kIGV4Y2VsbGVudCBzaGFwZSByZXRlbnRpb24sIGtlZXBp
bmcgYSBuZWF0IGFuZCBlbGVnYW50IGxvb2sgZm9yIGRhaWx5IHdlYXIsIGhvbGlkYXkgb3V0Zml0
cyBhbmQgZm9ybWFsIG9jY2FzaW9ucy48YnI+PGJyPldlIHByb3ZpZGUgZmxleGlibGUgZGV0YWls
cyB0byBtYXRjaCB5b3VyIGJyYW5kIHN0eWxlOjxicj7igJEgTXVsdGlwbGUgY2xhc3NpYyAmYW1w
OyBtb2Rlcm4gRmVkb3JhIHNoYXBlcyBmb3IgbWVuLCB3b21lbiBhbmQgdW5pc2V4IGNvbGxlY3Rp
b25zPGJyPuKAkSBQcmVtaXVtIHNvZnQgd29vbCBmZWx0IG1hdGVyaWFsLCBjb21mb3J0YWJsZSBh
bmQgc2tpbi1mcmllbmRseTxicj7igJEgQ3VzdG9tIGhhdCBiYW5kcywgcmliYm9ucywgbWV0YWwg
YmFkZ2VzIGFuZCBpbm5lciB3b3ZlbiBsYWJlbHM8YnI+4oCRIEFkanVzdGFibGUgaW5uZXIgc3dl
YXRiYW5kIGZvciBwZXJmZWN0IGhlYWQgZml0PGJyPuKAkSBTdGFibGUgc2hhcGluZywgbm90IGVh
c3kgdG8gZGVmb3JtIGR1cmluZyBkYWlseSB3ZWFyaW5nIG9yIHBhY2tpbmc8YnI+PGJyPldlIHN1
cHBvcnQgc2FtcGxlIG1ha2luZyBhbmQgc21hbGwgdHJpYWwgb3JkZXJzLCB3aXRoIGNvbnNpc3Rl
bnQgcXVhbGl0eSBmb3IgYnVsayByZXN0b2NraW5nLiA8YnI+SWYgeW91IGFyZSBsb29raW5nIGZv
ciByZWxpYWJsZSBGZWRvcmEgaGF0IHN1cHBsaWVycyB0byBlbnJpY2ggeW91ciBoYXQgY29sbGVj
dGlvbiwgd2UgY2FuIHByb3ZpZGUgZnVsbCBzYW1wbGUgcmVmZXJlbmNlcyBhbmQgY29tcGV0aXRp
dmUgcHJpY2luZyBmb3IgeW91ciByZXZpZXcuPGJyPjxicj5Mb29raW5nIGZvcndhcmQgdG8gd29y
a2luZyB3aXRoIHlvdS48YnI+PGJyPkJlc3QgcmVnYXJkcyw8YnI+PGJyPlJvYmluPGJyPjxicj5X
aGF0c0FwcDogKzg2IDE4OTMyNjY1ODIzPGJyPjxicj5FbWFpbDogcm9iaW5AYmVsbGEtaGF0cy5j
b208YnI+PHNwYW4gZGF0YS1tY2UtdHlwZT0iYm9va21hcmsiIGlkPSJtY2VfMl9zdGFydCIgZGF0
YS1tY2Utc3R5bGU9Im92ZXJmbG93OmhpZGRlbjtsaW5lLWhlaWdodDowcHgiIHN0eWxlPSJvdmVy
ZmxvdzogaGlkZGVuOyBsaW5lLWhlaWdodDogMHB4OyI+PC9zcGFuPjxicj48L2Rpdj48ZGl2IHN0
eWxlPSJmb250LWZhbWlseTpTb3VyY2UgSGFuIFNhbnM7Zm9udC1zaXplOjE0cHg7bGluZS1oZWln
aHQ6MS41OyIgZGF0YS1tY2Utc3R5bGU9ImZvbnQtZmFtaWx5OlNvdXJjZSBIYW4gU2Fucztmb250
LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjU7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1m
YW1pbHk6U291cmNlIEhhbiBTYW5zO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNTsiIGRh
dGEtbWNlLXN0eWxlPSJmb250LWZhbWlseTpTb3VyY2UgSGFuIFNhbnM7Zm9udC1zaXplOjE0cHg7
bGluZS1oZWlnaHQ6MS41OyI+PGJyPjwvZGl2PjxkaXYgY2xhc3M9InN1YnNjcmliZUJyIj4mbmJz
cDs8L2Rpdj48ZGl2IGNsYXNzPSJzdWJzY3JpYmVCciI+Jm5ic3A7PC9kaXY+PGRpdiBkZWx3aG9s
ZT0idHJ1ZSIgY2xhc3M9InN1YnNjcmliZURpdiI+CiAgICAgIDxwIGNsYXNzPSJzdWJfdGV4dCIg
c3R5bGU9ImNvbG9yOiAjMjcyRTQ3IiB0ZXh0aWQ9IjEwMDE1Ij4KICAgICAgQ29udGludWUgcmVj
ZWl2aW5nIGZyZXNoIHRpcHMgYW5kIGZlYXR1cmVzIGJ5IGhpdHRpbmcgLgogICAgICA8YSBjb250
ZW50ZWRpdGFibGU9ImZhbHNlIiBocmVmPSJodHRwczovL3NpdGUubnRlc21haWwuY29tL2ZlZWRi
YWNrLmh0bWw/Y2lkPXNpdGVfV0xBUDVRRWt3STNSalozc3l2Y3VGM0ZybmxMelZHVGtwdWYzY19q
TlQ3Tk5wdkRRUUFTMXpPOGRuLVdKbElIUyZhbXA7YmlkPXlLdDlYTk5heVk2UlNFMHFOZC1pT1Zt
MXNycllyZTRaQUthWU1uVWV5ZXFSRHlPWTZKWUY5UTJSQW43UjRmSHJxQ280WGc5ai1nNGFfVFNU
bkNSSTlLZHQyYkU3OG9XWE9WdW8xdno5UUdJJmFtcDttaWQ9NTJjMmE2YjUtYzY4Yi00NmNkLWFl
OTEtNWRmMjNlNjJlNGEyIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1pZD0iMTc4ODc2NTM3MDI0OSIg
ZGF0YS1uYW1lPSLorqLpmIUiIGRhdGEtYnVzaW5lc3MtdHlwZT0iRkVFREJBQ0tfUEFHRSIgZGF0
YS1wYWdlPSIiIGNsYXNzPSJzaXJpdXMtc2l0ZS1saW5rLWJ1dHRvbiBlZG0tc3Vic2NyaWJlIiBz
dHlsZT0iZGlzcGxheTogaW5saW5lLWZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vl
bjthbGlnbi1pdGVtczogY2VudGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGN1cnNvcjogcG9p
bnRlcjsgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkICM0QzZBRkY7IGJvcmRl
ci1yYWRpdXM6IDRweDtmb250LXNpemU6IDEycHg7d2lkdGg6IG1heC1jb250ZW50O2hlaWdodDog
MjhweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsiPgogICAgICA8c3Bhbj5HbyBXaXRoIEZ1dHVy
ZSBOZXdzPC9zcGFuPgogICAgICA8L2E+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InVuX3N1
Yl90ZXh0IiBzdHlsZT0iY29sb3I6ICM3NDdBOEMiIHRleHRpZD0iMTAwMTUiPlRvIGVsaW1pbmF0
ZSB0aGlzIGNvbW11bmljYXRpb24sIGp1c3QgaGl0IDxhIGhyZWY9Imh0dHBzOi8vbHgtY2FuY2Vy
LXN0YXItbWFpbC5xaXllLjE2My5jb20vdW5zdWJzY3JpYmVfZW4uaHRtbD9ob3N0PWx4LWxpYnJh
LXN0YXItbWFpbC5xaXllLjE2My5jb20mYW1wO3NpZ249VjIucUxJZ2JIYlhZMUNtNnBFeVlnQUF1
X010WXE1Z3VVTmVOOFRXVVpERV9KWldZd3ZpTWgtWUtGLTdSZnZOb25IMHFWSWJ1M1NqRGRrMWIz
eF9HWVYyRE1GR0tTTzFka202ZkJsSGhvNW42ejJRUUNnUFVjd2d0b2lmbHk0bk9fbnE3LU5ZcW9B
ZmZGc2pHZWJhbFgydm03YTJXVUQ1OFRhSlctM213NnptZFNoTGY3enNqQ25iOC1wYWstbERaUkha
JmFtcDtmcm9tPXJvYmluQGJlbGxhLWhhdHMuY29tIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImVk
bS11bnN1YnNjcmliZSIgaXRlbS1yLXByb3A9Imx4LWNhbmNlci1zdGFyLW1haWwucWl5ZS4xNjMu
Y29tIj5NYW5hZ2UgSW5ib3ggRmxvdzwvYT4uPC9wPgogICAgICA8L2Rpdj48ZGl2PgogICAgICA8
c3BhbiBoYWRzdWJzY3JpYmU9IjEiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJtYWlsU2lnbmF0
dXJlQnIiPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJtYWlsU2lnbmF0dXJlQnIiPjxicj48L2Rpdj48
ZGl2IGNsYXNzPSJtYWlsLXNpZ25hdHVyZSIgZGVsd2hvbGU9InRydWUiPiAgICAgPGRpdiBjbGFz
cz0ibGluZ3hpLXNpZ25hdHVyZS1jb250YWluZXIiIHN0eWxlPSJmb250LWZhbWlseTogUGluZ0Zh
bmcsU291cmNlIEhhbiBTYW5zLHNhbnMtc2VyaWY7Ij4gICAgICAgICAgPCEtLSDmoLflvI/kuIDv
vIzlrozmlbTniYggLS0+ICAgICAgICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBj
b2xsYXBzZTt3aWR0aDogMTAwJTt0ZXh0LXNpemUtYWRqdXN0Om5vbmUgIWltcG9ydGFudDt0YWJs
ZS1sYXlvdXQ6IGZpeGVkOyIgY2xhc3M9Im1jZS1pdGVtLXRhYmxlIj4gICAgICAgICAgICAgICA8
dGJvZHkgc3R5bGU9InRleHQtc2l6ZS1hZGp1c3Q6bm9uZSAhaW1wb3J0YW50O3dvcmQtd3JhcDpi
cmVhay13b3JkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbDsiPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC90Ym9keT4gICAgICAgICAgPC90YWJsZT4gICAgICAgICAgPCEtLSDmoLfl
vI/kuozvvIzml6DlpLTlg48gLS0+ICAgICAgICAgIDxkaXYgaWQ9Imxpbmd4aS1zaWduYXR1cmUt
djItYmxvY2siIHN0eWxlPSJ3aWR0aDogMTAwJTt0ZXh0LWRlY29yYXRpb246IG5vbmU7dGV4dC11
bmRlcmxpbmU6IG5vbmU7Ij4gICAgICAgICAgICAgICA8ZGl2IGlkPSJsaW5neGktc2lnbmF0dXJl
LXYyLWNvbnRlbnQiIGl0ZW1pZD0iaWQiIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQg
I0UxRTZFRDttYXgtd2lkdGg6IDk1JTtmb250LXNpemU6IDE0cHg7bGluZS1oZWlnaHQ6IDE2cHg7
Y29sb3I6ICM3QTg1OTk7cGFkZGluZzogMTZweCAxNnB4IDRweCAwcHg7bWFyZ2luLWxlZnQ6IDBw
eDsiIGl0ZW1wcm9wPSI4NTU3NjI5Ij4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNv
bG9yOiAjMjMyRDQ3O2JvcmRlcjogbm9uZTttYXJnaW4tYm90dG9tOjRweDtmb250LXNpemU6IDE2
cHg7bGluZS1oZWlnaHQ6IDIwcHg7dGV4dC11bmRlcmxpbmU6IG5vbmU7Zm9udC13ZWlnaHQ6IGJv
bGRlcjt3aGl0ZS1zcGFjZTpwcmU7IiBpdGVtaWQ9Im5hbWUiPlJPQklOPC9kaXY+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBz
dHlsZT0iYm9yZGVyOiBub25lO21hcmdpbi1ib3R0b206OHB4O3RleHQtdW5kZXJsaW5lOiBub25l
O3doaXRlLXNwYWNlOnByZTsiPnJvYmluQGJlbGxhLWhhdHMuY29tPC9kaXY+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+ICAgICAgICAgIDwvZGl2PiAgICAgICAgICA8IS0t5Yqe5YWs5ZOB54mMLS0+
ICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDowcHg7Y29sb3I6ICM3QTg1OTk7Zm9u
dC1zaXplOiAxMnB4O21hcmdpbi10b3A6IDEycHg7cGFkZGluZy1ib3R0b206MTRweDsiPiAgICAg
ICAgICAgICAgIOetvuWQjeeUsSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcXkuMTYz
LmNvbS8iIHN0eWxlPSJjb2xvcjojNEM2QUZGO2Rpc3BsYXk6IGlubGluZS1ibG9jazt0ZXh0LXVu
ZGVybGluZTogbm9uZTt0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij7nvZHmmJPkvIHkuJrpgq7nrrE8
L2E+ICAgICAgICAgICAgICAg5a6a5Yi2ICAgICAgICAgIDwvZGl2PiAgICAgPC9kaXY+PC9kaXY+
CjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL2x4LWxpYnJhLXN0YXItbWFp
bC5xaXllLjE2My5jb20vYXBpL3B1Yi9lZG0vcmVhZD9zaWduPVYyLlMyLTIzSXdmeU1yRGk2TlB3
UlpBQ0hBa1ZtMll3SVMxUVgyLWVMYk4yVEN2RnhrS04tZ0w3bGcwaTg0anYxYXVyVDZveEN3eDFu
djZVdjZzN053SmpPdVFfajR0UkY1bTFmSmVjZlNtZnhIZlg2VmFLQmlSWUs4eTJUSDhPQ0tnIj4=
--=_Part_1100518_960103319.1793844910185--


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 07:59:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 07:59:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474110.1681313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsNh-0003Z7-Ax; Thu, 05 Nov 2026 07:59:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474110.1681313; Thu, 05 Nov 2026 07:59:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsNh-0003Z0-8B; Thu, 05 Nov 2026 07:59:33 +0000
Received: by outflank-mailman (input) for mailman id 1474110;
 Thu, 05 Nov 2026 07:59:32 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stephen.cheng@citrix.com>) id 1xOsNf-0003XX-S7
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 07:59:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsNe-008l2e-SI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:59:30 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stephen.cheng@citrix.com>)
 id 6aec375c-bab6-0a2a0a5309dd-0a2a4502e546-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:59:30 +0100
Received: from [52.101.52.22]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stephen.cheng@citrix.com>)
 id 6aec3761-6ca4-0a2a45020019-34653416a66f-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:59:30 +0100
Received: from CO1PR03MB7889.namprd03.prod.outlook.com (2603:10b6:303:275::14)
 by SN7PR03MB7183.namprd03.prod.outlook.com (2603:10b6:806:2e5::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 07:59:27 +0000
Received: from CO1PR03MB7889.namprd03.prod.outlook.com
 ([fe80::2d02:5605:87a2:6767]) by CO1PR03MB7889.namprd03.prod.outlook.com
 ([fe80::2d02:5605:87a2:6767%4]) with mapi id 15.21.0592.009; Thu, 5 Nov 2026
 07:59:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=w5PwtNzueYgA3+8iTqhn8wRls1LOCKMd5YE+7Wr+rgRQGslWfbmgSPvbVyoOe1N13VwmUVmZ9a1xizJwNs8Y5JoAlkafkhVOVwioR2HMRTuTunUR7J9t3FokfCwWxZdVPkCn0//NcX9k1fdbvz9bWshqL8jctjb1agZVriAz3oJYFj6q4SE1gXSFSGc+OXhGWapeL8i+CDBFkHLXO0Z0/Vw1RtN7xLreuxqW3m0a0cNnieHaS8ZQ5FHZn10VGzW+La9VHTxFpHeSLarTb/5CiLbuntwcrpvtFyb6A5KzdZcwIr85yEyRMXSxLuaHIQdIfMNq0v3GUtZwT5OH/8FWwA==
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=kW80s8L8CvcHBg2AaqGBVnt0IpXL7pjGySKAFcXDAzw=;
 b=KDv95UVJNepnEV82JaBSD9F5PDI/UB44xwZNlaydLhCNgANfq16SCU905ZNCT14IcFKWuufyND0KnoBpQp/XVZS6Naej0FDQbPyUHwBQBoIwlHnclMwY8PIRDVzuBmxQeQTL0MysI5tdPrJ2dvNGoXUpJAi58/9MkyH0HtOjCuOehUumTjLCeqSJHvkPXcbXquiRzL/cYxjA4ptnHyJP/hOhJvscYEHL6Bw4kdIQ0emRKUHzqbDZtWj7p6s6W+YHOlAFVKzhjln48rh05Z3U1lOISmMamrjSUm1uKlhm/nriSuI+2g1D+xMkedQhln8b67A4PO8CzrnU73i3W+/8zA==
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=kW80s8L8CvcHBg2AaqGBVnt0IpXL7pjGySKAFcXDAzw=;
 b=IEckR1BVBS7w0nfU0koXR4HGKu1kF0NRVfshJU21yW6SwOIlgCAKnzvbH4eNeStpwPfY7Py7kZ8oQ3p0uWkQKSRdsoNroJ5nd2TedoCkHbPapmUJGRKkd9iPTuVw/hbWceHUqfLVoGVn22opaFOKaOSdYchrfGI7OTQJVgBt+yc=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Stephen Cheng <stephen.cheng@citrix.com>
To: abdelkareem.abdelsaamad@citrix.com
Cc: andrew.cooper3@citrix.com,
	jason.andryuk@amd.com,
	jbeulich@suse.com,
	roger@xenproject.org,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen intercepts L1
Date: Thu,  5 Nov 2026 15:59:15 +0800
Message-ID: <20261105075915.1016497-1-stephen.cheng@citrix.com>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <93437f7cd832790b61c520332cbfa432c75ad8fb.1793723920.git.abdelkareem.abdelsaamad@citrix.com>
References: <93437f7cd832790b61c520332cbfa432c75ad8fb.1793723920.git.abdelkareem.abdelsaamad@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: JH0PR01CA0044.apcprd01.prod.exchangelabs.com
 (2603:1096:990:5c::14) To CO1PR03MB7889.namprd03.prod.outlook.com
 (2603:10b6:303:275::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PR03MB7889:EE_|SN7PR03MB7183:EE_
X-MS-Office365-Filtering-Correlation-Id: b65a17ec-835c-4731-7787-08df3b12b5cf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|23010399003|1800799024|376014|22082099003|18002099003|56012099006|11063799006|261021123027099003|261026121527099003|10067099003|261022075727099003;
X-Microsoft-Antispam-Message-Info:
	CvFVKKEH7ZuqKGsm12ArNx8x3qw4wmlU7Ka+BbWL6mCCl6qAnpwOYfueEwvak/AZk8rXgXkDHsYxi9NrdTAzvakqee/jXQb8ptUrcuwvtB7CuLU1Z1kWqtogiivvgk33GvMxYSP0DZQmAgiHEJP3n96orATmbNv7FxHGiiYbRRz3rflhE5QSR2xSjWTK1C47ZYlrhRLfArRo7oOYxi/KSn28KrirfRxINvNdTfjonPAZ/4gxYa3gc2CoU01OTXAcHY6oUUfCAAfSZuCTH6C52rmWqINHw5FakZUgNk5EyoCGGOsUj7BRwCTEFK+qysXGfm4GugaEYZs6XPKhFsGP7nP0QPcUXYTX93iY3nK4NsXq49B0Ez1OuZt6mk/Io96m9Z7jKH/NoJUqgKnlDouY8W9M7Xq0kNNnJ6xMnzuQPtUnoR3gJw9FD7QvbB8xeylzSXnpD0L1+j9qNez1K7PyNOL5hpZk1uPYfCisxBTcmOujW+qrzEKJbq38YWa/1yiVnLI217FqBkniEB4mqy5BxUJlbs/LVRiahR9RtbBHyWhvha+SuGu2MPfq4RbAFmdYYTDFkLzfDGYVmoujzY1pfWkzAaAp5gh6xgQy8Oo0ysNmj336yAR42CkS6Q+5eNz1+U6Hr4LksQK5qhejp2t+QidSn6mgyWxFpw8kUlxKxEI=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR03MB7889.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(376014)(22082099003)(18002099003)(56012099006)(11063799006)(261021123027099003)(261026121527099003)(10067099003)(261022075727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?SVQzMEJ6VkJqbTRRWXRzRklhOEwzWjBGK2czVk9VanNWcFpXWFRZcThjcXRO?=
 =?utf-8?B?RTVhT2lOdEJCWWJ0Qks2UGlISXpWUUFQUzNac1loZGJqVXppSG5SSURSYlgr?=
 =?utf-8?B?SmN6R3N0ajBCellvSjA3akJLKzlKQTYrOTAwRGtrTWl4bWk2NW01R3pEZHBo?=
 =?utf-8?B?L0t1Nnh2MWJHTHpMQ1o3N294WEtOZWhqZlVaT2I1N0tZUWIrZThEY2FUQ1d2?=
 =?utf-8?B?dFAxcDA1bW1CTDhZd21CQm9SL2NZdkpsT3RacVBCK05WWkVSdFdCRVhVeXky?=
 =?utf-8?B?bmlPREVGbHlqY3ZRenN0SFVjL2NkMnJyN2dSdHo5UWw3K0UrcFJRdk5tZnVZ?=
 =?utf-8?B?OEFCSU04ZHVrV0l2dkZhbmNOcW5Nd1ZUZzBqUUVHVms3VG0yenJSWmVJYUJw?=
 =?utf-8?B?SXErSWtBYkwvZ0JDWllnRlRxRUhhbVc2TXEvaktZbnpUY1dTSDBDcXJzMFlV?=
 =?utf-8?B?VUdVWit3eWNrYkhnWlpMd2tTVUlSUzJjS08yRE1tTWg5RCtEaDd3WVVCdUh3?=
 =?utf-8?B?bzdaWE94ZStNd29JZU91dHpLanhvQTdTNkx1U0dkMWtESmJBUTR0ZFdKYVlF?=
 =?utf-8?B?QVdoWXpTQmZ3SFFobDhNSW1OQXQ1VGZQRUFJY0ovV3dtVCs5WTdmbXMyZEkw?=
 =?utf-8?B?d0FlZkpBekpkZ25wODdWV3BiUWNidUVjWVEzZVJ5ZjFiQjIzS05QODZ6NFV4?=
 =?utf-8?B?VzVHdUxjeXVkdFRId1hCbmpaMjRzaXZaREpiR0NlUWl1SWQ0VHN2Rk4rQlFI?=
 =?utf-8?B?bThMWSswMXBtU1Zmdm0rQTl1YjFaUFUvQi9TSHJOakFuLysreWdFNmRiejFv?=
 =?utf-8?B?c3BlS2VtajQvQURFa3FISEd0dTFRc2E4SDBMRXp0MkVKeDlGVnIrWlMyMytL?=
 =?utf-8?B?bTM0Y25JTi9lOURaM3d5dlZUMjh3NjlmR0c3QTl4QUlIb3oyamdFbHJmQ3ZF?=
 =?utf-8?B?NU1VRHlZb081NFpnc201NVBCbXRaSGhIL01iYzhSQnliblB1TFRvemZtKzhu?=
 =?utf-8?B?R1lzVDk3V01hd0QxUE5nc1BlMVJMUzkxM05mRG9lRHlheEJHWSt1dXFOZHkw?=
 =?utf-8?B?alVpTmkwSnYrTzNRTFpGOGxHZUlLSFlxNkZFSmNNTXIxYmQyRTJlL3Vma3VO?=
 =?utf-8?B?Vi94TFlqUGE3Rk1uSXpKSnVIRXdOTTQ5c0xGUHF6Rm5OWW9rdm52cHlCdkc0?=
 =?utf-8?B?dEZKRDdkQWRQdldHaVN1MDNDSDNRV2tOYXEwYmVCZlcrZUpEN1MxcGhoUlJx?=
 =?utf-8?B?bVYxMkhTRWc5ZUNEa2J4WEpjWElJcU84RXJsc0ZlcTZqSTZJWWFNUE10eUh4?=
 =?utf-8?B?WWlmN1RsVDBOcHlNeGFLRWx3WSs0UE5zZ1Jxam1LQmRtRlpCRE8ydmFnRlF3?=
 =?utf-8?B?MThucXpXNnY5NVY5YkVxanZtTnl1TXhVVGI2S25WVGdzUVJ0M3hjMzN2OGli?=
 =?utf-8?B?UU1pbi9nZ2M0NUxnK2poSE90akFuNlR4d0hkNktLdWNTOTMvS3lQRG91YWdl?=
 =?utf-8?B?UC9Fck1mbmlTeGRvTFg4NHRiNXZ5ZFAxWjFWMFNEdlNVODlBNjFBd0orUGNS?=
 =?utf-8?B?dnVDb2FNbGVhN3ZUZG1lREMwbGxqWjhWWmd0anozN0htNVcra21NWVkxS0lT?=
 =?utf-8?B?K1NJK3Y3cFArKzF5RVZReDE5R2hlVGRPdGRKYkx0OFc0OVYrUXNaU2JBRUFD?=
 =?utf-8?B?bHY0cm5JdkgzanRVQ1cwUXBBTkRNVW15UDRpVkFGMDU1amYvckN5amNEUkZB?=
 =?utf-8?B?bUt1Y1pvd2FhdEh0cWNlSmMxcEFHZjREU2lFaHRsMkJDeVRSOWVvNnJFMklC?=
 =?utf-8?B?ZitnYnR5OXdFbGw2RDJWUFhwdmJaU0ZEejhaTnBUajlsTjFDbit4Snl0SUVw?=
 =?utf-8?B?ZjkxVkhNWVhQRFVzRWdWcXkwTThacHlWdnRDWlorOTh3Z0dLY3RsVDhRVXdD?=
 =?utf-8?B?R2NBdXQ3REI3VVdueVhMNVMycmRhUmdyRTFWV2RNc2RQUlBSazFtWFlPdkNT?=
 =?utf-8?B?MXl5QzdGZWZiRmtwWjNsTncvVUxqb2NXL3VONkpIbDNQZlZoNFhheG91SUx2?=
 =?utf-8?B?KzRBZ1M2T1FFM1ZySFZPTDR2Ym5rZFcvRWZrTDRudlp0emFFMXZvNXlacmFm?=
 =?utf-8?B?bnZFb2QvWFhZNStEeDY5ZTJRZGw3bVJPdnpxYVBlMUdYSnZUcVd2RHo4M245?=
 =?utf-8?B?aDZMUDhOT3pwd1ZwNWVCWG80bzNyS0htSy80bVZGNlkzR2IrVTVjdURWQjFj?=
 =?utf-8?B?Z2JjZ3VmZnpZbkplS05RQWIxRGVvYjNjTzQvbnYyanVhdUtmZlpGaVVhQjhP?=
 =?utf-8?B?cFhxY214amhzR3VJdmhOQ0I1VE90bkFmcGFFMHpqT1F2QnMzemdyQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b65a17ec-835c-4731-7787-08df3b12b5cf
X-MS-Exchange-CrossTenant-AuthSource: CO1PR03MB7889.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 07:59:25.8819
 (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: S0aH74uNSVlMOfx3q2hxl9VRm1DlVMzknrOAySmKIcm6jSRiZNhVBNYE0AKCN0WGKl9/GHzH8gZueMLGjWhXHIhymXJwDsUxJ6tFuwZqDjI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR03MB7183
X-purgate-ID: tlsNG-720697/1793865570-F3EBB2AC-EDFB3B01/0/0
X-purgate-type: clean
X-purgate-size: 1473

On 03/11/2026 16:59, Abdelkareem Abdelsaamad wrote:
> When nesting SVM, if the L1 hypervisor has not requested a virtual interrupt
> (VINTR) intercept for L2, Xen should not force one.

I agree with the change itself, but I think the description needs
reworking.

The real bug is that Xen's interrupt window is the VINTR intercept plus a
dummy V_IRQ, both set in n1vmcb, but only the intercept is merged into
n2vmcb.  The V_IRQ in n2vmcb is L1's own interrupt for L2.  So the
intercept fires on L1's V_IRQ, and the host VMEXIT_VINTR handler clears
it as if it were Xen's dummy.  L1's interrupt for L2 is lost, and L1 is
told V_IRQ=0 as if L2 had taken it.

> Furthermore, handling this forced VMEXIT_VINTR can cause a pending L1 virtual
> interrupt to be incorrectly delivered to L2. This occurs because when the
> intercept is determined to be requested solely by the host
> (returning NESTEDHVM_VMEXIT_HOST), svm_vmexit_handler does not switch to the
> correct VMCB context before evaluating the interrupt injection.

I don't think this paragraph is accurate.  Staying in L2's context is
correct: L1 didn't ask for this exit, so L2 should simply keep running
on n2vmcb.  Switching to L1 here would be an emulated #VMEXIT that L1
never requested.  Also, svm_vmexit_handler() doesn't evaluate injection;
svm_intr_assist() does, on the way back in.

With the description reworked:
Reviewed-by: Stephen Cheng <stephen.cheng@citrix.com>

Stephen


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:06:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:06:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474137.1681321 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsUT-0006eP-IO; Thu, 05 Nov 2026 08:06:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474137.1681321; Thu, 05 Nov 2026 08:06:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsUT-0006eI-FR; Thu, 05 Nov 2026 08:06:33 +0000
Received: by outflank-mailman (input) for mailman id 1474137;
 Thu, 05 Nov 2026 08:06:31 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsUR-0006eC-Hi
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:06:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsUQ-002pCL-Up
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:06:30 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3905-e002-0a2a0a5209dd-0a2a45049556-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:06:30 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec38f8-b57f-0a2a45040019-d155dd31d554-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:06:16 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48e47347279so897768f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:06:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fecac1a1csm8357312f8f.12.2026.11.05.00.06.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:06:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793865976; x=1794470776; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=L6+Zl7fwUtq3UYi9FIJP2j29UMwyKYMiUj5q0PWhwR0=;
        b=BIxI8D6sqh8rg4yWLcIf0aPYZbek57ABhr7t+2ErUoRamnrTpnE6TcGM4ERu/lwmOR
         zfKA5Ikay4oett8YZwoAdIPmo6/a5Zo4tPE8CFyI71+Rs8wR0AKyuoo6HtFTQRqTblIH
         M7YzPoKseVuZCNlaJjFpmnBFlqdVLNYUeikVpyHKNSaNx4HeslCOnnuOuN4AWdnK9m/H
         jTYf59nmfeLi9CyPeeC41/mZaFAwXiKpwmDXe18ndWV1q5ikNWoJo83LBZqZWVOzlK3G
         eqTakz6pIvyCaszt/lJuhFDIvfxnd8WZScEVOtvXOaU1XptOaEfQ0P9xH/RTeUWXOFF7
         gkEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793865976; x=1794470776;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=L6+Zl7fwUtq3UYi9FIJP2j29UMwyKYMiUj5q0PWhwR0=;
        b=rjHUT3KZ407sFXUMst2VcRJihl1+HKVeopcWUce1vwwRX6+tVn4ZlOxUDAnb/Vl7l9
         +sp+GYZ9vyb/BQ2cEel8tg1kO0QyiKNm8lStRnNhLY96MuIB2ueUKG8qB3ncGQrDkKxr
         IPZdZY6w1vFy4dkSS7CkbXQHZDy8T1Vf+ZCrH8BMefqLfcvlyACYmP4srMzW9XZKAbcw
         HdnNawnzvidRKYL9VPEFk8WVPUc0QRZZ4NLDxH2KJGsB2aEGdppC/uY0mqrNk3hKeH4c
         yqdSoN8rtszrTPOqedxb5aNbTXm6tGljgG5HgWcn6lEJ+BVUpf3gkyJcZ1+cJQhFMzBl
         3biw==
X-Gm-Message-State: APuU4Z/yHLUurQ4ucDuLYIu6c1M5iqlBuye8W8Q3NN4CTWozkYF48yiv
	D54xkkxFvXYk+DUl7m8TqMk2Kg+JKnQgGoQg7fCfacdRd29ZNGo7GFmEKUj+31RFyQ==
X-Gm-Gg: AYBFou0mKo1g26aOtorljpUUv1xBQqnb1wi/2ooa+DgNVb2nyKnLiVCQOKCMTdOMtYz
	cBG6nCoKYTMmn1zVlr1cPAjNhjJPuv5GmN2j3wcXS+nsExgKTOvkcFwHPgbdAlkPB3RXxOMgqVP
	YSScNlxsdjMJ5SEPNBs72iCvre0dInAmLogYxykwbFfHYJoZligwqBVA62axm0w13rq0qMdJc2B
	v3xDlreMd6ak+G7dPkYTBx0hqg7/Zpnn1uYrApvqlz0BaPdDME3wMtcm15SZizdPsKk55u7jx4s
	ecwlxbgA35vkXnYXnY8tqog54a1ALrueX0+0Uu/nPcknfVyQACLYj2sOV8/Xwr3KlMYOcj3Nr6q
	WEQIcEHnFac4majEdcW9C8MpjkkZk6rFWA7M2oweYKM63mIxi+aJVEN0X70rF8G9Ijh0yXUSj3V
	9/ovo91vC1oJbEq22zL/QYmjdOdPBEdcU7k3b4YETB1BwV4wO14DCsT5uJRChQHfBVHzVeyMvOb
	GHez6DPkH6GoqkCZxTLkHNK2M5LqLkXhKFakvLyRi0v2Ay1rCsb4sqNccdrK/LWq/PjEBsWdsaY
	DN1R2VaELyS8lToExohBOttKO6/UpJAqXoFV5yu41PYiYkvzp17SxcTsbFV3Uy50KcjH2LfVMXE
	e7VAxYczUdheGmcw=
X-Received: by 2002:a05:6000:40dc:b0:48d:e61d:68da with SMTP id ffacd0b85a97d-48e6e2fa50dmr40296781f8f.20.1793865976428;
        Thu, 05 Nov 2026 00:06:16 -0800 (PST)
Message-ID: <ac9eb028-6585-4318-b0ee-e6c86624722f@suse.com>
Date: Thu, 5 Nov 2026 09:06:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <78cd46cc-84ed-46df-96c9-26ce97ed0da0@suse.com> <atEADbxD4mL_bXy6@Mac.lan>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <atEADbxD4mL_bXy6@Mac.lan>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1793865976-52AC8B50-8C08F2F0/10/78276251493
X-purgate-type: spam
X-purgate-size: 1071

On 15.10.2026 18:32, Roger Pau Monné wrote:
> On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
>> Why does find_memory() go upwards, while find_kernel_memory() goes
>> downwards? And why do we use the lowest part of the region found by
>> find_memory() rather than the highest part?
> 
> find_memory() should probably start downwards from 4G.

In the course of replacing that find_memory() by pvh_steal_ram() (while
converting to rangeset-based tracking) I learned the hard way that this
isn't possible, even if it ought to be. Linux won't cope with parts of
start-info (at least the module array) living outside of the first Gb
(in 32-bit Linux it may go farther, depending on CONFIG_PAGE_OFFSET).
See pvh_level3_ident_pgt[] having only its first direct-map entry
populated, and pvh_start_xen() also only updating that one entry. Which
causes xen_prepare_pvh() -> init_pvh_bootparams() to fall over anything
living beyond the 1Gb boundary. (.memmap_paddr would apparently have
the same issue, just that for Dom0 we don't set that.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:13:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:13:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474146.1681330 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsb9-00022w-Ai; Thu, 05 Nov 2026 08:13:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474146.1681330; Thu, 05 Nov 2026 08:13:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsb9-00022p-80; Thu, 05 Nov 2026 08:13:27 +0000
Received: by outflank-mailman (input) for mailman id 1474146;
 Thu, 05 Nov 2026 08:13:26 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsb8-00022R-9g
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:13:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsb6-00GuWb-Dz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:13:24 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3a9e-bab6-0a2a0a5309dd-0a2a4506e57e-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:13:24 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3aa4-195a-0a2a45060019-d1558036cd7e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:13:24 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a20bdaf39cso16081885e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:13:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fea181085sm8549278f8f.1.2026.11.05.00.13.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:13:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793866404; x=1794471204; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ilp1ZFuaFXFjQmjuHd3VoFXvmRpQam+c/MOy2R58vKk=;
        b=Y0khizxp8ZDcsNL/96SvX/L8QvowmknzF9DalJgWwXw+UEQgvlp6WoYJF+/Qq0D1b5
         TRGKKIvAKMz/Q2dCNmyQPC0aYk85Dnzq4ncbHcJTk9i+1AeaAi0p5OK+Wq6bGaCSMwHv
         cyrS8Rx0zxE1d8bTqf8RTOszYhaTS0EWwByrPdu8ygv51++uMUN2vBladIxZ/IX9HTtR
         9weoKNp/ZTYV8KcsQM4n67MIcKXsHJLQMmAKH4GL7PYYSKrWkBwrum4TfaMcdoFxyS/g
         J2J/cbO5UhfHWWHlmmsBzIp2+ftTBYaK+k+w4noB54E2P+0xEU0Bqgv8dPmHan03OHc0
         7t9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793866404; x=1794471204;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ilp1ZFuaFXFjQmjuHd3VoFXvmRpQam+c/MOy2R58vKk=;
        b=YuGRRctbIk5nLYoLXCzxKZVn1Il0ujmIug05jMNZ/okcwJiiVzubVgk0JdAuUsSvi7
         qhmjdWTMi5Ji1K6ItOWpDUhldH86pZPTDCYA1WSDqEhcWM6slw0y+9rKzgQ6hKyl4cIY
         2wGtHjQ4JLJwUW/WNlDZa9De9se0DiLYhOwhgPU+j5PHUJGa7uZSP8HEf42Xtqf+OLCJ
         FNsOVRCSgmVxAx5J+NBVeQKyc0LgmYh0G5DueS0SnOfgwOWV7/IOkdnR2yTk/j/RZPPC
         IQvSCLFrHXTWKCCcMyGYaHwcsUbuy54o6nRuhf1aLEOkJniZL7zKlipy2L7nRpc3Flyg
         tUUw==
X-Forwarded-Encrypted: i=1; AKwUvByV2NDHxGxwF5j7WKxmSMaWjGq3T2O9nkzL33wI9bcqw4OUBqJzSfjYOe/EJsM96oeEziJqhWZRijQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/4OyxpdzhW0nQjJHaBgUJyD9CsHDJ0vdUxF7vD1QSon72TsfPa
	/fsUysph4LlmzoGAAs9gZE2ZHsz37TewFTSOd3iwJut0iRZYDhZcU7NWPSVoPwiL/Q==
X-Gm-Gg: AYBFou0+TkHIfrWeBqEZshusVM2Ene9XK11Ue+CvVroZqN8qD64ggMbBDTeK9jueiJn
	FEgqo+2b5WqhsvfwaE7LYcIRjLcOlOHzNaHTg52+RKs3nqoESDfNt//+MCj8jXFssMttzgrEzTD
	XgxYDptyB1AXH1/hv1YlNfMp9YOE06qmnVlM6j26IoFnHsliVVk/B1OGRbIog1F8gKwTQ+Ivx4W
	K0I7w4C4XwS4/TWT+F68YqK46XdfJOCShauYPnl4YeOeNlpbbXSRxxSNghlEbz6i41llj2Q+AIG
	LLfwsPICh05cDlkB+JdJAg9EXp/l1BFuoBUpsA3pI/ZmRuMq5NmfKW4Q27igmLxeXf22VYjrajE
	GNge6Px1Hzvo4zN7NUvm/ixDY/uU8QpHzZR71UqEB+Y2/rGmtgpsaZmHsVd/IrTrKqJaVEI3d1H
	sKrv96uLh+24AdmZRqUInS3HUPJuNrxyLp/p8zaS7LpmlW1z3JnT3TTnJ/f6wu2MSohru/+6eRm
	gfHWrhigY6sTRV4RgVeDrvp8KpVKmj/TFG0sbWFpJJQda9YFTmEoAwce89F3SXQnqNrzUCEb3fr
	kO7ZnHxvLEYwh8UGMlfo5IcxbIxvp7P3haGMiXOOoHFcVyX4t57ivGY7p2LPsQG3yLO4D6o5jjZ
	ekSCAF2Txf3cgRxCI
X-Received: by 2002:a05:600c:5295:b0:4a1:e92b:ae4a with SMTP id 5b1f17b1804b1-4b3c3545146mr103805865e9.21.1793866403823;
        Thu, 05 Nov 2026 00:13:23 -0800 (PST)
Message-ID: <fdd91377-bcc1-4695-8cb7-b5db1f0f71ab@suse.com>
Date: Thu, 5 Nov 2026 09:13:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] libxl: wait for QEMU exit before restarting a domain
To: Jason Andryuk <jason.andryuk@amd.com>, Jiaqing Zhao <Zhao.Jiaqing@amd.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Penny Zheng <penny.zheng@amd.com>, xen-devel@lists.xenproject.org
References: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
 <0762b21d-3173-4014-bd43-fa2a9cef9c85@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <0762b21d-3173-4014-bd43-fa2a9cef9c85@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793866404-F6C7777B-042F08E0/10/78276251493
X-purgate-type: spam
X-purgate-size: 891

On 04.11.2026 18:33, Jason Andryuk wrote:
> On 2026-11-04 01:46, Jiaqing Zhao wrote:
>> The PID-based device model destruction path returns immediately after
>> sending SIGHUP, before QEMU has necessarily exited. When an HVM guest
>> reboots with VNC enabled, the new QEMU process may fail to bind the VNC
>> port because the old process still holds it.
>>
>> Wait for QEMU to exit in a child process after singaling it for at most
> 
> "signaling"
> 
>> 60 seconds. If waiting fails or times out, log the error and retain the
>> existing domain destruction behaviour.
> 
> 60 seconds seems like a lot.  Did you measure the time to see how long 
> it takes?  It's an upper bound, but maybe 10 seconds would be better?

Is 10s enough for it to time out upon disconnecting pass-through devices?
I'm seeing this happen routinely, albeit with an older version of qemu.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:17:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:17:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474160.1681340 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOseo-0002pU-Px; Thu, 05 Nov 2026 08:17:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474160.1681340; Thu, 05 Nov 2026 08:17:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOseo-0002pN-NA; Thu, 05 Nov 2026 08:17:14 +0000
Received: by outflank-mailman (input) for mailman id 1474160;
 Thu, 05 Nov 2026 08:17:14 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsen-0002pF-U7
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:17:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsen-001tVb-AW
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:17:13 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3b83-e002-0a2a0a5209dd-0a2a450c8d26-12
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:17:13 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3b88-f479-0a2a450c0019-d155dd2ded5f-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:17:12 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-49134c8509fso383623f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:17:12 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec9cd43bsm8367175f8f.14.2026.11.05.00.17.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:17:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793866632; x=1794471432; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=XtKnvmgSDaqlQwQ2TRsG1iT3rywgtoX+h12yW3Ak9ug=;
        b=awIrjvQOelgSBWHSNx6oG8AK09A/RxT9sfPIaHTHmxTiWsWPAJ8bJ8+q71fxVpyRIT
         EmRrx5uAXleE3RTry0E0YkmJghRY4tH5hwwIHKT06bu+XHFPPVcfgs02KAQLgXhfXpFV
         oltjIAWeOBwv0OKHzCa5lH+4nIVmHRGEp9Lmk6Mp/C9J04oNC1wZEXL9bYp10ga4pxm7
         wrhn8UgbY21tSD3tZfJsS1Dxx05HC/VLArs66eO/0wSXxziBNroDluG/ftUkJrGbx3bv
         8hMfsQzvKfwYPdb/nzsBl5wp2092XEMiGlW9C0uHNFFKGB4004eyv6iEZPHm1qaqH8g8
         4MPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793866632; x=1794471432;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=XtKnvmgSDaqlQwQ2TRsG1iT3rywgtoX+h12yW3Ak9ug=;
        b=Bz20YENjoAQYhd2krpZgNBsZKk0ywk4/leU0r2MZAdY3bHh49rjdTAf+20efRtB2R4
         8cLaXKFu+w/Lhup8/l4DQMKwssKVulUJhBZTBT7/N3HasXI7p3AU156o1dgy/vDHVctc
         z1KM2HpsZtQaNd8p8LmOuyB/sYuR3XnIU0X8JA7M6U4NMIRpEUcDIFn5IHJzvnpKyNiz
         FCFp4fK2hv8POrom9R1iF+OHuc5zAOYC9iHStEUv0e/4OE1eQucmJq9W3mUpiaSy+Jg7
         NIgtkVNVRWivmj6wgtHPepcZD7G3Ud5y81TAXe9yf9V9QWN6+9zegqRe0D1mdSakG79W
         IXzg==
X-Gm-Message-State: APuU4Z8NNMTEVTRvTtK3s/rvH0S9uLb/IsBD8XgoS0rGN4e2enAxf6P4
	e9SvRaJGzA8TGlyY8Cc3ljQwT7C3PiryooxAtDtCjn58P+51aVs6toDqt+dhuGzARQ==
X-Gm-Gg: AYBFou3R+ShBdOt6d4icRHt1S/slKbjgw7Hf0LvRkkEhIUczN7sWxgVHNNwfBjlxv9t
	7Kzib+q1GHwPqcXqm7VZsxOqoiCC8u6dm2rX5zk/amkkbjzA8ZasNQzZ4gA47+HuKHq66otqyeb
	AfNTY9B2LtJvbxSkb4wu3VguqYPcQG+F8Fcv4jm4ukgc1FafZkWQb0Yh1bQfGGu1gSCHq1RX0am
	nN0porJdJ7bOcgSzM056lnZETHtitwLdj0+VWtdk4Rd/p0Ue0EhGHbH2OwUvB977O8dBqFamK7e
	enderU60M0o7O0PAgK8608J+NErOw6yH3uHTC7+PKSCYgz48BinQL/q0Nf+TXWKDPEkCzIyOeek
	OX2wRwpsrWM6uYKpC03PvUsSE9KDD32HgEUKHvqN/Xqcqze/Y7ye8pFy86b0Z6n4manReTdMTHC
	SXd8kRSlxztSH3bi2pxWUJ/egqLMAcJyIDMMgwl+YcXlIuHj9dp3ei1gxqov/hryG/KLT2QEe+B
	zcq6+HxJ/xrGIMqfAQc8VsgnidwCpFXvN1mLjT+pPb48+DwgrgMJ13yl2raVBVjQIrasCJqXYPj
	xR28fHb0SvWHLDklpnonmYMvPJMCoBV8BTCraYcoXMrgn4ljYL8ueVdUoX7ZJewvnt50XLfBt5p
	NAKv0ybYfAIRlGMjl
X-Received: by 2002:a05:6000:616:b0:48b:108:48cf with SMTP id ffacd0b85a97d-48e6e30ba2cmr41055651f8f.25.1793866632088;
        Thu, 05 Nov 2026 00:17:12 -0800 (PST)
Message-ID: <c121b7cc-30c2-4ba9-b9c9-a52076d25f22@suse.com>
Date: Thu, 5 Nov 2026 09:17:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 23/39] xen/riscv: add helpers for decoding a trapped
 load or store
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <bac190288e65f82ef51d85e32c939558c21776d0.1790779209.git.oleksii.kurochko@gmail.com>
 <1792663384.8631fc262581453bbf619ec5b2062170.1a1631070d2000f79f@vates.tech>
 <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1793866632-02ADCA5B-063681BB/10/78276251493
X-purgate-type: spam
X-purgate-size: 2272

On 04.11.2026 17:38, Oleksii Kurochko wrote:
> On 10/22/26 12:02 PM, Baptiste Le Duc wrote:
>>> + * It is needed to decode a trapped instruction: the encodings which exist only
>>> + * for XLEN=64 must not be recognized for a 32-bit guest. Besides those simply
>>> + * being reserved there, the compressed ones are ambiguous: C.LD and C.FLW
>>> + * share the encoding 0x6000 (mask 0xe003), and likewise C.SD/C.FSW,
>>> + * C.LDSP/C.FLWSP and C.SDSP/C.FSWSP.
>>> + *
>>> + * IS_ENABLED() can't be used here as HSTATUS_VSXL is defined for
>>> + * __riscv_xlen == 64 only, the field not existing on RV32 in the first place.
>>> + */
>>> +static unsigned int guest_xlen(const struct cpu_user_regs *regs)
>>> +{
>>> +#ifdef CONFIG_RISCV_32
>>> +    return 32;
>>> +#else
>>> +    unsigned long xl = MASK_EXTR(regs->hstatus, HSTATUS_VSXL);
>> xl only ever holds a 2-bit field, so unsigned int would be better here.
> 
> MASK_EXTR() yields the type of its operands, unsigned long here (and 
> unsigned long long for the UXL extraction), as do the XLEN_FIELD_* 
> constants xl is compared against. Making xl unsigned int would add an 
> implicit narrowing conversion: harmless value-wise but I think it will 
> violate one of MISRA rules at least if build everything with 
> -Wconversion then it will tell: conversion from 'long unsigned int' to 
> 'unsigned int' may change value.

If we were to follow that Misra rule, we'd have violations all over the
place. Hence imo where unsigned int is sufficient for a value, that's
what should be used.

>>> [ ... 49 lines skipped ... ]
>>> +static unsigned long *guest_gpr(struct cpu_user_regs *regs,
>>> +                                const struct decoded_insn *di)
>>> +{
>>> +    /*
>>> +     * decode_ldst_insn() is what fills @di in, and it rejects an access
>>> +     * wider than a guest register.
>>> +     */
>>> +    ASSERT(di->len <= (guest_xlen(regs) / BITS_PER_BYTE));
>> Nit: the parentheses around the division aren't needed.
> 
> I can drop them but I think it improves readability here a little bit.

That's subjective. Personally I agree with Baptiste, yet project-wide
we don't do things consistently in this regard, and hence either form
is (supposedly) okay.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:24:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:24:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474176.1681357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOslZ-0006jN-Ie; Thu, 05 Nov 2026 08:24:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474176.1681357; Thu, 05 Nov 2026 08:24:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOslZ-0006jG-Eo; Thu, 05 Nov 2026 08:24:13 +0000
Received: by outflank-mailman (input) for mailman id 1474176;
 Thu, 05 Nov 2026 08:24:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOslY-0006j5-CL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:24:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOslX-002uZU-LP
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:24:11 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3d1b-bab6-0a2a0a5309dd-0a2a45029982-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:24:11 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3d2b-6ca4-0a2a45020019-d155802bc06a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:24:11 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a5b2be99a8so11797255e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:24:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b572bba207sm43981975e9.10.2026.11.05.00.24.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:24:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867051; x=1794471851; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=UsadRY9VxgZWlLeK0MYQmFI9+6Mc+MVXbOcw/PP301k=;
        b=Mj79ShiYbaS+EFLRU5+Oh0zwCnR5Xz/AObnmMRqpj7cLuaU5VDe8GTKbOCWVrtc1vv
         7rikJGbp+YkOSNgQIWCwpq3r5lTd+K8duFRkyEyPuqguKElHpT6A5SyM3hLdpD4bmIK1
         tRyJi5GOUQi8PBWw5gw03VyXupKHOamYIzYb1HwY47OlssnnI/8ftp4oQohlLdQKqt4w
         Kh+uBu5UjtD6pSvXxKPkloCT6/NS6LnxvIaMWeZ9sMjfXwwanCMnhFFLKYRzWN6ZC+ST
         AJR6akZb+dR9/yEjPxL4RS4Ep2rRAy6pnlXI9nV9LkLxipdIYG0OHVB8yS6XkdNXU2EZ
         DkRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867051; x=1794471851;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=UsadRY9VxgZWlLeK0MYQmFI9+6Mc+MVXbOcw/PP301k=;
        b=HzUt4d0Nz5U7LY+4B7I1cg/omsTW+ndRbXGy+TquvlcpSc6zCiIFWAbDxCEuX6ECC8
         VpfuN1IOxPL/Ss1qDh2eSHFwSrb5GLfgAaF4WDddHw7LafiZkFnyG2ZiPngj46rX3FN4
         meFZgDF5QD9J0hfwBT0Tya0Z/QPbLkVjKlNX2GxZL5RH2961gwWN2QPMaUhe0jAheH3C
         HortQC9TZsgcjnsqYojgwQuBgrKgDdDBMDlNUgGZTzecjTLx17eY2I5ZgG2SP1B2WkWR
         T1C57KN8IRPp3fcl3C8z5IjL1XzZ0JoXIenmpGs4dX+cdI37AL7Vvb9N9I/y/MHyTpny
         g1Uw==
X-Forwarded-Encrypted: i=1; AKwUvBw39zFX7zEG+8PmDoi2AdT4dfZ4HgE0i8g+dW1tUjz5oxdtJdV7Qc7DOPF7ZFPtstxJeqkUZ593lVo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+bt9SiEBcJm7PnwsQIZRbK/fZgYtOa7iGWidIm5J9YeDY9zBTM
	DblTK/5egfU1YOiEPYrsp1PQFP/qSYL9FltNaJHqnDhLCc/51VcKbjwCuohs8t7V+IMFTZlekH9
	KGC/z7Q==
X-Gm-Gg: AYBFou03d3sTgCel9b5tozJAM+Mq2dFNA3P7wB4pIA2CMqeLyb7fUBve3kzA0+lBTHc
	dtKpC6CosddyMfCAcxuMASGYNgvwhwTo72Eyu1Lp4k1dv3BFYABS0A7uc03vpjkGYtvvB8rZfCx
	FjGFr674r/pGLTTNRZLmIywS57aaK++kWfWsS7CHT7Angk7mpeMvJPU37NPGaIMXjmHLWU3Oqaw
	/KFlOTjmpMDs+1Xp8bujrGFXZm5PNo7/tS3Vx3wUPmB+xT2a6xCnsxw4IEDsp40fPaU9NPEuFme
	LEHa2wf639bc8olXLjLuvjSFhlh5Ia28eYe1c7udFpsCtRXY8P7Syf3gcXjwhzs6fiKSS6VXP89
	59Gbt9nbs7t9SXMLgKP/sCcjp1RrJmsqXieawcM8Tbkv7Y8EH5VHIU3uviDosJjxw662z0BEXVh
	EgB3D8dTTgyMRBrsVB1baZh0LmQ8jsR18f4V1D1N3Pxw36a4B3O7npvX2gbHNFmzWdbcqC5mIRh
	FwwFjxkSV3Onjylc6YlZndVllP/CBV5ZhdUG97y8+zvloTMVtEJbRd9DO8lk3q0B+hmvGzXLXum
	GGupEFu17mlbm2GX7l328tPpKJpWyG3hJXPDt8gDwZ7KVHvN4YhqsFzoiVmch5+oqR/yh5HfHhw
	kDJQrmmkii+bj42uZ
X-Received: by 2002:a05:600c:5249:b0:4a7:7f3f:6f8e with SMTP id 5b1f17b1804b1-4ac1228b5bfmr407523485e9.0.1793867050916;
        Thu, 05 Nov 2026 00:24:10 -0800 (PST)
Message-ID: <70db6d7a-5e48-4a39-8553-4718f7ccdf73@suse.com>
Date: Thu, 5 Nov 2026 09:24:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 26/28] docs: add coverage for svm_avic=
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-27-dmukhin@ford.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105013347.719392-27-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1793867051-F30B02AC-32C43C5C/10/78276251493
X-purgate-type: spam
X-purgate-size: 1336

On 05.11.2026 02:33, dmukhin@ford.com wrote:
> @@ -2673,6 +2673,27 @@ On Sappire and Emerald Rapids CPUs with May 2025 microcode or later, the
>  `ibpb-alt=` option can be used to switch to the alternative mitigation for
>  Intel SA-00982.  Intel suggest that some workloads will benefit from this.
>  
> +### svm_avic (x86)
> +> `= true | false | nodoorbell`
> +
> +This option configures Advanced Virtual Interrupt Controller (AVIC), which
> +is an extension of AMD Secure Virtual Machine (SVM) to virtualize local APIC
> +for guest VM.
> +
> +This parameter is experimental and for expert configuration only.
> +
> +Xen has mitigatations for the following AVIC hardware flaws:

Nit: mitigations

> + * AMD Erratum 1235. A hardware flaw affecting certain AMD Family 17h and
> +   Hygon Family 18h processors where the CPU hardware reads a stale
> +   `IsRunning=1` bit during Interrupt Control Register (ICR) write emulation.
> +
> +Limitations:
> +
> + * AVIC in x2APIC mode is not supported.
> +
> + * AVIC in nested virtualization setup is not supported.
> +
>  ### sync_console
>  > `= <boolean>`

This wants to be part of the patch where the option is introduced. New options
also want to use dashes in favor of underscores. Plus the default setting of
this option wants making explicit.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:27:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:27:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474183.1681365 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsoT-0007PQ-UF; Thu, 05 Nov 2026 08:27:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474183.1681365; Thu, 05 Nov 2026 08:27:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsoT-0007PJ-RI; Thu, 05 Nov 2026 08:27:13 +0000
Received: by outflank-mailman (input) for mailman id 1474183;
 Thu, 05 Nov 2026 08:27:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsoS-0007PB-MP
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:27:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsoR-00EwqB-SK
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:27:11 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3dcf-bab6-0a2a0a5309dd-0a2a4505bf38-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:27:11 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3dde-4cb1-0a2a45050019-d1558029bd1c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:27:10 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a4d7ae1ae9so15479895e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:27:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56ea592fbsm40601365e9.4.2026.11.05.00.27.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:27:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867230; x=1794472030; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=OD5MeTWOQNA/0unJRctIDKuVdl2OLNTcoi3pfsrCNP4=;
        b=Wg3MugOjm6s+Ju1MVkaG4vH0qj9YQBSTqTTTsA5JWWGOgNsXQ7qoUVU056dcFsLlFY
         BoUbwUlkUC2LIluBClnz7nz6vmiUVE44xYiEKrU4Bkd17Mw0sf3bTlDGDgkJxiuqlbDD
         eatrXUJeCRvR6mdHSbKUOLvZRtVG9zf6gCUAV4Bq1sGl7zfZaPMBdBnqcss6U0BC9dJb
         03hJOa7HTRydScSGldx50HkTS/tGRESartGtAaKKoVR3nktVMWbqYF2Ex3t9q5fpAbrI
         jNMqUYVF9m8rp0zoo/ZcXWacXOY2mPDQY9CFc1NV3NpY+mbHfWwZz1T8n1+1v57vJZce
         c4xQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867230; x=1794472030;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=OD5MeTWOQNA/0unJRctIDKuVdl2OLNTcoi3pfsrCNP4=;
        b=W/l0s9FMjc8GRGJqdramx4aXDKnal1vHVKaj3v2wtiW2GHuc9F8SNlupWpzxOc+pok
         dlLRCrQ/dy+pfFhWyb2f/rfBJoid2xJEDfNIY1eJ3CtOcmLFXklp2hPTYwb2OuYIdfjO
         kwF+Qdh7C25Ofu/zomJGV4sak2JFtk+LZYpbtSYI1sLGyFyW7A1Gd14oJAZL7D+Ry+np
         0e9tcGNnpdM4MfTfM2um5PCMEncfABq9VQF+EuJfgOInmdp5OmqooLwbwtu5mwyxbHYK
         P382BnGPB3ZFlABOaI4gfV66wdwXZq3z34kMISj6S+zy4jbMtWUJiS9Z8ckcNVhFEy3N
         qXnA==
X-Forwarded-Encrypted: i=1; AKwUvBwA1vD1w4UN/XNJu5QiSQYIJGl81ZbTLvsSPxYs29YxXp1YzHxDD4cFhryyOeQ6fSBV3/SKLruFeTo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+eyfL543dFBGOBl0BxAVlLgw6ycJTFmBQ23iV7m8hhbUXia6HJ
	o4DhJ3t/55ePgyf1TqVo+ia77UqW6w5+bRkE7pmuyIhJeB1YtoI9VRP5oI0/4j19MBJLZ2EVdoT
	dE+prEQ==
X-Gm-Gg: AYBFou1EnC6BMztaA9dlFHvZiRE1siCmurosXdYnc533K/pwmn9IbiO2TA51T2+YWPB
	rsRErMV0LvOYZ4kCbFISR9aUGFip4abhMuOnCgM65JynuH+fy+HG/YNAXqjRSFwXvMCvLLaK0ZY
	+xbvzQ1ykxwHxXN590dG1rNgHbk1gVeRa5z2Fzos5uLeS1X2bpXf1fnkSp4OuUMvOkxRIdoV1Rw
	Zjwhmf2pkXd8KEabP+7ir5nnjZrmokMBgtM45PUQLcgOb+VE3CLT4j5sjHL0A+CishcFUbfW1FK
	w66cAAytuib9HV//PONuPTnTK+ImMBpRrzaQF+u69S1UarT4SR7t6DRRCooEicvARK+IgO889JS
	LHrKXISKMofP3BFlhck3ojQnYHx8j4EsSS+pXhVk4ue4fVDHZMvhzmp7e2Ig/jMPZO3EoTDDp4k
	PfmSYZwSImd2dplwWiDM4Y03T65Ch8ng3KnJF5R18GSvLtg2kq5WpFxqWAD7Nvw+bMOqmNm60JG
	W6W+WPRuitU3wBUX4k9jn8g33ULAQbI5BgU7vwMG9lM7gSpbLh9seAk4PUyZqTrKQFLhiiKFGqy
	/47Rlq8pFvGtBBSwjmgTpmtIjtKZX0hGYl8cOt4GPYYQ/p48QLyUiI7UEilugaqHQ891zntlQTy
	xgafnvKJ9z148J9p0
X-Received: by 2002:a05:600c:46d1:b0:4ab:cc03:7f60 with SMTP id 5b1f17b1804b1-4ac18993780mr403393425e9.18.1793867230022;
        Thu, 05 Nov 2026 00:27:10 -0800 (PST)
Message-ID: <981e549b-6445-4947-968f-644cca5f81b5@suse.com>
Date: Thu, 5 Nov 2026 09:27:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of
 open-coded 0
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-13-dmukhin@ford.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105013347.719392-13-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793867230-243112A1-5ECDC4F6/10/78276251493
X-purgate-type: spam
X-purgate-size: 425

On 05.11.2026 02:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Use the symbolic value in ack_APIC_irq() instead of open-coded 0.
> 
> Also, correct the EIO -> EOI typo in the constant name.
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

Looks like this is independent of the earlier 11 patches, and hence could go
in right away.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:27:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:27:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474187.1681376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsoo-0007mG-Ab; Thu, 05 Nov 2026 08:27:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474187.1681376; Thu, 05 Nov 2026 08:27:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsoo-0007lO-5V; Thu, 05 Nov 2026 08:27:34 +0000
Received: by outflank-mailman (input) for mailman id 1474187;
 Thu, 05 Nov 2026 08:27:33 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pierrick.bouvier@oss.qualcomm.com>)
 id 1xOsom-0007ke-RN
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:27:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsom-00Ewwj-7m
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:27:32 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pierrick.bouvier@oss.qualcomm.com>)
 id 6aec3def-bab6-0a2a0a5309dd-0a2a4509b0c4-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:27:31 +0100
Received: from [205.220.168.131] (helo=mx0a-0031df01.pphosted.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <pierrick.bouvier@oss.qualcomm.com>)
 id 6aec3ded-be1a-0a2a45090019-cddca8832c64-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:27:26 +0100
Received: from pps.filterd (m0279863.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A56TxnG4138306
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 08:27:24 GMT
Received: from mail-dl1-f69.google.com (mail-dl1-f69.google.com [74.125.82.69])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4hrm9v0he2-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:27:24 +0000 (GMT)
Received: by mail-dl1-f69.google.com with SMTP id
 a92af1059eb24-1383723dfddso2861909c88.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:27:24 -0800 (PST)
Received: from [192.168.1.199] (192-80-163-190.dyn.novuscom.net.
 [192.80.163.190]) by smtp.gmail.com with ESMTPSA id
 a92af1059eb24-1b245c1c127sm14154206c88.6.2026.11.05.00.27.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:27:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=qcppdkim1 header.d=qualcomm.com header.i="@qualcomm.com" header.h="Cc:Content-Transfer-Encoding:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=google header.d=oss.qualcomm.com header.i="@oss.qualcomm.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Content-Language:From:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
	cc:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
	AGN8kwgakg5OiXRUbfKCSwJgdB2YehlHkW5tpwLRG6c=; b=fiiXmDmoIyy24Bni
	sMCaR5DgQufd1AUeMVRlvmqfRCx8usfGB/QhBBG5YCSJI+amrKGxMYhG6O0Lfbrm
	Fji8kOAzlF+ZdqUe/A/kQ2VdNM+ZO22eEgzSvneoa38hqfAuj6+4ckBwOB3NdJQm
	tFAe4IDNJO13LKqvQTEJ8rQOfDD0I/KRu26xcG/k4tQDrM9mFlXQCo2zM6kLWD+K
	xzMK54S8Lm3BUwfg2aL5lk48KFDcUlmD8/TnJhUVBuRDJnca0LzP+89ndGyA8IZm
	vvkjGPKEifcaYAJFz+yndkyYVxyH/6NsDQEY1ltb0UsVv4Kar4dwiojBS+ST9qqh
	iR7seg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1793867244; x=1794472044; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=AGN8kwgakg5OiXRUbfKCSwJgdB2YehlHkW5tpwLRG6c=;
        b=Ysu9iJ+BPWhO+ZIpRY/kmuzj3ccbJBVkSMIybuq2C7yy+BIsAbIz2k7DUHydpTRTLG
         zJIPw5gKQytvd0bOO5EwNBXSB3s0gd3/eoZdljn1IMojarZG5otJxZtURQvL1Slg8byC
         ikWF6vKuUF5rQ+BwPlwWVJUn1ELQ+I55B7CwtsZvhi1y5m5dWDzR6DKpUYBog/yaIXfP
         Q17Qv/b3UssTaf+Df4DnZ2dpb5opzNpEZD/Ve2hat+4s6g8+FolizJQDI11jxvY5OP22
         hp8suRIZlETxhT+vaI4fmyxyAMX3NgqmTmhkKO57TfviHeac23Bbm/JIdA/zq5LKbbO1
         jALg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867244; x=1794472044;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=AGN8kwgakg5OiXRUbfKCSwJgdB2YehlHkW5tpwLRG6c=;
        b=L0XT+H/xLyT08TnHJCq/xEc9+PcG2NuHyN0OWs2NCjVa3BeWx0gMDRRTY65wLcxm4m
         uuBDtD0Nwv/OEvSLH5ugiVFIlcD/uyTWqI6tFWlHpkL1gbrr8ekqdJ1TFOAIabaCgbnD
         BSwhr60wU+Yr33VUtUd7dcxx/tpL7/IPcPa9oIg6zwGJy+e/rr9uCzUTeJHFryjrTgr6
         n2BR4dX04etvO6+QkWfxSgYFEa+1wlDrhKB2+u3XpZg1od3W3QioDNm8u8SW9TAG1KQY
         o8MGyPUOy6wMmaef4iakQkCiP2pZ98OWdR3xjLznxA7NM5nUkx8HwzQBOObKYOBg6mHX
         y7Bw==
X-Forwarded-Encrypted: i=1; AKwUvBzvUP+Aaqzu1kKVwrqyM1Uujgsppuf1Uzq9yFuABYv9BNw7hNnQacnkgvFBrQmSrDuNMXgHLh5dMXI=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8Mq0SA/+eD0J5eesSTc8mUYon8BhmwHjnCZ2mGwcKHbqUbtLEL
	TqxI4+JFieyKuG0r01Uk0SgJBdvx81H/YxioPYwnca1S6H4/IDyoV7qzN2LK1bcD3HE6Puw2itq
	xcNLNY2SBNfKJrx4M9F8RCjG5HLE4rf7o48P61zA8rAi3rdKfDZjJWJxzgxC55QNnVtXjiA==
X-Gm-Gg: AYBFou3gxeEDZ2vPxUpenEglk2gxgxin0RpouIk/GH4Yixh+y/nmcQUihCojHuhLWAn
	qMlLROVjGAUz8+veNCGBRz/x5NZMN5sHhzDAmG4IjPRd3XQuP2Exn+QLIKU8iesimmGTvLcT4Eh
	AMdOdSGZllODm5zR5VStk9bjeHOpZqzojEo89uT0PaS7BXmw0e87jnNusUtZqjsRFiMjaPuC7rN
	UvwABpgmmiY9FA+z8RMRRN1ydecxh/gc2RRyQKXOpf2+hzeYa7Rk7XuzKHE3O+Vr7dahE/fQHek
	G6w4KgsSrsGllP3m/rGsA/MIT8zfMKAcVbMDhzmjjcAqQoY6bWt/4C8po3ITFwTbjSJN07KrIRd
	s1Chmy3E6YggaFNtUalTJgN6W1mpcpK/AxGha1v3zcb1NvRWBYhhfmrqT9s6T+kpQkfqcdjrlha
	rkcKJgjBUU8kWyOQxuCFR9VVl1OxsSB5u+kjnEFPDXEQ==
X-Received: by 2002:a05:7022:92b:b0:144:fb42:52 with SMTP id a92af1059eb24-1ac5de4e892mr32994015c88.28.1793867243567;
        Thu, 05 Nov 2026 00:27:23 -0800 (PST)
X-Received: by 2002:a05:7022:92b:b0:144:fb42:52 with SMTP id a92af1059eb24-1ac5de4e892mr32993931c88.28.1793867242680;
        Thu, 05 Nov 2026 00:27:22 -0800 (PST)
Message-ID: <45433754-3cea-41fc-9f45-65a328d0efca@oss.qualcomm.com>
Date: Thu, 5 Nov 2026 00:27:18 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,
        Yonggang Luo <luoyonggang@gmail.com>
Cc: BALATON Zoltan <balaton@eik.bme.hu>, qemu-devel@nongnu.org,
        Anthony PERARD <anthony@xenproject.org>,
        Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>,
        Philippe Mathieu-Daude <philmd@mailo.com>,
        Antony Pavlov <antonynpavlov@gmail.com>,
        Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Subbaraya Sundeep <sundeep.lkml@gmail.com>,
        =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
        Max Filippov <jcmvbkbc@gmail.com>,
        Niek Linnenbank
 <nieklinnenbank@gmail.com>,
        xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org,
        Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org,
        Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>,
        Zhao Liu <zhao1.liu@intel.com>, Jiaxun Yang <jiaxun.yang@flygoat.com>,
        Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
        =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>,
        Thomas Huth <th.huth+qemu@posteo.eu>,
        =?UTF-8?Q?Cl=C3=A9ment_Chigot?=
 <chigot@adacore.com>,
        Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
        Yoshinori Sato <yoshinori.sato@nifty.com>,
        Frederic Konrad <konrad.frederic@yahoo.fr>,
        Palmer Dabbelt <palmer@dabbelt.com>,
        Peter Maydell
 <peter.maydell@linaro.org>,
        Chao Liu <chao.liu@processmission.com>,
        Sai Pavan Boddu <sai.pavan.boddu@amd.com>,
        Alistair Francis <alistair@alistair23.me>,
        Huacai Chen <chenhuacai@kernel.org>,
        Aurelien Jarno <aurelien@aurel32.net>,
        Gaurav Sharma <gaurav.sharma_7@nxp.com>,
        "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
        Richard Henderson <richard.henderson@linaro.org>,
        Alistair Francis <alistair.francis@wdc.com>,
        Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
References: <20261030151539.1872-1-luoyonggang@gmail.com>
 <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com>
 <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
 <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
 <aunnuwhsx9ZOOXBX@redhat.com>
From: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Content-Language: en-US
In-Reply-To: <aunnuwhsx9ZOOXBX@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDAzMyBTYWx0ZWRfXx37ZVEriU5sL
 q09l+VPyEqW1yoyk482w4nrIyaQXu9CkidqGiYXnvz3zfXJFsCtmbRWihJ25QuaJrgAiMBy5edI
 v/0riDGc2kLpcsGJQ68ReaddBrPfCP0=
X-Authority-Analysis: v=2.4 cv=KrHYSmWN c=1 sm=1 tr=0 ts=6aec3dec cx=c_pps
 a=kVLUcbK0zfr7ocalXnG1qA==:117 a=9852oil1ID9t5xBSyQ/BEA==:17
 a=IkcTkHD0fZMA:10 a=zJRp6_cAMcgA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22
 a=20KFwNOVAAAA:8 a=sYqyBgSLRBUY3L6MHRUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10
 a=vr4QvYf-bLy2KjpDp97w:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDAzMyBTYWx0ZWRfX+V+fu/AEVDX6
 1duki/vbsvwEWYK43N4dMBtWuZOBNdnWXuIUIIQzVDHOSuD4I4+DcAp4Si+dPK+UPwvvSu+gp70
 CeLnkwzefg3Lkfc9Cg4Ep8or53dHGyfUurqN2XacwVvKRdTojfG4Gu0KRDTUkK8WLUsm4pT//8I
 6BNoJ8CcOXNEJq4c24SfWtMBI4EY8E/5kcZLqdPdBTEYStBibILwbUdNC2T0oojKfx07GwzsXDf
 9Zk5m3QlG6dBEWEiaelxUpdUyH3fpQhJVHreMOBoABQINGajuPAcgZhgRooD7wE+MYiwqk9ib2g
 sPQaKiFxe5jq2sBdcaVmR0tCJlAqmJvj10hasinO7+2x40Xtn/AQBcploKPjcMnGLATq4rPmotJ
 TcKk3r0/uIB/7nlmSdfs3Kgnerq/7m0zAt2wi+e1E7kvVPU/e4Os7k6eeIDlLRahyUWQsGP2S8D
 spuSQv1Ul5g3p8JLjVg==
X-Proofpoint-GUID: n2uIxPlhMDvV7tHMn9xGNUf442_3gNjo
X-Proofpoint-ORIG-GUID: n2uIxPlhMDvV7tHMn9xGNUf442_3gNjo
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_02,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 lowpriorityscore=0 priorityscore=1501 adultscore=0 bulkscore=0 suspectscore=0
 spamscore=0 phishscore=0 impostorscore=0 clxscore=1015 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050033
X-purgate-ID: tlsNG-bad1c0/1793867251-BD0CD034-E351B032/0/0
X-purgate-type: clean
X-purgate-size: 5043

On 11/3/2026 5:55 AM, Daniel P. Berrangé wrote:
> On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
>> On Tue, Nov 3, 2026 at 9:23 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>>>
>>> On Tue, 3 Nov 2026, Yonggang Luo wrote:
>>>> On Tue, Nov 3, 2026 at 4:16 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
>>>>>
>>>>> On Fri, Oct 30, 2026 at 05:51:44PM -0800, Pierrick Bouvier wrote:
>>>>>> On 10/30/2026 4:09 PM, BALATON Zoltan wrote:
>>>>>>> On Fri, 30 Oct 2026, Yonggang Luo wrote:
>>>>>>>> DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED hide the TypeInfo and the
>>>>>>>> type_init
>>>>>>>> function that calls type_register_static(). A later change needs to
>>>>>>>> pass a
>>>>>>>
>>>>>>> That's the point of the macro to hide the boiler plate code.
>>>>>>>
>>>>>>>> target mask into that registration, and the macros have no parameter
>>>>>>>> for it.
>>>>>>>
>>>>>>> Couldn't you just change the macros to take that parameter instead of
>>>>>>> expanding it everywhere?
>>>>>>>
>>>>>>
>>>>>> Problem of macros is that they don't have default parameters, so you
>>>>>> need variants for everything:
>>>>>>
>>>>>> DEFINE_MACHINE
>>>>>> DEFINE_MACHINE_EXTENDED
>>>>>> DEFINE_MACHINE_WITH_INTERFACES
>>>>>> DEFINE_MACHINE_WITH_INTERFACE_ARRAY
>>>>>> and now would need a new variant, with variant for other existing ones.
>>>>>>
>>>>>> In the end, it's just simpler to remove this and add the boilerplate.
>>>>>> It's written once and never modified, so using a macro just save typing
>>>>>> those lines once.
>>>>>
>>>>> For each machine, it is only written once, but we add machines
>>>>> over time, and every time a new machine is added the code style
>>>>> is slightly different. We introduced all the variuos DEFINE_*
>>>>> macros for QOM to better ensure consistent style and usage as
>>>>> new code is added over time.
>>>>
>>>> I understand that the DEFINE_* macros are bloating because of this.
>>>> Indeed currently the only two macros used are "DEFINE_MACHINE" and
>>>> "DEFINE_MACHINE_EXTENDED"
>>>
>>> There are a few machines using some others but these are the most used.
>>> That suggests maybe we should change the convenience wrappers to match
>>> what machines need but DEFINE_MACHINE_EXTENDED is meant to be the one that
>>> allows all parameters which should be rarely needed.
>>>
>>>> ; each time people want to add a new attribute, the macros is twiced.
>>>
>>> Not necessarily. The SECURE parameter did that to preserve previous
>>> behaviour but if you add new parameter changing all callers (which is the
>>> same as expanding the macro that would also change all callers) then it's
>>> just a new parameter added not changing the number of DEFINE_MACHINE*
>>> wrappers. Rearranging the wrappers to make DEFINE_MACHINE_EXTENDED used
>>> less is an independent change.
>>>
>>>> And the usage of DEFINE_MACHINE_EXTENDED is rare and can be replaced
>>>> with DEFINE_TYPES or TypeInfo
>>>> and be more explicit. When we used as macro parameter, we need think
>>>
>>> But that defies the purpose of hiding the QOM boiler plate as much as
>>> possible. New people are confused by QOM and it's easier for them to look
>>> up documentation on the DEFINE_MACHINE* macros to see what parameter is
>>> what and not care about how it's stored in QOM TypeInfo or what is that
>>> at all.
>>>
>>>> what's that parameter means, and for
>>>> TypeInfo, we can directly know what that member is about(because we
>>>> are assigned with the member name).
>>>
>>> The parameter also has a name and documentation so it's not simpler to
>>> look up TypeInfo than look at the macro definition or docs. In fact it's
>>> harder to guess from TypeInfo as then you also need to get into QOM.
>>>
>>>> That's why I suggest keeping a single DEFINE_MACHINE, just like
>>>> DEFINE_TYPES; as they are the most
>>>> used macros(and simple enough), and won't suffer from changes much.
>>>
>>> That means exposing all the boiler plate for all machines other than the
>>> simplest case. I think it would be better to keep DEFINE_MACHINE_EXTENDED
>>> but maybe rethink the existing wrappers and drop unused ones and maybe add
>>> new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still keep
>>> the boiler plate hidden.
>>
>> Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE_EXTENDED
>> and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
>> "targets" or "arch_mask" parameter.
> 
> Given that we don't need to do general per-arch type filtering in
> QOM, we could just move 'is_available' out of TypeInfo, and into the
> MachineClass, so it is a regular class level property, which can be
> set in the class_init methods, and thus avoid any changes to the
> DEFINE_MACHINE macros.
>

Some cpus need it also, and it's used for filtering purpose at this time
(to avoid duplication at registration). We already depend on this behavior.

> With regards,
> Daniel

Regards,
Pierrick


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:28:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:28:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474200.1681384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOspQ-0001YL-IA; Thu, 05 Nov 2026 08:28:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474200.1681384; Thu, 05 Nov 2026 08:28:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOspQ-0001YE-E0; Thu, 05 Nov 2026 08:28:12 +0000
Received: by outflank-mailman (input) for mailman id 1474200;
 Thu, 05 Nov 2026 08:28:11 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOspP-0001Y0-Ua
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:28:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOspP-009g7w-Am
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:28:11 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e0c-8faa-0a2a0a5109dd-0a2a4507af9e-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:28:11 +0100
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e1b-b4ea-0a2a45070019-d155802abd81-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:28:11 +0100
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4a4d7ae1ae9so15490855e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:28:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56b78d656sm54569295e9.0.2026.11.05.00.28.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:28:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867291; x=1794472091; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=W3kBeTVyBcCE5oGMZpxlxDy7FshH5xsThhUlSFWeM+Q=;
        b=D6AopTyuXBdN/3jT1W+FBqrBs4RP/h//pHHNnlaUN9dMMlXvo/HihcAdJHSuYFrq3k
         Ss8gcnFEHyG5EGGgKjz+KKyW+SNRR4Q2fH1XP5X3G0ha4DzcaY1vEIQVSby1urhQkz+I
         vNiAy43znzu6ZLQPNZy9ybg/Pc5tR0ZPAHCUztQGE7tLaukGjbLyUgMksU/kXBOx8mxo
         /7ychhtN1iTfuQRwzmYLPSBTc2MiSwwCX/905dXBKptPkG+VNYp/NuaLsybUy+NM3LZL
         798ae7HjofOUzCfIYttuzYT2uUdGS3uymridrugRdQ5xH8qr+d4v/yrkzlluQXKQYTak
         GtIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867291; x=1794472091;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=W3kBeTVyBcCE5oGMZpxlxDy7FshH5xsThhUlSFWeM+Q=;
        b=k4jxblLmUwGdupVT/j1AsRnJMxFqaFrSA/BsL4DYYIrnQnsKnelHm9q8U9GQnEGb94
         /6/rhpgFWT7Gcr3R/oKNAU2KNG8bUC6zQL4WdegqLGVnqgg4PZDIWXxHtJqef+pAL1rC
         bAst67oxjA7VErGXjB/TxtNvq53y+zyZCKqf2eCNIxOqYOorZlbjs8trLiJV5iAdQcc9
         SRYP8wFpLyxYjZfWzRQmHQzTdBmeLUqAqZ3LDcCCvD7q47SimnhnEdihDHw0W64PjEi9
         lR2fOBwYU/u+rXuKsB+ZVnSzPy5XZP3UjXA36jKyVhGzJ7oRsh6dzI0toWXvOVDEWdpP
         ockQ==
X-Forwarded-Encrypted: i=1; AKwUvByy/pL8aDu9+F5boGgadoY04Ud/gJnbPtxN7C4GYyf+3xhr3bovwzEe1XxLfE/8F7+IJKXRhwD6NvA=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/HeBK3nbB5CqvSay2uexBXEQ/UuudtJS1L3Bsb6H7HN4RmEqaO
	/7oIqnF2s8/KqGMext92o+c6eTb4yac8jZG2kVEi9FYkDFYqLKPLrDyEjE7rwsR+sQ==
X-Gm-Gg: AYBFou1T4zcHNx7OmOvCqGYcx/nWv297g4TnsZ0ISlo0eMxl0jL8VQqQ6hAdWUZnnJz
	2UU6nA+cS9U93fwsKH/2TI+FegaXaU3xE4mMZacC07MaNRwFvrxgmYQt+XCdFF02s3muXhucQwD
	qlOyC6qhRKYICLwFw8MeUgD+yAcIwqPFbZGHZePgRUnw28R4ezl1VFCQRLuSUyZgP32Ltis5rkA
	LLAZm2amG1eJn3E/RjdQS+9kefXGtelFvXJkd7TMW60eRK/uIogLA6ILTUG4UJFtZ+yOtC+FK3+
	CsKeYd+ikZ+ZhD6/Sjb3bU5hdYLuFjNiywhlUxKt2ZFsebSs1d/DwtDITFQwyiUja2OAYwovYMW
	v/XXl8ez/BLPkrvkyn1Nmwjy/Vb/x2HEs2VEBXgev3q5ixBbECB/v/ev3jQsUYMmiSJM/UvCIaK
	dny8XbrMf+OVLBs1T4czosLKleRbmfbQHGYSQv0/HwVHaissIRrTxY/THvQxaateCgu+Mgswjwh
	NpL1lIqPJe9XBBqnKSidKlKlCZzz6oD/27ywbgdA5mW3C4EwbIlKj6Vf5aYrsYVNRen0udH+4o2
	I1oo2pJF2yAj5dDdy5TkYsdo50nPJberRkVd01+Kw1bONLHPNLUSR7hSIUW8dBysBgDj1hSyL2S
	SwwtMG250ieT4vDE=
X-Received: by 2002:a05:600c:8116:b0:4a2:150f:160f with SMTP id 5b1f17b1804b1-4ac1913eecdmr398648835e9.25.1793867290756;
        Thu, 05 Nov 2026 00:28:10 -0800 (PST)
Message-ID: <c3a080e5-c6ff-44b2-9f8e-abf1afb87e71@suse.com>
Date: Thu, 5 Nov 2026 09:28:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of
 open-coded 0
From: Jan Beulich <jbeulich@suse.com>
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-13-dmukhin@ford.com>
 <981e549b-6445-4947-968f-644cca5f81b5@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <981e549b-6445-4947-968f-644cca5f81b5@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1793867291-35CC7AE4-8D595DE2/10/78276251493
X-purgate-type: spam
X-purgate-size: 485

On 05.11.2026 09:27, Jan Beulich wrote:
> On 05.11.2026 02:33, dmukhin@ford.com wrote:
>> From: Denis Mukhin <dmukhin@ford.com>
>>
>> Use the symbolic value in ack_APIC_irq() instead of open-coded 0.
>>
>> Also, correct the EIO -> EOI typo in the constant name.
>>
>> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> 
> Acked-by: Jan Beulich <jbeulich@suse.com>

Oh, actually: Only with the typo that you correct in the header also
corrected in the patch subject.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:29:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:29:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474207.1681394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsqF-00029a-Rq; Thu, 05 Nov 2026 08:29:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474207.1681394; Thu, 05 Nov 2026 08:29:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsqF-00029R-NP; Thu, 05 Nov 2026 08:29:03 +0000
Received: by outflank-mailman (input) for mailman id 1474207;
 Thu, 05 Nov 2026 08:29:02 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsqE-00029C-Sq
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:29:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsqE-00GxHG-9f
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:29:02 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e3b-bab6-0a2a0a5309dd-0a2a4502ee3e-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:28:58 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e4a-6ca4-0a2a45020019-d1558035e53b-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:28:58 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a207b02a2cso10493465e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:28:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed084f92sm8655845f8f.29.2026.11.05.00.28.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:28:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867338; x=1794472138; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=m2xK568DGrbnDDLTLSdZsVg+YUptHoc1iHIVKcxqDR4=;
        b=Lx604v99SzyxghM6noi6h62OeeXGgTmnWuyc3wSnrNZkYMbXmp8InI1m2sC+cLeTvq
         MjZqe1l6T6LEBgPpCEpOwaljIxY/TqZla6IAQ/sIXNtMUofiyrPzU++/MzT1+T/IopuQ
         f2mnzuPn1NmRiR3/Id7civ/ZjsAceEHsJCNi9VegfbT+ePwq4LHGYr5keBvgmb2MD++x
         HDKfbgIZkyrcojZXwRaBDFg/6Qm5sWV+NUR5i0UlyjekK1BLvw0xiHs8xYcaKJpMCNf5
         xWeMBmVcS4NYty6zkCrey3ny3jMnrRLMeMg8XBxSFijIguz3MWMfM35ULXhbKvjtVT8D
         f8fg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867338; x=1794472138;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=m2xK568DGrbnDDLTLSdZsVg+YUptHoc1iHIVKcxqDR4=;
        b=Tg+7IF7s84N/3MqqwhK1/NaHI2CR1UwAd0v9vKFTWPTaSsVUGypJfENXp54q+W5kgc
         1K6MUp9SP8JekPWK9KnGhxZi0finZ810SqREqwhjhtfNmcoY0uuC5Q9i5oI089IhTXZ0
         ZvGH273iw/5tkofEGfhsNX9OqaSFqXu9pghjvSEbt28B8kVsZDR1zxUr/H6CtG6vP8ol
         MoBy3ADyu0M0O9l0PGi8x/E9zIJy5jlg0/1nryD1Dz9o1ScWsaratDO8ewfs8siNhz6O
         jn0VMLgnQbMsqmNDPw932kT9TQaqkeHImTrIO6x39EGxiK1gyewguemh3NVDST50w+dG
         U7rQ==
X-Forwarded-Encrypted: i=1; AKwUvBx9P8rAzV6sYDhUDeuL+P2e8+LS8xyb8gPxj/6cg/ETMJE6RaU3ihyVdB3+34C8l8BBYBjmKzQ9uMs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/T2L3QKxgO7f2Bl40PoEeln4t3QDpRCkDOP4QpX1QDbuNDDxYh
	DjYpP4CK+6snxSeKlg6tsIh8D69VMTM+KG8YZ4zzIgyuwhjOnHBxv9vJ4uk7Mo9rYATvmzNrAQV
	AtMymRQ==
X-Gm-Gg: AYBFou16Kdtw5oi5S5YTMYNnsn5COZKfnPRrMxpe1ruwBt6KThXPuCvaIIE0f5deWvS
	AP2VwLRNOzb0BCT+Ww/mNNQW5XgjasiXQz5NOQMaa1ipNKd6HPo3XCwKZj5KTLTn5ZfLYpbDzIP
	6DAOaiMrUhBINeH42TCMC+RoQDeEuKnBlsm4GyqtkaWWTfn58XVAdb9tkUZO4VDnYWYklVHrXz6
	GbwxMhPtN203mTQUPsMGi3ZXODauW2c+ssvu7QN1iaSBovUq01dZrwkU9fyRasPyZBlTYwl1t2N
	Dac52o5i9Orv8hza1ZOpluzPnhKvZwHVRNNCZkbbLKqqEO4zUuSbuH6OFxmdaELOJmvxmSGhSF1
	XfXUKNw/Prf2LtKlSf8EkGeemmcxRefM8O2MnqSooc56I3F0PfdzEAcYMdxXYdiyLFxAbuhyDyo
	wrqvulQiHxZmD7VLKevB9A+bpP3B/eoIv+uy7o2x1SBS6yfgXuJRooeIJSganocOKvYWpmVL1nj
	lEMyflTd7HAPhA+d9ABZ75zPHMyAP/y758kC9gaKfXFkpIoDvqNjTRTK1A9g1m444rU1ArjxCjI
	dP+BrtxffI8bEJV+yGtMsA7CxEFiBcpIgvzmGTK8jB05G2xrlPoQuHbKQnHlVum1wpN/JjwXNDc
	Y5/ePK5D9ewfuFOo=
X-Received: by 2002:a05:600c:6215:b0:4aa:1527:659 with SMTP id 5b1f17b1804b1-4ac17a366c0mr420550135e9.17.1793867338280;
        Thu, 05 Nov 2026 00:28:58 -0800 (PST)
Message-ID: <62a5225e-8288-45db-aa27-0f0cb969ff18@suse.com>
Date: Thu, 5 Nov 2026 09:28:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 13/28] x86/time: fix typo s/interruopt/interrupt/
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-14-dmukhin@ford.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105013347.719392-14-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1793867338-F38BC2AC-22937EF6/10/78276251493
X-purgate-type: spam
X-purgate-size: 188

On 05.11.2026 02:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:30:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:30:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474219.1681401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsrG-0003iX-6j; Thu, 05 Nov 2026 08:30:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474219.1681401; Thu, 05 Nov 2026 08:30:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsrG-0003i5-3M; Thu, 05 Nov 2026 08:30:06 +0000
Received: by outflank-mailman (input) for mailman id 1474219;
 Thu, 05 Nov 2026 08:30:04 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsrE-0003O9-DL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:30:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsrD-00Gy8f-Pk
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:30:03 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e88-e002-0a2a0a5209dd-0a2a4508e582-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:30:03 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3e8b-f659-0a2a45080019-d1558036c583-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:30:03 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a20a37703bso11594235e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:30:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b572caf48bsm51599715e9.11.2026.11.05.00.30.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:30:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867403; x=1794472203; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=OhXOnhuaUWKhmke8QkcEhUz6ok1Jl2M1Ll7pGUPAnew=;
        b=P+RZyN6cg4FC36UYZkCndT2kdA+HPJFA5sjkXapYZdX5o3hUGxafWRO8TWvuqxL47A
         Aw0gxR/WjjGM1ZIKWVkzPUzyWeC4M32POOKWKKsT5LZ9skBpOcw3cjAnJkQC2Cg2VpRj
         dRyFcVDFw5ar7J2deYod8MG3hFFNfKMFTtecbZVP7uU7Eh7Ea5XIvfuEM8r4DhabzNwg
         DaVklEBrPNYycnip1TRumP3aEfkPFjFrrZ1TQDr5kCgWn4rT08g/jMMbmOm3wn08gpYG
         YN3R2id80h+ku4PJxF01KFn+DFcWVpuCjbxJ+/V2h3ZwHzOI+htU7UmGONTwHGGDIhHA
         m6aQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867403; x=1794472203;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=OhXOnhuaUWKhmke8QkcEhUz6ok1Jl2M1Ll7pGUPAnew=;
        b=PNyQaq4bxjz4bZ67LiKvjDGNZsfmYgp6LlmoD1H2PNDq+RtCC+zoNJW4sx/9MMusAS
         0VTI39JmFbxzu9QjYSizz2CNz1/nbM4V1LiTOCJ+rO8WM1zjVxPRdou4osHCrMXR1tNM
         t3fPwaU5cxZINVuxtCpsXa+73RXbGJIQE2m5Fp6+DUDNofOcxKLpNO18bYaaC09Y/TwN
         iCtqc0uqFE700xv4RzOGs7qOB6nkXPeWItaFWqxgZ/mp/8esuqPAlnOpcyxmyAmXr5gQ
         wtvhY6xiSvD3gKFbVIKxwjvSNDAhB734OYYtY+5R0O4y6/tURmA3TC976gT++JTy+BDn
         U2FA==
X-Forwarded-Encrypted: i=1; AKwUvBwQSjpjyBvqrSwHjBy1KP7mH6pbfzHosZx6EFhTjEuDHSMtmGYeWvHHtlsIxa0LQYmH0hKFPmXxtFo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9c4Oi+c53uvyaAWq+ecvXZM9uTaA9VvS9qeB+URtoKSx9RB2Pa
	/kRLPqt25fOqxkSwxqyJ3u6TJ6x9176ELgYADjv+5tynKwVf1Ph6LVxXRvjVR1BIymNiyhVwXAz
	1GJNOgA==
X-Gm-Gg: AYBFou0dunDXzbOPtpThkPhUHQspcdhu2fFgpF331fcHkgr5oALoUofpEK2Ba0Cp0cJ
	xGw4VEfSmmJEphIBS4FiQO92ByWM/OT2s+ok3r1wenf4E87r8EEPdh8MDAUHJ/+huZ3PiR3mZd9
	cnD67UVOPmbrZLb2Az1fFi7T3+vQPN0gRpmKN2FTrkEY1xUb/5QcIro9pP7fiYg6fbw+hfumE/x
	3Fh/M1QCBBkq169Amnl5d52UrCaQAyh1Di2H/g7PP9Pk0ySxvh/tPIN92NpQDF061eO+beqKkx4
	+zjBkPdQZKQDekFj8mYgDtQf5+7qL2wSBnYBQqgnPpbC9FZ9gVKkI1A6KzGXvIdlTfHwTZe3w7E
	enI1EEMmVmrdWeBByGgM+BxljcBQRPUd5mAZn7tp8G1dENaOENxtZoB9i/qrhFX2g7fGaCjgajc
	6bogSEWxdqx2vvh24ZbaGv3I8OzMOZKwHQjhzSQrdvxoMKnOvDxLpNd/DbnIOGCSo3BDk0aC8Yj
	0yM2OYJyxRNear3G1/G6piRE3JLZVXa/BCBIkpwhoQXdNHFbHrP1vcKNp/CymhwzEKKCyCk6TKF
	VVgZHjCmJz/HJ5Yn7LxxEflATLLMtB5y9szx0CBwcFcE472bjpFBfkHufBFnUmH3yLWue5xXX30
	uCwaE4Vpfx/FUAPAy
X-Received: by 2002:a05:600d:82f2:b0:4af:c210:5b3f with SMTP id 5b1f17b1804b1-4afc2105bf0mr315672795e9.24.1793867403236;
        Thu, 05 Nov 2026 00:30:03 -0800 (PST)
Message-ID: <421bbdc7-400d-4ed8-b000-2d845ab88e9c@suse.com>
Date: Thu, 5 Nov 2026 09:30:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 09/28] x86/hvm: fix hvm_emulate_one_vm_event()
 definition
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-10-dmukhin@ford.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105013347.719392-10-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793867403-CC37587B-0760CABA/10/78276251493
X-purgate-type: spam
X-purgate-size: 180

On 05.11.2026 02:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Add empty definition for !CONFIG_VM_EVENT case.

Which is needed because of?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:33:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:33:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474231.1681411 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsuf-0004m5-Jx; Thu, 05 Nov 2026 08:33:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474231.1681411; Thu, 05 Nov 2026 08:33:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsuf-0004ly-HH; Thu, 05 Nov 2026 08:33:37 +0000
Received: by outflank-mailman (input) for mailman id 1474231;
 Thu, 05 Nov 2026 08:33:36 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOsud-0004kn-Ut
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:33:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOsud-00EycH-BP
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:33:35 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3f55-e002-0a2a0a5209dd-0a2a4505dbe0-48
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:33:35 +0100
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec3f5f-4cb1-0a2a45050019-d1558031e1da-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:33:35 +0100
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4afe2d546f9so18317825e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:33:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b413312a4fsm55599495e9.1.2026.11.05.00.33.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:33:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793867615; x=1794472415; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NgBsQi3zqXIoKdloFOzVef5/fwP3iiWfivDpkhQruC8=;
        b=Xy0NTGfpoogXc8dg2FnBbL1MyKca1jBUIwqTHafSj6fcZ2oijVMN53hnZJ/kA3E//X
         3TjCMO25e+/XHaCh68aBkR/o/aLQ954DgZi5+PSDXDtyzOzallUeZ4b5Ahdc2RzZO3iD
         TRk9mzZm1ALdV6b1SFxhq3bmWG3U+YBKr4PimykKoKDkARECYwrgMcGVixCDVpmV2yMh
         U1L7F16yAzxGuT2i9JDPlZAv8JwZaQEWoh5DJj1PukK//LbWmHGgKK5Si1zOsc9rn1ii
         o7snCedbWxhxZzzwT6Cz/TIQ+yHB9Qdx0dwOTRHVP4CgCpBiGwpAWVXK0w6QZuZ94I1g
         FVIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793867615; x=1794472415;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=NgBsQi3zqXIoKdloFOzVef5/fwP3iiWfivDpkhQruC8=;
        b=ciRe0MnIjSjtPJATke2BajwP5x3yJE63029y68tau8Kldh3kIQa6WdA26kOoMtsYB6
         OmoXgsa7NBSnuBzyodCJiQsK8wJgu9jxjJ8e4TkKjlGSvxKxePtJCRpCGkNVHiT6+jjU
         lCv3dxDzSK4cJgEypro19bUJ/+Q/oGhV8LL1FatLQ4Jk6AkvAatsCCe9/Z7G5hOqgX1K
         GaMR9VGN60CHrDfK6Or9bFcK3dT5HSjC7RA9V1O1E7x99V8d2BG2Ao8BBw2ZW44OXZaT
         LKlFq12LrPKyDM0gKNse/1B4/ndQlewOTsiKubBpbSpXJLg/+rqH/8kgrNewsvG86v1V
         6TkQ==
X-Forwarded-Encrypted: i=1; AKwUvBxNCjE+yr3/p4Xtdnin4qd03CKY7KX7EefUt3peXrjslq0vyjQTfWX37C3MzmtwwoQ+fi9kzdhMr0o=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8MzWF7AbYXeOh0017PUktRi6UgkhmQMbjJdJ6HIF36K+x9zylC
	6jD9nHru8uKWMGOtumA9T3FB2gXm1p0mv+ikcr8M76UXPFfdB8eqBq666iA43oZQFg==
X-Gm-Gg: AYBFou3hQGPvxcp7GxpsLHeUeYHFTLW4Dzbwt0joQrJaIbZkrCynWQZPICp5IkGB5CJ
	ouVBFaFomJzdpUaiTrXq7dLN0Q4sErQM2T/o081f78Z7yufMof1kOE+3on6CpuUzfFIr2e/xWcN
	quyXv8o4h+dQR28mNA4dfMMLmbYnMLRVyDjvkd0j0XxGP2R/Bb6NHUpkE1EZ56rdv2pNQEttfly
	wKZiE0wEUfw+YUd3KNGCFvgkf8TQvus7kvCrIz492RTlDJQDN1MEKJkrSZcs6ueDQKo38mU7YAy
	DUW7vyZIiwRQ17sd1Wb5XbthoVrtcL0mnNxzsfRq+uVN2oyhmS/bQb+dBZahAJHZIA6kU+pn8z/
	VCKSltgV7SDFhxl0xZs17cHIDF8Ycrc/jcr+Gas3l6wVWy4goyH0RZX1x9j1qn4iJJbdAF/jsqB
	Y449Ls0kHn08wWzxgDMAkBuS+6w5pZTr6sevpMoziavoe6K19RcgG5y6D3DtjiqLPKn1mL8Vm7Z
	mzrzR+Zki9qpzQ9bl1j5NZp7jv2O+iNOYu6S63Lw5cPLWVwXxF2q/f4G8JSVl3dxgt+7v6fsCKN
	jIpGxwxTuaRrqiXj79g/PwX1zR4bmWyR1p9DXyumFxPA6pfUZrift2NyZnDMMs9h3REmoyaG+BS
	BYlY+M/+InoElp2HQUw==
X-Received: by 2002:a05:600c:310e:b0:4a2:10f9:37ce with SMTP id 5b1f17b1804b1-4ac1709ae70mr407820245e9.15.1793867614696;
        Thu, 05 Nov 2026 00:33:34 -0800 (PST)
Message-ID: <022aebef-ed2a-460f-81ca-4fce5742f904@suse.com>
Date: Thu, 5 Nov 2026 09:33:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 14/28] x86/hvm: vlapic: update signatures of both
 vlapic_{clear,test}_*
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, dmukhin@xen.org, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-15-dmukhin@ford.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105013347.719392-15-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793867615-243112A1-4B63C031/10/78276251493
X-purgate-type: spam
X-purgate-size: 1767

On 05.11.2026 02:33, dmukhin@ford.com wrote:
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -85,14 +85,14 @@ static int vlapic_find_highest_vector(const void *bitmap)
>   * IRR-specific bitmap update & search routines.
>   */
>  
> -static int vlapic_test_and_set_irr(int vector, struct vlapic *vlapic)
> +static int vlapic_test_and_set_irr(struct vlapic *vlapic, uint8_t vec)
>  {
> -    return vlapic_test_and_set_vector(vector, &vlapic->regs->data[APIC_IRR]);
> +    return vlapic_test_and_set_vector(vec, &vlapic->regs->data[APIC_IRR]);
>  }
>  
> -static void vlapic_clear_irr(int vector, struct vlapic *vlapic)
> +static void vlapic_clear_irr(struct vlapic *vlapic, uint8_t vec)
>  {
> -    vlapic_clear_vector(vector, &vlapic->regs->data[APIC_IRR]);
> +    vlapic_clear_vector(vec, &vlapic->regs->data[APIC_IRR]);
>  }
>  
>  static int vlapic_find_highest_irr(struct vlapic *vlapic)

Each of the functions only having ...

> @@ -166,7 +166,7 @@ void vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig)
>  
>      if ( hvm_funcs.deliver_posted_intr )
>          alternative_vcall(hvm_funcs.deliver_posted_intr, target, vec);
> -    else if ( !vlapic_test_and_set_irr(vec, vlapic) )
> +    else if ( !vlapic_test_and_set_irr(vlapic, vec) )
>          vcpu_kick(target);
>  }
>  
> @@ -1414,7 +1414,7 @@ int vlapic_ack_pending_irq(struct vcpu *v, int vector, bool force_ack)
>           !viridian_synic_is_auto_eoi_sint(v, vector) )
>          vlapic_set_vector(vector, &vlapic->regs->data[APIC_ISR]);
>  
> -    vlapic_clear_irr(vector, vlapic);
> +    vlapic_clear_irr(vlapic, vector);
>  
>      return 1;
>  }

... a single caller: Do we actually need those helpers?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:37:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:37:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474247.1681420 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsyV-0005iX-3X; Thu, 05 Nov 2026 08:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474247.1681420; Thu, 05 Nov 2026 08:37:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOsyV-0005iQ-0F; Thu, 05 Nov 2026 08:37:35 +0000
Received: by outflank-mailman (input) for mailman id 1474247;
 Thu, 05 Nov 2026 08:37:33 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger@xenproject.org>) id 1xOsyT-0005iK-G0
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:37:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xOsyT-0000000Gblo-0E7G;
 Thu, 05 Nov 2026 08:37:33 +0000
Received: from 224.pool85-54-217.dynamic.orange.es ([85.54.217.224]
 helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xOsyS-0000000FHLE-2wxh;
 Thu, 05 Nov 2026 08:37:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=In-Reply-To:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date;
	bh=Nn4//D6l0ZafuWlVYQzZg6C+hV6hNYzTFiAR/+dOFxM=; b=f3AgnYkhfJ7ACpawNXqLOGnt1O
	Rnvd+LHBimHiQ+GJesZrJqljm+tTWEdjgXx4FEXqgNh5EKq6nvRxCg4+8ZzQnYqM1VERHvNOwCMHr
	RVsm9R5ugiPX0/7juIdXbeORiQ6gJzP9t56+IBqofKh/KDA9XzwgT2UPn1gdx+N9eUrM=;
Date: Thu, 5 Nov 2026 09:37:24 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Marek Marczykowski <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
Message-ID: <auxARAN_1uokz3Kp@Mac.lan>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <78cd46cc-84ed-46df-96c9-26ce97ed0da0@suse.com>
 <atEADbxD4mL_bXy6@Mac.lan>
 <ac9eb028-6585-4318-b0ee-e6c86624722f@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ac9eb028-6585-4318-b0ee-e6c86624722f@suse.com>

On Thu, Nov 05, 2026 at 09:06:15AM +0100, Jan Beulich wrote:
> On 15.10.2026 18:32, Roger Pau Monné wrote:
> > On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
> >> Why does find_memory() go upwards, while find_kernel_memory() goes
> >> downwards? And why do we use the lowest part of the region found by
> >> find_memory() rather than the highest part?
> > 
> > find_memory() should probably start downwards from 4G.
> 
> In the course of replacing that find_memory() by pvh_steal_ram() (while
> converting to rangeset-based tracking) I learned the hard way that this
> isn't possible, even if it ought to be. Linux won't cope with parts of
> start-info (at least the module array) living outside of the first Gb
> (in 32-bit Linux it may go farther, depending on CONFIG_PAGE_OFFSET).

I assume start_info itself also needs to be < 1G then?

> See pvh_level3_ident_pgt[] having only its first direct-map entry
> populated, and pvh_start_xen() also only updating that one entry. Which
> causes xen_prepare_pvh() -> init_pvh_bootparams() to fall over anything
> living beyond the 1Gb boundary. (.memmap_paddr would apparently have
> the same issue, just that for Dom0 we don't set that.)

Hm, that's unfortunate.  We should fix Linux to the bootstrap
page-tables identity map the whole low 4G.  In the meantime, we keep
allocating upwards, and hope we don't cross the 1G boundary.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:46:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:46:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474261.1681429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOt6d-00018m-Rm; Thu, 05 Nov 2026 08:45:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474261.1681429; Thu, 05 Nov 2026 08:45:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOt6d-00018f-Oa; Thu, 05 Nov 2026 08:45:59 +0000
Received: by outflank-mailman (input) for mailman id 1474261;
 Thu, 05 Nov 2026 08:45:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOt6c-00018Z-Lc
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:45:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOt6c-00H0qS-28
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:45:58 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec4240-bab6-0a2a0a5309dd-0a2a450ba346-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:45:57 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec4245-b7e8-0a2a450b0019-d155802cad94-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:45:57 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a2d6cf958bso7312655e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:45:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b57317cae5sm76351085e9.12.2026.11.05.00.45.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:45:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793868357; x=1794473157; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=K15PiFSSM+eb88EEsPfu/1IVaBMnNivmxxIMNCBIvK8=;
        b=FaGNI+azuAKI6zUPPaZaTyoeKCM+pf4kt67wddVWdaQGh/QkorT5BF6JuOpCkLguKN
         fGEbk3HCrQne0tZHXtfT8616Gre8BQ0cQnjAEpSiccOD5vyWIBoNix0YxITl9BqrW+3W
         gm6/gKMir1tSikPwDFOovOxdnL+zWB0hqOi1dowPznMmaw+xtaBoNQdKMjdyka90Zxo6
         x9ltIiF0kGGJAxdfVuPsfQihws4GAiJxcHpkB6hqZRuEvIPVehSuvopGbvafWsucHDw8
         yXd5Uiq3L8a+kiu5V8j6rZM1IdNuElP04GeTaDmKMO6HzmCp7jTWyYUAh05YWf5z6Eei
         XbrA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793868357; x=1794473157;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=K15PiFSSM+eb88EEsPfu/1IVaBMnNivmxxIMNCBIvK8=;
        b=It1CuBaMcaiGrUAvIPySwOCSeJ7/O20XRK/HyoflxxU5mp+20GULvvumv8pS3nBKHx
         4GgtnEDPsO/fY0zPR6BpGLeAUVQPX7qikbo9CnnnGowQ0UDLnRBku0WFTTzaSSShEecj
         gbm7idTxfSKZHZRWzyEi6osPW+ns0B98QW4EFBf9ARFHY+dFxh2Vv0p2HsVCcJgj0KiM
         zcn7juBHzCyysJhip/1Gp5WvQCd1m4coEzdxJOxeNZE7rVLLvkMIoQc90OLIvoHe7NnA
         35yzJKBcwEdu2NL0XSa9e7BRBBfTGDFu+p4Ja0/rWLsNcG6EAwZAJMXpbO3uYXo2n2Rr
         nUEw==
X-Gm-Message-State: APuU4Z8zQ5SqJ+NLBKy/TyMXY10dc9sIwxTPCI9ACtRYabD0CbQlWbns
	oWGP7VN0lCnNeKJhDBAmUoyfJXfbMyIp18oGicmcFuxxICr40pnOUt9tVhSgY0CR2Q==
X-Gm-Gg: AYBFou0aPCrnIlI0H3YhdCtJrg/XhE3ACP4w+RTmar50S/TjOIoeBtN8imoVsrqdLBv
	s/lF8oZ5uHZzlRkCVm2+I6I4tQFbToPZRCdnrpFfyjppoabz+8sdasNcofepGt/hZynhQZ4NCZR
	t9zQncqSOUH3dwKXec6/z1sbexEnIMGDvkT1QY+3cyr2TT/dAHxdKukYDs6aIrSWWwNqh/ZTbEt
	yayPEbBEN9lQmATQzV/a45AWWVfTvaXTENBJXhsMY+EoPxb4x43Q6tsB8QKuGdzirDBJsJSzXiH
	VnAFHHYBPRoHssWnryzctbOGAxi36u7S+KDvuTfQ4RRGZ7mFDiTdMW0RS/uaRt82sAjXQlr9QOB
	JeolUffexYyF2dqwTo29oaN+C23UwudpC4LbSmBv2WVV/OCgtlVW//HOhChmvz47uUiSMC/J4dS
	7H4n/5mXeq9wr3AajID5HYPjbRYLwt70pr2lyYA0wxW2GhikBWw6dyxMf0J29dPxsGXei9E1Xrf
	JahbyObomzpB2uk568JH7P+SAfQ14fKx72cuIiQ3pXuGxmKqs2ZzWfETqR5Mr1ym1bASW5pSH3I
	5y657H+Pcns27b69M9V8FTHJ4t8BSUdZl7HOtw2GMkGCoNY+ZZRHNcl6P0e3q1ItKXdiT62pDmD
	ngOiUEh2h/sLDMh8L
X-Received: by 2002:a05:600c:1f93:b0:49f:ce78:356d with SMTP id 5b1f17b1804b1-4ac180f2fd3mr428805605e9.30.1793868357355;
        Thu, 05 Nov 2026 00:45:57 -0800 (PST)
Message-ID: <1d458862-d4d1-4b5a-8a38-983a725900c3@suse.com>
Date: Thu, 5 Nov 2026 09:45:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <78cd46cc-84ed-46df-96c9-26ce97ed0da0@suse.com> <atEADbxD4mL_bXy6@Mac.lan>
 <ac9eb028-6585-4318-b0ee-e6c86624722f@suse.com> <auxARAN_1uokz3Kp@Mac.lan>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <auxARAN_1uokz3Kp@Mac.lan>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793868357-194C39EA-970121BA/10/78276251493
X-purgate-type: spam
X-purgate-size: 1949

On 05.11.2026 09:37, Roger Pau Monné wrote:
> On Thu, Nov 05, 2026 at 09:06:15AM +0100, Jan Beulich wrote:
>> On 15.10.2026 18:32, Roger Pau Monné wrote:
>>> On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
>>>> Why does find_memory() go upwards, while find_kernel_memory() goes
>>>> downwards? And why do we use the lowest part of the region found by
>>>> find_memory() rather than the highest part?
>>>
>>> find_memory() should probably start downwards from 4G.
>>
>> In the course of replacing that find_memory() by pvh_steal_ram() (while
>> converting to rangeset-based tracking) I learned the hard way that this
>> isn't possible, even if it ought to be. Linux won't cope with parts of
>> start-info (at least the module array) living outside of the first Gb
>> (in 32-bit Linux it may go farther, depending on CONFIG_PAGE_OFFSET).
> 
> I assume start_info itself also needs to be < 1G then?

Looks like it isn't, as that's getting copied before enabling paging.

>> See pvh_level3_ident_pgt[] having only its first direct-map entry
>> populated, and pvh_start_xen() also only updating that one entry. Which
>> causes xen_prepare_pvh() -> init_pvh_bootparams() to fall over anything
>> living beyond the 1Gb boundary. (.memmap_paddr would apparently have
>> the same issue, just that for Dom0 we don't set that.)
> 
> Hm, that's unfortunate.  We should fix Linux to the bootstrap
> page-tables identity map the whole low 4G.

Blindly mapping the first Gb as Linux does is already a problem imo:
In the first Mb there very likely is MMIO, which shouldn't be mapped WB.
Further up there may be MMIO as well, yet maybe that's unlikely. Up from
1Gb and below 4Gb there definitely is MMIO again.

>  In the meantime, we keep
> allocating upwards, and hope we don't cross the 1G boundary.

A hope which breaks with an initrd big enough to fit below 4Gb, but too
bit to fit in the first Gb.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 08:48:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 08:48:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474268.1681437 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOt93-0002Ng-6R; Thu, 05 Nov 2026 08:48:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474268.1681437; Thu, 05 Nov 2026 08:48:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOt93-0002NY-3a; Thu, 05 Nov 2026 08:48:29 +0000
Received: by outflank-mailman (input) for mailman id 1474268;
 Thu, 05 Nov 2026 08:48:28 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOt92-0002NS-7H
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 08:48:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOt91-00H1ox-KK
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:48:27 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec42d5-bab6-0a2a0a5309dd-0a2a450cec56-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:48:27 +0100
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec42db-f479-0a2a450c0019-d155802dac9a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:48:27 +0100
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4a59100fa83so14506245e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 00:48:27 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed55249csm7497952f8f.35.2026.11.05.00.48.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 00:48:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793868507; x=1794473307; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LBSVPVna0p+ZSmL9B1Kv5sQUUfpmqGVjhu3H5D8Po38=;
        b=hbNBqKnYBvcaUyzXixjPxkWRxyCiE9qHkJ7QlwJFowD/Nxwg3BiH1ENZVo2t5kqmis
         EQMlcNhUTMW+zsMUsANSU3rY/7u0C4291oZ9F0VtoX3sPjdSzmCkO0IkYjUeeG8JLQTT
         6QsPkOYdKYA4poKsoYqPzK2lS2bWJaTTk+c1khEH462nwJfXTcjiTwfpxBU4gpCp9Owe
         Drd2xmyaZU/tXH+CgBkhklXZpGmhbg4G0ws7fGwJk1/QNBeMJEh/NFVS8aKELvlSSQo/
         J8A5UajyTmssiezBZaoTfr2QHD8UC4cfq17ieTxP9VlWOUEzc/5NX+6AaZixvtDMJeOm
         6XCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793868507; x=1794473307;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=LBSVPVna0p+ZSmL9B1Kv5sQUUfpmqGVjhu3H5D8Po38=;
        b=xQRpqHKVx4GLBl+qyyfQoMaW8xWsPXGwpcJvjrvWow2aEoga5NotUH2OnOSFw7iPc2
         9FhuyTjFQSPH8Hm5O+BxrlLUhmwSAOIfZO2Xbuxfojkv5KaIrNT1oHXqfk4SW+lOGUk1
         R7ANo2YFHXNjIxc3VMVi25UARBCUxN400xfQ9CWkF2zGWOOdq+MrmaGEDaFRG8fj+jGv
         FbjObj/15X2zSSH9mAyOxlxRPi87PJYRpUv1eEqliY03QGMKt3JHsRv8832+fWtuEtN3
         i0tJKtYjI+Nax7BODWwg5OI2nPIBRxi3BsMlezBQEbCcVadTZ36UjfpZtJnhd556R7mW
         LX/Q==
X-Gm-Message-State: APuU4Z8bs20nJYhoKHgRGjvOofy17/a9Mdl1Fa5+9uTzB29hnO9lwbqj
	F0ksS7sINQB9WRRQK9iZ+blK64IVt+CqzKTGk7V+aJize2L9kvm69h4d
X-Gm-Gg: AYBFou11VlElYe3CiXY+ZZHNaS1L6aFaED4HRQrzUSk2cFkClcds8WNrD2Skk4U0HIx
	ukXNVnIlRsp0iD14cF768zKpJLaTRR5FiZi+Au3X732g7K6Hj6p4zBR53pjAVVZgZCkRDXdiRJy
	ULV54VZue3Q35kcysc7I4JOX+lNpHIBEKlj11VdQasTsdpBxh7n9rYB7eJIkKO5ywkcLbBuDLK/
	trFPqr0ToJbYCWN0SPQ2HacE93gA4Mefl/Ivo9wJeKuxrIDobd/oqoHQvQdaRksafqFRPXHjhcT
	7atGZmK3Rnxbn4e0bKvwGMekzTo5K0vnXXohte3zgiiCricEn9Qm56R4rTbKWogAPXDRYfjLt8c
	9qci8NHo7nJMR4jpd8tATghk+za+pPvQXTkxnqTv+yLT8TjEyftY8/EPcKaYQfhoX44CncH9aJk
	0IiChIWUCJ4m1Oall7KapKN6iIZX0bYL+VY4VgwFlwqjBLEjqzPrFpMUnqGBL5MZ5GkASAPJCjJ
	QD2i7lpEwKtj1TMP222D1SF7wPTa807wReaYhA7T9ho3h8anL6qAL0W0gaGV+50+usQsp5YNVFc
	8f45m4G/gecUVRUkLthf0Zp6cajXn37/+SyJqsAgT4STISU5bjLCz+wI1JxirNwa371Vxb1SqHC
	V3w==
X-Received: by 2002:a05:600d:c:b0:4af:83ad:8f70 with SMTP id 5b1f17b1804b1-4af83ad8fa7mr243283015e9.35.1793868506911;
        Thu, 05 Nov 2026 00:48:26 -0800 (PST)
Message-ID: <8926ec18-5aea-483a-97ba-10e4759ec8b6@gmail.com>
Date: Thu, 5 Nov 2026 09:48:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 23/39] xen/riscv: add helpers for decoding a trapped
 load or store
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <bac190288e65f82ef51d85e32c939558c21776d0.1790779209.git.oleksii.kurochko@gmail.com>
 <1792663384.8631fc262581453bbf619ec5b2062170.1a1631070d2000f79f@vates.tech>
 <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
 <c121b7cc-30c2-4ba9-b9c9-a52076d25f22@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <c121b7cc-30c2-4ba9-b9c9-a52076d25f22@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d25034/1793868507-51339A5B-007A6789/10/73395122804
X-purgate-type: spam
X-purgate-size: 2918



On 11/5/26 9:17 AM, Jan Beulich wrote:
> On 04.11.2026 17:38, Oleksii Kurochko wrote:
>> On 10/22/26 12:02 PM, Baptiste Le Duc wrote:
>>>> + * It is needed to decode a trapped instruction: the encodings which exist only
>>>> + * for XLEN=64 must not be recognized for a 32-bit guest. Besides those simply
>>>> + * being reserved there, the compressed ones are ambiguous: C.LD and C.FLW
>>>> + * share the encoding 0x6000 (mask 0xe003), and likewise C.SD/C.FSW,
>>>> + * C.LDSP/C.FLWSP and C.SDSP/C.FSWSP.
>>>> + *
>>>> + * IS_ENABLED() can't be used here as HSTATUS_VSXL is defined for
>>>> + * __riscv_xlen == 64 only, the field not existing on RV32 in the first place.
>>>> + */
>>>> +static unsigned int guest_xlen(const struct cpu_user_regs *regs)
>>>> +{
>>>> +#ifdef CONFIG_RISCV_32
>>>> +    return 32;
>>>> +#else
>>>> +    unsigned long xl = MASK_EXTR(regs->hstatus, HSTATUS_VSXL);
>>> xl only ever holds a 2-bit field, so unsigned int would be better here.
>>
>> MASK_EXTR() yields the type of its operands, unsigned long here (and
>> unsigned long long for the UXL extraction), as do the XLEN_FIELD_*
>> constants xl is compared against. Making xl unsigned int would add an
>> implicit narrowing conversion: harmless value-wise but I think it will
>> violate one of MISRA rules at least if build everything with
>> -Wconversion then it will tell: conversion from 'long unsigned int' to
>> 'unsigned int' may change value.
> 
> If we were to follow that Misra rule, we'd have violations all over the
> place. Hence imo where unsigned int is sufficient for a value, that's
> what should be used.

Fair enough, I'll switch xl to unsigned int.

The one thing which isn't fully clear IMO is that in misra/rules.rst it 
is mentioned for Rule 10.3:
      - Please beware that this rule has many violations in the Xen
        codebase today, and its adoption is aspirational. However, when
        submitting new patches please try to decrease the number of
        violations when possible.
then it isn't  clear when it is needed to apply second sentence and when 
no.

> 
>>>> [ ... 49 lines skipped ... ]
>>>> +static unsigned long *guest_gpr(struct cpu_user_regs *regs,
>>>> +                                const struct decoded_insn *di)
>>>> +{
>>>> +    /*
>>>> +     * decode_ldst_insn() is what fills @di in, and it rejects an access
>>>> +     * wider than a guest register.
>>>> +     */
>>>> +    ASSERT(di->len <= (guest_xlen(regs) / BITS_PER_BYTE));
>>> Nit: the parentheses around the division aren't needed.
>>
>> I can drop them but I think it improves readability here a little bit.
> 
> That's subjective. Personally I agree with Baptiste, yet project-wide
> we don't do things consistently in this regard, and hence either form
> is (supposedly) okay.

Probably then it will be nice to update CODING_STYLE document.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 09:20:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 09:20:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474304.1681447 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtdr-0005bL-LK; Thu, 05 Nov 2026 09:20:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474304.1681447; Thu, 05 Nov 2026 09:20:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtdr-0005bE-Ie; Thu, 05 Nov 2026 09:20:19 +0000
Received: by outflank-mailman (input) for mailman id 1474304;
 Thu, 05 Nov 2026 09:20:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOtdq-0005b7-Kj
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:20:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOtdp-0092wW-VY
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:20:17 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec4a49-bab6-0a2a0a5309dd-0a2a45098c0c-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:20:17 +0100
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec4a51-be1a-0a2a45090019-d155dd34b16f-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:20:17 +0100
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-48afbd2c386so1074291f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 01:20:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fea180e7csm8925512f8f.5.2026.11.05.01.20.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 01:20:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793870417; x=1794475217; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=epBc+XHDpNiWFrDkfc1sLWHzGbTndhW6DrYlZ7hEs6I=;
        b=dtnpwPAANkpCFt/wJnIcgrcT2b7KUQOyCRIu2ITABT1hgBw/AcTGEuhsHJ9UFBFeQJ
         SzA2WMWyBtU6w8IqlfGSSYkZnV+HtzHo2WQM24XKrTpmdSVuKI5ZoIUAGnjINSyg3Q/t
         DdcIY3k5H4NWzVtku9bVLZ1oBUA8evoWw0i9Shj93KkLsX8a9fVRGrXGYVrbZrsBprz+
         LLLue4KW34JfpZMfP3lAwQKTDcIaNoc993T7QedpPYQ2rN2jCid9ozKDrsO9xNlZLUKK
         6UgULp8DsStnTVQaHgE1rPx89rcjF6lw3AbZXQctN3zjAAwbVkkapAX9ahvsDehk0bbc
         hXsw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793870417; x=1794475217;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=epBc+XHDpNiWFrDkfc1sLWHzGbTndhW6DrYlZ7hEs6I=;
        b=MgulUEthdd1+YPG0KtbgFMTo3MxoNNVwsnzj1cYrdwQ6SciAt9GkLMNvWRNUsfpNsh
         raV442VhZeXA1T2v1TiSoa0uhmwIAr9r4NVMHSsGdS7oIcsFJxSNaS8wkZZxpQ//OxVM
         nYuWEs8AYPD1UObr1nt3KfnIuLl1qo33q7tpw+wZhyZ4xdSZiD+0a3aVZ1vBe9sxXRDL
         MF02Dg5dwdC6scXcd1H4EokioEqXJRuiSQ32uBNGD3fdbJ+7uRq94rJ6mci15GlR2YNk
         hh7AKJwpTs5ITtMaIAfSt/4i6D9JYrvBG/e8OHdTF+bs2FPFVXvqVMXEaqdkaw8XZJ4K
         HrnA==
X-Forwarded-Encrypted: i=1; AKwUvBxBTd22DpP+an14pCT1J5xTRREobia2Q4KnZa9Ki12z936W2kvJywpaZV/LoFDcfwfTM8gsTOMOuJc=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/ZItNaXRUoINjUmCZMsSzn3C3h3YdKD1dA/ex7YKCEHTYa4hGe
	WEXcLyRbSJyLS4Dz1eUJdchcmkQvR1ob6mMWGYBRVyIB6wCgg2WtBrjIZ2PApNosOw==
X-Gm-Gg: AYBFou3YJ7TkhPROr/idu0aoo7Xsb5X6ZOALVDdnJZ4hnXwc2ql7qCrstI3d2pvM4nn
	LSyKys1uJtJ/ofLoGN8Qd6FG2zzSRTz214rQCrCVuFzRmWLtN8261z4Cd8WeLxI7dwMz3w2sXzo
	7N8LyJD4hUUM3kdAHleOfESgL9Ju5ONGh/Iq9C5LFBe02/tmWvL1RWCBUlhIHiRDDpIfPlvDrlr
	5rQD8BTuGbH/yUgh+SNCwNlSYlcfP/liEWAWpBq1uO07S0O/M9pG18iKXXrgOvDXSxwT9cox7Bk
	6qOamJBehdUZJtVU+07NPJqFaD2gB4Ub4sAyOyP1olOhTn7DPZm6qZ/vTcz9XQjfyh2isGCUrp3
	5x6eI861oV6CWctKUjI1ohtWMnuFfwcHBBcJxPcfTYxTsGq9/gH9TPDJHb6bOxyzdPJ6MkEUl+W
	MMF/TX2Gu4G42cGv7fQU3GB9f5usyYbgVXbZpOPo7LjB4cKGBoTz2iL65wEYBOXovKHqsqFmTqC
	b2E1qS1T+YJtLhZM3gQMTXiZfyrJ7QKmPoHgc5pvfvL7BWfe2aMmWK2RD7DkwbGQCV4fU4Uh71A
	DPi0CFEca7UdnpFTTYgQ534/pH9s1YNzaW2J7czI53m8avT+ro1JoOJQbuFArnwzqW3VCSi3dNe
	fFBocML+84Ceba5utBDERB69RG04NWe2jU77G7z8=
X-Received: by 2002:a05:6000:2c04:b0:48d:f7af:be35 with SMTP id ffacd0b85a97d-48e6e303f44mr41683794f8f.29.1793870417031;
        Thu, 05 Nov 2026 01:20:17 -0800 (PST)
Message-ID: <56611996-4c55-491c-98ff-07c5d6608268@suse.com>
Date: Thu, 5 Nov 2026 10:20:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] xen/build-id: Introduce is_gnu_build_id()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261104135133.2209628-1-andrew.cooper3@citrix.com>
 <20261104135133.2209628-2-andrew.cooper3@citrix.com>
 <9f55c251-af36-41e0-8afe-cb218d41f6cc@suse.com>
 <e63f8ee9-0537-4d3f-aea9-5fe2f356b86b@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e63f8ee9-0537-4d3f-aea9-5fe2f356b86b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793870417-3ACDF034-76442791/10/78276251493
X-purgate-type: spam
X-purgate-size: 3043

On 04.11.2026 17:25, Andrew Cooper wrote:
> On 04/11/2026 2:49 pm, Jan Beulich wrote:
>> On 04.11.2026 14:51, Andrew Cooper wrote:
>>> Broken out of the subsequent change for legibility reasons.  It will be used
>>> to replace xen_build_id_check().
>>>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Ross Lagerwall <ross.lagerwall@citrix.com>
>>> CC: Anthony PERARD <anthony.perard@vates.tech>
>>> CC: Michal Orzel <michal.orzel@amd.com>
>>> CC: Jan Beulich <jbeulich@suse.com>
>>> CC: Julien Grall <julien@xen.org>
>>> CC: Roger Pau Monné <roger@xenproject.org>
>>> CC: Stefano Stabellini <sstabellini@kernel.org>
>>> ---
>>>  xen/common/version.c         | 33 +++++++++++++++++++++++++++++++++
>>>  xen/include/xen/elfstructs.h |  2 ++
>>>  xen/include/xen/version.h    |  2 ++
>>>  3 files changed, 37 insertions(+)
>>>
>>> diff --git a/xen/common/version.c b/xen/common/version.c
>>> index 80e7a9b981cf..7eb8a0221d82 100644
>>> --- a/xen/common/version.c
>>> +++ b/xen/common/version.c
>>> @@ -114,6 +114,37 @@ void print_version(void)
>>>  /* Defined in linker script. */
>>>  extern const Elf_Note __note_gnu_build_id_start[], __note_gnu_build_id_end[];
>>>  
>>> +/*
>>> + * Check whether @n is a GNU Build ID note.
>>> + *
>>> + * We check that:
>>> + *  - type is NT_GNU_BUILD_ID
>>> + *  - name is GNU\0
>>> + *  - desc is non-empty and exactly covering the rest of the buffer
>>> + *
>>> + * If this returns true, the contents starts at n + NT_GNU_HDR_SIZE.
>>> + */
>>> +bool is_gnu_build_id(const Elf_Note *n, unsigned int len)
>>> +{
>>> +    const char *name;
>>> +
>>> +    if ( len <= NT_GNU_HDR_SIZE )
>>> +        return false;
>>> +
>>> +    if ( n->type != NT_GNU_BUILD_ID ||
>>> +         n->namesz != 4 )
>>> +        return false;
>>> +
>>> +    name = ELFNOTE_NAME(n);
>>> +    if ( strncmp(name, "GNU", 4) != 0 )
>>> +        return false;
>>> +
>>> +    if ( len != n->descsz + NT_GNU_HDR_SIZE )
>>> +        return false;
>> Isn't this too strict a check? Build-IDs can, iirc, take different formats
>> (yes, this is under our control, but still), and I don't think there's a
>> guarantee that all current and future ones are coming without any padding.
>> IOW I think len wants comparing against the rounded up sum.
> 
> Hmm.  There should be no padding included by the __note_gnu_build_id_end
> marker, but there may be in the section size used by livepatching. 
> Still, there must not be any rounding.
> 
> is_gnu_build_id() needs to return 0 for failure, and n->descsz for
> success, and this check needs to become len > n->descsz +
> NT_GNU_HDR_SIZE in order to tolerate tail padding.

The caller holding n in its hands, it can use n->descsz without you returning
it from here, i.e. the function could remain a boolean predicate, couldn't it?

> The caller cannot subtract NT_GNU_HDR_SIZE from the input length,
> because otherwise the padding would be considered part of the buildid.

Right.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 09:23:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 09:23:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474289.1681456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOth5-0006LE-2d; Thu, 05 Nov 2026 09:23:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474289.1681456; Thu, 05 Nov 2026 09:23:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOth4-0006L6-Vw; Thu, 05 Nov 2026 09:23:38 +0000
Received: by outflank-mailman (input) for mailman id 1474289;
 Thu, 05 Nov 2026 09:10:40 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Anandu.Padinhare@electrifex.com>) id 1xOtUW-0002f1-OY
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:10:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOtUV-0035Kk-Me
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:10:39 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Anandu.Padinhare@electrifex.com>)
 id 6aec480d-e002-0a2a0a5209dd-0a2a450c965e-8
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:10:39 +0100
Received: from [3.110.59.157] (helo=repost.tmes-in.trendmicro.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Anandu.Padinhare@electrifex.com>)
 id 6aec480d-f479-0a2a450c0019-036e3b9daf09-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:10:39 +0100
Received: from 40.107.57.114_.trendmicro.com (unknown [172.26.44.244])
 by repost.tmes-in.trendmicro.com (Postfix) with SMTP id 4619CC000211;
 Thu, 05 Nov 2026 09:10:37 +0000 (UTC)
Received: from MA0PR01CU012.outbound.protection.outlook.com (unknown
 [40.107.57.114])
 by repre.tmes-in.trendmicro.com (Trend Micro Email Security) with ESMTPS id
 7951CC00042A; Thu, 05 Nov 2026 09:10:32 +0000 (UTC)
Received: from MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:a01:193::20) by PNZPR01MB11218.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:c01:289::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 09:10:28 +0000
Received: from MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM
 ([fe80::efe4:29f6:26da:6618]) by MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM
 ([fe80::efe4:29f6:26da:6618%3]) with mapi id 15.21.0592.007; Thu, 5 Nov 2026
 09:10:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-TM-MAIL-RECEIVED-TIME: 1793869832.496000
X-TM-MAIL-UUID: d9363bb8-0c50-4ed3-9aed-44bf214ca6f6
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dCxYD14E4sPVoW0axkYIL+lYqHzgt3O3rjKnG8QX7lhb1y56YGIBiX5UhSdrx23ORLmZNp1uoMTjmUnCsvf7YqffRiTTlD9p141wrJI+avM51Yq15/1D21BOhLcQP8uEvEj0B88d/ysI5H/ui/zHLpQqLmgKE0qgXd8wph6BvDVvCBB5ul5AlIfVL+4Izt8SepT7Fxmvn3BKZu3CldMOPrSr84yKaUoiCAZuzFfPQhJqbFw31yv3g3B+0prkbHO1VQWx+ZHlZOszpAe6JNme0WIgx0GPlRanQQGr83npo/AYrS8bfZavR/GtBcTK6PK2WhbH6udCw51z2HIWDOVDoQ==
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=/M02mJb3jaXljVyHD2w6LUuX1f0Ld0KFuP+FtWfSHlY=;
 b=mEBAI8ErlIxQVs6lMRppsnKUaH6FyYuTtmddGpb28opVjExxsyaqKpLkRJOYTOMYL7fR6ndysw3ZD+2kPhFYenc1ZxcD6e4Nzib9G2xmSp8Im9Kt6XqCbkDo0mnDDfPz7UXwzBI3VR8IJQpl/GurO3LZyMMJpQs7dpzC+MYER2DcsJvfS63pZ/sLma9feMxvZ7rZE/E/aWVixqc13gVlLCltA25u5t2rqCtW5FxA6nNIBpMW5qmPNm2MwhCA5g4tCKF51hB5YtAAHsbeEP/8Hih4sTxrS9GqSSwtsDhACxg2tvnuXfnQTwcgLEOqb9lOW6xC6eopcaGTFd/94f0KiA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=electrifex.com; dmarc=pass action=none
 header.from=electrifex.com; dkim=pass header.d=electrifex.com; arc=none
From: Anandu Padinhare <Anandu.Padinhare@electrifex.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?iso-8859-1?Q?Marek_Marczykowski-G=F3recki?=
	<marmarek@invisiblethingslab.com>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/EFI: fix padding of EDD strings
Thread-Topic: [PATCH] x86/EFI: fix padding of EDD strings
Thread-Index: AQHdbQRh3bU+0D+v9UGVw8dMUNUEuQ==
Date: Thu, 5 Nov 2026 09:10:28 +0000
Message-ID:
 <MA5PR01MB11455822E04DAC972F77A25A7FD772@MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM>
Accept-Language: en-IN, en-US
Content-Language: en-IN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=electrifex.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: MA5PR01MB11455:EE_|PNZPR01MB11218:EE_
x-ms-office365-filtering-correlation-id: d722cd3f-6fe8-4d53-dda9-08df3b1ca283
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|38070700021|261022105027099003|56012099006|261021121427099003|261009223027099003|261022075727099003|261021123027099003|261026140227099003|261026121527099003|261028144727099003|261102123227099003|10067099003|18002099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 uwSNMsJXcl7M37sQhmRer19iBjlgT49HI53r4vox8ORCBFL/HJjDJ5rubbd7B4ys7Fxw1dkNx6kPpRvDhvFQpdYFbB/jCSLT3LThLlbmIdnDcXig6dwSF5rUp9Cmz9VkkZ+8liR0nw1Frp1mEpnKerYRffdo7F+3JccOgcVj+OVke69X7SsXREMG1UjeJxxTzXEc20JLFRTc3sD17ok381fZwePEnWvLidqleJAvp16hxgAM7uGemInMHUaskSIllaQZynfo+3rhxUXVbsD42EpotXJfY2rYSQMldQhwKY0nf+51T5ycyN3Q4KcRcMRZHl3YoBsd63D1Y7mdzWV3A65rRv7L0CLlF2cNW3/IHIem2QF+J0MDWksu3ewpcNrEd9CD04Mzcw87RlzVAePbhjyLace9UTwHH6XEHLAvw6AzHHgSxO/01hyq+7FrLsNk34D7JxbQHrjesZaQk5mSG8+TQDwZPCHrJPghgi29jHnQbLNkVlGEH0dnYks7i3P+25dPmH0fxY2GUdqMdIP1PjaQBP6g6IKREF8dCsvesT7+IWrtFaVyS3CmykC7GgZhlyRPwPQRlmP5fo5t4dwh0vjn2tF0lHtBZlUm54yErbuirfQ+Ur+vA7n+tOomJUTFR9m5LtxZgUp1IkVufYqTIwDh5ufDXQuUazOfng3kAvPPQpkh4LWM7i3/PDUQPGGqKl+rZ0UEFBjp/dxBI/MBh4eOHOpa2bWkSjy8lwt36eU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(38070700021)(261022105027099003)(56012099006)(261021121427099003)(261009223027099003)(261022075727099003)(261021123027099003)(261026140227099003)(261026121527099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?UFHNwd3tUQ+fFLtokT1snLczbdRaKmW3JIPfsVzgXXR3hpt+Ca4cu8DVBf?=
 =?iso-8859-1?Q?fIdt/UwOUQi0d77J67n9rp3G1mAklkmK+TgbSt3xYnrKqSTclcHTOTl3uS?=
 =?iso-8859-1?Q?zugxkmlby1roDdJOL/nWOkRsMw9xJ02RZvZvXQgal3d551EjYXHEoSV1oo?=
 =?iso-8859-1?Q?e4DkFNKKvuUEQAYbZWeYvaVDgS8wDNbmNX7SobYhGxnzxYu5Lq7+ESZ4Cb?=
 =?iso-8859-1?Q?QAIg5xmmmcqaXckCXMW9sDU90iH4m0wEIwx9KNhdUY46LQVE1dLRgq/UHc?=
 =?iso-8859-1?Q?ZmnRXRDoVeZ6XU3wP7m8mB25VqvTQ3dL2XJZRZuNZ57G6NVgKsJORrdduZ?=
 =?iso-8859-1?Q?Gd+QAuBQ21+9rqJEWT46kekE/YQmfk/CWzBJWlGiiUc2v23Poz3LuG/n/H?=
 =?iso-8859-1?Q?bRkGWL/wQD2nQ3hhJPNuwUlyVRW0Kh5Dz+mec1TX7OdPGwlDAtEBqLS92/?=
 =?iso-8859-1?Q?4QNwOf19kKg06dEbBVoq2fT85ZgVOd9Ah/LeRg36nemWRMX6MxI4benu+j?=
 =?iso-8859-1?Q?L9XqjVCVr92seGWxf5yQIhB/eOFnb0ovUOIu3v5GVPuJoHqc6jTD931xic?=
 =?iso-8859-1?Q?byt/9qEtCIuJ49rIUQXso4JmWVEEj3BjoG5wTFHLNFhb6eUTvHkwubY5D1?=
 =?iso-8859-1?Q?oM0wmnwIKZfV3i298ZPRJ0boFGrs6qF2YRMCv0+YEzFZgu9oTwRMnu8pXs?=
 =?iso-8859-1?Q?PPZh0Bnhyu7GIGOcI+Jy8qQEA8Juqrh7vrxGjJGjmA/XwODe9kFlruq0HB?=
 =?iso-8859-1?Q?ucNGbatiJGmxJ9WgAmm2/yDshRCzn2uEGPb/GBOqZYEiixX7zIx9M4wiQT?=
 =?iso-8859-1?Q?4dvoDJJvKO32BinNzzYgXdq2RHVMlvqkMBHnyXJsv349Tg3Awagpp114zf?=
 =?iso-8859-1?Q?bIkWT0Xq00nZWx9WpQmbfQ3wAusDlSAA0/CcIyyziW3TsEQr/AIwGmHRYX?=
 =?iso-8859-1?Q?VwXvbcvosAruoR9Acm/nun5f6z1g3+pkH97vP5vRhP9EB5LhjYrbcrd16t?=
 =?iso-8859-1?Q?GWyV8nZ0Gnv04MKcSSlXFoQJqssXp2Sxjp9IBI2yc1ja+Qe7YODmmCQO4u?=
 =?iso-8859-1?Q?K297Y9gCWj1m5XcBb7y8QM6m/wKW+7pLDkujkwYg+nk9bQFeoZ7bqWdFyJ?=
 =?iso-8859-1?Q?e7Ft/sAqgGiNPwa6YehYotRk+yN9MyOmD/BvH9aq3o0VoS+aLAw3K/veDt?=
 =?iso-8859-1?Q?ici3L+DGHLshmOViUM+okGLaV7RhbKiRyh/IT8gMyu4Ubx4hH5nBJsr5ZW?=
 =?iso-8859-1?Q?kYxEsfrWMhlavGVkiOC9Z4yp1/bW44obTbfrdDJledX5d8+tGRWnMKGzQI?=
 =?iso-8859-1?Q?aggQFmg+9FGywda/waH9U/BxfUI+JZi2u6QMMEj/OVlEqPsYo6HpFmZeRk?=
 =?iso-8859-1?Q?D3PaXPCCYTCVJVesElZT9XTzDgwqr44Q9fazCr8bS8YVTuPfUpWZuwcQiI?=
 =?iso-8859-1?Q?PTIM+NhPUhIoEn/fopxBvbemSUFWXEcGIkl8YW18MRgOpXkqojaZXH+I2A?=
 =?iso-8859-1?Q?5gSGv+B/GeO9mF5Xda36yK3iQafyZJ+F5pyug36v3l+D/XlKMoPnlDJWBI?=
 =?iso-8859-1?Q?y3pWNv3PZIFVMMdn63TX24OeRq4yCi9p79ez1nYcTztGMc+lCEO/E8FHc+?=
 =?iso-8859-1?Q?t09rWAEMe2ygJIGh9iz30Vg7WF9w6giv/VOhFns6/Ujdoyhl+1SLVQwAGG?=
 =?iso-8859-1?Q?i1dWY+Ww3QJCUCreA6kWzd7+G2Grfv9xzbAobWBz5B15/1hFmKdEk3FRbV?=
 =?iso-8859-1?Q?0XjSPVnfefNIkOJVc95cpLp1SIkHP54CdovAU0NX7rnDg64JTUoRxRvnhK?=
 =?iso-8859-1?Q?E4aWmrxgGZmPb50JmG3w7G+PDrfnQr0=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	JTG2wMUKOuXXn53nSAiap1FHo3LDZu98KRIHYvwBzxqrpYpJa7Bf8mn9NqHxRyfApqDKo/g1+3Dq8V5wxBf31neQy1LWLKXHqaak/9g7D661TjfiPTQcDkjVQraT7RlbQf9674rQaHKN24cTiYARs01dvuNGUu71BaldkstBFWn3IeMBneZyeufOnXS0Ggf9Y2QTKocB1EG1CuRiGbmsJjyRcBUHO9sVEeVT3s2jMMoSVuPECRmU7VSL7XZwjvqS6P6jxA1phzxdw2bwKzvVF040esrDnO/qr+3nk1d9egPK/0ImdsO/XuS6bAGJLMWflAOLOKdDk5mnd6uWTAoMhw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	1SkMW7cQrcqgBumkRN92b81hVjQf6It63zTVQR7OvekhpaiIkJNN5gV4Vu0GYJEx/PClzIUp7yMDIlcV+MHgJjDOYuxzoYSUeq5uP6MAGUNsJOTm3X7eBcBECHvLJBAv1lTyDVITKv6CfYhAQH28HtX/iM+tmjjH8PE5HLlQAwDjV5I0+nYdRTeeedqx4NvZg0xLIui4x+om3I2UC37NX6DC0iA4tZwJWfaLbOoNA5uRWc7rFZMyPhT305nQmUSxX8TRMM6eueV43modQ7T+3dlwFcxe6Xgb9bVqYMxSs6OqPc+vRaj4rAYprpU63rRUYZl8iaLGvS22ci7AqexX5Jf2Sju3Jv0RRFOHiqitJjlaA2nzN9v8W/G3P2cL14qEcuv2skyvW9gd9fHEIRydQyNKI2dwHzctjLdAzQ+gKX45PA6pHp/VyLbO5lhm2WHT/Cj0sP5ANedwMrzK8BOQGIZjZ3k+dvLGFQyaiNp2C8QOy9MDlz8wO59HT59emxKRsyuzVSyLDzU1mWW9k/Ztvjoq9RzadEZkvS9v7jL1doahMTR8MxMWBVpGtM7idKiDAdAxwhLSNd0duUnxW6c3AmSU9WWmKyeMTCa4IWe/Z0A=
X-OriginatorOrg: electrifex.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: d722cd3f-6fe8-4d53-dda9-08df3b1ca283
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2026 09:10:28.0646
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f2626450-e675-4872-bae6-db17376f7643
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: dgo/5ri3ewBD9H8faaXriN1B0OB7dYqwsywzvH4SpZf3oBFAhe+TSHYR84Oxi18p+1cOjAzxZAvbnkKFxg/fuxmJcgA+15AdNhPeS5gIHUE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PNZPR01MB11218
X-TM-AS-ERS: 40.107.57.114-0.0.0.0
X-TMASE-Version: StarCloud-1.3-9.2.1014-30300.006
X-TMASE-Result: 10--2.091200-7.000000
X-TMASE-MatchedRID: WcPHsJbP/SoORb4PD9eWC50UyaWO1QCnp54G9fttJ00mfxCu1z+JwewK
	C3lNCUWRww/JyCiAIn9GcITFUtLEk2V5JEdzxR3ySIWxwjSbWajPaW4rD8GWjGV4iRXEyBMDGN5
	661rYcIKuDOe8YZL4TKpehZrsEMEFqTjJi0NXG+V80ZK0M+MRGXsXekkd9/R/8mB4uBzst3yLz4
	gav4lvdTKT8fDhc32NT7X7ygRwqps/dWulQasAdeT5AnjO7TXtUd1JKREWJmTW6I4Shu1jquihC
	Tu0kel4JLyRa7A4dIfCoxkUJ0PNYf2RVeqQBduyKiMPzmN80hknxTZ8oor9Y4RSKUQPSCOyJU0n
	G3tpe+B5MplrLPgz91Gm1/jBsHKQPRqI8WuVB+SMjkPo9btyqYZL0kaTKMbKBgTYbQNBR24=
X-TMASE-XGENCLOUD: 2db1ea99-ed0e-462f-b24b-aebd7f3d6278-0-0-200-0
X-TM-Addin-Auth: MX0a+sEutlXS9o3xz6imBWigpM+frT1GxaH3PvV4NHMBzInlIsHS584DExz
	TNRknCQl4NEPKIWdVWVJVyPznD4jUcxNNse+wyB7GlDdxsCXNi42GfBXxRtwzh0d4zWmWlr4ryk
	yzYupoJLMTGCA52vIyaYXGd+8vGXVnRXDDUiireew6XDVFM+WApA94bsxZcNsvcCtFr280iv3PQ
	12qHZWrxfglWagOeGpti2iTTqntyzivBDiZBdiMBPF9nCp9u+QT6xmJ2cozCzYXsHMB7mqWVpmI
	9r0tm40DXcXDxPTKfUHLeJaq+26LAT/G+Z7Vrdp9pPQ7ngz7lvOQunLqqg==.2kMLADFWrYvBef
	T+YkZ3NZ14QLK0ZH+wMZ2BmnDpizklle3UZ4Zk4GABrrmN1n8wm+TT85X6wAmFBcZr+zl3ploLI
	rpM1PgG7wADl8FMuP6vgQA57qiUA4FoSmx1fAswG4GzaEDsBecxV7UxkMoEsdjOIQuvG7rbaQzx
	wmkPbg2R1Ts+Dl6EumMUgKbqX5waqPNHlTDDDASqwxXSGFzYEz2rD9xRDOkCjA+YcFUQrTjIy/E
	Vm+pk3WYVSUO+XqRNIIqGOypp+5AgDjyURNngQNAm1m4D0rIVxgjFCmEYo/gFubwv1+zEBhfES0
	Ixu69kE0iAY4PAXOKvgAMZOIBZUw==
X-TM-Addin-ProductCode: EMS
X-TM-Deliver-Signature: 758F0381124C00613E1E767A0A4F6437
X-purgate-ID: tlsNG-d25034/1793869839-52530A5B-C7D436BA/0/0
X-purgate-type: clean
X-purgate-size: 2535

edd_put_string() decrements n in its copy loop condition even when the=0A=
loop terminates because the end of the source string was reached.  The=0A=
padding loop then writes one space too few, leaving the final byte of=0A=
the field untouched (zero, as boot_edd_info[] lives in .bss).  On an EFI=0A=
boot this yields e.g. a host bus type of "PCI\0" and an interface type=0A=
of "ATAPI  \0", whereas BIOSes space-pad these fields (SeaBIOS reports=0A=
"PCI " and "ATA     ").=0A=
=0A=
Furthermore, if the string exactly filled the field, n would wrap to=0A=
SIZE_MAX after the copy loop and the padding loop would write past the=0A=
end of the field.  No caller currently passes such a string.=0A=
=0A=
Only decrement n when a character was actually copied.  While touching=0A=
the function, also correct its indentation.=0A=
=0A=
Fixes: 51f03ec421fb ("x86-64/EFI: construct EDD data from device path proto=
col information")=0A=
Assisted-by: Claude=0A=
Signed-off-by: Anandu Padinhare <Anandu.Padinhare@electrifex.com>=0A=
---=0A=
Tested in QEMU (i440fx, OVMF, 2 IDE + 2 virtio-scsi disks) with a debug=0A=
build and a Linux 7.1 PV Dom0, booting xen.efi directly and via GRUB2=0A=
multiboot2.  /sys/firmware/edd/int13_dev8?/raw_data showed=0A=
host_bus_type "50 43 49 00" and interface types ending in 00 before=0A=
the patch, and "50 43 49 20" with fully space-padded interface types=0A=
after it, on all five disks.=0A=
=0A=
 xen/arch/x86/efi/efi-boot.h | 10 +++++-----=0A=
 1 file changed, 5 insertions(+), 5 deletions(-)=0A=
=0A=
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h=0A=
index d738b839ee..dab61c2d4b 100644=0A=
--- a/xen/arch/x86/efi/efi-boot.h=0A=
+++ b/xen/arch/x86/efi/efi-boot.h=0A=
@@ -30,13 +30,13 @@ static module_t __initdata mb_modules[5];=0A=
 =0A=
 static void __init edd_put_string(u8 *dst, size_t n, const char *src)=0A=
 {=0A=
-    while ( n-- && *src )=0A=
-       *dst++ =3D *src++;=0A=
+    for ( ; n && *src; --n )=0A=
+        *dst++ =3D *src++;=0A=
     if ( *src )=0A=
-       PrintErrMesg(L"Internal error populating EDD info",=0A=
-                    EFI_BUFFER_TOO_SMALL);=0A=
+        PrintErrMesg(L"Internal error populating EDD info",=0A=
+                     EFI_BUFFER_TOO_SMALL);=0A=
     while ( n-- )=0A=
-       *dst++ =3D ' ';=0A=
+        *dst++ =3D ' ';=0A=
 }=0A=
 #define edd_put_string(d, s) edd_put_string(d, ARRAY_SIZE(d), s)=0A=
 =0A=
=0A=
base-commit: bec8e3c1fb91b96f337c08c6daf1bb2563b320c0=0A=


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 09:33:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 09:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474321.1681465 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtqG-0001FJ-Sv; Thu, 05 Nov 2026 09:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474321.1681465; Thu, 05 Nov 2026 09:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtqG-0001FB-PI; Thu, 05 Nov 2026 09:33:08 +0000
Received: by outflank-mailman (input) for mailman id 1474321;
 Thu, 05 Nov 2026 09:33:07 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <roger@xenproject.org>) id 1xOtqF-0001F5-6H
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:33:07 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xOtqE-0000000GdLA-2RU9;
 Thu, 05 Nov 2026 09:33:06 +0000
Received: from 224.pool85-54-217.dynamic.orange.es ([85.54.217.224]
 helo=localhost) by xenbits.xenproject.org with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from <roger@xenproject.org>) id 1xOtqE-0000000Fkek-0s7z;
 Thu, 05 Nov 2026 09:33:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=In-Reply-To:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date;
	bh=SSu2u3TTGTfxlPdCWYnat/sB07TSGCobe47oH9L2kv4=; b=1Jy/e28fK6CFV+I7jKjPaaXoys
	PJ+Yas79Eqs5Sk5qkI6spfYB09Sz3aceGPmealycjrabS6VNVr7S+JQ323jS0FP64PHWHAF3jIoHL
	ytjyS3R0cjYYpYrfEmnQxj89gBOy+2P6K5hzRQ8bghqaZv0ZryyACRGMuw7LioS60RIo=;
Date: Thu, 5 Nov 2026 10:33:04 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Marek Marczykowski <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
Message-ID: <auxNUJMOXVx1yJMt@Mac.lan>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <78cd46cc-84ed-46df-96c9-26ce97ed0da0@suse.com>
 <atEADbxD4mL_bXy6@Mac.lan>
 <ac9eb028-6585-4318-b0ee-e6c86624722f@suse.com>
 <auxARAN_1uokz3Kp@Mac.lan>
 <1d458862-d4d1-4b5a-8a38-983a725900c3@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <1d458862-d4d1-4b5a-8a38-983a725900c3@suse.com>

On Thu, Nov 05, 2026 at 09:45:56AM +0100, Jan Beulich wrote:
> On 05.11.2026 09:37, Roger Pau Monné wrote:
> > On Thu, Nov 05, 2026 at 09:06:15AM +0100, Jan Beulich wrote:
> >> On 15.10.2026 18:32, Roger Pau Monné wrote:
> >>> On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
> >>>> Why does find_memory() go upwards, while find_kernel_memory() goes
> >>>> downwards? And why do we use the lowest part of the region found by
> >>>> find_memory() rather than the highest part?
> >>>
> >>> find_memory() should probably start downwards from 4G.
> >>
> >> In the course of replacing that find_memory() by pvh_steal_ram() (while
> >> converting to rangeset-based tracking) I learned the hard way that this
> >> isn't possible, even if it ought to be. Linux won't cope with parts of
> >> start-info (at least the module array) living outside of the first Gb
> >> (in 32-bit Linux it may go farther, depending on CONFIG_PAGE_OFFSET).
> > 
> > I assume start_info itself also needs to be < 1G then?
> 
> Looks like it isn't, as that's getting copied before enabling paging.
> 
> >> See pvh_level3_ident_pgt[] having only its first direct-map entry
> >> populated, and pvh_start_xen() also only updating that one entry. Which
> >> causes xen_prepare_pvh() -> init_pvh_bootparams() to fall over anything
> >> living beyond the 1Gb boundary. (.memmap_paddr would apparently have
> >> the same issue, just that for Dom0 we don't set that.)
> > 
> > Hm, that's unfortunate.  We should fix Linux to the bootstrap
> > page-tables identity map the whole low 4G.
> 
> Blindly mapping the first Gb as Linux does is already a problem imo:
> In the first Mb there very likely is MMIO, which shouldn't be mapped WB.
> Further up there may be MMIO as well, yet maybe that's unlikely. Up from
> 1Gb and below 4Gb there definitely is MMIO again.

Possibly more problematic on AMD than Intel: on Intel we use iPAT to
force UC for MMIO regardless of what the guest has in the gmtrr or the
guest PAT (as nasty as iPAT is).

Hm, since we create those bootstrap page-tables using superpages,
there's also the possibility of a page-table entry overlapping two
MTRR regions, at which will result in undefined caching attributes.

> >  In the meantime, we keep
> > allocating upwards, and hope we don't cross the 1G boundary.
> 
> A hope which breaks with an initrd big enough to fit below 4Gb, but too
> bit to fit in the first Gb.

Building a more complete boostrap page-tables will be complex.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 09:35:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 09:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474342.1681475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtsk-0001ve-Cu; Thu, 05 Nov 2026 09:35:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474342.1681475; Thu, 05 Nov 2026 09:35:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOtsk-0001vX-9L; Thu, 05 Nov 2026 09:35:42 +0000
Received: by outflank-mailman (input) for mailman id 1474342;
 Thu, 05 Nov 2026 09:35:41 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ab105625000403d@swg.vates.tech>)
 id 1xOtsi-0001vR-OR
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 09:35:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOtsi-003B5q-1J
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:35:40 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ab105625000403d@swg.vates.tech>)
 id 6aec4de5-bab6-0a2a0a5309dd-0a2a4503c7ee-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:35:40 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ab105625000403d@swg.vates.tech>)
 id 6aec4deb-fae8-0a2a45030019-b9ff1c23b5bf-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 10:35:39 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1ab105625000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 05 Nov 2026 09:35:36 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 37253822A7;
 Thu,  5 Nov 2026 10:35:36 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=TbJs2qfiRB1QJR/1SOip5yCkZeDctP1WaCPZKdlU4y8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=qmv4zQ5SwsH5RdfMuZt+bjmUmOWXvvyh5hDlWi2ZrYuQ9tU/GhH0s0ZhnbSL1G/454+kIgw94
 MezPzt78efaSY7ChSRiZ6AccJL7NEY5GVvIDCZ7XZtxQ7cfGn6Bcvr+I++uO+hkjfGLR06gztTT
 IXXyJlg3YPexic2k7vMn7mupUuF6QCR1bE2Id15M6IoEf0tiahuJtgqjdso5W939+yvSLGbKCct
 QDK/3YY2LIBBWPNMnOoaI8gBrgqhE78Y1IcpOOeYp/B+3Jc7GXSBsRceekNC8NMfmyfeiVAg484
 ZBf0Y9D8jkkIE9/PmagFNl35UZtNGzA5K4xHhfpijvrQ==
X-Zone-Loop: 50198758e2b1a83b0e0a62813211d85891a87a12d990
x-campaign-type: default
x-transaction-id: 413ea06a-2e00-482e-b5a9-f04cc38709ba
x-swg-uid: 01-3efe862d-3878-45cd-ad50-911c2e7b651b
X-Mailer: Sweego
Message-ID:
 <1793871337.8631fc262581453bbf619ec5b2062170.1a1ab105625000403d@vates.tech>
x-swg-bid: 1793871337.8631fc262581453bbf619ec5b2062170.1a1ab105625000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 23/39] xen/riscv: add helpers for decoding a trapped
 load or store
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <bac190288e65f82ef51d85e32c939558c21776d0.1790779209.git.oleksii.kurochko@gmail.com>
 <1792663384.8631fc262581453bbf619ec5b2062170.1a1631070d2000f79f@vates.tech>
 <8f6c0cd1-f5fc-4a1d-8752-3da42a52a710@gmail.com>
Date: Thu, 05 Nov 2026 10:35:30 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793871330; l=3162;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=2aZhO8tZjKWw5OJNQPyFqsqpLDGN6/5eMuwCyMBi30M=;
 b=QoO2R370WQ34O4AB4eq9FAJXPAAXHI5l0/RehwdC5ro7JXEaFnM1YhDb2tl+kadSjltPPUSkD
 hnMQZNTwG/jDOFIpXWY9rDZ2VWeSxTMpmMn1CAK8WPBSvy9l2m13GCY
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793871336437
X-purgate-ID: tlsNG-33051d/1793871339-752854E9-A8EBCABE/0/0
X-purgate-type: clean
X-purgate-size: 3162

On 2026-11-04 17:38 +0100, Oleksii Kurochko wrote:
> [ ... 147 lines skipped ... ]
> >> +        /*
> >> +         * Bit[0] == 0 implies trapped instruction value is zero or special
> >> +         * value. With the pseudoinstructions ruled out above, only zero (or a
> >> +         * custom value, see above) is left: the instruction has to be read from
> >> +         * guest memory.
> > Nit: as the assert would disappears in release build, this comment is
> > partially true. I would suggest something like:
> > ```
> >           * Bit[0] == 0 implies trapped instruction value is zero or
> >           * special value. With the pseudoinstructions ruled out (see
> >           * comment above) only zero (or a custom value, see above) is
> >           * left: the instruction has to be read from guest memory.
> > ```
> > 
> 
> Agree "ruled out" could be read incorrectly. I think it will be better then:
> 
>           /*
>            * Bit[0] == 0 implies trapped instruction value is zero or 
> special
> -         * value. With the pseudoinstructions ruled out above, only 
> zero (or a
> -         * custom value, see above) is left: the instruction has to be 
> read from
> -         * guest memory.
> +         * value. Pseudoinstructions never get here (see the comment 
> ahead of
> +         * the ASSERT() above), so only zero (or a custom value, see 
> above) is
> +         * left: the instruction has to be read from guest memory.
>            */
Agree.
> [ ... 6 lines skipped ... ]
> >> +            /*
> >> +             * If during getting of trapped instruction a fault happen in
> >> +             * G-stage translation then CAUSE_LOAD_GUEST_PAGE_FAULT is
> >> +             * generated. Such faults during this operation is considered as
> >> +             * bus error.
> > Typo: "Such faults ... are considered" (plural subject). Also "a fault
> > happen" above should be "a fault happens", and "as bus error" -> "a
> > bus error". Maybe:
> > 
> >      /*
> >      * If a G-stage translation fault happens while fetching the
> >      * trapped instruction, CAUSE_LOAD_GUEST_PAGE_FAULT is generated.
> >      * Such faults are treated as an access fault.
> >      */
> > I used access fault instead of bus error because the code below sets
> > CAUSE_FETCH_ACCESS which is more like an access fault.
> > 
> 
> Suggestion LGTM with one nit that "... instruction acccess fault" + 
> mentioned of that it is because of hlvx instruction so:
> 
>               /*
> -             * If during getting of trapped instruction a fault happen in
> -             * G-stage translation then CAUSE_LOAD_GUEST_PAGE_FAULT is
> -             * generated. Such faults during this operation is 
> considered as
> -             * bus error.
> +             * If a G-stage translation fault happens while fetching the
> +             * trapped instruction, CAUSE_LOAD_GUEST_PAGE_FAULT is 
> generated,
> +             * hlvx being a load. Such a fault is reported to the guest 
> as an
> +             * instruction access fault.
Agree.

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:21:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:21:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474358.1681483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOuaO-0005DV-IG; Thu, 05 Nov 2026 10:20:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474358.1681483; Thu, 05 Nov 2026 10:20:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOuaO-0005DO-Eq; Thu, 05 Nov 2026 10:20:48 +0000
Received: by outflank-mailman (input) for mailman id 1474358;
 Thu, 05 Nov 2026 10:20:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xOuaN-0005DH-BU
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:20:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOuaM-00HMk8-6M
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:20:46 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aec587b-2eae-0a2a0a5409dd-0a2a4504abfe-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:20:46 +0100
Received: from [52.101.46.51]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aec587b-b57f-0a2a45040019-34652e3348f9-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:20:45 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA6PR03MB7951.namprd03.prod.outlook.com (2603:10b6:806:42d::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 10:20:42 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Thu, 5 Nov 2026
 10:20:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=eCj5EWw9qwBV4biUOzcY3y36a0ONuvmKTGQ9Ixca8YtxclJQA/mkyTAP3bUgUJ5JX3w/rwXypyqR1rYhTkjH4Yvz0ZWbT81XgOZnvVnVeuEzeQohq9wKoBGeCXmzfq8mCitcO6mYsIEX3r8pwR082dgvseRXsygjp79+DjTy5xcZi154zYnvQWz6p/74cUgjZqo8YKmcB9C7eIroIIiXkjuFfGsCfeMVOy8tkbzFx1xSivscUJDzJ9LHF7Ai1Fx2d9wBfNbSwclCrZkxlgMprAvy9ZWhKeFINPyjgFhH62bkcSF1nQAL4Otymo946pDfBLSPEa6ijaSl2FdugwgBnA==
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=MHaUZTP72vG/mpo35ZYMLrnM9TQzI5dfyshwrtnVRKc=;
 b=p1vx1L/qAqvHB/O2tkNJstWc3Fi6bApmirQttPqyF9sNbrouynWOiF1iHYfkMDf3ucJsn6dyq2x/n1NeSve0TvuCCEwCxJS0zYh8VODhZzi5KxnoVTeHABI+BLwuAYyfhK2nlWfx57PirXTtjrJlaOhHfZr+i5byMncMQyoio6hXv+g8dpazE1Impj7PDRDqMfsW0QaJbrtsCU7evndoXdlIleC4/bhslwVD/Fd1E67oHdJwwH7yT870Gm2X1i/VBiBbaoVTUtg1Vj97DpBV0S1a1aVYy4MY9W9JCMWCfXIYr76tUcG8fhL+5QuGbr9YS3LijvWe2nTv9kuoZ8TdEQ==
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=MHaUZTP72vG/mpo35ZYMLrnM9TQzI5dfyshwrtnVRKc=;
 b=NuP6nZ67vksQp3Fp9mV63282aG0ZOtd+uamFrU86CLC2z4j4Ghs+t2y0M+5nJ/UJm96Hc8c6WC0QahtsYpJzrn/h34Sc+0gHtposGelqCzf0CPD0knEI6q+qWEhQPfHSDnLhzy3dMXVU+tF2nE/aniZ8JwUEjigQLqpkP6s4QpY=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <63f7b986-b5d4-4d64-9d16-8326cb8534da@citrix.com>
Date: Thu, 5 Nov 2026 10:20:38 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of
 open-coded 0
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-13-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-13-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR1P264CA0154.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:346::18) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA6PR03MB7951:EE_
X-MS-Office365-Filtering-Correlation-Id: f24ccd03-f5bf-4e9b-3191-08df3b26724c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|261026121527099003|11063799006|4143699003|56012099006|261022105027099003|261021123027099003|261009223027099003|261102123227099003|261021121427099003|261026140227099003|261028144727099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	pD7fbTfLRp/579Y+u07+/Za7I/pPuziyRhozDp50xlw+Kz+OdIfMe8mnNtluljF5sQpBH4AxooymB8L25M7bhIR/+bgYfMTL9AXuhLJBcXPeBALcba2BHFN2cVB1NAib3gfe//ojvLjyj8W8jjBc7oWGffSc7qvu1eKaNwml24IRuOk1oV2go0H7H6kTbGMt3P2dhIj2n3MiJNfnI19PFFhEY+vUzwWAnl7Q+ChbrMAfxlboewpZOwKLA8u+Oy4MG1TDE0p4zr0yNYnGtzG4nWiN+OUMqgQ9WqIRGHG3qh7bZQEt7JBrt6fHTU34XFaVLKyfgbgrZwn8MxKx4axE5qMMzssh6Ca7+3aGPFAKcOCs0sM5neAhqYTerAFqv9NCZaH2Vg5GRCtYswkpZi8vUYVkXOCUIAg0we0y8rMYh2UnaDLy0aVTXfMhACwPAAgdUtc6SQtFOihqUY7cIyU3lxlx435369jno1QmmYmiN7ll1Uvf0p4CVs1z0BJV2lmUi4vq2p8rE3BqQHeAvQGgBcZ/LnpddOrwdhSC4aRu7wJOG8DY5qA282ABhB7tAWI8gYVgtRKQ7urRLyRaJBa1lkEfePWSkNeJD+ZepkKuipSUWFkdh6VzQK6F+rSk1aCoHG9mBEnC3LTP1A7jwKyuetHn4UUtqzvvwUogRIcLcbo=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(261026121527099003)(11063799006)(4143699003)(56012099006)(261022105027099003)(261021123027099003)(261009223027099003)(261102123227099003)(261021121427099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VEsvQURxNStlSm5qRnFnOEdvb0xvK1kzelZaYWNSU0x0eTNERlN3YUc0TlJ4?=
 =?utf-8?B?L1ZiNGI4c3VYRmF0RXNnbkF5ZHpWNXA4Nm5EUTBsSTFhYjZCak9zc0VpSG9a?=
 =?utf-8?B?V2NESkI4eU01WEFxejlXQXBvZzU2dEkySnE0b3pOeVVxUHZQZ0lZQkVpZnlQ?=
 =?utf-8?B?ZUF4enB5M29BSzV6Rm52YkVKSm1KTm9GMUdVL0xUaXFtYkJVTUpxOFhIY0Vj?=
 =?utf-8?B?Z1dtcWsrL1V1ZEltbGxGbTA5aml5RmgwaUp2RHBZMEtNblg1aDh4THYwNHA2?=
 =?utf-8?B?SlRRUFBKMzRwK2REdkRGK1VLTGo4UStFckRlMTZDSDRYS2Z5N08ySk9qaThL?=
 =?utf-8?B?Q1FjTnZBLzdWZXZVTEdkYWhHTW9CYUcrT09Dc3IrQkR6WWFnaTFXNk9oeEwz?=
 =?utf-8?B?Y0FxUTZDTk13WkxUNndJY0xGaEhpS1NFZ09jNlB0OS9XUHY0V1k0eXlJZG5S?=
 =?utf-8?B?RXg0Z2p0aTRsQ283VEtua1RYKzY5d2Y4MXFKL3VWUWlkYlRJWXZlVHcvNm9K?=
 =?utf-8?B?QmdjaHIraG4rQkFySURUMkx2dVJFZlNyL2NreXk4aHRvSGFETEw5eEYyeTNR?=
 =?utf-8?B?d0FBMktIYmh5eDk4YVNydFRTMlcxRUpIWEpzQ2xLUGVtVzFWRlpseXVpUE0r?=
 =?utf-8?B?SENHNkhjYmFzUlE3NXhLTm5vckRVbndneWJEWVU2akkxdFpKT3JCVy9MM1lL?=
 =?utf-8?B?NGNBOHRlNG5XWHpBYXNXbk1ncUMwdjNsY1BnZDZaVjZDdjE1YTcvMUxEVXZx?=
 =?utf-8?B?TXRnRDJWaHZrdDRmZUFMZjRrWk4zaTZBWWhzSGg4RVFiU0I4aXJSTzMyclR0?=
 =?utf-8?B?eWdleThUYVVnZlY2eUpkN3FudnplVXRMMStGRUxzREM0SUd1T1R1dUF3QUVQ?=
 =?utf-8?B?Ujd1aXBkNXh0TXptSHJiQUxuNktsUlFtUm9GQ2lTMUNqMlgySVc1MEx4Tmpt?=
 =?utf-8?B?TTJuRTZRZXAwMnNKS0ZJQ0loZjFUdVR4WDN0V3dsVDZqeVhxRjVlRXQ2L1VW?=
 =?utf-8?B?TmdKTyttOXVQQ292YnlQa1g0YXpCS1NMN3B0cStOREp0WlFwenpPNDVSUWV4?=
 =?utf-8?B?cmxOcVQ2dUI3L3RDamt4a1h2b3RCdzF0S2FaWnRCVXRrTUhYS0cxem1xcDFq?=
 =?utf-8?B?V1RIYXNXalpHbWQ0ZXlOdktJZGoyQU56dlB3UTNDNDVoZGZHeGk5UFl1K3h4?=
 =?utf-8?B?RWVZOVFwa2ZmWW9Md0lqNDRQOVQ1Q1pRaEVIWkxYNHJTQllsR1BvajlTWEpu?=
 =?utf-8?B?Sy9pM0xMNWNlRUp4aFQ3ZGoxVzlaSUoyU295TEF2OG1hN2xRMVFIcFVwSDM2?=
 =?utf-8?B?WHJjc2pLd01kTFRkc1hLUmVrdm9ZK0pSK1pKZ3lRQmZjbFY1Ukd4cHBCeDRP?=
 =?utf-8?B?cHdKakJrSjN3czVNNUs1Y2IyQ2pSVnQ1TnNmWGQweU9uN0psTkIxUHVTQm4w?=
 =?utf-8?B?dUduaWJjVUpDVkVvTExrUWxlWUJVL2ZHUWZoL2NpVDFQTnQxTE1SSC9ZRXJK?=
 =?utf-8?B?WFlzUm91aGFiOGJKbzJZMnRtbUR1cFRDYk5wUnVMcCtPK2tySlFqcGJ5S1Yr?=
 =?utf-8?B?YzgvV1Vtd3Bub3h0RWtBcEZFZHRaSFI3bjV5dlNOVXlkUWZaMnZ5OEdmbDI4?=
 =?utf-8?B?SHZ6bzdIZjBSeDVzM09zRkh1OFVRNEY3Nkx3d2kzMFRFSG1MMkxYQnROL0NW?=
 =?utf-8?B?ZXpvNTJaTUpJNHRhRmkrMVdnRlRaZUt1ZlFRaktKWitlVElMVzBMMHhPMEpY?=
 =?utf-8?B?Wnc1RUNZbWxTb1ZTdkU5Y2hQRnNNTXZYT095R09oRER5Z2RzeS9DQTUwS1VJ?=
 =?utf-8?B?OXVUcmVNZzNQd0IrMWd1OE1FMzU4djkydUV1dHVjVk1CUkxnN1JUWjl0WG1F?=
 =?utf-8?B?bXRLQXgzS0xCZ0g1SmFCYzExTVRRUUZqVEYvS1FleTRpWVBwN3kzeitFeURV?=
 =?utf-8?B?UWcwM2JDeWdtZ1VCamF0WDREU0owZU5rNmJzeTlCNU5KTmNRY0pQNnhYVW9y?=
 =?utf-8?B?VTRKSCt1VWp1OTJuMnNXZlpBb0dXZVU3elpGM3VYSXpDMld5Q2h1TGFXa3Nr?=
 =?utf-8?B?WWp1eGhBWktMbkJvcS94b2I2L3YzdzBSY2lHZ3hrbUtLaVdBM2RPRXRPRjUy?=
 =?utf-8?B?MEJSQUxTMGJ4b3BLUFQ5QWY1dnRCOEZ3L0QvV0twQlhVYStCdU50YW1yd2pq?=
 =?utf-8?B?NEw4bytMVDJROXBPc3puMkNFaENxVzNOdDByQVFXdXU0MUFHMjE1NlFNSzB1?=
 =?utf-8?B?RXpUdmZpK1lURjBmOUVwVlJRQkI4c3lveTk2Tzdwalo3bXk2NDVucWI1Uzgv?=
 =?utf-8?B?N2RKVjZ3L2d5M2xlU1I5UElFYm1HaUsrQmZyelVUaUUwYUdta2k5REQvTW5n?=
 =?utf-8?Q?bvQPT7l2s37oxXvk=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f24ccd03-f5bf-4e9b-3191-08df3b26724c
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 10:20:42.3065
 (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: GKDJ3HlnDhax/1DoTHaha00ID0+aiHivvCMbhnoTKjMtfznNTjzXJUNfO4DqpKX5Vao5UWQrZVEMKezuT/kDIZlPryJ9XFKRpJt8lV9n99w=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR03MB7951
X-purgate-ID: tlsNG-ebf023/1793874046-534C3B50-CBA009D4/0/0
X-purgate-type: clean
X-purgate-size: 1782

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> Use the symbolic value in ack_APIC_irq() instead of open-coded 0.
>
> Also, correct the EIO -> EOI typo in the constant name.
>
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>  xen/arch/x86/include/asm/apic.h    | 3 +--
>  xen/arch/x86/include/asm/apicdef.h | 2 +-
>  2 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h
> index f30d57ad22c5..a4f6d2c26ce1 100644
> --- a/xen/arch/x86/include/asm/apic.h
> +++ b/xen/arch/x86/include/asm/apic.h
> @@ -155,8 +155,7 @@ void apic_wait_icr_idle(void);
>  
>  static inline void ack_APIC_irq(void)
>  {
> -	/* Docs say use 0 for future compatibility */
> -	apic_write(APIC_EOI, 0);
> +	apic_write(APIC_EOI, APIC_EOI_ACK);
>  }
>  
>  extern int get_maxlvt(void);
> diff --git a/xen/arch/x86/include/asm/apicdef.h b/xen/arch/x86/include/asm/apicdef.h
> index 112c1dc613a1..d3dc7b1d7643 100644
> --- a/xen/arch/x86/include/asm/apicdef.h
> +++ b/xen/arch/x86/include/asm/apicdef.h
> @@ -25,7 +25,7 @@
>  #define			APIC_ARBPRI_MASK	0xFF
>  #define		APIC_PROCPRI	0xA0
>  #define		APIC_EOI	0xB0
> -#define			APIC_EIO_ACK		0x0		/* Write this to the EOI register */
> +#define			APIC_EOI_ACK		0x0		/* Docs say use 0 for future compatibility */
>  #define		APIC_RRR	0xC0
>  #define		APIC_LDR	0xD0
>  #define			APIC_LDR_MASK		(0xFFu<<24)

Honestly, I'd prefer to delete this constant rather than to make use of
it.  The typo in the name shows it's not being used at all.

AMD have a feature called Selective EOI where you can write a vector in
and have it EOI something which isn't the currently in-service one.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:22:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:22:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474365.1681493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOuba-0005k1-SZ; Thu, 05 Nov 2026 10:22:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474365.1681493; Thu, 05 Nov 2026 10:22:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOuba-0005js-Nx; Thu, 05 Nov 2026 10:22:02 +0000
Received: by outflank-mailman (input) for mailman id 1474365;
 Thu, 05 Nov 2026 10:22:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOubZ-0005je-6J
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:22:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOubY-009Fdl-Iq
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:22:00 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec58bc-8faa-0a2a0a5109dd-0a2a4509894e-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:22:00 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec58c8-be1a-0a2a45090019-d155802bc903-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:22:00 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a20bde60a0so15058815e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:22:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56e58fcb8sm52808725e9.1.2026.11.05.02.21.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 02:21:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793874120; x=1794478920; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=BjG7LuvX9ZE4HKw6o3iCk0fIR9SRMamvRG/fyFwKQsg=;
        b=cA0tY+7s6Zxy7PXjMBExsUJesgnN319gGkOJDAbQrNjUYccQauBHvAIE0rRdegds86
         KY98dMkbiCe1YF/An8EfnJLOv7n0oHkERmhx89+5Myhw6iOQSSaWMvb4Eje8gLNjAvtG
         maHG0QBKJoJr+7UvOec/hhYUTS0zd1QV4UZWzaYcJec0T+FdScmI35rmtsck0srEfgWI
         1A7a/oTyW6tlzYq1new8NZuQvJfd7sB3X1xKvdLG3UpdAYbVLvbWOxsaylQGMu8Butz7
         ewprlObwV9UmKduuB6NSzRMnyXGI4aBxrH9nSFMesKllEk1GZeWlC8JYFTKochmILzNz
         0NBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793874120; x=1794478920;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=BjG7LuvX9ZE4HKw6o3iCk0fIR9SRMamvRG/fyFwKQsg=;
        b=SNCRkt3eOhOMrYMFj/zoOCeTTq7T+IdDlfek9v80LYMn4RDr3GhzrwLMnLCI27VgkR
         9xViYKuJ/pudcEqSODiufS1hmAHYKsHjNeocjyZG+CEnhcSkhHpel+X/qRJwKX0026gO
         CKUnSKG/toc/HX/uGuAY2neaVaO6ConMCSjvChxlrdbR0/jYu+W/3rCYPymHUU+TjlH5
         l1Zu2rVwx7kYBsxj3Z4mdTktVSAu1Yf3jYwi3W1V2dyZ5ZtFd4U9NE4HMMacZI9OzXTw
         4701olwqNg8M0si3EGz3YGFg56pz0nnzGvFq2A0VkogZvmbfeIqMUofuPU+FED8zPLAL
         xY3A==
X-Forwarded-Encrypted: i=1; AKwUvByCqHZTaMhdpWT7dlgW7NfAFM8dKpUM/f0rD1UFcm3BAt1Mztzqkaj1bsQX9x1Mm2iSnzZXQOmj0A4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8D7xyL5Ac3FMstdZDHhiy+WZtLwgrJ6vGDZMIzUCktaoKN1lAn
	Zs0tjCPI8Vj1aOnhHR3zF4S1dMreyr+W9Z9wjuljIIpOwnQkZICyJI9IEBkOZ+xedw==
X-Gm-Gg: AYBFou3J6qwDL8m4rgGWweYRTYqQdS7JF8z4wzid0FCZsWzYF7i9A572uoTlzXaPCpM
	Vj8NQr7pEdudM4LT6D9F7f1IbVjfJt19F17khnhBZg2f+GAxqBi4ssol65mwFgpwbop8EHMJnXQ
	meN3VYFGy8T9d21CMFXyp7NPVAF+mX+Ngaio0bob+iljzHaZQ+QNJm8D0tYqq8oIJRqoZ16FDwo
	PYz6rxZ8/V0Yc8YwtVN73B+ZDAGg9aD7y3cox7xsQDekNlsb0inQfitqlqADZJcvH/wWsJLVUSW
	qbgDc1euGoepkPO1E6WrHaHhGTXtsWdBNxsSrmST2EiaIEV1txeNrxGikzHfS6m2EA9sgGnT+sy
	Be7YkYt571su4uqVptnD4kqQtQudYhMxOSmgFTZv1NCP5maojLeVljn0UTkqYA/8dA6rOritlbx
	PfqTTcb7YECzjzko5AVgtCGl0QdarK2CuQCVD9XgGDIuJq5/7J+mXn5SR8TCb8TnHYMSTABz0nr
	/zqqtpCA3w1HrPCXQtXug+sB/iFSh0EguGhygNwJCe35gm86H/peRJ05IDMXhbJcZaPD1fqXP/k
	nB8vg1tAlptj5re1KhfNUREblDeRjq33Sl/rCV0Rg53grB4nnvk4AsPIiSBKf1vM6WuMS1Naw3o
	OR+WIbG+mjlkwqRlf
X-Received: by 2002:a05:600c:6212:b0:4b0:a7aa:843 with SMTP id 5b1f17b1804b1-4b0a7aa0a54mr245153115e9.25.1793874119823;
        Thu, 05 Nov 2026 02:21:59 -0800 (PST)
Message-ID: <109f3308-ff73-4bb0-9ec8-b9b76cbbe93b@suse.com>
Date: Thu, 5 Nov 2026 11:21:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of
 open-coded 0
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: jason.andryuk@amd.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org, dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-13-dmukhin@ford.com>
 <63f7b986-b5d4-4d64-9d16-8326cb8534da@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <63f7b986-b5d4-4d64-9d16-8326cb8534da@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793874120-3AAD8034-0C5427F7/10/78276251493
X-purgate-type: spam
X-purgate-size: 924

On 05.11.2026 11:20, Andrew Cooper wrote:
> On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
>> --- a/xen/arch/x86/include/asm/apicdef.h
>> +++ b/xen/arch/x86/include/asm/apicdef.h
>> @@ -25,7 +25,7 @@
>>  #define			APIC_ARBPRI_MASK	0xFF
>>  #define		APIC_PROCPRI	0xA0
>>  #define		APIC_EOI	0xB0
>> -#define			APIC_EIO_ACK		0x0		/* Write this to the EOI register */
>> +#define			APIC_EOI_ACK		0x0		/* Docs say use 0 for future compatibility */
>>  #define		APIC_RRR	0xC0
>>  #define		APIC_LDR	0xD0
>>  #define			APIC_LDR_MASK		(0xFFu<<24)
> 
> Honestly, I'd prefer to delete this constant rather than to make use of
> it.  The typo in the name shows it's not being used at all.
> 
> AMD have a feature called Selective EOI where you can write a vector in
> and have it EOI something which isn't the currently in-service one.

Makes it even more not to use plain 0 for the present write, I'd say.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:25:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:25:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474382.1681517 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOufM-0006kd-Ib; Thu, 05 Nov 2026 10:25:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474382.1681517; Thu, 05 Nov 2026 10:25:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOufM-0006kW-Fa; Thu, 05 Nov 2026 10:25:56 +0000
Received: by outflank-mailman (input) for mailman id 1474382;
 Thu, 05 Nov 2026 10:25:54 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Oleksii_Moisieiev@epam.com>) id 1xOufK-0006kQ-BZ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:25:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOufI-00Dq6h-NZ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:25:52 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aec5995-e002-0a2a0a5209dd-0a2a450bdd10-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:25:52 +0100
Received: from [52.101.66.105]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Oleksii_Moisieiev@epam.com>)
 id 6aec59a9-b7e8-0a2a450b0019-34654269487a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:25:46 +0100
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 (2603:10a6:150:2a9::22) by GV1PR03MB10776.eurprd03.prod.outlook.com
 (2603:10a6:150:202::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 10:25:42 +0000
Received: from GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf]) by GVXPR03MB11113.eurprd03.prod.outlook.com
 ([fe80::13a1:97f6:9d2b:f8cf%6]) with mapi id 15.21.0592.007; Thu, 5 Nov 2026
 10:25:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=HXOc8SLkc8HRsN8dzt0QNS313wzT7RSS7ce1SjWc5XKiMjAH0BrJ8Uvei1VLuiLVvDavGWJa82cjZI837HG0FzCbEHivwuB1JRUk6XNgcXQ3d+IVBp1/5BpEQFKia+u4PemjqUD9qSDQXlHcqtFEs69DFxPmcBE0f4Qx8dgQUoyKbIkktnC9194XGAdqN9d00L+5K1YGUK9FKwYQ6wYpyNW8ai6dx/8d0Z1153jZhWJflTZLMi/3DhvCbJ5DcXAEhl/ezjavgzF6Moxb/mg1zXyWr/neKQ/NzJ3df12B/AYjw6zi5HWGVJ1RwwEBrs2wTBCTzUO8Vjm00gQ9RrAorA==
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=QM31YJFZfTyO7TF8AQ7OoumIu5/Qt33q+xEE89qXnno=;
 b=ks9NgJxDoHMgIb7ZEqs1V0Y5KNGEJOaHAAtTRXwfOfzQTCQtX9PUZDVQi6S0cOZ7EHXb+h/3BcS17wuXNDmU/juYVeRUCRsPAkGHp2rXWBNRnV7M1BcF6d7YRPbzVibSCqnm5OLAzRnX2quzicaI8WR3LOTQJyBS4VnnP5NtCwAUYv3ZzfPcGtx2DCKzViZt8SVB7Ic3yQFS2p+oLaxkCWyO3+jJe8ExV9lmWA3uLvlBAj1TbNrqsYdOMjgNGdPtWkuoVCZcLlPAZVTaPyqGJJ3+Fc/dNFn5RVjB8R0/JPC1azwQTQ0d2GnSXdI8qdfeV2XOoIZPKjZ0f3/YIZPT6Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QM31YJFZfTyO7TF8AQ7OoumIu5/Qt33q+xEE89qXnno=;
 b=NzhVYm2vLVTD5EtDtW11pp+3Ah9aO3R0eNVYrdiFAGB9s+CD9f+4a7PK5csOA81OzDw1HJOTnUQ8b5F4378OItg6ugQ/ylBbYVRngXKls8mZrG54i4gK9hITF00+OOEAvshBq1MwozPy15+fG0PjIAD8OE+wGGMOHQKg0Jejd3rZtK6flFiLIr4XxHcXS6PUO+RpjQkl+dFNluGn0oLdHfkJ0OO+Do8tXjmh6BAuwFISG3G0CuA9kCA8aMHTcisc2yLqtSwV/5bdIdqrQw3sgM92Mkr5/rWS9+OqJAEjcyZZNHgR6N+3+V7KDotJgzXF+SxC/rXACGjSRwpsfZE5eg==
From: Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Bertrand Marquis <bertrand.marquis@arm.com>, Jan
 Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Julien Grall
	<julien@xen.org>, Michal Orzel <michal.orzel@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Grygorii Strashko
	<grygorii_strashko@epam.com>
Subject: Re: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Topic: [PATCH v15 6/6] docs: arm: add SCI SCMI SMC multi-agent driver
 docs
Thread-Index: AQHda6I31v/+oPR9ykKZQEp+RtbzYLcfSL4A
Date: Thu, 5 Nov 2026 10:25:41 +0000
Message-ID: <71571719-5598-41bb-85e7-20eef6e85629@epam.com>
References: <cover.1793717221.git.oleksii_moisieiev@epam.com>
 <04ebe91599a7861830afb248b1b7792af6dfe4d6.1793717221.git.oleksii_moisieiev@epam.com>
 <874idxmd91.fsf@epam.com> <2095dd28-12f2-411a-aeab-b9af99c4bc85@epam.com>
 <87pkwklr3f.fsf@epam.com> <d914b586-0901-4b29-8d92-187c4478473a@epam.com>
 <878q38kwez.fsf@epam.com>
In-Reply-To: <878q38kwez.fsf@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR03MB11113:EE_|GV1PR03MB10776:EE_
x-ms-office365-filtering-correlation-id: 4c5157ad-4800-423a-4717-08df3b2724f5
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|366016|7416014|376014|38070700021|11063799006|261102123227099003|4143699003|56012099006|261021135927099003|261009223027099003|261026121527099003|261022075727099003|261022105027099003|261021121427099003|261026140227099003|261028144727099003|10067099003|18002099003|22082099003|6133799003|3023799007;
x-microsoft-antispam-message-info:
 VA5LyBxNqAhOiD3wyM1CIgvKQfVWETk8bs7ybgpHVuUyV3g++iSaHMs8K124Dbp1trffBwur+Sp+zwsktNPnOoa+r8PkLwxiDaOabutt+hUhTh0vgg1LA5qqeshQmvQ02facxsCCoXN7cpdfngbnFgQ01b1A6p8928QCe0jpha23H8Cso0oers8Z+H27wsmPeL9Ilu2QpdGFr1JzMGVN0pbLCnNRas3/v/Zr56ZRT+BYKF1iyi/T+NZUbIc7XSnzHqwYtpotsr1uatQJ5c+e64RdLSmdZiLu0d9igP/oBHXDhn6ZAbuIr3fdiKPCYFBJGFCIm9cjAslh6bRP4ZsBL8tNxxQTae7soDdzBcWqnZGM15k7KcJ3hFbnV440T+U1cXh8C4xrNTZp+ocBWhHx1iOrcLRnZaDO+tpTOwh0e/6fFRI1nixuBI70od/LsGzkV4GJl3tZElWjNAwfiDxudaxrVpm+VpM4FhIDeolnf7/MmxcXEit0eJiL5lWBTTG+gPwmcI7ohKGGu5kMM3Rj9Mg6Vv7TArW2tu0e5ckngSY4CByCAariBXRSNoLIgr7THAy1LbUPTUEAIVLhKjDjGhePVsXJhchiukLrq6g/GwfRZ9GyMabQ6MN5U6gqAjUYFC8VgSs3j1qCm7qm8W5GH9f+rRIRjtlYj1hckm35F/ZceVAdo7rXIuDUiDVOpG0x
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR03MB11113.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(366016)(7416014)(376014)(38070700021)(11063799006)(261102123227099003)(4143699003)(56012099006)(261021135927099003)(261009223027099003)(261026121527099003)(261022075727099003)(261022105027099003)(261021121427099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bGtGRmhhUnBkV2FkNlppcXJTVFhSS0dON2tnbDl2cXh2cHpjeXpseWpNMzF6?=
 =?utf-8?B?MXRpSUxiMEt5cHZPQXBybkppK3d6Q3NWd0gxME94WW1URmF4R2N6QmtOK3ZY?=
 =?utf-8?B?MUpObWpVK2U0MU15dDRQSVgrRmpGaTVndmFaRWJ6U09haUtQZE1KWFFEOFk0?=
 =?utf-8?B?QmtsWm9XdTJacVNOczVHVmFDMEFRTlNweUNOT3F5WGZwMlNRVE1ta2dhdUJq?=
 =?utf-8?B?NmhYL1pXN3V3MFJLaGNGc1lqNFo0QlRNUHdkakVpeWp6cnFkVFlBS3RGSVlO?=
 =?utf-8?B?c1BETWZpNjZhM1BQRHdYamVPV1dXajVud0hhRmtZd3loMlV6aDAyZEZYV29l?=
 =?utf-8?B?TDBqZVZHZC9CWXBYSUwrSjNGTFZqT0l2NUtQWFZ5UWNBWGV6QjhtV3NaZTQ2?=
 =?utf-8?B?NXcwRnU0emp5QVlhdDdHZTgrL3k3TitJVlpoeVJ5MU91bGZ5VlRPMEFaWGJv?=
 =?utf-8?B?SmtZOGRyMUM2b1dXSHZyVnl5K0VOQVdOQm5CWm5BRWJyNmYrT1Z1Q2wvdTFo?=
 =?utf-8?B?M2xLZThzdDBKNnZYQlpOTGpZN0phZTA1TTFHOHF3ZzdOVyt5cHNKcGcxVlBG?=
 =?utf-8?B?OFJYejUxNVh0cm9jZkpTMWp4S2toT1VmNXY4OGJIaWUraU5zSFhWYUNpOGpW?=
 =?utf-8?B?OFVGSHVZT1orYmFYKy85ODUzSTFFUERoRUhVT1RHaGpoOCtLQThzSDliSEc2?=
 =?utf-8?B?dm00WDY2OTM3WGlJektHVlRwVWVnaVd0S1ZmWmxPVHFQK1FrR0p0TDVKeWJE?=
 =?utf-8?B?WldsZ1JQZFl6dVBNbVZlZVRmRlQxN3FRZSs2dGNPak45c3hyUkMzMlRrK1Bx?=
 =?utf-8?B?KytpcVU3dHliNWJZT3ZRK2lmaDl2WXpTYXdGa3dMdmR6U3pTeEhDdUNYTDhX?=
 =?utf-8?B?NkUxVks3bGYxdWNwMnpZbVFvUUhPNWFSOVRnYmxBMllPMTlZcWZPK3J6ZXV3?=
 =?utf-8?B?OTZuQzhEVlRFSzFTQ0hxR0hHU0RjYUoweUVDaHFjRFZQMGNUaVorZENJd0t1?=
 =?utf-8?B?SzZ3eitEdjByZDRzREFqUkR0bnA2RmdOekJHM1dVbWdKQ1hPVUVSMlVYQ0o4?=
 =?utf-8?B?QjA2ZWRlZTY5UlFqQ2VQWmFTQ2pMV3J2WGZHWnNodHA3V2IydnBvYTE1K29p?=
 =?utf-8?B?ZkNqMFVaN1pDV3FoQ3p1UDRwaisrYUZBM3dSOGlCaTdhM0V6VDB4TE5UYmR1?=
 =?utf-8?B?N2ZxaDZpWmtuSzF1TE4rRUNYSDVIRU9Tb290eXk1QzFSY2ZBVWJRcWZENHo1?=
 =?utf-8?B?ZWtFemRMVlVSVlJmWVZzTmJONVdPeXJMY2w5M2xWR0FoR0ZuYi84NTdWWGU4?=
 =?utf-8?B?VW9lNmw3U0psRnNQY0VvdGNybkZ4SzUvbDlGUnNoVi9SYTN5aUlUd3Bpbkw2?=
 =?utf-8?B?WHQ0VFMzZExkOTlaZG9rVngrbThnMERKc1pWaWdQMjVwd1JXTWZXNE1qMlhw?=
 =?utf-8?B?U1Vod1B2c3FFTHlDam85ZDRBRktQQzZ1UGhVQXdEVEdPZW5qM3FzYWgreEtx?=
 =?utf-8?B?RXFJUnp6blJBNms4bjI5TTNHa044RXpFM1dycjhBUjF2VmpCakROc3YxOTlX?=
 =?utf-8?B?SlZ5VTh5SjNPTEF0OTIwUU5XVWZOcmk3ampXYVYvYWFBV2sybG1NYVJmdlNr?=
 =?utf-8?B?UXFDaXRsYmliOHI2WW9Cc0hOay9takIwcGhHZ2I5Mjl1OEJXc2hoZWNlK0dS?=
 =?utf-8?B?UXk1Y0FadWFnWlB2OEJvcHM1SnJOQ2tualgrSXRDQ0hnZWV0SFRnbzhMYlBC?=
 =?utf-8?B?QlZRUWdVTUJXMU05aG54amNEZTQ1VVpPWFl1RkFHYjEvVmNzNG8rOFZmcXY1?=
 =?utf-8?B?V0JnTW51cGJxUUQ4dEtqNis5dEplNjk4K1Fpak5JdjRFNGtqazlsUS9Jek93?=
 =?utf-8?B?UDNUOFFNL2JWN21TOE9ubWRoOFVacEVnZTBlWUJpUG9PU3JiMU9mYkc2VUI3?=
 =?utf-8?B?U2ozSk5ZbEZiTUZubVJqbmRyV0k1WGk5UlZnUjhSdHowYStGWm9MWU5mTU03?=
 =?utf-8?B?OVlaZHBFVE8wWkFoQ3ZtT005Rms3ckhaUjRqTnByT2ZLWkFpK0hmaTAyQmY2?=
 =?utf-8?B?ZTFGN3V0MjVFVUU5emdqdkRNL3ZvZTNCMWpqQzVVdy9yTmsxaU8wcnpZRTJL?=
 =?utf-8?B?Z1V6bjlxTW1BSDVZSEd5S0Zzd3lFTGIrdDE2WVpIUU0ySzVmeEMyVGwyT01M?=
 =?utf-8?B?clJGSis1RzJEWGl4eFUvOGw1YmJSQWtWVkZrYnI3RGVZVnBGNlBnMDRkM1BO?=
 =?utf-8?B?ZHNPMiszcFRMVTliT0pYQWt2eGR4QnZ4T0c3ZGRKaTNRV0pTeHZkWWIyVTJ0?=
 =?utf-8?B?VE5ZalNvajFacEg0c0xMMWVFdjdOY2tkbCt2YkZVUk5kVWF5SG9DaFFGdzVu?=
 =?utf-8?Q?GBb1i3J+HQjYVJso=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <21B650214660A74487326416BF01794D@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR03MB11113.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c5157ad-4800-423a-4717-08df3b2724f5
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2026 10:25:41.9424
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: uHRgi9uGz1khQRoinJ77/3zOEtSYAdv2EUhSZr5M7T7u1zEx+kDE8Sln2YGxweyjckK8O9/vnhjBLcs7rNHVkQHzDMUNqJWmuDW8GdS+gzc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR03MB10776
X-purgate-ID: tlsNG-42698a/1793874351-AB0DD9EA-34E7A012/0/0
X-purgate-type: clean
X-purgate-size: 20486

DQpPbiAwNS8xMS8yMDI2IDAxOjI5LCBWb2xvZHlteXIgQmFiY2h1ayB3cm90ZToNCj4gSGksDQo+
DQo+IE9sZWtzaWkgTW9pc2llaWV2IDxPbGVrc2lpX01vaXNpZWlldkBlcGFtLmNvbT4gd3JpdGVz
Og0KPg0KPj4gT24gMDQvMTEvMjAyNiAxNDoyNywgVm9sb2R5bXlyIEJhYmNodWsgd3JvdGU6DQo+
Pj4gSGkgT2xla3NpaSwNCj4+Pg0KPj4+IE9sZWtzaWkgTW9pc2llaWV2IDxPbGVrc2lpX01vaXNp
ZWlldkBlcGFtLmNvbT4gd3JpdGVzOg0KPj4+DQo+Pj4+IEhpIFZvbG9keW15ciwNCj4+Pj4NCj4+
Pj4gVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3LiBwbGVhc2Ugc2VlIGJlbG93Og0KPj4+Pg0KPj4+
PiBPbiAwNC8xMS8yMDI2IDA2OjI4LCBWb2xvZHlteXIgQmFiY2h1ayB3cm90ZToNCj4+Pj4+IEhp
LA0KPj4+Pj4NCj4+Pj4+DQo+Pj4+PiBJJ20gc29ycnksIEkgcG9zdHBvbmVkIGRvY3VtZW50YXRp
b24gcmV2aWV3IHRpbGwgd2UgZmluaXNoZWQgd2l0aCBjb2RlDQo+Pj4+PiBwYXJ0LiBUaGlzIHdh
cyBteSBtaXN0YWtlLiBJIGRpZG4ndCBleHBlY3RlZCB0aGF0IGl0IHJlcXVpcmUgc2VyaW91cw0K
Pj4+Pj4gcHJvb2ZyZWFkaW5nLiBBbnl3YXksIEkgdHJpZWQgdG8gaGlnaGxpZ2h0IG1vc3QgZ2xh
cmluZyBtaXN0YWtlcywgYnV0IGl0DQo+Pj4+PiB3b3VsZCBiZSBncmVhdCBpZiB5b3UgcHJvb2Zy
ZWFkIGl0IGJ5IHlvdXJzZWxmIG9uY2UgYWdhaW4uDQo+Pj4+Pg0KPj4+Pj4gT2xla3NpaSBNb2lz
aWVpZXYgPE9sZWtzaWlfTW9pc2llaWV2QGVwYW0uY29tPiB3cml0ZXM6DQo+Pj4+Pg0KPj4+Pj4+
IEZyb206IEdyeWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbT4NCj4+
Pj4+Pg0KPj4+Pj4+IEFkZCBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIGRvY3VtZW50
YXRpb24uDQo+Pj4+Pj4gSXQgaW5jbHVkZXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUg
U0NNSSBtdWx0aS1hZ2VudCBkcml2ZXIuDQo+Pj4+Pj4gVGhpcyBkb2N1bWVudCBleHBsYWlucyB0
aGUgZHJpdmVyJ3MgZnVuY3Rpb25hbGl0eSwgY29uZmlndXJhdGlvbiwNCj4+Pj4+PiBhbmQgdGhl
IGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoZSBYZW4gU0NNSSBtdWx0aS1hZ2VudCBkcml2ZXIgaXMN
Cj4+Pj4+PiBkZXNpZ25lZCB0byBwcm92aWRlIFNDTUkgYWNjZXNzIHRvIHN5c3RlbSByZXNvdXJj
ZXMgZnJvbSBkaWZmZXJlbnQNCj4+Pj4+PiBkb21haW5zLg0KPj4+Pj4+DQo+Pj4+Pj4gU2lnbmVk
LW9mZi1ieTogR3J5Z29yaWkgU3RyYXNoa28gPGdyeWdvcmlpX3N0cmFzaGtvQGVwYW0uY29tPg0K
Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzaWkgTW9pc2llaWV2IDxvbGVrc2lpX21vaXNpZWll
dkBlcGFtLmNvbT4NCj4+Pj4+PiAtLS0NCj4+Pj4+Pg0KPj4+Pj4+IChubyBjaGFuZ2VzIHNpbmNl
IHYxNCkNCj4+Pj4+Pg0KPj4+Pj4+IENoYW5nZXMgaW4gdjE0Og0KPj4+Pj4+IC0gZGVzY3JpYmUg
c2Vjb25kYXJ5IGFnZW50cyBhcyB4ZW4sc2NtaS1hZ2VudCBub2RlcyB1bmRlciBhZ2VudHMNCj4+
Pj4+PiAtIHVwZGF0ZSBob3N0LCBkaXNjb3ZlcnkgYW5kIGRvbTBsZXNzIGV4YW1wbGVzIGZvciB0
aGUgY2hpbGQtbm9kZSBmb3JtYXQNCj4+Pj4+PiAtIGNsYXJpZnkgc2hhcmVkLW1lbW9yeSBwbGFj
ZW1lbnQgYW5kIHBsYXRmb3JtIFJBTSByZXNlcnZhdGlvbnMNCj4+Pj4+Pg0KPj4+Pj4+IENoYW5n
ZXMgaW4gdjEwOg0KPj4+Pj4+IC0gcmVwaHJhc2Ugc2VjdGlvbiBhYm91dCAvZmlybXdhcmUvc2Nt
aS4gTWVudGlvbmVkIHRoYXQgdGhpcyBub2RlIGlzDQo+Pj4+Pj4gdGFrZW4gZnJvbSBIb3N0IERU
IGFuZCBjb3BpZWQgdW5tb2RpZmllZC4NCj4+Pj4+PiAtIGZpeCB4ZW4scmVnIGFkZHJlc3MgZm9y
IHNlY29uZGFyeSBkb21haW5zIGZvciBEb20wbGVzcyBjb25maWd1cmF0aW9uDQo+Pj4+Pj4NCj4+
Pj4+PiBDaGFuZ2VzIGluIHY4Og0KPj4+Pj4+IC0gdXBkYXRlIGRvY3VtZW50YXRpb24gdG8gbWF0
Y2ggdGhlIGxhc3QgRFQgZm9ybWF0DQo+Pj4+Pj4gLSBmaXhlZCBSU1Q6ICIuLi4gY29kZS1ibG9j
azo6IGR0cyIgLT4gIi4uIGNvZGUtYmxvY2s6OiBkdHMiDQo+Pj4+Pj4gLSB1cGRhdGUgZG9jdW1l
bnRhdGlvbiB3aXRoIGRvbTBsZXNzIGNvbmZpZ3VyYXRpb24gZXhhbXBsZQ0KPj4+Pj4+IC0gdXBk
YXRlIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgcGFyYW0geGVuLGRvbTAtc2NpLWFnZW50LWlkDQo+
Pj4+Pj4gaW5zdGVhZCBvZiB0aGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcg0KPj4+Pj4+DQo+Pj4+
Pj4gQ2hhbmdlcyBpbiB2NzoNCj4+Pj4+PiAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIGluIHNlY3Rp
b24gb2YgdGhlIHhlbl9zY21pIGNvbmZpZ3VyYXRpb24gd2hpY2gNCj4+Pj4+PiBpcyBtYXRjaGVk
IGJ5ICJ4ZW4sc2NpIiBjb21wYXRpYmxlIGluc3RlYWQgb2YgdGhlIGRpcmVjdCBwYXRoLg0KPj4+
Pj4+DQo+Pj4+Pj4gQ2hhbmdlcyBpbiB2NjoNCj4+Pj4+PiAtIHJlbW92ZSBhbGwgSFZDIG1lbnRp
b25zIGZyb20gdGhlIG11bHRpLWFnZW50IGRvYw0KPj4+Pj4+IC0gdXBkYXRlIHNjaS1hZ2VudC1p
ZCBwYXJhbWV0ZXIgZGVzY3JpcHRpb24gaW4gdGhlIGRvY3VtZW50YXRpb24NCj4+Pj4+PiAtIGFk
ZCBtaXNzaW5nIFNpZ24tb2YNCj4+Pj4+PiAtIG1pbm9yIGZpeGVzIGFjcm9zcyB0aGUgZG9jdW1l
bnQNCj4+Pj4+Pg0KPj4+Pj4+IENoYW5nZXMgaW4gdjU6DQo+Pj4+Pj4gLSByZXdvcmsgbXVsdGkt
YWdlbnQgZHJpdmVyIHRvIGxlYXZlIEhvc3QgRGV2aWNlLXRyZWUgdW5tb2RpZmllZA0KPj4+Pj4+
DQo+Pj4+Pj4gICAgIC4uLi9hcm0vZmlybXdhcmUvYXJtLXNjbWkucnN0ICAgICAgICAgICAgICAg
ICB8IDQwNSArKysrKysrKysrKysrKysrKysNCj4+Pj4+PiAgICAgMSBmaWxlIGNoYW5nZWQsIDQw
NSBpbnNlcnRpb25zKCspDQo+Pj4+Pj4NCj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZG9jcy9oeXBlcnZp
c29yLWd1aWRlL2FybS9maXJtd2FyZS9hcm0tc2NtaS5yc3QgYi9kb2NzL2h5cGVydmlzb3ItZ3Vp
ZGUvYXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdA0KPj4+Pj4+IGluZGV4IGQ5Njk4ZjRlNGIuLjI1
NDU5ZDIyZGMgMTAwNjQ0DQo+Pj4+Pj4gLS0tIGEvZG9jcy9oeXBlcnZpc29yLWd1aWRlL2FybS9m
aXJtd2FyZS9hcm0tc2NtaS5yc3QNCj4+Pj4+PiArKysgYi9kb2NzL2h5cGVydmlzb3ItZ3VpZGUv
YXJtL2Zpcm13YXJlL2FybS1zY21pLnJzdA0KPj4+Pj4+IEBAIC0zNiw2ICszNiw4IEBAIFRoZSBi
ZWxvdyBzZWN0aW9ucyBkZXNjcmliZSBTQ01JIHN1cHBvcnQgb3B0aW9ucyBhdmFpbGFibGUgZm9y
IFhlbi4NCj4+Pj4+Pg0KPj4+Pj4+ICAgICB8IFsxXSBgQXJtIFNDTUkNCj4+Pj4+PiAgICAgfCA8
aHR0cHM6Ly9kZXZlbG9wZXIuYXJtLmNvbS9kb2N1bWVudGF0aW9uL2RlbjAwNTYvbGF0ZXN0Lz5g
Xw0KPj4+Pj4+ICAgICB8IFsyXSBgU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJm
YWNlIChTQ01JKSBiaW5kaW5ncw0KPj4+Pj4+ICAgICB8IDxodHRwczovL3dlYi5naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Zpcm13YXJlL2FybSxzY21pLnlhbWw+YF8N
Cj4+Pj4+PiArfCBbM10gYEdlbmVyaWMgRG9tYWluIEFjY2VzcyBDb250cm9sbGVycyBiaW5kaW5n
cyA8aHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Rv
cnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9h
Y2Nlc3MtY29udHJvbGxlcnMvYWNjZXNzLWNvbnRyb2xsZXJzLnlhbWw+YF8NCj4+Pj4+PiArDQo+
Pj4+Pj4NCj4+Pj4+PiAgICAgU2ltcGxlIFNDTUkgb3ZlciBTTUMgY2FsbHMgZm9yd2FyZGluZyBk
cml2ZXIgKEVMMykNCj4+Pj4+PiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+Pj4gQEAgLTE4OSwzICsxOTEsNDA2IEBAIGV4Y2Vw
dCBleHBsaWNpdGx5IGVuYWJsaW5nIFNDTUkgd2l0aCAiYXJtX3NjaSIgeGwuY2ZnIG9wdGlvbi4N
Cj4+Pj4+PiAgICAgICAgIC0+ICAgICAgICB4ZW4scmVnID0gPDB4MCAweDQ3ZmYwMDAwIDB4MCAw
eDEwMDAgMHgwIDB4MjIwMDEwMDA+Ow0KPj4+Pj4+ICAgICAgICAgLT4gICAgICAgIHhlbixmb3Jj
ZS1hc3NpZ24td2l0aG91dC1pb21tdTsNCj4+Pj4+PiAgICAgICAgICAgfTsNCj4+Pj4+PiArDQo+
Pj4+Pj4gK1NDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciAoRUwzKQ0KPj4+Pj4+ICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+Pj4gKw0KPj4+Pj4+ICtUaGUgU0NN
SSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIGVuYWJsZXMgc3VwcG9ydCBmb3IgQVJNIEVMMyBUcnVz
dGVkIEZpcm13YXJlLUEgKFRGLUEpIHdoaWNoDQo+Pj4+Pj4gK3Byb3ZpZGVzIFNDTUkgaW50ZXJm
YWNlIHdpdGggbXVsdGktYWdlbnQgc3VwcG9ydCwgYXMgc2hvd24gYmVsb3cuDQo+Pj4+Pj4gKw0K
Pj4+Pj4+ICs6Og0KPj4+Pj4+ICsNCj4+Pj4+PiArICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4+Pj4+ICsgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8DQo+Pj4+Pj4gKyAgICAgIHwgRUwzIFRGLUEgU0NNSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+Pj4+PiArICAgICAgKy0tLS0tLS0rLS0rLS0t
LS0tLSstLSstLS0tLS0tKy0tKy0tLS0tLS0rKw0KPj4+Pj4+ICsgICAgICB8c2htZW0xIHwgIHxz
aG1lbTAgfCAgfHNobWVtMiB8ICB8c2htZW1YIHwNCj4+Pj4+PiArICAgICAgKy0tLS0tKy0rICAr
LS0tKy0tLSsgICstLSstLS0tKyAgKy0tLSstLS0rDQo+Pj4+Pj4gKyAgICBzbWMtaWQxIHwgICAg
ICAgIHwgICAgICAgICB8ICAgICAgICAgICB8DQo+Pj4+Pj4gKyAgICBhZ2VudDEgIHwgICAgICAg
IHwgICAgICAgICB8ICAgICAgICAgICB8DQo+Pj4+Pj4gKyAgICAgICstLS0tLXYtLS0tLS0tLSst
LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCj4+Pj4+PiArICAgICAgfCAgICAgICAgICAgICAg
fCAgICAgICAgIHwgICAgICAgICAgIHwgICAgfA0KPj4+Pj4gWGVuLCBJIGJlbGlldmU/DQo+Pj4+
IEl0IGlzLiBCdXQgaW4gdGVybXMgb2YgU0NNSSB0aGlzIGlzIHByaXZpbGVnZWQgYWdlbnQuIEhh
dmVuJ3QgbWVudGlvbmVkDQo+Pj4+IFhlbiBoZXJlIGZvciB0aGUgc2FrZSBvZg0KPj4+Pg0KPj4+
PiBkaWFncmFtIHNpbXBsaWNpdHkgKGp1c3QgZG9uJ3Qgc2VlIGEgZ29vZCBwbGFjZSB3aHJlIEkg
Y2FuIHBsYWNlICJYZW4iDQo+Pj4+IGluIHRoaXMgZGlhZ3JhbS4gVGhlIG1haW4gaWRlYSBpcw0K
Pj4+IEkgdGhpbmsgeW91IGNhbiBwbGFjZSAiWGVuIiBpbiB0aGUgY2VudHJlLiBUaGVyZSBpcyBm
cmVlIHNwYWNlIGZvciBpdCBmaXQuDQo+Pj4gSnVzdCBhZGQgYSBuZXcgbGluZSwgc28gaXQgaXMg
bmljZSBhbmQgY2VudGVyZWQsIGxpa2UgdGhpczoNCj4+Pg0KPj4+ICsgICAgICB8ICAgICAgICAg
ICAgICB8ICAgWGVuICAgfCAgICAgICAgICAgfCAgICB8DQo+Pj4NCj4+Pj4gdGhhdCBkcml2ZXIg
bGVhdmVzIHNjbWkgcHJpdmlsZWdlZCBhZ2VudCBmb3IgaXRzZWxmIChhZ2VudDEgaW4gb3VyIGNh
c2UpDQo+Pj4+IHJlZ2FyZGxlc3Mgd2hlcmUgdGhpcyBkcml2ZXIgcnVucy4NCj4+Pj4NCj4+Pj4g
VGhpcyBmb3JtYXQgd2FzIHRha2VuIHNpbmNlIGRyaXZlciBpdHNlbGYgaXMgYXZhcmUgYWJvdXQg
dGhlIGRvbWFpbnMgYW5kDQo+Pj4+IGNoYW5uZWxzLg0KPj4+Pg0KPj4+Pj4+ICsgICAgICB8ICAg
ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICB8DQo+Pj4+Pj4gKyAgICAgICst
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLSsNCj4+Pj4+PiArICAgICAg
ICAgICAgIHNtYy1pZDAgfCAgc21jLWlkMnwgICAgc21jLWlkWHwNCj4+Pj4+PiArICAgICAgICAg
ICAgIGFnZW50MCAgfCAgYWdlbnQyIHwgICAgYWdlbnRYIHwNCj4+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwNCj4+Pj4+PiArICAgICAgICAgICAgICAg
ICstLS0tdi0tLSsgICstLXYtLS0tLSsgICstLXYtLS0tLSsNCj4+Pj4+PiArICAgICAgICAgICAg
ICAgIHwgICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+Pj4+PiArICAgICAgICAg
ICAgICAgIHwgRG9tMCAgIHwgIHwgRG9tMSAgIHwgIHwgRG9tWCAgIHwNCj4+Pj4+PiArICAgICAg
ICAgICAgICAgIHwgICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+Pj4+PiArICAg
ICAgICAgICAgICAgIHwgICAgICAgIHwgIHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+Pj4+PiAr
ICAgICAgICAgICAgICAgICstLS0tLS0tLSsgICstLS0tLS0tLSsgICstLS0tLS0tLSsNCj4+Pj4+
PiArDQo+Pj4+Pj4gK1RoZSBFTDMgU0NNSSBtdWx0aS1hZ2VudCBmaXJtd2FyZSBpcyBleHBlY3Rl
ZCB0byBwcm92aWRlIFNDTUkgU01DIHNoYXJlZC1tZW1vcnkgdHJhbnNwb3J0DQo+Pj4+Pj4gK2Zv
ciBldmVyeSBBZ2VudCBpbiB0aGUgc3lzdGVtLiBUaGUgU0NNSSBBZ2VudCB0cmFuc3BvcnQgY2hh
bm5lbCBkZWZpbmVkIGJ5IHBhaXI6DQo+Pj4+Pj4gKw0KPj4+Pj4+ICstIHNtYy1pZDogU01DIGZ1
bmN0aW9uIGlkIHVzZWQgZm9yIERvb3JiZWxsDQo+Pj4+Pj4gKy0gc2htZW06IHNoYXJlZCBtZW1v
cnkgZm9yIG1lc3NhZ2VzIHRyYW5zZmVyLCAqKlhlbiBwYWdlIGFsaWduZWQqKi4NCj4+Pj4+PiAr
ICBTaGFyZWQgbWVtb3J5IGlzIG1hcHBlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZmxhZ3M6IE1UX0RF
VklDRV9uR25SRSBhbmQgX1BBR0VfREVWSUNFLCBpbmRpY2F0aW5nIHRoYXQgdGhpcw0KPj4+Pj4g
RG8gd2UgaGF2ZSBhbnkgbGluZSBsZW5ndGggbGltaXRhdGlvbiBmb3IgLnJzdCBmaWxlcz8gVGhp
cyBvbmUgaXMgMTE0DQo+Pj4+PiBjaGFyYWN0ZXJzIGxvbmcuDQo+Pj4+IHJzdGNoZWNrIGdpdmVz
IDAgZXJyb3JzLCBidXQgSSBjYW4gcmVmb3JtYXQgaXQgd2l0aCBtYXhsaW5lIDEyMC4NCj4+Pj4+
PiArICBtZW1vcnkgaXMgbWFwcGVkIGFzIGRldmljZSBtZW1vcnkuDQo+Pj4+Pj4gKw0KPj4+Pj4+
ICtUaGUgZm9sbG93aW5nIFNDTUkgQWdlbnRzIGFyZSBleHBlY3RlZCB0byBiZSBkZWZpbmVkIGJ5
IFNDTUkgRlcgdG8gZW5hYmxlIFNDTUkgbXVsdGktYWdlbnQgZnVuY3Rpb25hbGl0eQ0KPj4+Pj4+
ICt1bmRlciBYZW46DQo+Pj4+Pj4gKy0NCj4+Pj4+PiArLSBYZW4gbWFuYWdlbWVudCBhZ2VudDog
dHJ1c3RlZCBhZ2VudHMgdGhhdCBhY2Nlc3NlcyB0byB0aGUgQmFzZSBQcm90b2NvbCBjb21tYW5k
cyB0byBjb25maWd1cmUNCj4+Pj4+ICJ0cnVzdGVkIGFnZW50Iiwgbm90ICJhZ2VudHMiDQo+Pj4+
Pg0KPj4+Pj4gYWxzbywgInRoYXQgYWNjZXNzZXMgdGhlIEJhc2UgUHJvdG9jb2wgY29tbWFuZHMg
dG8gY29uZmlndXJlLi4uIiBvciAidGhhdCBoYXMNCj4+Pj4+IGFjY2VzcyB0byB0aGUgQmFzZSBQ
cm90b2NvbCBjb21tYW5kcyB0byBjb25maWd1cmUuLi4iDQo+Pj4+Pg0KPj4+Pj4+ICsgIGFnZW50
IHNwZWNpZmljIHBlcm1pc3Npb25zDQo+Pj4+PiAiYWdlbnQtc3BlY2lmaWMiDQo+Pj4+Pg0KPj4+
Pj4+ICstIE9TUE0gVk0gYWdlbnRzOiBub24tdHJ1c3RlZCBhZ2VudCwgb25lIGZvciBlYWNoIEd1
ZXN0IGRvbWFpbiB3aGljaCBpcyAgYWxsb3dlZCBkaXJlY3QgSFcgYWNjZXNzLg0KPj4+Pj4gIm5v
bi10cnVzdGVkIGFnZW50cyIuIEFsc28sIGRvdWJsZSBzcGFjZSBiZXR3ZWVuICJpcyIgYW5kICJh
bGxvd2VkIg0KPj4+Pj4NCj4+Pj4+PiArICBBdCBsZWFzdCBvbmUgT1NQTSBWTSBhZ2VudCBoYXMg
dG8gYmUgcHJvdmlkZWQgYnkgRlcgaWYgSFcgaXMgaGFuZGxlZCBvbmx5IGJ5IERvbTAgb3IgRHJp
dmVyIERvbWFpbi4NCj4+Pj4+ICJIYXJkd2FyZSBEb21haW4iLCBwcm9iYWJseQ0KPj4+Pj4NCj4+
Pj4+PiArDQo+Pj4+Pj4gK1RoZSBFTDMgU0NNSSBGVyBpcyBleHBlY3RlZCB0byBpbXBsZW1lbnQg
Zm9sbG93aW5nIEJhc2UgcHJvdG9jb2wgbWVzc2FnZXM6DQo+Pj4+Pj4gKw0KPj4+Pj4+ICstIEJB
U0VfRElTQ09WRVJfQUdFTlQgKHJlcXVpcmVkIGZvciBYZW47IHJlcXVpcmVkIGZvciBzZWNvbmRh
cnkgYWdlbnRzIHdpdGhvdXQgYGByZWdgYCkNCj4+Pj4+PiArLSBCQVNFX1JFU0VUX0FHRU5UX0NP
TkZJR1VSQVRJT04gKG9wdGlvbmFsKQ0KPj4+Pj4gSG93IFhlbiBjYW4gZ3VhcmFudGVlIHRoYXQg
U0NNSSBzdGF0ZSBpcyBzYW5lLCBpZiBpdCBjYW4ndCByZXNldCBhZ2VudA0KPj4+Pj4gZHVyaW5n
IGRvbWFpbiBkZXN0cnVjdGlvbj8NCj4+Pj4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBpbXBsZW1l
bnRlZCBieSB0aGUgU0NQIGZpcm13YXJlLCBidXQgdGhlIGZpcm13YXJlDQo+Pj4+IHByb3ZpZGVz
IGFnZW50X251bSA+IDEsIHRoZW4gaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBTQ1AN
Cj4+Pj4gZmlybXdhcmUuIFdlIG1hZGUgdGhpcyBvcHRpb25hbCB0byBjb3ZlciBleGFjdGx5IHRo
aXMgY2FzZSDigJQgd2hlcmUgd2UNCj4+Pj4gZG9uJ3QgaGF2ZSBSRVNFVF9BR0VOVF9DT05GSUdV
UkFUSU9OIGJ1dCBzdGlsbCBoYXZlIGFnZW50X251bSA+IDEsIHdoaWNoDQo+Pj4+IGNvdWxkIGJl
IGFwcGxpY2FibGUgdG8gYSBkb20wbGVzcyBjb25maWd1cmF0aW9uIChmb3IgZXhhbXBsZSkgYW5k
IHNob3VsZA0KPj4+PiBiZSB1c2VkIGNhcmVmdWxseSBieSBkZXZlbG9wZXJzLg0KPj4+IE9rYXks
IEkgc2VlLi4uIE9uIG9uZSBoYW5kIGl0IGlzIG5vdCB3b3JzZSB0aGFuIHRoZSBjdXJyZW50IHN0
YXRlIG9mDQo+Pj4gYWZmYWlycywgd2hlbiB3ZSBqdXN0IGRlc3Ryb3lpbmcgYSBkb21haW4gYW5k
IGxlYXZpbmcgaXRzIGRldmljZXMgaW4NCj4+PiB1bmRldGVybWluZWQgc3RhdGUuIE9uIG90aGVy
IGhhbmQsIFNDTUkgaXMgbWVhbnQgdG8gcmVzb2x2ZSB0aGlzDQo+Pj4gcGFydGljdWxhciBwcm9i
bGVtLCBzbyBpdCB3aWxsIGJlIHN0cmFuZ2UgdG8gaGF2ZSBTQ01JIGJ1dCBub3QgdG8gaGF2ZQ0K
Pj4+IHRoaXMgcGFydGljdWxhciBmZWF0dXJlLiBNYXliZSBpdCBpcyB3b3J0aCB0byB3cml0ZSBh
IGh1Z2Ugd2FybmluZyBpZiBhDQo+Pj4gU0NNSS1lbmFibGVkIGRvbWFpbiBpcyBkZXN0cm95ZWQs
IGJ1dCB3ZSBjYW4ndCBjYWxsIFJFU0VUIGZvciBpdD8NCj4+Pg0KPj4+IExvb2tzIGxpa2UgSSBv
dmVybG9va2VkIHRoaXMgY2FzZSB3aGVuIHJldmlld2VkICJ4ZW4vYXJtOiBzY21pOg0KPj4+ICAg
IGludHJvZHVjZSBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIg0KPj4gdGhpcyBjb3Vs
ZCBiZSBkb25lLiBXaWxsIGFkZCBodWdlIHdhcm5pbmcuDQo+Pj4+Pj4gKy0gQkFTRV9TRVRfREVW
SUNFX1BFUk1JU1NJT05TIChvcHRpb25hbCkNCj4+Pj4+IElmIHRoaXMgaXMgb3B0aW9uYWwsIGRv
ZXMgaXQgbWVhbiB0aGF0IGVhY2ggYWdlbnQgd2lsbCBoYXZlIGFjY2VzcyB0bw0KPj4+Pj4gYWxs
IGRldmljZXMgaW4gdGhlIHN5c3RlbT8NCj4+Pj4gUHJvYmFibHkuIEJ1dCB0aGF0IGRvZXNuJ3Qg
bWVhbiBpdCdzIHRoZSBvbmx5IGNhc2UuIEZvciBleGFtcGxlLCBhDQo+Pj4+IHJlc291cmNlIGNv
dWxkIGJlIGFjcXVpcmVkIG9uIGZpcnN0IGFjY2VzcyAobm90IGEgcmVhbC13b3JsZCBjYXNlLCBi
dXQNCj4+Pj4gaXQncyBwb3NzaWJsZSkuIFNvIHdlIGNhbid0IG1ha2UgdGhpcyBkZWNpc2lvbiBv
biBiZWhhbGYgb2YgdGhlIFNDUA0KPj4+PiBmaXJtd2FyZS4NCj4+PiBBZ2FpbiwgdGhpcyBtaWdo
dCBiZSBub3Qgd2hhdCB1c2VyIHdhbnRzIG9yIGV4cGVjdHMuIEFuZCBpdCBpcyBldmVuDQo+Pj4g
d29yc2UgdGhlbiB0aGUgcHJldmlvdXMgY2FzZSwgYmVjYXVzZSB3aXRob3V0IFNDTUkgSSBhbSBz
dXJlIHRoYXQgaWYgSQ0KPj4+IGRpZG4ndCBnYXZlIGEgZG9tYWluIGFjY2VzcyB0byBhIHBlcmlw
aGVyYWwsIHRoZW4gaXQgY2FuJ3QgYWZmZWN0cyBpdHMNCj4+PiBzdGF0ZS4gSWYgeW91IHJlYWxs
eSB3YW50IHRvIHN1cHBvcnQgc3VjaCBjYXNlLCB0aGVuIHlvdSBzaG91bGQgZW5zdXJlDQo+Pj4g
dGhhdCBvbmx5IEhXRE9NIGNhbiBhY2Nlc3MgU0NNSSBvZiBTQ1AgZG9lcyBub3Qgc3VwcG9ydA0K
Pj4+IFNFVF9ERVZJQ0VfUEVSTUlTU0lPTlMuDQo+Pj4NCj4+IFdoZW4gb25seSB0aGUgSFdET00g
aGFzIGFjY2VzcyB0byB0aGUgU0NNSSBvZiB0aGUgU0NQIHdpdGhvdXQNCj4+IFNFVF9ERVZJQ0Vf
UEVSTUlTU0lPTlMgc3VwcG9ydCwgdGhlcmUgaXMgbm8gcG9pbnQgaW4gdXNpbmcNCj4+IHNjbWkt
bXVsdGlhZ2VudCBhdCBhbGwuIEluIHRoaXMgY2FzZSwgc2NtaS1zaW5nbGUtYWdlbnQgKHdoaWNo
IGhhcw0KPj4gYWxyZWFkeSBiZWVuIG1lcmdlZCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCj4+
DQo+PiBTbyBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBtYWtlIFNFVF9ERVZJQ0VfUEVSTUlT
U0lPTlMgc3VwcG9ydA0KPj4gbWFuZGF0b3J5IGluIHRoaXMgY2FzZSBhbmQgZmFpbCBpZiBpdCBp
cyBub3Qgc3VwcG9ydGVkLiBXZSBzaG91bGQgYWxzbw0KPj4gbWVudGlvbiB0aGlzIGluIHRoZSBk
b2N1bWVudGF0aW9uLg0KPj4NCj4+IFdoYXQgZG8geW91IHRoaW5rPw0KPiBXZWxsLCB0aGlzIGNl
cnRhaW5seSBpcyBhbiBvcHRpb24uIEluIG90aGVyIHdvcmRzLCBJIGFtIGZpbmUgd2l0aCB0aGF0
Lg0KPg0KPj4+IFsuLi5dDQo+Pj4NCj4+Pg0KPj4+Pj4+ICtDb25maWd1cmUgU0NNSSBmb3IgRG9t
MA0KPj4+Pj4gIkhvdyB0byBjb25maWd1cmUuLi4iIG9yICJDb25maWd1cmluZy4uLiINCj4+Pj4+
DQo+Pj4+Pj4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+Pj4+Pj4gK1NldCB0aGUgRG9tMCBT
Q01JIGFnZW50IElEIGluIHRoZSBkZXZpY2UgdHJlZSB1c2luZyB0aGUgWGVuIFNDTUkgY29udGFp
bmVyIHVuZGVyIGBgL2Nob3NlbmBgLg0KPj4+Pj4+ICtBZGQgYGB4ZW4sZG9tMC1zY2ktYWdlbnQt
aWRgYCB0byB0aGUgYGB4ZW4sc2NpYGAgbm9kZS4gSWYgdGhlIHByb3BlcnR5IGlzIGFic2VudCwg
U0NNSSBzdGF5cw0KPj4+Pj4+ICtkaXNhYmxlZCBmb3IgRG9tMCBhbmQgdGhlIFNDTUkgbm9kZXMg
YXJlIHJlbW92ZWQgZnJvbSBEb20wIERULg0KPj4+Pj4+ICsNCj4+Pj4+PiArLi4gY29kZS1ibG9j
azo6IGR0cw0KPj4+Pj4+ICsNCj4+Pj4+PiArICBjaG9zZW4gew0KPj4+Pj4+ICsgICAgeGVuIHsN
Cj4+Pj4+PiArICAgICAgcmFuZ2VzOw0KPj4+Pj4+ICsgICAgICB4ZW5fc2NtaV9jb25maWcgew0K
Pj4+Pj4+ICsgICAgICAgIGNvbXBhdGlibGUgPSAieGVuLHNjaSI7DQo+Pj4+Pj4gKyAgICAgICAg
eGVuLGRvbTAtc2NpLWFnZW50LWlkID0gPDA+OyAgLyogRG9tMCBhZ2VudCBJRCAqLw0KPj4+Pj4+
ICsgICAgICAgIC8qIGFnZW50cywgc2hhcmVkIG1lbW9yeSBhbmQgc2NtaV94ZW4gYXMgc2hvd24g
YWJvdmUgKi8NCj4+Pj4+PiArICAgICAgfTsNCj4+Pj4+PiArICAgIH07DQo+Pj4+Pj4gKyAgfTsN
Cj4+Pj4+PiArDQo+Pj4+Pj4gK1RoZSBIb3N0IERUIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlz
IGNvcGllZCB0byB0aGUgRG9tMCBEVCB1bm1vZGlmaWVkLiBIb3dldmVyLCBmb3IgRG9tMCBTQ01J
DQo+Pj4+Pj4gK2NvbmZpZ3VyYXRpb24sIFhlbiByZWxpZXMgb24gdGhlIGBgYWdlbnRzYGAgY2hp
bGQgYW5kIHRoZSBgYHhlbixkb20wLXNjaS1hZ2VudC1pZGBgDQo+Pj4+PiAiY2hpbGQgbm9kZSIN
Cj4+Pj4+DQo+Pj4+Pj4gK3Byb3BlcnR5IGZyb20gdGhlIGBgeGVuLHNjaWBgIGNvbnRhaW5lciB1
bmRlciBgYC9jaG9zZW5gYC4gSWYgdGhlIGBgL2Zpcm13YXJlL3NjbWlgYCBub2RlIGlzDQo+Pj4+
Pj4gK21pc3Npbmcgb3IgZGlzYWJsZWQsIG9yIGlmIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAg
aXMgbm90IHByb3ZpZGVkLCB0aGUgRG9tMCBTQ01JIGFnZW50IHdpbGwgbm90DQo+Pj4+Pj4gK2Jl
IGNvbmZpZ3VyZWQuDQo+Pj4+Pj4gKw0KPj4+Pj4+ICsuLiBub3RlOjoNCj4+Pj4+PiArDQo+Pj4+
Pj4gKyAgVGhlIGBgeGVuLGRvbTAtc2NpLWFnZW50LWlkYGAgdmFsdWUgbXVzdCBtYXRjaCB0aGUg
YGBmdW5jX2lkYGAgYW5kIGBgc2htZW1gYCBwYWlyaW5nIHByb3ZpZGVkIGJ5DQo+Pj4+Pj4gKyAg
dGhlIEVMMyBmaXJtd2FyZSBmb3IgRG9tMCAoZm9yIGV4YW1wbGUgaW4gdGhlIGBgL2Zpcm13YXJl
L3NjbWlgYCBub2RlKS4NCj4+Pj4+IFdlbGwsIG1heWJlIGJldHRlciB0byB1c2UgcGhhbmRsZSB0
aGVuPyBMaWtlDQo+Pj4+Pg0KPj4+Pj4geGVuLGRvbTAtc2NpLWFnZW50LWlkPTwmYWdlbnRAMD4N
Cj4+Pj4gSXQgaXMgdXNlZCB0byBzZXQgYXJtX3NjaV9hZ2VudF9pZCBpbiB0aGUgY29uZmlnIGFu
ZCB3b3JrcyB0aGUgc2FtZSB3YXkNCj4+Pj4gYXMgbGlieGwsIHNvIHdlIG1haW50YWluIGNvbnNp
c3RlbnQgYXBwcm9hY2hlcyBmb3Igc2V0dGluZyBkb21faWQgaW4NCj4+Pj4gYm90aCBsaWJ4bCBh
bmQgdGhlIGRldmljZS10cmVlLg0KPj4+Pg0KPj4+PiBBZGRpdGlvbmFsbHksIHRoZSBhZ2VudF9p
ZCBpcyB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBzY21pX2NoYW5uZWwuDQo+Pj4+DQo+Pj4+IEkg
ZG9uJ3Qgc2VlIGFueSBwYXJ0aWN1bGFyIGJlbmVmaXRzIHRvIHVzaW5nIGEgcGhhbmRsZSBoZXJl
LCBidXQgcGVyaGFwcw0KPj4+PiBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcuIENvdWxkIHlvdSBjbGFy
aWZ5Pw0KPj4+IEhhdmluZyBsZXNzIHJvb20gZm9yIHVzZXIgZXJyb3IuIEhhdmluZyBwaGFuZGxl
LCB5b3UgY2FuIGV4dHJhY3QgYm90aA0KPj4+IGZ1bmNfaWQgYW5kIHNobWVtIGZyb20gaXQuIEJ1
dCwgdGhpbmtpbmcgb2YgaXQsIHlvdSBjYW4gZXh0cmFjdCBzaG1lbQ0KPj4+IGp1c3QgYnkgbG9v
a2luZyBhdCBmdW5jX2lkLi4uIE9uIG90aGVyIGhhbmQsIGl0IGlzIGJldHRlciB0byBtb3ZlIGNo
ZWNrcw0KPj4+IHRvIHRoZSBjb21waWxhdGlvbiB0aW1lLiAnZHRjJyB3aWxsIHRlbGwgeW91IGlm
IGl0IGNhbid0IGZpbmQgYSBwaGFuZGxlLA0KPj4+IGJ1dCBpdCB3aWxsIG5vdCB0ZWxsIHlvdSBp
ZiBudW1lcmljIGFnZW50X2lkIGRvZXMgbm90IG1hdGNoIGFueSBlbnRyeSBpbg0KPj4+IHRoYXQg
YWdlbnRzIGFycmF5Lg0KPj4+DQo+Pj4gWy4uLl0NCj4+IE1vdmluZyB0aGUgY2hlY2tzIHRvICdk
dGMnIGNvbXBpbGF0aW9uIHRpbWUgc291bmRzIHJlYXNvbmFibGUuDQo+Pg0KPj4gSSBjYW4gcmVv
cmdhbml6ZSB0aGlzIGluIHRoZSBmb2xsb3dpbmcgd2F5Og0KPj4gMSkgTWFrZSBpdCBsb29rIGxp
a2U6DQo+PiAgICAgeGVuLGRvbTAtc2NpLWFnZW50ID0gPCZhZ2VudEAwPjsNCj4+DQo+PiAyKSBG
b3IgZG9tMGxlc3MgY29uZmlndXJhdGlvbjoNCj4+ICAgICBjaGFuZ2U6ICB4ZW4sc2NpLWFnZW50
LWlkID0gPDI+Ow0KPj4gICAgIHRvIGxvb2sgbGlrZSB4ZW4sc2NpLWFnZW50ID0gPCZhZ2VudEBY
PjsNCj4+DQo+PiAzKSBmb3IgeGVuLXNjbWktYWdlbnQgbm9kZSBhZGQgeGVuLHNjaS1hZ2VudC1p
ZCBvcHRpb25hbCBwcm9wZXJ0eS4NCj4+DQo+PiBEb2VzIHRoaXMgbWF0Y2ggd2hhdCB5b3UgaGFk
IGluIG1pbmQ/DQo+IFllcy4NCj4NCj4gSnVzdCBhIHNtYWxsIG5vdGU6IGl0IHdpbGwgbm90IHdv
cmsgZXhhY3RseSBsaWtlIHRoYXQsIGJlY2F1c2UgYWdlbnRAeA0KPiBpcyBhIG5vZGUgbmFtZSwg
bm90IGEgbm9kZSBsYWJlbC4gWW91J2xsIGVuY291bnRlciBhbiBlcnJvciBpZiB5b3UnbGwgdHJ5
DQo+IHRvIGNvbXBpbGUgZGV2aWNlIHRyZWUgd2l0aCB0aGlzIGV4YWN0IGNvZGUuDQo+DQo+IFsu
Li5dDQoNCk9uZSBub3RlIHJlZ2FyZGluZyB0aGlzIGFwcHJvYWNoIHRoYXQgSSBqdXN0IG5vdGlj
ZWQ6DQoNCklmIHdlIG1vdmUgdG8gdGhlIGZvbGxvd2luZyBmb3JtYXQ6DQoNCiAgICAgICAgICAg
ICAgICAgICAgIHhlbixkb20wLXNjaS1hZ2VudCA9IDwmc2NtaV9hZ2VudF9kb20wPjsgLy8NCiZz
Y21pX2FnZW50X2RvbTAgaXMgbGluayB0byBhZ2VudEAwOg0KDQp3ZSBydW4gaW50byB0aGUgZm9s
bG93aW5nIHByb2JsZW06DQoNCiAgICAgICAgICAgICAgICAgICAgIHNjbWlfYWdlbnRfZG9tMDog
YWdlbnRAMCB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD47IC8qIG9wdGlv
bmFsIGZpZWxkICovDQogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4ZW4s
c2NtaS1hZ2VudCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgYXJtLHNtYy1pZCA9IDwweDgy
MDAwMDAyPjsNCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG1lbSA9IDwmc2NtaV9zaG1fMD47
DQogICAgICAgICAgICAgICAgICAgICB9Ow0KDQpIZXJlLCB3ZSBzdG9yZSB0aGUgYWdlbnRfaWQg
Zm9yIGFnZW50QDAgaW4gdGhlIHJlZyBwcm9wZXJ0eS4gVGhlIGlzc3VlDQppcyB0aGF0IHJlZyBp
cyBvcHRpb25hbCwgYW5kIGlmIGl0IGlzIG9taXR0ZWQsIHdlIGhhdmUgdG8gcmVxdWVzdCB0aGUN
CmFnZW50X2lkcyB1c2luZyB0aGUgU0NNSV9CQVNFX0RJU0NPVkVSX0FHRU5UIFNDTUkgY2FsbC4N
Cg0KVGhpcyBtZWFucyB0aGF0IHdoZW4gd2Ugc2V0IGFybV9zY2lfYWdlbnRfaWQgaW4gdGhlIGNy
ZWF0ZV9kb20wDQpmdW5jdGlvbiwgd2UgbmVlZCB0byBhY2Nlc3MgdGhlIHNjbWlfbXVsdGlhZ2Vu
dCBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzDQphbiBhZGRpdGlvbmFsIGNhbGxiYWNrIHRvIGJlIGFk
ZGVkIHRvIHRoZSBzY2kuaCBpbnRlcmZhY2UuDQoNCkknbSB3cml0aW5nIHRoaXMgdG8gbGV0IHlv
dSBrbm93IHRoYXQgdGhlc2UgY2hhbmdlcyB3aWxsIHJlcXVpcmUNCm1vZGlmaWNhdGlvbnMgdG8g
dGhlIHNjaSBpbnRlcmZhY2UuIFBsZWFzZSByZWFjaCBvdXQgaWYgeW91IGhhdmUgYW55DQp0aG91
Z2h0cyBvciBxdWVzdGlvbnMuDQoNClRoYW5rIHlvdSENCg0K


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:28:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:28:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474392.1681527 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOui4-0007oS-4Z; Thu, 05 Nov 2026 10:28:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474392.1681527; Thu, 05 Nov 2026 10:28:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOui4-0007oL-0e; Thu, 05 Nov 2026 10:28:44 +0000
Received: by outflank-mailman (input) for mailman id 1474392;
 Thu, 05 Nov 2026 10:28:43 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <berrange@redhat.com>) id 1xOui3-0007oF-7V
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:28:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOui2-00HQP8-KH
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:28:42 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 6aec5a55-2eae-0a2a0a5409dd-0a2a450b86ec-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:28:42 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <berrange@redhat.com>)
 id 6aec5a59-b7e8-0a2a450b0019-aa0a817cb309-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:28:42 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-623-F6ZWGNpJMw-Pg2F3xWgSYQ-1; Thu,
 05 Nov 2026 05:28:35 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id CCE78180120C; Thu,  5 Nov 2026 10:28:28 +0000 (UTC)
Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id B120019AC074; Thu,  5 Nov 2026 10:28:18 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793874521;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=beoCTXwXgtPga18h8hkf+gkXIHVW2MJu8A4Vg/XMQo4=;
	b=HU9Ky5ggLARTz+4j/k2KEOLPKVkIlW11F00ioNz+wXHJpNtXbcoB2XlwNdQ5I0IoMqbOVf
	uGrgJMi1u2zKnBygnAcsVT1IzbEKR5NDB+8I+3307Z0dXK/+DRBHBx0YcT/zRPT6CNknh0
	GMid6m+zfmfbgzwyu4k1VOy2JRS9ElA=
X-MC-Unique: F6ZWGNpJMw-Pg2F3xWgSYQ-1
X-Mimecast-MFC-AGG-ID: F6ZWGNpJMw-Pg2F3xWgSYQ_1793874510
Date: Thu, 5 Nov 2026 10:28:15 +0000
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Cc: Yonggang Luo <luoyonggang@gmail.com>,
	BALATON Zoltan <balaton@eik.bme.hu>, qemu-devel@nongnu.org,
	Anthony PERARD <anthony@xenproject.org>,
	Felipe Balbi <balbi@kernel.org>,
	Aleksandar Rikalo <arikalo@gmail.com>,
	Philippe Mathieu-Daude <philmd@mailo.com>,
	Antony Pavlov <antonynpavlov@gmail.com>,
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	=?utf-8?B?SGVydsOp?= Poussineau <hpoussin@reactos.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>, qemu-ppc@nongnu.org,
	Alexandre Iooss <erdnaxe@crans.org>,
	Weiwei Li <liwei1518@gmail.com>, Zhao Liu <zhao1.liu@intel.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= <philmd@oss.qualcomm.com>,
	Thomas Huth <th.huth+qemu@posteo.eu>,
	=?utf-8?Q?Cl=C3=A9ment?= Chigot <chigot@adacore.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Yoshinori Sato <yoshinori.sato@nifty.com>,
	Frederic Konrad <konrad.frederic@yahoo.fr>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Chao Liu <chao.liu@processmission.com>,
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>,
	Alistair Francis <alistair@alistair23.me>,
	Huacai Chen <chenhuacai@kernel.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Gaurav Sharma <gaurav.sharma_7@nxp.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Alistair Francis <alistair.francis@wdc.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo
 registration
Message-ID: <auxaPyRRm3MTBz1f@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20261030151539.1872-1-luoyonggang@gmail.com>
 <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com>
 <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu>
 <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
 <aunnuwhsx9ZOOXBX@redhat.com>
 <45433754-3cea-41fc-9f45-65a328d0efca@oss.qualcomm.com>
MIME-Version: 1.0
In-Reply-To: <45433754-3cea-41fc-9f45-65a328d0efca@oss.qualcomm.com>
User-Agent: Mutt/2.4.3 (2026-10-09)
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: ZIiY6djJNnBH7eNc4lekrcUQLCh2s6JZ3Hwp7ax609k_1793874510
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793874522-184CB9EA-1A33C7E2/35/111497
X-purgate-type: clean
X-purgate-size: 1736

On Thu, Nov 05, 2026 at 12:27:18AM -0800, Pierrick Bouvier wrote:
> On 11/3/2026 5:55 AM, Daniel P. Berrangé wrote:
> > On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
> >> On Tue, Nov 3, 2026 at 9:23 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
> >>>
> >>> On Tue, 3 Nov 2026, Yonggang Luo wrote:
> >>> That means exposing all the boiler plate for all machines other than the
> >>> simplest case. I think it would be better to keep DEFINE_MACHINE_EXTENDED
> >>> but maybe rethink the existing wrappers and drop unused ones and maybe add
> >>> new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still keep
> >>> the boiler plate hidden.
> >>
> >> Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACHINE_EXTENDED
> >> and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
> >> "targets" or "arch_mask" parameter.
> > 
> > Given that we don't need to do general per-arch type filtering in
> > QOM, we could just move 'is_available' out of TypeInfo, and into the
> > MachineClass, so it is a regular class level property, which can be
> > set in the class_init methods, and thus avoid any changes to the
> > DEFINE_MACHINE macros.
> >
> 
> Some cpus need it also, and it's used for filtering purpose at this time
> (to avoid duplication at registration). We already depend on this behavior.

Can you give me more info on the problem with the CPUs ? What cases
have duplicate class names with CPUs ?

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:34:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:34:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474401.1681535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOun6-0001Ia-Kt; Thu, 05 Nov 2026 10:33:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474401.1681535; Thu, 05 Nov 2026 10:33:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOun6-0001IT-I5; Thu, 05 Nov 2026 10:33:56 +0000
Received: by outflank-mailman (input) for mailman id 1474401;
 Thu, 05 Nov 2026 10:33:56 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOun5-0001IN-Uw
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:33:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOun5-00HPCb-3h
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:33:55 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aec5b87-2eae-0a2a0a5409dd-0a2a450781ce-40
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:33:55 +0100
Received: from [40.93.201.58]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aec5b91-b4ea-0a2a45070019-285dc93aff32-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:33:54 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by PH8PR03MB7272.namprd03.prod.outlook.com (2603:10b6:510:251::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026
 10:33:51 +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.0592.009; Thu, 5 Nov 2026
 10:33:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=Iz3RgHB4FGxx7ELBiqjb81sZFZTJQvNmwuj+GYB4eKqrbTMnwHNpgLRc369punfNF5uGV7KQz2Bp9axcdIRQyzALh3qIH8cmh6Mzf37zYzqRmoF0JSHnBGWCncJU3/241TvFGvO8d2Rgmba1Zn4esWw2RzVqv9dLcNPNqha3DekESSXP7tAsDUg12W9RAZdiaQ9vVFQJtIdX/vi7WnYowjOK+zXNNnF4lRLd8ynE3h5HnvMCvCDwPQntBvAgFo2jR+zrExOxrZ9JO+6drGlMydPrTpkEbNxqBpRDH/bQqzdZRm9tfJZsQEuM+pkD05Zbs97nvJ1eS59+RP0DrVKBNA==
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=WKX+41IYFCzMQGH9G/FCabIrzjJVwXwjzMApee5D0gs=;
 b=UMI0sbFXk0csHqGkYFGdt4PGOqeZqJ7pmN5YW25ceJ+ViymaELfylBonBLenhoI0NtEY2p9OeoyhyOKSuira63puulBM3x7StqxytbeG8Tnv9SERZVDgTL8lHm4xTPHxWM9ToEQcErxfO4XAc1ltX89pIPO1jH5zCubcMtgjaI5S6ZJQ1aKILdOWijw85UYWUhcvE5tmnYyQDRGDHabOMt1XIhZQrT51XcC3mFx5OtI0H2Jm4wHp31t+OBCg2qGIeWLNy3Iyv2GyFCwiYtgDI5BCSIfLcF+9P//+U+aEqBoD/WXeKAU7yOG7zzzg+asTBNSsxtFBRhI2PHo+k+EIWQ==
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=WKX+41IYFCzMQGH9G/FCabIrzjJVwXwjzMApee5D0gs=;
 b=a70EnVyZENjlX0k6Pl9N1hZfjcffiSjLTJyIssgwe2TICd3EdphlK2+w6b2M8aD4uK/M7atLIpZPzm68lZpGfS3y/Yyd6iLFGDJnK0KfxBqfcPcziAD0uS9jULUOYAwcu6xyN85+Cqw7+ORVVbBtQbLpwfEtcRMZniSWGNjcoog=
From: Ross Lagerwall <ross.lagerwall@citrix.com>
To: "dmukhin@ford.com" <dmukhin@ford.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, "jason.andryuk@amd.com"
	<jason.andryuk@amd.com>, "jbeulich@suse.com" <jbeulich@suse.com>,
	"roger@xenproject.org" <roger@xenproject.org>, "teddy.astie@vates.tech"
	<teddy.astie@vates.tech>, "dmukhin@xen.org" <dmukhin@xen.org>
Subject: Re: [PATCH v1 24/28] x86/hvm: avic: ensure SVM AVIC is disabled with
 nested guest
Thread-Topic: [PATCH v1 24/28] x86/hvm: avic: ensure SVM AVIC is disabled with
 nested guest
Thread-Index: AQHdbMXxDi7qjLhoDUuiCr7Mk5ZX/7cfRdBN
Date: Thu, 5 Nov 2026 10:33:50 +0000
Message-ID:
 <CH8PR03MB82746AFEBD404CB6FC86084AF0772@CH8PR03MB8274.namprd03.prod.outlook.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-25-dmukhin@ford.com>
In-Reply-To: <20261105013347.719392-25-dmukhin@ford.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH8PR03MB8274:EE_|PH8PR03MB7272:EE_
x-ms-office365-filtering-correlation-id: 7dc91c38-46b2-40c4-092d-08df3b284844
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|38070700021|56012099006|261021121427099003|261102123227099003|261022105027099003|5023799004|4143699003|11063799006|261022075727099003|261026121527099003|261026140227099003|261009223027099003|261028144727099003|22082099003|18002099003|10067099003;
x-microsoft-antispam-message-info:
 3CImdKBZqhVYPgBlKMed0rXeVqRQbkeEA1nC0L6Qpy3EOJZeic5e6PsLgNMSRs/e8GDRVMOem4sbsY6Tjs452aIHh86tfGjRm2ffmoGZcdrEgqlAu/6Gz9zIZ8gXu/uSwGe6e+cNDgNvaefL9dUwwjc1qyAtK84Sdr7Lu7l/5EtVvBGZ7gh0RDmK3Zfsl82jUJsj9tVY18n3lgy7LNxLj8ocTX0w9Xw9Mrnct77tE2+kjHeH9fp0xf4n+EdAsMX5kwFOtX+OfwH2BTJJoMZrs+u6Unf9ta/laU1tNk78Mhwfv5dyroyk7SZNTULrPBCeUDSnNF+SKwXO9LajZ715ZwCbGVt7UqQCvlbuvQ7B3/aqM6jLuQzQxLPzvaPAAXdHIkX33hYj7qXktS+gaAli54P9rHCWV5vocz+1oc/c7rZ/G9SfKLipUxDYRBU222gewtBySWt47Isr+RGw7hEpNEV9pkfzT+z+ex4/OsFR62mKdbqk6zhBQ82CB2kOKJSi9S7jV+EnUmFAnxhPccMOyqS3loVcxPgtcWhZ18z0QO9tnhFgxe8L+HyVkZQ3OYoyMTD56ql0PnjNukT/6pfgK0DVwolGvekHOgsWu0wHuZ4eVJcxDlduA98IU1MRF+drUP40Fyn4rdPCyzeWjDtoyieZ9ScLRaegS6ia45zvrZ9u/3VyhHI+31i5MNQor0bRdQGmuS6qPsBarZ34ZwYY/QphCD7wD5226oKvdGS8X3s=
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)(23010399003)(366016)(1800799024)(38070700021)(56012099006)(261021121427099003)(261102123227099003)(261022105027099003)(5023799004)(4143699003)(11063799006)(261022075727099003)(261026121527099003)(261026140227099003)(261009223027099003)(261028144727099003)(22082099003)(18002099003)(10067099003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?96OFSRLR1GYm06SubF2EYUx6iny/E5oX/lm0vgjASt3nFAWii7cuTSDGKZ?=
 =?iso-8859-1?Q?2YzAPexm7+rdVZKNHIJLKp11aV1OVlG4Hc0EdT5lyJj9Nl9l7I0m74lje+?=
 =?iso-8859-1?Q?5r57YfCGrsTjnHZCCLnU4PQ0c0azEwJbFDkZ9c+DnjncsFyxLZaQ2a7BTW?=
 =?iso-8859-1?Q?tngMYIHxBZfJq/+CIf93XWO/wQkGL7AhV2hJ3iLC1xycV5rqzwyQJN2gds?=
 =?iso-8859-1?Q?lOn/5XYPnJ8EvUFF65ApMHzBzAANXGyUmEXa+JygsngQpjMYuQoBV+UCqv?=
 =?iso-8859-1?Q?2Sn2/8Ev87a1DW7SCIRedePxDzFKLve/DMbRVWNl7JQFedBjB/CR0IBv4i?=
 =?iso-8859-1?Q?FTXrM/h6NLsarlD30wksunTujxpq4en56OtvEMIoq/P4h1mLOGMd2oyiHT?=
 =?iso-8859-1?Q?w+VUR3oe2Ri7VS7g5qw5rXDyt9mtRHzpWaEJZ5toeihLMlQq1PQN8oAgbT?=
 =?iso-8859-1?Q?yWN9tPbBBdRW0ddqtU6vFzlnNVA2RNh3IV7B4bWYJ9+Mexwsm11VW355qe?=
 =?iso-8859-1?Q?CZEfskYPMdypY7Hro5VmJsW8QbtBhCVL4/fFGwU4uslfJXYmEwkKtbuW3g?=
 =?iso-8859-1?Q?RmxfRC3CKtoCUA9gKR1xDFaYHl0OYT7XZ4MiT5G4/76GRGGITUAXWvdiDK?=
 =?iso-8859-1?Q?TphsEYtrLqHNIT1XzaXF8yWE0Ust3MJUn99wHmS8rA0z+wTRAYS21jtPWm?=
 =?iso-8859-1?Q?UPE196oTd6JGjI5LVeN7TX2qPPsZeAG3CrSxJzX+n25vf8esvM2bjq5IlP?=
 =?iso-8859-1?Q?6XpsFEmoeoMICfWqsWg44FClE36dFrmz69EvdGQFN553Ol5lYZ93nUMjPo?=
 =?iso-8859-1?Q?fz023PSN/r5EowGRwStpdbZgBFrScnER/ACfT0gzrygIEslXDrJoJWELGI?=
 =?iso-8859-1?Q?sIBjqpcSXT/ouPiUwHcKSXzk9+K19t6DFEcDfffHcJBsbcKIVHoYufvReZ?=
 =?iso-8859-1?Q?ptVDM14I6sQNAIWlWqcd0XNHJWrnSOgMmKD+ZZB3bsSG6H0zPtS3fMndPO?=
 =?iso-8859-1?Q?3JeKnjrXPOGdIo/JhzFx2WYbXP8Rw4jCFij3S7vzsZldet0WCOvAtbXZCl?=
 =?iso-8859-1?Q?Uy18nDwKeM0QTFsY33bIgPAXTPlysk0nkoxTxKrrxUvEEc6Mxr5jzGPMFn?=
 =?iso-8859-1?Q?2i6Iyyt72TiLrr9QkPIy+wi/sS2Vjx+jnm+6I1NxJLp18pVYNiM0XxkMl5?=
 =?iso-8859-1?Q?wiSbfkMdNyGHVSr1Bu4zcLgEw74CDHf0RkkBCNc83C/1pBZ0xNMuQWpl+m?=
 =?iso-8859-1?Q?K2IPSzcFmNR5t8NjZ90cSIVNEn5aFtAJ0RcdUnKk6XgOYy6Bay1w62diAG?=
 =?iso-8859-1?Q?DhnD/T8m+X97KCIT6pvrAMH61PEn3rC7OZwxm2MUH0yghRwNn2rGBII5V/?=
 =?iso-8859-1?Q?bM6L6tSvta9fUq/c0aTsxzawkpYwOk6lE60GvVpN2W4E87fkGmuSd7j8L2?=
 =?iso-8859-1?Q?59SnU5Kj6z5GSsfXeHvYMkfNYewvYQgnhxOw3zGBA6vnzN1mK1hjM/GWNK?=
 =?iso-8859-1?Q?hB1L1FNknEjghYzxTGV0bj9yDcXCnCKlyLdSr+pR7Yu2QLvWn2Nh6SAF/J?=
 =?iso-8859-1?Q?s97OZFFMOZLB/qcLPin1K9RQSLlERQ0ISP8QWmO6SVlg3GeoriZux49A6O?=
 =?iso-8859-1?Q?REVYiUTgEBiE0nCCj4M87kQuY3cSpYMwaGCrjTXzAwOYvAaxSR6C/Nbcx5?=
 =?iso-8859-1?Q?nwgmfysU1oJw5eOTiGbHDu/SWTfNh6R/F5iU6aQ4vwgG9vQFjXoRiz+/iW?=
 =?iso-8859-1?Q?TZwx2JjLJ9KJRDGcAxwU+fjyoup2+JoHgVRYzGiv/gJJMjFvUICOfgfK5p?=
 =?iso-8859-1?Q?La8NNVtxDA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7dc91c38-46b2-40c4-092d-08df3b284844
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2026 10:33:50.6772
 (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: +NwrK+CU17F/3gijchy5EZ7a8xR0x2eyYo0H336dV98AkBtG5JVjzyUBbC9JBU+IIkBwR8xTFVMhpI4/ngOc5EEtlvDskrG+8fkMJ2Pr3UA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR03MB7272
X-purgate-ID: tlsNG-ef75cf/1793874835-3C817AE4-4F8CBE48/10/78276251493
X-purgate-type: spam
X-purgate-size: 2509

> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> on behalf of dmu=
khin@ford.com <dmukhin@ford.com>=0A=
> Sent: Thursday, November 05, 2026 01:33=0A=
> To: xen-devel@lists.xenproject.org <xen-devel@lists.xenproject.org>=0A=
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; jason.andryuk@amd.com <jas=
on.andryuk@amd.com>; jbeulich@suse.com <jbeulich@suse.com>; roger@xenprojec=
t.org <roger@xenproject.org>; teddy.astie@vates.tech <teddy.astie@vates.tec=
h>; dmukhin@xen.org <dmukhin@xen.org>; Denis Mukhin <dmukhin@ford.com>=0A=
> Subject: [PATCH v1 24/28] x86/hvm: avic: ensure SVM AVIC is disabled with=
 nested guest=0A=
>=0A=
>=0A=
> From: Denis Mukhin <dmukhin@ford.com>=0A=
>=0A=
> AVIC in nested virtualization environment is not supported as of yet.=0A=
>=0A=
> Ensure there will be no problems in any production environments if AVIC=
=0A=
> got enabled in nested guest by short-circuiting logic in=0A=
> svm_avic_create_vmcb().=0A=
>=0A=
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>=0A=
> ---=0A=
> =A0xen/arch/x86/hvm/svm/avic.c | 9 +++++++++=0A=
> =A01 file changed, 9 insertions(+)=0A=
>=0A=
> diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c=0A=
> index 37a857f28d14..e19489bd485c 100644=0A=
> --- a/xen/arch/x86/hvm/svm/avic.c=0A=
> +++ b/xen/arch/x86/hvm/svm/avic.c=0A=
> @@ -4,6 +4,7 @@=0A=
> =A0 */=0A=
> =A0=0A=
> =A0#include <asm/hvm/emulate.h>=0A=
> +#include <asm/hvm/nestedhvm.h>=0A=
> =A0#include <asm/msr.h>=0A=
> =A0#include <asm/p2m.h>=0A=
> =A0#include <xen/param.h>=0A=
> @@ -170,6 +171,14 @@ static bool avic_vcpu_supported(struct vcpu *v)=0A=
> =A0=A0=A0=A0=A0=A0=A0=A0 return false;=0A=
> =A0=A0=A0=A0 }=0A=
> =A0=0A=
> +=A0=A0=A0 if ( nestedhvm_enabled(d) && nestedhvm_vcpu_in_guestmode(v) )=
=0A=
> +=A0=A0=A0 {=0A=
> +=A0=A0=A0=A0=A0=A0=A0 gprintk(XENLOG_WARNING,=0A=
> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 "%pv: AVIC: nested guest i=
s not supported\n",=0A=
> +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 v);=0A=
> +=A0=A0=A0=A0=A0=A0=A0 return false;=0A=
> +=A0=A0=A0 }=0A=
> +=0A=
> =A0=A0=A0=A0 id =3D GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));=0A=
> =A0=A0=A0=A0 if ( id > AVIC_MAX_PHYSICAL_ID )=0A=
> =A0=A0=A0=A0 {=0A=
=0A=
Does this actually work? This function is mostly called from=0A=
svm_vcpu_initialise() and the vCPU is never in guest mode there (i.e. L2).=
=0A=
=0A=
You could probably just drop the second part of the if condition.=0A=
=0A=
Ross=


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 10:41:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 10:41:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474413.1681544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOutv-0003eL-9j; Thu, 05 Nov 2026 10:40:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474413.1681544; Thu, 05 Nov 2026 10:40:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOutv-0003eE-75; Thu, 05 Nov 2026 10:40:59 +0000
Received: by outflank-mailman (input) for mailman id 1474413;
 Thu, 05 Nov 2026 10:40:58 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOutu-0003e8-49
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 10:40:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOutt-00DXEI-Gr
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:40:57 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec5d32-bab6-0a2a0a5309dd-0a2a450aedc6-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:40:57 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec5d39-f2d2-0a2a450a0019-d1558030c559-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 11:40:57 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a20a37703bso12632365e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 02:40:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4532916f2sm133329245e9.5.2026.11.05.02.40.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 02:40:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793875257; x=1794480057; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Cgea8IgC9n38sgqwiYmIv1DTx7WSO1v61TCnny7OieU=;
        b=Yh8CBNcCOxQngd3dgcOeRvgwVKFbEuYhwPR8+lXDUC4ClL/3ZyQNtIXUSiH2LOrTfg
         B1+0I8+MzNI6c4AlsO1ryz9PMWBWlfysnaKBYr3RoBDHTcuLsSgSOYVY7ci8IWAn1htb
         /y9AgM2j8+j1s0DKQcs2nasMgNo/LGYAOJeqyh5xvLNyQFUFNyQyfOzhzmVG7QbmmYW8
         OTS9KKOecG28gOswNRvtMXXqxXvvqKip39LedHZypJVuK92EXoHaYnZPN9BEpzBL6XI2
         CTe05RTlKu7m2VFY3YRPDQ1F08ZSZtFEyq37bM3ZpClTV1yVx1u2ePVGjPdgGh6AI92J
         kzqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793875257; x=1794480057;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Cgea8IgC9n38sgqwiYmIv1DTx7WSO1v61TCnny7OieU=;
        b=H31sxSUjvoD76HVAUflB8z+XHPYbfprHSoBPwuyhElq8fjmM008tIgVVoZj3hv2wMt
         ipdDXWY+3H+s10nbj3lokOfGnkRKXf6VnPzzmNW4djBFQdP1k47haBgkPgiJfBSqCS4U
         An1HNsuT+z8BB5joxZtYR8+kvzWv599pcIrjeqVGFW98YQcO8gX2fHqOO7KOtUI9/pda
         6A8EqSaUuP/pi0+9K3gVuhLoGvBmTa7HKaBe9s5BCnrTZ2HfZtraFKFZCE9igT/CcoeH
         EKETXGkaszw8wlBlr/7ZnHgnQ4EkIfwEB2wLakvR9OZCrIQ2cHoxA+8aoc4hCXKrrFZ/
         B4iQ==
X-Gm-Message-State: APuU4Z/whRpdJTt+0chvYVS3ghH919jd9gGMhrRBDiE6qp+nl5j4vcri
	gdyDZ7ZYqiTvNYcNbI1tku6mBdDZ5eh2ILYV0SKBDyD1u4JyYMx8dpGzWzieS/Xwng==
X-Gm-Gg: AYBFou3yVtJE9i/+XUdxmw81US2jPZhsS59OE5e6cvw5Xs65Vuip/oHFlaWXRI4Ts+m
	F93p6epcyl9ObjtpxaGS94fhp9TKIy8xTY2XlEnkK2C/Rdiq2xjKvW1R72AJ2BssdHRT4Sf52NO
	2PuSalLH7UL5XpjiKB7azygTGfSZlC8JSWeuuD0fvAyYmTDvi2DlAE6cXgPOa3ChzDeBtSulnjo
	gmptDJE1nUOs+FCPWnssxDGF/45Xa2TdbqcwuhLgo3n/EpM7B1fRxmdWykzQdpsQ3QWZ6oYyJp0
	GiJtW/X/yCCwxPx4q4/gVYhwXvPe8VHbzYsrEXNqybUUul+twfDpMDUCMLDJpt0TTwGjyRqcaXm
	csJK1O5P5qPXudQo2KUbcXXngLqjUHJxpthmSdrgoZ0IE8exfueJHIj3mVliORjK2dVOaCsek+/
	jrVrryIS6pXf7UXZfF6th5JfpJZGkZCHIeZQyl/oUGnK0Wk9uj67H0cW/g3K/l75n931fmIyVc5
	H9p/evHjFrjoAlwY2JRLw8jiCXGkVc7cKio/iqDFJkbVN+E/L7OeIYgb79Kv0IXyCX6ZzeEdkpv
	Rl5lv6tW1BjAE3cr/ID4IXyc4Z06vfhKhn4oDmzyaN3eCt19jRCM4Di/OD32Eb27fEsJFmdQGvA
	b12K0f4AfF87ypJFC
X-Received: by 2002:a05:600c:3b2a:b0:4a2:cbe:bec2 with SMTP id 5b1f17b1804b1-4ac18a8882cmr414175735e9.32.1793875256858;
        Thu, 05 Nov 2026 02:40:56 -0800 (PST)
Message-ID: <b93ddf46-14b9-4dd6-ade7-ba343e73bc40@suse.com>
Date: Thu, 5 Nov 2026 11:40:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <78cd46cc-84ed-46df-96c9-26ce97ed0da0@suse.com> <atEADbxD4mL_bXy6@Mac.lan>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <atEADbxD4mL_bXy6@Mac.lan>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793875257-4BAD4CFC-A60693D3/10/78276251493
X-purgate-type: spam
X-purgate-size: 1194

On 15.10.2026 18:32, Roger Pau Monné wrote:
> On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -450,7 +450,9 @@ static void __init pvh_init_p2m(struct d
>>  static int __init pvh_populate_p2m(
>>      struct domain *d,
>>      const struct e820entry *e820,
>> -    unsigned int nr_e820)
>> +    unsigned int nr_e820,
>> +    unsigned long initrd_start,
>> +    unsigned long initrd_end)
> 
> We already have a rangeset in find_memory() that contains the RAM
> regions, I think it would be better if we propagated that rangeset
> here as it would make the logic easier overall.  We would need to
> initialize it earlier (as find_memory() is used after pvh_init_p2m()),
> but would avoid the extra logic.

find_memory() is now gone, and a RAM rangeset exists at wider scope. However,
that rangeset still has stolen (ACPI and reserved) regions subtracted out of
it by the time we call into this function. Are you suggesting to maintain two
rangesets, with the broader one having having only this mapped region
subtracted out? That would get a little unwieldy, I think.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 11:07:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 11:07:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474439.1681553 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvJ2-0000NP-6i; Thu, 05 Nov 2026 11:06:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474439.1681553; Thu, 05 Nov 2026 11:06:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvJ2-0000NI-47; Thu, 05 Nov 2026 11:06:56 +0000
Received: by outflank-mailman (input) for mailman id 1474439;
 Thu, 05 Nov 2026 11:06:54 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xOvJ0-0000NC-Ae
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:06:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOvIz-00FYQC-4O
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:06:53 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aec633e-e002-0a2a0a5209dd-0a2a4501e73e-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:06:51 +0100
Received: from [52.101.46.10]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aec634a-5984-0a2a45010019-34652e0aa11a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:06:51 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB989346.namprd03.prod.outlook.com (2603:10b6:a03:408::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 11:06:48 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.009; Thu, 5 Nov 2026
 11:06:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=Lg7QK+MTxgXU6hUtYc/Q9OwBh7kE3SXwWArgyEfLW/lvzVqx9XSNFNFL4Y+AOXmkKiicmN9qmI+qKtjlUER5Qu/h1+JmbnYL2jRs42fS5B7ZpPfo44yaPQObzpFJBEyy+rv3iSShPeXmrca5J8Jtwe0QjVIdISTSJYIrkn2jJ/aGBX5V08hIG/lDFbgN8amPldB/duiiydt27gszYrwAuJvFBFZ2j/EoSrnEwcN1XEJkXmW54s9BwaL4WjOu3rLFRpNeb7JDtGbAjMXRsqcqY65q2XGxC8Nlmj4P6j2DSD6DVUdyf4z8vCdTa7zUabfkVvf4YqzSEbiTelmiUG+1sQ==
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=0CX2J/U+VNqa2nmdN5fBly2C9BoJdVQc7rdUJ97O9fY=;
 b=FFpULs2GEv+sBLQbL50MoSFaYQXqXZ5mR+3iQEn9rNDrD7fubqze+I01+gGzbFSJJpYTJL/h/xvs6IXUp73JvP1RXc72AbbC8AE2atUq9DQXhqFEyac4KMwr0k6Izv3nufKoyqdVWhMXBFbPIfjnh6so4rNDULuYsQp221FOxbnZ460Fx4PDSsCrn94ExfjzRAhQ5apCpV3yFOg2yaE2cowyattUKe4dRO6l1raoHkoSZfBkrpy1I+2bQqtgaNV1GfuVhY00U8ED2syzPhCHXqf1G5CCwJnU2R0/fBvLWQMcGRnPkjZdv2bhM1bcWT7fRdPKbCPVfG1oL/TPNQTGig==
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=0CX2J/U+VNqa2nmdN5fBly2C9BoJdVQc7rdUJ97O9fY=;
 b=kKfFhE/ywNnqwF4iPXJwGczg1saWSKW0EgzemaU2fThC18U8jq+I8qTR3uNVtEek+s/31wPwjXrts1QjQwp8ht5NdBhUFNiEXyNhdPea2r6zFhNxTW15+N5MXRAtQIT+sO42auI1QjdlTYvofUJ5sBFOTzuCBgt5MhYszEsdcio=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <c89d0110-9ccc-4f50-8e89-aaa993cdf1a6@citrix.com>
Date: Thu, 5 Nov 2026 11:06:44 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org,
 dmukhin@ford.com, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 12/28] x86: apic: use APIC_EIO_ACK instead of
 open-coded 0
To: Jan Beulich <jbeulich@suse.com>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-13-dmukhin@ford.com>
 <63f7b986-b5d4-4d64-9d16-8326cb8534da@citrix.com>
 <109f3308-ff73-4bb0-9ec8-b9b76cbbe93b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <109f3308-ff73-4bb0-9ec8-b9b76cbbe93b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PAZP264CA0132.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:1f8::21) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SJ0PR03MB989346:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a2634bc-fd1e-41ea-1cc5-08df3b2ce2c8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|22082099003|18002099003|10067099003|4143699003|56012099006|261022075727099003|11063799006|261026121527099003|261026140227099003|261028144727099003|261022105027099003|261009223027099003|261021123027099003;
X-Microsoft-Antispam-Message-Info:
	/Pr5bgSArzFo4BBZh6QvXkRgGValsnEvfQL+80ul6M9c8wLv5SwNz72bqolFRT65aaDrpu/YSSKOaEjEGjquv4nzsZ15q+XIZ1otNpTYgAbAyNx1/EeOwhbPlJxAUSepULLV3b99iG9FVldCVsqdopG+J0uNTOyHhTmDDoO0A/U7BgnUqd6dTiIMpbBepqj8iBAVyPRGHEN8oA70vnL4qFwyXHatJqnrHZlyysQp1RqpfadnuR3dA6jldSecPu+N3HcV1zqvdU0fAX2ueLehXmLU1d2TSvu9ZTadcvwEMyGy1Q+QVoSxB/vERpLPLQCWics08X5VFtMJhjOH1XhF1dCGclyXgOT/ygVJcNF91Xk8MWPOBHzhDOHF3/AAd6SJ3sDVVDBmLRy4Y2BM0wA9Q3U1C+gLFyv2TuPJ3jqXCPcmDOWkFICgZDrbP8V9t1d2dvX8vc8Pcnf2sEvHAXktHn2RGmAgyPPNIdO85vtJ3AAHY0DuMZkUSVnX0wDP70MHGGuHtVzZ/PVJmbYzIthcuco5rm2SKdmbvZ27lQSpAwOJ472k8c+fsKKM1m+dSmPR32anz329YB2ejYmJCAVC89FlEvbxiUVdwaN9mcHNg5uWekaprEfukvXRFaSLd5pnCOHPToZq6EeqHAlYw60fhYr0hPlUqrwfYSkO96YPZNw=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(22082099003)(18002099003)(10067099003)(4143699003)(56012099006)(261022075727099003)(11063799006)(261026121527099003)(261026140227099003)(261028144727099003)(261022105027099003)(261009223027099003)(261021123027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VUhvZjU1VDJpQVpsYzl3QURzcVVpQkxtRVBIRFoxZTJtNmg1QnpYYzJ1SHA0?=
 =?utf-8?B?YlFEQ2NBTXk5dld2eUxjL3JtaXJ0Z0hCM051SnVGU3VVVy9STHBLanV0Mmls?=
 =?utf-8?B?QmQrVUt1amNram1PcGZsQzRTODhPV05oQjNURW9oMS90ZXJKOTBQdHJ3dU9V?=
 =?utf-8?B?RVl3UThlazNRd2JPTDUrT2F4cnFKQ1lxZk0ramZjWmJXanY4YlhRM3l1am51?=
 =?utf-8?B?ZmVpcUZObnhpT2xodmhNM1gxdmJDTU9BbzZHUmxNT2V1Q1AzZUZ3RmR2YjNC?=
 =?utf-8?B?R0U4Q1YrN1lQM0xBR3R3M3VwRERDZ0JMdFdhUU94Wld3cHBxRnI0QkZZSmw2?=
 =?utf-8?B?ZGYzZmJMY0pFTCsyVjIraTE5dEkwT0Q5V2hHMGh4eGNjUFhadUFJU2xuOXNF?=
 =?utf-8?B?WVQ0SFROUjIzN0dKTUVPcXFuZ09zNXJucGhkeFR2R1hFQklOelQ2WGdraVh4?=
 =?utf-8?B?RVpHVkxyR3VaWkhvb1ZKRVFzWkNBZjhaVG1oYWRydGYzc3MwL3VPR3BncHp2?=
 =?utf-8?B?Y2VBRnNRSklpOWh6SEFDTVV3eENCcmdCV1RxMThQOUdKVnNBamlUdzBHWWpF?=
 =?utf-8?B?SnZaSHQzUU9LSE5MUjhyRFhlQ2RXcngzM3BCQkttTTVtRitxckIzUW1ueEJD?=
 =?utf-8?B?NXBSWThvMzNZaWxYL0xtWlFDQmpvTjdETERKM1I1WFg1RDYvMXFWYjNhaHJG?=
 =?utf-8?B?YzFwaHlnZGlDMG8xM2N1TW1DUE9sMWdiVWt2WGVpaGgwUkRkSGZUM29ZSmVU?=
 =?utf-8?B?K1RTMkV5ZWlkVHhLRnRmN240ZXgxcWtZUHl6SG1VNm96b0tkM3pnNlhTZFlq?=
 =?utf-8?B?VUsrUXloYzJpSGNQOEFCYUw1Z0NrbmdDckQrK043V1p6ZHE5NFM1dW8weGZE?=
 =?utf-8?B?VHE5dmFkS1EyMWNWQ1BKei9vU0RrNU1KNkp5TEZ6cEIwY3BVWDUzTllrU3Ja?=
 =?utf-8?B?b0ZqUnhpUkUxbVc4MW03bURieEFZN3A4em0yNE02VEljcnRWZUNuN1A0eHIw?=
 =?utf-8?B?Q1paTlVOc096V0M2OHpSc3hHckIwY0EzeFliWHJPQ0F4UHVxQlRGd3ZMNWNN?=
 =?utf-8?B?M3M2VjFSVjZTS2hJQVVieHdPQTBhM1JLeTF5WWlpSlA5NkpxZ1dZNGtrbnV4?=
 =?utf-8?B?eUQ0TURxYlJwWGtKVG93RWJOemYyWEVQOHJxdWFubHhMYlRmY2pZcGdtT0Fz?=
 =?utf-8?B?MEtJWDFPSmdZUWxDZXRnSVlJdW4xYm5jTy9SWWtCelcwR3N3MnJNaWs4VFMv?=
 =?utf-8?B?QmR5NE5kbG9sc1NGcW1CSXdBbjF2dHhxSDBCUkl4M01sSDVHdisxVGsvZ1JQ?=
 =?utf-8?B?QUNhRHhpQ1B1d3BoT2FFY0E1blh6ZDg4SzdFQnMyVGVWRnA4K0QxNnZBMTZL?=
 =?utf-8?B?YnM4V3QxcnJYVXcrZDhqcDBKYjZOclE0ZU1iT2ZTN3g1MmdXR1lvNytoUlpK?=
 =?utf-8?B?bm1zbGtlOTZaazVSd0E1eHBrcTVzNzNqcGdtR3RhS05LdXlPR0lDajk3ZmdN?=
 =?utf-8?B?YTNzWFlGWkY4NG9iaHJFZ3BETURjbktzaXhlbmFvU0QxWEZxeXA2ZlNwaUo1?=
 =?utf-8?B?cHFjUTVnZTRLSTVZbC9YaHpnbDI1RFJmYWtWNEt3a2ljMzN6bDlYUGsrZ1Fu?=
 =?utf-8?B?VXpGV3Z4YnI3WkxNRFJDeGtZb205bDhEWTVPNGd4RUFuSU1kMjI4WUxkTWlw?=
 =?utf-8?B?STJrR0o2d3NuY0Z3cGM3dEdJcm52UXNnZWlid1hBZHppcFNjTEM0TThveEZw?=
 =?utf-8?B?bjU0WXVaMjZHVDk4Smx4RWxPVG5BWGZLUUk3cDFRNVpsekxQQ2o3NjRhUVBI?=
 =?utf-8?B?KzlQcElxeWplRzcvb0I4eWwrOFM4cXlNYnlXdG93Yk4vMDZtVDZ2L2NHV0RY?=
 =?utf-8?B?MGdmTVhROTNtNW84Njl3S2tTNnJZN0Q0MUFKSnBTQmJCVHo5WUVMUVdKSUEw?=
 =?utf-8?B?cEdGMDNQT2hYQlNIYUdkK3B0UGx4QjhFWVc2djNvTDBmM3VyY1U4aklCdVEy?=
 =?utf-8?B?ZXlOMnJTOXVudU5ML0ZyU1cxaWRmZDhyVW1VVlUyaFNQRnU0ZU8ybTYvR0ts?=
 =?utf-8?B?Y2h2NVlWVGtDUWZlWTlSSU1PYlRzdlAreC9OMmdzMkxwRGZWWEVmTTk2dmFC?=
 =?utf-8?B?aWtSbUZucjlFRmx6eTdRY2lZb2RnS0NtZ0dsL3JMZ0NxUDZ0YU52SHdHNFBl?=
 =?utf-8?B?YXh3OTk3TkZGZEVTRkZ6a0xqOUluMXYvR0c3M3I0NkhIcTRrbURaeEZpd1d5?=
 =?utf-8?B?T3paUDJKSFpLQ1A0SmhkY3JDWGhzWWpQS0dDNFZnM3dQR2o4MlZOalhBV2Z6?=
 =?utf-8?B?Y1JDb3kzOTFmaVI0WlY4VktHZHlQdTlPY3hPYzBnNFpqMTh4eGJ0QT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a2634bc-fd1e-41ea-1cc5-08df3b2ce2c8
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 11:06:48.0162
 (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: RICAFBZbYzljBwHMMHgLfADyJ+2Ch3vcA8TheWCG6rdtpGVFK7Cho6ZgVkkrH57m1OWb/sD55LPxIAmdN/4M/OpMGyzHpDjMvVtncfQdbWc=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB989346
X-purgate-ID: tlsNG-d62444/1793876811-1D272757-0C0332E6/0/0
X-purgate-type: clean
X-purgate-size: 1353

On 05/11/2026 10:21 am, Jan Beulich wrote:
> On 05.11.2026 11:20, Andrew Cooper wrote:
>> On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
>>> --- a/xen/arch/x86/include/asm/apicdef.h
>>> +++ b/xen/arch/x86/include/asm/apicdef.h
>>> @@ -25,7 +25,7 @@
>>>  #define			APIC_ARBPRI_MASK	0xFF
>>>  #define		APIC_PROCPRI	0xA0
>>>  #define		APIC_EOI	0xB0
>>> -#define			APIC_EIO_ACK		0x0		/* Write this to the EOI register */
>>> +#define			APIC_EOI_ACK		0x0		/* Docs say use 0 for future compatibility */
>>>  #define		APIC_RRR	0xC0
>>>  #define		APIC_LDR	0xD0
>>>  #define			APIC_LDR_MASK		(0xFFu<<24)
>> Honestly, I'd prefer to delete this constant rather than to make use of
>> it.  The typo in the name shows it's not being used at all.
>>
>> AMD have a feature called Selective EOI where you can write a vector in
>> and have it EOI something which isn't the currently in-service one.
> Makes it even more not to use plain 0 for the present write, I'd say.

Nonsense.

This is introducing a layer of obfuscation which is unhelpful and, from
my point of view, firmly unwanted.

Everyone knows you write 0 to the EOI register.  It's been that way for
three decades, and it's not plausibly going to change.

The code used to be obviously correct at a glance, and now it requires
looking in a different header file.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 11:26:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 11:26:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474464.1681578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvc5-0005JC-UF; Thu, 05 Nov 2026 11:26:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474464.1681578; Thu, 05 Nov 2026 11:26:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvc5-0005J3-Qq; Thu, 05 Nov 2026 11:26:37 +0000
Received: by outflank-mailman (input) for mailman id 1474464;
 Thu, 05 Nov 2026 11:26:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewprecious388@gmail.com>) id 1xOvc4-0005Ix-6Z
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:26:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOvc3-009SPE-JX
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:26:35 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6aec67de-e002-0a2a0a5209dd-0a2a4509b5f2-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:26:35 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6aec67eb-be1a-0a2a45090019-d155802fc82a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:26:35 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4ac95761c85so12482495e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 03:26:35 -0800 (PST)
Received: from andrew-B650M-DS3H.. ([102.213.49.86])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed551dc5sm9722047f8f.34.2026.11.05.03.26.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 05 Nov 2026 03:26:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793877995; x=1794482795; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=oK7OLAJ1khRdk8yKYKE5ualoF0lovT9J904AH+BduH0=;
        b=lkTb9C1pGFODjRWqo7BS02yIpWsIqQ145PRQ0c4+npr7oNb/41Z/Mii9KvnbJTM3QG
         NPpsxjmzJcmbkpxe/OeMmtocUaJ4V7FPOfGQm+LvO5+b0AyEn4W/UMpTOVwFX0faDlHP
         u+2O8Yp4ltxm+k0+BssfyTNmMoGIeqbF8xM9BbheMWfJWnuPflkAftYRLUudisWPwizO
         eUAguqDCd5XjQKqJqzrsfRKaAvyGe2BOlVcdUx49w6TVOKzPGdCGrXz9q6xF2TQY7DNj
         THjxRgMzSgNTFqVPFs+OhocgTpysnt+oRW8qXRkfuuzCKEjfMAXwbYHqyTVCvKjFP5om
         dyNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793877995; x=1794482795;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=oK7OLAJ1khRdk8yKYKE5ualoF0lovT9J904AH+BduH0=;
        b=wb2ry7M105V9CeHJSUfokWitanBiZF5jXuKyOVZiXTDQZ4wT5pp489QeBhrIPRcFdY
         vsU75z5JKaWNsk0Hab7B7EnMHtL6vKS64ubqQ1sq6lEzGJ9XjAyghGy/PXaEO7Rh/XJf
         WXeOcAbQgoVO4ltM0NmWuOR5/X1LZlIDUMfpfIEbjKeoV/Xv8G3uZ6IyxtlWIg6agNKH
         X35szASS9SL1PvSfsPr3LV7GgT/Els2ZPdTgC4GkR8z39R6C+maOOyajgbjcAI7veTBf
         bNf+P3N0ZdPU5RdkMWiRG4UR/saja3VtiDnBs7xnS+e/YgIyhj8s9gvxtBHXVRaXDEHK
         NKLg==
X-Gm-Message-State: APuU4Z8Isae0IhCgfVRXHNQ1s8JUL2tPhCAyd2kfyWZ88nmG7dXgRVqU
	da+xYVwT0MG+CWmUfxEaaz8lxC+IfE5R+1gcxy6UylD4NzMO3WiDyTu5to3/rMp+8DY=
X-Gm-Gg: AYBFou1HVoScORXQ/Q+6r1JJjsMFm0j95IG3DHvnFF/2iPf6QLcPEu4iRDPsDoFOrz4
	mLhXBwTIDJVnk7eKKZmEXeDo2zu9pi8h86Gz9VPY3eEaNNS65NTmFCGE8xFpUm2AW6G8TWJo03M
	sldlDmoWn9QFkcwBpQilnoeT5t4HoKTLWPRLIrQZDqH7To4zj7IUVowXhLohPGwtQ8wCNecbs6Q
	D0xtG97jiaoTVwA0n7ZovWDoo3A+2P6LVP4Kf6OJ8lq44zPP8J1WVjWzvhUu+m8ero5OYmQCjI1
	BpYrw2VPj92egBcsyaqP1ptrjXFC1vJ96fMjhjCR2fjJsirnPLrmwP6qBYex2x/7iSxX2mUp7su
	6FPT8NiQGvZ6Ye2kRwEEz5TVliiKPVr1jNS27K6GIxK+LHjE+rcBafNw2US7WggHS8Q7nLNs44F
	NPe2BPmgnxcu44mfVxs+FUXekMbR0011SGxhSQNf7s7o4keW6fuyBIeTK/eLefBZpSCfuhBuhWy
	Y9gsExcOdy8A+zRQKFym6GluToWcxjyFF9SEGLYipsR3jcLQYS8ymOdXb0KmIRcCPLPnCJya+my
	cAZ+bfTM5y9dsjxAmWKNJqxX2n04yEaT3KMErSvRL/X5LQs=
X-Received: by 2002:a05:600c:6992:b0:4a1:a2c0:7b73 with SMTP id 5b1f17b1804b1-4ac18992c01mr411045945e9.30.1793877994381;
        Thu, 05 Nov 2026 03:26:34 -0800 (PST)
From: Andrew Mbugua <andrewprecious388@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Jens Wiklander <jenswi@kernel.org>,
	Andrew Mbugua <andrewprecious388@gmail.com>
Subject: [PATCH] xen/arch/arm: Correcting comment typos across xen/arch/arm
Date: Thu,  5 Nov 2026 14:26:27 +0300
Message-ID: <20261105112627.235207-1-andrewprecious388@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793877995-BDAC0034-0603ED40/0/0
X-purgate-type: clean
X-purgate-size: 15453

No functional change.

I have been making typo corrections across a variety of files

Scanning Xen using codespell for typo matches I have found:
1. Xen native project sources: 3303 typos
2. Qemu Tree - 4908 typos

Reasons for corrections:
1. Keeping the codebase clean,concise for future documentation generation
2. Just because typos seem minor doesnt mean that corrections should be ignored,
while correcting these errors may not be pedantic I think its essential in
keeping things claan and more readable.

The followup comments on this patch will also guide me
as to whether further changes across other files will be needed.


Signed-off-by: Andrew Mbugua <andrewprecious388@gmail.com>
---
diff --git a/xen/arch/arm/arm64/sve.c b/xen/arch/arm/arm64/sve.c
index 23a9d0ba66..bce63b07b1 100644
--- a/xen/arch/arm/arm64/sve.c
+++ b/xen/arch/arm/arm64/sve.c
@@ -131,7 +131,7 @@ void sve_context_free(struct vcpu *v)
     sve_vl_bits = sve_decode_vl(v->domain->arch.sve_vl);
 
     /*
-     * Currenly points to the end of Z0-Z31 memory which is not the start of
+     * Currently points to the end of Z0-Z31 memory which is not the start of
      * the buffer. To be kept in sync with the sve_context_init().
      */
     v->arch.vfp.sve_zreg_ctx_end -=
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 34b5a85f9f..4c34f616e9 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -1047,7 +1047,7 @@ static int relinquish_memory(struct domain *d, struct page_list_head *list)
  * logically restart work from this point.
  *
  * PROGRESS() markers must not be in the middle of loops. The loop
- * variable isn't preserved accross a continuation.
+ * variable isn't preserved across a continuation.
  *
  * To avoid redundant work, there should be a marker before each
  * function which may return -ERESTART.
diff --git a/xen/arch/arm/firmware/scmi-smc.c b/xen/arch/arm/firmware/scmi-smc.c
index 391df8b945..e776d94c91 100644
--- a/xen/arch/arm/firmware/scmi-smc.c
+++ b/xen/arch/arm/firmware/scmi-smc.c
@@ -32,7 +32,7 @@ static struct domain __read_mostly *scmi_dom;
 
 /*
  * Check if provided SMC Function Identifier matches the one known by the SCMI
- * layer, as read from DT prop 'arm,smc-id' during initialiation.
+ * layer, as read from DT prop 'arm,smc-id' during initialization.
  */
 static bool scmi_is_valid_smc_id(uint32_t fid)
 {
diff --git a/xen/arch/arm/include/asm/arm64/efibind.h b/xen/arch/arm/include/asm/arm64/efibind.h
index 7ab00e4f55..18f5615acf 100644
--- a/xen/arch/arm/include/asm/arm64/efibind.h
+++ b/xen/arch/arm/include/asm/arm64/efibind.h
@@ -142,8 +142,8 @@ typedef uint64_t   UINTN;
 // RUNTIME_CODE - pragma macro for declaring runtime code
 //
 
-#ifndef EFIAPI                  // Forces EFI calling conventions reguardless of compiler options
-        #define EFIAPI          // Substitute expresion to force C calling convention
+#ifndef EFIAPI                  // Forces EFI calling conventions regardless of compiler options
+        #define EFIAPI          // Substitute expression to force C calling convention
 #endif
 
 #define BOOTSERVICE
@@ -163,7 +163,7 @@ typedef uint64_t   UINTN;
 
 
 //
-// When build similiar to FW, then link everything together as
+// When build is similar to FW, then link everything together as
 // one big module.
 //
 
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index 47efdf5234..ab6eecc8d0 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -15,7 +15,7 @@
 #elif defined(CONFIG_ARM_64)
 # define __OP32 "w"
 /*
- * Clang < 8.0 doesn't support register alllocation using the syntax rN.
+ * Clang < 8.0 doesn't support register allocation using the syntax rN.
  * See https://reviews.llvm.org/rL328829.
  */
 # define ASM_REG(index) asm("x" # index)
diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index 3f62b38dc0..7e559253d7 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -347,7 +347,7 @@
 #define CONTEXTIDR      p15,0,c13,c0,1  /* Context ID Register */
 #define TPIDRURW        p15,0,c13,c0,2  /* Software Thread ID, User, R/W */
 #define TPIDRURO        p15,0,c13,c0,3  /* Software Thread ID, User, R/O */
-#define TPIDRPRW        p15,0,c13,c0,4  /* Software Thread ID, Priveleged */
+#define TPIDRPRW        p15,0,c13,c0,4  /* Software Thread ID, Privileged */
 #define HTPIDR          p15,4,c13,c0,2  /* HYp Software Thread Id Register */
 
 /* CP15 CR14:  */
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 9af05da6aa..7ceae49774 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -151,7 +151,7 @@
 /*
  * The minimum GICC_BPR is required to be in the range 0-3. We set
  * GICC_BPR to 0 but we must expect that it might be 3. This means we
- * can rely on premption between the following ranges:
+ * can rely on preemption between the following ranges:
  * 0xf0..0xff
  * 0xe0..0xdf
  * 0xc0..0xcf
@@ -162,7 +162,7 @@
  *
  * Priorities within a range will not preempt each other.
  *
- * A GIC must support a mimimum of 16 priority levels.
+ * A GIC must support a minimum of 16 priority levels.
  */
 #define GIC_PRI_LOWEST     0xf0U
 #define GIC_PRI_IRQ        0xa0U
diff --git a/xen/arch/arm/include/asm/lpae.h b/xen/arch/arm/include/asm/lpae.h
index 8e062c9e37..43c178652b 100644
--- a/xen/arch/arm/include/asm/lpae.h
+++ b/xen/arch/arm/include/asm/lpae.h
@@ -36,7 +36,7 @@ typedef struct __packed {
      */
     unsigned long ai:3;         /* Attribute Index */
     unsigned long ns:1;         /* Not-Secure */
-    unsigned long up:1;         /* Unpriviledged access */
+    unsigned long up:1;         /* Unprivileged access */
     unsigned long ro:1;         /* Read-Only */
     unsigned long sh:2;         /* Shareability */
     unsigned long af:1;         /* Access Flag */
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 2eb8465aa9..9a87e71049 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -194,7 +194,7 @@ bool flags_has_rwx(unsigned int flags);
 extern void *early_fdt_map(paddr_t fdt_paddr);
 /* Remove early mappings */
 extern void remove_early_mappings(void);
-/* Prepare the memory subystem to bring-up the given secondary CPU */
+/* Prepare the memory subsystem to bring-up the given secondary CPU */
 extern int prepare_secondary_mm(int cpu);
 /* Map a frame table */
 void init_frametable(paddr_t ram_start);
@@ -271,7 +271,7 @@ static inline uint64_t gvirt_to_maddr(vaddr_t va, paddr_t *pa,
 
 /*
  * We define non-underscored wrappers for above conversion functions.
- * These are overriden in various source files while underscored version
+ * These are overridden in various source files while underscored version
  * remain intact.
  */
 #define virt_to_mfn(va)     __virt_to_mfn(va)
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index 7f4d59137d..7cebc60298 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -57,7 +57,7 @@ static inline void *maddr_to_virt(paddr_t ma)
 /**
  * Find the virtual address corresponding to a machine address
  *
- * The directmap covers all conventional memory accesible by the
+ * The directmap covers all conventional memory accessible by the
  * hypervisor. This means it's subject to PDX compression.
  *
  * Note there's an extra offset applied (directmap_base_pdx) on top of the
diff --git a/xen/arch/arm/include/asm/tee/optee_msg.h b/xen/arch/arm/include/asm/tee/optee_msg.h
index 09820ff863..0ccdf03fc4 100644
--- a/xen/arch/arm/include/asm/tee/optee_msg.h
+++ b/xen/arch/arm/include/asm/tee/optee_msg.h
@@ -292,7 +292,7 @@ struct optee_msg_arg {
  * [in] param[0].u.tmem.size		size (of first fragment)
  * [in] param[0].u.tmem.shm_ref		holds shared memory reference
  *
- * OPTEE_MSG_CMD_UNREGISTER_SHM unregisteres a previously registered shared
+ * OPTEE_MSG_CMD_UNREGISTER_SHM unregisters a previously registered shared
  * memory reference. The information is passed as:
  * [in] param[0].attr			OPTEE_MSG_ATTR_TYPE_RMEM_INPUT
  * [in] param[0].u.rmem.shm_ref		holds shared memory reference
diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
index 26c53aaf3c..85e10aeece 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -358,7 +358,7 @@ extern void vgic_check_inflight_irqs_pending(struct vcpu *v,
 /* Maximum number of IRQs supported by vGIC */
 #define VGIC_MAX_IRQS 992U
 
-/* Default number of vGIC SPIs. 32 are substracted to cover local IRQs. */
+/* Default number of vGIC SPIs. 32 are subtracted to cover local IRQs. */
 #define VGIC_DEF_NR_SPIS (min(gic_number_lines(), VGIC_MAX_IRQS) - 32)
 
 static inline unsigned int vgic_def_nr_spis(void)
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 70d7c9fed9..53d28935af 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1105,7 +1105,7 @@ static int __p2m_set_entry(struct p2m_domain *p2m,
          * It is necessary to flush the TLB before writing the new entry
          * to keep coherency when the previous entry was valid.
          *
-         * Although, it could be defered when only the permissions are
+         * Although, it could be deferred when only the permissions are
          * changed (e.g in case of memaccess).
          */
         if ( lpae_is_valid(orig_pte) )
diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c
index 621b47dbf5..81fe121517 100644
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -160,7 +160,7 @@ lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned int attr)
          * Outer Non-cacheable, must have a resultant shareability attribute
          * of Outer Shareable, otherwise shareability is UNPREDICTABLE.
          *
-         * On ARMv8 sharability is ignored and explicitly treated as Outer
+         * On ARMv8 shareability is ignored and explicitly treated as Outer
          * Shareable for Normal Inner Non_cacheable, Outer Non-cacheable.
          */
         e.pt.sh = LPAE_SH_OUTER;
@@ -171,7 +171,7 @@ lpae_t mfn_to_xen_entry(mfn_t mfn, unsigned int attr)
          * Shareability is ignored for non-Normal memory, Outer is as
          * good as anything.
          *
-         * On ARMv8 sharability is ignored and explicitly treated as Outer
+         * On ARMv8 shareability is ignored and explicitly treated as Outer
          * Shareable for any device memory type.
          */
         e.pt.sh = LPAE_SH_OUTER;
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 967cb4b77d..79947b124b 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -53,7 +53,7 @@ void call_psci_cpu_off(void)
     {
         struct arm_smccc_res res;
 
-        /* If successfull the PSCI cpu_off call doesn't return */
+        /* If successful the PSCI cpu_off call doesn't return */
         res = arm_smccc_smc(PSCI_0_2_FN32_CPU_OFF);
         panic("PSCI cpu off failed for CPU%d err=%d\n", smp_processor_id(),
               PSCI_RET(res));
diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 1fe33f2645..886c96414a 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -21,7 +21,7 @@
  * Unsupported FF-A interfaces:
  * o FFA_MSG_POLL and FFA_MSG_SEND - deprecated in FF-A-1.1-REL0
  * o FFA_MEM_RETRIEVE_* - Used when sharing memory from an SP to a VM
- * o FFA_MEM_DONATE_* and FFA_MEM_LEND_* - Used when tranferring ownership
+ * o FFA_MEM_DONATE_* and FFA_MEM_LEND_* - Used when transferring ownership
  *   or access of a memory region
  * o FFA_MSG_SEND2 and FFA_MSG_WAIT - Used for indirect messaging
  *
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index ed28820502..3b9bcb1b4f 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -269,7 +269,7 @@ static int32_t ffa_get_vm_partinfo(struct ffa_uuid uuid, uint32_t start_index,
      * Workaround for Linux FF-A Driver not accepting to have its own
      * entry in the list before FF-A v1.2 was supported.
      * This workaround is generally acceptable for other implementations
-     * as the specification was not completely clear on wether or not
+     * as the specification was not completely clear on whether or not
      * the requester endpoint information should be included or not
      */
     if ( ACCESS_ONCE(curr_ctx->guest_vers) >= FFA_VERSION_1_2 )
diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
index 3d61caaeba..09ae0ca07d 100644
--- a/xen/arch/arm/tee/ffa_shm.c
+++ b/xen/arch/arm/tee/ffa_shm.c
@@ -482,7 +482,7 @@ static int read_mem_transaction(uint32_t ffa_vers, const void *buf, size_t blen,
 
     /*
      * We're doing a rough check to see that no information is lost when
-     * tranfering the values into a struct ffa_mem_transaction_int below.
+     * transferring the values into a struct ffa_mem_transaction_int below.
      * The fields in struct ffa_mem_transaction_int are wide enough to hold
      * any valid value so being out of range means that something is wrong.
      */
diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c
index 62666a84db..6b5d290e8a 100644
--- a/xen/arch/arm/vgic-v2.c
+++ b/xen/arch/arm/vgic-v2.c
@@ -359,7 +359,7 @@ read_as_zero:
 
 read_impl_defined:
     printk(XENLOG_G_DEBUG
-           "%pv: vGICD: RAZ on implemention defined register offset %#08x\n",
+           "%pv: vGICD: RAZ on implementation defined register offset %#08x\n",
            v, gicd_reg);
     *r = 0;
     return 1;
diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
index bc738614bb..79d056e21a 100644
--- a/xen/arch/arm/vgic-v3-its.c
+++ b/xen/arch/arm/vgic-v3-its.c
@@ -1561,7 +1561,7 @@ void vgic_v3_its_free_domain(struct domain *d)
 {
     struct virt_its *pos, *temp;
 
-    /* Cope with unitialized vITS */
+    /* Cope with uninitialized vITS */
     if ( list_head_is_null(&d->arch.vgic.vits_list) )
         return;
 
diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
index 78d5bdf56f..99cf7c6dae 100644
--- a/xen/arch/arm/vsmc.c
+++ b/xen/arch/arm/vsmc.c
@@ -71,7 +71,7 @@ static bool fill_revision(struct cpu_user_regs *regs, uint32_t major,
 static bool fill_function_call_count(struct cpu_user_regs *regs, uint32_t cnt)
 {
     /*
-     * Function call count is retuned as any other return value in register r0
+     * Function call count is returned as any other return value in register r0
      * (ARM DEN 0028B page 17)
      */
     set_user_reg(regs, 0, cnt);
diff --git a/xen/arch/arm/vuart.h b/xen/arch/arm/vuart.h
index e90d84c6ed..1a10f5ad7e 100644
--- a/xen/arch/arm/vuart.h
+++ b/xen/arch/arm/vuart.h
@@ -32,7 +32,7 @@ void domain_vuart_free(struct domain *d);
 static inline int domain_vuart_init(struct domain *d)
 {
     /*
-     * The vUART is unconditionally inialized for the hw domain. So we
+     * The vUART is unconditionally initialized for the hw domain. So we
      * can't return an error.
      */
     return 0;


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 11:29:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 11:29:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474473.1681588 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOven-0006IV-BC; Thu, 05 Nov 2026 11:29:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474473.1681588; Thu, 05 Nov 2026 11:29:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOven-0006IO-7o; Thu, 05 Nov 2026 11:29:25 +0000
Received: by outflank-mailman (input) for mailman id 1474473;
 Thu, 05 Nov 2026 11:29:24 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luoyonggang@gmail.com>) id 1xOvel-0006Gv-Tu
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:29:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOvek-00Dgfk-JI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:29:22 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6aec6887-bab6-0a2a0a5309dd-0a2a4508a8a6-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:29:22 +0100
Received: from [209.85.208.41] (helo=mail-ed1-f41.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luoyonggang@gmail.com>)
 id 6aec6892-f659-0a2a45080019-d155d029d004-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:29:22 +0100
Received: by mail-ed1-f41.google.com with SMTP id
 4fb4d7f45d1cf-6b56c428212so1412122a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 03:29:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:Reply-To:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793878162; cv=none;
        d=google.com; s=arc-20260327;
        b=aVjy1k97os2aY/yIcJuafNPb+8r11ZSs5/qVTl2P2NSOZDAS6N+srF99ZqDM0sMhpj
         lm1PGjCiD0MS44N8RvSVBA7SVvZ8r2K+jHymwlihv0hA54H89Msv7HCGiAoiiEVkwQcg
         BBocrS9A9e7NDrwR8FlDqHeaEykgnuWzC/IyhS8Y93W8gOlKXY3ZfRAjum1bM9fgBVSZ
         nojFSpyyvOaVNjp/NK/NZSi6n6MVhVrVTV9J2Jfnft8ZEZGF03L+mpP84cQNST0Wpbqy
         X4uTqB/nOPbhwRnYg8J/ZN5VcWlDaRdwC+mwqWzwBHdPq46QYAWITVz5UDLSGlH0GYZc
         h8Pw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :reply-to:in-reply-to:references:mime-version:dkim-signature;
        bh=N6YNeSVq516in4se9KIqzFq1rO/6YIHrrr7AeykheZo=;
        fh=WO+2NvSEfXFY/eK2blaRfchrtrM7RA095bDLGwZkWeI=;
        b=hqsa/zoaVEgf46aCLsSe9akzYmgbK4uGy0rg3riDQyXwlNRQwtvyvH2EgLHHmiKxMz
         dvjphsu6kbb4SYdpHwIzcmwgpkzNz53LOQ84kp47fjkOQdzp868HFFK7wv9xyQOW99CJ
         LJ/EiS74KY72o/JhgNFqeaoM4msx62Ygq+tSGlXI72rkVMJ06YuuN8G46OR/OHng2i3/
         u+B34FBp+vgRaizk/mrlIqAcGXRjhsToJnlsY+lINXRYVSYvKh99xeys8RbsWj1u5Y5+
         P6XIU+6EAuc0bk37VzAdo15KoF9gFNOtEaVWj597qWXLvYrE70MbnWbVJnxr0y1u1xAM
         Iq2w==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793878162; x=1794482962; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=N6YNeSVq516in4se9KIqzFq1rO/6YIHrrr7AeykheZo=;
        b=j3DnjTl2DHzszfqaCRuRGVlUsJKKRy5fXhw5L9z/BFtixgvvU9uBEmFXtUPvLpRkUU
         CTBFXGqPvXVQAN9Rx1+sFcb4T8DrY5MZ8ejeSvNyxlvnt9PrtWuMcEtQgK63rqqYbvXv
         40kvQcEY+sv5Y0e6TFEvosRHDMhgJIlH7Y4Ank/g/Ds6HNDEHU6zkWHAUGhVe0hUoVfA
         2CRfKpPTmaBrGoUG0q92WmMJrY+P3WltYZ9sBiUTjtDEL0w9L1w6O9qgWv5Nk6VBHJB7
         DWLH4sHUKavSyxdo5CBxEy0vIvV3nnQp5uV/GG77vw9Isx0JBAylivx9pmgfEsnr01DU
         dSaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793878162; x=1794482962;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:reply-to:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=N6YNeSVq516in4se9KIqzFq1rO/6YIHrrr7AeykheZo=;
        b=jD9yYJmRTExuWKOsR5PRBiDz4jETl2G1c9K5jCZZZFWSAsteM4Sf2lyUXg7bHg3w1N
         b6j74AxijLTEg55vgMVLabasqNd7F9mIWYUOL5//YkD71iB4M58RTXfDUevpdzppzYpy
         DFKOfTBo0QaNH7sQr4ArD9YuC5yIuChEK4GOoN+o7gjgjhnChxRQ8R7DjnpH0saxY6EH
         wi1w/pB9EX5k7yYR0XsdEb1VY8lDrFb2m5nGu9FstOooiWxsKaK8DwSX0eUBLwT7tYdn
         dCd2YqaOc2Rcp7DVSQsBIt40xXbFrqWNSMk19CE01FK4bpeViSDnijTg+Y5j0X2cJdsJ
         2g2g==
X-Forwarded-Encrypted: i=1; AKwUvBxfu/VG1db+jWROAhL2eWikUwCzypmBSeS//AAkxTsEzZo+7qXtb91ebTkzj/JXWyUoxsLWYQdrrGc=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9e8+WPurWuJKUrbdM2wF9TGteHS7a3FmTE1lG84B5HjPbePhzR
	B3uADiRCKEL5s/MhqOkB0xc2Gcz8D8X1vD9u7DDIZQwGsf1tLADLQ9ycyftxRa18k1qJEC6iwdp
	Mar08MoaJ4BYXmu4sxtqU2lQpTGqt6ug=
X-Gm-Gg: AYBFou36I60feLTxNSjakacKguHYzEuIMAhp1IPIezFgpldweefmPBfeRsT94OIt5rD
	3twtb5XEjmOOQ7pvzQ6FNb6nRA/s5NcBzuLspVWJE5jq5N+bxPTMY3qF2EgLr0E+ywFo42nr06A
	92HgzzlK4aPfQnRHaWHPkKAoT8TF9fQ0G/nl6+tphMRd+Ab0dyH4q1UxH/+8SOwpUPCc15ZxdC3
	MdnCDhDiKzUvmbdWYQ08y7+h3pwxrXwCMAMMuJ0TtKuz1BndTI03/dxSgKhRIHI1mZPZSc+4po9
	Ru/XrLyU799K8mdje4nF9nBJnfCCaTT55rRZmVxpFCQnS3tWxGl/BQyVcCOtXciMB8jVG4/v2gS
	YB2jC10wOhFuY1maS0yTzZFiK9/KQnE0KVEbb
X-Received: by 2002:a05:6402:1a23:b0:6ac:9a44:d404 with SMTP id
 4fb4d7f45d1cf-6b4d32890a2mr9686232a12.0.1793878161823; Thu, 05 Nov 2026
 03:29:21 -0800 (PST)
MIME-Version: 1.0
References: <20261030151539.1872-1-luoyonggang@gmail.com> <d1db54c6-b802-676a-7779-0c2c63f5f807@eik.bme.hu>
 <aa70e94c-d9a8-41c9-850f-7ded87f7f327@oss.qualcomm.com> <aumYOBw-nKQAWdYK@redhat.com>
 <CAE2XoE8Xwevk523OfB+GgwbRu0iVnyD4VNOx81rj7J7F5aq=OA@mail.gmail.com>
 <54851326-3627-2b86-57d6-c338ed4e4b50@eik.bme.hu> <CAE2XoE_P2mZAT8wZwzFsTqJTK8nxNSSqJRrOM2T-AJkQjwJHBw@mail.gmail.com>
 <aunnuwhsx9ZOOXBX@redhat.com> <45433754-3cea-41fc-9f45-65a328d0efca@oss.qualcomm.com>
 <auxaPyRRm3MTBz1f@redhat.com>
In-Reply-To: <auxaPyRRm3MTBz1f@redhat.com>
Reply-To: luoyonggang@gmail.com
From: Yonggang Luo <luoyonggang@gmail.com>
Date: Thu, 5 Nov 2026 19:29:08 +0800
X-Gm-Features: AclHuK-4rXijL_AUOdDONNduLekRdI_s2YHPupRTfowSD0vm5SlSlXiC8G5KfNY
Message-ID: <CAE2XoE_=rb9rKyjVZXmBcAHU11554WTt0BkFoP6EAsDFQPEhiw@mail.gmail.com>
Subject: [PATCH 00/15] hw: expand DEFINE_MACHINE to explicit TypeInfo registration
To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, BALATON Zoltan <balaton@eik.bme.hu>, 
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, Anthony PERARD <anthony@xenproject.org>, 
	Felipe Balbi <balbi@kernel.org>, Aleksandar Rikalo <arikalo@gmail.com>, 
	Philippe Mathieu-Daude <philmd@mailo.com>, Antony Pavlov <antonynpavlov@gmail.com>, 
	Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Max Filippov <jcmvbkbc@gmail.com>, Niek Linnenbank <nieklinnenbank@gmail.com>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	"qemu-riscv@nongnu.org" <qemu-riscv@nongnu.org>, Jean-Christophe Dubois <jcd@tribudubois.net>, 
	"qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>, Alexandre Iooss <erdnaxe@crans.org>, Weiwei Li <liwei1518@gmail.com>, 
	Zhao Liu <zhao1.liu@intel.com>, Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@oss.qualcomm.com>, 
	Thomas Huth <th.huth+qemu@posteo.eu>, =?UTF-8?Q?Cl=C3=A9ment_Chigot?= <chigot@adacore.com>, 
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Yoshinori Sato <yoshinori.sato@nifty.com>, 
	Frederic Konrad <konrad.frederic@yahoo.fr>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Peter Maydell <peter.maydell@linaro.org>, Chao Liu <chao.liu@processmission.com>, 
	Sai Pavan Boddu <sai.pavan.boddu@amd.com>, Alistair Francis <alistair@alistair23.me>, 
	Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, 
	Gaurav Sharma <gaurav.sharma_7@nxp.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Alistair Francis <alistair.francis@wdc.com>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, "qemu-arm@nongnu.org" <qemu-arm@nongnu.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1793878162-CF75B87B-8A61B36D/0/0
X-purgate-type: clean
X-purgate-size: 2786

On Thursday, November 5, 2026, Daniel P. Berrang=C3=A9 <berrange@redhat.com=
> wrote:
>
> On Thu, Nov 05, 2026 at 12:27:18AM -0800, Pierrick Bouvier wrote:
> > On 11/3/2026 5:55 AM, Daniel P. Berrang=C3=A9 wrote:
> > > On Tue, Nov 03, 2026 at 09:48:44PM +0800, Yonggang Luo wrote:
> > >> On Tue, Nov 3, 2026 at 9:23=E2=80=AFPM BALATON Zoltan <balaton@eik.b=
me.hu> wrote:
> > >>>
> > >>> On Tue, 3 Nov 2026, Yonggang Luo wrote:
> > >>> That means exposing all the boiler plate for all machines other tha=
n the
> > >>> simplest case. I think it would be better to keep DEFINE_MACHINE_EX=
TENDED
> > >>> but maybe rethink the existing wrappers and drop unused ones and ma=
ybe add
> > >>> new ones that reduce the usage of DEFINE_MACHINE_EXTENDED but still=
 keep
> > >>> the boiler plate hidden.
> > >>
> > >> Thanks, I'll go this way, remove unused macros, and keep DEFINE_MACH=
INE_EXTENDED
> > >> and extend both DEFINE_MACHINE_EXTENDED DEFINE_MACHINE supports
> > >> "targets" or "arch_mask" parameter.
> > >
> > > Given that we don't need to do general per-arch type filtering in
> > > QOM, we could just move 'is_available' out of TypeInfo, and into the
> > > MachineClass, so it is a regular class level property, which can be
> > > set in the class_init methods, and thus avoid any changes to the
> > > DEFINE_MACHINE macros.
> > >
> >
> > Some cpus need it also, and it's used for filtering purpose at this tim=
e
> > (to avoid duplication at registration). We already depend on this behav=
ior.
>
> Can you give me more info on the problem with the CPUs ? What cases
> have duplicate class names with CPUs ?



Hi, please take a look at this

https://lore.kernel.org/qemu-devel/20261031164009.2048-1-luoyonggang@gmail.=
com/

Also the single-binary RISC-V patches also faced the same issues,
trying to access
the target_info() in class_init that can be also avoided by this idea,
the bucket TypeImpl .

The patches is at:

https://lore.kernel.org/qemu-riscv/20260916-hw-riscv-cpu-int-v4-0-babc367b6=
0f5@rev.ng/

The riscv machine  need choose different cpu machine according to the
target in class_init =EF=BC=8C

specifically
https://lore.kernel.org/qemu-riscv/20260916-hw-riscv-cpu-int-v4-1-babc367b6=
0f5@rev.ng/

https://lore.kernel.org/qemu-riscv/20260916-hw-riscv-cpu-int-v4-7-babc367b6=
0f5@rev.ng/

By the introduction of TypeBucket idea, these all can be resolved. and
we have no need to rename
The QOM typename at all.



>
> With regards,
> Daniel
> --
> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
> |: https://libvirt.org          ~~          https://entangle-photo.org :|
> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|
>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 11:32:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 11:32:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474486.1681597 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvhf-00083u-RY; Thu, 05 Nov 2026 11:32:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474486.1681597; Thu, 05 Nov 2026 11:32:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvhf-00083n-O0; Thu, 05 Nov 2026 11:32:23 +0000
Received: by outflank-mailman (input) for mailman id 1474486;
 Thu, 05 Nov 2026 11:32:22 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOvhe-00083h-6b
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:32:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOvhd-003ZAB-CF
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:32:21 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6aec6936-2eae-0a2a0a5409dd-0a2a450a8ba8-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:32:21 +0100
Received: from [202.12.124.148] (helo=fout-b5-smtp.messagingengine.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6aec693f-f2d2-0a2a450a0019-ca0c7c9498cf-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:32:16 +0100
Received: from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47])
 by mailfout.stl.internal (Postfix) with ESMTP id 0BDD71D000C9
 for <xen-devel@lists.xenproject.org>; Thu,  5 Nov 2026 06:32:15 -0500 (EST)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-07.internal (MEProxy); Thu, 05 Nov 2026 06:32:15 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 5 Nov 2026 06:32:13 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm2 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm3 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1793878334;
	 x=1793964734; bh=a1JRX2cbKbfVTWq2yjK/5KKyBmq9J7XoKfZMuwx0m0I=; b=
	A6AIn4nSZVovPDbMY0bW3flqtSmZiX584wVkSp4HBaCgntIvFu1ddLJJ8VviXlt4
	HGFshRDNT19Pdm6ata0TUGnGJYuRGESHSMhuiWMm6K4iFWUMNrUZtGcFL+zkqfSl
	RmuIjIfwDxXVLP6OuI9Tkw6EA7l8GYOHtZWIdCAEdu+CrjnNWB2DM9Xa6tlDKVng
	eI8T9SDTxok0kv/N0HwuWM0Cw0aJqSNrpuDb/sJx2UcgPCHAGpOYzGuTo2Mz7j4n
	Mrhuc+XWG+1doq/n4QB2KEJ6zUAwU/5s1Za692E5KyR0QtAnKMUw8xIMgd2ecjUw
	WQbFZUhU+715nATr22kifA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=
	1793878334; x=1793964734; bh=a1JRX2cbKbfVTWq2yjK/5KKyBmq9J7XoKfZ
	Muwx0m0I=; b=DO2cQbgQtCnIoeP2KaJBlCj6ejbQ5B+F5unMRLjDVNzIHbmRsRx
	l85xdFIELX2FAVSC33FTRxZrn57hlCicoy8kl9F7AWTSxviQWUsHrxNkwPHZcHx7
	LsHDQdW40HhSSPVu1gfDrTFkAtNwlNYb4sTiwbq8dEqsiqL3e8DUsEU8bQ+/Ebwl
	XoPWO2c2w+QYCCy9CZEEewfR6vZYKPE5H0umQBE63RMXtz2a2KRd788guiNwSZ+0
	oMYZ2849mg6TlusimkPyB5vIdxYAH6w0+QDBBTlUiT0wCfIC0gxzZpU6AuiToRuR
	g9oeaI0V+csbE3AyNCVdK3ub3EEqBUgzGQg==
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=sign d=invisiblethingslab.com a=rsa-sha256;
DKIM2-Signature: i=1; m=1; t=1793878334; d=invisiblethingslab.com;
	mf=PG1hcm1hcmVrQGludmlzaWJsZXRoaW5nc2xhYi5jb20+;
	rt=PHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4=;
	s=fm2:rsa-sha256:mw3oQwluO7QsJpMm59FJDYWB+mOEfkNrfB2m5h9vUsyLW15
	PslJI2sjCIfF6cXvGg8rj4IEFPlpIT6z9/3WW1V56+A3yI6qcLrcl1DXeaQoHv3p
	Sc+2tZpp+Tio9hM/H7V1g0FTSG90ot9bdeht+Fge9qIn9F3UOPLM3sheif4e8/wJ
	Z59OvXkBxgdGxYYNWPLL6T3EY2rqlS8ZOiIlSiHtWq/FYq1ct2MrqCFEA0kB786L
	jUiuW4eJ+Dn2bV1/m6VkppHtT3tGH52/6SkMBsWKei9MBDa7nTuuqY4zGsTXFd3z
	OsfYA7U+3LdHEWpVwM7XY9KfBZmgW6S35/PgavQ==;
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=mi-m=1; hc=12;
	hn=cc,content-disposition,content-type,date,feedback-id,from,
	in-reply-to,message-id,mime-version,references,subject,to;
Message-Instance: m=1; h=sha256:UT8tmUnCCBPVRQ9fzzCQr7dVIIWmjg3FP9Vive8QbHw=:uNueO9dY+F6vF5MRz5lv03CYPr0zlaCrPkPBi3Ed49E=;
X-ME-Sender: <xms:Pmnsat5IjkW1dVShlKhqCLpKCQvCsU7PFBskDpVtQ-PvfuC5u0EOzg>
    <xme:PmnsatJ-giKlyO8PpeVkt_z9wPsMhl5Pom8I2xsw8R1Vck6cvxhMSt2iGavYpaOSo
    iLME8fpwxgoQklLc8DXgeieshgcl6MKgnIoFn1AGRTV4U3IMg>
X-ME-Received: <xmr:PmnsamuHXOACVVAv7VcrAopvnJyN0YGS0Dql2szqlBE1OK2iOTtDeSn-f6NbFN-V8PVfRDJ_QUr6AsHCjUUIcNUYy7m-n7t845LJt8oGGcE>
X-ME-Proxy-Cause: dmFkZTFCu93y14GmrmgAZ0vJGPo4iklgQsRmaz3FnJ0EzxxDDS07rYte67xnn/PPzTzpiD
    +JBxCj+npRTTWUnEflBJ4iYtVkE1wvV43M/4/zW/eSbMiMchv1QECnwWGYELqwwy/6v8z+
    YTqlXBL5W9QcyUQ6uzfKZhDAKQNScSdXS8KMGUpmQY7XCA8OI3aD2QQtA6qWDNcXuDQ0d+
    z/vwsWOKlkg9ZQDNEimtUuu270H09tMhXBOu3aBu1zlAnUoCHeckQzZkwvE4PhXi2/gBrA
    +cZkVn+e9mYAm5+abNdlptorXRoyj18cBThNex0QQMLYsh80/8WjnJyL+Z2lN3kxMnEDKP
    +IAWqO/EOKqHGVNPq9N1PNCQ7w3dcgW7tDvmuC1pOK4ja+F5uKkh5f3wib0nwTUtoTs4X/
    HgzEyOTYUmdS0uWu1RaBv61ylIGjINsZQF7YKr27g4LIXDTuiXQ8gjV4AvSKFwJOipjR8Z
    YBdyPxja3XY9LYGzPSPzdfQu8eaEge8Cik4K2B37kBFy3gCrLtNCbwep7pprBgTyaa9xLM
    nFnisbvQNR0xzLSyVuAf1vZSUMIwHQ4UXTCF7tfssNFEJo0u0Pl65TfASWbi6L7bKku1Yr
    MnotRLW7RqpmRu3uHhbhjPtZFLsgsaQaw71P5h76SdQelqLZCZrYxLSQ0TLA
X-ME-Proxy: <xmx:PmnsasI4Y9i86MKDdzeGUnYfJT-faAifWsgpBCHIlBDlZikfUcZhQg>
    <xmx:Pmnsav9Kyh3sHV_eacSIPd25iBc120r3JgxvmMi6gko_g4QFNGKgFw>
    <xmx:Pmnsalxo5AUnKOnm19uOSVb3mR2-sRoAhkPLdohCojCocDABmbcCJA>
    <xmx:Pmnsas5yrSjYq5W7VWGCrAst1HZNL9VoOcOa5csBNyk9mDJfIcCdGQ>
    <xmx:PmnsaswB0LtLEfNaRiplNeHqt--X7rJW9i2RK5Fm-Z-XGThJ43GlFSHZ>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 5 Nov 2026 12:32:11 +0100
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: George Dunlap <gwd@xenproject.org>
Cc: Jan Beulich <jbeulich@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [PATCH 01/15] x86/EFI: guard against oversized modules
Message-ID: <auxpO1GTRFnei45o@mail-itl>
References: <1b4c2bb4-118d-497c-8d7d-f3824fd61a73@suse.com>
 <bc140f68-a6a8-48be-950d-813ea33de071@suse.com>
 <CAFLBxZaruHp0XzV-8iJvfTwgLNaiALjFHNxL7jJMjtnWivf0KA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="aO8RRs/B/E5vsFXN"
Content-Disposition: inline
In-Reply-To: <CAFLBxZaruHp0XzV-8iJvfTwgLNaiALjFHNxL7jJMjtnWivf0KA@mail.gmail.com>
X-purgate-ID: tlsNG-4011c0/1793878341-512C8CFC-3F0EEDC4/10/78276251493
X-purgate-type: spam
X-purgate-size: 2125

--aO8RRs/B/E5vsFXN
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 5 Nov 2026 12:32:11 +0100
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
To: George Dunlap <gwd@xenproject.org>
Cc: Jan Beulich <jbeulich@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Teddy Astie <teddy.astie@vates.tech>,
	Roger Pau =?utf-8?B?PT91dGYtOD9CP1RXOXVic09wPz0=?= <roger@xenproject.org>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [PATCH 01/15] x86/EFI: guard against oversized modules

On Mon, Oct 12, 2026 at 11:12:44AM +0100, George Dunlap wrote:
> [Re-sending from @xenproject.org, since my other email bounced]
>=20
> On Mon, Oct 12, 2026 at 9:19=E2=80=AFAM Jan Beulich <jbeulich@suse.com> w=
rote:
> >
> > x86/EFI: guard against oversized modules
>=20
> Nit: This repeats the subject line.  `git am` of this has two identical l=
ines.
>=20
> > module_t's mod_end field (which we repurpose to hold a module's size)
> > cannot hold values 4Gb and up. Don't let truncation go silently.
> >
> > Signed-off-by: Jan Beulich <jbeulich@suse.com>
>=20
> With the repeated subject line fixed:
>=20
> Reviewed-by: George Dunlap <gwd@xenproject.org>

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>


--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--aO8RRs/B/E5vsFXN
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmrsaTsACgkQ24/THMrX
1yyOXgf+OqB5fjGY/hqFc5mZnv+qtAtmYEc4k14K8OIT0jJHnU0TNaKo6xYdmXyg
JcyD6DU62OsW3SFzeN8/paS86/8OhbzybRgb6Sh5p1wVAnvZBjvN7rMfayQJzf4z
v+lBhmVwFKAvHRcPWuARa42ZZcbcbxjxeD+qgGO061T/yec6H/F36eAAlpdJBC19
007zNc1zicH2dKBiAdYqkPhHCGrsuTJy/1J1jWHvDd5Cyz1NHjSTvZpvou23hAUE
cLzdWGHs4KF2MkXsEk0R4dffVAvv2DAye+jdhi/Ob/1DFFIIzbI5i8CQCjXlQRY8
NEcu/UZ7WY7QJ8Th0N1Pr27czDzjjA==
=1E4D
-----END PGP SIGNATURE-----

--aO8RRs/B/E5vsFXN--


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 11:44:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 11:44:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474496.1681605 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvsu-0002kx-QF; Thu, 05 Nov 2026 11:44:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474496.1681605; Thu, 05 Nov 2026 11:44:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOvsu-0002kq-NG; Thu, 05 Nov 2026 11:44:00 +0000
Received: by outflank-mailman (input) for mailman id 1474496;
 Thu, 05 Nov 2026 11:43:59 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOvst-0002kk-Fu
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 11:43:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOvss-002gbd-Gm
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:43:58 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec6be7-e002-0a2a0a5209dd-0a2a4501c33a-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:43:58 +0100
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec6bfe-5984-0a2a45010019-d1558031c07c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 12:43:58 +0100
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4a5b2be99a8so13720625e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 03:43:58 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48feda1f100sm9735976f8f.46.2026.11.05.03.43.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 03:43:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793879038; x=1794483838; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=fC3nIsihUEw5p4mwDyf18YPtfyEs4Yx7c0Yt/0Br/ts=;
        b=eV6Gvx371EHhWUeeSHK6m4r42ZQASr0z/EjzzQf7/xEY7FjOoyBpVJHGK3s9b4pFQj
         rAIUgJKyt/AU9cjU//dbA2oRdjpUHIF3KIR3x1CcfPukgjrYCFCCdn+rchKNyJv4ZBxR
         IKzsgqbGGQvmsHvnA6FapN1Pa2KNGdqo6ITWE4d5wBQbgEI8Md2pOhS0lOAT+CFRbdlK
         p1TUyElvcG1btQZ57/lQoZQMmVNanam9LoQe1yqWywseYTmNeDtvcxLPg7nix08Cjo+J
         FSJQFkkvnlFwdeJBmgrnTeKjrA/Yows9zxVmEruZEXBINNig9nnQtwNj7P/YAF269U9S
         QwDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793879038; x=1794483838;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=fC3nIsihUEw5p4mwDyf18YPtfyEs4Yx7c0Yt/0Br/ts=;
        b=2Mb8n73h/OA5/oiZ7oaM7yjlElWEv16q3sbCldT8Y+VarVThHGpzOTCiUnpnkBUpbC
         lfGVFxmijOfFvyfJV4WOHPiSOVZVPRmDA9xXlj1cRB26S0iVkrKBozk2W5ykaCWp/7Xa
         A6myN24h6Pinfxn3eBBLe1z7a3PdFY4COJk9pkHsfFpmvH1GS+2eddiJUxFt/kB08MA7
         r6ZeY7bDV8qcIH8ncwpZNwsJPhrF31/sEyWUzhEZAoB07Ileu4hpb/V1TWvDvgaeVvMj
         w6fcK1qyLVXKK6AC8Ot68n8gwfqRMf+YRUtqSBoUZbyriBKsqoGjUhF5mlTkQJxWmXgR
         yp1A==
X-Gm-Message-State: APuU4Z9CWREcm90+eXjP/sYQXdjfEdBYpEubZ/p9qXTlkahtaN6IaboQ
	QsYzDTMKvfYA5BDxfNGTelvuVQZvWDjRkzSLFIpN7nkB1UBNuLLPLKrV
X-Gm-Gg: AYBFou1RobJ/sAPRyV03779PKwdD1yj7YZ0fgdbmIu3bMXMjFb07n9RuZZZ+Zje48CR
	wcgSRwAIUSYaLNNe0w4xFpa6J9h4aSFSk84dbd2ezm9eSN+e3nMuotgj6xfiU2i/PCw2vRzeHVZ
	TILHuCEy733ssFxxnc/mj1mTZ+jTm319mh0CEw9F2kFSRbZots/Kt7IkaYWMSi54zP2Q28pu5hO
	VvMr8nJT5wGxqdKU5k3vV4I0ums/lKaS6K6hvWugIk7j3dUAPVD+uNAMXSg6MaQaoBPWP8KNB8C
	BU9PzqZLvKL+CRVOplFj9hE9ms1TU1kfa61v/bEN8FfMcY9YjQjYTUPHZ+xO2RQ2XfFLaJDvpyJ
	DbvXWzZ1XA+BE5SRebgViHAZb5nSnu1hgV9VR0uqJR0IrFAQNG7VUedTrQN6tuMT5+hbiYJXyc3
	AeC7zNDaYMIVc4sT+4oauCrEPp7lkAuumIsbHBpjjWXrkYV+sWz+Ktn0Grgv6mI0QtsXY19S7hC
	C/kY6OL+kC7+ECZwLM3yP0NKF/Wy3xQOhf9g9t9zZjO93CGJWg1uV852qg/9zA6XMeEOromfbuQ
	1qcWQWoYJgFVPh4GmcnzR7IyMcRIslzqGg4AtSCcJOVV7lHQ4pleHlFFTp15KAVCMG52CGJ7oRY
	2jecb1rusXjzGrlxcfoqXdA==
X-Received: by 2002:a05:600c:4f8b:b0:4a3:5a98:c279 with SMTP id 5b1f17b1804b1-4ac17ffb07cmr406193075e9.8.1793879037743;
        Thu, 05 Nov 2026 03:43:57 -0800 (PST)
Message-ID: <d8839a78-4af7-46cd-b9ca-8913f98f84f8@gmail.com>
Date: Thu, 5 Nov 2026 12:43:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 28/39] xen/riscv: introduce vaplic_reconfigure_target()
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <ccbe8db271e53f13bfc4bd223d546e8531108310.1790779209.git.oleksii.kurochko@gmail.com>
 <1792676312.8631fc262581453bbf619ec5b2062170.1a163d5b71c000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792676312.8631fc262581453bbf619ec5b2062170.1a163d5b71c000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793879038-1E07B757-30D04DCD/10/73395122804
X-purgate-type: spam
X-purgate-size: 8356



On 10/22/26 3:38 PM, Baptiste Le Duc wrote:
>> When a vCPU is migrated to a different pCPU, its IMSIC guest interrupt
>> file changes. Any APLIC interrupt previously configured to deliver an
>> MSI to the old interrupt file must be retargeted to the new one.
>>
> Jan's first question on v2 was how this avoids losing interrupts that
> are raised mid-retarget. You answered it on the list (step 3 of the AIA
> VS-level migration sequence; in-flight MSIs still land in the old file's
> eip and get merged into the new file later), but neither the description
> nor a comment says so. Please put it in the description, since this
> function is only correct as one step of that sequence.
> 

I will add the following:

This is correct only as part of step 3 of the sequence in the AIA spec's
"Migrating a virtual hart to a different guest interrupt file". Before
it is called, the new file must be cleared, with eidelivery set to 0,
and recorded in the vCPU's IMSIC state, which aplic_msi_target_gen()
takes the new target from. Once it returns, Xen must synchronize with
the APLIC.

That is also why an interrupt raised mid-retarget isn't lost. An MSI
sent before its source's TARGET register is rewritten is latched in the
old file's eip, the synchronization ensures it has arrived there, and
steps 4 and 5 merge that eip into the new file. One sent after the
rewrite lands in the new file and stays pending there until eidelivery
is restored (step 6).


>> [ ... 43 lines skipped ... ]
>> --- a/xen/arch/riscv/aplic.c
>> +++ b/xen/arch/riscv/aplic.c
>> @@ -128,7 +128,10 @@ static unsigned long aplic_hart_index(unsigned int cpu)
>>   /*
>>    * v->processor can't be used here: during a migration it names the new pCPU
>>    * before the interrupt file is moved there. The caller has to hold
>> - * vsfile_lock until the result is written to the h/w.
>> + * vsfile_lock, so that the guest file id and the pCPU owning it are read as
>> + * a consistent pair. A value built from the old file just before a migration
>> + * publishes the new one isn't lost: vaplic_reconfigure_target() runs after
>> + * the publication and rewrites every source targeting the vCPU.
> At this point in the series nothing calls vaplic_reconfigure_target(),
> so "runs after the publication" describes a caller that doesn't exist
> yet. Either move this sentence to the patch that adds the call, or word
> it as a requirement on that caller.
> 

Agreed, I'll word it as a requirement on that caller:

   A value may still be built from the old file just before a migration
   publishes the new one, so whoever publishes a new file has to call
   vaplic_reconfigure_target() afterwards, to rewrite every source
   targeting the vCPU.



>> [ ... 43 lines skipped ... ]
>>
>> +/* Decode the target vCPU from a TARGET snapshot (NULL if none). */
>> +static struct vcpu *vaplic_target_decode_vcpu(const struct domain *d,
>> +                                              uint32_t target)
>> +{
>> +    unsigned int hart_idx = MASK_EXTR(target, APLIC_TARGET_HART_IDX);
>> +
>> +    /*
>> +     * Skip a source whose EIID is 0, e.g. one still holding its reset
>> +     * value: interrupt identity 0 isn't valid at any IMSIC interrupt file,
>> +     * so such a source delivers nothing and needs no retargeting.
>> +     * The hart index range check is only a guard: the write path refuses to
>> +     * record values with an out-of-range hart index.
>> +     */
> "Reset value" reads as if the AIA spec defined one, but it doesn't: APLIC
> state other than domaincfg, the MSI address config registers and the
> genmsi Busy bit is UNSPECIFIED after reset. The 0 here only comes from
> xvzalloc_array() in domain_vaplic_init(). Could this be made explicit?
> It may also be worth saying that this check keeps unprogrammed sources
> from decoding as targeting vCPU0 (hart index 0), which would otherwise
> cause pointless physical TARGET rewrites on every vCPU0 migration.
> 
> Something like:
> 
>        /*
>         * Skip a source whose EIID is 0 (not yet programmed, vAPLIC state
>         * is zero-initialised): identity 0 is reserved at every IMSIC, so
>         * it can't fire. Otherwise it would also decode as targeting
>         * vCPU0 and get rewritten on every vCPU0 migration.
>         * The hart index range check is only a guard: the write path
>         * refuses to record values with an out-of-range hart index.
>         */
> 

Agreed on both points. I'd word it slightly differently though: the
write path doesn't reject EIID 0, so a guest can program it itself and
"not yet programmed" is only one of the cases; the spec calls identity 0
never valid rather than reserved; and such a source can still become
pending and have its MSI sent, it's the IMSIC that ignores it. So:

     Skip a source whose EIID is 0: interrupt identity 0 is never valid
     at an IMSIC, so such a source delivers nothing and needs no
     retargeting. The AIA spec leaves target[] UNSPECIFIED after reset,
     but the vAPLIC state is zero-initialized, so this also covers every
     source the guest hasn't programmed yet, which would otherwise decode
     as targeting vCPU0 (hart index 0) and have its h/w TARGET register
     needlessly rewritten on every vCPU0 migration.


>> [ ... 6 lines skipped ... ]
>> +void vaplic_reconfigure_target(const struct vcpu *v)
>> +{
>> +    struct domain *d = v->domain;
>> +    struct vaplic *vaplic = to_vaplic(d);
>> +    struct vimsic_state *vimsic_state = v->arch.vimsic_state;
>> +    unsigned int irqn;
>> +
>> +    bitmap_for_each ( irqn, d->arch.vintc->used_irqs, d->arch.vintc->nr_virqs )
>> +    {
>> +        struct vaplic_source *src = &vaplic->regs.sources[irqn];
>> +        unsigned long flags;
>> +        uint32_t target;
>> +
>> +        /* APLIC interrupt sources start from 1, there is no source 0. */
>> +        if ( !irqn )
>> +            continue;
>> +
>> +        spin_lock_irqsave(&src->lock, flags);
>> +
>> +        target = read_atomic(&src->target);
>> +
>> +        if ( vaplic_target_decode_vcpu(d, target) == v )
>> +        {
>> +            /*
>> +             * IRQs are already off under src->lock so no need for *_irqsave
>> +             * here.
>> +             */
>> +            read_lock(&vimsic_state->vsfile_lock);
>> +            aplic_hw_write_reg(offsetof(struct aplic_regs, target[irqn - 1]),
>> +                               aplic_msi_target_gen(v, target));
>>
> Doesn't this need the same vsfile_cpu != CPU_NONE check as
> vaplic_emulate_store()? 

The case with the similar place in vaplic_emulate_store() is slightly 
different, as a guest could write to the target register using a vCPU 
for which the h/w interrupt file hasn't been assigned yet. Since we 
support only h/w interrupt files, we should simply ignore such writes, 
as the vCPU isn't ready for some reason.

> Because it seems that, for a vCPU on a s/w
> VS-file, aplic_msi_target_gen() calls aplic_hart_index(CPU_NONE) and
> indexes imsic->msi[] out of bounds; the ASSERT() in
> aplic_msi_target_gen() doesn't help in release builds.

I think ASSERT() should be sufficient to catch this situation. Since 
software interrupt file support is not included in this patch series, 
vaplic_reconfigure_target() cannot be called for a vCPU with a software 
interrupt file. The ASSERT() in aplic_hw_write_reg() will catch such 
cases. Therefore, even in a release build, we will never encounter a 
vCPU with a software interrupt file so we shouldn't care that ASSERT() 
is do nothing in release built.

When it comes to adding software interrupt file support, debug builds 
will be used during development, so the need to update 
aplic_msi_target_gen() to handle this case properly won't be overlooked.

> Since both
> callers now do the same lock/check/generate/write sequence, a helper for
> it would make sense.
> 

Looking at my current implementation of the software interrupt file 
support, aplic_msi_target_gen() has been updated so that there is no 
longer a need to check vsfile_cpu != CPU_NONE before calling it. 
Therefore, this check will be removed from vaplic_emulate_store() and 
both the places will look the same.

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Thu Nov 05 12:49:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 12:49:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474581.1681614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOwuT-0000mV-MB; Thu, 05 Nov 2026 12:49:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474581.1681614; Thu, 05 Nov 2026 12:49:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOwuT-0000mO-JA; Thu, 05 Nov 2026 12:49:41 +0000
Received: by outflank-mailman (input) for mailman id 1474581;
 Thu, 05 Nov 2026 12:49:40 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOwuS-0000mI-LY
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 12:49:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOwuS-009gv4-2O
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:49:40 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec7b4f-8faa-0a2a0a5109dd-0a2a4505a2d8-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 13:49:40 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec7b63-4cb1-0a2a45050019-d1558033c1c3-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 13:49:39 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a5036bbac7so11188195e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 04:49:39 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4533873f0sm136652705e9.4.2026.11.05.04.49.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 04:49:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793882979; x=1794487779; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=RbU+esne70TuXyLcr1aSiliGdvPWNYuuqC4KPBugy1g=;
        b=VnGaeeJ73P8aFTis+tQz51UKsKT3n2J0oZAAauy8pkubVa1rH0L53QCDyemPlN4jXu
         yiTi3sF3Z/H8Bwp3eNwmZcFlKXhzZExjQBRzF5pRFO7tlaskn4RaETOD+dlotZ4YRTAq
         wEwqosYiEOs7GoYLfScuZp+ECQF8rMXrGTg0sOL0yhXjQSpSbFNhq7Alw78VbK09M2MV
         rihiwOusbr3uJOScWWvAKTpCzS4j9+KGEmDdBnfeaQMRmMg5CzIqXROVyB91nooO9O8T
         GMxoH+9WNHufAxkE9jFXAt9e+24njLuGNwREKqVgl2U6Z+LbHqjwT3tfWG2gHf9B/O9j
         O9ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793882979; x=1794487779;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=RbU+esne70TuXyLcr1aSiliGdvPWNYuuqC4KPBugy1g=;
        b=VyHnxx13GiZxEMCVnmak0IE1LOeTwMBw3psK+zwlLASTF8W9qi4pr4rcINUrJ8jmVs
         YU9t1WJ1a8+aQsgLpblBHM4WEeNK2Wa2s5s/+IivYfOHAZr2SlpcQn1j+5whWzfFrEFG
         Cmhm+XbOinIK6ABMItNyZxyei+Mmm7aD1aJaPZs3TtyLHczUgZ6m0K3PWNQm7lUOwnoe
         TAjIRelMR3nyNnvNFwuB87fXOdPLDb8es7xSrHdKJAkilRQp7EhK6PFiwmVh3jQsZSrp
         XEexKjYirWSD3/y/fZHTopXRa8i2iRmhevlF8X8izTroOf3AxJnWAI4dp/LjPU0l4YY+
         oIBQ==
X-Gm-Message-State: APuU4Z99uy00DUMbPbpPK9hT1Ck6HRr9hSccT6ga0XVgxskCERZ/UUGh
	7xlc1T8uqavbOjynSN3h5FDW9ZDGAwYAp7y7wWrBMRfAB00W84zL5K1a
X-Gm-Gg: AYBFou2S02bWCBpeA5VZRsi0Adbx9p83eTHG1vhrK0ElH6gIh300LRl+KabS8zxcTOU
	UHIAkgfC8f0AV5LxFhEpZWwYaJO40L3CkHsV9lHYrGiDRDqjL4LjreWeiRf7642RSfNPo8fk9F4
	676fnbI5yAZdOo3k3X1/XraUIpC71+2qGdgYsgbhRdEYTM2bjPe+3Saiix3wz1eJeZkUeRmbIsd
	v+ifyi4AZnZWS30j27jxjEzIca/0eCnzJrvVdNqholOgzej8LO39lCV5ZWWB6Er3AwyhJyvPjNO
	YmJyLx/viwii2/L8TnbgNC4r/2MG/2KxrktoR1dTNETIutXs5OuOmJdWQjndQGSV8t2pmrA1ifs
	YBlmpoqyYjeFWjCNIutZjk3y4S7LA8N91C6dok42ge4W+c/jcELmUYH2URzbUIG95YDWiY0vEzq
	BN2w76l4vH+JAKcbYQQx5gSfEcs72EG26IFme4P7dctDrOoAb6H4PYRMFT/kX9avLS4PiN+q09s
	IsruvYfMTthR7JiqeN9DhtFkiFjnUvHZxnNNfBmWAuGsEmMvw74azYuYaU5mXgj5Qs75Se5OrlC
	1fCEX6Cadafbgd/97KMDz93JnIgTjU7tk2uIcIyAZIJuSzbzqUbQ/NwrraQlaTL+cHkTbDUIWSl
	EVg==
X-Received: by 2002:a05:600c:470d:b0:4a2:191f:7cb8 with SMTP id 5b1f17b1804b1-4ac1899378bmr398106795e9.17.1793882978577;
        Thu, 05 Nov 2026 04:49:38 -0800 (PST)
Message-ID: <81b0b1fa-1aa4-4646-bdfa-5e773cb876f4@gmail.com>
Date: Thu, 5 Nov 2026 13:49:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 29/39] xen/riscv: prepare new IMSIC VS-file
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <7f00946a6b1b67e79f94e3c665f8f0ce9d5d0e5a.1790779209.git.oleksii.kurochko@gmail.com>
 <1792760165.8631fc262581453bbf619ec5b2062170.1a168d535ab000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792760165.8631fc262581453bbf619ec5b2062170.1a168d535ab000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793882979-F60AA2A1-2898F6FF/10/73395122804
X-purgate-type: spam
X-purgate-size: 6406



On 10/23/26 2:55 PM, Baptiste Le Duc wrote:
>> [ ... 64 lines skipped ... ]
>> diff --git a/xen/arch/riscv/aia.c b/xen/arch/riscv/aia.c
>> index e31c9c2d24..229ab4b867 100644
>> --- a/xen/arch/riscv/aia.c
>> +++ b/xen/arch/riscv/aia.c
>> @@ -1,8 +1,10 @@
>>   /* SPDX-License-Identifier: GPL-2.0-only */
>>   
>> +#include <xen/bug.h>
>>   #include <xen/errno.h>
>>   #include <xen/init.h>
>>   #include <xen/sections.h>
>> +#include <xen/sched.h>
> Nit: Why xen/sched.h? The stub doesn't dereference v, and asm/aia.h already
> forward-declares struct vcpu. If it stays: sched < sections, so it goes one
> line up.

Indeed, nothing needs it here. I'll include <asm/aia.h> instead, which
aia.c doesn't include yet: without that the stub's struct vcpu would 
only be declared inside the parameter list. <xen/sched.h> then moves to 
the patch where v gets dereferenced first.

>> [ ... 30 lines skipped ... ]
>> +#define imsic_vs_csr_write(c, v)    \
>> +do {                                \
>> +    csr_write(CSR_VSISELECT, c);    \
>> +    csr_write(CSR_VSIREG, v);       \
>> +} while (0)
>> +
>> +/*
>> + * Leaf macros for the switchcase expansion pyramid below:
>> + * imsic_switchcase_break(ireg, op, v) - emit "case ireg: op(ireg, v); break"
>> + */
>> +#define imsic_switchcase_break(ireg, op, v) \
>> +    case ireg:                              \
>> +        op(ireg, v);                        \
>> +        break
>> +
>> +/*
>> + * Generic switchcase expansion pyramid.
>> + * F is the per-operation leaf macro, ireg is the base register index.
>> + * Extra args (e.g. an operation and/or a value) are forwarded to F via
>> + * __VA_ARGS__.
>> + */
>> +#define imsic_switchcase_2(F, ireg, ...)             \
>> +    F((ireg) + 0, __VA_ARGS__);                      \
>> +    F((ireg) + 1, __VA_ARGS__)
>> +#define imsic_switchcase_4(F, ireg, ...)             \
>> +    imsic_switchcase_2(F, (ireg) + 0, __VA_ARGS__);  \
>> +    imsic_switchcase_2(F, (ireg) + 2, __VA_ARGS__)
>> +#define imsic_switchcase_8(F, ireg, ...)             \
>> +    imsic_switchcase_4(F, (ireg) + 0, __VA_ARGS__);  \
>> +    imsic_switchcase_4(F, (ireg) + 4, __VA_ARGS__)
>> +#define imsic_switchcase_16(F, ireg, ...)            \
>> +    imsic_switchcase_8(F, (ireg) + 0, __VA_ARGS__);  \
>> +    imsic_switchcase_8(F, (ireg) + 8, __VA_ARGS__)
>> +#define imsic_switchcase_32(F, ireg, ...)            \
>> +    imsic_switchcase_16(F, (ireg) + 0, __VA_ARGS__); \
>> +    imsic_switchcase_16(F, (ireg) + 16, __VA_ARGS__)
>> +#define imsic_switchcase_64(F, ireg, ...)            \
>> +    imsic_switchcase_32(F, (ireg) + 0, __VA_ARGS__); \
>> +    imsic_switchcase_32(F, (ireg) + 32, __VA_ARGS__)
>> +
>> +static void imsic_eix_write(unsigned int ireg, unsigned long val)
>> +{
>> +    switch ( ireg )
>> +    {
>> +    imsic_switchcase_64(imsic_switchcase_break, IMSIC_EIP0,
>> +                        imsic_vs_csr_write, val);
>> +    imsic_switchcase_64(imsic_switchcase_break, IMSIC_EIE0,
>> +                        imsic_vs_csr_write, val);
>> +    default:
>> +        ASSERT_UNREACHABLE();
>> +        break;
>> +    }
>> +}
>> +
> What does the switch buy? ireg only ends up as the value written to
> vsiselect, not as a CSR number, so it doesn't need to be a compile-time
> constant. imsic_vs_csr_write(ireg, val) does the same, without the 128 case
> labels and the macro pyramid. If there's a reason, it wants stating in a
> comment; otherwise please drop the pyramid (an ASSERT() on the range can
> stay if you want one).

Good point.

I will drop it and use the following instead:

/*
  * On RV64 a 64-bit EIx group is the even-numbered register alone, 
whereas on
  * RV32 it is split into the even-numbered (low half) and the following
  * odd-numbered (high half) register. ireg names the first, even-numbered
  * register of such a group, among eip0..eip63 or eie0..eie63.
  */
static void imsic_eix_check(unsigned int ireg)
{
     ASSERT(!(ireg & 1));
     ASSERT((ireg >= IMSIC_EIP0 && ireg < IMSIC_EIP0 + 64) ||
            (ireg >= IMSIC_EIE0 && ireg < IMSIC_EIE0 + 64));
}

/* Write a whole 64-bit EIx group, laid out as described above. */
static void imsic_eix_write64(unsigned int ireg, uint64_t val)
{
     imsic_eix_check(ireg);
     imsic_vs_csr_write(ireg, val);
     if ( IS_ENABLED(CONFIG_RISCV_32) )
         imsic_vs_csr_write(ireg + 1, val >> 32);
}

I will applt the similar patter to other patches where the pyramid was used.


> 
> Typo (only if the macros stay): "Leaf macros" - there's only one here. And
> `case ireg:` / `op(ireg, v)` as well as c and v in imsic_vs_csr_write()
> want parenthesizing (MISRA 20.7).

As to c and v in imsic_vs_csr_write(): they're passed as whole arguments
to csr_write() and the other csr_*() macros, which is covered by the
R20.7 deviation for macro parameters used as macro arguments. That's 
also why the parentheses were dropped in v3.

>> [ ... 67 lines skipped ... ]
>> +static void cf_check imsic_vsfile_local_clear(void *data)
>> +{
>> +    unsigned int i;
>> +    const struct imsic_vsfile_data *idata = data;
>> +    unsigned long new_hstatus, old_hstatus, old_vsiselect;
>> +
>> +    /* We can only zero-out if we have a IMSIC VS-file */
> Typo: s/a IMSIC/an IMSIC/
>> [ ... 31 lines skipped ... ]
>>   void imsic_migrate_vcpu(struct vcpu *v)
>>   {
>> +    struct imsic_vsfile_data vsfile_data = {
>> +        .nr_eix = imsic_cfg.nr_eix,
>> +    };
>> +
>>       /*
>>        * The scheduler can mark a freshly created vCPU's unit as migrated and
>>        * invoke this before the vCPU has ever run (see the migrated branch in
>> @@ -703,5 +849,18 @@ void imsic_migrate_vcpu(struct vcpu *v)
>>       if ( v->arch.last_cpu == CPU_NONE )
>>           return;
>>   
>> +    /*
>> +     * At this point, all interrupt producers are still using the old IMSIC
>> +     * VS-file.
>> +     */
>> +
>> +    vsfile_data.hgei = vgein_assign(v);
>> +
>> +    /* We don't support SW interrupt files at the moment. */
>> +    BUG_ON(!vsfile_data.hgei);
>> +
>> +    /* Zero-out new IMSIC VS-file */
>> +    imsic_call_on_cpu(v->processor, imsic_vsfile_local_clear, &vsfile_data);
> Nit: The comment restates the call; drop it.
> 

Agreed, I will drop.

Thanks!

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:30:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:30:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474614.1681622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxYE-0003Zk-In; Thu, 05 Nov 2026 13:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474614.1681622; Thu, 05 Nov 2026 13:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxYE-0003Zd-GF; Thu, 05 Nov 2026 13:30:46 +0000
Received: by outflank-mailman (input) for mailman id 1474614;
 Thu, 05 Nov 2026 13:30:46 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxYD-0003ZX-Vh
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:30:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxYD-0031rZ-44
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:30:45 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec84fa-bab6-0a2a0a5309dd-0a2a4507aff0-36
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:30:44 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8504-b4ea-0a2a45070019-d1558029b9f9-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:30:44 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a208d93758so21432145e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:30:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec8d8748sm10163973f8f.16.2026.11.05.05.30.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:30:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Content-Language:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885444; x=1794490244; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to:content-type;
        bh=NEotrOoArtlWTxrUx+/5tdV+nhEbrVit6Kx8RUSo0n4=;
        b=J91POCmUuCTL//Pp6PEt+2cu/fnM60FdcU52gCeOsE6dQtLHYlV2x80jLk7MlJCPeb
         xdmUbQur04KZ78Uu0QeDVmzIXTYVmrXajA46vzN/PxumA4yQpllsYW+tY1AytiHSBZJX
         FgIj9AjSyCMenvHsLomxqx6d5B7rQw7Ff65Wnk2MaTh1XQBEO2dZCk21N3CR8ndBm2j7
         Z/6E3MKAdJtOH/4JYmhG4A2iQ0LqVFRugUZ4VcH8ka2pKRhayItbGTRLJbR8c0JbDpMN
         NzTGqifhasbWstEQbG76hK3cyQOioPUVmklGE4b4oPA+Ic97QZbH3MlZqdPx5YwWOaC/
         2e8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885444; x=1794490244;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NEotrOoArtlWTxrUx+/5tdV+nhEbrVit6Kx8RUSo0n4=;
        b=vgZMXn2lK5n9zkXujSJtijJFAjxxP4ZoKNHzG8OtpbGPY+e3KS/Nhov12MEzx6W//r
         ya4VXFpWy0NO4xsuXqnuNXhYwgqOMVIe3JFawca/Kmzre3XZoxxnGPlgO0LEkqtuIN5b
         vd2GLYDbNHA1bVU04m17HzKmeqBcFoo5jmDM9LP0FnEtBdPRCZgxCGcG2VU67EPvS04A
         Q0FffusnLI2j1WnwVmlx7MjQpfGNyinKkk6WOooPYifDQxwP4pbP2Y53vexIzGOaMsZG
         v/XCr6XRGU6jZyceHn7aXckajh/yKDHego2YuJQ5Yur7DN1MNSwcCnD6L8mmButrxgB7
         3veQ==
X-Gm-Message-State: APuU4Z8UWQSrkC58x5nCF6bD/V8y08IqaXSwc5sJ4fyIi9ykyokq2cp5
	RMN4Uo5JqsuoVoYE/vJXG8MyNR7/OM4iOlhCHGkZ0+8Skpec2suqarfgjZJhjCV3MmedbkLBhfc
	6UUg+BA==
X-Gm-Gg: AYBFou2gi15ob1zDoEU33qQtIpdHGEB1fnD2iSqgTEvI5D9+y3ywKyrcWMshe/XojLn
	NVSR9bq7ExA3Hu033yx9lkyh+zTHSU+TMETlpZKQaWjMOBeoEJI/O5E+Wb+5FH0lbXBKOVKkpg+
	92cgCoPozXb58GvAy2OuDyCgGy8QJ725H2Jd867iExFiPewSuxGK10HhQ+4kvQ3kxS7v1RJlxA8
	bdfZmVAp54lod3+fdeMYwJARjQLOB08CA8hRamt6MaUukW2xGqZfdCfVQOZ69Q/utcXbFphXHOI
	GvRQWOyXy47Qzaao1gpvtyqea+Qo9SgotSEye1iSGQhQdUt5JfLJniJ60EBFd5MEi05IoeVsee0
	6/yFeyTQFFqXDgsDZ/V5u5gWeZUCwkLif65UhY+q1p+W4dMKiO0OB80eQcCp71vWLok+QjC1Ih/
	pJHLroryOdb3HbX3siRrss7wqGXL8tWA1mHJD8tQ5w1/QxEgjzcimRb4DqNdsvpZ/glQk+vOIVe
	zTRROqtav8t+xGxjcD/piN15lL77IulwLjPtLvLjl4GQwMDrR57v56gsLbzkzkQScmtQr4mnX1z
	R7PFOU8+QIpun53wubYC9OBUW4GKULFu/uQlo97ciK1TsI8Uz5ckudgl1mOssB33PI7ZHS40lPA
	ddK5J8JSFAW7Jf3+d
X-Received: by 2002:a05:600c:638f:b0:4a2:c2b:a91b with SMTP id 5b1f17b1804b1-4ac17d168a6mr418189425e9.10.1793885443847;
        Thu, 05 Nov 2026 05:30:43 -0800 (PST)
Message-ID: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Date: Thu, 5 Nov 2026 14:30:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 00/14] x86: PVH Dom0 loading rework
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1793885444-A4ECEAE4-84D17A6C/10/78276251493
X-purgate-type: spam
X-purgate-size: 1061

The primary goal is to accommodate large initrd-s without requiring people
to restrict Dom0's memory just for that. Other issues are being addressed
as well, though, and some cleanup is done, in part even outside of the main
target area of this series.

v2 addresses review feedback, which has resulted in some dropped patches,
some new ones, and other perhaps significant rework.

01: EFI: guard against oversized modules
02: setup: widen consider_modules()'es size parameter
03: setup: special treatment of initrd for PVH Dom0
04: PVH: split pvh_load_kernel()
05: PVH: keep a copy of Dom0's initial E820 map
06: PVH: lift E820 alignment requirement
07: PVH: split pvh_setup_acpi()
08: x86/PVH: split pvh_setup_vmx_realmode_helpers()
09: PVH: track Dom0 available RAM in a rangeset
10: PVH: try to map initrd directly into Dom0
11: PVH: prefer smaller E820 regions for stealing from
12: PVH: log Dom0's E820 map earlier
13: PVH: simplify writing of Dom0's RSDP
14: PVH: check Dom0 start_info for truncation; adjust entrypoint type

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:32:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:32:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474623.1681633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxZs-0004Cw-Th; Thu, 05 Nov 2026 13:32:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474623.1681633; Thu, 05 Nov 2026 13:32:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxZs-0004Cp-Q0; Thu, 05 Nov 2026 13:32:28 +0000
Received: by outflank-mailman (input) for mailman id 1474623;
 Thu, 05 Nov 2026 13:32:27 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxZr-0004Cj-SZ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:32:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxZq-000NaQ-FI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:32:26 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8559-2eae-0a2a0a5409dd-0a2a4501e258-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:32:26 +0100
Received: from [209.85.218.49] (helo=mail-ej1-f49.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8569-5984-0a2a45010019-d155da31b1c8-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:32:26 +0100
Received: by mail-ej1-f49.google.com with SMTP id
 a640c23a62f3a-c450ab1483cso311782466b.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:32:26 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e48d0dcsm171112266b.70.2026.11.05.05.32.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:32:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885545; x=1794490345; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=pu1UgUgWUzi4OHOR1sIfgHhhY81bof5NV4x1QUXUyUA=;
        b=RzQZZPQGxT0HYPgcSgrpqCnsHfWtH9+v9YhgBV1gzNf3BmOKt9sqFqMXRMAe49FDMx
         Ruk+meQo3reTz5EE4QnL9d9HpBJpZpLyq/mWFr78kO3HENyWm5r7iahBJT31XLfDtmBT
         5jsurJ53Vjo1FDpaxKiJXLJ/2p3twK4+CNr2z6O75aJH96DWT8yB4yaw4t622vGK8GF8
         GqA1Fu+w+wkXDnuIS9ZV7SyMvY/vrqQ8dnDCaSOdzShygvBtn0TJUitW526qcllUwxpI
         zTTVVzxExrRB5LsFNc9XEuq6c9bcKmogaKgTiqkYNjzYp3E5e3e9kCBcoNsu4r5hw5VF
         SgEQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885545; x=1794490345;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=pu1UgUgWUzi4OHOR1sIfgHhhY81bof5NV4x1QUXUyUA=;
        b=wykG6C4XnavwYl11Is3cZlIuu9KNnC2QhjwgnJ3DD5bsVRtoztGHnuOo5JqJjhrbI+
         M46oEnPjONZ//47KkzFpE7WXUUIv19pSAu7n7Y7MeZpX8IwxBxZjT1BBwWdaxoEXBTZ/
         SYliTs0MWc1wETyZ1+x05iBVoPL99HyWsoMzHYiEUapVx7INmXuu/kmY/HYtF4BXomoG
         lKZTYu+OCLTX0dUGVF6FCgVvsOgL08xR6HnsJtCp61Fye3IBTcdrtcLWoZi4FKtLtzDg
         dWByrsU0+Dg6qnMvqCDg3rTl4KuODGwotJHySUpjz9H3SbKd4jxT/Y1i1zRPB0NAvPWk
         6cnw==
X-Gm-Message-State: APuU4Z/u8CXT2WlXAaQY9ABLqN3HOFWhg8oB1a12mhXy8seQQEQ4U+Wi
	NOuoHKMIcMpBABNHl2P+1cUDbKANf1SFiKzsW5DFPmEnDProGwmUhNh6tcBeplYqUCUtsL/HedB
	8b/v8Cw==
X-Gm-Gg: AYBFou12Dt894bFHNtgsCx8ed3ytTda9mOlPaRp3mN7kL7LbWzpgFosgCS748xsfgGd
	5yakJzLXCKVqfxXhHYTxren/p5HJxG9ONZlZl2aQVP+MNq3CfZSRjG7BDXFWj5s5fcTd/VcRJBz
	BzOLEMquGKCq+NdQRlxylDgrvmZP9rlf2yJUXgODyLELg8Q4iKBn0t1UwwIwmxxc+MbpbnM1SO2
	DAFPuPCPFHfzYSmJr1Dp8PW28dtqzWzhsQ0AosxAsc98m39vrhPbzscWTLuG6IBbx1qPQXhTokB
	8/JKbGGXn27Mfhns3O0PwqSdl3S0Pv0AGvmtrCY5EYpN90+iTGPlE7oTsaal5AbUfaR11XloHX4
	afJIuPTFl9AmcA6uVvcB0h8yBO2w27PGEGVP6OHESwWxZ4fzV5/YZ5gIrPLgFBfjxUoSEzLZ5mp
	Y+g5Bq7lhvSTgxLHkiFvbuEg7lp6HH1JCQj+2DkduP7KbGovk2ZOD070qlQhLwrCzi0FIbTBeF1
	aC8Cv/BpgkHhndi4rAIwPwTDUMOadhzvYcza87hSh6fuf/MSk2XZILpX1s6Jcd91gLgqcS7Jbwv
	J4juGJhKyFSc9M9tGfpZmnTudY+rR6RN+vBooFd86tz7Boc/s7gGQiuHo67Oxs7fbkcjBCEqkZm
	Jn5hAE3jheBYH7eY=
X-Received: by 2002:a17:907:868a:b0:c40:231:6eab with SMTP id a640c23a62f3a-c4ca7a4e651mr1693952066b.16.1793885545530;
        Thu, 05 Nov 2026 05:32:25 -0800 (PST)
Message-ID: <64ac61c0-f265-4860-bdb0-f142ea9e4a04@suse.com>
Date: Thu, 5 Nov 2026 14:32:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 01/14] x86/EFI: guard against oversized modules
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Marek Marczykowski
 <marmarek@invisiblethingslab.com>,
 Daniel Smith <dpsmith@apertussolutions.com>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793885546-BC359757-EF92E473/10/78276251493
X-purgate-type: spam
X-purgate-size: 1040

module_t's mod_end field (which we repurpose to hold a module's size)
cannot hold values 4Gb and up. Don't let truncation go silently.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: George Dunlap <gwd@xenproject.org>
Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
MB and MB2 also constrain module to below 4Gb. The constraint here may be
possible to drop once hyperlaunch work has progressed enough to no longer
require the intermediate mb_modules[].

--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -736,6 +736,13 @@ static void __init efi_arch_handle_modul
     place_string(&mb_modules[mbi.mods_count].string, local_name.s);
     mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
     mb_modules[mbi.mods_count].mod_end = file->size;
+
+    if ( mb_modules[mbi.mods_count].mod_end != file->size )
+    {
+        PrintStr(name);
+        blexit(L" is too large");
+    }
+
     ++mbi.mods_count;
     efi_bs->FreePool(ptr);
 }



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:33:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:33:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474634.1681641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxaS-0004iP-4M; Thu, 05 Nov 2026 13:33:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474634.1681641; Thu, 05 Nov 2026 13:33:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxaS-0004iI-0v; Thu, 05 Nov 2026 13:33:04 +0000
Received: by outflank-mailman (input) for mailman id 1474634;
 Thu, 05 Nov 2026 13:33:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxaQ-0004ht-VR
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:33:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxaQ-00Aj8S-BO
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:33:02 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8580-8faa-0a2a0a5109dd-0a2a4506831e-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:02 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec858d-195a-0a2a45060019-d155802bd4ff-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:01 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4b467581b98so13351095e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:33:01 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b57317cae5sm103423815e9.12.2026.11.05.05.32.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:33:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885581; x=1794490381; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=YuPU3a8IBBvMhUzOW5Q9jnXRThErt0mAuRAL2YchLs4=;
        b=gSywKm74J5m1Cs5SvUIN3mDAJ5WVZRGGBA7Z0aAWtEEDF34MZRWDlFlSLIklSXFbxz
         k99iw4y8SV1U6UEBVcO8SKM2UJ7Q3dkYyKXAoTcYUVLtV0naaqRonbA1Mm9k6YbI7hBz
         DcjtLmGSCgj+ORKoEuC1jfTWjxmdscT9KshOjnesyk8Wdj1yfVgeLXfRulxuI3Ibx890
         joBhI5gUGkSqqY7GM8hpSNb/JCLgPBIhPjYUa/3xay2qQ7t8z+aCCx5GpdOSL13wazZ0
         zAir1IjhMQCjISbGEriwOsrFUC3wGE61j5Fgj/cag8NOCYHbRWHthf7xcDA/QHQmTFs4
         PlNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885581; x=1794490381;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=YuPU3a8IBBvMhUzOW5Q9jnXRThErt0mAuRAL2YchLs4=;
        b=euXUYxoeZwzC24nX64f6XTeQoTtWI7fFwM3TG9fPMiSR3yDOt70YgWZ+t3TU7Xp0NB
         3AtxtGmbSIMIy8a0p1Vy8Ly0nlshrNeCWlA9/eOncdLALdg8GEyJYsRgMtnLsbIaOzYX
         N0KXR9FKMA2F04iMxkpLJD66OP+lSfyWSm+HFKDEwNKohzhLbGOYCuhYKzk652o/ccNJ
         TIBwTkvQvFkq69vnOVYW3SS+B77KT4hdS714xZG2X78VmDcJqy74tavwjzfM57xX1XTY
         h1qD/laO36vEr99vT5C8OoOj/jxM4YodT3FQeTOismfj5uBJ5Si/f4q73pPCdIUVZOaX
         W7Ag==
X-Gm-Message-State: APuU4Z/rY+x09UdqzzSFYWlvB0bgpBK5c/5oyNf1FL06MMp9NIMqDipA
	ZmZOXTb32heUvJYWTbiEZNN9fpF7aM/03q98ily1xhLUrTrt/kD+mdV3lDQYuHcgFiZofm7H45e
	NQuMM3Q==
X-Gm-Gg: AYBFou28EwZ16ao4AM7KEmwqh5IUWRwi5PjnZAA3fc68Hf7JEju4TwjUCj1FyMzF8D3
	FrfluecKdV2KcPERUqj5pnnEgcez8YgbUs6HSgS6NqUkaI5xshHNkIYETK/GWtCQgYBwSQ6f/vb
	c2LhdMtZKA6lAZIQWVtxodlDCdrW5TrkSpqJ1/vzdSDScv+skQkGvX0CLS/VDcu/Nn9ZyAntcQJ
	VOyz6+KuSIUQq0zglh77Fjbh8zjpZi5SG8QJFPMBBqtTsdqTFbuSklb1i744e8GFeUhbFe2Rlxm
	2SKFCNIQp1fjKCUZ8/uCkndDR/u2Flq388IUeKxc/C1wYK6BYqOrD9OX+PW02IYtG8uI9wiksnO
	RP0c5cKTkYMeTbSLJrnIRaXPhmbMhZS4e/CpRag0GKmDi9CyF3QpKYljD5ydk+qS/DxgwA1Zdnd
	yecdWBLxl96LOwWZyc6YtdM1HXzxmtmGSbfYfboWT1KCUG60JXWXgaMKp6dVdTJALCDRQzAGi7W
	eZqCUiGyGeNlqGaHJdlD+SnI2sWfloi/Ygz/l22NSqBTFcais6p96qZr3FIWfJ3FFJqN4hXqhsb
	v3fCMlaOBxOJzWRFuYnoAn3UxKFkM5BDG1/K5iax+h5cIJK2tpG+l0nozUBrp4ddrhceTfP1iJJ
	5YIK0413ppEcYbPM=
X-Received: by 2002:a05:600c:8b06:b0:4a2:d:5ccc with SMTP id 5b1f17b1804b1-4ac17b2bc63mr431783145e9.10.1793885581330;
        Thu, 05 Nov 2026 05:33:01 -0800 (PST)
Message-ID: <ca7b7cc5-fecb-4215-aec3-8c70b0c51e3f@suse.com>
Date: Thu, 5 Nov 2026 14:32:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 02/14] x86/setup: widen consider_modules()'es size
 parameter
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793885581-FD40B77B-5516A196/10/78276251493
X-purgate-type: spam
X-purgate-size: 712

Eventually we will want to lift the restriction on module size anyway.
Right now what we (subsequently) need is a way to express at least
"exactly 4G", when rounding up valid sizes below 4G to the next 1G
boundary.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.

--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -690,7 +690,7 @@ static void __init noinline move_xen(voi
 #undef BOOTSTRAP_MAP_LIMIT
 
 static uint64_t __init consider_modules(
-    uint64_t s, uint64_t e, uint32_t size, const struct boot_module *mods,
+    uint64_t s, uint64_t e, uint64_t size, const struct boot_module *mods,
     unsigned int nr_mods, unsigned int this_mod)
 {
     unsigned int i;



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:33:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:33:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474649.1681650 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxaq-0005CL-FI; Thu, 05 Nov 2026 13:33:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474649.1681650; Thu, 05 Nov 2026 13:33:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxaq-0005CD-Bw; Thu, 05 Nov 2026 13:33:28 +0000
Received: by outflank-mailman (input) for mailman id 1474649;
 Thu, 05 Nov 2026 13:33:26 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxao-0005Am-64
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:33:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxan-00ESLJ-JE
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:33:25 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85a3-e002-0a2a0a5209dd-0a2a450b9b9c-12
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:25 +0100
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85a5-b7e8-0a2a450b0019-d155dd2cb555-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:25 +0100
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-49231763f81so97060f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:33:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b433ebd278sm117146845e9.3.2026.11.05.05.33.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:33:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885605; x=1794490405; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=sX6VGdCa/sWhS6op5NPZP97VCREu6kSDPuran2qHXj0=;
        b=AVvMdPBbQpZ9lyX7ZTfF8M7U4KwVGURlYyE8XWkdmlwkIFFdBIs/GHxtrQqk+caJSD
         yZfskhJHEwPuVTQmwOf4kXFtu3+3vtGWh5IlN98OvTsBq0nnFolU73L81GyutGEdliwt
         qUyqdIdKkT/Bj5MLoT0twU85eXoGkwSZhEANLJjzFbkyHJPzATCVvigovbVOjW77/cjS
         TK6gZuFOK/IzoKrZ3v4ZxHY1h1wIBFWHkds92oBBwp+Kg/d1eIjV8zmS+vSR7Ki/4mTJ
         jZw824zLeI0l5lKsoKKzn2pjMD0OfCvK5FNWdWjvoLqUAu6T1WCiy+jZdrs3QFBcKGLP
         Oi5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885605; x=1794490405;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=sX6VGdCa/sWhS6op5NPZP97VCREu6kSDPuran2qHXj0=;
        b=1vQMPKSOefk+6mH+Y9rB7lyJCt3z9E8CQMelwRotLMmrK46YoO/RpxK5LHfFntczeh
         +VJdrK2HQmQPb5YG/4/VmShoU/bZ8C55mWHBXqT3UpT2j2WEynewAFgOc5AowOqrYVqs
         Rl50bDD4Gwq73NEhwDeRBgaWVhr1wuzusJs1HYxm5nEdSK9GCNQnHaw3QmWRTFY5ptvZ
         lt5/4j5iCJxH78RV/46nvoRcMtF/pN+FaEcjfm0LYSqoeKS6fpu9cnYKAj/SvI9dbO+1
         UMRIyRH6XPkaY4GPLN5hc9jB5QwZ9lH5GT9qIwaPEZ83ndFAhvoPlpvhM88tzC10PcNN
         uLqA==
X-Gm-Message-State: APuU4Z83DBGQl2AXRSYbqAbpYeyjtROXlbURMSPROUdPF9FC1Zh928TQ
	42sHOwvezbtgf3/ZzkN/7oGzXa5nM8eKbWm8YQ5mNq3+E4cLKfYD98pyCZ9xIJvkEaHyCwM8Uhb
	qMroFxg==
X-Gm-Gg: AYBFou1NPWLmaqoJpj7Z5EIK5ZVu76joZrTu4F1L36sWCoe1+p8wMaTjfREObURwRRi
	PgHM7QHkZvrUkF1vXxj2nFwXF703qH83i/yiVCFjeMz4BQE2wF6pCnxmR+EP75E5W87cLrpNQGH
	IQdRaGK85Fv4ev4PwRiThdGx4ikHxeUbpbNDmiOKygOxexBMZnw1c6bnTPsjnjPVtHnFF7BDmco
	G5Xcj4FAOpfK6849a1oc5g/HQdhM+ipOocd6E+939FtMmBoz7zR+TrMsCLXp7Yf0GOPwdNjo0Nn
	dDyiPusykTOL8wJ4pOG7xdf2tbpFlBOomfI71dbnVq7vCxYtvXmEyT920yj1FdJaYW/QWzn6X2Y
	RAZxw8Q29zGGe/8YqMn7wr8d1N+Pg2vQTYct4PB1i9Jcy9CPu4sIMHGGDVE62PzKuKUKDw0KOjb
	AE4OrMcObJVt7/CpkjqgKhmc/eZ8RxGQoqr1djOGtUh7P92yztWsksN68FlIzH98C4KUyUCip/p
	kfsWt8XsxQbHQKyAEwz8DMOlGGblr4YpuA/9lZzwOwDVkYw7P2KY3xGYTOALiiIymrKp7sJnY/Y
	Wl6I9THIMA+rpXtPfvwPOKBMVrGo2cryda1iTVedmvU9l9dZTJESXYeH7Gea2xNRHlk7Y7y+ELq
	OItqLy3QpoLHBpIq5v9fw7+0EcvgXy3iQU2OP5w==
X-Received: by 2002:a05:600c:4f86:b0:4a7:669c:c988 with SMTP id 5b1f17b1804b1-4ac18b7df2cmr444154455e9.23.1793885604650;
        Thu, 05 Nov 2026 05:33:24 -0800 (PST)
Message-ID: <2ad8d4fb-5256-4371-a21f-6b9886f1b3ae@suse.com>
Date: Thu, 5 Nov 2026 14:33:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 03/14] x86/setup: special treatment of initrd for PVH Dom0
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793885605-18ECE9EA-58F97632/10/78276251493
X-purgate-type: spam
X-purgate-size: 7762

Dealing with large initrd-s is problematic in two ways: We needlessly
copy around a large chunk of data, and our calculation of how much
memory to give Dom0 assumes the space taken by the initrd is actually
available at the time of populating Dom0's P2M.

As a first step, make effort during early boot to try to place the initrd
in a chunk of memory that's a multiple of 1Gb (or, if not available / not
possibly going to fit, in a chunk a multiple of 2Mb in size). This may
(but generally won't) result in more copying, which we simply need to
accept. Record (and use) the extra space allocated in (as) headroom, which
then needs accouting for in pvh_load_kernel().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Not being able to check bm->kind is of course not very nice. The field is
only set quite a bit later, and that setting can - afaict - not be moved
ahead of the call to xsm_multiboot_init().

The bumping of mask to L3's in __start_xen() may transiently breaks
booting of Dom0 with overly much memory assigned to it (with the improved
heuristic it doesn't on my test systems anymore, though). That'll be
resolved when the headroom space is properly dealt with (consumed into
Dom0, or freed). Therefore this patch and everything up to the one adding
the consuming code want committing together, or addition of that
conditional wants delaying until that later change.

Simply using nr_ram_pages()' return value is of course a pretty raw
estimate. We could e.g. also subtract Xen's image size and, perhaps more
relevant, an estimate of frame_table[].
---
v2: Re-instate lost loop continuation condition. Improve and explain
    heuristic for whether to look for a multi-Gb block of memory.

--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -445,6 +445,20 @@ unsigned long __init dom0_compute_nr_pag
     return nr_pages;
 }
 
+/*
+ * A simplistic sibling of dom0_compute_nr_pages(), for obtaining a very early
+ * estimate.
+ */
+unsigned long __init get_dom0_size(unsigned long avail)
+{
+    if ( CONFIG_DOM0_MEM[0] && !dom0_mem_set )
+        parse_dom0_mem(CONFIG_DOM0_MEM);
+
+    return get_memsize(memsize_gt_zero(&dom0_size) ? &dom0_size
+                                                   : &dom0_max_size,
+                       avail);
+}
+
 static void __init process_dom0_ioports_disable(struct domain *dom0)
 {
     unsigned long io_from, io_to;
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -653,7 +653,8 @@ static int __init pvh_load_kernel(
     void *image_base = bootstrap_map_bm(image);
     void *image_start = image_base + image->arch.headroom;
     unsigned long image_len = image->size;
-    unsigned long initrd_len = initrd ? initrd->size : 0;
+    unsigned long initrd_len =
+        initrd ? initrd->size - initrd->arch.headroom : 0;
     size_t cmdline_len = bd->cmdline ? strlen(bd->cmdline) + 1 : 0;
     const char *initrd_cmdline = NULL;
     struct elf_binary elf;
@@ -751,7 +752,8 @@ static int __init pvh_load_kernel(
 
     if ( initrd != NULL )
     {
-        rc = hvm_copy_to_guest_phys(last_addr, __va(initrd->start),
+        rc = hvm_copy_to_guest_phys(last_addr,
+                                    __va(initrd->start + initrd->arch.headroom),
                                     initrd_len, v);
         if ( rc )
         {
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -68,4 +68,6 @@ extern bool opt_dom0_verbose;
 extern bool opt_dom0_cpuid_faulting;
 extern bool opt_dom0_msr_relaxed;
 
+unsigned long get_dom0_size(unsigned long avail);
+
 #endif
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1023,6 +1023,26 @@ static unsigned long __init nr_ram_pages
     return nr_pages;
 }
 
+static __init bool fits_in_low_ram(unsigned long size, unsigned long align)
+{
+    size = ROUNDUP(size, align);
+
+    for ( unsigned int i = 0; i < e820.nr_map; ++i )
+    {
+        unsigned long start = ROUNDUP(e820.map[i].addr, align);
+        unsigned long end = ROUNDDOWN(e820.map[i].addr + e820.map[i].size,
+                                      align);
+
+        if ( e820.map[i].type != E820_RAM || start >= GB(4) )
+            continue;
+
+        if ( end > start && end - start >= size )
+            return true;
+    }
+
+    return false;
+}
+
 /*
  * Calculate the maximum possible size of the dom0 cmdline.  Pieces of the
  * dom0 cmdline optionally come from the bootloader directly, from Xen's
@@ -1613,6 +1633,60 @@ void asmlinkage __init noreturn __start_
             struct boot_module *bm = &bi->mods[j];
             unsigned long size = PAGE_ALIGN(bm->arch.headroom + bm->size);
 
+            /*
+             * For PVH Dom0 try to place the initrd in a full multi-Gb (or
+             * multi-2Mb) chunk, such that assigning the pages directly can
+             * be done while still using superpage mappings.
+             */
+            if ( opt_dom0_pvh && j == 1 /* bm->kind == BOOTMOD_RAMDISK */ )
+            {
+                /*
+                 * As we may come here more than once, and as bm->size includes
+                 * headroom after relocation, unlike above we need to subtract
+                 * headroom here.  (The only module with incoming non-zero
+                 * headroom is the kernel.)
+                 */
+                size = PAGE_ALIGN(bm->size - bm->arch.headroom);
+
+                /*
+                 * Heuristic, in an attempt to predict what will be decided
+                 * when actually loading (mapping) the initrd: There's no point
+                 * trying 1Gb mappings when Dom0 has less than 2Gb.  There's
+                 * also no point trying 1Gb mappings if the initrd fits in low
+                 * memory, but there's no contiguous 1G-aligned range available
+                 * there.
+                 */
+                if ( get_dom0_size(nr_ram_pages()) >= PFN_DOWN(GB(2)) &&
+                     (fits_in_low_ram(size, 1UL << L3_PAGETABLE_SHIFT) ||
+                      !fits_in_low_ram(size, PAGE_SIZE)) )
+                    mask = (1UL << L3_PAGETABLE_SHIFT) - 1;
+
+                for ( ; mask > PAGE_SIZE; mask >>= PAGETABLE_ORDER )
+                {
+                    if ( !(bm->start & mask) && bm->arch.relocated )
+                        break;
+
+                    end = e;
+                    do {
+                        end = consider_modules((s + mask) & ~mask, end & ~mask,
+                                               (size + mask) & ~mask, bi->mods,
+                                               bi->nr_modules + relocated, j);
+                    } while ( (end & mask) && end > s );
+
+                    if ( end <= s )
+                        continue;
+
+                    if ( highmem_start && end > highmem_start )
+                        break;
+
+                    size = (size + mask) & ~mask;
+                    bm->start += bm->arch.headroom;
+                    bm->size  -= bm->arch.headroom;
+                    bm->arch.headroom = size - PAGE_ALIGN(bm->size);
+                    goto move_module;
+                }
+            }
+
             if ( bm->arch.relocated )
                 continue;
 
@@ -1625,6 +1699,7 @@ void asmlinkage __init noreturn __start_
 
             if ( s < end && (bm->arch.headroom || (end - size) > bm->start) )
             {
+            move_module:
                 move_memory(end - size + bm->arch.headroom, bm->start, bm->size);
                 bm->start = (end - size);
                 bm->size += bm->arch.headroom;



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:33:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:33:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474667.1681658 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxbG-0005mc-MY; Thu, 05 Nov 2026 13:33:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474667.1681658; Thu, 05 Nov 2026 13:33:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxbG-0005mR-Jc; Thu, 05 Nov 2026 13:33:54 +0000
Received: by outflank-mailman (input) for mailman id 1474667;
 Thu, 05 Nov 2026 13:33:54 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxbG-0005l0-6q
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:33:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxbF-00E4OU-Ji
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:33:53 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85ba-e002-0a2a0a5209dd-0a2a4506c6a8-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:53 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85c1-195a-0a2a45060019-d1558032cd70-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:33:53 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a20bdaf39cso19875185e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:33:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b41297c0d3sm111256165e9.1.2026.11.05.05.33.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:33:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885633; x=1794490433; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=T7Nq9uZ3jEvxZNv9g78qXVfRY8rIVXwVbnY0N5ssSvg=;
        b=KjopbVO2dmmgoq+rMUUiLOS3+WYm/BeHzNZw2fzNNbI7W/eIWi0lPJtC2Cwt/Xi+NH
         A6lGtqXUPYIdDGSF3Wm0xeYxp/V5Dme91dFmHeB/J05MfFf5T5/U5X5DeKesvPIg0N4S
         hRIZPLN8cAh5OfxV+CwNZhnO6nXowjHtFrPLBamIHbcXLLjpHpXtVNxK6t6yyfboc5Iq
         cdrthcBLy9R0Ya2ZYbhn0dJoIOEVCk7FqjZ0khX6CovNV6ixT7cQJMGdYblPoqpsN7xg
         aE2sfLCsxbSvGJAfgTY2WYKK71T1gkSg21udMQMPOOyPkbFGfXHMECrx7uuJGz7Cjryo
         NhNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885633; x=1794490433;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=T7Nq9uZ3jEvxZNv9g78qXVfRY8rIVXwVbnY0N5ssSvg=;
        b=VuAIs+tUDFwgy54YJpC6+9ZQJjSqHvi4m+61acNCRkjtqPNNznoMKR+RCmZdxT/Zls
         EKLEezEsNtNkbQObGeIC52YEQahrniDTXWoaEZ/H7QXk5eqTpkWd4Y85wRHLW/4/zDSy
         qkH2RzsY4NKIhhEuooWmWunVbbrWS2IEJlfq2zbPV5XVbxf8FK3x6ht2FpvvyYNeuP5p
         p8LL2qnG/UPFe3Oj8q8IlbacaPwBK1pcUgoUWb5hBEyC9i74jZQSxmIMVwkDfGhLA9aZ
         4wAOwvcQ6WpZ2Jli1V7ynwZdJ7BAiDunRxI/HtXNwOWCreitEH8xu3JQEvJeYPOS0GtD
         agqg==
X-Gm-Message-State: APuU4Z+ifjTNyw0OOJWnc0s572nljVGSfQAlt2pG1ftSRJnniBhJXJ8l
	y+bOMZJ2DEJX0qog57HV/Iu/txM2q7l6tVtNK2oi4jj+3shBY8QIUbyqptfne7l61q7t4GgO1yK
	obRzZ5g==
X-Gm-Gg: AYBFou3Io5Q4XSo3lkqLVo+61HeHrk2+5CWYvzmEfbpnBUe7ongh4CMz/DP43CWVNfZ
	+I+Zi2jpuuIQQiNLb7JjIy446vUEetz/TADlK0vJr6PB6m0l1e62Ob/5nk/329GmC46HLVf7OKN
	PgWzDo7WneRrmFF39YxXmbKuLo0bhcMplsK4a788v5504OdfAGT6sjaffPN1ETzHSPA2N0nLkzH
	45rE1ky0jPB1ewDRWbUvulyhijVohMs25SM4XCNmNCVky/rdFmZe9/vpSDf/csGATR6A3/oanKr
	Db3QkdOswFL97UJcR/hlzBhDrwnewyyDR5NX+uZdMoD/LAAp93E5SNxXayW6GxV6A6KUZzCb9YH
	AkqaKdD6kc/kD2vIJIoJyiEP8rGV/Ik1As8v2qJRbkDChPuMpA5iX7lD3/+Jpo2sw7fgEU8B1fG
	sjsnWYme1IGSwiQvVxjaJBNw3AjR3DDMD+e7AV30EpIiVBdutLXPf2yx7ZgqWIxnC91KiqqSBrx
	RpDkkDVzfmHt2u1nZ7Rs0jhJUbjDoOs7BCCQZmbgogG9dvXfEHW2uT59gdOGg4WLsZXOPcnD23y
	EVZpGOi4xkmxG3vnIwSK8zBvKv/rhdv/Eaci+MaSCKhhCxIFqvyqrOIrDLtGN1JeX0ME6e1bYL+
	qDkd9iEZQYV4lNM/u
X-Received: by 2002:a05:600c:a00a:b0:4a2:190f:cf6a with SMTP id 5b1f17b1804b1-4ac19802310mr424240255e9.35.1793885632776;
        Thu, 05 Nov 2026 05:33:52 -0800 (PST)
Message-ID: <839f9e5b-43ba-4cf2-9176-ce5ea51f9149@suse.com>
Date: Thu, 5 Nov 2026 14:33:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 04/14] x86/PVH: split pvh_load_kernel()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793885633-F74C977B-2C878843/10/78276251493
X-purgate-type: spam
X-purgate-size: 6931

All E820 manipulations want to happen before the initrd is placed. As a
first step, split placing the kernel from actually loading it. Then
placement of other data (ACPI, VMX) can be inserted between kernel
placement and P2M population (followed by the loading of the kernel).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Teddy Astie <teddy.astie@vates.tech>
---
If need be, moving the "elf" local variable to dom0_construct_pvh() could
of course further be split off. Just that this by itself doesn't make much
sense.
---
v2: Also log domain in new printk().

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -644,26 +644,17 @@ static bool __init check_and_adjust_load
     return true;
 }
 
-static int __init pvh_load_kernel(
-    const struct boot_domain *bd, paddr_t *entry, paddr_t *start_info_addr)
+static int __init pvh_place_kernel(
+    const struct boot_domain *bd,
+    struct elf_binary *elf,
+    paddr_t *entry)
 {
     struct domain *d = bd->d;
     struct boot_module *image = bd->kernel;
-    struct boot_module *initrd = bd->initrd;
     void *image_base = bootstrap_map_bm(image);
     void *image_start = image_base + image->arch.headroom;
     unsigned long image_len = image->size;
-    unsigned long initrd_len =
-        initrd ? initrd->size - initrd->arch.headroom : 0;
-    size_t cmdline_len = bd->cmdline ? strlen(bd->cmdline) + 1 : 0;
-    const char *initrd_cmdline = NULL;
-    struct elf_binary elf;
     struct elf_dom_parms parms;
-    size_t extra_space;
-    paddr_t last_addr;
-    struct hvm_start_info start_info = { 0 };
-    struct hvm_modlist_entry mod = { 0 };
-    struct vcpu *v = d->vcpu[0];
     int rc;
 
     if ( (rc = bzimage_parse(image_base, &image_start, &image_len)) != 0 )
@@ -672,19 +663,19 @@ static int __init pvh_load_kernel(
         return rc;
     }
 
-    if ( (rc = elf_init(&elf, image_start, image_len)) != 0 )
+    if ( (rc = elf_init(elf, image_start, image_len)) != 0 )
     {
         printk("Unable to init ELF\n");
         return rc;
     }
     if ( opt_dom0_verbose )
-        elf_set_verbose(&elf);
-    elf_parse_binary(&elf);
-    if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
+        elf_set_verbose(elf);
+    elf_parse_binary(elf);
+    if ( (rc = elf_xen_parse(elf, &parms, true)) != 0 )
     {
         printk("Unable to parse kernel for ELFNOTES\n");
-        if ( elf_check_broken(&elf) )
-            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(&elf));
+        if ( elf_check_broken(elf) )
+            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(elf));
         return rc;
     }
 
@@ -697,20 +688,43 @@ static int __init pvh_load_kernel(
     if ( (rc = initdom_check_parms(d, &parms)) != 0 )
         return rc;
 
-    /* Copy the OS image and free temporary buffer. */
-    elf.dest_base = (void *)(parms.virt_kstart - parms.virt_base);
-    elf.dest_size = parms.virt_kend - parms.virt_kstart;
+    elf->dest_base = (void *)(parms.virt_kstart - parms.virt_base);
+    elf->dest_size = parms.virt_kend - parms.virt_kstart;
 
-    if ( !check_and_adjust_load_address(d, &elf, &parms) )
+    if ( !check_and_adjust_load_address(d, elf, &parms) )
         return -ENOSPC;
 
-    elf_set_vcpu(&elf, v);
-    rc = elf_load_binary(&elf);
+    *entry = parms.phys_entry;
+
+    return 0;
+}
+
+static int __init pvh_load_kernel(
+    const struct boot_domain *bd,
+    struct elf_binary *elf,
+    paddr_t *start_info_addr)
+{
+    struct domain *d = bd->d;
+    struct boot_module *initrd = bd->initrd;
+    unsigned long initrd_len =
+        initrd ? initrd->size - initrd->arch.headroom : 0;
+    size_t cmdline_len = bd->cmdline ? strlen(bd->cmdline) + 1 : 0;
+    const char *initrd_cmdline = NULL;
+    size_t extra_space;
+    paddr_t last_addr;
+    struct hvm_start_info start_info = { 0 };
+    struct hvm_modlist_entry mod = { 0 };
+    struct vcpu *v = d->vcpu[0];
+    int rc;
+
+    /* Copy the OS image and free temporary buffer. */
+    elf_set_vcpu(elf, v);
+    rc = elf_load_binary(elf);
     if ( rc < 0 )
     {
         printk("Failed to load kernel: %d\n", rc);
-        if ( elf_check_broken(&elf) )
-            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(&elf));
+        if ( elf_check_broken(elf) )
+            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(elf));
         return rc;
     }
 
@@ -724,7 +738,7 @@ static int __init pvh_load_kernel(
 
     if ( initrd )
     {
-        size_t initrd_space = elf_round_up(&elf, initrd_len);
+        size_t initrd_space = elf_round_up(elf, initrd_len);
 
         if ( initrd->arch.cmdline_pa )
         {
@@ -741,9 +755,9 @@ static int __init pvh_load_kernel(
             initrd = NULL;
     }
 
-    extra_space += elf_round_up(&elf, cmdline_len);
+    extra_space += elf_round_up(elf, cmdline_len);
 
-    last_addr = find_memory(d, &elf, extra_space);
+    last_addr = find_memory(d, elf, extra_space);
     if ( last_addr == INVALID_PADDR )
     {
         printk("Unable to find a memory region to load initrd and metadata\n");
@@ -763,7 +777,7 @@ static int __init pvh_load_kernel(
 
         mod.paddr = last_addr;
         mod.size = initrd_len;
-        last_addr += elf_round_up(&elf, initrd_len);
+        last_addr += elf_round_up(elf, initrd_len);
         if ( initrd_cmdline )
         {
             size_t len = strlen(initrd_cmdline) + 1;
@@ -796,7 +810,7 @@ static int __init pvh_load_kernel(
      * Round up to 32/64 bits (depending on the guest kernel bitness) so
      * the modlist/start_info is aligned.
      */
-    last_addr += elf_round_up(&elf, cmdline_len);
+    last_addr += elf_round_up(elf, cmdline_len);
 
     if ( initrd != NULL )
     {
@@ -820,7 +834,6 @@ static int __init pvh_load_kernel(
         return rc;
     }
 
-    *entry = parms.phys_entry;
     *start_info_addr = last_addr;
 
     return 0;
@@ -1338,6 +1351,7 @@ int __init dom0_construct_pvh(const stru
 {
     paddr_t entry, start_info;
     struct domain *d = bd->d;
+    struct elf_binary elf;
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
@@ -1375,6 +1389,13 @@ int __init dom0_construct_pvh(const stru
 
     iommu_hwdom_init(d);
 
+    rc = pvh_place_kernel(bd, &elf, &entry);
+    if ( rc )
+    {
+        printk("%pd: failed to place kernel\n", d);
+        return rc;
+    }
+
     rc = pvh_populate_p2m(d);
     if ( rc )
     {
@@ -1382,7 +1403,7 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
-    rc = pvh_load_kernel(bd, &entry, &start_info);
+    rc = pvh_load_kernel(bd, &elf, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:34:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474673.1681668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxbY-0006Cj-U8; Thu, 05 Nov 2026 13:34:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474673.1681668; Thu, 05 Nov 2026 13:34:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxbY-0006Cc-Qg; Thu, 05 Nov 2026 13:34:12 +0000
Received: by outflank-mailman (input) for mailman id 1474673;
 Thu, 05 Nov 2026 13:34:12 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxbY-0006B7-4x
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:34:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxbX-00E4XL-He
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:34:11 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85c8-e002-0a2a0a5209dd-0a2a450ac31c-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:34:11 +0100
Received: from [209.85.218.50] (helo=mail-ej1-f50.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85d3-f2d2-0a2a450a0019-d155da32d411-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:34:11 +0100
Received: by mail-ej1-f50.google.com with SMTP id
 a640c23a62f3a-c4322d310e7so31676366b.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:34:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e444950sm179757666b.40.2026.11.05.05.34.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:34:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885651; x=1794490451; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=XhVMm7OWGM53YPwY0RwS/WYkkxI/DMxC9jQTrfPSs7E=;
        b=XLHxxp6lGywZ/iIxyVAZz1qpI7EGK4unqTcEWb2c0ROFupX5o45ZcMqKQrqAvYSP6r
         ANuwqJT9h3wL/9S/94qKJrRW4t9opXkOExujmiljMWyscjvJnWwwNLot2P8PJse0iloR
         XMGjYeoTlPq7bMxVNAWiCVoFJt3hQqsFQL0av/ENcFZAeE0dtulKHyrSGm28EocxZvW6
         zsbsJT5yEQVDMwyEtZq9Q/eYt/0muLgUmFlsotmbEjRtg7MI3RKS7TpNPTJTioiyHTsI
         OrB/3vxMLoknpl2rmEIs9/SbaTBJ2n5pUFsRQZ0k+Gq5MVTZdyA86VmAHK/nTiHUvw8R
         rxtA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885651; x=1794490451;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=XhVMm7OWGM53YPwY0RwS/WYkkxI/DMxC9jQTrfPSs7E=;
        b=DBzyWtkaauCGefvMVyl+tUYs9namnkKSWOknSdHSiFjpnI1Rh4kGslP81EDHEQ+J5s
         zSmYGRx+NSBf2VX75jjb/u5Bm06jeLiQePAqqIGXW2D0MBoT8Kt34sWSNYFSH7S4FnDt
         3YanjVT9HyQgDhxhpmr0R0PFidlxq5EmaiHg7VbmVZwoiWeOXCehFaOvklorNZ/t6z7s
         sX6dE7ZEsDBQrj6tPzYWnBtBwnkadR6XuQA2e9rjC+HftQJ0Xv2dFBk65Sy/uybIgGep
         SGf+EsBCGY+RyhzicO6vkqififvNDnA+zMV61lA9x3C9aetw4nG+UF97VZDhCzXLtXFd
         IenA==
X-Gm-Message-State: APuU4Z+fFKkcqYNekiXxK2l57RLzNQY/256JXJr0iRHYJvEzY6dzepS2
	Lmox0i2xrxLgQqZKO6po+18RFaFY8Qk+V6mCg1n5PTBTp7uKeHDIOtsmclV7CczPSf1P75bNkv3
	+hFAK6A==
X-Gm-Gg: AYBFou0cAB+QIURXtT8aAh9nSr6O/vUjP6EXZ6sTyvZ56kX1RwxVWhg08WOd+dEkXWr
	Yu0sObMA7qJdMg0+q4owyDHm6FfhrhSAmY0+z5wjqA1rEhRT37F9cUCKyrItrRCX4ItqGHg7pzP
	jNtYbMEcF93EqQ9vC1i088YBMGveNMxQOIMi3YlCsdfbeqkgxS8Mx42xSwgStmqCuAGcGGC74WS
	kLWYedwYx/OiJrTTIKUVgHmxa/+vaoxazCPY584lQOBfg5oWSnfPqD/C4uOyTGTQA/GuYUOKmrG
	bDumNwLJwo9vPMYhsLcYL520RuLjdfOcUgOgNGbFxi3Upv/MsNnKWnBuoMESUutWHZuougpGBW6
	eQfXNZoPmXJWeVX9i7epQ8rzKRt0ZIQWESRmgWaTCDjeN4AFDK5Qiqu/GKZIxplgxlfl/1iGTvQ
	9l2z7nY6XKqgjsB65MGPZTxa83alFB4YLKsFjRRDDYbs4ZNcQkfqqHbiG7Kkhb42mjhVwjC5/dM
	khKO8slEn3aMWxw6zKXoiv0Ht7SRSMhJkQFZq9PI0ynSrxARTxuQgApZDoGHXVF3+KgqUC9Zt4r
	Ftln0ONVLNfniYazaPlDNNks2QGoGtS6ELjuVeMJam4k910yl2Ilq6c4DQGZAxjVF2QY5XnsVBU
	V05UIXWp5DIMSWgQz
X-Received: by 2002:a17:907:9612:b0:c3f:8c92:3b51 with SMTP id a640c23a62f3a-c4ca793c5f9mr1753027866b.4.1793885650906;
        Thu, 05 Nov 2026 05:34:10 -0800 (PST)
Message-ID: <15a24084-6fd8-4e87-96da-d7059fe43946@suse.com>
Date: Thu, 5 Nov 2026 14:34:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 05/14] x86/PVH: keep a copy of Dom0's initial E820 map
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-4011c0/1793885651-52CDBCFC-88047AFE/10/78276251493
X-purgate-type: spam
X-purgate-size: 3767

pvh_populate_p2m() needs to populate RAM according to the initial map
established, prior to any stealing by pvh_steal_ram(). Subsequently the
invocations of those functions will (need to) move ahead of
pvh_populate_p2m() (while accessing those regions needs to stay after
that), so what to act on is no longer Dom0's memory map at the time of
invocation.

Don't bother freeing the allocation on intermediate error paths: We're
going to panic() anyway.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Clarify plans in description. Also log domain in new printk().

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -13,6 +13,7 @@
 #include <xen/multiboot.h>
 #include <xen/pci.h>
 #include <xen/softirq.h>
+#include <xen/xvmalloc.h>
 
 #include <acpi/actables.h>
 
@@ -413,7 +414,10 @@ static void __init pvh_init_p2m(struct d
     } while ( preempted );
 }
 
-static int __init pvh_populate_p2m(struct domain *d)
+static int __init pvh_populate_p2m(
+    struct domain *d,
+    const struct e820entry *e820,
+    unsigned int nr_e820)
 {
     struct vcpu *v = d->vcpu[0];
     unsigned int i;
@@ -421,15 +425,15 @@ static int __init pvh_populate_p2m(struc
 #define MB1_PAGES PFN_DOWN(MB(1))
 
     /* Populate memory map. */
-    for ( i = 0; i < d->arch.nr_e820; i++ )
+    for ( i = 0; i < nr_e820; i++ )
     {
         unsigned long addr, size;
 
-        if ( d->arch.e820[i].type != E820_RAM )
+        if ( e820[i].type != E820_RAM )
             continue;
 
-        addr = PFN_DOWN(d->arch.e820[i].addr);
-        size = PFN_DOWN(d->arch.e820[i].size);
+        addr = PFN_DOWN(e820[i].addr);
+        size = PFN_DOWN(e820[i].size);
 
         rc = pvh_populate_memory_range(d, addr, size);
         if ( rc )
@@ -438,11 +442,11 @@ static int __init pvh_populate_p2m(struc
         if ( addr < MB1_PAGES )
         {
             uint64_t end = min_t(uint64_t, MB(1),
-                                 d->arch.e820[i].addr + d->arch.e820[i].size);
+                                 e820[i].addr + e820[i].size);
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
                                         mfn_to_virt(addr),
-                                        end - d->arch.e820[i].addr,
+                                        end - e820[i].addr,
                                         v);
 
             if ( res != HVMTRANS_okay )
@@ -1352,6 +1356,8 @@ int __init dom0_construct_pvh(const stru
     paddr_t entry, start_info;
     struct domain *d = bd->d;
     struct elf_binary elf;
+    struct e820entry *orig_e820;
+    unsigned int nr_orig_e820;
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
@@ -1389,6 +1395,16 @@ int __init dom0_construct_pvh(const stru
 
     iommu_hwdom_init(d);
 
+    nr_orig_e820 = d->arch.nr_e820;
+    orig_e820 = xvmalloc_array(struct e820entry, nr_orig_e820);
+    if ( !orig_e820 )
+    {
+        printk("%pd: no memory for copy of E820 map (%u entries)\n",
+               d, nr_orig_e820);
+        return -ENOMEM;
+    }
+    memcpy(orig_e820, d->arch.e820, nr_orig_e820 * sizeof(*orig_e820));
+
     rc = pvh_place_kernel(bd, &elf, &entry);
     if ( rc )
     {
@@ -1396,13 +1412,15 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
-    rc = pvh_populate_p2m(d);
+    rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820);
     if ( rc )
     {
         printk("Failed to setup Dom0 physical memory map\n");
         return rc;
     }
 
+    xvfree(orig_e820);
+
     rc = pvh_load_kernel(bd, &elf, &start_info);
     if ( rc )
     {



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:34:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:34:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474686.1681677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxc5-0006vS-8w; Thu, 05 Nov 2026 13:34:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474686.1681677; Thu, 05 Nov 2026 13:34:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxc5-0006vL-6I; Thu, 05 Nov 2026 13:34:45 +0000
Received: by outflank-mailman (input) for mailman id 1474686;
 Thu, 05 Nov 2026 13:34:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxc3-0006pe-De
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:34:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxc2-009qG4-PS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:34:42 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85ef-2eae-0a2a0a5409dd-0a2a4503d530-8
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:34:42 +0100
Received: from [209.85.218.46] (helo=mail-ej1-f46.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85f2-fae8-0a2a45030019-d155da2ed5b4-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:34:42 +0100
Received: by mail-ej1-f46.google.com with SMTP id
 a640c23a62f3a-c49b431f022so31451466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:34:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e140fcasm174955266b.1.2026.11.05.05.34.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:34:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885682; x=1794490482; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=nRoV9beagea783Ja6NbKXTJm/ZIqSGgGKZTTcQHFyvI=;
        b=SWYW/4wIIGIvef1pF01qWIK117vn/KZEuR+t531TsxVdCSgWjD+HrVkoZIOzu6J3mG
         Od9uBA2yF76zK17Q8UQ+U0qzSCb7W58XDxWEMFeR44QsYfrPPvsA5n97omOJZmeyD3qw
         oVqKDLI9rm3IgR7X7hbC2ZuJF0f+ArDkT06PtgzbcyXYITI7B7b9jsnOspwyVj0HePyB
         50Qonj3+4ghNO80iFREnKCxXNOHHLYKCYMkSrfi1XihifxhUyHg70eVpwPWXQgk/W3Wc
         dbN4WRWTKUi0lPeeB8ZxdiNtuYgRxNq20qZ91c4wzEQ93pQT6GYXLWFymSPQ3Yf60u4r
         fNYw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885682; x=1794490482;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=nRoV9beagea783Ja6NbKXTJm/ZIqSGgGKZTTcQHFyvI=;
        b=i2OkbiNsuuh5LmNQKX8Cn3rAdpqlt755zQmTmFkwzvnLFwVyVz2L0PQcZS2XTYg7XC
         brGJWmaa6wZOK2c9BxxhpIfR6ce4OsqFBl9f7/z3I9I4Q2yafWV4W2sbm1YtTR7jtbjE
         zEt1Jg/ul0IgSL6ale8cclZfDFvYzT96fCMTSdgrEUcv1Fx5/gu98E05QAdsFnQ5rdh1
         UaJohcSHgaRvpwStKgaZY5ayG1LK5vN1sPtEljsw2cBkNcNRukabB2fM0FnfK7599Y5x
         +kIJE/cLkcERSHLsjctn/9jFL7fLYQUmH85HlCZR6PgpntnYgjklGkzh0esrFge0lPTT
         IYzA==
X-Gm-Message-State: APuU4Z8mnK8r7I83zFdWK0ErELVNUEP6yXuEkBBFwzlpU3lo/5azR1lk
	gpK4IW7F8FhFqMTz9Kx9lwuRtpY9e6j3pmXQbNUrpZRHh3Y2yjiDmSgNAIGjSenwrteZ9rix4++
	nTt90lQ==
X-Gm-Gg: AYBFou3mLfDKvkhwAyK7pGScPxW6/DRexvAeMSvnoz/5nZ0prefSmrFWMuVq38DOmin
	AOdzkcD1xC0FiLWfD+u2qKm4qsLDLrmKYLE6/wNVajOW92/hJJ8N2CW40ce4pYviQ8FGY0AcaSD
	e4BtpjOShnLssw7J/xoxQyRKd5BCc7ToTafu3fdQ4tXJ1gyZ9IF28L549L4i7yA08V0ggUpZ+Fo
	HsjRr3CMNime1yjoxSM3A0VNhZl11hCjJjHBIR7mJpe6Z1bdy4+o3wFfgwpEPWmd5jKXzfVT5wb
	Glkh7v5NEOWut//lwNchRh32dvM6361Bl4wiaBI2S5iz+GPY6Ri2N5vkWzAXrEFKCBSSiqDMBJZ
	9D50NvRJwHR/J6eejyOfdYfWHpNgYxSh+TUzie6ZIgvXdYmgkncEml9B3h0wTiMrsu134vEVhN/
	q964+vnFjhjhMM9Hb5v82BXEX+GABERARzcPK9qeK8Z4eUdJgbQb9YgtuRTf0vdV2zXF7tQ3Y10
	m9B6rSSxqIyKG0I+RLmvMNrRmEsmWtqmxQqhynzJzzshtzhiYMFUJV+W5+qNnoqYPJM7bhgwTZV
	ZzQZlQwUJKInpW/sMCY4Ksrhu5ZtPSEpa/jWdCHP0zHt1dM/7jBUjpGhYTObRbnCNLN+B0kgRau
	9dw==
X-Received: by 2002:a17:907:6d06:b0:c34:c5e8:1dc5 with SMTP id a640c23a62f3a-c4ca7a7255cmr1667128066b.20.1793885682239;
        Thu, 05 Nov 2026 05:34:42 -0800 (PST)
Message-ID: <b314f59f-de9c-4537-93a5-c60603e62a58@suse.com>
Date: Thu, 5 Nov 2026 14:34:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 06/14] x86/PVH: lift E820 alignment requirement
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793885682-6D8D54E9-A424904B/10/78276251493
X-purgate-type: spam
X-purgate-size: 2102

Before reordering things (to move in particular pvh_steal_ram()
invocations ahead of the pvh_populate_p2m() one) drop an undue (and as it
turns out unnecessary) assumption: find_memory() doesn't really depend on
E820 regions to end on page boundaries. (Note that the check of "start"
was pointless, as just before "start" was aligned to a page boundary.)

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Really the assumption towards the start of regions doesn't look to be
relevant either, yet I thought I'd limit the change to the minimum needed.
---
v2: Drop leftover (pointless) assertion altogether. Further shrink
    comment.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -365,6 +365,9 @@ static __init void pvh_setup_e820(struct
          * that's the minimum granularity of the 2nd stage translation. Since
          * the p2m code uses PAGE_ORDER_4K internally, also use it here in
          * order to prevent this code from getting out of sync.
+         *
+         * Note that this is only for pvh_populate_p2m().  Subsequent uses of
+         * pvh_steal_ram() will break the length part.
          */
         start = ROUNDUP(entry->addr, PAGE_SIZE << PAGE_ORDER_4K);
         end = (entry->addr + entry->size) &
@@ -505,10 +508,7 @@ static paddr_t __init find_memory(
                                  PAGE_SIZE);
     unsigned int i;
 
-    /*
-     * The memory map is sorted and all RAM regions starts and sizes are
-     * aligned to page boundaries.
-     */
+    /* The memory map is sorted. */
     for ( i = 0; i < d->arch.nr_e820; i++ )
     {
         paddr_t start, end = d->arch.e820[i].addr + d->arch.e820[i].size;
@@ -519,8 +519,6 @@ static paddr_t __init find_memory(
 
         start = MAX(ROUNDUP(d->arch.e820[i].addr, PAGE_SIZE), MB(1));
 
-        ASSERT(IS_ALIGNED(start, PAGE_SIZE) && IS_ALIGNED(end, PAGE_SIZE));
-
         /*
          * NB: Even better would be to use rangesets to determine a suitable
          * range, in particular in case a kernel requests multiple heavily



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:35:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:35:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474693.1681687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxcR-0007NN-IL; Thu, 05 Nov 2026 13:35:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474693.1681687; Thu, 05 Nov 2026 13:35:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxcR-0007NG-DJ; Thu, 05 Nov 2026 13:35:07 +0000
Received: by outflank-mailman (input) for mailman id 1474693;
 Thu, 05 Nov 2026 13:35:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxcP-0007Mt-IV
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:35:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxcO-009qSu-RY
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:35:04 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec85ef-2eae-0a2a0a5409dd-0a2a4503d530-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:04 +0100
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8608-fae8-0a2a45030019-d155802ab8d2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:04 +0100
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4a5177d78c7so17301245e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:35:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56ba6bc36sm73994885e9.0.2026.11.05.05.35.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:35:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885704; x=1794490504; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=XpCmbNgO/MZ7F5Rzx8w1sv0eb+AM+ypq+lRrGobD9wM=;
        b=f5h2bqE2GFGqvN18qz0RCZRFN2aE8A9icyUOEGCzKPba0ikEBu5vDJtsJRnelJkA1Y
         001SnKFpUpFCnA87e2eQsIguOE77OTHLSCUYesaQFTQcTH+sudrqrDbXNYh7kPYPIvDe
         Jmyp+D4tuJ5AJi8QJHbu05ClnBnonb52wnfaZnHrrJ2oKiTpeCDLmW74Ory/5bysCBs1
         BMhUhB9hGDTioI5IXCGonySmwR0qy7aUVQe/0RMus+xP5sZ4050WOH1C0KBD79U3n/Am
         pAA1GtCPtIjP77O39tyQXZwP0zb9975I24JABfse9lF3ostA8MgnzzJ7hfw7m3iSgNLi
         rVSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885704; x=1794490504;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=XpCmbNgO/MZ7F5Rzx8w1sv0eb+AM+ypq+lRrGobD9wM=;
        b=HUm49OXwgXximWl+fcuOi6IJZRmTwKvGlWOVyP8gEHUKo7o2Ec0BM5GEas9Wc8BHoo
         BcFglaJfpxgUfOmgPrrQRkH018ZhnqdVxYgGFJwTh6y/DcfRnL3qAZdpxxgVS98PGtPa
         dKeM02ncG3INPt2WbveSBTC+1YxgqP/XtYNMFhHaoM3HQxrLpkz3d0oSbzvjS6w05C6h
         y3+6CcwS1EalZxPfkP70ApMlAQjJh9kZycI5jjn2F5oIobaLY4taoOS4XnYwHfvyzIUT
         ejamEW0ZMoNmArdg3xLBnRk1xPgdv1IeM4vyHcK1h5/e16sZsl/QVORWyhFDNWPiiYNC
         TOXA==
X-Gm-Message-State: APuU4Z9K5YNYsOsFgFmBY9NPuk3bQhkQBAd9MvU/VskS/zIIm+ZG3Pm+
	k8CJ8P/UZeeTlNpZOumTya+J5ueci48hRfo+LlGbT4nNpYf42b5WWdLJDgH47wQ94k46+Fo3te/
	4WNSajQ==
X-Gm-Gg: AYBFou0QHlRgA3xlSJ/KAVmNg53/cfeZ4Hq99/pwXuQv6R+dV6Q/JXw36Jze+/l3UVa
	ReGsbVnqPFZGz6CrWCwYaa2V/119DLskkCssSEkMcxSrrro/cBVO9QjsWmZY7Eld6HeIHD4xL6d
	PCQ5e2j+02ihPKH4onrn7QQXOIVEW/s83ehj8WC6CCakpmv5sDRBk23pbV32ZqJVlwRsmu5jFm1
	7ZJlEjHrccrFkmWiCXrtR5v5AFUITTRRYNloYUQv2QraD8uVluwdYFxDz97hofnaw8fK7E8SqxR
	cIIz+4yLRNSQ2AxIXVVqsXhqSnb2EKkzCTjYfXYBZWWCh4JYGx8ZogtQRSzDLDmdWyqKS1t1p39
	Lv+PcI+IXdAbF8up25TMAQJmZUVS/s2yB4V2OtHgNf9PByLMdXwrCbh5LYNkREYlGYQnohHP78l
	N77gA4XLXJ7DHOmkw7A8feCMqPkj2V/C9xtix1BVT9zpsGiF1tZgI5AdFfRfVCvXxN6qGIexNjh
	MIxxdI3EnhtkC7umXllO/ZPU7AgMX1qpsdwcfjxR5qyLA2e5LSE0tIdqWeAdGYDiVOQHOyS/GPq
	EImzKAYhgtmUhkVhARTwVQxPGmbj4v3y04khNwlyRCH5bN/au9EbOawBfxgbQQ0V/6LkOcIqPHk
	nmcQhoJQpWLQsWSzd
X-Received: by 2002:a05:600c:468c:b0:4a3:59c9:a750 with SMTP id 5b1f17b1804b1-4ac17d168bcmr429458455e9.9.1793885704152;
        Thu, 05 Nov 2026 05:35:04 -0800 (PST)
Message-ID: <ed85cd48-53de-470e-9a0f-c71d564429e0@suse.com>
Date: Thu, 5 Nov 2026 14:35:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 07/14] x86/PVH: split pvh_setup_acpi()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793885704-768FA4E9-657B38E2/10/78276251493
X-purgate-type: spam
X-purgate-size: 10309

All E820 manipulations want to happen before the initrd is placed, or else
pvh_steal_ram() may steal from the tail part of it. As a second step,
split placing ACPI data from actually populating it. To reuse size
calculations and limit churn, convert pvh_setup_acpi_{madt,xsdt}() to
two-pass functions: The 1st pass merely reserves space, while the 2nd pass
actually populates information.

Fixes: 1d74282c455f ("x86: setup PVHv2 Dom0 ACPI tables")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Also log domain in new/moved/altered printk()s. Don't add
    BUILD_BUG_ON() which is being removed again by a later change.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -915,8 +915,9 @@ static int __init pvh_setup_acpi_madt(st
     int rc;
 
     /* Count number of interrupt overrides in the MADT. */
-    acpi_table_parse_madt(ACPI_MADT_TYPE_INTERRUPT_OVERRIDE,
-                          acpi_count_intr_ovr, UINT_MAX);
+    if ( !*addr )
+        acpi_table_parse_madt(ACPI_MADT_TYPE_INTERRUPT_OVERRIDE,
+                              acpi_count_intr_ovr, UINT_MAX);
 
     /* Calculate the size of the crafted MADT. */
     size = sizeof(*madt);
@@ -924,6 +925,22 @@ static int __init pvh_setup_acpi_madt(st
     size += sizeof(*intsrcovr) * acpi_intr_overrides;
     size += sizeof(*x2apic) * d->max_vcpus;
 
+    if ( !*addr )
+    {
+        /* Reserve space to place the new MADT in guest memory space. */
+        if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
+        {
+            printk("%pd: unable to steal guest RAM for MADT\n", d);
+            return -ENOMEM;
+        }
+
+        /* Mark this region as E820_ACPI. */
+        if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
+            printk("%pd: unable to add MADT region to memory map\n", d);
+
+        return 0;
+    }
+
     madt = xzalloc_bytes(size);
     if ( !madt )
     {
@@ -986,17 +1003,6 @@ static int __init pvh_setup_acpi_madt(st
     madt->header.checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, madt), size);
 
     /* Place the new MADT in guest memory space. */
-    if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
-    {
-        printk("Unable to steal guest RAM for MADT\n");
-        rc = -ENOMEM;
-        goto out;
-    }
-
-    /* Mark this region as E820_ACPI. */
-    if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
-        printk("Unable to add MADT region to memory map\n");
-
     rc = hvm_copy_to_guest_phys(*addr, madt, size, d->vcpu[0]);
     if ( rc )
     {
@@ -1111,6 +1117,22 @@ static int __init pvh_setup_acpi_xsdt(st
      */
     size += num_tables * sizeof(xsdt->table_offset_entry[0]);
 
+    if ( !*addr )
+    {
+        /* Reserve space to place the new XSDT in guest memory space. */
+        if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
+        {
+            printk("%pd: unable to find guest RAM for XSDT\n", d);
+            return -ENOMEM;
+        }
+
+        /* Mark this region as E820_ACPI. */
+        if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
+            printk("%pd: unable to add XSDT region to memory map\n", d);
+
+        return 0;
+    }
+
     xsdt = xzalloc_bytes(size);
     if ( !xsdt )
     {
@@ -1174,17 +1196,6 @@ static int __init pvh_setup_acpi_xsdt(st
     xsdt->header.checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, xsdt), size);
 
     /* Place the new XSDT in guest memory space. */
-    if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
-    {
-        printk("Unable to find guest RAM for XSDT\n");
-        rc = -ENOMEM;
-        goto out;
-    }
-
-    /* Mark this region as E820_ACPI. */
-    if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
-        printk("Unable to add XSDT region to memory map\n");
-
     rc = hvm_copy_to_guest_phys(*addr, xsdt, size, d->vcpu[0]);
     if ( rc )
     {
@@ -1200,18 +1211,18 @@ static int __init pvh_setup_acpi_xsdt(st
     return rc;
 }
 
-static int __init pvh_setup_acpi(struct domain *d, paddr_t start_info)
+struct acpi_info {
+    paddr_t madt;
+    paddr_t xsdt;
+    paddr_t rsdp;
+};
+
+static int __init pvh_place_acpi(
+    struct domain *d,
+    struct acpi_info *info)
 {
-    unsigned long pfn, nr_pages;
-    paddr_t madt_paddr, xsdt_paddr, rsdp_paddr;
     unsigned int i;
     int rc;
-    struct acpi_table_rsdp *native_rsdp, rsdp = {
-        .signature = ACPI_SIG_RSDP,
-        .revision = 2,
-        .length = sizeof(rsdp),
-    };
-
 
     /* Scan top-level tables and add their regions to the guest memory map. */
     for( i = 0; i < acpi_gbl_root_table_list.count; i++ )
@@ -1234,6 +1245,8 @@ static int __init pvh_setup_acpi(struct
     /* Identity map ACPI e820 regions. */
     for ( i = 0; i < d->arch.nr_e820; i++ )
     {
+        unsigned long pfn, nr_pages;
+
         if ( d->arch.e820[i].type != E820_ACPI &&
              d->arch.e820[i].type != E820_NVS )
             continue;
@@ -1262,32 +1275,49 @@ static int __init pvh_setup_acpi(struct
         }
     }
 
-    rc = pvh_setup_acpi_madt(d, &madt_paddr);
+    rc = pvh_setup_acpi_madt(d, &info->madt);
     if ( rc )
         return rc;
 
-    rc = pvh_setup_acpi_xsdt(d, madt_paddr, &xsdt_paddr);
+    rc = pvh_setup_acpi_xsdt(d, info->madt, &info->xsdt);
     if ( rc )
         return rc;
 
-    /* Craft a custom RSDP. */
-    native_rsdp = acpi_os_map_memory(acpi_os_get_root_pointer(), sizeof(rsdp));
-    if ( !native_rsdp )
+    if ( pvh_steal_ram(d, sizeof(struct acpi_table_rsdp), 0, GB(4),
+                       &info->rsdp) )
     {
-        printk("Failed to map native RSDP\n");
+        printk("%pd: unable to allocate guest RAM for RSDP\n", d);
         return -ENOMEM;
     }
-    memcpy(rsdp.oem_id, native_rsdp->oem_id, sizeof(rsdp.oem_id));
-    acpi_os_unmap_memory(native_rsdp, sizeof(rsdp));
-    rsdp.xsdt_physical_address = xsdt_paddr;
-    /*
-     * Calling acpi_tb_checksum here is a layering violation, but
-     * introducing a wrapper for such simple usage seems overkill.
-     */
-    rsdp.checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, &rsdp),
-                                      ACPI_RSDP_REV0_SIZE);
-    rsdp.extended_checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, &rsdp),
-                                               sizeof(rsdp));
+
+    /* Mark this region as E820_ACPI. */
+    if ( pvh_add_mem_range(d, info->rsdp,
+                           info->rsdp + sizeof(struct acpi_table_rsdp),
+                           E820_ACPI) )
+        printk("%pd: unable to add RSDP region to memory map\n", d);
+
+    return 0;
+}
+
+static int __init pvh_setup_acpi(
+    struct domain *d,
+    struct acpi_info *info,
+    paddr_t start_info)
+{
+    int rc;
+    struct acpi_table_rsdp *native_rsdp, rsdp = {
+        .signature = ACPI_SIG_RSDP,
+        .revision = 2,
+        .length = sizeof(rsdp),
+    };
+
+    rc = pvh_setup_acpi_madt(d, &info->madt);
+    if ( rc )
+        return rc;
+
+    rc = pvh_setup_acpi_xsdt(d, info->madt, &info->xsdt);
+    if ( rc )
+        return rc;
 
     /*
      * Place the new RSDP in guest memory space.
@@ -1297,19 +1327,27 @@ static int __init pvh_setup_acpi(struct
      * the native RSDT, and should not be used for the Dom0 kernel's boot
      * purposes (we keep it visible for post boot access).
      */
-    if ( pvh_steal_ram(d, sizeof(rsdp), 0, GB(4), &rsdp_paddr) )
+    native_rsdp = acpi_os_map_memory(acpi_os_get_root_pointer(), sizeof(rsdp));
+    if ( !native_rsdp )
     {
-        printk("Unable to allocate guest RAM for RSDP\n");
+        printk("%pd: failed to map native RSDP\n", d);
         return -ENOMEM;
     }
+    memcpy(rsdp.oem_id, native_rsdp->oem_id, sizeof(rsdp.oem_id));
+    acpi_os_unmap_memory(native_rsdp, sizeof(rsdp));
+    rsdp.xsdt_physical_address = info->xsdt;
 
-    /* Mark this region as E820_ACPI. */
-    if ( pvh_add_mem_range(d, rsdp_paddr, rsdp_paddr + sizeof(rsdp),
-                           E820_ACPI) )
-        printk("Unable to add RSDP region to memory map\n");
+    /*
+     * Calling acpi_tb_checksum here is a layering violation, but
+     * introducing a wrapper for such simple usage seems overkill.
+     */
+    rsdp.checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, &rsdp),
+                                      ACPI_RSDP_REV0_SIZE);
+    rsdp.extended_checksum -= acpi_tb_checksum(ACPI_CAST_PTR(u8, &rsdp),
+                                               sizeof(rsdp));
 
     /* Copy RSDP into guest memory. */
-    rc = hvm_copy_to_guest_phys(rsdp_paddr, &rsdp, sizeof(rsdp), d->vcpu[0]);
+    rc = hvm_copy_to_guest_phys(info->rsdp, &rsdp, sizeof(rsdp), d->vcpu[0]);
     if ( rc )
     {
         printk("Unable to copy RSDP into guest memory\n");
@@ -1319,7 +1357,7 @@ static int __init pvh_setup_acpi(struct
     /* Copy RSDP address to start_info. */
     rc = hvm_copy_to_guest_phys(start_info +
                                 offsetof(struct hvm_start_info, rsdp_paddr),
-                                &rsdp_paddr,
+                                &info->rsdp,
                                 sizeof_field(struct hvm_start_info, rsdp_paddr),
                                 d->vcpu[0]);
     if ( rc )
@@ -1356,6 +1394,7 @@ int __init dom0_construct_pvh(const stru
     struct elf_binary elf;
     struct e820entry *orig_e820;
     unsigned int nr_orig_e820;
+    struct acpi_info acpi = {};
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
@@ -1410,6 +1449,13 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
+    rc = pvh_place_acpi(d, &acpi);
+    if ( rc )
+    {
+        printk("%pd: failed to place ACPI tables: %d\n", d, rc);
+        return rc;
+    }
+
     rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820);
     if ( rc )
     {
@@ -1433,7 +1479,7 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
-    rc = pvh_setup_acpi(d, start_info);
+    rc = pvh_setup_acpi(d, &acpi, start_info);
     if ( rc )
     {
         printk("Failed to setup Dom0 ACPI tables: %d\n", rc);



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:35:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:35:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474698.1681694 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxcl-0007pQ-Nk; Thu, 05 Nov 2026 13:35:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474698.1681694; Thu, 05 Nov 2026 13:35:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxcl-0007pG-Kl; Thu, 05 Nov 2026 13:35:27 +0000
Received: by outflank-mailman (input) for mailman id 1474698;
 Thu, 05 Nov 2026 13:35:25 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxcj-0007n9-HE
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:35:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxci-00G3pg-Tx
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:35:24 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8616-8faa-0a2a0a5109dd-0a2a4504cdde-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:24 +0100
Received: from [209.85.208.51] (helo=mail-ed1-f51.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec861c-b57f-0a2a45040019-d155d033c593-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:24 +0100
Received: by mail-ed1-f51.google.com with SMTP id
 4fb4d7f45d1cf-6b5669a5100so2204756a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:35:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6b55abd3da7sm1898289a12.1.2026.11.05.05.35.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:35:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885724; x=1794490524; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=j1H0axRw7JFmol/inFP+mhs/4Cd3fWwbDSonZNiObFg=;
        b=ByoTe8/SJQKTKxYnPEaC500+t4yqrsLOYP+aeKkk+88AVsjTOS37Nh3IArfJ6vEXXd
         TlfNoMG3SZVT6qCjzymiMc36mTa9Kyuz+DzhXE5VfdFJGuIpifPWWouNVEQy1bhxMdHw
         QneAdAUrs1pHk7ObhwH9o62noP8j148SN0yy04mtOEPPGE6RolNMcVjWC+Ly4rmk4Rd0
         0rVPHvd81LgjcUa8yWNvSVS3HrARxDn1SfT0xtMaNRzmkhcQYlsbPHg3afkzb60M3kzS
         O1I4kllpsO2staPKD/a7y9DRWtDUESVmrHkmQGQ2U3VItratefo7WpYJaHbIBwJGSqVj
         XlZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885724; x=1794490524;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=j1H0axRw7JFmol/inFP+mhs/4Cd3fWwbDSonZNiObFg=;
        b=wNmDD2d3guRSoKxcmVuiHgVDGJU44v6dgAufTZCxT8PnoCucbeKo2SYW9hxLdkTxWN
         wjx6NbQUTlvQXNUFVmvELquHvFpUsJp09y01CtiB4sXqA/zTpEcx5oRwqafupFlKklUi
         pshG9XziuUgDgSjMzgxstpUg6yWG5ZRomvZwPbdqli8r/7FeSK2kFlsuupumTBy74ktt
         QI1t4s3BSXYEqPyOnAkhmmWOMAPa4MXwJjHvA23iCRdp30jffPe70v3QxtjpOyolcfe8
         WVBOXdb5fKOOlZdNpvDu88Z47D6v4VlgXS1+PIJCqa47vEoC702eUSLtMETj8PW85c6p
         ze+g==
X-Gm-Message-State: APuU4Z+pW+q//4tL0jrRL53FWAuZj2gYnHO0XMo4ptYm26QjRYD/zRFR
	vVF4jKrZt6ddzuSIi3s3uMU/NcflQuBQyhenbmWmkzhvAJMdUc1mJ9sWYHB8TcbwsFoRnpSIobi
	yxFvUbA==
X-Gm-Gg: AYBFou2NSPbvy0R9teSxI4NgGA+qMs2qJmW2XiO7rqXWVqNZPogrHc6ReqvTQ5ZyRKO
	VRiShexbUnUhMoBhfAFeAAspoZMGgXyLZ8bLkskaEOoAS8v2EQmbRZK+NltaakjZp0j/XEs3oqF
	4ESFdpGNKOz7ZmU2xKoU206aLdidpyQKi1Oz7cZmXOIy2N5c+1bxvciKV4tDYEQ2t/2/kH/DHwI
	+MTQJbgv3XrDP6P3uLo274JRQRQVL9kV66ZfdNRG3TrVK0wV0Q+v9zF55FE/RCI6MnQcwGUFfFd
	JIkBWYwBy26t63eb4TgoMyLEm9Y2c1ng3KdueZ0F69NH2ONXPnCNtEAcKb+M1JOIlkdgS+fx9zC
	iDR6R+TK6/p4FdzmyHw/V2hkHyLfkrwjxyXtLr9ByQh5q014N+6Z0pettcRqxXRTlIKYrXQZdjU
	219eTm00saogC1+Vl2pctSChZzUbyXhBWZ5wUQawfHF/HPt0IsDsXaXR9VlosAM93ZaeGkeCZhk
	wTE5ILpyXApcJG7JSQfIy5nhYL2E3UbPcZEnyidElhBRsN4h4CxG8yPxex/F3wDt6BJtDhj6uMT
	lhUK0xDBzD489bnfpt7vRm6lUxCaqMPbDKwjxCfBDBQJnp/DAuaOOOk0vCpb+qfHekm0fuWHVpG
	IycI73Jggexj9AFG6
X-Received: by 2002:a05:6402:4512:b0:6b5:7872:2d1a with SMTP id 4fb4d7f45d1cf-6b57872312emr1932887a12.41.1793885724030;
        Thu, 05 Nov 2026 05:35:24 -0800 (PST)
Message-ID: <65f0d55b-9552-45e5-8b36-bc76a73011d1@suse.com>
Date: Thu, 5 Nov 2026 14:35:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 08/14] x86/PVH: split pvh_setup_vmx_realmode_helpers()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793885724-50EDEB50-C9A51486/10/78276251493
X-purgate-type: spam
X-purgate-size: 5989

All E820 manipulations want to happen before the initrd is placed, or else
pvh_steal_ram() may steal from the tail part of it. While this is
currently suitably ordered, mapping the initrd directly into Dom0 will
want to happen ahead of pvh_populate_p2m(). Hence as a third step, split
placing VMX data (if needed at all) from actually populating it.

Also move the invocation of pvh_setup_vmx_realmode_helpers() out of
pvh_populate_p2m(). Make it unconditional as well, instead bailing from
the function when pvh_place_vmx_realmode_helpers() wasn't called.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Also log domain in moved printk().

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -268,26 +268,30 @@ static int __init pvh_add_mem_range(stru
     return 0;
 }
 
-static int __init pvh_setup_vmx_realmode_helpers(struct domain *d)
+struct vmx_info {
+    paddr_t tss;
+    gfn_t identpt;
+};
+
+static int __init pvh_place_vmx_realmode_helpers(
+    struct domain *d,
+    struct vmx_info *info)
 {
-    uint32_t rc, *ident_pt;
-    mfn_t mfn;
     paddr_t gaddr;
-    struct vcpu *v = d->vcpu[0];
 
     /*
-     * Steal some space from the last RAM region below 4GB and use it to
-     * store the real-mode TSS. It needs to be aligned to 128 so that the
-     * TSS structure (which accounts for the first 104b) doesn't cross
-     * a page boundary.
+     * Steal some space from the last RAM region below 4GB to store the
+     * real-mode TSS.  It needs to be aligned to 128 so that the TSS
+     * structure (which accounts for the first 104b) doesn't cross a page
+     * boundary.
      */
     if ( !pvh_steal_ram(d, HVM_VM86_TSS_SIZE, 128, GB(4), &gaddr) )
     {
-        if ( hvm_copy_to_guest_phys(gaddr, NULL, HVM_VM86_TSS_SIZE, v) !=
-             HVMTRANS_okay )
-            printk("Unable to zero VM86 TSS area\n");
         d->arch.hvm.params[HVM_PARAM_VM86_TSS_SIZED] =
             VM86_TSS_UPDATED | ((uint64_t)HVM_VM86_TSS_SIZE << 32) | gaddr;
+
+        info->tss = gaddr;
+
         if ( pvh_add_mem_range(d, gaddr, gaddr + HVM_VM86_TSS_SIZE,
                                E820_RESERVED) )
             printk("Unable to set VM86 TSS as reserved in the memory map\n");
@@ -302,12 +306,42 @@ static int __init pvh_setup_vmx_realmode
         return -ENOMEM;
     }
 
+    if ( pvh_add_mem_range(d, gaddr, gaddr + PAGE_SIZE, E820_RESERVED) )
+        printk("%pd: Unable to set identity page tables as reserved in the memory map\n",
+               d);
+
+    d->arch.hvm.params[HVM_PARAM_IDENT_PT] = gaddr;
+    info->identpt = _gfn(PFN_DOWN(gaddr));
+
+    return 0;
+}
+
+static int __init pvh_setup_vmx_realmode_helpers(
+    const struct domain *d,
+    const struct vmx_info *info)
+{
+    uint32_t rc, *ident_pt;
+    mfn_t mfn;
+    struct vcpu *v = d->vcpu[0];
+
+    /* Bail if no space needed reserving in the first place. */
+    if ( gfn_eq(info->identpt, _gfn(0)) )
+        return 0;
+
+    /* Store the real-mode TSS, if space for it was successfully stolen. */
+    if ( info->tss )
+    {
+        if ( hvm_copy_to_guest_phys(info->tss, NULL, HVM_VM86_TSS_SIZE, v) !=
+             HVMTRANS_okay )
+            printk("%pd: unable to zero VM86 TSS area\n", d);
+    }
+
     /*
      * Identity-map page table is required for running with CR0.PG=0
      * when using Intel EPT. Create a 32-bit non-PAE page directory of
      * superpages.
      */
-    ident_pt = map_domain_gfn(p2m_get_hostp2m(d), _gfn(PFN_DOWN(gaddr)),
+    ident_pt = map_domain_gfn(p2m_get_hostp2m(d), info->identpt,
                               &mfn, 0, &rc);
     if ( ident_pt == NULL )
     {
@@ -317,9 +351,6 @@ static int __init pvh_setup_vmx_realmode
     write_32bit_pse_identmap(ident_pt);
     unmap_domain_page(ident_pt);
     put_page(mfn_to_page(mfn));
-    d->arch.hvm.params[HVM_PARAM_IDENT_PT] = gaddr;
-    if ( pvh_add_mem_range(d, gaddr, gaddr + PAGE_SIZE, E820_RESERVED) )
-            printk("Unable to set identity page tables as reserved in the memory map\n");
 
     return 0;
 }
@@ -481,18 +512,6 @@ static int __init pvh_populate_p2m(
         }
     }
 
-    if ( using_vmx() && !paging_mode_shadow(d) && !vmx_unrestricted_guest(v) )
-    {
-        /*
-         * Since Dom0 cannot be migrated, we will only setup the
-         * unrestricted guest helpers if they are needed by the current
-         * hardware we are running on.
-         */
-        rc = pvh_setup_vmx_realmode_helpers(d);
-        if ( rc )
-            return rc;
-    }
-
     if ( opt_dom0_verbose )
         print_order_stats(d);
 
@@ -1395,6 +1414,7 @@ int __init dom0_construct_pvh(const stru
     struct e820entry *orig_e820;
     unsigned int nr_orig_e820;
     struct acpi_info acpi = {};
+    struct vmx_info vmx = {};
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
@@ -1456,6 +1476,22 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
+    /*
+     * Since Dom0 cannot be migrated, only set up the unrestricted guest
+     * helpers if they are needed by the hardware we are running on.
+     */
+    if ( using_vmx() && !paging_mode_shadow(d) &&
+         /*
+          * TODO: Unrestricted Guest should be a domain property, not a vCPU
+          * one.
+          */
+         !vmx_unrestricted_guest(d->vcpu[0]) )
+    {
+        rc = pvh_place_vmx_realmode_helpers(d, &vmx);
+        if ( rc )
+            return rc;
+    }
+
     rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820);
     if ( rc )
     {
@@ -1486,6 +1522,10 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
+    rc = pvh_setup_vmx_realmode_helpers(d, &vmx);
+    if ( rc )
+        return rc;
+
     if ( opt_dom0_verbose )
     {
         printk("Dom%u memory map:\n", d->domain_id);



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:35:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:35:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474707.1681704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdA-0008O8-3o; Thu, 05 Nov 2026 13:35:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474707.1681704; Thu, 05 Nov 2026 13:35:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdA-0008O1-0q; Thu, 05 Nov 2026 13:35:52 +0000
Received: by outflank-mailman (input) for mailman id 1474707;
 Thu, 05 Nov 2026 13:35:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxd9-0008Np-DH
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:35:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxd3-00Ak0m-Ph
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:35:45 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8627-2eae-0a2a0a5409dd-0a2a4509c210-22
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:45 +0100
Received: from [209.85.208.41] (helo=mail-ed1-f41.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8631-be1a-0a2a45090019-d155d029f134-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:35:45 +0100
Received: by mail-ed1-f41.google.com with SMTP id
 4fb4d7f45d1cf-6b570ff3dfdso1362468a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:35:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-6b55ac5aec7sm1818296a12.20.2026.11.05.05.35.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:35:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885745; x=1794490545; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=Les9WkE9lOfW3mflu8VwX8atN7kQJgnKhFYC3t+evzA=;
        b=OM4t+89RFlU9gUCGDuVXykKkTknSM8lB2hAnI5RS+Hn+BF9OtVHAvooaS2c6CxeA0u
         mgwJP51EhCzXBLjgGCa8CQmejZJ2/q7boyL0LgNnCbJUWoQq869f8dd2sdwyADVkprEx
         PaqpSSKFiq/B+xB4jXGV7waJzM99TK57Z4ILU/enKVbO+rrJI6nA9SziKfaQSKGSNn3b
         1UpLBzBAcRR7Gn6tnYGy9PDqmFTNS+WNzqiaj+7VYCBi8WJJFS9PW8ouoYNOKWTC7eGH
         djo3AmmL8ZKUS9FfI4XjXDpw3VAEyJaHPOLVtP+AmSYAXiaaSTNpkLRHJluJOwBLO/WQ
         w09Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885745; x=1794490545;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=Les9WkE9lOfW3mflu8VwX8atN7kQJgnKhFYC3t+evzA=;
        b=Pk1pC0WuAdfoT0h+nhCqL7dzmbCS5jqbzgDCUP4XMjfEEHrGCa3RTnr3wVqcT+XIzn
         SKd05OIjQ5Es6sLPgBHWbXZWnIWOVoFO25k7D+KXZz8z7UMdz2ta2MXb0LaCysbsw4PM
         uVXD68El24z4nLXQOgyVBeLJoSZxcDLFZVSYMr85fRpnTQJmi3nmtbd55v0d6eEk93gE
         xof/PoQczLEEAl99MpmeAU34bpXmnKRzRguwOtV3gHiazOnHjJWt4dyD6fzTXi2Oz8jU
         y1Y5GUUlIJZnrSMditoDnHdskKeV17jrDXiaOc3TfUqwDLeg8vks3gP7b2/ilp+4eoMI
         GI5g==
X-Gm-Message-State: APuU4Z/upeZ4R4F69nRsekIMIJKeWdvNjhABvQVx2XLFX5cm6x2gPcsl
	V51FKEvHdCrcvrca3CL6wh5WM9jPFIvPDNw0Eu5n8/OrJB765r0EgFCKy7+IpvI49zEI9DTfSSc
	Ahhn+2A==
X-Gm-Gg: AYBFou2/85QMToh4V6kbTDzlYHSILmBNrm+c1muqpsVzNu4k97qWPaHfAOSUOIUG5qN
	IKRlRou96bAKZGmpHm6DRbRLG7PbXWjGGTPWddlbpBlxaBz46hWGpRWLaZ4nXNybxvWe64hLMv+
	wQpZelPQufEOW9CtErjJL1Ypl5PKzRRDhvD4C+LjRsavUp60pFsPhdH4U1T39PaleCqpUZ/jaNC
	PIyCrFh6iruw0+5ORYz8+momjcegOnL21iE1rK1ePh8nTwCi67UO3jQvRTpfFrPHcvQpzekJZPh
	EzYGETApURBmGhJzMx1uRehnsXtmZL+Vjy1tRT4kbX/QTlkxXSt7QQkjPEfBBozxpI0EHrrO9bi
	nHwgDKThtchMnQx8EB35kK6lU4nt+ERqUtM1CPmH/L5R7lLJyZejSiu0Y85SH1G7kgSDC5+UjgI
	43qnEcApCtYsdk5w1VlsRjG2xoWARa934MQEyyBIhaZkKComNvh0b/nYBNSO+rm+5A6igjBi/px
	AUNoM8iuxHMp8vcGXJ93y0IiDk2OGajfXqLNMc0kcY8ShWVptWSVpTXDUl41WQqvqsnbjegzlqO
	JmL5Pj6FfX1CViCdENTpF9tPHzyKSA8j3CYU3QM/EfPagq4tuCwooahjadwj8PorKcEaIC3/1bh
	3WHBq9b1+yJRK4vo=
X-Received: by 2002:a17:907:84b:b0:c49:8f1e:af0a with SMTP id a640c23a62f3a-c4ca795e453mr1630598666b.7.1793885744727;
        Thu, 05 Nov 2026 05:35:44 -0800 (PST)
Message-ID: <4a678bd3-e70b-4194-b4ce-645328d61bd3@suse.com>
Date: Thu, 5 Nov 2026 14:35:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 09/14] x86/PVH: track Dom0 available RAM in a rangeset
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1793885745-BCECE034-2AEE01BF/10/78276251493
X-purgate-type: spam
X-purgate-size: 17504

Convert pvh_steal_ram() to work from a rangeset, and replace find_memory()
entirely. By tracking the kernel range right from the creation of that
rangeset we also avoid inadvertently stealing from the kernel range.

Shrinking the E820 region stolen from moves into pvh_add_mem_range(). To
retain coverage of tail padding, the real end address now needs
communicating from pvh_steal_ram() to pvh_add_mem_range().

Sadly the find_memory() replacement cannot use an upper limit of 4Gb, as
that would break current Linux: It accesses module table (and memory map,
which for Dom0 we don't set) via a very early direct-map, which has only
the first L3 entry populated.

Fixes: 1d74282c455f ("x86: setup PVHv2 Dom0 ACPI tables")
Suggested-by: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
The Suggested-by: is based on the respective commit's S-o-b. I didn't go
hunt for whether this may have been suggested in review of that patch.

Clearly find_kernel_memory() could also be converted, but is unrelated
here and hence left for a separate change.
---
v2: New.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -183,41 +183,62 @@ static int __init pvh_populate_memory_ra
     return 0;
 }
 
+struct steal_info {
+    unsigned long size, align;
+    paddr_t addr, end;
+};
+
+static int cf_check __init find_ram(
+    unsigned long s, unsigned long e, void *data)
+{
+    struct steal_info *info = data;
+
+    if ( e + 1 - s >= info->size )
+    {
+        paddr_t addr = (e + 1 - info->size) & ~(info->align - 1);
+
+        if ( addr >= s )
+        {
+            info->addr = addr;
+            info->end = e;
+        }
+    }
+
+    return 0;
+}
+
 /* Steal RAM from the end of a memory region. */
-static int __init pvh_steal_ram(struct domain *d, unsigned long size,
+static int __init pvh_steal_ram(struct rangeset *ram, unsigned long size,
                                 unsigned long align, paddr_t limit,
-                                paddr_t *addr)
+                                paddr_t *addr, paddr_t *end)
 {
-    unsigned int i = d->arch.nr_e820;
-
     /*
      * Alignment 0 should be set to 1, so it doesn't wrap around in the
-     * calculations below.
+     * calculations in find_ram().
      */
-    align = align ? : 1;
-    while ( i-- )
-    {
-        struct e820entry *entry = &d->arch.e820[i];
+    struct steal_info info = {
+        .size = size,
+        .align = align ?: 1,
+        .addr = INVALID_PADDR,
+    };
 
-        if ( entry->type != E820_RAM || entry->addr + entry->size > limit )
-            continue;
+    rangeset_report_ranges(ram, MB(1), limit - 1, find_ram, &info);
 
-        *addr = (entry->addr + entry->size - size) & ~(align - 1);
-        if ( *addr < entry->addr ||
-             /* Don't steal from the low 1MB due to the copying done there. */
-             *addr < MB(1) )
-            continue;
+    if ( info.addr == INVALID_PADDR )
+        return -ENOMEM;
 
-        entry->size = *addr - entry->addr;
-        return 0;
-    }
+    *addr = info.addr;
 
-    return -ENOMEM;
+    if ( end )
+        /* Suitable for passing to pvh_add_mem_range(). */
+        *end = info.end + 1;
+
+    return rangeset_remove_range(ram, info.addr, info.end);
 }
 
 /* NB: memory map must be sorted at all times for this to work correctly. */
 static int __init pvh_add_mem_range(struct domain *d, uint64_t s, uint64_t e,
-                                    unsigned int type)
+                                    unsigned int type, bool replace)
 {
     struct e820entry *map;
     unsigned int i;
@@ -245,12 +266,66 @@ static int __init pvh_add_mem_range(stru
             break;
 
         if ( re > s )
-            return -EEXIST;
+        {
+            if ( !replace || d->arch.e820[i].type != E820_RAM )
+                return -EEXIST;
+
+            /* In the common case we get away without memory allocation. */
+            if ( re == e && rs <= s )
+            {
+                d->arch.e820[i].size -= e - s;
+
+                if ( !d->arch.e820[i].size )
+                {
+                    memmove(d->arch.e820 + i, d->arch.e820 + i + 1,
+                            (d->arch.nr_e820 - i - 1) * sizeof(*d->arch.e820));
+
+                    d->arch.nr_e820--;
+                    i--;
+                }
+            }
+            else
+            {
+                /*
+                 * While pvh_steal_ram() steals from the end of regions, this
+                 * case can still occur because of RAM ranges in use which
+                 * aren't reflected in E820 (first and foremost the kernel).
+                 */
+                map = xzalloc_array(struct e820entry, d->arch.nr_e820 + 1);
+                if ( !map )
+                    goto nomem;
+
+                memcpy(map, d->arch.e820, (i + 1) * sizeof(*map));
+                memcpy(map + i + 1, d->arch.e820 + i,
+                       (d->arch.nr_e820 - i) * sizeof(*map));
+
+                map[i].size = max(rs, s) - rs;
+
+                map[i + 1].addr = min(re, e);
+                map[i + 1].size = re - map[i + 1].addr;
+
+                if ( !map[i].size )
+                    goto insert;
+
+                if ( !map[i + 1].size )
+                {
+                    d->arch.e820[i] = map[i];
+                    xfree(map);
+                }
+                else
+                {
+                    xfree(d->arch.e820);
+                    d->arch.e820 = map;
+                    d->arch.nr_e820++;
+                }
+            }
+        }
     }
 
     map = xzalloc_array(struct e820entry, d->arch.nr_e820 + 1);
     if ( !map )
     {
+    nomem:
         printk(XENLOG_WARNING "E820: out of memory to add region\n");
         return -ENOMEM;
     }
@@ -258,6 +333,8 @@ static int __init pvh_add_mem_range(stru
     memcpy(map, d->arch.e820, i * sizeof(*d->arch.e820));
     memcpy(map + i + 1, d->arch.e820 + i,
            (d->arch.nr_e820 - i) * sizeof(*d->arch.e820));
+
+ insert:
     map[i].addr = s;
     map[i].size = e - s;
     map[i].type = type;
@@ -275,9 +352,10 @@ struct vmx_info {
 
 static int __init pvh_place_vmx_realmode_helpers(
     struct domain *d,
+    struct rangeset *ram,
     struct vmx_info *info)
 {
-    paddr_t gaddr;
+    paddr_t gaddr, gend;
 
     /*
      * Steal some space from the last RAM region below 4GB to store the
@@ -285,28 +363,27 @@ static int __init pvh_place_vmx_realmode
      * structure (which accounts for the first 104b) doesn't cross a page
      * boundary.
      */
-    if ( !pvh_steal_ram(d, HVM_VM86_TSS_SIZE, 128, GB(4), &gaddr) )
+    if ( !pvh_steal_ram(ram, HVM_VM86_TSS_SIZE, 128, GB(4), &gaddr, &gend) )
     {
         d->arch.hvm.params[HVM_PARAM_VM86_TSS_SIZED] =
             VM86_TSS_UPDATED | ((uint64_t)HVM_VM86_TSS_SIZE << 32) | gaddr;
 
         info->tss = gaddr;
 
-        if ( pvh_add_mem_range(d, gaddr, gaddr + HVM_VM86_TSS_SIZE,
-                               E820_RESERVED) )
+        if ( pvh_add_mem_range(d, gaddr, gend, E820_RESERVED, true) )
             printk("Unable to set VM86 TSS as reserved in the memory map\n");
     }
     else
         printk("Unable to allocate VM86 TSS area\n");
 
     /* Steal some more RAM for the identity page tables. */
-    if ( pvh_steal_ram(d, PAGE_SIZE, PAGE_SIZE, GB(4), &gaddr) )
+    if ( pvh_steal_ram(ram, PAGE_SIZE, PAGE_SIZE, GB(4), &gaddr, &gend) )
     {
         printk("Unable to find memory to stash the identity page tables\n");
         return -ENOMEM;
     }
 
-    if ( pvh_add_mem_range(d, gaddr, gaddr + PAGE_SIZE, E820_RESERVED) )
+    if ( pvh_add_mem_range(d, gaddr, gend, E820_RESERVED, true) )
         printk("%pd: Unable to set identity page tables as reserved in the memory map\n",
                d);
 
@@ -519,14 +596,15 @@ static int __init pvh_populate_p2m(
 #undef MB1_PAGES
 }
 
-static paddr_t __init find_memory(
-    const struct domain *d, const struct elf_binary *elf, size_t size)
+static struct rangeset *__init make_ram_rangeset(
+    const struct domain *d, const struct elf_binary *elf)
 {
-    paddr_t kernel_start = (paddr_t)elf->dest_base & PAGE_MASK;
-    paddr_t kernel_end = ROUNDUP((paddr_t)elf->dest_base + elf->dest_size,
-                                 PAGE_SIZE);
+    struct rangeset *ram = rangeset_new(NULL, NULL, 0);
     unsigned int i;
 
+    if ( !ram )
+        return NULL;
+
     /* The memory map is sorted. */
     for ( i = 0; i < d->arch.nr_e820; i++ )
     {
@@ -538,26 +616,24 @@ static paddr_t __init find_memory(
 
         start = MAX(ROUNDUP(d->arch.e820[i].addr, PAGE_SIZE), MB(1));
 
-        /*
-         * NB: Even better would be to use rangesets to determine a suitable
-         * range, in particular in case a kernel requests multiple heavily
-         * discontiguous regions (which right now we fold all into one big
-         * region).
-         */
-        if ( end <= kernel_start || start >= kernel_end )
-        {
-            /* No overlap, just check whether the region is large enough. */
-            if ( end - start >= size )
-                return start;
-        }
-        /* Deal with the kernel already being loaded in the region. */
-        else if ( kernel_start > start && kernel_start - start >= size )
-            return start;
-        else if ( kernel_end < end && end - kernel_end >= size )
-            return kernel_end;
+        if ( start < end &&
+             rangeset_add_range(ram, start, end - 1) != 0 )
+            return NULL;
     }
 
-    return INVALID_PADDR;
+    /*
+     * Remove the kernel range, rounded to page boundaries.
+     *
+     * NB: Even better would be to record space needed by the kernel at its
+     * allocation, in particular in case a kernel requests multiple heavily
+     * discontiguous regions (which right now we fold all into one big one).
+     */
+    if ( rangeset_remove_range(ram, (paddr_t)elf->dest_base & PAGE_MASK,
+                               ROUNDUP((paddr_t)elf->dest_base + elf->dest_size,
+                                       PAGE_SIZE) - 1) != 0 )
+        return NULL;
+
+    return ram;
 }
 
 static bool __init check_load_address(
@@ -723,7 +799,8 @@ static int __init pvh_place_kernel(
 static int __init pvh_load_kernel(
     const struct boot_domain *bd,
     struct elf_binary *elf,
-    paddr_t *start_info_addr)
+    paddr_t *start_info_addr,
+    struct rangeset *ram)
 {
     struct domain *d = bd->d;
     struct boot_module *initrd = bd->initrd;
@@ -778,8 +855,13 @@ static int __init pvh_load_kernel(
 
     extra_space += elf_round_up(elf, cmdline_len);
 
-    last_addr = find_memory(d, elf, extra_space);
-    if ( last_addr == INVALID_PADDR )
+    /*
+     * While not written down anywhere, 64-bit Linux requires at least mod to
+     * live below 1Gb (mapped by the first L3 entry of the direct map).  32-bit
+     * Linux may map more, but defaults to mapping only 1Gb.
+     */
+    if ( pvh_steal_ram(ram, PAGE_ALIGN(extra_space), PAGE_SIZE, GB(1),
+                       &last_addr, NULL) )
     {
         printk("Unable to find a memory region to load initrd and metadata\n");
         return -ENOMEM;
@@ -922,7 +1004,10 @@ static int __init cf_check acpi_set_intr
     return 0;
 }
 
-static int __init pvh_setup_acpi_madt(struct domain *d, paddr_t *addr)
+static int __init pvh_setup_acpi_madt(
+    struct domain *d,
+    struct rangeset *ram,
+    paddr_t *addr)
 {
     struct acpi_table_madt *madt;
     struct acpi_table_header *table;
@@ -946,15 +1031,17 @@ static int __init pvh_setup_acpi_madt(st
 
     if ( !*addr )
     {
+        paddr_t end;
+
         /* Reserve space to place the new MADT in guest memory space. */
-        if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
+        if ( pvh_steal_ram(ram, size, 0, GB(4), addr, &end) )
         {
             printk("%pd: unable to steal guest RAM for MADT\n", d);
             return -ENOMEM;
         }
 
         /* Mark this region as E820_ACPI. */
-        if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
+        if ( pvh_add_mem_range(d, *addr, end, E820_ACPI, true) )
             printk("%pd: unable to add MADT region to memory map\n", d);
 
         return 0;
@@ -1102,8 +1189,11 @@ static bool __init pvh_acpi_xsdt_table_a
             strncmp(sig, ACPI_SIG_FACS, ACPI_NAME_SIZE));
 }
 
-static int __init pvh_setup_acpi_xsdt(struct domain *d, paddr_t madt_addr,
-                                      paddr_t *addr)
+static int __init pvh_setup_acpi_xsdt(
+    struct domain *d,
+    struct rangeset *ram,
+    paddr_t madt_addr,
+    paddr_t *addr)
 {
     struct acpi_table_xsdt *xsdt;
     struct acpi_table_header *table;
@@ -1138,15 +1228,17 @@ static int __init pvh_setup_acpi_xsdt(st
 
     if ( !*addr )
     {
+        paddr_t end;
+
         /* Reserve space to place the new XSDT in guest memory space. */
-        if ( pvh_steal_ram(d, size, 0, GB(4), addr) )
+        if ( pvh_steal_ram(ram, size, 0, GB(4), addr, &end) )
         {
             printk("%pd: unable to find guest RAM for XSDT\n", d);
             return -ENOMEM;
         }
 
         /* Mark this region as E820_ACPI. */
-        if ( pvh_add_mem_range(d, *addr, *addr + size, E820_ACPI) )
+        if ( pvh_add_mem_range(d, *addr, end, E820_ACPI, true) )
             printk("%pd: unable to add XSDT region to memory map\n", d);
 
         return 0;
@@ -1238,9 +1330,11 @@ struct acpi_info {
 
 static int __init pvh_place_acpi(
     struct domain *d,
-    struct acpi_info *info)
+    struct acpi_info *info,
+    struct rangeset *ram)
 {
     unsigned int i;
+    paddr_t end;
     int rc;
 
     /* Scan top-level tables and add their regions to the guest memory map. */
@@ -1258,7 +1352,7 @@ static int __init pvh_place_acpi(
         if ( strncmp(sig, ACPI_SIG_MADT, ACPI_NAME_SIZE)
              ? pvh_acpi_table_allowed(sig, addr, size)
              : !acpi_memory_banned(addr, size) )
-             pvh_add_mem_range(d, addr, addr + size, E820_ACPI);
+             pvh_add_mem_range(d, addr, addr + size, E820_ACPI, false);
     }
 
     /* Identity map ACPI e820 regions. */
@@ -1294,25 +1388,23 @@ static int __init pvh_place_acpi(
         }
     }
 
-    rc = pvh_setup_acpi_madt(d, &info->madt);
+    rc = pvh_setup_acpi_madt(d, ram, &info->madt);
     if ( rc )
         return rc;
 
-    rc = pvh_setup_acpi_xsdt(d, info->madt, &info->xsdt);
+    rc = pvh_setup_acpi_xsdt(d, ram, info->madt, &info->xsdt);
     if ( rc )
         return rc;
 
-    if ( pvh_steal_ram(d, sizeof(struct acpi_table_rsdp), 0, GB(4),
-                       &info->rsdp) )
+    if ( pvh_steal_ram(ram, sizeof(struct acpi_table_rsdp), 0, GB(4),
+                       &info->rsdp, &end) )
     {
         printk("%pd: unable to allocate guest RAM for RSDP\n", d);
         return -ENOMEM;
     }
 
     /* Mark this region as E820_ACPI. */
-    if ( pvh_add_mem_range(d, info->rsdp,
-                           info->rsdp + sizeof(struct acpi_table_rsdp),
-                           E820_ACPI) )
+    if ( pvh_add_mem_range(d, info->rsdp, end, E820_ACPI, true) )
         printk("%pd: unable to add RSDP region to memory map\n", d);
 
     return 0;
@@ -1330,11 +1422,11 @@ static int __init pvh_setup_acpi(
         .length = sizeof(rsdp),
     };
 
-    rc = pvh_setup_acpi_madt(d, &info->madt);
+    rc = pvh_setup_acpi_madt(d, NULL, &info->madt);
     if ( rc )
         return rc;
 
-    rc = pvh_setup_acpi_xsdt(d, info->madt, &info->xsdt);
+    rc = pvh_setup_acpi_xsdt(d, NULL, info->madt, &info->xsdt);
     if ( rc )
         return rc;
 
@@ -1413,6 +1505,7 @@ int __init dom0_construct_pvh(const stru
     struct elf_binary elf;
     struct e820entry *orig_e820;
     unsigned int nr_orig_e820;
+    struct rangeset *ram;
     struct acpi_info acpi = {};
     struct vmx_info vmx = {};
     int rc;
@@ -1469,7 +1562,14 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
-    rc = pvh_place_acpi(d, &acpi);
+    ram = make_ram_rangeset(d, &elf);
+    if ( !ram )
+    {
+        printk("%pd: not enough memory to track RAM\n", d);
+        return -ENOMEM;
+    }
+
+    rc = pvh_place_acpi(d, &acpi, ram);
     if ( rc )
     {
         printk("%pd: failed to place ACPI tables: %d\n", d, rc);
@@ -1487,7 +1587,7 @@ int __init dom0_construct_pvh(const stru
           */
          !vmx_unrestricted_guest(d->vcpu[0]) )
     {
-        rc = pvh_place_vmx_realmode_helpers(d, &vmx);
+        rc = pvh_place_vmx_realmode_helpers(d, ram, &vmx);
         if ( rc )
             return rc;
     }
@@ -1501,13 +1601,15 @@ int __init dom0_construct_pvh(const stru
 
     xvfree(orig_e820);
 
-    rc = pvh_load_kernel(bd, &elf, &start_info);
+    rc = pvh_load_kernel(bd, &elf, &start_info, ram);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
         return rc;
     }
 
+    rangeset_destroy(ram);
+
     rc = pvh_setup_cpus(d, entry, start_info);
     if ( rc )
     {



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:36:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:36:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474713.1681713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdO-0000Ph-AQ; Thu, 05 Nov 2026 13:36:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474713.1681713; Thu, 05 Nov 2026 13:36:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdO-0000Pa-7R; Thu, 05 Nov 2026 13:36:06 +0000
Received: by outflank-mailman (input) for mailman id 1474713;
 Thu, 05 Nov 2026 13:36:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxdN-0000Ou-8x
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:36:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxdM-00Ak7z-Le
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:36:04 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8630-2eae-0a2a0a5409dd-0a2a45088e0a-42
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:04 +0100
Received: from [209.85.218.45] (helo=mail-ej1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8644-f659-0a2a45080019-d155da2dd4bc-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:04 +0100
Received: by mail-ej1-f45.google.com with SMTP id
 a640c23a62f3a-c4322d310e7so32200166b.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:36:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e4668afsm172795166b.51.2026.11.05.05.36.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:36:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885764; x=1794490564; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=Xqd7lQJf6HxSa5w7PCo/dVug3ab9DqyZkj44HJO+byE=;
        b=PZehcl6LqNrWcNaAcUWURluYaEBu/6sv3BEFWpjoedJzij+eH+9A73nJqGRu2KwJgi
         jW9wo7O3ZkB2X1OvTGLyTZUqd71HgRySzWOkDhkPrJCIFixHyThKcJpw9HcNDCVBeBQa
         M5B5iTiP+n+9TtwDTukBVbAxVQNbGAJEuQRXPDpe/+CoxtihOxm0SL+PLs9+g7hTY8cb
         wBTNDGOXnmEzm30E+b7BDtn9AKI96ZnOVwgcIJvEAxKrQXFDdmolYWaO/IExiiK5bQiq
         lhYykBuFBP/FfjHsWURglLk/ugCbtghiywgfN/lLWF0Nk8aIJ+5z51UH/x6WHbwhW5pE
         P7yw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885764; x=1794490564;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=Xqd7lQJf6HxSa5w7PCo/dVug3ab9DqyZkj44HJO+byE=;
        b=Umiutjnf5TWpu2iv80TFBHUuxOPXQGNK6CojWfKqkaz1mjUrYawyrKyCtCXS84A4ib
         ANZhpiqOhB3Wtittb/w9TWIsGPSCSfty2dYCD67FUVe9G81mrNhf7iHjFfa+iP7i4TTz
         QXCkDdFq7+CA7Xu4CKxCIo2TSyV+BV4eX+4fVwaEEo7dNYM+kgCVJEY8LYhSReuHzpt9
         1r0kMCwklGQ5jXu57LfhcG3xSf3r0+lsjTa+Rx9XD5pAQgN6ycEnkBwIJqUdBgOcoQbX
         8jUxiJ5rTv2o469ACsP4PJJ/jZkJ/fyD9qdGCfKa9I8HY7YFtJn+4djkZxfQ/E92prjG
         0V5g==
X-Gm-Message-State: APuU4Z/Obu6iVzFNeoTGA9Gp2ftFoK0AFXBBcxUqR+LrMdzL19Zp7B06
	a+LUuZK7gJL6wstzodXyrGSMmnhMmbSjLpDYAFlISK3CV8FD48WNll44bFPV56V9A++mIavZEai
	6FtvthQ==
X-Gm-Gg: AYBFou0cnUkP22Axt1AXsh7U0o3biR/2kTWfCZVNQdOetZg8NMLEIwDX9kGiYJjaUdo
	F0aUWPer6mhjpyxVYEPiNkOJXQ9K8Yhi2d7lOt1D6HZBlOMUEN9VQW1O8ILJmCZOm4NM5RdLZzv
	+pCOV9tnSqHPZLiYDy5hGt9JkwYTH/jGYXdY47HneZsgoojOrOcv7TYYezHLelWxbi7z/wDCaGy
	udm1cMoitGeWnnxzwDbOMDzvGkUOaoENtet5O5zEYVnouSEg9tzCZHp3P55GhU3sWicxsz5d/7c
	pHjRP3cocSV4DfNWn6FySfG3/+tb22OutMvdq0zWBITS+BiIevj0R5ApAmse1N8TwdY9njs1iLI
	t7TXBahd9U4TrCQCQyoNuWaI9YQkmdTyl0lGcklUiduwPkmd0+UJsqNQIT/lqim5yLunhZzZ4Ns
	t8Ot7Vt4rCnhwvqvdnPaQYLyLfejMLm1iLcDs3SBcwwira1lx55z77G4iYjvnkaNdTOjDd6YaIa
	vVlQ4L6tlHw+udGc0ZyuCaFgVzEYQRiN1Eypkpef2g0sxihf6nOZNpXuhgaQz2VCCGw00zL7jW8
	Lng0H5gEke8dwnTxX7M+wUf9m2LL4FcG0KukFvBMlIoe+zMsdlr2zSrjptewjSy1JXI1Gh7G9rg
	8QHOdh+WHzWI49uUp
X-Received: by 2002:a17:907:84b:b0:c46:6a50:40c2 with SMTP id a640c23a62f3a-c4ca7acc58fmr1606505166b.39.1793885764041;
        Thu, 05 Nov 2026 05:36:04 -0800 (PST)
Message-ID: <fb392a52-3c9e-4fab-ab05-4c57a62f39c9@suse.com>
Date: Thu, 5 Nov 2026 14:36:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 10/14] x86/PVH: try to map initrd directly into Dom0
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793885764-D554C87B-F29BFDCD/10/78276251493
X-purgate-type: spam
X-purgate-size: 12187

Our present handling of initrd is problematic in particular when the
initrd is huge, and when at the same time "dom0_mem=" isn't in use to
significantly shrink Dom0's memory (from the default). In that case,
insufficient memory may exist for pvh_populate_p2m() to succeed (because
initrd memory can be freed only after copying).

Make an attempt to map the blob (including headroom) into Dom0's P2M
instead, thus also saving the copying operation. With __start_xen() having
arranged for a larger than necessary blob, that mapping can typically be
done with superpage mappings.

Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
pvh_steal_ram() can (theoretically) fail just because of
rangeset_remove_range() there failing, in which case we may be in limbo
state. That's hopefully an acceptable risk.
---
v2: Re-base over changes earlier in the series, in particular to use
    pvh_steal_ram() here. Avoid NULL deref when there's no initrd. Also
    log domain in new/moved printk().

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -528,7 +528,9 @@ static void __init pvh_init_p2m(struct d
 static int __init pvh_populate_p2m(
     struct domain *d,
     const struct e820entry *e820,
-    unsigned int nr_e820)
+    unsigned int nr_e820,
+    unsigned long initrd_start,
+    unsigned long initrd_end)
 {
     struct vcpu *v = d->vcpu[0];
     unsigned int i;
@@ -546,7 +548,12 @@ static int __init pvh_populate_p2m(
         addr = PFN_DOWN(e820[i].addr);
         size = PFN_DOWN(e820[i].size);
 
-        rc = pvh_populate_memory_range(d, addr, size);
+        if ( addr + size <= initrd_start || addr >= initrd_end )
+            rc = pvh_populate_memory_range(d, addr, size);
+        else
+            rc = pvh_populate_memory_range(d, addr, initrd_start - addr)
+                 ?: pvh_populate_memory_range(d, initrd_end,
+                                              addr + size - initrd_end);
         if ( rc )
             return rc;
 
@@ -636,6 +643,43 @@ static struct rangeset *__init make_ram_
     return ram;
 }
 
+static int __init pvh_map_initrd(
+    struct domain *d, const struct boot_module *initrd,
+    paddr_t initrd_start, unsigned int order)
+{
+    for ( paddr_t ga = initrd_start, ma = initrd->start;
+          ga < initrd_start + initrd->size;
+          ga += PAGE_SIZE << order, ma += PAGE_SIZE << order )
+    {
+        int rc = p2m_add_page(d, gaddr_to_gfn(ga), maddr_to_mfn(ma),
+                              order, p2m_ram_rw);
+
+        if ( rc )
+        {
+            printk("%pd: failed to map initrd: [%#lx,%#lx): %d\n",
+                   d, PFN_DOWN(ga), PFN_DOWN(ga) + (1UL << order), rc);
+
+            /*
+             * Best effort rollback: The range will be replaced anyway by the
+             * subsequent pvh_populate_p2m().
+             */
+            while ( ga > initrd_start )
+            {
+                ga -= PAGE_SIZE << order;
+                ma -= PAGE_SIZE << order;
+                p2m_remove_page(d, gaddr_to_gfn(ga), maddr_to_mfn(ma), order);
+                order_stats[order]--;
+            }
+
+            return rc;
+        }
+
+        order_stats[order]++;
+    }
+
+    return 0;
+}
+
 static bool __init check_load_address(
     const struct domain *d, const struct elf_binary *elf)
 {
@@ -796,9 +840,98 @@ static int __init pvh_place_kernel(
     return 0;
 }
 
+static void __init pvh_place_initrd(
+    const struct boot_domain *bd,
+    const struct elf_binary *elf,
+    struct rangeset *ram,
+    struct hvm_modlist_entry *mod,
+    paddr_t *blob_start,
+    paddr_t *blob_end)
+{
+    struct domain *d = bd->d;
+    struct boot_module *initrd = bd->initrd;
+    struct boot_module try;
+    unsigned long initrd_len =
+        initrd ? initrd->size - initrd->arch.headroom : 0;
+    size_t align = 1UL << L3_PAGETABLE_SHIFT;
+    int rc;
+
+    *blob_start = INVALID_PADDR;
+    *blob_end   = 0;
+
+    if ( !initrd_len )
+        return;
+
+    try = *initrd;
+
+    mod->size = initrd_len;
+
+    /*
+     * As we promise to place below 4G whatever fits there, make a first pass
+     * limiting permitted addresses.  If we can't fit it there, fall back to
+     * placing above 4G.
+     */
+    for ( paddr_t limit = GB(4); ; )
+    {
+        unsigned long size = ROUNDUP(try.size, PAGE_SIZE);
+        paddr_t start;
+
+        if ( IS_ALIGNED(try.start | size, align) &&
+             !pvh_steal_ram(ram, size - try.arch.headroom, align, limit,
+                            blob_start, NULL) )
+            break;
+
+        if ( align == PAGE_SIZE )
+        {
+            if ( !(limit + 1) )
+                return;
+
+            limit = -1;
+            align = 1UL << L3_PAGETABLE_SHIFT;
+            try = *initrd;
+            continue;
+        }
+
+        align >>= PAGETABLE_ORDER;
+
+        start = ROUNDDOWN(try.start + try.arch.headroom, align);
+        if ( start > try.start )
+        {
+            /* Free (part of) and reduce headroom. */
+            try.arch.headroom -= start - try.start;
+            try.size          -= start - try.start;
+            try.start          = start;
+        }
+    }
+
+    /* Free unused headroom, if any. */
+    if ( try.start > initrd->start )
+    {
+        init_domheap_pages(initrd->start, try.start);
+        *initrd = try;
+    }
+
+    rc = pvh_map_initrd(d, initrd, *blob_start, get_order_from_bytes(align));
+    if ( rc )
+    {
+        printk("%pd: failed to map initrd @ %#lx: %d\n", d, *blob_start, rc);
+        return;
+    }
+
+    rc = assign_pages(maddr_to_page(initrd->start),
+                      PFN_UP(initrd->size), d, dom0_memflags);
+    if ( rc )
+        panic("%pd: cannot assign initrd RAM: %d\n", d, rc);
+
+    mod->paddr = *blob_start + initrd->arch.headroom;
+    *blob_end  = *blob_start + initrd->size;
+    initrd->arch.released = true;
+}
+
 static int __init pvh_load_kernel(
     const struct boot_domain *bd,
     struct elf_binary *elf,
+    struct hvm_modlist_entry *mod,
     paddr_t *start_info_addr,
     struct rangeset *ram)
 {
@@ -809,9 +942,8 @@ static int __init pvh_load_kernel(
     size_t cmdline_len = bd->cmdline ? strlen(bd->cmdline) + 1 : 0;
     const char *initrd_cmdline = NULL;
     size_t extra_space;
-    paddr_t last_addr;
+    paddr_t last_addr, initrd_start = 0;
     struct hvm_start_info start_info = { 0 };
-    struct hvm_modlist_entry mod = { 0 };
     struct vcpu *v = d->vcpu[0];
     int rc;
 
@@ -828,15 +960,18 @@ static int __init pvh_load_kernel(
 
     /*
      * Find a RAM region big enough (and that doesn't overlap with the loaded
-     * kernel) in order to load the initrd and the metadata. Note it could be
-     * split into smaller allocations, done as a single region in order to
-     * simplify it.
+     * kernel) in order to load the initrd (if it wasn't mapped directly above)
+     * and the metadata.  Note it could be split into smaller allocations, done
+     * as a single region in order to simplify it.
      */
     extra_space = sizeof(start_info);
 
     if ( initrd )
     {
-        size_t initrd_space = elf_round_up(elf, initrd_len);
+        size_t initrd_space = 0;
+
+        if ( !mod->paddr )
+            initrd_space = elf_round_up(elf, initrd_len);
 
         if ( initrd->arch.cmdline_pa )
         {
@@ -848,7 +983,9 @@ static int __init pvh_load_kernel(
             initrd_space += strlen(initrd_cmdline) + 1;
 
         if ( initrd_space )
-            extra_space += ROUNDUP(initrd_space, PAGE_SIZE) + sizeof(mod);
+            extra_space += ROUNDUP(initrd_space, PAGE_SIZE) + sizeof(*mod);
+        else if ( mod->paddr )
+            extra_space += sizeof(*mod);
         else
             initrd = NULL;
     }
@@ -860,14 +997,16 @@ static int __init pvh_load_kernel(
      * live below 1Gb (mapped by the first L3 entry of the direct map).  32-bit
      * Linux may map more, but defaults to mapping only 1Gb.
      */
-    if ( pvh_steal_ram(ram, PAGE_ALIGN(extra_space), PAGE_SIZE, GB(1),
-                       &last_addr, NULL) )
+    rc = pvh_steal_ram(ram, PAGE_ALIGN(extra_space), PAGE_SIZE, GB(1),
+                       &last_addr, NULL);
+    if ( rc )
     {
-        printk("Unable to find a memory region to load initrd and metadata\n");
-        return -ENOMEM;
+        printk("%pd: unable to find a memory region to %s metadata: %d\n",
+               d, mod->paddr ? "put" : "load initrd and", rc);
+        return rc;
     }
 
-    if ( initrd != NULL )
+    if ( initrd && !mod->paddr )
     {
         rc = hvm_copy_to_guest_phys(last_addr,
                                     __va(initrd->start + initrd->arch.headroom),
@@ -878,28 +1017,29 @@ static int __init pvh_load_kernel(
             return rc;
         }
 
-        mod.paddr = last_addr;
-        mod.size = initrd_len;
+        initrd_start = last_addr;
         last_addr += elf_round_up(elf, initrd_len);
-        if ( initrd_cmdline )
-        {
-            size_t len = strlen(initrd_cmdline) + 1;
-
-            rc = hvm_copy_to_guest_phys(last_addr, initrd_cmdline, len, v);
-            if ( rc )
-            {
-                printk("Unable to copy module command line\n");
-                return rc;
-            }
-            mod.cmdline_paddr = last_addr;
-            last_addr += len;
-        }
-        last_addr = ROUNDUP(last_addr, PAGE_SIZE);
     }
 
     /* Free temporary buffers. */
     free_boot_modules();
 
+    if ( initrd_cmdline )
+    {
+        size_t len = strlen(initrd_cmdline) + 1;
+
+        rc = hvm_copy_to_guest_phys(last_addr, initrd_cmdline, len, v);
+        if ( rc )
+        {
+            printk("%pd: unable to copy module command line\n", d);
+            return rc;
+        }
+        mod->cmdline_paddr = last_addr;
+        last_addr = ROUNDUP(last_addr + len, PAGE_SIZE);
+    }
+    else if ( initrd && !mod->paddr )
+        last_addr = ROUNDUP(last_addr, PAGE_SIZE);
+
     rc = hvm_copy_to_guest_phys(last_addr, bd->cmdline, cmdline_len, v);
     if ( rc )
     {
@@ -917,7 +1057,10 @@ static int __init pvh_load_kernel(
 
     if ( initrd != NULL )
     {
-        rc = hvm_copy_to_guest_phys(last_addr, &mod, sizeof(mod), v);
+        if ( !mod->paddr )
+            mod->paddr = initrd_start;
+
+        rc = hvm_copy_to_guest_phys(last_addr, mod, sizeof(*mod), v);
         if ( rc )
         {
             printk("Unable to copy guest modules\n");
@@ -925,7 +1068,7 @@ static int __init pvh_load_kernel(
         }
         start_info.modlist_paddr = last_addr;
         start_info.nr_modules = 1;
-        last_addr += sizeof(mod);
+        last_addr += sizeof(*mod);
     }
 
     start_info.magic = XEN_HVM_START_MAGIC_VALUE;
@@ -1508,6 +1651,8 @@ int __init dom0_construct_pvh(const stru
     struct rangeset *ram;
     struct acpi_info acpi = {};
     struct vmx_info vmx = {};
+    struct hvm_modlist_entry initrd = {};
+    paddr_t blob_start, blob_end;
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
@@ -1592,7 +1737,10 @@ int __init dom0_construct_pvh(const stru
             return rc;
     }
 
-    rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820);
+    pvh_place_initrd(bd, &elf, ram, &initrd, &blob_start, &blob_end);
+
+    rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820,
+                          PFN_DOWN(blob_start), PFN_UP(blob_end));
     if ( rc )
     {
         printk("Failed to setup Dom0 physical memory map\n");
@@ -1601,7 +1749,7 @@ int __init dom0_construct_pvh(const stru
 
     xvfree(orig_e820);
 
-    rc = pvh_load_kernel(bd, &elf, &start_info, ram);
+    rc = pvh_load_kernel(bd, &elf, &initrd, &start_info, ram);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:36:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:36:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474721.1681722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdi-0000z8-Kb; Thu, 05 Nov 2026 13:36:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474721.1681722; Thu, 05 Nov 2026 13:36:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxdi-0000yz-Hf; Thu, 05 Nov 2026 13:36:26 +0000
Received: by outflank-mailman (input) for mailman id 1474721;
 Thu, 05 Nov 2026 13:36:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxdh-0000xK-N6
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:36:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxdh-000ODP-3o
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:36:25 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8651-bab6-0a2a0a5309dd-0a2a4503a2f6-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:25 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8658-fae8-0a2a45030019-d155dd2dd5e2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:25 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-48e47347279so1118731f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:36:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fed45d71dsm10037875f8f.36.2026.11.05.05.36.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:36:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885784; x=1794490584; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=bROrBCXMpePIikYQv5ywyJaqpPy7JdaGnAckdlts9Cc=;
        b=ebJrcgiKWhjKbUC4Sj4ggy0pwyWITZUgq2vc3GuBD21c8VWSkMheechn2RcO1u7icn
         JXGME/OTpbmT4rqTDJXM3FA464CTWu2oECpE2FSUCGWzO0IVdzLC+HT9kOGe6AnucCfY
         husQwFMLetLSf1aaLIXC7npSjqaiUUGNrbEgRFwsfxUKQ03o5G9u4IGI2Tmb4EXKsxSX
         VQhIKQQTbQ9RAz/ixgrH/vWS+VnXCpx3mX+PyacFaUX49oH0FZwLD4XX2tqWZD66oiAe
         b04UbGa8/E/zBQI80Tc7PJtkw4TNpNJeXLrin3EARjkgjQuS4UfafFKom1b4ue0lYRyN
         HB0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885784; x=1794490584;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=bROrBCXMpePIikYQv5ywyJaqpPy7JdaGnAckdlts9Cc=;
        b=IXf417AUguGiwvzx3lvPNvZQaoAym0tH1KR3U7o0X526RaxP3m735VHKz0hMsscpvN
         gemvZ7uDPD6fshqo4zkUUdg/LYF7KO56HbTn042DmRSCP3n/up4HDfrKbS36iFP2F2tb
         0vomc/xfVG18fd4lGnjNU+Hwkd45D2BRpsJxLWuasDF7yIwhfd8J866fBIy3ha+mpOpB
         HflOB0C/w4Tcz94UT8OfN9PGVMJ35LgoSGa0VVVh3DaB83hRqwCrb/KDVxr6zX5/uhBh
         fArw9uQJiVkog7qR+I6w6EG8uxYWhXy9nW2KMaFcx3oKXSi0pyFOXgWsxtbTKDtBF4FX
         fLvQ==
X-Gm-Message-State: APuU4Z+PZp8omQhdZFemq4P6/dSCY/YrjXTRt1hcFHwt6wcea7+8I5W2
	PXIO2QxzSIJyyulq97JxDikmdjEmzhAFjhMkhMn85oS4vSR2AHfIWRs7SkbBa3pH27g6gewfijj
	m8WCzgA==
X-Gm-Gg: AYBFou3eSk+/YWISYwbVtGxamhxW8iId+FebFPUY7q2yTWoUsyHCaiYdpzg6NCdToBi
	rJ4l2Ivm/uoMI18dXI32HecxJqBjHDw/sM45XqWa2UmcDDH8uySzsX87d86mxsBwgyFgER3Cdzu
	iEWeO4/G8qnPWEyfTgCn9TIS4D/Ce3sT3uqTgjjwqbGfVKjQLZhUVrMlJRhccbqOt4MCLuotbBE
	HC3JubRV/Ja+mm9G2NAW0+e8TQQvKxB/oufCW3x3TKGzh1LDvAdeOVgDLBFZtPefIvPJK2Qa/yN
	fi50gWG1wNiIaHqbR7xc6TaRIXCte2nvL8DqxIw8vE0ahWxp3jG/ZngLshfnF1Z1Hdn8LvRlqvs
	pvhcl3qhdHSHzS0wxnaA2fpJ+MIzAusb5EHVLSsVqymfoicQ1nElIfbiVNhtifrN5gzmZTXhqjy
	z2Mk3B5Dsm3r/a3CiLH84fDKGS6YVuZ414XwQ4KxcBghHZ/QuYC0O6ae32pZcAon1mpGABFEpeq
	z6rZgrnL6QOhWogOwX2GkM0RtA/scbBFWAe0U9EaH75GK+iIsI+TeTIVol07rlmgRRBC3ahGkg/
	dVl/dxLDsQLNv4Ctgyl1X6XfgecPY/WYq2SeOgYZtBvshZbmfFGuHKzDljPKr55JpNYaplrXwcP
	m0R1DLTaBFrtHwPfLPHLULMB2yFOPyKJPFOuYuA==
X-Received: by 2002:a05:6000:4a16:b0:48d:f9dd:e3df with SMTP id ffacd0b85a97d-48e6e2fab79mr41873743f8f.18.1793885784510;
        Thu, 05 Nov 2026 05:36:24 -0800 (PST)
Message-ID: <bde988ea-35c9-4876-9c67-af505f794e8f@suse.com>
Date: Thu, 5 Nov 2026 14:36:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 11/14] x86/PVH: prefer smaller E820 regions for stealing
 from
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793885785-752854E9-B6462698/10/78276251493
X-purgate-type: spam
X-purgate-size: 1867

Nibbling from the end of large regions tends to split full 2Mb (or even
full 1Gb) ranges, which Dom0 may otherwise be able to use superpage
mappings for (when, like Linux, it e.g. has a direct-map).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
On one of my test systems this doesn't work as neatly anymore as it did
before. In v1, since the kernel range wasn't removed from the candidate
set, the (relatively large) E820 region covering it wasn't used for the
small ACPI ranges we need; instead a range of about 2.5Mb size next to
the host's ACPI data was the best candidate there. Now, with the kernel
starting at 2Mb, the 1Mb range [1Mb,2Mb) is the smallest candidate, which
is a little unusual a place to put ACPI data.
---
v2: Re-do from scratch, due to changes earlier in the series.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -184,8 +184,9 @@ static int __init pvh_populate_memory_ra
 }
 
 struct steal_info {
-    unsigned long size, align;
+    unsigned long size, align, region_size;
     paddr_t addr, end;
+    bool nosteal;
 };
 
 static int cf_check __init find_ram(
@@ -197,10 +198,12 @@ static int cf_check __init find_ram(
     {
         paddr_t addr = (e + 1 - info->size) & ~(info->align - 1);
 
-        if ( addr >= s )
+        if ( addr >= s &&
+             (info->nosteal || e - s <= info->region_size) )
         {
             info->addr = addr;
             info->end = e;
+            info->region_size = e - s;
         }
     }
 
@@ -219,7 +222,9 @@ static int __init pvh_steal_ram(struct r
     struct steal_info info = {
         .size = size,
         .align = align ?: 1,
+        .region_size = -1,
         .addr = INVALID_PADDR,
+        .nosteal = !end,
     };
 
     rangeset_report_ranges(ram, MB(1), limit - 1, find_ram, &info);



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:36:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:36:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474731.1681731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxe3-0001YA-RL; Thu, 05 Nov 2026 13:36:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474731.1681731; Thu, 05 Nov 2026 13:36:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxe3-0001Y2-OI; Thu, 05 Nov 2026 13:36:47 +0000
Received: by outflank-mailman (input) for mailman id 1474731;
 Thu, 05 Nov 2026 13:36:46 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxe1-0001VL-V2
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:36:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxe1-003y6U-Bl
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:36:45 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8661-e002-0a2a0a5209dd-0a2a450394d4-48
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:45 +0100
Received: from [209.85.221.54] (helo=mail-wr1-f54.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec866c-fae8-0a2a45030019-d155dd36d4c2-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:36:44 +0100
Received: by mail-wr1-f54.google.com with SMTP id
 ffacd0b85a97d-48e00eee27dso1085478f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:36:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b572bba207sm63028385e9.10.2026.11.05.05.36.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:36:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885804; x=1794490604; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=FfJeD3ix+Q2sHIalbTxwbncwzv13LvQuwahnvUzAa/k=;
        b=C5TEFs1GLwTS+HFu2Z5eg2A1sNv6PAmYq15EeRY79gk3624nvjg27umuv7Snb1ZWtu
         aLHsKfX0ykZKmN9IICrtdi1k60pmlUX0EjSAwbFiXVp2P+qqY1fioKnDook7O8yPXT/J
         ouqp5QpVXzBXPRal0BBz+ceeeXjdItCFHOWLapqljcRSp/X0800dGf8GyEAEECG19+Bq
         /w3wGhcUvRGtaSrlcCtHD3riKJDawIe6tqQCPkqs1lZmAKxxBQchptY2HkU4xhYKy2xl
         5FNv47PxdJC0dbD65zdbfLDWafz+4Sxcj7oK9XVrvsgPkeIJVcZVK3QaeZRWV9mGuj/a
         Mr8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885804; x=1794490604;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=FfJeD3ix+Q2sHIalbTxwbncwzv13LvQuwahnvUzAa/k=;
        b=X6Lffo/BZYAhA/TAi/UcB7eiP/rCPUElP5YWjqD/SkBRpap7V+z1EFlYTupW3r7xFG
         1FUfL3LfkKIgKFVyYPiGgYqAcT/qjCcXk4vQOfpKlS/ARe+hJesLDM46cVCG4SiItbQI
         ySOl5hwyOXuIktMReKa5XnON+a5G4dTj7U8QEgbyhyhqqE0uPcHxBjKqK72P0qyVgV5M
         oVUNkVYNLMlVaWg5Hb43+Ql5f4kz1G/oGbRXnDkjA1OhNFdhrPnmY6dqZcjgmLbdLVIV
         cr9DgWaVayV5zjEWMk8XsZb5F9I1U1C8mFGeVX4BTcFILh8cBfzgaL2qNjBokjddxII8
         ODJg==
X-Gm-Message-State: APuU4Z/NyYM6DSo5oHkYi3XvLaWwdtkE4ktAWmTQaLZrZ8mQilK1hYc+
	/d4tXtu5N/IVIkNUxbysyk5Qe40eWQi+mOihYr/rS7IjMbr9MLYYBQ5lpyqCY1dFTzCLrFy/BnG
	PlKwz8g==
X-Gm-Gg: AYBFou0fkZjRjk4rORMP80fE0+4MxiF4+xWplXtQlIzVlWAxV0z30c+8VzCXBOuVEP7
	x5TZ5HbvvHU7yTRA+SmdIUpkVI19Y8zJuSsxq5F65r2QoscVpIU7Cbspr1r2sf79uZsQtWcHYRe
	ErOnoidn+cq7PsmsiQuMTAJcsaxiVQsPzSGq4m66cjLDQtzekJpRNBBf9hc9canx3ATthF/BQKe
	ogseuJ9BC1QEq9rdDG2w8y0L1bDgli248ygsdaIT1Che4Js0Ct1fLTuHtnZ5sxfKtV73kab/4JM
	HgHOYrPzQcsZZM3oSxiogwt+zEvkzcYRoYIya6vj00ZswZDFIc1aBiwAaJzTz6ukEo/8Qii1JqH
	cIqWf62pCxjyt+Z9tKOqU1zfgxB19LPqEtYjK32NHrKW9D4ClpxoTLJfCNpLmuONhEJ/VcqYrYy
	vdF5vkQbZRnzDY5d0HmdE1F+ybuCNuluzH1pjXFSP5LJJHH+lnknZwr7EMXvfm6mjOW1UCCEPbM
	DCFK9uY+j2kFG3FCSXxHRttEIkFOrsEw5YyrxPcUVjxro231nTu3MZfofUmmOR3Rsc+62miZzZ4
	v/W5vJzH8xJ4SwDzo4YiKORGuvR08XMOykokj1/tefMoTXZs6CDVRvZcIGSzT9PEuoNuAkqsmLg
	mVYO0U6kTuRDBtOA=
X-Received: by 2002:a05:600c:1f93:b0:4a5:87b3:ddc1 with SMTP id 5b1f17b1804b1-4ac180f1ec7mr442644015e9.13.1793885804326;
        Thu, 05 Nov 2026 05:36:44 -0800 (PST)
Message-ID: <67c62b56-e18d-464b-b2f0-0b3b4c184594@suse.com>
Date: Thu, 5 Nov 2026 14:36:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 12/14] x86/PVH: log Dom0's E820 map earlier
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793885804-6C6DE4E9-A17A8F5A/10/78276251493
X-purgate-type: spam
X-purgate-size: 1900

Do this as soon as it's final. For debug builds also mark it final, with
assertions put in place to make sure it won't further be altered. (For a
release build such further altering isn't the end of the world normally,
so the situation is left alone there.)

Switch to using %pd while moving the code up.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger@xenproject.rog>
---
v2: Set e820_finalized unconditionally. Re-base over changes earlier in
    the series.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -46,6 +46,9 @@
  */
 #define HVM_VM86_TSS_SIZE 265
 
+/* Marker set once Dom0's E820 isn't supposed to change anymore */
+static bool __initdata e820_finalized;
+
 static unsigned int __initdata acpi_intr_overrides;
 static struct acpi_madt_interrupt_override __initdata *intsrcovr;
 
@@ -248,6 +251,8 @@ static int __init pvh_add_mem_range(stru
     struct e820entry *map;
     unsigned int i;
 
+    ASSERT(!e820_finalized);
+
     for ( i = 0; i < d->arch.nr_e820; i++ )
     {
         uint64_t rs = d->arch.e820[i].addr;
@@ -1744,6 +1749,14 @@ int __init dom0_construct_pvh(const stru
 
     pvh_place_initrd(bd, &elf, ram, &initrd, &blob_start, &blob_end);
 
+    if ( opt_dom0_verbose )
+    {
+        printk("%pd memory map:\n", d);
+        print_e820_memory_map(d->arch.e820, d->arch.nr_e820);
+    }
+
+    e820_finalized = true;
+
     rc = pvh_populate_p2m(d, orig_e820, nr_orig_e820,
                           PFN_DOWN(blob_start), PFN_UP(blob_end));
     if ( rc )
@@ -1781,12 +1794,6 @@ int __init dom0_construct_pvh(const stru
     if ( rc )
         return rc;
 
-    if ( opt_dom0_verbose )
-    {
-        printk("Dom%u memory map:\n", d->domain_id);
-        print_e820_memory_map(d->arch.e820, d->arch.nr_e820);
-    }
-
     return 0;
 }
 



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:37:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:37:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474740.1681740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxeY-00028I-2b; Thu, 05 Nov 2026 13:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474740.1681740; Thu, 05 Nov 2026 13:37:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxeX-00028A-V7; Thu, 05 Nov 2026 13:37:17 +0000
Received: by outflank-mailman (input) for mailman id 1474740;
 Thu, 05 Nov 2026 13:37:16 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxeW-00026V-F8
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:37:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxeV-0033DJ-Rt
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:37:15 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8683-2eae-0a2a0a5409dd-0a2a4509bd2a-36
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:37:15 +0100
Received: from [209.85.208.44] (helo=mail-ed1-f44.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec868b-be1a-0a2a45090019-d155d02cb147-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:37:15 +0100
Received: by mail-ed1-f44.google.com with SMTP id
 4fb4d7f45d1cf-6b1aa2848d2so2996564a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:37:15 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e4422d1sm175562066b.39.2026.11.05.05.37.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:37:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885835; x=1794490635; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=imShRlEMCMBWZ/mu1fyOE5mw0Ai2dYu4aKRjt4i+5QA=;
        b=FooMUcObf5qvF2Wn72ZyvLboeGYuDHmAlfnaOTEgegrH1wGdPE/FTzZG9VVVymxZyR
         AJbKVKUz5fiMBgF/G9sweiijuAAzwan77AvEZVz9sB1UpGFuZbBH1HeRyBEa9q5x7cXL
         OnGqcsR2jL8wIdnyYXDQCC8eIvVBu91A6vutBDS8rQUMCgN85qm6JZAmPSCcsSQrZn3O
         vyGG7iIby8kVcRHRSyIkElLWOAtzDIFvHHR9bwIWBH/RwFFwuAfVhkb6VhL3ec2Yqjzx
         2HK3nIIalukZc/AZBoSPHpH3RcCeL5Gl/Bm7C6s3hgLluySeqr4rR38Judh24xLQYmQQ
         oY+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885835; x=1794490635;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=imShRlEMCMBWZ/mu1fyOE5mw0Ai2dYu4aKRjt4i+5QA=;
        b=pGx1Vu4FFcHHXwnLKTCNUIpQVNo/BhMCH5RMoarvvqTXD1ksCTr7RPIuMmFn8PZnuK
         DsbwOHrouiu7jG/bjGDvQHkgjPM5v3tvdXUKgvfXdbYQagDfWJ3UnDCnDRdqSL05dtgt
         PTt6pOudC7EuUoJERls04VFxX7/ywUMjU4CvuG1pltBycAJgUeX7vDvYZmaIwclmGsPB
         N/mKRban+t0pao5zE72+d/BmrshZIbUp4XgEhM+CizrjvE6IVFVVBDZte5fXExc+Feix
         KkXk99jKNk05bhPbyIET3TDZoBEQPZHFUPM9M/Dd68LuXdZvDKoK2muwgzMsTlElDoH+
         +VGw==
X-Gm-Message-State: APuU4Z9+SJDpqGxPBwGIJPRFHD6AEKc+vkeLzk2b63nJxeJ5rRmN/iZu
	Wg3MKc8iQczlsN4zD/0YxFXA0+0Makq5vOKcuo5GARwVDP1u6YP1cE0RZ/UHP21QxlCDqh5+pd5
	19K++8g==
X-Gm-Gg: AYBFou38+qcX0rW1OZ1K1X/uMwpG0eNjRQXhnOY6cjj0KmT3tZxPY4lRpmCcXVa9xCS
	6DgLd6Z8J0EkL0RjYGkki+p/7mKgnaxCqzlk5x2LfCDL0O4EllD/ycvgpmcjRt695GMIpKFV3nE
	utJryYSb4s3Drmc1qa3LetPztIw6uEWn32KG2buBLw5d/xqhwa+40P50OuBdp7vPFq8rL+6AYeQ
	TDIIj0muXqUJdVNRXJWteiLkGzdwp23IG9O38KEEdCDAsvgmWmP9nPP0eMFnA07psA0W9cUoIod
	knaIvxeAqIXv+KjgDDcKMtzChmJk8AFzUcAm/FJRDwxEK7aVCNBqsgYDvfVuuWfmIBSy4NCQLPx
	kis+yzaan6T+95mXMsy4jGyrqs2w+BDJ5l+HDMYzjZ415tOC5m1MSHDlgUW3V9vjABBpZMIstpz
	OrsW1ES7eAf2EfamTBCGUw5YWKWKBNwhg7TMcJfjNh+t8PhUJBSrQeMseLuIkrXk5swHFZusr3H
	ne2VjfPV27s5m3aEpEj0Eyi+x9Gbw00LZfVmo+EH9hcf03QhCqGrtV/eJMAkWD0T3JCutWTjM30
	JBjZS6l3Rmvy4ogMDmp25J2Whj5HA+A/pSxfabLpyl8lcr/Ep6SyKOaTs5wVtPU+M675rfEo10R
	dYuP+wXyHnZwIVrAn
X-Received: by 2002:a17:906:9f92:b0:c41:5970:2360 with SMTP id a640c23a62f3a-c4ca7ad1d1fmr1645182966b.41.1793885835031;
        Thu, 05 Nov 2026 05:37:15 -0800 (PST)
Message-ID: <f6c1ee65-08a6-43fd-903e-67b02948773b@suse.com>
Date: Thu, 5 Nov 2026 14:37:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 13/14] x86/PVH: simplify writing of Dom0's RSDP
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793885835-BFED6034-63BEEFB0/10/78276251493
X-purgate-type: spam
X-purgate-size: 2871

Now that we establish where the RSDP is to live before actually loading
the kernel (and writing start-info there) we can simply hand the pointer
there, eliminating the need for the (fragile) separate write to the field
out of pvh_setup_acpi().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger@xenproject.org>
---
Alternatively we could move start_info to the top-level function, have
pvh_load_kernel() and pvh_setup_acpi() fill what need filling, and do
the write from the top-level function. Yet it looks to me as if this was
more churn for little extra gain.
---
v2: Re-base over changes earlier in the series.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -943,7 +943,8 @@ static int __init pvh_load_kernel(
     struct elf_binary *elf,
     struct hvm_modlist_entry *mod,
     paddr_t *start_info_addr,
-    struct rangeset *ram)
+    struct rangeset *ram,
+    paddr_t rsdp)
 {
     struct domain *d = bd->d;
     struct boot_module *initrd = bd->initrd;
@@ -1083,6 +1084,7 @@ static int __init pvh_load_kernel(
 
     start_info.magic = XEN_HVM_START_MAGIC_VALUE;
     start_info.flags = SIF_PRIVILEGED | SIF_INITDOMAIN;
+    start_info.rsdp_paddr = rsdp;
     rc = hvm_copy_to_guest_phys(last_addr, &start_info, sizeof(start_info), v);
     if ( rc )
     {
@@ -1563,10 +1565,7 @@ static int __init pvh_place_acpi(
     return 0;
 }
 
-static int __init pvh_setup_acpi(
-    struct domain *d,
-    struct acpi_info *info,
-    paddr_t start_info)
+static int __init pvh_setup_acpi(struct domain *d, struct acpi_info *info)
 {
     int rc;
     struct acpi_table_rsdp *native_rsdp, rsdp = {
@@ -1618,18 +1617,6 @@ static int __init pvh_setup_acpi(
         return rc;
     }
 
-    /* Copy RSDP address to start_info. */
-    rc = hvm_copy_to_guest_phys(start_info +
-                                offsetof(struct hvm_start_info, rsdp_paddr),
-                                &info->rsdp,
-                                sizeof_field(struct hvm_start_info, rsdp_paddr),
-                                d->vcpu[0]);
-    if ( rc )
-    {
-        printk("Unable to copy RSDP address to start info\n");
-        return rc;
-    }
-
     return 0;
 }
 
@@ -1767,7 +1754,7 @@ int __init dom0_construct_pvh(const stru
 
     xvfree(orig_e820);
 
-    rc = pvh_load_kernel(bd, &elf, &initrd, &start_info, ram);
+    rc = pvh_load_kernel(bd, &elf, &initrd, &start_info, ram, acpi.rsdp);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
@@ -1783,7 +1770,7 @@ int __init dom0_construct_pvh(const stru
         return rc;
     }
 
-    rc = pvh_setup_acpi(d, &acpi, start_info);
+    rc = pvh_setup_acpi(d, &acpi);
     if ( rc )
     {
         printk("Failed to setup Dom0 ACPI tables: %d\n", rc);



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 13:37:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 13:37:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474745.1681749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxes-0002a2-9X; Thu, 05 Nov 2026 13:37:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474745.1681749; Thu, 05 Nov 2026 13:37:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOxes-0002Zu-6Q; Thu, 05 Nov 2026 13:37:38 +0000
Received: by outflank-mailman (input) for mailman id 1474745;
 Thu, 05 Nov 2026 13:37:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOxeq-0002Uh-Iw
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 13:37:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOxep-009r25-VL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:37:35 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec8693-8faa-0a2a0a5109dd-0a2a45098b76-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:37:35 +0100
Received: from [209.85.218.42] (helo=mail-ej1-f42.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aec869f-be1a-0a2a45090019-d155da2addfa-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 14:37:35 +0100
Received: by mail-ej1-f42.google.com with SMTP id
 a640c23a62f3a-c4301e334ceso156481066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 05:37:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d0e140fa1sm175042366b.7.2026.11.05.05.37.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 05:37:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793885855; x=1794490655; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=d2sVV/P+QXxHkGFl11/0QW1t/tIUxIiQ/ud1zR58BTo=;
        b=JAPmU/8QmXClX04VDJIOf3Gc11Dw56l0PzdkPwXK55tU7a8TKY/gArItxyPDQMrL8R
         7OV1Y+jUUKQRiy5JRIDVpuY9ZtVnfhOGOWEdPpVDTTSI43wyOyl/3EtuvbVBt3b0BlJz
         Vz35bgl7T1ZHHd1cjUiKLjDsbO1yxu35u/foaKRt6ufx8gqjhCafUM2uMg7ROo+RV+Jg
         TkKFgdMsPXQK+R/wt58atgmVjU3FYoAhnP6lb6pZRTVZEEaXiPiFGhkuQhAytIXXiLDI
         mvevYgCWYUArkNkBeEdUr684Zs7TNExsVjCOw/kgVT91wFiDlccKIQYMmzLZMujzLN4d
         mDtA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793885855; x=1794490655;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=d2sVV/P+QXxHkGFl11/0QW1t/tIUxIiQ/ud1zR58BTo=;
        b=ayYeyaBaBSYH7avriiFXRNVd3seM8+XNKhuV161BOPWsjIbpDtAGgw4s2SEz3B3iFn
         7Qeb/7rNJYa3sMIwrIPJRrAnUlSZX7XciwZGz2qT1FrwB6Df+nZXlGTl2A7NIZ+awr4c
         gmva6LBv5vcBGiYHoGED8GNi81P26U3gYE3GFO3X57+F1DDjn0ftmPjNKzWAaCw679/C
         YroneyKNVne/d0ZhlsAl3Y/+1RYCS5f0uGphptEMIn53amzJlXFOHoU7MvlRMRkmcLwn
         h79+tz25+nJOD1r+pldzY8y9BGrSPEiTHnMFWdliazKlope64Wql2EDnt++J5VE3Q2qK
         /Zjg==
X-Gm-Message-State: APuU4Z8CT9zYoE+ilDX1dHVvn8P4jlXNhWcpNbWMQD1v3VaJKg7TlT2M
	FlZ5hTQcZ6/gtDZAjfNfVrP92DymJZ1V3t2Eb4qlBYhBjaDp5wD8j6/nYL5saC435os/AE2bG+e
	OGoleHA==
X-Gm-Gg: AYBFou0SoCrSEklJOuu347/usnEIDRtJlM9yl48kBSNeP3xKQrGrHcCzX2OsEIEJgCK
	ULcif38IbQCAkvm0Wz88o9MQ/vX6CoJtbM5q+Smw1XQCMyrfJA6FhnSyl5HKHTQh68Hxbl+G+oN
	O0jyLYCHUrg3vRcNs4+H/1R/DyXtd+PdvQ9Q6WzjlK8L/IDzu1O0rIpFCVEXb9dvTYT6ODd6Oke
	cS4NOnieNyfGza9rgiyDQkKJdTy1geCCQIZByODrSb19zxAq1RQp1NJtJyDZUUphrelSOMJR78f
	JDMcNYTsJ8Io0AD2QIQt8K+B9TiEkXvfEYDWBtplWfaTLHogytG55VpdtzwN5NCgM5DJP+IPTFg
	jJTQtUsSJEi3rUG7lSEvn3BfkfIk2YXh3g2GH/8KoBHTbAZIqhdtn/BMFYr3YpyWkMKL1QlMuMQ
	u2rVOhx3v0wcvxp0JQ0KzaWtwgux7TDRV44Zlw8sNciuKwtLsWhFd+dMOxYBD6+q05tJwc/3mBr
	rQ503DM6SA/cabGfi8u0/PVM8g573r05uTdohbmWU3eF551xD78NPVYONQNz4UVIGBnnkCdoxq1
	HZYpF3tqwDHM4bqi7iSGMeoErVBdO5EH9yeUunnLFNKDlZ44x0j58oWsBrXfXeuYbu5OdbfU2vx
	5dc3ACh8VQ6rs+pc=
X-Received: by 2002:a17:907:1c8e:b0:c49:c76f:dad4 with SMTP id a640c23a62f3a-c4ca7a6e69fmr1735171766b.31.1793885855282;
        Thu, 05 Nov 2026 05:37:35 -0800 (PST)
Message-ID: <96282903-34bf-4395-9a1f-a9828ab7ac3e@suse.com>
Date: Thu, 5 Nov 2026 14:37:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 14/14] x86/PVH: check Dom0 start_info for truncation;
 adjust entrypoint type
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1f88104-14ae-400c-b950-163d5a7e552b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793885855-BF4D3034-40E60711/10/78276251493
X-purgate-type: spam
X-purgate-size: 2204

While for start_info we now (supposedly) guarantee that it lives below
4Gb, check it nevertheless to play/stay safe.

For the entrypoint address the situation is different: libelf already
hands us a 32-bit quantity; if there was truncation there, it would be
inside libelf (when extracting the value from the ELF notes). Reflect
the 32-bit-ness in types used.

Requested-by: Roger Pau Monné <roger@xenproject.rog>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -798,7 +798,7 @@ static bool __init check_and_adjust_load
 static int __init pvh_place_kernel(
     const struct boot_domain *bd,
     struct elf_binary *elf,
-    paddr_t *entry)
+    uint32_t *entry)
 {
     struct domain *d = bd->d;
     struct boot_module *image = bd->kernel;
@@ -1097,7 +1097,7 @@ static int __init pvh_load_kernel(
     return 0;
 }
 
-static int __init pvh_setup_cpus(struct domain *d, paddr_t entry,
+static int __init pvh_setup_cpus(struct domain *d, uint32_t entry,
                                  paddr_t start_info)
 {
     struct vcpu *v = d->vcpu[0];
@@ -1123,6 +1123,13 @@ static int __init pvh_setup_cpus(struct
         .cpu_regs.x86_32.tr_ar = 0x8b,
     };
 
+    if ( cpu_ctx.cpu_regs.x86_32.ebx != start_info )
+    {
+        printk("%pd: start-info address truncation: %p)\n",
+               d, _p(start_info));
+        return -ERANGE;
+    }
+
     sched_setup_dom0_vcpus(d);
 
     rc = arch_set_info_hvm_guest(v, &cpu_ctx);
@@ -1640,7 +1647,7 @@ static void __init pvh_setup_mmcfg(struc
 
 int __init dom0_construct_pvh(const struct boot_domain *bd)
 {
-    paddr_t entry, start_info;
+    uint32_t entry;
     struct domain *d = bd->d;
     struct elf_binary elf;
     struct e820entry *orig_e820;
@@ -1649,7 +1656,7 @@ int __init dom0_construct_pvh(const stru
     struct acpi_info acpi = {};
     struct vmx_info vmx = {};
     struct hvm_modlist_entry initrd = {};
-    paddr_t blob_start, blob_end;
+    paddr_t start_info, blob_start, blob_end;
     int rc;
 
     printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 14:16:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 14:16:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474824.1681757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOyGb-0001N5-5I; Thu, 05 Nov 2026 14:16:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474824.1681757; Thu, 05 Nov 2026 14:16:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOyGb-0001My-2J; Thu, 05 Nov 2026 14:16:37 +0000
Received: by outflank-mailman (input) for mailman id 1474824;
 Thu, 05 Nov 2026 14:16:36 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ross.lagerwall@citrix.com>) id 1xOyGZ-0001Ms-Qs
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:16:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOyGZ-00EDVv-7G
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:16:35 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aec8fa6-8faa-0a2a0a5109dd-0a2a4506a8f8-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:16:30 +0100
Received: from [52.101.53.46]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aec8fbc-195a-0a2a45060019-3465352eeb17-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:16:29 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by EA8PPF9710463C4.namprd03.prod.outlook.com
 (2603:10b6:30f:fff5::853) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 14:16:27 +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.0592.009; Thu, 5 Nov 2026
 14:16:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=dlzCi8NUdH+OXjVmYVARt8AXDe8nrFdN+MPWrpVfxwZLqANKhxVEMUsvjtpeosTE25l19+pqpxqtjOu4h0aX7k6gwG9iDwiKS+DPxerRqbHFuUfO0n5aHPDVCemeRbsBJDXZFDsq/pv+9K0cc9eObxorD/frOg0fYIIDpAi2vK4KCSMg0wi7vPiu6/gqp6b7ps65TlPzPOKTOJKct0k3BDrz8xxg1cw0slSbaVERete8csQsDjyxR3tUuiQr/11FcerLXAuXoCAqjdZ8IhNjWxXGab5z2+DzHbaEUv+iMnfCqJrRH+QoVCJaC5n+X4C6OxWc5NFhMDaeYx1iZGst2g==
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=aNbPkS+RVjtOk6zNKMPf+QvaAfKMZgs4eSqKEMH8Cec=;
 b=DEs4/Im+xFW2viU9a3FZkEKzssAesZpmWU3MVw9GjT0FL96wo20mXubSE0ngq68CxmMdCE8AZ281MZrhscoc0Im+mOl+2Q49EOm0LD43xiJNxJFk2mxgEJU4kEF/czPRMqnDQDpWv0GFwu16SWC7Brj6YZYSAXVQmw+WHm+nSJqfqNrmXoo+/kDQTCo2p9wR4bUkrwIV1SHQEJsgnuEyozaBmYVO2cSCuj23dOiRwNH9Bq3cmM/84gx5T89k4Ub9TAoz7Vx79kAcbrf4BVgTqvvhXonk7OeRlucfMSuedyS70f7Q6FURC47u6CX48XCj+MaMU6A8cvNDLklrPH9uuw==
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=aNbPkS+RVjtOk6zNKMPf+QvaAfKMZgs4eSqKEMH8Cec=;
 b=Fcf7CM5SiqUJ4PRRoqH3+JqYdSmGPO9Uv4Zwcw1lkm+34eTybeRcr+jPe37WwjcFz4FxICy5w9CPiLuZKQlBBCk8zRlEigItZrY0klgB2LfGJrYMPLtfY3lUiNgzH8eJuwtWYLRGP0c+K/LXE2lO0/obUBH86yAyExJlMdFZnM4=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e3105225-de64-49e1-9254-45917ad5bb13@citrix.com>
Date: Thu, 5 Nov 2026 14:16:21 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen
 intercepts L1
To: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>,
 xen-devel@lists.xenproject.org
Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger@xenproject.org,
 jason.andryuk@amd.com, teddy.astie@vates.tech
References: <93437f7cd832790b61c520332cbfa432c75ad8fb.1793723920.git.abdelkareem.abdelsaamad@citrix.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <93437f7cd832790b61c520332cbfa432c75ad8fb.1793723920.git.abdelkareem.abdelsaamad@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P265CA0132.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c6::13) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|EA8PPF9710463C4:EE_
X-MS-Office365-Filtering-Correlation-Id: bb55bdfb-f5a1-4317-7c69-08df3b4760e7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|366016|1800799024|376014|261026121527099003|260925022911599003|260925021911599003|260925021311599003|261102123227099003|11063799006|261026140227099003|261009223027099003|261021121427099003|261021123027099003|261022105027099003|261028144727099003|261022075727099003|56012099006|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	chlhiig4e5Kfy7+4CY7RsL4yh4rzyV8PQYeaf2s8eP/WPUjT313Z7ezp0vhwc1aVvSZCwaTOJqci9FZBfDCrZx0AutjWU541W6zLJUH+W8xDZiIFnfZogTnIjdsotiuDzOx6RuKeu3l+93EynScpkoEWEnT7s4kTCdvVCbya+6w65JW+bj/Ww2HAJzbYnGB+4RwMekUBL7TrwSk57zPW/vPrsOqZPHxVGf8trXbvAbnkfT2wg72t3nJKbRhqhXXwhmztzFr4fZFkQd/nt3dLfj+eyTz/eO1W2Jk+N0ypMadtmXBMUVNCE4AyLLnwCWJQBAGnLo+UYNdqAs9oCy6YbDQmTRl54QWQLMjG+V3Z9gWnil1jgHtMDQDTn2KFF6dByVhGI3xGsI64f2lwhWafOH+n/KqZVQS4ex0xp26AZUmrS9pLqAohzAX+Je9PnKmH6zXhPsPIEO82IP9YDzl2RdLBbP9dF1FM4kdCnGfPIM+dVcRuAqVIxBxXhOvj6PF5vdw9Fa5XqkNYHSIzsQJfztVYxHrjga6ywT5Utqhne2Ma27+6VKEwbiY9Qqs4qpZ2Clje353cq3NX3S2XLthTWRULaUS/NFNcmX4B+DQv8cmxN8eUcRGsfrP932sk4eUDC6Itu7SARF9Xh7Tdnkki0GvbZURKC+La73aR2vmApvI=
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)(23010399003)(366016)(1800799024)(376014)(261026121527099003)(260925022911599003)(260925021911599003)(260925021311599003)(261102123227099003)(11063799006)(261026140227099003)(261009223027099003)(261021121427099003)(261021123027099003)(261022105027099003)(261028144727099003)(261022075727099003)(56012099006)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?R2FtbnJFSlVFNGx1dWtnUjA3clF6YnhnM1pxSXBqYW1rTlhZbEdxUXV0bFlq?=
 =?utf-8?B?RXcwejdyUFp2WWpKMW1ad2ZQdTZRS0JxL3ZmQWRXL09DaFdsVmJ2UXRpc2N1?=
 =?utf-8?B?UnVXTzN1OE5MQkkyeE9HUzZmcitkeUc5a0hDbE1MZ1BBd1hIQzRuYStoUWNK?=
 =?utf-8?B?V0l1K2hkVUxmQmZURHJhVHBJMlM3cEtLQXV2cEdWelRkbWJyb0F6Y0dPSm4v?=
 =?utf-8?B?YXQ2OExYb0tJKzVNU1pITnpicXhkR1kvdHNhL0ZSNVFTOStIaC95ZGVPMGNt?=
 =?utf-8?B?OTduejNrOS9LS1dGd0w2cGtwOFJBSUtkSk1lTlVQc3pVSjZlSWNxbFVTS3J1?=
 =?utf-8?B?TDlwdGJoUHd3dUZGWW5xZGJiYW5XcG1rTVpPM3VIUk9jdytVdTVCQ3JZeWVT?=
 =?utf-8?B?RGtHc2tRZDNXMXMxQVErSkZCWWVSMGVVdlFWZWhpdTdLMjVjSE1ySDFabVBP?=
 =?utf-8?B?U2RVaEVMc3R6MEpxODBPMUQ1RkZ0MGpEMWZEYjZRUTVMY1F2dzU0VTZUTE9n?=
 =?utf-8?B?dkJJeFgrVDVYNmVabXdWdVMxR1ZHdnBzWFNRMmpjWkFGdGdnakVLbzJiemF4?=
 =?utf-8?B?L0E2by9yei9qbjd1NUcrTGJRTlNRQjA2dzQwSE5LTWtHZXdrSitzVU8rTjNv?=
 =?utf-8?B?NkVuaUwxMHh1YkZGc2V0N0NENHgxbHR4a3p2TThhM29yNWpYaENoR2ZsNk1G?=
 =?utf-8?B?MmFoK2VBejJoaFZtT2Y2NGd1Q0VMT3dRK3RCNnUrbEJzU1V5U1hoTlJ1Umt5?=
 =?utf-8?B?VHY5VzNiTzhoSElRNGNPYi9WNWxkNk9RSzF2cWtSa0k2SEJJczNzQk9zckQ4?=
 =?utf-8?B?QVU3WkI3RUVOejltYXFVcXpRdFVvczljVE5QNFdIcFVBL0NoUHBDeXVUclZT?=
 =?utf-8?B?UzlRUGRBdVVoRmZQWXBpNFE2U0NudlJsQUdaQkZYMStXS25aMmRBWWxTdVlU?=
 =?utf-8?B?ZHpvOEpwd05lUit3YmFvWm04WmVxdStRRyt2NHA3czNzY3RQeXdIdXBNM0wx?=
 =?utf-8?B?VCsyZm1mdVJIamYwc2t2eVhLQzBLempxL1kwZUdwdFZkQWRpUTlTVGdVYzV3?=
 =?utf-8?B?a2Y5TEpoNEVJQXMyM3NXdk5zQnc5WHVIWjNsNktEWXNjSU9sakU4QlFRWHZn?=
 =?utf-8?B?UGFTdGRwNytPcjhHQ3NFZ2tpRHdKcHViMlFCS2dRaDdWL2Jjdk1rTDhEbDN0?=
 =?utf-8?B?SDFYZmNEcEUvTmlrT2RMb1BVdDByRUJiUUhJTmVsODU5VlFTNmVSZnlHL3Ji?=
 =?utf-8?B?TTM5NE0xbnhNZlIvcTJ3K1F0Z0JUQzh0T2hKSmJNejNTQzlrU2JsL3gyY1c4?=
 =?utf-8?B?NDllQnRHQkhpRFhLN1FBazhFbTBWSXQwT2tqTmxHRi9tK0RpL2NueXM0dHR6?=
 =?utf-8?B?dDNISzNZSHBPYUFVZnd5ak43STQ1RkY5ek5tRTMwZjFFdVNXNzVzTjR6bnhP?=
 =?utf-8?B?RW5EMGpoUEtROUErMmd5emVLTHEzWktJbzU5VnFPN1lWNDJNUG1NSWJ5WXRY?=
 =?utf-8?B?SmJCL29FUkpMbTJxdTY3ZnlyMmwzNnRhYU9SeFBSc0s2Ty9FcXNKcUl3R0Fm?=
 =?utf-8?B?b2VhcVY1U1ZzZVN0dGZRSFJlUDdHSG5SWnJZczh3WEU0WWVNcU55RU81UmhT?=
 =?utf-8?B?eUNUWXgzSW8zZ1l5bkJld3lGWXpNOWFDN1U2bm9yS2I1dUk5bEpOSWxJOUYw?=
 =?utf-8?B?RVU3L2xGT2lMOEhzbGtTNmpIMk9hK2J1VTEyMUx3aTRMVjI4ZkJ2a3FtT0Fk?=
 =?utf-8?B?cG9nRW1SeHBMT1JySEZLNVVDbytYaFZzdXU0UmJIQTlNT1VYVTdna3VjcmhC?=
 =?utf-8?B?UFg5d0NadUFMQWpVUDd3K1c0UXhpZGE2WGxJL3h5bHUwQ3dIdk43akZrV05D?=
 =?utf-8?B?eHdQTi9reVIyNHRSYk91bTZYdyszYWczcXFTRnAwRHNVVFNBMEtYZktITzRN?=
 =?utf-8?B?czJqenJMMGZLakphOU0xTy9OelNEWU9kR2lUQ3lCSXFzLzE0NzMrSzBXbGt1?=
 =?utf-8?B?cFFkSGxUcExLSXRKckJ6RDF2Qks4TUFqbGlHb2ZwUWVvdXpiVEtla3lYcm5G?=
 =?utf-8?B?Z0lEY0tibk5LSFVrSXBiQktseG03b1pNWFZFSERhK0hyT213ZmdkVXdzMVdS?=
 =?utf-8?B?WWFhcFdnb29JcjNaRkFBb2t1R2FsZG1jWFR6U0JzTjh5QzhxdG9ZK1JGSVhp?=
 =?utf-8?B?ZkRVUk5OenRxbE9aUm1LL2dqeVBzRkFQRGo1LyszVitGb0RZYWVaSjNWeEha?=
 =?utf-8?B?QUl2aEpRdEsrd20xSnV3elRtNUVFQWpycVNsSDd2OHFMcFpReDhsTW1KWlNS?=
 =?utf-8?B?NGo2V3lYU2J5N3AvKzNEandRWmdRM2U4d0hkcjFPZ2Nwdys5WkwyT24wY2Zy?=
 =?utf-8?Q?KSF89Z5fTZzQw2Ho=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bb55bdfb-f5a1-4317-7c69-08df3b4760e7
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 14:16:26.6189
 (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: 78x36EWfWXw01ToqAwx+eUYLLoBTA71TpsKCRapCt9vCjT55KJKlA+EoJgY6Y2t2W74bm+HBHhGQQYUOjVdXdgOJlN1/RoMAWlKAKMlat6U=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: EA8PPF9710463C4
X-purgate-ID: tlsNG-16d1c6/1793888190-F500977B-F85BD533/3/8916376837
X-purgate-type: clean
X-purgate-size: 3747

On 11/3/26 4:59 PM, Abdelkareem Abdelsaamad wrote:
> When nesting SVM, if the L1 hypervisor has not requested a virtual interrupt
> (VINTR) intercept for L2, Xen should not force one. L2 execution should remain
> isolated from the L1 VINTR state, and there should be no expectation that L2
> execution results in an L1 VINTR becoming deliverable.
> 
> Currently, if Xen intercepts the VINTR for its own L1 management, this
> intercept incorrectly forces an intercept during L2 execution even when L1
> intended for L2 to run without it. This breaks the expected transparency of L1
> configuration and introduces unnecessary VMEXITs.
> 
> Furthermore, handling this forced VMEXIT_VINTR can cause a pending L1 virtual
> interrupt to be incorrectly delivered to L2. This occurs because when the
> intercept is determined to be requested solely by the host
> (returning NESTEDHVM_VMEXIT_HOST), svm_vmexit_handler does not switch to the
> correct VMCB context before evaluating the interrupt injection.
> 
> Fix this by ensuring the L2 VINTR intercept bit in the L2 execution VMCB solely
> reflects the L1's explicit configuration for its guest, independent of Xen's
> internal L1 intercept state.
> 
> Signed-off-by: Abdelkareem Abdelsaamad <abdelkareem.abdelsaamad@citrix.com>
> ---
> Testing:
>   - Test setup using a custom XTF nested virtualization setup:
>     1. An L1 maskable interrupt is triggered while L1 has physical interrupts
>        disabled (via the CLI), leaving the interrupt pending.
>     2. L2 is launched via VMRUN with an active, deliverable virtual interrupt
>        configured in its VMCB (L2 EFLAGS.IF = 1, L2 vGIF is unmasked,
>        V_IRQ_PENDING is set and L2 V_IRQ is injected on a distinct vector from
>        the pending L1 interrupt).
>     3. Xen enables L1's VINTR_INTERCEPT to catch the next available VINTR
>        window. L2's VINTR_INTERCEPT is kept cleared.
> 
>     Results:
>       - Old Behaviour: If the pending L1 maskable interrupt vector has no
>         handler mapped in the L2 IDT, L2 immediately crashes. Otherwise,
>         the L1 maskable interrupt is incorrectly leaked and delivered into
>         the L2 guest.
>       - New Behaviour: The L1 maskable interrupt is securely withheld from L2
>         and correctly delivered back to the L1 context upon the next window.
> 
>     Note on Test scenario:
>     I think the same window race can also result when having an injected L1
>     maskable interrupt handler that temporarily raise the TPR to block
>     lower-priority interrupts, with the intention to be lowering the TPR
>     asynchronously later, then executing the L2 VMRUN in between.
> 
>   - CI tests:
> https://gitlab.com/xen-project/people/aabdelsa/xen/-/pipelines/3023453459
> ---
>   xen/arch/x86/hvm/svm/nestedsvm.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
> index 128008321d..21b50a59b0 100644
> --- a/xen/arch/x86/hvm/svm/nestedsvm.c
> +++ b/xen/arch/x86/hvm/svm/nestedsvm.c
> @@ -403,6 +403,9 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
>       n2vmcb->_general2_intercepts =
>           n1vmcb->_general2_intercepts | ns_vmcb->_general2_intercepts;
>   
> +    if ( !(ns_vmcb->_general1_intercepts & GENERAL1_INTERCEPT_VINTR) )
> +        n2vmcb->_general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
> +

If L0 wants to inject an interrupt but the VINTR intercept is not enabled, how
would it detect when it can inject the interrupt? In particular, if VMCB(1-2)
has V_INTR_MASKING=0 and L2 sets EFLAGS.IF=1, the interrupt should be
delivered but L0 won't notice.

Ross


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 14:21:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 14:21:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474836.1681766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOyLh-0003Ad-ME; Thu, 05 Nov 2026 14:21:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474836.1681766; Thu, 05 Nov 2026 14:21:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOyLh-0003AW-JO; Thu, 05 Nov 2026 14:21:53 +0000
Received: by outflank-mailman (input) for mailman id 1474836;
 Thu, 05 Nov 2026 14:21:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOyLg-00039L-1D
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 14:21:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOyLf-00A0lk-DV
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:21:51 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec90fe-2eae-0a2a0a5409dd-0a2a4504ea6a-2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:21:51 +0100
Received: from [209.85.221.46] (helo=mail-wr1-f46.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec90ff-b57f-0a2a45040019-d155dd2ec052-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:21:51 +0100
Received: by mail-wr1-f46.google.com with SMTP id
 ffacd0b85a97d-491aaed7565so389521f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 06:21:51 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-48fec8d8748sm10375982f8f.16.2026.11.05.06.21.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 06:21:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793888511; x=1794493311; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=RSejp9A0sjLzLSVB368wdKm/cwyGhDQchQcPYouvIxc=;
        b=mG+TDBzoqzNtdGONYFxDTCRHIKjf1l3jhMpwZbk/AngGyhThcwdqjW3fOZdJlKiMx5
         XzAtKHG1qvki+iMQr/+zVBSa8qmKsUPGcl7JqsL8NSkJVg0rf4Dn5F7JCTbyq0+Ryt2/
         kZLUrrAp/4hQxWxthxKEO9UvxQ1e+hV9hsL+YxT/vuiuL1pZ/Ur30HydqQjXODnlX9x5
         L7forUG6Q+HhIf9TTN37bkGzYmXxHMm4/aK6BgLUasf3sGlNPu7fTYs7VoDSSJWilKi+
         y1K6eKqDy4bOlF1BX+VUfWvy7GTLSCldvSjz+/2k+KC/fYzfaSm621ypODE5WgXD3JzX
         xZsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793888511; x=1794493311;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=RSejp9A0sjLzLSVB368wdKm/cwyGhDQchQcPYouvIxc=;
        b=l6dNWN1Ax/3O70VKnukP3K0/OOPmO9dsaUzsZsLzN1aCJXTpZ25es7t7D6SSKkQ2sy
         c8TUzEW6oTaLBBP6f+JsVuKY7N83uGTdbSFT9ALD7P6mlUbR8l7breymr82PF//uBB6s
         k03Rnnjs6m2g0WbCOmNhm/XmfJaNhqcLyuUqYxXrQ47VWdKYfvAygipEn6qg86qH/LsX
         TEiAnmmHJPA6jdQeXCz/7qux7xGshh5kCQdVbrFYlrgZIcjvMvZ7qc46HzCwRR+H7CHI
         1rSAWleNSCzEt2UnfcPpvN0lsSg7esC44THGZrVUOUKqh0W/3azfBf4c9p0WOCrTNejU
         Icrw==
X-Gm-Message-State: APuU4Z9pjQwPXwJKtnduHqtYVXBDEdnU+zlMW2q69W+sMOYrjq9pwPuq
	HqLuCJ9JCl/K94YYKljUPt80TUbzkdEqjgIMU/KyP6J4OgYPSB6LO6XV
X-Gm-Gg: AYBFou3K22F1WkiLMWyUOn4g0oQ8SIW9SizBsb0Jv49Y3+IYBxdcWAOgO2vTsbrQ50G
	nvaT84Sk3LCiZCadjo5XySpxnhooJ/zJNE6eZcBT/RqdSHZo/idIsojMqkvaZPGXRN99aB+T6k8
	5hNpgQoqSD0eSAmlcJNkE7gDGnt3r1C7rpMZUrx7OV+qbo35EEWRoXZKHklBk0jBSlt4qVc3g5Q
	bTj0zGkVIX1kO34wKzPcJEKPDLnSNSkqvB6U4URP+wNb+tzQS62IVYjvmvQIspeH9Ga+OYdin+Q
	+cTUnXYldqN3hJ7Wzk7+6nZjNL3oxgU6sMRA40eXhnfjfRBv8Hi32yNmFyxHrizQklOlaO0Di2u
	j9vCYunJr8wEfZwV35RdBw2OK2WdwSObS/NOB2QX8VP9ixH3yv90To/1YmiE9Yzsoohu3DXoP6X
	qpO7ck9BDFmzDDr/Fs+UBoL00pO9XV0zwv8HdmRLdKD4F1N6b19PqTw3LZyBzyKa6qSihQaJ99M
	U0SyfotmfJhlT3pUSa9HaAOPK1qUDgEPaIoT5wsXWH0xRw+oBNo6zlDdPxqUPUfq3kMrJc0T3cH
	m2e3evWz05slEl1kEnNq0CT0EkzOprZNCWKpPwvncKNN1HLgV67ikMa/7fyRkrSFK1WzugGBbEZ
	22mfQs8btEIKuqoIgTR2q1g==
X-Received: by 2002:a05:6000:46c5:b0:48e:5db7:fd6c with SMTP id ffacd0b85a97d-48e6e2bde59mr25041368f8f.4.1793888510394;
        Thu, 05 Nov 2026 06:21:50 -0800 (PST)
Message-ID: <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
Date: Thu, 5 Nov 2026 15:21:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/39] xen/riscv: implement APLIC-IMSIC-hart sync
 barrier for vCPU migration
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <2075cb10e5f6df787b29f2f087632c82b787a007.1790779209.git.oleksii.kurochko@gmail.com>
 <c77101fe-2505-4cdb-8520-52f92a1c668d@gmail.com>
 <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793888511-C10DDB50-1603620A/10/73395122804
X-purgate-type: spam
X-purgate-size: 14781



On 10/23/26 3:51 PM, Baptiste Le Duc wrote:
> On 2026-10-06 16:25:55+02:00, Oleksii Kurochko wrote:
>> On 9/30/26 6:23 PM, Oleksii Kurochko wrote:
>>> When a vCPU is moved to a different guest interrupt file, MSIs that the
>>> APLIC has already sent towards the old file may still be in flight. They
>>> must land before the old file's state is saved and the switch is done,
>>> otherwise they would be lost.
>>>
>>> To wait for them, use the APLIC's genmsi register. Writing it makes the
>>> APLIC itself send an MSI (an "extempore" MSI) with a given interrupt
>>> identity to a given hart. genmsi can only target the hart's hypervisor-
>>> level interrupt file, not a guest one, but the AIA spec guarantees that
>>> all MSIs previously sent by the same APLIC to the same hart become
>>> visible at the hart's IMSIC before the extempore MSI does. So once the
>>> extempore MSI has been delivered, no older MSI from this APLIC to the
>>> hart can still be in flight, whichever interrupt file it targets.
>>>
>>> genmsi's Busy bit clearing only tells that the APLIC has sent the
>>> extempore MSI, not that it has arrived, so the sequence described in the
>>> AIA spec under "Synchronizing interactions between a hart and the APLIC"
>>> is split in two. aplic_genmsi_barrier() does the APLIC side, while
>>> imsic_aplic_sync() does the hart side: it clears the pending bit of the
>>> reserved identity before the genmsi write and spins on it afterwards,
>>> which is what tells that the extempore MSI, and hence every older MSI
>>> from this APLIC to this hart, has really arrived. Keeping the hart side
>>> in imsic.c leaves the APLIC code free of the IMSIC local CSR accessors.
>>>
>>> The last interrupt identity (nr_ids) is reserved for this purpose.
>>>
>>> Migration doesn't use the barrier at this stage, so imsic_migrate_vcpu()
>>> only references imsic_aplic_sync() to keep the compiler from complaining
>>> about it being unused.
>>>
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>> Changes in v3:
>>>    - Rename from "xen/riscv: implement APLIC-hart sync barrier for vCPU
>>>      migration", as the barrier waits for the MSIs to reach the hart's IMSIC.
>>>    - Re-word the commit message, describing in it how the sequence is split
>>>      between aplic_genmsi_barrier() and imsic_aplic_sync().
>>>    - Move imsic_aplic_sync(), imsic_local_is_pending() and imsic_csr_read()
>>>      here from "xen/riscv: remap interrupts to new IMSIC VS-file", so that
>>>      both halves of the synchronization sequence are introduced together.
>>>    - s/aplic_hart_field/aplic_hart_index/ following the rename of the helper
>>>      in "xen/riscv: implement virtual APLIC MMIO emulation".
>>>    - Drop masking of sync_id with APLIC_TARGET_EIID, which could silently
>>>      chop off bits; instead add BUILD_BUG_ON() and ASSERT() to make it
>>>      explicit that sync_id always fits into the EIID field.
>>>    - Drop the redundant parentheses around the macro argument in
>>>      imsic_csr_read().
>>>    - Use unsigned int for isel in imsic_local_is_pending() and drop the
>>>      redundant !! as the function returns bool.
>>>    - Rename the unused argument of imsic_aplic_sync() to unused.
>>> ---
>>> Changes in v2:
>>>    - New patch.
>>> ---
>>> ---
>>>    xen/arch/riscv/aplic.c             | 33 +++++++++++++++++++
>>>    xen/arch/riscv/imsic.c             | 52 ++++++++++++++++++++++++++++++
>>>    xen/arch/riscv/include/asm/aplic.h |  3 ++
>>>    xen/arch/riscv/include/asm/imsic.h |  8 +++++
>>>    4 files changed, 96 insertions(+)
>>>
>>> diff --git a/xen/arch/riscv/aplic.c b/xen/arch/riscv/aplic.c
>>> index 283e5d6046a6..5f9a894b5a76 100644
>>> --- a/xen/arch/riscv/aplic.c
>>> +++ b/xen/arch/riscv/aplic.c
>>> @@ -27,7 +27,9 @@
>>>    #include <asm/imsic.h>
>>>    #include <asm/intc.h>
>>>    #include <asm/io.h>
>>> +#include <asm/processor.h>
>>>    #include <asm/riscv_encoding.h>
>>> +#include <asm/smp.h>
>>>    
>>>    static struct aplic_priv aplic = {
>>>        .lock = SPIN_LOCK_UNLOCKED,
>>> @@ -183,6 +185,37 @@ void aplic_hw_write_reg(unsigned int offset, uint32_t value)
>>>        spin_unlock_irqrestore(&aplic.lock, flags);
>>>    }
>>>    
>>> +/*
>>> + * As needed, synchronize with all IOMMUs and APLICs to ensure that no
>>> + * straggler MSIs will arrive at the old interrupt file after this step.
>>> + */
>>> +void aplic_genmsi_barrier(void)
>>> +{
>>> +    const struct imsic_config *imsic = imsic_get_config();
>>> +    unsigned int cpu = smp_processor_id();
>>> +    unsigned long flags;
>>> +    uint32_t val;
>>> +
>>> +    /*
>>> +     * sync_id is nr_ids, which imsic_parse_node() limits to IMSIC_MAX_ID,
>>> +     * so it always fits into the EIID field.
>>> +     */
>>> +    BUILD_BUG_ON(IMSIC_MAX_ID > MASK_EXTR(~0U, APLIC_TARGET_EIID));
>>> +    ASSERT(imsic->sync_id <= IMSIC_MAX_ID);
>>> +
>>> +    val = MASK_INSR(aplic_hart_index(cpu), APLIC_TARGET_HART_IDX) |
>>> +          imsic->sync_id;
>>> +
>>> +    spin_lock_irqsave(&aplic.lock, flags);
>>> +
>>> +    writel(val, &aplic.regs->genmsi);
>>> +
>>> +    while ( readl(&aplic.regs->genmsi) & APLIC_GENMSI_BUSY )
>>> +        cpu_relax();
>>> +
>>> +    spin_unlock_irqrestore(&aplic.lock, flags);
>>> +}
>>> +
>>>    static void __init aplic_init_hw_interrupts(void)
>>>    {
>>>        unsigned int i;
>>> diff --git a/xen/arch/riscv/imsic.c b/xen/arch/riscv/imsic.c
>>> index f1e44dc56bb8..8e0273eab902 100644
>>> --- a/xen/arch/riscv/imsic.c
>>> +++ b/xen/arch/riscv/imsic.c
>>> @@ -27,6 +27,7 @@
>>>    #include <xen/xvmalloc.h>
>>>    
>>>    #include <asm/aia.h>
>>> +#include <asm/aplic.h>
>>>    #include <asm/imsic.h>
>>>    
>>>    #define IMSIC_HART_SIZE(guest_bits) (BIT(guest_bits, U) * IMSIC_MMIO_PAGE_SZ)
>>> @@ -60,6 +61,12 @@ static unsigned int __ro_after_init guest_num_msis;
>>>    #define IMSIC_DISABLE_EITHRESHOLD   1
>>>    #define IMSIC_ENABLE_EITHRESHOLD    0
>>>    
>>> +#define imsic_csr_read(c)       \
>>> +({                              \
>>> +    csr_write(CSR_SISELECT, c); \
>>> +    csr_read(CSR_SIREG);        \
>>> +})
>>> +
>>>    #define imsic_csr_write(c, v)   \
>>>    do {                            \
>>>        csr_write(CSR_SISELECT, c); \
>>> @@ -203,6 +210,15 @@ void imsic_irq_enable(unsigned int irq)
>>>         */
>>>        ASSERT(!local_irq_is_enabled());
>>>    
>>> +    if ( irq == imsic_cfg.sync_id )
>>> +    {
>>> +        printk(XENLOG_WARNING
>>> +               "irq%u is reserved for APLIC sync so shouldn't be set by %s\n",
>>> +               irq, __func__);
>>> +
>>> +        return;
>>> +    }
>>> +
>>>        spin_lock(&imsic_cfg.lock);
>>>        /*
>>>         * There is no irq - 1 here (look at aplic_set_irq_type()) because:
>>> @@ -241,6 +257,15 @@ void imsic_irq_disable(unsigned int irq)
>>>        spin_unlock(&imsic_cfg.lock);
>>>    }
>>>    
>>> +static bool imsic_local_is_pending(unsigned int id)
>>> +{
>>> +    unsigned int isel =
>>> +        (id / BITS_PER_LONG) * (BITS_PER_LONG / IMSIC_EIPx_BITS) + IMSIC_EIP0;
>>> +    unsigned long bit = BIT(id % BITS_PER_LONG, UL);
>>> +
>>> +    return imsic_csr_read(isel) & bit;
>>> +}
>>> +
>>>    /* Callers aren't intended to changed imsic_cfg so return const. */
>>>    const struct imsic_config *imsic_get_config(void)
>>>    {
>>> @@ -387,6 +412,9 @@ static int __init imsic_parse_node(const struct dt_device_node *node,
>>>    
>>>        imsic_cfg.nr_eix = DIV_ROUND_UP(imsic_cfg.nr_ids + 1, 64);
>>>    
>>> +    /* Reserve last identity for APLIC-to-hart synchronization */
>>> +    imsic_cfg.sync_id = imsic_cfg.nr_ids;
>>> +
>>>        /* Compute base address */
>>>        *nr_mmios = 0;
>>>        rc = dt_device_get_address(node, *nr_mmios, &base_addr, NULL);
>>> @@ -497,6 +525,27 @@ static void imsic_call_on_cpu(unsigned int cpu, void (*func)(void *),
>>>            on_selected_cpus(cpumask_of(cpu), func, data, 1);
>>>    }
>>>    
>>> +/*
>>> + * Ensure that all the MSIs the APLIC has already generated for the hart this
>>> + * runs on have really reached the hart's IMSIC.
>>> + *
>>> + * The barrier is the one described by the AIA specification in
>>> + * "Synchronizing interactions between a hart and the APLIC": ask the APLIC to
>>> + * send an MSI to the hart itself and wait until it shows up as pending in the
>>> + * hart's own interrupt file. As it says nothing about MSIs on their way to
>>> + * any other hart, it has to be executed by the pCPU owning the interrupt file
>>> + * the MSIs were being sent to.
>>> + */
>>> +static void cf_check imsic_aplic_sync(void *unused)
>>> +{
>>> +    imsic_local_eix_update(imsic_cfg.sync_id, 1, true, false);
>>> +
>>> +    aplic_genmsi_barrier();
>>> +
>>> +    while ( !imsic_local_is_pending(imsic_cfg.sync_id) )
>>> +        cpu_relax();
>>> +}
>>> +
>>>    static void cf_check imsic_vsfile_local_clear(void *data)
>>>    {
>>>        unsigned int i;
>>> @@ -862,5 +911,8 @@ void imsic_migrate_vcpu(struct vcpu *v)
>>>        /* Zero-out new IMSIC VS-file */
>>>        imsic_call_on_cpu(v->processor, imsic_vsfile_local_clear, &vsfile_data);
>>>    
>>> +    /* Avoid an unused-function error until the barrier has a user. */
>>> +    (void)imsic_aplic_sync;
>>> +
>>>        BUG_ON("unimplemented");
>>>    }
>>> diff --git a/xen/arch/riscv/include/asm/aplic.h b/xen/arch/riscv/include/asm/aplic.h
>>> index 9018936ca95a..bfb510b2ae5e 100644
>>> --- a/xen/arch/riscv/include/asm/aplic.h
>>> +++ b/xen/arch/riscv/include/asm/aplic.h
>>> @@ -94,6 +94,7 @@
>>>    #define APLIC_SETIPNUM_LE               0x2000
>>>    
>>>    #define APLIC_GENMSI                    0x3000
>>> +#define APLIC_GENMSI_BUSY               BIT(12, U)
>>>    
>>>    #define APLIC_TARGET_BASE               0x3004
>>>    #define APLIC_TARGET_LAST               0x3ffc
>>> @@ -177,4 +178,6 @@ struct aplic_regs {
>>>    uint32_t aplic_hw_read_reg(unsigned int offset);
>>>    void aplic_hw_write_reg(unsigned int offset, uint32_t value);
>>>    
>>> +void aplic_genmsi_barrier(void);
>>> +
>>>    #endif /* ASM_RISCV_APLIC_H */
>>> diff --git a/xen/arch/riscv/include/asm/imsic.h b/xen/arch/riscv/include/asm/imsic.h
>>> index 8130d125f5c3..f86407e21765 100644
>>> --- a/xen/arch/riscv/include/asm/imsic.h
>>> +++ b/xen/arch/riscv/include/asm/imsic.h
>>> @@ -62,6 +62,14 @@ struct imsic_config {
>>>         */
>>>        unsigned int nr_eix;
>>>    
>>> +    /*
>>> +     * Interrupt identity reserved exclusively for APLIC-to-hart
>>> +     * synchronization.
>>> +     *
>>> +     * Must not be allocated to any interrupt source.
>>> +     */
>>> +    unsigned int sync_id;
>>> +
>>>        /* MSI */
>>>        const struct imsic_msi *msi;
>>>    
>>
>>
>> I think it also makes sense here to apply the following fixup patch:
>>
>> commit db57e94ed8405c98d7a21f4f88764fa5e0ea2d04
>> (riscv-next-upstreaming-fixups)
>> Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> Date:   Tue Oct 6 15:59:52 2026 +0200
>>
>>       fixup! xen/riscv: implement APLIC-IMSIC-hart sync barrier for vCPU
>> migration
>>
>>       In MSI delivery mode the MSI of APLIC source N carries identity N, by
>>       which Xen recognises it in its own IMSIC interrupt file. A source
>>       numbered sync_id or higher can't be told apart: its identity either
>>       isn't implemented, so its MSIs are dropped, or is the one reserved for
>>       the sync barrier, which it would satisfy early and whose pending bit
>>       would swallow its interrupt. Limit the usable sources to those below
>>       sync_id, and document how the identities of Xen's interrupt file are
>>       allocated.
>>
>> diff --git a/xen/arch/riscv/aplic.c b/xen/arch/riscv/aplic.c
>> index 96aa4edb3958..86ff3cae984d 100644
>> --- a/xen/arch/riscv/aplic.c
>> +++ b/xen/arch/riscv/aplic.c
>> @@ -246,6 +246,7 @@ static int __init cf_check aplic_init(void)
>>        uint64_t size, paddr;
>>        const struct dt_device_node *imsic_node;
>>        const struct dt_device_node *node = aplic_info.node;
>> +    const struct imsic_config *imsic;
>>        int rc;
>>
>>        /* Check for associated imsic node */
>> @@ -270,6 +271,22 @@ static int __init cf_check aplic_init(void)
>>            panic("%s: failed to get number of interrupt sources\n",
>>                  node->full_name);
>>
>> +    /*
>> +     * In MSI delivery mode the MSI of source N carries identity N, by
>> which
>> +     * Xen recognises it in its own IMSIC interrupt file. Hence the sources
>> +     * numbered from sync_id on can't be used: their identities either
>> aren't
>> +     * implemented or are the one reserved for the APLIC-IMSIC sync
>> barrier.
>> +     */
>> +    imsic = imsic_get_config();
>> +    if ( aplic_info.num_irqs >= imsic->sync_id )
>> +    {
>> +        printk(XENLOG_WARNING
>> +               "%s: only %u of %u interrupt sources usable with %u
>> IMSIC identities\n",
>> +               node->full_name, imsic->sync_id - 1, aplic_info.num_irqs,
>> +               imsic->nr_ids);
>> +        aplic_info.num_irqs = imsic->sync_id - 1;
>> +    }
>> +
>>        guest_aplic_num_sources = min(GUEST_APLIC_MAX_SOURCES,
>> aplic_info.num_irqs);
>>
>>        if ( aplic_info.num_irqs > ARRAY_SIZE(aplic.regs->sourcecfg) )
>> diff --git a/xen/arch/riscv/imsic.c b/xen/arch/riscv/imsic.c
>> index ca5243826726..408b94b22ee9 100644
>> --- a/xen/arch/riscv/imsic.c
>> +++ b/xen/arch/riscv/imsic.c
>> @@ -533,7 +533,15 @@ static int __init imsic_parse_node(const struct
>> dt_device_node *node,
>>
>>        imsic_cfg.nr_eix = DIV_ROUND_UP(imsic_cfg.nr_ids + 1, 64);
>>
>> -    /* Reserve last identity for APLIC-to-hart synchronization */
>> +    /*
>> +     * The identities of Xen's own interrupt file are allocated statically:
>> +     *  - the APLIC sources take 1 .. riscv,num-sources, as the MSI of
>> source
>> +     *    N carries identity N (aplic_init() drops the sources which
>> don't fit
>> +     *    below sync_id);
>> +     *  - the last one, nr_ids, is reserved for APLIC-to-hart
>> synchronization.
>> +     * Anything else taking identities from this file has to stay clear of
>> +     * both.
>> +     */
>>        imsic_cfg.sync_id = imsic_cfg.nr_ids;
>>
>>        /* Compute base address */
>>
>> Any thoughts about it?
> LGTM, but I wonder why, as I said in the original patch, sync_id is
> really needed.
> 

I think that I am not understand your response. Could you please 
re-phrase it?

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:03:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:03:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474908.1681775 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOz0B-0001D7-Mn; Thu, 05 Nov 2026 15:03:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474908.1681775; Thu, 05 Nov 2026 15:03:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOz0B-0001D0-Jz; Thu, 05 Nov 2026 15:03:43 +0000
Received: by outflank-mailman (input) for mailman id 1474908;
 Thu, 05 Nov 2026 15:03:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOz09-0001Cu-Pz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:03:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOz09-00AzKr-2r
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:03:41 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec9abe-2eae-0a2a0a5409dd-0a2a4506e05a-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:03:41 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aec9acc-195a-0a2a45060019-d1558030adcb-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:03:40 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a2d6cf958bso9787635e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 07:03:40 -0800 (PST)
Received: from fedora (user-109-243-65-71.play-internet.pl. [109.243.65.71])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b57317cb8esm74121585e9.13.2026.11.05.07.03.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 05 Nov 2026 07:03:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793891020; x=1794495820; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=nvr6HpEMBVSx7QqUJgJUbyrp9h4N4e79BJPbeAyxw1s=;
        b=FV/I76O9z0APFCb/cAFYOOfjMiEgVjInJP1L6am0JCNQRE4HL6/AbLh+q5l4/kN0S+
         a1dLiCbd2+jfDqu1LHAYET82GQIOG52O3adBhnLSEBgLLFuUdRcBnWH8YS694fpoxGUT
         PNk75glt8IqFNOqa1loy/9NkFCB7v6YArnwHbkP7e2hQnAyIjLs2/r/OZYeOArR48EuO
         npgtKazN9IVee1kFhd2OFMj7fU1UPk27HxQhgRXn6IakxVBLar1b1Ef3x+RDevRv/YnM
         Ztk61r1XruNmZSby0hv+zEGh/HNEZhiIuug/SHh9YX6p5NbdroRlkMlGW8EYqQMNa1Ak
         nTyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793891020; x=1794495820;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=nvr6HpEMBVSx7QqUJgJUbyrp9h4N4e79BJPbeAyxw1s=;
        b=lPURRxDP5hqhPqDwkWcg5/nsjpcALDKgMpdrabv23BvqbfKkh5odotYjRDfoKVQQT1
         +WofKwaopKT2Ve78lKqD47CRUhGRWbEgcMUJpR0zQM2YrCXMHpTK5moliVekpxs/t+u5
         b1+jaNV6CESmQCovwA7++mVPgsHHohKuC3hEYuSYfmqSwqL/K4NauyfkecnmmKvD31ct
         TB2Ly9H34gajhTGBJ6HFMFVkK6nCgz+p2nD0nfW+28FZ6oeARBwMAgfvNZSzoK5cjTKC
         KW0OIn23euCNw9OsOQCZBIgcZXyzg+fAHxDSeqami3gUNlO7XPU2U2z6zHk/lyoem9ZI
         E58Q==
X-Gm-Message-State: APuU4Z+oviT4ENUJI2U45zFjsQ6yQ9caYFv6ssxhHIX+OXjk4J9YhXzL
	8S85GNxU2x/KxTwJ9nu8Q5u8EYKlbcbTex6sVe8sdD2+OuXy4rQYxK6aJYnZog==
X-Gm-Gg: AYBFou2mVFbwdRqyIqtO1qf2Q+0YumzNZLJcU0Fb6hiaS9qU7RPlk2KBkl9rFc2W0b3
	8v1YVXuO2/oX5VlkG2Ti40jLnvFx0pNY4aFH88FZ64/9IFUgj6ZQ34gALokknDIVr6TgAxWcx0/
	tqaixdSzL9pF0kMe2hCCAiMXvgkUwBVAAFeRGNxgYQZVEr21FoOwX08Oq7zpNMCzKPcKc3yCqMg
	XoZBI/5Ko8nb7woZMP/4JwTDefrEgAkmVmdKmaBzx4oEPGZJWwL7+XThZ5uWbYwddn4Iwd+bIys
	X67LmUcy2BaskggETCcN4rjiZCOlIuosJse5JZOKtQV/dDqJeYoJ2NySuepYao690TEOKiJRVKl
	LWS9b0+HuVkWwMh6K5/oQSbdyQzwb/FUv0+koD/US8BydO28yj7CEp6O23azsiZce+rRu98LdC2
	+iYUKNB5eQIDcNNDD2AOfLY28FuPrahSKOrj7ItLbkQCWgBEVzAzipgyjtJc8BsnBT9TQZBt+0s
	W+2a41VUIIRQWFO84M8A7Izcvzxn7Agztc4PbrjzsMnjH0gTGRek8tEHhzrn4ixXm8wyAzQBAth
	nveqA0EK/liSrQ2DNNRNxXFiOZHKttnVYttmwkoJcHgz2rVPuft+cw+zPyafhStFV1cj
X-Received: by 2002:a05:600c:4ece:b0:4a2:40:8d2c with SMTP id 5b1f17b1804b1-4ac17b2c396mr411580545e9.26.1793891019977;
        Thu, 05 Nov 2026 07:03:39 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Connor Davis <connojdavis@gmail.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v1] xen/riscv: align header inclusion guards with CODING_STYLE
Date: Thu,  5 Nov 2026 16:03:36 +0100
Message-ID: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.56.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793891020-F4A0477B-AEF422B6/10/73395122804
X-purgate-type: spam
X-purgate-size: 36386

Commit 7abea85c9f12 ("CODING_STYLE: Updated header guard
recommendations") changed the recommended naming of inclusion guards
for arch-specific headers to <arch>_<something>_H. Most RISC-V headers
still use the ASM__RISCV__<FILENAME>_H form required by the previous
rules, and a few use ASM_RISCV_<FILENAME>_H, which follows neither.

Rename the guards to RISCV_<SOMETHING>_H. While doing so, also fix two
guards which don't match their file names: extable.h used
ASM__RISCV__ASM_EXTABLE_H and intc.h used the misspelt
ASM__RISCV__INTERRUPT_CONTOLLER_H. For riscv_encoding.h, don't repeat
the architecture name and use RISCV_ENCODING_H.

No functional change.

Assisted-by: Claude-Code:claude-opus-5-5
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/aplic-priv.h                 | 6 +++---
 xen/arch/riscv/include/asm/acpi.h           | 6 +++---
 xen/arch/riscv/include/asm/aplic.h          | 6 +++---
 xen/arch/riscv/include/asm/asm.h            | 6 +++---
 xen/arch/riscv/include/asm/atomic.h         | 6 +++---
 xen/arch/riscv/include/asm/bitops.h         | 6 +++---
 xen/arch/riscv/include/asm/bug.h            | 6 +++---
 xen/arch/riscv/include/asm/cache.h          | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
 xen/arch/riscv/include/asm/config.h         | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
 xen/arch/riscv/include/asm/csr.h            | 6 +++---
 xen/arch/riscv/include/asm/current.h        | 6 +++---
 xen/arch/riscv/include/asm/domain.h         | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
 xen/arch/riscv/include/asm/event.h          | 6 +++---
 xen/arch/riscv/include/asm/extable.h        | 6 +++---
 xen/arch/riscv/include/asm/fence.h          | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
 xen/arch/riscv/include/asm/guest-layout.h   | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
 xen/arch/riscv/include/asm/imsic.h          | 6 +++---
 xen/arch/riscv/include/asm/insn-defs.h      | 6 +++---
 xen/arch/riscv/include/asm/intc.h           | 6 +++---
 xen/arch/riscv/include/asm/io.h             | 6 +++---
 xen/arch/riscv/include/asm/irq.h            | 6 +++---
 xen/arch/riscv/include/asm/mm-types.h       | 6 +++---
 xen/arch/riscv/include/asm/mm.h             | 6 +++---
 xen/arch/riscv/include/asm/monitor.h        | 6 +++---
 xen/arch/riscv/include/asm/nospec.h         | 6 +++---
 xen/arch/riscv/include/asm/p2m.h            | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
 xen/arch/riscv/include/asm/page.h           | 6 +++---
 xen/arch/riscv/include/asm/paging.h         | 6 +++---
 xen/arch/riscv/include/asm/pmap.h           | 6 +++---
 xen/arch/riscv/include/asm/processor.h      | 6 +++---
 xen/arch/riscv/include/asm/regs.h           | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
 xen/arch/riscv/include/asm/sbi.h            | 6 +++---
 xen/arch/riscv/include/asm/setup.h          | 6 +++---
 xen/arch/riscv/include/asm/smp.h            | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
 xen/arch/riscv/include/asm/string.h         | 6 +++---
 xen/arch/riscv/include/asm/system.h         | 6 +++---
 xen/arch/riscv/include/asm/time.h           | 6 +++---
 xen/arch/riscv/include/asm/traps.h          | 6 +++---
 xen/arch/riscv/include/asm/types.h          | 6 +++---
 xen/arch/riscv/include/asm/vaplic.h         | 6 +++---
 xen/arch/riscv/include/asm/vmid.h           | 6 +++---
 xen/arch/riscv/include/asm/vsbi.h           | 4 ++--
 xen/arch/riscv/include/asm/vtimer.h         | 6 +++---
 53 files changed, 156 insertions(+), 156 deletions(-)

diff --git a/xen/arch/riscv/aplic-priv.h b/xen/arch/riscv/aplic-priv.h
index 35100d3a64fe..009020c83fb9 100644
--- a/xen/arch/riscv/aplic-priv.h
+++ b/xen/arch/riscv/aplic-priv.h
@@ -11,8 +11,8 @@
  * Copyright (c) Vates.
  */
 
-#ifndef ASM_RISCV_APLIC_PRIV_H
-#define ASM_RISCV_APLIC_PRIV_H
+#ifndef RISCV_APLIC_PRIV_H
+#define RISCV_APLIC_PRIV_H
 
 #include <xen/spinlock.h>
 #include <xen/types.h>
@@ -47,4 +47,4 @@ struct aplic_priv {
  */
 extern unsigned int guest_aplic_num_sources;
 
-#endif /* ASM_RISCV_APLIC_PRIV_H */
+#endif /* RISCV_APLIC_PRIV_H */
diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
index 0c553bd6b8fa..8c769b2c0bd9 100644
--- a/xen/arch/riscv/include/asm/acpi.h
+++ b/xen/arch/riscv/include/asm/acpi.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__ACPI_H
-#define ASM__RISCV__ACPI_H
+#ifndef RISCV_ACPI_H
+#define RISCV_ACPI_H
 
-#endif /* ASM__RISCV__ACPI_H */
+#endif /* RISCV_ACPI_H */
diff --git a/xen/arch/riscv/include/asm/aplic.h b/xen/arch/riscv/include/asm/aplic.h
index a2af55d54fc0..51be469b69e5 100644
--- a/xen/arch/riscv/include/asm/aplic.h
+++ b/xen/arch/riscv/include/asm/aplic.h
@@ -8,8 +8,8 @@
  * Copyright (c) Microchip.
  */
 
-#ifndef ASM_RISCV_APLIC_H
-#define ASM_RISCV_APLIC_H
+#ifndef RISCV_APLIC_H
+#define RISCV_APLIC_H
 
 #include <xen/types.h>
 
@@ -141,4 +141,4 @@ struct aplic_regs {
     uint32_t target[1023];      /* 0x3004 */
 };
 
-#endif /* ASM_RISCV_APLIC_H */
+#endif /* RISCV_APLIC_H */
diff --git a/xen/arch/riscv/include/asm/asm.h b/xen/arch/riscv/include/asm/asm.h
index e147b6f05388..a663db4c23e4 100644
--- a/xen/arch/riscv/include/asm/asm.h
+++ b/xen/arch/riscv/include/asm/asm.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef ASM__RISCV__ASM_H
-#define ASM__RISCV__ASM_H
+#ifndef RISCV_ASM_H
+#define RISCV_ASM_H
 
 #ifdef __ASSEMBLER__
 #include <xen/linkage.h>
@@ -52,4 +52,4 @@
 #error "Unexpected __SIZEOF_SHORT__"
 #endif
 
-#endif /* ASM__RISCV__ASM_H */
+#endif /* RISCV_ASM_H */
diff --git a/xen/arch/riscv/include/asm/atomic.h b/xen/arch/riscv/include/asm/atomic.h
index 8e0425cea0b9..3a0184d35dcd 100644
--- a/xen/arch/riscv/include/asm/atomic.h
+++ b/xen/arch/riscv/include/asm/atomic.h
@@ -19,8 +19,8 @@
  * Copyright (C) 2024 Vates SAS
  */
 
-#ifndef ASM__RISCV__ATOMIC_H
-#define ASM__RISCV__ATOMIC_H
+#ifndef RISCV_ATOMIC_H
+#define RISCV_ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -266,7 +266,7 @@ ATOMIC_OPS()
 #undef ATOMIC_OPS
 #undef ATOMIC_OP
 
-#endif /* ASM__RISCV__ATOMIC_H */
+#endif /* RISCV_ATOMIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
index 72a4a8c155d6..471eb07bd287 100644
--- a/xen/arch/riscv/include/asm/bitops.h
+++ b/xen/arch/riscv/include/asm/bitops.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2012 Regents of the University of California */
 
-#ifndef ASM__RISCV__BITOPS_H
-#define ASM__RISCV__BITOPS_H
+#ifndef RISCV_BITOPS_H
+#define RISCV_BITOPS_H
 
 #include <asm/system.h>
 
@@ -132,7 +132,7 @@ static inline void clear_bit(int nr, volatile void *p)
 
 #define arch_hweightl(x) __builtin_popcountl(x)
 
-#endif /* ASM__RISCV__BITOPS_H */
+#endif /* RISCV_BITOPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
index c2cdc2dc2a46..8834dcea8197 100644
--- a/xen/arch/riscv/include/asm/bug.h
+++ b/xen/arch/riscv/include/asm/bug.h
@@ -4,8 +4,8 @@
  * Copyright (C) 2021-2023 Vates
  *
  */
-#ifndef ASM__RISCV__BUG_H
-#define ASM__RISCV__BUG_H
+#ifndef RISCV_BUG_H
+#define RISCV_BUG_H
 
 #ifndef __ASSEMBLER__
 
@@ -15,4 +15,4 @@
 
 #endif /* !__ASSEMBLER__ */
 
-#endif /* ASM__RISCV__BUG_H */
+#endif /* RISCV_BUG_H */
diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
index d4cf1ac8e2cd..6b8dff48b76f 100644
--- a/xen/arch/riscv/include/asm/cache.h
+++ b/xen/arch/riscv/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__CACHE_H
-#define ASM__RISCV__CACHE_H
+#ifndef RISCV_CACHE_H
+#define RISCV_CACHE_H
 
-#endif /* ASM__RISCV__CACHE_H */
+#endif /* RISCV_CACHE_H */
diff --git a/xen/arch/riscv/include/asm/cmpxchg.h b/xen/arch/riscv/include/asm/cmpxchg.h
index d47ebaffcef0..12268d0babd9 100644
--- a/xen/arch/riscv/include/asm/cmpxchg.h
+++ b/xen/arch/riscv/include/asm/cmpxchg.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2014 Regents of the University of California */
 
-#ifndef ASM__RISCV__CMPXCHG_H
-#define ASM__RISCV__CMPXCHG_H
+#ifndef RISCV_CMPXCHG_H
+#define RISCV_CMPXCHG_H
 
 #include <xen/bitops.h>
 #include <xen/compiler.h>
@@ -230,7 +230,7 @@ static always_inline unsigned long __cmpxchg(volatile void *ptr,
               sizeof(*(ptr))); \
 })
 
-#endif /* ASM__RISCV__CMPXCHG_H */
+#endif /* RISCV_CMPXCHG_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index fd69057826e1..8d43ee76da5f 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__CONFIG_H
-#define ASM__RISCV__CONFIG_H
+#ifndef RISCV_CONFIG_H
+#define RISCV_CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -164,7 +164,7 @@ extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
 #error "Define KERNEL_LOAD_ADDR_ALIGNMENT"
 #endif
 
-#endif /* ASM__RISCV__CONFIG_H */
+#endif /* RISCV_CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index b0a23be18e6f..d42189e8ebe7 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__CPUFEATURE_H
-#define ASM__RISCV__CPUFEATURE_H
+#ifndef RISCV_CPUFEATURE_H
+#define RISCV_CPUFEATURE_H
 
 #ifndef __ASSEMBLER__
 
@@ -57,7 +57,7 @@ bool riscv_isa_extension_available(const unsigned long *isa_bitmap,
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__CPUFEATURE_H */
+#endif /* RISCV_CPUFEATURE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index 888d6a2a86d6..a805f7ed0ba1 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef ASM__RISCV__CSR_H
-#define ASM__RISCV__CSR_H
+#ifndef RISCV_CSR_H
+#define RISCV_CSR_H
 
 #include <xen/const.h>
 
@@ -128,4 +128,4 @@ static always_inline bool csr_read_safe(unsigned long csr,
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__CSR_H */
+#endif /* RISCV_CSR_H */
diff --git a/xen/arch/riscv/include/asm/current.h b/xen/arch/riscv/include/asm/current.h
index 78ec52fd8a35..06683d7ae060 100644
--- a/xen/arch/riscv/include/asm/current.h
+++ b/xen/arch/riscv/include/asm/current.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__CURRENT_H
-#define ASM__RISCV__CURRENT_H
+#ifndef RISCV_CURRENT_H
+#define RISCV_CURRENT_H
 
 #include <xen/bug.h>
 #include <xen/cache.h>
@@ -62,4 +62,4 @@ DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__CURRENT_H */
+#endif /* RISCV_CURRENT_H */
diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index e035b33ddfdc..98e5e72e58ba 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__DOMAIN_H
-#define ASM__RISCV__DOMAIN_H
+#ifndef RISCV_DOMAIN_H
+#define RISCV_DOMAIN_H
 
 #include <xen/mm.h>
 #include <xen/spinlock.h>
@@ -128,7 +128,7 @@ int vcpu_unset_interrupt(struct vcpu *v, unsigned int irq);
 void vcpu_sync_interrupts(struct vcpu *curr);
 void vcpu_flush_interrupts(struct vcpu *curr);
 
-#endif /* ASM__RISCV__DOMAIN_H */
+#endif /* RISCV_DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/early_printk.h b/xen/arch/riscv/include/asm/early_printk.h
index 2750045bdd80..240b7f539a04 100644
--- a/xen/arch/riscv/include/asm/early_printk.h
+++ b/xen/arch/riscv/include/asm/early_printk.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__EARLY_PRINTK_H
-#define ASM__RISCV__EARLY_PRINTK_H
+#ifndef RISCV_EARLY_PRINTK_H
+#define RISCV_EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -11,4 +11,4 @@ void early_printk(const char *str);
 static inline void early_printk(const char *s) {};
 #endif
 
-#endif /* ASM__RISCV__EARLY_PRINTK_H */
+#endif /* RISCV_EARLY_PRINTK_H */
diff --git a/xen/arch/riscv/include/asm/event.h b/xen/arch/riscv/include/asm/event.h
index 116434c665c0..a1fc0bc6fd7a 100644
--- a/xen/arch/riscv/include/asm/event.h
+++ b/xen/arch/riscv/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__EVENT_H
-#define ASM__RISCV__EVENT_H
+#ifndef RISCV_EVENT_H
+#define RISCV_EVENT_H
 
 #include <xen/lib.h>
 
@@ -29,7 +29,7 @@ static inline enum virq_type arch_get_virq_type(unsigned int virq)
     return VIRQ_GLOBAL;
 }
 
-#endif /* ASM__RISCV__EVENT_H */
+#endif /* RISCV_EVENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/extable.h b/xen/arch/riscv/include/asm/extable.h
index c0128a91818f..0209b2f3bfa5 100644
--- a/xen/arch/riscv/include/asm/extable.h
+++ b/xen/arch/riscv/include/asm/extable.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__ASM_EXTABLE_H
-#define ASM__RISCV__ASM_EXTABLE_H
+#ifndef RISCV_EXTABLE_H
+#define RISCV_EXTABLE_H
 
 #ifdef __ASSEMBLER__
 
@@ -55,4 +55,4 @@ bool fixup_exception(struct cpu_user_regs *regs);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* ASM__RISCV__ASM_EXTABLE_H */
+#endif /* RISCV_EXTABLE_H */
diff --git a/xen/arch/riscv/include/asm/fence.h b/xen/arch/riscv/include/asm/fence.h
index edfaac49cd9c..f5dd3096e5f0 100644
--- a/xen/arch/riscv/include/asm/fence.h
+++ b/xen/arch/riscv/include/asm/fence.h
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef ASM__RISCV__FENCE_H
-#define ASM__RISCV__FENCE_H
+#ifndef RISCV_FENCE_H
+#define RISCV_FENCE_H
 
 #define RISCV_ACQUIRE_BARRIER   "\tfence r , rw\n"
 #define RISCV_RELEASE_BARRIER   "\tfence rw, w\n"
 #define RISCV_FULL_BARRIER      "\tfence rw, rw\n"
 
-#endif	/* ASM__RISCV__FENCE_H */
+#endif	/* RISCV_FENCE_H */
diff --git a/xen/arch/riscv/include/asm/fixmap.h b/xen/arch/riscv/include/asm/fixmap.h
index 085d135c15d4..7e907c3d1c03 100644
--- a/xen/arch/riscv/include/asm/fixmap.h
+++ b/xen/arch/riscv/include/asm/fixmap.h
@@ -2,8 +2,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef ASM__RISCV__FIXMAP_H
-#define ASM__RISCV__FIXMAP_H
+#ifndef RISCV_FIXMAP_H
+#define RISCV_FIXMAP_H
 
 #include <xen/bug.h>
 #include <xen/page-size.h>
@@ -48,4 +48,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__FIXMAP_H */
+#endif /* RISCV_FIXMAP_H */
diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
index b0112d416dbe..e1d17430da5f 100644
--- a/xen/arch/riscv/include/asm/flushtlb.h
+++ b/xen/arch/riscv/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__FLUSHTLB_H
-#define ASM__RISCV__FLUSHTLB_H
+#ifndef RISCV_FLUSHTLB_H
+#define RISCV_FLUSHTLB_H
 
 #include <xen/bug.h>
 #include <xen/cpumask.h>
@@ -53,7 +53,7 @@ static inline void arch_flush_tlb_mask(const cpumask_t *mask)
     sbi_remote_hfence_gvma(mask, 0, 0);
 }
 
-#endif /* ASM__RISCV__FLUSHTLB_H */
+#endif /* RISCV_FLUSHTLB_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/guest-layout.h b/xen/arch/riscv/include/asm/guest-layout.h
index ceed9125e7e2..52d1f2e108ea 100644
--- a/xen/arch/riscv/include/asm/guest-layout.h
+++ b/xen/arch/riscv/include/asm/guest-layout.h
@@ -1,5 +1,5 @@
-#ifndef ASM_RISCV_GUEST_LAYOUT_H
-#define ASM_RISCV_GUEST_LAYOUT_H
+#ifndef RISCV_GUEST_LAYOUT_H
+#define RISCV_GUEST_LAYOUT_H
 
 #include <public/xen.h>
 
@@ -44,4 +44,4 @@
 #define GUEST_MAGIC_BASE  _UL(0x79000000)
 #define GUEST_MAGIC_SIZE  _UL(0x00200000)
 
-#endif /* ASM_RISCV_GUEST_LAYOUT_H */
+#endif /* RISCV_GUEST_LAYOUT_H */
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index 8d679319ded0..e94aa838a3e7 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__GUEST_ACCESS_H
-#define ASM__RISCV__GUEST_ACCESS_H
+#ifndef RISCV_GUEST_ACCESS_H
+#define RISCV_GUEST_ACCESS_H
 
 #include <xen/types.h>
 
@@ -25,7 +25,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
                                  unsigned long len);
 
-#endif /* ASM__RISCV__GUEST_ACCESS_H */
+#endif /* RISCV_GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/guest_atomics.h b/xen/arch/riscv/include/asm/guest_atomics.h
index 22a7551804f9..1909e667214b 100644
--- a/xen/arch/riscv/include/asm/guest_atomics.h
+++ b/xen/arch/riscv/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__GUEST_ATOMICS_H
-#define ASM__RISCV__GUEST_ATOMICS_H
+#ifndef RISCV_GUEST_ATOMICS_H
+#define RISCV_GUEST_ATOMICS_H
 
 #include <xen/bug.h>
 
@@ -32,7 +32,7 @@ guest_testop(test_and_change_bit)
 
 #define guest_test_bit(d, nr, p) ((void)(d), test_bit(nr, p))
 
-#endif /* ASM__RISCV__GUEST_ATOMICS_H */
+#endif /* RISCV_GUEST_ATOMICS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/imsic.h b/xen/arch/riscv/include/asm/imsic.h
index 2425430ed116..639ee327dc67 100644
--- a/xen/arch/riscv/include/asm/imsic.h
+++ b/xen/arch/riscv/include/asm/imsic.h
@@ -8,8 +8,8 @@
  * (c) Microchip Technology Inc.
  */
 
-#ifndef ASM_RISCV_IMSIC_H
-#define ASM_RISCV_IMSIC_H
+#ifndef RISCV_IMSIC_H
+#define RISCV_IMSIC_H
 
 #include <xen/rwlock.h>
 #include <xen/spinlock.h>
@@ -96,4 +96,4 @@ unsigned int vcpu_guest_file_id(const struct vcpu *v);
 
 int vimsic_make_domu_dt_node(struct kernel_info *kinfo, unsigned int *phandle);
 
-#endif /* ASM_RISCV_IMSIC_H */
+#endif /* RISCV_IMSIC_H */
diff --git a/xen/arch/riscv/include/asm/insn-defs.h b/xen/arch/riscv/include/asm/insn-defs.h
index 61aaa202fd13..1bcdbfde3fc7 100644
--- a/xen/arch/riscv/include/asm/insn-defs.h
+++ b/xen/arch/riscv/include/asm/insn-defs.h
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM_RISCV_INSN_DEFS_H
-#define ASM_RISCV_INSN_DEFS_H
+#ifndef RISCV_INSN_DEFS_H
+#define RISCV_INSN_DEFS_H
 
 #define HFENCE_VVMA(vaddr, asid) \
     asm volatile ( "hfence.vvma %z0, %z1" \
                   :: "rJ" (vaddr), "rJ" (asid) : "memory" )
 
-#endif /* ASM_RISCV_INSN_DEFS_H */
+#endif /* RISCV_INSN_DEFS_H */
diff --git a/xen/arch/riscv/include/asm/intc.h b/xen/arch/riscv/include/asm/intc.h
index 1bfba7c6155b..909317335769 100644
--- a/xen/arch/riscv/include/asm/intc.h
+++ b/xen/arch/riscv/include/asm/intc.h
@@ -5,8 +5,8 @@
  * (c) 2024 Vates
  */
 
-#ifndef ASM__RISCV__INTERRUPT_CONTOLLER_H
-#define ASM__RISCV__INTERRUPT_CONTOLLER_H
+#ifndef RISCV_INTC_H
+#define RISCV_INTC_H
 
 struct dt_device_node;
 
@@ -91,4 +91,4 @@ void domain_vintc_deinit(struct domain *d);
 
 int vintc_reserve_virq(const struct domain *d, unsigned int virq);
 
-#endif /* ASM__RISCV__INTERRUPT_CONTOLLER_H */
+#endif /* RISCV_INTC_H */
diff --git a/xen/arch/riscv/include/asm/io.h b/xen/arch/riscv/include/asm/io.h
index 9aeafd6b3b1f..547c144b983a 100644
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -35,8 +35,8 @@
  * Copyright (C) 2024 Vates
  */
 
-#ifndef ASM__RISCV__IO_H
-#define ASM__RISCV__IO_H
+#ifndef RISCV_IO_H
+#define RISCV_IO_H
 
 #include <xen/macros.h>
 #include <xen/types.h>
@@ -151,7 +151,7 @@ static inline uint64_t __raw_readq(const volatile void __iomem *addr)
 #define writel(v, c)    ({ __io_bw(); writel_cpu(v, c); __io_aw(); })
 #define writeq(v, c)    ({ __io_bw(); writeq_cpu(v, c); __io_aw(); })
 
-#endif /* ASM__RISCV__IO_H */
+#endif /* RISCV_IO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h
index 57e814d90cf4..2eb68a5baf04 100644
--- a/xen/arch/riscv/include/asm/irq.h
+++ b/xen/arch/riscv/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__IRQ_H
-#define ASM__RISCV__IRQ_H
+#ifndef RISCV_IRQ_H
+#define RISCV_IRQ_H
 
 #include <xen/bug.h>
 #include <xen/device_tree.h>
@@ -57,7 +57,7 @@ int route_irq_to_guest(struct domain *d, unsigned int virq,
 
 int release_guest_irq(const struct domain *d, unsigned int virq);
 
-#endif /* ASM__RISCV__IRQ_H */
+#endif /* RISCV_IRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm-types.h b/xen/arch/riscv/include/asm/mm-types.h
index fa512064b808..a04e8f8b179d 100644
--- a/xen/arch/riscv/include/asm/mm-types.h
+++ b/xen/arch/riscv/include/asm/mm-types.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM_RISCV_MM_TYPES_H
-#define ASM_RISCV_MM_TYPES_H
+#ifndef RISCV_MM_TYPES_H
+#define RISCV_MM_TYPES_H
 
 typedef unsigned long pte_attr_t;
 
-#endif /* ASM_RISCV_MM_TYPES_H */
+#endif /* RISCV_MM_TYPES_H */
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 1ac66283ec9b..bb7c96e7d2a1 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__MM_H
-#define ASM__RISCV__MM_H
+#ifndef RISCV_MM_H
+#define RISCV_MM_H
 
 #include <public/xen.h>
 #include <xen/bug.h>
@@ -349,4 +349,4 @@ void setup_fixmap_mappings(void);
 
 void *early_fdt_map(paddr_t fdt_paddr);
 
-#endif /* ASM__RISCV__MM_H */
+#endif /* RISCV_MM_H */
diff --git a/xen/arch/riscv/include/asm/monitor.h b/xen/arch/riscv/include/asm/monitor.h
index fb3d3e8e3ac6..54e08cab8b8f 100644
--- a/xen/arch/riscv/include/asm/monitor.h
+++ b/xen/arch/riscv/include/asm/monitor.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__MONITOR_H
-#define ASM__RISCV__MONITOR_H
+#ifndef RISCV_MONITOR_H
+#define RISCV_MONITOR_H
 
 #include <xen/bug.h>
 
@@ -14,7 +14,7 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* ASM__RISCV__MONITOR_H */
+#endif /* RISCV_MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/nospec.h b/xen/arch/riscv/include/asm/nospec.h
index f9b0241c98f3..c969a9898ffd 100644
--- a/xen/arch/riscv/include/asm/nospec.h
+++ b/xen/arch/riscv/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2024 Vates */
 
-#ifndef ASM__RISCV__NOSPEC_H
-#define ASM__RISCV__NOSPEC_H
+#ifndef RISCV_NOSPEC_H
+#define RISCV_NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -13,7 +13,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* ASM__RISCV__NOSPEC_H */
+#endif /* RISCV_NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 0d1dace1a0d8..c0538281517f 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__P2M_H
-#define ASM__RISCV__P2M_H
+#ifndef RISCV_P2M_H
+#define RISCV_P2M_H
 
 #include <xen/bitops.h>
 #include <xen/errno.h>
@@ -264,7 +264,7 @@ void p2m_ctxt_switch_from(struct vcpu *p);
 void p2m_ctxt_switch_to(struct vcpu *n);
 void p2m_handle_vmenter(void);
 
-#endif /* ASM__RISCV__P2M_H */
+#endif /* RISCV_P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/page-bits.h b/xen/arch/riscv/include/asm/page-bits.h
index 788c7d951811..73b9f6378c2c 100644
--- a/xen/arch/riscv/include/asm/page-bits.h
+++ b/xen/arch/riscv/include/asm/page-bits.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__PAGE_BITS_H
-#define ASM__RISCV__PAGE_BITS_H
+#ifndef RISCV_PAGE_BITS_H
+#define RISCV_PAGE_BITS_H
 
 #define PAGE_SHIFT              12 /* 4 KiB Pages */
 #define PADDR_BITS              56 /* 44-bit PPN */
@@ -16,4 +16,4 @@
 
 #define PTE_PPN_SHIFT           10
 
-#endif /* ASM__RISCV__PAGE_BITS_H */
+#endif /* RISCV_PAGE_BITS_H */
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index f9e59e61de30..7a2ac2be4df1 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__PAGE_H
-#define ASM__RISCV__PAGE_H
+#ifndef RISCV_PAGE_H
+#define RISCV_PAGE_H
 
 #ifndef __ASSEMBLER__
 
@@ -253,4 +253,4 @@ pte_t pt_walk(vaddr_t va, unsigned int *pte_level);
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__PAGE_H */
+#endif /* RISCV_PAGE_H */
diff --git a/xen/arch/riscv/include/asm/paging.h b/xen/arch/riscv/include/asm/paging.h
index 103384723dc5..4f667aa0e749 100644
--- a/xen/arch/riscv/include/asm/paging.h
+++ b/xen/arch/riscv/include/asm/paging.h
@@ -1,5 +1,5 @@
-#ifndef ASM_RISCV_PAGING_H
-#define ASM_RISCV_PAGING_H
+#ifndef RISCV_PAGING_H
+#define RISCV_PAGING_H
 
 #include <asm-generic/paging.h>
 
@@ -18,4 +18,4 @@ void paging_free_page(struct domain *d, struct page_info *pg);
 
 struct page_info *paging_alloc_page(struct domain *d);
 
-#endif /* ASM_RISCV_PAGING_H */
+#endif /* RISCV_PAGING_H */
diff --git a/xen/arch/riscv/include/asm/pmap.h b/xen/arch/riscv/include/asm/pmap.h
index 146dd29f958a..842c40ab6a94 100644
--- a/xen/arch/riscv/include/asm/pmap.h
+++ b/xen/arch/riscv/include/asm/pmap.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef ASM__RISCV__PMAP_H
-#define ASM__RISCV__PMAP_H
+#ifndef RISCV_PMAP_H
+#define RISCV_PMAP_H
 
 #include <xen/bug.h>
 #include <xen/init.h>
@@ -33,4 +33,4 @@ static inline void __init arch_pmap_unmap(unsigned int slot)
     flush_tlb_one_local(FIXMAP_ADDR(slot));
 }
 
-#endif /* ASM__RISCV__PMAP_H */
+#endif /* RISCV_PMAP_H */
diff --git a/xen/arch/riscv/include/asm/processor.h b/xen/arch/riscv/include/asm/processor.h
index b1745c107100..007c22d2e611 100644
--- a/xen/arch/riscv/include/asm/processor.h
+++ b/xen/arch/riscv/include/asm/processor.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef ASM__RISCV__PROCESSOR_H
-#define ASM__RISCV__PROCESSOR_H
+#ifndef RISCV_PROCESSOR_H
+#define RISCV_PROCESSOR_H
 
 #ifndef __ASSEMBLER__
 
@@ -94,7 +94,7 @@ static inline void sfence_vma(void)
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__PROCESSOR_H */
+#endif /* RISCV_PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/regs.h b/xen/arch/riscv/include/asm/regs.h
index 531958f3d748..24674d37cfe4 100644
--- a/xen/arch/riscv/include/asm/regs.h
+++ b/xen/arch/riscv/include/asm/regs.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__REGS_H
-#define ASM__RISCV__REGS_H
+#ifndef RISCV_REGS_H
+#define RISCV_REGS_H
 
 #ifndef __ASSEMBLER__
 
@@ -17,7 +17,7 @@ static inline bool guest_mode(const struct cpu_user_regs *r)
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__REGS_H */
+#endif /* RISCV_REGS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index 647268e6d0d4..e55be8c1757a 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -6,8 +6,8 @@
  *   Anup Patel <anup.patel@wdc.com>
  */
 
-#ifndef ASM__RISCV__RISCV_ENCODING_H
-#define ASM__RISCV__RISCV_ENCODING_H
+#ifndef RISCV_ENCODING_H
+#define RISCV_ENCODING_H
 
 #define _UL(X) _AC(X, UL)
 #define _ULL(X) _AC(X, ULL)
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index 1952868e963c..2a245d0b4206 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -9,8 +9,8 @@
  * Copyright (c) 2019 Western Digital Corporation or its affiliates.
  */
 
-#ifndef ASM__RISCV__SBI_H
-#define ASM__RISCV__SBI_H
+#ifndef RISCV_SBI_H
+#define RISCV_SBI_H
 
 #include <xen/cpumask.h>
 
@@ -145,4 +145,4 @@ int sbi_remote_hfence_gvma_vmid(const cpumask_t *cpu_mask, vaddr_t start,
  */
 int sbi_init(void);
 
-#endif /* ASM__RISCV__SBI_H */
+#endif /* RISCV_SBI_H */
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index 73ce2f293348..8eee8a746335 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__SETUP_H
-#define ASM__RISCV__SETUP_H
+#ifndef RISCV_SETUP_H
+#define RISCV_SETUP_H
 
 #include <xen/types.h>
 
@@ -11,7 +11,7 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
 
 void init_csr_masks(void);
 
-#endif /* ASM__RISCV__SETUP_H */
+#endif /* RISCV_SETUP_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
index 5dbacf1f9d2d..78f67b917195 100644
--- a/xen/arch/riscv/include/asm/smp.h
+++ b/xen/arch/riscv/include/asm/smp.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__SMP_H
-#define ASM__RISCV__SMP_H
+#ifndef RISCV_SMP_H
+#define RISCV_SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/macros.h>
diff --git a/xen/arch/riscv/include/asm/spinlock.h b/xen/arch/riscv/include/asm/spinlock.h
index 4a607eba520d..1b43ed06365e 100644
--- a/xen/arch/riscv/include/asm/spinlock.h
+++ b/xen/arch/riscv/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef ASM__RISCV__SPINLOCK_H
-#define ASM__RISCV__SPINLOCK_H
+#ifndef RISCV_SPINLOCK_H
+#define RISCV_SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* ASM__RISCV__SPINLOCK_H */
+#endif /* RISCV_SPINLOCK_H */
diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
index a20af81f677d..8dde5c48807b 100644
--- a/xen/arch/riscv/include/asm/string.h
+++ b/xen/arch/riscv/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__STRING_H
-#define ASM__RISCV__STRING_H
+#ifndef RISCV_STRING_H
+#define RISCV_STRING_H
 
-#endif /* ASM__RISCV__STRING_H */
+#endif /* RISCV_STRING_H */
diff --git a/xen/arch/riscv/include/asm/system.h b/xen/arch/riscv/include/asm/system.h
index f33af64fd2ec..cb382487751c 100644
--- a/xen/arch/riscv/include/asm/system.h
+++ b/xen/arch/riscv/include/asm/system.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__SYSTEM_H
-#define ASM__RISCV__SYSTEM_H
+#ifndef RISCV_SYSTEM_H
+#define RISCV_SYSTEM_H
 
 #include <xen/stdbool.h>
 
@@ -78,7 +78,7 @@ static inline bool local_irq_is_enabled(void)
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__SYSTEM_H */
+#endif /* RISCV_SYSTEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index 4d68900151a7..0e5b96a8631c 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef ASM__RISCV__TIME_H
-#define ASM__RISCV__TIME_H
+#ifndef RISCV_TIME_H
+#define RISCV_TIME_H
 
 #include <xen/bug.h>
 #include <xen/muldiv64.h>
@@ -29,7 +29,7 @@ void preinit_xen_time(void);
 
 extern int (* __ro_after_init set_xen_timer)(uint64_t deadline);
 
-#endif /* ASM__RISCV__TIME_H */
+#endif /* RISCV_TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/traps.h b/xen/arch/riscv/include/asm/traps.h
index 21fa3c3259b3..08c6215e931a 100644
--- a/xen/arch/riscv/include/asm/traps.h
+++ b/xen/arch/riscv/include/asm/traps.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__TRAPS_H
-#define ASM__RISCV__TRAPS_H
+#ifndef RISCV_TRAPS_H
+#define RISCV_TRAPS_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ void trap_init(void);
 
 #endif /* __ASSEMBLER__ */
 
-#endif /* ASM__RISCV__TRAPS_H */
+#endif /* RISCV_TRAPS_H */
diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h
index d801596a2013..b0d4c62aef36 100644
--- a/xen/arch/riscv/include/asm/types.h
+++ b/xen/arch/riscv/include/asm/types.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__TYPES_H
-#define ASM__RISCV__TYPES_H
+#ifndef RISCV_TYPES_H
+#define RISCV_TYPES_H
 
 #if defined(CONFIG_RISCV_32)
 
@@ -25,7 +25,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* ASM__RISCV__TYPES_H */
+#endif /* RISCV_TYPES_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/vaplic.h b/xen/arch/riscv/include/asm/vaplic.h
index 96080bfbc23b..dcbe0d59a886 100644
--- a/xen/arch/riscv/include/asm/vaplic.h
+++ b/xen/arch/riscv/include/asm/vaplic.h
@@ -7,8 +7,8 @@
  * Copyright (c) Microchip.
  */
 
-#ifndef ASM__RISCV__VAPLIC_H
-#define ASM__RISCV__VAPLIC_H
+#ifndef RISCV_VAPLIC_H
+#define RISCV_VAPLIC_H
 
 #include <xen/kernel.h>
 #include <xen/types.h>
@@ -31,4 +31,4 @@ struct vaplic {
 int domain_vaplic_init(struct domain *d);
 void domain_vaplic_deinit(struct domain *d);
 
-#endif /* ASM__RISCV__VAPLIC_H */
+#endif /* RISCV_VAPLIC_H */
diff --git a/xen/arch/riscv/include/asm/vmid.h b/xen/arch/riscv/include/asm/vmid.h
index 1c500c4aff70..2b4fc0df8e63 100644
--- a/xen/arch/riscv/include/asm/vmid.h
+++ b/xen/arch/riscv/include/asm/vmid.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM_RISCV_VMID_H
-#define ASM_RISCV_VMID_H
+#ifndef RISCV_VMID_H
+#define RISCV_VMID_H
 
 struct vcpu;
 struct vcpu_vmid;
@@ -11,4 +11,4 @@ bool vmid_handle_vmenter(struct vcpu_vmid *vmid);
 void vmid_flush_vcpu(struct vcpu *v);
 void vmid_flush_hart(void);
 
-#endif /* ASM_RISCV_VMID_H */
+#endif /* RISCV_VMID_H */
diff --git a/xen/arch/riscv/include/asm/vsbi.h b/xen/arch/riscv/include/asm/vsbi.h
index fa0cad604e8b..c5902fa0728d 100644
--- a/xen/arch/riscv/include/asm/vsbi.h
+++ b/xen/arch/riscv/include/asm/vsbi.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier:  GPL-2.0-only */
 
-#ifndef ASM_RISCV_VSBI_H
-#define ASM_RISCV_VSBI_H
+#ifndef RISCV_VSBI_H
+#define RISCV_VSBI_H
 
 struct cpu_user_regs;
 
diff --git a/xen/arch/riscv/include/asm/vtimer.h b/xen/arch/riscv/include/asm/vtimer.h
index b4d48d1a1732..950795be12f3 100644
--- a/xen/arch/riscv/include/asm/vtimer.h
+++ b/xen/arch/riscv/include/asm/vtimer.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef ASM__RISCV__VTIMER_H
-#define ASM__RISCV__VTIMER_H
+#ifndef RISCV_VTIMER_H
+#define RISCV_VTIMER_H
 
 #include <xen/timer.h>
 
@@ -17,4 +17,4 @@ void vtimer_set_timer(struct vtimer *t, uint64_t ticks);
 void vtimer_ctxt_switch_from(struct vcpu *p);
 void vtimer_ctxt_switch_to(struct vcpu *n);
 
-#endif /* ASM__RISCV__VTIMER_H */
+#endif /* RISCV_VTIMER_H */

base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:24:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:24:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474935.1681786 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzJk-0004f2-C1; Thu, 05 Nov 2026 15:23:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474935.1681786; Thu, 05 Nov 2026 15:23:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzJk-0004ev-8d; Thu, 05 Nov 2026 15:23:56 +0000
Received: by outflank-mailman (input) for mailman id 1474935;
 Thu, 05 Nov 2026 15:23:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <richard.henderson@linaro.org>) id 1xOzJi-0004ep-WC
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:23:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzJi-000kcE-4h
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:23:54 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <richard.henderson@linaro.org>)
 id 6aec9f7a-e002-0a2a0a5209dd-0a2a4508bcd4-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:23:54 +0100
Received: from [209.85.210.176] (helo=mail-pf1-f176.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <richard.henderson@linaro.org>)
 id 6aec9f88-f659-0a2a45080019-d155d2b0d16b-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:23:53 +0100
Received: by mail-pf1-f176.google.com with SMTP id
 d2e1a72fcca58-8b2382bf051so429086b3a.3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 07:23:53 -0800 (PST)
Received: from [192.168.0.4] (174-21-68-150.tukw.qwest.net. [174.21.68.150])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-8b09b668748sm2115551b3a.43.2026.11.05.07.23.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 07:23:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=linaro.org header.i="@linaro.org" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Content-Language:From:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1793892232; x=1794497032; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=Mcj2uVBctlGM4Q78LCis/HWW7PQmqr/jj9xsfQ1khEo=;
        b=g/qmTxT/+6oFcyusSXM6pTfNO+v5W4YyDix1vvFNaleCsGFrAnciOUhgFbRt0+Ju9t
         3dCeZHifrqMJUj2zmUj8F6pevJdskWwCUK7Zfc/7EqZPL1hNZTBleRQLDTCiKP1uNpY9
         xgpKqdtIXKTeZbVStGDoVmftFVuf91StyV00UEXtVb8FsgA01tSua/UfmFxnMohMwtum
         hnOlkx5tOssOxN/S3u8PjkOqjTPihP2jMjmVPcofx9r9JCE3aVAX3Upwp+iKSeDFm+kn
         2sXXsJatYh6nBDJpFHvbyzBzXY3uEO6duF60avNq+YMWUo1lM/gD+6rPPZt4QedwwKc1
         4b6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793892232; x=1794497032;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :from:references:cc:to:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Mcj2uVBctlGM4Q78LCis/HWW7PQmqr/jj9xsfQ1khEo=;
        b=afO4tJ2988HNuhAbYSgNc54MYNoOWmz7GBWwy9E/Bmy4NipaOO2XKPBbGk1MJfwKT3
         rhazAWJ3/v6/m8l/MQlqp8avYxKrOlPDD+DbLjd5Hw+fBu9ubwpiNEC5hQpwq4Fu9m9n
         gvDvTuwd6qfiIJ/HsJVrhkMPnHvaKsXj6pnIbixPDLeQUEkIl3GL+uFrtobKB5hpTRtS
         REC8oo4yYbOiYtatAzf1czFJmM6dNKHsI95krpz1RiOC5qdKTgngCS2X5iTgKJzHr6wH
         IDkCntKvDHo8iGLkFOrUDroUrAd6OogkN+6aq2jzx9VrxQYzpKb3cYNb4JMdK9bHwsWV
         fMGA==
X-Forwarded-Encrypted: i=1; AKwUvBy/eTZNjBJ7CV2eZ9h3vXxX0bSOtyNGndrd+cM2d0iV2K0oHKs/8etvssBZMVZE+n5qLzXqpX1D6Lw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8V1DFiTh+nT9axl15f4UIRRcWxDMNKh8HQpA4yUw6h5AtMpAyB
	sGKE6NRIxw+VVjwt3g7BazFxkumDf8x7XGcocOUkfn4bleYyg4p0qBm0DRYspRMwPEM=
X-Gm-Gg: AYBFou0OeESQMsWnaFxi5FwFKgqRVRjyALF5YzcqQ6rwyy5pukXs6mNcWBrUHj5DJLg
	PDcjTb4Jn8sR3j8V56a3HBuOMsqY/1/Hgy5OMcNzlCS19RoYCGf8dbyVyauL2fU/rAYFUWwIG5g
	fjfl7J7UzOYwrVz3qORDrP5zvKmMcuNxwOpEEJS0Q57F5nevG9xzkITTpZsY9AlsB+YSNVTSieK
	BPBXyW+y+9nDrpaOJklx8JOLfbSG7u3webuc19Fj6okYIoI0YlU6YFvZktPH98JBzYHYf3dwUnb
	xPTl3YyaviHuYI7v4WxMN4spJt0Ac7S2wobBvtoMuruhu70YrGV1W+yqji7W5KTK+8fK0Anjawb
	EJumxc3bUfNsqfipHVrMeW27YacHD2+AIksfzBkjyzFyg4ijOdTQJr/cBW3kYiNQzIWdJ49gOjo
	Eu54air9gcL8l+rlFwJL3lKf0f8IZI4NomDY7wKpqNWvt0KTESkwl1FKWWDfNYhYmVEBqDyBEug
	zN95f4QBumLzwelNZor+nwl8BElxX9KvbZCkdDECmRSs2qmxIti53vzLBMb2I0BamDKG/gQktje
	6LWJ83H45jYXIe4ipDWbZoZ11yDPy/BkpNjZUEjtIEmtTF6/M/94cQvlXflG41BgalNAyVk=
X-Received: by 2002:a05:6a00:4395:b0:89d:a947:9d58 with SMTP id d2e1a72fcca58-8a9beb64f99mr15120503b3a.25.1793892231504;
        Thu, 05 Nov 2026 07:23:51 -0800 (PST)
Message-ID: <e521051e-146f-4992-a6b4-a75fe30b52be@linaro.org>
Date: Thu, 5 Nov 2026 07:23:48 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PULL v2 00/25] Tracing patches
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
 Gerd Hoffmann <kraxel@redhat.com>, xen-devel@lists.xenproject.org,
 qemu-ppc@nongnu.org, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,
 Anthony PERARD <anthony@xenproject.org>, Paolo Bonzini
 <pbonzini@redhat.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Alexey Kardashevskiy <aik@ozlabs.ru>, Helge Deller <deller@gmx.de>
References: <20261104201802.11556-1-stefanha@redhat.com>
From: Richard Henderson <richard.henderson@linaro.org>
Content-Language: en-US
In-Reply-To: <20261104201802.11556-1-stefanha@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793892234-DF8D587B-B992BB86/0/0
X-purgate-type: clean
X-purgate-size: 762

On 11/4/26 12:17, Stefan Hajnoczi wrote:
> The following changes since commit f29ccc287a6cfdd51d3a4fd17fbe9af3310a0ac5:
> 
>    Merge tag 'pull-11.2-misc-fixes-031126-1' ofhttps://gitlab.com/stsquad/qemu into staging (2026-11-03 14:44:10 -0800)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request
> 
> for you to fetch changes up to ddfa19c50616657cda4476260ce300c9463b09d3:
> 
>    trace: remove 'trace_event_get_state' wrapper (2026-11-04 13:19:12 -0500)
> 
> ----------------------------------------------------------------
> Pull request
> 
> v2:
> - Update "trace: include qemu_loglevel_mask(LOG_TRACE) in guard" so the Rust build succeeds [Daniel]

Applied, thanks.

r~


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:27:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474946.1681793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzNL-0005NN-Ql; Thu, 05 Nov 2026 15:27:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474946.1681793; Thu, 05 Nov 2026 15:27:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzNL-0005NG-Na; Thu, 05 Nov 2026 15:27:39 +0000
Received: by outflank-mailman (input) for mailman id 1474946;
 Thu, 05 Nov 2026 15:27:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@swg.vates.tech>)
 id 1xOzNK-0005NA-Hf
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:27:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzNJ-00B3o9-U6
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:27:37 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@swg.vates.tech>)
 id 6aeca049-e002-0a2a0a5209dd-0a2a4507a7c2-36
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:27:37 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@swg.vates.tech>)
 id 6aeca069-b4ea-0a2a45070019-b9ff1c238bb7-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:27:37 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1ac529128000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 05 Nov 2026 15:27:34 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id E09DB803C6;
 Thu,  5 Nov 2026 16:27:28 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=L3KjkS7C3H34UZojYf1wtqzN35+uGoJRRtXvZavWavw=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=qrzIIMllNsCkRASy40VemjqiAs9xpGDem29MCJaDYva9G/tWzyg+bQXxDzLrtLqRGcqbtF3Ex
 gnnVhUflMXSSfCBjJcd3CBoKWSztz1pWyshYqSjYMUpDQF9Y1cDmzHx1bM4SNvxs9Xwi6q5pz3g
 4jFXecLjtuVO9VVGdqwqwDg+5prpdDvas9z94EGXAX8ns2cJYSOhVMKEpbzsK8hBb3zgVt1XZSM
 BGSYv94faNvXmApPJ/qynElY1sVakLSdWb+Kv+uYJk/Ntndrd15oIPFluF2auCTWKkUiM0sWNuz
 u+C5CqUybqdUMhFiI2BL5hyhjQ7zq6qzsFrVXav5W2Zw==
X-Zone-Loop: 32e6bee551c956cdf796edb312026b7e1c448831d2e5
x-campaign-type: default
x-transaction-id: 9c23942b-da7b-4d2b-9053-9f36883a1375
x-swg-uid: 01-f4bf4d26-8cf5-44dc-829f-7f8899f859f9
X-Mailer: Sweego
Message-ID:
 <1793892454.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@vates.tech>
x-swg-bid: 1793892454.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 29/39] xen/riscv: prepare new IMSIC VS-file
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <81b0b1fa-1aa4-4646-bdfa-5e773cb876f4@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <7f00946a6b1b67e79f94e3c665f8f0ce9d5d0e5a.1790779209.git.oleksii.kurochko@gmail.com>
 <1792760165.8631fc262581453bbf619ec5b2062170.1a168d535ab000f79f@vates.tech>
 <81b0b1fa-1aa4-4646-bdfa-5e773cb876f4@gmail.com>
Date: Thu, 05 Nov 2026 16:27:22 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793892443; l=1872;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=1tZzpf6BPXLiCxfAWVtVDWYFaE7Q6xxJ9GrDk92jLFQ=;
 b=1q3dqNrVgzUQMcp0ND0XYygNADLuILqcESeMC47v36SXbKmWDHi0xT5zQZtVEqnion7gdy3be
 IANJFtfKATUAJHbxfjETejLCx64KGGTm74xKsortD7VVYSassT9ptfG
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793892449125
X-purgate-ID: tlsNG-ef75cf/1793892457-A46CAAE4-FF3D0378/0/0
X-purgate-type: clean
X-purgate-size: 1872

On 2026-11-05 13:49 +0100, Oleksii Kurochko wrote:
> [ ... 79 lines skipped ... ]
> >> +
> > What does the switch buy? ireg only ends up as the value written to
> > vsiselect, not as a CSR number, so it doesn't need to be a compile-time
> > constant. imsic_vs_csr_write(ireg, val) does the same, without the 128 case
> > labels and the macro pyramid. If there's a reason, it wants stating in a
> > comment; otherwise please drop the pyramid (an ASSERT() on the range can
> > stay if you want one).
> 
> Good point.
> 
> I will drop it and use the following instead:
> 
> /*
>   * On RV64 a 64-bit EIx group is the even-numbered register alone, 
> whereas on
>   * RV32 it is split into the even-numbered (low half) and the following
>   * odd-numbered (high half) register. ireg names the first, even-numbered
>   * register of such a group, among eip0..eip63 or eie0..eie63.
>   */
> static void imsic_eix_check(unsigned int ireg)
> {
>      ASSERT(!(ireg & 1));
>      ASSERT((ireg >= IMSIC_EIP0 && ireg < IMSIC_EIP0 + 64) ||
>             (ireg >= IMSIC_EIE0 && ireg < IMSIC_EIE0 + 64));
> }
> 
> /* Write a whole 64-bit EIx group, laid out as described above. */
Nit: "above" may go stale if the code moves. Better to name the function
you are referring to.

Also, the parameter isn't an *ireg value. It is the register number
written to *iselect; *ireg is only the data window. Per AIA (IMSIC
chapter, "Interrupt files"), values 0x80-0xFF of *iselect select
eip0-63/eie0-63, and imsic_csr_write() uses its first argument that way:

#define imsic_csr_write(c, v)   \
do {                            \
    csr_write(CSR_SISELECT, c); \
    csr_write(CSR_SIREG, v);    \
} while (0)

So I'd rename it to "iselect" (here and in the other helpers taking
the same argument).

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:32:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:32:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474957.1681804 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzRp-00076N-Bt; Thu, 05 Nov 2026 15:32:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474957.1681804; Thu, 05 Nov 2026 15:32:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzRp-00076C-8F; Thu, 05 Nov 2026 15:32:17 +0000
Received: by outflank-mailman (input) for mailman id 1474957;
 Thu, 05 Nov 2026 15:32:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@swg.vates.tech>)
 id 1xOzRo-000766-69
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:32:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzRn-00ACEC-Ir
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:32:15 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@swg.vates.tech>)
 id 6aeca17a-8faa-0a2a0a5109dd-0a2a4504e3c8-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:32:15 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@swg.vates.tech>)
 id 6aeca17f-b57f-0a2a45040019-b9ff1c22a169-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:32:15 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1ac56c714000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 05 Nov 2026 15:32:10 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id C4F3781B70;
 Thu,  5 Nov 2026 16:32:09 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=67IJ2VlkQk8CWLRCmfYjQ8FZ+IjQ53SgA/8l9TtJeDA=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=DgpCJKVWIF/vJFklcAHfAVL14Io6uEZFdSKIu80j5EoX9q+jM7hcsl6JWYtVC92+uajQmAMlf
 9l3+yA/N45dxQuIPBheP6Mj4qEYdJ1nT421Rv2TLAF55r8XuwQXVUkLb5Lnt8K4PKwiSc0027GG
 yvWNcSHj5rU4zlmWbDYq3QwWXeGXc8Mfq1qNwe7l0oHaUAp2gPBMgm5wJppnr6FESAh2j6nt3EK
 pd8wzuFP6arFKXJZdeRzg/EjOVzi+YPwq9aD6I2siwwMVS0/6kZ6X3DuIIp/pj0X25a5b5g+9+W
 Dgjs1O8XaE9h2lY1fBQWjFqGJ8jS0eY/HmZ1ulYAfLyw==
X-Zone-Loop: 72a1a22e8b9728abd988cca73efcc5cf3c8f7190a366
x-campaign-type: default
x-transaction-id: df7246e1-b429-4078-883a-64b99563e646
x-swg-uid: 01-32ad53e0-f6b3-40da-bbbe-9105eccea577
X-Mailer: Sweego
Message-ID:
 <1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@vates.tech>
x-swg-bid: 1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 30/39] xen/riscv: implement APLIC-IMSIC-hart sync
 barrier for vCPU migration
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <2075cb10e5f6df787b29f2f087632c82b787a007.1790779209.git.oleksii.kurochko@gmail.com>
 <c77101fe-2505-4cdb-8520-52f92a1c668d@gmail.com>
 <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
 <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
Date: Thu, 05 Nov 2026 16:32:03 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793892724; l=446;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=rbHjhBRJ74ax8FvfD/Slk34KbzKzPkVzevsTvpuAz1A=;
 b=7kBKG5hyOFCYiJlobCvzpUwKAeWb5opkica6jYUZDZI7UCro8hiKHXeoj1aSjbjBXGwFpdkz2
 h6UD5b/nlOLARwMeE3KU2zplvMNMVA5LrUySfHXA3PnpJlv1futqFtn
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793892730034
X-purgate-ID: tlsNG-ebf023/1793892735-510DDB50-975678DE/0/0
X-purgate-type: clean
X-purgate-size: 446

On 2026-11-05 15:21 +0100, Oleksii Kurochko wrote:
> [ ... 348 lines skipped ... ]
> > LGTM, but I wonder why, as I said in the original patch, sync_id is
> > really needed.
> > 
> 
> I think that I am not understand your response. Could you please 
> re-phrase it?
I'm questionning the need of the sync_id field as it will always be
equal to imsic_cfg.nr_ids, couldn't we drop it? 

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:36:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:36:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474969.1681812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzWG-0007uQ-RM; Thu, 05 Nov 2026 15:36:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474969.1681812; Thu, 05 Nov 2026 15:36:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzWG-0007uJ-Ob; Thu, 05 Nov 2026 15:36:52 +0000
Received: by outflank-mailman (input) for mailman id 1474969;
 Thu, 05 Nov 2026 15:36:51 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOzWF-0007uD-5R
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:36:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzWE-00EUlJ-6p
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:36:50 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac5afe7c000403d@swg.vates.tech>)
 id 6aeca282-e002-0a2a0a5209dd-0a2a4506a65e-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:36:49 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac5afe7c000403d@swg.vates.tech>)
 id 6aeca291-195a-0a2a45060019-b9ff1c22a1d5-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:36:49 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1ac5afe7c000403d.001 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 05 Nov 2026 15:36:46 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id C367F803C6
 for <xen-devel@lists.xenproject.org>; Thu,  5 Nov 2026 16:30:12 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=n7GW3ZnjSvx+O8XRcRzMO+qqMRUsMfHk8AdiKnMDwYo=;
 h=from:subject:date:message-id:to:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=AkjME4D9qbzUv140OhKKDxEjbUNvvgnbVjYBRg+ujfPCCaJHF5i0JRU3ItlOUTWs0gCDtOjcj
 ZvCxI9nhLxd0A6ZtGsRQ0sG2vUZ3rOdbQ+p0myEjIdoiSF6KYk8XrFba39dDJ1k/Eh5mi95jpXa
 M7UPK90t5i5fGXltr/7XeQpI5gZOLLlt5YK5w2PBjk0EcG/y2kBOe73pHnMxX111vukkpXvZteB
 HcmRWsfyt54MPSO86/B68JBBiavJ7WKjf80MuqNX2jj4ufI55eQNVw4jcufqUavLnpRjXmW8PIU
 0Dg8aOlEoa7h0WSZa7OvoMhy82MnRTpcmPDNQk4gzgFA==
X-Zone-Loop: 7b5bfe194d57e7e64c2ae1d61e1a26bcc3bbf1915948
x-campaign-type: default
x-transaction-id: c379f916-9a6e-456e-bb29-d2fbab847276
x-swg-uid: 01-b061c053-8e4c-4fac-bbde-8d3a2a54d873
X-Mailer: Sweego
Message-ID:
 <1793893007.8631fc262581453bbf619ec5b2062170.1a1ac5afe7c000403d@vates.tech>
x-swg-bid: 1793893007.8631fc262581453bbf619ec5b2062170.1a1ac5afe7c000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 5 Nov 2026 16:30:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/riscv: align header inclusion guards with
 CODING_STYLE
To: xen-devel@lists.xenproject.org
References: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Content-Language: en-US
Autocrypt: addr=baptiste.le-duc@vates.tech; keydata=
 xsBNBGoPSX8BCADSuTikqW3FD4mscQugY1thRaKlIhcJ2G9YCWYXAlp+xosvTlzfIftOZZim
 750MLvyKtLPkQzB6TZtFZBiexSraaF/MdDKRTT5DcVa3r7ZnHgqMclWlPa4ioysS4yFcJanL
 cyNOT7HUFvIdirMMqiViedfYtS0GORPBBPVISD6ClMz3ecHIxqllfq9CHYQn4amKEfHmh6tm
 Rufo4Gjl6x8cUFZZlRQf+aCmUzdSPA0P5u3sueYH1uEz4w/jbD53MlKqzCvxUeOsfS2swTQA
 6mS9jIgOjNadpUTOzKfDHMgFirtG+HFpm45Nwp6KQizxgDVOfTnOfVHm5Gwqm3ETl9y5ABEB
 AAHNPEJhcHRpc3RlIExlIER1YyAoVmF0ZXMgWXViaWtleSkgPGJhcHRpc3RlLmxlLWR1Y0B2
 YXRlcy50ZWNoPsLAjgQTAQoAOBYhBGiSJ6HgW88MgT/gfu2Cu2XL9M6QBQJqD0l/AhsDBQsJ
 CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO2Cu2XL9M6QuMcH/ihiy/Nrxp919AmY0ENnc0NK
 r/2LDvW/hrX4FfbpxAmrGmQ7MU1aQTk0JDbfcsG8OYH6wO5sqnXb1gz50YrEdpfVSbHz5YTZ
 EhDIxE4g7NrvJZh3Qc0m0CAyjYTNHen7J6olVaCMjrOH7uRHUYZ7Pl3am9mZosfLmez/aWJO
 a6ihQxBXHI75brlk1teIURkep2kP7P0Flmfl4cA//saREoTF7GXCtjOSQk/xg8PP0Sswqp5G
 TdJptn3FQn6lAzfz0eFSYqkaoX2c2k1MDa7o+UX9cfGPL8ybMKnYkasLxck6eOWGJWf+YTrm
 ga/r0kBaftmqNDgt5nI2jNTDwZcT9g3OwE0Eag9JfwEIAM6IWbuBSvz+erv27oGDDpo8M6Fp
 dGUvft7v+WceHUfxiXpYFx9qgIU6XGy6y+3lJMAvNcltS8DuhioqMlfKRSYGKZlpliY65dNP
 557IuM4ctVJ+I9CVclvv9eahARQKgF5auLJAAlvGSmU+ufNvlwTUmLIRcrPviTmB6X5jJYc+
 fiNeyI0HcsgcN21C0r62tUCypuZ+vgEJXw2bx1V8mVGZKxdGJPh58QF6kRK+xmd4kEComLGV
 BeM6BcVOtEjDcGNC0tLhXb0p9g1Ys55iA8sd6s4WacyolW2J6rwmcOkjiWexWw1caYgIWAV1
 004M3gwUaOz0dGq2i7HQ0AiVfVkAEQEAAcLAdgQYAQoAIBYhBGiSJ6HgW88MgT/gfu2Cu2XL
 9M6QBQJqD0l/AhsMAAoJEO2Cu2XL9M6QovYH/RjstyL5o/V5K74ylBtz0j5t3pLX5JKbwApi
 656rGgDdqElImyvvZppNMl/mgHNzvxmfFAhJXnSX9f1fqVEQKOGEhLUastnl/ssBiE5x7btM
 V0GAffxXbXJZbVv4b/DI+gVrOPc2YXlVwruapvTZNtD3hqPrkjrmq5WTtGR2loIVSe62hmh0
 BGD2Fy79b/hYWyBqhayPBEjwGW75u4/yn+Yqy1PgG3hIcvg7GSuT3akhHZSB2Mbguzcoyf9Q
 DJl6t33JxPRkkNrEdkPPmRlQCTSiUkVjKqMDF3jlINWsJ5t4jKFsNF91ksdw7aQgiX+tQIpE
 ugMC1NuNi5dDGip66bw=
In-Reply-To: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793892612849
X-purgate-ID: tlsNG-16d1c6/1793893009-F540B77B-9D16B174/10/73395122804
X-purgate-type: spam
X-purgate-size: 39313

Thanks for that!
LGTM:
Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

On 11/5/26 4:06 PM, Oleksii Kurochko wrote:
> Commit 7abea85c9f12 ("CODING_STYLE: Updated header guard
> recommendations") changed the recommended naming of inclusion guards
> for arch-specific headers to <arch>_<something>_H. Most RISC-V headers
> still use the ASM__RISCV__<FILENAME>_H form required by the previous
> rules, and a few use ASM_RISCV_<FILENAME>_H, which follows neither.
> 
> Rename the guards to RISCV_<SOMETHING>_H. While doing so, also fix two
> guards which don't match their file names: extable.h used
> ASM__RISCV__ASM_EXTABLE_H and intc.h used the misspelt
> ASM__RISCV__INTERRUPT_CONTOLLER_H. For riscv_encoding.h, don't repeat
> the architecture name and use RISCV_ENCODING_H.
> 
> No functional change.
> 
> Assisted-by: Claude-Code:claude-opus-5-5
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>   xen/arch/riscv/aplic-priv.h                 | 6 +++---
>   xen/arch/riscv/include/asm/acpi.h           | 6 +++---
>   xen/arch/riscv/include/asm/aplic.h          | 6 +++---
>   xen/arch/riscv/include/asm/asm.h            | 6 +++---
>   xen/arch/riscv/include/asm/atomic.h         | 6 +++---
>   xen/arch/riscv/include/asm/bitops.h         | 6 +++---
>   xen/arch/riscv/include/asm/bug.h            | 6 +++---
>   xen/arch/riscv/include/asm/cache.h          | 6 +++---
>   xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
>   xen/arch/riscv/include/asm/config.h         | 6 +++---
>   xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
>   xen/arch/riscv/include/asm/csr.h            | 6 +++---
>   xen/arch/riscv/include/asm/current.h        | 6 +++---
>   xen/arch/riscv/include/asm/domain.h         | 6 +++---
>   xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
>   xen/arch/riscv/include/asm/event.h          | 6 +++---
>   xen/arch/riscv/include/asm/extable.h        | 6 +++---
>   xen/arch/riscv/include/asm/fence.h          | 6 +++---
>   xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
>   xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
>   xen/arch/riscv/include/asm/guest-layout.h   | 6 +++---
>   xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
>   xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
>   xen/arch/riscv/include/asm/imsic.h          | 6 +++---
>   xen/arch/riscv/include/asm/insn-defs.h      | 6 +++---
>   xen/arch/riscv/include/asm/intc.h           | 6 +++---
>   xen/arch/riscv/include/asm/io.h             | 6 +++---
>   xen/arch/riscv/include/asm/irq.h            | 6 +++---
>   xen/arch/riscv/include/asm/mm-types.h       | 6 +++---
>   xen/arch/riscv/include/asm/mm.h             | 6 +++---
>   xen/arch/riscv/include/asm/monitor.h        | 6 +++---
>   xen/arch/riscv/include/asm/nospec.h         | 6 +++---
>   xen/arch/riscv/include/asm/p2m.h            | 6 +++---
>   xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
>   xen/arch/riscv/include/asm/page.h           | 6 +++---
>   xen/arch/riscv/include/asm/paging.h         | 6 +++---
>   xen/arch/riscv/include/asm/pmap.h           | 6 +++---
>   xen/arch/riscv/include/asm/processor.h      | 6 +++---
>   xen/arch/riscv/include/asm/regs.h           | 6 +++---
>   xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
>   xen/arch/riscv/include/asm/sbi.h            | 6 +++---
>   xen/arch/riscv/include/asm/setup.h          | 6 +++---
>   xen/arch/riscv/include/asm/smp.h            | 4 ++--
>   xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
>   xen/arch/riscv/include/asm/string.h         | 6 +++---
>   xen/arch/riscv/include/asm/system.h         | 6 +++---
>   xen/arch/riscv/include/asm/time.h           | 6 +++---
>   xen/arch/riscv/include/asm/traps.h          | 6 +++---
>   xen/arch/riscv/include/asm/types.h          | 6 +++---
>   xen/arch/riscv/include/asm/vaplic.h         | 6 +++---
>   xen/arch/riscv/include/asm/vmid.h           | 6 +++---
>   xen/arch/riscv/include/asm/vsbi.h           | 4 ++--
>   xen/arch/riscv/include/asm/vtimer.h         | 6 +++---
>   53 files changed, 156 insertions(+), 156 deletions(-)
> 
> diff --git a/xen/arch/riscv/aplic-priv.h b/xen/arch/riscv/aplic-priv.h
> index 35100d3a64fe..009020c83fb9 100644
> --- a/xen/arch/riscv/aplic-priv.h
> +++ b/xen/arch/riscv/aplic-priv.h
> @@ -11,8 +11,8 @@
>    * Copyright (c) Vates.
>    */
>   
> -#ifndef ASM_RISCV_APLIC_PRIV_H
> -#define ASM_RISCV_APLIC_PRIV_H
> +#ifndef RISCV_APLIC_PRIV_H
> +#define RISCV_APLIC_PRIV_H
>   
>   #include <xen/spinlock.h>
>   #include <xen/types.h>
> @@ -47,4 +47,4 @@ struct aplic_priv {
>    */
>   extern unsigned int guest_aplic_num_sources;
>   
> -#endif /* ASM_RISCV_APLIC_PRIV_H */
> +#endif /* RISCV_APLIC_PRIV_H */
> diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
> index 0c553bd6b8fa..8c769b2c0bd9 100644
> --- a/xen/arch/riscv/include/asm/acpi.h
> +++ b/xen/arch/riscv/include/asm/acpi.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__ACPI_H
> -#define ASM__RISCV__ACPI_H
> +#ifndef RISCV_ACPI_H
> +#define RISCV_ACPI_H
>   
> -#endif /* ASM__RISCV__ACPI_H */
> +#endif /* RISCV_ACPI_H */
> diff --git a/xen/arch/riscv/include/asm/aplic.h b/xen/arch/riscv/include/asm/aplic.h
> index a2af55d54fc0..51be469b69e5 100644
> --- a/xen/arch/riscv/include/asm/aplic.h
> +++ b/xen/arch/riscv/include/asm/aplic.h
> @@ -8,8 +8,8 @@
>    * Copyright (c) Microchip.
>    */
>   
> -#ifndef ASM_RISCV_APLIC_H
> -#define ASM_RISCV_APLIC_H
> +#ifndef RISCV_APLIC_H
> +#define RISCV_APLIC_H
>   
>   #include <xen/types.h>
>   
> @@ -141,4 +141,4 @@ struct aplic_regs {
>       uint32_t target[1023];      /* 0x3004 */
>   };
>   
> -#endif /* ASM_RISCV_APLIC_H */
> +#endif /* RISCV_APLIC_H */
> diff --git a/xen/arch/riscv/include/asm/asm.h b/xen/arch/riscv/include/asm/asm.h
> index e147b6f05388..a663db4c23e4 100644
> --- a/xen/arch/riscv/include/asm/asm.h
> +++ b/xen/arch/riscv/include/asm/asm.h
> @@ -3,8 +3,8 @@
>    * Copyright (C) 2015 Regents of the University of California
>    */
>   
> -#ifndef ASM__RISCV__ASM_H
> -#define ASM__RISCV__ASM_H
> +#ifndef RISCV_ASM_H
> +#define RISCV_ASM_H
>   
>   #ifdef __ASSEMBLER__
>   #include <xen/linkage.h>
> @@ -52,4 +52,4 @@
>   #error "Unexpected __SIZEOF_SHORT__"
>   #endif
>   
> -#endif /* ASM__RISCV__ASM_H */
> +#endif /* RISCV_ASM_H */
> diff --git a/xen/arch/riscv/include/asm/atomic.h b/xen/arch/riscv/include/asm/atomic.h
> index 8e0425cea0b9..3a0184d35dcd 100644
> --- a/xen/arch/riscv/include/asm/atomic.h
> +++ b/xen/arch/riscv/include/asm/atomic.h
> @@ -19,8 +19,8 @@
>    * Copyright (C) 2024 Vates SAS
>    */
>   
> -#ifndef ASM__RISCV__ATOMIC_H
> -#define ASM__RISCV__ATOMIC_H
> +#ifndef RISCV_ATOMIC_H
> +#define RISCV_ATOMIC_H
>   
>   #include <xen/atomic.h>
>   
> @@ -266,7 +266,7 @@ ATOMIC_OPS()
>   #undef ATOMIC_OPS
>   #undef ATOMIC_OP
>   
> -#endif /* ASM__RISCV__ATOMIC_H */
> +#endif /* RISCV_ATOMIC_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
> index 72a4a8c155d6..471eb07bd287 100644
> --- a/xen/arch/riscv/include/asm/bitops.h
> +++ b/xen/arch/riscv/include/asm/bitops.h
> @@ -1,8 +1,8 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   /* Copyright (C) 2012 Regents of the University of California */
>   
> -#ifndef ASM__RISCV__BITOPS_H
> -#define ASM__RISCV__BITOPS_H
> +#ifndef RISCV_BITOPS_H
> +#define RISCV_BITOPS_H
>   
>   #include <asm/system.h>
>   
> @@ -132,7 +132,7 @@ static inline void clear_bit(int nr, volatile void *p)
>   
>   #define arch_hweightl(x) __builtin_popcountl(x)
>   
> -#endif /* ASM__RISCV__BITOPS_H */
> +#endif /* RISCV_BITOPS_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
> index c2cdc2dc2a46..8834dcea8197 100644
> --- a/xen/arch/riscv/include/asm/bug.h
> +++ b/xen/arch/riscv/include/asm/bug.h
> @@ -4,8 +4,8 @@
>    * Copyright (C) 2021-2023 Vates
>    *
>    */
> -#ifndef ASM__RISCV__BUG_H
> -#define ASM__RISCV__BUG_H
> +#ifndef RISCV_BUG_H
> +#define RISCV_BUG_H
>   
>   #ifndef __ASSEMBLER__
>   
> @@ -15,4 +15,4 @@
>   
>   #endif /* !__ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__BUG_H */
> +#endif /* RISCV_BUG_H */
> diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
> index d4cf1ac8e2cd..6b8dff48b76f 100644
> --- a/xen/arch/riscv/include/asm/cache.h
> +++ b/xen/arch/riscv/include/asm/cache.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__CACHE_H
> -#define ASM__RISCV__CACHE_H
> +#ifndef RISCV_CACHE_H
> +#define RISCV_CACHE_H
>   
> -#endif /* ASM__RISCV__CACHE_H */
> +#endif /* RISCV_CACHE_H */
> diff --git a/xen/arch/riscv/include/asm/cmpxchg.h b/xen/arch/riscv/include/asm/cmpxchg.h
> index d47ebaffcef0..12268d0babd9 100644
> --- a/xen/arch/riscv/include/asm/cmpxchg.h
> +++ b/xen/arch/riscv/include/asm/cmpxchg.h
> @@ -1,8 +1,8 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   /* Copyright (C) 2014 Regents of the University of California */
>   
> -#ifndef ASM__RISCV__CMPXCHG_H
> -#define ASM__RISCV__CMPXCHG_H
> +#ifndef RISCV_CMPXCHG_H
> +#define RISCV_CMPXCHG_H
>   
>   #include <xen/bitops.h>
>   #include <xen/compiler.h>
> @@ -230,7 +230,7 @@ static always_inline unsigned long __cmpxchg(volatile void *ptr,
>                 sizeof(*(ptr))); \
>   })
>   
> -#endif /* ASM__RISCV__CMPXCHG_H */
> +#endif /* RISCV_CMPXCHG_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
> index fd69057826e1..8d43ee76da5f 100644
> --- a/xen/arch/riscv/include/asm/config.h
> +++ b/xen/arch/riscv/include/asm/config.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__CONFIG_H
> -#define ASM__RISCV__CONFIG_H
> +#ifndef RISCV_CONFIG_H
> +#define RISCV_CONFIG_H
>   
>   #include <xen/const.h>
>   #include <xen/page-size.h>
> @@ -164,7 +164,7 @@ extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
>   #error "Define KERNEL_LOAD_ADDR_ALIGNMENT"
>   #endif
>   
> -#endif /* ASM__RISCV__CONFIG_H */
> +#endif /* RISCV_CONFIG_H */
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
> index b0a23be18e6f..d42189e8ebe7 100644
> --- a/xen/arch/riscv/include/asm/cpufeature.h
> +++ b/xen/arch/riscv/include/asm/cpufeature.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__CPUFEATURE_H
> -#define ASM__RISCV__CPUFEATURE_H
> +#ifndef RISCV_CPUFEATURE_H
> +#define RISCV_CPUFEATURE_H
>   
>   #ifndef __ASSEMBLER__
>   
> @@ -57,7 +57,7 @@ bool riscv_isa_extension_available(const unsigned long *isa_bitmap,
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__CPUFEATURE_H */
> +#endif /* RISCV_CPUFEATURE_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
> index 888d6a2a86d6..a805f7ed0ba1 100644
> --- a/xen/arch/riscv/include/asm/csr.h
> +++ b/xen/arch/riscv/include/asm/csr.h
> @@ -3,8 +3,8 @@
>    * Copyright (C) 2015 Regents of the University of California
>    */
>   
> -#ifndef ASM__RISCV__CSR_H
> -#define ASM__RISCV__CSR_H
> +#ifndef RISCV_CSR_H
> +#define RISCV_CSR_H
>   
>   #include <xen/const.h>
>   
> @@ -128,4 +128,4 @@ static always_inline bool csr_read_safe(unsigned long csr,
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__CSR_H */
> +#endif /* RISCV_CSR_H */
> diff --git a/xen/arch/riscv/include/asm/current.h b/xen/arch/riscv/include/asm/current.h
> index 78ec52fd8a35..06683d7ae060 100644
> --- a/xen/arch/riscv/include/asm/current.h
> +++ b/xen/arch/riscv/include/asm/current.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__CURRENT_H
> -#define ASM__RISCV__CURRENT_H
> +#ifndef RISCV_CURRENT_H
> +#define RISCV_CURRENT_H
>   
>   #include <xen/bug.h>
>   #include <xen/cache.h>
> @@ -62,4 +62,4 @@ DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__CURRENT_H */
> +#endif /* RISCV_CURRENT_H */
> diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
> index e035b33ddfdc..98e5e72e58ba 100644
> --- a/xen/arch/riscv/include/asm/domain.h
> +++ b/xen/arch/riscv/include/asm/domain.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__DOMAIN_H
> -#define ASM__RISCV__DOMAIN_H
> +#ifndef RISCV_DOMAIN_H
> +#define RISCV_DOMAIN_H
>   
>   #include <xen/mm.h>
>   #include <xen/spinlock.h>
> @@ -128,7 +128,7 @@ int vcpu_unset_interrupt(struct vcpu *v, unsigned int irq);
>   void vcpu_sync_interrupts(struct vcpu *curr);
>   void vcpu_flush_interrupts(struct vcpu *curr);
>   
> -#endif /* ASM__RISCV__DOMAIN_H */
> +#endif /* RISCV_DOMAIN_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/early_printk.h b/xen/arch/riscv/include/asm/early_printk.h
> index 2750045bdd80..240b7f539a04 100644
> --- a/xen/arch/riscv/include/asm/early_printk.h
> +++ b/xen/arch/riscv/include/asm/early_printk.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__EARLY_PRINTK_H
> -#define ASM__RISCV__EARLY_PRINTK_H
> +#ifndef RISCV_EARLY_PRINTK_H
> +#define RISCV_EARLY_PRINTK_H
>   
>   #include <xen/early_printk.h>
>   
> @@ -11,4 +11,4 @@ void early_printk(const char *str);
>   static inline void early_printk(const char *s) {};
>   #endif
>   
> -#endif /* ASM__RISCV__EARLY_PRINTK_H */
> +#endif /* RISCV_EARLY_PRINTK_H */
> diff --git a/xen/arch/riscv/include/asm/event.h b/xen/arch/riscv/include/asm/event.h
> index 116434c665c0..a1fc0bc6fd7a 100644
> --- a/xen/arch/riscv/include/asm/event.h
> +++ b/xen/arch/riscv/include/asm/event.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__EVENT_H
> -#define ASM__RISCV__EVENT_H
> +#ifndef RISCV_EVENT_H
> +#define RISCV_EVENT_H
>   
>   #include <xen/lib.h>
>   
> @@ -29,7 +29,7 @@ static inline enum virq_type arch_get_virq_type(unsigned int virq)
>       return VIRQ_GLOBAL;
>   }
>   
> -#endif /* ASM__RISCV__EVENT_H */
> +#endif /* RISCV_EVENT_H */
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/riscv/include/asm/extable.h b/xen/arch/riscv/include/asm/extable.h
> index c0128a91818f..0209b2f3bfa5 100644
> --- a/xen/arch/riscv/include/asm/extable.h
> +++ b/xen/arch/riscv/include/asm/extable.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__ASM_EXTABLE_H
> -#define ASM__RISCV__ASM_EXTABLE_H
> +#ifndef RISCV_EXTABLE_H
> +#define RISCV_EXTABLE_H
>   
>   #ifdef __ASSEMBLER__
>   
> @@ -55,4 +55,4 @@ bool fixup_exception(struct cpu_user_regs *regs);
>   
>   #endif /* __ASSEMBLY__ */
>   
> -#endif /* ASM__RISCV__ASM_EXTABLE_H */
> +#endif /* RISCV_EXTABLE_H */
> diff --git a/xen/arch/riscv/include/asm/fence.h b/xen/arch/riscv/include/asm/fence.h
> index edfaac49cd9c..f5dd3096e5f0 100644
> --- a/xen/arch/riscv/include/asm/fence.h
> +++ b/xen/arch/riscv/include/asm/fence.h
> @@ -1,9 +1,9 @@
>   /* SPDX-License-Identifier: GPL-2.0-or-later */
> -#ifndef ASM__RISCV__FENCE_H
> -#define ASM__RISCV__FENCE_H
> +#ifndef RISCV_FENCE_H
> +#define RISCV_FENCE_H
>   
>   #define RISCV_ACQUIRE_BARRIER   "\tfence r , rw\n"
>   #define RISCV_RELEASE_BARRIER   "\tfence rw, w\n"
>   #define RISCV_FULL_BARRIER      "\tfence rw, rw\n"
>   
> -#endif	/* ASM__RISCV__FENCE_H */
> +#endif	/* RISCV_FENCE_H */
> diff --git a/xen/arch/riscv/include/asm/fixmap.h b/xen/arch/riscv/include/asm/fixmap.h
> index 085d135c15d4..7e907c3d1c03 100644
> --- a/xen/arch/riscv/include/asm/fixmap.h
> +++ b/xen/arch/riscv/include/asm/fixmap.h
> @@ -2,8 +2,8 @@
>   /*
>    * fixmap.h: compile-time virtual memory allocation
>    */
> -#ifndef ASM__RISCV__FIXMAP_H
> -#define ASM__RISCV__FIXMAP_H
> +#ifndef RISCV_FIXMAP_H
> +#define RISCV_FIXMAP_H
>   
>   #include <xen/bug.h>
>   #include <xen/page-size.h>
> @@ -48,4 +48,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__FIXMAP_H */
> +#endif /* RISCV_FIXMAP_H */
> diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
> index b0112d416dbe..e1d17430da5f 100644
> --- a/xen/arch/riscv/include/asm/flushtlb.h
> +++ b/xen/arch/riscv/include/asm/flushtlb.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__FLUSHTLB_H
> -#define ASM__RISCV__FLUSHTLB_H
> +#ifndef RISCV_FLUSHTLB_H
> +#define RISCV_FLUSHTLB_H
>   
>   #include <xen/bug.h>
>   #include <xen/cpumask.h>
> @@ -53,7 +53,7 @@ static inline void arch_flush_tlb_mask(const cpumask_t *mask)
>       sbi_remote_hfence_gvma(mask, 0, 0);
>   }
>   
> -#endif /* ASM__RISCV__FLUSHTLB_H */
> +#endif /* RISCV_FLUSHTLB_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/guest-layout.h b/xen/arch/riscv/include/asm/guest-layout.h
> index ceed9125e7e2..52d1f2e108ea 100644
> --- a/xen/arch/riscv/include/asm/guest-layout.h
> +++ b/xen/arch/riscv/include/asm/guest-layout.h
> @@ -1,5 +1,5 @@
> -#ifndef ASM_RISCV_GUEST_LAYOUT_H
> -#define ASM_RISCV_GUEST_LAYOUT_H
> +#ifndef RISCV_GUEST_LAYOUT_H
> +#define RISCV_GUEST_LAYOUT_H
>   
>   #include <public/xen.h>
>   
> @@ -44,4 +44,4 @@
>   #define GUEST_MAGIC_BASE  _UL(0x79000000)
>   #define GUEST_MAGIC_SIZE  _UL(0x00200000)
>   
> -#endif /* ASM_RISCV_GUEST_LAYOUT_H */
> +#endif /* RISCV_GUEST_LAYOUT_H */
> diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
> index 8d679319ded0..e94aa838a3e7 100644
> --- a/xen/arch/riscv/include/asm/guest_access.h
> +++ b/xen/arch/riscv/include/asm/guest_access.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__GUEST_ACCESS_H
> -#define ASM__RISCV__GUEST_ACCESS_H
> +#ifndef RISCV_GUEST_ACCESS_H
> +#define RISCV_GUEST_ACCESS_H
>   
>   #include <xen/types.h>
>   
> @@ -25,7 +25,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
>   unsigned long copy_to_guest_phys(struct domain *d, paddr_t gpa, void *buf,
>                                    unsigned long len);
>   
> -#endif /* ASM__RISCV__GUEST_ACCESS_H */
> +#endif /* RISCV_GUEST_ACCESS_H */
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/riscv/include/asm/guest_atomics.h b/xen/arch/riscv/include/asm/guest_atomics.h
> index 22a7551804f9..1909e667214b 100644
> --- a/xen/arch/riscv/include/asm/guest_atomics.h
> +++ b/xen/arch/riscv/include/asm/guest_atomics.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__GUEST_ATOMICS_H
> -#define ASM__RISCV__GUEST_ATOMICS_H
> +#ifndef RISCV_GUEST_ATOMICS_H
> +#define RISCV_GUEST_ATOMICS_H
>   
>   #include <xen/bug.h>
>   
> @@ -32,7 +32,7 @@ guest_testop(test_and_change_bit)
>   
>   #define guest_test_bit(d, nr, p) ((void)(d), test_bit(nr, p))
>   
> -#endif /* ASM__RISCV__GUEST_ATOMICS_H */
> +#endif /* RISCV_GUEST_ATOMICS_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/imsic.h b/xen/arch/riscv/include/asm/imsic.h
> index 2425430ed116..639ee327dc67 100644
> --- a/xen/arch/riscv/include/asm/imsic.h
> +++ b/xen/arch/riscv/include/asm/imsic.h
> @@ -8,8 +8,8 @@
>    * (c) Microchip Technology Inc.
>    */
>   
> -#ifndef ASM_RISCV_IMSIC_H
> -#define ASM_RISCV_IMSIC_H
> +#ifndef RISCV_IMSIC_H
> +#define RISCV_IMSIC_H
>   
>   #include <xen/rwlock.h>
>   #include <xen/spinlock.h>
> @@ -96,4 +96,4 @@ unsigned int vcpu_guest_file_id(const struct vcpu *v);
>   
>   int vimsic_make_domu_dt_node(struct kernel_info *kinfo, unsigned int *phandle);
>   
> -#endif /* ASM_RISCV_IMSIC_H */
> +#endif /* RISCV_IMSIC_H */
> diff --git a/xen/arch/riscv/include/asm/insn-defs.h b/xen/arch/riscv/include/asm/insn-defs.h
> index 61aaa202fd13..1bcdbfde3fc7 100644
> --- a/xen/arch/riscv/include/asm/insn-defs.h
> +++ b/xen/arch/riscv/include/asm/insn-defs.h
> @@ -1,10 +1,10 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM_RISCV_INSN_DEFS_H
> -#define ASM_RISCV_INSN_DEFS_H
> +#ifndef RISCV_INSN_DEFS_H
> +#define RISCV_INSN_DEFS_H
>   
>   #define HFENCE_VVMA(vaddr, asid) \
>       asm volatile ( "hfence.vvma %z0, %z1" \
>                     :: "rJ" (vaddr), "rJ" (asid) : "memory" )
>   
> -#endif /* ASM_RISCV_INSN_DEFS_H */
> +#endif /* RISCV_INSN_DEFS_H */
> diff --git a/xen/arch/riscv/include/asm/intc.h b/xen/arch/riscv/include/asm/intc.h
> index 1bfba7c6155b..909317335769 100644
> --- a/xen/arch/riscv/include/asm/intc.h
> +++ b/xen/arch/riscv/include/asm/intc.h
> @@ -5,8 +5,8 @@
>    * (c) 2024 Vates
>    */
>   
> -#ifndef ASM__RISCV__INTERRUPT_CONTOLLER_H
> -#define ASM__RISCV__INTERRUPT_CONTOLLER_H
> +#ifndef RISCV_INTC_H
> +#define RISCV_INTC_H
>   
>   struct dt_device_node;
>   
> @@ -91,4 +91,4 @@ void domain_vintc_deinit(struct domain *d);
>   
>   int vintc_reserve_virq(const struct domain *d, unsigned int virq);
>   
> -#endif /* ASM__RISCV__INTERRUPT_CONTOLLER_H */
> +#endif /* RISCV_INTC_H */
> diff --git a/xen/arch/riscv/include/asm/io.h b/xen/arch/riscv/include/asm/io.h
> index 9aeafd6b3b1f..547c144b983a 100644
> --- a/xen/arch/riscv/include/asm/io.h
> +++ b/xen/arch/riscv/include/asm/io.h
> @@ -35,8 +35,8 @@
>    * Copyright (C) 2024 Vates
>    */
>   
> -#ifndef ASM__RISCV__IO_H
> -#define ASM__RISCV__IO_H
> +#ifndef RISCV_IO_H
> +#define RISCV_IO_H
>   
>   #include <xen/macros.h>
>   #include <xen/types.h>
> @@ -151,7 +151,7 @@ static inline uint64_t __raw_readq(const volatile void __iomem *addr)
>   #define writel(v, c)    ({ __io_bw(); writel_cpu(v, c); __io_aw(); })
>   #define writeq(v, c)    ({ __io_bw(); writeq_cpu(v, c); __io_aw(); })
>   
> -#endif /* ASM__RISCV__IO_H */
> +#endif /* RISCV_IO_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h
> index 57e814d90cf4..2eb68a5baf04 100644
> --- a/xen/arch/riscv/include/asm/irq.h
> +++ b/xen/arch/riscv/include/asm/irq.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__IRQ_H
> -#define ASM__RISCV__IRQ_H
> +#ifndef RISCV_IRQ_H
> +#define RISCV_IRQ_H
>   
>   #include <xen/bug.h>
>   #include <xen/device_tree.h>
> @@ -57,7 +57,7 @@ int route_irq_to_guest(struct domain *d, unsigned int virq,
>   
>   int release_guest_irq(const struct domain *d, unsigned int virq);
>   
> -#endif /* ASM__RISCV__IRQ_H */
> +#endif /* RISCV_IRQ_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/mm-types.h b/xen/arch/riscv/include/asm/mm-types.h
> index fa512064b808..a04e8f8b179d 100644
> --- a/xen/arch/riscv/include/asm/mm-types.h
> +++ b/xen/arch/riscv/include/asm/mm-types.h
> @@ -1,8 +1,8 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM_RISCV_MM_TYPES_H
> -#define ASM_RISCV_MM_TYPES_H
> +#ifndef RISCV_MM_TYPES_H
> +#define RISCV_MM_TYPES_H
>   
>   typedef unsigned long pte_attr_t;
>   
> -#endif /* ASM_RISCV_MM_TYPES_H */
> +#endif /* RISCV_MM_TYPES_H */
> diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
> index 1ac66283ec9b..bb7c96e7d2a1 100644
> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__MM_H
> -#define ASM__RISCV__MM_H
> +#ifndef RISCV_MM_H
> +#define RISCV_MM_H
>   
>   #include <public/xen.h>
>   #include <xen/bug.h>
> @@ -349,4 +349,4 @@ void setup_fixmap_mappings(void);
>   
>   void *early_fdt_map(paddr_t fdt_paddr);
>   
> -#endif /* ASM__RISCV__MM_H */
> +#endif /* RISCV_MM_H */
> diff --git a/xen/arch/riscv/include/asm/monitor.h b/xen/arch/riscv/include/asm/monitor.h
> index fb3d3e8e3ac6..54e08cab8b8f 100644
> --- a/xen/arch/riscv/include/asm/monitor.h
> +++ b/xen/arch/riscv/include/asm/monitor.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__MONITOR_H
> -#define ASM__RISCV__MONITOR_H
> +#ifndef RISCV_MONITOR_H
> +#define RISCV_MONITOR_H
>   
>   #include <xen/bug.h>
>   
> @@ -14,7 +14,7 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
>       return 0;
>   }
>   
> -#endif /* ASM__RISCV__MONITOR_H */
> +#endif /* RISCV_MONITOR_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/nospec.h b/xen/arch/riscv/include/asm/nospec.h
> index f9b0241c98f3..c969a9898ffd 100644
> --- a/xen/arch/riscv/include/asm/nospec.h
> +++ b/xen/arch/riscv/include/asm/nospec.h
> @@ -1,8 +1,8 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   /* Copyright (C) 2024 Vates */
>   
> -#ifndef ASM__RISCV__NOSPEC_H
> -#define ASM__RISCV__NOSPEC_H
> +#ifndef RISCV_NOSPEC_H
> +#define RISCV_NOSPEC_H
>   
>   static inline bool evaluate_nospec(bool condition)
>   {
> @@ -13,7 +13,7 @@ static inline void block_speculation(void)
>   {
>   }
>   
> -#endif /* ASM__RISCV__NOSPEC_H */
> +#endif /* RISCV_NOSPEC_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
> index 0d1dace1a0d8..c0538281517f 100644
> --- a/xen/arch/riscv/include/asm/p2m.h
> +++ b/xen/arch/riscv/include/asm/p2m.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__P2M_H
> -#define ASM__RISCV__P2M_H
> +#ifndef RISCV_P2M_H
> +#define RISCV_P2M_H
>   
>   #include <xen/bitops.h>
>   #include <xen/errno.h>
> @@ -264,7 +264,7 @@ void p2m_ctxt_switch_from(struct vcpu *p);
>   void p2m_ctxt_switch_to(struct vcpu *n);
>   void p2m_handle_vmenter(void);
>   
> -#endif /* ASM__RISCV__P2M_H */
> +#endif /* RISCV_P2M_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/page-bits.h b/xen/arch/riscv/include/asm/page-bits.h
> index 788c7d951811..73b9f6378c2c 100644
> --- a/xen/arch/riscv/include/asm/page-bits.h
> +++ b/xen/arch/riscv/include/asm/page-bits.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__PAGE_BITS_H
> -#define ASM__RISCV__PAGE_BITS_H
> +#ifndef RISCV_PAGE_BITS_H
> +#define RISCV_PAGE_BITS_H
>   
>   #define PAGE_SHIFT              12 /* 4 KiB Pages */
>   #define PADDR_BITS              56 /* 44-bit PPN */
> @@ -16,4 +16,4 @@
>   
>   #define PTE_PPN_SHIFT           10
>   
> -#endif /* ASM__RISCV__PAGE_BITS_H */
> +#endif /* RISCV_PAGE_BITS_H */
> diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
> index f9e59e61de30..7a2ac2be4df1 100644
> --- a/xen/arch/riscv/include/asm/page.h
> +++ b/xen/arch/riscv/include/asm/page.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__PAGE_H
> -#define ASM__RISCV__PAGE_H
> +#ifndef RISCV_PAGE_H
> +#define RISCV_PAGE_H
>   
>   #ifndef __ASSEMBLER__
>   
> @@ -253,4 +253,4 @@ pte_t pt_walk(vaddr_t va, unsigned int *pte_level);
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__PAGE_H */
> +#endif /* RISCV_PAGE_H */
> diff --git a/xen/arch/riscv/include/asm/paging.h b/xen/arch/riscv/include/asm/paging.h
> index 103384723dc5..4f667aa0e749 100644
> --- a/xen/arch/riscv/include/asm/paging.h
> +++ b/xen/arch/riscv/include/asm/paging.h
> @@ -1,5 +1,5 @@
> -#ifndef ASM_RISCV_PAGING_H
> -#define ASM_RISCV_PAGING_H
> +#ifndef RISCV_PAGING_H
> +#define RISCV_PAGING_H
>   
>   #include <asm-generic/paging.h>
>   
> @@ -18,4 +18,4 @@ void paging_free_page(struct domain *d, struct page_info *pg);
>   
>   struct page_info *paging_alloc_page(struct domain *d);
>   
> -#endif /* ASM_RISCV_PAGING_H */
> +#endif /* RISCV_PAGING_H */
> diff --git a/xen/arch/riscv/include/asm/pmap.h b/xen/arch/riscv/include/asm/pmap.h
> index 146dd29f958a..842c40ab6a94 100644
> --- a/xen/arch/riscv/include/asm/pmap.h
> +++ b/xen/arch/riscv/include/asm/pmap.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef ASM__RISCV__PMAP_H
> -#define ASM__RISCV__PMAP_H
> +#ifndef RISCV_PMAP_H
> +#define RISCV_PMAP_H
>   
>   #include <xen/bug.h>
>   #include <xen/init.h>
> @@ -33,4 +33,4 @@ static inline void __init arch_pmap_unmap(unsigned int slot)
>       flush_tlb_one_local(FIXMAP_ADDR(slot));
>   }
>   
> -#endif /* ASM__RISCV__PMAP_H */
> +#endif /* RISCV_PMAP_H */
> diff --git a/xen/arch/riscv/include/asm/processor.h b/xen/arch/riscv/include/asm/processor.h
> index b1745c107100..007c22d2e611 100644
> --- a/xen/arch/riscv/include/asm/processor.h
> +++ b/xen/arch/riscv/include/asm/processor.h
> @@ -7,8 +7,8 @@
>    *
>    */
>   
> -#ifndef ASM__RISCV__PROCESSOR_H
> -#define ASM__RISCV__PROCESSOR_H
> +#ifndef RISCV_PROCESSOR_H
> +#define RISCV_PROCESSOR_H
>   
>   #ifndef __ASSEMBLER__
>   
> @@ -94,7 +94,7 @@ static inline void sfence_vma(void)
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__PROCESSOR_H */
> +#endif /* RISCV_PROCESSOR_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/regs.h b/xen/arch/riscv/include/asm/regs.h
> index 531958f3d748..24674d37cfe4 100644
> --- a/xen/arch/riscv/include/asm/regs.h
> +++ b/xen/arch/riscv/include/asm/regs.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__REGS_H
> -#define ASM__RISCV__REGS_H
> +#ifndef RISCV_REGS_H
> +#define RISCV_REGS_H
>   
>   #ifndef __ASSEMBLER__
>   
> @@ -17,7 +17,7 @@ static inline bool guest_mode(const struct cpu_user_regs *r)
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__REGS_H */
> +#endif /* RISCV_REGS_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
> index 647268e6d0d4..e55be8c1757a 100644
> --- a/xen/arch/riscv/include/asm/riscv_encoding.h
> +++ b/xen/arch/riscv/include/asm/riscv_encoding.h
> @@ -6,8 +6,8 @@
>    *   Anup Patel <anup.patel@wdc.com>
>    */
>   
> -#ifndef ASM__RISCV__RISCV_ENCODING_H
> -#define ASM__RISCV__RISCV_ENCODING_H
> +#ifndef RISCV_ENCODING_H
> +#define RISCV_ENCODING_H
>   
>   #define _UL(X) _AC(X, UL)
>   #define _ULL(X) _AC(X, ULL)
> diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
> index 1952868e963c..2a245d0b4206 100644
> --- a/xen/arch/riscv/include/asm/sbi.h
> +++ b/xen/arch/riscv/include/asm/sbi.h
> @@ -9,8 +9,8 @@
>    * Copyright (c) 2019 Western Digital Corporation or its affiliates.
>    */
>   
> -#ifndef ASM__RISCV__SBI_H
> -#define ASM__RISCV__SBI_H
> +#ifndef RISCV_SBI_H
> +#define RISCV_SBI_H
>   
>   #include <xen/cpumask.h>
>   
> @@ -145,4 +145,4 @@ int sbi_remote_hfence_gvma_vmid(const cpumask_t *cpu_mask, vaddr_t start,
>    */
>   int sbi_init(void);
>   
> -#endif /* ASM__RISCV__SBI_H */
> +#endif /* RISCV_SBI_H */
> diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
> index 73ce2f293348..8eee8a746335 100644
> --- a/xen/arch/riscv/include/asm/setup.h
> +++ b/xen/arch/riscv/include/asm/setup.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__SETUP_H
> -#define ASM__RISCV__SETUP_H
> +#ifndef RISCV_SETUP_H
> +#define RISCV_SETUP_H
>   
>   #include <xen/types.h>
>   
> @@ -11,7 +11,7 @@ void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
>   
>   void init_csr_masks(void);
>   
> -#endif /* ASM__RISCV__SETUP_H */
> +#endif /* RISCV_SETUP_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
> index 5dbacf1f9d2d..78f67b917195 100644
> --- a/xen/arch/riscv/include/asm/smp.h
> +++ b/xen/arch/riscv/include/asm/smp.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__SMP_H
> -#define ASM__RISCV__SMP_H
> +#ifndef RISCV_SMP_H
> +#define RISCV_SMP_H
>   
>   #include <xen/cpumask.h>
>   #include <xen/macros.h>
> diff --git a/xen/arch/riscv/include/asm/spinlock.h b/xen/arch/riscv/include/asm/spinlock.h
> index 4a607eba520d..1b43ed06365e 100644
> --- a/xen/arch/riscv/include/asm/spinlock.h
> +++ b/xen/arch/riscv/include/asm/spinlock.h
> @@ -1,5 +1,5 @@
> -#ifndef ASM__RISCV__SPINLOCK_H
> -#define ASM__RISCV__SPINLOCK_H
> +#ifndef RISCV_SPINLOCK_H
> +#define RISCV_SPINLOCK_H
>   
>   #define arch_lock_acquire_barrier() smp_mb()
>   #define arch_lock_release_barrier() smp_mb()
> @@ -12,4 +12,4 @@
>       arch_lock_signal();             \
>   })
>   
> -#endif /* ASM__RISCV__SPINLOCK_H */
> +#endif /* RISCV_SPINLOCK_H */
> diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
> index a20af81f677d..8dde5c48807b 100644
> --- a/xen/arch/riscv/include/asm/string.h
> +++ b/xen/arch/riscv/include/asm/string.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__STRING_H
> -#define ASM__RISCV__STRING_H
> +#ifndef RISCV_STRING_H
> +#define RISCV_STRING_H
>   
> -#endif /* ASM__RISCV__STRING_H */
> +#endif /* RISCV_STRING_H */
> diff --git a/xen/arch/riscv/include/asm/system.h b/xen/arch/riscv/include/asm/system.h
> index f33af64fd2ec..cb382487751c 100644
> --- a/xen/arch/riscv/include/asm/system.h
> +++ b/xen/arch/riscv/include/asm/system.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__SYSTEM_H
> -#define ASM__RISCV__SYSTEM_H
> +#ifndef RISCV_SYSTEM_H
> +#define RISCV_SYSTEM_H
>   
>   #include <xen/stdbool.h>
>   
> @@ -78,7 +78,7 @@ static inline bool local_irq_is_enabled(void)
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__SYSTEM_H */
> +#endif /* RISCV_SYSTEM_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
> index 4d68900151a7..0e5b96a8631c 100644
> --- a/xen/arch/riscv/include/asm/time.h
> +++ b/xen/arch/riscv/include/asm/time.h
> @@ -1,6 +1,6 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef ASM__RISCV__TIME_H
> -#define ASM__RISCV__TIME_H
> +#ifndef RISCV_TIME_H
> +#define RISCV_TIME_H
>   
>   #include <xen/bug.h>
>   #include <xen/muldiv64.h>
> @@ -29,7 +29,7 @@ void preinit_xen_time(void);
>   
>   extern int (* __ro_after_init set_xen_timer)(uint64_t deadline);
>   
> -#endif /* ASM__RISCV__TIME_H */
> +#endif /* RISCV_TIME_H */
>   
>   /*
>    * Local variables:
> diff --git a/xen/arch/riscv/include/asm/traps.h b/xen/arch/riscv/include/asm/traps.h
> index 21fa3c3259b3..08c6215e931a 100644
> --- a/xen/arch/riscv/include/asm/traps.h
> +++ b/xen/arch/riscv/include/asm/traps.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__TRAPS_H
> -#define ASM__RISCV__TRAPS_H
> +#ifndef RISCV_TRAPS_H
> +#define RISCV_TRAPS_H
>   
>   #include <asm/processor.h>
>   
> @@ -13,4 +13,4 @@ void trap_init(void);
>   
>   #endif /* __ASSEMBLER__ */
>   
> -#endif /* ASM__RISCV__TRAPS_H */
> +#endif /* RISCV_TRAPS_H */
> diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h
> index d801596a2013..b0d4c62aef36 100644
> --- a/xen/arch/riscv/include/asm/types.h
> +++ b/xen/arch/riscv/include/asm/types.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__TYPES_H
> -#define ASM__RISCV__TYPES_H
> +#ifndef RISCV_TYPES_H
> +#define RISCV_TYPES_H
>   
>   #if defined(CONFIG_RISCV_32)
>   
> @@ -25,7 +25,7 @@ typedef u64 register_t;
>   
>   #endif
>   
> -#endif /* ASM__RISCV__TYPES_H */
> +#endif /* RISCV_TYPES_H */
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/riscv/include/asm/vaplic.h b/xen/arch/riscv/include/asm/vaplic.h
> index 96080bfbc23b..dcbe0d59a886 100644
> --- a/xen/arch/riscv/include/asm/vaplic.h
> +++ b/xen/arch/riscv/include/asm/vaplic.h
> @@ -7,8 +7,8 @@
>    * Copyright (c) Microchip.
>    */
>   
> -#ifndef ASM__RISCV__VAPLIC_H
> -#define ASM__RISCV__VAPLIC_H
> +#ifndef RISCV_VAPLIC_H
> +#define RISCV_VAPLIC_H
>   
>   #include <xen/kernel.h>
>   #include <xen/types.h>
> @@ -31,4 +31,4 @@ struct vaplic {
>   int domain_vaplic_init(struct domain *d);
>   void domain_vaplic_deinit(struct domain *d);
>   
> -#endif /* ASM__RISCV__VAPLIC_H */
> +#endif /* RISCV_VAPLIC_H */
> diff --git a/xen/arch/riscv/include/asm/vmid.h b/xen/arch/riscv/include/asm/vmid.h
> index 1c500c4aff70..2b4fc0df8e63 100644
> --- a/xen/arch/riscv/include/asm/vmid.h
> +++ b/xen/arch/riscv/include/asm/vmid.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM_RISCV_VMID_H
> -#define ASM_RISCV_VMID_H
> +#ifndef RISCV_VMID_H
> +#define RISCV_VMID_H
>   
>   struct vcpu;
>   struct vcpu_vmid;
> @@ -11,4 +11,4 @@ bool vmid_handle_vmenter(struct vcpu_vmid *vmid);
>   void vmid_flush_vcpu(struct vcpu *v);
>   void vmid_flush_hart(void);
>   
> -#endif /* ASM_RISCV_VMID_H */
> +#endif /* RISCV_VMID_H */
> diff --git a/xen/arch/riscv/include/asm/vsbi.h b/xen/arch/riscv/include/asm/vsbi.h
> index fa0cad604e8b..c5902fa0728d 100644
> --- a/xen/arch/riscv/include/asm/vsbi.h
> +++ b/xen/arch/riscv/include/asm/vsbi.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier:  GPL-2.0-only */
>   
> -#ifndef ASM_RISCV_VSBI_H
> -#define ASM_RISCV_VSBI_H
> +#ifndef RISCV_VSBI_H
> +#define RISCV_VSBI_H
>   
>   struct cpu_user_regs;
>   
> diff --git a/xen/arch/riscv/include/asm/vtimer.h b/xen/arch/riscv/include/asm/vtimer.h
> index b4d48d1a1732..950795be12f3 100644
> --- a/xen/arch/riscv/include/asm/vtimer.h
> +++ b/xen/arch/riscv/include/asm/vtimer.h
> @@ -1,7 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0-only */
>   
> -#ifndef ASM__RISCV__VTIMER_H
> -#define ASM__RISCV__VTIMER_H
> +#ifndef RISCV_VTIMER_H
> +#define RISCV_VTIMER_H
>   
>   #include <xen/timer.h>
>   
> @@ -17,4 +17,4 @@ void vtimer_set_timer(struct vtimer *t, uint64_t ticks);
>   void vtimer_ctxt_switch_from(struct vcpu *p);
>   void vtimer_ctxt_switch_to(struct vcpu *n);
>   
> -#endif /* ASM__RISCV__VTIMER_H */
> +#endif /* RISCV_VTIMER_H */
> 
> base-commit: 2043d22b7e926f508cc23391b4c75325fa7211e9



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:44:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474982.1681821 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzdQ-0001Yl-LY; Thu, 05 Nov 2026 15:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474982.1681821; Thu, 05 Nov 2026 15:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzdQ-0001Ye-IS; Thu, 05 Nov 2026 15:44:16 +0000
Received: by outflank-mailman (input) for mailman id 1474982;
 Thu, 05 Nov 2026 15:44:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOzdP-0001YY-52
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:44:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzdO-004Ly8-HU
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:44:14 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeca44e-8faa-0a2a0a5109dd-0a2a4509979e-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:44:14 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aeca44e-be1a-0a2a45090019-d155802fa4e6-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:44:14 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4a549cd7fd2so8958275e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 07:44:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b4104d600fsm132090455e9.0.2026.11.05.07.44.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 07:44:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793893454; x=1794498254; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=+swIkPPXGoawDATYkIs9JcJ8iSdxm2UUBR0ghZysPYE=;
        b=E5r/GQ0l2eXo74hFjj7PwLKwlVHES51AGZHMMsS569W9KN15YJSNaA46CPG+5fky6c
         q+vHy56dOe1YHvIibby3RutM4JUqZfD+kGXqUy0mb7Zr6Npo/4PULXxccgp3+SptVsaP
         wWZnxRSLAJVh4/s98O8/eGDpzn9gQ5YF9V/a5bvzd7L0HS9Atlj9UOXiallV7hsJKvGJ
         pzAVSjwjwDnnA68o+j1grwq/ZhuHS4ppmLUkja2HEtRSf6va2fTs+eH6pb5zkArvGIhq
         NygowKNeo88wqWXVeSdqT3Wqzt/hRvdmZlK58C+Ad/1yrBnOLucWfUZojwFQ749/th9S
         3RaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793893454; x=1794498254;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=+swIkPPXGoawDATYkIs9JcJ8iSdxm2UUBR0ghZysPYE=;
        b=qnzvqo6tb4DV1i8EvFfatVnK3Nj7CAwTMXRoVsp7phxtCvFj6O0vtXYfb3LkQUlFLH
         wKD0TOuCYx2Yq12P17GvkwrnaQbgsdBKf/7l3Ch6cHJTZ2DegtEPQ1Mno8ZrdQF/TuiR
         Cmf4sp6ATek/MLRxvLtDccDXrj2QaygCV1OO3i/8liX+xf8pIXqEKxPBqtXG9lvdaSe/
         cXEHKUQLN5abvGFWgUsve2sVEtG9g0b5n/WCYFafnIckJLJbo6MML9DVkz96/n7N94Lt
         2c3ZGNLh6R0JIoeO/gMHWJgE3S2/ddE697tT2neI7NB2ZUE8l0OxDmBkIDRjQjNzdWb7
         kxXw==
X-Forwarded-Encrypted: i=1; AKwUvBy7t8LdYTx186W+xZYbQ7WzbQubhVgDQjKhQFd5G+kr32LUG/8+j+ROJJyTtankxztFgWnwal/2cyg=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+prqqN3QDlK0ij0d3AbTPV6apfrTih449TLxhYruKCdDgH0XGD
	biPInQqmUxFVoat9+yJ7ta/ex/zRo3iXLeTXt0CwPLgzNvFYXBYfYV+HgIpfUrvDfQ==
X-Gm-Gg: AYBFou035LSQXE08TmAo32W7451NjE1jODvnmnzdHiIWX1fCS87q8doQ+WJ9sqqdhFV
	Y0QhaLE7RCoMxD+MYteannBB5g4c6dm+n3RQ5/FAn+sOoL57/nsYuD4/Q52oYN4v7gEAjxbMm9S
	nXSahuGIaEaeO6zm1MI1Rny6CAUEb0QoW4rgTxrHh/1Z5JKtGQqvGRrg9JCb7uRmIAu4JgSHEhe
	Ommm1JgLMjmMvQVo+0vaNF5qnqtUier3lMx6vBz7/sF+WaFHwtX2YiiMb8cvKKg6CdDg25K8khs
	jfplnKhyUgZHyLDq7zteW53rMt5O/mt8I/JWm0/Li27rPAIKO2yRyTLI4h1ZUwYtzod2Bxamglh
	A1zN0AuivNGJwRBtdoq1SqtwW4yLcJr7KaNztwdsMUft7bnl2R95glDXa1jE2gU05riSmwvDSHp
	gmjnU7Ki0zmbrjK5bUGxuyfNIUOQ8WuTO1yuzM7nIt7fAgDgnR3SzKwj9bXciwABqoZs0zyTPgX
	JUDm+agV3ZexH8O53KDauENAOgjAwx2SkCg5YG2azDEcl+K6CCyewiBsWyVP0wWvl/0nZJADqcq
	ohWbOAJ1PHc8lr4X0ZYnj0VSj2uqaxuToank3a6HpcbZmcUHrDDVzdHOLQcC7OzYYelFgq3YTpm
	EKxrLq4lPAgdF/rE=
X-Received: by 2002:a05:600c:34d2:b0:4a0:20b4:ba93 with SMTP id 5b1f17b1804b1-4b55e07e6d5mr53150845e9.16.1793893453755;
        Thu, 05 Nov 2026 07:44:13 -0800 (PST)
Message-ID: <573590f0-1a94-4113-a76c-3ae644bebdff@suse.com>
Date: Thu, 5 Nov 2026 16:44:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/riscv: align header inclusion guards with
 CODING_STYLE
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Connor Davis <connojdavis@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 xen-devel@lists.xenproject.org
References: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-bad1c0/1793893454-FC817034-65DE4FA5/10/78276251493
X-purgate-type: spam
X-purgate-size: 1703

On 05.11.2026 16:03, Oleksii Kurochko wrote:
> Commit 7abea85c9f12 ("CODING_STYLE: Updated header guard
> recommendations") changed the recommended naming of inclusion guards
> for arch-specific headers to <arch>_<something>_H. Most RISC-V headers
> still use the ASM__RISCV__<FILENAME>_H form required by the previous
> rules, and a few use ASM_RISCV_<FILENAME>_H, which follows neither.
> 
> Rename the guards to RISCV_<SOMETHING>_H. While doing so, also fix two
> guards which don't match their file names: extable.h used
> ASM__RISCV__ASM_EXTABLE_H and intc.h used the misspelt
> ASM__RISCV__INTERRUPT_CONTOLLER_H. For riscv_encoding.h, don't repeat
> the architecture name and use RISCV_ENCODING_H.

I'd recommend against that. If you want this tag, renamed the file as
well. Otherwise stick to the naming rules.

> No functional change.
> 
> Assisted-by: Claude-Code:claude-opus-5-5
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

With the above (and possibly also the below) adjustment(s)
Acked-by: Jan Beulich <jbeulich@suse.com>
Which way to make the adjustment you will need to indicate. Changing the
tag identifier can be done while committing. If you want to rename the
file, I could drop that one hunk from here while committing. Please
indicate intentions.

> --- a/xen/arch/riscv/include/asm/vsbi.h
> +++ b/xen/arch/riscv/include/asm/vsbi.h
> @@ -1,7 +1,7 @@
>  /* SPDX-License-Identifier:  GPL-2.0-only */
>  
> -#ifndef ASM_RISCV_VSBI_H
> -#define ASM_RISCV_VSBI_H
> +#ifndef RISCV_VSBI_H
> +#define RISCV_VSBI_H
>  
>  struct cpu_user_regs;
>  

I think at this occasion the #endif also wants to gain the usual comment.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:49:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:49:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474991.1681830 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzii-0002bS-7U; Thu, 05 Nov 2026 15:49:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474991.1681830; Thu, 05 Nov 2026 15:49:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzii-0002bL-3P; Thu, 05 Nov 2026 15:49:44 +0000
Received: by outflank-mailman (input) for mailman id 1474991;
 Thu, 05 Nov 2026 15:49:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOzig-0002bF-R9
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:49:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzig-000prv-7f
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:49:42 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeca595-bab6-0a2a0a5309dd-0a2a4503a1a4-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:49:42 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeca595-fae8-0a2a45030019-d155802fb074-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:49:42 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4a35ac4475dso14354035e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 07:49:42 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56f5e65c8sm72372095e9.12.2026.11.05.07.49.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 07:49:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793893781; x=1794498581; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=J047WjMHdDMrCWtz3p27qJxTeAq4st8ln7LaPoieiYY=;
        b=TmTZTIXZDC3MudHriNcWi8y/qeISBEYiVdt/QGgG8xzLoJqytaUHmhMXjwMVTtUDsj
         Y2a+8W9cjmNU0Krxp3dFFCNhgzo6efN9j/19D7LSuKNTs3LzCUS9eVnmdGXmCdW7j70E
         sRds3AaqDCx/y0a/Wm8bMKV13RJZcL5SNfIlrVZGyULW3U3zO3x35WTlj77IYLeH7G89
         IUMKuBxlEpI4JlDwtQ1FqgiFEYpPNWyQWRPBhlVXXbBF89cVs0hFx54AT0xRPse4lWaB
         ZMmxvzanJuCK9dURj9BpaObU3Z+aXoV9NvZx32gtQNMf4v6VCa2KPLAOyer0Y/nesIC7
         iujA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793893781; x=1794498581;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=J047WjMHdDMrCWtz3p27qJxTeAq4st8ln7LaPoieiYY=;
        b=GhXw8HUynPawlt/s3DxClgzHu0rPjhKo24Uq4S+nL+GXbFPT4GEaZQyJlnHJ7v2WxN
         SufhcIymnPMSEiX9qCmUFJ9iMe7Ojqn9VXgOlpxd1G/Oat63WRd1fnCV2zeg2kcT8HgD
         9CxsJqy7Mwl1DM4EJkR9kpsPG66e7Mg1MsPV9DVn2BVmIGyNac+pYSPTMNWKBmNiUEgL
         LqtyR2dSkkAaIfC+7+gpktj3ytjdD+UEfBM1nC1nAVZO5S3b0MZiCnqBYNYATuNq2JkO
         Iy+RdM3fOoHABNLQ5FXIxK8NwHz8GP9Sj44QyPw+D40TWzn3JByu6xrCVIhFXZAhTqmr
         60CA==
X-Gm-Message-State: APuU4Z//0JXCxyOrZhagaGdcNOCMlSP0mgXzrga5MEOOnSUYhI+U4lBY
	swIW46RqWXn55yd44dnz6sqSX7JeJH6uXB19kMnxk1la0YYY5aDv4End
X-Gm-Gg: AYBFou3x/WUpTovTw57TyiQWnkB/rDirLaf2P8NAnE/5EeFEGwkKiH+2Z/CN3SNrYd2
	4ackyA7rbD7MziMcosQDmoO0VgGT/pdFCVSzaaburFA1PzpZb/uhkXqhHRtJBqv0AOIP3sVJA3q
	vjKY2eUYV8dqf1RQpYflcfmjLJwS2A+QRk2iMOp9SuP8rzhy4uRboD9sYlzAw2DO2x2+ZaKgyC7
	aLei5KlLDUct+cPz/H47oFm6F6sQhOSEkSD1qVdeQBfRoUjrZfCk8Mg1TJQfih5a0MzVAlHLn4Q
	hdEPEP+mey3VCSF+cpGvKrTLWmMHUwjoDOcDTCe+oB1WPEQNNHD/Z8Ll2GNkjDj9zikVGQcRbmQ
	BC5kyto4sjgsMPHohKwD8OEWc9+aRvlSQryH+VmOY/l7oylM8uuWOGERygDLMAJAAiWA7DsRLBd
	G88kDGC8WNnH+sv60vlGhnzV3SNhCdRAe7XIyjJOtT5j2gqyJyb9Of4YJRcpfDdzp43ueRlo4QJ
	nJwEF6QgRm1Ikvb9kWYYax/lfVsgjIMVWaB8JIG5FpIA7IZIKoj10eZgW3g2vewd5iP5nulAQu1
	hZTIQvJ/8MIGmUXIYqQH3h+z8fc3vE5RTQ5A4zj4CiNN2aQWAlbjLX9d/Gv1vSfM9z63n6vcf//
	n
X-Received: by 2002:a05:600c:6989:b0:4a7:6425:c274 with SMTP id 5b1f17b1804b1-4ac150b38d0mr421531135e9.2.1793893781536;
        Thu, 05 Nov 2026 07:49:41 -0800 (PST)
Message-ID: <1ff766a5-3d49-45fb-9c46-d781cfaf4b6d@gmail.com>
Date: Thu, 5 Nov 2026 16:49:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/39] xen/riscv: implement APLIC-IMSIC-hart sync
 barrier for vCPU migration
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <2075cb10e5f6df787b29f2f087632c82b787a007.1790779209.git.oleksii.kurochko@gmail.com>
 <c77101fe-2505-4cdb-8520-52f92a1c668d@gmail.com>
 <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
 <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
 <1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793893782-6DAD44E9-DCA8056E/10/73395122804
X-purgate-type: spam
X-purgate-size: 1230



On 11/5/26 4:32 PM, Baptiste Le Duc wrote:
> On 2026-11-05 15:21 +0100, Oleksii Kurochko wrote:
>> [ ... 348 lines skipped ... ]
>>> LGTM, but I wonder why, as I said in the original patch, sync_id is
>>> really needed.
>>>
>>
>> I think that I am not understand your response. Could you please
>> re-phrase it?
> I'm questionning the need of the sync_id field as it will always be
> equal to imsic_cfg.nr_ids, couldn't we drop it?
> 

It's equal to nr_ids by choice rather than by necessity: which identity
gets reserved is decided in a single place, imsic_parse_node(), and all
the users (the genmsi write, the pending bit the barrier spins on, the
limit on the APLIC sources and the ASSERT() in imsic_irq_enable()) refer
to it by its role rather than as "the last identity".

Basically if one day someone will decide to come up with EIID allocator 
instead of using static allocation then it will be harder to find a 
places where to change.

So yes, it could be drooped but at the moment I think it is useful to 
have separate field or ,at least, as an option in asm/imsic.h:

static inline unsigned int imsic_sync_id(const struct imsic_config *cfg)
{
     return cfg->nr_ids;
}

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474994.1681840 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj0-00034r-GK; Thu, 05 Nov 2026 15:50:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474994.1681840; Thu, 05 Nov 2026 15:50:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj0-00034G-BM; Thu, 05 Nov 2026 15:50:02 +0000
Received: by outflank-mailman (input) for mailman id 1474994;
 Thu, 05 Nov 2026 15:50:01 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOziy-0002tD-K8
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOziy-00GUtv-0n; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a5-8faa-0a2a0a5109dd-0a2a4506e25e-4
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:59 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-195a-0a2a45060019-5a9b32229b2c-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009aoo-0MW8; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000AazI-3n30;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=SBqwWuzZUe9tKH8X7ZE6UU3BvbQWCNJQkaJJqsbprJg=; b=FodKgNUhaEcN6KVT7o+1tHJEEr
	wKhNLefbLxXuApYmEFzXlgF2ixoRX3JQFxnhrIMM3BtnHxxCq4DdbGnwD5qBiYMOZ5EhtouAZ4IM8
	NEJbu820jzVuJPEaVRfm5DSeqHhKMfLoiAn7GBdLpVJ+d61VpXZNBRjNhd9oz7Q+cVLm+hJQT/nh3
	G0Thelxcek6QXJkrZKwvEEdOyh1IhRf8U9g0raHyubWC1Zs9SBkKvqUSE912AJBmH2ek5gUoZAyCb
	RtPhXNGgFdKQ/BiXsjDCQyb0f9HNeT8esej0h2z0F07pPXkfwlhfdRIpfvcyfVo1kLTwGBTuNhnMk
	mIEwOwxQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 09/23] KVM: x86: Cache host vclock_mode for masterclock eligibility checks
Date: Thu,  5 Nov 2026 07:49:40 -0800
Message-ID: <20261105154955.2525419-10-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-16d1c6/1793893799-FD40B77B-91B50F9F/0/0
X-purgate-type: clean
X-purgate-size: 4485

From: David Woodhouse <dwmw@amazon.co.uk>

The remaining users of pvclock_gtod_data only need to know whether
the host clocksource is TSC-based. Cache the vclock_mode value in a
simple kvm_host_vclock_mode variable, updated by the pvclock_gtod_notify
callback, and use gtod_is_based_on_tsc() for eligibility checks.

This is inherently racy (as it always was — kvm_track_tsc_matching
never held the gtod seqcount), relying on eventual consistency: the
notifier fires on every timekeeping update and will correct any
transient inconsistency within one tick.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index f551056d7274..e81e527e7b99 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1136,6 +1136,8 @@ static u64 compute_guest_tsc(struct kvm_vcpu *vcpu, s64 kernel_ns)
 }
 
 #ifdef CONFIG_X86_64
+static int kvm_host_vclock_mode;
+
 static inline bool gtod_is_based_on_tsc(int mode)
 {
 	return mode == VDSO_CLOCKMODE_TSC || mode == VDSO_CLOCKMODE_HVCLOCK;
@@ -1165,7 +1167,6 @@ static bool kvm_use_master_clock(struct kvm *kvm)
 static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
 	struct kvm_arch *ka = &vcpu->kvm->arch;
-	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
 
 	/*
@@ -1209,8 +1210,9 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
 	 * accounts for its offset.
 	 */
+	int host_vclock_mode = READ_ONCE(kvm_host_vclock_mode);
 	bool use_master_clock = kvm_use_master_clock(vcpu->kvm) &&
-				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
+				gtod_is_based_on_tsc(host_vclock_mode);
 
 	/*
 	 * Request a masterclock update if needed: toggling master clock,
@@ -1223,7 +1225,7 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 
 	trace_kvm_track_tsc(vcpu->vcpu_id, ka->nr_vcpus_matched_tsc,
 			    atomic_read(&vcpu->kvm->online_vcpus),
-		            ka->use_master_clock, gtod->clock.vclock_mode);
+			    ka->use_master_clock, host_vclock_mode);
 }
 #else
 static inline void kvm_track_tsc_matching(struct kvm_vcpu *vcpu,
@@ -1394,7 +1396,7 @@ static inline bool kvm_check_tsc_unstable(void)
 	 * TSC is marked unstable when we're running on Hyper-V,
 	 * 'TSC page' clocksource is good.
 	 */
-	if (pvclock_gtod_data.clock.vclock_mode == VDSO_CLOCKMODE_HVCLOCK)
+	if (READ_ONCE(kvm_host_vclock_mode) == VDSO_CLOCKMODE_HVCLOCK)
 		return false;
 #endif
 	return check_tsc_unstable();
@@ -1689,7 +1691,6 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 {
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &kvm->arch;
-	int vclock_mode;
 	bool host_tsc_clocksource;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
@@ -1729,9 +1730,9 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 			ka->use_master_clock = false;
 	}
 
-	vclock_mode = pvclock_gtod_data.clock.vclock_mode;
-	trace_kvm_update_master_clock(ka->use_master_clock, vclock_mode,
-					ka->all_vcpus_matched_freq);
+	trace_kvm_update_master_clock(ka->use_master_clock,
+				      READ_ONCE(kvm_host_vclock_mode),
+				      ka->all_vcpus_matched_freq);
 #endif
 }
 
@@ -7089,17 +7090,23 @@ static DEFINE_IRQ_WORK(pvclock_irq_work, pvclock_irq_work_fn);
 static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused,
 			       void *priv)
 {
-	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	struct timekeeper *tk = priv;
 
 	update_pvclock_gtod(tk);
 
+	/*
+	 * Pairs with the READ_ONCE() in the lockless readers; the race is
+	 * benign by design, relying on eventual consistency (the notifier
+	 * fires on every timekeeping update).
+	 */
+	WRITE_ONCE(kvm_host_vclock_mode, tk->tkr_mono.clock->vdso_clock_mode);
+
 	/*
 	 * Disable master clock if host does not trust, or does not use,
 	 * TSC based clocksource. Delegate queue_work() to irq_work as
 	 * this is invoked with tk_core.seq write held.
 	 */
-	if (!gtod_is_based_on_tsc(gtod->clock.vclock_mode) &&
+	if (!gtod_is_based_on_tsc(kvm_host_vclock_mode) &&
 	    atomic_read(&kvm_guest_has_master_clock) != 0)
 		irq_work_queue(&pvclock_irq_work);
 	return 0;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474995.1681844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj0-000399-O7; Thu, 05 Nov 2026 15:50:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474995.1681844; Thu, 05 Nov 2026 15:50:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj0-00038b-K7; Thu, 05 Nov 2026 15:50:02 +0000
Received: by outflank-mailman (input) for mailman id 1474995;
 Thu, 05 Nov 2026 15:50:01 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOziy-0002t6-Qe
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzix-00Er7K-8Y; Thu, 05 Nov 2026 16:49:59 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca595-e002-0a2a0a5209dd-0a2a4501df4c-18
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:59 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-5984-0a2a45010019-5a9b3222a2d8-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aoj-3hfm; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aaz2-2pvF;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=Fa5d4hF5b5g+cGGwa12UfyQs3OVoKCl+cYn2uuRhZjo=; b=YwnXHIWzvBYN9n4rVYggcXWgRc
	Z5T6VuZ6WDUaeWPsQh9E0B2YNYCK2WY0r4Np1IPStzrOa81QjNkLHVMewQVjM2g7x/zvWSN0m6hoM
	eP++2oV1qnVdrFZxAtlbOY2oK2mjdbxDEmCQwaCIC3UfqFeIHCukbZ9rQiM6dWsdpFRhVgt2T1Xhd
	QXjmq8l600NAeFYOf/G+EDpgCyR7jMu49EHj4INvehN4g4vABeQVBFk5NyPnG8s9h/L2GR570Sp1c
	YqYc+Sh6QKuEaE9Rbts9YSuwqVNXsImVewgSOK076uldTgrPQxg7g9WvZSKeqL8kXryMjpf/JhHkR
	NEWC7k4g==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 05/23] KVM: x86: Factor out kvm_use_master_clock()
Date: Thu,  5 Nov 2026 07:49:36 -0800
Message-ID: <20261105154955.2525419-6-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1793893799-1D272757-762A7ABF/0/0
X-purgate-type: clean
X-purgate-size: 4291

From: David Woodhouse <dwmw@amazon.co.uk>

Both kvm_track_tsc_matching() and pvclock_update_vm_gtod_copy() make a
decision about whether the KVM clock should be in master clock mode.
They used *different* criteria for the decision though. This isn't
really a problem; it only has the potential to cause unnecessary
invocations of KVM_REQ_MASTERCLOCK_UPDATE if the masterclock was
disabled due to TSC going backwards, or the guest using the old MSR.
But it isn't pretty.

Factor the decision out to a single function. And document the
historical reason why it's disabled for guests that use the old
MSR_KVM_SYSTEM_TIME.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 arch/x86/kvm/x86.c | 40 ++++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 38fcb1d75661..4c3fce29e2af 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1112,11 +1112,30 @@ static inline bool gtod_is_based_on_tsc(int mode)
 {
 	return mode == VDSO_CLOCKMODE_TSC || mode == VDSO_CLOCKMODE_HVCLOCK;
 }
-#endif
+
+static bool kvm_use_master_clock(struct kvm *kvm)
+{
+	struct kvm_arch *ka = &kvm->arch;
+
+	/*
+	 * The 'old kvmclock' check is a workaround (from 2015) for a
+	 * SUSE 2.6.16 kernel that didn't boot if the system_time in
+	 * its kvmclock was too far behind the current time. So the
+	 * mode of just setting the reference point and allowing time
+	 * to proceed linearly from there makes it fail to boot.
+	 * Despite that being kind of the *point* of the way the clock
+	 * is exposed to the guest. By coincidence, the offending
+	 * kernels used the old MSR_KVM_SYSTEM_TIME, which was moved
+	 * only because it resided in the wrong number range. So the
+	 * workaround is activated for *all* guests using the old MSR.
+	 */
+	return ka->all_vcpus_matched_freq &&
+		!ka->backwards_tsc_observed &&
+		!ka->boot_vcpu_runs_old_kvmclock;
+}
 
 static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
-#ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
@@ -1162,7 +1181,7 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
 	 * accounts for its offset.
 	 */
-	bool use_master_clock = ka->all_vcpus_matched_freq &&
+	bool use_master_clock = kvm_use_master_clock(vcpu->kvm) &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
@@ -1177,8 +1196,11 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	trace_kvm_track_tsc(vcpu->vcpu_id, ka->nr_vcpus_matched_tsc,
 			    atomic_read(&vcpu->kvm->online_vcpus),
 		            ka->use_master_clock, gtod->clock.vclock_mode);
-#endif
 }
+#else
+static inline void kvm_track_tsc_matching(struct kvm_vcpu *vcpu,
+					  bool update_mclock) {}
+#endif
 
 /*
  * Multiply tsc by a fixed point number represented by ratio.
@@ -1640,10 +1662,9 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &kvm->arch;
 	int vclock_mode;
-	bool host_tsc_clocksource, vcpus_matched;
+	bool host_tsc_clocksource;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	vcpus_matched = ka->all_vcpus_matched_freq;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -1653,9 +1674,8 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 					&ka->master_kernel_ns,
 					&ka->master_cycle_now);
 
-	ka->use_master_clock = host_tsc_clocksource && vcpus_matched
-				&& !ka->backwards_tsc_observed
-				&& !ka->boot_vcpu_runs_old_kvmclock;
+	ka->use_master_clock = host_tsc_clocksource &&
+				kvm_use_master_clock(kvm);
 
 	if (ka->use_master_clock) {
 		u64 tsc_hz;
@@ -1683,7 +1703,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 
 	vclock_mode = pvclock_gtod_data.clock.vclock_mode;
 	trace_kvm_update_master_clock(ka->use_master_clock, vclock_mode,
-					vcpus_matched);
+					ka->all_vcpus_matched_freq);
 #endif
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474997.1681856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj2-0003hE-4V; Thu, 05 Nov 2026 15:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474997.1681856; Thu, 05 Nov 2026 15:50:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj2-0003fn-0w; Thu, 05 Nov 2026 15:50:04 +0000
Received: by outflank-mailman (input) for mailman id 1474997;
 Thu, 05 Nov 2026 15:50:02 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj0-00031P-AM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOziz-00GUtv-Mt; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a0-8faa-0a2a0a5109dd-0a2a4508cd68-8
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-f659-0a2a45080019-5a9b5cc7adf2-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo1-28cY; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000AazW-0O4I;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mKH9BxiVhD1hkWOxu0QRNvIl232YhI8uqiNY5R0UwSo=; b=PS8heR5UfpzNGppFEyFnViA2DL
	FRWZk3qRLQOMGVQFWIw5D/XcdpEnJVkMbTkQfVXe4hAXq0CqByd46FPAhCF/k4oM5IGvQPzLmQe0k
	ajTJabtgEAwXls17arD8PDPJxchbIETuZhSsekBzV0Ps6XZc0/Qx3Obg7iISMggAf2QoIZWilTLzi
	uYxiWORF261bI3SEiPfDd1loNVLFSa7d3eRwGRbfKgHQRbNNOVEomunG2rLQt8RGvscUb1SCb21mb
	h42wQ9/0PEFxFJKniq3Xy+Unj6QBuN+m9Meb3YOhW5jbXXWURJp1UoA6k8aImvZ7GX6oP8q3A8aRT
	xHYCUTxw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 12/23] UAPI: x86: Move pvclock-abi to UAPI for x86 platforms
Date: Thu,  5 Nov 2026 07:49:43 -0800
Message-ID: <20261105154955.2525419-13-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c1860d/1793893801-D457487B-B88B81AE/0/0
X-purgate-type: clean
X-purgate-size: 3998

From: Jack Allister <jalliste@amazon.com>

A subsequent commit will provide a new KVM interface for performing a
fixup/correction of the KVM clock against the reference TSC. The
KVM_[GS]ET_CLOCK_GUEST API requires a pvclock_vcpu_time_info, as such
the caller must know about this definition.

Move the definition to the UAPI folder so that it is exported to
usermode, change the type definitions to use the standard for UAPI
exports, and add the Linux-syscall-note exception to the SPDX licence
identifier as is conventional for exported headers.

Define __KERNEL__ in scripts/xen-hypercalls.sh: the UAPI header now
pulls in linux/types.h, and the script's raw $CPP invocation with
$LINUXINCLUDE does not define it, which would trigger the "attempt to
use kernel headers from user space" warning from the UAPI type
headers.

Signed-off-by: Jack Allister <jalliste@amazon.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 MAINTAINERS                                   |  4 +--
 arch/x86/include/{ => uapi}/asm/pvclock-abi.h | 27 ++++++++++---------
 scripts/xen-hypercalls.sh                     |  2 +-
 3 files changed, 18 insertions(+), 15 deletions(-)
 rename arch/x86/include/{ => uapi}/asm/pvclock-abi.h (82%)

diff --git a/MAINTAINERS b/MAINTAINERS
index 9fadc98d3c49..773f7c800f6a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14663,8 +14663,8 @@ S:	Supported
 T:	git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 F:	arch/um/include/asm/kvm_para.h
 F:	arch/x86/include/asm/kvm_para.h
-F:	arch/x86/include/asm/pvclock-abi.h
 F:	arch/x86/include/uapi/asm/kvm_para.h
+F:	arch/x86/include/uapi/asm/pvclock-abi.h
 F:	arch/x86/kernel/kvm.c
 F:	arch/x86/kernel/kvmclock.c
 F:	include/asm-generic/kvm_para.h
@@ -29780,8 +29780,8 @@ R:	Boris Ostrovsky <boris.ostrovsky@oracle.com>
 L:	xen-devel@lists.xenproject.org (moderated for non-subscribers)
 S:	Supported
 F:	arch/x86/configs/xen.config
-F:	arch/x86/include/asm/pvclock-abi.h
 F:	arch/x86/include/asm/xen/
+F:	arch/x86/include/uapi/asm/pvclock-abi.h
 F:	arch/x86/platform/pvh/
 F:	arch/x86/xen/
 
diff --git a/arch/x86/include/asm/pvclock-abi.h b/arch/x86/include/uapi/asm/pvclock-abi.h
similarity index 82%
rename from arch/x86/include/asm/pvclock-abi.h
rename to arch/x86/include/uapi/asm/pvclock-abi.h
index b9fece5fc96d..6d70cf640362 100644
--- a/arch/x86/include/asm/pvclock-abi.h
+++ b/arch/x86/include/uapi/asm/pvclock-abi.h
@@ -1,6 +1,9 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 #ifndef _ASM_X86_PVCLOCK_ABI_H
 #define _ASM_X86_PVCLOCK_ABI_H
+
+#include <linux/types.h>
+
 #ifndef __ASSEMBLER__
 
 /*
@@ -24,20 +27,20 @@
  */
 
 struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
+	__u32   version;
+	__u32   pad0;
+	__u64   tsc_timestamp;
+	__u64   system_time;
+	__u32   tsc_to_system_mul;
+	__s8    tsc_shift;
+	__u8    flags;
+	__u8    pad[2];
 } __attribute__((__packed__)); /* 32 bytes */
 
 struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
+	__u32   version;
+	__u32   sec;
+	__u32   nsec;
 } __attribute__((__packed__));
 
 #define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
index f18b00843df3..51a722198997 100755
--- a/scripts/xen-hypercalls.sh
+++ b/scripts/xen-hypercalls.sh
@@ -5,7 +5,7 @@ shift
 in="$@"
 
 for i in $in; do
-	eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
+	eval $CPP -D__KERNEL__ $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
 done | \
 awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
 	END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1474996.1681863 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj2-0003l1-Hg; Thu, 05 Nov 2026 15:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1474996.1681863; Thu, 05 Nov 2026 15:50:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj2-0003k9-9X; Thu, 05 Nov 2026 15:50:04 +0000
Received: by outflank-mailman (input) for mailman id 1474996;
 Thu, 05 Nov 2026 15:50:02 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj0-00032k-DJ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOziz-00GUtv-Q9; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a5-8faa-0a2a0a5109dd-0a2a4506e25e-8
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-195a-0a2a45060019-5a9b5cc78bf8-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo2-28cD; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aaza-0bAa;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=172rW2csVgIW8w3rofrqDqPbG51uDxT7XAZeT+28lqg=; b=HKDJZu1hdZbYfVaBOCLlBavSnA
	V2TA2mcvmVf58eYsqLUFUe/O1HGkUqDYLxh7hKC0/beriyKNx406TAdR+fxUIJcCicJj7ZtRPdrtg
	v8U493D/1ozG5g5huFss99LV35zEJpMn6tuWI09mTXLpEQ5Tkei6UNAMShpEzmscf56d7cdvFq/p+
	Ksz6ArXcuNDw5K5SZXmX7tFDttCVGoC5tVmwb7Ba6a9NZrikijNdZcNKb+evRsYgyACCcJmSPLv5W
	0lu5QwNNyDOXiYQxOlYu0jqSLRPANM9R1+TZ2jL2lYB1L7JC3SFawOmzoOiCNQvXHWfoV9swqj02n
	vfbX3PwQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 13/23] KVM: selftests: Use UAPI pvclock-abi.h in xen_shinfo_test
Date: Thu,  5 Nov 2026 07:49:44 -0800
Message-ID: <20261105154955.2525419-14-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-16d1c6/1793893801-F5C0F77B-22E8A53C/0/0
X-purgate-type: clean
X-purgate-size: 3842

From: David Woodhouse <dwmw@amazon.co.uk>

Now that pvclock-abi.h is a UAPI header, use it in xen_shinfo_test.c
instead of locally duplicating the struct definitions.

Sync the tools/ mirror of the header to the UAPI content: the KVM
selftests include path puts tools/arch/x86/include ahead of the
installed kernel headers, so the mirror is what actually gets used.
That makes the struct fields __u64 (unsigned long long), so switch
the verbose printfs away from PRIu64, which is "lu" on 64-bit.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/arch/x86/include/asm/pvclock-abi.h      | 27 +++++++++-------
 .../selftests/kvm/x86/xen_shinfo_test.c       | 31 ++++++-------------
 2 files changed, 24 insertions(+), 34 deletions(-)

diff --git a/tools/arch/x86/include/asm/pvclock-abi.h b/tools/arch/x86/include/asm/pvclock-abi.h
index b9fece5fc96d..6d70cf640362 100644
--- a/tools/arch/x86/include/asm/pvclock-abi.h
+++ b/tools/arch/x86/include/asm/pvclock-abi.h
@@ -1,6 +1,9 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 #ifndef _ASM_X86_PVCLOCK_ABI_H
 #define _ASM_X86_PVCLOCK_ABI_H
+
+#include <linux/types.h>
+
 #ifndef __ASSEMBLER__
 
 /*
@@ -24,20 +27,20 @@
  */
 
 struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
+	__u32   version;
+	__u32   pad0;
+	__u64   tsc_timestamp;
+	__u64   system_time;
+	__u32   tsc_to_system_mul;
+	__s8    tsc_shift;
+	__u8    flags;
+	__u8    pad[2];
 } __attribute__((__packed__)); /* 32 bytes */
 
 struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
+	__u32   version;
+	__u32   sec;
+	__u32   nsec;
 } __attribute__((__packed__));
 
 #define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
diff --git a/tools/testing/selftests/kvm/x86/xen_shinfo_test.c b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
index aaa414c677ad..c48c0bf44257 100644
--- a/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
+++ b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
@@ -98,22 +98,7 @@ struct sched_poll {
 	u64 timeout;
 };
 
-struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
-} __attribute__((__packed__)); /* 32 bytes */
-
-struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
-} __attribute__((__packed__));
+#include <asm/pvclock-abi.h>
 
 struct vcpu_runstate_info {
 	u32 state;
@@ -987,12 +972,14 @@ int main(int argc, char *argv[])
 
 	if (verbose) {
 		printf("Wall clock (v %d) %d.%09d\n", wc->version, wc->sec, wc->nsec);
-		printf("Time info 1: v %u tsc %" PRIu64 " time %" PRIu64 " mul %u shift %u flags %x\n",
-		       ti->version, ti->tsc_timestamp, ti->system_time, ti->tsc_to_system_mul,
-		       ti->tsc_shift, ti->flags);
-		printf("Time info 2: v %u tsc %" PRIu64 " time %" PRIu64 " mul %u shift %u flags %x\n",
-		       ti2->version, ti2->tsc_timestamp, ti2->system_time, ti2->tsc_to_system_mul,
-		       ti2->tsc_shift, ti2->flags);
+		printf("Time info 1: v %u tsc %llu time %llu mul %u shift %u flags %x\n",
+		       ti->version, (unsigned long long)ti->tsc_timestamp,
+		       (unsigned long long)ti->system_time,
+		       ti->tsc_to_system_mul, ti->tsc_shift, ti->flags);
+		printf("Time info 2: v %u tsc %llu time %llu mul %u shift %u flags %x\n",
+		       ti2->version, (unsigned long long)ti2->tsc_timestamp,
+		       (unsigned long long)ti2->system_time,
+		       ti2->tsc_to_system_mul, ti2->tsc_shift, ti2->flags);
 	}
 
 	TEST_ASSERT(wc->version && !(wc->version & 1),
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475000.1681874 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj3-0004BD-Rj; Thu, 05 Nov 2026 15:50:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475000.1681874; Thu, 05 Nov 2026 15:50:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj3-00049Y-JZ; Thu, 05 Nov 2026 15:50:05 +0000
Received: by outflank-mailman (input) for mailman id 1475000;
 Thu, 05 Nov 2026 15:50:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj1-0003RV-KX
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj1-00GUtv-0S; Thu, 05 Nov 2026 16:50:03 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a0-8faa-0a2a0a5109dd-0a2a4508cd68-16
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:02 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5aa-f659-0a2a45080019-5a9b3222a2f6-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:02 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009ap1-3QP3; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Ab0D-2TMJ;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=OwFdVC1DY43M8jJzrqstmWIxLmeowgW7V9g/IXt3zfQ=; b=Z7DS/iZdyXJaoXvPMN417Pc5ji
	DHKrXeNfgpKd5fcwEH9YRfJMuaRj0AmmjOBJOFcZ6Eq4x8bXdCwiKKFDMAF2JiLYXXTGqfWHBylf0
	+h2WVLI/IZ+31YkTbNNx1Opz3mKaalZntbfZ+nNI82dV6ubDw2ZKFuvl+w/NA++rluDGNdn2Dxs/g
	WkxIBmwv3VhUn0OQO4GkQWc4oKwoaHHBvzHgaStPcUEmtgr3D5JxjPHa1/maZN2geJug48K0Sxcgb
	0UTL53M1Wq92Pa+Jsy9WkD7Ncr1Rj6VGTTS5tMn3Z/M5rj3k+1HjDVbKvf9MKLkG5OI2grGdLemHC
	yzyqOGbA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 21/23] KVM: selftests: Test that the first user TSC write is honoured exactly
Date: Thu,  5 Nov 2026 07:49:52 -0800
Message-ID: <20261105154955.2525419-22-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c1860d/1793893802-CFED287B-519871EA/0/0
X-purgate-type: clean
X-purgate-size: 5469

From: David Woodhouse <dwmw@amazon.co.uk>

The 1-second "slop" heuristic in kvm_synchronize_tsc() is only
supposed to apply between successive userspace TSC writes, i.e. once
kvm->arch.user_set_tsc has been set by a previous write. The kernel's
own internal TSC synchronization on vCPU creation (and frequency
changes) must not arm it, otherwise the first genuine userspace write
falling within 1 second of virtual cycle time of the kernel's default
generation is "corrected" back to that generation instead of being
honoured — breaking the restore of a guest with less than one second
of runtime.

Add a test which creates a vCPU and immediately performs a first
host-initiated write of a TSC value corresponding to ~500ms of guest
runtime, then verifies the value reads back exactly (modulo elapsed
time) rather than being snapped back to the kernel's default
generation near zero.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |  1 +
 .../selftests/kvm/x86/tsc_user_set_test.c     | 86 +++++++++++++++++++
 2 files changed, 87 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/tsc_user_set_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 1edc78845fd3..fd063806a7fb 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -151,6 +151,7 @@ TEST_GEN_PROGS_x86 += x86/xcr0_cpuid_test
 TEST_GEN_PROGS_x86 += x86/xss_msr_test
 TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
+TEST_GEN_PROGS_x86 += x86/tsc_user_set_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
 TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
 TEST_GEN_PROGS_x86 += x86/xen_migration_test
diff --git a/tools/testing/selftests/kvm/x86/tsc_user_set_test.c b/tools/testing/selftests/kvm/x86/tsc_user_set_test.c
new file mode 100644
index 000000000000..6ab76e817f9f
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/tsc_user_set_test.c
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that the first userspace write to MSR_IA32_TSC takes effect
+ * precisely, and is not subjected to the 1-second "slop" heuristic
+ * which is only supposed to apply between successive *userspace*
+ * writes (kvm->arch.user_set_tsc).
+ *
+ * The kernel synchronizes the TSC internally when a vCPU is created
+ * (and when its frequency is set). If any of those kernel-internal
+ * paths incorrectly sets user_set_tsc, then the first genuine write
+ * from userspace which happens to fall within 1 second of virtual
+ * cycle time of the kernel's default generation is "corrected" to
+ * match that generation instead of being honoured exactly. That
+ * breaks the restore of a guest which has genuinely been running
+ * for less than one second.
+ *
+ * Simulate exactly that: create a vCPU (kernel establishes a default
+ * TSC generation starting near zero), then perform the first
+ * host-initiated write with a value corresponding to ~500ms of guest
+ * runtime. If the slop heuristic fires, the written value is snapped
+ * back to the kernel's generation (near zero) and the TSC reads back
+ * hundreds of milliseconds low.
+ */
+#include "kvm_util.h"
+#include "processor.h"
+
+int main(void)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	u64 freq_khz, t_write, t_read, slack_cycles, mono_ns;
+	struct timespec ts;
+	int r;
+
+	/*
+	 * Start the measured window before vCPU creation: a snapped-back
+	 * value tracks time since the kernel's default generation (i.e.
+	 * since creation), so the window the slack is derived from must
+	 * include everything from creation onwards.
+	 */
+	clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+	mono_ns = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+
+	vm = vm_create_with_one_vcpu(&vcpu, NULL);
+
+	r = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	TEST_ASSERT(r > 0, "KVM_GET_TSC_KHZ failed");
+	freq_khz = r;
+
+	/*
+	 * The first user write: a guest TSC corresponding to 500ms of
+	 * runtime. This is within 1s (of virtual cycle time) of the
+	 * kernel's default generation, so it is exactly the case that
+	 * the slop heuristic would destroy if it were (incorrectly)
+	 * armed by the kernel's own internal TSC synchronization.
+	 */
+	t_write = freq_khz * 500ULL;		/* khz * ms = cycles */
+
+	vcpu_set_msr(vcpu, MSR_IA32_TSC, t_write);
+
+	t_read = vcpu_get_msr(vcpu, MSR_IA32_TSC);
+
+	clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+	mono_ns = (ts.tv_sec * 1000000000ULL + ts.tv_nsec) - mono_ns;
+
+	/*
+	 * The TSC advances between the write and the read; bound the
+	 * difference by the measured elapsed time around the two ioctls
+	 * plus 10ms of slop, so a descheduled test cannot flake. If the
+	 * write was snapped to the kernel's default generation, the
+	 * value read back is ~500ms low (i.e. below t_write), which is
+	 * unambiguous.
+	 */
+	slack_cycles = freq_khz * (mono_ns / 1000000ULL + 10);
+
+	TEST_ASSERT(t_read >= t_write,
+		    "TSC went backwards from explicit write: wrote %lu, read %lu"
+		    " (first userspace write was subjected to 1-second slop?)",
+		    t_write, t_read);
+	TEST_ASSERT(t_read - t_write < slack_cycles,
+		    "TSC read back too far from written value: wrote %lu, read %lu",
+		    t_write, t_read);
+
+	kvm_vm_free(vm);
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475001.1681879 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj4-0004F4-8m; Thu, 05 Nov 2026 15:50:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475001.1681879; Thu, 05 Nov 2026 15:50:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj3-0004DT-TR; Thu, 05 Nov 2026 15:50:05 +0000
Received: by outflank-mailman (input) for mailman id 1475001;
 Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj2-0003kb-Gc
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj1-000oQ8-Sm; Thu, 05 Nov 2026 16:50:03 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca59e-bab6-0a2a0a5309dd-0a2a45079914-24
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:03 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-b4ea-0a2a45070019-5a9b3222a2ec-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aoe-2vPJ; Thu, 05 Nov 2026 15:49:55 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aayj-1mx0;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:
	Content-ID:Content-Description:In-Reply-To:References;
	bh=IE4nklCY6MqcWE84DEdzahJjtNtoxYrOmz7d/xAWpjA=; b=LT46+Cb6CZUVUDRuVm1F3DlLGg
	+H39EuzmNT3t35kf3L3pI++omhytgemqpp4ZkEKGoBN+IpNwZ++ZZW+Az6Y55+ksELJr3xpcxx3OO
	+MTghaWpcuMos4bM57OOB8AWXtEkgWnUhhghZNcmCcAllZ/P1ddUehsvV9Qo7Qv2MJkp2kefF3gzL
	WNeNsaGg1YjKNFN3viPuKG/PQ49gOrtycLthxRgv0uchHv/Xdnd2WAu3ii+0pgprKezu7FqYubQAG
	kcW5Tfm8RrQ94VYXcGl8tcwbbt2JfkpAJgSxtvdKUXv54YKBB7eQjvrdPruU5JD96THu77RkGsOJ0
	usSpbCPw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 00/23] KVM: x86: Cleaning up the KVM clock mess, part 2
Date: Thu,  5 Nov 2026 07:49:31 -0800
Message-ID: <20261105154955.2525419-1-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1793893803-A5AC0AE4-5B4DDFFB/0/0
X-purgate-type: clean
X-purgate-size: 7242

From: David Woodhouse <dwmw@amazon.co.uk>

This is the second half of the KVM clock series which has been churning
since about 2024. The first half¹ is upstream as of 7.4-rc1 (yay!).
This is the remainder — the masterclock overhaul, and new API for
fixing migration.

The KVM clock is defined, in the sane case, as a simple arithmetic
function of the guest TSC. The masterclock patches stop KVM from
breaking that definition gratuitously: TSC synchronization no longer
depends on wallclock-sampling heuristics where exact matching will do,
vCPUs with matching frequency but offset TSCs no longer disable the
master clock, and clock updates stop perturbing a perfectly good
reference point for no reason.

The uAPI half then lets userspace preserve the TSC→kvmclock
relationship precisely across migration and live update, instead of
clamping to a UTC reference with KVM_SET_CLOCK and giving the guest an
additional discontinuity: KVM_[GS]ET_CLOCK_GUEST transfers the actual
pvclock information, and KVM_VCPU_TSC_SCALE exposes the precise TSC
frequency and scaling. Selftests prove the lot, including a simulated
live migration which preserves the clock relationship to the limits of
arithmetic precision.

Tree: https://git.infradead.org/?p=users/dwmw2/linux.git;a=shortlog;h=refs/heads/kvmclock11

Since v7² (the last time this half was posted):

 • Rebase onto part 1 as merged in 7.4-rc1.
 • KVM_GET_CLOCK_GUEST no longer writes guest memory; it computes the
   pvclock information directly from the master clock reference point,
   and returns -ENODATA when not in master clock mode. Invoking
   kvm_guest_time_update() from the GET path dirtied guest pages after
   the final dirty-log pass during live migration, which was unkind.
 • KVM_CAP_CLOCK_GUEST renumbered; 251 was taken in the meantime.
 • A TSC synchronization now clears the vCPU's pending backwards-TSC
   compensation, which is already folded into the matched offset it
   reuses; applying it again at the next vcpu_load doubled the delta.
 • Re-synchronizing the TSC after KVM_SET_TSC_KHZ joins the current
   generation for a vCPU which has never run (unless userspace already
   wrote its TSC), preserving the matched state of its siblings and
   with it PVCLOCK_TSC_STABLE_BIT; a vCPU whose scaling ratio differs
   from the generation's opens a new generation rather than inheriting
   an offset recorded in a different scaling domain.
 • The Hyper-V reenlightenment notifier invalidates the TSC page
   itself, now that the clock update consumes the pending masterclock
   requests which used to do it.
 • pvclock_migration_test now also covers vCPUs with mutually-offset
   TSCs: each vCPU's TSC is migrated individually, and a single
   KVM_SET_CLOCK_GUEST on vCPU0 restores the VM-wide clock.
 • New selftest: the first userspace TSC write is honoured exactly,
   rather than being snapped back by the 1-second slop heuristic.
 • Drop the open-coded fallback in kvm_xen_start_timer(); its excuse
   for not using get_kvmclock_ns() went away in part 1.
 • Use a single coherent time snapshot in kvm_vm_ioctl_set_clock()
   instead of sampling CLOCK_REALTIME and the kvmclock base separately.
 • Assorted hardening from pre-post review: KCSAN annotations for the
   benign lockless flag reads, documentation for -EINVAL and the
   same-vCPU requirement of KVM_[GS]ET_CLOCK_GUEST, and selftests that
   skip rather than fail on kernels and hosts without the prerequisites.

¹ https://lore.kernel.org/all/20260826213303.914988-1-seanjc@google.com
² https://lore.kernel.org/all/20260728144954.355376-1-dwmw2@infradead.org


David Woodhouse (20):
  KVM: x86: Improve synchronization in kvm_synchronize_tsc()
  KVM: x86: Kill last_tsc_{nsec,write,offset} fields
  KVM: x86: Replace nr_vcpus_matched_tsc count with
    all_vcpus_matched_tsc bool
  KVM: x86: Allow KVM master clock mode when TSCs are offset from each
    other
  KVM: x86: Factor out kvm_use_master_clock()
  KVM: x86: Avoid gratuitous global clock updates
  KVM: x86: Avoid redundant masterclock updates from multiple vCPUs
  KVM: x86: Re-synchronize TSC after KVM_SET_TSC_KHZ
  KVM: x86: Cache host vclock_mode for masterclock eligibility checks
  KVM: x86: Remove pvclock_gtod_data and private timekeeping code
  KVM: x86: Activate master clock from kvm_arch_init_vm()
  KVM: selftests: Use UAPI pvclock-abi.h in xen_shinfo_test
  KVM: selftests: Add library helpers for clock and TSC-offset ioctls
  KVM: x86: Add KVM_VCPU_TSC_SCALE and fix the documentation on TSC
    migration
  KVM: selftests: Add master clock offset test
  KVM: selftests: Add Xen/generic CPUID timing leaf test
  KVM: selftests: Add Xen runstate migration test
  KVM: selftests: Test that the first user TSC write is honoured exactly
  KVM: x86/xen: Drop open-coded fallback clock read in
    kvm_xen_start_timer()
  KVM: x86: Use a single time snapshot in kvm_vm_ioctl_set_clock()

Jack Allister (3):
  UAPI: x86: Move pvclock-abi to UAPI for x86 platforms
  KVM: x86: Add KVM_[GS]ET_CLOCK_GUEST for accurate KVM clock migration
  KVM: selftests: Add KVM/PV clock selftest to prove timer correction

 Documentation/virt/kvm/api.rst                |  54 ++
 Documentation/virt/kvm/devices/vcpu.rst       | 130 +++-
 Documentation/virt/kvm/locking.rst            |   2 +-
 MAINTAINERS                                   |   4 +-
 arch/x86/include/asm/kvm_host.h               |  12 +-
 arch/x86/include/uapi/asm/kvm.h               |   7 +
 arch/x86/include/{ => uapi}/asm/pvclock-abi.h |  27 +-
 arch/x86/kvm/msrs.c                           |  20 +-
 arch/x86/kvm/x86.c                            | 711 ++++++++++++++----
 arch/x86/kvm/x86.h                            |   2 +-
 arch/x86/kvm/xen.c                            |  40 +-
 include/uapi/linux/kvm.h                      |   4 +
 scripts/xen-hypercalls.sh                     |   2 +-
 tools/arch/x86/include/asm/pvclock-abi.h      |  27 +-
 tools/testing/selftests/kvm/Makefile.kvm      |   6 +
 .../selftests/kvm/include/x86/processor.h     |  50 ++
 .../kvm/x86/masterclock_offset_test.c         | 215 ++++++
 .../kvm/x86/pvclock_migration_test.c          | 520 +++++++++++++
 .../testing/selftests/kvm/x86/pvclock_test.c  | 447 +++++++++++
 .../selftests/kvm/x86/tsc_user_set_test.c     |  86 +++
 .../selftests/kvm/x86/xen_cpuid_timing_test.c | 273 +++++++
 .../selftests/kvm/x86/xen_migration_test.c    | 222 ++++++
 .../selftests/kvm/x86/xen_shinfo_test.c       |  31 +-
 23 files changed, 2625 insertions(+), 267 deletions(-)
 rename arch/x86/include/{ => uapi}/asm/pvclock-abi.h (82%)
 create mode 100644 tools/testing/selftests/kvm/x86/masterclock_offset_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_migration_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/tsc_user_set_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/xen_migration_test.c


base-commit: dea4f6380f4ec96e8f3b0aaf2343764bd0d25ef4
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475002.1681885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj4-0004Nx-On; Thu, 05 Nov 2026 15:50:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475002.1681885; Thu, 05 Nov 2026 15:50:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj4-0004Ks-IF; Thu, 05 Nov 2026 15:50:06 +0000
Received: by outflank-mailman (input) for mailman id 1475002;
 Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj2-0003kM-GD
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj1-00GUz4-SG; Thu, 05 Nov 2026 16:50:03 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a0-8faa-0a2a0a5109dd-0a2a4508cd68-22
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:03 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-f659-0a2a45080019-5a9b3222a2e0-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009aom-0Bg6; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000AazE-3RpG;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=LO8qpf/zyYF+KNtOzcQ25RJ1JLpxTyJ3m93RmYz7zZU=; b=XT7M0GGX2fVH2MB+JSMkxarzg7
	DKgvl5uClCYMLng9USON+1pZhCxVy6Uu8Au0b+wwlC5cQSb3i4+fW+7VAr/LCRBAYjYIa4PD4Q2C1
	hh01bgMXyQ57XoFl9FfKrqGlncF82+zya0U7L3l+gma6s8022NHcZXP3JUJg80tpu9gyj0G5Ywjbg
	Fe2e8pg4NiPVeOq8GLwtPSrinn/C+SQQaj71oemDrCiCQESLqI+qSoetQkFz2QnoXTtZd0F7STyfQ
	0fbSwIzFF6/CuN35IwXPOSHm96vRdkBh+0+9GpDIQu32xVatgmf7kdRrfgvPpkgIdIxW0vazEv4zl
	rBx6C4hA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 08/23] KVM: x86: Re-synchronize TSC after KVM_SET_TSC_KHZ
Date: Thu,  5 Nov 2026 07:49:39 -0800
Message-ID: <20261105154955.2525419-9-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c1860d/1793893803-D715E87B-EA25E761/0/0
X-purgate-type: clean
X-purgate-size: 6805

From: David Woodhouse <dwmw@amazon.co.uk>

KVM_SET_TSC_KHZ changes the vCPU's TSC scaling ratio but does not
update the VM-wide cur_tsc_scaling_ratio used by get_kvmclock().
This causes get_kvmclock() to use a stale (default 1:1) ratio when
computing the KVM clock, leading to drift between the host-side
kvmclock and what the guest observes.

Fix this by calling kvm_synchronize_tsc() after changing the TSC
frequency. This:
 - Updates cur_tsc_scaling_ratio (consumed by pvclock_update_vm_gtod_copy)
 - Ensures the TSC value is continuous across the frequency change
 - Triggers kvm_track_tsc_matching() for proper masterclock handling
 - Establishes the new TSC generation for subsequent vCPUs to match

Since kvm_synchronize_tsc() previously inferred "userspace wrote the
TSC" from being given a non-NULL value, and this new call is a purely
kernel-internal resynchronization (including from vCPU creation via
the default frequency), make that an explicit 'user_initiated'
parameter instead. Otherwise the kernel's own call would set
kvm->arch.user_set_tsc and incorrectly enable the 1-second slop
heuristic before userspace has ever written a TSC value, breaking
the restore of a guest with less than one second of runtime.

Only preserve the TSC value across the change for a vCPU which has
actually run. For one which has not, synchronize as for a zero write
instead, joining the current generation. At vCPU creation (which comes
through here with the default frequency) the value read happens to be
zero anyway, because the scaling ratio has not yet been initialized;
make that explicit rather than an accident. For an explicit
KVM_SET_TSC_KHZ on a never-run vCPU, the nonzero value could never
match — userspace has not written a TSC, so the matching window is not
armed — and each such call would open a new TSC generation, orphaning
the matched state of the sibling vCPUs and denying
PVCLOCK_TSC_STABLE_BIT to a multi-vCPU guest whose VMM never writes
the TSCs explicitly. If userspace has already written a TSC, preserve
the value even for a never-run vCPU — a zero write would discard it —
and let the user-write matching window do its usual job.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/msrs.c |  2 +-
 arch/x86/kvm/x86.c  | 38 +++++++++++++++++++++++++++++++++-----
 arch/x86/kvm/x86.h  |  2 +-
 3 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index 26eb30f10c43..d07831b5dfb8 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1645,7 +1645,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 		break;
 	case MSR_IA32_TSC:
 		if (msr_info->host_initiated) {
-			kvm_synchronize_tsc(vcpu, &data);
+			kvm_synchronize_tsc(vcpu, &data, true);
 		} else if (!vcpu->arch.guest_tsc_protected) {
 			u64 adj = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data) -
 				  vcpu->arch.l1_tsc_offset;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 77bd3e4bfdcd..f551056d7274 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1064,6 +1064,7 @@ static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz)
 {
 	u32 thresh_lo, thresh_hi;
 	int use_scaling = 0;
+	u64 tsc;
 
 	/* tsc_khz can be zero if TSC calibration fails */
 	if (user_tsc_khz == 0) {
@@ -1091,7 +1092,34 @@ static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz)
 			 user_tsc_khz, thresh_lo, thresh_hi);
 		use_scaling = 1;
 	}
-	return set_tsc_khz(vcpu, user_tsc_khz, use_scaling);
+	/*
+	 * Read the guest TSC before changing the ratio, so we can
+	 * re-synchronize to preserve continuity across the change.
+	 */
+	tsc = kvm_read_l1_tsc(vcpu, rdtsc());
+
+	if (set_tsc_khz(vcpu, user_tsc_khz, use_scaling))
+		return -1;
+
+	/*
+	 * Preserving continuity only makes sense for a vCPU which has
+	 * actually run; for one which has not, synchronize as for a zero
+	 * write, joining the current generation. This makes vCPU creation
+	 * (which comes through here with the default frequency) join the
+	 * generation *explicitly*, rather than by the accident that the
+	 * scaling ratio is still zero at this point so the TSC read above
+	 * is zero anyway — and it stops an explicit KVM_SET_TSC_KHZ on a
+	 * never-run vCPU, whose nonzero TSC value could never match, from
+	 * opening a new generation and orphaning the matched state of its
+	 * siblings. If userspace has already written a TSC, preserve the
+	 * value even for a never-run vCPU — a zero write would discard it —
+	 * and let the user-write matching window do its usual job.
+	 */
+	if (vcpu->arch.last_vmentry_cpu != -1 || vcpu->kvm->arch.user_set_tsc)
+		kvm_synchronize_tsc(vcpu, &tsc, false);
+	else
+		kvm_synchronize_tsc(vcpu, NULL, false);
+	return 0;
 }
 
 static u64 compute_guest_tsc(struct kvm_vcpu *vcpu, s64 kernel_ns)
@@ -1453,9 +1481,9 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	kvm_track_tsc_matching(vcpu, !matched);
 }
 
-void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
+void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *value, bool user_initiated)
 {
-	u64 data = user_value ? *user_value : 0;
+	u64 data = value ? *value : 0;
 	struct kvm *kvm = vcpu->kvm;
 	u64 offset, host_tsc, elapsed;
 	s64 ns;
@@ -1531,7 +1559,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 		matched = true;
 	}
 
-	__kvm_synchronize_tsc(vcpu, offset, data, ns, matched, !!user_value);
+	__kvm_synchronize_tsc(vcpu, offset, data, ns, matched, user_initiated);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 }
 
@@ -9665,7 +9693,7 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 	if (mutex_lock_killable(&vcpu->mutex))
 		return;
 	vcpu_load(vcpu);
-	kvm_synchronize_tsc(vcpu, NULL);
+	kvm_synchronize_tsc(vcpu, NULL, false);
 	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
 		kvm_update_masterclock(vcpu->kvm, NULL);
 	vcpu_put(vcpu);
diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
index 436e2fb1396c..de4c86ea5a7d 100644
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -330,7 +330,7 @@ uint64_t kvm_get_wall_clock_epoch(struct kvm *kvm);
 bool kvm_get_monotonic_and_clockread(s64 *kernel_ns, u64 *tsc_timestamp);
 int kvm_guest_time_update(struct kvm_vcpu *v);
 
-void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value);
+void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *value, bool user_initiated);
 u64 kvm_scale_tsc(u64 tsc, u64 ratio);
 u64 kvm_read_l1_tsc(struct kvm_vcpu *vcpu, u64 host_tsc);
 u64 kvm_calc_nested_tsc_offset(u64 l1_offset, u64 l2_offset, u64 l2_multiplier);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475003.1681891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj5-0004W3-GE; Thu, 05 Nov 2026 15:50:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475003.1681891; Thu, 05 Nov 2026 15:50:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj5-0004UF-03; Thu, 05 Nov 2026 15:50:07 +0000
Received: by outflank-mailman (input) for mailman id 1475003;
 Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj2-0003m8-Lt
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzix-00B7sn-1s; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a2-2eae-0a2a0a5409dd-0a2a450ab68a-8
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-f2d2-0a2a450a0019-5a9b3222e7b0-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009aov-1vhq; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aazk-0yJg;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=E7RyVZdQRrFYW33Mv02BmWV0i6lT0Z4tqhtPA/W0mTY=; b=H3IO0BEc+tQjGnS83F/d68xSGQ
	sdR973IX6KJN+GBLVRhsF06Ti8RuEQwhNP+LZHL7gv+WSMh+J7yMufvn+h6VDCzabk/PZVNrqGHTb
	gSPrSNiG6QG3qq7mOi7ym0EaOO9pf9KzTjpHvdunnmnNJ+WN+h6UpSlSaP4TfzzoNfFal8cA2XU6Z
	KOK19dbEi/Em1Xm3qau8q0cXGtIbXMNM6e77BmNOZKOiFkLqmvhFmzQR/vR+KwS9QFMi2ACqLqKD3
	T0r6DRaGJJ7Rjft+clXBibsPDMfggrObKJTJhd5z1BZ8dY4v9uN9moIERg57kTWHufN4uSaKLmFk5
	RJcIlilg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 15/23] KVM: selftests: Add library helpers for clock and TSC-offset ioctls
Date: Thu,  5 Nov 2026 07:49:46 -0800
Message-ID: <20261105154955.2525419-16-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-4011c0/1793893798-5A3DCCFC-85DE1301/0/0
X-purgate-type: clean
X-purgate-size: 2556

From: David Woodhouse <dwmw@amazon.co.uk>

Add wrappers for KVM_[GS]ET_CLOCK_GUEST, the KVM_VCPU_TSC_OFFSET device
attribute and KVM_[GS]ET_CLOCK to the x86 library header, so that the
KVM clock selftests don't each open-code the same ioctl invocations.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 .../selftests/kvm/include/x86/processor.h     | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/tools/testing/selftests/kvm/include/x86/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h
index 5898a277a2e0..4062bdb32716 100644
--- a/tools/testing/selftests/kvm/include/x86/processor.h
+++ b/tools/testing/selftests/kvm/include/x86/processor.h
@@ -12,6 +12,7 @@
 
 #include <asm/msr-index.h>
 #include <asm/prctl.h>
+#include <asm/pvclock-abi.h>
 
 #include <linux/kvm_para.h>
 #include <linux/stringify.h>
@@ -1029,6 +1030,55 @@ static inline void vcpu_xcrs_set(struct kvm_vcpu *vcpu, struct kvm_xcrs *xcrs)
 	vcpu_ioctl(vcpu, KVM_SET_XCRS, xcrs);
 }
 
+static inline int __vcpu_get_clock_guest(struct kvm_vcpu *vcpu,
+					 struct pvclock_vcpu_time_info *pvti)
+{
+	return __vcpu_ioctl(vcpu, KVM_GET_CLOCK_GUEST, pvti);
+}
+
+static inline void vcpu_get_clock_guest(struct kvm_vcpu *vcpu,
+					struct pvclock_vcpu_time_info *pvti)
+{
+	vcpu_ioctl(vcpu, KVM_GET_CLOCK_GUEST, pvti);
+}
+
+static inline int __vcpu_set_clock_guest(struct kvm_vcpu *vcpu,
+					 struct pvclock_vcpu_time_info *pvti)
+{
+	return __vcpu_ioctl(vcpu, KVM_SET_CLOCK_GUEST, pvti);
+}
+
+static inline void vcpu_set_clock_guest(struct kvm_vcpu *vcpu,
+					struct pvclock_vcpu_time_info *pvti)
+{
+	vcpu_ioctl(vcpu, KVM_SET_CLOCK_GUEST, pvti);
+}
+
+static inline u64 vcpu_get_tsc_offset(struct kvm_vcpu *vcpu)
+{
+	u64 offset;
+
+	vcpu_device_attr_get(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET,
+			     &offset);
+	return offset;
+}
+
+static inline void vcpu_set_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)
+{
+	vcpu_device_attr_set(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET,
+			     &offset);
+}
+
+static inline void vm_get_clock(struct kvm_vm *vm, struct kvm_clock_data *data)
+{
+	vm_ioctl(vm, KVM_GET_CLOCK, data);
+}
+
+static inline void vm_set_clock(struct kvm_vm *vm, struct kvm_clock_data *data)
+{
+	vm_ioctl(vm, KVM_SET_CLOCK, data);
+}
+
 const struct kvm_cpuid_entry2 *get_cpuid_entry(const struct kvm_cpuid2 *cpuid,
 					       u32 function, u32 index);
 const struct kvm_cpuid2 *kvm_get_supported_cpuid(void);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475004.1681897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj6-0004lu-Ih; Thu, 05 Nov 2026 15:50:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475004.1681897; Thu, 05 Nov 2026 15:50:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj6-0004k0-6y; Thu, 05 Nov 2026 15:50:08 +0000
Received: by outflank-mailman (input) for mailman id 1475004;
 Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj2-0003q8-RP
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj2-00B7sn-7p; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca59a-2eae-0a2a0a5409dd-0a2a4505a2a0-26
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5aa-4cb1-0a2a45050019-5a9b32229b34-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:02 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009ap3-3jWL; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Ab0M-2wXi;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=4PUyL7sZNDc2BWRiB64jpro3+lQx5Ezd+14nQXzY7IA=; b=Cf3duvbac+7rHXJGDQKcnYlCNr
	IcgIMSruZf01InZFMw3B+GOLOGUka35oR0dUYdvC+ttjra2EwODA2C86VHgppSzQhSLibltcabYDc
	8toCTdldTkhNFnZgmqBnfyh2j6+N35WPCP8LvUmt9G6bgyoHXpOr/pA8CbzEb047at4xYFgHj6tIF
	9I9UByH1H1lKoJDq9bF+ZBfiyzvzpfBoXlZEx7/vWy0zZsyyzfSSSOxJCV9R/yYfCqFgkCs4ACV1x
	xp1Mhm3S3r2Jvs38W7BWDUl5FDkIxxuyECP6cGHMQuqn39hhGR7JDfmUC7/bPEisfHSh+V3AZFCkI
	/099zKAg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 23/23] KVM: x86: Use a single time snapshot in kvm_vm_ioctl_set_clock()
Date: Thu,  5 Nov 2026 07:49:54 -0800
Message-ID: <20261105154955.2525419-24-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c201ff/1793893802-722AB2A1-814D9BF4/0/0
X-purgate-type: clean
X-purgate-size: 2902

From: David Woodhouse <dwmw@amazon.co.uk>

The KVM_CLOCK_REALTIME handling read CLOCK_REALTIME with
ktime_get_real_ns() and then anchored the result at a different
instant: the master clock reference point captured a few lines
earlier, or a separate get_kvmclock_base_ns() read. The time elapsed
between the two reads is added to the restored clock as error --
bounded by the interrupts-off critical section, but gratuitous now
that the timekeeping core can snapshot CLOCK_REALTIME and
CLOCK_MONOTONIC_RAW at the same instant.

Take one ktime_get_snapshot_id(CLOCK_REALTIME) snapshot and derive
both the realtime correction and the raw reference point from it. In
master clock mode, keep anchoring at master_kernel_ns -- so that
'system_time' cannot go negative for a very small data.clock, as the
existing comment explains -- by projecting the snapshot's realtime
value back to that reference point; CLOCK_REALTIME and
CLOCK_MONOTONIC_RAW tick at the same rate across the few ns in
between, give or take NTP slew.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 17544b3cc035..4db0c809d120 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4693,19 +4693,41 @@ static int kvm_vm_ioctl_set_clock(struct kvm *kvm, void __user *argp)
 	 * 'system_time' when 'data.clock' is very small.
 	 */
 	if (data.flags & KVM_CLOCK_REALTIME) {
-		u64 now_real_ns = ktime_get_real_ns();
+		struct system_time_snapshot snap = {};
+		u64 now_real_ns;
+
+		/*
+		 * Snapshot CLOCK_REALTIME and CLOCK_MONOTONIC_RAW at the
+		 * same instant, so that the elapsed time applied to
+		 * data.clock and the reference point the result is anchored
+		 * to are coherent.
+		 */
+		ktime_get_snapshot_id(CLOCK_REALTIME, &snap);
+		now_real_ns = ktime_to_ns(snap.systime);
+		now_raw_ns = ktime_to_ns(ktime_mono_to_any(snap.monoraw,
+							   TK_OFFS_BOOT));
+
+		/*
+		 * When the master clock is in use, anchor at its reference
+		 * point instead, projecting the realtime value back to the
+		 * same instant. The two clocks tick at the same rate across
+		 * the few ns in between, give or take NTP slew.
+		 */
+		if (ka->use_master_clock) {
+			now_real_ns -= now_raw_ns - ka->master_kernel_ns;
+			now_raw_ns = ka->master_kernel_ns;
+		}
 
 		/*
 		 * Avoid stepping the kvmclock backwards.
 		 */
 		if (now_real_ns > data.realtime)
 			data.clock += now_real_ns - data.realtime;
-	}
-
-	if (ka->use_master_clock)
+	} else if (ka->use_master_clock) {
 		now_raw_ns = ka->master_kernel_ns;
-	else
+	} else {
 		now_raw_ns = get_kvmclock_base_ns();
+	}
 	ka->kvmclock_offset = data.clock - now_raw_ns;
 	kvm_end_pvclock_update(kvm);
 	return 0;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475005.1681904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj7-0004uN-CC; Thu, 05 Nov 2026 15:50:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475005.1681904; Thu, 05 Nov 2026 15:50:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj6-0004qX-R4; Thu, 05 Nov 2026 15:50:08 +0000
Received: by outflank-mailman (input) for mailman id 1475005;
 Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj2-0003sw-W3
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj2-00B7sn-C0; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca590-2eae-0a2a0a5409dd-0a2a450bcf62-32
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-b7e8-0a2a450b0019-5a9b3222d9fe-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aoh-3ST5; Thu, 05 Nov 2026 15:49:55 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aayy-2Vph;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=PsNNUanak/d4Ip+sWO3zx6GqIu3bms014MUP+JVO3iY=; b=V5zg/a2McUxPGpSPe2gPv4rXJO
	BSOrVjZhPfRZ8yI8elQVF9/Kh3m/Z7kN4MOfmHFrlJjbAbRm37yL4E6QGYjBvuvmSJhcKUITBX2Sa
	yO8rdAMaH/T90bYnG/LMQobRGdOXzrOMEqMGnECs6g3mcHEiocb66CLidNmcStniAFZLPAgDrx21z
	sL10ehE9FXSCILPtMmJS+s2PqHHAVy3zU+CSBfzkQMeFrWKgsD2yigz+Yh5LvgmJy9ukYUDBvPAvs
	twwBQj5QHxr9rDY7i4AZvTLAGlvBKNNZNuOmt0f3FslzFLi8S98xoDB06BWhU/DdGpRc0+fRJXo1r
	iivu7iXQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 04/23] KVM: x86: Allow KVM master clock mode when TSCs are offset from each other
Date: Thu,  5 Nov 2026 07:49:35 -0800
Message-ID: <20261105154955.2525419-5-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-42698a/1793893803-AAEDE9EA-A23640D4/0/0
X-purgate-type: clean
X-purgate-size: 11834

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, a guest writing different TSC values on different vCPUs could
force KVM out of master clock mode. With this change, only a frequency
mismatch disables master clock. The only ways for non-master-clock mode
to happen now are archaic hardware without a TSC-based clocksource, a
VMM that sets different TSC frequencies across vCPUs, or a guest using
the legacy MSR_KVM_SYSTEM_TIME (which could be addressed in future by
simply updating tsc_timestamp more frequently rather than falling out of
master clock mode entirely).

Running at a different frequency would lead to a systemic skew between
the clock(s) as observed by different vCPUs due to arithmetic precision
in the scaling. So that should indeed force the clock to be based on the
host's CLOCK_MONOTONIC_RAW instead of being in masterclock mode where it
is defined by the guest TSC.

But vCPUs having different TSC *offsets* is not a problem, because the
KVM clock is a single VM-wide nanosecond timeline; only its expression
in TSC cycles is per-vCPU. Each vCPU's pvclock structure is generated by
translating the shared master clock snapshot into that vCPU's own TSC
domain via kvm_read_l1_tsc(), which applies the vCPU's scaling ratio and
offset to the snapshot's tsc_timestamp. When the guest then computes
system_time + (rdtsc - tsc_timestamp) * rate, its own offset is present
in both rdtsc and tsc_timestamp and cancels out: every vCPU reads the
same VM-wide clock from its own pvclock. VM-scoped consumers of the
master clock (KVM_GET_CLOCK, the wall clock epoch, the Xen runstate
times) operate purely in the nanosecond domain, where the per-vCPU
offset never appears at all.

Only two consumers genuinely depend on the TSC offsets matching, and
both are already guarded by PVCLOCK_TSC_STABLE_BIT:

 1. A guest vCPU reading a *sibling* vCPU's pvclock structure with its
    own TSC would compute garbage. This is precisely why commit
    b48aa97e3820 ("KVM: x86: require matched TSC offsets for master clock")
    required matched offsets. But the guest-side guard for it already
    exists: when PVCLOCK_TSC_STABLE_BIT is clear, guests fall back to
    the global last_value monotonicity clamp for cross-vCPU reads.

 2. The Hyper-V TSC page is a single VM-wide {scale, offset} pair which
    every guest vCPU applies to its own rdtsc, so it cannot represent
    divergent offsets. It is self-guarding: compute_tsc_page_parameters()
    refuses to populate the page unless PVCLOCK_TSC_STABLE_BIT is set,
    which forces such guests onto the (nanosecond domain, and thus safe)
    TIME_REF_COUNT MSR instead.

So: use frequency match for master clock eligibility, and full TSC match
(including offset) only for PVCLOCK_TSC_STABLE_BIT, which tells the
guest it is safe to skip cross-vCPU monotonicity enforcement.

Track frequency matching separately from offset matching using a
dedicated freq generation counter (cur_tsc_freq_generation) that only
bumps on actual frequency changes. Each vCPU is counted exactly once per
freq generation via a per-vCPU this_tsc_freq_generation field, preventing
repeated syncs of the same vCPU from falsely re-enabling master clock.

Note that the generation-based counting has a known limitation: if all
vCPUs are in sync and one changes away and then back again, the other
vCPUs are still at the old generation and won't be counted until they
sync again (which may never happen). This was always the case for the
offset tracking and isn't expected VMM behaviour — although it is the
scenario that the VM-wide KVM_SET_TSC_KHZ ioctl was introduced to handle
cleanly.

While at it, restructure the existing TSC offset generation tracking to
use the same pattern: reset counter to zero on new generation, then
unconditionally count vCPUs that haven't been seen in this generation.
Both counters now use a consistent >= online_vcpus threshold (1-based
counting where the reference vCPU is included in the count).

The divergent-offset behaviour is exercised by pvclock_migration_test,
which runs vCPUs with TSCs offset by ±0.5-1s from each other and
verifies that the master clock survives, that PVCLOCK_TSC_STABLE_BIT is
cleared, and that all vCPUs nevertheless agree on the KVM clock to
within a nanosecond, before and after a simulated live migration.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/include/asm/kvm_host.h |  4 ++
 arch/x86/kvm/x86.c              | 88 ++++++++++++++++++++++++++-------
 2 files changed, 73 insertions(+), 19 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 1efca01647d2..30e89e8fb975 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -887,6 +887,7 @@ struct kvm_vcpu_arch {
 	u64 this_tsc_nsec;
 	u64 this_tsc_write;
 	u64 this_tsc_generation;
+	u64 this_tsc_freq_generation;
 	bool tsc_catchup;
 	bool tsc_always_catchup;
 	s8 virtual_tsc_shift;
@@ -1243,6 +1244,9 @@ struct kvm_arch {
 	u64 cur_tsc_offset;
 	u64 cur_tsc_generation;
 	bool all_vcpus_matched_tsc;
+	bool all_vcpus_matched_freq;
+	int nr_vcpus_matched_freq;
+	u64 cur_tsc_freq_generation;
 	int nr_vcpus_matched_tsc;
 
 	u32 default_tsc_khz;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index ec8693f4827f..38fcb1d75661 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1114,30 +1114,63 @@ static inline bool gtod_is_based_on_tsc(int mode)
 }
 #endif
 
-static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool new_generation)
+static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
+	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
 
 	/*
-	 * To use the masterclock, the host clocksource must be based on TSC
-	 * and all vCPUs must have matching TSCs.  Note, the count for matching
-	 * vCPUs doesn't include the reference vCPU, hence "+1".
+	 * Track whether all vCPUs have matching TSC offsets (for
+	 * PVCLOCK_TSC_STABLE_BIT) and matching frequencies (for
+	 * master clock eligibility).
+	 */
+
+	/*
+	 * A new vCPU might already have incremented ->online_vcpus
+	 * and cause a temporary false negative here. But will then
+	 * call kvm_synchronize_tsc() from kvm_arch_vcpu_postcreate()
+	 * and finish the job.
+	 */
+	int online = atomic_read(&vcpu->kvm->online_vcpus);
+	/*
+	 * WRITE_ONCE() pairs with the READ_ONCE() in kvm_guest_time_update(),
+	 * which samples the flag locklessly (outside both tsc_write_lock and
+	 * its pvclock seqcount read section); the race is benign (a stale
+	 * value merely delays the PVCLOCK_TSC_STABLE_BIT broadcast to the
+	 * masterclock update which is requested below).
 	 */
-	ka->all_vcpus_matched_tsc = (ka->nr_vcpus_matched_tsc + 1 ==
-				     atomic_read(&vcpu->kvm->online_vcpus));
+	WRITE_ONCE(ka->all_vcpus_matched_tsc,
+		   ka->nr_vcpus_matched_tsc >= online);
 
-	bool use_master_clock = ka->all_vcpus_matched_tsc &&
+	update_mclock |= (prev_matched_tsc != ka->all_vcpus_matched_tsc);
+
+	/*
+	 * all_vcpus_matched_freq starts true and is cleared when
+	 * __kvm_synchronize_tsc() detects a frequency mismatch.
+	 * Re-enable when all vCPUs have synced with matching frequency.
+	 * If all offsets also match, that implies frequencies match too.
+	 */
+	if (ka->all_vcpus_matched_tsc ||
+	    ka->nr_vcpus_matched_freq >= online)
+		ka->all_vcpus_matched_freq = true;
+
+	/*
+	 * To use the masterclock, the host clocksource must be based on TSC
+	 * and all vCPUs must have matching TSC *frequency*. Different offsets
+	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
+	 * accounts for its offset.
+	 */
+	bool use_master_clock = ka->all_vcpus_matched_freq &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
-	 * Request a masterclock update if the masterclock needs to be toggled
-	 * on/off, or when starting a new generation and the masterclock is
-	 * enabled (compute_guest_tsc() requires the masterclock snapshot to be
-	 * taken _after_ the new generation is created).
+	 * Request a masterclock update if needed: toggling master clock,
+	 * new generation requiring a fresh snapshot, or a change in
+	 * all_vcpus_matched_tsc (to broadcast PVCLOCK_TSC_STABLE_BIT).
 	 */
-	if ((ka->use_master_clock && new_generation) ||
+	if ((ka->use_master_clock && update_mclock) ||
 	    (ka->use_master_clock != use_master_clock))
 		kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
 
@@ -1339,7 +1372,22 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	 * Track the TSC frequency, scaling ratio, and offset for the current
 	 * generation. These are used to detect matching TSC writes and to
 	 * compute the guest TSC from the host clock.
+	 *
+	 * If the frequency changed, master clock mode can no longer be used
+	 * since the kvmclock scaling factors differ between vCPUs.
 	 */
+	if (vcpu->arch.virtual_tsc_khz != kvm->arch.cur_tsc_khz) {
+		kvm->arch.cur_tsc_freq_generation++;
+		kvm->arch.all_vcpus_matched_freq = false;
+		kvm->arch.nr_vcpus_matched_freq = 0;
+	}
+
+	/* Count each vCPU once per freq generation */
+	if (vcpu->arch.this_tsc_freq_generation != kvm->arch.cur_tsc_freq_generation) {
+		vcpu->arch.this_tsc_freq_generation = kvm->arch.cur_tsc_freq_generation;
+		kvm->arch.nr_vcpus_matched_freq++;
+	}
+
 	kvm->arch.cur_tsc_khz = vcpu->arch.virtual_tsc_khz;
 	kvm->arch.cur_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
 
@@ -1365,17 +1413,18 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		 * exact software computation in compute_guest_tsc()
 		 */
 		kvm->arch.cur_tsc_generation++;
+		WRITE_ONCE(kvm->arch.all_vcpus_matched_tsc, false);
+		kvm->arch.nr_vcpus_matched_tsc = 0;
 		kvm->arch.cur_tsc_nsec = ns;
 		kvm->arch.cur_tsc_write = tsc;
 		kvm->arch.cur_tsc_offset = offset;
-		kvm->arch.nr_vcpus_matched_tsc = 0;
-		kvm->arch.all_vcpus_matched_tsc = false;
-	} else if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
+	}
+
+	if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
+		vcpu->arch.this_tsc_generation = kvm->arch.cur_tsc_generation;
 		kvm->arch.nr_vcpus_matched_tsc++;
 	}
 
-	/* Keep track of which generation this VCPU has synchronized to */
-	vcpu->arch.this_tsc_generation = kvm->arch.cur_tsc_generation;
 	vcpu->arch.this_tsc_nsec = kvm->arch.cur_tsc_nsec;
 	vcpu->arch.this_tsc_write = kvm->arch.cur_tsc_write;
 
@@ -1594,7 +1643,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 	bool host_tsc_clocksource, vcpus_matched;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	vcpus_matched = ka->all_vcpus_matched_tsc;
+	vcpus_matched = ka->all_vcpus_matched_freq;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -1922,7 +1971,7 @@ int kvm_guest_time_update(struct kvm_vcpu *v)
 
 	/* If the host uses TSC clocksource, then it is stable */
 	hv_clock.flags = 0;
-	if (use_master_clock)
+	if (use_master_clock && READ_ONCE(ka->all_vcpus_matched_tsc))
 		hv_clock.flags |= PVCLOCK_TSC_STABLE_BIT;
 
 	if (vcpu->pv_time.active) {
@@ -10008,6 +10057,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	ratelimit_state_init(&kvm->arch.kvmclock_update_rs, HZ, 10);
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
 	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
+	kvm->arch.all_vcpus_matched_freq = true;
 
 	/*
 	 * Start with all (zero) vCPUs considered matched, so that a VM whose
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475006.1681911 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj8-00051K-0f; Thu, 05 Nov 2026 15:50:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475006.1681911; Thu, 05 Nov 2026 15:50:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj7-0004zW-ET; Thu, 05 Nov 2026 15:50:09 +0000
Received: by outflank-mailman (input) for mailman id 1475006;
 Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj3-0003vk-6B
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj2-00B7sn-In; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5ab-2eae-0a2a0a5409dd-0a2a4504ba48-6
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:04 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-b57f-0a2a45040019-5a9b3222de26-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aog-3EQm; Thu, 05 Nov 2026 15:49:55 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aays-2HEO;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=h7IHIRRM4XFq6GwXgluit19dquWavUx85ZLuD079Loc=; b=wJOQVik5uP7OzAC5hZCitvfvF0
	4Thd8CLgIpOlwvCfnb6BOX4rc0TukNFuOPsOx3/UrpS3NUXN7vhvsItwvt0Xb4rXkNUC2TNWc043u
	T3eK2BL1xtTetnGeKdhOWYxTPWpTwt5iXQxe278C36OP6PNO88vmYSoUJUPdrTc6/DXtYrkXNBsnV
	RR3YzmQg+ZLuJpAXGELumrxRv3mTGdnI0JTdKCRxVgOKpeVEckfVd52Hy/PV0awnb2xCWs0pRd+bP
	OkmqqbnTzNpxquMdiwgJ5cVsywOvGE9TeLptWJMVexyFIU0ltrJdza9vVbytkS9z0OjrVR+iZV1b9
	PJDxaiVw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 03/23] KVM: x86: Replace nr_vcpus_matched_tsc count with all_vcpus_matched_tsc bool
Date: Thu,  5 Nov 2026 07:49:34 -0800
Message-ID: <20261105154955.2525419-4-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ebf023/1793893803-585C7B50-3F2BE8AD/0/0
X-purgate-type: clean
X-purgate-size: 4215

From: David Woodhouse <dwmw@amazon.co.uk>

Using a count and comparing with kvm->online_vcpus was always racy
because a new vCPU could be created while kvm_track_tsc_matching() was
running and comparing with kvm->online_vcpus. That variable is only
atomic with respect to itself; kvm_arch_vcpu_create() runs before
kvm->online_vcpus is incremented for the new vCPU.

Replace the count with a boolean that is set in kvm_track_tsc_matching()
after comparing the count, and cleared when a new TSC generation starts.
The boolean is consumed by pvclock_update_vm_gtod_copy() under the
tsc_write_lock, which serializes against __kvm_synchronize_tsc().

Keep the count for now as it's still used in the trace event.

Note that the explicit clear of the flag when a new generation starts
is currently overwritten by the unconditional recompute in
kvm_track_tsc_matching() under the same lock; it is preparation for
subsequent patches which consume the previous value of the flag.

Initialize the flag to true at VM creation: a VM whose vCPUs never
reach kvm_track_tsc_matching() — notably with a protected guest TSC
(TDX, SNP Secure TSC), where __kvm_synchronize_tsc() returns early —
would otherwise never be eligible for PVCLOCK_TSC_STABLE_BIT, where
the old read-time computation gave 0 + 1 == 1 for a single-vCPU VM.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/include/asm/kvm_host.h |  1 +
 arch/x86/kvm/x86.c              | 18 ++++++++++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index ea48b1949316..1efca01647d2 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1242,6 +1242,7 @@ struct kvm_arch {
 	u64 cur_tsc_write;
 	u64 cur_tsc_offset;
 	u64 cur_tsc_generation;
+	bool all_vcpus_matched_tsc;
 	int nr_vcpus_matched_tsc;
 
 	u32 default_tsc_khz;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 90f9b07ef749..ec8693f4827f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1125,8 +1125,10 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool new_generation)
 	 * and all vCPUs must have matching TSCs.  Note, the count for matching
 	 * vCPUs doesn't include the reference vCPU, hence "+1".
 	 */
-	bool use_master_clock = (ka->nr_vcpus_matched_tsc + 1 ==
-				 atomic_read(&vcpu->kvm->online_vcpus)) &&
+	ka->all_vcpus_matched_tsc = (ka->nr_vcpus_matched_tsc + 1 ==
+				     atomic_read(&vcpu->kvm->online_vcpus));
+
+	bool use_master_clock = ka->all_vcpus_matched_tsc &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
@@ -1367,6 +1369,7 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		kvm->arch.cur_tsc_write = tsc;
 		kvm->arch.cur_tsc_offset = offset;
 		kvm->arch.nr_vcpus_matched_tsc = 0;
+		kvm->arch.all_vcpus_matched_tsc = false;
 	} else if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
 		kvm->arch.nr_vcpus_matched_tsc++;
 	}
@@ -1591,8 +1594,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 	bool host_tsc_clocksource, vcpus_matched;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	vcpus_matched = (ka->nr_vcpus_matched_tsc + 1 ==
-			atomic_read(&kvm->online_vcpus));
+	vcpus_matched = ka->all_vcpus_matched_tsc;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -10007,6 +10009,14 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
 	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
 
+	/*
+	 * Start with all (zero) vCPUs considered matched, so that a VM whose
+	 * vCPUs never reach kvm_track_tsc_matching() — notably when the guest
+	 * TSC is protected (TDX, SNP Secure TSC) and __kvm_synchronize_tsc()
+	 * returns early — is still eligible for PVCLOCK_TSC_STABLE_BIT.
+	 */
+	kvm->arch.all_vcpus_matched_tsc = true;
+
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 	pvclock_update_vm_gtod_copy(kvm);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:10 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475007.1681919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj8-0005D3-P5; Thu, 05 Nov 2026 15:50:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475007.1681919; Thu, 05 Nov 2026 15:50:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj8-00059x-7f; Thu, 05 Nov 2026 15:50:10 +0000
Received: by outflank-mailman (input) for mailman id 1475007;
 Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj3-00048z-Ox
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj3-00B7sn-55; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5ab-2eae-0a2a0a5409dd-0a2a4504ba48-14
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5ac-b57f-0a2a45040019-5a9b5cc79a2c-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bnx-29gN; Thu, 05 Nov 2026 15:50:02 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000AazA-3F3l;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=4v0rDhUMKy7kQmc3QfZi0l6L+ftlrEv1HxH6keOFZdY=; b=IBFpOFMsi6NlpMtYPKpOTju9Rz
	DYt/dOI0xTywoqJg1je/Aw5UehdLHfwZCvA0+U5UlA2LBReC+cQSkLu4+D5f90OBL5AVgaudHdcLX
	gJ+jCHLLz+g+poLxU6cXjbFtieCFYlWjnUfP11hqf4DC7n5OruYyfGEGtBVWMwXAe1kUCN/IRoqFT
	NzTkyrdbZuveCj0AvhWlaRdNaNP2jaTHjlr+vD4lm064zduWBZyvPu0vzyXehISJuSN/1ufQyC/Mq
	PiwB6dgoGAntbeAaStGhq6VtTIJnDTCN/HbGxju7Swe50SzsLrfygMn/KhS6IpodjzVgs5HuhFMsx
	zpwckCnA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 07/23] KVM: x86: Avoid redundant masterclock updates from multiple vCPUs
Date: Thu,  5 Nov 2026 07:49:38 -0800
Message-ID: <20261105154955.2525419-8-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ebf023/1793893805-587C6B50-ADDD1A45/0/0
X-purgate-type: clean
X-purgate-size: 7053

From: David Woodhouse <dwmw@amazon.co.uk>

When a masterclock update is triggered (e.g. by the clocksource change
notifier), KVM_REQ_MASTERCLOCK_UPDATE is set on all vCPUs. Without this
fix, each vCPU independently processes the request and redundantly
re-executes the entire pvclock_update_vm_gtod_copy() sequence, serialized
only by tsc_write_lock. Each redundant re-snapshot of the master clock
reference point introduces potential clock drift.

Fix this by having __kvm_start_pvclock_update() check, after acquiring
the lock, whether the requesting vCPU's KVM_REQ_MASTERCLOCK_UPDATE is
still set. If another vCPU already did the update and cleared it, bail
out. Otherwise, clear the request on all other vCPUs before proceeding.

The caller in vcpu_enter_guest() now uses kvm_test_request() (non-clearing)
since the clearing is done inside __kvm_start_pvclock_update() under the
lock.

kvm_end_pvclock_update() now broadcasts KVM_REQ_CLOCK_UPDATE and clears
KVM_REQ_MCLOCK_INPROGRESS while still inside the interrupts-off lock
section with the seqcount held open. That ordering is load-bearing for
the bail-out path: a vCPU whose request was consumed by another updater
must be guaranteed to observe either the open seqcount or its pending
KVM_REQ_CLOCK_UPDATE before it can enter the guest.

Since the update now consumes pending KVM_REQ_MASTERCLOCK_UPDATE
requests, the Hyper-V reenlightenment notifier must invalidate the
Hyper-V TSC page itself; previously a pending request survived the
notifier and refreshed the page via kvm_update_masterclock() later.

Suggested-by: Dongli Zhang <dongli.zhang@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 arch/x86/kvm/msrs.c | 11 ++++++--
 arch/x86/kvm/x86.c  | 67 +++++++++++++++++++++++++++++++++++----------
 2 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index a2dffa1c706f..26eb30f10c43 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1278,10 +1278,15 @@ static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time,
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 
 	if (vcpu->vcpu_id == 0 && !host_initiated) {
-		if (ka->boot_vcpu_runs_old_kvmclock != old_msr)
+		/*
+		 * Store the flag before requesting the masterclock update:
+		 * the update may now be performed by another vCPU (which
+		 * consumes this request), and it must observe the new value.
+		 */
+		if (ka->boot_vcpu_runs_old_kvmclock != old_msr) {
+			ka->boot_vcpu_runs_old_kvmclock = old_msr;
 			kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
-
-		ka->boot_vcpu_runs_old_kvmclock = old_msr;
+		}
 	}
 
 	vcpu->arch.time = system_time;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e3618d82c099..77bd3e4bfdcd 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1712,10 +1712,39 @@ static void kvm_make_mclock_inprogress_request(struct kvm *kvm)
 	kvm_make_all_cpus_request(kvm, KVM_REQ_MCLOCK_INPROGRESS);
 }
 
-static void __kvm_start_pvclock_update(struct kvm *kvm)
+static void kvm_clear_mclock_inprogress_request(struct kvm *kvm)
 {
+	struct kvm_vcpu *vcpu;
+	unsigned long i;
+
+	kvm_for_each_vcpu(i, vcpu, kvm)
+		kvm_clear_request(KVM_REQ_MCLOCK_INPROGRESS, vcpu);
+}
+
+static bool __kvm_start_pvclock_update(struct kvm *kvm, struct kvm_vcpu *requesting_vcpu)
+{
+	struct kvm_vcpu *vcpu;
+	unsigned long i;
+
 	raw_spin_lock_irq(&kvm->arch.tsc_write_lock);
+
+	/*
+	 * If another vCPU already did the update while we were waiting
+	 * for the lock, our request will have been cleared. Bail out.
+	 */
+	if (requesting_vcpu &&
+	    !kvm_test_request(KVM_REQ_MASTERCLOCK_UPDATE, requesting_vcpu)) {
+		kvm_clear_mclock_inprogress_request(kvm);
+		raw_spin_unlock_irq(&kvm->arch.tsc_write_lock);
+		return false;
+	}
+
+	/* The update is VM-wide; prevent other vCPUs from redoing it. */
+	kvm_for_each_vcpu(i, vcpu, kvm)
+		kvm_clear_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
+
 	write_seqcount_begin(&kvm->arch.pvclock_sc);
+	return true;
 }
 
 static void kvm_start_pvclock_update(struct kvm *kvm)
@@ -1723,7 +1752,7 @@ static void kvm_start_pvclock_update(struct kvm *kvm)
 	kvm_make_mclock_inprogress_request(kvm);
 
 	/* no guest entries from this point */
-	__kvm_start_pvclock_update(kvm);
+	__kvm_start_pvclock_update(kvm, NULL);
 }
 
 static void kvm_end_pvclock_update(struct kvm *kvm)
@@ -1732,22 +1761,25 @@ static void kvm_end_pvclock_update(struct kvm *kvm)
 	struct kvm_vcpu *vcpu;
 	unsigned long i;
 
-	write_seqcount_end(&ka->pvclock_sc);
-	raw_spin_unlock_irq(&ka->tsc_write_lock);
 	kvm_for_each_vcpu(i, vcpu, kvm)
 		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
 
 	/* guest entries allowed */
-	kvm_for_each_vcpu(i, vcpu, kvm)
-		kvm_clear_request(KVM_REQ_MCLOCK_INPROGRESS, vcpu);
+	kvm_clear_mclock_inprogress_request(kvm);
+
+	write_seqcount_end(&ka->pvclock_sc);
+	raw_spin_unlock_irq(&ka->tsc_write_lock);
 }
 
-static void kvm_update_masterclock(struct kvm *kvm)
+static void kvm_update_masterclock(struct kvm *kvm, struct kvm_vcpu *vcpu)
 {
 	kvm_hv_request_tsc_page_update(kvm);
-	kvm_start_pvclock_update(kvm);
-	pvclock_update_vm_gtod_copy(kvm);
-	kvm_end_pvclock_update(kvm);
+	kvm_make_mclock_inprogress_request(kvm);
+
+	if (__kvm_start_pvclock_update(kvm, vcpu)) {
+		pvclock_update_vm_gtod_copy(kvm);
+		kvm_end_pvclock_update(kvm);
+	}
 }
 
 /*
@@ -6848,7 +6880,14 @@ static void kvm_hyperv_tsc_notifier(void)
 	kvm_caps.max_guest_tsc_khz = tsc_khz;
 
 	list_for_each_entry(kvm, &vm_list, vm_list) {
-		__kvm_start_pvclock_update(kvm);
+		/*
+		 * Invalidate the Hyper-V TSC page explicitly: the update
+		 * below consumes any pending KVM_REQ_MASTERCLOCK_UPDATE,
+		 * which would otherwise have refreshed the page from
+		 * kvm_update_masterclock().
+		 */
+		kvm_hv_request_tsc_page_update(kvm);
+		__kvm_start_pvclock_update(kvm, NULL);
 		pvclock_update_vm_gtod_copy(kvm);
 		kvm_end_pvclock_update(kvm);
 	}
@@ -8254,8 +8293,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 			kvm_mmu_free_obsolete_roots(vcpu);
 		if (kvm_check_request(KVM_REQ_MIGRATE_TIMER, vcpu))
 			__kvm_migrate_timers(vcpu);
-		if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
-			kvm_update_masterclock(vcpu->kvm);
+		if (kvm_test_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
+			kvm_update_masterclock(vcpu->kvm, vcpu);
 		if (kvm_check_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu))
 			kvm_gen_kvmclock_update(vcpu);
 		if (kvm_check_request(KVM_REQ_CLOCK_UPDATE, vcpu)) {
@@ -9628,7 +9667,7 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 	vcpu_load(vcpu);
 	kvm_synchronize_tsc(vcpu, NULL);
 	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
-		kvm_update_masterclock(vcpu->kvm);
+		kvm_update_masterclock(vcpu->kvm, NULL);
 	vcpu_put(vcpu);
 
 	/* poll control enabled by default */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475008.1681924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj9-0005Qk-Op; Thu, 05 Nov 2026 15:50:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475008.1681924; Thu, 05 Nov 2026 15:50:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzj9-0005PC-7H; Thu, 05 Nov 2026 15:50:11 +0000
Received: by outflank-mailman (input) for mailman id 1475008;
 Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj3-0004BT-Ts
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj3-000oQ8-9a; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5ad-bab6-0a2a0a5309dd-0a2a4505be14-4
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-4cb1-0a2a45050019-5a9b3222813e-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aof-2vx4; Thu, 05 Nov 2026 15:49:55 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aaym-20JR;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=owfwD0c0iFVkQvxXvAVHEdrEkPi8aTG2v+Yo8RsVjLo=; b=FbXOOX8vbDQkaNDkiTyDoCi0GI
	JbPxVa0uJaJ0nH2KdWLZQ1b41mAhpvDhmrHl4VimexZABaM1zNkCJ7p5BGD6CW3sgbLWBcq6nybSv
	RtmK55YPnkziyKx5y4tyxXs3uy2ZzfZlt1c2IR1o4nQglyenBHZgDkcNijt5WtbXHR8RBY2czDCv4
	5Kbgdj/SnX5OYqhgX7s/6eqJR/T6d9rv0FKgADxwMTQI8XC6GqIhukF5KJjp02re2d5nV5lk/c/wo
	jo2a4jOzuH1Pb0+Qm+ijRn5cnhlAvql5bALrkR8hZyK/ou+5tdd3Tz28N4nZkd4q+WY2D84acs/K/
	IMMMbylQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 01/23] KVM: x86: Improve synchronization in kvm_synchronize_tsc()
Date: Thu,  5 Nov 2026 07:49:32 -0800
Message-ID: <20261105154955.2525419-2-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c201ff/1793893803-F62AB2A1-4F7BB7F3/0/0
X-purgate-type: clean
X-purgate-size: 3850

From: David Woodhouse <dwmw@amazon.co.uk>

When synchronizing to an existing TSC (either by explicitly writing
zero, or the legacy hack where the TSC is written within one second's
worth of the previously written TSC), the last_tsc_write and
last_tsc_nsec values were being misrecorded by __kvm_synchronize_tsc().
The *unsynchronized* value of the TSC (perhaps even zero) was being
recorded, along with the current time at which kvm_synchronize_tsc()
was called. This could cause *subsequent* writes to fail to synchronize
correctly.

Fix that by extrapolating the generation's TSC value to the current
time (data = cur_tsc_write + elapsed cycles) before passing it to
__kvm_synchronize_tsc(), so the recorded {data, ns} pair always lies
on the generation's line and the one-second matching window slides
forward with each synchronized write. When the TSC is stable, reuse
the generation's offset exactly; when it is unstable, compute a new
offset for the extrapolated value.

Furthermore, there were *three* different TSC reads used for calculating
the "current" time, all slightly different from each other. Fix that by
using kvm_get_time_and_clockread() where possible and using the same
host_tsc value in all cases.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 arch/x86/kvm/x86.c | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 32563a91fba9..7a2b0b99373f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -210,6 +210,10 @@ module_param(pi_inject_timer, bint, 0644);
 static bool __read_mostly mitigate_smt_rsb;
 module_param(mitigate_smt_rsb, bool, 0444);
 
+#ifdef CONFIG_X86_64
+static bool kvm_get_time_and_clockread(s64 *kernel_ns, u64 *tsc_timestamp);
+#endif
+
 #define KVM_SUPPORTED_XCR0     (XFEATURE_MASK_FP | XFEATURE_MASK_SSE \
 				| XFEATURE_MASK_YMM | XFEATURE_MASK_BNDREGS \
 				| XFEATURE_MASK_BNDCSR | XFEATURE_MASK_AVX512 \
@@ -1374,14 +1378,23 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 {
 	u64 data = user_value ? *user_value : 0;
 	struct kvm *kvm = vcpu->kvm;
-	u64 offset, ns, elapsed;
+	u64 offset, host_tsc, elapsed;
+	s64 ns;
 	unsigned long flags;
 	bool matched = false;
 	bool synchronizing = false;
 
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
-	offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data);
-	ns = get_kvmclock_base_ns();
+
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&ns, &host_tsc))
+#endif
+	{
+		host_tsc = rdtsc();
+		ns = get_kvmclock_base_ns();
+	}
+
+	offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
 	elapsed = ns - kvm->arch.last_tsc_nsec;
 
 	if (vcpu->arch.virtual_tsc_khz) {
@@ -1424,13 +1437,21 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
          */
 	if (synchronizing &&
 	    vcpu->arch.virtual_tsc_khz == kvm->arch.last_tsc_khz) {
-		if (!kvm_check_tsc_unstable()) {
+		/*
+		 * If synchronizing, advance the reference point to "now"
+		 * so the matching window slides forward with each vCPU.
+		 * Extrapolate from the generation's own origin: 'elapsed'
+		 * is measured from the most recent write, which lies on
+		 * the generation's line only for the first matched write.
+		 */
+		u64 delta = nsec_to_cycles(vcpu, ns - kvm->arch.cur_tsc_nsec);
+
+		data = kvm->arch.cur_tsc_write + delta;
+
+		if (!kvm_check_tsc_unstable())
 			offset = kvm->arch.cur_tsc_offset;
-		} else {
-			u64 delta = nsec_to_cycles(vcpu, elapsed);
-			data += delta;
-			offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data);
-		}
+		else
+			offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
 		matched = true;
 	}
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475009.1681932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjA-0005c9-P6; Thu, 05 Nov 2026 15:50:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475009.1681932; Thu, 05 Nov 2026 15:50:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjA-0005Yg-1X; Thu, 05 Nov 2026 15:50:12 +0000
Received: by outflank-mailman (input) for mailman id 1475009;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj4-0004M9-Mm
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-000oQ8-2v; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca59e-bab6-0a2a0a5309dd-0a2a45079914-30
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-b4ea-0a2a45070019-5a9b5cc7ade4-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo7-28fg; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aazy-1mFd;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=mugAfauzYSVp/PYUQT881Alnp0zGkGKrhc7IODvZFo0=; b=rCkAVFCnYNe9Xl/yAKttQeyeI1
	YYi5tylaWDaW9n9FITxWWh/3Hb37DtAwNRyK6p0RlWfwxbZq/gszbuLDBm4G4zby63hZJTzuBDuYO
	OOkaptrvXJCd9iN+p/ytquNiPEEswOfLob8PC++l9H0/Ro0TE90l0BAuKao5LDPbhwZEuZCLO6EnZ
	Jq7IeI61h+GSIJgilOaC3I8YRmCo6uWTyFfkthnJZYphvyNiwZW3KlcgFe78CpCUG/1kRSoVUB6QN
	gx0uxCakxXmIKpPHbKviWAQQ1pj/nz80mjDHhQ3X/baAl9JKYOe84urBjMczjUk/RoYS/RuyPOj5t
	RTpVXbOw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 18/23] KVM: selftests: Add master clock offset test
Date: Thu,  5 Nov 2026 07:49:49 -0800
Message-ID: <20261105154955.2525419-19-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1793893806-A68D9AE4-96EFB821/0/0
X-purgate-type: clean
X-purgate-size: 8852

From: David Woodhouse <dwmw@amazon.co.uk>

Verify that KVM master clock mode remains active when vCPUs have
different TSC offsets but the same frequency. Creates three vCPUs,
sets one to a different TSC value, and confirms:

 - KVM_CLOCK_HOST_TSC is set (master clock active)
 - KVM_CLOCK_TSC_STABLE IS set (master clock ⇒ stable flag)
 - PVCLOCK_TSC_STABLE_BIT is NOT set (offsets differ)

Then set the KVM clock forward one hour with KVM_SET_CLOCK and verify
that all vCPUs still agree on the KVM clock computed from their own
pvclock parameters.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../kvm/x86/masterclock_offset_test.c         | 215 ++++++++++++++++++
 2 files changed, 216 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/masterclock_offset_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 15a1a8f64723..4d4eff41c525 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -95,6 +95,7 @@ TEST_GEN_PROGS_x86 += x86/hyperv_tlb_flush
 TEST_GEN_PROGS_x86 += x86/kvm_clock_test
 TEST_GEN_PROGS_x86 += x86/kvm_pv_test
 TEST_GEN_PROGS_x86 += x86/kvm_buslock_test
+TEST_GEN_PROGS_x86 += x86/masterclock_offset_test
 TEST_GEN_PROGS_x86 += x86/monitor_mwait_test
 TEST_GEN_PROGS_x86 += x86/msrs_test
 TEST_GEN_PROGS_x86 += x86/nested_close_kvm_test
diff --git a/tools/testing/selftests/kvm/x86/masterclock_offset_test.c b/tools/testing/selftests/kvm/x86/masterclock_offset_test.c
new file mode 100644
index 000000000000..47a1313eadc9
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/masterclock_offset_test.c
@@ -0,0 +1,215 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that KVM master clock mode works with different TSC offsets
+ * as long as all vCPUs have the same TSC frequency.
+ */
+#include <string.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+#define KVMCLOCK_GPA	0xc0000000ull
+#define TSC_OFFSET	(1000000000ULL)
+
+#define NR_VCPUS	3
+
+/* Read the per-vCPU pvclocks in an order other than creation order. */
+static const int vcpu_order[NR_VCPUS] = {0, 2, 1};
+
+static u64 pvclock_calc(struct pvclock_vcpu_time_info *pvti, u64 guest_tsc)
+{
+	u64 delta = guest_tsc - pvti->tsc_timestamp;
+
+	if (pvti->tsc_shift >= 0)
+		delta <<= pvti->tsc_shift;
+	else
+		delta >>= -(int)pvti->tsc_shift;
+
+	return pvti->system_time + ((__uint128_t)delta * pvti->tsc_to_system_mul >> 32);
+}
+
+static void guest_code(u64 pvti_gpa)
+{
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, pvti_gpa | KVM_MSR_ENABLED);
+	for (;;)
+		GUEST_SYNC(0);
+}
+
+static void get_pvtis(struct kvm_vcpu **vcpus,
+		      struct pvclock_vcpu_time_info *pvti)
+{
+	int i;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		int idx = vcpu_order[i];
+
+		vcpu_get_clock_guest(vcpus[idx], &pvti[idx]);
+		pr_info("vCPU %d: tsc_timestamp=%lu system_time=%lu "
+			"mul=%u shift=%d flags=0x%x\n",
+			idx, (unsigned long)pvti[idx].tsc_timestamp,
+			(unsigned long)pvti[idx].system_time,
+			pvti[idx].tsc_to_system_mul, pvti[idx].tsc_shift,
+			pvti[idx].flags);
+	}
+}
+
+/*
+ * Read the host TSC once and feed it through each vCPU's pvclock
+ * (adding each vCPU's TSC offset). All must compute exactly the same
+ * kvmclock value.
+ */
+static void assert_pvclocks_match(struct pvclock_vcpu_time_info *pvti,
+				  u64 offset0, const char *what)
+{
+	u64 host_tsc, clk0, clk1, clk2;
+
+	host_tsc = rdtsc();
+	clk0 = pvclock_calc(&pvti[0], host_tsc + offset0);
+	clk1 = pvclock_calc(&pvti[1], host_tsc + offset0);
+	clk2 = pvclock_calc(&pvti[2], host_tsc + offset0 + TSC_OFFSET);
+
+	pr_info("%s: kvmclock via vCPU 0: %lu ns, vCPU 1: %lu ns, vCPU 2: %lu ns\n",
+		what, (unsigned long)clk0, (unsigned long)clk1,
+		(unsigned long)clk2);
+	TEST_ASSERT(clk0 == clk1 && clk0 == clk2,
+		    "%s: kvmclock from all vCPUs should match exactly "
+		    "(0: %lu, 1: %lu, 2: %lu)", what, (unsigned long)clk0,
+		    (unsigned long)clk1, (unsigned long)clk2);
+}
+
+static void test_masterclock_active(struct kvm_vm *vm,
+				    struct kvm_clock_data *clock)
+{
+	memset(clock, 0, sizeof(*clock));
+	vm_get_clock(vm, clock);
+	pr_info("KVM_GET_CLOCK flags: 0x%x\n", clock->flags);
+	TEST_ASSERT(clock->flags & KVM_CLOCK_HOST_TSC,
+		    "Master clock should be active, flags=0x%x", clock->flags);
+	TEST_ASSERT(clock->flags & KVM_CLOCK_TSC_STABLE,
+		    "KVM_CLOCK_TSC_STABLE should be set, flags=0x%x",
+		    clock->flags);
+}
+
+static void test_offset_consistency(struct kvm_vcpu **vcpus,
+				    struct pvclock_vcpu_time_info *pvti,
+				    u64 offset0)
+{
+	u64 gtsc0, gtsc1, gtsc2;
+
+	get_pvtis(vcpus, pvti);
+
+	/* Read guest TSCs: should see (0+OFF) < 2 < (1+OFF) */
+	gtsc0 = vcpu_get_msr(vcpus[0], MSR_IA32_TSC);
+	gtsc2 = vcpu_get_msr(vcpus[2], MSR_IA32_TSC);
+	gtsc1 = vcpu_get_msr(vcpus[1], MSR_IA32_TSC);
+	pr_info("Guest TSCs: vcpu0=%lu vcpu2=%lu vcpu1=%lu\n",
+		(unsigned long)gtsc0, (unsigned long)gtsc2,
+		(unsigned long)gtsc1);
+	TEST_ASSERT(gtsc0 + TSC_OFFSET < gtsc2 && gtsc2 < gtsc1 + TSC_OFFSET,
+		    "Expected (vcpu0+OFF) < vcpu2 < (vcpu1+OFF)");
+
+	/* PVCLOCK_TSC_STABLE_BIT should NOT be set (offsets differ) */
+	TEST_ASSERT(!(pvti[2].flags & PVCLOCK_TSC_STABLE_BIT),
+		    "PVCLOCK_TSC_STABLE_BIT should NOT be set, flags=0x%x",
+		    pvti[2].flags);
+
+	/* Same mul/shift */
+	TEST_ASSERT(pvti[0].tsc_to_system_mul == pvti[1].tsc_to_system_mul &&
+		    pvti[0].tsc_to_system_mul == pvti[2].tsc_to_system_mul &&
+		    pvti[0].tsc_shift == pvti[1].tsc_shift &&
+		    pvti[0].tsc_shift == pvti[2].tsc_shift,
+		    "All vCPUs should have same mul/shift");
+
+	assert_pvclocks_match(pvti, offset0, "Initial");
+}
+
+#define ONE_HOUR_NS (3600ULL * NSEC_PER_SEC)
+
+static void test_set_clock_consistency(struct kvm_vm *vm,
+				       struct kvm_vcpu **vcpus,
+				       struct pvclock_vcpu_time_info *pvti,
+				       struct kvm_clock_data *clock,
+				       u64 offset0)
+{
+	struct kvm_clock_data setclk = { .clock = clock->clock + ONE_HOUR_NS };
+	u64 clk0;
+	int i;
+
+	/*
+	 * Add an hour to the VM kvmclock via KVM_SET_CLOCK, run each
+	 * vCPU to pick up the update, and check they're still in sync.
+	 */
+	vm_set_clock(vm, &setclk);
+
+	/* Guest code does GUEST_SYNC then exits — run each to see update */
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_run(vcpus[vcpu_order[i]]);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpus[vcpu_order[i]], KVM_EXIT_IO);
+	}
+
+	get_pvtis(vcpus, pvti);
+
+	TEST_ASSERT(pvti[0].system_time == pvti[1].system_time &&
+		    pvti[0].system_time == pvti[2].system_time,
+		    "system_time should still match after KVM_SET_CLOCK");
+
+	assert_pvclocks_match(pvti, offset0, "After +1h");
+
+	/* Verify the clock actually moved by ~1 hour */
+	clk0 = pvclock_calc(&pvti[0], rdtsc() + offset0);
+	TEST_ASSERT(clk0 > ONE_HOUR_NS,
+		    "Clock should be > 1 hour after set, got %lu ns",
+		    (unsigned long)clk0);
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti[NR_VCPUS];
+	struct kvm_vcpu *vcpus[NR_VCPUS];
+	struct kvm_clock_data clock;
+	struct kvm_vm *vm;
+	u64 offset0;
+	int nr_pages;
+	int i;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	vm = vm_create_with_vcpus(NR_VCPUS, guest_code, vcpus);
+
+	TEST_REQUIRE(!__vcpu_has_device_attr(vcpus[0], KVM_VCPU_TSC_CTRL,
+					     KVM_VCPU_TSC_OFFSET));
+
+	nr_pages = vm_calc_num_guest_pages(VM_MODE_DEFAULT, getpagesize());
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, nr_pages, 0);
+	virt_map(vm, KVMCLOCK_GPA, KVMCLOCK_GPA, nr_pages);
+
+	/* Give each vCPU its own pvclock structure within the page */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_args_set(vcpus[i], 1, KVMCLOCK_GPA +
+			      i * sizeof(struct pvclock_vcpu_time_info) * 2);
+
+	/* Get vCPU 0's default offset and set vCPU 2's offset higher */
+	offset0 = vcpu_get_tsc_offset(vcpus[0]);
+	vcpu_set_tsc_offset(vcpus[2], offset0 + TSC_OFFSET);
+
+	/* Run each vCPU to enable kvmclock (with offset already set) */
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_run(vcpus[i]);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpus[i], KVM_EXIT_IO);
+	}
+
+	test_masterclock_active(vm, &clock);
+	test_offset_consistency(vcpus, pvti, offset0);
+	pr_info("PASSED: pvclock consistent across offset vCPUs\n");
+
+	test_set_clock_consistency(vm, vcpus, pvti, &clock, offset0);
+	pr_info("PASSED: pvclock still consistent after KVM_SET_CLOCK +1h\n");
+
+	kvm_vm_free(vm);
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475010.1681942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjC-0005tS-HJ; Thu, 05 Nov 2026 15:50:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475010.1681942; Thu, 05 Nov 2026 15:50:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjB-0005pl-E2; Thu, 05 Nov 2026 15:50:13 +0000
Received: by outflank-mailman (input) for mailman id 1475010;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj4-0004O8-Qy
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-000oQ8-7K; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca59e-bab6-0a2a0a5309dd-0a2a45079914-34
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-b4ea-0a2a45070019-5a9b5cc7ae00-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bnw-28EW; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aayp-28rZ;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=jcUOz2MyJ2ssYA+GXoGpQlnR6nBQaKCDGjGWzKE1pAw=; b=BtNOOdFEiNQnqWX9OahKDXYhD9
	ELmKzIDV3YZaaEHN67LeNXckfEbS+9KX0/9hY37cUNf5SDll1Jevu3IYS00CgHkqLmTxkKPH0G256
	ZGlB5TqcXj0mT5+zUGq5Lc+os4ZF4sKMlhOEF4svemuufssn2urYexd52KD3WjqFLa4epSXt/oipf
	AiXX5eS4UjMVOWGNoPTKibzFBysuwXJ0HJh2NgCsH/TUDzLRx/oSWed9qPwcUtorkuo3PErSnE5kR
	S/xcFIFzycOhUmtcEboXlQV2dw2FJ+mloFWheMN2TwtXBSLhFNyHQKBOBepS1886unDegISjCluO4
	E4nYuXcw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 02/23] KVM: x86: Kill last_tsc_{nsec,write,offset} fields
Date: Thu,  5 Nov 2026 07:49:33 -0800
Message-ID: <20261105154955.2525419-3-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1793893806-A64DBAE4-9987A4A9/0/0
X-purgate-type: clean
X-purgate-size: 9201

From: David Woodhouse <dwmw@amazon.co.uk>

These pointlessly duplicate the cur_tsc_{nsec,write,offset} values.
The only place they were used was where the TSC is stable and a new
vCPU is being synchronized to the previous setting, in which case the
cur_tsc_* value is definitely identical.

Rename last_tsc_khz and last_tsc_scaling_ratio to cur_tsc_khz and
cur_tsc_scaling_ratio respectively, since they are properties of the
current TSC generation.

Since cur_tsc_offset now serves as the single source of truth for the
TSC generation's offset, the backwards-TSC adjustment (used during S4
resume when the host TSC resets) must also update cur_tsc_offset by
the same delta applied to all vCPUs (scaled to the guest TSC rate, as
adjust_tsc_offset_host() does). Without this, subsequent vCPUs that
synchronize after the adjustment would get the stale pre-S4 offset.

Since a synchronization now establishes an absolute offset which (via
a matched reuse of cur_tsc_offset) already includes any backwards-TSC
delta, clear the vCPU's pending tsc_offset_adjustment when writing it:
the deferred per-vCPU compensation would otherwise be applied on top
at the next vcpu_load, doubling the delta. Previously this could not
happen, because zeroing the last_tsc values disabled offset matching
entirely after a backwards TSC.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 Documentation/virt/kvm/locking.rst |  2 +-
 arch/x86/include/asm/kvm_host.h    |  7 +--
 arch/x86/kvm/x86.c                 | 72 ++++++++++++++++++------------
 3 files changed, 47 insertions(+), 34 deletions(-)

diff --git a/Documentation/virt/kvm/locking.rst b/Documentation/virt/kvm/locking.rst
index 662231e958a0..4548b61a7652 100644
--- a/Documentation/virt/kvm/locking.rst
+++ b/Documentation/virt/kvm/locking.rst
@@ -263,7 +263,7 @@ time it will be set using the Dirty tracking mechanism described above.
 
 :Type:		raw_spinlock_t
 :Arch:		x86
-:Protects:	- kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset}
+:Protects:	- kvm_arch::{cur_tsc_write,cur_tsc_nsec,cur_tsc_offset}
 		- tsc offset in vmcb
 :Comment:	'raw' because updating the tsc offsets must not be preempted.
 
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index e2eef7057bd3..ea48b1949316 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1236,11 +1236,8 @@ struct kvm_arch {
 	 * preemption-disabled region, so it must be a raw spinlock.
 	 */
 	raw_spinlock_t tsc_write_lock;
-	u64 last_tsc_nsec;
-	u64 last_tsc_write;
-	u32 last_tsc_khz;
-	u64 last_tsc_offset;
-	u64 last_tsc_scaling_ratio;
+	u32 cur_tsc_khz;
+	u64 cur_tsc_scaling_ratio;
 	u64 cur_tsc_nsec;
 	u64 cur_tsc_write;
 	u64 cur_tsc_offset;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 7a2b0b99373f..90f9b07ef749 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1334,17 +1334,24 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		vcpu->kvm->arch.user_set_tsc = true;
 
 	/*
-	 * We also track th most recent recorded KHZ, write and time to
-	 * allow the matching interval to be extended at each write.
+	 * Track the TSC frequency, scaling ratio, and offset for the current
+	 * generation. These are used to detect matching TSC writes and to
+	 * compute the guest TSC from the host clock.
 	 */
-	kvm->arch.last_tsc_nsec = ns;
-	kvm->arch.last_tsc_write = tsc;
-	kvm->arch.last_tsc_khz = vcpu->arch.virtual_tsc_khz;
-	kvm->arch.last_tsc_offset = offset;
-	kvm->arch.last_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
+	kvm->arch.cur_tsc_khz = vcpu->arch.virtual_tsc_khz;
+	kvm->arch.cur_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
 
 	vcpu->arch.last_guest_tsc = tsc;
 
+	/*
+	 * The offset written below is absolute, superseding any backwards-TSC
+	 * compensation still pending from kvm_arch_enable_virtualization_cpu()
+	 * (which has already been folded into cur_tsc_offset, and thus into
+	 * a matched @offset); applying it again at the next vcpu_load would
+	 * double it.
+	 */
+	vcpu->arch.tsc_offset_adjustment = 0;
+
 	kvm_vcpu_write_tsc_offset(vcpu, offset);
 
 	if (!matched) {
@@ -1354,8 +1361,6 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		 * nanosecond time, offset, and write, so if TSCs are in
 		 * sync, we can match exact offset, and if not, we can match
 		 * exact software computation in compute_guest_tsc()
-		 *
-		 * These values are tracked in kvm->arch.cur_xxx variables.
 		 */
 		kvm->arch.cur_tsc_generation++;
 		kvm->arch.cur_tsc_nsec = ns;
@@ -1395,7 +1400,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 	}
 
 	offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
-	elapsed = ns - kvm->arch.last_tsc_nsec;
+	elapsed = ns - kvm->arch.cur_tsc_nsec;
 
 	if (vcpu->arch.virtual_tsc_khz) {
 		if (data == 0) {
@@ -1405,7 +1410,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 			 */
 			synchronizing = true;
 		} else if (kvm->arch.user_set_tsc) {
-			u64 tsc_exp = kvm->arch.last_tsc_write +
+			u64 tsc_exp = kvm->arch.cur_tsc_write +
 						nsec_to_cycles(vcpu, elapsed);
 			u64 tsc_hz = vcpu->arch.virtual_tsc_khz * 1000LL;
 			/*
@@ -1436,15 +1441,12 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 	 * it's better to try to match offsets from the beginning.
          */
 	if (synchronizing &&
-	    vcpu->arch.virtual_tsc_khz == kvm->arch.last_tsc_khz) {
+	    vcpu->arch.virtual_tsc_khz == kvm->arch.cur_tsc_khz) {
 		/*
 		 * If synchronizing, advance the reference point to "now"
 		 * so the matching window slides forward with each vCPU.
-		 * Extrapolate from the generation's own origin: 'elapsed'
-		 * is measured from the most recent write, which lies on
-		 * the generation's line only for the first matched write.
 		 */
-		u64 delta = nsec_to_cycles(vcpu, ns - kvm->arch.cur_tsc_nsec);
+		u64 delta = nsec_to_cycles(vcpu, elapsed);
 
 		data = kvm->arch.cur_tsc_write + delta;
 
@@ -1615,7 +1617,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 		 * get_kvmclock() to compute kvmclock from the host TSC
 		 * without needing a vCPU reference.
 		 */
-		ka->master_tsc_scaling_ratio = ka->last_tsc_scaling_ratio;
+		ka->master_tsc_scaling_ratio = ka->cur_tsc_scaling_ratio;
 		tsc_hz = (u64)get_cpu_tsc_khz() * HZ_PER_KHZ;
 		if (tsc_hz && kvm_caps.has_tsc_control)
 			tsc_hz = kvm_scale_tsc(tsc_hz,
@@ -3344,8 +3346,8 @@ static int kvm_arch_tsc_set_attr(struct kvm_vcpu *vcpu,
 		raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 
 		matched = (vcpu->arch.virtual_tsc_khz &&
-			   kvm->arch.last_tsc_khz == vcpu->arch.virtual_tsc_khz &&
-			   kvm->arch.last_tsc_offset == offset);
+			   kvm->arch.cur_tsc_khz == vcpu->arch.virtual_tsc_khz &&
+			   kvm->arch.cur_tsc_offset == offset);
 
 		tsc = kvm_scale_tsc(rdtsc(), vcpu->arch.l1_tsc_scaling_ratio) + offset;
 		ns = get_kvmclock_base_ns();
@@ -9803,7 +9805,7 @@ int kvm_arch_enable_virtualization_cpu(void)
 {
 	struct kvm *kvm;
 	struct kvm_vcpu *vcpu;
-	unsigned long i;
+	unsigned long i, flags;
 	int ret;
 	u64 local_tsc;
 	u64 max_tsc = 0;
@@ -9874,6 +9876,24 @@ int kvm_arch_enable_virtualization_cpu(void)
 	if (backwards_tsc) {
 		u64 delta_cyc = max_tsc - local_tsc;
 		list_for_each_entry(kvm, &vm_list, vm_list) {
+			/*
+			 * Hold tsc_write_lock across the per-vCPU adjustments
+			 * AND the generation reference offset adjustment, so
+			 * that a concurrent TSC synchronization cannot observe
+			 * one without the other (it would compute an offset
+			 * with the delta applied twice, or not at all).
+			 *
+			 * The generation's reference offset is adjusted by the
+			 * same (guest-scaled, as adjust_tsc_offset_host()
+			 * does for each vCPU) delta, so that future
+			 * KVM_SET_TSC / vCPU creation still matches against
+			 * the adjusted TSC timeline. The recorded
+			 * {cur_tsc_nsec, cur_tsc_write} pair needs no
+			 * adjustment: the guest TSC is kept continuous
+			 * across the host TSC jump, and that pair lives in
+			 * the wall-clock/guest-cycle domain.
+			 */
+			raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 			kvm->arch.backwards_tsc_observed = true;
 			kvm_for_each_vcpu(i, vcpu, kvm) {
 				vcpu->arch.tsc_offset_adjustment += delta_cyc;
@@ -9881,14 +9901,10 @@ int kvm_arch_enable_virtualization_cpu(void)
 				kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
 			}
 
-			/*
-			 * We have to disable TSC offset matching.. if you were
-			 * booting a VM while issuing an S4 host suspend....
-			 * you may have some problem.  Solving this issue is
-			 * left as an exercise to the reader.
-			 */
-			kvm->arch.last_tsc_nsec = 0;
-			kvm->arch.last_tsc_write = 0;
+			kvm->arch.cur_tsc_offset +=
+				kvm_scale_tsc(delta_cyc,
+					      kvm->arch.cur_tsc_scaling_ratio);
+			raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 		}
 
 	}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475011.1681951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjD-0006AI-RI; Thu, 05 Nov 2026 15:50:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475011.1681951; Thu, 05 Nov 2026 15:50:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjC-00064e-Jj; Thu, 05 Nov 2026 15:50:14 +0000
Received: by outflank-mailman (input) for mailman id 1475011;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj4-0004Nj-QB
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-00ErBr-6D; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca595-e002-0a2a0a5209dd-0a2a4501df4c-42
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-5984-0a2a45010019-5a9b5cc7c42e-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003BoB-28TF; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Ab0H-2luc;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=H+VBL9OJwUW+IzdV5LCITp9ezCq4N+iWOV0zwHTcOS8=; b=pazvH9hxp0r4Z7x2fzidl01Hpa
	P7wfwrljfAb/Lw918WuBSOv8YJshJq6pYjO3ssKu6okTF0iVV4XBQo+hZWgnwccv2CAjUTg++/O6Y
	Jm2FJhdd0LjBfDn6z+gpiQ7ClNXBgG9Poghhm3yZCt1FB2xFVkglSXP0QcmT4kein89a6m/hOUpvk
	jk3/j6J3kuSXBe1DzWg3+zWyKqdsG0RfdrU4gcHp5P2uVquu7KgCbdQ8L0+cl8lzsmZF8PvXSLATO
	iufzdzQ/Qvg8teerPslEYc8jhRp0IoetEIfgOU3N7yYN4/Bp2VoYQUubQtE7tZqOt3eCF4K3wEAXD
	6OWPWcsw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 22/23] KVM: x86/xen: Drop open-coded fallback clock read in kvm_xen_start_timer()
Date: Thu,  5 Nov 2026 07:49:53 -0800
Message-ID: <20261105154955.2525419-23-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1793893806-C5146757-1BADBFBE/0/0
X-purgate-type: clean
X-purgate-size: 4429

From: David Woodhouse <dwmw@amazon.co.uk>

When no coherent (CLOCK_MONOTONIC, TSC) pair was available,
kvm_xen_start_timer() computed one from separate ktime_get() and
rdtsc() calls rather than using get_kvmclock_ns(), with a comment
explaining that the latter had a systemic error from scaling host TSC
directly to nanoseconds instead of scaling to the guest TSC first.

Commit abdef42276d8 ("KVM: x86: Fix KVM clock precision in
get_kvmclock() with TSC scaling") removed that systemic error: in
master clock mode, get_kvmclock_ns() now scales the host TSC delta to
the guest TSC and converts it with the guest's own mul/shift,
computing precisely what the guest would.

The fallback is also nearly unreachable. It sits behind the
use_master_clock check, so on 32-bit (where the master clock is never
active) it is dead code, and on 64-bit kvm_get_monotonic_and_clockread()
can only fail there if the host clocksource changed after the last
master clock update, in the window before the resulting masterclock
update is processed. In exactly that window get_kvmclock_ns() takes
its raw-clock fallback path rather than the guest TSC computation,
which is continuous with the last valid snapshot and tolerable for
the one timer that can be started before the pending masterclock
update lands.

Drop it and fall back to the existing get_kvmclock_ns() path.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/xen.c | 40 +++++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c
index 6aa00f746cba..dbac3d2c04d7 100644
--- a/arch/x86/kvm/xen.c
+++ b/arch/x86/kvm/xen.c
@@ -230,22 +230,19 @@ static void kvm_xen_start_timer(struct kvm_vcpu *vcpu, u64 guest_abs,
 		if (r)
 			break;
 
+		/*
+		 * With use_master_clock set, the clocksource was TSC-based
+		 * when the master clock was last updated. The clockread can
+		 * only fail here if the clocksource has changed since, in
+		 * which case a masterclock update is already pending and
+		 * get_kvmclock_ns() returns the raw-clock fallback value —
+		 * continuous with the last valid snapshot, which is as good
+		 * as it gets in that transient window.
+		 */
 		if (!IS_ENABLED(CONFIG_64BIT) ||
 		    !kvm_get_monotonic_and_clockread(&kernel_now, &host_tsc)) {
-			/*
-			 * Don't fall back to get_kvmclock_ns() because it's
-			 * broken; it has a systemic error in its results
-			 * because it scales directly from host TSC to
-			 * nanoseconds, and doesn't scale first to guest TSC
-			 * and *then* to nanoseconds as the guest does.
-			 *
-			 * There is a small error introduced here because time
-			 * continues to elapse between the ktime_get() and the
-			 * subsequent rdtsc(). But not the systemic drift due
-			 * to get_kvmclock_ns().
-			 */
-			kernel_now = ktime_get(); /* This is CLOCK_MONOTONIC */
-			host_tsc = rdtsc();
+			r = -EOPNOTSUPP;
+			break;
 		}
 
 		/* Calculate the guest kvmclock as the guest would do it. */
@@ -255,18 +252,19 @@ static void kvm_xen_start_timer(struct kvm_vcpu *vcpu, u64 guest_abs,
 
 	if (r) {
 		/*
-		 * Without CONSTANT_TSC, get_kvmclock_ns() is the only option.
+		 * Without CONSTANT_TSC and the master clock,
+		 * get_kvmclock_ns() is the only option.
 		 *
 		 * Also if the guest PV clock hasn't been set up yet, as is
 		 * likely to be the case during migration when the vCPU has
 		 * not been run yet. It would be possible to calculate the
 		 * scaling factors properly in that case but there's not much
-		 * point in doing so. The get_kvmclock_ns() drift accumulates
-		 * over time, so it's OK to use it at startup. Besides, on
-		 * migration there's going to be a little bit of skew in the
-		 * precise moment at which timers fire anyway. Often they'll
-		 * be in the "past" by the time the VM is running again after
-		 * migration.
+		 * point in doing so. Without the master clock, the
+		 * get_kvmclock_ns() drift accumulates over time, so it's OK
+		 * to use it at startup. Besides, on migration there's going
+		 * to be a little bit of skew in the precise moment at which
+		 * timers fire anyway. Often they'll be in the "past" by the
+		 * time the VM is running again after migration.
 		 */
 		guest_now = get_kvmclock_ns(vcpu->kvm);
 		kernel_now = ktime_get();
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475012.1681959 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjF-0006QS-5Y; Thu, 05 Nov 2026 15:50:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475012.1681959; Thu, 05 Nov 2026 15:50:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjE-0006NH-1q; Thu, 05 Nov 2026 15:50:16 +0000
Received: by outflank-mailman (input) for mailman id 1475012;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj4-0004NB-PC
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-000oQ8-4g; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca59e-bab6-0a2a0a5309dd-0a2a45079914-32
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-b4ea-0a2a45070019-5a9b5cc7e9f4-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo6-29l4; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aazu-1WCL;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=QG7YSNVHqUb1KuMYVc5jtCngrcCIvr6t1OEWc/pZv7s=; b=pr1PhQXUAwpwKhnXSyqC745Zlh
	6eFF2tMEW2Zv21X/l+8XJfY926PO6MHO3Ps8Fu1qxkcant+NGk6eXI1zMeytDHwC7P/BJIHz3CKc9
	+EAVcPgppBiDye6GdMrVDTL1JhFhrB/QJnDx5UNB5ZWUw4gyVlT8ZvTvzqJcICu5uahLVptP/Dogj
	j/uLQBKBtmFncTxH5NGEWCkZrE4c8m40IWDhAhbos4wjPU6SyyyN5zDA+9QE6tTacrVvP0EByOV86
	JtTCMv/ZFxPMv3N12+rp5upMk5EeHtG9pJeeTLYnTBvDQdxXc6Iaun+bBCZxAsdoBPg19JIoG713S
	UurgHUtQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 17/23] KVM: selftests: Add KVM/PV clock selftest to prove timer correction
Date: Thu,  5 Nov 2026 07:49:48 -0800
Message-ID: <20261105154955.2525419-18-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1793893806-A6AD8AE4-ECE56F30/0/0
X-purgate-type: clean
X-purgate-size: 16352

From: Jack Allister <jalliste@amazon.com>

A VM's KVM/PV clock has an inherent relationship to its TSC. When either
the host system live-updates or the VM is live-migrated this pairing of
the two clock sources should stay the same. In reality this is not the
case without some correction taking place.

The KVM_GET_CLOCK_GUEST/KVM_SET_CLOCK_GUEST ioctls can be used to
perform a correction on the PVTI (PV time information) structure held by
KVM to effectively fix up the kvmclock_offset prior to the guest VM
resuming in either a live-update/migration scenario.

This test proves that without the necessary fixup there is a perceived
change in the guest TSC and KVM/PV clock relationship before and after a
simulated LU/LM takes place, and that the correction eliminates it.

The test:
  1. Snapshots the PVTI at boot (PVTI0).
  2. Steps the KVM clock forward 10 seconds with KVM_SET_CLOCK and
     induces a change in PVTI data, so the divergence the correction
     must eliminate is deterministic.
  3. Snapshots the PVTI after the change (PVTI1).
  4. Requests correction via KVM_SET_CLOCK_GUEST using PVTI0.
  5. Snapshots the PVTI after correction (PVTI2).

Then samples the TSC at a single point in time and calculates the KVM
clock using each PVTI snapshot, verifying that the uncorrected clock
diverged and that the corrected clock matches the boot clock to
within ±2ns.

Also test PVCLOCK_TSC_STABLE_BIT across matched, offset-mismatched
and frequency-mismatched vCPUs, and KVM_[GS]ET_CLOCK_GUEST on vCPUs
with divergent TSC offsets.

The test enumerates multiple TSC frequencies from 1GHz to 5GHz at 500MHz
steps, crossing the 32-bit boundary, to exercise the scaling path at
various ratios. The sleep duration between snapshots is configurable via
the -s/--sleep command line option.

Co-developed-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Jack Allister <jalliste@amazon.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Cc: Dongli Zhang <dongli.zhang@oracle.com>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../testing/selftests/kvm/x86/pvclock_test.c  | 447 ++++++++++++++++++
 2 files changed, 448 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 18605318860e..15a1a8f64723 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -114,6 +114,7 @@ TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
 TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
 TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
 TEST_GEN_PROGS_x86 += x86/pvclock_migration_test
+TEST_GEN_PROGS_x86 += x86/pvclock_test
 TEST_GEN_PROGS_x86 += x86/save_restore_pf_stress_test
 TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
 TEST_GEN_PROGS_x86 += x86/set_sregs_test
diff --git a/tools/testing/selftests/kvm/x86/pvclock_test.c b/tools/testing/selftests/kvm/x86/pvclock_test.c
new file mode 100644
index 000000000000..c63d9f636eda
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/pvclock_test.c
@@ -0,0 +1,447 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright © Amazon.com, Inc. or its affiliates.
+ *
+ * Tests for pvclock API
+ * KVM_SET_CLOCK_GUEST/KVM_GET_CLOCK_GUEST
+ */
+#include <getopt.h>
+#include <stdint.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+/*
+ * Reproduce the pvclock calculation the guest uses to convert TSC to
+ * nanoseconds. This must match the kernel's __pvclock_read_cycles().
+ */
+static inline u64 pvclock_scale_delta(u64 delta, u32 mul,
+					   s8 shift)
+{
+	if (shift < 0)
+		delta >>= -shift;
+	else
+		delta <<= shift;
+	return ((__uint128_t)delta * mul) >> 32;
+}
+
+static inline u64 pvclock_read_cycles(struct pvclock_vcpu_time_info *src,
+					   u64 tsc)
+{
+	u64 delta = tsc - src->tsc_timestamp;
+
+	return src->system_time + pvclock_scale_delta(delta,
+						      src->tsc_to_system_mul,
+						      src->tsc_shift);
+}
+
+static inline void pvti_snapshot(struct pvclock_vcpu_time_info *dst,
+				 volatile struct pvclock_vcpu_time_info *src)
+{
+	u32 version;
+
+	do {
+		version = src->version;
+		__asm__ __volatile__("" ::: "memory");
+		*dst = *src;
+		__asm__ __volatile__("" ::: "memory");
+	} while ((src->version & 1) || src->version != version);
+}
+
+enum {
+	STAGE_FIRST_BOOT,
+	STAGE_UNCORRECTED,
+	STAGE_CORRECTED
+};
+
+#define KVMCLOCK_GPA	0xc0000000ull
+#define KVMCLOCK_SIZE	sizeof(struct pvclock_vcpu_time_info)
+
+static void trigger_pvti_update(void)
+{
+	/*
+	 * Toggle between KVM's old and new system time methods to coerce KVM
+	 * into updating the fields in the PV time info struct.
+	 */
+	wrmsr(MSR_KVM_SYSTEM_TIME, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+}
+
+static void guest_code(void)
+{
+	struct pvclock_vcpu_time_info *pvti =
+		(void *)(unsigned long)KVMCLOCK_GPA;
+	struct pvclock_vcpu_time_info pvti_boot;
+	struct pvclock_vcpu_time_info pvti_uncorrected;
+	struct pvclock_vcpu_time_info pvti_corrected;
+	u64 tsc_guest;
+	u64 clk_boot, clk_uncorrected, clk_corrected;
+	s64 delta_corrected;
+
+	/* Set up kvmclock and snapshot the initial pvclock parameters. */
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	pvti_snapshot(&pvti_boot, pvti);
+	GUEST_SYNC(STAGE_FIRST_BOOT);
+
+	/*
+	 * Trigger an update of the PVTI. Calculating the KVM clock using this
+	 * updated structure will show a delta from the original.
+	 */
+	trigger_pvti_update();
+	pvti_snapshot(&pvti_uncorrected, pvti);
+	GUEST_SYNC(STAGE_UNCORRECTED);
+
+	/*
+	 * Snapshot the corrected time (the host does KVM_SET_CLOCK_GUEST when
+	 * handling STAGE_UNCORRECTED).
+	 */
+	pvti_snapshot(&pvti_corrected, pvti);
+
+	/*
+	 * Sample the TSC at a single point in time, then calculate the
+	 * effective KVM clock using the PVTI from each stage. Verify that the
+	 * corrected clock matches the boot clock to within ±2ns.
+	 */
+	tsc_guest = rdtsc();
+
+	clk_boot = pvclock_read_cycles(&pvti_boot, tsc_guest);
+	clk_uncorrected = pvclock_read_cycles(&pvti_uncorrected, tsc_guest);
+	clk_corrected = pvclock_read_cycles(&pvti_corrected, tsc_guest);
+
+	/*
+	 * The host stepped the KVM clock forward by 10 seconds at
+	 * STAGE_FIRST_BOOT, so the uncorrected clock must diverge; without
+	 * this, a no-op KVM_SET_CLOCK_GUEST would pass the test below.
+	 */
+	__GUEST_ASSERT((s64)(clk_uncorrected - clk_boot) > NSEC_PER_SEC,
+		       "uncorrected clock did not diverge (boot=%lu uncorrected=%lu)",
+		       clk_boot, clk_uncorrected);
+
+	delta_corrected = clk_boot - clk_corrected;
+
+	__GUEST_ASSERT(delta_corrected >= -2 && delta_corrected <= 2,
+		       "corrected delta %ld out of range (boot=%lu uncorrected=%lu corrected=%lu)",
+		       delta_corrected, clk_boot, clk_uncorrected, clk_corrected);
+
+	GUEST_SYNC(STAGE_CORRECTED);
+}
+
+static void run_test(struct kvm_vm *vm, struct kvm_vcpu *vcpu,
+		     unsigned int sleep_sec)
+{
+	struct pvclock_vcpu_time_info pvti_before;
+	struct kvm_clock_data clock_step;
+	struct ucall uc;
+
+	for (;;) {
+		vcpu_run(vcpu);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+
+		switch (get_ucall(vcpu, &uc)) {
+		case UCALL_ABORT:
+			REPORT_GUEST_ASSERT(uc);
+			break;
+		case UCALL_SYNC:
+			break;
+		default:
+			TEST_FAIL("Unexpected ucall");
+		}
+
+		switch (uc.args[1]) {
+		case STAGE_FIRST_BOOT:
+			/* Save the pvclock parameters before the update. */
+			vcpu_get_clock_guest(vcpu, &pvti_before);
+
+			/* Sleep to let the clocks diverge. */
+			sleep(sleep_sec);
+
+			/*
+			 * Step the KVM clock forward 10 seconds so that the
+			 * divergence the correction must eliminate is
+			 * deterministic, not at the mercy of accumulated
+			 * drift during the sleep.
+			 */
+			vm_get_clock(vm, &clock_step);
+			clock_step.clock += 10ull * NSEC_PER_SEC;
+			clock_step.flags = 0;
+			vm_set_clock(vm, &clock_step);
+			break;
+
+		case STAGE_UNCORRECTED:
+			/* Restore the original pvclock parameters. */
+			vcpu_set_clock_guest(vcpu, &pvti_before);
+			break;
+
+		case STAGE_CORRECTED:
+			/* Guest verified the delta in-guest. */
+			return;
+
+		default:
+			TEST_FAIL("Unknown stage %lu", uc.args[1]);
+		}
+	}
+}
+
+static void configure_pvclock(struct kvm_vm *vm)
+{
+	unsigned int nr_pages;
+
+	nr_pages = vm_calc_num_guest_pages(VM_MODE_DEFAULT, getpagesize());
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, nr_pages, 0);
+	virt_map(vm, KVMCLOCK_GPA, KVMCLOCK_GPA, nr_pages);
+}
+
+static void run_at_frequency(u64 tsc_khz, unsigned int sleep_sec)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+
+	pr_info("Testing at TSC frequency %lu kHz\n", tsc_khz);
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	configure_pvclock(vm);
+	vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ, (void *)tsc_khz);
+	run_test(vm, vcpu, sleep_sec);
+	kvm_vm_free(vm);
+}
+
+static void test_tsc_stable_bit(void);
+static void test_clock_guest_with_offsets(void);
+
+static void usage(const char *name)
+{
+	printf("Usage: %s [options]\n"
+	       "  -s, --sleep SEC     sleep duration between snapshots (default: 2)\n"
+	       "  -h, --help          show this help\n", name);
+}
+
+int main(int argc, char *argv[])
+{
+	static const struct option long_opts[] = {
+		{ "sleep", required_argument, NULL, 's' },
+		{ "help",  no_argument,       NULL, 'h' },
+		{ NULL,    0,                  NULL,  0  },
+	};
+	unsigned int sleep_sec = 2;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	u64 host_khz;
+	u64 freq;
+	int opt;
+
+	while ((opt = getopt_long(argc, argv, "s:h", long_opts, NULL)) != -1) {
+		switch (opt) {
+		case 's':
+			sleep_sec = atoi_non_negative("sleep", optarg);
+			break;
+		case 'h':
+		default:
+			usage(argv[0]);
+			return opt == 'h' ? 0 : 1;
+		}
+	}
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_TSC_CONTROL));
+
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	configure_pvclock(vm);
+
+	/* First run at native frequency (no scaling). */
+	run_test(vm, vcpu, sleep_sec);
+
+	/*
+	 * Then enumerate a range of TSC frequencies crossing the 32-bit
+	 * boundary, to exercise the scaling path at various ratios.
+	 */
+	host_khz = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	kvm_vm_free(vm);
+
+	for (freq = 1000000; freq <= 5000000; freq += 500000) {
+		if (freq == host_khz)
+			continue;
+		run_at_frequency(freq, sleep_sec);
+	}
+
+	test_tsc_stable_bit();
+	test_clock_guest_with_offsets();
+
+	return 0;
+}
+
+static volatile u32 vcpu_counter;
+static void guest_code_stable_bit(void)
+{
+	u32 idx = __atomic_fetch_add(&vcpu_counter, 1, __ATOMIC_SEQ_CST);
+	u64 gpa = KVMCLOCK_GPA + idx * KVMCLOCK_SIZE;
+
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, gpa | KVM_MSR_ENABLED);
+	GUEST_SYNC(0);
+	GUEST_SYNC(0);
+	GUEST_SYNC(0);
+}
+
+static void run_vcpu_once(struct kvm_vcpu *vcpu)
+{
+	struct ucall uc;
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	switch (get_ucall(vcpu, &uc)) {
+	case UCALL_ABORT:
+		REPORT_GUEST_ASSERT(uc);
+		break;
+	case UCALL_SYNC:
+		break;
+	default:
+		TEST_FAIL("Unexpected ucall");
+	}
+}
+
+static void test_tsc_stable_bit(void)
+{
+	struct pvclock_vcpu_time_info pvti;
+	struct kvm_vcpu *vcpus[2];
+	struct kvm_vm *vm;
+	int ret;
+
+	pr_info("Testing PVCLOCK_TSC_STABLE_BIT with matched/unmatched TSCs\n");
+
+	vm = vm_create_with_vcpus(2, guest_code_stable_bit, vcpus);
+	configure_pvclock(vm);
+
+	/*
+	 * Case 1: All TSCs matched (same frequency and offset).
+	 * Master clock should be active, PVCLOCK_TSC_STABLE_BIT set.
+	 */
+	run_vcpu_once(vcpus[0]);
+
+	vcpu_get_clock_guest(vcpus[0], &pvti);
+	TEST_ASSERT(pvti.flags & PVCLOCK_TSC_STABLE_BIT,
+		    "PVCLOCK_TSC_STABLE_BIT should be set with matched TSCs");
+
+	/*
+	 * Case 2: Different TSC offset, same frequency.
+	 * Master clock should still be active (frequency matches), but
+	 * PVCLOCK_TSC_STABLE_BIT should be cleared (offsets differ).
+	 */
+	if (__vcpu_has_device_attr(vcpus[1], KVM_VCPU_TSC_CTRL,
+				   KVM_VCPU_TSC_OFFSET)) {
+		pr_info("  Skipping offset test (KVM_VCPU_TSC_OFFSET not supported)\n");
+		goto case_freq;
+	}
+	vcpu_set_tsc_offset(vcpus[1], 12345678);
+	run_vcpu_once(vcpus[1]);
+	run_vcpu_once(vcpus[0]);
+
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti);
+	if (ret) {
+		/* Master clock disabled by offset mismatch — old kernel */
+		pr_info("  Skipping offset test (master clock requires matched offsets)\n");
+		goto case_freq;
+	}
+	TEST_ASSERT(!(pvti.flags & PVCLOCK_TSC_STABLE_BIT),
+		    "PVCLOCK_TSC_STABLE_BIT should be clear with offset-mismatched TSCs");
+
+case_freq:
+	/*
+	 * Case 3: Different TSC frequency.
+	 * Master clock should be disabled entirely.
+	 */
+	vcpu_ioctl(vcpus[1], KVM_SET_TSC_KHZ,
+		   (void *)(unsigned long)(__vcpu_ioctl(vcpus[1], KVM_GET_TSC_KHZ, NULL) / 2));
+	/* Write TSC to trigger kvm_synchronize_tsc / kvm_track_tsc_matching */
+	vcpu_set_msr(vcpus[1], MSR_IA32_TSC, 0);
+	run_vcpu_once(vcpus[1]);
+
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti);
+	TEST_ASSERT(ret && errno == ENODATA,
+		    "GET_CLOCK_GUEST should fail with frequency-mismatched TSCs, got %d (errno %d)",
+		    ret, errno);
+
+	kvm_vm_free(vm);
+}
+
+static void test_clock_guest_with_offsets(void)
+{
+	struct pvclock_vcpu_time_info pvti0, pvti1, pvti1_after;
+	struct kvm_vcpu *vcpus[2];
+	struct kvm_vm *vm;
+	s64 delta;
+	int ret;
+
+	pr_info("Testing KVM_[GS]ET_CLOCK_GUEST with different TSC offsets\n");
+
+	vm = vm_create_with_vcpus(2, guest_code_stable_bit, vcpus);
+	configure_pvclock(vm);
+
+	/* Set different TSC offsets on the two vCPUs */
+	vcpu_set_tsc_offset(vcpus[0], 0);
+	vcpu_set_tsc_offset(vcpus[1], 1000000000ull);
+
+	/* Run both to establish kvmclock */
+	run_vcpu_once(vcpus[0]);
+	run_vcpu_once(vcpus[1]);
+
+	/* GET_CLOCK_GUEST on both — should succeed (master clock active) */
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti0);
+	if (ret) {
+		pr_info("  Skipping (master clock requires matched offsets on this kernel)\n");
+		kvm_vm_free(vm);
+		return;
+	}
+	vcpu_get_clock_guest(vcpus[1], &pvti1);
+
+	/* The tsc_timestamps should differ (different offsets) */
+	TEST_ASSERT(pvti0.tsc_timestamp != pvti1.tsc_timestamp,
+		    "tsc_timestamps should differ with different offsets");
+
+	/* Sleep to let time elapse, then restore vcpu0's clock */
+	sleep(1);
+	vcpu_set_clock_guest(vcpus[0], &pvti0);
+
+	/* Run vcpu0 to process the clock update */
+	run_vcpu_once(vcpus[0]);
+
+	/*
+	 * After SET on vcpu0, verify the correction worked by getting
+	 * the clock on vcpu0 again. The mul/shift should be the same,
+	 * and computing kvmclock at the same TSC should give the same
+	 * result as the original (within ±2ns).
+	 */
+	{
+		struct pvclock_vcpu_time_info pvti0_after;
+		u64 tsc_now, clk_from_old, clk_from_new;
+
+		vcpu_get_clock_guest(vcpus[0], &pvti0_after);
+
+		TEST_ASSERT(pvti0_after.tsc_to_system_mul == pvti0.tsc_to_system_mul &&
+			    pvti0_after.tsc_shift == pvti0.tsc_shift,
+			    "mul/shift changed across KVM_SET_CLOCK_GUEST");
+
+		tsc_now = pvti0_after.tsc_timestamp;
+		clk_from_old = pvclock_read_cycles(&pvti0, tsc_now);
+		clk_from_new = pvclock_read_cycles(&pvti0_after, tsc_now);
+
+		delta = (s64)clk_from_new - (s64)clk_from_old;
+		TEST_ASSERT(delta >= -2 && delta <= 2,
+			    "clock correction delta should be <=2ns, got %ld ns",
+			    delta);
+	}
+
+	/*
+	 * Also verify that vcpu1's clock is still accessible (master
+	 * clock still active with different offsets).
+	 */
+	vcpu_get_clock_guest(vcpus[1], &pvti1_after);
+
+	kvm_vm_free(vm);
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475013.1681966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjG-0006g0-FJ; Thu, 05 Nov 2026 15:50:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475013.1681966; Thu, 05 Nov 2026 15:50:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjF-0006aa-E5; Thu, 05 Nov 2026 15:50:17 +0000
Received: by outflank-mailman (input) for mailman id 1475013;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj4-0004OI-RU
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-00ErBr-7j; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca595-e002-0a2a0a5209dd-0a2a4501df4c-44
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-5984-0a2a45010019-5a9b5cc79a58-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo8-28Lc; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Ab05-27pp;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=wJ6C8CoDxT8BptusazB7dcSG18HwBkwRklDmKqtZ+ik=; b=AK2H0rVunOVa/uNMY/WyvD9BYT
	OFKA7WaQlGIQ4K1IZmmLr/Jq4x3xp1ggfPL/RUDGPvKMDW7cl9fxLmIcqh/MbxvNBkTsZgmR2OFuZ
	y8jN6tkLIg9tRbss6m681keJErYsUdVDobQ+Lvhuxa1XXsSeQtyce8Gm3RgTMxB2Xr2EJv4OUmmv5
	Vs/NQZTf57NqiLDX5lSyhefoSE5/PKvwvZU2NkZZdi1cb5Y40Q3nlu1HHFmy02uRRoXgyHcTjVIER
	OXdEcWn/VQsjAkl78hBlrCPQvv+9y4A7PrxuS046itPHRPg3UG/l9iW/90A1Szf8j8gchOUpJgCd4
	khnNyU7w==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 19/23] KVM: selftests: Add Xen/generic CPUID timing leaf test
Date: Thu,  5 Nov 2026 07:49:50 -0800
Message-ID: <20261105154955.2525419-20-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1793893806-BF063757-C1A8DDF1/0/0
X-purgate-type: clean
X-purgate-size: 10738

From: David Woodhouse <dwmw@amazon.co.uk>

Verify that userspace can correctly populate Xen and generic CPUID
timing leaves using the KVM_GET_TSC_KHZ ioctl and
KVM_VCPU_TSC_SCALE attribute.

This validates that commit 7d3bd21e457b ("KVM: x86: Remove runtime Xen
TSC frequency CPUID update") doesn't break guests: userspace queries the effective TSC and bus
frequencies, computes the pvclock mul/shift, populates the CPUID leaves,
and the guest verifies the values match.

The test exercises:
 - KVM_GET_TSC_KHZ at native and scaled frequencies
 - KVM_VCPU_TSC_SCALE ratio verification against effective frequency
 - Generic timing leaf 0x40000010 (EAX=tsc_khz, EBX=bus_khz)
 - Xen leaf 3 sub-leaf 0 (ECX=guest TSC kHz)
 - Xen leaf 3 sub-leaf 1 (ECX=mul, EDX=shift)

Where KVM_CAP_XEN_HVM is available, the guest is given the Xen
signature leaf and the Xen hypercall MSR is enabled — the exact
configuration in which the removed runtime update used to fire — and
a sentinel is planted in leaf 3 sub-leaf 2 EAX, where it used to
write, which the guest verifies survives untouched.

Gracefully skips TSC scaling tests on hardware without support, and
skips requested frequencies within tsc_tolerance_ppm of the host's,
where hardware scaling does not engage and the effective frequency is
the requested one with an identity ratio.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/x86/xen_cpuid_timing_test.c | 273 ++++++++++++++++++
 2 files changed, 274 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 4d4eff41c525..79d26de18bf3 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -152,6 +152,7 @@ TEST_GEN_PROGS_x86 += x86/xss_msr_test
 TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
+TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
 TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
 TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
 TEST_GEN_PROGS_x86 += x86/sev_dbg_test
diff --git a/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c b/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
new file mode 100644
index 000000000000..930ee9b8d51d
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that userspace can correctly populate Xen and generic CPUID
+ * timing leaves using KVM_GET_TSC_KHZ and KVM_VCPU_TSC_SCALE.
+ *
+ * This validates that the removal of KVM's runtime Xen CPUID modification
+ * doesn't break guests, because userspace has all the information needed.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+
+#define XEN_CPUID_BASE		0x40000100
+#define XEN_CPUID_LEAF(n)	(XEN_CPUID_BASE + (n))
+#define GENERIC_TIMING_LEAF	0x40000010
+
+/*
+ * Sentinel in Xen leaf 3 sub-leaf 2 EAX (where the removed runtime
+ * update used to write the vCPU's tsc_khz): it must survive untouched.
+ */
+#define XEN_SENTINEL		0xdeadbeef
+
+/* Values set by host, verified by guest */
+static u32 expected_tsc_khz;
+static u32 expected_bus_khz;
+static u32 expected_tsc_mul;
+static s8   expected_tsc_shift;
+static u64 host_khz;
+static bool xen_enabled;
+
+static void guest_code(void)
+{
+	u32 eax, ebx, ecx, edx;
+
+	/* Check generic timing leaf 0x40000010 */
+	__cpuid(GENERIC_TIMING_LEAF, 0, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(eax, expected_tsc_khz);
+	GUEST_ASSERT_EQ(ebx, expected_bus_khz);
+
+	/* Check Xen leaf 3, sub-leaf 0: ECX = guest TSC frequency */
+	__cpuid(XEN_CPUID_LEAF(3), 0, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(ecx, expected_tsc_khz);
+
+	/* Check Xen leaf 3, sub-leaf 1: ECX = mul, EDX = shift */
+	__cpuid(XEN_CPUID_LEAF(3), 1, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(ecx, expected_tsc_mul);
+	GUEST_ASSERT_EQ((s8)edx, expected_tsc_shift);
+
+	if (xen_enabled) {
+		/*
+		 * With the Xen signature present and Xen enabled, verify the
+		 * sentinel survives: KVM's removed runtime CPUID update used
+		 * to clobber this sub-leaf for exactly this configuration.
+		 */
+		__cpuid(XEN_CPUID_LEAF(3), 2, &eax, &ebx, &ecx, &edx);
+		GUEST_ASSERT_EQ(eax, XEN_SENTINEL);
+	}
+
+	GUEST_SYNC(0);
+}
+
+static void add_cpuid_entry(struct kvm_vcpu *vcpu, u32 function,
+			    u32 index, u32 eax, u32 ebx,
+			    u32 ecx, u32 edx)
+{
+	struct kvm_cpuid2 *cpuid = vcpu->cpuid;
+	struct kvm_cpuid_entry2 *entry;
+	int n = cpuid->nent;
+
+	cpuid = realloc(vcpu->cpuid,
+			sizeof(*cpuid) + (n + 1) * sizeof(*entry));
+	TEST_ASSERT(cpuid, "Failed to grow vCPU CPUID array");
+	vcpu->cpuid = cpuid;
+	cpuid->nent = n + 1;
+
+	entry = &cpuid->entries[n];
+	memset(entry, 0, sizeof(*entry));
+	entry->function = function;
+	entry->index = index;
+	entry->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
+	entry->eax = eax;
+	entry->ebx = ebx;
+	entry->ecx = ecx;
+	entry->edx = edx;
+}
+
+/*
+ * Compute pvclock mul/shift from frequency, matching kvm_get_time_scale().
+ */
+static void compute_tsc_mul_shift(u64 tsc_hz, u32 *mul, s8 *shift)
+{
+	u64 scaled = 1000000000ULL;
+	u64 base = tsc_hz;
+	s32 s = 0;
+	u32 base32;
+
+	while (base > scaled * 2 || base >> 32) {
+		base >>= 1;
+		s--;
+	}
+	base32 = (u32)base;
+	while (base32 <= scaled || scaled >> 32) {
+		if (scaled >> 32 || base32 & (1U << 31))
+			scaled >>= 1;
+		else
+			base32 <<= 1;
+		s++;
+	}
+	*mul = (u32)((scaled << 32) / base32);
+	*shift = (s8)s;
+}
+
+static void run_test(u64 tsc_khz)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	struct ucall uc;
+	u32 effective_tsc_khz, effective_bus_khz;
+	int bus_cycle_ns, ret;
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+
+	if (tsc_khz) {
+		pr_info("Testing at TSC frequency %lu kHz\n", tsc_khz);
+		vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ, (void *)(unsigned long)tsc_khz);
+	} else {
+		pr_info("Testing at native TSC frequency\n");
+	}
+
+	ret = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	TEST_ASSERT(ret > 0, "KVM_GET_TSC_KHZ failed: %d", ret);
+	effective_tsc_khz = ret;
+	bus_cycle_ns = vm_check_cap(vm, KVM_CAP_X86_APIC_BUS_CYCLES_NS);
+	effective_bus_khz = bus_cycle_ns > 0 ? 1000000 / bus_cycle_ns : 1000000;
+
+	pr_info("  Effective TSC: %u kHz, Bus: %u kHz\n", effective_tsc_khz, effective_bus_khz);
+
+	/* Also exercise KVM_VCPU_TSC_SCALE if available */
+	if (!__vcpu_has_device_attr(vcpu, KVM_VCPU_TSC_CTRL,
+				    KVM_VCPU_TSC_SCALE)) {
+		struct kvm_vcpu_tsc_scale scale;
+
+		vcpu_device_attr_get(vcpu, KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale);
+		pr_info("  TSC scale: ratio=%llu frac_bits=%llu\n",
+			scale.tsc_ratio, scale.tsc_frac_bits);
+
+		/*
+		 * A requested frequency within tsc_tolerance_ppm of the
+		 * host's does not engage hardware scaling: the effective
+		 * frequency is the requested one but the ratio stays 1.0,
+		 * so the cross-check below cannot hold. Skip it.
+		 */
+		if (tsc_khz &&
+		    scale.tsc_ratio == (1ULL << scale.tsc_frac_bits)) {
+			pr_info("  Requested frequency within host tolerance; scaling not engaged, skipping\n");
+			kvm_vm_free(vm);
+			return;
+		}
+
+		/*
+		 * Verify: applying the ratio to the host TSC frequency
+		 * should give approximately the effective frequency.
+		 */
+		if (tsc_khz) {
+			u64 computed = ((__uint128_t)host_khz * scale.tsc_ratio) >> scale.tsc_frac_bits;
+			s64 diff = (s64)computed - (s64)effective_tsc_khz;
+
+			TEST_ASSERT(diff >= -1 && diff <= 1,
+				    "TSC_SCALE ratio mismatch: computed %lu vs effective %u (diff %ld)",
+				    computed, effective_tsc_khz, diff);
+		}
+	}
+
+	compute_tsc_mul_shift((u64)effective_tsc_khz * 1000,
+			      &expected_tsc_mul, &expected_tsc_shift);
+
+	expected_tsc_khz = effective_tsc_khz;
+	expected_bus_khz = effective_bus_khz;
+
+	sync_global_to_guest(vm, expected_tsc_khz);
+	sync_global_to_guest(vm, expected_bus_khz);
+	sync_global_to_guest(vm, expected_tsc_mul);
+	sync_global_to_guest(vm, expected_tsc_shift);
+
+	/* Populate CPUID leaves as a VMM would */
+	add_cpuid_entry(vcpu, GENERIC_TIMING_LEAF, 0,
+			effective_tsc_khz, effective_bus_khz, 0, 0);
+	add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 0,
+			0, 0, effective_tsc_khz, 0);
+	add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 1,
+			0, 0, expected_tsc_mul,
+			(u32)(s32)expected_tsc_shift);
+
+	/*
+	 * Where possible, make this a real Xen guest: install the Xen
+	 * signature leaf and enable the Xen hypercall MSR, which is the
+	 * configuration in which KVM's removed runtime CPUID update used
+	 * to fire, and plant a sentinel where it used to write.
+	 */
+	xen_enabled = kvm_has_cap(KVM_CAP_XEN_HVM);
+	if (xen_enabled) {
+		struct kvm_xen_hvm_config cfg = {
+			.msr = 0x40000200,
+		};
+
+		vm_ioctl(vm, KVM_XEN_HVM_CONFIG, &cfg);
+		add_cpuid_entry(vcpu, XEN_CPUID_BASE, 0, XEN_CPUID_LEAF(4),
+				0x566e6558 /* "XenV" */,
+				0x65584d4d /* "MMXe" */,
+				0x4d4d566e /* "nVMM" */);
+		add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 2,
+				XEN_SENTINEL, 0, 0, 0);
+	}
+	sync_global_to_guest(vm, xen_enabled);
+
+	vcpu_set_cpuid(vcpu);
+
+	pr_info("  pvclock mul=%u shift=%d\n", expected_tsc_mul, expected_tsc_shift);
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+
+	switch (get_ucall(vcpu, &uc)) {
+	case UCALL_ABORT:
+		REPORT_GUEST_ASSERT(uc);
+		break;
+	case UCALL_SYNC:
+		break;
+	default:
+		TEST_FAIL("Unexpected ucall");
+	}
+
+	kvm_vm_free(vm);
+}
+
+int main(void)
+{
+	u64 freq;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	bool have_tsc_scale;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	have_tsc_scale = !__vcpu_has_device_attr(vcpu, KVM_VCPU_TSC_CTRL,
+						 KVM_VCPU_TSC_SCALE);
+	host_khz = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	kvm_vm_free(vm);
+
+	/* Native frequency */
+	run_test(0);
+
+	/* Scaled frequencies, when hardware TSC scaling is available */
+	if (have_tsc_scale) {
+		for (freq = 1000000; freq <= 4000000; freq += 1000000) {
+			if (freq == host_khz)
+				continue;
+			run_test(freq);
+		}
+	} else {
+		pr_info("Skipping scaled frequencies (no TSC scaling)\n");
+	}
+
+	pr_info("PASS: All CPUID timing leaf tests passed\n");
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475015.1681974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjI-0006xK-0O; Thu, 05 Nov 2026 15:50:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475015.1681974; Thu, 05 Nov 2026 15:50:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjG-0006rt-KL; Thu, 05 Nov 2026 15:50:18 +0000
Received: by outflank-mailman (input) for mailman id 1475015;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj5-0004QI-0u
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-00ErBr-Bm; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5ad-e002-0a2a0a5209dd-0a2a450a9568-0
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5ad-f2d2-0a2a450a0019-5a9b5cc78e76-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:05 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo3-29Ck; Thu, 05 Nov 2026 15:49:59 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aazg-0lxj;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=k97Qsb5FE+uGX86OjD6Dmy4XamqpROFw2Ue+G2EG6Sw=; b=dDiS7CUW74PUtwZpdNETgkS3a4
	fZX9MN4A0RRmPQpYMqR8bgLtMshAR9YljH36dFiyktRJ0WYgydPmvMWHs4HssdpbpPNRIr11xX3AW
	kQziNDHkcP7kmsV6SJbfIc6C2SrBWTRlJN5gx/UIUJYir+kN3z/20bRGi9b3VZK3zT7qIiY5OyB4m
	fMxgIFHft5KXOTMkEskwqRgzuBfk5DRcMBosZFGlrJNW/rnSesS8jBTz6N7CqOf9aEGX5x0kVuslF
	ErCOr0CVvGYkzVzcZpLzOuXqmGHIU2FXwEMHAT+nT4TRrZspfWQCIhdMEqG+GWBnKFz5Au9W0pL4h
	scaMELiw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 14/23] KVM: x86: Add KVM_[GS]ET_CLOCK_GUEST for accurate KVM clock migration
Date: Thu,  5 Nov 2026 07:49:45 -0800
Message-ID: <20261105154955.2525419-15-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-4011c0/1793893805-5A1DDCFC-86CDCAC7/0/0
X-purgate-type: clean
X-purgate-size: 13938

From: Jack Allister <jalliste@amazon.com>

In the common case (where kvm->arch.use_master_clock is true), the KVM
clock is defined as a simple arithmetic function of the guest TSC, based
on a reference point stored in kvm->arch.master_kernel_ns and
kvm->arch.master_cycle_now.

The existing KVM_[GS]ET_CLOCK functionality does not allow for this
relationship to be precisely saved and restored by userspace. All it can
currently do is set the KVM clock at a given UTC reference time, which
is necessarily imprecise.

So on live update, the guest TSC can remain cycle accurate at precisely
the same offset from the host TSC, but there is no way for userspace to
restore the KVM clock accurately.

Even on live migration to a new host, where the accuracy of the guest
time-keeping is fundamentally limited by the accuracy of wallclock
synchronization between the source and destination hosts, the clock jump
experienced by the guest's TSC and its KVM clock should at least be
*consistent*. Even when the guest TSC suffers a discontinuity, its KVM
clock should still remain the *same* arithmetic function of the guest
TSC, and not suffer an *additional* discontinuity.

To allow for accurate migration of the KVM clock, add per-vCPU ioctls
which save and restore the actual PV clock info in
pvclock_vcpu_time_info.

The restoration in KVM_SET_CLOCK_GUEST works by creating a new reference
point in time just as kvm_update_masterclock() does, and calculating the
corresponding guest TSC value. This guest TSC value is then passed
through the user-provided pvclock structure to generate the *intended*
KVM clock value at that point in time, and through the *actual* KVM
clock calculation. Then kvm->arch.kvmclock_offset is adjusted to
eliminate the difference.

Where kvm->arch.use_master_clock is false (because the host TSC is
unreliable, or the guest TSCs are configured strangely), the KVM clock
is *not* defined as a function of the guest TSC so KVM_GET_CLOCK_GUEST
returns an error. In this case, as documented, userspace shall use the
legacy KVM_GET_CLOCK ioctl. The loss of precision is acceptable in this
case since the clocks are imprecise in this mode anyway.

On *restoration*, if kvm->arch.use_master_clock is false, an error is
returned for similar reasons and userspace shall fall back to using
KVM_SET_CLOCK. This does mean that, as documented, userspace needs to
use *both* KVM_GET_CLOCK_GUEST and KVM_GET_CLOCK and send both results
with the migration data (unless the intent is to refuse to resume on a
host with bad TSC).

Both ioctls return -ENODATA when the KVM clock is not in master clock
mode. KVM_SET_CLOCK_GUEST can also return -EBUSY when the TSC frequency
of the current CPU is unknown (a hotplug window which exists only on
hosts without CONSTANT_TSC — which are unlikely ever to be in master
clock mode anyway, so userspace should treat -EBUSY like -ENODATA and
fall back to KVM_SET_CLOCK rather than retrying in a time-critical
path). KVM_GET_CLOCK_GUEST computes its result purely from the master
clock state and needs no per-CPU TSC frequency, so it cannot hit that
window. Advertise the ioctls with KVM_CAP_CLOCK_GUEST so that userspace
need not probe for them.

Co-developed-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Jack Allister <jalliste@amazon.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Cc: Dongli Zhang <dongli.zhang@oracle.com>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 Documentation/virt/kvm/api.rst  |  54 ++++++++++
 arch/x86/include/uapi/asm/kvm.h |   1 +
 arch/x86/kvm/x86.c              | 173 ++++++++++++++++++++++++++++++++
 include/uapi/linux/kvm.h        |   4 +
 4 files changed, 232 insertions(+)

diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index ddc61ea36ac5..91406381c195 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -6759,6 +6759,60 @@ if the guest_memfd memory was pinned in IOMMU page tables.
 
 See also: :ref:`KVM_SET_MEMORY_ATTRIBUTES`.
 
+4.147 KVM_GET_CLOCK_GUEST
+----------------------------
+
+:Capability: KVM_CAP_CLOCK_GUEST
+:Architectures: x86_64
+:Type: vcpu ioctl
+:Parameters: struct pvclock_vcpu_time_info (out)
+:Returns: 0 on success, <0 on error
+
+Retrieves the current time information structure used for KVM/PV clocks,
+in precisely the form advertised to the guest vCPU, which gives parameters
+for a direct conversion from a guest TSC value to nanoseconds.
+
+The structure is in terms of the given vCPU's TSC. It must be passed back
+to KVM_SET_CLOCK_GUEST on the *same* vCPU (on the destination VM, for
+migration); vCPUs may legitimately have different TSC offsets, which would
+otherwise be silently folded into the restored KVM clock.
+
+When the KVM clock is not in "master clock" mode, for example because the
+host TSC is unreliable or the guest TSCs are oddly configured, the KVM clock
+is actually defined by the host CLOCK_MONOTONIC_RAW instead of the guest TSC.
+In this case, the KVM_GET_CLOCK_GUEST ioctl returns -ENODATA.
+
+4.148 KVM_SET_CLOCK_GUEST
+----------------------------
+
+:Capability: KVM_CAP_CLOCK_GUEST
+:Architectures: x86_64
+:Type: vcpu ioctl
+:Parameters: struct pvclock_vcpu_time_info (in)
+:Returns: 0 on success, <0 on error
+
+Sets the KVM clock (for the whole VM) in terms of the vCPU TSC, using the
+pvclock structure as returned by KVM_GET_CLOCK_GUEST. This allows the precise
+arithmetic relationship between guest TSC and KVM clock to be preserved by
+userspace across migration.
+
+When the KVM clock is not in "master clock" mode, and the KVM clock is actually
+defined by the host CLOCK_MONOTONIC_RAW, this ioctl returns -ENODATA. Userspace
+may choose to set the clock using the less precise KVM_SET_CLOCK ioctl, or may
+choose to fail, denying migration to a host whose TSC is misbehaving. An -EBUSY
+return indicates that the TSC frequency of the current CPU is unknown, which is
+only possible on hosts without X86_FEATURE_CONSTANT_TSC; such hosts are unlikely
+to be in "master clock" mode anyway, and userspace should treat it the same as
+-ENODATA rather than retrying.
+
+If the mul/shift fields of the provided pvclock structure encode a TSC
+frequency inconsistent with the vCPU's actual TSC frequency, this ioctl
+returns -ERANGE.
+
+If the vCPU's current TSC is behind the tsc_timestamp in the provided
+structure, this ioctl returns -EINVAL. Restore the guest TSC (which the
+documented migration procedure keeps monotonic) before invoking it.
+
 .. _kvm_run:
 
 5. The kvm_run structure
diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
index 1585ec804066..9e3cdc3adb65 100644
--- a/arch/x86/include/uapi/asm/kvm.h
+++ b/arch/x86/include/uapi/asm/kvm.h
@@ -12,6 +12,7 @@
 #include <linux/types.h>
 #include <linux/ioctl.h>
 #include <linux/stddef.h>
+#include <asm/pvclock-abi.h>
 
 #define KVM_PIO_PAGE_OFFSET 1
 #define KVM_COALESCED_MMIO_PAGE_OFFSET 2
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 6dbdb60962fe..bdc838b12fdc 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2409,6 +2409,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 	case KVM_CAP_MEMORY_FAULT_INFO:
 	case KVM_CAP_X86_GUEST_MODE:
 	case KVM_CAP_ONE_REG:
+#ifdef CONFIG_X86_64
+	case KVM_CAP_CLOCK_GUEST:
+#endif
 		r = 1;
 		break;
 	case KVM_CAP_PRE_FAULT_MEMORY:
@@ -3541,6 +3544,168 @@ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
 	}
 }
 
+#ifdef CONFIG_X86_64
+static int kvm_vcpu_ioctl_get_clock_guest(struct kvm_vcpu *v, void __user *argp)
+{
+	struct pvclock_vcpu_time_info hv_clock = {};
+	struct kvm_arch *ka = &v->kvm->arch;
+	unsigned int seq;
+
+	/*
+	 * Construct the pvclock purely from the master clock state. The
+	 * master mul/shift are computed for the guest TSC frequency, which
+	 * in master clock mode is the frequency of every vCPU; only the
+	 * tsc_timestamp is per-vCPU, translating the master snapshot into
+	 * this vCPU's TSC domain via its scaling ratio and offset.
+	 *
+	 * Note, this deliberately does NOT invoke kvm_guest_time_update(),
+	 * which would write the guest's pvclock pages: dirtying guest
+	 * memory after the final KVM_RUN would break post-copy migration
+	 * flows. The pvclock returned here describes the same clock as the
+	 * guest-visible copy (the same linear function of the guest TSC),
+	 * anchored at the current master clock snapshot.
+	 */
+	do {
+		seq = read_seqcount_begin(&ka->pvclock_sc);
+
+		if (!ka->use_master_clock)
+			return -ENODATA;
+
+		hv_clock.tsc_timestamp = kvm_read_l1_tsc(v, ka->master_cycle_now);
+		hv_clock.system_time = ka->master_kernel_ns + ka->kvmclock_offset;
+		hv_clock.tsc_shift = ka->master_tsc_shift;
+		hv_clock.tsc_to_system_mul = ka->master_tsc_mul;
+		hv_clock.flags = READ_ONCE(ka->all_vcpus_matched_tsc) ?
+				 PVCLOCK_TSC_STABLE_BIT : 0;
+	} while (read_seqcount_retry(&ka->pvclock_sc, seq));
+
+	if (copy_to_user(argp, &hv_clock, sizeof(hv_clock)))
+		return -EFAULT;
+
+	return 0;
+}
+
+/*
+ * Reverse the calculation in the hv_clock definition.
+ *
+ * time_ns = ( (cycles << shift) * mul ) >> 32;
+ * (although shift can be negative, so that's bad C)
+ *
+ * So for a single second,
+ * NSEC_PER_SEC = ( ( FREQ_HZ << shift) * mul ) >> 32
+ * NSEC_PER_SEC << 32 = ( FREQ_HZ << shift ) * mul
+ * ( NSEC_PER_SEC << 32 ) / mul = FREQ_HZ << shift
+ * ( NSEC_PER_SEC << 32 ) / mul ) >> shift = FREQ_HZ
+ */
+static u64 hvclock_to_hz(u32 mul, s8 shift)
+{
+	u64 tm = NSEC_PER_SEC << 32;
+
+	/* Maximise precision. Shift left until the top bit is set */
+	tm <<= 2;
+	shift += 2;
+
+	/* While 'mul' is even, increase the shift *after* the division */
+	while (!(mul & 1)) {
+		shift++;
+		mul >>= 1;
+	}
+
+	tm /= mul;
+
+	if (shift >= 64)
+		return 0;
+	if (shift > 0)
+		return tm >> shift;
+	if (shift <= -64)
+		return 0;
+	return tm << -shift;
+}
+
+static int kvm_vcpu_ioctl_set_clock_guest(struct kvm_vcpu *v, void __user *argp)
+{
+	struct pvclock_vcpu_time_info user_hv_clock;
+	struct kvm *kvm = v->kvm;
+	struct kvm_arch *ka = &kvm->arch;
+	u64 curr_tsc_hz, user_tsc_hz;
+	u64 user_clk_ns;
+	u64 guest_tsc;
+	int rc = 0;
+
+	if (copy_from_user(&user_hv_clock, argp, sizeof(user_hv_clock)))
+		return -EFAULT;
+
+	if (user_hv_clock.pad0 || user_hv_clock.pad[0] || user_hv_clock.pad[1])
+		return -EINVAL;
+
+	if (!user_hv_clock.tsc_to_system_mul)
+		return -EINVAL;
+
+	if (user_hv_clock.tsc_shift < -31 || user_hv_clock.tsc_shift > 31)
+		return -EINVAL;
+
+	user_tsc_hz = hvclock_to_hz(user_hv_clock.tsc_to_system_mul,
+				    user_hv_clock.tsc_shift);
+
+	kvm_hv_request_tsc_page_update(kvm);
+
+	/*
+	 * kvm_start_pvclock_update() takes tsc_write_lock and opens
+	 * the pvclock seqcount; kvm_end_pvclock_update() closes both.
+	 * All clock state modifications between them are atomic with
+	 * respect to readers in kvm_guest_time_update().
+	 */
+	kvm_start_pvclock_update(kvm);
+	pvclock_update_vm_gtod_copy(kvm);
+
+	if (!ka->use_master_clock) {
+		rc = -ENODATA;
+		goto out;
+	}
+
+	curr_tsc_hz = (u64)get_cpu_tsc_khz() * HZ_PER_KHZ;
+	if (unlikely(curr_tsc_hz == 0)) {
+		rc = -EBUSY;
+		goto out;
+	}
+
+	if (kvm_caps.has_tsc_control)
+		curr_tsc_hz = kvm_scale_tsc(curr_tsc_hz,
+					    v->arch.l1_tsc_scaling_ratio);
+
+	/*
+	 * The mul/shift in the provided pvclock structure encode the guest
+	 * TSC frequency at which it was generated. Sanity-check that it is
+	 * consistent with this vCPU's effective TSC frequency, allowing a
+	 * discrepancy of 1 kHz either way since independently calibrated
+	 * hosts will not measure precisely the same value even for the
+	 * same nominal frequency.
+	 */
+	if (user_tsc_hz < curr_tsc_hz - 1000 ||
+	    user_tsc_hz > curr_tsc_hz + 1000) {
+		rc = -ERANGE;
+		goto out;
+	}
+
+	/*
+	 * Calculate the guest TSC at the new reference point, and the
+	 * corresponding KVM clock value according to user_hv_clock.
+	 * Adjust kvmclock_offset so both definitions agree.
+	 */
+	guest_tsc = kvm_read_l1_tsc(v, ka->master_cycle_now);
+	if (guest_tsc < user_hv_clock.tsc_timestamp) {
+		rc = -EINVAL;
+		goto out;
+	}
+	user_clk_ns = __pvclock_read_cycles(&user_hv_clock, guest_tsc);
+	ka->kvmclock_offset = user_clk_ns - ka->master_kernel_ns;
+
+out:
+	kvm_end_pvclock_update(kvm);
+	return rc;
+}
+#endif
+
 long kvm_arch_vcpu_ioctl(struct file *filp,
 			 unsigned int ioctl, unsigned long arg)
 {
@@ -3934,6 +4099,14 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
 		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
+#ifdef CONFIG_X86_64
+	case KVM_SET_CLOCK_GUEST:
+		r = kvm_vcpu_ioctl_set_clock_guest(vcpu, argp);
+		break;
+	case KVM_GET_CLOCK_GUEST:
+		r = kvm_vcpu_ioctl_get_clock_guest(vcpu, argp);
+		break;
+#endif
 #ifdef CONFIG_KVM_HYPERV
 	case KVM_GET_SUPPORTED_HV_CPUID:
 		r = kvm_ioctl_get_supported_hv_cpuid(vcpu, argp);
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 8dff2fc1972e..1349387cceb0 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1000,6 +1000,7 @@ struct kvm_enable_cap {
 #define KVM_CAP_PPC_COMPAT_CAPS 250
 #define KVM_CAP_ARM_PMU_V3_STRICT 251
 #define KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES 252
+#define KVM_CAP_CLOCK_GUEST 253
 
 struct kvm_irq_routing_irqchip {
 	__u32 irqchip;
@@ -1690,4 +1691,7 @@ struct kvm_pre_fault_memory {
 	__u64 padding[5];
 };
 
+#define KVM_SET_CLOCK_GUEST	_IOW(KVMIO, 0xd6, struct pvclock_vcpu_time_info)
+#define KVM_GET_CLOCK_GUEST	_IOR(KVMIO, 0xd7, struct pvclock_vcpu_time_info)
+
 #endif /* __LINUX_KVM_H */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475014.1681982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjJ-0007D4-0U; Thu, 05 Nov 2026 15:50:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475014.1681982; Thu, 05 Nov 2026 15:50:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjI-00078O-4N; Thu, 05 Nov 2026 15:50:20 +0000
Received: by outflank-mailman (input) for mailman id 1475014;
 Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj5-0004Ql-0e
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj4-00B7sn-CN; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca590-2eae-0a2a0a5409dd-0a2a450bcf62-40
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:06 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-b7e8-0a2a450b0019-5a9b5cc79a70-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003BoA-28Vl; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Ab09-2IpF;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=l1si1cKxVaPJRHhpJBL3f0tOHY9gzjDBCiBVwqvknmI=; b=CbBOFroFlQHLE5/J4VBcIrdKjR
	/96dqulkF1bv/Uovq7tcPD//ajXcGrQyPxUN/ZnMEeTffAeBYUyFSzCle3R3/1Eq2rYj8mpIiw2s3
	kb5XGNO0jVTr9QbjARoh3qgXsA/cEKmGriLnpHkq4oq5EkyiwmOaa/8c6eVeTKLVrNJYwukqCg+me
	SECy1+4d8QMtr+eKpoXc/VNTfp1PJlA99AN1AFCB5+042Nc34qZTg6PLGrR0yvZ1WqEzw98w2sj/s
	mHDA7bX1WEhikkUPhHNGdT/8uzQjlXhTs1IKjF6dQQ+t/b81OVZAtgy83ADtTzslRXFnrTMzj8NAm
	bDvFKL3Q==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 20/23] KVM: selftests: Add Xen runstate migration test
Date: Thu,  5 Nov 2026 07:49:51 -0800
Message-ID: <20261105154955.2525419-21-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-42698a/1793893806-182F49EA-E7DD0D15/0/0
X-purgate-type: clean
X-purgate-size: 10497

From: David Woodhouse <dwmw@amazon.co.uk>

Test that Xen runstate (steal time) is correctly accounted across a
simulated live migration using KVM_XEN_VCPU_ATTR and KVM_[GS]ET_CLOCK_GUEST.

The test simulates what a real VMM does during migration:
1. Creates a VM with Xen HVM config and runstate tracking
2. Runs the guest to accumulate some kvmclock time
3. Saves clock (KVM_GET_CLOCK_GUEST), TSC offset, and runstate
4. Marks the saved state as RUNSTATE_runnable (vCPU not running)
5. Destroys the source VM
6. Sleeps 10ms (simulating migration network transfer time)
7. Creates a new VM and restores all state precisely as saved
8. Runs the guest and verifies the migration gap appears as steal

The VM is placed in long mode explicitly (KVM_XEN_ATTR_TYPE_LONG_MODE)
so the kernel writes the 64-bit runstate layout; nothing in this test
writes the hypercall-page MSR, which is what would otherwise latch the
mode from the guest's EFER.

The guest TSC is transferred via the KVM_VCPU_TSC_OFFSET attribute. As
the "migration" is to a new VM on the same host, restoring the same
offset makes the guest TSC continue uninterrupted across the gap, so the
restored pvclock yields a kvmclock which has kept running too. That is
what makes the migration gap visible: the destination kvmclock is ahead
of the saved state_entry_time by (at least) the gap duration, rather
than restarting from the destination VM's creation time.

The kernel accounts the gap because: on vcpu_load, it transitions from
RUNSTATE_runnable to RUNSTATE_running, computing delta = kvmclock_now -
state_entry_time. Since kvmclock has advanced past the saved entry time
(real time elapsed during migration), the delta is added to time_runnable.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/x86/xen_migration_test.c    | 222 ++++++++++++++++++
 2 files changed, 223 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/xen_migration_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 79d26de18bf3..1edc78845fd3 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -153,6 +153,7 @@ TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
 TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
+TEST_GEN_PROGS_x86 += x86/xen_migration_test
 TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
 TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
 TEST_GEN_PROGS_x86 += x86/sev_dbg_test
diff --git a/tools/testing/selftests/kvm/x86/xen_migration_test.c b/tools/testing/selftests/kvm/x86/xen_migration_test.c
new file mode 100644
index 000000000000..564781db3da2
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/xen_migration_test.c
@@ -0,0 +1,222 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test Xen runstate (steal time) preservation across simulated migration.
+ *
+ * Verifies that the kernel correctly accounts the migration gap as
+ * steal time (runnable) when runstate data is saved and restored
+ * precisely, but real time elapses during the migration.
+ *
+ * The key insight: userspace saves the runstate with state=RUNSTATE_runnable
+ * (the vCPU is not running during migration). On restore, the kernel sees
+ * that kvmclock has advanced past state_entry_time, and accounts the
+ * difference as time spent in the runnable state.
+ */
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+#define SHINFO_GPA	0xc0000000ULL
+#define RUNSTATE_GPA	(SHINFO_GPA + 0x1000)
+
+#define RUNSTATE_running  0
+#define RUNSTATE_runnable 1
+#define RUNSTATE_blocked  2
+#define RUNSTATE_offline  3
+
+/*
+ * The 64-bit (long mode) layout: 'state' is followed by 4 bytes of
+ * padding so state_entry_time is naturally aligned. The VM is placed
+ * in long mode explicitly below; without that, KVM would latch 32-bit
+ * mode (no hypercall-page write ever happens here to latch it from
+ * EFER) and write the packed compat layout instead.
+ */
+struct vcpu_runstate_info {
+	u32 state;
+	u64 state_entry_time;
+	u64 time[4];
+};
+
+static void guest_code(void)
+{
+	volatile struct vcpu_runstate_info *rs =
+		(void *)(unsigned long)RUNSTATE_GPA;
+
+	/* Report runstate times — no need to enable kvmclock MSR,
+	 * the kernel writes runstate using its internal kvmclock. */
+	GUEST_SYNC_ARGS(0, rs->time[RUNSTATE_runnable],
+			rs->time[RUNSTATE_running], 0, 0);
+}
+
+static struct kvm_vm *create_xen_vm(struct kvm_vcpu **vcpu)
+{
+	struct kvm_vm *vm;
+	int xen_caps;
+
+	vm = vm_create_with_one_vcpu(vcpu, guest_code);
+
+	xen_caps = kvm_check_cap(KVM_CAP_XEN_HVM);
+	TEST_REQUIRE(xen_caps & KVM_XEN_HVM_CONFIG_SHARED_INFO);
+	TEST_REQUIRE(xen_caps & KVM_XEN_HVM_CONFIG_RUNSTATE);
+
+	/* Map pages */
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    SHINFO_GPA, 1, 2, 0);
+	virt_map(vm, SHINFO_GPA, SHINFO_GPA, 2);
+
+	/* Enable Xen HVM with MSR interception (enables runstate tracking) */
+	struct kvm_xen_hvm_config cfg = {
+		.flags = KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL,
+		.msr = 0x40000000,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_CONFIG, &cfg);
+
+	/* The guest runs in long mode; make the runstate layout match. */
+	struct kvm_xen_hvm_attr lm = {
+		.type = KVM_XEN_ATTR_TYPE_LONG_MODE,
+		.u.long_mode = 1,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &lm);
+
+	/* Set shared_info */
+	struct kvm_xen_hvm_attr ha = {
+		.type = KVM_XEN_ATTR_TYPE_SHARED_INFO,
+		.u.shared_info.gfn = SHINFO_GPA >> 12,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &ha);
+
+	/* Set runstate address */
+	struct kvm_xen_vcpu_attr rs_addr = {
+		.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR,
+		.u.gpa = RUNSTATE_GPA,
+	};
+	vcpu_ioctl(*vcpu, KVM_XEN_VCPU_SET_ATTR, &rs_addr);
+
+	return vm;
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti;
+	struct kvm_xen_vcpu_attr runstate_save;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	struct ucall uc;
+	u64 tsc_offset;
+	int ret;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	/* === SOURCE SIDE === */
+	pr_info("=== Source: create VM and run guest ===\n");
+	vm = create_xen_vm(&vcpu);
+
+	/* Run guest once to accumulate some runstate time */
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+
+	pr_info("  Guest sees: runnable=%" PRIu64 " running=%" PRIu64 "\n",
+		uc.args[2], uc.args[3]);
+
+	/* Save clock state */
+	vcpu_get_clock_guest(vcpu, &pvti);
+
+	/*
+	 * Save the guest TSC offset. This test migrates to a new VM on
+	 * the same host, so restoring the same offset makes the guest
+	 * TSC continue uninterrupted across the migration gap, and the
+	 * restored pvclock (KVM_SET_CLOCK_GUEST) then yields a kvmclock
+	 * which has also kept running across the gap. (A real migration
+	 * to a different host would compute the destination offset from
+	 * KVM_GET_CLOCK's {host_tsc, realtime} pair as described in
+	 * Documentation/virt/kvm/devices/vcpu.rst.)
+	 */
+	tsc_offset = vcpu_get_tsc_offset(vcpu);
+
+	/* Save runstate — the vCPU is now "runnable" (not running) */
+	runstate_save.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA;
+	vcpu_ioctl(vcpu, KVM_XEN_VCPU_GET_ATTR, &runstate_save);
+
+	/*
+	 * Transition to runnable state before saving — the vCPU is
+	 * not running during migration.
+	 */
+	runstate_save.u.runstate.state = RUNSTATE_runnable;
+
+	pr_info("  Saved runstate: running=%" PRIu64 " runnable=%" PRIu64
+		" entry=%" PRIu64 "\n",
+		(u64)runstate_save.u.runstate.time_running,
+		(u64)runstate_save.u.runstate.time_runnable,
+		(u64)runstate_save.u.runstate.state_entry_time);
+
+	u64 saved_runnable = runstate_save.u.runstate.time_runnable;
+
+	kvm_vm_free(vm);
+
+	/* === MIGRATION GAP === */
+	pr_info("=== Simulating migration (sleeping 10ms) ===\n");
+	usleep(10000);
+
+	/* === DESTINATION SIDE === */
+	pr_info("=== Destination: create new VM and restore ===\n");
+	vm = create_xen_vm(&vcpu);
+
+	/* Restore the guest TSC offset (same host: TSC continues) */
+	vcpu_set_tsc_offset(vcpu, tsc_offset);
+
+	/* Restore clock — kvmclock will now be ~10ms ahead of the snapshot */
+	vcpu_set_clock_guest(vcpu, &pvti);
+
+	/* Restore runstate exactly as saved (state=runnable) */
+	runstate_save.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA;
+	ret = __vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &runstate_save);
+	TEST_ASSERT(!ret, "Restore runstate failed: errno %d", errno);
+
+	/*
+	 * Run the guest. When the vCPU enters vcpu_run, the kernel
+	 * transitions from RUNSTATE_runnable to RUNSTATE_running.
+	 * It computes: delta = kvmclock_now - state_entry_time
+	 * This delta (which includes the migration gap) is added to
+	 * time_runnable (steal time).
+	 */
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+
+	u64 guest_runnable = uc.args[2];
+	u64 guest_running = uc.args[3];
+
+	pr_info("  Guest sees: runnable=%" PRIu64 " running=%" PRIu64 "\n",
+		guest_runnable, guest_running);
+
+	u64 steal_increase = guest_runnable - saved_runnable;
+	pr_info("  Steal time increase: %" PRIu64 " ns (migration gap)\n",
+		steal_increase);
+
+	/*
+	 * The steal time increase should be at least 10ms (the sleep).
+	 * The actual gap runs from the source's state_entry_time to the
+	 * destination's kvmclock "now" at vcpu_load time, which includes
+	 * everything from the source guest's last runstate transition
+	 * through VM teardown and re-creation — so the upper bound exists
+	 * only to catch wild miscalculation (e.g. an unscaled TSC delta),
+	 * and is deliberately generous for slow or loaded hosts.
+	 */
+	TEST_ASSERT(steal_increase >= 10000000ULL &&
+		    steal_increase < 60000000000ULL,
+		    "Steal time increase %" PRIu64 " ns not in expected range "
+		    "[10ms, 60s]", steal_increase);
+
+	kvm_vm_free(vm);
+	pr_info("PASS: Migration gap correctly accounted as steal time\n");
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475017.1682000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjO-00089F-55; Thu, 05 Nov 2026 15:50:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475017.1682000; Thu, 05 Nov 2026 15:50:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjM-00087F-UF; Thu, 05 Nov 2026 15:50:24 +0000
Received: by outflank-mailman (input) for mailman id 1475017;
 Thu, 05 Nov 2026 15:50:10 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzj8-0005Cp-HL
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj7-00GUz4-TW; Thu, 05 Nov 2026 16:50:09 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5b1-8faa-0a2a0a5109dd-0a2a450cbe30-12
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:09 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-f479-0a2a450c0019-5a9b3222e880-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziu-00000009aoq-0dWx; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000AazM-3xHY;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=+Bp/FraEPNEKgnVnaEnw6iNuhtXFkslibvECwlTvHqE=; b=ZcdGpA6p4Jpvl/hnSOPP0PjHv/
	eeUSBwF7bh55qJGD+CCING13IN7mFqESX25yk51b9VeLvgG4rbjs5xe8s0UTFKm4LqdldDD/tIZtF
	dG9+rgKGgqNn+BAiv5ZHViWGFDcT4mJofE0dNYAWQLik25Qdtkp0ppZIWLyPpyr0zLWPB/Po5fjUm
	SfkH/qeYivekcHSnsWOKZmJWKHBT/J3eS7feqBmxhrn5A22MEYZ0n23XYt2SfhqEMiY4bFLQpkXHS
	8/H/c+LfweYD+K4wNyQjIGJEe5BI/YFpAfzjG68e/WD1+lP4eOLg2hXQCYo9jfVgcSPILWa33Nuy1
	yRkQlxag==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 10/23] KVM: x86: Remove pvclock_gtod_data and private timekeeping code
Date: Thu,  5 Nov 2026 07:49:41 -0800
Message-ID: <20261105154955.2525419-11-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d25034/1793893803-03AD4A5B-DBF46BDD/0/0
X-purgate-type: clean
X-purgate-size: 2800

From: David Woodhouse <dwmw@amazon.co.uk>

Remove the now-unused KVM-private timekeeping infrastructure:

 - struct pvclock_clock and struct pvclock_gtod_data
 - update_pvclock_gtod() and its seqcount-protected state copy
   (the private readers were already removed when their last callers
   went away)

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 56 ----------------------------------------------
 1 file changed, 56 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e81e527e7b99..940168528721 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -889,60 +889,6 @@ static inline bool kvm_vcpu_exit_request(struct kvm_vcpu *vcpu)
 	       kvm_request_pending(vcpu) || xfer_to_guest_mode_work_pending();
 }
 
-#ifdef CONFIG_X86_64
-struct pvclock_clock {
-	int vclock_mode;
-	u64 cycle_last;
-	u64 mask;
-	u32 mult;
-	u32 shift;
-	u64 base_cycles;
-	u64 offset;
-};
-
-struct pvclock_gtod_data {
-	seqcount_t	seq;
-
-	struct pvclock_clock clock; /* extract of a clocksource struct */
-	struct pvclock_clock raw_clock; /* extract of a clocksource struct */
-
-	ktime_t		offs_boot;
-	u64		wall_time_sec;
-};
-
-static struct pvclock_gtod_data pvclock_gtod_data;
-
-static void update_pvclock_gtod(struct timekeeper *tk)
-{
-	struct pvclock_gtod_data *vdata = &pvclock_gtod_data;
-
-	write_seqcount_begin(&vdata->seq);
-
-	/* copy pvclock gtod data */
-	vdata->clock.vclock_mode	= tk->tkr_mono.clock->vdso_clock_mode;
-	vdata->clock.cycle_last		= tk->tkr_mono.cycle_last;
-	vdata->clock.mask		= tk->tkr_mono.mask;
-	vdata->clock.mult		= tk->tkr_mono.mult;
-	vdata->clock.shift		= tk->tkr_mono.shift;
-	vdata->clock.base_cycles	= tk->tkr_mono.xtime_nsec;
-	vdata->clock.offset		= tk->tkr_mono.base;
-
-	vdata->raw_clock.vclock_mode	= tk->tkr_raw.clock->vdso_clock_mode;
-	vdata->raw_clock.cycle_last	= tk->tkr_raw.cycle_last;
-	vdata->raw_clock.mask		= tk->tkr_raw.mask;
-	vdata->raw_clock.mult		= tk->tkr_raw.mult;
-	vdata->raw_clock.shift		= tk->tkr_raw.shift;
-	vdata->raw_clock.base_cycles	= tk->tkr_raw.xtime_nsec;
-	vdata->raw_clock.offset		= tk->tkr_raw.base;
-
-	vdata->wall_time_sec            = tk->xtime_sec;
-
-	vdata->offs_boot		= tk->offs_boot;
-
-	write_seqcount_end(&vdata->seq);
-}
-#endif
-
 static s64 get_kvmclock_base_ns(void)
 {
 	/* Count up from boot time, but with the frequency of the raw clock.  */
@@ -7092,8 +7038,6 @@ static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused,
 {
 	struct timekeeper *tk = priv;
 
-	update_pvclock_gtod(tk);
-
 	/*
 	 * Pairs with the READ_ONCE() in the lockless readers; the race is
 	 * benign by design, relying on eventual consistency (the notifier
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475019.1682007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjP-0008Nd-Cj; Thu, 05 Nov 2026 15:50:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475019.1682007; Thu, 05 Nov 2026 15:50:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjO-0008IW-6C; Thu, 05 Nov 2026 15:50:26 +0000
Received: by outflank-mailman (input) for mailman id 1475019;
 Thu, 05 Nov 2026 15:50:12 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj9-0005Rr-KT
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj8-000oQ8-Vi; Thu, 05 Nov 2026 16:50:10 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca595-bab6-0a2a0a5309dd-0a2a4503a1a4-22
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-fae8-0a2a45030019-5a9b5cc7963a-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bo4-2989; Thu, 05 Nov 2026 15:49:59 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000Aazq-1KtU;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=SgAfDm8bN4RqfSb2fwUeH424ylBGQ7EFh9qchEyHoe4=; b=O67LUaon3zOu2RRYEHrPk6Kc6/
	aOsaftCYm5t/3xUfRjLjX+gdpFalVYmp3KOPo+Ajox6sk13/0+3uYDmV8c5wKlUH2RrKipa5rf7WA
	zbVTcARFzdT0aVnX9Rn4NxgCGxk9dj5mkdl4FXTkdRgwBQkbl2eufdt0mQHbTMqSL+GLP7pGFsIvj
	wq/GhMnSqHd9kd+eNfx0j89WJnpZU2DJljTmJjc5MJTWuom6j/+s+E0DpO5i7xET/iBN58pFGvoOi
	2lMe6wcMmuUWyqPDjzDrXVhF+tz+3b86ltTP5AbLv06QpHukifsvFrs9x3SMCm7gYM8ve14iPzadC
	k8r/yu7g==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 16/23] KVM: x86: Add KVM_VCPU_TSC_SCALE and fix the documentation on TSC migration
Date: Thu,  5 Nov 2026 07:49:47 -0800
Message-ID: <20261105154955.2525419-17-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-33051d/1793893801-6F4C74E9-2597AFBB/0/0
X-purgate-type: clean
X-purgate-size: 30208

From: David Woodhouse <dwmw@amazon.co.uk>

The documentation on TSC migration using KVM_VCPU_TSC_OFFSET is woefully
inadequate. It ignores TSC scaling, and ignores the fact that the host
TSC may differ from one host to the next (and in fact because of the way
the kernel calibrates it, it generally differs from one boot to the next
even on the same hardware).

Add KVM_VCPU_TSC_SCALE to extract the actual scale ratio and frac_bits,
and attempt to document the process that userspace needs to follow to
preserve the TSC across migration. Add a self test to function as an
exemplar.

Only enumerate KVM_VCPU_TSC_SCALE when kvm_caps.has_tsc_control is true,
since the scaling ratio is only meaningful when hardware TSC scaling is
supported.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 Documentation/virt/kvm/devices/vcpu.rst       | 130 ++++-
 arch/x86/include/uapi/asm/kvm.h               |   6 +
 arch/x86/kvm/x86.c                            |  21 +
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../kvm/x86/pvclock_migration_test.c          | 520 ++++++++++++++++++
 5 files changed, 648 insertions(+), 30 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_migration_test.c

diff --git a/Documentation/virt/kvm/devices/vcpu.rst b/Documentation/virt/kvm/devices/vcpu.rst
index deb5c51bc00c..3daa77c5d215 100644
--- a/Documentation/virt/kvm/devices/vcpu.rst
+++ b/Documentation/virt/kvm/devices/vcpu.rst
@@ -239,6 +239,7 @@ including the layout of the stolen time structure.
 :Architectures: x86
 
 4.1 ATTRIBUTE: KVM_VCPU_TSC_OFFSET
+----------------------------------
 
 :Parameters: 64-bit unsigned TSC offset
 
@@ -253,7 +254,10 @@ Returns:
 Specifies the guest's TSC offset relative to the host's TSC. The guest's
 TSC is then derived by the following equation:
 
-  guest_tsc = host_tsc + KVM_VCPU_TSC_OFFSET
+  guest_tsc = ((host_tsc * tsc_ratio) >> tsc_frac_bits) + KVM_VCPU_TSC_OFFSET
+
+The values of tsc_ratio and tsc_frac_bits can be obtained using
+the KVM_VCPU_TSC_SCALE attribute.
 
 This attribute is useful to adjust the guest's TSC on live migration,
 so that the TSC counts the time during which the VM was paused. The
@@ -261,44 +265,110 @@ following describes a possible algorithm to use for this purpose.
 
 From the source VMM process:
 
-1. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (tsc_src),
+1. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (host_tsc_src),
    kvmclock nanoseconds (guest_src), and host CLOCK_REALTIME nanoseconds
-   (host_src).
+   (time_src) at a given moment (Tsrc). The host_tsc field is only valid
+   when the returned flags include KVM_CLOCK_HOST_TSC.
+
+2. For each vCPU[i]:
+
+   a. Read the KVM_VCPU_TSC_OFFSET attribute to record the guest TSC offset
+      (ofs_src[i]).
+
+   b. Read the KVM_VCPU_TSC_SCALE attribute to record the guest TSC scaling
+      ratio (ratio_src[i], frac_bits_src[i]). If the attribute is not
+      supported (-ENXIO), there is no hardware TSC scaling and identity
+      scaling applies: use ratio 1, frac_bits 0.
 
-2. Read the KVM_VCPU_TSC_OFFSET attribute for every vCPU to record the
-   guest TSC offset (ofs_src[i]).
+   c. Use host_tsc_src and the scaling/offset factors to calculate this
+      vCPU's TSC at time Tsrc:
 
-3. Invoke the KVM_GET_TSC_KHZ ioctl to record the frequency of the
-   guest's TSC (freq).
+      tsc_src[i] = ((host_tsc_src * ratio_src[i]) >> frac_bits_src[i]) + ofs_src[i]
+
+      Note that frac_bits may be as high as 48, so this multiplication
+      needs a 128-bit intermediate to avoid overflow.
+
+3. Invoke the KVM_GET_CLOCK_GUEST ioctl on the boot vCPU to return the KVM
+   clock as a function of the guest TSC (pvti_src). (This ioctl may not
+   succeed if the host and guest TSCs are not consistent and well-behaved.)
 
 From the destination VMM process:
 
-4. Invoke the KVM_SET_CLOCK ioctl, providing the source nanoseconds from
-   kvmclock (guest_src) and CLOCK_REALTIME (host_src) in their respective
-   fields.  Ensure that the KVM_CLOCK_REALTIME flag is set in the provided
-   structure.
+4. Invoke the KVM_SET_TSC_KHZ ioctl to set the scaled frequency of the
+   guest's TSC (freq) — either on the VM before creating the vCPUs, or
+   on each vCPU after creating it (as the exemplar test does).
+
+5. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (host_tsc_dst) and
+   host CLOCK_REALTIME nanoseconds (time_dst) at a given moment (Tdst),
+   again checking KVM_CLOCK_HOST_TSC in the returned flags.
+
+6. Calculate the number of nanoseconds elapsed between Tsrc and Tdst:
+
+   ΔT = time_dst - time_src
+
+7. As each vCPU[i] is created:
+
+   a. Read the KVM_VCPU_TSC_SCALE attribute to record the guest TSC scaling
+      ratio (ratio_dst[i], frac_bits_dst[i]).
+
+   b. Calculate the intended guest TSC value at time Tdst, taking care
+      with the units (ΔT is in nanoseconds; freq, as set by
+      KVM_SET_TSC_KHZ, is in kHz):
+
+      tsc_dst[i] = tsc_src[i] + (ΔT * freq[i] / 10^6)
 
-   KVM will advance the VM's kvmclock to account for elapsed time since
-   recording the clock values.  Note that this will cause problems in
-   the guest (e.g., timeouts) unless CLOCK_REALTIME is synchronized
-   between the source and destination, and a reasonably short time passes
-   between the source pausing the VMs and the destination executing
-   steps 4-7.
+   c. Use host_tsc_dst and the scaling factors to calculate this vCPU's
+      raw scaled TSC at time Tdst without offsetting:
+
+      raw_dst[i] = ((host_tsc_dst * ratio_dst[i]) >> frac_bits_dst[i])
+
+   d. Calculate ofs_dst[i] = tsc_dst[i] - raw_dst[i] and set the resulting
+      offset using the KVM_VCPU_TSC_OFFSET attribute.
+
+8. If pvti_src was provided, invoke the KVM_SET_CLOCK_GUEST ioctl on the boot
+   vCPU to restore the KVM clock as a precise function of the guest TSC.
+
+9. If KVM_SET_CLOCK_GUEST was not available or failed (e.g. because the
+   master clock is not active), fall back to the KVM_SET_CLOCK ioctl,
+   providing the source nanoseconds from kvmclock (guest_src) and
+   CLOCK_REALTIME (time_src) in their respective fields. Ensure that the
+   KVM_CLOCK_REALTIME flag is set in the provided structure.
+
+   KVM will restore the VM's kvmclock, accounting for elapsed time since
+   the clock values were recorded. Note that this will cause problems in
+   the guest (e.g., timeouts) unless CLOCK_REALTIME is synchronized between
+   the source and destination, and a reasonably short time passes between
+   the source pausing the VMs and the destination resuming them.
+   Due to the KVM_[SG]ET_CLOCK API using CLOCK_REALTIME instead of
+   CLOCK_TAI, leap seconds during the migration may also introduce errors.
+
+4.2 ATTRIBUTE: KVM_VCPU_TSC_SCALE
+---------------------------------
+
+:Parameters: struct kvm_vcpu_tsc_scale
+
+Returns:
+
+	 ======= ======================================
+	 -EFAULT Error writing the result to the
+		 provided address.
+	 -ENXIO  Attribute not supported (no TSC scaling)
+	 -EINVAL Invalid request to write the attribute
+	 ======= ======================================
 
-5. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (tsc_dest) and
-   kvmclock nanoseconds (guest_dest).
+This read-only attribute reports the guest's TSC scaling factor, in the form
+of a fixed-point number represented by the following structure::
 
-6. Adjust the guest TSC offsets for every vCPU to account for (1) time
-   elapsed since recording state and (2) difference in TSCs between the
-   source and destination machine:
+  struct kvm_vcpu_tsc_scale {
+	__u64 tsc_ratio;
+	__u64 tsc_frac_bits;
+  };
 
-   ofs_dst[i] = ofs_src[i] -
-     (guest_src - guest_dest) * freq +
-     (tsc_src - tsc_dest)
+The tsc_frac_bits field indicates the location of the fixed point, such that
+host TSC values are converted to guest TSC using the formula:
 
-   ("ofs[i] + tsc - guest * freq" is the guest TSC value corresponding to
-   a time of 0 in kvmclock.  The above formula ensures that it is the
-   same on the destination as it was on the source).
+  guest_tsc = ((host_tsc * tsc_ratio) >> tsc_frac_bits) + offset
 
-7. Write the KVM_VCPU_TSC_OFFSET attribute for every vCPU with the
-   respective value derived in the previous step.
+Userspace can use this to precisely calculate the guest TSC from the host
+TSC at any given moment. This is needed for accurate migration of guests,
+as described in the documentation for the KVM_VCPU_TSC_OFFSET attribute.
diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
index 9e3cdc3adb65..f8274d8e471d 100644
--- a/arch/x86/include/uapi/asm/kvm.h
+++ b/arch/x86/include/uapi/asm/kvm.h
@@ -964,6 +964,12 @@ struct kvm_hyperv_eventfd {
 /* for KVM_{GET,SET,HAS}_DEVICE_ATTR */
 #define KVM_VCPU_TSC_CTRL 0 /* control group for the timestamp counter (TSC) */
 #define   KVM_VCPU_TSC_OFFSET 0 /* attribute for the TSC offset */
+#define   KVM_VCPU_TSC_SCALE  1 /* attribute for TSC scaling factor */
+
+struct kvm_vcpu_tsc_scale {
+	__u64 tsc_ratio;
+	__u64 tsc_frac_bits;
+};
 
 /* x86-specific KVM_EXIT_HYPERCALL flags. */
 #define KVM_EXIT_HYPERCALL_LONG_MODE	_BITULL(0)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index bdc838b12fdc..17544b3cc035 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3396,6 +3396,9 @@ static int kvm_arch_tsc_has_attr(struct kvm_vcpu *vcpu,
 	case KVM_VCPU_TSC_OFFSET:
 		r = 0;
 		break;
+	case KVM_VCPU_TSC_SCALE:
+		r = kvm_caps.has_tsc_control ? 0 : -ENXIO;
+		break;
 	default:
 		r = -ENXIO;
 	}
@@ -3416,6 +3419,21 @@ static int kvm_arch_tsc_get_attr(struct kvm_vcpu *vcpu,
 			break;
 		r = 0;
 		break;
+	case KVM_VCPU_TSC_SCALE: {
+		struct kvm_vcpu_tsc_scale scale;
+
+		r = -ENXIO;
+		if (!kvm_caps.has_tsc_control)
+			break;
+
+		scale.tsc_ratio = vcpu->arch.l1_tsc_scaling_ratio;
+		scale.tsc_frac_bits = kvm_caps.tsc_scaling_ratio_frac_bits;
+		r = -EFAULT;
+		if (copy_to_user(uaddr, &scale, sizeof(scale)))
+			break;
+		r = 0;
+		break;
+	}
 	default:
 		r = -ENXIO;
 	}
@@ -3455,6 +3473,9 @@ static int kvm_arch_tsc_set_attr(struct kvm_vcpu *vcpu,
 		r = 0;
 		break;
 	}
+	case KVM_VCPU_TSC_SCALE:
+		r = kvm_caps.has_tsc_control ? -EINVAL : -ENXIO;
+		break;
 	default:
 		r = -ENXIO;
 	}
diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 888a7530a280..18605318860e 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -113,6 +113,7 @@ TEST_GEN_PROGS_x86 += x86/pmu_counters_test
 TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
 TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
 TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
+TEST_GEN_PROGS_x86 += x86/pvclock_migration_test
 TEST_GEN_PROGS_x86 += x86/save_restore_pf_stress_test
 TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
 TEST_GEN_PROGS_x86 += x86/set_sregs_test
diff --git a/tools/testing/selftests/kvm/x86/pvclock_migration_test.c b/tools/testing/selftests/kvm/x86/pvclock_migration_test.c
new file mode 100644
index 000000000000..c4a64b6a2e42
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/pvclock_migration_test.c
@@ -0,0 +1,520 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test KVM clock precision across simulated live migration.
+ *
+ * Verifies that the documented TSC migration procedure (using
+ * KVM_VCPU_TSC_OFFSET, KVM_VCPU_TSC_SCALE, KVM_GET_CLOCK, and
+ * KVM_SET_CLOCK_GUEST) preserves the kvmclock's relationship to
+ * CLOCK_MONOTONIC_RAW — including for vCPUs whose TSCs are offset
+ * from one another (same frequency), which no longer disables the
+ * master clock.
+ *
+ * The test:
+ * 1. Creates a VM with 3 vCPUs, runs each guest to enable kvmclock
+ * 2. Applies divergent TSC offsets to vCPUs 1 and 2
+ * 3. Verifies the master clock remains active (KVM_CLOCK_HOST_TSC),
+ *    that the guests see PVCLOCK_TSC_STABLE_BIT clear, and that all
+ *    vCPUs' pvclocks agree on "now" despite the divergent offsets
+ * 4. Does a PTP-like ABA measurement of kvmclock vs CLOCK_MONOTONIC_RAW
+ * 5. Follows the documented migration procedure (same host, 1s pause),
+ *    migrating each vCPU's TSC individually but setting the KVM clock
+ *    only once, via KVM_SET_CLOCK_GUEST on vCPU0
+ * 6. Does the same ABA measurement on the destination VM
+ * 7. Verifies the kvmclock-vs-monotonic delta is preserved, the
+ *    cross-vCPU TSC deltas are preserved, and all destination vCPUs'
+ *    pvclocks again agree on "now"
+ */
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+#define KVMCLOCK_GPA	0xc0000000ULL
+#define NR_VCPUS	3
+
+/*
+ * Divergent TSC offsets applied to vCPUs 1 and 2, in guest cycles.
+ * Roughly +1s and -0.5s at 1.5 GHz — large enough that any failure
+ * to account for them is orders of magnitude outside the ABA bounds.
+ */
+static const s64 tsc_deltas[NR_VCPUS] = { 0, 1500000000LL, -750000000LL };
+
+static void guest_code(int idx)
+{
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, (KVMCLOCK_GPA + idx * PAGE_SIZE) | 1);
+
+	for (;;)
+		GUEST_SYNC(0);
+}
+
+static u64 read_kvmclock_ns(struct kvm_vm *vm)
+{
+	struct kvm_clock_data data = {};
+
+	vm_get_clock(vm, &data);
+	return data.clock;
+}
+
+static u64 pvclock_read_cycles(struct pvclock_vcpu_time_info *src,
+				    u64 tsc)
+{
+	u64 delta = tsc - src->tsc_timestamp;
+	u64 ns;
+
+	if (src->tsc_shift >= 0)
+		delta <<= src->tsc_shift;
+	else
+		delta >>= -(s32)src->tsc_shift;
+
+	ns = (unsigned __int128)delta * src->tsc_to_system_mul >> 32;
+	return src->system_time + ns;
+}
+
+/*
+ * ABA measurement: read CLOCK_MONOTONIC_RAW, kvmclock, CLOCK_MONOTONIC_RAW.
+ * Repeat 3 times, keep the reading with the smallest spread.
+ */
+static void aba_reading(struct kvm_vm *vm, u64 *lo, u64 *kvm_ns,
+			u64 *hi)
+{
+	u64 best_spread = UINT64_MAX;
+	int i;
+
+	for (i = 0; i < 3; i++) {
+		struct timespec ts1, ts2;
+		u64 m1, m2, clk;
+
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts1);
+		clk = read_kvmclock_ns(vm);
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts2);
+
+		m1 = ts1.tv_sec * 1000000000ULL + ts1.tv_nsec;
+		m2 = ts2.tv_sec * 1000000000ULL + ts2.tv_nsec;
+
+		if (m2 - m1 < best_spread) {
+			best_spread = m2 - m1;
+			*lo = m1;
+			*kvm_ns = clk;
+			*hi = m2;
+		}
+	}
+}
+
+static struct kvm_vm *create_vm(struct kvm_vcpu **vcpus, u32 freq_khz)
+{
+	struct kvm_vm *vm;
+	int i;
+
+	vm = vm_create_with_vcpus(NR_VCPUS, guest_code, vcpus);
+
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, NR_VCPUS, 0);
+	virt_map(vm, KVMCLOCK_GPA, KVMCLOCK_GPA, NR_VCPUS);
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_args_set(vcpus[i], 1, i);
+		/* Set guest TSC frequency (may trigger scaling) */
+		vcpu_ioctl(vcpus[i], KVM_SET_TSC_KHZ,
+			   (void *)(unsigned long)freq_khz);
+	}
+	return vm;
+}
+
+static void run_to_sync(struct kvm_vcpu *vcpu)
+{
+	struct ucall uc;
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+}
+
+/*
+ * Compute a vCPU's guest TSC for a given host TSC value, using the
+ * vCPU's scale and offset as saved from KVM_VCPU_TSC_SCALE/OFFSET.
+ */
+static u64 host_to_guest_tsc(struct kvm_vcpu_tsc_scale *scale, u64 ofs,
+			     u64 host_tsc)
+{
+	if (scale->tsc_frac_bits)
+		return ((unsigned __int128)host_tsc * scale->tsc_ratio
+			>> scale->tsc_frac_bits) + ofs;
+	return host_tsc + ofs;
+}
+
+/*
+ * Verify that all vCPUs agree on the KVM clock, despite having
+ * different TSC offsets. Take one atomic {host_tsc, kvmclock} pair
+ * for the whole VM, derive each vCPU's guest TSC at that instant,
+ * and evaluate each vCPU's pvti at its own guest TSC. All must give
+ * the same nanosecond value (same instant, same clock), and must
+ * match what KVM_GET_CLOCK itself said.
+ */
+static void check_cross_vcpu_coherence(struct kvm_vm *vm,
+				       struct kvm_vcpu **vcpus,
+				       struct pvclock_vcpu_time_info *pvtis,
+				       const char *what)
+{
+	struct kvm_clock_data now = {};
+	u64 clk[NR_VCPUS];
+	int i;
+
+	vm_get_clock(vm, &now);
+	TEST_ASSERT(now.flags & KVM_CLOCK_HOST_TSC,
+		    "%s: master clock inactive with divergent TSC offsets",
+		    what);
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct kvm_vcpu_tsc_scale scale = {};
+		u64 ofs = vcpu_get_tsc_offset(vcpus[i]);
+		u64 guest_tsc;
+
+		vcpu_device_attr_get(vcpus[i], KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale);
+		guest_tsc = host_to_guest_tsc(&scale, ofs, now.host_tsc);
+		clk[i] = pvclock_read_cycles(&pvtis[i], guest_tsc);
+
+		TEST_ASSERT(!(pvtis[i].flags & PVCLOCK_TSC_STABLE_BIT),
+			    "%s: vCPU%d still advertises TSC_STABLE with divergent offsets",
+			    what, i);
+	}
+
+	for (i = 1; i < NR_VCPUS; i++) {
+		s64 d = (s64)(clk[i] - clk[0]);
+
+		pr_info("  %s: vCPU%d vs vCPU0 kvmclock delta %" PRId64 " ns\n",
+			what, i, d);
+		TEST_ASSERT(d >= -2 && d <= 2,
+			    "%s: vCPU%d kvmclock disagrees with vCPU0 by %" PRId64 " ns",
+			    what, i, d);
+	}
+
+	/* And all of them must agree with KVM_GET_CLOCK itself */
+	s64 d0 = (s64)(clk[0] - now.clock);
+	pr_info("  %s: vCPU0 pvclock vs KVM_GET_CLOCK delta %" PRId64 " ns\n",
+		what, d0);
+	TEST_ASSERT(d0 >= -2 && d0 <= 2,
+		    "%s: vCPU0 pvclock disagrees with KVM_GET_CLOCK by %" PRId64 " ns",
+		    what, d0);
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti_src[NR_VCPUS];
+	struct pvclock_vcpu_time_info pvti_dst_ioctl[NR_VCPUS];
+	struct kvm_clock_data clock_src, clock_dst;
+	struct kvm_vcpu_tsc_scale scale_src[NR_VCPUS], scale_dst;
+	struct kvm_vcpu *vcpus[NR_VCPUS];
+	struct kvm_vm *vm;
+	u64 mono_before, kvm_before, kvm_after;
+	s64 delta_before;
+	u64 ofs_src[NR_VCPUS], tsc_src[NR_VCPUS], tsc_dst, raw_dst;
+	u64 ofs_dst[NR_VCPUS];
+	u64 host_tsc_src, host_tsc_dst;
+	u64 time_src, time_dst;
+	s64 delta_t;
+	u32 freq_khz = 1500000; /* 1.5 GHz — forces TSC scaling */
+	int i, pass;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_TSC_CONTROL));
+
+	/* === SOURCE SIDE === */
+	pr_info("=== Source VM ===\n");
+	vm = create_vm(vcpus, freq_khz);
+
+	/* Run each guest to enable its kvmclock */
+	for (i = 0; i < NR_VCPUS; i++)
+		run_to_sync(vcpus[i]);
+
+	/*
+	 * Apply divergent TSC offsets. Same frequency, different offsets:
+	 * this must no longer disable the master clock, but must clear
+	 * PVCLOCK_TSC_STABLE_BIT.
+	 */
+	for (i = 1; i < NR_VCPUS; i++)
+		vcpu_set_tsc_offset(vcpus[i],
+				    vcpu_get_tsc_offset(vcpus[i]) + tsc_deltas[i]);
+
+	/*
+	 * Re-run each vCPU twice. The offset writes leave a masterclock
+	 * update pending on vCPUs 1 and 2; the first pass processes it and
+	 * broadcasts KVM_REQ_CLOCK_UPDATE to every vCPU, and the second
+	 * pass has each vCPU rewrite its guest-visible pvclock page with
+	 * PVCLOCK_TSC_STABLE_BIT now clear. A single pass would leave
+	 * vCPU0's page stale: its rewrite happens before the broadcast.
+	 */
+	for (pass = 0; pass < 2; pass++)
+		for (i = 0; i < NR_VCPUS; i++)
+			run_to_sync(vcpus[i]);
+
+	/* Fetch each vCPU's pvti and verify cross-vCPU coherence */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_get_clock_guest(vcpus[i], &pvti_src[i]);
+	check_cross_vcpu_coherence(vm, vcpus, pvti_src, "source");
+
+	/* The guest-visible pvti pages must also show TSC_STABLE clear */
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct pvclock_vcpu_time_info *pvti =
+			addr_gpa2hva(vm, KVMCLOCK_GPA + i * getpagesize());
+
+		TEST_ASSERT(!(pvti->flags & PVCLOCK_TSC_STABLE_BIT),
+			    "vCPU%d guest pvti advertises TSC_STABLE with divergent offsets", i);
+	}
+
+	/* ABA measurement: kvmclock vs CLOCK_MONOTONIC_RAW */
+	u64 src_mono_lo, src_mono_hi;
+	aba_reading(vm, &src_mono_lo, &kvm_before, &src_mono_hi);
+	mono_before = (src_mono_lo + src_mono_hi) / 2;
+	delta_before = (s64)(kvm_before - mono_before);
+	pr_info("  kvmclock - MONOTONIC_RAW = %" PRId64 " ns (±%" PRIu64 " ns)\n",
+		delta_before, (src_mono_hi - src_mono_lo) / 2);
+
+	/* Step 1: KVM_GET_CLOCK for atomic {host_tsc, realtime} */
+	memset(&clock_src, 0, sizeof(clock_src));
+	clock_src.flags = KVM_CLOCK_REALTIME;
+	vm_get_clock(vm, &clock_src);
+	TEST_ASSERT(clock_src.flags & KVM_CLOCK_HOST_TSC,
+		    "KVM_GET_CLOCK did not provide host_tsc (no master clock?)");
+	host_tsc_src = clock_src.host_tsc;
+	time_src = clock_src.realtime;
+
+	/* Step 2: Save each vCPU's TSC offset and scale */
+	for (i = 0; i < NR_VCPUS; i++) {
+		ofs_src[i] = vcpu_get_tsc_offset(vcpus[i]);
+		memset(&scale_src[i], 0, sizeof(scale_src[i]));
+		vcpu_device_attr_get(vcpus[i], KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale_src[i]);
+
+		/* Compute this vCPU's guest TSC at Tsrc */
+		tsc_src[i] = host_to_guest_tsc(&scale_src[i], ofs_src[i],
+					       host_tsc_src);
+		pr_info("  vCPU%d: TSC freq=%u kHz, offset=%" PRId64 "\n",
+			i, freq_khz, (s64)ofs_src[i]);
+	}
+
+	/* Step 3: KVM_GET_CLOCK_GUEST (already fetched above as pvti_src[]) */
+
+	kvm_vm_release(vm);
+
+	/* === PAUSE (simulate migration) === */
+	pr_info("=== Pausing 1 second ===\n");
+	sleep(1);
+
+	/* === DESTINATION SIDE === */
+	pr_info("=== Destination VM ===\n");
+	/* Step 4: create + KVM_SET_TSC_KHZ (in create_vm) */
+	vm = create_vm(vcpus, freq_khz);
+
+	/* Step 5: KVM_GET_CLOCK for atomic {host_tsc, realtime} pair.
+	 * Master clock is active from VM creation.
+	 */
+	memset(&clock_dst, 0, sizeof(clock_dst));
+	vm_get_clock(vm, &clock_dst);
+	TEST_ASSERT(clock_dst.flags & KVM_CLOCK_HOST_TSC,
+		    "KVM_GET_CLOCK did not provide host_tsc (no master clock?)");
+	host_tsc_dst = clock_dst.host_tsc;
+	time_dst = clock_dst.realtime;
+
+	/* Step 6: ΔT */
+	delta_t = (s64)(time_dst - time_src);
+
+	/* Step 7: Compute and set each vCPU's destination offset */
+	memset(&scale_dst, 0, sizeof(scale_dst));
+	vcpu_device_attr_get(vcpus[0], KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_SCALE,
+			     &scale_dst);
+
+	if (scale_dst.tsc_frac_bits)
+		raw_dst = (unsigned __int128)host_tsc_dst * scale_dst.tsc_ratio
+			  >> scale_dst.tsc_frac_bits;
+	else
+		raw_dst = host_tsc_dst;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		tsc_dst = tsc_src[i] + (u64)((s64)freq_khz * delta_t / 1000000LL);
+		ofs_dst[i] = tsc_dst - raw_dst;
+		vcpu_set_tsc_offset(vcpus[i], ofs_dst[i]);
+	}
+
+	/*
+	 * The cross-vCPU TSC relationships must be preserved exactly:
+	 * every vCPU's offset moved by the same amount, so the deltas
+	 * between them are untouched by the CLOCK_REALTIME imprecision.
+	 */
+	for (i = 1; i < NR_VCPUS; i++) {
+		s64 src_delta = (s64)(ofs_src[i] - ofs_src[0]);
+		s64 dst_delta = (s64)(ofs_dst[i] - ofs_dst[0]);
+
+		pr_info("  vCPU%d-vCPU0 TSC delta: src %" PRId64
+			", dst %" PRId64 " cycles\n", i, src_delta, dst_delta);
+		TEST_ASSERT(src_delta == dst_delta,
+			    "vCPU%d TSC delta not preserved: %" PRId64 " -> %" PRId64,
+			    i, src_delta, dst_delta);
+	}
+
+	/*
+	 * The TSC offset delta introduced by using CLOCK_REALTIME to
+	 * estimate elapsed time. On same host, the correct offset is
+	 * ofs_src; the difference is the CLOCK_REALTIME-vs-TSC error.
+	 */
+	s64 tsc_ofs_delta = (s64)(ofs_dst[0] - ofs_src[0]);
+	s64 tsc_ofs_delta_ns = tsc_ofs_delta * 1000000LL / freq_khz;
+	pr_info("  Destination TSC offset=%" PRId64
+		", imprecision from CLOCK_REALTIME: %" PRId64 " cycles = %"
+		PRId64 " ns\n", (s64)ofs_dst[0], tsc_ofs_delta, tsc_ofs_delta_ns);
+
+	/*
+	 * Step 8: KVM_SET_CLOCK_GUEST — once, via vCPU0. The other
+	 * vCPUs' clocks must come out right too: the KVM clock is
+	 * VM-wide, and each vCPU's pvti relates it to that vCPU's
+	 * own TSC.
+	 */
+	vcpu_set_clock_guest(vcpus[0], &pvti_src[0]);
+
+	/* Run each guest to write its pvclock page on the destination */
+	for (i = 0; i < NR_VCPUS; i++)
+		run_to_sync(vcpus[i]);
+
+	/* Verify cross-vCPU coherence on the destination */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_get_clock_guest(vcpus[i], &pvti_dst_ioctl[i]);
+	check_cross_vcpu_coherence(vm, vcpus, pvti_dst_ioctl, "dest");
+
+	/* ABA measurement on destination */
+	u64 mono_lo, mono_hi;
+	aba_reading(vm, &mono_lo, &kvm_after, &mono_hi);
+
+	/*
+	 * The kvmclock is tied to the guest TSC via SET_CLOCK_GUEST.
+	 * The guest TSC is offset from the correct value by tsc_ofs_delta_ns
+	 * (due to CLOCK_REALTIME imprecision). So the kvmclock should be
+	 * offset from CLOCK_MONOTONIC_RAW by exactly:
+	 *   (original delta) + tsc_ofs_delta_ns
+	 *
+	 * The "original delta" has uncertainty from the source ABA spread,
+	 * and the measurement has uncertainty from the destination ABA spread.
+	 * Verify the expected value falls within the combined bounds.
+	 */
+	s64 delta_before_lo = (s64)(kvm_before - src_mono_hi);
+	s64 delta_before_hi = (s64)(kvm_before - src_mono_lo);
+	s64 expected_lo = delta_before_lo + tsc_ofs_delta_ns;
+	s64 expected_hi = delta_before_hi + tsc_ofs_delta_ns;
+	s64 actual_lo = (s64)(kvm_after - mono_hi);
+	s64 actual_hi = (s64)(kvm_after - mono_lo);
+
+	/* Show the shift relative to the source measurement */
+	s64 expected_mid = tsc_ofs_delta_ns;
+	s64 expected_err = (s64)(src_mono_hi - src_mono_lo) / 2;
+	s64 actual_mid = ((actual_lo + actual_hi) / 2) - delta_before;
+	s64 actual_err = (s64)(mono_hi - mono_lo) / 2;
+	pr_info("  kvmclock-mono shift: expected %" PRId64 " ns (±%" PRId64
+		"), measured %" PRId64 " ns (±%" PRId64 ")\n",
+		expected_mid, expected_err, actual_mid, actual_err);
+
+	/* The ranges must overlap */
+	TEST_ASSERT(expected_hi >= actual_lo && expected_lo <= actual_hi,
+		    "Ranges don't overlap: expected [%" PRId64 ", %" PRId64
+		    "] measured [%" PRId64 ", %" PRId64 "]",
+		    expected_lo, expected_hi, actual_lo, actual_hi);
+
+	/*
+	 * Direct pvclock verification: read each destination pvclock page
+	 * (as written for the guest) and verify that computing kvmclock
+	 * from the source pvti and the destination pvti at the same
+	 * instant gives the same result, for every vCPU.
+	 *
+	 * Get one atomic {host_tsc, kvmclock} pair, derive each vCPU's
+	 * guest TSC at that instant, then compute kvmclock from both
+	 * pvclock structs. The source pvti evaluates at the *migrated*
+	 * guest TSC, i.e. shifted by the CLOCK_REALTIME imprecision that
+	 * was baked into the offsets — which is exactly what "the clock
+	 * follows the TSC" means.
+	 */
+	struct kvm_clock_data clock_now = {};
+	vm_get_clock(vm, &clock_now);
+	pr_info("  KVM_GET_CLOCK:  %" PRIu64 " ns\n", (u64)clock_now.clock);
+
+	u64 host_tsc_now = clock_now.host_tsc;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct pvclock_vcpu_time_info *pvti_page =
+			addr_gpa2hva(vm, KVMCLOCK_GPA + i * getpagesize());
+		u64 guest_tsc_now = host_to_guest_tsc(&scale_dst, ofs_dst[i],
+						      host_tsc_now);
+		u64 clk_from_src = pvclock_read_cycles(&pvti_src[i],
+						       guest_tsc_now);
+		u64 clk_from_dst = pvclock_read_cycles(pvti_page,
+						       guest_tsc_now);
+		s64 pvclock_delta = (s64)(clk_from_src - clk_from_dst);
+
+		pr_info("  vCPU%d pvclock direct: src=%" PRIu64 " dst=%" PRIu64
+			" delta=%" PRId64 " ns\n", i, clk_from_src,
+			clk_from_dst, pvclock_delta);
+
+		TEST_ASSERT(pvclock_delta >= -2 && pvclock_delta <= 2,
+			    "vCPU%d pvclock src vs dst disagree by %" PRId64 " ns",
+			    i, pvclock_delta);
+	}
+
+	/*
+	 * Tight ABA: compare pvclock_read() directly (no ioctl) against
+	 * CLOCK_MONOTONIC_RAW. The spread should be much smaller since
+	 * there's no syscall between the two clock_gettime calls — just
+	 * rdtsc + userspace mul/shift.
+	 */
+	struct pvclock_vcpu_time_info *pvti0 = addr_gpa2hva(vm, KVMCLOCK_GPA);
+	u64 tight_mono_lo = 0, tight_mono_hi = 0, tight_kvm = 0;
+	u64 tight_best_spread = UINT64_MAX;
+	for (i = 0; i < 3; i++) {
+		struct timespec ts1, ts2;
+		u64 m1, m2, tsc, clk;
+
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts1);
+		tsc = rdtsc();
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts2);
+
+		m1 = ts1.tv_sec * 1000000000ULL + ts1.tv_nsec;
+		m2 = ts2.tv_sec * 1000000000ULL + ts2.tv_nsec;
+
+		/* Scale host TSC to vCPU0's guest TSC */
+		tsc = host_to_guest_tsc(&scale_dst, ofs_dst[0], tsc);
+
+		clk = pvclock_read_cycles(pvti0, tsc);
+
+		if (m2 - m1 < tight_best_spread) {
+			tight_best_spread = m2 - m1;
+			tight_mono_lo = m1;
+			tight_mono_hi = m2;
+			tight_kvm = clk;
+		}
+	}
+	pr_info("  Tight ABA spread: %" PRIu64 " ns (best of 3)\n", tight_best_spread);
+
+	s64 tight_expected_lo = delta_before_lo + tsc_ofs_delta_ns;
+	s64 tight_expected_hi = delta_before_hi + tsc_ofs_delta_ns;
+	s64 tight_actual_lo = (s64)(tight_kvm - tight_mono_hi);
+	s64 tight_actual_hi = (s64)(tight_kvm - tight_mono_lo);
+	s64 tight_actual_mid = ((tight_actual_lo + tight_actual_hi) / 2) - delta_before;
+	s64 tight_actual_err = (s64)(tight_mono_hi - tight_mono_lo) / 2;
+
+	pr_info("  Tight kvmclock-mono shift: expected %" PRId64
+		" ns (±%" PRId64 "), measured %" PRId64 " ns (±%" PRId64 ")\n",
+		expected_mid, expected_err, tight_actual_mid, tight_actual_err);
+
+	TEST_ASSERT(tight_expected_hi >= tight_actual_lo &&
+		    tight_expected_lo <= tight_actual_hi,
+		    "Tight ABA ranges don't overlap");
+
+	kvm_vm_release(vm);
+	pr_info("PASS: kvmclock offset matches TSC delta from CLOCK_REALTIME"
+		" (%" PRId64 " ns) within ABA bounds\n", tsc_ofs_delta_ns);
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475020.1682015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjR-0000HN-F1; Thu, 05 Nov 2026 15:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475020.1682015; Thu, 05 Nov 2026 15:50:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjQ-0000Bf-2R; Thu, 05 Nov 2026 15:50:28 +0000
Received: by outflank-mailman (input) for mailman id 1475020;
 Thu, 05 Nov 2026 15:50:12 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xOzj9-0005UO-Sz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzj9-00ErBr-8C; Thu, 05 Nov 2026 16:50:11 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a5-e002-0a2a0a5209dd-0a2a450ce7f6-4
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:01 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+4c1d8b341febb4002902+8474+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6aeca5a8-f479-0a2a450c0019-5a9b5cc79a62-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:00 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOziw-00000003Bny-29bb; Thu, 05 Nov 2026 15:49:58 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOziu-0000000AazR-01Rb;
 Thu, 05 Nov 2026 15:49:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=WVtfluigLHm+qCIoMwJls4zd6p70KJsFBBAO4EnPbSY=; b=IPxuipauPh1uxvLe8CbOPYLS4J
	vfXdV83+56i8IGOPlQ1wOVhKkuA4BlHApMOlXaBrgLCP4Ls5amnO9shAQCuonKgetQda59SU4s4Fc
	Upx0kZ2G5CVCxQd6ZlV+KzNcIozzfXizorRjZP18jrkGACtgQmR9tV99a1Z/fNVf0NHzj/rKsEIU2
	/uobNRbQcM/wIpdn2fIYxt8k1cJcBy+J96/UH6V7Dx9LdQhJfXzuUsJ8ALytrIMiB80EpKGBnJrOu
	BYX8Qfgw5WkCxv30CoQjKQ6BRoirOcT6Ihrx4OLh3ZZEhNA6vShpKTD9afezLI5K2d2ks4ozk/AbJ
	3zdwgRMA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 11/23] KVM: x86: Activate master clock from kvm_arch_init_vm()
Date: Thu,  5 Nov 2026 07:49:42 -0800
Message-ID: <20261105154955.2525419-12-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d25034/1793893801-01EC2A5B-8BB243DE/0/0
X-purgate-type: clean
X-purgate-size: 6887

From: David Woodhouse <dwmw@amazon.co.uk>

Initialize the TSC generation and master clock state at VM creation
time, rather than relying on kvm_update_masterclock() from
kvm_arch_vcpu_postcreate().

Set cur_tsc_generation=1, cur_tsc_khz, cur_tsc_scaling_ratio,
cur_tsc_offset, cur_tsc_nsec and kvmclock_offset from an atomic
ktime/TSC snapshot. This establishes a coherent epoch so that:

 - The first vCPU synchronizes to the existing generation (getting
   the pre-computed TSC offset) rather than computing its own.
 - pvclock_update_vm_gtod_copy() succeeds immediately (no zero
   tsc_hz from uninitialized cur_tsc_scaling_ratio).
 - KVM_GET_CLOCK returns valid {host_tsc, realtime} fields as soon
   as any vCPU exists.
 - KVM_[GS]ET_CLOCK_GUEST works without a prior KVM_RUN.
 - No O(N) iteration of all vCPUs on each vCPU creation.

This replaces the KVM_REQ_MASTERCLOCK_UPDATE check and
kvm_update_masterclock() call in kvm_arch_vcpu_postcreate(), which
worked around the missing initialization. A masterclock refresh is
still performed (synchronously, so that it is valid even for userspace
which queries the clock before ever running a vCPU) when the first
vCPU is created, since the VM-creation snapshot can go stale while the
VM has no vCPUs: a clocksource change notifies only VMs with vCPUs,
and a change back to TSC leaves nothing to disagree with the stale
snapshot.

The generation's recorded offset in kvm_synchronize_tsc() can now only
be joined by a vCPU with the same scaling ratio it was recorded with:
the initial generation's offset is recorded with the default ratio
before any vCPU exists, and a vCPU with a different ratio opens a new
generation with its own offset, keeping the generation's ratio and
offset describing the same scaling domain.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 76 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 64 insertions(+), 12 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 940168528721..6dbdb60962fe 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1500,11 +1500,25 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *value, bool user_initiated)
 
 		data = kvm->arch.cur_tsc_write + delta;
 
-		if (!kvm_check_tsc_unstable())
-			offset = kvm->arch.cur_tsc_offset;
-		else
+		/*
+		 * The generation's offset can only be joined by a vCPU which
+		 * scales the TSC by the same ratio it was recorded with; the
+		 * initial generation's offset is recorded at VM creation
+		 * with the default ratio, before any vCPU exists. With a
+		 * different ratio, open a new generation (recording this
+		 * vCPU's own offset) rather than leave the generation's
+		 * ratio and offset describing different scaling domains.
+		 */
+		if (vcpu->arch.l1_tsc_scaling_ratio !=
+		    kvm->arch.cur_tsc_scaling_ratio) {
 			offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
-		matched = true;
+		} else {
+			if (!kvm_check_tsc_unstable())
+				offset = kvm->arch.cur_tsc_offset;
+			else
+				offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
+			matched = true;
+		}
 	}
 
 	__kvm_synchronize_tsc(vcpu, offset, data, ns, matched, user_initiated);
@@ -9645,8 +9659,15 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 		return;
 	vcpu_load(vcpu);
 	kvm_synchronize_tsc(vcpu, NULL, false);
-	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
+
+	/*
+	 * Refresh the VM-creation masterclock snapshot (see
+	 * kvm_arch_init_vm), synchronously so that it is valid even for
+	 * userspace which queries the clock before ever running a vCPU.
+	 */
+	if (vcpu->vcpu_idx == 0)
 		kvm_update_masterclock(vcpu->kvm, NULL);
+
 	vcpu_put(vcpu);
 
 	/* poll control enabled by default */
@@ -10065,6 +10086,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 {
 	int ret;
 	unsigned long flags;
+	u64 kvmclock_host_tsc;
+	s64 kvmclock_ns;
 
 	if (!kvm_is_vm_type_supported(type))
 		return -EINVAL;
@@ -10096,9 +10119,13 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	seqcount_raw_spinlock_init(&kvm->arch.pvclock_sc, &kvm->arch.tsc_write_lock);
 	ratelimit_state_init(&kvm->arch.kvmclock_update_rs, HZ, 10);
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
-	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
-	kvm->arch.all_vcpus_matched_freq = true;
 
+	kvm->arch.default_tsc_khz = max_tsc_khz ? : tsc_khz;
+	kvm->arch.apic_bus_cycle_ns = APIC_BUS_CYCLE_NS_DEFAULT;
+	kvm->arch.guest_can_read_msr_platform_info = true;
+	kvm->arch.enable_pmu = enable_pmu && !kvm->arch.has_protected_pmu;
+
+	kvm->arch.all_vcpus_matched_freq = true;
 	/*
 	 * Start with all (zero) vCPUs considered matched, so that a VM whose
 	 * vCPUs never reach kvm_track_tsc_matching() — notably when the guest
@@ -10106,16 +10133,41 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	 * returns early — is still eligible for PVCLOCK_TSC_STABLE_BIT.
 	 */
 	kvm->arch.all_vcpus_matched_tsc = true;
+	kvm->arch.cur_tsc_scaling_ratio = kvm_caps.default_tsc_scaling_ratio;
+	kvm->arch.cur_tsc_khz = kvm->arch.default_tsc_khz;
 
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
+
+	/*
+	 * Establish the initial TSC generation for synchronization logic.
+	 * The first vCPU will sync to this, starting its guest TSC at the
+	 * number of cycles elapsed since VM creation rather than at zero.
+	 * This ensures coherence with the kvmclock epoch (also set here),
+	 * and the master clock snapshot taken below is immediately valid.
+	 * It is refreshed again when the first vCPU is created, in case
+	 * the host clocksource changed (and changed back) in between:
+	 * pvclock_gtod_update_fn() does not notify a VM with no vCPUs.
+	 */
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&kvmclock_ns, &kvmclock_host_tsc))
+#endif
+	{
+		/*
+		 * If not simultaneous, we want the TSC to be zero slightly
+		 * *after* the kvmclock is zero.
+		 */
+		kvmclock_ns = get_kvmclock_base_ns();
+		kvmclock_host_tsc = rdtsc();
+	}
+	kvm->arch.cur_tsc_write = 0;
+	kvm->arch.cur_tsc_offset = -(s64)kvmclock_host_tsc;
+	kvm->arch.cur_tsc_nsec = kvmclock_ns;
+	kvm->arch.cur_tsc_generation = 1;
+	kvm->arch.kvmclock_offset = -kvmclock_ns;
+
 	pvclock_update_vm_gtod_copy(kvm);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 
-	kvm->arch.default_tsc_khz = max_tsc_khz ? : tsc_khz;
-	kvm->arch.apic_bus_cycle_ns = APIC_BUS_CYCLE_NS_DEFAULT;
-	kvm->arch.guest_can_read_msr_platform_info = true;
-	kvm->arch.enable_pmu = enable_pmu && !kvm->arch.has_protected_pmu;
-
 #if IS_ENABLED(CONFIG_HYPERV)
 	spin_lock_init(&kvm->arch.hv_root_tdp_lock);
 	kvm->arch.hv_root_tdp = INVALID_PAGE;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:50:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:50:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475022.1682024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjT-0000hm-Pg; Thu, 05 Nov 2026 15:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475022.1682024; Thu, 05 Nov 2026 15:50:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzjS-0000cT-DM; Thu, 05 Nov 2026 15:50:30 +0000
Received: by outflank-mailman (input) for mailman id 1475022;
 Thu, 05 Nov 2026 15:50:13 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xOzjA-0005hx-Um
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:50:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzjA-00GV2C-Ao; Thu, 05 Nov 2026 16:50:12 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca595-bab6-0a2a0a5309dd-0a2a4503a1a4-32
 for <multiple-recipients>; Thu, 05 Nov 2026 16:50:11 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a10630623031064a0c86+8474+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aeca5a6-fae8-0a2a45030019-5a9b3222c842-3
 for <multiple-recipients>; Thu, 05 Nov 2026 16:49:58 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xOzit-00000009aok-3qxv; Thu, 05 Nov 2026 15:49:56 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xOzit-0000000Aaz6-2zW0;
 Thu, 05 Nov 2026 15:49:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=g4JrrC8CXxAVCwMpD677FP/zgaKLwH1jqXxuO1KGNO4=; b=kWaXj1qWvUaOw0hNDCygBmKS1q
	K4x/XgGfqV1DVd9theLgpetcA5eckMwSt79lnDyhjAxtTsbYGNMFFiG3EeHXxNtVJZyf0R0XA0iqV
	TMh5OHPG0uTH9cp76KMrlbkAT1h1IhXnLfOdWF4S2sHAZwg7I1zxMdWlzayqJFvfIfXJKKqmYk6K3
	+x5YJbjcSX0nQUEry1LjqLlKWXOcYYOIbF+ATAWjDlywsZu3PI3Y8FTm7ZoWEcKXeCpKREwUqYHYM
	nJx78wIyYh/Uz0UyZiZwgNXPSrw6LrrJThCGA+U4rPevxsy0QWzf7QpflFuILzEQNV5fxnyHe3fCS
	0vxBljtg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v11 06/23] KVM: x86: Avoid gratuitous global clock updates
Date: Thu,  5 Nov 2026 07:49:37 -0800
Message-ID: <20261105154955.2525419-7-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261105154955.2525419-1-dwmw2@infradead.org>
References: <20261105154955.2525419-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-33051d/1793893803-6E6CE4E9-FEBBF768/0/0
X-purgate-type: clean
X-purgate-size: 2566

From: David Woodhouse <dwmw@amazon.co.uk>

Eliminate two sources of unnecessary KVM_REQ_GLOBAL_CLOCK_UPDATE:

1. kvm_write_system_time(): The global clock update was a workaround for
   ever-drifting clocks based on the host's CLOCK_MONOTONIC subject to
   NTP skew. Now that the KVM clock uses CLOCK_MONOTONIC_RAW, the clock
   does not drift with NTP corrections and there is no need to
   synchronize all vCPUs on boot or resume. Use KVM_REQ_CLOCK_UPDATE on
   the vCPU itself, and only when the clock is being enabled, not
   disabled.

2. kvm_arch_vcpu_load(): In master clock mode, migration between pCPUs
   does not require any clock update since the master clock reference is
   shared. Only request a local KVM_REQ_CLOCK_UPDATE for the vCPU's
   first-ever load (vcpu->cpu == -1) to generate initial pvclock params.
   In non-master-clock mode, keep the global update to synchronize all
   vCPUs.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/msrs.c | 7 ++++---
 arch/x86/kvm/x86.c  | 4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index e91650af44c2..a2dffa1c706f 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1285,14 +1285,15 @@ static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time,
 	}
 
 	vcpu->arch.time = system_time;
-	kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
 
 	/* we verify if the enable bit is set... */
-	if (system_time & 1)
+	if (system_time & 1) {
 		kvm_gpc_activate(&vcpu->arch.pv_time, system_time & ~1ULL,
 				 sizeof(struct pvclock_vcpu_time_info));
-	else
+		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
+	} else {
 		kvm_gpc_deactivate(&vcpu->arch.pv_time);
+	}
 
 	return;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4c3fce29e2af..e3618d82c099 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2702,11 +2702,13 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 		 * On a host with synchronized TSC, there is no need to update
 		 * kvmclock on vcpu->cpu migration
 		 */
-		if (!vcpu->kvm->arch.use_master_clock || vcpu->cpu == -1) {
+		if (!vcpu->kvm->arch.use_master_clock) {
 			if (__ratelimit(&vcpu->kvm->arch.kvmclock_update_rs))
 				kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
 			else
 				kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
+		} else if (vcpu->cpu == -1) {
+			kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
 		}
 
 		if (vcpu->cpu != cpu)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:56:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:56:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475183.1682054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzpQ-0007JO-TP; Thu, 05 Nov 2026 15:56:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475183.1682054; Thu, 05 Nov 2026 15:56:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzpQ-0007JH-Qh; Thu, 05 Nov 2026 15:56:40 +0000
Received: by outflank-mailman (input) for mailman id 1475183;
 Thu, 05 Nov 2026 15:56:38 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xOzpO-0007JB-Ub
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:56:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzpN-004OBc-Vn
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:56:37 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeca717-e002-0a2a0a5209dd-0a2a4505b582-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:56:37 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeca735-4cb1-0a2a45050019-d1558032e046-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:56:37 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a3517554f7so17515135e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 07:56:37 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b57373f7f1sm85043575e9.15.2026.11.05.07.56.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 07:56:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793894197; x=1794498997; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=KKA1X1TpOQEUg5qbNgjqdXJevgFe79vEWtHeQL6Wkrc=;
        b=Q7qtQ5+XQNUU4uho2hohKN6K0WT1DPU3yHVQZ88YK0IX/+iwu+dsYiVGX6N9yTngJK
         KmxNMRwTRG/G15YdLfxf3ETIJS2vlgz8lMrLKbAan9/8EM245mH4lX97wePtejI0dEcC
         bXvVmQqgd2LVDV7VkgEll+6BE1zEzkIqhDi8/j2hJDifNpryUBXEkyGr8DjtKgLXA9B6
         kk5dlOyTXvbQ3ioznn4RR/TA77sso3vCvaFu1ShO8MxOpEaq01xMMiKajx7/rJU3CIH1
         4WdoUX2nJ9VsaJkBkJw/vm0RKdy5IWXo9VF5gB4CJ2ERFAXc5+imyGKer1i0F42akYaL
         ByqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793894197; x=1794498997;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=KKA1X1TpOQEUg5qbNgjqdXJevgFe79vEWtHeQL6Wkrc=;
        b=a7dX0y8evVBUyCOlPJW8YEzZVzO/XkEgKKqIMfjqnk4dkLN7PQphxkycn69XB7bBQZ
         O1dxajOk49zBEUWspje5Cd3mew0PDePwkhvaC/S4JJIct/p2do6efGFgiazBwQURGa1v
         L2KbZ16oAe6y+F2tkuLDbZWFprkb89l9y9uFgKqBR8eXOfzmo1mzA7IEts2xso0isikG
         jQa07INgyoFKFlOZ+F6jjZc2GffkxZptMZLBj2t3BxiEHL5fk6s5ixniXz7mqnyAgdsI
         x6GOHpF0HLVGudANm59bTDYhPKZhsU+H4N3/WvC+WftFMaBxBJY/2M/OjIJnTvgFuyBP
         5m+Q==
X-Forwarded-Encrypted: i=1; AKwUvBza9c+zFOs8ShRCZBpyuXqHNOiMdMIgNAiEqQBT/D6RJFI9U51hyEivwo2wOSTwMdyRav8SY4DT+SY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+kNwPTJEbAArfDFEZ7r6ZXULiNZ1uL5BQ+AGj15c2j9MbliCwM
	kzt++qYzXiIBPOffsQnV7yx/UdIG1JMgvv2axvb6+4cB6fOKtlW0ckS1
X-Gm-Gg: AYBFou1KLHGumqebMX2Hp0rKpBQrUzaEDXuDn89wfrhWg+QNmhvpDjkoq+xaZ0P4V8y
	6l+YePMboTOQinZZRsJNsWUEG5sND2cG9jTzJ3q+7F4VSC+CghPRCTcl3/NRKhn+LyEYmDa+i9F
	0BcP9AHunDajm5W69/pf1nQ7/DEs26kahfPx7haFiieTIYtAMOdiZS3yVQj0CUilpahE/dd/D8K
	CW8l/eWuVUZ5436UytR1n+y1xWkIomfG8Z9dGx4GdKAqnpqwH5XeMyQI8ce60NQhfkmLrw+OX43
	dIOoZpI6dE47W9OTiT6HeVYM2iqmt5c0Ln5AJn1hmnRNVFaUDUgcmPOFn3sMKmEdZJsb04tJPdz
	FdUlS4upNxaDafwPY8/UdWggloato8eUw65RIyiDSusBW4ptXOdd4t0HhvHPFGqwBLwYGdX5eDF
	/1dYexxhS6z+VNPQ4sA++wOjKVW6Ux/LjF79l0x3F3BEi+MnAhCz2wE1a5ZC6m69YSuFXl6Hmi8
	uG9z+ycUh2QrdIgwFprGJmxU7Exbcer/IANNrtvLts5o9Gh20sfMzbf/NJ7zNaPnThJ7bIhG8rX
	CYBSJDr/VzUq5vytWbscgk3CCxGO3bJ4m7c85CB3s63cZRkb6Euh045mcGBZ374PBTedndpsJ9A
	U
X-Received: by 2002:a05:600c:8b2c:b0:4a2:5267:3cd4 with SMTP id 5b1f17b1804b1-4ac151a8c26mr459694345e9.3.1793894197241;
        Thu, 05 Nov 2026 07:56:37 -0800 (PST)
Message-ID: <8c2b7338-e65b-4d14-af62-9f300e2becb5@gmail.com>
Date: Thu, 5 Nov 2026 16:56:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/riscv: align header inclusion guards with
 CODING_STYLE
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Connor Davis <connojdavis@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 xen-devel@lists.xenproject.org
References: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
 <573590f0-1a94-4113-a76c-3ae644bebdff@suse.com>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <573590f0-1a94-4113-a76c-3ae644bebdff@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793894197-726B52A1-DEF470ED/10/78276251493
X-purgate-type: spam
X-purgate-size: 2015



On 11/5/26 4:44 PM, Jan Beulich wrote:
> On 05.11.2026 16:03, Oleksii Kurochko wrote:
>> Commit 7abea85c9f12 ("CODING_STYLE: Updated header guard
>> recommendations") changed the recommended naming of inclusion guards
>> for arch-specific headers to <arch>_<something>_H. Most RISC-V headers
>> still use the ASM__RISCV__<FILENAME>_H form required by the previous
>> rules, and a few use ASM_RISCV_<FILENAME>_H, which follows neither.
>>
>> Rename the guards to RISCV_<SOMETHING>_H. While doing so, also fix two
>> guards which don't match their file names: extable.h used
>> ASM__RISCV__ASM_EXTABLE_H and intc.h used the misspelt
>> ASM__RISCV__INTERRUPT_CONTOLLER_H. For riscv_encoding.h, don't repeat
>> the architecture name and use RISCV_ENCODING_H.
> 
> I'd recommend against that. If you want this tag, renamed the file as
> well. Otherwise stick to the naming rules.
> 
>> No functional change.
>>
>> Assisted-by: Claude-Code:claude-opus-5-5
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> With the above (and possibly also the below) adjustment(s)
> Acked-by: Jan Beulich <jbeulich@suse.com>
> Which way to make the adjustment you will need to indicate. Changing the
> tag identifier can be done while committing. If you want to rename the
> file, I could drop that one hunk from here while committing. Please
> indicate intentions.

I think I prefer then to follow the naming rules and name tag identifier 
as RISCV_RISCV_ENCODING_H.
> 
>> --- a/xen/arch/riscv/include/asm/vsbi.h
>> +++ b/xen/arch/riscv/include/asm/vsbi.h
>> @@ -1,7 +1,7 @@
>>   /* SPDX-License-Identifier:  GPL-2.0-only */
>>   
>> -#ifndef ASM_RISCV_VSBI_H
>> -#define ASM_RISCV_VSBI_H
>> +#ifndef RISCV_VSBI_H
>> +#define RISCV_VSBI_H
>>   
>>   struct cpu_user_regs;
>>   
> 
> I think at this occasion the #endif also wants to gain the usual comment.

Oh, missed that.

I will appreciate if it could be done during committing.

Thanks a lot!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 15:59:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 15:59:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475193.1682064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzsA-0008J3-9H; Thu, 05 Nov 2026 15:59:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475193.1682064; Thu, 05 Nov 2026 15:59:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xOzsA-0008Iw-6T; Thu, 05 Nov 2026 15:59:30 +0000
Received: by outflank-mailman (input) for mailman id 1475193;
 Thu, 05 Nov 2026 15:59:28 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@swg.vates.tech>)
 id 1xOzs8-0008Iq-3u
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 15:59:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xOzs7-004Oeo-Gm
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:59:27 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@swg.vates.tech>)
 id 6aeca7bd-bab6-0a2a0a5309dd-0a2a450be546-34
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:59:27 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@swg.vates.tech>)
 id 6aeca7df-b7e8-0a2a450b0019-b9ff1c129aa3-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 16:59:27 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1ac6fbbf5000403d.001 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 05 Nov 2026 15:59:26 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 7D06B823F4
 for <xen-devel@lists.xenproject.org>; Thu,  5 Nov 2026 16:59:25 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=v3pNtB1EAJfftu/oN6OZwk6BrgOe3HU1/3qAGLaEzxE=;
 h=from:subject:date:message-id:to:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=HuKUy/EO0q7/4Fo5maXmUtKOK6F4QdRpUrHoSHk93wzRc3g5+1Ivc2ojuyQhulSByJa2WeOK/
 7rl01yOvWk6mAD9Uh0F6/76RezJUQTrlrQP9o8apMgOAqaBY2zbB6wj/U+m86k45fwuJIm6yh7N
 wsrM29sdmzTdrE9Tq0L0rTUzPE1OAY57KPkXkhcj3NnIlTGGDteLz+1fFyiJ8qY2KRpE/0rbL3w
 I7siTsLtcSuYZHytdOUaqHgPgEj9CdS6VYQdRgLqmRDsqYrN9yuauO0M/3IsZuUCb30bxSmhHCM
 KgQR0yBsV5uf7YTYDzrNUO9ovWGw4WG4mMAhxN3uzhGA==
X-Zone-Loop: acf0734f203e638d955b6a48e111b941ee50e486ffe9
x-campaign-type: default
x-transaction-id: 4676f543-2aa1-4a67-a186-ef04117629bf
x-swg-uid: 01-e5aa996b-b282-4646-8008-36a7e8831cde
X-Mailer: Sweego
Message-ID:
 <1793894366.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@vates.tech>
x-swg-bid: 1793894366.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Thu, 5 Nov 2026 16:59:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/39] xen/riscv: implement APLIC-IMSIC-hart sync
 barrier for vCPU migration
To: xen-devel@lists.xenproject.org
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <2075cb10e5f6df787b29f2f087632c82b787a007.1790779209.git.oleksii.kurochko@gmail.com>
 <c77101fe-2505-4cdb-8520-52f92a1c668d@gmail.com>
 <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
 <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
 <1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@vates.tech>
 <1ff766a5-3d49-45fb-9c46-d781cfaf4b6d@gmail.com>
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Content-Language: en-US
Autocrypt: addr=baptiste.le-duc@vates.tech; keydata=
 xsBNBGoPSX8BCADSuTikqW3FD4mscQugY1thRaKlIhcJ2G9YCWYXAlp+xosvTlzfIftOZZim
 750MLvyKtLPkQzB6TZtFZBiexSraaF/MdDKRTT5DcVa3r7ZnHgqMclWlPa4ioysS4yFcJanL
 cyNOT7HUFvIdirMMqiViedfYtS0GORPBBPVISD6ClMz3ecHIxqllfq9CHYQn4amKEfHmh6tm
 Rufo4Gjl6x8cUFZZlRQf+aCmUzdSPA0P5u3sueYH1uEz4w/jbD53MlKqzCvxUeOsfS2swTQA
 6mS9jIgOjNadpUTOzKfDHMgFirtG+HFpm45Nwp6KQizxgDVOfTnOfVHm5Gwqm3ETl9y5ABEB
 AAHNPEJhcHRpc3RlIExlIER1YyAoVmF0ZXMgWXViaWtleSkgPGJhcHRpc3RlLmxlLWR1Y0B2
 YXRlcy50ZWNoPsLAjgQTAQoAOBYhBGiSJ6HgW88MgT/gfu2Cu2XL9M6QBQJqD0l/AhsDBQsJ
 CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO2Cu2XL9M6QuMcH/ihiy/Nrxp919AmY0ENnc0NK
 r/2LDvW/hrX4FfbpxAmrGmQ7MU1aQTk0JDbfcsG8OYH6wO5sqnXb1gz50YrEdpfVSbHz5YTZ
 EhDIxE4g7NrvJZh3Qc0m0CAyjYTNHen7J6olVaCMjrOH7uRHUYZ7Pl3am9mZosfLmez/aWJO
 a6ihQxBXHI75brlk1teIURkep2kP7P0Flmfl4cA//saREoTF7GXCtjOSQk/xg8PP0Sswqp5G
 TdJptn3FQn6lAzfz0eFSYqkaoX2c2k1MDa7o+UX9cfGPL8ybMKnYkasLxck6eOWGJWf+YTrm
 ga/r0kBaftmqNDgt5nI2jNTDwZcT9g3OwE0Eag9JfwEIAM6IWbuBSvz+erv27oGDDpo8M6Fp
 dGUvft7v+WceHUfxiXpYFx9qgIU6XGy6y+3lJMAvNcltS8DuhioqMlfKRSYGKZlpliY65dNP
 557IuM4ctVJ+I9CVclvv9eahARQKgF5auLJAAlvGSmU+ufNvlwTUmLIRcrPviTmB6X5jJYc+
 fiNeyI0HcsgcN21C0r62tUCypuZ+vgEJXw2bx1V8mVGZKxdGJPh58QF6kRK+xmd4kEComLGV
 BeM6BcVOtEjDcGNC0tLhXb0p9g1Ys55iA8sd6s4WacyolW2J6rwmcOkjiWexWw1caYgIWAV1
 004M3gwUaOz0dGq2i7HQ0AiVfVkAEQEAAcLAdgQYAQoAIBYhBGiSJ6HgW88MgT/gfu2Cu2XL
 9M6QBQJqD0l/AhsMAAoJEO2Cu2XL9M6QovYH/RjstyL5o/V5K74ylBtz0j5t3pLX5JKbwApi
 656rGgDdqElImyvvZppNMl/mgHNzvxmfFAhJXnSX9f1fqVEQKOGEhLUastnl/ssBiE5x7btM
 V0GAffxXbXJZbVv4b/DI+gVrOPc2YXlVwruapvTZNtD3hqPrkjrmq5WTtGR2loIVSe62hmh0
 BGD2Fy79b/hYWyBqhayPBEjwGW75u4/yn+Yqy1PgG3hIcvg7GSuT3akhHZSB2Mbguzcoyf9Q
 DJl6t33JxPRkkNrEdkPPmRlQCTSiUkVjKqMDF3jlINWsJ5t4jKFsNF91ksdw7aQgiX+tQIpE
 ugMC1NuNi5dDGip66bw=
In-Reply-To: <1ff766a5-3d49-45fb-9c46-d781cfaf4b6d@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793894365557
X-purgate-ID: tlsNG-42698a/1793894367-AAEDE9EA-8C363F8C/0/0
X-purgate-type: clean
X-purgate-size: 1402



On 11/5/26 4:51 PM, Oleksii Kurochko wrote:
> 
> 
> On 11/5/26 4:32 PM, Baptiste Le Duc wrote:
>> On 2026-11-05 15:21 +0100, Oleksii Kurochko wrote:
>>> [ ... 348 lines skipped ... ]
>>>> LGTM, but I wonder why, as I said in the original patch, sync_id is
>>>> really needed.
>>>>
>>>
>>> I think that I am not understand your response. Could you please
>>> re-phrase it?
>> I'm questionning the need of the sync_id field as it will always be
>> equal to imsic_cfg.nr_ids, couldn't we drop it?
>>
> 
> It's equal to nr_ids by choice rather than by necessity: which identity
> gets reserved is decided in a single place, imsic_parse_node(), and all
> the users (the genmsi write, the pending bit the barrier spins on, the
> limit on the APLIC sources and the ASSERT() in imsic_irq_enable()) refer
> to it by its role rather than as "the last identity".
> 
> Basically if one day someone will decide to come up with EIID allocator 
> instead of using static allocation then it will be harder to find a 
> places where to change.
> 
> So yes, it could be drooped but at the moment I think it is useful to 
> have separate field or ,at least, as an option in asm/imsic.h:
> 
> static inline unsigned int imsic_sync_id(const struct imsic_config *cfg)
> {
>      return cfg->nr_ids;
> }

I prefer this as it would save space in imsic_config struct.

> ~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 16:26:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 16:26:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475212.1682074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0II-0002Fq-Co; Thu, 05 Nov 2026 16:26:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475212.1682074; Thu, 05 Nov 2026 16:26:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0II-0002Fj-9G; Thu, 05 Nov 2026 16:26:30 +0000
Received: by outflank-mailman (input) for mailman id 1475212;
 Thu, 05 Nov 2026 16:26:29 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xP0IH-0002Fd-1V
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:26:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0IF-00Eddz-O7
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:26:27 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecae24-e002-0a2a0a5209dd-0a2a450c9796-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:26:27 +0100
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecae33-f479-0a2a450c0019-d155802dacef-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:26:27 +0100
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4a59100fa83so20681135e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:26:27 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56f0237aesm78573505e9.9.2026.11.05.08.26.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 08:26:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793895987; x=1794500787; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=BYSvNpGyoJGh7bHU68a8hS3u7Syc2l+JA2nju4G4sYY=;
        b=G7/oC7EwSAc6YMzz0H8lxl8XNA+i8bO0cwVQBVx48FznN+aJO22ZHUEcGvpW1k7biZ
         BVprIlittG1BeEZ6pYRahQcRKwqG7JKakIaRTr4YKKNWyq/NoVLHmazxV66xE0NxJYEA
         beNgxgczRUFzmvlteoX/lcPckZEYUQAgavWtaGhRDEg+XsYYsjGqsvDdQ4kq/f7JE4i0
         8/8KTVl0zQ9JF3a7atyL19wKKPn+vn6swV0/u5g94uT11NJH9+IQsBt8XK4W9ZjxAGPt
         Kcft9qkxj+V44klSBz/QEpYxpn5ojyMwf+FnyP/5ANl/BijFrHq2cUfJ24ubolQSUho6
         MBKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793895987; x=1794500787;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=BYSvNpGyoJGh7bHU68a8hS3u7Syc2l+JA2nju4G4sYY=;
        b=o4a9kA+GNfBQw5GGY0c/9/aDPRaIk71ugvuPudwQLeNFjL1n2KBQKg9SIJUNGAhgGS
         Ps+9aDWa9FlBSBIQcpnEzcetGG44Ac246S52mU2cLgvqD9YZV/c/fMJsIH53iOpIkaAG
         5f9fPTLaUxgB1nckg96yj5bW1365OKxUVm7CNWbvvat6aDzzqVSd4CbM4doTAzsyvXgp
         sorBDNl4eS8zWFaNqbQLJQ8oiMRBg0MlIs/y53G3N/BfIUSBjm98qR2ZYRyIXophHfd3
         dk2X1pHhwLClAjimm8gfnmw63AJSO513Pk8hCAMIIs0h0FemgMlk0+dNjAw6QE6Rp1rb
         tPaQ==
X-Forwarded-Encrypted: i=1; AKwUvBzJ/sF1xw8BOT+ZUXCkCrUpfkm1GvZxjkWUZv5/j+Q3wFKVri5Coaq40tb4Ep8L6Z5pTI1ILFzO13I=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+LTCEvEfRz4wEd2lT49GmCyXy8YNVBErqDElqbziJ2leAv0JMB
	AtsMQRnIRB01bSu3FgttIaKs+nF8d6nGOK8egNJVhpBEt7qkhk5Shwby
X-Gm-Gg: AYBFou1vgiy/HZIW/xgazSuBiPgsOJIOG4tu3S8GMAV3eYYvmQlMx+kyOEGeFwpvi1Q
	IQCLK8RRNTHTZrJ4/Sw2OSv6g9pRFCoExYWJwdyE5RWuFgZZ65GrqiNs4PtDoT+tdr8NqYJc8X+
	EU3fDYmPT9rkEv1p011LmDbRX5W+6rCyhZn+kDVmTwwe3HYOOUm09LWZvp3jUCWrF47Sjv2r4ps
	7vgV6HI4mjhW12/JrupRYzbPLnnTv7L/sSW3BFrmoDpb4dbHub9EkhlD2B9EoYri3yAZPSXuIJb
	4Geo8T7PNZkXOTIdB9YQJo9y2dPS2mFYPMXr3Jc4kpHdBiVWe3gtI3HV64K5JvqV85SwHBV2dHb
	ErACMj7HrDAk5m5G+MTtPi8JFr6HcFbmUcrOgwAfjQvsJvvmyPx88ncMpc03XxibarWYlp2vI5m
	/qmjKfbQhhLEHFIGBoaAxNvf+oo+iKHUPIKVvhDktUEm2cuQ0OYYLV9rxRYykKHPFxbO9pTgbT6
	6G3gB1/ywnpfasreVl/9YE+KneOMyfslUPrp1x/bV4CwrXQx0qv2JGMUMTofzGnYdhK76TNszMm
	bPc38DZMw63m6+wSKlnez0heVAr1vwDDoLQJUdNcyL11r2h18Gm3hYasBIZAOhj7EPyxnkdIzXe
	gHNf7bpm2qAF8DGKTYbogpw==
X-Received: by 2002:a05:600c:138c:b0:49f:ce78:3562 with SMTP id 5b1f17b1804b1-4ac1765d3e8mr425684435e9.19.1793895986859;
        Thu, 05 Nov 2026 08:26:26 -0800 (PST)
Message-ID: <3d2b61ed-790a-4c11-8607-8c5fe6b34b61@gmail.com>
Date: Thu, 5 Nov 2026 17:26:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/39] xen/riscv: implement APLIC-IMSIC-hart sync
 barrier for vCPU migration
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 xen-devel@lists.xenproject.org
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <2075cb10e5f6df787b29f2f087632c82b787a007.1790779209.git.oleksii.kurochko@gmail.com>
 <c77101fe-2505-4cdb-8520-52f92a1c668d@gmail.com>
 <1792763490.8631fc262581453bbf619ec5b2062170.1a16907f005000f79f@vates.tech>
 <cf206b92-88df-4f51-b10b-960e0c141d9e@gmail.com>
 <1793892730.8631fc262581453bbf619ec5b2062170.1a1ac56c714000403d@vates.tech>
 <1ff766a5-3d49-45fb-9c46-d781cfaf4b6d@gmail.com>
 <1793894366.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793894366.8631fc262581453bbf619ec5b2062170.1a1ac6fbbf5000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1793895987-026DEA5B-002BAAB4/10/73395122804
X-purgate-type: spam
X-purgate-size: 1556



On 11/5/26 4:59 PM, Baptiste Le Duc wrote:
> 
> 
> On 11/5/26 4:51 PM, Oleksii Kurochko wrote:
>>
>>
>> On 11/5/26 4:32 PM, Baptiste Le Duc wrote:
>>> On 2026-11-05 15:21 +0100, Oleksii Kurochko wrote:
>>>> [ ... 348 lines skipped ... ]
>>>>> LGTM, but I wonder why, as I said in the original patch, sync_id is
>>>>> really needed.
>>>>>
>>>>
>>>> I think that I am not understand your response. Could you please
>>>> re-phrase it?
>>> I'm questionning the need of the sync_id field as it will always be
>>> equal to imsic_cfg.nr_ids, couldn't we drop it?
>>>
>>
>> It's equal to nr_ids by choice rather than by necessity: which identity
>> gets reserved is decided in a single place, imsic_parse_node(), and all
>> the users (the genmsi write, the pending bit the barrier spins on, the
>> limit on the APLIC sources and the ASSERT() in imsic_irq_enable()) refer
>> to it by its role rather than as "the last identity".
>>
>> Basically if one day someone will decide to come up with EIID 
>> allocator instead of using static allocation then it will be harder to 
>> find a places where to change.
>>
>> So yes, it could be drooped but at the moment I think it is useful to 
>> have separate field or ,at least, as an option in asm/imsic.h:
>>
>> static inline unsigned int imsic_sync_id(const struct imsic_config *cfg)
>> {
>>      return cfg->nr_ids;
>> }
> 
> I prefer this as it would save space in imsic_config struct.
> 

Thanks for the clarification. I'll go with that approach, then.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 16:33:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 16:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475224.1682083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0Of-0005tC-24; Thu, 05 Nov 2026 16:33:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475224.1682083; Thu, 05 Nov 2026 16:33:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0Oe-0005t5-UY; Thu, 05 Nov 2026 16:33:04 +0000
Received: by outflank-mailman (input) for mailman id 1475224;
 Thu, 05 Nov 2026 16:33:03 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <frederic@kernel.org>) id 1xP0Od-0005sv-RG
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:33:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0Od-003c2A-7x
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:33:03 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <frederic@kernel.org>)
 id 6aecafbf-2eae-0a2a0a5409dd-0a2a4505a922-0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:33:03 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <frederic@kernel.org>)
 id 6aecafbd-4cb1-0a2a45050019-ac6904fecc2e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:33:02 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id EE30660A4A;
 Thu,  5 Nov 2026 16:33:00 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD9A91F0093A;
 Thu,  5 Nov 2026 16:32:57 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:To:Cc:Subject:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793896380;
	bh=mSfS/VpYRDfWYW/SpRNCqzvpn0MjIMyjO/C7eGCEl2w=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References;
	b=m4bPPOtp2zJAdqidlzL44ZUwcSIC9juhPx3x3FhmCg1hPbcRpBDRyG8EA8ChBVcWO
	 GsoSUrxFillZ7jeC7oF7W0RfXNllBtB1MuSHw2SlQYI0Kvf8W0dJ0zEha/+Drqoxtg
	 fhJdvj4anabtrYu5rm41hco7crYH/n+TmP3kadAh2tfiXndhPdfUvN2nhgC6rtzX3M
	 RFIkJzGhqHYnbo1SPdM4e6XhZQvqy2BjX9U0MYLPx6HAJlS336XfAETo65ACSFDd3G
	 d659qkBkuWREd8f+R6qc9yEhJBthbgi5iTc/LbPFu0A8GKMqXFY/Az9ETzL+OkcWoq
	 9K/2w5/xv0l1Q==
From: Frederic Weisbecker <frederic@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Frederic Weisbecker <frederic@kernel.org>,
	Marco Crivellari <marco.crivellari@suse.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Phil Auld <pauld@redhat.com>,
	Russell King <linux@armlinux.org.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Thomas Gleixner <tglx@kernel.org>,
	Waiman Long <longman@redhat.com>,
	linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org,
	"Paul E. McKenney" <paulmck@kernel.org>
Subject: [PATCH 41/47] ARM: xen: Move CPUHP_AP_ARM_XEN_STARTING post stop_machine()
Date: Thu,  5 Nov 2026 17:30:39 +0100
Message-ID: <20261105163045.38862-42-frederic@kernel.org>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20261105163045.38862-1-frederic@kernel.org>
References: <20261105163045.38862-1-frederic@kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1793896382-F62AB2A1-DDDE6628/0/0
X-purgate-type: clean
X-purgate-size: 1718

Between CPUHP_TEARDOWN_CPU and CPUHP_AP_OFFLINE, stop_machine executes
all the teardown callbacks while stopping all CPUs in the system. This
doesn't mix-up well with running RT or isolated tasks.

In order to transition smoothly from global stop_machine to finer
grained synchronization between teardown callbacks and the other CPUs,
a new stop machine post function has been introduced to be executed
after the main one with IRQs still disabled while other CPUs can exit
stop_machine().

The teardown callback here simply performs IRQ disablement, which can
run concurrently with other CPUs.

Move it to post stop_machine() accordingly.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
---
 kernel/cpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/cpu.c b/kernel/cpu.c
index 47b33c6759aa..5c84a39f6f06 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -1275,7 +1275,7 @@ void clear_tasks_mm_cpumask(int cpu)
 static int take_cpu_down(void *_param)
 {
 	struct cpuhp_cpu_state *st = this_cpu_ptr(&cpuhp_state);
-	enum cpuhp_state target = max((int)st->target, CPUHP_AP_DUMMY_TIMER_STARTING);
+	enum cpuhp_state target = max((int)st->target, CPUHP_AP_ARM_XEN_STARTING);
 	int err, cpu = smp_processor_id();
 
 	/* Ensure this CPU doesn't handle any more interrupts. */
@@ -1303,7 +1303,7 @@ static int take_cpu_down_post(void *_param)
 	enum cpuhp_state target = max((int)st->target, CPUHP_AP_OFFLINE);
 	int cpu = smp_processor_id();
 
-	WARN_ON(st->state != CPUHP_AP_DUMMY_TIMER_STARTING);
+	WARN_ON(st->state != CPUHP_AP_ARM_XEN_STARTING);
 	/*
 	 * Invoke the former CPU_DYING callbacks. DYING must not fail!
 	 */
-- 
2.53.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 16:41:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 16:41:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475246.1682092 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0WV-0001jL-QF; Thu, 05 Nov 2026 16:41:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475246.1682092; Thu, 05 Nov 2026 16:41:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0WV-0001jE-MM; Thu, 05 Nov 2026 16:41:11 +0000
Received: by outflank-mailman (input) for mailman id 1475246;
 Thu, 05 Nov 2026 16:41:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xP0WU-0001hw-FM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:41:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0WT-00Efq7-SS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:41:09 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecb176-e002-0a2a0a5209dd-0a2a4504b4f8-40
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:41:09 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecb1a5-b57f-0a2a45040019-d1558035c536-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:41:09 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a20a37703bso16188575e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:41:09 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56e58fcc6sm140773205e9.2.2026.11.05.08.41.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 08:41:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793896869; x=1794501669; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=My9+F1xNt+fGV/uocE/2p6QDB4njnXMZQHAomdCWdiM=;
        b=vcvclZ7Kbzg6hYWtVklAdQ60VoJr+v1Cp6NFGn2rHUsYgH12qALX6Y5d7zfPCQ/7Hr
         naj01G2Eu1+xPtlGPg9xqV1lJExf6PUQue5BUv0pnT08HsDQUG4hVj+fp1w051upcbQY
         YGU+4xi1GlvBp+pfdW7uid8HNFKQsPBmBfmVdU+zhBdw2CiAqNnaQYQ2WqnOKZoIEc78
         +JSCaSoMVM1EzhX3Q93hrotZrqlruDzIWqal2dMaZGvo8+jZpy0EEElbVeBeqDovEeMZ
         wxpuLCJtc4u33ebd+0S92msCwGiT4nmeIrSr7dSj0teYAf9LU+uU+uOwmqAFiE+EnxKx
         l2DA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793896869; x=1794501669;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=My9+F1xNt+fGV/uocE/2p6QDB4njnXMZQHAomdCWdiM=;
        b=LfafE6qFZ7tOr92U5c04IIUp76DlzOCl2srOY9m35BLSDvT6Y8jJ3kfw4nRpNyYFIS
         L7zNkJBUUT7yhqutkxYkH9TcMfvKTlJuM3Ba1Z8lBERM5y+FeYqIko5eAwIDxzaiNDst
         BQTnjaK+0+Jxa+ZJDMgBdmePjpRHNVq+wl9PUeOU56aMcdpjj30UMHBFLKDXEOE+CjM8
         OMLF24ePEf786qr1JyHwJ5fKFDnDCnDr4gE3x7kcNpNeJcl6WfbbEcOCJjMySAESFoiu
         20Ho+1Y7OJhxz1vD/8SNkx55IATDKCxpKtd03SaDLEn64uGkIagIc/Z0wIz30qIH1pdX
         nJ7g==
X-Gm-Message-State: APuU4Z/Wn0YD0MPIV9MEaxsMk6+BUKD7hagrDJyOM9vr4lK2NOkfhj5D
	vbNa9u+E8Lt91gXANNj20MHyHOBaSvb9IjvnLz6i5vXmEcRABFBsclYH
X-Gm-Gg: AYBFou3rxx17vpOxW03bnU3FzX1DZ8yURiWTsc9PKQ6uJqoM1Tw6VagOS6anIvkDLUr
	7c53vK5WlT+MC7ZhkE8Cu3JMooXagpXdTfmaL8HioXnsv4zyv97G5/9i6vClVB6NJPD0d7BEt9u
	XkjbLZF9euYEKRRXxkvHIAHmvQnbrkdkkvtG39XpRWwdPAOM9QPCA/B1ZvyRweDtR8MYmlWe8mh
	lS/h41Vd6bw2R9uQYr2c2xQfXNl0+YpAwONAtszkhf4WYDlVlxbp532jav0d1q4b6H/xwodb0+X
	5dNE/xphBU7WWC+qb200kYEAjcPvWhp7ln7Yj6bkEyYizTxdTMnWuGkAikLhaYtGYYHRa0NT3C1
	r76JPo0fVUA83v1bcERZzQ/VhFhulI1MMdqTKGxSe2reZzF8ABX8jESWgCy5DwsBT/IrixB8U+a
	jwfZu789ca3lmNzi1VooLtvioRwW5ZmgGY407ZVZmieiZE//cdpz2zqvs7dNpStUDL+gdCRTK3B
	ea/Cbzok4QLP0yzPKumVTliGhwU0OJFAFY2hCUHX/S5M2zzxiJPftAk/i48xQgygxkjE0TLQWq2
	JxAzLlgTSZ/nI3xAr6Bjc5DpKB1njPa+sGEK/+/iYjgbmC4Cd/uUt/jtDw9Se4FRp9hmBXobMgk
	5
X-Received: by 2002:a05:600c:190f:b0:4a2:1a:a11d with SMTP id 5b1f17b1804b1-4ac1275c26emr417049585e9.0.1793896869269;
        Thu, 05 Nov 2026 08:41:09 -0800 (PST)
Message-ID: <d6f1f2a9-a6be-46c1-9777-e7e710b809ad@gmail.com>
Date: Thu, 5 Nov 2026 17:41:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 29/39] xen/riscv: prepare new IMSIC VS-file
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <7f00946a6b1b67e79f94e3c665f8f0ce9d5d0e5a.1790779209.git.oleksii.kurochko@gmail.com>
 <1792760165.8631fc262581453bbf619ec5b2062170.1a168d535ab000f79f@vates.tech>
 <81b0b1fa-1aa4-4646-bdfa-5e773cb876f4@gmail.com>
 <1793892454.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793892454.8631fc262581453bbf619ec5b2062170.1a1ac529128000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793896869-C0AD8B50-FF22F614/10/73395122804
X-purgate-type: spam
X-purgate-size: 2314



On 11/5/26 4:27 PM, Baptiste Le Duc wrote:
> On 2026-11-05 13:49 +0100, Oleksii Kurochko wrote:
>> [ ... 79 lines skipped ... ]
>>>> +
>>> What does the switch buy? ireg only ends up as the value written to
>>> vsiselect, not as a CSR number, so it doesn't need to be a compile-time
>>> constant. imsic_vs_csr_write(ireg, val) does the same, without the 128 case
>>> labels and the macro pyramid. If there's a reason, it wants stating in a
>>> comment; otherwise please drop the pyramid (an ASSERT() on the range can
>>> stay if you want one).
>>
>> Good point.
>>
>> I will drop it and use the following instead:
>>
>> /*
>>    * On RV64 a 64-bit EIx group is the even-numbered register alone,
>> whereas on
>>    * RV32 it is split into the even-numbered (low half) and the following
>>    * odd-numbered (high half) register. ireg names the first, even-numbered
>>    * register of such a group, among eip0..eip63 or eie0..eie63.
>>    */
>> static void imsic_eix_check(unsigned int ireg)
>> {
>>       ASSERT(!(ireg & 1));
>>       ASSERT((ireg >= IMSIC_EIP0 && ireg < IMSIC_EIP0 + 64) ||
>>              (ireg >= IMSIC_EIE0 && ireg < IMSIC_EIE0 + 64));
>> }
>>
>> /* Write a whole 64-bit EIx group, laid out as described above. */
> Nit: "above" may go stale if the code moves. Better to name the function
> you are referring to.
> 

Agree with that.

> Also, the parameter isn't an *ireg value. It is the register number
> written to *iselect; *ireg is only the data window. Per AIA (IMSIC
> chapter, "Interrupt files"), values 0x80-0xFF of *iselect select
> eip0-63/eie0-63, and imsic_csr_write() uses its first argument that way:
> 
> #define imsic_csr_write(c, v)   \
> do {                            \
>      csr_write(CSR_SISELECT, c); \
>      csr_write(CSR_SIREG, v);    \
> } while (0)
> 
> So I'd rename it to "iselect" (here and in the other helpers taking
> the same argument).
> 

As to the name: I'd rather keep ireg. The value does go into *iselect,
but what it denotes is a register of the interrupt file: per the AIA
spec, values of *iselect in the range 0x70-0xFF select the registers
of the interrupt file (eidelivery, eithreshold, eip0-63, eie0-63), and
ireg is the number of such a register, eip0-63/eie0-63 here.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 16:48:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 16:48:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475259.1682100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0dx-0005JX-Fk; Thu, 05 Nov 2026 16:48:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475259.1682100; Thu, 05 Nov 2026 16:48:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0dx-0005JQ-Cr; Thu, 05 Nov 2026 16:48:53 +0000
Received: by outflank-mailman (input) for mailman id 1475259;
 Thu, 05 Nov 2026 16:48:51 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <visitorckw@gmail.com>) id 1xP0dv-0005I9-Dp
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:48:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0du-004WML-Qk
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:48:50 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <visitorckw@gmail.com>)
 id 6aecb360-bab6-0a2a0a5309dd-0a2a450b8752-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:48:50 +0100
Received: from [209.85.210.173] (helo=mail-pf1-f173.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <visitorckw@gmail.com>)
 id 6aecb371-b7e8-0a2a450b0019-d155d2ade041-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:48:50 +0100
Received: by mail-pf1-f173.google.com with SMTP id
 d2e1a72fcca58-8b32bc605d9so79265b3a.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:48:50 -0800 (PST)
Received: from google.com ([118.150.148.19]) by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-8b09af918f2sm2233005b3a.23.2026.11.05.08.48.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 05 Nov 2026 08:48:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="In-Reply-To:Content-Disposition:Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793897329; x=1794502129; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:content-type:mime-version
         :references:message-id:subject:cc:to:from:date:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=nGgbr1sgl5oeyIRIzBGv/BG59BAeAsA8nAEB42w9jp8=;
        b=naZPLT5DDFyrVVTb2gj2+92Bnr3x0c0Aj6FyjazS2MUz9XfLMVu0EKqH3kNKsV76cc
         aQegxYjtKItB8+++zTV4mV2i7AkSpk4AR5DU1YCdZBd5Whg9X6sY9bs2GjJGnWvJtBiX
         lLYChdhowuUXyZFAKnHIyoYcYLRrl8VMbm0Y21NmZ7cqrybvXe4nCNFCT28sivcAOOXZ
         VGeV+yp0jQ6MpE8J+GPU9+p4tzWoj8a+5sagi43PdMEW2NQNGGCXvPa2EnjjsOVXJjhz
         55DSUCW657aDONoixA0yON269WictujR4za445nTtFWuDnP980UBc+wE/U49PY3RNxLP
         CCxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793897329; x=1794502129;
        h=in-reply-to:content-disposition:content-type:mime-version
         :references:message-id:subject:cc:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=nGgbr1sgl5oeyIRIzBGv/BG59BAeAsA8nAEB42w9jp8=;
        b=T37nQVHicqKZRaN8unNJDjsHAE1IermffVtwqXomr8e4xNQcsHoXS4Oj1l0+PDQP1S
         0D3bYIL2QJyKWy0Tnj2r3ok3Z6eP9laxNCbV13Q+AI5D4ISR8MxLSEzT6o8SunkG2SR7
         IlgdiJMXG3QttHCaUohsorkpUxHz9LLIHLUmUduZToHCnAzpf/djbeFlaux+HcTv0LS+
         E7AKRmvRxlOGRaBqsQkvC9l0uT5pDBnlnKOuB76/AOhUxSrVD4gFBsBS3WMYtpW++x1b
         if8gwXymLWjLl+pUPPSkDPY9qORCzxA4tpt9QCE7fzmNPUpDNz4H9ZDP+00mti4FkOXk
         SISA==
X-Gm-Message-State: APuU4Z/xw05TOWJvZemmWz/TARjTC6IXsyoIjyMAzXDnlKAcUOglb8Q6
	DiHLpY+7egLqA0X69urB5M4CwjtEXOcvjoocrYEAcEcUdagjA24Kx9Cm
X-Gm-Gg: AYBFou3H5SxZylusqCoxuPhLHjw32SyMbdE6DOhyK2l6e/MkysblbL1zFDJnj6L7VaS
	rEt8uUmf4AKIuWwjql+pazIfgjgtprsiwCbJIJpAXc48kZU/KhuBvfBt832wVvo14DvccIEAUbj
	M34ShfjrkBkloHzHVUeFm8FU+usm2EoWNneGlGcMl7sMCCKmToQtqPBPlb88pHzyiN3z1rxrlg7
	in0NtX87OkPEJNLmnGwldyOGtxowpBfonUAe6XwtR3uJgCNTebCQOsa2Op6AZ61ZRhRLG3HmhRf
	lLpzXoWgvKiS2CEjQMoZhDm8my5YaZBaivyzHrBZQrweV9onvEm3nZSME+im4ueAlAph/FNiybm
	vO0WJVDopG+sJ28VwJUrWCp4ECF5J2oPxVA3pH1juSNRGjfMtQrI/k36KtIap3oUCWcjLCf5/8H
	zsOC/Ov6IEc/bP0/a0NbtucWYP+dKpg3yzQ8ePtj2KBUJtA7LbNNxYvRompxztBq16Vt/oLJfhl
	NZ2ZFyakHnGgK1yJAq4DrhVzJspmNUOKfMxJJw4g/6QbRN9ccXe3jhWizQVkJtN5DcJIzW/80FN
	swQCDcT8xVfC2FbeFrZGq65fmDOd
X-Received: by 2002:a05:6a00:4148:b0:881:e266:c3c5 with SMTP id d2e1a72fcca58-8a9ba7039admr17093163b3a.2.1793897328565;
        Thu, 05 Nov 2026 08:48:48 -0800 (PST)
Date: Fri, 6 Nov 2026 00:48:44 +0800
From: Kuan-Wei Chiu <visitorckw@gmail.com>
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, sstabellini@kernel.org, julien@xen.org,
	bertrand.marquis@arm.com, marscheng@google.com,
	jserv@ccns.ncku.edu.tw, eleanor15x@gmail.com
Subject: Re: [PATCH] xen/dt: Skip non-RAM reserved-memory regions in
 make_memory_node()
Message-ID: <auyzbMaKb2_Oul4V@google.com>
References: <20261028211737.17629-1-visitorckw@gmail.com>
 <10bc93f8-5ac4-4804-864e-d83a5fbf7108@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <10bc93f8-5ac4-4804-864e-d83a5fbf7108@amd.com>
X-purgate-ID: tlsNG-42698a/1793897330-188C99EA-C66FF9E6/0/0
X-purgate-type: clean
X-purgate-size: 4721

Hi Michal,

On Mon, Nov 02, 2026 at 02:02:20PM +0100, Orzel, Michal wrote:
> 
> 
> On 28-Oct-26 22:17, Kuan-Wei Chiu wrote:
> > Xen creates a second /memory node for Dom0 from
> > bootinfo_get_reserved_mem() without checking whether those regions
> > belong to host RAM. However, /reserved-memory can also describe
> > on-chip SRAM or firmware regions outside system RAM. Listing them in a
> > /memory node causes Dom0 to register non-RAM addresses as system RAM,
> > conflicting with device MMIO mappings.
> It's worth adding a reference to Linux binding for nvmem-rmem as an example (the
> only one so far?) of /reserved-memory describing non RAM. Please also mention
> Linux comment at early_init_dt_reserve_memory().

Ack.

> 
> > 
> > Skip reserved-memory banks outside the host RAM banks reported by
> > bootinfo_get_mem() in make_memory_node().
> Have you considered EFI boot? There we don't use /memory and bootinfo_get_mem()
> contains usable memory. IOW I think it does not contain reserved memory. In such
> scenario, we would skip the reserved regions because they are not described in
> memory membank. So it would be a regression in behavior.
> 

I'm not quite familiar with EFI, so I indeed didn't consider the EFI
boot scenario in the first place. I think I should skip the
is_in_host_ram() check when efi_enabled(EFI_BOOT)?

> > 
> > Fixes: 248faa637d2f ("xen/arm: add reserved-memory regions to the dom0 memory node")
> > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
> > ---
> > Found while trying to bring up Xen on new hardware.
> > Tested on real silicon.
> > 
> >  xen/common/device-tree/domain-build.c | 42 +++++++++++++++++++++++++--
> >  1 file changed, 39 insertions(+), 3 deletions(-)
> > 
> > diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree/domain-build.c
> > index 30a59abfa7..33baf150a6 100644
> > --- a/xen/common/device-tree/domain-build.c
> > +++ b/xen/common/device-tree/domain-build.c
> > @@ -504,6 +504,34 @@ int __init make_chosen_node(const struct kernel_info *kinfo)
> >      return res;
> >  }
> >  
> > +static bool __init is_in_host_ram(const struct membank *bank)
> > +{
> > +    const struct membanks *ram = bootinfo_get_mem();
> > +    paddr_t start = bank->start;
> > +    paddr_t end = start + bank->size;
> > +    unsigned int i;
> > +
> > +    if ( !bank->size || end < start )
> You can omit the empty check. Empty banks are not added to membanks.

Ack.

> 
> > +        return false;
> > +
> > +    for ( i = 0; i < ram->nr_banks; i++ )
> > +    {
> > +        paddr_t ram_start = ram->bank[i].start;
> > +        paddr_t ram_end = ram_start + ram->bank[i].size;
> > +
> > +        if ( start < ram_start )
> > +            return false;
> > +
> > +        if ( end <= ram_end )
> > +            return true;
> > +
> > +        if ( start < ram_end )
> > +            start = ram_end;
> > +    }
> > +
> > +    return false;
> > +}
> > +
> >  int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
> >                              int sizecells, const struct membanks *mem)
> >  {
> > @@ -513,14 +541,20 @@ int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
> >      int nr_cells = 0;
> >      __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE];
> >      __be32 *cells;
> > +    bool is_resv = (mem == bootinfo_get_reserved_mem());
> >  
> >      if ( mem->nr_banks == 0 )
> >          return -ENOENT;
> >  
> >      /* find the first memory range that is reserved for device (or firmware) */
> > -    for ( i = 0; i < mem->nr_banks &&
> > -                 (mem->bank[i].type != MEMBANK_DEFAULT); i++ )
> > -        ;
> > +    for ( i = 0; i < mem->nr_banks; i++ )
> > +    {
> > +        if ( mem->bank[i].type != MEMBANK_DEFAULT )
> > +            continue;
> > +        if ( is_resv && !is_in_host_ram(&mem->bank[i]) )
> > +            continue;
> This filter (MEMBANK_DEFAULT and your check) is now duplicated in two places.
> Please add a helper for it. Also adjust the now stale comment.
> 

Ack.

Regards,
Kuan-Wei

> > +        break;
> > +    }
> >  
> >      if ( i == mem->nr_banks )
> >          return 0;
> > @@ -544,6 +578,8 @@ int __init make_memory_node(const struct kernel_info *kinfo, int addrcells,
> >          if ( (mem->bank[i].type == MEMBANK_STATIC_DOMAIN) ||
> >               (mem->bank[i].type == MEMBANK_FDT_RESVMEM) )
> >              continue;
> > +        if ( is_resv && !is_in_host_ram(&mem->bank[i]) )
> > +            continue;
> >  
> >          nr_cells += reg_size;
> >          BUG_ON(nr_cells > ARRAY_SIZE(reg));
> 
> ~Michal
> 


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 16:57:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 16:57:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475274.1682108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0mU-0000XP-CP; Thu, 05 Nov 2026 16:57:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475274.1682108; Thu, 05 Nov 2026 16:57:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0mU-0000XI-9f; Thu, 05 Nov 2026 16:57:42 +0000
Received: by outflank-mailman (input) for mailman id 1475274;
 Thu, 05 Nov 2026 16:57:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xP0mT-0000XC-Cs
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 16:57:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0mS-00BI4x-Lg
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:57:40 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecb560-2eae-0a2a0a5409dd-0a2a4505d188-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:57:40 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aecb584-4cb1-0a2a45050019-d1558035b0ba-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 17:57:40 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a35ac4475dso15102025e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 08:57:40 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56fca22e1sm91146885e9.14.2026.11.05.08.57.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 08:57:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793897860; x=1794502660; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=POIL72m2icLWUSLNkHkT4T3FI5Huz1R7KGCFbfwl1pU=;
        b=wTtj42pk6Fp+iHJh5nt57+GmPW11AlEs2G02pZBTKfBErJdi7MHEubEmpLGFUaVvdo
         LO50xJ60vZ7RYoqc91z6JZE6gG1b4390mwsvzrF9bgCfBCgX8+R8hcAu4nCC8UMvKAQw
         s6QCjF15BTYFhx5LecA1ljW4U/8gj0p40upVsDljqMupipJEFyNCNplWBE/BQkAMfcsT
         wFs3nmPKvXQ4awH5OibYAXK1A6RycPO4KAovO3oEbc+X0M4VRbhVX2P9jCcRQf8dDNq2
         +rFsIm3FKjSqwqlv/AdlQedFwKsMXU+m1l1EbnVe+dRuHZ15YZu8FM6KI5DkYUObRVPq
         eUUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793897860; x=1794502660;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=POIL72m2icLWUSLNkHkT4T3FI5Huz1R7KGCFbfwl1pU=;
        b=c5BmgBTahe8OEt5HzEB+f851VIOwHvz9OvcJkf4xCIprDV5JzvfwbZN8pvZ3LjmjEs
         6mbmPt8ewIdWLCh+Q3OeB6fHljeNvrW0Nrb+kP3MSA2K1kEpG/ZlFuolANXM33UVbDRN
         U+98cNVLiUTiG0hIQX7SENm9jTdaHSpuBti64/4Dz3mpd7fFJ7kW2MSNzd3/FPvXfD8N
         CCeBVId/qng4ukzr1pdcqZD88rLDJauCfIvObmK40X+6xhwgYZ+Fjjeed3lCwSZQqd9K
         ac36dKGvgVEDSLjNK3WGAfSr55BDi4jpzjgSRvYFSPjMvnymqKZJJ2oTng0aTNU46mfo
         jpTw==
X-Gm-Message-State: APuU4Z8jzIvCMf4tI5qBuz6OqwVPWCb7Z4PgFn2SmFJRoQlAF6CY9fyM
	35VmuSouRvjj64GQnuVF/LVOSn5qtHAayVGAfoKiDlfdL48CvwElWpLl
X-Gm-Gg: AYBFou2pRwpIfn8MbuGkZ4zzYRkdQYOh6zRtqFZrBNcxX+cPHT8YGQkUNzdmrsNDcVX
	L3QaoWHFh7oiOHCpf8AGGdhQcFQIZlIu9esGMhkJj2h/W8tvgMKY7aKP/UkdLZAlvsVgTvE1XMx
	qJ5r5R6zye5dsPcyejpyJYqqAnU6vYqEsU7ZNAJ6yvq4y9Poloq9Q81lEeWU0grgfI+OZE9LEZZ
	fRNNaBnik1YaoFTfixVIB2xa5XlPMnSow86LU79uUeSGUEiKD12W/LAQpmiVCdUjVoUqCo/a5pl
	U2Nk1T2+Xf7E7f0HO2jQvckxlpYUoLND3Lo03Djqn3owgY1LXL8M1ODCE69AxbuO5xx1PRaWWJ1
	zE+qVbBRi9liU+U9uCR0TyEZym67qMQSHi6Iu5ClKDupM4uOTeckmnyYaDoU9ovApi0BIj92Rb7
	sZNYe0wps+Nos5i6ZNw6DKik/d96f9FlY0NAXdrCGDYSu/53myKyKusqiKbR/NTfAuKB2x1PIcu
	basDw6Xfp72vukmE7RgKsw7sIDRccTuf2Fyu1hgFkzfB7h1CVXdnyXt6kpFC1npRjLN5a3Cb5Bl
	wku1MilDyc5FCzr4lVw46ejKOBnAuODOo346lmmn5h5KUlCNGjh2uNH/hTV9nMniq11Q72FaKfD
	b
X-Received: by 2002:a05:600c:470a:b0:4a1:7e77:c382 with SMTP id 5b1f17b1804b1-4ac16acfe61mr426248865e9.5.1793897859852;
        Thu, 05 Nov 2026 08:57:39 -0800 (PST)
Message-ID: <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
Date: Thu, 5 Nov 2026 17:57:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/39] xen/riscv: remap interrupts to new IMSIC VS-file
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <45011daea86267b8f4b707bc7de6357b0712fb08.1790779209.git.oleksii.kurochko@gmail.com>
 <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1793897860-73ABF2A1-ABEA7180/10/73395122804
X-purgate-type: spam
X-purgate-size: 5057



On 10/26/26 3:06 PM, Baptiste Le Duc wrote:
>> Once the new IMSIC VS-file has been zeroed out, it has to be mapped into
>> the guest's G-stage in place of the old one. Also, if any interrupts at an
>> APLIC are forwarded by MSIs to the old interrupt file, reconfigure the
>> APLIC to send them to the new interrupt file.
>>
>> Taking a h/w guest interrupt file (assigning it, zeroing it out, mapping
>> it into G-stage and recording it in the vCPU's IMSIC state) is factored
>> out into imsic_vsfile_acquire().
>>
>> The relevant translation tables at all IOMMUs would also have to be
>> updated so that MSIs for this virtual interrupt file are sent to the new
>> physical interrupt file, but that is skipped for now as there is no IOMMU
>> support for RISC-V.
>>
>> Synchronize with the APLIC to ensure that no straggler MSIs will arrive at
>> the old interrupt file by running imsic_aplic_sync() on the pCPU which owns
>> that file.
>>
>> If the new file can't be mapped into the guest, release the guest
>> external interrupt number imsic_vsfile_acquire() took for it instead of
>> leaking it. vgein_release() takes the pCPU explicitly instead of relying
>> on v->processor, as on migration v->processor already refers to the new
>> pCPU while the number to be released may belong to the old one.
>>
>> Keep BUG_ON("unimplemented") placeholder in imsic_migrate_vcpu() to guard
>> against silent incorrect behaviour or unexpected panics in guest VMs until
>> the function is fully implemented.
>>
>> Implement imsic_update_state(), which records the vCPU's guest
>> interrupt file id together with the pCPU owning the file. The two are
>> read as a pair, e.g. by imsic_migrate_vcpu() and the IMSIC context
>> switch hooks, so they are updated under vsfile_lock as a single unit.
>>
>> imsic_map_guest_file() and vgein_release() are stubs for now.
> 
> I have the feeling this patch does more than its subject says: besides
> retargeting the APLIC and adding the sync, it introduces
> imsic_vsfile_acquire() (assign + clear + G-stage map + state update),
> imsic_update_state() and the error path, which relies on two stubs,
> imsic_map_guest_file() and vgein_release().

These are the steps the AIA spec lists for moving the interrupt 
producers to the new file: map the new file into G-stage in place of the 
old one, retarget the APLIC and synchronize with it. 
imsic_vsfile_acquire() and imsic_update_state() are just how the "take 
and map a new file" part is split out, so I'd still say they belong to 
this patch. Your point below, that none of this can run yet, is the real 
issue though.


> At this point vgein_assign()
> is still BUG_ON("unimplemented") too, so none of the new code can
> actually run, and the error path can't be reviewed against the real
> vgein_release().
> 
> Also, until "introduce IMSIC h/w interrupt file attaching to vcpu", no
> vCPU ever owns a h/w file, so imsic_migrate_vcpu() can only hit the
> CPU_NONE check.
> 
> Wouldn't it be simpler to move the two already-acked patches and the
> attach first, so that no stubs are needed and each migration step is
> written against its real callees when it lands:
> - Add basic VGEIN management for AIA guests (real vgein_assign() and
>    vgein_release(); the reason for the explicit cpu argument of
>    vgein_release() would then have to go into this commit message)
> - Map IMSIC interrupt file for vCPUs (real imsic_map_guest_file())

I think I have such order before and it was changed becuase for locks in 
the first patch it wasn't enough context to understand if they are 
needed or not.

> - Implement continue_new_vcpu() and set hstatus.VSXL
> - Attach a h/w interrupt file to a vCPU on its first run, introducing
>    imsic_vsfile_acquire() and imsic_update_state() with their first user
>    (acquire, vaplic_reconfigure_target(), set hstatus.VGEIN)
> - Prepare new IMSIC VS-file (on top of imsic_vsfile_acquire())
> - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
> - Remap interrupts to the new IMSIC VS-file (APLIC retarget + sync)
> - Save/clear old VS-file, restore, SGEI wake-up as today
> 
> A side benefit: attach no longer has to be squeezed into the finished
> migration code, so imsic_vsfile_move() with its first_attach argument
> and the goto set_vgein go away. Attach stays a plain sequence, and
> imsic_migrate_vcpu() simply reuses imsic_vsfile_acquire().

I'm fine with that order. It does mean that "add basic VGEIN management"
and "map IMSIC interrupt file for vCPUs" introduce functions whose first
user only comes with the attach patch a few patches later. If that's
acceptable, I'll add a post-commit note to each of them saying where the
functions get used (as IIUC, they will first introduced and then used in 
later patches).

> 
> Migrating a vCPU which has already run would still hit the trailing
> BUG_ON("unimplemented") until the restore patch, but that is no worse
> than the panic() it hits today.
> 

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 17:01:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 17:01:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475294.1682118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0qH-00034f-Sd; Thu, 05 Nov 2026 17:01:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475294.1682118; Thu, 05 Nov 2026 17:01:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP0qH-00034Y-PZ; Thu, 05 Nov 2026 17:01:37 +0000
Received: by outflank-mailman (input) for mailman id 1475294;
 Thu, 05 Nov 2026 17:01:37 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <visitorckw@gmail.com>) id 1xP0qH-00034S-AD
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 17:01:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP0qG-003gM9-M8
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 18:01:36 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <visitorckw@gmail.com>)
 id 6aecb65e-8faa-0a2a0a5109dd-0a2a450387a2-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 18:01:36 +0100
Received: from [74.125.82.49] (helo=mail-dl1-f49.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <visitorckw@gmail.com>)
 id 6aecb66f-fae8-0a2a45030019-4a7d5231d531-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 18:01:36 +0100
Received: by mail-dl1-f49.google.com with SMTP id
 a92af1059eb24-1b244fb7fffso2770457c88.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 09:01:36 -0800 (PST)
Received: from visitorckw-work01.c.googlers.com.com
 (55.11.81.34.bc.googleusercontent.com. [34.81.11.55])
 by smtp.gmail.com with ESMTPSA id
 a92af1059eb24-1b245c2d69asm16890919c88.11.2026.11.05.09.01.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 05 Nov 2026 09:01:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793898094; x=1794502894; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=if0uxxccF3aSEurV3j2odeW1LivV1aGquxssomLU2ug=;
        b=Q9wwUz+HgSbFdIVzU+J3afZGtkK52TQQbh/S6KmN/4CHl2DvbD9TD+7Mcl7KN8Ep1v
         zMdozMagvtwvmb2OpYyta57htVzaGvFzOiiDJ8yNKAlBh0BvEpckWbQdVAvlkF3CUNTy
         CP/Ew415kAJkVyAhftjvjrakhFrG8D+5YCCuT9b4xD9IB5oqfrwmDhrPjLK+aWVM0B6r
         S+2VHXO9jIXwDZ0z6IeeAAH8/8HZl/wgEl1FmQeF+BLuyHZjgcss5Mkg0jl2fYmdwoIj
         2zYnnRx1skxDmmvssv43IyvN5YgtpfT7y1jEB+LQ2d6mUD7DW4fJ46KfShdMlQYK5+Wf
         rE8g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793898094; x=1794502894;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=if0uxxccF3aSEurV3j2odeW1LivV1aGquxssomLU2ug=;
        b=swUfvAbXueXUEscGCjRYw0CC1yuleI7/Tj41zOuhp94EM3pxrhTG4H1zeaVniHyZEM
         MVphBnhtB9PtkUjJCz5hOBmRbpUvOY+oH7PgLNt+2wVKkdsN/NuEIbhnafl2WtxlMEhs
         PxEX3/TXYMttCuFq2KqSCYwNLk4yC5g6NeENUQPNnbYNdd3r8IL4EylkS3sstIpKAKbN
         oT5C6MpsprcNjeCx0iqNG6vxDlomzHpYbsUFPzBsewhU8aYkFkII1xr+Dl5/Q+1n5TAJ
         iFoId0eLKqcsKK83Tdu/UG0MxCXwy4o21cDIZS2KQB96MmFnkq7Lc+DL2L4NqrsFil3L
         Apyg==
X-Gm-Message-State: APuU4Z+a7+uJril49DE1on8GE9xz8KkWjjOBfxm7+0gsqxNCkE75jcI8
	GqI/FI5pmx0zwxm3cuUzP3dYBZB2q1UpjoXBO6x6M/MkZiMq375/2p71fMJIfQ==
X-Gm-Gg: AYBFou0TUQdpTyXlpGa7+JAu5fGJqh61qX6iwXG/8U1LeWafZkXH6FI84DwYcYRA2/6
	YolbXa3jXMhd9hORF0Znay4I53ivexT6qfGptXSwrgyq8tQuiWWMzu+AhJlngRtSfHHu0njlHkV
	YQQAzaFfwqMifYwQzIuPYV1xyJRWjt3RKVtAhHUIf2K6J5WjoYPY3nK08j5mz4j5Iwg27+DqZ/k
	6wDQ8HgtweSrPONkZfvKFJB6u5YN3kyWqJsqM+6SOB2bCdb7Hf4gEWdsFR5r9SuEvx7G2CNUmMm
	G3R6dS+j1nektUxqQP7YjdKI2be8SScVVfHNyr9JF4xUZ9IwyGMBMVAOe7m3MXIySNkVYGgHRqD
	1hL/8AqlPUixgtm+Wsgi5LZ06oYxqrb/jhfyzNW+t2YgmBPhYAY0Sn+Sb9iNJ0GpMQMfBD81iDj
	MR/AApobYNDRT53hAWjpf76EnLOQdtlfvvfZ7Q64thUMC4rMZv+udDWBCq+FuBBGk3Z73wpEEz4
	FD7Bhf7gcNO5YCpTuZVOAV+jmDaMkCnbDEfuVlZNIm2S7dpp6MEOZafscYN7yHdT/ZjTnuHtEdy
	b6JIGO22Vz2mP7qKQ7PJRo0qDGCSgsXXUyWTz4RhIjOxFttL2Cpuw0EIKSIVJQarKYmJDIFmeP8
	8O2VTMXWcsP9hOJZhwGeM3sc=
X-Received: by 2002:a05:701b:4248:20b0:1a1:c1e3:1ec with SMTP id a92af1059eb24-1ac5ecb684emr30127651c88.46.1793898094186;
        Thu, 05 Nov 2026 09:01:34 -0800 (PST)
From: Kuan-Wei Chiu <visitorckw@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: sstabellini@kernel.org,
	julien@xen.org,
	bertrand.marquis@arm.com,
	michal.orzel@amd.com,
	Volodymyr_Babchuk@epam.com,
	marscheng@google.com,
	eleanor15x@gmail.com,
	jserv@ccns.ncku.edu.tw,
	Kuan-Wei Chiu <visitorckw@gmail.com>
Subject: [PATCH] xen/arm: Preserve host GIC #interrupt-cells for Dom0
Date: Thu,  5 Nov 2026 17:01:17 +0000
Message-ID: <20261105170117.3550534-1-visitorckw@gmail.com>
X-Mailer: git-send-email 2.56.0.398.g882cbad275-goog
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-33051d/1793898096-6D2D84E9-8F63384D/0/0
X-purgate-type: clean
X-purgate-size: 2811

Xen copies device interrupt properties from the host device tree to
Dom0, but hardcodes #interrupt-cells to 3 in make_gic_node() and
fdt_property_interrupts(). On GICv3 platforms where the host uses 4
cells, Dom0 parses the copied specifiers as 3 cells each and fails to
set up device interrupts.

Propagate #interrupt-cells from the host GIC node in make_gic_node()
and pad Dom0 interrupt specifiers with trailing zero cells in
fdt_property_interrupts().

Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
---
 xen/arch/arm/domain_build.c | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 1ee1f1f6a7..74d2491f9e 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -654,12 +654,30 @@ static int __init fdt_property_interrupts(const struct kernel_info *kinfo,
                                           unsigned int num_irq)
 {
     int res;
+    uint32_t intrcells = ARRAY_SIZE(intr[0]);
+    void *val;
+    unsigned int i, stride;
 
-    res = fdt_property(kinfo->fdt, "interrupts",
-                       intr, sizeof(intr[0]) * num_irq);
+    if ( is_hardware_domain(kinfo->bd.d) )
+    {
+        const struct dt_device_node *gic = dt_interrupt_controller;
+
+        if ( !dt_property_read_u32(gic, "#interrupt-cells", &intrcells) )
+            return -FDT_ERR_XEN(ENOENT);
+        if ( intrcells < ARRAY_SIZE(intr[0]) )
+            return -FDT_ERR_XEN(ERANGE);
+    }
+
+    stride = intrcells * sizeof(intr[0][0]);
+    res = fdt_property_placeholder(kinfo->fdt, "interrupts",
+                                   stride * num_irq, &val);
     if ( res )
         return res;
 
+    memset(val, 0, stride * num_irq);
+    for ( i = 0; i < num_irq; i++ )
+        memcpy((uint8_t *)val + i * stride, intr[i], sizeof(intr[0]));
+
     res = fdt_property_cell(kinfo->fdt, "interrupt-parent",
                             kinfo->phandle_intc);
 
@@ -1320,6 +1338,7 @@ static int __init make_gic_node(const struct domain *d, void *fdt,
     int res = 0;
     const void *addrcells, *sizecells;
     u32 addrcells_len, sizecells_len;
+    uint32_t intrcells;
     const char *name;
 
     /*
@@ -1370,7 +1389,12 @@ static int __init make_gic_node(const struct domain *d, void *fdt,
             return res;
     }
 
-    res = fdt_property_cell(fdt, "#interrupt-cells", 3);
+    if ( !dt_property_read_u32(gic, "#interrupt-cells", &intrcells) )
+        return -FDT_ERR_XEN(ENOENT);
+    if ( intrcells < 3 )
+        return -FDT_ERR_XEN(ERANGE);
+
+    res = fdt_property_cell(fdt, "#interrupt-cells", intrcells);
     if ( res )
         return res;
 
-- 
2.56.0.385.gac671c819a-goog



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 19:49:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 19:49:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475452.1682127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3Sk-00011t-AJ; Thu, 05 Nov 2026 19:49:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475452.1682127; Thu, 05 Nov 2026 19:49:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3Sk-00011i-6M; Thu, 05 Nov 2026 19:49:30 +0000
Received: by outflank-mailman (input) for mailman id 1475452;
 Thu, 05 Nov 2026 19:49:28 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ayan.kumar.halder@amd.com>) id 1xP3Si-0000yF-4s
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 19:49:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP3Sh-00H238-DM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 20:49:27 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 6aecddad-2eae-0a2a0a5409dd-0a2a4506953e-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 20:49:26 +0100
Received: from [40.107.201.42]
 (helo=CH4PR04CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ayan.kumar.halder@amd.com>)
 id 6aecddc4-195a-0a2a45060019-286bc92a646b-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 20:49:26 +0100
Received: from CH2PR02CA0011.namprd02.prod.outlook.com (2603:10b6:610:4e::21)
 by IA1PR12MB6068.namprd12.prod.outlook.com (2603:10b6:208:3ec::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 19:49:18 +0000
Received: from BN7PEPF00000096.namprd03.prod.outlook.com
 (2603:10b6:610:4e:cafe::3b) by CH2PR02CA0011.outlook.office365.com
 (2603:10b6:610:4e::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 19:49:17 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN7PEPF00000096.mail.protection.outlook.com (10.167.245.74) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Thu, 5 Nov 2026 19:49:17 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 13:49:16 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 13:49:15 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via
 Frontend Transport; Thu, 5 Nov 2026 13:49:15 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=vqFZppIq67L8E8uzZ4tjSGjR7/aDRNd5t3AqgPHDOBcPBnu6t+1BS0nohQbbIb5/9ikMdwrxb1a9DHEvd4tRsbDsqwIzkBNP5gDdRMMBJzfdzS6dWJ4vvQemkAXEZEKhNWChdAWGx1rxJqNzFqJCSNn9nZaJnflzsl21kgb+DHWnHlqP+FUFHfnuqkyxUC91Li33jKbZdRlOG2LAhjYijN6QxLzRgm7/Lub6U5JQhZClmodfTe6m/YWmvc/EYHZxXjV3audLZ2W3N5ejsvyo/L3rVI2c3THyJ9+RLlsExOKNFiEm6Cy/J2kJ/f0ehLO/QYx37u9ySkRKPiCceqwP6A==
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=vxijgqwtMMbeEP8fdxjHUyKp3RSGALhMiKwSj2SW5fw=;
 b=LTZ3+0pDn1xgnwwLmg+OFxHwUtsJm/hQNqWWwSaxUESo6U73oNaBY7xwMrPkLQBxPLNRQf9T6u+s1qkkHoDEUiIQkUj6SuXZJ3CVXaf2nKXl7WTbGrdOG7MWgNa94GaSxEig3gX2LRR4Axqekl9+CLijRq2ddq4jO8fdrFStTcWRit7yMSCAkQkGmUXoyI6UIiiadiNB7G0X+RnK9mUg6YIhJGGiyiNMbFXJXj2spl5fywErCJO5xdb42Qe2cks0FiniDv54rORxGzDC232x4OXPo5+5kg/eHs/PNNj5GfKGm3QVxx7MeUMOAokszQkWomytyUgcFHAP5O6kZSxSXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vxijgqwtMMbeEP8fdxjHUyKp3RSGALhMiKwSj2SW5fw=;
 b=T/D0C78f4slXvfuZ4sxAwA9arnmoLtR+JryWQX50CGXcnYopQT5ac20yJ4fTtHFIMwZsvMikCOl6nlIPx9PvX6pDBCJS5l5bny3gRJixcEqiSEE57qwNytWZVzf/W+azcyNJPIWZtDVvOIArOJZ0QQ8ltAfTNXk+XEMvjMGfHOA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Artem
 Mygaiev" <artem_mygaiev@epam.com>, Matthew L Weber
	<matthew.l.weber3@boeing.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Subject: [XEN PATCH v2] docs/fusa: add the Arm Generic Timer architecture specification
Date: Thu, 5 Nov 2026 19:49:10 +0000
Message-ID: <20261105194910.1186029-1-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN7PEPF00000096:EE_|IA1PR12MB6068:EE_
X-MS-Office365-Filtering-Correlation-Id: 420525e2-2974-45e2-adb6-08df3b75e07b
X-LD-Processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
 BCL:0;ARA:13230040|23010399003|1800799024|376014|36860700016|82310400026|260925021311599003|261009223027099003|261021135927099003|260925022911599003|260925021911599003|261022113327099003|11063799006|261021121427099003|261026121527099003|261026140227099003|261028144727099003|56012099006|261022075727099003|261022105027099003|20046099003|261102123227099003|18002099003|6133799003|10067099003|13003099007|3023799007;
X-Microsoft-Antispam-Message-Info:
 gR1tRiBIH6KmQOnJwugsEniooPa3EXRfAoEttABCHypZNiIFqkXycRzOM4p/rT0ABNhBWq05k7KELJQlBF5hUFJxkRJDby5q7We7q7g2lGUacNYLzxtHA65VjYTuxCuEIpxsLLTKoQLBr5+gQWHW1tKzrnZ2WpOg8hUZYkx5JaUbNgsnT9Vk5HMPGgubbjTmr19nrTPCQvWDfSHBQDTk2oofN0eQ8iWhwv+VKeMUqblu2GY3fPhdGImMMms48mno4VSUl8SVngM+Q/pA4EaDiSSNKO/z/3IyNYb183MKSs7RcLI9GuFeUVZJjAvDwTzQ3zV1UYqZmf7x+8eNOovaCDohVL8odJc5GlTpFJ9r7SaxpIEdO3xcXLjgJblw2IhGOJ1BX1fPgMN9EA5xKU/+z0oFhoiD/HMIMDjQPtSsKqPrBMqHhDHDj2giXHhfvAW+YBlc7W+51TlLE/mUlC4j+t+64qWDEWtcLHhDamGyBOZaMAUOuav6V31suQIH/xhXwjY1DaACImHG+ati8YZna3hq12Cy0kbePa+TJw5dFlyxAdVeovUptE8E7zat5xEmy8RZ6tsPwjJ2fz1LlVtZZbuLB+e9KNudjWHAT5VdMYY3iVuuN7nJ17xfB1TK9NLXdyg4Gb5f//G+fSpJxrCm59WnJFrt08ozFoQj2E7sFWo=
X-Forefront-Antispam-Report:
 CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(36860700016)(82310400026)(260925021311599003)(261009223027099003)(261021135927099003)(260925022911599003)(260925021911599003)(261022113327099003)(11063799006)(261021121427099003)(261026121527099003)(261026140227099003)(261028144727099003)(56012099006)(261022075727099003)(261022105027099003)(20046099003)(261102123227099003)(18002099003)(6133799003)(10067099003)(13003099007)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
 6oHd4Z2aMlwQlb3e+bdKY8JPIcaLER+3XC7Fxb9LBxGdlTfoHmlLdKBG04HNIPu+b5JgoXlcfxcsmCfDEa5STX3qqRiZ8pnLKHYvMrniS3RWAHbZ9fVQVqnPey1LQqBTT7g/O0Aozk6i4yoOovAojPuaQzEzMkXaIwg/92Zdxfjy+B8V5TO5pOWAwzUpZSpwFF5VyRB/UcqdgEYN93PSIBkTwGNxFtuT0zG9HCBvkwUhhnLcK6MtEQFrdgCmXeh5e0SMn5ejtsgm+vCNlUVwtKPYx2+ATtGOqzDJdyvvuSKFU9quNyOKQlLbYVfJZV21L8lrHKNHOeLQerlKiMAbayYO5lbw8eTN/XMbkO+/Kjnb1mFdWZap78iR0aM9dJgbI+gT0SRZbxlWg/R/vBsf67EiFT08vsPO8G2DOAk8B4mwAxwZVbrYkXMH2WY5lqMp
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 19:49:17.2879
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 420525e2-2974-45e2-adb6-08df3b75e07b
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource: BN7PEPF00000096.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6068
X-purgate-ID: tlsNG-16d1c6/1793908166-F4C0777B-41ED7EA4/0/0
X-purgate-type: clean
X-purgate-size: 14630

Describe how Xen uses the Arm Generic Timer over the lifetime of a VM:
the two timers it exposes, how each relates to the system counter, what
it sets up while creating a VM, and how it emulates the physical timer
and handles the virtual one.

Also describe freedom from interference between VMs. The timers are
emulated per vCPU, so timer programming in one VM does not alter
another's. The virtual timer is isolated by the per VM offset in
CNTVOFF_EL2 and the per vCPU context saved and restored across context
switches; the physical timer by the per vCPU state Xen keeps for the
trapped accesses. A VM that reprograms its own physical timer clears its
own pending condition, which the architecture requires of a timer given
a new deadline and which affects no other VM.

Add an architecture_specs index and reference it from the functional
safety documentation index.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes in v2:
- Dropped Matt's Reviewed-by: the patch changed materially after his review
  (timer-name capitalisation and the footnote conversion below were not in the
  reviewed version), so the tag is not carried forward.
- Fixed typo "creeation" -> "creation" in the VM-creation section heading.
  (Matt)
- Corrected the CNTV_TVAL_EL0 description from "compare value register" to
  "timer value register" (TVAL is the timer-value alias, CVAL is the
  comparator). (Matt)
- Grammar: "The interrupt behave" -> "The interrupt behaves". (Matt)
- Capitalised and hyphenated the timer names in the interrupt-id table:
  "Secure" / "Non-secure", matching Arm terminology. (Matt)
- Converted the [1]/[2] references from a manual line block to proper RST
  footnotes (.. [1] / [2]_), so Sphinx renders numbered citations and
  cross-references. (Matt)
- Added the arm64_generic_timer_plat_program_cntfrq_el0 design requirement to
  the Covers: list, so the architecture specification covers all of the
  generic-timer design requirements in
  docs/fusa/reqs/design-reqs/arm64/generic-timer.rst.
- Added a blank line between the interrupt-id list-table and the following
  paragraph to silence a Sphinx "explicit markup ends without a blank line"
  warning.
- Rebased onto current staging; split out from the v1 2/2 series as a
  standalone patch (arch spec only), adding the architecture_specs index and
  wiring it into docs/fusa/index.rst.

 .../fusa/architecture_specs/generic_timer.rst | 251 ++++++++++++++++++
 docs/fusa/architecture_specs/index.rst        |   9 +
 docs/fusa/index.rst                           |   1 +
 3 files changed, 261 insertions(+)
 create mode 100644 docs/fusa/architecture_specs/generic_timer.rst
 create mode 100644 docs/fusa/architecture_specs/index.rst

diff --git a/docs/fusa/architecture_specs/generic_timer.rst b/docs/fusa/architecture_specs/generic_timer.rst
new file mode 100644
index 0000000000..bb2d066f8d
--- /dev/null
+++ b/docs/fusa/architecture_specs/generic_timer.rst
@@ -0,0 +1,251 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Generic Timer
+=============
+
+`XenArch~arm64_generic_timer~1`
+
+Covers:
+ - `XenSwdgn~arm64_generic_timer_probe_dt~1`
+ - `XenSwdgn~arm64_generic_timer_read_freq~1`
+ - `XenSwdgn~arm64_generic_timer_access_cntkctlel1~1`
+ - `XenSwdgn~arm64_generic_timer_access_virtual_timer~1`
+ - `XenSwdgn~arm64_generic_timer_access_physical_timer~1`
+ - `XenSwdgn~arm64_generic_timer_trigger_virtual_interrupt~1`
+ - `XenSwdgn~arm64_generic_timer_trigger_physical_interrupt~1`
+ - `XenSwdgn~arm64_generic_timer_plat_program_cntfrq_el0~1`
+
+Needs:
+ - XenTestCase
+
+This document describes Xen's usage of the Arm Generic Timer during the
+lifetime of a VM.
+
+Introduction
+------------
+
+The Generic Timer:
+
+- provides a system counter that measures the passing of time in real-time,
+- supports virtual counters that measure the passing of virtual-time. That is,
+  a virtual counter can measure the passing of time on a particular
+  virtual machine,
+- can trigger events after a period of time has passed.
+
+Types of timers
+---------------
+
+Xen exposes two types of timer over the lifetime of a VM:
+
+- physical timer
+- virtual timer
+
+::
+
+    +------------------+
+    |  System Counter  |
+    +--------+---------+
+             | System Time Bus
+             +----------------------------+
+             |                            |
+             |                            v
+             |                        +-------+       +----------+
+             |                        |   -   |<------|  CNTVOFF |
+             |                        +---+---+       +----------+
+             |                            |
+             v                            v
+        +---------+                  +---------+
+        |  CNTPCT |                  |  CNTVCT |
+        +---------+                  +---------+
+        +---------+                  +---------+
+        | Physical|                  | Virtual |
+        |  Timer  |                  |  Timer  |
+        +---------+                  +---------+
+    ( PE )
+
+The physical timer measures the passage of time in relation to the physical
+counter, CNTPCT_EL0. The physical counter starts from zero when the system
+counter starts, that is, at power-on or reset, so its value is not related to
+when Xen booted. Xen derives its own system time (``NOW()`` / ``get_s_time()``)
+from it by subtracting a snapshot of CNTPCT taken at boot, so that system time
+is measured from Xen boot. The physical timer is accessed by the following
+registers:
+
+- CNTPCT_EL0 - physical count value
+- CNTP_CTL_EL0 - control register
+- CNTP_CVAL_EL0 - compare value register
+- CNTP_TVAL_EL0 - timer value register
+
+The virtual timer measures the passage of time in relation to the virtual
+counter. It is used to broadcast the virtual time (physical - offset). Offset is
+set by Xen (CNTVOFF_EL2 register) during VM creation. As a result, the virtual
+time will report time from the creation of the VM. It is accessed by the
+following registers:
+
+- CNTVCT_EL0 - virtual count value
+- CNTV_CTL_EL0 - control register
+- CNTV_CVAL_EL0 - compare value register
+- CNTV_TVAL_EL0 - timer value register
+
+CNTFRQ_EL0 reports the frequency of the system counter. However, this register
+is not populated by hardware. The register is writable at the highest
+implemented Exception level and readable at all Exception levels. Firmware,
+typically running at EL3, populates this register as part of early system
+initialization. Higher-level software, like an operating system, can then use
+the register to get the frequency.
+
+Xen reads the counter frequency from the device tree (the timer node's
+``clock-frequency`` property, or the firmware-populated CNTFRQ_EL0) and relies
+on that value being correct; it is a configuration input to Xen's system time,
+not something Xen can independently cross-check against hardware.
+
+Generic timer usage during VM creation
+--------------------------------------
+
+While preparing the device tree for a VM, Xen creates a timer node (based on the
+device tree bindings [2]_ and architecture specification [1]_) for the VM. For
+this, the host device tree is expected to have a node for the generic timer.
+
+During the VM creation, Xen sets the offset (CNTVOFF_EL2) used to broadcast the
+virtual time for a VM and assigns the following per processor interrupts for
+timers.
+
+.. list-table::
+   :header-rows: 1
+
+   * - Name
+     - Interrupt id
+
+   * - Virtual timer
+     - 27
+
+   * - Physical Secure timer
+     - 29
+
+   * - Physical Non-secure timer
+     - 30
+
+Xen reserves the 27, 29 and 30 interrupt ids in the virtual GIC. The exception
+to this is for hardware VM, where the VM will be assigned interrupt numbers the
+same as in the host device tree.
+
+The parent interrupt is linked to the Generic interrupt controller node.
+
+If the host device tree node for the generic timer contains the property
+"clock-frequency", the same is passed on to the guest device tree.
+
+During the VM vCPU creation, Xen initializes the internal/background timers (one
+for physical timer and one for virtual timer).
+
+Generic timer interface between Xen and VM
+------------------------------------------
+
+VM can make use of both the physical and virtual timer.
+
+Physical timer
+^^^^^^^^^^^^^^
+
+Xen traps VM's accesses to system registers related to physical timer (except
+CNTPCT_EL0). This is done to allow Xen to emulate the physical timer for a VM,
+that is, to check that the access is permitted and to translate the compare
+value the VM programs, which is an absolute physical counter value, into Xen's
+system time. Xen does not route the physical timer interrupt to guest or itself.
+Instead, it makes use of the internal timer used for the physical timer
+emulation to schedule the interrupt injection into the VM.
+
+The flow can be depicted as follows:
+
+::
+
+    +---------------------------------------------------+
+    | VMs read or write                                 |
+    | any of CNTP_CTL, CNTP_CVAL, CNTP_TVAL             |
+    +-------------------------+-------------------------+
+                              |
+                              v
+    +---------------------------------------------------+
+    | MSR/MRS instruction is trapped by Xen             |
+    +-------------------------+-------------------------+
+                              |
+                              v
+    +---------------------------------------------------+
+    | Xen reads or writes to the register               |
+    | on behalf of VM                                   |
+    |                                                   |
+    |  1. For read access : Xen returns the value from  |
+    |     the VM's vcpu physical timer context.         |
+    |  2. For write access : Xen saves the value in the |
+    |     VM's vcpu physical timer context. Depending   |
+    |     on the value, it schedules the internal timer |
+    |     for interrupt injection.                      |
+    |                                                   |
+    |  Increments the VM program counter                |
+    |  and returns control to VM.                       |
+    +---------------------------------------------------+
+
+Virtual timer
+^^^^^^^^^^^^^
+
+Xen does not trap accesses to system registers related to virtual timer.
+The timer context (i.e. content of timer registers) is saved/restored during the
+vCPU context switch. At save time, Xen initializes an internal timer to make
+sure the VM's vCPU is scheduled at the time of the next virtual timer interrupt.
+The virtual timer interrupt is first routed to Xen, masked and injected into the
+VM. The interrupt behaves in a level-sensitive manner, meaning the timer will
+continue to signal the interrupt until one of the following situations occurs:
+
+- interrupt is masked
+- timer is disabled
+- firing condition is no longer met
+
+Xen masks the interrupt (using the CNTV_CTL_EL0 register) before injecting it
+into the VM to avoid an interrupt storm that could otherwise occur if the VM
+did not handle the interrupt properly. This masking is specific to the virtual
+timer: Xen does not mask the physical timer when injecting its interrupt (see
+the physical timer section above), and that difference is what the virtual and
+physical deschedule test cases verify.
+
+Freedom from interference
+-------------------------
+
+The Generic Timer is emulated per vCPU, so timer programming in one VM cannot
+alter another VM's timer state. The mechanism differs between the two timers.
+
+Virtual timer isolation
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Each VM has its own virtual time base, which Xen sets in CNTVOFF_EL2 during VM
+creation, so the virtual count a VM reads is its own. The virtual timer
+context, that is the compare and control registers, is saved and restored per
+vCPU across context switches, and the internal timer Xen uses to schedule
+interrupt injection is per vCPU as well. Every emulation path acts on the vCPU
+that trapped, so one VM enabling, disabling or rearming its virtual timer does
+not change what another VM's virtual timer is waiting for, nor when it fires.
+This isolation assumes the per-vCPU virtual timer context is saved and restored
+on every vCPU context switch; that save/restore is the premise the freedom-from-
+interference claim depends on.
+
+Physical timer isolation
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The physical timer is fully emulated, and the compare value, control value and
+pending condition Xen keeps on a VM's behalf are per vCPU. One VM's accesses
+to CNTP_CTL_EL0, CNTP_CVAL_EL0 or CNTP_TVAL_EL0 are trapped and applied to its
+own context only.
+
+A VM that writes CNTP_TVAL_EL0 or CNTP_CVAL_EL0 while its physical timer has a
+pending condition clears that condition and re-arms the timer. This is the
+behaviour the architecture requires of a timer that is given a new deadline,
+and it affects only the VM that performs the write. It is not a loss of an
+interrupt belonging to another VM.
+
+System counter isolation
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The system counter itself is read-only to a VM and monotonic, so concurrent
+reads from several VMs cannot interfere with one another. Both timers derive
+from it, the physical one directly and the virtual one through the per VM
+offset described above.
+
+.. [1] Arm Architecture Reference Manual for A-profile architecture, Chapter 11
+.. [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/timer/arm,arch_timer.yaml
diff --git a/docs/fusa/architecture_specs/index.rst b/docs/fusa/architecture_specs/index.rst
new file mode 100644
index 0000000000..395e3c1225
--- /dev/null
+++ b/docs/fusa/architecture_specs/index.rst
@@ -0,0 +1,9 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Architecture specifications
+===========================
+
+.. toctree::
+   :maxdepth: 2
+
+   generic_timer
diff --git a/docs/fusa/index.rst b/docs/fusa/index.rst
index 5f1e8acfc4..b3c72ec7d4 100644
--- a/docs/fusa/index.rst
+++ b/docs/fusa/index.rst
@@ -7,3 +7,4 @@ Functional Safety documentation
    :maxdepth: 2
 
    reqs/index
+   architecture_specs/index

base-commit: c4a09c112c391ffc1aea33afff49ffb28156fbdb
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 20:10:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 20:10:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475477.1682136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3n0-0001w2-15; Thu, 05 Nov 2026 20:10:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475477.1682136; Thu, 05 Nov 2026 20:10:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3mz-0001vv-UE; Thu, 05 Nov 2026 20:10:25 +0000
Received: by outflank-mailman (input) for mailman id 1475477;
 Thu, 05 Nov 2026 20:10:24 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xP3mx-0001sS-FA
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 20:10:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP3mw-00FPFb-OJ
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:10:22 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece285-e002-0a2a0a5209dd-0a2a4501c1ea-32
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:10:22 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece2ac-5984-0a2a45010019-94a38ff14fea-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:10:21 +0100
Received: from pps.filterd (m0367130.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5HgAQ8339101
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 20:10:20 GMT
Received: from cy3pr05cu001.outbound.protection.outlook.com
 (mail-westcentralusazon11013010.outbound.protection.outlook.com
 [40.93.201.10])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hrvnm3fyw-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 20:10:20 +0000 (GMT)
Received: from DS1P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:8:451::6) by
 PH0PR16MB4710.namprd16.prod.outlook.com (2603:10b6:510:14c::6) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.10; Thu, 5 Nov 2026 20:10:15 +0000
Received: from DM3PEPF000265B0.namprd02.prod.outlook.com
 (2603:10b6:8:451:cafe::31) by DS1P221CA0001.outlook.office365.com
 (2603:10b6:8:451::6) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.522.4 via Frontend Transport; Thu, 5
 Nov 2026 20:10:15 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 DM3PEPF000265B0.mail.protection.outlook.com (10.167.23.39) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4
 via Frontend Transport; Thu, 5 Nov 2026 20:10:15 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5HiN1U977248
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 15:10:14 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrpwad-7
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:10:14 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id P3mmxKzet7GL1P3mnxc72w; Thu, 05 Nov 2026 20:10:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppford; bh=ersnkD1Gkm4Hfqlsy+y7Y7pOziu
	4aoNXDL+Od2HaFtg=; b=n0RhYhlZHpDirnlIZwDIfttjA1zhgojABxW1ewgY0bP
	76rYOu9E8Dn6xEGuBX2hUaSBjELa+RVq2g/YSlfTBCVJrW0IoD9M6/XM49KSj1pv
	nwhO/ynDlDXrq16XOJpyZLgVa2kT2/Sq12GiAR40YqYDzVqrM6mcTBf/JUHw54mZ
	ySB5oF0iQuogJFbt7CUkKrue+eW/3DQYc2YU6gOfPAic2dBQRDbwOVUslPkWOjsT
	nuUeyK0bmbELjP3LHErJieesN4xHbbo4kMpTr16/nLmSwVIVYj9gTl3tbt4mtI//
	bChImPW6pmUQF1TF5vBR1jjrl6T97ptTZa1dWnMM97w==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=i4TNRh++eEIVQufUcC1crCvjmJ791OtIwiEdtweTvXAz60+gJTz154CXLO/3bbeYcOaZ49eVUdq+VqckxyHtpiv7Ds8oa3UClYMKAUxmdOXeWPYflV4M4relhtUMn3duktUiF1ujxX+Eq+G3cDjwmIb/aZQSiE9SZveESZkM3VP1BY8Yy3wWGgqZ0wBmomtiC4lTGYsp9P4M1MTS6BBDitimqVlmHKuLRv18TX6SEzaZCWB7ACxoHLKu+NIFqI5jdwrHUAZJvsHyQIW8SCv2pqK5HPx2kxP/NGnTITT0a3lomTevEnnSUmmiDbnc3COg9+KvbH34zjNuHZSFsc8fJg==
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=ersnkD1Gkm4Hfqlsy+y7Y7pOziu4aoNXDL+Od2HaFtg=;
 b=m7j2TFsCHmmvY+zIqYaNGhFTov6y0W3XRT7FNyD7z6qH8KbTJxklVZe/0FhwVDmKAJ5PCOPgD8kLQZ/13QRgCRYW7Wp/FYRmSU8CzHyagNJlBPS75WlOM0C7O5bOKz+EYUG8h4lf/Ikb5w1b8nFKATX9xP9YN9+A7aurXUEoe2o/GaHQPYjQI4kim8HVFqdBSbE3zWywy5xRQHExtR4y9gUUAJjGoVDHQvql3+XYRY3eAnqw63nSidnnpg6PbjtNTtPvARr/lYS5rqpGa2OWhWGnyxNoNLc2rTbQEqv/RPKvkXr0oAaFHWZPh3rz+WsiJie62KwoWxFu7CjvsiGJBw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ersnkD1Gkm4Hfqlsy+y7Y7pOziu4aoNXDL+Od2HaFtg=;
 b=HxI4S8IRHFt11lgHW3ck9Pll+TaAxkDgpNv6jEjOlSqaw5vAIBPDB79Iy+nbq1KNgFzChjRSXpHzZfmg/1RNW5z7v+yyVrvqEAaHURVWJ6IYf42dNP9yRJXmsDNvEKgma1RM8PPACuB0u1/+Dn4NwdJR7XFAgvEXfwBNnaVPSbI=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppserprodsaar;
	 bh=ersnkD1Gkm4Hfqlsy+y7Y7pOziu4aoNXDL+Od2HaFtg=; b=V2PdolL6CBs7
	cBwN53HXI+7OWO2BfDclzy8QFPv3BQbVaNXT0ItlNunCDOKbDmXEP7jAuXp+Fdep
	Yo52/nJAtyZ1AoITDpgJ0cKr2LH4AaPoTzl7WFFaq0AHidPA8l5ZXYa916VhZ2s8
	dAoydPUzrNFDxLRrKQJnMgjDaHq5EFWmY6fwAJsyXXrfhb+LRcShB32TKgLvoNjF
	Q0L5p8lM1NEfHProKpY0LVb3peS/a38vETp68A8LfbESJor388XQKGtHl4YzhLON
	UmAofvoyFlpp87kpRGJgFoLImCh+vWw8AnN9llv3Q/mzC39gw5V3slpqrB/VLw+l
	gBzQ+lTAag==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppfserpocford; bh=ersnkD1Gkm4Hfqlsy+y7
	Y7pOziu4aoNXDL+Od2HaFtg=; b=WJsT7/2hEQXOUIjDXT5euJc5BGWSDbVRl0cb
	0HGSLiiCj4k4zrMDnIaqQ+bMX2BFzFgK+K4GCS+BUtp5AVByUxKqAg4VPY3Tmgum
	SaX+padXqtuDZJPLvqT+BP6TvYr/vhtCZ4Vf+uHhta1Ami8xUakyXKq/IHFvYIr+
	TBVgh+xcRU9z8HiL6XkeSNgKghe8ztK07/lQIBvavoQmqLjvLuj5pUVd409+pLVl
	2qmI7A8Xa4cSLkoMuY65kU8M4kN8eWSPQ1lesHYsx2sMWox00wM++yldhrLVkMcp
	LLvg+0bJgkMNsnc2HSIPcI9sd5+hJTnzfn4J0DB34MDMNghGqw==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: P3mmxKzet7GL1P3mnxc72w
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
Date: Thu, 5 Nov 2026 12:10:11 -0800
To: Jan Beulich <jbeulich@suse.com>
Cc: dmukhin@ford.com, andrew.cooper3@citrix.com, jason.andryuk@amd.com,
        roger@xenproject.org, teddy.astie@vates.tech,
        xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 09/28] x86/hvm: fix hvm_emulate_one_vm_event()
 definition
Message-ID: <auzioxAtHJ1/3MZA@kraken>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-10-dmukhin@ford.com>
 <421bbdc7-400d-4ed8-b000-2d845ab88e9c@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <421bbdc7-400d-4ed8-b000-2d845ab88e9c@suse.com>
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050080
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM3PEPF000265B0:EE_|PH0PR16MB4710:EE_
X-MS-Office365-Filtering-Correlation-Id: 4a09a419-c7e6-4aac-3fd3-08df3b78ce72
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|23010399003|36860700016|82310400026|11063799006|56012099006|4143699003|261009223027099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	F4vj0AnG6jeC3+hurJ836Esj3TD/7uucgEC5vpmqyPfZx1byCxrTvTenelNs/wH9e6DN5TrK+wek3x/jA7sFp8E7Eqf0dwMzo50TE1VKF+v+hkLj26iyj/BT99J/jweadM1xHu0VLzh/ep5DGI9OUZ2/Mds0KvPETBAUOXbqUx5ILXAGZIRpOjRMyLETiNptLGBtqcVnQr7FPPl36Ymrv/wWe+0asx5dnW2XV3t+ReBi68QYbR1p9tQBpaVvFZnWzt/c4WbHSAXAao9E6zxHjvonHt0VD5AJkZJ8XDvg7wGdkuTJhk5jBrEAfgpNAhRyLLWcr9T73292LcJ/tmtiq+g6K5VI+ofkwOPWcsN3zWHGBe4DRXcIHmJSEg+KgCogPrDmnYVX5G4TlqtA8N9yWONvlXpobdJ/XkaSrnYPZQ4GQ4oyWinvzbuucO4ZKQIIu8hdzCRQpa42pm7u1wHSDf9rIa251cWBN+pz5wFabEZytkF3E1vBgHA7RfyytgVBtQG5ugZ+tNmEz41viKDyqhhxaWkJ4f68KHfHuh8HjUouPP1RHmLwuf1b8tfdbweoVTHLKxAu7QL3ACKeNholv0YWkkZWQai4L0GkURw3xRuSMtsrQU/3+lHTk3yhvoqXiKsM6meujQd8N6zRaonjCZdd5yFm6Hi+mwFqzgQYRpAqsphAwBMMQJx8mCEKiIdqAB/q+Z1EXRx3VtA//9EHDQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(36860700016)(82310400026)(11063799006)(56012099006)(4143699003)(261009223027099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	3r9a1SG8P6FxqxJOgTg8egrQAGdcPQk6k4Ut+UBX7Ufyw4U3HPRb/yJ6MHZ7qD7t6NOmPYpxDceuPK2A+A3rM6rsAsjiF4HRXQE9XXxUPNVgD94DU+7OHhlc/TNaFJ7oyiVeb2pL4nPMgt0yv63UUd+EhhNESg1n5arAZpRqNMyvM2bLCwt5TYem0AygruhO/3wXy+rVFUuPuZgXmIi6v28CzR6bNKleYX8XiLS4UiGNSWP32pYMbM+u/Yul0y8WZ5O1qQoNziOjbSTFKhu8WRgH7tgIudLNCflLlSKC/m7QBhuBsGe2KhiJA1hzT1VQ2ZIsXA0cerVuaHZqpgyDc/zAayxNmDvSCmdroRSTMwzMYgfF+FuhFYU+koDWuns0kck1CekbF1UCv+l3sqJuiY5nUxPQBacix8qrgaE8wuX46/AZt1for8gz9fabUbcy
X-Exchange-RoutingPolicyChecked:
	FpSJxukWGcghAVRz7PH+oaHoXsahXm1wKlFfpTF4XTap5Pc35EGFu0nbWLbjiJwYbnYayEYGwxrIRrkbGxnR5Rm6UFnZ3Lj4Tl1fB6aKGrkwCsVtnU00u/rn5d5m69oKgOEQGmk8KpK1lKEdarDYpXu6uoFZXraNR5QJeffOMngtjKb81J4BKLRXB6xE4ucDEyRf14ScLJQjfftHr2Bzyv6e2bELIgdB7OruPfGQjr5J9ijJmniinII7T1+WHRt0HtI/HGNWEeqfvodOeBumptFVXKGrd6ROqOgtEGvn+qZrPk07iVDIg2HcZ8X4xJpKwS3AK8AAEiNKhI1oP2rKbg==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	AKpmlg8g2CvqBoDrLFxRGqOL5HfQWAnUNWQIzFnq4zaw9Lp+fsYnJ7fNRhF0fDIxSMykaoXRxlwWwMX4eL6LZhuiEI2EAwb8JELv0LC1xeloWrwm2TpnrsKKzV2SDKZr58Dl0py7e5f3/hZ5PmxHnMi5XP3/ESf26IhG7POAFctknLBG44kPuIZACNrfHdzYim8NU7WCWGn3NT0oRWi76pspxJm+H99owEXHje0tQtOCrShSYWXnDZlcV2u62GgftwD94d4PRskGFBtw8C5oVfVvfNY/CE7nlMVibXTZI8GftqKGqTBd5OtFbQqCbgpUD4m07ezwuy85ZsO02jDN8ppuGtXhVmq4kOc9bTmAunQslIHkGuwGmvsB5/cahtCA52pqFc+iykQh5zy+Y0NyyGEPSbgVicFBsa9aNTe0/1a52VLkSDF4uJtEoHEtyld9DADP0NOC5Z1Ps466ecgFBt0da9FHgFb5jAEq3DdkY7yft+u1DCokt9GNIrSXMbowe4iCJ7P2CILVA/LzSlyXJd1Hw2A6xAuiFoMYaH+L/+qSmz4K9AFaTI8IQL63KzDCb9foKSOBYAk+gCdJ7YZPRrDlo8OA4YGvJRpsFt5YPZqC+iXHV+k+3aTpp5GK+Ll+b/p6cjiP0UoO05+xRUNKqQ==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 20:10:15.3004
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4a09a419-c7e6-4aac-3fd3-08df3b78ce72
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DM3PEPF000265B0.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB4710
X-Proofpoint-ORIG-GUID: UOOKT-mkVT6JynH2rayiDWX_9H_Q_65u
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDA4MCBTYWx0ZWRfX6FD3jhN2d1gg
 eJrcuogu39ExzqHmWCQdRdIMreJV1q04gs3+7NDVa4RGOZCGURbKDNHZg6E5SB+2iTGvQowQVw2
 bJ0/gnbPomerOwuXDFRJHsPGu6uKup+YTUq39eHspNuDWm+FHlj6
X-Authority-Analysis: v=2.4 cv=QfjzLcbv c=1 sm=1 tr=0 ts=6aece2ac cx=c_pps
 a=dDG42FMqTjgm/c7QxIpGBg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=kj9zAlcOel0A:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=vnUQfov-gS4s1L7hHvr-:22
 a=cbNQJ9GKAAAA:8 a=ADSr9sXkiUwMa2rtvkAA:9 a=CjuIK1q_8ugA:10
 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-GUID: UOOKT-mkVT6JynH2rayiDWX_9H_Q_65u
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDA4MCBTYWx0ZWRfX6LngpkItUk92
 ZyhPhjmaPKCxKiHt2HtA9H+KqxUyJrWuGk3Dc9OHmM+LUa2lhAuJ4gwDqT1xKq1Og843dJsKUkW
 M4cpQ0rlsApcj4GhFqUNSGA9u2s8dysGy5F+gY/uuKCTm8KJZu6VIiy1eZEcHD6207e1bZbmfOn
 2igB69SxqkXo4qn8zAEbf0Ocw5imTu8kWuHU08/B4d6HedPFfx0OG36QBgWKqFDwp+9hIyTrGds
 CiITYsz0gZ6AG3ZjnSQWyWwVjShNfSCTyfDIPvKSqPrlUFmM1JUzxqghJirEKoZyG7+N1rucAYJ
 mciI02hRhJHD1ONSz2qE0xraXvwpDMvzYctEK/Itrl76jRBRjGMh+p6MGXhkfBtegkS/yRYnSbZ
 PXlDWHyAtiKTbFlDYIwfATWF5NweC6xBhzWetdqhuo28C8PvvyBqUZn5vYf5b0f3voV2PYEtZ0b
 tBCiLKy/8P3jNn2XJRw==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 lowpriorityscore=0 adultscore=0 impostorscore=0 priorityscore=1501
 malwarescore=0 clxscore=1015 suspectscore=0 bulkscore=0 phishscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050080
X-purgate-ID: tlsNG-d62444/1793909422-1DC79757-1BF72C8C/0/0
X-purgate-type: clean
X-purgate-size: 388

On Thu, Nov 05, 2026 at 09:30:02AM +0100, Jan Beulich wrote:
> On 05.11.2026 02:33, dmukhin@ford.com wrote:
> > From: Denis Mukhin <dmukhin@ford.com>
> > 
> > Add empty definition for !CONFIG_VM_EVENT case.
> 
> Which is needed because of?

That is a fix for *-randconfig runs with AVIC series:
VMEXIT_AVIC_NOACCEL handlers can call hvm_emulate_one_vm_event() 

> 
> Jan
> 


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 20:12:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 20:12:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475488.1682144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3ol-0002W8-CD; Thu, 05 Nov 2026 20:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475488.1682144; Thu, 05 Nov 2026 20:12:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3ol-0002W1-8s; Thu, 05 Nov 2026 20:12:15 +0000
Received: by outflank-mailman (input) for mailman id 1475488;
 Thu, 05 Nov 2026 20:12:14 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xP3ok-0002Vt-9d
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 20:12:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP3oj-001MVf-F5
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:13 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece306-e002-0a2a0a5209dd-0a2a4501a852-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:12:13 +0100
Received: from [148.163.146.23] (helo=mx0a-00498f03.pphosted.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece31b-5984-0a2a45010019-94a392172908-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:12:13 +0100
Received: from pps.filterd (m0367126.ppops.net [127.0.0.1])
 by mx0a-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5IX0Av2137923
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 20:12:11 GMT
Received: from co1pr03cu002.outbound.protection.outlook.com
 (mail-westus2azon11010001.outbound.protection.outlook.com [52.101.46.1])
 by mx0a-00498f03.pphosted.com (PPS) with ESMTPS id 4hry6615xh-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 20:12:11 +0000 (GMT)
Received: from DS7PR03CA0042.namprd03.prod.outlook.com (2603:10b6:5:3b5::17)
 by SA1PR16MB5850.namprd16.prod.outlook.com (2603:10b6:806:3b2::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 20:12:03 +0000
Received: from CH1PEPF0005BD5B.namprd02.prod.outlook.com
 (2603:10b6:5:3b5:cafe::af) by DS7PR03CA0042.outlook.office365.com
 (2603:10b6:5:3b5::17) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 20:12:03 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 CH1PEPF0005BD5B.mail.protection.outlook.com (10.167.244.244) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4
 via Frontend Transport; Thu, 5 Nov 2026 20:12:02 +0000
Received: from pps.filterd (m0426318.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5HiNfZ716348
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 15:12:02 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnxs4pypa-4
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:12:01 -0500 (EST)
Received: from localhost ([19.12.76.221]) by cmsmtp with ESMTPSA
 id P3oVxIt0Mf5COP3oWxfs08; Thu, 05 Nov 2026 20:12:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppford; bh=k9+nX7rqR0aWeqB5DqB9W5f9dYZ
	bObbrwXglaBheaE4=; b=PVum1IiB1uQQzS/Uq3NscAuzFhXs2LZ7vwVEQK5YUWa
	5wQ2F8b5zmrCC5Mo7cGh6dzFRVofCWZKQ7UeNeeRS3IvuT0+PGF/uxuHUP5K7n03
	N2Qlq8ZsZBnmhIwNM+cQ+2/m8I/rHkuSlMDpeq9eqwb5LUdPg8D6PIyoGTWpBh+a
	XcYk+Isb79AJSh9IIR+eAK1uj9/e5YhZrhJA9uG/3gpi2I3ldvQlQaKmSiqpl7tF
	GR30Nt/6/u3ie38e/+9s8KaPdAwuTzXeeCAPsBlqYKsQRDFstyMMUwQa+sBmRbhL
	6WevVeQHm+7nCsZWDk+gK2Es79/tRiTTgsDrL/vrqOw==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=n9/mlfa2T1K0uf2x/SYkkC5MUCDfHZczltmmKr52wjYwUxuKYuq+BhLmBdU3J8fpRqZA56+tDYf1WBrn+mQPF4G1pRn26ptv+vr/e4G2b5w719nFLqGEi6rPF/OCpUmzstpxlaguUqj/uJTHBhFeZwfUbtLC10rC+u3AFywbteb98ynr0eX7dDcyX0gHgLPAzu5rbImyx6tDAGOtje4mjKs1F7SjbnVYzzt70GzqiRlffRfK8wjB5Umb6fmGOl5f5O1VAwDgymk7i+g3is3MSEzSwZDD+mOQqqwmRnIJUicyl8fnFG1xuM2kldz5RavI6ey9thhlFdKd5gNxek3GKg==
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=k9+nX7rqR0aWeqB5DqB9W5f9dYZbObbrwXglaBheaE4=;
 b=FdfRxCYXdXH62cpV+rK15QRrLUZs27mHgLYS6mVXYg1oy2eyFQ08s4BOWK6TXZC6DkeGK6OvCywBkQR+blHHd0SzXg9hURIE3y9UnXgzEZJtCCjNxM5SOeQr4cp+Nlf98BmXWTR0fT0gERcJ7lpwqadMva/kq0dd+u9XJ0exi36b+nPK/GR0QOKw9TVNYbhpCP7UUBOYDYuj7dsox1D0BMbmmhvqzNe2XWNU/Rh2IVqge1sxx7wDRRFqfct3wG3USP+4rjV3ciVByvqQ3ZIpoYpfCLjJsXOEEWZQYRvYd+Sos0it4P+BGCI4YvWZ9/1/4qmQLtG9pvDn3Z3p6Q2FNQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=k9+nX7rqR0aWeqB5DqB9W5f9dYZbObbrwXglaBheaE4=;
 b=Eh4hmwRpREoSaVvepgDTjqurx55zUCmjcol4RcY4n1tO5xwVryKTPwacbJlBVxtmlbLURoSO/omZWT32EBdlT8Aq/uYqmpC+b9uhNqiCDZWggwWaaQVxANUaK/iI56ueGPi0UGYbz/jeXZh5Lo4xmCpusqZlkhsL507tdC6mYGQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppserprodsaar;
	 bh=k9+nX7rqR0aWeqB5DqB9W5f9dYZbObbrwXglaBheaE4=; b=gIfoZRky5H/H
	/WS9Zdw2MfeVkY3WcHdpObNqM3J2mOapWDGe+3Em6pzgB4nkesfO5QFScW9Rw1nn
	EnVSrK6/avvl+h/vELu6GybDdx0u6x7HAQUoLIoMi8VYhlAgOz07aTepIkNdYkT8
	+39E3awzbcTYm51oQA4QoxJmyhq5Q5p6JZQjm1MR7CP23T8s55VoI76Vi7OXTMkX
	+vJ6Y/PNiVJ54XqpMu6LDuTT5sA1JHkuhurfm2nTvEIYnSTQYAIn1BKiICitYp6F
	oqQ7mIVt9NWy/Gg7ZQguIOZ2crAIpGG0pLXlEkeu7BUL2vEHpfy+rlLecS9BMvyo
	thXUDA1Q5Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppfserpocford; bh=k9+nX7rqR0aWeqB5DqB9
	W5f9dYZbObbrwXglaBheaE4=; b=DOuLnb/OZ2keDE8KaDI2Rt+tqKNZVkLx3YRZ
	+gYWFZeM9DQ2RbIoSIYrxUOssKUGqn8EEZ3am4hDTPz+HY5SSM0LhbWhqP5UD8em
	OVZ9dqC0W+l3haqjFXpL+yi+y1WePdyeVaZluI0yBjo2ix8JiNngNhliQ4CXf6Qo
	8sC+aueKPvYMImRQdg25bfN3qcB4UGo3v0BzRyabLXgFTUuSRTBYfBmZhKX5m9s/
	XYh7Tg9QR7vRyaeHey0+RlqVFPMW+mo/wcPg4iSOk6JwrpPeZsjmx7pGINzspgBv
	6EoWcZlavchDgOryWamubw3HdqbXlfMovz4hUgAvZWkeXGISKg==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: P3oVxIt0Mf5COP3oWxfs08
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
Date: Thu, 5 Nov 2026 12:11:59 -0800
To: Jan Beulich <jbeulich@suse.com>
Cc: dmukhin@ford.com, andrew.cooper3@citrix.com, jason.andryuk@amd.com,
        roger@xenproject.org, teddy.astie@vates.tech,
        xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 14/28] x86/hvm: vlapic: update signatures of both
 vlapic_{clear,test}_*
Message-ID: <auzjD+GxOTZ1uHDR@kraken>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-15-dmukhin@ford.com>
 <022aebef-ed2a-460f-81ca-4fce5742f904@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <022aebef-ed2a-460f-81ca-4fce5742f904@suse.com>
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 suspectscore=0
 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050080
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0005BD5B:EE_|SA1PR16MB5850:EE_
X-MS-Office365-Filtering-Correlation-Id: b2842d74-21f1-456f-214d-08df3b790e81
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700016|23010399003|376014|22082099003|18002099003|6133799003|10067099003|4143699003|56012099006|11063799006|261026121527099003|261026140227099003|261028144727099003|261021123027099003|261021135927099003|261102123227099003|261021121427099003|261022105027099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	5voUbar1d24xdsw9iE2eCcIVyvdVUC3qNSMvQb5xU6todUZPt11V7XyQ/sQtSSwnacBVAakhSKAwfWLihDc83B1ZKc43mwFiDdj+5kutmscxZvv/KzrHEEJz/vCg3mHlhI5DW5NPTUKv/nqc2TWggpzzhVCelQ72Wb9GX2JyWYqAldDJtRTgKc1XE5Z2DePXjibScNDxx2yvI4Ig6/TFu6Q2Eg8RHD0adFMbcSPajHS4T/p/UOemrr+Z3UJL+g0xJziaYTM8QyzHMuey42CL85E3zBGTgEMPMx2lDKglOsFoBnzAR+XSONEJgnjD9eWvMKDaQ7d/Y9H5GWr2Lmo9JCwjvDbEJ6ByL2NJcthgSEeIFlKezeV9ti8cV4PPawEXIDUPEfGb87QzJUsh3nSXgEktGk9gnZKIqiIHDrVUEnNRKYWnEXA8Xm0VoXQWpVfzXD/sOOZFeEVp/TrrVfzxV5nkq3EhlXgrDDOiZwu7teTO/zDNipewVuMTPn8/FeSc0EkKFlPLR+IurmOiLCN/uZQZYdgWZDmc9K2HfC9/yzwft/NbnzpdyZiMSjWO6A6JvcmNSHoJhTbBalTha9ADJaPozPsMTKQqSHJyk7G5RoswIsVvYPT89n/erp3eBJCXfNf6UqZnDWDlnQDUzxWaACqhulonE+F2lS0l80xfNH8a0CTp+vCGJb6kKsX02uIzTybbi30iwkJzKkPrDY1cCQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700016)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(4143699003)(56012099006)(11063799006)(261026121527099003)(261026140227099003)(261028144727099003)(261021123027099003)(261021135927099003)(261102123227099003)(261021121427099003)(261022105027099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	qCO6HMp6fUpORkCfkt6U03SFyHAuGarrY8N/vL9M3PUQBEvuC/t6knR4N5TKOzd+dmGrq0dR1VURAu2IlTMj4076i/vqAnWqXYWuf75cpflWH5j1YZILagam3jyJmOa5yCHOiH+w75A9hWTqRxh8K6kV+7Ue27uF2IgSwZcu0KHbVlbPvh4HClNCIlevNfG6Z0qw2vg1qVgb+mDvJ3apJ4lpLN7XIDbuHim5jVpwtIZ2IBGjIFamDdtvPYRV6B88ztiWzGBM9rNjp79U2Ae9ngoDYkStIMP/ABdlqX2gRl2bGEepgfLrmfjkomWCizbfracpcqA/tRhAYN8Z8CXzide4LXOYH28InqDeX/UBpgnqqBR1fJ+5KplAgbKNQSr6j9NfSLZJ9Yv6wMRkXpux8ZUcDqU1J/NVJ7T9azNzRmJz6Yiz/GMSnGwcCPHUfpfH
X-Exchange-RoutingPolicyChecked:
	E6+qwwoHJ27c8IXmDP274ZafUJLB41X0heD7VTtrvM/6eCjSwkoXqpiCUEIxr/zay6o9SUB6sGLHvvEG+Tya81lUZQ5Cx5tkCQRhrZVwNkl9TygZLo6QWbR1WkuVvOgsFhRO8iwMgTP7x1OOWYy6NK+v5gy17RgRVEXe9UyxuNCMMd2opEE1ReWgjA9RZLROmVIRogo8YMZhPSowQHXaVPIR/RvXS6UYZLaFra/am45fqefFWfjW+MlyrOjeKOUFPeKswsItaNFBqGChQnAl4ioD76mVmWi7tng2y1UK5SanvN7Id67llPWSZszRCvuKXACmQot1a0FFGXpi5ygl2w==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	ffq1Jtkp1tPPRgGDh/ObfrEpwzcRtv32u9+/JL5KVOqUHN0eLXb7wx+cHLnRjxU1RLoy4OfXod9hFFLlrgNcbJy5uvwcFjU7uJd9mvPGvcaoonUrPG2AHesSXpm75mHDSebhWH4jAWZwb4NOVzdGFjaRqkjQftc3jZ3cDJspOUKliWhgpCcrMvdogVIbya/nqNYjHl1GiWjRpHpt9XBpBhVX9nH1r7R6sgAndKj73cliqpaY2IyikCu3C7FtY8eH5/wSSILF0Xd9/uudViRkNzPLVEJPdlvB7/1QPdAGupRZzak6RgXuwBd1KEuxPfadBM/OE6PviCAMReDWMQZJxJy8P2wFa5yKPf6WMm+DyTSOoCQ+ASggr8xtqMMA+9T+jyY8tp6Xd4lIunN9q28BosUbx8pVX8W56yzKkiaqG9rwJRY2Avm9cgsuljqkQH+7gcDS7S4lVPbpKJwGyu2uZdPRLXdoN68c7x5yCNPJi8qgPQJgmXa0YBJHaO542kNX+HaIFZT75QOLvr24vqiCys1+slJcigUWgi/tOpxmWhh/1iEAcd5iEnzfZOC08Tb2LFZ2VIJLUgHADum1wswSxpF8mf/p1Z3uhjVDoAXozO82iGITh2arCtj/oD3Rtt9fpFrP9LotzJp724kVF76VFA==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 20:12:02.7896
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b2842d74-21f1-456f-214d-08df3b790e81
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CH1PEPF0005BD5B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR16MB5850
X-Proofpoint-GUID: xf4CyuPQfGqvA2Xy6gbRO5nGHRukhC-R
X-Proofpoint-ORIG-GUID: xf4CyuPQfGqvA2Xy6gbRO5nGHRukhC-R
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDA4MCBTYWx0ZWRfX5O1CdzS4IAt/
 IOmfilbYRdJUzWZyJuMcieNAV0MmOWNzUS7FYRkZO1J0RMEhlzTqohou+i0xobnCqRUO/AQy+aw
 qvooVpz982GKty8cif3vK5ihNEcOZZP7uYBlD3yIFH+gAEu5aSZn
X-Authority-Analysis: v=2.4 cv=bNODs/+Z c=1 sm=1 tr=0 ts=6aece31b cx=c_pps
 a=tLhGFq4bAmKo+yvJBjszOw==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=kj9zAlcOel0A:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=-OawqTZBqJjt90xPb8wn:22
 a=cbNQJ9GKAAAA:8 a=ZkvK363a-EHjJ4peWMoA:9 a=CjuIK1q_8ugA:10
 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDA4MCBTYWx0ZWRfXyUnm8sGMfa5S
 69pyHvjL1qGb3MKhZH8m5J0nQVM1T4gnJUaEHLjtnfBnBzDmoa6/cUir/iUVwjRWmEKwWD+EJM9
 K3YtZDokLGPiVDgAfoS2NeR4DM5BE8pfIN80ESD1M+60ay5lLB9ItEcKa6YfuJrC7rQkD6e1eTw
 BoxgQV7+g7P/LKAbLHl4QBVnWONYKBIfFhRjhpbuhodO0zzkoUuXRc62iQmttnY0skBAYT5o6iH
 4nyRCjBHs+JDaRRF4mF2aPILe62MldARx0D5PtcV2sjPoNfP6c6Qte1mi7+OGi66NiZwVniHwgc
 G3gbyLpNPZ2S/Dn28LiFtnqNOIPvgLmPYjkMqRLC9aKH1uBTt21Jh/Z77/v4UCLPPX7lYXusMXg
 GTyREypA7rXacV8lb0PA5BJOZ/LV72qqV897VYfnMqytAnvLf5W8Q6qUekgOtFH7AxqN79eVGK9
 +tjwozRqnrWSBrSIcXw==
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0
 malwarescore=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0
 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050080
X-purgate-ID: tlsNG-d62444/1793909533-BC359757-F2B3DDB9/0/0
X-purgate-type: clean
X-purgate-size: 1991

On Thu, Nov 05, 2026 at 09:33:17AM +0100, Jan Beulich wrote:
> On 05.11.2026 02:33, dmukhin@ford.com wrote:
> > --- a/xen/arch/x86/hvm/vlapic.c
> > +++ b/xen/arch/x86/hvm/vlapic.c
> > @@ -85,14 +85,14 @@ static int vlapic_find_highest_vector(const void *bitmap)
> >   * IRR-specific bitmap update & search routines.
> >   */
> >  
> > -static int vlapic_test_and_set_irr(int vector, struct vlapic *vlapic)
> > +static int vlapic_test_and_set_irr(struct vlapic *vlapic, uint8_t vec)
> >  {
> > -    return vlapic_test_and_set_vector(vector, &vlapic->regs->data[APIC_IRR]);
> > +    return vlapic_test_and_set_vector(vec, &vlapic->regs->data[APIC_IRR]);
> >  }
> >  
> > -static void vlapic_clear_irr(int vector, struct vlapic *vlapic)
> > +static void vlapic_clear_irr(struct vlapic *vlapic, uint8_t vec)
> >  {
> > -    vlapic_clear_vector(vector, &vlapic->regs->data[APIC_IRR]);
> > +    vlapic_clear_vector(vec, &vlapic->regs->data[APIC_IRR]);
> >  }
> >  
> >  static int vlapic_find_highest_irr(struct vlapic *vlapic)
> 
> Each of the functions only having ...
> 
> > @@ -166,7 +166,7 @@ void vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig)
> >  
> >      if ( hvm_funcs.deliver_posted_intr )
> >          alternative_vcall(hvm_funcs.deliver_posted_intr, target, vec);
> > -    else if ( !vlapic_test_and_set_irr(vec, vlapic) )
> > +    else if ( !vlapic_test_and_set_irr(vlapic, vec) )
> >          vcpu_kick(target);
> >  }
> >  
> > @@ -1414,7 +1414,7 @@ int vlapic_ack_pending_irq(struct vcpu *v, int vector, bool force_ack)
> >           !viridian_synic_is_auto_eoi_sint(v, vector) )
> >          vlapic_set_vector(vector, &vlapic->regs->data[APIC_ISR]);
> >  
> > -    vlapic_clear_irr(vector, vlapic);
> > +    vlapic_clear_irr(vlapic, vector);
> >  
> >      return 1;
> >  }
> 
> ... a single caller: Do we actually need those helpers?

Yeah, I would rather drop these...
Thanks for suggestion!

> 
> Jan
> 


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 20:22:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 20:22:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475506.1682153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3yW-0006Nw-9N; Thu, 05 Nov 2026 20:22:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475506.1682153; Thu, 05 Nov 2026 20:22:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP3yW-0006Np-6h; Thu, 05 Nov 2026 20:22:20 +0000
Received: by outflank-mailman (input) for mailman id 1475506;
 Thu, 05 Nov 2026 20:22:18 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xP3yU-0006Nh-Gm
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 20:22:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP3yT-00FQwA-MI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:22:17 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece573-e002-0a2a0a5209dd-0a2a4507bf9a-8
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:22:17 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aece578-b4ea-0a2a45070019-94a38ff16658-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 21:22:17 +0100
Received: from pps.filterd (m0367129.ppops.net [127.0.0.1])
 by mx0b-00498f03.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5KDwwn3784145
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 20:22:15 GMT
Received: from sj2pr03cu001.outbound.protection.outlook.com
 (mail-westusazon11012029.outbound.protection.outlook.com [52.101.43.29])
 by mx0b-00498f03.pphosted.com (PPS) with ESMTPS id 4hry489ef0-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 20:22:15 +0000 (GMT)
Received: from PH7PR17CA0030.namprd17.prod.outlook.com (2603:10b6:510:323::25)
 by SJ5PPFE6E92704F.namprd16.prod.outlook.com
 (2603:10b6:a0f:fc02::ae6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Thu, 5 Nov
 2026 20:22:09 +0000
Received: from SJ5PEPF0000020A.namprd05.prod.outlook.com
 (2603:10b6:510:323:cafe::1a) by PH7PR17CA0030.outlook.office365.com
 (2603:10b6:510:323::25) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 20:22:09 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 SJ5PEPF0000020A.mail.protection.outlook.com (10.167.244.43) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4
 via Frontend Transport; Thu, 5 Nov 2026 20:22:08 +0000
Received: from pps.filterd (m0426317.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A5HiW7E977431
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 15:22:08 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-use.ser.proofpoint.com
 [3.215.31.156])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hnydrpwmy-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:22:07 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id P3yHxHBZRz55iP3yIx3wOo; Thu, 05 Nov 2026 20:22:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppford; bh=ve0Ydx3Hqgjq+XMCE7y3EJ0sh0F
	LCsw2yxkIN7KZfw8=; b=WydDKLuNvcO9nqCO4xjGTfLD7LgpD4E/bTeWFD+726y
	hFU5EzKTd6G06pbdl5D+4DZZngdLIX8gdxh087MLcNyy/cHhclJKlRwnbqGrFfv3
	W86hdGF8z/uBS7FjgiQX5zp9kB0Q6EqkDY/vqeFj8C+hqoaXSNduIy92EbTuK75z
	lkw089IponmO4mWA2dqnoaAgfqFQPvhq+wXs9jo05rCfOqt3iK3w637FjiIijQct
	7UPefHhrODCFaYmmYR1kZmFeGMKyOl3cdTpjGvVrgmTecJCk9Pmt6VtODtmbZY2Q
	GsCYD46SkUKaQ3l9NIry3YJhx8jf/qVLGYo+D9rjhQQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=y3dNkacPb3RkpjnCsej+toBGgEV8O7eeRFIf3x5U5TYq87UruMyW6pSbIkZzrN3g4fWsHxw/IvmOkGkXP3B+PJAoH6+Zyx9bY76eT4mQOzLBndXI1dZy4SiwAzmZGvPu0VZbnQZwmFotTgB2sgEoc9i/tuvH84k9R7NcvvA8lIS3NZz7KUmlnD6R4IL/ZFei7PUgvSPbjcwE9Vzb4VZw3RmkJlZjDSZ38hw7IgJU/Jjxijz3UjvuCbLeeqlCD5w4VV3XD8ZrFU6F4AUNxJ77DXYzDFUAky96EjDdC4Q9fz60L+ldgvYmL5+eSFByu1AKjl3lHeYdJjC8rwraZy7x5A==
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=ve0Ydx3Hqgjq+XMCE7y3EJ0sh0FLCsw2yxkIN7KZfw8=;
 b=wh57s4LmW2V7iDsLLB1VFjPTZ2Vz47thPFf3a+tJ6D9wXraf731+VMly1K9ZtybtYSYMGvHAMGeYz/CDFPk5CIiFLVeoXvbj1rn6nhctu08DTQ2c4yicj04jkFtw1BcQzxU3N13Lra0s28U0VcXP+PasKkfcFJY4hbQD7Fn742aCFXxQ9SSyd077GVgEyQEZqfyldE0/cgMd7wKUhGxsXIcrdmfRzKNeO77tBsh+oaeeImYj/zhaB+tlrKUzchtLRNbzj9giiAIyo6S+QMUU7bLt7xMONhdLUigVJS54Mvo09zyOH1EZT/bjPh+F018CM/pEfjkgx838soaiz7jLQw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ve0Ydx3Hqgjq+XMCE7y3EJ0sh0FLCsw2yxkIN7KZfw8=;
 b=RkM7DTeqpfGjDAbkRFGvBR4PGN6RcJwKp8M9yRG7g5aIY/P1g2BiaWtmLkrMa8AuDobE+BJlkP7dtIKFbc8yCmjXeZImVDgviWHRoVkan/iU6vRDf+Dc4kZ9ys50BW1909CCTayXUq5g39WlDkhULIvfXJR3uKsSedzUnNTed/o=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppserprodsaar;
	 bh=ve0Ydx3Hqgjq+XMCE7y3EJ0sh0FLCsw2yxkIN7KZfw8=; b=i4a+lo+edqYR
	Uja/OLfqeAZ3utZixE7hZSNwaZGvQv1+qupDU5fbCS7OHk90uXjdKSRfnIF54jw4
	tr0+uTrAfjjruQtHQtpt27+sHVTuDeanv1v8RX8Kr2UvvNSEUt5EKzUPvXJPa2Tq
	snU7f8dmrnkMSVEhU3sfW/gpwcsML6+nK8bkiexkuX4lA/AVARus2CzCzFHV2DXH
	DVlaFGG8l5SK/+o0iBKB0G5lOeKifKslQ0c4XgaDSXoeQlWRugioZPW2buRC1qxq
	HkaZvx/HBzf4jFo6a197SXBE2dieT2VC5u488VCGRNtL5RU5ZF2AXe/lFduIUKqu
	Y4FKtqMKtA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppfserpocford; bh=ve0Ydx3Hqgjq+XMCE7y3
	EJ0sh0FLCsw2yxkIN7KZfw8=; b=lA3jwnV5CbqAkRkKDaohYpC0vRKiwFJ+8jA8
	j0Pus/Ldo2oKF77zPTewXkgIS6hyqi+jY2YPmeL+Ei2jECWpIDoL/XjF5Usc3ajl
	if3eoOKCHw6vRxvYlOFgCATwYCeupnuoikCwnyQ2/xMGJOPg+DYcExFtGRkGlVsl
	eL37l8Y01HMOh4WDUvD7De4Jlg7em5RFfYrLHA0rhPJla4eJXMYBmeSr4TMRYrMW
	o7j93UWMVURJevxR+0sBuRr0CcfvSOxxCe++7sdDH/xRfDAgKmOjZcvnuJFJlYpf
	+baD8LUw15czOGWeS/9WrOJQwRUX+otHA53i9xan4belYm7MHg==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: P3yHxHBZRz55iP3yIx3wOo
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
Date: Thu, 5 Nov 2026 12:22:05 -0800
To: Jan Beulich <jbeulich@suse.com>
Cc: dmukhin@ford.com, andrew.cooper3@citrix.com, jason.andryuk@amd.com,
        roger@xenproject.org, teddy.astie@vates.tech,
        xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 26/28] docs: add coverage for svm_avic=
Message-ID: <auzlbS6B2k0yJJOF@kraken>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-27-dmukhin@ford.com>
 <70db6d7a-5e48-4a39-8553-4718f7ccdf73@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <70db6d7a-5e48-4a39-8553-4718f7ccdf73@suse.com>
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0
 spamscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0
 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
 route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610300000
 definitions=main-2611050080
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF0000020A:EE_|SJ5PPFE6E92704F:EE_
X-MS-Office365-Filtering-Correlation-Id: 7e212d4a-4407-4b8b-0f16-08df3b7a775a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|1800799024|376014|22082099003|6133799003|10067099003|18002099003|261102123227099003|261026140227099003|56012099006|261022075727099003|11063799006|261022105027099003|4143699003|261028144727099003|261026121527099003|261021121427099003;
X-Microsoft-Antispam-Message-Info:
	7MCa+YJJJbVdf5YCIQ2NR4XlGJX1p5peclD1KQanyyfjDcnuQsVHG3aY7ja7ajCJ2LtpuB82q5vw/WYNpsycT1zV1ghAoJnPLm4+scIppMe+98sZZT/vNexvORpZOX8nPvlYok/UBqC7eNqdyNbT8B8OOaZOdFkJPP/ev4P5NoycWbsnFpfJPqdVqV5MjyfXg83NMKkWebBvhjGAlbTdrHf9d9+cWr90A485xVqNRl+em9DELB1u4gLipqOC/550JFA6qf7wFhqgwGjB0xhx7qRp7mVs+VjtoLzkMONpZVbm4jJDSDxwaNapfQhw0NKQJMVjPJZSJZgcnpA3wpUm86t+zzE8sOPZEDS4wcPylNhA9iOCLOr4NHSiTcrtTeZxiJgjjm5uTXemVCrDg739d7xWIKkw7OH3fFz/OmLR7l3LaG6GAB/QGihc8FhbrYhwlBIU+7dZd2mOco719VJaAJwIjTFgKPfSWeI0sjYdWv+/o4CGUnkFx5vaqgsUQVKfTqpkglfmNILtvZh+LeN0eveQ5Z71dEHNSqVkhPYq2AVy/7QGffoYtPw2FZrQOIRbsOmDdTqXOapZofWZfXim8cmgZBB2PpqUAJFYm8EVBe9PaoHCX43z/iAO4xF9Vlrnqnr3iz+TFq0DYUGd8fvbTOegeJaEPBfw/W4MkVsoNmkFop5w9NaCV9sM4WxQsb/weHEXgAhWl/xrBHG28oCkWQ==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(1800799024)(376014)(22082099003)(6133799003)(10067099003)(18002099003)(261102123227099003)(261026140227099003)(56012099006)(261022075727099003)(11063799006)(261022105027099003)(4143699003)(261028144727099003)(261026121527099003)(261021121427099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YteAU7qGtf8TfD8dy+RVQyTIGLj1tHXPeJ0msrsHaGs3RT17eD+bgzekNfY4Q2O8tuNGRvZrFhmjKv5HtY98CAyDQZW51xjO81o8erqmGaJ0IYdlM3SzFfDcCIbuW7ztjCxmarCkG05+CcGwrw494N5dbAui5In0TB+/rrkxqjotHYigfGoPxbYnnjBhlYWs8M4SeIyTcOlEjjLE+X930OanQnx1BGDhvULZvA7o5H5vHEQD0ACeWe117aHApZbFNEI/aNeW045nlFdLLejg32yHOjDoyZjEGjuP/wcbrvh2p/HmMxtI6yeKG94yX7JG/WefHbY3yR/esVvZ89WviByzfy0zwyNiQNKWxEyJuLB77E3ArQUt7OaC+4lKXNOKW60lvlCrgcb/FK2ATslv3WdTtFDjvYIfkFD/W7qnyBD1fIuYYMv5yEQgkwV9NhgR
X-Exchange-RoutingPolicyChecked:
	QLO5R06xns+cb72r5uzeZFFkXijeiAa1SOf7eZE8evNcTCionoVsFGtQENJ/5j5VfbmLuUvyG+mVmHor8ba/HfVEAA1bZ8OqkxOwgNNHLrrfEJlWNQAbZFORlzQ4tKuW6rs8+FSa/fyFU2sJajICQt0rzWksCLoGZdpQc3Kzj4q9oSFQPFHoSZosEszLaAbQccz0V0kx1Py0q9+0dvZQIacpC9ayLTVsg2x9o27Wlp715X8HlMYjf2Pmhn2H2LoGwBUWCqGbtocvUzXvy0WJ4fifOO04BBxIQkErWViiz5/BSSwqbP3FxEverh6bchORSR47m4oTVCL6t0YGoP0eGw==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	WKOIG0N51+4+2H7cjfho1AQ5oZ74McUloJb8IGQfjGziPIoqnT6EcCeo6SVBUleW0TbcB1qe1LGTcZEpqecz/76rnpU6BgQ3EqsQWIda5LTaPwlC+sTdmL5gGCHFByxGqBbFgHF8dQZB1Ay5WB/q6Sijgi+rAtyJRuLB9tzAIX03ifDwZX/IN5uGN2x1miGcE6y+qrf3sp+lWVG99bI+1m4g2Ugd1djfHSdU26hIXxnRS7Zk2xnA1JVVaZuYgx3pNRsHkNM53ePTskuP/MkGNwuGRyyL7GS/PWoq6TXSZnH8yQeT8bB1Tt1pa0e6zSo/wqtUogTFyXP1Ff6t3rKTEtiRwsYsp0jKfptFIfjABtA7RBJULPRPDF49q5039ptYPeABS6pAFxlrLHZYEuPvojGgRzk+t9f673WMphv5A4xbxwquHOqINpIiKZnYQITn7SKzAW3FOPO04VymO/UETu+KhewMDDP89AGU1rrl/KyqdWhY6nM5DFoE3u7kEziXZ9fM1roJeQQtAcDQnxsMB27cYgYzP82egqwbke18yS5Lpl3BtgEiOKpJTVo0KH4D1awQ4Bi2l68TNosTBVjJci3KNqzr6aBI4MDRitE2QulEfXVLQWv6VvQFC64pb6MHb/fC3dzOD30ICHMxGQ9EHw==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 20:22:08.3843
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e212d4a-4407-4b8b-0f16-08df3b7a775a
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF0000020A.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ5PPFE6E92704F
X-Authority-Analysis: v=2.4 cv=AZEkjHXG c=1 sm=1 tr=0 ts=6aece577 cx=c_pps
 a=ZKvdAGA7hMB+bqOj1cvlrg==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=kj9zAlcOel0A:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=X3KReqg2EL6A36SYCKpz:22
 a=cbNQJ9GKAAAA:8 a=KOL-L4hMpH293Zm-Ow0A:9 a=CjuIK1q_8ugA:10
 a=G69WFyCBNqGPyalROSdv:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA1MDA4MSBTYWx0ZWRfX2tU9mnOJqDm8
 O0CjPHcu9D0Xt4OBwkPG2/XoSTvSNm+GpCNzNKC77B+dsp19JgSex4y+EFg8wqFgFc8yTQbpVFf
 ETlVMs/vpPmVN8SyrxEWs9NsESwJfwT2xlabMtahwhsgkEH1Kw0Sx0jBOcfkcQULp9gl0q8SUXm
 7zgv/GD9s8bpCeOV/cO4rC3MhZUaYnJxIBzA/jnJwU3yfNzy74wpdubBMS6sPsxbwcz+BeVNKk8
 eyyuT0zoHdi9ZyfsgbXM4Y1vAdcpJVw0Fblcml/35IrjysYQmw6rCVYDu2LW9UjI3Mp7/RdVDzB
 HzQrgv5P1bQfiVm1aXA4KotO/3D6c0JuY4cUpIy9ss0FNDfhExBAuerOnuJ4FbU7Qj//cI5vBEX
 gTUD/M1fty6yq04W6pjOxm4v+iR/inv9+AK01+C5ff0yzO9nsYfBE7hfQtzex3sJRGYGDJlUN87
 r4dDLBtlIw/rBs26NFA==
X-Proofpoint-GUID: hPLn8QhFy4sA6OhIBqMWNrLTCcucl860
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA1MDA4MSBTYWx0ZWRfXzscUe/jKF9jy
 K+mqqAVs2+R8HVqkwfkofZ4JIXRV2gmnUcwdfID8TIU68oCcF1MflpHT3NQYQlUG4ovdLzMC66t
 eydkolRusoWjNxKx7rUgP+mTjMa9eO7MBHnRHC/JxRFXekGnffa6
X-Proofpoint-ORIG-GUID: hPLn8QhFy4sA6OhIBqMWNrLTCcucl860
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_05,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0
 phishscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 clxscore=1015
 priorityscore=1501 impostorscore=0 adultscore=0 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2610300000 definitions=main-2611050081
X-purgate-ID: tlsNG-ef75cf/1793910137-A48C9AE4-D114E650/0/0
X-purgate-type: clean
X-purgate-size: 1673

On Thu, Nov 05, 2026 at 09:24:09AM +0100, Jan Beulich wrote:
> On 05.11.2026 02:33, dmukhin@ford.com wrote:
> > @@ -2673,6 +2673,27 @@ On Sappire and Emerald Rapids CPUs with May 2025 microcode or later, the
> >  `ibpb-alt=` option can be used to switch to the alternative mitigation for
> >  Intel SA-00982.  Intel suggest that some workloads will benefit from this.
> >  
> > +### svm_avic (x86)
> > +> `= true | false | nodoorbell`
> > +
> > +This option configures Advanced Virtual Interrupt Controller (AVIC), which
> > +is an extension of AMD Secure Virtual Machine (SVM) to virtualize local APIC
> > +for guest VM.
> > +
> > +This parameter is experimental and for expert configuration only.
> > +
> > +Xen has mitigatations for the following AVIC hardware flaws:
> 
> Nit: mitigations
> 
> > + * AMD Erratum 1235. A hardware flaw affecting certain AMD Family 17h and
> > +   Hygon Family 18h processors where the CPU hardware reads a stale
> > +   `IsRunning=1` bit during Interrupt Control Register (ICR) write emulation.
> > +
> > +Limitations:
> > +
> > + * AVIC in x2APIC mode is not supported.
> > +
> > + * AVIC in nested virtualization setup is not supported.
> > +
> >  ### sync_console
> >  > `= <boolean>`
> 
> This wants to be part of the patch where the option is introduced. New options

I introduced 'svm_avic=nodoorbell' later in the series, after 
svm_avic= appears for the first time. So my thinking was to document
all new options in one patch...

> also want to use dashes in favor of underscores. Plus the default setting of
> this option wants making explicit.

Will switch to dashes.

> 
> Jan
> 


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:06:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:06:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475557.1682172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4f3-0002Z8-Ku; Thu, 05 Nov 2026 21:06:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475557.1682172; Thu, 05 Nov 2026 21:06:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4f3-0002Z0-H7; Thu, 05 Nov 2026 21:06:17 +0000
Received: by outflank-mailman (input) for mailman id 1475557;
 Thu, 05 Nov 2026 21:06:16 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4f2-0002Yh-Af
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:06:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4f1-00520Y-Nn
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:06:15 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefc2-e002-0a2a0a5209dd-0a2a4504dcfa-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:15 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefc6-b57f-0a2a45040019-ac6904fed212-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:15 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 2596660147;
 Thu,  5 Nov 2026 21:06:14 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 190791F008A1;
 Thu,  5 Nov 2026 21:06:01 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912773;
	bh=rQ5eRcL8i4WiE6GtABNg6lA1lIZIpMhDQQ82RZBg9WY=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=S8CYFX4JsG8LD0hbwcgSQGkkF0ToeoZfZ+W7sYhcVvvvyId0c2kXpF/nDLh5GP73y
	 l7FqfeS0r2inh81Q2FLwfe3R1ub9kpTEp9U4p7m3RAnpnM8hrf7E3MImfStu2/hGgP
	 LnSVVcH69MPY1AsZqhp2mJ3P4GZH0mZ86gqHSeymX92cts+0GqS28OGx/cZF7XHj1k
	 GL6MG2AyfpLshr0MBMZ64Ltlwq9gJBLs0ISnJcnAK79zb/Tnl4XS5J9SjY4vmytNA5
	 ICvmM/z0LTXJeWId5xk8NfZc8pCl5JdEtXH1WbDlcIxV8F3Lr49iZHWLQljjvgkmcx
	 kdk0o/ntqNkiA==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:32 +0000
Subject: [PATCH 01/14] xen/privcmd: convert mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-1-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1514; i=ljs@kernel.org;
 h=from:subject:message-id; bh=GK8WxTPthKHfR93FzNaT4NLMedimx0+ktYQW4BobhBY=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF99VPp6bFPmGrbg90HFf0669ovdC6+z+yPP6qT6/
 43lmrDCjlIWBjEuBlkxRZbnX8T3B4mEzeu84O8GM4eVCWQIAxenAEzkyiVGhhddyb5uM/686WNQ
 fPLi1lmb7Xrn/+udbrtjGvdeLJrHfj7D/5yLgT+f8MQUZDw4PNFjcW0v43WvQwzhSqW5cg/9JO3
 rWQE=
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-ebf023/1793912775-C08D9B50-5BFF02B4/0/0
X-purgate-type: clean
X-purgate-size: 1516

Move from the deprecated mmap hook to the new mmap_prepare hook.

The hook only sets VMA flags and operations. The VMA private data is
already NULL at this point, so we no longer explicitly clear it.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/xen/privcmd.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 5e56fbc93447..16f96c05af2d 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -1630,14 +1630,13 @@ static const struct vm_operations_struct privcmd_vm_ops = {
 	.fault = privcmd_fault
 };
 
-static int privcmd_mmap(struct file *file, struct vm_area_struct *vma)
+static int privcmd_mmap_prepare(struct vm_area_desc *desc)
 {
 	/* DONTCOPY is essential for Xen because copy_page_range doesn't know
 	 * how to recreate these mappings */
-	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTCOPY |
-			 VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &privcmd_vm_ops;
-	vma->vm_private_data = NULL;
+	vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTCOPY_BIT,
+			   VMA_DONTEXPAND_BIT, VMA_DONTDUMP_BIT);
+	desc->vm_ops = &privcmd_vm_ops;
 
 	return 0;
 }
@@ -1666,7 +1665,7 @@ const struct file_operations xen_privcmd_fops = {
 	.unlocked_ioctl = privcmd_ioctl,
 	.open = privcmd_open,
 	.release = privcmd_release,
-	.mmap = privcmd_mmap,
+	.mmap_prepare = privcmd_mmap_prepare,
 };
 EXPORT_SYMBOL_GPL(xen_privcmd_fops);
 

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:06:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:06:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475554.1682163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4er-0002Km-Ec; Thu, 05 Nov 2026 21:06:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475554.1682163; Thu, 05 Nov 2026 21:06:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4er-0002Kf-Am; Thu, 05 Nov 2026 21:06:05 +0000
Received: by outflank-mailman (input) for mailman id 1475554;
 Thu, 05 Nov 2026 21:06:04 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4eq-0002KZ-Ey
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:06:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4ep-00FGA3-Rz
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:06:03 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecef9d-8faa-0a2a0a5109dd-0a2a4508b642-44
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:03 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefba-f659-0a2a45080019-ac6904fed0c4-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:03 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id E0A56601E3;
 Thu,  5 Nov 2026 21:06:01 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB99D1F0089F;
 Thu,  5 Nov 2026 21:05:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Subject:Date:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912761;
	bh=r1JpUn64UzzrZcFRUjQyI0S3ynWk5u6y/MaberysBgo=;
	h=From:Subject:Date:To:Cc;
	b=n5OND3BxSSsOe8W9Zhi3cBnfi6d7KzMyxkuyo5/trkHHVydx/yyOeQwXqKCdDUFcT
	 m0c7eQ5D+U2buHxE7rSfcgJl5cMehkqtS+hpW9IxvuXOMi55EMjADBA8fn4bKVqGbY
	 QpdNhrT0rU9HdBZA+CuDfrevb5VT/Sx+nUsDraIAPhBmT6/yt6g6bda0HLCJEF8Rbm
	 u4rk8HUwvqrwddVG/k8amH7FQhV89FGy1AgFqoqMKw9DPQswpB9EwKW20G2YExJRhk
	 9nSCRJkbQMXNq6KKP+CtmuUzVVPRlageLXK7RVKP4WcD+F7KQux77Q7qE1lDODIcT6
	 zYdrWy6DfJfSw==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Subject: [PATCH 00/14] mm: convert further simple mmap hooks to
 mmap_prepare
Date: Thu, 05 Nov 2026 21:05:31 +0000
Message-Id: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x3MXQqAIBAE4KvIPregBhVdJSJEt1roRzQiiO7e1
 uM3zMwNmRJThlbdkOjkzPsmMIUCP7ttIuQgBqttZYw2uLiD8BOuq4tDTBRdItTWN3WwpVQIZCz
 5yNd/3PXP8wJmgP8laAAAAA==
X-Change-ID: 20261101-late-2026-mmap_prepare-02c87d23101e
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2622; i=ljs@kernel.org;
 h=from:subject:message-id; bh=bTkwJYolGBPtNOiPTfj3hFZfQ60rxzsNf5rIq+CvvT4=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF/tK9xtdq7Cd9m+05LfHinP2t1rLvjzsfyV5AfsU
 /zCH+pydZSyMIhxMciKKbI8/yK+P0gkbF7nBX83mDmsTCBDGLg4BWAiX68x/GI6KjBdv8dWvKl/
 o4fajxstEyfeVrhs6VhWqdT9b1lOzElGhhMsTpzms2K+v4ia9+OlpuvFLR9T93vz6S/zZZ6pzvr
 6EAsA
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-c1860d/1793912763-CD54C87B-EB5C5A15/0/0
X-purgate-type: clean
X-purgate-size: 2624

Continue the conversion of users of the deprecated f_op->mmap callback to
f_op->mmap_prepare. Keep things gentle this cycle by targeting simple
cases.

No functional change intended.

Build tested on x86-64 (allmodconfig, each patch individually), i386,
arm64 and ppc64le.

<<>>

David, Andrew - I wonder whether one of you guys could take this series
through your tree? Since it's kernel-wide it seems sensible to take it
through an mm tree.

Thanks!

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
Lorenzo Stoakes (ARM) (14):
      xen/privcmd: convert mmap hook to mmap_prepare
      KVM: PPC: Book3S: convert spapr TCE mmap hook to mmap_prepare
      mshv_vtl: convert mmap hooks to mmap_prepare
      vduse: convert IOVA domain mmap hook to mmap_prepare
      x86/sgx: convert vepc mmap hook to mmap_prepare
      udf: convert mmap hook to mmap_prepare
      selinuxfs: convert mmap hooks to mmap_prepare
      xen: convert xenstore interface mmap hooks to mmap_prepare
      soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
      soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
      tee: convert shm mmap hook to mmap_prepare
      misc: bcm-vk: convert mmap hook to mmap_prepare
      ptp: vmclock: convert mmap hook to mmap_prepare
      vhost-vdpa: convert mmap hook to mmap_prepare

 arch/powerpc/kvm/book3s_64_vio.c        |  6 +++---
 arch/x86/kernel/cpu/sgx/virt.c          | 15 ++++++++-------
 drivers/hv/mshv_vtl_main.c              | 14 +++++++-------
 drivers/misc/bcm-vk/bcm_vk_dev.c        | 20 ++++++++++----------
 drivers/ptp/ptp_vmclock.c               | 19 +++++++++----------
 drivers/soc/aspeed/aspeed-lpc-ctrl.c    | 20 +++++++++-----------
 drivers/soc/aspeed/aspeed-p2a-ctrl.c    | 22 ++++++++--------------
 drivers/soc/qcom/rmtfs_mem.c            | 22 ++++++++++------------
 drivers/tee/tee_shm.c                   | 14 +++++++-------
 drivers/vdpa/vdpa_user/iova_domain.c    | 12 ++++++------
 drivers/vhost/vdpa.c                    | 23 ++++++++++++-----------
 drivers/xen/privcmd.c                   | 11 +++++------
 drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++--------
 drivers/xen/xenfs/xenstored.c           | 14 ++++++--------
 fs/udf/file.c                           |  8 ++++----
 security/selinux/selinuxfs.c            | 24 +++++++++++-------------
 16 files changed, 121 insertions(+), 137 deletions(-)
---
base-commit: b61fa14ce6bcbba2cb9a96feea31b760226d6b43
change-id: 20261101-late-2026-mmap_prepare-02c87d23101e

Cheers,
-- 
Lorenzo Stoakes (ARM) <ljs@kernel.org>



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:06:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:06:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475561.1682180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fF-0002v6-W6; Thu, 05 Nov 2026 21:06:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475561.1682180; Thu, 05 Nov 2026 21:06:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fF-0002uy-T7; Thu, 05 Nov 2026 21:06:29 +0000
Received: by outflank-mailman (input) for mailman id 1475561;
 Thu, 05 Nov 2026 21:06:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4fF-0002uU-94
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:06:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4fE-001UqG-MC
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:06:28 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefc3-8faa-0a2a0a5109dd-0a2a4501ca2c-46
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:28 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefd3-5984-0a2a45010019-aceafc1f9bac-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:28 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 340EF40474;
 Thu,  5 Nov 2026 21:06:26 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E7721F008A2;
 Thu,  5 Nov 2026 21:06:14 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912786;
	bh=ndCCV29odaVqmbn+iX3MfTT/qeX9oKJWHuVF4KdBH5Y=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=bE1mtiJSdVH/EQ/is2LWkUZ/C3yxYBYfLOhHqUTt/CwFIy/gYmtLkJHHuxmtn0qas
	 yO9fbotB7tujrxXdc0dnkvxIV/RhktA0O7/IfKUxqgjQUPFOkQ5XnXZtbaWRijR9Vy
	 rvAxbTT+4e6PNwgjL8QIvMIHw/zcPa1VPCvof+TgcikwT7sEhMMTQsb3zg5PapYZUW
	 2Lseo41qjhjCwu9T0ZH9xcwi/0hu1ZabSEnBK24mSHLfxURPoVykJcET2IhZ4Wtq9c
	 Hnu7ks+Oht5PHDx5NhOAkrNMXAA5S32BMROuJexLAy02FIr8+q5JXl7F26smYgLgC3
	 Q7zdGqQgYr71w==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:33 +0000
Subject: [PATCH 02/14] KVM: PPC: Book3S: convert spapr TCE mmap hook to
 mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-2-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1158; i=ljs@kernel.org;
 h=from:subject:message-id; bh=isNjWX1+rq7D/LCFpxyPlaDLPeXkCD+W3Ok7FRCKcJw=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF+9xW/CppYO03VXA+4cXPbxVIsu56wVs7KfZZ3ol
 1lwXPt+bkcpC4MYF4OsmCLL8y/i+4NEwuZ1XvB3g5nDygQyhIGLUwAm8pOXkWGz4+UDqey9qzes
 Xb+fSYpFRlBEUvKQQ1qUfs3xhguqITcY/vus+TRh5qs94ifijyrfz1sVcMt/v+Lr5WJTS9on9iz
 /dooNAA==
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-d62444/1793912788-1E867757-9CF67F6A/0/0
X-purgate-type: clean
X-purgate-size: 1160

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only sets the VMA operations.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 arch/powerpc/kvm/book3s_64_vio.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index c5f3f5b29d89..05f6f2c9a432 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -247,9 +247,9 @@ static const struct vm_operations_struct kvm_spapr_tce_vm_ops = {
 	.fault = kvm_spapr_tce_fault,
 };
 
-static int kvm_spapr_tce_mmap(struct file *file, struct vm_area_struct *vma)
+static int kvm_spapr_tce_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &kvm_spapr_tce_vm_ops;
+	desc->vm_ops = &kvm_spapr_tce_vm_ops;
 	return 0;
 }
 
@@ -282,7 +282,7 @@ static int kvm_spapr_tce_release(struct inode *inode, struct file *filp)
 }
 
 static const struct file_operations kvm_spapr_tce_fops = {
-	.mmap           = kvm_spapr_tce_mmap,
+	.mmap_prepare	= kvm_spapr_tce_mmap_prepare,
 	.release	= kvm_spapr_tce_release,
 };
 

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:06:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:06:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475569.1682190 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fS-0003Nq-6p; Thu, 05 Nov 2026 21:06:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475569.1682190; Thu, 05 Nov 2026 21:06:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fS-0003Nh-43; Thu, 05 Nov 2026 21:06:42 +0000
Received: by outflank-mailman (input) for mailman id 1475569;
 Thu, 05 Nov 2026 21:06:40 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4fQ-0003Mh-Pg
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:06:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4fQ-00525r-6h
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:06:40 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefc2-e002-0a2a0a5209dd-0a2a4504dcfa-36
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:40 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefde-b57f-0a2a45040019-ac6904fee86c-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:39 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 9B68560232;
 Thu,  5 Nov 2026 21:06:38 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 891FF1F0089F;
 Thu,  5 Nov 2026 21:06:26 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912798;
	bh=wDJov6C3ftgFR9HVA3C77e8dvsBn9mUiFAP4oxc5gso=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=F+NMyrHFBUcpcvdLlYfefS9fChSe5iibGSD2sqAN7qVA/rV6ebmZ5qCXW5xusd1tJ
	 Jq/lz3cUiwOdjnCDcRSzFRFu7nCMmpfyDOOFdQuAyOEPJCLx3Nvs2COSwLWAY5luYJ
	 c2PcdAwxTx9dk3y4715xe2jzU34js3UES+LJWtjJFLPrBAOPwyLzTVL9W0nM8OWnIz
	 JfGm0qQ4ai24kUi0kYZbeEvGkjT0pdY6txBuK83Ejj0f6en7vHE+xr28CVUhMWP+QX
	 Wkx0vicLtz6iHdxQrV8XIL/A4dr/uVz0V7DkZU92pqsOFZbwWhAB53aV0yjoilJZF9
	 E0g82mI+iLpOQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:34 +0000
Subject: [PATCH 03/14] mshv_vtl: convert mmap hooks to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-3-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2014; i=ljs@kernel.org;
 h=from:subject:message-id; bh=JxN0KjNUmrQ4SKv8FW2PS979jApnXc/RSZcYUQZ0Su8=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF8tcZL1VfXfq85qV/gLon/N4+6fdOGa+o2dyru2B
 X1qn+Fu3VHKwiDGxSArpsjy/Iv4/iCRsHmdF/zdYOawMoEMYeDiFICJ9C5nZPjw5P6i+ClZTf6V
 xw7ZXvyxmPe92OKKh6GXFoi2ysxea3eA4RfzDdW0Q1MsE8q3KzNPSkh3W7fOaWFC8sa6wI0Ncf0
 57/kB
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-ebf023/1793912800-528C9B50-7E5F2752/0/0
X-purgate-type: clean
X-purgate-size: 2016

Move from the deprecated mmap hook to the new mmap_prepare hook for both
the mshv_vtl and mshv_vtl_low devices. These only set VMA operations and
flags.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/hv/mshv_vtl_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/hv/mshv_vtl_main.c b/drivers/hv/mshv_vtl_main.c
index d8225242c73f..e372d4c0188d 100644
--- a/drivers/hv/mshv_vtl_main.c
+++ b/drivers/hv/mshv_vtl_main.c
@@ -832,9 +832,9 @@ static const struct vm_operations_struct mshv_vtl_vm_ops = {
 	.fault = mshv_vtl_fault,
 };
 
-static int mshv_vtl_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mshv_vtl_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &mshv_vtl_vm_ops;
+	desc->vm_ops = &mshv_vtl_vm_ops;
 
 	return 0;
 }
@@ -852,7 +852,7 @@ static const struct file_operations mshv_vtl_fops = {
 	.owner = THIS_MODULE,
 	.unlocked_ioctl = mshv_vtl_ioctl,
 	.release = mshv_vtl_release,
-	.mmap = mshv_vtl_mmap,
+	.mmap_prepare = mshv_vtl_mmap_prepare,
 };
 
 static void mshv_vtl_synic_mask_vmbus_sint(void *info)
@@ -1283,10 +1283,10 @@ static const struct vm_operations_struct mshv_vtl_low_vm_ops = {
 	.huge_fault = mshv_vtl_low_huge_fault,
 };
 
-static int mshv_vtl_low_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mshv_vtl_low_mmap_prepare(struct vm_area_desc *desc)
 {
-	vma->vm_ops = &mshv_vtl_low_vm_ops;
-	vm_flags_set(vma, VM_HUGEPAGE | VM_MIXEDMAP);
+	desc->vm_ops = &mshv_vtl_low_vm_ops;
+	vma_desc_set_flags(desc, VMA_HUGEPAGE_BIT, VMA_MIXEDMAP_BIT);
 
 	return 0;
 }
@@ -1294,7 +1294,7 @@ static int mshv_vtl_low_mmap(struct file *filp, struct vm_area_struct *vma)
 static const struct file_operations mshv_vtl_low_file_ops = {
 	.owner		= THIS_MODULE,
 	.open		= mshv_vtl_low_open,
-	.mmap		= mshv_vtl_low_mmap,
+	.mmap_prepare	= mshv_vtl_low_mmap_prepare,
 };
 
 static struct miscdevice mshv_vtl_low = {

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:06:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475579.1682199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fe-0003uV-EF; Thu, 05 Nov 2026 21:06:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475579.1682199; Thu, 05 Nov 2026 21:06:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fe-0003uE-AH; Thu, 05 Nov 2026 21:06:54 +0000
Received: by outflank-mailman (input) for mailman id 1475579;
 Thu, 05 Nov 2026 21:06:52 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4fc-0003s7-Pv
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:06:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4fc-00FGJ8-6v
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:06:52 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefea-e002-0a2a0a5209dd-0a2a4503bb02-2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:52 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefea-fae8-0a2a45030019-ac6904fe9d94-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:06:51 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id B47AC605F7;
 Thu,  5 Nov 2026 21:06:50 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C70931F008A2;
 Thu,  5 Nov 2026 21:06:38 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912810;
	bh=lMfCHuJWDITAzVX5MILlRUAfVtlxLQX6U8OJOyztS0Q=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=hyoADFGoZhaTWJkzXcW3KcbEavv04p8OShbOv92vBdUSDNLHC33p5UKp1V2NVcrld
	 kDlm4+Dh0N0ewg6c+CsYgrDJ3ZyQfeLnEMeGuWWhUOa1JWAqXOF3EIa9dU7hEYQurC
	 UD8uUTqIpkS8973AB0tlJQaOj0TVHyTL25qiKUL5PD3kHvTGhvyIEbBHKWXDn6uHka
	 RoxnfP2r7Ju1UsLJ3jtzSicq0aWOqHOlTJAt5o8ROmzR1tSO11ZVBsg+5OZeT4rkNp
	 9MHuwVurtm4FxobT/XptLLk7AHWfQIwdo04JpdFyuH/BI40j4CP1PTKjHXSsUS4XXm
	 oJDzW5rZ2ElnQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:35 +0000
Subject: [PATCH 04/14] vduse: convert IOVA domain mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-4-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1527; i=ljs@kernel.org;
 h=from:subject:message-id; bh=f+7KpJr4q75MSHX3Bd7fDuPR7a/rNIIIf/bMN+NEgYc=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF8du8y356wo75UohnvW1WmG2azZxoEG9l+mvHw8c
 ZHxmh0fOkpZGMS4GGTFFFmefxHfHyQSNq/zgr8bzBxWJpAhDFycAjCRiBOMDB0R1y2sCsxZCz9d
 WmjgP+cKZ4HBz+NXpWMcv1wV1woTUGNk+FWtznBzgiPz5WrBrQefRpSzaacb3N2dE78n6eYhful
 ubgA=
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-33051d/1793912812-756834E9-5C12C4EC/0/0
X-purgate-type: clean
X-purgate-size: 1529

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only sets VMA flags, operations and private data.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/vdpa/vdpa_user/iova_domain.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/vdpa/vdpa_user/iova_domain.c b/drivers/vdpa/vdpa_user/iova_domain.c
index b6c958224b7c..64465f690a4d 100644
--- a/drivers/vdpa/vdpa_user/iova_domain.c
+++ b/drivers/vdpa/vdpa_user/iova_domain.c
@@ -575,13 +575,13 @@ static const struct vm_operations_struct vduse_domain_mmap_ops = {
 	.fault = vduse_domain_mmap_fault,
 };
 
-static int vduse_domain_mmap(struct file *file, struct vm_area_struct *vma)
+static int vduse_domain_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vduse_iova_domain *domain = file->private_data;
+	struct vduse_iova_domain *domain = desc->file->private_data;
 
-	vm_flags_set(vma, VM_DONTDUMP | VM_DONTEXPAND);
-	vma->vm_private_data = domain;
-	vma->vm_ops = &vduse_domain_mmap_ops;
+	vma_desc_set_flags(desc, VMA_DONTDUMP_BIT, VMA_DONTEXPAND_BIT);
+	desc->private_data = domain;
+	desc->vm_ops = &vduse_domain_mmap_ops;
 
 	return 0;
 }
@@ -606,7 +606,7 @@ static int vduse_domain_release(struct inode *inode, struct file *file)
 
 static const struct file_operations vduse_domain_fops = {
 	.owner = THIS_MODULE,
-	.mmap = vduse_domain_mmap,
+	.mmap_prepare = vduse_domain_mmap_prepare,
 	.release = vduse_domain_release,
 };
 

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:07:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:07:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475585.1682208 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fq-0004IO-Kv; Thu, 05 Nov 2026 21:07:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475585.1682208; Thu, 05 Nov 2026 21:07:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4fq-0004IH-Hf; Thu, 05 Nov 2026 21:07:06 +0000
Received: by outflank-mailman (input) for mailman id 1475585;
 Thu, 05 Nov 2026 21:07:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4fp-0004HW-Cw
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:07:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4fo-001Uwp-QA
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:07:04 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecefe9-bab6-0a2a0a5309dd-0a2a45069c3e-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:04 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aeceff7-195a-0a2a45060019-aceafc1fd0c0-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:04 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id EA5EB43E17;
 Thu,  5 Nov 2026 21:07:02 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 073691F008A6;
 Thu,  5 Nov 2026 21:06:50 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912822;
	bh=bqfQWE9INck3Aoq42ZNpSathvk4p8fmQAVJsjbZAm0g=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=GWekXUJtTW/bmKiTy4QB6lwJ7qbgw7vFuwUU+DOaOfg/TRAzLeM32R3kLak4qQeQ3
	 Qv4vJ9ieuL7oXsySpCaty+GruAFXFHyboa49jWYOSQ5CvYOGpKEnZ4EVlYgXyECMBV
	 SAYyovNMBS/4DJV9jvSExBs04MC2Ny8P8JjIrR64zZOycDnouZr851hmFFOt4+wNVA
	 fPiv0XZG2hDHC8h3Gwkazyekp82IqzHvmXnmVgCZg0iO26M0dmBWKapLrfZusp9wwT
	 zzsZcWlKHFiQMAFkueAeuPV0PQFvmCrLb3vSKAp9PJu0JxbVW/FD9XwOTh2SLxX8iP
	 /o3UyJrfNU3sg==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:36 +0000
Subject: [PATCH 05/14] x86/sgx: convert vepc mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-5-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1666; i=ljs@kernel.org;
 h=from:subject:message-id; bh=8M6KXM/gidl407BgZsE6l9e639j02CBQooR3iZ5mU4M=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF/NfkpnyQUdw7u/LIOuqb1l2agTvF3TyPxd3+spl
 1Y3rn9v1lHKwiDGxSArpsjy/Iv4/iCRsHmdF/zdYOawMoEMYeDiFICJyAcx/NONOFpeGCnRO6e7
 +3T/k1zGsxF7YoO6TcO7Xjvq/jC+sIuRocFi0+uncd+Ew6Qit/5Nqt5kFnHQtvGp8hbW+Lk53Av
 lmAA=
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-16d1c6/1793912824-FEA7477B-D0A69087/0/0
X-purgate-type: clean
X-purgate-size: 1668

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only checks that the mapping is shared and sets VMA flags, operations and
private data.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
index 6a1933ddc6fc..850990519ca5 100644
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -98,17 +98,18 @@ static const struct vm_operations_struct sgx_vepc_vm_ops = {
 	.fault = sgx_vepc_fault,
 };
 
-static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
+static int sgx_vepc_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct sgx_vepc *vepc = file->private_data;
+	struct sgx_vepc *vepc = desc->file->private_data;
 
-	if (!(vma->vm_flags & VM_SHARED))
+	if (!vma_desc_test(desc, VMA_SHARED_BIT))
 		return -EINVAL;
 
-	vma->vm_ops = &sgx_vepc_vm_ops;
+	desc->vm_ops = &sgx_vepc_vm_ops;
 	/* Don't copy VMA in fork() */
-	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
-	vma->vm_private_data = vepc;
+	vma_desc_set_flags(desc, VMA_PFNMAP_BIT, VMA_IO_BIT, VMA_DONTDUMP_BIT,
+			   VMA_DONTCOPY_BIT);
+	desc->private_data = vepc;
 
 	return 0;
 }
@@ -315,7 +316,7 @@ static const struct file_operations sgx_vepc_fops = {
 	.unlocked_ioctl	= sgx_vepc_ioctl,
 	.compat_ioctl	= sgx_vepc_ioctl,
 	.release	= sgx_vepc_release,
-	.mmap		= sgx_vepc_mmap,
+	.mmap_prepare	= sgx_vepc_mmap_prepare,
 };
 
 static struct miscdevice sgx_vepc_dev = {

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:07:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:07:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475595.1682218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4g2-0004mD-TP; Thu, 05 Nov 2026 21:07:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475595.1682218; Thu, 05 Nov 2026 21:07:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4g2-0004m6-Ow; Thu, 05 Nov 2026 21:07:18 +0000
Received: by outflank-mailman (input) for mailman id 1475595;
 Thu, 05 Nov 2026 21:07:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4g1-0004l3-MS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:07:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4g1-00BmBL-3L
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:07:17 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf004-8faa-0a2a0a5109dd-0a2a4509ec62-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:17 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf003-be1a-0a2a45090019-aceafc1f8042-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:16 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 3053B434E5;
 Thu,  5 Nov 2026 21:07:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C0881F008BE;
 Thu,  5 Nov 2026 21:07:03 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912835;
	bh=QKT0z8QtIRwzKrfDYLgpmoyX9J+/idevkgO1HnXZit4=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=RnuBqoflWBl9+my+oc0dxGf7vwqGAIPn/FsGegfNU3dHcec/WKV86s6Ur1Z7CgphR
	 XKnhR+RNjTNO8xHOfu/7SF8YH25vN+805KwkJu0FanhjtyA5pyhvbbpwpubqNIFDqI
	 0TVcpTKSq0Hbsoi1IvuBwqBkbcg2LUnI8ztcdNM7aUjh5w7hvqpQ6VfM7GqHQzO7sB
	 P65idNuN5d5q0GV/XG9x/f4N6e/Z8fjyllKisCJ9sQgGmYELUKRoe5PiuZNsJh9pU5
	 chtN+L8dJARPPHvocVhTuHejP5A11y7PUl2FEC/P7We+rpc+2vc3NxNzEGRFg75tiJ
	 ON7wUjneXfb7Q==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:37 +0000
Subject: [PATCH 06/14] udf: convert mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-6-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1166; i=ljs@kernel.org;
 h=from:subject:message-id; bh=DLdQ29COL0zGmxo/RqnqfZh7M8nmGGQT+1l47aYTRPY=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF+TVmThWvlNcPmraFeJkEjHwxYvPkgIt/wtrxeoz
 +A9ez2ho5SFQYyLQVZMkeX5F/H9QSJh8zov+LvBzGFlAhnCwMUpABO5fZvhn+2396kibN6ZSya4
 8c9Md3ietX1BVNqe62l2F/Zvfvurg4nhf5JVc2LZzaRWi98fwrc7JT79lmb6P+mw/7Z3Hc9+hFT
 68QIA
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-bad1c0/1793912837-BCECE034-89FEE038/0/0
X-purgate-type: clean
X-purgate-size: 1168

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only updates the access time and sets the VMA operations.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 fs/udf/file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/udf/file.c b/fs/udf/file.c
index 02e9314818dc..d5e80c6cae96 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -190,10 +190,10 @@ static int udf_release_file(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int udf_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int udf_file_mmap_prepare(struct vm_area_desc *desc)
 {
-	file_accessed(file);
-	vma->vm_ops = &udf_file_vm_ops;
+	file_accessed(desc->file);
+	desc->vm_ops = &udf_file_vm_ops;
 
 	return 0;
 }
@@ -202,7 +202,7 @@ const struct file_operations udf_file_operations = {
 	.read_iter		= generic_file_read_iter,
 	.unlocked_ioctl		= udf_ioctl,
 	.open			= generic_file_open,
-	.mmap			= udf_file_mmap,
+	.mmap_prepare		= udf_file_mmap_prepare,
 	.write_iter		= udf_file_write_iter,
 	.release		= udf_release_file,
 	.fsync			= simple_fsync,

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:07:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:07:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475601.1682226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gF-0005FP-7z; Thu, 05 Nov 2026 21:07:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475601.1682226; Thu, 05 Nov 2026 21:07:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gF-0005FI-3e; Thu, 05 Nov 2026 21:07:31 +0000
Received: by outflank-mailman (input) for mailman id 1475601;
 Thu, 05 Nov 2026 21:07:29 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4gD-0005Cu-SI
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:07:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4gD-001V0L-9K
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:07:29 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf003-bab6-0a2a0a5309dd-0a2a4502e648-38
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:29 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf00f-6ca4-0a2a45020019-aceafc1f99ca-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:28 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 698154379E;
 Thu,  5 Nov 2026 21:07:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8983A1F0089F;
 Thu,  5 Nov 2026 21:07:15 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912847;
	bh=K0Qe+brxG+0dZUrKAAGrAFU8X9IZH0VVnpzTIvw3ERA=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=EoGQCLGYUECuMK3Ryy2JPZD867vm1Nft2NyWWjYZH04COu4EW/n19poNq9sBYoVuM
	 /9L6U4I6ZY4vXlCPISOuIqoBB5h83vy6AzZrs2irL36W/r0sB/qf1ZvlmEqaeHCR98
	 Yd2HoEORahKhAsOB/TOKoJBhF5tSUb+5it9H8lS7Qhw6Evt7ES6t9E6Hi7+ZQqGPV/
	 km0fScYDuEqdFgtcf7u8IrOQsq2bqZdZcBr9xB/YyRxrFVrgKBphzww0dpecuBV/gD
	 cN1u7CBvszdIwDETsVYy/2zHoypyOCESC6YkymFo3ap/d8M1X84ZFUtyFwrTw/eilV
	 jjk9dx2yFMCwQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:38 +0000
Subject: [PATCH 07/14] selinuxfs: convert mmap hooks to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-7-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2606; i=ljs@kernel.org;
 h=from:subject:message-id; bh=7PdtcPjX+tywnOn8AbMVtXCWtyiPBNa3B2xUfxFmHH4=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF/TIhScFGkt26v86da3Ox+Yv91Wnrv55exlR5/1b
 3xS+CHGoqOUhUGMi0FWTJHl+Rfx/UEiYfM6L/i7wcxhZQIZwsDFKQATWbaV4Z/R5fMFHr++HXFy
 /Ffm97i/eD5f7pGnC1lXqB4L2nOKY1YTw/9ss1+Cbkvu1sn7vT0cwLOC8VqV2dR7TXeLg2ew97/
 Z5cYPAA==
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-720697/1793912849-660A82AC-A4B6C1B1/0/0
X-purgate-type: clean
X-purgate-size: 2608

Move from the deprecated mmap hook to the new mmap_prepare hook for the
policy and status files.

The policy file only sets VMA flags and operations. The status file remaps
a single page, so use the PFN remap mmap action to do so.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 security/selinux/selinuxfs.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 310e19efff1d..e78c65685020 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -236,27 +236,25 @@ static ssize_t sel_read_handle_status(struct file *filp, char __user *buf,
 				       sizeof(struct selinux_kernel_status));
 }
 
-static int sel_mmap_handle_status(struct file *filp,
-				  struct vm_area_struct *vma)
+static int sel_mmap_prepare_handle_status(struct vm_area_desc *desc)
 {
-	struct page    *status = filp->private_data;
-	unsigned long	size = vma->vm_end - vma->vm_start;
+	struct page    *status = desc->file->private_data;
 
 	BUG_ON(!status);
 
 	/* only allows one page from the head */
-	if (vma->vm_pgoff > 0 || size != PAGE_SIZE)
+	if (desc->pgoff > 0 || vma_desc_size(desc) != PAGE_SIZE)
 		return -EIO;
 
-	return remap_pfn_range(vma, vma->vm_start,
-			       page_to_pfn(status),
-			       size, vma->vm_page_prot);
+	mmap_action_remap_full(desc, page_to_pfn(status));
+
+	return 0;
 }
 
 static const struct file_operations sel_handle_status_ops = {
 	.open		= sel_open_handle_status,
 	.read		= sel_read_handle_status,
-	.mmap		= sel_mmap_handle_status,
+	.mmap_prepare	= sel_mmap_prepare_handle_status,
 	.llseek		= generic_file_llseek,
 };
 
@@ -419,10 +417,10 @@ static const struct vm_operations_struct sel_mmap_policy_ops = {
 	.page_mkwrite = sel_mmap_policy_fault,
 };
 
-static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
+static int sel_mmap_prepare_policy(struct vm_area_desc *desc)
 {
-	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &sel_mmap_policy_ops;
+	vma_desc_set_flags(desc, VMA_DONTEXPAND_BIT, VMA_DONTDUMP_BIT);
+	desc->vm_ops = &sel_mmap_policy_ops;
 
 	return 0;
 }
@@ -430,7 +428,7 @@ static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
 static const struct file_operations sel_policy_ops = {
 	.open		= sel_open_policy,
 	.read		= sel_read_policy,
-	.mmap		= sel_mmap_policy,
+	.mmap_prepare	= sel_mmap_prepare_policy,
 	.release	= sel_release_policy,
 	.llseek		= generic_file_llseek,
 };

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:07:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:07:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475608.1682234 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gR-0005o4-ER; Thu, 05 Nov 2026 21:07:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475608.1682234; Thu, 05 Nov 2026 21:07:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gR-0005nv-BR; Thu, 05 Nov 2026 21:07:43 +0000
Received: by outflank-mailman (input) for mailman id 1475608;
 Thu, 05 Nov 2026 21:07:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4gQ-0005j2-B9
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:07:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4gP-001V0L-ON
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:07:41 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf009-bab6-0a2a0a5309dd-0a2a450597a4-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:41 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf01c-4cb1-0a2a45050019-aceafc1fdf0a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:41 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 9FF3D439D4;
 Thu,  5 Nov 2026 21:07:39 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF3BE1F008A2;
 Thu,  5 Nov 2026 21:07:27 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912859;
	bh=8poJEEODdqpnj3NMXG7P61yssgyxm5Fvw3WLCRHvkPM=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=JJnEdLY/zYN4DtzCvHaF3aYEDTJDbnUNcVAnof1QRCeGAgIIK28vUSZ89mm0DVgQW
	 OZgvxlyxVwupAuJXa6fkzCza5MJNC5CF4+UERI+9chyH32S4KmfH+oQjkhWmNEnkdd
	 NTmlWt8u9sG20yc7yM1IhHIB4PmnviY+RktBJ2Ws3RZfCWOEYw7MPWhPLvtrNgSrJJ
	 CWHFd6q8LuEoPzf2MHgA9gMWZF6dm1M8eBYIEPRBAUhnXPyYf3T9oHdEZwrT2iaQPm
	 QADKRVvIXSwjbnMPyLbtsx5qrxDCRLncA81Gon5WQXHiJDFej/hta0SbkuIGntrRJ5
	 jkSY/KYBGfMXg==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:39 +0000
Subject: [PATCH 08/14] xen: convert xenstore interface mmap hooks to
 mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-8-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2905; i=ljs@kernel.org;
 h=from:subject:message-id; bh=uh2Od35/LsvovUiSJhdcBoUQz0og1zoAftz4JcEDodw=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF+TGLFqhuIqraPTpP99SytgzPSUeCxyfgWbx3LzR
 b22OlPtOkpZGMS4GGTFFFmefxHfHyQSNq/zgr8bzBxWJpAhDFycAjCRc4EMf6WepYU9X7CEe6LH
 mj+/A6Q+9k5zOmhSeGibH4fHZZXNfb2MDIdflcc7aDTorpSZ8Pb8zNq5Hef3JWZNCZGbx8VxZPM
 tdW4A
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-c201ff/1793912861-718AE2A1-018AE0AB/0/0
X-purgate-type: clean
X-purgate-size: 2907

Move from the deprecated mmap hook to the new mmap_prepare hook for the
xenfs xsd_kva file and the xenbus_backend device, both of which remap the
xenstore interface page.

Use the PFN remap mmap action to do so, retaining the -EAGAIN error on
failure via the action error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++--------
 drivers/xen/xenfs/xenstored.c           | 14 ++++++--------
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/xen/xenbus/xenbus_dev_backend.c b/drivers/xen/xenbus/xenbus_dev_backend.c
index edba5fecde4d..3e4cb267f411 100644
--- a/drivers/xen/xenbus/xenbus_dev_backend.c
+++ b/drivers/xen/xenbus/xenbus_dev_backend.c
@@ -89,27 +89,25 @@ static long xenbus_backend_ioctl(struct file *file, unsigned int cmd,
 	}
 }
 
-static int xenbus_backend_mmap(struct file *file, struct vm_area_struct *vma)
+static int xenbus_backend_mmap_prepare(struct vm_area_desc *desc)
 {
-	size_t size = vma->vm_end - vma->vm_start;
+	size_t size = vma_desc_size(desc);
 
 	if (!capable(CAP_SYS_ADMIN))
 		return -EPERM;
 
-	if ((size > PAGE_SIZE) || (vma->vm_pgoff != 0))
+	if ((size > PAGE_SIZE) || (desc->pgoff != 0))
 		return -EINVAL;
 
-	if (remap_pfn_range(vma, vma->vm_start,
-			    virt_to_pfn(xen_store_interface),
-			    size, vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc, virt_to_pfn(xen_store_interface));
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
 
 static const struct file_operations xenbus_backend_fops = {
 	.open = xenbus_backend_open,
-	.mmap = xenbus_backend_mmap,
+	.mmap_prepare = xenbus_backend_mmap_prepare,
 	.unlocked_ioctl = xenbus_backend_ioctl,
 };
 
diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c
index f59235f9f8a2..0cf57c286adb 100644
--- a/drivers/xen/xenfs/xenstored.c
+++ b/drivers/xen/xenfs/xenstored.c
@@ -31,24 +31,22 @@ static int xsd_kva_open(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int xsd_kva_mmap(struct file *file, struct vm_area_struct *vma)
+static int xsd_kva_mmap_prepare(struct vm_area_desc *desc)
 {
-	size_t size = vma->vm_end - vma->vm_start;
+	size_t size = vma_desc_size(desc);
 
-	if ((size > PAGE_SIZE) || (vma->vm_pgoff != 0))
+	if ((size > PAGE_SIZE) || (desc->pgoff != 0))
 		return -EINVAL;
 
-	if (remap_pfn_range(vma, vma->vm_start,
-			    virt_to_pfn(xen_store_interface),
-			    size, vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc, virt_to_pfn(xen_store_interface));
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
 
 const struct file_operations xsd_kva_file_ops = {
 	.open = xsd_kva_open,
-	.mmap = xsd_kva_mmap,
+	.mmap_prepare = xsd_kva_mmap_prepare,
 	.read = xsd_read,
 	.release = xsd_release,
 };

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:07:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:07:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475617.1682245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gd-0006Is-Mz; Thu, 05 Nov 2026 21:07:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475617.1682245; Thu, 05 Nov 2026 21:07:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4gd-0006Ii-JF; Thu, 05 Nov 2026 21:07:55 +0000
Received: by outflank-mailman (input) for mailman id 1475617;
 Thu, 05 Nov 2026 21:07:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4gc-0006Hl-DS
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:07:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4gb-001V4U-Qg
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:07:53 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf020-2eae-0a2a0a5409dd-0a2a450ca9c6-20
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:53 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf028-f479-0a2a450c0019-ac6904fec2ec-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:07:53 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 156C66062C;
 Thu,  5 Nov 2026 21:07:52 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02C4A1F00903;
 Thu,  5 Nov 2026 21:07:39 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912871;
	bh=BSFlkiRcJ1vaWlX3XB1LPFKx8VblPahiv0oUIc71Mco=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=jatg/Hxe4mTOnYc6cjv7XH6Qe+5v947GBo55sPEEMiM/wHMGub8rie+CrUhiiVCwx
	 aVKuP6kJrOh4gmHX6cKlQwCOltZMaa6SIFACvSdK4QqBQG/CN/Uh2ouIoA163WeJWA
	 aCFh4tV2gzd2PoHInFGnIOla9ytpFnr82eYrYNqA9GdHylI1ygQRjcwLTJNoIYvabk
	 wBbG24axaby51HBE4+2pC16l0d4oiS4Wb9V73xW0CHWW9aTUBuPz4elz4OZdbVKD8e
	 8OfrYLyC+4HvSiFHcBMWmBHPhMMi1Us1KhyMyvljrbaJ2Z12u3wgEMNNN5uAPkFQHQ
	 m/wM/7T6OrtAQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:40 +0000
Subject: [PATCH 09/14] soc: aspeed: convert LPC and P2A control mmap hooks
 to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-9-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=4041; i=ljs@kernel.org;
 h=from:subject:message-id; bh=b74s25V2apv18H+lPm+BPboDuVAgLBZbFTCGyriTgSw=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF8j/+Dg1ofBp3oCTIwOdz09F2xxdcKv2a/ld13+P
 93dcX7ctY5SFgYxLgZZMUWW51/E9weJhM3rvODvBjOHlQlkCAMXpwBMZNlFhv/RUsXqv5pnL30j
 aSPYuu/cnqXuLvERO4qv57Zv4rpSwbKH4X/KRYbzO3Ys7TO94nRJeu7Oa9PY2m3rtTUMC/es4TE
 q72AEAA==
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-d25034/1793912873-5093EA5B-EB350DB7/0/0
X-purgate-type: clean
X-purgate-size: 4043

Move from the deprecated mmap hook to the new mmap_prepare hook for both
the LPC control and P2A control drivers.

Both remap a range of their reserved memory region, so use the PFN remap
mmap action to do so, retaining the -EAGAIN error on failure via the action
error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/soc/aspeed/aspeed-lpc-ctrl.c | 20 +++++++++-----------
 drivers/soc/aspeed/aspeed-p2a-ctrl.c | 22 ++++++++--------------
 2 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index 4d8574cac703..9258762354cc 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -47,22 +47,20 @@ static struct aspeed_lpc_ctrl *file_aspeed_lpc_ctrl(struct file *file)
 			miscdev);
 }
 
-static int aspeed_lpc_ctrl_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_lpc_ctrl_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(file);
-	unsigned long vsize = vma->vm_end - vma->vm_start;
-	pgprot_t prot = vma->vm_page_prot;
+	struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(desc->file);
 
-	if (vma->vm_pgoff + vma_pages(vma) > lpc_ctrl->mem_size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) >
+	    lpc_ctrl->mem_size >> PAGE_SHIFT)
 		return -EINVAL;
 
 	/* ast2400/2500 AHB accesses are not cache coherent */
-	prot = pgprot_noncached(prot);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
 
-	if (remap_pfn_range(vma, vma->vm_start,
-		(lpc_ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-		vsize, prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc,
+		(lpc_ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -216,7 +214,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
 
 static const struct file_operations aspeed_lpc_ctrl_fops = {
 	.owner		= THIS_MODULE,
-	.mmap		= aspeed_lpc_ctrl_mmap,
+	.mmap_prepare	= aspeed_lpc_ctrl_mmap_prepare,
 	.unlocked_ioctl	= aspeed_lpc_ctrl_ioctl,
 };
 
diff --git a/drivers/soc/aspeed/aspeed-p2a-ctrl.c b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
index b6b7b80f842a..ad59ff28c013 100644
--- a/drivers/soc/aspeed/aspeed-p2a-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
@@ -97,29 +97,23 @@ static void aspeed_p2a_disable_bridge(struct aspeed_p2a_ctrl *p2a_ctrl)
 	regmap_update_bits(p2a_ctrl->regmap, SCU180, SCU180_ENP2A, 0);
 }
 
-static int aspeed_p2a_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_p2a_mmap_prepare(struct vm_area_desc *desc)
 {
-	unsigned long vsize;
-	pgprot_t prot;
-	struct aspeed_p2a_user *priv = file->private_data;
+	struct aspeed_p2a_user *priv = desc->file->private_data;
 	struct aspeed_p2a_ctrl *ctrl = priv->parent;
 
 	if (ctrl->mem_base == 0 && ctrl->mem_size == 0)
 		return -EINVAL;
 
-	vsize = vma->vm_end - vma->vm_start;
-	prot = vma->vm_page_prot;
-
-	if (vma->vm_pgoff + vma_pages(vma) > ctrl->mem_size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) > ctrl->mem_size >> PAGE_SHIFT)
 		return -EINVAL;
 
 	/* ast2400/2500 AHB accesses are not cache coherent */
-	prot = pgprot_noncached(prot);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
 
-	if (remap_pfn_range(vma, vma->vm_start,
-		(ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-		vsize, prot))
-		return -EAGAIN;
+	mmap_action_remap_full(desc,
+		(ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -308,7 +302,7 @@ static int aspeed_p2a_release(struct inode *inode, struct file *file)
 
 static const struct file_operations aspeed_p2a_ctrl_fops = {
 	.owner = THIS_MODULE,
-	.mmap = aspeed_p2a_mmap,
+	.mmap_prepare = aspeed_p2a_mmap_prepare,
 	.unlocked_ioctl = aspeed_p2a_ioctl,
 	.open = aspeed_p2a_open,
 	.release = aspeed_p2a_release,

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:12:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:12:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475636.1682252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4kj-0000oQ-4k; Thu, 05 Nov 2026 21:12:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475636.1682252; Thu, 05 Nov 2026 21:12:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4kj-0000oJ-1q; Thu, 05 Nov 2026 21:12:09 +0000
Received: by outflank-mailman (input) for mailman id 1475636;
 Thu, 05 Nov 2026 21:12:07 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4kh-0000nc-FT
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4kg-0052w6-I0
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:12:06 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf122-2eae-0a2a0a5409dd-0a2a4504d72e-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:12:06 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf034-b57f-0a2a45040019-aceafc1fe78a-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:08:05 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 45D9843FE4;
 Thu,  5 Nov 2026 21:08:04 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40DBB1F008AB;
 Thu,  5 Nov 2026 21:07:52 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912884;
	bh=AH46OuGdtEt1nsUri8AEqTjCIJ9jhn5rP+r92fYTTuo=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=gQXtnC+uGV3ca+q7ByIhTFttKWFz/mEPWtGFIHyr1U7eyA5UiL3F5di8hwOyKNKIF
	 owKNBe70mg3Zo5esALsOGrB3Gu4dftp1gp/kDfIf8QLSYdragHGzq3le/t0ApgBOdt
	 W9up1YKjS36n6toNIJ3j5acZKXZ8wWo1sMDx7UIrb0pziMl9w8OPwDPPoOYAZT36u2
	 vi8ESoYJVVURVm/u4/xMe23aJwZSVnqx7/HIEZFlTMpz35L2uOhW7gv4mJl1kf17SO
	 iv7fymeQuygUorjvcrauyoeA1G+MidvGijWcp/sEyevbIArziwLEOE45fNvfWtSV44
	 zrRXpq/nRe5Qg==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:41 +0000
Subject: [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook to
 mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-10-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2040; i=ljs@kernel.org;
 h=from:subject:message-id; bh=VZRnIpM2wCvIjSh9P+PGr0d/uBMnYJCKqKQo3RqP51A=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF/DcEy9Yf31Kzsm7ZGRmTflc4KO8ympbO+gxpqId
 5e4dnYId5SyMIhxMciKKbI8/yK+P0gkbF7nBX83mDmsTGBDuDgFYCJ83owMN3b7GPFPClBsUdpb
 91BjyqODrGFXl9VPszke3LF79vZDiYwMd/fO2SCzWsEy+nRExp61KyZ+Xqt1rPVFwbrq23tKLII
 esgIA
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-ebf023/1793912886-530CDB50-0DB64BC3/0/0
X-purgate-type: clean
X-purgate-size: 2042

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
PFN remap mmap action to map the region.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/soc/qcom/rmtfs_mem.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c
index 342c0845134e..5e2ac75f41d5 100644
--- a/drivers/soc/qcom/rmtfs_mem.c
+++ b/drivers/soc/qcom/rmtfs_mem.c
@@ -129,24 +129,22 @@ static const struct class rmtfs_class = {
 	.name           = "rmtfs",
 };
 
-static int qcom_rmtfs_mem_mmap(struct file *filep, struct vm_area_struct *vma)
+static int qcom_rmtfs_mem_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct qcom_rmtfs_mem *rmtfs_mem = filep->private_data;
+	struct qcom_rmtfs_mem *rmtfs_mem = desc->file->private_data;
 
-	if (vma->vm_end - vma->vm_start > rmtfs_mem->size) {
+	if (vma_desc_size(desc) > rmtfs_mem->size) {
 		dev_dbg(&rmtfs_mem->dev,
 			"vm_end[%lu] - vm_start[%lu] [%lu] > mem->size[%pa]\n",
-			vma->vm_end, vma->vm_start,
-			(vma->vm_end - vma->vm_start), &rmtfs_mem->size);
+			desc->end, desc->start, vma_desc_size(desc),
+			&rmtfs_mem->size);
 		return -EINVAL;
 	}
 
-	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
-	return remap_pfn_range(vma,
-			       vma->vm_start,
-			       rmtfs_mem->addr >> PAGE_SHIFT,
-			       vma->vm_end - vma->vm_start,
-			       vma->vm_page_prot);
+	desc->page_prot = pgprot_writecombine(desc->page_prot);
+	mmap_action_remap_full(desc, rmtfs_mem->addr >> PAGE_SHIFT);
+
+	return 0;
 }
 
 static const struct file_operations qcom_rmtfs_mem_fops = {
@@ -156,7 +154,7 @@ static const struct file_operations qcom_rmtfs_mem_fops = {
 	.write = qcom_rmtfs_mem_write,
 	.release = qcom_rmtfs_mem_release,
 	.llseek = default_llseek,
-	.mmap = qcom_rmtfs_mem_mmap,
+	.mmap_prepare = qcom_rmtfs_mem_mmap_prepare,
 };
 
 static void qcom_rmtfs_mem_release_device(struct device *dev)

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:12:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:12:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475639.1682262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4ku-00018t-GS; Thu, 05 Nov 2026 21:12:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475639.1682262; Thu, 05 Nov 2026 21:12:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4ku-00018l-Dm; Thu, 05 Nov 2026 21:12:20 +0000
Received: by outflank-mailman (input) for mailman id 1475639;
 Thu, 05 Nov 2026 21:12:19 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4kt-000186-6B
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4ks-004Con-JH
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:12:18 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf131-bab6-0a2a0a5309dd-0a2a450b96ae-6
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:12:18 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf040-b7e8-0a2a450b0019-ac6904fec7ec-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:08:17 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id AF7D360A63;
 Thu,  5 Nov 2026 21:08:16 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DED61F008BD;
 Thu,  5 Nov 2026 21:08:04 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912896;
	bh=RBvzqqEVktGOwLM5OpYBfN5N4ekxKtBbieuNh5yiCZc=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=kFtPRv+vDCqA4I5+7Ba5v1oinPquBwNlu0qv3u1pswQ05uBi8FuxynMX1Au0gqEq1
	 GNXzlN8uFqSJSkJeLpBlJWDZzthZT1QYCXHTFJpJfWyomWsTXudAv/0qXIrV+l9VV5
	 VF2TBnLkW7OziZTahtTdvm/Fn5QH8mhXKLp8QhXY0Hyb/snkD00bpMyAE1rQGFuYCw
	 ngKcgCmFZhysfGBUK8uVX24hJfLxdMi0u0jCBy+ukszMXCOfZPfMf+Kqm78OIzM0tn
	 RxPiN2jic03BG/QtPw6o+SbdcC1jd9rBy5GjZqyDDQ8JEFbdtYwrd4ZQ7qVlg2U+Ut
	 GK2nqGNNO/c5g==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:42 +0000
Subject: [PATCH 11/14] tee: convert shm mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-11-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=1686; i=ljs@kernel.org;
 h=from:subject:message-id; bh=2RLQC1bSA3UhuwZbggzNroMh6l6JITaynZarCSoVuAM=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF/zLjZTWyx1cX6TOl+BpvzBu+qXr/bqSR+fKzhJ4
 VdhWI5PRykLgxgXg6yYIsvzL+L7g0TC5nVe8HeDmcPKBDKEgYtTACZS68PIcLlhWdCvuI8njsvz
 mpsrWjeVPPbtMH501Wkee5q85d6Dpgz/M7corpQ8r5YdLpejWb5uisP052unmkTtMXCZ9+B2usA
 hdgA=
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-42698a/1793912898-ABAD09EA-6C83D1FD/0/0
X-purgate-type: clean
X-purgate-size: 1688

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
PFN remap mmap action to map the shared memory.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/tee/tee_shm.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c
index daa4af1e089e..8fcbf0232aeb 100644
--- a/drivers/tee/tee_shm.c
+++ b/drivers/tee/tee_shm.c
@@ -567,10 +567,9 @@ static int tee_shm_fop_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int tee_shm_fop_mmap(struct file *filp, struct vm_area_struct *vma)
+static int tee_shm_fop_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct tee_shm *shm = filp->private_data;
-	size_t size = vma->vm_end - vma->vm_start;
+	struct tee_shm *shm = desc->file->private_data;
 
 	/* Refuse sharing shared memory provided by application */
 	if (shm->flags & TEE_SHM_USER_MAPPED)
@@ -580,17 +579,18 @@ static int tee_shm_fop_mmap(struct file *filp, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	/* check for overflowing the buffer's size */
-	if (vma->vm_pgoff + vma_pages(vma) > shm->size >> PAGE_SHIFT)
+	if (desc->pgoff + vma_desc_pages(desc) > shm->size >> PAGE_SHIFT)
 		return -EINVAL;
 
-	return remap_pfn_range(vma, vma->vm_start, shm->paddr >> PAGE_SHIFT,
-			       size, vma->vm_page_prot);
+	mmap_action_remap_full(desc, shm->paddr >> PAGE_SHIFT);
+
+	return 0;
 }
 
 static const struct file_operations tee_shm_fops = {
 	.owner = THIS_MODULE,
 	.release = tee_shm_fop_release,
-	.mmap = tee_shm_fop_mmap,
+	.mmap_prepare = tee_shm_fop_mmap_prepare,
 };
 
 /**

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:12:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:12:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475643.1682271 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4l7-0001Yu-NX; Thu, 05 Nov 2026 21:12:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475643.1682271; Thu, 05 Nov 2026 21:12:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4l7-0001Yk-KK; Thu, 05 Nov 2026 21:12:33 +0000
Received: by outflank-mailman (input) for mailman id 1475643;
 Thu, 05 Nov 2026 21:12:31 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4l5-0001Wh-L1
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4l5-00FH2w-26
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:12:31 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf136-e002-0a2a0a5209dd-0a2a45099eb0-14
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:12:31 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf04d-be1a-0a2a45090019-aceafc1fe720-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:08:30 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id BB25243240;
 Thu,  5 Nov 2026 21:08:28 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA46A1F008A1;
 Thu,  5 Nov 2026 21:08:16 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912908;
	bh=rauYFQoBFzCwBAsYPPclHbOZbmTSVBvyT46d2JXEHhc=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=BnKXPWf+/O22qEiMkaEIK5AaJQQEDaT1ckt5kAk8Dba1GJx7DDQ9aYC3m4YDrEIGm
	 8uQZ6D4EtJ2grfz88MHTsiaTo3NH9vnWalgCLLaXFGMjRWVUklmAAI0MsFx9/+gLLo
	 YFH61ZNKhRR6Fv43NWZZ1RvUEaoATHAHShBGcK7igkT1+d7qa2pXh6tyRcoHCmo4B4
	 GJHLI9LJ1NTDk+gl3j6tt6cw3M3gCPPENxC7J3eiVJghxP1xsN5EbxYHrwvTHymWYS
	 OtjcGqy/Dgj8eYqTO8FncXaIF7WWQN9TMi/urM76XoYWGd0YaiyeJhBjNAMqrCPprm
	 FCGpoxaMo3JlQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:43 +0000
Subject: [PATCH 12/14] misc: bcm-vk: convert mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-12-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2129; i=ljs@kernel.org;
 h=from:subject:message-id; bh=C9XXK37M9AVAJFlt2rYv5qsDw6jIGdRaJJndLfcUS1A=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF8b/+vwX/2MC9qxmsYzmV4FXzC/pc4bfKJ2Q5OY3
 b2PnntCOkpZGMS4GGTFFFmefxHfHyQSNq/zgr8bzBxWJpAhDFycAjCRqGaGX8wOptkGu76v+j63
 7fv2GxkrZ3sH69X6n2O5o3H/4/Wjn/UYGTYvDU3rC9p+YLPxLfX24mdT8h4yCywXNmdZ/XhpFuN
 dc3YA
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-bad1c0/1793912910-BE0C5034-C5180463/0/0
X-purgate-type: clean
X-purgate-size: 2131

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
I/O PFN remap mmap action to map the BAR.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/misc/bcm-vk/bcm_vk_dev.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c
index 88ee3a417616..25a2b46ebad9 100644
--- a/drivers/misc/bcm-vk/bcm_vk_dev.c
+++ b/drivers/misc/bcm-vk/bcm_vk_dev.c
@@ -1201,9 +1201,9 @@ static long bcm_vk_reset(struct bcm_vk *vk, struct vk_reset __user *arg)
 	return ret;
 }
 
-static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma)
+static int bcm_vk_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct bcm_vk_ctx *ctx = file->private_data;
+	struct bcm_vk_ctx *ctx = desc->file->private_data;
 	struct bcm_vk *vk = container_of(ctx->miscdev, struct bcm_vk, miscdev);
 	unsigned long pg_size;
 
@@ -1212,16 +1212,16 @@ static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma)
 
 	pg_size = ((pci_resource_len(vk->pdev, VK_MMAPABLE_BAR) - 1)
 		    >> PAGE_SHIFT) + 1;
-	if (vma->vm_pgoff + vma_pages(vma) > pg_size)
+	if (desc->pgoff + vma_desc_pages(desc) > pg_size)
 		return -EINVAL;
 
-	vma->vm_pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR)
-			  >> PAGE_SHIFT);
-	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+	desc->pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR)
+			>> PAGE_SHIFT);
+	desc->page_prot = pgprot_noncached(desc->page_prot);
+
+	mmap_action_ioremap_full(desc, desc->pgoff);
 
-	return io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
-				  vma->vm_end - vma->vm_start,
-				  vma->vm_page_prot);
+	return 0;
 }
 
 static long bcm_vk_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
@@ -1262,7 +1262,7 @@ static const struct file_operations bcm_vk_fops = {
 	.write = bcm_vk_write,
 	.poll = bcm_vk_poll,
 	.release = bcm_vk_release,
-	.mmap = bcm_vk_mmap,
+	.mmap_prepare = bcm_vk_mmap_prepare,
 	.unlocked_ioctl = bcm_vk_ioctl,
 };
 

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:12:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:12:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475651.1682279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4lI-00023I-Uy; Thu, 05 Nov 2026 21:12:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475651.1682279; Thu, 05 Nov 2026 21:12:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4lI-00023B-S7; Thu, 05 Nov 2026 21:12:44 +0000
Received: by outflank-mailman (input) for mailman id 1475651;
 Thu, 05 Nov 2026 21:12:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4lH-0001zt-JN
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4lH-00HDtB-00
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:12:43 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf145-8faa-0a2a0a5109dd-0a2a450b9a8e-28
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:12:42 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf059-b7e8-0a2a450b0019-ac6904fea526-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:08:42 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 28EDF60213;
 Thu,  5 Nov 2026 21:08:41 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D4791F0089F;
 Thu,  5 Nov 2026 21:08:28 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912920;
	bh=jwg42VGqWUt+sFFBng+mWbW24dAsrwHOUVsOhHWbSTw=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=QWUcIhBCGRma05CYBvlYAlcfi/meLWyeZtyVRMCsgC3eidcnSypogMH20WwSI92Vo
	 nUGOi0jOdOYQqRYbLuOn/e0wcApgbleVdCLsQVo3EKEbJwqtnb3wGYHGhtB20rZjFf
	 9cjWxmaAFDIk2PBAlcaRnTwCrwWQltxESQCDifUxijmFVrqzmV2MXoVZMTDDrJXm3G
	 3PjQF3mPdpLpyAUsd37oELANXqbeLiCVaA1MHfyYV/F300h88r1ZwlODccLQGzTUET
	 2T2/8rqNR+g7IR+53ri5dnAH76IBDmer8fSCNE/o5xkxllHyUDCt6gi9PZAsjUiLhR
	 fpGgLWaXY4uuQ==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:44 +0000
Subject: [PATCH 13/14] ptp: vmclock: convert mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-13-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2068; i=ljs@kernel.org;
 h=from:subject:message-id; bh=BtWkGlsdqRPyaFO3thb1+okxq61by8V/MZsK3ybf8bQ=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF8b8Ux/Tdcunl1xE7s19f5O+zJ7caTksSU+544kX
 NlyL3Eyb0cpC4MYF4OsmCLL8y/i+4NEwuZ1XvB3g5nDygQyhIGLUwAmkviF4X/5tD9fZqudmJGc
 eDXc+YjW+oBjJk1fYudKmvfOKpRJm3mE4a+0h0vYimsND/h+/73g4/Cy0C26a9UBpbxFppN2bn7
 cZ80GAA==
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-42698a/1793912922-1A4DB9EA-DBD58DD4/0/0
X-purgate-type: clean
X-purgate-size: 2070

Move from the deprecated mmap hook to the new mmap_prepare hook, using the
I/O PFN remap mmap action to map the clock page and retaining the -EAGAIN
error on failure via the action error override.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/ptp/ptp_vmclock.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/ptp/ptp_vmclock.c b/drivers/ptp/ptp_vmclock.c
index bb0e14bac9f2..e44433430044 100644
--- a/drivers/ptp/ptp_vmclock.c
+++ b/drivers/ptp/ptp_vmclock.c
@@ -364,27 +364,26 @@ struct vmclock_file_state {
 	atomic_t seq;
 };
 
-static int vmclock_miscdev_mmap(struct file *fp, struct vm_area_struct *vma)
+static int vmclock_miscdev_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vmclock_file_state *fst = fp->private_data;
+	struct vmclock_file_state *fst = desc->file->private_data;
 	struct vmclock_state *st = fst->st;
 
-	if ((vma->vm_flags & (VM_READ|VM_WRITE)) != VM_READ)
+	if (!vma_desc_test(desc, VMA_READ_BIT) ||
+	    vma_desc_test(desc, VMA_WRITE_BIT))
 		return -EROFS;
 
 	/*
 	 * Restrict the read-only mapping so it cannot be upgraded to
 	 * writable later with mprotect().
 	 */
-	vm_flags_clear(vma, VM_MAYWRITE);
+	vma_desc_clear_flags(desc, VMA_MAYWRITE_BIT);
 
-	if (vma->vm_end - vma->vm_start != PAGE_SIZE || vma->vm_pgoff)
+	if (vma_desc_size(desc) != PAGE_SIZE || desc->pgoff)
 		return -EINVAL;
 
-	if (io_remap_pfn_range(vma, vma->vm_start,
-			       st->res.start >> PAGE_SHIFT, PAGE_SIZE,
-			       vma->vm_page_prot))
-		return -EAGAIN;
+	mmap_action_ioremap_full(desc, st->res.start >> PAGE_SHIFT);
+	desc->action.error_override = -EAGAIN;
 
 	return 0;
 }
@@ -484,7 +483,7 @@ static const struct file_operations vmclock_miscdev_fops = {
 	.owner = THIS_MODULE,
 	.open = vmclock_miscdev_open,
 	.release = vmclock_miscdev_release,
-	.mmap = vmclock_miscdev_mmap,
+	.mmap_prepare = vmclock_miscdev_mmap_prepare,
 	.read = vmclock_miscdev_read,
 	.poll = vmclock_miscdev_poll,
 };

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:12:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:12:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475658.1682290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4lV-0002XU-7F; Thu, 05 Nov 2026 21:12:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475658.1682290; Thu, 05 Nov 2026 21:12:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP4lV-0002XK-2c; Thu, 05 Nov 2026 21:12:57 +0000
Received: by outflank-mailman (input) for mailman id 1475658;
 Thu, 05 Nov 2026 21:12:56 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xP4lU-0002WO-1w
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:12:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP4lT-00FH6T-F1
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:12:55 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf150-e002-0a2a0a5209dd-0a2a4509996c-24
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:12:55 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aecf065-be1a-0a2a45090019-aceafc1fd27e-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:08:54 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 39C41431DF;
 Thu,  5 Nov 2026 21:08:53 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 555ED1F008A2;
 Thu,  5 Nov 2026 21:08:41 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:References:In-Reply-To:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793912933;
	bh=f5KzmK9Yc1O2UTKJiw6Ig75W/rQrebyZwa5yMpDxZPA=;
	h=From:Date:Subject:References:In-Reply-To:To:Cc;
	b=n8CRph5N+6GvMpxdTIZcApabmYM00ArLewFL8fQnfylRd81N3dMFr0fH9tM4p+HtO
	 aUidU5CiMimh6FJxpyYqMz3zczVFtpB2Rg8C6Cvpnenu7HefwcLf7SzXaei+nFpCsq
	 g+IIikN+Wpf5xA5Iml3JdYU+nz+jxroAIVKnx8cAky1Mefm7dQRJYZr4fXxy8faV+B
	 gKm7dUWZnjvRP+x3tKmFXknw94zv5xgigYJCPUGpqxlfNq5n3JmZ8HKLtFE8wxCIUp
	 5Rf8140WFsZqvLSCfX0CiwE+wK86zC1db93JvTfAih23Aag2hbuzEZLeh7mzRE98Cl
	 QUXlmqQj/bSaw==
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: Thu, 05 Nov 2026 21:05:45 +0000
Subject: [PATCH 14/14] vhost-vdpa: convert mmap hook to mmap_prepare
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261105-late-2026-mmap_prepare-v1-14-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
 Madhavan Srinivasan <maddy@linux.ibm.com>, 
 Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
 "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
 Shrikanth Hegde <sshegde@linux.ibm.com>, 
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, 
 Dexuan Cui <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, 
 Jason Wang <jasowangio@gmail.com>, 
 =?utf-8?q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
 Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
 Dave Hansen <dave.hansen@linux.intel.com>, 
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, 
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
 "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
 Paul Moore <paul@paul-moore.com>, 
 Stephen Smalley <stephen.smalley.work@gmail.com>, 
 =?utf-8?q?Ondrej_Mosn=C3=A1=C4=8Dek?= <omosnacek@gmail.com>, 
 Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
 Ryan Chen <ryan_chen@aspeedtech.com>, 
 Billy Tsai <billy_tsai@aspeedtech.com>, 
 Bjorn Andersson <andersson@kernel.org>, 
 Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
 Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
 Scott Branden <scott.branden@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Arnd Bergmann <arnd@arndb.de>, 
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 Richard Cochran <richardcochran@gmail.com>, 
 David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: ljs@kernel.org, xen-devel@lists.xenproject.org, 
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
 virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
 selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
 linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
 op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
X-Mailer: b4 0.14.3
X-Developer-Signature: v=1; a=openpgp-sha256; l=2490; i=ljs@kernel.org;
 h=from:subject:message-id; bh=JMVxOxpfFwzbko1Dkxmi/MhSfdurHV7XcSZNEQmi5LM=;
 b=owGbwMvMwCV2fu7ZrsZH9SKMp9WSGLLevF9bav5wk6fYrXOXd6ULZVa0TPfJ+Lg9MZfZ9diee
 +qG2zLOdJSyMIhxMciKKbI8/yK+P0gkbF7nBX83mDmsTCBDGLg4BWAiYXcY/qcUxNtcOqidzSK8
 Kjc5+rCJmY7SZFXp7BChe/6HDFawfmP473xkKtfXWhYbrcSmOwwT5rzNXJ5t/Wde6Okj54p0482
 qOAA=
X-Developer-Key: i=ljs@kernel.org; a=openpgp;
 fpr=E7F417BF5214569E89D04F46CF9DCD8A81E27F14
X-purgate-ID: tlsNG-bad1c0/1793912935-39CC7034-FA5C360A/13/0
X-purgate-type: clean
X-purgate-size: 2492

Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
only validates the request and sets the VMA flags, operations and page
protection.

Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
---
 drivers/vhost/vdpa.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index ff7d90719171..993b2d7c8927 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -1573,19 +1573,19 @@ static const struct vm_operations_struct vhost_vdpa_vm_ops = {
 	.fault = vhost_vdpa_fault,
 };
 
-static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
+static int vhost_vdpa_mmap_prepare(struct vm_area_desc *desc)
 {
-	struct vhost_vdpa *v = vma->vm_file->private_data;
+	struct vhost_vdpa *v = desc->file->private_data;
 	struct vdpa_device *vdpa = v->vdpa;
 	const struct vdpa_config_ops *ops = vdpa->config;
 	struct vdpa_notification_area notify;
-	unsigned long index = vma->vm_pgoff;
+	unsigned long index = desc->pgoff;
 
-	if (vma->vm_end - vma->vm_start != PAGE_SIZE)
+	if (vma_desc_size(desc) != PAGE_SIZE)
 		return -EINVAL;
-	if ((vma->vm_flags & VM_SHARED) == 0)
+	if (!vma_desc_test(desc, VMA_SHARED_BIT))
 		return -EINVAL;
-	if (vma->vm_flags & VM_READ)
+	if (vma_desc_test(desc, VMA_READ_BIT))
 		return -EINVAL;
 	if (!ops->get_vq_notification)
 		return -ENOTSUPP;
@@ -1598,12 +1598,13 @@ static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
 		return -EINVAL;
 	if (notify.addr & (PAGE_SIZE - 1))
 		return -EINVAL;
-	if (vma->vm_end - vma->vm_start != notify.size)
+	if (vma_desc_size(desc) != notify.size)
 		return -ENOTSUPP;
 
-	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
-	vma->vm_ops = &vhost_vdpa_vm_ops;
+	desc->page_prot = pgprot_noncached(desc->page_prot);
+	vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTEXPAND_BIT,
+			   VMA_DONTDUMP_BIT);
+	desc->vm_ops = &vhost_vdpa_vm_ops;
 	return 0;
 }
 #endif /* CONFIG_MMU */
@@ -1615,7 +1616,7 @@ static const struct file_operations vhost_vdpa_fops = {
 	.write_iter	= vhost_vdpa_chr_write_iter,
 	.unlocked_ioctl	= vhost_vdpa_unlocked_ioctl,
 #ifdef CONFIG_MMU
-	.mmap		= vhost_vdpa_mmap,
+	.mmap_prepare	= vhost_vdpa_mmap_prepare,
 #endif /* CONFIG_MMU */
 	.compat_ioctl	= compat_ptr_ioctl,
 };

-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 21:43:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 21:43:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475724.1682297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5F6-00055a-FK; Thu, 05 Nov 2026 21:43:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475724.1682297; Thu, 05 Nov 2026 21:43:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5F6-00055T-Cf; Thu, 05 Nov 2026 21:43:32 +0000
Received: by outflank-mailman (input) for mailman id 1475724;
 Thu, 05 Nov 2026 21:43:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jarkko@kernel.org>) id 1xP5F5-00055N-Dj
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 21:43:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP5F4-001Z2s-Jp
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:43:30 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jarkko@kernel.org>)
 id 6aecf860-8faa-0a2a0a5109dd-0a2a4502c5cc-30
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:43:30 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jarkko@kernel.org>)
 id 6aecf880-6ca4-0a2a45020019-aceafc1f80b4-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:43:30 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with UTF8SMTP id AC45343451;
 Thu,  5 Nov 2026 21:43:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with UTF8SMTPSA id 0AE881F0089F;
 Thu,  5 Nov 2026 21:43:27 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793915007;
	bh=nnsNMtUi8B/PfO4GG0OW4lr6jLs4u50NUe2xEiA6RC0=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=KFA+ZicKHpTxqbxZeNU9rKNH0zDIw+G9WkxRcTelADPJIyDG9z+SV38MG0CjPlcEC
	 1gjbq2m9ysrv8pBHAJrvqPnMERLZq6W4rxcogl2DlIDB44RylaSdblCTSEXNnxfcbK
	 l3RbrI5Oxv1bkdw/nOHwLpMlw6rPe3TmPXrqXYMaHNImuFIqgFREHKoGTzOn5W2eUw
	 HnogndejHth27NGEbdc3qPN/i0WWKweuYdEdmiZr5RDjCfk6/mEdy1F9Yu6XlveCU2
	 QfoEW83U8XIbYRbkOdJsXHQEOAAPFI6k6EpuBWa/BFfpmagRIXSu+HdiZvkzWIUa8b
	 kW/HsHhM4i4og==
Date: Thu, 5 Nov 2026 23:43:23 +0200
From: Jarkko Sakkinen <jarkko@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>,
	Shrikanth Hegde <sshegde@linux.ibm.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowangio@gmail.com>,
	Eugenio =?iso-8859-1?Q?P=E9rez?= <eperezma@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>,
	Joel Stanley <joel@jms.id.au>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Ryan Chen <ryan_chen@aspeedtech.com>,
	Billy Tsai <billy_tsai@aspeedtech.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>,
	Sumit Garg <sumit.garg@kernel.org>,
	Scott Branden <scott.branden@broadcom.com>,
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Richard Cochran <richardcochran@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev,
	linux-sgx@vger.kernel.org, selinux@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org,
	linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH 05/14] x86/sgx: convert vepc mmap hook to mmap_prepare
Message-ID: <auz4e81zm0mTMknq@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <20261105-late-2026-mmap_prepare-v1-5-c56aadfbab8a@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-5-c56aadfbab8a@kernel.org>
X-purgate-ID: tlsNG-720697/1793915010-668B42AC-272B889E/0/0
X-purgate-type: clean
X-purgate-size: 1908

On Thu, Nov 05, 2026 at 09:05:36PM +0000, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
> only checks that the mapping is shared and sets VMA flags, operations and
> private data.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  arch/x86/kernel/cpu/sgx/virt.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
> index 6a1933ddc6fc..850990519ca5 100644
> --- a/arch/x86/kernel/cpu/sgx/virt.c
> +++ b/arch/x86/kernel/cpu/sgx/virt.c
> @@ -98,17 +98,18 @@ static const struct vm_operations_struct sgx_vepc_vm_ops = {
>  	.fault = sgx_vepc_fault,
>  };
>  
> -static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
> +static int sgx_vepc_mmap_prepare(struct vm_area_desc *desc)
>  {
> -	struct sgx_vepc *vepc = file->private_data;
> +	struct sgx_vepc *vepc = desc->file->private_data;
>  
> -	if (!(vma->vm_flags & VM_SHARED))
> +	if (!vma_desc_test(desc, VMA_SHARED_BIT))
>  		return -EINVAL;
>  
> -	vma->vm_ops = &sgx_vepc_vm_ops;
> +	desc->vm_ops = &sgx_vepc_vm_ops;
>  	/* Don't copy VMA in fork() */
> -	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
> -	vma->vm_private_data = vepc;
> +	vma_desc_set_flags(desc, VMA_PFNMAP_BIT, VMA_IO_BIT, VMA_DONTDUMP_BIT,
> +			   VMA_DONTCOPY_BIT);
> +	desc->private_data = vepc;
>  
>  	return 0;
>  }
> @@ -315,7 +316,7 @@ static const struct file_operations sgx_vepc_fops = {
>  	.unlocked_ioctl	= sgx_vepc_ioctl,
>  	.compat_ioctl	= sgx_vepc_ioctl,
>  	.release	= sgx_vepc_release,
> -	.mmap		= sgx_vepc_mmap,
> +	.mmap_prepare	= sgx_vepc_mmap_prepare,
>  };
>  
>  static struct miscdevice sgx_vepc_dev = {
> 
> -- 
> 2.56.0
> 

Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

Br, Jarkko


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 22:04:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 22:04:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475753.1682308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5Ze-0002fR-2a; Thu, 05 Nov 2026 22:04:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475753.1682308; Thu, 05 Nov 2026 22:04:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5Zd-0002fK-V8; Thu, 05 Nov 2026 22:04:45 +0000
Received: by outflank-mailman (input) for mailman id 1475753;
 Thu, 05 Nov 2026 22:04:44 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xP5Zc-0002fE-8o
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:04:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP5Zb-00Fck8-ID
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:04:43 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecfd6b-e002-0a2a0a5209dd-0a2a450ab5ea-16
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:04:39 +0100
Received: from [52.101.43.66]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecfd75-f2d2-0a2a450a0019-34652b4292ec-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:04:39 +0100
Received: from PH7P221CA0027.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:32a::24)
 by DS3PR12MB999241.namprd12.prod.outlook.com (2603:10b6:8:38e::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.9; Thu, 5 Nov 2026
 22:04:35 +0000
Received: from BY1PEPF0001AE16.namprd04.prod.outlook.com
 (2603:10b6:510:32a:cafe::ac) by PH7P221CA0027.outlook.office365.com
 (2603:10b6:510:32a::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 22:04:35 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BY1PEPF0001AE16.mail.protection.outlook.com (10.167.242.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Thu, 5 Nov 2026 22:04:34 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 16:04:33 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 16:04:33 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Thu, 5 Nov 2026 16:04:32 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=kkI3alVXptmtYV3cOVtk6yPY8VtoNC0RWA9OwPK36vmhPFmEPl281OAzuzgoFN31FIhqi8eCvs14yeVvcn9MDgHcfliYDySZ65VrdJB9OUU2pqZogBOXtmCE+ZiHQjAW4ZfdscZPXHD+++y3pTGChu7RqZmoMIQKXt6H8KYjE7iYySsWupLe+4zJorWCkaQk8MS+ct5NhK4UkOCCGyePAojduOJj28JnzZSzJ/rD+qtxU0TVUsSOSbsmqbRunVgIyhEGdYskkTYN1Tb9sgOqDAnUckPUH7ojFjWJM0efPb94fdszTAegph57fALwDf/6wb9egNhyTC7PBRnd4TcrTw==
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=VTCoU6s00uFNwMiskVr4x7Q+tZYyY1voUalgftXtpM8=;
 b=OOdY8DsS5/CTeFxtz2FEbzk53elhtKIK4vYzYVuHqp0DVKPw9Gipgx+RNPOn1APvzV5tUHSD4eFGepd3NVRkVu3mPSO7AN7bziHxEKWYKGBclbfuIPdU8T3X3KO4J+B50XC/TBvaX8RXWBHZE/fjKG2+c/Bjv7nRszy6oUp5mrQApnFmjUrFgKXzvKQS+doEPmGgm14XWMmDjOdmIZzCFHstzAJ8IAAuTGtSR9YDBiHsoiin2B7qD+PiFhXMi2waHdaiBVFkvTO+qhHY3Xy4scfJM46T9uXaG8WwurfToKs7mNqOEQrcUWq1G7Dpjyn3eD8TL3n+Qn81oDi8ztmbMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=ford.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=VTCoU6s00uFNwMiskVr4x7Q+tZYyY1voUalgftXtpM8=;
 b=TC/+6tTgT1TlcCQL64092IXsb33KGzKvHZ5qsX35/w7uMWEnyYnbi7rfpqafSK5I3PmjFaeQiBPHhcMTE5BAKbJiei8G+EYa03sLF40lGc1D8MOPUqpUsZax7CwWsluHkAmn6w6oHVjnWeYYuORDb0NaByydkZb7Vg8roYpSkrU=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <c6070257-2725-4dce-8ae2-0172c9ecf2fa@amd.com>
Date: Thu, 5 Nov 2026 17:04:31 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 01/28] x86/hvm: move SVM feature printout to a separate
 function
To: <dmukhin@ford.com>, <xen-devel@lists.xenproject.org>
CC: <andrew.cooper3@citrix.com>, <jbeulich@suse.com>, <roger@xenproject.org>,
	<teddy.astie@vates.tech>, <dmukhin@xen.org>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-2-dmukhin@ford.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261105013347.719392-2-dmukhin@ford.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE16:EE_|DS3PR12MB999241:EE_
X-MS-Office365-Filtering-Correlation-Id: 300ddb9a-cae1-4418-5d72-08df3b88c68d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|376014|1800799024|18002099003|22082099003|10067099003|56012099006|11063799006|4143699003;
X-Microsoft-Antispam-Message-Info:
	ncCzNHd7510XAvtjqr7SDpQAyrBfgYZNPD7k6EofIAkD0TPReDxHsWVUbpOPbZbGAPPeYFc0ul3Z4lVXYzjfBxJgXLd6fz7MhxNQSMqlII4yu5hihjjV0Cr2cnyVCqGrPbP1lmWRO6634yhfxoMC8dlwc8QzdU0Ad1fdKG71qwnD9nv4SK9cfl1/ehi4ucC/XFr7eiGkNKjxQfxTEnnrijRzSzYr2zJL8D3F1Dga5h2/mMRikGc6U7Ea3wUGe0WRH1ZmRkPhaSJQ7fhM3xoyB9+Fj1JVUhgPvMmgO1S5ZXk0ocBpY0eCHsldBqzUYztwPASDK6a9nz9PnNRVX567ymK0AJrlhnae6CZwEr6DdQi/4ittbgYUNzTkQneYXB2L/6vKKFqHoK5czFWC275cT2prf3eefeaeQWxBCBR6AnY8p8/34tL1+L/YU31qXy5/xgUa+ozZ9NtmfIs7hzGQbpBZ+EVWle8OKmRRGZHGqwBCJNVJgFUcT7YOMu75Pkkui6H4zSvkjDycnI826posmql3Uhzz94GIY9YbvxRDtV73dDvBTWYJ5CwcyNG5lNZUkt/gBSmFFiXwOXSh5SYfkXy/CE17uK0BfyIwOftE3sUJ942+hLWwc/7W/0PHOomcI4oZJ9t7XQABCCFuwO+plAI6EkgkyChVhm83CRtHwH0jCuXoBwBzPfAqmEzl18yie4PPwZUnuF3KOICVi5JyvQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(23010399003)(376014)(1800799024)(18002099003)(22082099003)(10067099003)(56012099006)(11063799006)(4143699003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	+YA4ILPLfYr22KaEeFjLkCLx/w1QFk2P3A2ltmSkIF3UNFBzb5pqUi3Oa040VYqiVQJx1JElfCIsFBDu1Cx1SKEaVjj+buk4wZ712mEmSBRR5cx0YmhFs+WU8/WLveaJ4I+b39YIMMfS2JuIQG6UDtw/LAQsGE7d550/Us6uxGJunRIZ9s0/LhC/RE5S0VNDKJWNc04OgVfWaGQQzQ9HI1ZzxJo7ervbsyiMKeTloR+XBKuiLYFLoJjK5Bh8cYxtPydmphH27kNFrkoEVsqgXHHseBsL5ZQ3P8vM3+0jVXU/Nn4Ab0zRUN0D9ULoK3GvlLsgBbfjNyNGn2orSHBdaMRUIQeuzYQHEbf7oQrsWB4k/IgdV4cCGQkh8QCuEH3/1tF7SdRH+zTAHHEBjSyA8SXgPd2Hyhue6N9fd8/scbJBYyQEs097elfGrJMjlJrP
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 22:04:34.1902
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 300ddb9a-cae1-4418-5d72-08df3b88c68d
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BY1PEPF0001AE16.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR12MB999241
X-purgate-ID: tlsNG-4011c0/1793916279-597C2CFC-175C228C/0/0
X-purgate-type: clean
X-purgate-size: 321

On 2026-11-04 20:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Isolate long SVM feature list printout in a separate function to
> improve readability.
> 
> Not a functional change.
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 22:06:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 22:06:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475763.1682317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5aq-0003Af-BC; Thu, 05 Nov 2026 22:06:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475763.1682317; Thu, 05 Nov 2026 22:06:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5aq-0003AY-7a; Thu, 05 Nov 2026 22:06:00 +0000
Received: by outflank-mailman (input) for mailman id 1475763;
 Thu, 05 Nov 2026 22:05:58 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xP5ao-0003AO-OV
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:05:58 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP5ao-00Bsbw-5R
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:05:58 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecfdb4-bab6-0a2a0a5309dd-0a2a4509e482-12
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:05:57 +0100
Received: from [52.101.201.66]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecfdc4-be1a-0a2a45090019-3465c9426efb-3
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:05:57 +0100
Received: from PH7PR13CA0009.namprd13.prod.outlook.com (2603:10b6:510:174::12)
 by SN7PR12MB8147.namprd12.prod.outlook.com (2603:10b6:806:32e::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 22:05:51 +0000
Received: from CY6PEPF0000004B.namprd03.prod.outlook.com
 (2603:10b6:510:174:cafe::7f) by PH7PR13CA0009.outlook.office365.com
 (2603:10b6:510:174::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4 via Frontend Transport; Thu, 5
 Nov 2026 22:05:51 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 CY6PEPF0000004B.mail.protection.outlook.com (10.167.247.136) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Thu, 5 Nov 2026 22:05:50 +0000
Received: from satlexmb10.amd.com (10.181.42.219) 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.53; Thu, 5 Nov
 2026 16:05:50 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 16:05:50 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Thu, 5 Nov 2026 16:05:49 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=pss4GuHDNVgrlUpY0Bwkxj7Pl1dKF8S3YQ3jjOUl4PATODvY6dEoJdqNwTU3Mlf4icAantmsPvBffmHr/AK+EYdLp+dpP1Pb/0jggqZffs2viFR2TdzwUo2QKmE/Yb/nPRgiNnEVuEQxuunCk/QjUx92Jn666iVvJV4qsywfYqjRAjbAjpoJ+kNNvFIqYIjoTEBn1MSaFOxGqlVcSCMbW2+x2YqCIQy8rDldGthZ/o8eScW0/HGjQCxzjJw8Qn2IAVGyDvOCzlpyT3CD/1hcL3oMtqNF7B2DDWSidEiFMF6B1iHsqJty+tZ0a0RUufkRyoowwmZjkaoLZWJFdnxZWg==
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=47Lj9dmFm1tAAK8LAoPBModnphK0czM75POlFwwcwxg=;
 b=V7qL21ye47AmWf+faCVCilDwQKQau5RHH1hm4HQ1JDxnoj6F9xX+uRNqoBPvae5Pn9p3lr09mJvOr2jwELlJz3h0AF1CAxDkUTsc+6Sve8c4UPCROMIbEFW5UJAdx78SZKsxflT/41F2MDcaXKmbrpveyet77oOuqrkvpxEQWl8BU5wntJ140mKf6sa685ATc/kCJvoQ8IMsCJUM96D/7iSzwor1LmG7id8UJYabFGFTEmcCUDlTuvXhrxrUJtuPmT0S4DynEEN98Xv4y9akYRa9D3ayFjnmaQdM/3Gjr68cQf/IQ7wyAJOr4CnPKszUqLAQnOaPau38lZECz24nXQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=ford.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=47Lj9dmFm1tAAK8LAoPBModnphK0czM75POlFwwcwxg=;
 b=2WMXM1Csbsb7CitQIYXnjzGUAaxuD/eCgMFl/ARnO6uE1sj2reUSskSF9S9cMRIJQkhHe9u3SEKqRH2emdBMHx7XtTENCsgObgozFmCgZbA6efSCwTFTqSsGQfuQlvrlsW1d61hmxPDlzOICuNi+WmYLW9f40WE1wC1P4dUHFq4=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <f7a5543c-2072-4229-8568-ddf0fbcded11@amd.com>
Date: Thu, 5 Nov 2026 17:05:49 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 02/28] x86/hvm: report SVM AVIC support
To: <dmukhin@ford.com>, <xen-devel@lists.xenproject.org>
CC: <andrew.cooper3@citrix.com>, <jbeulich@suse.com>, <roger@xenproject.org>,
	<teddy.astie@vates.tech>, <dmukhin@xen.org>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-3-dmukhin@ford.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261105013347.719392-3-dmukhin@ford.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY6PEPF0000004B:EE_|SN7PR12MB8147:EE_
X-MS-Office365-Filtering-Correlation-Id: f6a00cc5-24c7-4e89-85ea-08df3b88f439
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|22082099003|18002099003|10067099003|11063799006|4143699003|56012099006;
X-Microsoft-Antispam-Message-Info:
	cUcYRuxyUOygytt9OxvpqTmjM5b+AukP5snEXFG6NG0HY6xtB493UbG5yKqtBO38yqFspizh4PWzpxiQpdOUDpW9BHfhtoTNGyrNNvTCXKTtmbGJBNz7zOUeyNESQU9Hl1refnU747L4ak4dZFqviImda2tVfRjgADglsXwYygCbVrBbGoRyvZkRqrV9Prbu3NIo/zJkMj/9zu9Kyg+jw8Uci4kstDIZLCgigWI7133dCUamvLjf6JqNrKTgbsj1Ts0NWgLPQFSK1865UFD5k9X4QSzaL01sp5fCzlKsWA2GEBWJJ++x5q+c/BPuexH9rjVPiS+fMFKuRejz6ghOP4Y4Uf3cbf0o0jbc0tQ5kHUlo/CvVBy69/+B3YxwyafIExnPy+LpFLdXnaCCZJlS1nXwZG+wTlRHui2P6piBEBNQIhlB8bfyq3hg4wpALQ05zOZAZ8S2LiUAyRM/dpLJFZqGaWoQFa3PWxT3T2xb6AJ9bQE6/d24gLMXuB5841JK4ax5s62imnS3uTAl4ljKGdipURQsotS630GRrtZ+R4uqnsTuXBrC/EI8W0qEuUpdEOmSeSCauFUugVvQ9qJd30PUVYrfhGbxeTjriYODXP4RPRZ/287Y2SpG8SnM98zRHCb48skxUUdkGlqBZVsivsz3heFAlRJffp1obb7JEIhXDmncZI6z4iubUH0LaiCxppmAglVibSQ7ATnYO/Zt2g==
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)(82310400026)(376014)(23010399003)(1800799024)(22082099003)(18002099003)(10067099003)(11063799006)(4143699003)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	PUwxH4L1qYouYlawrJLOBtaor+Nr9rxijHKIht0olw8ipoVdTO3E4BbjFNET7efWtBP0VHbjQCNUBoAzOAt//BQ+JTHfl+rwS5+doj0U6/fmDgD/jDpiPUbwbH/wbUsyhQVGESmg0Ee4qUhJq9ad80IAFx0kNhcVhY8KIp/DQyQJxrsFFF/zz5DkftmwhyVoCu92XJFUrqG4XQik8TmAcgrHNPrwZL7asyYWnbFP5xAnxrwsVSMTd7Ksane4ODLmxfShXNJ0kQtmPmI32nvxVtGYIw38/aCHcj/3pYp8bFbwbD4TAO828nUcPD92inVakCIUIcKC1vk+YzmPNn07j89fZ3ua9ZTZnqhdS6O8ikKuqyIpqCWFlk7wuXwNlohw1OFUTnJaZW/1vjsUIiD1bA67JIjR25XkRnCoYk44y2zmkm/iCYd3oqiOVrED5y1q
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 22:05:50.8042
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f6a00cc5-24c7-4e89-85ea-08df3b88f439
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:
	CY6PEPF0000004B.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8147
X-purgate-ID: tlsNG-bad1c0/1793916357-3B0DD034-0BF86C41/0/0
X-purgate-type: clean
X-purgate-size: 265

On 2026-11-04 20:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Report SVM AVIC support from CPUID Fn8000000A_EDX[AVIC](bit 13).
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 22:14:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 22:14:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475775.1682325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5if-0006MS-15; Thu, 05 Nov 2026 22:14:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475775.1682325; Thu, 05 Nov 2026 22:14:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP5ie-0006ML-Ui; Thu, 05 Nov 2026 22:14:04 +0000
Received: by outflank-mailman (input) for mailman id 1475775;
 Thu, 05 Nov 2026 22:14:03 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xP5id-0006MF-Lm
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 22:14:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP5ic-001bZA-OT
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:14:02 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecff8a-2eae-0a2a0a5409dd-0a2a4504b5b0-26
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:14:02 +0100
Received: from [52.101.201.17]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aecffa8-b57f-0a2a45040019-3465c9119c93-4
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:14:02 +0100
Received: from CH0PR03CA0037.namprd03.prod.outlook.com (2603:10b6:610:b3::12)
 by DS5PPFB8FBD73EA.namprd12.prod.outlook.com (2603:10b6:f:fc00::65e)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 22:13:58 +0000
Received: from BL2PEPF000352D2.namprd02.prod.outlook.com
 (2603:10b6:610:b3:cafe::87) by CH0PR03CA0037.outlook.office365.com
 (2603:10b6:610:b3::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 22:13:58 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BL2PEPF000352D2.mail.protection.outlook.com (10.167.254.9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Thu, 5 Nov 2026 22:13:57 +0000
Received: from satlexmb08.amd.com (10.181.42.217) 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.53; Thu, 5 Nov
 2026 16:13:57 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Thu, 5 Nov 2026 16:13:56 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=i/tPqixAmM6zCUG4xjlXSAm/EIX0GZ2NzUU5WqXcUTlyMU8EkcBMp/2ivIjYqseAs+BX0LR5UO2Imc7cVKzdI0dxq+GmAwPTwtkYZP6cHUqE7X9q+cQYKoTa9EfLniFKmzntrQHWeTHZxm/ihXpvrlZaOmKFe4YeGYMAoIY27/8HJAme6LPiAliBd5OYXM1OeUdOuKS3pjp3InEJingJb4qps9MpzFHrifxLP/6HRjx7laiFFnEa6zE/jaMN5pF9ABFE4Lt30cKcW6GuDhbdwjBPibYg39HNn4lKztNoHxcf23ifYd2ywcvL7SF922IgEHXwILNyKPtjaLc0Ru9CMQ==
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=iymiZYmbNPUrd5MkefBw4xPHLXThoi9sY+cXvPrbQL0=;
 b=NFklqWhLQIX1sJshag76A34pmY+KQxEyiCeKPI0JYb/jKTrSOXLXATffeQ9GJIUMyvqFdNvKEK4ePWi5ooWYew3TJCZauIm5q/Tam4VJghR77CPFN1jp4PTZeFCkL8EZXenR0jfpasv7PkzLCKpvDh10RTyc/6rzoNU4yBaCVh5Ff5BQ7c5nT3w5q9cLR9QrNMtrniFmX4s5D5/e65V+PO7YN8jnNxMYNpT3PY3Trwijkply13pkm7NaTLLAhqgiJcP7rF9MJIgsQjTjOq/UuOj0rVD+L0t6YFklppRQyC7k8HcRaVC5mwqv7uGT+Q6AiKgiy/QD0F68YG1wYIbVeQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=ford.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=iymiZYmbNPUrd5MkefBw4xPHLXThoi9sY+cXvPrbQL0=;
 b=ndQmawuDtTfgbL5zcaCrTB/Z1reXMoWxFxWDzWZOkqaYWNHjL8i2UouhgfZEvNcNZGV8fzTaGPNUt48rAgMzHYc9Adze7CbF74Ecgr8TIRfBqdYYRyzQrf/Kx6JtgjCLwbP8fmQt4qlW8pkkZzJaufmMadUNcutAKVKXCIhK74A=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <c36fb489-d0a8-446c-a520-78262f70b31a@amd.com>
Date: Thu, 5 Nov 2026 17:13:50 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 03/28] x86/hvm: report SVM x2AVIC support
To: <dmukhin@ford.com>, <xen-devel@lists.xenproject.org>
CC: <andrew.cooper3@citrix.com>, <jbeulich@suse.com>, <roger@xenproject.org>,
	<teddy.astie@vates.tech>, <dmukhin@xen.org>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-4-dmukhin@ford.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261105013347.719392-4-dmukhin@ford.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL2PEPF000352D2:EE_|DS5PPFB8FBD73EA:EE_
X-MS-Office365-Filtering-Correlation-Id: 3459cd2b-cfc5-46a9-68fc-08df3b8a168a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|18002099003|22082099003|10067099003|4143699003|56012099006|11063799006|261026121527099003|261021121427099003|261009223027099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	SnjgytS/sFNLe3oSzr5SdGmYQsQhypyspKN1rDUx19FI5rDTkbXvU8VfxD7XiyH/2XDzeXk+pKNyl9bAjY38zO8+Yr4105MD8bW4Voig4kD+GoCfxw50FzPzw4/KNF51f/DwoAG80fOmN8mMLbAP7uMSWW6RECOLrdu9BI1mL13k4NKguq46EZw/X/P05uo+NeRFMqBn6Az5mYDjw7A/RdHB2uBrPudN5S4gDRu1n+VrvZeES1GcaBTjUll9lJO8WRS4MiZngyic7aI+yYlt3R3BpbSAoa4B1a5vE06mcPLba4o9YXVZdzP+tIxsRupXK5NRQ1y0Nqdorr4FFk8zDuWKo9tsa1CHp36Pj9H4LYCK3s5ko4dr2eVuOnCzu1/2h19xqOaS3WUJHOSYPfeFcdIzF0805TRjupJAZtQ1W007LqQwTxCbOEWr3najk1oPWOZSiEXrtTzC0TZrOW0Ccf8iiW12c5Yk0ZsEHHWZiyiZ6uVN9Uld7LXBKHAt0s6zUvPRKBUflan6kuUhMX+a6tLfufAHtMNzWXAOQropb2C3SNVgmB0RMwrq7zoPN48feRVDPT74ifmwt0B6pr98XweHoZiRhnPHpLwf2EXzCk6vlxH5OcOHYuEyqXhUJe9Rb7xMyznhxoRAoyotLGxEx3Zkc1D0fn0FFBpnulrNKwzDK2BhutIhm0ifujxEKP4B1XzuNinXLo2ypD37oAh2Bg==
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)(82310400026)(376014)(23010399003)(1800799024)(18002099003)(22082099003)(10067099003)(4143699003)(56012099006)(11063799006)(261026121527099003)(261021121427099003)(261009223027099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	i7W67okspneK7quoigZ9j7EKeT+zlFudHp863brCS4EgDSaAoq2DnEfHAYQKNO7L/vSXdjA02ihZpsuqIU8+IFSkyb9WuZGJEYn7Mipe4KXRZNKf92Eyo08n5TLNw/Oy1ynZMYbbuoaliUzucvPkRCQdBOTQGZwl01LQ4QsDUfOVHhT9mHboTH+e00jQaDmvLrENeqQ0hOvP6v4tk2DB9xQrk2MnmLefbf6b499fqRwqzZpgpDX+VJkrlPMRBRBp5FgW8lqeBepON1RW97aurdEjCRpZ5KgmZB1ZfnrbrkgsbN7eqfTKRggzXHuHeoMSRLRBt7mEJ+0P5HXSjbmFskZav+Gv4TYu+PFD63cY4K4SDFJCVRrJzguJdYjk92ZxGL9fYhGuXhko+6MrBBI+w97sMPUsDcGs7sNyNzsDJ8Ni8r6fsxEVFZcEPH4DGM4K
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 22:13:57.9140
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3459cd2b-cfc5-46a9-68fc-08df3b8a168a
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:
	BL2PEPF000352D2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPFB8FBD73EA
X-purgate-ID: tlsNG-ebf023/1793916842-585C7B50-5BC7DB34/0/0
X-purgate-type: clean
X-purgate-size: 2367

On 2026-11-04 20:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Report SVM AVIC support from CPUID Fn8000000A_EDX[X2AVIC](bit 18).
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>   xen/arch/x86/hvm/svm/svm.c         | 1 +
>   xen/arch/x86/include/asm/hvm/svm.h | 2 ++
>   2 files changed, 3 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
> index cf008a8acdf2..db81dad4b681 100644
> --- a/xen/arch/x86/hvm/svm/svm.c
> +++ b/xen/arch/x86/hvm/svm/svm.c
> @@ -2457,6 +2457,7 @@ static void __init print_svm_features(void)
>       P(cpu_has_svm_vnmi, "Virtual NMI");
>       P(cpu_has_svm_bus_lock, "Bus Lock Filter");
>       P(cpu_has_svm_avic, "Advanced Virtual Interrupt Controller");
> +    P(cpu_has_svm_x2avic, "x2 Advanced Virtual Interrupt Controller");

Sorry, this ...

>   #undef P
>   
>       if ( !printed )
> diff --git a/xen/arch/x86/include/asm/hvm/svm.h b/xen/arch/x86/include/asm/hvm/svm.h
> index 0fc33f41b09d..292a9ee19b11 100644
> --- a/xen/arch/x86/include/asm/hvm/svm.h
> +++ b/xen/arch/x86/include/asm/hvm/svm.h
> @@ -36,6 +36,7 @@ extern u32 svm_feature_flags;
>   #define SVM_FEATURE_AVIC          13 /* Advanced Virtual Interrupt Controller */
>   #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
>   #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
> +#define SVM_FEATURE_X2AVIC        18 /* x2 Advanced Virtual Interrupt Controller */
>   #define SVM_FEATURE_SSS           19 /* NPT Supervisor Shadow Stacks */
>   #define SVM_FEATURE_SPEC_CTRL     20 /* MSR_SPEC_CTRL virtualisation */
>   #define SVM_FEATURE_VNMI          25 /* Virtual NMI */
> @@ -57,6 +58,7 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
>   #define cpu_has_pause_thresh  cpu_has_svm_feature(SVM_FEATURE_PAUSETHRESH)
>   #define cpu_has_tsc_ratio     cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)
>   #define cpu_has_svm_avic      cpu_has_svm_feature(SVM_FEATURE_AVIC)
> +#define cpu_has_svm_x2avic    cpu_has_svm_feature(SVM_FEATURE_X2AVIC)

... and this is mostly ordered by feature number.  Maybe add an pre-req 
patch to sort them, and then re-do patch 2 and this patch to insert in 
feature order?

Re-ordered (for both patches):

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 23:10:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 23:10:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475828.1682333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6b5-0005Y8-3W; Thu, 05 Nov 2026 23:10:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475828.1682333; Thu, 05 Nov 2026 23:10:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6b5-0005Y1-0P; Thu, 05 Nov 2026 23:10:19 +0000
Received: by outflank-mailman (input) for mailman id 1475828;
 Thu, 05 Nov 2026 23:10:18 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xP6b3-0005Go-Mb
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:10:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP6b3-00HQwO-3X
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 00:10:17 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aed0c92-bab6-0a2a0a5309dd-0a2a450bab5a-12
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:10:16 +0100
Received: from [40.93.195.2]
 (helo=SN4PR2101CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aed0cd6-b7e8-0a2a450b0019-285dc302565b-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:10:16 +0100
Received: from BN9PR03CA0291.namprd03.prod.outlook.com (2603:10b6:408:f5::26)
 by SA0PR12MB4351.namprd12.prod.outlook.com (2603:10b6:806:71::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov
 2026 23:10:11 +0000
Received: from BN2PEPF0000A993.namprd04.prod.outlook.com
 (2603:10b6:408:f5:cafe::5e) by BN9PR03CA0291.outlook.office365.com
 (2603:10b6:408:f5::26) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Thu, 5
 Nov 2026 23:10:11 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF0000A993.mail.protection.outlook.com (10.167.248.135) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.5 via Frontend Transport; Thu, 5 Nov 2026 23:10:11 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Thu, 5 Nov
 2026 17:10:11 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 17:10:10 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Thu, 5 Nov 2026 17:10:10 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=M8lwdeVne1ytgK12/an8SM1LpQPdZfbHOKG1bsuXHCl9BZZdLLz6DndWxIVS35y8BcqhDXymtTZ+4xvIGyWa/2luwgOvvMJMZitN2esU2+4vnis/Lb03Z8ZoedwPrvd2g4GFVqhgjnf6sYxNklBw0Nhc2Bh04zkoaySaU5q61n+jetMBv7/sHgvQvqEXezypKf0+aZPhDMI7stVgo+xNJZDLf5+KBeY9Hd/CcT4lE5i9X5nfQ9JscRDDdTN5An3xw+ochkq9i4snnmY6G1R8gUU9yEC3d0+Dw0QydIusLQ0d06j9sbVtfgd/Cr2TTZ+8hU/v8XIW+J1e46X4vknLRg==
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=BpV/afrcWR9sqTsx/NOCi/47YkrQc3asyulnlcV5SmY=;
 b=vRpw77Z9huQymHFoMm/H07SH03ZDJoK2EmWyGPeP+NDi8f238hVa0q+AgwBSlW+Bs6UEuoMqe/vjxHCISJiZM5D/+A4WYSo9QplCDaUv//0NtsDNO4r7BP3I4T28Kab1weEPo7e6zpG3fRORdMWd6r+nrexJuBVgvQQhZxB7qJGE1rJfexi8x5neij9ncjsHrDFNCkE1Y0HjAVCwrXvD679D2+iEkwjpV2XnRtnAY7YUcuQbN1JS2k+JKdPF8Vxa6U3p3bm7kqc+NEvFHt9shH+sFuYYD5Y7gbFOXIAKhDvhc5WJx1ndSDzCBLeuyXxWHYE2hMQvaU4L6WlVQigD3w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=ford.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=BpV/afrcWR9sqTsx/NOCi/47YkrQc3asyulnlcV5SmY=;
 b=pYWe+gikQ1/QSksTSQnUEHVggTyz/+Gqm3xop2TDwaWI7QYCQ9zgbAnL6LWRqH7SWNBNnUAm7KzHCV0LpoPL/p5W5gJxQr8JCmrSizRTQr1L/OXpLk4CCmVrkcVh7HdrCVFK5MFSzTTapJLKOyAtjYave1s7XoTeztzDMoK3pSM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <54e0b42a-845c-44c3-acde-6a965f5494d6@amd.com>
Date: Thu, 5 Nov 2026 18:10:10 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/28] x86/hvm: avic: add domain state initialization
To: <dmukhin@ford.com>, <xen-devel@lists.xenproject.org>
CC: <andrew.cooper3@citrix.com>, <jbeulich@suse.com>, <roger@xenproject.org>,
	<teddy.astie@vates.tech>, <dmukhin@xen.org>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-5-dmukhin@ford.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20261105013347.719392-5-dmukhin@ford.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF0000A993:EE_|SA0PR12MB4351:EE_
X-MS-Office365-Filtering-Correlation-Id: 21d10255-dad8-4f0c-0aa1-08df3b91f154
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|82310400026|36860700016|11063799006|4143699003|56012099006|261022105027099003|261021121427099003|261026121527099003|261028144727099003|261026140227099003|261102123227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	0i3szJOd9z/rLfEu8UgheGR5bmba5MsG9hFr4FuAoXFViEZg+f5DWKrrqkUfWaXXkuS0y8Uss46ELY+fws3P4vvk4jBgyKpm8Ly42l1VCCjmwnVmSOxpjjvrBiNYIrm4MT4sdV3nkPop0Be4AEA8mlMwM3pzPOx5RBYPL2SpTnjiyyOeb+0qXRQIey+r0JvNanxem8rlOUIdBoe13QfquA+aV82ZhMii2APsZmmozUmli7H+aKuUFs4WFHLqchXpq0d40KO3EfskzmxqbpYbEEVJdLCw/h2bwy6LD8parUm8S4JBBJ6sJD9xm2V2/KwraFXppq2G/aoumOGFW4ryC8XWBAsQBmaPPVjTHSP8EhhAkukSiowvevfuk6LU7EGY2DsPkm40sUyVT0hB852xbyOvJ+EDdDcAOyZMrEdmarDBQ0j/F9qvPG7sAeqDqRvF0NX8mWocglK+LPL+HO/IDIuRdKLcNF4ohC7k3ZTtdS6Rh667WGFL4luJ5GbXrPdjBVmL1ysnakoNnYreQ//aE+eqxtXgQ6G7jtkapmcIbUF6xGYCW3iLdQpc0EW+i4mYfp7GTXUWFklsZsH96+j6RAcMi8zoECLnUtSp9lXHgBGbF2gif7meoHNMqpPFvumdsNimyLZVIqsTRnzAgZUzuDxw72cimTjMOzZdjXgVrFG0KXMKtIyaGsO3lB4iYmCdj2J0+fKDAMpy9hx7yyD35A==
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)(23010399003)(376014)(82310400026)(36860700016)(11063799006)(4143699003)(56012099006)(261022105027099003)(261021121427099003)(261026121527099003)(261028144727099003)(261026140227099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	FWnu7WqR9NOzLAnbAo4f8bSgIMDRrRp1QPuFzE2weMWZfq+9JdhNj4KeJ8fQxId/CBcKy/Zz3MIObm/TA+3Y1Y2/vYyCNeE/3AnXs+WG3Ot/bkcvFkP6Vp3upp0rqKoRju4GhOVUi/bhf8y+XLSEgUycdWL6jM5y3hGUyj+PZW7L34NoM1ZEFxF31vesDiXQ0Gp7JdU/xSlZeMH0PfMaq98ar/urgjHEI0z+t3EAxzzFfQkFhdSK6x2gY4a4VTl4ihuaQTm5BC2rtI4QRANzArz+hfrFze8lUiY1HnsLBPPibNEMT9pfUOjG5cchl2VPrzA7RFcRYtN8Vl4OAYqCejVGrQdVIsHSMAAPTDRz3nm9Z7Yzl5tNN+zM9hhGFs4d7K6y44eHDupZthd/FA90RCtJ3KqR5r5lF1NDxs7pi9wbH+35yGBgRgXX/R40jUGu
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 23:10:11.4576
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 21d10255-dad8-4f0c-0aa1-08df3b91f154
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:
	BN2PEPF0000A993.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4351
X-purgate-ID: tlsNG-42698a/1793920216-ABED69EA-F2D7AE58/0/0
X-purgate-type: clean
X-purgate-size: 1005

On 2026-11-04 20:33, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Establish per-domain SVM AVIC backing page mapping and SPA mappings
> for APIC physical/logical ID tables. Use MEMF_no_refcount mappings
> similarly to Intel's VMX APICv setup.
> 
> Gate per-domain AVIC state initialization behind 'svm_avic=' command
> line option.

AIUI, "-" is preferred, so 'svm-avic='.

> +
> +/*
> + * Enable guest accesses to APIC_DEFAULT_PHYS_BASE.
> + *
> + * AVIC walks the nested page table to check access permissions, but
> + * ignores the SPA from the leaf entry and instead uses the address in
> + * VMCB.avic_backing_page.
> + *
> + * Install a mapping so APIC accesses don't trap to Xen while xAPIC is
> + * accelerated.

Maybe:
"""
Install a mapping to the shared avic_acpi_access_page.  This populates 
the nested page tables, so APIC accesses don't trap into Xen.
"""

With those two changes:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>



From xen-devel-bounces@lists.xenproject.org Thu Nov 05 23:12:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 23:12:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475836.1682342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6d7-0006JG-DQ; Thu, 05 Nov 2026 23:12:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475836.1682342; Thu, 05 Nov 2026 23:12:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6d7-0006J9-Am; Thu, 05 Nov 2026 23:12:25 +0000
Received: by outflank-mailman (input) for mailman id 1475836;
 Thu, 05 Nov 2026 23:12:24 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@paul-moore.com>) id 1xP6d6-0006Iz-EM
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:12:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP6d5-00HRI0-Jd
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 00:12:23 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <paul@paul-moore.com>)
 id 6aed0d55-bab6-0a2a0a5309dd-0a2a4506d444-2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:12:23 +0100
Received: from [209.85.215.172] (helo=mail-pg1-f172.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <paul@paul-moore.com>)
 id 6aed0d55-195a-0a2a45060019-d155d7aceda7-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:12:23 +0100
Received: by mail-pg1-f172.google.com with SMTP id
 41be03b00d2f7-cdb1199bfd8so15096a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:12:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=paul-moore.com header.i="@paul-moore.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793920341; cv=none;
        d=google.com; s=arc-20260327;
        b=L4Y4Jj/h2SB6HH9xKG2GWVk2uUkGcfnN0wDnovggsAqOPJyCUUdwvLFQX5GP4pV2R+
         HrPReXyD8AyDRQzJkbUCv9iMr/gLpuSJeDVoMVr5exy5dLReT/XJRzLDuSKK15uy+WqF
         Oa6UTcw7MCtxXIOtvCOfpN3fywVeKbJkBMUFoiDf17rOByX6UZFPBDLhUh7D9R2asYob
         VFD4O9MtQP4UR59MbCdLlJqyuxbREdHu7FQNxq+alM/U84RcrSkIh0nE/JRZvzfe2M2m
         TZLJdtbfD1krrhqzBtzc6of8LTu8xzpjVx0zq60oWdsxKyFp/dOHB05+aAEVq8VVW/r0
         fevg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=w+g0xKR97zcXC//9XGcArRTzIRGbaLo0LA3je3jFgFY=;
        fh=m1xu7JDuD9lfZam1WJ90hjSH8snyy8QYGL2JPH3usfo=;
        b=I9+iSZo8l+y8g8wfVG8mdqelCuy60+i0WUYoTWhacSrjKsCnT4XjQNl0SNAvq7gMEo
         4SHF5Ot74frb5kAJaZZ20q5ulg1+Ly57ObHmDDp+eZ4RAv+ERyXGGwihEZsE0PrlzdcS
         ZMgNmP3mQnS0IVpSstY41MvobpTYskEnrfOj3bjftYcY682v/Ri5Qs8gE3WnB61N4ozV
         3HFG3XjeK2UbhouMcpP/OqFg3XJ8yVpTtkWfjFDbyprrt1WIwNRfKw1gyXDLUDLrSkAc
         YbVEXlttLiIcgU5wCtlmfWWCeIqcAui8n1XyJtF6hha6TsDdWHUBHCfrMhNIl3vqPWrn
         2f9g==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=paul-moore.com; s=google; t=1793920341; x=1794525141; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=w+g0xKR97zcXC//9XGcArRTzIRGbaLo0LA3je3jFgFY=;
        b=EnWWcEGP/0K2wlV7r4bpEU2AG9LwiyTqZiMHoViWinG+AbEDN9wYWUw3RkFSlj/RC+
         5JQtDcmHZ53POYg1sLjkZVX0FxSGz/WqqY/gPG5uXqNAdNCenqyVJ++yZhH7hdEpNhiX
         /otrn6BRzS02FEFc+4Dl6T7Xy0w+I1r430rMhdpKjrWQtbTYs3Xt7FblCpwd4BA2VlFi
         0NTy9LaF6U+FSc4X1KI3o4nKo75rAk3zN8Cj4l6iN7Wtz+cX4EW8qc9HKMXgqxDHYA7c
         FuwhX689Rkq2gwN4tTgANnk+UB6/CLTrrF9D9qdQzCo1r8T2KHNxCc9EWkN8ARc+HGg2
         Splg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793920341; x=1794525141;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=w+g0xKR97zcXC//9XGcArRTzIRGbaLo0LA3je3jFgFY=;
        b=iajnV2u2EiASLEdBVKDyCJKrbVNR0WZtcd8nE6aXGNDF5kpCOWZNhljrNULL9vE5xF
         ++5BGa898uj2rX9HnMFCE2Wtv2W3vw6tpQn2uICnNnhFW9596xp7PJN/Xt61mRxb4J2s
         usGXSh5OzPtQs+HXJrbCj8uXZQS2LgUk+AVX/Rng0UJW3s33mumPYBRQVZR+G6bVgxO4
         i1k13hQBAVi0NgLNnLwJ4CP4Wcx3ouL4aoZ/QK0OlIk8wOaW7h5357bD6pYzyrQiZEfI
         DsDhRJMCouBQYErEMPhQ26y2up4Or7SZxFhrJHa93Jy8uSFKnVbEhX6qtNtf6QsDznu0
         WHdw==
X-Forwarded-Encrypted: i=1; AKwUvBxnnQdXIKHG4H8eHCDMXHi9IYIdvtY219fHImNhKajqxKTOnnK6VTGU4iuNQXq0Y6yM4NVRpO15zUE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9df0Sb2qQK6Hl0NqTNSuvq4f2zbk1IBZCSaKGJHTvgNPTNdIjV
	NW2yBv2RIDxHidrLZEUw2mgLPJcya/fxnSB7vioOlqCkXrptCDrpL8p82wrjTHZoz5VM+gjPWnn
	CLgRFpFgUeD9rJHKx2BTBeRVFYO+APBssvyMb8svt
X-Gm-Gg: AYBFou0lBlEzYaZ2Dd9zwcUHgvrGsBkhdR0ylr8Dm4IwTNxmKoAUoQZq2qFVCN5m5TE
	9ybokt0RuBgUGWhLeva2DYSZfxu7z0+e6fqzZWKnAidGomqfJsNY82f5VirFv0acydb1msUWHGo
	MqnzAJ2fp/a8sgJ1TdE4sMdflkXmuctpaTeJct05dCyTYs55b+qxPFtQ6nZr+SZL/2UfaszHMQ6
	mQ2fuz9kV698tOHiuQpZ+rI3qFFeMfhjKHalzwyqswVb2ZgSo22RpACUIUBnwuRcGSYoZHNOToy
	t2T+BzajtExnnov9FooehdIzyLW0TjRzlUK3S+5QY+hwbhKwogB09jBIYergGJ/36yqSkoHzmY0
	8D6+ptcEDPzaLE1qSbjHC3ZGNu0F7ORg2KRxBmUF+bEbj+t8GeeKGC8guFb+HSrmZXqd3
X-Received: by 2002:a17:90a:d88f:b0:3ac:b867:81df with SMTP id
 98e67ed59e1d1-3b0db6fbe69mr555739a91.39.1793920341210; Thu, 05 Nov 2026
 15:12:21 -0800 (PST)
MIME-Version: 1.0
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
From: Paul Moore <paul@paul-moore.com>
Date: Thu, 5 Nov 2026 18:12:09 -0500
X-Gm-Features: AclHuK9SAmQ1s59IzUj_GoyUW49QmobrDei9zDR78OY4d10Tcv8mWs8d-l1JUg8
Message-ID: <CAHC9VhQvpFeEJaEyPDaqj8_S752puSaNe0Rn-hxjh=ugCoFsxA@mail.gmail.com>
Subject: Re: [PATCH 00/14] mm: convert further simple mmap hooks to mmap_prepare
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Madhavan Srinivasan <maddy@linux.ibm.com>, 
	Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
	Shrikanth Hegde <sshegde@linux.ibm.com>, Haiyang Zhang <haiyangz@microsoft.com>, 
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowangio@gmail.com>, 
	=?UTF-8?Q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
	Dave Hansen <dave.hansen@linux.intel.com>, Thomas Gleixner <tglx@kernel.org>, 
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
	Stephen Smalley <stephen.smalley.work@gmail.com>, =?UTF-8?B?T25kcmVqIE1vc27DocSNZWs=?= <omosnacek@gmail.com>, 
	Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
	Ryan Chen <ryan_chen@aspeedtech.com>, Billy Tsai <billy_tsai@aspeedtech.com>, 
	Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konradybcio@kernel.org>, 
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>, 
	Sumit Garg <sumit.garg@kernel.org>, Scott Branden <scott.branden@broadcom.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran <richardcochran@gmail.com>, 
	David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, xen-devel@lists.xenproject.org, 
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
	virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
	selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
	op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1793920343-F647377B-B8B5F913/0/0
X-purgate-type: clean
X-purgate-size: 2953

On Thu, Nov 5, 2026 at 4:06=E2=80=AFPM Lorenzo Stoakes (ARM) <ljs@kernel.or=
g> wrote:
>
> Continue the conversion of users of the deprecated f_op->mmap callback to
> f_op->mmap_prepare. Keep things gentle this cycle by targeting simple
> cases.
>
> No functional change intended.
>
> Build tested on x86-64 (allmodconfig, each patch individually), i386,
> arm64 and ppc64le.
>
> <<>>
>
> David, Andrew - I wonder whether one of you guys could take this series
> through your tree? Since it's kernel-wide it seems sensible to take it
> through an mm tree.

Granted I've only properly looked at the SELinux patch (7/14), the
rest I've just skimmed through, but these are all independent patches,
right?  Is there any reason why individual subsystem maintainers
shouldn't just pick up their associated patch?  Yes, perhaps chasing
down individual maintainers is a bit more work, but isn't that the way
this should work?

> Lorenzo Stoakes (ARM) (14):
>       xen/privcmd: convert mmap hook to mmap_prepare
>       KVM: PPC: Book3S: convert spapr TCE mmap hook to mmap_prepare
>       mshv_vtl: convert mmap hooks to mmap_prepare
>       vduse: convert IOVA domain mmap hook to mmap_prepare
>       x86/sgx: convert vepc mmap hook to mmap_prepare
>       udf: convert mmap hook to mmap_prepare
>       selinuxfs: convert mmap hooks to mmap_prepare
>       xen: convert xenstore interface mmap hooks to mmap_prepare
>       soc: aspeed: convert LPC and P2A control mmap hooks to mmap_prepare
>       soc: qcom: rmtfs_mem: convert mmap hook to mmap_prepare
>       tee: convert shm mmap hook to mmap_prepare
>       misc: bcm-vk: convert mmap hook to mmap_prepare
>       ptp: vmclock: convert mmap hook to mmap_prepare
>       vhost-vdpa: convert mmap hook to mmap_prepare
>
>  arch/powerpc/kvm/book3s_64_vio.c        |  6 +++---
>  arch/x86/kernel/cpu/sgx/virt.c          | 15 ++++++++-------
>  drivers/hv/mshv_vtl_main.c              | 14 +++++++-------
>  drivers/misc/bcm-vk/bcm_vk_dev.c        | 20 ++++++++++----------
>  drivers/ptp/ptp_vmclock.c               | 19 +++++++++----------
>  drivers/soc/aspeed/aspeed-lpc-ctrl.c    | 20 +++++++++-----------
>  drivers/soc/aspeed/aspeed-p2a-ctrl.c    | 22 ++++++++--------------
>  drivers/soc/qcom/rmtfs_mem.c            | 22 ++++++++++------------
>  drivers/tee/tee_shm.c                   | 14 +++++++-------
>  drivers/vdpa/vdpa_user/iova_domain.c    | 12 ++++++------
>  drivers/vhost/vdpa.c                    | 23 ++++++++++++-----------
>  drivers/xen/privcmd.c                   | 11 +++++------
>  drivers/xen/xenbus/xenbus_dev_backend.c | 14 ++++++--------
>  drivers/xen/xenfs/xenstored.c           | 14 ++++++--------
>  fs/udf/file.c                           |  8 ++++----
>  security/selinux/selinuxfs.c            | 24 +++++++++++-------------
>  16 files changed, 121 insertions(+), 137 deletions(-)

--=20
paul-moore.com


From xen-devel-bounces@lists.xenproject.org Thu Nov 05 23:14:28 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 05 Nov 2026 23:14:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475842.1682352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6ey-0006pb-Nf; Thu, 05 Nov 2026 23:14:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475842.1682352; Thu, 05 Nov 2026 23:14:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP6ey-0006pU-L2; Thu, 05 Nov 2026 23:14:20 +0000
Received: by outflank-mailman (input) for mailman id 1475842;
 Thu, 05 Nov 2026 23:14:19 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@paul-moore.com>) id 1xP6ex-0006pO-NT
 for xen-devel@lists.xenproject.org; Thu, 05 Nov 2026 23:14:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP6ew-00Fk0f-Of
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 00:14:18 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <paul@paul-moore.com>)
 id 6aed0d7a-bab6-0a2a0a5309dd-0a2a4502b6e2-34
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:14:18 +0100
Received: from [209.85.215.175] (helo=mail-pg1-f175.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <paul@paul-moore.com>)
 id 6aed0dc9-6ca4-0a2a45020019-d155d7afe87d-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:14:18 +0100
Received: by mail-pg1-f175.google.com with SMTP id
 41be03b00d2f7-cc758830601so23319a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 15:14:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=paul-moore.com header.i="@paul-moore.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1793920456; cv=none;
        d=google.com; s=arc-20260327;
        b=ZzW4M4agcbx7sJ8BUD2ixJaDVSoLH20R1ZoMmPjo3rZ/0y8pNmQrE9vmjvwkdvT8Hn
         yy6DsQ0UOUqm7mO3DfA1hkBU/+yN3LYtV7mw594NuMu/iLEROLUDI85S83cSixXQB/08
         CVs2nXXPzMR0p+1VCOiqoBBko02ByLGhpFnvo7TNkdR1jzUv/Yai+gRiH3rg6k6rMbBy
         WzRhxEdbGUHmvQFGvKDy5hMTUo4MduNVmB7UgXJ6K3MPrgIwO3NPeIMJilrqKTq2TZVp
         B6gKZ4lUCtSWL7QQ2zpVwUFE6Z7i75Xd93Q8e2wwXRaRCOhd6TAxXYt6ptAmFh8x+1XW
         rWTA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=mGiD8zQqMuzCkGXAZBtgumh8HlT9rNPiWNa35MXqkeQ=;
        fh=MfGFRDDCXYV+Dv1AAnb83D2cWHbOVtfldSnJ1j3tI5o=;
        b=Nn4cFa27+LM3h8vT2TPn3YV+SHV7+lJPXddkLGvJuOxAjVs1axe1pTFzAiOqNNc7sp
         2y2uwa2obP5omgI+jAZk3angoBlh8UK4u0IWV1JzYeSEbzOtrwmCn9syIdTPsz+j9a3c
         BEcIk5S0a914Vj3B4G6NcjXIrUxBttfjF90DoW/IW9/F84eAZu1Z4pmgzF19XDicf0f7
         U7iUx0QCPjy9NVoWj/ChB+Yc+gZ9q7C2o4TDJTmhxe9F1pKA3ACWNoZ4Q3OBo65D7i9N
         6DHwH+4RhFZdFAGqciJvhPeH9QmUNblygtfsSZtD43igIaMp0LbN0nQmNJiYo/yC4Is8
         92cg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=paul-moore.com; s=google; t=1793920456; x=1794525256; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=mGiD8zQqMuzCkGXAZBtgumh8HlT9rNPiWNa35MXqkeQ=;
        b=ehDn0WeqbrX8tXbGpL592o978uh6xXAYSSjmiDnxqTVt7kwyR6gBX1LTi8JqwPrs1o
         YEC6Nw1fEu1/vDkL8j06qZ7br5Ffjt0GHoyWIpjCu2TCe+toU9n13HCUlPO8sJ+kxugC
         6wfQ/57rfTaVsnMVTBBDL8CR+mq9xbEaSOSYvKM0Z8+IWa7rE4EZCtrxSzWm8pw5B8dE
         CPojTq2mlkevCV32jyVHnM/k8ngTu3qghZiLrtVrujNekUxNGxIj7e2dzKSj7ECXoUaH
         Qa0FSJrX+L3HuYjTjnqOChBJTyPzuv75c8p2sask6DSH8T6mhtG4/YdMog47p63othGu
         k6Tw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793920456; x=1794525256;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=mGiD8zQqMuzCkGXAZBtgumh8HlT9rNPiWNa35MXqkeQ=;
        b=mWARwik6WQtXQV84Hfa6+orr6nCH4t1zfYvRJYmAcblPxcLFCFuo9IkCAALQX5IWK7
         rVSLC0rANzpi3Hr36TN3w3BXKah0hWE4A9f2TnYLHeOws4QEMSXBoT3YB+0erjrHDDn5
         UPu/oiYac6W2Hsm98bpLyYR9jHGdFXb0ulArPBR/45PTb2Rvmcu+GfrtJA9BrlXwb5Zl
         deAv97dfuESGHcP/5Q3cNsv8EwmOgYPud9F8bcuH41v4Pw374GJXu5VGh0noB3Xu4E8m
         VPFUvwLHMt/+hjKHjk2zXGPLr1GZsN9uIxdPpEpPpZVpAFJw1h6e1h2pnKpyS3i0XEPu
         jcRw==
X-Forwarded-Encrypted: i=1; AKwUvBwmDp04/VjoLfUdsCNJ8DITQGVbVxeABFpMIvj2sF+6x3XZ8W0Pac6IrGEn5Cw1RCkjwxD+JD1GSqY=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+SP+ou/Zy0G4G2zYB9yFR8m1jCuk9e0CLVyrn/NARatYIcpEig
	irZrsorHPGSG4+f/F3XoO+cUj7MzTAVzClLA0tIaGf4WOCUVxs/Vx7nI0m6+D+HfCjWMSqPSt9J
	vXRAVHU7Q/XhZjoAmzqmXsz+o2c7TXDHV2tyxef00
X-Gm-Gg: AYBFou1Thkxto87t5HpEqFXOA5KD1H14iF5exP+ulwwKvYhXJj8wQGlU8ZTTX7Yw1Vz
	WBQ8hiK4R9I8X6pOQPU7Jspi9kfOn28SEtFbigGsYE7vWsqIDUDiw0qJ6Tx6tO007E9ooxMKtL9
	S6tmc+4qYb+6ZkKkPEwuF5jCMGiIMDf+9LUYPmgLoItBzcKi6uYMFEr75ZMqGqla3mjeW80z63U
	ZjhCsJNaqrnD38TB8agwPnxEA7vJQeYBdAxbq1csA2EX1qLihzZs6IG/nePF3bgaZGOsQv59hEQ
	lh/WRv0CSSgsvOEvQ4qgiEMjyPVMcXDYrhaT7nJOCdDbRtvv7FVlx63K0KuWXgI/MP2mc6D3PNQ
	EUGP/XOh5pzFuul3qbtHdBV1VjWZFNtfI38EzujfCkTzEtO4fsRx84F0d0t588YagwUCL
X-Received: by 2002:a17:90b:48cf:b0:3ad:a462:f07f with SMTP id
 98e67ed59e1d1-3b0db6e8ca3mr534231a91.45.1793920456567; Thu, 05 Nov 2026
 15:14:16 -0800 (PST)
MIME-Version: 1.0
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org> <20261105-late-2026-mmap_prepare-v1-7-c56aadfbab8a@kernel.org>
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-7-c56aadfbab8a@kernel.org>
From: Paul Moore <paul@paul-moore.com>
Date: Thu, 5 Nov 2026 18:14:04 -0500
X-Gm-Features: AclHuK-Yq9Ya_gmjsTlhf760be1vg51BQVbAOtNinoyo6VpZvAmG2k73A1wV2Mc
Message-ID: <CAHC9VhQcmX09Do8BmY-HYJEWKiw7Tf-ZB=EEr9K6t5dBzk0SSQ@mail.gmail.com>
Subject: Re: [PATCH 07/14] selinuxfs: convert mmap hooks to mmap_prepare
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Madhavan Srinivasan <maddy@linux.ibm.com>, 
	Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, 
	Shrikanth Hegde <sshegde@linux.ibm.com>, Haiyang Zhang <haiyangz@microsoft.com>, 
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowangio@gmail.com>, 
	=?UTF-8?Q?Eugenio_P=C3=A9rez?= <eperezma@redhat.com>, 
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko Sakkinen <jarkko@kernel.org>, 
	Dave Hansen <dave.hansen@linux.intel.com>, Thomas Gleixner <tglx@kernel.org>, 
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
	Stephen Smalley <stephen.smalley.work@gmail.com>, =?UTF-8?B?T25kcmVqIE1vc27DocSNZWs=?= <omosnacek@gmail.com>, 
	Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
	Ryan Chen <ryan_chen@aspeedtech.com>, Billy Tsai <billy_tsai@aspeedtech.com>, 
	Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konradybcio@kernel.org>, 
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>, 
	Sumit Garg <sumit.garg@kernel.org>, Scott Branden <scott.branden@broadcom.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran <richardcochran@gmail.com>, 
	David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, xen-devel@lists.xenproject.org, 
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	kvm@vger.kernel.org, linux-hyperv@vger.kernel.org, 
	virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
	selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, 
	op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-720697/1793920458-678BC2AC-452211E6/0/0
X-purgate-type: clean
X-purgate-size: 835

On Thu, Nov 5, 2026 at 4:07=E2=80=AFPM Lorenzo Stoakes (ARM) <ljs@kernel.or=
g> wrote:
>
> Move from the deprecated mmap hook to the new mmap_prepare hook for the
> policy and status files.
>
> The policy file only sets VMA flags and operations. The status file remap=
s
> a single page, so use the PFN remap mmap action to do so.
>
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
> ---
>  security/selinux/selinuxfs.c | 24 +++++++++++-------------
>  1 file changed, 11 insertions(+), 13 deletions(-)

See my comment in the cover letter.  I'd prefer to take this via the
SELinux tree so it can be included in all of our SELinux testing for
v7.5, but if this has to go through a single tree with the rest of the
changes, here is my ACK.

Acked-by: Paul Moore <paul@paul-moore.com>

--=20
paul-moore.com


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 00:35:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 00:35:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475926.1682361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP7vD-0007HH-Qx; Fri, 06 Nov 2026 00:35:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475926.1682361; Fri, 06 Nov 2026 00:35:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP7vD-0007H9-NR; Fri, 06 Nov 2026 00:35:11 +0000
Received: by outflank-mailman (input) for mailman id 1475926;
 Fri, 06 Nov 2026 00:35:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+c76d67e00cf3f3534b79+8475+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xP7vC-0007H3-JX
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 00:35:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP7vB-004Z0U-SV
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 01:35:09 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+c76d67e00cf3f3534b79+8475+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aed2085-2eae-0a2a0a5409dd-0a2a4502bae8-28
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 01:35:09 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+c76d67e00cf3f3534b79+8475+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6aed20bc-6ca4-0a2a45020019-5a9b32228e94-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 01:35:09 +0100
Received: from [205.251.233.52] (helo=u09cd745991455d.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xP7ue-0000000EEk3-0BZ5; Fri, 06 Nov 2026 00:34:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="MIME-Version:Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=6TNCgRmL/23mHPVturwpYhS1/L+Zqx8rGxIrqrETX5o=; b=eQdN9M2/rNw+BU8m/E6O/8OYF7
	rQynrR5VfrTx3nqBv28uIvCr8lMXtstjEbOSk/dIaASeICHfcsUZhmw8GWxh3LA6/bkABBx2GraMj
	TUgkUT38MkwKFrW7+iKSat5ykUYDKgKeWxpZUkHwC87GsuvKH/SC2Hq4PhcYkeX4DrTHpHnszfGRf
	3pKIDXdt8bsXYPp71p1RiQCYDhljxFSnULrnZUh8DySiUJoi/nLn/88PQELGj9rE6h7rzqo9zFjGp
	XAlUiHrkjXx2SD8PhEQikpLsOGg5os6f5T8udNzGtIP18yCcCYB8hHFcSqYsX6O5LnphTLi/AqZWy
	qLQpwhsA==;
Message-ID: <b63e75987464d669779b1a861d4a073c9caf85f4.camel@infradead.org>
Subject: Re: [PATCH 13/14] ptp: vmclock: convert mmap hook to mmap_prepare
From: David Woodhouse <dwmw2@infradead.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>, Juergen Gross
 <jgross@suse.com>,  Stefano Stabellini <sstabellini@kernel.org>, Oleksandr
 Tyshchenko <oleksandr_tyshchenko@epam.com>, Madhavan Srinivasan	
 <maddy@linux.ibm.com>, Nicholas Piggin <npiggin@gmail.com>, Michael
 Ellerman	 <mpe@ellerman.id.au>, "Christophe Leroy (CS GROUP)"
 <chleroy@kernel.org>,  "Ritesh Harjani (IBM)"	 <ritesh.list@gmail.com>,
 Shrikanth Hegde <sshegde@linux.ibm.com>, Haiyang Zhang	
 <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui	
 <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang	
 <jasowangio@gmail.com>, Eugenio =?ISO-8859-1?Q?P=E9rez?=
 <eperezma@redhat.com>,  Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko
 Sakkinen <jarkko@kernel.org>, Dave Hansen	 <dave.hansen@linux.intel.com>,
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar	 <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, "H. Peter Anvin"
 <hpa@zytor.com>, Jan Kara <jack@suse.com>, Paul Moore
 <paul@paul-moore.com>, Stephen Smalley <stephen.smalley.work@gmail.com>,
 Ondrej =?UTF-8?Q?Mosn=C3=A1=C4=8Dek?=	 <omosnacek@gmail.com>, Joel Stanley
 <joel@jms.id.au>, Andrew Jeffery	 <andrew@codeconstruct.com.au>, Ryan Chen
 <ryan_chen@aspeedtech.com>, Billy Tsai	 <billy_tsai@aspeedtech.com>, Bjorn
 Andersson <andersson@kernel.org>, Konrad Dybcio <konradybcio@kernel.org>,
 Abel Vesa <abelvesa@kernel.org>, Jens Wiklander	 <jenswi@kernel.org>, Sumit
 Garg <sumit.garg@kernel.org>, Scott Branden	 <scott.branden@broadcom.com>,
 Broadcom internal kernel review list	
 <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran
 <richardcochran@gmail.com>, Andrew Lunn	 <andrew+netdev@lunn.ch>, "David S.
 Miller" <davem@davemloft.net>, Eric Dumazet	 <edumazet@kernel.org>, Jakub
 Kicinski <kuba@kernel.org>, Paolo Abeni	 <pabeni@redhat.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
 linux-hyperv@vger.kernel.org, 	virtualization@lists.linux.dev,
 linux-sgx@vger.kernel.org, 	selinux@vger.kernel.org,
 linux-arm-kernel@lists.infradead.org, 	linux-aspeed@lists.ozlabs.org,
 linux-arm-msm@vger.kernel.org, 	op-tee@lists.trustedfirmware.org,
 netdev@vger.kernel.org
Date: Thu, 05 Nov 2026 16:34:23 -0800
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-13-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
	 <20261105-late-2026-mmap_prepare-v1-13-c56aadfbab8a@kernel.org>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-RN0WgQiIue6jLyM+SxS4"
User-Agent: Evolution 3.62.0-0ubuntu1~ppa1~24.04 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-720697/1793925309-311CF2AC-E91DE231/0/0
X-purgate-type: clean
X-purgate-size: 9175


--=-RN0WgQiIue6jLyM+SxS4
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, 2026-11-05 at 21:05 +0000, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook, using th=
e
> I/O PFN remap mmap action to map the clock page and retaining the -EAGAIN
> error on failure via the action error override.
>=20
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>

Acked-by: David Woodhouse <dwmw@amazon.co.uk>

--=-RN0WgQiIue6jLyM+SxS4
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCE8Ew
ggWvMIIEl6ADAgECAhANkOKMSmGXhF5eMl0rsRhvMA0GCSqGSIb3DQEBDAUAMGUxCzAJBgNVBAYT
AlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAi
BgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBHMjAeFw0yNDAzMTMwMDAwMDBaFw0zNDAz
MTIyMzU5NTlaMGIxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE6MDgGA1UE
AxMxRGlnaUNlcnQgQXNzdXJlZCBHMiBTTUlNRSBSU0E0MDk2IFNIQTM4NCAyMDI0IENBMTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOfSIeC0vv1xPQ+dgSxbIIrkaru6skAWJYaGFzmv
q4Kq+2wU2jxhcWlJg/JeP5jEkq/LM3pn5aaLao79j+XRmS7J1ZpJKUODJVoM4s9MQJhTMvo4qS5Z
S64g6QR7Obkz3I1Lr3aWeSBmDDEyzue+NKtuWZ1Cxy3RdXo/w5HgRc3l2AercOM3Gt1XonTzEtTb
Z/Hwc0Sn9Gz8RmGRK6Ka4hVDl8q/2l110KaV233Kh5etP0csXS8MIMdVRfRu3sc5hp13DG7lCKzK
72a2GEpI8Wpl26G6I1/LMzz/98T+FqjTqxsdquk7Cj7m2vKGLW1BorpQH7WFGPdJQXJe1hfbfiZA
CcVdCtl4nAacFacmsiArZBfX7AQGL7isvHUwwYFEtcApyGW4p2Lt+t8nvU0CANA6BHOpOz1xOP8W
mAESbUriIjyuTUf3fJ9oDNCurVqhASMJCDaWI3lYX/QAoiAzt6akqbbZxo2ujW7mGGqc0KxqE2cs
h2T79v7pC8aUtHBfwNrTR19GnZVxE0eQ7ViIQhR6mpSaUQFA9sG+cmD2G8TnCgYsLa0q8De6F61a
CBevQGHNzrbZ3JAMneveYg/Jy1XxQHDRcvrMfWKe0jjcWbdKYlaGVPm5V1ILwYz7Yv5ewo3NUrxI
GJiywe9qPhuJSDZs7VehTuI0FxGIsgKzVjgbAgMBAAGjggFcMIIBWDASBgNVHRMBAf8ECDAGAQH/
AgEAMB0GA1UdDgQWBBT3m6JO05fF9DQPQw6Bhc6RkzKv+TAfBgNVHSMEGDAWgBTOw0q5mVXyuNtg
v6l+vVa1lzan1jAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMG
CCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS
b290RzIuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp
Q2VydEFzc3VyZWRJRFJvb3RHMi5jcmwwEQYDVR0gBAowCDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUA
A4IBAQA+b8Uw53sDspdZgukU+qzLyyHkcjlxGGhHlP+zrmDLKm1wEFvCRS2pili3Hy67i8N4N5NU
vw5Rg6kv3lxb9S9Rktxk43k+tvm68pl7OxQE55ZjVY87P0lUPGwEqOOwLLyH02ZQcsfq5p5LrOH9
0JvmvZ1yy73HS+VpDAqOlytE0NSvTIRqFFkKQGQwfjvtql9YflujuNNvJztjBaHKYZsnNSg+J38o
jYq4TP3pSg3UdVH0PncVjPQyqxC9xef5Xae92Kbkzol3x7Nel3A1bwAkalrDMspvTHvey6LfiBks
FIqviTnoy7fgjaRAJgHS+RXx/cmuRd3rUAclSVVrYu8RMIIHAzCCBOugAwIBAgIQAzUotrsybJHx
HTjKOIVdIDANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs
IEluYy4xOjA4BgNVBAMTMURpZ2lDZXJ0IEFzc3VyZWQgRzIgU01JTUUgUlNBNDA5NiBTSEEzODQg
MjAyNCBDQTEwHhcNMjYwNzE4MDAwMDAwWhcNMjgwMTA0MjM1OTU5WjAeMRwwGgYDVQQDDBNkd213
MkBpbmZyYWRlYWQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2pYux73kdbYX
sWF8f1u6DJP91qcqaZetsyfPkZk0B+MmXmAEv0kVes5n15V2mbDThOnpoPFly0UugQO9JYqLfrtD
tKD5yL58fgrDB9Dw+LQikgrHafl6YSCds5AvUu/8hw2J6noKrcOLJpKlKn9Fl/4IB9Q3JIdLx5aa
EtTqMalIPqHFOlgrJ7s+aua8xbB8YQ9ahqYBXWRJNv3P/2b1DYtdrz1oqZPE3CcB8Pc6Gf2a1Tcm
6TAgtEx7Cf1BFcrsrMz7TWHmGQITieNb2r9UYWSc2Gp+GtYFNJCgT0JJXKUBIauPMKBLteYrL8Fo
ff/uY44dC/mDWjdCP/5x0qelPQjlBvWdHL5zvBTOj06rJ0m3HNI/hnIcDh0Qu2j9reb9rLVcdym6
bWmBM4uDEB8Zv9Ph0KTBFSy1IosyakuD1j1Os30EzjGfbi0EUXIvnOcYbTBAbM5UAzrxEHMhBvoX
Pvnx+OyvjJmc9tWxTX6AcSz+m40esbT17URBeZS18afgieiikm5TynlUYP1LciR3hSgGVzvGXnKO
02VDFR5itGWdRKZ2W5wIShNfWfhSa0D0K5UdIDt5Qc7sjzwK1Yb1sY5Tu0uA5mhIS82q1ov83uxB
sFkriNnhGv/M1NCDVLBiOMsHu73qUM+yKmgKLwF9Hfn9WI25glbAMI4S5r3hYzcCAwEAAaOCAfcw
ggHzMB8GA1UdIwQYMBaAFPebok7Tl8X0NA9DDoGFzpGTMq/5MB0GA1UdDgQWBBRcYhqbcGzn1jrT
JOZaB8O7qllDpzAwBgNVHREEKTAngRNkd213MkBpbmZyYWRlYWQub3JngRBkYXZpZEB3b29kaG91
LnNlMBQGA1UdIAQNMAswCQYHZ4EMAQUBAjAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYB
BQUHAwIGCCsGAQUFBwMEMIGpBgNVHR8EgaEwgZ4wTaBLoEmGR2h0dHA6Ly9jcmwzLmRpZ2ljZXJ0
LmNvbS9EaWdpQ2VydEFzc3VyZWRHMlNNSU1FUlNBNDA5NlNIQTM4NDIwMjRDQTEuY3JsME2gS6BJ
hkdodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkRzJTTUlNRVJTQTQwOTZT
SEEzODQyMDI0Q0ExLmNybDCBjQYIKwYBBQUHAQEEgYAwfjAkBggrBgEFBQcwAYYYaHR0cDovL29j
c3AuZGlnaWNlcnQuY29tMFYGCCsGAQUFBzAChkpodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
RGlnaUNlcnRBc3N1cmVkRzJTTUlNRVJTQTQwOTZTSEEzODQyMDI0Q0ExLmNydDANBgkqhkiG9w0B
AQsFAAOCAgEAocabrh1cPd5s3vY5rnlBVQSTc7zs2ZWs67dAIltR+05WELrYClVzzUhMs/LOJPlr
EUo45UDDomXq38DxFepaPd9+iNLjXfn33EX/IG44j04lU/oF/Rg9VeQILkYLbCZ/x9wOjNHZc4SN
ydY7Dhvf/sT5aBz88u7D5+azZJ7Qf1U57wYseCH1Mt0nDrtr5y19IJ8D9xJJ33RFL6vfpHZBBAQ8
+3RqkKNxLoV2aFvQhxdhjNLDqTv3LjUIdicwPraN7JkxEu7CV2Lka7eRqJgkWL7SK0YmBjGpRafs
+icP/ON5RCCKTTb6VlX8eTG2sJJfsFhvJNCCt6xexbWzWtIrfP7NvPBvwBB737AyEGBZkS5aNizT
McURJGTv9UKvBh1LF/+tNhYtLvPCN7oecGzhCHht9jcwSkygTo3Y6YlK3QgOu+ncmiBbfeuwlLZ1
LxbYvG6hgNqXv7u6YyADbYajAQJXJ2OQen39pm3Q/AQSyLYG+B8lDglWsM8tYXPlEdrYJcksGK6F
nqIX6Bumn43rBooLJdiZp4WmfWdL2pxe+LxRDjprmqu1WprixDxULSTOKJZoqTlugs6y3Bc+if+s
gHnBBtz9WQ6MtPHkh7zONDAFIKcBmv8OqPQCx0F3Wv3OEybwMpXx0OsKgK8wLldaX1pXcMuyDgTL
Sqs0AV0OHUgwggcDMIIE66ADAgECAhADNSi2uzJskfEdOMo4hV0gMA0GCSqGSIb3DQEBCwUAMGIx
CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE6MDgGA1UEAxMxRGlnaUNlcnQg
QXNzdXJlZCBHMiBTTUlNRSBSU0E0MDk2IFNIQTM4NCAyMDI0IENBMTAeFw0yNjA3MTgwMDAwMDBa
Fw0yODAxMDQyMzU5NTlaMB4xHDAaBgNVBAMME2R3bXcyQGluZnJhZGVhZC5vcmcwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDali7HveR1thexYXx/W7oMk/3Wpyppl62zJ8+RmTQH4yZe
YAS/SRV6zmfXlXaZsNOE6emg8WXLRS6BA70liot+u0O0oPnIvnx+CsMH0PD4tCKSCsdp+XphIJ2z
kC9S7/yHDYnqegqtw4smkqUqf0WX/ggH1Dckh0vHlpoS1OoxqUg+ocU6WCsnuz5q5rzFsHxhD1qG
pgFdZEk2/c//ZvUNi12vPWipk8TcJwHw9zoZ/ZrVNybpMCC0THsJ/UEVyuyszPtNYeYZAhOJ41va
v1RhZJzYan4a1gU0kKBPQklcpQEhq48woEu15isvwWh9/+5jjh0L+YNaN0I//nHSp6U9COUG9Z0c
vnO8FM6PTqsnSbcc0j+GchwOHRC7aP2t5v2stVx3KbptaYEzi4MQHxm/0+HQpMEVLLUiizJqS4PW
PU6zfQTOMZ9uLQRRci+c5xhtMEBszlQDOvEQcyEG+hc++fH47K+MmZz21bFNfoBxLP6bjR6xtPXt
REF5lLXxp+CJ6KKSblPKeVRg/UtyJHeFKAZXO8Zeco7TZUMVHmK0ZZ1EpnZbnAhKE19Z+FJrQPQr
lR0gO3lBzuyPPArVhvWxjlO7S4DmaEhLzarWi/ze7EGwWSuI2eEa/8zU0INUsGI4ywe7vepQz7Iq
aAovAX0d+f1YjbmCVsAwjhLmveFjNwIDAQABo4IB9zCCAfMwHwYDVR0jBBgwFoAU95uiTtOXxfQ0
D0MOgYXOkZMyr/kwHQYDVR0OBBYEFFxiGptwbOfWOtMk5loHw7uqWUOnMDAGA1UdEQQpMCeBE2R3
bXcyQGluZnJhZGVhZC5vcmeBEGRhdmlkQHdvb2Rob3Uuc2UwFAYDVR0gBA0wCzAJBgdngQwBBQEC
MA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgakGA1UdHwSB
oTCBnjBNoEugSYZHaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZEcyU01J
TUVSU0E0MDk2U0hBMzg0MjAyNENBMS5jcmwwTaBLoEmGR2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv
bS9EaWdpQ2VydEFzc3VyZWRHMlNNSU1FUlNBNDA5NlNIQTM4NDIwMjRDQTEuY3JsMIGNBggrBgEF
BQcBAQSBgDB+MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wVgYIKwYBBQUH
MAKGSmh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRHMlNNSU1FUlNB
NDA5NlNIQTM4NDIwMjRDQTEuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQChxpuuHVw93mze9jmueUFV
BJNzvOzZlazrt0AiW1H7TlYQutgKVXPNSEyz8s4k+WsRSjjlQMOiZerfwPEV6lo9336I0uNd+ffc
Rf8gbjiPTiVT+gX9GD1V5AguRgtsJn/H3A6M0dlzhI3J1jsOG9/+xPloHPzy7sPn5rNkntB/VTnv
Bix4IfUy3ScOu2vnLX0gnwP3EknfdEUvq9+kdkEEBDz7dGqQo3EuhXZoW9CHF2GM0sOpO/cuNQh2
JzA+to3smTES7sJXYuRrt5GomCRYvtIrRiYGMalFp+z6Jw/843lEIIpNNvpWVfx5Mbawkl+wWG8k
0IK3rF7FtbNa0it8/s288G/AEHvfsDIQYFmRLlo2LNMxxREkZO/1Qq8GHUsX/602Fi0u88I3uh5w
bOEIeG32NzBKTKBOjdjpiUrdCA676dyaIFt967CUtnUvFti8bqGA2pe/u7pjIANthqMBAlcnY5B6
ff2mbdD8BBLItgb4HyUOCVawzy1hc+UR2tglySwYroWeohfoG6afjesGigsl2JmnhaZ9Z0vanF74
vFEOOmuaq7VamuLEPFQtJM4olmipOW6CzrLcFz6J/6yAecEG3P1ZDoy08eSHvM40MAUgpwGa/w6o
9ALHQXda/c4TJvAylfHQ6wqArzAuV1pfWldwy7IOBMtKqzQBXQ4dSDGCBCAwggQcAgEBMHYwYjEL
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTowOAYDVQQDEzFEaWdpQ2VydCBB
c3N1cmVkIEcyIFNNSU1FIFJTQTQwOTYgU0hBMzg0IDIwMjQgQ0ExAhADNSi2uzJskfEdOMo4hV0g
MA0GCWCGSAFlAwQCAQUAoIIBezAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ
BTEPFw0yNjExMDYwMDM0MjNaMC8GCSqGSIb3DQEJBDEiBCB3Y3XV29ylkatqX3VXwcZZSIluUrOS
+puFtePMlHSd1jCBhQYJKwYBBAGCNxAEMXgwdjBiMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln
aUNlcnQsIEluYy4xOjA4BgNVBAMTMURpZ2lDZXJ0IEFzc3VyZWQgRzIgU01JTUUgUlNBNDA5NiBT
SEEzODQgMjAyNCBDQTECEAM1KLa7MmyR8R04yjiFXSAwgYcGCyqGSIb3DQEJEAILMXigdjBiMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xOjA4BgNVBAMTMURpZ2lDZXJ0IEFz
c3VyZWQgRzIgU01JTUUgUlNBNDA5NiBTSEEzODQgMjAyNCBDQTECEAM1KLa7MmyR8R04yjiFXSAw
DQYJKoZIhvcNAQEBBQAEggIArWdZeNYTQnhbl/9EdJl/V9gr+nmhqRD7/ZTiMHCfuh8h8t9QpCPv
yuIsqjMjiguQ6GsPf+GCR1Dpu0gTksjwlfJZt6ss+83uKK9Zol47BDT+gWdf0ScJrW7w+FM5VfBU
zT56PJwjC6uXNNpLYElejHha7shNPKViZ3BqmXylAJ7+BTZmK2rXHNsmz7chrAw820UHdOEded5b
jQeE41f2FDZ4B5hyrR7V6myNdu7Ycx5WXcxV9X3LYp78ZTEGg3Kmvk8YvBRLJMEF+G/7tYHFsqgn
5PQRfKRNhjh6N8TQQCFOb68MdbG+jVDcPA0vPcg9J8ZJlg1YgBgNTcE7jezC0UvQC8zVRK1W5WgE
axzKwfmwR0TZV8l0VuKe7dHeZwRmpY5gLqE5yPSverPDiYooBaPGWNS6WPrMsQ2K3JJ5L2CJXWiH
tF6ylOgAAtEuFRR0TujFmimZD/pEr6S3vpWnEwEPff7tZ9oqafqzkBZv4rJcAp1IoKU6ULSyZBrT
LRXHNXCVlpN8tgz31s4NaT+yliIDpEy7fhAd39MJC/1HD/t4KfzFf6l5ldAZdTRlXCl7AR6o6G/S
exb7Cl8/JYYFr/iN4hjwDLt8+F7Oa1Ab0USlr8ENF6wkg6UZ7EWvMWQoU+KZ7QkCGGHt+ZD8xkNW
Wd3tVt5mM9c7I1ZpaKcELisAAAAAAAA=


--=-RN0WgQiIue6jLyM+SxS4--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 01:35:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 01:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1475965.1682369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP8rd-0007vN-Vp; Fri, 06 Nov 2026 01:35:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1475965.1682369; Fri, 06 Nov 2026 01:35:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xP8rd-0007vG-So; Fri, 06 Nov 2026 01:35:33 +0000
Received: by outflank-mailman (input) for mailman id 1475965;
 Fri, 06 Nov 2026 01:35:33 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xP8rc-0007vA-Sk
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 01:35:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xP8rc-005U4o-5o
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 02:35:32 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aed2e87-2eae-0a2a0a5409dd-0a2a45049fc0-26
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 02:35:31 +0100
Received: from [52.101.201.43]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aed2ee2-b57f-0a2a45040019-3465c92b26a8-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 02:35:31 +0100
Received: from BN0PR04CA0062.namprd04.prod.outlook.com (2603:10b6:408:ea::7)
 by IA0PR12MB8086.namprd12.prod.outlook.com (2603:10b6:208:403::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 01:35:27 +0000
Received: from BN3PEPF00022BD8.namprd03.prod.outlook.com
 (2603:10b6:408:ea:cafe::5b) by BN0PR04CA0062.outlook.office365.com
 (2603:10b6:408:ea::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Fri, 6
 Nov 2026 01:35:27 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN3PEPF00022BD8.mail.protection.outlook.com (10.167.248.104) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 01:35:27 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 19:35:26 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Thu, 5 Nov
 2026 19:35:26 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Thu, 5 Nov 2026 19:35:26 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=nd7FOAq10FNpsa10oEay77hSs8Bt5uhzUr+eELSX/pk+Qs8wCRvG0+/8Yosmp7DaGzWVNvgO8YLx4vOJPE17kDhl4KLZFo7RRsvhlY3v9xAavh+zg9hncSY3naPGSrLmxRRsUupDS7hwG/wWPY2jZ91YEY1u57pFVRWp9Ex0XvrnzUJV0mSbr5koA58pBrj4absJ5QlsogTPj2grj7HaB+aqHRa/NOxzObFzYu6AgNLirtDAmosA++gazvKp3oTLwLBrbDnw4aDyk/pFY8HoJgsHFuHSQgvTbpBoSiWDD/SxROUyr7WCX8J0lv+PHOs6sLZFHmrnvAgc7vKSWfPlCw==
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=XcaZ+MWzLyUPhzGCw8EDZ+vauIjAxygagF+PUOFc3io=;
 b=ZpagKhjed3cEqD9VEjTs9ra5JEAMvyXdW9reEZ/ineNjaJjGusEoIQA4szmPIoNgLY6GHexXZds7PVM3JzlE7/XvZ8+WG8hmEFVPN6FCK+99u2mIw1P/LoY/HG8jtYnIxsd4e4by9mSQHSh697nQMDxlvGUTKmjbLr4hZn5hFW2OBF8N4xlbIjsHpXfP2VOtW5hfDkRX49xFci9UbYosv95/EKBmUL0xszxLNGXvSFgQYZWAuN76GxCfLMIRFfIrZKGTjdwCVeugvEa3tX+3Ta8IaZBaFTrfguBV7PH5Zw7O+sMY7d4V/Vai2uSmrsiSQgw8Qs1iWG5zRVUFwqUEaA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=ford.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=XcaZ+MWzLyUPhzGCw8EDZ+vauIjAxygagF+PUOFc3io=;
 b=RtXOg2NIDKv4Nb0GaoukWDO3kPEqjdvpOtBO3bMRCeUClbxwhKSQYXnk1SF/N5esd/TtDr3RzHeGDL2wL2iO1BthQrGG1BIveaTV18Xdqa/qyMO/5WLav18HGs0cnZXrmbfh6kFYy50OvCl0den/O4PjdbObSgVGeIuFNbt+fN4=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <8045d578-cd86-4c76-b4cf-7a240cc4d806@amd.com>
Date: Thu, 5 Nov 2026 20:35:25 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/28] x86/hvm: avic: add domain state initialization
From: Jason Andryuk <jason.andryuk@amd.com>
To: <dmukhin@ford.com>, <xen-devel@lists.xenproject.org>
CC: <andrew.cooper3@citrix.com>, <jbeulich@suse.com>, <roger@xenproject.org>,
	<teddy.astie@vates.tech>, <dmukhin@xen.org>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-5-dmukhin@ford.com>
 <54e0b42a-845c-44c3-acde-6a965f5494d6@amd.com>
Content-Language: en-US
In-Reply-To: <54e0b42a-845c-44c3-acde-6a965f5494d6@amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF00022BD8:EE_|IA0PR12MB8086:EE_
X-MS-Office365-Filtering-Correlation-Id: 72549548-252e-4c1f-5300-08df3ba63c53
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|1800799024|376014|23010399003|22082099003|18002099003|6133799003|10067099003|4143699003|261026121527099003|11063799006|261028144727099003|261102123227099003|261021121427099003|56012099006|261022105027099003|261026140227099003;
X-Microsoft-Antispam-Message-Info:
	DUaQBiqvMrWAwoCfFWfqdYF1wpSjRGvw/tnkf4FTl5yqpsVKg6xw0qGt9Yov7hsQ5tspKD0J0pg5Urpw9d5Q/LzeuJ3TWdiCWA0Tok5yB2+08ZAHjix9iW253hzDQPd5rShXd0Y49vP00a0oEpKk9BF1BgVQwBgbHdF7PBVZ7aKEtxIZa4QZllxa4/fv5lq2QypLbFdiBSdz8QTltPCl+y+87x4OpLZBlGEovLl22LvsVrLuYR1VoJ4sxjAKso2K/Aatk1Ams4b/ihPWM72EAMRtFDEuqA17LQamdJw9Uv6uzKR2kGi8OGaF4+pqKKo3Kh7p/lTWH2y3YcviN2wwGHlq49PwXbOlkAQlZsTqs0vvxQ8pZYcuCW3ksa49sdpUNiP32DZtvkRnXzJCZJ2WZHNFkOLZqt01u22+YmRv8ND61Uh1vjzDZqzA/1+PoVFvQwHVTAYiEl4dXdwrqivM3vJrjqU367LkzIoox/yIWmi1Csq1JWNhDFHWJyZc75h+JJdm2UX2RaBj4beAaYn/7aGWMsDdjrZrQLAQ+7V12ydiWuXQCkEMLQQk9Ey0ij9x3dqYaZXbuuutNwN9b5sQ1HFAWsCzbkpwbaXU0HR56o2XI0H24oUl6rddxNacZvMOc5W9ukPOnXsmmX53g4NVF9F0kKlwFwczwzaBOitB31G4hk4u6tPf7DwCrPRebS9IZIm0vaZCDm8fJnS5Uv2GBw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(1800799024)(376014)(23010399003)(22082099003)(18002099003)(6133799003)(10067099003)(4143699003)(261026121527099003)(11063799006)(261028144727099003)(261102123227099003)(261021121427099003)(56012099006)(261022105027099003)(261026140227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	4sVOcafQGoTIH/qscQTKdJSW5ci/5jqf48WFOieytN8031kCnvDPhCnP04AHH/H6YPZfTpWB0zwjoMKqMzXstK5T9ffHV3aTd1cfKM7y9gTAUh/LPsR6eNacUKSCHNJZQsZwFclAME5TVL+lKTEzV3Rx3PSvaWt4+zv6s0FGcUx/IKhgx14/bmAFcGp20POpKmpASPwSQd6TnbKnkPic2awFE60zLajXAoAFYHbehMsL4iwM++FnpC9GclOAeemyL5wjBYXC396RGC3/njFCFcdFClK4BMIuzIO81gQfEYEsY+518AXPB3xFlvSf+l5PU4Ek/uhN9WARYJ9UT3RkbAF1+Hcs+uP+ltD5+UZnPCiq3c93mCG1GWzgeZ5qRVulfz4c0Kq5jNma1om4JNiPv2PLo8k2EtkjWIAtjKveKphCKaj0UYszwVHuYNYMNOwl
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 01:35:27.2151
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 72549548-252e-4c1f-5300-08df3ba63c53
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN3PEPF00022BD8.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8086
X-purgate-ID: tlsNG-ebf023/1793928931-534C3B50-12FCDF52/0/0
X-purgate-type: clean
X-purgate-size: 945

On 2026-11-05 18:10, Jason Andryuk wrote:
> On 2026-11-04 20:33, dmukhin@ford.com wrote:
>> From: Denis Mukhin <dmukhin@ford.com>
>>
>> Establish per-domain SVM AVIC backing page mapping and SPA mappings
>> for APIC physical/logical ID tables. Use MEMF_no_refcount mappings
>> similarly to Intel's VMX APICv setup.
>>
>> Gate per-domain AVIC state initialization behind 'svm_avic=' command
>> line option.
> 
> AIUI, "-" is preferred, so 'svm-avic='.
> 
>> +
>> +/*
>> + * Enable guest accesses to APIC_DEFAULT_PHYS_BASE.
>> + *
>> + * AVIC walks the nested page table to check access permissions, but
>> + * ignores the SPA from the leaf entry and instead uses the address in
>> + * VMCB.avic_backing_page.
>> + *
>> + * Install a mapping so APIC accesses don't trap to Xen while xAPIC is
>> + * accelerated.

Now I have a question.  Why don't we eventually just use 
VMCB.avic_backing_page itself?

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 03:29:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 03:29:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476119.1682387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAe3-0000ga-47; Fri, 06 Nov 2026 03:29:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476119.1682387; Fri, 06 Nov 2026 03:29:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAe3-0000gT-1a; Fri, 06 Nov 2026 03:29:39 +0000
Received: by outflank-mailman (input) for mailman id 1476119;
 Fri, 06 Nov 2026 03:29:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xPAe1-0000fx-5w
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 03:29:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPAe0-00CNid-JA
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 04:29:36 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed494b-2eae-0a2a0a5409dd-0a2a4506a4ae-44
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:29:36 +0100
Received: from [52.101.127.139]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed499d-195a-0a2a45060019-34657f8bdfb9-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:29:35 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TYZPR06MB5073.apcprd06.prod.outlook.com (2603:1096:400:1c7::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Fri, 6 Nov 2026
 03:29:29 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 03:29:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=F+swJkAI4g9oFVIKF0u2bex4mRk5WKt9u2teZGIEmJG9sazBYlev46u2qdbTrf3opi+RI/zslKVjvurOrmFNwyLskKCsQ94KTkaXg82gJpSxnCLHliVPTvFeko+xSOARNK+0lUT6qKd0VcPD2rBCGjtXxF0SLC2jNSFtd36+u3zwj8Vvw1oIb3S8yjXIh4aDwjtjZwaMAtMBNn73bZ44Smsv/pzY8oAMl/SEWWRhanHSdwJJrGjmRP0mWTTYNcdaaj2i79G3t1b9XcP+zmfcdPZelnuGww2IcW3oTxivG/sylx6EL4v+YwC+1ZiHbmYUWk1TcatgbjuZpjpzRkFfYw==
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=tXmZP/o22YPY7Nw2kfylYO7CV8zovobJxt4LFUh8yAw=;
 b=TVHKPPG/Zl5WBvSREpa8ZzgVyw+BMvxUab8i4P3qb9PvbALXdIXng65BYr0tVU0CWsKVE92pXquatCkKsRbmbJmwgW+oCyOShYYzGzeQXPzWWyVr9f3zb9OMm0vlumWSKet2VwB/yuHtyLJNP2a0Rx+Kh5f4EFbjOv4jK8IkFWawbf48/JDVY+T8GkwTMrE9QL5ol0TMPPETY8iIW4hoDSZi89RF9XgjKbdUlO0X46Wd9bpxJvAkQY+gjEAyBwPwEF+PB5ZaIQkSrBXkQFAMiTL5CBY/SbzZf2x6NEBTSYoay89yZQGi3cESbisB79i9KAqnTfMsQQjKWosZsD3XIA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tXmZP/o22YPY7Nw2kfylYO7CV8zovobJxt4LFUh8yAw=;
 b=a2LLl7SOctTz90SW7kN4IUPkbD2KT7vqQrryeJtwJzqXu7qJYCWGZrwjjaZxrheTCj2R0RLHm7Qei5Q/K760vRAOvS7whpLtPHcszhrmdhUt0mT/Epu70G9RhwCKidorZN+KitvLvYnEE9Nj83nn225W7htFsIvWLQ9qHj6Mw4dy4bbMDVeVVN5nuz2ICqCVPTXd2uvkB3qAkN7/3PHETPkPBTcHTD/zbu6J8iez1zlwV8kHwvQeVatlZBhnRKIbgb4vV6SgNgGj40Htlstl8Jis25IwAmQTFMvbMSc88lK4ESMQocWtFY1YXixmvnp2k2xt7KOMjE6BXV+kR8bXbg==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: Junjie Cao <junjie.cao@linux.dev>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "clg@kaod.org" <clg@kaod.org>,
	"pierrick.bouvier@oss.qualcomm.com" <pierrick.bouvier@oss.qualcomm.com>,
	"peter.maydell@linaro.org" <peter.maydell@linaro.org>, Kane Chen
	<kane_chen@aspeedtech.com>, "philmd@oss.qualcomm.com"
	<philmd@oss.qualcomm.com>, "kfting@nuvoton.com" <kfting@nuvoton.com>,
	"wuhaotsh@google.com" <wuhaotsh@google.com>, "zhao1.liu@intel.com"
	<zhao1.liu@intel.com>, "richard.henderson@linaro.org"
	<richard.henderson@linaro.org>, "deller@gmx.de" <deller@gmx.de>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>, "anthony@xenproject.org"
	<anthony@xenproject.org>, "edgar.iglesias@gmail.com"
	<edgar.iglesias@gmail.com>, Troy Lee <troy_lee@aspeedtech.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, "qemu-arm@nongnu.org"
	<qemu-arm@nongnu.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Thread-Topic: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaqugzonZbCOsyEq5GblPuZWDarccaGeAgAP/C2A=
Date: Fri, 6 Nov 2026 03:29:28 +0000
Message-ID:
 <SEZPR06MB73626D50E685F83DFB006D8DFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
 <20261103142327.1348025-1-junjie.cao@linux.dev>
In-Reply-To: <20261103142327.1348025-1-junjie.cao@linux.dev>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TYZPR06MB5073:EE_
x-ms-office365-filtering-correlation-id: adc2b7a6-6df8-4910-ed68-08df3bb62a50
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|7416014|38070700021|56012099006|4143699003|261022075727099003|261028144727099003|261026121527099003|261022105027099003|261026140227099003|10067099003|18002099003|22082099003|3023799007;
x-microsoft-antispam-message-info:
 45qwcQA67U0vfxjjUKdXractJDBts2WaA41Dw9+d1JtW5DHEL7sdUd3CmwJej7PomFm6/UEf/M8WVXnlq7mL0zdF8IegiCc03oY3UIlwKtRAaYSiMsb6oXBGND+maGs/eQYbSr+ulcXTzY7KggeU2rG5VSDiuACwDqECq3Zu3yvV9ZXkcSt6M6KtleQCREVYW6/CbSG/cMmMMmcWPCjUlfCDXZqVpzMO8CaVQl4qNyBoTGDEOJ1d4HGaTUaqa2SLgOfwZQqA13+bLgdEa92YNQDgtR6ymKuEwZNvv7GpeEr5BaQSTFvaKlPqoLtTQ3LqxJ3YCFi7yAqa7QM1f3PrgEFcZ0GaIdPg5Nw+zwRWtGKjthZNQQI9eMhBjRNq+AAlBz/rd3gZyeDzTxlF1pOrt8SHMy9fMkt2uwNZPV/7hsY7fUqEgSVLqgAD6+zga+2WtfaEV5YYrO9t/VgwbZMv92hNcZoTYoFwxJOsL+DMUaUKKHds87zyq/a+obCFjvckeWxQOMWlxMvQaQX7g+DjpX7xJVNh3WAxX6tDt2FXZutKzszBSQe/P++o5OOhtOAsBvqxFGQf1FLgzcWQcoggtkCpEtfHnnx6tmWNDlC0VilMC1zYikBj8mokfp7raeZnpg5zoGhCS6kxvmbRfzt8kFunKgOjkeFPFGdC3aESDbtLb1J5ekUbYX15CPkd06vAW5SC/a4TF4cHhD1q/de0lkm5abSxZ0qpe34AKfN1IbE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(7416014)(38070700021)(56012099006)(4143699003)(261022075727099003)(261028144727099003)(261026121527099003)(261022105027099003)(261026140227099003)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Jrlo2CTL1Mghgn6/fSOQtCXsPoNUuIJ/U5YhD2g3+WJIKW2nwKThxYGnkJ?=
 =?iso-8859-1?Q?Cb2reUGK6tfRgDr5NSKnfmsfaoEcDK5GtNe0iRwmttcBazzx7PM4y7kWem?=
 =?iso-8859-1?Q?HWTBcTu3I2kAWoYLhNWMyX6XVw9M/7/CHL/TkuUHL/gsIaf45rKI0U16Gg?=
 =?iso-8859-1?Q?J+gQcBj6UiMhB1qx/+i3LoPYj6v5LeNm+cW9kBc/Q6zQXR8rhQARR/P0JP?=
 =?iso-8859-1?Q?FnKN73ZQjBCFRSaiGpoI3Ebc98HWMPCfKt2++ZnOYi/lgJSCvvZ739qvuW?=
 =?iso-8859-1?Q?7P5ez+GnZbHae7uXi+aMwP5Uljke/sdnfx+sbo4+XcWf6Qnoor87iF4XNH?=
 =?iso-8859-1?Q?g+b8WUcv3obxrCStspfHex9qMngolSxO2oI1b2vbRIfEDoBgXnvtqyRxHr?=
 =?iso-8859-1?Q?MxmvNbu/Lhh/MsESBORaE9ftc3nAE0/gn6fBT8bm8WtE/4mQ5pxmPw21Yt?=
 =?iso-8859-1?Q?rswUww+CO9ZR5SxcoGejAkiAsciV/W7uFTJYasAAZKXu2gZKX8mVBP7lng?=
 =?iso-8859-1?Q?UfYNufcxLBru7kF1nQDYlipIremQBQT/krBNdKrrEmTKdbudQYfdxFjlIA?=
 =?iso-8859-1?Q?+IsqvXPwT60KbZJ4XZ5V2s+W+BwcHrVIa7P+Q/XyrBFDYwI/10HILIPn5p?=
 =?iso-8859-1?Q?SOWW3yhuleeNyH63BGgNytUg3ndat1GCb+UD9xCgFAgkvydR3UtqqDc5ji?=
 =?iso-8859-1?Q?yrmlOlDbGFZ+g1+otrZ5uyCQyqgpJ+KDB+j0rfDNdCHXqepCrpnSePuTep?=
 =?iso-8859-1?Q?oJw9MDam347MmyNlBSM1e3/viyK0oNv0U84T5efulqnOpAJs6yVWNmGLYs?=
 =?iso-8859-1?Q?nkVJgRREVi5Rz22TBjaCCsnqL5eJ0DqhGDq3fc0tVZJ6ml6NwP9sG0U9Tf?=
 =?iso-8859-1?Q?lISp10VnHipWlOo3sS8gY6v1zMdWBZ/etHiOIdlG0bdJCzdsoZFHSyxaUA?=
 =?iso-8859-1?Q?1I+8dhrcGhlQbtVOdiaT55J1PJYaqR5I7sXDLrw7OitVl07da3px2r2+oJ?=
 =?iso-8859-1?Q?yz/zceDbf0q+eRYAsZDN3wSwgkyQoETJHiOZcxRtxSKZw8Q1fpdiQhXEkT?=
 =?iso-8859-1?Q?8u8u1jS5yComq3gHURvMf1PcZbeq9BaUrk9EiMCY+1maD5pAofkffuSZQP?=
 =?iso-8859-1?Q?pTxFgQcxyJ/rhie38Q+X3dLSxWSD5zRLNWNT1Olj4md+zojj24P0caWkKG?=
 =?iso-8859-1?Q?xYbpKlwkmIYcR8sY/msBPp5zHIOilcpa65OZmxNhOUwGSoUs6PNzBgre0K?=
 =?iso-8859-1?Q?ftvNXLKZ/I3dy/yHL0rcuXLGmyVvWu7fg3LaCQ1mtPodudagP/gC2/W4vw?=
 =?iso-8859-1?Q?gQrPRNiN8sIwoCm7HsbqreQ3sMeG4NUb0ljgZcpHrxo9f3EtA1yNDeTR3S?=
 =?iso-8859-1?Q?rehgIO3//HbmaC0bUB9k06k/Qxre5Ns0e0MQHv8f7bX6xh7AB1XMS4tk6R?=
 =?iso-8859-1?Q?unA1ShmIbeHkQkx2ngAnLqw1FPelnApYUgs0RFnzhhr0yNzdyeyTYXuuu4?=
 =?iso-8859-1?Q?DI3+O4K8cLdEtyWHHGhXwwoiqybzLMmntGWDJ70lRQaygslUjlGnRGuWWU?=
 =?iso-8859-1?Q?mA7rGdxoI1iBfqTossR2rWPjW5xEHJXoAWIa7J+9mrcEqEgueBEd7EVb6e?=
 =?iso-8859-1?Q?hT7/KETvXx7zz2cip9C1SCiDcwOm2IYUcrZ/PrL8Cz9AXHwe/KSjGKt3nX?=
 =?iso-8859-1?Q?HB4MimVdQBEQBbqQlPxmeaLthEV6f50OYoLe/dcZKDvvabPheTLSwb9CDm?=
 =?iso-8859-1?Q?ZjExpLg74Gb9B2smmPH6TakwH8I2OOBgMSQa5p2fRR/g/fPwgqThjEwr3/?=
 =?iso-8859-1?Q?SeVl4dlWaQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	My3snRlK/oAdBrai07ZIYa7i4s5Kvr3j9wpw6El7kjCiTs+jwRh7IT269GuowgNWKLLva5DzVeDBOfmd0Nx3HUIDu+myT7Gc0FP9oKCkbICTl20Z+8Qkxul+zEcZAabPz35sY1Cb8j+wIyfdK6rAh01Qpd0NlZdx6LK63VwyN6T8gB/ycO2141Oa2/sdll7I7/IvCMhb7oVN8oQeCa6WiAClpg36EG0gVtWDkSVE3Kno+c9m77f3viGpgMeZl8MdeOCjlIomliHNzyst5Mh5BEKjCER0gPdy0Zsnhd4wiAHTWPUNNM+2NwfTwWjRoYRXpykkPytoLOAnaSAN+oRSKw==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: adc2b7a6-6df8-4910-ed68-08df3bb62a50
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Nov 2026 03:29:28.9642
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ol4Dne8WrX+OfeKl8iuCny14E3u85y/At/JROl+F7dky0LMXV6jc/KktVQ7cxW/s/Cns4M/POpfjhOmwHJnpiITNAfu8uaIBqkGMK7BPILM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR06MB5073
X-purgate-ID: tlsNG-16d1c6/1793935776-1FECC77B-48F30854/0/0
X-purgate-type: clean
X-purgate-size: 2189

> Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property a=
nd
> leave it off
>=20
> Hi Jamin,
>=20
> On Mon, Nov 02, 2026 at 09:22:05AM +0000, Jamin Lin wrote:
> > Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an older
> > machine type keeps the hub it has today and a guest saved by an older
> > QEMU still loads.
>=20
> Reran the migration check from v7: with pc-q35-11.1, a guest saved withou=
t
> the series loads on v8 with the hub in place, for qemu-xhci with four HID
> devices and for q35 -usb with six.
>=20
> But this missed the 11.2 soft freeze, so in 12.0 pc-q35-11.2 is an old ma=
chine
> type too, and hw_compat_11_1 (my suggestion on v7) doesn't cover it. Save=
d
> with pc-q35-11.2 on master, both cases fail on v8:
>=20
>   Unknown section or instance '0000:00:01.0/4/usb-hub' 0
>   Unknown section or instance '0000:00:1d.7/6/usb-hub' 0
>=20
> The entries from 02-05 want hw_compat_11_2 once the 12.0 machine types
> are in.
>=20
> Junjie

Hi Junjie, Marc-Andr=E9, and Gerd,

Due to the QEMU code freeze and the planned 11.2 release in December, disab=
ling automatic hub creation while keeping migration compatibility with olde=
r QEMU versions requires adding the property to hw_compat_11_2.
We need to wait until after the QEMU 11.2 release for the maintainers to ad=
d hw_compat_11_2 to each machine type.

The USB redirection server is my original upstream goal, and I think this t=
ask is independent of the automatic hub task.
So, I want to split the auto-hub changes into a separate prerequisite patch=
 series and send v9 after the QEMU 11.2 release.

The USB redirection server common protocol series still needs rework on the=
 device announcement and control transfer patches.=20
I will send v9 next week and mention that it requires the patch series that=
 disables automatic hub creation.

This way, we can continue testing and reviewing the USB redirection server =
common protocol this month.(November)

"If you agree, I will send v9 next week. Otherwise, I will wait until after=
 the QEMU 11.2 release and then resend the full patch series as v9."

Thanks,
Jamin


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 03:29:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 03:29:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476118.1682379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAdw-0000TC-QY; Fri, 06 Nov 2026 03:29:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476118.1682379; Fri, 06 Nov 2026 03:29:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAdw-0000T5-NS; Fri, 06 Nov 2026 03:29:32 +0000
Received: by outflank-mailman (input) for mailman id 1476118;
 Fri, 06 Nov 2026 03:29:31 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stephen.cheng@citrix.com>) id 1xPAdv-0000Sz-JH
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 03:29:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPAdv-005eFV-07
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 04:29:31 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stephen.cheng@citrix.com>)
 id 6aed4958-bab6-0a2a0a5309dd-0a2a4508cdd0-18
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:29:30 +0100
Received: from [52.101.46.50]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stephen.cheng@citrix.com>)
 id 6aed4999-f659-0a2a45080019-34652e324259-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:29:30 +0100
Received: from CO1PR03MB7889.namprd03.prod.outlook.com (2603:10b6:303:275::14)
 by MN2PR03MB5277.namprd03.prod.outlook.com (2603:10b6:208:1e8::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 03:27:54 +0000
Received: from CO1PR03MB7889.namprd03.prod.outlook.com
 ([fe80::2d02:5605:87a2:6767]) by CO1PR03MB7889.namprd03.prod.outlook.com
 ([fe80::2d02:5605:87a2:6767%4]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 03:27:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=ydGM83LXAQNI+iaTbglh+G7pmEqmPjkjah1G6+1ceywS9JobBhMqyP2VwXS6wG7lDj8opmzLIL9O6gZUjVEKypKJq9P5ZwF3UNE6xsihJA3983BFO3e3H1baLj/p4z9uOuOJ7k9K0dh6lRShjVij+YAPllKfzSWPRGr6/iWJgAnWL7upS2HBMBwhM8IgiSkWqlkKz36E9O1hFkzfn51kTmM9/9bO813KtYICW5PHUjR9GTDb0/OnEft2C8k92hIkvDVxUSbiN+I2EuEx7WqgoC09lpnrsZQOjTnY47gppMfdjVOuYJCTv5aIq4M7HXHzSvFT6cwOF8rQm3YfV8XwFw==
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=TW4Zg6wX/9RAL3RGKBL/cmC3vJcYfoyPIF48ABGX0hY=;
 b=hf+H409WxGoKAF/9+9URcIVNVO4g8fmgNNS6jTlq3UtZ4WnObJBMUdxy+b/duEeJCRqT/r09bWrWZSkYlwvS2RrplJijwFClUvlmJJPaYW0lhhfhlMQNHrwo5Ar8ebDzGXN5TN9XSVQaFm2IpLriHeE4v5njU0SpBY5WSROYM0e7wibr6TB/hgXkE9WipjNqKRB7q/DKTPlX/EW1GNvAf+arsXvGqov9DyqQS2zH/0v+7pXjAqqwqhybmHcacneNRWo5Jl3RFqcheJxanPZ8QNAjoHnYh4CVOKPvZVWaI9EDoXEfD+XLIT87FTMW6P2EgI74jdKfnBBolegdhPVAoA==
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=TW4Zg6wX/9RAL3RGKBL/cmC3vJcYfoyPIF48ABGX0hY=;
 b=hSRVmT+yQQeUi0fPnmzgTR7VjOXLkHXJEcdgqmAiZsczoZSQJp8Vh7kXHXUr9w0W9Peh0mJAWR6XRLw62dO3opxJg178AlRCrSkI1Q+9RSJgnAuzvoPqaz3V4bqMRKmO5FWZvRDklSAQKgpiFQONvDEwpSwwrpkyqJ8378E4hWg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
From: Stephen Cheng <stephen.cheng@citrix.com>
To: ross.lagerwall@citrix.com
Cc: abdelkareem.abdelsaamad@citrix.com,
	andrew.cooper3@citrix.com,
	jason.andryuk@amd.com,
	jbeulich@suse.com,
	roger@xenproject.org,
	teddy.astie@vates.tech,
	xen-devel@lists.xenproject.org,
	Stephen Cheng <stephen.cheng@citrix.com>
Subject: Re: [PATCH] x86/nsvm: Fix L2 VINTR intercept merging when only Xen intercepts L1
Date: Fri,  6 Nov 2026 11:27:25 +0800
Message-ID: <20261106032725.1054979-1-stephen.cheng@citrix.com>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <e3105225-de64-49e1-9254-45917ad5bb13@citrix.com>
References: <e3105225-de64-49e1-9254-45917ad5bb13@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: JN3P275CA0038.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:ca::15)
 To CH5PR03MB7887.namprd03.prod.outlook.com (2603:10b6:610:20d::20)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PR03MB7889:EE_|MN2PR03MB5277:EE_
X-MS-Office365-Filtering-Correlation-Id: d75d01eb-d094-400c-8dfc-08df3bb5f123
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|366016|1800799024|18002099003|22082099003|10067099003|56012099006|261021123027099003|11063799006|5023799004|261102123227099003|261022075727099003|261021121427099003|261026121527099003;
X-Microsoft-Antispam-Message-Info:
	2Cj/730sTM5wd/vG5g5DIhtwxGBMuGLSrP+z+5C5MZnTUnB7ts+qbYxYgKkbiWlUVKO7tacK0P2J62eDCxf8/D/HiY4d1B/CGwdLZyz+g3Cr8XCiStPyLJu+yDgKTdty5fqftjvjO3fq753ohW6xYUITp5kTVl/qTUzpwyVAcL+iG7lNhkRRLBqtVqE8iJ5zd8kU6a2H0O6VywrA4juedaAzQSH/5MEYOykUZllO8R49oRnu2VYKzANQxV3C8cIS1PN+iSwvaxQA65KzHNzKiZnd2LCj1R9etztdDzF2kfuk8XttzAlnYJTWLwUketue8RPaM3bPU+ScA1XVCCisjxbvawrJuc61XpGKP1JAG4tIzDJcJTPQMv7H7Dxd+DMZyu4kpvI6PxnU4XOQEoGSjpXuXacMKKdYPApL7Wc2mQeI3HHhnhLem6gbztfCGQmaoUQkWev0wwzygU41V5TQ5F1+jaOGVAlW9l1lrSCsuUDbirplzuLCsuASzyrVaqSJW0Ti89D64UwsJK+1niB1FE5yQGo1llEY3PKi/djVsnolX/Su3a0A17ssDWxb/obn5WjA5QXFeKbyG8J1fWtg22e271Bpz1PIPzPhlIPEHZLjnRy7MzxxNxOg4/AggiYcbzf5w19AVUFG2ihvR5iqMC3Lk6yELf3pZHpRDjC0bMk=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR03MB7889.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(366016)(1800799024)(18002099003)(22082099003)(10067099003)(56012099006)(261021123027099003)(11063799006)(5023799004)(261102123227099003)(261022075727099003)(261021121427099003)(261026121527099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Y1M5RHdjNXZUWnc5SlFOWkl1cEtpU2orNU0vWDl1eW40ZHFXZFEvWlVZZjBm?=
 =?utf-8?B?OTJTak9OSDdReDR4R2s3TG1lemJPKzhhOVdKUGh3RUZ1TUtpL2ZuZUxaS01s?=
 =?utf-8?B?cmJmeU8xdFhHQzkvN2ZKOGg3WFBRUXc5dWdIdThkS29vRk55c0EvMXRCVzJD?=
 =?utf-8?B?QzV6T01Kb3RTV3ZKcThpL2xpUERlME5CWU9TdysxeWNqRUZ4ZzhkWG1SamZB?=
 =?utf-8?B?YkQvY2YyaHg5RTNlZlgrZGRtZEVtOWovOTFab3hvUS9acGpTdDFaejY5NU9E?=
 =?utf-8?B?dStmZVoyNkEvQ3pGcGp6dC9LN2tVaCtBRTJBaWk0U0ZBbXhOK052M05hZ1Zk?=
 =?utf-8?B?UlpISjlwQzRZbFdXSXRaZCtsTFU1VmF6K1hOUjdjZFcyYVJOU0poMHRlaXNz?=
 =?utf-8?B?SjhRQnpCMHBMeXo2ZlJhVm5qbEpnMTBGYXVGejZMQkE4dUpVdWxHbEZzNWVp?=
 =?utf-8?B?dGM1RVh6QUhzUWFJOG1tT25vd0VQNkxXOXBmckZuZXV0bjBKOGkrUGpnTVZV?=
 =?utf-8?B?NExkYXpUUVY2SXJtbENSZkU0U3ZKaXFJMDZxTzhONFBVVVhueTlYcG00Qjd3?=
 =?utf-8?B?L1FyU3RPN3o3OUhMWXlVbG55L3BLZ3JWVjhBRzFQYWpVWWlxMGNVczVoaHds?=
 =?utf-8?B?QmNMVW54VU8yd2pYOWRvdkJVS3RxdEJzc2F6elhQbmNUT1dNaEZUQmtvbkwx?=
 =?utf-8?B?NFI4UmRqSE8yeWx2Sk9iTVhWMlY2cE9sRzNDN1JjZ09UbFhNL21vUnlhQ2pM?=
 =?utf-8?B?dWtNRGttRGdyaHhDcWRDeE8zZDRlQXdBaUtiSzRaQ1Z4Z3hzOGhCbUw1aXha?=
 =?utf-8?B?bjd6aGhKOTFKU0pJeEl3TWZ1R0k3QkwrcGlNUTRLT256MkQwLzNaU3RYT0tM?=
 =?utf-8?B?MDFJVGRSdUxUUGpCdGJOK01OcXVFM2NNVlhuQUg0Nkw1dFQ3VkU4dUlLTEpT?=
 =?utf-8?B?U29WQlRoTkx1YXc1d0JUa1pVL0ZDVlBqeEZtNHZvSVBRaGx0ZnIxcWt0V0xB?=
 =?utf-8?B?S090YUIrYktteHZ0Q05IMzFhWVp5SXlGdEZBUHRQT1NKWWVKcXJKTEdWRmF4?=
 =?utf-8?B?eVE0d2hrNDJDZ2NPVDJpSWVJOTdHeXJUY0NWYTdWZWdERFZIWFlzT2lIdGQy?=
 =?utf-8?B?eEE5TG9teWxZWUlmczhxbEFYTXpoaGtDQytoSTl5aHorVEJsOThYQytpMUhU?=
 =?utf-8?B?TTlUYk0wblFqZTJhWGI1TWVHejNHbWNRelAzWnVrbkJ5dEFLcUFUTmdqU2ZR?=
 =?utf-8?B?eFhmVEptSmsrbzZoVTB2RkJtRmtTTVNFQkphZG1kbE95TlNVWmMxL1V6WGZs?=
 =?utf-8?B?bFpuOENKNjJxYm9pV3lNWlg3amVHNjh4YTZzZnR6cWdDbVoxR2MzTFVqOVhO?=
 =?utf-8?B?Qzk2Z3VtUlVxZnl2TmRoTlZEZU03WnhvbVJWVWpLWUk1TzRoQ01NZTFKS2Rh?=
 =?utf-8?B?QlNQU0ZZYVhGMkpIZjV5WVBDNnYrYmVqYllsZnJQMjUydjROT05OZzZ3cmxl?=
 =?utf-8?B?aXR5UGJ5OFZEQktleW1iZEN5QklKWUtoanZ6Mmx3eTI3eHVxV2NlZFM3TVZX?=
 =?utf-8?B?QThrQkR5TmJhZzQwVU5CRlFGd3Vzb2JRT05nY2kxOUVmem1mZ1BwblhRVzRh?=
 =?utf-8?B?L1pxRngvNEpYZFJleTVIN0xTQWduU0pmRW9vVkUvWlA5UnhOZmhaQWl3eHU3?=
 =?utf-8?B?ZTNWK0xTYy9JQUVRTXlIMDdUMHNUOXJCTTQvSGoweDN5Vnd0dDQ2dUNvVEMw?=
 =?utf-8?B?STVBTU14SENma3dvUzFncnU0QU1MeGRJbW9qZnhQZ0c0UHNVdytkbWlIeWVl?=
 =?utf-8?B?ODdjZlI0eThVTXMrYTJlZGxCdmJibTN5cDY3RFczUkZ1cUNHb0VnemZ3Qkdq?=
 =?utf-8?B?dWRMNExYUE1uWkdQaDlwQ1MreTVTbFZ5VFdqSjNkYlFwckphbldGelB3U29W?=
 =?utf-8?B?Skpja1RpaFNVN0krSnRLUE1CMHROWkdlNHAyZTlORFJwOUp0R0laUlEvZnBR?=
 =?utf-8?B?WHJTdjdrMDBrUGQ1VVhIY1h1Z0llY0hUT3owMnk1YVZxVEtOR3hXZkgrRElD?=
 =?utf-8?B?TW9vMXlxYTBTQTIwRlhqeFYvOHowcVdHZVUrc05yRCtZWE1zZWdxOVlsNTh6?=
 =?utf-8?B?djBSbzZiNFpTU3lXY0VlNTR2KzFydzByRU5pbVhYWEhjVXRjcFo0OXB3RkVz?=
 =?utf-8?B?QUNKY3pXTXdVQzhIOWFveC9xTWF0ZjFyNXpXTnMwU2JYSVU3eU5NWDZ2Y2JV?=
 =?utf-8?B?UFQ3NTlIQnFrMHBSenViRDlQbEdxYm1BaW41MmdYakNFczZueGV2bWRqU2hV?=
 =?utf-8?B?dkFkL3NhSXZ6L1VjVHZ0ZWF1Q2JZSTRFR1N3NGEzcnNhUWNHcENTQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d75d01eb-d094-400c-8dfc-08df3bb5f123
X-MS-Exchange-CrossTenant-AuthSource: CH5PR03MB7887.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 03:27:54.4889
 (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: EnwYaFkTFTXu3fnj6+zIRelrJ+ObKX3euks4uceuMX3YCL9pcAqrCGGKdEShWyxW3i2+ZZQPW+R/lfx40AjdfwpVMtTKhbfsbKJB5EFqnJk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB5277
X-purgate-ID: tlsNG-c1860d/1793935770-CC77387B-433F4796/0/0
X-purgate-type: clean
X-purgate-size: 1217

On 05/11/2026 14:16, Ross Lagerwall wrote:
> If L0 wants to inject an interrupt but the VINTR intercept is not enabled, how
> would it detect when it can inject the interrupt? In particular, if VMCB(1-2)
> has V_INTR_MASKING=0 and L2 sets EFLAGS.IF=1, the interrupt should be
> delivered but L0 won't notice.

Thanks, you are right. I missed this case.

But I think the current code does not handle this case either. L0's
dummy V_IRQ is not copied into VMCB(0-2). The V_IRQ in VMCB(0-2) comes
from VMCB(1-2). So the merged VINTR intercept only fires when L1 itself
has a V_IRQ pending for L2. If L1 has nothing pending, L0 also does not
notice when L2 sets EFLAGS.IF today. And when the intercept does fire,
the VMEXIT_VINTR handler clears L1's V_IRQ. This is the bug this patch
wants to fix.

My suggestion for this patch is to only remove the intercept when
ns_hostflags.vintrmask && !ns_hostflags.rflagsif. In this case no L1
interrupt can be delivered while L2 runs, so L0 does not need the
window. For the other cases, Xen needs to put its dummy V_IRQ into
VMCB(0-2) together with the intercept, and restore L1's V_IRQ later if
L1 had one.

Please drop my Reviewed-by for now.

Stephen


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 03:31:38 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 03:31:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476137.1682397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAfx-0002Rc-FJ; Fri, 06 Nov 2026 03:31:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476137.1682397; Fri, 06 Nov 2026 03:31:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAfx-0002RV-CX; Fri, 06 Nov 2026 03:31:37 +0000
Received: by outflank-mailman (input) for mailman id 1476137;
 Fri, 06 Nov 2026 03:31:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xPAfv-0002RP-R6
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 03:31:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPAfv-00CNy1-7i
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 04:31:35 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed49aa-2eae-0a2a0a5409dd-0a2a450692a4-44
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:31:34 +0100
Received: from [52.101.126.90]
 (helo=TYPPR03CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed4a14-195a-0a2a45060019-34657e5a9aab-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:31:34 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TYZPR06MB5073.apcprd06.prod.outlook.com (2603:1096:400:1c7::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Fri, 6 Nov 2026
 03:31:30 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 03:31:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=t23udFQ0sSf9j5IfobNXpZO4angKrrwT/qNpJroFycmM7uc8KpZwOxtG/85gKTOO/Jms7VuDciKUcdyIH7kTJjrDlJG6FtXeq+1usYLWzGyGT6V534f6A4WKlKk+GDjJm3AuKEwtmD6n9b4wYnbfxaMvYpOB9L9/CJqiV1AgwZRW//P52FVNHVmgzx5SerOtzGWSmlmKdI8d4X3Hs5YK7UvpWm54h0ZxkS3mz4nkyUy8u32vxZAiGXa/P22uuoUgqmVK585+pe2h4DYZLXW66nPe5dTsBoPTmmV0KS8c+prG/HE23wjwpJ/Djv5QbJKAXMdAasWrtdsMQ9k3bWmAHw==
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=fxtBzvEaplZGeOwjPUAiPIdEPs/14NqkHNmwzBuhzNk=;
 b=QJQTzGV2Pq237sxqpdROHGZa/I0Jt6aMUXuMgbyY75YecVPfEjULYFTOt1mnHXfrasC5dlCI3PQZd8yczPKF9TVJuFljsY/++G4FAvs9s+bJiyEV1+DlpnnGRs8ssyVOcXJN319BuoqHYrDUaixUvyz2gg6YHV8TY+ImDC0FnZGT0ee2LQQ0ka7V/u/5G7wCSQ5eHyA1XfimiYQwfGcWSdj5sbWn3wh3soj9Qs7eOOLpN4Gm84J2AJ/7FE5d7WMGdPvDAWmDus4JxvEZvyh+toVLUCC5ZkDqOAQ3AROC5Q9nr/pMRbACCFuVf0FjesDny408M3mwDeeyqL4x436NCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fxtBzvEaplZGeOwjPUAiPIdEPs/14NqkHNmwzBuhzNk=;
 b=JVnNkUaJUQDyku79L/yeHf0f4iqFJ99ykxtJ+6spTn1sXeN7pr6UjnCgTsndnVcM98bDB3S7nTsC9oStyCbcrxkq/uBkdsw/r1sLZgegrNnr840OntMRwTN+4XfKzmgmTFde7W7KhZ/viOBmwnb3UDLev1MZ4xNvxW2INO7nE+An/wcIh/QEUQ/wgu0rPhakgGLOsehFud7ib27KB1Ekvy+2RcueS7pReQOOhsYWcd8gtcHSSHPZfOQ9qDBPoBjBufcIN3n/fHMW9UxZWh/4ee1nv4Llv73rVJS7nbRsEKYefhVr+Ah/ppQ3/0LOcW5l8ywu4sr4BvibPHilCYHj7A==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: Junjie Cao <junjie.cao@linux.dev>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "clg@kaod.org" <clg@kaod.org>,
	"pierrick.bouvier@oss.qualcomm.com" <pierrick.bouvier@oss.qualcomm.com>,
	"peter.maydell@linaro.org" <peter.maydell@linaro.org>, Kane Chen
	<kane_chen@aspeedtech.com>, "philmd@oss.qualcomm.com"
	<philmd@oss.qualcomm.com>, "kfting@nuvoton.com" <kfting@nuvoton.com>,
	"wuhaotsh@google.com" <wuhaotsh@google.com>, "zhao1.liu@intel.com"
	<zhao1.liu@intel.com>, "richard.henderson@linaro.org"
	<richard.henderson@linaro.org>, "deller@gmx.de" <deller@gmx.de>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>, "anthony@xenproject.org"
	<anthony@xenproject.org>, "edgar.iglesias@gmail.com"
	<edgar.iglesias@gmail.com>, Troy Lee <troy_lee@aspeedtech.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, "qemu-arm@nongnu.org"
	<qemu-arm@nongnu.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic hub
 change
Thread-Topic: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic hub
 change
Thread-Index: AQHdaqunzKBY01X8UU66zw8KbkYNarccaGsAgAQAgEA=
Date: Fri, 6 Nov 2026 03:31:30 +0000
Message-ID:
 <SEZPR06MB73624ACE053849A4FF8E1913FC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-11-jamin_lin@aspeedtech.com>
 <20261103142327.1348025-4-junjie.cao@linux.dev>
In-Reply-To: <20261103142327.1348025-4-junjie.cao@linux.dev>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TYZPR06MB5073:EE_
x-ms-office365-filtering-correlation-id: 5e7dbe9c-2b5f-4e1b-4a55-08df3bb67299
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|7416014|38070700021|56012099006|4143699003|261028144727099003|261026121527099003|261022105027099003|261026140227099003|10067099003|18002099003|22082099003;
x-microsoft-antispam-message-info:
 1DtwAzdSvPfVnDsAO/jIP+RMVrmmWlTyRH9cpK6k6XVhOoQC8kaI6bDczKFKLyOzOx0RtT22xSU8AB5nlHCL+GGO/2+IBGdZy8YlG5ixcv51SJfcMS6aDY0nk/QnIUex3cgv/tZ+7oLCV7gyxR96U8g090JEDkVt1jLrUB1kr6Y/LPx8IezT4/oy2BNZx7cEAoWbhKG3Mk6JNPQCZsbWHPq5ofNO0psQjZoWkkK79nwFQXGCGCKG7I9vk3U7FuR+X9PXaDj/JOt561CiJOTkV4mI9obcjbZeqktfctS3lZyGAxq0Cw5COyx9c0BglqPcCrvX2PZJb1P198GWoYQWGboeE3ZLuc5t2rzrPzRpL+B7nXNUeusMH1w4oYtT8jU0QLZpSjH8ov2JQ7x6emEurEZcFy9gMChrzQtA0EqwAh5Ocd6sZipvhUzZKQ+HnMImykRUM0UWFtk5OQBu5gVlGqbK0tOFLNEAS6UFjCOtmtl7JElPB47leNvUnXhSdSFO+bG4of0w2jpjkll6Fbn05o1AS4K2gaAEo7Er+EoxYTzVgF5TQp0vMft6HsQMLSJ65bZwFtd7kdq3ofhYRlg2EyxiozpWljLGe5cz8w6+FmPEDxqHSRru9yhVOw34kvXDrr5ZC0ECh5jDXdAqMm2y+pXM5rpQhn+mcHic3yRlcOZgLc9LKSiV0hRlK1mm6RhH/jUGo0mndq/Knu5vvRL/7tER9iOnjVZ8AYj47t8sRyA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(7416014)(38070700021)(56012099006)(4143699003)(261028144727099003)(261026121527099003)(261022105027099003)(261026140227099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?q5yySy3AJnGtBckCKtYlg7Ts4ntAC6LuwOdWK9vzG1El5dw9yJnAZIBTAV08?=
 =?us-ascii?Q?ZrgAhAFWIGws2eg0GjBGf6eSDc1/ZQTAFCTeYsdx+gkCYdfY6lGK5k8pekBr?=
 =?us-ascii?Q?meIEG7bKcwpZO8B31jKYel6kR10Z871CrImhBTfWTZ4K0yya6Z0NC2uEtmNF?=
 =?us-ascii?Q?eIN3yUnuEc5pKMZ8ZALwlqeC6Wh3/NfKBX+s+P1aS+pwNxmDZX6CbfqjdVo/?=
 =?us-ascii?Q?lIMF69IR3L1LtcouvGHwAUOqPRfIAhzgWmLcTzX0kd/9snqbZNTLmrag9aM5?=
 =?us-ascii?Q?PCtEqbIhjYfg1P3g7zM8BMfcihFJBY2bIT+YZkRBdqxk+1WNZGKN9DgGaiGH?=
 =?us-ascii?Q?ZpVa2cedotwbuLd3VH9fNJirzKWV2T2JYo1RjsFvyBXfNYaQD5sVIg8At6fa?=
 =?us-ascii?Q?ZlB2FHuXwM+seL6BwgTzf0WEOiCLr7MaKCYx+FTWB36EzxNC+i1AW+6LetwX?=
 =?us-ascii?Q?/K8urWcr/adOdRUpyaIi2ASs8zGfQYBtkcBe7PvooNYO9uIhHoE/FxA/eJrZ?=
 =?us-ascii?Q?Y3WlUio4Legk38vqV+FrBU2ZVYElFBLVxs8nCCDfwVecaxrhGjs/6Ba6/3sv?=
 =?us-ascii?Q?ROZwGWA/i+9cmSDNBEtHy79uLN+7mmUEGJTPnRZzQiguIxShBoLHZ+fkwZaB?=
 =?us-ascii?Q?bxWqomGESWqjEYdgCqEKBn7oZFJUF2VOfeqTrbaONDcQ8GOImJynjDEM9yGc?=
 =?us-ascii?Q?bWzmgaPcw5PnGGZ4HUdU9KglSBasXD4PGDhprMk375omBwPzq5Qkcuml/iVD?=
 =?us-ascii?Q?PeoAKzMJyuqqwfY1Atb4PA2TFl2qYsrDE3fRgrMIxG+xMZ76e8GJVjaGqZwS?=
 =?us-ascii?Q?pwLYE/jhc0YpOvN6IOhMdXq7EUDQLFlOj3vIlqv/29z5JVX+NkPbUQjnaPiN?=
 =?us-ascii?Q?SsFxWlHsmOWCWBMX0Ffi8N5OUCPyNwf393ThGJA4mUzvXwBLtlS2L46ytqrg?=
 =?us-ascii?Q?gI4hAlH4FrJFQlyDeI7iH47/79BYrjezbqpfyxlw8mllWpqczszoJiiGrB2q?=
 =?us-ascii?Q?cLjImNOWj9mlDBVIAyfISwzm+6qAdhuulMl5XRxs/rkJWGDm5Mv2RK0nak9M?=
 =?us-ascii?Q?LLY4lHsVsnf8QIOw7v+tibwedLSkxmVz+MoOs2uasOCh/QW0Sa1erCQZnwcy?=
 =?us-ascii?Q?RdDjSYl3j8BC6BuWvvWdsG2W6wuuX6nEhOWL4LUOaq9xxuvxloUF76r1anni?=
 =?us-ascii?Q?OvgXiHWkbb4+vkyz5Z8rOWERuTGgHSSKS7EZAnS9oapOfcnGZf+ygGqeZTO1?=
 =?us-ascii?Q?aiybxiW919v70XU8YWktvqPidwz5VsJWEW744F5SNYb44sGTPh++BeD8oKZP?=
 =?us-ascii?Q?lIkI7KojB7Imoxb4S2oxQYWX24NNKJ8OmR+CSwNmsxd/vUa2vpkNhugYzqzd?=
 =?us-ascii?Q?J+mqX1v1UkUwWQ4DdfljWZgMFxMU0oGY40Uh5IldCd82WLq9q02QJtJhdvxS?=
 =?us-ascii?Q?Sk1BRW8kRbgpxbRTkvEDfbDXT3RvvTQ+sX7nVGGe+CapEzQQo8tyi2Qy4Yn+?=
 =?us-ascii?Q?lwEDCoiObcGBzHP2uzCszBf51t+OLpJlgiwWTAHrFFNozym6sBKrFOaTC8GV?=
 =?us-ascii?Q?SxBbeJkLSbONT8Ue9ClM6DDxq75dPJxIrDLVhl4KVFuniW7RXn2DvBJrQ4Cy?=
 =?us-ascii?Q?VB/zsszokrqNYn3fl/eRniHT6PKv5+lDLhEqTMfyKnGyUbTsto1WxCCeuP1R?=
 =?us-ascii?Q?qVA0DPO7GIA6ixsKHQ9pDlkbJwV/hiE8GH3TlNLk2WJywomOomLDn5Dky7KZ?=
 =?us-ascii?Q?55pqLhwSlg=3D=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	z+V0oB5TYMmdW04uYGh3ZmAmAKcy8F4FO3W4BJ+ijfY2EAtWCIfJCbjy4g36MLXGvthSUT115t7ZV1rlgpVl/zAnb/+yD1SiWQnqPv4+pYH2UsW/OMyrDnXKHw3SSOMk8pqX0iGyergvBZYQbqlB+/n5/L3S7x14HQqJUnsQt1gj/0TF6FUhJ4/4s4PjXIf9ldEXCA46Zt70YnmvDjZKFIuRBYYdkC4YwKXIgtfYkgCDCEBrzg0oumiugeSbusksry2ZJ0inaloA4vUK0J8gXZntqy/zfeXxnTVTTrU5iScqrbeN4v8infpESXZMvX3B9GW3d0GPom6H7E5VxjMK2w==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5e7dbe9c-2b5f-4e1b-4a55-08df3bb67299
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Nov 2026 03:31:30.2595
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: OM5HWS2vwJoAQdkdaLXlxt183GG+YcGAiy8rwkfLDNK56inyP1H7x3ko0R1kHobV8o7DAek8NKaXRfPN+LIwN7g62cuWWDAhN1zvBztbXPw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR06MB5073
X-purgate-ID: tlsNG-16d1c6/1793935894-F5A0C77B-87F6ADDA/0/0
X-purgate-type: clean
X-purgate-size: 923

Hi Junjie

> Subject: Re: [PATCH v8 10/18] docs/system/devices/usb: Note the automatic
> hub change
>=20
> Hi Jamin,
>=20
> On Mon, Nov 02, 2026 at 09:22:17AM +0000, Jamin Lin wrote:
> > +A machine type older than 11.2 plugs a virtual USB hub into the last

It should be updated to 11.3.

> > +free port, so that more devices fit. A newer one does not, and a
> > +device that finds no free port fails.
>=20
> With the series going into 12.0 this becomes "older than 12.0".
>=20
> It would also help to say how to get a hub back. piix3-usb-uhci has two p=
orts, so
> -usb with usb-kbd, usb-mouse and usb-tablet already fails on the newest
> machine type (pc-i440fx-11.2 on v8). Either of these fixes it here:
>=20
>   -device usb-hub                     (ahead of the other devices)
>   -global piix3-usb-uhci.auto-hub=3Don
>=20
> Junjie

Thanks for the review and suggestion. Will add.

Jamin


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 03:37:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 03:37:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476147.1682406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAl5-000351-WC; Fri, 06 Nov 2026 03:36:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476147.1682406; Fri, 06 Nov 2026 03:36:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAl5-00034u-TU; Fri, 06 Nov 2026 03:36:55 +0000
Received: by outflank-mailman (input) for mailman id 1476147;
 Fri, 06 Nov 2026 03:36:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dmukhin@ford.com>) id 1xPAl3-00034o-Ol
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 03:36:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPAl3-00BWom-5k
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 04:36:53 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aed4b53-e002-0a2a0a5209dd-0a2a45048f46-2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:36:53 +0100
Received: from [148.163.143.241] (helo=mx0b-00498f03.pphosted.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dmukhin@ford.com>)
 id 6aed4b53-b57f-0a2a45040019-94a38ff18e52-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:36:52 +0100
Received: from pps.filterd (m0482515.ppops.net [127.0.0.1])
 by m0482515.ppops.net (8.18.1.11/8.18.1.11) with ESMTP id 6A5NgYnm392855
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 19:36:51 -0800
Received: from dm5pr21cu001.outbound.protection.outlook.com
 (mail-centralusazon11011066.outbound.protection.outlook.com [52.101.62.66])
 by m0482515.ppops.net (PPS) with ESMTPS id 4hs3q815cb-1
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 19:36:51 -0800 (PST)
Received: from BN9P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::27)
 by CH8PR16MB376233.namprd16.prod.outlook.com (2603:10b6:610:31f::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 03:36:06 +0000
Received: from BL6PEPF0002256F.namprd02.prod.outlook.com
 (2603:10b6:408:13e:cafe::9a) by BN9P220CA0022.outlook.office365.com
 (2603:10b6:408:13e::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Fri, 6
 Nov 2026 03:36:06 +0000
Received: from mx0a-00498f04.pphosted.com (205.220.161.53) by
 BL6PEPF0002256F.mail.protection.outlook.com (10.167.249.37) with Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4
 via Frontend Transport; Fri, 6 Nov 2026 03:36:05 +0000
Received: from pps.filterd (m0373460.ppops.net [127.0.0.1])
 by mx0a-00498f04.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A62ncnZ4186117
 for <xen-devel@lists.xenproject.org>; Thu, 5 Nov 2026 22:36:04 -0500
Received: from smtp-us.ser.proofpoint.com (pmta-usw.ser.proofpoint.com
 [50.112.124.217])
 by mx0a-00498f04.pphosted.com (PPS) with ESMTPS id 4hs3qx86j7-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 22:36:04 -0500 (EST)
Received: from localhost ([19.12.92.221]) by cmsmtp with ESMTPSA
 id PAkDxadh27GL1PAkEx1cT2; Fri, 06 Nov 2026 03:36:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=ppford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=selector2-azureford-onmicrosoft-com header.d=azureford.onmicrosoft.com header.i="@azureford.onmicrosoft.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=ppserprodsaar header.d=saarlouis.ford.com header.i="@saarlouis.ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=ppfserpocford header.d=ford.com header.i="@ford.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppford; bh=8xkiZXikiFrLxwGk+O+uqXtlkUV
	R7fuLR3HnwmQ/94o=; b=QGPVvn5BSG6UVad8LAG/fBbq61fkNxjeI+9Q7qZ0d9k
	3z1KvkdHitjVdmM8M2l/cpOP4VwYk/ou0ChD2CYK5CMfI3i63HqtFcZar/BgaE21
	WzLg0n9SS8z02jH1R5SI+KDAsKFfU9n0+AycISlvFkGESpVga2CAcphURDm1gevn
	ehQVI6MqyRODa3Yd9XdBZArsANyjLIuN66AFzIffOrS4oOTT882FTrxBKwdBZULf
	7bxdFAtwBVxrcUNSjoupA2+jH11tzoCz46sdn7sSD4/1QPDWua+gsL8/LI0FEULL
	ln1JDGfErngGT+fJg5YsRROU+b0sEhCguzV4jPpezFg==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jKiRed81WPEx3QOwuOKgXntl+QPS7BbrOv8/IzcKrZx4UP5osUq9dkcupTTvvGuDDJNcB4hwwpKZsxn9iCcrDEO8+U5xJRajTj7vPiSVhwDwXCnhh6ChPitW9VFxdMpfxHz+iCu8Ph8TDaaH9jL7+RZ2DWqZVi/tXw9EkppqihXGDaoIachYmgSE5JXNUebzIKxHCGmRlfA0gF7yIhM5CyfmAjkaYMnYjofH5bZqZgdRZR+ZJk2MgGbygBfsmFdVlvvrHp6NfATSAmevAIESfU1szgQz2SaMuttbSkCklakf+Xps9lh14PCT8dg4nyQByKkFQFrP7FmHuOpydOFZJw==
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=8xkiZXikiFrLxwGk+O+uqXtlkUVR7fuLR3HnwmQ/94o=;
 b=vOaX/VULVXVObJAtL3S236TfwRmYtvg2EZl1AExEEf/Vwuq9SSNYuPwEPvb5a02W4etfHbiwWnPvBV80XOIECyM9KnfU7E5Ietq7zUKy2PE77CBJsth7QvW0ug8QrfTQ44gj/DmfIYzbpu3GZWKwLrcqZHEXKtMa7Il09B4+IgSeQuYk9OhoFl2roOL33/9NJPU2pvQUEpK8NtNmIBrPJ1E/ZyRk36wC8uwNvE9yuokePXhveDBSJCZPnvfI7uYTFcexIrOyVX48lM1ZBb+M8WknL+P/bBfoX/CJLxPS1JSFX6xI7vtwrv9DBcl7sUoQB79c25IwklZsn75EfLQ6Lw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 205.220.161.53) smtp.rcpttodomain=lists.xenproject.org
 smtp.mailfrom=ford.com; dmarc=pass (p=reject sp=reject pct=100) action=none
 header.from=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com; dkim=pass (signature was verified)
 header.d=ford.com; arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=azureford.onmicrosoft.com; s=selector2-azureford-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8xkiZXikiFrLxwGk+O+uqXtlkUVR7fuLR3HnwmQ/94o=;
 b=DYFYYvT4Of6x9CJthdCke7RQdO5w861uchN0H97mxB9YR3i6cU7sv67K5MWUTEDsgO87BCgI+wY0Pa9WagSofC97sSOrcvds10WLfM3TH84u4XsFzpLbPdaWD+86yFFt+Dqozu9LAgfDy2pQe7rHRJdJsQ6sKOQJJorhM/JZQgA=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP
 is 205.220.161.53) smtp.mailfrom=ford.com; dkim=pass (signature was verified)
 header.d=saarlouis.ford.com;dkim=pass (signature was verified)
 header.d=ford.com;dmarc=pass action=none header.from=ford.com;
Received-SPF: Pass (protection.outlook.com: domain of ford.com designates
 205.220.161.53 as permitted sender) receiver=protection.outlook.com;
 client-ip=205.220.161.53; helo=mx0a-00498f04.pphosted.com; pr=C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	saarlouis.ford.com; h=cc:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=ppserprodsaar;
	 bh=8xkiZXikiFrLxwGk+O+uqXtlkUVR7fuLR3HnwmQ/94o=; b=hnQycp8TVzvM
	qGbtaO/wDPOgsjmUU5/H4E/frgL6JvruhbdmRQASrirWmx+WQUkzglroQEJhqBeR
	nHoxI1HrcclYAGHS/ngsYE1ft9kBmd7sbdRgpxLPJWEggcBxTSgJItCoMn7066pi
	9QyaKBLctrO8U/IjxE6zJ5O/+poTOuOqnhw2j41mzxQvCmIXOKqOecC3O/75bqko
	epuu+r9kTCRij+8PzKMzgifUHw4TCW4Wfnf99tReSHul3losNCBVF5bU48onZIiX
	K/VHG+Ek2+91ajOrNVQaw4XKJL7urH5RIBoXjT5z1J8hRe7jYurQuvASCaCJZ4Xx
	t5h2KiES4g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ford.com; h=cc
	:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=ppfserpocford; bh=8xkiZXikiFrLxwGk+O+u
	qXtlkUVR7fuLR3HnwmQ/94o=; b=i3IO15snlrpZUdibbxNyEd6y0CkFwtyNIbgs
	VcCg6oXOS9jol73VcZCm8FMw6mBb6lE4bCmaxs4gC6T0fjQkrVJnk8Q7CSntLEi6
	vRPrii+Nz9mRtiNt2wJkSqfMCzTJ2Ce4bu9FzdsWXNZvN4AuyByKifa6r89i9pcM
	gyY/dW7HrWCjJXAavMCEoljpdEJcfBkqBDkBhUAN0t9BLSFRcEhxSz1mDTEYv3r8
	hUTe8qwxqyHX/odR/Z1LGQnaVDvEoyMFxcwnZnHyaVsYByBffUrV3Hj2/pmLbsId
	FQq7qn4WrvTRIfQVnXIDXL1BRg1jjxDnu8edPoXii8ZT80oRJA==
X-Mailer: SER-76bead168636dc6ed1c9e51ce4dea80dbdd4163750742b614a4d871e565792b7
X-Cloudmark-MID: PAkDxadh27GL1PAkEx1cT2
X-Proofpoint-CID: eb09f7eb-2dc2-34ab-a188-7b293c1db1fe
From: dmukhin@ford.com
Date: Thu, 5 Nov 2026 19:36:01 -0800
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: dmukhin@ford.com, xen-devel@lists.xenproject.org,
        andrew.cooper3@citrix.com, jbeulich@suse.com, roger@xenproject.org,
        teddy.astie@vates.tech
Subject: Re: [PATCH v1 03/28] x86/hvm: report SVM x2AVIC support
Message-ID: <au1LIYnf2dd2l33H@kraken>
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-4-dmukhin@ford.com>
 <c36fb489-d0a8-446c-a520-78262f70b31a@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <c36fb489-d0a8-446c-a520-78262f70b31a@amd.com>
PSER-M365-App: SER-APP
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_06,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 lowpriorityscore=0 phishscore=0 adultscore=0 bulkscore=0 spamscore=0
 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc=
 authcc= route=outbound adjust=0 reason=mlx scancount=1
 engine=8.22.0-2611040001 definitions=main-2611060013
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0002256F:EE_|CH8PR16MB376233:EE_
X-MS-Office365-Filtering-Correlation-Id: e8b36356-fee1-4185-1050-08df3bb716fb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|36860700016|82310400026|11063799006|4143699003|56012099006|261021121427099003|261009223027099003|261102123227099003|261026121527099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Pt3a2oqbQC8f/EzjgDNWYedjBpRhfRdaYdQ58hssw1NKro3q7NjKc74aWxo7FqXxZxBgODoXw+xeX5Ulz/EM94ionTsl60I0hOjc1n+vz+RiMGLjRzpbHhg2ITojnIm66owbtpFMFmmcQz3kOTmJbYe7MKkT4xQ7Hz7xgMjD8ZbB8AMt2qODDZIGgxitQLhLD3i8lWEhGkexpmn1xIrtu+Gc3bmc6ngiRGyEw0GDt6pxrg6dwqsPGiWuKrC8qVT/Xb2qIzpCRPJ3nfJmFiC+ThRU1vC18YXzyQTYy5gHrc1Umkb+VktTMdS7/pqEL1CfjB61Ta1yjN5Rivvt5Czmyc8F2pjgBxWO9DK9VI9vT/b9ar9I1pPSIi22bB4MC59QEzUOaVKJw+ENrq5IcFp9NlCCylJWLkOWkLu01no4bjbgp4gs7xsQ57gQYyyL0XD94WjjfdCJ8pXevOeh/rOzAwMVwk6TrmiiAgwoANGd9+SkIA9Ko4AETc+hFCMFjRnfzQ2bjXB8aFsMMYfQ6SnoiWKfsSS2NeO1Zdgr5chWlinSUCPCy7YK3IEDdTvisZQW9A3MpaP6PS7mYMYgiXnSjgYk794uA3Tt3awpzEO6noJbaYTHHW5ElO6bLsq/NjrrKoEbwLktH2GsSr2eJ0Z5FcDtjE5lXJ7oEz+gwlxPVf1/te23rKhvPQ7gpcorW1f3mmqZ4sJd5PgbdjVgviGIYA==
X-Forefront-Antispam-Report:
	CIP:205.220.161.53;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mx0a-00498f04.pphosted.com;PTR:mx0a-00498f04.pphosted.com;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(36860700016)(82310400026)(11063799006)(4143699003)(56012099006)(261021121427099003)(261009223027099003)(261102123227099003)(261026121527099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Fv/LkrWiAjWBYriKrEIiiHjU3x2zSJ8Y3rY7tEkjmsXULmhxNyIu+SCnQPZ7kx2upozsm58FDyuNniqRNTcJ3EiQefzLJarOzNiap99TVGq94k9iiIMuWYZc4PpFPqd/USIWsgu1u5TBGK08a7AM4ObnSPVzBrSB9hMClhmkYIL42rU9y2t9n+naKYEWcKJXPpSxZSmgok5TnGaTypLWSm5vx4qwE8xC0Vf+HPUeachoJPF1gzDmE1Y0fywHBNrxGN5/MWrFrBA+QalpmzdcO3leMgB5NSalFGQ1LLDq8z7ycNNImHyYx3hghvowDo81kaYH8ZWDaUENm2VAN2x2JHxldUzIIJ2OZWibx9xAx5LSprJRWsfzL1bK4ERb1Eo+Dc9QsjTrc0qh3zW3vhceXh4ZBtW3qmow+/bv/qc8/kYBb8GX5V7ydOTh3Pyd4xm5
X-Exchange-RoutingPolicyChecked:
	SHZofQD4jwGglJ0bIqO9QokCjg1BIEwoY71Uqa938mW9nqJuL5FXXrYcF9ikWW2miq48wI4AXcadB1Rp3XrkmHjYPp0XUp86ojFhXKxaqiDC0Dpo1BsbF1PgzOJjBqDCcOrfsdOgOxcZulr2bs/ChUpy1ErO1e+bQXTEcqp8sqltyZXzvqVuPsMVYAM3t2I7kzGt7yw/0lJpiXtRgwOMsM/jTXbjnlHaja2nG264yRpVu/asM4WnkZI/OAoCz/E1X1lt6x6byVzVtSUeLgU3sfYtqQtEDu1qUP5gRzBQ8J/FBjfg3cdHVr39+YyzlIqkVhx69hxVcPZfU/DD/KxheA==
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0:
	wf3gm6ZZ+Sv/4qhP4qCW8CFEvk9Uy80QP8aRNLL27pOh0MoEhJ3Coi8ZdoYNq/7IRJHCio98jkJGULvr8/Yiw3ZF3dBWIPQI8j/n+J3iRpmfX37Oc+XQaOM0cvxbicNrTzKSfM55oHcxCit3Oj/No9AN5RqrcsQdZc0zIaDEjPyeAbVNuvaoZrulA0XSZll921jwSDIrp8RsxI1fLm0z+NePsSkt2zki4yvwgjYk5b9uGPD9avmVBAqIaONXtRD/DyjWRByRzWxltT5YHE738FoqJ62cA+tI8LU17kONh2+rWNCA5obo+/gC4GzlzicHFKMKxILBeOvg1Y+fPO8ihcvctpb2JQnzjk0So5Iw1ppnZhJAVfE/sW8mekfbyC9s5Exs7g88YIMHVtUPGY0G3zdYexi/MFzizrDmm+lprVKmYbtsX7+kHgY4pSvljWp8JemjSNSeEYx41L1RY840thumeqVNg3lLM1A5oMwzsYQDB3GnI68buF2oaIeKSyyOYTyJCdYfyNUgxSSyEeRUBpiUdh/zQgfAyIgVhPjuApkyLfrvAfGpXSpx36Ltt4tf20SC3fzEfuUJwu/3ViPswZR5GElVHX+xEV+cpR7tqoyXQReYqKJnJyhQsOCzS2uwjdtDQGgq/nAwy74jk4Bm+Q==
X-OriginatorOrg: ford.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 03:36:05.7524
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e8b36356-fee1-4185-1050-08df3bb716fb
X-MS-Exchange-CrossTenant-Id: c990bb7a-51f4-439b-bd36-9c07fb1041c0
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c990bb7a-51f4-439b-bd36-9c07fb1041c0;Ip=[205.220.161.53];Helo=[mx0a-00498f04.pphosted.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0002256F.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH8PR16MB376233
X-Proofpoint-GUID: 5asAGkmq7hCFDzDGRpetbrCIGBUPQni3
X-Proofpoint-ORIG-GUID: 5asAGkmq7hCFDzDGRpetbrCIGBUPQni3
X-Authority-Analysis: v=2.4 cv=E+ZYNqdl c=1 sm=1 tr=0 ts=6aed4b53 cx=c_pps
 a=OANxLEngf0bc/nxW+UjZ1w==:117 a=lOEMawUel/sSvQipkIvNbg==:17
 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=kj9zAlcOel0A:10 a=zJRp6_cAMcgA:10
 a=3PXLN80vpJUA:10 a=6NUGLSImWEsA:10 a=w9pew1qAHqMA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=P_n1zlmtWsCQbjROFjcg:22 a=0GA0A_IKJoUHBEAzNTkD:22
 a=cbNQJ9GKAAAA:8 a=zd2uoN0lAAAA:8 a=jfBEl_xDU-yQO9My1xIA:9 a=CjuIK1q_8ugA:10
 a=DqJYxgmhk6moR-_7_KoZ:22 a=WmVTiCyuxqgg3mnwYu6p:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA2MDAxMyBTYWx0ZWRfX6Naki804umgj
 R013rSUYkWgPDVzmAFKk+v2V8ULCWlQSAcZHJitf+/ywV89/+WeGm04yqH0aHLKnj48o6yc+P+A
 OV3ZrfQFyi65knQXyekxDvZdDVC3pHq8BMZpCXR/kgx8I3FEwotc+ms65gTXluOJdf0SDfGG0Io
 S3NpOaiDo/J4njnY3V98aO4pU4hZfs2sPDZfwakcFTfmrinmdeMUG+uV3EOhyzFvP5qkMGXQ332
 WZcQIQzFJkDC2cEMxYjnr9a4uDGmROGhOyKfkvtP5zQzsBMW5XBAghskB9wuxd1X8+y5ogBLMBY
 G9d/pBKDTaigAIDAC9p4rXCn6rHZvSJdBre3YaBJS1yIHXQGlEUIo+u8JWpT8JAxwd7na9b7hu7
 mYZs8ce58/AjKfsIgx751f2x7ETmwGzUO/52baQt4ZRZ0NHfNYk4BJMKLVpoFIwYovfU3rhco+i
 ikN62cPXwOHYB+zmRAw==
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA2MDAxMyBTYWx0ZWRfX8y3Ae7PJmbxz
 Nu9KXWWoLx0kE77rz9clcBUoCGlQ1NIZc6AzekxMVBTIhiyLKfOEOhMhFK0VZP1rfi0J44wb7vS
 4L04iIWy4agM7anKyoNOCLpF4LJgXtjj2vGfvgwtEi0/g7Ysp5pH
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-05_06,2026-11-04_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0
 priorityscore=1501 clxscore=1015 bulkscore=0 phishscore=0 impostorscore=0
 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2611040001 definitions=main-2611060013
X-purgate-ID: tlsNG-ebf023/1793936213-51ED6B50-C215CC60/0/0
X-purgate-type: clean
X-purgate-size: 2547

On Thu, Nov 05, 2026 at 05:13:50PM -0500, Jason Andryuk wrote:
> On 2026-11-04 20:33, dmukhin@ford.com wrote:
> > From: Denis Mukhin <dmukhin@ford.com>
> > 
> > Report SVM AVIC support from CPUID Fn8000000A_EDX[X2AVIC](bit 18).
> > 
> > Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> > ---
> >   xen/arch/x86/hvm/svm/svm.c         | 1 +
> >   xen/arch/x86/include/asm/hvm/svm.h | 2 ++
> >   2 files changed, 3 insertions(+)
> > 
> > diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
> > index cf008a8acdf2..db81dad4b681 100644
> > --- a/xen/arch/x86/hvm/svm/svm.c
> > +++ b/xen/arch/x86/hvm/svm/svm.c
> > @@ -2457,6 +2457,7 @@ static void __init print_svm_features(void)
> >       P(cpu_has_svm_vnmi, "Virtual NMI");
> >       P(cpu_has_svm_bus_lock, "Bus Lock Filter");
> >       P(cpu_has_svm_avic, "Advanced Virtual Interrupt Controller");
> > +    P(cpu_has_svm_x2avic, "x2 Advanced Virtual Interrupt Controller");
> 
> Sorry, this ...
> 
> >   #undef P
> >       if ( !printed )
> > diff --git a/xen/arch/x86/include/asm/hvm/svm.h b/xen/arch/x86/include/asm/hvm/svm.h
> > index 0fc33f41b09d..292a9ee19b11 100644
> > --- a/xen/arch/x86/include/asm/hvm/svm.h
> > +++ b/xen/arch/x86/include/asm/hvm/svm.h
> > @@ -36,6 +36,7 @@ extern u32 svm_feature_flags;
> >   #define SVM_FEATURE_AVIC          13 /* Advanced Virtual Interrupt Controller */
> >   #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
> >   #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
> > +#define SVM_FEATURE_X2AVIC        18 /* x2 Advanced Virtual Interrupt Controller */
> >   #define SVM_FEATURE_SSS           19 /* NPT Supervisor Shadow Stacks */
> >   #define SVM_FEATURE_SPEC_CTRL     20 /* MSR_SPEC_CTRL virtualisation */
> >   #define SVM_FEATURE_VNMI          25 /* Virtual NMI */
> > @@ -57,6 +58,7 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
> >   #define cpu_has_pause_thresh  cpu_has_svm_feature(SVM_FEATURE_PAUSETHRESH)
> >   #define cpu_has_tsc_ratio     cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)
> >   #define cpu_has_svm_avic      cpu_has_svm_feature(SVM_FEATURE_AVIC)
> > +#define cpu_has_svm_x2avic    cpu_has_svm_feature(SVM_FEATURE_X2AVIC)
> 
> ... and this is mostly ordered by feature number.  Maybe add an pre-req
> patch to sort them, and then re-do patch 2 and this patch to insert in
> feature order?

Will do.

> 
> Re-ordered (for both patches):
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> 
> Thanks,
> Jason
> 


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 03:46:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 03:46:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476164.1682415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAu1-00051Q-UG; Fri, 06 Nov 2026 03:46:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476164.1682415; Fri, 06 Nov 2026 03:46:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPAu1-00051J-RW; Fri, 06 Nov 2026 03:46:09 +0000
Received: by outflank-mailman (input) for mailman id 1476164;
 Fri, 06 Nov 2026 03:46:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xPAu0-00051D-J2
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 03:46:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPAtz-0027ke-W2
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 04:46:08 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed4d26-e002-0a2a0a5209dd-0a2a45088530-34
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:46:07 +0100
Received: from [52.101.127.81]
 (helo=TYDPR03CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6aed4d7d-f659-0a2a45080019-34657f517f09-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:46:07 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TY0PR06MB5079.apcprd06.prod.outlook.com (2603:1096:400:1b9::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Fri, 6 Nov 2026
 03:45:58 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 03:45:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=elJObx+rzD690J0hmbgt1yIVYORwesXe/y6vVVERUdJbzi01hn67iR5KCLfQ91KwIaUk2D3mG/V1yYOuBxXhC7lBuUk3HI4YvAqJ1Y+Mu4fKKjL4gQqRmK5Fwj8uEP009rpMUCistuaesY4Nmcqp5XFHUjQZJsp96qLuWQZ1jngvOPmLWsaRe4+PHa3kPTQLZlUOY3xAFmD4M4IYSquyFHfcOvmxIK/Oy014GN6mVkVx8CX+Oy0wPthQ9wR7AYdlK7vCVwM6yy8OFomwL0qP7GklKJ8/wXsSlwUoI0sx7eHj2Xn1qfztfATimLRUrRqehcPPhOKqFxWYwhL6MXRE2g==
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=SQ3ESIv8pnvoGT3giU0WmiQtXz1sadcN+wcIvZYxuTc=;
 b=cRhWJdLjpJZYgmhzwMvP5v/jKu7t/J3mvLI9lEM1Oz+lMbUNsAzVEboOjs9ji3EeC/KU8mw1aIUD3g4A9eD47Ph1dMZB5f1OUgNWku3GJXy8esoHzde1s+ldBCE3tUqI5cSdghpddOuv4bTMHVaMWnRNk4D2A/T1oMuVzG4Cxi+gl49EXbAE5r7HC3yLu4awHTNa6dGhKLZmnigAQP35C9Tmk9b8wRExjNvOBLqqR/MPq6fFdKXURB7SiSkFasQA1dvOInvcWghsNCrEqCfLoaycO+VaLaWOAfoBoiorTrY22XFwmkg417lT+3dvG1DW2+w2YTtC6ErjQqA2b5vptg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SQ3ESIv8pnvoGT3giU0WmiQtXz1sadcN+wcIvZYxuTc=;
 b=lDgdC1bDuev4sEER/Fal+TdQ588lipoghfSL6FIFatgq4Cs0Hi5Y4xGG5lNet3NIdjzH2vmVm3fFy8iC3RTrJQNxU5cwdE+VY6qTk92rNr0vd4bEBUO4ol1ojThns7AmHmmQJMYsXFWh6uiZMvJ8Rw5FXozfZa6L3mdzpweNjZqD24sFy4vXR3iCDdgqnjGz0Il2eRnvuRlxu3t9sd5LFrKYsWv/oWYMTeY7sveVzh5Ai0iMhtXRuBNVEvkBI2mBA/SzUmkqZAhp2aGiadatTDodnzUA0cMQDdGnrzkca89d1soeQwQrEKlnjrexxM/A9b1sLK+rtHWGFnR3ZlpM9g==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: Junjie Cao <junjie.cao@linux.dev>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "clg@kaod.org" <clg@kaod.org>,
	"pierrick.bouvier@oss.qualcomm.com" <pierrick.bouvier@oss.qualcomm.com>,
	"peter.maydell@linaro.org" <peter.maydell@linaro.org>, Kane Chen
	<kane_chen@aspeedtech.com>, "philmd@oss.qualcomm.com"
	<philmd@oss.qualcomm.com>, "kfting@nuvoton.com" <kfting@nuvoton.com>,
	"wuhaotsh@google.com" <wuhaotsh@google.com>, "zhao1.liu@intel.com"
	<zhao1.liu@intel.com>, "richard.henderson@linaro.org"
	<richard.henderson@linaro.org>, "deller@gmx.de" <deller@gmx.de>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>, "anthony@xenproject.org"
	<anthony@xenproject.org>, "edgar.iglesias@gmail.com"
	<edgar.iglesias@gmail.com>, Troy Lee <troy_lee@aspeedtech.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, "qemu-arm@nongnu.org"
	<qemu-arm@nongnu.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Thread-Topic: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Thread-Index: AQHdaqugzonZbCOsyEq5GblPuZWDarccaGeAgAP/C2CAAAURcA==
Date: Fri, 6 Nov 2026 03:45:58 +0000
Message-ID:
 <SEZPR06MB7362D089282550D7585C16DEFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
 <20261103142327.1348025-1-junjie.cao@linux.dev>
 <SEZPR06MB73626D50E685F83DFB006D8DFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
In-Reply-To:
 <SEZPR06MB73626D50E685F83DFB006D8DFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TY0PR06MB5079:EE_
x-ms-office365-filtering-correlation-id: d7343fc9-47d1-48e3-2620-08df3bb8782b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|366016|1800799024|7416014|376014|261022105027099003|261022075727099003|261026140227099003|38070700021|261026121527099003|261028144727099003|4143699003|10067099003|56012099006|22082099003|3023799007|18002099003;
x-microsoft-antispam-message-info:
 afMlWjAL6ctTeo1e5LXKH9nGmJCowkgopypaEy6bHCxARi/U1LeAacxyScfF+I5U5nMXaHqEGc2KWZuApNJYNDw4ghHdiEgIUVHFXzmSENXvzTKQe8UTLsaunAvDsOZbgaoPU/0w6RwAJHkaDKYee+oSX2/QRuDfECTdNCUkNipsSkYg5P4YTp7Kh2wTZCUI3pDzkofYgogRq45SC8hvXuA40XCsKBRIVEEuDvM35xjw65jyDdsd/Z8kiBTXOWYkHK/+99G1pzZS3LAWGiDdL6Op945b1qXZKfmIgYxvUSJpcpG30G1kKUHXPsozdUlTwfhnlyKvDOSt1FN7bpWuKuvWBhRqipEVHPlHknm5PRuq/sBAJ4klR83FoSj/eNnFdwG3UNR14P/kYQNLuarNBKOT643GjfJvRqsYvrMZQeC78n+g//oKS9pgFQT8BZKay+xF0WFGz+VZKR3mVlkwJos0iakmHefnNEtvqlQvOkf70jnG3OJZUved+xHtcwwKWatOezlebxzJmr1W8bmjSchSjonM4cfx9Uo8NV+Kp61DneLVX1mjVAif4IEqBqO/VmCIsyFLSBeeartX2cnWeNjIDIs7USs8PiX66IoS/Ewjqct9A3bTH0VXTizuA+zESCZJvjh8F0rYr5op2KOl7RQ7V6VgEVWtlYo8KIA/DKyjNJlxSWO+DWpsSMozfDAeXPiEIO9cjLaoZV4AeKttmTvhkvmioXhPw+E6B73a9mg=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:zh-tw;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(7416014)(376014)(261022105027099003)(261022075727099003)(261026140227099003)(38070700021)(261026121527099003)(261028144727099003)(4143699003)(10067099003)(56012099006)(22082099003)(3023799007)(18002099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?6RkHOcsxhg32gsF2RjjkIfucsglZHJHcjLcBpWguUxjohDVW/aScTTyHB4?=
 =?iso-8859-1?Q?80JYhJKmf3frc4at1VTHZpM1O8/BHUZYfx0wxHEzOJJETAZX8LH0uPP8Rm?=
 =?iso-8859-1?Q?extBZCmcntrQ5pJOoYhVNB9/s29HfD31hhXxDWy/eVU15cIEfYysraSrt7?=
 =?iso-8859-1?Q?yeEufE1PnZgG77PyxNLBtGqOwZ/s7exSpo2NZUYIUHZRF5Ml0Vf5H5tggr?=
 =?iso-8859-1?Q?QsMKl62rKOi+Z6DHPdu7IvW0FZUlHdc3PCCp5Jg/8b2b2HYImWUSgB8B25?=
 =?iso-8859-1?Q?BI1n9YT8h0Ugfau6U6cufoFZWDzuORqj5KVFiajG1U4n8a3jcDWBbiTkBn?=
 =?iso-8859-1?Q?UHooZTl44BAtZhD4yd7qaHGC/zSV+iZlwsNeFE41InlqV+VhnFZjZFvzgD?=
 =?iso-8859-1?Q?+VXtnl7u7DV2dz6rSiXXhOjZapIIQoQrRBEReGbPZdzEZQF03lwGzONW5v?=
 =?iso-8859-1?Q?zh13MOPgmxp5CeCpHl217RpN1aDx4YwuGU/mdIPXmS1L9oVoZiDc3c7Ylw?=
 =?iso-8859-1?Q?59sJiD0nriU9sX4etpkxfdIMg1K19StHE3VRrwy4MDyKxIyYWclwIaOe1I?=
 =?iso-8859-1?Q?qgBWCtD4ONV4Pcj/vjjwMdHjqsvJC0WqvX27Lfp0cz3kniaQltNNGusis5?=
 =?iso-8859-1?Q?3Sq1Y4HveSOTS4EfOVF/zR5xsVB+H/CP/xCgp8JqTjxGeA1kl8a2eKKBGo?=
 =?iso-8859-1?Q?5ZVpL/8I/BaxT/d9ogmdPgP/0W3bT0jwcluJPhCtp/HzOtFcFpkfnw93ha?=
 =?iso-8859-1?Q?bHnqXozredxaC1TY6zrflBsfPDlVGRBM6Ti21B5kFehlRVqphk3PFGmPrR?=
 =?iso-8859-1?Q?HAk0s7ZSYzx2kjfW0yI6CYRtIa/yOqGIFJ9JteAzEsC9+la0FKKFx9qc09?=
 =?iso-8859-1?Q?q0bWlWMaO6DUe4Rdmc4mCpV7C7xu2Dpp+rsMjrcH4aM9wZxoYOuoH+PiO7?=
 =?iso-8859-1?Q?YM0oiqDDlpju3kstD6dYKBc5FM/doUCPuo0X547OXygbDPT7DlE9/FQ4Mf?=
 =?iso-8859-1?Q?v1jNy+QPIIKdbyqLjG0jdJxiAfU4wpbTdXLp1pJWR+r9EuOp58x/gMFrne?=
 =?iso-8859-1?Q?SbcAGOeieNKGLC1mrFnrcbUG3+144aAqR+LFbhUJzm9e6GTo6kbWIM2w30?=
 =?iso-8859-1?Q?3WXh0sArxUtqT16uDlTnhxe4drQBRtVlIwzJ2RVjcpLbvU9CKyD4ZXNDJV?=
 =?iso-8859-1?Q?h4kgkeZxmqJRNQfHxPudrSDdvTamyKr+0KSfXmaXx7sxHtTrIWwdBaC/IQ?=
 =?iso-8859-1?Q?cYDJRL5HzmlEEN1ZPI8kqApQe49ePtzBlEs7Ex32B/8DhqF8ICUUJmqnRZ?=
 =?iso-8859-1?Q?XLcqlqwV98jR80ofT7EY6Pr9XDQc/IN2wk41RY5zlMwudtfWkTz/CeaKSE?=
 =?iso-8859-1?Q?YCmC6s/Nk/7p8iLSDfVHzcApt9npIPYCzxjUqXAHPXPS3eElcgSgU/Ki08?=
 =?iso-8859-1?Q?jgRG6A5fjvEojG9UXgSsRmGBx0YuiYLj064WgI/Ssl8B5v9EGpMTwxNJSu?=
 =?iso-8859-1?Q?muGOzvUMAoyXCeCI7u5xDQr1BcxwL2DFDf8gNIVS7dtHWhNRpRLEao0/2b?=
 =?iso-8859-1?Q?ZTb8WzqzUOdIDTcaXebBUAFSRajLcYXzRs3HwyD6G34JhNN7rGA+3aCLKx?=
 =?iso-8859-1?Q?D4/dqO/KNznnaJevL0Mc3zPSBafXq51UoYyU/1FSXzVlwGV3SiA7z1J3IG?=
 =?iso-8859-1?Q?A/NdcsKAncAJ32F169NLuGSQQg73q23FAyE/E0eP+SHZdiOO+Sssk68VN0?=
 =?iso-8859-1?Q?7Q/QLLnMKx1MnROnQMKxGSteZWtcEmjysZ2wg7g4c1M7DGjTCqVBz461OU?=
 =?iso-8859-1?Q?JuBFrCePXQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	Z0A0jXgX0qaJ+3QfsLF2YgQBWjf02TeobscQadSV0TtW7Fthn1PO1IOpmbti8GZ3BgrZ/eMQF7BaUr17zgaCm+jQSj52VwD4RZewjp9Dck99K2N+BgOYiXjKav1hTe/o9LN8V2+OM1EegyBro8cLv9ZGCot1rYoOIxUkqrIPD+l+FpUkXEac++ygqSW4wtA/ul7r0tpRCXh0IQ4EHRPzHooGXGRq8b/maPB+00tS7sv5lRjkI+g8EbwCJpdVJPeZFVARnjSH+/OmvpnDVNJiT749WM+Pt3msfYqQhuEKNVQ7Rt5Owu6R2T09PAOr7a1lSkf/xmc6WMjTITQgthxl1w==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d7343fc9-47d1-48e3-2620-08df3bb8782b
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Nov 2026 03:45:58.5520
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Xk8v7cb7mPyTTaobLKYemHvgksA5FIXWspzbAlZK+PlcQvS5VFuTvgomU6Y+4Xsfg4VVyxouark5CkS2fOoWdE6KRyT3gRpb3PTdBQeG56Y=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5079
X-purgate-ID: tlsNG-c1860d/1793936767-CDF4787B-11D78D04/0/0
X-purgate-type: clean
X-purgate-size: 2529

> Subject: RE: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property a=
nd
> leave it off
>=20
> > Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub
> > property and leave it off
> >
> > Hi Jamin,
> >
> > On Mon, Nov 02, 2026 at 09:22:05AM +0000, Jamin Lin wrote:
> > > Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an
> > > older machine type keeps the hub it has today and a guest saved by
> > > an older QEMU still loads.
> >
> > Reran the migration check from v7: with pc-q35-11.1, a guest saved
> > without the series loads on v8 with the hub in place, for qemu-xhci
> > with four HID devices and for q35 -usb with six.
> >
> > But this missed the 11.2 soft freeze, so in 12.0 pc-q35-11.2 is an old
> > machine type too, and hw_compat_11_1 (my suggestion on v7) doesn't
> > cover it. Saved with pc-q35-11.2 on master, both cases fail on v8:
> >
> >   Unknown section or instance '0000:00:01.0/4/usb-hub' 0
> >   Unknown section or instance '0000:00:1d.7/6/usb-hub' 0
> >
> > The entries from 02-05 want hw_compat_11_2 once the 12.0 machine types
> > are in.
> >
> > Junjie
>=20
> Hi Junjie, Marc-Andr=E9, and Gerd,
>=20
> Due to the QEMU code freeze and the planned 11.2 release in December,


I am not sure about the correct release version. I expect it to be v11.2.
If the version is wrong, please correct me.

Thanks,
Jamin


> disabling automatic hub creation while keeping migration compatibility wi=
th
> older QEMU versions requires adding the property to hw_compat_11_2.
> We need to wait until after the QEMU 11.2 release for the maintainers to =
add
> hw_compat_11_2 to each machine type.
>=20
> The USB redirection server is my original upstream goal, and I think this=
 task is
> independent of the automatic hub task.
> So, I want to split the auto-hub changes into a separate prerequisite pat=
ch
> series and send v9 after the QEMU 11.2 release.
>=20
> The USB redirection server common protocol series still needs rework on t=
he
> device announcement and control transfer patches.
> I will send v9 next week and mention that it requires the patch series th=
at
> disables automatic hub creation.
>=20
> This way, we can continue testing and reviewing the USB redirection serve=
r
> common protocol this month.(November)
>=20
> "If you agree, I will send v9 next week. Otherwise, I will wait until aft=
er the
> QEMU 11.2 release and then resend the full patch series as v9."
>=20
> Thanks,
> Jamin



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 07:03:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 07:03:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476268.1682425 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPDyc-0002Mc-VH; Fri, 06 Nov 2026 07:03:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476268.1682425; Fri, 06 Nov 2026 07:03:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPDyc-0002MV-RO; Fri, 06 Nov 2026 07:03:06 +0000
Received: by outflank-mailman (input) for mailman id 1476268;
 Fri, 06 Nov 2026 07:03:06 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPDyb-0002MP-W7
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 07:03:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPDya-00GKEv-DV
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:03:04 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aed7b99-8faa-0a2a0a5109dd-0a2a4503b4ec-46
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 08:03:04 +0100
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aed7ba7-fae8-0a2a45030019-d1558031cd69-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 08:03:04 +0100
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4a20bdaf39cso3058185e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:03:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b6e28cce1fsm41203345e9.15.2026.11.05.23.03.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 23:03:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793948583; x=1794553383; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=kQ2ROWRTdO/pxyulQSAwumhYJ9F4gvlCfIGw8Dy5YSU=;
        b=NOg8Eg3t9n7oKn6yymbtNOrgU6cjDobpFOmZuMkabIceIPlAK1WrZDUFikvAXUHY4T
         owcCyyCCOHGQyLpqanEX379U2VwYlWudP3ve4TGKSsWCT+Vc19cePB6kZ8lhj8upq/DD
         Z9xidIt7JRn1dBT52lzy9QkeeKthefx3q6W9110ozGdNs+X94/0rr+sib5TTAZYGsKkO
         6eM/F+hOqp3vEeTgEJexIooryr1jTFM5GHWQGvPsn/XrHIg0+sWXvvHoFvlCTGloPR1T
         i+WHESMS+CEaiOgYFl6DcvYsVuA9EkHL+xBp24W5Qj8N30U7h2HT6wQWf8uyuQJvUigA
         JLzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793948583; x=1794553383;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=kQ2ROWRTdO/pxyulQSAwumhYJ9F4gvlCfIGw8Dy5YSU=;
        b=flRx+X2NHZ1Ge31icJnzKYnI1TU2D6BmAn6c2+TRUoX8GKV7AN4yJS5DOJ2wEUG176
         mSvGhZVa95rM4NgA9t0ryTt0ekK+e/ekkh2mYVG08IyNdgS9mF9PJXgRF98OufRjNJ38
         Ouyj/CqxAXtOU7HH3E2pCqf4/XEHqVMFPxJTZEl+kFnd55ov+bt0FI98Jk6j61q42nQo
         pxKcVXs8OlzyLwCev4sDYWSE029rOzG9f9UZNSKI802rhtMomwc6D16xU0Sxby4Kq5O2
         EsV47HB0BUDO+Y+gGjXVu/j6/Df89D+ZEPWtydnMHJ918qmG/3dOS4x3gXaducISnba3
         6XWA==
X-Forwarded-Encrypted: i=1; AKwUvBzXBsvFPvfS++0m1bnS0w5MgFTBZDQZbE7tCdPB1+n8A0z6xji2MUhKTcErwLcoditQf3H3UrdyhJE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z92AlMVw1MA2W9RQiiV/po2VrzzswgSGw2ZZ1UJCAjCEuBzuleT
	/xxambl/6ujfpVgQBTiZSOrpKR0yU6F0tAbGx7iGIkjr/FTCKGVMFifuHl0kYBXTpA==
X-Gm-Gg: AYBFou2uSUF8vNmLpwKrg93B7A6I0sYdHXkpfXPov5n2LO9935dYDgqYv+fKa0s154r
	K+RUVdZeJ4x47cnLxM3MhoWmegCieCUptd7a6J8fyYduyi7KtHQfpjywf5GpP3vUaf5Mi3sL+2I
	Se9f3703pxw1xL6kSSnWJnxkl5W6bvP4cjxYIkWAo0SS9rczhYimeRz/yvVP8PzZn6DYjQ/Lfce
	cR45pkMkvhn8aWZtyTLuxHJD2DFObgKivlhE6IqEycl+aPxiqHPsyqQ+VktdBfil05ijrQQMdER
	y6RMmyWyP6RC4cFz5r2W7ZGuf4MGprtwcHYaJqaugVOtl00mRIxJg/wNJihEPADisI1dvTYn8cz
	l/kaOrmwSIeMzACYRCItZq09WDJo45HgusyBLJH+ucNWg1AjZ5u4IcSPVab0uHB08Ve+whXiI/4
	MaFG/ucWcxTMlFsgRqDHlaH370FTO4O6Cj5Wkzo6ipMr7qLZ8OsUOukVdUrSJr93/ey3vgDVax3
	jO5Fe1UMPEOfjX1QDKkf6G0MJ8+mFPlRFUoaG6ghZemu7qXEthJ5MS5kPGINoWK7zFDrDr9tWV1
	n8qrW09/8ilP0xpa+XH+gPQFzIkIJDt9bAyASPj23/eI/wTwew0o4Bhlxkh8XVBE7Ua0sliejN+
	x0hyCEFv9QqB1H1E=
X-Received: by 2002:a05:600c:3b29:b0:4a1:fae5:f2e2 with SMTP id 5b1f17b1804b1-4b6db4a5d89mr23798075e9.4.1793948583441;
        Thu, 05 Nov 2026 23:03:03 -0800 (PST)
Message-ID: <da90f205-a2ac-4e39-a359-79a3408c0d12@suse.com>
Date: Fri, 6 Nov 2026 08:03:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 26/28] docs: add coverage for svm_avic=
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-27-dmukhin@ford.com>
 <70db6d7a-5e48-4a39-8553-4718f7ccdf73@suse.com> <auzlbS6B2k0yJJOF@kraken>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <auzlbS6B2k0yJJOF@kraken>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1793948584-6C8DD4E9-C6041596/10/78276251493
X-purgate-type: spam
X-purgate-size: 1627

On 05.11.2026 21:22, dmukhin@ford.com wrote:
> On Thu, Nov 05, 2026 at 09:24:09AM +0100, Jan Beulich wrote:
>> On 05.11.2026 02:33, dmukhin@ford.com wrote:
>>> @@ -2673,6 +2673,27 @@ On Sappire and Emerald Rapids CPUs with May 2025 microcode or later, the
>>>  `ibpb-alt=` option can be used to switch to the alternative mitigation for
>>>  Intel SA-00982.  Intel suggest that some workloads will benefit from this.
>>>  
>>> +### svm_avic (x86)
>>> +> `= true | false | nodoorbell`
>>> +
>>> +This option configures Advanced Virtual Interrupt Controller (AVIC), which
>>> +is an extension of AMD Secure Virtual Machine (SVM) to virtualize local APIC
>>> +for guest VM.
>>> +
>>> +This parameter is experimental and for expert configuration only.
>>> +
>>> +Xen has mitigatations for the following AVIC hardware flaws:
>>
>> Nit: mitigations
>>
>>> + * AMD Erratum 1235. A hardware flaw affecting certain AMD Family 17h and
>>> +   Hygon Family 18h processors where the CPU hardware reads a stale
>>> +   `IsRunning=1` bit during Interrupt Control Register (ICR) write emulation.
>>> +
>>> +Limitations:
>>> +
>>> + * AVIC in x2APIC mode is not supported.
>>> +
>>> + * AVIC in nested virtualization setup is not supported.
>>> +
>>>  ### sync_console
>>>  > `= <boolean>`
>>
>> This wants to be part of the patch where the option is introduced. New options
> 
> I introduced 'svm_avic=nodoorbell' later in the series, after 
> svm_avic= appears for the first time. So my thinking was to document
> all new options in one patch...

Please do this as (sub)options are being added.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 07:06:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 07:06:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476278.1682433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPE23-00035C-Cl; Fri, 06 Nov 2026 07:06:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476278.1682433; Fri, 06 Nov 2026 07:06:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPE23-000355-9f; Fri, 06 Nov 2026 07:06:39 +0000
Received: by outflank-mailman (input) for mailman id 1476278;
 Fri, 06 Nov 2026 07:06:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPE22-00034z-G1
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 07:06:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPE21-00BvoU-T1
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:06:37 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aed7c71-2eae-0a2a0a5409dd-0a2a4504978c-40
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 08:06:37 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6aed7c7d-b57f-0a2a45040019-d1558032ac03-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 08:06:37 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a59100fa83so2229895e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 05 Nov 2026 23:06:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b6e2029278sm31901155e9.10.2026.11.05.23.06.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 05 Nov 2026 23:06:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1793948797; x=1794553597; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LOxVJjaBlXak0kah42tyznnDCf8vAV0MYb9sy+uKkxI=;
        b=cN4mXjmq76Iv0nrFrZ88xG6ywVW7TEGdAVHL/u0zJ7H4elplFPze6cd03RJtMFDZCC
         kHPCa91IzyMRLFIMDj3eyGqklgd0hGRuZfIJ5yM8eLeDGfqUSaj1TG1LrjwLIWNFYBQF
         soomdFSsXXOnNopqg5JHpngR5Xd5Dr48BidFjKwjtWRF1LBfbLkRsXZ+DhSfgSYGE7qg
         6tCCIjky7V0tQWb/k3NjGJs00HLHLSot8NQ9AEBlinx2Lffrf7RkKrvknzsvGRvqX2pB
         usfUFGBTib0JjNlBU011ck1OD8ZclFGV0mrjzmQEJvpaJd4lcAu3rSDBzKrA5f9L1F2g
         qNwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793948797; x=1794553597;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=LOxVJjaBlXak0kah42tyznnDCf8vAV0MYb9sy+uKkxI=;
        b=pr9io82G+7HW9K+beF9KNE+S4tBr2M/vRs9EJ0lt4jcmlXz1FuPaYCIdTCQbn1dS/4
         5v2ysQ5YIpd+iDNW41I5hOnzpWIIglLH9tsQEMkcBtHWlNxb6z90baGWBzGP69Cq5uRg
         RV05K4/48/jZEmyOQnvHeJtZhgMfIRpvTa9FGyFIZV7PjrQpxh/asU9Pqe1CsNyNDCdC
         08RlF5C68pKfOkYJrG+nHB+NKUUEHfgQMQf4oM15gWD/Pn8RC40jajeJ3AL6m8PQ1ctX
         4Y8vOTkJ8pXAPvZWBnO8+/Ve6bMXWFNYNazMlAlDWqHKYurV7CnXYYKx6LAkBSPUA2lh
         /ttA==
X-Forwarded-Encrypted: i=1; AKwUvBwB0KiH/CUHneIcdPSiJqV4TIixAzYtp5xzRQJW+MQkMyH1sYJnQfNxH2Ts7ENvZuYLSS7Z88GTWp4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+jZMnKfL8FwDTWy3a1lx8w93tDsVonVt+GbYISwiHY1QZjMdw/
	2C7obAZU80tpifizXvOK/jqCoREtLLCg8vuJKAkAY4ruueQewq+Ev3ZOAWBk13z5iw==
X-Gm-Gg: AYBFou0NYlZtIDgcNJkH49cXMJGMAwmYKLOlsPy5f/q4b/Tf7FQqNDK2N0rJaKSrSP1
	YY0oPUdoUyxC6eKI3ijSKCfmimtXY1BvI/EHT33AkURoQHssIFfYV0lNDHaL8YZKYE6tkE7vXv7
	LfhCo5xU21GpiLHx2pabpuAyUkUC7pzR52QFSauk1LEsakVlyaMa/ckLCw3HYLvE4LC8YqRs+PE
	C8oLIn/gzgcAx/rTKsrD9y9+ci6Ptt0BoByYuLQ1AGuXq6V6GRdFIC/FRVg7plZ4B2DTSCCwABt
	ppkUWKumX+UMpSJazw1287OMB5ANBsD6CDqGw769u/5HtL7J65zJ6s/J4hlBGS752q0JNrEzgNN
	+5YwvPm19NxkyGX7b0O3k5VrEOK7VhX69kIa5Rt5HLa19nmqYhoFe0gf56K5ziU7LXQViJXojsh
	MPJ/sNXrjE9GkVCVrQ4+8qI+i+xb35SrYqfbf9FlYEIxH+CIMNoXQ41FOKFtYhWyDzmDPMeZuOB
	BEEHFnsXU1zZkSCqOyjoneW1qy7Th+JPMWO7tWP55RfzO2zVjG22YdPqG0H/GykL4+2F3U2q3U1
	j7blp3k1dBzl0UcqlYU9L2ELp6cTYYIP6+DpCx/7xHUFeIP4Ptfms7i1zDLXmgJTBUhF709yFVi
	ezNOLAXXUKk1Xub6h
X-Received: by 2002:a05:600c:a104:b0:4b7:6942:39bd with SMTP id 5b1f17b1804b1-4b769423bc1mr2680075e9.26.1793948797352;
        Thu, 05 Nov 2026 23:06:37 -0800 (PST)
Message-ID: <48cc7be7-c672-45d0-92f5-0ed6a0cbf21f@suse.com>
Date: Fri, 6 Nov 2026 08:06:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 09/28] x86/hvm: fix hvm_emulate_one_vm_event()
 definition
To: dmukhin@ford.com
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, roger@xenproject.org,
 teddy.astie@vates.tech, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-10-dmukhin@ford.com>
 <421bbdc7-400d-4ed8-b000-2d845ab88e9c@suse.com> <auzioxAtHJ1/3MZA@kraken>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <auzioxAtHJ1/3MZA@kraken>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793948797-C1ED6B50-D9615248/10/78276251493
X-purgate-type: spam
X-purgate-size: 569

On 05.11.2026 21:10, dmukhin@ford.com wrote:
> On Thu, Nov 05, 2026 at 09:30:02AM +0100, Jan Beulich wrote:
>> On 05.11.2026 02:33, dmukhin@ford.com wrote:
>>> From: Denis Mukhin <dmukhin@ford.com>
>>>
>>> Add empty definition for !CONFIG_VM_EVENT case.
>>
>> Which is needed because of?
> 
> That is a fix for *-randconfig runs with AVIC series:
> VMEXIT_AVIC_NOACCEL handlers can call hvm_emulate_one_vm_event() 

Then I think the stub wants introducing in the patch where it's needed.
That'll allow better judgement as to possible alternatives.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:04:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:04:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476304.1682441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPEvd-0006Er-RG; Fri, 06 Nov 2026 08:04:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476304.1682441; Fri, 06 Nov 2026 08:04:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPEvd-0006Ek-Oj; Fri, 06 Nov 2026 08:04:05 +0000
Received: by outflank-mailman (input) for mailman id 1476304;
 Fri, 06 Nov 2026 08:04:05 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPEvc-0006Ee-RA
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:04:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPEvb-005QeP-8R
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:04:03 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed89ec-e002-0a2a0a5209dd-0a2a450696b8-34
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:04:03 +0100
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed89ee-195a-0a2a45060019-d155dd33b493-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:03:58 +0100
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-492f0a1b685so156304f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:03:58 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492d723222fsm2349606f8f.21.2026.11.06.00.03.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:03:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952238; x=1794557038; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=Gnj6whuU7ScmltVkU3YLhRawNQIhK9j4rZLkH0oRuWU=;
        b=er6x9oFqUN0zbBPr12wWxWQoabo4T/fdkW/p0mSaArRvg5cEOVRFqIJrENf5OUokZn
         CXuB0UlI+DLiR6+t1elmJx3S4xAmaD4gSfq8/HRNAcJQOf3X7A6L+ui+hl54ecV+ALWR
         /QW6KRO99QSD7lmw1I3DqqGZVceTMo0dJBnOrwG/l3O96jTXa/+DvAWkIXMKnXJ1jbrA
         OxPZtkFsSFnOZSAMV3YHuyS22L6JSooiHVUi1mAPWMp4TEf+dhhborVKwElyoTRVOIeN
         KHszBhyKeMcQjSeSrM/M1edpNUC7aP0+DsAUTlWsJBZ+r/TDQDJ+yUgWj3p2DqWgKrJx
         91rA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952238; x=1794557038;
        h=content-transfer-encoding:content-type:mime-version:references
         :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Gnj6whuU7ScmltVkU3YLhRawNQIhK9j4rZLkH0oRuWU=;
        b=xPxZqK/c9r/rWifsazXFrH2MWwq9gC0fDzYBubMHbNVj2CDn3RTGXzm3mGG2ayqcA7
         9KU2k+FAWhvl9559mvFcNrHbsJEXXpTXznNZMO1+npeFnf6+cRuoyYT+oex8Gi23CZhu
         ikU4sizLEBUUQzAA4C0DQeWlY+4o0X0hC9XWoo98Q7/1UJYxxRzpBwGamNe502aQFnFI
         ctLdd92tEvQHrNwCOl7ZytVQnVBB9JcsccuYpZMu6Z276/fS6aD+5y5OOvn8H3oyR+DK
         kQTUwcZwqFRpRrSD5pD96w4vRRuWQa79e99Q50Z6+upq7sdn9xuATDwL59mlNNGfpHjD
         Mw4A==
X-Forwarded-Encrypted: i=1; AL+hErE0/lBmfeaech+KGU5z6uGG3NsfykT43lGBc7avXJBON4Q+AAiegz+cxRCniHeT3UzTtLL7unm27O8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/WaibsWqgSEO18a9KaERFeBfPjWzY2gWk0u9aDnK9efVaGM5VG
	D/L+rWAGtgX1xtmP0AW/pmWSV4mCMGKHQtZ+a6JRtS76Rd/Mxy8Dyuee9zuD/HYlvGM=
X-Gm-Gg: AYBFou0SvkVCGSiw4lUFSsAWtww1N66TN66cs9tkQgvkQYQAFfuC34fPF/6NzK80BWo
	P4XfwQkhEF6L4T9cdW1YMY2iQmAuLzxGy5ncvRc+ZK/+WPg+TG0DJyz3lYq6/k+cS11Ppnoyhyp
	pr7os1DxyMA6XgpYZihloIKeScYTiF+AZxWgVhHeG2oV3eaKlPdszsq7+fWvehQNk6zVt8WSM6b
	vVpeC8D8vH9EL69l3crma88w3RrwfabjUsn9ISolbE1+USeMFluq5nDfOwugFy4Eq2WBi5u3AMg
	LfdVeZo0DmoutNyVjfCEtxwsh/tjv+sxe73a5Y3DGXhwHq8Icl4qp9XE2hwdEMIIuoOf8a49R/Y
	j8B7dvCO+h08Vp+cCt988PCtu8N4ifCTRLMxm8Zs8v4bNVho77CQUt7fpOGjyYBsaj82Ox9H9EY
	gOAzrfPXZ7xamee+3jP+jkEcaQ323KlyCUnEj6SMcjZSXi8FiuOm63wkBE5DeyPSGIvb6L2OTFh
	X4+VSsIxsAQHTATHph2Mj4N4UbWZwrbjVTf61tLO7Ap1w3amC+HDZbLg92uIZGxEiSfNUBAfjiZ
	3va/9GIPnsxVyQLDkiwyVNqb+A==
X-Received: by 2002:a05:6000:18a8:b0:48d:e696:8a65 with SMTP id ffacd0b85a97d-49277e91fe3mr3311316f8f.46.1793952237450;
        Fri, 06 Nov 2026 00:03:57 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: Jan Beulich <jbeulich@suse.com>
Cc: Luca Di Maio <luca@edera.dev>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	xen-devel@lists.xenproject.org,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH 1/3] IOMMU: record the flushes skipped under iommu_dont_flush_iotlb
Date: Fri,  6 Nov 2026 09:03:22 +0100
Message-ID: <20261106080324.2145220-1-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <2d444072-e4cb-40ff-b2f5-a6e5038e64c9@suse.com>
References: <20261030165031.2560020-1-luca@edera.dev> <20261030165031.2560020-2-luca@edera.dev> <1793444119.8631fc262581453bbf619ec5b2062170.1a1919984c0000403d@vates.tech> <2d444072-e4cb-40ff-b2f5-a6e5038e64c9@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793952243-F7ACA77B-4BC71802/0/0
X-purgate-type: clean
X-purgate-size: 568

On 02/11/2026 17:54, Jan Beulich wrote:
> On 31.10.2026 11:55, Teddy Astie wrote:
>> Le 30/10/2026 à 17:53, Luca Di Maio a écrit :
>>> +DEFINE_PER_CPU(uint8_t, iommu_skipped_flush_flags);
>>
>> flush_flags in iotlb_flush is unsigned int in iommu_iotlb_flush(), so I
>> would use it here as well instead of uint8_t.
>
> +1
>
> Also see ./CODING_STYLE on the matter. If not unsigned int, the next choices
> would be unsigned short or unsigned char, not uint8_t.

Thanks for the review, Jan and Teddy.

I'll address your comments in upcoming v2.

L.


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:09:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:09:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476313.1682460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0f-0007My-JN; Fri, 06 Nov 2026 08:09:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476313.1682460; Fri, 06 Nov 2026 08:09:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0f-0007Mr-GR; Fri, 06 Nov 2026 08:09:17 +0000
Received: by outflank-mailman (input) for mailman id 1476313;
 Fri, 06 Nov 2026 08:09:16 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPF0e-0007MX-LC
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:09:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPF0e-000tHV-1e
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:09:16 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2a-8faa-0a2a0a5109dd-0a2a4509b500-4
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:16 +0100
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2b-be1a-0a2a45090019-d155dd33c02d-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:16 +0100
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-491aaed7565so194971f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:09:15 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492ff85585esm1534507f8f.5.2026.11.06.00.09.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:09:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952555; x=1794557355; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=uRraAnsdRi1Ln76teebfsxImy84+5j63KoqKWqZx2lA=;
        b=fc0Ve2Zbi8PeHNvfcym1N+7QkOKBhkl+mAAp2xvZR9931YFM+klJWIDfR00XdDtzaT
         YsDg8GajtnYsUcdVvj8OqiGBO/jCaw1485oaco4GNfuFEVrXEC/2nfMMpGxDYL2dDbES
         Twn+CtlUkh/ih7d+BKBP5NQe8a8UYfy3wlnxyf4pi/J1r+sN0HXA9o95e6GkZp014n50
         SVa/HndDDGSyk3kPdiIkHCp2kecXx762eFD8fz9JOjNzd9jP3uHv64Ypw/J8gjumk1mn
         vTQEJXUHO39Eh7734DkW7RtT0HBOTAXsabpdwTDYBv3RY5/bSD0yAQliOOKyT4Tcj/jm
         veEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952555; x=1794557355;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=uRraAnsdRi1Ln76teebfsxImy84+5j63KoqKWqZx2lA=;
        b=JpJiDprcd4QZLlarePNJs+5Yc/JZ0ICrgtF+ATnZIoi8vQFVCEjJccTFfG86qXuaYN
         B5hHOai4LdLgurH3qLe47MIScTXVYjAU6bInSqZj0D57LKkDhQqkMOMQ7FL7BgLyfLha
         K3Ap/MIAT8x0LDVbNtZaqE8eYuadDJfC0YoD+biW0tVkaMRpAzwQVveWlkkyHJ4d4fbc
         l8A9Tvf7bWMNnmBfj0xOGTeqFS+D2a6tv86fUo58jaavjqLqSddaOXmu+CMx488NS8ta
         0p8TD22lId9sJBIbr1BFSJldXAIMYYyp/O1m/9JCfWPTAYg8DhRBA3O+XRlHAZQUqMQt
         av0A==
X-Gm-Message-State: APuU4Z+Yb0lC78Ux3ayAt0sBGx9S4/0YiETSk5d2S484MCBltc9f35ee
	9w7nzovxqu0o5rPlv6fGnklWb5wEJtNv28Wxhuer6hvbD4ZP//B1oCvEBTE7rhPrDbzQ+9y8Y7Z
	sPHUQGOE=
X-Gm-Gg: AYBFou3POQguwUu5F48oynJj6NFgVp+ykkYUaWc4Y42qHkS+oO3Q/inLsi+rvBYBkzs
	D0BPbKi+gtNd5hItjCOE8Exnlh39Yo6cKhpiMPwXLp8tIAXfh4sVDNx2X2F3FMAQJ4DtDC+6eqq
	MfSAYD0LlzqUnfuR5Uh67CQATOIZ7cb3/nUpYhxpcBvHCHNTwGo8UCwyY9Yocm2BKEUdYI9R2qV
	N9eV5qvlWeTvgYnV7ebcwDZhaTPC0A3pprcEyBxRUL7Yt1BKvIdW9ZiQQk6RJa5KiNeAbWtxsry
	3uGQ+RY6UoPGYemXMKixNXb8OyWdYbVPb8f0WwwzFgcy7wWbVdmN9rQc5gWAj72aHLVp9DOtYJb
	egWkOQEHzlqwg36WD+6ZtMIPi2UQaEqxhguWqhLc5e8sVnyF2F/WSNuf3+M19WmtEFcJiOvfNHU
	htD9QuFo1qW6XZq5AWkBnA6fcHOodsHQGSPh2CZVtBDHoP3UrRxg5iMZpduX5erNTrh6vKcjdHJ
	+WuBAs+TuSPdlziPcoARJoG8TKKSFN0eLWVHnGkPmp0C1QvNfm8r7mq3iRJzOe5wGt6pMrnVNnJ
	SkqdOQ1QyFddf0hmmuqCzomrAw==
X-Received: by 2002:a05:6000:4819:b0:48e:75a1:1e38 with SMTP id ffacd0b85a97d-492784555f4mr3482395f8f.56.1793952555402;
        Fri, 06 Nov 2026 00:09:15 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: xen-devel@lists.xenproject.org
Cc: Luca Di Maio <luca@edera.dev>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 1/4] VT-d: round IOTLB flush ranges up to an aligned power of two
Date: Fri,  6 Nov 2026 09:08:51 +0100
Message-ID: <20261106080859.2285309-2-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20261106080859.2285309-1-luca@edera.dev>
References: <20261106080859.2285309-1-luca@edera.dev>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793952556-3AAD8034-83FEFFB8/0/0
X-purgate-type: clean
X-purgate-size: 1356

Page-selective invalidation takes only aligned power-of-two ranges, so
iommu_flush_iotlb() flushes any other range as the whole domain. A
later patch flushes one range per group of grant unmaps, which rarely
has that shape.

Round the range up to the smallest aligned power of two covering it.
Orders the IOMMU doesn't support still get a domain-selective flush,
and device TLB invalidations use the same range.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Luca Di Maio <luca@edera.dev>

---
Changes in v2:
- New patch, taking the rounding out of the grant unmap batch (Teddy).
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index b41a1d41c8..faf8255f26 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -742,6 +742,10 @@ static int __must_check cf_check iommu_flush_iotlb(struct domain *d, dfn_t dfn,
     {
         ASSERT(page_count && !dfn_eq(dfn, INVALID_DFN));
         ASSERT(flush_flags);
+
+        /* PSI takes only aligned powers of two: cover the range with one. */
+        page_count = 1UL << flsl(dfn_x(dfn) ^ (dfn_x(dfn) + page_count - 1));
+        dfn = _dfn(dfn_x(dfn) & ~(page_count - 1));
     }
 
     /*
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:09:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:09:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476312.1682452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0d-0007AN-Du; Fri, 06 Nov 2026 08:09:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476312.1682452; Fri, 06 Nov 2026 08:09:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0d-0007AG-9L; Fri, 06 Nov 2026 08:09:15 +0000
Received: by outflank-mailman (input) for mailman id 1476312;
 Fri, 06 Nov 2026 08:09:13 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPF0b-00078z-HS
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:09:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPF0a-000tIA-H5
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:09:12 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b21-e002-0a2a0a5209dd-0a2a4508817c-38
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:12 +0100
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b28-f659-0a2a45080019-d1558034d881-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:12 +0100
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so1991825e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:09:12 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492ff85585esm1534507f8f.5.2026.11.06.00.09.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:09:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952552; x=1794557352; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=nYgjSx6ztXwWw8pUeZQnPzDV6xkhD2nykKrf2tut3DI=;
        b=k/JwLrTUO2kSwTZeOhJQX4JQhL5K4PJDeKbQKWiIgbytE1NaTcmTYAvW1f9WpDBhgq
         CNAoF2aXDBQ0TFGfW88LBXDlB14dopaGM3WinIdCZG/0zF7Ju+S/ZD948BH0oy0Is6zo
         ZENQq7+i8ncFjoiJVrJzQx+rxBx9/rB7uYoSWSbQvHNKzCHcdmh3YKa2dTK8pLpEYxYt
         fV/rZo1q6gGOdHK9gGaZ4kmprvM0tnbHrTknSkVUmhv86CjyIgxNbgnVV+Dlj3t7gE4d
         vl+KbfhqHcuKuFXPY4pZUDvzKYxLGuxJi4q6E43M9u+8zr6u9LGcV3G8xW9zPcyNpnfv
         Km3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952552; x=1794557352;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=nYgjSx6ztXwWw8pUeZQnPzDV6xkhD2nykKrf2tut3DI=;
        b=aDe9wgyc5wtX2s/4tPQ8qZ0hrdl99cxMxe9XtT0xZVM2D9f4FRexXEB7D0UGddqFzS
         L66VwD6e12QdcO1R0YSxZ4MxIRkOT+sVq5flfsgiueuPhU5+RrlRJxj/cmTsmbVw09eH
         9EBlOVUitxKRrreVtnGK0JM9Y40Qc2n+NzcEghauSKlxoes3GXHy/E8fQdIG7UZpnrQY
         m2n6YJqopbUZ/frQc4/YYbQIk+D3cDBRDnm0NfS5do+CA8EKG0HR5AICMjZZmYL1slkP
         lMIqhTBvilhH2oIwtUiLjUK0QyYhOYasRDoGWWaYvj0t5ldO/KtPL3QVYQTqfo1/Fbxi
         LFAg==
X-Gm-Message-State: APuU4Z/QNEPqieOs2Sst92bDQOfiEkaErBPqGQfNpqcs08MQ+Kn7PDj/
	9eQJRpFvZmDbfVOZY3fBNxkO84Ofn5AUWiEkV/tt/NqRYtSFftYpxn6Gd81YAHDvRbWFWlQPp3h
	EvfrbNsI=
X-Gm-Gg: AYBFou2UTT+0gYsEliDcWhdRX2JIys1nGtHbDUXU0HT0fSx9UB/LRcl4Vu3OyBL7lM/
	yH95hV6mUj6QwH7ICULSycuLoN8JVBe/Z01hUxRF6X6NBc6eQTGfHK90Py1MHl/J7TaQbMeQB93
	gWFIWpQFALpjLnwu3/A+haj1dmIhkee6LF3uFiW4I/ikvv7pHMB8kOAohWDJ1Ryj+l2sQRoKnvh
	CJqk7KfUQXc+fEvus4WCnVcCThu3mqRZOZSW6a7knhjTl+VsuVJG5VMlgd2ayWBX4VWm2rG5JiM
	ik4/ihwwN2530NCQ8IRByZ3FLCrREa7yvIDxntTIJzFKHfqjpltteShn5oaJSUoKDKObaujc+Pc
	jt8QHYrRy6AsYDV0/dafP/f+EL0++cRf96TPAiVVK80eTfqeHU9VtMbG98fdvNjREQQ7jw0mh2C
	DvmwzmPg80iqVU9m9818EIUPIf285kkJkwwoPo6cbkyKUf1hl2BARy6ppgjoMxShNqBe7AJ8Bx7
	HIxeEUctpy9Qi9o3HGN9uP/Y7rad188uxoN00c4rjlUcPpdWxEN344mESZBIcqQ4EjCWT10Giwa
	WPOGqXh922uCTvwIfj1yuzH2EA==
X-Received: by 2002:a05:600c:3ba5:b0:4b2:406b:f3bd with SMTP id 5b1f17b1804b1-4b6f74694a1mr23590085e9.23.1793952551715;
        Fri, 06 Nov 2026 00:09:11 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: xen-devel@lists.xenproject.org
Cc: Luca Di Maio <luca@edera.dev>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Alex Zenla <alex@edera.dev>,
	Andres Rodriguez <andres@edera.dev>
Subject: [PATCH v2 0/4] x86/HVM: batch the flushes of grant unmaps
Date: Fri,  6 Nov 2026 09:08:50 +0100
Message-ID: <20261106080859.2285309-1-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793952552-D574B87B-B54463BD/0/0
X-purgate-type: clean
X-purgate-size: 4388

Hi all,

GNTTABOP_unmap_grant_ref already batches the TLB flushes of a PV
caller: gnttab_unmap_grant_ref() unmaps up to 32 grants, flushes the
TLBs once with gnttab_flush_tlb(), and only then releases the pages.
gnttab_flush_tlb() does nothing for a translated caller, whose unmaps
go through the p2m, and the p2m code flushes the guest TLBs and the
IOTLB for every page instead. A PVH dom0 running netback pays both
flushes for every page a domU transmits.

This series gives translated callers the same batching, for both
flushes, before the pages are released. The IOTLB half has no PV
counterpart: a PV dom0's IOMMU maps all of RAM by default, so its
grant unmaps don't touch it. Patches 1 and 2 are preparatory, and
patches 3 and 4 have the details.

iperf3 between a PVH dom0 running netback and two PVH domUs:

  machine:  c7i.metal-24xl, Xeon Platinum 8488C, 96 threads,
            VT-d with shared EPT tables
  dom0:     96 pinned vCPUs, 4 GiB, Debian 13, Linux 6.12
  domUs:    8 vCPUs, 1 GiB, Linux 6.18, on a bridge
  Xen:      staging at 9a6cc49b44, built with GCC 14.2
  runs:     10 s, Gbit/s received, higher is better, 60 per row
            from 4 boots of each build, interleaved
  shown:    mean of the runs +/- their relative standard deviation

                   base          patched       %change
  domU to dom0
    1 stream       0.64 +/-1%    3.11 +/-2%      +386%
    2 streams      0.81 +/-6%    3.16 +/-2%      +291%
    4 streams      0.84 +/-4%    2.69 +/-7%      +221%
    8 streams      0.83 +/-2%    2.40 +/-5%      +190%
    16 streams     0.81 +/-2%    2.23 +/-2%      +175%
  domU to domU
    1 stream       0.62 +/-6%    2.29 +/-5%      +267%
    2 streams      0.73 +/-7%    2.26 +/-10%     +211%
    4 streams      0.75 +/-4%    1.86 +/-16%     +150%
    8 streams      0.73 +/-4%    1.73 +/-9%      +136%
    16 streams     0.71 +/-3%    1.62 +/-6%      +128%
  dom0 to domU
    1 stream       4.19 +/-6%    3.93 +/-8%      -6.2%
    2 streams      4.87 +/-9%    4.68 +/-11%     -4.0%
    4 streams      8.73 +/-21%   8.34 +/-19%     -4.5%
    8 streams     12.53 +/-17%  13.05 +/-17%     +4.1%
    16 streams    16.85 +/-12%  16.40 +/-16%     -2.7%

The table comes from one of 13 sessions on this instance type, which
ran 7,779 runs over 57 boots in total.

A domU transmits 2.2 to 4.8 times as much, and 2.2 to 4.0 times as
much per busy dom0 vCPU, where base never exceeds 0.84 Gbit/s whatever
the number of streams.

>From dom0 to a domU, netback fills the domU's buffers with grant
copies and maps few of its packets, so the series barely runs there
and the differences stay within the margin of error.

Between boots of the same build, the single-stream mean varied no
more than the run-to-run spread predicts. A debug build ran the same
benchmark without assertion failures or IOMMU faults.

Changes in v2:
- Patch 1 is new: VT-d rounds flush ranges to an aligned power of two
  itself, instead of the grant unmap batch doing it (Teddy).
- iommu_iotlb_flush() checks iommu_dont_flush_iotlb and records the
  range as well as the flags of the flushes it skips, instead of its
  callers recording the flags in a uint8_t (Teddy, Jan).
- The grant unmap batch flushes the recorded range, instead of the span
  of the unmapped gfns (Teddy).
- The table's patched column is now re-run against v2

Thanks,
L

Luca Di Maio (4):
  VT-d: round IOTLB flush ranges up to an aligned power of two
  IOMMU: record the flushes skipped under iommu_dont_flush_iotlb
  x86/HVM: defer IOTLB flushes across a grant unmap batch
  x86/HVM: defer p2m TLB flushes across a grant unmap batch

 xen/arch/arm/include/asm/grant_table.h     |  3 ++
 xen/arch/x86/hvm/grant_table.c             | 55 +++++++++++++++++++++-
 xen/arch/x86/include/asm/grant_table.h     | 13 +++++
 xen/arch/x86/include/asm/hvm/grant_table.h |  5 ++
 xen/arch/x86/include/asm/hvm/vcpu.h        | 10 ++++
 xen/arch/x86/mm/p2m-ept.c                  |  2 +-
 xen/common/grant_table.c                   |  6 +++
 xen/drivers/passthrough/iommu.c            | 17 ++++++-
 xen/drivers/passthrough/vtd/iommu.c        |  4 ++
 xen/include/xen/iommu.h                    |  6 +++
 10 files changed, 117 insertions(+), 4 deletions(-)


base-commit: 41ddcfe808ec1228289ae60c30768d50a58c98fe
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:09:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:09:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476314.1682469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0i-0007bd-PW; Fri, 06 Nov 2026 08:09:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476314.1682469; Fri, 06 Nov 2026 08:09:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0i-0007bT-MM; Fri, 06 Nov 2026 08:09:20 +0000
Received: by outflank-mailman (input) for mailman id 1476314;
 Fri, 06 Nov 2026 08:09:19 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPF0h-0007Zw-5k
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:09:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPF0g-000tMz-J0
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:09:18 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2a-8faa-0a2a0a5109dd-0a2a4509b500-10
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:18 +0100
Received: from [209.85.221.48] (helo=mail-wr1-f48.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2e-be1a-0a2a45090019-d155dd30cd6a-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:18 +0100
Received: by mail-wr1-f48.google.com with SMTP id
 ffacd0b85a97d-48dfc0421d9so338353f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:09:18 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492ff85585esm1534507f8f.5.2026.11.06.00.09.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:09:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952558; x=1794557358; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=IEKAEyHBNOdxjTO8grr2RcMiadnMYmahTPI5OWv+TvE=;
        b=De2RiAaiB2O14DOFE0sO/fUsQzGpTH+zjsT2Y811te+E9w6w141GKwDfPh2QWIHBdw
         X0k/tDzWDwWzAcAR2eZ8LOR5TkTlfNgiDyvP9rzA/PWUKzpnliSyRq6Y/iRa5N76kajP
         bDoWbs6nhsaCLd8ZBacVUxBnDOIOxZp+qOb+mWyGhaMadHtxb+mtXk0UbDtaXw4Z+zsA
         7PZthVM0HAmn5Dz68Evv80PBMsHzT0MkHgWwWFSWVMwEFA6siEzjlgto0YA3asqqmldm
         oVCGvLoat0O6NnmlsiRqnVC3K+Lipskr4wW9qHDUn0zk7dg4Lq814wAOigCvn+T+e1w/
         IZVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952558; x=1794557358;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=IEKAEyHBNOdxjTO8grr2RcMiadnMYmahTPI5OWv+TvE=;
        b=0Y00uN/LgLcjbo6TAsHLKEL37HqEEZy+iFDa8y5iKOHBt79apdOqTgfrEQNYeBQCYs
         lwhSp26W4l7PATIpkpB2vsZFDJdafEgeCNA+0vDVHM/xme0fK8pQZj8A3RDkZdKKuiCE
         6sRz/dO1S+V8lZttxsDrEWBpmGtarnU6gKm0Ra0WXWdRF97mO3XLuyPnXxscWIZ9+Yt9
         zsJAjnYtuuPBMPiEevlMrwWKCcM2fX9qza8Rd2jWGeOwfoWGdbj6orW2W4siFKg977G6
         boFGwityzmGD5MbgsHzYUM1AyzT2Am+KIesxXFMshqdexsd2gBPMGgtVReddJooIlHvN
         wIpg==
X-Gm-Message-State: APuU4Z+Tc1kBOwhKcbCUYf2jWxqSgh/S4fSg/zfH1QgAqZb52eM5HXPw
	ZYv3MsHxVrs59YFIDvSWipCieF/AgQX1FtlPSnOa52hwhcdz9jwDd0MqsdZYQRjAgBUL8fJ/RWV
	/J57pksc=
X-Gm-Gg: AYBFou3iW5T4FxUs4eBfbu4lukaeGPE+rVRIDe6AGdAvGR3J7/KaXVXJYReR/fn5SBa
	RDa9CgT+UDcCvabHen8bK46aLpi7Xl7Z5kNF7waCdEbaI2pKtgZ2jEITeuSGlJONCtHuFVz/y8L
	s9FJ391Z7zXBLjp/b7lseaOaYm3kRMFkzdQr9MdmYYsxI8X8aY2WxmxjhpJV4NDGkKFlp/W8OLb
	W81q2afTmnXaGvcDlVFlAyVYyX0lUwlAQozJM9NoYvE5Os8rnDoBKTg+mmCJbVGrQ1WqAO9T0Uc
	rst/XyLctqn44uYysNKDDPWB+foLc/79anBkyr5FnfnLob8U6TNtx8xIhCV85g2nYU2r4CF+Aud
	BmXGCIZB6zJKa5T639GIimmQMKbelw9G584gPULuZ+LJVE6APMz0ONE9dQA0Nzw/+oISpDXyGLs
	EWo6/jfADb45tr0QNxTjqzzBvtmusj0JC4VFDrUDL5R4T8uWwAyzmJIyHAr+CHiD2H7ajxjFjQY
	48JvxmVULmgw1ibLooV6gEsTyijLCpWPKd6Z5UUG3LfyLV6DuMqaW5zWhCMClWy1683Rdqtivdf
	+VzPsxVwykJWNQLJNgB+UpIkgA==
X-Received: by 2002:a05:6000:2dc2:b0:48d:db77:d124 with SMTP id ffacd0b85a97d-49273e5bcb5mr3324321f8f.6.1793952557946;
        Fri, 06 Nov 2026 00:09:17 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: xen-devel@lists.xenproject.org
Cc: Luca Di Maio <luca@edera.dev>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 2/4] IOMMU: record the flushes skipped under iommu_dont_flush_iotlb
Date: Fri,  6 Nov 2026 09:08:52 +0100
Message-ID: <20261106080859.2285309-3-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20261106080859.2285309-1-luca@edera.dev>
References: <20261106080859.2285309-1-luca@edera.dev>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-bad1c0/1793952558-BFAD0034-3315047D/0/0
X-purgate-type: clean
X-purgate-size: 4385

While iommu_dont_flush_iotlb is set, iommu_legacy_map(),
iommu_legacy_unmap() and the shared-EPT path of ept_set_entry() skip
their IOTLB flush and drop its range and flags, so a caller deferring
the flush has to work out what to flush on its own.

Check the flag in iommu_iotlb_flush() instead, which all three call,
and record what it skips in the per-CPU iommu_skipped_flush: the
smallest range covering the skipped flushes, and their flags. No other
caller of iommu_iotlb_flush() runs while the flag is set, and the code
setting it clears it before its own flush. The next patch uses the
record for grant unmaps.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Luca Di Maio <luca@edera.dev>

---
Changes in v2:
- Check the flag in iommu_iotlb_flush() rather than in its callers,
  which also drops the duplicated flags in ept_set_entry() (Teddy).
- Record the range of the skipped flushes as well as their flags
  (Teddy).
- Store the flags as unsigned int in struct iommu_skipped_flush, instead
  of a uint8_t checked by a BUILD_BUG_ON() (Teddy, Jan).
---
 xen/arch/x86/mm/p2m-ept.c       |  2 +-
 xen/drivers/passthrough/iommu.c | 17 +++++++++++++++--
 xen/include/xen/iommu.h         |  6 ++++++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index 204bdb054a..33c3d8fc58 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -976,7 +976,7 @@ out:
     if ( rc == 0 && p2m_is_hostp2m(p2m) &&
          need_modify_vtd_table )
     {
-        if ( iommu_use_hap_pt(d) && !this_cpu(iommu_dont_flush_iotlb) )
+        if ( iommu_use_hap_pt(d) )
             rc = iommu_iotlb_flush(d, _dfn(gfn), 1ul << order,
                                    (iommu_flags ? IOMMU_FLUSHF_added : 0) |
                                    (vtd_pte_present ? IOMMU_FLUSHF_modified
diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 4b22ecfe65..8e97086601 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -64,6 +64,7 @@ bool __read_mostly iommu_hap_pt_share = true;
 bool __read_mostly iommu_debug;
 
 DEFINE_PER_CPU(bool, iommu_dont_flush_iotlb);
+DEFINE_PER_CPU(struct iommu_skipped_flush, iommu_skipped_flush);
 
 static int __init cf_check parse_iommu_param(const char *s)
 {
@@ -390,7 +391,7 @@ int iommu_legacy_map(struct domain *d, dfn_t dfn, mfn_t mfn,
     ASSERT(!(flags & IOMMUF_preempt));
     rc = iommu_map(d, dfn, mfn, page_count, flags, &flush_flags);
 
-    if ( !this_cpu(iommu_dont_flush_iotlb) && !rc )
+    if ( !rc )
         rc = iommu_iotlb_flush(d, dfn, page_count, flush_flags);
 
     return rc;
@@ -458,7 +459,7 @@ int iommu_legacy_unmap(struct domain *d, dfn_t dfn, unsigned long page_count)
     unsigned int flush_flags = 0;
     int rc = iommu_unmap(d, dfn, page_count, 0, &flush_flags);
 
-    if ( !this_cpu(iommu_dont_flush_iotlb) && !rc )
+    if ( !rc )
         rc = iommu_iotlb_flush(d, dfn, page_count, flush_flags);
 
     return rc;
@@ -488,6 +489,18 @@ int iommu_iotlb_flush(struct domain *d, dfn_t dfn, unsigned long page_count,
     if ( dfn_eq(dfn, INVALID_DFN) )
         return -EINVAL;
 
+    if ( this_cpu(iommu_dont_flush_iotlb) )
+    {
+        struct iommu_skipped_flush *skipped = &this_cpu(iommu_skipped_flush);
+
+        skipped->first = _dfn(min(dfn_x(skipped->first), dfn_x(dfn)));
+        skipped->last = _dfn(max(dfn_x(skipped->last),
+                                 dfn_x(dfn) + page_count - 1));
+        skipped->flags |= flush_flags;
+
+        return 0;
+    }
+
     rc = iommu_call(hd->platform_ops, iotlb_flush, d, dfn, page_count,
                     flush_flags);
     if ( unlikely(rc) )
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 37c4a1dc82..a2aeaf8d41 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -502,6 +502,12 @@ void iommu_dev_iotlb_flush_timeout(struct domain *d, struct pci_dev *pdev);
  */
 DECLARE_PER_CPU(bool, iommu_dont_flush_iotlb);
 
+struct iommu_skipped_flush {
+    dfn_t first, last;
+    unsigned int flags;
+};
+DECLARE_PER_CPU(struct iommu_skipped_flush, iommu_skipped_flush);
+
 bool arch_iommu_use_permitted(const struct domain *d);
 
 #ifdef CONFIG_X86
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:09:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:09:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476315.1682478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0m-0007sF-4l; Fri, 06 Nov 2026 08:09:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476315.1682478; Fri, 06 Nov 2026 08:09:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0m-0007s8-0b; Fri, 06 Nov 2026 08:09:24 +0000
Received: by outflank-mailman (input) for mailman id 1476315;
 Fri, 06 Nov 2026 08:09:22 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPF0k-0007pV-1x
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:09:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPF0j-005S4K-Eq
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:09:21 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2e-bab6-0a2a0a5309dd-0a2a450a95a4-16
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:21 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b31-f2d2-0a2a450a0019-d155802bddc5-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:21 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4b4571ff080so3659665e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:09:21 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492ff85585esm1534507f8f.5.2026.11.06.00.09.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:09:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952561; x=1794557361; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=QoFzDdd2lf6UxmsRhpAJjlVL9PKwQJXX6SC5k0LavRI=;
        b=k+0SzDoSEuOQWH7eqtjicU4suJwSA9VdEG27Sjpr15j/YCv2h1xY3nGTYlEv8P2s/J
         C+VpFAWXBjVdhuP59M9i+/mvi1SPkshqnOKHnaWBzgHfqzlIjcaDbbpDN5JSfrCX1sm8
         gJTdS6j76WwZ2tJdmIX8086vIoClWRIV3IUsdfMItDbOyWaarBDzdNCeyehlL+fQMY9E
         zA7RP7Pf5MrDNyP74yZKWeDKiDQ2cBWib8GZA7EjHCJRpq7+bGaWKtgTs03LFuxViG1x
         6KldP9cyt8uZ5fzEnjWFlWEVJfamMjbpk9xWOfDMCPrvnwSdPYf40emz5O2qZl5Z0Tow
         0R5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952561; x=1794557361;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=QoFzDdd2lf6UxmsRhpAJjlVL9PKwQJXX6SC5k0LavRI=;
        b=ztsQNXbuRI3O51IX2D2cNzckFIbe7vrh//I2XnJTolTv7sbWvjw8+ZHXFPlPgAHLxt
         4YRU3h1VK/0rhV7N0IN9HpiJ+0mma5DWJZHg3GMIvrFB10ahYNz0rMvE5stj6Zfdd4VL
         TydTPHHA/6o8ulzNOcCYsHPfaMJWRnA3nsRMYobczirV0ulmu5ScbE+6OEZD9Klo7ikM
         R+PCkldq51QBZLXUyt0TU0vpWjiGfh6K5EGiQfOoFEPUi7ZHE7KL6bhyt074+UxaIpAw
         F9UQcM44LqzmCg5+BLV96kLvOpiVXYCsDmAWny3SJ1FoIvyIUoPip6zlVCL1JSmr1XQg
         x0cg==
X-Gm-Message-State: APuU4Z9mWDiPTJl+oQrD28yutPhxf3mfcsm5MbVtc9c00v/vTSMTD36L
	c7gMv3B4WKm0O9r8xycJ71WbQOtUEshW04hXg/53MzQvVfaSsjVzSuiBdC5kjw+cb9B0RcTv2UM
	IP1Pfmxc=
X-Gm-Gg: AYBFou0FZlCcUTZ7lZqC2qegMtrON1VUFpOBYRe78VxVpuQqJ3Expac8ifEGPeICcy2
	jf0kLwpV4XOaWS8qbUZR0UKCWRDlarkGjbgwtPfUin+NeaLT+YKtuG5MJxa63Sxc38v6AAyjMhU
	TH/WZVDrf4Ui5XI0W2wYARMpB+MZjc3bnqY5HSOGCJOV5PXZD9Kqam0dD8JZVZSRyZ/gDI4RW+P
	mrko6vDV8zEDNtL9URK+6UTRg2EdjbSCK/6cSI0vfel0fV3lDxg7can1L5h0ypdsqxGY94AA0Ia
	bDfW+A53j7yhH/DhWCMJi//pUAVpm3U6l6A43B+iqP87Z91vpYH1IElhYZtTH5pi3OXdiRCn5bO
	qaz/B/lAoTbMCrSMCGofHh1RhqqzynY857WzbzLDAskQswmcdKVtZI0c7o8F2ziiF59fXewBubC
	xCHjzEdZNsfXUqAsS0TlRnCvnAU6r7rrKuQvCHB0+D9AKc4HrYPp0NloeMRosuIwgx5w+vYJeJ5
	1lKOLKXWFY4jfvTy3ZsKGwLqx4F1uHH2f/TKmEy9HWLmjN6ykNneHm8JBrQHqYlG634enuubCgL
	2ecFE1WtkH1Dg7ZMzTk48SmJpg==
X-Received: by 2002:a05:6000:2488:b0:48e:2448:ea23 with SMTP id ffacd0b85a97d-4927807f0a8mr3734805f8f.55.1793952560685;
        Fri, 06 Nov 2026 00:09:20 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: xen-devel@lists.xenproject.org
Cc: Luca Di Maio <luca@edera.dev>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 3/4] x86/HVM: defer IOTLB flushes across a grant unmap batch
Date: Fri,  6 Nov 2026 09:08:53 +0100
Message-ID: <20261106080859.2285309-4-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20261106080859.2285309-1-luca@edera.dev>
References: <20261106080859.2285309-1-luca@edera.dev>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1793952561-59DDFCFC-56EE003E/0/0
X-purgate-type: clean
X-purgate-size: 8732

gnttab_unmap_grant_ref() flushes the TLBs of a PV caller once per group
of GNTTAB_UNMAP_BATCH_SIZE unmaps. A translated caller instead gets an
IOTLB flush per page from the p2m code, so netback in a PVH dom0 issues
one for every page a domU transmits.

Open a batch for translated callers before each group, and end it next
to gnttab_flush_tlb(), so before unmap_common_complete() releases the
pages. Ending the batch issues one flush covering the flushes the
unmaps skipped, as iommu_skipped_flush recorded them.

The batch lives in the vCPU, and iommu_dont_flush_iotlb isn't held
across the guest copies between the unmaps, as those can sleep on a
vm_event ring and change the p2m, e.g. by unsharing a page. If the
flush fails, the pages may still be reachable through the IOMMU, so
the group isn't completed and its pages leak.

PV callers, Arm, and other callers of replace_grant_host_mapping() are
unchanged.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Luca Di Maio <luca@edera.dev>

---
Changes in v2:
- Flush the range recorded in iommu_skipped_flush, rather than one
  derived from the unmapped gfns (Teddy).
- Leave rounding the range to an aligned power of two to VT-d, in
  patch 1 (Teddy).
---
 xen/arch/arm/include/asm/grant_table.h     |  3 ++
 xen/arch/x86/hvm/grant_table.c             | 49 +++++++++++++++++++++-
 xen/arch/x86/include/asm/grant_table.h     | 13 ++++++
 xen/arch/x86/include/asm/hvm/grant_table.h |  5 +++
 xen/arch/x86/include/asm/hvm/vcpu.h        |  9 ++++
 xen/common/grant_table.c                   |  6 +++
 6 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/include/asm/grant_table.h b/xen/arch/arm/include/asm/grant_table.h
index 7661a95341..66f90083db 100644
--- a/xen/arch/arm/include/asm/grant_table.h
+++ b/xen/arch/arm/include/asm/grant_table.h
@@ -40,6 +40,9 @@ int create_grant_host_mapping(uint64_t gpaddr, mfn_t frame,
 int replace_grant_host_mapping(uint64_t gpaddr, mfn_t frame,
                                uint64_t new_gpaddr, unsigned int flags);
 
+static inline void gnttab_unmap_batch_begin(void) {}
+static inline int gnttab_unmap_batch_end(void) { return 0; }
+
 /*
  * The region used by Xen on the memory will never be mapped in DOM0
  * memory layout. Therefore it can be used for the grant table.
diff --git a/xen/arch/x86/hvm/grant_table.c b/xen/arch/x86/hvm/grant_table.c
index afe449d888..5ecba6db65 100644
--- a/xen/arch/x86/hvm/grant_table.c
+++ b/xen/arch/x86/hvm/grant_table.c
@@ -41,6 +41,8 @@ int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
     p2m_type_t type;
     mfn_t old_mfn;
     struct domain *d = current->domain;
+    struct hvm_grant_unmap_batch *batch = &current->arch.hvm.grant_unmap_batch;
+    int rc;
 
     if ( new_addr != 0 || (flags & GNTMAP_contains_pte) )
         return GNTST_general_error;
@@ -54,7 +56,29 @@ int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
                  type, mfn_x(old_mfn), mfn_x(frame));
         return GNTST_general_error;
     }
-    if ( p2m_remove_page(d, _gfn(gfn), frame, PAGE_ORDER_4K) )
+
+    /* Not across the guest copies, which can change the p2m or sleep. */
+    if ( batch->open )
+    {
+        this_cpu(iommu_skipped_flush) =
+            (struct iommu_skipped_flush){ .first = INVALID_DFN };
+        this_cpu(iommu_dont_flush_iotlb) = true;
+    }
+
+    rc = p2m_remove_page(d, _gfn(gfn), frame, PAGE_ORDER_4K);
+
+    if ( batch->open )
+    {
+        const struct iommu_skipped_flush *skipped =
+            &this_cpu(iommu_skipped_flush);
+
+        this_cpu(iommu_dont_flush_iotlb) = false;
+        batch->iommu_flags |= skipped->flags;
+        batch->dfn_first = min(batch->dfn_first, dfn_x(skipped->first));
+        batch->dfn_last = max(batch->dfn_last, dfn_x(skipped->last));
+    }
+
+    if ( rc )
     {
         put_gfn(d, gfn);
         return GNTST_general_error;
@@ -64,6 +88,29 @@ int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
     return GNTST_okay;
 }
 
+void grant_p2m_unmap_batch_begin(void)
+{
+    struct hvm_grant_unmap_batch *batch = &current->arch.hvm.grant_unmap_batch;
+
+    ASSERT(!batch->open);
+    *batch = (struct hvm_grant_unmap_batch){ .open = true, .dfn_first = ~0UL };
+}
+
+int grant_p2m_unmap_batch_end(void)
+{
+    struct domain *d = current->domain;
+    struct hvm_grant_unmap_batch *batch = &current->arch.hvm.grant_unmap_batch;
+
+    batch->open = false;
+
+    if ( !batch->iommu_flags )
+        return 0;
+
+    return iommu_iotlb_flush(d, _dfn(batch->dfn_first),
+                             batch->dfn_last - batch->dfn_first + 1,
+                             batch->iommu_flags);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/grant_table.h b/xen/arch/x86/include/asm/grant_table.h
index e939c9bacb..3aae47092f 100644
--- a/xen/arch/x86/include/asm/grant_table.h
+++ b/xen/arch/x86/include/asm/grant_table.h
@@ -32,6 +32,19 @@ static inline int replace_grant_host_mapping(uint64_t addr, mfn_t frame,
     return replace_grant_pv_mapping(addr, frame, new_addr, flags);
 }
 
+static inline void gnttab_unmap_batch_begin(void)
+{
+    if ( paging_mode_external(current->domain) )
+        grant_p2m_unmap_batch_begin();
+}
+
+static inline int __must_check gnttab_unmap_batch_end(void)
+{
+    if ( paging_mode_external(current->domain) )
+        return grant_p2m_unmap_batch_end();
+    return 0;
+}
+
 #define gnttab_get_frame_gfn(gt, st, idx) ({                             \
     mfn_t mfn_ = (st) ? gnttab_status_mfn(gt, idx)                       \
                       : gnttab_shared_mfn(gt, idx);                      \
diff --git a/xen/arch/x86/include/asm/hvm/grant_table.h b/xen/arch/x86/include/asm/hvm/grant_table.h
index 01e23f79b8..9877262f51 100644
--- a/xen/arch/x86/include/asm/hvm/grant_table.h
+++ b/xen/arch/x86/include/asm/hvm/grant_table.h
@@ -19,6 +19,8 @@ int create_grant_p2m_mapping(uint64_t addr, mfn_t frame,
                              unsigned int cache_flags);
 int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
                               uint64_t new_addr, unsigned int flags);
+void grant_p2m_unmap_batch_begin(void);
+int grant_p2m_unmap_batch_end(void);
 
 #else
 
@@ -37,6 +39,9 @@ static inline int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
     return GNTST_general_error;
 }
 
+static inline void grant_p2m_unmap_batch_begin(void) {}
+static inline int grant_p2m_unmap_batch_end(void) { return 0; }
+
 #endif
 
 #endif /* __X86_HVM_GRANT_TABLE_H__ */
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 876c230784..990411e2c7 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -108,6 +108,13 @@ struct altp2mvcpu {
 
 #define vcpu_altp2m(v) ((v)->arch.hvm.avcpu)
 
+/* Per vCPU, as the guest copies between the unmaps can sleep. */
+struct hvm_grant_unmap_batch {
+    bool          open;
+    unsigned int  iommu_flags;
+    unsigned long dfn_first, dfn_last;
+};
+
 struct hvm_vcpu {
     /* Guest control-register and EFER values, just as the guest sees them. */
     unsigned long       guest_cr[5];
@@ -172,6 +179,8 @@ struct hvm_vcpu {
     /* Pending hw/sw interrupt (.vector = -1 means nothing pending). */
     struct x86_event     inject_event;
 
+    struct hvm_grant_unmap_batch grant_unmap_batch;
+
 #ifdef CONFIG_VIRIDIAN
     struct viridian_vcpu *viridian;
 #endif
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index b15805f3f9..ade42b4cb4 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1722,6 +1722,7 @@ gnttab_unmap_grant_ref(
         c = min(count, (unsigned int)GNTTAB_UNMAP_BATCH_SIZE);
         partial_done = 0;
 
+        gnttab_unmap_batch_begin();
         for ( i = 0; i < c; i++ )
         {
             if ( unlikely(__copy_from_guest(&op, uop, 1)) )
@@ -1734,6 +1735,9 @@ gnttab_unmap_grant_ref(
         }
 
         gnttab_flush_tlb(current->domain);
+        /* After a failed flush the pages may still be reachable: leak them. */
+        if ( gnttab_unmap_batch_end() )
+            partial_done = 0;
 
         for ( i = 0; i < partial_done; i++ )
             unmap_common_complete(&common[i]);
@@ -1749,6 +1753,8 @@ gnttab_unmap_grant_ref(
 
 fault:
     gnttab_flush_tlb(current->domain);
+    if ( gnttab_unmap_batch_end() )
+        partial_done = 0;
 
     for ( i = 0; i < partial_done; i++ )
         unmap_common_complete(&common[i]);
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:09:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:09:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476317.1682486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0n-00086R-Az; Fri, 06 Nov 2026 08:09:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476317.1682486; Fri, 06 Nov 2026 08:09:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPF0n-00086K-8I; Fri, 06 Nov 2026 08:09:25 +0000
Received: by outflank-mailman (input) for mailman id 1476317;
 Fri, 06 Nov 2026 08:09:24 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <luca@edera.dev>) id 1xPF0m-0007ux-Gg
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:09:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPF0l-00GWrl-TX
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:09:23 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b2a-2eae-0a2a0a5409dd-0a2a450891e4-24
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:23 +0100
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <luca@edera.dev>)
 id 6aed8b33-f659-0a2a45080019-d155dd35c870-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:09:23 +0100
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-490c3ae81d3so176779f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 00:09:23 -0800 (PST)
Received: from framework13.home ([2a01:e11:3:1ff0:831:b00b:e409:f875])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492ff85585esm1534507f8f.5.2026.11.06.00.09.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 00:09:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=edera.dev header.i="@edera.dev" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=edera.dev; s=google; t=1793952563; x=1794557363; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=wt1ABLaNm0GH4SvP3FkeGPhSrwsLp9qxqWi2r0AAmsc=;
        b=j0tn5hGKaEwOO1LrIgd5jb6K95JyZ4Y8esW5lxTxtXxlQKhcHVE1ZRIeqTtRHrsrk5
         wEIuYGQO4L77weSWrhc+RiOVgR/27sWAKU3AvYpDRqoguGt0u7eVYSAcuIOCzYSUe5eF
         YX61Lkko65DgSEjar2WIhjsSueP1ICRyUi0/eN1QL2TAgy/zt5O8QIKqdsBYDiokJ0dY
         FsGS1xvbjGT9fhm8afLcsuZ/jGn3IB8t/Lpv8TnEqsW75uDM6Xxo1xpBCP3aIavpr4YZ
         M1NE6sdXVonhaXKO0lT7cbkfo8AG3qGgrrx6dM5vgufn6g+XrTGZagotAEGJvxQUEBMB
         e3rw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793952563; x=1794557363;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=wt1ABLaNm0GH4SvP3FkeGPhSrwsLp9qxqWi2r0AAmsc=;
        b=SxSN12f5QdxeXgJwy062AzM+5fVInjMGgxIrXbu8PQLL2PqdL+Ajn8RChbgmK3zGTC
         YgYIIxblNZYvU2vctR9FqUAwL+wxJx404RVLChRT5/lVEXrUYaTnEWePPzG0PK78Bn74
         8yDfVoQoxZDV/lg5nZW6aMXix/xUfxL/XjOOZU4Coz9nUEgWn8/kOthJwDW/cE5vWDjN
         CABYPIE/XmHCxj7h2gOwkR7Y2d2HPUiTmwpiCDpDKDBCQ82vR8pwNulVY0YgN2hFaWmF
         bsqJGmGBzv1kjNcRHNKkPtIllwRQJuzhz+Xs/5H7J2U+2hpVcSoyA9ZyzC+pMWTDvpYj
         cHQA==
X-Gm-Message-State: APuU4Z93sq1uw3wtxXzqoU/uASKDIwOUm7KYcotzVWsWJfV9+SM9PtqO
	0nXYt7XerVtzM9Iv5CT6FKzBSQBHzESsDB51lVtmBf1PiqGl4Fe9s0nCfeFAw/qObVjLGB82p9Q
	1umleHrw=
X-Gm-Gg: AYBFou3kuXtUKRy9JCBaYbseEKOKBkLoTUzyH9J/JGyQeaS5xG+MIPheCO9WZuwHu4Z
	pW7eLytGKS82k/xhnDzmdAK4iLwwMuGpyMbum9UNihRDdjJOsUcOrpiXv5Ffy6D5xaqIqkwuCd5
	YHgLoxUJu9xwdLung5+u3VGc+VDPwnmPkWqnEspOW2Ma4D9lRml1gyvOjVg5zANXx/GQ3cIL4Lf
	KVVXHB0Xv2/i0n/VPIAVbS2y7YAt/vpm20h1QXuwFkuXOWvSga8Y6JH+KR07I7gbIMHSO8gdEmA
	wzEyl2MtugMHE5VCTcaMjqBY+/TVPpg0G16U+g8UyZWL+db+Ilqd1iV05Wx/Hehyd8HaWkGHhR3
	JBAC9Pq/CN/N+7+AnmviM3tJPMSr0iuoc/xF/FPOZrU1LnWD8hUI1n6E3w0+TFQjuBwRoXNa0pX
	UH3mhuPXXcy5NvFnPYna1fZNK35gYBQ70SCrtHwQKUDZF2HaLjh9Cr3qWsEYlssbemK0xvKMyTM
	vsG1VtLuk2YHcRSHtmyrgnCUwaLAs9Ij7t9QgLsW5sFeofnsBQSTi/qlpnzfaMUDeECNR88pyjn
	D8o4KK6p2lzrR6f/wRzsQi894Q==
X-Received: by 2002:a05:6000:2887:b0:48e:c0:9441 with SMTP id ffacd0b85a97d-49275372225mr3961197f8f.29.1793952563263;
        Fri, 06 Nov 2026 00:09:23 -0800 (PST)
From: Luca Di Maio <luca@edera.dev>
To: xen-devel@lists.xenproject.org
Cc: Luca Di Maio <luca@edera.dev>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2 4/4] x86/HVM: defer p2m TLB flushes across a grant unmap batch
Date: Fri,  6 Nov 2026 09:08:54 +0100
Message-ID: <20261106080859.2285309-5-luca@edera.dev>
X-Mailer: git-send-email 2.53.0
In-Reply-To: <20261106080859.2285309-1-luca@edera.dev>
References: <20261106080859.2285309-1-luca@edera.dev>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c1860d/1793952563-D5D4887B-94D9F5C0/0/0
X-purgate-type: clean
X-purgate-size: 3042

A grant unmap by a translated caller also flushes the guest TLBs:
p2m_remove_page() sets need_flush of the host p2m, and put_gfn()
flushes when it drops the last level of the p2m lock. Each flush sends
an IPI to every other CPU in d->dirty_cpumask and waits for all of
them, so a PVH dom0 with busy vCPUs pays a round of IPIs for every page
it unmaps.

Defer that flush to the end of the batch, still before the pages are
released. Under the gfn lock of get_gfn_query() only the removal can
set need_flush, as the query neither allocates nor unshares, so no
other change's flush is deferred. p2m_free_ptp() still flushes before
it frees a table.

The final flush reaches the CPUs in d->dirty_cpumask at that time. A
CPU that left the mask in between has flushed already, as
__context_switch() clears it from the mask only after write_ptbase()
has flushed the guest TLBs. With EPT, each change also marks every CPU
for an INVEPT before its next VM entry.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Luca Di Maio <luca@edera.dev>

---
Changes in v2:
- None.
---
 xen/arch/x86/hvm/grant_table.c      | 6 ++++++
 xen/arch/x86/include/asm/hvm/vcpu.h | 1 +
 2 files changed, 7 insertions(+)

diff --git a/xen/arch/x86/hvm/grant_table.c b/xen/arch/x86/hvm/grant_table.c
index 5ecba6db65..7a2201d926 100644
--- a/xen/arch/x86/hvm/grant_table.c
+++ b/xen/arch/x86/hvm/grant_table.c
@@ -41,6 +41,7 @@ int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
     p2m_type_t type;
     mfn_t old_mfn;
     struct domain *d = current->domain;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     struct hvm_grant_unmap_batch *batch = &current->arch.hvm.grant_unmap_batch;
     int rc;
 
@@ -76,6 +77,8 @@ int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
         batch->iommu_flags |= skipped->flags;
         batch->dfn_first = min(batch->dfn_first, dfn_x(skipped->first));
         batch->dfn_last = max(batch->dfn_last, dfn_x(skipped->last));
+        batch->tlb_flush |= p2m->need_flush;
+        p2m->need_flush = false;
     }
 
     if ( rc )
@@ -99,9 +102,12 @@ void grant_p2m_unmap_batch_begin(void)
 int grant_p2m_unmap_batch_end(void)
 {
     struct domain *d = current->domain;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
     struct hvm_grant_unmap_batch *batch = &current->arch.hvm.grant_unmap_batch;
 
     batch->open = false;
+    if ( batch->tlb_flush )
+        p2m->tlb_flush(p2m);
 
     if ( !batch->iommu_flags )
         return 0;
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 990411e2c7..ff6856928d 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -111,6 +111,7 @@ struct altp2mvcpu {
 /* Per vCPU, as the guest copies between the unmaps can sleep. */
 struct hvm_grant_unmap_batch {
     bool          open;
+    bool          tlb_flush;
     unsigned int  iommu_flags;
     unsigned long dfn_first, dfn_last;
 };
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 08:28:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 08:28:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476356.1682496 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPFIy-0004Ku-SS; Fri, 06 Nov 2026 08:28:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476356.1682496; Fri, 06 Nov 2026 08:28:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPFIy-0004Kn-Og; Fri, 06 Nov 2026 08:28:12 +0000
Received: by outflank-mailman (input) for mailman id 1476356;
 Fri, 06 Nov 2026 08:28:11 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xPFIx-0004Kh-5C
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 08:28:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPFIw-005Vuk-2F
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:28:10 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6aed8f94-e002-0a2a0a5209dd-0a2a450a9a36-14
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:28:10 +0100
Received: from [52.101.69.143]
 (helo=AM0PR83CU005.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6aed8f99-f2d2-0a2a450a0019-3465458fa792-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:28:09 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by PAWPR03MB10167.eurprd03.prod.outlook.com (2603:10a6:102:363::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 08:28:06 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 08:28:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=IpQa5urMt4DhU3qZyaom3Jf39oMiDPY8rt3SYqRM7NjWQeY+aXmW11PJpa+i3tNWGAb3gIhmkcTKOBSler3IUu/Owc4ZPbiEb9CcRGAV0KQ+hKrs62Yvzt5S4vm0BX1EvHwDnJXHmcw/B0gGnU4IhD5vqxByja8ITKP7z6qY3gKjixkBo7gmE8Q3jUxLav9cHx2GOUFzhjOz0r+sz5Tc+RLlk/PxqhGK3Eu7nW9X9THcN3KmV0my1hp9z4wzPwidIL9Aq+7yD/smwy2uotW+iryV/NYKD5q/tx8isvwmJ9p5g4WVU2KkYE2fXaiLS3Sj7H6d3gwYKx5uZUdPS/gqag==
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=uYwFRbSfknF0MGvs/x8hjTYIixhyIk2vqIBdL/UrpZQ=;
 b=rYdnp4KRBq6PN1WkilXslDRWOUMAZ8gaaLvGpSukWQnn2yMeu/cQLqHGMz7LzSiFwLCzBPz8lPHlhDWFPBRvD8NPix89tSvtk5Qfxh+IukgbbzxuAWhlRqmd1DqIWte4EsgiC0/svlnjOGBAZJQuevZfTA/1t3j0xMK9KLemailJdOuB2LCYpsGud2fJHXCCwJ9tvixRr2b6CgPpG9DsdGacj4y9Zk3BMAoEPyybkfkxXMcSqDA0FIeYBZBgI3tLpTy0MOWDKGZ52Fspdd7JDOw1/vIbyaC1KnxIridEjp0DTTuojIzkhgb7lW4VEdHcPOxZ8Y6c65qdCAJn7UlBGQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uYwFRbSfknF0MGvs/x8hjTYIixhyIk2vqIBdL/UrpZQ=;
 b=sTFI3pqicNX9SlIrq7ifRAflIZZWpub057VYMAsA+pDcgxiEEHeWpZ8MJQPVYPW70j7xuaY5+GMrzzGO0LL3GbLa9wI0uqtdQ3m+ej+sBYTTHCNV0Hng+5iBaxBSgIaCn3QOSdb2CfM3ORpGvXCZ6AuoBgP7GnfaSlXkTIR9zXIVJZVcJdVqwWmg1S77gBsydvTs1h/oxalLtKerJsBlTHl7D7ZaSs6nCRLEc11OlTnWN2/j/+GLM0g4fWXwn8Qh5kP7Y6SwplHaPey2/qAZ/tvlacbM8LmZvezwmZZMkam8FWMqJO7BNMRTHmc9DqzU9LZ83voCEP2PGYbkmeU2iQ==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Community Manager
	<community.manager@xenproject.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Topic: [PATCH v4 4/5] vpci: add SR-IOV support for PVH Dom0
Thread-Index: AQHdXK6sWnTwG0FjdEmPa5OC537fErcTDN4AgA3LQAA=
Date: Fri, 6 Nov 2026 08:28:06 +0000
Message-ID: <642f3615-d4b2-4937-841e-143b441a2400@epam.com>
References: <cover.1792072426.git.mykyta_poturai@epam.com>
 <103b10d012cc291906025045a2da1ce728f0bffd.1792072426.git.mykyta_poturai@epam.com>
 <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
In-Reply-To: <fe02f3ef-a215-4c81-be64-e2a5a30ae3e8@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|PAWPR03MB10167:EE_
x-ms-office365-filtering-correlation-id: f57054e8-b5fa-4b13-7fca-08df3bdfe1f1
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|366016|376014|1800799024|7416014|38070700021|261022075727099003|261021121427099003|261022105027099003|261026121527099003|261026140227099003|261009223027099003|261102123227099003|4143699003|5023799004|11063799006|10067099003|56012099006|22082099003|18002099003|261028144727099003;
x-microsoft-antispam-message-info:
 /58Zv6wnewssz/rSVwRlhje7qC2c0TBNvHg6M1GC0DtHBWkU9KMDHkulM9WtnLsEZN4kKLGond2B9NA7Fb/Mg8gEwN/uMKYTOG9icem1kYNIcJ2WeR3qLSnRrnCGLjOGzeIeeZP1VbXeCUCbp10mWsVcezsFrdlYcY/uaV4qJjn0l0IWlAf241aem7W7wBxQ6T7sDZBOfSZ1iYQfxyppdfFUQSRAvmaj8s2wmHuHWrFBPGmz36lSN93kSyRggfQnW5xiMw09XHd/OsGnWTcVIuhC7emeqwDlAsJtNx78PDjzWQ1GwSFAxxTzCU08ZNZzdGcCx2koT+ju+jVQLZrnWZiMV1q3AdXZs56lq7LEhCJVnsVD3a57d7yIGd1JKAAiDvUtnUMQO0zwNLcKjOgq3AuqGC0z6k59rAU4lukEG9Xe9dqclXzP4HcNRqj+4v1527trQzDX/uTSXNuMGahZsBeIF6J+6mdGKXt6c/7VdTpDGUy3YmxoFoW7D7n4/mwTr4osXK/4Z9vak3JNKtphDCCnUpTc4mFfISvunchBJXeDY1ub1XVu6NyVgM4SFVCtRcpU617iOeCVTlAqdMc5ae9a/WAg6Oosv3EV2/qK6LeLHhmoRaeORa2Ax0Q0OnUCMHymhzlOJfEZWFHC5gqK3HatT90ahRovhcCmqISV22pPbr/iera7XWAhaphjgaOYvBcPmG7zot0rqyOiitRDFN/20QfH3VgUR2BOOsRei4w=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(376014)(1800799024)(7416014)(38070700021)(261022075727099003)(261021121427099003)(261022105027099003)(261026121527099003)(261026140227099003)(261009223027099003)(261102123227099003)(4143699003)(5023799004)(11063799006)(10067099003)(56012099006)(22082099003)(18002099003)(261028144727099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?eEw3VGtIa3hrdWtNKy9uUlVVVGRmbHpTN2dwODM5WkhBTUo1K25qUmV3Q1d4?=
 =?utf-8?B?QXZid3FFR3hRRjRPSFBMNFNvZ0FRMjdsaFBYOE41N1VrOGh3QXZJMUdYS0tr?=
 =?utf-8?B?cXMwZENpN1JOdzFCWHJOZGxETHkvNG5SM1IzMTc0QUdIbS9wMUVOMzVMWC9v?=
 =?utf-8?B?NDJHNVBKTzk3elhKelV0by9KbmgwZkszSzcyWDlrYmlkUXhYYndIdDF1VWlU?=
 =?utf-8?B?WmtNZHVzbzBUcC9tVE1sVXZIZmtJd1Y1RTZXMWkvU1JmSXJLWGd5M2xKcnVD?=
 =?utf-8?B?TDVkNDJPSlF5NlR0RkMyTERwcVBvS1FmV1BocUdzbXVKblQ4ajhKWDRiZSsr?=
 =?utf-8?B?QjJacEVvMGtTcTVCbHl6ZEVkZGVhWkJteW03YWtYVmVCekdER28xSStzK055?=
 =?utf-8?B?WmxyQStPYkNnb2VsWjRON2U1SXEwMVJSZU03b2ZTck90OVRyd0xRVVV3TVVq?=
 =?utf-8?B?a2Vycmx6V3dENGJCcDlJbXVvS1NqOE54N2E0Rkg0a1l0SVQ2K2dDVytPR3dF?=
 =?utf-8?B?b1pUUVF2SUp6eDZ5akYzdk83aEVzc2xDS0tOMEdvYnN0eE9Ub3htSUY1d1or?=
 =?utf-8?B?eGVpaTZ5REZUeXRtTnBHREdya3MvajdBbThHN3FLOHlDV2hjbW1kTUUydTJa?=
 =?utf-8?B?bEd3TzhqeDBlVGgvZXJKYWpKaW1PWVZxN3orOUxzK05JNnBDQ3pERjFpa3V4?=
 =?utf-8?B?USt4YzRUNk5Od29CQjJpYWsyZEI3ZUd0TXdlcW1SYWFNV2wyZ0JvVks2TjZo?=
 =?utf-8?B?K3AvdjhDUUJQd1IyUUpHZ2lvT29VSW12MkJrWGZlZGNsa0c3R2JwOHVHVXl1?=
 =?utf-8?B?TkxTaGdJQ0w1NzYzWGx1NGZ3ZUhQYUhPVVZkR3FaQ0RHcFpuK3plRWxNTnpi?=
 =?utf-8?B?TkdYdFRqVkJHc2Robkx2eXk1NDRpZW1MNXd0WnViZkg3V2RWMjB6ZW5ZZzY5?=
 =?utf-8?B?YXdnZ20zMHlQbTQvb1liU01BMnZ1aHFjbzhHL2c5WFNhTGNjNmZkQ1k5VjFY?=
 =?utf-8?B?TUFFL0ZhckZtYkRBVmpoOWpCZHJHUWxsNjdzazVQRFNEaUZWakJsY0szTGlx?=
 =?utf-8?B?MlBRbGMveThncDBxM3R0WUN4enQ5SDMzcER4UGo5U3FWejdrMkhwcGJid2RY?=
 =?utf-8?B?bjEyOVB3d3UvZEhNTTNjdmtCS1ZNS0F2Mi9KVG9Jcy9NZ054SGVBVnMyNnBi?=
 =?utf-8?B?VWhqM1ZjUFJhQTVDYzEySDlSdE9QR3NMK3hwOXJMOERUeFFrN3UwczhUZ0E0?=
 =?utf-8?B?WVpLZ1NYTFFvUlRoUjNHNXVSTzhLZHVEVkMrampRMHlOcS9NcFQxMDM4WndI?=
 =?utf-8?B?UzYyUkt0dytZS1lDY054T3k2Rm9ROUo2b1hYV0VVV0FPcERBcnUzazB4VVFP?=
 =?utf-8?B?S3JFcUQzQWJ3UXY1RStyckdRRkNjQ05NOE8wd2pzQStDZ1pLSmNPbTByNVJv?=
 =?utf-8?B?emJVenZaekcvYmtoWGF5dHVoRkZtTVZWNlEyNWhIdVVHWHdrREY0cm5HRjhY?=
 =?utf-8?B?Z0oyMS9pQUhMMUN2RTM1M0NtQXFpY00vbkd2SmtuZEpmTTg4eUQ0aHBHaEhr?=
 =?utf-8?B?Y1FJWmltTDljbjNzbEF5UFByNHRuNUtLdVlFMXhDeDBhR1hmSzZEZUpJMnE3?=
 =?utf-8?B?dWY5ZVVJcTNrK1AzcWl6MXJlNndadlBmZWhKdHNKcDk2L25oc1pWTDlwK01Y?=
 =?utf-8?B?RnZKaG1uK0tuMGhwSWxhOEpmR09oWVc4WjVNcGl6VzZaZHVhVEV4MEJERkJB?=
 =?utf-8?B?Lzk1MXNRRW5TVDR3TU9WajNwc2lyekxPcVp4MGlqMWpsTG5Qb3U5WkJSRVRY?=
 =?utf-8?B?UklRQ1pKOTVDaExXNTZVR1lBTXRzWG5MaktJVVZpdTUwZ3B5Qlg2WEU0ZGM2?=
 =?utf-8?B?UmRSeEtFVEZRdGN0OGJ4SzZzUnFhdUt6Y1JTRUs5RzlTdHRSOXlSUU1NU1gr?=
 =?utf-8?B?WFBGSno2WVM0NjIwdW9teStOblRXdzVMSjhaUlYyWGYrWGJOdCt5WklRVGdr?=
 =?utf-8?B?K2orNG5FZXB5QW53WDhXNk1jS3VlUXVZTFdwNVFZeEFRVVZISll2TFRTNlF6?=
 =?utf-8?B?RXA3SGxqdDFkK0dMT2FyelRuc1RIUXNNUXp5YzREbUdsWVl1akJhN1R1SGFU?=
 =?utf-8?B?YVBGcVMrTldrMTVtSkVPcWVFVE9QREVUdWEwSGF1c3ROMVltWFE4MHZ5c01x?=
 =?utf-8?B?VmtkZVpSWE9RNG1DQmp2T0JaUlJ3YkJrZ2czUGF0ZmdCOFFML0l5SjBkb25w?=
 =?utf-8?B?TlcxQk1qMkJ3amJORXF1S3BBTlh5QWxwQkNOOUdQRVVXUHZXSjNFZmxXakhC?=
 =?utf-8?B?Z3ZTUS9JNEY4K2NIVnRLanBmRndsU0M1dDFQS2lJRHZuVFhTN0tsdz09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <15CD6BE8F6DC6841B5889C933D75C996@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f57054e8-b5fa-4b13-7fca-08df3bdfe1f1
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Nov 2026 08:28:06.3295
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: v3rClMEYH+DlJHZkkhJRvDhK+cnd6D8hWSOJZknoeC2VjqP0phd+cXInrwFX2FZ0mMEOs9PmJ70xeyHmBQPBmQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR03MB10167
X-purgate-ID: tlsNG-4011c0/1793953689-589C9CFC-CCF8C0AA/0/0
X-purgate-type: clean
X-purgate-size: 3420

T24gMTAvMjgvMjYgMzo0OSBQTSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDE1LjEwLjIwMjYg
MTY6MDgsIE15a3l0YSBQb3R1cmFpIHdyb3RlOg0KDQogPj4gLS0tIGEveGVuL2RyaXZlcnMvdnBj
aS9NYWtlZmlsZQ0KID4+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUNCiA+PiBAQCAt
MSwzICsxLDQgQEANCiA+PiAgb2JqLXkgKz0gY2FwLm8NCiA+PiArb2JqLXkgKz0gc3Jpb3Yubw0K
ID4+ICBvYmoteSArPSB2cGNpLm8gaGVhZGVyLm8gcmViYXIubw0KID4+ICBvYmotJChDT05GSUdf
SEFTX1BDSV9NU0kpICs9IG1zaS5vIG1zaXgubw0KID4NCiA+IFdoZW4gSSBhZGRlZCBjYXAubyBv
biBhIHNlcGFyYXRlIGxpbmUsIHRoZSBpbnRlbnRpb24gd2FzIHRoYXQgbmV3IGZpbGVzIHdvdWxk
DQogPiBmb2xsb3cgc3VpdGUsIGluY2x1ZGluZyB0aGUgcmVzcGVjdGluZyBvZiBzb3J0aW5nLiBJ
bW8gc3Jpb3YubyB3YW50cyB0byBnbw0KID4gYWZ0ZXIgbXNpeyx4fS5vLiBTZWVpbmcgaG93IHRo
ZSBsYXR0ZXIgYXJlIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgLSB3b3VsZG4ndA0KID4gU1ItSU9W
IGFsc28gd2FudCB0byBoYXZlIGEgSEFTX1NSSU9WIGNvbnRyb2w/DQoNCkkgd2lsbCBmaXggdGhl
IHNvcnRpbmcsIGJ1dCBJIHRoaW5rIGd1YXJkaW5nIGV2ZXJ5IFBDSSBjYXAgdW5kZXIgYSBjb25m
aWcgb3B0aW9uIHNlZW1zIA0KbGlrZSBhbiBvdmVya2lsbCB0byBtZS4gTVNJL1ggYmVpbmcgYW4g
ZXhjZXB0aW9uIGJlY2F1c2UgaXQgZGVwZW5kcyBoZWF2aWx5IG9uIHBsYXRmb3JtIA0Kc3VwcG9y
dCAoaGF2aW5nIGEgd29ya2luZyBJVFMgb24gQXJtIGF0IGxlYXN0KS4NCg0KPj4gKyAgICBBU1NF
UlQocndfaXNfbG9ja2VkKCZkLT5wY2lfbG9jaykpOw0KPj4gKw0KPj4gKyAgICBmb3JfZWFjaF9w
ZGV2ICggZCwgcGRldiApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIGNvbnN0IHN0cnVjdCB2cGNp
X3NyaW92ICpzcmlvdiA9IHBkZXYtPnZwY2kgPyBwZGV2LT52cGNpLT5zcmlvdiA6IE5VTEw7DQo+
PiArICAgICAgICB1bnNpZ25lZCBpbnQgaTsNCj4+ICsNCj4+ICsgICAgICAgIGlmICggIXNyaW92
IHx8ICFzcmlvdi0+dmZzX3JlYWR5IHx8IE5PVygpIDwgc3Jpb3YtPnZmc19yZWFkeSApDQo+PiAr
ICAgICAgICAgICAgY29udGludWU7DQo+PiArDQo+PiArICAgICAgICBmb3IgKCBpID0gMDsgaSA8
IHNyaW92LT5udW1fdmZzOyBpKysgKQ0KPj4gKyAgICAgICAgICAgIGlmICggdmZfc2JkZihwZGV2
LCBpKS5zYmRmID09IHNiZGYuc2JkZiApDQo+PiArICAgICAgICAgICAgICAgIHJldHVybiBwZGV2
Ow0KPj4gKyAgICB9DQo+IA0KPiBUaGlzIGxvb3AgY2FuIGVhc2lseSBoYXZlIGh1bmRyZWRzIG9m
IGl0ZXJhdGlvbnMsIHdoZW4gdGhlIG51bWJlciBvZiBTUi1JT1YNCj4gUEZzIGluIGEgc3lzdGVt
IGlzIGxpa2VseSByZWxhdGl2ZWx5IHNtYWxsLiBJIHdvbmRlciB3aGV0aGVyIHRoZXJlIHNob3Vs
ZG4ndA0KPiBiZSBhIHNlcGFyYXRlIGxpc3Qgb2YgIlBERVZzIHdpdGggVkZzIHVuZGVyIGNvbnN0
cnVjdGlvbiIuDQo+IA0KDQpJdCBjYW4gdGFrZSBhIGRlY2VudCBudW1iZXIgb2YgaXRlcmF0aW9u
cywgYnV0IGl0IG9ubHkgcnVucyB3aGVuIHRoZXJlIGlzICBhIFZGDQpzdGlsbCB3YWl0aW5nIHRv
IGJlIGFkZGVkLCBzbyBpdCBpcyBvbmNlIHBlciBWRiBFbmFibGUgYW5kIG5ldmVyIG9uIGEgbm9y
bWFsDQp2UENJIGFjY2Vzcy4gQW5kIGV2ZW4gYSBmZXcgaHVuZHJlZCBpdGVyYXRpb25zIG9mIGEg
bG9vcCBsaWtlIHRoaXMgaXMgbm90aGluZw0KbmV4dCB0byB0aGUgcGNpX2FkZF9kZXZpY2UoKSB0
aGF0IHNhbWUgYWNjZXNzIHBlcmZvcm1zLiBJIGRvbid0IHNlZSBhIHJlYXNvbiB0bw0KaW50cm9k
dWNlIHRoZSBjb21wbGV4aXR5IG9mIGFub3RoZXIgbGlzdCBmb3IgdGhhdC4NCg0KPj4gK3N0YXRp
YyBpbnQgY2ZfY2hlY2sgaW5pdF9zcmlvdihzdHJ1Y3QgcGNpX2RldiAqcGRldikNCj4+ICt7DQo+
PiArICAgIHVuc2lnbmVkIGludCBwb3M7DQo+PiArDQo+PiArICAgIGlmICggcGRldi0+aW5mby5p
c192aXJ0Zm4gKQ0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+IA0KPiBDYW4gdGhpcyBo
YXBwZW4/IEkuZS4gZG9lc24ndCB0aGlzIHdhbnQgdG8gYmUgYW4gYXNzZXJ0aW9uLCBtdWNoIGxp
a2UgLi4uDQo+IA0KPj4gKyAgICBwb3MgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShwZGV2LCBQ
Q0lfRVhUX0NBUF9JRF9TUklPVik7DQo+PiArDQo+PiArICAgIEFTU0VSVChwb3MpOw0KPiANCj4g
Li4uIHRoaXMgb25lPw0KPiANCg0KSSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gbGVhdmUgaXQgdG8g
aGF2ZSBzb21lIHByb3RlY3Rpb24gZm9yIG1hbGljaW91cy9mYXVsdHkNCmRldmljZXMgdGhhdCBo
YXZlIFZGcyByZXBvcnQgU1ItSU9WIGNhcHMgdGhlbXNlbHZlcy4gTm90IHN1cmUgaWYgc3VjaCBk
ZXZpY2VzDQpleGlzdCBidXQgc3RpbGwgdGhlIGNoZWNrIGNvc3RzIG5vdGhpbmcu


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 09:09:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 09:09:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476378.1682506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPFwK-0002sk-St; Fri, 06 Nov 2026 09:08:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476378.1682506; Fri, 06 Nov 2026 09:08:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPFwK-0002sd-PR; Fri, 06 Nov 2026 09:08:52 +0000
Received: by outflank-mailman (input) for mailman id 1476378;
 Fri, 06 Nov 2026 09:08:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <berrange@redhat.com>) id 1xPFwJ-0002sX-JZ
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:08:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPFwI-002xOj-PJ
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:08:50 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <berrange@redhat.com>)
 id 6aed9922-8faa-0a2a0a5109dd-0a2a450be75c-0
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:08:50 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <berrange@redhat.com>)
 id 6aed991e-b7e8-0a2a450b0019-aa0a817cb6ef-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:08:47 +0100
Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-651-yzAb6lIKNqGlxw4drA2uog-1; Fri,
 06 Nov 2026 04:08:42 -0500
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id B55551956057; Fri,  6 Nov 2026 09:08:38 +0000 (UTC)
Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com
 [10.2.32.116])
 by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id 42E1B1956047; Fri,  6 Nov 2026 09:08:31 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793956126;
	h=from:from:reply-to:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=BrRMLM1AFmYi/bs5etB4HJkcjnYDxynCvbguHNw2R60=;
	b=N0af8QdtjFsR0m10wmIj7KILbvw+VsMQn/lBsGsRYqPeHN4/pXuLi9wIhMITqO8wMkhTBw
	F/UrroSqV9rFy9JmZ2GdTe7Apnedvg+DYHgwnlHiXDlmYk+02pAc8owc4uC0SM5WbYclve
	3GEo2b5iYxyFTmBL7K9iMMax8yazTms=
X-MC-Unique: yzAb6lIKNqGlxw4drA2uog-1
X-Mimecast-MFC-AGG-ID: yzAb6lIKNqGlxw4drA2uog_1793956120
Date: Fri, 6 Nov 2026 09:08:28 +0000
From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: Junjie Cao <junjie.cao@linux.dev>,
	"kraxel@redhat.com" <kraxel@redhat.com>,
	"marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>,
	"clg@kaod.org" <clg@kaod.org>,
	"pierrick.bouvier@oss.qualcomm.com" <pierrick.bouvier@oss.qualcomm.com>,
	"peter.maydell@linaro.org" <peter.maydell@linaro.org>,
	Kane Chen <kane_chen@aspeedtech.com>,
	"philmd@oss.qualcomm.com" <philmd@oss.qualcomm.com>,
	"kfting@nuvoton.com" <kfting@nuvoton.com>,
	"wuhaotsh@google.com" <wuhaotsh@google.com>,
	"zhao1.liu@intel.com" <zhao1.liu@intel.com>,
	"richard.henderson@linaro.org" <richard.henderson@linaro.org>,
	"deller@gmx.de" <deller@gmx.de>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>,
	"anthony@xenproject.org" <anthony@xenproject.org>,
	"edgar.iglesias@gmail.com" <edgar.iglesias@gmail.com>,
	Troy Lee <troy_lee@aspeedtech.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"qemu-arm@nongnu.org" <qemu-arm@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
 leave it off
Message-ID: <au2ZDOY7MGdY74L9@redhat.com>
Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-3-jamin_lin@aspeedtech.com>
 <20261103142327.1348025-1-junjie.cao@linux.dev>
 <SEZPR06MB73626D50E685F83DFB006D8DFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
 <SEZPR06MB7362D089282550D7585C16DEFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
MIME-Version: 1.0
In-Reply-To: <SEZPR06MB7362D089282550D7585C16DEFC762@SEZPR06MB7362.apcprd06.prod.outlook.com>
User-Agent: Mutt/2.4.3 (2026-10-09)
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Mimecast-MFC-PROC-ID: MM6er1YQ7_R-qwjwK9SVIqWDbZ-kCIg7VI2xsgBx9zM_1793956120
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1793956127-A92CC9EA-093DEFF1/35/111497
X-purgate-type: clean
X-purgate-size: 3236

On Fri, Nov 06, 2026 at 03:45:58AM +0000, Jamin Lin wrote:
> > Subject: RE: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and
> > leave it off
> > 
> > > Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub
> > > property and leave it off
> > >
> > > Hi Jamin,
> > >
> > > On Mon, Nov 02, 2026 at 09:22:05AM +0000, Jamin Lin wrote:
> > > > Add auto-hub and leave it off. hw_compat_11_1 turns it on, so an
> > > > older machine type keeps the hub it has today and a guest saved by
> > > > an older QEMU still loads.
> > >
> > > Reran the migration check from v7: with pc-q35-11.1, a guest saved
> > > without the series loads on v8 with the hub in place, for qemu-xhci
> > > with four HID devices and for q35 -usb with six.
> > >
> > > But this missed the 11.2 soft freeze, so in 12.0 pc-q35-11.2 is an old
> > > machine type too, and hw_compat_11_1 (my suggestion on v7) doesn't
> > > cover it. Saved with pc-q35-11.2 on master, both cases fail on v8:
> > >
> > >   Unknown section or instance '0000:00:01.0/4/usb-hub' 0
> > >   Unknown section or instance '0000:00:1d.7/6/usb-hub' 0
> > >
> > > The entries from 02-05 want hw_compat_11_2 once the 12.0 machine types
> > > are in.
> > >
> > > Junjie
> > 
> > Hi Junjie, Marc-André, and Gerd,
> > 
> > Due to the QEMU code freeze and the planned 11.2 release in December,
> 
> 
> I am not sure about the correct release version. I expect it to be v11.2.
> If the version is wrong, please correct me.

Yes, the forthcoming release is 11.2, the version then ticks over to 12.0
for the first release of 2027.

> > disabling automatic hub creation while keeping migration compatibility with
> > older QEMU versions requires adding the property to hw_compat_11_2.
> > We need to wait until after the QEMU 11.2 release for the maintainers to add
> > hw_compat_11_2 to each machine type.
> > 
> > The USB redirection server is my original upstream goal, and I think this task is
> > independent of the automatic hub task.
> > So, I want to split the auto-hub changes into a separate prerequisite patch
> > series and send v9 after the QEMU 11.2 release.
> > 
> > The USB redirection server common protocol series still needs rework on the
> > device announcement and control transfer patches.
> > I will send v9 next week and mention that it requires the patch series that
> > disables automatic hub creation.
> > 
> > This way, we can continue testing and reviewing the USB redirection server
> > common protocol this month.(November)
> > 
> > "If you agree, I will send v9 next week. Otherwise, I will wait until after the
> > QEMU 11.2 release and then resend the full patch series as v9."

Don't delay sending new versions of your series because of the release
freeze.

Just put a "TODO: change to hw_compat_11_2 before merge" in the commit
message to call out the bit that you know needs changing before this
can be finally ready to merge.

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 09:17:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 09:17:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476388.1682514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPG51-0004f0-JY; Fri, 06 Nov 2026 09:17:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476388.1682514; Fri, 06 Nov 2026 09:17:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPG51-0004et-Gn; Fri, 06 Nov 2026 09:17:51 +0000
Received: by outflank-mailman (input) for mailman id 1476388;
 Fri, 06 Nov 2026 09:17:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Roger.Pau@amd.com>) id 1xPG4z-0004en-FZ
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:17:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPG4y-00DFr6-IL
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:17:48 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Roger.Pau@amd.com>)
 id 6aed9b38-e002-0a2a0a5209dd-0a2a4506dcaa-18
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:17:47 +0100
Received: from [40.107.208.8]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Roger.Pau@amd.com>)
 id 6aed9b39-195a-0a2a45060019-286bd00848d4-4
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:17:47 +0100
Received: from SAWPR12MB999315.namprd12.prod.outlook.com
 (2603:10b6:806:560::13) by FT1PR12MB183566.namprd12.prod.outlook.com
 (2603:10b6:170:2b::5) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 09:17:44 +0000
Received: from SAWPR12MB999315.namprd12.prod.outlook.com
 ([fe80::5382:815f:5b37:73b9]) by SAWPR12MB999315.namprd12.prod.outlook.com
 ([fe80::5382:815f:5b37:73b9%6]) with mapi id 15.21.0592.009; Fri, 6 Nov 2026
 09:17:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=NN8z/RXW6wPsu+otmAWxVjlC/ft+kuG8RBq3GDxeaw9Vhg1i3C8ikMLhVSoh1BAiq5NMB6HLNqLiX/EO7nEpE8NhCpIpcpLGnEqhCvw6v9xc3kuPtiLI//US67T4jJCP9/GqBbuUmQwf77WGvR+TKJjA3Uu1I8mLIO2DvswguGyLIPbWP+EMF8EMXO+BoD9BtYU2CwOItz5cGgKuJTUT0V9xkmr4XoPXrCGiaIJAXzkGN82puso7H2oVp8pSuPO+3C+QNBzfSctMznflpu8rkoNySsrAuKELvFytLneKDtzsvASdIFndWV/Pp4w/bR/CPc/JMfxrrCUMG2XL7TWKaw==
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=w7vr8U9XAP4KsuO2PvdfHTPTfVxbMCpKtocrR+VP+Hk=;
 b=vygOBN1ixwzPQLSYvRJEjp4zuR6Kgq0OQvgZFjzrqZiLWnw5t/u1Hl974hkTVH0gfG74k8eBN7B2rY+vQkLghHO40FYARAKa6koqHZ1UYbhVsSADR6ovaTarPAOsxt4ORPShc+CkO8E7iGzWCD35oyiGRvPTFJ7FwCKrAdZm9jry01SSLHyxVhYbm2Wr9LpSWMl9637Kk+IM8LA4ZO46hUsKWpEEzfy+Khlx16muDpFuk2zbC7vNc5pbowPg3A925YKVmP/NOgISj8vb1z43t0AMqD4Dc5VSWPJRSkGXM1Jya6XJSM8kTq2uTlCjCDUVnIzHvUSm+th7WAI6ST/DHg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
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=w7vr8U9XAP4KsuO2PvdfHTPTfVxbMCpKtocrR+VP+Hk=;
 b=GkcgkT+gEo1s2wY85FKZ7HVcDG8G+3J4D3M2DDcTWB4anW2g4S9BaOo2KEFCafZOwML217jZmEJuRr8FHnxxW+QsP7RwrV9Za4h48VxvEiRDizxteMYTFvadB63tfKezqNwCCgmDTzy7CZ1tTFxaFaBvOzV1fEbmMpW6NcvxBz0=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Fri, 6 Nov 2026 10:17:41 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@amd.com>
To: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Penny Zheng <penny.zheng@amd.com>
Subject: Re: [PATCH] libxl: wait for QEMU exit before restarting a domain
Message-ID: <au2bNZiQmElHeEhu@Mac.lan>
References: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20261104064645.1171477-1-Zhao.Jiaqing@amd.com>
X-ClientProxiedBy: ZR0P278CA0118.CHEP278.PROD.OUTLOOK.COM
 (2603:10a6:910:20::15) To SAWPR12MB999315.namprd12.prod.outlook.com
 (2603:10b6:806:560::13)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SAWPR12MB999315:EE_|FT1PR12MB183566:EE_
X-MS-Office365-Filtering-Correlation-Id: 1e08828d-d132-4bd6-14dc-08df3be6d0a8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|23010399003|1800799024|18002099003|22082099003|6133799003|10067099003|11063799006|261102124527099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|261021123027099003|261021121427099003|261022105027099003|261022075727099003|56012099006|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	ULf+Pxo6pWGCiyWM3lyQJKXFFJMjbajzrVOT4wEyuRKSrgfNjcmgjbHCsRXucDk8ci6ULmhrd9T01irdUvYkLp32pLuwWsZMv0C8k+LRhZZX5ERs+mD6QinN9qTVVHmJuelcKpxnaXd8Dwy5w8oHvgnUcE9r051pxBQ+l9zCuqhzHqPNyw9WesQeNh9ySljBQDn/tvoT1+J9LjTh8aqMezqRbil9KMbmE2eLkWodksfyWhwDgLmszvhcES4nTh0aYUYzFJbGIwY5qbrapvIcD1kQTzy6kGcnMHiVmEygz2rUl66SvmndzwnsKUonkL6d1WCUhJPa4z6vTQ6019E9eBXDu9pkVfW34NzgBChEO3S8qOPEfW3HPAv56U5OdY2p6wkK15ZYs09UEnC9q5dDPxN2JaDo3TGW7thrTmiKNjnwG93vjxszL2dFORwMF42TdhW4Uh/kapWPqOPIdhmcU1tP/fA6nUU8awSKUmt3+UYjqBdviDv6BwCDBbLY6PPNgTcspcR4zgL0Y2r7c4oM8mWNlugrc9FQVfD2638DBQzhuueyKAdmYuosP0sZYO2kAdFeCgFsSM62ztVb2DPCUyuMJUNauKJF48kKpy48W2p5UkcbOIT3zbWRAAngK+Vnanmz2Zc4trc7aGn79GudQRCmYAJgYNR4Wc6mKd8QGrU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SAWPR12MB999315.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(18002099003)(22082099003)(6133799003)(10067099003)(11063799006)(261102124527099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(261021123027099003)(261021121427099003)(261022105027099003)(261022075727099003)(56012099006)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Q29WMW5MeXl4YzFwYnk5VzNxYWFjTU5nSnF2am1XRm9YbkhUWlF3Rkh3T2dX?=
 =?utf-8?B?YlJQbGpNVG5qN2hhUitKM1ZBNGs0aEhkalpOQVVWVGZRdDNtcEdQRGJSNkND?=
 =?utf-8?B?OFk1Umt2WXVrU2YydSt3VzJERUIzK0JBcWs3WTcvTitLRURyc3h1WkpCTjhw?=
 =?utf-8?B?MUdRd1hONWxHZHB4Y2F3WWRLSitrV3dTMVlEVXkrVWR0ZlIydXFkNG5LZW16?=
 =?utf-8?B?aXM2eDZQR1ZUcGJQczJEdk5jU25aakV1RXlIMmNXNmYzUjhsWGp5K2dERzBr?=
 =?utf-8?B?aUVxaW92d1dJRkdQd05tWm1iVkpoZ2czME1NR1FWdGJJL29FNU9Bc1YrcWp2?=
 =?utf-8?B?NHpqelhUejl1VTJxbDZTUFdma0xtUDhDOFJLMlJCQ2FycVozN21PY25xQllY?=
 =?utf-8?B?UUJVUGswWFFxQnlmRFJjbjRhZ3hhNm1vWG05bC81ZmVSNlFvSERlZ2tIczVE?=
 =?utf-8?B?K09GVm02ZHdydXVsdXNjUHNscUpmcEdZRnZIVGgwaGNZclFIUVAyNWhuZFlQ?=
 =?utf-8?B?Qm1hc2FBTS9CRG9JS0Q1bFV3S09HOWpNbGpZa3EwcC9KUDdvUG5nVnQxUVpF?=
 =?utf-8?B?aHZlWFZDTXpocjFNcmVXWmZBeUdhOFdCMWd1N2xub2tpVGYwTmVvMWFZUVNu?=
 =?utf-8?B?bldGZlUxR0xieUF5Ym9OSXZwNkxMNWZpTjltQ2JEQmxmQnI2UjliZzI1cS9z?=
 =?utf-8?B?S3FXNFFhUHY0RTgvWXcyY0hhTGdia0RxVWY4Q2N0cVNvRmJOSDJSSnNLTEdu?=
 =?utf-8?B?RWFnTHVnMm5JeUhhUlVDR1Y5dDUrNjBCTTJWSVpraEZCVVdCL1pLMDNqdHZO?=
 =?utf-8?B?L1VrK2toTFY1Z29Ob25jZFJhcEkzcVgrenZxMWp3a0ZoZWdieDI0TTNtRTlR?=
 =?utf-8?B?QThnMVFLUXo5cFNJdWRjeFRHbWJpbWh6b3VZS2FVeU1QK1NVRmN0cU8ra3Nw?=
 =?utf-8?B?a1hzRDNEQ0RvTEpLcDNKNFB6amZUbjliYXpONVNyd0RIYVI5ODN3aS9mY1Nr?=
 =?utf-8?B?ekw4MDcxK0pPT0FwcjQwT09ldGxwbnNVdlRtb0F3aVd3Y3ZqMk1HajNzVlVh?=
 =?utf-8?B?QkhJd1dscUxyU0RVUUg2M0ZLRExlc2RHelQ3WC9wUHJtOGV3ZFZ5eHAzWkRZ?=
 =?utf-8?B?NjZlVnJReWEyTTVBOFVIK0NaS3l3MnhYWDhZeEZsOWg2RGlnZ0tqZGlFSk9v?=
 =?utf-8?B?TUFiZlR5RG43aU1HelBDMFJVQTdHZU8vSUdrdUxQNVk1bXpiWXlrMENwNXRq?=
 =?utf-8?B?eCtKODY2TGZqQ3l5bWU5d0RVT2tOVjZhbnZHREUwNmp6aU9jL0I1WC9OaC9z?=
 =?utf-8?B?WnE2NktidDB1c1Q4d1FYS0Y4elBsOGpmaGxsZXRDMDk0TGM4cUtIWnNFS1hk?=
 =?utf-8?B?MXE5N3d5UW4vRXhmSjlsTzlYSUp5dUhuV1pGQlFHK3B2eHJBR2JjcThPZkto?=
 =?utf-8?B?aWxKU1NqU2JRWUpNRG1aTXg0WHNIYWZIKzE1cE5MLzlSZGt2N2RUV1o2RHFS?=
 =?utf-8?B?SkZaUy9lL3JYcWFaR0tVckE5RUVQTTBCZk5RRytNVU9Pa2NacHdxano4a1Av?=
 =?utf-8?B?N0xnSitEem5GTDA0YkQwQ2QwWFIzekFnbWtUR0lWdWFWU0pjMnhZbVpnNVZG?=
 =?utf-8?B?SDh1NmtyUXpxTDdMYUN5UEsrUXA2L29vT2xnRDBPOUlWM0MvWlp5VGM5cmNO?=
 =?utf-8?B?VTlkaFdheEVYVmtmb0o0WVU2Q2ZvQzBpODdxeUZxU05GcnNLazJVTjd3Ni9m?=
 =?utf-8?B?aGhxQU53djNDV01QVnlJTjEralUreEorVGJ3WmNlcHJJNWNhaUxpa2U3bzI1?=
 =?utf-8?B?WU1vMU5IalM0NTYvUExFQmxEbEZlb3JhbFViU010c2t1Y1dhUEoxSlZQV1Z6?=
 =?utf-8?B?L2lpYU1ncTZZckdrU0dBMjAyL09ySjdNKzhFMEdBeE81RWZaVjhMaTBlQ1Nk?=
 =?utf-8?B?M3lhSUI0bWFPQmsvM2dmMkpZRHBSbEU0NmN0U3lvSC91NE0zbHJFU0trSGN3?=
 =?utf-8?B?NEJYblFQQ2MrM0RhS0ZaQ21sV0pkTVdSeFJIQnNFZlhka0lybkVHaHBXZFRp?=
 =?utf-8?B?VStveWozNzZtNkt5YlIvN3Rqbm1MTkMrNlpObTk1TGw3VHNEQzhnSDJrUkd5?=
 =?utf-8?B?c3VobSt0a3FUdWNlR0s2aVBtS3NvZTlKWkZKMG1vYWordkZJMEVRM2JLMGI1?=
 =?utf-8?B?Y1hXeHJJRzJLRjlhc0RUVVR6QWxCdURIQUFzbjJGSWZIVDZWc1hkSVhaZmNp?=
 =?utf-8?B?d2JGOHA2eTljMHNZVjhaeTlrUnE3WVhBZ2xqKzhkUkh3ajFXazl1cDJVd1hj?=
 =?utf-8?B?TTY5ak5oY0tXVHptQ0JzQXoyWDNqbWVDZHEzUTRWQy82ZDNkSFl0Zz09?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1e08828d-d132-4bd6-14dc-08df3be6d0a8
X-MS-Exchange-CrossTenant-AuthSource: SAWPR12MB999315.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 09:17:44.0334
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: rGBRRpq0CDhCXYOqW5Gq/tOfVuc8MWqtC+F9wcYEBrRFRZ9YcvhF/AP3g8abudk+AWymLQBQIx5H163no9WbrA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FT1PR12MB183566
X-purgate-ID: tlsNG-16d1c6/1793956667-F627077B-5AACCF9F/0/0
X-purgate-type: clean
X-purgate-size: 4632

On Wed, Nov 04, 2026 at 02:46:28PM +0800, Jiaqing Zhao wrote:
> The PID-based device model destruction path returns immediately after
> sending SIGHUP, before QEMU has necessarily exited. When an HVM guest
> reboots with VNC enabled, the new QEMU process may fail to bind the VNC
> port because the old process still holds it.
> 
> Wait for QEMU to exit in a child process after singaling it for at most
> 60 seconds. If waiting fails or times out, log the error and retain the
> existing domain destruction behaviour.
> 
> Signed-off-by: Jiaqing Zhao <Zhao.Jiaqing@amd.com>
> ---
> Cc: Anthony PERARD <anthony.perard@vates.tech>
> Cc: Juergen Gross <jgross@suse.com>
> Cc: Roger Pau Monné <roger@xenproject.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Penny Zheng <penny.zheng@amd.com>
> ---
>  tools/libs/light/libxl_aoutils.c  |  8 ++++--
>  tools/libs/light/libxl_dm.c       | 45 ++++++++++++++++++++++++++-----
>  tools/libs/light/libxl_domain.c   |  2 +-
>  tools/libs/light/libxl_internal.h |  3 ++-
>  4 files changed, 48 insertions(+), 10 deletions(-)
> 
> diff --git a/tools/libs/light/libxl_aoutils.c b/tools/libs/light/libxl_aoutils.c
> index c2d42e7cac..977a2705a8 100644
> --- a/tools/libs/light/libxl_aoutils.c
> +++ b/tools/libs/light/libxl_aoutils.c
> @@ -628,10 +628,11 @@ void libxl__kill(libxl__gc *gc, pid_t pid, int sig, const char *what)
>  
>  /* Generic function to signal (HUP) a pid stored in xenstore */
>  int libxl__kill_xs_path(libxl__gc *gc, const char *xs_path_pid,
> -                        const char *what)
> +                        const char *what, pid_t *pid_r)
>  {
>      const char *xs_pid;
> -    int ret, pid;
> +    int ret;
> +    pid_t pid;
>  
>      ret = libxl__xs_read_checked(gc, XBT_NULL, xs_path_pid, &xs_pid);
>      if (ret || !xs_pid) {
> @@ -640,6 +641,9 @@ int libxl__kill_xs_path(libxl__gc *gc, const char *xs_path_pid,
>          goto out;
>      }
>      pid = atoi(xs_pid);
> +    if (pid_r) {
> +        *pid_r = pid;
> +    }
>  
>      ret = kill(pid, SIGHUP);
>      if (ret < 0 && errno == ESRCH) {
> diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
> index 511ec76a65..ac1db9fe6a 100644
> --- a/tools/libs/light/libxl_dm.c
> +++ b/tools/libs/light/libxl_dm.c
> @@ -2859,7 +2859,7 @@ static void device_model_probe_spawn_outcome(libxl__egc *egc,
>  
>      /* Ensure our QEMU command line probe is killed. */
>      rc = libxl__kill_xs_path(gc, dmss->spawn.pidpath,
> -                             "qemu command-line probe");
> +                             "qemu command-line probe", NULL);
>      if (rc) {
>          LOGD(WARN, dmss->guest_domid,
>               "Killing qemu command-line probe pid from path %s",
> @@ -3420,9 +3420,10 @@ out:
>  }
>  
>  /* Generic function to signal a Qemu instance to exit */
> -static int kill_device_model(libxl__gc *gc, const char *xs_path_pid)
> +static int kill_device_model(libxl__gc *gc, const char *xs_path_pid,
> +                             pid_t *pid_r)
>  {
> -    return libxl__kill_xs_path(gc, xs_path_pid, "Device Model");
> +    return libxl__kill_xs_path(gc, xs_path_pid, "Device Model", pid_r);
>  }
>  
>  /* Helper to destroy a Qdisk backend */
> @@ -3433,7 +3434,7 @@ int libxl__destroy_qemu_xenpv_backend(libxl__gc *gc, uint32_t domid)
>  
>      pid_path = GCSPRINTF("libxl/%u/qdisk-backend-pid", domid);
>  
> -    rc = kill_device_model(gc, pid_path);
> +    rc = kill_device_model(gc, pid_path, NULL);
>      if (rc)
>          goto out;
>  
> @@ -3454,6 +3455,21 @@ static void kill_device_model_uid_cb(libxl__egc *egc,
>                                       libxl__ev_child *destroyer,
>                                       pid_t pid, int status);
>  
> +/* Run in a child so waiting for QEMU does not block the libxl event loop. */
> +static int wait_device_model_pid_child(libxl__gc *gc, uint32_t domid, pid_t pid)
> +{
> +    unsigned int i;
> +
> +    for (i = 0; i < LIBXL_DEVICE_MODEL_STOP_TIMEOUT * 10; i++) {
> +        if (kill(pid, 0) && errno == ESRCH)

Isn't this theoretically racy?  How can you guarantee the PID hasn't
been reused, and thus you end up killing an unexpected process on
further loops?

I see you hook this up into the events interface by spawning a process
that does the spinning, have you looked whether it's possible to get
PID state changes as notification on a file descriptor?  That would be
more natural to hook into the events interface, and would avoid the
race mentioned above AFAICT.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 09:52:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 09:52:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476408.1682523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPGcF-0003fg-0c; Fri, 06 Nov 2026 09:52:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476408.1682523; Fri, 06 Nov 2026 09:52:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPGcE-0003fZ-U4; Fri, 06 Nov 2026 09:52:10 +0000
Received: by outflank-mailman (input) for mailman id 1476408;
 Fri, 06 Nov 2026 09:52:09 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPGcC-0003fQ-U4
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 09:52:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPGcC-001E81-30
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:52:08 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeda346-8faa-0a2a0a5109dd-0a2a4504c034-20
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:52:08 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeda347-b57f-0a2a45040019-d1558030d850-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 10:52:07 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so2775315e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 01:52:07 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492d7bcfcbfsm2714744f8f.43.2026.11.06.01.52.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 01:52:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793958727; x=1794563527; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=zj/SuCvTZV4F+ViWavf4AIjO66CXESLhc3puaxUNL9M=;
        b=cMkWm+EYx3KF92qMEyjTzXTJCPOJ4wlRE6fhv8mDspp27fFxTVZUhjVs5KQwQtaaVr
         nUhkX4h9GB1PEzdRSE/7FsYGwoJuJaMGk8zzX6nsU//IV3TxzG5FtYTHjfT8AEgz6U2Z
         O7K1f8Sm7B4iEj2kpxcNAR+4fucylGDk9VH2IoFFPf7Vpn9wPLAXS1t1HYu05x7rhpSM
         Cna/6WxkwL99GOrRdMN0JaoTYkRR+cE2vAN3hLLJQhd0DpvIFlVQOwKHOb2QJTFWxNWa
         3FBuF2BUXhd1KZPDwxG3XsObuzIYdsdTjIWPnjiVPLerx3pO5/X1ExHJMluEcmfn/agy
         uzig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793958727; x=1794563527;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=zj/SuCvTZV4F+ViWavf4AIjO66CXESLhc3puaxUNL9M=;
        b=kpu0mxW0BL6N1w8cg2pquPj+ux+jN0N0KB2bjJwowWsOt/AJF7Pguogmyea7ZufEPw
         tDTolvANaDebZ5LdPkiHCElwGLiNtO88cIsrmN23ppLjBoE+z2xry/nizEfPLd+16vhQ
         LvagA4MCys6PyKcr1DOWs1L/j583bBvk/1MekveYpQcwIB05IVakpeuU22pbrpAjlTKZ
         Xre/YiKkSGvSpuZSED8XZACeA2NXLNQNtb0SV8Ukbqz+WCJQOetERCmKk4bKuRoPCdjM
         I/fU6hMu1m4B8gyHbmsaQ8NpHnrsqJL4NOYDIUrU8MnmBJDpPgOh0co/Cy/5QF1jA4TI
         Pviw==
X-Gm-Message-State: APuU4Z+8136QzRXhASmImdp/lNI1ujdhAp/qLSUo91PlzFfmdJ/C8Zf1
	p43zxfuOXYPOIZZyl3WC7d158goQPT4iGmYisKaZYs2IqVF5DnyA2OLI
X-Gm-Gg: AYBFou0gyTIf/TdlN2jhcvGNLYM1pMnPMiz4BXNlsL6czUkFnXeqVw0f0EFl7w87u7z
	cKKzmQ25ZJmnf0Zg4b8QvYrcXzE4dBm2JGT/TT1rmmtNkRtA/2vAno8LUlmX7N+8pAdbki++R0M
	8FzNyY+vqoYG55HoHcL5clk6FPaXFwskynR4+DIjcTKMSRmvQCr1axMYSsfWw8HnaynWJo3lQJA
	CH5jQZEKZsXXf9pxevXK8AJY6hW2fMCRIpmhgjrnccgCGQEPvUcj/N3R+UJt86+FIvx9sDWrUCS
	VOV7RAOlE6O0nlKzzwDPp0GOueIU6oYBFKMYBfK9erXM1vTmEXuP4iQ51erMyUmBIR4RDBjBuGl
	Bws7ECJb+Yht5wHoBcUhx9E7p0VKf8pThNEfXjtuVR+/elllb71PjiJ3KDzE5vaHrYhsVJjz2Yo
	EkcvsLhj5k6Eif2TjlQZa8SB2dU+MjBnOsakfIpJwYoZOApIUJ+C0j5aT7nA918LqQECkuqHIbN
	R8711g8EfNiLGDGMKh4PlNAuT4mSiugRCD2yGbvvdyEHGaiBarPf3SUyeeyBtvZ7V7krajVRBx2
	8DqMOYCrL2ox7C73eG5TA1CkH6/BC2yB6W6kjLAILlGYn9W+1CuxnrDtyPhNmSw6a3PdtohsoUo
	SvNYYGdmSqtWQopjsBoviBA==
X-Received: by 2002:a05:600c:1552:b0:4b2:3c81:d1 with SMTP id 5b1f17b1804b1-4b6ddee32eemr28179455e9.5.1793958726639;
        Fri, 06 Nov 2026 01:52:06 -0800 (PST)
Message-ID: <83bd8ba2-9053-44ac-a15e-fa6ea52429e2@gmail.com>
Date: Fri, 6 Nov 2026 10:52:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 32/39] xen/riscv: save and clear the old IMSIC VS-file
 on vCPU migration
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <e2cf140c63b1f1cff8e63988f82fff7e2b063c84.1790779209.git.oleksii.kurochko@gmail.com>
 <1793721767.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793721767.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ebf023/1793958727-C3EC6B50-583FD27B/10/73395122804
X-purgate-type: spam
X-purgate-size: 4253



On 11/3/26 5:02 PM, Baptiste Le Duc wrote:
>> When a vCPU migrates to another pCPU, its guest interrupt file has to
>> move as well: the eidelivery, eithreshold and eip/eie state of the old
>> IMSIC VS-file has to be carried over to the newly acquired one.
>>
>> Once all interrupt producers have been retargeted to the new VS-file,
>> so that nothing can reach the old one anymore, read the state of the
>> old one and clear it at the same time. This has to be done on the pCPU
>> owning the old VS-file, as a guest interrupt file is only accessible
>> through vsiselect/vsireg with hstatus.VGEIN selecting it. After that
>> the old VS-file is no longer in use and its guest external interrupt
>> number can be released.
>>
>> The state is saved into struct imsic_mrif. Its eix[] array follows the
>> layout of a memory-resident interrupt file (MRIF) as defined by the AIA
>> specification: pairs of 64-bit interrupt-pending and interrupt-enable
>> doublewords, each pair covering 64 interrupt identities. eithreshold
>> and eidelivery aren't part of an MRIF and are stored next to it as they
>> belong to the interrupt file state too. Using the MRIF layout allows
>> the same structure to hold the interrupt file of a vCPU which doesn't
>> own a guest interrupt file, which is how the AIA specification
>> describes MRIFs being used by a hypervisor.
> 
> I think it's worth mentioning that this MRIF structure could be reused
> for software interrupt files later.

I'm fine with making that explicit. I tried to cover it with "... a vCPU
which doesn't own a guest interrupt file ...", and adding "hardware"
should make it clearer: "... a vCPU which doesn't own a hardware guest
interrupt file ...". I think that covers your suggestion as well, so
I'll add it.

To be honest, I'm a bit unsure how much to say about software interrupt 
files at this point: some earlier commit messages mentioned them, and I 
was asked to drop that, as they are neither introduced nor used yet.
That's why I'd rather keep the wording implicit as above, but if you
still prefer them to be named explicitly, I can add a sentence.

At this point, I'm honestly getting a bit confused about how commit 
messages are supposed to be written.

>> [ ... 172 lines skipped ... ]
>> +static void cf_check imsic_vsfile_local_read_clear(void *data)
>> +{
>> +    unsigned int i;
>> +    const struct imsic_vsfile_data *idata = data;
>> +    struct imsic_mrif *mrif = idata->mrif;
>> +    unsigned long new_hstatus, old_hstatus, old_vsiselect;
>> +
>> +    /*
>> +     * The file is reached by retargeting hstatus.VGEIN, and
>> +     * imsic_vs_csr_swap() alters vsiselect. Both belong to the vCPU running
>> +     * on this pCPU, so restore them before returning.
>> +     */
> You're saving the registers here, not restoring them. 

It was about CSR_HSTATUS, and CSR_VSISELECT which are stored and restored:

+    csr_write(CSR_HSTATUS, old_hstatus);
+    csr_write(CSR_VSISELECT, old_vsiselect);

> I'd use something
> like:
>      /*
>       * vsiselect/vsireg only reach the guest interrupt file selected by
>       * hstatus.VGEIN, so point VGEIN at this file for the access.
>       * hstatus and vsiselect hold the state of the vCPU running on this
>       * pCPU; save them here and restore them before returning.
>       */

I agree that this option is clearer.

Also, as the same switch to a guest interrupt file is done in
three more places (in the prev patches), I'll factor it out into 
imsic_vsfile_select() and imsic_vsfile_deselect(), with your wording as 
the comment on them.

> 
>> +    old_vsiselect = csr_read(CSR_VSISELECT);
>> +    old_hstatus = csr_read(CSR_HSTATUS);
>> +    new_hstatus = old_hstatus & ~HSTATUS_VGEIN;
>> +    new_hstatus |= MASK_INSR(idata->hgei, HSTATUS_VGEIN);
>> +    csr_write(CSR_HSTATUS, new_hstatus);
>> +
>> +    /*
>> +     * No atomic accessors are needed to store the values into the MRIF here,
>> +     * as imsic_vsfile_read_clear() is always called with a pointer to a
>> +     * temporary MRIF on the stack.
>> +     */
> Nit: is this blank line really needed?
> 

No real need. Lets drop it.

Thanks for review!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 10:04:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 10:04:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476424.1682531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPGo9-0006BE-4A; Fri, 06 Nov 2026 10:04:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476424.1682531; Fri, 06 Nov 2026 10:04:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPGo9-0006B7-1M; Fri, 06 Nov 2026 10:04:29 +0000
Received: by outflank-mailman (input) for mailman id 1476424;
 Fri, 06 Nov 2026 10:04:28 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPGo8-00069v-1r
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:04:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPGo7-005q0u-BR
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:04:27 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeda629-2eae-0a2a0a5409dd-0a2a450bad74-10
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:04:27 +0100
Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aeda62b-b7e8-0a2a450b0019-d1558032e0a7-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:04:27 +0100
Received: by mail-wm1-f50.google.com with SMTP id
 5b1f17b1804b1-4a3517554f7so4512325e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 02:04:27 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56e58fcc6sm233062295e9.2.2026.11.06.02.04.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 02:04:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793959467; x=1794564267; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=vJ5sWiy+PAy0zmQRWdgFsDzyUh5xmBcT2U1yAwFWmnM=;
        b=RjFR4x1PUpLuSrjRzvphk/XG4YwyHUBJcmW2ncAFsElGCDBk+fz+xswF6q8qgTXXff
         kbojUM8Vhb25zEoEikyjtJdurQMkBhGkzj1ILzC+BytTCVT9Tt28R/X7MAe1OlpHGZrH
         ishmSBhhhHANgOIunvxibhWCriZvRad678Fo9M3J1LRiRkrGkrJ/LIOJPVJgWKa8/F2p
         HIWV+q2OHzpb1hZ89jUZYyVaLe6amneHC6vr4zEnY1FDhmXRhf5ccYvopkNnd9onTIYR
         Z+dq4Sxzz+6UGifRbiPGWIkxi5CUDr0PzyxsZyyAMVHC/HtBHxq9OgsJjTs4bFEa1azM
         Agyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793959467; x=1794564267;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=vJ5sWiy+PAy0zmQRWdgFsDzyUh5xmBcT2U1yAwFWmnM=;
        b=qGLBwQUp/Nh3iyAFRFh/xzNzpCVqJsx+oWRE2rzOR1owrDqr7MVK8nWpuKvEIIbFa+
         NVIGVcE8nwc8H1BndFH+2FCTOE05CwPfLWCYCm76F0Ofs1I+27OtkgKeSAj0XhcdlzKi
         viRYffnH81h+B9zD/J+5YABmCp3504jyr4ATwJD2V/7G6JxS+NjtC2zK4eRVbMxZ60DK
         jAmHFM7iSgmMZqpaVoZi989qLfdPrrUk3Kicqycx+MqOTf9lh0HgpmcKM/VxkT0wPJdu
         VFU77sTK63+/1/Qs7ETcPasRZxzPuiDVJ8JfV1HJGo14tfzTdlhIBYDbgVMs+/4pGav9
         MA1w==
X-Gm-Message-State: APuU4Z+w1+Uv0tdWkNOUN6XqJ/akYjIiX8brC6soDHHxsCJvxh8G59lB
	PPGaNMftuC+d2vHcdiHqVBvnHXWTXkDJhK0daNTBhNY+ZyW+Jpr5lpIi
X-Gm-Gg: AYBFou0sY8oLU1H/1IiUwFbFKJ6PL4UgyeFaxZvAeSNKkKQISvBwX9Io4L5Rg+nNM+9
	w+P1Cpeq5ER7XgcThe7mUKj3Jkh+uknLADPSgVHNvO4qA3JtXcdm7vubXVe7tX+GmUQCXoJuQRb
	ckNXXtWa57meMf2ubmoNTwCOwbmvzb5g7ftmFScnunmIEE8ok1wOeOP3yCNGY33REoea/8f7gCU
	9rkm2eeU2bqnWE53sGiWqF6qPr4IiKZ6lm69vkWRhIxIYbp+Tfk+hTDe9hm7IqbSV4HrJUsPDG2
	88DWwtcxCD45Ahu3PFreXggEK2XFrdrbbl07/SAmgEPzSGyzdss3m2WZnIxE1u+y0IqEbk0AozI
	ZKvil25aeSFpCKzXrx7Yn+km6e1wjs6OfFMo6P4DJj3eh3llV331wXc8AUz4vI1JCKESN/ZSInI
	zrTktEmLfNJ3r+PS7Y8NrsVTBvAfPh12NHQQBWneQA6wbksGSnram+AdIKbtm7MUKR1j7+sUK5b
	u0m2gqaqgO/4aGX2mH/CKySZs6pcArmV5ZtQmGsMOQ+TcRy++HTlJ5cGhRkjPilSw+Gne9iK6Dh
	zJssUG/Cy0VhEQHugCUM3+G+wGPoEGe0BmI47qFFmssZEALsMoFMOcEpBLsucjwSBxoKQo88o7k
	qZg==
X-Received: by 2002:a05:600c:5297:b0:4b4:262b:88a2 with SMTP id 5b1f17b1804b1-4b6dc30ae97mr29975395e9.1.1793959466660;
        Fri, 06 Nov 2026 02:04:26 -0800 (PST)
Message-ID: <8a546a01-9d3f-4d63-bb56-658d635fed33@gmail.com>
Date: Fri, 6 Nov 2026 11:04:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 33/39] xen/riscv: restore register state in the new
 IMSIC VS-file
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <9e77a699eb6c99fa8f444d5777da189fdd30679e.1790779209.git.oleksii.kurochko@gmail.com>
 <1793724321.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793724321.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1793959467-18ECE9EA-D6FA4D3F/10/73395122804
X-purgate-type: spam
X-purgate-size: 4211



On 11/3/26 5:45 PM, Baptiste Le Duc wrote:
>> Complete the migration of a vCPU's guest interrupt file: move the state
>> saved from the old IMSIC VS-file into the new one and make the vCPU use
>> the new VS-file.
>>
>> The interrupt producers have already been retargeted to the new
>> VS-file, so MSIs may land in it before the saved state is restored.
> 
> Could we send an extempore MSI to the hart of the new file once the
> interrupt producers have been retargeted, and spin until it is received?
> That would guarantee that no more MSIs land once we have received it.

I don't think it's needed. The barrier is there so that nothing gets
lost from the old file: once the extempore MSI sent to the hart of the
old file has arrived, every MSI the APLIC sent towards the old file
before the retargeting has landed there, so what's read out of the old
file is complete.

MSIs sent after the retargeting go to the new file, and they can keep
arriving at any time, including while the saved state is being
restored, so an extempore MSI to the hart of the new file wouldn't stop
them anyway: it would only tell that the MSIs sent before it have
arrived. That's why the saved eip/eie bits are ORed into the new file
rather than written to it, so that whatever lands there in the meantime
is kept, and why eidelivery is restored last, so that the new file
doesn't deliver anything until its state is complete.

>> Hence the saved eip/eie bits are ORed into the new VS-file rather than
>> written to it, so that such MSIs aren't lost. eithreshold and
>> eidelivery are restored last: the new VS-file was cleared when it was
>> acquired, so it doesn't deliver interrupts until its pending and enable
>> bits are complete.
>>
>> As with reading the old VS-file, this has to be done on the pCPU owning
>> the new VS-file, with hstatus.VGEIN temporarily selecting it. That is
>> v->processor, the pCPU the vCPU is migrating to.
>>
>> Finally, point hstatus.VGEIN in the vCPU's saved context at the new
>> VS-file, so that it becomes the source of the vCPU's VS-level external
>> interrupts and the file the guest accesses through its siselect/sireg.
>> With that the migration is complete, so drop the BUG_ON("unimplemented")
> Great!
>> [ ... 82 lines skipped ... ]
>> +static void cf_check imsic_vsfile_local_update(void *data)
>> +{
>> +    unsigned int i;
>> +    const struct imsic_vsfile_data *idata = data;
>> +    struct imsic_mrif *mrif = idata->mrif;
> mrif is only read here, so it can be const:
>      const struct imsic_mrif *mrif = idata->mrif;

Good point. I will apply that.

>> +    unsigned long new_hstatus, old_hstatus, old_vsiselect;
>> +
>> +    /* We can only update if we have a HW IMSIC context */
>> +    if ( !idata->hgei )
>> +        return;
>> +
>> +    /*
>> +     * No atomic accessors are needed to read the values out of the MRIF here,
>> +     * as this is always called with a pointer to a temporary MRIF on the
>> +     * stack.
>> +     */
>> +
>> +    /*
>> +     * The file is reached by retargeting hstatus.VGEIN, and the
>> +     * imsic_vs_csr_*() accessors alter vsiselect. Both belong to the vCPU
>> +     * running on this pCPU, so restore them before returning.
>> +     */
> Same comment as on the previous patch: you are not restoring the CSRs
> here but saving them, as imsic_vs_csr_*() will alter vsiselect. Please
> update the comment accordingly.

Sure! As I mentioned in reply to prev. patch I think that it would be 
better to factor out the sequence of work with hstatus&vsiselect to 
separate helpers, put your comment suggestion above the helpers once.

>> [ ... 32 lines skipped ... ]
>> @@ -1152,5 +1222,11 @@ void imsic_migrate_vcpu(struct vcpu *v)
>>       /* Free-up old IMSIC VS-file */
>>       vgein_release(v, old_vsfile_id, old_vsfile_cpu);
>>   
>> -    BUG_ON("unimplemented");
>> +    /* Restore register state in the new IMSIC VS-file */
>> +    imsic_call_on_cpu(v->processor, imsic_vsfile_local_update, &vsfile_data);
>> +
>> +    /* Set VCPU HSTATUS.VGEIN to new IMSIC VS-file */
> Nit: s/VCPU/vCPU/
> 

Acked.

Thanks for review.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 10:18:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 10:18:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476436.1682541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPH1c-0000iL-7n; Fri, 06 Nov 2026 10:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476436.1682541; Fri, 06 Nov 2026 10:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPH1c-0000iE-50; Fri, 06 Nov 2026 10:18:24 +0000
Received: by outflank-mailman (input) for mailman id 1476436;
 Fri, 06 Nov 2026 10:18:23 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ljs@kernel.org>) id 1xPH1b-0000i8-D7
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:18:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPH1a-001JUx-LN
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:18:22 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ljs@kernel.org>)
 id 6aeda956-bab6-0a2a0a5309dd-0a2a4505a7cc-46
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:18:22 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ljs@kernel.org>)
 id 6aeda96d-4cb1-0a2a45050019-ac6904feaaf0-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:18:22 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 8C69A601BF;
 Fri,  6 Nov 2026 10:18:20 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CFC01F0089F;
 Fri,  6 Nov 2026 10:18:08 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793960300;
	bh=WRJXIR3G73/bAoeCrNJcFgak4mvp+3ngQ+qpnIKUqWQ=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=l2m6k6GqXZKAI6ai2Tun1aF46awXpI/z2hhpm9C9mWFFrwb28EgYdeM12++TFdXHC
	 tZPDcNtqorI1JgQeh4d/V0oUoA8wTmUuwUWJnczsn3SnNHjwPhjBcdo7A1YGDV2mTG
	 KcYpC48NxWmRQWs88tJMsCh3bVG0uv6meLjHSwr1ICrXX3Vw/iw6HMzgoNOlCZ+Cr/
	 4yqxl3LXfTuCElZyaokutxEyEknbHWSUP2DCjtT8OlSb46KYExKXDg1tVpuuXc3j/i
	 oBl8kAvxU+cGtuwjokkyklXwgQ5yXoGFuePAoE1OqzN7B+weZmt4UCKvb6LGDNbMBE
	 27H/f4pFzu1cw==
Date: Fri, 6 Nov 2026 10:18:06 +0000
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: Paul Moore <paul@paul-moore.com>
Cc: Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
	Madhavan Srinivasan <maddy@linux.ibm.com>, Nicholas Piggin <npiggin@gmail.com>, 
	Michael Ellerman <mpe@ellerman.id.au>, "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
	"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, Shrikanth Hegde <sshegde@linux.ibm.com>, 
	Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowangio@gmail.com>, 
	Eugenio =?utf-8?B?UMOpcmV6?= <eperezma@redhat.com>, Xuan Zhuo <xuanzhuo@linux.alibaba.com>, 
	Jarkko Sakkinen <jarkko@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, 
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, 
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
	Stephen Smalley <stephen.smalley.work@gmail.com>, Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>, 
	Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@codeconstruct.com.au>, 
	Ryan Chen <ryan_chen@aspeedtech.com>, Billy Tsai <billy_tsai@aspeedtech.com>, 
	Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konradybcio@kernel.org>, 
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>, 
	Sumit Garg <sumit.garg@kernel.org>, Scott Branden <scott.branden@broadcom.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran <richardcochran@gmail.com>, 
	David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, xen-devel@lists.xenproject.org, 
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, 
	linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
	selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org, 
	netdev@vger.kernel.org
Subject: Re: [PATCH 00/14] mm: convert further simple mmap hooks to
 mmap_prepare
Message-ID: <au2odtvEhpLJY4eD@gremlin>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <CAHC9VhQvpFeEJaEyPDaqj8_S752puSaNe0Rn-hxjh=ugCoFsxA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAHC9VhQvpFeEJaEyPDaqj8_S752puSaNe0Rn-hxjh=ugCoFsxA@mail.gmail.com>
X-purgate-ID: tlsNG-c201ff/1793960302-F76BD2A1-0C3AB490/0/0
X-purgate-type: clean
X-purgate-size: 1626

On Thu, Nov 05, 2026 at 06:12:09PM -0500, Paul Moore wrote:
> On Thu, Nov 5, 2026 at 4:06 PM Lorenzo Stoakes (ARM) <ljs@kernel.org> wrote:
> >
> > Continue the conversion of users of the deprecated f_op->mmap callback to
> > f_op->mmap_prepare. Keep things gentle this cycle by targeting simple
> > cases.
> >
> > No functional change intended.
> >
> > Build tested on x86-64 (allmodconfig, each patch individually), i386,
> > arm64 and ppc64le.
> >
> > <<>>
> >
> > David, Andrew - I wonder whether one of you guys could take this series
> > through your tree? Since it's kernel-wide it seems sensible to take it
> > through an mm tree.
>
> Granted I've only properly looked at the SELinux patch (7/14), the
> rest I've just skimmed through, but these are all independent patches,
> right?  Is there any reason why individual subsystem maintainers
> shouldn't just pick up their associated patch?  Yes, perhaps chasing
> down individual maintainers is a bit more work, but isn't that the way
> this should work?

I've no objection to people taking patches independently, the concern is people
lagging on that and holding up a key conversion which is entirely mechanical, +
generally tree-wide stuff like this has been via the mm tree.

The mmap_prepare stuff is actually important for security (pertinent given
current AI fix storm) as it's by design super locked down vs. mmap which has
caused several genuine issues including a nasty 0-day.

So am keen to keep that rolling!

In this case each patch is mechanical and simple, so little surface area for
issues.

--
Cheers, Lorenzo


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 10:58:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 10:58:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476461.1682551 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPHel-00005g-4G; Fri, 06 Nov 2026 10:58:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476461.1682551; Fri, 06 Nov 2026 10:58:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPHek-00005Z-WF; Fri, 06 Nov 2026 10:58:51 +0000
Received: by outflank-mailman (input) for mailman id 1476461;
 Fri, 06 Nov 2026 10:58:49 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPHej-00005R-8T
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 10:58:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPHei-00H7Ww-Dz
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:58:48 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedb2e1-e002-0a2a0a5209dd-0a2a4506ed8c-14
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:58:48 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedb2e8-195a-0a2a45060019-d155802fd8dc-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 11:58:48 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so3269025e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 02:58:48 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b57317cae5sm206696215e9.12.2026.11.06.02.58.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 02:58:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793962727; x=1794567527; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=J5hMTx45auR/a6/zrWRGnKtqZsojp9FmHaMc3jISjok=;
        b=jEdoaHvxMvR38K4INAAHhbZvHqhIsGMNROqSLZ1L8Ob3I0pAsSsL8kibgYrbBkHnRB
         BnMoVXGs/0ON+1vOnesXtxI6K081Twwm6OvfMKfLGKAGjJWMqit5VqLHDExI5S+EZw1a
         UQKFbM09MX+b7/WFl/CeC/p5sKwIgHST4yuW1Teg3357TGaQW/lttYyPF2i2Hl4RFKFY
         b8tbjiZCXl68ekWnvwQ939cpCnhRDjCbwiR/H1OxXp8Z9MWjZJMsraW/CZ7F7ILyGzAC
         uE9jd8dfpVS87m0GjetzCJVivSxqWMVVmLYlqhRVErWL5ZkEUadiGyc5MRoM1tVFDpaL
         zu9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793962727; x=1794567527;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=J5hMTx45auR/a6/zrWRGnKtqZsojp9FmHaMc3jISjok=;
        b=QFRjevIPGGOBsxMPG4SA/Ail2tMFBnGPCVzdQLW5MIe0M0swHHeLiJiiUR0dj3v2gn
         JXQiU2Ft/Q4qQ1iaCbCl2g+eO0R+7Q3HkDElQWi9el09DTeh3L8N4MwTn7CQeublIaTe
         +oDGO01Ip+l0GsL+Hu9a8GEiCbW3aweRRWS7VmvhPUQOalU+HrhdbGFoxVLfSIJNnYmM
         LDguiZGWGz0TKQ5iLcJXam1oTBCvZ1HH8fZ6TSqx3CQF5tS69hkoLEh4ZUmMV0AfX13m
         vooeiI9H2HZ6L206/MutU7S4Mo+h03PtcvqjaDJyKj4RxjNaWzmqg80LgjVAvHARUqdX
         cJXA==
X-Gm-Message-State: APuU4Z9gGroeKmVrqQiu4sArACCmWhhLaEgQ3TqftYDNm7TL4Q27ZFAi
	tlOMQ+rNwAbeOBiK2mTgYRaTice9L0zThU+fXNhmIoNoEriBPJJzLAba
X-Gm-Gg: AYBFou1hXZ58MBr3kOU4NHE89j2mTIVto2vtG87xWROvH1JmhapRmKEyNmVDp7sgly2
	c4BA3Sv5HY5OGga65MCFYnINtDMwGRAKoIF3UhjBnUqmarXEzDdvnR+q9LMkgoLTh3CFNMxA3c5
	ZKIS+9mrh/HyyBB6n+QQ9LMRIhiiPaCQHNdPu5v+tZCo5Z+6s30XaFxj3ZA4sUH4ro/wTu4jxVG
	rXB3nlCHAxh8JxHPhchcOz7wsUAPk6+0UYGxkPtnkMOzPMeVNoroLiebyY/BoUj0MOLsEqhksjy
	asSTcs0IEtiIQ6o4yMR2u+KkQgDDwN7aCOzoWorBtX9wK+k27v1lUq1IYpQlu3+mSLXSuS9i8AU
	coFR8L45b/lN1wsYzLhhN/FvJ3vBYOshBRkl3bKkt5F9wJZHj/6FyNftdGFgVShNvCyLHCXkcyM
	3khG1EWsLibXvAm6sT/+oHb/W9QHTocsVgiM/WZqyFNb1PxUyRuyU0db13RMEKdSgIYF78OJlj9
	501ORAguTxYZENKQGTDfl8+fC5c/9LEKJkWf2A+hqdkr5IFiyGhr2OpnGPpEHTqSUUbBRb+JKVu
	yuCNce7CqFTYG31br2OJFC4tDlJ6/AsvDsxH7yyKnDf2gKQgdWcKpNRb39PHJtyMplDH/LspW0S
	vAjmGYEzIpA8pNWDVc13uHgg=
X-Received: by 2002:a05:600c:314f:b0:4a2:a9:ed5a with SMTP id 5b1f17b1804b1-4b6dddeea72mr34741915e9.8.1793962727508;
        Fri, 06 Nov 2026 02:58:47 -0800 (PST)
Message-ID: <41f3a77d-0fda-4f43-adb8-27fc2d92b57f@gmail.com>
Date: Fri, 6 Nov 2026 11:58:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 35/39] xen/riscv: wake up a descheduled vCPU on a guest
 external interrupt
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <4e78b90482e23b049774eb00b19422d8c147970a.1790779209.git.oleksii.kurochko@gmail.com>
 <1793788661.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793788661.8631fc262581453bbf619ec5b2062170.1a1a622ce02000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793962728-FE87577B-28B0C161/10/73395122804
X-purgate-type: spam
X-purgate-size: 6994



On 11/4/26 11:37 AM, Baptiste Le Duc wrote:
>> While a vCPU is running, MSIs written to its h/w IMSIC guest interrupt
>> file are delivered straight to VS-mode. Once the vCPU is descheduled
>> nobody observes that file anymore, so a guest blocked on such an
>> interrupt would stay blocked until some unrelated event happens to
>> schedule it again.
>>
>> Let Xen observe the file in that window: on deschedule set the vCPU's
>> bit in HGEIE, which turns an interrupt pending in its VS-file into an
>> HS-level SGEI, and clear the bit again on schedule-in. HGEIP only
>> reports an interrupt file number, so to find the vCPU to kick, keep a
>> per-pCPU owners[] array indexed by file number and updated in
>> vgein_assign()/vgein_release() together with the VGEIN bitmap. The SGEI
>> handler clears the HGEIE bits it has seen before kicking their owners,
>> so that the interrupt doesn't keep firing until the vCPU is switched in.
> 
> Please explain why this is enough for a descheduled
> vCPU to never miss a wake-up: an interrupt pending in a VS-file always
> shows up in HGEIP, but it reaches VS-mode only if hstatus.VGEIN selects
> that file, and traps to Xen as an SGEI only if the file's HGEIE bit is
> set. While the vCPU is descheduled, HGEIE is therefore Xen's only way to
> notice it. And as HGEIP reflects the file's current state rather than
> being latched, an interrupt which arrived before the bit got set still
> raises the SGEI once it is.

Will add, thanks.

>> [ ... 49 lines skipped ... ]
> 
>> --- a/xen/arch/riscv/aia.c
>> +++ b/xen/arch/riscv/aia.c
>> @@ -18,6 +18,13 @@ struct vgein_ctrl {
>>       /* The least-significant bits are implemented first, apart from bit 0 */
>>       unsigned long bmp;
>>       spinlock_t lock;
>> +    /*
>> +     * Guest interrupt file IDs run from 1 to geilen inclusive (0 means that
>> +     * no guest external interrupt source is selected), and geilen can never
>> +     * exceed BITS_PER_LONG - 1, so indexing this array by the ID directly
>> +     * always fits.
>> +     */
>> +    struct vcpu *owners[BITS_PER_LONG];
> 
> It looks like owners[] already carries the information bmp provides.
> Couldn't we drop bmp and use owners[] alone, with owners[i] == NULL
> meaning that file i is free? That would avoid having to keep the two in
> sync, and vgein_release() could then check ASSERT(owners[id] == v)
> rather than just that the bit was set. A linear scan over 1..geilen in
> vgein_assign() should be fine given geilen < BITS_PER_LONG.
> 
> If you agree, it would probably be cleaner to introduce owners[] in
> place of bmp in the earlier "add basic VGEIN management" patch, rather
> than adding bmp there and replacing it here.

It would work, but I'd rather keep bmp: it's updated together with
owners[], under the same lock, in vgein_assign() and vgein_release()
only, so there isn't much to keep in sync. It also keeps the state of
all the files in a single word, so a free VGEIN ID is found with a
single find_next_zero_bit() rather than by iterating over owners[] (but 
I could agree that likely not a big win), and the debug output can print 
it as is.

The stronger check in vgein_release() is a good idea regardless, so I'll
add ASSERT(vgein->owners[vgein_id] == v) here.

>> [ ... 26 lines skipped ... ]
>> +
>> +void hgei_interrupt(void)
>> +{
>> +    unsigned long hgei_mask, flags;
>> +    struct vgein_ctrl *vgein = &this_cpu(vgein);
>> +
>> +    hgei_mask = csr_read(CSR_HGEIP);
>> +    hgei_mask &= csr_read(CSR_HGEIE);
>> +
>> +    csr_clear(CSR_HGEIE, hgei_mask);
>> +
>> +    spin_lock_irqsave(&vgein->lock, flags);
>> +
>> +    /*
>> +     * Bit 0 of HGEIP/HGEIE is read-only zero: guest interrupt file ID 0
>> +     * means that no guest external interrupt source is selected.
>> +     */
>> +    ASSERT(!(hgei_mask & 1));
> 
> Is this ASSERT() really needed? Bit 0 of HGEIP/HGEIE is read-only zero
> per the spec, and vgein_init() already relies on that when computing
> geilen. Even if it were ever reported, owners[0] is never assigned, so
> the loop below would simply skip it.

Agreed, lets drop it.

>> [ ... 35 lines skipped ... ]
>> --- a/xen/arch/riscv/imsic.c
>> +++ b/xen/arch/riscv/imsic.c
>> @@ -555,12 +555,37 @@ void cf_check imsic_ctxt_switch_from(struct vcpu *p)
>>   
>>       write_lock_irqsave(&imsic_state->vsfile_lock, flags);
>>       imsic_state->vsfile_cpu = p->processor;
>> +    /*
>> +     * Start to observe the VS-file from HS-mode: while the vCPU isn't
>> +     * running an interrupt pending in its VS-file is reported through HGEIP
>> +     * instead of being delivered to VS-mode, which lets Xen wake the vCPU up.
> 
> "instead of" reads as if HGEIP only reports it while the vCPU isn't
> running. It always does; what changes is that VGEIN no longer selects
> the file and the HGEIE bit set below turns it into an SGEI.
> 

Right, I'll reword it accordingly.

>> [ ... 29 lines skipped ... ]
>>   int imsic_map_guest_file(struct vcpu *v, unsigned int vsfile_id)
>> @@ -695,6 +720,12 @@ static void cf_check imsic_vsfile_local_read_clear(void *data)
>>       struct imsic_mrif *mrif = idata->mrif;
>>       unsigned long new_hstatus, old_hstatus, old_vsiselect;
>>   
>> +    /*
>> +     * The HGEIE bit imsic_ctxt_switch_from() armed belongs to the old owner
>> +     * only.
>> +     */
> "Old owner" is ambiguous: it reads like another vCPU, but it's the same
> vCPU on the file it is leaving. To mirror imsic_local_hgeie_set(), I'd
> rather have an imsic_local_hgeie_clear() called from here, documenting
> the pairing the same way, e.g.:
> 
> /*
>   * Stop observing an interrupt file which a vCPU leaves when it moves to
>   * another pCPU by clearing the bit imsic_ctxt_switch_from() set.
>   *
>   * Counterpart of imsic_local_hgeie_set() for the new file.
>   */
> 
> In that case ...
>> +    csr_clear(CSR_HGEIE, BIT(idata->hgei, UL));
>> +
>>       /*
>>        * The file is reached by retargeting hstatus.VGEIN, and
>>        * imsic_vs_csr_swap() alters vsiselect. Both belong to the vCPU running
>> @@ -1044,6 +1075,21 @@ int __init vimsic_make_domu_dt_node(struct kernel_info *kinfo,
>>       return fdt_end_node(fdt);
>>   }
>>   
>> +/*
>> + * Start to observe the interrupt file from HS-mode, the same way
>> + * imsic_ctxt_switch_from() does it for a vCPU which is switched out.
>> + *
>> + * The counterpart, clearing the bit of the interrupt file which is left
>> + * behind, is done by imsic_vsfile_local_read_clear(), which already runs on
>> + * the pCPU owning that file.
>   ... this wouldn't be needed at all.
> 

Agreed, I'll introduce imsic_local_hgeie_clear() next to
imsic_local_hgeie_set(), with your comment. It'll take the file number
rather than void *, though, as it's called directly from
imsic_vsfile_local_read_clear() and not through imsic_call_on_cpu().

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 11:30:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 11:30:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476486.1682558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPI9R-0007Dc-Bv; Fri, 06 Nov 2026 11:30:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476486.1682558; Fri, 06 Nov 2026 11:30:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPI9R-0007DV-98; Fri, 06 Nov 2026 11:30:33 +0000
Received: by outflank-mailman (input) for mailman id 1476486;
 Fri, 06 Nov 2026 11:30:31 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <junjie.cao@linux.dev>) id 1xPI9N-0007DM-KT
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:30:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPI9M-003Ld6-Qp
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:30:28 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6aedba49-e002-0a2a0a5209dd-0a2a4501dcc2-24
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:30:28 +0100
Received: from [95.215.58.251] (helo=mta1.migadu.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <junjie.cao@linux.dev>)
 id 6aedba53-5984-0a2a45010019-5fd73afbc550-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:30:27 +0100
Received: by smtp.migadu.com with ESMTPS id 1377caa7985a86b7;
 Fri, 06 Nov 2026 11:30:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=key1 header.d=linux.dev header.i="@linux.dev" header.h="From:To:Subject:Date:Message-ID:MIME-Version:Content-Type"
X-Envelope-To: xen-devel@lists.xenproject.org
DKIM-Signature: a=rsa-sha256; bh=XsI4CJ2an+tJXTOsJyS0x8/XxNKm4P+8FVw9XUcVmiY=;
 c=simple/simple; d=linux.dev;
 h=from:to:subject:date:message-id:mime-version:content-type; s=key1;
 t=1793964627; v=1; x=1794569427;
 b=D/Yy7Ivzk5Esf10z8IA3huM8f4it3Y4DMptPt4+FzfwW+H57K39WkEkc5IUxunspu0wALl8+
 tFcVmKrBdGPYaSdJUMtyQOyJtoJrQ9sZtnxWgIfbkuJIj98VGvWOsl5FPxSXdGt9Wt8jVCN1guQ
 K7dhkC2ppLNv+Ml4G52qUt/k=
X-Envelope-To: xen-devel@lists.xenproject.org
X-Mizu-Trace-ID: 1377caa7985a86b7
X-Migadu-Flow: FLOW_OUT
From: Junjie Cao <junjie.cao@linux.dev>
To: berrange@redhat.com,
	jamin_lin@aspeedtech.com
Cc: kraxel@redhat.com,
	marcandre.lureau@redhat.com,
	clg@kaod.org,
	pierrick.bouvier@oss.qualcomm.com,
	peter.maydell@linaro.org,
	kane_chen@aspeedtech.com,
	philmd@oss.qualcomm.com,
	kfting@nuvoton.com,
	wuhaotsh@google.com,
	zhao1.liu@intel.com,
	richard.henderson@linaro.org,
	deller@gmx.de,
	sstabellini@kernel.org,
	anthony@xenproject.org,
	edgar.iglesias@gmail.com,
	troy_lee@aspeedtech.com,
	qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	xen-devel@lists.xenproject.org,
	junjie.cao@linux.dev
Subject: Re: [PATCH v8 02/18] hw/usb/hcd-xhci: Add an auto-hub property and leave it off
Date: Fri,  6 Nov 2026 05:30:21 -0600
Message-ID: <20261106113021.2841297-1-junjie.cao@linux.dev>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <au2ZDOY7MGdY74L9@redhat.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com> <20261102092201.1729245-3-jamin_lin@aspeedtech.com> <20261103142327.1348025-1-junjie.cao@linux.dev> <SEZPR06MB73626D50E685F83DFB006D8DFC762@SEZPR06MB7362.apcprd06.prod.outlook.com> <SEZPR06MB7362D089282550D7585C16DEFC762@SEZPR06MB7362.apcprd06.prod.outlook.com> <au2ZDOY7MGdY74L9@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793964628-1E664757-5944A4E0/0/0
X-purgate-type: clean
X-purgate-size: 393

Thanks, Daniel. I'd be happy to continue reviewing v9.

Hi Jamin, if you decide to split the series, patch 01 could stay with the
server: it keeps existing controllers unchanged while letting the server
disable auto-hub. Patches 02–10 could follow separately, with the compat
TODO Daniel suggested.

I checked that 01 plus 11–18 apply cleanly to current master.

Thanks,
Junjie


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 11:31:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 11:31:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476495.1682568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIAS-0007mp-PM; Fri, 06 Nov 2026 11:31:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476495.1682568; Fri, 06 Nov 2026 11:31:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIAS-0007mi-M1; Fri, 06 Nov 2026 11:31:36 +0000
Received: by outflank-mailman (input) for mailman id 1476495;
 Fri, 06 Nov 2026 11:31:34 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPIAQ-0007ma-RM
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:31:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPIAQ-003LyL-82
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:31:34 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedba87-2eae-0a2a0a5409dd-0a2a450681da-18
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:31:34 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedba96-195a-0a2a45060019-d1558035cdcc-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:31:34 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a20bdaf39cso5804235e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 03:31:34 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b56e58fcb8sm128865385e9.1.2026.11.06.03.31.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 03:31:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793964694; x=1794569494; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JC3DoCt3KB8/mHGxbBoSoho71Hjr4xZKqfxWcO8kEFw=;
        b=fRcFcIChiPW2e3EfeVNqmU0//pq9NtfbyLwq2EuH3B8r87Ee1gEe5qUDiZeqHqBumI
         c1u0BNWs5HoDCqrG5aua+hpCZZETGGQhyAv5HW/9kS1abzQeA226ZirjDbG4//YIn3mJ
         2J/j3/vbhYCaSeZ9MYWM7dHjw6t9R0v5dt3XsW/HpmZAnPpnQv05sdPOvjM0o9FThkEm
         cF9Z2lLapNg1YiN/SgJQNFqKS+ZPtTR/aqoDAIBIwL6XG5dXzcSTDcICZ2AI8elTcamW
         B/da9owVpmxkmOloV6/1ZPjQKIOXWKt7kYjLlR176Es5I7WA4pMfMUxEnhZb2nanBRD0
         Wb/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793964694; x=1794569494;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=JC3DoCt3KB8/mHGxbBoSoho71Hjr4xZKqfxWcO8kEFw=;
        b=TrVFr0zoc7w+PB2PW2zGqwgm9C/gQ7Bjd8zPaO+HjehycuOOsVD3ta0FAU4S7/eoTW
         nBirXS8d59lI+5kdwezExRqpN4rqbfPYlGTZsvRzi8qFcwBa0Ywb/PQ/+qOk0ULrkq2k
         yoXPqsy5ELue3wJFkanniILr/d7Btf3Qlo8saRXHPZMFq5BNCJLlg1IavT0AQpyrhtQk
         a2vz95B/JcR4RvXTEX1MZYa3A6EqyF59w9v3K5uaFs0B5XUNJu5RpirZZEIvXwgrCLJ0
         Wb7u3oTSfy4rR55JL3z3pQpJYwWOcaItWlFduPMQ99oXwbcnECQngpqnnRPuj1LDL3od
         9mrw==
X-Gm-Message-State: APuU4Z88Q2c9LJ2m84lbdzA4i/LCtVUaB3A5cQorXclQEHpdtmJ7ab+2
	pudjBQ6PMlJSkrb4giPupO9d6W522gH6gF/LI79eW1A806JqlVmiJWgE
X-Gm-Gg: AYBFou1HI+JU+QhVYbCqDkLOho30jUNdl52rH+k4AJfdz1hUlPqnA2YR3LW8N4ZGDsB
	Ktzx37s/TCJ/7hvq65kWtwdFrzz1IpYosRXrdmraHZ70LL08uPxv1ZH2vGlLOAyarFaKQp6Qcm3
	CnKHAIgxS6hQxbM/C+GjBzwv52r7lIBTq+DnJ5R0wqpib21KHk+5odj65IXqOf3XJYIgACSUXim
	cNgDqwL7qNHuO5Qs2WDltR7r22MkSHzjxo4UEQHJeiBxQ3dA5tQX1yx3ZZWX8DUvmnCxbuwplR+
	tldl4muytfhkUq2i6oq9vrFdYcZ3ImzZgrm/BtaILcCzwawum0pq+qPebAHyiZsU3g1VPbkhjLc
	hfpKcpE0IKorCof2V7RG+69d1ulCGJXazXnEvOH8WZGl14DAu31iD3EeY4pUUjTOX9vwoyxPTBa
	ZPLLvA0lkvVZYS4CDWUa1WWbKq1ed1jkV1ezAUmf7kq5NAF7apxOpCLjf1IlWD3t/bz6hpOiI04
	+MiC4s0XsTUAjyI2KwX1kFjEDjH8zDAmTP5Z8jTLQTL9sfsBvMwgEtmEWYKyQEcN6ik8QRJEEAy
	WMstkB2B/uzbHLlk3upajXRGxAcYOLpkRTo8KgZfZLagfBAICxG6VJAhI9f+mbsKmtpDeLOzaPX
	V
X-Received: by 2002:a05:600c:c166:b0:4a1:e92b:ae4a with SMTP id 5b1f17b1804b1-4b6de1c6820mr33030445e9.21.1793964693522;
        Fri, 06 Nov 2026 03:31:33 -0800 (PST)
Message-ID: <0d094093-cbaa-4103-96de-c910abb24bac@gmail.com>
Date: Fri, 6 Nov 2026 12:31:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 37/39] xen/riscv: implement continue_new_vcpu()
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <0d254188c7f21c88ef1982dc9c5810f7b503e38e.1790779209.git.oleksii.kurochko@gmail.com>
 <1793800859.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793800859.8631fc262581453bbf619ec5b2062170.1a1a6dcf00e000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1793964694-FE87577B-A286F46F/10/73395122804
X-purgate-type: spam
X-purgate-size: 2268



On 11/4/26 3:00 PM, Baptiste Le Duc wrote:
>> continue_new_vcpu() is the arch hook invoked the first time a freshly
>> created vCPU is scheduled. Implement both cases it has to cover:
>>   - for the idle vCPU, switch to its own stack and jump to idle_loop();
>>   - for a guest vCPU, enter the guest through the new
>>     return_to_new_vcpu() path in entry.S, which restores hstatus and
>>     sepc, passes the hart id in a0 and, in a1, either the DTB address
>>     (boot vCPU, as expected by the RISC-V boot protocol) or the opaque
>>     value passed to SBI HSM hart_start() (secondary vCPUs), clears the
>>     remaining GPRs, sets sstatus.SPP and sstatus.SPIE and executes sret.
>>
> Nit: the guest vCPU sentence is hard to follow in one go. Maybe split it:
> 
>    - for a guest vCPU, enter the guest through the new
>      return_to_new_vcpu() path in entry.S. It restores hstatus and
>      sepc and passes the hart id in a0. a1 holds the DTB address for
>      the boot vCPU (as expected by the RISC-V boot protocol), or the
>      opaque value passed to SBI HSM hart_start() for secondary vCPUs.
>      It then clears the remaining GPRs, sets sstatus.SPP and
>      sstatus.SPIE, and executes sret.

Thanks for the suggestion. I'll use this wording.

>> [ ... 94 lines skipped ... ]
>> --- a/xen/arch/riscv/entry.S
>> +++ b/xen/arch/riscv/entry.S
>> @@ -147,3 +147,42 @@ FUNC(__context_switch)
>>   
>>           ret
>>   END(__context_switch)
>> +
>> +/*
>> + * Enter a vCPU for the first time. Must be called with interrupts disabled,
>> + * see continue_new_vcpu().
>> + */
>> +FUNC(return_to_new_vcpu)
>> +        REG_L   t0, CPU_USER_REGS_HSTATUS(sp)
>> +        csrw    CSR_HSTATUS, t0
>> +
> At this point regs->hstatus only has SPV | SPVP (arch_vcpu_create()), so
> VSXL is written as 0, which is a reserved encoding. That only gets fixed
> by "xen/riscv: set the guest's XLEN explicitly in hstatus.VSXL", which
> comes later in the series. Wouldn't it be better to move that one ahead
> of this patch?

Agreed. I'll move "xen/riscv: set the guest's XLEN explicitly in 
hstatus.VSXL" before this patch.

> 
> Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
> 

Thanks!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 11:54:16 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 11:54:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476510.1682577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIWJ-0003fH-D2; Fri, 06 Nov 2026 11:54:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476510.1682577; Fri, 06 Nov 2026 11:54:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIWJ-0003fA-AH; Fri, 06 Nov 2026 11:54:11 +0000
Received: by outflank-mailman (input) for mailman id 1476510;
 Fri, 06 Nov 2026 11:54:11 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <armbru@redhat.com>) id 1xPIWI-0003dz-Td
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 11:54:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPIWI-00HQcN-6l
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:54:10 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <armbru@redhat.com>)
 id 6aedbfde-bab6-0a2a0a5309dd-0a2a4506ae8c-20
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:54:10 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <armbru@redhat.com>)
 id 6aedbfdb-195a-0a2a45060019-aa0a817c784d-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:54:04 +0100
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
 (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
 relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-461-YFptxQWZPqOcoLwxFxBMyQ-1; Fri,
 06 Nov 2026 06:54:00 -0500
Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com
 (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id E3D66180057A; Fri,  6 Nov 2026 11:53:57 +0000 (UTC)
Received: from blackfin.pond.sub.org (unknown [10.44.22.2])
 by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS
 id EEEF139200; Fri,  6 Nov 2026 11:53:56 +0000 (UTC)
Received: by blackfin.pond.sub.org (Postfix, from userid 1000)
 id 9841921E6A04; Fri, 06 Nov 2026 12:53:54 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1793966043;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9ddJIImjGsmsUfpk27UWUOb09SPlNh75NQ7+6roRcnk=;
	b=jJgKXX+DEqVokIPy6LwAozAySFZBp+ANhZOcXoN/YyCPQbPwEczTm1GqRKctf7mRXMMkOy
	W81zC0PZID86AahwyX+pjBJ/8T7G86hkrw4bA3s5BnxqPUWBUrymGqkepoT6I3uEA3MtWy
	fmr6VKurGFWXM1yb+S+U1JU7ow/hPDs=
X-MC-Unique: YFptxQWZPqOcoLwxFxBMyQ-1
X-Mimecast-MFC-AGG-ID: YFptxQWZPqOcoLwxFxBMyQ_1793966038
From: Markus Armbruster <armbru@redhat.com>
To: Daniel P. =?utf-8?Q?Berrang=C3=A9?= <berrange@redhat.com>
Cc: qemu-devel@nongnu.org,  Pierrick Bouvier
 <pierrick.bouvier@oss.qualcomm.com>,  Gerd Hoffmann <kraxel@redhat.com>,
  xen-devel@lists.xenproject.org,  qemu-ppc@nongnu.org,  "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>,  Eric Blake <eblake@redhat.com>,
  Markus Armbruster <armbru@redhat.com>,  =?utf-8?Q?Marc-Andr=C3=A9?= Lureau
 <marcandre.lureau@redhat.com>,  Anthony PERARD <anthony@xenproject.org>,
  Paolo Bonzini <pbonzini@redhat.com>,  Stefano Stabellini
 <sstabellini@kernel.org>,  Alexey Kardashevskiy <aik@ozlabs.ru>,  Richard
 Henderson <richard.henderson@linaro.org>,  Helge Deller <deller@gmx.de>,
  Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [PULL v2 23/25] trace: stop tracking static disabled state
In-Reply-To: <20261104201802.11556-24-stefanha@redhat.com> (Stefan Hajnoczi's
	message of "Wed, 4 Nov 2026 15:17:59 -0500")
References: <20261104201802.11556-1-stefanha@redhat.com>
	<20261104201802.11556-24-stefanha@redhat.com>
Date: Fri, 06 Nov 2026 12:53:54 +0100
Message-ID: <87se1efa5p.fsf@pond.sub.org>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95
X-Mimecast-MFC-PROC-ID: IJdNcwzWJ_wz1RqDANEeaOvq2OQDRh1YEbJrmGfvW9o_1793966038
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-16d1c6/1793966050-FE87577B-12A0F5A3/35/111497
X-purgate-type: clean
X-purgate-size: 3232

I missed this, because I wasn't cc'ed.

Stefan Hajnoczi <stefanha@redhat.com> writes:

> From: Daniel P. Berrang=C3=A9 <berrange@redhat.com>
>
> The TraceEvent struct contains a "bool sstate" field which track whether
> a trace event was disabled statically. i.e. at build time via the
> "disable" property annotation in trace-events.
>
> The only runtime use of this field is to let "trace-event-get-state"
> report that an event is "unavailable" instead of reporting an error for
> an unknown trace event.
>
> Trace events are not ABI so their names can change and the event can
> come and go at any time. Thus there is little utility in reporting the
> existence of a disabled event that cannot ever be used at runtime.
>
> Removing the "bool sstate" field from TraceEvent saves 8 bytes of
> space in the struct, adding up to approx 64 KB across all current
> events.
>
> Reviewed-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>
> Signed-off-by: Daniel P. Berrang=C3=A9 <berrange@redhat.com>
> Message-id: 20261102142844.3464712-24-berrange@redhat.com
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

[...]

> diff --git a/qapi/trace.json b/qapi/trace.json
> index 29c76256055..8533e378977 100644
> --- a/qapi/trace.json
> +++ b/qapi/trace.json
> @@ -16,8 +16,6 @@
>  # @TraceEventState:
>  #     State of a tracing event.
>  #
> -# @unavailable: The event is statically disabled.
> -#
>  # @disabled: The event is dynamically disabled.
>  #
>  # @enabled: The event is dynamically enabled.
> @@ -25,7 +23,7 @@
>  # Since: 2.2
>  ##
>  { 'enum': 'TraceEventState',
> -  'data': ['unavailable', 'disabled', 'enabled'] }
> +  'data': ['disabled', 'enabled'] }

No note in docs/about/removed-features.rst needed?

> =20
>  ##
>  # @TraceEventInfo:
> @@ -69,6 +67,7 @@
   ##
   # @trace-event-set-state:
   #     Set the dynamic tracing state of events.
   #
   # @name: Event name pattern (case-sensitive glob).
   #
>  # @enable: Whether to enable tracing.
>  #
>  # @ignore-unavailable: Do not match unavailable events with @name.
> +#      Deprecated: since 11.2
>  #
>  # Since: 2.2
>  #

Are you trying to deprecate use of argument @ignore-unavailable?

If no, what are you trying to do?

If yes, this isn't how we do that.  Instead:

   ##
   # @trace-event-set-state:
   #     Set the dynamic tracing state of events.
   #
   # @name: Event name pattern (case-sensitive glob).
   #
   # @enable: Whether to enable tracing.
   #
   # @ignore-unavailable: Do not match unavailable events with @name.
   #
   # Features:
   #
   # @deprecated: Argument @ignore-unavailable is deperecated and does
   #     nothing.
   #
   # Since: 2.2
   #
   # .. qmp-example::
   #
   #     -> { "execute": "trace-event-set-state",
   #          "arguments": { "name": "qemu_memalign", "enable": true } }
   #     <- { "return": {} }
   ##
   { 'command': 'trace-event-set-state',
     'data': {'name': 'str', 'enable': 'bool',
              '*ignore-unavailable': { 'type': 'bool',
                                       'features': [ 'deprecated' ] } } }

with a matching update to docs/about/deprecated.rst.

[...]



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 12:00:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 12:00:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476521.1682586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIc0-0005C5-48; Fri, 06 Nov 2026 12:00:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476521.1682586; Fri, 06 Nov 2026 12:00:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPIc0-0005Bo-1M; Fri, 06 Nov 2026 12:00:04 +0000
Received: by outflank-mailman (input) for mailman id 1476521;
 Fri, 06 Nov 2026 12:00:02 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPIby-0004nv-FM
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:00:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPIbx-003RMU-SJ
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:00:01 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedc12b-e002-0a2a0a5209dd-0a2a4501cc80-24
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:00:01 +0100
Received: from [209.85.221.50] (helo=mail-wr1-f50.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedc141-5984-0a2a45010019-d155dd32d803-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:00:01 +0100
Received: by mail-wr1-f50.google.com with SMTP id
 ffacd0b85a97d-490c1d337d8so353396f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:00:01 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492d6d63b6esm3509053f8f.10.2026.11.06.03.59.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 03:59:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793966401; x=1794571201; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=R9LY+qJIkHH2BovcZe+33BJedNk0QdNyXv21VapNinw=;
        b=hvMkR+LW9Q5EH8J1UaXVZHz3OjxkC8ihv21QTURpsqBOpInM2UW29yT0SIa/08GMKA
         ljToK731W2xEByQmCeTDh3FbWYZGHj/C+Hf+GHfXtcNmAQE4O6kGXrgYp5EaFQbGiWF0
         +DBJRVSBG4SI+GVbegHifw9ocR4tPxXiSmiXilPoJ1LdmOuxkUdKreuRyQ3RtOLQTCh7
         Bl5rimbv5G2Nb+2PNrLWCIpyZqP33EdvNzYVkwmDaLgJzLHofC9id+vs2ncLA51Y8xnI
         ykeyMJhhD6E7bydJftV4wU7W2Unt2KLjE3I9TwfRvFKeRCd2BmapVz8CijH42rStvGfF
         9wGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793966401; x=1794571201;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=R9LY+qJIkHH2BovcZe+33BJedNk0QdNyXv21VapNinw=;
        b=EIia+TlOev3OaF2Gmn60Dm4EgvfFNn3rFUZBQMA2qmusRZqt3sTpHspzqP2bwpnfNY
         B6I+83FQaXSgIVPOw/QTRegVMEZEAeavo+PzYBPundYFo6DZvB3E/kj8+fS7Bnxu8WWq
         GwBenFvR3sJ9SEJQIn6T2I2NyUqXBgocN69jWb0xewWPhZjozxheCmzNcvz2zMlrmoy0
         JC4REu0fERu9jp3UAoQM5R7qNjxc0+1j+7Z3/IILkEhuJiE33KJxaL23tE30okY3XHh2
         QEUfqusgKVRsJFvHbk84Zkl482Do3fKf1c8A8DgYyDkXFnnm2KKsDTAelpZogT+i1MYP
         QwjQ==
X-Gm-Message-State: APuU4Z/XaccvjBYZtXJJOhYdvsDz67h0kNgq739K66EIanVwpC6MeKcV
	vORY+UMCK1sBmG5KUL7moR3NiCRLqagKaJa569uctHMQAVGOaZZXYQZB
X-Gm-Gg: AYBFou2mwbrV8pqAFVNaebrspz9rR89n4e5v15y7K4ROT/+HHH/vPWZAoTj1VrWjhmp
	LsZlzy3N2Ox3jYnRBLyd7b1PaCpW1+BDh07bj0IgK4Nie5NwD3LBPV7Wd5xN5KGX3YpZsaKdAGm
	cYYELJnHu65Ne9+TyN7nkr7YrS0TkshBiGWbPhUtTbRTYvnzUCGroZOkwpxqZS+pr9yfdFvM9vL
	LEIa2K8XdaJwqn3dLxwcLu5Rq2plQvItCp7rMnQZJqFUtqd5zXyaT/rQ6mqkVWUj6RXUyf2vABT
	kf+5xK3jQy4neoQXbImkx/ejTjPA26KK3+NVP3paudI0N/OYxO92CFBdT5OshBwVeYu25k61lHy
	7fTCHel3qm0mcxnerGWIfeqSmIVGGbiXIURU7KFBIskqogImLis4lM4wDP9Yx59xpQrHF4lnQS3
	1L6nAERl7xTkzVRuaByP4ifXQDaE5St+zhPa/xtT6OnqNZHzCLnCMA+X/bou96LSgyONAv3odFv
	TDsg4aUV0vRr5m6xrZ5jgnd0fcXSdxvoHYRRxxIjlrzDR2PsdnXn8MDFuYoGV5/K9xK3hDjcbE0
	DPJgj0SzMnYZWk6BGroEf5rrX0KcLcosNqpBKhzSpvwz+Fog5vzpL6ZPFuYzsc4HileBT4Kl5Fc
	u
X-Received: by 2002:adf:e009:0:20b0:493:2eb8:e7fb with SMTP id ffacd0b85a97d-4932eb8f10dmr1575912f8f.41.1793966401215;
        Fri, 06 Nov 2026 04:00:01 -0800 (PST)
Message-ID: <ac014a57-5a77-41aa-a3e3-39e5764acf2f@gmail.com>
Date: Fri, 6 Nov 2026 12:59:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 38/39] xen/riscv: set the guest's XLEN explicitly in
 hstatus.VSXL
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <0c65801cec7cdac1556abc610e076f33c1500d1f.1790779209.git.oleksii.kurochko@gmail.com>
 <1793803069.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793803069.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1793966401-C4558757-6765C164/10/73395122804
X-purgate-type: spam
X-purgate-size: 3506



On 11/4/26 3:37 PM, Baptiste Le Duc wrote:
>> [ ... 97 lines skipped ... ]
>> --- a/xen/arch/riscv/domain.c
>> +++ b/xen/arch/riscv/domain.c
>> @@ -51,6 +51,119 @@ static struct csr_masks __ro_after_init csr_masks;
>>   #define HENVCFG_VALID_MASK 0xe0000003000000ffUL
>>   #define HSTATEEN0_VALID_MASK 0xde00000000000007UL
>>   
>> +/*
>> + * Return the hstatus.VSXL value encoding the guest's XLEN. Whether the
>> + * hardware can actually provide that width is a separate question, answered
>> + * by hstatus_vsxl_settable().
>> + *
>> + * The switch() deliberately has no default case, so that adding a new
>> + * domain_type (a 128-bit one, in particular) fails to build until this
>> + * mapping is updated.
>> + */
>> +unsigned int domain_vsxl(const struct domain *d)
>> +{
>> +    switch ( d->type )
>> +    {
>> +    case DOMAIN_32BIT:
>> +        return XLEN_FIELD_32;
>> +
>> +    case DOMAIN_64BIT:
>> +        return XLEN_FIELD_64;
> Couldn't we add to avoid having to explain why there is no default in
> the comment above, and to respect MISRA rules?
> default:
>      break

I'd rather not: d->type is an enum, and for those Xen deliberately omits
the default label, as -Wall enables -Wswitch, which breaks the build
(-Werror) if one of the enum's values isn't handled. A default label
would silence exactly that check. MISRA-wise this is covered by the
R16.4 deviation for switches on enums.

I'll move the explanation into the switch() itself, though, and mention 
-Wswitch there, which should make the intent clearer:

...
     case DOMAIN_64BIT:
         return XLEN_FIELD_64;

     /*
      * No default case: -Wswitch then fails the build should a new
      * domain_type (a 128-bit one, in particular) be added without
      * updating this mapping.
      */
     }
...

>> +    }
>> +
>> +    ASSERT_UNREACHABLE();
>> +
>> +    /* A reserved encoding, which hstatus_vsxl_settable() never accepts. */
>> +    return 0;
> Could this get a name next to XLEN_FIELD_{32,64,128} in riscv_encoding.h,
> e.g.:
> 
> #define XLEN_FIELD_RESERVED     _UL(0)
> so the comment isn't the only thing explaining the 0?

Sure, I'll add XLEN_FIELD_RESERVED and return it there.

>> [ ... 88 lines skipped ... ]
>> +
>>   void __init init_csr_masks(void)
>>   {
>>       /*
>> @@ -91,6 +204,10 @@ static void vcpu_csr_init(struct vcpu *v)
>>   {
>>       v->arch.hedeleg = HEDELEG_DEFAULT & csr_masks.hedeleg;
>>   
>> +    /*
>> +     * hstatus.VSXL is left zero here: the domain's type, and hence the
>> +     * guest's XLEN, is only known once its kernel image has been probed.
>> +     */
> 
> "Probe" refers to two different things in this series: the hardware
> probe of the settable hstatus.VSXL values (init_hstatus_vsxl_settable_mask())
> and the guest kernel header parsing (kernel_probe()). This comment is
> about the latter, but it is easy to read it as the former, which already
> ran at boot. Could you name it explicitly and state the ordering that
> actually matters? I'd suggest:
> 
>      /*
>       * hstatus.VSXL is left zero here: vCPU0 is created before
>       * kernel_probe() reads the guest kernel header, so the domain's type,
>       * and hence the guest's XLEN, is not known yet.
>       */
> 
Your suggested rewording looks good to me. I'll take your wording, and 
name kernel_probe() in the commit message as well, which has the same 
ambiguity.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 12:25:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 12:25:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476547.1682596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJ0W-0001PT-0z; Fri, 06 Nov 2026 12:25:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476547.1682596; Fri, 06 Nov 2026 12:25:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJ0V-0001PM-TX; Fri, 06 Nov 2026 12:25:23 +0000
Received: by outflank-mailman (input) for mailman id 1476547;
 Fri, 06 Nov 2026 12:25:22 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b0d20fa3000403d@swg.vates.tech>)
 id 1xPJ0T-0001PF-Bm
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:25:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPJ0S-001k1A-OU
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:25:20 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b0d20fa3000403d@swg.vates.tech>)
 id 6aedc72c-2eae-0a2a0a5409dd-0a2a45039bb0-24
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:25:20 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b0d20fa3000403d@swg.vates.tech>)
 id 6aedc730-fae8-0a2a45030019-b9ff1c238dd7-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:25:20 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b0d20fa3000403d.004 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 12:25:19 +0000
Received: from [192.168.1.18] (88-188-240-210.subs.proxad.net [88.188.240.210])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 0831D815D3;
 Fri,  6 Nov 2026 13:25:18 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=I7fboQ6hhB1brI/ZQ/qVJ3o+uat7fM4QGfOPqSPZYbU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=ndpqkN/MSnMC4/Fz7EELhLuvUWVn0AY9rWgKN46itFDGNbH6oLF8SqnkJcZsTZx0yAwd607cm
 OnFk8A3QfZdcU+HSmw3v8C7/BAWmU0UbeTDRMKLu2GfoY+yHprZk+6KWCLJ1V1Nm/43s2gQ9CiE
 WzJP1WTTObk5tMEaTLjo4SGBHJZjQPcMBG3foDiY0ExwVlvNGQIELUTqMCSROkQ2S4w+KeitIJP
 FEEkvJbrMex7H31vazH2j7hz37BQEG5bOch30sIdUGQCJe6ioHizjtI3KxJ71LlmzRjzliVbkAl
 aNhRDdFwRhQmAwOrvBPqcdIjwmViZsG6u4QQc3lZNXSw==
X-Zone-Loop: 07bca7c211d699a0d85b4c640b81fbd851a7d4230c2c
x-campaign-type: default
x-transaction-id: d540402b-3f1f-4afe-afba-d0872de50ce3
x-swg-uid: 01-659de91f-66ba-462c-bcd4-34986226e910
X-Mailer: Sweego
Message-ID:
 <1793967919.8631fc262581453bbf619ec5b2062170.1a1b0d20fa3000403d@vates.tech>
x-swg-bid: 1793967919.8631fc262581453bbf619ec5b2062170.1a1b0d20fa3000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Fri, 6 Nov 2026 13:25:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 03/28] x86/hvm: report SVM x2AVIC support
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-4-dmukhin@ford.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261105013347.719392-4-dmukhin@ford.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------vMQ8KXmX8yrprnEKqyr6r249"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793967918188
X-purgate-ID: tlsNG-33051d/1793967920-76CF84E9-F96BD973/0/0
X-purgate-type: clean
X-purgate-size: 7939

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------vMQ8KXmX8yrprnEKqyr6r249
Content-Type: multipart/mixed; boundary="------------wNns3wKY6lNt6B8E7MgV0IjT";
 protected-headers="v1"; hp="clear"
Message-ID: <3c763222-85e6-40e7-988e-19470407bbe1@vates.tech>
Date: Fri, 6 Nov 2026 13:25:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 03/28] x86/hvm: report SVM x2AVIC support
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-4-dmukhin@ford.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261105013347.719392-4-dmukhin@ford.com>

--------------wNns3wKY6lNt6B8E7MgV0IjT
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

TGUgMDUvMTEvMjAyNiDDoCAwMjozNywgZG11a2hpbkBmb3JkLmNvbSBhIMOpY3JpdMKgOg0K
PiBGcm9tOiBEZW5pcyBNdWtoaW4gPGRtdWtoaW5AZm9yZC5jb20+DQo+IA0KPiBSZXBvcnQg
U1ZNIEFWSUMgc3VwcG9ydCBmcm9tIENQVUlEIEZuODAwMDAwMEFfRURYW1gyQVZJQ10oYml0
IDE4KS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IERlbmlzIE11a2hpbiA8ZG11a2hpbkBmb3Jk
LmNvbT4NCj4gLS0tDQo+ICAgeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgICAgICAgICB8
IDEgKw0KPiAgIHhlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9odm0vc3ZtLmggfCAyICsrDQo+
ICAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQg
YS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2
bS5jDQo+IGluZGV4IGNmMDA4YThhY2RmMi4uZGI4MWRhZDRiNjgxIDEwMDY0NA0KPiAtLS0g
YS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZt
L3N2bS9zdm0uYw0KPiBAQCAtMjQ1Nyw2ICsyNDU3LDcgQEAgc3RhdGljIHZvaWQgX19pbml0
IHByaW50X3N2bV9mZWF0dXJlcyh2b2lkKQ0KPiAgICAgICBQKGNwdV9oYXNfc3ZtX3ZubWks
ICJWaXJ0dWFsIE5NSSIpOw0KPiAgICAgICBQKGNwdV9oYXNfc3ZtX2J1c19sb2NrLCAiQnVz
IExvY2sgRmlsdGVyIik7DQo+ICAgICAgIFAoY3B1X2hhc19zdm1fYXZpYywgIkFkdmFuY2Vk
IFZpcnR1YWwgSW50ZXJydXB0IENvbnRyb2xsZXIiKTsNCj4gKyAgICBQKGNwdV9oYXNfc3Zt
X3gyYXZpYywgIngyIEFkdmFuY2VkIFZpcnR1YWwgSW50ZXJydXB0IENvbnRyb2xsZXIiKTsN
Cj4gICAjdW5kZWYgUA0KPiAgIA0KDQoieDIgQWR2YW5jZWQgVmlydHVhbCBJbnRlcnJ1cHQg
Q29udHJvbGxlciIgbG9va3MgYSBiaXQgd2VpcmQgdG8gbWUuDQoNCldoYXQgYWJvdXQgIngy
QVBJQyBBVklDIiA/DQooYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFkZGluZyAiKEFWSUMpIiB0
byB0aGUgZ2VuZXJhbCBBVklDIG9uZSwgbGlrZSANCndoYXQgaXMgZG9uZSBmb3IgTlBUIGJl
aW5nIG5hbWVkICJOZXN0ZWQgUGFnZSBUYWJsZXMgKE5QVCkiKQ0KDQo+ICAgICAgIGlmICgg
IXByaW50ZWQgKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h2
bS9zdm0uaCBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9odm0vc3ZtLmgNCj4gaW5kZXgg
MGZjMzNmNDFiMDlkLi4yOTJhOWVlMTliMTEgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4
Ni9pbmNsdWRlL2FzbS9odm0vc3ZtLmgNCj4gKysrIGIveGVuL2FyY2gveDg2L2luY2x1ZGUv
YXNtL2h2bS9zdm0uaA0KPiBAQCAtMzYsNiArMzYsNyBAQCBleHRlcm4gdTMyIHN2bV9mZWF0
dXJlX2ZsYWdzOw0KPiAgICNkZWZpbmUgU1ZNX0ZFQVRVUkVfQVZJQyAgICAgICAgICAxMyAv
KiBBZHZhbmNlZCBWaXJ0dWFsIEludGVycnVwdCBDb250cm9sbGVyICovDQo+ICAgI2RlZmlu
ZSBTVk1fRkVBVFVSRV9WTE9BRFNBVkUgICAgIDE1IC8qIHZpcnR1YWwgdm1sb2FkL3Ztc2F2
ZSAqLw0KPiAgICNkZWZpbmUgU1ZNX0ZFQVRVUkVfVkdJRiAgICAgICAgICAxNiAvKiBWaXJ0
dWFsIEdJRiAqLw0KPiArI2RlZmluZSBTVk1fRkVBVFVSRV9YMkFWSUMgICAgICAgIDE4IC8q
IHgyIEFkdmFuY2VkIFZpcnR1YWwgSW50ZXJydXB0IENvbnRyb2xsZXIgKi8NCj4gICAjZGVm
aW5lIFNWTV9GRUFUVVJFX1NTUyAgICAgICAgICAgMTkgLyogTlBUIFN1cGVydmlzb3IgU2hh
ZG93IFN0YWNrcyAqLw0KPiAgICNkZWZpbmUgU1ZNX0ZFQVRVUkVfU1BFQ19DVFJMICAgICAy
MCAvKiBNU1JfU1BFQ19DVFJMIHZpcnR1YWxpc2F0aW9uICovDQo+ICAgI2RlZmluZSBTVk1f
RkVBVFVSRV9WTk1JICAgICAgICAgIDI1IC8qIFZpcnR1YWwgTk1JICovDQo+IEBAIC01Nyw2
ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcHVfaGFzX3N2bV9mZWF0dXJlKHVuc2ln
bmVkIGludCBmZWF0KQ0KPiAgICNkZWZpbmUgY3B1X2hhc19wYXVzZV90aHJlc2ggIGNwdV9o
YXNfc3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfUEFVU0VUSFJFU0gpDQo+ICAgI2RlZmluZSBj
cHVfaGFzX3RzY19yYXRpbyAgICAgY3B1X2hhc19zdm1fZmVhdHVyZShTVk1fRkVBVFVSRV9U
U0NSQVRFTVNSKQ0KPiAgICNkZWZpbmUgY3B1X2hhc19zdm1fYXZpYyAgICAgIGNwdV9oYXNf
c3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfQVZJQykNCj4gKyNkZWZpbmUgY3B1X2hhc19zdm1f
eDJhdmljICAgIGNwdV9oYXNfc3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfWDJBVklDKQ0KPiAg
ICNkZWZpbmUgY3B1X2hhc19zdm1fdmxvYWRzYXZlIGNwdV9oYXNfc3ZtX2ZlYXR1cmUoU1ZN
X0ZFQVRVUkVfVkxPQURTQVZFKQ0KPiAgICNkZWZpbmUgY3B1X2hhc19zdm1fc3NzICAgICAg
IGNwdV9oYXNfc3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfU1NTKQ0KPiAgICNkZWZpbmUgY3B1
X2hhc19zdm1fc3BlY19jdHJsIGNwdV9oYXNfc3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfU1BF
Q19DVFJMKQ0KDQo=

--------------wNns3wKY6lNt6B8E7MgV0IjT--

--------------vMQ8KXmX8yrprnEKqyr6r249
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsD5BAABCAAjFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmrtxy0FAwAAAAAACgkQZg+p0QLLz9Cs
fgv6A+w7xICeIgBL1n/baKbou+ObVhjCJTr6oLoUExKGL0lUgPvNw4pNYIXHCJnX6LWo6CAUuHWV
pYSP9PWzTCBGhXRFy1wPsJtFfmglyVlCVuJ7h9w/ac7mYqtuKgSE37rqwFdr0DLwJZG2XXqyz2Uc
BU9R3j4KzF4SL2UKiVdQ+ZAsgbkfEeutZMf7YMesRYk/+KPrvUCCuAJkQJK5CAvIc+ChWLIg80sM
UqAGXVtUwjod4JenB7BiJKPPy63V/4/NsEF7pEIRCDye95YduCaFQF9wuEmfToIYA5PCJOqggZGv
93aT6PMBA0GHeWCGkTja9GtdGnxiKJ2UZhfW99JAh9yjReabZR8HapEU9kM7XDVLP3I9EROyiUwh
zis4J8XZoX+dhcIrf9RC10CtIqo+lAHW5y7dVmTdIFf23PzQBVCEyqrdaUS03ZuKnL/YAxyxum64
cwaDdBpj47yFs3MaGnrE2YHBTpKk+5QQ1xEbkWT53qL+vBLbXwkldYePBTew
=68P2
-----END PGP SIGNATURE-----

--------------vMQ8KXmX8yrprnEKqyr6r249--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 12:31:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 12:31:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476560.1682603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJ6d-0003KJ-Kq; Fri, 06 Nov 2026 12:31:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476560.1682603; Fri, 06 Nov 2026 12:31:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJ6d-0003KC-HX; Fri, 06 Nov 2026 12:31:43 +0000
Received: by outflank-mailman (input) for mailman id 1476560;
 Fri, 06 Nov 2026 12:31:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPJ6c-0003K6-2U
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 12:31:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPJ6b-00CtaJ-FJ
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:31:41 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedc8aa-bab6-0a2a0a5309dd-0a2a45088d9c-10
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:31:41 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6aedc8ad-f659-0a2a45080019-d1558030e104-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 13:31:41 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4afe2d546f9so7274255e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 04:31:41 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b6e1b5d745sm51679815e9.6.2026.11.06.04.31.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 06 Nov 2026 04:31:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1793968301; x=1794573101; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=VekLoelMDz98u4a3t38Xf/FqPMtqclmZQXjTRdGMY/4=;
        b=0Si9aryadhTqGU9jI2dIlcOYwjfUk4NMNkYMV+A0+K2xZ6HtLYTJ7OToPuQ9C0ixQH
         JV1LNNOpek9ruW171N34TX6jyw5AAh97PlP7mW+AeGtd3u1ZHTG7I1XRJMnswO5QFXl6
         XC5pKzvwuaSKCeg4Kfkf8+ErDk1e4+JrgM/5Y8DkhRcN+GUasjO5qQguw7SjI9GJEWyM
         /YzGdtXwbmob+SBfOlJWpqd/Ywmc2jkZ+3nGSvVPt0Mqhgr/H6lUhIf4s2wWFooR4znS
         efmPW4MDubww0BMee8gKWZuQQQgvjVPVjY0LbX/ioAGXBU4O1EFJxVQjdlxo5DbI4hN8
         Wkgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793968301; x=1794573101;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=VekLoelMDz98u4a3t38Xf/FqPMtqclmZQXjTRdGMY/4=;
        b=Dbx4u/GCo8LC+0K2GZuJyHjSDA4lU0RiLnLS2rfvR1z0cPRWvkB2IouFxGVqfr+7/h
         RMzZiNz7FRx/kczy8BEBLcL/hgEkUvUu8C4SB9OK76CQGoAy9aKoKoD+v4zyn9BMAJWN
         gI/gK3rnqQrJ7HnCjpKh3prX39lrx/r0LDQo86I4Kag8ceqoWpMDkRaM1wjPZcf2jkeb
         TeRrecn+YpVMzhcKvZHoRuM9xhbWBvwT6384NVrO2yd5tRpGpytQKk824RRqwsHtGIgx
         xJVzB/rxnriYhGCt+yUzKLs+OZXy14cOFs9SJKlQh837MDH6DN/FyPDZfbWdWuP7TVOy
         aH/w==
X-Gm-Message-State: APuU4Z9wHSenNzfOLBWoCZMDyQ9JS125H3XvZ+j1VsRnWBS1nY7pJKZc
	mFC2gAXyREVC/lnF00RrCA+zsveX3zq+6Elxef0lBm0TnICHcqbCSWbf
X-Gm-Gg: AYBFou12Nf1TkbhmYtjQGn232EWIVHD6diFV3ocDtSJ8LiPCOr9qQeqZq95jbkCNiZz
	GXhLZPSjfL8snskPoxcDoEnNyHw9fSZjVdG35+TjNQptZht6+6EcPxLtzzxxAFhdeIugvIVsOos
	XU1r6xYFOxZJt+d0pI0Qmyo6Ywlf0M/ay4l+t4y4gjOCtX6JCuzIjSoKQda+pgBwIsNRIXwZkHe
	oSzMSSglwJNvdWPRRE+6nQ2cvd3FT8EQ4zKrrj/zD5OFc+MuoD5z1FU7S8/ORB1kHdmvB+HYo5f
	Gg064/mTAi3Xl8tfIrT194xENbRUDAOLaxxGw8JQRSWRRG1sTlG+S15z26d2X03qBQfsHG8Tbh4
	wgfa4Spj92kqXfkv4ntuJV62NRaqUfZAYRQUTxzBRlepWYlhKWWbQPvhZSvI8MVDli7GN4Wr1MX
	9pNx2Pwy7wpeNHAcSqfcieI1R8G0yvmYmfpNKzx/8qvKg3NA4hCDrOKF+c5aOv10ZVa+HWGvonN
	EitgCtmml1wZwgmPfclqGvqp+SxwMGtSeDeZIqq81frglm3I9IuKkzrcn9ULpcKPiQFSvvmVq+n
	ZjIb/sasDgZyvgKL+Vi0O3NLIGoCvSlBIiFbjrYg2bSxbx0YiDRHT9tN6f6I4vRH8scPjWImKhW
	8
X-Received: by 2002:a05:600c:8b01:b0:4a3:5a7b:6002 with SMTP id 5b1f17b1804b1-4b6dff841afmr40066665e9.28.1793968300840;
        Fri, 06 Nov 2026 04:31:40 -0800 (PST)
Message-ID: <9611989e-a1ef-4bf7-af80-b96d6c3a68ca@gmail.com>
Date: Fri, 6 Nov 2026 13:31:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 39/39] xen/riscv: introduce IMSIC h/w interrupt file
 attaching to vcpu
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <fa5788d0133c98ae3feac474da325239d27ed153.1790779209.git.oleksii.kurochko@gmail.com>
 <1793804802.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793804802.8631fc262581453bbf619ec5b2062170.1a1a71918bf000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1793968301-D654487B-EE2C8A66/10/73395122804
X-purgate-type: spam
X-purgate-size: 2725



On 11/4/26 4:06 PM, Baptiste Le Duc wrote:
>> Introduce imsic_vsfile_attach() to give a vCPU a working guest
>> interrupt file.
>>
>> A guest (VS) interrupt file has to be backed by one of the hardware
>> guest interrupt files of the pCPU the vCPU runs on, so that pCPU has to
>> be known first. arch_vcpu_create() is therefore not a suitable place:
>> the pCPU assigned to a vCPU can still change before the vCPU is first
>> scheduled, which would mean taking another file and remapping the
>> guest's IMSIC page to it. Call imsic_vsfile_attach() from
>> continue_new_vcpu() instead, i.e. when the vCPU is scheduled for the
>> first time; as that isn't an __init context, neither is
>> imsic_vsfile_attach().
>>
>> Giving a vCPU its first file shares most of the steps with moving it to
>> a new one on migration, so move the body of imsic_migrate_vcpu() to
>> imsic_vsfile_move() and use it for both. Its first_attach argument skips
>> the part which moves the interrupt state out of the old file: the vCPU
>> has never run at that point, so the freshly acquired and zeroed file is
>> all the interrupt state it has, and hstatus.VGEIN can be pointed at it
>> right away.
>>
>> vAPLIC target registers are reconfigured on the first attach as well: a
>> target the guest writes for a vCPU which has no h/w guest interrupt file
>> yet only updates the stored copy, which reaches the h/w at this point.
>>
> Nit: I didn't quite understand this paragraph, "only updates"
> leaves out that the h/w APLIC write is skipped, because there is no file
> to point the target at yet. Maybe something like:
> 
>      The guest may program a vAPLIC TARGET register for a vCPU which has
>      not run yet. That vCPU has no h/w guest interrupt file yet, so
>      vaplic_mmio_write() only stores the value. imsic_vsfile_move() then
>      writes it to the h/w APLIC on the first attach, pointing to the newly
>      acquired file.
> 

Agreed, I'll reword it along those lines, naming vaplic_target_write(),
which is where the value gets stored, and vaplic_reconfigure_target(),
which is what writes it to the h/w APLIC on the first attach:

```
The guest may program the vAPLIC target register of a h/w source for a
vCPU which hasn't run yet. That vCPU has no h/w guest interrupt file
yet, so there is nothing to point the h/w target register at, and
vaplic_target_write() only stores the value. Hence imsic_vsfile_move()
calls vaplic_reconfigure_target() on the first attach as well, which
writes the stored value to the h/w APLIC, pointing it at the newly
acquired file.
```

> Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>
> 

Thanks for the review!

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:26:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:26:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476590.1682612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJxQ-0004MI-HZ; Fri, 06 Nov 2026 13:26:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476590.1682612; Fri, 06 Nov 2026 13:26:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPJxQ-0004MB-Ez; Fri, 06 Nov 2026 13:26:16 +0000
Received: by outflank-mailman (input) for mailman id 1476590;
 Fri, 06 Nov 2026 13:26:15 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@swg.vates.tech>)
 id 1xPJxP-0004M5-7W
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:26:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPJxO-00HYVb-8o
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:26:14 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@swg.vates.tech>)
 id 6aedd566-8faa-0a2a0a5109dd-0a2a4501d2a0-36
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:26:14 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@swg.vates.tech>)
 id 6aedd575-5984-0a2a45010019-b9ff1c229c81-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:26:14 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b109bd79000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 13:26:07 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 1A7E981B95;
 Fri,  6 Nov 2026 14:26:07 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=Hmgxji7An4mAochBznqTOQkl4o+11pRrXV6Aur32hg8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=K/RYsSw5DYRKD93vK9p8XaDQhwvY9Od+dx4deaE9C/KUXmg/pWWp38Ma9OgLNrP6S0AmEHGRb
 PvotO3NroxMxs7fCN8Bpf+bGKdFqyGs82cPiJhWI1bJGVPH3fJSP7F70BVkLL7EGa3D00w5Gpt5
 KRY3ql9roKPX/UTLLEYLVGIgG2zmkiPScq5MJd8a4UYQEjAqBg0Byde+MC3zNJfFs2+FbBWJ8tj
 tXNNxuaIUGvajNlej/FPH41PT/h5e/7Q/tJwEXU6xxIBN04OQbNWv2VM8ZnW3QORVm/kYxopCmV
 vTfRrqBtTBv0I/MdZbC7gfjqMeMD0VGHxGJKP6karNyQ==
X-Zone-Loop: 00e2ba4c386efe7d8d29ca7461ea935329c8c697adea
x-campaign-type: default
x-transaction-id: a02dec0c-777f-4b15-9e29-e396507bca9b
x-swg-uid: 01-bca9a514-cc23-4df6-ad55-a523a5484a5f
X-Mailer: Sweego
Message-ID:
 <1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@vates.tech>
x-swg-bid: 1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 31/39] xen/riscv: remap interrupts to new IMSIC
 VS-file
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <45011daea86267b8f4b707bc7de6357b0712fb08.1790779209.git.oleksii.kurochko@gmail.com>
 <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
 <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
Date: Fri, 06 Nov 2026 14:26:01 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793971561; l=4248;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=kuM5tW8smaEVGTEfyFm0ZRaxZR+ZvXFPIDpY0dPaKXk=;
 b=Ju/USQ2fgsb1F/Vz56w/Rru/ksYyQgUp18454DRd0IlEX6RYIK5TGfZ8qVNR0f+CX2rU8Sy0d
 GPGh5pxb9K8D5d2U4ApN0dI3ODhfKHjB/1SHaBY7o8IaCvAcYq519Ma
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793971567336
X-purgate-ID: tlsNG-d62444/1793971574-BDC79757-1EB08475/0/0
X-purgate-type: clean
X-purgate-size: 4248

On 2026-11-05 17:57 +0100, Oleksii Kurochko wrote:
> [ ... 52 lines skipped ... ]
> 
> > At this point vgein_assign()
> > is still BUG_ON("unimplemented") too, so none of the new code can
> > actually run, and the error path can't be reviewed against the real
> > vgein_release().
> > 
> > Also, until "introduce IMSIC h/w interrupt file attaching to vcpu", no
> > vCPU ever owns a h/w file, so imsic_migrate_vcpu() can only hit the
> > CPU_NONE check.
> > 
> > Wouldn't it be simpler to move the two already-acked patches and the
> > attach first, so that no stubs are needed and each migration step is
> > written against its real callees when it lands:
> > - Add basic VGEIN management for AIA guests (real vgein_assign() and
> >    vgein_release(); the reason for the explicit cpu argument of
> >    vgein_release() would then have to go into this commit message)
> > - Map IMSIC interrupt file for vCPUs (real imsic_map_guest_file())
> 
> I think I have such order before and it was changed becuase for locks in 
> the first patch it wasn't enough context to understand if they are 
> needed or not.
> 
> > - Implement continue_new_vcpu() and set hstatus.VSXL
> > - Attach a h/w interrupt file to a vCPU on its first run, introducing
> >    imsic_vsfile_acquire() and imsic_update_state() with their first user
> >    (acquire, vaplic_reconfigure_target(), set hstatus.VGEIN)
> > - Prepare new IMSIC VS-file (on top of imsic_vsfile_acquire())
> > - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
> > - Remap interrupts to the new IMSIC VS-file (APLIC retarget + sync)
> > - Save/clear old VS-file, restore, SGEI wake-up as today
> > 
> > A side benefit: attach no longer has to be squeezed into the finished
> > migration code, so imsic_vsfile_move() with its first_attach argument
> > and the goto set_vgein go away. Attach stays a plain sequence, and
> > imsic_migrate_vcpu() simply reuses imsic_vsfile_acquire().
> 
> I'm fine with that order. It does mean that "add basic VGEIN management"
> and "map IMSIC interrupt file for vCPUs" introduce functions whose first
> user only comes with the attach patch a few patches later. If that's
> acceptable, I'll add a post-commit note to each of them saying where the
> functions get used (as IIUC, they will first introduced and then used in 
> later patches).
>
Yes, the post-commit notes are fine with me. IMO it's better to introduce
the real functions before their first caller, even if that caller only
lands a few patches later, than to write callers against stubs. That way
each migration step is written against its real callees, and the order
follows how IMSIC actually works: a vCPU gets a file on its first run,
and only then can that file be migrated.

The locks in the VGEIN patch would then get a real user a few patches
later (the attach patch), and that patch's commit message can explain
why they are needed.

What do you think of something like this, after "introduce
vaplic_reconfigure_target()"?

- Set the guest's XLEN explicitly in hstatus.VSXL (moved before
  continue_new_vcpu(), with the vcpu_set_vsxl() call added to its stub,
  so that no commit enters a guest with an undefined VSXL)
- Implement continue_new_vcpu()
- Add basic VGEIN management for AIA guests (acked; the commit message
  would have to explain the explicit cpu argument of vgein_release())
- Map IMSIC interrupt file for vCPUs (acked)
- Attach a h/w interrupt file to a vCPU on its first run, introducing
  imsic_vsfile_acquire() and imsic_update_state() with their first user
=== migration
- Implement APLIC-IMSIC-hart sync barrier for vCPU migration
- Remap interrupts to the new IMSIC VS-file ("Prepare new IMSIC VS-file"
  folded in, as with imsic_vsfile_acquire() already there it is reduced
  to a single call)
- Save and clear the old IMSIC VS-file on vCPU migration
- Restore register state in the new IMSIC VS-file
- Wake up a descheduled vCPU on a guest external interrupt (last, as it
  arms HGEIE in imsic_migrate_vcpu() and clears it in
  imsic_vsfile_local_read_clear())

But I'm not an expert in patch series management, so I may be wrong.

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:32:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:32:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476601.1682621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK2n-0006GH-4f; Fri, 06 Nov 2026 13:31:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476601.1682621; Fri, 06 Nov 2026 13:31:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK2n-0006GA-24; Fri, 06 Nov 2026 13:31:49 +0000
Received: by outflank-mailman (input) for mailman id 1476601;
 Fri, 06 Nov 2026 13:31:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b10edd37000403d@swg.vates.tech>)
 id 1xPK2m-0006G4-Cv
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:31:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPK2l-00D3BR-PY
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:31:47 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b10edd37000403d@swg.vates.tech>)
 id 6aedd6b1-bab6-0a2a0a5309dd-0a2a45078b6e-26
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:31:47 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b10edd37000403d@swg.vates.tech>)
 id 6aedd6c3-b4ea-0a2a45070019-b9ff1c2381bf-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:31:47 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b10edd37000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 13:31:43 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 0FB0381169;
 Fri,  6 Nov 2026 14:31:43 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=u8mm/KHvTwp0R3EYoIGhIknm360bF8HWMXGQ5Pgekjg=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=BKJI3ysWe4PAsPir+txe2pjX2Gui0vgYezTHBEMJ7SpzsJJyz2lTa5u71uCOb4//F4cVVu/s4
 XxjiQ0/ozabWPF6FjOnrsFqfN1LkmMqjqDhCXBKtr8v67PI7m5tveLpWlryJzYm5JxCNWfRJlES
 6VBoMqHsqn+xF7smHxBTGaflRL/l8taGbxz/Ya67+xd5cAylWues4ZDHTPa1PbBYEcI2VH3QGQ7
 TSw4boY3ESIRscBJDQW1L+PzjJ6XSTClyrERfte4h4/DdURuE0UWB80CujAWuYPOYcXcfxTuQQv
 dw121nwoliKzgTVwEQ7AxfJtkvCX1wUMio0I29MUf7AQ==
X-Zone-Loop: e5d0cccfd4e5059aec3db6d354f4dd2e5e1dcd6bcd59
x-campaign-type: default
x-transaction-id: 9bec9bf5-8fe5-4549-983d-22cd8e352259
x-swg-uid: 01-743ec78e-7e92-4c66-90c4-dfd4e7f0bb1d
X-Mailer: Sweego
Message-ID:
 <1793971903.8631fc262581453bbf619ec5b2062170.1a1b10edd37000403d@vates.tech>
x-swg-bid: 1793971903.8631fc262581453bbf619ec5b2062170.1a1b10edd37000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 32/39] xen/riscv: save and clear the old IMSIC
 VS-file on vCPU migration
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <83bd8ba2-9053-44ac-a15e-fa6ea52429e2@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <e2cf140c63b1f1cff8e63988f82fff7e2b063c84.1790779209.git.oleksii.kurochko@gmail.com>
 <1793721767.8631fc262581453bbf619ec5b2062170.1a1a22617dd000403d@vates.tech>
 <83bd8ba2-9053-44ac-a15e-fa6ea52429e2@gmail.com>
Date: Fri, 06 Nov 2026 14:31:37 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793971897; l=1808;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=zi3EUhfwD0gPRC0bg6MU/NxnUzBSDu/tgMxeWG3QGn8=;
 b=kNwC1/1CoCRCq6McEiFcjLOncghtYSET7i+q15GDI8mvcsXYQ9b4i9I6Wxx2scFRqcNG9PQDK
 XqpXlODiOwOB98JRdSSw90CCSBvA+K+Ssk77e/u+LjJ7JA6ztUgiu9k
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793971903274
X-purgate-ID: tlsNG-ef75cf/1793971907-A58C1AE4-9D093456/0/0
X-purgate-type: clean
X-purgate-size: 1808

On 2026-11-06 10:52 +0100, Oleksii Kurochko wrote:
> [ ... 25 lines skipped ... ]
> > I think it's worth mentioning that this MRIF structure could be reused
> > for software interrupt files later.
> 
> I'm fine with making that explicit. I tried to cover it with "... a vCPU
> which doesn't own a guest interrupt file ...", and adding "hardware"
> should make it clearer: "... a vCPU which doesn't own a hardware guest
> interrupt file ...". I think that covers your suggestion as well, so
> I'll add it.
> 
> To be honest, I'm a bit unsure how much to say about software interrupt 
> files at this point: some earlier commit messages mentioned them, and I 
> was asked to drop that, as they are neither introduced nor used yet.
> That's why I'd rather keep the wording implicit as above, but if you
> still prefer them to be named explicitly, I can add a sentence.

Agreed, keep it implicit.

> 
> At this point, I'm honestly getting a bit confused about how commit 
> messages are supposed to be written.

Sorry for the confusion. I'm generally not a fan of mentioning things
which don't exist yet, but here the commit message explains why the MRIF
layout is used, and the spec ties MRIFs closely to s/w interrupt files,
so I wondered whether a short hint would help. The implicit wording is
fine too.

I should have marked it as a nit. As I said before, your commit messages
are great, and this was just my subjective opinion, possibly partly
because I'm not a native English speaker. Feel free to discard such
remarks whenever you don't find them accurate ;)
> [ ... 49 lines skipped ... ]
> > Nit: is this blank line really needed?
> > 
> 
> No real need. Lets drop it.
> 
> Thanks for review!
You're wecome!

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:34:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:34:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476610.1682630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK53-0006mh-FZ; Fri, 06 Nov 2026 13:34:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476610.1682630; Fri, 06 Nov 2026 13:34:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK53-0006ma-Ce; Fri, 06 Nov 2026 13:34:09 +0000
Received: by outflank-mailman (input) for mailman id 1476610;
 Fri, 06 Nov 2026 13:34:08 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b110fd2f000403d@swg.vates.tech>)
 id 1xPK52-0006mU-On
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:34:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPK52-0009DR-5L
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:34:08 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b110fd2f000403d@swg.vates.tech>)
 id 6aedd74d-e002-0a2a0a5209dd-0a2a4508ca2c-2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:34:08 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b110fd2f000403d@swg.vates.tech>)
 id 6aedd74f-f659-0a2a45080019-b9ff1c23adf1-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:34:08 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b110fd2f000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 13:34:03 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id E162A80971;
 Fri,  6 Nov 2026 14:34:01 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=ivQuQ+zm0jQ6y7VVQV/A9llywgQpwXwwjcyfirzrv0k=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=t3HH9QemAXcybJF5+AbMJ71ijyILEShJID37L6N7d4vRixH2JE8mZBH0UCrvg0g1v25u7WlRw
 GNJkaoaVGvqYmsAEJQZL1KH9SD6Kl9JW5BdRDKTGjjYIn/TTWpEicjilSg2avKdZmxf7NQm5zZv
 ZqCKKanqHWJtRpix6c24WyO5Y3mHspG/JH5WdHHJcEtisoDLbeGcZ6V+ZaiTKtKxbdIplAw5gmw
 GxjnnOVWrCpH+LaOI4a/RWSCDLSjHzUyfTvh/JYcps37UCFOaxduIFDCf39dLNQwDJsyRHbTlno
 tek6+TIUMyzwycBdMSuyzKecz2h1G8hOjfGdJaKAfuJw==
X-Zone-Loop: 5443369efdf31c28f69f88b4603016c6834fe656a9e2
x-campaign-type: default
x-transaction-id: 28742125-24b9-4beb-9093-f3268cc07362
x-swg-uid: 01-2bceac34-d49b-4cad-8285-e55a6cf2a468
X-Mailer: Sweego
Message-ID:
 <1793972043.8631fc262581453bbf619ec5b2062170.1a1b110fd2f000403d@vates.tech>
x-swg-bid: 1793972043.8631fc262581453bbf619ec5b2062170.1a1b110fd2f000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 33/39] xen/riscv: restore register state in the new
 IMSIC VS-file
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <8a546a01-9d3f-4d63-bb56-658d635fed33@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <9e77a699eb6c99fa8f444d5777da189fdd30679e.1790779209.git.oleksii.kurochko@gmail.com>
 <1793724321.8631fc262581453bbf619ec5b2062170.1a1a24d1057000403d@vates.tech>
 <8a546a01-9d3f-4d63-bb56-658d635fed33@gmail.com>
Date: Fri, 06 Nov 2026 14:33:56 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793972036; l=1043;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=Paap8PEvBwQhsPQcQwkXFl2ZD8bsv/KIxxpIa78GnrA=;
 b=s5QC1jvD9OxI3ruGMS6ZqshW52yw2F711zr84rHOrTlJxJTiijVrSWAKPBXEaKF/92r0vvBJs
 ylVTmVNkhyHBP72tKDrietmDrEgFtBuEt6Hx/KNHteIN9jXb7BTK8gy
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793972042128
X-purgate-ID: tlsNG-c1860d/1793972048-D5F4787B-F94DB0E1/0/0
X-purgate-type: clean
X-purgate-size: 1043

On 2026-11-06 11:04 +0100, Oleksii Kurochko wrote:
> [ ... 13 lines skipped ... ]
> I don't think it's needed. The barrier is there so that nothing gets
> lost from the old file: once the extempore MSI sent to the hart of the
> old file has arrived, every MSI the APLIC sent towards the old file
> before the retargeting has landed there, so what's read out of the old
> file is complete.
> 
> MSIs sent after the retargeting go to the new file, and they can keep
> arriving at any time, including while the saved state is being
> restored, so an extempore MSI to the hart of the new file wouldn't stop
> them anyway: it would only tell that the MSIs sent before it have
> arrived. That's why the saved eip/eie bits are ORed into the new file
> rather than written to it, so that whatever lands there in the meantime
> is kept, and why eidelivery is restored last, so that the new file
> doesn't deliver anything until its state is complete.
> 
Ok it's more clear thanks!

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:36:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:36:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476618.1682641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK77-0007PC-Rk; Fri, 06 Nov 2026 13:36:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476618.1682641; Fri, 06 Nov 2026 13:36:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPK77-0007P5-O0; Fri, 06 Nov 2026 13:36:17 +0000
Received: by outflank-mailman (input) for mailman id 1476618;
 Fri, 06 Nov 2026 13:36:16 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPK76-0007Oz-Bh
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:36:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPK75-006U8v-Dj
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:36:15 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aedd7cd-8faa-0a2a0a5109dd-0a2a450ae706-6
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:36:15 +0100
Received: from [52.101.52.68]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aedd7ce-f2d2-0a2a450a0019-34653444ead0-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:36:15 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA2PR03MB5883.namprd03.prod.outlook.com (2603:10b6:806:f9::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 13:36:12 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Fri, 6 Nov 2026
 13:36:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=s5PX6lraQzHX+bEu5ClWTtu4va+MvmfOVV3lNWWCA6SqMbV/2XuFmankfHBBeBUry5kjkKHOYvNgO/bcN84ZQB+WTBFHEwyK/lbK7Bk1jG1l9BLVWX1GsR/mJk0wpz89TOS5Djhp9gaLopfjvrNayGYD5kFiQWLx2cJ0XH2s8SjhQSLJ//z6YxipbszLw9e/nRgq9LWMcpEDEqgjUVV/uAeQJEeogsDTxMEIoD49iPMPMj+S4iRo5muH7q3QGn5gnN23y0rixXjYwJruSRSsq7MMAqo7JO4Au4bQHLf/QiYyRllMMCDm89UGMDFIahv+Cx1T0I9S1deifIp6DNP6eA==
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=erzpezTwBqVmoUW+km4miwxa18vvXmDgI3IQxTdV4R0=;
 b=AY1gmiP5DB1YtFPYwAcXLpUUG77obotn7E9abCwntxfZZrW5+YfZ+v6kvIWsOzZwE2zct+uhtNh58QLuf/WH/dIqlrGg70u1G1BXWvC3ZjGNA07gibToCnCaAJVW9N1ufStLvSklyeztjThecOnRtMcionKUeqhPkxzuTyp7GuOBwCCQ8KUS4sEo3HtAd2RiFGuag8K+vyANXgp/BJjjCY1e35BOEL0FerI7vu7VuxwWpQmQF6H3YKfSNdxPz/oW6Br3fsyMEPBUwjxYQnVYpYeln8q9AR7Um4YhX2DwiYX6N4rakmhgP0CoTvVGh8c+NqCljBChJ019SJTUoxh5YQ==
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=erzpezTwBqVmoUW+km4miwxa18vvXmDgI3IQxTdV4R0=;
 b=ugEz74sR3qQ/F5SNXABKG9zKP9U0wBzrA3IdmW1ARD+FMKmn3PBeJvUDRNB4cazpwbTeUtr4VhrhULZWgzfWv9jQC/6MZYhRDQamT7AKS418g1+lJ+Oa6x+68n5Xo6jD5wHpvHvTmskvbHt/hcTOAl2EhjWkHiwnQpBmOYgZGg0=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <91314054-b75e-4429-9358-c9bc95b40ecb@citrix.com>
Date: Fri, 6 Nov 2026 13:36:08 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 11/28] x86/hvm: introduce vcpu_is_vlapic_tpr_emulated()
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-12-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-12-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0441.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a9::14) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA2PR03MB5883:EE_
X-MS-Office365-Filtering-Correlation-Id: e4aee832-18da-4a8c-a9a2-08df3c0aec20
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|1800799024|366016|376014|261102123227099003|261009223027099003|261028144727099003|261021123027099003|261021121427099003|261022105027099003|261022075727099003|261026121527099003|261026140227099003|11063799006|4143699003|56012099006|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	F5vmgvJlHul3YQrC/8sV0ivXTfu0dKSOMvRNwftwjFfHqmOOJxjTGTZ27fhCgPYIBA8WTTx6t1/BmBpFHvi5tRokknSugGGHPMQbxoAPOXxORb4xMwOJgvUymci+hGuXcs4IfvwbXohlM8aYoFzYy2VNS0FndLQ3I6/bygNm0eBlWtZ3syjaXtjAK1HKFMPye085ApETDc91lLrT1TPgUhgpL4ATO7i/XMRD8MBxmvEwuTIzXkqzdic/dUvc4WdhY6Kz9hNWij6VFzuOrqZkq/KKbraouDvAxg6QT2HRrwCqJ7WEIl44PDL3an1EZXOl0M7b1rfhp4liKHXg/hP7SghUcZrFOnQrnmcpkiWeO1d5a+N3OoOYVBsgXOFYpg8GedtKMxEeYDvzapsIPbXPu1EE1sfw6tsawR5qY6yd2hOyxtfJ1t9PH5mRaCG0GX6mlL7PFbmKGzZ9crSL6Cse/Sr5rgMZdNhNQaTb3rVGwsqhEpAY1IKi2JkaHkJbvjKUt8QQnf2+nzkSjHICwt3WFJwY/ptSvlCYudRvJFHuS3XBrArzJ0Jwt6ypIsywQ8hmyoCPF5n2OY5fcI8L6IsUgR0PP5+R0HCv0LugHvlWg8deMDXZzyaeh0Kb/cRtsNf0MWOIkeFqlx4NA3dC9+Gw+VPqA8lUSynNUgccYtsJcxI=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(366016)(376014)(261102123227099003)(261009223027099003)(261028144727099003)(261021123027099003)(261021121427099003)(261022105027099003)(261022075727099003)(261026121527099003)(261026140227099003)(11063799006)(4143699003)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?blpNNmROL0QwZlFCYk1ISW9EM0JWSExmSXBEZit3VmcyaHluNTNDT2h6MWI3?=
 =?utf-8?B?NnYwa01xNzRGKys5WElqSWw0b25mN2cyNUFhQ0NvQlhkcDBMK2RhRHNZLzhu?=
 =?utf-8?B?NUpPN0RlWklReXRqbjR4amRrd3RwL3FJaHFldXZKTVVCRTFXekE0a2tPY2dK?=
 =?utf-8?B?L0hkampyQ1I5RGU4elQ0dWNXUUNoRktHZ3FrcUJTb3ZtdlNGeTdsZTlydmFl?=
 =?utf-8?B?Zy8xdzNXTSsreG52ZUV0eFNpUVlRendQbm9qQzkrVzVKUEFOMXNIdjg2TG53?=
 =?utf-8?B?SVQ4eXZRWElrUGVNby9zbkMxWFRsRy9wdERoUGtzNjErdDl4Z1Ira2FuVGk0?=
 =?utf-8?B?TW9ONm9CRU9KalFKR1g5WmZ1cHpjQkxjV2hLbmFTdm1lcFdLQkRFdHNzVnNu?=
 =?utf-8?B?b1k0M2NNNjZmcG9EYWpJQ2h2V053UnZPcTk0K29VVFIrT0NmL0tLRTRXRnlR?=
 =?utf-8?B?WEI5dTFET3BxS0pvRDFvbGxEU0FyS3JFVzNmQXhsUmhKcmZiT3BvQTFNeE5H?=
 =?utf-8?B?VTBTcEt3UGphQW1yVG9KUTY1UVJWQmV0a3RaRVluRVlBNHBZQjdMR2JxaDZz?=
 =?utf-8?B?eFFrRTV1K2RvYThUUTYzTU8wMCt1YWNOY08rdno2Um1qWE1IelNwS1BGTncx?=
 =?utf-8?B?eTZKcStKdElTNDlGS1FaNmw3MEp2SDRyd0tQUTY1bmFvTHRSMC9pTVZ0aW9S?=
 =?utf-8?B?K2JlRFgrdnJVWGdVVnljWWNCU1ZaaG9rREFMQ2lUNU5yMWROdDVBQm5JSy9T?=
 =?utf-8?B?SmdoalI1Uk9HTUprdCtsT0RhbUs4SHZKaUNRWmFPV1hzekhEaUVjR2k2UXpy?=
 =?utf-8?B?QnVjK2tZeGJWYU5KN1ZOWFh2SjJaRVR4aktya3JieEIzSWowQkUybW0vVHMx?=
 =?utf-8?B?bXB3aTF5ZnNDOGNGQ0Y4YzJrNGhhMWhwbksvSjdTZFNsMXV1b040cUZzcXJ1?=
 =?utf-8?B?SXVXRU9vUEYyK0JkakFySk00T2h1MFM3b3NKbG4wdGF0TXJYcjFqVEN4Vmlo?=
 =?utf-8?B?NnNxME95aElpNnZsNUdsNFBsUkViWFQrc0x0Z1cwT09NYU9BTStocGNlUU1B?=
 =?utf-8?B?bWpjV2diaWhyaElCSmtIcS9HbjA3WnVTNUNCWlhQM01FQnJaQktsYU1OMlIy?=
 =?utf-8?B?NDE2SVVWZUZVWWYyM21naEtBSFRPREl4Y3hKU0hnNmtuOUFCZDZJZE1wSHZN?=
 =?utf-8?B?V21ONFpnSmpDck5OcExpalNZSk5jQU9FZDJ4dGMvUWpyNWVYTUxGK2o1RUIy?=
 =?utf-8?B?M1dnM21QeUozRUZKKzBmL0JIRlQ5ZHhXcmNqMXdTVWNwRS93MGttWkowZjZ1?=
 =?utf-8?B?ejhtSnpnTUlMS0lsTVFrS2dUVUVyOXdhOW5DR2oyaGxIUE9WOTIvTWloVmR2?=
 =?utf-8?B?MEcyQkp4cGtvUWRIVHAxc0N3NUc4bnNwUTNBb0xaRVFDT05FTFVGbHg2TXhx?=
 =?utf-8?B?R2IyeFpUdlc3TnVwZ0xDRG9WR1h1eDJxWmxqc3djZzUxelVyNG4yQVhvYis0?=
 =?utf-8?B?Z3FHRTJHUTZ2aHVvaHo4TEZRYkdpcFhiSWZkdFlUSysyTEFkTHJjQ0htUS9k?=
 =?utf-8?B?WnRBdGtiVFArNkdaSzFTLzhsalVnNnhrREFFak14RXAxR2hMcGJVaWo2Si8x?=
 =?utf-8?B?L2c4blYyMU1OK1Zsa0JXdnRGVDliUG9iY2xyQUVTanVXRE9DZXpFVHdhVEdp?=
 =?utf-8?B?L21veE5HbGRaL1NLY08vZ3hmMFl3ZElnTWFiU2UxQXJOL2lLMWdGczBMNXlD?=
 =?utf-8?B?VlhpUU5EUldFQ0p6S3JiT3k0dnoxcFp5UURXQkVpTmZaKzRYM1VwSnlJaUtp?=
 =?utf-8?B?aWhMeE5uNk44OUlJbzd5TERYY1FyTjYvQUZsbzBFSnVJZHM1TDBnYXFkQksz?=
 =?utf-8?B?ZXEvMjc3NFBzV1Z5NURrVkV1dkkvSURNak1YU2hVbmtCdXRVNkgyeXgzQjZv?=
 =?utf-8?B?VUd5YThVbk91K3JwNC9qd292YUQrMDFXbjhBaDRONENWZDZBeWVwVVRTYlZI?=
 =?utf-8?B?NEd2UXVZTUwxbGVJVy85ZjdGTjVYTnN5MXNyNGEwWFpMa0N6SFBLMXhGRDBq?=
 =?utf-8?B?ZWlWMVJERGVWS0F4WUgwWFNnaUs5RGRoajNuTHJiTmdSaFRjNXJNTWt6aUJD?=
 =?utf-8?B?Z2dUc21CcWt6Z0lqRFRaN0V5STRUaE9PaE8zSWpWazZuTlhzTEY5ckFuNVJk?=
 =?utf-8?B?VU5pd2ljUDRRY1JlS0wrNjI2RUdpSHBrTkhXdlpuNFYyMjFRbTVLTzRxWktC?=
 =?utf-8?B?RFNjYlYvZEVpWnB1Rnp3TFRDbU9nVjRrUVBLL1k3dnJOU0F3M2tSRzhuOENz?=
 =?utf-8?B?NWRpYS82a1EzTlRtWUFZaFdJZkxkM0grM0k0VjljU25ZbHN3MmpSdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e4aee832-18da-4a8c-a9a2-08df3c0aec20
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 13:36:12.0532
 (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: GhGcdZ1c+1Lc/jrUKPlBPb9t14Xp/oqaVf6x7dYCZ9tQb5Tjs/Or5FMkWOcSdxSajd+sMGX5ISyPvbWAgXO6AiEOqE8h9awbhZIJy0O4uxA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR03MB5883
X-purgate-ID: tlsNG-4011c0/1793972175-4B0D9CFC-2C0441D9/0/0
X-purgate-type: clean
X-purgate-size: 6728

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> Introduce vcpu_is_vlapic_tpr_emulated() in genetic SVM code to account
> for the case when platform provides accelerated access to vLAPIC's TPR.
>
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>  xen/arch/x86/hvm/svm/svm.c | 38 +++++++++++++++++++++++++++-----------
>  1 file changed, 27 insertions(+), 11 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
> index 673c818a0039..14a86ca4ff8f 100644
> --- a/xen/arch/x86/hvm/svm/svm.c
> +++ b/xen/arch/x86/hvm/svm/svm.c
> @@ -925,6 +925,19 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
>      }
>  }
>  
> +static bool vcpu_is_vlapic_tpr_emulated(const struct vcpu *v, bool force_noaccel)
> +{
> +    const struct vlapic *vlapic = vcpu_vlapic(v);
> +
> +    if ( force_noaccel )
> +        return false;
> +
> +    if ( vlapic_hw_disabled(vlapic) )
> +        return false;
> +
> +    return true;
> +}
> +
>  static void noreturn cf_check svm_do_resume(void)
>  {
>      struct vcpu *v = current;
> @@ -933,7 +946,6 @@ static void noreturn cf_check svm_do_resume(void)
>                          v->domain->arch.monitor.software_breakpoint_enabled ||
>                          v->domain->arch.monitor.debug_exception_enabled);
>      bool vcpu_guestmode = false;
> -    struct vlapic *vlapic = vcpu_vlapic(v);
>  
>      if ( nestedhvm_enabled(v->domain) && nestedhvm_vcpu_in_guestmode(v) )
>          vcpu_guestmode = 1;
> @@ -959,8 +971,9 @@ static void noreturn cf_check svm_do_resume(void)
>          vmcb->cleanbits.raw = 0;
>      }
>  
> -    if ( !vcpu_guestmode && !vlapic_hw_disabled(vlapic) )
> +    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode) )
>      {
> +        struct vlapic *vlapic = vcpu_vlapic(v);
>          vintr_t intr;
>  
>          /* Reflect the vlapic's TPR in the hardware vtpr */
> @@ -2538,7 +2551,6 @@ void asmlinkage svm_vmexit_handler(void)
>      int insn_len;
>      vintr_t intr;
>      bool vcpu_guestmode = false;
> -    struct vlapic *vlapic = vcpu_vlapic(v);
>  
>      regs->rax = vmcb->rax;
>      regs->rip = vmcb->rip;
> @@ -2565,8 +2577,10 @@ void asmlinkage svm_vmexit_handler(void)
>       * NB. We need to preserve the low bits of the TPR to make checked builds
>       * of Windows work, even though they don't actually do anything.
>       */
> -    if ( !vcpu_guestmode && !vlapic_hw_disabled(vlapic) )
> +    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode) )
>      {
> +        struct vlapic *vlapic = vcpu_vlapic(v);
> +
>          intr = vmcb_get_vintr(vmcb);
>          vlapic_set_reg(vlapic, APIC_TASKPRI,
>                     ((intr.fields.tpr & 0x0F) << 4) |
> @@ -3097,14 +3111,16 @@ void asmlinkage svm_vmexit_handler(void)
>      }
>  
>    out:
> -    if ( vcpu_guestmode || vlapic_hw_disabled(vlapic) )
> -        return;
> +    if ( vcpu_is_vlapic_tpr_emulated(v, vcpu_guestmode ) )
> +    {
> +        struct vlapic *vlapic = vcpu_vlapic(v);
>  
> -    /* The exit may have updated the TPR: reflect this in the hardware vtpr */
> -    intr = vmcb_get_vintr(vmcb);
> -    intr.fields.tpr =
> -        (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
> -    vmcb_set_vintr(vmcb, intr);
> +        /* The exit may have updated the TPR: reflect this in the hardware vtpr */
> +        intr = vmcb_get_vintr(vmcb);
> +        intr.fields.tpr =
> +            (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
> +        vmcb_set_vintr(vmcb, intr);
> +    }

There are a large number of bugs here; they're prexisting, but this
isn't helping.

First, these final two hunks are wonky.  They're necessary, but only
because of bugs elsewhere in Xen.

In order to explain, I need to cover one of the bigger sins of the AMD64
architecture, CR8.  See APM Vol2 8.5.2 External Interrupt Priorities.

Windows (at least used to) write APIC_TPR very frequently.  Microsoft
made demands of the hardware vendors, and AMD made CR8.  AMD invented a
register called TPR which is an architectural abstraction of APIC_TPR,
and defined it's access to be via CR8.  They even made LOCK MOV CR8 (an
otherwise illegal encoding) be an alias of MOV CR8, for 32bit software
to use.

AMD state that it is undefined how TPR and APIC_TPR interact.  Intel
stated that CR8 maps directly on to APIC_TPR, and that the APIC must be
enabled for this mechanism to work.  AMD do have storage for TPR which
is separate to APIC_TPR (this has been confirmed), and as a result it
must be possible to desynchronise TPR and APIC_TPR when the APIC is
disabled.  Intel's wording suggests that they do not have storage, and
"SDM Vol2 13.8.6.1 Interaction of Task Priorities between CR8 and APIC"
hints specifically that only writes are reflected meaning that reads may
not be.


Since the outset, SVM had accelerated CR8.  Furthermore, because the
V_INTR_MASKING controls both the host/guest EFLAGS.IF split *and* CR8
virtualisation, we can't run VMs without accelerated CR8.  V_TPR is the
storage.

This final hunk exists because we have no path from the vLAPIC code
wiring writes of APIC_TPR back into the V_TPR field.  But, it has the
side effect of always clearing the TPR cleanbit, and exists only to
cover an operation where both manuals say "don't mix and match using CR8
or APIC_TPR;  use one or the other".

When AVIC is active, the V_TPR field ceases to exist and is now mapped
directly on to the APIC backing page, without intermediate storage.


>From the Intel side, original VT-x had no acceleration here, but one of
the very early features they added was virtualisation of TPR accesses. 
This covers both CR8 and APIC_TPR, and they both map onto the APIC
backing page without intermediate storage either.


So, the next steps (probably as a prereq to this series) are:

1) Determine the actual behaviour of CR8 vs APIC_TPR on real hardware,
including with the APIC being disabled.  It may well be different
between Intel and AMD
2) Use 1 to fix the synchronisation of V_TPR and APIC_TPR so we're not
writing V_TPR on every VMExit
3) Testing in place to confirm we don't regress.  I should dust off my
ESR test as a starting point.

In particular I note that disabling the APIC needs to disable all parts
of APIC acceleration, and that the Intel vmx_vlapic_msr_changed() hook
doesn't do this correctly for TPR.  I also observe there's a major
difference between the Intel hook and what you add in this series,
insofar as the x2APIC MSR intercepts don't get altered, which is suspicious.

Thanks,

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:41:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:41:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476631.1682649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKCG-0000pq-Eu; Fri, 06 Nov 2026 13:41:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476631.1682649; Fri, 06 Nov 2026 13:41:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKCG-0000pj-CF; Fri, 06 Nov 2026 13:41:36 +0000
Received: by outflank-mailman (input) for mailman id 1476631;
 Fri, 06 Nov 2026 13:41:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b117c821000403d@swg.vates.tech>)
 id 1xPKCE-0000pd-K4
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:41:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPKCD-003p0S-LX
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:41:33 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b117c821000403d@swg.vates.tech>)
 id 6aedd90b-bab6-0a2a0a5309dd-0a2a4508e25a-10
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:41:33 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b117c821000403d@swg.vates.tech>)
 id 6aedd90c-f659-0a2a45080019-b9ff1c228205-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:41:33 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b117c821000403d.004 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 13:41:28 +0000
Received: from [192.168.1.18] (88-188-240-210.subs.proxad.net [88.188.240.210])
 (Authenticated sender: teddy.astie)
 by mail2.vates.fr (Postfix) with ESMTPSA id 35CA6804A3;
 Fri,  6 Nov 2026 14:41:27 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=0yef22cxpBj7nnaX5yDYpLEUH699CdoWu5y3LVFk4Lw=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=H6U5PtJ7R5L5nKEVgzVgIcp2QRGUK9v0TnW/oPa8W7yj6aTfH/vZ3lD3NnG5QorYiDsuh8ppF
 +OvF+thZM8nJto8lkNAJSP01COdQjADVBteIJmbpMEJAr0E7tn9CcIN1p1QITBvl1IgcMq8OZ/w
 luGDio6l8ZIxtvPGzZSOKk+AfJyuzlKnsoH/gkjyrswoooO8C7mLuqMkJL+LKS3miDn72mADqom
 ehAYT6CKP6QmFV9h7cTB6XJ18S+p1M9xOzVDXKY6xUko0ZtB68g3aXNKSxB7UdTtczp5HaHU8KH
 TOzP7ND7uQr94oKMjfduHR1bOmSvuE1nxGzMcNarYEuQ==
X-Zone-Loop: 87ef2530d19f9e27c70cc36d8de9656905fda84726a6
x-campaign-type: default
x-transaction-id: fcd46618-4d6e-4a89-bd06-61517cf1231a
x-swg-uid: 01-50d78237-4b7c-46d1-be04-a6561f24d70e
X-Mailer: Sweego
Message-ID:
 <1793972488.8631fc262581453bbf619ec5b2062170.1a1b117c821000403d@vates.tech>
x-swg-bid: 1793972488.8631fc262581453bbf619ec5b2062170.1a1b117c821000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Fri, 6 Nov 2026 14:41:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/28] x86/hvm: avic: add domain state initialization
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-5-dmukhin@ford.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261105013347.719392-5-dmukhin@ford.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------p3QoRD2eCe2EF2eVShuuEhai"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793972487397
X-purgate-ID: tlsNG-c1860d/1793972493-D497287B-14817000/0/0
X-purgate-type: clean
X-purgate-size: 18211

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------p3QoRD2eCe2EF2eVShuuEhai
Content-Type: multipart/mixed; boundary="------------ryX0f8lE6GyLSkkUjoolvr39";
 protected-headers="v1"; hp="clear"
Message-ID: <9ea0bddf-3b89-48d8-8c91-e0cef30e8652@vates.tech>
Date: Fri, 6 Nov 2026 14:41:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 04/28] x86/hvm: avic: add domain state initialization
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-5-dmukhin@ford.com>
Content-Language: en-US
From: Teddy Astie <teddy.astie@vates.tech>
Autocrypt: addr=teddy.astie@vates.tech; keydata=
 xsDNBGn5sK8BDACuzSrrTjpVf4ay06OYB6yY0J1PqKffihoNMtrQRZjAHxoAPC7LTBVHV/XO
 Zw5HJc+9R71z1JV+iYg6z3jPziGKzX8Fj3ZXlzJPmpf1PuETH3KdbvtJT4ny+OGntnJntUoR
 KRPhTirr6yNeBk/637O3CQXjtqFUPZnko8OI/o1yawIBhJJAWicutjkkUgd28Bh6HV9EIumH
 tCBgn5/1A/fpm9624MMgYLsA8qjC4XsoovQvFCaO8HEhvfzrrTZHjn/nPeB9SigxIxXW8YaT
 VqMdqul07o72m3eA2mf+LMu9a04FX/d4wbxBLtELm+1jIrbtyaFZEMOLv/haSiS/Lj3btJH/
 EoucejoZ5SH49ksmVAmKOLktOaTQ8b2gEvP7iaKiIiszCCtOSRohr+2GvDsDeLvVZnlR3I+S
 PhHar7TPKjFz0G3DPNolyjXywNqOAMpomSPi8lSwjAFsxOtQbcck/qRGRSNk4DAmH70pA+89
 MXfQXZ3qt1Q01B1+sU0I8xsAEQEAAc0kVGVkZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVz
 LnRlY2g+wsENBBMBCAA3FiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sK8FCQWjmoACGwME
 CwkIBwUVCAkKCwUWAgMBAAAKCRBmD6nRAsvP0ID6DACGOktArFbLKHNzuyOVCskwfUZPla6Z
 pd3GZ8r61SrAKePIr2BnpgPkd0hV3bSRkRLIrgjzR2NRCzfp0x0HfuhcYfAYPR46XHTvjaJE
 v99sT/vGUG1BZguYDOScSEpgSNaNlYum3RKZbMuROxdK8G+YHccJY8PvWSq2K2yiae2KGiAv
 1yjnZxug9/PtDfX8vQFUSg2w1ukRDf50wvDohN1zUQfFtofOP2xCRsDZiHAlQ0pF+aUjXQhP
 eP3IdpfWc8cyRLXF06Rk46YMYCytweGtGdHcqAfrVthl84129ZPN422k/voW0sm14gjYlGcT
 UwgnYlFRk2FLq0QeKEDcS0aj3o3EVAQCrayoGzi1pnlIKE3PRGUcUzjGVvzQ/po24gOjwba9
 Egr/Wmu3MQlx/7A8zT5QBzF/n+RYdLNQ0Eu6YnUwf0Z1uieqNaon+olyIRFiLb/hCZHO6ekN
 f5vrm2clHUbQAYaPQebknujoKBo6ZLHg0WM1gZS01Gz+aUpKsUfOwM0EafmwsAEMAKiQiZa3
 yQMmc/h3sDbfVHPSiBA4IMI/NAB7IotzPHq1GzCpsoVILAhF/INbWjxJ3DbVf+en3/FvdVZg
 2S38xtnth0njNdlVKpyxm054phKjbdoFDwaknWolS4hrddTmetSG5/52AjtmPFtlXAk0NmLv
 fJnW3seXVQbgM7sW/MNXPP5UKDpkGnLhnvej+GU0s3109sJeXT5ImVdphFs9cvyZyBT9t1Pb
 Rowv58EgV0zE4hbAeVkULAbxFV5b/ExTjjGVHoX7CVhWxvCiTqCUoXZRkUE9C3FnkzEFRkKb
 Yu6NCfiHfEyB3Xyg9hfdrRgjMRq907zCof+nDtWxGz1MSEuvTj1g9GZ049Bennqzjc/Q+0ov
 XoK4jm+Py0FiUGUaA6yhexficjH+kCR/xDbVnWrMhSLB4AuTBT9HjfZI6gk3uYLhoT8Pig4/
 eVtR2Q1wZIJsFToR6ofGuyECwFcs+PUXN7fmGRSiPXgjAr/zIUBdW0VWCE3OGPNqtRk2E5s6
 IQARAQABwsD8BBgBCAAmFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmn5sLAFCQWjmoACGwwA
 CgkQZg+p0QLLz9DncQwAg76IehTemLIfrB8T9WIBZrI4kUV7G7a4rjiVoUiHYN5QwhnbZnsa
 JDlt+Ezoqy/510eo2bCSzvW5xXYPgyjcuOPwgQo1Qp764QxyX6rld2f2RcWkDuBHun55ZWXj
 by8o21ginPRwruBVYY5rVf3DV1iBu4NurUeHtyFk/dS0XTOQi2wVUb17sW/+ybCEokdVacZG
 zOqP/OmwHrF8ylXlXnhQq6e3r+J+T8fuoGJelm/CJiMwyP6cEWE8sxVqX/iqwjwUYkuOCpE+
 lOWSvdNHgoEkWR0RXBPQjnGmLKbfTl/QDXLk6NP2/r9uxm2HL6Ei3QJKSEdrp+XZaVnk/Off
 O485NOTKwGOxyWb006cTMh53xPkAJFQu4Tvdj+odsHz88jqw5wfPG0BYWx0I/FspYj7N9kZR
 8ULR9nX0LvpzJ/kB4NgHIUt8YtIL6ZSfM2dbF7fKzvx1UqFfvozJZwFzfEieJLXa4nlGgR6D
 x9fhaZEsniw8/bYgC3igkk5YJiOa
In-Reply-To: <20261105013347.719392-5-dmukhin@ford.com>

--------------ryX0f8lE6GyLSkkUjoolvr39
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

TGUgMDUvMTEvMjAyNiDDoCAwMjozNywgZG11a2hpbkBmb3JkLmNvbSBhIMOpY3JpdMKgOg0K
PiBGcm9tOiBEZW5pcyBNdWtoaW4gPGRtdWtoaW5AZm9yZC5jb20+DQo+IA0KPiBFc3RhYmxp
c2ggcGVyLWRvbWFpbiBTVk0gQVZJQyBiYWNraW5nIHBhZ2UgbWFwcGluZyBhbmQgU1BBIG1h
cHBpbmdzDQo+IGZvciBBUElDIHBoeXNpY2FsL2xvZ2ljYWwgSUQgdGFibGVzLiBVc2UgTUVN
Rl9ub19yZWZjb3VudCBtYXBwaW5ncw0KPiBzaW1pbGFybHkgdG8gSW50ZWwncyBWTVggQVBJ
Q3Ygc2V0dXAuDQo+IA0KPiBHYXRlIHBlci1kb21haW4gQVZJQyBzdGF0ZSBpbml0aWFsaXph
dGlvbiBiZWhpbmQgJ3N2bV9hdmljPScgY29tbWFuZA0KPiBsaW5lIG9wdGlvbi4NCj4gDQo+
IFNpZ25lZC1vZmYtYnk6IERlbmlzIE11a2hpbiA8ZG11a2hpbkBmb3JkLmNvbT4NCj4gLS0t
DQo+ICAgeGVuL2FyY2gveDg2L2h2bS9zdm0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSAr
DQo+ICAgeGVuL2FyY2gveDg2L2h2bS9zdm0vYXZpYy5jICAgICAgICAgICAgICB8IDEzNiAr
KysrKysrKysrKysrKysrKysrKysrKw0KPiAgIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2aWMu
aCAgICAgICAgICAgICAgfCAgMTQgKysrDQo+ICAgeGVuL2FyY2gveDg2L2h2bS9zdm0vc3Zt
LmMgICAgICAgICAgICAgICB8ICAyMCArKysrDQo+ICAgeGVuL2FyY2gveDg2L2luY2x1ZGUv
YXNtL2h2bS9zdm0tdHlwZXMuaCB8ICAgOCArKw0KPiAgIDUgZmlsZXMgY2hhbmdlZCwgMTc5
IGluc2VydGlvbnMoKykNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2h2
bS9zdm0vYXZpYy5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0v
c3ZtL2F2aWMuaA0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL01h
a2VmaWxlIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vTWFrZWZpbGUNCj4gaW5kZXggOGEwNzJj
YWZkNTcyLi43ZGQxNmUzMmE3N2QgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v
c3ZtL01ha2VmaWxlDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL01ha2VmaWxlDQo+
IEBAIC0xLDQgKzEsNSBAQA0KPiAgIG9iai15ICs9IGFzaWQubw0KPiArb2JqLXkgKz0gYXZp
Yy5vDQo+ICAgb2JqLXkgKz0gZW11bGF0ZS5vDQo+ICAgb2JqLWJpbi15ICs9IGVudHJ5Lm8N
Cj4gICBvYmoteSArPSBpbnRyLm8NCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v
c3ZtL2F2aWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2aWMuYw0KPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjJjMGUxMTNhZTM0ZQ0KPiAtLS0g
L2Rldi9udWxsDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2aWMuYw0KPiBAQCAt
MCwwICsxLDEzNiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt
b25seSAqLw0KPiArLyoNCj4gKyAqIEFNRCBBZHZhbmNlZCBWaXJ0dWFsIEludGVycnVwdCBD
b250cm9sbGVyIChBVklDKQ0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxhc20vaHZtL2Vt
dWxhdGUuaD4NCj4gKyNpbmNsdWRlIDxhc20vbXNyLmg+DQo+ICsjaW5jbHVkZSA8YXNtL3Ay
bS5oPg0KPiArI2luY2x1ZGUgPHhlbi9wYXJhbS5oPg0KPiArDQo+ICsjaW5jbHVkZSAiYXZp
Yy5oIg0KPiArDQo+ICtib29sIF9fcmVhZF9tb3N0bHkgc3ZtX2F2aWNfZW5hYmxlOw0KPiAr
DQoNCldlIHByb2JhYmx5IHdhbnQgaXQgdG8gYmUgX19yb19hZnRlcl9pbml0LCBJIGRvbid0
IHRoaW5rIGFueXRoaW5nIGdvb2QgDQpjYW4gaGFwcGVuIGlmIGl0J3MgdG9nZ2xlZCBkeW5h
bWljYWxseS4NCg0KPiArc3RhdGljIGNvbnN0IGNoYXIgX19zZWN0aW9uKCIuYnNzLnBhZ2Vf
YWxpZ25lZC5jb25zdCIpIF9fYWxpZ25lZChQQUdFX1NJWkUpDQo+ICsgICAgYXZpY19hcGlj
X2FjY2Vzc19wYWdlW1BBR0VfU0laRV07DQo+ICsNCg0KSSdtIGEgYml0IGR1YmlvdXMgaW4g
bWFraW5nIHRoaXMgY29uc3QuDQoNCkkgYWxzbyB0aGluayBndWVzdHMgY2FuIGZpbmQgYSB3
YXkgdG8gcmVhZC93cml0ZSB0byBpdCAoYXMgaXQncyBtYXBwZWQgDQphcyBNTUlPIGRpcmVj
dCBpbiBwMm0pLCB3aGljaCBjb3VsZCBiZSBhIHByb2JsZW0gcmVnYXJkbGVzcyBvZiBjb25z
dC1uZXNzLg0KDQpJIGd1ZXNzIHdlJ3JlIHN1cHBvc2VkIHRvIG1hcCB0aGUgdkFQSUMgYmFj
a2luZyBwYWdlIGludG8gdGhlIGd1ZXN0IA0KKGluc3RlYWQgb2YgYSBzdHViIHBhZ2UpLCBl
dmVuIGlmIGl0J3Mgbm90IHRoZSBwYWdlIHVzZWQgYnkgQVZJQyBoYXJkd2FyZS4NCg0KID4g
U3lzdGVtIHNvZnR3YXJlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGEgdHJhbnNs
YXRpb24gaW4gdGhlIA0KbmVzdGVkIHBhZ2UgdGFibGUgZ3JhbnRpbmcgZ3Vlc3QgcmVhZCBh
bmQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIGFjY2Vzc2VzIA0KdG8gdGhlIHZBUElDIEJhY2tp
bmcgUGFnZSBpbiBTUEEgc3BhY2UuIEFWSUMgaGFyZHdhcmUgd2Fsa3MgdGhlIG5lc3RlZCAN
CnBhZ2UgdGFibGUgdG8gY2hlY2sgcGVybWlzc2lvbnMsIGJ1dCBkb2VzIG5vdCB1c2UgdGhl
IFNQQSBhZGRyZXNzIA0Kc3BlY2lmaWVkIGluIHRoZSBsZWFmIHBhZ2UgdGFibGUgZW50cnku
IEluc3RlYWQsIEFWSUMgaGFyZHdhcmUgZmluZHMgDQp0aGlzIGFkZHJlc3MgaW4gdGhlIEFW
SUNfQkFDS0lOR19QQUdFIHBvaW50ZXIgZmllbGQgb2YgdGhlIFZNQ0IuDQoNCj4gK3N0YXRp
YyBpbnQgY2ZfY2hlY2sgYXZpY19wYXJzZV9jbWRsaW5lKGNvbnN0IGNoYXIgKnMpDQo+ICt7
DQo+ICsgICAgaW50IHJjOw0KPiArDQo+ICsgICAgcmMgPSBwYXJzZV9ib29sKHMsIE5VTEwp
Ow0KPiArICAgIGlmICggcmMgIT0gLTEgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3ZtX2F2
aWNfZW5hYmxlID0gISFyYzsNCj4gKyAgICB9DQo+ICsgICAgZWxzZSBpZiAoICpzID09ICdc
MCcgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3ZtX2F2aWNfZW5hYmxlID0gdHJ1ZTsNCj4g
KyAgICB9DQo+ICsgICAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgICAgcmV0dXJuIC1FSU5W
QUw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICtjdXN0b21f
cGFyYW0oInN2bV9hdmljIiwgYXZpY19wYXJzZV9jbWRsaW5lKTsNCj4gKw0KPiArLyoNCj4g
KyAqIEVuYWJsZSBndWVzdCBhY2Nlc3NlcyB0byBBUElDX0RFRkFVTFRfUEhZU19CQVNFLg0K
PiArICoNCj4gKyAqIEFWSUMgd2Fsa3MgdGhlIG5lc3RlZCBwYWdlIHRhYmxlIHRvIGNoZWNr
IGFjY2VzcyBwZXJtaXNzaW9ucywgYnV0DQo+ICsgKiBpZ25vcmVzIHRoZSBTUEEgZnJvbSB0
aGUgbGVhZiBlbnRyeSBhbmQgaW5zdGVhZCB1c2VzIHRoZSBhZGRyZXNzIGluDQo+ICsgKiBW
TUNCLmF2aWNfYmFja2luZ19wYWdlLg0KPiArICoNCj4gKyAqIEluc3RhbGwgYSBtYXBwaW5n
IHNvIEFQSUMgYWNjZXNzZXMgZG9uJ3QgdHJhcCB0byBYZW4gd2hpbGUgeEFQSUMgaXMNCj4g
KyAqIGFjY2VsZXJhdGVkLg0KPiArICovDQo+ICtzdGF0aWMgaW50IGF2aWNfc2V0X21taW9f
cDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQpDQo+ICt7DQo+ICsgICAgZ2ZuX3QgZ2ZuID0g
X2dmbihwYWRkcl90b19wZm4oQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSkpOw0KDQpfZ2ZuKHBh
ZGRyX3RvX3Bmbih4KSkgY2FuIGJlIHNpbXBsaWZpZWQgYXMgZ2FkZHJfdG9fZ2ZuKHgpDQoN
Cj4gKyAgICBtZm5fdCBtZm4gPSBfbWZuKHZpcnRfdG9fbWZuKGF2aWNfYXBpY19hY2Nlc3Nf
cGFnZSkpOw0KPiArDQo+ICsgICAgcmV0dXJuIG1hcF9tbWlvX3JlZ2lvbnMoZCwgZ2ZuLCAx
LCBtZm4pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGF2aWNfY2xlYXJfbW1pb19wMm1f
ZW50cnkoc3RydWN0IGRvbWFpbiAqZCkNCj4gK3sNCj4gKyAgICBnZm5fdCBnZm4gPSBfZ2Zu
KHBhZGRyX3RvX3BmbihBUElDX0RFRkFVTFRfUEhZU19CQVNFKSk7DQo+ICsgICAgbWZuX3Qg
bWZuID0gX21mbih2aXJ0X3RvX21mbihhdmljX2FwaWNfYWNjZXNzX3BhZ2UpKTsNCj4gKw0K
PiArICAgIHJldHVybiB1bm1hcF9tbWlvX3JlZ2lvbnMoZCwgZ2ZuLCAxLCBtZm4pOw0KPiAr
fQ0KPiArDQo+ICtpbnQgc3ZtX2F2aWNfZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFp
biAqZCkNCj4gK3sNCj4gKyAgICBzdHJ1Y3Qgc3ZtX2RvbWFpbiAqc2QgPSAmZC0+YXJjaC5o
dm0uc3ZtOw0KPiArICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOw0KPiArICAgIG1mbl90IG1m
bjsNCj4gKw0KPiArICAgIGlmICggIXN2bV9hdmljX2VuYWJsZSB8fCAhaGFzX3ZsYXBpYyhk
KSApDQo+ICsgICAgICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgLyogQVZJQyBsb2dpY2Fs
IEFQSUMgSUQgdGFibGUgKi8NCj4gKyAgICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShkLCBN
RU1GX25vX3JlZmNvdW50KTsNCj4gKyAgICBpZiAoICFwZyApDQo+ICsgICAgICAgIHJldHVy
biAtRU5PTUVNOw0KPiArDQo+ICsgICAgbWZuID0gcGFnZV90b19tZm4ocGcpOw0KPiArICAg
IGNsZWFyX2RvbWFpbl9wYWdlKG1mbik7DQo+ICsNCj4gKyAgICBzZC0+YXZpY19sb2dpY2Fs
X2lkX3RhYmxlX21mbiA9IG1mbjsNCj4gKyAgICBzZC0+YXZpY19sb2dpY2FsX2lkX3RhYmxl
ID0gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChtZm4pOw0KPiArDQo+ICsgICAgLyogQVZJQyBw
aHlzaWNhbCBBUElDIElEIHRhYmxlICovDQo+ICsgICAgcGcgPSBhbGxvY19kb21oZWFwX3Bh
Z2UoZCwgTUVNRl9ub19yZWZjb3VudCk7DQo+ICsgICAgaWYgKCAhcGcgKQ0KPiArICAgICAg
ICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBnKTsN
Cj4gKyAgICBjbGVhcl9kb21haW5fcGFnZShtZm4pOw0KPiArDQo+ICsgICAgc2QtPmF2aWNf
cGh5c2ljYWxfaWRfdGFibGVfbWZuID0gbWZuOw0KPiArICAgIHNkLT5hdmljX3BoeXNpY2Fs
X2lkX3RhYmxlID0gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChtZm4pOw0KPiArDQo+ICsgICAg
cmV0dXJuIGF2aWNfc2V0X21taW9fcDJtX2VudHJ5KGQpOw0KPiArfQ0KPiArDQo+ICt2b2lk
IHN2bV9hdmljX2RvbWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpk
KQ0KPiArew0KPiArICAgIHN0cnVjdCBzdm1fZG9tYWluICpzZCA9ICZkLT5hcmNoLmh2bS5z
dm07DQo+ICsgICAgbWZuX3QgbWZuOw0KPiArDQo+ICsgICAgKHZvaWQpYXZpY19jbGVhcl9t
bWlvX3AybV9lbnRyeShkKTsNCj4gKw0KPiArICAgIG1mbiA9IHNkLT5hdmljX3BoeXNpY2Fs
X2lkX3RhYmxlX21mbjsNCj4gKyAgICBpZiAoICFtZm5fZXEobWZuLCBfbWZuKDApKSApDQo+
ICsgICAgew0KPiArICAgICAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoc2QtPmF2aWNf
cGh5c2ljYWxfaWRfdGFibGUpOw0KPiArICAgICAgICBzZC0+YXZpY19waHlzaWNhbF9pZF90
YWJsZSA9IE5VTEw7DQo+ICsNCj4gKyAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UobWZuX3Rv
X3BhZ2UobWZuKSk7DQo+ICsgICAgICAgIHNkLT5hdmljX3BoeXNpY2FsX2lkX3RhYmxlX21m
biA9IF9tZm4oMCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgbWZuID0gc2QtPmF2aWNfbG9n
aWNhbF9pZF90YWJsZV9tZm47DQo+ICsgICAgaWYgKCAhbWZuX2VxKG1mbiwgX21mbigwKSkg
KQ0KPiArICAgIHsNCj4gKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHNkLT5h
dmljX2xvZ2ljYWxfaWRfdGFibGUpOw0KPiArICAgICAgICBzZC0+YXZpY19sb2dpY2FsX2lk
X3RhYmxlID0gTlVMTDsNCj4gKw0KPiArICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShtZm5f
dG9fcGFnZShtZm4pKTsNCj4gKyAgICAgICAgc2QtPmF2aWNfbG9naWNhbF9pZF90YWJsZV9t
Zm4gPSBfbWZuKDApOw0KPiArICAgIH0NCg0KSSB0aGluayB1c2luZyBJTlZBTElEX01GTiB3
b3VsZCBiZSBiZXR0ZXIgdGhhbiBfbWZuKDApLiBCdXQgZ2l2ZW4gdGhhdCANCkludGVsIFZN
WCBkb2VzIGFsc28gdXNlIF9tZm4oMCksIEkgd291bGQgbGlrZSBvdGhlcidzIG9waW5pb24g
b24gdGhhdCANCm1hdHRlci4NCih0aG91Z2gsIGlmIHdlIHN3aXRjaCB0byBwYWdlX2luZm8g
KiwgdGhhdCBtYXkgbm90IG1hdHRlciBhbnltb3JlKQ0KDQo+ICt9DQo+ICsNCj4gKy8qDQo+
ICsgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICsgKiBtb2RlOiBDDQo+ICsgKiBjLWZpbGUtc3R5
bGU6ICJCU0QiDQo+ICsgKiBjLWJhc2ljLW9mZnNldDogNA0KPiArICogdGFiLXdpZHRoOiA0
DQo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCj4gKyAqIEVuZDoNCj4gKyAqLw0KPiBk
aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vYXZpYy5oIGIveGVuL2FyY2gveDg2
L2h2bS9zdm0vYXZpYy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw
MDAwMDAwMC4uM2RhNjJmNTliMGNmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIveGVuL2Fy
Y2gveDg2L2h2bS9zdm0vYXZpYy5oDQo+IEBAIC0wLDAgKzEsMTQgQEANCj4gKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4gKy8qDQo+ICsgKiBBTUQg
QWR2YW5jZWQgVmlydHVhbCBJbnRlcnJ1cHQgQ29udHJvbGxlciAoQVZJQykNCj4gKyAqLw0K
PiArDQo+ICsjaWZuZGVmIF9fU1ZNX0FWSUNfSF9fDQo+ICsjZGVmaW5lIF9fU1ZNX0FWSUNf
SF9fDQo+ICsNCj4gK2V4dGVybiBib29sIHN2bV9hdmljX2VuYWJsZTsNCj4gKw0KPiAraW50
IHN2bV9hdmljX2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpOw0KPiArdm9p
ZCBzdm1fYXZpY19kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAq
ZCk7DQo+ICsNCj4gKyNlbmRpZiAvKiBfX1NWTV9BVklDX0hfXyAqLw0KPiBkaWZmIC0tZ2l0
IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9z
dm0uYw0KPiBpbmRleCBkYjgxZGFkNGI2ODEuLjhiN2JmZWQwMDQ5ZiAxMDA2NDQNCj4gLS0t
IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2
bS9zdm0vc3ZtLmMNCj4gQEAgLTQwLDYgKzQwLDcgQEANCj4gICANCj4gICAjaW5jbHVkZSA8
cHVibGljL3NjaGVkLmg+DQo+ICAgDQo+ICsjaW5jbHVkZSAiYXZpYy5oIg0KPiAgICNpbmNs
dWRlICJuZXN0ZWRodm0uaCINCj4gICAjaW5jbHVkZSAic3ZtLmgiDQo+ICAgI2luY2x1ZGUg
InZtY2IuaCINCj4gQEAgLTEwODQsNiArMTA4NSwxMSBAQCBzdGF0aWMgaW50IGNmX2NoZWNr
IHN2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgICAgICAg
LnRvICAgPSBzdm1fY3R4dF9zd2l0Y2hfdG8sDQo+ICAgICAgICAgICAudGFpbCA9IHN2bV9k
b19yZXN1bWUsDQo+ICAgICAgIH07DQo+ICsgICAgaW50IHJjOw0KPiArDQo+ICsgICAgcmMg
PSBzdm1fYXZpY19kb21haW5faW5pdGlhbGlzZShkKTsNCj4gKyAgICBpZiAoIHJjICkNCj4g
KyAgICAgICAgcmV0dXJuIHJjOw0KPiAgIA0KPiAgICAgICBkLT5hcmNoLmN0eHRfc3dpdGNo
ID0gJmNzdzsNCj4gICANCj4gQEAgLTEwOTUsNiArMTEwMSwxMSBAQCBzdGF0aWMgaW50IGNm
X2NoZWNrIHN2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAg
ICByZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgdm9pZCBjZl9jaGVjayBzdm1f
ZG9tYWluX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4gKmQpDQo+ICt7DQo+
ICsgICAgc3ZtX2F2aWNfZG9tYWluX3JlbGlucXVpc2hfcmVzb3VyY2VzKGQpOw0KPiArfQ0K
PiArDQo+ICAgc3RhdGljIGludCBjZl9jaGVjayBzdm1fdmNwdV9pbml0aWFsaXNlKHN0cnVj
dCB2Y3B1ICp2KQ0KPiAgIHsNCj4gICAgICAgaW50IHJjOw0KPiBAQCAtMjM4NCw2ICsyMzk1
LDcgQEAgc3RhdGljIHN0cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgX19pbml0ZGF0YV9jZl9j
bG9iYmVyIHN2bV9mdW5jdGlvbl90YWJsZSA9IHsNCj4gICAgICAgLmNwdV91cCAgICAgICAg
ICAgICAgID0gc3ZtX2NwdV91cCwNCj4gICAgICAgLmNwdV9kb3duICAgICAgICAgICAgID0g
c3ZtX2NwdV9kb3duLA0KPiAgICAgICAuZG9tYWluX2luaXRpYWxpc2UgICAgPSBzdm1fZG9t
YWluX2luaXRpYWxpc2UsDQo+ICsgICAgLmRvbWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyA9
IHN2bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMsDQo+ICAgICAgIC52Y3B1X2luaXRp
YWxpc2UgICAgICA9IHN2bV92Y3B1X2luaXRpYWxpc2UsDQo+ICAgICAgIC52Y3B1X2Rlc3Ry
b3kgICAgICAgICA9IHN2bV92Y3B1X2Rlc3Ryb3ksDQo+ICAgICAgIC5zYXZlX2NwdV9jdHh0
ICAgICAgICA9IHN2bV9zYXZlX3ZtY2JfY3R4dCwNCj4gQEAgLTI0NjQsNiArMjQ3NiwxMiBA
QCBzdGF0aWMgdm9pZCBfX2luaXQgcHJpbnRfc3ZtX2ZlYXR1cmVzKHZvaWQpDQo+ICAgICAg
ICAgICBwcmludGsoIiAtIG5vbmVcbiIpOw0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyB2b2lk
IF9faW5pdCBzdm1fYXZpY19zdGFydCh2b2lkKQ0KPiArew0KPiArICAgIGlmICggIWNwdV9o
YXNfc3ZtX2F2aWMgfHwgcHZfc2hpbSApDQo+ICsgICAgICAgIHN2bV9hdmljX2VuYWJsZSA9
IGZhbHNlOw0KDQpXaGF0J3Mgc3BlY2lhbCBhYm91dCBwdl9zaGltID8NCg0KPiArfQ0KPiAr
DQo+ICAgY29uc3Qgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSAqIF9faW5pdCBzdGFydF9z
dm0odm9pZCkNCj4gICB7DQo+ICAgICAgIHN2bV9ob3N0X29zdndfcmVzZXQoKTsNCj4gQEAg
LTI0ODcsNiArMjUwNSw4IEBAIGNvbnN0IHN0cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgKiBf
X2luaXQgc3RhcnRfc3ZtKHZvaWQpDQo+ICAgICAgIGlmICggY3B1X2hhc190c2NfcmF0aW8g
KQ0KPiAgICAgICAgICAgc3ZtX2Z1bmN0aW9uX3RhYmxlLnRzY19zY2FsaW5nLnJhdGlvX2Zy
YWNfYml0cyA9IDMyOw0KPiAgIA0KPiArICAgIHN2bV9hdmljX3N0YXJ0KCk7DQo+ICsNCj4g
ICAgICAgc3ZtX2Z1bmN0aW9uX3RhYmxlLmNhcHMuaGFwID0gY3B1X2hhc19zdm1fbnB0Ow0K
PiAgICAgICBzdm1fZnVuY3Rpb25fdGFibGUuY2Fwcy5oYXBfc3VwZXJwYWdlXzJtYiA9IHRy
dWU7DQo+ICAgICAgIHN2bV9mdW5jdGlvbl90YWJsZS5jYXBzLmhhcF9zdXBlcnBhZ2VfMWdi
ID0gY3B1X2hhc19wYWdlMWdiOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2luY2x1
ZGUvYXNtL2h2bS9zdm0tdHlwZXMuaCBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9odm0v
c3ZtLXR5cGVzLmgNCj4gaW5kZXggNzE0MjdiM2MxMWQxLi4zMGJkYWYyN2E4NTYgMTAwNjQ0
DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9odm0vc3ZtLXR5cGVzLmgNCj4g
KysrIGIveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h2bS9zdm0tdHlwZXMuaA0KPiBAQCAt
MTUsNiArMTUsMTQgQEAgc3RydWN0IHN2bV9kb21haW4gew0KPiAgICAgICAgICAgICAgIHVp
bnQ2NF90IHN0YXR1czsNCj4gICAgICAgICAgIH07DQo+ICAgICAgIH0gb3N2dzsNCj4gKw0K
PiArICAgIC8qDQo+ICsgICAgICogRG9tYWluIEFWSUMgc3RhdGUuDQo+ICsgICAgICovDQo+
ICsgICAgbWZuX3QgYXZpY19sb2dpY2FsX2lkX3RhYmxlX21mbjsNCj4gKyAgICB1aW50MzJf
dCAqYXZpY19sb2dpY2FsX2lkX3RhYmxlOw0KPiArICAgIG1mbl90IGF2aWNfcGh5c2ljYWxf
aWRfdGFibGVfbWZuOw0KPiArICAgIHVpbnQ2NF90ICphdmljX3BoeXNpY2FsX2lkX3RhYmxl
Ow0KDQpJIHN1Z2dlc3QgbW92aW5nIGF2aWMtc3BlY2lmaWMgZmllbGRzIHRvIGEgZGVkaWNh
dGVkIHN0cnVjdHVyZSBlLmcgDQpzdHJ1Y3Qgc3ZtX2F2aWMgKHRoYXQgd291bGQgYWxsb3cg
eW91IHRvIGRyb3AgJ2F2aWNfJyBwcmVmaXggZm9yIGFsbCANCmZpZWxkcykuDQoNCklzIHRo
ZXJlIGEgcmVhc29uIHRvIHVzZSBtZm5fdCBpbnN0ZWFkIG9mIHBhZ2VfaW5mbyAqID8NCg0K
PiAgIH07DQo+ICAgDQo+ICAgc3RydWN0IHN2bV92Y3B1IHsNCg0KVGVkZHkNCg==

--------------ryX0f8lE6GyLSkkUjoolvr39--

--------------p3QoRD2eCe2EF2eVShuuEhai
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsD5BAABCAAjFiEEGAIew9LzHY3pdrqtZg+p0QLLz9AFAmrt2QYFAwAAAAAACgkQZg+p0QLLz9Bo
bgv/bpG0M27DfC82Ev4EB24HDRB3bi2kiAsEnoQhaEl5bh1eKJXx62bNspi9YXuJ1RuWlISWY5wQ
22I0pqkUY4uVdXCeNXQ31XhmNhjSKzqEEPseQ3RtiMaTHJHgNaGEA0klmIEovrNkQBbxos3KLWgV
Ug/zXSGowOMhzL80WOu7d6dU58ZV/9sogUPrmA0X90b9QusQExB+LmR2NU8okCnwplkd/SbJJqRS
d1B2pQ8qRxLVwyRrWVD7Y9AParf79Pwrqk6LZunMNZVtdxSiLrAWzagCEKoY891U2SyepwobDErA
XqV4PZUVH07nEm8ZzVsxHYUosWDoo8zdh+eeHskd6w+DVkRXCoswzZlz8xZAl16qRODHyzwTfrYO
weTFJZRCSvBlx9mlibQCsGXNEfh72ct55wLcXfM6lrvDIThIYjFStgHLMufI9q7GapsGGpIYzGJU
5m0SqHJ8pwmSa55hnEN+8BzNbkP1bBtap7Z6ptN9zt2j+mhxC4+v04Ikht7J
=wZYK
-----END PGP SIGNATURE-----

--------------p3QoRD2eCe2EF2eVShuuEhai--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:44:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:44:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476637.1682658 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKEl-0001QR-Ra; Fri, 06 Nov 2026 13:44:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476637.1682658; Fri, 06 Nov 2026 13:44:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKEl-0001QK-OS; Fri, 06 Nov 2026 13:44:11 +0000
Received: by outflank-mailman (input) for mailman id 1476637;
 Fri, 06 Nov 2026 13:44:09 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b11a2e1a000403d@swg.vates.tech>)
 id 1xPKEj-0001QE-OA
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:44:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPKEj-003kTF-4e
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:44:09 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b11a2e1a000403d@swg.vates.tech>)
 id 6aedd9a8-8faa-0a2a0a5109dd-0a2a450383a0-4
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:44:09 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b11a2e1a000403d@swg.vates.tech>)
 id 6aedd9a8-fae8-0a2a45030019-b9ff1c23ab21-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:44:08 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b11a2e1a000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 13:44:05 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 909D580416;
 Fri,  6 Nov 2026 14:44:04 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=/TvEk6rbEzKdLV7NSF3EKKc1FjauMKggJXhhVgSjG3Q=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=YtxB7N8QmAy0nWbAA9yMe/ZU+JWYEVXoke1esJT8lWm/3iDbhyDcdR+cmxDHNs4tWhbTpKEA1
 9lPCtHHOzk7lIGso3OiarNdDxP0kOfdGp2Chn/qEX/aC5lLNh7lwIad6VtQcB8yLK/fLvyCeLSh
 v28ZPIBXLiTWZLOO8WlMPdyecu3QZd3Nyh5iKzjCzFrd4PbzYWbQL5CwJmGRMAqdyhCEVRErV0T
 pZiV70qwVjJkWvqQIY4GOwx9BALguW/V+UY8P0f9CYfjxKXG1gSRp2BVDKNDtWLUZKFShDsd8lp
 DbfX7WmIOz+qAEYODy9MxVjxXg05FXYNzZYVPbFNIdzg==
X-Zone-Loop: 4f466094ccd2f5746281ceffb4782a637957f3cf2f9a
x-campaign-type: default
x-transaction-id: 0260ac0f-d97f-4a57-b0ea-3c9220e62fdd
x-swg-uid: 01-49daab48-3d64-40a6-a8a5-ef7cf5ec4695
X-Mailer: Sweego
Message-ID:
 <1793972645.8631fc262581453bbf619ec5b2062170.1a1b11a2e1a000403d@vates.tech>
x-swg-bid: 1793972645.8631fc262581453bbf619ec5b2062170.1a1b11a2e1a000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v3 38/39] xen/riscv: set the guest's XLEN explicitly in
 hstatus.VSXL
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 xen-devel@lists.xenproject.org, 
 Romain Caritey <Romain.Caritey@microchip.com>, 
 Zheng Zhang <zhangzheng@iscas.ac.cn>, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <ac014a57-5a77-41aa-a3e3-39e5764acf2f@gmail.com>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <0c65801cec7cdac1556abc610e076f33c1500d1f.1790779209.git.oleksii.kurochko@gmail.com>
 <1793803069.8631fc262581453bbf619ec5b2062170.1a1a6fea90d000403d@vates.tech>
 <ac014a57-5a77-41aa-a3e3-39e5764acf2f@gmail.com>
Date: Fri, 06 Nov 2026 14:43:59 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1793972639; l=1197;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=5Hg6cDvlpRb2O9uDkxiPlTO04RYjyWGwyieZ0el42JE=;
 b=Aa3XLjVKqrRQBNtrMhQKL51o5RL1RKI9CLtlU952ie7oc0cSWR09HkImdBLgEgXFD8DTjm8PY
 9VCa1RWAvuyDg+Kqjrf239LxDrHIRp4Lxos+FT2vwDjuZ/Bp/HhOe+6
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793972644817
X-purgate-ID: tlsNG-33051d/1793972648-756834E9-15F413F5/0/0
X-purgate-type: clean
X-purgate-size: 1197

On 2026-11-06 12:59 +0100, Oleksii Kurochko wrote:
> [ ... 33 lines skipped ... ]
> I'd rather not: d->type is an enum, and for those Xen deliberately omits
> the default label, as -Wall enables -Wswitch, which breaks the build
> (-Werror) if one of the enum's values isn't handled. 
I didn't know that, so yes, you're right it's better to keep without default.
> A default label
> would silence exactly that check. MISRA-wise this is covered by the
> R16.4 deviation for switches on enums.
> 
> I'll move the explanation into the switch() itself, though, and mention 
> -Wswitch there, which should make the intent clearer:
> 
> ...
>      case DOMAIN_64BIT:
>          return XLEN_FIELD_64;
> 
>      /*
>       * No default case: -Wswitch then fails the build should a new
>       * domain_type (a 128-bit one, in particular) be added without
>       * updating this mapping.
>       */
More clear, thanks.
> [ ... 44 lines skipped ... ]
> Your suggested rewording looks good to me. I'll take your wording, and 
> name kernel_probe() in the commit message as well, which has the same 
> ambiguity.
Agree, thanks.

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:51:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476650.1682667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKLR-0003XY-Lb; Fri, 06 Nov 2026 13:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476650.1682667; Fri, 06 Nov 2026 13:51:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKLR-0003XR-Hw; Fri, 06 Nov 2026 13:51:05 +0000
Received: by outflank-mailman (input) for mailman id 1476650;
 Fri, 06 Nov 2026 13:51:04 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jarkko@kernel.org>) id 1xPKLQ-0003XL-P7
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:51:04 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPKLQ-00E3oj-5v
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:51:04 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jarkko@kernel.org>)
 id 6aeddb3b-bab6-0a2a0a5309dd-0a2a450cc6d6-48
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:51:04 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jarkko@kernel.org>)
 id 6aeddb46-f479-0a2a450c0019-ac6904fe8e38-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:51:03 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with UTF8SMTP id 0C2E5601BF;
 Fri,  6 Nov 2026 13:51:02 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with UTF8SMTPSA id 257841F0089F;
 Fri,  6 Nov 2026 13:51:01 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1793973061;
	bh=SvbdRNqL/8qCTDSGCTb8M0taIrstvBniNfZYFufgM5Y=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=L33pwgZSVggirArZ13tgig1B1UCQKbjbxP46ClHAA2P14xrsBYu6ITrSuDWxD75nm
	 951iQE/lYInSkLK7zdv01x692IZ8EISZoenRxG8xR7Tk2E4p6mjAl59/Ld/fabYaci
	 0O0y4X0ZqJB89xAkdhFcg47FJX/vGN9YxDmynA2wfSj58zxVe28UDKojH8xPKB9pkm
	 JrmLw6sGmd3K1zoXLZ0badUqpxNhCbLlgu742muYZwUmimGIDQRTbhteYmZgvMqpeS
	 Vw7E7CJ3LK4waVWLimdiYEbfq546n85vZyX7ijnIUWr58UPgYMuJVskiiDeWqRCa4Y
	 8e/9k+FsTIHQw==
Date: Fri, 6 Nov 2026 15:50:57 +0200
From: Jarkko Sakkinen <jarkko@kernel.org>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Paul Moore <paul@paul-moore.com>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>,
	Shrikanth Hegde <sshegde@linux.ibm.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowangio@gmail.com>,
	Eugenio =?iso-8859-1?Q?P=E9rez?= <eperezma@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>,
	Joel Stanley <joel@jms.id.au>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Ryan Chen <ryan_chen@aspeedtech.com>,
	Billy Tsai <billy_tsai@aspeedtech.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>,
	Sumit Garg <sumit.garg@kernel.org>,
	Scott Branden <scott.branden@broadcom.com>,
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Richard Cochran <richardcochran@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev,
	linux-sgx@vger.kernel.org, selinux@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org,
	linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH 00/14] mm: convert further simple mmap hooks to
 mmap_prepare
Message-ID: <au3bQYYHRxR9VRfh@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <CAHC9VhQvpFeEJaEyPDaqj8_S752puSaNe0Rn-hxjh=ugCoFsxA@mail.gmail.com>
 <au2odtvEhpLJY4eD@gremlin>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <au2odtvEhpLJY4eD@gremlin>
X-purgate-ID: tlsNG-d25034/1793973064-004CFA5B-72A1EF4F/0/0
X-purgate-type: clean
X-purgate-size: 984

On Fri, Nov 06, 2026 at 10:18:06AM +0000, Lorenzo Stoakes (ARM) wrote:
> > Granted I've only properly looked at the SELinux patch (7/14), the
> > rest I've just skimmed through, but these are all independent patches,
> > right?  Is there any reason why individual subsystem maintainers
> > shouldn't just pick up their associated patch?  Yes, perhaps chasing
> > down individual maintainers is a bit more work, but isn't that the way
> > this should work?
> 
> I've no objection to people taking patches independently, the concern is people
> lagging on that and holding up a key conversion which is entirely mechanical, +
> generally tree-wide stuff like this has been via the mm tree.

This is probably the best way forward, as for a subsystem this is just a
different API for doing the exact same thing (and that way "idempotent").

And looking at the intersection points overall, the changes are neither
likely to cause any major merge conflicts...

Br, Jarkko


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 13:58:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 13:58:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476661.1682675 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKSt-0004q6-AY; Fri, 06 Nov 2026 13:58:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476661.1682675; Fri, 06 Nov 2026 13:58:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPKSt-0004pz-7x; Fri, 06 Nov 2026 13:58:47 +0000
Received: by outflank-mailman (input) for mailman id 1476661;
 Fri, 06 Nov 2026 13:58:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jack@suse.cz>) id 1xPKSr-0004oV-K9
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 13:58:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPKSr-00E4tL-0J
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:58:45 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jack@suse.cz>)
 id 6aeddd0e-bab6-0a2a0a5309dd-0a2a45038474-12
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:58:44 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jack@suse.cz>)
 id 6aeddd14-fae8-0a2a45030019-c387df82d1c6-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 14:58:44 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id F315122154;
 Fri,  6 Nov 2026 13:58:42 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C0677134E9;
 Fri,  6 Nov 2026 13:58:42 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 67kcJxLd7WqbVAAAD6G6ig
 (envelope-from <jack@suse.cz>); Fri, 06 Nov 2026 13:58:42 +0000
Received: by quack.suse.cz (Postfix, from userid 1000)
 id 4E5B121B72; Fri, 06 Nov 2026 14:58:27 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede2_rsa header.d=suse.cz header.i="@suse.cz" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References"; dkim=permerror header.s=susede2_ed25519 header.d=suse.cz header.i="@suse.cz"; dkim=pass header.s=susede2_rsa header.d=suse.cz header.i="@suse.cz" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References"; dkim=permerror header.s=susede2_ed25519 header.d=suse.cz header.i="@suse.cz"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1793973524; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ItHvNO33pb8zb9UZ+LEb6x6bQbeF4DIAGvYYNsI45U8=;
	b=uiFsa2BwcYOxq2gi53CMvsQcPLhPjX3qEOfmyRG+MMW+i9UaggY9jJaa5wavXNFuLDRya0
	b9bIk7d+ZGVpmXDC5GD2K4lSWXyUMEx1Xgkq2ZbP1QBkGfhdEqjgXpD2RQsoW8lER5KjM6
	2nPPQOWWqm1KOh+/u7G+gDW1pky2kPE=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1793973524;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ItHvNO33pb8zb9UZ+LEb6x6bQbeF4DIAGvYYNsI45U8=;
	b=6UCJswdK0Z/DiwhrcdamgOXwZj9ItIC+/2kw90iroytJRvaOKpNnwu36Zgri1J7K0hnpW1
	lNS/qFpJKVe0WBAA==
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1793973523; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ItHvNO33pb8zb9UZ+LEb6x6bQbeF4DIAGvYYNsI45U8=;
	b=LgjfvuMAU87vP+sPHVFl3AgPTWwGTRrRaQzjksp+GUoFchaJHCJWRi3C7JriPqlaDS1xv0
	xf0+UF6xyLfW5w2peCcDGzuPDj/KNox0QLmUkIz4npAwhjxdTcSyJLMVg3YL5GoQgLdgFJ
	1Wd203yEyPmbh14aWkzxWl+puCMK0x8=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1793973523;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ItHvNO33pb8zb9UZ+LEb6x6bQbeF4DIAGvYYNsI45U8=;
	b=X0ai5JyZByGuYCrevlOApXcGyusGRiOAMLTwFWFDZ7nil+IaqW8n/M/kqrLHGa75L9F+9G
	ed8IDOXKbujoFXBQ==
Date: Fri, 6 Nov 2026 14:58:27 +0100
From: Jan Kara <jack@suse.cz>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
	Madhavan Srinivasan <maddy@linux.ibm.com>, Nicholas Piggin <npiggin@gmail.com>, 
	Michael Ellerman <mpe@ellerman.id.au>, "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>, 
	"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>, Shrikanth Hegde <sshegde@linux.ibm.com>, 
	Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowangio@gmail.com>, 
	Eugenio =?utf-8?B?UMOpcmV6?= <eperezma@redhat.com>, Xuan Zhuo <xuanzhuo@linux.alibaba.com>, 
	Jarkko Sakkinen <jarkko@kernel.org>, Dave Hansen <dave.hansen@linux.intel.com>, 
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, 
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>, 
	Paul Moore <paul@paul-moore.com>, Stephen Smalley <stephen.smalley.work@gmail.com>, 
	Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>, Joel Stanley <joel@jms.id.au>, 
	Andrew Jeffery <andrew@codeconstruct.com.au>, Ryan Chen <ryan_chen@aspeedtech.com>, 
	Billy Tsai <billy_tsai@aspeedtech.com>, Bjorn Andersson <andersson@kernel.org>, 
	Konrad Dybcio <konradybcio@kernel.org>, Abel Vesa <abelvesa@kernel.org>, 
	Jens Wiklander <jenswi@kernel.org>, Sumit Garg <sumit.garg@kernel.org>, 
	Scott Branden <scott.branden@broadcom.com>, 
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran <richardcochran@gmail.com>, 
	David Woodhouse <dwmw2@infradead.org>, Andrew Lunn <andrew+netdev@lunn.ch>, 
	"David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@kernel.org>, 
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, xen-devel@lists.xenproject.org, 
	linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, 
	linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, linux-sgx@vger.kernel.org, 
	selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 
	linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org, 
	netdev@vger.kernel.org
Subject: Re: [PATCH 06/14] udf: convert mmap hook to mmap_prepare
Message-ID: <6ve6dvcmmozqiv5zkkq57thm62rtsc43jlbsfoxm24qrm5bhkg@ygji3l2k2qxq>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <20261105-late-2026-mmap_prepare-v1-6-c56aadfbab8a@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-6-c56aadfbab8a@kernel.org>
X-Spam-Flag: NO
X-Spam-Level: 
X-Spamd-Result: default: False [-15.30 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[100.00%];
	SUSPICIOUS_RECIPS(1.50)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_RHS_NOT_FQDN(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	MISSING_XM_UA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	TAGGED_RCPT(0.00)[netdev];
	RCVD_COUNT_THREE(0.00)[3];
	DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	FROM_HAS_DN(0.00)[];
	FREEMAIL_CC(0.00)[suse.com,kernel.org,epam.com,linux.ibm.com,gmail.com,ellerman.id.au,microsoft.com,redhat.com,linux.alibaba.com,linux.intel.com,alien8.de,zytor.com,paul-moore.com,jms.id.au,codeconstruct.com.au,aspeedtech.com,broadcom.com,arndb.de,linuxfoundation.org,infradead.org,lunn.ch,davemloft.net,lists.xenproject.org,vger.kernel.org,lists.ozlabs.org,lists.linux.dev,lists.infradead.org,lists.trustedfirmware.org];
	R_RATELIMIT(0.00)[to_ip_from(RLyerg7kx5bdf6cnfzf33td54o)];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_TLS_LAST(0.00)[];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCPT_COUNT_GT_50(0.00)[61];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.cz:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -15.30
X-purgate-ID: tlsNG-33051d/1793973524-770F64E9-6D96FC6B/0/0
X-purgate-type: clean
X-purgate-size: 1482

On Thu 05-11-26 21:05:37, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
> only updates the access time and sets the VMA operations.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

I'll leave it for MM guys to merge this.
								Honza

> ---
>  fs/udf/file.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/udf/file.c b/fs/udf/file.c
> index 02e9314818dc..d5e80c6cae96 100644
> --- a/fs/udf/file.c
> +++ b/fs/udf/file.c
> @@ -190,10 +190,10 @@ static int udf_release_file(struct inode *inode, struct file *filp)
>  	return 0;
>  }
>  
> -static int udf_file_mmap(struct file *file, struct vm_area_struct *vma)
> +static int udf_file_mmap_prepare(struct vm_area_desc *desc)
>  {
> -	file_accessed(file);
> -	vma->vm_ops = &udf_file_vm_ops;
> +	file_accessed(desc->file);
> +	desc->vm_ops = &udf_file_vm_ops;
>  
>  	return 0;
>  }
> @@ -202,7 +202,7 @@ const struct file_operations udf_file_operations = {
>  	.read_iter		= generic_file_read_iter,
>  	.unlocked_ioctl		= udf_ioctl,
>  	.open			= generic_file_open,
> -	.mmap			= udf_file_mmap,
> +	.mmap_prepare		= udf_file_mmap_prepare,
>  	.write_iter		= udf_file_write_iter,
>  	.release		= udf_release_file,
>  	.fsync			= simple_fsync,
> 
> -- 
> 2.56.0
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 14:58:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 14:58:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476700.1682685 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLOH-0006qe-GN; Fri, 06 Nov 2026 14:58:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476700.1682685; Fri, 06 Nov 2026 14:58:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLOH-0006qT-Cc; Fri, 06 Nov 2026 14:58:05 +0000
Received: by outflank-mailman (input) for mailman id 1476700;
 Fri, 06 Nov 2026 14:58:03 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@swg.vates.tech>)
 id 1xPLOF-0006qN-Tc
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 14:58:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLOF-0041XK-5o
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 15:58:03 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@swg.vates.tech>)
 id 6aedeaf7-8faa-0a2a0a5109dd-0a2a4507c9f4-12
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 15:58:03 +0100
Received: from [185.255.28.18] (helo=prod-mta-13.swg-srv.net)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@swg.vates.tech>)
 id 6aedeafa-b4ea-0a2a45070019-b9ff1c129299-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 15:58:02 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b15dc430000403d.00a for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 14:57:54 +0000
Received: from julian.home (82-67-211-29.subs.proxad.net [82.67.211.29])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 74C7C81B6C;
 Fri,  6 Nov 2026 15:57:53 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=XdcJ4jFaa68uoYdaUyfdYZAzejo+UGLqoHgHy20wKy0=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:feedback-id;
 b=NZQoQYB9tywpzxtacITkvDt6+ZhuR1/N9apraARH//lWtLWDwoarSlBVEiupZ6W5D+N4UgPUm
 wKgv3YRrNdYSpi9rLDdDU7HV4894WVceIc8GdHL7+fO1oBXYC+4zxWSiuiqnZuiH5yzfWk29QHP
 Y9XUvL7yHdDpZqzQWDUqVHMKgLv4PnkIkRzJZy9F9YghexQHconWcBal4uTVYrr5GaKv+4+p+Dx
 4Vj2wKOMGj4kahcctjtK3E43tZdb9HaF4mi+x4YJW2FEO4B45kLke1SsFOyLBzCznSDt7kG4h7L
 n8JVetX23Bmk1zOT/Olu8M5kS3roVx11Zpb8XG42qsQA==
X-Zone-Loop: be56381978996ca0f8f21b569ff49b840090bf24287e
x-campaign-type: default
x-transaction-id: 48a466be-985d-41ce-9fe5-2a3a3d98eb45
x-swg-uid: 01-27bb5538-8e92-4745-82dc-6ca83774d8bf
X-Mailer: Sweego
Message-ID:
 <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
x-swg-bid: 1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Julian Vetter <julian.vetter@vates.tech>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Jiayuan Chen <jiayuan.chen@linux.dev>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	"Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH 0/2] Re-raise irq_work lost during Xen suspend
Date: Fri,  6 Nov 2026 15:57:40 +0100
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.3b.3163fd9a7fa2d20e.1a1b15dc1a5.3017bf55e344f14b=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793977074093
X-purgate-ID: tlsNG-ef75cf/1793977083-A52CCAE4-88E8566E/0/0
X-purgate-type: clean
X-purgate-size: 1675

---=Part.3b.3163fd9a7fa2d20e.1a1b15dc1a5.3017bf55e344f14b=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

We hit this issue with an Ubuntu 26=2E04 cloudimage guests (7=2E0 based
kernel with the 8250 as an nbcon console) on XCP-ng 8=2E3 / Xen 4=2E17=2E =
With
a kernel commandline adding two consoles, i=2Ee=2E, 'console=3DttyS1
console=3DttyS0'=2E During a live migration on that setup the printk()s fr=
om
gnttab_resume() and xen_irq_resume() queue nbcon_irq_work while the APIC
is disabled=2E Thus the list transitions from empty to non-empty, but
doesn't receive the IPI to empty the list again=2E Afterwards the list
stays non-empty, so the IPI never fires and all irq_work piles up=2E

The Commit 560f4deda327 ("printk/nbcon: Change nbcon_irq_work to
IRQ_WORK_LAZY") removed this particular issue because declaring the IRQ
work to be lazy, causes the timer interrupt to trigger the irq work
instead=2E But any other non-lazy irq_work queued in that window is still
lost the same way and will cause the list to fill up without being
handled=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
Julian Vetter (2):
  irq_work: Add irq_work_raise_pending()
  xen/manage: Re-raise pending irq_work after suspend

 drivers/xen/manage=2Ec     |  3 +++
 include/linux/irq_work=2Eh |  2 ++
 kernel/irq_work=2Ec        | 10 ++++++++++
 3 files changed, 15 insertions(+)

--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.3b.3163fd9a7fa2d20e.1a1b15dc1a5.3017bf55e344f14b=---


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:00:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:00:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476710.1682695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLR3-00007p-TY; Fri, 06 Nov 2026 15:00:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476710.1682695; Fri, 06 Nov 2026 15:00:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLR3-00007i-Ot; Fri, 06 Nov 2026 15:00:57 +0000
Received: by outflank-mailman (input) for mailman id 1476710;
 Fri, 06 Nov 2026 15:00:56 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ross.lagerwall@citrix.com>) id 1xPLR2-00007a-2O
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 15:00:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLR1-003w4J-Di
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:00:55 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aedeb9b-bab6-0a2a0a5309dd-0a2a450b9a9a-40
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:00:55 +0100
Received: from [40.107.209.65]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6aedeba5-b7e8-0a2a450b0019-286bd141c66a-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:00:55 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by CH3PR03MB965729.namprd03.prod.outlook.com (2603:10b6:610:39e::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 15:00:51 +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.0592.010; Fri, 6 Nov 2026
 15:00:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=QPqtu4x9L7rWaGCl+VeldGC/cncUKAjEkiGewqP65Hsy39eyj66hLlXmVTDTYRlcKzioEhSbO4o8v33xV4FKWMD3lSXwfbrZueO02X8KxwaS8vcJraj+9SinvafJCxTGCEfmYspsDDVPNtwVH5BUubwPgZD5CNOqDHNNQizBcGyUjkscTB9xLaT0e2lTTIFWM6s2UX7Z7TH+WTg8QMxZJebsYYNY1Sy4C8vJskuCImByHEkouVMsgx9bPBBIzef1Yh8vMx9GDw1owplX0LH83eeQf5IloF6edp/wkX93gBD72tUwkbToo4UCegNk6LP1wtXFoSPHxvjmfrnfKItr7w==
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=2ujMVwmoPIMqHU3izph4uPFOL+L+KDgKZi9rxOQqbFA=;
 b=au1OAs2WM3e/FPrNJkrEmZa/NgnBZyGNK2333kZqSi/i92HBHKzM6FIyIpOmHlSLgws/SLRe43dO2XfIIa4AT1qmmPKBWm60pTGXgkmCRSLZKbpPFzt0x2b2BKyAhdvNz1mzWApHk+df+apUI5uu7XuNeQWhawbA1B85u1oCXoaOyvLBtId6b5Ighh/aUeN4SiPL+ke5QEq7+UUxVOu0jTv3avoiHIjN0E9c+ukdwEqGu8Lrczx2I+z1IKCJ1C+0A0FZKF+OvnRIwHvOJYWemFLIczbyT7K/h2Vz7c8oz4QRJLIxaaGKx1YRj3qS1BN6VHyFvKZQ2BQz7jXcUxvnvQ==
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=2ujMVwmoPIMqHU3izph4uPFOL+L+KDgKZi9rxOQqbFA=;
 b=F07E3NCytIVmtTWyObfDApwHSsydMRHLoeh16W9GDj+1QXSX1Yh681ZYl8QG0N9NZhBntrkF0izR+S2Bf/FuNhbm2LT436+CUMLMjysj1A/59ZU/K8fCZtIzjhl3sfw8vorSwV1MLRXxRlZkcYyn4r0052RKRWoGLvivZrh5rCc=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <4dff2308-da70-493c-992f-717a8517db46@citrix.com>
Date: Fri, 6 Nov 2026 15:00:47 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 07/28] x86/hvm: avic: add VMCB state initialization
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-8-dmukhin@ford.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <20261105013347.719392-8-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P265CA0108.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2c3::10) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|CH3PR03MB965729:EE_
X-MS-Office365-Filtering-Correlation-Id: b970b090-e719-4ed3-206b-08df3c16bfdd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|22082099003|18002099003|6133799003|10067099003|4143699003|11063799006|261102123227099003|261026140227099003|261028144727099003|261026121527099003|261021123027099003|261022105027099003|261022075727099003|261021121427099003|56012099006|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	ESSK4sdCB8LJCbi+qkvxIWVUP98/Pk11uy1Wj6c9pcjmNLXRwxJ9opzgvKCRx7X8ekVWDkNWGCcFY+Qw3nFQZwT86Q9eKt7C3musqBJ/8sYUflsALpyszRC6hRKcoXkLihkSuM10X0d0JD6JRqtzIJ5yswJeeSp0ePakhCVu9vZCNmzoIVjgiYL3m9QA9MEaKucdyomqkpUm7eaHurP/4DkXZ1KIBMj5QnCN4aNxp57dnKrIglkDyz+xQEwAyxVyznNND/zQW416fbjZ4jLFLts28/5kSPkmJr0fNHWFNy9WoqIznprBVOkEdA7Z4s8zQB7rgK4dU9RrxxnJPJtjHXlU563GZtYWEcSpqa1SlFtbV0+L/QPzSz4ulzdnXUWp0ELdL6QDrrOM9pyrpP/jycAot33vHS1SKR5uWCvPOhfh/vWByUGQ8vuTX+F+AnraFAff8XCA4QwJoIRe7M/3cMUTMgAozmf656E8cda2VRWjsh1Tatuhru2P3teOy7KJG3Fzkr7im9D9ociU9QleX9WfWnMk47jwgtpv8+iR4K4JYHc1S8nTFylDHpJnAyPkzWApp61yBs8b8PWUAz5YAYY0E3t8q21YiJbicVA1dpQ/jUcx8p0bYIfWRhaXbm25RG7hbJhszs61ZW8HE6ruMqEVgO/PZIvq7p6fT42/P+8=
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)(23010399003)(366016)(1800799024)(22082099003)(18002099003)(6133799003)(10067099003)(4143699003)(11063799006)(261102123227099003)(261026140227099003)(261028144727099003)(261026121527099003)(261021123027099003)(261022105027099003)(261022075727099003)(261021121427099003)(56012099006)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VTJMTlBSN1FMUk1JRE14cjJjck9PSUxUZjYyT2dmVndKS0dMSWFNSG9KV2xX?=
 =?utf-8?B?NjFZZ0dNTjNzTjAzRTZEcUhWYkpUMk5zUENqWS9aVTlxQnc4YXdBdHpONys3?=
 =?utf-8?B?TDU3SnByZ3FsZzJEb2JsZzlPM1UxS1BQMVdRWGw1QXA2eGJBRVlkQjNKQ3hq?=
 =?utf-8?B?SXhIL3EweTdEOTY0WGk3MHk2N0E0ZG91Z0RUSm96TlZkTVFMSFQwYXFsdjdx?=
 =?utf-8?B?Nk5TZEFxaURNUmUydUl2S20yKzJ3Ukx2TG1pQUJnQjFJM01SQnJWeFM5USsr?=
 =?utf-8?B?aEtNRUR1VkJvQmdIN3pocHZ3cGhSMmMwOU1zRFFBV1hxMzZYQmtLdmRBaWsv?=
 =?utf-8?B?dU1rOTg1SmVISmRzc01YYjlXcWQ4V3dvNUZZcWJjYjVmaGUwc1k1RHVNalJr?=
 =?utf-8?B?QklESDBaODRBeU1ieDhSNkJ4NlA4Y2VabWJDMTlQNEFMU3dlUVhPaW45TnpG?=
 =?utf-8?B?bGlKTXBycFRNbGg3NWt3bE13akxMSjlhWUxIVDRxSVJYQnNETE0yUitiVFMr?=
 =?utf-8?B?OGhXR0pXdDlwd1NSdHNyVGo4bjJ0UVNxQmd1NUpYenZWdFJYQ3VNRThMdTNH?=
 =?utf-8?B?M1BkUEJqZ09qcmpMclFOZWdvQUFPdkZ0OWh2c254a0gybmVmai9yUDBOTEhT?=
 =?utf-8?B?NmhycmJvNkpGR2JtWHRlQnU2cVVwd0tESXhRTWdiTkl4OHdyK2xCWXYrSWo0?=
 =?utf-8?B?QUdybnJiYWNIYjdVc0Q0Z240TjJicnZRcGhNbGJZblh5RUZhMmk3RTFnYTI2?=
 =?utf-8?B?UjhJUGxNbVJROGZuRmtjNTZ4ejdpTDNDZnlYWWQ3cjF2cVF6TUJlc21xS3NN?=
 =?utf-8?B?Y3dxRS8yRkVRS2puYWNoeHp2MUl5aWh2Nk1pbjQzMjI1NzFMNXVSYnRpTk9S?=
 =?utf-8?B?Nm1qYWFoV1RVa3V6blpZUkpzVkwzQ3NvTTBWTXNTZ3RMVnBmVnNPRmNGL2xZ?=
 =?utf-8?B?YmhaK0ZsODVLbVM0TkVYNmFMRlA4UHFKamJSQUJmKzRmR0hwOXlhTHhFOUlo?=
 =?utf-8?B?MU4vOFdFNkNmWndVOGJGTmJERVovVWZjWWNmZTAvYzM1ZGdYaDY4NkROMUMy?=
 =?utf-8?B?RjA5eUFEUU4xRlNuVTBhc0UyYW9USHpRSlVURzhRM0JVakt5QjVKT3B0bHpj?=
 =?utf-8?B?Mm1aY0NianB0aERmSVhlYTdiNUxNejQ4Mm13NkxQeVBwa0cyV0lWdkZqTmVs?=
 =?utf-8?B?TnA0N1J4TWtSbkRlOXFDWERYSEJSZkV5YnBvUk9SWXRCZHNTeENZZGFzWUs5?=
 =?utf-8?B?SG5JanlETGdPOUk4bnViRzRBaklRMENkR0dLNG45bUdxZW9xcGRla2d6OTlT?=
 =?utf-8?B?UXVVVU5YalJVdGVWWEw1UnZ5dFRzTjlPUFF2dTNEa2ZRUU16M1RmZTRPaUYy?=
 =?utf-8?B?dTNxbkF6cVdQUlBwNGNnNnFjbU1IN1cwczVraGtYb0JGYUpyeG5rRmlBUDJ5?=
 =?utf-8?B?bVQwUHJpZThveWFrMkY3QU1YOHpQTzNPQ3NDdE52ZVl2NXB6a0Vxa2kxdWFX?=
 =?utf-8?B?c0c3WWRNNnlsaUsyaFdtamo5dGRmdkVlb0Nyb0FaV0YyeTZJeENGNlF3NDBM?=
 =?utf-8?B?c3hqTDhMSzU3MnNqblU3UFluejczWlAvemFWZHB6dzNzVmQ0VDZmWFJodlhK?=
 =?utf-8?B?cUtveXh6N1MzYVlLdDNWMEgrRmFBZVorVEI2Ry84TmFxQXhtK1prN0UrWjl0?=
 =?utf-8?B?OHZkZmNsNSt4dk9JNWsrV2FuMGdkcTZtQ2YyOTUxRU0zK1FYQU53WXNkYnB6?=
 =?utf-8?B?WHJaWWttNCtSdGwvOVg2N3ZMaEw0YXYrMEt6REtXdHB4ZlJaZ2JWZG1tdzlX?=
 =?utf-8?B?a2hNYS8vVXhQRFk1Rk1wc29wQi9yTjc0ZDFoZUFqWGcwYUtyT1hNeWxETGt6?=
 =?utf-8?B?eVZqaW02MGxTSlhtOTQ2RG11ZjdyMW0vNWdjNldmMUc5dmRTdUVUdk1XWVFR?=
 =?utf-8?B?M0xBTVQrTHNQZGtIY0g0RFdza1U1VXZoNHdpbjBnQ2FyMEo5Qml0c2pDaENp?=
 =?utf-8?B?Rjk3bWNnSmpDWEtIMkNSRjRNZFBUdU5hNS8rcXIvZjF3bkhTS0cxR243dVNZ?=
 =?utf-8?B?SjBjclFQNUZHUEF6WkFyeVZqOVk3S0VXeGdoM05LV2d1ZXM3ZkExb210UzB3?=
 =?utf-8?B?c0F0WEJCT3RVWWhDMDdWaGE3K2hsK0ZTMHNIQnFrQ3RkeUxORU5SN3lhRWpw?=
 =?utf-8?B?VWdHOUtDR00vdVlIUTJTdlk4eEh4enFBZkNjYkk0YXNYRTBSaVBLbXBjNU9C?=
 =?utf-8?B?RW90ckpYbGpUbjAwREFaL2JJbjdvSUZoRVZLdWc2UERQSXdUK1VvM25PNkZ3?=
 =?utf-8?B?eUFTaUQ5U0IxakpBdHBrQksvcVBNNzU1bmFaSzB4bWdmc1dzM2xMdGYvWVB6?=
 =?utf-8?Q?03ZExM9nMu4EZbu8=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b970b090-e719-4ed3-206b-08df3c16bfdd
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 15:00:51.6612
 (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: JFE82cPB60KqHlNJW7DPxlLrEBqaWUPAIipMymOl7+j1fC3bs3qkvKrSuA4LXSGjV6g5tk5J1SOQLiWcmf+yviZhFDjv3HF6fZdzNUGZyh0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR03MB965729
X-purgate-ID: tlsNG-42698a/1793977255-A82F49EA-54B5E1A0/0/0
X-purgate-type: clean
X-purgate-size: 9053

On 11/5/26 1:33 AM, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Update SVM VMCB with AVIC-related data types as per [1].
> 
> Install AVIC backing page and logical/physical APIC ID tables mappings
> into VMCB.
> 
> Set VMCB 'avic_enable' bit to 1 in case of successful initialization.
> 
> [1] AMD APM Volumes 1-5 "15.29 Advanced Virtual Interrupt Controller".
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>   xen/arch/x86/hvm/svm/avic.c | 110 ++++++++++++++++++++++++++++++++++++
>   xen/arch/x86/hvm/svm/avic.h |   3 +
>   xen/arch/x86/hvm/svm/vmcb.c |   7 +++
>   xen/arch/x86/hvm/svm/vmcb.h |  19 +++++--
>   4 files changed, 135 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
> index 2c0e113ae34e..bc98661a7057 100644
> --- a/xen/arch/x86/hvm/svm/avic.c
> +++ b/xen/arch/x86/hvm/svm/avic.c
> @@ -9,6 +9,16 @@
>   #include <xen/param.h>
>   
>   #include "avic.h"
> +#include "vmcb.h"
> +
> +#define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK        GENMASK_ULL(51, 12U)
> +#define AVIC_PHYSICAL_ID_TABLE_SIZE_MASK                (0xFFULL)
> +
> +/*
> + * For AVIC, the max index allowed for physical APIC ID table is 0xfe (254), as
> + * 0xff is a broadcast to all CPUs, i.e. can't be targeted individually.
> + */
> +#define AVIC_MAX_PHYSICAL_ID                            (0xFEU)
>   
>   bool __read_mostly svm_avic_enable;
>   
> @@ -125,6 +135,106 @@ void svm_avic_domain_relinquish_resources(struct domain *d)
>       }
>   }
>   
> +static bool avic_vcpu_supported(struct vcpu *v)
> +{
> +    struct domain *d = v->domain;
> +    unsigned int id;
> +
> +    if ( !svm_avic_enable || !has_vlapic(d) )
> +        return false;
> +
> +    if ( d->max_vcpus * 2 >= AVIC_PHYSICAL_ID_TABLE_SIZE_MASK )
> +    {
> +        gprintk(XENLOG_WARNING,
> +                "%pv: AVIC: unsupported domain max_vcpus %u\n",
> +                v, d->max_vcpus);
> +        return false;
> +    }
> +
> +    id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
> +    if ( id > AVIC_MAX_PHYSICAL_ID )
> +    {
> +        gprintk(XENLOG_WARNING,
> +                "%pv: AVIC: unsupported APIC ID %u\n",
> +                v, id);
> +        return false;
> +    }
> +
> +    return true;
> +}
> +
> +static void avic_vcpu_enable(const struct vcpu *v, bool enable)
> +{
> +    const struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    struct vmcb_struct *vmcb = sv->vmcb;
> +
> +    vmcb->_vintr.fields.x2avic_enable = 0;
> +    vmcb->_vintr.fields.avic_enable = enable;
> +    vmcb->cleanbits.avic = 0;
> +
> +    printk(XENLOG_INFO
> +           "%pv: AVIC: %s: apic_id=%#x avic_physical_id=%#"PRIx64" max_vcpus=%u\n",
> +           v,
> +           enable ? "enable" : "disable",
> +           GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID)),
> +           sv->avic_physical_id ? ACCESS_ONCE(*sv->avic_physical_id) :
> +                                  0xDEADDEADUL,
> +           v->domain->max_vcpus);
> +}
> +
> +int svm_avic_vmcb_create(struct vcpu *v)
> +{
> +    struct domain *d = v->domain;
> +    struct svm_domain *sd = &d->arch.hvm.svm;
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    struct vmcb_struct *vmcb = sv->vmcb;
> +    const struct vlapic *vlapic = vcpu_vlapic(v);
> +    mfn_t mfn;
> +    uint64_t entry;
> +    unsigned int id;
> +
> +    if ( !avic_vcpu_supported(v) )
> +        return 0;
> +
> +    vmcb->avic_vapic_bar = APIC_DEFAULT_PHYS_BASE;
> +    vmcb->avic_backing_page = page_to_maddr(vlapic->regs_page);
> +
> +    mfn = domain_page_map_to_mfn(sd->avic_logical_id_table);
> +    vmcb->avic_logical_id_table = mfn_to_maddr(mfn);
> +
> +    mfn = domain_page_map_to_mfn(sd->avic_physical_id_table);
> +    vmcb->avic_physical_id_table = mfn_to_maddr(mfn);
> +    vmcb->avic_physical_id_table |= (d->max_vcpus * 2) &
> +                                    AVIC_PHYSICAL_ID_TABLE_SIZE_MASK;
> +
> +    id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
> +
> +    sv->avic_physical_id = &sd->avic_physical_id_table[id];
> +
> +    entry = vmcb->avic_backing_page & AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK;
> +    entry |= AVIC_PHYSICAL_ID_ENTRY_VALID_MASK;
> +
> +    ACCESS_ONCE(*sv->avic_physical_id) = entry;
> +
> +    avic_vcpu_enable(v, true);
> +
> +    return 0;
> +}
> +
> +void svm_avic_vmcb_destroy(struct vcpu *v)
> +{
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    struct vmcb_struct *vmcb = sv->vmcb;
> +
> +    if ( svm_avic_vcpu_enabled(v) )
> +        avic_vcpu_enable(v, false);
> +
> +    vmcb->avic_physical_id_table = 0;
> +    vmcb->avic_logical_id_table = 0;
> +    vmcb->avic_backing_page = 0;
> +    vmcb->avic_vapic_bar = 0;
> +}
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
> index 3da62f59b0cf..1084ae683944 100644
> --- a/xen/arch/x86/hvm/svm/avic.h
> +++ b/xen/arch/x86/hvm/svm/avic.h
> @@ -11,4 +11,7 @@ extern bool svm_avic_enable;
>   int svm_avic_domain_initialise(struct domain *d);
>   void svm_avic_domain_relinquish_resources(struct domain *d);
>   
> +int svm_avic_vmcb_create(struct vcpu *v);
> +void svm_avic_vmcb_destroy(struct vcpu *v);
> +
>   #endif /* __SVM_AVIC_H__ */
> diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
> index 3ec5bdddf588..c4282bfd6c6e 100644
> --- a/xen/arch/x86/hvm/svm/vmcb.c
> +++ b/xen/arch/x86/hvm/svm/vmcb.c
> @@ -20,6 +20,7 @@
>   #include <asm/p2m.h>
>   #include <asm/spec_ctrl.h>
>   
> +#include "avic.h"
>   #include "svm.h"
>   #include "vmcb.h"
>   
> @@ -215,6 +216,10 @@ int svm_create_vmcb(struct vcpu *v)
>       if ( rc )
>           return rc;
>   
> +    rc = svm_avic_vmcb_create(v);
> +    if ( rc )
> +        return rc;
> +
>       paddr = virt_to_maddr(nv->nv_n1vmcx);
>       nv->nv_n1vmcx_pa = paddr;
>       svm->vmcb_pa = paddr;
> @@ -227,6 +232,8 @@ void svm_destroy_vmcb(struct vcpu *v)
>       struct nestedvcpu *nv = &vcpu_nestedhvm(v);
>       struct svm_vcpu *svm = &v->arch.hvm.svm;
>   
> +    svm_avic_vmcb_destroy(v);
> +
>       if ( nv->nv_n1vmcx != NULL )
>           free_vmcb(nv->nv_n1vmcx);
>   
> diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
> index 8b351679fac5..1ee5da053a9a 100644
> --- a/xen/arch/x86/hvm/svm/vmcb.h
> +++ b/xen/arch/x86/hvm/svm/vmcb.h
> @@ -346,7 +346,9 @@ typedef union
>           u64 intr_masking: 1;
>           u64 vgif_enable:  1;
>           u64 vnmi_enable:  1;
> -        u64 :             5;
> +        u64 rsvd2:        3;
> +        u64 x2avic_enable:1;
> +        u64 avic_enable:  1;  /* bit 31 */
>           u64 vector:       8;
>           u64 rsvd3:       24;
>       } fields;
> @@ -362,6 +364,10 @@ typedef union
>       uint64_t raw;
>   } virt_ext_t;
>   
> +/*
> + * AMD64 Achitecture's Programmer's Manual, Volume 2
> + * 15.15.3 VMCB Clean Field
> + */
>   typedef union
>   {
>       struct {
> @@ -377,7 +383,7 @@ typedef union
>           bool seg:1;        /* 8:  cs, ds, es, ss, cpl */
>           bool cr2:1;        /* 9:  cr2 */
>           bool lbr:1;        /* 10: debugctlmsr, last{branch,int}{to,from}ip */
> -        bool :1;
> +        bool avic:1;       /* 11: AVIC */
>           bool cet:1;        /* 12: msr_s_set, ssp, msr_isst */
>       };
>       uint32_t raw;
> @@ -469,7 +475,8 @@ struct vmcb_struct {
>           };
>           uint64_t _np_ctrl;
>       };
> -    uint64_t res08[2];
> +    uint64_t avic_vapic_bar;    /* offset 0x98 */
> +    uint64_t res08;             /* offset 0xA0 */
>       intinfo_t event_inj;        /* offset 0xA8 */
>       uint64_t _h_cr3;            /* offset 0xB0 - cleanbit 4 */
>       virt_ext_t virt_ext;        /* offset 0xB8 */
> @@ -478,7 +485,11 @@ struct vmcb_struct {
>       uint64_t nextrip;           /* offset 0xC8 */
>       uint8_t  guest_ins_len;     /* offset 0xD0 */
>       uint8_t  guest_ins[15];     /* offset 0xD1 */
> -    uint64_t res10a[8];         /* offset 0xE0 */
> +    uint64_t avic_backing_page;      /* offset 0xE0 */
> +    uint64_t res09a;                 /* offset 0xE8 */
> +    uint64_t avic_logical_id_table;  /* offset 0xF0 */
> +    uint64_t avic_physical_id_table; /* offset 0xF8 */
> +    uint64_t res10a[4];         /* offset 0x100 pad to save area */
>       uint16_t bus_lock_count;    /* offset 0x120 */
>       uint16_t res10b[3];         /* offset 0x122 */
>       uint64_t res10c[91];        /* offset 0x128 pad to save area */

The avic cleanbit is defined above but then you don't actually make use
of it.  The fields to which the cleanbit applies should be marked and
have accessors defined.

In principle, it shouldn't make a difference since AFAICT these fields
are only written during VMCB creation when all the cleanbits are cleared
anyway but it makes sense for consistency.

Ross


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:02:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:02:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476719.1682702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLS7-0000gV-87; Fri, 06 Nov 2026 15:02:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476719.1682702; Fri, 06 Nov 2026 15:02:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLS7-0000gO-5K; Fri, 06 Nov 2026 15:02:03 +0000
Received: by outflank-mailman (input) for mailman id 1476719;
 Fri, 06 Nov 2026 15:02:02 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b1616f85000403d@swg.vates.tech>)
 id 1xPLS6-0000gI-R8
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 15:02:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLS6-000Nho-7s
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:02:02 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b1616f85000403d@swg.vates.tech>)
 id 6aedebdf-e002-0a2a0a5209dd-0a2a4503bc5e-30
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:02:02 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b1616f85000403d@swg.vates.tech>)
 id 6aedebe9-fae8-0a2a45030019-b9ff1c22b1d9-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:02:02 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b1616f85000403d.00a for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 15:01:55 +0000
Received: from julian.home (82-67-211-29.subs.proxad.net [82.67.211.29])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id 1836A81169;
 Fri,  6 Nov 2026 16:01:54 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=HcS7Wx1laP6tiPacb1Hf+gduLCdPWiMZ+f17krnHkEM=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=knJ6SpP6j3iONdNvSjOUvIAUguKAi8Q4LhYYH/7O5WpqSL0J/FZBKMy9AxX668najBI98GouO
 U8H5r5gedgtsUTIOn8uh30yMtEvdvzXZPpSw8zvZpDaOPY8fsoe4daDk5gfnDoSl+rl8HXhOVPA
 U5ZMEaRpo1LMTbwmb1cRZLXixdyIfUV2NCGeIvGAOG6/0YIivhR42qOLpmZ5hc+gs5KbMZI/Thd
 fuM82dcL1O3gMeUOTw7h2/SQP7/NDE09eDQtaDnfTddm4PwBqcwwPpwUYNTAME1Y2lmHzxrH/Vm
 MB7iWiK/HfHSOS+ADERI1K/BHhNiR5u6MSaF2wVE79RA==
X-Zone-Loop: 8eaba596b66a797b3c85f384b4c698cd7dccbb67b70b
x-campaign-type: default
x-transaction-id: 9ed4ec70-ce6c-4ac4-b568-f73cf2105318
x-swg-uid: 01-70bcb356-a602-4ff3-b650-101fc9a60b71
X-Mailer: Sweego
Message-ID:
 <1793977315.8631fc262581453bbf619ec5b2062170.1a1b1616f85000403d@vates.tech>
x-swg-bid: 1793977315.8631fc262581453bbf619ec5b2062170.1a1b1616f85000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Julian Vetter <julian.vetter@vates.tech>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Jiayuan Chen <jiayuan.chen@linux.dev>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	"Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH 1/2] irq_work: Add irq_work_raise_pending()
Date: Fri,  6 Nov 2026 16:01:37 +0100
In-Reply-To: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
References: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.3d.696c5d20722f4023.1a1b1616d7a.7ba72b838a78e8bd=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793977314682
X-purgate-ID: tlsNG-33051d/1793977322-770F64E9-65D05C4E/0/0
X-purgate-type: clean
X-purgate-size: 2825

---=Part.3d.696c5d20722f4023.1a1b1616d7a.7ba72b838a78e8bd=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

irq_work_queue() only raises the irq_work interrupt when the per-CPU
list transitions from empty to non-empty=2E Later queuers rely on that
interrupt to also run their work=2E

If that interrupt gets lost, nothing runs the raised list on that CPU
anymore=2E On architectures with an irq_work interrupt irq_work_tick()
skips the raised list, and further irq_work_queue() calls find the list
non-empty and don't raise the interrupt again=2E All irq_work on that CPU
is stuck=2E

This happens when irq_work is queued while the local interrupt
controller is disabled, e=2Eg=2E a self-IPI is dropped when sent while the
x86 local APIC is software-disabled=2E

Add irq_work_raise_pending(), which re-raises the irq_work interrupt if
work is pending on the current CPU=2E Code which disables the local
interrupt controller can call it once interrupts are accepted again=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
 include/linux/irq_work=2Eh |  2 ++
 kernel/irq_work=2Ec        | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/include/linux/irq_work=2Eh b/include/linux/irq_work=2Eh
index 7184e1273965=2E=2E712a92ead4a5 100644
--- a/include/linux/irq_work=2Eh
+++ b/include/linux/irq_work=2Eh
@@ -62,12 +62,14 @@ void irq_work_run(void);
 void irq_work_run_cpu(unsigned int cpu);
 bool irq_work_needs_cpu(void);
 void irq_work_single(void *arg);
+void irq_work_raise_pending(void);
=20
 void arch_irq_work_raise(void);
=20
 #else
 static inline bool irq_work_needs_cpu(void) { return false; }
 static inline void irq_work_run(void) { }
+static inline void irq_work_raise_pending(void) { }
 static inline void irq_work_run_cpu(unsigned int cpu) { }
 static inline void irq_work_single(void *arg) { }
 #endif
diff --git a/kernel/irq_work=2Ec b/kernel/irq_work=2Ec
index 73eabcbdcd50=2E=2E1720a07f12bf 100644
--- a/kernel/irq_work=2Ec
+++ b/kernel/irq_work=2Ec
@@ -112,6 +112,16 @@ static void __irq_work_queue_local(struct irq_work *w=
ork)
 		irq_work_raise(work);
 }
=20
+/* Re-raise the irq_work interrupt on this CPU */
+void irq_work_raise_pending(void)
+{
+	lockdep_assert_irqs_disabled();
+
+	if (!llist_empty(this_cpu_ptr(&raised_list)) ||
+	    (tick_nohz_tick_stopped() && !llist_empty(this_cpu_ptr(&lazy_list)))=
)
+		arch_irq_work_raise();
+}
+
 /* Enqueue the irq work @work on the current CPU */
 bool irq_work_queue(struct irq_work *work)
 {
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.3d.696c5d20722f4023.1a1b1616d7a.7ba72b838a78e8bd=---


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:02:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:02:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476720.1682712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLSF-0000th-Fb; Fri, 06 Nov 2026 15:02:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476720.1682712; Fri, 06 Nov 2026 15:02:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLSF-0000ta-Ce; Fri, 06 Nov 2026 15:02:11 +0000
Received: by outflank-mailman (input) for mailman id 1476720;
 Fri, 06 Nov 2026 15:02:10 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b161726c000403d@swg.vates.tech>)
 id 1xPLSE-0000tC-1F
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 15:02:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLSD-000Nho-CP
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:02:09 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b161726c000403d@swg.vates.tech>)
 id 6aedebf1-e002-0a2a0a5209dd-0a2a4501d8f0-0
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:02:09 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1b161726c000403d@swg.vates.tech>)
 id 6aedebf0-5984-0a2a45010019-b9ff1c23b6af-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:02:09 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1b161726c000403d.00a for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Fri, 06 Nov 2026 15:01:55 +0000
Received: from julian.home (82-67-211-29.subs.proxad.net [82.67.211.29])
 (Authenticated sender: julian.vetter@vates.tech)
 by mail2.vates.fr (Postfix) with ESMTPSA id E6ED081A63;
 Fri,  6 Nov 2026 16:01:54 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=wHHvi3hBR4r+9APsqtUvDD87Ym1BNhY3X703ylm8Qyw=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:in-reply-to:references:feedback-id;
 b=j1qYmRoV8gTjKVD2zGfnYtkSPKWdpHSSVTrMSLKoukGnuOWYqJR+wAopGSmVRths4Y46SvTwx
 eMZ8OqNUvQFNbvGyU3NET0jM9A/1AAWuQ3LaRa8efWJAnISqz6whRjqzZ6R3UlgHJ9Jk4wHm2eO
 qGmvSqPGpnQTJkCAsS+Mi840Mq8oHSEvPVEdpcETJ+gSZuDQ+FHaQaxcfBJtkcPUnrGRI+Qb2Gc
 M/urp2+jgxc2P0LXZR/T6viI+G8b+2SH8CnAsQenWtVGwWOORkDMHeJvZGjhmP580fwQo/xzUu7
 bfsb6IUbNqYGW29PnVQzwG4YlEpJdTKy+USUGKuOT0Yw==
X-Zone-Loop: 421a4d0a402fe47186c6b38243650f29e1e461c3535f
x-campaign-type: default
x-transaction-id: 32875009-4875-4d3c-9d00-34efde578f7a
x-swg-uid: 01-2b6e033f-775e-4059-9040-9249c2aed5a3
X-Mailer: Sweego
Message-ID:
 <1793977316.8631fc262581453bbf619ec5b2062170.1a1b161726c000403d@vates.tech>
x-swg-bid: 1793977316.8631fc262581453bbf619ec5b2062170.1a1b161726c000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
From: Julian Vetter <julian.vetter@vates.tech>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Jiayuan Chen <jiayuan.chen@linux.dev>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	"Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
	Julian Vetter <julian.vetter@vates.tech>
Subject: [PATCH 2/2] xen/manage: Re-raise pending irq_work after suspend
Date: Fri,  6 Nov 2026 16:01:38 +0100
In-Reply-To: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
References: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
MIME-Version: 1.0
X-BM-Disclaimer: Yes
Content-Type: multipart/alternative; boundary="-=Part.3e.4ed4c3bce91e9c03.1a1b16170c2.c742e2ef938736bc=-"
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1793977315523
X-purgate-ID: tlsNG-d62444/1793977329-BE664757-78A7B694/0/0
X-purgate-type: clean
X-purgate-size: 1846

---=Part.3e.4ed4c3bce91e9c03.1a1b16170c2.c742e2ef938736bc=-
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

xen_suspend() calls syscore_suspend(), which on x86 disables the APIC,
and only re-enables it in syscore_resume()=2E But, in between,
gnttab_resume() and xen_irq_resume() call printk()=2E

With an nbcon console, e=2Eg=2E the 8250, printk() queues irq_work, which
sends a self-IPI=2E As the APIC is disabled, the IPI is dropped=2E The
irq_work stays on the raised list, and no later irq_work_queue() on that
CPU raises the IPI again=2E All irq_work on that CPU is dead after resume=
=2E

Commit 560f4deda327 ("printk/nbcon: Change nbcon_irq_work to
IRQ_WORK_LAZY") removed this particular issue, but any other non-lazy
irq_work queued in this window would cause the irq_work to stall in the
same way=2E

To fix the issue, re-raise pending irq_work once syscore_resume() has
re-enabled the APIC=2E

Signed-off-by: Julian Vetter <julian=2Evetter@vates=2Etech>
---
 drivers/xen/manage=2Ec | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/xen/manage=2Ec b/drivers/xen/manage=2Ec
index 05d7de128e71=2E=2E5054fcb25337 100644
--- a/drivers/xen/manage=2Ec
+++ b/drivers/xen/manage=2Ec
@@ -13,6 +13,7 @@
 #include <linux/stop_machine=2Eh>
 #include <linux/suspend=2Eh>
 #include <linux/freezer=2Eh>
+#include <linux/irq_work=2Eh>
 #include <linux/syscore_ops=2Eh>
 #include <linux/export=2Eh>
=20
@@ -86,6 +87,8 @@ static int xen_suspend(void *data)
=20
 	syscore_resume();
=20
+	irq_work_raise_pending();
+
 	return 0;
 }
=20
--=20
2=2E53=2E0



-- 
Julian Vetter | Vates Hypervisor & Kernel Developer

XCP-ng & Xen Orch=
estra - Vates solutions

web: https://vates=2Etech
---=Part.3e.4ed4c3bce91e9c03.1a1b16170c2.c742e2ef938736bc=---


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:16:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:16:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476748.1682807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfn-0005Vo-Bh; Fri, 06 Nov 2026 15:16:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476748.1682807; Fri, 06 Nov 2026 15:16:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfn-0005Uy-2t; Fri, 06 Nov 2026 15:16:11 +0000
Received: by outflank-mailman (input) for mailman id 1476748;
 Fri, 06 Nov 2026 15:16:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfl-0004y1-Ms; Fri, 06 Nov 2026 15:16:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLfk-000GUT-RI; Fri, 06 Nov 2026 16:16:08 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef2e-bab6-0a2a0a5309dd-0a2a45018d98-22
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:08 +0100
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef37-5984-0a2a45010019-6882d725dc6a-3
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:08 +0100
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfh-00000001GdW-1Cvs; Fri, 06 Nov 2026 15:16:05 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfh-0000000A5vb-11J3; Fri, 06 Nov 2026 15:16:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.515 (Entity 5.515)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 528 v1 (CVE-2026-100082) - Linux
 xen-blkback: guest can trigger use-after-free for reading statistic data
Message-Id: <E1xPLfh-0000000A5vb-11J3@xenbits.xenproject.org>
Date: Fri, 06 Nov 2026 15:16:05 +0000
X-purgate-ID: tlsNG-d62444/1793978168-BD146757-8A31FDDE/0/0
X-purgate-type: clean
X-purgate-size: 7764

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

           Xen Security Advisory CVE-2026-100082 / XSA-528

 Linux xen-blkback: guest can trigger use-after-free for reading statistic data

ISSUE DESCRIPTION
=================

he driver does not serialise reads of the device I/O statistics
against the freeing of the memory that holds them. This leads to a
use-after-free when reading statistical counters while the device is
being torn down.

IMPACT
======

This most likely crashes the driver, and possibly the host, causing a
Denial of Service (DoS) for the entire host.

Information leaks cannot be ruled out.

VULNERABLE SYSTEMS
==================

Linux versions 4.5 and newer are vulnerable.

MITIGATION
==========

Using a userspace PV block backend (e.g. the qemu based "qdisk" backend)
will mitigate the problem.

Using a dedicated block driver domain per guest will mitigate the
problem.

CREDITS
=======

This issue was discovered by Yehyeong Lee of Hyundai Mobis.

RESOLUTION
==========

Applying the attached patch resolves this issue.

xsa528-linux.patch           Linux

$ sha256sum xsa528*
848d5cc56a7b31e84399ac00d616c36bd2b5efdcc0f23017a7590b1b58900c19  xsa528-linux.patch
$

NOTE REGARDING LACK OF EMBARGO
==============================

A very similar issue was disclosed in public.
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmrt7tAMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZTFkH/jRhPRPUnQb/2KV42fKAPvQtffdEIWr72wc5ogYm
d6rTBU81hLdZAyq+Zo2jwhgggjXNeurD84z1Lnr8X6YgnRBAHfWhOd28V583K83j
BzmWsbFeUsMLjiaWuftzdr1RdpqB1ajk6NRAnR5Eb4jrWltIOekDgSviJupMfbRs
iq9pM0J/zbFBcIu21Lor4R5F8wYLx3cbzE0LuSq0j+D5uCMFIAhkea+7ReadQYxr
+L3LbEJIdcGpfZlcf9SRgJ8KKJr6d3JlHAVx2fpq8w/buwRFv3M87VL64MPUk7Tr
kJ/Wpl+hpvnTNE0m88eF1x3pMkdco6fwzz/xg7lvxm1k2Ho=
=CcMW
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa528-linux.patch"
Content-Disposition: attachment; filename="xsa528-linux.patch"
Content-Transfer-Encoding: base64

RnJvbTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpEYXRlOiBUaHUsIDUgTm92IDIw
MjYgMDg6Mjc6MzggKzAxMDAKU3ViamVjdDogW1BBVENIXSB4ZW4tYmxrYmFjazogQXZvaWQgVUFG
IHdoZW4gcmVhZGluZyBJL08gc3RhdGlzdGljcwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5
cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
OGJpdAoKUmVhZGluZyBJL08gc3RhdGlzdGljcyB2aWEgc3lzZnMgY29uY3VycmVudGx5IHdpdGgg
dGVhcmluZyBkb3duIGEKZnJvbnRlbmQgZGV2aWNlIG1pZ2h0IHJlc3VsdCBpbiBVQUYgb3IgYSBO
VUxMIGRlcmVmZXJlbmNlLCBhcyB0aGUKcmVhZGluZyBvZiB0aGUgc3RhdGlzdGljcyBkYXRhIGlz
IG5vdCBzeW5jaHJvbml6ZWQgd2l0aCBmcmVlaW5nIHRoZQpkYXRhLgoKVXNlIGEgcndsb2NrIGZv
ciBzeW5jaHJvbml6aW5nLgoKVGhpcyBpcyBYU0EtNTI4IC8gQ1ZFLTIwMjYtMTAwMDgyCgpGaXhl
czogZGI2ZmJjMTA2Nzg2ICgieGVuL2Jsa2JhY2s6IG1ha2Ugc3RfIHN0YXRpc3RpY3MgcGVyIHJp
bmciKQpSZXBvcnRlZC1ieTogWWVoeWVvbmcgTGVlIDx5aGxlZUBpc3NsYWIua29yZWEuYWMua3I+
ClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KQWNrZWQtYnk6
IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyQHhlbnByb2plY3Qub3JnPgotLS0KIGRyaXZlcnMvYmxv
Y2sveGVuLWJsa2JhY2svY29tbW9uLmggfCAgMiArKwogZHJpdmVycy9ibG9jay94ZW4tYmxrYmFj
ay94ZW5idXMuYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMiBmaWxlcyBj
aGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvYmxvY2sveGVuLWJsa2JhY2svY29tbW9uLmggYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGti
YWNrL2NvbW1vbi5oCmluZGV4IGI0MjdkNTRiYzEyMC4uZjU4OTBiM2YxZGY5IDEwMDY0NAotLS0g
YS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2NvbW1vbi5oCisrKyBiL2RyaXZlcnMvYmxvY2sv
eGVuLWJsa2JhY2svY29tbW9uLmgKQEAgLTMxOCw4ICszMTgsMTAgQEAgc3RydWN0IHhlbl9ibGtp
ZiB7CiAJdW5zaWduZWQgaW50CQlucl9yaW5nX3BhZ2VzOwogCWJvb2wJCQltdWx0aV9yZWY7CiAJ
LyogQWxsIHJpbmdzIGZvciB0aGlzIGRldmljZS4gKi8KKwlyd2xvY2tfdAkJcmluZ3NfbG9jazsK
IAlzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcJKnJpbmdzOwogCXVuc2lnbmVkIGludAkJbnJfcmluZ3M7
CisKIAl1bnNpZ25lZCBsb25nCQlidWZmZXJfc3F1ZWV6ZV9lbmQ7CiB9OwogCmRpZmYgLS1naXQg
YS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jIGIvZHJpdmVycy9ibG9jay94ZW4t
YmxrYmFjay94ZW5idXMuYwppbmRleCA0Yjg2NWVmODAwYjEuLjhkMGZmOGZjYWMyMiAxMDA2NDQK
LS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYworKysgYi9kcml2ZXJzL2Js
b2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCkBAIC0xMjcsMTQgKzEyNywyMyBAQCBzdGF0aWMgdm9p
ZCB4ZW5fdXBkYXRlX2Jsa2lmX3N0YXR1cyhzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZikKIAlyZXR1
cm47CiB9CiAKLXN0YXRpYyBpbnQgeGVuX2Jsa2lmX2FsbG9jX3JpbmdzKHN0cnVjdCB4ZW5fYmxr
aWYgKmJsa2lmKQorc3RhdGljIGludCB4ZW5fYmxraWZfYWxsb2NfcmluZ3Moc3RydWN0IHhlbl9i
bGtpZiAqYmxraWYsCisJCQkJIHVuc2lnbmVkIGludCBucl9yaW5ncykKIHsKIAl1bnNpZ25lZCBp
bnQgcjsKKwlzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmdzOwogCi0JYmxraWYtPnJpbmdzID0g
a3phbGxvY19vYmpzKHN0cnVjdCB4ZW5fYmxraWZfcmluZywgYmxraWYtPm5yX3JpbmdzKTsKLQlp
ZiAoIWJsa2lmLT5yaW5ncykKKwlyaW5ncyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgeGVuX2Jsa2lm
X3JpbmcsIG5yX3JpbmdzKTsKKwlpZiAoIXJpbmdzKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCXdy
aXRlX2xvY2soJmJsa2lmLT5yaW5nc19sb2NrKTsKKworCWJsa2lmLT5yaW5ncyA9IHJpbmdzOwor
CWJsa2lmLT5ucl9yaW5ncyA9IG5yX3JpbmdzOworCisJd3JpdGVfdW5sb2NrKCZibGtpZi0+cmlu
Z3NfbG9jayk7CisKIAlmb3IgKHIgPSAwOyByIDwgYmxraWYtPm5yX3JpbmdzOyByKyspIHsKIAkJ
c3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nID0gJmJsa2lmLT5yaW5nc1tyXTsKIApAQCAtMTc0
LDYgKzE4Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGVuX2Jsa2lmICp4ZW5fYmxraWZfYWxsb2MoZG9t
aWRfdCBkb21pZCkKIAlibGtpZi0+ZG9taWQgPSBkb21pZDsKIAlhdG9taWNfc2V0KCZibGtpZi0+
cmVmY250LCAxKTsKIAlpbml0X2NvbXBsZXRpb24oJmJsa2lmLT5kcmFpbl9jb21wbGV0ZSk7CisJ
cndsb2NrX2luaXQoJmJsa2lmLT5yaW5nc19sb2NrKTsKIAogCS8qCiAJICogQmVjYXVzZSBmcmVl
aW5nIGJhY2sgdG8gdGhlIGNhY2hlIG1heSBiZSBkZWZlcnJlZCwgaXQgaXMgbm90CkBAIC0yNjgs
NiArMjc4LDcgQEAgc3RhdGljIGludCB4ZW5fYmxraWZfZGlzY29ubmVjdChzdHJ1Y3QgeGVuX2Js
a2lmICpibGtpZikKIAlzdHJ1Y3QgcGVuZGluZ19yZXEgKnJlcSwgKm47CiAJdW5zaWduZWQgaW50
IGosIHI7CiAJYm9vbCBidXN5ID0gZmFsc2U7CisJc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5n
czsKIAogCWZvciAociA9IDA7IHIgPCBibGtpZi0+bnJfcmluZ3M7IHIrKykgewogCQlzdHJ1Y3Qg
eGVuX2Jsa2lmX3JpbmcgKnJpbmcgPSAmYmxraWYtPnJpbmdzW3JdOwpAQCAtMzM0LDEwICszNDUs
MTYgQEAgc3RhdGljIGludCB4ZW5fYmxraWZfZGlzY29ubmVjdChzdHJ1Y3QgeGVuX2Jsa2lmICpi
bGtpZikKIAkgKiBibGtpZi0+cmluZ3Mgd2FzIGFsbG9jYXRlZCBpbiBjb25uZWN0X3JpbmcsIHNv
IHdlIHNob3VsZCBmcmVlIGl0IGluCiAJICogaGVyZS4KIAkgKi8KLQlrZnJlZShibGtpZi0+cmlu
Z3MpOworCXdyaXRlX2xvY2soJmJsa2lmLT5yaW5nc19sb2NrKTsKKworCXJpbmdzID0gYmxraWYt
PnJpbmdzOwogCWJsa2lmLT5yaW5ncyA9IE5VTEw7CiAJYmxraWYtPm5yX3JpbmdzID0gMDsKIAor
CXdyaXRlX3VubG9jaygmYmxraWYtPnJpbmdzX2xvY2spOworCisJa2ZyZWUocmluZ3MpOworCiAJ
cmV0dXJuIDA7CiB9CiAKQEAgLTM4NSw2ICs0MDIsNyBAQCB2b2lkIHhlbl9ibGtpZl9pbnRlcmZh
Y2VfZmluaSh2b2lkKQogCQl1bnNpZ25lZCBpbnQgaTsJCQkJCQlcCiAJCXVuc2lnbmVkIGxvbmcg
bG9uZyByZXN1bHQgPSAwOwkJCQlcCiAJCQkJCQkJCQlcCisJCXJlYWRfbG9jaygmYmxraWYtPnJp
bmdzX2xvY2spOwkJCQlcCiAJCWlmICghYmxraWYtPnJpbmdzKQkJCQlcCiAJCQlnb3RvIG91dDsJ
CQkJCVwKIAkJCQkJCQkJCVwKQEAgLTM5NSw2ICs0MTMsNyBAQCB2b2lkIHhlbl9ibGtpZl9pbnRl
cmZhY2VfZmluaSh2b2lkKQogCQl9CQkJCQkJCVwKIAkJCQkJCQkJCVwKIG91dDoJCQkJCQkJCQlc
CisJCXJlYWRfdW5sb2NrKCZibGtpZi0+cmluZ3NfbG9jayk7CQkJXAogCQlyZXR1cm4gc3ByaW50
ZihidWYsIGZvcm1hdCwgcmVzdWx0KTsJCQlcCiAJfQkJCQkJCQkJXAogCXN0YXRpYyBERVZJQ0Vf
QVRUUihuYW1lLCAwNDQ0LCBzaG93XyMjbmFtZSwgTlVMTCkKQEAgLTExMDIsOCArMTEyMSw3IEBA
IHN0YXRpYyBpbnQgY29ubmVjdF9yaW5nKHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKQogCQkJCXJl
cXVlc3RlZF9udW1fcXVldWVzLCB4ZW5ibGtfbWF4X3F1ZXVlcyk7CiAJCXJldHVybiAtRU5PU1lT
OwogCX0KLQlibGtpZi0+bnJfcmluZ3MgPSByZXF1ZXN0ZWRfbnVtX3F1ZXVlczsKLQlpZiAoeGVu
X2Jsa2lmX2FsbG9jX3JpbmdzKGJsa2lmKSkKKwlpZiAoeGVuX2Jsa2lmX2FsbG9jX3JpbmdzKGJs
a2lmLCByZXF1ZXN0ZWRfbnVtX3F1ZXVlcykpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcHJfaW5m
bygiJXM6IHVzaW5nICVkIHF1ZXVlcywgcHJvdG9jb2wgJWQgKCVzKSAlc1xuIiwgZGV2LT5ub2Rl
bmFtZSwKLS0gCjIuNTYuMAoK

--=separator--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:16:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:16:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476744.1682776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfk-0004qp-TL; Fri, 06 Nov 2026 15:16:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476744.1682776; Fri, 06 Nov 2026 15:16:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfk-0004qg-P5; Fri, 06 Nov 2026 15:16:08 +0000
Received: by outflank-mailman (input) for mailman id 1476744;
 Fri, 06 Nov 2026 15:16:07 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfi-0004Gd-Sh; Fri, 06 Nov 2026 15:16:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLfi-00447Q-9G; Fri, 06 Nov 2026 16:16:06 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef2d-2eae-0a2a0a5409dd-0a2a450c88d0-20
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:06 +0100
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef34-f479-0a2a450c0019-6882d725be5a-3
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:05 +0100
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfe-00000001Gd5-1DVm; Fri, 06 Nov 2026 15:16:02 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfe-0000000A5tc-0wMP; Fri, 06 Nov 2026 15:16:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.515 (Entity 5.515)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 527 v1 (CVE-2026-100081) - Linux
 xen-netback: guest can trigger use-after-free for reading multicast data
Message-Id: <E1xPLfe-0000000A5tc-0wMP@xenbits.xenproject.org>
Date: Fri, 06 Nov 2026 15:16:02 +0000
X-purgate-ID: tlsNG-d25034/1793978166-770D9A5B-658D72A8/0/0
X-purgate-type: clean
X-purgate-size: 4580

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

           Xen Security Advisory CVE-2026-100081 / XSA-527

 Linux xen-netback: guest can trigger use-after-free for reading multicast data

ISSUE DESCRIPTION
=================

Multicast handling in the driver is implemented as a lookup early on the
transmit (guest receive) path.  The respective function can be invoked in
parallel with teardown of a device.  Thus the lookup may access data which
was already freed, with that memory perhaps already being in new use
elsewhere.

IMPACT
======

The most likely outcome is a driver crash, possibly escalated to a host
crash.  This then is a Denial of Service (DoS) affecting the entire host.
Information leaks and, with very low likelihood, privilege escalation
cannot be ruled out.

VULNERABLE SYSTEMS
==================

Linux versions 4.3 and newer are vulnerable.

MITIGATION
==========

Using a userspace PV network backend (e.g. the qemu based "qnic" backend)
will mitigate the problem.

Using a dedicated network driver domain per guest will mitigate the
problem.

CREDITS
=======

This issue was discovered by kerhunt.

RESOLUTION
==========

Applying the attached patch resolves this issue.

Note that patches for released versions are generally prepared to
apply to the stable branches, and may not apply cleanly to the most
recent release tarball.  Downstreams are encouraged to update to the
tip of the stable branch before applying these patches.

xsa527-linux.patch           Linux 7.4-rc - 5.5

$ sha256sum xsa527*
f68ebd9c262ac005043c9832bc8f73d70f5e083d1c9435b55d4dccadbb3e40df  xsa527-linux.patch
$

NOTE REGARDING LACK OF EMBARGO
==============================

A closely related issue was disclosed in public.
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmrt7s4MHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZeNAH/j1BrfAQ6QeYh/fzh1ql5EG2e2hE3m3cP6k84uBh
ZIVNAcqat+6UsxF/jaHRyTV49cts4HVHDBu9mpoi1vWkLhoSK7kkLl37oh0ar71P
XpCtLfgqzCPd/0F19at2l5sigXwZA/GvRbn4aEVp4s+dC5U/a67IZJtj/xMvTGVB
oOeIEenbIQHrWMCQmXaLHa2Ht2qCgJyyt0LzAFZf2pTbcl6tnCt8yQFVHh2ABa7e
5rXgH3bJRp6AOod3nsAkL+al2l8ShAx/TTIvDUxZw+qD6bELMDBwGYWSTMCRogAH
JcqEMRgZWL87gx2ubKJkG57pGuoXv8ydhD2o0/9WrBPRbzs=
=dUnZ
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa527-linux.patch"
Content-Disposition: attachment; filename="xsa527-linux.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0OiB4ZW4tbmV0YmFj
azogZGVmZXIgeGVudmlmX21jYXN0X2FkZHJfbGlzdF9mcmVlKCkKCkluIG9yZGVyIGZvciB0aGUg
ZnVuY3Rpb24gdG8gbGVnaXRpbWF0ZWx5IGF2b2lkIGxvY2tpbmcvUkNVLCBpdCBuZWVkcyB0bwpy
dW4gYWZ0ZXIgYWxsIFRYL1JYIHByb2Nlc3NpbmcgaGFzIGZpbmlzaGVkL3N0b3BwZWQ6IExvb2t1
cHMgaGFwcGVuIGZyb20KeGVudmlmX3N0YXJ0X3htaXQoKSwgd2hpbGUgYWRkcy9yZW1vdmVzIGhh
cHBlbiBmcm9tIHhlbnZpZl90eF9hY3Rpb24oKQooY2FsbGVkIG91dCBvZiB4ZW52aWZfcG9sbCgp
KS4KCk1vdmUgdGhlIGNhbGwgb3V0IG9mIHhlbnZpZl9kaXNjb25uZWN0X2RhdGEoKSAodGhlIGNh
bGwgdG8gdGhlIGZ1bmN0aW9uCmZyb20gY29ubmVjdCgpJ3MgZXJyb3IgcGF0aCBkb2Vzbid0IHJl
cXVpcmUgYW55IGNsZWFuaW5nIHVwIHRoZXJlKSwgYW5kCnB1dCBpdCBwYXN0IHRoZSBzeW5jaHJv
bml6YXRpb24gcG9pbnQgaW4gYmFja2VuZF9kaXNjb25uZWN0KCkuCgpUaGlzIGlzIFhTQS01Mjcg
LyBDVkUtMjAyNi0xMDAwODEuCgpGaXhlczogYjE3MDc1ZDVjMTk4ICgieGVuLW5ldGJhY2s6IGZp
eCByYWNlIGNvbmRpdGlvbiBvbiBYZW5CdXMgZGlzY29ubmVjdCIpClJlcG9ydGVkLWJ5OiBrZXJo
dW50IDxrZXJodW50QHByb3Rvbi5tZT4KU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVs
aWNoQHN1c2UuY29tPgpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
PgoKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMKKysrIGIvZHJpdmVy
cy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMKQEAgLTgxMiw4ICs4MTIsNiBAQCB2b2lkIHhl
bnZpZl9kaXNjb25uZWN0X2RhdGEoc3RydWN0IHhlbnZpCiAKIAkJeGVudmlmX2Rpc2Nvbm5lY3Rf
cXVldWUocXVldWUpOwogCX0KLQotCXhlbnZpZl9tY2FzdF9hZGRyX2xpc3RfZnJlZSh2aWYpOwog
fQogCiB2b2lkIHhlbnZpZl9kaXNjb25uZWN0X2N0cmwoc3RydWN0IHhlbnZpZiAqdmlmKQotLS0g
YS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYworKysgYi9kcml2ZXJzL25ldC94ZW4t
bmV0YmFjay94ZW5idXMuYwpAQCAtMjY3LDYgKzI2Nyw4IEBAIHN0YXRpYyB2b2lkIGJhY2tlbmRf
ZGlzY29ubmVjdChzdHJ1Y3QgYmEKIAkJdmlmLT5udW1fcXVldWVzID0gMDsKIAkJc3luY2hyb25p
emVfbmV0KCk7CiAKKwkJeGVudmlmX21jYXN0X2FkZHJfbGlzdF9mcmVlKHZpZik7CisKIAkJZm9y
IChxdWV1ZV9pbmRleCA9IDA7IHF1ZXVlX2luZGV4IDwgbnVtX3F1ZXVlczsgKytxdWV1ZV9pbmRl
eCkKIAkJCXhlbnZpZl9kZWluaXRfcXVldWUoJnZpZi0+cXVldWVzW3F1ZXVlX2luZGV4XSk7CiAK

--=separator--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:16:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:16:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1476740.1682737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfh-0003y9-TD; Fri, 06 Nov 2026 15:16:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1476740.1682737; Fri, 06 Nov 2026 15:16:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLfh-0003y2-PY; Fri, 06 Nov 2026 15:16:05 +0000
Received: by outflank-mailman (input) for mailman id 1476740;
 Fri, 06 Nov 2026 15:16:04 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLff-0003fk-S0; Fri, 06 Nov 2026 15:16:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLff-007Zic-1B; Fri, 06 Nov 2026 16:16:03 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef1d-8faa-0a2a0a5109dd-0a2a4508a628-44
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:02 +0100
Received: from [104.130.215.37] (helo=mail.xenproject.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 6aedef31-f659-0a2a45080019-6882d725d98c-3
 for <multiple-recipients>; Fri, 06 Nov 2026 16:16:02 +0100
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfb-00000001GcE-1tmf; Fri, 06 Nov 2026 15:15:59 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.98.2)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1xPLfb-0000000A5rj-1W0D; Fri, 06 Nov 2026 15:15:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.515 (Entity 5.515)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 526 v1 (CVE-2026-100080) - Linux
 xen-netback: guest can trigger use-after-free for
Message-Id: <E1xPLfb-0000000A5rj-1W0D@xenbits.xenproject.org>
Date: Fri, 06 Nov 2026 15:15:59 +0000
X-purgate-ID: tlsNG-c1860d/1793978162-D437587B-E71D9501/0/0
X-purgate-type: clean
X-purgate-size: 4476

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

           Xen Security Advisory CVE-2026-100080 / XSA-526

          Linux xen-netback: guest can trigger use-after-free for
                        network statistics reads

ISSUE DESCRIPTION
=================

The network statistic data in the driver is protected by RCU.
Unfortunately when tearing down the queues after an error during
connecting to the frontend (e.g. due to illegal Xenstore data filled
in by the guest), the statistic data is being freed without
synchronizing the RCU state.  In case the data is being read via sysfs
in this phase, access to already freed memory or memory being in new
use is possible.

IMPACT
======

The most likely outcome is a driver crash, possibly escalated to a host
crash.  This then is a Denial of Service (DoS) affecting the entire host.

Information leaks cannot be ruled out.

VULNERABLE SYSTEMS
==================

Linux versions 4.11 and newer are vulnerable.

MITIGATION
==========

Using a userspace PV network backend (e.g. the qemu based "qnic" backend)
will mitigate the problem.

Using a dedicated network driver domain per guest will mitigate the
problem.

CREDITS
=======

This issue was discovered by Yehyeong Lee of Hyundai Mobis.

RESOLUTION
==========

Applying the attached patch resolves this issue.

xsa526-linux.patch           Linux

$ sha256sum xsa526*
88dd41b89b43fa1b14e68c1a40aa69a22309e0c57a1b5543168949a273627ca8  xsa526-linux.patch
$

NOTE REGARDING LACK OF EMBARGO
==============================

This issue was disclosed in public.
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmrt7ssMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZq84H/02MP77ou0FS+9nAF8CWbGl79KfiUWO2xjXPEdKB
Mgyzk0Gtq+Q0/oTaxPC59f9Pxc4yiCnGuIjpVM2qPOfaHZD0uEnzzGEROxVNCABq
7wCxZ/9Uu3MXO+1rcMgVqUNoHEqYLxgSp3OZ7O48DFQtkulP6fp4EgR0xTUIgPwn
oKlWoSKORAXOkULt5Qn5xI0+YN0OgDMdHKj/BPkRIGeeqOHPRcUmeZU9VRnOiATh
v1lR6erAWEx/dwr5Yq6ZReA6GFgDNRRk7ersnc5mwxxUyDtJtNXPHUCmE8AZ/q4C
H2I/1SLzm6oa+v+0fngSasn9+lMZC6fzy0SxRJF3clRui+A=
=uEqL
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa526-linux.patch"
Content-Disposition: attachment; filename="xsa526-linux.patch"
Content-Transfer-Encoding: base64

RnJvbTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpEYXRlOiBGcmksIDYgTm92IDIw
MjYgMTM6MDc6NTIgKzAxMDAKU3ViamVjdDogW1BBVENIXSB4ZW4tbmV0YmFjazogRml4IFVBRiB3
aGVuIHJlYWRpbmcgc3RhdGlzdGljcyBkYXRhCgpUaGUgbmV0d29yayBzdGF0aXN0aWMgZGF0YSBp
biB0aGUgZHJpdmVyIGlzIHByb3RlY3RlZCBieSBSQ1UuClVuZm9ydHVuYXRlbHkgd2hlbiB0ZWFy
aW5nIGRvd24gdGhlIHF1ZXVlcyBhZnRlciBhbiBlcnJvciBkdXJpbmcKY29ubmVjdGluZyB0byB0
aGUgZnJvbnRlbmQgKGUuZy4gZHVlIHRvIGlsbGVnYWwgWGVuc3RvcmUgZGF0YSBmaWxsZWQKaW4g
YnkgdGhlIGd1ZXN0KSwgdGhlIHN0YXRpc3RpYyBkYXRhIGlzIGJlaW5nIGZyZWVkIHdpdGhvdXQK
c3luY2hyb25pemluZyB0aGUgUkNVIHN0YXRlLiAgSW4gY2FzZSB0aGUgZGF0YSBpcyBiZWluZyBy
ZWFkIHZpYSBzeXNmcwppbiB0aGlzIHBoYXNlLCBhY2Nlc3MgdG8gYWxyZWFkeSBmcmVlZCBtZW1v
cnkgb3IgbWVtb3J5IGJlaW5nIGluIG5ldwp1c2UgaXMgcG9zc2libGUuCgpGaXggdGhhdCBieSBj
YWxsaW5nIHN5bmNocm9uaXplX25ldCgpIGJlZm9yZSBmcmVlaW5nIHRoZSBxdWV1ZSBkYXRhLgoK
VGhpcyBpcyBYU0EtNTI2IC8gQ1ZFLTIwMjYtMTAwMDgwCgpGaXhlczogYjE3MDc1ZDVjMTk4ICgi
eGVuLW5ldGJhY2s6IGZpeCByYWNlIGNvbmRpdGlvbiBvbiBYZW5CdXMgZGlzY29ubmVjdCIpClJl
cG9ydGVkLWJ5OiBZZWh5ZW9uZyBMZWUgPHlobGVlQGlzc2xhYi5rb3JlYS5hYy5rcj4KU2lnbmVk
LW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIGRyaXZlcnMvbmV0
L3hlbi1uZXRiYWNrL3hlbmJ1cy5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o
KykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYyBiL2RyaXZl
cnMvbmV0L3hlbi1uZXRiYWNrL3hlbmJ1cy5jCmluZGV4IGUwMjBmNDRhYzJjNy4uYzEwMzRkOGY2
YmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYworKysgYi9k
cml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYwpAQCAtODM3LDYgKzgzNyw3IEBAIHN0YXRp
YyB2b2lkIGNvbm5lY3Qoc3RydWN0IGJhY2tlbmRfaW5mbyAqYmUpCiBlcnI6CiAJaWYgKGJlLT52
aWYtPm51bV9xdWV1ZXMgPiAwKQogCQl4ZW52aWZfZGlzY29ubmVjdF9kYXRhKGJlLT52aWYpOyAv
KiBDbGVhbiB1cCBleGlzdGluZyBxdWV1ZXMgKi8KKwlzeW5jaHJvbml6ZV9uZXQoKTsKIAlmb3Ig
KHF1ZXVlX2luZGV4ID0gMDsgcXVldWVfaW5kZXggPCBiZS0+dmlmLT5udW1fcXVldWVzOyArK3F1
ZXVlX2luZGV4KQogCQl4ZW52aWZfZGVpbml0X3F1ZXVlKCZiZS0+dmlmLT5xdWV1ZXNbcXVldWVf
aW5kZXhdKTsKIAl2ZnJlZShiZS0+dmlmLT5xdWV1ZXMpOwotLSAKMi41Ni4wCgo=

--=separator--


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 15:37:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 15:37:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477038.1682841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLzn-0005gW-Pq; Fri, 06 Nov 2026 15:36:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477038.1682841; Fri, 06 Nov 2026 15:36:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPLzn-0005gP-NA; Fri, 06 Nov 2026 15:36:51 +0000
Received: by outflank-mailman (input) for mailman id 1477038;
 Fri, 06 Nov 2026 15:36:50 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bigeasy@linutronix.de>) id 1xPLzm-0005gJ-CH
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 15:36:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPLzl-0041Xo-NI
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:36:49 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bigeasy@linutronix.de>)
 id 6aedf3ff-e002-0a2a0a5209dd-0a2a45058210-32
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:36:49 +0100
Received: from [193.142.43.55] (helo=galois.linutronix.de)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <bigeasy@linutronix.de>)
 id 6aedf411-4cb1-0a2a45050019-c18e2b37c4ca-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 16:36:49 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=2020 header.d=linutronix.de header.i="@linutronix.de" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References"; dkim=permerror header.s=2020e header.d=linutronix.de header.i="@linutronix.de"
Date: Fri, 6 Nov 2026 16:36:47 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1793979409;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ZiCURZDhgyGIlSD3PbaH/tWIzwBivGR/3EJJGZ3gorY=;
	b=PA8n1+PAjNax6kBm3+SA6tcGSljdJx/BB5LXhg2zW45M0g2hfJTix2F2kE+U7PqRMHAPK9
	v1dfvGAUpg3ug4xMm927ngIpFoCzFiLq8AQs0iz6ldVF5F0PgcQ9KnN0qv7Xcxuc6EVw+E
	ED3sQPYU8Ng+R2w4e51jXY13YIdinmwD+71qG3yhj3c9lmZWP/mvvSpz24BZNKGsZ7Qw1T
	AGZEiWU4DXmjyOjUQn0/qaj72S+9Xp/h6pBXdzr4ao0x5n5IyE2lI5WFoTb1iL2ZdwhqCz
	dqJr2xP5bHDHJ4tBPz3w207GIePo7gvSUZ+8OQ/yeSl4TsZUmxZSntcJr+sbEA==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1793979409;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=ZiCURZDhgyGIlSD3PbaH/tWIzwBivGR/3EJJGZ3gorY=;
	b=N55r/l00i/4ynURyXk6ezziVRoOvkU/z8WHNhLzIMgOaeE72M1wftJA3X0eFJS1sS6cqwH
	gm4WmM151TUp1MBQ==
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Julian Vetter <julian.vetter@vates.tech>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	Juergen Gross <jgross@suse.com>, Thomas Gleixner <tglx@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Jiayuan Chen <jiayuan.chen@linux.dev>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	"Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
	Adrian Hunter <adrian.hunter@intel.com>
Subject: Re: [PATCH 0/2] Re-raise irq_work lost during Xen suspend
Message-ID: <20261106153647.F7ld02De@linutronix.de>
References: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
X-purgate-ID: tlsNG-c201ff/1793979409-716AD2A1-0CE618C9/0/0
X-purgate-type: clean
X-purgate-size: 1796

On 2026-11-06 15:57:40 [+0100], Julian Vetter wrote:
> We hit this issue with an Ubuntu 26.04 cloudimage guests (7.0 based
> kernel with the 8250 as an nbcon console) on XCP-ng 8.3 / Xen 4.17. With
> a kernel commandline adding two consoles, i.e., 'console=ttyS1
> console=ttyS0'. During a live migration on that setup the printk()s from
> gnttab_resume() and xen_irq_resume() queue nbcon_irq_work while the APIC
> is disabled. Thus the list transitions from empty to non-empty, but
> doesn't receive the IPI to empty the list again. Afterwards the list
> stays non-empty, so the IPI never fires and all irq_work piles up.
> 
> The Commit 560f4deda327 ("printk/nbcon: Change nbcon_irq_work to
> IRQ_WORK_LAZY") removed this particular issue because declaring the IRQ
> work to be lazy, causes the timer interrupt to trigger the irq work
> instead. But any other non-lazy irq_work queued in that window is still
> lost the same way and will cause the list to fill up without being
> handled.

Adrian has this:
   https://lore.kernel.org/all/20261102074039.26983-2-adrian.hunter@intel.com/

I sort of asked for flush on suspend but Adrian pointed out the NMI
problem.

Looking at #1, you could probably limit it to a nop on
!arch_irq_work_has_interrupt(). The tick should not be disabled if
irq_work_needs_cpu() returns true (you don't add anything).

And lazy items get handled via irq_work_tick() anyway. This make me
think if it gets any easier if we handle both in irq_work_tick(). On x86
raised_list is evaluated anyway so by dropping
arch_irq_work_has_interrupt() we would avoid the APIC check and handle
list in this rare case. If the IRQ-work is working then the list remains
empty.

> Signed-off-by: Julian Vetter <julian.vetter@vates.tech>

Sebastian


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 16:04:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 16:04:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477077.1682850 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPMQM-0002hx-Q3; Fri, 06 Nov 2026 16:04:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477077.1682850; Fri, 06 Nov 2026 16:04:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPMQM-0002ho-LK; Fri, 06 Nov 2026 16:04:18 +0000
Received: by outflank-mailman (input) for mailman id 1477077;
 Fri, 06 Nov 2026 16:04:17 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPMQK-0002hi-U7
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:04:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPMQK-000X39-An
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 17:04:16 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aedfa62-e002-0a2a0a5209dd-0a2a4501aeb0-48
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 17:04:16 +0100
Received: from [52.101.61.18]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aedfa7e-5984-0a2a45010019-34653d12c3fd-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 17:04:15 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB6648.namprd03.prod.outlook.com (2603:10b6:a03:391::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 16:03:34 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Fri, 6 Nov 2026
 16:03:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=GkiMkdQgq6NvYytSjwoMWKrdzxT/7OMyoXUwIjVKvOuK5ERTy9aStSfrnNCj7z1BaXmqK+/Ry45PXeHsmSHrDrCzXgUDRjKuUj8X3QTFTT0gq3qVbWEU80vid4fMMaNWn/fRlMYgFZzv6ZlzOn33XWQ03kJkD7wKrM/V74BEMEKBE8bBnOpSk6WzOeVX1wcpRoPCwEo5lxO3Rl7Mg2MLA12EV5udT/IMP9+ADWsuJ0T/dDJedibd/sH3IVUgdiAIJTHWuMoEnxzuK//X04DFBsn3b8Ce/ATUoF9+E0CNPB7lk24cK/8vzTpa5csePfrs3bfjyhmLBgB07cgjWZmtUg==
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=yomdQ7QwXopVssE+DCCfhkqY7S3zAHHZkc7NleIfsho=;
 b=L1LRVI6CBaCqBRJsIN/2Hp5ax+qx9JY1cCTIo5Hse860VmXp18Eny5/ERq5brYckTja8Jg/ufak4BPs45zR5vjiP+9rKVluYy9IZj+qu79uaucHdyYYfwGXo3sAcHTBC9LPrZ8/7+tmDKQznJ67c/hh7XiPQYsmV1dish9KGQtqVY1WlAEngi4rD4inEa7w59WN2tsXMEhwW5+MuldFEXa4Hy2mF3ZCdZ3G7kdA+THRM8luw880wRjxubq2FYGVQXcoz0RmZHD/ulfNrHXNSDACw2C5JAME1JyU9zFvK3sI6Bf1OjFW5BLjPH3OlAl2FpW4U3pbjqWNhHlFC9RamLQ==
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=yomdQ7QwXopVssE+DCCfhkqY7S3zAHHZkc7NleIfsho=;
 b=Jcc6XCceQZX861sPqEHVdNrTzniZWo534wNh9KH5+qMry1zq3ANGN0KNuhRAW1iRTrxwjWDucQDwh8xbkXbk+6vhUy3UT+pEZOiEGKWS3vNGWhuPFdA3dBBu9ZvzyecMS6G8ptUpwjo1+66qgLjKwAfhmd1n6AhJ4JXl5fEydtM=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <b8d76591-5862-493c-8e54-00663f0f4366@citrix.com>
Date: Fri, 6 Nov 2026 16:03:30 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 01/28] x86/hvm: move SVM feature printout to a separate
 function
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-2-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-2-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0665.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:316::16) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SJ0PR03MB6648:EE_
X-MS-Office365-Filtering-Correlation-Id: c6c581c5-0744-412e-0816-08df3c1f82a3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|18002099003|22082099003|10067099003|4143699003|11063799006|56012099006;
X-Microsoft-Antispam-Message-Info:
	/AFOcEQLlvTawi3A1EV/qzLXCAXjFlCj6Ez0Oj0e3cnjLXedMxod/866xyXtfJJ/+z6aheCq9GG6QWnpDvGFwd+hvN46MVv+YQCP2+M5uy68vqpRC3z3QDy9xA5r6TmZUaAhCmPVCxLDpdcDnRNDK4Zdhm6ctPCIUGUFDPoXrgRFgIcIY8rblkfemcJ4vq3Wvey/ySE0681UO/bgFOgMRFir0qBDN8dzMAavG+j/EGOTJRmydhRFHfyCJazDCQ/wBJYQ3F3ovRFEVTffYjQ2eyyn6YXgEr/MMevH9xdAUhFGxZ39TAD2Ym5cyJ+/PTkg8ibbfcOrWO0U6l8/cOt+JDWk1EGTYf146qoaDPQ+gwK3/pE4bjYKC7bm+tpCSWTJrR+VQAdNxI0Ui3eI5KU1GAAmfOMggpiS8+/RGG9Ulv6BPa6KgXtoiZHjijgEa0Co/E+cuDWBCQmEHAdeQw/T8eiM2yjvOIJ2Bv28MHllZCWm/z9mfHEK/0XDME8wwvMlbGiP+d8dUHsDGHOqWQXiB+MYQclfz5UAikplLn5PtYVvcwWZo73CiMPDvAryst2vKlAvTxffmJOFRkV5PicJ1HxXjpwyImx/Gfyi9FlnT5IMN0bpRD+YwC4xOdK9dmTp6xZJ4orzShU7I0KfQvIH+ff6GjS3g2ncYuWvaK2vLIc=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(18002099003)(22082099003)(10067099003)(4143699003)(11063799006)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WEZidWxqRkQvTE4ydzNuRExzWnBOVjFlNFBGYWtnZnpMTWhsTEZwRDYwenNS?=
 =?utf-8?B?cEFpVnlxRTRvUURvMWtIblhZN2hjOHRCQS9TWWRaK1VhNTNaUGZ3OG5CVjRR?=
 =?utf-8?B?clJxdnBqWk1NQklHSWo5dlFJaHdxSUZhSWgwOExQMmZWb3JJREZFRW5ha1VC?=
 =?utf-8?B?dUhROWVCUjRYT2I4ejJyQlZMSkJCMld5dUtxR0R3aWNsbXB1S0QvblVnbVVF?=
 =?utf-8?B?S3IxMUxBbTF2TUlzK2lsbXptdmNzMVdqQTBXam1hcmlGOXFWQmJlM2VqM29V?=
 =?utf-8?B?bzM4VUtkaHQ0aVpnUDBTL0hRd2cvbDdOQllwY1VCN1hIUmoxTTRZVnFTclhG?=
 =?utf-8?B?ZTVMSy93aytCcnRtYWtaZFVySVVWM0ltV1dabjNkcFdVZDdtQ1hPeGVSSDlO?=
 =?utf-8?B?dzFVYzY1bDZ0MnUxTVBZTW5kS3pYZ2JHbHVrcm0raVhwK25sWFVMbTVoY2lL?=
 =?utf-8?B?VEVxYXVqd1V6ME9DVFFQbmJvRW8rWFlpRUZieExETFZ0THlQZkpxVnZqL2Qw?=
 =?utf-8?B?NnA2aDRQdHdybG1QWXBwVGtIUXdld3pwU2l5SHIwcWx4VXhLWTlmWkM0WVVO?=
 =?utf-8?B?aXNJSlNuMmdScWg2UnpvbjZTTU8yTWRzMkViY0FnV0FmVi9qQ2hwUXlSNmdo?=
 =?utf-8?B?NEdmUXVtZjNkZS9yaXZ3NmNxSElodDhkazFqUXNEdk54VGlaN0lkSFJ3WDlK?=
 =?utf-8?B?bXpzSUJubG45QnJKcnJnUWZlR2dGOTBrM0lUZ0Z4Q0hEK09uYnBPTk5yN0w0?=
 =?utf-8?B?YmgzWHN5a1BBY0F0d1dkQTlFYlc2eStXR25Da0ZDa2VEdWlkNDlFd1dVL2w2?=
 =?utf-8?B?VWdvQXFBY1VTazNYZXlKd1d0bStjbDgrOVk2eEwxYlBJMVVSUXNUSkROV0dP?=
 =?utf-8?B?WkVHVUE4c2Z0bnFHRXUzTlBqSTUwUUROMnNoU2F1Z0VWeWowRTVjQ1VXVFBa?=
 =?utf-8?B?b0xMOGR4U3ZnZkZIMW9iQVB4VnhOZittSVFDaytHaDlmZEYzWHdwQmhIY3Vh?=
 =?utf-8?B?ZUc0YWNyQkUzclBIYkp5VUhCWCs0dTQ1bmp6U1p3Mkk2eGM1M2VwZmRhdXoz?=
 =?utf-8?B?N2xlYzdlcmFpZFM0TDVQUnVjME0rVEUxZmRGd095TCtVQWU1cXIwRi85UGxj?=
 =?utf-8?B?MisxTXVLWnB5anM2WC9mWTZSRUdpY1Vlam5GTGQ5OVBlMWZwT2RITFRGYW85?=
 =?utf-8?B?RndKRUhaaVFaRGxYdFFUOWhwaXRzRXlBd2lCOUUwb1k2eTEvRXY2aklIejda?=
 =?utf-8?B?R1ZrS0k5ZkxiQnY2Z1NVQWxJUmlJa1VCVnNhSGtadU9tL0t4WVVySkdyRmNH?=
 =?utf-8?B?K0lSWWdTcDJkK0cvZkd1YWNHdFZWbjUwWGQrSkhkSHprR3hRY1dKNlNScEQr?=
 =?utf-8?B?dGVuV01YZWtFQU5rdzVueVRoWHk1bWNydWI1alNnbDlEZEZPSk9zcFN0d2dW?=
 =?utf-8?B?bHRQWmJUQS9vWmhyeXJ6TTZWWUZlREh3ZmMyOUtrRUVDU3JhcVRNTys0clpM?=
 =?utf-8?B?Q0VQdUl5bUJHdTFlUHdtS1NZM0ZITVRKY0E3Vm1GbEx4c0RZZUtzVitVbVFK?=
 =?utf-8?B?YkxuWk5IMWQ4TTVYM1pTWWJjd1ptN3VVbWo4a2Y3QmZWd3V0MmUvMVB5UjdM?=
 =?utf-8?B?eDdJT2paZnFmU2NGd1p5UHB5YUhqMS9WZWlJaDhXSDJpU0JvanBTcjZ1MVBW?=
 =?utf-8?B?ckFkVnB1SHNrYytZSExRSlRvTUZQVGZFM0Z3aUVwUlNNZkFDTDVMbFgwcEcx?=
 =?utf-8?B?aVZBK2FSWUFjNU1KVjNnY0E2QWVYc1kwYXV1TmFuNmJla1c3b0ZtbG1ub2hW?=
 =?utf-8?B?WFJwWXJneDViN08wN3lSSHJudnh3V1h3RWRDZ1JYSm9tUjdjZUV0TmhrcDJS?=
 =?utf-8?B?eXV5ZFhpblVqS05aWC9YclVFcUcySjlkalNneXBmT2NCSHBDcjg0azFYdlJz?=
 =?utf-8?B?TFlpSWRiT0lkSGVuME5zelRqZlNUc2N6WmsxREhqaVZvRGNaRDZJTUdQSy8x?=
 =?utf-8?B?Sy9FVUJmb1dSY051ZlY1enQ0V3VQZEFZMzBpNzFQR1hVTWVJclFhSHRZdU51?=
 =?utf-8?B?dmJWc3dPWVFhaHZuMnR2SjFWTU95SEdGdjZ2TUtmVzljVVIrUlI5YVNUeDVz?=
 =?utf-8?B?K0I2KzA5dms4Ynp1QlJPdWExNEZUMjJ1WG1YUEV3YmJ5eXBsTzVDSThoVlBm?=
 =?utf-8?B?eXZSb0M0YnJUZHBCem03RUpUYjBNWmw5WnhFRndwb0VVRC9XZHJBWTFRcUtV?=
 =?utf-8?B?ZFBQSGRMQ21Rc1A2b2VYRHZGYndrQVR1TnRWOGpmTkEvQys1MnZneStPQWZK?=
 =?utf-8?B?Qmp5Lzl3K2dQSDl6QUM0UFMyQUxhOUpGeWlDRGFhMUNwcFBkek90Zz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c6c581c5-0744-412e-0816-08df3c1f82a3
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 16:03:34.4133
 (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: 5bYPEj4rm79oCs6tYQxSpNKVcPcdMHiRQ9Kx+SmgB+hDlonlwMpVR3ITW5AzOKM7O8wqxeh+Ikma566aUkoYTepudBY9ru6QaSRkns7WQQA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB6648
X-purgate-ID: tlsNG-d62444/1793981056-BE664757-E22310D9/0/0
X-purgate-type: clean
X-purgate-size: 323

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> Isolate long SVM feature list printout in a separate function to
> improve readability.
>
> Not a functional change.
>
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 16:19:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 16:19:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477102.1682859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPMfK-0005LO-0U; Fri, 06 Nov 2026 16:19:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477102.1682859; Fri, 06 Nov 2026 16:19:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPMfJ-0005LH-Sr; Fri, 06 Nov 2026 16:19:45 +0000
Received: by outflank-mailman (input) for mailman id 1477102;
 Fri, 06 Nov 2026 16:19:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <dpsmith@apertussolutions.com>) id 1xPMfI-0005LA-Qy
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 16:19:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPMfG-002OFU-Jg
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 17:19:42 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 6aedfe18-2eae-0a2a0a5409dd-0a2a45079626-16
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 17:19:41 +0100
Received: from [165.173.180.50] (helo=sender6-of-o50.zoho.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <dpsmith@apertussolutions.com>)
 id 6aedfe1b-b4ea-0a2a45070019-a5adb432bfef-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 17:19:41 +0100
Received: by smtp.zohomail.com with SMTPS id 1793981971052886.4401578272528;
 Fri, 6 Nov 2026 08:19:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=zoho header.d=apertussolutions.com header.i="@apertussolutions.com" header.h="Content-Type:Content-Transfer-Encoding:Cc:Date:From:MIME-Version:Message-ID:Subject:To"
ARC-Seal: i=1; a=rsa-sha256; t=1793981974; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Mzl7/jp7e9l5MMDmf9jz162/uh8Dthdzg9wZJZKD9VD58ACWZnsfEDBQ6SwuODjonCy5zoUAGy4YJRfwvh764GgqaeLa12JWnHQYjhcVfFKiIZocqMRD37AGtAJ+yM2GO1JPjcYNXa69IMXle8H7eO8Tq7jUd5bqf943h30ZhNE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1793981974; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=Tz+dumTzOkyurKIDuKTXH7Bh5vpMqUu73eS3Xj+UXPk=; 
	b=Z5D3mJk/V36Vzf8oHFZI5Z88X2Ud1pHZfTL2VGUwGSWqYZqgVdDpJyaAfvDvqZxDs0FBpg2jhOrhXulyvPY3duB5QX15nJ+ABgjZBPbSxco/TG3XTdgibecDQKwq7OMhxUJAXbTBZ8uw1yA14CSr//7xbkajS/dngxUhd+KZ/iY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: a=rsa-sha256; b=eZ13jAgqJVf0taaP6LbKoK8AC41rt66n/2wb3/NTRn1FQxVC17p35KW1CyEzOi8t+L6ngEmqSWxJ1RFHo/6T8DE/TjAYI9diXAGHncJ2LKmbvzpCzV/GKwr4q0oTnWKvwihcMSI+nWWD3kRYCdfcOph7e7U9bfbhzhF9BLqCIRk=; c=relaxed/relaxed; s=zoho; d=apertussolutions.com; v=1; bh=Tz+dumTzOkyurKIDuKTXH7Bh5vpMqUu73eS3Xj+UXPk=; h=Content-Description:Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Resent-Sender:Resent-Cc:Resent-Date:Resent-To:Reply-To:Resent-Message-ID:Resent-From:Sender:Subject:To:Date:From:Message-Id:Reply-To:Subject:To:Cc;
Message-ID: <51ed28b0-1c41-4e6b-95a9-786e59d4cd9f@apertussolutions.com>
Date: Fri, 6 Nov 2026 11:19:29 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Teddy Astie <teddy.astie@vates.tech>,
 Andrew Cooper <Andrew.Cooper3@citrix.com>
Subject: RFC: Promote FLASK XSM Module to Supported in SUPPORT.md
Autocrypt: addr=dpsmith@apertussolutions.com; keydata=
 xsJuBFYrueARCACPWL3r2bCSI6TrkIE/aRzj4ksFYPzLkJbWLZGBRlv7HQLvs6i/K4y/b4fs
 JDq5eL4e9BdfdnZm/b+K+Gweyc0Px2poDWwKVTFFRgxKWq9R7McwNnvuZ4nyXJBVn7PTEn/Z
 G7D08iZg94ZsnUdeXfgYdJrqmdiWA6iX9u84ARHUtb0K4r5WpLUMcQ8PVmnv1vVrs/3Wy/Rb
 foxebZNWxgUiSx+d02e3Ad0aEIur1SYXXv71mqKwyi/40CBSHq2jk9eF6zmEhaoFi5+MMMgX
 X0i+fcBkvmT0N88W4yCtHhHQds+RDbTPLGm8NBVJb7R5zbJmuQX7ADBVuNYIU8hx3dF3AQCm
 601w0oZJ0jGOV1vXQgHqZYJGHg5wuImhzhZJCRESIwf+PJxik7TJOgBicko1hUVOxJBZxoe0
 x+/SO6tn+s8wKlR1Yxy8gYN9ZRqV2I83JsWZbBXMG1kLzV0SAfk/wq0PAppA1VzrQ3JqXg7T
 MZ3tFgxvxkYqUP11tO2vrgys+InkZAfjBVMjqXWHokyQPpihUaW0a8mr40w9Qui6DoJj7+Gg
 DtDWDZ7Zcn2hoyrypuht88rUuh1JuGYD434Q6qwQjUDlY+4lgrUxKdMD8R7JJWt38MNlTWvy
 rMVscvZUNc7gxcmnFUn41NPSKqzp4DDRbmf37Iz/fL7i01y7IGFTXaYaF3nEACyIUTr/xxi+
 MD1FVtEtJncZNkRn7WBcVFGKMAf+NEeaeQdGYQ6mGgk++i/vJZxkrC/a9ZXme7BhWRP485U5
 sXpFoGjdpMn4VlC7TFk2qsnJi3yF0pXCKVRy1ukEls8o+4PF2JiKrtkCrWCimB6jxGPIG3lk
 3SuKVS/din3RHz+7Sr1lXWFcGYDENmPd/jTwr1A1FiHrSj+u21hnJEHi8eTa9029F1KRfocp
 ig+k0zUEKmFPDabpanI323O5Tahsy7hwf2WOQwTDLvQ+eqQu40wbb6NocmCNFjtRhNZWGKJS
 b5GrGDGu/No5U6w73adighEuNcCSNBsLyUe48CE0uTO7eAL6Vd+2k28ezi6XY4Y0mgASJslb
 NwW54LzSSM0uRGFuaWVsIFAuIFNtaXRoIDxkcHNtaXRoQGFwZXJ0dXNzb2x1dGlvbnMuY29t
 PsJ6BBMRCAAiBQJWK7ngAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBTc6WbYpR8
 KrQ9AP94+xjtFfJ8gj5c7PVx06Zv9rcmFUqQspZ5wSEkvxOuQQEAg6qEsPYegI7iByLVzNEg
 7B7fUG7pqWIfMqFwFghYhQzOwU0EViu54BAIAL6MXXNlrJ5tRUf+KMBtVz1LJQZRt/uxWrCb
 T06nZjnbp2UcceuYNbISOVHGXTzu38r55YzpkEA8eURQf+5hjtvlrOiHxvpD+Z6WcpV6rrMB
 kcAKWiZTQihW2HoGgVB3gwG9dCh+n0X5OzliAMiGK2a5iqnIZi3o0SeW6aME94bSkTkuj6/7
 OmH9KAzK8UnlhfkoMg3tXW8L6/5CGn2VyrjbB/rcrbIR4mCQ+yCUlocuOjFCJhBd10AG1IcX
 OXUa/ux+/OAV9S5mkr5Fh3kQxYCTcTRt8RY7+of9RGBk10txi94dXiU2SjPbassvagvu/hEi
 twNHms8rpkSJIeeq0/cAAwUH/jV3tXpaYubwcL2tkk5ggL9Do+/Yo2WPzXmbp8vDiJPCvSJW
 rz2NrYkd/RoX+42DGqjfu8Y04F9XehN1zZAFmCDUqBMa4tEJ7kOT1FKJTqzNVcgeKNBGcT7q
 27+wsqbAerM4A0X/F/ctjYcKwNtXck1Bmd/T8kiw2IgyeOC+cjyTOSwKJr2gCwZXGi5g+2V8
 NhJ8n72ISPnOh5KCMoAJXmCF+SYaJ6hIIFARmnuessCIGw4ylCRIU/TiXK94soilx5aCqb1z
 ke943EIUts9CmFAHt8cNPYOPRd20pPu4VFNBuT4fv9Ys0iv0XGCEP+sos7/pgJ3gV3pCOric
 p15jV4PCYQQYEQgACQUCViu54AIbDAAKCRBTc6WbYpR8Khu7AP9NJrBUn94C/3PeNbtQlEGZ
 NV46Mx5HF0P27lH3sFpNrwD/dVdZ5PCnHQYBZ287ZxVfVr4Zuxjo5yJbRjT93Hl0vMY=
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External
X-purgate-ID: tlsNG-ef75cf/1793981981-A7CD7AE4-C9DB8ECB/0/0
X-purgate-type: clean
X-purgate-size: 4761

Greetings,

This RFC is intended to start a dialogue following the discussion on the 
November Xen Community Call. It proposes changing the status of the 
FLASK XSM Module (the implementation in `xen/xsm/flask`) from 
Experimental to Supported in SUPPORT.md, while leaving the FLASK default 
policy Experimental.

### Background: XSA-77 and disaggregation guidance

XSA-77 ("Disaggregated domain management security status") documented 
that the majority of management hypercalls (most `XEN_DOMCTL_*` subops, 
all of `__HYPERVISOR_sysctl`, certain memory operations, etc.) were 
originally written only for fully-privileged dom0 and had not been 
reviewed for exposure to semi-privileged, potentially hostile callers.

When XSM/FLASK is used to delegate those interfaces, a compromised 
management domain may be able to cause host-wide denial of service or 
privilege escalation. The security team’s policy (codified in “Security 
Status of dom0 disaggregation” section of `docs/misc/xsm-flask.txt`) is 
that, until the interfaces are reviewed, bugs that merely reduce the 
security of a radically disaggregated system to that of a 
non-disaggregated one will be handled as ordinary public bugs rather 
than under the normal security embargo process. Only a small set of 
subops are treated as safe for disaggregation; the remainder listed in 
that section remain covered by the XSA-77 stance.

SUPPORT.md currently reflects this distinction and the XSA-77 caveat for 
FLASK.

### Current status and the case for change

Today, SUPPORT.md divides XSM support between "XSM Framework", "FLASK 
XSM Module", "FLASK default policy", and "SILO XSM Module", where "XSM 
Framework" and "SILO XSM Module" are marked as Supported, and "FLASK XSM 
Module" and "FLASK default policy" are marked Experimental.

The core concern behind XSA-77 is that it has not been demonstrated 
which fine-grained operation delegations can be done safely. The 
documentation provides guidance on “safe”/covered interfaces precisely 
because of that gap. At its heart, this concern is a policy- and 
configuration-level issue.

Marking the code, "FLASK XSM Module", Experimental primarily because a 
user could write an insecure custom policy feels inconsistent. Many 
other knobs in Xen (and in the Linux kernel) allow an administrator to 
weaken isolation or security guarantees; we do not mark the underlying 
code Experimental solely for that reason. An objection to promoting the 
FLASK module should be rooted in concrete problems with the 
implementation in xen/xsm/flask (in the form of patches or defect 
reports), not in the possibility of misconfiguration or vague aspersions 
about code quality.

Real-world use supports treating the module as mature. OpenXT 
derivatives have deployed FLASK-based configurations on the order of 
multiple hundreds of devices for more than 15 years and have undergone 
multiple private security evaluations. In full disclosure, those 
deployments use variations of the OpenXT FLASK policy, not the upstream 
default.

### Proposed SUPPORT.md text

I would like to propose moving "FLASK XSM Module" to Supported status 
with a clear statement of what is supported, while leaving "FLASK 
default policy" as Experimental with a minor clarification.

```
### FLASK XSM Module

     Status: Supported

Compile time disabled by default.

Using FLASK to delegate various domain control hypercalls
to particular other domains, rather than only permitting use by dom0,
remains specifically excluded from security support for many hypercalls.
Please see XSA-77 and the guidance in docs/misc/xsm-flask.txt
for more details. The Supported status of this module reflects the
maturity of the implementation in xen/xsm/flask; any security guarantees
for a particular policy configuration are the responsibility of the
policy author.

### FLASK default policy

     Status: Experimental

The default policy includes FLASK labels and roles for a "typical" 
Xen-based system
with dom0, driver domains, stub domains, domUs, and so on.
No specific validation claims are made for this policy.
```

### Summary

- Promote the FLASK XSM Module (`xen/xsm/flask`) to Supported.
- Leave the FLASK default policy Experimental, with a minor 
clarification on default policy validation claims.
- Retain the existing note that delegating the XSA-77-covered interfaces 
remains outside security support, consistent with the guidance already 
in `xsm-flask.txt`.

I would value feedback, especially from anyone who has concrete concerns 
about the quality or correctness of the FLASK implementation itself.

-- 
V/r,
Daniel P. Smith
Apertus Solutions, LLC



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 17:12:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 17:12:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477172.1682867 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPNU1-0006mA-P6; Fri, 06 Nov 2026 17:12:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477172.1682867; Fri, 06 Nov 2026 17:12:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPNU1-0006m3-MS; Fri, 06 Nov 2026 17:12:09 +0000
Received: by outflank-mailman (input) for mailman id 1477172;
 Fri, 06 Nov 2026 17:12:08 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPNU0-0006lx-A1
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 17:12:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPNTz-000g73-NB
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 18:12:07 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee0a48-8faa-0a2a0a5109dd-0a2a450195dc-14
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 18:12:07 +0100
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee0a67-5984-0a2a45010019-d155802ab0c8-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 18:12:07 +0100
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4a35ac4475dso7981105e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 09:12:07 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b5725fb0d1sm149835425e9.8.2026.11.06.09.12.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 09:12:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793985127; x=1794589927; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=EHAOy5FpfpaET7Y35Hu3UvJesMi1ZTQmg8RFyYCANRI=;
        b=o6ijaJ6goScUmp/vox8AcscEY9V+hVhfWSwDpScbyfuJUpdqvRkcYF84uPvIeJU5yM
         3t3AVvR/bWS3hNYakO9m6yupihQBIFIeQ160B/LdlrY5J2kbhKprju++smQF0iUF/QEN
         FWK2cH6OqJp4u9Bo57TPz5eGlq6QRpXpp4p5Y=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793985127; x=1794589927;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=EHAOy5FpfpaET7Y35Hu3UvJesMi1ZTQmg8RFyYCANRI=;
        b=Syjn6nwZKfTkpComf2KTPxY4umgckdg0US72FRQgCJpD2iftb6g4YIRJ+4LdLVY4z3
         GGoL52ocwkq/moC2hFfquvveHcwUnQSt773t5wLPjaeadQEk42nBjDvVrxdsLJwTgcny
         mz8SFx7pzfcbZ2vZEWIgRdbtTTEXGsnIlcXfir3plL1skDs0cdl/9AFcwE4K5NwwPh6L
         fQ3eqTEBHQfF4gIsZ0B0NPfdkBx6Ej5jyaQuGOSXqXq0qYU6bOg0uX3E2v7/B8kBZRg/
         Dae28vOZQS+kzxvT/OTPDJWE2baK1L0Uq9cSIcaY2rcmmKZveivPZ0kFmqAE2C9fT2Wx
         RdIw==
X-Gm-Message-State: APuU4Z9p4kEgbNNE2TDvIN7SxfkOy3Re7pcsBhK8Au4PAKFqhgmBGtSp
	ofABfMv0E5KvL/0vy3dB/cgyaw2KA7AtQsomuT/cWjcg9/PEEcFjo5in/DRuA9p7SpaSxo3cgUi
	//rCHTLY=
X-Gm-Gg: AYBFou3NpEpjIDcXKdxQvcoeqYYpZ03JWMv+ni6P82zTWpOdPsIXjYx5tPnge9Gyhv/
	uIlJkDj0IanRDaHutkYgP0rTcAXDOxRvOxR89QPeQ8G9rE0eXh++hJMjQiHyzEDRwVDdiur1AW9
	SfQ/r8fOIJIWl0ZmkCdW8IY60uIqXYkQUKqhHTM/ArZRTkVgRmBTqdeUF/hxzbN06iSoQI2Qx6h
	FpGMYfreYGTSaaOGMrifS/rRpq71P9V8gLRtrQsVt4L/9IsV71Phc+n8vhg9ge4ngZ5Dqk4M9c5
	5e26cW7ZHg9jLWmKAHcqhLysUqqLUdaUr4Emvh/Qokleul6+SIFttN8qLT1Hd1NKheHPsiTiWly
	m9hk7tWxdH/VN664tWUQnpKpcXwk0plYyXeXYsxB/AbJ6i1YV5z0kHIRSO3JPJPwa1il7WIE+18
	kfmze5RBpg+FgUbm4Xn2eBvPk2HtXWZeaME5aFLWcEpOI8yhVLWpMuAcMoWGfXa/MLluG6kWvAC
	yhAGp0CPKn/aPovj9CyTXiaF+KzYhU/vTwjkl11iGNHSB8nmcm9d4UkxOo9svJVRR5zTzHm6JFD
	4nsXBPvr7qIokXFAo8Bk1q3SxURI/vZZOGOkuZKkiU5fmmy/d6k/Teyh75MSJkaRvrBJyr+G/AZ
	10nTP
X-Received: by 2002:a05:600c:1d05:b0:4a0:1b14:e283 with SMTP id 5b1f17b1804b1-4b6dc6deb82mr52285845e9.1.1793985126768;
        Fri, 06 Nov 2026 09:12:06 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] x86/bitops: Improve code generation for __scanbit()
Date: Fri,  6 Nov 2026 17:12:04 +0000
Message-Id: <20261106171204.2783260-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1793985127-BC95A757-174E43C1/10/78276251493
X-purgate-type: spam
X-purgate-size: 5225

There's no need for an alternative.  Use the same technique as arch_ffs() by
pre-loading the destination register using the caller chosen "zero case"
instead of -1.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>

Slightly RFC.  I don't particualrly like forward-declaring ffsl(), but I don't
see another option while maintaining a non-tangled common/arch header split.

This change is definitely a win at a micro level (it's removing a CMOV
instruction from every case, and removing an alternative from every
BITS_PER_LONG case), but causes an awful lot of churn which makes it hard to
judge at a macro level:

  add/remove: 3/0 grow/shrink: 7/20 up/down: 525/-1143 (-618)
  Function                                     old     new   delta
  cpumask_any                                    -     153    +153
  sched_set_res                                  -     132    +132
  csched_schedule                             3691    3819    +128
  __next_node.constprop                          -      41     +41
  do_microcode_update                         1014    1038     +24
  memory_add                                  4036    4049     +13
  csched2_alloc_domdata                        476     487     +11
  numa_init_array                              153     161      +8
  find_non_smt                                 320     328      +8
  dump_execstate                               221     228      +7
  fixup_irqs.cold                               49      47      -2
  csched2_res_pick                            1351    1349      -2
  psr_set_val                                 2270    2264      -6
  vmx_sync_exit_bitmap                          73      65      -8
  numa_emulation                               487     479      -8
  __find_next_zero_bit                         145     137      -8
  sched_unit_migrate_finish                   1255    1246      -9
  get_free_buddy                              1014    1003     -11
  node_to_scrub                                533     517     -16
  heap_init_late                              1659    1643     -16
  dom0_compute_nr_pages                       1424    1408     -16
  sched_init_vcpu                             1811    1791     -20
  dump_numa                                    471     443     -28
  runq_tickle                                 1753    1721     -32
  dump_numa.cold                               977     942     -35
  null_unit_migrate                            743     655     -88
  get_outstanding_claims                       198      74    -124
  _assign_irq_vector                          1571    1431    -140
  null_unit_insert                             694     542    -152
  fixup_irqs                                  1655    1233    -422

3 functions get out-of-lined, which has a large knock-on effect.

cpumask_any() has absolutely no buisness being inline in the first place, but
ends up with 3 callsites here (two from fixup_irqs(), one from
_assign_irq_vector()).
---
 xen/arch/x86/include/asm/bitops.h | 33 +++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bitops.h b/xen/arch/x86/include/asm/bitops.h
index 557cee03baeb..43a553d45257 100644
--- a/xen/arch/x86/include/asm/bitops.h
+++ b/xen/arch/x86/include/asm/bitops.h
@@ -320,18 +320,35 @@ extern unsigned int __find_first_zero_bit(
 extern unsigned int __find_next_zero_bit(
     const unsigned long *addr, unsigned int size, unsigned int offset);
 
+static attr_const unsigned int ffsl(unsigned long x);
+
+/*
+ * Search for the first set bit in @val, returning @max if @val was 0.
+ * See arch_ffs() for safety discussions.
+ */
 static always_inline unsigned int __scanbit(unsigned long val, unsigned int max)
 {
+    unsigned int r;
+
+    /* If the compiler knows val is nonzero, use a plain ffsl(). */
+    if ( __builtin_constant_p(val > 0) && val > 0 )
+        return ffsl(val) - 1;
+
+    /*
+     * If the compiler knows max is BITS_PER_LONG, use TZCNT directly.  The
+     * destination register still needs pre-loading for pre-TZCNT CPUs which
+     * will execute the instruction as BSF.
+     */
     if ( __builtin_constant_p(max) && max == BITS_PER_LONG )
-        alternative_io("bsf %[in],%[out]; cmovz %[max],%k[out]",
-                       "rep; bsf %[in],%[out]",
-                       X86_FEATURE_BMI1,
-                       [out] "=&r" (val),
-                       [in] "r" (val), [max] "r" (max));
+        asm ( "tzcnt %[val], %q[res]"
+              : [res] "=r" (r)
+              : [val] "rm" (val), "[res]" (max) );
     else
-        asm ( "bsf %1,%0 ; cmovz %2,%k0"
-              : "=&r" (val) : "r" (val), "r" (max) );
-    return (unsigned int)val;
+        asm ( "bsf %[val], %q[res]"
+              : [res] "=r" (r)
+              : [val] "rm" (val), "[res]" (max) );
+
+    return r;
 }
 
 /**

base-commit: c4a09c112c391ffc1aea33afff49ffb28156fbdb
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 18:05:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 18:05:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477246.1682876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPOJc-0006Uz-FD; Fri, 06 Nov 2026 18:05:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477246.1682876; Fri, 06 Nov 2026 18:05:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPOJc-0006Us-CS; Fri, 06 Nov 2026 18:05:28 +0000
Received: by outflank-mailman (input) for mailman id 1477246;
 Fri, 06 Nov 2026 18:05:27 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPOJb-0006Um-31
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 18:05:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPOJa-000d5v-Fw
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 19:05:26 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee16dc-2eae-0a2a0a5409dd-0a2a4508db48-6
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 19:05:26 +0100
Received: from [52.101.56.18]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee16e5-f659-0a2a45080019-346538128b1b-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 19:05:26 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BY5PR03MB5219.namprd03.prod.outlook.com (2603:10b6:a03:221::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 18:05:22 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Fri, 6 Nov 2026
 18:05:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=PTy1QF2N/CMyNLI5BcIHtwjnVjCHdORl0+eg9d5J1sl7q6ZafRLJyT8uGZFhgnLPOFiF5b+xJYo4+cHQOb+nvQLBgrOl1jQ2VCZImkTtmDe/SSGEUnDcwz0AqLGWH70Ou96nCfskB1wq6MwjOi2q0VkAT4SZL6c/L7W40hzafzGSlSGhTX1evL6nvrh5Kxo4NwPDPT0RqMm44AM3inQE3VmtFHmUmZQikwxpAL8OmWZLHprZqWvUSNJLTdkHS3HJeDln+E1bJidDz7/xO01rPYUu6gtA5duV2a2JbaXdKFxHNGnUXSi0I/vRia4cfa1Cc4exOE4vqBU9RJ78cosUaw==
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=nxCpIwpX7U2nCSkPP9SZbTWTqOghYojuYb1/CisydMk=;
 b=opJ9I6f8yXDLd7BEhkGIEYe3nj6gOZ0JW+cZ0VWJYabbhHnbqILh31z8kpN2OwDU08dG+hNZ0Xmbqr/Z1TplAR5U0Do7iPtTSqnAKITxgUctYt9hacOT3JPrt8zcpL4JV8iMSuYwQeAnuKVveKF5L0elVbIhV7RhW7LMoJHCth1cpkcp2h/drdbZ3a0QSKzms9jTL2+6vhPLV82qu2bJh4OQa96NJM2L5mSkX7PmuA+OIvs8QTXHDlnhH+iVI+1EKNLlufJMb/VHWABGO3cWiuz4N/WFipbA3K1+ooo7rdOfawmf2XxYCfgjErHviY5j9F8kuBAVB0vHdUlDRk4uRg==
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=nxCpIwpX7U2nCSkPP9SZbTWTqOghYojuYb1/CisydMk=;
 b=HZP/8nwxMeT7GD2wWWndDGncyIh3yWJJSwEvfQ+v1HIrqPhVdPb23GyDdOnNSrzLJZWqq1IN7Fu6Vf4pdbcarsBQy5yd4myO6Hi3fUOTVU2kNSbQ9nYrBN5U0gp/inYoihW2E5v1Mru50JFu64bavPbudTV9F6TRFixKh13Qp2c=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <86bf2afd-45c2-46a4-b367-65c546b0af38@citrix.com>
Date: Fri, 6 Nov 2026 18:05:18 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 05/28] x86/hvm: cleanup svm_create_vmcb()
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-6-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-6-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0253.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:37c::6) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BY5PR03MB5219:EE_
X-MS-Office365-Filtering-Correlation-Id: a2a62e02-a9c9-4812-2d2b-08df3c308673
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|23010399003|1800799024|18002099003|22082099003|56012099006|11063799006|4143699003|261021121427099003|261102123227099003|261022075727099003|261021135927099003|261028144727099003|261022105027099003|261026140227099003|261026121527099003|10067099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	iFRi3bLBRRI9Ebp6jKPEC5lnXuySkCUUtDxLmAu6lybh32mZCxoGtO6kwBr1SX8fCfcsq5eQn+2RGoPZTEEjAV5lqZ/tEIiMCFD7sSxjUhO6M++lvlM9gVRRkwls+HFJeVRorv4Oqf1QES8Vs2bJYdX06tLbz9WHfvgezhgL6wtcESweG1VlW0NrzXjnPRD0XJsy5PzWtF6UP8npfMq7xQDFuoqHnGj9hM9SAu7ydvn8rlHln+B759hy+nMjShV5PSEyqmKTiCwbsxmmMw2CCyl2+79WyotEQVNN0hr6S13fJLqU1J1UBPoKPQ+muBkTGqb2qK/xicx8aEfGftJnKiYxzB/WDekAAH43nu0aCMmuu7HjYkre+fuJ018ZHCpSWp/UuCb/gL9/zEd5x/+qjrWnaqL7Pl3zd6DPbX3aZo8PP4yefH8FVpzboiHL/g5y9662aZ8M2v2LTMlPGUT9m9pZGA44WJPPsjUccFSDWF9RoDtXvnoInKeouvqG4ppR5pn9NdsO8T8hhfarOGOOSe1av1k8qmsmG1vCZ8awwPL+T0BuKcw4GrqbGDHtmy9NAKQLxp8OHXj4rgFNwBK9Kkoer7qF2PxWcMFLMhCGvak7R0M9OB+hsCoXUNzNkzdFcpJDjNOV/ktyzO3VXanTFOJ9newRW3PzqWQKZTcOl5w=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(18002099003)(22082099003)(56012099006)(11063799006)(4143699003)(261021121427099003)(261102123227099003)(261022075727099003)(261021135927099003)(261028144727099003)(261022105027099003)(261026140227099003)(261026121527099003)(10067099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MzFFTHQrWVZhZVFKTnBIUHUwWEw1MGdZZkoyZTVtTEhCK3ZHVFdRQzJhZG9p?=
 =?utf-8?B?dmJxbjZHTHpvTU4reUlaMW0rZGx1ZHpZTDNzSFJtcjdaeWRYRHYyN1AvVitN?=
 =?utf-8?B?cDdVZzlTOFFaYWxtTXI5RkZqUTU3b1RxaXY2NjFGa3JVUklQVzg1YjZ4eEFr?=
 =?utf-8?B?NE8rZkRIU1BqbmY3SE9PQjY3WVNiN2dNMk9NWFNyNmQ4ZXh6azRGRXV0UERZ?=
 =?utf-8?B?NGtCc3NxNnQ2cGNFSDI4V2dCdXc0T21zdUtmQ2kvaXEyRy9VY2lnR0Y0RkV5?=
 =?utf-8?B?QXpINXRNaUY5ZHFRU3FMK01pTW1ZRFpFSmV3NHJaTWFEbmdqRWxON2hCbWky?=
 =?utf-8?B?TUZ2Y1N3VHlZU3JQampJb3UvbEt4YWY5dnNzRC9sa0E5V2psRlJsaVlxZkd0?=
 =?utf-8?B?Znk4RGVLL1NJMnBkRS9lM1pSdStaRmpJWlBVdFBrVWlIOU10UE5QMGJrZHJj?=
 =?utf-8?B?M3dVa2w5WUswQUgxRjVubVhSYk1teGlEek4vWW9WQmM3TVRValBDNGkxeFhJ?=
 =?utf-8?B?UHlPYUpkd1hrNjZYZnRpNTRubXV2bnNhRFZzSGNIT2pFRWNhUUZaVHdkSHZz?=
 =?utf-8?B?c1RDYzlxNk55aHZ1WGZCY3huaTBWT1Z0dnF2Z0Jkeit5VStEdkkzNW14RHM3?=
 =?utf-8?B?c2lVZHc2ZmhQZHNoYk5jMlJxRjFaN2hQSEtSZ1dNK251N05yLzFmVXE4UXlo?=
 =?utf-8?B?ODd6VHlSNHA1VzBaTnduWklvMWZWMktyTEhRT2didkpEKzF5cW5oYzhlbVNH?=
 =?utf-8?B?dG8rYUNGY3NZSjRydnNEWGxmci9lQ0FiNU5VV1AyVjhGMk9UZmw5VVBPcWNB?=
 =?utf-8?B?RGQ1bUlsV2hmTTdBSWJhQlZLZjlTUTIxTU8vVWNoZHNuTGNZSmoybURPOFNs?=
 =?utf-8?B?ZFNrT3NEOFVqWWdFRHB1WE9ZbmxEazlSM2cvYy8rZDROOCtvZkk4Nm9jS2hy?=
 =?utf-8?B?VTNCdHFoSTk0T2djWUpsVVlxN210elI2U1AwK0Q5cGJIUDg2QmdLa0h5c2ta?=
 =?utf-8?B?ZmluTUVKR2c0bDBLcW1CYlIyUkNWZmFhbm9oQzJmNmlpWTE4c2pYeXhmQjBu?=
 =?utf-8?B?SHBaVkI0bTZpYzcyRWlrNGM5cHROQS9udEpCNU5CZXovOVI4clZ5dEhNZlBh?=
 =?utf-8?B?WHBORFQyT3BONk83TWExdU91ZU1NTWRmOWozOFhUL1VUYjBTNXdXMnF5bWtp?=
 =?utf-8?B?NnpzbXJpZkk0bFl6bmRkbEllSXVITTNaM0VWTzRXYXZpOFhEMmZ5aG40Tkcr?=
 =?utf-8?B?aU9qaGZNVFRhc0tWV3pkOGRkdHBYdE9TbXN4WGxOSmIvTkZoaDhKK0ErbHdn?=
 =?utf-8?B?ZzR5eW9iM2hWbFVTcUNjTHBkNE50TVA1eThubHFwdzNUdkdCUW81Z2gralpi?=
 =?utf-8?B?Tm9YamFPL1czUHI4M0FNRGZGSDZBRkI0NTNtZEF4MXRQK0k2aWs5ckJxNmZ4?=
 =?utf-8?B?UElka0Nna3FZdmplMkY4UFNQUTBvSDRoS0NZRmxkU3ZXK3pqTWZoQStDWnVB?=
 =?utf-8?B?cnRlMk1zU1JXbGRHcFBsakdsdWtIN0N2QVQxV21FUlRLaVRYaEdrbDRjcHFH?=
 =?utf-8?B?Qit5ZFhyNzZjdmxsQVpNc2p0KzRybFBpSVREamwyZnM4OHBwV0VaK0QrOWZk?=
 =?utf-8?B?R2RPY3Y5Yi9nMndNNE8xOS94ZmJvQnV6bDB6TjV1ZVRPSDAxazA4R0ZTNzJ4?=
 =?utf-8?B?eUlBNHVqM2VnNjdFeGlLSk54akxIZ0JXcXRPaFF3UCtKSlZublJGR1ozTlVN?=
 =?utf-8?B?dmZKQnQ0M09VZjMvNmRMT0ZVNWlCR29EcCtvVThmUDFKMGp3Wjd1c09nU1Jj?=
 =?utf-8?B?aTFFTlVva08wNDNLenlnTEd0anZicngydXYzOHhCSmo0VFlFRE9TRXFrY1kv?=
 =?utf-8?B?RFhNVFhVM3p5ajNBNXlONmUrNG9VdmlGaFZiL1VROHJZWE8rNitCV2drZW8w?=
 =?utf-8?B?eUxFYllJaFlIZ0pKUldtWDVWYTREeml5RlRqMWVwTkFvaUw1Y1NKazhZYkkx?=
 =?utf-8?B?aXdiOUoveXh3OHpKQUVDbnJhdFRxMDRwZDFKZFRGYmh3dGNOenh6by9COWFR?=
 =?utf-8?B?bFFiSnFXOCtUWDZYQXIxVUJpOGtNaitCeHBJeTBGbmNPb2hUTmhEaGxJWlFt?=
 =?utf-8?B?elBRZjVrbHd0T3pVOGpVU3NTVUNtdXE0dmplcExnQm5EaDErMmdIdUdtb251?=
 =?utf-8?B?akd3ZE5HVUNqVlpSTFl6b1JnMU96d2ZZNjBHWXJ1QUJSK2JaUjZRZ0tTUmpO?=
 =?utf-8?B?WnhReXpZVnZMeU0venZkVnpoVW9JNmx6SDNlNWl4U01CbnlWdStiWlJzMFp3?=
 =?utf-8?B?eDh4K2hCOTdkR1NYSEVEa3pYaVVXYkVTeWR3Zjc4eTRtaEhuQ1d2Zz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a2a62e02-a9c9-4812-2d2b-08df3c308673
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 18:05:22.2421
 (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: 7qG/Xrs1sSGGGfG+qGefomvB3wbVyRF6OiUVWfl95+PTLh/Mufgxd35LwZMAeH6D8d7yJflyJaf+iUYGiNpGdwjBRHFIVOEbEGVuFEAUfVw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5219
X-purgate-ID: tlsNG-c1860d/1793988326-D7B5987B-F566A01B/0/0
X-purgate-type: clean
X-purgate-size: 1790

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> svm_create_vmcb() does not need to be idempotent because in case of
> failure caller must call svm_destroy_vmcb().
>
> Simplify code in svm_create_vmcb() to account for that.

This is more complicated than it seems.

There are two paths which need to clean up a struct vcpu:
1) The domain_kill hypercall (i.e. clean destruction)
2) A failure within vcpu_create()

Nowadays, both vcpu and domain create() end up calling back into the
relevant destroy paths.  This is some work I started a long time ago and
never managed to finish.

We had a number of memory leaks because each init/create function was
required to clean up after itself, and several did this incorrectly.  It
was also wasteful because we had duplicated cleanup code.

At the moment, both vcpu_create() and hvm_vcpu_initialise() will call
the relevant destruction path.

In the future, we want to remove all the create() error handling except
from the top-level, because that removes the duplication.  However this
is a large task and it's the common/arch boundary where it gets
particularly hard to organise safely.


Anyway.  We can take this patch with an adjusted commit message.  In
particular, saying that the "caller must call ..." is a hope, rather
than a clear statement that this is how the code behaves.  I suggest
something like:

---8<---
svm_create_vmcb() does not need to do error handling itself because
vcpu_create() handles this at the top level by calling vcpu_destroy().
---8<---

But, if someone has some copious free time, it would be nicer if we
could do this a little bit wider and make better progress towards
removing the create() error handling.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 20:14:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 20:14:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477337.1682887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPQKW-00020Y-Bz; Fri, 06 Nov 2026 20:14:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477337.1682887; Fri, 06 Nov 2026 20:14:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPQKW-00020J-5d; Fri, 06 Nov 2026 20:14:32 +0000
Received: by outflank-mailman (input) for mailman id 1477337;
 Fri, 06 Nov 2026 20:14:30 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPQKU-00020D-AM
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 20:14:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPQKT-0089Xe-8Y
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 21:14:29 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee3502-2eae-0a2a0a5409dd-0a2a4506a8b2-30
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 21:14:29 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee3524-195a-0a2a45060019-d155802bb924-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 21:14:28 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a208d93758so10965255e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 12:14:28 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb134ccsm3988335e9.10.2026.11.06.12.14.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 12:14:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1793996068; x=1794600868; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=n3ycVQfER+OeRfPQv9zS8nTjBTKJpLB/0bWRaXvffxA=;
        b=Ju6vEj9Ua5rB88buun6RHEtH0Vijf35NMZuaHHfeREXMMu0mLsFa1IRdF5hxOmxW4H
         uW6Y5VrEt0Io4Th6BGAH5qWHVHwr/UgbvO/99W6lE+/XBIvfI0P65znn8fiqceZXmf1Q
         r1qdAU3PnIxsfUiEp6hCWmthsPieztjkZiXZQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1793996068; x=1794600868;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=n3ycVQfER+OeRfPQv9zS8nTjBTKJpLB/0bWRaXvffxA=;
        b=zks3+DOf1EMNz6LKF9xFPUp8EzVV5XYumgJ/JdN5o0WJjRJsQfcGQZuCv1DDFg2swy
         ZMPdNZrqfB13x3DFJBelnskd3xJTuenRGWb3mhu9yA0hglZ/poEqBDM+PH78qJyH39wA
         iPlFKq3i+uo1MU1ingGKygFvHGACwk5BHgc5qKiSKtqu7ve1WWgr47vV1q51jzX6Bjwz
         mhY6xGpjOTTkFp7Bt0VgYUwBHRMV/lW12WK4NBW4OMHoFSdQNl5Sab+5FPKxSNDRRl3C
         meswo9JDf8K1FbhtP3fniiq1/DymxkyCGHN3bx0HIRJRzVwSsahQ1/obe178qAizTn3B
         EBhQ==
X-Gm-Message-State: APuU4Z9hfa97T9rHIJM20uVNWPak3wPyVNPNa6vGVpNLL8aZc8WIA6xt
	SvPLqFY4ZRqGnsha6lj7zxKwAnkSIkD8ys2zA3hClVVAV2hjik/UZSdgvZs9cY17O9wQaNuANiA
	EWTvQW1s=
X-Gm-Gg: AYBFou0p+DuOqHTCO6eIFj0Rzxcp39wUmqZ41NerZFicu3o1dSJ+U7P1V9NBjYnvNKi
	27/BWweynpzhavOHNQ8yuoDDHbdZe3yjTRC62NiJE1QOl3cUWxjzuTRB5Q+/wfBV0yTbmrZ6N37
	68R/pX53BaLJQ4ddy6iLUvbcBwE9x7PJcbncLU2WZfZ0tVmZA3dIJoq9cxnS9izH/Q9yyqAWZ3H
	hZv5HNioEbLiRQRtRRseP4tMnczqrV76fwek3oInFk5B8g/wFPqaqfvI+JzSqi4DP1Ojbb0QhwK
	iNdLHpCASni30uNf1TTFkg5CBBqkSCgT0/10qOxTYZgbQkBgm4bte0O14HhiKe2fM1ByBPO3CKj
	uxDTqMQj1DM2INbQThjF0DJE2zW+r5urU0B9hVmk4TTnRvrCi7U3Wxip72RhmvJYWBfRHTNjnVp
	FlUb7PYbwXcnLTWswnq3UPi+2sg/rKlt0uYeRUGvfJWz3PLb6SiCcyhCNjkIG9M1ywPtOsYMv6Q
	nD1gdtPDBjZZ4CvxAacTRxKnezw/H4GVBeTXsF43MPVRW7DBqEb/XaxUMYo7uZb+ldE4UQZvJ/Y
	ePZq9CXDQhEn57n637988/DUbv1nizTUcHJWE/Z4+abGYhf0yamRW2ZIngLvitvBMXou4QLVJCh
	msvs=
X-Received: by 2002:a05:600c:c8a:b0:4a1:f377:5c75 with SMTP id 5b1f17b1804b1-4b6e0454dbfmr62745665e9.33.1793996068148;
        Fri, 06 Nov 2026 12:14:28 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Denis Mukhin <dmukhin@ford.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH RFC] x86/hvm: Disallow modifying the APIC_ID register
Date: Fri,  6 Nov 2026 20:14:26 +0000
Message-Id: <20261106201426.2785335-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1793996068-FDC0F77B-887031CB/10/78276251493
X-purgate-type: spam
X-purgate-size: 2454

The APIC_ID register is strictly read-only in x2APIC mode.  In xAPIC mode,
both Intel and AMD document the read-only-ness as being implementation
dependent.

In practice, for Intel it's read-only on any x2APIC-capable hardware (Nehalem
and later, so almost two decades now).  For AMD, the register is writeable but
doing so trucates the 32bit x2APIC ID, so in practice nothing (not even the
firmware) does modify it.

Just as we disallow changing the LAPIC base for ease of supporting APIC
virtualisation extentions, ignore guest writes to the APIC_ID in xAPIC mode.

Note, this still allows the toolstack to configure APIC IDs, for migration and
topology reasons.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Jason Andryuk <jason.andryuk@amd.com>
CC: Denis Mukhin <dmukhin@ford.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

This patch is from 2019.  I apparently never got as far as sending it...

This is even lower risk than disallowing changing the xAPIC MMIO window.
There's been no comment or issue with that restriction, which has been in
place since 2018.

It is however RFC.

 * Without this APIC_ID restriction, we need to modify the logical id table in
   response to changes, including disabling AVIC domain-wide if the guest sets
   a layout which can't be expressed.  Intel have gained a similar table with
   their IPI Virt capability on SPR and later.

 * Both Intel and AMD allow writes to the APIC_ID to be accelerated, and give
   a trap VMExit after the backing page has been updated.  So if we're going
   to enforce this restriction then we need the VMExit to undo the
   modification.
---
 xen/arch/x86/hvm/vlapic.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 6698779e227c..358fdd4baf92 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -795,10 +795,6 @@ void vlapic_reg_write(struct vcpu *v, unsigned int reg, uint32_t val)
 
     switch ( reg )
     {
-    case APIC_ID:
-        vlapic_set_reg(vlapic, APIC_ID, val);
-        break;
-
     case APIC_ESR:
         val = xchg(&vlapic->hw.pending_esr, 0);
         vlapic_set_reg(vlapic, APIC_ESR, val);

base-commit: c4a09c112c391ffc1aea33afff49ffb28156fbdb
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 20:46:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 20:46:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477362.1682895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPQpC-0007D0-LB; Fri, 06 Nov 2026 20:46:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477362.1682895; Fri, 06 Nov 2026 20:46:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPQpC-0007Ct-IS; Fri, 06 Nov 2026 20:46:14 +0000
Received: by outflank-mailman (input) for mailman id 1477362;
 Fri, 06 Nov 2026 20:46:13 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPQpB-0007Cn-40
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 20:46:13 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPQp9-004itw-Ey
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 21:46:11 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee3c93-8faa-0a2a0a5109dd-0a2a450799b2-0
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 21:46:11 +0100
Received: from [52.101.52.15]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee3c92-b4ea-0a2a45070019-3465340f98ca-3
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 21:46:11 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH0PR03MB7141.namprd03.prod.outlook.com (2603:10b6:510:296::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 20:46:08 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Fri, 6 Nov 2026
 20:46:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=C4KRq/8Uhjzsa39t0j53Y12mAkW0gVXF2bYhb/8F1vQWJPE14z0STUo50uNADtGsFJn7jaA1ntmAM4BrAbfzK72Eoi1iG2uQunbRwuMRUoIhsAFpOjYIL9qTPZsvP4kvDtcXWljYAb4vMdMIl0n2r9NT/UARZCDFoOjM3QDr93n8VwIdeyQCDXIliPhHKr0nnXx+7aDydondAYNjMzmq+NtFXsQBAYoD++grIgD85npF+JKAAircmt1dArbUuSMS3CJaZPKGuTbzCEaDNX3i1sAwdPuxGS5IrUsEeOblVMUz/EyVzghbwzD8voN+MFMpQrPWpaQSXsDeUKsAj4zHjQ==
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=FeApvkWJ+0VxjdGYnn+UdVuBOMNZRtIqxsMbIVa/VVE=;
 b=Tnhtqmm31MvRZAxvdUSRfLtyvyC+PejVQqDow3yLUFkv+kNkTl/QDSIPro6ddVd+g3krOudD/XCMM4lCPetfelkEuxVMWjqQcsGRs64SCV8MW4o2qlapBy1BSTHBjb5kwb8BU+UvK75QeynxsCx1Ah5w8LQ2BaLhoJOtyQmoQhpe6YyQSaJ1vGes0RCgC6/aRSH/jYx+UrlDvhVwqhIIl/rX7cBrFBDmSushI9Hy9HHM5+dHJgAHJ7M4N67vbwsttugVqcD3KX9f+qEYz9ZzyxhWfdbh3VyAHeadc2Gcg5+HFIb28QUuMFNDIY7PF326QlnfSsjErfywcW/tD0LmnQ==
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=FeApvkWJ+0VxjdGYnn+UdVuBOMNZRtIqxsMbIVa/VVE=;
 b=vUS4mrUamqM64+Q8igkYlWOecRP3IN43+qrcc6hThya273kqpfqHb+5ivDVH8E9Uw9gBQKqPMKi2ykVtxPvKSfif+a6vcVKvFv2Q3hwb7SFOSzLBkCrvbce7AO0hhnG3e3qPgXOCRxV57HcMjqb4A2lR79Oeji09lzRhpWzDZ5A=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <dafe5046-b722-46c3-811d-056d0d786855@citrix.com>
Date: Fri, 6 Nov 2026 20:46:03 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 22/28] x86/hvm: avic: ensure SVM AVIC supports xAPIC
 operation only
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-23-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-23-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0411.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:189::20) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH0PR03MB7141:EE_
X-MS-Office365-Filtering-Correlation-Id: 3d0b5b80-4a76-4df2-e2a4-08df3c46fb4d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|23010399003|376014|366016|18002099003|22082099003|3023799007|6133799003|10067099003|56012099006|4143699003|11063799006|261026121527099003|261026140227099003|261102123227099003|261028144727099003|261022105027099003|261021123027099003|261021121427099003|261022075727099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	zNB0XGskq/f5KSVNHAZ6nCRkdswDmFsN5c8Vl5l1q+cUmNxDjaEbxAUk/8w72S5C2oiX/09mHXwz6azTZOa1/phOmgGAm5x+TZ6Zp0vcelksOTMRnQ5+T//xLosBc4f0hVbpoygIy8KuZrCjxDLq04pUWi9R6JJFrpHHNW1cib7AqOMYmxM7PXMV+00IU66iPJrqVc0WfTVJkYB45rfIcz96uygsCo08GLTEb2Wn8/XuzEDd8t8h7kLo+KAYzUg3THfv2SXJFpBO84tptyFWqFrtPrxL0kLW4IkNfjZau0InNNFb9d68o80pixhiPAng6IGtPtOEL/3r3xX36s0JAOmlx2cQ3ugCFFc17rzQehlsDvJl3OH2dRz3QIq6JejqYbzO2ezx5/rPig9zT/UnCmNDNEogmRevka0kc2SSM8WxdUFI5kPt1F5G+Mgky2Yu1S43MUz0sP6rwQCAXm9aibveyiH29eLaApJm2nXbyn2jajMM5aKScPG9kFnSFf+FnaxlnfAzfS4+P7t65KgPcT4uMJFnOabGkrOv42AojfYtLm7rMpz3u+UAWpupB+TuIfma2W75adpuwi5OCaeVc3/BrUqWQi11b+Kdy+o7kIc0e5Oc+0G1ZKAZ7FW+voUui/Pz0JKZSzUYCSbtQQlRckZV49k4r8zrnD+E+PSyLn4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(376014)(366016)(18002099003)(22082099003)(3023799007)(6133799003)(10067099003)(56012099006)(4143699003)(11063799006)(261026121527099003)(261026140227099003)(261102123227099003)(261028144727099003)(261022105027099003)(261021123027099003)(261021121427099003)(261022075727099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?b29mQTNCZkV6d1V1Z2VjRHVWMDRwUXk5ZnYxYWc1YmFWbWhpNi9jOFVxdkZW?=
 =?utf-8?B?UUFmaGVKQkRGSG9CWHRkRS9UUVhkL0ZSUG5NMFFUUGxncHcxa2V1VDJEdE9v?=
 =?utf-8?B?QkVxaHdaK25XU1VJSDZmQjUyVDY1RlNxNy9mWXB2TVYyVU9zenB4RkNjWnl0?=
 =?utf-8?B?T0NEOEU0S0U2NWNPcFVtVlBEL0NOdVpZUjhTNHg4RHhsVG9qc0pSL0M2ZHNJ?=
 =?utf-8?B?b256Y2o3N09mZzZUMGVqMDh6NG0wU0ZwV2k3NCtkanBmMkdsOVR4ZFdSWTM4?=
 =?utf-8?B?Zlg2UkQ0OUEzM0lwTDdZRjE3MEJRQ2NmMUhwY3M1QldIV1ZpK3pGa0ttb2lH?=
 =?utf-8?B?alg2eWZaKzcwWHZoRC9OQ0p3SVYyOUVITWpUd2NRY0ZKQkhZaXVFdXBEaUpH?=
 =?utf-8?B?RmkxTVN1SlBMUmpjbm9ZOC9EZVpGUjRkWHRBejk4VDFDekFaVll3SWRKdnAw?=
 =?utf-8?B?Zi96M2FjeFJkQVBLZXRONk1VUVhTNWpIbVR1MjhHM1dwbnJ2STFOdkg0a0VX?=
 =?utf-8?B?WG00WmttaHkza3g3NkFPbTFET3ZnemVOSEw1QTVIYXplRERQcUt3UXF4clha?=
 =?utf-8?B?MHpWSk9EUE91SWdDdXVLaWd4SDZtVCtHNWF1OE9vRVlyNVZwMGQ1RmVzenJw?=
 =?utf-8?B?U280OGZBQm90N3BYSXQ5Nk5yTGZ6SnNTbTZxY2VpTkxLd0xLTTZTbytZMDlm?=
 =?utf-8?B?L1FIWDJERzF3MUVEeTRkbXBDM3dGRXVOZWNqYjN6azBCamVCTnlCY2tTZCs3?=
 =?utf-8?B?NWxCcDlZKzJtMUFjcVNxcTRIM1VMUmhZY0ltWk5ld1hUeC84c01ZcFZ4NzZZ?=
 =?utf-8?B?blhMVXpSbXp0c2VFd2Vpa2RCOHk0NGlQblF6cEp2MDY0THArdmwrR2hXcVV6?=
 =?utf-8?B?Y1dhV1Z1aGhPZ3FEVzQxdlp6OWx5UEZyY3JuSUVmdTNDVE54b0lwdTcvMEVj?=
 =?utf-8?B?UmpQZHJCdWkwM29CZERueEJFOGtsTlM1Vnp3UXEydEhyNEdVREY2ekpwd2U1?=
 =?utf-8?B?b2JnZHBzRS9PNG5IWXExVWJ5cEYza0xVY3ZQTVNSUU1mU2lOdndQcDZURUJ5?=
 =?utf-8?B?VXdzZURpeXpEWnVldlJyZWlMN0FvYjkybUFJdFRVcy9obEpIK04xQngwRnZu?=
 =?utf-8?B?MHMwSTE2ME9lQUhHVlZtdDRieG93MmMxcGVwR2ZqbnB1c3RpR2lUUC94c0w0?=
 =?utf-8?B?K1NpSWNDVWxMU1FjUkJJcXdYZ1E4akFONXJJVEtOYlhQV1lwbmFqMmY0Lzh1?=
 =?utf-8?B?VGV3ZE5FYTVOY0VLYmlKQldUckhua0hQVVhpM2FET3dHM0N0WE5lU1hrYVB6?=
 =?utf-8?B?Qk8xUHdhc0JOY0htQ1JudkZhbHh1MHcvV25RaXE1SWdxRmJpbnBkSVBEZTJ1?=
 =?utf-8?B?bHlSdTlqYzBOd00yeCtqRkpMRXVVaXZWRlV6OW8vR3ZlelREeFN5bGJ6ZVVB?=
 =?utf-8?B?S1ZIZ2VTY3diL0g4eEpNUWs2Mng2d1lvaHl4eWRaeGVxeDhmR3RpTXhrWitV?=
 =?utf-8?B?TmR3L1lmUWdZbmlNczE5bGM0NmQyeXpIbnV0bFA1MXpxRUVlaUlpbjY2cEQ5?=
 =?utf-8?B?YmwvN3pvSVA2TmFCbmV0ZmV6VVZRZlh0Z3gwUHlwV0pieDNOVmZ6Z0VVcUZY?=
 =?utf-8?B?dG9IQmZ1UGFVeGE2Nm9zUnJaNDE3L1BJa2dIeVVpSFdNcnk3d25SdWNQa2tF?=
 =?utf-8?B?emxMOU1xQVhYOGd1K3FEN0gwTHJueE5sb2tuMTRjVllSNDMvWWNHTnlXSUtW?=
 =?utf-8?B?MkZnV1VjV2k2OXhDNVN2RnNzVEsxMnBqQ1BqK1VNb1dpaE9aeFNTcGErdzVB?=
 =?utf-8?B?QnBkWDNQTjk2MmJTamkwNzFHTXN0R0NJTXByMytDRnZEbWZYa2JzaDhoZTB4?=
 =?utf-8?B?UHJleWpORDFuZkQ3d1Z5ZWtrU2R2UUpOU0plN2lXREdqOUZmRkErU3pKYVpi?=
 =?utf-8?B?bWtjMXByamRrRXM2TitQWkExSUprSVZNcXUxcm56NzdsL043R1NiMWU1MldF?=
 =?utf-8?B?WWpmUzZNM04zSHUvRFBWR2ZOTGp4dm5walNPZkZoY3BDLzhrNHBEbUJ5VWtO?=
 =?utf-8?B?aWQ4amJRM21TTmw4WUNVRXQwVGIveDRUNHRIam1XMFFKM2ZTU0l6czh1VU51?=
 =?utf-8?B?bFRaT1Y4M05qRXRJa2hCMjJ6ckcxMjBaWWppSmpOMURiSHVEVlFwVUF4cDhs?=
 =?utf-8?B?V3h5dmoxSGJveXhyN2VIMHEzNEpKOXJRaXp5UGc1VmRiSnBBZFR1SHZUN2Mr?=
 =?utf-8?B?OGYvajNCVFpBQWlBWSsyRnlINDZMS1BTc2RPcU5yRWpOSGJzQVBsRXh0Z2JT?=
 =?utf-8?B?ckRpMWxnSVk3ZTNvZmJDc1J0NDZiQTZWcXBqK2FZbzJPNDhrTWM2UT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d0b5b80-4a76-4df2-e2a4-08df3c46fb4d
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 20:46:07.3218
 (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: /tcBE7fl/iHnJ7xbeAHqlfyYe01icSO/J9VuPtOus6KWQyifbuUqR9QeBpoRXyjOA4KVKu+MFYSux73RX4iX+ixXr7+/PcF1pLIaXAaoe/M=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB7141
X-purgate-ID: tlsNG-ef75cf/1793997971-A44CBAE4-6820C690/0/0
X-purgate-type: clean
X-purgate-size: 1903

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> xAVIC does not support x2APIC operation (yet).
>
> Until x2APIC mode is supported, don't advertise x2APIC to HVM
> guests when SVM AVIC is enabled.
>
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>  xen/arch/x86/cpu-policy.c          |  3 ++-
>  xen/arch/x86/hvm/svm/svm.c         | 12 ++++++++++++
>  xen/arch/x86/hvm/vmx/vmx.c         |  4 ++++
>  xen/arch/x86/include/asm/hvm/hvm.h | 15 ++++++++++++++-
>  4 files changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> index 48a3185eed8d..ca9b1a523570 100644
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -764,7 +764,8 @@ static void __init calculate_hvm_max_policy(void)
>       * (x2)APIC isn't enabled.
>       */
>      __set_bit(X86_FEATURE_APIC, fs);
> -    __set_bit(X86_FEATURE_X2APIC, fs);
> +    if ( hvm_x2apic_supported() )
> +        __set_bit(X86_FEATURE_X2APIC, fs);

The reasoning is backwards, and breaks things.

HVM guests do support x2APIC, and have seen the feature bit for a decade
or more.

Clobbering this bit will cause the Xapi toolstack to block migration. 
The xl toolstack doesn't do the relevant safety checks (yet) and the VM
will explode as a result if it was actually using x2APIC.

x2AVIC is an acceleration.  It's fine for the acceleration not to be
turned on, but it is not fine to hide x2APIC as a consequence.

Both the Viridian spec and Xen itself have hints in the virtualised
leaves to tell a guest whether it ought to prefer using xAPIC or x2APIC
mode.  Under plain virt, x2APIC is vastly preferable because the
RD/WRMSR exit gives you all the information you require, whereas xAPIC
requires instruction emulation to figure out the register was being
accessed.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:15:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:15:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477480.1682919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9w-0004Qj-3a; Fri, 06 Nov 2026 23:15:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477480.1682919; Fri, 06 Nov 2026 23:15:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9v-0004QG-Ui; Fri, 06 Nov 2026 23:15:47 +0000
Received: by outflank-mailman (input) for mailman id 1477480;
 Fri, 06 Nov 2026 23:15:46 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPT9u-0004O7-Qt
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:15:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPT9u-00EGOA-7j
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:15:46 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f7b-e002-0a2a0a5209dd-0a2a4509bcb4-18
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:45 +0100
Received: from [40.93.198.25]
 (helo=CY7PR03CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5fa0-be1a-0a2a45090019-285dc619c89a-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:45 +0100
Received: from BN1PR14CA0027.namprd14.prod.outlook.com (2603:10b6:408:e3::32)
 by IA0PR12MB8862.namprd12.prod.outlook.com (2603:10b6:208:48e::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 23:15:39 +0000
Received: from BN6PEPF00000074.namprd03.prod.outlook.com
 (2603:10b6:408:e3:cafe::6c) by BN1PR14CA0027.outlook.office365.com
 (2603:10b6:408:e3::32) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:15:37 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN6PEPF00000074.mail.protection.outlook.com (10.167.248.201) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:15:37 +0000
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:36 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:15:36 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=DfWYBaAKLf95YsCsVF9XryseTSkzmg1SqDAOI17UbfEUDrmOvIeFKAC+GxZxiE3xpyHn1PtNr2Iqp9s0hRdUd0QuoUw0n7Zwvo8E899SQpQ5mKWHIfzMme3M9ugtjwJgFVkDzQEBzNoVSxAa/XqWtwyJLWwX9S1p/tPHDTK2PoZOazUyc501Ea9Kg36yalCy4QokjZ6Ck2n0bmgM1/sQwLsTqyxoxG4GOebskJHXApV3cJTys9XeRoWEowDjCQQYJX7raIqsjNw03vQO34OSmd3Ljw2T67gYP/t76W02tdJkeSdFILJJPVsM8f2zUy6nLZO3lmIq265AJQuBOQV/CA==
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=eGPzj3A5rcVDcWrxSPkqwRif3GBAO0+m88S7xzep4MM=;
 b=ZgHzF6GkHC4w+BmvX0i5m1dADgNW+acrtscBPoBP6T0m10USUNHPeOLdifxSaxmSf+qSUSp3kWkQXTcjZBI9dO5wSScp8PXF92utwfxTHluhIzyHBSPLXSBz+V+xKtqeUqi8x09DftXUTlf2AeuF46sTliOheP8bDR8oN3sx8UYIDa4oKRrlEjkPTo2cirBeSl7NvjIOzHg77SU7yfzcRkRR6aHo2XuniDtbESrknG5m1QHaGg/k+7kpNhStK/QzqBCSLGB5WfYnCt0/DCsJScPttZ8GNFfd8NMnfNAizKMI7WWgmd/cMmjaviaC7r4I4HKPEdBHbsZQwxLBpg79sw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eGPzj3A5rcVDcWrxSPkqwRif3GBAO0+m88S7xzep4MM=;
 b=Cxb61Vyz+/E00AcKkLzRzNUU2AnlCKJHDNsen5t748xRC6lNtaGKk991scbklUCCM/3gjaikLJrj8BfYyMfMpilKI1quCRY0GYsrWHdHYraDVVJsTQIsP8F9DxIaLrNp+jui3EHEpqdK+Yx8+89oOkLUy3u6tEYB41LYW0sXkPU=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Jan Beulich <jbeulich@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 1/4] libacpi: Build TPM2 tables for the TIS interface
Date: Fri, 6 Nov 2026 18:15:23 -0500
Message-ID: <20261106231526.482418-2-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20261106231526.482418-1-jason.andryuk@amd.com>
References: <20261106231526.482418-1-jason.andryuk@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN6PEPF00000074:EE_|IA0PR12MB8862:EE_
X-MS-Office365-Filtering-Correlation-Id: 7e128235-7f39-44a0-52b1-08df3c5bdde5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|1800799024|376014|82310400026|36860700016|11063799006|261022113327099003|261022075727099003|260925022911599003|260925021311599003|261021135927099003|260925021911599003|261021130227099003|261021123027099003|261009223027099003|56012099006|261021121427099003|261021133027099003|261022115727099003|261026135527099003|261028144727099003|261026130827099003|261022105027099003|261026140227099003|261026121527099003|261102123227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	eSKL1Su9fcuKsLRMy1MnK0X7EvRJca8Ccv9bYAUcocV66WRXlyCVrpUAYRd3ZZxVJtcY5WCDpV+sX6ueF1u5JCenGiNQI2ueQh+IHZf0sGZhlBIWYWBDVApiCM54265ZakSQ3XkpzjxRpCDZxVHQImR/pYUwubdm835yOUReoDci8PDI9h/Tjj2Ov/bK3zo40VwSuQCfDaQm9F5KG1z82st4qf4IGlpBmmfAZaHj9R4sTk5pZy3dpQP5Now3Uam+rPkd8BOcE65cqbwTEbeOo+UV7AK75sY9a3dYqbWEZFm00WtL5ik7KWjKgUuty0xmkQmTH7Pk9NLazAoOFt5CGL3zwVe1kCxH3cnkdIBpUfRmUUjY3okDfuIeNeeL2M8Vzdr2da4d/j/PFBkW153yO9hZxwXyW21FASx1zrTLL7HyNV4bwaW8XH1FbFdAgVrFg809jP0ZT3gAlDts1o/hLKFcmuLi3wW3LpTBEWWFBLHoxNN83TuhqxX+RfMxsN93dD/0oyUgs4mFV/H/vLef5S2HJq2q6z+DKlVl6eYgfLD/2j1po/3kjcHSze25uqGqMrq39oA4LjQPoli/4Nmfky5qJWVJKb2CS3RVGuzmMRmyPFv9XIHgTXOj0ALf0GGgdNgLfvboLJFyZ5ne9mX5o6PyGKRZtYIHRuMsKLvofEgLIAMXa1StdweTyHgwdSe8R/y6liJfg8IVzCHtcCBtwA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(82310400026)(36860700016)(11063799006)(261022113327099003)(261022075727099003)(260925022911599003)(260925021311599003)(261021135927099003)(260925021911599003)(261021130227099003)(261021123027099003)(261009223027099003)(56012099006)(261021121427099003)(261021133027099003)(261022115727099003)(261026135527099003)(261028144727099003)(261026130827099003)(261022105027099003)(261026140227099003)(261026121527099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	cFdpaoZLIKHV2LnHHr3zsVjKrAQalK6CcOUyTYQQkCvWBbLPLCBIiieOEIbu9DiQT5IG9Ft2uqOYV7wGHz16NzIN3zhEOr6nuUMKwWL79k5W+Z86xlORHRy9+RogYcMdOnA8LNUABrCCRf9NBjKMBPcEHgprKiGMLoMpq0/guDOlA8+LsAMp5gwNJDlT2yJ1UdqroaZp7H13X6Y9B3HMqmM1HxFLqMwLYS0PYLbwYCOxLfCVA1hPxE5B91ugcIpTcXH9PfGQbl6OHPiqN+s3bLiYlqzRXG/mEP+sJB/G7jgd1g88c5xMdAFy8tSnX0mZBLsgaUYGZQq29ba5FPQ+0uOLb43YFvNIZouKRwVznANi23ylatbG+igCh/p3WMkMIWNsQXw5XhhGmSngHmeVHXLB+MuNQYXqSK8ljgsDEAPsWj1tInoKbruKiIKcLYkl
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:15:37.1967
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e128235-7f39-44a0-52b1-08df3c5bdde5
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN6PEPF00000074.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8862
X-purgate-ID: tlsNG-bad1c0/1794006945-BD6C2034-A66280CC/0/0
X-purgate-type: clean
X-purgate-size: 6578

TPM 2.0 can be exposed over either the CRB or TIS (FIFO) interface.
Add TIS support to libacpii's current CRB support.

An updated SSDT is needed for the 0x5000 MMIO region.  Also the start
method changes.

Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/libacpi/Makefile          |  2 +-
 tools/libacpi/acpi2_0.h         |  1 +
 tools/libacpi/build.c           | 47 ++++++++++++++++++++++++---------
 tools/libacpi/libacpi.h         |  4 +++
 tools/libacpi/ssdt_tpm2_tis.asl | 25 ++++++++++++++++++
 5 files changed, 66 insertions(+), 13 deletions(-)
 create mode 100644 tools/libacpi/ssdt_tpm2_tis.asl

diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile
index 3b4c3d8c86..aa37d5662e 100644
--- a/tools/libacpi/Makefile
+++ b/tools/libacpi/Makefile
@@ -16,7 +16,7 @@ C_SRC-$(CONFIG_ARM_64) = dsdt_anycpu_arm.c
 DSDT_FILES ?= $(C_SRC-y)
 C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, $(DSDT_FILES))
 H_SRC = $(addprefix $(ACPI_BUILD_DIR)/, ssdt_s3.h ssdt_s4.h ssdt_pm.h)
-H_SRC += $(addprefix $(ACPI_BUILD_DIR)/, ssdt_tpm.h ssdt_tpm2.h ssdt_laptop_slate.h)
+H_SRC += $(addprefix $(ACPI_BUILD_DIR)/, ssdt_tpm.h ssdt_tpm2.h ssdt_tpm2_tis.h ssdt_laptop_slate.h)
 
 MKDSDT_CFLAGS-$(CONFIG_ARM_64) = -DCONFIG_ARM_64
 MKDSDT_CFLAGS-$(CONFIG_X86) = -DCONFIG_X86
diff --git a/tools/libacpi/acpi2_0.h b/tools/libacpi/acpi2_0.h
index 51623e2a8a..759be9ba43 100644
--- a/tools/libacpi/acpi2_0.h
+++ b/tools/libacpi/acpi2_0.h
@@ -126,6 +126,7 @@ struct acpi_20_tpm2 {
     uint64_t log_area_start_address;
 };
 #define TPM2_ACPI_CLASS_CLIENT      0
+#define TPM2_START_METHOD_MMIO      6
 #define TPM2_START_METHOD_CRB       7
 
 /*
diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c
index 95188e217e..14779080a7 100644
--- a/tools/libacpi/build.c
+++ b/tools/libacpi/build.c
@@ -11,6 +11,7 @@
 #include "ssdt_s4.h"
 #include "ssdt_tpm.h"
 #include "ssdt_tpm2.h"
+#include "ssdt_tpm2_tis.h"
 #include "ssdt_pm.h"
 #include "ssdt_laptop_slate.h"
 #include <xen/hvm/hvm_info_table.h>
@@ -444,17 +445,30 @@ static int construct_secondary_tables(struct acpi_ctxt *ctxt,
             break;
 
         case 2:
-            /*
-             * Check VID stored in bits 37:32 (3rd 16 bit word) of CRB
-             * identifier register.  See table 16 of TCG PC client platform
-             * TPM profile specification for TPM 2.0.
-             */
-            if ( config->crb_id[2] == 0 || config->crb_id[2] == 0xffff )
-                break;
+            if ( config->tpm_interface == ACPI_TPM_INTERFACE_TIS )
+            {
+                if ( config->tis_hdr[0] == 0 || config->tis_hdr[0] == 0xffff ||
+                     config->tis_hdr[1] == 0 || config->tis_hdr[1] == 0xffff )
+                    break;
 
-            ssdt = ctxt->mem_ops.alloc(ctxt, sizeof(ssdt_tpm2), 16);
-            if (!ssdt) return -1;
-            memcpy(ssdt, ssdt_tpm2, sizeof(ssdt_tpm2));
+                ssdt = ctxt->mem_ops.alloc(ctxt, sizeof(ssdt_tpm2_tis), 16);
+                if (!ssdt) return -1;
+                memcpy(ssdt, ssdt_tpm2_tis, sizeof(ssdt_tpm2_tis));
+            }
+            else
+            {
+                /*
+                 * Check VID stored in bits 37:32 (3rd 16 bit word) of CRB
+                 * identifier register.  See table 16 of TCG PC client
+                 * platform TPM profile specification for TPM 2.0.
+                 */
+                if ( config->crb_id[2] == 0 || config->crb_id[2] == 0xffff )
+                    break;
+
+                ssdt = ctxt->mem_ops.alloc(ctxt, sizeof(ssdt_tpm2), 16);
+                if (!ssdt) return -1;
+                memcpy(ssdt, ssdt_tpm2, sizeof(ssdt_tpm2));
+            }
             table_ptrs[nr_tables++] = ctxt->mem_ops.v2p(ctxt, ssdt);
 
             tpm2 = ctxt->mem_ops.alloc(ctxt, sizeof(struct acpi_20_tpm2), 16);
@@ -471,8 +485,17 @@ static int construct_secondary_tables(struct acpi_ctxt *ctxt,
             tpm2->header.creator_id   = ACPI_CREATOR_ID;
             tpm2->header.creator_revision = ACPI_CREATOR_REVISION;
             tpm2->platform_class = TPM2_ACPI_CLASS_CLIENT;
-            tpm2->control_area_address = TPM_CRB_CTRL_REQ;
-            tpm2->start_method = TPM2_START_METHOD_CRB;
+            if ( config->tpm_interface == ACPI_TPM_INTERFACE_TIS )
+            {
+                /* The FIFO interface has no control area. */
+                tpm2->control_area_address = 0;
+                tpm2->start_method = TPM2_START_METHOD_MMIO;
+            }
+            else
+            {
+                tpm2->control_area_address = TPM_CRB_CTRL_REQ;
+                tpm2->start_method = TPM2_START_METHOD_CRB;
+            }
             tpm2->log_area_minimum_length = TPM_LOG_SIZE;
             tpm2->log_area_start_address = TPM_LOG_AREA_ADDRESS;
 
diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h
index deda39e5db..0b40896127 100644
--- a/tools/libacpi/libacpi.h
+++ b/tools/libacpi/libacpi.h
@@ -28,6 +28,9 @@
 #define ACPI_HAS_CMOS_RTC          (1<<14)
 #define ACPI_HAS_SSDT_LAPTOP_SLATE (1<<15)
 
+#define ACPI_TPM_INTERFACE_CRB     0
+#define ACPI_TPM_INTERFACE_TIS     1
+
 struct xen_vmemrange;
 struct acpi_numa {
     uint32_t nr_vmemranges;
@@ -58,6 +61,7 @@ struct acpi_config {
     uint32_t table_flags;
     uint8_t acpi_revision;
     uint8_t tpm_version;
+    uint8_t tpm_interface; /* ACPI_TPM_INTERFACE_*, only used for TPM 2.0 */
 
     uint64_t vm_gid[2];
     unsigned long vm_gid_addr; /* OUT parameter */
diff --git a/tools/libacpi/ssdt_tpm2_tis.asl b/tools/libacpi/ssdt_tpm2_tis.asl
new file mode 100644
index 0000000000..837e50f90e
--- /dev/null
+++ b/tools/libacpi/ssdt_tpm2_tis.asl
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: LGPL-2.1-only */
+/*
+ * ssdt_tpm2_tis.asl
+ */
+
+/* SSDT for TPM 2.0 TIS Interface for Xen with Qemu device model. */
+
+DefinitionBlock ("SSDT_TPM2_TIS.aml", "SSDT", 2, "Xen", "HVM", 0)
+{
+    Device (TPM)
+    {
+        Name (_HID, "MSFT0101" /* TPM 2.0 Security Device */)  // _HID: Hardware ID
+        Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
+        {
+            Memory32Fixed (ReadWrite,
+                0xFED40000,         // Address Base
+                0x00005000,         // Address Length
+                )
+        })
+        Method (_STA, 0, NotSerialized)  // _STA: Status
+        {
+            Return (0x0F)
+        }
+    }
+}
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:15:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:15:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477481.1682931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9y-0004oG-Dz; Fri, 06 Nov 2026 23:15:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477481.1682931; Fri, 06 Nov 2026 23:15:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9y-0004o7-9W; Fri, 06 Nov 2026 23:15:50 +0000
Received: by outflank-mailman (input) for mailman id 1477481;
 Fri, 06 Nov 2026 23:15:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPT9w-0004Z2-Ip
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:15:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPT9v-00EGLl-Vo
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:15:47 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f7b-bab6-0a2a0a5309dd-0a2a450ab500-12
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:47 +0100
Received: from [52.101.48.9]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5fa1-f2d2-0a2a450a0019-34653009e761-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:47 +0100
Received: from SA9PR13CA0084.namprd13.prod.outlook.com (2603:10b6:806:23::29)
 by CHBPR12MB475823.namprd12.prod.outlook.com (2603:10b6:610:404::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:15:40 +0000
Received: from SN1PEPF000397B5.namprd05.prod.outlook.com
 (2603:10b6:806:23:cafe::4e) by SA9PR13CA0084.outlook.office365.com
 (2603:10b6:806:23::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Fri, 6
 Nov 2026 23:15:40 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SN1PEPF000397B5.mail.protection.outlook.com (10.167.248.59) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:15:40 +0000
Received: from satlexmb10.amd.com (10.181.42.219) 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.53; Fri, 6 Nov
 2026 17:15:39 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:39 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:15:38 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=LonxG4/MvoHEi+sRtcDq3aG3k5a3gjNDRTyWcocczB8pArb+7Uk89IyJOxuW/Wc+QdMqR5CRI9D2VGpDnMq5cjQI2VGmQFkpaiawugTq0Yeu/M2vEXy2vvJazKvLDPNx8hSjmxL0ZKFAy6KYWPyRvrAhf9CwvPiuk0h5QD0ly+i7BE+Awnx9cj6+eaeu/kAZC6SSkZwOn3aatVn5kFw1gfa7ofUBpSiLFQlhS89nhsqMVTAlZVyEW0eWIgPNMrC/hnqBTs5YMsvQB7l3TfcvNbugOmKKUaME8t8TBa0E6vCg97mWisdKLa3YSQU/o/7FnlZLWVXS5pUl5SYn5jeL5A==
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=7qW04KrBo1BQ1A4z0aq6PiSVs1MGzV3/rsYoQoWCzVI=;
 b=yNsNFikp1R+y5E97aCUzZR5u05BAsup7NYAqjXGnw2vHhMwOYwXW5b/26p0VzgnmVLfA3Ji3fJJuONJ6VHjOX+bx71xzmHF1AwJ6IexfpwaCrZGlI2TpwqE8ns69++BNfcaHNF4e8T8BLFAgfwcextvfjz1MKmQGUn9kr8KufQCq4+FkQCcCL1IisNqyT1b74olbTVbdJvr1+p1iiNvF9HzDZlBf34vK6MV48xw8IMoPCIfhAkEtQeISKj7ofUJ/rjnRC7e7LW3wPrKXG3iZQCCMGKB8UL5NerNMHdilVeG1RYPd5IXM/pq97znkhkbr8hBie6jVNMmOeKvy9zQwWQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7qW04KrBo1BQ1A4z0aq6PiSVs1MGzV3/rsYoQoWCzVI=;
 b=zFvq01+PpeelCRCSiyHhfH1LE9ufOKMY/yQlqyfQxNjqlcWi8wvtBWSmpqsbyE0K8yALry9o9cA1VeA6Zx1/qA8I1x9iL45mxp2MhfNDrm4kFP3qt12OEyYTtF/vVIqIV7eTrd05Lm/aK/3B5QgA3FnQ1duJmQtA36srrCdm8Gg=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Nick Rosbrook <enr0n@ubuntu.com>, George Dunlap
	<gwd@xenproject.org>, Juergen Gross <jgross@suse.com>
Subject: [PATCH 3/4] tools/libxl: add emulated TPM support backed by swtpm
Date: Fri, 6 Nov 2026 18:15:25 -0500
Message-ID: <20261106231526.482418-4-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20261106231526.482418-1-jason.andryuk@amd.com>
References: <20261106231526.482418-1-jason.andryuk@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B5:EE_|CHBPR12MB475823:EE_
X-MS-Office365-Filtering-Correlation-Id: 12aa9c87-d8c5-4586-5560-08df3c5bdf9b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|22082099003|18002099003|6133799003|10067099003|3023799007|11063799006|5023799004|261102123227099003|261026140227099003|261026121527099003|261028144727099003|261021121427099003|261022105027099003|261021123027099003|56012099006|261009223027099003|261022075727099003;
X-Microsoft-Antispam-Message-Info:
	Q0JExgQlcPTvWGYtNddg3rvBJsroePEnBfULG/X2VmR71Jmu3aRgJt0YRhC7ickeS6Q0gpgZ3ygNMdIpdbPR3POqmBkgnIBHkE8yJmja4CctCnAR9xd1y+fIAcXrOvK4ABfa7jgLwi1L0zNJ2WCTJ/CBQGt5lDqOECq+heaNKQbdU+VsKqRBESTIOIXpMIg+WBGv49Jy8LrrOSA624WqvmpOMXWMTycipFvgzNfWxiF4xRkhaUZmOQB67UmGbYtMbeCK442y+5R4eu57U2nHwKpOhXai3GHsoAGfsekQwm5Ub6hHKtQ/OG2OF9tdY713xpvUJO4v8nTTMX3vM+sdoPeHtjrPz+8ecLFGckMvHzeVejKJLNRiYnRg09kXpinriYJIHchoekNB2LiYULVjqaHbSXilbtux3dcGG+zF+ClS2CF9soPJuS3Qkc63F6KEhKv0T6KkMTwd2NHpinyl2bm8FzcziCrjqb95LaKMPl1pTEEqaX2ELPY+5K5yWVMQWMsOL+Z7iMml8lQPFlwokayAH45nvk7nV00yUuhIGIcoXqONuDaI8wqBCmKKYs3QgkwGyYEcGwJHKmShBA4U1U45w7Ylu/X17vbjfqo8QM7aRQQpHjF/U7lLClk5O7MtRCVoXsyKIlqF9L3Y53V4YIl1Nh/Ak9dvCKbOP0zdkuaMB8popvAuzlWPonx/Dax5Yg7FEX9mYCu9qEBbyD6yuw==
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)(36860700016)(23010399003)(376014)(1800799024)(22082099003)(18002099003)(6133799003)(10067099003)(3023799007)(11063799006)(5023799004)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(261021121427099003)(261022105027099003)(261021123027099003)(56012099006)(261009223027099003)(261022075727099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	HSo9L9nGUrDJ71nMJN79JxL6tZjMJkumYe9MMV+IeiSlgnWrm9NVDzrr8yt3RznjdBmxjzIoRvanX2UtA8xT8EmaV3pqLKra6Pd2HUrKSA/9w5VjSN7IrmwdneVHlqxmjT91dYlNYxjIyaLbQKmlEeYZaQYTfeCuLpdbBX5db8cZy+f2SJuWoY+zP2ByZB/BT4CYe61LiEmahrm+kkRFIxbx/ZCn31zUO2Pe/zd9S8z6iGMzIJq96NaEUDTd/e+ZnZsm4Y2k1gaoQyXzq1sJDhhN5IfbnQvc/0GDKQzEDeowM3DGSj/9JqKye72YOdTfAy0afKli+frER73HNrMPq0KxI0X8KqM0AdU7h5zOlPl5ZWKetHtu2MivM3I+Wo4tMiDXJTXw5YBXTXi8zSrbL7+ztiwzLR4kTSBr23gr7vJgasOHOo//n4yYxERmhuCQ
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:15:40.0488
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 12aa9c87-d8c5-4586-5560-08df3c5bdf9b
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:
	SN1PEPF000397B5.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CHBPR12MB475823
X-purgate-ID: tlsNG-4011c0/1794006947-514C7CFC-D715718F/0/0
X-purgate-type: clean
X-purgate-size: 24118

Add support for an emulated TPM.  QEMU emulates the device and uses
swtpm for the backend.  swtpm is started first and QEMU connects to it.

Add the xl.cfg options are:
tpm_version
tpm_statedir
tpm_statefile
tpm_interface
tpm_loglevel
tpm_swtpm_override

When tpm_version is absent, no TPM is configured.  tpm_version must be 1
or 2, and exactly one of tpm_statedir or tpm_statefile must be
specified.  tpm_statefile is only supported for swtpm 0.7 and later, so
tpm_statedir is provided for compatiblity.  tpm_interface can be either
tis or crb.  tpm_loglevel is passed to swtpm when non-zero, with swtpm
logging to /var/log/xen/swtpm-<domain>.log.  tpm_swtpm_override specifies
the swtpm executable path; otherwise swtpm is found via PATH.

On x86, TPM 1.2 only supports TIS, while TPM 2.0 may use either and
defaults to CRB.

libxl typically tracks spawned daemons through xenstore keys - like QEMU
writing its "state" key as "running".  swtpm does not write to
xenstores, so that is not used.  Instead the daemon is launched first
and then QEMU launches and connects to it.  If there is a failure,
the QEMU log messages will list tpm in the error message.

`interface` is a Go keyword, so the binding generator needs to specify
that.

Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
 docs/man/xl.cfg.5.pod.in             |  36 ++++++
 tools/golang/xenlight/gengotypes.py  |   2 +-
 tools/golang/xenlight/helpers.gen.go |  48 ++++++++
 tools/golang/xenlight/types.gen.go   |  17 +++
 tools/include/libxl.h                |  10 ++
 tools/libs/light/libxl_create.c      |  46 +++++++-
 tools/libs/light/libxl_dm.c          | 161 +++++++++++++++++++++++++++
 tools/libs/light/libxl_domain.c      |   3 +
 tools/libs/light/libxl_internal.h    |   4 +
 tools/libs/light/libxl_types.idl     |  17 +++
 tools/libs/light/libxl_x86.c         |  18 +++
 tools/xl/xl_parse.c                  |  20 ++++
 12 files changed, 380 insertions(+), 2 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index b19c25c8d1..c12d2dc4db 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -821,6 +821,42 @@ value is optional if this is a guest domain.
 
 =back
 
+=item B<tpm_version=NUMBER>
+
+Provides an emulated TPM to a QEMU-based HVM guest, backed by B<swtpm(8)>.
+The TPM version to emulate is either B<1> for TPM 1.2 or B<2> for TPM 2.0.
+When this option is not specified, no TPM is provided and the other
+B<tpm_*> options are ignored.
+
+One of B<tpm_statefile> or B<tpm_statedir> is required, but not both.
+
+=item B<tpm_statefile="PATH">
+
+Path to a single file in which B<swtpm> stores the persistent TPM state.
+This uses the C<--tpmstate backend-uri=file://PATH> option added in swtpm
+version 0.7.0.
+
+=item B<tpm_statedir="PATH">
+
+Path to a directory in which B<swtpm> stores the persistent TPM state.
+
+=item B<tpm_interface="tis"|"crb">
+
+The TPM interface presented to the guest.  B<tis> is the TPM Interface
+Specification (FIFO) interface and B<crb> is the Command Response Buffer
+interface.  B<tpm_version=1> only supports B<tis>, while B<tpm_version=2>
+supports either and defaults to B<crb>.
+
+=item B<tpm_swtpm_override="PATH">
+
+Path to the B<swtpm> executable.  By default, B<swtpm> is searched for in
+B<PATH>.
+
+=item B<tpm_loglevel=NUMBER>
+
+The B<swtpm> log level. When non-zero, B<swtpm> logs to
+F</var/log/xen/swtpm-DOMAIN.log>. Defaults to B<0> (no log).
+
 =item B<p9=[ "9PFS_SPEC_STRING", "9PFS_SPEC_STRING", ...]>
 
 Creates a Xen 9pfs connection to share a filesystem from the backend to the
diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/gengotypes.py
index e4eb7ca1c1..628772d45d 100644
--- a/tools/golang/xenlight/gengotypes.py
+++ b/tools/golang/xenlight/gengotypes.py
@@ -28,7 +28,7 @@ builtin_type_names = {
 }
 
 # Some go keywords that conflict with field names in libxl structs.
-go_keywords = ['type', 'func']
+go_keywords = ['type', 'func', 'interface']
 
 go_builtin_types = ['bool', 'string', 'int', 'byte',
                     'uint16', 'uint32', 'uint64']
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
index 6ab23a708f..58e6179374 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -1076,6 +1076,48 @@ return fmt.Errorf("converting field Quota: %v", err)
  return nil
  }
 
+// NewTpm returns an instance of Tpm initialized with defaults.
+func NewTpm() (*Tpm, error) {
+var (
+x Tpm
+xc C.libxl_tpm)
+
+C.libxl_tpm_init(&xc)
+defer C.libxl_tpm_dispose(&xc)
+
+if err := x.fromC(&xc); err != nil {
+return nil, err }
+
+return &x, nil}
+
+func (x *Tpm) fromC(xc *C.libxl_tpm) error {
+ x.Statefile = C.GoString(xc.statefile)
+x.Statedir = C.GoString(xc.statedir)
+x.SwtpmOverride = C.GoString(xc.swtpm_override)
+x.Version = int(xc.version)
+x.Loglevel = int(xc.loglevel)
+x.Interface = TpmInterface(xc._interface)
+
+ return nil}
+
+func (x *Tpm) toC(xc *C.libxl_tpm) (err error){defer func(){
+if err != nil{
+C.libxl_tpm_dispose(xc)}
+}()
+
+if x.Statefile != "" {
+xc.statefile = C.CString(x.Statefile)}
+if x.Statedir != "" {
+xc.statedir = C.CString(x.Statedir)}
+if x.SwtpmOverride != "" {
+xc.swtpm_override = C.CString(x.SwtpmOverride)}
+xc.version = C.int(x.Version)
+xc.loglevel = C.int(x.Loglevel)
+xc._interface = C.libxl_tpm_interface(x.Interface)
+
+ return nil
+ }
+
 // NewDomainBuildInfo returns an instance of DomainBuildInfo initialized with defaults.
 func NewDomainBuildInfo(dtype DomainType) (*DomainBuildInfo, error) {
 var (
@@ -1242,6 +1284,9 @@ if err := x.DmRestrict.fromC(&xc.dm_restrict);err != nil {
 return fmt.Errorf("converting field DmRestrict: %v", err)
 }
 x.Tee = TeeType(xc.tee)
+if err := x.Tpm.fromC(&xc.tpm);err != nil {
+return fmt.Errorf("converting field Tpm: %v", err)
+}
 x.Type = DomainType(xc._type)
 switch x.Type{
 case DomainTypeHvm:
@@ -1626,6 +1671,9 @@ if err := x.DmRestrict.toC(&xc.dm_restrict); err != nil {
 return fmt.Errorf("converting field DmRestrict: %v", err)
 }
 xc.tee = C.libxl_tee_type(x.Tee)
+if err := x.Tpm.toC(&xc.tpm); err != nil {
+return fmt.Errorf("converting field Tpm: %v", err)
+}
 xc._type = C.libxl_domain_type(x.Type)
 switch x.Type{
 case DomainTypeHvm:
diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/types.gen.go
index 39bf9962d1..55b02ffcd7 100644
--- a/tools/golang/xenlight/types.gen.go
+++ b/tools/golang/xenlight/types.gen.go
@@ -553,6 +553,22 @@ type XsQuotaList struct {
 Quota []XsQuotaItem
 }
 
+type TpmInterface int
+const(
+TpmInterfaceDefault TpmInterface = 0
+TpmInterfaceTis TpmInterface = 1
+TpmInterfaceCrb TpmInterface = 2
+)
+
+type Tpm struct {
+Statefile string
+Statedir string
+SwtpmOverride string
+Version int
+Loglevel int
+Interface TpmInterface
+}
+
 type DomainBuildInfo struct {
 MaxVcpus int
 AvailVcpus Bitmap
@@ -612,6 +628,7 @@ NestedHvm Defbool
 Apic Defbool
 DmRestrict Defbool
 Tee TeeType
+Tpm Tpm
 Type DomainType
 TypeUnion DomainBuildInfoTypeUnion
 ArchArm struct {
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index d294fb36bd..8b431b708d 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1563,6 +1563,16 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
  */
 #define LIBXL_HAVE_XENSTORE_QUOTA
 
+/*
+ * LIBXL_HAVE_TPM
+ *
+ * If this is defined the tpm member of struct domain_build_info is
+ * available.  When its version is non-zero, libxl starts swtpm to
+ * provide an emulated TPM to a QEMU-based HVM guest.  Its interface
+ * member selects the TPM interface (TIS or CRB) presented to the guest.
+ */
+#define LIBXL_HAVE_TPM
+
 typedef char **libxl_string_list;
 void libxl_string_list_dispose(libxl_string_list *sl);
 int libxl_string_list_length(const libxl_string_list *sl);
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index a8b0c8c500..94a2a0129f 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -230,6 +230,43 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
     if (!b_info->event_channels)
         b_info->event_channels = 1023;
 
+    if (b_info->tpm.version) {
+        if (b_info->tpm.version != 1 && b_info->tpm.version != 2) {
+            LOG(ERROR, "TPM version must be 1 or 2.");
+            return ERROR_INVAL;
+        }
+
+        if (b_info->tpm.statefile && !b_info->tpm.statefile[0]) {
+            LOG(ERROR, "TPM statefile must not be empty.");
+            return ERROR_INVAL;
+        }
+
+        if (b_info->tpm.statedir && !b_info->tpm.statedir[0]) {
+            LOG(ERROR, "TPM statedir must not be empty.");
+            return ERROR_INVAL;
+        }
+
+        if (b_info->tpm.swtpm_override && !b_info->tpm.swtpm_override[0]) {
+            LOG(ERROR, "TPM swtpm_override must not be empty.");
+            return ERROR_INVAL;
+        }
+
+        if (b_info->tpm.statefile && b_info->tpm.statedir) {
+            LOG(ERROR, "Only one of TPM statefile or statedir may be specified.");
+            return ERROR_INVAL;
+        }
+
+        if (!b_info->tpm.statefile && !b_info->tpm.statedir) {
+            LOG(ERROR, "TPM statefile or statedir must be specified.");
+            return ERROR_INVAL;
+        }
+
+        if (b_info->tpm.loglevel < 0) {
+            LOG(ERROR, "TPM loglevel must not be negative.");
+            return ERROR_INVAL;
+        }
+    }
+
     rc = libxl_get_physinfo(CTX, &info);
     if (rc) {
         LOG(ERROR, "failed to get hypervisor info");
@@ -487,7 +524,7 @@ int libxl__domain_build(libxl__gc *gc,
         vments[4] = "start_time";
         vments[5] = GCSPRINTF("%jd.%02d", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000);
 
-        localents = libxl__calloc(gc, 13, sizeof(char *));
+        localents = libxl__calloc(gc, 17, sizeof(char *));
         i = 0;
         localents[i++] = "platform/acpi";
         localents[i++] = libxl__acpi_defbool_val(info) ? "1" : "0";
@@ -510,6 +547,13 @@ int libxl__domain_build(libxl__gc *gc,
         }
         localents[i++] = "platform/device-model";
         localents[i++] = (char *)libxl_device_model_version_to_string(info->device_model_version);
+        if (info->tpm.version) {
+            localents[i++] = "platform/tpm_version";
+            localents[i++] = GCSPRINTF("%d", info->tpm.version);
+            localents[i++] = "platform/tpm-interface";
+            localents[i++] = (char *)libxl_tpm_interface_to_string(
+                                         info->tpm.interface);
+        }
 
         break;
     case LIBXL_DOMAIN_TYPE_PV:
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 511ec76a65..843b8e29eb 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -931,6 +931,22 @@ out:
     return rc;
 }
 
+static const char *libxl__swtpm_socket_path(libxl__gc *gc, uint32_t domid)
+{
+    return GCSPRINTF("%s/swtpm-%u.sock", libxl__run_dir_path(), domid);
+}
+
+static void libxl__dm_add_tpm_args(libxl__gc *gc, flexarray_t *dm_args,
+                                   int guest_domid)
+{
+    const char *sock = libxl__swtpm_socket_path(gc, guest_domid);
+
+    flexarray_append_pair(dm_args, "-chardev",
+                          GCSPRINTF("socket,id=chrtpm,path=%s", sock));
+    flexarray_append_pair(dm_args, "-tpmdev",
+                          "emulator,id=tpm0,chardev=chrtpm");
+}
+
 static int libxl__build_device_model_args_new(libxl__gc *gc,
     const char *dm, int guest_domid,
     const libxl_domain_config *guest_config,
@@ -1615,6 +1631,14 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
     if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) {
         flexarray_append_pair(dm_envs, "XEN_DOMAIN_ID", GCSPRINTF("%d", guest_domid));
 
+        if (b_info->tpm.version) {
+            libxl__dm_add_tpm_args(gc, dm_args, guest_domid);
+            flexarray_append_pair(dm_args, "-device",
+                GCSPRINTF("%s,tpmdev=tpm0",
+                          b_info->tpm.interface == LIBXL_TPM_INTERFACE_CRB ?
+                          "tpm-crb" : "tpm-tis"));
+        }
+
         if (b_info->u.hvm.hdtype == LIBXL_HDTYPE_AHCI)
             flexarray_append_pair(dm_args, "-device", "ahci,id=ahci0");
         for (i = 0; i < num_disks; i++) {
@@ -1980,6 +2004,75 @@ static int libxl__write_stub_dmargs(libxl__gc *gc,
     return rc;
 }
 
+/*
+ * Build the swtpm command line.  swtpm is run in --daemon mode: the
+ * process we exec forks the actual daemon and exits once the control
+ * socket is ready, so QEMU can connect to it immediately afterwards.
+ */
+static char **libxl__swtpm_argv(libxl__gc *gc, uint32_t domid,
+                                const libxl_domain_config *guest_config)
+{
+    const libxl_domain_build_info *b_info = &guest_config->b_info;
+    const libxl_domain_create_info *c_info = &guest_config->c_info;
+    const char *sock = libxl__swtpm_socket_path(gc, domid);
+    const char *pidfile = GCSPRINTF("%s/swtpm-%u.pid",
+                                    libxl__run_dir_path(), domid);
+    flexarray_t *args = flexarray_make(gc, 16, 1);
+    const char *tpmstate;
+
+    if (b_info->tpm.statefile)
+        tpmstate = GCSPRINTF("backend-uri=file://%s", b_info->tpm.statefile);
+    else
+        tpmstate = GCSPRINTF("dir=%s", b_info->tpm.statedir);
+
+    flexarray_vappend(args,
+                      b_info->tpm.swtpm_override ?: "swtpm", "socket",
+                      "--tpmstate", tpmstate,
+                      "--ctrl", GCSPRINTF("type=unixio,path=%s", sock),
+                      NULL);
+    if (b_info->tpm.version == 2)
+        flexarray_append(args, "--tpm2");
+    if (b_info->tpm.loglevel)
+        flexarray_vappend(args, "--log",
+            GCSPRINTF("file=%s/swtpm-%s.log,level=%d",
+                      XEN_LOG_DIR, c_info->name, b_info->tpm.loglevel),
+            NULL);
+    if (b_info->device_model_user)
+        flexarray_vappend(args, "--runas", b_info->device_model_user, NULL);
+    flexarray_vappend(args, "--daemon",
+                      "--pid", GCSPRINTF("file=%s", pidfile), NULL);
+    flexarray_append(args, NULL);
+
+    return (char **)flexarray_contents(args);
+}
+
+int libxl__destroy_swtpm(libxl__gc *gc, uint32_t domid)
+{
+    const char *pidfile = GCSPRINTF("%s/swtpm-%u.pid",
+                                    libxl__run_dir_path(), domid);
+    const char *sock = libxl__swtpm_socket_path(gc, domid);
+    void *data = NULL;
+    int datalen = 0;
+    pid_t pid;
+
+    /* No pidfile means swtpm was never started for this domain. */
+    if (libxl_read_file_contents(CTX, pidfile, &data, &datalen))
+        return 0;
+
+    pid = data ? atoi(libxl__strndup(gc, data, datalen)) : 0;
+    free(data);
+
+    if (pid > 0 && kill(pid, SIGTERM) && errno != ESRCH)
+        LOGED(ERROR, domid, "failed to kill swtpm [%d]", pid);
+
+    if (unlink(pidfile) && errno != ENOENT)
+        LOGED(ERROR, domid, "failed to remove %s", pidfile);
+    if (unlink(sock) && errno != ENOENT)
+        LOGED(ERROR, domid, "failed to remove %s", sock);
+
+    return 0;
+}
+
 static int libxl__store_libxl_entry(libxl__gc *gc, uint32_t domid,
                                     const char *name, const char *value)
 {
@@ -1994,6 +2087,7 @@ static void dmss_init(libxl__dm_spawn_state *dmss)
 {
     libxl__ev_qmp_init(&dmss->qmp);
     libxl__ev_time_init(&dmss->timeout);
+    libxl__ev_child_init(&dmss->swtpm_child);
 }
 
 static void dmss_dispose(libxl__gc *gc, libxl__dm_spawn_state *dmss)
@@ -2629,6 +2723,10 @@ static void device_model_probe_spawn_outcome(libxl__egc *egc,
      libxl__dm_spawn_state *dmss, int rc);
 static void device_model_launch(libxl__egc *egc,
     libxl__dm_spawn_state *dmss, int rc);
+static void device_model_swtpm_cb(libxl__egc *egc,
+    libxl__ev_child *child, pid_t pid, int status);
+static void device_model_spawn_qemu(libxl__egc *egc,
+    libxl__dm_spawn_state *dmss, int rc);
 static void device_model_postconfig_chardev(libxl__egc *egc,
     libxl__ev_qmp *qmp, const libxl__json_object *response, int rc);
 static void device_model_postconfig_vnc(libxl__egc *egc,
@@ -2875,6 +2973,69 @@ static void device_model_probe_spawn_outcome(libxl__egc *egc,
 
 static void device_model_launch(libxl__egc *egc,
     libxl__dm_spawn_state *dmss, int rc)
+{
+    STATE_AO_GC(dmss->spawn.ao);
+    const libxl_domain_build_info *b_info = &dmss->guest_config->b_info;
+    const int domid = dmss->guest_domid;
+    pid_t pid;
+
+    if (rc)
+        goto out;
+
+    if (!b_info->tpm.version) {
+        device_model_spawn_qemu(egc, dmss, 0);
+        return;
+    }
+
+    /* Remove any stale pidfile so teardown can't read a previous pid. */
+    rc = libxl__remove_file(gc, GCSPRINTF("%s/swtpm-%u.pid",
+                                          libxl__run_dir_path(), domid));
+    if (rc)
+        goto out;
+
+    pid = libxl__ev_child_fork(gc, &dmss->swtpm_child, device_model_swtpm_cb);
+    if (pid == -1) {
+        rc = ERROR_FAIL;
+        goto out;
+    }
+    if (!pid) {
+        /* child */
+        char **argv = libxl__swtpm_argv(gc, domid, dmss->guest_config);
+        int null = open("/dev/null", O_RDWR);
+        char **arg;
+
+        LOGD(DEBUG, domid, "Spawning swtpm %s with arguments:", argv[0]);
+        for (arg = argv; *arg; arg++)
+            LOGD(DEBUG, domid, "  %s", *arg);
+
+        setsid();
+        libxl__exec(gc, null, null, null, argv[0], argv, NULL);
+        /* not reached */
+    }
+    return;
+
+out:
+    device_model_spawn_qemu(egc, dmss, rc);
+}
+
+static void device_model_swtpm_cb(libxl__egc *egc,
+    libxl__ev_child *child, pid_t pid, int status)
+{
+    libxl__dm_spawn_state *dmss = CONTAINER_OF(child, *dmss, swtpm_child);
+    STATE_AO_GC(dmss->spawn.ao);
+    int rc = 0;
+
+    if (status) {
+        libxl_report_child_exitstatus(CTX, LIBXL__LOG_ERROR, "swtpm",
+                                      pid, status);
+        rc = ERROR_FAIL;
+    }
+
+    device_model_spawn_qemu(egc, dmss, rc);
+}
+
+static void device_model_spawn_qemu(libxl__egc *egc,
+    libxl__dm_spawn_state *dmss, int rc)
 {
     STATE_AO_GC(dmss->spawn.ao);
     libxl_ctx *ctx = CTX;
diff --git a/tools/libs/light/libxl_domain.c b/tools/libs/light/libxl_domain.c
index 37fcd92871..5f2ca8da7d 100644
--- a/tools/libs/light/libxl_domain.c
+++ b/tools/libs/light/libxl_domain.c
@@ -1275,6 +1275,9 @@ static void dm_destroy_cb(libxl__egc *egc,
         libxl__qmp_cleanup(gc, target_domid);
     }
 
+    /* Terminate the emulated TPM backend, if any.  No-op otherwise. */
+    libxl__destroy_swtpm(gc, domid);
+
     dis->drs.ao = ao;
     dis->drs.domid = domid;
     dis->drs.callback = devices_destroy_cb;
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index b65e0064b9..c561d3bc33 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -4106,6 +4106,7 @@ struct libxl__dm_spawn_state {
     libxl__spawn_state spawn;
     libxl__ev_qmp qmp;
     libxl__ev_time timeout;
+    libxl__ev_child swtpm_child;
     libxl__dm_resume_state dmrs;
     libxl__qemu_available_opts qemu_opts;
     const char *dm;
@@ -4123,6 +4124,9 @@ _hidden void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state*);
  */
 _hidden int libxl__local_dm_preexec_restrict(libxl__gc *gc);
 
+/* swtpm (emulated TPM) backend for a QEMU-based HVM guest. */
+_hidden int libxl__destroy_swtpm(libxl__gc *gc, uint32_t domid);
+
 /* Stubdom device models. */
 
 typedef struct {
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index ce697303b6..dc6790b821 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -584,6 +584,22 @@ libxl_xs_quota_list = Struct("xs_quota_list", [
     ("quota", Array(libxl_xs_quota_item, "num_quota"))
     ])
 
+libxl_tpm_interface = Enumeration("tpm_interface", [
+    (0, "default"),
+    (1, "tis"),
+    (2, "crb"),
+    ])
+
+# Emulated TPM backed by swtpm.  A version of 0 means no TPM.
+libxl_tpm = Struct("tpm", [
+    ("statefile", string),
+    ("statedir",  string),
+    ("swtpm_override", string),
+    ("version",   integer, {'init_val': '0'}),
+    ("loglevel",  integer, {'init_val': '0'}),
+    ("interface", libxl_tpm_interface),
+    ])
+
 libxl_domain_build_info = Struct("domain_build_info",[
     ("max_vcpus",       integer),
     ("avail_vcpus",     libxl_bitmap),
@@ -658,6 +674,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
     ("apic",             libxl_defbool),
     ("dm_restrict",      libxl_defbool),
     ("tee",              libxl_tee_type),
+    ("tpm",              libxl_tpm),
     ("u", KeyedUnion(None, libxl_domain_type, "type",
                 [("hvm", Struct(None, [("firmware",         string),
                                        ("bios",             libxl_bios_type),
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index 9e8b48372d..3182cfc9df 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -825,6 +825,24 @@ int libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
     libxl_defbool_setdefault(&b_info->arch_x86.msr_relaxed, false);
     libxl_defbool_setdefault(&b_info->trap_unmapped_accesses, false);
 
+    if (b_info->tpm.version && b_info->type == LIBXL_DOMAIN_TYPE_PVH) {
+        LOG(ERROR, "TPM is not supported for PVH guests on x86.");
+        return ERROR_INVAL;
+    }
+
+    /* TPM 1.2 only supports TIS.  TPM 2.0 supports TIS or CRB. */
+    if (b_info->tpm.version) {
+        if (b_info->tpm.interface == LIBXL_TPM_INTERFACE_DEFAULT)
+            b_info->tpm.interface = b_info->tpm.version == 2 ?
+                                    LIBXL_TPM_INTERFACE_CRB :
+                                    LIBXL_TPM_INTERFACE_TIS;
+        if (b_info->tpm.version == 1 &&
+            b_info->tpm.interface != LIBXL_TPM_INTERFACE_TIS) {
+            LOG(ERROR, "TPM version 1 only supports the tis interface.");
+            return ERROR_INVAL;
+        }
+    }
+
     if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) {
         /*
          * The config parameter "altp2m" replaces the parameter "altp2mhvm".
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 0ccece3e8a..1fed322380 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -3060,6 +3060,26 @@ skip_usbdev:
         }
     }
 
+    if (!xlu_cfg_get_long(config, "tpm_version", &l, 0)) {
+        b_info->tpm.version = l;
+
+        xlu_cfg_replace_string(config, "tpm_statefile",
+                               &b_info->tpm.statefile, 0);
+        xlu_cfg_replace_string(config, "tpm_statedir",
+                               &b_info->tpm.statedir, 0);
+        xlu_cfg_replace_string(config, "tpm_swtpm_override",
+                               &b_info->tpm.swtpm_override, 0);
+        if (!xlu_cfg_get_long(config, "tpm_loglevel", &l, 0))
+            b_info->tpm.loglevel = l;
+
+        if (!xlu_cfg_get_string(config, "tpm_interface", &buf, 0) &&
+            (libxl_tpm_interface_from_string(buf, &b_info->tpm.interface) ||
+             b_info->tpm.interface == LIBXL_TPM_INTERFACE_DEFAULT)) {
+            fprintf(stderr, "xl: tpm_interface must be tis or crb\n");
+            exit(EXIT_FAILURE);
+        }
+    }
+
     if (!xlu_cfg_get_string (config, "sve", &buf, 1)) {
         e = libxl_sve_type_from_string(buf, &b_info->arch_arm.sve_vl);
         if (e) {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:15:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:15:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477479.1682914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9v-0004OM-Sp; Fri, 06 Nov 2026 23:15:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477479.1682914; Fri, 06 Nov 2026 23:15:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9v-0004OF-Nk; Fri, 06 Nov 2026 23:15:47 +0000
Received: by outflank-mailman (input) for mailman id 1477479;
 Fri, 06 Nov 2026 23:15:46 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPT9u-0004HM-AH
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:15:46 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPT9t-008Qrn-GA
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:15:45 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f7e-8faa-0a2a0a5109dd-0a2a4508d6ce-14
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:45 +0100
Received: from [52.101.57.1]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f9f-f659-0a2a45080019-34653901627f-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:44 +0100
Received: from BN1PR14CA0013.namprd14.prod.outlook.com (2603:10b6:408:e3::18)
 by DS0PR12MB7945.namprd12.prod.outlook.com (2603:10b6:8:153::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:15:40 +0000
Received: from BN6PEPF00000074.namprd03.prod.outlook.com
 (2603:10b6:408:e3:cafe::4a) by BN1PR14CA0013.outlook.office365.com
 (2603:10b6:408:e3::18) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:15:39 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN6PEPF00000074.mail.protection.outlook.com (10.167.248.201) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:15:39 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:38 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:38 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:15:37 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=NLRG5euIk9mGamh/0gxcfvr2Rr4cLw/0mg8sfN92D0e/shSksgqn+xXK0tj51bb0MEM/JyVCYG60gxrbDs1o5/3ChVhDxe8R84r03aPmNjLywUdv7bkFFwTNXC/+B9BoEzjbS1b9OvoMhePENfo+gqTeFv6qQThXUyrZqRstCUEAG2Esdbs+kF3MT+8tw3u7OYOz0wrBhfu5UhJTol60XLZ9H85LSAfAu79FAb6ItOqmmiKzR2MkNtnmKX511nal+axsS7OpXuOfU5lgZR69U6/v0X3dh0+A6m/ICxA6p4GKDMLwARshIUWB206ciRvJ1yI8PKzC+8MyYsnFjDy2nA==
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=A1DcHBs561t0kBi4qPFs+lEMif9+fpnNikLV7MEXHPs=;
 b=hMdV+H5yNEBF3uNTbDS+xbKfIMV6sulPE7/mYrAMzUq2PSdv70y8Kn0FkmNu65R4cqSgDPIOX+w4Nn+ZJ/qY+Qj+8UV4Aw5DaFHWr9V3d440zw01XkQ4KCO1BgCWi7r5prU0P3XOaKtrulQ8Vr34iLtrw/GQpy6tnMw7MPDm9WRj3axe7rhSXFPszaup1N6TZWvClvfUNBd5R7Mzi3zxMqi63DCao5fcEkrTDcy2IJPprX+aZ5mY6IyFJwQBSsgY7bMYzXdg9n8yagm6m5dsOmKZGkyibfBOa+rSBf4o4taMIsnDpW6ldw1iAFlq9zxwsZE1GV2KCXfj4MkA6E0aWg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=A1DcHBs561t0kBi4qPFs+lEMif9+fpnNikLV7MEXHPs=;
 b=H7Ef76yEIGjfeCWquGvtzFvxMiH77hbsU2PCjHXDTW9pogQR3oqygpPF0l4me2um31ESRE715A2/2VRsTKdLK1ypp+GYTIEXS4sm0Tzc4uQhGFSVMXacsthwX1hQghjaXKfn9kcRKMS0h5k+6u7W+NWaC2fNfjF7gqrc/LMg96U=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Anthony PERARD
	<anthony.perard@vates.tech>
Subject: [PATCH 2/4] hvmloader: Support the TIS interface for TPM 2.0
Date: Fri, 6 Nov 2026 18:15:24 -0500
Message-ID: <20261106231526.482418-3-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20261106231526.482418-1-jason.andryuk@amd.com>
References: <20261106231526.482418-1-jason.andryuk@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN6PEPF00000074:EE_|DS0PR12MB7945:EE_
X-MS-Office365-Filtering-Correlation-Id: 689d8225-e1dc-4205-6e44-08df3c5bdf62
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|23010399003|36860700016|18002099003|22082099003|11063799006|56012099006|261102123227099003|261021121427099003|261021123027099003|261026121527099003|261009223027099003|10067099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	GJY1Y3FI5xyGdqhYHz6N2RaHH4vCXKHGxBrYMNrcs63+6kC3C95u7Ak/cmRkJwAXThlsFA8LAUPZg7/e0Uo5Ytj9jo+Q4DdbL5Wmj3mAY5CfO17ZCBPuc+d/yWshqnT26WW7lxcOmiaPclN7cswTQQVLnmCA7uKZWLd9etMlkHHISuUoF5grK7/QhW06aXwpowXbyvf7S3WH24EYZ6tRIHTWlLin2Yvzi/9/j2optpPkKQVTdPf7uQEHIWeR+8gdfS71oZ+LLmFemhAD+Ekg5WEeinJsjwuaNjcP53NY7Z3Wbd7UyFv+AwTBdGibcSN8QMtxs3LdW4MfGixkL3d/bHalXTWKyMEOpuoH8IXHcRcBOTsn6bqD4N5fP9HlJ79gioY7WaM3HOJIdKa7d+d7c2AMgobmy0++xndKs08oRsG6ohQtn5EXK5eTtA7PK8mwx3xj/E6Z/VrVko9WUAz1wDp1sEyLlY+vz5sX+z4IGMR+f5M4C5wIRX/Q4LvMu1smYDHCY6K8hjpm83ipaVR9K6I344S5PnMm1xJA2sRG9xEDbXU6BGw47Z8ER5dESLblXBlRqqbx8AEldpxeQOqVDrpw6EGNOJ1WNnamy7cg34eShC7n0S1UrtMH4jEAwOyBNbHwfol9WJ2y041YfzpAKUD3dMo0HKM1prAiWsyT0GmtLRz/MCurAfFieaZzbYeGlJWHA58Y0EnuSMyQDdgfNA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(23010399003)(36860700016)(18002099003)(22082099003)(11063799006)(56012099006)(261102123227099003)(261021121427099003)(261021123027099003)(261026121527099003)(261009223027099003)(10067099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	vFmdtveJr1yVyyM3/Yr66xQs+KMnW+Vh9M85cbgsnNEQ11mETBtGoASXS8kq1ZwJ1uLHSuHsVROm2mZyVBdL46AtJw1JklBhJqWEKLuO8H63uAl3KZpbqURDtXu13qi7IVUyW+IXjXgGFWUK9AOhKtqUxKQgdB+SMiJSwTHZIvC03EvZIZpBcSg0RZdRxJ2/zX1rAufiTbodddUvIGt3miIzhxNUl30qWeMlG3ZYIhNMZXGWr6dozIP9yta/1XgPNRAuQuxOLgwcbLhPHRelYifDkAYCN+EoxprGwWaEYQ+JGPCh/h2lxgGBsYIkwQicxQQJmkCd578g8AhzpuO0KQcj+6gURCVe8lypkLbpN6dPIxl8LQaKuem7SIqonIS2XZvdF/Tsn0dDn2RKYoynLweapjhJuu08c8vnYLPhnC8+ETnyBc5tGvupcf1lSsua
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:15:39.6936
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 689d8225-e1dc-4205-6e44-08df3c5bdf62
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN6PEPF00000074.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7945
X-purgate-ID: tlsNG-c1860d/1794006945-CFED287B-5A11E1D3/0/0
X-purgate-type: clean
X-purgate-size: 2774

Read platform/tpm-interface to determine whether a TPM 2.0 device uses
the TIS or CRB interface, and pass it to libacpi so the matching SSDT
and TPM2 table are built.  The key defaults to "crb" when absent,
preserving the existing behaviour.  TPM 1.2 always uses TIS.

Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
tpm-interface is inconsistent with tpm_version, but it seems like "-" is
more common than "_".

 docs/misc/xenstore-paths.pandoc | 12 +++++++++++-
 tools/firmware/hvmloader/util.c | 12 +++++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/docs/misc/xenstore-paths.pandoc b/docs/misc/xenstore-paths.pandoc
index b8b02e007a..c24ffe342e 100644
--- a/docs/misc/xenstore-paths.pandoc
+++ b/docs/misc/xenstore-paths.pandoc
@@ -280,10 +280,20 @@ circumstances where the generation ID needs to be changed.
 The TPM version to be probed for.
 
 A value of 1 indicates to probe for TPM 1.2, whereas a value of 2
-indicates that a TPM 2.0 using CRB should be probed.
+indicates that a TPM 2.0 should be probed, using the interface given by
+~/platform/tpm-interface.
 A value of 0 or an invalid value will result in no TPM being probed.
 If unset, a default of 1 is assumed.
 
+#### ~/platform/tpm-interface = ("tis"|"crb") [HVM,INTERNAL]
+
+The TPM interface to be probed for when ~/platform/tpm_version is 2.
+
+A value of "tis" indicates the TPM Interface Specification (FIFO)
+interface, whereas "crb" indicates the Command Response Buffer
+interface.  If unset or set to any other value, "crb" is assumed.
+TPM 1.2 always uses the TIS interface and ignores this key.
+
 ### Frontend device paths
 
 Paravirtual device frontends are generally specified by their own
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index e651342681..fe3e6ab1b9 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -922,7 +922,17 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
 
         case 2:
             config->table_flags |= ACPI_HAS_TPM;
-            config->crb_id = (uint16_t *)TPM_CRB_INTF_ID;
+            if ( !strcmp(xenstore_read("platform/tpm-interface", "crb"),
+                         "tis") )
+            {
+                config->tis_hdr = (uint16_t *)ACPI_TIS_HDR_ADDRESS;
+                config->tpm_interface = ACPI_TPM_INTERFACE_TIS;
+            }
+            else
+            {
+                config->crb_id = (uint16_t *)TPM_CRB_INTF_ID;
+                config->tpm_interface = ACPI_TPM_INTERFACE_CRB;
+            }
 
             mem_hole_populate_ram(TPM_LOG_AREA_ADDRESS >> PAGE_SHIFT,
                                   TPM_LOG_SIZE >> PAGE_SHIFT);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:15:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:15:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477478.1682904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9t-0004Bu-Kh; Fri, 06 Nov 2026 23:15:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477478.1682904; Fri, 06 Nov 2026 23:15:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPT9t-0004Bm-Gm; Fri, 06 Nov 2026 23:15:45 +0000
Received: by outflank-mailman (input) for mailman id 1477478;
 Fri, 06 Nov 2026 23:15:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPT9s-0004Bg-1d
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:15:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPT9r-00EGOA-El
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:15:43 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f90-e002-0a2a0a5209dd-0a2a4504b922-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:43 +0100
Received: from [52.101.53.26]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f9d-b57f-0a2a45040019-3465351aa0bc-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:42 +0100
Received: from BN1PR14CA0024.namprd14.prod.outlook.com (2603:10b6:408:e3::29)
 by PH7PR12MB8014.namprd12.prod.outlook.com (2603:10b6:510:27c::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:15:36 +0000
Received: from BN6PEPF00000074.namprd03.prod.outlook.com
 (2603:10b6:408:e3:cafe::78) by BN1PR14CA0024.outlook.office365.com
 (2603:10b6:408:e3::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:15:36 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN6PEPF00000074.mail.protection.outlook.com (10.167.248.201) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:15:35 +0000
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:35 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:15:34 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=a/sSyjLAGfumVsdpUUC/Is7dfKjvAsaPHafqrgv1kY/Euodm8VzWctWcAJUsbDcamrgybBmnutcqpYtSJj6YOxqy7SDoymrb5a8g66Jyjbf1SCpNh7uMFjwnpl0HYpGWI/sxI9jeeDb1vajjGzC7Kvi66rRB4IMS4B6y0L6jSLhqkpZfxbt7deVxIuhsYCyuBCrEwBKRVQjBbtvUFuhrRMOG78uWdeXIfzsj35fH/hmjppu6WdBRi6ULbi4E7SjUCrp6WU5PhLtbA+YzvWgMAziHHZHknVMM+z8PcuWS7lTPOXEll5mKkFpFvkkS46MNtYPbSshijkkc1efdYHb2/g==
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=kxqQhZqwHsXHOKm0rECYycmd2JxoNJc4/VPLdaKqBJs=;
 b=KhuCzuzW3JFufXEBjRjY1UEAITx5NsW2U9cQgHtl+lMv+1ToWA1L1VFhDh0TqhaHBpZ72JWIjawARI8YDH/TNBPiJ/dOE06oEtedjyZIOmh3F/R4FOLDzS72Q7xV+nkyyJDvCm9fYJaIGUjkUoF3teaUq1Hu4+Fue8278mKBquw+Pqwv2qTHF+Q9c9SnBv77gpUH0hvWWjYqn0CYKxZGt3c1B8Mn9ZZLXxwR6waMjs5guwkPzbs9tD3dddseZbRH0xUtAj36XyecjYf3SmPwIQ+f4vLpPcSLwuBoq8zHZUzdu1ClJTVXr2QmzIDLWyVp6/a33qBfupswgwTrP0K5sQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kxqQhZqwHsXHOKm0rECYycmd2JxoNJc4/VPLdaKqBJs=;
 b=r/4WU/c6whuh/AwFrqVLQAG2CTecazVgW0XOEsjhoUE4/bmvtuCklulQlsQW1/YguaNhx1kSHUgo7zrksNJS2WCJAFyiiVQylZWuPozcbOLIZl1FQK3lJLlOID3+mivBOdHLMjrJWO8bDEbCuyJc9mw/s8zYEymFRkx4K9m0wtQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Jan Beulich <jbeulich@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>, Teddy Astie
	<teddy.astie@vates.tech>, Nick Rosbrook <enr0n@ubuntu.com>, George Dunlap
	<gwd@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 0/4] libxl TPM emulator support
Date: Fri, 6 Nov 2026 18:15:22 -0500
Message-ID: <20261106231526.482418-1-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN6PEPF00000074:EE_|PH7PR12MB8014:EE_
X-MS-Office365-Filtering-Correlation-Id: 3b12b765-0648-4dba-0d19-08df3c5bdd19
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|23010399003|1800799024|82310400026|36860700016|261026140227099003|11063799006|56012099006|261021121427099003|261021123027099003|261022105027099003|261009223027099003|261102123227099003|261026121527099003|261028144727099003|10067099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	HSmgVBXpgSMk8ZUBRvnnMoyN9Qis4kGz0AffAB4QlKORNG9tEqHGi605m12e5blt9ak3k9dC+ugLMltA10ybIhuInTn2kCda4pFoBZdk5b71AvDD+r81G5UrHi9i/iAuPbYGKS0SeLd6NsQiMYcTsNo+GISgB1UJwqergXdK3fZahp4sntG5D1qSbiQfhoYFZCzPp2hKqpJZLy5+AMMU0IPIXiWGih21DlrTRG/KGVGExL14A8FAbwZ73Q7GmP0hLGVneZ0VS/HDreM5qZTxyPa4XVT3G/9URVhCt96csgbCzattK/jtpEZ3hRcOeKuyUnwnh42owWEHc7PBWWlH81FOsEEWvJK+f+n2MRsCSHCbO23GP/NMwnHMLH8d9UJh64cGdBI/eBjCQv1zp5txyd5vGsOzk+ac1SLRazFH7cuufUsyqXGRQTHxPbLNwwcuK++4ChIPvt2eHEyRJrNXgPIk+V1iUZZTBfWNryM5YM2V39ZCALqNyr3dj1dRSVYhu1wQnBkQ62+UoKLGKcO3lk2A+H0ZF+oBmSRbqMtH4IgxCam0SDVFgx/Ep1wqDmgqjuQ7TX8UZFNB1zoswdrt0VGh/tkSJa1rHG/O/nnEEchPMh7SD8oqmwzw4p/FUUDuYZd/6fyG0ztU9jH27uWBDhXG9cYP3KK6RQR2l3QekGaSszxLqrMMoRAYr0W/76u8JHOEg7QZniCf8FTDs9a9aw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(1800799024)(82310400026)(36860700016)(261026140227099003)(11063799006)(56012099006)(261021121427099003)(261021123027099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GiRSYlQO77o0hyu2PuiFUlcN7JY8uNHwcMHONQlWTdWzSfKjaAcS0xDF1dyaClWmre7H5X8nApU4azJGszq+fltGzFnIItkXR+6szQUYFixpnHtmSLQCOQF2mZbx2Kl54Pt6iuhgL7dp/7anix7xxynMfjqqccxEHcpVR5QI1mkfDzVbcVbQbAexQXlEL6tjvFfqe9/LXfAkh4CVXc2nrqjZR1aAuOI8xvTQ7B4whGD5MY+9uZd/bkqj9tvs/H05J0podhXVveTMRSNU6p1lklK6ucwGLwRQPfpl0DPRcz+EXd46waN75xQI5pvtYarRGo5IUEYzM3NnBtw/VIPgfDN9KJaWoDVJkcNKhQ4ObvUXH7eyuBEcBb1V8f0K8o0YM8ppOiqpYbAVFc40XdYNV7N7Dja2PGdG+7TG+ChXU7Ri8mvdqhnmyGcPsD1WmwTq
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:15:35.8556
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3b12b765-0648-4dba-0d19-08df3c5bdd19
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN6PEPF00000074.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8014
X-purgate-ID: tlsNG-ebf023/1794006943-C22D4B50-5D0ACE23/0/0
X-purgate-type: clean
X-purgate-size: 1951

This patch series adds support to libxl for QEMU to emulate a TPM with
swtpm as a backend.

It reworks some ARM TPM support from Stefano to use the auto-started
swtpm.

Since ARM uses the TIS interface, I expanded x86 to use either TIS or
CRB for TPM 2.0.

On Ubuntu 22.04 (and probably others), swtpm has an AppArmor policy that
restricts access to specific paths.  Those don't include /var/run/xen.
I disabled AppArmor with `sudo aa-complain swtpm`.

Jason Andryuk (3):
  libacpi: Build TPM2 tables for the TIS interface
  hvmloader: Support the TIS interface for TPM 2.0
  tools/libxl: add emulated TPM support backed by swtpm

Stefano Stabellini (1):
  libxl: Add emulated TPM support on ARM

 docs/man/xl.cfg.5.pod.in             |  42 +++++++
 docs/misc/xenstore-paths.pandoc      |  12 +-
 tools/firmware/hvmloader/util.c      |  12 +-
 tools/golang/xenlight/gengotypes.py  |   2 +-
 tools/golang/xenlight/helpers.gen.go |  48 ++++++++
 tools/golang/xenlight/types.gen.go   |  17 +++
 tools/include/libxl.h                |  11 ++
 tools/libacpi/Makefile               |   2 +-
 tools/libacpi/acpi2_0.h              |   1 +
 tools/libacpi/build.c                |  47 +++++--
 tools/libacpi/libacpi.h              |   4 +
 tools/libacpi/ssdt_tpm2_tis.asl      |  25 ++++
 tools/libs/light/libxl_arch.h        |   6 +
 tools/libs/light/libxl_arm.c         |  47 +++++++
 tools/libs/light/libxl_create.c      |  46 ++++++-
 tools/libs/light/libxl_dm.c          | 175 ++++++++++++++++++++++++++-
 tools/libs/light/libxl_domain.c      |   3 +
 tools/libs/light/libxl_internal.h    |   4 +
 tools/libs/light/libxl_types.idl     |  17 +++
 tools/libs/light/libxl_x86.c         |  24 ++++
 tools/xl/xl_parse.c                  |  20 +++
 xen/include/public/arch-arm.h        |   4 +
 22 files changed, 551 insertions(+), 18 deletions(-)
 create mode 100644 tools/libacpi/ssdt_tpm2_tis.asl

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:15:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:15:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477482.1682940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTA3-00057E-RY; Fri, 06 Nov 2026 23:15:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477482.1682940; Fri, 06 Nov 2026 23:15:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTA3-000572-NS; Fri, 06 Nov 2026 23:15:55 +0000
Received: by outflank-mailman (input) for mailman id 1477482;
 Fri, 06 Nov 2026 23:15:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPTA1-00054G-T4
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:15:54 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTA1-00EGLl-9a
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:15:53 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5fa8-bab6-0a2a0a5309dd-0a2a4502cb4a-0
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:52 +0100
Received: from [52.101.85.29]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5fa7-6ca4-0a2a45020019-3465551d7da8-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:15:52 +0100
Received: from CH2PR02CA0011.namprd02.prod.outlook.com (2603:10b6:610:4e::21)
 by MW4PR12MB6876.namprd12.prod.outlook.com (2603:10b6:303:208::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Fri, 6 Nov 2026
 23:15:44 +0000
Received: from BN1PEPF00005FFD.namprd05.prod.outlook.com
 (2603:10b6:610:4e:cafe::8) by CH2PR02CA0011.outlook.office365.com
 (2603:10b6:610:4e::21) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:15:44 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN1PEPF00005FFD.mail.protection.outlook.com (10.167.243.229) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:15:43 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:42 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:15:41 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:15:40 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=bkX/oxY+rN7V6xkprNHd96Wxpg8G6JhW3dUgQMRmQWddXYFDWI6Rsz5VIUKlgRLktW2NomjE3r32Ino2/e66BqMO3pSLeE+oimh3lGDp9COKDftju6oNe3nAtpJEHXLlZZ8aoiTxb2ipH+HyTDLdlq/Yh7fgGuakpktUGDYtgoOP14CIMsvQy0QEZptuQO2rzHqsun/sB7my8CC/6wWI4X7QIqdjgmvPTdouemsju8frxBWqOVHK+OySdC03ifRALVxcZNAS6e35LkNInsyp8PvfpIKvQ/eSwv9ZtOUiAgvtRBUavruKaiZHoatHt1PIGlJSN+pTVV1cRa+5DZ4E7Q==
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=CvB52JWQG6bRO1jPkIW77vtkV0moRZM3AN5DW/h+kik=;
 b=HHhCykoyUKPTNguUDSU9NRr5kWPuqJF/eXEgiCgys7lLyfJ623/3B5KH4BOvCVFRYbFcjR2qvM+zjX6hw65tb3TpYSMomfOPgCbX2hQIe0q9SIiH4RPbb3mM2hEMwllQWO8DlC2YTSCjth2xYaE/pFQexbKq4A9fmBYUMm9O//p5O4x4Daj1925PcNJZvpPPm//pTw2AUfcEERfCid8QL6EMNe6VmGeID+98t2d5Kon30x1qH+u8QD7JqSiJagYW71vxq+VM8QhyvR3S1BgX1UvwMrLZveCuJXFmvp3iTXEtqO1MR7e2bI5lAK4SQApFTWth6zW5kfkNRtJuVsZ0OA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CvB52JWQG6bRO1jPkIW77vtkV0moRZM3AN5DW/h+kik=;
 b=siCkZ3Jt47icN4zbdanl7IjoNyz88ZMzLwDfswWrLaExnIKH3W5aXB6t/P+OpdYEndTYu1kaDH0vG3aelKBROD8NJ96u98/SC+YYkZgT/PNSI15QRv9CB/9LMu5wsputteQ/005UEbgjq6pUSRe0NyIORbpM5Z2S6ljYREk/SKs=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <stefano.stabellini@amd.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand
 Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Stefano Stabellini
	<stefano.stabellini@xilinx.com>, Jason Andryuk <jason.andryuk@amd.com>
Subject: [PATCH 4/4] libxl: Add emulated TPM support on ARM
Date: Fri, 6 Nov 2026 18:15:26 -0500
Message-ID: <20261106231526.482418-5-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20261106231526.482418-1-jason.andryuk@amd.com>
References: <20261106231526.482418-1-jason.andryuk@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00005FFD:EE_|MW4PR12MB6876:EE_
X-MS-Office365-Filtering-Correlation-Id: e2dbb5d6-4cd9-4c39-4271-08df3c5be19d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|376014|30052699003|23010399003|1800799024|10067099003|6133799003|22082099003|18002099003|3023799007|56012099006|11063799006|261028144727099003|261022075727099003|5023799004|261026121527099003|261022105027099003|261021123027099003|261009223027099003|261021121427099003|261026140227099003|261102123227099003;
X-Microsoft-Antispam-Message-Info:
	3M31a9f/tCAfYAN0ufPb3tDtXvWiVw8BVDSQAqytnTHqDCXuW32kaoCCfEwShEI7K+MoSFdJc31MkJcAS9+iS9PlIe2kVVfPewf2GPI3GGfaGUGBoZEhBRNPDOWmuufqoCbs1nDNDtQgloAW4JbC6zqt9YJ4MPJL9vZoQanXZ2/vRn5hoPm0d3RkO/ZCmqpdCLMeuVtGMe1bDwEU/H6oSH7RG/AHEfxMyUlkP0M4/n1SRPntde1Lce4BG0f8HkaxaF0E7gLwW/W1KNnQV63Yxt7y9kZJU+y9NdxTe04j34HXML3P8LcJO9jNz7BAPeYC84LJGidP06ew5bQV5r8cjB1G9dOnwtrzAhJVJwRstHFKuXbmDZ+sZ+a1MuiehaQDPsYtmFI+mEcg+K8cL8ZxxlyrPJaVhMfb9oKc/qfZoLYc7cr8ECpTnLcCrjzoiWscOJiTob2CdZBsdfn/PygDPzaV+X9Tvp6MlKzY3Dc3Jd0BnBogGXuP7OtO2/rcf9CJtTMZ3Dh2lezddULDMgCeGlc544ivBlGwnmFJDjbyNawX3tH3Ec9UmorCyNxOV8dV2IYjVJMweih46YDdcqtUF7x0uswhCqvHf045sz+OL2zUsdKy5h6XJj8xxAbVGRhRdD8NyBvS9MWs/1orG93sKzEcuKh8Z8gq4ZUCWrvRVUer/7WWvKEnbyJDWlJj1LOoQp9TkrfV6kLHNCV7h38O2A==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(30052699003)(23010399003)(1800799024)(10067099003)(6133799003)(22082099003)(18002099003)(3023799007)(56012099006)(11063799006)(261028144727099003)(261022075727099003)(5023799004)(261026121527099003)(261022105027099003)(261021123027099003)(261009223027099003)(261021121427099003)(261026140227099003)(261102123227099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	BtCzG+tw3TTiVhLfatIfux7bgDFy0I8Ip30imODunbjtt60HFNi5deOO6GAE0H8NwqjEhbeGQnxxdarcT48Ii5RWMy2R9AY2YEGQEUCoX8sKgdXigeZ4BrVOMDPH3OJMNC0/yWEE1B7BOGgAS9Sj9c7EQ6aGC9Mbwpi0U6rKzgM4DKc9q+rYTwoiJ2c0yLpbt9rPyA9ratINPl83yoxVM1Ip1mHOTUXuhlbQ/tyzkMsf32zNqosdyotZ54v6Ha/FQryEH/iEHHxJLfUnaJTPifj75SKYCQpNAe3l6SHj0K6LHaV6MLTR9A4RafjYcGLO86y3RhdnY+jVkA5uUzgBpcRVtiGaAQebzxWVMrB/5TBK8MpTZ6EFJgzW5Imqy4eeej99+ZjSelCx8nyzImx2UAIwpthvwQ/P+x7y7kSNh1eHAINOand80WNYCy8uCF6M
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:15:43.4346
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e2dbb5d6-4cd9-4c39-4271-08df3c5be19d
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN1PEPF00005FFD.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6876
X-purgate-ID: tlsNG-720697/1794006952-67CBA2AC-F219970D/0/0
X-purgate-type: clean
X-purgate-size: 9890

From: Stefano Stabellini <stefano.stabellini@amd.com>

QEMU's ARM "xenpvh" machine runs as an IOREQ server and, when given a
"tpm-base-addr" machine property, instantiates a TPM TIS sysbus device
at that address connected to the "tpm0" TPM backend.  Hook the existing
tpm_* configuration up to it so ARM guests can use an swtpm-backed TPM.

Reserve GUEST_TPM_BASE/GUEST_TPM_SIZE in the ARM guest memory map and
add a "tcg,tpm-tis-mmio" node to the guest device tree when a TPM
version is configured.  The xenpvh machine has no CRB device, so TIS is
the default and only interface allowed for both TPM 1.2 and 2.0.

Add libxl__arch_pv_pvh_machinearg() returning the QEMU -machine argument
for a PV/PVH guest.  x86 returns plain "xenpv", while ARM uses "xenpvh"
and appends tpm-base-addr when a TPM is configured.  uint64_t tpm_base
in ARM's libxl__arch_pvh_machinearg() is to allow PRIx64 to print the
value.  Otherwise the ull argument mismatches PRIx64's %lx format.

libxl__arch_pv_pvh_machinearg() also handles PV guests.  This keeps the
extra_pv handling identical between PV and PVH guests.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
[ Merge ARM parts with new libxl_dm implementation. ]
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
 docs/man/xl.cfg.5.pod.in      | 14 ++++++++---
 tools/include/libxl.h         |  5 ++--
 tools/libs/light/libxl_arch.h |  6 +++++
 tools/libs/light/libxl_arm.c  | 47 +++++++++++++++++++++++++++++++++++
 tools/libs/light/libxl_dm.c   | 14 ++++++++++-
 tools/libs/light/libxl_x86.c  |  6 +++++
 xen/include/public/arch-arm.h |  4 +++
 7 files changed, 89 insertions(+), 7 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index c12d2dc4db..e5952d7e27 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -823,11 +823,16 @@ value is optional if this is a guest domain.
 
 =item B<tpm_version=NUMBER>
 
-Provides an emulated TPM to a QEMU-based HVM guest, backed by B<swtpm(8)>.
-The TPM version to emulate is either B<1> for TPM 1.2 or B<2> for TPM 2.0.
+Provides an emulated TPM to a QEMU-based HVM guest, or to an Arm guest,
+backed by B<swtpm(8)>.  The TPM version to emulate is either B<1> for
+TPM 1.2 or B<2> for TPM 2.0.
 When this option is not specified, no TPM is provided and the other
 B<tpm_*> options are ignored.
 
+On Arm, QEMU's B<xenpvh> machine is started as an IOREQ server to emulate
+a TPM TIS interface, and the guest device tree gains a
+C<tcg,tpm-tis-mmio> node describing it.
+
 One of B<tpm_statefile> or B<tpm_statedir> is required, but not both.
 
 =item B<tpm_statefile="PATH">
@@ -844,8 +849,9 @@ Path to a directory in which B<swtpm> stores the persistent TPM state.
 
 The TPM interface presented to the guest.  B<tis> is the TPM Interface
 Specification (FIFO) interface and B<crb> is the Command Response Buffer
-interface.  B<tpm_version=1> only supports B<tis>, while B<tpm_version=2>
-supports either and defaults to B<crb>.
+interface.  On x86, B<tpm_version=1> only supports B<tis>, while
+B<tpm_version=2> supports either and defaults to B<crb>.  On Arm, only
+B<tis> is supported, for both TPM versions.
 
 =item B<tpm_swtpm_override="PATH">
 
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 8b431b708d..8d19cf41bc 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1568,8 +1568,9 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
  *
  * If this is defined the tpm member of struct domain_build_info is
  * available.  When its version is non-zero, libxl starts swtpm to
- * provide an emulated TPM to a QEMU-based HVM guest.  Its interface
- * member selects the TPM interface (TIS or CRB) presented to the guest.
+ * provide an emulated TPM to a QEMU-based HVM guest, or to an Arm guest
+ * via QEMU's xenpvh machine.  Its interface member selects the TPM
+ * interface (TIS or CRB) presented to the guest.
  */
 #define LIBXL_HAVE_TPM
 
diff --git a/tools/libs/light/libxl_arch.h b/tools/libs/light/libxl_arch.h
index c8ef52ddbe..b3355d1e82 100644
--- a/tools/libs/light/libxl_arch.h
+++ b/tools/libs/light/libxl_arch.h
@@ -97,6 +97,12 @@ _hidden
 int libxl__arch_hvm_unmap_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid);
 _hidden
 bool libxl__arch_local_domain_has_pirq_notion(libxl__gc *gc);
+
+/* QEMU -machine argument for a PVH guest. */
+_hidden
+char *libxl__arch_pv_pvh_machinearg(libxl__gc *gc,
+                                    const libxl_domain_build_info *b_info);
+
 #if defined(__i386__) || defined(__x86_64__)
 
 #define LAPIC_BASE_ADDRESS  0xfee00000
diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index 47b662ea5c..6325b19766 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -978,6 +978,29 @@ static int make_xen_iommu_node(libxl__gc *gc, void *fdt)
     return 0;
 }
 
+static int make_tpm_node(libxl__gc *gc, void *fdt)
+{
+    int res;
+    const uint64_t base = GUEST_TPM_BASE;
+    const char *name = GCSPRINTF("tpm@%"PRIx64, base);
+
+    res = fdt_begin_node(fdt, name);
+    if (res) return res;
+
+    res = fdt_property_compat(gc, fdt, 1, "tcg,tpm-tis-mmio");
+    if (res) return res;
+
+    res = fdt_property_regs(gc, fdt, GUEST_ROOT_ADDRESS_CELLS,
+                            GUEST_ROOT_SIZE_CELLS, 1,
+                            base, GUEST_TPM_SIZE);
+    if (res) return res;
+
+    res = fdt_end_node(fdt);
+    if (res) return res;
+
+    return 0;
+}
+
 /* The caller is responsible to complete / close the fdt node */
 static int make_virtio_mmio_node_common(libxl__gc *gc, void *fdt, uint64_t base,
                                         uint32_t irq, uint32_t backend_domid,
@@ -1450,6 +1473,9 @@ next_resize:
         if (iommu_needed)
             FDT( make_xen_iommu_node(gc, fdt) );
 
+        if (info->tpm.version)
+            FDT( make_tpm_node(gc, fdt) );
+
         if (pfdt)
             FDT( copy_partial_fdt(gc, fdt, pfdt) );
 
@@ -1860,6 +1886,16 @@ int libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
         return ERROR_FAIL;
     }
 
+    /* The xenpvh machine only provides a TIS TPM interface. */
+    if (b_info->tpm.version) {
+        if (b_info->tpm.interface == LIBXL_TPM_INTERFACE_DEFAULT)
+            b_info->tpm.interface = LIBXL_TPM_INTERFACE_TIS;
+        if (b_info->tpm.interface != LIBXL_TPM_INTERFACE_TIS) {
+            LOG(ERROR, "Only the tis TPM interface is supported on Arm.");
+            return ERROR_INVAL;
+        }
+    }
+
     /* Sanitise SVE parameter */
     if (b_info->arch_arm.sve_vl) {
         unsigned int max_sve_vl =
@@ -1949,6 +1985,17 @@ bool libxl__arch_local_domain_has_pirq_notion(libxl__gc *gc)
     return true;
 }
 
+char *libxl__arch_pv_pvh_machinearg(libxl__gc *gc,
+                                    const libxl_domain_build_info *b_info)
+{
+    uint64_t tpm_base = GUEST_TPM_BASE;
+
+    if (b_info->tpm.version)
+        return GCSPRINTF("xenpvh,tpm-base-addr=0x%"PRIx64, tpm_base);
+
+    return libxl__strdup(gc, "xenpvh");
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 843b8e29eb..ebdd05586e 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -18,6 +18,7 @@
 #include "libxl_osdeps.h" /* must come before any other headers */
 
 #include "libxl_internal.h"
+#include "libxl_arch.h"
 
 #include <xen/hvm/e820.h>
 #include <sys/types.h>
@@ -1573,7 +1574,12 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
     switch (b_info->type) {
     case LIBXL_DOMAIN_TYPE_PVH:
     case LIBXL_DOMAIN_TYPE_PV:
-        flexarray_append(dm_args, "xenpv");
+        machinearg = libxl__arch_pv_pvh_machinearg(gc, b_info);
+        flexarray_append(dm_args, machinearg);
+
+        if (b_info->tpm.version)
+            libxl__dm_add_tpm_args(gc, dm_args, guest_domid);
+
         for (i = 0; b_info->extra_pv && b_info->extra_pv[i] != NULL; i++)
             flexarray_append(dm_args, b_info->extra_pv[i]);
         break;
@@ -3892,6 +3898,12 @@ int libxl__need_xenpv_qemu(libxl__gc *gc, libxl_domain_config *d_config)
         goto out;
     }
 
+    /* QEMU provides the emulated TPM, e.g. via the ARM xenpvh machine. */
+    if (d_config->b_info.tpm.version) {
+        ret = 1;
+        goto out;
+    }
+
     for (idx = 0;; idx++) {
         dt = device_type_tbl[idx];
         if (!dt)
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index 3182cfc9df..a6e9ad777e 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -937,6 +937,12 @@ bool libxl__arch_local_domain_has_pirq_notion(libxl__gc *gc)
     return false;
 }
 
+char *libxl__arch_pv_pvh_machinearg(libxl__gc *gc,
+                                    const libxl_domain_build_info *b_info)
+{
+    return libxl__strdup(gc, "xenpv");
+}
+
 int libxl__arch_hvm_map_gsi(libxl__gc *gc, uint32_t sbdf, uint32_t domid)
 {
     int pirq = -1, gsi, r;
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index 5d15f572c7..efb45eb33c 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -452,6 +452,10 @@ typedef uint64_t xen_callback_t;
 #define GUEST_VPCI_ECAM_BASE    xen_mk_ullong(0x10000000)
 #define GUEST_VPCI_ECAM_SIZE    xen_mk_ullong(0x10000000)
 
+/* Emulated TPM (TIS over MMIO) */
+#define GUEST_TPM_BASE    xen_mk_ullong(0x0c000000)
+#define GUEST_TPM_SIZE    xen_mk_ullong(0x00005000)
+
 /* ACPI tables physical address */
 #define GUEST_ACPI_BASE xen_mk_ullong(0x20000000)
 #define GUEST_ACPI_SIZE xen_mk_ullong(0x02000000)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:17:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:17:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477519.1682950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTBm-0006Zw-79; Fri, 06 Nov 2026 23:17:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477519.1682950; Fri, 06 Nov 2026 23:17:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTBm-0006Zo-3M; Fri, 06 Nov 2026 23:17:42 +0000
Received: by outflank-mailman (input) for mailman id 1477519;
 Fri, 06 Nov 2026 23:17:41 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPTBl-0006Zi-Gr
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:17:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTBk-004xa6-Qk
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:17:40 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee5f87-2eae-0a2a0a5409dd-0a2a4505cdb8-30
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:17:40 +0100
Received: from [52.101.56.3]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6013-4cb1-0a2a45050019-3465380326db-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:17:40 +0100
Received: from CH0PR03CA0005.namprd03.prod.outlook.com (2603:10b6:610:b0::10)
 by FT1PR12MB227580.namprd12.prod.outlook.com (2603:10b6:170:e::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:17:37 +0000
Received: from BN1PEPF00006000.namprd05.prod.outlook.com
 (2603:10b6:610:b0:cafe::7f) by CH0PR03CA0005.outlook.office365.com
 (2603:10b6:610:b0::10) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Fri, 6
 Nov 2026 23:17:36 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN1PEPF00006000.mail.protection.outlook.com (10.167.243.232) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:17:36 +0000
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:17:36 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:17:35 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=Et3rO4KZJwvxF5XWydi3uqffKyEwM75z/ExXb4rKVSzdW1t1baqQJcEYQZmOZmN9S0iZyeXnahVSF/qXAU+XgB9V2MKt+LfFmFHj15AbHeISGR3DDitOsISs3lHJtv6wXTP0rgelxzKs2RrBgPHotEBEKD3lsGjrGhFqnXW4KDMnS+ba59HTEz34h+vTw2916lUtUfL7TFbGdv8GOdHDNLhLTwycv4Fq06ecRj3UmLv+rxSibwQugjWrJK7/tFuBDCEhCcsbtMdxFpyMU4WKGn9WkR70hv1JjG33byKyLQBNfZbsvmztLV8N4NhQik1OBlsK7eq3q2zYhbwHo4nz/Q==
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=oF1c2YLFZJ97GJ/QBH1SJYJ5NeZfcNSU6S44aYVqyKQ=;
 b=SGyTRf0ro9AbOarqv4ej48QFHEz+pJr2TPFfyGJshlicGRNoY275Wc2wewIG8cir6SCU/gZHLZxKzIfBKbc6M9ze2IWsQuu6EporWZfQBSlWy2ViuEHKzVn+bUH4TmW4/faTi7war3bPYMMWDp4eYkWYyBPlAYsaVrLR0zyRGGVqWM/Q5WB0bQegD/8xbN75FWYmUX0wTl8O4dy37dC7nfhQyiaF/HP5jHdNbSm3xngIuT+YYvb6aLEtJvIQY6HnPUuH4pCjplPQXrk11TS8FYcTwYRifxhhOnRbp1h7ouoQSn1z8hzE7844j4I6ARpN/6rAyg37uXZDMI1SsVL5/w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oF1c2YLFZJ97GJ/QBH1SJYJ5NeZfcNSU6S44aYVqyKQ=;
 b=Z57nykxvZabtd9R646wYHuSo1aSHRwiRKTMsPcWgKjt0toNAABusNgoiTH538kip7HebpLEkxOMntNWSLI/A1h7BCUP/eHgzGRlGj6gctexIXrMIaLUnQ9kwzG7XepSVI/QV97Qu1LYLTd+H/OMSgUC8pcQaJDgg9a6MI4bBqnw=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Andrii Sultanov <andriy.sultanov@vates.tech>,
	Guillaume Thouvenin <guillaume.thouvenin@vates.tech>, Anthony PERARD
	<anthony.perard@vates.tech>
Subject: [PATCH] tools/ocaml: Fix cleaning bindings test
Date: Fri, 6 Nov 2026 18:17:32 -0500
Message-ID: <20261106231732.482518-1-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00006000:EE_|FT1PR12MB227580:EE_
X-MS-Office365-Filtering-Correlation-Id: de5e4e46-eb38-4bcb-d51d-08df3c5c252a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|261026140227099003|11063799006|56012099006|261022075727099003|261021121427099003|261021123027099003|261022105027099003|261009223027099003|261102123227099003|261028144727099003|10067099003|18002099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	jarpEoupajFm3HvwiVXDjel2TXn1y+xZLKbChXcvCPr0DQDkJ6yKrSnBgs01WevegdRBbuQ3Ud9c+uLaBaLplz0jOOB3xf1zSGAS000UEco4Bj4unC9HnMfetT46cR/GBQeUH1DonA27vKKK1wmYodYhN8VHgRQWKJ6hdWD+XqwfshIWZxZ593JpDa8W6lTi3HFfqBTCj5quSEx5T0fWxk1h+L7F3kN+nIt9WRpAsPQM74yHvZkgUUanJgrpGB0Npip2vGfZRgd6BDqPMsQN3hJiwa0huYww9T5ZbxXecmT87KcWs8sicOlP0rGQZJf6Dt+36m0g0Od4tTD0n+Fu4zv4PUE4jtZkqQt9F9geEkAbWNddQyeSbJbt/g/iBaN+zGDYlJMLL78uHvcrH9BOqouoVP4v/B5GLFuvwTmxd52FbXzaHSK+9tRxClrrxbVH3+vTQTH3dVHYmbRgyNFJ5HhI9l2MJf0qj7fnBc0DtDsK2y/rBeCAaoOtYPu5tHcOYLbZw/7atCGzbDw7PrkW+MlROkOdE7T+FKUC30Oi7ASuCFKqCg3ZahLnDf/OF2gp3t45cgB3ogMJRa7j2s11nOMH5pA7hMraXaHgg0TnVB6WOMQJar3IsOyV1C4aS8jdeQWPfNuLdEI4iQlvyEBAsNIFmLiQ7psuDfiyPDtpiK+2KXMNI3iJkUW1peP+Ljj3Ti399K4gqd3ZiqBgeMs0Hg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(261026140227099003)(11063799006)(56012099006)(261022075727099003)(261021121427099003)(261021123027099003)(261022105027099003)(261009223027099003)(261102123227099003)(261028144727099003)(10067099003)(18002099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GkvneLir6h0uFZYhPpi0zfWQeyKGGTUrGmsUC3oVQUV+AmjbW7i04b5F4zi1Y0mJpVRyniarawGn3Tqe/bG1ZzV/4Yh8duakMrkB8zqxkhJnMfSIzCpEQs/rSRnRl95pZU/zTT1wvzBrnVpFA7IXSH9USnK6ncPp6B7daJCAxhg4MuDr2Tn9gVFJVv0bZS09NbheHYsmbzLyVcea5/rJMnkDMQRJASQFktBQzfVsVm9joAVNYYzgDYdKZSdm+p4718sdKm9EqfUp1apSZZWambrK5VGz6+2xNKboBRQ6zwAsiC2bXQapqCKSliYJyKMohV8iI6/mFnEYlSN2TrIEDTu3GM0DF9JtqvSVU6AcNIgef2hOTRXRlq9dth/ZgzEVG8C9uHSBFw757Bh7C/tSrLpgrFnNt38HX2nGqx8wbz5y8opyT90DtcmGlHC0gJqM
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:17:36.7701
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: de5e4e46-eb38-4bcb-d51d-08df3c5c252a
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN1PEPF00006000.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FT1PR12MB227580
X-purgate-ID: tlsNG-c201ff/1794007060-F68B62A1-59DDE55C/0/0
X-purgate-type: clean
X-purgate-size: 1693

make clean fails in the bindings tests:

make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
rm: invalid option -- 'c'
Try 'rm --help' for more information.

Split the compiler flags out of the LIBS variable, since LIBS is passed
to rm.  The individual *.cxma files are deleted in their respective
directories.

Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
 tools/ocaml/tests/bindings/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/ocaml/tests/bindings/Makefile b/tools/ocaml/tests/bindings/Makefile
index 75f8babbaf..98fcb7aa5b 100644
--- a/tools/ocaml/tests/bindings/Makefile
+++ b/tools/ocaml/tests/bindings/Makefile
@@ -10,8 +10,8 @@ OCAMLINCLUDE += \
 	-I $(OCAML_TOPLEVEL)/libs/xc \
 	-I $(OCAML_TOPLEVEL)/libs/eventchn
 
-LIBS = \
-	unix.cmxa \
+LIBS = unix.cmxa
+LIBFLAGS = \
 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/mmap $(OCAML_TOPLEVEL)/libs/mmap/xenmmap.cmxa \
 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \
 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \
@@ -21,7 +21,7 @@ LIBS = \
 PROGRAMS = test-ocaml-bindings
 OCAML_PROGRAM = test-ocaml-bindings
 
-test-ocaml-bindings_LIBS = $(LIBS)
+test-ocaml-bindings_LIBS = $(LIBS) $(LIBFLAGS)
 test-ocaml-bindings_MLSORTED = $(shell $(OCAMLDEP) -sort $(OBJS:=.ml))
 test-ocaml-bindings_OBJS = $(test-ocaml-bindings_MLSORTED:.ml=)
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:19:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:19:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477526.1682957 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTDK-0007LZ-GL; Fri, 06 Nov 2026 23:19:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477526.1682957; Fri, 06 Nov 2026 23:19:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTDK-0007LS-Dm; Fri, 06 Nov 2026 23:19:18 +0000
Received: by outflank-mailman (input) for mailman id 1477526;
 Fri, 06 Nov 2026 23:19:16 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPTDI-0007LA-NP
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:19:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTDH-001IYP-3h
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:19:15 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee6073-bab6-0a2a0a5309dd-0a2a4507892c-0
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:19:15 +0100
Received: from [40.107.208.3]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee6071-b4ea-0a2a45070019-286bd0037883-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:19:14 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by PH6PR03MB509186.namprd03.prod.outlook.com (2603:10b6:510:3dd::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:19:11 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Fri, 6 Nov 2026
 23:19:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=yZjWxdAWtZXXtAtQqBNnaJk2RydBTEkqp79saJRkUnOKs1SqrvBwGIfaV1cRs8CPSgPd7MYdSi4jnbEZkzTfig556m2UDqphWeN3joahygvFVw0Q8IExbe0E4N71mQqB5w4BPKj8XPxKkVXKpZLRBichi6RuIxYc18oNycMmm0TbarUEPBYuIjO7THoyeBYr/iJBfrjZbgu/v0jdbk+ZfLNJ62EJyEhsogDH/u9+bBSA+TdzDX59qJeLhpZvBewDqgs893wWt+ZQzDP1rCfJauO5Opcs4Qg+0PdjhoRgbWO3is8+k9QeCSXQCGqU65kGIxSsRyy1rSDwHQJQEsG2ng==
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=g7mTPPzeU9yiw9JhK+uJAQwbhOTiowYidz1i7BzJgZc=;
 b=nAXwSCOKecFI2KiZ/YNRViAFNUk5bRcChBN9l8IMuUKvMh+d8noODfqv06cq0mb3slo//Xq5hfar3dIF2pXDYZpQlOlq0/whRBGcQxVT/CDLxFPICz3Mxf2cYEB/0h1poz/lAji7xHxaJLIATBVHGeUCpTJ/DFobi24/oARYMQS47oxNPOjMw7hBFW+y+Cidcew0O6Qq9X16nmTXdSDexk/umRTMwejNtgQcFh1caDOHV+l2uguxjV5HkDUrOUySylB/+oOx18N0z9C4+dJYcPQluZS7SOZerGcHb45umwEwUtq0LqtLJy/emp+h9GqX2GYWmVbNvxGqVM2/Du18TA==
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=g7mTPPzeU9yiw9JhK+uJAQwbhOTiowYidz1i7BzJgZc=;
 b=XLWAPI6boA45U7iy/D86PzyiYRCwYPDBH7tY3ZXVUB2NZfQGDwLAG7hA48/sPmoSK+1/MZcH0LUH4fQceFKZGuFS+LukynFDinWizHdw9ZlQ9J8MThJPmBIweLa4EAkgjPkiR6Vu2H1cKfK/vGeZNNekoqA9n8gtEX+mrCdx4Fg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
Date: Fri, 6 Nov 2026 23:19:07 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Andrii Sultanov <andriy.sultanov@vates.tech>,
 Guillaume Thouvenin <guillaume.thouvenin@vates.tech>,
 Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH] tools/ocaml: Fix cleaning bindings test
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20261106231732.482518-1-jason.andryuk@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261106231732.482518-1-jason.andryuk@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0181.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:311::8) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|PH6PR03MB509186:EE_
X-MS-Office365-Filtering-Correlation-Id: 8e192ea0-d0f5-495d-cc8c-08df3c5c5d37
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|18002099003|22082099003|6133799003|10067099003|11063799006|261102123227099003|261028144727099003|261026140227099003|261021121427099003|261021123027099003|56012099006|261022075727099003|261009223027099003|261022105027099003;
X-Microsoft-Antispam-Message-Info:
	bRiG+glrqiEqrE8s4Xm5gkc0BP/415GKMeyKTVuy/tZzfLrLY07LSKG2pAN3KKrGakO9Nes/TO1B+lzdbH+2GygU7cLDFCY7lWio6cfRHO9vcMXujeXTXR0wAKFwYGijF2lYQ6xKIgyOAnCiKuOjDhyyjF1Af4N6bdxSsjyPy9niOIsLlj64y+UKujgDc3gRwa4gO+RL4iWfn+Q1P8gkE0oU3ZpybHla3TUIrU0fkk8Q/B8RgkhpoR6tq24bSa3VWn73ppUbk/DesPUznQ8OlaQKwWYPe68o3qieKU5JsXv9gOvZ3ZACCLbT2czk3kf/m7BFcxuxKuSV6sXKixpeh9CYcbhcJiJeFn71/mdogeK2U6V4nQr9t+OKccb7ulHJQ5yJf1DN16/yZmef21KwOUyEHI4Ooe0GhOpg5Ots2viq36Jms4oWZWZZLho8uGwG3JLuStBdaak6b8xb445ZHBU2+cyhw0nSy+x9JpRdf4JSvVBNNan12ZyLDokgCL7woLpXLX2MK+wkWRoSds6Qlx4kgL6eHP2Noxws1zI9xZTD2tk7ExBIqQY6H8G2tZF0e6xVJJqqQTTJSWyVsjajbofMhg8aXK7c7tFW7piESA6VIPJR53+kfvZJYYAVxq/E96ls/wlqNaL2tloTTNgQIo0Lg8VYV+X7v5qfhc19t8M=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(18002099003)(22082099003)(6133799003)(10067099003)(11063799006)(261102123227099003)(261028144727099003)(261026140227099003)(261021121427099003)(261021123027099003)(56012099006)(261022075727099003)(261009223027099003)(261022105027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cVlaK25kRDdnMXlNZEVyRFhyNW1NSG1qREpuYlJtZk9LNis4cFV4QktHb0xM?=
 =?utf-8?B?RWwvYllDSFpRN1NMSzBxcUJhNTlmaEpOWGU1Wk9EMnhiM0NBblk4MWgrVEVa?=
 =?utf-8?B?cjV3NGsrVjN2aFJpSXlNOFVveDZzeitHOVorMGZnS25JdnVEcUN5VHJOaFl4?=
 =?utf-8?B?dzZmNERTZGROTlJ0cFFKYVkrVXJoVTBUZkZaLzdtSWhBQXRnT014SG1KZ3VH?=
 =?utf-8?B?UXVxOEZaNVRLKzBwNHZjVHc1RC9ldm9EZGErS3RJVVRCN2dIaHA1RGFKZ2px?=
 =?utf-8?B?MlMvRGNQVmtaeWlwR0FBNUJvU2YwOXNGS0U0WFJvMDRKTG5ZNzJZU3RmRy9V?=
 =?utf-8?B?OVdQNENvMlBhOVE5VjZLUHBFN3RZS2V4N2NwN0o3WmRHL2YwWHNXZy96am0x?=
 =?utf-8?B?M0tPaDBzaEVvcFJFNHFLYTRoRHZHRWlJeG5HNEZpeVBaa2MzK2w2NDcxa0NU?=
 =?utf-8?B?bE11ZDNORk9tRmJpNDNNaXpjcnhoWlR2b3gxaGFsQ1Z6ODF5dCtjaHpJNTJM?=
 =?utf-8?B?Q1dYTElkcDRvNVJJeWYyZGJ6b3NsYTlqcFRDcmdEMUgybjZKKzRJQnZrbFFz?=
 =?utf-8?B?Ullxc2xpbTJHaTd4SkpCc1ozRlhUdEFSZEZqcDZGNWxFRzMwejJFK0owdFpn?=
 =?utf-8?B?eGtKNnhlc09sazE1RDdmcG9kUElKZHkvY3N5SGw5YXo4L3RybjdSNDU0c0pa?=
 =?utf-8?B?UzBRTmpXYS9hZXVNcllzZ0tQbi8yNHc2Sk83K1NHY2FmL0h6U3RnMHN2RTZV?=
 =?utf-8?B?a2VBdWtzUFhYSDBNVThDMUhOYmpDYStxczM0Q2w0TkhtblJleFVNbnFzSmxQ?=
 =?utf-8?B?dGRXTUU1bjNFV2xmWFh3WW5xa1VyT2RzRmJGTU1pdWwrOTJmZlFjbG5RYUtG?=
 =?utf-8?B?UnE4RnhuOGdIK2FLMFNqYnFRa2hUeVk2TEhXRURWWFlmb3c4a21uK3RZL1lH?=
 =?utf-8?B?a2twTlZaUDJ6L3ZtUlE3SWxnbWd1SDJRVDFSM0EvdzkraWN4MnZNWUo5YWZt?=
 =?utf-8?B?NlQ3TU5BUlVRanhDdFNIZGpHa2JIWGlOcHUvSmZhTnlJYUpuTUdpSU9aekk0?=
 =?utf-8?B?ZlQyemZJSHplcjc1L3p1NkRrLzRMUXg0OFZVQVZxWVJXSmVJdC9GOEl6Z01Y?=
 =?utf-8?B?NENpVzIvWXMxWG5DQ0hick9KYWZEOHhoTmg3Q3BuUis4eE5uNk1sTE9JbDJl?=
 =?utf-8?B?TEE3MmFMZGhHbVVVU29XaENMNVprY3pmUS9ZMUNyUUE1blgxTE9ydmtTb1Ix?=
 =?utf-8?B?VkxtTmlmZ3BLN2JOYXo3YjJ1aGhiZXMvSy9RUUlKOS9laDd3UkVPemllVmpC?=
 =?utf-8?B?VGVyZzZBM2VrZlNucWkrUTNNL1ViUDlyK3BxLy8zWlhBQTZSREZwT0dpVzla?=
 =?utf-8?B?NFpycGZkM0Nxc3Q5OXFEblkrbzhrSnlCSCtRK0lkK3R1b0lwbytteWNWWFhk?=
 =?utf-8?B?d0o4RGRWWjlXUTVGTlYxcDNLcDBURXpLc3JCTVFQOFNsZlVmSGc4UTI1TlpM?=
 =?utf-8?B?VUVvRkZaaG40MkJWZElMTUZSUjN3dUlLM0NzK1JwMDdYV01XNE1INkFKY2RV?=
 =?utf-8?B?c0Fadnh2dG1mVlk3amZIbk03MDV3VWg0cVgrbU1wU3c2TUIwTnNUd2p6QitK?=
 =?utf-8?B?T2FLajFvZzhSSy9yV1dqL1B2VFplUXQ3Q3hoWForaXc5Qld0RTFPeFRqWUdz?=
 =?utf-8?B?US9PSXlPQmxkSEpTMitKT21EM0JHOFZlanZCVWhtOE1oaTdNYU52cks0NEZw?=
 =?utf-8?B?RTRqd0RmeW5mdXNNWUtlY21RN3JoTFJpOHVORTVxdFF5bjB6MVRUUDNJdWlR?=
 =?utf-8?B?RTB5eUV6VXFXbThTV05UWFU1aTR3ejlQZ1JtemViSkxEdlZIQVFUdUNjRllQ?=
 =?utf-8?B?Uy81aXN1b1d6dC9zaVJIQWlpZEg0MmVCV1JjSnhZblYxckY0MDFoYndQR2xz?=
 =?utf-8?B?eFhtRHVoQldvVExOdUFzc0Q4VkZTTzBnRGxFME41NU1TNTA2bmNDV3R0M3lG?=
 =?utf-8?B?VlY4VHAycjY5Vk5wMUNUcEkreFM2VUIweDd6aitCL0J4dGpCNkp4TDE3RXdx?=
 =?utf-8?B?eklUZ1dkK0J1aGd5akpJQ2xUbmJ6ZVBkb0xyejh0WFFYcHR1dnExRHptT1V4?=
 =?utf-8?B?a2FYYWhJdkNQVEJ2eXVmWHlKS3E1MXg5WlNsSnpuRjZ1YnlFOVIrcFVqTlha?=
 =?utf-8?B?TmRScmRCSVZkcHdLRG5zc09TYmxWWEZoc2dpeHQ1TG44K2dsTjBERTM1Nytq?=
 =?utf-8?B?MmNqVC8xY2dpaTBtSjJVWnIranBkdndtemhxZWN6blZYRXVndWIrWFZsV28x?=
 =?utf-8?B?cE9JejNlT3AzSVNtZDd0VGxScU5SV0NtWU1hcHIzdzRyVGlvT05DQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e192ea0-d0f5-495d-cc8c-08df3c5c5d37
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:19:10.9194
 (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: Ee6wdd+vrvCqv//KfvZD1LcnkE6E552ppK2vSdWcO7O+Vo/EOIEZVP6s990IzarOBn5MY04G4YDHMJC3KiXOHTgzHuvkkG8RwyIK14qsMfk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH6PR03MB509186
X-purgate-ID: tlsNG-ef75cf/1794007155-A4ECEAE4-C71348B0/0/0
X-purgate-type: clean
X-purgate-size: 742

On 06/11/2026 11:17 pm, Jason Andryuk wrote:
> make clean fails in the bindings tests:
>
> make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
> rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
> rm: invalid option -- 'c'
> Try 'rm --help' for more information.
>
> Split the compiler flags out of the LIBS variable, since LIBS is passed
> to rm.  The individual *.cxma files are deleted in their respective
> directories.
>
> Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>

Lovely...  Sorry for breaking this.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:22:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:22:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477537.1682967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTGc-0000fk-3H; Fri, 06 Nov 2026 23:22:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477537.1682967; Fri, 06 Nov 2026 23:22:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTGb-0000fd-W1; Fri, 06 Nov 2026 23:22:41 +0000
Received: by outflank-mailman (input) for mailman id 1477537;
 Fri, 06 Nov 2026 23:22:40 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPTGa-0000fX-Cm
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:22:40 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTGZ-001J6e-Q3
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:22:39 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee610a-bab6-0a2a0a5309dd-0a2a4501c53c-38
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:22:39 +0100
Received: from [52.101.62.44]
 (helo=DM5PR21CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee613d-5984-0a2a45010019-34653e2c72d5-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:22:39 +0100
Received: from CH0PR04CA0097.namprd04.prod.outlook.com (2603:10b6:610:75::12)
 by PH0PR12MB8151.namprd12.prod.outlook.com (2603:10b6:510:299::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:18:23 +0000
Received: from BN1PEPF00006003.namprd05.prod.outlook.com
 (2603:10b6:610:75:cafe::ae) by CH0PR04CA0097.outlook.office365.com
 (2603:10b6:610:75::12) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:18:22 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BN1PEPF00006003.mail.protection.outlook.com (10.167.243.235) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:18:22 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:18:21 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:18:21 -0600
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53
 via Frontend Transport; Fri, 6 Nov 2026 17:18:20 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=Fu9sqzvi1I+cc6k8rcXv/c2Isb65aNZBMoyGZJXyeOxP+nxOn1h7XM3BU1xcGfgwk+Kp2AL0zYhxaWK3jD1Ho0q65Ny34/IVMKfS+iDGS07WatdszYxtKWE/t0LlUwgXrLp/uURkZ0j7yRf8X+gX+EbmmzEOTKdTVu6RHvbmVyUR7CyncLgX9Jc9eeoEw5GfqOZp1AN3I4lPuXae/Kt9jEMfgTDD+4djJpYoIzYOpZWDH+nRwva5I4/B11Nux6WeryBNj3m6ZTmTLNF5QHfNIolBXMgId7nTBCOnKOyw2k2+mZ/PPCvr6cbi68JhOCjrRJnbbf0b4NVPhq8j0+jhDg==
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=5E8tva5VeiWDebMRKelLIwpUYYUIu8xtyTWuQvy6+EI=;
 b=FKputN6N0eLW5kVVJdp9CwxSQIIhDsMz/8POio0jCoQjmwByxk6CHybiQBGYP3Vhslte2xUL0bXey6lJJtZBQlsh4JQWaTTyB2QsQbXvFLLyAHwep+1nicz/uqaksRbnpQ5dh1VX0rowT/KBsUnCcEuOCWuavLyiEA6i4ZN1O2PoMRrPG4QpzRcYT9wrUeXWfQi3uAU91I3VaGjDDHN5Lar9qJryvCIN53INe9dcj/CjKwESvFZXLqvPqWdnNy1A/TmHbBWW0kIFI/VkGioUZMB2IB+Bl12Ypc1y8XxwADg3kGMtz0nB2kX6XUCI/kjMgX3mx/NsxkBtc8h1kxjD8A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5E8tva5VeiWDebMRKelLIwpUYYUIu8xtyTWuQvy6+EI=;
 b=n6nb9yD30F3GVdCJnIumDtqFvpgMPXkKd2UKaafSTiFrMw+BWEBf0lU3++o0EGF2PcnF6sxbAXbvPS0M0kgOfrnIw3aXuatnXUxXBSQ2J8mZta+CJxD22uRNnU1dcfbxRAgl8Vqg2wEUkK9xB0BzXC2b/7YzTIJvO5vYi/wmxt4=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jason Andryuk <jason.andryuk@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>
Subject: [PATCH] xen/efi: Handle efi_memmap with Xen relocating itself
Date: Fri, 6 Nov 2026 18:18:18 -0500
Message-ID: <20261106231818.482564-1-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00006003:EE_|PH0PR12MB8151:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b3dd3c2-9d56-45ef-525d-08df3c5c403d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|23010399003|1800799024|82310400026|36860700016|11063799006|56012099006|261022115727099003|261022075727099003|261021121427099003|261022105027099003|261021123027099003|261009223027099003|261102123227099003|261028144727099003|261026121527099003|261026140227099003|10067099003|6133799003|18002099003;
X-Microsoft-Antispam-Message-Info:
	6Vq74p7dGr0zn3qCVAzQT7TvnZgmn2lfv3XRNT4f2XSpodCOf63QW0dbjZSQzg0OXDtQN5hl47dIy9z0Xvl+TEo9Ke+lYxD/HXA5uBK7V75wAtEO/ds9YlC3oiqMve/I1VAT0zplHepZ7O1pOEytxurgLAx3K3sOqCIoSTy/9oT2S/gVSP+trdnFqj6529SkfbBCOnc6uIrRWdJ/ka0RMlVwNbNl5n/S+dQ3DEn47t5tixcpxdnnpK7qqozi5CKzxoITxVpcOEeIaffQdI7bOirjh01/mrm9SdBQRMk91IvEIjwcOyP21XcRdojbOR5OeNXGohLawTElPI1MXJaYQhYOakXYRUK3XZ7qkPsL8UrX1zqNKBVKyW9LPfW9saDz5pHCsGrp3GMwQO1EyC2QPKYeVbiSOJE0WUN5dQ6FG9pcodMOIRIt+6kWMUOyTfI55njUzHIR7w4+82hd0SRndzyws699A76IpT/8+KJ3UJyo+r8lKBI8CYY3aPEaWk6yzaxTetS7ias2JDVpIjhh+GWx85B+0nWT3+Br56DfyYwROkGVPIMeifGKE4LOZYbRlKMjPr0IE9kSU3BC0zvMCemXHcnJTSvsIyOpitRjOUdjJQVswQNMtdsy4bCQ5dxhXHwmu4ZokT7h+taS4oV8dTHo4B1Ra5YcZSPBvZGy0sSCffjHeq2aooJ6+s5QmYAdp2zSUI427srktynKMgFh7Q==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(1800799024)(82310400026)(36860700016)(11063799006)(56012099006)(261022115727099003)(261022075727099003)(261021121427099003)(261022105027099003)(261021123027099003)(261009223027099003)(261102123227099003)(261028144727099003)(261026121527099003)(261026140227099003)(10067099003)(6133799003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	GvdYk2iL8tlc9Q/GF6ZBoE5pyjELFC259LzVK47+FAAY5dWLqmc6/0hoJ8Y7JMl2z6zO2EFIG6veLAzL2c9lp7m+RNzwWhOHPVjv1t4xIk5ovbTk1J87P5w+xZFV62H5e58uBm7Zmn+tCEVI0D0+/V0rvfxtqssv9X6zqk4UA4iDoJWQItbKcHIdNCR/cFzqi+uKvGCYeFahEJTCnF0GHzdySamMvYK06AI5ac4UgK3FzHwH6VqX+fa9sh9w2ijcH5y0kCs4xThF+TWf3+Ujm5GnxwpnhxmoUgYCW8DsAXzAUGbL2ZtlurHqPcy78M84mZlxhqRe0o8IJZxkfWA7ynARgD31QREtyLd2HqkLSwh+XO6Zfzk/g1H3ouF6WNQimWCdAq/+VI0IIX9QC8T6t89BEXEziyaWSJDkngtJXvuZYu1rZApM+xyRgpuVmtB8
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:18:22.1889
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b3dd3c2-9d56-45ef-525d-08df3c5c403d
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN1PEPF00006003.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8151
X-purgate-ID: tlsNG-d62444/1794007359-1DA7E757-D7B2E92C/0/0
X-purgate-type: clean
X-purgate-size: 3405

With Xen booting via Multiboot2/GRUB on an EFI platform, and modified to
use MULTIBOOT2_LOAD_PREFERENCE_LOW, Xen relocates itself with
move_xen().

However a PVH dom0 shows:
kernel: Failed to lookup header 0x77ffd000 in Xen memory map: error -3
kernel: ACPI=0x77ffd000

... for all the Xen efi memory map lookups.  Dumping the memory map at
runtime showed it was scrubbed.  Because Xen relocated itself, the
original physical address referenced through a directmap address goes
stale.

Add efi_arch_mmap_buffer_virt() to convert from the initial value to an
appropriate runtime value.  ARM uses Boot Services AllocatePool(), so it
must continue to use DIRECTMAP_VIRT_START.

For x86, we use an offset into the loaded Xen binary at the time of the
call and add the to XEN_VIRT_START.  ebmalloc() allocates from the Xen
image memory, so it moves during relocation.  xen_phys_start is set for
xen.efi in efi_exit_boot(), but not for xen.gz, so it cannot be used
Use `lea __image_base__(%rip)` to get the current load address, and use
that to calculate the offset into the Xen image.  That offset is also
valid from XEN_VIRT_START.

Fixes: c5b9805bc1f7 ("efi: create new early memory allocator")
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
I think it could be seen without MULTIBOOT2_LOAD_PREFERENCE_LOW if xen
chose to relocate itself.  But since grub usually loads xen high, it
doesn't relocate itself.
---
 xen/arch/arm/efi/efi-boot.h |  5 +++++
 xen/arch/x86/efi/efi-boot.h | 10 ++++++++++
 xen/common/efi/boot.c       |  2 +-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index 069cc68b0a..717bd8d607 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -449,6 +449,11 @@ static void *__init efi_arch_allocate_mmap_buffer(UINTN map_size)
     return ptr;
 }
 
+static void *__init efi_arch_mmap_buffer_virt(void *ptr)
+{
+    return ptr + DIRECTMAP_VIRT_START;
+}
+
 static void __init efi_arch_edd(void)
 {
 }
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index d738b839ee..ffc277ccfd 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -224,6 +224,16 @@ static void *__init efi_arch_allocate_mmap_buffer(UINTN map_size)
     return ebmalloc(map_size);
 }
 
+static void *__init efi_arch_mmap_buffer_virt(void *ptr)
+{
+    unsigned long load_base;
+
+    /* RIP-relative address is the current Xen load address. */
+    asm("lea __image_base__(%%rip), %0" : "=r" (load_base));
+
+    return ptr - load_base + XEN_VIRT_START;
+}
+
 static void __init efi_arch_pre_exit_boot(void)
 {
     if ( !trampoline_phys )
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index 89b5831691..5396bad7a5 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1425,8 +1425,8 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *Syste
     /* Adjust pointers into EFI. */
     efi_ct = (const void *)efi_ct + DIRECTMAP_VIRT_START;
     efi_rs = (const void *)efi_rs + DIRECTMAP_VIRT_START;
-    efi_memmap = (void *)efi_memmap + DIRECTMAP_VIRT_START;
     efi_fw_vendor = (const void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
+    efi_memmap = efi_arch_mmap_buffer_virt(efi_memmap);
 }
 
 /* SAF-1-safe */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:37:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:37:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477554.1682977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTUQ-00038y-A6; Fri, 06 Nov 2026 23:36:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477554.1682977; Fri, 06 Nov 2026 23:36:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTUQ-00038r-5V; Fri, 06 Nov 2026 23:36:58 +0000
Received: by outflank-mailman (input) for mailman id 1477554;
 Fri, 06 Nov 2026 23:36:57 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPTUO-00038l-VD
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:36:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTUO-007fiz-5T
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:36:56 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6449-e002-0a2a0a5209dd-0a2a450594f0-40
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:36:55 +0100
Received: from [52.101.52.46]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6496-4cb1-0a2a45050019-3465342eda11-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:36:55 +0100
Received: from MW4PR04CA0382.namprd04.prod.outlook.com (2603:10b6:303:81::27)
 by IA0PR12MB8208.namprd12.prod.outlook.com (2603:10b6:208:409::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Fri, 6 Nov
 2026 23:36:50 +0000
Received: from SJ1PEPF0000231F.namprd03.prod.outlook.com
 (2603:10b6:303:81:cafe::57) by MW4PR04CA0382.outlook.office365.com
 (2603:10b6:303:81::27) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:36:50 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF0000231F.mail.protection.outlook.com (10.167.242.235) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:36:49 +0000
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 17:36:49 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Fri, 6 Nov 2026 17:36:48 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=KuEISEOXIL9FtfsppweZP7ZfJDJCc8NfktLIXUSzVw8KI2vYkoxplXBUxRj0CWGeJqsWCFDiFF3t6HhH4a/7817p5aG6P39nwOUSZfxRcMfeW0Wystl4CsMTRo9IoxDva8KrqXpnrd+X8c0c9i2gHiHMl8wQ/BVV8dt6l3JaWp7c+tQkYw9UlvgO/vvOPf1UJXmvP0oOLRUR94fApW0H6uul+CpeWERKfHaPkmvHrZTvE9rJFzUKBpcuAoTMy3dlTt4QLLMj/9z3L6QBxhe57L6OGo91oDeMTHhhIXP1lINM8qXno6e8Ai3ldGfwxD4AKoBQH6D/Berj4YJ8Xyn0yw==
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=9UbMA8KwT+v/jWXBocaOx/JAX3SoO+6nvQu8Yzh23aM=;
 b=emP2tHuYiXKKytn+ytJexbUvRDpwXkKNYvI8YY/LoCh3ofTemb5XNxhiyTXd/m0I4uGFhdhXtMPgk7H3UmhdMMy5KOdUEnnQqw44iz4xrziq2ox+jWYf+ZaJcNBwx7pYECsn7unEcKWJYHo2+919Zp1L/Y6IzOm8xBNcnOiwUmVe1JE53qEXu6TxkjwqWHiD0kQC1TaPOI9nYk1yzSAg65Ybot4lFx++Tr4G7ln2/Ca/KNmzBOv7R2fowXMYtUB62X7Yd/mE2oNxHBYMvpwfPxzVnmbYauElAq79H7+vLpHsjCTA6Zwxof10a/10kypDbqPnHyFsW5uUvu3R6F5OMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.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=9UbMA8KwT+v/jWXBocaOx/JAX3SoO+6nvQu8Yzh23aM=;
 b=vswN9LCd6kVMCKt0co+zCGfJSa8hEGXJ9iRSWE0oZOsOWBlQi9ocvyL3cuK8Ynu5MKCeYsRqMnTSY+tgt0ZrHfvyosdh9dxphdnZZOPDgtdRy+iVQCOvQmXyVUrLL3PJJc5nCSB1A/WfyssearZPElHcB9Dwcr4tJPfHE0/VYDQ=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <729bd90c-af1d-45b6-a466-f18845a10daf@amd.com>
Date: Fri, 6 Nov 2026 18:36:48 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuidle: allocate processor_powers[] dynamically
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Teddy Astie
	<teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger@xenproject.org>
References: <4da146da-26ee-4ecd-a747-130ed0783324@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <4da146da-26ee-4ecd-a747-130ed0783324@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231F:EE_|IA0PR12MB8208:EE_
X-MS-Office365-Filtering-Correlation-Id: 591382d3-29c5-4989-c21b-08df3c5ed484
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|1800799024|376014|22082099003|18002099003|10067099003|261102123227099003|11063799006|261028144727099003|261022105027099003|261021121427099003|261026140227099003|261026121527099003|56012099006;
X-Microsoft-Antispam-Message-Info:
	QJkPbjSjwFT4fRtO5jaeh7zf0MVpRssaZfVuNiXApJYizKNpSsVj25pv/C7Lv4LyX+gOGgxu+hHgUe8EIlnToqlTjM8ZPN9BHRqipN6F+q0ZrAHaqXtFIVneZ/qxCTG2Cmp6TwbYF3IOwMNCQG6zfIRBiBBmz2FJEXn4s7ykwOxorQ+GylLxpqZ2NhGDhte8HKjfgWSw0pY8HRa73CuUrDQKJG9PUOvLhwXxn0/3QniU+lbAxVmf0YV3DWkuoWLIQ1Vb2tQV4z8C+ER0yqM0pWV7mvfEKSFzI1pQjt8VvKP3oZHDyIofU3PExsPgznpX4RgnmWH7KJjii84Q4KhWiHbii71mrJHSeg2NUu+QoWGS77dXh5PKIgkzVl4SQK2AOEqUHMcN/AQ1s6OwpzvvdLUSxS47TkLxoOVyDZqVeReb5XnKVLgk38/ITJ89tdtrHYT/TfdLO+bWwHpf2X4H+0KV6lk5gjQN2V2Pxb6/oMqO4qYjOpDnx4MuifvgD2iE4J20Duq0S8lXNJCsG5yZjPITZhgDRV7nYOEddk0yfFDYY9YmYMGSdL8x6T7GAi/RwvPQ40ChfKo/r8TuhjssDMJ47wJ9TFNPju2h8G1RZGYxbKJEzKhfSVyWGabTTsAfIKdI8xpBJdWe6jho41NFanax9QlfH/epk9kGzkT4c89TyJdOShbXSM018H6WWo9u05CW079jAQmpZkTEwZt42w==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(1800799024)(376014)(22082099003)(18002099003)(10067099003)(261102123227099003)(11063799006)(261028144727099003)(261022105027099003)(261021121427099003)(261026140227099003)(261026121527099003)(56012099006);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	SSUsfnOb2BYajTpH3Cph9Oyya4hE2XsHlV4cxflgIB+wb0+ZSklwlV0g5c/dwQk5EcaBt9FupbOZaYebPM9EqBvytnDwt6Q1vOCXwOX8Mkbwk4aatJ0v6RCaT/eQ38XIGtB//UPoNZFjk1NhJ96NP5hHw71q+X4ieKGffUO94mZlaXeyK2Y4l2JNT+31OZQNCVOXkpYO5Q3nlQeJCD06vGaoXvhlcwp+ngvw0zdGaYT1MJ7GiZmD9kyNpsbm1SioLWnCm5zM/GHIV3NoWdkpAb6k8NhlbpTQb228l0DV21+Cir7xyOohVXYyWOZeaSdzp/OklbTIPLsXPFdwvu7gktFKF5wbZ0u1mEYuDyJlMZ0NWRue9D69L8PCOAk9zIfhw5iSWsRbKxdvFKJiIeC79HDAPJpkCUyRhLUttRVrrTcMBsci8yxUvbv3WnE+w2VE
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:36:49.8920
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 591382d3-29c5-4989-c21b-08df3c5ed484
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF0000231F.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8208
X-purgate-ID: tlsNG-c201ff/1794008215-728B62A1-AA0C7862/10/78276251493
X-purgate-type: spam
X-purgate-size: 1029

On 2026-11-03 07:52, Jan Beulich wrote:
> There's no need to have a NR_CPUS-dimensioned static array there.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Some of the new conditionals checking processor_powers may arguably want
> to check (really: might better have been put there long ago) xen_cpuidle
> instead. Thoughts?



> @@ -1694,6 +1702,15 @@ static int __init cf_check cpuidle_presm
>       if ( !xen_cpuidle )
>           return 0;
>   
> +    processor_powers = xvzalloc_array(struct acpi_processor_power *,
> +                                      nr_cpu_ids);
> +    if ( !processor_powers )
> +    {
> +        printk("CPUIDLE: disabled - not enough memory\n");
> +        xen_cpuidle = 0;
> +        return -ENOMEM;
> +    }
> +
>       mwait_idle_init(&cpu_nfb);
mwait-idle.c accesses processor_powers[], too, but that should not be 
accessible since we don't make it into mwait_idle_init()?

If so:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:44:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:44:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477570.1682984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTbq-00052d-VN; Fri, 06 Nov 2026 23:44:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477570.1682984; Fri, 06 Nov 2026 23:44:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTbq-00052W-Sj; Fri, 06 Nov 2026 23:44:38 +0000
Received: by outflank-mailman (input) for mailman id 1477570;
 Fri, 06 Nov 2026 23:44:38 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPTbq-00052Q-0o
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:44:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTbp-004r4S-76
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:44:37 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee664a-8faa-0a2a0a5109dd-0a2a4502a634-14
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:44:36 +0100
Received: from [40.93.196.24]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6663-6ca4-0a2a45020019-285dc4187f06-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:44:36 +0100
Received: from MW4PR04CA0169.namprd04.prod.outlook.com (2603:10b6:303:85::24)
 by IA1PR12MB8553.namprd12.prod.outlook.com (2603:10b6:208:44e::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Fri, 6 Nov
 2026 23:44:32 +0000
Received: from BY1PEPF00026965.namprd05.prod.outlook.com
 (2603:10b6:303:85:cafe::ac) by MW4PR04CA0169.outlook.office365.com
 (2603:10b6:303:85::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Fri, 6
 Nov 2026 23:44:31 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BY1PEPF00026965.mail.protection.outlook.com (10.167.244.149) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Fri, 6 Nov 2026 23:44:31 +0000
Received: from satlexmb07.amd.com (10.181.42.216) 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.53; Fri, 6 Nov
 2026 17:44:30 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Fri, 6 Nov 2026 17:44:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=pA6lnio+yp2XDRhpMrxACnFGpBR6RfsWvqWx8RaoxpAXFD+PZReyRlQhjZC0VFovhLWIJn6fjbGx23LdHgl9yZclJguf7+kSOPqZ8DNYxQMLiwxP59Lu4lQMh7AH95S4HFpWWWmUr6m+J/F5rZvJWi+e8mNvsFtpE7JnPT2CtjExDr7EFiZLjMhxSUjMcvbfONeaxOH8WVbav9ggPoVkHxPsVcMAXHTXICG9h+LW7+38/h6nnvzcb1nzb6+hZ3oHdS7Q2NUcXjPNMsaFDj9hlk8hussnPe5yG86RlxlfA6INajr+d5iIk5FjDw4Btf1H818sLLe/lN7MwPhVMboaHg==
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=dP6Q/DdJ5V7jPEDdOWQPXjI4nlC2dexIFtt3GQhAaPc=;
 b=wMy2Nm2f7nlXv7IQC04cBECWrfDnvhUOQsBszJ1jH5VHRq99QZrTTEVJsfqFpyIK4+xwekL6HEox1jVZ8QuyDqHAYv+iNNxKfnzs5slWVSFXAwb5QQwMLUFOw1wPe40S1R+zOw8uTdYzB1mMrG9klV/Z+bPAL2bkpe8Ldu6WOyIiN1++s24yXOvFjB3VeFCftRTKYK3mEO+3kYqG/MD2BDVdst8mkjdRUJ1ntXkT5jRhFJmXj9i0StGY84zrZdYZP1Hb71SlLoGT47B9i91in93Ybz3dJZ0DaaxFEdPCkzIgfKyKS1/dzjh4ASKaN0OA/gzbNxxqEb9asv0ZoxBQwA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.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=dP6Q/DdJ5V7jPEDdOWQPXjI4nlC2dexIFtt3GQhAaPc=;
 b=dBpjsPq5E8AJekVyg42S6cJNUA4ttGXTwzzu2ekQkYevtItrec3/ZoFfBrstSCVLUiANtI2Lk8e86tiyVGjtKIdEUAvqkEGde5ZcfYSPXlnw8nuRymkWO+sMULGcb2E2gTdhxPy8tkYTsh4UXlRICJY9T2u3YI0ZrGe3tIoH3cc=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <00e27752-0049-4112-9ce8-97f0d2788d1a@amd.com>
Date: Fri, 6 Nov 2026 18:44:29 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH] x86/cpufreq: allocate processor_pminfo[] dynamically
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, Teddy Astie
	<teddy.astie@vates.tech>
References: <9cd6da48-7a5e-4971-93e1-7d7262ddf7fc@suse.com>
Content-Language: en-US
In-Reply-To: <9cd6da48-7a5e-4971-93e1-7d7262ddf7fc@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF00026965:EE_|IA1PR12MB8553:EE_
X-MS-Office365-Filtering-Correlation-Id: 7837d898-78a6-4a41-eb08-08df3c5fe7ab
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|36860700016|1800799024|82310400026|11063799006|56012099006|261009223027099003|261022075727099003|10067099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	h8Up+UF/JyKlRUhoQ96U2JYGhvoXX9zQQZ7fOeF0YvT0NUqxhBk5QiLu4udpdxurlVOz6NorF35hPtIwM41lszlAHW8WsjG2GGjezfaPSki0vRo/ouSz024p/9mN28WYBTIjfTw+wEmKiBQ/kwiURI7PWFTG8/w4VOf1+zh9L8ubCxz1pvXJKTSDW6haMLCJBZMqIn9qLXmy1i9ESIKBOVySZO5VH8tZSKXNdWgl1izGZEo2GXXYiZo8Q9O6gK2mcZACx5TQg0wjsp2vc5ow+I99N5GfN/cQJt8FLP+xmnntnD5Q4zaRVRa773PP+6CZBkeRoxv51/HSVYyCPB69C8I12hxKFtBwQSQ2urpiK9sBlpEVjyprxmKHFgfYmQydAHZFaBjPZMNYjIN/Uc4F9jveQ9s+7HOtjDPkUOI9wtQBxQxkH1V68MMt9SdcLBKpbtk6SuI+CkJjckWktrKdP1URmSShb8hrRCpkorYijmxK6T6MM8K/2lJxlAaVyWJP6WQy1b4QUjmwchGYfoCAT1pTYuzuvRP4Lxa36mUPy1oHwgjyFJk+FLlPIF21Skl4EjYzqbDKyV5TBWM1k5fqpKIWenDqmxPn9lWnRu/cpAWg0akp2Pelzvid6H3zYrGwZlCV89aUsgQsXw20vl0FWEgUhpMLBQgIhb4AsONaH9c629chHlGE/Bs3+9j9sdzwTfxr1z65d8qdHOeB99+EWA==
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)(23010399003)(36860700016)(1800799024)(82310400026)(11063799006)(56012099006)(261009223027099003)(261022075727099003)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	6hiTafJ0bAPSGBEYpIGA9c0uz0Ij3oBpNoMVFkb/MyuZzMfXF1kfeAlPQCpy5HP0kt4k2PkrzlwuGg1yo0h+LiPrNf3A6fI88/P6IDlChNLZY4R3so3rSumt5a1QrG+IohpQHqzWXqwpnko3eZ0sDheTgDFxBpKlEYx08e5TP+zxFyi10Gfb+vt2ez3B1z8VEgPNx5UbafpmBx69m+/EvxcjWwsH5QVA+Ou+XVliDUtfp0Ny1/DXE2qnEJG1aevgGEeMZnq3hfHueM9LsuAsYkJ0pqvrkFOAc6LeALdqQObEU8dZBQfgD0bRNCXY7znf5TVolkmtOdZuShrKgWpsuwRD6aDxqvSFghqvMlnKLSdmt+aYNEkLRmXKjoDLBBCzBJ98HJtXb0NCaGOFDQXAHkSu8AyQeeWIXBjUWQL05v+goI29oCLkhCqdW3aQrJtF
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2026 23:44:31.4984
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7837d898-78a6-4a41-eb08-08df3c5fe7ab
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:
	BY1PEPF00026965.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8553
X-purgate-ID: tlsNG-720697/1794008676-66AB52AC-FD997D84/10/78276251493
X-purgate-type: spam
X-purgate-size: 1011

On 2026-11-03 07:53, Jan Beulich wrote:
> There's no need to have a NR_CPUS-dimensioned static array there.
> 
> As ordering of pre-SMP initcalls isn't well-defined, allocate the array
> from both cpufreq_presmp_init() and cpufreq_register_driver().
> 
> Alongside adding a few NULL checks, drop a redundant one from
> get_cpufreq_para().
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/drivers/acpi/pm-op.c
> +++ b/xen/drivers/acpi/pm-op.c
> @@ -104,8 +104,7 @@ static int get_cpufreq_para(struct xen_s
>       pmpt = processor_pminfo[op->cpuid];
>       policy = per_cpu(cpufreq_cpu_policy, op->cpuid);
>   
> -    if ( !pmpt ||
> -         ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||
> +    if ( ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||

It's redundant today, but that depends on the other check.  Though maybe 
get_cpufreq_para could take pmpt as an argument?

Anyway:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Fri Nov 06 23:56:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 06 Nov 2026 23:56:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477593.1682994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTnO-0007Ny-3O; Fri, 06 Nov 2026 23:56:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477593.1682994; Fri, 06 Nov 2026 23:56:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPTnO-0007Nr-0G; Fri, 06 Nov 2026 23:56:34 +0000
Received: by outflank-mailman (input) for mailman id 1477593;
 Fri, 06 Nov 2026 23:56:33 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xPTnM-0007Nk-SX
 for xen-devel@lists.xenproject.org; Fri, 06 Nov 2026 23:56:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPTnM-001LoL-6D
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:56:32 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee6923-8faa-0a2a0a5109dd-0a2a4502b0c2-2
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:56:32 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6aee692f-6ca4-0a2a45020019-d155802ea9e8-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 00:56:32 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4a2072b9832so607135e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 06 Nov 2026 15:56:32 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7e32b46a3sm19200735e9.6.2026.11.06.15.56.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Nov 2026 15:56:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1794009391; x=1794614191; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=u/++iBq87OEZlSRysDMyKl+pJtbf6Rmz2e5RRpkSpU4=;
        b=Frtb/vbV03xeCsWQg1Qx4T50CsPOMeV5fzk3bZk8YPqw8KbNDsHkzmm/tH8N0dzinv
         5LNmvXRWR5u0HKV1oEylVsxtYIhZX88Gsb8olkePn4XeP0ejqNZkmxsYwDNHDWbmPtCZ
         yqcbLafyWNJHJJ6ZRAqOI0kjCTuwKRQa+i17s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794009391; x=1794614191;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=u/++iBq87OEZlSRysDMyKl+pJtbf6Rmz2e5RRpkSpU4=;
        b=v9WuDSdldINKCZIicjUAEc2lKfPWHiYmEIYuCLAIf5RwWjssDuRoiXe3j7U+G7ON/L
         Wd0PNti6wk9baIexr0s2a5f6B9OphD42HoGVhgWTUkTJHoH2Cr/uQZsp/BUqIncspUkA
         zwp5j4RcQ8kJzCToJfds/my+O9w5MLKqQQfG8UwCBREgQFIV9qn18EGZKN6VuPHTdSPl
         ArGdvO75z40r8wi1hVElnSWLUBwBL9nTK8ywRtBGtF8hti/ssfJtzq+6BlRGgNNrWHuN
         jK7JbBn4ZqYaCnR6oHyqAQwvy4im0rUMl1N1NAWWCNjF3EwCkJwmTVXZxgke19ceUn6R
         O2Mg==
X-Gm-Message-State: APuU4Z99YTFDridSDD2H6DYgkEPE6eAOuWFJicQY8EjQlqiDiqj3BJXy
	rby77ue4XvE+bDYg+q9mWHdUe17ROT9wM6d2KUsRqd/RVgYXMNOnnvPOk7EOMYXCPRCYTg6wAaT
	ZR67xyMg=
X-Gm-Gg: AYBFou2pvTJUL6+OY61c+EhR0hF0Iyw5p08PlUaXnp6ReNZWsRq4RYpMLm2EartNDQb
	IWgvbjLOzQSyzAlfTsiD/G9X1Os+6sX19h69O3eOOhxWJ0BbNJjodVq6CO6NlZH/yn07ez5PPrG
	TK0MItmomCh6iR/yGgrsZ6KAu1gTjJKEXVw3VuOzCSlKHsQS6ojJjbxFxLzaw7DH9VyExXGqyLW
	5gXzs5fk71uD4+4zyzVoVAYfMYcc+MMTioO1wWZuEGwK8O6kdcEGSYhFqFP+hlss6KbqDUfO6rE
	AV25upougPjNeXF8cvh7r2Jk9ExVgKLk3O555agajZ37a856GMrJVv7J2Ln6gp3HNQOsP9OhUlQ
	cOaRTwLALfDbfBXugL2Dwk3ZoDjJd6dz8Vh53es30il+xJEbhAImgSSkBhwswxxBE4YQW9VetKm
	Y9Me6sPJ+Q8/y1Do9hPkquKRuc79I7tPfR6IepkVsHnrHJKTFrRPG3XHV1YpRaW8XCkCUj1Rp84
	eYVpRDdV1W8V89ab+f0IJ1ZQ1Pap8ljfOJ9bvH+yIenp6jdNbeLiiNaQhPg1pOVEM3Dnf6ATNPE
	hm5c4bBwQjm+o0GwMXUmPbMXBwIV1WGsa9H4CEfK9iQOINqRF/SE5FH1z/m9fH9BIybLyMf4oB3
	X5wEY9byd+yIScrTR6ES+KEMH
X-Received: by 2002:a05:600c:8115:b0:4a2:10f9:37db with SMTP id 5b1f17b1804b1-4b8190f468amr8518525e9.7.1794009391423;
        Fri, 06 Nov 2026 15:56:31 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH v2] x86/svm: Cleanup vintr_t type
Date: Fri,  6 Nov 2026 23:56:29 +0000
Message-Id: <20261106235629.2799832-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1794009392-67ABD2AC-4DD0BECD/10/78276251493
X-purgate-type: spam
X-purgate-size: 13355

From: Ross Lagerwall <ross.lagerwall@citrix.com>

Rearrange the union to drop the .fields infix, rename bytes to the more
common raw, adjust types where appropriate, and simplify some names.
Adjust the users accordingly.

No functional change intended.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Jason Andryuk <jason.andryuk@amd.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Denis Mukhin <dmukhin@ford.com>

v2:
 * Further adjustments to names, swap to true/false for bools.
---
 xen/arch/x86/hvm/svm/intr.c      | 19 +++++++--------
 xen/arch/x86/hvm/svm/nestedsvm.c | 33 +++++++++++++------------
 xen/arch/x86/hvm/svm/svm.c       | 18 +++++++-------
 xen/arch/x86/hvm/svm/vmcb.c      |  6 ++---
 xen/arch/x86/hvm/svm/vmcb.h      | 41 +++++++++++++++-----------------
 5 files changed, 55 insertions(+), 62 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 2224f1834741..dfe6d8347605 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -34,9 +34,9 @@ static void svm_inject_nmi(struct vcpu *v)
     uint32_t general1_intercepts;
     intinfo_t event;
 
-    if ( vintr.fields.vnmi_enable )
+    if ( vintr.vnmi_en )
     {
-        vintr.fields.vnmi_pending = true;
+        vintr.nmi_pending = true;
         vmcb_set_vintr(vmcb, vintr);
         return;
     }
@@ -93,7 +93,7 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
              */
             ASSERT(gvmcb != NULL);
             intr = vmcb_get_vintr(gvmcb);
-            if ( intr.fields.irq )
+            if ( intr.intr_pending )
                 return;
         }
     }
@@ -122,10 +122,10 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
         return;
 
     intr = vmcb_get_vintr(vmcb);
-    intr.fields.irq     = 1;
-    intr.fields.vector  = 0;
-    intr.fields.prio    = intack.vector >> 4;
-    intr.fields.ign_tpr = (intack.source != hvm_intsrc_lapic);
+    intr.intr_pending = true;
+    intr.intr_prio    = intack.vector >> 4;
+    intr.ign_tpr      = (intack.source != hvm_intsrc_lapic);
+    intr.vector       = 0;
     vmcb_set_vintr(vmcb, intr);
     vmcb_set_general1_intercepts(
         vmcb, general1_intercepts | GENERAL1_INTERCEPT_VINTR);
@@ -153,15 +153,14 @@ void asmlinkage svm_intr_assist(void)
         intblk = hvm_interrupt_blocked(v, intack);
 
         /*
-         * When vNMI is active, NMIs can be injected by setting vnmi_pending
+         * When vNMI is active, NMIs can be injected by setting nmi_pending
          * and hardware will deliver them at the next appropriate opportunity.
          * Consider them not blocked, to avoid trying to open an NMI Window.
          *
          * Correctness here relies on the fact that all vNMI capable hardware
          * has vGIF, and vGIF is always activated when appropriate.
          */
-        if ( intblk == hvm_intblk_nmi_iret &&
-             vmcb->_vintr.fields.vnmi_enable )
+        if ( intblk == hvm_intblk_nmi_iret && vmcb->_vintr.vnmi_en )
             intblk = hvm_intblk_none;
 
         if ( intblk == hvm_intblk_svm_gif )
diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index d970869cfd96..610c8c213cf2 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -427,7 +427,7 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
     if ( !clean.tpr )
     {
         n2vmcb->_vintr = ns_vmcb->_vintr;
-        n2vmcb->_vintr.fields.intr_masking = 1;
+        n2vmcb->_vintr.vintr_masking = true;
     }
 
     /* Interrupt state */
@@ -637,7 +637,7 @@ nsvm_vcpu_vmentry(struct vcpu *v, struct cpu_user_regs *regs,
     svm->ns_hap_enabled = vmcb_get_np(ns_vmcb);
 
     /* Remember the V_INTR_MASK in hostflags */
-    svm->ns_hostflags.vintrmask = ns_vmcb->_vintr.fields.intr_masking;
+    svm->ns_hostflags.vintrmask = ns_vmcb->_vintr.vintr_masking;
 
     /* Save l1 guest state (= host state) */
     ret = nsvm_vcpu_hostsave(v, inst_len);
@@ -723,8 +723,8 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_user_regs *regs,
     struct vmcb_struct *ns_vmcb;
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
-    if ( vmcb->_vintr.fields.vgif_enable )
-        vmcb->_vintr.fields.vgif = 0;
+    if ( vmcb->_vintr.vgif_en )
+        vmcb->_vintr.gif = false;
     else
         svm->ns_gif = 0;
 
@@ -979,7 +979,7 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v, struct cpu_user_regs *regs)
     /* Virtual Interrupts */
     ns_vmcb->_vintr = n2vmcb->_vintr;
     if ( !svm->ns_hostflags.vintrmask )
-        ns_vmcb->_vintr.fields.intr_masking = 0;
+        ns_vmcb->_vintr.vintr_masking = false;
 
     /* Interrupt state */
     ns_vmcb->int_stat = n2vmcb->int_stat;
@@ -1198,8 +1198,8 @@ nestedsvm_vmexit_defer(struct vcpu *v,
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
-    if ( vmcb->_vintr.fields.vgif_enable )
-        vmcb->_vintr.fields.vgif = 0;
+    if ( vmcb->_vintr.vgif_en )
+        vmcb->_vintr.gif = false;
     else
         svm->ns_gif = 0;
 
@@ -1461,8 +1461,8 @@ nestedsvm_gif_isset(struct vcpu *v)
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
 
     /* get the vmcb gif value if using vgif */
-    if ( vmcb->_vintr.fields.vgif_enable )
-        return vmcb->_vintr.fields.vgif;
+    if ( vmcb->_vintr.vgif_en )
+        return vmcb->_vintr.gif;
     else
         return svm->ns_gif;
 }
@@ -1509,7 +1509,7 @@ void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
 
     /* After a CLGI no interrupts should come */
     intr = vmcb_get_vintr(vmcb);
-    intr.fields.irq = 0;
+    intr.intr_pending = false;
     general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
     vmcb_set_vintr(vmcb, intr);
     vmcb_set_general1_intercepts(vmcb, general1_intercepts);
@@ -1543,12 +1543,11 @@ void svm_nested_features_on_efer_update(struct vcpu *v)
             vmcb_set_general2_intercepts(vmcb, general2_intercepts);
         }
 
-        if ( !vmcb->_vintr.fields.vgif_enable &&
-             cpu_has_svm_vgif )
+        if ( !vmcb->_vintr.vgif_en && cpu_has_svm_vgif )
         {
             vintr = vmcb_get_vintr(vmcb);
-            vintr.fields.vgif = svm->ns_gif;
-            vintr.fields.vgif_enable = 1;
+            vintr.gif = svm->ns_gif;
+            vintr.vgif_en = true;
             vmcb_set_vintr(vmcb, vintr);
             general2_intercepts  = vmcb_get_general2_intercepts(vmcb);
             general2_intercepts &= ~(GENERAL2_INTERCEPT_STGI |
@@ -1567,11 +1566,11 @@ void svm_nested_features_on_efer_update(struct vcpu *v)
             vmcb_set_general2_intercepts(vmcb, general2_intercepts);
         }
 
-        if ( vmcb->_vintr.fields.vgif_enable )
+        if ( vmcb->_vintr.vgif_en )
         {
             vintr = vmcb_get_vintr(vmcb);
-            svm->ns_gif = vintr.fields.vgif;
-            vintr.fields.vgif_enable = 0;
+            svm->ns_gif = vintr.gif;
+            vintr.vgif_en = false;
             vmcb_set_vintr(vmcb, vintr);
             general2_intercepts  = vmcb_get_general2_intercepts(vmcb);
             general2_intercepts |= (GENERAL2_INTERCEPT_STGI |
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 666bcd3eb483..3e08610d151f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -498,8 +498,8 @@ static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v)
     if ( vmcb->int_stat.intr_shadow )
         intr_shadow |= HVM_INTR_SHADOW_MOV_SS | HVM_INTR_SHADOW_STI;
 
-    if ( vmcb->_vintr.fields.vnmi_enable
-         ? vmcb->_vintr.fields.vnmi_blocking
+    if ( vmcb->_vintr.vnmi_en
+         ? vmcb->_vintr.nmi_blocked
          : (vmcb_get_general1_intercepts(vmcb) & GENERAL1_INTERCEPT_IRET) )
         intr_shadow |= HVM_INTR_SHADOW_NMI;
 
@@ -516,9 +516,9 @@ static void cf_check svm_set_interrupt_shadow(
     vmcb->int_stat.intr_shadow =
         !!(intr_shadow & (HVM_INTR_SHADOW_MOV_SS|HVM_INTR_SHADOW_STI));
 
-    if ( vintr.fields.vnmi_enable )
+    if ( vintr.vnmi_en )
     {
-        vintr.fields.vnmi_blocking = block_nmi;
+        vintr.nmi_blocked = block_nmi;
         vmcb_set_vintr(vmcb, vintr);
     }
     else
@@ -964,8 +964,7 @@ static void noreturn cf_check svm_do_resume(void)
 
         /* Reflect the vlapic's TPR in the hardware vtpr */
         intr = vmcb_get_vintr(vmcb);
-        intr.fields.tpr =
-            (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
+        intr.tpr = (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
         vmcb_set_vintr(vmcb, intr);
     }
 
@@ -2542,7 +2541,7 @@ void asmlinkage svm_vmexit_handler(void)
     {
         intr = vmcb_get_vintr(vmcb);
         vlapic_set_reg(vlapic, APIC_TASKPRI,
-                   ((intr.fields.tpr & 0x0F) << 4) |
+                   ((intr.tpr & 0x0F) << 4) |
                    (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0x0F));
     }
 
@@ -2776,7 +2775,7 @@ void asmlinkage svm_vmexit_handler(void)
         u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
         intr = vmcb_get_vintr(vmcb);
 
-        intr.fields.irq = 0;
+        intr.intr_pending = false;
         general1_intercepts &= ~GENERAL1_INTERCEPT_VINTR;
 
         vmcb_set_vintr(vmcb, intr);
@@ -3067,8 +3066,7 @@ void asmlinkage svm_vmexit_handler(void)
 
     /* The exit may have updated the TPR: reflect this in the hardware vtpr */
     intr = vmcb_get_vintr(vmcb);
-    intr.fields.tpr =
-        (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
+    intr.tpr = (vlapic_get_reg(vlapic, APIC_TASKPRI) & 0xFF) >> 4;
     vmcb_set_vintr(vmcb, intr);
 }
 
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 33c85ea3bfc5..91b9581a2e34 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -105,7 +105,7 @@ static int construct_vmcb(struct vcpu *v)
     vmcb->_iopm_base_pa = __pa(v->domain->arch.hvm.io_bitmap);
 
     /* Virtualise EFLAGS.IF and LAPIC TPR (CR8). */
-    vmcb->_vintr.fields.intr_masking = 1;
+    vmcb->_vintr.vintr_masking = true;
 
     /* Don't need to intercept RDTSC if CPU supports TSC rate scaling */
     if ( v->domain->arch.vtsc && !cpu_has_tsc_ratio )
@@ -192,7 +192,7 @@ static int construct_vmcb(struct vcpu *v)
     if ( default_xen_spec_ctrl == SPEC_CTRL_STIBP )
         v->arch.msrs->spec_ctrl.raw = SPEC_CTRL_STIBP;
 
-    vmcb->_vintr.fields.vnmi_enable = cpu_has_svm_vnmi;
+    vmcb->_vintr.vnmi_en = cpu_has_svm_vnmi;
 
     return 0;
 }
@@ -275,7 +275,7 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
            vmcb_get_iopm_base_pa(vmcb), vmcb_get_msrpm_base_pa(vmcb),
            vmcb_get_tsc_offset(vmcb));
     printk("tlb_control = %#x vintr = %#"PRIx64" int_stat = %#"PRIx64"\n",
-           vmcb->tlb_control, vmcb_get_vintr(vmcb).bytes,
+           vmcb->tlb_control, vmcb_get_vintr(vmcb).raw,
            vmcb->int_stat.raw);
     printk("event_inj %016"PRIx64", valid? %d, ec? %d, type %u, vector %#x\n",
            vmcb->event_inj.raw, vmcb->event_inj.v,
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 8b351679fac5..bfe4a4521dcb 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -328,28 +328,25 @@ typedef union {
     uint64_t raw;
 } intstat_t;
 
-typedef union
-{
-    u64 bytes;
-    struct
-    {
-        u64 tpr:          8;
-        u64 irq:          1;
-        u64 vgif:         1;
-        u64 :             1;
-        u64 vnmi_pending: 1;
-        u64 vnmi_blocking:1;
-        u64 :             3;
-        u64 prio:         4;
-        u64 ign_tpr:      1;
-        u64 rsvd1:        3;
-        u64 intr_masking: 1;
-        u64 vgif_enable:  1;
-        u64 vnmi_enable:  1;
-        u64 :             5;
-        u64 vector:       8;
-        u64 rsvd3:       24;
-    } fields;
+typedef union {
+    struct {         /* Cleanbit 3 (TPR),  APM Name */
+        uint8_t tpr;                /* c   V_TPR */
+        bool    intr_pending:1;     /* c   V_IRQ */
+        bool    gif:1;              /*     VGIF */
+        bool    :1;
+        bool    nmi_pending:1;      /* c   V_NMI */
+        bool    nmi_blocked:1;      /* c   V_NMI_MASK */
+        uint8_t :3;
+        uint8_t intr_prio:4;        /* c   V_INTR_PRIO */
+        bool    ign_tpr:1;          /* c   V_IGN_TPR */
+        uint8_t :3;
+        bool    vintr_masking:1;    /* c   V_INTR_MASKING */
+        bool    vgif_en:1;          /*     VGIF_EN */
+        bool    vnmi_en:1;          /*     V_NMI_ENABLE */
+        uint8_t :5;
+        uint8_t vector;             /* c   V_INTR_VECTOR */
+    };
+    uint64_t raw;
 } vintr_t;
 
 typedef union
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 00:11:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 00:11:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477614.1683002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPU1c-000327-BB; Sat, 07 Nov 2026 00:11:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477614.1683002; Sat, 07 Nov 2026 00:11:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPU1c-000320-7o; Sat, 07 Nov 2026 00:11:16 +0000
Received: by outflank-mailman (input) for mailman id 1477614;
 Sat, 07 Nov 2026 00:11:15 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Jason.Andryuk@amd.com>) id 1xPU1a-00031u-T7
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 00:11:15 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPU1a-008Vlw-A0
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 01:11:14 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6c62-2eae-0a2a0a5409dd-0a2a4505e1c4-32
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 01:11:13 +0100
Received: from [52.101.56.7]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Jason.Andryuk@amd.com>)
 id 6aee6ca0-4cb1-0a2a45050019-346538072f5a-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 01:11:13 +0100
Received: from CH0PR03CA0416.namprd03.prod.outlook.com (2603:10b6:610:11b::7)
 by DS3PR12MB637004.namprd12.prod.outlook.com (2603:10b6:8:43f::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Sat, 7 Nov
 2026 00:11:10 +0000
Received: from DM3PEPF000265C2.namprd03.prod.outlook.com
 (2603:10b6:610:11b:cafe::79) by CH0PR03CA0416.outlook.office365.com
 (2603:10b6:610:11b::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Sat, 7
 Nov 2026 00:11:10 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 DM3PEPF000265C2.mail.protection.outlook.com (10.167.23.183) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 00:11:10 +0000
Received: from satlexmb10.amd.com (10.181.42.219) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 18:11:08 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com
 (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 18:11:08 -0600
Received: from [192.168.19.2] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Fri, 6 Nov 2026 18:11:07 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=FqEoyVql5/58l0CPzLzrUsAxwSElaU/GyWgZcn3CVU92HXvhgKnHE4LFvgWXOZMdAbHAtqvsklsfaDNCSQQLnZlYySBLSPJxaol8IjrITf2lVzbWEmJT2K/tos2Pa1kuV+deJXO/u7ekNPXtx342AI6VtmPF4SjBaI/1+tbfSGkHknpnEZZrtwxGMAGzfn0Rj+IPlmIwVCliowGWthsv/FiftCEJUBtLXdKAnJmAicBdXTnoWS+HWPJQSlJskB3msFcEPSNhZvwY2dIpvhxg81gqLjSQWB3io0jveCNtCJTwI3Kp4x8OJOP2rV7P72fhDAFBygCI52qACjvxJ0EXWA==
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=HgVRn+JthJCU/a3f/yAhpe/2QUL+mvwRtOMP6JzrdyQ=;
 b=HsKRrDVtYJ9Xcaiu93oS++/isWCDbw7OsaBdUP2mSg5smrl5RnKvk9c5FgRm8hUC6+zN1q720qg042/qLMf8NeFrl/COPD8b0g8WhteGNNv7kUddoLbOdNPPue8eG4YezV6tcGcLoXUxUCkUROWWAdwKicVqDl5sFRnJ3YwQIiJzyAw4cvsOkGyKlqJGBKUCoRf0d56rF5qMONsaHx5KWmTC5wNXlurUp53uZM9ITPn2jZQRbWo2ghSLaITvzXooRTXaFHe4PdhfWCR7sDtI208MImSuf+35dE/l/5H124/Dkpc65onseofdDpbBOC5d/xFblSXIloFlOOsXuWwglw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.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=HgVRn+JthJCU/a3f/yAhpe/2QUL+mvwRtOMP6JzrdyQ=;
 b=x9OQtvzjS5MBlsaZvgNZhhlzumeiaOsZDrVFJxIBIMBPVirQ2L7fn/kxlMW8C/cGUhx1N0HdG3wWe5xtIFtoxS6f0hXrKswAJtCd/2g6ong2dF+1gm5TJDvQ+jWxkJW8Xrg9mHaIrjxtZ2j8Le7VuBynbClIvbHv3ed5d3inh98=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
Date: Fri, 6 Nov 2026 19:11:01 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/ocaml: Fix cleaning bindings test
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	<xen-devel@lists.xenproject.org>
CC: Andrii Sultanov <andriy.sultanov@vates.tech>, Guillaume Thouvenin
	<guillaume.thouvenin@vates.tech>, Anthony PERARD <anthony.perard@vates.tech>
References: <20261106231732.482518-1-jason.andryuk@amd.com>
 <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM3PEPF000265C2:EE_|DS3PR12MB637004:EE_
X-MS-Office365-Filtering-Correlation-Id: dde06e32-9b5a-4e61-dad7-08df3c63a096
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|82310400026|36860700016|261026140227099003|11063799006|4143699003|56012099006|261022075727099003|261021123027099003|261021121427099003|261022105027099003|261009223027099003|261102123227099003|261026121527099003|261028144727099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	GRYSYNoE/OUusWuiNy5Fyxlpl2mCiugWKK074w/rITuCnuVmxYFXtEiEUw5rua0gRUv9x+P+xO+5lHjtb052fQZZ+x+JEBz85vsavr3QXeUzguHmf9M282n0Z+huoXJXCbOnh0diNI8vMPQjAwfCMvJr9MiHPqywAk5HxPsL8HKHSrc//I5iX6KqVALZJOW4G7Id1f4xFgiHB6JKK+dQi8Oz+xlhQSBOebsmls0Bfd986lycqJU/RulLUDneTafo5TvMBNNgq7ZgS3GVR1J3y8TB2s5ZhHBz3KmrBw1+hlx7FOzMT+Oz2zhdbiUPwNDGMAe+ak++sLwzJeOhgSjHRj4Hlj9+NSLmZzOF1SJmK2cKlTySa+K1MwF8tVFooq4KTJvnn54nUjAqNd3fgscc3pnnn8cwcJCfHDP7mP5giEcN2boNv6BS7I2FTngMon7Fx0BkFm/UdJDNknoO+A96Q8/5g9AWnQYt0X25jBDn3MkEw6sGseoqlqvzAc+Lb6v2cfQQcjEH/bv6mKsXcPaTc8vrX4v0OCeQqT9tQDoE0dbmrZqhIKHQ2adE9N6uMyezAJDiiYsSqJCKJ7a2BNV1HeyYPUtcfCBb6FviYqQ+ESUMzwvVZHmUv/7UJavBX0lr1P5IR7mXJ52DBRdGnKfjUPDCVCN5T20CuuUwXIH0nV8QC7waO1haxnLpgmtORD9WgCy5NnTtffguzzZimaLmXQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(82310400026)(36860700016)(261026140227099003)(11063799006)(4143699003)(56012099006)(261022075727099003)(261021123027099003)(261021121427099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026121527099003)(261028144727099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	9QQOkut3++OFuTiKh1Ge4ozq6oAD/JD1Xs/5mntEg7nKFcEbwLn+5+WovrdXkk/TKe2kN8RwagRNu0W3NfJ602IM6dVc6HjbVLlZK8eLekfKrc2frxMjWMz018QsHLMq37SyHmvGur2JuHK+5YrcMQUzPoIBBM+FJbMDtKrEF46EYNkJwbIsnU18RQO933bNVnNRglu33v0qT9F9Yxso6MDWriQEsSyn+JXH9U+P9Y463JEe4gnL5IVye2tGl0OM6smqbidqFBO4G0YV5baV3ECb4B0k3Cd/jxJgnosCe0OJcMC/Qc3sL02WBjiupBBDt358fh6iGhYZjlXJcjWlVUUT+PanYNsdhww9O9h6nhW44JBRLE95yIDaimYo3ocYQogUvhHqf2WrPsBOEhIVVePNNnkh9Ez7VA0xcpDqXqrSD2M4IPJSwhONzU1OvzHA
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 00:11:10.2825
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dde06e32-9b5a-4e61-dad7-08df3c63a096
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DM3PEPF000265C2.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR12MB637004
X-purgate-ID: tlsNG-c201ff/1794010273-72EB12A1-A89EDB8A/0/0
X-purgate-type: clean
X-purgate-size: 992

On 2026-11-06 18:19, Andrew Cooper wrote:
> On 06/11/2026 11:17 pm, Jason Andryuk wrote:
>> make clean fails in the bindings tests:
>>
>> make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
>> rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
>> rm: invalid option -- 'c'
>> Try 'rm --help' for more information.
>>
>> Split the compiler flags out of the LIBS variable, since LIBS is passed
>> to rm.  The individual *.cxma files are deleted in their respective
>> directories.
>>
>> Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
>> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
> 
> Lovely...  Sorry for breaking this.
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks.  I just double checked and unix.cmxa isn't in the directory on a 
successful build.  So the whole thing could be moved to LIBFLAGS or a 
suitable name.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Sat Nov 07 01:06:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 01:06:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477657.1683012 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPUt9-0001zK-6k; Sat, 07 Nov 2026 01:06:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477657.1683012; Sat, 07 Nov 2026 01:06:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPUt9-0001zD-3y; Sat, 07 Nov 2026 01:06:35 +0000
Received: by outflank-mailman (input) for mailman id 1477657;
 Sat, 07 Nov 2026 01:06:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefano.stabellini@amd.com>) id 1xPUt8-0001z6-47
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 01:06:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPUt7-00FJdY-E3
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:06:33 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee7929-8faa-0a2a0a5109dd-0a2a4503af74-40
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:06:32 +0100
Received: from [52.101.193.4]
 (helo=CH1PR05CU001.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee7997-fae8-0a2a45030019-3465c104d619-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:06:32 +0100
Received: from SJ0PR03CA0254.namprd03.prod.outlook.com (2603:10b6:a03:3a0::19)
 by BY5PR12MB4196.namprd12.prod.outlook.com (2603:10b6:a03:205::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Sat, 7 Nov
 2026 01:06:28 +0000
Received: from SJ1PEPF00002322.namprd03.prod.outlook.com
 (2603:10b6:a03:3a0:cafe::4b) by SJ0PR03CA0254.outlook.office365.com
 (2603:10b6:a03:3a0::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Sat, 7
 Nov 2026 01:06:28 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 SJ1PEPF00002322.mail.protection.outlook.com (10.167.242.84) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 01:06:27 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Fri, 6 Nov
 2026 19:06:27 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 19:06:26 -0600
Received: from amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216)
 with Microsoft SMTP Server id 15.2.2562.53 via Frontend Transport;
 Fri, 6 Nov 2026 19:06:25 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=b6wydkhH86m7PcW7J1trOE98Nt1lOzhrT3qFl293SNqprxX0z+1CJeQFk8f4D359zoVaHgkjCWe2hrCAoghgrrJYKq1Zt1/hG8RMTKb7VAvwJIYOaTACANxA+zFoybtutYrLukX38A0N2Kx3OOWi9nZikckTVGd36jS+ds6iUzK7MbJ4CmHSAldAKhgmV6UhYqo2JfFRN/qCgL1ydBkz93IG9ml9xvnyx9kLqXxh6jclP+I3uIVP1U/tFxbgKMzcLMGHLbcd0gHnvfiqvKF8V47nXGL5mzScHn/dwEDvhhaDqGqicWd5hijrBhYUrQkP5OnmO2VmXmlCdYEcbXJ6Fw==
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=69fk94kAopaX87SwiE9TUjp1ZYcfe1Qrx/H1fvN4POo=;
 b=UCGsMrUX7///xhjx58wsUdr85SMYSofXJY/JegOKWsEssUlDPz6gRDipRKaDRHguobOO2ERKp9ZVEm05YA0ntKtILZmSe3IVxoPiOsOTQIGACvCM7rcnrpzhNDwyfNdj2PYW4RtWcdddp3S8/5cTqztON1OTkk3VJD6GqZGWH/PnZXKur8gXh/SzoEyD4IC31npGO1l98KWkW7bcGAxOnKUbn+44OnOQ0E/OH8iMYd7rJoQS1SOPf6B6jqnL31EPRRWy1g16SJ/oq+MtwPx+Q4XQpOB/Nei+mG4VvtHs7qSuh+3ruW3jCcOXperyS/B4JudjzVsYIswCAwy9UPN0mA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=69fk94kAopaX87SwiE9TUjp1ZYcfe1Qrx/H1fvN4POo=;
 b=lxQfUsLohwj9Z50VTs31tcU7qMpo9CgiS8FMM+VIiyF9Z8jkHlmfdO3Svx1DvzBLq4hVJlunlDSaOhfmqd+/eqzPbD/pD1CqzaeFFU5P+6eUvCPeoRGmcUw0S/lMkFIZuieVuOxOW/otzCP0xVjIjfB0OMPEkpOBImkK1EOO5CE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Stefano Stabellini <stefano.stabellini@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <stefano.stabellini@amd.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>, Michal Orzel
	<michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall
	<julien@xen.org>, Roger Pau Monne <roger@xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>
Subject: [PATCH] xen/gnttab: _cache_flush refuse an owner without a grant table
Date: Fri, 6 Nov 2026 17:06:23 -0800
Message-ID: <20261107010623.192975-1-stefano.stabellini@amd.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002322:EE_|BY5PR12MB4196:EE_
X-MS-Office365-Filtering-Correlation-Id: a55ecb9d-d80d-4170-09c8-08df3c6b59c0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|36860700016|82310400026|11063799006|56012099006|261021123027099003|261022105027099003|261009223027099003|261021121427099003|261102123227099003|261026140227099003|261026121527099003|261028144727099003|18002099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	Q96g1MmNLVCoyppdEgP83v5VRjOIZ8GrEehk8I7WiL/0yKJxvGuYMm7Nf6HUlTQQw3obShIGJ/PTgIHSHA6NJPx8s4C9YU/k3VXi5aobTd7QZnbAfuyMF2CkGCPpvV4B+j9iNMgE388xzuNVrEfikvJNrnqA/S2h9IrTz6syqL+8LdQ91F5B0t1fqju5sUVHXa4omzqtLUQ4d+W2tA0xv6SSDR5Hy6DFKoBhV9yA8G5uTlofiTbawYcagoXNSL+9Y3U5QP95r47t1+UTSP7dkHhmtkLd7//AgdScem/rL70oEVVM6Sypbde5xrmCCGwkE/8aPWwHX77ng8jHU3XMMFreMtX6d3xyLV8QewK1MOo9XpvcfIhrOo2Uria5ug5FWzuwQpt7QM3mRMJ3zGS8tWIJYKXtQssonwBVTqqzCRDxqMYBrOru5ceFujXR6s1Th3JViGrIk0PjT8BVwKIuIGhRniSHOIwpiFDYU6f3XAfkuHLdQzaXnBAA22h8hCsaT6G1nNHpaUBPy4xe4YX8DI3wPIzvpr3Ntfl6gHcrUrhoZE+B1vEbvpLr5S4BEGRh7X4A5lVLsadhx3dLctQXoyZipbRYgNUc8luD+LG+mOObE+uEXX/Ve/5NWWRYBZYjisqz2Eji7Cwv3GIG7RnN+C2Sm3v6nIF3+8W5nSLbuE/pU912I/JUf3bom8xh3zGpYlIXQBvw5AmnnPztA6Q5mw==
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)(23010399003)(376014)(1800799024)(36860700016)(82310400026)(11063799006)(56012099006)(261021123027099003)(261022105027099003)(261009223027099003)(261021121427099003)(261102123227099003)(261026140227099003)(261026121527099003)(261028144727099003)(18002099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	ADZgjB34WLeZz8maATf3OFO+2HbXC8o5f2So4OCTdQS/r4nxwrzOOGQGfd76VsZ1XHWth5+WB4a2pex82nKorQSpO2BN4wOGe7lkj902iBtIozdKZg700BTMtVu+Lgy0DZu9Kmv8cCJs6zRwLT4v8KCMY5uOemJ/Rkvq76jHyopsz18nqAWCnlXymYUdg5hTApRxM3rR9WP7KvfI8yH4p/9kCXe/LxhQSfVnZva54YWVZyQTBBFVBPRIkHMJb1a6wNIxczub2+alQpZEtaeeQhXsXmEU7Gay8h0F1ys27uRJeCcUfNm3ZXTtTnxgsZrKOoRDsfLF/suWAN6vgzovtkkWw+di1oXz+1HnxsQSx6srfadyOVT9w2lqm4edPrdIjCwFNhQ6CKE4uTA708VCAkTq/+cCVFDlrSaec76e8CGRaZj35UTcKdhLVQJZ4OOg
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 01:06:27.3814
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a55ecb9d-d80d-4170-09c8-08df3c6b59c0
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:
	SJ1PEPF00002322.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4196
X-purgate-ID: tlsNG-33051d/1794013592-776F34E9-31F127B4/0/0
X-purgate-type: clean
X-purgate-size: 1076

With CONFIG_STATIC_SHM, a shared memory region without a "role" is owned
by dom_io. A cache flush on such a page then reaches grant_read_lock()
with dom_io's NULL grant table. Reinstate the check, and give back the
page reference taken by page_get_owner_and_reference().

Fixes: bec8e3c1fb91 ("xen/gnttab: Drop owner->grant_table check in _cache_flush()")
Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
---
 xen/common/grant_table.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 2285c4aee8..999b10abcf 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3633,9 +3633,11 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
 
     page = mfn_to_page(mfn);
     owner = page_get_owner_and_reference(page);
-    if ( !owner )
+    if ( !owner || !owner->grant_table )
     {
         rcu_unlock_domain(d);
+        if ( owner )
+            put_page(page);
         return -EPERM;
     }
 
-- 
2.47.3



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 01:37:25 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 01:37:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477683.1683021 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVMt-0006gV-IF; Sat, 07 Nov 2026 01:37:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477683.1683021; Sat, 07 Nov 2026 01:37:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVMt-0006gO-F4; Sat, 07 Nov 2026 01:37:19 +0000
Received: by outflank-mailman (input) for mailman id 1477683;
 Sat, 07 Nov 2026 01:37:18 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPVMr-0006gC-ST
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 01:37:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVMr-00512p-39
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:37:17 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee806d-e002-0a2a0a5209dd-0a2a450cbdf8-30
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:37:16 +0100
Received: from [52.101.56.61]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee80cb-f479-0a2a450c0019-3465383d86fd-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:37:16 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SJ0PR03MB5728.namprd03.prod.outlook.com (2603:10b6:a03:2dc::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Sat, 7 Nov
 2026 01:37:13 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Sat, 7 Nov 2026
 01:37:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=uKlfJrHBKDAjYYVW4isozYdfKGlTIzeeNDQEHCNrYEbcr8Q3045ahH8cARoBToCwXgI91LyPWq7zJQN/FIBV0XGVW/7uoHZc1S+xjg2BINZ+/XNu+IzV6Rr7BBcdGbv+GYanRDx9MvCtJ8TnkOI8BJHXtx6kxv0ppuKlgCn3Km2H14fj6nUE1x5DLBJgvGKIdkjXIkSPt2vlU4Uj7Zu5hIQYTJeBkyT7TNK0g37t72M2cFAoWdT6L5/gUKTAvT4pM/lwG4rXehgDJRYtAaMcqL4rhmxw0qruVrZuiBTRPuY4KV3L3Uf2cYdPYaBvP9gHaFod7NHza0WDAAJLr0rxyg==
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=q7n8Ow6GSK/Yly+x71bdxoobWNiHgFAiEaPY+d4LSNo=;
 b=t+BOgEeVYlzmyfc3BrPeEfyWFpFS8hCm1rCBM7ia09TF5xiZpb4HIDcF/08OYKG6/CSx6DhEE1HtDlQqN4Um4J7H2+jHNpfCkx6gB1GTgV0IjdgDTg3cdIy1Am7KI95g/7D42SMOQYg6Moky3NzZNeB/B+HF7c/1rvhEd5IQiMNpVtRGxwLQIcn5IC+aCAV53Y9u0PHAXbhS5QDcKb7eukn6pQOuJMZmfQIVvNqanOyFeciBW2G9MVPjASiCiFmOJD/Pz8S/5TrwbNtb3TZ76wey/EZK6k5npBCILZk9/PhTJlkx1zs+eGzOsJzJlnIX+DIexq7pXShr1bzHLNnI6Q==
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=q7n8Ow6GSK/Yly+x71bdxoobWNiHgFAiEaPY+d4LSNo=;
 b=iT2sPEiGpI7kj6wJLmTwXWL8nsqJdDXv+DW77ejiVv5Mvv2nXAyoBYSZvTJaJNQYjfGoZFCyS3y4J+YNgSDysyh/uPlQQylTpvqFC/IiWygZu9Tfa7EmzCOe+8TJUlcZIgWdKet/t28EsorMR+67h3P13GavjORzQyroUiW8hn4=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <c28d472a-9642-4f12-955e-893916ba98f7@citrix.com>
Date: Sat, 7 Nov 2026 01:37:09 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Roger Pau Monne <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] xen/gnttab: _cache_flush refuse an owner without a grant
 table
To: Stefano Stabellini <stefano.stabellini@amd.com>,
 xen-devel@lists.xenproject.org
References: <20261107010623.192975-1-stefano.stabellini@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261107010623.192975-1-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0617.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:314::18) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SJ0PR03MB5728:EE_
X-MS-Office365-Filtering-Correlation-Id: 5d5ad57e-4ed8-4215-4f39-08df3c6fa5ba
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|18002099003|22082099003|10067099003|11063799006|5023799004|261026121527099003|261028144727099003|261026140227099003|261102123227099003|261021123027099003|56012099006|261021121427099003|261022105027099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	gN0cuN5LygEBSL7RVEhdD7ld4t57wvSrU67jFbW95d6k+YVEPeLbe9Nkj+PHBguKjAiRsxBp9+auBIp+PAca867BkdTeNrNtMxbc5Y/fB7IejBviTfkPSunhBN7HhLjhaijqYyBZ3XZqipk2Iadq9DUMHBTzEIdN3r7goVjuWrd4ZamdRNcAdyyhPGJOsHwTXYOuXif6SrWNIYJ+p2DQCr5CaG8jZ2jz6hhANOE/Aoy+EKdyt7fJxtsThwzJVnK9F7JqdVOzON+8XWICe6fiZ7RuvBbGpUjbkkxgVnDtXvF3knAyAdigdz1HluZM8CLMxoNi6g2emCH0hTpCUC8JuWhvfLSETTjPnhrzH4+6ooihpnCxuW2dAYXp7ZV3D04jOcL6ZYQxHNuMG3SlsU65T7iT0e6BlxB8yt74n7Or/HJr9YP/Zr2GM0KoYGOnFdT/idHuLf0oKrFTfx6btnAN/7J7M4oOB0tyfHUkXSQFJq2hU0Sqag4EJ6VsPSg5qx+c/vdm+GSEUJdvnxU7+G0P4Td+wjWrmBVNwfIReAQHHWL4J8G3IaKIjg/XALxvnJ0tIEjUsGa9LlIZhejcshUz1I765oXW5OOt4usuqChEemI1iApQggaYqdTkLVtrC/Gm88jDAEAbDkfQsCZZZDgyjvzSTdd4pg6bGXrpZAHIOxs=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(18002099003)(22082099003)(10067099003)(11063799006)(5023799004)(261026121527099003)(261028144727099003)(261026140227099003)(261102123227099003)(261021123027099003)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?N3lGNEppak5rUmxRQTZ1Q1J1TmVTUUFPN1lzUVd1ODV2RU9Xd2YwRW5qNkhi?=
 =?utf-8?B?M2ZOVGRLcHQrdEIxOTFkZmpyRk5BaE5HMDhrcGZBSG5uQUUrbms5YmNCMjJG?=
 =?utf-8?B?N0RaVkIwU0x3VDB6enpQQWxSVCt0QVJPbm1JblErUDdXdi85QU5IYjVmVFlj?=
 =?utf-8?B?WVJib0thbldvTGkzZDdlVmk4UGwyeDcySlRRRjVpQ3JnZXZocDY4aThDT2FF?=
 =?utf-8?B?dENvYmlqSnhSMFAzZ0U0V3d6NndyZkFvcVdlUVJKWUY5eHZVSzdid3VMeENq?=
 =?utf-8?B?cktFbWVWQ0NaU2pEVGFUYThkWXlmNTJxWHNEQVdIT1F0QUF5aVZDV3p6dVli?=
 =?utf-8?B?eS8yd1FteDdXMkc3Sm15a0ZWN3hSaXZMNUxiTmdBSnpGMExCYVVaeTk4ZlRa?=
 =?utf-8?B?WFppeXFEY3FUMDhHOXR4empteUlScCtrbTFEYjNpeGxsTXBpRGhUR3Z0d3lq?=
 =?utf-8?B?Q1B4VVN6SHJsVkRDMkhqY1krY1BjMGUrMUdyUHFzcFN4ZTNQa2x2U2N5MThk?=
 =?utf-8?B?SkxpajFSSC82SlFnN0RVc3FnNWRpdXY4OFN6QXltZmcwK1pIa2YxK0F0eVpM?=
 =?utf-8?B?c0tudjlhM2QySkIxak9pOG9IOXBRQkxPUThDL29mZENMa0xTUWsvNkgyaTlE?=
 =?utf-8?B?djhCWDNLUDZwRlhuWlV5ellrV0Jyend1bkxheTNramM3S1hha0V3R1FWUmZW?=
 =?utf-8?B?SEhyblE3Vk1WWGdMOFdwWnkvU1lrM2pTcmtpNGt1eFNHRGxkQ2JiTW50UTY5?=
 =?utf-8?B?SWgvTEJ2akRjTTlCWmNMay82eEJIa3VmZWdRK3dRaG9qMGhHVXhvSGk1UjB4?=
 =?utf-8?B?di9vKzFjaUkrTS85UDZyK1NLcGg3alN3REo3NjhhY0o3d29manhzVjZSbnIy?=
 =?utf-8?B?M2JmYzliaXJKdWcxallWM3BGZzNOdW5zVmRpTHp1RFAveHg4STJjSnJzckFs?=
 =?utf-8?B?VWNTN0RGU1FjQ1hVc2N5dEZtaldydGtNcDNYNE1VN0kvRGRvcUhoTU5xaWE1?=
 =?utf-8?B?NDljS3JMK1ZUOGNsU3lWVXdTVHF5ejNLNVRYODRpUHhmeDg4aHc3YzVpM2hn?=
 =?utf-8?B?OE1TMEJidU1QQVEvcDJ5Y01pQmdHbENpVEtFY2gxeHFWRmIvVGdQeDRWV1ly?=
 =?utf-8?B?TG5pM0ZPckZyZEQ2SG1kZkgxekREcG5DUEN5RHg5S09RMEcwQXRYUlJ0TmNS?=
 =?utf-8?B?MVdmblpWSEtwd1dEbzBUY2c4bDhQQ0ZaMUxJTW56cHBIZVc2UHlFNE1Hd2oz?=
 =?utf-8?B?WGtPYkN6RGZJTE1Pd25CSUFTZDZJK0czWmp3RHFKdHRzV2lpMlZmL3V6L2s5?=
 =?utf-8?B?ZEJ0aC8rVmxhZjJ1WDNOS0pqWHJQeisrcEdzY1AzZnJGcHZCcXJWbDJIU25D?=
 =?utf-8?B?R3dPV1lud3VlRm9HSDZZRXZaMjdGOUhMZ0pZdmNja1FKaG9HWURMejJtUkhQ?=
 =?utf-8?B?S0dWUndQVjZwaTVXNVg0MFZZdUtNUk1MVk5jMVVIUzRHL1VCQ256aWlkKzN2?=
 =?utf-8?B?aUJidDUvWjZ3TGpybmpkWU1zT1ZFVmFBcVhsRGgrZ2tkdFJGVUZIaEE3Z0ZX?=
 =?utf-8?B?RkRpV0tXTWZ0ODBUdi9IT29HbUtPZmlSR2hnbndaQjFIN0F2Y1BKbGxjZE5p?=
 =?utf-8?B?WHl3WXFJVTNCbUhydmtzYmZxdlhYMmNCc0dkb0x1eGxHUFYzcFVlZlNjNXcx?=
 =?utf-8?B?YnlKT3FrbG1QTjBrbEtDay9XbkdUQU5RSUFhQnNtRTFLTkt4dG9jTzJ0UEJI?=
 =?utf-8?B?S1hyNXgwbnd5dzNCMjgyRzNSdEpWbkdFZ3BQSncrZURFb2ZaQkowN3hRamNC?=
 =?utf-8?B?Z3JvdFpBa2YyYi9aNjZGUWxKaW5ZclZQYTlWNFcwSkhFbFdGeUdySEduT1Zx?=
 =?utf-8?B?NUhlWFNrQXo2QWFwdjVRekF4a3A4cWs5TmFvd1k3ODJnZ0pJWFcvVGlUZUNj?=
 =?utf-8?B?WGVwMHg4Y3I3VVFwYzVWNnFkaUloNkNzbnR3bTN1MUVuOEE5anJqbkp0WHRJ?=
 =?utf-8?B?aEV1ejE2QXU2U1l1ZUVxQUNuWDZFUDNkb0xONm5ReW55dXdnaHhxRmwzdXNz?=
 =?utf-8?B?YXlRYXoxQVJoWGx2M0twalhDcEV2SlpqVzg3WUc3RnptbjE4dUZCUUo5Ymty?=
 =?utf-8?B?S21PUmNzUnpaR2dYbkxQN0hNdHMyUXMvQ2VQMklFVmt2cko2T2hFbzRBck9Q?=
 =?utf-8?B?SWFrb0lYVWU1QkFacjQyZHBvTGZJU2t2Y1BEZEhwc25kMnh2Um9jbENGcGxT?=
 =?utf-8?B?U3FuQXhzcnRaeXhaaFNRaXdjVll6S0orNlVEM0hnM0JQR245SlJlazRNY0lE?=
 =?utf-8?B?UDNqd2V1MXBKWFlOZEQvakFyMngrVWJYNzFJb01tbjUrTTZKTTNTZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5d5ad57e-4ed8-4215-4f39-08df3c6fa5ba
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 01:37:13.1291
 (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: uTlyK4n5beK/WzCyIP+UeN9EPyJix03AeMJamvJmoji9ppBB2809FpWM7hbcdRU76JiQGUSH7xgvpItHgg/QIO2GaQ7GWF6KJbsqJ4XFMFk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5728
X-purgate-ID: tlsNG-d25034/1794015436-034D7A5B-37C09B5E/0/0
X-purgate-type: clean
X-purgate-size: 1918

On 07/11/2026 1:06 am, Stefano Stabellini wrote:
> With CONFIG_STATIC_SHM, a shared memory region without a "role" is owned
> by dom_io. A cache flush on such a page then reaches grant_read_lock()
> with dom_io's NULL grant table. Reinstate the check, and give back the
> page reference taken by page_get_owner_and_reference().
>
> Fixes: bec8e3c1fb91 ("xen/gnttab: Drop owner->grant_table check in _cache_flush()")
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> ---
>  xen/common/grant_table.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
> index 2285c4aee8..999b10abcf 100644
> --- a/xen/common/grant_table.c
> +++ b/xen/common/grant_table.c
> @@ -3633,9 +3633,11 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
>  
>      page = mfn_to_page(mfn);
>      owner = page_get_owner_and_reference(page);
> -    if ( !owner )
> +    if ( !owner || !owner->grant_table )
>      {
>          rcu_unlock_domain(d);
> +        if ( owner )
> +            put_page(page);
>          return -EPERM;
>      }
>  

Seriously?

We debated this at length in the security team, even the fact that
XSA-520 only applied to Xen 4.21 and older.

Now you're saying that claim in both the XSA-520 advisory and patch are
wrong, and therefore the owner path was not in fact dead code and a
MISRA violation.  This is the only reason why the patch ended up in this
form...

Nothing in CI noticed, not even the STATIC_SHM tests.


What I would like to do is a straight revert of bec8e3c1fb91, stating
that the claim is false, then apply the XSA-520 hunk with a different
commit message.   That way at least the logic ends up the same on all
branches of Xen (in this patch, you're reversed with rcu_unlock_domain()
vs the XSA-520 fix).

Thoughts?

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Nov 07 01:46:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 01:46:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477700.1683030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVVP-0008Us-AQ; Sat, 07 Nov 2026 01:46:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477700.1683030; Sat, 07 Nov 2026 01:46:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVVP-0008Ul-7k; Sat, 07 Nov 2026 01:46:07 +0000
Received: by outflank-mailman (input) for mailman id 1477700;
 Sat, 07 Nov 2026 01:46:05 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xPVVN-0008Ta-LP
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 01:46:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVVN-003LuQ-2J
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:46:05 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee8287-e002-0a2a0a5209dd-0a2a45088960-44
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:46:04 +0100
Received: from [52.101.52.18]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6aee82db-f659-0a2a45080019-34653412c099-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 02:46:04 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by DM4PR03MB6912.namprd03.prod.outlook.com (2603:10b6:8:47::6) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.592.10; Sat, 7 Nov 2026 01:46:01 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.010; Sat, 7 Nov 2026
 01:46:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=y2WRxNeKEwHWk2vGMcVxYppMmXfbOkRaWUBsOw3HQNfSftOUHsOwq/sstwsNJ9MMmNOVBxeaLoLQXJxd4oFwQszVhdf3b7SXHgM/lzE7WVSwwEc5LWOawz1F4W6LVGbanRl3F5OzqKBlvEl22J+M6Bzq3kraGyqoYZIDky6VXzKqU6B3QrSqWwtWZvmjMhQL4QZzCDp9OuhDAWvkf+8jCMeUFLHzLYhXFJ9BbVw18TFQ4XLoZlhpTfp6zKxoPHNE49wYEmfp0aVEKCX1OdPTzmbnLfVvV1/ZxCqiVFPI8p8i2oCMFPfPdhQH8T9lJKIrAgiZThrFEsBmyD3fHwZGAg==
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=bQb2UfympbJStZrL99ocu8PRu91zA7497mY5UtYldHc=;
 b=XmVdrZvZfJxPx2qAFV+BAAGgcKthbY7Lg9IKNv25kYqqwR9Pw3cp6MsaMC5kNR70P0MmLQ1TFim6qnXimpZF+aBPc2cdJ3YMWrzlr+CiArjUD13xQPYMi6XGP87Kmd4cK+C9jIohy4uDZWdv9ROUPs2rRTM41sDFL/2AlyAgOoLbJWPR/pb8EJkT+j9CdECXLqDiPapV6DIyorUShTw0tYMJonzOB8/BhDuDuBwLKMMzCGdbljacuV1cRThn8JlDzrnZp49Dc5NukBk8lv/PuWpWFRP0/xan0YbmKGntxpu39wCKm05oabTfqNLRWtSkpPVu0QBSE5DH+M5QOPDyFQ==
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=bQb2UfympbJStZrL99ocu8PRu91zA7497mY5UtYldHc=;
 b=f0mdwwiarsYtCNO9iMszwMeDNqcb9PRoSGdWMg8tFonjKX1/5KHPvgru5bIgfIOssGstid10uCGomcYhg3tKbJAkkT8L5EtHmFWob14czsHIWVZloSL5gmWHGpWooDgam9i8s6ppypg2rIiUqz8/cWupvc5pNqZZ1Wm5nJN9PZg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <a0341ec6-aaa8-473a-a28c-ec99a7b79b67@citrix.com>
Date: Sat, 7 Nov 2026 01:45:57 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Andrii Sultanov <andriy.sultanov@vates.tech>,
 Guillaume Thouvenin <guillaume.thouvenin@vates.tech>,
 Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH] tools/ocaml: Fix cleaning bindings test
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20261106231732.482518-1-jason.andryuk@amd.com>
 <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
 <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0066.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:153::17) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|DM4PR03MB6912:EE_
X-MS-Office365-Filtering-Correlation-Id: 5fb96fb3-faff-47ff-9e21-08df3c70e0b0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|366016|1800799024|376014|11063799006|261028144727099003|4143699003|261022075727099003|56012099006|261026121527099003|261102123227099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|261026140227099003|6133799003|22082099003|18002099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	YddJXeO0AHw+0ozAw/aRkz5fQPX9nRt9PFFcLhlfku5HIXEZn51s6XKrz4HLGb13NS4WF/F0dE76axN6EgFlJ6wCClU4fPDqyt1zNlOLh7knG49O++NJtCtEXGVXbRL79/3ipCGml8QLsZ2pKtE4+76aq/upov6jibcREF1Gx6u4gOxTP0LSL41aSLvmshbqK7EOIZVesHDGlwmLdLZJO4PdWoqEQs2eAbnaTFxPUvzkuo588UI8vwmT16ZGwEPJDmZJfujWNNbCshMmK/t5e51t3FEUvWzMP4rRM6YzNJ7mkrn4L+fVhk8eZZeTzvXMhZx7HZTWWGrWHiuot/fFkMutKmVp8udMX/s7Us7/67+LaIQE+I6eD34eMGZtzNHtH3UOzZfbctWOmm2SSqC7TRAuuRCUNbpCP1NgvpDB4rs96Docy9zo/dGAA1jFi9/gY9if+hHscB2XvOjfkNHKdJM2X9NANXcNQXDR8HMfB/eCjTye8oUqv6C0LFmsqmsGD6n+ePRiiuZuZw5UOj6MT73aQfOhSvpWvxu7AU+o/QFB18q3cB6Wv6PXfn5eNvzBhQcyHfTdasEZLHnNCigo4xjhlNz4ia0hDBACuHHsvFQcL7amZjcpthJMi5SnVt0nkI9o/CgJfpxT+A3UwZHh1wkNOVXjM37hcnav2kriq7g=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(376014)(11063799006)(261028144727099003)(4143699003)(261022075727099003)(56012099006)(261026121527099003)(261102123227099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(261026140227099003)(6133799003)(22082099003)(18002099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?blRxcHV6VnYwdWk1RzgvMjFkUzFJazJxc3IzRWdLellDd281ZjFUbG44dExZ?=
 =?utf-8?B?K3hBaEJNS09aZFJoSXFUTXoyWmk4cVZGRjZ3ejdoQ25FOExLQWhEZVZRSzBh?=
 =?utf-8?B?WHFaSDZ3TCtFZ2x4RGUzV0MzaExmOVQwUUR1Q1F4dFhpcGRvai9EMi80dzY4?=
 =?utf-8?B?YVo4M0Rjb28rWERMa2V6aEgvSjNJczNkTWRoYUlZOG1RdlJoVDgrV0JTNlVi?=
 =?utf-8?B?Wi93cVM0SW5CWWtuSm05dVFhbHRwR0VmMTJLZEtiTkFQKzA0OERCY0NmTEQx?=
 =?utf-8?B?dndlWFBnNVJhQmxKcVljd2V4Wnh6Sit0VWJrZW9sNHNCcWdocWY0U2VTNDNL?=
 =?utf-8?B?Q1pUY01seDVrWUFzZXFxM3JiWFRKWkNwOVlUMFROa1ZWWDJOR3NvTXZ3VUEv?=
 =?utf-8?B?QlVsTGo2NnkycU41Y09DNmpNazg1cXNvSEZ4emEvbVcxQm9nNUVKeDVmb0hC?=
 =?utf-8?B?VjZBNzE4Sm5sN1Q4bHY0d3hzOTZKTjNlcmJwNFZDNnpTWjJZN05RSUhic2Er?=
 =?utf-8?B?aEM2TmpyZ090dnZMckljM1F0T2szSDQ4MVJFa0c3NGN2N2EwMXQzdENjVzBQ?=
 =?utf-8?B?dHh2UGNKeEcxSDJkQUJWUHB6U3dFcXpGTDJwM0ZFaVRiODdlVTFQQ3BQOFYw?=
 =?utf-8?B?a1h2Wmk3cVgwa1MrVW9XaFZaTXFySzF1QjNQdHBTY2ZDN1locVRRSHdzNlo1?=
 =?utf-8?B?WDJaMnJwUnVyTitYOFVQNFQ5L1lqdCt1cDRoeWtYZlNCeVlhVVMycW9leTNp?=
 =?utf-8?B?ejBVU0kzVVNPQ0tjTXlzcDlkTmc1aDd0UlhzaUUyY00xbjYxR3dVWHlwK2k5?=
 =?utf-8?B?cGJnS0NEeEpkeVd4UjN1eG1kOVRtTDRxYVNCNCtyOHNORGQxUFQ4My8zUm1W?=
 =?utf-8?B?N2tieVF2OWVpYXpzazNBSVRDMXFSOGk5a0w0eCtNcCtia0pZOWp2VHlqTjNT?=
 =?utf-8?B?Sm9oNUF0dCtKTFhQL2NBRXF4NldoZUJacHcrS2pTM1pMNjBqWGlidGxaM0JY?=
 =?utf-8?B?YVpqaXlkSHVrT2Vma2I5Z3NTcFp1WFlYVVl2TUd6NkRWZTIrNFk2NFA2M0ht?=
 =?utf-8?B?dWlFM1dIT2FnQyt3a0NTd0h4bXkyTC9FSU03TmZ1Y01ENG1UR00vbkxsZ3c1?=
 =?utf-8?B?SU9WVy9ZU0E3bHBPUlBjNHM3NXF6RnExL2JSWVhPdDJrNC8yZE14SjZTemZr?=
 =?utf-8?B?M2hzRjgrN1c2bnBzSCtuVy92emIyMzRTbTdUSWpLZ3AwekxZaGNaay9Bcjd6?=
 =?utf-8?B?akV5Nk5NV3lLUHV5aXJaeEhTejZIaXpQU1o5RXdnWlkyY1UybSs5eXNRcUVL?=
 =?utf-8?B?MUVRYS9td0JaRG5sNGNJL3ZyMFFEUDF4bEJvMHJFUGZEcm1LNDJLUXUzQ0tG?=
 =?utf-8?B?OFE1dUVkZHY2a1F1Y09aeDU2NXJOR2JkQzRmdllRSWszLzBJQm1QdlR4T29Y?=
 =?utf-8?B?anYyM2FRcXIzaHhmMGVNaERQbXpsRUx2Njd0OTBqQ3hPSUF5Wk1RSUZhWS90?=
 =?utf-8?B?aHFNb1FVSHEvY3NhWHNFRnVYYlp4YTJKbnNRdzIxSmhmS3FPclhLN3U0a0NI?=
 =?utf-8?B?ZzRWNHlLY2o0SWc0UE14OTVra1BhMnhDaE41YnR6T041eEJIN0dqT3VKanNP?=
 =?utf-8?B?U0ZmOVVWcGxlaG1FQzFrTTI1bVVRSWpWeklBdjdQc0tMS0tNeWRPeGdQV2xY?=
 =?utf-8?B?UEJxdS9OWVpNcWVZbTRvTklIaktmcDk5SzBURmlNWXlFZFBvNzhuNmlzcG5p?=
 =?utf-8?B?RDAyYloyT0pTajQveUFQeFlFR3JBMU8wajlQcHVhNnVRYzN6K291VGxaclph?=
 =?utf-8?B?L1ZEaDZGeFBic01XV2JweWs0KzhnNzE1N3pQbFczQThsWHRBaFpiRWxlSWU1?=
 =?utf-8?B?RkJPMnozenoyUXJNemJjTUpEbGpYbElMWlJ2YWZjRHVoWVIxbW9aZGlibTc3?=
 =?utf-8?B?UXhRVjhRTTlZcnZwREhmckFMYk1tMXFVdUNDN2hUYXduVkU0a0ZZTlBtZEhk?=
 =?utf-8?B?WFFoMk8zTlVhRjN4LzJFcjl3ajMvaGNwMmZyUEorV1dCMTM3MXE0eWdwNjZw?=
 =?utf-8?B?bDh3YjFWR3JORTVBeEVKVU9tQmdEaUxZZkR3ZDlubnRLR3JmM1M5eDVabTU3?=
 =?utf-8?B?Z3NkaWRPUXZUZTcvbmIyOXkwUnpweEtKSUQzckJUZjF5Rk9MZnI3UzR5REt4?=
 =?utf-8?B?SjkzTGNDcmRXcFJKdWpROUVUcStzODJEWm9XTVV0U04zZC9TTUQybXIzK3Js?=
 =?utf-8?B?WHBXWGJGSXpOcXNDQmZnd0t3M3ZXUGxncjFaYnp4NHdzK2lGU1JabGhhQS8z?=
 =?utf-8?B?MVJiWUM1VGNxb1VLOE1wV3NRb1JYc0d0VFJRL1BrS1VjbXZkbzZTQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5fb96fb3-faff-47ff-9e21-08df3c70e0b0
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 01:46:01.4640
 (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: FV4x33nz6KzvbMxbjc4Zjl5THq+I+uIgduFCzSt3ujpV/Bu4oUgiOJIK9TCh9Pi46gpcvsIyS2qjpFZucTGfYpqw6gaO+cylMzUqsvnb3v0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR03MB6912
X-purgate-ID: tlsNG-c1860d/1794015964-CDF4787B-5075ABB6/0/0
X-purgate-type: clean
X-purgate-size: 1319

On 07/11/2026 12:11 am, Jason Andryuk wrote:
> On 2026-11-06 18:19, Andrew Cooper wrote:
>> On 06/11/2026 11:17 pm, Jason Andryuk wrote:
>>> make clean fails in the bindings tests:
>>>
>>> make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
>>> rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs
>>> *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
>>> rm: invalid option -- 'c'
>>> Try 'rm --help' for more information.
>>>
>>> Split the compiler flags out of the LIBS variable, since LIBS is passed
>>> to rm.  The individual *.cxma files are deleted in their respective
>>> directories.
>>>
>>> Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
>>> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
>>
>> Lovely...  Sorry for breaking this.
>>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>
> Thanks.  I just double checked and unix.cmxa isn't in the directory on
> a successful build.  So the whole thing could be moved to LIBFLAGS or
> a suitable name.

Unix is from the Ocaml standard library, but you still have to name it
to get an executable out at the end.

I cribbed this all from tools/ocaml/xenstored/Makefile attempting to
simplify it as I went.  What's not clear is why LIBS is a special name.

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Nov 07 02:15:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 02:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477740.1683038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxN-0005RD-EB; Sat, 07 Nov 2026 02:15:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477740.1683038; Sat, 07 Nov 2026 02:15:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxN-0005R6-BV; Sat, 07 Nov 2026 02:15:01 +0000
Received: by outflank-mailman (input) for mailman id 1477740;
 Sat, 07 Nov 2026 02:14:59 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefano.stabellini@amd.com>) id 1xPVxL-0005Qx-En
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:14:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVxK-00EVQ0-Id
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 03:14:58 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee8903-bab6-0a2a0a5309dd-0a2a4501c3ae-26
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:14:58 +0100
Received: from [40.93.196.23]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee89a0-5984-0a2a45010019-285dc41742d1-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:14:57 +0100
Received: from BN0PR04CA0205.namprd04.prod.outlook.com (2603:10b6:408:e9::30)
 by DS3PR12MB740446.namprd12.prod.outlook.com (2603:10b6:8:43e::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Sat, 7 Nov
 2026 02:14:54 +0000
Received: from BN2PEPF000044A9.namprd04.prod.outlook.com
 (2603:10b6:408:e9:cafe::89) by BN0PR04CA0205.outlook.office365.com
 (2603:10b6:408:e9::30) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Sat, 7
 Nov 2026 02:14:54 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF000044A9.mail.protection.outlook.com (10.167.243.103) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 02:14:53 +0000
Received: from satlexmb08.amd.com (10.181.42.217) 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.53; Fri, 6 Nov
 2026 20:14:53 -0600
Received: from amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217)
 with Microsoft SMTP Server id 15.2.2562.53 via Frontend Transport;
 Fri, 6 Nov 2026 20:14:52 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=ZRYpL0Z9GyA9+2GxbKnx60Sw43iUYU+JH6W6Qn7acl4eV/aHzLFanqCOtcNTtUoVeQI7Q4pDDgwTbnvfvAL1xK23ohP/WailiXvgPt+95K/7VH/7Ey92mISsIPSE9rp7Z+BwKXtdhpkDr91pBMcakQ5rykx8oZ7K7Ox6dPFR9Ml2p0qUfMlf8ote6o8TT4LQ4Lz+KkSBeOEXzLRI6pjMvUbKm++4gWeb5TaO4B5wWhL38SId1cuoDxqkTNquqapr19fAfqoSzJ8qah8RTZqKkCGZrqs3ZOVbIi8o3SWp3jRFHyi2fegPApu0WMC6sXjFmW3iTCP+Ve/3smPOX6x13A==
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=YW0rX+bQbIc0bFUc3sRKftYB2+uxQbRjgb+eZ53kGK8=;
 b=UCHj+u4mM9vHBubMQeClDpOnPEw2o/aOUpNcE7I2yVlMC0K+qR28yPERgSR9w9sda1/nBT7vmJxnkbuoopSyu8bVTl0nbLBkuO5ZcvPSWZV9f9KVjHDE1K7De6g4NBpqORiVy2tYFNsjJZ+ONJ5nefwIcdMmG1H7pazIvCVb8mFWmNZ27DOYegMv/Jyk50aJ45Ch0exl1GJfDRDV4gGlZowHIk3DqcKj6Bxv7dc6vBXf5YWHpHvSZM0RrscEH+X/Ap+1ORTC6nQsmMcFfFkUnNEm3dJfFSCsbolOy9rKsSQC8n4pkUxN9jIe4hgjgpCQvIqLBNyyaKYbRg4uqJNo9g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YW0rX+bQbIc0bFUc3sRKftYB2+uxQbRjgb+eZ53kGK8=;
 b=5LM9XdBLjRMptAV8hTrpd+Xvts1ZU6mHciDSx5ud/7WQEEn7wh3vCZqVZ5lCTiXLTj2KksX2T5ECJnvgvBMuhOR5pGcWIrE9lX6Ro9UUmJX1/3WirmkCUZmfL0Ahvt2gNieB66vIygUt7hfy4soogIrU4XMrR2PoJNvVVwjx66k=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Stefano Stabellini <stefano.stabellini@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <stefano.stabellini@amd.com>, Julien Grall <julien@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 1/4] xen/arm: guest_walk: refuse a block descriptor where the granule has none
Date: Fri, 6 Nov 2026 18:14:38 -0800
Message-ID: <20261107021442.253612-1-stefano.stabellini@amd.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044A9:EE_|DS3PR12MB740446:EE_
X-MS-Office365-Filtering-Correlation-Id: 01d68d3f-37c0-47c6-72ab-08df3c74e95e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|23010399003|82310400026|36860700016|11063799006|56012099006|261021121427099003|261022105027099003|261009223027099003|261102123227099003|261026140227099003|261028144727099003|10067099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	Vc2pYzmyRojTZijePU42dBkOUOnnU5uzEe4y0kuCLFx0+zsRYNQU/FR5nbEWEE8nFx0MqvxXYX99XnLOMsCfGa0aF0ckxzEJ/90xCOnqOY+J6acyD6sRErloM4PEQs1mAbsKXWH+OaY1Vu3CpW6ySoz/3RaWo834QQyLiZ47VbskyUd8PXJIclJmz7KaRHPyH4/yw9zeKTCSeXn3LWV49tbUWWSCzpKPj7W7Nkvd1rc+vRvRsOJhPOljcy1e2fzPefB2GyQpm/EQYXyGEU3zo2HmAWVZ21XRzE/FkVZRklNlyCpgsSPl6x1gbYS+lG/idVFQ8BXm+QME155j91PKIapuTkBL9lz55kxHWvEbfinnuWPB/s7kFq3LQo+IV56dni0vz/YI2DcqruxKuTzxwaQIu+F7Mcv1mn9MW88utuwYGtdakJyJobPEcRrjhlv6vHT23i/BGON5Cvo4+lf+5C6+l7cPovsockr40ayebALz5jFtPHOGB85C6oJn+xCfpYwH/z3MWgWMQTxvhw4NS1sHpFjrHcazzQTJYiJRlvVsgDjCWSAjKhZ1knH6bE2DgCQ/eX+oSFpSAKvgJ3VCmN4k9JqW7PvZHfHhM3oWy2+hKE17N3KIO2+0J0uhbPl6jQEq5sLTy9hr0A0ctIPm8Aq4NvKlXPOl8QQkfXViDPBPrUjaH2NV6VPyfICqmdqr35lutddQK4PoXY2kpMsQAw==
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)(1800799024)(23010399003)(82310400026)(36860700016)(11063799006)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003)(261102123227099003)(261026140227099003)(261028144727099003)(10067099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	THN6Ql5im/WlnsxwtPd0i9vYZT8ZJRyKWs89KzzqeMsKUVX+0uarxNIJxg2KFrYPDSvq34lZZHNJUons0zfoW/hN6QFNnNHivQvYwt8QmCZ+lKCBgUZYTUw0BiSjycycbn5moMZeC0ZnFJyapYXOPtzQI91pycnD6cuCn+WGvF6dEeoJAzys/oV8T6X2vhNuUQBsi2mfhvksrj16DGXakKMRjl55oEpfTBtFD+L2lZyqdW08mCO3xPaGc2tQIT6vPxn0k+L6/bvAkRRVltNyJVBzaBVMoXpjgSHj8OGEXzoeqLlugsZUnXN5jGNH4KgP7tPbkseJGUGgxVESwYOwPOsCNF++Yj/y8FfjKH43aLbNbZpVel5v87uwUeVx8Xp0UlvL24FRsNLufETvL3x6I7U830d1GnJYZH8T3J6wtZyaeraNFM1MmU7OPsrbzZs4
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 02:14:53.8616
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 01d68d3f-37c0-47c6-72ab-08df3c74e95e
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:
	BN2PEPF000044A9.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS3PR12MB740446
X-purgate-ID: tlsNG-d62444/1794017698-C4B45757-ADB4DF0D/0/0
X-purgate-type: clean
X-purgate-size: 1641

guest_walk_ld() accepted a block descriptor at any level. No granule has
level 0 blocks, and the 16KB and 64KB granules have no level 1 blocks
(ARM DDI 0487A.k D4.3.1): the translation table walk makes such an entry
a Translation fault (AArch64.TranslationTableWalk(), J1.1.5). Refuse it.

Fixes: 7d623b358a45 ("arm/mem_access: Add long-descriptor based gpt")
Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Julien Grall <julien@xen.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: Michal Orzel <michal.orzel@amd.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
---
 xen/arch/arm/guest_walk.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
index 09fe486598..e23457869b 100644
--- a/xen/arch/arm/guest_walk.c
+++ b/xen/arch/arm/guest_walk.c
@@ -533,6 +533,15 @@ static bool guest_walk_ld(const struct vcpu *v,
     if ( !lpae_is_valid(pte) || !lpae_is_mapping(pte, level) )
         return false;
 
+    /*
+     * A block descriptor is only supported at level 1 and level 2 with the
+     * 4KB granule, and only at level 2 with the 16KB and 64KB granules (ARM
+     * DDI 0487A.k D4.3.1). The block encoding at any other level generates a
+     * Translation fault (AArch64.TranslationTableWalk(), J1.1.5).
+     */
+    if ( level == 0 || (level == 1 && gran != GRANULE_SIZE_INDEX_4K) )
+        return false;
+
     /* Make sure that the lower bits of the PTE's base address are zero. */
     mask = GENMASK_ULL(47, grainsizes[gran]);
     *ipa = (pfn_to_paddr(pte.walk.base) & mask) |
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 02:15:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 02:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477742.1683057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxU-0005so-T5; Sat, 07 Nov 2026 02:15:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477742.1683057; Sat, 07 Nov 2026 02:15:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxU-0005sf-PI; Sat, 07 Nov 2026 02:15:08 +0000
Received: by outflank-mailman (input) for mailman id 1477742;
 Sat, 07 Nov 2026 02:15:08 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefano.stabellini@amd.com>) id 1xPVxU-0005sF-8e
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:15:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVxT-001QTj-Lh
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 03:15:07 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee8933-8faa-0a2a0a5109dd-0a2a4505dc0a-40
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:07 +0100
Received: from [52.101.43.31]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee89a9-4cb1-0a2a45050019-34652b1f4637-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:07 +0100
Received: from SJ0PR05CA0165.namprd05.prod.outlook.com (2603:10b6:a03:339::20)
 by DM6PR12MB4436.namprd12.prod.outlook.com (2603:10b6:5:2a3::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Sat, 7 Nov
 2026 02:15:00 +0000
Received: from SJ1PEPF0000231B.namprd03.prod.outlook.com
 (2603:10b6:a03:339:cafe::8f) by SJ0PR05CA0165.outlook.office365.com
 (2603:10b6:a03:339::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.4 via Frontend Transport; Sat, 7
 Nov 2026 02:15:00 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 SJ1PEPF0000231B.mail.protection.outlook.com (10.167.242.232) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 02:14:59 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 20:14:57 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 20:14:57 -0600
Received: from amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217)
 with Microsoft SMTP Server id 15.2.2562.53 via Frontend Transport;
 Fri, 6 Nov 2026 20:14:55 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=ulcB5grcaFFaufz3atQ9iE43Ola6RpZVjOGIRYzGopp8zbf/3kAyJ7f0pB0C9ZYenHg01WDJUiO7jgGZGWF2dLynZdRGha0UkF5/u3jCaEtZm7G7wOTIH2eWlkNQ5Cprbg4sjjiembPFazLkCooeutZq7qZbKo3z+n5ewaasBN71t82QFoQ0M1C8f7WT6cZ/RH8Ns8U4hU+OH7it8kTsP/VjJd2wiV26VSGKqW2+aEiK3z8u1HiLISZwbJqPAdFg6bhDjux4g+G+KtRuLR5EgCoa99HDLMT3r1TiUdJLembxp8vGcr18JDFGcPzV+iM/OO6dHXXQSkUVVfJK0WnSdQ==
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=cXWPjtC47JOAhS/1FwfOO4rezzkfX6QRL375FvELi68=;
 b=bSOdAoVNuvLZiHcFjbTA4MTP/a7KvijdArzwm7O7+++yJSdI7Y6BA9+eh4diFFx6okB6QSkCi3FuNINj4bk+/CMBodbhtJAxg8wXlBjLflFW8JldEZQFxc9PNFrkWPfXwcBoDgrEqVETKSxQpjUYOKIfdk1tUvFf6LkxBLh3oO+ZCQi9+6b1ceQwVhVW41IAC4gzopsnI1R4Lt9kPyKGZ7ybw98qg65IR+FocnAYL8qnYfbqoLphqfEK3fucUtBoI3Qw5DVZltChlI1recTGRTqYbosH6sd6NQc8xewmLf/rJ4nao/FmEAyXu0X3PLLg6VkgOyW2eCbI5ZY7Uq+t+w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cXWPjtC47JOAhS/1FwfOO4rezzkfX6QRL375FvELi68=;
 b=ajKEc884d/TlpAP06STh/oS4OGhfVcMvTBUKxMnOQgJzQqvqkF8rJSOQHYi8n6PGlUavjb3aLHNth38rIIPCvm2S2S4A6z8XGupp0GgDrlJWRvUlv9BlS1y2p8FLDBy18/OUOAwAKKKaBUMtja2ewCCRfta76audjGsVpxyRTcs=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
From: Stefano Stabellini <stefano.stabellini@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <stefano.stabellini@amd.com>, Julien Grall <julien@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 3/4] xen/arm: traps: enter the SP_EL0 vector group for an exception at EL1t
Date: Fri, 6 Nov 2026 18:14:40 -0800
Message-ID: <20261107021442.253612-3-stefano.stabellini@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261107021442.253612-1-stefano.stabellini@amd.com>
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231B:EE_|DM6PR12MB4436:EE_
X-MS-Office365-Filtering-Correlation-Id: 92508245-c160-41dd-7c0e-08df3c74ece6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700016|23010399003|376014|1800799024|22082099003|18002099003|10067099003|56012099006|11063799006|261102123227099003|261021121427099003|261021123027099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	3g+lZ1rMbAz8rz4Uv85s6oFFsmxAHVb+7YVkSoO+RMqy66FbufMCDX8lVrhnPA06+Ys7x222oHwvKGrzF1hUZ1gwlYzqz6L6+BNeDsQW0EmTIfnTNHk6eS5wTxjhzNF4rM3CpqosRQg2QufxKbFDXn2Al7PCKuYJn8iC5QARlJMTLHa3E5IKzHTakOrCpQvLHWaPzU1hI9elZA7LND8zVfR7DQYikGuM2OsVCYFMFRqgL06UiC2mmayA6RO0jKelMYaZlvJECmQnnqZAYGDbNYa1UjgKB9h+wnrbfxytLr436ye3A7S2xbC5d5WAWfs3ABDaABajn1OCfJHqxdLQHOa3B5guS9kpJjbmJW/j9o1zgfKLwueKEkVe0Sl3SEQIHZLGRkoW7l4X/vXf70AJytkcb9LlidOX4+duh7MztAejvYwWVMbtPEn8H2asTe5hidaeqoGCZ7on7XuL78VueDH1Zr1BC8gl1PoJrtGX2Zq52sII52xO/mkwhA/Dcf9ePCEjcGKMl6F2yUEj/d0ljjvuimUzhTwYNQRYGtWuXyW+Vogr6hOLjuWxCuEgMuQY3jlZf6KgqUtPFOzg5HAkEpOu2aHbmjispC2cpJBRM/r3jyi4cZ6hsPMrFepZikEj8OdPUjeFAxMV2Dl9DD+ELeYXGsEGawtZZDXWaMzroeEQvnsElmmGW5HZtSjl8wzlp7q6dzQLmjwFXDGQzprOaQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(23010399003)(376014)(1800799024)(22082099003)(18002099003)(10067099003)(56012099006)(11063799006)(261102123227099003)(261021121427099003)(261021123027099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2wKGIbSOaat3HFxmp4ulDqiejR1iOyS6I38QK96A0uBvP9kIbyTDPfzEgkKQbNgydEDv+Imvowhc2RBGAUu04NArT8BPNKocmOKEVv+peT0Gaqm/rgTM7CoQIHRjQZe7XaOlS5dL+HFhVDOx8XdYce/+y0Of+7VLio1XFUdxxqaK8sCK8U+SAHSrgK+DOJ+7egia8Nawl1mNXCpuYqlITzcOVJX27ZsClIJW/03gioaNzRBABsWkwXm790Aeb78sLOOZn1r2nFIseQjc4gOuElgcqvX26pr48EMpHyhZYUGx0g1U+eHDRWDB53scwGGJE/A+8CxLC92V6csMFf2jBr9KPorRdoqsSmjFl4wKrrLhE/f9hZ7OTSRViYDa1kvKuCQSGooVq9DzMpJ2MBtFWpA5E9WTYJfHoLpkh9G3mQNbO1PN9mjmgo439+6hBz6d
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 02:14:59.7038
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 92508245-c160-41dd-7c0e-08df3c74ece6
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF0000231B.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4436
X-purgate-ID: tlsNG-c201ff/1794017707-F48A62A1-F3819588/0/0
X-purgate-type: clean
X-purgate-size: 1401

An exception taken from the current level is delivered to the SP_EL0
vector group (offset 0x000) when the guest was at EL1t, and to the
SP_ELx group (0x200) only at EL1h (ARM DDI 0487A.k D1.10.2, Table
D1-7). exception_handler64() used 0x200 for both.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Julien Grall <julien@xen.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: Michal Orzel <michal.orzel@amd.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
---
 xen/arch/arm/traps.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 6a5dcef2aa..f6abe25f74 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -532,7 +532,13 @@ static vaddr_t exception_handler64(struct cpu_user_regs *regs, vaddr_t offset)
         base += VECTOR64_LOWER32_BASE;
     else if ( psr_mode(regs->cpsr,PSR_MODE_EL0t) )
         base += VECTOR64_LOWER64_BASE;
-    else /* Otherwise must be from kernel mode */
+    /*
+     * Otherwise must be from kernel mode. The current EL group is chosen by
+     * the stack pointer in use (ARM DDI 0487A.k D1.10.2, Table D1-7).
+     */
+    else if ( psr_mode(regs->cpsr,PSR_MODE_EL1t) )
+        base += VECTOR64_CURRENT_SP0_BASE;
+    else
         base += VECTOR64_CURRENT_SPx_BASE;
 
     return base + offset;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 02:15:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 02:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477741.1683047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxQ-0005de-LV; Sat, 07 Nov 2026 02:15:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477741.1683047; Sat, 07 Nov 2026 02:15:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxQ-0005dX-IZ; Sat, 07 Nov 2026 02:15:04 +0000
Received: by outflank-mailman (input) for mailman id 1477741;
 Sat, 07 Nov 2026 02:15:03 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefano.stabellini@amd.com>) id 1xPVxP-0005dL-3x
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:15:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVxO-001QRF-DV
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 03:15:02 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee898a-e002-0a2a0a5209dd-0a2a45068412-8
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:01 +0100
Received: from [40.93.201.2]
 (helo=CY3PR05CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee89a3-195a-0a2a45060019-285dc9028f52-4
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:01 +0100
Received: from BN9PR03CA0254.namprd03.prod.outlook.com (2603:10b6:408:ff::19)
 by MN6PR12MB8592.namprd12.prod.outlook.com (2603:10b6:208:478::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Sat, 7 Nov
 2026 02:14:56 +0000
Received: from BN2PEPF000044AC.namprd04.prod.outlook.com
 (2603:10b6:408:ff:cafe::5a) by BN9PR03CA0254.outlook.office365.com
 (2603:10b6:408:ff::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Sat, 7
 Nov 2026 02:14:56 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF000044AC.mail.protection.outlook.com (10.167.243.107) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 02:14:55 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Fri, 6 Nov
 2026 20:14:55 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 20:14:55 -0600
Received: from amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217)
 with Microsoft SMTP Server id 15.2.2562.53 via Frontend Transport;
 Fri, 6 Nov 2026 20:14:53 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=SKrWA+jouTBv9VgZTgoSP+9LbpXncoIvS9Mr8pdss9jJkrGZ5zk/lI8voJeurqV0t9S0t9kPYQCko3rCerBV5fPkBdRvVfP25ffSodWPbvGLMQXPO1SaJ2DdIDaza5jH7Zaig7vUrZftGh6Pri/9pDaKp0TyDWIkc1C4CxAHFagPvjBoA0xJBES3il1cCHg1qx/gLSrLZD5HZV91qazBG/vKK82A92L456XlNd7EZCfIQiLYHNwqrQkIhXXXFgV0aXO27DYuZ+kBUPR6AxILLa+bsQn2ntLJh7JqNq6qcN7a51O1B6mAhhjeVt2BOwlOtiz2jKiw6HKLGWHSJF7kRQ==
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=IBxdKwWMhnQrWEpD0g4Fhaowq9waeLjtwAV1Ocf+/3s=;
 b=AIWiocHDUt5JOJgNFiNSmyXrvzTBcjwE1oIlwvJM9bWLM+GC1a0N13pptRtTsSENbuNnv1S8pxTE/Nr1HPmdwuG9mb88dp8RmZaJa1VKd8/7kCUIuPwYjx3ORQY8hxB3MBivrIqSqZUaWwRtfJbUF8CcB/xkYKEGdDBlwKyFJ/2SP57fhKnqaQzekK3lUk9gCC37Q+Xme7fUGxldNzECzcKIYAiC16kavpbEAeq6VaEhqsFU4fVqq031xG29eQoc9OtBzKEvkfye8mVt0mF9UeX1KeyVL8x3K1GsXO3QrMcyFPuFTz8VKYKwfou1H8cF5vszEP+VMNwFQV53FMDfag==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IBxdKwWMhnQrWEpD0g4Fhaowq9waeLjtwAV1Ocf+/3s=;
 b=k+A5CRsPQC83avsFElyYiOlu2bRYq+8ijUHrlU2ADsTbLVFMW5n43qc6g6MTeGk4vgLgnKDgik9SmIGTikDFwtbqdMzEBOJG6okIyp4r1ZBTFYsN6GTyrWlGRHZ5T7sEHAhfl7iVnu5yoFvF+ly7MV0ZeogzgM9dz2qp894rIYY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Stefano Stabellini <stefano.stabellini@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <stefano.stabellini@amd.com>, Julien Grall <julien@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 2/4] xen/arm: guest_walk: refuse an address outside both halves of the range
Date: Fri, 6 Nov 2026 18:14:39 -0800
Message-ID: <20261107021442.253612-2-stefano.stabellini@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261107021442.253612-1-stefano.stabellini@amd.com>
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AC:EE_|MN6PR12MB8592:EE_
X-MS-Office365-Filtering-Correlation-Id: a7f680cc-1ac4-453e-4b8f-08df3c74ea6f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700016|82310400026|23010399003|1800799024|376014|56012099006|11063799006|261009223027099003|261102123227099003|261021121427099003|261026121527099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	nncqDYbVySG1/oNKXfmlTbzw5If/Y2EdNxvHYu9P90hJgOglNjgsU1FetbVTiUkQJa/w9uX/7GMo6U0COypC8DJUs233KP3/2FqjOAm39h8npJ8UP+5HkgGZTZeMuojbsgMYxlaPOEs+LANOhT2k5WNHAMLyldGaPF+w8V58wOFSSBlwtc7UO6FuVIhJ1rXOk8Hkh9uhLJ2v5855SlCkWzk84P/mapOl6mc5gy7yj1t2bR40pg6FIGaRNKph8CER+Vk66bhIqwkBANMBODfRK73c+MSFyj5hUzvNOKXFV5xdQOFOxM3i4YkUdv9wEYMtkTv1klfMTdZd01YxuirfyJmP98Xgr6UrDmmNUzUYWbCERETZVgYV1Ik8Vm8o5MPi1tvSxQSzv/K6C/nYDcP/FojfLn6mU9YmTtiqiZw+qVwmELlp8Cb6iUbWxl0N/YvbcrGDProg8pssJO/GLUwvB+/BAjZkjeNACS1JB30mYMnv9nrVnxaMqxd9BG3qCinY0e4BLZSZbh0kVg4us2QPTgH/IVcaI6ZVwrHTSZ7N5mVXc28nu9sVKdXDpotpUSvIQsNGdeMcLWmSj55wR3+NS0edD2oKFa3SzobnhrR55UCAKeYES1fZGQbAP0lK+zwjQif9R/0wFqspi7/vnrePphwN1wDOD+Bm7O1c/nXgnHmW+fG9O6wkWVCpmgz6u7nB3hilyoiTkJIc37W+SytYFQ==
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)(82310400026)(23010399003)(1800799024)(376014)(56012099006)(11063799006)(261009223027099003)(261102123227099003)(261021121427099003)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	Rf2li5rA/myfmhmDjmitIWkE6LQlsJzW/6XJwVujBYOZSz3c50h1T8kp/Hdi8YY/o8NSMSUqK2q5fxmX+9iFUnSGsrr4UAcjso+fwXLJges/1+oHktJWpTR0VkTPDVQBDMY5hZH4EWcuZgmoBOQ2S/7sT7LW/RQ7q+/O5GhQaFiaIUQaFLr/jJhqKB3d5LdCQMCaaXqQul6nXe283InkMAFcyJf11qYNSpYIOkNe4+HH7ivXlkvA+bMU2meIbH6WWPvvLLsF511ob4fZ1zzOxSexJGABx9sIWOs/pH6saHpvKTJMYysO4bBU7W7q0H82To4cXa1OeUChzaUxSMeC82Tqr0fybxZazjljFLpYhVYZ+IGqJR/eKck+cOQGEpBsOWZmxKGh3XiJpe88iUoU5OkNCU8uPQQtkMCwZtrMLB3omJaaxlBNiN0ovxOUA0sb
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 02:14:55.6504
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a7f680cc-1ac4-453e-4b8f-08df3c74ea6f
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:
	BN2PEPF000044AC.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8592
X-purgate-ID: tlsNG-16d1c6/1794017701-F5A0C77B-CF8BD836/0/0
X-purgate-type: clean
X-purgate-size: 1565

The bits of an input address from its top bit (bit 63, or bit 55 with
the top byte ignored) down to the input address size must be all 0 for
TTBR0 and all 1 for TTBR1, else the walk faults (ARM DDI 0487A.k
J1.1.5). guest_walk_ld() chose the base from the top bit alone and
translated such an address. Refuse it before reading any table.

Fixes: 7d623b358a45 ("arm/mem_access: Add long-descriptor based gpt")
Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Julien Grall <julien@xen.org>
Cc: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: Michal Orzel <michal.orzel@amd.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
---
 xen/arch/arm/guest_walk.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
index e23457869b..a8f8530683 100644
--- a/xen/arch/arm/guest_walk.c
+++ b/xen/arch/arm/guest_walk.c
@@ -407,6 +407,15 @@ static bool guest_walk_ld(const struct vcpu *v,
         if ( (input_size > TCR_EL1_IPS_48_BIT_VAL) ||
              (input_size < TCR_EL1_IPS_MIN_VAL) )
             return false;
+
+        /*
+         * The bits of the GVA from the top bit down to the input size must
+         * all be 0 for TTBR0 and all 1 for TTBR1, or the translation faults
+         * (ARM DDI 0487A.k AArch64.TranslationTableWalk(), J1.1.5).
+         */
+        mask = GENMASK_ULL(topbit, input_size);
+        if ( (gva & mask) != ((gva & BIT(topbit, ULL)) ? mask : 0) )
+            return false;
     }
     else
     {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 02:15:11 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 02:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1477743.1683066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxW-00067b-88; Sat, 07 Nov 2026 02:15:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1477743.1683066; Sat, 07 Nov 2026 02:15:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPVxW-00067P-3p; Sat, 07 Nov 2026 02:15:10 +0000
Received: by outflank-mailman (input) for mailman id 1477743;
 Sat, 07 Nov 2026 02:15:08 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <stefano.stabellini@amd.com>) id 1xPVxU-0005sV-NF
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 02:15:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPVxT-001QTj-AM
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 03:15:07 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee89ab-8faa-0a2a0a5109dd-0a2a4507d6fc-0
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:07 +0100
Received: from [52.101.56.59]
 (helo=BN1PR04CU002.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <stefano.stabellini@amd.com>)
 id 6aee89a9-b4ea-0a2a45070019-3465383b98e9-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 03:15:06 +0100
Received: from BN0PR10CA0029.namprd10.prod.outlook.com (2603:10b6:408:143::7)
 by SJ0PR12MB6901.namprd12.prod.outlook.com (2603:10b6:a03:47e::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Sat, 7 Nov
 2026 02:14:59 +0000
Received: from BN2PEPF000044AB.namprd04.prod.outlook.com
 (2603:10b6:408:143:cafe::53) by BN0PR10CA0029.outlook.office365.com
 (2603:10b6:408:143::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.11 via Frontend Transport; Sat, 7
 Nov 2026 02:14:59 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BN2PEPF000044AB.mail.protection.outlook.com (10.167.243.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Sat, 7 Nov 2026 02:14:58 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Fri, 6 Nov
 2026 20:14:58 -0600
Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Fri, 6 Nov
 2026 20:14:58 -0600
Received: from amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217)
 with Microsoft SMTP Server id 15.2.2562.53 via Frontend Transport;
 Fri, 6 Nov 2026 20:14:57 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=vvLYw5clDVYLCFyYvGO+mFzRv6lWERUSW09afiLk4KEdD+d8wXOp6OVcoE2rPFiE+AegsmI2n8Pl73fQqBMiUxtdkff5Le4EmJuxZLvCdI3LAYLzcBt4Ah2ZsvO/4qAibuwf6av6ZKDWPiaOEsuoZR9eA5GEYz/w73dgpdNipIbqedEhlFJXARZwa8iaNhuoTD62KEpcYFsrU4WECV9lxRu+fRrcJhhIqeHTyqhJQepCrC8IKNa+EE+K1I8OJTxuE9kTwJxrJBxPuJKRSARhd2l/nnzHN0g5MgBNad1AvnohUFZYSRGXCGiZIhLI0GgBNQj398Rk0bfsycmCR0Cqbg==
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=QU6aJ/KvvHtBoLdsd60+qKvoKNjk6n2iz4mr+ZiTzLs=;
 b=mTmxOf7kyC2bQ4yJvFVtF7Q7alS4tRPb2yq8tX2IjNSyeWXmj52NCUxJ1mFTYxJz/7/TgQIODcZUh7SMHl/L/dmL7DKfAFF7gPQTxKLz5MYnHQ0f7CTwdBUImD+JRqH5fVLZP5knpRMx7nsYIq+aDq2nyZ6ANTyikF/xvNllmoP94JCjNxlPHzfVnIDIgjR3Lgq2qCkL4XtPuduEhBoYj/6YqSBe9qYWBm0pjK0Nfq9AUUp8nxsCAMsrlSUH0zWOEuzuwH9MHBn82FkQ62bTgr/Sbdrys4ALfkpDjT2UA/zrTdHwEGhZulGoNYDp3mFmH1ktvuwPYG0bcHUq2JC+5w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QU6aJ/KvvHtBoLdsd60+qKvoKNjk6n2iz4mr+ZiTzLs=;
 b=f8I+XQuFX0Z9eU497qAz5h2X8dJFwHj2udFkGdAW85jqKfvyu5/ZGgv2ra2EvwhdCdEggtqk1CJzxAQ6Y8Q1cpwFIy/eSpa9WKnvrBtslBjd1JTUegKRyRodWBWrA3jlVy1CSlkcWPplejcpl6cSHoPvqSRkzDiW5qlR7xRSmvE=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
From: Stefano Stabellini <stefano.stabellini@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <stefano.stabellini@amd.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger@xenproject.org>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH 4/4] vpci/header: empty the BAR range sets when modify_bars() fails
Date: Fri, 6 Nov 2026 18:14:41 -0800
Message-ID: <20261107021442.253612-4-stefano.stabellini@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261107021442.253612-1-stefano.stabellini@amd.com>
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AB:EE_|SJ0PR12MB6901:EE_
X-MS-Office365-Filtering-Correlation-Id: 4a06e0c7-7989-45e4-6e77-08df3c74ec5e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|23010399003|36860700016|1800799024|261102123227099003|261009223027099003|261021123027099003|261022105027099003|261021121427099003|261026140227099003|261028144727099003|56012099006|10067099003|11063799006|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	lStvogRErECWamVLJmFCsIca7pEMN63ZzZP7I7UqSLVS+VGEkAqEUuhQHggnpevGQrKp3RA4Q2lJ/xA8RXi3e43aXHGu9Sd0Ka0YmAmODjSV01xpHoxpsvfhUy48GgaBzMABaQ7P+rgatNABBWoOFVVjOEK4fwTbOKwqXfYnapVOA6tnd9HhzaCbAIxx7wtZiEp2uSbTjdRsCuvfL8yzuSA+xpJKs8O1lMpkuRzW8gTE5PwiV+x9coLvCEBvA162udIt5CKWe3sLazbOKcmVE3p/glwNYwUlRKfbXkS75ZgFHRldT3/x2CJgurQo8a1REor9/jCewAG2Fwespcw+Z6agQHDvYvQUEEPFZJ0xRFS8bUqmIHCehw2JwznkpqONXW21EpqXVx8zT8A3ShGUDfexkp6fpkX/gtk2LB32JtmFqcdRo3H64u3uZjPtEsKF9RKNOuUGPdH2nn99Qq4Tql5ghM2ckWG5Ld+2ALQUBSKQDLth/ebcSOOMUG82/l2xWCwdct3OkBFZi9A2R5IiACNGBu305b+ZV8b7Wf4FkCCbPfQhMLn4qE1mV3SNlyceEx0DMi4ZKDfEeUAnS7UAxNw7UagWnkcCuUtpOy046jtd623FeCbgbrUC3EoQzZtqqJb2sOkRlZMrZQS3/5X2dsi//+45rJp1MKF0ouJDlsg1GjMQL49UTaxEopObeLNUEV7uliEfCM5VnkHz0a6X4w==
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)(82310400026)(23010399003)(36860700016)(1800799024)(261102123227099003)(261009223027099003)(261021123027099003)(261022105027099003)(261021121427099003)(261026140227099003)(261028144727099003)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	91mPM5MG9P5+PzIkDQ0LkS+933rJCCXtseZvUML1lEsfXtQifQhmXUzurE9EIxJFFJF2yq8S/U9ooYxXa2QFDz6zQX848cBLBnEJ7yScDEw6ovOr6+98WBs1E3lidPMcbRDsz/tzfFb/maAZ6U1TYbFD5zj25+iVAK1pb7tukOSZly+LuHMITFN5EmotzldIaYM1aIIr/v4fnQtL+mMoT7epWMaS0hbjou94RIBAEWuxqwtBANxh5p1xrtkHfEHL+0bCM7r0hfW95IGPozvJ6Py3hDVf4jlOO2zWODtmB4XGA1efQJt5LzWHH+S/RLyTvYl5RWQbvJJQnDTO70r6woibVUwwSE1noqOHAARNWhNi7IQyWoK+4bbWhUBNiCO2P+FlocbITDwLHOZFa0EEcAjz56bqH6v4zR68quixDMaTomEyP6L79QCA8rKumKqo
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2026 02:14:58.8959
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4a06e0c7-7989-45e4-6e77-08df3c74ec5e
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:
	BN2PEPF000044AB.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6901
X-purgate-ID: tlsNG-ef75cf/1794017707-A50CDAE4-92898FF8/0/0
X-purgate-type: clean
X-purgate-size: 3682

On error modify_bars() returned with the ranges already collected still
in the per-BAR sets. The next request on the device then maps or unmaps
them along with its own. Purge every set when collecting the ranges
fails.

Fixes: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: "Roger Pau Monné" <roger@xenproject.org>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
 xen/drivers/vpci/header.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 7e5f4b8a00..0bdc4d6a46 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -366,7 +366,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             gprintk(XENLOG_G_WARNING,
                     "%pp: can't map BAR%u - offset mismatch: %#lx vs %#lx\n",
                     &pdev->sbdf, i, bar->guest_addr, bar->addr);
-            return -EINVAL;
+            rc = -EINVAL;
+            goto fail;
         }
 
         rc = rangeset_add_range(bar->mem, start_guest, end_guest);
@@ -374,7 +375,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
                    start_guest, end_guest, rc);
-            return rc;
+            goto fail;
         }
 
         /* Check for overlap with the already setup BAR ranges. */
@@ -391,7 +392,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
                         &pdev->sbdf, start_guest, end_guest, rc);
-                return rc;
+                goto fail;
             }
         }
 
@@ -401,7 +402,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             gprintk(XENLOG_WARNING,
                     "%pp: failed to sanitize BAR#%u memory: %d\n",
                     &pdev->sbdf, i, rc);
-            return rc;
+            goto fail;
         }
     }
 
@@ -425,7 +426,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove MSIX table [%lx, %lx]: %d\n",
                         &pdev->sbdf, start, end, rc);
-                return rc;
+                goto fail;
             }
         }
     }
@@ -487,7 +488,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
                         gprintk(XENLOG_WARNING,
                                 "%pp: failed to remove [%lx, %lx]: %d\n",
                                 &pdev->sbdf, start, end, rc);
-                        return rc;
+                        goto fail;
                     }
                 }
             }
@@ -516,6 +517,18 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     defer_map(pdev, cmd, rom_only);
 
     return 0;
+
+ fail:
+    /*
+     * Leave no range collected for the request that failed: the next request
+     * expects every BAR's set to start empty, and a range left behind would
+     * be mapped or unmapped with it.
+     */
+    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+        if ( header->bars[i].mem )
+            rangeset_purge(header->bars[i].mem);
+
+    return rc;
 }
 
 static void cf_check cmd_write(
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 14:14:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 14:14:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1478127.1683075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPhBX-0002ZL-Qd; Sat, 07 Nov 2026 14:14:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1478127.1683075; Sat, 07 Nov 2026 14:14:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPhBX-0002ZD-MJ; Sat, 07 Nov 2026 14:14:23 +0000
Received: by outflank-mailman (input) for mailman id 1478127;
 Sat, 07 Nov 2026 14:14:22 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien.grall.oss@gmail.com>) id 1xPhBW-0002Z7-NS
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 14:14:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPhBW-004Yn9-4H
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 15:14:22 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 6aef3223-bab6-0a2a0a5309dd-0a2a450be040-12
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 15:14:21 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 6aef323d-b7e8-0a2a450b0019-d1558033c8ca-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 15:14:21 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4ac95761c85so10272935e9.2
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 06:14:21 -0800 (PST)
Received: from [10.0.0.150] (gw1.octic.net. [88.97.20.152])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-492d7700224sm9949440f8f.33.2026.11.07.06.14.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 07 Nov 2026 06:14:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794060861; x=1794665661;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=EYfic+ErV0k2GxDlyiMpLBqxzLX4Eizzx2y73VP38rM=;
        b=ab2cpJm1C0JMFMUQn/BPZ03wdEWKhXcmpvYkHoF038ywZARxR3pWoAx8amDfjvE8Xd
         PT6bP8zWeJs3iB+qyZ/nnO0w0niwsWnkHs9AiK8c0mLAvzZVr0jKDcr9tefruR5p0H77
         vnNVzrdpkFZD41Ox7xJnWlEaf22fsTQhUutUwc898UIIXoBZNcLlFundsMFad8ZW/1mB
         3KOA2PMQyLhHtF/vJE2TJYxKtqM2mIqniy5/j7RNNZEZwX/5OxaFGPx2Qs0MiutBqiih
         yjeTEV8UqEs4AMMtMvZSKu95RHztSApvIMAFDztJUp7CTrc5Lu9IyBKUVzioZ5DvdGKe
         5H/g==
X-Forwarded-Encrypted: i=1; AKwUvBxhxVruyqnGMJO/ZC1Eo26Ak6Demm4BGNkBcrMvdGqRhlL3MIqjJW7snd+ug67MovIuyYIXzl6cSxg=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8VwgbREtT5mANCBFY/Fp9Y2e8sAoHywocsm6vpq0GADUpGHRIb
	62x4i/vciFTp3o5x80ARpg7EnaVS47sZGuMi3u3KkYiqRJ6hoHTQ89/B
X-Gm-Gg: AYBFou2vqqMzD588Ks5nZEFOgvR2MlW46ho0gwjVaKkjqpsJ+NBebk6gdW34GETME9U
	vRwE9SmYBq3ZbZey4X0F1PHOeSpgNcqM0MsVPlmUfDPW2mZZ2d7cxMRFRpl1SODbEHRWK7QsxgA
	tr4MYieFPlF47yzvxxPfUGJzEZrsiSWqP52DSkfO00M2jvUdCp7Yg43IL6ObYFVaVE5a+9AAndo
	qlIWsIDWpkh9R+g/wfUC4PBboU/pJw3pTSEu6L8zV0+CRVW2ohsHhYXPWB+fc3oKO2/6qyuyUXS
	n7Nava+t9L87gZodJCn1WkHzByCp6vLm2NssRbYXZvtz6ioawaebV9DhPmw2RNfqy6ymKKqI4x7
	QFvZiMd8bw8YNnepn2pryZKhPunYxq4hev/mUPc0Hqw2CkbKFHUMVuosClqGE7g3CgA8gOcibQ8
	qulOMRyEO+Ach6tuEeAXhPQSUn8GoObPoCBaQupJwP3quPuRVDm1gg2DAEr5ehmi9nNac7B007V
	WYnkmUQGRRs+pU3CABblQcWrtbovyfe7Z53IdnXDcOzQsAWOuERUQDdie5Ukt1wPv3fb07d0tTY
	dw9aAMrVH8QEqI0tf+yRsMHmf5KTb2PPkjwuLouf65sn
X-Received: by 2002:a05:600c:5391:b0:4b1:4da2:ca99 with SMTP id 5b1f17b1804b1-4b6dd82a9aamr94230635e9.10.1794060861076;
        Sat, 07 Nov 2026 06:14:21 -0800 (PST)
Message-ID: <2f9ea791-5422-42a3-8c04-4203336109f5@xen.org>
Date: Sat, 7 Nov 2026 14:13:05 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] xen/arm: guest_walk: refuse a block descriptor where
 the granule has none
To: Stefano Stabellini <stefano.stabellini@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
Content-Language: en-GB
From: "Grall, Julien" <julien@xen.org>
In-Reply-To: <20261107021442.253612-1-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1794060861-1AAD89EA-623A101A/0/0
X-purgate-type: clean
X-purgate-size: 2430

Hi Stefano,

On 07/11/2026 02:14, Stefano Stabellini wrote:
> guest_walk_ld() accepted a block descriptor at any level. No granule has
> level 0 blocks, and the 16KB and 64KB granules have no level 1 blocks
> (ARM DDI 0487A.k D4.3.1): the translation table walk makes such an entry

It would be good to quote a specification that is a bit newer (A.k was 
release in 2016!). In recent spec (M.d), it seems you can have level 1 
blocks for 16KiB and 64KiB when 52-bit is supported.

Looking at the logic in get_ipa_output_size() we are rejecting 52-bit at 
the moment. So the check you add is fine as-is. I think it would be made 
more clear in the commit message and ...

> a Translation fault (AArch64.TranslationTableWalk(), J1.1.5). Refuse it.
> 
> Fixes: 7d623b358a45 ("arm/mem_access: Add long-descriptor based gpt")
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> Cc: Julien Grall <julien@xen.org>
> Cc: Bertrand Marquis <bertrand.marquis@arm.com>
> Cc: Michal Orzel <michal.orzel@amd.com>
> Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
> ---
>   xen/arch/arm/guest_walk.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
> index 09fe486598..e23457869b 100644
> --- a/xen/arch/arm/guest_walk.c
> +++ b/xen/arch/arm/guest_walk.c
> @@ -533,6 +533,15 @@ static bool guest_walk_ld(const struct vcpu *v,
>       if ( !lpae_is_valid(pte) || !lpae_is_mapping(pte, level) )
>           return false;
>   
> +    /*
> +     * A block descriptor is only supported at level 1 and level 2 with the
> +     * 4KB granule, and only at level 2 with the 16KB and 64KB granules (ARM
> +     * DDI 0487A.k D4.3.1). The block encoding at any other level generates a
> +     * Translation fault (AArch64.TranslationTableWalk(), J1.1.5).

... the comment that this is only valid for 48-bit. I would also 
recommend to update the comment in get_ipa_output_size() to mention this 
check would need to be updated. Alternatively, you could check the 
ipa_sizes now.

> +     */
> +    if ( level == 0 || (level == 1 && gran != GRANULE_SIZE_INDEX_4K) )
> +        return false;
> +
>       /* Make sure that the lower bits of the PTE's base address are zero. */
>       mask = GENMASK_ULL(47, grainsizes[gran]);
>       *ipa = (pfn_to_paddr(pte.walk.base) & mask) |

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 14:50:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 14:50:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1478153.1683083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPhjx-0007Od-CO; Sat, 07 Nov 2026 14:49:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1478153.1683083; Sat, 07 Nov 2026 14:49:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPhjx-0007OW-9U; Sat, 07 Nov 2026 14:49:57 +0000
Received: by outflank-mailman (input) for mailman id 1478153;
 Sat, 07 Nov 2026 14:49:55 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien.grall.oss@gmail.com>) id 1xPhjv-0007OQ-OF
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 14:49:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPhjq-002eS7-58
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 15:49:50 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 6aef3a8e-e002-0a2a0a5209dd-0a2a4505d2b0-0
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 15:49:50 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <julien.grall.oss@gmail.com>)
 id 6aef3a8d-4cb1-0a2a45050019-d1558036c1e0-3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 15:49:50 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a5036bbac7so9623525e9.3
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 06:49:50 -0800 (PST)
Received: from [10.0.0.150] (gw1.octic.net. [88.97.20.152])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb1b64esm77066915e9.13.2026.11.07.06.49.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 07 Nov 2026 06:49:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794062989; x=1794667789;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ObZ3+Uzw3BQkWZUe0Pb8IiImCpslGGfRhFh87oNd7Po=;
        b=cC4CqhkuGnSuUWXdPynJ2bfyHATtRtF4ZiTWZwQc5bTDAjNFqKsEPm7ko9SeZJQ29H
         DLARsyEddBbuGQZKZwMcpPdXm1O96RB3TjCTCmG1Pp2cfV0DAp+8BsvsO9AsnxNtSI2E
         IuHiYyVqPB8+OF4uhh+R4tX+MWzWBo2ZjWm1HqSEvovYENtxE4XsvNJ05vmeD2uYK+uW
         hciXrquI/VlCwT4Gh5f4HnQphJ24jG7em/P9SXeAHXJTNsijorgHxX0MgT9tIXndQE27
         fUd0Qgt3ndvOXJej0rQs9Rj+u5VJ1//ORaR0ZhJM4aJZeExUjwVdUQA+6jeycEyNjJXy
         oyaw==
X-Forwarded-Encrypted: i=1; AKwUvBwY/ocMOEz82COeMHAMn42xhJ2vMq40Cu9R1Li0J0zyO5HmwycreXwLUiXd1u7twicZQ8SnUf0wW6c=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/G8dyEiYdl9NCgFyvQPZ5fpQH5aOoQyuL61iLuNQ1Cog23HPPr
	H3b/H44Z78SuR8UXF/S4AqHsnjvpirjTuEFr2ZYJJESTANa5GnavPdAh
X-Gm-Gg: AYBFou2BaHqNNxM5gLM+96NBWzldcmthNOH2+9a13hmnc8ql0g/OYzKCDxnzZE3YuTQ
	De37gJ1z1ijGLlmwNt6DVBgYv3XGu7R9eipGsJy1DEeMjcB2qXU/CWfdrIDAG1T3MOOybquoIMV
	6f4uu6erUY2hAeW4jNPHJ98+cIdMjSW+a95B9i2YTCph0OdVWLgR5OlsOQdOfZY2Zu4S0wHPq1T
	mvnI07buctGhAlsSbyt+uwJGywz48AGhKTXSAre7ReFuSQGbjjNu7MQyZnx8DORkBVx+y82fP/P
	pdDnwP74TQe4VfkcqR6pEltcC2qbOhjworpHlErRlxLOg+1qz2waQC3Z/Nj/mwRdjH2ZiMShczd
	uffKuoOSlv3oAgV+r5TJaMz/kNcAWFSGLnTS69DpGn8YoCK+HEwKoXs4diZWa/7CBYzhpbApTp1
	+6zfI1WYes9E8OwAa1oT+TNtTnsXCroCKqMUdXbOlSMsKx1B6+FDGhNr2ADke7nn/Jys3JuBLHG
	bmHGOaaF8m39WzidO7bnXxaHtLEZa4PS3qBB4GuWiijgnxf2x/vXJibY5Mfesd8mTg2SUCr/2bc
	xRDh+dP9n/ad5MSk++RyvNFuugIX/uBaR+Xdx9daxzyazNZVNS/w1TKz75RM9Yw0cg==
X-Received: by 2002:a05:600c:8b23:b0:4a7:7f3f:6f8e with SMTP id 5b1f17b1804b1-4b6d8591107mr103909295e9.0.1794062989469;
        Sat, 07 Nov 2026 06:49:49 -0800 (PST)
Message-ID: <52856dac-7f48-4ecb-be5a-5479260f6d03@xen.org>
Date: Sat, 7 Nov 2026 14:48:33 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/4] xen/arm: guest_walk: refuse an address outside both
 halves of the range
To: Stefano Stabellini <stefano.stabellini@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
 <20261107021442.253612-2-stefano.stabellini@amd.com>
Content-Language: en-GB
From: "Grall, Julien" <julien@xen.org>
In-Reply-To: <20261107021442.253612-2-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c201ff/1794062990-F48A62A1-817E3677/0/0
X-purgate-type: clean
X-purgate-size: 2116

Hi Stefano,

On 07/11/2026 02:14, Stefano Stabellini wrote:
> The bits of an input address from its top bit (bit 63, or bit 55 with
> the top byte ignored) down to the input address size must be all 0 for
> TTBR0 and all 1 for TTBR1, else the walk faults (ARM DDI 0487A.k
> J1.1.5). guest_walk_ld() chose the base from the top bit alone and

Similar to your first patch, the specification is quite old. Please 
quote a more recent one (e.g. M.d).

> translated such an address. Refuse it before reading any table.
> 
> Fixes: 7d623b358a45 ("arm/mem_access: Add long-descriptor based gpt")
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> Cc: Julien Grall <julien@xen.org>
> Cc: Bertrand Marquis <bertrand.marquis@arm.com>
> Cc: Michal Orzel <michal.orzel@amd.com>
> Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
> ---
>   xen/arch/arm/guest_walk.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
> index e23457869b..a8f8530683 100644
> --- a/xen/arch/arm/guest_walk.c
> +++ b/xen/arch/arm/guest_walk.c
> @@ -407,6 +407,15 @@ static bool guest_walk_ld(const struct vcpu *v,
>           if ( (input_size > TCR_EL1_IPS_48_BIT_VAL) ||
>                (input_size < TCR_EL1_IPS_MIN_VAL) )
>               return false;
> +
> +        /*
> +         * The bits of the GVA from the top bit down to the input size must
> +         * all be 0 for TTBR0 and all 1 for TTBR1, or the translation faults
> +         * (ARM DDI 0487A.k AArch64.TranslationTableWalk(), J1.1.5).
> +         */

Regardless what I wrote above, I checked the algorithm in A.k and I 
can't find the logic suggesting for a fault. Instead it seems to be:


if inputaddr<top> == '0' then
   inputsize = 64 - UInt(TCR_EL1.T0SZ);
   [...]
else
   inputsize = 64 - UInt(TCR_EL1.T1SZ);
   [...]

And this seems right to me because the be used for tagging. So they are 
not guarantee to be all 1s or all 0s. Can you point me to the part of 
the algorithm that says otherwise?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Sat Nov 07 22:14:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 07 Nov 2026 22:14:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1478409.1683093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPog4-0004kC-Nz; Sat, 07 Nov 2026 22:14:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1478409.1683093; Sat, 07 Nov 2026 22:14:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPog4-0004k4-Jw; Sat, 07 Nov 2026 22:14:24 +0000
Received: by outflank-mailman (input) for mailman id 1478409;
 Sat, 07 Nov 2026 22:14:23 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ehem@m5p.com>) id 1xPog2-0004jx-Vh
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 22:14:22 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPog2-009paw-9M
 for xen-devel@lists.xenproject.org; Sat, 07 Nov 2026 23:14:22 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ehem@m5p.com>)
 id 6aefa21d-2eae-0a2a0a5409dd-0a2a4508cafa-38
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 23:14:22 +0100
Received: from [74.104.188.4] (helo=mailhost.m5p.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ehem@m5p.com>)
 id 6aefa2b3-f659-0a2a45080019-4a68bc043991-5
 for <xen-devel@lists.xenproject.org>; Sat, 07 Nov 2026 23:14:22 +0100
Received: from m5p.com (mailhost.m5p.com [IPv6:fdc4:6ee8:648f:6bf6:0:0:0:f7])
 by mailhost.m5p.com (8.18.1/8.17.1) with ESMTPS id 6A7MDgxb094964
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Sat, 7 Nov 2026 17:14:08 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.18.1/8.15.2/Submit) id 6A7MDfxk094963;
 Sat, 7 Nov 2026 14:13:41 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Date: Sat, 7 Nov 2026 14:13:41 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
        Anthony PERARD <anthony.perard@vates.tech>,
        Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
        Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger@xenproject.org>,
        Stefano Stabellini <sstabellini@kernel.org>,
        xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/5] make: add use of $(realpath ) in top and main
 Rules.mk files
Message-ID: <au-ilXUdOhZhlcAq@mattapan.m5p.com.>
References: <cover.1792436534.git.ehem+xen@m5p.com>
 <0b38e7ba64831575c2f2533c69e00da79c4bc958.1792436534.git.ehem+xen@m5p.com>
 <a7d5134b-aa9a-4f30-a58c-939f5cb7443b@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <a7d5134b-aa9a-4f30-a58c-939f5cb7443b@suse.com>
X-Spam-Status: No, score=0.4 required=10.0 tests=KHOP_HELO_FCRDNS,
	T_SPF_HELO_PERMERROR,T_SPF_PERMERROR autolearn=no autolearn_force=no
	version=4.0.2
X-Spam-Checker-Version: SpamAssassin 4.0.2 (2025-08-27) on mattapan.m5p.com.
X-purgate-ID: tlsNG-c1860d/1794089662-CE14687B-F1479265/0/0
X-purgate-type: clean
X-purgate-size: 1431

On Mon, Oct 26, 2026 at 10:01:59AM +0100, Jan Beulich wrote:
> On 19.10.2026 21:02, Elliott Mitchell wrote:
> > Date: Sat, 17 Oct 2026 12:25:36 -0700
> > 
> > Without this "/.." tend to accumulate in $(XEN_ROOT) and eventually
> > things start breaking.
> 
> "breaking" as in what exactly happening?

This is a scar from a project I was involved in several years back.  One
issue is dependencies are computed/compared as strings.  In particular
if multiple parent directory references are made one part of a project
might end up depending on:

foo/../bar/../baz

While another might end up depending on:

bar/../foo/../bar

If building is done in parallel you can end up with two processes
entering the same directory at the same time and colliding.

I imagine other problems/manifestations can occur.  I have not observed
any of these occuring with Xen's build, but this is something I tend to
preemptively address.  Strings including "/../" do occur in Xen's build
so there is some concern issues could occur in the future.

Certainly not urgent, but something which could become an issue.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Sun Nov 08 03:01:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 03:01:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1478609.1683103 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPt9S-0006dv-Pz; Sun, 08 Nov 2026 03:01:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1478609.1683103; Sun, 08 Nov 2026 03:01:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPt9S-0006dk-Kd; Sun, 08 Nov 2026 03:01:02 +0000
Received: by outflank-mailman (input) for mailman id 1478609;
 Sun, 08 Nov 2026 03:01:01 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ehem@m5p.com>) id 1xPt9R-0006de-ME
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 03:01:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPt9R-003iU5-1b
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 04:01:01 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ehem@m5p.com>)
 id 6aefe5b2-bab6-0a2a0a5309dd-0a2a450b814a-22
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 04:01:01 +0100
Received: from [74.104.188.4] (helo=mailhost.m5p.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ehem@m5p.com>)
 id 6aefe5e7-b7e8-0a2a450b0019-4a68bc043901-5
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 04:01:00 +0100
Received: from m5p.com (mailhost.m5p.com [IPv6:fdc4:6ee8:648f:6bf6:0:0:0:f7])
 by mailhost.m5p.com (8.18.1/8.17.1) with ESMTPS id 6A830R0k095764
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Sat, 7 Nov 2026 22:00:53 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.18.1/8.15.2/Submit) id 6A830QxV095763;
 Sat, 7 Nov 2026 19:00:26 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
Date: Sat, 7 Nov 2026 19:00:26 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
        Anthony PERARD <anthony.perard@vates.tech>,
        Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
        Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger@xenproject.org>,
        Stefano Stabellini <sstabellini@kernel.org>,
        xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/5] Config.mk: record hash of SeaBIOS tag
Message-ID: <au_lyioQRMuKkoqJ@mattapan.m5p.com.>
References: <cover.1792436534.git.ehem+xen@m5p.com>
 <9771fce7e080b2d64fd9535b6e38d70781eb2de3.1792436534.git.ehem+xen@m5p.com>
 <0fc3eb31-1aac-4b0e-8f9a-ae947dabe81d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <0fc3eb31-1aac-4b0e-8f9a-ae947dabe81d@suse.com>
X-Spam-Status: No, score=0.4 required=10.0 tests=KHOP_HELO_FCRDNS,
	T_SPF_HELO_PERMERROR,T_SPF_PERMERROR autolearn=no autolearn_force=no
	version=4.0.2
X-Spam-Checker-Version: SpamAssassin 4.0.2 (2025-08-27) on mattapan.m5p.com.
X-purgate-ID: tlsNG-42698a/1794106861-A90CD9EA-AAE50CB3/0/0
X-purgate-type: clean
X-purgate-size: 2666

On Mon, Oct 26, 2026 at 10:05:45AM +0100, Jan Beulich wrote:
> On 19.10.2026 21:02, Elliott Mitchell wrote:
> > Date: Sun, 18 Oct 2026 14:12:43 -0700
> > 
> > Recording the tag as a comment, but directing git at the hash allows
> > bypassing downloading tags (git does not selectively download tags).
> > While remote branches get prefixed with the remote name.  The result is
> > identical, the tag is simply a reference to the hash.
> 
> I don't quite get what the win is. The middle sentence also feels, to
> me, unrelated to anything else here. The fact that ...
> 
> > --- a/Config.mk
> > +++ b/Config.mk
> > @@ -220,7 +220,8 @@ MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
> >  MINIOS_UPSTREAM_REVISION ?= 26ceb2daf95dd9e7fed9c83d36be3aaf1a0fa8a1
> 
> ... we use a hash here, for example, doesn't warrant ...
> 
> >  SEABIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/seabios.git
> > -SEABIOS_UPSTREAM_REVISION ?= rel-1.17.0
> > +# rel-1.17.0
> > +SEABIOS_UPSTREAM_REVISION ?= b52ca86e094d19b58e2304417787e96b940e39c6
> 
> ... the use here. IOW if this is to be pursued, more explanation is
> going to be necessary.

Issue is git's handling of tags isn't very good.  In particular it really
wants to either get all tags or no tags.  I've found it quite difficult
(read: I've yet to suceed) trying to get it retrieve a single tag.
Instead what it does is resolve the tag to the commit hash (by asking the
server) and then only saving the commit to persistent storage.

If you have git save all tags, it will download nearly everything.  Not
just the branch/tag you need, but any branch which has a tag.  This means
somewhere 2-10x the storage, 2-10x the download bandwidth, 2-10x the time
spent waiting for the download.



The situation with Qemu is far more concerning.  Since
$(QEMU_UPSTREAM_REVISION) points at a branch on Xen's git server, every
time that branch moves you get a different build.  Since different
versions will have different bugs/features unless there is a public
record of where the branch was over time, older builds become impossible
to reproduce.  

The favored solution to these problems would be to switch to using
`git subtree`.  This though would be a pretty major move.  I was hoping
this series would get a discussion started about option.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Sun Nov 08 08:43:04 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 08:43:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1478800.1683112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPyUF-0006FC-Gx; Sun, 08 Nov 2026 08:42:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1478800.1683112; Sun, 08 Nov 2026 08:42:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xPyUF-0006F4-CS; Sun, 08 Nov 2026 08:42:51 +0000
Received: by outflank-mailman (input) for mailman id 1478800;
 Sun, 08 Nov 2026 08:42:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <rppt@kernel.org>) id 1xPyUE-0006Ey-8l
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 08:42:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xPyUC-000bDa-2U
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 09:42:48 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <rppt@kernel.org>)
 id 6af035ad-bab6-0a2a0a5309dd-0a2a450ad8ac-22
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 09:42:48 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <rppt@kernel.org>)
 id 6af03606-f2d2-0a2a450a0019-aceafc1fbeb2-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 09:42:47 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 62AF1448C4;
 Sun,  8 Nov 2026 08:42:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3E7861F0089F;
 Sun,  8 Nov 2026 08:42:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="From:Date:Subject:To:Cc"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1794127365;
	bh=OvMwR2q246pcD5TId5yUQvPErCrIqP4Yqwl75kEJdv4=;
	h=From:Date:Subject:To:Cc;
	b=R+SlQOYJPlqMQtkVfLLLVQdln/NbRUqFxW6q8kybGmJI1Ss8JrmkDqLK/CPMlI6as
	 bIXH2ERjSanKhItHNzpQp2YWjyNIbJLQKMRBKCdsaiTxa+iQRwJ0iv2IK5Lmeqt4hM
	 ln8SZIfloQ24RJTpkL7MMm8AkApe/fkzdJGLQ7fuN1nzuSK9MMQHP/XQObI2TnFjkz
	 CHMCXy2uwEqTAXbWzPX0orhE1GqNVNEsTOapZD60AsVPV0SLpQvHGH7aILXYgo9SVh
	 jJhXEO65lpzewbkcFZBljrIEo2uiIRgtJO+HutILFfIQJnCcX5OWF8pnNCN8C/3Blo
	 9TazDZceW7c6A==
From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
Date: Sun, 08 Nov 2026 10:42:40 +0200
Subject: [PATCH] xen/events: replace __get_free_pages() with kmalloc()
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>
X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yWM0QqDMAxFf0XyvDItpeB+ZewhrVEzWByJDkH89
 7Xb47mccw8wUiaDW3OA0oeNFynQXRrIM8pEjofC4Fsf2+iDS8HtJA67PETfZ+rHAEV+K428/47
 ujz/blp6U11pXI6GRS4qS5zotyhPL9YW2ksJ5fgHuiZ8TigAAAA==
X-Change-ID: 20260624-b4-xen-a1cd629ce9f4
To: Juergen Gross <jgross@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: David Hildenbrand <david@kernel.org>, 
 "Mike Rapoport (Microsoft)" <rppt@kernel.org>, 
 Vlastimil Babka <vbabka@kernel.org>, linux-mm@kvack.org, 
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
X-Mailer: b4 0.16.1-dev
X-purgate-ID: tlsNG-4011c0/1794127367-51CC3CFC-282494F1/0/0
X-purgate-type: clean
X-purgate-size: 2320

set_evtchn_to_irq() allocates a page for the event channel to IRQ
number software lookup table.

This buffer can be allocated with kmalloc() as there's nothing special
about it to go directly to the page allocator.

kmalloc() provides a better API that does not require ugly casts and
kfree() does not need to know the size of the freed object.

Performance difference between kmalloc() and __get_free_pages() is not
measurable as both allocators take an object/page from a per-CPU list for
fast path allocations.

For the slow path the performance is anyway determined by the amount of
reclaim involved rather than by what allocator is used.

Replace use of __get_free_pages() with kmalloc() and free_pages() with
kfree().

Link: https://lore.kernel.org/all/635405e4-9423-4a25-a6e7-e03c8ea0bcbe@redhat.com
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
---
This is a (small) part of larger work of replacing page allocator calls
with kmalloc.

Largely, anything that doesn't need struct page (or a memdesc in the
future) should just use kmalloc() or kvmalloc() to allocate memory.
Removing needless calls to page allocator helps with memdesc (aka project
folio) conversion and gives a nicer API without casts.
---
 drivers/xen/events/events_base.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index fd16d652c81f2..8c377493429b7 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -230,7 +230,7 @@ static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
 		if (irq == -1)
 			return 0;
 
-		evtchn_row = (int *) __get_free_pages(GFP_KERNEL, 0);
+		evtchn_row = kmalloc(PAGE_SIZE, GFP_KERNEL);
 		if (evtchn_row == NULL)
 			return -ENOMEM;
 
@@ -241,7 +241,7 @@ static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
 		 * thread was faster inserting it, we can drop ours.
 		 */
 		if (cmpxchg(&evtchn_to_irq[row], NULL, evtchn_row) != NULL)
-			free_page((unsigned long) evtchn_row);
+			kfree(evtchn_row);
 	}
 
 	WRITE_ONCE(evtchn_to_irq[row][col], irq);

---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20260624-b4-xen-a1cd629ce9f4

--
Sincerely yours,
Mike.



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479084.1683129 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYB-00048X-1k; Sun, 08 Nov 2026 22:39:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479084.1683129; Sun, 08 Nov 2026 22:39:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYA-00048Q-UP; Sun, 08 Nov 2026 22:39:46 +0000
Received: by outflank-mailman (input) for mailman id 1479084;
 Sun, 08 Nov 2026 22:39:45 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3LfrwagcKCUQoxumkxymuumrk.ius3kt-jk1krroyzy.3ktvxupkiz.uxm@flex--irogers.bounces.google.com>)
 id 1xQBY9-0003yM-GK
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBY8-008sfu-MV
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:44 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3LfrwagcKCUQoxumkxymuumrk.ius3kt-jk1krroyzy.3ktvxupkiz.uxm@flex--irogers.bounces.google.com>)
 id 6af0fa18-2eae-0a2a0a5409dd-0a2a4505d8f4-8
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:44 +0100
Received: from [74.125.82.70] (helo=mail-dl1-f70.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3LfrwagcKCUQoxumkxymuumrk.ius3kt-jk1krroyzy.3ktvxupkiz.uxm@flex--irogers.bounces.google.com>)
 id 6af0fa2f-4cb1-0a2a45050019-4a7d5246e53e-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:44 +0100
Received: by mail-dl1-f70.google.com with SMTP id
 a92af1059eb24-1b0d864826cso1320186c88.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177582; x=1794782382; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=AHLMqwM6/67Zcd/LOxQ2+hhUbtfPU/BOw3z2THUGUxg=;
        b=X1lcudtSA9/26S0uT9jypSQ9tUcaSXpTy88LZjICHw0/nVVhd4D6m7UypFbcogcdng
         2hA9Wxvc6fhs9evOTxiEF3k18yM7nXtkTxLue5i2IZubc/IvS38xPfp/A+4tPNd9yP4P
         ZkUF7HnQ0a06Qh+JbqaX1rOUOUQRLwQmVP4IfKY/eGicsf7aKCjOQWDdHpo2lgDjh8V2
         yLeyTsc/AwS2/1oKyfST7kdEjBBIDyFvZwWy5fCz9vZao5xrVakAog1R+hpHpmcK9aFa
         e67QifIcCWWxR1+EO9ru50/k1yH6MlF6/5xBu7xcWgVlO+0Q4AI/nMIpJNrqkIvJAQgQ
         K6jQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177582; x=1794782382;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=AHLMqwM6/67Zcd/LOxQ2+hhUbtfPU/BOw3z2THUGUxg=;
        b=Tz37XgEGGjP5YTHDiMoUQ/N6iuU8OcVtg7KuZzojOQN6zS9Gb7R0qT+uM/hBInjRTd
         BO5m9WMShWnY6hyjEpzn48Woi6Q0rCLc3y6GkcKyQeFkmrRDU5uOn2MX/E/X+HEr+3X1
         tjHBDexkgMTnnCVm86NPg4gdp/9Rr74NIFc3FezKA9+lVusJc+Hr+BdhQ58F9aKlnW2Y
         ZXG/SeaCrZgFfTBUK/QamCK2nFi9RYVchuhEQYpPpkxXB+yo2Hi2iERGCb+4ePuD5AgV
         HPlqNMcYg2bJ6vUC3JG3roY4iQWbKpPXudvTFHy2BfJOdrLD0UAeHJDIYN9Buzv65W7q
         rlQQ==
X-Forwarded-Encrypted: i=1; AL+hErHzg4sD8Z/6kXnW9N19aliow/IQPwxKhkI82dpjASt40uhbf+Xp6AWYjR1VOS6r3eJo9QWo5HdyI9U=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9EaZo2p4h2OhBJbCvwkxNCnFIvWb2BUmREJhUI3Jy7RoS1PbDZ
	fImzLL4Yof6tcYEFQjTQJQho7MgdyQleMGRqYO1zdJjC9PR0lbI8dcVhh4t6ILvy7QbnwfRfmD8
	pLCeFWybrqw==
X-Received: from dlbox21.prod.google.com ([2002:a05:7022:1215:b0:1ab:fb55:f657])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:b884:b0:1b2:695b:79f0
 with SMTP id a92af1059eb24-1b39fef03f3mr3576923c88.32.1794177581955; Sun, 08
 Nov 2026 14:39:41 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:05 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-2-irogers@google.com>
Subject: [PATCH v3 1/9] Compiler Attributes: Add __must_init macro
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-c201ff/1794177584-F62AB2A1-EDD82C91/0/0
X-purgate-type: clean
X-purgate-size: 4238

Clang supports the 'require_explicit_initialization' attribute on struct
fields to indicate that a field must be initialized explicitly by the
user when the object is constructed. When an aggregate initializer or
uninitialized variable omits an annotated field, Clang emits a
-Wuninitialized-explicit-init warning (enabled by default).

Add the __must_init macro to include/linux/compiler_attributes.h (which
is included by include/linux/compiler_types.h and
include/linux/compiler.h) so kernel structs with error-prone
initialization (such as mandatory callbacks or cleanup handlers) can
enforce explicit initialization at compile time, as discussed at the
Linux Plumbers Conference. The shorter __must_init spelling, rather than
the attribute's full name, keeps annotated struct members readable and
was suggested by Greg Kroah-Hartman.

Note that Clang versions prior to the fix for
https://github.com/llvm/llvm-project/issues/232483 do not diagnose
file-scope objects declared without any initializer (initializers at
file scope that omit the field are diagnosed).

Also teach Sphinx (Documentation/conf.py), kernel-doc
(tools/lib/python/kdoc/xforms_lists.py), and checkpatch.pl about the new
attribute macro.

Link: https://lpc.events/event/20/contributions/2392/
Link: https://lore.kernel.org/lkml/2026101532-fantastic-deafness-e04c@gregkh/
Acked-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Kees Cook <kees@kernel.org>
Signed-off-by: Ian Rogers <irogers@google.com>
---
 Documentation/conf.py                 |  1 +
 include/linux/compiler_attributes.h   | 12 ++++++++++++
 scripts/checkpatch.pl                 |  1 +
 tools/lib/python/kdoc/xforms_lists.py |  1 +
 4 files changed, 15 insertions(+)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index 5ab26ce89daf..baaa4035258c 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -203,6 +203,7 @@ c_id_attributes = [
     "__noreturn",
     "__packed",
     "__pure",
+    "__must_init",
     "__section",
     "__always_unused",
     "__maybe_unused",
diff --git a/include/linux/compiler_attributes.h b/include/linux/compiler_attributes.h
index 476c4c560d17..b9c0b56dd22e 100644
--- a/include/linux/compiler_attributes.h
+++ b/include/linux/compiler_attributes.h
@@ -322,6 +322,18 @@
  */
 #define __pure                          __attribute__((__pure__))
 
+/*
+ * Optional: not supported by gcc
+ * Optional: only supported since clang >= 20.0
+ *
+ * clang: https://clang.llvm.org/docs/AttributeReference.html#require-explicit-initialization
+ */
+#if __has_attribute(__require_explicit_initialization__)
+# define __must_init __attribute__((__require_explicit_initialization__))
+#else
+# define __must_init
+#endif
+
 /*
  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-section-function-attribute
  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-section-variable-attribute
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index b8b64f720191..6a091c45b1a1 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6888,6 +6888,7 @@ sub process {
 				"noreturn"			=> "__noreturn",
 				"packed"			=> "__packed",
 				"pure"				=> "__pure",
+				"require_explicit_initialization" => "__must_init",
 				"section"			=> "__section",
 				"used"				=> "__used",
 				"weak"				=> "__weak"
diff --git a/tools/lib/python/kdoc/xforms_lists.py b/tools/lib/python/kdoc/xforms_lists.py
index db23fb650ea8..42956b98aae3 100644
--- a/tools/lib/python/kdoc/xforms_lists.py
+++ b/tools/lib/python/kdoc/xforms_lists.py
@@ -36,6 +36,7 @@ class CTransforms:
         (CMatch("CRYPTO_MINALIGN_ATTR"), ""),
         (CMatch("__private"), ""),
         (CMatch("__rcu"), ""),
+        (CMatch("__must_init"), ""),
         (CMatch("____cacheline_aligned_in_smp"), ""),
         (CMatch("____cacheline_aligned"), ""),
         (CMatch("__cacheline_group_(?:begin|end)"), ""),
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479083.1683120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBY8-0003wE-TW; Sun, 08 Nov 2026 22:39:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479083.1683120; Sun, 08 Nov 2026 22:39:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBY8-0003w5-Oc; Sun, 08 Nov 2026 22:39:44 +0000
Received: by outflank-mailman (input) for mailman id 1479083;
 Sun, 08 Nov 2026 22:39:43 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3K_rwagcKCUImvskivwksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--irogers.bounces.google.com>)
 id 1xQBY7-0003vz-Jw
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBY7-009FeA-11
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:43 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3K_rwagcKCUImvskivwksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--irogers.bounces.google.com>)
 id 6af0f9e5-bab6-0a2a0a5309dd-0a2a4506e0f8-14
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:42 +0100
Received: from [74.125.82.199] (helo=mail-dy1-f199.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3K_rwagcKCUImvskivwksskpi.gsq1ir-hizippmwxw.1irtvsnigx.svk@flex--irogers.bounces.google.com>)
 id 6af0fa2d-195a-0a2a45060019-4a7d52c7dd09-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:42 +0100
Received: by mail-dy1-f199.google.com with SMTP id
 5a478bee46e88-36de26cb4b3so346892eec.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:Mime-Version:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177580; x=1794782380; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:mime-version:date:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=dh1tm53EjhTHyh6SV5ixAXTcy4PG9n9Z3Dkm6AKA6MM=;
        b=TzJQO3UY6O+FE7B1lvpF6fz2YqblchvzCmJuS3sgF1u1yuTCo5XGrHcHEj5E/viezm
         X7GlPpQ5+6yAS8JA5/AkdxrVPp7SvvI1KHikktsGaRLG+to1Zy0NRmbbeYt+fGKaIZbP
         rgfBZah8I4VyVlHKoXI4b5cS/HnARYvD89opMr7vZjKbwLribwM3mlkFGRbUEwkZsqvb
         bxXAMyA753gnVVuSJbfp2EozI3WPVfcEh15HeFSSum1KdRNzMUPOTm/MjCdobxj05YxX
         kXzq6uBxs+FSOwUmhtbMiKOjwbdNUmg21cXLsOLjL8smWESF3QJ5kq06iAEiALh8nGFF
         TN7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177580; x=1794782380;
        h=content-type:cc:to:from:subject:message-id:mime-version:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=dh1tm53EjhTHyh6SV5ixAXTcy4PG9n9Z3Dkm6AKA6MM=;
        b=STiK5Cjzi+k/hC51IJFaa3pH6+DTwL9Kg89wgg/XnTMIP6gC8MrKUJ4hNfiiVR3xel
         XYDL0KxzqTvAiB03CL4nEjRlJIrc3GHyMEKDEnkdP7yGBHoNabfSQ6vE9tl390Ie3SPC
         jY7bi4ICZ4T4vpC/oYjIaHCjLW+FY7x857vVx/P4RPn15e6s7RaQh3iCX21zwjEW6riV
         SNju79J6khp+/FvuaQVqK7hVEL+SD78kaj/7ce2LIYHWCPXkqjkh1+jmxRcZzD4Buvh/
         LX5n94il56nXkrd0Aha8MXm6A8b4nfLkYaO4C4Jqp1UI9iKboWB9eeckFVBikPOxhQVx
         AJ6w==
X-Forwarded-Encrypted: i=1; AL+hErEHwJbz7m15hBVJ8qEqcDx+AD1zk119rgeF9mcbZvog6zd1hVPOoYEvjbLN5+fTFEbHlnzTmuwK+vM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8iQLZI19kvnlXQy8HW6dKidmR3I217MhCuz1CYuyDqBBsF8vfr
	d8cBQJYuvNWaBaF7P0Kb49VoQa0HSBHw8PPYEre8Chf3MDgEgKKccjg+KLjRiiYbqdUkp3vPyGO
	2MSzpib01Og==
X-Received: from dyba7.prod.google.com ([2002:a05:693c:63c7:b0:372:278c:c777])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:e5cb:b0:370:d6e4:e8aa
 with SMTP id 5a478bee46e88-3725826f58cmr4715450eec.41.1794177579956; Sun, 08
 Nov 2026 14:39:39 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:04 -0800
Mime-Version: 1.0
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-1-irogers@google.com>
Subject: [PATCH v3 0/9] Add __must_init and require explicit kobj_type::release
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-16d1c6/1794177582-FD00977B-3F5BE4EC/0/0
X-purgate-type: clean
X-purgate-size: 8549

Clang supports the 'require_explicit_initialization' attribute on struct
fields to enforce that the field is explicitly initialized when an
aggregate object is constructed, emitting -Wuninitialized-explicit-init
(enabled by default) if the field is omitted.

Following discussion at the Linux Plumbers Conference [1], patch 1 adds
the attribute to include/linux/compiler_attributes.h as __must_init. In
v1 it was called __require_explicit_initialization. Kees picked up that
patch with a first seq_file user [2], and in that thread Greg suggested
the shorter __must_init spelling, which Kees and Miguel agreed to. As
the attribute did not land in the v7.4 merge window, Kees asked that
this series carry the renamed attribute.

As Documentation/core-api/kobject.rst notes:
  "One important point cannot be overstated: every kobject must have a
  release() method, and the kobject must persist (in a consistent state)
  until that method is called. If these constraints are not met, the
  code is flawed."

Annotating struct kobj_type::release caught struct kobj_type definitions
across the tree that omitted .release:
- Patches 2-8 fix struct kobj_type definitions where dynamically
  allocated kobjects, ksets, or enclosing structures were either leaked
  on kobject_put(), freed prematurely before kobject release, or missing
  proper static initializers.
- Patch 9 annotates struct kobj_type::release with __must_init and
  explicitly sets .release = NULL (with explanatory comments prefixed
  with "Pre-existing:") on the remaining legacy struct kobj_type
  definitions whose kobjects are static, per-CPU, permanent firmware
  structures, or embedded in devm- or parent-managed allocations.

Danilo Krummrich offered to route the series as a whole through the
driver-core tree [3]. Subsystem maintainer Acked-by tags are still
needed (and would be much appreciated!) for the following three patches:
- Patch 2: powerpc/secvar: Add missing kobject release callback to secvar_ktype
- Patch 3: sh: sq: Add missing kobject release callback to ktype_percpu_entry
- Patch 6: xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type

Note on tool use: An LLM coding assistant was used to help audit the
compiler diagnostics across the tree, draft the fixes and changelog
descriptions, and verify builds and review feedback.

Changes in v3:
- Rebased on v7.4-rc1.
- Note in cover letter that patches 2 (powerpc/secvar), 3 (sh: sq), and
  6 (xen/sys-hypervisor) are still awaiting subsystem Acked-by tags for
  merging through the driver-core tree, and CC those maintainers on the
  cover letter.
- Patch 1: Add Reviewed-by from Kees Cook; clarify that LLVM issue
  #232483 affects Clang versions prior to its upstream fix (pointed out
  by Nathan Chancellor).
- Patch 4 (cpufreq): Drop obsolete reference to cpufreq_governor_dbs in
  the commit message per Zhongqiu Han; add Reviewed-by from Zhongqiu Han
  and Acked-by from Rafael J. Wysocki and Viresh Kumar.
- Patch 5 (dlm): Add Acked-by from Alexander Aring.
- Patch 8 (drm/amdkfd): Add Reviewed-by from Felix Kuehling.
- Patch 9 (kobject): Fix omapfb manager-sysfs.c and overlay-sysfs.c
  comments to describe managers[] and overlays[] as dynamically
  allocated rather than static and note the CONFIG_DEBUG_KOBJECT_RELEASE
  hazard, fix a struct-vs-member wording nit in usnic_ib_sysfs.c, and
  generalize the commit message note on CONFIG_DEBUG_KOBJECT_RELEASE
  (reported by Sashiko).

Changes in v2:
- Rebased on v7.3-16928-g83f32c773255 (v7.4 merge window).
- Patch 1: Rename __require_explicit_initialization to __must_init per
  Greg Kroah-Hartman; document the Clang >= 20 requirement per Miguel
  Ojeda; note the Clang gap for file-scope objects without an
  initializer reported by Kees Cook; add tags from v1 and from Kees's
  posting.
- Move LLM assistance attribution from Assisted-by tags to this cover
  letter per commit 1e035297ffda ("docs: remove Assisted-by
  references").
- Patch 4 (cpufreq): Use "cpufreq: governor:" prefix, drop Fixes tag,
  fix typo, and remove the redundant runtime assignment in
  cpufreq_dbs_governor_init() per Zhongqiu Han.
- Dropped v1 patch 5 (ACPI: CPPC), already fixed upstream by
  commit 27954e29d7de ("ACPI: CPPC: Release CPC descriptors through
  kobject").
- Patch 5 (dlm): Call kobject_del() before dlm_recoverd_stop() in
  release_lockspace() and the new_lockspace() error path, and wait on a
  new ls_kobj_done completion before freeing the lockspace or dropping
  the module reference, avoiding races with delayed kobject release.
- Dropped v1 patch 8 (s390/sclp_mem) per Sumanth Korikkar: the
  /sys/firmware/memory/memoryX kobjects are permanent, so sclp_mem.c is
  folded into patch 9 with .release = NULL.
- Patch 7 (ubifs): Add Tested-by and Reviewed-by from Zhihao Cheng.
- Patch 8 (drm/amdkfd): Check q->kobj.state_in_sysfs before
  kobject_del() in kfd_procfs_del_queue().
- Patch 9 (kobject): Cover sclp_mem.c and the new amdgpu_ualink.c
  ualink_xcp_info_ktype, fix the overlay-sysfs.c comment, and prefix
  legacy .release = NULL comments with "Pre-existing:".
- Patch 9 (kobject): The ioat, kunpeng_hccs and omapfb display comments
  now say that the existing teardown can use-after-free under
  CONFIG_DEBUG_KOBJECT_RELEASE (reported by Sashiko). Fixing those
  drivers is left to follow-up patches.

v2: https://lore.kernel.org/all/20261027223847.652884-1-irogers@google.com/
v1: https://lore.kernel.org/all/20261013223946.1836757-1-irogers@google.com/
[1] https://lpc.events/event/20/contributions/2392/
[2] https://lore.kernel.org/lkml/20261014225811.i.852-kees@kernel.org/
[3] https://lore.kernel.org/all/DMLWX8NY1N1N.2OMQMQCIVRR18@kernel.org/

Ian Rogers (9):
  Compiler Attributes: Add __must_init macro
  powerpc/secvar: Add missing kobject release callback to secvar_ktype
  sh: sq: Add missing kobject release callback to ktype_percpu_entry
  cpufreq: governor: Initialize kobj_type release callback statically
  dlm: Free dlm_ls in kobject release callback
  xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type
  ubifs: sysfs: Use kset_create_and_add() for ubifs_kset
  drm/amdkfd: Free queue in procfs_queue_type kobject release callback
  kobject: Require explicit initialization of struct kobj_type::release

 Documentation/conf.py                         |  1 +
 arch/arm64/kernel/cpuinfo.c                   |  5 ++++
 arch/powerpc/kernel/secvar-sysfs.c            |  6 +++++
 arch/sh/kernel/cpu/sh4/sq.c                   |  6 +++++
 drivers/acpi/sysfs.c                          |  2 ++
 drivers/cpufreq/cpufreq_conservative.c        |  5 +++-
 drivers/cpufreq/cpufreq_governor.c            |  4 +--
 drivers/cpufreq/cpufreq_governor.h            |  1 +
 drivers/cpufreq/cpufreq_ondemand.c            |  5 +++-
 drivers/dma/ioat/sysfs.c                      |  7 +++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c    |  5 ++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c       | 10 +++++++
 drivers/gpu/drm/amd/amdkfd/kfd_process.c      | 12 ++++++---
 drivers/gpu/drm/amd/amdkfd/kfd_queue.c        |  5 +++-
 drivers/infiniband/hw/hfi1/sysfs.c            |  5 ++++
 drivers/infiniband/hw/usnic/usnic_ib_sysfs.c  |  5 ++++
 drivers/parisc/pdc_stable.c                   |  5 ++++
 drivers/power/supply/ab8500_fg.c              |  5 ++++
 drivers/s390/char/sclp_mem.c                  |  2 ++
 drivers/soc/hisilicon/kunpeng_hccs.c          | 21 +++++++++++++++
 .../fbdev/omap2/omapfb/dss/display-sysfs.c    |  7 +++++
 .../fbdev/omap2/omapfb/dss/manager-sysfs.c    |  8 ++++++
 .../fbdev/omap2/omapfb/dss/overlay-sysfs.c    |  8 ++++++
 drivers/xen/sys-hypervisor.c                  |  6 +++++
 fs/dlm/dlm_internal.h                         |  1 +
 fs/dlm/lockspace.c                            | 26 ++++++++++++++-----
 fs/erofs/sysfs.c                              | 10 +++++++
 fs/f2fs/sysfs.c                               | 15 +++++++++++
 fs/ocfs2/cluster/masklog.c                    |  5 ++++
 fs/ubifs/sysfs.c                              | 24 +++++------------
 include/linux/compiler_attributes.h           | 12 +++++++++
 include/linux/kobject.h                       |  2 +-
 scripts/checkpatch.pl                         |  1 +
 tools/lib/python/kdoc/xforms_lists.py         |  1 +
 34 files changed, 211 insertions(+), 32 deletions(-)


base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479086.1683143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYD-0004Qk-M7; Sun, 08 Nov 2026 22:39:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479086.1683143; Sun, 08 Nov 2026 22:39:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYD-0004Pv-Gu; Sun, 08 Nov 2026 22:39:49 +0000
Received: by outflank-mailman (input) for mailman id 1479086;
 Sun, 08 Nov 2026 22:39:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3MfrwagcKCUgs1yqo12qyyqvo.myw7ox-no5ovvs232.7oxz1ytom3.y1q@flex--irogers.bounces.google.com>)
 id 1xQBYC-0004L8-Uj
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYC-001uiE-Bb
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:48 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3MfrwagcKCUgs1yqo12qyyqvo.myw7ox-no5ovvs232.7oxz1ytom3.y1q@flex--irogers.bounces.google.com>)
 id 6af0f998-e002-0a2a0a5209dd-0a2a4501b036-14
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:48 +0100
Received: from [74.125.82.197] (helo=mail-dy1-f197.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3MfrwagcKCUgs1yqo12qyyqvo.myw7ox-no5ovvs232.7oxz1ytom3.y1q@flex--irogers.bounces.google.com>)
 id 6af0fa32-5984-0a2a45010019-4a7d52c5a446-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:48 +0100
Received: by mail-dy1-f197.google.com with SMTP id
 5a478bee46e88-36cec75d8caso401606eec.0
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177586; x=1794782386; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=xwXDua19Tz/IicJklctcGTeEqQvEHLiE8QZruqc+WN4=;
        b=fjV4tvdvbzTG3Ck3c1xXAzWicejVf6DyRh7Bg4WFVXBE1Xt+jLEiLKwirDBpk9fNKu
         FTp3HHkk61EEtTwxEqR27TcdCCzv9J+SM7OO77vJFqrBJI3GQy1aZeR5USfb7NhX+fwc
         VGzT11trMfN/xuJQf/MYNklVNKV/v79jsRjtOpNws6JYKvw14Bjl03rymmLiVwPGddMd
         NnRIeHVY1m7JMowot7tUzRSY2wWRRN51yeIsB3IhpWvPlndAY0YfX2WM5nfq4m7RNLwB
         tqwamWoVczf8rJbE8HBcYOpshxJ1XNXyU1Vsx/UrgXYpnCPR24T3D1g6zVpkOY0ZyDBt
         TsnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177586; x=1794782386;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=xwXDua19Tz/IicJklctcGTeEqQvEHLiE8QZruqc+WN4=;
        b=pCOg/rR8QZdPoHnJab+zsTHua2gy96sCJ9j+ewb+WUiwRz6CAMXm+Gzhzc/VghbwAk
         bLI3BHRnYf80Fu/4Dg3kwo3bK+lezAe/OfdhsCDQGpEYTZiX50GL6EV0c4x7HvjyO3wy
         8DN1iQzbkwnT0jUbZqMj+P59I4bfc6YJwSqjPJQkPSNKyddnXjSpB8ga3aE9RZn4+twj
         nRE1AXnDsqj8dw/45QKEk0Zesr4a3DsTUTmVW6gfeP2gdI1K1vhNQpelCwQuekQvBoye
         sfDlR+h0Vt0+yo/U5ra4QdQX+JM0mssekKaw2x9bKVuSHq8O5NZdGAERkUgnCskPle6V
         uqkQ==
X-Forwarded-Encrypted: i=1; AL+hErFMW50HI0tmW3+PeyNiYWI1MFP3/Hg9SyHayUYvpcGkeMtD2S7FGbfQTyp9Oletgw6DpqCTMys6Muo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+K2u9sbBccPinZgZPEtY/YZcnYJSAoy+n5onOOMcgcbWyEn4sH
	XJ0ucoXL0DDttMrZz4rsMUkh/tS/oK1ZzM0Tazb0LxEuKl8fJ+Ovje9E5wM38nhSNrOslLdFQvb
	3z4nAYWrhOQ==
X-Received: from dyx10.prod.google.com ([2002:a05:693c:820a:b0:36a:eec:f68c])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:c00c:10b0:36d:dcdb:70c5
 with SMTP id 5a478bee46e88-370f7b8f918mr9710009eec.20.1794177585797; Sun, 08
 Nov 2026 14:39:45 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:07 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-4-irogers@google.com>
Subject: [PATCH v3 3/9] sh: sq: Add missing kobject release callback to ktype_percpu_entry
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-d62444/1794177588-BE465757-809DDBA9/0/0
X-purgate-type: clean
X-purgate-size: 1055

In sq_dev_add(), sq_kobject[cpu] is dynamically allocated with
kzalloc_obj() and initialized with ktype_percpu_entry. When
sq_dev_remove() calls kobject_put(kobj), the kobject is never freed
because ktype_percpu_entry lacks a .release callback.

Provide a sq_kobj_release() callback that calls kfree(kobj).

Fixes: d7c30c682a27 ("sh: Store Queue API rework.")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 arch/sh/kernel/cpu/sh4/sq.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c
index 908a8e09113b..f33864958487 100644
--- a/arch/sh/kernel/cpu/sh4/sq.c
+++ b/arch/sh/kernel/cpu/sh4/sq.c
@@ -331,7 +331,13 @@ static const struct sysfs_ops sq_sysfs_ops = {
 	.store	= sq_sysfs_store,
 };
 
+static void sq_kobj_release(struct kobject *kobj)
+{
+	kfree(kobj);
+}
+
 static struct kobj_type ktype_percpu_entry = {
+	.release	= sq_kobj_release,
 	.sysfs_ops	= &sq_sysfs_ops,
 	.default_groups	= sq_sysfs_groups,
 };
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479085.1683137 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYD-0004LS-8V; Sun, 08 Nov 2026 22:39:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479085.1683137; Sun, 08 Nov 2026 22:39:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYD-0004LI-58; Sun, 08 Nov 2026 22:39:49 +0000
Received: by outflank-mailman (input) for mailman id 1479085;
 Sun, 08 Nov 2026 22:39:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3L_rwagcKCUYqzwomz0owwotm.kwu5mv-lm3mttq010.5mvxzwrmk1.wzo@flex--irogers.bounces.google.com>)
 id 1xQBYB-00049z-9W
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYA-001uiE-ML
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:46 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3L_rwagcKCUYqzwomz0owwotm.kwu5mv-lm3mttq010.5mvxzwrmk1.wzo@flex--irogers.bounces.google.com>)
 id 6af0f998-e002-0a2a0a5209dd-0a2a4501b036-12
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:46 +0100
Received: from [74.125.82.69] (helo=mail-dl1-f69.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3L_rwagcKCUYqzwomz0owwotm.kwu5mv-lm3mttq010.5mvxzwrmk1.wzo@flex--irogers.bounces.google.com>)
 id 6af0fa31-5984-0a2a45010019-4a7d5245e55e-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:46 +0100
Received: by mail-dl1-f69.google.com with SMTP id
 a92af1059eb24-1b0d864826cso1320315c88.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177584; x=1794782384; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=4kX4Ed3A+P912IudIYmkHnIS6SHmJhWXUKLWP4ZNJ5k=;
        b=nJOx9GIIt5rhsfzfKka6ooWclB4ShMBLHUBLN1Vxnyy+F6WiHrpSzmbj4BeE1HWDdZ
         1x6tzycFEljlRFSUrW0v4GhxDIOo5RfZ6OxYTECG0B99rDE2UzqjMRJMnsZPaFRTcK4j
         yp+aH0udoTaMpDMpUyh58Vt7+LKK7J7UXLrgPcl0g6GKId3ovO5CBS5uCHUAhAKqvaLm
         AS/muVTK4lOcwl2o8eHpvaLkzOkNlIFlmHxK3m7ZBCS1EtLkHasnu3d/X8dacRnl0mwn
         TdJTaR1R0SWHVfqOqT4z4eNi5J+faKTgHwP0ruwwWl++M/Po86u648Y1AU/VRSHmciBP
         r5xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177584; x=1794782384;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=4kX4Ed3A+P912IudIYmkHnIS6SHmJhWXUKLWP4ZNJ5k=;
        b=l2fZyCVs6531srhTehvACDxdJDWzkOWAIxA3p4Nn8wzSisndw1ZOx83MTUIWvdOIDU
         L2tHQfqpicqjEv438x0Gi0UYPrenphp7IiOVUzN8FJTXQWfq+0qIJj+Qtr9WcHKRLQly
         FOfCrDqoTWILh4cZ/d6xhZLPM3eCfJcO1ZLcA0TkDZIInYVYwFsD7ezt80nebw7D2ljg
         4TN1yqP61ZNMnbYAYZTsqrDQG/5FEXBJWIMzkoWQCkDzHXKsnIwMhV95mDM4zknZToA3
         y3ksHAzeJ7vFPjG1og8BK3GyIW/UMZB3qsuspHYI/sG6agU36cAzbX6+8xvUWAB6WvZO
         Qwfw==
X-Forwarded-Encrypted: i=1; AL+hErHvTDpyOPGOOFj6CasHd8lPAAI//LS1ztpmGTg81lEq3S7jYcHeE7vUIgTL86kmd5rGt+H/xznXsKI=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8K4QFkJD53u63tB5YJWwbe6GHc67PFU6kPZRIqgI2CcOoON1Bk
	CuWlgEU75Ea5/y2H1cqY3dppdPA6j6sWc39DBQ1GyBMgbKkLJ19RfOYYcG6Cg9tpQNd5+210uaP
	jihAhqJh1yQ==
X-Received: from dlad1.prod.google.com ([2002:a05:701b:2201:b0:1b2:6421:f4fb])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:ea8a:b0:163:bee9:b250
 with SMTP id a92af1059eb24-1b39fedbec2mr3348910c88.22.1794177583902; Sun, 08
 Nov 2026 14:39:43 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:06 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-3-irogers@google.com>
Subject: [PATCH v3 2/9] powerpc/secvar: Add missing kobject release callback
 to secvar_ktype
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-d62444/1794177586-1F66C757-69BF243C/0/0
X-purgate-type: clean
X-purgate-size: 1283

In add_var(), a struct kobject is dynamically allocated with
kzalloc_obj() and initialized with secvar_ktype. If kobject_add() or
sysfs_create_file() fails, kobject_put(kobj) is called to clean up.
However, secvar_ktype does not define a .release callback, which results
in a memory leak of kobj (and a pr_debug warning in kobject_cleanup()
when CONFIG_DEBUG_KOBJECT_RELEASE is enabled).

Provide a secvar_release() callback that calls kfree(kobj).

Fixes: bd5d9c743d38 ("powerpc: expose secure variables to userspace via sysfs")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 arch/powerpc/kernel/secvar-sysfs.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/powerpc/kernel/secvar-sysfs.c b/arch/powerpc/kernel/secvar-sysfs.c
index 395399bbab2c..f3f6ac25ea78 100644
--- a/arch/powerpc/kernel/secvar-sysfs.c
+++ b/arch/powerpc/kernel/secvar-sysfs.c
@@ -126,7 +126,13 @@ static const struct attribute_group secvar_attr_group = {
 };
 __ATTRIBUTE_GROUPS(secvar_attr);
 
+static void secvar_release(struct kobject *kobj)
+{
+	kfree(kobj);
+}
+
 static const struct kobj_type secvar_ktype = {
+	.release	= secvar_release,
 	.sysfs_ops	= &kobj_sysfs_ops,
 	.default_groups = secvar_attr_groups,
 };
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479087.1683156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYG-0004nd-TM; Sun, 08 Nov 2026 22:39:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479087.1683156; Sun, 08 Nov 2026 22:39:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYG-0004nR-Oi; Sun, 08 Nov 2026 22:39:52 +0000
Received: by outflank-mailman (input) for mailman id 1479087;
 Sun, 08 Nov 2026 22:39:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3NPrwagcKCUsv41tr45t11tyr.p1zAr0-qr8ryyv565.Ar0241wrp6.14t@flex--irogers.bounces.google.com>)
 id 1xQBYF-0004le-DQ
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYE-001umh-QW
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:50 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3NPrwagcKCUsv41tr45t11tyr.p1zAr0-qr8ryyv565.Ar0241wrp6.14t@flex--irogers.bounces.google.com>)
 id 6af0fa36-8faa-0a2a0a5109dd-0a2a4508ec9a-0
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:50 +0100
Received: from [74.125.82.70] (helo=mail-dl1-f70.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3NPrwagcKCUsv41tr45t11tyr.p1zAr0-qr8ryyv565.Ar0241wrp6.14t@flex--irogers.bounces.google.com>)
 id 6af0fa35-f659-0a2a45080019-4a7d5246dcec-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:50 +0100
Received: by mail-dl1-f70.google.com with SMTP id
 a92af1059eb24-1383723dfddso396991c88.0
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177589; x=1794782389; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JYLCMT9RKWWGiMVjfcLUv6CQmbQfnx4zZhBsCcC3dY4=;
        b=SWS48zQbFKANEsbbZsqDeuQbp0cs2VvgIw5h8O+Drq29imQ/l13p5dBwghEZxO6ELU
         ESJe0sV2PO2KOXn1GrAQ6iJN8BAvLheEnT4mmwWulnETrVrtqARMViWaDDktwHEu86R2
         2WDP9dm4OT8gIhRNg2StXX+NRdLhKjJtjm8c/FP4OwZlXH5EKAlsnftUJ75hoB4JfFUi
         wqJyAD17WwEtitf7AdJj+O8Ethbc25xR6GMjQvoFc4wtuAUAQ4ue9LssC7f688MBoaLu
         9e5baJ1e+GcRunYNfiIwauD5RLymwosQQ0LpnQebNu0PN02M74v6xB58KE1E8kgDVxcY
         49gw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177589; x=1794782389;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=JYLCMT9RKWWGiMVjfcLUv6CQmbQfnx4zZhBsCcC3dY4=;
        b=SqCQTi1SYYWQGEcubpgyFOp+QdLZuWphkYvMHtTApYV3150LYQ5iCaxvXTDscAijoA
         a01LsE1IsCLRmp1FEo/1c/X6GXLsxXgJIOqA+MMPvS4L3K4YBluWfTicuGn4v3MCxMvB
         z2xyaa9ZXp/nZXIASOz8iCmIdKRIttEhkfftoOsRZnfe+7mBy8SD+Zz3Es092uWwmK9y
         jX+w/Son1Wa21duxUrQUIvfur+uv3fA489JLYiWNZ7/QdqBgSXPANJ4hsKDQ6uSbG2v1
         y6G803SSGuI4C+kRaw6wA5ny6IJQElNozFbHo/SvipU8sRp419qRKYfhUa/sfHVUaNpV
         RM6g==
X-Forwarded-Encrypted: i=1; AL+hErHRxtY/X1MjvGZ4r53hNJ0zE1NpIYD14pUGrWZS4XjSlvEcir0MQyHzTmkrC1qKFT3dvHZQNBHL1x4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/EWhIBLnJRMAP36MZP/+XNVAXbMRLzhh6x3TxXFo0kHyt9cQ84
	aue8rQZ/+W7YPSamPECkQeAurz9SpD92Y/fcPCdWco5ak2mdTm2Oip19V+b8hch5rSsIs1KxI3r
	8VoVCBOEa3w==
X-Received: from dlec20-n1.prod.google.com ([2002:a05:701b:4294:10b0:1a4:c892:b166])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:ef16:b0:1b3:a26b:8b97
 with SMTP id a92af1059eb24-1b3a26b8c4bmr3821391c88.41.1794177588129; Sun, 08
 Nov 2026 14:39:48 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:08 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-5-irogers@google.com>
Subject: [PATCH v3 4/9] cpufreq: governor: Initialize kobj_type release
 callback statically
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-c1860d/1794177590-D457487B-880134AE/0/0
X-purgate-type: clean
X-purgate-size: 3807

Export cpufreq_dbs_data_release() and initialize .kobj_type.release
statically in the ondemand and conservative governors instead of
assigning it at runtime in cpufreq_dbs_governor_init().

This prepares for annotating struct kobj_type::release with
__must_init.

Reviewed-by: Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>
Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org> # cpufreq
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Ian Rogers <irogers@google.com>
---
 drivers/cpufreq/cpufreq_conservative.c | 5 ++++-
 drivers/cpufreq/cpufreq_governor.c     | 4 ++--
 drivers/cpufreq/cpufreq_governor.h     | 1 +
 drivers/cpufreq/cpufreq_ondemand.c     | 5 ++++-
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c
index 02bfd46543e9..146a2353b1a2 100644
--- a/drivers/cpufreq/cpufreq_conservative.c
+++ b/drivers/cpufreq/cpufreq_conservative.c
@@ -318,7 +318,10 @@ static void cs_limits(struct cpufreq_policy *policy)
 
 static struct dbs_governor cs_governor = {
 	.gov = CPUFREQ_DBS_GOVERNOR_INITIALIZER("conservative"),
-	.kobj_type = { .default_groups = cs_groups },
+	.kobj_type = {
+		.release = cpufreq_dbs_data_release,
+		.default_groups = cs_groups,
+	},
 	.gov_dbs_update = cs_dbs_update,
 	.alloc = cs_alloc,
 	.free = cs_free,
diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
index f3bd3dbe7c41..f8b5aca09b6b 100644
--- a/drivers/cpufreq/cpufreq_governor.c
+++ b/drivers/cpufreq/cpufreq_governor.c
@@ -419,7 +419,7 @@ static void free_policy_dbs_info(struct policy_dbs_info *policy_dbs,
 	gov->free(policy_dbs);
 }
 
-static void cpufreq_dbs_data_release(struct kobject *kobj)
+void cpufreq_dbs_data_release(struct kobject *kobj)
 {
 	struct dbs_data *dbs_data = to_dbs_data(to_gov_attr_set(kobj));
 	struct dbs_governor *gov = dbs_data->gov;
@@ -427,6 +427,7 @@ static void cpufreq_dbs_data_release(struct kobject *kobj)
 	gov->exit(dbs_data);
 	kfree(dbs_data);
 }
+EXPORT_SYMBOL_GPL(cpufreq_dbs_data_release);
 
 int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
 {
@@ -488,7 +489,6 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
 	policy->governor_data = policy_dbs;
 
 	gov->kobj_type.sysfs_ops = &governor_sysfs_ops;
-	gov->kobj_type.release = cpufreq_dbs_data_release;
 	ret = kobject_init_and_add(&dbs_data->attr_set.kobj, &gov->kobj_type,
 				   get_governor_parent_kobj(policy),
 				   "%s", gov->gov.name);
diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h
index 806d8fb4dff1..1026712bb79b 100644
--- a/drivers/cpufreq/cpufreq_governor.h
+++ b/drivers/cpufreq/cpufreq_governor.h
@@ -150,6 +150,7 @@ static inline struct dbs_governor *dbs_governor_of(struct cpufreq_policy *policy
 }
 
 /* Governor callback routines */
+void cpufreq_dbs_data_release(struct kobject *kobj);
 int cpufreq_dbs_governor_init(struct cpufreq_policy *policy);
 void cpufreq_dbs_governor_exit(struct cpufreq_policy *policy);
 int cpufreq_dbs_governor_start(struct cpufreq_policy *policy);
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 9942dbb38dae..7386d043c665 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -374,7 +374,10 @@ static struct od_ops od_ops = {
 
 static struct dbs_governor od_dbs_gov = {
 	.gov = CPUFREQ_DBS_GOVERNOR_INITIALIZER("ondemand"),
-	.kobj_type = { .default_groups = od_groups },
+	.kobj_type = {
+		.release = cpufreq_dbs_data_release,
+		.default_groups = od_groups,
+	},
 	.gov_dbs_update = od_dbs_update,
 	.alloc = od_alloc,
 	.free = od_free,
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479089.1683164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYJ-00052r-3g; Sun, 08 Nov 2026 22:39:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479089.1683164; Sun, 08 Nov 2026 22:39:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYJ-00052i-0Z; Sun, 08 Nov 2026 22:39:55 +0000
Received: by outflank-mailman (input) for mailman id 1479089;
 Sun, 08 Nov 2026 22:39:54 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3NvrwagcKCU0x63vt67v33v0t.r31Ct2-stAt00x787.Ct2463ytr8.36v@flex--irogers.bounces.google.com>)
 id 1xQBYH-0004zO-SL
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYH-001umh-9K
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:53 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3NvrwagcKCU0x63vt67v33v0t.r31Ct2-stAt00x787.Ct2463ytr8.36v@flex--irogers.bounces.google.com>)
 id 6af0fa07-8faa-0a2a0a5109dd-0a2a450c92d6-16
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:53 +0100
Received: from [74.125.82.198] (helo=mail-dy1-f198.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3NvrwagcKCU0x63vt67v33v0t.r31Ct2-stAt00x787.Ct2463ytr8.36v@flex--irogers.bounces.google.com>)
 id 6af0fa37-f479-0a2a450c0019-4a7d52c6d555-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:53 +0100
Received: by mail-dy1-f198.google.com with SMTP id
 5a478bee46e88-341eff9e381so790863eec.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177591; x=1794782391; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=m1jLuLVTWvALNpXpZUUQEWDLYzqr+bz7MlMjOt9nJBI=;
        b=PKXJu6XaD5qSFk1S0bmI9QdYU5P/VcxUDIFeBzwtN0IzGaATvqRJYUXJimfHe7NO6V
         aR/eNwGNNnGD12fIsc1GV3e9owrjb4L04deKlZABdCoCJQpdXc5n69qft+kDLtsXxSHE
         iQUfQh/u/0/LO+Wo9TSYtmeaSI6kGhYKwuhYnpVTGU+Mfv3RfQuh0MObydJrnS0tytX9
         dNfGL0nf4a2FC4Rd76E7gCoFjVm8FJzrKjq3acHqCCNaEV3pBTbhQkk3nRHalSSR/umM
         8C+JGs+MZGiMTWIqJeHPjk1nLjNl98D+Hx/1DkvtXy3YH2mcUPDIKi1Gxatxqm/Bzzjq
         RseQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177591; x=1794782391;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=m1jLuLVTWvALNpXpZUUQEWDLYzqr+bz7MlMjOt9nJBI=;
        b=g9E5xWzXNCxqLN6UU1Pk0linf9vJF4vd8NeCIY8Th2ZiRBX9aoN2dhV5RBAEP1CFc6
         c2iQDRgja9LReznG0pJPDQmwYqhpjVTlxNhZ2fucrKbil38AmWPPn4MFJwB5Xn9EEyR3
         qx/pmHIwEIbIti7sSkPi01ppNOKkOh9zBBPrKNlY1xs0m5w1F9J/HnKixZE3PeEVad96
         HI0v11wkLL8TJhTPQARAMH2YC8pYVBTr4lP+upcy7XmF7GLsfjzxL9RVZmyTlBEAidBr
         F2Vr/utMEVNIOW6fjpupiqbPsNz0ho4oEw1UgrUtBMgm6FDBiJCztQeJz4I50DLiHxac
         1Spw==
X-Forwarded-Encrypted: i=1; AL+hErGFGven6n8gGY8RXp+vL3L7gTM13AqmPvs6itD2MumzV93rdqDhbFs6tS9l2aipZw5QPGudpSbZ8Cs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z836F2b+r6pRTVEWVbY8GDEZS4evEt7KfRtqVk7/jxz8317WnZb
	kNavBNpF0HCooBldL9CRUcwX0SCXSG+YpZUKG3uQjN5l4GJQEulkovfLYH0GbEYsYdVB/FA+fO9
	GvoVfV/8IZA==
X-Received: from dycmv11.prod.google.com ([2002:a05:693c:280b:b0:36b:c499:531f])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:693c:2806:b0:36b:f09f:924a
 with SMTP id 5a478bee46e88-37256bef587mr4546874eec.14.1794177590507; Sun, 08
 Nov 2026 14:39:50 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:09 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-6-irogers@google.com>
Subject: [PATCH v3 5/9] dlm: Free dlm_ls in kobject release callback
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-d25034/1794177593-018C5A5B-FCC4F543/0/0
X-purgate-type: clean
X-purgate-size: 4546

struct dlm_ls embeds a struct kobject (ls_kobj), but dlm_ktype lacked a
.release callback and dlm freed the lockspace structure directly via
kfree(ls). With CONFIG_DEBUG_KOBJECT_RELEASE=y, freeing ls before the
delayed kobject release runs causes a use-after-free, and unloading the
module while the delayed release is pending results in an instruction
page fault.

Add a completion ls_kobj_done and dlm_ls_release() to complete it when
the last kobject reference is dropped, waiting for it in free_lockspace()
before kfree(ls) and in the new_lockspace() error path before module_put().
Also delete the kobject via kobject_del() before stopping dlm_recoverd
to close the window where concurrent sysfs writes could wake the stopped
recovery task.

Fixes: 3514faca19a6 ("kobject: remove struct kobj_type from struct kset")
Acked-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: Ian Rogers <irogers@google.com>
---
 fs/dlm/dlm_internal.h |  1 +
 fs/dlm/lockspace.c    | 26 ++++++++++++++++++++------
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/fs/dlm/dlm_internal.h b/fs/dlm/dlm_internal.h
index 74c2e77d1b55..95b3bff0cb57 100644
--- a/fs/dlm/dlm_internal.h
+++ b/fs/dlm/dlm_internal.h
@@ -576,6 +576,7 @@ struct dlm_ls {
 	int			ls_create_count; /* create/release refcount */
 	unsigned long		ls_flags;	/* LSFL_ */
 	struct kobject		ls_kobj;
+	struct completion	ls_kobj_done;
 
 	struct xarray		ls_lkbxa;
 	rwlock_t		ls_lkbxa_lock;
diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
index a9c98b4f378f..2dccd080a10f 100644
--- a/fs/dlm/lockspace.c
+++ b/fs/dlm/lockspace.c
@@ -179,7 +179,15 @@ static const struct sysfs_ops dlm_attr_ops = {
 	.store = dlm_attr_store,
 };
 
+static void dlm_ls_release(struct kobject *kobj)
+{
+	struct dlm_ls *ls = container_of(kobj, struct dlm_ls, ls_kobj);
+
+	complete(&ls->ls_kobj_done);
+}
+
 static struct kobj_type dlm_ktype = {
+	.release        = dlm_ls_release,
 	.default_groups = dlm_groups,
 	.sysfs_ops     = &dlm_attr_ops,
 };
@@ -355,6 +363,8 @@ static void free_lockspace(struct work_struct *work)
 	 */
 	rhashtable_free_and_destroy(&ls->ls_rsbtbl, rhash_free_rsb, NULL);
 
+	kobject_put(&ls->ls_kobj);
+	wait_for_completion(&ls->ls_kobj_done);
 	kfree(ls);
 }
 
@@ -435,7 +445,10 @@ static int new_lockspace(const char *name, const char *cluster,
 	ls->ls_lvblen = lvblen;
 	atomic_set(&ls->ls_count, 0);
 	init_waitqueue_head(&ls->ls_count_wait);
+	init_completion(&ls->ls_kobj_done);
 	ls->ls_flags = 0;
+	ls->ls_kobj.kset = dlm_kset;
+	kobject_init(&ls->ls_kobj, &dlm_ktype);
 
 	if (ops && dlm_config.ci_recover_callbacks) {
 		ls->ls_ops = ops;
@@ -567,9 +580,7 @@ static int new_lockspace(const char *name, const char *cluster,
 	wait_event(ls->ls_recover_lock_wait,
 		   test_bit(LSFL_RECOVER_LOCK, &ls->ls_flags));
 
-	ls->ls_kobj.kset = dlm_kset;
-	error = kobject_init_and_add(&ls->ls_kobj, &dlm_ktype, NULL,
-				     "%s", ls->ls_name);
+	error = kobject_add(&ls->ls_kobj, NULL, "%s", ls->ls_name);
 	if (error)
 		goto out_recoverd;
 	kobject_uevent(&ls->ls_kobj, KOBJ_ADD);
@@ -582,7 +593,7 @@ static int new_lockspace(const char *name, const char *cluster,
 
 	error = do_uevent(ls, 1, 0);
 	if (error < 0)
-		goto out_recoverd;
+		goto out_kobj;
 
 	/* wait until recovery is successful or failed */
 	wait_for_completion(&ls->ls_recovery_done);
@@ -600,6 +611,8 @@ static int new_lockspace(const char *name, const char *cluster,
 	do_uevent(ls, 0, 0);
 	dlm_clear_members(ls);
 	kfree(ls->ls_node_array);
+ out_kobj:
+	kobject_del(&ls->ls_kobj);
  out_recoverd:
 	dlm_recoverd_stop(ls);
  out_callback:
@@ -615,6 +628,7 @@ static int new_lockspace(const char *name, const char *cluster,
 	rhashtable_destroy(&ls->ls_rsbtbl);
  out_lsfree:
 	kobject_put(&ls->ls_kobj);
+	wait_for_completion(&ls->ls_kobj_done);
 	kfree(ls);
  out:
 	module_put(THIS_MODULE);
@@ -740,6 +754,8 @@ static int release_lockspace(struct dlm_ls *ls, unsigned int release_option)
 	    dlm_user_daemon_available())
 		do_uevent(ls, 0, (release_option == DLM_RELEASE_RECOVER));
 
+	kobject_del(&ls->ls_kobj);
+
 	dlm_recoverd_stop(ls);
 
 	/* clear the LSFL_RUNNING flag to fast up
@@ -759,8 +775,6 @@ static int release_lockspace(struct dlm_ls *ls, unsigned int release_option)
 
 	dlm_delete_debug_file(ls);
 
-	kobject_put(&ls->ls_kobj);
-
 	xa_destroy(&ls->ls_recover_xa);
 	kfree(ls->ls_recover_buf);
 
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479090.1683175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYL-0005Ia-D8; Sun, 08 Nov 2026 22:39:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479090.1683175; Sun, 08 Nov 2026 22:39:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYL-0005IP-8F; Sun, 08 Nov 2026 22:39:57 +0000
Received: by outflank-mailman (input) for mailman id 1479090;
 Sun, 08 Nov 2026 22:39:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3OPrwagcKCU8z85xv89x55x2v.t53Ev4-uvCv22z9A9.Ev46850vtA.58x@flex--irogers.bounces.google.com>)
 id 1xQBYJ-00058y-Le
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYJ-001umh-2e
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:55 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3OPrwagcKCU8z85xv89x55x2v.t53Ev4-uvCv22z9A9.Ev46850vtA.58x@flex--irogers.bounces.google.com>)
 id 6af0fa07-8faa-0a2a0a5109dd-0a2a450c92d6-18
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:55 +0100
Received: from [74.125.82.200] (helo=mail-dy1-f200.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3OPrwagcKCU8z85xv89x55x2v.t53Ev4-uvCv22z9A9.Ev46850vtA.58x@flex--irogers.bounces.google.com>)
 id 6af0fa39-f479-0a2a450c0019-4a7d52c8bd04-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:54 +0100
Received: by mail-dy1-f200.google.com with SMTP id
 5a478bee46e88-33c35f5ca6cso849399eec.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177593; x=1794782393; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=noN8ey05POi7MkRY5IldCk9pju5ZMENfN/kneqqJ3/c=;
        b=SYfAcFOAT8tuyHEpMOqB/g00hFhJdr/UPz+6Gpj0y09p815eGDPgjqLTCt+oMZUcMw
         ZBZ3IUTB2vofdG3xgVR3V279q6herGR6ddrHCc1xJEAd+6b12blE2Oe9F0H9NAFG9S4+
         YwyCzlA9AkDv2FxOKDdxyOWmSnVJhKq4rFZnFFw+s+5xTqEpjSy7uway2J8bUYcSo3A7
         QjVQ2czR1w1l1+fp7bewaPsARYT5eiu0Tzre0/AjONbXtDvhPR0Wn2MVGxJ50ga89wnN
         pC7spdJQRtvD22pkrop0zBaU194HpOdKUp5hRLV0BCACFIHf4vR2Tgav9ZDROIvI94i1
         SACw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177593; x=1794782393;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=noN8ey05POi7MkRY5IldCk9pju5ZMENfN/kneqqJ3/c=;
        b=h9z3pp5tNWY/ozVrOq07av/o01XEHLs7RQIdhpBR/Pvs/deLKtS9Cyzkd5NiDWqyrh
         gjNLaVse7txMJC3wyrsDJXQKvMUwACRvjU807618BBjvW5rTRVG9fE8Bg3nz5lsAB15I
         XJ58R368bt4zk8Wu36Ytu6KkdMgEAOpJ0YuAkzjJWs1P+HYiCcfIspkktKrr7ik6bb3j
         wBq0FD69XOqCiWsfUJdRFB/TfxyEGJxOPfV9Nq98DeZM8bRDQtflKHbrUdNL9R6fiQfd
         Y7dXV5SO8vMMfD8VgXo1tllJAppBlfNEgDubOF3t76DKX394sGI9dbaGeJ3apwlFFVkB
         Ho8A==
X-Forwarded-Encrypted: i=1; AL+hErEk9RZarmOzi0a2XHHB6gunvaG4oQZdimdirn+pj3A2VCYc8F5HqjuExHRmaDOQk3KiHoIr0np5z6k=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+QsUk7m+HsJfWQ7rZjsAJ7W8amuQpXKbnZk2ZCLef+V2Z566qU
	2YwNMbsZyOQtJE4wJeBGzzo1neoLwmgkTURZAzHP0lsSjq6k5KUKhcX3AcUYDOx/eYjG6XFQAuu
	PrkqwPBDAjg==
X-Received: from dlam9-n1.prod.google.com ([2002:a05:701b:2089:10b0:195:beb6:14cc])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:28b:10b0:1b0:430d:d81c
 with SMTP id a92af1059eb24-1b39feab6a4mr3897188c88.25.1794177592505; Sun, 08
 Nov 2026 14:39:52 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:10 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-7-irogers@google.com>
Subject: [PATCH v3 6/9] xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-d25034/1794177595-50520A5B-F1872E5C/0/0
X-purgate-type: clean
X-purgate-size: 1156

hypervisor_init() in drivers/base/hypervisor.c creates hypervisor_kobj
with kobject_create_and_add() (which allocates a dynamic kobject using
dynamic_kobj_ktype), and hypervisor_subsys_init() in
drivers/xen/sys-hypervisor.c then overwrites hypervisor_kobj->ktype with
&hyp_sysfs_kobj_type, which had no .release callback.

Add hyp_sysfs_release() calling kfree(kobj) to preserve the dynamic
kobject release behavior.

Fixes: cff7e81b3dd7 ("xen: add /sys/hypervisor support")
Signed-off-by: Ian Rogers <irogers@google.com>
---
 drivers/xen/sys-hypervisor.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c
index 91923242a5ae..0e8a2cd69fd6 100644
--- a/drivers/xen/sys-hypervisor.c
+++ b/drivers/xen/sys-hypervisor.c
@@ -659,7 +659,13 @@ static const struct sysfs_ops hyp_sysfs_ops = {
 	.store = hyp_sysfs_store,
 };
 
+static void hyp_sysfs_release(struct kobject *kobj)
+{
+	kfree(kobj);
+}
+
 static const struct kobj_type hyp_sysfs_kobj_type = {
+	.release = hyp_sysfs_release,
 	.sysfs_ops = &hyp_sysfs_ops,
 };
 
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:39:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479093.1683183 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYM-0005YQ-Q8; Sun, 08 Nov 2026 22:39:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479093.1683183; Sun, 08 Nov 2026 22:39:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYM-0005YA-MH; Sun, 08 Nov 2026 22:39:58 +0000
Received: by outflank-mailman (input) for mailman id 1479093;
 Sun, 08 Nov 2026 22:39:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3OvrwagcKCVE1A7zxABz77z4x.v75Gx6-wxEx441BCB.Gx68A72xvC.7Az@flex--irogers.bounces.google.com>)
 id 1xQBYL-0005LM-Pe
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYL-001umh-6O
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:57 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3OvrwagcKCVE1A7zxABz77z4x.v75Gx6-wxEx441BCB.Gx68A72xvC.7Az@flex--irogers.bounces.google.com>)
 id 6af0fa07-8faa-0a2a0a5109dd-0a2a450c92d6-20
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:57 +0100
Received: from [74.125.82.198] (helo=mail-dy1-f198.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3OvrwagcKCVE1A7zxABz77z4x.v75Gx6-wxEx441BCB.Gx68A72xvC.7Az@flex--irogers.bounces.google.com>)
 id 6af0fa3b-f479-0a2a450c0019-4a7d52c6cc80-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:57 +0100
Received: by mail-dy1-f198.google.com with SMTP id
 5a478bee46e88-36ecd5db581so237315eec.0
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177595; x=1794782395; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Vy7610mZpT38CbXCq7RNEhhWWcPldBtQplNazUNUwLE=;
        b=IfpWXNLaoyYr1SmPRTMO4QRnfPkuho1283K08ScXHvnBjqdzmh8FOHtfb72mGq3v8/
         bU52+bj0dZeTkZcG73uGyOMfFGeGCsPSDZfMFEEGmhn7/czgy+uF8y8YDzObGGxtTTSI
         jN7mal+RulT0R5gnSyP8qgXguUa90XvN9PknzZuT945kYBirXV924mOwz8JCoS+TR3nN
         rB2HUtrMchfTDkg4Fq8yUYA2Ex61g7WCHQg8vfqGcPcD4Z+n9MIy2CmDVZFVK09e+nqE
         sLQAXRNitN3VR2JKwuPThBVWRXezMJaPdqK1Xv2jctnTRyoOmKbpZc+DBGXfJmJRoMWI
         1cZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177595; x=1794782395;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Vy7610mZpT38CbXCq7RNEhhWWcPldBtQplNazUNUwLE=;
        b=hUr7QKERuYs4TnmxuGpJv2MtS2NIagMQcHq8Rt8hCbjJtYgZLynaIJL9NXl3Soc4v/
         9GHcFCqC0PYHI80jtHeHmQzhri0cwtWMTpq7lZMxYcaRfwcws4WdLoyLtP3igf9A1mbG
         UqlN5nHjb4lTdGsmWg20j8weQ2MacKiVk7jFvDydE2pP0TzH1QKmcqohBLn4A9z4LHoe
         /2LCw6JjzMN1pd4SbH1n11LE7gDFvCcut9XapQ4vHS+TTU94lY3EEx8I7sxxjT2M0pin
         cHJWarvK1XM9hxwtAwyZVNGEB22ajE7aTSuN5VMn9xjteZyfAcCypbvRoK49eFljukZv
         uh2A==
X-Forwarded-Encrypted: i=1; AL+hErFLP94kJqGf+gqplPoFVWoXT3FCv7jE49p2YwRsEr6W/8MIrG3QEy/aDJerq7K7Gw6KT/pNCal4c2A=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/zOGODc7yybNWNXpetWTvTE01KFGW71af3IHdMj3peG6ZN34N7
	Mu258pVSZQhbh3Ca6+xujMX1RmSRkk5eZO63nmo4MqhnIBi0ZXVqW1FNJmDyzPWw6/1/7QjySxi
	9u5nJ4ESiHQ==
X-Received: from dyblf39.prod.google.com ([2002:a05:7301:a27:b0:373:6c70:7c9c])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:d584:b0:36c:9f1a:30b8
 with SMTP id 5a478bee46e88-3725661520amr5331882eec.31.1794177594363; Sun, 08
 Nov 2026 14:39:54 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:11 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-8-irogers@google.com>
Subject: [PATCH v3 7/9] ubifs: sysfs: Use kset_create_and_add() for ubifs_kset
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-d25034/1794177597-034D7A5B-BC17E366/0/0
X-purgate-type: clean
X-purgate-size: 2054

ubifs_kset was a static struct kset using a custom ubifs_ktype that
had no default_groups and no .release callback. With
CONFIG_DEBUG_KOBJECT_RELEASE=y, unloading the ubifs module while delayed
kobject release is pending causes a use-after-free on the static kset.

Replace the static ubifs_kset and empty ubifs_ktype with a dynamically
allocated kset via kset_create_and_add().

Fixes: 203a55f04f66 ("ubifs: Fix memory leak in ubifs_sysfs_init()")
Tested-by: Zhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: Ian Rogers <irogers@google.com>
---
 fs/ubifs/sysfs.c | 24 +++++++-----------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/fs/ubifs/sysfs.c b/fs/ubifs/sysfs.c
index dbf967dcf26e..e20931e3a62f 100644
--- a/fs/ubifs/sysfs.c
+++ b/fs/ubifs/sysfs.c
@@ -80,13 +80,7 @@ static const struct kobj_type ubifs_sb_ktype = {
 	.release	= ubifs_sb_release,
 };
 
-static const struct kobj_type ubifs_ktype = {
-	.sysfs_ops	= &ubifs_attr_ops,
-};
-
-static struct kset ubifs_kset = {
-	.kobj	= {.ktype = &ubifs_ktype},
-};
+static struct kset *ubifs_kset;
 
 int ubifs_sysfs_register(struct ubifs_info *c)
 {
@@ -107,7 +101,7 @@ int ubifs_sysfs_register(struct ubifs_info *c)
 		goto out_free;
 	}
 
-	c->kobj.kset = &ubifs_kset;
+	c->kobj.kset = ubifs_kset;
 	init_completion(&c->kobj_unregister);
 
 	ret = kobject_init_and_add(&c->kobj, &ubifs_sb_ktype, NULL,
@@ -139,18 +133,14 @@ void ubifs_sysfs_unregister(struct ubifs_info *c)
 
 int __init ubifs_sysfs_init(void)
 {
-	int ret;
+	ubifs_kset = kset_create_and_add("ubifs", NULL, fs_kobj);
+	if (!ubifs_kset)
+		return -ENOMEM;
 
-	kobject_set_name(&ubifs_kset.kobj, "ubifs");
-	ubifs_kset.kobj.parent = fs_kobj;
-	ret = kset_register(&ubifs_kset);
-	if (ret)
-		kset_put(&ubifs_kset);
-
-	return ret;
+	return 0;
 }
 
 void ubifs_sysfs_exit(void)
 {
-	kset_unregister(&ubifs_kset);
+	kset_unregister(ubifs_kset);
 }
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:40:01 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:40:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479096.1683191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYP-0005pw-0X; Sun, 08 Nov 2026 22:40:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479096.1683191; Sun, 08 Nov 2026 22:40:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYO-0005pn-Tt; Sun, 08 Nov 2026 22:40:00 +0000
Received: by outflank-mailman (input) for mailman id 1479096;
 Sun, 08 Nov 2026 22:39:59 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3PPrwagcKCVM3C91zCD19916z.x97Iz8-yzGz663DED.Iz8AC94zxE.9C1@flex--irogers.bounces.google.com>)
 id 1xQBYN-0005fZ-GV
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:39:59 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYM-008sfu-TZ
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:39:58 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3PPrwagcKCVM3C91zCD19916z.x97Iz8-yzGz663DED.Iz8AC94zxE.9C1@flex--irogers.bounces.google.com>)
 id 6af0fa3e-2eae-0a2a0a5409dd-0a2a4509d77c-0
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:58 +0100
Received: from [74.125.82.200] (helo=mail-dy1-f200.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3PPrwagcKCVM3C91zCD19916z.x97Iz8-yzGz663DED.Iz8AC94zxE.9C1@flex--irogers.bounces.google.com>)
 id 6af0fa3d-be1a-0a2a45090019-4a7d52c8a572-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:39:58 +0100
Received: by mail-dy1-f200.google.com with SMTP id
 5a478bee46e88-3724667bc16so320826eec.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:39:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177597; x=1794782397; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=SmJ3SdTe6uZnhzgZJuKjeaRKDfWwuPiS9sl/mhr3vm4=;
        b=HNcrJQCIl3w6qNW1TBLAg80f76cAhykuEn8nWkucOtzqdD/cIa8aGokSX7rsoOfNr6
         9URi2u+RdnoHA6xIZ1xk1Dv9rAg86lWK0NIjyCgQ6W0n95hR2sh3Y0pWjnc5Ffnowl//
         SvCJnWB7TwldqW431/gEo3q0Ia7UgSqAq8G4XIXNbPnfeAzil1Oejo40tJ5rgFI8B/PX
         rvkq+MxZacbPG1V1TsbBvakgIeg+AxDQfCyfR2OgJJ+ywA7eHbB3BQK1jpWBauxaNZc4
         yWEEqY2RnpRJF+408i91qJ1TmJfH8Ia2wYkkXRqwJ2ktzvdiX99m+ueaeyr+eFtdUcgk
         CdNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177597; x=1794782397;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=SmJ3SdTe6uZnhzgZJuKjeaRKDfWwuPiS9sl/mhr3vm4=;
        b=hTMbHOjfpSXpdh+yhdsEDoU1bhRrV3DHPalATqNBzE8Iq7B7CA/pRvINz0tr+Tg+sS
         zJ+YVfdx6TE2j0p0qAgPLNEMhRh2/I/aDJ1xMgeKOVrTPuA+Ccg4y/CXubS8Sg8pd3Su
         7JYtElxHXXSDww7NpChIIeMytStEzqvApXPZAMdBztAtr3DRNWaoLu125qMsqZtS7cTK
         0zC4s0DwzRu3j7+FxnvouBxfdbrrH9mj0Ssu971Erx8+ccbxIoDrZR/UO6OZPqjRzour
         +B5eraqn5LMOQ/5HOryDl5dQyeixoiIEbY/9ZH34Tmw9NZiR3NjUllLnOKtcA9Zf7KT8
         CGqQ==
X-Forwarded-Encrypted: i=1; AL+hErGklJI/8fBo5oYGcXhZF3GOa32s5EuTj7USg0SUPESc3E5xanQqNrySC8DS47tDbSUj5DP+V758niE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+qCLBq9+a/uI3unHPxiygsDUWvpuj2Od11iLwCC1CgQ8ljauYi
	LCwwYZ314wlxWAOpIDf48RZzHaX1G1pE1m6esPt1FZDKz1iI5Pb45MkxyQnmGReuyHCGVOWBvi9
	BcdyOPnOReg==
X-Received: from dyz23.prod.google.com ([2002:a05:693c:4097:b0:369:7ef0:57b0])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7301:9a90:b0:36d:38e0:79f3
 with SMTP id 5a478bee46e88-370f8170ddamr8689075eec.25.1794177596308; Sun, 08
 Nov 2026 14:39:56 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:12 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-9-irogers@google.com>
Subject: [PATCH v3 8/9] drm/amdkfd: Free queue in procfs_queue_type kobject
 release callback
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-bad1c0/1794177598-FC212034-AAA936D3/0/0
X-purgate-type: clean
X-purgate-size: 2804

struct queue embeds a struct kobject (q->kobj) for procfs entries, but
procfs_queue_type had no .release callback and uninit_queue() freed q
immediately after kfd_procfs_del_queue() called kobject_put(&q->kobj).
With CONFIG_DEBUG_KOBJECT_RELEASE=y, this causes a use-after-free.

Add kfd_procfs_queue_release() to free struct queue from the kobject
release callback, change kfd_procfs_del_queue() to only remove the
kobject from sysfs via kobject_del(), and drop the final reference in
uninit_queue() via kobject_put(). Check q->kobj.state_in_sysfs before
calling kobject_del() in kfd_procfs_del_queue() to avoid warnings if
sysfs creation previously failed.

Fixes: 6d220a7e7971 ("drm/amdkfd: Add queue information to sysfs")
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Ian Rogers <irogers@google.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 12 +++++++++---
 drivers/gpu/drm/amd/amdkfd/kfd_queue.c   |  5 ++++-
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 6663718fb83c..b349e0d8d47b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -512,7 +512,15 @@ static const struct sysfs_ops procfs_queue_ops = {
 	.show = kfd_procfs_queue_show,
 };
 
+static void kfd_procfs_queue_release(struct kobject *kobj)
+{
+	struct queue *q = container_of(kobj, struct queue, kobj);
+
+	kfree(q);
+}
+
 static const struct kobj_type procfs_queue_type = {
+	.release = kfd_procfs_queue_release,
 	.sysfs_ops = &procfs_queue_ops,
 	.default_groups = procfs_queue_groups,
 };
@@ -552,7 +560,6 @@ int kfd_procfs_add_queue(struct queue *q)
 	if (ret < 0) {
 		pr_warn("Creating proc/<pid>/queues/%u failed",
 			q->properties.queue_id);
-		kobject_put(&q->kobj);
 		return ret;
 	}
 
@@ -697,11 +704,10 @@ static void kfd_procfs_add_sysfs_files(struct kfd_process *p)
 
 void kfd_procfs_del_queue(struct queue *q)
 {
-	if (!q || !q->process->kobj)
+	if (!q || !q->process || !q->process->kobj || !q->kobj.state_in_sysfs)
 		return;
 
 	kobject_del(&q->kobj);
-	kobject_put(&q->kobj);
 }
 
 int kfd_process_create_wq(void)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
index 6010a5d7a7eb..f7413d651620 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
@@ -83,7 +83,10 @@ int init_queue(struct queue **q, const struct queue_properties *properties)
 
 void uninit_queue(struct queue *q)
 {
-	kfree(q);
+	if (q && q->kobj.state_initialized)
+		kobject_put(&q->kobj);
+	else
+		kfree(q);
 }
 
 #if IS_ENABLED(CONFIG_HSA_AMD_SVM)
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Sun Nov 08 22:40:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 08 Nov 2026 22:40:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479097.1683201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYR-0006Hh-8P; Sun, 08 Nov 2026 22:40:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479097.1683201; Sun, 08 Nov 2026 22:40:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQBYR-0006HB-3h; Sun, 08 Nov 2026 22:40:03 +0000
Received: by outflank-mailman (input) for mailman id 1479097;
 Sun, 08 Nov 2026 22:40:01 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <3PvrwagcKCVU5EB31EF3BB381.zB9K1A-01I1885FGF.K1ACEB61zG.BE3@flex--irogers.bounces.google.com>)
 id 1xQBYP-0005wM-HM
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 22:40:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQBYO-009FeA-UM
 for xen-devel@lists.xenproject.org; Sun, 08 Nov 2026 23:40:00 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <3PvrwagcKCVU5EB31EF3BB381.zB9K1A-01I1885FGF.K1ACEB61zG.BE3@flex--irogers.bounces.google.com>)
 id 6af0f968-bab6-0a2a0a5309dd-0a2a450390f8-42
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:40:00 +0100
Received: from [209.85.161.69] (helo=mail-oo1-f69.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <3PvrwagcKCVU5EB31EF3BB381.zB9K1A-01I1885FGF.K1ACEB61zG.BE3@flex--irogers.bounces.google.com>)
 id 6af0fa3f-fae8-0a2a45030019-d155a145ad64-3
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:40:00 +0100
Received: by mail-oo1-f69.google.com with SMTP id
 006d021491bc7-716fbae1daaso369164eaf.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 14:40:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Type:Cc:To:From:Subject:Message-ID:References:Mime-Version:In-Reply-To:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794177599; x=1794782399; darn=lists.xenproject.org;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=cDMmI2UqRAqSDkjhtwDc5ZRUeFfMooMTF2CHO0kKXno=;
        b=mZfh4qXV0ihYZK+BxMTLu1zQrNgGbRfjiG5M8GXE/YUaPwosuQCIvBnk4f32pIHjlr
         rQhQPIApenL9NodvfBdw1nTq7PzrqYAJ0YiCNEqtE0biGKPER37VwVEQ4efr03SQFcnz
         s53B0cSEsJh+7YoWjBBhkdjTsQMZZKE+4OjxrWeSSTao+ZOWDfbp6DEiPr//o3U6Vsrq
         DOw9g13gVCcmgg15bF74wvaUCCcmrUQ2i9FmgIlorRhtc3MOj8wQ1dv/P5YiVT/2wTTl
         TL+oFgJe1jPws70777YDD6qc8sYMUexaNNkGUON+/OIjXaeN3YojQMAwg67g1i9X2O1H
         4b5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794177599; x=1794782399;
        h=content-type:cc:to:from:subject:message-id:references:mime-version
         :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=cDMmI2UqRAqSDkjhtwDc5ZRUeFfMooMTF2CHO0kKXno=;
        b=14DaC3a6O/g81rjlghKkF2R6MR4SAKbNF8pc+ehJvdGJ8FclzGza7Ftx4D3ufHVBNn
         DflJ4/fSi9XAJ1KYOm+NdFOGaNBevKTVWnVL5+7AeBRtYNmGLXAq1bXUaoKUzDP/D8lW
         /lMvConXwwTPnx9rIeXJoQUwt+7zq0WP9Mcnc4GETp5XSon5v8JD+BxyUmDtm21PmftC
         6GWQlGP4jxwahXDEemZp+VVf9sq/sAyyKIioI4GMNKAuTM07GDL9zr9EvY//QmJCMa1t
         vlk9F+1B7aSZ4XBH8/IOUii2MuEDIXIE3P1H6fgABrH9gdJWZmpmxvSluue16IzHPiZ1
         Y50g==
X-Forwarded-Encrypted: i=1; AL+hErHHPX/qaSHGJOcybIo28NhMZYoukq8fXvRMzt5a+R5+3bQRgKW/DbQAd004OboDfkoODEJoe2omwHU=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8UjE9KH35Xd+Ahb+05NhcU4NIW2tzCc65oiW/QcUIh3CmsGPei
	1Oyhp0zEqm9K0/MlFUXzoUr+LvacMbssLAqurPlLKmdGU0T0iK4XKRR8sQuWhRaCa6VipLoCd9q
	VApn7QA5OmA==
X-Received: from jabkb9.prod.google.com ([2002:a05:6638:a489:b0:5fe:2546:25c9])
 (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6820:c0c3:10b0:6f6:b13f:5d2d
 with SMTP id 006d021491bc7-7170f1b1402mr914772eaf.12.1794177598756; Sun, 08
 Nov 2026 14:39:58 -0800 (PST)
Date: Sun,  8 Nov 2026 14:39:13 -0800
In-Reply-To: <20261108223913.3624571-1-irogers@google.com>
Mime-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com>
X-Mailer: git-send-email 2.56.0.455.g6c5a503b38-goog
Message-ID: <20261108223913.3624571-10-irogers@google.com>
Subject: [PATCH v3 9/9] kobject: Require explicit initialization of struct kobj_type::release
From: Ian Rogers <irogers@google.com>
To: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>, Michael Ellerman <mpe@ellerman.id.au>, 
	Nicholas Piggin <npiggin@gmail.com>, Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Juergen Gross <jgross@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, 
	"=?UTF-8?q?Christian=20K=C3=B6nig?=" <christian.koenig@amd.com>, Zhihao Cheng <chengzhihao1@huawei.com>, 
	Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>, 
	Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, llvm@lists.linux.dev, 
	linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org, 
	linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org, 
	linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, 
	linux-sh@vger.kernel.org, linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org, Ian Rogers <irogers@google.com>
Content-Type: text/plain; charset="UTF-8"
X-purgate-ID: tlsNG-33051d/1794177600-776F34E9-B047A1CB/0/0
X-purgate-type: clean
X-purgate-size: 16145

Documentation/core-api/kobject.rst states:

  "One important point cannot be overstated: every kobject must have a
  release() method, and the kobject must persist (in a consistent state)
  until that method is called. If these constraints are not met, the code
  is flawed. Note that the kernel will warn you if you forget to provide
  a release() method. Do not try to get rid of this warning by providing
  an \"empty\" release function."

Annotate struct kobj_type::release with __must_init so the compiler
diagnoses any struct kobj_type initializer that omits .release.

For the remaining legacy struct kobj_type definitions where the kobject
is static, per-CPU, a permanent firmware structure, or embedded inside a
devm- or parent-managed allocation rather than freed by kobject_put(),
explicitly initialize .release = NULL with a comment documenting why no
release callback is provided.

Many of these legacy sites are not safe with CONFIG_DEBUG_KOBJECT_RELEASE
(for example when backing memory is freed, zeroed, or unmapped on module
unload while delayed kobject cleanup is still pending). Fixing those
lifetimes is left to follow-up patches; this change does not alter their
behavior.

Link: https://lpc.events/event/20/contributions/2392/
Signed-off-by: Ian Rogers <irogers@google.com>
---
 arch/arm64/kernel/cpuinfo.c                   |  5 +++++
 drivers/acpi/sysfs.c                          |  2 ++
 drivers/dma/ioat/sysfs.c                      |  7 +++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c    |  5 +++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c       | 10 +++++++++
 drivers/infiniband/hw/hfi1/sysfs.c            |  5 +++++
 drivers/infiniband/hw/usnic/usnic_ib_sysfs.c  |  5 +++++
 drivers/parisc/pdc_stable.c                   |  5 +++++
 drivers/power/supply/ab8500_fg.c              |  5 +++++
 drivers/s390/char/sclp_mem.c                  |  2 ++
 drivers/soc/hisilicon/kunpeng_hccs.c          | 21 +++++++++++++++++++
 .../fbdev/omap2/omapfb/dss/display-sysfs.c    |  7 +++++++
 .../fbdev/omap2/omapfb/dss/manager-sysfs.c    |  8 +++++++
 .../fbdev/omap2/omapfb/dss/overlay-sysfs.c    |  8 +++++++
 fs/erofs/sysfs.c                              | 10 +++++++++
 fs/f2fs/sysfs.c                               | 15 +++++++++++++
 fs/ocfs2/cluster/masklog.c                    |  5 +++++
 include/linux/kobject.h                       |  2 +-
 18 files changed, 126 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index 94e6cd211d70..7a4ac8dd0b86 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -295,6 +295,11 @@ const struct seq_operations cpuinfo_op = {
 
 
 static const struct kobj_type cpuregs_kobj_type = {
+	/*
+	 * Pre-existing: info->kobj is embedded in per-CPU cpu_data;
+	 * cpuid_cpu_offline() only calls kobject_del().
+	 */
+	.release = NULL,
 	.sysfs_ops = &kobj_sysfs_ops,
 };
 
diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
index a4534b3e3cfb..a10f14524dd9 100644
--- a/drivers/acpi/sysfs.c
+++ b/drivers/acpi/sysfs.c
@@ -975,6 +975,8 @@ static struct attribute *hotplug_profile_attrs[] = {
 ATTRIBUTE_GROUPS(hotplug_profile);
 
 static const struct kobj_type acpi_hotplug_profile_ktype = {
+	/* Pre-existing: hotplug->kobj is embedded in static struct acpi_scan_hotplug objects. */
+	.release = NULL,
 	.sysfs_ops = &kobj_sysfs_ops,
 	.default_groups = hotplug_profile_groups,
 };
diff --git a/drivers/dma/ioat/sysfs.c b/drivers/dma/ioat/sysfs.c
index 976134df8108..b9af60e198ef 100644
--- a/drivers/dma/ioat/sysfs.c
+++ b/drivers/dma/ioat/sysfs.c
@@ -167,6 +167,13 @@ static const struct attribute *const ioat_attrs[] = {
 ATTRIBUTE_GROUPS(ioat);
 
 const struct kobj_type ioat_ktype = {
+	/*
+	 * Pre-existing: ioatdma_chan is freed by release_ioatdma(), not
+	 * by kobject_put(). With CONFIG_DEBUG_KOBJECT_RELEASE the delayed
+	 * kobject cleanup queued by ioat_kobject_del() may run after
+	 * that kfree(), a use-after-free.
+	 */
+	.release = NULL,
 	.sysfs_ops = &ioat_sysfs_ops,
 	.default_groups = ioat_groups,
 };
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
index 6cd3927a7e82..a2a027e4b118 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
@@ -892,6 +892,11 @@ static const struct attribute_group ualink_xcp_info_group = {
 };
 
 static const struct kobj_type ualink_xcp_info_ktype = {
+	/*
+	 * Pre-existing: xcp->ualink.kobj is embedded in struct amdgpu_xcp_mgr
+	 * rather than freed individually by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
index ab14079d1c42..0847134a1391 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c
@@ -797,6 +797,11 @@ static const struct sysfs_ops xcp_cfg_res_sysfs_ops = {
 };
 
 static const struct kobj_type xcp_cfg_res_sysfs_ktype = {
+	/*
+	 * Pre-existing: xcp_res is embedded in struct amdgpu_xcp_cfg
+	 * rather than freed individually by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &xcp_cfg_res_sysfs_ops,
 	.default_groups = xcp_cfg_res_sysfs_groups,
 };
@@ -1061,6 +1066,11 @@ static const struct attribute_group amdgpu_xcp_attrs_group = {
 };
 
 static const struct kobj_type xcp_sysfs_ktype = {
+	/*
+	 * Pre-existing: xcp is embedded in struct amdgpu_xcp_mgr
+	 * rather than freed individually by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &kobj_sysfs_ops,
 };
 
diff --git a/drivers/infiniband/hw/hfi1/sysfs.c b/drivers/infiniband/hw/hfi1/sysfs.c
index 372cfd13dc61..5a1aca06b542 100644
--- a/drivers/infiniband/hw/hfi1/sysfs.c
+++ b/drivers/infiniband/hw/hfi1/sysfs.c
@@ -608,6 +608,11 @@ static const struct sysfs_ops sde_sysfs_ops = {
 };
 
 static struct kobj_type sde_ktype = {
+	/*
+	 * Pre-existing: sdma_engine is embedded in dd->per_sdma array
+	 * rather than freed by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &sde_sysfs_ops,
 };
 
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c b/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
index fdb63a8fb997..0c9dbf93a0e9 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
@@ -245,6 +245,11 @@ static struct attribute *usnic_ib_qpn_default_attrs[] = {
 ATTRIBUTE_GROUPS(usnic_ib_qpn_default);
 
 static struct kobj_type usnic_ib_qpn_type = {
+	/*
+	 * Pre-existing: qp_grp->kobj is embedded in RDMA core-managed
+	 * struct usnic_ib_qp_grp rather than freed by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &usnic_ib_qpn_sysfs_ops,
 	.default_groups = usnic_ib_qpn_default_groups,
 };
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c
index 6b567a74fc2c..2f530e8c6757 100644
--- a/drivers/parisc/pdc_stable.c
+++ b/drivers/parisc/pdc_stable.c
@@ -484,6 +484,11 @@ ATTRIBUTE_GROUPS(paths_subsys);
 
 /* Specific kobject type for our PDC paths */
 static const struct kobj_type ktype_pdcspath = {
+	/*
+	 * Pre-existing: pdcspath_entry instances are static; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release = NULL,
 	.sysfs_ops = &pdcspath_attr_ops,
 	.default_groups = paths_subsys_groups,
 };
diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c
index 069e7fee1d16..f71630d92231 100644
--- a/drivers/power/supply/ab8500_fg.c
+++ b/drivers/power/supply/ab8500_fg.c
@@ -2539,6 +2539,11 @@ static struct attribute *ab8500_fg_attrs[] = {
 ATTRIBUTE_GROUPS(ab8500_fg);
 
 static const struct kobj_type ab8500_fg_ktype = {
+	/*
+	 * Pre-existing: fg_kobject is embedded in devm-allocated struct
+	 * ab8500_fg; ab8500_fg_sysfs_exit() only calls kobject_del().
+	 */
+	.release = NULL,
 	.sysfs_ops = &ab8500_fg_sysfs_ops,
 	.default_groups = ab8500_fg_groups,
 };
diff --git a/drivers/s390/char/sclp_mem.c b/drivers/s390/char/sclp_mem.c
index 6df1926d4c62..2fb7271dce36 100644
--- a/drivers/s390/char/sclp_mem.c
+++ b/drivers/s390/char/sclp_mem.c
@@ -305,6 +305,8 @@ static ssize_t sclp_memmap_on_memory_store(struct kobject *kobj, struct kobj_att
 }
 
 static const struct kobj_type ktype = {
+	/* Pre-existing: permanent firmware kobjects, never freed */
+	.release = NULL,
 	.sysfs_ops = &kobj_sysfs_ops,
 };
 
diff --git a/drivers/soc/hisilicon/kunpeng_hccs.c b/drivers/soc/hisilicon/kunpeng_hccs.c
index 0cc2953d59a5..da7a64c95058 100644
--- a/drivers/soc/hisilicon/kunpeng_hccs.c
+++ b/drivers/soc/hisilicon/kunpeng_hccs.c
@@ -1038,6 +1038,13 @@ static struct attribute *hccs_port_default_attrs[] = {
 ATTRIBUTE_GROUPS(hccs_port_default);
 
 static const struct kobj_type hccs_port_type = {
+	/*
+	 * Pre-existing: hccs_port_info is allocated via devm_kzalloc()
+	 * rather than freed by kobject_put(). With
+	 * CONFIG_DEBUG_KOBJECT_RELEASE the delayed kobject cleanup may run
+	 * after devm frees it on unbind, a use-after-free.
+	 */
+	.release = NULL,
 	.sysfs_ops = &hccs_comm_ops,
 	.default_groups = hccs_port_default_groups,
 };
@@ -1110,6 +1117,13 @@ static struct attribute *hccs_die_default_attrs[] = {
 ATTRIBUTE_GROUPS(hccs_die_default);
 
 static const struct kobj_type hccs_die_type = {
+	/*
+	 * Pre-existing: hccs_die_info is allocated via devm_kzalloc()
+	 * rather than freed by kobject_put(). With
+	 * CONFIG_DEBUG_KOBJECT_RELEASE the delayed kobject cleanup may run
+	 * after devm frees it on unbind, a use-after-free.
+	 */
+	.release = NULL,
 	.sysfs_ops = &hccs_comm_ops,
 	.default_groups = hccs_die_default_groups,
 };
@@ -1213,6 +1227,13 @@ static struct attribute *hccs_chip_default_attrs[] = {
 ATTRIBUTE_GROUPS(hccs_chip_default);
 
 static const struct kobj_type hccs_chip_type = {
+	/*
+	 * Pre-existing: hccs_chip_info is allocated via devm_kzalloc()
+	 * rather than freed by kobject_put(). With
+	 * CONFIG_DEBUG_KOBJECT_RELEASE the delayed kobject cleanup may run
+	 * after devm frees it on unbind, a use-after-free.
+	 */
+	.release = NULL,
 	.sysfs_ops = &hccs_comm_ops,
 	.default_groups = hccs_chip_default_groups,
 };
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c b/drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c
index ae937854403b..452920a4e2a9 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c
@@ -304,6 +304,13 @@ static const struct sysfs_ops display_sysfs_ops = {
 };
 
 static struct kobj_type display_ktype = {
+	/*
+	 * Pre-existing: dssdev->kobj is embedded in struct omap_dss_device
+	 * and zeroed in display_uninit_sysfs() right after kobject_put().
+	 * With CONFIG_DEBUG_KOBJECT_RELEASE that memset() clobbers the
+	 * pending delayed kobject cleanup.
+	 */
+	.release = NULL,
 	.sysfs_ops = &display_sysfs_ops,
 	.default_groups = display_sysfs_groups,
 };
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c b/drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c
index 1b644be5fe2e..c343c33199af 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c
@@ -496,6 +496,14 @@ static const struct sysfs_ops manager_sysfs_ops = {
 };
 
 static struct kobj_type manager_ktype = {
+	/*
+	 * Pre-existing: mgr->kobj is embedded in dynamically allocated
+	 * managers[], zeroed in dss_manager_kobj_uninit() right after
+	 * kobject_put(), and freed in dss_uninit_overlay_managers(). With
+	 * CONFIG_DEBUG_KOBJECT_RELEASE that clobbers and frees the pending
+	 * delayed kobject cleanup.
+	 */
+	.release = NULL,
 	.sysfs_ops = &manager_sysfs_ops,
 	.default_groups = manager_sysfs_groups,
 };
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c b/drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c
index 1da4fb1c77b4..5c14446af9b3 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c
@@ -429,6 +429,14 @@ static const struct sysfs_ops overlay_sysfs_ops = {
 };
 
 static struct kobj_type overlay_ktype = {
+	/*
+	 * Pre-existing: ovl->kobj is embedded in dynamically allocated
+	 * overlays[] and freed in dss_uninit_overlays() right after
+	 * dss_overlay_kobj_uninit() calls kobject_put(). With
+	 * CONFIG_DEBUG_KOBJECT_RELEASE the delayed kobject cleanup may run
+	 * after kfree(overlays), a use-after-free.
+	 */
+	.release = NULL,
 	.sysfs_ops = &overlay_sysfs_ops,
 	.default_groups = overlay_sysfs_groups,
 };
diff --git a/fs/erofs/sysfs.c b/fs/erofs/sysfs.c
index dfcec9376cd5..2ea6773cd98f 100644
--- a/fs/erofs/sysfs.c
+++ b/fs/erofs/sysfs.c
@@ -238,6 +238,11 @@ static const struct kobj_type erofs_sb_ktype = {
 static const struct kobj_type erofs_ktype = {
 	.default_groups = erofs_groups,
 	.sysfs_ops	= &erofs_attr_ops,
+	/*
+	 * Pre-existing: erofs_root is a static struct kset; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release	= NULL,
 };
 
 static struct kset erofs_root = {
@@ -247,6 +252,11 @@ static struct kset erofs_root = {
 static const struct kobj_type erofs_feat_ktype = {
 	.default_groups = erofs_feat_groups,
 	.sysfs_ops	= &erofs_attr_ops,
+	/*
+	 * Pre-existing: erofs_feat is a static struct kobject; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release	= NULL,
 };
 
 static struct kobject erofs_feat = {
diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index 430356e500af..6e15695cb75f 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -1683,6 +1683,11 @@ static const struct kobj_type f2fs_sb_ktype = {
 
 static const struct kobj_type f2fs_ktype = {
 	.sysfs_ops	= &f2fs_attr_ops,
+	/*
+	 * Pre-existing: f2fs_kset is a static struct kset; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release	= NULL,
 };
 
 static struct kset f2fs_kset = {
@@ -1697,6 +1702,11 @@ static const struct sysfs_ops f2fs_feat_attr_ops = {
 static const struct kobj_type f2fs_feat_ktype = {
 	.default_groups = f2fs_feat_groups,
 	.sysfs_ops	= &f2fs_feat_attr_ops,
+	/*
+	 * Pre-existing: f2fs_feat is a static struct kobject; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release	= NULL,
 };
 
 static struct kobject f2fs_feat = {
@@ -1711,6 +1721,11 @@ static const struct sysfs_ops f2fs_tune_attr_ops = {
 static const struct kobj_type f2fs_tune_ktype = {
 	.default_groups = f2fs_tune_groups,
 	.sysfs_ops	= &f2fs_tune_attr_ops,
+	/*
+	 * Pre-existing: f2fs_tune is a static struct kobject; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release	= NULL,
 };
 
 static struct kobject f2fs_tune = {
diff --git a/fs/ocfs2/cluster/masklog.c b/fs/ocfs2/cluster/masklog.c
index 563881ddbf00..ff8a1cf51e72 100644
--- a/fs/ocfs2/cluster/masklog.c
+++ b/fs/ocfs2/cluster/masklog.c
@@ -147,6 +147,11 @@ static const struct sysfs_ops mlog_attr_ops = {
 static struct kobj_type mlog_ktype = {
 	.default_groups = mlog_default_groups,
 	.sysfs_ops      = &mlog_attr_ops,
+	/*
+	 * Pre-existing: mlog_kset is a static struct kset; lifetime
+	 * is not controlled by kobject_put().
+	 */
+	.release        = NULL,
 };
 
 static struct kset mlog_kset = {
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 55e37a5d405e..8a1332030884 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -114,7 +114,7 @@ void kobject_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
 char *kobject_get_path(const struct kobject *kobj, gfp_t flag);
 
 struct kobj_type {
-	void (*release)(struct kobject *kobj);
+	void (*release)(struct kobject *kobj) __must_init;
 	const struct sysfs_ops *sysfs_ops;
 	const struct attribute_group **default_groups;
 	const struct kobj_ns_type_operations *(*child_ns_type)(const struct kobject *kobj);
-- 
2.56.0.455.g6c5a503b38-goog



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479218.1683220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-00071x-TR; Mon, 09 Nov 2026 01:21:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479218.1683220; Mon, 09 Nov 2026 01:21:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-00071G-Ld; Mon, 09 Nov 2026 01:21:20 +0000
Received: by outflank-mailman (input) for mailman id 1479218;
 Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4T-0006xi-9W
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4S-009V22-Ao; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11f80-2eae-0a2a0a5409dd-0a2a4503da40-38
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-fae8-0a2a45030019-5a9b3222bcb0-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007Pvy-05vk; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUd-3UqI;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=o4iYp1mgiuHJ22mIDE1+YNcbZQqDTtCDvucolqruxaE=; b=Z8CMFoCMwHNkaDy4xwo7g9Tmfd
	tEwNb6kGCLWxN0HFFV7k4VHAgrkwh4xZ10twvER4YDsWRNU7lDrIrWJVB9GEAvPSoMKwxbphrCVg1
	1JGCz0nSNZquQsoMn1Kt4Cv8ecpUsrPCB7TTO1LOr9YJ1YRS8QKOLbf5EnkpN3sNLCXajNGREffp+
	VrUkl4ivaMoP1RzkF36Ret4vhIuuveiRg7A6jj8iPWsrIT/wmWo4+tloIbP98O6aIuEAxrzwI7+Mu
	E7iwDwmUAL3iXuSad6DonGqnkgDshF30+l/0tqo6hRb5JC9/SY6VMj5PAvsgEDP1FI4v9G83nxEPi
	X0Yzfb4g==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 09/24] KVM: x86: Cache host vclock_mode for masterclock eligibility checks
Date: Sun,  8 Nov 2026 17:20:55 -0800
Message-ID: <20261109012112.3415328-10-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-33051d/1794187276-764FC4E9-8D635F37/0/0
X-purgate-type: clean
X-purgate-size: 4535

From: David Woodhouse <dwmw@amazon.co.uk>

The remaining users of pvclock_gtod_data only need to know whether
the host clocksource is TSC-based. Cache the vclock_mode value in a
simple kvm_host_vclock_mode variable, updated by the pvclock_gtod_notify
callback, and use gtod_is_based_on_tsc() for eligibility checks.

This is inherently racy (as it always was — kvm_track_tsc_matching
never held the gtod seqcount), relying on eventual consistency: the
notifier fires on every timekeeping update and will correct any
transient inconsistency within one tick.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b47c36265c2f..0ed3d2549ac3 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1187,6 +1187,8 @@ static u64 compute_guest_tsc(struct kvm_vcpu *vcpu, s64 kernel_ns)
 }
 
 #ifdef CONFIG_X86_64
+static int kvm_host_vclock_mode;
+
 static inline bool gtod_is_based_on_tsc(int mode)
 {
 	return mode == VDSO_CLOCKMODE_TSC || mode == VDSO_CLOCKMODE_HVCLOCK;
@@ -1216,7 +1218,6 @@ static bool kvm_use_master_clock(struct kvm *kvm)
 static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
 	struct kvm_arch *ka = &vcpu->kvm->arch;
-	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
 	bool prev_matched_freq = ka->all_vcpus_matched_freq;
 
@@ -1269,8 +1270,9 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
 	 * accounts for its offset.
 	 */
+	int host_vclock_mode = READ_ONCE(kvm_host_vclock_mode);
 	bool use_master_clock = kvm_use_master_clock(vcpu->kvm) &&
-				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
+				gtod_is_based_on_tsc(host_vclock_mode);
 
 	/*
 	 * Request a masterclock update if needed: toggling master clock,
@@ -1283,7 +1285,7 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 
 	trace_kvm_track_tsc(vcpu->vcpu_id, ka->nr_vcpus_matched_tsc,
 			    atomic_read(&vcpu->kvm->online_vcpus),
-		            ka->use_master_clock, gtod->clock.vclock_mode);
+			    ka->use_master_clock, host_vclock_mode);
 }
 #else
 static inline void kvm_track_tsc_matching(struct kvm_vcpu *vcpu,
@@ -1454,7 +1456,7 @@ static inline bool kvm_check_tsc_unstable(void)
 	 * TSC is marked unstable when we're running on Hyper-V,
 	 * 'TSC page' clocksource is good.
 	 */
-	if (pvclock_gtod_data.clock.vclock_mode == VDSO_CLOCKMODE_HVCLOCK)
+	if (READ_ONCE(kvm_host_vclock_mode) == VDSO_CLOCKMODE_HVCLOCK)
 		return false;
 #endif
 	return check_tsc_unstable();
@@ -1788,7 +1790,6 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 {
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &kvm->arch;
-	int vclock_mode;
 	bool host_tsc_clocksource;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
@@ -1828,9 +1829,9 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 			ka->use_master_clock = false;
 	}
 
-	vclock_mode = pvclock_gtod_data.clock.vclock_mode;
-	trace_kvm_update_master_clock(ka->use_master_clock, vclock_mode,
-					ka->all_vcpus_matched_freq);
+	trace_kvm_update_master_clock(ka->use_master_clock,
+				      READ_ONCE(kvm_host_vclock_mode),
+				      ka->all_vcpus_matched_freq);
 #endif
 }
 
@@ -7210,17 +7211,23 @@ static DEFINE_IRQ_WORK(pvclock_irq_work, pvclock_irq_work_fn);
 static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused,
 			       void *priv)
 {
-	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	struct timekeeper *tk = priv;
 
 	update_pvclock_gtod(tk);
 
+	/*
+	 * Pairs with the READ_ONCE() in the lockless readers; the race is
+	 * benign by design, relying on eventual consistency (the notifier
+	 * fires on every timekeeping update).
+	 */
+	WRITE_ONCE(kvm_host_vclock_mode, tk->tkr_mono.clock->vdso_clock_mode);
+
 	/*
 	 * Disable master clock if host does not trust, or does not use,
 	 * TSC based clocksource. Delegate queue_work() to irq_work as
 	 * this is invoked with tk_core.seq write held.
 	 */
-	if (!gtod_is_based_on_tsc(gtod->clock.vclock_mode) &&
+	if (!gtod_is_based_on_tsc(kvm_host_vclock_mode) &&
 	    atomic_read(&kvm_guest_has_master_clock) != 0)
 		irq_work_queue(&pvclock_irq_work);
 	return 0;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479220.1683233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4X-0007LH-I3; Mon, 09 Nov 2026 01:21:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479220.1683233; Mon, 09 Nov 2026 01:21:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4X-0007Ig-CZ; Mon, 09 Nov 2026 01:21:21 +0000
Received: by outflank-mailman (input) for mailman id 1479220;
 Mon, 09 Nov 2026 01:21:19 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4V-0006y7-6N
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:19 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4U-0096DX-JT; Mon, 09 Nov 2026 02:21:18 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fa8-bab6-0a2a0a5309dd-0a2a450cde16-40
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:18 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-f479-0a2a450c0019-5a9b5cc7c58e-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYD-28SP; Mon, 09 Nov 2026 01:21:14 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUp-42LY;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mKH9BxiVhD1hkWOxu0QRNvIl232YhI8uqiNY5R0UwSo=; b=hiBv5jBkYSiZPhUbCSbYAV4UiX
	HUw7iYbz4jTQZqq2mmZJB/qs6XJq24lQ4vJZ8KIi1zlm/YPI1sYsH7f1IcHL77g7ARIFuYulKhV9c
	uAXC395GnZXdnZKz5fgjlDWXM0eNlupAsEX+YCa1lRAVfhJDIDbyD0T3wcsJ7in1tABH8ejB7Iczw
	Jhab0aU50aIjniJzFhCwA9aAAxJ6oDAUt3kXCbxlRThaEPukHYw38qmyyd66ibIgqR08beDzTNuuf
	nssZomSuZ/0ThtPMevXApE/vrGgzDbYIzs2h0qKo2x3mus4SJ5ODfap1zJuDR2PVmlaHnv+3hj5Di
	A7JT6Ibw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 12/24] UAPI: x86: Move pvclock-abi to UAPI for x86 platforms
Date: Sun,  8 Nov 2026 17:20:58 -0800
Message-ID: <20261109012112.3415328-13-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d25034/1794187278-77AD4A5B-A7AC93DF/0/0
X-purgate-type: clean
X-purgate-size: 3998

From: Jack Allister <jalliste@amazon.com>

A subsequent commit will provide a new KVM interface for performing a
fixup/correction of the KVM clock against the reference TSC. The
KVM_[GS]ET_CLOCK_GUEST API requires a pvclock_vcpu_time_info, as such
the caller must know about this definition.

Move the definition to the UAPI folder so that it is exported to
usermode, change the type definitions to use the standard for UAPI
exports, and add the Linux-syscall-note exception to the SPDX licence
identifier as is conventional for exported headers.

Define __KERNEL__ in scripts/xen-hypercalls.sh: the UAPI header now
pulls in linux/types.h, and the script's raw $CPP invocation with
$LINUXINCLUDE does not define it, which would trigger the "attempt to
use kernel headers from user space" warning from the UAPI type
headers.

Signed-off-by: Jack Allister <jalliste@amazon.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 MAINTAINERS                                   |  4 +--
 arch/x86/include/{ => uapi}/asm/pvclock-abi.h | 27 ++++++++++---------
 scripts/xen-hypercalls.sh                     |  2 +-
 3 files changed, 18 insertions(+), 15 deletions(-)
 rename arch/x86/include/{ => uapi}/asm/pvclock-abi.h (82%)

diff --git a/MAINTAINERS b/MAINTAINERS
index 9fadc98d3c49..773f7c800f6a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14663,8 +14663,8 @@ S:	Supported
 T:	git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 F:	arch/um/include/asm/kvm_para.h
 F:	arch/x86/include/asm/kvm_para.h
-F:	arch/x86/include/asm/pvclock-abi.h
 F:	arch/x86/include/uapi/asm/kvm_para.h
+F:	arch/x86/include/uapi/asm/pvclock-abi.h
 F:	arch/x86/kernel/kvm.c
 F:	arch/x86/kernel/kvmclock.c
 F:	include/asm-generic/kvm_para.h
@@ -29780,8 +29780,8 @@ R:	Boris Ostrovsky <boris.ostrovsky@oracle.com>
 L:	xen-devel@lists.xenproject.org (moderated for non-subscribers)
 S:	Supported
 F:	arch/x86/configs/xen.config
-F:	arch/x86/include/asm/pvclock-abi.h
 F:	arch/x86/include/asm/xen/
+F:	arch/x86/include/uapi/asm/pvclock-abi.h
 F:	arch/x86/platform/pvh/
 F:	arch/x86/xen/
 
diff --git a/arch/x86/include/asm/pvclock-abi.h b/arch/x86/include/uapi/asm/pvclock-abi.h
similarity index 82%
rename from arch/x86/include/asm/pvclock-abi.h
rename to arch/x86/include/uapi/asm/pvclock-abi.h
index b9fece5fc96d..6d70cf640362 100644
--- a/arch/x86/include/asm/pvclock-abi.h
+++ b/arch/x86/include/uapi/asm/pvclock-abi.h
@@ -1,6 +1,9 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 #ifndef _ASM_X86_PVCLOCK_ABI_H
 #define _ASM_X86_PVCLOCK_ABI_H
+
+#include <linux/types.h>
+
 #ifndef __ASSEMBLER__
 
 /*
@@ -24,20 +27,20 @@
  */
 
 struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
+	__u32   version;
+	__u32   pad0;
+	__u64   tsc_timestamp;
+	__u64   system_time;
+	__u32   tsc_to_system_mul;
+	__s8    tsc_shift;
+	__u8    flags;
+	__u8    pad[2];
 } __attribute__((__packed__)); /* 32 bytes */
 
 struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
+	__u32   version;
+	__u32   sec;
+	__u32   nsec;
 } __attribute__((__packed__));
 
 #define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
index f18b00843df3..51a722198997 100755
--- a/scripts/xen-hypercalls.sh
+++ b/scripts/xen-hypercalls.sh
@@ -5,7 +5,7 @@ shift
 in="$@"
 
 for i in $in; do
-	eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
+	eval $CPP -D__KERNEL__ $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
 done | \
 awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
 	END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479223.1683259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Z-0007kj-0R; Mon, 09 Nov 2026 01:21:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479223.1683259; Mon, 09 Nov 2026 01:21:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Y-0007jh-MY; Mon, 09 Nov 2026 01:21:22 +0000
Received: by outflank-mailman (input) for mailman id 1479223;
 Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4W-0006yD-2r
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4V-009V22-G1; Mon, 09 Nov 2026 02:21:19 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fa1-2eae-0a2a0a5409dd-0a2a4506e03c-30
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-195a-0a2a45060019-5a9b322292d8-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4O-00000007Pvu-3wfB; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUV-2uCe;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=hMvljJnllU7aDRXmXMvZrMdzo7ACgZ9fJ569T/ac5uM=; b=KKFNx3dOVMS9oS3gP03ZDQC80V
	a0QXN3E6tXhOyT4C0udEbqQ6COzincx/L8+MphVECcNxues0E3zqg3i6Y0Lgf/T/aY5sZ55pwto7G
	Ktvx1AQQWrxNnvldgoSUpSoDVtsPEG7HqVk71jqU75egEv5kS9GrzME5yro6+1g9uRnN94DeIrTCI
	ScL8W0jiqBNpa3pDU4aTcPiCymwlcdSjxR1Ad+CDAGo9u+MUnYgJbbAOAkIxBBkdrTqBP0LUnvy2F
	tmySDeOka1cESQEi2iI7Rp7JcjJlp82WrqPlxHdHeWy2S6JOCSF7KvLqK0tPnRT3Q9HEspUDVk+dw
	xzPKpwLg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 07/24] KVM: x86: Avoid redundant masterclock updates from multiple vCPUs
Date: Sun,  8 Nov 2026 17:20:53 -0800
Message-ID: <20261109012112.3415328-8-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-16d1c6/1794187276-FCC0777B-50114739/0/0
X-purgate-type: clean
X-purgate-size: 8296

From: David Woodhouse <dwmw@amazon.co.uk>

When a masterclock update is triggered (e.g. by the clocksource change
notifier), KVM_REQ_MASTERCLOCK_UPDATE is set on all vCPUs. Without this
fix, each vCPU independently processes the request and redundantly
re-executes the entire pvclock_update_vm_gtod_copy() sequence, serialized
only by tsc_write_lock. Each redundant re-snapshot of the master clock
reference point introduces potential clock drift.

Fix this by having __kvm_start_pvclock_update() check, after acquiring
the lock, whether the requesting vCPU's KVM_REQ_MASTERCLOCK_UPDATE is
still set. If another vCPU already did the update and cleared it, bail
out. Otherwise, clear the request on all other vCPUs before proceeding.

The caller in vcpu_enter_guest() now uses kvm_test_request() (non-clearing)
since the clearing is done inside __kvm_start_pvclock_update() under the
lock.

kvm_end_pvclock_update() now broadcasts KVM_REQ_CLOCK_UPDATE and clears
KVM_REQ_MCLOCK_INPROGRESS while still inside the interrupts-off lock
section with the seqcount held open. That ordering is load-bearing for
the bail-out path: a vCPU whose request was consumed by another updater
must be guaranteed to observe either the open seqcount or its pending
KVM_REQ_CLOCK_UPDATE before it can enter the guest.

Since the update now consumes pending KVM_REQ_MASTERCLOCK_UPDATE
requests, the Hyper-V reenlightenment notifier must invalidate the
Hyper-V TSC page itself; previously a pending request survived the
notifier and refreshed the page via kvm_update_masterclock() later.

Suggested-by: Dongli Zhang <dongli.zhang@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 arch/x86/kvm/msrs.c | 11 ++++--
 arch/x86/kvm/x86.c  | 89 ++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 83 insertions(+), 17 deletions(-)

diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index a2dffa1c706f..26eb30f10c43 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1278,10 +1278,15 @@ static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time,
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 
 	if (vcpu->vcpu_id == 0 && !host_initiated) {
-		if (ka->boot_vcpu_runs_old_kvmclock != old_msr)
+		/*
+		 * Store the flag before requesting the masterclock update:
+		 * the update may now be performed by another vCPU (which
+		 * consumes this request), and it must observe the new value.
+		 */
+		if (ka->boot_vcpu_runs_old_kvmclock != old_msr) {
+			ka->boot_vcpu_runs_old_kvmclock = old_msr;
 			kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
-
-		ka->boot_vcpu_runs_old_kvmclock = old_msr;
+		}
 	}
 
 	vcpu->arch.time = system_time;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0348f24cfd1d..290a3c3bb44f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1733,10 +1733,51 @@ static void kvm_make_mclock_inprogress_request(struct kvm *kvm)
 	kvm_make_all_cpus_request(kvm, KVM_REQ_MCLOCK_INPROGRESS);
 }
 
-static void __kvm_start_pvclock_update(struct kvm *kvm)
+static void kvm_clear_mclock_inprogress_request(struct kvm *kvm)
 {
+	struct kvm_vcpu *vcpu;
+	unsigned long i;
+
+	kvm_for_each_vcpu(i, vcpu, kvm)
+		kvm_clear_request(KVM_REQ_MCLOCK_INPROGRESS, vcpu);
+}
+
+static bool __kvm_start_pvclock_update(struct kvm *kvm, struct kvm_vcpu *requesting_vcpu)
+{
+	struct kvm_vcpu *vcpu;
+	unsigned long i;
+
 	raw_spin_lock_irq(&kvm->arch.tsc_write_lock);
+
+	/*
+	 * If another vCPU already did the update while we were waiting
+	 * for the lock, our request will have been cleared. Bail out,
+	 * clearing the KVM_REQ_MCLOCK_INPROGRESS kicks made on entry to
+	 * kvm_update_masterclock() so vCPUs can enter the guest again.
+	 *
+	 * Clearing them VM-wide can also clear kicks just made by yet
+	 * another updater still waiting for tsc_write_lock, letting
+	 * vCPUs run while that update is in flight. That is not new:
+	 * kvm_end_pvclock_update() has always cleared the request on
+	 * every vCPU regardless of which updater made it. The window is
+	 * harmless to readers (the pvclock seqcount covers the master
+	 * state); a vCPU which slips in runs on the old snapshot until
+	 * its KVM_REQ_CLOCK_UPDATE is serviced, exactly as if it had
+	 * entered just before the update began.
+	 */
+	if (requesting_vcpu &&
+	    !kvm_test_request(KVM_REQ_MASTERCLOCK_UPDATE, requesting_vcpu)) {
+		kvm_clear_mclock_inprogress_request(kvm);
+		raw_spin_unlock_irq(&kvm->arch.tsc_write_lock);
+		return false;
+	}
+
+	/* The update is VM-wide; prevent other vCPUs from redoing it. */
+	kvm_for_each_vcpu(i, vcpu, kvm)
+		kvm_clear_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
+
 	write_seqcount_begin(&kvm->arch.pvclock_sc);
+	return true;
 }
 
 static void kvm_start_pvclock_update(struct kvm *kvm)
@@ -1744,7 +1785,7 @@ static void kvm_start_pvclock_update(struct kvm *kvm)
 	kvm_make_mclock_inprogress_request(kvm);
 
 	/* no guest entries from this point */
-	__kvm_start_pvclock_update(kvm);
+	__kvm_start_pvclock_update(kvm, NULL);
 }
 
 static void kvm_end_pvclock_update(struct kvm *kvm)
@@ -1753,22 +1794,35 @@ static void kvm_end_pvclock_update(struct kvm *kvm)
 	struct kvm_vcpu *vcpu;
 	unsigned long i;
 
-	write_seqcount_end(&ka->pvclock_sc);
-	raw_spin_unlock_irq(&ka->tsc_write_lock);
 	kvm_for_each_vcpu(i, vcpu, kvm)
 		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
 
 	/* guest entries allowed */
-	kvm_for_each_vcpu(i, vcpu, kvm)
-		kvm_clear_request(KVM_REQ_MCLOCK_INPROGRESS, vcpu);
+	kvm_clear_mclock_inprogress_request(kvm);
+
+	write_seqcount_end(&ka->pvclock_sc);
+	raw_spin_unlock_irq(&ka->tsc_write_lock);
 }
 
-static void kvm_update_masterclock(struct kvm *kvm)
+static void kvm_update_masterclock(struct kvm *kvm, struct kvm_vcpu *vcpu)
 {
+	/*
+	 * The Hyper-V TSC page request is made before the dedupe check
+	 * in __kvm_start_pvclock_update() because it takes a mutex and
+	 * so cannot sit inside the tsc_write_lock critical section where
+	 * the winning updater is known. A losing vCPU may therefore mark
+	 * the page HOST_CHANGED after the winner has already rewritten
+	 * it; the next clock update then rewrites the page again with
+	 * the same contents, which the TSC-page sequence protocol makes
+	 * safe against concurrently running guests.
+	 */
 	kvm_hv_request_tsc_page_update(kvm);
-	kvm_start_pvclock_update(kvm);
-	pvclock_update_vm_gtod_copy(kvm);
-	kvm_end_pvclock_update(kvm);
+	kvm_make_mclock_inprogress_request(kvm);
+
+	if (__kvm_start_pvclock_update(kvm, vcpu)) {
+		pvclock_update_vm_gtod_copy(kvm);
+		kvm_end_pvclock_update(kvm);
+	}
 }
 
 /*
@@ -6869,7 +6923,14 @@ static void kvm_hyperv_tsc_notifier(void)
 	kvm_caps.max_guest_tsc_khz = tsc_khz;
 
 	list_for_each_entry(kvm, &vm_list, vm_list) {
-		__kvm_start_pvclock_update(kvm);
+		/*
+		 * Invalidate the Hyper-V TSC page explicitly: the update
+		 * below consumes any pending KVM_REQ_MASTERCLOCK_UPDATE,
+		 * which would otherwise have refreshed the page from
+		 * kvm_update_masterclock().
+		 */
+		kvm_hv_request_tsc_page_update(kvm);
+		__kvm_start_pvclock_update(kvm, NULL);
 		pvclock_update_vm_gtod_copy(kvm);
 		kvm_end_pvclock_update(kvm);
 	}
@@ -8275,8 +8336,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 			kvm_mmu_free_obsolete_roots(vcpu);
 		if (kvm_check_request(KVM_REQ_MIGRATE_TIMER, vcpu))
 			__kvm_migrate_timers(vcpu);
-		if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
-			kvm_update_masterclock(vcpu->kvm);
+		if (kvm_test_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
+			kvm_update_masterclock(vcpu->kvm, vcpu);
 		if (kvm_check_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu))
 			kvm_gen_kvmclock_update(vcpu);
 		if (kvm_check_request(KVM_REQ_CLOCK_UPDATE, vcpu)) {
@@ -9665,7 +9726,7 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 	vcpu_load(vcpu);
 	kvm_synchronize_tsc(vcpu, NULL);
 	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
-		kvm_update_masterclock(vcpu->kvm);
+		kvm_update_masterclock(vcpu->kvm, NULL);
 	vcpu_put(vcpu);
 
 	/* poll control enabled by default */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479230.1683315 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4e-0000jq-Nk; Mon, 09 Nov 2026 01:21:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479230.1683315; Mon, 09 Nov 2026 01:21:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4e-0000gm-3d; Mon, 09 Nov 2026 01:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1479230;
 Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007yU-JL
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Y-009V9o-W6; Mon, 09 Nov 2026 02:21:22 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f80-2eae-0a2a0a5409dd-0a2a4503da40-40
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:22 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-fae8-0a2a45030019-5a9b5cc79684-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYC-27zo; Mon, 09 Nov 2026 01:21:14 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUh-3h0s;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=gbSTibk6XhTLDoA5XLLPoeaAYQeC/yS+SQ0C7gN4zPA=; b=bL3nGklCqLMlXTRUmYGvll42mK
	/BsIcNU4Lxl/dhFyS5FQbibwCd0bDtGZjzzzUgKQAKo65ZF8zo0Bc3ivJmQKQtVjiC3GHxddJQaY2
	ZjBfeyimvwXG/fqmoqVih7473jkBH6k4YH+u1+tKbM0DoRUAOPRW8W1oBsn2EFUqcKVGjjcOVp5Nb
	Tj91bQt8BISBSawzIT/kQg+VoAlP0mW1CmD0lKxM+tbXSnJREySEBeGn0XCSF/NkZKBaxk5Nzz9tA
	FdSAnwcC1uAApMiBvcuU78EYsh1L2A/8pTiEf9AgTWkXug8y+OLootmLOhL2HWPrdUmfAe5X0unrI
	ZNecsk/w==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 10/24] KVM: x86: Remove pvclock_gtod_data and private timekeeping code
Date: Sun,  8 Nov 2026 17:20:56 -0800
Message-ID: <20261109012112.3415328-11-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-33051d/1794187282-772F54E9-0E278873/0/0
X-purgate-type: clean
X-purgate-size: 2800

From: David Woodhouse <dwmw@amazon.co.uk>

Remove the now-unused KVM-private timekeeping infrastructure:

 - struct pvclock_clock and struct pvclock_gtod_data
 - update_pvclock_gtod() and its seqcount-protected state copy
   (the private readers were already removed when their last callers
   went away)

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 56 ----------------------------------------------
 1 file changed, 56 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0ed3d2549ac3..a357efbf1d94 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -889,60 +889,6 @@ static inline bool kvm_vcpu_exit_request(struct kvm_vcpu *vcpu)
 	       kvm_request_pending(vcpu) || xfer_to_guest_mode_work_pending();
 }
 
-#ifdef CONFIG_X86_64
-struct pvclock_clock {
-	int vclock_mode;
-	u64 cycle_last;
-	u64 mask;
-	u32 mult;
-	u32 shift;
-	u64 base_cycles;
-	u64 offset;
-};
-
-struct pvclock_gtod_data {
-	seqcount_t	seq;
-
-	struct pvclock_clock clock; /* extract of a clocksource struct */
-	struct pvclock_clock raw_clock; /* extract of a clocksource struct */
-
-	ktime_t		offs_boot;
-	u64		wall_time_sec;
-};
-
-static struct pvclock_gtod_data pvclock_gtod_data;
-
-static void update_pvclock_gtod(struct timekeeper *tk)
-{
-	struct pvclock_gtod_data *vdata = &pvclock_gtod_data;
-
-	write_seqcount_begin(&vdata->seq);
-
-	/* copy pvclock gtod data */
-	vdata->clock.vclock_mode	= tk->tkr_mono.clock->vdso_clock_mode;
-	vdata->clock.cycle_last		= tk->tkr_mono.cycle_last;
-	vdata->clock.mask		= tk->tkr_mono.mask;
-	vdata->clock.mult		= tk->tkr_mono.mult;
-	vdata->clock.shift		= tk->tkr_mono.shift;
-	vdata->clock.base_cycles	= tk->tkr_mono.xtime_nsec;
-	vdata->clock.offset		= tk->tkr_mono.base;
-
-	vdata->raw_clock.vclock_mode	= tk->tkr_raw.clock->vdso_clock_mode;
-	vdata->raw_clock.cycle_last	= tk->tkr_raw.cycle_last;
-	vdata->raw_clock.mask		= tk->tkr_raw.mask;
-	vdata->raw_clock.mult		= tk->tkr_raw.mult;
-	vdata->raw_clock.shift		= tk->tkr_raw.shift;
-	vdata->raw_clock.base_cycles	= tk->tkr_raw.xtime_nsec;
-	vdata->raw_clock.offset		= tk->tkr_raw.base;
-
-	vdata->wall_time_sec            = tk->xtime_sec;
-
-	vdata->offs_boot		= tk->offs_boot;
-
-	write_seqcount_end(&vdata->seq);
-}
-#endif
-
 static s64 get_kvmclock_base_ns(void)
 {
 	/* Count up from boot time, but with the frequency of the raw clock.  */
@@ -7213,8 +7159,6 @@ static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused,
 {
 	struct timekeeper *tk = priv;
 
-	update_pvclock_gtod(tk);
-
 	/*
 	 * Pairs with the READ_ONCE() in the lockless readers; the race is
 	 * benign by design, relying on eventual consistency (the notifier
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479226.1683288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4b-00005m-Vf; Mon, 09 Nov 2026 01:21:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479226.1683288; Mon, 09 Nov 2026 01:21:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4b-0008ST-KC; Mon, 09 Nov 2026 01:21:25 +0000
Received: by outflank-mailman (input) for mailman id 1479226;
 Mon, 09 Nov 2026 01:21:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4X-0007Ln-LL
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4X-002A54-2F; Mon, 09 Nov 2026 02:21:21 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fb8-e002-0a2a0a5209dd-0a2a4508ae2c-36
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-f659-0a2a45080019-5a9b3222b21a-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007PwF-1hya; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVF-0wmN;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=hJ5JbJtlSEtjbwYQ6y0juHUmDsZDZck0tD47UnsGUis=; b=Cj8rtTHR//T06DJdjiLuHwq70+
	yxpZlIERHdFT2OYPi6psDbHES5+6bfUqiw+movln8i6T/vqaahyh8VVFVFbpqLR88SQ01feACDEgO
	a4WedMS2Z339h4PQphKhPdlXGhWhjmtxJXcQOEV5vs6iu7XpJIr1og28sImgL2Su7zC9GNmYMdXt7
	Y4BrdK+X5NyK9Q8gseTSozNVDqFhvjUcztWpKHLYJ0WPNzbHY2xfTULRXFEKTBaEdg59Eoq9vSB5s
	OG6AzI+G7k8dx0fP+G7w0fpPo68wfYLZagQ1FpWaovIavJL9Gi75kM2UdOI9q4L8yPYOQ/Fe/4iIy
	OXHtAYoA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 18/24] KVM: selftests: Add master clock offset test
Date: Sun,  8 Nov 2026 17:21:04 -0800
Message-ID: <20261109012112.3415328-19-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c1860d/1794187276-D457487B-313FB595/0/0
X-purgate-type: clean
X-purgate-size: 8528

From: David Woodhouse <dwmw@amazon.co.uk>

Verify that KVM master clock mode remains active when vCPUs have
different TSC offsets but the same frequency. Creates three vCPUs,
sets one to a different TSC value, and confirms:

 - KVM_CLOCK_HOST_TSC is set (master clock active)
 - KVM_CLOCK_TSC_STABLE IS set (master clock ⇒ stable flag)
 - PVCLOCK_TSC_STABLE_BIT is NOT set (offsets differ)

Then set the KVM clock forward one hour with KVM_SET_CLOCK and verify
that all vCPUs still agree on the KVM clock computed from their own
pvclock parameters.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../kvm/x86/masterclock_offset_test.c         | 203 ++++++++++++++++++
 2 files changed, 204 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/masterclock_offset_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 15a1a8f64723..4d4eff41c525 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -95,6 +95,7 @@ TEST_GEN_PROGS_x86 += x86/hyperv_tlb_flush
 TEST_GEN_PROGS_x86 += x86/kvm_clock_test
 TEST_GEN_PROGS_x86 += x86/kvm_pv_test
 TEST_GEN_PROGS_x86 += x86/kvm_buslock_test
+TEST_GEN_PROGS_x86 += x86/masterclock_offset_test
 TEST_GEN_PROGS_x86 += x86/monitor_mwait_test
 TEST_GEN_PROGS_x86 += x86/msrs_test
 TEST_GEN_PROGS_x86 += x86/nested_close_kvm_test
diff --git a/tools/testing/selftests/kvm/x86/masterclock_offset_test.c b/tools/testing/selftests/kvm/x86/masterclock_offset_test.c
new file mode 100644
index 000000000000..faf81872538e
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/masterclock_offset_test.c
@@ -0,0 +1,203 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that KVM master clock mode works with different TSC offsets
+ * as long as all vCPUs have the same TSC frequency.
+ */
+#include <string.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock.h>
+#include <asm/pvclock-abi.h>
+
+#define KVMCLOCK_GPA	0xc0000000ull
+#define TSC_OFFSET	(1000000000ULL)
+
+#define NR_VCPUS	3
+
+/* Read the per-vCPU pvclocks in an order other than creation order. */
+static const int vcpu_order[NR_VCPUS] = {0, 2, 1};
+
+static void guest_code(u64 pvti_gpa)
+{
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, pvti_gpa | KVM_MSR_ENABLED);
+	for (;;)
+		GUEST_SYNC(0);
+}
+
+static void get_pvtis(struct kvm_vcpu **vcpus,
+		      struct pvclock_vcpu_time_info *pvti)
+{
+	int i;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		int idx = vcpu_order[i];
+
+		vcpu_get_clock_guest(vcpus[idx], &pvti[idx]);
+		pr_info("vCPU %d: tsc_timestamp=%lu system_time=%lu "
+			"mul=%u shift=%d flags=0x%x\n",
+			idx, (unsigned long)pvti[idx].tsc_timestamp,
+			(unsigned long)pvti[idx].system_time,
+			pvti[idx].tsc_to_system_mul, pvti[idx].tsc_shift,
+			pvti[idx].flags);
+	}
+}
+
+/*
+ * Read the host TSC once and feed it through each vCPU's pvclock
+ * (adding each vCPU's TSC offset). All must compute exactly the same
+ * kvmclock value.
+ */
+static void assert_pvclocks_match(struct pvclock_vcpu_time_info *pvti,
+				  u64 offset0, const char *what)
+{
+	u64 host_tsc, clk0, clk1, clk2;
+
+	host_tsc = rdtsc();
+	clk0 = __pvclock_read_cycles(&pvti[0], host_tsc + offset0);
+	clk1 = __pvclock_read_cycles(&pvti[1], host_tsc + offset0);
+	clk2 = __pvclock_read_cycles(&pvti[2], host_tsc + offset0 + TSC_OFFSET);
+
+	pr_info("%s: kvmclock via vCPU 0: %lu ns, vCPU 1: %lu ns, vCPU 2: %lu ns\n",
+		what, (unsigned long)clk0, (unsigned long)clk1,
+		(unsigned long)clk2);
+	TEST_ASSERT(clk0 == clk1 && clk0 == clk2,
+		    "%s: kvmclock from all vCPUs should match exactly "
+		    "(0: %lu, 1: %lu, 2: %lu)", what, (unsigned long)clk0,
+		    (unsigned long)clk1, (unsigned long)clk2);
+}
+
+static void test_masterclock_active(struct kvm_vm *vm,
+				    struct kvm_clock_data *clock)
+{
+	memset(clock, 0, sizeof(*clock));
+	vm_get_clock(vm, clock);
+	pr_info("KVM_GET_CLOCK flags: 0x%x\n", clock->flags);
+	TEST_ASSERT(clock->flags & KVM_CLOCK_HOST_TSC,
+		    "Master clock should be active, flags=0x%x", clock->flags);
+	TEST_ASSERT(clock->flags & KVM_CLOCK_TSC_STABLE,
+		    "KVM_CLOCK_TSC_STABLE should be set, flags=0x%x",
+		    clock->flags);
+}
+
+static void test_offset_consistency(struct kvm_vcpu **vcpus,
+				    struct pvclock_vcpu_time_info *pvti,
+				    u64 offset0)
+{
+	u64 gtsc0, gtsc1, gtsc2;
+
+	get_pvtis(vcpus, pvti);
+
+	/* Read guest TSCs: should see (0+OFF) < 2 < (1+OFF) */
+	gtsc0 = vcpu_get_msr(vcpus[0], MSR_IA32_TSC);
+	gtsc2 = vcpu_get_msr(vcpus[2], MSR_IA32_TSC);
+	gtsc1 = vcpu_get_msr(vcpus[1], MSR_IA32_TSC);
+	pr_info("Guest TSCs: vcpu0=%lu vcpu2=%lu vcpu1=%lu\n",
+		(unsigned long)gtsc0, (unsigned long)gtsc2,
+		(unsigned long)gtsc1);
+	TEST_ASSERT(gtsc0 + TSC_OFFSET < gtsc2 && gtsc2 < gtsc1 + TSC_OFFSET,
+		    "Expected (vcpu0+OFF) < vcpu2 < (vcpu1+OFF)");
+
+	/* PVCLOCK_TSC_STABLE_BIT should NOT be set (offsets differ) */
+	TEST_ASSERT(!(pvti[2].flags & PVCLOCK_TSC_STABLE_BIT),
+		    "PVCLOCK_TSC_STABLE_BIT should NOT be set, flags=0x%x",
+		    pvti[2].flags);
+
+	/* Same mul/shift */
+	TEST_ASSERT(pvti[0].tsc_to_system_mul == pvti[1].tsc_to_system_mul &&
+		    pvti[0].tsc_to_system_mul == pvti[2].tsc_to_system_mul &&
+		    pvti[0].tsc_shift == pvti[1].tsc_shift &&
+		    pvti[0].tsc_shift == pvti[2].tsc_shift,
+		    "All vCPUs should have same mul/shift");
+
+	assert_pvclocks_match(pvti, offset0, "Initial");
+}
+
+#define ONE_HOUR_NS (3600ULL * NSEC_PER_SEC)
+
+static void test_set_clock_consistency(struct kvm_vm *vm,
+				       struct kvm_vcpu **vcpus,
+				       struct pvclock_vcpu_time_info *pvti,
+				       struct kvm_clock_data *clock,
+				       u64 offset0)
+{
+	struct kvm_clock_data setclk = { .clock = clock->clock + ONE_HOUR_NS };
+	u64 clk0;
+	int i;
+
+	/*
+	 * Add an hour to the VM kvmclock via KVM_SET_CLOCK, run each
+	 * vCPU to pick up the update, and check they're still in sync.
+	 */
+	vm_set_clock(vm, &setclk);
+
+	/* Guest code does GUEST_SYNC then exits — run each to see update */
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_run(vcpus[vcpu_order[i]]);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpus[vcpu_order[i]], KVM_EXIT_IO);
+	}
+
+	get_pvtis(vcpus, pvti);
+
+	TEST_ASSERT(pvti[0].system_time == pvti[1].system_time &&
+		    pvti[0].system_time == pvti[2].system_time,
+		    "system_time should still match after KVM_SET_CLOCK");
+
+	assert_pvclocks_match(pvti, offset0, "After +1h");
+
+	/* Verify the clock actually moved by ~1 hour */
+	clk0 = __pvclock_read_cycles(&pvti[0], rdtsc() + offset0);
+	TEST_ASSERT(clk0 > ONE_HOUR_NS,
+		    "Clock should be > 1 hour after set, got %lu ns",
+		    (unsigned long)clk0);
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti[NR_VCPUS];
+	struct kvm_vcpu *vcpus[NR_VCPUS];
+	struct kvm_clock_data clock;
+	struct kvm_vm *vm;
+	u64 offset0;
+	int nr_pages;
+	int i;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	vm = vm_create_with_vcpus(NR_VCPUS, guest_code, vcpus);
+
+	TEST_REQUIRE(!__vcpu_has_device_attr(vcpus[0], KVM_VCPU_TSC_CTRL,
+					     KVM_VCPU_TSC_OFFSET));
+
+	nr_pages = vm_calc_num_guest_pages(VM_MODE_DEFAULT, getpagesize());
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, nr_pages, 0);
+
+	/* Give each vCPU its own pvclock structure within the page */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_args_set(vcpus[i], 1, KVMCLOCK_GPA +
+			      i * sizeof(struct pvclock_vcpu_time_info) * 2);
+
+	/* Get vCPU 0's default offset and set vCPU 2's offset higher */
+	offset0 = vcpu_get_tsc_offset(vcpus[0]);
+	vcpu_set_tsc_offset(vcpus[2], offset0 + TSC_OFFSET);
+
+	/* Run each vCPU to enable kvmclock (with offset already set) */
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_run(vcpus[i]);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpus[i], KVM_EXIT_IO);
+	}
+
+	test_masterclock_active(vm, &clock);
+	test_offset_consistency(vcpus, pvti, offset0);
+	pr_info("PASSED: pvclock consistent across offset vCPUs\n");
+
+	test_set_clock_consistency(vm, vcpus, pvti, &clock, offset0);
+	pr_info("PASSED: pvclock still consistent after KVM_SET_CLOCK +1h\n");
+
+	kvm_vm_free(vm);
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479224.1683249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Y-0007f8-IB; Mon, 09 Nov 2026 01:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479224.1683249; Mon, 09 Nov 2026 01:21:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Y-0007bd-Dl; Mon, 09 Nov 2026 01:21:22 +0000
Received: by outflank-mailman (input) for mailman id 1479224;
 Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4W-0006yF-6Y
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4V-0014kv-Jk; Mon, 09 Nov 2026 02:21:19 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fc1-8faa-0a2a0a5109dd-0a2a45079da4-32
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:19 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-b4ea-0a2a45070019-5a9b3222ed94-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007Pvz-0R7n; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUl-3rft;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=x2cWMj9WiYqQR5jvKxIauctxP6zgmcEZRuqoi93OgNo=; b=r21KepbXGr+sreolwVzbxkkEi4
	ZnboupnRaqIwbQvq2MajhOBtM/PlgSlwIbc99bsloAbeDBkpXOITSRdlmQ01B8qVH4MTfMLJTSXi2
	b8W66m97BlWkdl27niGC+1EY/Uo8fU38xUdcnx7G03/CaLzVQF6SbpvFpeOyFd4f2eEUNSw9NBmYP
	qqhKPB8M+I/FKqiUWzfWMqPLqrW8ribTgyCLTiwRRQjS3CS60XcJVA7ywwRPmSm111nP0YRiIotOK
	mLqQj4JDgIjjYYuVPYDoo2VaL8Z7pxbBjyqYKnE2QUxURow+BiX19rOuFTlaGK57wZqe6A1heJjYL
	rQGzE7cA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 11/24] KVM: x86: Activate master clock from kvm_arch_init_vm()
Date: Sun,  8 Nov 2026 17:20:57 -0800
Message-ID: <20261109012112.3415328-12-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1794187276-3C411AE4-C06A7F2D/0/0
X-purgate-type: clean
X-purgate-size: 9933

From: David Woodhouse <dwmw@amazon.co.uk>

Initialize the TSC generation and master clock state at VM creation
time, rather than relying on kvm_update_masterclock() from
kvm_arch_vcpu_postcreate().

Set cur_tsc_generation=1, cur_tsc_offset, cur_tsc_nsec and
kvmclock_offset from an atomic ktime/TSC snapshot. This establishes a
coherent epoch so that:

 - pvclock_update_vm_gtod_copy() succeeds immediately.
 - KVM_GET_CLOCK returns valid {host_tsc, realtime} fields as soon
   as the VM is created.
 - KVM_[GS]ET_CLOCK_GUEST works without a prior KVM_RUN.
 - No O(N) iteration of all vCPUs on each vCPU creation.

The initial generation is deliberately not matchable: cur_tsc_khz is
left at zero, which no vCPU frequency ever equals, so the first vCPU
opens its own generation with its TSC starting at zero as it always
has. Letting it match the VM-creation generation would silently change
guest-visible behaviour (a first-vCPU TSC equal to the host cycles
elapsed since KVM_CREATE_VM, over an unbounded window), and would hand
the first vCPU a stale offset when a host suspend resets the TSC
before any vCPU exists, since the backwards-TSC compensation in
kvm_arch_enable_virtualization_cpu() detects the reset only through
existing vCPUs.

The same no-vCPU suspend window can leave the master snapshot itself
stale: nothing refreshes it, as pvclock_gtod_update_fn() also iterates
vCPUs, and the post-reset host TSC may read below master_cycle_now
(underflowing the delta), or — given enough uptime before the suspend,
or a firmware re-init to an arbitrary value — above it, silently
dropping the sleep period. Make __get_kvmclock_master_clock() fall
back to the raw clock whenever the elapsed time computed from the
snapshot disagrees with the raw clock by more than a second, instead
of returning a discontinuity flagged as KVM_CLOCK_TSC_STABLE.

A masterclock refresh is still performed in postcreate (synchronously,
so that it is valid even for userspace which queries the clock before
ever running a vCPU) when the first vCPU is created, since the
VM-creation snapshot can go stale while the VM has no vCPUs: a
clocksource change notifies only VMs with vCPUs, and a change back to
TSC leaves nothing to disagree with the stale snapshot. The same call
services a KVM_REQ_MASTERCLOCK_UPDATE that the postcreate
synchronization raised on any later vCPU, which would otherwise wait
until that vCPU first entered the guest while KVM_GET_CLOCK observed
the stale state.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 109 ++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 92 insertions(+), 17 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index a357efbf1d94..4afafe7ed8b8 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1583,6 +1583,14 @@ static void kvm_synchronize_tsc_at(struct kvm_vcpu *vcpu, u64 *value,
 
 		data = kvm->arch.cur_tsc_write + delta;
 
+		/*
+		 * The generation's offset can be reused directly: it is in
+		 * this vCPU's scaling domain, because every generation is
+		 * opened by a vCPU (the initial VM-creation generation is
+		 * not matchable) and set_tsc_khz() derives the scaling
+		 * ratio deterministically from the kHz value, so two vCPUs
+		 * at the same frequency carry the same ratio.
+		 */
 		if (!kvm_check_tsc_unstable())
 			offset = kvm->arch.cur_tsc_offset;
 		else
@@ -1902,6 +1910,7 @@ static bool __get_kvmclock_master_clock(struct kvm *kvm,
 	struct kvm_arch *ka = &kvm->arch;
 	struct pvclock_vcpu_time_info hv_clock;
 	struct timespec64 ts;
+	u64 clock;
 
 	if (!ka->use_master_clock)
 		return false;
@@ -1909,10 +1918,6 @@ static bool __get_kvmclock_master_clock(struct kvm *kvm,
 	if (!kvm_get_walltime_and_clockread(&ts, &data->host_tsc))
 		return false;
 
-	data->realtime = ts.tv_nsec + NSEC_PER_SEC * ts.tv_sec;
-	data->flags |= KVM_CLOCK_REALTIME | KVM_CLOCK_HOST_TSC |
-		       KVM_CLOCK_TSC_STABLE;
-
 	hv_clock.tsc_timestamp = ka->master_cycle_now;
 	hv_clock.system_time = ka->master_kernel_ns + ka->kvmclock_offset;
 
@@ -1927,13 +1932,34 @@ static bool __get_kvmclock_master_clock(struct kvm *kvm,
 		u64 tsc_delta = data->host_tsc - ka->master_cycle_now;
 
 		tsc_delta = kvm_scale_tsc(tsc_delta, ka->master_tsc_scaling_ratio);
-		data->clock = hv_clock.system_time +
-			      pvclock_scale_delta(tsc_delta,
-						  hv_clock.tsc_to_system_mul,
-						  hv_clock.tsc_shift);
+		clock = hv_clock.system_time +
+			pvclock_scale_delta(tsc_delta,
+					    hv_clock.tsc_to_system_mul,
+					    hv_clock.tsc_shift);
 	} else {
-		data->clock = __pvclock_read_cycles(&hv_clock, data->host_tsc);
+		clock = __pvclock_read_cycles(&hv_clock, data->host_tsc);
 	}
+
+	/*
+	 * Sanity-check the snapshot: if the elapsed time it computes from
+	 * the host TSC disagrees with the raw clock by more than a second,
+	 * the TSC was reset (suspend/resume — possibly re-inited by
+	 * firmware to an arbitrary value, including an underflowing one
+	 * below master_cycle_now) while nothing refreshed the snapshot.
+	 * That can happen while the VM has no vCPUs, since both the
+	 * resume compensation and the clocksource notifier work through
+	 * vCPUs. Use the fallback clock rather than returning a
+	 * discontinuity flagged KVM_CLOCK_TSC_STABLE.
+	 */
+	if (unlikely(abs((s64)(clock - hv_clock.system_time) -
+			 (get_kvmclock_base_ns() - ka->master_kernel_ns)) >
+		     NSEC_PER_SEC))
+		return false;
+
+	data->clock = clock;
+	data->realtime = ts.tv_nsec + NSEC_PER_SEC * ts.tv_sec;
+	data->flags |= KVM_CLOCK_REALTIME | KVM_CLOCK_HOST_TSC |
+		       KVM_CLOCK_TSC_STABLE;
 	return true;
 #else
 	return false;
@@ -9782,8 +9808,19 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 	}
 	vcpu_load(vcpu);
 	kvm_synchronize_tsc(vcpu, NULL, false);
-	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
+
+	/*
+	 * Refresh the VM-creation masterclock snapshot (see
+	 * kvm_arch_init_vm), synchronously so that it is valid even for
+	 * userspace which queries the clock before ever running a vCPU.
+	 * Likewise service any masterclock update the synchronization
+	 * above requested on this vCPU, which would otherwise languish
+	 * until it first enters the guest.
+	 */
+	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu) ||
+	    vcpu->vcpu_idx == 0)
 		kvm_update_masterclock(vcpu->kvm, NULL);
+
 	vcpu_put(vcpu);
 
 	/* poll control enabled by default */
@@ -10222,6 +10259,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 {
 	int ret;
 	unsigned long flags;
+	u64 kvmclock_host_tsc;
+	s64 kvmclock_ns;
 
 	if (!kvm_is_vm_type_supported(type))
 		return -EINVAL;
@@ -10253,9 +10292,13 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	seqcount_raw_spinlock_init(&kvm->arch.pvclock_sc, &kvm->arch.tsc_write_lock);
 	ratelimit_state_init(&kvm->arch.kvmclock_update_rs, HZ, 10);
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
-	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
-	kvm->arch.all_vcpus_matched_freq = true;
 
+	kvm->arch.default_tsc_khz = max_tsc_khz ? : tsc_khz;
+	kvm->arch.apic_bus_cycle_ns = APIC_BUS_CYCLE_NS_DEFAULT;
+	kvm->arch.guest_can_read_msr_platform_info = true;
+	kvm->arch.enable_pmu = enable_pmu && !kvm->arch.has_protected_pmu;
+
+	kvm->arch.all_vcpus_matched_freq = true;
 	/*
 	 * Start with all (zero) vCPUs considered matched, so that a VM whose
 	 * vCPUs never reach kvm_track_tsc_matching() — notably when the guest
@@ -10271,14 +10314,46 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	kvm->arch.cur_tsc_scaling_ratio = kvm_caps.default_tsc_scaling_ratio;
 
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
+
+	/*
+	 * Establish an initial TSC generation so that the master clock
+	 * snapshot taken below is immediately valid and KVM_GET_CLOCK
+	 * works before any vCPU exists. The snapshot is refreshed again
+	 * when the first vCPU is created, in case the host clocksource
+	 * changed (and changed back) in between: pvclock_gtod_update_fn()
+	 * does not notify a VM with no vCPUs.
+	 *
+	 * This generation is deliberately not matchable: cur_tsc_khz is
+	 * left at zero, which no vCPU frequency ever equals, so the first
+	 * vCPU opens its own generation with its TSC starting at zero,
+	 * exactly as it always has. Letting it match would make the first
+	 * vCPU's TSC start at the cycles elapsed since KVM_CREATE_VM — a
+	 * silent guest-visible change over an unbounded window — and
+	 * would hand it this offset verbatim even when a host suspend
+	 * reset the TSC in between, since the backwards-TSC compensation
+	 * in kvm_arch_enable_virtualization_cpu() detects the jump only
+	 * through existing vCPUs.
+	 */
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&kvmclock_ns, &kvmclock_host_tsc))
+#endif
+	{
+		/*
+		 * If not simultaneous, we want the TSC to be zero slightly
+		 * *after* the kvmclock is zero.
+		 */
+		kvmclock_ns = get_kvmclock_base_ns();
+		kvmclock_host_tsc = rdtsc();
+	}
+	kvm->arch.cur_tsc_write = 0;
+	kvm->arch.cur_tsc_offset = -(s64)kvmclock_host_tsc;
+	kvm->arch.cur_tsc_nsec = kvmclock_ns;
+	kvm->arch.cur_tsc_generation = 1;
+	kvm->arch.kvmclock_offset = -kvmclock_ns;
+
 	pvclock_update_vm_gtod_copy(kvm);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 
-	kvm->arch.default_tsc_khz = max_tsc_khz ? : tsc_khz;
-	kvm->arch.apic_bus_cycle_ns = APIC_BUS_CYCLE_NS_DEFAULT;
-	kvm->arch.guest_can_read_msr_platform_info = true;
-	kvm->arch.enable_pmu = enable_pmu && !kvm->arch.has_protected_pmu;
-
 #if IS_ENABLED(CONFIG_HYPERV)
 	spin_lock_init(&kvm->arch.hv_root_tdp_lock);
 	kvm->arch.hv_root_tdp = INVALID_PAGE;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479216.1683210 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-0006yS-8h; Mon, 09 Nov 2026 01:21:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479216.1683210; Mon, 09 Nov 2026 01:21:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-0006yK-4F; Mon, 09 Nov 2026 01:21:20 +0000
Received: by outflank-mailman (input) for mailman id 1479216;
 Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4T-0006xj-AJ
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4S-009V22-Jt; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fc3-2eae-0a2a0a5409dd-0a2a4504ceb4-38
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-b57f-0a2a45040019-5a9b322292d0-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4O-00000007Pvq-3U5n; Mon, 09 Nov 2026 01:21:12 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUM-2ex1;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=BxDhP/5FAQ5VWdRRHlkDCKig9L7gezWwXUkQaosCkl4=; b=f5HyYbHG+7boQQNJIRCPSm7JW2
	6zOJSyN2yGjXm6VHsuXMMDnq2XIz+z6VnZ+axV7TqzeDNfdNzHgm2tv/RMVnsN5gMbfLYbFfHDL1G
	eIwr69Aod10j7TA0Wx3rdNLLfLfJCsdOCUoA3VotmJNYEsQikWtFOvQrVYt510sN1tqhCroqCw8kq
	OIqtL3DEFR7qhC350Af/tsocqk7qi8BC2I+ZIQJ89ZkYY+t9QqKmlyfbzg0yi35oP3sYNuqC5v0El
	3lsG4Qelh5vULim8Zd1UcRR59P8XyhXvH9RaJ5mgSRBpr21SrZOxNHIBXjgrgD7+3O4kta9BfG4IC
	foaabdRA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 06/24] KVM: x86: Avoid gratuitous global clock updates
Date: Sun,  8 Nov 2026 17:20:52 -0800
Message-ID: <20261109012112.3415328-7-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ebf023/1794187275-585C7B50-D51CFC06/0/0
X-purgate-type: clean
X-purgate-size: 2566

From: David Woodhouse <dwmw@amazon.co.uk>

Eliminate two sources of unnecessary KVM_REQ_GLOBAL_CLOCK_UPDATE:

1. kvm_write_system_time(): The global clock update was a workaround for
   ever-drifting clocks based on the host's CLOCK_MONOTONIC subject to
   NTP skew. Now that the KVM clock uses CLOCK_MONOTONIC_RAW, the clock
   does not drift with NTP corrections and there is no need to
   synchronize all vCPUs on boot or resume. Use KVM_REQ_CLOCK_UPDATE on
   the vCPU itself, and only when the clock is being enabled, not
   disabled.

2. kvm_arch_vcpu_load(): In master clock mode, migration between pCPUs
   does not require any clock update since the master clock reference is
   shared. Only request a local KVM_REQ_CLOCK_UPDATE for the vCPU's
   first-ever load (vcpu->cpu == -1) to generate initial pvclock params.
   In non-master-clock mode, keep the global update to synchronize all
   vCPUs.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/msrs.c | 7 ++++---
 arch/x86/kvm/x86.c  | 4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index e91650af44c2..a2dffa1c706f 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1285,14 +1285,15 @@ static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time,
 	}
 
 	vcpu->arch.time = system_time;
-	kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
 
 	/* we verify if the enable bit is set... */
-	if (system_time & 1)
+	if (system_time & 1) {
 		kvm_gpc_activate(&vcpu->arch.pv_time, system_time & ~1ULL,
 				 sizeof(struct pvclock_vcpu_time_info));
-	else
+		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
+	} else {
 		kvm_gpc_deactivate(&vcpu->arch.pv_time);
+	}
 
 	return;
 }
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index ade7e71eb57f..0348f24cfd1d 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2723,11 +2723,13 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 		 * On a host with synchronized TSC, there is no need to update
 		 * kvmclock on vcpu->cpu migration
 		 */
-		if (!vcpu->kvm->arch.use_master_clock || vcpu->cpu == -1) {
+		if (!vcpu->kvm->arch.use_master_clock) {
 			if (__ratelimit(&vcpu->kvm->arch.kvmclock_update_rs))
 				kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
 			else
 				kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
+		} else if (vcpu->cpu == -1) {
+			kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
 		}
 
 		if (vcpu->cpu != cpu)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479217.1683216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-00070A-Lz; Mon, 09 Nov 2026 01:21:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479217.1683216; Mon, 09 Nov 2026 01:21:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-0006zV-D4; Mon, 09 Nov 2026 01:21:20 +0000
Received: by outflank-mailman (input) for mailman id 1479217;
 Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4T-0006xl-AJ
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4S-0014kv-L1; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fd4-8faa-0a2a0a5109dd-0a2a4502831e-14
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-6ca4-0a2a45020019-5a9b3222c32c-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007PwK-2fAH; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVa-1pLG;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=8WjDO1KwcsvAUqxQwIXFac02DYVHmNDQBxlAENSfD/U=; b=liV+FqUfEo9NbHpQPBtOnhS+dK
	kxTHX08rmlsewZVb58AgqOwtXwlDB1MwvcGE9QapYEpgHcWESi4JZsWp0dqPwIGfOXu6qo8X45EUs
	DJbY4efx/Ovk3xhzByAIa4dNpIEV+/JKOnJT3ZC8IywuH/JUI0dF7iup7ZdQjV/eL62wlGaT7XmWj
	/J6YlNlUPpFDy21UK0G1jWaEfeR8I6FyQ0NXBGNZF7ntCi/wJQ9AABu7Org/SjP9LsQvixuHY+rFB
	eHftO7+6ftiTooo8YbLwd+Zf9UwX4b0KWa6EWBozxo2KTPNxgHBpBEa07P/5pPmZybA4Jm1wlpBHD
	AeNCkTgQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 23/24] KVM: x86: Use a single time snapshot in kvm_vm_ioctl_set_clock()
Date: Sun,  8 Nov 2026 17:21:09 -0800
Message-ID: <20261109012112.3415328-24-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-720697/1794187276-F30B02AC-081B1AF2/0/0
X-purgate-type: clean
X-purgate-size: 3149

From: David Woodhouse <dwmw@amazon.co.uk>

The KVM_CLOCK_REALTIME handling read CLOCK_REALTIME with
ktime_get_real_ns() and then anchored the result at a different
instant: the master clock reference point captured a few lines
earlier, or a separate get_kvmclock_base_ns() read. The time elapsed
between the two reads is added to the restored clock as error --
bounded by the interrupts-off critical section, but gratuitous now
that the timekeeping core can snapshot CLOCK_REALTIME and
CLOCK_MONOTONIC_RAW at the same instant.

Take one ktime_get_snapshot_id(CLOCK_REALTIME) snapshot and derive
both the realtime correction and the raw reference point from it. In
master clock mode, keep anchoring at master_kernel_ns -- so that
'system_time' cannot go negative for a very small data.clock, as the
existing comment explains -- by projecting the snapshot's realtime
value back to that reference point; CLOCK_REALTIME and
CLOCK_MONOTONIC_RAW tick at the same rate across the few ns in
between, give or take NTP slew.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/x86.c | 36 +++++++++++++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4642a9087df4..de3b5086f17c 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4855,19 +4855,45 @@ static int kvm_vm_ioctl_set_clock(struct kvm *kvm, void __user *argp)
 	 * 'system_time' when 'data.clock' is very small.
 	 */
 	if (data.flags & KVM_CLOCK_REALTIME) {
-		u64 now_real_ns = ktime_get_real_ns();
+		struct system_time_snapshot snap = {};
+		u64 now_real_ns;
+
+		/*
+		 * Snapshot CLOCK_REALTIME and CLOCK_MONOTONIC_RAW at the
+		 * same instant, so that the elapsed time applied to
+		 * data.clock and the reference point the result is anchored
+		 * to are coherent.
+		 */
+		ktime_get_snapshot_id(CLOCK_REALTIME, &snap);
+		now_real_ns = ktime_to_ns(snap.systime);
+		now_raw_ns = ktime_to_ns(ktime_mono_to_any(snap.monoraw,
+							   TK_OFFS_BOOT));
+
+		/*
+		 * When the master clock is in use, anchor at its reference
+		 * point instead, projecting the realtime value back to the
+		 * same instant. The two clocks tick at the same rate across
+		 * the few ns in between, give or take NTP slew. Skip the
+		 * projection in the absurd case that it would take a
+		 * CLOCK_REALTIME set to within moments of the 1970 epoch
+		 * (legal with CAP_SYS_TIME) below zero and wrap.
+		 */
+		if (ka->use_master_clock &&
+		    now_real_ns >= now_raw_ns - ka->master_kernel_ns) {
+			now_real_ns -= now_raw_ns - ka->master_kernel_ns;
+			now_raw_ns = ka->master_kernel_ns;
+		}
 
 		/*
 		 * Avoid stepping the kvmclock backwards.
 		 */
 		if (now_real_ns > data.realtime)
 			data.clock += now_real_ns - data.realtime;
-	}
-
-	if (ka->use_master_clock)
+	} else if (ka->use_master_clock) {
 		now_raw_ns = ka->master_kernel_ns;
-	else
+	} else {
 		now_raw_ns = get_kvmclock_base_ns();
+	}
 	ka->kvmclock_offset = data.clock - now_raw_ns;
 	kvm_end_pvclock_update(kvm);
 	return 0;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479222.1683246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Y-0007U3-9m; Mon, 09 Nov 2026 01:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479222.1683246; Mon, 09 Nov 2026 01:21:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4X-0007SC-Vr; Mon, 09 Nov 2026 01:21:21 +0000
Received: by outflank-mailman (input) for mailman id 1479222;
 Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4W-0006yC-2p
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4V-0014kv-G0; Mon, 09 Nov 2026 02:21:19 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fc1-8faa-0a2a0a5109dd-0a2a45079da4-28
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-b4ea-0a2a45070019-5a9b322292ce-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007PwJ-2HJo; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVS-1Vui;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=jhbHTsXlkafiijDqKYXVFTZ8kLMGsWqGWQ4/HbRTNCs=; b=UMiTYyaJUWRPpigzSX/2R4AfNf
	Vms5l1HWVobQvkUIuIvqktD0UgljhqxSbtoiRrsneCppCdTNcKxy8ly0tJqBPhNnip96ELPYdAV46
	pTVBeOf2FCjl/Af314myhUZtQJTMYO4fTEWjC7W4CRrHfJL9OCXfV0gY+9eWIvOmjvEfNd31l/eJf
	R4VjoZJ9AcTbMWMfKdwocZ6BBEQZ90As+82F9cuKSVmnjwBy9MGTCNesvzdaYTKGxrPgjh1eH5vCX
	Cj2T5dSA1IPFIUfOpUZYN5G+Li/Wd+b4emrOkVGbedGPy+R+eyALKGKOIA/+GXVUAjSqPdDoChUhj
	VOAyAk6g==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 21/24] KVM: selftests: Test that the first user TSC write is honoured exactly
Date: Sun,  8 Nov 2026 17:21:07 -0800
Message-ID: <20261109012112.3415328-22-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ef75cf/1794187276-A58C1AE4-8C1D779B/0/0
X-purgate-type: clean
X-purgate-size: 7609

From: David Woodhouse <dwmw@amazon.co.uk>

The 1-second "slop" heuristic in kvm_synchronize_tsc() is only
supposed to apply between successive userspace TSC writes, i.e. once
kvm->arch.user_set_tsc has been set by a previous write. The kernel's
own internal TSC synchronization on vCPU creation (and frequency
changes) must not arm it, otherwise the first genuine userspace write
falling within 1 second of virtual cycle time of the kernel's default
generation is "corrected" back to that generation instead of being
honoured — breaking the restore of a guest with less than one second
of runtime.

Add a test which creates a vCPU and immediately performs a first
host-initiated write of a TSC value corresponding to ~500ms of guest
runtime, then verifies the value reads back exactly (modulo elapsed
time) rather than being snapped back to the kernel's default
generation near zero.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/x86/tsc_user_set_test.c     | 153 ++++++++++++++++++
 2 files changed, 154 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/tsc_user_set_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 1edc78845fd3..fd063806a7fb 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -151,6 +151,7 @@ TEST_GEN_PROGS_x86 += x86/xcr0_cpuid_test
 TEST_GEN_PROGS_x86 += x86/xss_msr_test
 TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
+TEST_GEN_PROGS_x86 += x86/tsc_user_set_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
 TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
 TEST_GEN_PROGS_x86 += x86/xen_migration_test
diff --git a/tools/testing/selftests/kvm/x86/tsc_user_set_test.c b/tools/testing/selftests/kvm/x86/tsc_user_set_test.c
new file mode 100644
index 000000000000..a74eb78a975b
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/tsc_user_set_test.c
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that the first userspace write to MSR_IA32_TSC takes effect
+ * precisely, and is not subjected to the 1-second "slop" heuristic
+ * which is only supposed to apply between successive *userspace*
+ * writes (kvm->arch.user_set_tsc).
+ *
+ * The kernel synchronizes the TSC internally when a vCPU is created
+ * (and when its frequency is set). If any of those kernel-internal
+ * paths incorrectly sets user_set_tsc, then the first genuine write
+ * from userspace which happens to fall within 1 second of virtual
+ * cycle time of the kernel's default generation is "corrected" to
+ * match that generation instead of being honoured exactly. That
+ * breaks the restore of a guest which has genuinely been running
+ * for less than one second.
+ *
+ * Simulate exactly that: create a vCPU (kernel establishes a default
+ * TSC generation starting near zero), then perform the first
+ * host-initiated write with a value corresponding to ~500ms of guest
+ * runtime. If the slop heuristic fires, the written value is snapped
+ * back to the kernel's generation (near zero) and the TSC reads back
+ * hundreds of milliseconds low. Repeat with an explicit
+ * KVM_SET_TSC_KHZ on the never-run vCPU before the write: that is
+ * another kernel-internal synchronization which must not arm the
+ * heuristic (nor open a generation that swallows the first write).
+ */
+#include "kvm_util.h"
+#include "processor.h"
+
+/*
+ * Returns false when the attempt was inconclusive: a snapped-back value
+ * tracks time since vCPU creation, so if creation-to-write time gets
+ * anywhere near the written 500ms, a buggy kernel's value could land
+ * inside the assertions' tolerance and pass. The caller retries.
+ */
+static bool test_first_write(bool set_freq)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	u64 freq_khz, t_write, t_read, slack_cycles, mono_ns, create_ns, read_ns;
+	struct timespec ts;
+	int r;
+
+	clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+	create_ns = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+
+	vm = vm_create_with_one_vcpu(&vcpu, NULL);
+
+	if (set_freq) {
+		/*
+		 * Halve the frequency so this is a real change, exercising
+		 * the frequency resynchronization path rather than the
+		 * unchanged-frequency no-op.
+		 */
+		r = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+		TEST_ASSERT(r > 0, "KVM_GET_TSC_KHZ failed");
+		vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ,
+			   (void *)(unsigned long)(r / 2));
+	}
+
+	r = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	TEST_ASSERT(r > 0, "KVM_GET_TSC_KHZ failed");
+	freq_khz = r;
+
+	/*
+	 * The first user write: a guest TSC corresponding to 500ms of
+	 * runtime. This is within 1s (of virtual cycle time) of the
+	 * kernel's default generation, so it is exactly the case that
+	 * the slop heuristic would destroy if it were (incorrectly)
+	 * armed by the kernel's own internal TSC synchronization.
+	 */
+	t_write = freq_khz * 500ULL;		/* khz * ms = cycles */
+
+	/*
+	 * Measure only the write..read window (a window measured from
+	 * before creation would also bound a snapped-back value), and
+	 * insist the write lands well before 500ms of creation time so
+	 * a snapped-back value cannot sit inside the tolerance.
+	 */
+	clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+	mono_ns = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+
+	if (mono_ns - create_ns > 250000000ULL) {
+		pr_info("  creation took %lu ms, retrying for a conclusive run\n",
+			(mono_ns - create_ns) / 1000000);
+		kvm_vm_free(vm);
+		return false;
+	}
+
+	vcpu_set_msr(vcpu, MSR_IA32_TSC, t_write);
+
+	t_read = vcpu_get_msr(vcpu, MSR_IA32_TSC);
+
+	clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+	read_ns = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+
+	/*
+	 * Bound the whole creation..read interval too: a snapped-back
+	 * value tracks it, so letting it approach the written 500ms
+	 * (via a stall between the two MSR ioctls, which the slack
+	 * below would otherwise absorb) would let a buggy kernel pass.
+	 */
+	if (read_ns - create_ns > 400000000ULL) {
+		pr_info("  creation..read took %lu ms, retrying for a conclusive run\n",
+			(read_ns - create_ns) / 1000000);
+		kvm_vm_free(vm);
+		return false;
+	}
+
+	mono_ns = read_ns - mono_ns;
+
+	/*
+	 * The TSC advances between the write and the read; bound the
+	 * difference by the measured elapsed time around the two ioctls
+	 * plus 10ms of slop, so a descheduled test cannot flake. If the
+	 * write was snapped to the kernel's default generation, the
+	 * value read back is ~500ms low (i.e. below t_write), which is
+	 * unambiguous.
+	 */
+	slack_cycles = freq_khz * (mono_ns / 1000000ULL + 10);
+
+	TEST_ASSERT(t_read >= t_write,
+		    "TSC went backwards from explicit write: wrote %lu, read %lu"
+		    " (first userspace write was subjected to 1-second slop?)",
+		    t_write, t_read);
+	TEST_ASSERT(t_read - t_write < slack_cycles,
+		    "TSC read back too far from written value: wrote %lu, read %lu",
+		    t_write, t_read);
+
+	kvm_vm_free(vm);
+	return true;
+}
+
+static void run_first_write(bool set_freq)
+{
+	int i;
+
+	for (i = 0; i < 5; i++)
+		if (test_first_write(set_freq))
+			return;
+
+	TEST_FAIL("vCPU creation repeatedly too slow for a conclusive run");
+}
+
+int main(void)
+{
+	run_first_write(false);
+
+	if (kvm_has_cap(KVM_CAP_TSC_CONTROL))
+		run_first_write(true);
+
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479221.1683242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Y-0007Q5-1U; Mon, 09 Nov 2026 01:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479221.1683242; Mon, 09 Nov 2026 01:21:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4X-0007PR-Lk; Mon, 09 Nov 2026 01:21:21 +0000
Received: by outflank-mailman (input) for mailman id 1479221;
 Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4U-0006xz-Vt
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4U-0096DX-Cd; Mon, 09 Nov 2026 02:21:18 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fa8-bab6-0a2a0a5309dd-0a2a450cde16-38
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:18 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-f479-0a2a450c0019-5a9b5cc7ae5e-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4S-00000006AYG-01dx; Mon, 09 Nov 2026 01:21:16 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKV5-0aA6;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=jG9JSw0hh/JLBaf0vwje764Jxb5Sybp7q8KLCweU/GY=; b=e7WKmDuT1ZCUuzGnHnDR1mOGax
	lXwT0y2vk45nfiypW8YY0nawiaS7C3K+x+UIIsFEAYVtxs6DanRpgNvmWUfqmR1z0qGOkYa8XvfMs
	qS6Z/nr18xuYcnzbX6iTPoKkQqmub1COJ5hG/CsbIFPS10CHoRzKs9geatr6mZ2uxWn5iYnSXM3iv
	Tlj1HwlqKMzKHmdj9U09zc0J7qawK8Igdfnmc453bpdTPGqg00Dg7HnSHvGnATqhbMpZcyPjbw7Qs
	tFuKDDC4UvQ/b8zZrs0yvHRycweuW+P60GY8GD6QpePH9LqnXNPGo8H4Q9WOBhrFCao5FVXy2cBil
	+xhyA46w==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 16/24] KVM: x86: Add KVM_VCPU_TSC_SCALE and fix the documentation on TSC migration
Date: Sun,  8 Nov 2026 17:21:02 -0800
Message-ID: <20261109012112.3415328-17-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d25034/1794187278-770D9A5B-C1918D22/0/0
X-purgate-type: clean
X-purgate-size: 31398

From: David Woodhouse <dwmw@amazon.co.uk>

The documentation on TSC migration using KVM_VCPU_TSC_OFFSET is woefully
inadequate. It ignores TSC scaling, and ignores the fact that the host
TSC may differ from one host to the next (and in fact because of the way
the kernel calibrates it, it generally differs from one boot to the next
even on the same hardware).

Add KVM_VCPU_TSC_SCALE to extract the actual scale ratio and frac_bits,
and attempt to document the process that userspace needs to follow to
preserve the TSC across migration. Add a self test to function as an
exemplar.

Only enumerate KVM_VCPU_TSC_SCALE when kvm_caps.has_tsc_control is true,
since the scaling ratio is only meaningful when hardware TSC scaling is
supported.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 Documentation/virt/kvm/devices/vcpu.rst       | 137 ++++-
 arch/x86/include/uapi/asm/kvm.h               |   6 +
 arch/x86/kvm/x86.c                            |  21 +
 tools/arch/x86/include/uapi/asm/kvm.h         |   6 +
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../kvm/x86/pvclock_migration_test.c          | 521 ++++++++++++++++++
 6 files changed, 662 insertions(+), 30 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_migration_test.c

diff --git a/Documentation/virt/kvm/devices/vcpu.rst b/Documentation/virt/kvm/devices/vcpu.rst
index deb5c51bc00c..8dc6ad904429 100644
--- a/Documentation/virt/kvm/devices/vcpu.rst
+++ b/Documentation/virt/kvm/devices/vcpu.rst
@@ -239,6 +239,7 @@ including the layout of the stolen time structure.
 :Architectures: x86
 
 4.1 ATTRIBUTE: KVM_VCPU_TSC_OFFSET
+----------------------------------
 
 :Parameters: 64-bit unsigned TSC offset
 
@@ -253,7 +254,10 @@ Returns:
 Specifies the guest's TSC offset relative to the host's TSC. The guest's
 TSC is then derived by the following equation:
 
-  guest_tsc = host_tsc + KVM_VCPU_TSC_OFFSET
+  guest_tsc = ((host_tsc * tsc_ratio) >> tsc_frac_bits) + KVM_VCPU_TSC_OFFSET
+
+The values of tsc_ratio and tsc_frac_bits can be obtained using
+the KVM_VCPU_TSC_SCALE attribute.
 
 This attribute is useful to adjust the guest's TSC on live migration,
 so that the TSC counts the time during which the VM was paused. The
@@ -261,44 +265,117 @@ following describes a possible algorithm to use for this purpose.
 
 From the source VMM process:
 
-1. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (tsc_src),
+1. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (host_tsc_src),
    kvmclock nanoseconds (guest_src), and host CLOCK_REALTIME nanoseconds
-   (host_src).
+   (time_src) at a given moment (Tsrc). The host_tsc field is only valid
+   when the returned flags include KVM_CLOCK_HOST_TSC.
+
+2. For each vCPU[i]:
+
+   a. Read the KVM_VCPU_TSC_OFFSET attribute to record the guest TSC offset
+      (ofs_src[i]).
+
+   b. Read the KVM_VCPU_TSC_SCALE attribute to record the guest TSC scaling
+      ratio (ratio_src[i], frac_bits_src[i]). If the attribute is not
+      supported (-ENXIO), there is no hardware TSC scaling and identity
+      scaling applies: use ratio 1, frac_bits 0.
+
+   c. Invoke the KVM_GET_TSC_KHZ ioctl to record the frequency of the
+      guest's TSC (freq[i]).
+
+   d. Use host_tsc_src and the scaling/offset factors to calculate this
+      vCPU's TSC at time Tsrc:
+
+      tsc_src[i] = ((host_tsc_src * ratio_src[i]) >> frac_bits_src[i]) + ofs_src[i]
 
-2. Read the KVM_VCPU_TSC_OFFSET attribute for every vCPU to record the
-   guest TSC offset (ofs_src[i]).
+      Note that frac_bits may be as high as 48, so this multiplication
+      needs a 128-bit intermediate to avoid overflow.
 
-3. Invoke the KVM_GET_TSC_KHZ ioctl to record the frequency of the
-   guest's TSC (freq).
+3. Invoke the KVM_GET_CLOCK_GUEST ioctl on the boot vCPU to return the KVM
+   clock as a function of the guest TSC (pvti_src). (This ioctl may not
+   succeed if the host and guest TSCs are not consistent and well-behaved.)
 
 From the destination VMM process:
 
-4. Invoke the KVM_SET_CLOCK ioctl, providing the source nanoseconds from
-   kvmclock (guest_src) and CLOCK_REALTIME (host_src) in their respective
-   fields.  Ensure that the KVM_CLOCK_REALTIME flag is set in the provided
-   structure.
+4. Invoke the KVM_SET_TSC_KHZ ioctl to set the scaled frequency of the
+   guest's TSC (freq[i]) — either on the VM before creating the vCPUs, or
+   on each vCPU after creating it (as the exemplar test does). When using
+   the per-vCPU form, set the frequency before performing step 7 on that
+   vCPU: KVM_VCPU_TSC_SCALE reports the ratio for the currently
+   configured frequency.
+
+5. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (host_tsc_dst) and
+   host CLOCK_REALTIME nanoseconds (time_dst) at a given moment (Tdst),
+   again checking KVM_CLOCK_HOST_TSC in the returned flags.
+
+6. Calculate the number of nanoseconds elapsed between Tsrc and Tdst:
+
+   ΔT = time_dst - time_src
+
+7. As each vCPU[i] is created:
+
+   a. Read the KVM_VCPU_TSC_SCALE attribute to record the guest TSC scaling
+      ratio (ratio_dst[i], frac_bits_dst[i]). As in step 2b, -ENXIO means
+      identity scaling: use ratio 1, frac_bits 0.
+
+   b. Calculate the intended guest TSC value at time Tdst, taking care
+      with the units (ΔT is in nanoseconds; freq, as set by
+      KVM_SET_TSC_KHZ, is in kHz):
 
-   KVM will advance the VM's kvmclock to account for elapsed time since
-   recording the clock values.  Note that this will cause problems in
-   the guest (e.g., timeouts) unless CLOCK_REALTIME is synchronized
-   between the source and destination, and a reasonably short time passes
-   between the source pausing the VMs and the destination executing
-   steps 4-7.
+      tsc_dst[i] = tsc_src[i] + (ΔT * freq[i] / 10^6)
+
+   c. Use host_tsc_dst and the scaling factors to calculate this vCPU's
+      raw scaled TSC at time Tdst without offsetting:
+
+      raw_dst[i] = ((host_tsc_dst * ratio_dst[i]) >> frac_bits_dst[i])
+
+   d. Calculate ofs_dst[i] = tsc_dst[i] - raw_dst[i] and set the resulting
+      offset using the KVM_VCPU_TSC_OFFSET attribute.
+
+8. If pvti_src was provided, invoke the KVM_SET_CLOCK_GUEST ioctl on the boot
+   vCPU to restore the KVM clock as a precise function of the guest TSC.
+
+9. If KVM_SET_CLOCK_GUEST was not available or failed (e.g. because the
+   master clock is not active), fall back to the KVM_SET_CLOCK ioctl,
+   providing the source nanoseconds from kvmclock (guest_src) and
+   CLOCK_REALTIME (time_src) in their respective fields. Ensure that the
+   KVM_CLOCK_REALTIME flag is set in the provided structure.
+
+   KVM will restore the VM's kvmclock, accounting for elapsed time since
+   the clock values were recorded. Note that this will cause problems in
+   the guest (e.g., timeouts) unless CLOCK_REALTIME is synchronized between
+   the source and destination, and a reasonably short time passes between
+   the source pausing the VMs and the destination resuming them.
+   Due to the KVM_[SG]ET_CLOCK API using CLOCK_REALTIME instead of
+   CLOCK_TAI, leap seconds during the migration may also introduce errors.
+
+4.2 ATTRIBUTE: KVM_VCPU_TSC_SCALE
+---------------------------------
+
+:Parameters: struct kvm_vcpu_tsc_scale
+
+Returns:
+
+	 ======= ======================================
+	 -EFAULT Error writing the result to the
+		 provided address.
+	 -ENXIO  Attribute not supported (no TSC scaling)
+	 -EINVAL Invalid request to write the attribute
+	 ======= ======================================
 
-5. Invoke the KVM_GET_CLOCK ioctl to record the host TSC (tsc_dest) and
-   kvmclock nanoseconds (guest_dest).
+This read-only attribute reports the guest's TSC scaling factor, in the form
+of a fixed-point number represented by the following structure::
 
-6. Adjust the guest TSC offsets for every vCPU to account for (1) time
-   elapsed since recording state and (2) difference in TSCs between the
-   source and destination machine:
+  struct kvm_vcpu_tsc_scale {
+	__u64 tsc_ratio;
+	__u64 tsc_frac_bits;
+  };
 
-   ofs_dst[i] = ofs_src[i] -
-     (guest_src - guest_dest) * freq +
-     (tsc_src - tsc_dest)
+The tsc_frac_bits field indicates the location of the fixed point, such that
+host TSC values are converted to guest TSC using the formula:
 
-   ("ofs[i] + tsc - guest * freq" is the guest TSC value corresponding to
-   a time of 0 in kvmclock.  The above formula ensures that it is the
-   same on the destination as it was on the source).
+  guest_tsc = ((host_tsc * tsc_ratio) >> tsc_frac_bits) + offset
 
-7. Write the KVM_VCPU_TSC_OFFSET attribute for every vCPU with the
-   respective value derived in the previous step.
+Userspace can use this to precisely calculate the guest TSC from the host
+TSC at any given moment. This is needed for accurate migration of guests,
+as described in the documentation for the KVM_VCPU_TSC_OFFSET attribute.
diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
index 9e3cdc3adb65..f8274d8e471d 100644
--- a/arch/x86/include/uapi/asm/kvm.h
+++ b/arch/x86/include/uapi/asm/kvm.h
@@ -964,6 +964,12 @@ struct kvm_hyperv_eventfd {
 /* for KVM_{GET,SET,HAS}_DEVICE_ATTR */
 #define KVM_VCPU_TSC_CTRL 0 /* control group for the timestamp counter (TSC) */
 #define   KVM_VCPU_TSC_OFFSET 0 /* attribute for the TSC offset */
+#define   KVM_VCPU_TSC_SCALE  1 /* attribute for TSC scaling factor */
+
+struct kvm_vcpu_tsc_scale {
+	__u64 tsc_ratio;
+	__u64 tsc_frac_bits;
+};
 
 /* x86-specific KVM_EXIT_HYPERCALL flags. */
 #define KVM_EXIT_HYPERCALL_LONG_MODE	_BITULL(0)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 00e6b2bdaffb..4642a9087df4 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3529,6 +3529,9 @@ static int kvm_arch_tsc_has_attr(struct kvm_vcpu *vcpu,
 	case KVM_VCPU_TSC_OFFSET:
 		r = 0;
 		break;
+	case KVM_VCPU_TSC_SCALE:
+		r = kvm_caps.has_tsc_control ? 0 : -ENXIO;
+		break;
 	default:
 		r = -ENXIO;
 	}
@@ -3549,6 +3552,21 @@ static int kvm_arch_tsc_get_attr(struct kvm_vcpu *vcpu,
 			break;
 		r = 0;
 		break;
+	case KVM_VCPU_TSC_SCALE: {
+		struct kvm_vcpu_tsc_scale scale;
+
+		r = -ENXIO;
+		if (!kvm_caps.has_tsc_control)
+			break;
+
+		scale.tsc_ratio = vcpu->arch.l1_tsc_scaling_ratio;
+		scale.tsc_frac_bits = kvm_caps.tsc_scaling_ratio_frac_bits;
+		r = -EFAULT;
+		if (copy_to_user(uaddr, &scale, sizeof(scale)))
+			break;
+		r = 0;
+		break;
+	}
 	default:
 		r = -ENXIO;
 	}
@@ -3588,6 +3606,9 @@ static int kvm_arch_tsc_set_attr(struct kvm_vcpu *vcpu,
 		r = 0;
 		break;
 	}
+	case KVM_VCPU_TSC_SCALE:
+		r = kvm_caps.has_tsc_control ? -EINVAL : -ENXIO;
+		break;
 	default:
 		r = -ENXIO;
 	}
diff --git a/tools/arch/x86/include/uapi/asm/kvm.h b/tools/arch/x86/include/uapi/asm/kvm.h
index 1585ec804066..7b3afccb6cb2 100644
--- a/tools/arch/x86/include/uapi/asm/kvm.h
+++ b/tools/arch/x86/include/uapi/asm/kvm.h
@@ -963,6 +963,12 @@ struct kvm_hyperv_eventfd {
 /* for KVM_{GET,SET,HAS}_DEVICE_ATTR */
 #define KVM_VCPU_TSC_CTRL 0 /* control group for the timestamp counter (TSC) */
 #define   KVM_VCPU_TSC_OFFSET 0 /* attribute for the TSC offset */
+#define   KVM_VCPU_TSC_SCALE  1 /* attribute for TSC scaling factor */
+
+struct kvm_vcpu_tsc_scale {
+	__u64 tsc_ratio;
+	__u64 tsc_frac_bits;
+};
 
 /* x86-specific KVM_EXIT_HYPERCALL flags. */
 #define KVM_EXIT_HYPERCALL_LONG_MODE	_BITULL(0)
diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 888a7530a280..18605318860e 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -113,6 +113,7 @@ TEST_GEN_PROGS_x86 += x86/pmu_counters_test
 TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
 TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
 TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
+TEST_GEN_PROGS_x86 += x86/pvclock_migration_test
 TEST_GEN_PROGS_x86 += x86/save_restore_pf_stress_test
 TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
 TEST_GEN_PROGS_x86 += x86/set_sregs_test
diff --git a/tools/testing/selftests/kvm/x86/pvclock_migration_test.c b/tools/testing/selftests/kvm/x86/pvclock_migration_test.c
new file mode 100644
index 000000000000..c18c9132308d
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/pvclock_migration_test.c
@@ -0,0 +1,521 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test KVM clock precision across simulated live migration.
+ *
+ * Verifies that the documented TSC migration procedure (using
+ * KVM_VCPU_TSC_OFFSET, KVM_VCPU_TSC_SCALE, KVM_GET_CLOCK, and
+ * KVM_SET_CLOCK_GUEST) preserves the kvmclock's relationship to
+ * CLOCK_MONOTONIC_RAW — including for vCPUs whose TSCs are offset
+ * from one another (same frequency), which no longer disables the
+ * master clock.
+ *
+ * The test:
+ * 1. Creates a VM with 3 vCPUs, runs each guest to enable kvmclock
+ * 2. Applies divergent TSC offsets to vCPUs 1 and 2
+ * 3. Verifies the master clock remains active (KVM_CLOCK_HOST_TSC),
+ *    that the guests see PVCLOCK_TSC_STABLE_BIT clear, and that all
+ *    vCPUs' pvclocks agree on "now" despite the divergent offsets
+ * 4. Does a PTP-like ABA measurement of kvmclock vs CLOCK_MONOTONIC_RAW
+ * 5. Follows the documented migration procedure (same host, 1s pause),
+ *    migrating each vCPU's TSC individually but setting the KVM clock
+ *    only once, via KVM_SET_CLOCK_GUEST on vCPU0
+ * 6. Does the same ABA measurement on the destination VM
+ * 7. Verifies the kvmclock-vs-monotonic delta is preserved, the
+ *    cross-vCPU TSC deltas are preserved, and all destination vCPUs'
+ *    pvclocks again agree on "now"
+ */
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+#define KVMCLOCK_GPA	0xc0000000ULL
+#define NR_VCPUS	3
+
+/*
+ * Divergent TSC offsets applied to vCPUs 1 and 2, in guest cycles.
+ * Roughly +1s and -0.5s at 1.5 GHz — large enough that any failure
+ * to account for them is orders of magnitude outside the ABA bounds.
+ */
+static const s64 tsc_deltas[NR_VCPUS] = { 0, 1500000000LL, -750000000LL };
+
+static void guest_code(int idx)
+{
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, (KVMCLOCK_GPA + idx * PAGE_SIZE) | 1);
+
+	for (;;)
+		GUEST_SYNC(0);
+}
+
+static u64 read_kvmclock_ns(struct kvm_vm *vm)
+{
+	struct kvm_clock_data data = {};
+
+	vm_get_clock(vm, &data);
+	return data.clock;
+}
+
+static u64 pvclock_read_cycles(struct pvclock_vcpu_time_info *src,
+				    u64 tsc)
+{
+	u64 delta = tsc - src->tsc_timestamp;
+	u64 ns;
+
+	if (src->tsc_shift >= 0)
+		delta <<= src->tsc_shift;
+	else
+		delta >>= -(s32)src->tsc_shift;
+
+	ns = (unsigned __int128)delta * src->tsc_to_system_mul >> 32;
+	return src->system_time + ns;
+}
+
+/*
+ * ABA measurement: read CLOCK_MONOTONIC_RAW, kvmclock, CLOCK_MONOTONIC_RAW.
+ * Repeat 3 times, keep the reading with the smallest spread.
+ */
+static void aba_reading(struct kvm_vm *vm, u64 *lo, u64 *kvm_ns,
+			u64 *hi)
+{
+	u64 best_spread = UINT64_MAX;
+	int i;
+
+	for (i = 0; i < 3; i++) {
+		struct timespec ts1, ts2;
+		u64 m1, m2, clk;
+
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts1);
+		clk = read_kvmclock_ns(vm);
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts2);
+
+		m1 = ts1.tv_sec * 1000000000ULL + ts1.tv_nsec;
+		m2 = ts2.tv_sec * 1000000000ULL + ts2.tv_nsec;
+
+		if (m2 - m1 < best_spread) {
+			best_spread = m2 - m1;
+			*lo = m1;
+			*kvm_ns = clk;
+			*hi = m2;
+		}
+	}
+}
+
+static struct kvm_vm *create_vm(struct kvm_vcpu **vcpus, u32 freq_khz)
+{
+	struct kvm_vm *vm;
+	int i;
+
+	vm = vm_create_with_vcpus(NR_VCPUS, guest_code, vcpus);
+
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, NR_VCPUS, 0);
+	virt_map(vm, KVMCLOCK_GPA, KVMCLOCK_GPA, NR_VCPUS);
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		vcpu_args_set(vcpus[i], 1, i);
+		/* Set guest TSC frequency (may trigger scaling) */
+		vcpu_ioctl(vcpus[i], KVM_SET_TSC_KHZ,
+			   (void *)(unsigned long)freq_khz);
+	}
+	return vm;
+}
+
+static void run_to_sync(struct kvm_vcpu *vcpu)
+{
+	struct ucall uc;
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+}
+
+/*
+ * Compute a vCPU's guest TSC for a given host TSC value, using the
+ * vCPU's scale and offset as saved from KVM_VCPU_TSC_SCALE/OFFSET.
+ */
+static u64 host_to_guest_tsc(struct kvm_vcpu_tsc_scale *scale, u64 ofs,
+			     u64 host_tsc)
+{
+	if (scale->tsc_frac_bits)
+		return ((unsigned __int128)host_tsc * scale->tsc_ratio
+			>> scale->tsc_frac_bits) + ofs;
+	return host_tsc + ofs;
+}
+
+/*
+ * Verify that all vCPUs agree on the KVM clock, despite having
+ * different TSC offsets. Take one atomic {host_tsc, kvmclock} pair
+ * for the whole VM, derive each vCPU's guest TSC at that instant,
+ * and evaluate each vCPU's pvti at its own guest TSC. All must give
+ * the same nanosecond value (same instant, same clock), and must
+ * match what KVM_GET_CLOCK itself said.
+ */
+static void check_cross_vcpu_coherence(struct kvm_vm *vm,
+				       struct kvm_vcpu **vcpus,
+				       struct pvclock_vcpu_time_info *pvtis,
+				       const char *what)
+{
+	struct kvm_clock_data now = {};
+	u64 clk[NR_VCPUS];
+	int i;
+
+	vm_get_clock(vm, &now);
+	TEST_ASSERT(now.flags & KVM_CLOCK_HOST_TSC,
+		    "%s: master clock inactive with divergent TSC offsets",
+		    what);
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct kvm_vcpu_tsc_scale scale = {};
+		u64 ofs = vcpu_get_tsc_offset(vcpus[i]);
+		u64 guest_tsc;
+
+		vcpu_device_attr_get(vcpus[i], KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale);
+		guest_tsc = host_to_guest_tsc(&scale, ofs, now.host_tsc);
+		clk[i] = pvclock_read_cycles(&pvtis[i], guest_tsc);
+
+		TEST_ASSERT(!(pvtis[i].flags & PVCLOCK_TSC_STABLE_BIT),
+			    "%s: vCPU%d still advertises TSC_STABLE with divergent offsets",
+			    what, i);
+	}
+
+	for (i = 1; i < NR_VCPUS; i++) {
+		s64 d = (s64)(clk[i] - clk[0]);
+
+		pr_info("  %s: vCPU%d vs vCPU0 kvmclock delta %" PRId64 " ns\n",
+			what, i, d);
+		TEST_ASSERT(d >= -2 && d <= 2,
+			    "%s: vCPU%d kvmclock disagrees with vCPU0 by %" PRId64 " ns",
+			    what, i, d);
+	}
+
+	/* And all of them must agree with KVM_GET_CLOCK itself */
+	s64 d0 = (s64)(clk[0] - now.clock);
+	pr_info("  %s: vCPU0 pvclock vs KVM_GET_CLOCK delta %" PRId64 " ns\n",
+		what, d0);
+	TEST_ASSERT(d0 >= -2 && d0 <= 2,
+		    "%s: vCPU0 pvclock disagrees with KVM_GET_CLOCK by %" PRId64 " ns",
+		    what, d0);
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti_src[NR_VCPUS];
+	struct pvclock_vcpu_time_info pvti_dst_ioctl[NR_VCPUS];
+	struct kvm_clock_data clock_src, clock_dst;
+	struct kvm_vcpu_tsc_scale scale_src[NR_VCPUS], scale_dst;
+	struct kvm_vcpu *vcpus[NR_VCPUS];
+	struct kvm_vm *vm;
+	u64 mono_before, kvm_before, kvm_after;
+	s64 delta_before;
+	u64 ofs_src[NR_VCPUS], tsc_src[NR_VCPUS], tsc_dst, raw_dst;
+	u64 ofs_dst[NR_VCPUS];
+	u64 host_tsc_src, host_tsc_dst;
+	u64 time_src, time_dst;
+	s64 delta_t;
+	u32 freq_khz = 1500000; /* 1.5 GHz — forces TSC scaling */
+	int i, pass;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_TSC_CONTROL));
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	/* === SOURCE SIDE === */
+	pr_info("=== Source VM ===\n");
+	vm = create_vm(vcpus, freq_khz);
+
+	/* Run each guest to enable its kvmclock */
+	for (i = 0; i < NR_VCPUS; i++)
+		run_to_sync(vcpus[i]);
+
+	/*
+	 * Apply divergent TSC offsets. Same frequency, different offsets:
+	 * this must no longer disable the master clock, but must clear
+	 * PVCLOCK_TSC_STABLE_BIT.
+	 */
+	for (i = 1; i < NR_VCPUS; i++)
+		vcpu_set_tsc_offset(vcpus[i],
+				    vcpu_get_tsc_offset(vcpus[i]) + tsc_deltas[i]);
+
+	/*
+	 * Re-run each vCPU twice. The offset writes leave a masterclock
+	 * update pending on vCPUs 1 and 2; the first pass processes it and
+	 * broadcasts KVM_REQ_CLOCK_UPDATE to every vCPU, and the second
+	 * pass has each vCPU rewrite its guest-visible pvclock page with
+	 * PVCLOCK_TSC_STABLE_BIT now clear. A single pass would leave
+	 * vCPU0's page stale: its rewrite happens before the broadcast.
+	 */
+	for (pass = 0; pass < 2; pass++)
+		for (i = 0; i < NR_VCPUS; i++)
+			run_to_sync(vcpus[i]);
+
+	/* Fetch each vCPU's pvti and verify cross-vCPU coherence */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_get_clock_guest(vcpus[i], &pvti_src[i]);
+	check_cross_vcpu_coherence(vm, vcpus, pvti_src, "source");
+
+	/* The guest-visible pvti pages must also show TSC_STABLE clear */
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct pvclock_vcpu_time_info *pvti =
+			addr_gpa2hva(vm, KVMCLOCK_GPA + i * getpagesize());
+
+		TEST_ASSERT(!(pvti->flags & PVCLOCK_TSC_STABLE_BIT),
+			    "vCPU%d guest pvti advertises TSC_STABLE with divergent offsets", i);
+	}
+
+	/* ABA measurement: kvmclock vs CLOCK_MONOTONIC_RAW */
+	u64 src_mono_lo, src_mono_hi;
+	aba_reading(vm, &src_mono_lo, &kvm_before, &src_mono_hi);
+	mono_before = (src_mono_lo + src_mono_hi) / 2;
+	delta_before = (s64)(kvm_before - mono_before);
+	pr_info("  kvmclock - MONOTONIC_RAW = %" PRId64 " ns (±%" PRIu64 " ns)\n",
+		delta_before, (src_mono_hi - src_mono_lo) / 2);
+
+	/* Step 1: KVM_GET_CLOCK for atomic {host_tsc, realtime} */
+	memset(&clock_src, 0, sizeof(clock_src));
+	clock_src.flags = KVM_CLOCK_REALTIME;
+	vm_get_clock(vm, &clock_src);
+	TEST_ASSERT(clock_src.flags & KVM_CLOCK_HOST_TSC,
+		    "KVM_GET_CLOCK did not provide host_tsc (no master clock?)");
+	host_tsc_src = clock_src.host_tsc;
+	time_src = clock_src.realtime;
+
+	/* Step 2: Save each vCPU's TSC offset and scale */
+	for (i = 0; i < NR_VCPUS; i++) {
+		ofs_src[i] = vcpu_get_tsc_offset(vcpus[i]);
+		memset(&scale_src[i], 0, sizeof(scale_src[i]));
+		vcpu_device_attr_get(vcpus[i], KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale_src[i]);
+
+		/* Compute this vCPU's guest TSC at Tsrc */
+		tsc_src[i] = host_to_guest_tsc(&scale_src[i], ofs_src[i],
+					       host_tsc_src);
+		pr_info("  vCPU%d: TSC freq=%u kHz, offset=%" PRId64 "\n",
+			i, freq_khz, (s64)ofs_src[i]);
+	}
+
+	/* Step 3: KVM_GET_CLOCK_GUEST (already fetched above as pvti_src[]) */
+
+	kvm_vm_free(vm);
+
+	/* === PAUSE (simulate migration) === */
+	pr_info("=== Pausing 1 second ===\n");
+	sleep(1);
+
+	/* === DESTINATION SIDE === */
+	pr_info("=== Destination VM ===\n");
+	/* Step 4: create + KVM_SET_TSC_KHZ (in create_vm) */
+	vm = create_vm(vcpus, freq_khz);
+
+	/* Step 5: KVM_GET_CLOCK for atomic {host_tsc, realtime} pair.
+	 * Master clock is active from VM creation.
+	 */
+	memset(&clock_dst, 0, sizeof(clock_dst));
+	vm_get_clock(vm, &clock_dst);
+	TEST_ASSERT(clock_dst.flags & KVM_CLOCK_HOST_TSC,
+		    "KVM_GET_CLOCK did not provide host_tsc (no master clock?)");
+	host_tsc_dst = clock_dst.host_tsc;
+	time_dst = clock_dst.realtime;
+
+	/* Step 6: ΔT */
+	delta_t = (s64)(time_dst - time_src);
+
+	/* Step 7: Compute and set each vCPU's destination offset */
+	memset(&scale_dst, 0, sizeof(scale_dst));
+	vcpu_device_attr_get(vcpus[0], KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_SCALE,
+			     &scale_dst);
+
+	if (scale_dst.tsc_frac_bits)
+		raw_dst = (unsigned __int128)host_tsc_dst * scale_dst.tsc_ratio
+			  >> scale_dst.tsc_frac_bits;
+	else
+		raw_dst = host_tsc_dst;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		tsc_dst = tsc_src[i] + (u64)((s64)freq_khz * delta_t / 1000000LL);
+		ofs_dst[i] = tsc_dst - raw_dst;
+		vcpu_set_tsc_offset(vcpus[i], ofs_dst[i]);
+	}
+
+	/*
+	 * The cross-vCPU TSC relationships must be preserved exactly:
+	 * every vCPU's offset moved by the same amount, so the deltas
+	 * between them are untouched by the CLOCK_REALTIME imprecision.
+	 */
+	for (i = 1; i < NR_VCPUS; i++) {
+		s64 src_delta = (s64)(ofs_src[i] - ofs_src[0]);
+		s64 dst_delta = (s64)(ofs_dst[i] - ofs_dst[0]);
+
+		pr_info("  vCPU%d-vCPU0 TSC delta: src %" PRId64
+			", dst %" PRId64 " cycles\n", i, src_delta, dst_delta);
+		TEST_ASSERT(src_delta == dst_delta,
+			    "vCPU%d TSC delta not preserved: %" PRId64 " -> %" PRId64,
+			    i, src_delta, dst_delta);
+	}
+
+	/*
+	 * The TSC offset delta introduced by using CLOCK_REALTIME to
+	 * estimate elapsed time. On same host, the correct offset is
+	 * ofs_src; the difference is the CLOCK_REALTIME-vs-TSC error.
+	 */
+	s64 tsc_ofs_delta = (s64)(ofs_dst[0] - ofs_src[0]);
+	s64 tsc_ofs_delta_ns = tsc_ofs_delta * 1000000LL / freq_khz;
+	pr_info("  Destination TSC offset=%" PRId64
+		", imprecision from CLOCK_REALTIME: %" PRId64 " cycles = %"
+		PRId64 " ns\n", (s64)ofs_dst[0], tsc_ofs_delta, tsc_ofs_delta_ns);
+
+	/*
+	 * Step 8: KVM_SET_CLOCK_GUEST — once, via vCPU0. The other
+	 * vCPUs' clocks must come out right too: the KVM clock is
+	 * VM-wide, and each vCPU's pvti relates it to that vCPU's
+	 * own TSC.
+	 */
+	vcpu_set_clock_guest(vcpus[0], &pvti_src[0]);
+
+	/* Run each guest to write its pvclock page on the destination */
+	for (i = 0; i < NR_VCPUS; i++)
+		run_to_sync(vcpus[i]);
+
+	/* Verify cross-vCPU coherence on the destination */
+	for (i = 0; i < NR_VCPUS; i++)
+		vcpu_get_clock_guest(vcpus[i], &pvti_dst_ioctl[i]);
+	check_cross_vcpu_coherence(vm, vcpus, pvti_dst_ioctl, "dest");
+
+	/* ABA measurement on destination */
+	u64 mono_lo, mono_hi;
+	aba_reading(vm, &mono_lo, &kvm_after, &mono_hi);
+
+	/*
+	 * The kvmclock is tied to the guest TSC via SET_CLOCK_GUEST.
+	 * The guest TSC is offset from the correct value by tsc_ofs_delta_ns
+	 * (due to CLOCK_REALTIME imprecision). So the kvmclock should be
+	 * offset from CLOCK_MONOTONIC_RAW by exactly:
+	 *   (original delta) + tsc_ofs_delta_ns
+	 *
+	 * The "original delta" has uncertainty from the source ABA spread,
+	 * and the measurement has uncertainty from the destination ABA spread.
+	 * Verify the expected value falls within the combined bounds.
+	 */
+	s64 delta_before_lo = (s64)(kvm_before - src_mono_hi);
+	s64 delta_before_hi = (s64)(kvm_before - src_mono_lo);
+	s64 expected_lo = delta_before_lo + tsc_ofs_delta_ns;
+	s64 expected_hi = delta_before_hi + tsc_ofs_delta_ns;
+	s64 actual_lo = (s64)(kvm_after - mono_hi);
+	s64 actual_hi = (s64)(kvm_after - mono_lo);
+
+	/* Show the shift relative to the source measurement */
+	s64 expected_mid = tsc_ofs_delta_ns;
+	s64 expected_err = (s64)(src_mono_hi - src_mono_lo) / 2;
+	s64 actual_mid = ((actual_lo + actual_hi) / 2) - delta_before;
+	s64 actual_err = (s64)(mono_hi - mono_lo) / 2;
+	pr_info("  kvmclock-mono shift: expected %" PRId64 " ns (±%" PRId64
+		"), measured %" PRId64 " ns (±%" PRId64 ")\n",
+		expected_mid, expected_err, actual_mid, actual_err);
+
+	/* The ranges must overlap */
+	TEST_ASSERT(expected_hi >= actual_lo && expected_lo <= actual_hi,
+		    "Ranges don't overlap: expected [%" PRId64 ", %" PRId64
+		    "] measured [%" PRId64 ", %" PRId64 "]",
+		    expected_lo, expected_hi, actual_lo, actual_hi);
+
+	/*
+	 * Direct pvclock verification: read each destination pvclock page
+	 * (as written for the guest) and verify that computing kvmclock
+	 * from the source pvti and the destination pvti at the same
+	 * instant gives the same result, for every vCPU.
+	 *
+	 * Get one atomic {host_tsc, kvmclock} pair, derive each vCPU's
+	 * guest TSC at that instant, then compute kvmclock from both
+	 * pvclock structs. The source pvti evaluates at the *migrated*
+	 * guest TSC, i.e. shifted by the CLOCK_REALTIME imprecision that
+	 * was baked into the offsets — which is exactly what "the clock
+	 * follows the TSC" means.
+	 */
+	struct kvm_clock_data clock_now = {};
+	vm_get_clock(vm, &clock_now);
+	pr_info("  KVM_GET_CLOCK:  %" PRIu64 " ns\n", (u64)clock_now.clock);
+
+	u64 host_tsc_now = clock_now.host_tsc;
+
+	for (i = 0; i < NR_VCPUS; i++) {
+		struct pvclock_vcpu_time_info *pvti_page =
+			addr_gpa2hva(vm, KVMCLOCK_GPA + i * getpagesize());
+		u64 guest_tsc_now = host_to_guest_tsc(&scale_dst, ofs_dst[i],
+						      host_tsc_now);
+		u64 clk_from_src = pvclock_read_cycles(&pvti_src[i],
+						       guest_tsc_now);
+		u64 clk_from_dst = pvclock_read_cycles(pvti_page,
+						       guest_tsc_now);
+		s64 pvclock_delta = (s64)(clk_from_src - clk_from_dst);
+
+		pr_info("  vCPU%d pvclock direct: src=%" PRIu64 " dst=%" PRIu64
+			" delta=%" PRId64 " ns\n", i, clk_from_src,
+			clk_from_dst, pvclock_delta);
+
+		TEST_ASSERT(pvclock_delta >= -2 && pvclock_delta <= 2,
+			    "vCPU%d pvclock src vs dst disagree by %" PRId64 " ns",
+			    i, pvclock_delta);
+	}
+
+	/*
+	 * Tight ABA: compare pvclock_read() directly (no ioctl) against
+	 * CLOCK_MONOTONIC_RAW. The spread should be much smaller since
+	 * there's no syscall between the two clock_gettime calls — just
+	 * rdtsc + userspace mul/shift.
+	 */
+	struct pvclock_vcpu_time_info *pvti0 = addr_gpa2hva(vm, KVMCLOCK_GPA);
+	u64 tight_mono_lo = 0, tight_mono_hi = 0, tight_kvm = 0;
+	u64 tight_best_spread = UINT64_MAX;
+	for (i = 0; i < 3; i++) {
+		struct timespec ts1, ts2;
+		u64 m1, m2, tsc, clk;
+
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts1);
+		tsc = rdtsc();
+		clock_gettime(CLOCK_MONOTONIC_RAW, &ts2);
+
+		m1 = ts1.tv_sec * 1000000000ULL + ts1.tv_nsec;
+		m2 = ts2.tv_sec * 1000000000ULL + ts2.tv_nsec;
+
+		/* Scale host TSC to vCPU0's guest TSC */
+		tsc = host_to_guest_tsc(&scale_dst, ofs_dst[0], tsc);
+
+		clk = pvclock_read_cycles(pvti0, tsc);
+
+		if (m2 - m1 < tight_best_spread) {
+			tight_best_spread = m2 - m1;
+			tight_mono_lo = m1;
+			tight_mono_hi = m2;
+			tight_kvm = clk;
+		}
+	}
+	pr_info("  Tight ABA spread: %" PRIu64 " ns (best of 3)\n", tight_best_spread);
+
+	s64 tight_expected_lo = delta_before_lo + tsc_ofs_delta_ns;
+	s64 tight_expected_hi = delta_before_hi + tsc_ofs_delta_ns;
+	s64 tight_actual_lo = (s64)(tight_kvm - tight_mono_hi);
+	s64 tight_actual_hi = (s64)(tight_kvm - tight_mono_lo);
+	s64 tight_actual_mid = ((tight_actual_lo + tight_actual_hi) / 2) - delta_before;
+	s64 tight_actual_err = (s64)(tight_mono_hi - tight_mono_lo) / 2;
+
+	pr_info("  Tight kvmclock-mono shift: expected %" PRId64
+		" ns (±%" PRId64 "), measured %" PRId64 " ns (±%" PRId64 ")\n",
+		expected_mid, expected_err, tight_actual_mid, tight_actual_err);
+
+	TEST_ASSERT(tight_expected_hi >= tight_actual_lo &&
+		    tight_expected_lo <= tight_actual_hi,
+		    "Tight ABA ranges don't overlap");
+
+	kvm_vm_free(vm);
+	pr_info("PASS: kvmclock offset matches TSC delta from CLOCK_REALTIME"
+		" (%" PRId64 " ns) within ABA bounds\n", tsc_ofs_delta_ns);
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479219.1683224 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4X-00076q-3j; Mon, 09 Nov 2026 01:21:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479219.1683224; Mon, 09 Nov 2026 01:21:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4W-00074y-SO; Mon, 09 Nov 2026 01:21:20 +0000
Received: by outflank-mailman (input) for mailman id 1479219;
 Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4T-0006xk-BF
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:18 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4S-009V22-Kz; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11fc3-2eae-0a2a0a5409dd-0a2a4504ceb4-40
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-b57f-0a2a45040019-5a9b3222c31e-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007Pw6-0wab; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKUx-0Bmc;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=9xDfu8Ojz205IpnlCE1EQapOMUr1A9VRl7iiM94PLJk=; b=pjAb4njAzYV4ChfITlxraQAAEe
	UmaqXTAdDNDRuGYwR+oUOPp1YQhHWS0R6skFXJRbAIhMhd6nwYAVjxOLuCnxgHhRIgJsfjqWut16r
	9So/ig6i7x1GgpDvs+paMb7F5lGvhazmtb/8znDz26Hj8MsttuXX1c/ygMJX6lanwnQQRE/lGHIqx
	F+sTqJ47ZiLtjbOZ5dEKgq6IqYUcvYNHO94CuUb0NbtA7hpdprMPtS0+UBw6U1M9K8xMs8/tgcVPS
	6JdbuRaN6LGRp2pxyIBj1n6ebU4KOfBzCXrYy/Y3CuehlrRuLsKb2IPTRJ7sxb1GdWD2P4pvwOgbr
	XQsUWbqg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 14/24] KVM: x86: Add KVM_[GS]ET_CLOCK_GUEST for accurate KVM clock migration
Date: Sun,  8 Nov 2026 17:21:00 -0800
Message-ID: <20261109012112.3415328-15-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ebf023/1794187276-508D9B50-16DE980E/0/0
X-purgate-type: clean
X-purgate-size: 15055

From: Jack Allister <jalliste@amazon.com>

In the common case (where kvm->arch.use_master_clock is true), the KVM
clock is defined as a simple arithmetic function of the guest TSC, based
on a reference point stored in kvm->arch.master_kernel_ns and
kvm->arch.master_cycle_now.

The existing KVM_[GS]ET_CLOCK functionality does not allow for this
relationship to be precisely saved and restored by userspace. All it can
currently do is set the KVM clock at a given UTC reference time, which
is necessarily imprecise.

So on live update, the guest TSC can remain cycle accurate at precisely
the same offset from the host TSC, but there is no way for userspace to
restore the KVM clock accurately.

Even on live migration to a new host, where the accuracy of the guest
time-keeping is fundamentally limited by the accuracy of wallclock
synchronization between the source and destination hosts, the clock jump
experienced by the guest's TSC and its KVM clock should at least be
*consistent*. Even when the guest TSC suffers a discontinuity, its KVM
clock should still remain the *same* arithmetic function of the guest
TSC, and not suffer an *additional* discontinuity.

To allow for accurate migration of the KVM clock, add per-vCPU ioctls
which save and restore the actual PV clock info in
pvclock_vcpu_time_info.

The restoration in KVM_SET_CLOCK_GUEST works by creating a new reference
point in time just as kvm_update_masterclock() does, and calculating the
corresponding guest TSC value. This guest TSC value is then passed
through the user-provided pvclock structure to generate the *intended*
KVM clock value at that point in time, and through the *actual* KVM
clock calculation. Then kvm->arch.kvmclock_offset is adjusted to
eliminate the difference.

Where kvm->arch.use_master_clock is false (because the host TSC is
unreliable, or the guest TSCs are configured strangely), the KVM clock
is *not* defined as a function of the guest TSC so KVM_GET_CLOCK_GUEST
returns an error. In this case, as documented, userspace shall use the
legacy KVM_GET_CLOCK ioctl. The loss of precision is acceptable in this
case since the clocks are imprecise in this mode anyway.

On *restoration*, if kvm->arch.use_master_clock is false, an error is
returned for similar reasons and userspace shall fall back to using
KVM_SET_CLOCK. This does mean that, as documented, userspace needs to
use *both* KVM_GET_CLOCK_GUEST and KVM_GET_CLOCK and send both results
with the migration data (unless the intent is to refuse to resume on a
host with bad TSC).

Both ioctls return -ENODATA when the KVM clock is not in master clock
mode. That covers the case of an unknown TSC frequency on the current
CPU (possible only on hosts without CONSTANT_TSC): the masterclock
update performed under the same IRQs-off critical section disables
master clock mode when the frequency reads as zero. Advertise the
ioctls with KVM_CAP_CLOCK_GUEST so that userspace need not probe for
them.

Co-developed-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Jack Allister <jalliste@amazon.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Cc: Dongli Zhang <dongli.zhang@oracle.com>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
---
 Documentation/virt/kvm/api.rst  |  53 +++++++++
 arch/x86/include/uapi/asm/kvm.h |   1 +
 arch/x86/kvm/x86.c              | 202 ++++++++++++++++++++++++++++++++
 include/uapi/linux/kvm.h        |   4 +
 4 files changed, 260 insertions(+)

diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index 9487afc4431f..44c6152c5768 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -6767,6 +6767,59 @@ if the guest_memfd memory was pinned in IOMMU page tables.
 
 See also: :ref:`KVM_SET_MEMORY_ATTRIBUTES`.
 
+4.147 KVM_GET_CLOCK_GUEST
+----------------------------
+
+:Capability: KVM_CAP_CLOCK_GUEST
+:Architectures: x86_64
+:Type: vcpu ioctl
+:Parameters: struct pvclock_vcpu_time_info (out)
+:Returns: 0 on success, <0 on error
+
+Retrieves the current time information structure used for KVM/PV clocks,
+in precisely the form advertised to the guest vCPU, which gives parameters
+for a direct conversion from a guest TSC value to nanoseconds.
+
+The structure is in terms of the given vCPU's TSC. It must be passed back
+to KVM_SET_CLOCK_GUEST on the *same* vCPU (on the destination VM, for
+migration); vCPUs may legitimately have different TSC offsets, which would
+otherwise be silently folded into the restored KVM clock.
+
+When the KVM clock is not in "master clock" mode, for example because the
+host TSC is unreliable or the guest TSCs are oddly configured, the KVM clock
+is actually defined by the host CLOCK_MONOTONIC_RAW instead of the guest TSC.
+In this case, the KVM_GET_CLOCK_GUEST ioctl returns -ENODATA.
+
+4.148 KVM_SET_CLOCK_GUEST
+----------------------------
+
+:Capability: KVM_CAP_CLOCK_GUEST
+:Architectures: x86_64
+:Type: vcpu ioctl
+:Parameters: struct pvclock_vcpu_time_info (in)
+:Returns: 0 on success, <0 on error
+
+Sets the KVM clock (for the whole VM) in terms of the vCPU TSC, using the
+pvclock structure as returned by KVM_GET_CLOCK_GUEST. This allows the precise
+arithmetic relationship between guest TSC and KVM clock to be preserved by
+userspace across migration.
+
+When the KVM clock is not in "master clock" mode, and the KVM clock is actually
+defined by the host CLOCK_MONOTONIC_RAW, this ioctl returns -ENODATA. Userspace
+may choose to set the clock using the less precise KVM_SET_CLOCK ioctl, or may
+choose to fail, denying migration to a host whose TSC is misbehaving. A host
+whose CPU TSC frequency is unknown (only possible without
+X86_FEATURE_CONSTANT_TSC) is never in "master clock" mode, so it also returns
+-ENODATA.
+
+If the mul/shift fields of the provided pvclock structure encode a TSC
+frequency inconsistent with the vCPU's actual TSC frequency, this ioctl
+returns -ERANGE.
+
+If the vCPU's current TSC is behind the tsc_timestamp in the provided
+structure, this ioctl returns -EINVAL. Restore the guest TSC (which the
+documented migration procedure keeps monotonic) before invoking it.
+
 .. _kvm_run:
 
 5. The kvm_run structure
diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
index 1585ec804066..9e3cdc3adb65 100644
--- a/arch/x86/include/uapi/asm/kvm.h
+++ b/arch/x86/include/uapi/asm/kvm.h
@@ -12,6 +12,7 @@
 #include <linux/types.h>
 #include <linux/ioctl.h>
 #include <linux/stddef.h>
+#include <asm/pvclock-abi.h>
 
 #define KVM_PIO_PAGE_OFFSET 1
 #define KVM_COALESCED_MMIO_PAGE_OFFSET 2
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4afafe7ed8b8..00e6b2bdaffb 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2542,6 +2542,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 	case KVM_CAP_MEMORY_FAULT_INFO:
 	case KVM_CAP_X86_GUEST_MODE:
 	case KVM_CAP_ONE_REG:
+#ifdef CONFIG_X86_64
+	case KVM_CAP_CLOCK_GUEST:
+#endif
 		r = 1;
 		break;
 	case KVM_CAP_PRE_FAULT_MEMORY:
@@ -3674,6 +3677,197 @@ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
 	}
 }
 
+#ifdef CONFIG_X86_64
+static int kvm_vcpu_ioctl_get_clock_guest(struct kvm_vcpu *v, void __user *argp)
+{
+	struct pvclock_vcpu_time_info hv_clock = {};
+	struct kvm_arch *ka = &v->kvm->arch;
+	bool use_master_clock;
+	unsigned int seq;
+
+	/*
+	 * Construct the pvclock purely from the master clock state. The
+	 * master mul/shift are computed for the guest TSC frequency, which
+	 * in master clock mode is the frequency of every vCPU; only the
+	 * tsc_timestamp is per-vCPU, translating the master snapshot into
+	 * this vCPU's TSC domain via its scaling ratio and offset.
+	 *
+	 * Note, this deliberately does NOT invoke kvm_guest_time_update(),
+	 * which would write the guest's pvclock pages: dirtying guest
+	 * memory after the final KVM_RUN would break post-copy migration
+	 * flows. The pvclock returned here describes the same clock as the
+	 * guest-visible copy (the same linear function of the guest TSC),
+	 * anchored at the current master clock snapshot.
+	 *
+	 * Translating the snapshot through the vCPU's *current* scaling
+	 * ratio and offset is correct even if they changed after the
+	 * snapshot was taken: the snapshot anchors a host TSC value, not
+	 * a guest one. A frequency change whose masterclock update is
+	 * still pending does leave stale mul/shift here, but that is the
+	 * paused-VM migration path reading a frequency userspace itself
+	 * has just changed — and the result fails safe, as the same-vCPU
+	 * KVM_SET_CLOCK_GUEST on the destination rejects a mul/shift
+	 * inconsistent with the vCPU's frequency with -ERANGE.
+	 */
+	do {
+		seq = read_seqcount_begin(&ka->pvclock_sc);
+
+		use_master_clock = ka->use_master_clock;
+		if (!use_master_clock)
+			continue;
+
+		hv_clock.tsc_timestamp = kvm_read_l1_tsc(v, ka->master_cycle_now);
+		hv_clock.system_time = ka->master_kernel_ns + ka->kvmclock_offset;
+		hv_clock.tsc_shift = ka->master_tsc_shift;
+		hv_clock.tsc_to_system_mul = ka->master_tsc_mul;
+		hv_clock.flags = READ_ONCE(ka->all_vcpus_matched_tsc) ?
+				 PVCLOCK_TSC_STABLE_BIT : 0;
+	} while (read_seqcount_retry(&ka->pvclock_sc, seq));
+
+	if (!use_master_clock)
+		return -ENODATA;
+
+	if (copy_to_user(argp, &hv_clock, sizeof(hv_clock)))
+		return -EFAULT;
+
+	return 0;
+}
+
+/*
+ * Reverse the calculation in the hv_clock definition.
+ *
+ * time_ns = ( (cycles << shift) * mul ) >> 32;
+ * (although shift can be negative, so that's bad C)
+ *
+ * So for a single second,
+ * NSEC_PER_SEC = ( ( FREQ_HZ << shift) * mul ) >> 32
+ * NSEC_PER_SEC << 32 = ( FREQ_HZ << shift ) * mul
+ * ( NSEC_PER_SEC << 32 ) / mul = FREQ_HZ << shift
+ * ( NSEC_PER_SEC << 32 ) / mul ) >> shift = FREQ_HZ
+ */
+static u64 hvclock_to_hz(u32 mul, s8 shift)
+{
+	u64 tm = NSEC_PER_SEC << 32;
+
+	/* Maximise precision. Shift left until the top bit is set */
+	tm <<= 2;
+	shift += 2;
+
+	/* While 'mul' is even, increase the shift *after* the division */
+	while (!(mul & 1)) {
+		shift++;
+		mul >>= 1;
+	}
+
+	tm /= mul;
+
+	if (shift >= 64)
+		return 0;
+	if (shift > 0)
+		return tm >> shift;
+
+	/*
+	 * A left shift can overflow for absurd user-supplied mul/shift
+	 * combinations; saturate (to a value which cannot itself overflow
+	 * the rounding in the caller's kHz conversion) so the frequency
+	 * check certainly rejects them.
+	 */
+	if (shift <= -64 || tm > (U64_MAX >> 1) >> -shift)
+		return U64_MAX >> 1;
+	return tm << -shift;
+}
+
+static int kvm_vcpu_ioctl_set_clock_guest(struct kvm_vcpu *v, void __user *argp)
+{
+	struct pvclock_vcpu_time_info user_hv_clock;
+	struct kvm *kvm = v->kvm;
+	struct kvm_arch *ka = &kvm->arch;
+	u64 curr_tsc_hz, user_tsc_hz;
+	u64 curr_tsc_khz, user_tsc_khz;
+	u64 user_clk_ns;
+	u64 guest_tsc;
+	int rc = 0;
+
+	if (copy_from_user(&user_hv_clock, argp, sizeof(user_hv_clock)))
+		return -EFAULT;
+
+	if (user_hv_clock.pad0 || user_hv_clock.pad[0] || user_hv_clock.pad[1])
+		return -EINVAL;
+
+	if (!user_hv_clock.tsc_to_system_mul)
+		return -EINVAL;
+
+	if (user_hv_clock.tsc_shift < -31 || user_hv_clock.tsc_shift > 31)
+		return -EINVAL;
+
+	user_tsc_hz = hvclock_to_hz(user_hv_clock.tsc_to_system_mul,
+				    user_hv_clock.tsc_shift);
+
+	kvm_hv_request_tsc_page_update(kvm);
+
+	/*
+	 * kvm_start_pvclock_update() takes tsc_write_lock and opens
+	 * the pvclock seqcount; kvm_end_pvclock_update() closes both.
+	 * All clock state modifications between them are atomic with
+	 * respect to readers in kvm_guest_time_update().
+	 */
+	kvm_start_pvclock_update(kvm);
+	pvclock_update_vm_gtod_copy(kvm);
+
+	if (!ka->use_master_clock) {
+		rc = -ENODATA;
+		goto out;
+	}
+
+	/*
+	 * Nonzero, or pvclock_update_vm_gtod_copy() — which read it on
+	 * this CPU, with interrupts still disabled — would have cleared
+	 * use_master_clock above.
+	 */
+	curr_tsc_hz = (u64)get_cpu_tsc_khz() * HZ_PER_KHZ;
+
+	if (kvm_caps.has_tsc_control)
+		curr_tsc_hz = kvm_scale_tsc(curr_tsc_hz,
+					    v->arch.l1_tsc_scaling_ratio);
+
+	/*
+	 * The mul/shift in the provided pvclock structure encode the guest
+	 * TSC frequency at which it was generated. Sanity-check that it is
+	 * consistent with this vCPU's effective TSC frequency, allowing a
+	 * discrepancy of 1 kHz either way since independently calibrated
+	 * hosts will not measure precisely the same value even for the
+	 * same nominal frequency. Compare in kHz: the reconstruction of
+	 * each side's frequency in Hz carries a few Hz of rounding, which
+	 * must not push two hosts calibrated exactly 1 kHz apart over the
+	 * line.
+	 */
+	user_tsc_khz = DIV_ROUND_CLOSEST_ULL(user_tsc_hz, HZ_PER_KHZ);
+	curr_tsc_khz = DIV_ROUND_CLOSEST_ULL(curr_tsc_hz, HZ_PER_KHZ);
+	if (user_tsc_khz + 1 < curr_tsc_khz ||
+	    user_tsc_khz > curr_tsc_khz + 1) {
+		rc = -ERANGE;
+		goto out;
+	}
+
+	/*
+	 * Calculate the guest TSC at the new reference point, and the
+	 * corresponding KVM clock value according to user_hv_clock.
+	 * Adjust kvmclock_offset so both definitions agree.
+	 */
+	guest_tsc = kvm_read_l1_tsc(v, ka->master_cycle_now);
+	if ((s64)(guest_tsc - user_hv_clock.tsc_timestamp) < 0) {
+		rc = -EINVAL;
+		goto out;
+	}
+	user_clk_ns = __pvclock_read_cycles(&user_hv_clock, guest_tsc);
+	ka->kvmclock_offset = user_clk_ns - ka->master_kernel_ns;
+
+out:
+	kvm_end_pvclock_update(kvm);
+	return rc;
+}
+#endif
+
 long kvm_arch_vcpu_ioctl(struct file *filp,
 			 unsigned int ioctl, unsigned long arg)
 {
@@ -4067,6 +4261,14 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
 		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
+#ifdef CONFIG_X86_64
+	case KVM_SET_CLOCK_GUEST:
+		r = kvm_vcpu_ioctl_set_clock_guest(vcpu, argp);
+		break;
+	case KVM_GET_CLOCK_GUEST:
+		r = kvm_vcpu_ioctl_get_clock_guest(vcpu, argp);
+		break;
+#endif
 #ifdef CONFIG_KVM_HYPERV
 	case KVM_GET_SUPPORTED_HV_CPUID:
 		r = kvm_ioctl_get_supported_hv_cpuid(vcpu, argp);
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 8dff2fc1972e..1349387cceb0 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1000,6 +1000,7 @@ struct kvm_enable_cap {
 #define KVM_CAP_PPC_COMPAT_CAPS 250
 #define KVM_CAP_ARM_PMU_V3_STRICT 251
 #define KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES 252
+#define KVM_CAP_CLOCK_GUEST 253
 
 struct kvm_irq_routing_irqchip {
 	__u32 irqchip;
@@ -1690,4 +1691,7 @@ struct kvm_pre_fault_memory {
 	__u64 padding[5];
 };
 
+#define KVM_SET_CLOCK_GUEST	_IOW(KVMIO, 0xd6, struct pvclock_vcpu_time_info)
+#define KVM_GET_CLOCK_GUEST	_IOR(KVMIO, 0xd7, struct pvclock_vcpu_time_info)
+
 #endif /* __LINUX_KVM_H */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479227.1683278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4b-0008IF-Br; Mon, 09 Nov 2026 01:21:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479227.1683278; Mon, 09 Nov 2026 01:21:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4a-0008E8-Ru; Mon, 09 Nov 2026 01:21:24 +0000
Received: by outflank-mailman (input) for mailman id 1479227;
 Mon, 09 Nov 2026 01:21:22 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4X-0007MR-Lx
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4X-002A54-2u; Mon, 09 Nov 2026 02:21:21 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af11f90-e002-0a2a0a5209dd-0a2a4501cc1a-34
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-5984-0a2a45010019-5a9b3222c45c-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4P-00000007PwH-25qN; Mon, 09 Nov 2026 01:21:13 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVN-1JiE;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=l1si1cKxVaPJRHhpJBL3f0tOHY9gzjDBCiBVwqvknmI=; b=usHHFyvGeqQQNxkwy6IqGIJ8fs
	6mW68ENAanocGojkU6IGi3WloM4RssPKSnQ/qKLAWABvQWA/XhBm60aM+EG6yqccaSP0kd9tqMTN1
	H92m9L86cjqpoxU/FF8DxyTabiDztB2+Dty026Cmj9h44sr1cxO5k9jlGyUU+9MqB8ODeRtN0fLOy
	kmznCUZ74jzAh6OdlT/k2f8fRanJ6Q+s9pmC10hI6X9wTkg26atP+mK3+ok/Tq4bGnIG5OUtmooT7
	gVnN6VdwPft/FNBIr7vy7JRLiYkGBF/eC63BmB0SrcXKPznhkvO/JsInatlu6OOelBWaB/r7aTG7S
	87siBtCw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 20/24] KVM: selftests: Add Xen runstate migration test
Date: Sun,  8 Nov 2026 17:21:06 -0800
Message-ID: <20261109012112.3415328-21-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1794187276-C4F47757-58590D83/0/0
X-purgate-type: clean
X-purgate-size: 10497

From: David Woodhouse <dwmw@amazon.co.uk>

Test that Xen runstate (steal time) is correctly accounted across a
simulated live migration using KVM_XEN_VCPU_ATTR and KVM_[GS]ET_CLOCK_GUEST.

The test simulates what a real VMM does during migration:
1. Creates a VM with Xen HVM config and runstate tracking
2. Runs the guest to accumulate some kvmclock time
3. Saves clock (KVM_GET_CLOCK_GUEST), TSC offset, and runstate
4. Marks the saved state as RUNSTATE_runnable (vCPU not running)
5. Destroys the source VM
6. Sleeps 10ms (simulating migration network transfer time)
7. Creates a new VM and restores all state precisely as saved
8. Runs the guest and verifies the migration gap appears as steal

The VM is placed in long mode explicitly (KVM_XEN_ATTR_TYPE_LONG_MODE)
so the kernel writes the 64-bit runstate layout; nothing in this test
writes the hypercall-page MSR, which is what would otherwise latch the
mode from the guest's EFER.

The guest TSC is transferred via the KVM_VCPU_TSC_OFFSET attribute. As
the "migration" is to a new VM on the same host, restoring the same
offset makes the guest TSC continue uninterrupted across the gap, so the
restored pvclock yields a kvmclock which has kept running too. That is
what makes the migration gap visible: the destination kvmclock is ahead
of the saved state_entry_time by (at least) the gap duration, rather
than restarting from the destination VM's creation time.

The kernel accounts the gap because: on vcpu_load, it transitions from
RUNSTATE_runnable to RUNSTATE_running, computing delta = kvmclock_now -
state_entry_time. Since kvmclock has advanced past the saved entry time
(real time elapsed during migration), the delta is added to time_runnable.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/x86/xen_migration_test.c    | 222 ++++++++++++++++++
 2 files changed, 223 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/xen_migration_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 79d26de18bf3..1edc78845fd3 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -153,6 +153,7 @@ TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
 TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
+TEST_GEN_PROGS_x86 += x86/xen_migration_test
 TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
 TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
 TEST_GEN_PROGS_x86 += x86/sev_dbg_test
diff --git a/tools/testing/selftests/kvm/x86/xen_migration_test.c b/tools/testing/selftests/kvm/x86/xen_migration_test.c
new file mode 100644
index 000000000000..564781db3da2
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/xen_migration_test.c
@@ -0,0 +1,222 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test Xen runstate (steal time) preservation across simulated migration.
+ *
+ * Verifies that the kernel correctly accounts the migration gap as
+ * steal time (runnable) when runstate data is saved and restored
+ * precisely, but real time elapses during the migration.
+ *
+ * The key insight: userspace saves the runstate with state=RUNSTATE_runnable
+ * (the vCPU is not running during migration). On restore, the kernel sees
+ * that kvmclock has advanced past state_entry_time, and accounts the
+ * difference as time spent in the runnable state.
+ */
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+#define SHINFO_GPA	0xc0000000ULL
+#define RUNSTATE_GPA	(SHINFO_GPA + 0x1000)
+
+#define RUNSTATE_running  0
+#define RUNSTATE_runnable 1
+#define RUNSTATE_blocked  2
+#define RUNSTATE_offline  3
+
+/*
+ * The 64-bit (long mode) layout: 'state' is followed by 4 bytes of
+ * padding so state_entry_time is naturally aligned. The VM is placed
+ * in long mode explicitly below; without that, KVM would latch 32-bit
+ * mode (no hypercall-page write ever happens here to latch it from
+ * EFER) and write the packed compat layout instead.
+ */
+struct vcpu_runstate_info {
+	u32 state;
+	u64 state_entry_time;
+	u64 time[4];
+};
+
+static void guest_code(void)
+{
+	volatile struct vcpu_runstate_info *rs =
+		(void *)(unsigned long)RUNSTATE_GPA;
+
+	/* Report runstate times — no need to enable kvmclock MSR,
+	 * the kernel writes runstate using its internal kvmclock. */
+	GUEST_SYNC_ARGS(0, rs->time[RUNSTATE_runnable],
+			rs->time[RUNSTATE_running], 0, 0);
+}
+
+static struct kvm_vm *create_xen_vm(struct kvm_vcpu **vcpu)
+{
+	struct kvm_vm *vm;
+	int xen_caps;
+
+	vm = vm_create_with_one_vcpu(vcpu, guest_code);
+
+	xen_caps = kvm_check_cap(KVM_CAP_XEN_HVM);
+	TEST_REQUIRE(xen_caps & KVM_XEN_HVM_CONFIG_SHARED_INFO);
+	TEST_REQUIRE(xen_caps & KVM_XEN_HVM_CONFIG_RUNSTATE);
+
+	/* Map pages */
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    SHINFO_GPA, 1, 2, 0);
+	virt_map(vm, SHINFO_GPA, SHINFO_GPA, 2);
+
+	/* Enable Xen HVM with MSR interception (enables runstate tracking) */
+	struct kvm_xen_hvm_config cfg = {
+		.flags = KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL,
+		.msr = 0x40000000,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_CONFIG, &cfg);
+
+	/* The guest runs in long mode; make the runstate layout match. */
+	struct kvm_xen_hvm_attr lm = {
+		.type = KVM_XEN_ATTR_TYPE_LONG_MODE,
+		.u.long_mode = 1,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &lm);
+
+	/* Set shared_info */
+	struct kvm_xen_hvm_attr ha = {
+		.type = KVM_XEN_ATTR_TYPE_SHARED_INFO,
+		.u.shared_info.gfn = SHINFO_GPA >> 12,
+	};
+	vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &ha);
+
+	/* Set runstate address */
+	struct kvm_xen_vcpu_attr rs_addr = {
+		.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR,
+		.u.gpa = RUNSTATE_GPA,
+	};
+	vcpu_ioctl(*vcpu, KVM_XEN_VCPU_SET_ATTR, &rs_addr);
+
+	return vm;
+}
+
+int main(void)
+{
+	struct pvclock_vcpu_time_info pvti;
+	struct kvm_xen_vcpu_attr runstate_save;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	struct ucall uc;
+	u64 tsc_offset;
+	int ret;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	/* === SOURCE SIDE === */
+	pr_info("=== Source: create VM and run guest ===\n");
+	vm = create_xen_vm(&vcpu);
+
+	/* Run guest once to accumulate some runstate time */
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+
+	pr_info("  Guest sees: runnable=%" PRIu64 " running=%" PRIu64 "\n",
+		uc.args[2], uc.args[3]);
+
+	/* Save clock state */
+	vcpu_get_clock_guest(vcpu, &pvti);
+
+	/*
+	 * Save the guest TSC offset. This test migrates to a new VM on
+	 * the same host, so restoring the same offset makes the guest
+	 * TSC continue uninterrupted across the migration gap, and the
+	 * restored pvclock (KVM_SET_CLOCK_GUEST) then yields a kvmclock
+	 * which has also kept running across the gap. (A real migration
+	 * to a different host would compute the destination offset from
+	 * KVM_GET_CLOCK's {host_tsc, realtime} pair as described in
+	 * Documentation/virt/kvm/devices/vcpu.rst.)
+	 */
+	tsc_offset = vcpu_get_tsc_offset(vcpu);
+
+	/* Save runstate — the vCPU is now "runnable" (not running) */
+	runstate_save.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA;
+	vcpu_ioctl(vcpu, KVM_XEN_VCPU_GET_ATTR, &runstate_save);
+
+	/*
+	 * Transition to runnable state before saving — the vCPU is
+	 * not running during migration.
+	 */
+	runstate_save.u.runstate.state = RUNSTATE_runnable;
+
+	pr_info("  Saved runstate: running=%" PRIu64 " runnable=%" PRIu64
+		" entry=%" PRIu64 "\n",
+		(u64)runstate_save.u.runstate.time_running,
+		(u64)runstate_save.u.runstate.time_runnable,
+		(u64)runstate_save.u.runstate.state_entry_time);
+
+	u64 saved_runnable = runstate_save.u.runstate.time_runnable;
+
+	kvm_vm_free(vm);
+
+	/* === MIGRATION GAP === */
+	pr_info("=== Simulating migration (sleeping 10ms) ===\n");
+	usleep(10000);
+
+	/* === DESTINATION SIDE === */
+	pr_info("=== Destination: create new VM and restore ===\n");
+	vm = create_xen_vm(&vcpu);
+
+	/* Restore the guest TSC offset (same host: TSC continues) */
+	vcpu_set_tsc_offset(vcpu, tsc_offset);
+
+	/* Restore clock — kvmclock will now be ~10ms ahead of the snapshot */
+	vcpu_set_clock_guest(vcpu, &pvti);
+
+	/* Restore runstate exactly as saved (state=runnable) */
+	runstate_save.type = KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA;
+	ret = __vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &runstate_save);
+	TEST_ASSERT(!ret, "Restore runstate failed: errno %d", errno);
+
+	/*
+	 * Run the guest. When the vCPU enters vcpu_run, the kernel
+	 * transitions from RUNSTATE_runnable to RUNSTATE_running.
+	 * It computes: delta = kvmclock_now - state_entry_time
+	 * This delta (which includes the migration gap) is added to
+	 * time_runnable (steal time).
+	 */
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	TEST_ASSERT_EQ(get_ucall(vcpu, &uc), UCALL_SYNC);
+
+	u64 guest_runnable = uc.args[2];
+	u64 guest_running = uc.args[3];
+
+	pr_info("  Guest sees: runnable=%" PRIu64 " running=%" PRIu64 "\n",
+		guest_runnable, guest_running);
+
+	u64 steal_increase = guest_runnable - saved_runnable;
+	pr_info("  Steal time increase: %" PRIu64 " ns (migration gap)\n",
+		steal_increase);
+
+	/*
+	 * The steal time increase should be at least 10ms (the sleep).
+	 * The actual gap runs from the source's state_entry_time to the
+	 * destination's kvmclock "now" at vcpu_load time, which includes
+	 * everything from the source guest's last runstate transition
+	 * through VM teardown and re-creation — so the upper bound exists
+	 * only to catch wild miscalculation (e.g. an unscaled TSC delta),
+	 * and is deliberately generous for slow or loaded hosts.
+	 */
+	TEST_ASSERT(steal_increase >= 10000000ULL &&
+		    steal_increase < 60000000000ULL,
+		    "Steal time increase %" PRIu64 " ns not in expected range "
+		    "[10ms, 60s]", steal_increase);
+
+	kvm_vm_free(vm);
+	pr_info("PASS: Migration gap correctly accounted as steal time\n");
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479228.1683300 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4d-0000PH-6w; Mon, 09 Nov 2026 01:21:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479228.1683300; Mon, 09 Nov 2026 01:21:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4c-0000Ni-OY; Mon, 09 Nov 2026 01:21:26 +0000
Received: by outflank-mailman (input) for mailman id 1479228;
 Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007sE-DC
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Y-009V9o-Pt; Mon, 09 Nov 2026 02:21:22 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fa1-2eae-0a2a0a5409dd-0a2a4506e03c-34
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:22 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af12012-195a-0a2a45060019-5a9b5cc7c29e-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:22 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4S-00000006AYL-023G; Mon, 09 Nov 2026 01:21:16 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVf-21Al;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=uvJs1XZO+BRbpw9Q5qKzk8gQ53RD8ANqfHZjGN9ZqsM=; b=KFE5rFbR/Cl1WJCZCdAJq9H/Xq
	zzMY6MC0J8v4NB/ROVzbHuk2MJ3uKnfjYYff+Yq11NIU/mcXm8IGxEN1zGo4xDZtptr6noN/PIjP8
	rzrs4JdF3H0MgzWP2TIYVqKeMUPR6gCxrv+/S6KH59WOYM0gc2LU4wDgrgxQuCpqfI8vgXwXs0Dhy
	1w1LzFOamLvRuoFj1CL9PDj7BfMocxCUbb073vgpvFcd3PB26vBn2EmeZISNodstcEl1YBzjLiAoB
	iS0lCTFm6A3NnffH429VgKVEI1SD0NXXab3f6Zl2dtwJm/Cym1E/c6zqaGTyn+tzcU1AGOBswpD8l
	m6THnrgg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 24/24] KVM: x86: Keep master clock for guests using legacy MSR_KVM_SYSTEM_TIME
Date: Sun,  8 Nov 2026 17:21:10 -0800
Message-ID: <20261109012112.3415328-25-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-16d1c6/1794187282-FE27077B-350E43D5/0/0
X-purgate-type: clean
X-purgate-size: 8184

From: David Woodhouse <dwmw@amazon.co.uk>

Commit 54750f2cf042 ("KVM: x86: workaround SuSE's 2.6.16 pvclock vs
masterclock issue") disables the master clock entirely for any guest
whose boot vCPU uses the legacy MSR. SUSE's 2.6.16 kernel treats a
pvclock tsc_timestamp more than 1/5 jiffie behind the TSC as suspect
and re-requests the time by rewriting the MSR; against the master
clock's long-lived reference point the delta never shrinks, so it
re-requests in a loop and fails to boot.

Satisfy the guest's freshness heuristic instead of capitulating to it:
a guest write to the legacy MSR now requests a masterclock update,
sliding the reference point forward before the pvclock is written (the
masterclock request is serviced before KVM_REQ_CLOCK_UPDATE on the
same guest entry). The re-requested pvclock then carries a recent
tsc_timestamp, the delta is back under the threshold, and the 2.6.16
heuristic is content. The reference point moving is invisible to any
correct guest — the clock remains the same function of the guest TSC.

A guest hammering the legacy MSR now forces repeated VM-wide
masterclock updates, but only its own VM's: a guest has always been
able to burn its own cycles. Re-anchoring just the writing vCPU's
pvclock along the masterclock line would avoid even that, but isn't
worth the extra plumbing for a 2006 guest kernel.

This removes the last way a guest could force the master clock off.
The remaining disable, backwards_tsc_observed, is the host's own
doing. The pvclock_test selftest grows a legacy-MSR case proving the
master clock survives and the rewritten pvclock is fresh.

Not tested against a real SLES10 image; the behaviour it demands is
reconstructed from the guest comment quoted in 54750f2cf042.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/include/asm/kvm_host.h               |  1 -
 arch/x86/kvm/msrs.c                           | 26 ++++----
 arch/x86/kvm/x86.c                            | 15 +----
 .../testing/selftests/kvm/x86/pvclock_test.c  | 63 +++++++++++++++++++
 4 files changed, 77 insertions(+), 28 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 8af808fbf6ce..59260f087654 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1272,7 +1272,6 @@ struct kvm_arch {
 #endif
 
 	bool backwards_tsc_observed;
-	bool boot_vcpu_runs_old_kvmclock;
 	u32 bsp_vcpu_id;
 
 	u64 disabled_quirks;
diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index d07831b5dfb8..94cd4d73689a 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1275,19 +1275,19 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock, int sec_hi_o
 static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time,
 				  bool old_msr, bool host_initiated)
 {
-	struct kvm_arch *ka = &vcpu->kvm->arch;
-
-	if (vcpu->vcpu_id == 0 && !host_initiated) {
-		/*
-		 * Store the flag before requesting the masterclock update:
-		 * the update may now be performed by another vCPU (which
-		 * consumes this request), and it must observe the new value.
-		 */
-		if (ka->boot_vcpu_runs_old_kvmclock != old_msr) {
-			ka->boot_vcpu_runs_old_kvmclock = old_msr;
-			kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
-		}
-	}
+	/*
+	 * Slide the master clock reference point forward, so that the
+	 * pvclock written below carries a recent tsc_timestamp. SUSE's
+	 * 2.6.16 kernel (the only known user of the legacy MSR with a
+	 * reason to care) re-requests the time by rewriting this MSR
+	 * whenever tsc_timestamp falls more than 1/5 jiffie behind the
+	 * TSC, and would livelock against a fixed reference point; each
+	 * rewrite now genuinely freshens it. A write with the enable
+	 * bit clear deactivates the pvclock; there is nothing to
+	 * freshen.
+	 */
+	if (old_msr && !host_initiated && (system_time & 1))
+		kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
 
 	vcpu->arch.time = system_time;
 
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index de3b5086f17c..2136c1f68032 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1144,21 +1144,8 @@ static bool kvm_use_master_clock(struct kvm *kvm)
 {
 	struct kvm_arch *ka = &kvm->arch;
 
-	/*
-	 * The 'old kvmclock' check is a workaround (from 2015) for a
-	 * SUSE 2.6.16 kernel that didn't boot if the system_time in
-	 * its kvmclock was too far behind the current time. So the
-	 * mode of just setting the reference point and allowing time
-	 * to proceed linearly from there makes it fail to boot.
-	 * Despite that being kind of the *point* of the way the clock
-	 * is exposed to the guest. By coincidence, the offending
-	 * kernels used the old MSR_KVM_SYSTEM_TIME, which was moved
-	 * only because it resided in the wrong number range. So the
-	 * workaround is activated for *all* guests using the old MSR.
-	 */
 	return ka->all_vcpus_matched_freq &&
-		!ka->backwards_tsc_observed &&
-		!ka->boot_vcpu_runs_old_kvmclock;
+		!ka->backwards_tsc_observed;
 }
 
 static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
diff --git a/tools/testing/selftests/kvm/x86/pvclock_test.c b/tools/testing/selftests/kvm/x86/pvclock_test.c
index 039a2b802d84..1599fb0c7275 100644
--- a/tools/testing/selftests/kvm/x86/pvclock_test.c
+++ b/tools/testing/selftests/kvm/x86/pvclock_test.c
@@ -213,6 +213,8 @@ static void run_at_frequency(u64 tsc_khz, unsigned int sleep_sec)
 
 static void test_tsc_stable_bit(void);
 static void test_clock_guest_with_offsets(void);
+static void test_legacy_msr(void);
+static void run_vcpu_once(struct kvm_vcpu *vcpu);
 
 static void usage(const char *name)
 {
@@ -273,10 +275,71 @@ int main(int argc, char *argv[])
 
 	test_tsc_stable_bit();
 	test_clock_guest_with_offsets();
+	test_legacy_msr();
 
 	return 0;
 }
 
+static void guest_code_legacy_msr(void)
+{
+	wrmsr(MSR_KVM_SYSTEM_TIME, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	GUEST_SYNC(0);
+	/* Re-request the time, as SUSE's 2.6.16 kernel would. */
+	wrmsr(MSR_KVM_SYSTEM_TIME, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	GUEST_SYNC(1);
+}
+
+/*
+ * A guest using the legacy MSR_KVM_SYSTEM_TIME must no longer lose the
+ * master clock, and rewriting the MSR must slide the reference point
+ * forward so the pvclock's tsc_timestamp is recent — that freshness is
+ * what SUSE's 2.6.16 kernel demands instead of tolerating a fixed
+ * reference point.
+ */
+static void test_legacy_msr(void)
+{
+	struct pvclock_vcpu_time_info *pvti;
+	struct kvm_clock_data clock;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	u64 tsc_now, age_limit;
+
+	pr_info("Testing the legacy MSR_KVM_SYSTEM_TIME\n");
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code_legacy_msr);
+	configure_pvclock(vm);
+
+	run_vcpu_once(vcpu);
+	vm_ioctl(vm, KVM_GET_CLOCK, &clock);
+	TEST_ASSERT(clock.flags & KVM_CLOCK_TSC_STABLE,
+		    "Legacy MSR_KVM_SYSTEM_TIME should not disable the master clock");
+
+	/* Age the master clock reference point, then re-request. */
+	usleep(300 * 1000);
+	run_vcpu_once(vcpu);
+
+	pvti = addr_gpa2hva(vm, KVMCLOCK_GPA);
+	tsc_now = vcpu_get_msr(vcpu, MSR_IA32_TSC);
+
+	/*
+	 * The rewrite slid the reference point, so the pvclock must be
+	 * anchored after the 300ms sleep: allow 250ms of slack for the
+	 * ioctls around it. SUSE's real threshold was 1/5 jiffie, but
+	 * asserting that tightly would flake on a loaded host.
+	 */
+	age_limit = (u64)__vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL) * 250;
+	TEST_ASSERT(tsc_now - pvti->tsc_timestamp < age_limit,
+		    "pvclock tsc_timestamp should be fresh after legacy MSR rewrite (age %llu cycles, limit %llu)",
+		    (unsigned long long)(tsc_now - pvti->tsc_timestamp),
+		    (unsigned long long)age_limit);
+
+	vm_ioctl(vm, KVM_GET_CLOCK, &clock);
+	TEST_ASSERT(clock.flags & KVM_CLOCK_TSC_STABLE,
+		    "Master clock should survive a legacy MSR rewrite");
+
+	kvm_vm_free(vm);
+}
+
 static volatile u32 vcpu_counter;
 static void guest_code_stable_bit(void)
 {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479225.1683272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4a-000891-Lk; Mon, 09 Nov 2026 01:21:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479225.1683272; Mon, 09 Nov 2026 01:21:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4Z-00087i-UW; Mon, 09 Nov 2026 01:21:23 +0000
Received: by outflank-mailman (input) for mailman id 1479225;
 Mon, 09 Nov 2026 01:21:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 1xQE4X-0007DM-Bd
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4W-009V22-OS; Mon, 09 Nov 2026 02:21:20 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af12009-2eae-0a2a0a5409dd-0a2a450bb5dc-2
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:16 +0100
Received: from [90.155.50.34] (helo=casper.infradead.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+a92e0821319b6b3898f8+8478+infradead.org+dwmw2@casper.srs.infradead.org>)
 id 6af1200b-b7e8-0a2a450b0019-5a9b3222dea8-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:15 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4O-00000007Pvo-3MrP; Mon, 09 Nov 2026 01:21:12 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKU4-1ax4;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:
	Content-ID:Content-Description:In-Reply-To:References;
	bh=2JUWpAXehAdk2sueW9eETpGmCfDkYuUrUfomdwHxtKQ=; b=Q0PHCfElb3strszBz45LigVCIT
	3UJqLf36BDZ68nh49TcsICeTQWHXRUMLyJAUrFvBdyGpLMmye0vYT5823ikHuDd4C8a+0UUWULOeK
	wfS2yCD0A3dR9CSH7HNnTvR5mRA5HunaAJJfn/mF9MVloFyXqre1okr4OEYf0gO/5jycFCr9FIqK3
	VBvl72tQrOIHy/wpiDw24NQrNn6NvMusETpowpWC17V0n0uWw5/blJQa1B3ecQGVcYQPJ41WFh9d9
	b8EKm3gCZ4VjHF6EUMJgfAofZvoldwMH3n1UxFNIaGVYn+gh63I/aiWVamR0naPTLZahCVYIqr16q
	VLNhrigQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 00/24] KVM: x86: Cleaning up the KVM clock mess, part 2
Date: Sun,  8 Nov 2026 17:20:46 -0800
Message-ID: <20261109012112.3415328-1-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-42698a/1794187276-A90CD9EA-B1BCCA81/0/0
X-purgate-type: clean
X-purgate-size: 7749

From: David Woodhouse <dwmw@amazon.co.uk>

I love it when sashiko-bot finds things that my own local sashiko run didn't.

This is the second half of the KVM clock series which has been churning
since about 2024. The first half¹ is upstream as of 7.4-rc1 (yay!).  This is
the remainder — the masterclock overhaul, and new API for fixing migration.

In v12 I've finally removed the last reason why a *guest* can force the KVM
clock out of masterclock mode (by using the old SYSTEM_TIME MSR). Even if we
do still care about that SUSE kernel from 2015, we can satisfy it just by
updating the master clock when it rewrites the MSR.

Tree: https://git.infradead.org/?p=users/dwmw2/linux.git;a=shortlog;h=refs/heads/kvmclock12

Since v11², fixing what the on-list review found, and more that arose out of
that:

KVM_SET_TSC_KHZ:
 • Synchronizing during vCPU creation, before the vCPU is counted in
   online_vcpus, corrupted the VM-wide matching state.
 • Because the user_set_tsc flag was VM-wide, restoring one vCPU's TSC made
   a sibling's *unrestored* value be preserved across a frequency change.
 • Time spent in the ioctl between sampling the guest TSC and reinstalling
   it was silently subtracted from the vCPU's clock.
 • Setting the unchanged frequency perturbed the generation tracking, and a
   failed call committed the rejected frequency anyway.
 • An above-host-rate frequency on scaling-less hardware left the vCPU in
   catchup mode forever.

The master clock:
 • Making the first vCPU match the TSC generation established at VM
   creation was a silent guest-visible change (its TSC became the cycles
   elapsed since KVM_CREATE_VM), and handed it a stale offset if the host
   suspended while the VM had no vCPUs.
 • KVM_GET_CLOCK trusted a master snapshot which nothing refreshes for a
   VM with no vCPUs across a host suspend, returning a discontinuity
   flagged KVM_CLOCK_TSC_STABLE.
 • A TSC synchronization which changed the vCPU's offset left the guest's
   pvclock unrefreshed, now that offset changes no longer turn the master
   clock off.
 • When the last vCPU reached a new common frequency, nothing refreshed
   the masterclock scaling factors.
 • A pending masterclock update on a newly created vCPU wasn't serviced
   until it first ran, and a vCPU whose creation was aborted part-way
   stayed counted as matched forever.
 • Guests using the legacy MSR_KVM_SYSTEM_TIME lost the master clock
   entirely — the 2015 workaround for SUSE's 2.6.16 freshness heuristic,
   which is better satisfied by sliding the reference point forward when
   the legacy MSR is rewritten (new patch 24).

KVM_[GS]ET_CLOCK_GUEST:
 • The guest TSC comparison mishandled wraparound.
 • The frequency sanity check could underflow, rejected two hosts
   calibrated exactly 1kHz apart, and hvclock_to_hz() could wrap on
   absurd user-supplied mul/shift.
 • The -EBUSY case was unreachable, and GET returned from inside the
   seqcount read section.

Elsewhere:
 • kvm_vm_ioctl_set_clock() wrapped if the host clock had legally been
   set to within moments of the 1970 epoch.
 • clang couldn't see that guest_now was always initialized in
   kvm_xen_start_timer() on 32-bit builds (kernel test robot³).
 • Comments and commit messages overclaimed in places, the
   kvm_update_master_clock tracepoint still said "offsetmatched", the
   tools/ uapi header mirror had drifted, and api.rst didn't document the
   new KVM_SET_TSC_KHZ behaviour.
 • Selftests skipped on any errno rather than just -ENODATA, could pass
   on a buggy kernel under adverse scheduling, lost a whole frequency's
   coverage when hardware scaling wasn't engaged, and carried a third
   private copy of the pvclock arithmetic.

¹ https://lore.kernel.org/all/20260826213303.914988-1-seanjc@google.com
² https://lore.kernel.org/all/20261105154955.2525419-1-dwmw2@infradead.org
³ https://lore.kernel.org/all/202611072152.FL5QBzjH-lkp@intel.com


David Woodhouse (21):
  KVM: x86: Improve synchronization in kvm_synchronize_tsc()
  KVM: x86: Kill last_tsc_{nsec,write,offset} fields
  KVM: x86: Replace nr_vcpus_matched_tsc count with all_vcpus_matched_tsc bool
  KVM: x86: Allow KVM master clock mode when TSCs are offset from each other
  KVM: x86: Factor out kvm_use_master_clock()
  KVM: x86: Avoid gratuitous global clock updates
  KVM: x86: Avoid redundant masterclock updates from multiple vCPUs
  KVM: x86: Re-synchronize TSC after KVM_SET_TSC_KHZ
  KVM: x86: Cache host vclock_mode for masterclock eligibility checks
  KVM: x86: Remove pvclock_gtod_data and private timekeeping code
  KVM: x86: Activate master clock from kvm_arch_init_vm()
  KVM: selftests: Use UAPI pvclock-abi.h in xen_shinfo_test
  KVM: selftests: Add library helpers for clock and TSC-offset ioctls
  KVM: x86: Add KVM_VCPU_TSC_SCALE and fix the documentation on TSC migration
  KVM: selftests: Add master clock offset test
  KVM: selftests: Add Xen/generic CPUID timing leaf test
  KVM: selftests: Add Xen runstate migration test
  KVM: selftests: Test that the first user TSC write is honoured exactly
  KVM: x86/xen: Drop open-coded fallback clock read in kvm_xen_start_timer()
  KVM: x86: Use a single time snapshot in kvm_vm_ioctl_set_clock()
  KVM: x86: Keep master clock for guests using legacy MSR_KVM_SYSTEM_TIME

Jack Allister (3):
  UAPI: x86: Move pvclock-abi to UAPI for x86 platforms
  KVM: x86: Add KVM_[GS]ET_CLOCK_GUEST for accurate KVM clock migration
  KVM: selftests: Add KVM/PV clock selftest to prove timer correction

 Documentation/virt/kvm/api.rst                |  61 ++
 Documentation/virt/kvm/devices/vcpu.rst       | 137 ++-
 Documentation/virt/kvm/locking.rst            |   2 +-
 MAINTAINERS                                   |   4 +-
 arch/x86/include/asm/kvm_host.h               |  14 +-
 arch/x86/include/uapi/asm/kvm.h               |   7 +
 arch/x86/include/{ => uapi}/asm/pvclock-abi.h |  27 +-
 arch/x86/kvm/msrs.c                           |  28 +-
 arch/x86/kvm/trace.h                          |  12 +-
 arch/x86/kvm/x86.c                            | 957 ++++++++++++++----
 arch/x86/kvm/x86.h                            |   2 +-
 arch/x86/kvm/xen.c                            |  48 +-
 include/uapi/linux/kvm.h                      |   4 +
 scripts/xen-hypercalls.sh                     |   2 +-
 tools/arch/x86/include/asm/pvclock-abi.h      |  27 +-
 tools/arch/x86/include/uapi/asm/kvm.h         |   6 +
 tools/testing/selftests/kvm/Makefile.kvm      |   6 +
 .../selftests/kvm/include/x86/processor.h     |  50 +
 .../kvm/x86/masterclock_offset_test.c         | 203 ++++
 .../kvm/x86/pvclock_migration_test.c          | 521 ++++++++++
 .../testing/selftests/kvm/x86/pvclock_test.c  | 518 ++++++++++
 .../selftests/kvm/x86/tsc_user_set_test.c     | 153 +++
 .../selftests/kvm/x86/xen_cpuid_timing_test.c | 271 +++++
 .../selftests/kvm/x86/xen_migration_test.c    | 222 ++++
 .../selftests/kvm/x86/xen_shinfo_test.c       |  31 +-
 25 files changed, 3010 insertions(+), 303 deletions(-)
 rename arch/x86/include/{ => uapi}/asm/pvclock-abi.h (82%)
 create mode 100644 tools/testing/selftests/kvm/x86/masterclock_offset_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_migration_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/tsc_user_set_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
 create mode 100644 tools/testing/selftests/kvm/x86/xen_migration_test.c


base-commit: dea4f6380f4ec96e8f3b0aaf2343764bd0d25ef4
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479229.1683306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4d-0000Xj-UI; Mon, 09 Nov 2026 01:21:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479229.1683306; Mon, 09 Nov 2026 01:21:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4d-0000UH-9J; Mon, 09 Nov 2026 01:21:27 +0000
Received: by outflank-mailman (input) for mailman id 1479229;
 Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zF-KL
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-009V9o-0p; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f80-2eae-0a2a0a5409dd-0a2a4503da40-42
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-fae8-0a2a45030019-5a9b5cc79ae6-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYE-27yv; Mon, 09 Nov 2026 01:21:14 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKUt-00ql;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=OT/QKs0wsvf6qI0TnfD621/+/S2W6eRxFlyThtM/WtI=; b=LXFhc9QY37K3I2psP1wVzaxpqZ
	sJ4zIa5yo6SoH4KLnnYO5R8WjQYmLr+CAY4P9CjYJrkXRcVsdJhDC02tjiSg/BreUnuMXLt+KpIEr
	S6JYARDFtYAabld2X+pLV3yJW/Ai5XdgIICWIUFbJzqhg6p63sjnf61xRoKpFZG3/PWn+bdDwfAx+
	N6P6vg1AtAElKDWHHlnYz7qW6ZOcuoKkYwcNWDmL7xAjbaXG2Jx3LbdLlKkHL0TYEIVaQE3SwDFZP
	2E6bn3OfkwJNP6OAgX1/lH/drBRIIHz5jxF2LeJf0IqRfAzoCKsSWOnjkCkK3j6W9GpBNAqFiSxim
	z44p4Waw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 13/24] KVM: selftests: Use UAPI pvclock-abi.h in xen_shinfo_test
Date: Sun,  8 Nov 2026 17:20:59 -0800
Message-ID: <20261109012112.3415328-14-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-33051d/1794187282-6E8CD4E9-7A22FAFD/0/0
X-purgate-type: clean
X-purgate-size: 3842

From: David Woodhouse <dwmw@amazon.co.uk>

Now that pvclock-abi.h is a UAPI header, use it in xen_shinfo_test.c
instead of locally duplicating the struct definitions.

Sync the tools/ mirror of the header to the UAPI content: the KVM
selftests include path puts tools/arch/x86/include ahead of the
installed kernel headers, so the mirror is what actually gets used.
That makes the struct fields __u64 (unsigned long long), so switch
the verbose printfs away from PRIu64, which is "lu" on 64-bit.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/arch/x86/include/asm/pvclock-abi.h      | 27 +++++++++-------
 .../selftests/kvm/x86/xen_shinfo_test.c       | 31 ++++++-------------
 2 files changed, 24 insertions(+), 34 deletions(-)

diff --git a/tools/arch/x86/include/asm/pvclock-abi.h b/tools/arch/x86/include/asm/pvclock-abi.h
index b9fece5fc96d..6d70cf640362 100644
--- a/tools/arch/x86/include/asm/pvclock-abi.h
+++ b/tools/arch/x86/include/asm/pvclock-abi.h
@@ -1,6 +1,9 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 #ifndef _ASM_X86_PVCLOCK_ABI_H
 #define _ASM_X86_PVCLOCK_ABI_H
+
+#include <linux/types.h>
+
 #ifndef __ASSEMBLER__
 
 /*
@@ -24,20 +27,20 @@
  */
 
 struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
+	__u32   version;
+	__u32   pad0;
+	__u64   tsc_timestamp;
+	__u64   system_time;
+	__u32   tsc_to_system_mul;
+	__s8    tsc_shift;
+	__u8    flags;
+	__u8    pad[2];
 } __attribute__((__packed__)); /* 32 bytes */
 
 struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
+	__u32   version;
+	__u32   sec;
+	__u32   nsec;
 } __attribute__((__packed__));
 
 #define PVCLOCK_TSC_STABLE_BIT	(1 << 0)
diff --git a/tools/testing/selftests/kvm/x86/xen_shinfo_test.c b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
index aaa414c677ad..43548d8faa74 100644
--- a/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
+++ b/tools/testing/selftests/kvm/x86/xen_shinfo_test.c
@@ -98,22 +98,7 @@ struct sched_poll {
 	u64 timeout;
 };
 
-struct pvclock_vcpu_time_info {
-	u32   version;
-	u32   pad0;
-	u64   tsc_timestamp;
-	u64   system_time;
-	u32   tsc_to_system_mul;
-	s8    tsc_shift;
-	u8    flags;
-	u8    pad[2];
-} __attribute__((__packed__)); /* 32 bytes */
-
-struct pvclock_wall_clock {
-	u32   version;
-	u32   sec;
-	u32   nsec;
-} __attribute__((__packed__));
+#include <asm/pvclock-abi.h>
 
 struct vcpu_runstate_info {
 	u32 state;
@@ -987,12 +972,14 @@ int main(int argc, char *argv[])
 
 	if (verbose) {
 		printf("Wall clock (v %d) %d.%09d\n", wc->version, wc->sec, wc->nsec);
-		printf("Time info 1: v %u tsc %" PRIu64 " time %" PRIu64 " mul %u shift %u flags %x\n",
-		       ti->version, ti->tsc_timestamp, ti->system_time, ti->tsc_to_system_mul,
-		       ti->tsc_shift, ti->flags);
-		printf("Time info 2: v %u tsc %" PRIu64 " time %" PRIu64 " mul %u shift %u flags %x\n",
-		       ti2->version, ti2->tsc_timestamp, ti2->system_time, ti2->tsc_to_system_mul,
-		       ti2->tsc_shift, ti2->flags);
+		printf("Time info 1: v %u tsc %llu time %llu mul %u shift %d flags %x\n",
+		       ti->version, (unsigned long long)ti->tsc_timestamp,
+		       (unsigned long long)ti->system_time,
+		       ti->tsc_to_system_mul, ti->tsc_shift, ti->flags);
+		printf("Time info 2: v %u tsc %llu time %llu mul %u shift %d flags %x\n",
+		       ti2->version, (unsigned long long)ti2->tsc_timestamp,
+		       (unsigned long long)ti2->system_time,
+		       ti2->tsc_to_system_mul, ti2->tsc_shift, ti2->flags);
 	}
 
 	TEST_ASSERT(wc->version && !(wc->version & 1),
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479233.1683322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4f-0000xv-JY; Mon, 09 Nov 2026 01:21:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479233.1683322; Mon, 09 Nov 2026 01:21:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4e-0000vq-VC; Mon, 09 Nov 2026 01:21:28 +0000
Received: by outflank-mailman (input) for mailman id 1479233;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-000834-On
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-0096DX-5J; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fa8-bab6-0a2a0a5309dd-0a2a450cde16-48
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-f479-0a2a450c0019-5a9b5cc7dd12-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYF-29HJ; Mon, 09 Nov 2026 01:21:14 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKV1-0MD2;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=E7RyVZdQRrFYW33Mv02BmWV0i6lT0Z4tqhtPA/W0mTY=; b=eRTdCHqga3teHg35lgOR34b6cn
	q5ONSuVeHNVKKRQhXyunsALN4W0snuo3P9WVT2d7Njg81U3m3z4gQXwrbGBsR9lv2Wf8dJpU7S83M
	mS4itC92IvwcCfkkkL7fNswxRUZUXwYCmS5TPnc/VqyBmamjBnBTKFmZoaHNNQVdUDN4YMI3S+pep
	mV1q+heYNq36ool1b3tGlQYF4Z2MKkTHnYtDnzZmJtcIbWycSi/Oq5y8mCLzq28umFgdLXjmZdtaX
	d4FWYiWkFNy/jOjxliGlMuPCKiag2jMn1tEXHwGnH8sP7zJYqSBVodjBlP4DFFubP9x/c34WmO5IP
	jISvsmkg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 15/24] KVM: selftests: Add library helpers for clock and TSC-offset ioctls
Date: Sun,  8 Nov 2026 17:21:01 -0800
Message-ID: <20261109012112.3415328-16-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d25034/1794187282-5093EA5B-12E774EE/0/0
X-purgate-type: clean
X-purgate-size: 2556

From: David Woodhouse <dwmw@amazon.co.uk>

Add wrappers for KVM_[GS]ET_CLOCK_GUEST, the KVM_VCPU_TSC_OFFSET device
attribute and KVM_[GS]ET_CLOCK to the x86 library header, so that the
KVM clock selftests don't each open-code the same ioctl invocations.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 .../selftests/kvm/include/x86/processor.h     | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/tools/testing/selftests/kvm/include/x86/processor.h b/tools/testing/selftests/kvm/include/x86/processor.h
index 5898a277a2e0..4062bdb32716 100644
--- a/tools/testing/selftests/kvm/include/x86/processor.h
+++ b/tools/testing/selftests/kvm/include/x86/processor.h
@@ -12,6 +12,7 @@
 
 #include <asm/msr-index.h>
 #include <asm/prctl.h>
+#include <asm/pvclock-abi.h>
 
 #include <linux/kvm_para.h>
 #include <linux/stringify.h>
@@ -1029,6 +1030,55 @@ static inline void vcpu_xcrs_set(struct kvm_vcpu *vcpu, struct kvm_xcrs *xcrs)
 	vcpu_ioctl(vcpu, KVM_SET_XCRS, xcrs);
 }
 
+static inline int __vcpu_get_clock_guest(struct kvm_vcpu *vcpu,
+					 struct pvclock_vcpu_time_info *pvti)
+{
+	return __vcpu_ioctl(vcpu, KVM_GET_CLOCK_GUEST, pvti);
+}
+
+static inline void vcpu_get_clock_guest(struct kvm_vcpu *vcpu,
+					struct pvclock_vcpu_time_info *pvti)
+{
+	vcpu_ioctl(vcpu, KVM_GET_CLOCK_GUEST, pvti);
+}
+
+static inline int __vcpu_set_clock_guest(struct kvm_vcpu *vcpu,
+					 struct pvclock_vcpu_time_info *pvti)
+{
+	return __vcpu_ioctl(vcpu, KVM_SET_CLOCK_GUEST, pvti);
+}
+
+static inline void vcpu_set_clock_guest(struct kvm_vcpu *vcpu,
+					struct pvclock_vcpu_time_info *pvti)
+{
+	vcpu_ioctl(vcpu, KVM_SET_CLOCK_GUEST, pvti);
+}
+
+static inline u64 vcpu_get_tsc_offset(struct kvm_vcpu *vcpu)
+{
+	u64 offset;
+
+	vcpu_device_attr_get(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET,
+			     &offset);
+	return offset;
+}
+
+static inline void vcpu_set_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)
+{
+	vcpu_device_attr_set(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET,
+			     &offset);
+}
+
+static inline void vm_get_clock(struct kvm_vm *vm, struct kvm_clock_data *data)
+{
+	vm_ioctl(vm, KVM_GET_CLOCK, data);
+}
+
+static inline void vm_set_clock(struct kvm_vm *vm, struct kvm_clock_data *data)
+{
+	vm_ioctl(vm, KVM_SET_CLOCK, data);
+}
+
 const struct kvm_cpuid_entry2 *get_cpuid_entry(const struct kvm_cpuid2 *cpuid,
 					       u32 function, u32 index);
 const struct kvm_cpuid2 *kvm_get_supported_cpuid(void);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479232.1683328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4g-0001Ew-LO; Mon, 09 Nov 2026 01:21:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479232.1683328; Mon, 09 Nov 2026 01:21:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4g-0001AX-1c; Mon, 09 Nov 2026 01:21:30 +0000
Received: by outflank-mailman (input) for mailman id 1479232;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-000807-LX
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-002A54-29; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f90-e002-0a2a0a5209dd-0a2a4501cc1a-42
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-5984-0a2a45010019-5a9b5cc7dcd4-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AY8-28SP; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUA-23cT;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=m2fbPc6XHvWEP1WHR95w78T0mzWK9qb5UsTlN179DUY=; b=ES5u6lWgnx208h9BxW/VwpJR5g
	8d08nYWsbfhFvE/O7fc+yaqoNW1lLrLEl/0OQzyYjYxyTLUJtXTJcXIHNIxtiqifmlZBfaRpoPD1C
	HhpghyN22R2EJTLAy7LAOB56Hy2XU+N87HG99MKut7ywYNppf/DJjVyO8AUGSTcHDuMYhHfViOpbL
	yN6Zc3KPyEqPvdoiJE4jFYzVbEcFzNwoYfomqU0NNfe0anix1ZA/lTLYtxGjCCmiNHgbq4pKQihcI
	xWc2eiCUP7m5PmDD7dAOzsloyNIHzM1SHPcPeL4MwAkIAS4LWXVfkpQtK2K20ZDJox/O8MkNzNpo7
	3IPjDGGw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 02/24] KVM: x86: Kill last_tsc_{nsec,write,offset} fields
Date: Sun,  8 Nov 2026 17:20:48 -0800
Message-ID: <20261109012112.3415328-3-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1794187282-BFC69757-731F8169/0/0
X-purgate-type: clean
X-purgate-size: 11446

From: David Woodhouse <dwmw@amazon.co.uk>

These mostly duplicate the cur_tsc_{nsec,write,offset} values. In the
matching paths for a stable TSC, the values used were definitely
identical. On the unstable-TSC paths the two could diverge (a matched
synchronization recorded its freshly computed offset in last_tsc_offset
while cur_tsc_offset kept the generation's reference), so matching in
kvm_arch_tsc_set_attr() now compares against the generation's reference
offset instead. With an unstable TSC the master clock is off and the
match only affects generation accounting, and matching against the
generation's own reference is the more principled behaviour anyway.

Rename last_tsc_khz and last_tsc_scaling_ratio to cur_tsc_khz and
cur_tsc_scaling_ratio respectively, since they are properties of the
current TSC generation.

Since cur_tsc_offset now serves as the single source of truth for the
TSC generation's offset, the backwards-TSC adjustment (used during S4
resume when the host TSC resets) must also update cur_tsc_offset by
the same delta applied to all vCPUs (scaled to the guest TSC rate, as
adjust_tsc_offset_host() does). Without this, subsequent vCPUs that
synchronize after the adjustment would get the stale pre-S4 offset.

Since a synchronization now establishes an absolute offset which (via
a matched reuse of cur_tsc_offset) already includes any backwards-TSC
delta, clear the vCPU's pending tsc_offset_adjustment when writing it:
the deferred per-vCPU compensation would otherwise be applied on top
at the next vcpu_load, doubling the delta. Previously a nonzero write
could not hit this, because zeroing the last_tsc values broke the
1-second matching window after a backwards TSC; a forced
synchronization (vCPU creation, or a zero write) could always match,
and takes the compensated offset as intended.

The lockless vm_list walk in kvm_arch_enable_virtualization_cpu() is
unsound against a concurrent kvm_destroy_vm(), but that predates this
patch and is not made materially worse by it; it cannot be fixed by
taking kvm_lock here, which would recreate the lock inversion against
cpus_read_lock() that commit 44d174596260 ("KVM: Use dedicated mutex
to protect kvm_usage_count to avoid deadlock") untangled.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 Documentation/virt/kvm/locking.rst |  2 +-
 arch/x86/include/asm/kvm_host.h    |  7 +--
 arch/x86/kvm/x86.c                 | 98 +++++++++++++++++++++---------
 3 files changed, 71 insertions(+), 36 deletions(-)

diff --git a/Documentation/virt/kvm/locking.rst b/Documentation/virt/kvm/locking.rst
index 662231e958a0..4548b61a7652 100644
--- a/Documentation/virt/kvm/locking.rst
+++ b/Documentation/virt/kvm/locking.rst
@@ -263,7 +263,7 @@ time it will be set using the Dirty tracking mechanism described above.
 
 :Type:		raw_spinlock_t
 :Arch:		x86
-:Protects:	- kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset}
+:Protects:	- kvm_arch::{cur_tsc_write,cur_tsc_nsec,cur_tsc_offset}
 		- tsc offset in vmcb
 :Comment:	'raw' because updating the tsc offsets must not be preempted.
 
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index e2eef7057bd3..ea48b1949316 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1236,11 +1236,8 @@ struct kvm_arch {
 	 * preemption-disabled region, so it must be a raw spinlock.
 	 */
 	raw_spinlock_t tsc_write_lock;
-	u64 last_tsc_nsec;
-	u64 last_tsc_write;
-	u32 last_tsc_khz;
-	u64 last_tsc_offset;
-	u64 last_tsc_scaling_ratio;
+	u32 cur_tsc_khz;
+	u64 cur_tsc_scaling_ratio;
 	u64 cur_tsc_nsec;
 	u64 cur_tsc_write;
 	u64 cur_tsc_offset;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 7a2b0b99373f..20b84b2e4424 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1334,17 +1334,24 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		vcpu->kvm->arch.user_set_tsc = true;
 
 	/*
-	 * We also track th most recent recorded KHZ, write and time to
-	 * allow the matching interval to be extended at each write.
+	 * Track the TSC frequency, scaling ratio, and offset for the current
+	 * generation. These are used to detect matching TSC writes and to
+	 * compute the guest TSC from the host clock.
 	 */
-	kvm->arch.last_tsc_nsec = ns;
-	kvm->arch.last_tsc_write = tsc;
-	kvm->arch.last_tsc_khz = vcpu->arch.virtual_tsc_khz;
-	kvm->arch.last_tsc_offset = offset;
-	kvm->arch.last_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
+	kvm->arch.cur_tsc_khz = vcpu->arch.virtual_tsc_khz;
+	kvm->arch.cur_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
 
 	vcpu->arch.last_guest_tsc = tsc;
 
+	/*
+	 * The offset written below is absolute, superseding any backwards-TSC
+	 * compensation still pending from kvm_arch_enable_virtualization_cpu()
+	 * (which has already been folded into cur_tsc_offset, and thus into
+	 * a matched @offset); applying it again at the next vcpu_load would
+	 * double it.
+	 */
+	vcpu->arch.tsc_offset_adjustment = 0;
+
 	kvm_vcpu_write_tsc_offset(vcpu, offset);
 
 	if (!matched) {
@@ -1354,8 +1361,6 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		 * nanosecond time, offset, and write, so if TSCs are in
 		 * sync, we can match exact offset, and if not, we can match
 		 * exact software computation in compute_guest_tsc()
-		 *
-		 * These values are tracked in kvm->arch.cur_xxx variables.
 		 */
 		kvm->arch.cur_tsc_generation++;
 		kvm->arch.cur_tsc_nsec = ns;
@@ -1395,7 +1400,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 	}
 
 	offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
-	elapsed = ns - kvm->arch.last_tsc_nsec;
+	elapsed = ns - kvm->arch.cur_tsc_nsec;
 
 	if (vcpu->arch.virtual_tsc_khz) {
 		if (data == 0) {
@@ -1405,7 +1410,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 			 */
 			synchronizing = true;
 		} else if (kvm->arch.user_set_tsc) {
-			u64 tsc_exp = kvm->arch.last_tsc_write +
+			u64 tsc_exp = kvm->arch.cur_tsc_write +
 						nsec_to_cycles(vcpu, elapsed);
 			u64 tsc_hz = vcpu->arch.virtual_tsc_khz * 1000LL;
 			/*
@@ -1436,15 +1441,14 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 	 * it's better to try to match offsets from the beginning.
          */
 	if (synchronizing &&
-	    vcpu->arch.virtual_tsc_khz == kvm->arch.last_tsc_khz) {
+	    vcpu->arch.virtual_tsc_khz == kvm->arch.cur_tsc_khz) {
 		/*
-		 * If synchronizing, advance the reference point to "now"
-		 * so the matching window slides forward with each vCPU.
-		 * Extrapolate from the generation's own origin: 'elapsed'
-		 * is measured from the most recent write, which lies on
-		 * the generation's line only for the first matched write.
+		 * If synchronizing, extrapolate the generation's value to
+		 * "now": the matching window slides forward with wall time,
+		 * anchored on the generation's origin alone (a matched
+		 * write no longer updates any stored reference point).
 		 */
-		u64 delta = nsec_to_cycles(vcpu, ns - kvm->arch.cur_tsc_nsec);
+		u64 delta = nsec_to_cycles(vcpu, elapsed);
 
 		data = kvm->arch.cur_tsc_write + delta;
 
@@ -1615,7 +1619,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 		 * get_kvmclock() to compute kvmclock from the host TSC
 		 * without needing a vCPU reference.
 		 */
-		ka->master_tsc_scaling_ratio = ka->last_tsc_scaling_ratio;
+		ka->master_tsc_scaling_ratio = ka->cur_tsc_scaling_ratio;
 		tsc_hz = (u64)get_cpu_tsc_khz() * HZ_PER_KHZ;
 		if (tsc_hz && kvm_caps.has_tsc_control)
 			tsc_hz = kvm_scale_tsc(tsc_hz,
@@ -3344,8 +3348,8 @@ static int kvm_arch_tsc_set_attr(struct kvm_vcpu *vcpu,
 		raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 
 		matched = (vcpu->arch.virtual_tsc_khz &&
-			   kvm->arch.last_tsc_khz == vcpu->arch.virtual_tsc_khz &&
-			   kvm->arch.last_tsc_offset == offset);
+			   kvm->arch.cur_tsc_khz == vcpu->arch.virtual_tsc_khz &&
+			   kvm->arch.cur_tsc_offset == offset);
 
 		tsc = kvm_scale_tsc(rdtsc(), vcpu->arch.l1_tsc_scaling_ratio) + offset;
 		ns = get_kvmclock_base_ns();
@@ -9803,7 +9807,7 @@ int kvm_arch_enable_virtualization_cpu(void)
 {
 	struct kvm *kvm;
 	struct kvm_vcpu *vcpu;
-	unsigned long i;
+	unsigned long i, flags;
 	int ret;
 	u64 local_tsc;
 	u64 max_tsc = 0;
@@ -9874,6 +9878,44 @@ int kvm_arch_enable_virtualization_cpu(void)
 	if (backwards_tsc) {
 		u64 delta_cyc = max_tsc - local_tsc;
 		list_for_each_entry(kvm, &vm_list, vm_list) {
+			/*
+			 * Hold tsc_write_lock across the per-vCPU adjustments
+			 * AND the generation reference offset adjustment, so
+			 * that a concurrent TSC synchronization cannot observe
+			 * one without the other (it would compute an offset
+			 * with the delta applied twice, or not at all). The
+			 * consume of tsc_offset_adjustment in
+			 * kvm_arch_vcpu_load() remains outside the lock, as
+			 * it always was; its races are with vcpu_put/load
+			 * ordering, not with the generation state.
+			 *
+			 * The generation's reference offset is adjusted by the
+			 * same (guest-scaled, as adjust_tsc_offset_host()
+			 * does for each vCPU) delta, so that future
+			 * KVM_SET_TSC / vCPU creation still matches against
+			 * the adjusted TSC timeline.
+			 *
+			 * The recorded {cur_tsc_nsec, cur_tsc_write} pair is
+			 * left alone, and ends up stale by the sleep period:
+			 * cur_tsc_nsec is CLOCK_BOOTTIME, which has the sleep
+			 * injected on resume, while the guest TSC (kept
+			 * continuous across the host TSC jump) does not
+			 * advance during the sleep. It cannot be re-anchored
+			 * here because, as noted above, timekeeping has not
+			 * yet been resumed. The 1-second matching window
+			 * therefore fails to match across a longer sleep,
+			 * and the next nonzero TSC write opens a fresh,
+			 * coherent generation. A forced synchronization
+			 * (vCPU creation, or a zero write) bypasses the
+			 * window and does extrapolate along the stale line,
+			 * overshooting by the sleep period — but it installs
+			 * the compensated offset, so the vCPU's actual TSC
+			 * is correct; only last_guest_tsc overshoots, which
+			 * matters only if the TSC turns unstable before the
+			 * vCPU first enters the guest, exactly as it did
+			 * before this accounting existed.
+			 */
+			raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 			kvm->arch.backwards_tsc_observed = true;
 			kvm_for_each_vcpu(i, vcpu, kvm) {
 				vcpu->arch.tsc_offset_adjustment += delta_cyc;
@@ -9881,14 +9923,10 @@ int kvm_arch_enable_virtualization_cpu(void)
 				kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
 			}
 
-			/*
-			 * We have to disable TSC offset matching.. if you were
-			 * booting a VM while issuing an S4 host suspend....
-			 * you may have some problem.  Solving this issue is
-			 * left as an exercise to the reader.
-			 */
-			kvm->arch.last_tsc_nsec = 0;
-			kvm->arch.last_tsc_write = 0;
+			kvm->arch.cur_tsc_offset +=
+				kvm_scale_tsc(delta_cyc,
+					      kvm->arch.cur_tsc_scaling_ratio);
+			raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 		}
 
 	}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479234.1683340 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4i-0001SL-13; Mon, 09 Nov 2026 01:21:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479234.1683340; Mon, 09 Nov 2026 01:21:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4h-0001PD-8D; Mon, 09 Nov 2026 01:21:31 +0000
Received: by outflank-mailman (input) for mailman id 1479234;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zG-KO
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-002A54-0s; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f90-e002-0a2a0a5209dd-0a2a4501cc1a-40
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-5984-0a2a45010019-5a9b5cc7d8e6-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AY6-27Ls; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKU7-1pEh;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=SR/76Q1Z57YyfL7/pX6GVKGYRXjznlqWiAUlX6lozs4=; b=qecoNL0YT9N3J6QDcfhdb3CYLK
	M3y0Heu+j6haI2EszDlWoo82TCSq4n2iLg70sWTKEu7zisutAr+uhXQ1Az335/sr9Q+4x8ULz83nm
	pVkh2Hh+OvFaTkEtm/UsR9FNc9CzVBO+2C3ZNji0cWFORzcGeiS4UoddbMjWe4020idoEx6sJ7sFR
	4RC16nYhEEMl/azSuDUYfzB5AoRTHQaNtsMxSqUHlRMbv/wPxgBONjX7AGoGxMmsQ20fG1dluSdS5
	0UVORl+ivp+eQdNIRTSuN3pNo+H/VT50AzCTRnKGFmt7YsUOS7+TlNAQOyMDW0GLXlmgay3ZhOX3i
	o38HU/fg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 01/24] KVM: x86: Improve synchronization in kvm_synchronize_tsc()
Date: Sun,  8 Nov 2026 17:20:47 -0800
Message-ID: <20261109012112.3415328-2-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-d62444/1794187282-1F86F757-6A24272C/0/0
X-purgate-type: clean
X-purgate-size: 4546

From: David Woodhouse <dwmw@amazon.co.uk>

When synchronizing to an existing TSC (either by explicitly writing
zero, or the legacy hack where the TSC is written within one second's
worth of the previously written TSC), the last_tsc_write and
last_tsc_nsec values were being misrecorded by __kvm_synchronize_tsc().
The *unsynchronized* value of the TSC (perhaps even zero) was being
recorded, along with the current time at which kvm_synchronize_tsc()
was called. This could cause *subsequent* writes to fail to synchronize
correctly.

Fix that by extrapolating the generation's TSC value to the current
time (data = cur_tsc_write + elapsed cycles) before passing it to
__kvm_synchronize_tsc(), so the recorded {data, ns} pair always lies
on the generation's line and the one-second matching window slides
forward with each synchronized write. When the TSC is stable, reuse
the generation's offset exactly; when it is unstable, compute a new
offset for the extrapolated value.

Furthermore, there were *three* different TSC reads used for calculating
the "current" time, all slightly different from each other. Fix that by
using kvm_get_time_and_clockread() where possible and using the same
host_tsc value in all cases.

Extrapolating the matching window from the generation's origin at the
nominal guest frequency means that, for a guest whose requested
frequency is within tsc_tolerance_ppm of the host's (so hardware
scaling is not engaged), the window drifts from the guest's actual
TSC line by up to 250ppm — crossing the one-second window after about
67 minutes. A write which then fails to match still installs the
exact value with a freshly computed offset; the cost is only a fresh
generation. The previous code re-anchored on every matched write,
which bounded that drift per-interval but recorded values the
generation's line did not pass through, which is the bug this patch
exists to fix.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 arch/x86/kvm/x86.c | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 32563a91fba9..7a2b0b99373f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -210,6 +210,10 @@ module_param(pi_inject_timer, bint, 0644);
 static bool __read_mostly mitigate_smt_rsb;
 module_param(mitigate_smt_rsb, bool, 0444);
 
+#ifdef CONFIG_X86_64
+static bool kvm_get_time_and_clockread(s64 *kernel_ns, u64 *tsc_timestamp);
+#endif
+
 #define KVM_SUPPORTED_XCR0     (XFEATURE_MASK_FP | XFEATURE_MASK_SSE \
 				| XFEATURE_MASK_YMM | XFEATURE_MASK_BNDREGS \
 				| XFEATURE_MASK_BNDCSR | XFEATURE_MASK_AVX512 \
@@ -1374,14 +1378,23 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 {
 	u64 data = user_value ? *user_value : 0;
 	struct kvm *kvm = vcpu->kvm;
-	u64 offset, ns, elapsed;
+	u64 offset, host_tsc, elapsed;
+	s64 ns;
 	unsigned long flags;
 	bool matched = false;
 	bool synchronizing = false;
 
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
-	offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data);
-	ns = get_kvmclock_base_ns();
+
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&ns, &host_tsc))
+#endif
+	{
+		host_tsc = rdtsc();
+		ns = get_kvmclock_base_ns();
+	}
+
+	offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
 	elapsed = ns - kvm->arch.last_tsc_nsec;
 
 	if (vcpu->arch.virtual_tsc_khz) {
@@ -1424,13 +1437,21 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
          */
 	if (synchronizing &&
 	    vcpu->arch.virtual_tsc_khz == kvm->arch.last_tsc_khz) {
-		if (!kvm_check_tsc_unstable()) {
+		/*
+		 * If synchronizing, advance the reference point to "now"
+		 * so the matching window slides forward with each vCPU.
+		 * Extrapolate from the generation's own origin: 'elapsed'
+		 * is measured from the most recent write, which lies on
+		 * the generation's line only for the first matched write.
+		 */
+		u64 delta = nsec_to_cycles(vcpu, ns - kvm->arch.cur_tsc_nsec);
+
+		data = kvm->arch.cur_tsc_write + delta;
+
+		if (!kvm_check_tsc_unstable())
 			offset = kvm->arch.cur_tsc_offset;
-		} else {
-			u64 delta = nsec_to_cycles(vcpu, elapsed);
-			data += delta;
-			offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data);
-		}
+		else
+			offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
 		matched = true;
 	}
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479235.1683347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4i-0001dV-R3; Mon, 09 Nov 2026 01:21:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479235.1683347; Mon, 09 Nov 2026 01:21:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4h-0001XM-W7; Mon, 09 Nov 2026 01:21:32 +0000
Received: by outflank-mailman (input) for mailman id 1479235;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zY-KW
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-009V9o-1Q; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fc3-2eae-0a2a0a5409dd-0a2a4504ceb4-44
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-b57f-0a2a45040019-5a9b5cc7c598-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AY7-27ye; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUD-2CZT;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=gSB/Q9g2yibJwD9klPXFy+4TUZDSE+Oz1s1D+60pOVU=; b=o3dyt0zte310tj+0K/tp82gDvN
	s8TRU8MMU+xs4tLlXEcOzm2ycUUHAog6y2O8bEieNbhSRQLJqe1u69KnP40/zOZ1B8+meeGlal9TA
	jVU4kwLCjKEIt7sSHiTgMoC2uzq5i2IJ9Vmx3cwG0BHfIrEHL0KvQj4NFEtqrjiXd3ybW/SBm+Ad8
	wFaJoXTF0u1aMD9gabOvdlgGuYCNhBFMOZYxvsiGvlZ3mpKDZYFBonE/G6CVgx+UwPR1Wiw7s4BB0
	29LTjnwbaxcNkJiSlDU9BFypwqeNAsbjpMSTmUAbcOMtX4hIwkZN9U1ZtqpRb6EY7t6L5PIcckGOY
	JKevFVRQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 03/24] KVM: x86: Replace nr_vcpus_matched_tsc count with all_vcpus_matched_tsc bool
Date: Sun,  8 Nov 2026 17:20:49 -0800
Message-ID: <20261109012112.3415328-4-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-ebf023/1794187283-C2ECEB50-EA5A7154/0/0
X-purgate-type: clean
X-purgate-size: 6047

From: David Woodhouse <dwmw@amazon.co.uk>

Using a count and comparing with kvm->online_vcpus was always racy
because a new vCPU could be created while kvm_track_tsc_matching() was
running and comparing with kvm->online_vcpus. That variable is only
atomic with respect to itself; kvm_arch_vcpu_create() runs before
kvm->online_vcpus is incremented for the new vCPU.

Replace the count with a boolean that is set in kvm_track_tsc_matching()
after comparing the count, and cleared when a new TSC generation starts.
The boolean is consumed by pvclock_update_vm_gtod_copy() under the
tsc_write_lock, which serializes against __kvm_synchronize_tsc().

Keep the count for now as it's still used in the trace event.

Note that the explicit clear of the flag when a new generation starts
is currently overwritten by the unconditional recompute in
kvm_track_tsc_matching() under the same lock; it is preparation for
subsequent patches which consume the previous value of the flag.

Initialize the flag to true at VM creation: a VM whose vCPUs never
reach kvm_track_tsc_matching() — notably with a protected guest TSC
(TDX, SNP Secure TSC), where __kvm_synchronize_tsc() returns early —
would otherwise never be eligible for PVCLOCK_TSC_STABLE_BIT, where
the old read-time computation gave 0 + 1 == 1 for a single-vCPU VM.

Initializing the flag to true means pvclock_update_vm_gtod_copy() now
reaches its scaling path from kvm_arch_init_vm(), where the scaling
ratio is still zero from allocation; initialize it to the default
ratio at the same point, since a zero ratio would zero tsc_hz and turn
the master clock straight back off — permanently for protected-TSC
guests, whose vCPUs never write the ratio in __kvm_synchronize_tsc().

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/include/asm/kvm_host.h |  1 +
 arch/x86/kvm/x86.c              | 41 +++++++++++++++++++++++++++++----
 2 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index ea48b1949316..1efca01647d2 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1242,6 +1242,7 @@ struct kvm_arch {
 	u64 cur_tsc_write;
 	u64 cur_tsc_offset;
 	u64 cur_tsc_generation;
+	bool all_vcpus_matched_tsc;
 	int nr_vcpus_matched_tsc;
 
 	u32 default_tsc_khz;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 20b84b2e4424..d29e5bc75f7a 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1125,8 +1125,10 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool new_generation)
 	 * and all vCPUs must have matching TSCs.  Note, the count for matching
 	 * vCPUs doesn't include the reference vCPU, hence "+1".
 	 */
-	bool use_master_clock = (ka->nr_vcpus_matched_tsc + 1 ==
-				 atomic_read(&vcpu->kvm->online_vcpus)) &&
+	ka->all_vcpus_matched_tsc = (ka->nr_vcpus_matched_tsc + 1 ==
+				     atomic_read(&vcpu->kvm->online_vcpus));
+
+	bool use_master_clock = ka->all_vcpus_matched_tsc &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
@@ -1367,6 +1369,7 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		kvm->arch.cur_tsc_write = tsc;
 		kvm->arch.cur_tsc_offset = offset;
 		kvm->arch.nr_vcpus_matched_tsc = 0;
+		kvm->arch.all_vcpus_matched_tsc = false;
 	} else if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
 		kvm->arch.nr_vcpus_matched_tsc++;
 	}
@@ -1593,8 +1596,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 	bool host_tsc_clocksource, vcpus_matched;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	vcpus_matched = (ka->nr_vcpus_matched_tsc + 1 ==
-			atomic_read(&kvm->online_vcpus));
+	vcpus_matched = ka->all_vcpus_matched_tsc;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -9552,8 +9554,23 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
 
 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 {
-	if (mutex_lock_killable(&vcpu->mutex))
+	if (mutex_lock_killable(&vcpu->mutex)) {
+		/*
+		 * The new vCPU is already counted in online_vcpus but has
+		 * not been synchronized. Nothing recomputes the cached
+		 * matched state against the raised count until the next
+		 * synchronization, so clear it here rather than leave the
+		 * clock advertised as matched while an unmatched vCPU is
+		 * runnable. It heals when this vCPU first synchronizes.
+		 */
+		struct kvm_arch *ka = &vcpu->kvm->arch;
+		unsigned long flags;
+
+		raw_spin_lock_irqsave(&ka->tsc_write_lock, flags);
+		WRITE_ONCE(ka->all_vcpus_matched_tsc, false);
+		raw_spin_unlock_irqrestore(&ka->tsc_write_lock, flags);
 		return;
+	}
 	vcpu_load(vcpu);
 	kvm_synchronize_tsc(vcpu, NULL);
 	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
@@ -10029,6 +10046,20 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
 	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
 
+	/*
+	 * Start with all (zero) vCPUs considered matched, so that a VM whose
+	 * vCPUs never reach kvm_track_tsc_matching() — notably when the guest
+	 * TSC is protected (TDX, SNP Secure TSC) and __kvm_synchronize_tsc()
+	 * returns early — is still eligible for PVCLOCK_TSC_STABLE_BIT. The
+	 * scaling ratio must then also be initialized: with vcpus_matched
+	 * now true here, pvclock_update_vm_gtod_copy() reaches the scaling
+	 * path, and a zero ratio would zero tsc_hz and turn the master
+	 * clock straight back off (permanently so for protected-TSC guests,
+	 * which never write the ratio in __kvm_synchronize_tsc()).
+	 */
+	kvm->arch.all_vcpus_matched_tsc = true;
+	kvm->arch.cur_tsc_scaling_ratio = kvm_caps.default_tsc_scaling_ratio;
+
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 	pvclock_update_vm_gtod_copy(kvm);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:34 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479237.1683353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4j-0001rD-Vt; Mon, 09 Nov 2026 01:21:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479237.1683353; Mon, 09 Nov 2026 01:21:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4j-0001mq-55; Mon, 09 Nov 2026 01:21:33 +0000
Received: by outflank-mailman (input) for mailman id 1479237;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-000804-LG
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-009V9o-20; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af12009-2eae-0a2a0a5409dd-0a2a450bb5dc-4
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-b7e8-0a2a450b0019-5a9b5cc7d8ee-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4S-00000006AYH-022v; Mon, 09 Nov 2026 01:21:16 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVB-0juP;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=7oTWb3I9PICsIsR8CMtf2g2i7rOS/LyOcCn9fT1PKcI=; b=VfdC+OpeSDxbAKxX2DdAwgNMcx
	QTL96DperaUIVYMro+cqEbljksX6uPXHWj35LD2d3oSNmaci1Ignb2ZzYxLNTLMnmZVZ0kgabIjq3
	5VJY+2HF8axfRDWBiMVO1yoMnyyS6N/21sf7pCCw9DhnPhp9Us5v0u4JTlEuBKx+pJOyMb84s1tDf
	WznhoVhzJiNFyUXbXmrDSq8EG4cxSZEIFR8Og69mRJ9xis32QCP3TAG3qy3ex2WE1Uw9x77trESt+
	awy836RvRf9QoRbwKcCcvoUM9/RN7nb+x2XPqtM0sy3Unm1PLDaf5RKVvmSvjOFzgAgb6W0WDuJp+
	2NVYNVsg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 17/24] KVM: selftests: Add KVM/PV clock selftest to prove timer correction
Date: Sun,  8 Nov 2026 17:21:03 -0800
Message-ID: <20261109012112.3415328-18-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-42698a/1794187282-ABCD79EA-D789FBB7/0/0
X-purgate-type: clean
X-purgate-size: 16681

From: Jack Allister <jalliste@amazon.com>

A VM's KVM/PV clock has an inherent relationship to its TSC. When either
the host system live-updates or the VM is live-migrated this pairing of
the two clock sources should stay the same. In reality this is not the
case without some correction taking place.

The KVM_GET_CLOCK_GUEST/KVM_SET_CLOCK_GUEST ioctls can be used to
perform a correction on the PVTI (PV time information) structure held by
KVM to effectively fix up the kvmclock_offset prior to the guest VM
resuming in either a live-update/migration scenario.

This test proves that without the necessary fixup there is a perceived
change in the guest TSC and KVM/PV clock relationship before and after a
simulated LU/LM takes place, and that the correction eliminates it.

The test:
  1. Snapshots the PVTI at boot (PVTI0).
  2. Steps the KVM clock forward 10 seconds with KVM_SET_CLOCK and
     induces a change in PVTI data, so the divergence the correction
     must eliminate is deterministic.
  3. Snapshots the PVTI after the change (PVTI1).
  4. Requests correction via KVM_SET_CLOCK_GUEST using PVTI0.
  5. Snapshots the PVTI after correction (PVTI2).

Then samples the TSC at a single point in time and calculates the KVM
clock using each PVTI snapshot, verifying that the uncorrected clock
diverged and that the corrected clock matches the boot clock to
within ±2ns.

Also test PVCLOCK_TSC_STABLE_BIT across matched, offset-mismatched
and frequency-mismatched vCPUs, and KVM_[GS]ET_CLOCK_GUEST on vCPUs
with divergent TSC offsets.

The test enumerates multiple TSC frequencies from 1GHz to 5GHz at 500MHz
steps, crossing the 32-bit boundary, to exercise the scaling path at
various ratios. The sleep duration between snapshots is configurable via
the -s/--sleep command line option.

Co-developed-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Jack Allister <jalliste@amazon.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Cc: Dongli Zhang <dongli.zhang@oracle.com>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../testing/selftests/kvm/x86/pvclock_test.c  | 455 ++++++++++++++++++
 2 files changed, 456 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/pvclock_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 18605318860e..15a1a8f64723 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -114,6 +114,7 @@ TEST_GEN_PROGS_x86 += x86/pmu_event_filter_test
 TEST_GEN_PROGS_x86 += x86/private_mem_conversions_test
 TEST_GEN_PROGS_x86 += x86/private_mem_kvm_exits_test
 TEST_GEN_PROGS_x86 += x86/pvclock_migration_test
+TEST_GEN_PROGS_x86 += x86/pvclock_test
 TEST_GEN_PROGS_x86 += x86/save_restore_pf_stress_test
 TEST_GEN_PROGS_x86 += x86/set_boot_cpu_id
 TEST_GEN_PROGS_x86 += x86/set_sregs_test
diff --git a/tools/testing/selftests/kvm/x86/pvclock_test.c b/tools/testing/selftests/kvm/x86/pvclock_test.c
new file mode 100644
index 000000000000..039a2b802d84
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/pvclock_test.c
@@ -0,0 +1,455 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright © Amazon.com, Inc. or its affiliates.
+ *
+ * Tests for pvclock API
+ * KVM_SET_CLOCK_GUEST/KVM_GET_CLOCK_GUEST
+ */
+#include <getopt.h>
+#include <stdint.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+#include <asm/pvclock-abi.h>
+
+/*
+ * Reproduce the pvclock calculation the guest uses to convert TSC to
+ * nanoseconds. This must match the kernel's __pvclock_read_cycles().
+ */
+static inline u64 pvclock_scale_delta(u64 delta, u32 mul,
+					   s8 shift)
+{
+	if (shift < 0)
+		delta >>= -shift;
+	else
+		delta <<= shift;
+	return ((__uint128_t)delta * mul) >> 32;
+}
+
+static inline u64 pvclock_read_cycles(struct pvclock_vcpu_time_info *src,
+					   u64 tsc)
+{
+	u64 delta = tsc - src->tsc_timestamp;
+
+	return src->system_time + pvclock_scale_delta(delta,
+						      src->tsc_to_system_mul,
+						      src->tsc_shift);
+}
+
+static inline void pvti_snapshot(struct pvclock_vcpu_time_info *dst,
+				 volatile struct pvclock_vcpu_time_info *src)
+{
+	u32 version;
+
+	do {
+		version = src->version;
+		__asm__ __volatile__("" ::: "memory");
+		*dst = *src;
+		__asm__ __volatile__("" ::: "memory");
+	} while ((src->version & 1) || src->version != version);
+}
+
+enum {
+	STAGE_FIRST_BOOT,
+	STAGE_UNCORRECTED,
+	STAGE_CORRECTED
+};
+
+#define KVMCLOCK_GPA	0xc0000000ull
+#define KVMCLOCK_SIZE	sizeof(struct pvclock_vcpu_time_info)
+
+static void trigger_pvti_update(void)
+{
+	/*
+	 * Toggle between KVM's old and new system time methods to coerce KVM
+	 * into updating the fields in the PV time info struct.
+	 */
+	wrmsr(MSR_KVM_SYSTEM_TIME, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+}
+
+static void guest_code(void)
+{
+	struct pvclock_vcpu_time_info *pvti =
+		(void *)(unsigned long)KVMCLOCK_GPA;
+	struct pvclock_vcpu_time_info pvti_boot;
+	struct pvclock_vcpu_time_info pvti_uncorrected;
+	struct pvclock_vcpu_time_info pvti_corrected;
+	u64 tsc_guest;
+	u64 clk_boot, clk_uncorrected, clk_corrected;
+	s64 delta_corrected;
+
+	/* Set up kvmclock and snapshot the initial pvclock parameters. */
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, KVMCLOCK_GPA | KVM_MSR_ENABLED);
+	pvti_snapshot(&pvti_boot, pvti);
+	GUEST_SYNC(STAGE_FIRST_BOOT);
+
+	/*
+	 * Trigger an update of the PVTI. Calculating the KVM clock using this
+	 * updated structure will show a delta from the original.
+	 */
+	trigger_pvti_update();
+	pvti_snapshot(&pvti_uncorrected, pvti);
+	GUEST_SYNC(STAGE_UNCORRECTED);
+
+	/*
+	 * Snapshot the corrected time (the host does KVM_SET_CLOCK_GUEST when
+	 * handling STAGE_UNCORRECTED).
+	 */
+	pvti_snapshot(&pvti_corrected, pvti);
+
+	/*
+	 * Sample the TSC at a single point in time, then calculate the
+	 * effective KVM clock using the PVTI from each stage. Verify that the
+	 * corrected clock matches the boot clock to within ±2ns.
+	 */
+	tsc_guest = rdtsc();
+
+	clk_boot = pvclock_read_cycles(&pvti_boot, tsc_guest);
+	clk_uncorrected = pvclock_read_cycles(&pvti_uncorrected, tsc_guest);
+	clk_corrected = pvclock_read_cycles(&pvti_corrected, tsc_guest);
+
+	/*
+	 * The host stepped the KVM clock forward by 10 seconds at
+	 * STAGE_FIRST_BOOT, so the uncorrected clock must diverge; without
+	 * this, a no-op KVM_SET_CLOCK_GUEST would pass the test below.
+	 */
+	__GUEST_ASSERT((s64)(clk_uncorrected - clk_boot) > NSEC_PER_SEC,
+		       "uncorrected clock did not diverge (boot=%lu uncorrected=%lu)",
+		       clk_boot, clk_uncorrected);
+
+	delta_corrected = clk_boot - clk_corrected;
+
+	__GUEST_ASSERT(delta_corrected >= -2 && delta_corrected <= 2,
+		       "corrected delta %ld out of range (boot=%lu uncorrected=%lu corrected=%lu)",
+		       delta_corrected, clk_boot, clk_uncorrected, clk_corrected);
+
+	GUEST_SYNC(STAGE_CORRECTED);
+}
+
+static void run_test(struct kvm_vm *vm, struct kvm_vcpu *vcpu,
+		     unsigned int sleep_sec)
+{
+	struct pvclock_vcpu_time_info pvti_before;
+	struct kvm_clock_data clock_step;
+	struct ucall uc;
+
+	for (;;) {
+		vcpu_run(vcpu);
+		TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+
+		switch (get_ucall(vcpu, &uc)) {
+		case UCALL_ABORT:
+			REPORT_GUEST_ASSERT(uc);
+			break;
+		case UCALL_SYNC:
+			break;
+		default:
+			TEST_FAIL("Unexpected ucall");
+		}
+
+		switch (uc.args[1]) {
+		case STAGE_FIRST_BOOT:
+			/* Save the pvclock parameters before the update. */
+			vcpu_get_clock_guest(vcpu, &pvti_before);
+
+			/* Sleep to let the clocks diverge. */
+			sleep(sleep_sec);
+
+			/*
+			 * Step the KVM clock forward 10 seconds so that the
+			 * divergence the correction must eliminate is
+			 * deterministic, not at the mercy of accumulated
+			 * drift during the sleep.
+			 */
+			vm_get_clock(vm, &clock_step);
+			clock_step.clock += 10ull * NSEC_PER_SEC;
+			clock_step.flags = 0;
+			vm_set_clock(vm, &clock_step);
+			break;
+
+		case STAGE_UNCORRECTED:
+			/* Restore the original pvclock parameters. */
+			vcpu_set_clock_guest(vcpu, &pvti_before);
+			break;
+
+		case STAGE_CORRECTED:
+			/* Guest verified the delta in-guest. */
+			return;
+
+		default:
+			TEST_FAIL("Unknown stage %lu", uc.args[1]);
+		}
+	}
+}
+
+static void configure_pvclock(struct kvm_vm *vm)
+{
+	unsigned int nr_pages;
+
+	nr_pages = vm_calc_num_guest_pages(VM_MODE_DEFAULT, getpagesize());
+	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS,
+				    KVMCLOCK_GPA, 1, nr_pages, 0);
+	virt_map(vm, KVMCLOCK_GPA, KVMCLOCK_GPA, nr_pages);
+}
+
+static void run_at_frequency(u64 tsc_khz, unsigned int sleep_sec)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+
+	pr_info("Testing at TSC frequency %lu kHz\n", tsc_khz);
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	configure_pvclock(vm);
+	vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ, (void *)tsc_khz);
+	run_test(vm, vcpu, sleep_sec);
+	kvm_vm_free(vm);
+}
+
+static void test_tsc_stable_bit(void);
+static void test_clock_guest_with_offsets(void);
+
+static void usage(const char *name)
+{
+	printf("Usage: %s [options]\n"
+	       "  -s, --sleep SEC     sleep duration between snapshots (default: 2)\n"
+	       "  -h, --help          show this help\n", name);
+}
+
+int main(int argc, char *argv[])
+{
+	static const struct option long_opts[] = {
+		{ "sleep", required_argument, NULL, 's' },
+		{ "help",  no_argument,       NULL, 'h' },
+		{ NULL,    0,                  NULL,  0  },
+	};
+	unsigned int sleep_sec = 2;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	u64 host_khz;
+	u64 freq;
+	int opt;
+
+	while ((opt = getopt_long(argc, argv, "s:h", long_opts, NULL)) != -1) {
+		switch (opt) {
+		case 's':
+			sleep_sec = atoi_non_negative("sleep", optarg);
+			break;
+		case 'h':
+		default:
+			usage(argv[0]);
+			return opt == 'h' ? 0 : 1;
+		}
+	}
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_TSC_CONTROL));
+
+	TEST_REQUIRE(kvm_has_cap(KVM_CAP_CLOCK_GUEST));
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	configure_pvclock(vm);
+
+	/* First run at native frequency (no scaling). */
+	run_test(vm, vcpu, sleep_sec);
+
+	/*
+	 * Then enumerate a range of TSC frequencies crossing the 32-bit
+	 * boundary, to exercise the scaling path at various ratios.
+	 */
+	host_khz = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	kvm_vm_free(vm);
+
+	for (freq = 1000000; freq <= 5000000; freq += 500000) {
+		if (freq == host_khz)
+			continue;
+		run_at_frequency(freq, sleep_sec);
+	}
+
+	test_tsc_stable_bit();
+	test_clock_guest_with_offsets();
+
+	return 0;
+}
+
+static volatile u32 vcpu_counter;
+static void guest_code_stable_bit(void)
+{
+	u32 idx = __atomic_fetch_add(&vcpu_counter, 1, __ATOMIC_SEQ_CST);
+	u64 gpa = KVMCLOCK_GPA + idx * KVMCLOCK_SIZE;
+
+	wrmsr(MSR_KVM_SYSTEM_TIME_NEW, gpa | KVM_MSR_ENABLED);
+	GUEST_SYNC(0);
+	GUEST_SYNC(0);
+	GUEST_SYNC(0);
+}
+
+static void run_vcpu_once(struct kvm_vcpu *vcpu)
+{
+	struct ucall uc;
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+	switch (get_ucall(vcpu, &uc)) {
+	case UCALL_ABORT:
+		REPORT_GUEST_ASSERT(uc);
+		break;
+	case UCALL_SYNC:
+		break;
+	default:
+		TEST_FAIL("Unexpected ucall");
+	}
+}
+
+static void test_tsc_stable_bit(void)
+{
+	struct pvclock_vcpu_time_info pvti;
+	struct kvm_vcpu *vcpus[2];
+	struct kvm_vm *vm;
+	int ret;
+
+	pr_info("Testing PVCLOCK_TSC_STABLE_BIT with matched/unmatched TSCs\n");
+
+	vm = vm_create_with_vcpus(2, guest_code_stable_bit, vcpus);
+	configure_pvclock(vm);
+
+	/*
+	 * Case 1: All TSCs matched (same frequency and offset).
+	 * Master clock should be active, PVCLOCK_TSC_STABLE_BIT set.
+	 */
+	run_vcpu_once(vcpus[0]);
+
+	vcpu_get_clock_guest(vcpus[0], &pvti);
+	TEST_ASSERT(pvti.flags & PVCLOCK_TSC_STABLE_BIT,
+		    "PVCLOCK_TSC_STABLE_BIT should be set with matched TSCs");
+
+	/*
+	 * Case 2: Different TSC offset, same frequency.
+	 * Master clock should still be active (frequency matches), but
+	 * PVCLOCK_TSC_STABLE_BIT should be cleared (offsets differ).
+	 */
+	if (__vcpu_has_device_attr(vcpus[1], KVM_VCPU_TSC_CTRL,
+				   KVM_VCPU_TSC_OFFSET)) {
+		pr_info("  Skipping offset test (KVM_VCPU_TSC_OFFSET not supported)\n");
+		goto case_freq;
+	}
+	vcpu_set_tsc_offset(vcpus[1], 12345678);
+	run_vcpu_once(vcpus[1]);
+	run_vcpu_once(vcpus[0]);
+
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti);
+	if (ret) {
+		/*
+		 * Master clock disabled by offset mismatch — old kernel.
+		 * -ENODATA is the only legitimate reason to skip; anything
+		 * else is a regression, not an old kernel.
+		 */
+		TEST_ASSERT(errno == ENODATA,
+			    "GET_CLOCK_GUEST failed with unexpected errno %d", errno);
+		pr_info("  Skipping offset test (master clock requires matched offsets)\n");
+		goto case_freq;
+	}
+	TEST_ASSERT(!(pvti.flags & PVCLOCK_TSC_STABLE_BIT),
+		    "PVCLOCK_TSC_STABLE_BIT should be clear with offset-mismatched TSCs");
+
+case_freq:
+	/*
+	 * Case 3: Different TSC frequency.
+	 * Master clock should be disabled entirely.
+	 */
+	vcpu_ioctl(vcpus[1], KVM_SET_TSC_KHZ,
+		   (void *)(unsigned long)(__vcpu_ioctl(vcpus[1], KVM_GET_TSC_KHZ, NULL) / 2));
+	/* Write TSC to trigger kvm_synchronize_tsc / kvm_track_tsc_matching */
+	vcpu_set_msr(vcpus[1], MSR_IA32_TSC, 0);
+	run_vcpu_once(vcpus[1]);
+
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti);
+	TEST_ASSERT(ret && errno == ENODATA,
+		    "GET_CLOCK_GUEST should fail with frequency-mismatched TSCs, got %d (errno %d)",
+		    ret, errno);
+
+	kvm_vm_free(vm);
+}
+
+static void test_clock_guest_with_offsets(void)
+{
+	struct pvclock_vcpu_time_info pvti0, pvti1, pvti1_after;
+	struct kvm_vcpu *vcpus[2];
+	struct kvm_vm *vm;
+	s64 delta;
+	int ret;
+
+	pr_info("Testing KVM_[GS]ET_CLOCK_GUEST with different TSC offsets\n");
+
+	vm = vm_create_with_vcpus(2, guest_code_stable_bit, vcpus);
+	configure_pvclock(vm);
+
+	/* Set different TSC offsets on the two vCPUs */
+	vcpu_set_tsc_offset(vcpus[0], 0);
+	vcpu_set_tsc_offset(vcpus[1], 1000000000ull);
+
+	/* Run both to establish kvmclock */
+	run_vcpu_once(vcpus[0]);
+	run_vcpu_once(vcpus[1]);
+
+	/* GET_CLOCK_GUEST on both — should succeed (master clock active) */
+	ret = __vcpu_get_clock_guest(vcpus[0], &pvti0);
+	if (ret) {
+		TEST_ASSERT(errno == ENODATA,
+			    "GET_CLOCK_GUEST failed with unexpected errno %d", errno);
+		pr_info("  Skipping (master clock requires matched offsets on this kernel)\n");
+		kvm_vm_free(vm);
+		return;
+	}
+	vcpu_get_clock_guest(vcpus[1], &pvti1);
+
+	/* The tsc_timestamps should differ (different offsets) */
+	TEST_ASSERT(pvti0.tsc_timestamp != pvti1.tsc_timestamp,
+		    "tsc_timestamps should differ with different offsets");
+
+	/* Sleep to let time elapse, then restore vcpu0's clock */
+	sleep(1);
+	vcpu_set_clock_guest(vcpus[0], &pvti0);
+
+	/* Run vcpu0 to process the clock update */
+	run_vcpu_once(vcpus[0]);
+
+	/*
+	 * After SET on vcpu0, verify the correction worked by getting
+	 * the clock on vcpu0 again. The mul/shift should be the same,
+	 * and computing kvmclock at the same TSC should give the same
+	 * result as the original (within ±2ns).
+	 */
+	{
+		struct pvclock_vcpu_time_info pvti0_after;
+		u64 tsc_now, clk_from_old, clk_from_new;
+
+		vcpu_get_clock_guest(vcpus[0], &pvti0_after);
+
+		TEST_ASSERT(pvti0_after.tsc_to_system_mul == pvti0.tsc_to_system_mul &&
+			    pvti0_after.tsc_shift == pvti0.tsc_shift,
+			    "mul/shift changed across KVM_SET_CLOCK_GUEST");
+
+		tsc_now = pvti0_after.tsc_timestamp;
+		clk_from_old = pvclock_read_cycles(&pvti0, tsc_now);
+		clk_from_new = pvclock_read_cycles(&pvti0_after, tsc_now);
+
+		delta = (s64)clk_from_new - (s64)clk_from_old;
+		TEST_ASSERT(delta >= -2 && delta <= 2,
+			    "clock correction delta should be <=2ns, got %ld ns",
+			    delta);
+	}
+
+	/*
+	 * Also verify that vcpu1's clock is still accessible (master
+	 * clock still active with different offsets).
+	 */
+	vcpu_get_clock_guest(vcpus[1], &pvti1_after);
+
+	kvm_vm_free(vm);
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479231.1683360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4l-000275-Ao; Mon, 09 Nov 2026 01:21:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479231.1683360; Mon, 09 Nov 2026 01:21:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4k-00022Q-B3; Mon, 09 Nov 2026 01:21:34 +0000
Received: by outflank-mailman (input) for mailman id 1479231;
 Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zr-Kx
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-0096DX-1Z; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fc6-bab6-0a2a0a5309dd-0a2a45058a74-22
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-4cb1-0a2a45050019-5a9b5cc79aea-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYA-296r; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUJ-2VXs;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=vYXMTPtnDfVFKHKWc3c8IyF9mzywvLRRgeMcfGElahM=; b=bAanfjHyV7TavYGHIZnkK69C9G
	12HTjFW/G7IRuAmyVt8XCOmSXwn2P/hkoyxNXpkHQ12M8cLU1RKyIRylmtTIzL1QFwvqR93pAJrqQ
	dN2pcBydO4GhvE8vkSon0mr8KAzLaSE+/9zN5M7ZZiDkrj/Y0lerujUwUd7qI+RIKPLrLamL02Vb4
	KiyU7wmJFhulip/G9Hk48sKF0fHEFTYtD7oLNSc84TV0ONapekzPChPyBNaImEV+qtlzmBYXGPL4/
	3KY7ItIe85uVdba2njjo7mWt0QLTW93psPjWv9iKzLUFkTvIXTN+OOmHukzUs8KLtyL9zvvhRHpZO
	JVWH1DEA==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 05/24] KVM: x86: Factor out kvm_use_master_clock()
Date: Sun,  8 Nov 2026 17:20:51 -0800
Message-ID: <20261109012112.3415328-6-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-c201ff/1794187282-F46A52A1-50627ED0/0/0
X-purgate-type: clean
X-purgate-size: 4291

From: David Woodhouse <dwmw@amazon.co.uk>

Both kvm_track_tsc_matching() and pvclock_update_vm_gtod_copy() make a
decision about whether the KVM clock should be in master clock mode.
They used *different* criteria for the decision though. This isn't
really a problem; it only has the potential to cause unnecessary
invocations of KVM_REQ_MASTERCLOCK_UPDATE if the masterclock was
disabled due to TSC going backwards, or the guest using the old MSR.
But it isn't pretty.

Factor the decision out to a single function. And document the
historical reason why it's disabled for guests that use the old
MSR_KVM_SYSTEM_TIME.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 arch/x86/kvm/x86.c | 40 ++++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 73015825f218..ade7e71eb57f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1112,11 +1112,30 @@ static inline bool gtod_is_based_on_tsc(int mode)
 {
 	return mode == VDSO_CLOCKMODE_TSC || mode == VDSO_CLOCKMODE_HVCLOCK;
 }
-#endif
+
+static bool kvm_use_master_clock(struct kvm *kvm)
+{
+	struct kvm_arch *ka = &kvm->arch;
+
+	/*
+	 * The 'old kvmclock' check is a workaround (from 2015) for a
+	 * SUSE 2.6.16 kernel that didn't boot if the system_time in
+	 * its kvmclock was too far behind the current time. So the
+	 * mode of just setting the reference point and allowing time
+	 * to proceed linearly from there makes it fail to boot.
+	 * Despite that being kind of the *point* of the way the clock
+	 * is exposed to the guest. By coincidence, the offending
+	 * kernels used the old MSR_KVM_SYSTEM_TIME, which was moved
+	 * only because it resided in the wrong number range. So the
+	 * workaround is activated for *all* guests using the old MSR.
+	 */
+	return ka->all_vcpus_matched_freq &&
+		!ka->backwards_tsc_observed &&
+		!ka->boot_vcpu_runs_old_kvmclock;
+}
 
 static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
-#ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
 	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
@@ -1171,7 +1190,7 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
 	 * accounts for its offset.
 	 */
-	bool use_master_clock = ka->all_vcpus_matched_freq &&
+	bool use_master_clock = kvm_use_master_clock(vcpu->kvm) &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
@@ -1186,8 +1205,11 @@ static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 	trace_kvm_track_tsc(vcpu->vcpu_id, ka->nr_vcpus_matched_tsc,
 			    atomic_read(&vcpu->kvm->online_vcpus),
 		            ka->use_master_clock, gtod->clock.vclock_mode);
-#endif
 }
+#else
+static inline void kvm_track_tsc_matching(struct kvm_vcpu *vcpu,
+					  bool update_mclock) {}
+#endif
 
 /*
  * Multiply tsc by a fixed point number represented by ratio.
@@ -1661,10 +1683,9 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &kvm->arch;
 	int vclock_mode;
-	bool host_tsc_clocksource, freqs_matched;
+	bool host_tsc_clocksource;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	freqs_matched = ka->all_vcpus_matched_freq;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -1674,9 +1695,8 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 					&ka->master_kernel_ns,
 					&ka->master_cycle_now);
 
-	ka->use_master_clock = host_tsc_clocksource && freqs_matched
-				&& !ka->backwards_tsc_observed
-				&& !ka->boot_vcpu_runs_old_kvmclock;
+	ka->use_master_clock = host_tsc_clocksource &&
+				kvm_use_master_clock(kvm);
 
 	if (ka->use_master_clock) {
 		u64 tsc_hz;
@@ -1704,7 +1724,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 
 	vclock_mode = pvclock_gtod_data.clock.vclock_mode;
 	trace_kvm_update_master_clock(ka->use_master_clock, vclock_mode,
-					freqs_matched);
+					ka->all_vcpus_matched_freq);
 #endif
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479239.1683371 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4m-0002Lr-TM; Mon, 09 Nov 2026 01:21:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479239.1683371; Mon, 09 Nov 2026 01:21:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4l-0002F5-Lb; Mon, 09 Nov 2026 01:21:35 +0000
Received: by outflank-mailman (input) for mailman id 1479239;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4a-00087C-2V
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-0014kv-Dr; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f9a-8faa-0a2a0a5109dd-0a2a450aa0d8-38
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-f2d2-0a2a450a0019-5a9b5cc79ae4-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4S-00000006AYK-02Bj; Mon, 09 Nov 2026 01:21:16 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVW-1fdS;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=Ab0Mw4iSTNA2k5eZaP75VVaX8Iz1KNLj1JlNYy/km+U=; b=bS27lcWHZuP1+9EjRMhxO9quQF
	UK2/7axrd3yAA+3DgK3Sl98QEgWuDVQT4UUtLo6XJNtbmsBI1eS9RqodBSLBRXq+dU2bAXF1ObSAS
	iv58LgoHw6D+nhYss932nAeAMr4MATlz6T2uEYvlIUrHtR8yWl0e4UWuuHFldHn2yJLdKnlDxhjgC
	muOwvWZ1+L+oHb1hxSia9EkthCmqEO34GimkJh+RJDnXM/VuOaWhkuj9cjiIIE1mN6x/HFY+0DuiB
	EyN81hq4I2I6mnq+6JSxG031oQtRNmBZpwHEGMrxYIjJTbjiuiPsh8VXaGoh/5p/NOurPtl5Td0WM
	8MupR2SQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 22/24] KVM: x86/xen: Drop open-coded fallback clock read in kvm_xen_start_timer()
Date: Sun,  8 Nov 2026 17:21:08 -0800
Message-ID: <20261109012112.3415328-23-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-4011c0/1794187282-4ABD8CFC-1BD4FBFE/0/0
X-purgate-type: clean
X-purgate-size: 5179

From: David Woodhouse <dwmw@amazon.co.uk>

When no coherent (CLOCK_MONOTONIC, TSC) pair was available,
kvm_xen_start_timer() computed one from separate ktime_get() and
rdtsc() calls rather than using get_kvmclock_ns(), with a comment
explaining that the latter had a systemic error from scaling host TSC
directly to nanoseconds instead of scaling to the guest TSC first.

Commit abdef42276d8 ("KVM: x86: Fix KVM clock precision in
get_kvmclock() with TSC scaling") removed that systemic error: in
master clock mode, get_kvmclock_ns() now scales the host TSC delta to
the guest TSC and converts it with the guest's own mul/shift,
computing precisely what the guest would.

The fallback is also nearly unreachable. It sits behind the
use_master_clock check, so on 32-bit (where the master clock is never
active) it is dead code, and on 64-bit kvm_get_monotonic_and_clockread()
can only fail there if the host clocksource changed after the last
master clock update, in the window before the resulting masterclock
update is processed. In exactly that window get_kvmclock_ns() takes
its raw-clock fallback path rather than the guest TSC computation,
which is continuous with the last valid snapshot and tolerable for
the one timer that can be started before the pending masterclock
update lands.

Drop it and fall back to the existing get_kvmclock_ns() path.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/kvm/xen.c | 48 ++++++++++++++++++++++------------------------
 1 file changed, 23 insertions(+), 25 deletions(-)

diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c
index 6aa00f746cba..dae43acb3cc3 100644
--- a/arch/x86/kvm/xen.c
+++ b/arch/x86/kvm/xen.c
@@ -188,7 +188,7 @@ static void kvm_xen_start_timer(struct kvm_vcpu *vcpu, u64 guest_abs,
 	struct kvm_vcpu_xen *xen = &vcpu->arch.xen;
 	int64_t kernel_now, delta;
 	uint64_t guest_now;
-	int r = -EOPNOTSUPP;
+	bool fallback = true;
 
 	/*
 	 * The guest provides the requested timeout in absolute nanoseconds
@@ -210,6 +210,7 @@ static void kvm_xen_start_timer(struct kvm_vcpu *vcpu, u64 guest_abs,
 	do {
 		struct pvclock_vcpu_time_info hv_clock;
 		uint64_t host_tsc, guest_tsc;
+		int r = -EOPNOTSUPP;
 
 		if (!cpu_feature_enabled(X86_FEATURE_CONSTANT_TSC) ||
 		    !vcpu->kvm->arch.use_master_clock)
@@ -230,43 +231,40 @@ static void kvm_xen_start_timer(struct kvm_vcpu *vcpu, u64 guest_abs,
 		if (r)
 			break;
 
+		/*
+		 * With use_master_clock set, the clocksource was TSC-based
+		 * when the master clock was last updated. The clockread can
+		 * only fail here if the clocksource has changed since, in
+		 * which case a masterclock update is already pending and
+		 * get_kvmclock_ns() returns the raw-clock fallback value —
+		 * continuous with the last valid snapshot, which is as good
+		 * as it gets in that transient window.
+		 */
 		if (!IS_ENABLED(CONFIG_64BIT) ||
-		    !kvm_get_monotonic_and_clockread(&kernel_now, &host_tsc)) {
-			/*
-			 * Don't fall back to get_kvmclock_ns() because it's
-			 * broken; it has a systemic error in its results
-			 * because it scales directly from host TSC to
-			 * nanoseconds, and doesn't scale first to guest TSC
-			 * and *then* to nanoseconds as the guest does.
-			 *
-			 * There is a small error introduced here because time
-			 * continues to elapse between the ktime_get() and the
-			 * subsequent rdtsc(). But not the systemic drift due
-			 * to get_kvmclock_ns().
-			 */
-			kernel_now = ktime_get(); /* This is CLOCK_MONOTONIC */
-			host_tsc = rdtsc();
-		}
+		    !kvm_get_monotonic_and_clockread(&kernel_now, &host_tsc))
+			break;
 
 		/* Calculate the guest kvmclock as the guest would do it. */
 		guest_tsc = kvm_read_l1_tsc(vcpu, host_tsc);
 		guest_now = __pvclock_read_cycles(&hv_clock, guest_tsc);
+		fallback = false;
 	} while (0);
 
-	if (r) {
+	if (fallback) {
 		/*
-		 * Without CONSTANT_TSC, get_kvmclock_ns() is the only option.
+		 * Without CONSTANT_TSC and the master clock,
+		 * get_kvmclock_ns() is the only option.
 		 *
 		 * Also if the guest PV clock hasn't been set up yet, as is
 		 * likely to be the case during migration when the vCPU has
 		 * not been run yet. It would be possible to calculate the
 		 * scaling factors properly in that case but there's not much
-		 * point in doing so. The get_kvmclock_ns() drift accumulates
-		 * over time, so it's OK to use it at startup. Besides, on
-		 * migration there's going to be a little bit of skew in the
-		 * precise moment at which timers fire anyway. Often they'll
-		 * be in the "past" by the time the VM is running again after
-		 * migration.
+		 * point in doing so. Without the master clock, the
+		 * get_kvmclock_ns() drift accumulates over time, so it's OK
+		 * to use it at startup. Besides, on migration there's going
+		 * to be a little bit of skew in the precise moment at which
+		 * timers fire anyway. Often they'll be in the "past" by the
+		 * time the VM is running again after migration.
 		 */
 		guest_now = get_kvmclock_ns(vcpu->kvm);
 		kernel_now = ktime_get();
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479240.1683380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4o-0002ci-OL; Mon, 09 Nov 2026 01:21:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479240.1683380; Mon, 09 Nov 2026 01:21:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4n-0002ZL-7u; Mon, 09 Nov 2026 01:21:37 +0000
Received: by outflank-mailman (input) for mailman id 1479240;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4a-00087N-2U
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-0096Ki-F6; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11f9a-8faa-0a2a0a5109dd-0a2a450aa0d8-40
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-f2d2-0a2a450a0019-5a9b5cc783aa-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AY9-28yu; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUG-2M1t;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=1e8jlVZXaPnprQ0WSIFvIXD2UWssR4vVaDT7fBzxPKM=; b=Z0lWkq9caKZ3gCoXJORM570T9M
	BCaNriZVoItOnZ7qWylhgXwxz0boBAqH2B+iw53ih/rEVextM/R0UjeCyeQIIDqvIqYgW0LoF1zCq
	lrzcriCJ4zVjHpoEm/q9ealbGHUwgeHPWfIgP83444Eo7ai9rmexf++tsuQtr9eG2nyHtzui2apZs
	dwLGCwcIZrs2N6ouK7iix3aECPu5Mkb6SpU2wLNiqusT/N5XOFMfCoGqAvktkQlOJRDKo4Dt5s/4U
	RWaUOWAmA2P/QVVrNKMHQoGTh4283sj3ioplz2Bm5ya6NujsQIjDWVVKwTQLmf1sPkqYW9pjgIwI6
	MkcEOMcg==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 04/24] KVM: x86: Allow KVM master clock mode when TSCs are offset from each other
Date: Sun,  8 Nov 2026 17:20:50 -0800
Message-ID: <20261109012112.3415328-5-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-4011c0/1794187282-522C0CFC-F9F84AAD/0/0
X-purgate-type: clean
X-purgate-size: 15559

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, a guest writing different TSC values on different vCPUs could
force KVM out of master clock mode. With this change, only a frequency
mismatch disables master clock. The only ways for non-master-clock mode
to happen now are archaic hardware without a TSC-based clocksource, a
VMM that sets different TSC frequencies across vCPUs, or a guest using
the legacy MSR_KVM_SYSTEM_TIME (which could be addressed in future by
simply updating tsc_timestamp more frequently rather than falling out of
master clock mode entirely).

Running at a different frequency would lead to a systemic skew between
the clock(s) as observed by different vCPUs due to arithmetic precision
in the scaling. So that should indeed force the clock to be based on the
host's CLOCK_MONOTONIC_RAW instead of being in masterclock mode where it
is defined by the guest TSC.

But vCPUs having different TSC *offsets* is not a problem, because the
KVM clock is a single VM-wide nanosecond timeline; only its expression
in TSC cycles is per-vCPU. Each vCPU's pvclock structure is generated by
translating the shared master clock snapshot into that vCPU's own TSC
domain via kvm_read_l1_tsc(), which applies the vCPU's scaling ratio and
offset to the snapshot's tsc_timestamp. When the guest then computes
system_time + (rdtsc - tsc_timestamp) * rate, its own offset is present
in both rdtsc and tsc_timestamp and cancels out: every vCPU reads the
same VM-wide clock from its own pvclock. VM-scoped consumers of the
master clock (KVM_GET_CLOCK, the wall clock epoch, the Xen runstate
times) operate purely in the nanosecond domain, where the per-vCPU
offset never appears at all.

Only two consumers genuinely depend on the TSC offsets matching, and
both are already guarded by PVCLOCK_TSC_STABLE_BIT:

 1. A guest vCPU reading a *sibling* vCPU's pvclock structure with its
    own TSC would compute garbage. This is precisely why commit
    b48aa97e3820 ("KVM: x86: require matched TSC offsets for master clock")
    required matched offsets. But the guest-side guard for it already
    exists: when PVCLOCK_TSC_STABLE_BIT is clear, guests fall back to
    the global last_value monotonicity clamp for cross-vCPU reads.

 2. The Hyper-V TSC page is a single VM-wide {scale, offset} pair which
    every guest vCPU applies to its own rdtsc, so it cannot represent
    divergent offsets. It is self-guarding: compute_tsc_page_parameters()
    refuses to populate the page unless PVCLOCK_TSC_STABLE_BIT is set,
    which forces such guests onto the (nanosecond domain, and thus safe)
    TIME_REF_COUNT MSR instead.

So: use frequency match for master clock eligibility, and full TSC match
(including offset) only for PVCLOCK_TSC_STABLE_BIT, which tells the
guest it is safe to skip cross-vCPU monotonicity enforcement.

Track frequency matching separately from offset matching using a
dedicated freq generation counter (cur_tsc_freq_generation) that only
bumps on actual frequency changes. Each vCPU is counted exactly once per
freq generation via a per-vCPU this_tsc_freq_generation field, preventing
repeated syncs of the same vCPU from falsely re-enabling master clock.

Note that the generation-based counting has a known limitation: if all
vCPUs are in sync and one changes away and then back again, the other
vCPUs are still at the old generation and won't be counted until they
sync again (which may never happen). This was always the case for the
offset tracking and isn't expected VMM behaviour — although it is the
scenario that the VM-wide KVM_SET_TSC_KHZ ioctl was introduced to handle
cleanly.

While at it, restructure the existing TSC offset generation tracking to
use the same pattern: reset counter to zero on new generation, then
unconditionally count vCPUs that haven't been seen in this generation.
Both counters now use a consistent >= online_vcpus threshold (1-based
counting where the reference vCPU is included in the count).

The divergent-offset behaviour is exercised by pvclock_migration_test,
which runs vCPUs with TSCs offset by ±0.5-1s from each other and
verifies that the master clock survives, that PVCLOCK_TSC_STABLE_BIT is
cleared, and that all vCPUs nevertheless agree on the KVM clock to
within a nanosecond, before and after a simulated live migration.

KVM_SET_TSC_KHZ on a vCPU which has already run does not pass through
__kvm_synchronize_tsc(), so at this point in the series it leaves the
frequency-match state stale, exactly as it previously left the offset
match state stale. The later patch "KVM: x86: Re-synchronize TSC after
KVM_SET_TSC_KHZ" funnels it through the invalidation above.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/x86/include/asm/kvm_host.h |   4 ++
 arch/x86/kvm/trace.h            |  12 ++--
 arch/x86/kvm/x86.c              | 114 ++++++++++++++++++++++++++------
 3 files changed, 102 insertions(+), 28 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 1efca01647d2..30e89e8fb975 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -887,6 +887,7 @@ struct kvm_vcpu_arch {
 	u64 this_tsc_nsec;
 	u64 this_tsc_write;
 	u64 this_tsc_generation;
+	u64 this_tsc_freq_generation;
 	bool tsc_catchup;
 	bool tsc_always_catchup;
 	s8 virtual_tsc_shift;
@@ -1243,6 +1244,9 @@ struct kvm_arch {
 	u64 cur_tsc_offset;
 	u64 cur_tsc_generation;
 	bool all_vcpus_matched_tsc;
+	bool all_vcpus_matched_freq;
+	int nr_vcpus_matched_freq;
+	u64 cur_tsc_freq_generation;
 	int nr_vcpus_matched_tsc;
 
 	u32 default_tsc_khz;
diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h
index 93de876c318c..704683532ef0 100644
--- a/arch/x86/kvm/trace.h
+++ b/arch/x86/kvm/trace.h
@@ -1003,25 +1003,25 @@ TRACE_EVENT(kvm_write_tsc_offset,
 	{VDSO_CLOCKMODE_TSC,  "tsc"}			\
 
 TRACE_EVENT(kvm_update_master_clock,
-	TP_PROTO(bool use_master_clock, unsigned int host_clock, bool offset_matched),
-	TP_ARGS(use_master_clock, host_clock, offset_matched),
+	TP_PROTO(bool use_master_clock, unsigned int host_clock, bool freq_matched),
+	TP_ARGS(use_master_clock, host_clock, freq_matched),
 
 	TP_STRUCT__entry(
 		__field(		bool,	use_master_clock	)
 		__field(	unsigned int,	host_clock		)
-		__field(		bool,	offset_matched		)
+		__field(		bool,	freq_matched		)
 	),
 
 	TP_fast_assign(
 		__entry->use_master_clock	= use_master_clock;
 		__entry->host_clock		= host_clock;
-		__entry->offset_matched		= offset_matched;
+		__entry->freq_matched		= freq_matched;
 	),
 
-	TP_printk("masterclock %d hostclock %s offsetmatched %u",
+	TP_printk("masterclock %d hostclock %s freqmatched %u",
 		  __entry->use_master_clock,
 		  __print_symbolic(__entry->host_clock, host_clocks),
-		  __entry->offset_matched)
+		  __entry->freq_matched)
 );
 
 TRACE_EVENT(kvm_track_tsc,
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index d29e5bc75f7a..73015825f218 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1114,30 +1114,72 @@ static inline bool gtod_is_based_on_tsc(int mode)
 }
 #endif
 
-static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool new_generation)
+static void kvm_track_tsc_matching(struct kvm_vcpu *vcpu, bool update_mclock)
 {
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &vcpu->kvm->arch;
 	struct pvclock_gtod_data *gtod = &pvclock_gtod_data;
+	bool prev_matched_tsc = ka->all_vcpus_matched_tsc;
+	bool prev_matched_freq = ka->all_vcpus_matched_freq;
 
 	/*
-	 * To use the masterclock, the host clocksource must be based on TSC
-	 * and all vCPUs must have matching TSCs.  Note, the count for matching
-	 * vCPUs doesn't include the reference vCPU, hence "+1".
+	 * Track whether all vCPUs have matching TSC offsets (for
+	 * PVCLOCK_TSC_STABLE_BIT) and matching frequencies (for
+	 * master clock eligibility).
+	 */
+
+	/*
+	 * A new vCPU might already have incremented ->online_vcpus
+	 * and cause a temporary false negative here. But will then
+	 * call kvm_synchronize_tsc() from kvm_arch_vcpu_postcreate()
+	 * and finish the job.
 	 */
-	ka->all_vcpus_matched_tsc = (ka->nr_vcpus_matched_tsc + 1 ==
-				     atomic_read(&vcpu->kvm->online_vcpus));
+	int online = atomic_read(&vcpu->kvm->online_vcpus);
+	/*
+	 * WRITE_ONCE() pairs with the READ_ONCE() in kvm_guest_time_update(),
+	 * which samples the flag locklessly (outside both tsc_write_lock and
+	 * its pvclock seqcount read section); the race is benign (a stale
+	 * value merely delays the PVCLOCK_TSC_STABLE_BIT broadcast to the
+	 * masterclock update which is requested below).
+	 */
+	WRITE_ONCE(ka->all_vcpus_matched_tsc,
+		   ka->nr_vcpus_matched_tsc >= online);
 
-	bool use_master_clock = ka->all_vcpus_matched_tsc &&
+	update_mclock |= (prev_matched_tsc != ka->all_vcpus_matched_tsc);
+
+	/*
+	 * all_vcpus_matched_freq starts true and is cleared when
+	 * __kvm_synchronize_tsc() detects a frequency mismatch.
+	 * Re-enable when all vCPUs have synced with matching frequency.
+	 * If all offsets also match, that implies frequencies match too.
+	 */
+	if (ka->all_vcpus_matched_tsc ||
+	    ka->nr_vcpus_matched_freq >= online)
+		ka->all_vcpus_matched_freq = true;
+
+	/*
+	 * A frequency-match transition needs a masterclock update too:
+	 * when the last vCPU reaches the new frequency, the masterclock
+	 * scaling factors still describe the old one, and no toggle of
+	 * use_master_clock occurs to trigger the refresh.
+	 */
+	update_mclock |= (prev_matched_freq != ka->all_vcpus_matched_freq);
+
+	/*
+	 * To use the masterclock, the host clocksource must be based on TSC
+	 * and all vCPUs must have matching TSC *frequency*. Different offsets
+	 * are fine — each vCPU's pvclock has its own tsc_timestamp that
+	 * accounts for its offset.
+	 */
+	bool use_master_clock = ka->all_vcpus_matched_freq &&
 				gtod_is_based_on_tsc(gtod->clock.vclock_mode);
 
 	/*
-	 * Request a masterclock update if the masterclock needs to be toggled
-	 * on/off, or when starting a new generation and the masterclock is
-	 * enabled (compute_guest_tsc() requires the masterclock snapshot to be
-	 * taken _after_ the new generation is created).
+	 * Request a masterclock update if needed: toggling master clock,
+	 * new generation requiring a fresh snapshot, or a change in
+	 * all_vcpus_matched_tsc (to broadcast PVCLOCK_TSC_STABLE_BIT).
 	 */
-	if ((ka->use_master_clock && new_generation) ||
+	if ((ka->use_master_clock && update_mclock) ||
 	    (ka->use_master_clock != use_master_clock))
 		kvm_make_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu);
 
@@ -1339,7 +1381,22 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	 * Track the TSC frequency, scaling ratio, and offset for the current
 	 * generation. These are used to detect matching TSC writes and to
 	 * compute the guest TSC from the host clock.
+	 *
+	 * If the frequency changed, master clock mode can no longer be used
+	 * since the kvmclock scaling factors differ between vCPUs.
 	 */
+	if (vcpu->arch.virtual_tsc_khz != kvm->arch.cur_tsc_khz) {
+		kvm->arch.cur_tsc_freq_generation++;
+		kvm->arch.all_vcpus_matched_freq = false;
+		kvm->arch.nr_vcpus_matched_freq = 0;
+	}
+
+	/* Count each vCPU once per freq generation */
+	if (vcpu->arch.this_tsc_freq_generation != kvm->arch.cur_tsc_freq_generation) {
+		vcpu->arch.this_tsc_freq_generation = kvm->arch.cur_tsc_freq_generation;
+		kvm->arch.nr_vcpus_matched_freq++;
+	}
+
 	kvm->arch.cur_tsc_khz = vcpu->arch.virtual_tsc_khz;
 	kvm->arch.cur_tsc_scaling_ratio = vcpu->arch.l1_tsc_scaling_ratio;
 
@@ -1354,6 +1411,16 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	 */
 	vcpu->arch.tsc_offset_adjustment = 0;
 
+	/*
+	 * If the offset changes, the guest-visible pvclock must be
+	 * rewritten before the vCPU runs again: its tsc_timestamp was
+	 * computed with the old offset, and the masterclock (which now
+	 * survives offset changes) will not request the refresh for a
+	 * matched write.
+	 */
+	if (offset != vcpu->arch.l1_tsc_offset)
+		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
+
 	kvm_vcpu_write_tsc_offset(vcpu, offset);
 
 	if (!matched) {
@@ -1365,17 +1432,18 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 		 * exact software computation in compute_guest_tsc()
 		 */
 		kvm->arch.cur_tsc_generation++;
+		WRITE_ONCE(kvm->arch.all_vcpus_matched_tsc, false);
+		kvm->arch.nr_vcpus_matched_tsc = 0;
 		kvm->arch.cur_tsc_nsec = ns;
 		kvm->arch.cur_tsc_write = tsc;
 		kvm->arch.cur_tsc_offset = offset;
-		kvm->arch.nr_vcpus_matched_tsc = 0;
-		kvm->arch.all_vcpus_matched_tsc = false;
-	} else if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
+	}
+
+	if (vcpu->arch.this_tsc_generation != kvm->arch.cur_tsc_generation) {
+		vcpu->arch.this_tsc_generation = kvm->arch.cur_tsc_generation;
 		kvm->arch.nr_vcpus_matched_tsc++;
 	}
 
-	/* Keep track of which generation this VCPU has synchronized to */
-	vcpu->arch.this_tsc_generation = kvm->arch.cur_tsc_generation;
 	vcpu->arch.this_tsc_nsec = kvm->arch.cur_tsc_nsec;
 	vcpu->arch.this_tsc_write = kvm->arch.cur_tsc_write;
 
@@ -1593,10 +1661,10 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 #ifdef CONFIG_X86_64
 	struct kvm_arch *ka = &kvm->arch;
 	int vclock_mode;
-	bool host_tsc_clocksource, vcpus_matched;
+	bool host_tsc_clocksource, freqs_matched;
 
 	lockdep_assert_held(&kvm->arch.tsc_write_lock);
-	vcpus_matched = ka->all_vcpus_matched_tsc;
+	freqs_matched = ka->all_vcpus_matched_freq;
 
 	/*
 	 * If the host uses TSC clock, then passthrough TSC as stable
@@ -1606,7 +1674,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 					&ka->master_kernel_ns,
 					&ka->master_cycle_now);
 
-	ka->use_master_clock = host_tsc_clocksource && vcpus_matched
+	ka->use_master_clock = host_tsc_clocksource && freqs_matched
 				&& !ka->backwards_tsc_observed
 				&& !ka->boot_vcpu_runs_old_kvmclock;
 
@@ -1636,7 +1704,7 @@ static void pvclock_update_vm_gtod_copy(struct kvm *kvm)
 
 	vclock_mode = pvclock_gtod_data.clock.vclock_mode;
 	trace_kvm_update_master_clock(ka->use_master_clock, vclock_mode,
-					vcpus_matched);
+					freqs_matched);
 #endif
 }
 
@@ -1924,7 +1992,7 @@ int kvm_guest_time_update(struct kvm_vcpu *v)
 
 	/* If the host uses TSC clocksource, then it is stable */
 	hv_clock.flags = 0;
-	if (use_master_clock)
+	if (use_master_clock && READ_ONCE(ka->all_vcpus_matched_tsc))
 		hv_clock.flags |= PVCLOCK_TSC_STABLE_BIT;
 
 	if (vcpu->pv_time.active) {
@@ -9568,6 +9636,7 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 
 		raw_spin_lock_irqsave(&ka->tsc_write_lock, flags);
 		WRITE_ONCE(ka->all_vcpus_matched_tsc, false);
+		ka->all_vcpus_matched_freq = false;
 		raw_spin_unlock_irqrestore(&ka->tsc_write_lock, flags);
 		return;
 	}
@@ -10045,6 +10114,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	ratelimit_state_init(&kvm->arch.kvmclock_update_rs, HZ, 10);
 	ratelimit_set_flags(&kvm->arch.kvmclock_update_rs, RATELIMIT_MSG_ON_RELEASE);
 	kvm->arch.kvmclock_offset = -get_kvmclock_base_ns();
+	kvm->arch.all_vcpus_matched_freq = true;
 
 	/*
 	 * Start with all (zero) vCPUs considered matched, so that a VM whose
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479238.1683387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4q-0002yN-8k; Mon, 09 Nov 2026 01:21:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479238.1683387; Mon, 09 Nov 2026 01:21:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4o-0002p9-S7; Mon, 09 Nov 2026 01:21:38 +0000
Received: by outflank-mailman (input) for mailman id 1479238;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zb-KY
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-002A54-1V; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fc9-e002-0a2a0a5209dd-0a2a4509b036-44
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-be1a-0a2a45090019-5a9b5cc7c5a8-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4Q-00000006AYB-28ju; Mon, 09 Nov 2026 01:21:15 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4O-0000000EKUZ-3FJ2;
 Mon, 09 Nov 2026 01:21:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=OGXN0D0AnakZQfmHEkKPNkYcySUtuJFGfGpWognUlZg=; b=BlcG+kUioyjKmZnJeACk4Nuqun
	q24fNixOf2dqW9pl1WEw1JY68gEQQ/RBx7tVu/0I018bYMAnj4z/BFGq8pu2mUnxm0WTfOgx6emzR
	nRW9w5s3x5RIlF3wBkTcrY3CRt0ttltQndI1zOPXBTNbEo0P2/937BSkICkMTSfbZPXgi/yEgYrbH
	v0Q8IN8jaRODckRLBi3YUZJX2NOWGPSS23kS7RsV5FxmF612mIGHEryZ76J9sXvxGogub/cb3KU3O
	d5eMAwxPNA3ocAFJZ5shoXU28kNY+QoU/YqqanGJ56R5QCj76bHwqAfkiuaBfeWJFoDu6JjfLU/oq
	3aKvFsXw==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 08/24] KVM: x86: Re-synchronize TSC after KVM_SET_TSC_KHZ
Date: Sun,  8 Nov 2026 17:20:54 -0800
Message-ID: <20261109012112.3415328-9-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-bad1c0/1794187283-BD4C3034-897928B9/0/0
X-purgate-type: clean
X-purgate-size: 16599

From: David Woodhouse <dwmw@amazon.co.uk>

KVM_SET_TSC_KHZ changes the vCPU's TSC scaling ratio but does not
update the VM-wide cur_tsc_scaling_ratio used by get_kvmclock().
This causes get_kvmclock() to use a stale (default 1:1) ratio when
computing the KVM clock, leading to drift between the host-side
kvmclock and what the guest observes.

Fix this by calling kvm_synchronize_tsc() after changing the TSC
frequency. This:
 - Updates cur_tsc_scaling_ratio (consumed by pvclock_update_vm_gtod_copy)
 - Ensures the TSC value is continuous across the frequency change
 - Triggers kvm_track_tsc_matching() for proper masterclock handling
 - Establishes the new TSC generation for subsequent vCPUs to match

Since kvm_synchronize_tsc() previously inferred "userspace wrote the
TSC" from being given a non-NULL value, and this new call is a purely
kernel-internal resynchronization, make that an explicit
'user_initiated' parameter instead. Otherwise the kernel's own call
would set kvm->arch.user_set_tsc and incorrectly enable the 1-second
slop heuristic before userspace has ever written a TSC value, breaking
the restore of a guest with less than one second of runtime.

The resynchronization is skipped in two cases. At vCPU creation (which
comes through here with the default frequency), the vCPU is not yet
counted in online_vcpus, so synchronizing would corrupt the VM-wide
matching state — and leave it corrupted if creation subsequently
fails; the initial synchronization in kvm_arch_vcpu_postcreate()
covers it. And when the frequency is unchanged, there is nothing to
re-synchronize: opening a new generation for a no-op ioctl would
needlessly orphan the matched state of the sibling vCPUs.

The preserved value is sampled as a {guest TSC, host clock} tuple
and handed to the synchronization together with its reference point,
so the new offset is computed against the host TSC the sample was
taken at — not against "now". The guest TSC keeps counting through
the frequency change, and any delay between sample and installation
(preemption included) costs nothing. The new frequency itself is only
committed once set_tsc_khz() can no longer fail; a failed ioctl must
leave no trace, or a retry with the still-active frequency would
wrongly look like a change and open a gratuitous generation.

Because the internal sample is exact, it is not given the 1-second
slop window intended for the racy legacy userspace API: a vCPU on the
generation's timeline still matches within a 1ms window, but one which
genuinely diverged (a guest TSC_ADJUST write, or a deliberate
sub-second offset) keeps its exact value rather than being snapped
back onto the generation by up to a second. Setting a frequency which
no longer needs catchup also clears the always-catchup state which an
earlier above-host-rate setting on scaling-less hardware left behind,
and which otherwise persisted for the life of the vCPU.

Only preserve the TSC value across a frequency change for a vCPU
which has run, or whose TSC userspace has explicitly written (tracked
with a new per-vCPU user_set_tsc flag — the VM-wide flag would make
one vCPU's restored TSC cause a sibling's unrestored, creation-time
value to be preserved, clobbering the generation it could otherwise
match). A never-run vCPU holds nothing worth preserving, so
synchronize it as for a zero write, placing it on the generation's
timeline at the new frequency.

A KVM_GET_CLOCK issued before the resulting masterclock update is
serviced still returns the correct time: the masterclock parameters
are consumed as one self-consistent snapshot, and a host TSC delta
scaled by the snapshot's ratio and converted by its mul/shift yields
nanoseconds independent of the guest frequency they encode.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 Documentation/virt/kvm/api.rst  |   8 ++
 arch/x86/include/asm/kvm_host.h |   1 +
 arch/x86/kvm/msrs.c             |   2 +-
 arch/x86/kvm/x86.c              | 156 +++++++++++++++++++++++++++-----
 arch/x86/kvm/x86.h              |   2 +-
 5 files changed, 142 insertions(+), 27 deletions(-)

diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index ddc61ea36ac5..9487afc4431f 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -2023,6 +2023,14 @@ If the KVM_CAP_VM_TSC_CONTROL capability is advertised, this can also
 be used as a vm ioctl to set the initial tsc frequency of subsequently
 created vCPUs.  Note, the vm ioctl is only allowed prior to creating vCPUs.
 
+Changing the frequency of a vCPU with the vcpu ioctl re-synchronizes
+its TSC: for a vCPU which has run, or whose TSC userspace has written,
+the current guest TSC value is preserved across the change (the TSC
+offset, as visible through the KVM_VCPU_TSC_OFFSET attribute, is
+rewritten accordingly); otherwise the vCPU is synchronized to the
+VM's existing TSC timeline at the new frequency. Setting the current
+frequency again is a no-op.
+
 For TSC protected Confidential Computing (CoCo) VMs where TSC frequency
 is configured once at VM scope and remains unchanged during VM's
 lifetime, the vm ioctl should be used to configure the TSC frequency
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 30e89e8fb975..8af808fbf6ce 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -888,6 +888,7 @@ struct kvm_vcpu_arch {
 	u64 this_tsc_write;
 	u64 this_tsc_generation;
 	u64 this_tsc_freq_generation;
+	bool user_set_tsc;
 	bool tsc_catchup;
 	bool tsc_always_catchup;
 	s8 virtual_tsc_shift;
diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index 26eb30f10c43..d07831b5dfb8 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -1645,7 +1645,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 		break;
 	case MSR_IA32_TSC:
 		if (msr_info->host_initiated) {
-			kvm_synchronize_tsc(vcpu, &data);
+			kvm_synchronize_tsc(vcpu, &data, true);
 		} else if (!vcpu->arch.guest_tsc_protected) {
 			u64 adj = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data) -
 				  vcpu->arch.l1_tsc_offset;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 290a3c3bb44f..b47c36265c2f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1031,7 +1031,7 @@ static int set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool scale)
 	/* Guest TSC same frequency as host TSC? */
 	if (!scale) {
 		kvm_vcpu_write_tsc_multiplier(vcpu, kvm_caps.default_tsc_scaling_ratio);
-		return 0;
+		goto clear_catchup;
 	}
 
 	/* TSC scaling supported? */
@@ -1057,13 +1057,34 @@ static int set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool scale)
 	}
 
 	kvm_vcpu_write_tsc_multiplier(vcpu, ratio);
+
+clear_catchup:
+	/*
+	 * A frequency which no longer needs catchup must also stop it: a
+	 * previous above-host-rate setting on scaling-less hardware set
+	 * the always-catchup flags, and nothing else ever clears them.
+	 * Only undo that pairing — tsc_catchup alone also serves the
+	 * unstable-host-TSC compensation in kvm_arch_vcpu_load().
+	 */
+	if (vcpu->arch.tsc_always_catchup) {
+		vcpu->arch.tsc_always_catchup = 0;
+		vcpu->arch.tsc_catchup = 0;
+	}
 	return 0;
 }
 
-static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz)
+static void kvm_synchronize_tsc_at(struct kvm_vcpu *vcpu, u64 *value,
+				   u64 host_tsc, s64 ns, bool user_initiated);
+
+static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool init)
 {
+	bool freq_changed = (vcpu->arch.virtual_tsc_khz != user_tsc_khz);
 	u32 thresh_lo, thresh_hi;
+	u32 tsc_mult;
+	s8 tsc_shift;
 	int use_scaling = 0;
+	u64 tsc, host_tsc;
+	s64 ns;
 
 	/* tsc_khz can be zero if TSC calibration fails */
 	if (user_tsc_khz == 0) {
@@ -1074,9 +1095,7 @@ static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz)
 
 	/* Compute a scale to convert nanoseconds in TSC cycles */
 	kvm_get_time_scale(user_tsc_khz * 1000LL, NSEC_PER_SEC,
-			   &vcpu->arch.virtual_tsc_shift,
-			   &vcpu->arch.virtual_tsc_mult);
-	vcpu->arch.virtual_tsc_khz = user_tsc_khz;
+			   &tsc_shift, &tsc_mult);
 
 	/*
 	 * Compute the variation in TSC rate which is acceptable
@@ -1091,7 +1110,67 @@ static int kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz)
 			 user_tsc_khz, thresh_lo, thresh_hi);
 		use_scaling = 1;
 	}
-	return set_tsc_khz(vcpu, user_tsc_khz, use_scaling);
+
+	/*
+	 * Sample the guest TSC before changing the ratio, so continuity
+	 * can be preserved across the change — as a {guest TSC, host
+	 * clock} tuple, not a bare value: the synchronization below
+	 * computes the new offset against the tuple's own reference
+	 * point, so the guest TSC keeps counting through this function
+	 * and any delay here (preemption included) costs nothing.
+	 */
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&ns, &host_tsc))
+#endif
+	{
+		host_tsc = rdtsc();
+		ns = get_kvmclock_base_ns();
+	}
+	tsc = kvm_read_l1_tsc(vcpu, host_tsc);
+
+	if (set_tsc_khz(vcpu, user_tsc_khz, use_scaling))
+		return -1;
+
+	/*
+	 * Commit the new frequency only once set_tsc_khz() can no longer
+	 * fail: a failed ioctl must leave no trace, or a retry with the
+	 * still-active frequency would wrongly look like a change.
+	 */
+	vcpu->arch.virtual_tsc_shift = tsc_shift;
+	vcpu->arch.virtual_tsc_mult = tsc_mult;
+	vcpu->arch.virtual_tsc_khz = user_tsc_khz;
+
+	/*
+	 * At vCPU creation (@init) the vCPU is not yet counted in
+	 * online_vcpus, so synchronizing here would corrupt the VM-wide
+	 * matching state (and leave it corrupted if creation subsequently
+	 * fails). The initial synchronization happens in
+	 * kvm_arch_vcpu_postcreate() instead. An unchanged frequency is
+	 * a no-op for synchronization: don't disturb the generation
+	 * tracking of a configured vCPU.
+	 */
+	if (init || !freq_changed)
+		return 0;
+
+	/*
+	 * Changing the frequency changes the vCPU's position on the
+	 * generation's cycle timeline, so re-synchronize. For a vCPU
+	 * which has run, preserve the guest TSC value read above across
+	 * the change; likewise if userspace has written a TSC on this
+	 * vCPU — a zero write would discard it. Otherwise the vCPU holds
+	 * only its creation-time synchronization, so synchronize as for
+	 * a zero write. When the generation is already at the new
+	 * frequency this places the vCPU on its timeline rather than
+	 * opening a gratuitous new generation and orphaning the matched
+	 * state of its siblings; the first vCPU to adopt a new frequency
+	 * necessarily opens a new generation, starting at zero — mixed
+	 * frequencies within a VM forfeit the master clock anyway.
+	 */
+	if (vcpu->arch.last_vmentry_cpu != -1 || vcpu->arch.user_set_tsc)
+		kvm_synchronize_tsc_at(vcpu, &tsc, host_tsc, ns, false);
+	else
+		kvm_synchronize_tsc_at(vcpu, NULL, host_tsc, ns, false);
+	return 0;
 }
 
 static u64 compute_guest_tsc(struct kvm_vcpu *vcpu, s64 kernel_ns)
@@ -1396,8 +1475,10 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	if (vcpu->arch.guest_tsc_protected)
 		return;
 
-	if (user_set_tsc)
+	if (user_set_tsc) {
 		vcpu->kvm->arch.user_set_tsc = true;
+		vcpu->arch.user_set_tsc = true;
+	}
 
 	/*
 	 * Track the TSC frequency, scaling ratio, and offset for the current
@@ -1472,26 +1553,25 @@ static void __kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 offset, u64 tsc,
 	kvm_track_tsc_matching(vcpu, !matched);
 }
 
-void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
+/*
+ * Synchronize the vCPU's TSC against an explicit {host_tsc, ns} reference
+ * point: @value (when non-NULL) is the guest TSC *at* @host_tsc, not at
+ * some unspecified "now". The offset is computed against that reference,
+ * so a sampled value stays valid however much time passes between the
+ * sampling and this call.
+ */
+static void kvm_synchronize_tsc_at(struct kvm_vcpu *vcpu, u64 *value,
+				   u64 host_tsc, s64 ns, bool user_initiated)
 {
-	u64 data = user_value ? *user_value : 0;
+	u64 data = value ? *value : 0;
 	struct kvm *kvm = vcpu->kvm;
-	u64 offset, host_tsc, elapsed;
-	s64 ns;
+	u64 offset, elapsed;
 	unsigned long flags;
 	bool matched = false;
 	bool synchronizing = false;
 
 	raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags);
 
-#ifdef CONFIG_X86_64
-	if (!kvm_get_time_and_clockread(&ns, &host_tsc))
-#endif
-	{
-		host_tsc = rdtsc();
-		ns = get_kvmclock_base_ns();
-	}
-
 	offset = kvm_compute_l1_tsc_offset(vcpu, host_tsc, data);
 	elapsed = ns - kvm->arch.cur_tsc_nsec;
 
@@ -1506,6 +1586,7 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 			u64 tsc_exp = kvm->arch.cur_tsc_write +
 						nsec_to_cycles(vcpu, elapsed);
 			u64 tsc_hz = vcpu->arch.virtual_tsc_khz * 1000LL;
+			u64 window;
 			/*
 			 * Here lies UAPI baggage: when a user-initiated TSC write has
 			 * a small delta (1 second) of virtual cycle time against the
@@ -1520,9 +1601,18 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 			 * to this 'correction' to make it sync up with values that only
 			 * come from the kernel's default vCPU creation. Make the 1-second
 			 * slop hack only trigger if the user_set_tsc flag is already set.
+			 *
+			 * A kernel-internal write (a frequency change preserving the
+			 * guest TSC) carries an exact value sampled with its own
+			 * reference point, not a racy userspace one; a vCPU on the
+			 * generation's line still matches it to within arithmetic
+			 * rounding, but one which genuinely diverged (e.g. by a guest
+			 * TSC_ADJUST write) must not be snapped back by up to a
+			 * second. Use a 1ms window for those.
 			 */
-			synchronizing = data < tsc_exp + tsc_hz &&
-					data + tsc_hz > tsc_exp;
+			window = user_initiated ? tsc_hz : tsc_hz / 1000;
+			synchronizing = data < tsc_exp + window &&
+					data + window > tsc_exp;
 		}
 	}
 
@@ -1552,10 +1642,26 @@ void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value)
 		matched = true;
 	}
 
-	__kvm_synchronize_tsc(vcpu, offset, data, ns, matched, !!user_value);
+	__kvm_synchronize_tsc(vcpu, offset, data, ns, matched, user_initiated);
 	raw_spin_unlock_irqrestore(&kvm->arch.tsc_write_lock, flags);
 }
 
+void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *value, bool user_initiated)
+{
+	u64 host_tsc;
+	s64 ns;
+
+#ifdef CONFIG_X86_64
+	if (!kvm_get_time_and_clockread(&ns, &host_tsc))
+#endif
+	{
+		host_tsc = rdtsc();
+		ns = get_kvmclock_base_ns();
+	}
+
+	kvm_synchronize_tsc_at(vcpu, value, host_tsc, ns, user_initiated);
+}
+
 #ifdef CONFIG_X86_64
 
 static bool kvm_snapshot_has_tsc(struct system_time_snapshot *snap,
@@ -3905,7 +4011,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
 		if (user_tsc_khz == 0)
 			user_tsc_khz = tsc_khz;
 
-		if (!kvm_set_tsc_khz(vcpu, user_tsc_khz))
+		if (!kvm_set_tsc_khz(vcpu, user_tsc_khz, false))
 			r = 0;
 
 		goto out;
@@ -9680,7 +9786,7 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
 	kvm_xen_init_vcpu(vcpu);
 	vcpu_load(vcpu);
 	kvm_vcpu_after_set_cpuid(vcpu);
-	kvm_set_tsc_khz(vcpu, vcpu->kvm->arch.default_tsc_khz);
+	kvm_set_tsc_khz(vcpu, vcpu->kvm->arch.default_tsc_khz, true);
 	kvm_vcpu_reset(vcpu, false);
 	kvm_init_mmu(vcpu);
 	vcpu_put(vcpu);
@@ -9724,7 +9830,7 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
 		return;
 	}
 	vcpu_load(vcpu);
-	kvm_synchronize_tsc(vcpu, NULL);
+	kvm_synchronize_tsc(vcpu, NULL, false);
 	if (kvm_check_request(KVM_REQ_MASTERCLOCK_UPDATE, vcpu))
 		kvm_update_masterclock(vcpu->kvm, NULL);
 	vcpu_put(vcpu);
diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
index 436e2fb1396c..de4c86ea5a7d 100644
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -330,7 +330,7 @@ uint64_t kvm_get_wall_clock_epoch(struct kvm *kvm);
 bool kvm_get_monotonic_and_clockread(s64 *kernel_ns, u64 *tsc_timestamp);
 int kvm_guest_time_update(struct kvm_vcpu *v);
 
-void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value);
+void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *value, bool user_initiated);
 u64 kvm_scale_tsc(u64 tsc, u64 ratio);
 u64 kvm_read_l1_tsc(struct kvm_vcpu *vcpu, u64 host_tsc);
 u64 kvm_calc_nested_tsc_offset(u64 l1_offset, u64 l2_offset, u64 l2_multiplier);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 01:21:42 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 01:21:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479236.1683393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4r-0003FH-RJ; Mon, 09 Nov 2026 01:21:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479236.1683393; Mon, 09 Nov 2026 01:21:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQE4q-00039R-PX; Mon, 09 Nov 2026 01:21:40 +0000
Received: by outflank-mailman (input) for mailman id 1479236;
 Mon, 09 Nov 2026 01:21:24 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 1xQE4Z-0007zS-KR
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 01:21:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQE4Z-0014kv-1D; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af11fd4-8faa-0a2a0a5109dd-0a2a4502831e-18
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:23 +0100
Received: from [90.155.92.199] (helo=desiato.infradead.org)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <BATV+eaa65bbd42d4fabe269c+8478+infradead.org+dwmw2@desiato.srs.infradead.org>)
 id 6af1200d-6ca4-0a2a45020019-5a9b5cc7ae6c-3
 for <multiple-recipients>; Mon, 09 Nov 2026 02:21:17 +0100
Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.100.1 #2 (Red Hat Linux))
 id 1xQE4S-00000006AYJ-024J; Mon, 09 Nov 2026 01:21:16 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.5 #2 (Red
 Hat Linux)) id 1xQE4P-0000000EKVJ-17v9;
 Mon, 09 Nov 2026 01:21:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=desiato.20200630 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=3DD8/zti5JW+GMX6GLipO6+sjXFYNOO3sf30XX4R/kY=; b=pm9g8YvbH1FBFv1ccfDdPgLQVM
	hRmI02G9nE9mM0KIfzicxQ4ZbUE1s93vcoQWqBNyOg45eYI6/L2rO7y0+2G/vFDD69hiNrU6VMwKu
	/yFTQOrSyhbeU8RoiCy82a4xiayaeM8M6Kwq0+wJBvhFRc4HL8Z1QBOVDSz0PgI1DNcJJYeYMjEQu
	4uXEtPLfBGi/HKDgL60fm+ICYIxiUmOOr6xzjunUk1Eyx1uVkrEfutAI2I9pYlL1IskEEaH0jUDrA
	30JMs/QoUub8JfBHfRPrYzjyzng3HKqyQXAIZV6+y/vmv3oT2QY+NJbGmymMAlxaXOTOg4CRFurtN
	U7eV5n+A==;
From: David Woodhouse <dwmw2@infradead.org>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org,
	linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>,
	joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v12 19/24] KVM: selftests: Add Xen/generic CPUID timing leaf test
Date: Sun,  8 Nov 2026 17:21:05 -0800
Message-ID: <20261109012112.3415328-20-dwmw2@infradead.org>
X-Mailer: git-send-email 2.55.0
In-Reply-To: <20261109012112.3415328-1-dwmw2@infradead.org>
References: <20261109012112.3415328-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html
X-purgate-ID: tlsNG-720697/1794187282-67ABD2AC-806B37A1/0/0
X-purgate-type: clean
X-purgate-size: 10860

From: David Woodhouse <dwmw@amazon.co.uk>

Verify that userspace can correctly populate Xen and generic CPUID
timing leaves using the KVM_GET_TSC_KHZ ioctl and
KVM_VCPU_TSC_SCALE attribute.

This validates that commit 7d3bd21e457b ("KVM: x86: Remove runtime Xen
TSC frequency CPUID update") doesn't break guests: userspace queries the effective TSC and bus
frequencies, computes the pvclock mul/shift, populates the CPUID leaves,
and the guest verifies the values match.

The test exercises:
 - KVM_GET_TSC_KHZ at native and scaled frequencies
 - KVM_VCPU_TSC_SCALE ratio verification against effective frequency
 - Generic timing leaf 0x40000010 (EAX=tsc_khz, EBX=bus_khz)
 - Xen leaf 3 sub-leaf 0 (ECX=guest TSC kHz)
 - Xen leaf 3 sub-leaf 1 (ECX=mul, EDX=shift)

Where KVM_CAP_XEN_HVM is available, the guest is given the Xen
signature leaf and the Xen hypercall MSR is enabled — the exact
configuration in which the removed runtime update used to fire — and
a sentinel is planted in leaf 3 sub-leaf 2 EAX, where it used to
write, which the guest verifies survives untouched.

Gracefully skips TSC scaling tests on hardware without support, and
skips requested frequencies within tsc_tolerance_ppm of the host's,
where hardware scaling does not engage and the effective frequency is
the requested one with an identity ratio.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/x86/xen_cpuid_timing_test.c | 271 ++++++++++++++++++
 2 files changed, 272 insertions(+)
 create mode 100644 tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c

diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
index 4d4eff41c525..79d26de18bf3 100644
--- a/tools/testing/selftests/kvm/Makefile.kvm
+++ b/tools/testing/selftests/kvm/Makefile.kvm
@@ -152,6 +152,7 @@ TEST_GEN_PROGS_x86 += x86/xss_msr_test
 TEST_GEN_PROGS_x86 += x86/debug_regs
 TEST_GEN_PROGS_x86 += x86/tsc_msrs_test
 TEST_GEN_PROGS_x86 += x86/vmx_pmu_caps_test
+TEST_GEN_PROGS_x86 += x86/xen_cpuid_timing_test
 TEST_GEN_PROGS_x86 += x86/xen_shinfo_test
 TEST_GEN_PROGS_x86 += x86/xen_vmcall_test
 TEST_GEN_PROGS_x86 += x86/sev_dbg_test
diff --git a/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c b/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
new file mode 100644
index 000000000000..70d3d38966f2
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86/xen_cpuid_timing_test.c
@@ -0,0 +1,271 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Test that userspace can correctly populate Xen and generic CPUID
+ * timing leaves using KVM_GET_TSC_KHZ and KVM_VCPU_TSC_SCALE.
+ *
+ * This validates that the removal of KVM's runtime Xen CPUID modification
+ * doesn't break guests, because userspace has all the information needed.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "test_util.h"
+#include "kvm_util.h"
+#include "processor.h"
+
+
+#define XEN_CPUID_BASE		0x40000100
+#define XEN_CPUID_LEAF(n)	(XEN_CPUID_BASE + (n))
+#define GENERIC_TIMING_LEAF	0x40000010
+
+/*
+ * Sentinel in Xen leaf 3 sub-leaf 2 EAX (where the removed runtime
+ * update used to write the vCPU's tsc_khz): it must survive untouched.
+ */
+#define XEN_SENTINEL		0xdeadbeef
+
+/* Values set by host, verified by guest */
+static u32 expected_tsc_khz;
+static u32 expected_bus_khz;
+static u32 expected_tsc_mul;
+static s8   expected_tsc_shift;
+static u64 host_khz;
+static bool xen_enabled;
+
+static void guest_code(void)
+{
+	u32 eax, ebx, ecx, edx;
+
+	/* Check generic timing leaf 0x40000010 */
+	__cpuid(GENERIC_TIMING_LEAF, 0, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(eax, expected_tsc_khz);
+	GUEST_ASSERT_EQ(ebx, expected_bus_khz);
+
+	/* Check Xen leaf 3, sub-leaf 0: ECX = guest TSC frequency */
+	__cpuid(XEN_CPUID_LEAF(3), 0, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(ecx, expected_tsc_khz);
+
+	/* Check Xen leaf 3, sub-leaf 1: ECX = mul, EDX = shift */
+	__cpuid(XEN_CPUID_LEAF(3), 1, &eax, &ebx, &ecx, &edx);
+	GUEST_ASSERT_EQ(ecx, expected_tsc_mul);
+	GUEST_ASSERT_EQ((s8)edx, expected_tsc_shift);
+
+	if (xen_enabled) {
+		/*
+		 * With the Xen signature present and Xen enabled, verify the
+		 * sentinel survives: KVM's removed runtime CPUID update used
+		 * to clobber this sub-leaf for exactly this configuration.
+		 */
+		__cpuid(XEN_CPUID_LEAF(3), 2, &eax, &ebx, &ecx, &edx);
+		GUEST_ASSERT_EQ(eax, XEN_SENTINEL);
+	}
+
+	GUEST_SYNC(0);
+}
+
+static void add_cpuid_entry(struct kvm_vcpu *vcpu, u32 function,
+			    u32 index, u32 eax, u32 ebx,
+			    u32 ecx, u32 edx)
+{
+	struct kvm_cpuid2 *cpuid = vcpu->cpuid;
+	struct kvm_cpuid_entry2 *entry;
+	int n = cpuid->nent;
+
+	cpuid = realloc(vcpu->cpuid,
+			sizeof(*cpuid) + (n + 1) * sizeof(*entry));
+	TEST_ASSERT(cpuid, "Failed to grow vCPU CPUID array");
+	vcpu->cpuid = cpuid;
+	cpuid->nent = n + 1;
+
+	entry = &cpuid->entries[n];
+	memset(entry, 0, sizeof(*entry));
+	entry->function = function;
+	entry->index = index;
+	entry->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
+	entry->eax = eax;
+	entry->ebx = ebx;
+	entry->ecx = ecx;
+	entry->edx = edx;
+}
+
+/*
+ * Compute pvclock mul/shift from frequency, matching kvm_get_time_scale().
+ */
+static void compute_tsc_mul_shift(u64 tsc_hz, u32 *mul, s8 *shift)
+{
+	u64 scaled = 1000000000ULL;
+	u64 base = tsc_hz;
+	s32 s = 0;
+	u32 base32;
+
+	while (base > scaled * 2 || base >> 32) {
+		base >>= 1;
+		s--;
+	}
+	base32 = (u32)base;
+	while (base32 <= scaled || scaled >> 32) {
+		if (scaled >> 32 || base32 & (1U << 31))
+			scaled >>= 1;
+		else
+			base32 <<= 1;
+		s++;
+	}
+	*mul = (u32)((scaled << 32) / base32);
+	*shift = (s8)s;
+}
+
+static void run_test(u64 tsc_khz)
+{
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	struct ucall uc;
+	u32 effective_tsc_khz, effective_bus_khz;
+	int bus_cycle_ns, ret;
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+
+	if (tsc_khz) {
+		pr_info("Testing at TSC frequency %lu kHz\n", tsc_khz);
+		vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ, (void *)(unsigned long)tsc_khz);
+	} else {
+		pr_info("Testing at native TSC frequency\n");
+	}
+
+	ret = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	TEST_ASSERT(ret > 0, "KVM_GET_TSC_KHZ failed: %d", ret);
+	effective_tsc_khz = ret;
+	bus_cycle_ns = vm_check_cap(vm, KVM_CAP_X86_APIC_BUS_CYCLES_NS);
+	effective_bus_khz = bus_cycle_ns > 0 ? 1000000 / bus_cycle_ns : 1000000;
+
+	pr_info("  Effective TSC: %u kHz, Bus: %u kHz\n", effective_tsc_khz, effective_bus_khz);
+
+	/* Also exercise KVM_VCPU_TSC_SCALE if available */
+	if (!__vcpu_has_device_attr(vcpu, KVM_VCPU_TSC_CTRL,
+				    KVM_VCPU_TSC_SCALE)) {
+		struct kvm_vcpu_tsc_scale scale;
+
+		vcpu_device_attr_get(vcpu, KVM_VCPU_TSC_CTRL,
+				     KVM_VCPU_TSC_SCALE, &scale);
+		pr_info("  TSC scale: ratio=%llu frac_bits=%llu\n",
+			scale.tsc_ratio, scale.tsc_frac_bits);
+
+		/*
+		 * A requested frequency within tsc_tolerance_ppm of the
+		 * host's does not engage hardware scaling: the effective
+		 * frequency is the requested one but the ratio stays 1.0,
+		 * so the ratio cross-check cannot hold. Skip only that
+		 * check — the CPUID leaf population and guest verification
+		 * below are about the effective frequency and remain valid.
+		 */
+		if (tsc_khz &&
+		    scale.tsc_ratio == (1ULL << scale.tsc_frac_bits)) {
+			pr_info("  Requested frequency within host tolerance; scaling not engaged, skipping ratio cross-check\n");
+		} else if (tsc_khz) {
+			/*
+			 * Verify: applying the ratio to the host TSC frequency
+			 * should give approximately the effective frequency.
+			 */
+			u64 computed = ((__uint128_t)host_khz * scale.tsc_ratio) >> scale.tsc_frac_bits;
+			s64 diff = (s64)computed - (s64)effective_tsc_khz;
+
+			TEST_ASSERT(diff >= -1 && diff <= 1,
+				    "TSC_SCALE ratio mismatch: computed %lu vs effective %u (diff %ld)",
+				    computed, effective_tsc_khz, diff);
+		}
+	}
+
+	compute_tsc_mul_shift((u64)effective_tsc_khz * 1000,
+			      &expected_tsc_mul, &expected_tsc_shift);
+
+	expected_tsc_khz = effective_tsc_khz;
+	expected_bus_khz = effective_bus_khz;
+
+	sync_global_to_guest(vm, expected_tsc_khz);
+	sync_global_to_guest(vm, expected_bus_khz);
+	sync_global_to_guest(vm, expected_tsc_mul);
+	sync_global_to_guest(vm, expected_tsc_shift);
+
+	/* Populate CPUID leaves as a VMM would */
+	add_cpuid_entry(vcpu, GENERIC_TIMING_LEAF, 0,
+			effective_tsc_khz, effective_bus_khz, 0, 0);
+	add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 0,
+			0, 0, effective_tsc_khz, 0);
+	add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 1,
+			0, 0, expected_tsc_mul,
+			(u32)(s32)expected_tsc_shift);
+
+	/*
+	 * Where possible, make this a real Xen guest: install the Xen
+	 * signature leaf and enable the Xen hypercall MSR, which is the
+	 * configuration in which KVM's removed runtime CPUID update used
+	 * to fire, and plant a sentinel where it used to write.
+	 */
+	xen_enabled = kvm_has_cap(KVM_CAP_XEN_HVM);
+	if (xen_enabled) {
+		struct kvm_xen_hvm_config cfg = {
+			.msr = 0x40000200,
+		};
+
+		vm_ioctl(vm, KVM_XEN_HVM_CONFIG, &cfg);
+		add_cpuid_entry(vcpu, XEN_CPUID_BASE, 0, XEN_CPUID_LEAF(4),
+				0x566e6558 /* "XenV" */,
+				0x65584d4d /* "MMXe" */,
+				0x4d4d566e /* "nVMM" */);
+		add_cpuid_entry(vcpu, XEN_CPUID_LEAF(3), 2,
+				XEN_SENTINEL, 0, 0, 0);
+	}
+	sync_global_to_guest(vm, xen_enabled);
+
+	vcpu_set_cpuid(vcpu);
+
+	pr_info("  pvclock mul=%u shift=%d\n", expected_tsc_mul, expected_tsc_shift);
+
+	vcpu_run(vcpu);
+	TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
+
+	switch (get_ucall(vcpu, &uc)) {
+	case UCALL_ABORT:
+		REPORT_GUEST_ASSERT(uc);
+		break;
+	case UCALL_SYNC:
+		break;
+	default:
+		TEST_FAIL("Unexpected ucall");
+	}
+
+	kvm_vm_free(vm);
+}
+
+int main(void)
+{
+	u64 freq;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vm *vm;
+	bool have_tsc_scale;
+
+	TEST_REQUIRE(sys_clocksource_is_based_on_tsc());
+
+	vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+	have_tsc_scale = !__vcpu_has_device_attr(vcpu, KVM_VCPU_TSC_CTRL,
+						 KVM_VCPU_TSC_SCALE);
+	host_khz = __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL);
+	kvm_vm_free(vm);
+
+	/* Native frequency */
+	run_test(0);
+
+	/* Scaled frequencies, when hardware TSC scaling is available */
+	if (have_tsc_scale) {
+		for (freq = 1000000; freq <= 4000000; freq += 1000000) {
+			if (freq == host_khz)
+				continue;
+			run_test(freq);
+		}
+	} else {
+		pr_info("Skipping scaled frequencies (no TSC scaling)\n");
+	}
+
+	pr_info("PASS: All CPUID timing leaf tests passed\n");
+	return 0;
+}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 02:57:35 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 02:57:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479456.1683435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQFZS-00072O-0L; Mon, 09 Nov 2026 02:57:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479456.1683435; Mon, 09 Nov 2026 02:57:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQFZR-00072G-TT; Mon, 09 Nov 2026 02:57:21 +0000
Received: by outflank-mailman (input) for mailman id 1479456;
 Mon, 09 Nov 2026 02:57:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jamin_lin@aspeedtech.com>) id 1xQFZP-0006yY-7P
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 02:57:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQFZO-009duL-KV
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 03:57:18 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6af13651-e002-0a2a0a5209dd-0a2a45099f2a-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:57:18 +0100
Received: from [52.101.126.85]
 (helo=TYPPR03CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jamin_lin@aspeedtech.com>)
 id 6af1368a-be1a-0a2a45090019-34657e554e5a-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:57:17 +0100
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com (2603:1096:101:253::10)
 by TYPPR06MB8051.apcprd06.prod.outlook.com (2603:1096:405:318::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.615.7; Mon, 9 Nov 2026
 02:57:11 +0000
Received: from SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6]) by SEZPR06MB7362.apcprd06.prod.outlook.com
 ([fe80::cd2d:35d2:a702:1de6%4]) with mapi id 15.21.0615.005; Mon, 9 Nov 2026
 02:57:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=aspeedtech.com header.i="@aspeedtech.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=VPuX7SRLOJ3uZhKRtcG7xvY9UdqigmXCcqj/AE7HJ3KFWhWU20QpMmNvgY3hRv5PvixCVx7AWaXfXSFliFahM5hA+frofbVj1P0oObxsQAvb5bEa28pQS9JXVUtKRk8eGjpv7y3sJQlAcWC8wxuGn6yH1p1hu8R1vd+++BFzWy1/7pqFLcb/sgxpMF2dfMn8oroExGL7gflCJhONGPWzisBrfgLNdeUvNvtO6BuQPgOICTCO5wOqvQRy9hCQA57dxb+tkelN6irQK+RI1Mx1exGfxe6lUFvyrzgJn8lVLMmxtDvVxLYNi140Q37OMaaeqtSJ9zRbT3/yOWXOWKL8MA==
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=F9nXBS8S94qf4A24kGLZUf4xuXXgQzpnvIVcGjGPAhI=;
 b=mfgfBWJhaWcyuE5o+dVQ7McHxzvCK8IH156v8Ul97AajqmvWxlperMRp4Jk8s6gC7IfCXH8YiXGSaFnybxo8jnq8sOL7gi8icDxdJ+sMgK6NujmKcBltz/QyDK/2kmhYfw/TP974c5cxBMUqf9NDZnegMx2gqeDI02ZpdSMbP8X3aan6SiTaFyFnI/teP9/0ffnqS28H0koYHVI23zToL2OLOAuSHl57jktn51qcp31z3OHQKH/fkcQsfGXGRwg0T5FrF33mDy2gUfy4Nl0iTKX6pE0+fAwa7ikgr4fdbJAV73Qx2VnXrz87WXJqsVARXl55+JHLyHIDp9yWy22qbA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=aspeedtech.com; dmarc=pass action=none
 header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=F9nXBS8S94qf4A24kGLZUf4xuXXgQzpnvIVcGjGPAhI=;
 b=Or25hesvZJqLuEijD9sUb6pN7LusBq9L6jCV6988kYdD9Kk36Rmkk8agRBXBxWt4xftxSGExpGa74ja25lV9b0v6+ybvE/HiF6+rZL3e6ZjwE9zEA4tzn4dp9QuBGUbgO6WumwKYxt1biQY8sCW42OMdebtvn01XMNG1ZaoxP7mEU/FonWuN7uo5Tm0yzpVK1VA1r13lz/6TPcBqgKvsmf6wQwR98v9F5Lj7PRmQG0aZbryC8UxOB8CyApKgoEmHHU32Tp4Q1JcCfXM1wctcOdbsELeFKmiG9wg9aBulEDIc2Ut4MCkIX26OfgEyrlRJyfv/gpzJp6A2cfCPaXaQSA==
From: Jamin Lin <jamin_lin@aspeedtech.com>
To: Junjie Cao <junjie.cao@linux.dev>
CC: "kraxel@redhat.com" <kraxel@redhat.com>, "marcandre.lureau@redhat.com"
	<marcandre.lureau@redhat.com>, "clg@kaod.org" <clg@kaod.org>,
	"pierrick.bouvier@oss.qualcomm.com" <pierrick.bouvier@oss.qualcomm.com>,
	"peter.maydell@linaro.org" <peter.maydell@linaro.org>, Kane Chen
	<kane_chen@aspeedtech.com>, "philmd@oss.qualcomm.com"
	<philmd@oss.qualcomm.com>, "kfting@nuvoton.com" <kfting@nuvoton.com>,
	"wuhaotsh@google.com" <wuhaotsh@google.com>, "zhao1.liu@intel.com"
	<zhao1.liu@intel.com>, "richard.henderson@linaro.org"
	<richard.henderson@linaro.org>, "deller@gmx.de" <deller@gmx.de>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>, "anthony@xenproject.org"
	<anthony@xenproject.org>, "edgar.iglesias@gmail.com"
	<edgar.iglesias@gmail.com>, Troy Lee <troy_lee@aspeedtech.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, "qemu-arm@nongnu.org"
	<qemu-arm@nongnu.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: [PATCH v8 14/18] hw/usb/redirect-server: Implement control
 transfers
Thread-Topic: [PATCH v8 14/18] hw/usb/redirect-server: Implement control
 transfers
Thread-Index: AQHdaquqR4kcpf7BW0WY0PXfmYQ09LccaG6AgAiuDZA=
Date: Mon, 9 Nov 2026 02:57:11 +0000
Message-ID:
 <SEZPR06MB73628601F248BA1E414079EEFC732@SEZPR06MB7362.apcprd06.prod.outlook.com>
References: <20261102092201.1729245-1-jamin_lin@aspeedtech.com>
 <20261102092201.1729245-15-jamin_lin@aspeedtech.com>
 <20261103142327.1348025-7-junjie.cao@linux.dev>
In-Reply-To: <20261103142327.1348025-7-junjie.cao@linux.dev>
Accept-Language: zh-TW, en-US
Content-Language: zh-TW
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=aspeedtech.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SEZPR06MB7362:EE_|TYPPR06MB8051:EE_
x-ms-office365-filtering-correlation-id: 9475d214-bcd6-4a39-4986-08df3e0d268e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|376014|1800799024|7416014|366016|261102130727099003|261026121527099003|4143699003|56012099006|3023799007|10067099003|18002099003|22082099003|38070700021;
x-microsoft-antispam-message-info:
 KODUbTQen8mEqyxszSkxr2VWaQn9yStfemy7hA4b5pMAYglf4wR+SBuRvkO/GQsOEHwlmN+uRY7daJX3Tza9zeyYKnLMS8aTSGtrQ0TwHFtgLc6zHAiV08R6DLSaje5FpbqqCKXJmPZX8lCln7Ur2dd+qtDbVn5PG5/zU1R90Wdnb45eicUbCc1foIssQZHer2XkhP8yfHHWEta7COfQWZwKPSL+GzoM9VuckUyrAuE3j2bGcpwfZPO85rvNdDg3bbZEs29ppp3JlCatpSwWWNaL3o490t21pbwHhitYQB1h+D37DyTHRNoIoNPiVGYb4YT+dMxBiO3z6HeAfPjVkL3KggdrKxr4gCetlRtBi1ww7VP7HsKEsjf5aUqaec9DrT0XLy0XDAMSzrr9kKvEWuAvB7ICcvg4+e9Wg4pxGfMKoy5IBjZcPYf3XqiIz/9EfvK+wDeNxkJzgJcOaHlDxGsKdIwAR2Fn/BMQ5Ca6sVI3B9DpmxOW+IeOtR2eh6LW0WROO4lPxWNDY6mpBBack06MOVB9tR9e5j2zvTrU3spo85sgOj6cb8Cd0eJDWczw535i2W7MtGPMjGsfeat9zg6lPjECMKRdUZGLY9/HvXY0MClf2N0kXkj/IiClg6jLZ/FZWp7mFQyYjBlWeQaY/5v7Wi/RmrCj7gpmFoMTRiPMpjJIzMHRJ3vpZDohQ7TfZwR0HuOqsdqY4K48eCpwBJ8MJTV5iGGndJ3itvEa7UY=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR06MB7362.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(7416014)(366016)(261102130727099003)(261026121527099003)(4143699003)(56012099006)(3023799007)(10067099003)(18002099003)(22082099003)(38070700021);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?9nhRUj0480/JLvPdj0sBme0iRfoW+eTOc0Z3hfaiVtK5A6LbrjkD8cY+tabg?=
 =?us-ascii?Q?U9NvZ+7e6VzQZgAKoFNKU5Uch+09GRgT5vry0kdBXgTjzNUpx7OQxBcbg5//?=
 =?us-ascii?Q?HLfNphAOogpym+23B61pV10vcw+vDiKjQyWXcO7cibHQTl0SlUGtDdkEo2Hs?=
 =?us-ascii?Q?oMcAEYe7DRBMqNc3L3fnPHeIZ7HzHTCDksptZjUdxb9bAeX/X5f7U6Uj9N+I?=
 =?us-ascii?Q?OviNk5Pm1cF1gUh9AOaGakN+jCTukhOIHUY/+sEHDaDL93W9Otor/rVeE4O9?=
 =?us-ascii?Q?0Rfzo1FKVb/sT8IRxwgLxWmmvDYYIT1YB++p2GUvzZW4x0rXl+WbCAfNhTdn?=
 =?us-ascii?Q?IxG6oxI/X5DvDDqMv4V+rlpPb2sXg3Nw6TQWgcucrBGbvM/wuKi7enAtgCAn?=
 =?us-ascii?Q?sYQsf+C1Lb2w2Lb61WAQdO29zyR7IWN5+ytU8rnlicK7WpxqzT13HzDpfgbI?=
 =?us-ascii?Q?D1QohAzZ6plHF21FwIMWj3n+03mmwnKOw6ltfa0tSt6/UFaGNSCBW0+oZEB7?=
 =?us-ascii?Q?f2UoZYpRR+DgzkvQe2LExOCdvUwxUbdO46B+KlH6cADzC2sJ+rLK8QHvSlKj?=
 =?us-ascii?Q?6CANUIjQfgVENAEuA/54qscZdA9QBQEFJo+26pfTliFWVwo5PEt6tg9zyAG/?=
 =?us-ascii?Q?gxBzw7ZnTzHw3x5S60vGZuUNdDTxsRf4yjRIkfLI/H/8BoOu/gBPkC6lj7Pe?=
 =?us-ascii?Q?ym2wvpG7L3kJ1p95Zcr0VmZOJ3lxI8FPm7HhbZFtVq/nHA60QWIdZoxnPRab?=
 =?us-ascii?Q?5xSKM19bAfJxQ/Nr8m6Li89QeHLf8rIfjewqQop4Reg9B9nopI29hQ3KF7Hm?=
 =?us-ascii?Q?kuZnoKcX/4os2vRnadP5DR+60qvAiZXBvP6RE2rUDjdJ8cukctas1d/BwiNN?=
 =?us-ascii?Q?CrMKWrAZP1jK+M/Xd81Ba6GHy0TcwEvevF/PMZ9CzGrgA9X0e3zzch+2wKzh?=
 =?us-ascii?Q?v905hJNH584x1cz7wlbhjHc4XOOmftekXLI5Xec4rVocMVJCJBT12rhNjqz3?=
 =?us-ascii?Q?KTufcQtcKC01dRi7BA+r4JgO/Gb/H9dMBa1LTyio8Xh3ULef7oNWLGuvWARr?=
 =?us-ascii?Q?gS34QBtOm7UvCEnqB9i5yr24QtvDabLiO3SsDlfDnsQfpWftmLHBkqvl6x9K?=
 =?us-ascii?Q?QweVErU60NQTz5gPrZbGAXfW9Ds1kC68WanK69W6bkrM2xCmDV2gbL/xwZPm?=
 =?us-ascii?Q?poENCBkX5gBQe3QWe1jdv1ruvNCgfWTMWTZ2kuSJvj7ROpq1FXYqdcvt31yA?=
 =?us-ascii?Q?SDNKo2VOXajwt8wD1D4bkGH+ICdQ9WG2Kl3OQH5QD805+orQPc8/6+fRXbhX?=
 =?us-ascii?Q?slQZrdT+f/9assZGUI4mJSr1vTJkjHc6xmybvEfFIbxypZM7fpM85BHKsM+x?=
 =?us-ascii?Q?mRL6uoeMZL91p8jhLLosku89sG20q3nPWOcLZKMUHedd4M0Cc7AEyTY3kYrv?=
 =?us-ascii?Q?5qE8nAgGgBh1jlC+ZGozRZyDVW+VrytnECHMJG2Pft8eUdw/5C7xoLqLxna3?=
 =?us-ascii?Q?d9I6cDe73AMZ2TZc/ckstY6HVCjQsc1LgQxJDuXcEDTDUiCc4CGtsNzXxtu9?=
 =?us-ascii?Q?MVGLcKgdAdWi0Cy6gjMP4V4A2oc4gAXyvXZMoCoUJowhxWgQIGRDVy4Kq9S+?=
 =?us-ascii?Q?QUmjjszxJih6aCfQUuC7hXDkn69oS6pWK+opX5aPRapPILMFJtC7DdmFESSB?=
 =?us-ascii?Q?/OEEUwNAGLBZ7eAg3sZzJLwQylq6qU6Xy2HRdCBpOf976evAHJ14SZT3fzw5?=
 =?us-ascii?Q?qPiijp6zeA=3D=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Exchange-RoutingPolicyChecked:
	AmkKvx8IlTXFLRQ+OS78a/vnP/RZWCbp563PBx7BtKdue5I2W85wmPRpiO65whM3PSAvtZAND+lP+MF9QHJ+TtqMSPPtd+bdb1DKqUncua3DychaMj4wrY+eTiDjKGmkA9le9AJAVzPGcUq28sXUUOMDxKZ5ulPySuxDpBNTneMuF1TujagZd9Poy8hDyN2tSp1WBOurdzT/3dSHGg6tLMfvItOHL7EE9fPf3vusEZYIIXIxNnr7He0P/BDmqkzV9OF4ofKeFvWBXBP6vUH74ypp0rAkYij3B1E+f5JkUZlg8ZlWhU//QSukJOmJU5kJFuIey8GnlNDDYA+vONHvfg==
X-OriginatorOrg: aspeedtech.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SEZPR06MB7362.apcprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9475d214-bcd6-4a39-4986-08df3e0d268e
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 02:57:11.1662
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: b+600HePRCtb7CjFkyXpFdCfFq7+d3g2pbYc0xdFBdmqFfdOQJy6PIpTUIXzEAvbCd2qp02N9f81VH/HDjg7+awnP9kOxOA8cMvxBZm0CSI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR06MB8051
X-purgate-ID: tlsNG-bad1c0/1794193038-BD0CD034-C8A0672F/0/0
X-purgate-type: clean
X-purgate-size: 935

Hi Junjie,

> transfers
>=20
> Hi Jamin,
>=20
> On Mon, Nov 02, 2026 at 09:22:23AM +0000, Jamin Lin wrote:
> > +    if (!s->host_connected || !device || !device->attached) {
> > +        return usb_redir_ioerror;
> > +    }
>=20
> The device stays in USB_STATE_ATTACHED until the announce BH resets it, s=
o a
> control_packet in the same read as hello passes this check and hits the
> USB_STATE_DEFAULT assert in usb_handle_packet(). Checking
> device_announced here would cover it.
>=20
> For whenever you respin: stop_transfers() on a reset drops packets the cl=
ient
> may still cancel; usbredirhost answers them first.
>=20
> Tested: usb-storage exported from ast2600-evb enumerates behind qemu-xhci
> and usb-ehci, usb-audio behind qemu-xhci, and each SET_INTERFACE alt 1 is
> followed by an ep_info with the iso OUT endpoint.
>=20
> Junjie

Thanks for the review and suggestion.
Will fix it.
Jamin


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 05:45:49 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 05:45:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479520.1683444 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQICH-0005MP-HG; Mon, 09 Nov 2026 05:45:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479520.1683444; Mon, 09 Nov 2026 05:45:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQICH-0005MI-EM; Mon, 09 Nov 2026 05:45:37 +0000
Received: by outflank-mailman (input) for mailman id 1479520;
 Mon, 09 Nov 2026 05:45:35 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <taka@valinux.co.jp>) id 1xQICE-0005MC-FE
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 05:45:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQICD-0069KX-Hm
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:45:33 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <taka@valinux.co.jp>)
 id 6af15db8-8faa-0a2a0a5109dd-0a2a45038248-48
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 06:45:29 +0100
Received: from [52.101.228.82]
 (helo=OS0P286CU011.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <taka@valinux.co.jp>)
 id 6af15df6-fae8-0a2a45030019-3465e452cb30-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 06:45:28 +0100
Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18)
 by TYYP286MB4498.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:19c::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 05:45:22 +0000
Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM
 ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM
 ([fe80::c8c9:25cd:8d13:96d6%4]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 05:45:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" 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=J6tnxWaj8DBeshthxXLJuO8C/yI0B7JBS1BM5vxMAxR5GnslVgz0ONV3TwTBQ/0u5hUa3nQvENbe1ykvI3NDcNSdgkUNLGi6LtHTlTa9f4PJHnmICAyAnVIkKO5/apxl6wZkskdy19FTMG6Nu/CqYT71GIAoF0/fxq+1BGDXIwGT7W2hvJPESzsklgpTtZDyGi9hP+C9yfMzg88BQt9u2RvDCOQmsOfYTbnsty88gcH1aLVvk+uwDI3LzN1Df2w1Yfc8pO+8jL3ihskQoUJQRDchbJsxNTLW7RLfWDzfEZ/Uqmul4jZLDo0U80xB0e6ahebNa1Ww6oGp+FkoYSm8HA==
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=dnE39xUZrPfDkklWamkjids0YN1Zvuf20sqU3WH0JY0=;
 b=UYEkcxUJxNxekk8NpNNR8Fm/pli8XGIte6BOsXHuK1nu5gFiiaZKe80MRoNcTfTlqRqDAppHBw3Ld27qDyfoRDT3pZ6OVp+HfnY8nXWDoccMHHD7Iqj49W0ExKwZbWrawmb2C1j2bYKUWB4Ie9re2rHyx/bfYgFxiMs5hc6ghEwZF2QGvvEXKzPnHcuKtZrsE9Q+EEAbQtYbFKv1zlbRmQBrPeiUmVIC2amM1cE1zICFdcK1d6mRghnAL7SHZ4q34ea5wXv7srdmlRfVkmBjni3E5qbAoEtgjl+6QPU5eeibsKJhfcm5k94viL+5UPu4DOwc3I+jLEIHqle6MliSng==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=valinux.co.jp; dmarc=pass action=none
 header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dnE39xUZrPfDkklWamkjids0YN1Zvuf20sqU3WH0JY0=;
 b=RiGTyZmiFuv2a9+a/xH9pWrffY2zo17fU9Jy3znopLYS8ml6TtJ7QKBDlBK6MpX/YxgqOo4iJO/h5XG1gGo8Kxc5Bc0xvH8GE5Mr6wsIxaL82X3Mz4eeI4nCVrRlvWd8cXNtw+3sX91Xs+/Ms2k+QI3o65j0Xth1va/X5fzOg7c=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=valinux.co.jp;
From: Hirokazu Takahashi <taka@valinux.co.jp>
To: xen-devel@lists.xenproject.org
Cc: michal.orzel@amd.com,
	jbeulich@suse.com,
	Hirokazu Takahashi <taka@valinux.co.jp>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2] xen/arm: Fix sibling mask setup to only include online CPUs
Date: Mon,  9 Nov 2026 14:45:15 +0900
Message-ID: <20261109054515.1690-1-taka@valinux.co.jp>
X-Mailer: git-send-email 2.43.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: TYCPR01CA0205.jpnprd01.prod.outlook.com
 (2603:1096:405:7a::6) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM
 (2603:1096:604:458::18)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TYYP286MB4498:EE_
X-MS-Office365-Filtering-Correlation-Id: 713c5648-a80c-460c-4a73-08df3e24a569
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|10070799003|376014|23010399003|1800799024|260925021311599003|260925022911599003|260925021911599003|56012099006|261021135927099003|261021121427099003|261021123027099003|261022075727099003|261022105027099003|261026140227099003|261028144727099003|261102123227099003|10067099003|18002099003;
X-Microsoft-Antispam-Message-Info:
	O9y8YHv8pOT9Si83uNFvgRm3sHbsG4GkpIw1V6EHsjqPQq4X3gh08wYVNyOTKtH8wJ7hW0xXtnRE2TwUfuk5D0skZQhYK8lfGb4sScixi7lqeY+pZkc+InXwOhPeKpsqHJcmjjceLPssGhuwXkBRueCgXt0r7pzpWKno7gNNSjYdHMm5EtPm+6RBjm3ZRBZ48FiQSBEbUXtekxvuMiFj+B/crvdmFb1mQyXpUNfozoP1NazOOUffOu5vqv0kYrIqj2hVlOevr8lIOe/dHVSEJES/MA025FSBR3HEg67q4CXLktqrLLMIKcGx1Q+Eq0QLFpqgH8VUDYR1hKbZ6mkLm101dCSsoaft9N721rSpLsInIwu3XcqEAniMh6LCSV6v4cRuCPBSRoBEAkgUaclTGKtZOiOGEF6wzdVGP0Yb2nBjKnEp0mhV+s9hoOXzsTFduEiahDB54HGqPWs1N/u4PTtQ2/DmQHWiqwqkW9oW3EA2JCapooxGFWtmnLsP2JZEZRXa6HcouWMkVPPHZfzcg5AgKydhqpWjUxDm9yk8BQUUyAxdqAPyx58z/A5LwftQsRQZ3PLLt7T8hPNeDuPjq2bgBtuR6ydSjLAe8A70QV6v9hGLIOflQshOPPBwBjBK9U0Y0HEUWQQBdSJBERgy2gr+ZCE8QvQFpCFmbAW/l+I=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(376014)(23010399003)(1800799024)(260925021311599003)(260925022911599003)(260925021911599003)(56012099006)(261021135927099003)(261021121427099003)(261021123027099003)(261022075727099003)(261022105027099003)(261026140227099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?mPZ58SjkJt/2Tz2AFePlAz444Qir9RlxJYn5ubyEvVnGTyAtMsStHw03youN?=
 =?us-ascii?Q?z91/VDO/JFBgyJxTMiruFaGbCjuUeUNeiRhLnfpmCbG1VfpE66OStiPItEpb?=
 =?us-ascii?Q?2kcN7Pgsb6AuVXZudImB+yujKW8O4kzfhe5dtRAxQo4tcDupp14Bpw6l5h1r?=
 =?us-ascii?Q?vnTjU5gbJ6lrH0jrv1x2nwPUpDH8rNvifkRYQTv+hSUhf3cNJKg+aBjCxwvG?=
 =?us-ascii?Q?revDf1R9FsqDQ1cy9TjfHmVGkSvZOcfjK1D/hPXJFYTrXXxVGsyQ97LbMIbJ?=
 =?us-ascii?Q?t7VY6b4YQpAZD/G9fVcTAiTMx5d0DuuOrLrAStOGnB6dVSvOXuU6l+oxbsYZ?=
 =?us-ascii?Q?xVlz4xLah2aYfs0WvNlCnMNAdZnfEtb9vHyv2ozLTIqHsRl2j0706Bn+PXvR?=
 =?us-ascii?Q?H0k897EbLOi46ImyAybSA8/5GoEm2GTAB4sbEIyZY1VUOdbGgkRPGkNs9aU+?=
 =?us-ascii?Q?AuUeLt7cPH0XkCHM4GJ2qMZNXkZhjE4DP27Fm4/EAqHXfwpUc0QqxCF2zcD9?=
 =?us-ascii?Q?CZnHaxsj30KW0wKI0GPQvFkzdXRslBQ9Pxe315fxeFEsA+uGe9a1SZHrOoW6?=
 =?us-ascii?Q?Cej/cqFqtterMOEUmNQUtjCUJgCLq/vSsAt6jIVxMjWZsFr/u59b7YcSyfOU?=
 =?us-ascii?Q?M64yfECKNrkuPEZ7lpy057NWDCBdJFOPBdiodjvAhRV2P+UR3Dnr6KcU4whv?=
 =?us-ascii?Q?UkSYEuumTYUpP/ZCHhUY4+476aoWHBDeX20StkbVlt++Q46pRbMT0JwkIswd?=
 =?us-ascii?Q?YTZ6IGtU+fgICqw3d6l9Zce17le60PDIevrtQiQ7w933gZCRjU28nED9UkzK?=
 =?us-ascii?Q?mOx7CYfV9/NhnP98/ZxOdCGdHOg7/327NadhJdMsU+UMIwTUMC7vvbaPSt3R?=
 =?us-ascii?Q?NXOTtw6/esgnKnPsavzZj7e5oLrJU9qMApqSXSwmrKngvYJT826EsetDtjES?=
 =?us-ascii?Q?z0jD+SecqtsBRxRlkXxMM2D7QLwts2o9FvUw8nAw9DJyH1kSCGhnjRrINmhL?=
 =?us-ascii?Q?B5VGmUy/GmAdTkTZIaxixwhAAWzersVi3oAN64YvOM3XeTqipsMDo805CE+J?=
 =?us-ascii?Q?pvJNk0A3yateiL9i4s6nzD+oGgCJ+ZWiCKWejOnHLESkyfdpLQ324CiDMvqO?=
 =?us-ascii?Q?Ih27g74vgQy5sWzVi/jj4ShAIPuAncTb2fDMDceHlzefbYR1xkg/inWpXtFD?=
 =?us-ascii?Q?FYAVGlMbCH9Ng0Bmz9PKTwBW9jk/FbN6Da1svVq6pzMl1R+RS3FRmZWT1Jeq?=
 =?us-ascii?Q?IGmUG5KSqmvB4X1Z37e6En/nHypkzVek3wO1ia9l1XmSc+sZnVHCpI4bAiYd?=
 =?us-ascii?Q?WeYwU98Lm/zD8wmvhMH+NQgKMPnr+GHVnhCqiADRgm2nPe8u20POqzZYQbMs?=
 =?us-ascii?Q?+SP1P32m+0XJb/0vjumaw4oVDvDe7DcsMcACgvaJwnsEXoLVUbw+TuMgnCpb?=
 =?us-ascii?Q?FJqaf+48C+22rx4vNallavF5pTREAExnwDJZUFmRetHu5b7AbqmLbADw6tUS?=
 =?us-ascii?Q?R4KA1LOSE03AQNp3UYL7ftEpr4Q9cx51mzP2wlhiLiHnfhmOFlKYJ46vefZs?=
 =?us-ascii?Q?XDX3O+IV97ZOy+KO9Zt7k1Zna+LVAcAmbGHMRb1x3Euvu46PX5WXTLXo8iP4?=
 =?us-ascii?Q?BvS2eegankTGMhd1GX2326xQhjmVO1noPEHFMMTnPLz6Jaq7okMBR8dwksYw?=
 =?us-ascii?Q?SfAKPiC/fPszG8IwCq5TO9JxWHxenQFm4B1gbn81obZ1tBqC82AtKbiOPzq6?=
 =?us-ascii?Q?fUwdkmIS3Y4Y51QiSedf46EIqhGu7oM9S9qCkRxBoAlW/rjzZzdUT0eOw0B6?=
X-MS-Exchange-AntiSpam-MessageData-1: WYDlmoPwmqSksg==
X-OriginatorOrg: valinux.co.jp
X-MS-Exchange-CrossTenant-Network-Message-Id: 713c5648-a80c-460c-4a73-08df3e24a569
X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 05:45:22.6344
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: gP5NtzVZAbT2zycTdyGkON9sZ9KHKMMXZnk0ODCmAHyOYdViVPQ1tF0Uwtad+hpH3p1otNwvEmvoea9GjJ6BVQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYP286MB4498
X-purgate-ID: tlsNG-33051d/1794203129-6C6DE4E9-F7CB0548/0/0
X-purgate-type: clean
X-purgate-size: 2268

Populate the CPU sibling map only with CPUs that are brought
online. Currently, all CPUs in cpu_possible_map are added,
which leaves CPUs that failed to boot in the sibling masks and
may lead the scheduler to make incorrect decisions.

Changes in v2:
- Rename init_cpu_sibling_map() to set_cpu_sibling_map() to align
  with x86.
- Use BUG_ON() in set_cpu_sibling_map() to verify that per-cpu
  cpu_sibling_mask and cpu_core_mask are allocated.

Fixes: 701190abb3d5 ("xen/arm: Set correct per-cpu cpu_core_mask")
Signed-off-by: Hirokazu Takahashi <taka@valinux.co.jp>
---
 xen/arch/arm/smpboot.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 8c9072f3c1..9237576440 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -91,15 +91,27 @@ static int setup_cpu_sibling_map(int cpu)
          !zalloc_cpumask_var(&per_cpu(cpu_core_mask, cpu)) )
         return -ENOMEM;
 
+    return 0;
+}
+
+static void set_cpu_sibling_map(int cpu)
+{
+    unsigned int sibling;
+
+    BUG_ON (!per_cpu(cpu_sibling_mask, cpu));
+    BUG_ON (!per_cpu(cpu_core_mask, cpu));
+
     /*
      * Currently we assume there is no multithread and NUMA, so
      * a CPU is a sibling with itself, and the all possible CPUs
      * are supposed to belong to the same socket (NUMA node).
      */
     cpumask_set_cpu(cpu, per_cpu(cpu_sibling_mask, cpu));
-    cpumask_copy(per_cpu(cpu_core_mask, cpu), &cpu_possible_map);
+    cpumask_copy(per_cpu(cpu_core_mask, cpu), &cpu_online_map);
+    cpumask_set_cpu(cpu, per_cpu(cpu_core_mask, cpu));
 
-    return 0;
+    for_each_online_cpu(sibling)
+        cpumask_set_cpu(cpu, per_cpu(cpu_core_mask, sibling));
 }
 
 static void remove_cpu_sibling_map(int cpu)
@@ -314,6 +326,7 @@ smp_prepare_cpus(void)
     if ( rc )
         panic("Unable to allocate CPU sibling/core maps\n");
 
+    set_cpu_sibling_map(0);
 }
 
 /* Boot the current CPU */
@@ -385,6 +398,8 @@ void asmlinkage noreturn start_secondary(void)
 
     set_current(idle_vcpu[cpuid]);
 
+    set_cpu_sibling_map(cpuid);
+
     /* Run local notifiers */
     notify_cpu_starting(cpuid);
     /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 05:55:00 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 05:55:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479507.1683454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQILI-0008GG-HD; Mon, 09 Nov 2026 05:54:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479507.1683454; Mon, 09 Nov 2026 05:54:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQILI-0008G9-CO; Mon, 09 Nov 2026 05:54:56 +0000
Received: by outflank-mailman (input) for mailman id 1479507;
 Mon, 09 Nov 2026 04:41:12 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mam47@cmpt.sfu.ca>) id 1xQHBw-0006OV-BH
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 04:41:12 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQHBv-0081dx-EG
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 05:41:11 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mam47@cmpt.sfu.ca>)
 id 6af14ece-8faa-0a2a0a5109dd-0a2a450bdab4-16
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:41:11 +0100
Received: from [142.58.10.48] (helo=cs-arch-srv04.cmpt.sfu.ca)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <mam47@cmpt.sfu.ca>)
 id 6af14ee5-b7e8-0a2a450b0019-8e3a0a30811c-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:41:10 +0100
Received: by cs-arch-srv04.cmpt.sfu.ca (Postfix, from userid 662374)
 id 7F21B5A000D; Sun,  8 Nov 2026 20:41:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; none
From: Mahmoud Abumandour <mam47@sfu.ca>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Mahmoud Abumandour <ma.mandourr@gmail.com>
Subject: [PATCH] x86/nestedhvm: don't give L2 instructions L1 did not enable
Date: Sun,  8 Nov 2026 20:41:06 -0800
Message-Id: <20261109044106.2830619-1-mam47@sfu.ca>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-42698a/1794199270-1BCD79EA-E51C3D32/0/0
X-purgate-type: clean
X-purgate-size: 1470

From: Mahmoud Abumandour <ma.mandourr@gmail.com>

nvmx_update_secondary_exec_control() ORs Xen's own secondary controls
for L1 into those L2 runs with, among them "enable RDTSCP", "enable
INVPCID" and "enable XSAVES", which L1 is not offered. L2 then executes
these instructions where L1's VMCS makes them raise #UD, and when L1 sets
"INVLPG exiting", L2's INVPCID exits with reason 58, which
nvmx_n2_vmexit_handler() does not handle. Xen crashes L1's domain.

Fixes: 729186073765 ("Nested VMX: Extend VMCS control fields for n2 guest")
Signed-off-by: Mahmoud Abumandour <ma.mandourr@gmail.com>
---
 xen/arch/x86/hvm/vmx/vvmx.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index 29e48387a1..79f5c00ba6 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -650,6 +650,13 @@ void nvmx_update_secondary_exec_control(struct vcpu *v,
 
     host_cntrl &= ~apicv_bit;
     host_cntrl &= ~SECONDARY_EXEC_ENABLE_VMCS_SHADOWING;
+    /*
+     * Whether L2 may execute RDTSCP, INVPCID and XSAVES is L1's choice. L2
+     * gets #UD as on hardware.
+     */
+    host_cntrl &= ~(SECONDARY_EXEC_ENABLE_RDTSCP |
+                    SECONDARY_EXEC_ENABLE_INVPCID |
+                    SECONDARY_EXEC_XSAVES);
     shadow_cntrl = get_vvmcs(v, SECONDARY_VM_EXEC_CONTROL);
 
     /* No vAPIC-v support, so it shouldn't be set in vmcs12. */
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 05:55:19 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 05:55:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479514.1683463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQILf-0000Ay-NF; Mon, 09 Nov 2026 05:55:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479514.1683463; Mon, 09 Nov 2026 05:55:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQILf-0000Ar-JQ; Mon, 09 Nov 2026 05:55:19 +0000
Received: by outflank-mailman (input) for mailman id 1479514;
 Mon, 09 Nov 2026 05:18:47 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew@codeconstruct.com.au>) id 1xQHmI-0006uK-Fa
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 05:18:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQHmG-009rKu-Ib
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:18:44 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew@codeconstruct.com.au>)
 id 6af157ae-e002-0a2a0a5209dd-0a2a4504e7ca-4
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 06:18:43 +0100
Received: from [203.29.241.158] (helo=codeconstruct.com.au)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew@codeconstruct.com.au>)
 id 6af157b0-b57f-0a2a45040019-cb1df19e8140-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 06:18:43 +0100
Received: from [192.168.68.117] (unknown [180.150.112.139])
 by mail.codeconstruct.com.au (Postfix) with ESMTPSA id 083566E9E9;
 Mon,  9 Nov 2026 13:18:31 +0800 (AWST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=2022a header.d=codeconstruct.com.au header.i="@codeconstruct.com.au" header.h="Subject:From:To:Cc:Date:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=codeconstruct.com.au; s=2022a; t=1794201519;
	bh=inbRv9rqETpvmrvWY+hsNFNboYN1tmYS0qnuK2Kr/gs=;
	h=Subject:From:To:Cc:Date:In-Reply-To:References;
	b=egf84Gcqai+t2RbzRcp/hsSqUjhQHhjh3vyzhBpm8hV2KWxqDFJxnPUahIU113EcT
	 BgLm6wqU/Euo4rhk1oHtIX3Z9zvOL05mtWbK6K/L7+70zAOa6b9LxPeqiMFkTfAyXR
	 sJ6r+I/RKBuOwB8hQ4kh0KzVB0J735kCbnMQRQlA7QvM+MYWUHFrMnQcdvVsUlq4qL
	 OrhgI7yGlCRf9GdwPQCvkWPbpW6LqMolW9oQ7mrzBne/qL9+nOjj/aqp3F164dsqk2
	 7rLero/HB4L0DSs1r+ug01+7VgG2RcG87tSeq7M4AqhpAUCMcl+W2qQMRVuMpXb4J2
	 kfa7LW520ih5Q==
Message-ID: <4848c58f3152233477c4fa4786de2a49c9261c9c.camel@codeconstruct.com.au>
Subject: Re: [PATCH 09/14] soc: aspeed: convert LPC and P2A control mmap
 hooks to mmap_prepare
From: Andrew Jeffery <andrew@codeconstruct.com.au>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>, Juergen Gross
 <jgross@suse.com>,  Stefano Stabellini <sstabellini@kernel.org>, Oleksandr
 Tyshchenko <oleksandr_tyshchenko@epam.com>, Madhavan Srinivasan	
 <maddy@linux.ibm.com>, Nicholas Piggin <npiggin@gmail.com>, Michael
 Ellerman	 <mpe@ellerman.id.au>, "Christophe Leroy (CS GROUP)"
 <chleroy@kernel.org>,  "Ritesh Harjani (IBM)"	 <ritesh.list@gmail.com>,
 Shrikanth Hegde <sshegde@linux.ibm.com>, Haiyang Zhang	
 <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui	
 <decui@microsoft.com>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang	
 <jasowangio@gmail.com>, Eugenio =?ISO-8859-1?Q?P=E9rez?=
 <eperezma@redhat.com>,  Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Jarkko
 Sakkinen <jarkko@kernel.org>, Dave Hansen	 <dave.hansen@linux.intel.com>,
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar	 <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, x86@kernel.org, "H. Peter Anvin"
 <hpa@zytor.com>, Jan Kara <jack@suse.com>, Paul Moore
 <paul@paul-moore.com>, Stephen Smalley <stephen.smalley.work@gmail.com>,
 Ondrej =?UTF-8?Q?Mosn=C3=A1=C4=8Dek?=	 <omosnacek@gmail.com>, Joel Stanley
 <joel@jms.id.au>, Ryan Chen	 <ryan_chen@aspeedtech.com>, Billy Tsai
 <billy_tsai@aspeedtech.com>, Bjorn Andersson <andersson@kernel.org>, Konrad
 Dybcio <konradybcio@kernel.org>, Abel Vesa	 <abelvesa@kernel.org>, Jens
 Wiklander <jenswi@kernel.org>, Sumit Garg	 <sumit.garg@kernel.org>, Scott
 Branden <scott.branden@broadcom.com>,  Broadcom internal kernel review list
	 <bcm-kernel-feedback-list@broadcom.com>, Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Cochran
 <richardcochran@gmail.com>, David Woodhouse	 <dwmw2@infradead.org>, Andrew
 Lunn <andrew+netdev@lunn.ch>, "David S. Miller"	 <davem@davemloft.net>,
 Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski	 <kuba@kernel.org>,
 Paolo Abeni <pabeni@redhat.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
 linux-hyperv@vger.kernel.org, 	virtualization@lists.linux.dev,
 linux-sgx@vger.kernel.org, 	selinux@vger.kernel.org,
 linux-arm-kernel@lists.infradead.org, 	linux-aspeed@lists.ozlabs.org,
 linux-arm-msm@vger.kernel.org, 	op-tee@lists.trustedfirmware.org,
 netdev@vger.kernel.org
Date: Mon, 09 Nov 2026 15:48:30 +1030
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-9-c56aadfbab8a@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
	 <20261105-late-2026-mmap_prepare-v1-9-c56aadfbab8a@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.56.2-0+deb13u1 
MIME-Version: 1.0
X-purgate-ID: tlsNG-ebf023/1794201523-520D5B50-494F5A72/0/0
X-purgate-type: clean
X-purgate-size: 489

On Thu, 2026-11-05 at 21:05 +0000, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook for both
> the LPC control and P2A control drivers.
>=20
> Both remap a range of their reserved memory region, so use the PFN remap
> mmap action to do so, retaining the -EAGAIN error on failure via the acti=
on
> error override.
>=20
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>

Acked-by: Andrew Jeffery <andrew@codeconstruct.com.au>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 06:24:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 06:24:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479549.1683470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQIoE-00083b-Qx; Mon, 09 Nov 2026 06:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479549.1683470; Mon, 09 Nov 2026 06:24:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQIoE-00083U-OB; Mon, 09 Nov 2026 06:24:50 +0000
Received: by outflank-mailman (input) for mailman id 1479549;
 Mon, 09 Nov 2026 06:24:49 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <lkp@intel.com>) id 1xQIoC-00083O-PA
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:24:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQIoB-001Z7k-V0
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:24:47 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <lkp@intel.com>)
 id 6af16705-e002-0a2a0a5209dd-0a2a4503c11e-44
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:24:47 +0100
Received: from [192.198.163.13] (helo=mgamail.intel.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <lkp@intel.com>)
 id 6af1672c-fae8-0a2a45030019-c0c6a30dfe0a-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:24:46 +0100
Received: from orviesa006.jf.intel.com ([10.64.159.146])
 by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 08 Nov 2026 22:24:43 -0800
Received: from lkp-server01.sh.intel.com (HELO 0caa9d2d175c) ([10.239.97.150])
 by orviesa006.jf.intel.com with ESMTP; 08 Nov 2026 22:24:38 -0800
Received: from kbuild by 0caa9d2d175c with local (Exim 4.98.2)
 (envelope-from <lkp@intel.com>) id 1xQIny-00000000u1P-2AzQ;
 Mon, 09 Nov 2026 06:24:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=Intel header.d=intel.com header.i="@intel.com" header.h="Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1794205486; x=1825741486;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=YSso0Po3Ac6MsrirK9TwldtrkZcqVN03F1SxefX9FxQ=;
  b=XxD4lowi4DyZwwvYPFhrYpqkSWB74nH5+e8X6KouOKCu4XYzwSxdmcpp
   KLyCGN0Z2aU1UvDCIhL5khlrZV+4mG8OjnaGJZvh5Eosx30WB1YE67fbD
   hA5Lv2bjAfaMhq0XsJTYdRYpS/m0U79DIwc/fygSirU5+L6pcNvjPtz36
   sj6PT4FqxFL7OcKHwLphjc9vsG7ooQVd7IWu7aaQ4MVx1LQw4BPX0AYsG
   uQE3CP1dOsJtIhmBeUL7STwhxxKA5HC3QsJVYiUYjO9SGFF9FhAcTSRAk
   +N9hzziCSMXv0sI7ifpJbsz/SkH7/UDpqRi+qhohsyi3/3h7imEve9VDO
   Q==;
X-CSE-ConnectionGUID: IiGCwNNgQjeDbJC5EmaOGA==
X-CSE-MsgGUID: uuZ7M4kXTjSiEbmjOrK7sA==
X-IronPort-AV: E=McAfee;i="6800,10657,11960"; a="2913758"
X-IronPort-AV: E=Sophos;i="6.27,203,1787036400"; 
   d="scan'208";a="2913758"
X-CSE-ConnectionGUID: GzK1GYJdQue5f+Pi2BBMaQ==
X-CSE-MsgGUID: iW7KKfENRneZYXWo/Xw9aw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.27,203,1787036400"; 
   d="scan'208";a="7824695"
Date: Mon, 9 Nov 2026 14:24:09 +0800
From: kernel test robot <lkp@intel.com>
To: David Woodhouse <dwmw2@infradead.org>, kvm@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org,
	xen-devel@lists.xenproject.org, x86@kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Paul Durrant <paul@xen.org>, Vitaly Kuznetsov <vkuznets@redhat.com>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H . Peter Anvin" <hpa@zytor.com>, Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Sascha Bischoff <Sascha.Bischoff@arm.com>,
	Marc Zyngier <maz@kernel.org>, Joey Gouly <joey.gouly@arm.com>,
	Jack Allister <jalliste@amazon.com>,
	Dongli Zhang <dongli.zhang@oracle.com>, joe.jin@oracle.com,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH v12 08/24] KVM: x86: Re-synchronize TSC after
 KVM_SET_TSC_KHZ
Message-ID: <202611091411.tSxUx2Bj-lkp@intel.com>
References: <20261109012112.3415328-9-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20261109012112.3415328-9-dwmw2@infradead.org>
X-purgate-ID: tlsNG-33051d/1794205487-6D8D54E9-0F72CE6F/0/0
X-purgate-type: clean
X-purgate-size: 1343

Hi David,

kernel test robot noticed the following build errors:

[auto build test ERROR on dea4f6380f4ec96e8f3b0aaf2343764bd0d25ef4]

url:    https://github.com/intel-lab-lkp/linux/commits/David-Woodhouse/KVM-x86-Improve-synchronization-in-kvm_synchronize_tsc/20261108-172047
base:   dea4f6380f4ec96e8f3b0aaf2343764bd0d25ef4
patch link:    https://lore.kernel.org/r/20261109012112.3415328-9-dwmw2%40infradead.org
patch subject: [PATCH v12 08/24] KVM: x86: Re-synchronize TSC after KVM_SET_TSC_KHZ
config: i386-buildonly-randconfig-1005-20261109 (https://download.01.org/0day-ci/archive/20261109/202611091411.tSxUx2Bj-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261109/202611091411.tSxUx2Bj-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202611091411.tSxUx2Bj-lkp@intel.com/

All errors (new ones prefixed by >>):

   ld: arch/x86/kvm/x86.o: in function `kvm_synchronize_tsc_at':
>> x86.c:(.text+0xfaca): undefined reference to `__udivdi3'

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 06:36:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 06:36:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479556.1683480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQIzq-0002UQ-Qo; Mon, 09 Nov 2026 06:36:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479556.1683480; Mon, 09 Nov 2026 06:36:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQIzq-0002UJ-OC; Mon, 09 Nov 2026 06:36:50 +0000
Received: by outflank-mailman (input) for mailman id 1479556;
 Mon, 09 Nov 2026 06:36:49 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <bp@alien8.de>) id 1xQIzo-0002UD-SL
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:36:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQIzn-008FxT-L7
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:36:47 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <bp@alien8.de>)
 id 6af169de-e002-0a2a0a5209dd-0a2a45049876-46
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:36:47 +0100
Received: from [65.109.113.108] (helo=mail.alien8.de)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <bp@alien8.de>)
 id 6af169ff-b57f-0a2a45040019-416d716c8852-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:36:47 +0100
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 56B0A40E04CD; 
 Mon,  9 Nov 2026 06:36:46 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id aOVENPtaFWK7; Mon,  9 Nov 2026 06:36:44 +0000 (UTC)
Received: from stx.tnic (unknown [IPv6:2600:1700:38ca:c00::42])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id B1AD640E01E1;
 Mon,  9 Nov 2026 06:35:12 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=alien8 header.d=alien8.de header.i="@alien8.de" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1794206204; bh=AtsfehftEhocEg2I5bmWwp2ROneUNtV4068+F7Hlw8w=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=JHF72/UUi4yUT9aqIf+1NnxYf6RBnkvYAj3W0oNSoARYb9dCH6USJz/XwRB3zKAzN
	 MWJW9xd/ygniOGVsaaW7GBZaf+qXYyhu3aJBhi2D/f1MdqaPIPAWinTyaFBOA9gM35
	 5nUywwgnc62cQv4bfa4eoHQf48x0D4FJFNgLCt83+USeUOLy7Qh+2lSpB7trl1wz/p
	 kEpq/vJ6nrjXE/KAhASp6qorwpWq2HXjCxbam8Cyo1Z2sIRXrUNhsh6zZ/KoYZL2i4
	 1lmr105l2rgJ8qXntBB7PKSVPBF2/Z8bSDrAGXjT8NRQY6og6HlqYUIe5alwo9BgNF
	 dx1kkKAsqjQxtJJM1XRbbhZFSRsQTaoRpIN6D9Rt0nTL0lKCj+axgl9IxZagHCy091
	 r8Ki+ygh/0tcNG4AUVe5LTp4ch5qnCP4xKJ3OLYrbSXIXoab9f+zgIaxkW4jibdP8X
	 3s6MuKTd4JCyKlo7AF17HWOnrGSmGTMzu5kqiIdy8sdRXtaPhqcCV+NSL9gv2T7SAZ
	 ofaUI4PE6zr8T9OByuN3e8vf5AXpiMuzD+cRw/CoXMu517BCsSSS6nnJ+9Y0mm0MV/
	 h2mAq7Jr8pQs6CouL4r0WevxUISKIjEtmSGk88S8UwKCzTVapUK5ItYrpXUIxXDEx2
	 sCCf9g3g76KyyYwpg9RRhxLk=
Date: Sun, 8 Nov 2026 22:35:09 -0800
From: Borislav Petkov <bp@alien8.de>
To: Alexey Kardashevskiy <aik@amd.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	linux-crypto@vger.kernel.org, linux-pci@vger.kernel.org,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Sean Christopherson <seanjc@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Andy Lutomirski <luto@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ashish Kalra <ashish.kalra@amd.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@kernel.org>,
	Lorenzo Stoakes <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Jini Susan George <jinisusan.george@amd.com>,
	Kees Cook <kees@kernel.org>, Michael Ellerman <mpe@ellerman.id.au>,
	Nikunj A Dadhania <nikunj@amd.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Eric Biggers <ebiggers@kernel.org>,
	Kim Phillips <kim.phillips@amd.com>, Joerg Roedel <jroedel@suse.de>,
	Ethan Nelson-Moore <enelsonmoore@gmail.com>,
	"Tycho Andersen (AMD)" <tycho@kernel.org>,
	Liam Merwick <liam.merwick@oracle.com>,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Suresh Siddha <suresh.b.siddha@intel.com>,
	Xiaotian Feng <dfeng@redhat.com>,
	Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
	Andi Kleen <ak@linux.intel.com>, Kiryl Shutsemau <kas@kernel.org>,
	Tony Luck <tony.luck@intel.com>, Jason Gunthorpe <jgg@ziepe.ca>,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Xu Yilun <yilun.xu@linux.intel.com>,
	Carlos =?utf-8?B?TMOzcGV6?= <clopez@suse.de>,
	Jonathan Cameron <jic23@kernel.org>,
	Jori Koolstra <jkoolstra@xs4all.nl>,
	Thomas =?utf-8?Q?Wei=C3=9Fschuh?= <thomas.weissschuh@linutronix.de>,
	"Aneesh Kumar K.V (Arm)" <aneesh.kumar@kernel.org>,
	Ian Campbell <ian.campbell@citrix.com>,
	Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
	Petr Tesarik <ptesarik@suse.com>,
	David Howells <dhowells@redhat.com>,
	Haavard Skinnemoen <hskinnemoen@atmel.com>,
	Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	Ilpo =?utf-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,
	Christian Marangi <ansuelsmth@gmail.com>,
	Dave Jiang <dave.jiang@intel.com>,
	Michael Kelley <mhklinux@outlook.com>,
	Ilias Stamatis <ilstam@amazon.com>,
	Sumanth Korikkar <sumanthk@linux.ibm.com>,
	Simona Vetter <simona.vetter@ffwll.ch>,
	Toshi Kani <toshi.kani@hp.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Vinod Koul <vkoul@kernel.org>,
	Jiang Liu <jiang.liu@linux.intel.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Palmer Dabbelt <palmerdabbelt@google.com>,
	linux-coco@lists.linux.dev, xen-devel@lists.xenproject.org,
	iommu@lists.linux.dev, linux-mm@kvack.org, aik@ozlabs.ru,
	Santosh Shukla <santosh.shukla@amd.com>,
	"Pratik R . Sampat" <prsampat@amd.com>,
	Scott Soule Cheloha <scott.cheloha@amd.com>,
	Ackerley Tng <ackerleytng@google.com>,
	Fuad Tabba <tabba@google.com>
Subject: Re: [RFC PATCH kernel 01/17] pci/dma/tsm: Call disable DMA bus hook
 on cleanup
Message-ID: <20261109063509.GFavFpnZ-OM-rGcjdp@fat_crate.local>
References: <20260916115159.1938195-1-aik@amd.com>
 <20260916115159.1938195-2-aik@amd.com>
 <20260916174929.GCaqrWqZ1fIhi4Rgbn@fat_crate.local>
 <9c83efe9-9367-472f-bf39-e07252e70c3c@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <9c83efe9-9367-472f-bf39-e07252e70c3c@amd.com>
X-purgate-ID: tlsNG-ebf023/1794206207-51AD0B50-F74BA364/0/0
X-purgate-type: clean
X-purgate-size: 518

On Thu, Sep 17, 2026 at 12:28:50PM +1000, Alexey Kardashevskiy wrote:
> Correct, the patches between v7.3-rc2 and 01/17 (can drop samples and tools,
> obviously) are enough. It is basically recent tagged upstream + rebased
> Dan's https://lore.kernel.org/r/20260705220819.2472765-1-djbw@kernel.org

You probably should rebase that branch on 7.4 because it has caught a bunch of
conflicts since the last time...

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 06:43:46 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 06:43:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479564.1683488 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJ6S-0005CX-FB; Mon, 09 Nov 2026 06:43:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479564.1683488; Mon, 09 Nov 2026 06:43:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJ6S-0005CQ-CR; Mon, 09 Nov 2026 06:43:40 +0000
Received: by outflank-mailman (input) for mailman id 1479564;
 Mon, 09 Nov 2026 06:43:38 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQJ6Q-0005CJ-4c
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:43:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJ6P-001bbX-CA
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:43:37 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af16b88-bab6-0a2a0a5309dd-0a2a4504c764-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:43:37 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af16b98-b57f-0a2a45040019-c387df82d7e6-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:43:36 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 4201821FCC;
 Mon,  9 Nov 2026 06:43:35 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id EF51813302;
 Mon,  9 Nov 2026 06:43:34 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 35IaMZZr8WoFfQAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 06:43:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794206616; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=0HTdmYC+X67JSj881KWJKrpVsjlneY1xA389X3Rl9fo=;
	b=IAlJXG+YY4+zzs0veCBuYf1beeb4Wqi5xDzzRvoIPB8dLlwTXNXipNEihe24By8LiruHBM
	/zZ8zz7RUKvpRjRv0iAXHPSBDC5yYiRCS13fw0Hg8lJXhLlvbX3F0m/Va2zQczW4lZiOXX
	09kLSw38oengtOUjCflqj9SbTEbKY2k=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794206615; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=0HTdmYC+X67JSj881KWJKrpVsjlneY1xA389X3Rl9fo=;
	b=D0bPGbSqMKMnSvSwYNoHJfMfd+XNYHdp20bG/BZUOkkvFXMtI0frOMNfJ9/FMFyvBhydLO
	W3PmiHR925uXXDScXrrwDlejfiObMIhXxNRjx2+6NfvL89VL7L1DO2STYY5xabv0GH2xsF
	wO7UE+0YrjCNPXz+8b0/y6KZZSxu9zs=
Message-ID: <39c335a6-6924-4356-a2b2-37b0b3291f7b@suse.com>
Date: Mon, 9 Nov 2026 07:43:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/credit: Uncount units dropped by csched_schedule()
To: Lin Liu <lin.liu01@citrix.com>, xen-devel@lists.xenproject.org
Cc: Bengang Yuan <bengang.yuan@citrix.com>,
 Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>
References: <01484673691f2ac609c09d2e57d8981910e87aa9.1793612017.git.lin.liu01@citrix.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <01484673691f2ac609c09d2e57d8981910e87aa9.1793612017.git.lin.liu01@citrix.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------DAR6BfAL9xhql4pivEZM4eU0"
X-Spamd-Result: default: False [-9.79 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.50)[1.000];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-0.999];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email,citrix.com:email];
	HAS_ATTACHMENT(0.00)[]
X-Spam-Score: -9.79
X-Spam-Level: 
X-Spam-Flag: NO
X-purgate-ID: tlsNG-ebf023/1794206617-C20D5B50-8DA26A51/35/110847
X-purgate-type: clean
X-purgate-size: 5203

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------DAR6BfAL9xhql4pivEZM4eU0
Content-Type: multipart/mixed; boundary="------------izmnvRUU9Gb1AS4iBX09qb0X";
 protected-headers="v1"; hp="clear"
Message-ID: <39c335a6-6924-4356-a2b2-37b0b3291f7b@suse.com>
Date: Mon, 9 Nov 2026 07:43:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/credit: Uncount units dropped by csched_schedule()
To: Lin Liu <lin.liu01@citrix.com>, xen-devel@lists.xenproject.org
Cc: Bengang Yuan <bengang.yuan@citrix.com>,
 Dario Faggioli <dfaggioli@suse.com>, George Dunlap <gwd@xenproject.org>
References: <01484673691f2ac609c09d2e57d8981910e87aa9.1793612017.git.lin.liu01@citrix.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <01484673691f2ac609c09d2e57d8981910e87aa9.1793612017.git.lin.liu01@citrix.com>

--------------izmnvRUU9Gb1AS4iBX09qb0X
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDIuMTEuMjYgMTE6MDksIExpbiBMaXUgd3JvdGU6DQo+IGNzY2hlZF9zY2hlZHVsZSgp
IHRha2VzIHNuZXh0IG9mZiB0aGUgcnVucSB3aXRob3V0IGRlY3JlbWVudGluZw0KPiBucl9y
dW5uYWJsZSwgYXMgaXQgaXMgYWJvdXQgdG8gcnVuLiAgQSB1bml0IHRoYXQgc3RvcHMgYmVp
bmcgcnVubmFibGUNCj4gaXMgbm9ybWFsbHkgcmVtb3ZlZCBhbmQgdW5jb3VudGVkIGJ5IGNz
Y2hlZF91bml0X3NsZWVwKCksIGJ1dCBpZiB0aGUNCj4gcGljayBsb29wIGRyb3BzIGl0IGZp
cnN0LCB0aGUgc2xlZXAgZmluZHMgbm90aGluZyB0byBkbyBhbmQgdGhlIHVuaXQNCj4gc3Rh
eXMgY291bnRlZDoNCj4gDQo+ICAgICAgQ1BVIEEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1BVIEINCj4gICAgICBkb21haW5fcGF1c2UoKSAgICAgICAgICAgICAgICAgICBjc2No
ZWRfc2NoZWR1bGUoKSwgbG9jayBoZWxkDQo+ICAgICAgICBhdG9taWNfaW5jKCZkLT5wYXVz
ZV9jb3VudCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
cnVucV9yZW1vdmUoc25leHQpDQo+ICAgICAgICB2Y3B1X3NsZWVwX3N5bmMoKSAgICAgICAg
ICAgICAgICAhdW5pdF9ydW5uYWJsZV9zdGF0ZSgpOiBkcm9wDQo+ICAgICAgICAgIHdhaXRz
IGZvciBsb2NrICAgICAgICAgICAgICAgICB1bmxvY2sNCj4gICAgICAgICAgY3NjaGVkX3Vu
aXRfc2xlZXAoKQ0KPiAgICAgICAgICAgIG5vdCBydW5uaW5nLCBub3QgcXVldWVkOg0KPiAg
ICAgICAgICAgIG5vdGhpbmcgdG8gZG8NCj4gICAgICBkb21haW5fdW5wYXVzZSgpDQo+ICAg
ICAgICB2Y3B1X3dha2UoKQ0KPiAgICAgICAgICBydW5xX2luc2VydCgpICAgICAgICAgICAg
ICAgIG5yX3J1bm5hYmxlICsxIGFnYWluDQo+IA0KPiBEZWNyZW1lbnQgbnJfcnVubmFibGUg
d2hlbiBkcm9wcGluZyB0aGUgdW5pdC4NCj4gDQo+IEZpeGVzOiA3YzdiNDA3ZTc3NzIgKCJ4
ZW4vc2NoZWQ6IGludHJvZHVjZSB1bml0X3J1bm5hYmxlX3N0YXRlKCkiKQ0KPiBSZXBvcnRl
ZC1ieTogQmVuZ2FuZyBZdWFuIDxiZW5nYW5nLnl1YW5AY2l0cml4LmNvbT4NCj4gQXNzaXN0
ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1cy01LTUNCj4gU2lnbmVkLW9mZi1ieTogTGluIExp
dSA8bGluLmxpdTAxQGNpdHJpeC5jb20+DQpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8
amdyb3NzQHN1c2UuY29tPg0KDQoNCkp1ZXJnZW4NCg==

--------------izmnvRUU9Gb1AS4iBX09qb0X--

--------------DAR6BfAL9xhql4pivEZM4eU0
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrxa5YFAwAAAAAACgkQsN6d1ii/Ey/X
Wgf9EsFxUCYPhC3zZ18WA4uqmLDi4ESO+QOPpetSexVqH5e115Gps1XFGuCQLC71ToZKPfm+nTzv
BZu/WqOQMMh/uLxn+AFkKUQz23Ub9o2jS04rU9V9Td8cKtyCGwbq5k+cp4LTQFMqK0YiiW0nxKPN
thqLYNpQkID8mBK5wbAn3Es+f5z098y/OhDtoCqUWKu3ZVqw4X8z8yKh3vA9LCfqKYkf/73enJ5B
i0BlmoqFUdQcPU/YXX7N1GveQIzQiDJAhZmUk2h2hHZAJNbuk6hhHXv9TcUmQhTISK7lh6f2HE0x
qosre0lROvQpZyq0wdylNqxF4imkzMY8C85GOMKfkQ==
=S4Ii
-----END PGP SIGNATURE-----

--------------DAR6BfAL9xhql4pivEZM4eU0--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 06:45:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 06:45:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479571.1683499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJ8D-0005iv-U5; Mon, 09 Nov 2026 06:45:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479571.1683499; Mon, 09 Nov 2026 06:45:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJ8D-0005in-PX; Mon, 09 Nov 2026 06:45:29 +0000
Received: by outflank-mailman (input) for mailman id 1479571;
 Mon, 09 Nov 2026 06:45:29 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQJ8D-0005iH-0c
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:45:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJ87-009aez-6T
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:45:28 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af16bec-2eae-0a2a0a5409dd-0a2a4506e2d8-42
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:45:22 +0100
Received: from [40.107.208.41]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af16c01-195a-0a2a45060019-286bd029d478-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:45:22 +0100
Received: from SJ0PR13CA0209.namprd13.prod.outlook.com (2603:10b6:a03:2c3::34)
 by BL1PR12MB5754.namprd12.prod.outlook.com (2603:10b6:208:391::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Mon, 9 Nov
 2026 06:45:15 +0000
Received: from CO1PEPF00018869.namprd03.prod.outlook.com
 (2603:10b6:a03:2c3:cafe::67) by SJ0PR13CA0209.outlook.office365.com
 (2603:10b6:a03:2c3::34) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.7 via Frontend Transport; Mon, 9
 Nov 2026 06:45:14 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CO1PEPF00018869.mail.protection.outlook.com (10.167.249.154) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 06:45:13 +0000
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 9 Nov
 2026 00:45:13 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 00:45:11 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=Eb0G1TSeqdUTnRmKjeZKjtCpeteTVnhPa8F7hID000IkpRqaBZg5H40HY5yb2pvrt/2lIZ95kEdwkLR2rUCys2+aRiTkRzmRVCT8BB+oe0NjXYHVaI79Dc7brjcXoZjopgmsLQCzcsYKW8qEXb/Cd8pPawBhH1MX1HoP+kC02vTtML0rjfXI3snahdDSZjvjFXoM6xml24GfsG2I5g3tVCXkKkixW9Gslsx0VxScOU3idtvQ0N5hIKbBZnSBiwjP200NCZDlYqfV1DMuicbYi/ubV+BKxC64s2sCSVt8e9SnXgBIckz54Yr81Vp6yO/359i8tSWNyMeV/U72Q5MVTg==
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=EXaQ4PHQ0Z8inNQky96Zla+pjMqZp/VfA8uQo1fZJrU=;
 b=McTDASo9n7vQe9Ff14WWI+ZLRJImClTPtiAHH9SU4dNl6gzBCR5lxAxvHa53EAVuf2O8dS8qFhGqW25ug3h7nA+gw7CSGbtiKkrL/B+uwj2xGrD8TNskoosau258ITCcPsPAq5PUZ4nrVt+sF7N3rSdi6Ca3YY0CAz1tGiY+0a0wI7ojrHy0a8jp2aURy9hXbbhFRwDUhm9FzkRCcjwOXePT/Zb19/Fa4m4rAE8AvLPh9yglUfjeYb+D+fOZJ90kZsSZA86oh6L/Io9Mz8torSshoOtwg4Qqs2obNUHpbxBwGkPa5LpfSLrGpk4hRs5DLrEwlhA9y0Dw/whMr+hzxg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=vates.tech 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=EXaQ4PHQ0Z8inNQky96Zla+pjMqZp/VfA8uQo1fZJrU=;
 b=dtKDe/sMw/4IijpY4k3oHFLQUUzOTuMkDiB9TJq2p7S4+OuIOcQBYFIbyubivjq8Lu4agW0oY6XjR7WoU2EQTsN0/0IOVPjkLlBUtX/RePcIEkNxmGyAcvSZ3WKrPUFLj4UcnpQNvpqoDNr//5Hb20d/n9tLVukz2Zoo+IlIKuM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <d1965ddb-1a4e-4152-acb3-b9a5f5e57f80@amd.com>
Date: Mon, 9 Nov 2026 07:45:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] common: Convert !test_bit(_VPF_down) into
 is_vcpu_online()
To: Teddy Astie <teddy.astie@vates.tech>, <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, Jan
 Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger@xenproject.org>
References: <1793282364.8631fc262581453bbf619ec5b2062170.1a187f55469000f79f@vates.tech>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <1793282364.8631fc262581453bbf619ec5b2062170.1a187f55469000f79f@vates.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF00018869:EE_|BL1PR12MB5754:EE_
X-MS-Office365-Filtering-Correlation-Id: 77d50da6-939f-41a6-c1ea-08df3e2d01f9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|82310400026|1800799024|23010399003|376014|36860700016|261026121527099003|11063799006|56012099006|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	nX9RMy8CbZ3ra+deGYIzlxkUwUWjJiP8NvOWDyJ7w6MxNjmTliERdPAsdtDAilLbobENbUobPDC331+WW4PS4WkGagY2J3rLXZ3Fv6pPPjCnQw6jcEd6Xso9aMwsENSLQInHGfqVxJWDY3Zr0/zPGa2qOX4pbjRKRKCwLOimo69xGvOZBIF9l5MMf2jTlwx5LQg60EzazyW4cq8he9mkt1UjsFjFlEGAnV3nb89ciA55jI04+4veRDmJBWMQkmDJxpB/hKkB30/Vv6meBQB5ZEMHlk6ZS9Dno/e9BdJ8mXLXw/3Kk4imVhxgH6jdDuBO6Wto325gmzbjM1z6naJ3QBY8oYk0Rh0xu+ZZVe73NSC7hIBnLq3Nv0PnOEU9DBTfuIPufzlISouYlp5fCoef00DkfEPQ61lz2deOwJfMsaPM32UEVP5kFAS0TKGkz0Jx/8pVWEstagtGOu1EM6CNMP8aS0nERS9xLGuNcHHb6S8YGSFKbEq48T1NlXhvKdCtzQzoPzcZ4YrqupWTHehsycfvActe3ZZw8ZmhjhUZOOgcYIg4oSPOkpUo8hu/KLF6UbnxH2jGNGUia0wn7t9o9Q4rxhFDPRbhlta+5ocwv6MiTkI52DOXJXE1yuYfCXnj5KJGv5ugTsbWNYWrV5kjmDeio5+gmHNpKiiTH9Pbx4bRHDYEcg8jm+pGjIs53kR0tZ+kTUCCMs3SYFl5Vfei5A==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(82310400026)(1800799024)(23010399003)(376014)(36860700016)(261026121527099003)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	2nJeu70EJQDsgsouEA56MsXQbZWq0mCfkFnmC/9RvHNzP9w81KVSu+D46YhI9jOZFpTMpaCgH2Z16l5tjwWWGA5yUkYvHpJ6zAroC6YcW149GKdyITddo4d1O35nWEaTXWWCKQJXLCNjWl9tjr1STpQ8T9XOqiroAbvr50dqxTVYekzzvE5zWDoycGQGXK0MbF+Uq5YPgfQ4r0OPdYN/fen1ywrWmU3oD2zIQDvJfhJKxl1xFhC4Fw0hEkdGSOu27BgJHr8UArKmpx3MOmv+9U/lAYoS5plSkotFrrQJ1XlfD0s8suwIwzeBGwVQnpzC0dp4kD+fw/V5VG3FEFsw4cGyTNfFd9ZVVzgLToe0o6GDpPmf8smXnKApUu1iyqUT6z/uvOcGICoZg8uuCtgGZOM68U2Fg/uEATbLxULvis7o8ipwPCA2M+/9gzLqJgRe
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 06:45:13.6672
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 77d50da6-939f-41a6-c1ea-08df3e2d01f9
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF00018869.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5754
X-purgate-ID: tlsNG-16d1c6/1794206722-1ECC577B-49328A3C/0/0
X-purgate-type: clean
X-purgate-size: 258



On 29-Oct-26 14:58, Teddy Astie wrote:
> Do the same for test_bit(_VPF_down) into !is_vcpu_online().
> 
> No functional change.
> 
> Signed-off-by: Teddy Astie <teddy.astie@vates.tech>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 06:56:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 06:56:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479580.1683506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJJ6-0008E7-Qc; Mon, 09 Nov 2026 06:56:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479580.1683506; Mon, 09 Nov 2026 06:56:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJJ6-0008E0-Ng; Mon, 09 Nov 2026 06:56:44 +0000
Received: by outflank-mailman (input) for mailman id 1479580;
 Mon, 09 Nov 2026 06:56:43 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQJJ5-0008Du-Bw
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 06:56:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJJ4-00Cu0i-Gf
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:56:42 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af16e97-bab6-0a2a0a5309dd-0a2a4504d83e-44
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:56:42 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af16eaa-b57f-0a2a45040019-c387df82e584-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:56:42 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id BFB4422086;
 Mon,  9 Nov 2026 06:56:41 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6A17313302;
 Mon,  9 Nov 2026 06:56:40 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id rXt7D6hu8WpCCwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 06:56:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794207401; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=WHqpquX4+WgSAOGsQ15QoNjicHp3909wIyVH3LC+fIc=;
	b=E3x4iL2Gc/XWuhfQMNUOKqoI4E0m5EnETfzT76nx6b7qV84ubOZiHQopTGE+/ShjT1Su+D
	eFv5cAYZs/EKOrf7+MUOKlm7pcH0yOnhLuDMf/po4pG9Tpzh6WvMHKJmfxAcqdpc47p7ju
	WNc+k70F0GbHtGFIh5lz5AnF8HMqzw0=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794207401; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=WHqpquX4+WgSAOGsQ15QoNjicHp3909wIyVH3LC+fIc=;
	b=E3x4iL2Gc/XWuhfQMNUOKqoI4E0m5EnETfzT76nx6b7qV84ubOZiHQopTGE+/ShjT1Su+D
	eFv5cAYZs/EKOrf7+MUOKlm7pcH0yOnhLuDMf/po4pG9Tpzh6WvMHKJmfxAcqdpc47p7ju
	WNc+k70F0GbHtGFIh5lz5AnF8HMqzw0=
Message-ID: <b8d171de-52fe-474e-96db-d119840c6240@suse.com>
Date: Mon, 9 Nov 2026 07:56:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 6/9] xen/sys-hypervisor: Add release callback to
 hyp_sysfs_kobj_type
To: Ian Rogers <irogers@google.com>, Danilo Krummrich <dakr@kernel.org>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Kees Cook
 <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>,
 "Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>,
 Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,
 Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>,
 Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>,
 John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Nathan Chancellor <nathan@kernel.org>,
 Nick Desaulniers <ndesaulniers@google.com>,
 Viresh Kumar <viresh.kumar@linaro.org>,
 Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>,
 Alexander Aring <aahringo@redhat.com>,
 Felix Kuehling <felix.kuehling@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Zhihao Cheng <chengzhihao1@huawei.com>,
 Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>,
 Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev,
 llvm@lists.linux.dev, linux-hardening@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org,
 linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,
 linuxppc-dev@lists.ozlabs.org, linux-sh@vger.kernel.org,
 linux-s390@vger.kernel.org, gfs2@lists.linux.dev,
 xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org,
 amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
 linux-kernel@vger.kernel.org
References: <20261108223913.3624571-1-irogers@google.com>
 <20261108223913.3624571-7-irogers@google.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261108223913.3624571-7-irogers@google.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------AIXzU7yBxxMCFwv4ehArOVmL"
X-Spamd-Result: default: False [-14.46 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_SPAM_LONG(2.83)[0.809];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	ARC_NA(0.00)[];
	RCPT_COUNT_TWELVE(0.00)[45];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	FREEMAIL_CC(0.00)[linux.ibm.com,ellerman.id.au,gmail.com,kernel.org,users.sourceforge.jp,libc.org,physik.fu-berlin.de,epam.com,google.com,linaro.org,oss.qualcomm.com,redhat.com,amd.com,huawei.com,lists.linux.dev,vger.kernel.org,lists.ozlabs.org,lists.xenproject.org,lists.infradead.org,lists.freedesktop.org];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	R_RATELIMIT(0.00)[to_ip_from(RLujoqb9xj6u63c55fak3nsx3a)];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -14.46
X-Spam-Level: 
X-Spam-Flag: NO
X-purgate-ID: tlsNG-ebf023/1794207402-C0CDFB50-A2C4D2E2/35/110847
X-purgate-type: clean
X-purgate-size: 7168

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------AIXzU7yBxxMCFwv4ehArOVmL
Content-Type: multipart/mixed; boundary="------------vYCWG004ZOIZfxgQWDErlryz";
 protected-headers="v1"; hp="clear"
Message-ID: <b8d171de-52fe-474e-96db-d119840c6240@suse.com>
Date: Mon, 9 Nov 2026 07:56:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 6/9] xen/sys-hypervisor: Add release callback to
 hyp_sysfs_kobj_type
To: Ian Rogers <irogers@google.com>, Danilo Krummrich <dakr@kernel.org>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Kees Cook
 <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>,
 "Rafael J . Wysocki" <rafael@kernel.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>,
 Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,
 Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>,
 Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>,
 John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Nathan Chancellor <nathan@kernel.org>,
 Nick Desaulniers <ndesaulniers@google.com>,
 Viresh Kumar <viresh.kumar@linaro.org>,
 Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>,
 Alexander Aring <aahringo@redhat.com>,
 Felix Kuehling <felix.kuehling@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Zhihao Cheng <chengzhihao1@huawei.com>,
 Sumanth Korikkar <sumanthk@linux.ibm.com>, Bill Wendling <morbo@google.com>,
 Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev,
 llvm@lists.linux.dev, linux-hardening@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org,
 linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,
 linuxppc-dev@lists.ozlabs.org, linux-sh@vger.kernel.org,
 linux-s390@vger.kernel.org, gfs2@lists.linux.dev,
 xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org,
 amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
 linux-kernel@vger.kernel.org
References: <20261108223913.3624571-1-irogers@google.com>
 <20261108223913.3624571-7-irogers@google.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261108223913.3624571-7-irogers@google.com>

--------------vYCWG004ZOIZfxgQWDErlryz
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDguMTEuMjYgMjM6MzksIElhbiBSb2dlcnMgd3JvdGU6DQo+IGh5cGVydmlzb3JfaW5p
dCgpIGluIGRyaXZlcnMvYmFzZS9oeXBlcnZpc29yLmMgY3JlYXRlcyBoeXBlcnZpc29yX2tv
YmoNCj4gd2l0aCBrb2JqZWN0X2NyZWF0ZV9hbmRfYWRkKCkgKHdoaWNoIGFsbG9jYXRlcyBh
IGR5bmFtaWMga29iamVjdCB1c2luZw0KPiBkeW5hbWljX2tvYmpfa3R5cGUpLCBhbmQgaHlw
ZXJ2aXNvcl9zdWJzeXNfaW5pdCgpIGluDQo+IGRyaXZlcnMveGVuL3N5cy1oeXBlcnZpc29y
LmMgdGhlbiBvdmVyd3JpdGVzIGh5cGVydmlzb3Jfa29iai0+a3R5cGUgd2l0aA0KPiAmaHlw
X3N5c2ZzX2tvYmpfdHlwZSwgd2hpY2ggaGFkIG5vIC5yZWxlYXNlIGNhbGxiYWNrLg0KPiAN
Cj4gQWRkIGh5cF9zeXNmc19yZWxlYXNlKCkgY2FsbGluZyBrZnJlZShrb2JqKSB0byBwcmVz
ZXJ2ZSB0aGUgZHluYW1pYw0KPiBrb2JqZWN0IHJlbGVhc2UgYmVoYXZpb3IuDQo+IA0KPiBG
aXhlczogY2ZmN2U4MWIzZGQ3ICgieGVuOiBhZGQgL3N5cy9oeXBlcnZpc29yIHN1cHBvcnQi
KQ0KPiBTaWduZWQtb2ZmLWJ5OiBJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+DQo+
IC0tLQ0KPiAgIGRyaXZlcnMveGVuL3N5cy1oeXBlcnZpc29yLmMgfCA2ICsrKysrKw0KPiAg
IDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9k
cml2ZXJzL3hlbi9zeXMtaHlwZXJ2aXNvci5jIGIvZHJpdmVycy94ZW4vc3lzLWh5cGVydmlz
b3IuYw0KPiBpbmRleCA5MTkyMzI0MmE1YWUuLjBlOGEyY2Q2OWZkNiAxMDA2NDQNCj4gLS0t
IGEvZHJpdmVycy94ZW4vc3lzLWh5cGVydmlzb3IuYw0KPiArKysgYi9kcml2ZXJzL3hlbi9z
eXMtaHlwZXJ2aXNvci5jDQo+IEBAIC02NTksNyArNjU5LDEzIEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3Qgc3lzZnNfb3BzIGh5cF9zeXNmc19vcHMgPSB7DQo+ICAgCS5zdG9yZSA9IGh5cF9z
eXNmc19zdG9yZSwNCj4gICB9Ow0KPiAgIA0KPiArc3RhdGljIHZvaWQgaHlwX3N5c2ZzX3Jl
bGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopDQo+ICt7DQo+ICsJa2ZyZWUoa29iaik7DQo+
ICt9DQo+ICsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBoeXBfc3lzZnNf
a29ial90eXBlID0gew0KPiArCS5yZWxlYXNlID0gaHlwX3N5c2ZzX3JlbGVhc2UsDQo+ICAg
CS5zeXNmc19vcHMgPSAmaHlwX3N5c2ZzX29wcywNCj4gICB9Ow0KPiAgIA0KDQpXb3VsZG4n
dCBpdCBtYWtlIHNlbnNlIHRvIGhhdmUgYSBjb21tb24gZnVuY3Rpb24gZm9yIGp1c3Qga2Zy
ZWUoa29iaik/DQoNCkluIHlvdXIgc2VyaWVzIHRoZXJlIGFyZSAzIGluc3RhbmNlcyBvZiAu
cmVsZWFzZSBqdXN0IGRvaW5nIGtmcmVlKGtvYmopLg0KDQpJbiBjYXNlIHRoaXMgaXMgbm90
IHdhbnRlZCBvciB3aXRoIHVzaW5nIHRoZSBzdWdnZXN0ZWQgY29tbW9uIC5yZWxlYXNlDQpo
ZWxwZXIgeW91IGNhbiBhZGQgbXkNCg0KUmV2aWV3ZWQtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpn
cm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVyZ2VuDQo=

--------------vYCWG004ZOIZfxgQWDErlryz--

--------------AIXzU7yBxxMCFwv4ehArOVmL
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrxbqcFAwAAAAAACgkQsN6d1ii/Ey8b
bwf/ZTFiD1KHpnwASdlC96fzY8LKDEU4SduJ4BSPmrFxqeUdpBJRlpL6PFjpCmtNPiLLEbLKSAKO
8V/XKxTIYctU0kiaUun1NZqGKFmrXr5+bd8Ni+xwtaGtIIfnOjqGyMzuwNciofyiVdRpGNDU4Ad5
+IpYk4FwGyKy7gkE9Nf03vXcbchktM8Z7Q9NrRvjll64xw9gneGYxkexvVMA5kT1E2odD6BcYrLI
CEO328qO8Lgz6SE8FgqgIswYgSDv+ZebyiTUHev2cTSA8n0v3O9snk/5y+Fsz9khYihMtTqVE/bo
tXZZc3GHoOhrkCuVNC/6dPI9Z74/ZIX87YIjnwMrxg==
=E5Nf
-----END PGP SIGNATURE-----

--------------AIXzU7yBxxMCFwv4ehArOVmL--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 07:16:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 07:16:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479594.1683516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJcY-00046U-AL; Mon, 09 Nov 2026 07:16:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479594.1683516; Mon, 09 Nov 2026 07:16:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJcY-00046N-7r; Mon, 09 Nov 2026 07:16:50 +0000
Received: by outflank-mailman (input) for mailman id 1479594;
 Mon, 09 Nov 2026 07:16:49 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQJcX-00046H-FO
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:16:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJcV-009g0V-Ud
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:16:47 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af17358-bab6-0a2a0a5309dd-0a2a450ba220-30
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:16:47 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1735f-b7e8-0a2a450b0019-d1558033d820-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:16:47 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so2936475e9.2
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:16:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-495966f316esm8205837f8f.17.2026.11.08.23.16.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 08 Nov 2026 23:16:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794208607; x=1794813407; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=RZf4ovfOayxN2P+DWXMXh5ZcwMSGqulvxKXHQKQ2HsA=;
        b=gkvK48nF1BFm/MLjE5oQvvo+CzPkk6W41Km+7RNzcsTUBQLZ5DpPJib3hlwozXS578
         xXqyMs0opEdnoX5oaY3vIfQkLyhYcxb0M/VUkyhFEaaUk0WnoqukHdNtBTPrMhziZYyH
         MkfZAJ/07uYJ8ZmV5KCNuWwTT5zQfJlSjzaecoVbPKSnpmGHEKa1J3bofi/P0qzWKQE4
         lDkymj4qz/vIBBihivyK32cAKPPFbhhPqu0jLDqtI85oVI9ZNLo9/dDvrhlAyDP24kfr
         RKJdK4bj/BEMRgrR64RE0SuPM4cdZ7uT6G4Dv3CC4125BV+6SVvtXmaFPm/W95RXslz2
         s9wQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794208607; x=1794813407;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=RZf4ovfOayxN2P+DWXMXh5ZcwMSGqulvxKXHQKQ2HsA=;
        b=2hNUy2YZeQbKpBTQeU24AFe/zn8uLYZ0MUXuR2U+nJIhb8CTKm/eaO/wVj4XOyHdkm
         LzoXT7kBponkNmLLfidt0JXZH6q+xK4g9wU5N16zXZi0+dbL7aTNQm2qvLF9ve1PP8Ob
         utN3br+PJDyG68H483AHM5V6BjFx6gdoEkibcCtKcgG7cEHQsouqSrc6b1/hx2wOupE+
         xXdNeOMknkSws9itNzIG52yGsqr01GAXVq6TuageX8IL2Acy/s/I0f+4/8IZ/1HOEogg
         6XJwSiC9kGP2QWiDa06yDL5TkzFsQp4LQha+NvMiF6+LwWxjK/1m6SeeV1Bw5ZmtdmZX
         WHrg==
X-Forwarded-Encrypted: i=1; AL+hErEviaepX1wQkMtqR+jeDuh2cVLmUFBjiD7gpyuryB5NdCygwchr296QyifJU3rVdaxXKOOwIdLRcPw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/mI6HOOWdGrBWeyZIwvUAZ9Hg6WDdiQtEEBYeVh2SmKBGG7olC
	ahK0x6rSpYtRVAMBzqWZo7EfW9dXw9U8TaJGG49okyGCMeKttbKieo9q2zGT/T895/nsznZ01lP
	Gm0G8Tg==
X-Gm-Gg: AYBFou0RjqbqJ65MMHJH0AH7VPFbk811YNudm33AZg3ILnykjR5n7UmNuK3xgIh0x2H
	s0/HwpqOTDnc3fRQkLs4YkQSX+PAsyv47OHZAmCtcLqruOsXD9LpZBlJplpPjTWs7yDe6nOQZ7C
	y0ymCmy9eXuvfySWiY2hsG5htOIdh3PqjGBamaJoxXWpeNqtLxQSPJ56hyIDfaSOI8a7dU24SRu
	Z3XUI+r5aui8ROoA2dtUN2ypeWtK5fC98dUSIFhl86FhoWfbQpvb3FUo8BjuuAmfLYaBEsmi5zw
	UA48k13Hj/YrDmHokExKwz5j3fPZo99NrVqi0zedGt91GoCwV5/LoXxDvhKu7e/SzGf4L3s/bw2
	nHLDDrbF3CHiD4nApx9iZsR8kwHLzetjy+ipMTv1+wgtVw+2Fg+09Wm7/pQFiRdtCPsrr34/Rv9
	jRSi3j6kIF7k5umawivFlpP8pxRUqOM+B3jExpIpiyiI5No2ZkGfVpm602byDFTcC7fwNW2zbvW
	4qJHAXmq2UEoL0yHccv+fr/zFR8goisFT2uu1IMojCPr6aXPjzIDIDhegekDieue6CbJX7EQ3JH
	kjZOhpONGtF2aXHLDdtk26NvFB+0xOPCwM7LPU0RTh5tdylRHKasvwNSS4kVI5O98Wxr6LyC8z7
	c5j+SaLQjfglVeJOMRaqI5r9pOrC8CDgknNdj
X-Received: by 2002:a05:600c:1d0e:b0:4a6:44b:2593 with SMTP id 5b1f17b1804b1-4b963c853a9mr60398715e9.29.1794208607188;
        Sun, 08 Nov 2026 23:16:47 -0800 (PST)
Message-ID: <0d725b6a-089c-402b-97ff-2f584c0898d6@suse.com>
Date: Mon, 9 Nov 2026 08:16:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuidle: allocate processor_powers[] dynamically
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <4da146da-26ee-4ecd-a747-130ed0783324@suse.com>
 <729bd90c-af1d-45b6-a466-f18845a10daf@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <729bd90c-af1d-45b6-a466-f18845a10daf@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1794208607-182F49EA-2B1CD925/10/78276251493
X-purgate-type: spam
X-purgate-size: 797

On 07.11.2026 00:36, Jason Andryuk wrote:
> On 2026-11-03 07:52, Jan Beulich wrote:
>> @@ -1694,6 +1702,15 @@ static int __init cf_check cpuidle_presm
>>       if ( !xen_cpuidle )
>>           return 0;
>>   
>> +    processor_powers = xvzalloc_array(struct acpi_processor_power *,
>> +                                      nr_cpu_ids);
>> +    if ( !processor_powers )
>> +    {
>> +        printk("CPUIDLE: disabled - not enough memory\n");
>> +        xen_cpuidle = 0;
>> +        return -ENOMEM;
>> +    }
>> +
>>       mwait_idle_init(&cpu_nfb);
> mwait-idle.c accesses processor_powers[], too, but that should not be 
> accessible since we don't make it into mwait_idle_init()?

Indeed.

> If so:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 07:22:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 07:22:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479605.1683526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJi8-0006LE-2U; Mon, 09 Nov 2026 07:22:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479605.1683526; Mon, 09 Nov 2026 07:22:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJi7-0006L5-VK; Mon, 09 Nov 2026 07:22:35 +0000
Received: by outflank-mailman (input) for mailman id 1479605;
 Mon, 09 Nov 2026 07:22:35 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQJi7-0006Kz-1Q
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:22:35 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJi6-001iuG-3d
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:22:34 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af174a8-8faa-0a2a0a5109dd-0a2a4501c1e0-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:22:30 +0100
Received: from [209.85.128.43] (helo=mail-wm1-f43.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af174b6-5984-0a2a45010019-d155802be52e-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:22:30 +0100
Received: by mail-wm1-f43.google.com with SMTP id
 5b1f17b1804b1-4a207b02a2cso3131725e9.1
 for <xen-devel@lists.xenproject.org>; Sun, 08 Nov 2026 23:22:30 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90f10c701sm112602405e9.11.2026.11.08.23.22.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 08 Nov 2026 23:22:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794208950; x=1794813750; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=6QNUdsmxeafB4K8/wWuN6x0mlIeIZ7jN+soPpETr894=;
        b=YGsJj7i2IIRiRvL4MdPAQYEiPhNVSZ9tqj3QpqRx+vNHnSmUkuP4ALf2JJk6rbCo8+
         GwT7J6UB68hIWDu2fxxtavpB1/UQ31LqfLs+gwhDd7byQ67Dh3FVD8Qv6Bfwxh1BOZII
         NnCYw9HYPl0S4zZNghEUSSercuoQMzWvc3AgFLIKeHD0ByMw9vAxhhgZtbvAs/Q4hXD7
         kzfC1n4qei6ygbtokslPg/Aj3tuFvWJkHwE3F4VzbBaz6E+aBJ3Zu1qkATZiWyNW2wTJ
         4veHzbZUvmYbiCxtMvUwbfc4/of/Btke/Y9Q+lHymHso6fEltzkM9ifdr9NaqaSztLrE
         5szw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794208950; x=1794813750;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=6QNUdsmxeafB4K8/wWuN6x0mlIeIZ7jN+soPpETr894=;
        b=YVKx3utVtNKZYb4mnJnaSagJTrS4t5yQWfS3EbXeg5EbucvwIWOdBixCV+Fv165I9n
         ZgRggD0NwYMInn2LW383YBWJeLDAmb5Xz1j6AlQbXablw6E9o6BAbXPhhLSDn+Bo9CNo
         cCRQgW4rhcE60oZCjIc+Lj43mFd+MGVSCRwtaJn8k2crVr67qAmJO46P5enLYOQvij71
         aaA8nejgbaAMbTq5aalYVPkhL67koT25loT6ev0hI9jCsYKYahRvwOen7U4GqUnS42uT
         4eIhIgxEb7q8/jDyB8rz9iEfzckjAqnf2HnFHGmEVmp/+ca44xQdbomwn5CC8yOKKodE
         KW8w==
X-Forwarded-Encrypted: i=1; AL+hErGUGb5ZhRLJZaVZb+8TmaBoub14dhGfYEfA684moe8pgCcSbzOWShy7wHYGuaA3ZHG5TkHUODkF3a8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/P5xpYt/EYCfp2tfwfzf8j6GmeeWke0YPXzyLGUw9OcP4/AjSs
	QOq2GuDl1qMhWhr3j9PCmH+bNk9VCg715PLJKCBJoOnrvYr8Yd97zORMj/xhUE9jwQ==
X-Gm-Gg: AYBFou0dX4jyDQq9wQphH8OuGncsepLt1+qxwDcqxJ5NhJiXSddj3KyxZd7RWU701IX
	KtPeGFH/atGHJ1o+6HOFxL9aph8bFV6Gf+Q0lAuQF/pHS7jN9Sgbc/+ti62yJ0X7YP4e8Wry4tt
	uU+BiexWn1cT5zM60KK8WnEHX0xTpGst8oQQe7kbZiVaqgg7LM9uyodXXFBIO4/6wHwh7Y492y5
	VKUUs8gIf8Lg7twWpX7ArPj7tFZ3fWKiRa3fzysQxP3dZTL54ez1FpIrody6QlVNBBHRueZGlHP
	c8l7A0uv/nzOCdsw1zgk++JrAi+eIj437tyVp00WvtYz/kzX8jtmIFLEg0/MJHq7AHeOMBYogzA
	t90l+GkjHemjrEA6W0/BCfUesVdZsXSc3XIY1RMQ+9BVNbxKbWVuVxAyhKVEAYko8UIr9CUxpeA
	UkWOirzcZFXk3affXWMqCM7hyB6OdY6wY4wBYwkmkx6AIJxU+qUQhVvoPU54IN68utbb1UrSKxX
	MzbRWwXyCumwUtseg+9Qpj996fDqOS0MTi0BHG2xPlVWhrTOTDAc8R1uLHhuG+gmTw3Sifm03Sb
	4Pi9YQRf99OMX/6wtsSXse2mnDQtBZ9ug1/I9EqprHapCBhrSHfpMM/0sGvWZcKy4theFvbpX5I
	c7Z77f6/vtqAjZfzV
X-Received: by 2002:a05:600c:314f:b0:4a4:fc8c:cfd9 with SMTP id 5b1f17b1804b1-4b963c73aa2mr61543125e9.25.1794208950096;
        Sun, 08 Nov 2026 23:22:30 -0800 (PST)
Message-ID: <b1c8cf89-57c7-4fbe-8417-a524d5a680bd@suse.com>
Date: Mon, 9 Nov 2026 08:22:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpufreq: allocate processor_pminfo[] dynamically
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <9cd6da48-7a5e-4971-93e1-7d7262ddf7fc@suse.com>
 <00e27752-0049-4112-9ce8-97f0d2788d1a@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <00e27752-0049-4112-9ce8-97f0d2788d1a@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1794208950-C4B45757-7905E2DF/10/78276251493
X-purgate-type: spam
X-purgate-size: 1142

On 07.11.2026 00:44, Jason Andryuk wrote:
> On 2026-11-03 07:53, Jan Beulich wrote:
>> There's no need to have a NR_CPUS-dimensioned static array there.
>>
>> As ordering of pre-SMP initcalls isn't well-defined, allocate the array
>> from both cpufreq_presmp_init() and cpufreq_register_driver().
>>
>> Alongside adding a few NULL checks, drop a redundant one from
>> get_cpufreq_para().
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/drivers/acpi/pm-op.c
>> +++ b/xen/drivers/acpi/pm-op.c
>> @@ -104,8 +104,7 @@ static int get_cpufreq_para(struct xen_s
>>       pmpt = processor_pminfo[op->cpuid];
>>       policy = per_cpu(cpufreq_cpu_policy, op->cpuid);
>>   
>> -    if ( !pmpt ||
>> -         ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||
>> +    if ( ((pmpt->init & XEN_PX_INIT) && !pmpt->perf.states) ||
> 
> It's redundant today, but that depends on the other check.  Though maybe 
> get_cpufreq_para could take pmpt as an argument?

Perhaps, yet I'd view this as an independent change.

> Anyway:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks again.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 07:28:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 07:28:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479613.1683533 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJny-0007bI-Et; Mon, 09 Nov 2026 07:28:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479613.1683533; Mon, 09 Nov 2026 07:28:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJny-0007bB-CK; Mon, 09 Nov 2026 07:28:38 +0000
Received: by outflank-mailman (input) for mailman id 1479613;
 Mon, 09 Nov 2026 07:28:37 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQJnx-0007Xu-2T
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:28:37 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJnw-002puz-7V
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:28:36 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1761d-8faa-0a2a0a5109dd-0a2a450cab94-8
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:28:35 +0100
Received: from [40.93.196.15]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1761c-f479-0a2a450c0019-285dc40f8d36-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:28:30 +0100
Received: from CH2PR19CA0010.namprd19.prod.outlook.com (2603:10b6:610:4d::20)
 by IA4PR12MB989928.namprd12.prod.outlook.com (2603:10b6:207:112::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 07:28:26 +0000
Received: from DM3PEPF000265B2.namprd02.prod.outlook.com
 (2603:10b6:610:4d:cafe::5b) by CH2PR19CA0010.outlook.office365.com
 (2603:10b6:610:4d::20) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.13 via Frontend Transport; Mon, 9
 Nov 2026 07:28:26 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 DM3PEPF000265B2.mail.protection.outlook.com (10.167.23.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 07:28:26 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) 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.53; Mon, 9 Nov
 2026 01:28:24 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 9 Nov
 2026 01:28:24 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 01:28:23 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=T2JtxsDjt00ZHoIuLYxLsc15rYrcEY2PfL2YM5d/k4+1KH5BDc5lODMW3OxAy+Y/Q/exsnqb7fI8XCTfXhPnMB9KLB0txI1469PKZgb0r/tMsgM23W6a0FwAtV+87/ZlQ6/47x+10h17n9EJ0YtZw9ijRQ8GY5pzwkm3Mkw8ZW98FFo86A4+YbiJ3J47Ym/CTYJ8vumtneZE9kRwmdv+yEJJ4PEP4agj0ho4er97ku/j2kJJaWWKkNjW5HScp6KH/wf+LWV8kAZsLS10gSEvUAhYQvdbYOGjNq1yLwjHtpFKJd9gen/vOsPmS6nGT/5vZS7MXZL4A7tD1JM+ijg5rA==
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=oO/yYMXRhwfVA51pxWl78XPQrvWAeqcOHmglVdYhgPo=;
 b=uzIpfv3qF7g7QWyiN9/OzjEfgQMeik3uQWW/2MfNefbEGwTQiVURBDWkZkaA1mSxj2BN2Vk0Qp7TAOqZXskFoWUkBkGxICp7hk/RSpXUCmIBdqeAZnerJrDPbao/Za+VurwMYQnDDGylsVqApactu87nIrR4NpNu+bpHtrfwBa0Mr3Z9WVwJZSHhIlS2cxGZjMg7yWgpHCyWMZHx+he7HogZi2jwJSKOpDUWNzsl7ptgMCfk0GxDqpvz2UtZNiPZtsZc3hsZHi+U2GHtn1kKXy1mb6SeRq/J3iS2dOxPltqVj4X1CUMzy2eMrnPviOZr8NIjxwEPHLaIeRWBENkbMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=oO/yYMXRhwfVA51pxWl78XPQrvWAeqcOHmglVdYhgPo=;
 b=h+m64Hq+VKOSQg1DjQ58hjfY+TfdgMjKZqwcQk1i5piAyMsaqiDGn3wLQ5OCHDQDlcVQTfzFR3cDfbP5gcYUQqw/rhZVr1LViuazuRopvQ8G5v18uygVAsZk14ulPTJKdjizzImPdsKFMzdaTbMLK6K58ggDPiqJ3rU/bE0qR9g=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <c5cdef09-08da-426a-b005-d73112c6b9b1@amd.com>
Date: Mon, 9 Nov 2026 08:28:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arch/arm: Correcting comment typos across
 xen/arch/arm
To: Andrew Mbugua <andrewprecious388@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Jens Wiklander <jenswi@kernel.org>
References: <20261105112627.235207-1-andrewprecious388@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20261105112627.235207-1-andrewprecious388@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM3PEPF000265B2:EE_|IA4PR12MB989928:EE_
X-MS-Office365-Filtering-Correlation-Id: a0d90a64-b205-419b-a3ed-08df3e330b47
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|23010399003|82310400026|36860700016|11063799006|56012099006|261026121527099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	CgubxhGiw3xFaacFiDy2K/ANFDRDFg5uYglzf0y5uWp/GI4zYqUWuzCUZtdQBGjPkh4CEhgrs9CGFihW2WGDUMXvtFSm2oaj7VBwY7Pf6z07XqTZ9Nuwp8IdnGIQgyQ+dkC9k6/pThNqZUhUHahV8L/QFfob1Mbg46anzuN1imXyCgfGyFfLu6gaEqtHYfAHioGJBbY96y/MZWeeK2G4p8VJ1x1JLT7YPyInQP21Ah8pxK+bP6D7GKhvJQTvfv7wcQz+koS3Fj1brSu6vb9gg5YYi/3X3512FyRb1/GOv2BtU8jaWtiq9j480Wqzxw8m6hXYkS2pb9JdYxtj8xojslkQLgDnBc5JoIXQ/tTG8lMsDPaSNAKZTo0zzDxE4R/emuCB6YxJipp/RaVTE3eYCEOMNMS+2paQ1+roNuWJd5YpRTHa+SNQqVFsi3QfHMBnyw9fwgO2EjmwS68+nXXwg2bD5FTKfseuMqZfkXhTnv94EbsxgMCt/DNp7frBKLMTt3B1Sd20oqg198mQEszZBTdM3g3ILY1PhzTgEqlAnDroPkMaG8K3kM/wnIVG6xbj2+16oW+CMh44py57CyrvLhhE+sS4V0vgl9ebX9qwCnDJnlAL7YshHWu0Y835FQzc5U2dMbpadib8ZwNYrnD+hIzwV7iygK8INnielDWugp3D6g1ychFliipGYqEnr5n9Vn/u2osDviFnn3Nw9SMvbQ==
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)(376014)(23010399003)(82310400026)(36860700016)(11063799006)(56012099006)(261026121527099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	YGcJ8eDFm0wsDp7kVeh4zUPWEVM/ul7a0F1Rv7RU6Kr3AkIUCIk6DVWfTfk58ublfM/f5q2sz8+5zJTZ0JJezTBjr35ZW3mLvZVWJg4PoXs3jLC4Us3e2o3ct2xPzQfBywR4X1V0+W6mhikaAarJRv94GGDcKQo7FS2nKZZaIcJMTOlSWbYOlVnhLmjQEG1YBgqMstoDHWM9PMpdOL7RTpDnQDD1UC0RKS6RA4QF4strIF/BHpDJEtmgpnbc+PnPwzwLe6jI3hyRhi2pH5owQYlhjxlRwQkZ83cSTH4XtGyPldlei/EAG23ux2Ft5FeYy1vUuohMais4Mre+NUHNX3686ii7vnGqFnEJPlf2aRq+HauFLNesatBcZiKH3SyWUKs8Cs5ln1T14ayODSL56/fpV28Kx+rBFLv1bse4idQd9nzNusmzDJrj6YJYCbYa
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 07:28:26.2610
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a0d90a64-b205-419b-a3ed-08df3e330b47
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:
	DM3PEPF000265B2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB989928
X-purgate-ID: tlsNG-d25034/1794209310-032D8A5B-8AE0B33F/0/0
X-purgate-type: clean
X-purgate-size: 954



On 05-Nov-26 12:26, Andrew Mbugua wrote:
> No functional change.
> 
The below text should be put after "---", given that this is not the information
that should end up in a committed patch.

> I have been making typo corrections across a variety of files
> 
> Scanning Xen using codespell for typo matches I have found:
> 1. Xen native project sources: 3303 typos
Is this hypervisor only or entire Xen repo?

> 2. Qemu Tree - 4908 typos
> 
> Reasons for corrections:
> 1. Keeping the codebase clean,concise for future documentation generation
> 2. Just because typos seem minor doesnt mean that corrections should be ignored,
> while correcting these errors may not be pedantic I think its essential in
> keeping things claan and more readable.
I don't mind patches like this one, so thanks for the contribution:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

I'll do the commit msg adjustment when committing.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 07:35:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 07:35:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479620.1683544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJuI-0000jD-3O; Mon, 09 Nov 2026 07:35:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479620.1683544; Mon, 09 Nov 2026 07:35:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQJuH-0000j5-V6; Mon, 09 Nov 2026 07:35:09 +0000
Received: by outflank-mailman (input) for mailman id 1479620;
 Mon, 09 Nov 2026 07:35:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQJuG-0000iy-4s
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:35:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQJuE-002rQj-JK
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:35:06 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af177a6-e002-0a2a0a5209dd-0a2a4508c002-22
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:35:06 +0100
Received: from [52.101.48.5]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af177a8-f659-0a2a45080019-346530058338-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:35:06 +0100
Received: from BN9PR03CA0559.namprd03.prod.outlook.com (2603:10b6:408:138::24)
 by PH0PR12MB7012.namprd12.prod.outlook.com (2603:10b6:510:21c::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 07:34:57 +0000
Received: from BL2PEPF000352D9.namprd02.prod.outlook.com
 (2603:10b6:408:138:cafe::42) by BN9PR03CA0559.outlook.office365.com
 (2603:10b6:408:138::24) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.496.5 via Frontend Transport; Mon, 9
 Nov 2026 07:34:57 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 BL2PEPF000352D9.mail.protection.outlook.com (10.167.254.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 07:34:57 +0000
Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 9 Nov
 2026 01:34:56 -0600
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com
 (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 9 Nov
 2026 01:34:56 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 01:34:55 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=GcaSfFmVu69dmr1r1OQBVEY7ebjl/atZqQ4F7hG7ZzlC2iSTstLDGqoSGjbwNeHav448UwVk0EMEbUWHVNDSM6hJtRacW4KULHzD1MG4yuAIY14UAIjEz48+Bqqt06ZDnrfbNYKJ1x4K37iaOXtQLTtjqCXMrz/MNQw18CC2pIItmrjZYowcuEGx+IoLdRZ4pVzsRPGk7OnhlyzXkxTS1Yx6DA9t9hBVkAftzOmFR8gbA1uhS/hYL93Ztood/SWHj4BAh5rf90njPL7R2a4JYFKFSdctoJXaPUGIDP62kV7nxn5eCovhWIyN8elGHPLxvW5DWnSMvesiaMHphNC2zQ==
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=PsfowvyyPcPPxczp+yUm3mw/LEg9/zzxe532S6UERoM=;
 b=MtPDY2LwIZTpImjmBmnhvX+b5lK7GBxvmAbx1L+svfbBQxJiNMhlEHUACX8Xsrt5X6//fjbYocd+FBEssgO3F/S+tKYSgTOeHW+cdm1adlVCacs6+QVKix7iEHlxILKnbr7fRbWI8i39Hn7tD+9vYGrRrXRskgUZ6YFerG8P62bqg56PwtnGEyFuLYUejpANNE9eCqOdwMgijsJmD0AnBPOS/wkqluDvG3/ScKjUMF+NdJO0J7f2jWnKtFkBzZ8yCt6VqcgiSlK55DB8nlZnJs7txH99boZMB5Qs1p5ylWSLpm7YAeWnolEXk9ivsbPqgKmFmBx4V4nNHCUUYEnDRw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=PsfowvyyPcPPxczp+yUm3mw/LEg9/zzxe532S6UERoM=;
 b=oK7Lu21QzySsntAOXJxQE+5O4cCejXCU/uO9VVmva6VzmXIOcCkMGOhFb+lq+XTx4NHOfWMVCxfyBSCxSoD1gWoqyGRwEF6lklYXSj4n/k4M3+5o5o96jCr9byJXTOylEG3+33zynK0ou72ttuisKdc+2d15hL2zBsYX8fJp/CM=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <0f39082f-2433-4a2c-89c5-fec0828e3eed@amd.com>
Date: Mon, 9 Nov 2026 08:34:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/dt: Skip non-RAM reserved-memory regions in
 make_memory_node()
To: Kuan-Wei Chiu <visitorckw@gmail.com>
CC: <xen-devel@lists.xenproject.org>, <sstabellini@kernel.org>,
	<julien@xen.org>, <bertrand.marquis@arm.com>, <marscheng@google.com>,
	<jserv@ccns.ncku.edu.tw>, <eleanor15x@gmail.com>
References: <20261028211737.17629-1-visitorckw@gmail.com>
 <10bc93f8-5ac4-4804-864e-d83a5fbf7108@amd.com> <auyzbMaKb2_Oul4V@google.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <auyzbMaKb2_Oul4V@google.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL2PEPF000352D9:EE_|PH0PR12MB7012:EE_
X-MS-Office365-Filtering-Correlation-Id: d3374274-066f-4550-b58c-08df3e33f42f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|23010399003|82310400026|36860700016|11063799006|4143699003|56012099006|261021121427099003|261022105027099003|261009223027099003|261026140227099003|261026121527099003|261028144727099003|261102123227099003|10067099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	PFvL1fooKQBk5SYH8cMuJNXoKS+GfT4/lGH+WUjtHqk8OtFzWi6n6IhwDWEsIs7DG3iECRe5c+EhuSZrx5xqG87BqGumst3fGdYXTnQ4CfNyGTO+mnMay0/67W/IE4t7oltXBQZfX7lqOBzJRz0s8r6BKRAoIUm29T1Yz7sF4AgOCI/S5a69Gi+Z2wQQS4unKUV30CMQMdiXr6A41hwyNhqNemmneCy72R7ibx3fFCOjMY+I9ezMuGwG8rZZ0L+9T+vSjnfNZDB3JYpOWL+FvIl5uc1aeaNpmcKmlBWJ5rP1Y1wJoJF7uEVuM1rp6Soe5RtOXU3cAh413cbCFOgoZEUScOuHlercJ3hYdwdQZRzO+rrSggHib8HwbsGIhNAZ6AjATuvOQ5wUSNPPoKblnHpk3VvCNLHhBIbDIC0sBYDlHOU8GU/yvx3ovgSErefNQCak53HKV0htU8RNFNwV5Dn0JyurlaOVfqi0IHsbqIqBDyD8kZVTdVH/cyJMCkaZeSbmiIvKEHKk5HXOwHOmaVfuyupjXi4gvTLevt7Fh93d7D7fpSCBHFft/goe+/P6uDwtfeTzqfIxyShmqTBH+urhdu4QrYzRbE3DrZFHXo5pYHdoePaODJF6HEkP/fVk5RNE1WR2s8qJuJMeRMZZOLjSdRJ0mOKhmHQUDsWTFbXxROzim9hoqS/YMNxr23o8t6pJTxVO/oBbGiAlsbdD+w==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(23010399003)(82310400026)(36860700016)(11063799006)(4143699003)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003)(261026140227099003)(261026121527099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	DJQSQjx6DEEtdEk8pNdJ9ZXMk7m8ss1hOq99hP3TMSX8WlxJYT2pdQxQwkk93HyxfnNvxenR7bXhvLOhVd7JZ9jDpbfdgfc01tMOKF2dHWDQ/7TH9sUICtpHTR4NQGC9NZiDOCSchfr+h19+em0zBnNPLSYIgayRtMahtDahMGBg4gs4RktUx1pe1moMwIle58e1olBcfvI9TAibAG43qh85pnCZLEZVz0dOuWd/uHz1uRhOrpQ8K0ni6dieO0ZMP/uNjpTRgb08Q28LyoPYnYg0xz9j0BkKEyGTggMJwOqnjRbCKWznqtRqjS+USOMPUWOKDAyIbuW6ZWNI393HQty8apJcrq8tPcO38Up7C/+IDo/Wmks/bdqUyz69GnGkUty8JXkr+HTXuNdJv6lPf0jvydh71S4oDQpiyklenAIsZF07uzj/SiL+8NRYuO3F
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 07:34:57.0490
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d3374274-066f-4550-b58c-08df3e33f42f
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL2PEPF000352D9.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7012
X-purgate-ID: tlsNG-c1860d/1794209706-CEB4187B-F6E888C3/0/0
X-purgate-type: clean
X-purgate-size: 1479



On 05-Nov-26 17:48, Kuan-Wei Chiu wrote:
> Hi Michal,
> 
> On Mon, Nov 02, 2026 at 02:02:20PM +0100, Orzel, Michal wrote:
>>
>>
>> On 28-Oct-26 22:17, Kuan-Wei Chiu wrote:
>>> Xen creates a second /memory node for Dom0 from
>>> bootinfo_get_reserved_mem() without checking whether those regions
>>> belong to host RAM. However, /reserved-memory can also describe
>>> on-chip SRAM or firmware regions outside system RAM. Listing them in a
>>> /memory node causes Dom0 to register non-RAM addresses as system RAM,
>>> conflicting with device MMIO mappings.
>> It's worth adding a reference to Linux binding for nvmem-rmem as an example (the
>> only one so far?) of /reserved-memory describing non RAM. Please also mention
>> Linux comment at early_init_dt_reserve_memory().
> 
> Ack.
> 
>>
>>>
>>> Skip reserved-memory banks outside the host RAM banks reported by
>>> bootinfo_get_mem() in make_memory_node().
>> Have you considered EFI boot? There we don't use /memory and bootinfo_get_mem()
>> contains usable memory. IOW I think it does not contain reserved memory. In such
>> scenario, we would skip the reserved regions because they are not described in
>> memory membank. So it would be a regression in behavior.
>>
> 
> I'm not quite familiar with EFI, so I indeed didn't consider the EFI
> boot scenario in the first place. I think I should skip the
> is_in_host_ram() check when efi_enabled(EFI_BOOT)?'
Yes, please do so.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 07:53:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 07:53:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479631.1683552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKBv-0004s2-Gp; Mon, 09 Nov 2026 07:53:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479631.1683552; Mon, 09 Nov 2026 07:53:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKBv-0004rv-Cb; Mon, 09 Nov 2026 07:53:23 +0000
Received: by outflank-mailman (input) for mailman id 1479631;
 Mon, 09 Nov 2026 07:53:21 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQKBt-0004rp-Ja
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 07:53:21 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQKBs-00AFfc-Hb
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:53:20 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af17bed-2eae-0a2a0a5409dd-0a2a4506b306-12
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:53:20 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af17bef-195a-0a2a45060019-c387df82df76-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 08:53:20 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id C2F3F21F83;
 Mon,  9 Nov 2026 07:53:19 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6749A13319;
 Mon,  9 Nov 2026 07:53:19 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id ZaOBD+978WrJRwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 07:53:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794210799; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=mtwimrsAGfjjluaZ29H+iIKzD9a3mq5Gyxp1CKu0/S4=;
	b=g6DzDdfcnRcM33YreK2ahQsBHkXEbLPIgPFv9GPVarTdwsPQr2CTIsF55ENSLzdf38DC5s
	npi7JRAh/4EppTiPS1/9LSZ7QXBfih7Cv5u+iLWv04iPb2n9fQTbmef45IfBmsI1M9Pxsm
	mGFFaqOrG219P4NlTHxK3DLrTjyISYE=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794210799; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=mtwimrsAGfjjluaZ29H+iIKzD9a3mq5Gyxp1CKu0/S4=;
	b=g6DzDdfcnRcM33YreK2ahQsBHkXEbLPIgPFv9GPVarTdwsPQr2CTIsF55ENSLzdf38DC5s
	npi7JRAh/4EppTiPS1/9LSZ7QXBfih7Cv5u+iLWv04iPb2n9fQTbmef45IfBmsI1M9Pxsm
	mGFFaqOrG219P4NlTHxK3DLrTjyISYE=
Message-ID: <7af392b9-0cf9-46fe-a820-c994942893fe@suse.com>
Date: Mon, 9 Nov 2026 08:53:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/events: replace __get_free_pages() with kmalloc()
To: "Mike Rapoport (Microsoft)" <rppt@kernel.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: David Hildenbrand <david@kernel.org>, Vlastimil Babka
 <vbabka@kernel.org>, linux-mm@kvack.org, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org
References: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------wXW5pNoOVuHMY5I23DbFQuaD"
X-Spam-Flag: NO
X-Spam-Level: 
X-Spamd-Result: default: False [-9.80 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.49)[0.998];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	ARC_NA(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[8];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -9.80
X-purgate-ID: tlsNG-16d1c6/1794210800-FDC0F77B-83906BE9/35/110847
X-purgate-type: clean
X-purgate-size: 7210

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------wXW5pNoOVuHMY5I23DbFQuaD
Content-Type: multipart/mixed; boundary="------------9CjsJxfyxMmK8BT64s75qaM0";
 protected-headers="v1"; hp="clear"
Message-ID: <7af392b9-0cf9-46fe-a820-c994942893fe@suse.com>
Date: Mon, 9 Nov 2026 08:53:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/events: replace __get_free_pages() with kmalloc()
To: "Mike Rapoport (Microsoft)" <rppt@kernel.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: David Hildenbrand <david@kernel.org>, Vlastimil Babka
 <vbabka@kernel.org>, linux-mm@kvack.org, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org
References: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>

--------------9CjsJxfyxMmK8BT64s75qaM0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDguMTEuMjYgMDk6NDIsIE1pa2UgUmFwb3BvcnQgKE1pY3Jvc29mdCkgd3JvdGU6DQo+
IHNldF9ldnRjaG5fdG9faXJxKCkgYWxsb2NhdGVzIGEgcGFnZSBmb3IgdGhlIGV2ZW50IGNo
YW5uZWwgdG8gSVJRDQo+IG51bWJlciBzb2Z0d2FyZSBsb29rdXAgdGFibGUuDQo+IA0KPiBU
aGlzIGJ1ZmZlciBjYW4gYmUgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIGFzIHRoZXJlJ3Mg
bm90aGluZyBzcGVjaWFsDQo+IGFib3V0IGl0IHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBwYWdl
IGFsbG9jYXRvci4NCj4gDQo+IGttYWxsb2MoKSBwcm92aWRlcyBhIGJldHRlciBBUEkgdGhh
dCBkb2VzIG5vdCByZXF1aXJlIHVnbHkgY2FzdHMgYW5kDQo+IGtmcmVlKCkgZG9lcyBub3Qg
bmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBmcmVlZCBvYmplY3QuDQo+IA0KPiBQZXJm
b3JtYW5jZSBkaWZmZXJlbmNlIGJldHdlZW4ga21hbGxvYygpIGFuZCBfX2dldF9mcmVlX3Bh
Z2VzKCkgaXMgbm90DQo+IG1lYXN1cmFibGUgYXMgYm90aCBhbGxvY2F0b3JzIHRha2UgYW4g
b2JqZWN0L3BhZ2UgZnJvbSBhIHBlci1DUFUgbGlzdCBmb3INCj4gZmFzdCBwYXRoIGFsbG9j
YXRpb25zLg0KPiANCj4gRm9yIHRoZSBzbG93IHBhdGggdGhlIHBlcmZvcm1hbmNlIGlzIGFu
eXdheSBkZXRlcm1pbmVkIGJ5IHRoZSBhbW91bnQgb2YNCj4gcmVjbGFpbSBpbnZvbHZlZCBy
YXRoZXIgdGhhbiBieSB3aGF0IGFsbG9jYXRvciBpcyB1c2VkLg0KPiANCj4gUmVwbGFjZSB1
c2Ugb2YgX19nZXRfZnJlZV9wYWdlcygpIHdpdGgga21hbGxvYygpIGFuZCBmcmVlX3BhZ2Vz
KCkgd2l0aA0KPiBrZnJlZSgpLg0KPiANCj4gTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5v
cmcvYWxsLzYzNTQwNWU0LTk0MjMtNGEyNS1hNmU3LWUwM2M4ZWEwYmNiZUByZWRoYXQuY29t
DQo+IFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgKE1pY3Jvc29mdCkgPHJwcHRAa2Vy
bmVsLm9yZz4NCg0KU2hvdWxkbid0IHlvdSBhbHNvIHJlcGxhY2UgX19nZXRfZnJlZV9wYWdl
KCkgaW4geGVuX2luaXRfSVJRKCk/IEkgZG9uJ3Qgc2VlDQp3aHkgdGhpcyBpcyBiZWluZyBv
bWl0dGVkLg0KDQoNCkp1ZXJnZW4NCg0KPiAtLS0NCj4gVGhpcyBpcyBhIChzbWFsbCkgcGFy
dCBvZiBsYXJnZXIgd29yayBvZiByZXBsYWNpbmcgcGFnZSBhbGxvY2F0b3IgY2FsbHMNCj4g
d2l0aCBrbWFsbG9jLg0KPiANCj4gTGFyZ2VseSwgYW55dGhpbmcgdGhhdCBkb2Vzbid0IG5l
ZWQgc3RydWN0IHBhZ2UgKG9yIGEgbWVtZGVzYyBpbiB0aGUNCj4gZnV0dXJlKSBzaG91bGQg
anVzdCB1c2Uga21hbGxvYygpIG9yIGt2bWFsbG9jKCkgdG8gYWxsb2NhdGUgbWVtb3J5Lg0K
PiBSZW1vdmluZyBuZWVkbGVzcyBjYWxscyB0byBwYWdlIGFsbG9jYXRvciBoZWxwcyB3aXRo
IG1lbWRlc2MgKGFrYSBwcm9qZWN0DQo+IGZvbGlvKSBjb252ZXJzaW9uIGFuZCBnaXZlcyBh
IG5pY2VyIEFQSSB3aXRob3V0IGNhc3RzLg0KPiAtLS0NCj4gICBkcml2ZXJzL3hlbi9ldmVu
dHMvZXZlbnRzX2Jhc2UuYyB8IDQgKystLQ0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy
dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94
ZW4vZXZlbnRzL2V2ZW50c19iYXNlLmMgYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzX2Jh
c2UuYw0KPiBpbmRleCBmZDE2ZDY1MmM4MWYyLi44YzM3NzQ5MzQyOWI3IDEwMDY0NA0KPiAt
LS0gYS9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzX2Jhc2UuYw0KPiArKysgYi9kcml2ZXJz
L3hlbi9ldmVudHMvZXZlbnRzX2Jhc2UuYw0KPiBAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRp
YyBpbnQgc2V0X2V2dGNobl90b19pcnEoZXZ0Y2huX3BvcnRfdCBldnRjaG4sIHVuc2lnbmVk
IGludCBpcnEpDQo+ICAgCQlpZiAoaXJxID09IC0xKQ0KPiAgIAkJCXJldHVybiAwOw0KPiAg
IA0KPiAtCQlldnRjaG5fcm93ID0gKGludCAqKSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJO
RUwsIDApOw0KPiArCQlldnRjaG5fcm93ID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJO
RUwpOw0KPiAgIAkJaWYgKGV2dGNobl9yb3cgPT0gTlVMTCkNCj4gICAJCQlyZXR1cm4gLUVO
T01FTTsNCj4gICANCj4gQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgaW50IHNldF9ldnRj
aG5fdG9faXJxKGV2dGNobl9wb3J0X3QgZXZ0Y2huLCB1bnNpZ25lZCBpbnQgaXJxKQ0KPiAg
IAkJICogdGhyZWFkIHdhcyBmYXN0ZXIgaW5zZXJ0aW5nIGl0LCB3ZSBjYW4gZHJvcCBvdXJz
Lg0KPiAgIAkJICovDQo+ICAgCQlpZiAoY21weGNoZygmZXZ0Y2huX3RvX2lycVtyb3ddLCBO
VUxMLCBldnRjaG5fcm93KSAhPSBOVUxMKQ0KPiAtCQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBs
b25nKSBldnRjaG5fcm93KTsNCj4gKwkJCWtmcmVlKGV2dGNobl9yb3cpOw0KPiAgIAl9DQo+
ICAgDQo+ICAgCVdSSVRFX09OQ0UoZXZ0Y2huX3RvX2lycVtyb3ddW2NvbF0sIGlycSk7DQo+
IA0KPiAtLS0NCj4gYmFzZS1jb21taXQ6IDY2MjhlN2Q0YzZiMjVjOGQxOGYxMzQ1ZTNhMjBk
MjE4MjlhYWU3ZTQNCj4gY2hhbmdlLWlkOiAyMDI2MDYyNC1iNC14ZW4tYTFjZDYyOWNlOWY0
DQo+IA0KPiAtLQ0KPiBTaW5jZXJlbHkgeW91cnMsDQo+IE1pa2UuDQoNCg==

--------------9CjsJxfyxMmK8BT64s75qaM0--

--------------wXW5pNoOVuHMY5I23DbFQuaD
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrxe+4FAwAAAAAACgkQsN6d1ii/Ey9J
cwf+L3XaMzorCG1a1NqCToQpyu0zZH4Y8kmNNW0/rOxHQHH3N6z1NjBS/4OA3dFxz/HgVZJG9fjN
VpLu3NGawgxhx0kswckZeP0mL1qsTAJNqCJt2iR9xPBSQIhvWz2dTObySLv7i2AzzK+7Ker8V/A3
l9M7wG9YjYC9c0fsPRcqtYFECiH8KZL47sOCGX+2mS5bn1lJG7U9/C1ODW3hmiTns3rdiYFg8TxX
NFVkoo/VFf1nIjJtr4IVJsVNhyOsfTRRbbiy4eyb8RpYC5mCNK2t9k1m5Q/EN8ZvRlsG+EcptY/7
VqBH+RbDz8HR65Q9mlfkxWSs8/m1rpk6XBRjjX7n+A==
=sx3s
-----END PGP SIGNATURE-----

--------------wXW5pNoOVuHMY5I23DbFQuaD--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 08:04:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 08:04:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479653.1683564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKMK-0007gr-0p; Mon, 09 Nov 2026 08:04:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479653.1683564; Mon, 09 Nov 2026 08:04:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKMJ-0007gk-U7; Mon, 09 Nov 2026 08:04:07 +0000
Received: by outflank-mailman (input) for mailman id 1479653;
 Mon, 09 Nov 2026 08:04:06 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQKMI-0007ge-OW
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:04:06 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQKMH-006Vc5-Mv
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:04:05 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af17e6a-8faa-0a2a0a5109dd-0a2a450ba3f0-40
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:04:05 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af17e75-b7e8-0a2a450b0019-c387df82c662-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:04:05 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id DD09F2216E;
 Mon,  9 Nov 2026 08:04:04 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 90FEA13319;
 Mon,  9 Nov 2026 08:04:04 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id mfFlGXR+8Wo+UwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 08:04:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794211445; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=/0DCJ9TIbg4Ba4YdRMOHYGguv0/PQu8IdtSAAM8yQa0=;
	b=dxe4qq04rYAbFeFKeVQXe5SVwHyacdTOa6KUKAyxqiKyjgOnvGsyULWLKPEk6AopYVlBIz
	VeohKuLoDt+QgErBnDwsAizcHAGbVP0WrJoJftvWUGqJGT3AamU8N9S9D5Xd2k5XQyFNy3
	g23S1TZzPRqd/YLIy0MoY1WIcqJ6ra0=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794211444; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=/0DCJ9TIbg4Ba4YdRMOHYGguv0/PQu8IdtSAAM8yQa0=;
	b=Nd6yRxPCzFbsGMm45nWPnU43gMxJqKBeyi5NSxaBUA6Sx4UQB0RLlq0dr8WiNKvkc6JMO/
	5ikQeCPi37rzu7oNV0RLO6nRU5iVzndSoDNyyWTA6MAq4PG64cfaX86Di0UycRVlACVObP
	PFXZgVqzONdo4Z5LwTFSLcOwFF39gpI=
Message-ID: <7b3fe96c-15f2-4ab8-a818-16974df306ae@suse.com>
Date: Mon, 9 Nov 2026 09:04:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/grant-table: annotate on-stack work in
 gnttab_unmap_refs_sync()
To: Kavitha Daula <kavithadaula@Kavithas-MacBook-Pro.local>,
 sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org, Kavitha Daula <kavi@edera.dev>
References: <20261105000137.82224-1-kavithadaula@Kavithas-MacBook-Pro.local>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261105000137.82224-1-kavithadaula@Kavithas-MacBook-Pro.local>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------49yTbD0VzFZXGbqXOrEIWG8R"
X-Spam-Flag: NO
X-Spam-Level: 
X-Spamd-Result: default: False [-9.79 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.50)[0.999];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo];
	HAS_ATTACHMENT(0.00)[]
X-Spam-Score: -9.79
X-purgate-ID: tlsNG-42698a/1794211445-19EC69EA-87C981CE/35/110847
X-purgate-type: clean
X-purgate-size: 6085

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------49yTbD0VzFZXGbqXOrEIWG8R
Content-Type: multipart/mixed; boundary="------------LE9d22iRjTqSgijwBVCFkL5n";
 protected-headers="v1"; hp="clear"
Message-ID: <7b3fe96c-15f2-4ab8-a818-16974df306ae@suse.com>
Date: Mon, 9 Nov 2026 09:04:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/grant-table: annotate on-stack work in
 gnttab_unmap_refs_sync()
To: Kavitha Daula <kavithadaula@Kavithas-MacBook-Pro.local>,
 sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org, Kavitha Daula <kavi@edera.dev>
References: <20261105000137.82224-1-kavithadaula@Kavithas-MacBook-Pro.local>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261105000137.82224-1-kavithadaula@Kavithas-MacBook-Pro.local>

--------------LE9d22iRjTqSgijwBVCFkL5n
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDUuMTEuMjYgMDE6MDEsIEthdml0aGEgRGF1bGEgd3JvdGU6DQo+IEZyb206IEthdml0
aGEgRGF1bGEgPGthdmlAZWRlcmEuZGV2Pg0KPiANCj4gQm90aCBjYWxsZXJzIG9mIGdudHRh
Yl91bm1hcF9yZWZzX3N5bmMoKSwgZnJlZV9wZXJzaXN0ZW50X2dudHMoKSBhbmQNCj4geGVu
X2Jsa2JrX3VubWFwX3B1cmdlZF9ncmFudHMoKSBpbiBibGtiYWNrLCBrZWVwIHRoZWlyIHN0
cnVjdA0KPiBnbnRhYl91bm1hcF9xdWV1ZV9kYXRhIG9uIHRoZSBzdGFjay4gZ250dGFiX3Vu
bWFwX3JlZnNfYXN5bmMoKSBzZXRzIHVwDQo+IHRoZSBkZWxheWVkIHdvcmsgaW5zaWRlIGl0
IHdpdGggSU5JVF9ERUxBWUVEX1dPUksoKSwgc28gd2l0aA0KPiBDT05GSUdfREVCVUdfT0JK
RUNUU19XT1JLIGFuZCBDT05GSUdfREVCVUdfT0JKRUNUU19USU1FUlMgZXZlcnkNCj4gcGVy
c2lzdGVudCBncmFudCB0ZWFyZG93biB3YXJucyB0d2ljZSwgb25jZSBmb3IgdGhlIHdvcmsg
YW5kIG9uY2UgZm9yDQo+IGl0cyB0aW1lcjoNCj4gDQo+ICAgIFsgIDEwNC4zNjYwODVdIE9E
RUJVRzogb2JqZWN0IGZmZmZjOTAwNDAyMGZhZDggaXMgb24gc3RhY2sgZmZmZmM5MDA0MDIw
YzAwMCwgYnV0IE5PVCBhbm5vdGF0ZWQuDQo+ICAgIFsgIDEwNC4zNzE1NTFdIFdBUk5JTkc6
IENQVTogMSBQSUQ6IDQ4IGF0IGxpYi9kZWJ1Z29iamVjdHMuYzo2NzIgbG9va3VwX29iamVj
dF9vcl9hbGxvYy5wYXJ0LjArMHgxMmIvMHgxZjANCj4gICAgQ2FsbCBUcmFjZToNCj4gICAg
IDxUQVNLPg0KPiAgICAgX19kZWJ1Z19vYmplY3RfaW5pdCsweGZlLzB4MWEwDQo+ICAgICBk
ZWJ1Z19vYmplY3RfaW5pdCsweDM4LzB4NTANCj4gICAgIF9faW5pdF93b3JrKzB4MjgvMHgz
MA0KPiAgICAgZ250dGFiX3VubWFwX3JlZnNfYXN5bmMrMHgxOC8weGEwDQo+ICAgICBnbnR0
YWJfdW5tYXBfcmVmc19zeW5jKzB4NjEvMHg5MA0KPiAgICAgZnJlZV9wZXJzaXN0ZW50X2du
dHMrMHgxNzkvMHgyODANCj4gICAgIHhlbl9ibGtia19mcmVlX2NhY2hlcysweDE2LzB4MzAN
Cj4gICAgIHhlbl9ibGtpZl9kaXNjb25uZWN0KzB4ZmEvMHgyZDANCj4gICAgIGZyb250ZW5k
X2NoYW5nZWQrMHg5MC8weDY4MA0KPiAgICAgeGVuYnVzX290aGVyZW5kX2NoYW5nZWQrMHg4
MC8weGIwDQo+ICAgICBmcm9udGVuZF9jaGFuZ2VkKzB4MTQvMHgyMA0KPiAgICAgeGVud2F0
Y2hfdGhyZWFkKzB4OTYvMHgxYTANCj4gICAgIGt0aHJlYWQrMHgxMWQvMHgyNTANCj4gICAg
IHJldF9mcm9tX2ZvcmsrMHgyOWYvMHgyZDANCj4gICAgIHJldF9mcm9tX2ZvcmtfYXNtKzB4
MWEvMHgzMA0KPiAgICAgPC9UQVNLPg0KPiANCj4gZ250dGFiX3VubWFwX3JlZnNfc3luYygp
IHdhaXRzIGZvciB0aGUgdW5tYXAgdG8gY29tcGxldGUgYmVmb3JlIGl0DQo+IHJldHVybnMs
IHNvIHRoZSB3b3JrIG5ldmVyIG91dGxpdmVzIHRoZSBjYWxsZXIncyBmcmFtZS4gSW5pdGlh
bGlzZSBpdA0KPiB3aXRoIElOSVRfREVMQVlFRF9XT1JLX09OU1RBQ0soKSB3aGVuIHRoZSBp
dGVtIGlzIG9uIHRoZSBzdGFjayBhbmQNCj4gZGVzdHJveSBpdCBiZWZvcmUgcmV0dXJuaW5n
LiBUaGUgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHNvIGFuIGl0ZW0gdGhhdA0KPiBpcyBub3Qg
b24gdGhlIHN0YWNrIGtlZXBzIElOSVRfREVMQVlFRF9XT1JLKCkuDQo+IA0KPiBGaXhlczog
YjQ0MTY2Y2Q0NmUyICgieGVuL2dyYW50OiBpbnRyb2R1Y2UgZnVuYyBnbnR0YWJfdW5tYXBf
cmVmc19zeW5jKCkiKQ0KPiBTaWduZWQtb2ZmLWJ5OiBLYXZpdGhhIERhdWxhIDxrYXZpQGVk
ZXJhLmRldj4NClJldmlld2VkLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+
DQoNCg0KSnVlcmdlbg0K

--------------LE9d22iRjTqSgijwBVCFkL5n--

--------------49yTbD0VzFZXGbqXOrEIWG8R
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrxfnQFAwAAAAAACgkQsN6d1ii/Ey9x
Dwf+OBLbmkPg8zzcuWWkBdJ+LhT3wV5euMZTFiMDVvFbWK5huYo26ODDxMOfvyqhVaN0N1WhuyEs
9lpoGuLMZT+YLFCwHg8Sgsi0CzeY74MDfVtmLkpsHlrMfOs4nHWaK1pkwI7XbKRzFS/WWXlm2wUU
dDjBzx5FkiYgfMldQupt2haZqr+YfCFiqxqQUaj4HMGY3ScFAnvTHuSiBoFgebdHONvVmjTR0LgR
sUyQKHz3ll8YQ/DzhXTve1Zl4XWVajFw/FZ1pRjfKzq9SNYqdUbWcfkxSkU/L5T1fEPp1uDr5zrt
syyN8+8EfwJyDAoTyUA0B4zEX4wS+0LCNGjsriQoCw==
=6zzw
-----END PGP SIGNATURE-----

--------------49yTbD0VzFZXGbqXOrEIWG8R--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 08:43:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 08:43:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479667.1683574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKyf-000678-OE; Mon, 09 Nov 2026 08:43:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479667.1683574; Mon, 09 Nov 2026 08:43:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQKyf-000671-KO; Mon, 09 Nov 2026 08:43:45 +0000
Received: by outflank-mailman (input) for mailman id 1479667;
 Mon, 09 Nov 2026 08:43:44 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@swg.vates.tech>)
 id 1xQKyd-00066v-HD
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:43:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQKyc-006deG-Jc
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:43:42 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@swg.vates.tech>)
 id 6af187b6-e002-0a2a0a5209dd-0a2a450385e2-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:43:42 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@swg.vates.tech>)
 id 6af187bd-fae8-0a2a45030019-b9ff1c23b549-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:43:42 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1bf7a3b52000403d.003 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 08:43:41 +0000
Received: from [192.168.0.158]
 (cpc92322-cmbg19-2-0-cust1759.5-4.cable.virginm.net [86.26.38.224])
 (Authenticated sender: andriy.sultanov)
 by mail2.vates.fr (Postfix) with ESMTPSA id 5825E82095;
 Mon,  9 Nov 2026 09:43:40 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=Ds/rFPd3qtyEgz7EvsLJ9nExT1P8Nu1ccmNBmnH/p/g=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=Pc6jqZgHcWduZRP2V2pmfj0j9u5Tzwh8fvrOJ1+V6TG4AosofhCCkuIqb5QjnF3zPo9RlcDLN
 0RQnZlYVslJkdzUVOsoQJuBK6oXqGQhJPhR8TiAQR6V2qb0u7w1qvDshBefjIWVwXTh8icbVce+
 gLno1oyyDXz1MetokndlH/rr5DJQ5qKNyS1xdbNPbg2hXgfElBWbZXZCswDrb9mmzS0ukFvKHCA
 fEqmvUezal2dkv05B2KsBp9C/AvE69StoX9UXDZlGrmMw0j8NQ2KpcROJIQg6iBThKjrsxV7Xn8
 gtFSF0RLOHpSox+f5DlaXwtej40DthgHMNhbX3JNAz4g==
X-Zone-Loop: 2a6e4d40e2d5a01b8f6b54fc3b0c3abf677aa541643e
x-campaign-type: default
x-transaction-id: 52559c01-cc57-41b1-b80a-a269dc48251a
x-swg-uid: 01-d2de41fa-5bd3-476f-b8d6-85150134b490
X-Mailer: Sweego
Message-ID:
 <1794213821.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@vates.tech>
x-swg-bid: 1794213821.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 9 Nov 2026 08:43:39 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/ocaml: Fix cleaning bindings test
To: Jason Andryuk <jason.andryuk@amd.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: Guillaume Thouvenin <guillaume.thouvenin@vates.tech>,
 Anthony PERARD <anthony.perard@vates.tech>
References: <20261106231732.482518-1-jason.andryuk@amd.com>
 <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
 <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
Content-Language: en-US
From: Andrii Sultanov <andriy.sultanov@vates.tech>
In-Reply-To: <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794213820590
X-purgate-ID: tlsNG-33051d/1794213822-74E874E9-827B25BA/0/0
X-purgate-type: clean
X-purgate-size: 1183

On 11/7/26 00:11, Jason Andryuk wrote:

> On 2026-11-06 18:19, Andrew Cooper wrote:
>> On 06/11/2026 11:17 pm, Jason Andryuk wrote:
>>> make clean fails in the bindings tests:
>>>
>>> make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
>>> rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs 
>>> *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
>>> rm: invalid option -- 'c'
>>> Try 'rm --help' for more information.
>>>
>>> Split the compiler flags out of the LIBS variable, since LIBS is passed
>>> to rm.  The individual *.cxma files are deleted in their respective
>>> directories.
>>>
>>> Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
>>> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
>>
>> Lovely...  Sorry for breaking this.
>>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>
> Thanks.  I just double checked and unix.cmxa isn't in the directory on 
> a successful build.  So the whole thing could be moved to LIBFLAGS or 
> a suitable name.
>
> Regards,
> Jason

Could we follow tools/ocaml/xenstored/Makefile further and
move to BINDINGSLIBS or something like that?



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 08:46:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 08:46:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479675.1683583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL1j-0006Ze-42; Mon, 09 Nov 2026 08:46:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479675.1683583; Mon, 09 Nov 2026 08:46:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL1j-0006ZX-1M; Mon, 09 Nov 2026 08:46:55 +0000
Received: by outflank-mailman (input) for mailman id 1479675;
 Mon, 09 Nov 2026 08:46:53 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQL1h-0006ZR-Kg
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:46:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQL1g-00DpIH-7d
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:46:52 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1886e-bab6-0a2a0a5309dd-0a2a450ac04e-46
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:46:52 +0100
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1887b-f2d2-0a2a450a0019-d1558031b991-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:46:52 +0100
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4a208d93758so5815205e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 00:46:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90ee247e9sm130090425e9.6.2026.11.09.00.46.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 00:46:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794214011; x=1794818811; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=jIjlieLsOJl9780MYuScriiwvD39oNb9YFZMzcYzeWs=;
        b=ekygNv+t+fSBZkN8JSCJtuKP/KjwokFMuECYrEwM84Yk2PWE6+9UYkKdrjTxWGM0MO
         306L6/+aoczs68JbQIjZS40ECAAhn9ghCbbq7nwKGJfNCjjKxQVnTrp7hT/IybVcr8oO
         Gih0MS8xqAnrF0Oh9aOqC+cZdPxAhCoCcp6BLTZDX5VHa3Wvr7PfjPP20zivnKpFzEsz
         2GA6/yacQI91tNO/huJtrHU5pXX0tMTq1/Jh7R1FLfSUvzZSCMJjiFzPy2Z5vJzqWyeC
         SYdP3MClrbfgzmae+e7ZKtDKUBwbi9r9GN3oSbia10ITeaaWpiaF/FdsDXSmGNV2tW+i
         x3Kg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794214011; x=1794818811;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=jIjlieLsOJl9780MYuScriiwvD39oNb9YFZMzcYzeWs=;
        b=f8N0yntkfGt3UTrpaar8sJBBqmhhDp6chJYGMIaqFdrEaT8B/PsJFZ+I3KuH1Ulqj7
         iwHRy6zDh0uuJlCZtXFaXFgmlQL5tjW23PnIdP5p66aJAVSMCoS2vFAxX7yeVp+5+QPn
         aIcF9AgvssUgmbZqylwEETSuR7H5mawQiooOgY8YXw5F13kYrrQRnegxoZ79i/2RiPbP
         /QHzanqcsRQQ8KMCVS1i+XwP/YIWwId0f2d/PVsAKdF550vTv+TUk1lcBVMkYXZMkEqr
         Qiyi3jmt4nHW8262tzpm0pih5rKFESO/cNScWLxc/9nsVGX2Jk4YrpSQzQUcq2rqGh/2
         ShXQ==
X-Forwarded-Encrypted: i=1; AL+hErHUe+yheL1PTtxI2qT87ahyfE5rAXMHoE837QBRdszCZbB9GO67VYbQNOalsKwqZs3hHmPvfBPoOAc=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9QDPNRhBRB6iPfL4Ru+ybZcEwdoetphnAnzRFrhRIJJfCSRMOx
	Ol0zOLIAuL4aqBzu8Zb/iJamHNte7QgR2Jk5U4BI+jEGzQ/mot12GMd5qLaJkLY8RpVd6+Ygduq
	IfQyxRQ==
X-Gm-Gg: AYBFou3dcKGDyZStcwl7KIqnWFW/lXszUWsOlg56HSQ5h7GXrABmV9KRTQt/6YEyLx0
	niJqSo/up9s+Z5ZSgsDG6AII8x19yl63/+9wHrvhCsqz0ZQpiummk7sLq7Gj0cfgBFHNq62/zw/
	pGZrZxeri7FvTW+OCsw7en4SPTzjepmdaCS9C4rbd3K2ejngSqFl0BM4eWBYPdBQ97wl5H7OEhe
	iPgxMdSweEZ1i3nlf8qVmIQfBJeFuYmwY78WasbKQXxAeShGAyEfHWFtiU5gACQeUOABxF1ihnr
	1jaL6HWfZX9KKmngdbobAEVU3oNyo09N/LvcwCaCvWVk1JkpoctXLhF3hkIBPz0EZv9zDvshcOb
	V6igkyoJrwpI62J44ygiB8JyMRz006zeBku2JYEWK4J9vvWttE6yK7yTRnFIm/U6FsjzBY8lix9
	+oMj9zTkzph3dxeV/o6++wkSrDIfDHHOfku4yHx2SgtMgLgpMuMVuJaUF99IhXL2qbBqHfCqRKc
	xehxBllrd0zQEfL5NJDpPp130dA6jNHIILQ156WzkPPQOGzhWNy2F9ilxRp9Y6Aqcn0VPwJS0Zi
	KZtKZzcdZaV4Pdzp+vBCFmbcEdSYDfOrqUek2eBb9ftySKioZMsHZeLWNZ5BjMWMdsHDveXTgct
	2OFKrJcP1zOmkxf4=
X-Received: by 2002:a05:600c:c166:b0:4a2:1a:a116 with SMTP id 5b1f17b1804b1-4b943f76fd0mr65276925e9.0.1794214011536;
        Mon, 09 Nov 2026 00:46:51 -0800 (PST)
Message-ID: <827e9a54-cfba-4d18-b6de-fbbb7ccd7d5c@suse.com>
Date: Mon, 9 Nov 2026 09:46:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/bitops: Improve code generation for __scanbit()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261106171204.2783260-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261106171204.2783260-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-4011c0/1794214012-4BCD3CFC-40BF5F0F/10/78276251493
X-purgate-type: spam
X-purgate-size: 1345

On 06.11.2026 18:12, Andrew Cooper wrote:
> There's no need for an alternative.  Use the same technique as arch_ffs() by
> pre-loading the destination register using the caller chosen "zero case"
> instead of -1.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monné <roger@xenproject.org>
> CC: Teddy Astie <teddy.astie@vates.tech>
> 
> Slightly RFC.  I don't particualrly like forward-declaring ffsl(), but I don't
> see another option while maintaining a non-tangled common/arch header split.

Forward-declaring isn't a problem by itself, just that imo that wants putting
in xen/bitops.h, not ...

> --- a/xen/arch/x86/include/asm/bitops.h
> +++ b/xen/arch/x86/include/asm/bitops.h
> @@ -320,18 +320,35 @@ extern unsigned int __find_first_zero_bit(
>  extern unsigned int __find_next_zero_bit(
>      const unsigned long *addr, unsigned int size, unsigned int offset);
>  
> +static attr_const unsigned int ffsl(unsigned long x);

... here. asm/bitops.h already isn't included at the very top of the file, so
putting the decl there looks clean enough to me.

(Another alternative would be to see about doing away with __scanbit().)

With the decl moved:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 08:53:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 08:53:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479682.1683592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL8K-0000Ea-Rj; Mon, 09 Nov 2026 08:53:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479682.1683592; Mon, 09 Nov 2026 08:53:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL8K-0000EM-MO; Mon, 09 Nov 2026 08:53:44 +0000
Received: by outflank-mailman (input) for mailman id 1479682;
 Mon, 09 Nov 2026 08:53:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQL8I-0000E7-MP
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:53:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQL8I-0035jS-2P
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:53:42 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18a11-e002-0a2a0a5209dd-0a2a4504b60c-12
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:53:41 +0100
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18a15-b57f-0a2a45040019-d155dd2ca868-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:53:41 +0100
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-4910b863b84so364845f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 00:53:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b79502652csm146282405e9.4.2026.11.09.00.53.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 00:53:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794214421; x=1794819221; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Ef96mEyve2ssqnVIwG11spX1QDYJ+ZZtXX0BmtsqsHQ=;
        b=V+kQPaCF41XrrC4wK5mGRVIwohZ+bjxdWVnAYcR8X+k3+JefXvSgybdYB30edBdo0f
         +Rzt9IYDGnYT04FxzxVtnNNNRqZPH4X07AaHhARATbVOr2AmJW5Lrbx7wo06xRPb6ojV
         xcfWetq+pnDGl22sGPWSKh4BdEZxqWquHfePFlLSkMrtuReQZ+BazhkMoCx0tzCCgO5w
         bGQcfN5T6LWASlvxjiIWoh2sMz122xBRYxPtViqrDoWyBSeWYcADD7PhrpC86zKBDqWq
         r/+DLuZvRxmdMi/qC97dzrXEXKmjxEDJmCKtRUKLpWL60WD+tjVO58wd4RWHoq1Ox20R
         oAOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794214421; x=1794819221;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Ef96mEyve2ssqnVIwG11spX1QDYJ+ZZtXX0BmtsqsHQ=;
        b=nyW8srp5fRlzNu/ZNeJIyV+wug9Yu2ItY/vDF8rrOvP8I5yjisj0KRGEX7KGF5ukjC
         mI3wwhVV2c9Dy5lOtfuDE6XcFfMCHzZJCdpedUA4n0OrfYe1jxSzeXdgAQOSOhY3Zd42
         HLvO61YPCQXXRZVXj/XITOz2eT1T8FpnIVjcsQeso7boXHCEioMuci3cX/nDymGRaIAF
         3u/lhfNydwT9U2bk6eXo4ufO//sfNq911LzyNU6yX9k3kVFmpuqcf1pMs5/pWHQIVauC
         OXaJpVF++lkEikDVfrQJ2FAU5W7sucE9Z8HVCbkSN76epXvq0uQJem+AAiryeGuBS5oI
         1cqg==
X-Forwarded-Encrypted: i=1; AL+hErF8VwL3nRkXso081hpgfCLgWEs+buoe+pA5AbyqXXHLXIKIyU3U7AXmjWvhZ199+wAmbKGohF/dcfM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/WuNAq5RGTYBMDXwiE9m3jHi2qPnvjWm+iu5W7TtjtX+OA77+f
	7/YAn3/mTjbwls5AsKLiDIgvTYLOwTG6VfKqDrLXtyYXb+njZwKE3beeLBejH9Jb+g==
X-Gm-Gg: AYBFou0rZ2mqlVMjEzwMGz3X+xP6Zb4SWH+biopvhWGQ8P617NwJz4X7rPXuP7LlWem
	8gyoY0gXg76Wd9mcAgqJJnvjWs0f7Hc8tOVtf8+4vAZj0ePf5uwdzDBxU9X2gbDY7LmbbrreZCf
	ypcXDRoqd9SHhILgped1KxBGx6Jc/AkuNyjcj4sUB01euF5iAHL86Wgp06rEWwm4cQMZ5PPTT9O
	hFuvSMuVHR+2Bng2IfMZIQ4xDKdxH4XaXqz4C2Ak4HWdH04e/OKPHkJ/+D2c2WQrkOOe4vOZGFy
	L8j8wFqNA4md5fd9X+F3SJn5Cgv7y3VOCCXW3MK5/quQWLK444d2FYUyhlq6WJGOu0QvU/5elpB
	ULSQQ5LNtC1LOi0aC7pdpRri72b9PkICPVHlJQMKqHJcIdyl8yLqE3FkvJErHTDnE7DEUFd0LZu
	CXcJIm6yuSCPIyPhOm7rje1myZFLLqkHeDKK867LjrAX7oCuWZuMhPFgOkaMzpnciAY4yMvPv9l
	iWpmtPz25fklbH+900g1PAjPShpbw/CAUXURhtLpxxAhswQT0H5d2rKGhvDBmZ3Uu9rkJbceTcT
	NdyZ6ux+/4YLM7Bv5E62M/SU6rE1vgNYZefTHnw9mgmT/mk3eVuOJBs/U1laQrkVa2kIhPN2ag9
	oEFhh2KTA8WB6s8FJ
X-Received: by 2002:a05:600c:8705:b0:49e:6581:7baf with SMTP id 5b1f17b1804b1-4b94d75ecbbmr65581645e9.2.1794214421242;
        Mon, 09 Nov 2026 00:53:41 -0800 (PST)
Message-ID: <17b5bf66-8b37-427f-a2ab-06330c3f7265@suse.com>
Date: Mon, 9 Nov 2026 09:53:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gnttab: _cache_flush refuse an owner without a grant
 table
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Roger Pau Monne <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20261107010623.192975-1-stefano.stabellini@amd.com>
 <c28d472a-9642-4f12-955e-893916ba98f7@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c28d472a-9642-4f12-955e-893916ba98f7@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1794214421-52ECEB50-6709FA21/10/78276251493
X-purgate-type: spam
X-purgate-size: 2213

On 07.11.2026 02:37, Andrew Cooper wrote:
> On 07/11/2026 1:06 am, Stefano Stabellini wrote:
>> With CONFIG_STATIC_SHM, a shared memory region without a "role" is owned
>> by dom_io. A cache flush on such a page then reaches grant_read_lock()
>> with dom_io's NULL grant table. Reinstate the check, and give back the
>> page reference taken by page_get_owner_and_reference().
>>
>> Fixes: bec8e3c1fb91 ("xen/gnttab: Drop owner->grant_table check in _cache_flush()")
>> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
>> ---
>>  xen/common/grant_table.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
>> index 2285c4aee8..999b10abcf 100644
>> --- a/xen/common/grant_table.c
>> +++ b/xen/common/grant_table.c
>> @@ -3633,9 +3633,11 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
>>  
>>      page = mfn_to_page(mfn);
>>      owner = page_get_owner_and_reference(page);
>> -    if ( !owner )
>> +    if ( !owner || !owner->grant_table )
>>      {
>>          rcu_unlock_domain(d);
>> +        if ( owner )
>> +            put_page(page);
>>          return -EPERM;
>>      }
>>  
> 
> Seriously?
> 
> We debated this at length in the security team, even the fact that
> XSA-520 only applied to Xen 4.21 and older.
> 
> Now you're saying that claim in both the XSA-520 advisory and patch are
> wrong, and therefore the owner path was not in fact dead code and a
> MISRA violation.  This is the only reason why the patch ended up in this
> form...
> 
> Nothing in CI noticed, not even the STATIC_SHM tests.
> 
> 
> What I would like to do is a straight revert of bec8e3c1fb91, stating
> that the claim is false, then apply the XSA-520 hunk with a different
> commit message.   That way at least the logic ends up the same on all
> branches of Xen (in this patch, you're reversed with rcu_unlock_domain()
> vs the XSA-520 fix).
> 
> Thoughts?

+1, the more that we got a report for dom_xen as well. Yes, iirc it was
me to put up the false claim, yet that was clearly under the assumption
that Arm folks would double-check.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 08:53:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 08:53:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479683.1683600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL8M-0000Ra-3o; Mon, 09 Nov 2026 08:53:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479683.1683600; Mon, 09 Nov 2026 08:53:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQL8M-0000RT-16; Mon, 09 Nov 2026 08:53:46 +0000
Received: by outflank-mailman (input) for mailman id 1479683;
 Mon, 09 Nov 2026 08:53:44 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQL8K-0000EL-Ik
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 08:53:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQL8J-0035jS-RA
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:53:43 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18a11-e002-0a2a0a5209dd-0a2a4504b60c-20
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:53:43 +0100
Received: from [209.85.128.49] (helo=mail-wm1-f49.google.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18a17-b57f-0a2a45040019-d1558031a5a2-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:53:43 +0100
Received: by mail-wm1-f49.google.com with SMTP id
 5b1f17b1804b1-4a9a8d6cea8so6561865e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 00:53:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597090444sm9090594f8f.31.2026.11.09.00.53.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 00:53:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794214423; x=1794819223; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Ef96mEyve2ssqnVIwG11spX1QDYJ+ZZtXX0BmtsqsHQ=;
        b=X8Hq614DDURicjJWghMaCIvDeVs+aDD428bCsRdhzEnfTtp/X8xiov8aW81U1UVSo+
         hdm0vvhUbq97YgPXXs1K7VoANafLYSbIyEy2aXJvWN/4/M3O/7Yi4JxQqOdmzHF7stOO
         Lpsy7CWijHvEsZObHcYTo59iQxu6CBnBE5uGe5UNqRvkBg37eupuhWM8VkQRSihndUY+
         7OUKUYH+1pIH6j2eaiCNhZ59XgdM6YCGyMPqsRUA6d5t5GTT/MzVWmjXU4suCVqVE0Ih
         tbXEPOolHGt86KPvEGE7yULr9TVI43z8c3sK5ddMg1FeVT71Dqwg51TLVQCK8muLqGXS
         wG2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794214423; x=1794819223;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=Ef96mEyve2ssqnVIwG11spX1QDYJ+ZZtXX0BmtsqsHQ=;
        b=ELIppmMfXAt29Fe+884QN2PeifD7AA4GaN+TNVzU2UmXpUPin0Jc8CDjL9znbw1AS2
         /qSgio0DIEJfu6rzE09NMsPqCSp4X6BNv/B8xU8Qy+1RmgvKA0Zp/gL2hX23u4nY5DrL
         opKfa4o0nj3PQCIMA2Xaz+BGv8cg+OB8bljKoLZmth/IPEVvmL2jdL+7SgoLF7VgW+VW
         Xdg9SwuZUYImQRnCiy9Yjfv/oZ0gBugiZa2ladxcOM+/Qn24E308WMPt7FLV0HZ3QWj7
         feedpJPhr647Ul9Ra2g43rpSChlwokXunD9abAzwpvQPBAIP4ESquiT87T906Bqx4ZSl
         BoSg==
X-Forwarded-Encrypted: i=1; AL+hErFznFwHlqJgyLWxlxg2EHqCRhxfR4XnQGgIGnL0LcO4ZTNbHXzMg0L08DIyc+Ca8DAgnBis3c+djHw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8biphZlPR31jJiKUCasUH4XhOHA8jl1liMKpPcsK6B+dzRfbx4
	CALw/3u41qGaz4ol4pDr3sxZ/oMiGv0lDuRG+KHmALBJWHRp2O69KCFTutkWn0JDeg==
X-Gm-Gg: AYBFou2G19XcCowfzK6S6pZ2LwAhzPIxNEU+ukfYhoRihzTcQBq2WwExmCxN8/2qLpb
	sln6it+bJI1ZLVLP7bvNQIWWx94Hi6+ME313MLNw63aOHWqf9jNTYHsPh6A5B5sH4qyA3BhIKdJ
	qN5+b0v4O8qehj+ziKUPQ+uQuUVGofmE4bzad9axSVFqRVeIdGKGAcB9rJnCS8QnKd9UYjMVQAS
	ThcwuvF5FHnLsGLn1TE7+mNz9pNeHCa/Jpjyy80/yUG5y6wCJsrS8RiNpVCVdupqwapc0TLHstA
	iuXnOHrVpXtu3Oh3ysfFaE98eaUQNecV99U0qe4gLLhEms9VvywDtktKgyn7TRPyxHF2oWgJZc7
	8f3nzO5U1XHID240EG0OQTLEEATJUeP//fldsIIrivC5YUe9YMuNUOyUMf39ExSWbH2iaAwInq4
	0iVJ0HXSGVe/XyQZRVDbb9HCja6RIHsmt5Btmx123wH8eEsoYxOkFluzdIXdPx9tVD/AgwbtMKc
	rbrqU13UznmTLyzZXAAH8iixAjVjXK6pj/0l6uwG9tHhvv6z8gqlPjzOpIO1Ec+1ss/QkBzQF0t
	h5m3bc50YmWxsJpvKcN9cSo8yJZMWjrV76ckMXLCxMnQ+ctFB3LMlHlV+pJDPFCdmTxhguu6Q1K
	5JND21CNApPvOhrQ=
X-Received: by 2002:a05:600c:4747:b0:4a1:c6f5:2450 with SMTP id 5b1f17b1804b1-4b963c7e7e1mr68417235e9.17.1794214422513;
        Mon, 09 Nov 2026 00:53:42 -0800 (PST)
Message-ID: <17b5bf66-8b37-427f-a2ab-06330c3f7265@suse.com>
Date: Mon, 9 Nov 2026 09:53:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gnttab: _cache_flush refuse an owner without a grant
 table
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 Roger Pau Monne <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20261107010623.192975-1-stefano.stabellini@amd.com>
 <c28d472a-9642-4f12-955e-893916ba98f7@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c28d472a-9642-4f12-955e-893916ba98f7@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ebf023/1794214423-53CC7B50-73BD22F0/10/78276251493
X-purgate-type: spam
X-purgate-size: 2213

On 07.11.2026 02:37, Andrew Cooper wrote:
> On 07/11/2026 1:06 am, Stefano Stabellini wrote:
>> With CONFIG_STATIC_SHM, a shared memory region without a "role" is owned
>> by dom_io. A cache flush on such a page then reaches grant_read_lock()
>> with dom_io's NULL grant table. Reinstate the check, and give back the
>> page reference taken by page_get_owner_and_reference().
>>
>> Fixes: bec8e3c1fb91 ("xen/gnttab: Drop owner->grant_table check in _cache_flush()")
>> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
>> ---
>>  xen/common/grant_table.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
>> index 2285c4aee8..999b10abcf 100644
>> --- a/xen/common/grant_table.c
>> +++ b/xen/common/grant_table.c
>> @@ -3633,9 +3633,11 @@ static int _cache_flush(gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref)
>>  
>>      page = mfn_to_page(mfn);
>>      owner = page_get_owner_and_reference(page);
>> -    if ( !owner )
>> +    if ( !owner || !owner->grant_table )
>>      {
>>          rcu_unlock_domain(d);
>> +        if ( owner )
>> +            put_page(page);
>>          return -EPERM;
>>      }
>>  
> 
> Seriously?
> 
> We debated this at length in the security team, even the fact that
> XSA-520 only applied to Xen 4.21 and older.
> 
> Now you're saying that claim in both the XSA-520 advisory and patch are
> wrong, and therefore the owner path was not in fact dead code and a
> MISRA violation.  This is the only reason why the patch ended up in this
> form...
> 
> Nothing in CI noticed, not even the STATIC_SHM tests.
> 
> 
> What I would like to do is a straight revert of bec8e3c1fb91, stating
> that the claim is false, then apply the XSA-520 hunk with a different
> commit message.   That way at least the logic ends up the same on all
> branches of Xen (in this patch, you're reversed with rcu_unlock_domain()
> vs the XSA-520 fix).
> 
> Thoughts?

+1, the more that we got a report for dom_xen as well. Yes, iirc it was
me to put up the false claim, yet that was clearly under the assumption
that Arm folks would double-check.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:02:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:02:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479699.1683610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLGp-0002xI-TF; Mon, 09 Nov 2026 09:02:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479699.1683610; Mon, 09 Nov 2026 09:02:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLGp-0002xB-QR; Mon, 09 Nov 2026 09:02:31 +0000
Received: by outflank-mailman (input) for mailman id 1479699;
 Mon, 09 Nov 2026 09:02:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQLGo-0002wo-S0
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:02:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQLGn-00246k-UE
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:02:29 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af18c25-bab6-0a2a0a5309dd-0a2a45099382-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:02:29 +0100
Received: from [52.101.57.3]
 (helo=BN8PR05CU002.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af18c24-be1a-0a2a45090019-346539030c20-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:02:29 +0100
Received: from SJ0PR13CA0024.namprd13.prod.outlook.com (2603:10b6:a03:2c0::29)
 by MN2PR12MB4256.namprd12.prod.outlook.com (2603:10b6:208:1d2::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.11; Mon, 9 Nov
 2026 09:02:23 +0000
Received: from MWH0EPF000A6730.namprd04.prod.outlook.com
 (2603:10b6:a03:2c0:cafe::c) by SJ0PR13CA0024.outlook.office365.com
 (2603:10b6:a03:2c0::29) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.615.7 via Frontend Transport; Mon, 9
 Nov 2026 09:02:23 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 MWH0EPF000A6730.mail.protection.outlook.com (10.167.249.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 09:02:22 +0000
Received: from satlexmb08.amd.com (10.181.42.217) 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.53; Mon, 9 Nov
 2026 03:02:22 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 03:02:21 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=OgKMXFGx/JIT4CEWE24Q3gCyfiWMiTiCjQYHFslncdWq8qiLBbHNC3nR0m++4F8GIWHhOxOeCeCS1yas4LHDeX5l31NgFM5K9H8JOEVBHmEL8wgnvb+MKtWw+D9IAqqvXFsRJ61RZuvBvOXKreBIh5kl1zfdz10bt8/cBLqY9ZUNp+mYJOpmkqe+Ml9pWDXdnS94OwLaRnZSmzvX9Aq+o/1JIDWkFFUjmXD6LQu29Ltla3VJmeAbl7+Uw/u14Gz8O0+sNjtpTu03QdBi6Eokm1H/EHHTC9GEU4IHEpUb70mTW+8ECAJCxQn+uLI/YxkQrnbwO0DFf5yB2vFtyoIufg==
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=CZnKK9Tl1txvir3dlbZMAN4GB5ObsQBqKAVVRwZyQio=;
 b=YjHLBqT4hoF7UDOW1+sfeOl3WFmvP0YBiodl5ATEEN4tdHa2LDKSIIfD9nr+PyHBlW6zro4Ojp7zq5Nl6l6/nRTCE6SWbL5uQuZpLw5Kl4lIVSoOwq/1MA9t7PVay+VSBs+HDPDAkSBNzdcw6C3m/2PmyM06yGM4McPllNwphXrfQfAfp00UmRznBZe/6XxeXCVEbNvZEb+Mhv1wqoOUPxIWtVXDsLrtT1GXfo2/c+7CxjlMjcs+ljYuaUxJ9uumdCPxKAoQgaxUZ+8WEUSBICmIFAq2UT65H0twjk7FeGQYg8NF+Xe4nZMDw5aaB4LwKPY/nl+iAsAFACa3v8+6fA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=CZnKK9Tl1txvir3dlbZMAN4GB5ObsQBqKAVVRwZyQio=;
 b=ZnNd8jDK/FdpsjohrQM9OpYcnTvG/FIiwy0lfnv/eqq5Re35/2bU22HJIuqAb97cbj7d6ZeSrlnZh7cXPm/mfikSR77oOOWhN6HoaC7UOf7YZ3DRVzCD83NARtqDTlbGtUU+ERHvtL3/iREpLsrFAjQdIH42AVJ7MIADnpFw0is=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <9e4f5718-45c2-4940-8d48-be577c0bc169@amd.com>
Date: Mon, 9 Nov 2026 10:02:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: Preserve host GIC #interrupt-cells for Dom0
To: Kuan-Wei Chiu <visitorckw@gmail.com>, <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <julien@xen.org>, <bertrand.marquis@arm.com>,
	<Volodymyr_Babchuk@epam.com>, <marscheng@google.com>, <eleanor15x@gmail.com>,
	<jserv@ccns.ncku.edu.tw>
References: <20261105170117.3550534-1-visitorckw@gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20261105170117.3550534-1-visitorckw@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000A6730:EE_|MN2PR12MB4256:EE_
X-MS-Office365-Filtering-Correlation-Id: 57c6e303-210c-4267-b420-08df3e402b0f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|1800799024|36860700016|82310400026|261026140227099003|11063799006|261022075727099003|261021130227099003|261022115727099003|261022105027099003|56012099006|261022113327099003|261009223027099003|261021133027099003|261021121427099003|261021135927099003|261021123027099003|261026135527099003|261102123227099003|261026121527099003|261028144727099003|261026130827099003|18002099003|22082099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	fR3+k+a7isoahsfIhBmprWHIRANnkSGA95zfma0BU0PBNFZ1LhQ6bzH1i52GAnHYcdC16YQEdAmrA1NOiAW1NIRc1IEJKbkCkbS8YXgPzteJgaDl/qHtEOmeSXWMzGSEG5CsSD5Br1cHxj5ig+3NrUQ0GZNj9eBxTy2T6967UmWgRN2TC88ZGBHZRi4MQqKaIvObO7pSu5ynupze73AXu6naoph1cgb37ydRtYx1e9XOHK+NjjkEwKmbhm8c0VG5Zm3UXB+9yQUOz3heafVuBF+jr1Yx7yZsig5AyuQHovBQoKkmzg8M8CiEXaAuyRpGh2iZDwwpardKXKA8zwCrdJHjyI/0sHBooutDUNdkOdknN2vOacfI20pmz9b8MdM0/XMl11KixB9co7xhHS1tIGorPCzVY+2zl1Pyt8zZmAEVJpbuwgJWGNlov7ay2xXV0Pmbk/CNQymaHqDBYO/cxK3WTayUVRlq8hZaNhvw4uPoneaqcdmqWOeeWrGt4XtVRpkqdoMxoPA/vZ24tsbwD85OTMV6trqjrmzgYRgXmbx7eszZInQMp9UEaobs9UqEvrAwPiSc6xJLu574GOb7NwTG0lkAVQQHRI87srvPabJ+X1zp5F0NR1veyQ6s4eh8VQzMh78C/B806LYMqVzleBTNzxj1+XKxLJk6+TVJPDzvKrxiauj7mCwuIAOKqtaTOCU4cMpL5zpmP8R0CBt65w==
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)(23010399003)(1800799024)(36860700016)(82310400026)(261026140227099003)(11063799006)(261022075727099003)(261021130227099003)(261022115727099003)(261022105027099003)(56012099006)(261022113327099003)(261009223027099003)(261021133027099003)(261021121427099003)(261021135927099003)(261021123027099003)(261026135527099003)(261102123227099003)(261026121527099003)(261028144727099003)(261026130827099003)(18002099003)(22082099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	RlvZRBQ/m8iwlGMFLq3xlEzNIPRUWFbozRjw/HDunbZopxo6LxYsy5tSUQ1hDQ7bcK8BvsYb/Trv0zMYw0TlyMQ05IjaH2oD/vLQSKDym+PTbSHshBUztuST9J7nK7fKx68KMyK6O5fOu4SfiG4VaEN+p5jBPslAGKa1/uDXDuJ5RG5TKhgUSKySgs0jmgbQPh793q89WCMYfLCxWEwuN/6Tgx3RrmBBr4PBU4Gz4KHLo0KykY3tBgtxu/1Ir2e+tMzcE7D7PFhkDzwdhWqK+YH9AFuMH1SyPEq4F19BWphA7eqxvirRTcQkggjuMbwWRKCy7qq5VWR91Azae54t8ivGlWJANQXkcCz9fKBErldvv2ukP0hy9eN7tIj+HRBoFuGEw69y/Evzzw9MqoDHRqcydgwPpfvfA3MJVkO+pWOzKQD8U2mim5PZt/le/3cx
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 09:02:22.9836
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 57c6e303-210c-4267-b420-08df3e402b0f
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:
	MWH0EPF000A6730.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4256
X-purgate-ID: tlsNG-bad1c0/1794214949-BC2F4034-9E1E1DB0/0/0
X-purgate-type: clean
X-purgate-size: 2296



On 05-Nov-26 18:01, Kuan-Wei Chiu wrote:
> Xen copies device interrupt properties from the host device tree to
> Dom0, but hardcodes #interrupt-cells to 3 in make_gic_node() and
> fdt_property_interrupts(). On GICv3 platforms where the host uses 4
> cells, Dom0 parses the copied specifiers as 3 cells each and fails to
> set up device interrupts.
> 
> Propagate #interrupt-cells from the host GIC node in make_gic_node()
> and pad Dom0 interrupt specifiers with trailing zero cells in
> fdt_property_interrupts().
> 
> Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
> ---
>  xen/arch/arm/domain_build.c | 30 +++++++++++++++++++++++++++---
>  1 file changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 1ee1f1f6a7..74d2491f9e 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -654,12 +654,30 @@ static int __init fdt_property_interrupts(const struct kernel_info *kinfo,
>                                            unsigned int num_irq)
>  {
>      int res;
> +    uint32_t intrcells = ARRAY_SIZE(intr[0]);
> +    void *val;
> +    unsigned int i, stride;
>  
> -    res = fdt_property(kinfo->fdt, "interrupts",
> -                       intr, sizeof(intr[0]) * num_irq);
> +    if ( is_hardware_domain(kinfo->bd.d) )
> +    {
> +        const struct dt_device_node *gic = dt_interrupt_controller;
> +
> +        if ( !dt_property_read_u32(gic, "#interrupt-cells", &intrcells) )
> +            return -FDT_ERR_XEN(ENOENT);
> +        if ( intrcells < ARRAY_SIZE(intr[0]) )
> +            return -FDT_ERR_XEN(ERANGE);
> +    }
> +
> +    stride = intrcells * sizeof(intr[0][0]);
> +    res = fdt_property_placeholder(kinfo->fdt, "interrupts",
> +                                   stride * num_irq, &val);
>      if ( res )
>          return res;
>  
> +    memset(val, 0, stride * num_irq);
> +    for ( i = 0; i < num_irq; i++ )
> +        memcpy((uint8_t *)val + i * stride, intr[i], sizeof(intr[0]));
Please add a comment explaining why only the hardware domain is special
cased and that any extra cells beyond the 3-cell specifier are zero-padded.

With that:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:04:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:04:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479707.1683619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLIg-0003RZ-7V; Mon, 09 Nov 2026 09:04:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479707.1683619; Mon, 09 Nov 2026 09:04:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLIg-0003RS-42; Mon, 09 Nov 2026 09:04:26 +0000
Received: by outflank-mailman (input) for mailman id 1479707;
 Mon, 09 Nov 2026 09:04:25 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQLIf-0003RM-6I
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:04:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQLIe-00AWwQ-Fj
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:04:24 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18c84-2eae-0a2a0a5409dd-0a2a4501eb1c-16
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:04:24 +0100
Received: from [209.85.221.53] (helo=mail-wr1-f53.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af18c98-5984-0a2a45010019-d155dd35b460-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:04:24 +0100
Received: by mail-wr1-f53.google.com with SMTP id
 ffacd0b85a97d-492f0a1b685so417347f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 01:04:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597d0a775sm9459396f8f.55.2026.11.09.01.04.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 01:04:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794215064; x=1794819864; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=t81HF7aTOCdiFK+Q40/jr27seD2l7L8uanwamMLecYQ=;
        b=T+Iz/6TEGmshunozHZkho8NZSZjxGcjRjtc6Dbr5lJSCxvxJXQ7mo3VvOeIswn3K+c
         p7Ghfq71GfCS5uhOZnqH+Bg2KyAi7rlmJystfVO+dY+Pv1YqfGMfFMU4CeN/HsMQscSc
         /9y01uXMgM6mAcjymZLJlulralZywCfiY69w8hqujthKxmiriHcPQJsIiaYRiz3Qxr/6
         pg+H676B8AwlZZc0cEU+GqThFv+2BiLsOME7igsipohJYS9z/ODX+IF2OYeCaYxFl/ce
         OfUIySOEeDqV/ixclRHZqGpRPFvk2sBx8elAcwTUF+tk3I40WfkMlGYhxreXfquQ7dKJ
         HADw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794215064; x=1794819864;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=t81HF7aTOCdiFK+Q40/jr27seD2l7L8uanwamMLecYQ=;
        b=M57wlIx3StTY17/f4MxQ474yeh103SD/AuVQrpmBZK+ZzOYiHAxiqxNvhgP47inrbq
         PR7Zko9FjxOm28R61hn/qEVajKiexbkArN+rf6c6C/EwNra0dqqCujvKT9twdjHyYaK8
         iAb8wpop/PyjskdXuBCD3MDqHnpNf5Wh53SNT36ACfbjNgpBG0vXqItj3d12fuh2pns5
         revORirWovz5wDbvpBSNQiBs0sZMwbgojie62zJXj7ktZ+uPNOZpYq9HWmVWi9U8Uf28
         3hBmbNQU5DEDYL47RzrzvuR+acxWM+ksjAq/xN249h0cOXC0LFvKUZDIEOHJCcGZn+8f
         Wt/Q==
X-Gm-Message-State: APuU4Z93O+Ty8n9iLk27oCXlfECvSDcJ6fd9Sju+EPL0tsx6Cii5XxP9
	LNK16/YdIM0hjQ4f0Y8Rg6sJunIZUqh3KSUiAUMXTCjnAPA7o/z9jY8WUPkg4rGJ0g==
X-Gm-Gg: AYBFou1RdBA7cvzCZjVpCPp8MV7rtsNFoKpgX6TvpGZqQFLQJGfs9BRFh1b6hmMMW9a
	4DsSPss+8qu/i8MzdnKmb2Q+KN18PCbvfomCzCZ2otApr8b+DgQf9RcBAU1c+rTCc5V5zp5KXDn
	5558AK2vlrngVYo1eL8LEpXCPi/PkYLe7zbovgKX+8v76FFbp7kOe2BZozmwj2pcDlYh3yHKi1s
	Xg8VJtRwJCpB9UnfeK56fwR2Sil5l/n2awyFspFPJOZ8WWotHpErrSiIZ1ZU57tsuxNsuII+SrF
	BBuSAQSLy/19kfHJxHcH+u6Y+OWw1jNHYGE6zzfJgA/K9I4Rfw7GNAv2sbQjLH4LUHVt66Z6kx2
	XpahvpREV8h7FABRjxSaio6kK+miXHcmMf72UOElqfNsADhxB4HP9u/oLMjPSJ7E43u8tNo1nM1
	fLTVGSd40kcPmtt7PbwfwOTFQHw7N6uoNnJg+YbjyzwqLIA8w5bLXeoFKYGtARLUS2Shk7FQNQJ
	nEJ9+rkuEkYbLYqg1v+Ff+grLcVTSrIKBrjLDJx+SMwy/Uh082zpm3pqDmVKUnsC6AuQr92mvEP
	JMcaz5s2b3kT2VL4H5sveB5xicVFgJigZrkEtxg90C23QMIOPN5INB/HpYygv4Oc97GR4F5K2NM
	YUAdnDCsfwwrggNUU
X-Received: by 2002:a05:6000:3103:b0:48e:f47:273c with SMTP id ffacd0b85a97d-49586a3bf71mr7035186f8f.8.1794215063664;
        Mon, 09 Nov 2026 01:04:23 -0800 (PST)
Message-ID: <26698add-7103-4d64-84ff-af40ac9c4fe8@suse.com>
Date: Mon, 9 Nov 2026 10:04:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: compile out __set_fixmap_x() when not needed
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Teddy Astie <teddy.astie@vates.tech>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
 <72b9f0c1-94d0-4e87-bcc3-d1c49baead0d@suse.com>
 <629945f7492fbb65d1378ea05d1cf43d@bugseng.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <629945f7492fbb65d1378ea05d1cf43d@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-d62444/1794215064-BF46D757-CDF0E6C0/10/78276251493
X-purgate-type: spam
X-purgate-size: 2629

On 07.11.2026 08:23, Nicola Vetrini wrote:
> On 2026-11-03 12:28, Jan Beulich wrote:
>> On 03.11.2026 10:42, Jan Beulich wrote:
>>> Only HYPERV_GUEST has a need for an executable fixmap, so with that 
>>> option
>>> unset __set_fixmap_x() (and l1_fixmap_x[] in turn) is unreachable. 
>>> Address
>>> this Misra rule 2.1 violation by introduction ofa new FIXMAP_X Kconfig
>>> setting.
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> Why is __set_fixmap_x() not found by Eclair as a rule 2.1 violation in 
>>> the
>>> x86_64-amd job?
>>
>> Same question actually for both functions converted to static by [1]. 
>> This
>> apparently being a wider problem, are we (again / still) having an 
>> issue
>> with the scanning of the linking steps?
>>
>> Jan
>>
>> [1] https://lists.xen.org/archives/html/xen-devel/2026-10/msg01537.html
> 
> It was a Xen project decision not to consider for R2.1 functions that 
> are never referenced: you can see in 
> "automation/eclair_analysis/ECLAIR/deviations.ecl". Of course that is 
> reversible and I am in favour of not hiding those violations, but the 
> rationale for the justification that was given is that the compiler will 
> indeed DCE those:
> 
>     * - R2.1
>       - The compiler implementation guarantees that the unreachable code 
> is
>         removed. Constant expressions and unreachable branches of if and 
> switch
>         statements are expected.
>       - Tagged as `safe` for ECLAIR.

For the cases at hand (and then likely many more) the compiler doesn't DCE
anything. Imo the wording here is completely bogus. It may say "If the
compiler implementation guarantees ..." Which it might do for static
functions, but aiui without LTO it never will for non-static ones.

Then I'm also puzzled by the deviations.ecl entry:

-doc_begin="The compiler implementation guarantees that the unreachable code is removed.
Constant expressions and unreachable branches of if and switch statements are expected."
-config=MC3A2.R2.1,+reports={safe,"first_area(^.*has an invariantly.*$)"}
-config=MC3A2.R2.1,+reports={safe,"first_area(^.*incompatible with labeled statement$)"}
-doc_end

First - these are two different deviations, and hence imo should be two
separate entries. More important here though is that I can't connect the
two config= lines to the deviation of unreferenced non-static functions.
There's nothing "... has an invariantly ..."  or "... incompatible with
labeled statement ..." there? How would the full diagnostic for an
unreferenced global function (or data item) look like?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:18:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:18:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479716.1683629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLWW-0006Qg-Ih; Mon, 09 Nov 2026 09:18:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479716.1683629; Mon, 09 Nov 2026 09:18:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLWW-0006QZ-DQ; Mon, 09 Nov 2026 09:18:44 +0000
Received: by outflank-mailman (input) for mailman id 1479716;
 Mon, 09 Nov 2026 09:14:47 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <abel.vesa@oss.qualcomm.com>) id 1xQLSh-0005zZ-Ka
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:14:47 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQLSg-006tTM-MD
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:14:46 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <abel.vesa@oss.qualcomm.com>)
 id 6af18f04-8faa-0a2a0a5109dd-0a2a4507d2fa-10
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:14:46 +0100
Received: from [205.220.180.131] (helo=mx0b-0031df01.pphosted.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <abel.vesa@oss.qualcomm.com>)
 id 6af18f04-b4ea-0a2a45070019-cddcb4830986-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:14:46 +0100
Received: from pps.filterd (m0279872.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id
 6A96AAEf2540203
 for <xen-devel@lists.xenproject.org>; Mon, 9 Nov 2026 09:14:44 GMT
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4hsvc6nj0u-1
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:14:44 +0000 (GMT)
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-93f37c94ceeso134962185a.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 01:14:44 -0800 (PST)
Received: from oss.qualcomm.com ([188.27.161.77])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b795024730sm161196965e9.4.2026.11.09.01.14.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 01:14:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=qcppdkim1 header.d=qualcomm.com header.i="@qualcomm.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=google header.d=oss.qualcomm.com header.i="@oss.qualcomm.com" header.h="In-Reply-To:Content-Disposition:Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
	cc:content-type:date:from:in-reply-to:message-id:mime-version
	:references:subject:to; s=qcppdkim1; bh=dvY4KBfiISm+CQm5KIDUrtb6
	uzBgUaP0PFQaZpqv52w=; b=CVfpLeBo3svBArcIsMoE8xRGgAiB5mlup0YLE+WU
	miqzZlFGvtGNDDsox8E4acOXK3gFfIwXz4N9NuUoFgsvQYzB36fLfpJjeTRHqc6s
	uy0gSyaVcClNbyTOzA2q8KZ6eX3yeJTqJ/ms2Qw2AhTUM6hxMMbK1fitbXikNI1A
	3N1EEpVY6+IW/Gl778ykaY1gR/3PEmrnDIUD2fTp/fa3Hmb8ffAS6UIbg308OCav
	3+Nx4dhrSnt3yHskSXih/XRxBQbXscbe0NIynFJkTP78h6opo1QkdQ+HiyPEGFcV
	CwIq9i7JbhtLjvjXIsVC9XTOcHDqrOSl9f6bgU8BbCtJVA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=oss.qualcomm.com; s=google; t=1794215684; x=1794820484; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:content-type:mime-version
         :references:message-id:subject:cc:to:from:date:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=dvY4KBfiISm+CQm5KIDUrtb6uzBgUaP0PFQaZpqv52w=;
        b=dDRGtwg1w31fjxdy0/n5RlNjQuPG1R3ffz3R48IcGwYZAf8F9x+AMjM0ZWr12sCAUT
         Ckxk911xnTkvt14ASO7gMZkznwxjueUq6FAekhSIKXVec7s+mRrY3S0S16oeRbBXWing
         jiue/7RN2o0e+awptL0SGF2tffXprTX+olpmMzcfytPPFMCdDrfGcnruLxUFhWyVtZdZ
         H6HFPrV8Iz9+RA/gVxXFodBEiCPZrcXwwzQzRw1VeLNpXzMQi1zpAtUww9V8FjpWrcak
         h3WmX69qEg/yTEDqydNMY9C5MPBdtsJ5QmcBp5gp2lbS9eTC9mMeD35l7whDraRUcUPa
         7ETQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794215684; x=1794820484;
        h=in-reply-to:content-disposition:content-type:mime-version
         :references:message-id:subject:cc:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=dvY4KBfiISm+CQm5KIDUrtb6uzBgUaP0PFQaZpqv52w=;
        b=FKcu/xcBTyyg/4tr1y7nlPkMON9cZue8Fl+Mjjq3l7XnykRcuTQPx/dYESSPtsOUvG
         HUX53vgacSh2bwqVos01H6T71MWY6TSdZH5n6qG8rLdfTqlYe7zHI/4OXrAMjoryGUyJ
         A48mkKvcCgLitsU/I6aiBZV8hDuxBEP9LuKyq5c/Xg6jFABdZW+gNLiIEoWgXrEyX8pr
         G3wvv6h/8+EgTLBKzPq16TeH43snzNIrcAeV3JyH2j/3jMNsHn0ovFX3kuFKMD+GZDQ1
         XAmt43OgDK+CqpYZEs/k/YVinA8tijQcCY8a8stcXyuNuaTsI9z2R2T6BLqF52zRX6Sx
         1L3w==
X-Forwarded-Encrypted: i=1; AL+hErEqpVniOA+4EerX37nL7IqWH/o53dc2A/uhcXeP4C56EUCT8i623PktTmxuDmUi4BDf7YIFXXEyjKQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8jTg8iRUtyoZ2xy+lS5FaK0Pqbf5eFsnlEXB8kEV69re7gzCCK
	ieSecjXfN3jGKhBJ7ms4UCkTQCjnuOYCfVFV1Oik1xpuwbsucazjmHEJ/M0ZKxs/lALAQW/Edm5
	hjHYMnn7qsT18LoyLsoI7DOgBwXbtl02H1rSjitPC/hs1E14zpRI/1q3IT8xn5LIhDZWt8Q==
X-Gm-Gg: AYBFou07mBUglnzyRM4zat4R07LQtr3xiaRZa++UqAgZcJBWqNHRfPqdOCK6PwRqr7L
	IbMy40BJkd3LfToTO8k+rLXLgLIvZizueB8KBSD75hjsQJe9vt6NdiInJ/CrrBcndV0RIm+oa2W
	SdVGFxVN5XoMJZi8Ki5jfPlUvK++Cerui+bAytTN3cJ2U853TrgwQklzAySGHpSzHf+MOAvxQER
	fnGbw3zn0hs7kHhSP6VCX9Cik3NJ596tMaOS4jbCU1k2zHfysLuFHZ2omZUiWwqbdt4xTUHuZ25
	G22RdixIxrlNdjeJeTEEQHpzUwaS4jvftCNxWMNJssj1yAur0oH7Julu1rkK4uP1AIBQW81CPxV
	x4emMvF3/N/tC1hwSNUCbc40u2ID77to3uZAQd+QImGC/m2tAmkH2I14lWyyLG50=
X-Received: by 2002:a05:620a:1a16:b0:93c:65e3:df81 with SMTP id af79cd13be357-94604d2c6e2mr886323785a.13.1794215683436;
        Mon, 09 Nov 2026 01:14:43 -0800 (PST)
X-Received: by 2002:a05:620a:1a16:b0:93c:65e3:df81 with SMTP id af79cd13be357-94604d2c6e2mr886320985a.13.1794215682798;
        Mon, 09 Nov 2026 01:14:42 -0800 (PST)
Date: Mon, 9 Nov 2026 11:14:38 +0200
From: Abel Vesa <abel.vesa@oss.qualcomm.com>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>,
        Stefano Stabellini <sstabellini@kernel.org>,
        Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
        Madhavan Srinivasan <maddy@linux.ibm.com>,
        Nicholas Piggin <npiggin@gmail.com>,
        Michael Ellerman <mpe@ellerman.id.au>,
        "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
        "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>,
        Shrikanth Hegde <sshegde@linux.ibm.com>,
        Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>,
        Dexuan Cui <decui@microsoft.com>,
        "Michael S. Tsirkin" <mst@redhat.com>,
        Jason Wang <jasowangio@gmail.com>,
        Eugenio =?utf-8?B?UMOpcmV6?= <eperezma@redhat.com>,
        Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
        Jarkko Sakkinen <jarkko@kernel.org>,
        Dave Hansen <dave.hansen@linux.intel.com>,
        Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
        Borislav Petkov <bp@alien8.de>, x86@kernel.org,
        "H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>,
        Paul Moore <paul@paul-moore.com>,
        Stephen Smalley <stephen.smalley.work@gmail.com>,
        Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>,
        Joel Stanley <joel@jms.id.au>,
        Andrew Jeffery <andrew@codeconstruct.com.au>,
        Ryan Chen <ryan_chen@aspeedtech.com>,
        Billy Tsai <billy_tsai@aspeedtech.com>,
        Bjorn Andersson <andersson@kernel.org>,
        Konrad Dybcio <konradybcio@kernel.org>,
        Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>,
        Sumit Garg <sumit.garg@kernel.org>,
        Scott Branden <scott.branden@broadcom.com>,
        Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>,
        Arnd Bergmann <arnd@arndb.de>,
        Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
        Richard Cochran <richardcochran@gmail.com>,
        David Woodhouse <dwmw2@infradead.org>,
        Andrew Lunn <andrew+netdev@lunn.ch>,
        "David S. Miller" <davem@davemloft.net>,
        Eric Dumazet <edumazet@kernel.org>, Jakub Kicinski <kuba@kernel.org>,
        Paolo Abeni <pabeni@redhat.com>, xen-devel@lists.xenproject.org,
        linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
        kvm@vger.kernel.org, linux-hyperv@vger.kernel.org,
        virtualization@lists.linux.dev, linux-sgx@vger.kernel.org,
        selinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
        linux-aspeed@lists.ozlabs.org, linux-arm-msm@vger.kernel.org,
        op-tee@lists.trustedfirmware.org, netdev@vger.kernel.org
Subject: Re: [PATCH 10/14] soc: qcom: rmtfs_mem: convert mmap hook to
 mmap_prepare
Message-ID: <tr3hhmd6gqvvzrngazyovx7jfbw6k45yjw2mipqu3aegsy5oda@7qromidf5btb>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <20261105-late-2026-mmap_prepare-v1-10-c56aadfbab8a@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-10-c56aadfbab8a@kernel.org>
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMTA5MDAzNiBTYWx0ZWRfX/XE7Nmk8mEn6
 cukMfIEeM0IFpxpk4W0w82he3ZHeb5htjwJh9CVhUJt7l16FwNzfSRX5pDW0wTKXXAZNjcVyZSY
 cctr0n4lNH93Hd8Qhv1eGgGTvJuzazgmDgN2AueYSJCY8D+MRaeWunP/7/RJqa0zz5nb6opyXxQ
 bkxhMMzciWTQ89/UmPRbYXgt5MYLS4dckK93JPiV5/1PnMDwTYYs4ZBUE7cQbiA6ReSZc/VZizU
 e8+d2UEot0uTdPZzS/dj5OjNqyNFpKscFcZ/WL5Lt3i83COQhlLHau7URutFi3yps9winPIRWqw
 67wnXdelHOvaeJgkzicmG6fzUauw9JiiW0KhxSg6jUbaP5+ZdKFYeCf1pmSqWyaboAuPwV1tN5/
 NJYZUJMzvkZ0jnzdH/mk/bN/8ktLYk/c7b6b2A24BwJ0b1IRKHwSr7Ku7erUShsquZWNSVdvac5
 AXAcaUKx6zU9JrpNchQ==
X-Authority-Analysis: v=2.4 cv=WOjqzXsR c=1 sm=1 tr=0 ts=6af18f04 cx=c_pps
 a=50t2pK5VMbmlHzFWWp8p/g==:117 a=asF+/XNaGoxFafzDDLC1GQ==:17
 a=kj9zAlcOel0A:10 a=zJRp6_cAMcgA:10 a=s4-Qcg_JpJYA:10
 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22
 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=2UNkV1bVvYdQOko7pskA:9 a=CjuIK1q_8ugA:10
 a=QtEvL3ry9E0A:10 a=IoWCM6iH3mJn3m4BftBB:22
X-Proofpoint-Spam-Info: AW1haW4tMjYxMTA5MDAzNiBTYWx0ZWRfX+lk1l5+ymbjs
 t1bDAfLJLImjkp4uS4CQVQ9S8gmBM246DDarkv/tw+mWXWiJZqd9noF/5f5WQnctiYFAE852bIP
 T1HAZtnZGqFPDuZ7LSt7xVTvrNN0Qvs=
X-Proofpoint-ORIG-GUID: H_UWWEf7qns_P0dEONoTfHTVYguEewm1
X-Proofpoint-GUID: H_UWWEf7qns_P0dEONoTfHTVYguEewm1
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49
 definitions=2026-11-09_03,2026-11-06_01,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
 impostorscore=0 suspectscore=0 phishscore=0 priorityscore=1501 clxscore=1011
 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0
 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0
 reason=mlx scancount=1 engine=8.22.0-2611040001 definitions=main-2611090036
X-purgate-ID: tlsNG-ef75cf/1794215686-34AC8AE4-6E5961C2/0/0
X-purgate-type: clean
X-purgate-size: 303

On 26-11-05 21:05:41, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook, using the
> PFN remap mmap action to map the region.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>

LGTM, so:

Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:32:50 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:32:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479727.1683638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLk5-0001Nh-Ki; Mon, 09 Nov 2026 09:32:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479727.1683638; Mon, 09 Nov 2026 09:32:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLk5-0001Na-HM; Mon, 09 Nov 2026 09:32:45 +0000
Received: by outflank-mailman (input) for mailman id 1479727;
 Mon, 09 Nov 2026 09:32:44 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQLk4-0001NU-4D
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:32:44 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQLk1-00DSH1-JU
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:32:41 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1932f-2eae-0a2a0a5409dd-0a2a4506bcc2-44
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:32:41 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af19339-195a-0a2a45060019-d1558030d898-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:32:41 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so4002995e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 01:32:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b9f93c04afsm69209125e9.3.2026.11.09.01.32.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 01:32:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794216761; x=1794821561; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=QAa/fGpE6RuU8cCUn3X33VBhTYm4eTgpDDkqV875uNM=;
        b=aZ53jMZbIdlKrxcbJr+zuRvtW03NEFXkxIgQxEdk9dEnlwXxVCT9qwZ1qH/2qH0KIZ
         ZqxDvpewk83qBc2aYY9ybseribEwSeDtz3/oJbj9JC5NGRf9hmt0sSAGOhWnDS15fkee
         sGJAW1ksXSKI6xtIDs/ZbRCobEhYgtGPS0MhKRBwG0Apl99Lw+gURdUU3jRfQ3ur53eF
         D/FFQoVeY81v3G1QsbrGAhs0xsk75XNTlkCZmVXwG85VcbaITB3YSwxuekrQ17pY6GKl
         DXp8VqYz6Gsabm+UAuvqy9YVDNiLBbizc4HJm3CR9B8i6SaZ6hpFgJgyRcCd/piHTbEM
         F9tw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794216761; x=1794821561;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=QAa/fGpE6RuU8cCUn3X33VBhTYm4eTgpDDkqV875uNM=;
        b=fDTvwEHvpwzDNdRdClvQJX+gFQ5etqV//FrNHqv1Jsbkb3eiJd6KCjBAFm44pVd1mx
         WrhJ/p/ZmSJw9zlfXGfus0IMeoDYF/0y/GpTO7YcnzAGs0tMi3djw0z3DWqXJjcJ1Hrl
         WnvBe8Qa29LOekTUIBjtWOm5Rb2cZwnV4IfrDibiS0RrlAwf1wVwLG0I2I+bySnqDmzx
         Gv9/8j8KdMTTjPmV9+2qwUh4A4QuzmvO4qqRNdeiC/gQiLrKx2fYIZcqwUsyMOffRzNF
         ZhbnXFvFg+8M7CSRQF/NeVsb7uH9U8xxc3VHxiXS74uj4d6Ei7okGwjMbCDLDsoQRJOd
         EcPg==
X-Forwarded-Encrypted: i=1; AL+hErElDqNHViCkLyPXJtTxgAfPbmP3Ps3taazi12Wo3dXLKvNsLWDIh/4WhCzYMwxEMvTmwAyq0Kqkuh0=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9N5TXn5WlaSXXTMSBsYOwqb9c9J8a3z3MD3Yi6hGxRH8C7XBTq
	f8lx+0v5ePN0WyfUr52hy1BPU+vL+y8jiKR1HMFApnp3z1t2SvfYpL4dB7znp8zD7w==
X-Gm-Gg: AYBFou12FEXxAiuAOV8HyRRPCTfNAjF40M1wz8rFSL1tTFrFYx0M/QmqwCVbHBhqHrX
	mlm56ox90/6g2kk5sWM+w8HTtVijEQLN65n+VatH3N0Gi9uV0sGdcdv5i5U1LPV5x7APMjx2CXu
	UxV+LJXNG/5BIk47iXai//tZdNV6iYP3KbCn6SuapVJjnyB2HqLYI9pu/tTGnrcwo+N/WN8FCnJ
	p57xoAn9l3IQ4JvLssVlY/uUs6SMFbAj4G0qESEWmSN0ewhrrIU9EBW7We34DEv75FjBLHp4Xsm
	c/50hBc6mWmC1Q5VC+p8OPOIOd1WjuzLFcUFBMLIybSNhaxpj6aI4+TVH+cJjrZ1s7m0Hm0tz0B
	ZECLJ2UhREfVpq9dOyeDZb3ypj2dR6ZE1BuKR1F1GWayD18CINeS6JcBsftv8IPrRn2lBuareAS
	vi+ADzH/vT+n5i+JCaidKV+K+McxLiWhkxJjYp6LmLpzalaC4KRdcsiRjKovr0xtLaj77ERRJFp
	77QFpiPGOaUdSMvcvpeA8KW47j6N1cvh+kGXHyP8bHz1KwyGCFjJaqBr69cM5GxhzZrjKl2XxrT
	2v0dqv5KE/isF1ov9s8036WHnmnCQB8b/1DrStJDdmzNez+zrIjRpMj9tbSpErxF8k0NqzRTeSq
	eV4aOGDBD3NnwLLJZoXwjjgnbX42AIl9uYhVWtQ==
X-Received: by 2002:a05:600c:6990:b0:4a6:30c3:1114 with SMTP id 5b1f17b1804b1-4b960e9a77cmr61595065e9.12.1794216760919;
        Mon, 09 Nov 2026 01:32:40 -0800 (PST)
Message-ID: <cf3e44aa-f48a-443b-991d-665caded21da@suse.com>
Date: Mon, 9 Nov 2026 10:32:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: RFC: Promote FLASK XSM Module to Supported in SUPPORT.md
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: Teddy Astie <teddy.astie@vates.tech>,
 Andrew Cooper <Andrew.Cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <51ed28b0-1c41-4e6b-95a9-786e59d4cd9f@apertussolutions.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <51ed28b0-1c41-4e6b-95a9-786e59d4cd9f@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1794216761-FE27077B-D651E5FE/10/78276251493
X-purgate-type: spam
X-purgate-size: 3673

On 06.11.2026 17:19, Daniel P. Smith wrote:
> Greetings,
> 
> This RFC is intended to start a dialogue following the discussion on the 
> November Xen Community Call. It proposes changing the status of the 
> FLASK XSM Module (the implementation in `xen/xsm/flask`) from 
> Experimental to Supported in SUPPORT.md, while leaving the FLASK default 
> policy Experimental.
> 
> ### Background: XSA-77 and disaggregation guidance
> 
> XSA-77 ("Disaggregated domain management security status") documented 
> that the majority of management hypercalls (most `XEN_DOMCTL_*` subops, 
> all of `__HYPERVISOR_sysctl`, certain memory operations, etc.) were 
> originally written only for fully-privileged dom0 and had not been 
> reviewed for exposure to semi-privileged, potentially hostile callers.
> 
> When XSM/FLASK is used to delegate those interfaces, a compromised 
> management domain may be able to cause host-wide denial of service or 
> privilege escalation. The security team’s policy (codified in “Security 
> Status of dom0 disaggregation” section of `docs/misc/xsm-flask.txt`) is 
> that, until the interfaces are reviewed, bugs that merely reduce the 
> security of a radically disaggregated system to that of a 
> non-disaggregated one will be handled as ordinary public bugs rather 
> than under the normal security embargo process. Only a small set of 
> subops are treated as safe for disaggregation; the remainder listed in 
> that section remain covered by the XSA-77 stance.
> 
> SUPPORT.md currently reflects this distinction and the XSA-77 caveat for 
> FLASK.
> 
> ### Current status and the case for change
> 
> Today, SUPPORT.md divides XSM support between "XSM Framework", "FLASK 
> XSM Module", "FLASK default policy", and "SILO XSM Module", where "XSM 
> Framework" and "SILO XSM Module" are marked as Supported, and "FLASK XSM 
> Module" and "FLASK default policy" are marked Experimental.
> 
> The core concern behind XSA-77 is that it has not been demonstrated 
> which fine-grained operation delegations can be done safely. The 
> documentation provides guidance on “safe”/covered interfaces precisely 
> because of that gap. At its heart, this concern is a policy- and 
> configuration-level issue.
> 
> Marking the code, "FLASK XSM Module", Experimental primarily because a 
> user could write an insecure custom policy feels inconsistent.

My recollection is a different one: There were concerns over code quality.
For example I seem to recall concerns over there being memory leaks. As a
result I further recall that the security team said that a full code audit
may be necessary to actually address those concerns. To possibly soften
this some, that concern may, to a degree, have been driven by the large
number of style violations in that part of the code base.

At the same time, yes, code and what can be done with it by careless
writing of policies want separating. This looks to be suitably reflected
in your proposed wording change ...

> ### FLASK XSM Module
> 
>      Status: Supported
> 
> Compile time disabled by default.
> 
> Using FLASK to delegate various domain control hypercalls
> to particular other domains, rather than only permitting use by dom0,
> remains specifically excluded from security support for many hypercalls.
> Please see XSA-77 and the guidance in docs/misc/xsm-flask.txt
> for more details. The Supported status of this module reflects the
> maturity of the implementation in xen/xsm/flask; any security guarantees
> for a particular policy configuration are the responsibility of the
> policy author.

... here.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:40:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:40:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479735.1683646 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLrH-0003K4-Ab; Mon, 09 Nov 2026 09:40:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479735.1683646; Mon, 09 Nov 2026 09:40:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQLrH-0003Jx-7q; Mon, 09 Nov 2026 09:40:11 +0000
Received: by outflank-mailman (input) for mailman id 1479735;
 Mon, 09 Nov 2026 09:40:10 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQLrG-0003Jr-P6
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:40:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQLrF-00AA9f-RM
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:40:09 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af194f5-bab6-0a2a0a5309dd-0a2a4508d8f8-10
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:40:09 +0100
Received: from [195.135.223.130] (helo=smtp-out1.suse.de)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af194f9-f659-0a2a45080019-c387df82a890-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:40:09 +0100
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id EB13821F17;
 Mon,  9 Nov 2026 09:40:07 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 4378813302;
 Mon,  9 Nov 2026 09:40:07 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id BpYBCfeU8WrhNgAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 09:40:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794217209; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=Aymv5QYuun1dCJMjw5Ayh+jzeyO/+fbZcIwDOryNHNg=;
	b=F7fhBQoDGNVnmxC2PhE5Ni5yhwVTVpBkQv3VMF2RoFfhj+nuGyN3I5c9Os4TviZ+/3sx0X
	PocE8eaA9p4xPFtQaJ15N/MSFQZWD1ENr6Jh9Qh8OlzRHkf82TcAw9LkirugwNTvydeyQD
	s0frLco1iVgqVlZ53KdHoYxwtV+eTZA=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=BIvkgADB
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794217207; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=Aymv5QYuun1dCJMjw5Ayh+jzeyO/+fbZcIwDOryNHNg=;
	b=BIvkgADBIvrjxGA7ePEmtczxknVGgQagRcLhlTeyBc1TwI4x+1NMsK+RE5tsqms9XwJN/F
	wPhexNS7GUbI1PUapC9jpOcynnSoZ0evaKf9FPw8u3VMENe+tUhrQ5QEnTgJhRM/I0GNOY
	AP1fNuSXVjRuKwGt6RwOAdfR+s3ASyU=
Message-ID: <36064075-fbf0-40ac-8448-60bd36ad2a28@suse.com>
Date: Mon, 9 Nov 2026 10:40:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/xen: Fix lazy MMU pause count wrap-around
To: "M. Vefa Bicakci" <m.v.b@runbox.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>,
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
 Peter Zijlstra <peterz@infradead.org>, Juri Lelli <juri.lelli@redhat.com>,
 Vincent Guittot <vincent.guittot@linaro.org>,
 Dietmar Eggemann <dietmar.eggemann@arm.com>,
 Steven Rostedt <rostedt@goodmis.org>, Ben Segall <bsegall@google.com>,
 Mel Gorman <mgorman@suse.de>, Valentin Schneider <vschneid@redhat.com>,
 K Prateek Nayak <kprateek.nayak@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
References: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------LygJjHqW8pY12708uQxPxyDh"
X-Spamd-Result: default: False [-13.31 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	NEURAL_SPAM_LONG(0.19)[0.054];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	MX_GOOD(-0.01)[];
	RCPT_COUNT_TWELVE(0.00)[20];
	FREEMAIL_TO(0.00)[runbox.com,oracle.com,kernel.org,redhat.com,alien8.de,linux.intel.com,zytor.com,infradead.org,linaro.org,arm.com,goodmis.org,google.com,suse.de,amd.com];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	ARC_NA(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	FREEMAIL_ENVRCPT(0.00)[runbox.com];
	TO_DN_SOME(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MID_RHS_MATCH_FROM(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	DKIM_TRACE(0.00)[suse.com:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,runbox.com:email]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -13.31
X-Spam-Level: 
X-Rspamd-Queue-Id: EB13821F17
X-purgate-ID: tlsNG-c1860d/1794217209-CC97287B-AC7A5C03/35/110847
X-purgate-type: clean
X-purgate-size: 12610

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------LygJjHqW8pY12708uQxPxyDh
Content-Type: multipart/mixed; boundary="------------pqceB7wYf1PbgMBK47JtVF9K";
 protected-headers="v1"; hp="clear"
Message-ID: <36064075-fbf0-40ac-8448-60bd36ad2a28@suse.com>
Date: Mon, 9 Nov 2026 10:40:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/xen: Fix lazy MMU pause count wrap-around
To: "M. Vefa Bicakci" <m.v.b@runbox.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>,
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
 Peter Zijlstra <peterz@infradead.org>, Juri Lelli <juri.lelli@redhat.com>,
 Vincent Guittot <vincent.guittot@linaro.org>,
 Dietmar Eggemann <dietmar.eggemann@arm.com>,
 Steven Rostedt <rostedt@goodmis.org>, Ben Segall <bsegall@google.com>,
 Mel Gorman <mgorman@suse.de>, Valentin Schneider <vschneid@redhat.com>,
 K Prateek Nayak <kprateek.nayak@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
References: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>

--------------pqceB7wYf1PbgMBK47JtVF9K
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDIuMTEuMjYgMTY6MzEsIE0uIFZlZmEgQmljYWtjaSB3cm90ZToNCj4gQ29tbWl0IGJl
YzZmNDFhNmZlNSAoIng4Ni94ZW46IEdldCByaWQgb2YgbGFzdCBYRU5fTEFaWV9NTVUgdXNl
cyIpDQo+IHVuaW50ZW50aW9uYWxseSBwcmV2ZW50cyB0aGUgYWN0aXZhdGlvbiBvZiBsYXp5
IE1NVSBtb2RlIGZvciBtb3N0IHRhc2tzDQo+IHJ1bm5pbmcgb24gWGVuIFBWIFZNcyAoaW5j
bHVkaW5nIGRvbTApLg0KPiANCj4gVGhhdCBjb21taXQgbWFkZSB4ZW5fZW5kX2NvbnRleHRf
c3dpdGNoKCkgY2FsbA0KPiBfX3Rhc2tfbGF6eV9tbXVfbW9kZV9yZXN1bWUoKSB3aXRoIHRo
ZSB0YXNrIGJlaW5nIHN3aXRjaGVkIHRvLiBIb3dldmVyLA0KPiB0aGUgbGF0dGVyIGZ1bmN0
aW9uIGRlY3JlbWVudHMgdGhlIHBhdXNlX2NvdW50IGZpZWxkIG9mIHRoZSB0YXNrIHdpdGhv
dXQNCj4gY2hlY2tpbmcgd2hldGhlciB0aGF0IHRhc2sncyBsYXp5IE1NVSBtb2RlIHdhcyBw
YXVzZWQgb3Igbm90LiBBIHRhc2sNCj4gYmVpbmcgc3dpdGNoZWQgdG8gZm9yIHRoZSBmaXJz
dCB0aW1lIGhhcyBuZXZlciBiZWVuIHN3aXRjaGVkIGZyb20sIHNvDQo+IGF0dGVtcHRpbmcg
dG8gcmVzdW1lIGxhenkgTU1VIG1vZGUgY2FuIHdyYXAtYXJvdW5kICh1bmRlcmZsb3cpIHRo
ZQ0KPiBwYXVzZV9jb3VudCBmcm9tIDAgdG8gMjU1IChVOF9NQVgpLg0KPiANCj4gRnVydGhl
cm1vcmUsIHRoZSBub24temVybyBwYXVzZV9jb3VudCBpcyBjb3BpZWQgdG8gY2hpbGQgdGFz
a3MgYXQgZm9yaywNCj4gc28gYWxsIGRlc2NlbmRhbnRzIChpbmNsdWRpbmcgdGhlIGlkbGUg
dGFza3Mgb2YgdGhlIG5vbi1ib290IENQVXMpDQo+IGluaGVyaXQgdGhlIG5vbi16ZXJvIHBh
dXNlX2NvdW50LiBUaGlzIHByZXZlbnRzIGVuYWJsaW5nIGxhenkgTU1VIG1vZGUNCj4gZm9y
IHRoZW0sIGJlY2F1c2UgbGF6eV9tbXVfbW9kZV9lbmFibGUoKSBkb2VzIG5vdCBkbyBhbnl0
aGluZyB3aGVuDQo+IHBhdXNlX2NvdW50IGlzIG5vbi16ZXJvLg0KPiANCj4gSGVuY2UsIGNh
bGwgX190YXNrX2xhenlfbW11X21vZGVfcmVzdW1lKCkgZnJvbSB4ZW5fZW5kX2NvbnRleHRf
c3dpdGNoKCkNCj4gb25seSBpZiBsYXp5IE1NVSBtb2RlIHdhcyBwYXVzZWQuDQo+IA0KPiBU
aGlzIGlzc3VlIHdhcyBkaXNjb3ZlcmVkIHdpdGggQ09ORklHX0RFQlVHX1ZNPXksIHdoaWNo
IGVuYWJsZXMNCj4gcGF1c2VfY291bnQgdW5kZXJmbG93IGFuZCBvdmVyZmxvdyB3YXJuaW5n
cy4gSW4gdGhlIGV4YW1wbGVzIHF1b3RlZA0KPiBiZWxvdywgdGhlIGZpcnN0IHdhcm5pbmcg
c2hvd3MgdGhlIHVuZGVyZmxvdyB3aXRoIFBJRCAxLiBUaGUgc2Vjb25kDQo+IHdhcm5pbmcg
c2hvd3MgdGhlIG92ZXJmbG93IGZyb20gMjU1IChVOF9NQVgpIHRvIDAsIGFsc28gZm9yIFBJ
RCAxLCBhcw0KPiBpbmRpY2F0ZWQgYnkgdGhlIHNhbWUgUkRJIHJlZ2lzdGVyIHZhbHVlLg0K
PiANCj4gRXhhbXBsZSBwYXVzZV9jb3VudCB1bmRlcmZsb3cgd2FybmluZzoNCj4gDQo+ICAg
IFdBUk5JTkc6IGluY2x1ZGUvbGludXgvcGd0YWJsZS5oOjM2MiBhdCB4ZW5fZW5kX2NvbnRl
eHRfc3dpdGNoKzB4NGUvMHg2MCwgQ1BVIzA6IHN3YXBwZXIvMC8wDQo+ICAgIENQVTogMCBV
SUQ6IDAgUElEOiAwIENvbW06IHN3YXBwZXIvMCBOb3QgdGFpbnRlZCA3LjIuNC0xICMyIFBS
RUVNUFQoZnVsbCkNCj4gICAgUklQOiBlMDMwOnhlbl9lbmRfY29udGV4dF9zd2l0Y2grMHg0
ZS8weDYwDQo+ICAgIC4uLg0KPiAgICBSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAw
MDAwMDAwMDAwMDAwIFJESTogZmZmZjg4ODAwNDkzMDAwMA0KPiANCj4gTm90ZTogVGhlIFBJ
RCBpcyBzaG93biBhcyAwIGFib3ZlLCBiZWNhdXNlIGN1cnJlbnRfdGFzayBpcyB1cGRhdGVk
IGluDQo+IF9fc3dpdGNoX3RvKCkgYWZ0ZXIgYXJjaF9lbmRfY29udGV4dF9zd2l0Y2goKS4g
YXJjaF9lbmRfY29udGV4dF9zd2l0Y2goKQ0KPiBjYWxscyB4ZW5fZW5kX2NvbnRleHRfc3dp
dGNoKCkgaW5kaXJlY3RseS4NCj4gDQo+IEV4YW1wbGUgcGF1c2VfY291bnQgb3ZlcmZsb3cg
d2FybmluZzoNCj4gDQo+ICAgIFdBUk5JTkc6IGluY2x1ZGUvbGludXgvcGd0YWJsZS5oOjMx
OSBhdCB4ZW5fc3RhcnRfY29udGV4dF9zd2l0Y2grMHg2NC8weDcwLCBDUFUjMDogc3dhcHBl
ci8wLzENCj4gICAgQ1BVOiAwIFVJRDogMCBQSUQ6IDEgQ29tbTogc3dhcHBlci8wIFRhaW50
ZWQ6IEcgICAgICAgIFcgIDcuMi40LTEgIzIgUFJFRU1QVChmdWxsKQ0KPiAgICAuLi4NCj4g
ICAgUklQOiBlMDMwOnhlbl9zdGFydF9jb250ZXh0X3N3aXRjaCsweDY0LzB4NzANCj4gICAg
Li4uDQo+ICAgIFJEWDogMDAwMDAwMDAwMDAwMDAwMCBSU0k6IDAwMDAwMDAwMTNmNzg5NGQg
UkRJOiBmZmZmODg4MDA0OTMwMDAwDQo+ICAgIC4uLg0KPiAgICBDYWxsIFRyYWNlOg0KPiAg
ICAgPFRBU0s+DQo+ICAgICBfX3NjaGVkdWxlKzB4MzZhLzB4MWE5MA0KPiAgICAgc2NoZWR1
bGUrMHgyNy8weGEwDQo+ICAgICBzY2hlZHVsZV90aW1lb3V0KzB4YmQvMHgxMDANCj4gICAg
IF9fd2FpdF9mb3JfY29tbW9uKzB4OTcvMHgxYjANCj4gICAgIHdhaXRfZm9yX2NvbXBsZXRp
b25fa2lsbGFibGUrMHgyNC8weDQwDQo+ICAgICBfX2t0aHJlYWRfY3JlYXRlX29uX25vZGUr
MHgxM2UvMHgyNDANCj4gICAgIGt0aHJlYWRfY3JlYXRlX3dvcmtlcl9vbl9ub2RlKzB4ZWUv
MHgxYzANCj4gICAgIHdvcmtxdWV1ZV9pbml0KzB4MjYvMHg0MjANCj4gICAgIGtlcm5lbF9p
bml0X2ZyZWVhYmxlKzB4MTAxLzB4MzYwDQo+ICAgICBrZXJuZWxfaW5pdCsweDFhLzB4MTMw
DQo+ICAgICByZXRfZnJvbV9mb3JrKzB4MmIwLzB4MzQwDQo+ICAgICByZXRfZnJvbV9mb3Jr
X2FzbSsweDFhLzB4MzANCj4gICAgIDwvVEFTSz4NCj4gDQo+IEZpeGVzOiBiZWM2ZjQxYTZm
ZTUgKCJ4ODYveGVuOiBHZXQgcmlkIG9mIGxhc3QgWEVOX0xBWllfTU1VIHVzZXMiKQ0KPiBD
Yzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyAjIDcuMi54DQo+IFNpZ25lZC1vZmYtYnk6IE0u
IFZlZmEgQmljYWtjaSA8bS52LmJAcnVuYm94LmNvbT4NCj4gLS0tDQo+ID09PSBUZXN0aW5n
IG5vdGVzID09PQ0KPiBUaGlzIGNvbW1pdCB3YXMgdGVzdGVkIHdpdGgga2VybmVsIHY3LjMt
MTY3NTUtZ2QxMzVhYjQ1M2E3NCBhbmQgdjcuNC1yYzENCj4gd2l0aCBhIGRvbVUgUFYgVk0s
IGFuZCB2ZXJzaW9ucyBmcm9tIHY3LjIuNCB0byB2Ny4yLjE0IHdpdGggZG9tMCBhbmQNCj4g
ZG9tVSBQViBWTXMgcnVubmluZyBvbiBYZW4gdjQuMTkuNS4gQ09ORklHX0RFQlVHX1ZNPXkg
d2FzIHNldCBmb3IgYWxsDQo+IHRlc3RzLCBhbmQgbm8gd2FybmluZ3Mgd2VyZSBvYnNlcnZl
ZC4NCj4gDQo+ID09PSBEZWJ1Z2dpbmcgbm90ZXMgPT09DQo+IEZvciBkZWJ1Z2dpbmcsIEkg
aW5zdHJ1bWVudGVkIHhlbl9zdGFydF9jb250ZXh0X3N3aXRjaCgpLA0KPiB4ZW5fZW5kX2Nv
bnRleHRfc3dpdGNoKCkgYW5kIGNvcHlfcHJvY2VzcygpLCBhbmQgSSBjb25maXJtZWQgdGhh
dCB0aGUNCj4gaW5oZXJpdGVkIHBhdXNlX2NvdW50IHZhbHVlIGlzIGRlY3JlbWVudGVkIGZv
ciBlYWNoIGxldmVsIG9mIHRoZSBwcm9jZXNzDQo+IHRyZWUsIHN0YXJ0aW5nIGZyb20gMjU1
Lg0KPiANCj4gPT09IENyZWRpdHMgPT09DQo+IFRoZSBwYXRjaCB3YXMgaGFuZC13cml0dGVu
LCBidXQgdGhlIGNvbW1pdCBtZXNzYWdlIHdhcyBwb2xpc2hlZCB3aXRoIGENCj4gZmV3IHJv
dW5kcyBvZiBMTE0gcmV2aWV3Lg0KPiAtLS0NCj4gICBhcmNoL3g4Ni94ZW4vZW5saWdodGVu
X3B2LmMgfCAxMCArKysrKysrKystDQo+ICAgaW5jbHVkZS9saW51eC9zY2hlZC5oICAgICAg
IHwgMTkgKysrKysrKysrKysrKysrKysrKw0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5z
ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2
L3hlbi9lbmxpZ2h0ZW5fcHYuYyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYuYw0KPiBp
bmRleCBjNTExN2E3NzMwZDYuLjY4ZjhhOTc3OTk5YiAxMDA2NDQNCj4gLS0tIGEvYXJjaC94
ODYveGVuL2VubGlnaHRlbl9wdi5jDQo+ICsrKyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5f
cHYuYw0KPiBAQCAtNDMxLDcgKzQzMSwxNSBAQCBzdGF0aWMgdm9pZCB4ZW5fZW5kX2NvbnRl
eHRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkNCj4gICANCj4gICAJeGVuX21j
X2ZsdXNoKCk7DQo+ICAgCXRoaXNfY3B1X3dyaXRlKHhlbl9jcHVfbGF6eV9tb2RlLCBmYWxz
ZSk7DQo+IC0JX190YXNrX2xhenlfbW11X21vZGVfcmVzdW1lKG5leHQpOw0KPiArDQo+ICsJ
LyoNCj4gKwkgKiBBIG5ld2x5IGNyZWF0ZWQgdGFzayBjYW4gYmUgc3dpdGNoZWQgdG8gd2l0
aG91dCBldmVyIGhhdmluZyBiZWVuDQo+ICsJICogc3dpdGNoZWQgZnJvbSwgc28gaXQgd2ls
bCBub3QgaGF2ZSBhIHByaW9yIGxhenkgTU1VIHBhdXNlIHRvIHVuZG8NCj4gKwkgKiBmcm9t
IHhlbl9zdGFydF9jb250ZXh0X3N3aXRjaCgpLiBIZW5jZSwgcmVzdW1lIGxhenkgTU1VIG9u
bHkgaWYgaXQNCj4gKwkgKiB3YXMgcGF1c2VkLg0KPiArCSAqLw0KPiArCWlmIChfX3Rhc2tf
bGF6eV9tbXVfbW9kZV9wYXVzZWQobmV4dCkpDQo+ICsJCV9fdGFza19sYXp5X21tdV9tb2Rl
X3Jlc3VtZShuZXh0KTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcg
eGVuX3N0b3JlX3RyKHZvaWQpDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVk
LmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgNCj4gaW5kZXggMWM5M2RhNzUyMjZlLi4zZjkz
NDFmMWY4MjcgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KPiArKysg
Yi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgNCj4gQEAgLTE3OTEsNiArMTc5MSwyNSBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNfbGF6eV9tbXVfbW9kZV9hY3RpdmUodm9pZCkNCj4gICANCj4g
ICAJcmV0dXJuIF9fdGFza19sYXp5X21tdV9tb2RlX2FjdGl2ZShjdXJyZW50KTsNCj4gICB9
DQo+ICsNCj4gKy8qKg0KPiArICogX190YXNrX2xhenlfbW11X21vZGVfcGF1c2VkKCkgLSBS
ZXR1cm4gYSB0YXNrJ3MgbGF6eSBNTVUgbW9kZSBwYXVzZSBzdGF0ZQ0KPiArICogQHRzazog
VGhlIHRhc2sgdG8gY2hlY2suDQo+ICsgKg0KPiArICogVGVzdCB3aGV0aGVyIEB0c2sgaGFz
IGl0cyBsYXp5IE1NVSBtb2RlIHN0YXRlIHNldCB0byBwYXVzZWQNCj4gKyAqIChpLmUuLCBw
YXVzZV9jb3VudCA+IDApLg0KPiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5k
ZWQgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBpbXBsZW1lbnQgdGhlIGxhenkgTU1VDQo+ICsg
KiBtb2RlOyBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgZnJvbSBnZW5lcmljIGNvZGUuDQo+ICsg
Kg0KPiArICogUmV0dXJuOiBXaGV0aGVyIHRhc2sgQHRzayBoYXMgcGF1c2VkIGxhenkgTU1V
IG1vZGUuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBfX3Rhc2tfbGF6eV9tbXVf
bW9kZV9wYXVzZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spDQo+ICt7DQo+ICsJc3RydWN0
IGxhenlfbW11X3N0YXRlICpzdGF0ZSA9ICZ0c2stPmxhenlfbW11X3N0YXRlOw0KPiArDQo+
ICsJcmV0dXJuIHN0YXRlLT5wYXVzZV9jb3VudCA+IDA7DQo+ICt9DQo+ICAgI2VuZGlmDQo+
ICAgDQo+ICAgZXh0ZXJuIHN0cnVjdCBwaWQgX19yY3UgKmNhZF9waWQ7DQpUaGFua3MgZm9y
IGZpbmRpbmcgdGhpcyBpc3N1ZS4NCg0KV2hpbGUgeW91ciBwYXRjaCBpcyBmaXhpbmcgdGhl
IHByb2JsZW0sIEknZCBwcmVmZXIgZml4aW5nIHRoZSByb290IGNhdXNlOg0KV2hlbiBzZXR0
aW5nIHVwIGEgbmV3IHN0cnVjdCB0YXNrX3N0cnVjdCwgdGhlIGluaXRpYWwgbGF6eV9tbXVf
c3RhdGUgc3RhdGUNCnNob3VsZCBiZSBpbml0aWFsaXplZCBhY2NvcmRpbmdseS4gVGhpcyB3
b3VsZCByZXF1aXJlIGFub3RoZXIgbGF6eV9tbXVfc3RhdGUNCmhvb2sgZm9yIGluaXRpYWxp
emluZyBpdCwgcHJvYmFibHkgdmlhIGEgc2ltcGxlIHN0YXRpY19jYWxsKCkuIFhlbiBjb3Vs
ZCB1c2UNCnRoYXQgZm9yIHNldHRpbmcgdGhlIHBhdXNlIGNvdW50IHRvIDEuDQoNCkF0IHRo
ZSBzYW1lIHRpbWUgX190YXNrX2xhenlfbW11X21vZGVfcmVzdW1lKCkgc2hvdWxkIHByb2Jh
Ymx5IFdBUk4oKSBpZg0KdGhlIHBhdXNlIGNvdW50IGlzIDAgYWxyZWFkeSBhbmQgTk9UIGRl
Y3JlbWVudCB0aGUgcGF1c2UgY291bnQuDQoNClRob3VnaHRzPw0KDQoNCkp1ZXJnZW4NCg==


--------------pqceB7wYf1PbgMBK47JtVF9K--

--------------LygJjHqW8pY12708uQxPxyDh
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrxlPYFAwAAAAAACgkQsN6d1ii/Ey+C
zAf+IuacIwk33LXPHoftfl7snVFyN5Q7BMLR80TJosfJZAumOx5J3AyjNQu2O1WQxt/3Ln2BQ2w/
0KFPi4ykhbUH2r6J3WJ7QlyrfhtgUn6ED8/blt8W6GEbQajKxPdp3pvJenl6o93Ll1Hpy/djSsqQ
V+juNZCZkIoypPtTBmsm2qic3GJD+50UNFTdwphguouL2OnVNxvsPjoaNafzxG5Ju+YAxkgNdGVI
+ZYKUJ33e7XjHsRXpPxspelM716xKXvCFxSBA+fY6rgJnY045p/tELoCX3rcy2dqK0oeh7fP2np8
JEVcmwXk3pSiCBNK/AK3HPqNn/uB9sVXrosM7y1msg==
=TfXG
-----END PGP SIGNATURE-----

--------------LygJjHqW8pY12708uQxPxyDh--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 09:49:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 09:49:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479745.1683656 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQM0Q-0004H4-AS; Mon, 09 Nov 2026 09:49:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479745.1683656; Mon, 09 Nov 2026 09:49:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQM0Q-0004Gx-5G; Mon, 09 Nov 2026 09:49:38 +0000
Received: by outflank-mailman (input) for mailman id 1479745;
 Mon, 09 Nov 2026 09:49:36 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQM0O-0004Gl-FK
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:49:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQM0N-00Ah2W-Js
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:49:35 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1972b-e002-0a2a0a5209dd-0a2a4507ec1e-14
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:49:35 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1972f-b4ea-0a2a45070019-d155dd2dddbe-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:49:35 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-492690dd5daso388199f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 01:49:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597748acbsm8848408f8f.44.2026.11.09.01.49.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 01:49:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794217775; x=1794822575; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=NIQ0JRDAE3/eD937wKB/SbmMc58744zQIh3zMqiopr4=;
        b=b6Dxz8HOk9+r3LfgcaB9Q6YiBQ8R5IYsVGJtHiKumqaI12iwnDICd0r+N3OxkfW3WL
         S0gO7ZA/SWzM+tXKv+zbeapil5h0P29Bng6/NkxxeXQ90OkVf/ghpLa5O/gOk6xFq70m
         FLMudLb2jWPz0/cuL0sn/AwXtPH9npml/TCsVAGx7/fRY2z+K6Ju8WLtRXYaVg11CHOp
         tehfGAWD6BrejqoiYQc1fQdipLmz+CSDCbV0csxIzPcJowG7peXFTqoBIq9zH+7FK11K
         iVi90fsLoxfLsdDpjmnwQ9zlzlrIMvCtDw2TisuqJqXdjD2zDeWhxoy9/LM+QuXpnDkZ
         Ay6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794217775; x=1794822575;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=NIQ0JRDAE3/eD937wKB/SbmMc58744zQIh3zMqiopr4=;
        b=PknETFXPaER+c1/uEVjq96eOx2Wa8T3IXJMFs/xu6ytVhn++nbvjF8BkRnWTV39gVt
         TURNt+Anmvj/C3Yf3UN/zZ+RbFvEV2yFE2SPRqM6bo0/8McINrmVuPYRSBpaJmylOcje
         WcHaM9bVEcniyT0yuaeUgaGqKIgKSxU9EA2VVKqB8K6FH81DFT6fCJ2oJQyNrC6P5uKi
         NJCQBZbWP9SXOf+7wRPaQg9mBn/Zuj1N2NUPbtUrSKE29O+4lbMPFFruKyUHvsRQIV3R
         qWQiSFC/Ja6hZ2r/MvEAsF0c36Nbb3AMH/X2OFXgPKjk1PruTFFWLmN1cLWU+Z/QYqz8
         PSGg==
X-Forwarded-Encrypted: i=1; AL+hErHIo5L4BgjP+0NSeUK9Us8lfbKAHBrUSjbbK0L5MpUbGZeV2WWnhWoIL/ioqvvEZAIji+zvcTz3gq8=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9LvZseJZ6Yzgajek2itXPzmHEHap/wpxle+mwQu6UIWe72orh/
	4ZSErxdDoHOr6k3/l7/05SRwWq5l5cw0L3bP/zLrSahjZtF8nf2cXS+7S51pI7jXBw==
X-Gm-Gg: AYBFou3PN0ltcTsxkC2Mv+EeYkAJVux6uFMZyjdD6AyaVR8cRY6kiHF4z+jaIGcm9WB
	oau9Wb3i538//0IsiuY2rwUjrBOT2rQ0nMachqjCLUY0EYjZ5ji9xW5OnclAJnHOFUqpm8YQRvL
	VPNRKZPS9MkRJ2/k/mVrOgQwct5U6aq0NkJz4zgwDbVXAQiQGDEG2o3iqoj0J/kaJJcQ3VxBStu
	cXf8h0TecsQ72kU5DIVuPZALAKkemh6KRp/Ec/RqwsfuIwuOUF7bIbyLtlHvDPm5kKAUQkaGcdJ
	V86+iKnQ7zBn6Y8QXinbqLjlPRqIKh77VNRRhhaU+gnK5tmZv2QOZ5Xn+MFinTdccL+ICajDMn9
	5+VtCcO8/0Vi0qofTRGYoaLyRLl7JFF8xrt+AEZIOFupxkE15JXkpIVWXwe9GGAnqRg1qNdmImK
	r1JLjc+Orb8b5YWb5UIzEqRqr0wzO1GtRazbRRdg0vnsS58Fj7Asfzn1iuaGlJaR3fClG3jmtKE
	1dIaK4vrb/OifNaYMaBg/+2paue2o6Mt5S8qizdjLMnLvBCsBuwC7cg5czUpQJ7l5zFU6Wrg1wm
	PPc1NodyMhDun3eViL5KZGZULIfspc8kiMqtVO2MIG3vxNjJ4xviCeEI9nEkqafrF+2CeNMKA3E
	XnLWlakbVKfDQ1Zk=
X-Received: by 2002:a5d:5e89:0:b0:48e:5cd4:aa60 with SMTP id ffacd0b85a97d-4958bbf18b2mr5854927f8f.42.1794217774892;
        Mon, 09 Nov 2026 01:49:34 -0800 (PST)
Message-ID: <7f2c4a93-5f3a-4bff-909e-50c73861600f@suse.com>
Date: Mon, 9 Nov 2026 10:49:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/svm: Cleanup vintr_t type
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>,
 Denis Mukhin <dmukhin@ford.com>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20261106235629.2799832-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261106235629.2799832-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1794217775-3C610AE4-FC5E9FAC/10/78276251493
X-purgate-type: spam
X-purgate-size: 3572

On 07.11.2026 00:56, Andrew Cooper wrote:
> From: Ross Lagerwall <ross.lagerwall@citrix.com>
> 
> Rearrange the union to drop the .fields infix, rename bytes to the more
> common raw, adjust types where appropriate, and simplify some names.
> Adjust the users accordingly.
> 
> No functional change intended.
> 
> Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
with a suggestion (below). Also - doesn't this now need your S-o-b as well?

> @@ -153,15 +153,14 @@ void asmlinkage svm_intr_assist(void)
>          intblk = hvm_interrupt_blocked(v, intack);
>  
>          /*
> -         * When vNMI is active, NMIs can be injected by setting vnmi_pending
> +         * When vNMI is active, NMIs can be injected by setting nmi_pending
>           * and hardware will deliver them at the next appropriate opportunity.
>           * Consider them not blocked, to avoid trying to open an NMI Window.
>           *
>           * Correctness here relies on the fact that all vNMI capable hardware
>           * has vGIF, and vGIF is always activated when appropriate.
>           */
> -        if ( intblk == hvm_intblk_nmi_iret &&
> -             vmcb->_vintr.fields.vnmi_enable )
> +        if ( intblk == hvm_intblk_nmi_iret && vmcb->_vintr.vnmi_en )
>              intblk = hvm_intblk_none;

In the comment, may I suggest to prefix nmi_pending with a dot, to clarify that
a struct/union field is meant?

> --- a/xen/arch/x86/hvm/svm/vmcb.h
> +++ b/xen/arch/x86/hvm/svm/vmcb.h
> @@ -328,28 +328,25 @@ typedef union {
>      uint64_t raw;
>  } intstat_t;
>  
> -typedef union
> -{
> -    u64 bytes;
> -    struct
> -    {
> -        u64 tpr:          8;
> -        u64 irq:          1;
> -        u64 vgif:         1;
> -        u64 :             1;
> -        u64 vnmi_pending: 1;
> -        u64 vnmi_blocking:1;
> -        u64 :             3;
> -        u64 prio:         4;
> -        u64 ign_tpr:      1;
> -        u64 rsvd1:        3;
> -        u64 intr_masking: 1;
> -        u64 vgif_enable:  1;
> -        u64 vnmi_enable:  1;
> -        u64 :             5;
> -        u64 vector:       8;
> -        u64 rsvd3:       24;
> -    } fields;
> +typedef union {
> +    struct {         /* Cleanbit 3 (TPR),  APM Name */
> +        uint8_t tpr;                /* c   V_TPR */
> +        bool    intr_pending:1;     /* c   V_IRQ */
> +        bool    gif:1;              /*     VGIF */
> +        bool    :1;
> +        bool    nmi_pending:1;      /* c   V_NMI */
> +        bool    nmi_blocked:1;      /* c   V_NMI_MASK */
> +        uint8_t :3;
> +        uint8_t intr_prio:4;        /* c   V_INTR_PRIO */
> +        bool    ign_tpr:1;          /* c   V_IGN_TPR */
> +        uint8_t :3;
> +        bool    vintr_masking:1;    /* c   V_INTR_MASKING */
> +        bool    vgif_en:1;          /*     VGIF_EN */
> +        bool    vnmi_en:1;          /*     V_NMI_ENABLE */
> +        uint8_t :5;
> +        uint8_t vector;             /* c   V_INTR_VECTOR */
> +    };
> +    uint64_t raw;
>  } vintr_t;

As said in reply to Ross'es v1 - imo uint8_t bitfields would better be
avoided; afaict there's no issue with using unsigned int there. (While
I'd like us to avoid such unnecessary uses of compiler extensions, I'm
also not going to insist here, as we have too many other instances of
this same pattern.)

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 10:00:02 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 10:00:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479751.1683663 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMAP-0006HR-40; Mon, 09 Nov 2026 09:59:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479751.1683663; Mon, 09 Nov 2026 09:59:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMAP-0006HK-1H; Mon, 09 Nov 2026 09:59:57 +0000
Received: by outflank-mailman (input) for mailman id 1479751;
 Mon, 09 Nov 2026 09:59:55 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQMAN-0006HE-Qk
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 09:59:55 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQMAM-003K9g-Ly
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:59:54 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af19993-bab6-0a2a0a5309dd-0a2a45038818-8
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:59:51 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af19997-fae8-0a2a45030019-d1558033c460-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 10:59:51 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a214af2076so4512585e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 01:59:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90619bc91sm121323215e9.2.2026.11.09.01.59.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 01:59:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794218391; x=1794823191; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=KvjvdDbYCdeQ0HZNZgTjFJLmJ5pUEROImuQmQcSe5+A=;
        b=ZwY7jrx4xBie/tA9fkYHU61j1e41FHK8gG/a0MipeToITJ8+HA6cPMWTBU+4+Bzwx2
         BMWEywTIiyO8iT898zhSsCDvgjwZjKhnQhzFJTaRAKn3hXXSeVkVrF01gCd5UzdCnMuC
         mBlcKWkUdIscL/mPLWB/I7oceQm5YRZD5rthSsYYwrNQb4jP5VM3YsGw+gWc6JDcv/VI
         xu1NT4Ts/s3+/4ygF1QI7V9fIY8vV9nFa53uwnY4ieOUpY+Vj2nrQiAws/ybDJvsxwey
         d2AhzdRYmlQSzxxG2KenP1bB7DISqgW81eu9yV+l9W92aMbw/CksWXmaFcZk5P9uqAfO
         XVfQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794218391; x=1794823191;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=KvjvdDbYCdeQ0HZNZgTjFJLmJ5pUEROImuQmQcSe5+A=;
        b=V/c4/SF4d3pE9HEIYNEnwCl9lNO9/L7F9fuZwA62OJrfG1kuR8mko+Z3Hw0sE0MeWa
         DPmDVgmfia44lqAh+9Ni2XN707i8u7IETGWhhVDw71jffgxR28X4xvgUbS4Yvb4UFHj/
         OYOrk9h2o9NUdQ7Dfp73Dwz5S7VzJtME7Q82ct+1d2Mn0iLqtORqmCN5WANRZ875/Y4x
         84fNXGqCb7cDfjAq9tnoS5+OyV7++AkaFuoYGC3jw10N1PQoIOOxsVCAwgytm294wagp
         AA/ZtG07dJ2oWxXh04f88cwZ9muMs2iaCT65jQ+TNkBqWbGgEbM2eEF7dPgGrDWU2TAl
         pHjA==
X-Forwarded-Encrypted: i=1; AL+hErGS6qCWKJUqlYVfCsgyy1HsKMEC+W8mQmsXWRoWlRW0UuosfS8ImuXW5arxHeUIS0qW6O7ok+HZE2g=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9+aSIvHGHrVXmWxfRXToP5kSPhXBaQYY9fkbPXdGrIbsw9HvLx
	GS1cVur8Ida+Omj6Sw+Tfd2U4lPNgAxrLJJF6DgzdTggIvKQf6t4oI5makmeN/DkGw==
X-Gm-Gg: AYBFou28KVYS1M0x/cPhR9XtqPdAJflJj8BiHaKs0BwktHsSAynYnWuNyQTEt3RykD3
	SaXHoxbXBIkx1MphOLWAw6UY1/LHSfjcCrF2o+tDDjftFfrzBzO6vZL6gf1owR7Fe47nGcTvO/x
	fRHMRlfzLUEr4KoNuppnJxCMyRk3RKEgYSpT6SYblzT/hIesDAcY99wnTTFccnNdiDmDSDZj7pa
	k20b2NP/Ko4Ynj5OpzCXnELsy6n50wWca1lb1P4PqB1xc181FhbWjU6ZwYxBj4cvyaJadUV+JIS
	F7XGb4t9mu6WYWSKGn1cPK9GTWlTzZRseU0tR4/gVgEUp8iLX0w5TiekbYz0bTBYWeuICyR+e5U
	TkHpaI+jhtN002S4dKZiGrOmr/JCHcjmZ03YLmFEMFiYR7wVT1cRO3Uw8K67j8sWEwo8P77pJN8
	xzZG/ffZNpxfyXT8GLzR5mPe2D9K51rfitwqUb6X6z1mAt/11Yylihf6IjXEpONT3MO6MqR/X7w
	Dnj6ap+6XsC5BK8z2p9K/XF1hm8i/RnsbzpxKbQjssoMTg7opEenVlR7Wl7fJVxt9YDh804k0hn
	OPL23J2cGP+qqJSWeZMDEWoro07z4GM8HiRegTMrxl3SWJSmpWC/68ZPM4yDn15yBZJTJw/hdsL
	alREqZ1QqFInLZkpn
X-Received: by 2002:a05:600c:3ba7:b0:4ab:c447:49df with SMTP id 5b1f17b1804b1-4b963c8571cmr75678155e9.23.1794218390951;
        Mon, 09 Nov 2026 01:59:50 -0800 (PST)
Message-ID: <922326b2-b48b-45be-83b7-c7831e6407aa@suse.com>
Date: Mon, 9 Nov 2026 10:59:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] vpci/header: empty the BAR range sets when
 modify_bars() fails
To: Stefano Stabellini <stefano.stabellini@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>,
 xen-devel@lists.xenproject.org
References: <20261107021442.253612-1-stefano.stabellini@amd.com>
 <20261107021442.253612-4-stefano.stabellini@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261107021442.253612-4-stefano.stabellini@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1794218391-776F34E9-DE5CB08F/10/78276251493
X-purgate-type: spam
X-purgate-size: 564

On 07.11.2026 03:14, Stefano Stabellini wrote:
> On error modify_bars() returned with the ranges already collected still
> in the per-BAR sets. The next request on the device then maps or unmaps
> them along with its own. Purge every set when collecting the ranges
> fails.

IOW the rangeset_is_empty() assertion would then trigger? May be worth
mentioning here.

> Fixes: 622bdd962822 ("vpci/header: handle p2m range sets per BAR")
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 10:11:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 10:11:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479761.1683673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMLG-00010l-1v; Mon, 09 Nov 2026 10:11:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479761.1683673; Mon, 09 Nov 2026 10:11:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMLF-00010e-VW; Mon, 09 Nov 2026 10:11:09 +0000
Received: by outflank-mailman (input) for mailman id 1479761;
 Mon, 09 Nov 2026 10:11:08 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <rppt@kernel.org>) id 1xQMLE-0000z9-JN
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:11:08 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQMLD-00AltO-LP
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:11:07 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <rppt@kernel.org>)
 id 6af19c39-2eae-0a2a0a5409dd-0a2a4503c19a-6
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:11:07 +0100
Received: from [172.105.4.254] (helo=tor.source.kernel.org)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <rppt@kernel.org>)
 id 6af19c3a-fae8-0a2a45030019-ac6904feb15c-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:11:07 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by tor.source.kernel.org (Postfix) with ESMTP id 8349D60D60;
 Mon,  9 Nov 2026 10:11:05 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CBB091F008A1;
 Mon,  9 Nov 2026 10:11:02 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:Cc:Subject:References:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1794219065;
	bh=wbzKLdeX4uvspnezn7DDebS2QYAphq0U5j3vCU9hkMY=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To;
	b=Yk3s3d9frEWJZPF2MxjOZchcesGfDugA5BuxyDVBmApifp1nrXdBpEzCpJH135Z6v
	 pGzHY0gQfwXYmSiHDmNGG3fWlgsrAVtTUjAgEKgTx+LSJq1LxyCnWmYQK598Fy7BNJ
	 mgdd5EvGuaW1u0OeZ1SxXFAJnBEWulBCMtEpZEE8NzIETSir8TkiU4PYPuX7zsN/cS
	 gvCwafWEipxdq2SZNqRTVIZMR4gtnUoPMtw8wUxI2SLTH0dYcSun490m/D2NhyjRMn
	 LUYAQV+T8Fotdet4iYmRu+ol0wEuPD/vicVi+vMhVpVwFJO7zx1mOW9LpqdhrBtznQ
	 HTzwwcKy85ODA==
Date: Mon, 9 Nov 2026 12:10:59 +0200
From: Mike Rapoport <rppt@kernel.org>
To: Juergen Gross <jgross@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	David Hildenbrand <david@kernel.org>,
	Vlastimil Babka <vbabka@kernel.org>, linux-mm@kvack.org,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] xen/events: replace __get_free_pages() with kmalloc()
Message-ID: <avGcM7xJfGpOQpVV@kernel.org>
References: <20261108-b4-xen-v1-1-76095f25cbf4@kernel.org>
 <7af392b9-0cf9-46fe-a820-c994942893fe@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <7af392b9-0cf9-46fe-a820-c994942893fe@suse.com>
X-purgate-ID: tlsNG-33051d/1794219067-6C4DF4E9-D8330A41/0/0
X-purgate-type: clean
X-purgate-size: 1299

On Mon, Nov 09, 2026 at 08:53:18AM +0100, Juergen Gross wrote:
> On 08.11.26 09:42, Mike Rapoport (Microsoft) wrote:
> > set_evtchn_to_irq() allocates a page for the event channel to IRQ
> > number software lookup table.
> > 
> > This buffer can be allocated with kmalloc() as there's nothing special
> > about it to go directly to the page allocator.
> > 
> > kmalloc() provides a better API that does not require ugly casts and
> > kfree() does not need to know the size of the freed object.
> > 
> > Performance difference between kmalloc() and __get_free_pages() is not
> > measurable as both allocators take an object/page from a per-CPU list for
> > fast path allocations.
> > 
> > For the slow path the performance is anyway determined by the amount of
> > reclaim involved rather than by what allocator is used.
> > 
> > Replace use of __get_free_pages() with kmalloc() and free_pages() with
> > kfree().
> > 
> > Link: https://lore.kernel.org/all/635405e4-9423-4a25-a6e7-e03c8ea0bcbe@redhat.com
> > Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> 
> Shouldn't you also replace __get_free_page() in xen_init_IRQ()? I don't see
> why this is being omitted.

Just an overlook, will send v2 with this too. 
 
> Juergen

-- 
Sincerely yours,
Mike.


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 10:18:48 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 10:18:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479767.1683681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMSa-0001hN-RG; Mon, 09 Nov 2026 10:18:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479767.1683681; Mon, 09 Nov 2026 10:18:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMSa-0001hG-O0; Mon, 09 Nov 2026 10:18:44 +0000
Received: by outflank-mailman (input) for mailman id 1479767;
 Mon, 09 Nov 2026 10:16:49 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julian@outer-limits.org>) id 1xQMQj-0001Xu-9D
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:16:49 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQMQi-006ww3-G6
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:16:48 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <julian@outer-limits.org>)
 id 6af19d8d-2eae-0a2a0a5409dd-0a2a4502a1ac-8
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:16:48 +0100
Received: from [85.215.255.51] (helo=mo4-p01-ob.smtp.rzone.de)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <julian@outer-limits.org>)
 id 6af19d8f-6ca4-0a2a45020019-55d7ff339679-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:16:48 +0100
Received: from [IPV6:2a01:cb15:80c6:e800:a9dd:2b53:f1aa:d3fa]
 by smtp.strato.de (RZmta 55.6.3 AUTH) with ESMTPSA id J82cde2A9AG7zog
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate);
 Mon, 9 Nov 2026 11:16:07 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=strato-dkim-0002 header.d=outer-limits.org header.i="@outer-limits.org" header.h="In-Reply-To:From:References:Cc:To:Subject:Date:Message-ID"; dkim=permerror header.s=strato-dkim-0003 header.d=outer-limits.org header.i="@outer-limits.org"
ARC-Seal: i=1; a=rsa-sha256; t=1794219368; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=Ly5CoXLr6I+bRApne+yZ5VfYEOur9JERXKloz51nArrfXuODkvcUiBvwjOb0RJqqAr
    y+6zx/tmpuX7jHH2pt1+vR4i94Ff/5k0FgtLYVirrIFegnTjkMsvu7bZ56w5UQHmyeDq
    9sRGuKrIVOVSrAhNjANUgeRDFOkCPNKxiV3NBc06yhroqUm7C7gJ+x0zkMrBYCxkvg4R
    KDzGvZ6NNzkbjmJL6WWXjy53zb9WGUlf73B9oTJ6ZpmtIThVGK0Y04dU9xlrvEDWJUWM
    82QNdxK0b/YdFohRzHG8LEidG7z8TmicoOGLi+ZUiZwJwFLGXwgLr1NNSLc9LzJTY1yt
    PObQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1794219368;
    s=strato-dkim-0002; d=strato.com;
    h=In-Reply-To:From:References:Cc:To:Subject:Date:Message-ID:Cc:Date:
    From:Subject:Sender;
    bh=z1tFFIkKDjY4xYW1PtNGBh62gyp6wCd07sTLJtfhRp4=;
    b=iBV54vo/NoN5wM2xVSGV7GLBiw6NcCypt1BkXWz6mix97Uk+SPHYnqvSTND229WaDB
    zsNAkvxcwnNXir7xfPyu3Z5c11udVYMb4lGVynjkpQeAyLC6p4pCEh9YSatNRBqVTgOg
    o1JAKJ9vJhq1ld7fN8ufKePFHZP8ttZn/E5zQ70H+FJmIBTYiE6cWlrMXTifZoUFENtV
    LkWCnP/+emJ8F9hpqAn5lDjPYAT/Iu8SvVD89k9H6LxK/Sj5sIGVghw6X9vDyQW8aWnA
    HI6HmezT7fdCv9LtEYWXd2zAUYev/r/HOb6boG97XgTSMSuSL6lg9Jfe/uzwYyIboNpy
    X2Jw==
ARC-Authentication-Results: i=1; strato.com;
    arc=none;
    dkim=none
X-RZG-CLASS-ID: mo01
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1794219368;
    s=strato-dkim-0002; d=outer-limits.org;
    h=In-Reply-To:From:References:Cc:To:Subject:Date:Message-ID:Cc:Date:
    From:Subject:Sender;
    bh=z1tFFIkKDjY4xYW1PtNGBh62gyp6wCd07sTLJtfhRp4=;
    b=c3hOmrgvGDecahsWsm645sNDdaO5/OJpe12xwJq+HYZyd1rPjkCiWCQJsgPaMcvlth
    P17D35QMNCtyjk7ouQzNMvYetISiLcYvXgalbSgP/0VIkOM/mUNXYUosXnIoKbMlgoL7
    PuokefaNNzc8TTN8dPUZw1bpF6yRkDhSlzQC60q5Y/XanEbf3K25LvJF3laRFmpf0HRG
    rMny347h5gqf2+Ug9NWeK+SseZXn2L78Q8bM3ku63Lk+669/6YqvXg+FapTGOEPS3Keq
    VRWxZnhecvOF9XEy1o+mT4Bp1jE32qoHvrU2xjEpHrPTF/+lJTqzLR+SmD88O7TJCSIY
    n2kg==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1794219368;
    s=strato-dkim-0003; d=outer-limits.org;
    h=In-Reply-To:From:References:Cc:To:Subject:Date:Message-ID:Cc:Date:
    From:Subject:Sender;
    bh=z1tFFIkKDjY4xYW1PtNGBh62gyp6wCd07sTLJtfhRp4=;
    b=KJ3gWpH+1bvC7YaM6TF17cqLSRMT6xMJYpxHEcv8J5cR8v8i9HB5JD+IH106OKz2eO
    fk3Ep5OzEYdfV+GbjJBQ==
X-RZG-AUTH: ":JnkIfEGmW/AMJS6HttH4FbRVwc4dHlPLCp4e/IoHo8zEMMHAgwTfqBFXdk1Z5IDmIqDY7xpnOs6mGD64frXxHtrE3e66udIGwZnWwLgga9o="
Message-ID: <1fb98f79-183c-4144-aaac-45a437ff2d32@outer-limits.org>
Date: Mon, 9 Nov 2026 11:16:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] Re-raise irq_work lost during Xen suspend
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 Juergen Gross <jgross@suse.com>, Thomas Gleixner <tglx@kernel.org>,
 Peter Zijlstra <peterz@infradead.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
 Jiayuan Chen <jiayuan.chen@linux.dev>,
 "Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
 "Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
 Adrian Hunter <adrian.hunter@intel.com>
References: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
 <20261106153647.F7ld02De@linutronix.de>
Content-Language: en-US
From: Julian Vetter <julian@outer-limits.org>
In-Reply-To: <20261106153647.F7ld02De@linutronix.de>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1794219408-F26B72AC-514F1DFB/0/0
X-purgate-type: clean
X-purgate-size: 2713

On 11/6/26 4:39 PM, Sebastian Andrzej Siewior wrote:
> On 2026-11-06 15:57:40 [+0100], Julian Vetter wrote:
>> We hit this issue with an Ubuntu 26.04 cloudimage guests (7.0 based
>> kernel with the 8250 as an nbcon console) on XCP-ng 8.3 / Xen 4.17. With
>> a kernel commandline adding two consoles, i.e., 'console=ttyS1
>> console=ttyS0'. During a live migration on that setup the printk()s from
>> gnttab_resume() and xen_irq_resume() queue nbcon_irq_work while the APIC
>> is disabled. Thus the list transitions from empty to non-empty, but
>> doesn't receive the IPI to empty the list again. Afterwards the list
>> stays non-empty, so the IPI never fires and all irq_work piles up.
>>
>> The Commit 560f4deda327 ("printk/nbcon: Change nbcon_irq_work to
>> IRQ_WORK_LAZY") removed this particular issue because declaring the IRQ
>> work to be lazy, causes the timer interrupt to trigger the irq work
>> instead. But any other non-lazy irq_work queued in that window is still
>> lost the same way and will cause the list to fill up without being
>> handled.
> 
> Adrian has this:
>     https://lore.kernel.org/all/20261102074039.26983-2-adrian.hunter@intel.com/
> 
> I sort of asked for flush on suspend but Adrian pointed out the NMI
> problem.

Thanks, I missed that. It is the same issue, just a different trigger. 
Adrian's example even ends in the same hung task we see 
(fsnotify_mark_destroy_workfn waiting on SRCU). Also, Adrian's 
syscore_resume() placement would cover the Xen case as well, as 
xen_suspend() calls syscore_resume() after those printk()s.

> 
> Looking at #1, you could probably limit it to a nop on
> !arch_irq_work_has_interrupt(). The tick should not be disabled if
> irq_work_needs_cpu() returns true (you don't add anything).
> 

Yes, right, the lazy part is pointless.

> And lazy items get handled via irq_work_tick() anyway. This make me
> think if it gets any easier if we handle both in irq_work_tick(). On x86
> raised_list is evaluated anyway so by dropping
> arch_irq_work_has_interrupt() we would avoid the APIC check and handle
> list in this rare case. If the IRQ-work is working then the list remains
> empty.
> 

This is maybe a cleaner solution, it needs no APIC access and no call 
site in the suspend paths. But irq_work_needs_cpu() would need the same 
change, otherwise in a CONFIG_NOHZ=y setting an idle CPU would still sit 
on the work until it leaves idle and re-enables the timer tick, no? I 
will test this.

>> Signed-off-by: Julian Vetter <julian.vetter@vates.tech>
> 
> Sebastian
> 

(Sorry, sending from my personal address, my work mail server currently 
mangles mails to the list.)

Julian


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 10:19:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 10:19:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479788.1683692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMTN-0002IB-8g; Mon, 09 Nov 2026 10:19:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479788.1683692; Mon, 09 Nov 2026 10:19:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMTN-0002I2-4q; Mon, 09 Nov 2026 10:19:33 +0000
Received: by outflank-mailman (input) for mailman id 1479788;
 Mon, 09 Nov 2026 10:19:32 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQMTM-0002Hn-FJ
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:19:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQMTL-00AJ3E-SK
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:19:31 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af19e2e-2eae-0a2a0a5409dd-0a2a450baac8-36
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:19:31 +0100
Received: from [209.85.221.49] (helo=mail-wr1-f49.google.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af19e33-b7e8-0a2a450b0019-d155dd31e164-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:19:31 +0100
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-48dee593f18so376808f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 02:19:31 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597748acbsm9003085f8f.44.2026.11.09.02.19.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 02:19:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794219571; x=1794824371; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=GRrrDTvUaBKsTIfCV752eLshkQpUDjLWqiZyrQou2Ck=;
        b=z0TcmJISrJT5Sit3U2K82oeeeGL7xxsnl1tBoGMjT4xpTuNRQ1phl9rQwJPpbBbTKZ
         K68hEa2qyH4Iu2U8GrtoAUqm9ggGZOgEry6L+Vby5KNrWy+KvNl2ZyaZ9qdoVm5rYxfq
         LpF6QgK3vvrxoDX6NGFv3zZ/tsZnNVUbCaM7m/M0RpMaJUMeh3F0+DfsJk1EuMVL+cgs
         OOH2dBAuVbEh/OU5DTzvMts+JU84igzP9JCBZCP4+C/KxwIoqomL3e56VwBWxGIe/WzQ
         YuGWn+bYFYQXtJFHu1LangJSR00z32LiBjo+hSP6VGaIW8gdRW5ujGGAVrR6gqXKSSA4
         gZzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794219571; x=1794824371;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=GRrrDTvUaBKsTIfCV752eLshkQpUDjLWqiZyrQou2Ck=;
        b=KCMVaa8JgcZ6OQK6f3Im1pxnLsJfUFGPdZGI3XOxRpA754/92e5HYgt6QLgKMdb2DD
         MPUklwjtwJ+YU8TUDtzzNiZCVvFKts1HHN93Sxq1d7cpgLXpqTsn/YpstAzckGzJ+Cuv
         YWPvUfC8JtFouM0IzXGWNb5X/4AAxwhtdGWtchfZKAzHLV5PSuJ4Vx+FWWsZeMeDCXzn
         +ObBHUG4YBfjTYW8qkyiHoT3/PjSeratnidPx1PCtDA/cYyvbl4k2T3wG/UWaCi6SY9k
         cAkojE4dXVf6TCY5qXn/2bFEpx75g6zJ/WI8Y3tChUXj+O5RPJWbEpEfBnsPLMEjJLNO
         TRwg==
X-Gm-Message-State: APuU4Z92TKkFTduqHWNkVSrn78wqT45c/kiCcnX/CrJai0gHF/+R3xE3
	YLmsE444dz5x1970Qoe5Bb68YW50qbsuRv7H29cuBO2SngdB6wJfcItz
X-Gm-Gg: AYBFou0kFVqcg7ITGG9S8bDRnKn1ZFjZQ5TuBQs/OV/uQ3wID6L9HZn5YIYok/MGE+E
	iUgGkE9B07ZG+JuMgU6lA1uUICv3IxdualiPcKUfTzSD5A1W9aYxRjubQcpSZFfPYzEQngrAOjR
	tLW9UA0aSozi0AgPnQcZ5iD6cS9IslRXuozUnuPaqPZszq2G5nXMqNN3gSiiX5OcQ6b0uxcy4Om
	E67NVl+E5iS2RiJM60DwX1TSNWVrq6nVXM9SvbhenHH5zDOpZXPRWIpI5/lrxyQjZSsJT7InoaL
	TZnNjtL6K3I+XGMZ4x6pw7b6yLlurNtrN467PhCy9N+982W0huYiMhj+JEsIsjEpkQ7JAlzVz71
	ifg2iM2NTB1S+RMU3aYnwXmBly2Ky4l1yHViNca9g8Q55JJOe+xSYjWLS42ZYmFkTe2LgydwRLf
	t/MwIIKt+hBRUUkBzmhUccpZ5rvjsJfhTxiw+xPAMkzLTJLjSlP0UL67F2mULYpIn1PjePdYSIZ
	M+IycMDHaEEbDg/su0x2W39QqjqtAaFACcLEA6of96sTfSSlp7AomJMGtiaeEJZJveLYUcSkpBE
	JN9S9pWHpXhGlu2dmAF5+xOdSjY/iyQ7CdaRPJP+nhePYeFuiWa3VmfgPYXgDLDvFhBzA3yrOSZ
	A
X-Received: by 2002:a05:6000:22c4:b0:48e:69ff:ba36 with SMTP id ffacd0b85a97d-4958ab9e6ecmr8173894f8f.28.1794219571093;
        Mon, 09 Nov 2026 02:19:31 -0800 (PST)
Message-ID: <294b2a3f-ba42-4e04-afa1-ee56ffe7133b@gmail.com>
Date: Mon, 9 Nov 2026 11:19:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/39] xen/riscv: remap interrupts to new IMSIC VS-file
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <45011daea86267b8f4b707bc7de6357b0712fb08.1790779209.git.oleksii.kurochko@gmail.com>
 <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
 <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
 <1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1794219571-ABCD79EA-87852335/10/73395122804
X-purgate-type: spam
X-purgate-size: 4450



On 11/6/26 2:26 PM, Baptiste Le Duc wrote:
> On 2026-11-05 17:57 +0100, Oleksii Kurochko wrote:
>> [ ... 52 lines skipped ... ]
>>
>>> At this point vgein_assign()
>>> is still BUG_ON("unimplemented") too, so none of the new code can
>>> actually run, and the error path can't be reviewed against the real
>>> vgein_release().
>>>
>>> Also, until "introduce IMSIC h/w interrupt file attaching to vcpu", no
>>> vCPU ever owns a h/w file, so imsic_migrate_vcpu() can only hit the
>>> CPU_NONE check.
>>>
>>> Wouldn't it be simpler to move the two already-acked patches and the
>>> attach first, so that no stubs are needed and each migration step is
>>> written against its real callees when it lands:
>>> - Add basic VGEIN management for AIA guests (real vgein_assign() and
>>>     vgein_release(); the reason for the explicit cpu argument of
>>>     vgein_release() would then have to go into this commit message)
>>> - Map IMSIC interrupt file for vCPUs (real imsic_map_guest_file())
>>
>> I think I have such order before and it was changed becuase for locks in
>> the first patch it wasn't enough context to understand if they are
>> needed or not.
>>
>>> - Implement continue_new_vcpu() and set hstatus.VSXL
>>> - Attach a h/w interrupt file to a vCPU on its first run, introducing
>>>     imsic_vsfile_acquire() and imsic_update_state() with their first user
>>>     (acquire, vaplic_reconfigure_target(), set hstatus.VGEIN)
>>> - Prepare new IMSIC VS-file (on top of imsic_vsfile_acquire())
>>> - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
>>> - Remap interrupts to the new IMSIC VS-file (APLIC retarget + sync)
>>> - Save/clear old VS-file, restore, SGEI wake-up as today
>>>
>>> A side benefit: attach no longer has to be squeezed into the finished
>>> migration code, so imsic_vsfile_move() with its first_attach argument
>>> and the goto set_vgein go away. Attach stays a plain sequence, and
>>> imsic_migrate_vcpu() simply reuses imsic_vsfile_acquire().
>>
>> I'm fine with that order. It does mean that "add basic VGEIN management"
>> and "map IMSIC interrupt file for vCPUs" introduce functions whose first
>> user only comes with the attach patch a few patches later. If that's
>> acceptable, I'll add a post-commit note to each of them saying where the
>> functions get used (as IIUC, they will first introduced and then used in
>> later patches).
>>
> Yes, the post-commit notes are fine with me. IMO it's better to introduce
> the real functions before their first caller, even if that caller only
> lands a few patches later, than to write callers against stubs. That way
> each migration step is written against its real callees, and the order
> follows how IMSIC actually works: a vCPU gets a file on its first run,
> and only then can that file be migrated.
> 
> The locks in the VGEIN patch would then get a real user a few patches
> later (the attach patch), and that patch's commit message can explain
> why they are needed.
> 
> What do you think of something like this, after "introduce
> vaplic_reconfigure_target()"?
> 
> - Set the guest's XLEN explicitly in hstatus.VSXL (moved before
>    continue_new_vcpu(), with the vcpu_set_vsxl() call added to its stub,
>    so that no commit enters a guest with an undefined VSXL)
> - Implement continue_new_vcpu()
> - Add basic VGEIN management for AIA guests (acked; the commit message
>    would have to explain the explicit cpu argument of vgein_release())
> - Map IMSIC interrupt file for vCPUs (acked)
> - Attach a h/w interrupt file to a vCPU on its first run, introducing
>    imsic_vsfile_acquire() and imsic_update_state() with their first user
> === migration
> - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
> - Remap interrupts to the new IMSIC VS-file ("Prepare new IMSIC VS-file"
>    folded in, as with imsic_vsfile_acquire() already there it is reduced
>    to a single call)
> - Save and clear the old IMSIC VS-file on vCPU migration
> - Restore register state in the new IMSIC VS-file
> - Wake up a descheduled vCPU on a guest external interrupt (last, as it
>    arms HGEIE in imsic_migrate_vcpu() and clears it in
>    imsic_vsfile_local_read_clear())
> 
> But I'm not an expert in patch series management, so I may be wrong.

Let's see how it works. I'll try to reshuffle the patches as suggested.

Thanks for the suggestion!

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 10:41:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 10:41:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479810.1683700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMoQ-0006vr-U3; Mon, 09 Nov 2026 10:41:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479810.1683700; Mon, 09 Nov 2026 10:41:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQMoQ-0006vk-Qd; Mon, 09 Nov 2026 10:41:18 +0000
Received: by outflank-mailman (input) for mailman id 1479810;
 Mon, 09 Nov 2026 10:41:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQMoP-0006ve-Lx
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:41:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQMoO-00As3I-KC
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:41:16 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1a34c-bab6-0a2a0a5309dd-0a2a4502c0c6-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:41:16 +0100
Received: from [209.85.221.51] (helo=mail-wr1-f51.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1a34c-6ca4-0a2a45020019-d155dd33a573-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:41:16 +0100
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-490d59c3edaso526339f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 02:41:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597d0a775sm9991685f8f.55.2026.11.09.02.41.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 02:41:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794220876; x=1794825676; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ToXja2sZ7dAUHdFDTv2GMJU+gtBjMA5Pz/EhF94SgAo=;
        b=TXQXmGTWP+YzvYqDveX0LkTm8IOaDwMM0cvJGXIxEI/onzc22os535ZAdNbXUCB5Uw
         VvnWTg3aBDK0GgiexT+h7kGAZZyfBS9uAveaeHVOSugrI+1u5MkKbhjDrJcEUn5bUJ3n
         2hwAPZfA++FM8Jz+5jH+l7y+IXOKCkIiuEgze4ClQ1onsB2P6D/FT4Y4wVUJF70BdOgk
         xUdQRdcQRA35+CA4bf27K8Me4nYrUrN6rEfqi2HLQeTs8RFRgObqmE62wiJH0WH5jFsd
         TbbCNrs52vDbRPC2a9IEsxgd3XAbk6gkfkOSIdB9uURUm41WFv/J3USAvQhKCY8jW9Dq
         14Bg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794220876; x=1794825676;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ToXja2sZ7dAUHdFDTv2GMJU+gtBjMA5Pz/EhF94SgAo=;
        b=rqv1ULZquSqV1my34JP5K/DqTi78XxLPc8clEeKuzaWIQeDFCZqLImXEYb94z/71ZC
         QMzEbsoH5YhCrE/MhstIi6hljANq3fZxhRH5AjegL9PHJj3CoL1jB0WWOW47GC1avfO/
         X7Ns++zAY/nDJ2cn2/BuUGUZSThxLA7Fn4wASXaMMc90aXbSDyI1po0n2TXXjLBzAMIb
         P/QqIb4G+DRWxVK1+s0WTGIz//E8a+ntJN2hn2y1Pu4LlGt3N/Cvk8it+15yqZWLNMxr
         iSon7ig8td5eSq1S/Kjr5X0KwMc3tGq9Yp7DaWFohC9E/jqGAcyeFilQjHoQ4DXQZJ8H
         Htew==
X-Forwarded-Encrypted: i=1; AL+hErH9pQFXtiXgpgLK94ovFFBMKgYb7kqd8MVAUsV8TiM73zSrB5Y33iroEcL0xQOtsMAq4d45gE1txhk=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8oSgW3r+bZfQWXKK/j3Aagy9nv8G0iq8M/8Idk9TJx4+BUVXtK
	BSuqR8noDh81IhyB6kPkz6rbhlkEt0SD1RJe8KwhP9+y+d9k4F9plH/tHZ5WOGjW5A==
X-Gm-Gg: AYBFou22bhSU+HmZXKQbWAkPXRhrrOm9WGLrnVbMImJPS5UVj0obB2nWEMOJha6UcD8
	15mOXF9RldrFsoXg/Ftkvj3Ki4zdbLyN8zR1+HGSxTMmHHTQvDUim5fMSIVHmWKTKGMUn4fZmDW
	Sb1LlGrtr2ODMLJUpGmu1ICBV6c2khSFhbygXVNpJ5GD0ZFMA5t3PS0P2XetRkLcMAbI4lgLSRa
	g1ijFleOVTh6zM4PG7Y2kaGt0CSSwF67Hezse8vQFw/oYNnhbp966ouxvs2VD6xWzbxGrynt4EF
	ooiRghao0JNnvHhVpui984N8XEPy26NB3HthWfZr7Z3yxd7d6GUIl3e1ZUiVQogePNmSocxPzcL
	DcOhbTwMgP+W0SilJAInjd2P3we+4uQkvQbBC62eWJYB6RfQZ69HYKsDIJZrv1V4ePllRkqHlb3
	RPfFHzyL8jIfmQ5QmjrhJjjKvcnIMW07HVa633atjc+vvWoWABq+Z0d89YouiLUZp1vmSLafoLZ
	6wspA4qc59nHk8Q8eYFDqNZKlNxJm34g9LN87+q+aqrJX40Wjogly2ogiGBRd4y7ZLYkN7Waz9O
	mftO3djPXC3COn5DZyfXFYygxLpKZS3zGjGlSeHOVHzusQLzdc+sMluVl4ubYexL3ENEDggi3hc
	tWz5ZMY8nBWoV6bLJfxMDRfIOBSA+nGVnHWN1
X-Received: by 2002:a5d:5d83:0:b0:492:aff5:da60 with SMTP id ffacd0b85a97d-494233d76c0mr12316623f8f.13.1794220875986;
        Mon, 09 Nov 2026 02:41:15 -0800 (PST)
Message-ID: <35487f47-c5f2-4847-aec4-e4f0d9fbb0c4@suse.com>
Date: Mon, 9 Nov 2026 11:41:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH RFC] x86/hvm: Disallow modifying the APIC_ID register
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Denis Mukhin <dmukhin@ford.com>, Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261106201426.2785335-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261106201426.2785335-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1794220876-F30B02AC-CDF462D7/10/78276251493
X-purgate-type: spam
X-purgate-size: 2076

On 06.11.2026 21:14, Andrew Cooper wrote:
> The APIC_ID register is strictly read-only in x2APIC mode.  In xAPIC mode,
> both Intel and AMD document the read-only-ness as being implementation
> dependent.
> 
> In practice, for Intel it's read-only on any x2APIC-capable hardware (Nehalem
> and later, so almost two decades now).  For AMD, the register is writeable but
> doing so trucates the 32bit x2APIC ID, so in practice nothing (not even the
> firmware) does modify it.
> 
> Just as we disallow changing the LAPIC base for ease of supporting APIC
> virtualisation extentions, ignore guest writes to the APIC_ID in xAPIC mode.
> 
> Note, this still allows the toolstack to configure APIC IDs, for migration and
> topology reasons.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Roger Pau Monné <roger@xenproject.org>
> CC: Teddy Astie <teddy.astie@vates.tech>
> CC: Jason Andryuk <jason.andryuk@amd.com>
> CC: Denis Mukhin <dmukhin@ford.com>
> CC: Ross Lagerwall <ross.lagerwall@citrix.com>
> 
> This patch is from 2019.  I apparently never got as far as sending it...
> 
> This is even lower risk than disallowing changing the xAPIC MMIO window.
> There's been no comment or issue with that restriction, which has been in
> place since 2018.
> 
> It is however RFC.
> 
>  * Without this APIC_ID restriction, we need to modify the logical id table in
>    response to changes, including disabling AVIC domain-wide if the guest sets
>    a layout which can't be expressed.  Intel have gained a similar table with
>    their IPI Virt capability on SPR and later.
> 
>  * Both Intel and AMD allow writes to the APIC_ID to be accelerated, and give
>    a trap VMExit after the backing page has been updated.  So if we're going
>    to enforce this restriction then we need the VMExit to undo the
>    modification.

IOW the patch as sent is incomplete?

If we're to undo the prior change, that would include undoing the truncation
you describe earlier on?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479819.1683712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNI4-0003Mu-8S; Mon, 09 Nov 2026 11:11:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479819.1683712; Mon, 09 Nov 2026 11:11:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNI4-0003Mn-5X; Mon, 09 Nov 2026 11:11:56 +0000
Received: by outflank-mailman (input) for mailman id 1479819;
 Mon, 09 Nov 2026 10:56:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <adrian.hunter@intel.com>) id 1xQN3J-0000TZ-8O
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 10:56:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQN3H-00AubP-VV
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:56:40 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <adrian.hunter@intel.com>)
 id 6af1a6dc-bab6-0a2a0a5309dd-0a2a4509848c-20
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:56:38 +0100
Received: from [192.198.163.19] (helo=mgamail.intel.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <adrian.hunter@intel.com>)
 id 6af1a6e4-be1a-0a2a45090019-c0c6a3134dd1-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:56:37 +0100
Received: from fmviesa005.fm.intel.com ([10.60.135.145])
 by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 09 Nov 2026 02:56:35 -0800
Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25])
 by fmviesa005.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 09 Nov 2026 02:56:33 -0800
Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by
 ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.56; Mon, 9 Nov 2026 02:56:33 -0800
Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by
 ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.56 via Frontend Transport; Mon, 9 Nov 2026 02:56:33 -0800
Received: from BL0PR03CU003.outbound.protection.outlook.com (52.101.53.44) by
 edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.2562.56; Mon, 9 Nov 2026 02:56:33 -0800
Received: from IA1PR11MB7198.namprd11.prod.outlook.com (2603:10b6:208:419::15)
 by SA3PR11MB808482.namprd11.prod.outlook.com (2603:10b6:806:531::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 10:56:30 +0000
Received: from IA1PR11MB7198.namprd11.prod.outlook.com
 ([fe80::2c4e:e92a:4fa:a456]) by IA1PR11MB7198.namprd11.prod.outlook.com
 ([fe80::2c4e:e92a:4fa:a456%3]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 10:56:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=Intel header.d=intel.com header.i="@intel.com" header.h="Message-ID:Date:Subject:To:CC:References:From:In-Reply-To:Content-Transfer-Encoding:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1794221798; x=1825757798;
  h=message-id:date:subject:to:cc:references:from:
   in-reply-to:content-transfer-encoding:mime-version;
  bh=6VBrqZQpBQIXXvy3A/LPC7a0K2IqQpWQF65E3C6VhnQ=;
  b=hYEQ3dFXXEYvk7J4gDIaj3xuOEmVUoNgCsrgiRtkfeKSAZZ3d9vnJr4V
   G8fhscKdcbtMXxI+wH8w5CJhExp7ub970Y4gprIU26yZIaFRpDEoQYc71
   InswIqmjjHIZl5CrG2PTPfj4/3Chy19crKt7uIq/uLMB3dVhIWG01Cd+P
   tpWGDR0+bVYdLTfsdMZMzOqeZwhZnTq5g2sJ4bB+Tl20gEXk8jaP/aKYs
   qrLVggVJVBvqJ0RNk1D74OEqY2ISEdkWHZCnmHERycsNnHsJ9XJ5cnvo9
   hzwRBr33aNWnrNIX5gqHg73M7+b/4cu+eFowffyuDFmNh0E419LNz4c4e
   w==;
X-CSE-ConnectionGUID: dJQ3ZKuYQr+3Fcb74ZFcng==
X-CSE-MsgGUID: tJ2ZcM5SSKODA0ZTaiZ/cw==
X-IronPort-AV: E=McAfee;i="6800,10657,11960"; a="3041210"
X-IronPort-AV: E=Sophos;i="6.27,203,1787036400"; 
   d="scan'208";a="3041210"
X-CSE-ConnectionGUID: WjVLyzxjTCK45oof/cLhrA==
X-CSE-MsgGUID: t8IFhQY3SO21ZKQzG1OO+A==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.27,203,1787036400"; 
   d="scan'208";a="7965064"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BRTDbiqSC8sF1oVwksSD+KVKU6Tn7BhEhaKpHC/zUJhyLSEnD46MnqWZDh3yKPUgEghUKgg3UKjaWsT8b8hudqYpUUNV/bmK1MFYvWHNcWzzyxOLLJP4vTGoaQKc3CtWAtttxFJFEoHcvC3sqsMgRj9yPLu95U/o/beijsDALIf4bm6JpMTuc0rlBUlVqxmKDo/YaKlYKWO8socM29qjniEC61X0Hx1BHuvO+pISWXVtBCnh5oZcKPrXAwanAgNmSf7i/B9avAGuKZzEOrjFpViiSV+n1zvjk3FmLLNVMAY80FE2Vsx9e+cUln/LJPyPFgKTgLL+q1Csv1RDCQ60eQ==
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=hLjh2ebqVRecYq4ErdEQJ/8VN9902OXgFX9pKINPgG4=;
 b=fEYj7X0tVf45VzHCalQUah41sINPECtva1a8rAKv24w9xXdkrI13t/5/xGj2r+5PdhvnvHsWIoUi0HI5kubDxUCH3zKT7X1PQ1nEetIy4WOVXCIBd5oRnFRtq15UzwNqE64J7p36yk+bmhD+Tk0zFrSHg+cFySYdN8ES9tbRNizSTMrnM3iwFfU5EVHjOL3saY8HN4R/l5qIOKnGpVr0wjQI0IJ9KAdXcH7lgmvxJ6Z6pSlm2+1EQzFn1rK1xlnTht69OGXrEha7UimbV+CGbg+Fq3e2bwgcwhsAnk1DoSXmw/zOtY51miwdhYV2Ga05LaLoUumBxP2eIseLQ/ptVA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;
 dkim=pass header.d=intel.com; arc=none
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=intel.com;
Message-ID: <d52e1070-be5d-4367-b9d2-d79bbe9a4c8e@intel.com>
Date: Mon, 9 Nov 2026 12:56:24 +0200
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] Re-raise irq_work lost during Xen suspend
To: Julian Vetter <julian@outer-limits.org>, Sebastian Andrzej Siewior
	<bigeasy@linutronix.de>
CC: <xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>, "Juergen
 Gross" <jgross@suse.com>, Thomas Gleixner <tglx@kernel.org>, Peter Zijlstra
	<peterz@infradead.org>, Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Mathieu Desnoyers
	<mathieu.desnoyers@efficios.com>, Jiayuan Chen <jiayuan.chen@linux.dev>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>, "Vineeth Pillai (Google)"
	<vineeth@bitbyteword.org>
References: <1793977074.8631fc262581453bbf619ec5b2062170.1a1b15dc430000403d@vates.tech>
 <20261106153647.F7ld02De@linutronix.de>
 <1fb98f79-183c-4144-aaac-45a437ff2d32@outer-limits.org>
Content-Language: en-US
From: Adrian Hunter <adrian.hunter@intel.com>
Organization: Intel Finland Oy, Registered Address: c/o Alberga Business Park,
 6 krs, Bertel Jungin Aukio 5, 02600 Espoo, Business Identity Code: 0357606 -
 4, Domiciled in Helsinki
In-Reply-To: <1fb98f79-183c-4144-aaac-45a437ff2d32@outer-limits.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: DU2P250CA0025.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:10:231::30) To IA1PR11MB7198.namprd11.prod.outlook.com
 (2603:10b6:208:419::15)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: IA1PR11MB7198:EE_|SA3PR11MB808482:EE_
X-MS-Office365-Filtering-Correlation-Id: 22ec45d8-34a3-4bc1-697e-08df3e501be9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|23010399003|10067099003|5023799004|11063799006|4143699003|56012099006|261021121427099003|261022105027099003|261009223027099003|261026140227099003|261028144727099003|261026121527099003|261102123227099003|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info: UKS6TwpZ6dC/Qh4uA8kCBF4hN5JWHQ+OXbulc6rJYje1EsPHGG945GhPUzIFcBx5QXF3Pr7H3wbFyiltLf1G+rtGofEFNdh5j5LMbfkguH5+++c1HVfAFUy2f+lvBcnFQPUGja/+WU8/uqQWtErV2AGkiQMZuZ8ISGrh7JwpfNlBXBYgd53kva2WzKrjjfZ3WIgnNBCRVfCzfuJCuzWoZlxG/4SzD5mG1RPxXBgKBVYLjyPLVDHk9E0OT5T6ejYvYCn6p0M4ybvAug4OfeQJx+i6Vo1Zia6ApAHQDmxEZHj2BbCdlm8dTExw9ln4EJ90RAV6O3ODMFWe4vLDTdNhvae/74l+pwWdVaiVTM789bucSqBbmHehQ2+JBuIW/u9rh/DiShWiFQqmitLWwAZeD0mha0nNvRJ8lLUXKQynxOqzUthLNd/Qcl4uFbtI6ezjzLG/aP+aFw7Gt+hVXX/n7ZU/zS2mwxmpLT6myw2g2rvLHE74buAXLv+HNtVbfPCGJITmaYsc8KE+aMjb5nYjzuuZlUY6PJEndy11Wft8nUlRLdDK3o6w27G/CPN1JSXcdHsAuONLDYpaEU8MBoZ4zQ57myKaNnqi4Jxia0tdsAAfG49iZ/DrKPoEZUXjE+n+p71pN+phP7nNo4NYQ9NYy0rbhjvd5er7FVDxEjlhTHs=
X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA1PR11MB7198.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(23010399003)(10067099003)(5023799004)(11063799006)(4143699003)(56012099006)(261021121427099003)(261022105027099003)(261009223027099003)(261026140227099003)(261028144727099003)(261026121527099003)(261102123227099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dVBteHdrd1BoRTkwN2szaXBxaXJmQnN0WlUvL0k5bFl0OWJ2MnVvSHcySDFD?=
 =?utf-8?B?Q0hINmQwL0F0OHdxSDIrWkdRaEdHamFaTDlSazd4anBndTF4clozYUQ3MjBr?=
 =?utf-8?B?V0dMT3A5Mk5uaUwyOU5lTFVQZ3FpZXp1NThvVFhZeGJVeGpabUxxcmtBaUFG?=
 =?utf-8?B?TFZjTDduQ09LZ0NOWVR0LzFoUVYwdno4NVlJYXRHNXl1SmVpMXZ1WDcxcGdm?=
 =?utf-8?B?OFdKZmxtVTlmY01rT1MyZWJLVjUyMkFHQ0xIbEtOeVlmRkQzRkhGWWRuSWtM?=
 =?utf-8?B?NVJNczA2cWdONXhSMXE0UUhHYUlUdGtiN0E3cTNaRUM4ZUZoTVAwSzg1VGdH?=
 =?utf-8?B?S3ZoNDYrSEUyOXRlLzRhbGhwQk9WM0JnRmJGaHhFcnRUVHdYUGZwMnNka0VR?=
 =?utf-8?B?ZEtvaUNCUlpJWG5jVUpqeUx6K3Q0Z1dMdXY5T1lmK2FzMnQva2w2TEZ0Yld4?=
 =?utf-8?B?cnVoOWdZVHVRR3VBMXM3UHZCdDZsRUJTazVHUFJuNm12VGN1UjlpVlBxQ1hK?=
 =?utf-8?B?VDhCSkVIbkErV29SQTVjVlBudnJoenZaL0xaTFlrODFyZEZqVlhkb1ovZWJI?=
 =?utf-8?B?dDcrY2t4SXpwYmhBNVhrU3gzMER4RTdwRFFaZC9UZHZMQ2xUcWxlTWVRSW91?=
 =?utf-8?B?SEJVbVJVNSs4d2dpamwyem1ldUNUMmEzMUpSb0FPK1RsV1UyWkF5T3prOHJB?=
 =?utf-8?B?RHE3Rlpxd1o0YWJNeExIZW0rUkUyWkNBTDRKUUtBODRTdEdWY2VHcE1FeTNZ?=
 =?utf-8?B?NkZ6WXVWbGxsZ2NRQ3VNT3dCNWpONWxVNDdwUEswU1FIN0wvdGV1MnQwY3lk?=
 =?utf-8?B?N2NLblBpL3dzVkwwMWNkYjhYYTNJTVIrN1NBZVpRS0JaT0wrZmdaczVReVdK?=
 =?utf-8?B?OXhvYVRCUmM2WS9yQTVBUElrblNZUkpZZ0dSZjZJZ1JUVHJHcUFYdlNFK1A4?=
 =?utf-8?B?ZnhKM3FXbVZiVTd3Qm5nRm9rK3F6akxydHJ2WVhMNVBSUUs2VGpLMmF1VXlK?=
 =?utf-8?B?WHRzSlNESHlhczUrSHM5djB0UzltcUJ2blZidlFZL2twNDB3Y0pHckVVbnhC?=
 =?utf-8?B?Mm5HcC9QM0REcTdSYVlBNVZhZjNjQWZQdXdKRmVFdFRYdnk3c3lyV0lDU3RI?=
 =?utf-8?B?V1huTEV1THVaWnFoOE1KcklFSEJ6YnIydXB5YWtINXhNS2dDbXZSeUNCUCs3?=
 =?utf-8?B?cmpxK3B2eGNEaE0xTFNjWVlGdGtmbkVrTGJjdmkvNkxmQlNYcVRyUHNBcVRO?=
 =?utf-8?B?KytFRXFyUzAxd0hXR2RXb3hqMVU4TVZTZlZ6ZENneVp2YXB0VFI0QzRPNkd5?=
 =?utf-8?B?MDh4SDFyalVIVkNPalRDSWJHK2s3T0JzdEJvUGtkcGVMVlZNTVNhV1BKdzJB?=
 =?utf-8?B?STdkSEx6eFhiYllibXJzRWhIY3VDT2ZtNmkrQkNuUDY5aWNHNEhzaFUxMnZU?=
 =?utf-8?B?QTdzRFdzRE1HSWVua29Kc2puRE9lTDE5elFQYTJ6ZlRmVU8yZmQyNkJ2ZWpw?=
 =?utf-8?B?TGQzUHNQYzA1VFYzeFdST3M0bnJpVzRvUWJ0Q2szdGRPMXJtYTIyRnFDU3VU?=
 =?utf-8?B?TVRuZ0FKMTluVUZXTzV2dFdteG9kbllDMmhqUnFiL3QxUnAvTUFKZC8weDZL?=
 =?utf-8?B?emp0L0pXOEh2NXBRVW53NFhUVnZkUmpmSUJVajJPMk1jWFNZZnRNOWc4ZjR0?=
 =?utf-8?B?ckFlOFM5S2ZuYlFBS1c3MTg2Q2JiK3kreXVnTEtSdUtBVkEvaHh1SlFWRUtq?=
 =?utf-8?B?SUxjRUQ5MUhhdWFnRFozMENQOU1aMExVYzhEaWdHdmViNmtZR1lUZW9mUnZ5?=
 =?utf-8?B?eWZOYmtlTUM3aDdGeXlDeWd0WFZFN1lLcXp1Y2xuc0lrN0xVbVhwNUJnMmJV?=
 =?utf-8?B?WjhMNXBhWHlrMUF5emdYSHdIa3ZTTG4wbm5hbVlVdUVVSnNucmJNc25KSGFh?=
 =?utf-8?B?djNySjI3eDN1bE43N2JEc1YyRXJDZDBzU0p6bHMvc3B6NkhlS3hrMFVmdmJN?=
 =?utf-8?B?WlpOV2xwdG1Cb3lsaXlNWWtuNUttdTEzNHZUZDB0dlZISjdqdTdYeDlwWFZl?=
 =?utf-8?B?enVwOERrRmdsT2FQNDZzQmNOVUxSK0F4QTF4V0VyazdaYWdIZzhFOTUxRCtl?=
 =?utf-8?B?UlMvSHYyUjFtRUdTcHplT3ZqcTZlV1cyclo2NjVQeTNGaFBMNDNNL2NuN1Bn?=
 =?utf-8?B?eXZKWVMyR3h6T2ZMSWMyQk9TZWMwWFN4cE5GRytDVGRKaTNqTVRob1VsYjc5?=
 =?utf-8?B?anFkNWxWWUlwTGU3cW5nKzFIdlY4bFpqS2dad1lSTUNzbUtNL05BR3N5TnJB?=
 =?utf-8?B?YlJHdFdPRk1zdy8yZlZKaWxyT1NPa3NyeTFGN3lxVXVsWUwrOWdPUEJxd0xJ?=
 =?utf-8?Q?oAMXvfBNusIkJfHk=3D?=
X-Exchange-RoutingPolicyChecked: qaI61NWoDPuVCF/xyq9w3Ob2HXK5+rfc3MFD45R9I3HVu1T/53hrLWgZpxXbw93DXZTlKD/EMCQtWYozNyWNouQyJdYmwb1FAHTS+KkKsMwFpv73M86l4JPEplfdUYkJ4Mt6TM/SyvloB0x8/8f+Sx1RTxOQ3dkrbRmuevAUuqdqa7qRflvFQXsQE7hQfFc7yetfeHKGQKufV/nRHt4Z+jxgsE/Nayjqeqz+aGchNjcluHFDBqn/MXk9N5bJME9UJ/5er1sNlmpp6V0rNiR8tvu0/gFHA/EPjAjhzvMOpOCZOuCXLf81SyQYm9xT/GBFLbq3SLn/w0/8hnYxhdA4Tw==
X-MS-Exchange-CrossTenant-Network-Message-Id: 22ec45d8-34a3-4bc1-697e-08df3e501be9
X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB7198.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 10:56:29.9202
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 2j4lxZYqMb84wAtdKyqxUPAKqtXREe9VVDNsOZx2XV9hHZ+JaCYJgtNn3PG5vSpEUdotiOFVGxVaUqkqhZBYtA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB808482
X-OriginatorOrg: intel.com
X-purgate-ID: tlsNG-bad1c0/1794221798-FC212034-6531F55E/0/0
X-purgate-type: clean
X-purgate-size: 1159

On 09/11/2026 12:16, Julian Vetter wrote:
> On 11/6/26 4:39 PM, Sebastian Andrzej Siewior wrote:
>>
>> Looking at #1, you could probably limit it to a nop on
>> !arch_irq_work_has_interrupt(). The tick should not be disabled if
>> irq_work_needs_cpu() returns true (you don't add anything).
>>
> 
> Yes, right, the lazy part is pointless.
> 
>> And lazy items get handled via irq_work_tick() anyway. This make me
>> think if it gets any easier if we handle both in irq_work_tick(). On x86
>> raised_list is evaluated anyway so by dropping
>> arch_irq_work_has_interrupt() we would avoid the APIC check and handle
>> list in this rare case. If the IRQ-work is working then the list remains
>> empty.
>>
> 
> This is maybe a cleaner solution, it needs no APIC access and no call site in the suspend paths. But irq_work_needs_cpu() would need the same change, otherwise in a CONFIG_NOHZ=y setting an idle CPU would still sit on the work until it leaves idle and re-enables the timer tick, no? I will test this.

A fix for stable is needed, so need to check that there is no
irq_work that would have a problem running in the tick context.



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479828.1683721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIx-0003qU-LK; Mon, 09 Nov 2026 11:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479828.1683721; Mon, 09 Nov 2026 11:12:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIx-0003qN-Id; Mon, 09 Nov 2026 11:12:51 +0000
Received: by outflank-mailman (input) for mailman id 1479828;
 Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIv-0003pv-UG
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIv-003aoG-3d
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aaa3-e002-0a2a0a5209dd-0a2a4507d888-24
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [52.101.83.89]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab0-b4ea-0a2a45070019-34655359e23e-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:47 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=d+SyKMeyqwGTum1O25e0NBhMXJNCn4T/JeiR5zqL2V9omk2ggceBE13OygDR8R7HqjFZS/aExBYy13Y9wcQllwCHX9QmvNHvRF7ZNmE8S6s0kEv5424VjXdJ/s7juUbghuNfBquAl2za0TivoDKv3/rNYWhGmoqlNBB0ajbpoiUb+GlzwQJSuhxAFq43MeNlMAkM8ehsF5Swbc6IQNwHZzEVD3UCDrD++7+zAIFD/BiUuAjBoDjt10uXEMH8Ahq4xlv/bv/7s3clujmqhCFDtirF+tx441n7f8AlhdTnMmmsY1W/PCjOyghxiVavUw6ikdz2iY0jwprURAUxMHy66g==
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=WEUJK0n0r4jFVIg24kf1eT1auDpZUOkBBLTVjRAU6ko=;
 b=wxL1rbObf3Or5Euvht8NPAhzt2vBWARAr5qD0wasgdAQdUfq4pwl3hTxIV+/Cheju7ghxcowSA7AfIP7i+LB2xr2WWXFUXX5HPJHRpJZ+ExEy69CzLkns/j6LdFrY0EXXNDJDQJuOQzPyUPqPuMoHjf4KhlrsB+L3EFAiL8JWEsyX5lWmngm54A03p9xg3GOGv4YdV9hEIs577MDFaHCDQQHBLofe8/oRk6R/OTFhEf7caEL0z9J7sHkjNutswN/mTPG/O2oxx16tG3LjiD7nC3D+5EqY9jKf5hUk0rHr+A/d9erAHjLRSw+8P54L2/Fx8KqS140MmD4RP1Cn6XJYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WEUJK0n0r4jFVIg24kf1eT1auDpZUOkBBLTVjRAU6ko=;
 b=hQ1mYDZx0oKZ9+OTWWGU3DfgkhwuhJ1K9a/CApd2/F7w5BXn96XoC1mw+D5Ik59D1He7VcdVDGd5jetIKvSnpUKKQC7G5uaHs7KtV/9VvHBAd2ywPsntd/egtBkeKYdo9COYvvVUg9WNUW1VectVeNhGxp4DnLz9uDunWnzUY6slwujZMG6zNta6yHVZvyU9yCpw3MEJC4I7+XmXYK+f7eVL/aTItnIH3qIzU4gpbIZp5Ym2NTUTFO3xkZDJG5wr4/DBSWJL0Yk85w1GU+fU3zIjcZRXOv092LsOYPeV5wyQFxwURT7zKvK3h+Tc+bENg4FAqOYKk7NXxdeu/QuwSg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Jan Beulich <jbeulich@suse.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Anthony PERARD
	<anthony.perard@vates.tech>, "Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v11 0/6] Implement CPU hotplug on Arm
Thread-Topic: [PATCH v11 0/6] Implement CPU hotplug on Arm
Thread-Index: AQHdcDs/VyoaD8po20CRDf6/YgiIPQ==
Date: Mon, 9 Nov 2026 11:12:46 +0000
Message-ID: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: 9f2e45d9-81f6-40f6-63d9-08df3e526257
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|7416014|18002099003|6133799003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261022075727099003|261021123027099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 oBCYA1vKO3YiZyl8G4NpFUvkAhon65uF2hRqjWhX/GMmq9fo0HN0QzD6gLlJyXVyjnuMmYizfdSShGrUtrusQfeMSlVguLQjMKaDz8Ft/gDvXbGv5QNldA0Si0/kkLtBg5SM8Xh6Z69DU/2fxnoht4H13qVDnx+mx7f3y/rfbaP9HYcfRMC61x+7sdoZDEPRseSQ7cn0nv94+C+J6u/6yxJeBdtB8QR/Zt3Lh3FgB5b04DsHrBfii57TrD4yI+Wq9bqJvN3vGkRZNixIU+H/1VZFfUZqZM1EHA15/5DYU86k7UOFeRR88BT3MMqAxxVPopm3F00uJA71vcnFmtHllg9YmtQaz1qO8ki9yxrAqPLMxNPvJRV2LBKyf9YtPW2SxWAWsdtbUFIgbaww8QKXS5W0cVCDZh6DmZ2SI5CYo3mjwXaMQfk2JHS1UAm1aHyi6UHIPXumvxLnM7CjGSHGq2GhXTFSrTQnqzgTBbHVE5xAm1qut4Tt+9eKEKbN4+dKo7z0WiU+JIG/rXiAQx4Q4IIz8BhO5m2b7wjL+8sbQfHnIsMJU6B5DQvEWNTcA6mYSruKeqoY6jrISi6Pqnvz5TFizR2lY1hVmo/OitvmEastlNm4HdV2Ew00aCxrrzkg6EtQ+VRlWPVGZ6FGivzVWxcDb7pZ1PCFwWHcllCHfkUa+HcWePIe/RfoKpFxgtm45IAJVuJmOL+GFkj78Qr63U/6wk6dpaY5N9nNfqW54Z8=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(7416014)(18002099003)(6133799003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261022075727099003)(261021123027099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?7gdOG4FJGtmgzq7GTQEg4GMauONJUtSfBYuMn/iFIv3C0dy5NoFl6jS8XH?=
 =?iso-8859-1?Q?X470On2NYGUtRbtaCu6gOegmuGcaFCSP5Z5yLGxSPKxsvHwpYR0jtGbG8H?=
 =?iso-8859-1?Q?6TokW3XQWRyQD0f3T/riuuVqQr0my6OutfQdirlKPy/io2e2MNK1h+IpIV?=
 =?iso-8859-1?Q?KJ6zt6sQDyiz2ftQYsILgFoDFvQJLbaF9gExlJyrDVEix8PaVOqrGoEY07?=
 =?iso-8859-1?Q?n9X2625qkAC+Gz1QX8t3BzTdgzV2b/htSRAQ0p6j+XpUFyAyE3UH3p2PEY?=
 =?iso-8859-1?Q?RkDz8Vxy5Fif5U8PApQMC+RU7ySv3YiCxNrohIF+lvGg3/FTan6yy2dWg+?=
 =?iso-8859-1?Q?GAm+/z2nKHsd3aLRuj94rCtXHPDpvQ1tXdod28w1ll0VqWYDwxAy/IbvGq?=
 =?iso-8859-1?Q?xGhOlTP20QRSDW5aGqcVei6oDwltXQKsxDb3ZBe0NAsJNP7drY7UdcsEuQ?=
 =?iso-8859-1?Q?kA9vQtFm+QHqFr3V37O+42eI8eMbK1KyJgb48ca5trMh7RYR/Ud8FvCKhd?=
 =?iso-8859-1?Q?XDravIH6TtB7wHsXRnbg6uZ49+PvetnCQMVRgZWm4CxnAqiM0e6kiTLUSW?=
 =?iso-8859-1?Q?x+kUvwbYg50LWGdEphhp0I/1E9vjmePfTn1PRd5X2HHKRUGgES2SqTLcPs?=
 =?iso-8859-1?Q?bsa94o2IW6sTTsqYYjdjD5TigDDRt6kvbQpltERV1s8C2i5KAAFlrQbm41?=
 =?iso-8859-1?Q?sgpCwuVOmcrVxGXteU95I2A4Asm93U+94bm3BCghHaVRXqNgpoO7PYs+m+?=
 =?iso-8859-1?Q?agTwiWwDRfYpkUs0Cca5okPhIvJLvlhMkrXYQgFXCK/f+pKxGcxeIGznfV?=
 =?iso-8859-1?Q?C6auQLiosNIHW9M0YQgUaLo4c0Zbe30KyruEl8OaYWtXMtaT3G9HoV8Jb5?=
 =?iso-8859-1?Q?DOANI/96DoV7RPD8Zg7oKwuj0AQYTd6JweTmDoCfuCqjvgcYzqZsSPzqLx?=
 =?iso-8859-1?Q?UqMOPrcoq0OC4KxLcmTuuxj5/uMjWxElPRGxMjaYQF0g1K/zloRzvultXI?=
 =?iso-8859-1?Q?KGxqF3ZIOwZvR8PH8a7eqlwP70DTg1KBjCsl82+t+OWvnTJ7XPWOe10JSz?=
 =?iso-8859-1?Q?1A/r3NudlN9vW6aI3LcgthbYGQsQdwlZaHnaeqZHYaZn8vpCyrxqcs9207?=
 =?iso-8859-1?Q?o1cUh07+8pDvREu/Ray78XQC+8ma0BqJDb46P3JW+mczvfDFVqn3TVibdI?=
 =?iso-8859-1?Q?l7ekXlR7wwah15c/a9a4JcHPgeWFprzXzp4rnv/s9Qu4iPKlnJwvOKqIdl?=
 =?iso-8859-1?Q?g1+RIYh/louX4GYlkXw7qfzBFGFpeSMwBoS5FMzIfLU761qIFlvu692X07?=
 =?iso-8859-1?Q?bgv7DoryFJXgk1FXp53PnPALorm8gXpDwFgIPmygK53fc+wOjViRS/CdOg?=
 =?iso-8859-1?Q?D3IseFC5SPVvJejsAFzxLOS4nQCUtf82RQZpDj6HvH2pOH1oWYrxsDzYxs?=
 =?iso-8859-1?Q?Y1KkBpGohBstNZTgRqUSxT3DIQEhuOIFcpT4KRJtz0hHpt5TkFuVg8wfV9?=
 =?iso-8859-1?Q?dyC9oxr4easwIYAHythOuvqLe/gBr0mmQdqS2U0J6TlZYn4JEGqQh32q7y?=
 =?iso-8859-1?Q?Iq+FjQH9m3nhEkTQsDMURpcD5HO6EYr5nJA9bo4uUqo+sVxXGDp8fsn+qV?=
 =?iso-8859-1?Q?+KqEJXUGT0nEHgx2sm+13QId7fXVenYrm8Gm+wTlj+Zfl3YmWG3/U9X0qX?=
 =?iso-8859-1?Q?jX90IcrajDg2bvZFtmFCVgzKN5uWBhZ5gJEUViPJiiIf5xsItZnMKColzZ?=
 =?iso-8859-1?Q?Msfj5zK4m4QguiGLA1CtSqHoxtrGlBDIGYFUvLRjbv2s548mLrhfsMMVsU?=
 =?iso-8859-1?Q?u+1f0+HViw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9f2e45d9-81f6-40f6-63d9-08df3e526257
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:46.7968
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: GkUU1Dlg3gFPLZX7wa6k1y4xUMGFnH8hl0nSNHVKz45Lg/F8cx1uhp3I2A9jLVFE4PMmIGEN0rc+mQEHREH49g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-ef75cf/1794222769-36AD8AE4-DB2EDCD9/0/0
X-purgate-type: clean
X-purgate-size: 2441

This series implements support for CPU hotplug/unplug on Arm. To achieve
this, several things need to be done:

1. XEN_SYSCTL_CPU_HOTPLUG_* calls implemented on Arm64.
2. Enabled building of xen-hptool.
3. Migration of irqs from dying CPUs implemented.

Tested on QEMU and R-Car Gen5 HW.

v10->v11:
* rebase
* see individual patches

v9->v10:
* rebase
* see individual patches

v8->v9:
* rebase
* see individual patches

v7->v8:
* see individual patches

v6->v7:
* new patch "Kconfig: Make cpu hotplug configurable

v5->v6:
* see individual patches

v4->v5:
* drop merged patches
* combine "smp: Move cpu_up/down helpers to common code" with=20
  "arm/sysctl: Implement cpu hotplug ops"
* see individual patches

v3->v4:
* add irq migration patches
* see individual patches

v2->v3:
* add docs

v1->v2:
* see individual patches

Mykyta Poturai (6):
  arm/irq: Keep track of irq affinities
  arm/irq: Migrate IRQs during CPU up/down operations
  Kconfig: Make cpu hotplug configurable
  arm/sysctl: Implement cpu hotplug ops
  tools: Allow building xen-hptool without CONFIG_MIGRATE
  docs: Document CPU hotplug

 docs/misc/cpu-hotplug.txt         | 102 +++++++++++
 tools/misc/Makefile               |   9 +-
 tools/misc/xen-hptool-x86.c       | 278 ++++++++++++++++++++++++++++
 tools/misc/xen-hptool.c           | 293 ++----------------------------
 tools/misc/xen-hptool.h           |  15 ++
 xen/arch/arm/Kconfig              |   1 +
 xen/arch/arm/gic-vgic.c           |   2 +
 xen/arch/arm/irq.c                |  70 ++++++-
 xen/arch/arm/smp.c                |  11 ++
 xen/arch/arm/vgic.c               |  14 +-
 xen/arch/arm/vgic/vgic-mmio-v2.c  |  11 +-
 xen/arch/arm/vgic/vgic.c          |  21 ++-
 xen/arch/x86/Kconfig              |   1 +
 xen/arch/x86/include/asm/smp.h    |   3 -
 xen/arch/x86/platform_hypercall.c |  12 ++
 xen/arch/x86/smp.c                |  35 +---
 xen/arch/x86/sysctl.c             |  23 ++-
 xen/common/Kconfig                |  11 ++
 xen/common/smp.c                  |  35 ++++
 xen/common/sysctl.c               |  32 ++++
 xen/include/xen/smp.h             |   6 +
 xen/xsm/flask/hooks.c             |   2 +-
 22 files changed, 647 insertions(+), 340 deletions(-)
 create mode 100644 docs/misc/cpu-hotplug.txt
 create mode 100644 tools/misc/xen-hptool-x86.c
 create mode 100644 tools/misc/xen-hptool.h

--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479829.1683728 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIx-0003t5-Uk; Mon, 09 Nov 2026 11:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479829.1683728; Mon, 09 Nov 2026 11:12:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIx-0003sj-Ox; Mon, 09 Nov 2026 11:12:51 +0000
Received: by outflank-mailman (input) for mailman id 1479829;
 Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIw-0003pw-0v
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIv-003aoG-Dn
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aaa3-e002-0a2a0a5209dd-0a2a4507d888-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [52.101.83.89]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab0-b4ea-0a2a45070019-34655359e23e-4
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:47 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=p4F96I7HoE3qiYwvjhqs1CtNkn5bNwMg43C0oK1lTPlYZzxXWfBy9BwkD3m+FYAOK0kaZGGobbz2rPC/SuyAnA5AaEiHE+6FraUrhIlGSYAgCiOU5ahCTL+UEOXRkixRd3Pq6UC3GiSm77rPWqENVqd8kJttlvN2eDV/cmExIqQMccDe8GQmYVvSclLt8VVPwSgYebCZfpfCFrfqrvXgfIDYptWIE/qqAQGP07Jydv/4FxJgWFmxh0LqzhoPvr359Zhge888oTEoVqLV8z6/HqesT4pVAolCQeuD+TSra7nnUo83diOorsHuHUdVOgg8Vhu9vbP+h7IFGWeXjq3xiA==
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=hPWsttjC1WUZeRXqCO/27twOSP1g+3ez+TabzjY7rwc=;
 b=b9s59zF7xGDrJMjACz8wzPQPcygY9kpPs9mhdYR58dEO5KFmIgeBK2Nda5e7/MvvKULeiYq1+E0a2P47H0rCFJ1yi9o4aE2WNLklb1+DYcxPCbRAd54+EeX+BWV8anLnRHxw5w6vSawuvp5R7U7KilmJ2PmMCoWuZP7chL/jpxf6DQ7qxkHvKAu05zzHGfV0ccPU7y+w/x4lcNGut3OTQ27Qdujk6g3f5emN9TEjqlvrewBXUxLkXbLoz2fTZyl/+LuubfDx1haY4jpOjMPWVW8KukfPRV0oabFH6HX+K/FWgQ2gJj9cFWU7IRyHa8UwnULaENI3k3igkbdfihhHxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hPWsttjC1WUZeRXqCO/27twOSP1g+3ez+TabzjY7rwc=;
 b=D8+amlDKgLOiuAgatNEWXCt9FYI7v89aHTYw+e34bmmafJxI9dvR3Ko1qKtlIB3XCfa0UfNYtz4t5Td3KZybISTRazDSTc5eZO5lijczkffwgFJvD4gJ26eoMiZr3WI5AFTJFYar5TvQPojvmvrWx3iph6FCb1mi4rTUCYIR2BhUF1hmLK0ui5Z4kFv/mUfZ3fpvTEVdO6hvD5gjGGyqyPlEp1En4Bs/6/A8eqlDhI7ejfu+X0XGq6B3UJz0vKoQHjCV/uUkf2IIDByoaMjfJUlLz3IaR/ZN61h9Efd1blGdtz3nME88GA3wuAdxegRYavG6lQO5MgboBDqjHyfAvg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v11 1/6] arm/irq: Keep track of irq affinities
Thread-Topic: [PATCH v11 1/6] arm/irq: Keep track of irq affinities
Thread-Index: AQHdcDtAju59FhkFYkKpO0VICO+n8g==
Date: Mon, 9 Nov 2026 11:12:47 +0000
Message-ID:
 <238164f06cb65244b1f55f9c9bd2347b62c07439.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: 6e6e427a-4d63-4794-042b-08df3e5262e2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261022075727099003|261021123027099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 iLK/STST+qfGhTcysm+ZQ8hN8Fe6gQQbxbo/fBwgUlGCrBc9p5YLNqGGFJh0fa+iEhi3NVfrZWpTXYH95DmdM4FdiU+VtA/8qpHxC+nvoxJgfzc3Sl71iahcM41Nde1cuXzs/foY0r0nA1iKQ9/VHzgZkKOcppkXWcRqjkrUFuWyuZyItS+WdEciz2TgH5/CpOC1obtbU76bx8IHzwXhHwuNK1RNESyPN96PuxZG8hcX7EOCJieQiAGc4w2GihULRJN2jav6yEenJSXQX1ANrCC5wIeCf0QbPgVixDYTGTlRGPEdUcj3kmHoKUT9hfOOv2iJZK+kQcLtEWj5CGU1MZtx2pdrq7/QNzlRM47p86NshY2vU/L0+qA+K5gJP8D7ldgKtO7hqLpa1xd3eaUwLrkZlot7kA9B9v3ZYkiy/x7WrJdypetoNgwiYlFNvOBYbhY3lnnCP82wd0JjnHrha3OkxbqRnaHZQwgsD4acwF2yBHbp9s/If5irSkUIQXRySYFE9k+13T7mw5XPbgNo1ItQS61v/8JpC6ZyioILejBN3969vHLixob7XhueLA9iCde6v/u/UEhhP0j6ivbYB4lr/xJEASi8qSQUCs9mRFQxUjHatxv5TKrDAB5Luyspkpn5L9zoAvho7r+o0ibBKyvEPMmUTW1lAFFm/dCg+W0v4Gu1QSjSg/bSPUuxU35+mkqesaNsEakiwyu6opIgv5f0cYQC5BGHq504RT44OKg=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261022075727099003)(261021123027099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?B+V8IYePtPfO/N33RobTPstmgLqpGa4S9+J928SPYsoPT6wX13OqrjIXpj?=
 =?iso-8859-1?Q?6h3jFkOQ3ox9KNIFYAC5Q6/iAabPZLzjcW7vPyBPeW0SnGLwvdIoRAFD6r?=
 =?iso-8859-1?Q?/omhMG3azWm3py/XE3Uhib0gRqS0AhLJQegtRCrtUR3v95tKeewKOi7lOI?=
 =?iso-8859-1?Q?1CNzmwyJi+fG9I+2Wrio9y7cvVMcp1jpyMdwqXZXtRBZb0mJuSWitgmt45?=
 =?iso-8859-1?Q?lqks1wTpzT3VlVa4/5AkXMip/cpYsS+JGqaCqbZMov0z03D8Z3Fb0KJYmp?=
 =?iso-8859-1?Q?ZknDsaQ5t0BqjW/nLaflNAwARpDreHSPjAwHIJcjqsSrsO074BE3GiYLfZ?=
 =?iso-8859-1?Q?mOUbuYOxrTkFs7ltrpIoq6Lv/9f2kafGTXbo9UiPQXOtvBJmSkGW7xoukC?=
 =?iso-8859-1?Q?p7T9NnAJ7Y2jc6vRs1hpCSrdR5YB61pngvZFJNxEet9u/VsfGDAt6/bRgB?=
 =?iso-8859-1?Q?r+OBpy6D7LXwaw4Agj7ep13k+ENm0Ue7gCrpncSOvHxrGeK5wV8gy0mCUL?=
 =?iso-8859-1?Q?1eLtUX+oy6AgqEVGtAzzlI1Pn/U+7nXXf0QOo7X9FTw7utE880pxOQ5zxm?=
 =?iso-8859-1?Q?/4vRntiQvjAyg2WjVcgSEF5ezO2Grcc0COFLqFL5qIGl6Aw5cW2vSmSc17?=
 =?iso-8859-1?Q?7lB7GaqTIlRCuNwny05Sme9RT+g7nYp0OiNU6MBcS/mvEV9SBc+5CtL6sx?=
 =?iso-8859-1?Q?WGMlGaxCA1Kh+gwYuvnWANSoqkvf0uOZUgipStJavOnvhqDwMkNc4+FH8j?=
 =?iso-8859-1?Q?S/etjCU7KdMsMMS4NSJKxiOp+2X2FKed3kQZcb6nhZ8SwuOjaSTQX+OHYy?=
 =?iso-8859-1?Q?xLwRGrWuHtUmV6+oA98c3/hK53fy3x6QXxlGhBs2fH7dmFKNrD7Y07YdxE?=
 =?iso-8859-1?Q?iIFmZE/3pMLUM/Va749N+obSmzxdOVSMoi5KpGX9QwLyc0hcyG3CMwy2JH?=
 =?iso-8859-1?Q?dWOD5yY61RRiqR9p8aUXCaQtmhy47isvTYUv/PKinS5diVQu17+MrEJBni?=
 =?iso-8859-1?Q?0s4vR7320XnZWjVdYweglgjRxPLPww5PCaSJe/QeUGn7o8BhP0A/QnQYnG?=
 =?iso-8859-1?Q?XOyc4jj2bnOIxGiOsHdVOsv/f1umjIbC4/JGpvnDWBqzVakNmgUVuc3S2y?=
 =?iso-8859-1?Q?jVj3x7w53qaBbT2RVTzI+qd8MR2OV3FTALTOW0Rhmcui54bqOsL1rZ7B4a?=
 =?iso-8859-1?Q?JbOs+0gbHpnZDdYQjLd1nvyaxxmnRPelaORfHNWU02dPOP4VwYAu2sp00d?=
 =?iso-8859-1?Q?eeJaysSPGG4RAXxy2IElYFyP+vwMXb9wGLOY3MAxikOPPR4KX+yigMxfIb?=
 =?iso-8859-1?Q?NHUULY5BZ9vl7aTvU92dmVih+gCY4CJp4PFJmh9BXi0LPBoJjPwbtSWgrL?=
 =?iso-8859-1?Q?yjxZZng+zO7G29vT6ndUJ0YoNH8ZJq3w/ZEvtqHn2h8aJ02649VBOelNL7?=
 =?iso-8859-1?Q?MjzLxwS2DgLvsnf9G1MwQBLNhq7KpKJeLX3wy4MvOJ3YtVkOo4rCM8GAeR?=
 =?iso-8859-1?Q?HpXZiZR5K0LbCX5tye5Rl6UphiW94ssgHU5aAGyVLixR9TFsXtDFh11leM?=
 =?iso-8859-1?Q?f8wqUWakbDrbmz5A/2lpGfwbkfpuNANWdWFgvvtJXV7I9ciaF5EbbDDgoG?=
 =?iso-8859-1?Q?O9t63qNe6i9cI4NNtVRBn3svdn3JnuTHpiqKsKFOy+FsO+7MafO0tqgmU1?=
 =?iso-8859-1?Q?qqUSJ2XwamvT5mq4l63Wf2e6o+yM+SgqGq6hzltJGlVDRJfKbzg9xfpfXP?=
 =?iso-8859-1?Q?64K92qs2I5qMPq3faeZ6HnqBR+b3m1QnOF48iD065pGfAPwForS6nUyHD2?=
 =?iso-8859-1?Q?ybYnt74iOg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6e6e427a-4d63-4794-042b-08df3e5262e2
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:47.5259
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 7ITjinC2m/UdQUN4AwcAqLK9XvlU9pu+wCVKP20okQFsj4w3Vr1KwL6cAVzENr7PI3Y+9zrU2ri3LP+/TVb3sA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-ef75cf/1794222769-368D9AE4-E68D35B3/0/0
X-purgate-type: clean
X-purgate-size: 7590

Currently on Arm the desc->affinity mask of an irq is never updated,
which makes it hard to know the actual affinity of an interrupt. Fix
this by updating the field in irq_set_affinity. Changing desc->affinity
requires desc->lock to be held, so add an assertion to ensure that
callers of irq_set_affinity are doing so correctly.

With desc->lock now being required for irq_set_affinity, add locking
around calls to it where it was missing.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

---
v10->v11:
* no changes
v9->v10:
* no changes
v8->v9:
* no changes
v7->v8:
* no changes
v6->v7:
* update commit message
* fix possible locking on null desc
* collect RBs

v5->v6:
* add missing locking around irq_set_affinity calls

v4->v5:
* add locking

v3->v4:
* patch introduced
---
 xen/arch/arm/gic-vgic.c          |  2 ++
 xen/arch/arm/irq.c               |  9 +++++++--
 xen/arch/arm/vgic.c              | 14 ++++++++++++--
 xen/arch/arm/vgic/vgic-mmio-v2.c | 11 +++++------
 xen/arch/arm/vgic/vgic.c         | 21 +++++++++++++--------
 5 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/xen/arch/arm/gic-vgic.c b/xen/arch/arm/gic-vgic.c
index fae80e6cd2..28ad4903b4 100644
--- a/xen/arch/arm/gic-vgic.c
+++ b/xen/arch/arm/gic-vgic.c
@@ -232,7 +232,9 @@ static void gic_update_one_lr(struct vcpu *v, int i)
             if ( test_bit(GIC_IRQ_GUEST_MIGRATING, &p->status) )
             {
                 struct vcpu *v_target =3D vgic_get_target_vcpu(v, irq);
+                spin_lock(&p->desc->lock);
                 irq_set_affinity(p->desc, cpumask_of(v_target->processor))=
;
+                spin_unlock(&p->desc->lock);
                 clear_bit(GIC_IRQ_GUEST_MIGRATING, &p->status);
             }
         }
diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
index 8d3517e761..594aaedd22 100644
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -224,10 +224,15 @@ static inline struct domain *irq_get_domain(struct ir=
q_desc *desc)
     return irq_get_guest_info(desc)->d;
 }
=20
+/* Must be called with desc->lock held */
 void irq_set_affinity(struct irq_desc *desc, const cpumask_t *mask)
 {
-    if ( desc !=3D NULL )
-        desc->handler->set_affinity(desc, mask);
+    if ( desc =3D=3D NULL )
+        return;
+
+    ASSERT(spin_is_locked(&desc->lock));
+    cpumask_copy(desc->affinity, mask);
+    desc->handler->set_affinity(desc, mask);
 }
=20
 int request_irq(unsigned int irq, unsigned int irqflags,
diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
index acded6a40f..53f36780d1 100644
--- a/xen/arch/arm/vgic.c
+++ b/xen/arch/arm/vgic.c
@@ -490,7 +490,9 @@ bool vgic_migrate_irq(struct vcpu *old, struct vcpu *ne=
w, unsigned int irq)
=20
     if ( list_empty(&p->inflight) )
     {
+        spin_lock(&p->desc->lock);
         irq_set_affinity(p->desc, cpumask_of(new->processor));
+        spin_unlock(&p->desc->lock);
         spin_unlock_irqrestore(&old->arch.vgic.lock, flags);
         return true;
     }
@@ -498,7 +500,9 @@ bool vgic_migrate_irq(struct vcpu *old, struct vcpu *ne=
w, unsigned int irq)
     if ( !list_empty(&p->lr_queue) )
     {
         vgic_remove_irq_from_queues(old, p);
+        spin_lock(&p->desc->lock);
         irq_set_affinity(p->desc, cpumask_of(new->processor));
+        spin_unlock(&p->desc->lock);
         spin_unlock_irqrestore(&old->arch.vgic.lock, flags);
         vgic_inject_irq(new->domain, new, irq, true);
         return true;
@@ -518,6 +522,7 @@ void arch_move_irqs(struct vcpu *v)
     struct domain *d =3D v->domain;
     struct pending_irq *p;
     struct vcpu *v_target;
+    unsigned long flags;
     int i;
=20
     /*
@@ -539,7 +544,13 @@ void arch_move_irqs(struct vcpu *v)
         p =3D irq_to_pending(v_target, virq);
=20
         if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s=
tatus) )
+        {
+            if ( !p->desc )
+                continue;
+            spin_lock_irqsave(&p->desc->lock, flags);
             irq_set_affinity(p->desc, cpu_mask);
+            spin_unlock_irqrestore(&p->desc->lock, flags);
+        }
     }
 }
=20
@@ -619,8 +630,8 @@ void vgic_enable_irqs(struct vcpu *v, uint32_t r, unsig=
ned int n)
         spin_unlock_irqrestore(&v_target->arch.vgic.lock, flags);
         if ( p->desc !=3D NULL )
         {
-            irq_set_affinity(p->desc, cpumask_of(v_target->processor));
             spin_lock_irqsave(&p->desc->lock, flags);
+            irq_set_affinity(p->desc, cpumask_of(v_target->processor));
             /*
              * The irq cannot be a PPI, we only support delivery of SPIs
              * to guests.
@@ -975,4 +986,3 @@ void vgic_check_inflight_irqs_pending(struct vcpu *v, u=
nsigned int rank, uint32_
  * indent-tabs-mode: nil
  * End:
  */
-
diff --git a/xen/arch/arm/vgic/vgic-mmio-v2.c b/xen/arch/arm/vgic/vgic-mmio=
-v2.c
index b7c2d7ce99..fc04741ca1 100644
--- a/xen/arch/arm/vgic/vgic-mmio-v2.c
+++ b/xen/arch/arm/vgic/vgic-mmio-v2.c
@@ -159,24 +159,23 @@ static void vgic_mmio_write_target(struct vcpu *vcpu,
     for ( i =3D 0; i < len; i++ )
     {
         struct vgic_irq *irq =3D vgic_get_irq(vcpu->domain, NULL, intid + =
i);
+        struct irq_desc *desc =3D irq_to_desc(irq->hwintid);
=20
-        spin_lock_irqsave(&irq->irq_lock, flags);
+        spin_lock_irqsave(&desc->lock, flags);
+        spin_lock(&irq->irq_lock);
=20
         irq->targets =3D (val >> (i * 8)) & cpu_mask;
         if ( irq->targets )
         {
             irq->target_vcpu =3D vcpu->domain->vcpu[ffs(irq->targets) - 1]=
;
             if ( irq->hw )
-            {
-                struct irq_desc *desc =3D irq_to_desc(irq->hwintid);
-
                 irq_set_affinity(desc, cpumask_of(irq->target_vcpu->proces=
sor));
-            }
         }
         else
             irq->target_vcpu =3D NULL;
=20
-        spin_unlock_irqrestore(&irq->irq_lock, flags);
+        spin_unlock(&irq->irq_lock);
+        spin_unlock_irqrestore(&desc->lock, flags);
         vgic_put_irq(vcpu->domain, irq);
     }
 }
diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c
index 84212bbefe..663fa16995 100644
--- a/xen/arch/arm/vgic/vgic.c
+++ b/xen/arch/arm/vgic/vgic.c
@@ -815,22 +815,27 @@ void arch_move_irqs(struct vcpu *v)
     {
         struct vgic_irq *irq =3D vgic_get_irq(d, NULL, i + VGIC_NR_PRIVATE=
_IRQS);
         unsigned long flags;
+        irq_desc_t *desc;
=20
         if ( !irq )
             continue;
=20
-        spin_lock_irqsave(&irq->irq_lock, flags);
-
-        /* Only hardware mapped vIRQs that are targeting this vCPU. */
-        if ( irq->hw && irq->target_vcpu =3D=3D v)
+        if ( !irq->hw )
         {
-            irq_desc_t *desc =3D irq_to_desc(irq->hwintid);
+            vgic_put_irq(d, irq);
+            continue;
+        }
=20
+        desc =3D irq_to_desc(irq->hwintid);
+        spin_lock_irqsave(&desc->lock, flags);
+        spin_lock(&irq->irq_lock);
+
+        /* Only hardware mapped vIRQs that are targeting this vCPU. */
+        if ( irq->target_vcpu =3D=3D v )
             irq_set_affinity(desc, cpumask_of(v->processor));
-        }
=20
-        spin_unlock_irqrestore(&irq->irq_lock, flags);
-        vgic_put_irq(d, irq);
+        spin_unlock(&irq->irq_lock);
+        spin_unlock_irqrestore(&desc->lock, flags);
     }
 }
=20
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479830.1683731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIy-0003wp-5H; Mon, 09 Nov 2026 11:12:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479830.1683731; Mon, 09 Nov 2026 11:12:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIx-0003vc-VF; Mon, 09 Nov 2026 11:12:51 +0000
Received: by outflank-mailman (input) for mailman id 1479830;
 Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIw-0003q3-Bk
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIv-003aoG-OM
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aaa3-e002-0a2a0a5209dd-0a2a4507d888-28
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from [52.101.83.89]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab0-b4ea-0a2a45070019-34655359e23e-5
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:48 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=ZG9agdtrGxAl5R+R1FGCbKbsoI3+XvDKh4uliVAG1Pv9cBFqFeODKJp6ya0KXoDcMMRqAsTOnAJse8l+/PAroXBk9xzEbDIykLDUweZf8cwYO4qoKvgfvBZbLX3un01rtQXqxBU9d4itME3H9eeK3NuIFQfckLKeCPG7lbUoBHvCEu2lu0p8GUjiVdn2Ufagf+kP1+BJXuPfxxnPCOqtrWlFR9tPdFs0zilqW8ntZ/nB0+6oV/zKnwzXpgqIZOH0QfF+BHFncU/6795CmQYKh6M4yCvvs1ICLS7InL96G6+yRRsnmRHYMJGUiWQ+3MEBsmPzHxd3XqgVEzv9ASJb4g==
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=pAgG82P6VpyxfFPWD1mBEHXFFH7gOBndQxAXp8hw3A8=;
 b=Iq3xp8tHSjA5PD5tsHm0Slbwx456QxYootPjTCvZgETqgnuQSgKw679maMglK88vnhESncFpOATgk4QpK0tN7bTyy3LW04tOBVQfZQPfRxHVuCrmRTVVdGLVs+YTbv0Ge036wDozuYpuWFOD8AhtjHEforMHnPGUEKwpFptbgn8qDHKdkqT2IPMCsCfCRmUE1XTk8KGVDiqa3tTJC9eoEK5/ouv6chg7mRwbeAH9MdhnbVtLNO/DepQbkzdHB4/FJhIQzi5MXcmP6ztPc/ut//c7yFXqAfxRnyydR5rAIb4iTXNEZq0QWb+S6iLMtL271JU9C3T9hbvsvE3AoNaQ4A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pAgG82P6VpyxfFPWD1mBEHXFFH7gOBndQxAXp8hw3A8=;
 b=PAoeKhx72clfmSsT+e5Kh0wJLKhU53QvTWXC2iIHR3pP9opr48/vcnT4ycmuZ+QCVC1s6oS26nC2RQ1kkQ8I/RJtcqGTQiUAIH5YajDw6TLK9lgNJxRe1uBbgPKUNYs/WcFp5kzkKyO6BRxOIRKuiX4L+N5bVsSguZZ8+VIlXpB1eEG5EoxXvEsvSPBqmUyji1+87wcH89SZZfcg1p1Ig4YrOq9vAN+yFww7FhWDUrDob9j+5d/BK5/sW7xWbF0U+ya4wV7NV7btinmxrmyBWIVLTNs5RR9TtW8WJ8UcqCgdu6KK/rhtlB+4DPSE5iOsSBWhWejBpsgooJmyZQYf7w==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
Subject: [PATCH v11 2/6] arm/irq: Migrate IRQs during CPU up/down operations
Thread-Topic: [PATCH v11 2/6] arm/irq: Migrate IRQs during CPU up/down
 operations
Thread-Index: AQHdcDtABYwI/ppPt0GzgWxLLvu3XQ==
Date: Mon, 9 Nov 2026 11:12:48 +0000
Message-ID:
 <2a7fa3ba892364b755049763d64646d146c692c8.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: 0cdd4148-6697-4ddd-4b70-08df3e52633c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261022075727099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 M/ioYeLeWH2NWgaZn8RY4fullVKpjLRF+OvdBCP9CIqf5G3RokMzIKaG1KVWqFi+6TNubL0Wuc0JKZzs8mvexAFoOP0llmieO0jPwtT+XdABJJKpxfNGSY54F8L8bkbpcKSE2x34JdrybnxH8s3q15iTTQv14prR62qom+6aPm7ycMqrgZUcDaSiEmwoD0dgYyovwM0YZMZ98QJx1DKwtEGBq/JRFEuRyF65i5ucHakus7Qad5PKVlDp96P4Gaxsl6wPUzhDhMEKP24BuG9v554pdKpUSVuDga906LLv89fbUflkZAjeJEB3eV8TwwfDGW/B4OlgReSNdLit2bKqKWcjVX690LRF77nbduT1mICqd24XU73naZ1VBJVnGjrRr7BMdevLeM5vOqhFR4dzD8kbfsmKRmxyGA4aoYawEcswhdOHIoGdQwyQhzuMG8GahcDTLzmzs5C3N3w0ynq0Avj32LullZUhjFTgLq9jhFfDjohJ60v2dV/UEPejMrxZzJkvwbYdK/H8eCYY16Sks9rogsA7i/2cqwWZLakVlHL9e3msT0g9NTtdUAThjS5pykkyE6izpPMOJ02Qi9kwH677kcbdl/w2WsHag/uiCjkFl9MKurgOQJbKxjys0j/AOwU4DLLcWSZltrUoRw/oe5UeDqiP5ICERMxv7Eh55bUQw8MZXe6TVHp53TYG726xpyS21XXGEz3rj6rUovR5yBIoPBDqEoxM8xnst2CJOwQ=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261022075727099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?piohtuZ0NOeEsnfNLqoOgydSR2s9ovh8wop3LFjiMX18I5j+u1tz/P/BQH?=
 =?iso-8859-1?Q?zFZQ1BRet/aHMw1xhH+7QLb0frAXgv5+eOVEf19+2bplyzWd/Yr8kmvZup?=
 =?iso-8859-1?Q?YsbQ8Zofyi8KL1cT9o0tjlrI+jKtkyJqQMNnNiXgHmaX6ZuNAUxwnhN8ai?=
 =?iso-8859-1?Q?tR0iyBc0k4sNckiNCWVAOaV5z/8I7TejGovcIb4St4y/1ZOvdz4V6kqNgd?=
 =?iso-8859-1?Q?QWXl/bwHpQ0KgKDoC5oXGD7OP3imuMyfXL+YAwl8BBmVusnbGS6638EQ50?=
 =?iso-8859-1?Q?h0IoJvfGymZ90xkdfTfwXO51OGMw6POY1MNOPZ55W7vsPXb3V2utUMjaWW?=
 =?iso-8859-1?Q?fB3jG7Yc2IJLKnLhWTb4mfYRnzNR918APAI/KksWq2oLtJp2XR91a0DRsu?=
 =?iso-8859-1?Q?lwsG9Jsdi/9JnGdevGz6MxP+P66sMZtb3E1mEfHHoA+62bA5hYNTeXk6B2?=
 =?iso-8859-1?Q?4Fb7qaAZeTJDPbMpCzK6emcm5cIrT6o8b3YR5onRprC/s03Bt1xvRGAL3c?=
 =?iso-8859-1?Q?q1a55vkPwtXB4f6+6PFqNWBXYUd3dl2ahji02nqK5Oi5ZykDhdhpwd70/3?=
 =?iso-8859-1?Q?xZjhVc3Qwx1CPhyZq7gdfmVscCukaHbODHpGgjMoq51AVIIUzyaWO2FSXW?=
 =?iso-8859-1?Q?ZdQabop2cihwqZpsDi/NG9mynNPIjqddQdCSu7zj8C+ZaeQc0BwDYSKps2?=
 =?iso-8859-1?Q?0fpO2ih+gc3yy/b/uR/pIL71XfvHFO07tm3xcxP13hXLj0SVDsBZ4mloGI?=
 =?iso-8859-1?Q?3yfLuz/5Ik1POrEAtvsPGQWgAahfnj90tSm5v26Q4CMvrWKKWVMWntXnnn?=
 =?iso-8859-1?Q?GgiNedZDhc1WJnB4WeFWgtmYq2DVoO57kV0tMrv2e7NZox3HbvPsKjQOFj?=
 =?iso-8859-1?Q?ypY8140Ysh6bY9WNaHhRLlpEwMcSMZkwo7JxI0/kuiSYXbNM5DV7ktmNsV?=
 =?iso-8859-1?Q?hnLLW5aZm2e8xI2XT4WGrzNlA/3YcHL+Bh+BMTj/6jQnaxRLgo6XYH+aXw?=
 =?iso-8859-1?Q?w6x6zqX2tHmKIqTdSrnuYBK1NY1ZhD12JPiASMvZt+gfaeiT7KoON9WEWt?=
 =?iso-8859-1?Q?J0x/nGsMjgo3yI4aYGn9xzeU/wPuMo1YkTfy3d8m8eOyTwIf06ctMp/gmx?=
 =?iso-8859-1?Q?sLoVmnUal5WJlCznPCr5A8Bwsn279b0R/6AF9UY1vDu65DGEilmg467tr9?=
 =?iso-8859-1?Q?MEB+IpiMDC9zp73f84qIyPVX3f2rukTXZFq/p7eGozx+hCClPQubMZxdZS?=
 =?iso-8859-1?Q?+6DPhP+z3lJkH5qhAISeckNkgYm+6urWwuMaaFK+EE3UXChwGZKSL66i90?=
 =?iso-8859-1?Q?2P+Flso0VTenfimFsfXuAUH3m9yKZe2FYk8MZIRiOXna0KfrcL18N2ZjA5?=
 =?iso-8859-1?Q?p+2GiOEFfWD+eqKDGWkZTWYLaEx0YX1wsGvARM++zK6WFiDReWAN+GrpW0?=
 =?iso-8859-1?Q?HEj9w9SDo/XqHerGPaWYycZxpv9K2ZrPG+1/4DRC5NPw5p//oCckt8CGt+?=
 =?iso-8859-1?Q?Sz6o9BdwqLSaJmlEbtRUvvxIDsHNZdT7rCfonac9hAQcAqm8bYYGPdpGFh?=
 =?iso-8859-1?Q?l2zfVvxUu5z/AiZqrm3uoISCUC4C3spqT36uEtMXL3Oaai2IjToN0erE/r?=
 =?iso-8859-1?Q?4zg5T5H8LCUKlG+2UtOjtecmnqGyYqeDzvjOmkATWjZNEpzoGW57vfqLwE?=
 =?iso-8859-1?Q?AXtzzO61Al6Vnjje/B2K+5wvDiMg56ek+YwDAtJNvSn4FPCbElj5Xk+5sr?=
 =?iso-8859-1?Q?WPOzCAQ8+oVXF7MR+TETHZ+7zY+CEPMS9MPbzdJs3MEsLoMOT84tGQXRN0?=
 =?iso-8859-1?Q?o59ilOjLYw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0cdd4148-6697-4ddd-4b70-08df3e52633c
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:48.2055
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: wjKMvgJfrkhx6gusWDnv8S1sh5IQ3tdh0PSPrrEmKSM2w6iGlf291tkx0+64gW8f044dwzK1Ixb/qQMmDPJFFQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-ef75cf/1794222769-A76D2AE4-63C14133/0/0
X-purgate-type: clean
X-purgate-size: 3953

Move IRQs from dying CPU to the online ones when a CPU is getting
offlined. When onlining, rebalance all IRQs in a round-robin fashion.
Guest-bound IRQs are already handled by scheduler in the process of
moving vCPUs to active pCPUs, so we only need to handle IRQs used by Xen
itself.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
---
v10->v11:
* collect RB

v9->v10:
* make cpu_next static to balance_irq
* move the offline path to the CPU_DEAD notifier
* make rebalance_irqs static

v8->v9:
* replace CONFIG_CPU_HOTPLUG with CONFIG_CPU_ONLINE_OFFLINE

v7->v8:
* check only existings ESPIs

v6->v7:
* replace ifdef with IS_ENABLED

v5->v6:
* don't do any balancing on boot
* only do balancing when cpu hotplug is enabled

v4->v5:
* handle CPU onlining as well
* more comments
* fix crash when ESPI is disabled
* don't assume CPU 0 is a boot CPU
* use insigned int for irq number
* remove assumption that all irqs a bound to CPU 0 by default from the
  commit message

v3->v4:
* patch introduced
---
 xen/arch/arm/irq.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
index 594aaedd22..d5145a4723 100644
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -166,6 +166,58 @@ static int init_local_irq_data(unsigned int cpu)
     return 0;
 }
=20
+static void balance_irq(int irq, unsigned int from, bool up)
+{
+    static int cpu_next;
+    struct irq_desc *desc =3D irq_to_desc(irq);
+    unsigned long flags;
+
+    ASSERT(!cpumask_empty(&cpu_online_map));
+
+    spin_lock_irqsave(&desc->lock, flags);
+    if ( likely(!desc->action) )
+        goto out;
+
+    if ( likely(test_bit(_IRQ_GUEST, &desc->status) ||
+                test_bit(_IRQ_MOVE_PENDING, &desc->status)) )
+        goto out;
+
+    /*
+     * Setting affinity to a mask of multiple CPUs causes the GIC drivers =
to
+     * select one CPU from that mask. If the dying CPU was included in the=
 IRQ's
+     * affinity mask, we cannot determine exactly which CPU the interrupt =
is
+     * currently routed to, as GIC drivers lack a concrete get_affinity AP=
I. So
+     * to be safe we must reroute it to a new, definitely online, CPU. In =
the
+     * case of CPU going down, we move only the interrupt that could resid=
e on
+     * it. Otherwise, we rearrange all interrupts in a round-robin fashion=
.
+     */
+    if ( !up && !cpumask_test_cpu(from, desc->affinity) )
+        goto out;
+
+    cpu_next =3D cpumask_cycle(cpu_next, &cpu_online_map);
+    irq_set_affinity(desc, cpumask_of(cpu_next));
+
+out:
+    spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+static void rebalance_irqs(unsigned int from, bool up)
+{
+    int irq;
+
+    if ( cpumask_empty(&cpu_online_map) )
+        return;
+
+    for ( irq =3D NR_LOCAL_IRQS; irq < NR_IRQS; irq++ )
+        balance_irq(irq, from, up);
+
+#ifdef CONFIG_GICV3_ESPI
+    for ( irq =3D ESPI_BASE_INTID; irq < ESPI_BASE_INTID + gic_number_espi=
s();
+          irq++ )
+        balance_irq(irq, from, up);
+#endif
+}
+
 static int cpu_callback(struct notifier_block *nfb, unsigned long action,
                         void *hcpu)
 {
@@ -180,6 +232,15 @@ static int cpu_callback(struct notifier_block *nfb, un=
signed long action,
             printk(XENLOG_ERR "Unable to allocate local IRQ for CPU%u\n",
                    cpu);
         break;
+    case CPU_ONLINE:
+        if ( IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) &&
+             system_state >=3D SYS_STATE_active )
+            rebalance_irqs(cpu, true);
+        break;
+    case CPU_DEAD:
+        if ( IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+            rebalance_irqs(cpu, false);
+        break;
     }
=20
     return notifier_from_errno(rc);
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479831.1683740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIy-000450-Ll; Mon, 09 Nov 2026 11:12:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479831.1683740; Mon, 09 Nov 2026 11:12:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIy-00043G-E3; Mon, 09 Nov 2026 11:12:52 +0000
Received: by outflank-mailman (input) for mailman id 1479831;
 Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQNIw-0003qE-MM
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIw-003aoG-2r
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:50 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aaa3-e002-0a2a0a5209dd-0a2a4507d888-30
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:50 +0100
Received: from [52.101.83.89]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab0-b4ea-0a2a45070019-34655359e23e-6
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:49 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:48 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=cump2jZ0c588s3cOZPAvc0I+v9GNG0p2VsoO6rFFL9/hJ3LgH27l4iEUttf6AtmJtaYpowu4rRHNSzwB579THp7Dnm7WYvHMzJ/0CTRG90DlWkxAfRbrQNBJsmGz4bvTcShjHbps0HycTvBb/bhxJcTm7+XcIdEWZxWdfPkymP9itqgAn9TSAUawAFu8wzaBYEGTy7WASXbLzmmtdtD8NLxI0XkwsAy6sFw8pbHqNP4RoKSA3pMecjjdGTPb8lKcHOiTk8XxPJAWkKg0OkMqMRZFYaq6BLnmD2pfN3VzHy+vdJDvu6sXOqhfbg7cnWCrkXUk9IR66pbkfsXvf18r3Q==
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=j071lkv/T9MKGKKRxrfVTvQM3R2BSkqTGwzSgXyNeIw=;
 b=ZQmoJmkgc9oi6/iukZCUs5WSDvTdcOFY31B1r58SyXhyoLjOgN4Rk8F0DAGXdEpwtgeBIRH3n1Gaf26XwCeOw0loPzWPvja8Lt0oA9aFCNXnY35Sz20aU2VXHw4/sLvK0jR0Nln3O7lYf+r2OergL2M9hdVxBKqCbADsnIuAWHITdRKPOoZjAhs1wfTKxfzBpgwEBYPrj+ntKOiJPWVi2HHrPtuGd0SjtjgNlE3P3r5KF+qw3vtDAgngyEjxPi5WHrb4iPaikzbx1zqfQ+1JFOmRfEVYu3Rp+TNRbrfYTY4NxTQFe6ZVwF8GMv7NPEO9cyGV66a75iCv34saXo/8gg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=j071lkv/T9MKGKKRxrfVTvQM3R2BSkqTGwzSgXyNeIw=;
 b=ms4S90o+1pbfeP2o1Aq4RGb3RDV9jtJH7F3DU1/7IU0OgV1FnUICT+5Utn+j3FaB3A+IOgBvQZNWllWp/YdBFJ7kNXjTS+BlatxsRDh4h6CjARyy9Gx3UBB6FZCprg7ZFJuwq9RbSH0qcgdHKbOmOekvIfft6RerZi95b4lk3JJDyUoAe0iATP5SBN1RKm3cynLQ3tNr+mqRtcmtmqb+U6ex3Km2oaxqJTxkaYJONwuja3UTjk3Rrm4za9Vn0keFTnS4w0XncqjJS2ZIYCmUTHQtd2xvTTDFKsgpQynQMGNQ9d0rLlOR2pYhgztqB60W2/9muVDDeTSs99aYgaFHRA==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Julien
 Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v11 3/6] Kconfig: Make cpu hotplug configurable
Thread-Topic: [PATCH v11 3/6] Kconfig: Make cpu hotplug configurable
Thread-Index: AQHdcDtAh71ivUKJ/UmfMX2hXYn9Ww==
Date: Mon, 9 Nov 2026 11:12:48 +0000
Message-ID:
 <eb7fa68092bad4d0db6e1693451e905b081ee9d6.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: 03da3311-469f-4fb0-2305-08df3e526376
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|10063799003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261022075727099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 3ABTxXqQCJ20Lv1Q+YQGMo/NtXiaYJLai+smYnxyyYxQDgKw3avF+EojxPFIuiMHWLlBN7wf8E/0vMJe8ncNfWVn6w0ykRkNsb01X4JyhBPEgOv0rKuMthJx2MLopFaIPuTapcd5ILBCO47vID8lE+EqRZMLi/ajmOEPkakCOR+ha5unZ4NuhSCKCpq4ww5H9qSHB4S54aqaDJgxin21Uwytm+e6VUBoOT/OL98OH6e7HeACyiXdGKfm/FFror7Kfz0vkzwlXCTpu4Grj48ShyiJPEa4Qgl6pzAPECOXvz7wZbeHZuwIkmxh3y+2IKxk2LqVOHq+YB7CZTfxZCGEdYlHc1nVTc/HplH/ul2zgjyv/oCOHhuC55mAIOuGicAPxlkVNLp8Kj5JNikg/VNkcBVc/7RD050Vzi1CIiCACORxv+b65OGTLOX45oyArJgQmi00NZDtYHtxbQXgQjVZZY96MPESH0Z9Xkj4JLuN7yDPPjNaIcMReFMDC3r/+fZkZvW3/NwKoy+2Yz4QMsST+i25SaGxs6fp8Hy7kqHZbjaY5MwLx9d3WK1Muv1r1ADmU+9gst5ezqZnClZ3up3K0FNcaWtehNKKwhMfzBhidwpZmgE3gs8NWsxKmhDzaiqZB5Bpl5EOUpIBnd1FTL+5VLm/vQI+8Z33brPWbPPBpq5v9JC/LpgCG4wm6fOnMo1MSZ4gsAgrk81BE9VVd2XtyiA0TnNeG53p74G2Hra2yN4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(10063799003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261022075727099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?7v4PPdJxlisFb7OFzwgcaHRcbMZ5B6iBD3aKwD8qIenADFkPp+RQYcv4zA?=
 =?iso-8859-1?Q?v/D6736w9aMq5VUrdr+JwE2oM/U/AUOiUUJeAeIJauqp6bFlV6AxB1F1Dx?=
 =?iso-8859-1?Q?6ptDahUwp7mnh44qQkhmwxvR0a2iX6H7BzmMMNq46jq56TGsLOn3PYVxOj?=
 =?iso-8859-1?Q?F0xWwPbCU4feqIvvhRhZr80D3dlJpU+WS/X85KjafcuRGlaq1JNAzVbab/?=
 =?iso-8859-1?Q?LinOsbD1GxilE7FBd+qMUnwXapaNGuTonMQ+G2Z7M67CrRIDEx2eFlUABM?=
 =?iso-8859-1?Q?AGYIEmgdNn1LmlNp36NkqTYKSfzcSmPiqOHw3vMBPFdjCDImn67C9AOAEJ?=
 =?iso-8859-1?Q?XXtF5h7ToNoxokGq03I2zsAOdk9JA0qWZxZgT43uPYR/NBjLzQi53wiEO/?=
 =?iso-8859-1?Q?hJdQ0NHkcVmojyvxqorYChdD2acbpHhZ2cQk0LzXHczjNBLQ1jK39qo87M?=
 =?iso-8859-1?Q?Kaq9Gop+8CV1di4c7LdiD6v+G6ubg10FKD2JyGgC9lnn08VH+v5mgBq9mJ?=
 =?iso-8859-1?Q?e+QAr424tB6Eb6Qlrn77JnxzmgU41lebWyglioTAW8FOJwl2/WQJbasko+?=
 =?iso-8859-1?Q?pkQILAlZ9daKskr5qTmGnIy+g/ID7vR3bUqIEVut3fSDfkAOPMLNNXyt4N?=
 =?iso-8859-1?Q?/Cz/L+t0kpQBB77K/sqjQ8c5tDKnmFuvpGnbXqRI+ucg0yrGEJV36s+yor?=
 =?iso-8859-1?Q?M4wD/ypQeb4owL6KIt62IPT+V39wzeeyYiUxcQpEeG1C2Pqw061vIUQ6Li?=
 =?iso-8859-1?Q?uq+AF8mFJ9qo9mOx89oiDVPtVjojCfDJ+qvl+t7ITF+6Qp3SDI9IH3ChbU?=
 =?iso-8859-1?Q?28Fe5mzrvidK2YjyTsn8vxTkm04OC+6x4RXIrJo7d5H3trI3tbMgIQEHPI?=
 =?iso-8859-1?Q?P06awC7lbJm4raQ0GH1MlK3+oIONgGc2ptQIflgCxD8FZoXm7pbh8+kOBF?=
 =?iso-8859-1?Q?VM5fpZHYs6DbvbHomPYnokkU8HtJe5jOrZDS7KyS42erq1pC8mlEbeUmDV?=
 =?iso-8859-1?Q?w+9NhZM0B/hiPwOKoqVyxj4pfM425xzZe6M7auroMo1YQFIHNvY2xMCwi/?=
 =?iso-8859-1?Q?WMqIWiY4YzaBfdCeFYgDGXnunWvC7kl937vjbwYf2O0s0Uek2sx0uK09hq?=
 =?iso-8859-1?Q?VcKlA9kq1fUCa8dTGY5lJLYgVOUj5CSqondqswmnuK0p6j9PvkfbUi0Who?=
 =?iso-8859-1?Q?Kir4uXRysYyz1E0bwQ/GE43smkYcA62yO4ot+PpWCw84rG4/RcBb1/yAtl?=
 =?iso-8859-1?Q?8+hY7TjPfkk5VzuPEshY+fpbgo2Sa6zkN7+rIvZftsZ+C99TraOBQdf4YU?=
 =?iso-8859-1?Q?+ljDBqNUOzFmjmczNXimi4XmTsF9kdCJj+rKmdhhZjBz97kbbkEE7TI+4d?=
 =?iso-8859-1?Q?ioZvGxCaKCd2srNlTfhwp3udE0qg68NIoZgrpcdavD2SUtbmNm7GKyi8zp?=
 =?iso-8859-1?Q?jTHbn3sc1cMWZE0kE0rCkDP/UNiiENfbGwcQ/iqBOQHkBTVMmRHr8tIVxK?=
 =?iso-8859-1?Q?4q0/qhf9Qg8Ba01MRbGZVgHboQcNCwx16rvN3HiVmhYi4oQ1HtpR8L35Jx?=
 =?iso-8859-1?Q?vTzwHyVPK8FElJF5j7PihgPZD1+9LyjCtBoUoy5bmlNztiSAKiNn6FSJF+?=
 =?iso-8859-1?Q?o9lmvbRRLVzhUKwhbTC9ot443T7m5omBiRBj3LfthK/FlRxVeqPlAxufEr?=
 =?iso-8859-1?Q?Nhub5AmQLz91Ja5Y6DeURijtygFKFt28i6o0Igt/oH6kDamRqDZD/T64MR?=
 =?iso-8859-1?Q?Pw0nDrrxDGKipwgQ9ArR7hroU+qOx+wC+sLmAc6l4wNd0N8LfKfRm/6Pxk?=
 =?iso-8859-1?Q?sscHyUMGDQ=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 03da3311-469f-4fb0-2305-08df3e526376
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:48.6804
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: VOt9nkce1xvEhfkI/5/ewP8EcNvGtaW1ct+R8W8PAZ6IY3c88FInEzQiBOn04KOF3vEuv7xkif9mwjm/b56fEg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-ef75cf/1794222770-348C9AE4-D8B96799/10/78276251493
X-purgate-type: spam
X-purgate-size: 3713

For the purposes of certification, we want as little code as possible to
be unconditionally compiled in. Make CPU hotplug and SMT operations
configurable to ease the process. This will also help with introducing
CPU hotplug on Arm, where it needs to be configurable.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
v10->v11:
* no changes

v9->v10:
* no changes

v8->v9:
* add "if EXPERT"
* add AB

v7->v8:
* fix style
* s/CPU_HOTPLUG/CPU_ONLINE_OFFLINE/

v6->v7:
* new patch
---
 xen/arch/x86/platform_hypercall.c | 12 ++++++++++++
 xen/arch/x86/smp.c                |  3 +++
 xen/arch/x86/sysctl.c             | 12 ++++++++++++
 xen/common/Kconfig                |  8 ++++++++
 4 files changed, 35 insertions(+)

diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hype=
rcall.c
index 0f3c791fc2..2d43d20143 100644
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -735,6 +735,12 @@ ret_t do_platform_op(
     {
         int cpu =3D op->u.cpu_ol.cpuid;
=20
+        if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+        {
+            ret =3D -EOPNOTSUPP;
+            break;
+        }
+
         if ( cpu >=3D nr_cpu_ids || !cpu_present(cpu) ||
              clocksource_is_tsc() )
         {
@@ -757,6 +763,12 @@ ret_t do_platform_op(
     {
         int cpu =3D op->u.cpu_ol.cpuid;
=20
+        if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+        {
+            ret =3D -EOPNOTSUPP;
+            break;
+        }
+
         if ( cpu =3D=3D 0 )
         {
             ret =3D -EOPNOTSUPP;
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index ae4e5a66d7..e3c4c0d5e0 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -416,6 +416,7 @@ void cf_check call_function_interrupt(void)
     smp_call_function_interrupt();
 }
=20
+#ifdef CONFIG_CPU_ONLINE_OFFLINE
 long cf_check cpu_up_helper(void *data)
 {
     unsigned int cpu =3D (unsigned long)data;
@@ -443,8 +444,10 @@ long cf_check cpu_down_helper(void *data)
 {
     int cpu =3D (unsigned long)data;
     int ret =3D cpu_down(cpu);
+
     /* Have one more go on EBUSY. */
     if ( ret =3D=3D -EBUSY )
         ret =3D cpu_down(cpu);
     return ret;
 }
+#endif
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index 6bd4e191a7..10d485e633 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -53,6 +53,12 @@ static long cf_check smt_up_down_helper(void *data)
     unsigned int cpu, sibling_mask =3D boot_cpu_data.x86_num_siblings - 1;
     int ret =3D 0;
=20
+    if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+    {
+        ASSERT_UNREACHABLE();
+        return -EOPNOTSUPP;
+    }
+
     opt_smt =3D up;
=20
     for_each_present_cpu ( cpu )
@@ -120,6 +126,12 @@ long arch_do_sysctl(
         long (*fn)(void *data);
         void *hcpu;
=20
+        if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+        {
+            ret =3D -EOPNOTSUPP;
+            break;
+        }
+
         switch ( op )
         {
         case XEN_SYSCTL_CPU_HOTPLUG_ONLINE:
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 5b289e444f..5713dc1f9c 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -646,6 +646,14 @@ config SYSTEM_SUSPEND
=20
 	  If unsure, say N.
=20
+config CPU_ONLINE_OFFLINE
+	bool "CPU online/offline support" if EXPERT
+	depends on X86
+	default y
+	help
+	  Enable support for bringing CPUs online and offline at runtime. On
+	  X86 this is required for disabling SMT.
+
 menu "Supported hypercall interfaces"
 	visible if EXPERT
=20
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479832.1683758 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNJ0-0004c2-1u; Mon, 09 Nov 2026 11:12:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479832.1683758; Mon, 09 Nov 2026 11:12:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNIz-0004bJ-QK; Mon, 09 Nov 2026 11:12:53 +0000
Received: by outflank-mailman (input) for mailman id 1479832;
 Mon, 09 Nov 2026 11:12:52 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIx-0003qa-Qs
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIx-003asL-6k
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:51 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aaa3-e002-0a2a0a5209dd-0a2a4507d888-32
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:51 +0100
Received: from [52.101.83.89]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab0-b4ea-0a2a45070019-34655359e23e-7
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:51 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:49 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=TOZ5X9XR3bp7e00TnRMtx3+WEU+ye6wsykJ5jLF8ZU+pjIRnTw88WjX7AHu5NJ+wvE65Tvmus8nFXt7y2dp213NnedBEvr+VHzZylhkSyjgCVPgmXmosEntDkE7kpZCqiaRq97JsrStD/dHc+uoZ5I/AwfOMYHURFmYEmgXDTSXwpIAgjA/HnkLnyytShysOOy1QU/J3i1W80vmjw+KdwPKLG4k7AhzOMgQ+PubsVucJPS5/H3cH9apgNM0+87JynBsEgQjJQBmju3XhnefESwKYLzLnJVxNFSsGOwGzjGiCRtJ5NX+Bv/kXppYhA9r350oJdplmXyA3owwYta33BQ==
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=/8lN2N6zh132Ai8uzBJIHz2N+Q/htJPFUEWYUsnQlCI=;
 b=UXZEr27oO0PP1PKrYgkrh56Gq4+5aP71zypOFRX/rjVROfIzot7FZwzWjRxGSVgxvOwN7iw8TqCyVu+5oURLkVY+sufOlg1Ymg7vvDTcWCzopBgixPYatBZwwwms5EXjkW5zRFydcr9Opzt8aFdBE3Va6+KDbRbah7pPOnsPX6Sz2pJCf6khteFA6AaVcitoxJsmVtQtrmJAmr3OO8RKrQswFxe/vhUJ3og+dE/+BKdnYmeyuQI6SB1bDcHVLNCY99/HylkBbV2968ZtMbNuREsi/4izOEf83iRn0tipXCJm4h/0Us8/c6tDdvcsgf/JCNs7SW3ojmafquUaLk1R6w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/8lN2N6zh132Ai8uzBJIHz2N+Q/htJPFUEWYUsnQlCI=;
 b=uMmVHKwASrPlpHT6hdh8oUT5NzTTUZ8KPfPLuUzVIhW/3msJ2wcLp/ScVLLfzetHjLXn6usxldPL4J5bf5GdhQqliQMOpkHKLVzSJK1Zg5ulI2LEln1Ikcj1+ZIVcfgrD5z6XkPgVdM329qi/4xRs+HI6umiXYcH503+Z27d+4C2zaUCRjbTN+PGnIWUp0JpsD5rRD8B1RLCcVMHJSsgAwoOQovQxpEZeyiLu5S54ZRNk/GZHn5Po175eQZOd+tI7f+qwRnUWs76Lv0yXQ0lbxuYzP5mydUzAaxDTfK5K+a7JfLjSuPIjpU7YRU3964z2QErJG1SkurDHQBrJK19Fg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, Jan
 Beulich <jbeulich@suse.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Teddy Astie <teddy.astie@vates.tech>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v11 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Topic: [PATCH v11 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Index: AQHdcDtB09yqm3vI3UKKICuJZIRK+g==
Date: Mon, 9 Nov 2026 11:12:49 +0000
Message-ID:
 <92f0934ebdc79687f6007f83ec04bf8001f1e0cd.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: e3137ac7-95b3-4197-12a6-08df3e5263b7
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|7416014|22082099003|18002099003|10063799003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261021123027099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003;
x-microsoft-antispam-message-info:
 tOX8s8raMEND0IV0Mr9jsIv8kMnYvp80ScoaIDoysrLByjBWXdtF24grzfuRh5Lz1NKw1JqhUqogEla2MOjyx5jckuk+2Ht6pDqKIsf3Epim8NW7MA8hVu34FnxGTkMs2Krh+C4Y+bAidqAUk5+a4piMTcURERtbrakwzVl1D28Pwz617CRRU7l23EXW/3SFvlPPIF5V4D3R97Bj1ADZRVv+/INVO5LwMM0dLoLgMkCBy74QJd9q9admqVttmWRolUq7l8GJ8zXsHI3jB/GsZqtixVM1EHvY9vsA/bp2kGbwaDkJNQP0hXrFiaSCm9hjm5aNgSJZZanTaKFOc2bjjnzkhydew+xU0eLURNyrfWJUeTMxx2XOUsWyiZkcik38rWU65syQ8aJ28zO+UlLJtEiHz0oOWwf84ufBdoqzdMzWFcu1FGhnIMHr2HEF907KIWS50NLPJc7lMrc9cPRib1EbOJeIupSViywYa0ADVqGRcQeFpfAiJCPuQQjUq5vBDfRlDKqXXwgoZmijqFYMpEQxrMhVocClIFbrof1ZxroSJmus9zBy016bvhTN5/f4qqFjoiDsxaKKCCXMB71txDEuNJnXdGBiVQBYLwvLGs4qPth5LWx3mESotpV2J6HR8p+4YQQK4oAxQLnRaGaBLGcEcT/DAXHgkHnMJtAs9TeBacsbdCw15+efAq2CIjoKFPvgnTVQmF39bPUH0JWate84XM1UPvNUolr7Cps+kR0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(7416014)(22082099003)(18002099003)(10063799003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261021123027099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?Ud7KOz+SlrCoSjk9QL6KzsZ/zmmo/mKxL6kfOdpbgptgFC7JlalYKY/4qm?=
 =?iso-8859-1?Q?/oiWY1DeQw/CRksYpZxqyIG9PbDdSAPnwL/nG7kv2Ct/YFIVHmzBXWUGC6?=
 =?iso-8859-1?Q?Y1vH7e81LxL/jKlou/SVwe09lbZXTo6qccOpPH9C/XfcLJxurxbCgPN3gm?=
 =?iso-8859-1?Q?ZRI/7+Erlk1TY5F9ONer8qvTQ59wbP7AniKjQDovnZxrfMxIrkwi4cOzf+?=
 =?iso-8859-1?Q?aZCu+BhGONt/N77sh5vhNzkq1mUaN0AyLP6LxP+WifPZ2bPQEevFaFzycR?=
 =?iso-8859-1?Q?kGk/RzI9habmH6hPEsFwpY9IpWPh29z9wFEu7rcjtKAO1T6q98mhJCR3Jp?=
 =?iso-8859-1?Q?KNthej6CGm0VCVHHrBv7dtMs9HAWYLMkd847DpdsvYC+3hc0hTglt3pfwT?=
 =?iso-8859-1?Q?zhW8V2kOrUEC+8QACM+F8OHvktEyN474v0KslgWtrxXcetSj+icNtVYlxv?=
 =?iso-8859-1?Q?9pjZDlyIUK3mt3dYPf4R2Z7g4BPdMSWCcqG63yMlBio80UgJ37M5H53efi?=
 =?iso-8859-1?Q?twqRbj4Z/+PlY+0JoKjYeN03kpLoNt3aV/TsXOEbDZLjm+VPYIeEzUAviM?=
 =?iso-8859-1?Q?eO6FVWGTZhQ2gCejQPtHQHmanzTVTc1mAgKoVL8yA9FVewFHpxJA84hvmm?=
 =?iso-8859-1?Q?iT9cpJuJmBlWWNEm4e2Ng4cmM6Y1BRRVBAP3kB0TpqQF1V/gonWaaD21b3?=
 =?iso-8859-1?Q?bSPzaVu3GvDP6sYMhjz5kVz6EZvgd14Zo70+tICX+ppVmpi/pq8INlSFkK?=
 =?iso-8859-1?Q?OFCq4BCEJsExURVBrFbNzVqhzU37Ng/5fdhnmihA63si8CjyT5jJ2519S9?=
 =?iso-8859-1?Q?h2j0De2PdPwKdOXa8+v+hfMf2eIy4Oq/gapTFZxOfimFqaf9lpu1919N+/?=
 =?iso-8859-1?Q?gycU21hMKPCDbRoKV5FZ7NZ8DmCSxvUOZLkj28PfvlFBmL9PA70f/TMl3E?=
 =?iso-8859-1?Q?d54XLe0tUoRvKmM69yEUrzpnKTjGI2jNsUtx7JdRPIBWgpGrm1PYFFC4CE?=
 =?iso-8859-1?Q?7eNTl5h+lsEyN8EoupveJ5+iazxrJO4RZkqTlCLYoGVZb4dOm95XZzPrXm?=
 =?iso-8859-1?Q?RTaME8CeHJBpNrjh2aPpcIhfskWXYEgfovwcr7TerGgdOVj2wpT9Xk24e0?=
 =?iso-8859-1?Q?VgwvTobzHsB7erM5VMK1JeF3gj0fGZEQDIhKBKnFW9BWBRtcgzWT3Y04EB?=
 =?iso-8859-1?Q?L5JH9oQXkds6E3rUbUP3ZwapkXffaBiw2vPWqz2y0W+M4aj0sDz3FdHgbT?=
 =?iso-8859-1?Q?SZczzNHgdvSi7wueW0j+d7yGwTCLpaCfp862VdIHhKNI85Cj8B5Cp0LGZc?=
 =?iso-8859-1?Q?Bc+71+mBQsUI5KgQlndmu98vm3G0tc87PC8vITE04upuHUnjK9UkZNlwSb?=
 =?iso-8859-1?Q?UZGOaISCym/DEZ1NX0EWmLfjslZmy12sQp3UtDc7UNfU5VHcq0sqZWkBRG?=
 =?iso-8859-1?Q?iUSbpL+SK7uiwGJhb0uv1xnzLjOgv8w3DH41WvA9r3wkxJK4StD6lklI2r?=
 =?iso-8859-1?Q?26aYsQ5QWaolWWQm8Kl4QQR86klDwO1MEt2SVnFYEgQUe3Mvwk0xCuo4C1?=
 =?iso-8859-1?Q?Na0uUljFCksYKcGzTxwg8R5XBZCZQdgmW42b+ZnJ5GXfB/orIm7ktbheK+?=
 =?iso-8859-1?Q?zkxkGf8mMEYere6UhiVrfu8VCLljiR1mAerzg01GzsSsnimxf8zaJQEsrD?=
 =?iso-8859-1?Q?EaXelVF6yDd5bUlsYNBvUoLYf1kpsp1mkv1RJUS+a3R72hrFpXoMXqKO4i?=
 =?iso-8859-1?Q?hRzv5ljdgxVNvj39Ru7TMQRwqc2vDpKGNtbtlqkbLC6Mlywg7rPGT1ngkn?=
 =?iso-8859-1?Q?YEn+1sGRUw=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e3137ac7-95b3-4197-12a6-08df3e5263b7
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:49.0858
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: LLn7VnO6NUVP3hT/BYWZaWI19B7VnIMJ7/BQOlno1ZpxnWC3dDTuZTJz7SZsV4ot1n06s1G+AmJT0VptHeoCog==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-ef75cf/1794222771-36EDEAE4-9C6FB6FC/0/0
X-purgate-type: clean
X-purgate-size: 10690

SMT-disable enforcement check is moved into a separate
architecture-specific function.

For now this operations only support Arm64. For proper Arm32 support,
there needs to be a mechanism to free per-cpu page tables, allocated in
init_domheap_mappings. Also, hotplug is not supported if ITS enabled,
and partially supported FFA, or TEE is enabled, as they use non-static
IRQ actions.

Remove ifdef guards for x86 in flask, as cpu hotplug is now
supported on more architectures.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
v10->v11:
* add HAS_CPU_ONLINE_OFFLINE knob

v9->v10:
* rename arch_cpu_can_stay_online to arch_cpu_keep_online
* drop the single-use hp_op and hcpu variables
* make CPU_ONLINE_OFFLINE depend on !TEE, as FFA and TEE use non-static
  IRQ actions

v8->v9:
* simplify dependencies of config CPU_ONLINE_OFFLINE again
* rebased ove XSA-499

v7->v8:
* simplify dependencies of config CPU_ONLINE_OFFLINE

v6->v7:
* use IS_ENABLED istead of ifdef in more places
* remove unneded variables
* more explicit fallthrough in do_sysctl

v5->v6:
* fix style issues
* rename arch_smt_cpu_disable -> arch_cpu_can_stay_online and invert the
logic
* use IS_ENABLED istead of ifdef
* remove explicit list af arch-specific SYSCTL_CPU_HOTPLUG_* options
from the common handler
* fix flask issue

v4->v5:
* move handling to common code
* rename config to CPU_HOTPUG
* merge with "smp: Move cpu_up/down helpers to common code"

v3->v4:
* don't reimplement cpu_up/down helpers
* add Kconfig option
* fixup formatting

v2->v3:
* no changes

v1->v2:
* remove SMT ops
* remove cpu =3D=3D 0 checks
* add XSM hooks
* only implement for 64bit Arm
---
 xen/arch/arm/Kconfig           |  1 +
 xen/arch/arm/smp.c             | 11 +++++++++++
 xen/arch/x86/Kconfig           |  1 +
 xen/arch/x86/include/asm/smp.h |  3 ---
 xen/arch/x86/smp.c             | 34 +++------------------------------
 xen/arch/x86/sysctl.c          | 11 ++++-------
 xen/common/Kconfig             |  7 +++++--
 xen/common/smp.c               | 35 ++++++++++++++++++++++++++++++++++
 xen/common/sysctl.c            | 32 +++++++++++++++++++++++++++++++
 xen/include/xen/smp.h          |  6 ++++++
 xen/xsm/flask/hooks.c          |  2 +-
 11 files changed, 99 insertions(+), 44 deletions(-)

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index b9c5c40678..4569c76615 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -7,6 +7,7 @@ config ARM_64
 	def_bool y
 	depends on !ARM_32
 	select 64BIT
+	select HAS_CPU_ONLINE_OFFLINE if !HAS_ITS && !TEE
 	select HAS_DOMAIN_TYPE
 	select HAS_FAST_MULTIPLY
 	select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH
diff --git a/xen/arch/arm/smp.c b/xen/arch/arm/smp.c
index b372472188..f84f217359 100644
--- a/xen/arch/arm/smp.c
+++ b/xen/arch/arm/smp.c
@@ -44,6 +44,17 @@ void smp_send_call_function_mask(const cpumask_t *mask)
     }
 }
=20
+#ifdef CONFIG_CPU_ONLINE_OFFLINE
+/*
+ * We currently don't support SMT on ARM so we don't need any special logi=
c for
+ * CPU disabling
+ */
+bool arch_cpu_keep_online(unsigned int cpu)
+{
+    return true;
+}
+#endif
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index e5535ac484..e5e3134022 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -17,6 +17,7 @@ config X86
 	select HAS_ALTERNATIVE
 	select HAS_COMPAT
 	select HAS_CPUFREQ
+	select HAS_CPU_ONLINE_OFFLINE
 	select HAS_DIT
 	select HAS_EHCI
 	select HAS_EX_TABLE
diff --git a/xen/arch/x86/include/asm/smp.h b/xen/arch/x86/include/asm/smp.=
h
index 572b39b01c..6c33567cb5 100644
--- a/xen/arch/x86/include/asm/smp.h
+++ b/xen/arch/x86/include/asm/smp.h
@@ -44,9 +44,6 @@ int cpu_add(uint32_t apic_id, uint32_t acpi_id, uint32_t =
pxm);
=20
 void __stop_this_cpu(void);
=20
-long cf_check cpu_up_helper(void *data);
-long cf_check cpu_down_helper(void *data);
-
 long cf_check core_parking_helper(void *data);
 bool core_parking_remove(unsigned int cpu);
 uint32_t get_cur_idle_nums(void);
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index e3c4c0d5e0..b56d8dfd36 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -417,37 +417,9 @@ void cf_check call_function_interrupt(void)
 }
=20
 #ifdef CONFIG_CPU_ONLINE_OFFLINE
-long cf_check cpu_up_helper(void *data)
+bool arch_cpu_keep_online(unsigned int cpu)
 {
-    unsigned int cpu =3D (unsigned long)data;
-    int ret =3D cpu_up(cpu);
-
-    /* Have one more go on EBUSY. */
-    if ( ret =3D=3D -EBUSY )
-        ret =3D cpu_up(cpu);
-
-    if ( !ret && !opt_smt &&
-         cpu_data[cpu].compute_unit_id =3D=3D INVALID_CUID &&
-         cpumask_weight(per_cpu(cpu_sibling_mask, cpu)) > 1 )
-    {
-        ret =3D cpu_down_helper(data);
-        if ( ret )
-            printk("Could not re-offline CPU%u (%d)\n", cpu, ret);
-        else
-            ret =3D -EPERM;
-    }
-
-    return ret;
-}
-
-long cf_check cpu_down_helper(void *data)
-{
-    int cpu =3D (unsigned long)data;
-    int ret =3D cpu_down(cpu);
-
-    /* Have one more go on EBUSY. */
-    if ( ret =3D=3D -EBUSY )
-        ret =3D cpu_down(cpu);
-    return ret;
+    return opt_smt || cpu_data[cpu].compute_unit_id !=3D INVALID_CUID ||
+           cpumask_weight(per_cpu(cpu_sibling_mask, cpu)) <=3D 1;
 }
 #endif
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index 10d485e633..a4254beabb 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -121,13 +121,13 @@ long arch_do_sysctl(
=20
     case XEN_SYSCTL_cpu_hotplug:
     {
-        unsigned int cpu =3D sysctl->u.cpu_hotplug.cpu;
         unsigned int op  =3D sysctl->u.cpu_hotplug.op;
         long (*fn)(void *data);
         void *hcpu;
=20
         if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
         {
+            ASSERT_UNREACHABLE();
             ret =3D -EOPNOTSUPP;
             break;
         }
@@ -135,13 +135,10 @@ long arch_do_sysctl(
         switch ( op )
         {
         case XEN_SYSCTL_CPU_HOTPLUG_ONLINE:
-            fn =3D cpu_up_helper;
-            hcpu =3D _p(cpu);
-            break;
-
         case XEN_SYSCTL_CPU_HOTPLUG_OFFLINE:
-            fn =3D cpu_down_helper;
-            hcpu =3D _p(cpu);
+            /* Handled by common code */
+            ASSERT_UNREACHABLE();
+            ret =3D -EOPNOTSUPP;
             break;
=20
         case XEN_SYSCTL_CPU_HOTPLUG_SMT_ENABLE:
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 5713dc1f9c..f1c78b0ac7 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -121,6 +121,9 @@ config HAS_ALTERNATIVE
 config HAS_COMPAT
 	bool
=20
+config HAS_CPU_ONLINE_OFFLINE
+	bool
+
 config HAS_DEVICE_TREE_DISCOVERY
 	bool
 	select DEVICE_TREE_PARSE
@@ -648,8 +651,8 @@ config SYSTEM_SUSPEND
=20
 config CPU_ONLINE_OFFLINE
 	bool "CPU online/offline support" if EXPERT
-	depends on X86
-	default y
+	depends on HAS_CPU_ONLINE_OFFLINE
+	default X86
 	help
 	  Enable support for bringing CPUs online and offline at runtime. On
 	  X86 this is required for disabling SMT.
diff --git a/xen/common/smp.c b/xen/common/smp.c
index a011f541f1..af532d4873 100644
--- a/xen/common/smp.c
+++ b/xen/common/smp.c
@@ -16,6 +16,7 @@
  * GNU General Public License for more details.
  */
=20
+#include <xen/cpu.h>
 #include <asm/hardirq.h>
 #include <asm/processor.h>
 #include <xen/spinlock.h>
@@ -104,6 +105,40 @@ void smp_call_function_interrupt(void)
     irq_exit();
 }
=20
+#ifdef CONFIG_CPU_ONLINE_OFFLINE
+long cf_check cpu_up_helper(void *data)
+{
+    unsigned int cpu =3D (unsigned long)data;
+    int ret =3D cpu_up(cpu);
+
+    /* Have one more go on EBUSY. */
+    if ( ret =3D=3D -EBUSY )
+        ret =3D cpu_up(cpu);
+
+    if ( !ret && !arch_cpu_keep_online(cpu) )
+    {
+        ret =3D cpu_down_helper(data);
+        if ( ret )
+            printk("Could not re-offline CPU%u (%d)\n", cpu, ret);
+        else
+            ret =3D -EPERM;
+    }
+
+    return ret;
+}
+
+long cf_check cpu_down_helper(void *data)
+{
+    unsigned int cpu =3D (unsigned long)data;
+    int ret =3D cpu_down(cpu);
+
+    /* Have one more go on EBUSY. */
+    if ( ret =3D=3D -EBUSY )
+        ret =3D cpu_down(cpu);
+    return ret;
+}
+#endif /* CONFIG_CPU_ONLINE_OFFLINE */
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
index 8fb5ff0af3..dd21b6ff7e 100644
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -475,6 +475,38 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_=
sysctl)
             copyback =3D 1;
         break;
=20
+    case XEN_SYSCTL_cpu_hotplug:
+    {
+        long (*fn)(void *data);
+
+        ret =3D -EOPNOTSUPP;
+        if ( !IS_ENABLED(CONFIG_CPU_ONLINE_OFFLINE) )
+            break;
+
+        switch ( op->u.cpu_hotplug.op )
+        {
+        case XEN_SYSCTL_CPU_HOTPLUG_ONLINE:
+            fn =3D cpu_up_helper;
+            break;
+
+        case XEN_SYSCTL_CPU_HOTPLUG_OFFLINE:
+            fn =3D cpu_down_helper;
+            break;
+
+        default:
+            fn =3D NULL;
+            break;
+        }
+
+        if ( fn )
+        {
+            ret =3D continue_hypercall_on_cpu(0, fn, _p(op->u.cpu_hotplug.=
cpu));
+            break;
+        }
+    }
+
+        /* Use the arch handler for cases not handled here */
+        fallthrough;
     default:
         ret =3D arch_do_sysctl(op, u_sysctl);
         copyback =3D 0;
diff --git a/xen/include/xen/smp.h b/xen/include/xen/smp.h
index 2ca9ff1bfc..6c011d73ef 100644
--- a/xen/include/xen/smp.h
+++ b/xen/include/xen/smp.h
@@ -76,4 +76,10 @@ extern void *stack_base[NR_CPUS];
 void initialize_cpu_data(unsigned int cpu);
 int setup_cpu_root_pgt(unsigned int cpu);
=20
+#ifdef CONFIG_CPU_ONLINE_OFFLINE
+bool arch_cpu_keep_online(unsigned int cpu);
+#endif
+long cf_check cpu_up_helper(void *data);
+long cf_check cpu_down_helper(void *data);
+
 #endif /* __XEN_SMP_H__ */
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index d65ba0aeae..a1eed309b4 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -957,7 +957,7 @@ static int cf_check flask_sysctl(const struct xen_sysct=
l *op)
     case XEN_SYSCTL_getdomaininfolist:
         return flask_getdomaininfo(dom_xen);
=20
-#ifdef CONFIG_X86
+#ifdef CONFIG_CPU_ONLINE_OFFLINE
     case XEN_SYSCTL_cpu_hotplug:
         switch ( op->u.cpu_hotplug.op )
         {
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:54 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479833.1683762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNJ0-0004kU-Hj; Mon, 09 Nov 2026 11:12:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479833.1683762; Mon, 09 Nov 2026 11:12:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNJ0-0004jO-BZ; Mon, 09 Nov 2026 11:12:54 +0000
Received: by outflank-mailman (input) for mailman id 1479833;
 Mon, 09 Nov 2026 11:12:53 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIy-00043f-KI
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIy-00ELQW-0i
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:52 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab3-bab6-0a2a0a5309dd-0a2a45029f4c-10
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:51 +0100
Received: from [52.101.83.91]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab3-6ca4-0a2a45020019-3465535b34ef-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:51 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:49 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=ZitsLZufbBAd0mwqxjzdcoip9aPdCo6ZU9Oo70PROQngN2XmK6rbl9CcD1FYqigcXPaK7Zg9N2WRW92XQFizsnRVMIhnDLQtAfw7Nkym/wJlHnD36s8iWJkY93BTKOeqZQ5miSKM0lbVYPYfYk2aXlMsNO0zx+QxzUJXdOj4SgOirAC21jCSSDZh09Q72W/CifI6MutkO1T6R6UA2oEoUnZRyessH/BVHQEbXWvnp9O6XfUNKlhMeeJrQ12Rt3btMZQt2RjsyDDBUbStyHVhgFuA8b0vFNf2smdkROS5vL7qUesZSwUmMcO9YmLAQc+Do6zG8pxmJXvphCrylXjS4w==
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=vjeJIH8/GtXKcRnCgkL9Zuudi1R07VDPB4wvamxUUAE=;
 b=dVqxC6mUfL4AMKbUzWEhQC5Yg5PpR0C9vJNIoT5o5MD+RwUNeIrMU0PXhST/gfvwgCr8hb0XCDAT+IGP8GWszVqHKX4D1/Dkn2um+xZF1+N5/9LdGSVZbv3o/+lbTD+redu+FXoHUEQ9RpG05aXE4RcI02Dgtkz3GTjZrEu5gMjENf5Ko8DiiFlybL/rOLRfBToVsUtio+EPOclWqJRxR+H1nRUP+Fs5NW3vJooShJQxiMMgb4rDG/5uFX3vNmMzl9xwnbdh3p1qHyWhHG1AGAIEHTGfVtZTkgbrHkOw2KWMN1N8JxSyxySrc6BHaRvz07CTK32zpYwRr1YjZYKkIw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vjeJIH8/GtXKcRnCgkL9Zuudi1R07VDPB4wvamxUUAE=;
 b=Bc8LYjwn8eOm/wpyziEIHDLmdqgcbWzoOHdj8T6FOF2YRmPJpBWC/tkVQiJ09bXxnUbzt+vXeaPhLGEcgSRwprqvMwQe9E/36wdTcmrGtZnEStNi9UpP5Yp3PEZz/pBf8Sml/21iT+S5Iy5JCmCIexFQN3jvQrnTMHvzdLBOgNkSu3O2VQWXeR9GbFmQedQWcGvja1OVtMga89s2dzuslGwt77XVfdC9AjSJPUEHG4q6sTJqZW6OW9HhvVKnaoQV1IqCdsLWhoUNdYGbZNmmM55Pmf3L/bxRGIKs1rBBuHrPQopJWl+beItTEpBp5xutLbadhaqKBlYhijCOjkDJqw==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Anthony PERARD
	<anthony.perard@vates.tech>
Subject: [PATCH v11 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Topic: [PATCH v11 5/6] tools: Allow building xen-hptool without
 CONFIG_MIGRATE
Thread-Index: AQHdcDtBCGXUV+OFfEeEYvsjcoIaUA==
Date: Mon, 9 Nov 2026 11:12:49 +0000
Message-ID:
 <618fe620ab22e7a85bd74c0c7b762276722f0fee.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: da992ccf-abd0-4a0e-0cc1-08df3e5263fd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|6133799003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261021123027099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003|260925022911599003|260925021911599003|260925021311599003;
x-microsoft-antispam-message-info:
 w3j7O1UPmGuhXDcGGAIcnpB524cVyQxZDDvo+t7JI4XS1tHHGP40OynF38VO7jJRua0zPCEoO1GLrYvXtUZ1zlP8zviLDla5uQO98UDAa7EUgpNgFcinrRdbnU42+q4FuYtkjAzLkLg/71lfuBNz+eWurxRochatSO5aWrn0ifHdNRyYHcfeWXcVLWjjeD4sBHuKfVF07xtkl9dxKEixbE9YiLKJDu+F4MOXq+d1acjKlyYN4IjfBjnv2CRgDUcUCX1D2UYBts0q/A2cl2QzEOTTsOIcraphm8yyxvR7GK390vYW/ShYtZhW7B9VgTQr2sQdtNtjeseoN+6AccGRt7dkqUiGVuBwv6/qDGcpCfUOkQTm11iCzl6CL7jCzYSNlmA+8NUnw4DOi9FS59kR2U8Ech3nBU/6038f50/+8xxCY0iRvQeQv7JFVgMhv2BqfNT8Sa6Zw1V2JCszO95IaIVI19A8tdtaTiY/RcIUQnWFfuDc/h5PV59kuwPuzfeWOu1Fn2Ykg9YUFKDfEfcoMiZP+udq9G1FDlyU98e38lgCtg8Xbk0mpmXHMk8K3rYYgWY8sX9oArv+76eiTcGOvM3L1uk2XD7qIK5ZqUAvZICoQePNefKmp48zhPyHh1zoKZJud2lWC+8/ogwLK34vYobrsb12BWS0jfxilPvuvvHce2UqeU+l4ik4Eou5CrstT6xBUKPZ+C2QWP5Iww9n4VVfWqNz8auUg54lyH48z+Y=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261021123027099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003)(260925022911599003)(260925021911599003)(260925021311599003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?FcIiCdsSpoVCW2NmZgcqp49cq6wX39uSZspXE7k3J7M/Ms6uZCL5571+pi?=
 =?iso-8859-1?Q?E3edkX2nV1FhgaF6Bp6mdkF+fTUevFbQUYGiLOC566kiHuoHdKbwr/EuV9?=
 =?iso-8859-1?Q?12nwcRUPTIiIPrmlR1lmmxT7iNLryLb+YjB+8rhtX8x+owE56B4vKVGdq1?=
 =?iso-8859-1?Q?2YX2j35bTbkEiOFsEOD8l1y9UInIw5HyKLKPhLBCqCSmbzeBJO0XnLRNwr?=
 =?iso-8859-1?Q?tJQMVUXK2UwEvuyTQdrrjkxFYaoKwLlPSTD1LwIxm9L18PcsmlVpR5nCj4?=
 =?iso-8859-1?Q?tc/Eqx3dA8R/eWHXX6fy2BjPDNRbh5ZiB9AVlPE2FgCRnG2FC13oGgfWGP?=
 =?iso-8859-1?Q?Fegm86/hRywrVpS6P7L5Vi75U2a2xX3gZuIkVEkbx3aTLL6yOkCIeMXcIV?=
 =?iso-8859-1?Q?+nddXunEV3GdMt51bzwsng/Vro9Dj5mlhIbWQgsq+sWLd++iMlzlboFUnR?=
 =?iso-8859-1?Q?1Mb4R5IB7EapkiCDx6SuSu4f7wcYoMojQgRgBrDq9w5z6EAwLJWUeOraZd?=
 =?iso-8859-1?Q?CZTNt8jtPBEZgy4kbcPXo/uoBOCXmWyIsSYdoPTPlirHsaqxZuErH/0mLg?=
 =?iso-8859-1?Q?TNFHiHKCyHocTuclwRs02u4jhikbqoQT5e9Il0K/lgJoHuGEGjJyj1jvCh?=
 =?iso-8859-1?Q?62oLIema7S+Sor8BGfsowZLJoqk4XDKwaOilZzf2cCcwmZWZMx7r4yKxY/?=
 =?iso-8859-1?Q?lkXqa2t8F/j1U4dyH3/NvRTl1SON7LNdPs5DPZhsfrXjioOGGh83zyjXhS?=
 =?iso-8859-1?Q?VdFDm36KrcaPXi4dtnhnwwr7KA274Vv71ukbovLZfOpTTOlnrb/o1hhqcn?=
 =?iso-8859-1?Q?k7P5cBoAYRL93qKjrKp6BYebax02VOKrUuULRJhrdzrHe01+EE7IuQ3Vo+?=
 =?iso-8859-1?Q?HVu/vDU8vjUEuhZ3w8k2oe0AmDpyuCPeYTfvKU0bh1FTLQSEoadMdIFo1s?=
 =?iso-8859-1?Q?JAspYkXN0RJW8Bu3FoIeB3up/0JOTdmYn7uX/ctqHZEMyJe0JMsyv8MinW?=
 =?iso-8859-1?Q?iCYpf6xuLq9YtHYyzeAV9BxynLWXp7CudR8Ec9Z9Q02py0015fJSz9yaNg?=
 =?iso-8859-1?Q?nEj5LEE5Qb70eHiQ4B2iZRMLJK+z7S7+iCQMsEiJob5oOCFdxCX4Ex/atE?=
 =?iso-8859-1?Q?E2M9bZOph3+soqO2GXo4o1scDSS8UhpCUFjk5D86TYa8rXLXvmw9jROydk?=
 =?iso-8859-1?Q?aK+z5GaPH0yqJOKA0D/SH6ME86q9L+Qi3IQEnMs7fdqGnMsz1nI8rJyKH0?=
 =?iso-8859-1?Q?IpMpuSN8TzYFIW6rrCT2Jtq2Eku9l99pmuNlIqgUn3AFp6cLysqGvdAOOK?=
 =?iso-8859-1?Q?NOm9WG53or0ywJw4UlSTOyuDfYYH9OhRMVFISKm+GjnZHU2LiOFXu/Ht1U?=
 =?iso-8859-1?Q?Wa8yPmg/YkY0UpbWZNxZEVrtiFqpom3cFjysELoAa//yViV4q2v4p4/h3Q?=
 =?iso-8859-1?Q?2BxzPVQBxLqXrUGLemHZrTtL9L+Uc40iY/3f6YNN8qiYsZIkTXLb7bMBVl?=
 =?iso-8859-1?Q?XfgJumEdPkbjzpDYHORt8mei5IY8VOXSrOkY9qE4gkqIK/A5Jyij2KV2Sn?=
 =?iso-8859-1?Q?Euk7FFMJm6DfiHRYZvK65k/26nWgKXZUUttxdsngfDhmapNtyZzfvViUrv?=
 =?iso-8859-1?Q?G1M67QJ18AeGt/8dxdjl0auZbFdtVjeQCYti9Lb+0YI7nvIrvtH8qhIfEB?=
 =?iso-8859-1?Q?iFFv0YCBzkGqnIcYLD0jqfooDmOmvjPNGWRncubX9Yc8MBnMwIySSuNXL5?=
 =?iso-8859-1?Q?3pPVf+I9e5vWPDWSJ9/Wq9ZP+PKagxyQYvBzKTT+gVE115Y0zH8Wh2pkRx?=
 =?iso-8859-1?Q?FRT8zZktiA=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: da992ccf-abd0-4a0e-0cc1-08df3e5263fd
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:49.5424
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: W5Sn+mnuTwGvsmNMQ8gf99SLo/K++X1W0/JZ5+TNffzXLvKh/uVZKHZlaBkMCKbx4CSLfZ3NBMg4xFmu+k2iKw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-720697/1794222771-F18AC2AC-92F3E5A0/0/0
X-purgate-type: clean
X-purgate-size: 24567

With CPU hotplug sysctls implemented on Arm it becomes useful to have a
tool for calling them.

According to the commit history it seems that putting hptool under
config MIGRATE was a measure to fix IA64 build. As IA64 is no longer
supported it can now be brought back. So build it unconditionally.

Operations specific to x86 architecture are moved into a separate file
and only built on x86.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
---
v10->v11:
* no change

v9->v10:
* collect RB

v8->v9:
* use CONFIG_X86 instead of CONFIG_MIGRATE
* fix style issues

v7->v8:
* move x86 specific function into a separate file

v6->v7:
* no changes

v5->v6:
* don't change order in Makefile

v4->v5:
* make hptool always build

v3->v4:
* no changes

v2->v3:
* no changes

v1->v2:
* switch to configure from legacy config
---
 tools/misc/Makefile         |   9 +-
 tools/misc/xen-hptool-x86.c | 278 ++++++++++++++++++++++++++++++++++
 tools/misc/xen-hptool.c     | 293 ++----------------------------------
 tools/misc/xen-hptool.h     |  15 ++
 4 files changed, 314 insertions(+), 281 deletions(-)
 create mode 100644 tools/misc/xen-hptool-x86.c
 create mode 100644 tools/misc/xen-hptool.h

diff --git a/tools/misc/Makefile b/tools/misc/Makefile
index 6ee783f43e..064ab7c4bd 100644
--- a/tools/misc/Makefile
+++ b/tools/misc/Makefile
@@ -16,7 +16,7 @@ INSTALL_BIN                    +=3D xencov_split
 INSTALL_BIN +=3D $(INSTALL_BIN-y)
=20
 # Everything to be installed in regular sbin/
-INSTALL_SBIN-$(CONFIG_MIGRATE) +=3D xen-hptool
+INSTALL_SBIN                   +=3D xen-hptool
 INSTALL_SBIN-$(CONFIG_X86)     +=3D xen-hvmcrash
 INSTALL_SBIN-$(CONFIG_X86)     +=3D xen-hvmctx
 INSTALL_SBIN-$(CONFIG_X86)     +=3D xen-lowmemd
@@ -104,8 +104,11 @@ xenhypfs: xenhypfs.o
 xenlockprof: xenlockprof.o
 	$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS)
=20
-xen-hptool: xen-hptool.o
-	$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenevtchn) $(LDLIBS_libxenctrl) $(L=
DLIBS_libxenguest) $(LDLIBS_libxenstore) $(APPEND_LDFLAGS)
+hptool-objs-y :=3D xen-hptool.o
+hptool-objs-$(CONFIG_X86) +=3D xen-hptool-x86.o
+
+xen-hptool: $(hptool-objs-y)
+	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS_libxenevtchn) $(LDLIBS_libxenctrl) $(L=
DLIBS_libxenguest) $(LDLIBS_libxenstore) $(APPEND_LDFLAGS)
=20
 xenhypfs.o: CFLAGS +=3D $(CFLAGS_libxenhypfs)
=20
diff --git a/tools/misc/xen-hptool-x86.c b/tools/misc/xen-hptool-x86.c
new file mode 100644
index 0000000000..95a7e05990
--- /dev/null
+++ b/tools/misc/xen-hptool-x86.c
@@ -0,0 +1,278 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <xenevtchn.h>
+#include <xenctrl.h>
+#include <xenguest.h>
+#include <xenstore.h>
+#include "xen-hptool.h"
+
+int hp_mem_online_func(int argc, char *argv[], xc_interface *xch)
+{
+    uint32_t status;
+    int ret;
+    unsigned long mfn;
+
+    if (argc !=3D 1)
+    {
+        show_help();
+        return -1;
+    }
+
+    sscanf(argv[0], "%lx", &mfn);
+    printf("Prepare to online MEMORY mfn %lx\n", mfn);
+
+    ret =3D xc_mark_page_online(xch, mfn, mfn, &status);
+
+    if (ret < 0)
+        fprintf(stderr, "Onlining page mfn %lx failed, error %x\n", mfn, e=
rrno);
+    else if (status & (PG_ONLINE_FAILED |PG_ONLINE_BROKEN)) {
+        fprintf(stderr, "Onlining page mfn %lx is broken, "
+                        "Memory online failed\n", mfn);
+        ret =3D -1;
+    }
+    else if (status & PG_ONLINE_ONLINED)
+        printf("Memory mfn %lx onlined successfully\n", mfn);
+    else
+        printf("Memory is already onlined!\n");
+
+    return ret;
+}
+
+int hp_mem_query_func(int argc, char *argv[], xc_interface *xch)
+{
+    uint32_t status;
+    int ret;
+    unsigned long mfn;
+
+    if (argc !=3D 1)
+    {
+        show_help();
+        return -1;
+    }
+
+    sscanf(argv[0], "%lx", &mfn);
+    printf("Querying MEMORY mfn %lx status\n", mfn);
+    ret =3D xc_query_page_offline_status(xch, mfn, mfn, &status);
+
+    if (ret < 0)
+        fprintf(stderr, "Querying page mfn %lx failed, error %x\n", mfn, e=
rrno);
+    else
+    {
+        printf("Memory Status %x: [", status);
+        if ( status & PG_OFFLINE_STATUS_OFFLINE_PENDING)
+            printf(" PAGE_OFFLINE_PENDING ");
+        if ( status & PG_OFFLINE_STATUS_BROKEN )
+            printf(" PAGE_BROKEND  ");
+        if ( status & PG_OFFLINE_STATUS_OFFLINED )
+            printf(" PAGE_OFFLINED ");
+        else
+            printf(" PAGE_ONLINED ");
+        printf("]\n");
+    }
+
+    return ret;
+}
+
+static int suspend_guest(xc_interface *xch, xenevtchn_handle *xce, int dom=
id,
+                         int *evtchn, int *lockfd)
+{
+    int port, rc, suspend_evtchn =3D -1;
+
+    *lockfd =3D -1;
+
+    if (!evtchn)
+        return -1;
+
+    port =3D xs_suspend_evtchn_port(domid);
+    if (port < 0)
+    {
+        fprintf(stderr, "DOM%d: No suspend port, try live migration\n", do=
mid);
+        goto failed;
+    }
+    suspend_evtchn =3D xc_suspend_evtchn_init_exclusive(xch, xce, domid,
+                                                      port, lockfd);
+    if (suspend_evtchn < 0)
+    {
+        fprintf(stderr, "Suspend evtchn initialization failed\n");
+        goto failed;
+    }
+    *evtchn =3D suspend_evtchn;
+
+    rc =3D xenevtchn_notify(xce, suspend_evtchn);
+    if (rc < 0)
+    {
+        fprintf(stderr, "Failed to notify suspend channel: errno %d\n", rc=
);
+        goto failed;
+    }
+    if (xc_await_suspend(xch, xce, suspend_evtchn) < 0)
+    {
+        fprintf(stderr, "Suspend Failed\n");
+        goto failed;
+    }
+    return 0;
+
+failed:
+    if (suspend_evtchn !=3D -1)
+        xc_suspend_evtchn_release(xch, xce, domid,
+                                  suspend_evtchn, lockfd);
+
+    return -1;
+}
+
+int hp_mem_offline_func(int argc, char *argv[], xc_interface *xch)
+{
+    uint32_t status, domid;
+    int ret;
+    unsigned long mfn;
+
+    if (argc !=3D 1)
+    {
+        show_help();
+        return -1;
+    }
+
+    sscanf(argv[0], "%lx", &mfn);
+    printf("Prepare to offline MEMORY mfn %lx\n", mfn);
+    ret =3D xc_mark_page_offline(xch, mfn, mfn, &status);
+    if (ret < 0) {
+        fprintf(stderr, "Offlining page mfn %lx failed, error %x\n", mfn, =
errno);
+        if (status & (PG_OFFLINE_XENPAGE | PG_OFFLINE_FAILED))
+            fprintf(stderr, "XEN_PAGE is not permitted be offlined\n");
+        else if (status & (PG_OFFLINE_FAILED | PG_OFFLINE_NOT_CONV_RAM))
+            fprintf(stderr, "RESERVED RAM is not permitted to be offlined\=
n");
+    }
+    else
+    {
+        switch(status & PG_OFFLINE_STATUS_MASK)
+        {
+            case PG_OFFLINE_OFFLINED:
+            {
+                printf("Memory mfn %lx offlined successfully, current stat=
e is"
+                       " [PG_OFFLINE_OFFLINED]\n", mfn);
+                if (status & PG_OFFLINE_BROKEN)
+                    printf("And this offlined PAGE is already marked broke=
n"
+                        " before!\n");
+                break;
+            }
+            case PG_OFFLINE_FAILED:
+            {
+                fprintf(stderr, "Memory mfn %lx offline failed\n", mfn);
+                if ( status & PG_OFFLINE_ANONYMOUS)
+                    fprintf(stderr, "the memory is an anonymous page!\n");
+                ret =3D -1;
+                break;
+            }
+            case PG_OFFLINE_PENDING:
+            {
+                if (status & PG_OFFLINE_XENPAGE) {
+                    ret =3D -1;
+                    fprintf(stderr, "Memory mfn %lx offlined succssefully,=
"
+                            "this page is xen page, current state is"
+                            " [PG_OFFLINE_PENDING, PG_OFFLINE_XENPAGE]\n",=
 mfn);
+                }
+                else if (status & PG_OFFLINE_OWNED)
+                {
+                    int result, suspend_evtchn =3D -1, suspend_lockfd =3D =
-1;
+                    xenevtchn_handle *xce;
+                    xce =3D xenevtchn_open(NULL, 0);
+
+                    if (xce =3D=3D NULL)
+                    {
+                        fprintf(stderr, "When exchange page, fail"
+                                " to open evtchn\n");
+                        return -1;
+                    }
+
+                    domid =3D status >> PG_OFFLINE_OWNER_SHIFT;
+                    if (suspend_guest(xch, xce, domid,
+                                      &suspend_evtchn, &suspend_lockfd))
+                    {
+                        fprintf(stderr, "Failed to suspend guest %d for"
+                                " mfn %lx\n", domid, mfn);
+                        xenevtchn_close(xce);
+                        return -1;
+                    }
+
+                    result =3D xc_exchange_page(xch, domid, mfn);
+
+                    /* Exchange page successfully */
+                    if (result =3D=3D 0)
+                        printf("Memory mfn %lx offlined successfully, this=
 "
+                                "page is DOM%d page and being swapped "
+                                "successfully, current state is "
+                                "[PG_OFFLINE_OFFLINED, PG_OFFLINE_OWNED]\n=
",
+                                mfn, domid);
+                    else {
+                        ret =3D -1;
+                        fprintf(stderr, "Memory mfn %lx offlined successfu=
lly"
+                                " , this page is DOM%d page yet failed to =
be "
+                                "exchanged. current state is "
+                                "[PG_OFFLINE_PENDING, PG_OFFLINE_OWNED]\n"=
,
+                                mfn, domid);
+                    }
+                    xc_domain_resume(xch, domid, 1);
+                    xc_suspend_evtchn_release(xch, xce, domid,
+                                              suspend_evtchn, &suspend_loc=
kfd);
+                    xenevtchn_close(xce);
+                }
+                break;
+            }
+        }//end of switch
+    }//end of if
+
+    return ret;
+}
+
+int main_smt_enable(int argc, char *argv[], xc_interface *xch)
+{
+    int ret;
+
+    if ( argc )
+    {
+        show_help();
+        return -1;
+    }
+
+    for ( ;; )
+    {
+        ret =3D xc_smt_enable(xch);
+        if ( (ret >=3D 0) || (errno !=3D EBUSY) )
+            break;
+    }
+
+    if ( ret < 0 )
+        fprintf(stderr, "Unable to enable SMT: errno %d, %s\n",
+                errno, strerror(errno));
+    else
+        printf("Enabled SMT\n");
+
+    return ret;
+}
+
+int main_smt_disable(int argc, char *argv[], xc_interface *xch)
+{
+    int ret;
+
+    if ( argc )
+    {
+        show_help();
+        return -1;
+    }
+
+    for ( ;; )
+    {
+        ret =3D xc_smt_disable(xch);
+        if ( (ret >=3D 0) || (errno !=3D EBUSY) )
+            break;
+    }
+
+    if ( ret < 0 )
+        fprintf(stderr, "Unable to disable SMT: errno %d, %s\n",
+                errno, strerror(errno));
+    else
+        printf("Disabled SMT\n");
+
+    return ret;
+}
diff --git a/tools/misc/xen-hptool.c b/tools/misc/xen-hptool.c
index 590810b6eb..7b886e2304 100644
--- a/tools/misc/xen-hptool.c
+++ b/tools/misc/xen-hptool.c
@@ -6,8 +6,8 @@
 #include <xenguest.h>
 #include <xenstore.h>
 #include <xen-tools/common-macros.h>
+#include "xen-hptool.h"
=20
-static xc_interface *xch;
=20
 void show_help(void)
 {
@@ -18,239 +18,25 @@ void show_help(void)
             "  help                     display this help\n"
             "  cpu-online    <cpuid>    online CPU <cpuid>\n"
             "  cpu-offline   <cpuid>    offline CPU <cpuid>\n"
+#if defined(__i386__) || defined(__x86_64__)
             "  mem-online    <mfn>      online MEMORY <mfn>\n"
             "  mem-offline   <mfn>      offline MEMORY <mfn>\n"
             "  mem-status    <mfn>      query Memory status<mfn>\n"
             "  smt-enable               onlines all SMT threads\n"
             "  smt-disable              offlines all SMT threads\n"
+#endif
            );
 }
=20
 /* wrapper function */
-static int help_func(int argc, char *argv[])
+static int help_func(int argc, char *argv[], xc_interface *xch)
 {
     show_help();
     return 0;
 }
=20
-static int hp_mem_online_func(int argc, char *argv[])
-{
-    uint32_t status;
-    int ret;
-    unsigned long mfn;
-
-    if (argc !=3D 1)
-    {
-        show_help();
-        return -1;
-    }
-
-    sscanf(argv[0], "%lx", &mfn);
-    printf("Prepare to online MEMORY mfn %lx\n", mfn);
-
-    ret =3D xc_mark_page_online(xch, mfn, mfn, &status);
-
-    if (ret < 0)
-        fprintf(stderr, "Onlining page mfn %lx failed, error %x\n", mfn, e=
rrno);
-    else if (status & (PG_ONLINE_FAILED |PG_ONLINE_BROKEN)) {
-        fprintf(stderr, "Onlining page mfn %lx is broken, "
-                        "Memory online failed\n", mfn);
-        ret =3D -1;
-    }
-    else if (status & PG_ONLINE_ONLINED)
-        printf("Memory mfn %lx onlined successfully\n", mfn);
-    else
-        printf("Memory is already onlined!\n");
-
-    return ret;
-}
-
-static int hp_mem_query_func(int argc, char *argv[])
-{
-    uint32_t status;
-    int ret;
-    unsigned long mfn;
-
-    if (argc !=3D 1)
-    {
-        show_help();
-        return -1;
-    }
-
-    sscanf(argv[0], "%lx", &mfn);
-    printf("Querying MEMORY mfn %lx status\n", mfn);
-    ret =3D xc_query_page_offline_status(xch, mfn, mfn, &status);
-
-    if (ret < 0)
-        fprintf(stderr, "Querying page mfn %lx failed, error %x\n", mfn, e=
rrno);
-    else
-    {
-        printf("Memory Status %x: [", status);
-        if ( status & PG_OFFLINE_STATUS_OFFLINE_PENDING)
-            printf(" PAGE_OFFLINE_PENDING ");
-        if ( status & PG_OFFLINE_STATUS_BROKEN )
-            printf(" PAGE_BROKEND  ");
-        if ( status & PG_OFFLINE_STATUS_OFFLINED )
-            printf(" PAGE_OFFLINED ");
-        else
-            printf(" PAGE_ONLINED ");
-        printf("]\n");
-    }
-
-    return ret;
-}
-
-static int suspend_guest(xc_interface *xch, xenevtchn_handle *xce, int dom=
id,
-                         int *evtchn, int *lockfd)
-{
-    int port, rc, suspend_evtchn =3D -1;
-
-    *lockfd =3D -1;
-
-    if (!evtchn)
-        return -1;
-
-    port =3D xs_suspend_evtchn_port(domid);
-    if (port < 0)
-    {
-        fprintf(stderr, "DOM%d: No suspend port, try live migration\n", do=
mid);
-        goto failed;
-    }
-    suspend_evtchn =3D xc_suspend_evtchn_init_exclusive(xch, xce, domid,
-                                                      port, lockfd);
-    if (suspend_evtchn < 0)
-    {
-        fprintf(stderr, "Suspend evtchn initialization failed\n");
-        goto failed;
-    }
-    *evtchn =3D suspend_evtchn;
-
-    rc =3D xenevtchn_notify(xce, suspend_evtchn);
-    if (rc < 0)
-    {
-        fprintf(stderr, "Failed to notify suspend channel: errno %d\n", rc=
);
-        goto failed;
-    }
-    if (xc_await_suspend(xch, xce, suspend_evtchn) < 0)
-    {
-        fprintf(stderr, "Suspend Failed\n");
-        goto failed;
-    }
-    return 0;
-
-failed:
-    if (suspend_evtchn !=3D -1)
-        xc_suspend_evtchn_release(xch, xce, domid,
-                                  suspend_evtchn, lockfd);
-
-    return -1;
-}
-
-static int hp_mem_offline_func(int argc, char *argv[])
-{
-    uint32_t status, domid;
-    int ret;
-    unsigned long mfn;
-
-    if (argc !=3D 1)
-    {
-        show_help();
-        return -1;
-    }
-
-    sscanf(argv[0], "%lx", &mfn);
-    printf("Prepare to offline MEMORY mfn %lx\n", mfn);
-    ret =3D xc_mark_page_offline(xch, mfn, mfn, &status);
-    if (ret < 0) {
-        fprintf(stderr, "Offlining page mfn %lx failed, error %x\n", mfn, =
errno);
-        if (status & (PG_OFFLINE_XENPAGE | PG_OFFLINE_FAILED))
-            fprintf(stderr, "XEN_PAGE is not permitted be offlined\n");
-        else if (status & (PG_OFFLINE_FAILED | PG_OFFLINE_NOT_CONV_RAM))
-            fprintf(stderr, "RESERVED RAM is not permitted to be offlined\=
n");
-    }
-    else
-    {
-        switch(status & PG_OFFLINE_STATUS_MASK)
-        {
-            case PG_OFFLINE_OFFLINED:
-            {
-                printf("Memory mfn %lx offlined successfully, current stat=
e is"
-                       " [PG_OFFLINE_OFFLINED]\n", mfn);
-                if (status & PG_OFFLINE_BROKEN)
-                    printf("And this offlined PAGE is already marked broke=
n"
-                        " before!\n");
-                break;
-            }
-            case PG_OFFLINE_FAILED:
-            {
-                fprintf(stderr, "Memory mfn %lx offline failed\n", mfn);
-                if ( status & PG_OFFLINE_ANONYMOUS)
-                    fprintf(stderr, "the memory is an anonymous page!\n");
-                ret =3D -1;
-                break;
-            }
-            case PG_OFFLINE_PENDING:
-            {
-                if (status & PG_OFFLINE_XENPAGE) {
-                    ret =3D -1;
-                    fprintf(stderr, "Memory mfn %lx offlined succssefully,=
"
-                            "this page is xen page, current state is"
-                            " [PG_OFFLINE_PENDING, PG_OFFLINE_XENPAGE]\n",=
 mfn);
-                }
-                else if (status & PG_OFFLINE_OWNED)
-                {
-                    int result, suspend_evtchn =3D -1, suspend_lockfd =3D =
-1;
-                    xenevtchn_handle *xce;
-                    xce =3D xenevtchn_open(NULL, 0);
-
-                    if (xce =3D=3D NULL)
-                    {
-                        fprintf(stderr, "When exchange page, fail"
-                                " to open evtchn\n");
-                        return -1;
-                    }
-
-                    domid =3D status >> PG_OFFLINE_OWNER_SHIFT;
-                    if (suspend_guest(xch, xce, domid,
-                                      &suspend_evtchn, &suspend_lockfd))
-                    {
-                        fprintf(stderr, "Failed to suspend guest %d for"
-                                " mfn %lx\n", domid, mfn);
-                        xenevtchn_close(xce);
-                        return -1;
-                    }
-
-                    result =3D xc_exchange_page(xch, domid, mfn);
-
-                    /* Exchange page successfully */
-                    if (result =3D=3D 0)
-                        printf("Memory mfn %lx offlined successfully, this=
 "
-                                "page is DOM%d page and being swapped "
-                                "successfully, current state is "
-                                "[PG_OFFLINE_OFFLINED, PG_OFFLINE_OWNED]\n=
",
-                                mfn, domid);
-                    else {
-                        ret =3D -1;
-                        fprintf(stderr, "Memory mfn %lx offlined successfu=
lly"
-                                " , this page is DOM%d page yet failed to =
be "
-                                "exchanged. current state is "
-                                "[PG_OFFLINE_PENDING, PG_OFFLINE_OWNED]\n"=
,
-                                mfn, domid);
-                    }
-                    xc_domain_resume(xch, domid, 1);
-                    xc_suspend_evtchn_release(xch, xce, domid,
-                                              suspend_evtchn, &suspend_loc=
kfd);
-                    xenevtchn_close(xce);
-                }
-                break;
-            }
-        }//end of switch
-    }//end of if
-
-    return ret;
-}
-
-static int exec_cpu_hp_fn(int (*hp_fn)(xc_interface *, int), int cpu)
+static int exec_cpu_hp_fn(int (*hp_fn)(xc_interface *, int), int cpu,
+                          xc_interface *xch)
 {
     int ret;
=20
@@ -265,7 +51,7 @@ static int exec_cpu_hp_fn(int (*hp_fn)(xc_interface *, i=
nt), int cpu)
     return ret;
 }
=20
-static int hp_cpu_online_func(int argc, char *argv[])
+static int hp_cpu_online_func(int argc, char *argv[], xc_interface *xch)
 {
     int cpu, ret;
=20
@@ -277,7 +63,7 @@ static int hp_cpu_online_func(int argc, char *argv[])
=20
     cpu =3D atoi(argv[0]);
     printf("Prepare to online CPU %d\n", cpu);
-    ret =3D exec_cpu_hp_fn(xc_cpu_online, cpu);
+    ret =3D exec_cpu_hp_fn(xc_cpu_online, cpu, xch);
     if (ret < 0)
         fprintf(stderr, "CPU %d online failed (error %d: %s)\n",
                 cpu, errno, strerror(errno));
@@ -287,7 +73,7 @@ static int hp_cpu_online_func(int argc, char *argv[])
     return ret;
=20
 }
-static int hp_cpu_offline_func(int argc, char *argv[])
+static int hp_cpu_offline_func(int argc, char *argv[], xc_interface *xch)
 {
     int cpu, ret;
=20
@@ -298,7 +84,7 @@ static int hp_cpu_offline_func(int argc, char *argv[])
     }
     cpu =3D atoi(argv[0]);
     printf("Prepare to offline CPU %d\n", cpu);
-    ret =3D exec_cpu_hp_fn(xc_cpu_offline, cpu);
+    ret =3D exec_cpu_hp_fn(xc_cpu_offline, cpu, xch);
     if (ret < 0)
         fprintf(stderr, "CPU %d offline failed (error %d: %s)\n",
                 cpu, errno, strerror(errno));
@@ -308,76 +94,27 @@ static int hp_cpu_offline_func(int argc, char *argv[])
     return ret;
 }
=20
-static int main_smt_enable(int argc, char *argv[])
-{
-    int ret;
-
-    if ( argc )
-    {
-        show_help();
-        return -1;
-    }
-
-    for ( ;; )
-    {
-        ret =3D xc_smt_enable(xch);
-        if ( (ret >=3D 0) || (errno !=3D EBUSY) )
-            break;
-    }
-
-    if ( ret < 0 )
-        fprintf(stderr, "Unable to enable SMT: errno %d, %s\n",
-                errno, strerror(errno));
-    else
-        printf("Enabled SMT\n");
-
-    return ret;
-}
-
-static int main_smt_disable(int argc, char *argv[])
-{
-    int ret;
-
-    if ( argc )
-    {
-        show_help();
-        return -1;
-    }
-
-    for ( ;; )
-    {
-        ret =3D xc_smt_disable(xch);
-        if ( (ret >=3D 0) || (errno !=3D EBUSY) )
-            break;
-    }
-
-    if ( ret < 0 )
-        fprintf(stderr, "Unable to disable SMT: errno %d, %s\n",
-                errno, strerror(errno));
-    else
-        printf("Disabled SMT\n");
-
-    return ret;
-}
-
 struct {
     const char *name;
-    int (*function)(int argc, char *argv[]);
+    int (*function)(int argc, char *argv[], xc_interface *xch);
 } main_options[] =3D {
     { "help", help_func },
     { "cpu-online", hp_cpu_online_func },
     { "cpu-offline", hp_cpu_offline_func },
+#if defined(__i386__) || defined(__x86_64__)
     { "mem-status", hp_mem_query_func},
     { "mem-online", hp_mem_online_func},
     { "mem-offline", hp_mem_offline_func},
     { "smt-enable", main_smt_enable },
     { "smt-disable", main_smt_disable },
+#endif
 };
=20
=20
 int main(int argc, char *argv[])
 {
     int i, ret;
+    xc_interface *xch;
=20
     if (argc < 2)
     {
@@ -402,7 +139,7 @@ int main(int argc, char *argv[])
         return 1;
     }
=20
-    ret =3D main_options[i].function(argc -2, argv + 2);
+    ret =3D main_options[i].function(argc -2, argv + 2, xch);
=20
     xc_interface_close(xch);
=20
diff --git a/tools/misc/xen-hptool.h b/tools/misc/xen-hptool.h
new file mode 100644
index 0000000000..34f492c34b
--- /dev/null
+++ b/tools/misc/xen-hptool.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __XEN_HPTOOL_H__
+#define __XEN_HPTOOL_H__
+
+#if defined(__i386__) || defined(__x86_64__)
+int hp_mem_online_func(int argc, char *argv[], xc_interface *xch);
+int hp_mem_query_func(int argc, char *argv[], xc_interface *xch);
+int hp_mem_offline_func(int argc, char *argv[], xc_interface *xch);
+int main_smt_enable(int argc, char *argv[], xc_interface *xch);
+int main_smt_disable(int argc, char *argv[], xc_interface *xch);
+#endif
+
+void show_help(void);
+
+#endif /* __XEN_HPTOOL_H__ */
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:12:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:12:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479834.1683768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNJ1-0004r5-1u; Mon, 09 Nov 2026 11:12:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479834.1683768; Mon, 09 Nov 2026 11:12:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNJ0-0004qK-QD; Mon, 09 Nov 2026 11:12:54 +0000
Received: by outflank-mailman (input) for mailman id 1479834;
 Mon, 09 Nov 2026 11:12:53 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Mykyta_Poturai@epam.com>) id 1xQNIy-0004C1-Ub
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:12:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNIy-00ELQW-Aw
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:52 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab3-bab6-0a2a0a5309dd-0a2a45029f4c-12
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:52 +0100
Received: from [52.101.83.91]
 (helo=GVXPR05CU001.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Mykyta_Poturai@epam.com>)
 id 6af1aab3-6ca4-0a2a45020019-3465535b34ef-4
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:12:52 +0100
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com (2603:10a6:20b:5fb::5)
 by BESPR03MB911570.eurprd03.prod.outlook.com (2603:10a6:b10:147::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 11:12:50 +0000
Received: from AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c]) by AS2PR03MB9076.eurprd03.prod.outlook.com
 ([fe80::bfe6:8f84:2f09:349c%3]) with mapi id 15.21.0592.010; Mon, 9 Nov 2026
 11:12:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=JCwpAg+Mfs1X5PBewvmCkbcHhZtr4n0lTnMbNCYGOx1/XPDt3Y6Jx/6kq+9y0Aqvm0wEt6/fAO8PVfjxsL93uRLps4fkJlTq1EhtBa5Gi3XkN3MZS2IF3tO4hnBHQObj0LOt8q4SUsc8bc16T6BwLsjs5MR4KlfihQ1wVizYFpkPhwYvMb3ODwzFyfHLEHaI6feS0VzXx3fogCzzOmtFlRv55Qt4Ua0M94/pw50R/IZCX3Yb+jmiOiloDluRG+WYwH8ePB3lQhBTVPEAjXUZKxhAnLjjI0zW5JfoFbJOd41gr5BI+j3CZrTfTENvXZNrnHcw0ZuUXzMJxOnGowgM1w==
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=So4Usd1efqoEjsORsZeLMMsglUkCSIgwzCwOrZKP+ik=;
 b=ma8tsOaFwIMNyS6I7W1AtABJziINo/hfIwuFpJaxcafTPbtNQ4GM+Zzxo9Va9mmgZxNKFSWRqjfa26y8M9ECXM8yCfL3cp3Ty1VvBDGCk9rqhdFapWqltfJyS7WAAOfsQHr6FTc5JD0kyQXNrNud/V9Gdk1VpJFpNEK/jf1UeNa5sW8hNUp5N6oS3gpEeY+oF4gcfxl+fF6y4S57TpdkZiaJokyOe5q1E4xTkT2y1VYecy1z40UZrWahdoawdZtD9NWBlI0KxFD/nKtm9oubVY6F9EfQhv7P7DJaKQ2jDgOOpRWBWmN4gJIO9WU0cjRMszvZicA8eMm/ekOmtKjikg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=So4Usd1efqoEjsORsZeLMMsglUkCSIgwzCwOrZKP+ik=;
 b=QIA/69S09xQb8HV2DGk0LxLAsxQff79Jko+/4TiPKhPAr4/BOinajMqQD3FLyBUAU+oShzt4SwRPEvdwFzQf6gpPf4uPxubH4jichPP2+h9FSwAclCiGb/NHNF5AL0V5in0VChwU28UHT8sKJTLxLpP4a00Gr02QAMdvRLXO5Rhb83c+dXPWjUZ+k5l6iApUgwgUFoYZKxoZ3OD3YRJ4K4RH1bArBQIC9GqXmS7V4wI+TZI6NWyY/ArKsAStqYYDMHexyoyzktjaSeWKMmXeebmABdL/pWDQa2WeHlbNorjVkbgzEWFV6oGPyGaAuajT2jaDu/fhThTEnVybMPJRZg==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v11 6/6] docs: Document CPU hotplug
Thread-Topic: [PATCH v11 6/6] docs: Document CPU hotplug
Thread-Index: AQHdcDtBxh3En5yEU0GTrBnml38UOA==
Date: Mon, 9 Nov 2026 11:12:49 +0000
Message-ID:
 <b29769962099a9d5ff14b879b87a588ed2e96665.1794222015.git.mykyta_poturai@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1794222015.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB9076:EE_|BESPR03MB911570:EE_
x-ms-office365-filtering-correlation-id: d0e5d2df-9e01-4d94-429e-08df3e526440
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|6133799003|10067099003|38070700021|11063799006|261028144727099003|261102123227099003|261022105027099003|261022075727099003|56012099006|261021121427099003|261026140227099003|261026121527099003|261009223027099003|260925022911599003|260925021911599003|260925021311599003;
x-microsoft-antispam-message-info:
 hN8MfVSGPbS4akZd9Qt7hqJteJkZJr+NuwCI4LgsgW1kdRQDHv6zY6s+BMWxoklklJLwPmwwtyZ7SkoQQdXbrOHvLwh1ZXwP0j1MEYMUfGPy08n6UQig348vbaCalADFN4/PR/Cz30INzlFWqk+8FXBi4D+crdf216xf6p82srPBQh167ATJa4j4LucYByZDKnmLz+Ogm2iyTI8EbYKR5r5hzuYvPn6WLNP7QRWdmyWfAm32nOH5AMVBoaqpizU7ZB2mKvBxicMQTjST9mR2yFxrj6pwJxs5bkvliPSil+bocbycY8gNd27bDKclytW4hpxe/DZWZLGW396I1N3v7DX87VTnv3wsq4u8SN2r7DHllMQNa+fTgF0+7d1luRGCqH2RncAfRNCV/O5Gxeu5X+/IVxx6kGDsbVPsJO1Ve2iqF3v8v54VKHbFlvrHhLNKKe6WWGGK7OYAe562l5j957dPWqp/u/S8DFqbU+lC9Ku2V79rIxVTXZ1Ho6m9RCgfyRHAVeYthS8lybzgskpQ8iCxunIyte88x8PknDL/cF2dybjQNo9tT63FLF7v8kwBOZTaA1fR8CKz7U28CPTvmukNL8mjKBemW5eWbDEoXgh+bbcMxLCj3MTDK0Tjy9YVODgfngdXXylHclRzbMK1NLsH5o8E5C9GQLISEvcu3vqqK4XplR7q57uJSHN2kcsrXJzN/6kjG/dPyilnkKnmaPHGbiGDRLK7KJ5fqYSZNZA=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB9076.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(38070700021)(11063799006)(261028144727099003)(261102123227099003)(261022105027099003)(261022075727099003)(56012099006)(261021121427099003)(261026140227099003)(261026121527099003)(261009223027099003)(260925022911599003)(260925021911599003)(260925021311599003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ISsIXdnyCIenFb6ABUwPEw4CR9uuhNpH5E/DtdTuOkJsDShko2bbjNsCyz?=
 =?iso-8859-1?Q?qAMYe26wnulZSq+pd6g3ew6c1ck/n+iBtZF6DzUVhSRQLBlPcbXR/8Pkfi?=
 =?iso-8859-1?Q?bAGMlStehfjoi7KSoXp8aywVKAMsp+rnGKBhz2mTk8THwewonVJp+c/ecd?=
 =?iso-8859-1?Q?rAZ0nmo7iAR/NVCpIT4juCueE4oqfeEMyZjWn8zI2d86otYzmx5k6B/qLN?=
 =?iso-8859-1?Q?F2JpcNyFHDl17BfZS8S7jHql9t/CYhrE10E6ILv4b0nVIGnRc9xSq7jbcX?=
 =?iso-8859-1?Q?7iGMwyOWhB7MfSY6TuwtC7CvFGyiyMwWxxNfCMpwbdJbc7qfjlenWJdM1N?=
 =?iso-8859-1?Q?WYQfFHPe6ukLh22vIaoBUQ4dEYVvnELLXHUYUAtd7ggV28ww/aNpyKuFp4?=
 =?iso-8859-1?Q?L/MFJ7QLujQL+Uh4H2vBmTI+A1+f9A+9pUNTUHDVgXNinMxcRHG33TpUuS?=
 =?iso-8859-1?Q?z2e0IxQMhsdW2bHes70awk3ei1SbuY3hbDfmbeZ/gM5pbEUDsLTugm2DYi?=
 =?iso-8859-1?Q?LdOf0XmEETjr2V2KaXYdfuMn/i1iQYEnIqGt03e5p9fgD4wVqJysd9Yvek?=
 =?iso-8859-1?Q?pKJulPNX/zwmRGBu1sTWbEcgmDW+AWSfi9QIzBERitQTuvsxcxpflIymQf?=
 =?iso-8859-1?Q?CIvrCqMkWxINzpHdhEU+ZYXl1/H5gm7d4o0EXS48Y6DilYkSCd7JzFh88a?=
 =?iso-8859-1?Q?N9cXYMTAnoPZj7HL7pU8fZTWoHGt9loKISby/Jv2CkYBPVAmI9Wq0grQbt?=
 =?iso-8859-1?Q?vob4ve9sM9/dJ32BbX4NXzFKP+dcHxWL9BbXtL3+5S3lvNc2BiRelqG9Id?=
 =?iso-8859-1?Q?9E/kWGHKhLHwUWMwZH6N0ZjusEqUGkLL8DfOjy3HUGxvAf3e85jD3es79E?=
 =?iso-8859-1?Q?HV3uIPzjKwneDOenoRPdQTdv6Z4IJrj2Rk3KX5hOzGHvmAZRZy1PQi2uuB?=
 =?iso-8859-1?Q?roNc1qFgRuiblszN2RTE0mHTfu6rtPe1JFOxnosC5UTPsSAXBhl/5rwwdw?=
 =?iso-8859-1?Q?yf/21a+ZMD8k2LK63HvHIyLoYOSrb38K4kCiQNUB+Db8iBGMDjOR44qKSy?=
 =?iso-8859-1?Q?hhLmn4kk07XQsHVJ9dIYIx78MSjoUFr58i2+JnZts2pmU5bZKby3o0EXbn?=
 =?iso-8859-1?Q?xw92H/d5VwdjjDBqtlmkf9125Z/o3lzMcobpCFWyBMQyukHhkrAIiC+ABr?=
 =?iso-8859-1?Q?Y0BYwmb6N0biPCtxOi87As49akGTdbJNY38N7nBsAbZFiGaM7WhiXVbnGm?=
 =?iso-8859-1?Q?7k/jqWx+qoLF5QMGzjJz90JQwjgGgJjKbiTK641VkmuC5RFaqJXvf5/aKv?=
 =?iso-8859-1?Q?q0s1/MeHHkos2YIeXTgZpVOY4rPXVn73BUZ2tMUCwnmtizYdW9WEwRZ4UN?=
 =?iso-8859-1?Q?14gsZ/W6c6Q+vQR11J24tnyScIyCAlEBtpbHvS4nOoKoOsjzmQHql/uHkx?=
 =?iso-8859-1?Q?Dya2DRxrxNCHOpXhxMe/Z/O8idx0ur/etkfSBh3UnzLS8O0nlxX/l2+x3V?=
 =?iso-8859-1?Q?/9PdfHotO8MXC8wmMTvaHUMiskq2tsIqBkyefbyQ8p5WMK7E0SaEI+QJQa?=
 =?iso-8859-1?Q?bLaCTOAoyomIY4QUcQ+UuhbgpEHqSWvkJo6wQrx96WrK+dSd3wIOoPK5mq?=
 =?iso-8859-1?Q?5AF3ZcFkB5SVjj9cUh9v/P22fK+Tcu3cg/G8GUcXsAGJ2LuFbIsxjqcauV?=
 =?iso-8859-1?Q?2o4PnZKexjFdP2NQR6w7d5jS98rJjHX6UQKfVyfpiQ++sU+YyfXi2hrwBv?=
 =?iso-8859-1?Q?aBAZjpMW0CNYoVQn08X9q9DoovZ5cP3XIJMUVnMQKpqp63BWURn3F6Ed2d?=
 =?iso-8859-1?Q?H0SPPJPVFg=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB9076.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d0e5d2df-9e01-4d94-429e-08df3e526440
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 11:12:49.9790
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 26PXO57uB2d6SG0Bft+/i2dyrDsezE2DJVEFEPGftQGPGWoRii6ZoILJ6ZdghS0gNC7tkr1TkWlJer0rMt+hoQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BESPR03MB911570
X-purgate-ID: tlsNG-720697/1794222772-31FD62AC-BF4806C9/0/0
X-purgate-type: clean
X-purgate-size: 4502

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
v10->v11:
* sync with latest changes

v9->v10:
* explain the actual ITS incompatibility
* say FFA and TEE are incompatible, matching the Kconfig dependency

v8->v9:
* no changes

v7->v8:
* remove support status update
* update config option name

v6->v7:
* add testing and limitations

v5->v6:
* no changes

v4->v5:
* s/supported/implemented/
* update SUPPORT.md

v3->v4:
* update configuration section

v2->v3:
* patch introduced
---
 docs/misc/cpu-hotplug.txt | 102 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 docs/misc/cpu-hotplug.txt

diff --git a/docs/misc/cpu-hotplug.txt b/docs/misc/cpu-hotplug.txt
new file mode 100644
index 0000000000..e1b474ca69
--- /dev/null
+++ b/docs/misc/cpu-hotplug.txt
@@ -0,0 +1,102 @@
+CPU Hotplug
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+CPU hotplug is a feature that allows pCPU cores to be added to or removed =
from a
+running system without requiring a reboot. It is implemented on x86 and Ar=
m64
+architectures.
+
+Implementation Details
+----------------------
+
+CPU hotplug is implemented through the `XEN_SYSCTL_CPU_HOTPLUG_*` sysctl c=
alls.
+The specific calls are:
+
+- `XEN_SYSCTL_CPU_HOTPLUG_ONLINE`: Brings a pCPU online
+- `XEN_SYSCTL_CPU_HOTPLUG_OFFLINE`: Takes a pCPU offline
+- `XEN_SYSCTL_CPU_HOTPLUG_SMT_ENABLE`: Enables SMT threads (x86 only)
+- `XEN_SYSCTL_CPU_HOTPLUG_SMT_DISABLE`: Disables SMT threads (x86 only)
+
+All cores can be disabled, assuming hardware support, except for the boot =
core.
+Sysctl calls are routed to the boot core before doing any actual up/down
+operations on other cores.
+
+If there are Xen-bound interrupts pinned to the pCPU being offlined, they =
will
+be automatically migrated to other online pCPUs. Interrupts used by guest
+domains are handled by the scheduler when it reschedules the vCPUs to a ne=
w,
+online, pCPU. When a pCPU is being onlined, some Xen-bound interrupts will=
 get
+redistributed to the newly onlined pCPU to prevent imbalance.
+
+If pCPU being offlined has some vCPUs pinned to it, they will be automatic=
ally
+unpinned and migrated to other online pCPUs.
+
+Limitations
+-----------
+
+On Arm64 cpu hotplug is currently not compatible with the ITS: the per-CPU=
 LPI
+pending table and GICR_CTLR.EnableLPIs are set up once at boot and are not
+re-usable, so onlining a pCPU a second time fails.
+
+On Arm64 it is also not compatible with the FFA and TEE mediators, as both=
 use
+non-static IRQ actions.
+
+Configuration
+-------------
+
+CPU hotplug support in Xen is controlled by the CONFIG_CPU_ONLINE_OFFLINE
+Kconfig option, which requires EXPERT and depends on HAS_CPU_ONLINE_OFFLIN=
E.
+HAS_CPU_ONLINE_OFFLINE is selected by x86, and by Arm64 when neither ITS n=
or
+TEE support is enabled. The option is enabled by default on x86 and disabl=
ed
+by default on Arm64.
+
+The xen-hptool userspace tool is built unconditionally.
+
+Usage
+-----
+
+Disable core:
+
+$ xen-hptool cpu-offline 2
+Prepare to offline CPU 2
+(XEN) Removing cpu 2 from runqueue 0
+CPU 2 offlined successfully
+
+Enable core:
+
+$ xen-hptool cpu-online 2
+Prepare to online CPU 2
+(XEN) Bringing up CPU2
+(XEN) GICv3: CPU2: Found redistributor in region 0 @00000a004005c000
+(XEN) CPU2: Guest atomics will try 1 times before pausing the domain
+(XEN) CPU 2 booted.
+(XEN) Adding cpu 2 to runqueue 0
+CPU 2 onlined successfully
+
+Disabling a core with pinned vCPUs:
+
+$ xl vcpu-pin 0 3 3 3
+$ xl vcpu-pin 0 2 3 3
+$ xl vcpu-pin 0 1 3 3
+$ xl vcpu-pin 0 0 3 3
+$ xen-hptool cpu-offline 3
+Prepare to offline CPU 3
+(XEN) Breaking affinity for d0v0
+(XEN) Breaking affinity for d0v1
+(XEN) Breaking affinity for d0v2
+(XEN) Breaking affinity for d0v3
+(XEN) Removing cpu 3 from runqueue 0
+CPU 3 offlined successfully
+
+Testing
+-------
+
+The CPU hotplug feature has been tested on both x86 and Arm64 QEMU setups =
and on
+R-Car Gen5 (Arm64) hardware.
+
+The tests included:
+- Offlining and onlining cores with no pinned vCPUs
+- Offlining cores with pinned vCPUs
+- Offlining cores with Xen-bound interrupts
+- Offlining all cores except the boot core
+- Offlining the boot core (expected to fail)
+- Enabling and disabling SMT threads (x86 only)
+- Offlining cores to which guests with passthrough devices are pinned
--=20
2.56.0


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:25:22 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:25:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479883.1683784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNV0-0000bB-AR; Mon, 09 Nov 2026 11:25:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479883.1683784; Mon, 09 Nov 2026 11:25:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNV0-0000b4-7b; Mon, 09 Nov 2026 11:25:18 +0000
Received: by outflank-mailman (input) for mailman id 1479883;
 Mon, 09 Nov 2026 11:25:17 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQNUz-0000ay-22
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:25:17 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNUy-002Xtm-0r
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:25:16 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1ad97-bab6-0a2a0a5309dd-0a2a450ca76a-20
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:25:15 +0100
Received: from [209.85.208.173] (helo=mail-lj1-f173.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1ad9b-f479-0a2a450c0019-d155d0aded65-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:25:15 +0100
Received: by mail-lj1-f173.google.com with SMTP id
 38308e7fff4ca-3adfd5771ccso5314221fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:25:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1794223515; cv=none;
        d=google.com; s=arc-20260327;
        b=oB7/q4cih3SUu6DTIuJDPiDbyqUCjA7l5Xw1NyDslX0JloC34lBiufypHa+QzbWU8L
         1JIcoEV3otr0Xphn4nMnFohONTWlY6Zdr/O7FH1GjmnxqUo0DJILUZex9KVhPaPo8lV+
         UyxMnZPE44SsiTSAVM4g+LU9I35oYppSIXhEkV7xmqWWFPEpWA8EQqz7NP6ZfY9wGaB8
         PphxqQ9moDNw1wZdX2MIESub1RJzkX5DOEaoe7zYHOBM86k6NQQ3wffJkzV7q8JK3y2O
         aSgCT8Iu3x/A1Wp1Sx3q7kbTzyErD/b6VhrOZ4GAOSYlWBwJYVBD6dcSqborEPF/SOEn
         5fzw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=7vd28LUNAcXQYC8IquR/rqALyr+9bzLZGM4hS9fWKb4=;
        fh=otM5Y3HSqWrnegtZP/S+KnL4PqF4qzydXT2sQ05LBPg=;
        b=UsNqXB9JcZIM/HxQ0LoqVM0l/CF6ViA8xvx1JDuwQD1XtA5b91Ly+8WyT9Ei9bvULR
         f8RinQ6w23DZDECXnSatCnU8F0ZWb9RXtJ37iQmqrIdxG4mSf2uHqw0kUC0seZWD6NZo
         bq46ScIA2URD1Izo+zRoT4rh9dIsVvSFiNXYivf0OnGz6+WKik/ARn2aciurWz2TkxKF
         G1eocXU1blItCxB0hmcVvwh9pvf4R3Y4QCLzYqreKk0nV94DDbc3fw2GTq3AiJbHBKUF
         EN5bKA0Vu11euw4GZELZebnP/zbc1OUnWortRwGPHb5yPvE+hmzOwXZjg6RdcrW1EzGp
         3l+w==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794223515; x=1794828315; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=7vd28LUNAcXQYC8IquR/rqALyr+9bzLZGM4hS9fWKb4=;
        b=PxOCBV0op861z6WQyVugdi0uw+Uy+XE0tRS7Uojte3TOvR7LCpO2KldYNMjaGvTSHJ
         e3TB18HMm+ZShH3anDGhTtymlBByitEeCgo6/DYeF5TVgVyoojsHcH5mG9T9KwWxpJtF
         nwAkYBkj8T9T8+dYdO5Ct1VZKy3a4DtzHSzEg/nasjXxRksAa+76BX9q0trrk2Ew5024
         Nai92aGU6dz9tEEQVpTs0JYcVUjgDjgaDVMYZcEg3C0vj2AF1QL8vGc8voVrl7JpoLvW
         0vZ22neMy1+NcetEa59mkM1wAJdx8EpFh+jkhFa9j5N2x1PEj1fZ4Fk8bF6czDNjXVPO
         VvrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794223515; x=1794828315;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=7vd28LUNAcXQYC8IquR/rqALyr+9bzLZGM4hS9fWKb4=;
        b=nNO8AEqfSu7E96+iHDop163lkOk3VTF3gRk2P+X815oSXs+vw2f1DCQm7e8dAfIWZn
         h0f550fkeqyw+J8zAlgmthqWHRwwJrVmUdWWv8Yva/FgaasInubtKmr010eIumSJZkGW
         LhaMNe5tGt6+wTp6nGvgYYvZMGT/oPkcu8R70IWGc6SxWjzz4KCIPD/4cIWXgfimyTgj
         Rb7Iot1iAoUmHDZoQA3dAXAnSTBgwjdtvIMX50rHK7gYqrJf3kK+hfbScbolNEOsxfz3
         s/bNkWni0H+HnPaEyhAYAi5wz/MgMJGd4gMl6QBaeMuH0Ew8GtajrIwllfSt2NLNEyVw
         BkYQ==
X-Forwarded-Encrypted: i=1; AL+hErFLqRXmpZRyskbbrU53RSbTtd/h85kAEA4sAK3lOPvbmUEt5QWkbFhFE3tzKZgHe2GylNIclKm8mQs=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9Tx5UlbGth8Ncl/+0S5v++NSsrx6pu5CujdUjnIsPUGYUo72bw
	8OT/rgDdIfwT1wKw0J/uolPJgAEMiQFDlRVcUAEm8gjsvcVDxEjQVyf75JH7e1dopO1/87ztkhK
	XmNmk14tvV6HrNLkYHs8DQqMDdAOFwUQ=
X-Gm-Gg: AYBFou0c411qx+PIDWf5cjJiAHdnCnuQftSWvSHoxZ+x7lRpnH3ExzvAVHgyL8QmG6u
	pkyaLAhBOqSpJGiBkrztRK5u63Mzsm8F8AYyzqkl2eidn7c6bVq8kXm4TPB2UfJRmtKw6GNF+BP
	yvRUKLngcQt/zomU0E2hx+BTuPgUd+8rvEtyAAAtluBfkaFxlH5GI5kW+mrwcWlgqKq/mTLb6h0
	b5sc8Ta7uwvJkNNm4xyXYj3aioZtxsVxsapeL7zXx1zn32Moq5eg1soL3vJhqgjxfhUVboTBBtm
	mr7ghQPEWLxBBiEpg3zUDW1wGkmnDZHF8/QDm/jzSIxJevb4uLmCMOdt27YuNhXbn2+bxo4+tfd
	2PILBJg4khXEAJgRGSIUeeh1vC97CPbeViA==
X-Received: by 2002:a05:6512:838e:b0:5c1:4c4b:6b68 with SMTP id
 2adb3069b0e04-5c14c4b6edemr743304e87.31.1794223515065; Mon, 09 Nov 2026
 03:25:15 -0800 (PST)
MIME-Version: 1.0
References: <cover.1793129971.git.mykola_kvach@epam.com> <815a067a28bdc1db079cc3ad068e3ef74b7afe5c.1793129971.git.mykola_kvach@epam.com>
 <28ba9787-ffd4-49fc-aafc-ebc552ce812d@suse.com>
In-Reply-To: <28ba9787-ffd4-49fc-aafc-ebc552ce812d@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Mon, 9 Nov 2026 13:25:04 +0200
X-Gm-Features: AclHuK_-QX6Il1HN-eD2mUnfTmfLHr_9dogFkBdSTB3mp6NboeAAbdfMfCaukVE
Message-ID: <CAGeoDV8JKy79pAtRUtSFBrZ6h09AGahJoQD3V5mmcc6Z1sB2jg@mail.gmail.com>
Subject: Re: [PATCH v13 13/14] xen/arm: Add vPSCI SYSTEM_SUSPEND policy
To: Jan Beulich <jbeulich@suse.com>
Cc: Mykola Kvach <mykola_kvach@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
	Mykyta Poturai <mykyta_poturai@epam.com>, Rahul Singh <rahul.singh@arm.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1794223515-022C0A5B-F3F83B02/10/78276251493
X-purgate-type: spam
X-purgate-size: 1626

Hi Jan,

Thank you for the review.

On Wed, Oct 28, 2026 at 9:27=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 27.10.2026 22:06, Mykola Kvach wrote:
> > --- a/xen/arch/arm/Kconfig
> > +++ b/xen/arch/arm/Kconfig
> > @@ -19,6 +19,7 @@ config ARM
> >       select HAS_ALTERNATIVE if HAS_VMAP
> >       select HAS_DEVICE_TREE_DISCOVERY
> >       select HAS_DOM0LESS
> > +     select HAS_HWDOM_SYSTEM_SUSPEND if !MPU
>
> Why the !MPU dependency? Nothing is being said in this regard in the desc=
ription,
> unless I overlooked something.

I kept !MPU to preserve the current hardware-domain shutdown behaviour
on MPU systems. This series does not add suspend support for Cortex-R,
and I have not tested suspend/resume there. I should have explained
this in the commit message.

This option lets the hardware domain suspend while Xen keeps running.
A separate control domain can resume it. This can also be used on ARM32
MMU systems. Host suspend is a separate feature.

>
> > --- a/xen/drivers/char/serial.c
> > +++ b/xen/drivers/char/serial.c
> > @@ -490,6 +490,8 @@ const struct vuart_info *serial_vuart_info(int idx)
> >
> >  #ifdef CONFIG_SYSTEM_SUSPEND
> >
> > +static bool __ro_after_init serial_suspend_available =3D true;
>
> Nit: I'm not going to insist on a change to the name, but prefixing a sta=
tic
> variable in a file named serial.c with serial_ looks redundant to me. (I'=
m
> also inclined to suggest s/available/possible/, seeing how the variable i=
s
> set / used.)

Agreed. I'll rename it to suspend_possible.

Best regards,
Mykola

>
> Jan
>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:26:29 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:26:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479889.1683793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNW8-000130-JA; Mon, 09 Nov 2026 11:26:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479889.1683793; Mon, 09 Nov 2026 11:26:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNW8-00012t-GC; Mon, 09 Nov 2026 11:26:28 +0000
Received: by outflank-mailman (input) for mailman id 1479889;
 Mon, 09 Nov 2026 11:26:28 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <xakep.amatop@gmail.com>) id 1xQNW7-00012l-T4
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:26:28 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNW7-009Cdk-2P
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:26:27 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1add7-8faa-0a2a0a5109dd-0a2a450cbf3e-32
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:26:27 +0100
Received: from [209.85.167.52] (helo=mail-lf1-f52.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1ade2-f479-0a2a450c0019-d155a734b909-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:26:26 +0100
Received: by mail-lf1-f52.google.com with SMTP id
 2adb3069b0e04-5be3d5927ceso594769e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:26:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1794223586; cv=none;
        d=google.com; s=arc-20260327;
        b=ThwHdZ4atO/hlVUtLFL+ZFmOn3LFbiw0StIiF+q9ZnLO7TGpYJQSzG8MuHN9XiNQlt
         Wefn44MORvgcgtJidjlgGvTCE3jpNu08uDeCWxIBOQFM9RAuIMoqqjfVtjn/bX63uHO+
         U8v+9NqvH8wFAuxK/4qV8OxztL+L2PkmpwPjiHBBfBYtXchAlqHIcMptMG6QtVEyfQqy
         Tc70ZWw4KgpkteQ26PonPxK4LrMD1mY0uJgTabL6V+jKUtdT6ucO0BHkGXcQuZo4VYCW
         5mf7Q64e7kb2RwA0TtMsgtSj7RElMdbSMXtwlF5c1iH4IHsv5O+hpWgMZJDHe2baPHXR
         oJXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=GC/WiRa4BFZiF0YhXG/4CNhU9lwpieaoIuaYRgb9DEU=;
        fh=QDE/14JMhnY+9Xh/wfu6xkFWlfrfzZLzf/2DjBOft7E=;
        b=r0Z3e+eTA9VqX34a76+LkYCcvfd8/Pa/QfVv69K0qwyyyE+Z+742yqUYYCepjf8umj
         3DAIqg+LEYyqY9BTEJJyWd3G6qvs5yEhdFf95VZvVU5iOd/im6NECX0DO9levvqN++Bc
         p3SK9e+ky+0nSmp8Tsm3/Pk/rum8rzm+Ew9pqY3Ua4boicyVpFdAfyh8yxV03wpQWb7C
         zfwK+7nbDeCfuW493UBsguQev4GpM5f7Ki7jLAKXGnWR8j2Nz3t9W9qoTqz3GGu2XXJ/
         Di9sECAbGCumkUP1OWiI6fHpdgLccM/UYeJ1P7BIIuc/P2CnDu67EXr/JaUwMfPGIPaS
         swbQ==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794223586; x=1794828386; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=GC/WiRa4BFZiF0YhXG/4CNhU9lwpieaoIuaYRgb9DEU=;
        b=wJ2eBVBpVtLXJrJzHPC+X6ERN8n0UuE+Z0aIh6Dd3ElYXslWOlITz8rJY47JiAkW5X
         j7+NqBDErhlBiw5d6cX7tGFLRE+3d6OHwGCXgFpzyzGD7sTQx7EniNaMPitKJIgQ2Xwi
         EvUV6Hd4TZzG5l107m9qwn+zWYiBv3Bj651u/YELC3mdlt/KLirETJmWkHGF9CQUzFUG
         h4BHU2I1ZrjJhLz00V+ob33zUjnc4SDs7jgr/KcARexr1ZQkEXNqlvlaf4ectHHzWH3h
         PnHDoHd8H/aLw7TW+ZkwI/ATMbbols2RIe6oZfpn0S4PkU6q5I/amh70Kbijiedu4h7L
         Qt4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794223586; x=1794828386;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=GC/WiRa4BFZiF0YhXG/4CNhU9lwpieaoIuaYRgb9DEU=;
        b=J/gM/rRzBcK0bKZ56d/mntj30aMAP3ZJ7bnb02bb5Yoe76ag0ZFUrCYbo/gk6CM/kr
         4o7z8SVzTYNRfmxExX+vcoxnoHWWgn820JceNnTbIGLmzcV+vlkfqiyKYAhgjOfHvLj+
         oO/8HS5knheqk5gEcSU/Ltp9IyQbSJXDHcuaNoG9EX2cd+FTAQHb5MU4yMXVfDi/8hhh
         IJC+IHpI2g7hZaJu0WAK2BKiauythIJPo8bbZRbyEBqq88zsMgC1JBjnzCENMDJ4nWlr
         CZpeXdEJLrgQqkGTYhoA4wrIjEd1pksMijvCPax3kh5L/qgWTaYsav6lozcida7cmmu2
         MFjw==
X-Forwarded-Encrypted: i=1; AL+hErGxVgUkeThNst5jQNywMzSmfhXVfuXe1+RvDd0VJwDLW1XOsZ1nwskGw4pvrq6DNcgrdYLfzExucd4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9p18BrYH/ZPCrdVKSEDZpp6nbwpYnAURBoJrJz19Kmfxy92qG5
	rLep04ECoFBkKtDt+fU4akdav1KQGr9AI0Bd6m0cifvZr8ezR91OaJG7wLD3mjUpEHvBaqARBNL
	nL/ZPfh4U7yzS5h0kT4u6eJGpxnfgFCk=
X-Gm-Gg: AYBFou3xZkPRokTDxCnxU0+o1sfn5zKDcT4ppHGKSoFMrdQhD1vrj45/gZuhiVA36Ia
	3FDRmpu9tSxb5kTRz1ogq5A8ZkQv3NNaZRcpHiHL1Rm6n/pTNjli3ODkSHlD2uQI91WyIzOKO6F
	Au5dqb4d7wMMKqajaS8grXS5KNiLwQ4XRJxA5ZZ/RdDXz+OJRLkHQirjdQbBkE1KC7RT8+r6ZKu
	qon4vufVVILMNXixCSaJWzKe3k0YTZsexIHnzyjAb9uGFijK1JZ3GLEy/CBocFmtjttQBWAkn9w
	8AfzI/hbKYqz4LTOYk/p6UMpCAapBbx/S3FRtNyBowcMnJPwxt1Yx6wGWfj2xV81wSwQKx1z38h
	p8r/dKXLIUEMU6NGMXiu3wbjgpu9eUqXAZL1D3Pb/oAV5Rt/B6KgaXKE=
X-Received: by 2002:a2e:a5cb:0:b0:3ab:3bf3:1606 with SMTP id
 38308e7fff4ca-3adfa3fa9a1mr9112571fa.24.1794223586013; Mon, 09 Nov 2026
 03:26:26 -0800 (PST)
MIME-Version: 1.0
References: <d54203457d68a3c6f8f311035a8e66468bb3a96b.1793138347.git.mykola_kvach@epam.com>
 <87fqxqsiix.fsf@epam.com>
In-Reply-To: <87fqxqsiix.fsf@epam.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Mon, 9 Nov 2026 13:26:14 +0200
X-Gm-Features: AclHuK8nTRTZ7LDwN0KNmtLCI6bRsGOuxzC8Z-uKS-6Ko1y80-A_BgsXDohnZq4
Message-ID: <CAGeoDV_y7SgJJ8yz0uYsiHdRvekDa435hLmt+vdrSObvz6R7Tg@mail.gmail.com>
Subject: Re: [PATCH] arm/smmuv3: clean stream tables for non-coherent hardware
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Cc: Mykola Kvach <Mykola_Kvach@epam.com>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Rahul Singh <rahul.singh@arm.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-d25034/1794223586-778D5A5B-10F79C32/0/0
X-purgate-type: clean
X-purgate-size: 5496

Hi Volodymyr,

Thanks for the review.

On Wed, Oct 28, 2026 at 3:48=E2=80=AFAM Volodymyr Babchuk
<Volodymyr_Babchuk@epam.com> wrote:
>
> Hi,
>
> Mykola Kvach <mykola_kvach@epam.com> writes:
>
> > Xen's dmam_alloc_coherent() returns cacheable memory. A non-coherent
> > SMMU cannot see writes that remain in the CPU cache.
> >
> > On Orange Pi 5 (RK3588S), NVMe initialization failed with C_BAD_STREAMI=
D
> > for SID 0x4100 while the CPU saw a populated L1 descriptor.
> >
> > Clean new stream tables before use and updated STEs before the existing
> > configuration invalidations. Clean the L2 table before writing its L1
> > pointer, then clean the pointer. Skip these cache operations on coheren=
t
> > SMMUs.
> >
> > See Arm IHI 0070G.b, sections 3.15 and 3.21.3.1.
> >
> > Fixes: 452ddbe3592b ("xen/arm: smmuv3: Add support for SMMUv3 driver")
> > Assisted-by: Codex:GPT-6.1
> > Signed-off-by: Mykola Kvach <mykola_kvach@epam.com>
> > ---
> >  xen/drivers/passthrough/arm/smmu-v3.c | 23 ++++++++++++++++++++++-
> >  1 file changed, 22 insertions(+), 1 deletion(-)
> >
> > diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passth=
rough/arm/smmu-v3.c
> > index bf153227db..a396e2b9e0 100644
> > --- a/xen/drivers/passthrough/arm/smmu-v3.c
> > +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> > @@ -637,6 +637,14 @@ static int arm_smmu_cmdq_issue_sync(struct arm_smm=
u_device *smmu)
> >  }
> >
> >  /* Stream table manipulation functions */
> > +static void arm_smmu_clean_strtab(struct arm_smmu_device *smmu,
>
> I think the name is a bit misleading. You are not cleaning the stream
> table. You are cleaning cache entries. Also, behaviour of this function
> is more generic, as it know nothing about stream tables and clears any
> cache line you are giving it.
>
> Maybe call it something like arm_smmu_flush_strtab, or
> arm_smmu_clean_dcache, or something along these variants?

Agreed, arm_smmu_clean_dcache() describes the operation more precisely.
I'll use that name in v2.

>
> > +                             const void *ptr, size_t size)
> > +{
> > +     /* Xen's dmam_alloc_coherent() returns cacheable memory. */
> > +     if (!(smmu->features & ARM_SMMU_FEAT_COHERENCY))
> > +             (void)clean_dcache_va_range(ptr, size);
> > +}
> > +
> >  static void
> >  arm_smmu_write_strtab_l1_desc(__le64 *dst, struct arm_smmu_strtab_l1_d=
esc *desc)
> >  {
> > @@ -735,8 +743,11 @@ static void arm_smmu_write_strtab_ent(struct arm_s=
mmu_master *master, u32 sid,
> >                * The SMMU can perform negative caching, so we must sync
> >                * the STE regardless of whether the old value was live.
> >                */
> > -             if (smmu)
> > +             if (smmu) {
> > +                     arm_smmu_clean_strtab(smmu, dst,
> > +                                           STRTAB_STE_DWORDS * sizeof(=
*dst));
> >                       arm_smmu_sync_ste_for_sid(smmu, sid);
>
> I see that there a lot of places where you are calling
> arm_smmu_clean_strtab() before arm_smmu_sync_ste_for_sid(). I think it
> is better to move arm_smmu_clean_strtab() to the beginning of
> arm_smmu_sync_ste_for_sid().

Agreed. I'll pass the STE pointer to arm_smmu_sync_ste_for_sid() and
clean the whole entry there before issuing CFGI_STE and CMD_SYNC.
All current callers already have the pointer available.

This will preserve both sync points around the dst[0] update.

I'll keep the explicit cache cleaning in the table initialisation
paths.

Thanks,
Mykola


>
> > +             }
> >               return;
> >       }
> >
> > @@ -762,8 +773,10 @@ static void arm_smmu_write_strtab_ent(struct arm_s=
mmu_master *master, u32 sid,
> >               dst[1] |=3D cpu_to_le64(FIELD_PREP(STRTAB_STE_1_EATS,
> >                                                STRTAB_STE_1_EATS_TRANS)=
);
> >
> > +     arm_smmu_clean_strtab(smmu, dst, STRTAB_STE_DWORDS * sizeof(*dst)=
);
> >       arm_smmu_sync_ste_for_sid(smmu, sid);
> >       write_atomic(&dst[0], cpu_to_le64(val));
> > +     arm_smmu_clean_strtab(smmu, dst, sizeof(*dst));
> >       arm_smmu_sync_ste_for_sid(smmu, sid);
> >
> >       /* It's likely that we'll want to use the new STE soon */
> > @@ -805,7 +818,11 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu=
_device *smmu, u32 sid)
> >       }
> >
> >       arm_smmu_init_bypass_stes(desc->l2ptr, 1 << STRTAB_SPLIT);
> > +     /* Clean the L2 table before writing the L1 pointer. */
> > +     arm_smmu_clean_strtab(smmu, desc->l2ptr, size);
> >       arm_smmu_write_strtab_l1_desc(strtab, desc);
> > +     arm_smmu_clean_strtab(smmu, strtab,
> > +                           STRTAB_L1_DESC_DWORDS * sizeof(__le64));
> >       return 0;
> >  }
> >
> > @@ -1700,6 +1717,9 @@ static int arm_smmu_init_l1_strtab(struct arm_smm=
u_device *smmu)
> >               strtab +=3D STRTAB_L1_DESC_DWORDS << 3;
> >       }
> >
> > +     arm_smmu_clean_strtab(smmu, cfg->strtab,
> > +             cfg->num_l1_ents * STRTAB_L1_DESC_DWORDS * sizeof(__le64)=
);
> > +
> >       return 0;
> >  }
> >
> > @@ -1766,6 +1786,7 @@ static int arm_smmu_init_strtab_linear(struct arm=
_smmu_device *smmu)
> >       cfg->strtab_base_cfg =3D reg;
> >
> >       arm_smmu_init_bypass_stes(strtab, cfg->num_l1_ents);
> > +     arm_smmu_clean_strtab(smmu, strtab, size);
> >       return 0;
> >  }
>
> --
> WBR, Volodymyr


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:32:20 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:32:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479900.1683802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNbk-00038R-8K; Mon, 09 Nov 2026 11:32:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479900.1683802; Mon, 09 Nov 2026 11:32:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNbk-00038K-5Y; Mon, 09 Nov 2026 11:32:16 +0000
Received: by outflank-mailman (input) for mailman id 1479900;
 Mon, 09 Nov 2026 11:32:14 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQNbi-00038E-5O
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:32:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNbh-00EOwf-EP
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:32:13 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1af3a-2eae-0a2a0a5409dd-0a2a4503ea76-6
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:32:12 +0100
Received: from [52.101.52.55]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1af3a-fae8-0a2a45030019-346534371dab-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:32:12 +0100
Received: from CH5P221CA0014.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::7)
 by MN2PR12MB4126.namprd12.prod.outlook.com (2603:10b6:208:199::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 11:32:05 +0000
Received: from CH2PEPF000166C5.namprd04.prod.outlook.com
 (2603:10b6:610:1f2:cafe::74) by CH5P221CA0014.outlook.office365.com
 (2603:10b6:610:1f2::7) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.13 via Frontend Transport; Mon, 9
 Nov 2026 11:32:05 +0000
Received: from satlexmb08.amd.com (165.204.84.17) by
 CH2PEPF000166C5.mail.protection.outlook.com (10.167.244.235) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 11:32:05 +0000
Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com
 (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.53; Mon, 9 Nov
 2026 05:32:04 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 05:32:03 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=pPHole946oxk0laIoQuarkJZtqKlvSq5U7ZxcTXxj1gxkWDlGMwQL1Ih4W7TREPvuKUNcao43guEpkPzypGliFOnUU4ThVzzTrl48T1wTaQFj+bjMUjmAr/GWkyTaED8odrfaRIvxrAhQgKzipmbx8tnrf2YMFzQ4N/94HqxZ+bAJOxwHF4r7Re994yPPXKtuBZB9Si9gk7NP1d5u47JMoLdA8UWaMm5/o1nm5h0B/G1f3ZM2CMWPR1IfhEJG9nFhhyrhGNZ6ZTVJ5KeCUMsaDeNtLMmsOqiwkdAh/m/O8bif2JVg5Wl62e0aGgrGcGAFlyysS+p6c0P8qFzGNtpNA==
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=KCC2QFjk4/TdeyLsr2Q51HacU9M/O1iT408OjmenAoY=;
 b=Lb9dCBBpQvUj08Gduk8Mkua/vcZbV5Qf9/axpGTlCZPQzrNjiRfpGyfAIq7DB2nrD7+8yLY4qznd6J94aZBBdouppOqT4WvHDDhIsv9SOHiF51Mdlq9KYAcar4BzHIAND6/IfV1SNFRLmBX3PI6fpAQAKXku0TbY4DsOEiS1exkFKKO89f3z49LE5IIxsvU6Vi8pvUuVq0AaThqSE7cvQ0TMHz8tFzJ+BIbvd3lviSCEZnm/Th3Pkjexl4V/+Zka5+rkuWrnCTqtpzpC1T1VSbn34GKy1AJJZC7PnHI/RgtD0w7diQzPo+eQct9NRKo3YtJ5PtfcFKMldWW+difXdA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com;
 dmarc=pass (p=quarantine sp=quarantine pct=100) action=none
 header.from=amd.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KCC2QFjk4/TdeyLsr2Q51HacU9M/O1iT408OjmenAoY=;
 b=PMCxrjZ4BMi6NWYFyOY+MLKNovbbnlzokUbMK0A/qR8iccZtMO8+08cS9YCFjykqmSOYJm/uQgQjv/AKNaq9pjaLVpSrl6reTzFbHmR1BJIWbwkgu57zGyn+e7FLoTwOmL1KWNPZSJU8uMhhEcgDIKZoJZD9e2AqbOlFYx9sNJY=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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=satlexmb08.amd.com; pr=C
Message-ID: <7ffac5cd-292e-457a-9895-294296743134@amd.com>
Date: Mon, 9 Nov 2026 12:31:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2] docs/fusa: add the Arm Generic Timer architecture
 specification
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Artem Mygaiev <artem_mygaiev@epam.com>, "Matthew
 L Weber" <matthew.l.weber3@boeing.com>
References: <20261105194910.1186029-1-ayan.kumar.halder@amd.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20261105194910.1186029-1-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF000166C5:EE_|MN2PR12MB4126:EE_
X-MS-Office365-Filtering-Correlation-Id: 7a04c5fa-685f-4fd8-f5a1-08df3e5514b3
X-LD-Processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
 BCL:0;ARA:13230040|376014|82310400026|36860700016|23010399003|1800799024|261009223027099003|261102123227099003|261028144727099003|261021121427099003|261021135927099003|261022113327099003|261022075727099003|261022105027099003|261026121527099003|261026140227099003|260925021911599003|260925021311599003|260925022911599003|11063799006|56012099006|3023799007|6133799003|10067099003|20046099003|13003099007|22082099003|18002099003;
X-Microsoft-Antispam-Message-Info:
 4EiRZJldZYzXVWKSlqj4jyJvkFg7JX+1UryTFy+1eNeYd70xE7igO4cFuAgZv37jRFtTlT+R2Po3OVZ5For4B8APuye90Z6YqG2cB5aOjobDoCz8VrmuHSL0bjp2XdyBixZBFh7wOUPYghmss//oev8UYG162TJWlfOAn9q5O+F0ahVTGt72peYeaEhRQXfaCeOygQ8GfRkOfxcto7GSpUnAIv/sRkBkePbLFXa8XwCJJsGtxECHrdJeJzTSg/7iNJo7fv3dA+54/pW4yFiWdihETbUGmrgR9p+xQK5UnU20x7D3mg3hU67RAo3bkMD5/k/P1ThWui7Q47DqSGgk4Q7AIZgEhr3yYakTbXMr94iRlBxkYVq/BN3uCcyZc9t5sY5K6gdnMPqUvEgASfremKRsjD6Y/AI9owF5L1Taeh1fcs4LN6ti5md4cXWI4HOneS61PZZ4niuF/YuW7YK3dBqM+OD+Bg24NjGfGjzGl2JyBRQddzL6YRVOvXhxyZYwEHJTLFWFre0F2J8CKyPMFirvirmed3VPr7B64YneWmTg7OnpfbIrfmUrVgO9LQ+0egVkWrW7Cv8G5Dh2qvljRvDdkNVoMHoxyHEToNgDrMmJU45V7uoQ9AuiYII9thZLLLjgiJKjHfGi5pGwIlYhPz6XJDwg748HEFib5adhnQU=
X-Forefront-Antispam-Report:
 CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700016)(23010399003)(1800799024)(261009223027099003)(261102123227099003)(261028144727099003)(261021121427099003)(261021135927099003)(261022113327099003)(261022075727099003)(261022105027099003)(261026121527099003)(261026140227099003)(260925021911599003)(260925021311599003)(260925022911599003)(11063799006)(56012099006)(3023799007)(6133799003)(10067099003)(20046099003)(13003099007)(22082099003)(18002099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
 gXHFfgr1RryXQgV2QkGM6zs7mHhZFCxLz253u5UYLB2VrdU0cuBWWyJXb0lvMrqVOhRyU3ZUIDNWPpnmBzu+4FpvRboYbcswRuWRrc6Qnr0jsZ5y1oMAFz6K6/0pZQb9lK4zqpYiepCClVAUXc5ff1olCV0FG/G5W2U6it3VC2zFDYfOQ85JqYAIJxqCBmjX2r+4I4jNmFGYkomMprsb5vitLI0Vih7FPmtAFUSdsAvZxUPhs1r/YkYnJDcA3nvl0WGPLifehHomiRF3bqW1/amRC7z1eUAWIadANSNjlboKDOw43UK1hFoJUiHIBFCdJH7Ao5Fa/tXj0xwGuHSKSnENnxf27nFh6wdeNBaVH9T655tC5lPuvQMPbF85G+deWpEzpGfg2fEy0TAawz5OmrULhd93xWKu7UOippm3l8gE05BEhsN4tskZVeLojg0o
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 11:32:05.0043
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a04c5fa-685f-4fd8-f5a1-08df3e5514b3
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=[satlexmb08.amd.com]
X-MS-Exchange-CrossTenant-AuthSource: CH2PEPF000166C5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4126
X-purgate-ID: tlsNG-33051d/1794223932-6E6CE4E9-0459F0E6/0/0
X-purgate-type: clean
X-purgate-size: 16471



On 05-Nov-26 20:49, Ayan Kumar Halder wrote:
> Describe how Xen uses the Arm Generic Timer over the lifetime of a VM:
> the two timers it exposes, how each relates to the system counter, what
> it sets up while creating a VM, and how it emulates the physical timer
> and handles the virtual one.
> 
> Also describe freedom from interference between VMs. The timers are
> emulated per vCPU, so timer programming in one VM does not alter
> another's. The virtual timer is isolated by the per VM offset in
> CNTVOFF_EL2 and the per vCPU context saved and restored across context
> switches; the physical timer by the per vCPU state Xen keeps for the
> trapped accesses. A VM that reprograms its own physical timer clears its
> own pending condition, which the architecture requires of a timer given
> a new deadline and which affects no other VM.
> 
> Add an architecture_specs index and reference it from the functional
> safety documentation index.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes in v2:
> - Dropped Matt's Reviewed-by: the patch changed materially after his review
>   (timer-name capitalisation and the footnote conversion below were not in the
>   reviewed version), so the tag is not carried forward.
> - Fixed typo "creeation" -> "creation" in the VM-creation section heading.
>   (Matt)
> - Corrected the CNTV_TVAL_EL0 description from "compare value register" to
>   "timer value register" (TVAL is the timer-value alias, CVAL is the
>   comparator). (Matt)
> - Grammar: "The interrupt behave" -> "The interrupt behaves". (Matt)
> - Capitalised and hyphenated the timer names in the interrupt-id table:
>   "Secure" / "Non-secure", matching Arm terminology. (Matt)
> - Converted the [1]/[2] references from a manual line block to proper RST
>   footnotes (.. [1] / [2]_), so Sphinx renders numbered citations and
>   cross-references. (Matt)
> - Added the arm64_generic_timer_plat_program_cntfrq_el0 design requirement to
>   the Covers: list, so the architecture specification covers all of the
>   generic-timer design requirements in
>   docs/fusa/reqs/design-reqs/arm64/generic-timer.rst.
> - Added a blank line between the interrupt-id list-table and the following
>   paragraph to silence a Sphinx "explicit markup ends without a blank line"
>   warning.
> - Rebased onto current staging; split out from the v1 2/2 series as a
>   standalone patch (arch spec only), adding the architecture_specs index and
>   wiring it into docs/fusa/index.rst.
> 
>  .../fusa/architecture_specs/generic_timer.rst | 251 ++++++++++++++++++
>  docs/fusa/architecture_specs/index.rst        |   9 +
>  docs/fusa/index.rst                           |   1 +
>  3 files changed, 261 insertions(+)
>  create mode 100644 docs/fusa/architecture_specs/generic_timer.rst
>  create mode 100644 docs/fusa/architecture_specs/index.rst
> 
> diff --git a/docs/fusa/architecture_specs/generic_timer.rst b/docs/fusa/architecture_specs/generic_timer.rst
> new file mode 100644
> index 0000000000..bb2d066f8d
> --- /dev/null
> +++ b/docs/fusa/architecture_specs/generic_timer.rst
> @@ -0,0 +1,251 @@
> +.. SPDX-License-Identifier: CC-BY-4.0
> +
> +Generic Timer
> +=============
> +
> +`XenArch~arm64_generic_timer~1`
> +
> +Covers:
> + - `XenSwdgn~arm64_generic_timer_probe_dt~1`
> + - `XenSwdgn~arm64_generic_timer_read_freq~1`
> + - `XenSwdgn~arm64_generic_timer_access_cntkctlel1~1`
> + - `XenSwdgn~arm64_generic_timer_access_virtual_timer~1`
> + - `XenSwdgn~arm64_generic_timer_access_physical_timer~1`
> + - `XenSwdgn~arm64_generic_timer_trigger_virtual_interrupt~1`
> + - `XenSwdgn~arm64_generic_timer_trigger_physical_interrupt~1`
> + - `XenSwdgn~arm64_generic_timer_plat_program_cntfrq_el0~1`
> +
> +Needs:
> + - XenTestCase
> +
> +This document describes Xen's usage of the Arm Generic Timer during the
> +lifetime of a VM.
> +
> +Introduction
> +------------
> +
> +The Generic Timer:
> +
> +- provides a system counter that measures the passing of time in real-time,
> +- supports virtual counters that measure the passing of virtual-time. That is,
> +  a virtual counter can measure the passing of time on a particular
> +  virtual machine,
> +- can trigger events after a period of time has passed.
> +
> +Types of timers
> +---------------
> +
> +Xen exposes two types of timer over the lifetime of a VM:
> +
> +- physical timer
> +- virtual timer
> +
> +::
> +
> +    +------------------+
> +    |  System Counter  |
> +    +--------+---------+
> +             | System Time Bus
> +             +----------------------------+
> +             |                            |
> +             |                            v
> +             |                        +-------+       +----------+
> +             |                        |   -   |<------|  CNTVOFF |
> +             |                        +---+---+       +----------+
> +             |                            |
> +             v                            v
> +        +---------+                  +---------+
> +        |  CNTPCT |                  |  CNTVCT |
> +        +---------+                  +---------+
> +        +---------+                  +---------+
> +        | Physical|                  | Virtual |
> +        |  Timer  |                  |  Timer  |
> +        +---------+                  +---------+
> +    ( PE )
> +
> +The physical timer measures the passage of time in relation to the physical
> +counter, CNTPCT_EL0. The physical counter starts from zero when the system
> +counter starts, that is, at power-on or reset, so its value is not related to
> +when Xen booted. Xen derives its own system time (``NOW()`` / ``get_s_time()``)
> +from it by subtracting a snapshot of CNTPCT taken at boot, so that system time
> +is measured from Xen boot. The physical timer is accessed by the following
> +registers:
> +
> +- CNTPCT_EL0 - physical count value
> +- CNTP_CTL_EL0 - control register
> +- CNTP_CVAL_EL0 - compare value register
> +- CNTP_TVAL_EL0 - timer value register
> +
> +The virtual timer measures the passage of time in relation to the virtual
> +counter. It is used to broadcast the virtual time (physical - offset). Offset is
> +set by Xen (CNTVOFF_EL2 register) during VM creation. As a result, the virtual
> +time will report time from the creation of the VM. It is accessed by the
> +following registers:
> +
> +- CNTVCT_EL0 - virtual count value
> +- CNTV_CTL_EL0 - control register
> +- CNTV_CVAL_EL0 - compare value register
> +- CNTV_TVAL_EL0 - timer value register
> +
> +CNTFRQ_EL0 reports the frequency of the system counter. However, this register
> +is not populated by hardware. The register is writable at the highest
> +implemented Exception level and readable at all Exception levels. Firmware,
> +typically running at EL3, populates this register as part of early system
> +initialization. Higher-level software, like an operating system, can then use
> +the register to get the frequency.
> +
> +Xen reads the counter frequency from the device tree (the timer node's
> +``clock-frequency`` property, or the firmware-populated CNTFRQ_EL0) and relies
> +on that value being correct; it is a configuration input to Xen's system time,
> +not something Xen can independently cross-check against hardware.
> +
> +Generic timer usage during VM creation
> +--------------------------------------
> +
> +While preparing the device tree for a VM, Xen creates a timer node (based on the
> +device tree bindings [2]_ and architecture specification [1]_) for the VM. For
> +this, the host device tree is expected to have a node for the generic timer.
> +
> +During the VM creation, Xen sets the offset (CNTVOFF_EL2) used to broadcast the
> +virtual time for a VM and assigns the following per processor interrupts for
> +timers.
> +
> +.. list-table::
> +   :header-rows: 1
> +
> +   * - Name
> +     - Interrupt id
> +
> +   * - Virtual timer
> +     - 27
> +
> +   * - Physical Secure timer
> +     - 29
> +
> +   * - Physical Non-secure timer
> +     - 30
> +
> +Xen reserves the 27, 29 and 30 interrupt ids in the virtual GIC. The exception
> +to this is for hardware VM, where the VM will be assigned interrupt numbers the
> +same as in the host device tree.
> +
> +The parent interrupt is linked to the Generic interrupt controller node.
> +
> +If the host device tree node for the generic timer contains the property
> +"clock-frequency", the same is passed on to the guest device tree.
> +
> +During the VM vCPU creation, Xen initializes the internal/background timers (one
> +for physical timer and one for virtual timer).
> +
> +Generic timer interface between Xen and VM
> +------------------------------------------
> +
> +VM can make use of both the physical and virtual timer.
> +
> +Physical timer
> +^^^^^^^^^^^^^^
> +
> +Xen traps VM's accesses to system registers related to physical timer (except
> +CNTPCT_EL0). This is done to allow Xen to emulate the physical timer for a VM,
> +that is, to check that the access is permitted and to translate the compare
1. "access" alone is ambiguous. Please explain a bit more the EL0 accesses.
2. not only "compare", also "timer" value because Xen also traps TVAL.

> +value the VM programs, which is an absolute physical counter value, into Xen's
> +system time. Xen does not route the physical timer interrupt to guest or itself.
I would also mention that Xen does not also use the physical timer at all.

> +Instead, it makes use of the internal timer used for the physical timer
> +emulation to schedule the interrupt injection into the VM.
> +
> +The flow can be depicted as follows:
> +
> +::
> +
> +    +---------------------------------------------------+
> +    | VMs read or write                                 |
> +    | any of CNTP_CTL, CNTP_CVAL, CNTP_TVAL             |
> +    +-------------------------+-------------------------+
> +                              |
> +                              v
> +    +---------------------------------------------------+
> +    | MSR/MRS instruction is trapped by Xen             |
> +    +-------------------------+-------------------------+
> +                              |
> +                              v
> +    +---------------------------------------------------+
> +    | Xen reads or writes to the register               |
> +    | on behalf of VM                                   |
> +    |                                                   |
> +    |  1. For read access : Xen returns the value from  |
> +    |     the VM's vcpu physical timer context.         |
> +    |  2. For write access : Xen saves the value in the |
> +    |     VM's vcpu physical timer context. Depending   |
> +    |     on the value, it schedules the internal timer |
> +    |     for interrupt injection.                      |
> +    |                                                   |
> +    |  Increments the VM program counter                |
> +    |  and returns control to VM.                       |
> +    +---------------------------------------------------+
> +
> +Virtual timer
> +^^^^^^^^^^^^^
> +
> +Xen does not trap accesses to system registers related to virtual timer.
> +The timer context (i.e. content of timer registers) is saved/restored during the
> +vCPU context switch. At save time, Xen initializes an internal timer to make
> +sure the VM's vCPU is scheduled at the time of the next virtual timer interrupt.
It's need to be enabled and masked for Xen to set up the timer.

Also, it's not that the VM will be scheduled at the condition time. Xen sets up
the internal timer so that the interrupt injection is not lost when the VM is
descheduled. When the internal timer fires, Xen injects the IRQ but it does not
mean it schedules the VM. When the VM is switched in, it will receive it's
interrupt.

> +The virtual timer interrupt is first routed to Xen, masked and injected into the
> +VM. The interrupt behaves in a level-sensitive manner, meaning the timer will
> +continue to signal the interrupt until one of the following situations occurs:
> +
> +- interrupt is masked
> +- timer is disabled
> +- firing condition is no longer met
> +
> +Xen masks the interrupt (using the CNTV_CTL_EL0 register) before injecting it
> +into the VM to avoid an interrupt storm that could otherwise occur if the VM
> +did not handle the interrupt properly. This masking is specific to the virtual
> +timer: Xen does not mask the physical timer when injecting its interrupt (see
> +the physical timer section above), and that difference is what the virtual and
> +physical deschedule test cases verify.
This is not spec compliant behavior and therefore we could write AoU for that.
Also, the test cases you mention do not exist.

I think this doc is missing the part about how Xen handles (or not) CNTKCTL_EL1
register and the event stream generation which is important part of Arm GT.
 > +
> +Freedom from interference
> +-------------------------
> +
> +The Generic Timer is emulated per vCPU, so timer programming in one VM cannot
Virtual timer is not emulated.

> +alter another VM's timer state. The mechanism differs between the two timers.
> +
> +Virtual timer isolation
> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +Each VM has its own virtual time base, which Xen sets in CNTVOFF_EL2 during VM
> +creation, so the virtual count a VM reads is its own. The virtual timer
> +context, that is the compare and control registers, is saved and restored per
> +vCPU across context switches, and the internal timer Xen uses to schedule
> +interrupt injection is per vCPU as well. Every emulation path acts on the vCPU
> +that trapped, so one VM enabling, disabling or rearming its virtual timer does
> +not change what another VM's virtual timer is waiting for, nor when it fires.
> +This isolation assumes the per-vCPU virtual timer context is saved and restored
> +on every vCPU context switch; that save/restore is the premise the freedom-from-
> +interference claim depends on.
Virtual timer accesses are not trapped, so "emulation path" and "the vCPU that
trapped" do not apply here. The last sentence repeats what the paragraph
already says.

> +
> +Physical timer isolation
> +^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +The physical timer is fully emulated, and the compare value, control value and
> +pending condition Xen keeps on a VM's behalf are per vCPU. One VM's accesses
> +to CNTP_CTL_EL0, CNTP_CVAL_EL0 or CNTP_TVAL_EL0 are trapped and applied to its
> +own context only.
> +
> +A VM that writes CNTP_TVAL_EL0 or CNTP_CVAL_EL0 while its physical timer has a
> +pending condition clears that condition and re-arms the timer. This is the
> +behaviour the architecture requires of a timer that is given a new deadline,
> +and it affects only the VM that performs the write. It is not a loss of an
> +interrupt belonging to another VM.
> +
> +System counter isolation
> +^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +The system counter itself is read-only to a VM and monotonic, so concurrent
> +reads from several VMs cannot interfere with one another. Both timers derive
> +from it, the physical one directly and the virtual one through the per VM
> +offset described above.
> +
> +.. [1] Arm Architecture Reference Manual for A-profile architecture, Chapter 11
> +.. [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/timer/arm,arch_timer.yaml
> diff --git a/docs/fusa/architecture_specs/index.rst b/docs/fusa/architecture_specs/index.rst
> new file mode 100644
> index 0000000000..395e3c1225
> --- /dev/null
> +++ b/docs/fusa/architecture_specs/index.rst
> @@ -0,0 +1,9 @@
> +.. SPDX-License-Identifier: CC-BY-4.0
> +
> +Architecture specifications
> +===========================
> +
> +.. toctree::
> +   :maxdepth: 2
> +
> +   generic_timer
> diff --git a/docs/fusa/index.rst b/docs/fusa/index.rst
> index 5f1e8acfc4..b3c72ec7d4 100644
> --- a/docs/fusa/index.rst
> +++ b/docs/fusa/index.rst
> @@ -7,3 +7,4 @@ Functional Safety documentation
>     :maxdepth: 2
>  
>     reqs/index
> +   architecture_specs/index
> 
> base-commit: c4a09c112c391ffc1aea33afff49ffb28156fbdb

~Michal




From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:37:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:37:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479908.1683813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNh9-0003hp-P0; Mon, 09 Nov 2026 11:37:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479908.1683813; Mon, 09 Nov 2026 11:37:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNh9-0003hi-Kn; Mon, 09 Nov 2026 11:37:51 +0000
Received: by outflank-mailman (input) for mailman id 1479908;
 Mon, 09 Nov 2026 11:37:50 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQNh7-0003hR-SU
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:37:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNh6-007Nat-Up
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:37:48 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6af1b084-8faa-0a2a0a5109dd-0a2a450599e6-22
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:37:48 +0100
Received: from [209.85.128.52] (helo=mail-wm1-f52.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6af1b08c-4cb1-0a2a45050019-d1558034a92b-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:37:48 +0100
Received: by mail-wm1-f52.google.com with SMTP id
 5b1f17b1804b1-4a2072b9832so4391965e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:37:48 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb1b64esm237279965e9.13.2026.11.09.03.37.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 03:37:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1794224268; x=1794829068; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LAoASTY4AWCZnJUTZA1NOog22BQeqonz6ob2RJ096UE=;
        b=ny9+cpqC0RubG6AIGebiGCSpEWpAVSfXXPG3CVc1utQiJJ1l2BpfOpRCUM0jjwA+b5
         45qhW6DMnHyUcMh3m4/HkWMqZTAPqLiCJHb/4NmIlywxY7w/paYeoSXPkUvxpYBDeLL5
         ALZm32zL0Ve9gr0cQhsRErZ7SQQZJ0iRxRJ1Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794224268; x=1794829068;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=LAoASTY4AWCZnJUTZA1NOog22BQeqonz6ob2RJ096UE=;
        b=UnNPQTgHrH+Xt3pM0mqq6hQEPKS2uLLi3nvRMVbVciXG37D+ZrLTBSIFSOd6Icq15w
         7gNXh3ff1CtaA9khpVieRaxvMcBonlssrUNDsG+kLXiTnCjAt5wcWbhMzEsDZN6wFJOA
         iF0JSgucViad7YMe10tMD6hh49C65x78wBXc5mWLAs7Xku4CmskWnz07P/nj7tHZ1y87
         MmnrbTBNHeFC7xNwAzXA7HFtehD+FPMvCpIOj0KsLuueJH7Fm8TmJj5ZdqWBMN1Rcy6C
         Fk4ohxAx4moeF3iWNpFYtK5N7RFXKaKRA8tQEFBHXcMgHrfKXHuU9Xp4aBweXEFQGjFa
         uGSw==
X-Gm-Message-State: APuU4Z/SDSjYCZGD3AhhD++cic59OEZKQ7QGZ6/A6sndoZ8jEoabVCKx
	wqffDQjXd4Yf00KucPX8SA4O9S0Ug8E0QL6qLYtDQAkGsgGUXYomyVi1AZ1mIv4RQfTOAym5cVX
	mRXKT
X-Gm-Gg: AYBFou3V2w00CVr32HsHsiTic6DT1rbSILhb6hEg3yIVr30VM/yOq6sK66tVWn6mGRw
	cvbXTrJq6XyuRjWHwlPU8g7XpPYFa4JgfypEiRZx2/INuE78sQLViaxigtK4Pi1vukex9XHurpd
	Sovj1ulrgiaBpjdh5sEaMr+/8/+DB32aDYhkhj9CsyMoesViz1ur9LWtTLH7SyW3/8Pe8yj1fr+
	ae8i9fs+xPCpBiz9jjey6cuEpRv1G8Rpkc0WOs5KADMAOyVWJo6yj7SBLdTkAzpXhaC0/+M7Ucu
	/iRzlOyQKpZy0pj26sA4l3+dOa2x9d7k9RkK3yR3oBKxC4HsY0JMJL96EnJAMSjbzdBG+JaDnDU
	bEYZLyo40Q8Z/Dsz7vBmgqPbQz/hNrBl0o3+UUQfZ+9YZZKtAG14Os0ldYzZLTZ7xO7SRpzJqwQ
	BPf6hcYAtpIvrhdMfkisUlTYIJ8cTJoYuerL6+VzvJdiy3JXQD/mTY5R/lcM62yzcVhpNZJ3NjZ
	xtdgrWNhOYDBcUsaf91+p1sEmPtAR9VZuiKcSrHWeIGQPQ2LSfNPZgHtZlPKDSa0vTw/cL/8Tdw
	eBfM15OvDVQ3Z/ZdsbzxEdkt9jKhkfXrMkO9lRElksNGbxeSknjEvdB6h4ebgn8m7nIe6HkW5li
	0yYqYkQxuQbj28v+O1wtY0JuM
X-Received: by 2002:a05:600c:4747:b0:4a1:c6f5:2450 with SMTP id 5b1f17b1804b1-4b963c7e7e1mr77028475e9.17.1794224267599;
        Mon, 09 Nov 2026 03:37:47 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH] x86/svm: Rework VMCB comments
Date: Mon,  9 Nov 2026 11:37:45 +0000
Message-Id: <20261109113745.2840610-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1794224268-73EB92A1-B328A532/10/78276251493
X-purgate-type: spam
X-purgate-size: 10255

Identify the cleanbits by name as well as number.  For single reserved fields,
use an anonymous bitfield to reduce the number of res names.  Use 3-diget
offsets consistently for offsets.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Jason Andryuk <jason.andryuk@amd.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Denis Mukhin <dmukhin@ford.com>

I've rebased FRED and Denis's AVIC to check how this extends, and everything
looks fine.  Both have some longer field names.
---
 xen/arch/x86/hvm/svm/vmcb.h | 152 ++++++++++++++++++------------------
 1 file changed, 76 insertions(+), 76 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 151d0f1dd1ae..9d89ce44fe55 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -385,28 +385,28 @@ typedef union
 
 struct vmcb_struct {
     /* Control area */
-    uint32_t _cr_intercepts;         /* offset 0x00 - cleanbit 0 */
-    uint32_t _dr_intercepts;         /* offset 0x04 - cleanbit 0 */
-    uint32_t _exception_intercepts;  /* offset 0x08 - cleanbit 0 */
-    uint32_t _general1_intercepts;   /* offset 0x0C - cleanbit 0 */
-    uint32_t _general2_intercepts;   /* offset 0x10 - cleanbit 0 */
-    uint32_t _general3_intercepts;   /* offset 0x14 - cleanbit 0 */
-    uint32_t res01[9];
-    uint16_t _pause_filter_thresh;   /* offset 0x3C - cleanbit 0 */
-    uint16_t _pause_filter_count;    /* offset 0x3E - cleanbit 0 */
-    uint64_t _iopm_base_pa;          /* offset 0x40 - cleanbit 1 */
-    uint64_t _msrpm_base_pa;         /* offset 0x48 - cleanbit 1 */
-    uint64_t _tsc_offset;            /* offset 0x50 - cleanbit 0 */
-    uint32_t _asid;                  /* offset 0x58 - cleanbit 2 */
-    uint8_t  tlb_control;            /* offset 0x5C - TLB_CTRL_* */
+    uint32_t _cr_intercepts;             /* 0x000 - Clean.intercepts(0) */
+    uint32_t _dr_intercepts;             /* 0x004   | */
+    uint32_t _exception_intercepts;      /* 0x008   | */
+    uint32_t _general1_intercepts;       /* 0x00c   | */
+    uint32_t _general2_intercepts;       /* 0x010   | */
+    uint32_t _general3_intercepts;       /* 0x014   | */
+    uint32_t res01[9];                   /* 0x018   | */
+    uint16_t _pause_filter_thresh;       /* 0x03c   | */
+    uint16_t _pause_filter_count;        /* 0x03e   v */
+    uint64_t _iopm_base_pa;              /* 0x040 - Clean.iopm(1) */
+    uint64_t _msrpm_base_pa;             /* 0x048   v */
+    uint64_t _tsc_offset;                /* 0x050 - Clean.intercepts(0) */
+    uint32_t _asid;                      /* 0x058 - Clean.asid(2) */
+    uint8_t  tlb_control;                /* 0x05c - TLB_CTRL_* */
     uint8_t  res07[3];
-    vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
-    intstat_t int_stat;         /* offset 0x68 */
-    uint64_t exitcode;               /* offset 0x70 */
+    vintr_t _vintr;                      /* 0x060 - Clean.tpr(3) */
+    intstat_t int_stat;                  /* 0x068 */
+    uint64_t exitcode;                   /* 0x070 */
     union {
         struct {
-            uint64_t exitinfo1; /* offset 0x78 */
-            uint64_t exitinfo2; /* offset 0x80 */
+            uint64_t exitinfo1;          /* 0x078 */
+            uint64_t exitinfo2;          /* 0x080 */
         };
         union {
             struct {
@@ -454,8 +454,8 @@ struct vmcb_struct {
             } task_switch;
         } ei;
     };
-    intinfo_t exit_int_info;    /* offset 0x88 */
-    union {                     /* offset 0x90 - cleanbit 4 */
+    intinfo_t exit_int_info;             /* 0x088 */
+    union {                              /* 0x090 - Clean.np(4) */
         struct {
             bool _np        :1;
             bool _sev       :1;
@@ -467,72 +467,72 @@ struct vmcb_struct {
         uint64_t _np_ctrl;
     };
     uint64_t res08[2];
-    intinfo_t event_inj;        /* offset 0xA8 */
-    uint64_t _h_cr3;            /* offset 0xB0 - cleanbit 4 */
-    virt_ext_t virt_ext;        /* offset 0xB8 */
-    vmcbcleanbits_t cleanbits;  /* offset 0xC0 */
-    uint32_t res09;             /* offset 0xC4 */
-    uint64_t nextrip;           /* offset 0xC8 */
-    uint8_t  guest_ins_len;     /* offset 0xD0 */
-    uint8_t  guest_ins[15];     /* offset 0xD1 */
-    uint64_t res10a[8];         /* offset 0xE0 */
-    uint16_t bus_lock_count;    /* offset 0x120 */
-    uint16_t res10b[3];         /* offset 0x122 */
-    uint64_t res10c[91];        /* offset 0x128 pad to save area */
-
-    /* State Save area */
+    intinfo_t event_inj;                 /* 0x0a8 */
+    uint64_t _h_cr3;                     /* 0x0b0 - Clean.np(4) */
+    virt_ext_t virt_ext;                 /* 0x0b8 */
+    vmcbcleanbits_t cleanbits;           /* 0x0c0 */
+    uint32_t :32;
+    uint64_t nextrip;                    /* 0x0c8 */
+    uint8_t  guest_ins_len;              /* 0x0d0 */
+    uint8_t  guest_ins[15];              /* 0x0d1 */
+    uint64_t res10a[8];
+    uint16_t bus_lock_count;             /* 0x120 */
+    uint16_t res10b[3];
+    uint64_t res10c[91];
+
+    /* State Save area, offset 0x400 */
     union {
         struct segment_register sreg[6];
         struct {
-            struct segment_register es;  /* offset 0x400 - cleanbit 8 */
-            struct segment_register cs;  /* cleanbit 8 */
-            struct segment_register ss;  /* cleanbit 8 */
-            struct segment_register ds;  /* cleanbit 8 */
-            struct segment_register fs;
-            struct segment_register gs;
+            struct segment_register es;  /* 0x400 + 0x000 - Clean.seg(8) */
+            struct segment_register cs;  /* 0x400 + 0x010   | */
+            struct segment_register ss;  /* 0x400 + 0x020   | */
+            struct segment_register ds;  /* 0x400 + 0x030   v */
+            struct segment_register fs;  /* 0x400 + 0x040 */
+            struct segment_register gs;  /* 0x400 + 0x050 */
         };
     };
-    struct segment_register gdtr; /* cleanbit 7 */
-    struct segment_register ldtr;
-    struct segment_register idtr; /* cleanbit 7 */
-    struct segment_register tr;
+    struct segment_register gdtr;        /* 0x400 + 0x060 - Clean.dt(7) */
+    struct segment_register ldtr;        /* 0x400 + 0x070 */
+    struct segment_register idtr;        /* 0x400 + 0x080 - Clean.dt(7) */
+    struct segment_register tr;          /* 0x400 + 0x090 */
     uint64_t res10[5];
     uint8_t res11[3];
-    uint8_t _cpl;               /* cleanbit 8 */
-    uint32_t res12;
-    uint64_t _efer;             /* offset 0x400 + 0xD0 - cleanbit 5 */
+    uint8_t _cpl;                        /* 0x400 + 0x0cb - Clean.seg(8) */
+    uint32_t :32;
+    uint64_t _efer;                      /* 0x400 + 0x0d0 - Clean.cr(5) */
     uint64_t res13[14];
-    uint64_t _cr4;              /* offset 0x400 + 0x148 - cleanbit 5 */
-    uint64_t _cr3;              /* cleanbit 5 */
-    uint64_t _cr0;              /* cleanbit 5 */
-    uint64_t _dr7;              /* cleanbit 6 */
-    uint64_t _dr6;              /* cleanbit 6 */
-    uint64_t rflags;
-    uint64_t rip;
+    uint64_t _cr4;                       /* 0x400 + 0x148 - Clean.cr(5) */
+    uint64_t _cr3;                       /* 0x400 + 0x150   | */
+    uint64_t _cr0;                       /* 0x400 + 0x158   v */
+    uint64_t _dr7;                       /* 0x400 + 0x160 - Clean.dr(6) */
+    uint64_t _dr6;                       /* 0x400 + 0x168   v */
+    uint64_t rflags;                     /* 0x400 + 0x170 */
+    uint64_t rip;                        /* 0x400 + 0x178 */
     uint64_t res14[11];
-    uint64_t rsp;
-    uint64_t _msr_s_cet;        /* offset 0x400 + 0x1E0 - cleanbit 12 */
-    uint64_t _ssp;              /* offset 0x400 + 0x1E8   | */
-    uint64_t _msr_isst;         /* offset 0x400 + 0x1F0   v */
-    uint64_t rax;
-    uint64_t star;
-    uint64_t lstar;
-    uint64_t cstar;
-    uint64_t sfmask;
-    uint64_t kerngsbase;
-    uint64_t sysenter_cs;
-    uint64_t sysenter_esp;
-    uint64_t sysenter_eip;
-    uint64_t _cr2;              /* cleanbit 9 */
+    uint64_t rsp;                        /* 0x400 + 0x1d8 */
+    uint64_t _msr_s_cet;                 /* 0x400 + 0x1e0 - Clean.cet(12) */
+    uint64_t _ssp;                       /* 0x400 + 0x1e8   | */
+    uint64_t _msr_isst;                  /* 0x400 + 0x1f0   v */
+    uint64_t rax;                        /* 0x400 + 0x1f8 */
+    uint64_t star;                       /* 0x400 + 0x200 */
+    uint64_t lstar;                      /* 0x400 + 0x208 */
+    uint64_t cstar;                      /* 0x400 + 0x210 */
+    uint64_t sfmask;                     /* 0x400 + 0x218 */
+    uint64_t kerngsbase;                 /* 0x400 + 0x220 */
+    uint64_t sysenter_cs;                /* 0x400 + 0x228 */
+    uint64_t sysenter_esp;               /* 0x400 + 0x230 */
+    uint64_t sysenter_eip;               /* 0x400 + 0x238 */
+    uint64_t _cr2;                       /* 0x400 + 0x240 - Clean.cr2(9) */
     uint64_t res16[4];
-    uint64_t _g_pat;            /* cleanbit 4 */
-    uint64_t _debugctlmsr;      /* cleanbit 10 */
-    uint64_t _lastbranchfromip; /* cleanbit 10 */
-    uint64_t _lastbranchtoip;   /* cleanbit 10 */
-    uint64_t _lastintfromip;    /* cleanbit 10 */
-    uint64_t _lastinttoip;      /* cleanbit 10 */
+    uint64_t _g_pat;                     /* 0x400 + 0x268 - Clean.np(4) */
+    uint64_t _debugctlmsr;               /* 0x400 + 0x270 - Clean.lbr(10) */
+    uint64_t _lastbranchfromip;          /* 0x400 + 0x278   | */
+    uint64_t _lastbranchtoip;            /* 0x400 + 0x280   | */
+    uint64_t _lastintfromip;             /* 0x400 + 0x288   | */
+    uint64_t _lastinttoip;               /* 0x400 + 0x290   v */
     uint64_t res17[9];
-    uint64_t spec_ctrl;
+    uint64_t spec_ctrl;                  /* 0x400 + 0x2e0 */
     uint64_t res18[291];
 };
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:38:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:38:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479915.1683820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNhn-0004Eq-2T; Mon, 09 Nov 2026 11:38:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479915.1683820; Mon, 09 Nov 2026 11:38:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNhm-0004Ej-Vx; Mon, 09 Nov 2026 11:38:30 +0000
Received: by outflank-mailman (input) for mailman id 1479915;
 Mon, 09 Nov 2026 11:38:29 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQNhl-0004EQ-Lp
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:38:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNhl-007Cen-2T
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:38:29 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1b0aa-2eae-0a2a0a5409dd-0a2a4503ed36-44
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:38:28 +0100
Received: from [209.85.208.177] (helo=mail-lj1-f177.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <xakep.amatop@gmail.com>)
 id 6af1b0b4-fae8-0a2a45030019-d155d0b1b0cd-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:38:28 +0100
Received: by mail-lj1-f177.google.com with SMTP id
 38308e7fff4ca-3ace304021eso6469211fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:38:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1794224308; cv=none;
        d=google.com; s=arc-20260327;
        b=GbGK+oDRtdJ+1vPG07R3074Um72HE0dZl76r3eDHqxo5mij9LGucbSmYg+K7mJdL80
         5yupvEs6zjRc65iamhwo5np5xwFYgl/RMThoVNqBNp1BGqq0zxEBtEUisDJWqKuGhCNn
         8NSQpZpph/7jBa7ZX1pQP1M343FMLrmJztuJhm/LM0cN4MubHbGZLvh2PdwPImLaaUdS
         Gs2o5+JrAHPM+RNaiHTBXW/S4wZsgFWKDmNl3FoJwxXIlctazFmg0qfYoYYqEgdSmBEw
         4xBwATKnM9dVYBRnYq2J/DtGCm3PmWDti8D66y9XjD23UcZ2LWcsvOckWJSNAMMO4zzP
         2nxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=sLJ0xQ2H2oUZAxE0i0Djcbh0RdCztIeWeMhcv3iqtVY=;
        fh=Mv3hG8hx3DTeEik7nXu79ZB59syOS+U84gOHQLKxW4g=;
        b=p1HSY7dD4Is8H8hM4/mmTbWhT7iAKdCbPPUBBIutHiwKjcdHw4MUfRrOvz+idKWNEl
         3A1EZB63EMTg60xi0FVwBFPI3pg9Xm3Ff91GhpWZOs6hpkNyLJBqhnNr3w5lo+y64k6h
         04yRkwM7U+nFo8GJ1ajS8tlXz+aYlgXgl97yErduj0vjZOMWAltRKqapFcz7mWLizGIU
         FKaFw8t03xFP+d/jgm6p+mM9mJs1KpV10/YEBrhaWG/5yRMkQNeBK6i6lCFv9LRhzzjx
         yXbrvcFmMIJDfeLmx5iLwNu+m+wei5gQS5LzfEgEQ3el8sHZhRlOp37ksUFMIfaGk/mZ
         aMrA==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794224308; x=1794829108; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=sLJ0xQ2H2oUZAxE0i0Djcbh0RdCztIeWeMhcv3iqtVY=;
        b=fAMzudZ0f3rbE1mESfvnpuPCiE9m5L00A/ZvEPja+9DrMa86dcRODCyDzUS4S5Jikt
         iUGBCHeRrwLpe4edspyYZ0GuL8WrsPjrLRYKHd0d4bO1Bgtvrub4Cz2XVSzxsY25O47s
         i5E1xyoDWUO9gQsB4bYlH4nqB8VahRKq+HpST/E4q7qUjro8/sr+zSX3wL+N74c+kpx7
         DHVG8eFku+vGca83vCH6kB16Nm+03+/6bL1MkaNW06F9zPll7kg1cKCH/zusBBghavv7
         fLstCxAqUlhCT7qVoSKYlMjrjsdi8QPd3e6slRMZzmO3/1ohisKI/AQcxYcQmF3KD2wr
         ppiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794224308; x=1794829108;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=sLJ0xQ2H2oUZAxE0i0Djcbh0RdCztIeWeMhcv3iqtVY=;
        b=my2d38P2qjtrw+3+3PNcDga4TNQK9lieAcdJLh/fsrB/el/CFjHk6oEp11gwdgKTv/
         u/uk/+tCAELw/bL/X3zduWvbxrzyvpX0KiY8RMLCY6fcX3VRGUh7hf5IJoyUUXugB0fP
         GEZ2J6DQS2DJ40+RuZ9GwuCJmzJW/QNmGM7MLVaqeE371FRZHVz0LQAqic7veM153vJp
         Uw8rH2NFBJG0atIc2JOLBz2l21Mns0toM5foAsdDmds1on6N/dT5Cw5hCEjlHbMC2Fcu
         5utcD69/NLID1nT7rkpRNFcm5GtzUw6/jt3bo6uVy1pJjEPR649HIu02C/27SCfhBVFC
         dF5Q==
X-Forwarded-Encrypted: i=1; AL+hErG5sstV9VtOuL01a15HfBhNE3UvbdtL5tMFXBnx4gJbqp6WOmHcpY05JCR8Z9oIUpP+RH7BVJ5QKPA=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/wVzuFlCFMug+CypwffSpi9cxnF2kC9GJ76P1O61KQuJR0LmYx
	xH8FZvnJlYM2RBqraVEzWJx8j/ivs1HRzMqtzrpo+VApqxFhd7HFOAVVDtJzpaa8vrJU9EXKkSl
	3T1ZAWuckWDpTZqZGHLqeGSz+eymLWnc=
X-Gm-Gg: AYBFou081jphBhT7ogZ8/sn0K1aKaOG2y15Qx/OVmtmnw5xy9Q6IlD/c4nFE7UfG2a4
	UfVZfSKNgCHtfF1e7nBk4ziktXUtRpvfC/LJ9n0ixOzg9cZwiOcLt5mjP9nYqrpCtrVWBOyO2ob
	+CMzxz+lwG9QX6YVp2+DtWVU7nebIwvgYKgG10tVE3HtLVQW0ENtyBtHNCvHWeRy3bAbSXNK6Y8
	yasT92g7106XPDsn2igMevF4+sBG1EQ9SEz27CLMAU/hJU2Dc0359LGAMyYb3x/k0LzLPTVYM23
	F06tRL3omRSpz5Kmrbx2lUMCJo9yFor7115U1z1nmQJ4PSP3oQsYTgHcncfa1gEhFbnBS16h4Sd
	nELTamkEhatDFTUA+5A3R9w7cpwgEpyG/Ug==
X-Received: by 2002:a05:651c:505:b0:3ad:6e95:50d6 with SMTP id
 38308e7fff4ca-3adfa4567damr6988111fa.15.1794224308146; Mon, 09 Nov 2026
 03:38:28 -0800 (PST)
MIME-Version: 1.0
References: <cover.1791384310.git.mykola_kvach@epam.com> <2f41315f-b533-471e-9f88-57f6eae384ec@suse.com>
In-Reply-To: <2f41315f-b533-471e-9f88-57f6eae384ec@suse.com>
From: Mykola Kvach <xakep.amatop@gmail.com>
Date: Mon, 9 Nov 2026 13:38:17 +0200
X-Gm-Features: AclHuK9lFtiaFqGFjc3lrlLAqhyOEyxMMEfVRfYP9waKJiTI7yfIGVbLhpOSLfA
Message-ID: <CAGeoDV8g9z0Ys-T_9K4JqpCcwn=tiFZCwFX3X6J6Ry+GpD0kzw@mail.gmail.com>
Subject: Re: [PATCH 0/2] tools/symbols: fix oversized names and token expansion
To: Jan Beulich <jbeulich@suse.com>
Cc: Mykola Kvach <mykola_kvach@epam.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
	Anthony PERARD <anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, 
	Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
	Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-33051d/1794224308-764FC4E9-E0BB02F4/10/78276251493
X-purgate-type: spam
X-purgate-size: 4413

Hi Jan,

Thank you for the review.
Sorry for the late reply.

On Thu, Oct 8, 2026 at 10:35=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 07.10.2026 20:11, Mykola Kvach wrote:
> > Patch 1 fixes the first bug. In SYSV input, local symbols are prefixed
> > with the source file name ("filename#symbol"). A long absolute build
> > path can therefore create a name longer than 127 bytes, even when the
> > symbol itself is short. A debug Xen build on an Orange Pi 5 (RK3588S)
> > crashed during the boot self-tests: symbols_lookup_by_name() expanded
> > such a name into its 128-byte buffer and overwrote the saved frame
> > pointer and return address. The patch rejects retained names longer tha=
n
> > KSYM_NAME_LEN during the build and prints the offending name.
> > Readable --xensyms maps are not restricted. Nothing changes for names
> > of at most 127 bytes.
> >
> > A build from a long absolute source path can now fail at link time.
>
> This isn't acceptable imo. Omitting such a symbol is a far less severe
> action (see below for another option).
>
> As a more general remark: We've inherited this tool from Linux. Any
> issues we find want cross checking there. If fixed there, taking their
> change is often preferable over making our own. To cover overly long
> symbols names, they have a check in read_symbol(). As we add the
> filename for static symbols there as well, I don't see why we couldn't
> similarly have the check there.

Agreed. v2 will report the name and skip the symbol, as Linux does,
and the check is in read_symbol().

>
> Furthermore, if the main issue is with long filenames, for static
> symbols an option would be to replace the filename prefix with some
> surrogate (either a shortened form of the path, or something like
> "...#").

I'd prefer to skip the symbol here. A surrogate such as "...#" makes
different static symbols look the same, and --error-dup can then fail
in livepatch builds.

>
> Yet further, the problem of (long or not) absolute path names is to
> be solved differently anyway. Not just for reproducible builds we want
> to omit them altogether. There are two separate proposals [1], [2];
> what's missing is a decision which way to go. (Both are pending a
> resubmission, yet perhaps not just me but also Marek is hesitant to
> do so when the decision which route to go is still pending.)

Agreed, both proposals address the absolute-path problem.
In my arm64 assembly test, both remove the absolute path from
the file symbol. With -fdebug-prefix-map alone, the path stays.

>
> > On x86, in-tree builds use relative paths and are not affected. An
> > out-of-tree build with the default config fails if the absolute path of
> > xen/ is longer than 78 bytes; the longest such name is
> > kexec_reloc.S#compatibility_mode.
> >
> > Patch 2 fixes the second bug. In the compressed stream, each symbol is
> > stored as [type][name]. A compression token can therefore expand to
> > the type byte plus a full 127-byte name (128 bytes), and write_src()
> > adds a terminating NUL. Its local buffer was 128 bytes, one byte too
> > small. The patch allocates KSYM_NAME_LEN + 2 bytes (type + name +
> > NUL). This bug can trigger with fully valid names, but only with a very
> > small symbol table; real symbol tables do not hit it. The new size
> > relies on the name limit from patch 1.
>
> Linux'es write_src() doesn't even add 1 to KSYM_NAME_LEN. The +1 there
> went away in 2.6.23, commit 9281acea6a36 ("kallsyms: make KSYM_NAME_LEN
> include space for trailing '\0'"). (Later KSYM_NAME_LEN was bumped to
> 512, btw.) Might we not want to follow that approach? (There then still
> looks to be an off-by-one due to the type that's being prefixed to all
> symbols. If that's indeed the case, a patch may want sending also for
> Linux.)

Yes. v2 will make KSYM_NAME_LEN include the trailing NUL.
Names are still limited to 127 bytes. The token buffer has
one extra byte for the type.

I also reproduced the overflow in Linux 7.4-rc2 with ASan.
Expanding the type, a 511-byte name and the NUL needs 513 bytes,
but the buffer has 512. I have not prepared a Linux patch.

Best regards,
Mykola



>
> Jan
>
> [1] https://lists.xen.org/archives/html/xen-devel/2025-09/msg00311.html
> [2] https://lists.xen.org/archives/html/xen-devel/2025-09/msg00362.html
>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 11:49:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 11:49:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479927.1683829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNsj-0006U0-W9; Mon, 09 Nov 2026 11:49:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479927.1683829; Mon, 09 Nov 2026 11:49:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQNsj-0006Tt-TV; Mon, 09 Nov 2026 11:49:49 +0000
Received: by outflank-mailman (input) for mailman id 1479927;
 Mon, 09 Nov 2026 11:49:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewprecious388@gmail.com>) id 1xQNsh-0006TZ-UU
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 11:49:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQNsh-00B5C8-06
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:49:47 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6af1b352-2eae-0a2a0a5409dd-0a2a4502d662-36
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:49:46 +0100
Received: from [74.125.82.176] (helo=mail-dy1-f176.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrewprecious388@gmail.com>)
 id 6af1b359-6ca4-0a2a45020019-4a7d52b0dc4b-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 12:49:46 +0100
Received: by mail-dy1-f176.google.com with SMTP id
 5a478bee46e88-36e99cf7bb3so1326925eec.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 03:49:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1794224985; cv=none;
        d=google.com; s=arc-20260327;
        b=cVrzL1MXsMbZAmLSAgK2vYDny7UD/AsC3OEucN8udFOxixgEDK0G4fepUpaF40eIqO
         ubwioYNlcAghD2ItXJOdZNU0I/2P05uRVGju2KuAfFeN7s8ewfsYNlolGLSmDJD85mbc
         a49KyHSOVgh+lrhE6LyAhA5FHx8gbLWd3tTBASKP2mnEfL1X5igGxxaN3f/hkX8psqLR
         djvP8LjiCBTSXyuEM8EofZFpEz/Z0rgdtzDbRLIgGaJMtxgyx1WIP8t8mVgxk30qvM2W
         2j4KVNk2FVFT+5t1/T81Fta8vB1rpQMfGNvapVqVXl+3EvhNcrZ4mfWkDTz0ygibyrgF
         5cFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:dkim-signature;
        bh=LtOrYHc1Ax6OJtqMC8SL51/lMQ2wukuFl3AdJzDZbd8=;
        fh=I7h234+YmwOM8yr1KnNiEZmhBiIsdOSuigyd/FjSY14=;
        b=ji5jihe3gyjqe7wFrd/tIUIr21J+Cnkl9RtvdxUC/iZz/i8u+Jstch1Mlmy3mAJGTX
         CqH/KEqprkZNwJZPzgdANQPXbT/cA0lFR9UMIvzVcLhfskUbkYhX0eq8ORZnEqZ1WRWM
         zd2Xlva31r2oFj1p/6ILYJEo6ThTdz3sHD9NNZhDkTlDogh1Jm86RddGFos2NDQZonMz
         Ho1VVqE3vG+iuS1owZD+z7seG5eG3guG72LyTx5ZAVZqgxdI281Q8jpe1RpyX/CQCfaf
         NQJRT/ndAJJGQ6g+WZytA6UnW3zGBh5gNFGMmaUFJVgcvNHVBgibc5LAXMvB0/NneFLS
         PAPg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794224985; x=1794829785; darn=lists.xenproject.org;
        h=content-type:cc:to:subject:message-id:date:from:in-reply-to
         :references:mime-version:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=LtOrYHc1Ax6OJtqMC8SL51/lMQ2wukuFl3AdJzDZbd8=;
        b=mWVdUC07o8ZjOeea3oE0bnMNjZ/WaWMQ1DfEysa5uVtVCTK0qnqH3wOOcwW65YNlbI
         FW6kV+WgeaDrICqtTuozW57xpo5vE/yywkBclbI+mrtAQc/OmpD/GRGY/VlfAR/bEjTZ
         dAS4i/Igp2V8Kg1hE41YFrB6VqHCMRvosqMXoib5OclX6RgLSkDexPr5+eJv1nsHg3xd
         LdfpVcez3MnHzuugRusKz9Vk5Toh0nvg8mWiYZvxqbySpINCA7f2cgREmhBVCal1oKWM
         KAWbWn+2MltL5eGmk2118eFDYa/QSi6ocVHGWEhKq9rlp57fEI/UZyep/XCejcePMKjR
         2h/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794224985; x=1794829785;
        h=content-type:cc:to:subject:message-id:date:from:in-reply-to
         :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=LtOrYHc1Ax6OJtqMC8SL51/lMQ2wukuFl3AdJzDZbd8=;
        b=jOwIH3dcARt/i/+mLro7lpT0XPh6LRb2vfHP2AEywpofx0s6rJkFyTVGcXHWHcJEGD
         wul6wq4mQ4st54P9R4la202yN1h/VvndNxzpoTzjaZwsm6J3yY9oqGHWovHWJS/LbMBb
         XwDV7Vvn7gVy+KHpQpBBEz0pGRKYbtIqoiDAQzVFB84yomYOdSJiruGRGrmJ0kMWreul
         T4fZC4gMqVoZVo/5eRQ3+Lz6gPQEn9/Vko3BL2OLbAW6H+ue0LOPLfQHchYO9c+NZVYC
         o3wYOh/OqvsaoLnSm+xZwb6RZoWUspzUETknt6tLkPh8KRm7F5maubh7c+tLbkmvxzLK
         cekw==
X-Gm-Message-State: APuU4Z9M+6jOlLwyj/GR3Tv0b3ITsT6KxJbcyY8HNOGb9GPJDcgQV6Mx
	6GXyqoyMouIuu3L5lfV2bdiqeuycz/AmN3Sm3xtJH7sBVRlrfQpaHdTiE27wKYMpwc0EyQ3FhhS
	vlZh8cm5YT8MsxH1NHwnwnPY+QtziY6A=
X-Gm-Gg: AYBFou1sAV30BVrYGe59Jo/EjPf90/zZbjpIqGWK2+SUlWWgCtnqoD0pWsMFgx0c72V
	v1P/ZLE8aRSgiA8W3B230/n7HkVPhKoqpGCZ2S6l0JNyfvkTASAzq4ucAY5eZbzCyvQk2OXcE1F
	Wwx9+em6jhUpbJKdQmxEm/e8VqtVpzseCMDj5qOxI1vZKODatDQvcYsa2q51kJ9ASrlvrX3U0K5
	aHLzS8HYBFqA6tRlHee+CSwAJEudFb8cmxAVeq9YQhUVfKyyiOzfwMeZ4SUHAoWR6auon3R8OrE
	VXfoF687qqMNrYWndjzl0M18RMBYVlc01mm0t4qfcagnna6sR43VHAKlAHJr421A6USblNoI96N
	9cOPPfG9TXcu5iveTi0ZmAbWIjEoHyES0zIY2
X-Received: by 2002:a05:701b:4241:20b0:1b2:366a:e7d1 with SMTP id
 a92af1059eb24-1b39febf913mr6197897c88.32.1794224984388; Mon, 09 Nov 2026
 03:49:44 -0800 (PST)
MIME-Version: 1.0
References: <20261105112627.235207-1-andrewprecious388@gmail.com> <c5cdef09-08da-426a-b005-d73112c6b9b1@amd.com>
In-Reply-To: <c5cdef09-08da-426a-b005-d73112c6b9b1@amd.com>
From: Andrew Precious <andrewprecious388@gmail.com>
Date: Mon, 9 Nov 2026 14:49:31 +0300
X-Gm-Features: AclHuK8iavIzbg8hjPkNUoJFe483J-v4YyYdAoORPDclwJrxy4g-pMmRUy2vBDY
Message-ID: <CAF14T9k4nz5gdz2jvRGZ7b7Ju2nJqzETmRHr6boAZFHHpGg1BQ@mail.gmail.com>
Subject: Re: [PATCH] xen/arch/arm: Correcting comment typos across xen/arch/arm
To: "Orzel, Michal" <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Jens Wiklander <jenswi@kernel.org>
Content-Type: multipart/alternative; boundary="000000000000d7779d065fd68ede"
X-purgate-ID: tlsNG-720697/1794224986-F1EAB2AC-182D1643/0/0
X-purgate-type: clean
X-purgate-size: 3943

--000000000000d7779d065fd68ede
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks for response

> Scanning Xen using codespell for typo matches I have found:
> 1. Xen native project sources: 3303 typos
Is this hypervisor only or entire Xen repo?

Entire Xen project repo - 3303 typos
Hypervisor code only has - 351 typos

However the scanner can be tweaked to ignore/include areas
such as code pulled from linux source trees and 3rd party stubdoms.

On Mon, Nov 9, 2026 at 10:28=E2=80=AFAM Orzel, Michal <michal.orzel@amd.com=
> wrote:

>
>
> On 05-Nov-26 12:26, Andrew Mbugua wrote:
> > No functional change.
> >
> The below text should be put after "---", given that this is not the
> information
> that should end up in a committed patch.
>
> > I have been making typo corrections across a variety of files
> >
> > Scanning Xen using codespell for typo matches I have found:
> > 1. Xen native project sources: 3303 typos
> Is this hypervisor only or entire Xen repo?
>
> > 2. Qemu Tree - 4908 typos
> >
> > Reasons for corrections:
> > 1. Keeping the codebase clean,concise for future documentation generati=
on
> > 2. Just because typos seem minor doesnt mean that corrections should be
> ignored,
> > while correcting these errors may not be pedantic I think its essential
> in
> > keeping things claan and more readable.
> I don't mind patches like this one, so thanks for the contribution:
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>
> I'll do the commit msg adjustment when committing.
>
> ~Michal
>
>

--000000000000d7779d065fd68ede
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Thanks for response<br><br>&gt; Scanning Xen using codespe=
ll for typo matches I have found:<br>&gt; 1. Xen native project sources: 33=
03 typos<br>Is this hypervisor only or entire Xen repo?<br><br>Entire Xen p=
roject repo - 3303 typos<br>Hypervisor code only has - 351 typos<br><br>How=
ever the scanner can be tweaked to ignore/include areas<div><span style=3D"=
background-color:transparent">such as=C2=A0</span><span style=3D"background=
-color:transparent">code pulled from linux source trees and 3rd party stubd=
oms.</span></div></div><br><div class=3D"gmail_quote gmail_quote_container"=
><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 9, 2026 at 10:28=E2=80=
=AFAM Orzel, Michal &lt;<a href=3D"mailto:michal.orzel@amd.com">michal.orze=
l@amd.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><br>
<br>
On 05-Nov-26 12:26, Andrew Mbugua wrote:<br>
&gt; No functional change.<br>
&gt; <br>
The below text should be put after &quot;---&quot;, given that this is not =
the information<br>
that should end up in a committed patch.<br>
<br>
&gt; I have been making typo corrections across a variety of files<br>
&gt; <br>
&gt; Scanning Xen using codespell for typo matches I have found:<br>
&gt; 1. Xen native project sources: 3303 typos<br>
Is this hypervisor only or entire Xen repo?<br>
<br>
&gt; 2. Qemu Tree - 4908 typos<br>
&gt; <br>
&gt; Reasons for corrections:<br>
&gt; 1. Keeping the codebase clean,concise for future documentation generat=
ion<br>
&gt; 2. Just because typos seem minor doesnt mean that corrections should b=
e ignored,<br>
&gt; while correcting these errors may not be pedantic I think its essentia=
l in<br>
&gt; keeping things claan and more readable.<br>
I don&#39;t mind patches like this one, so thanks for the contribution:<br>
Reviewed-by: Michal Orzel &lt;<a href=3D"mailto:michal.orzel@amd.com" targe=
t=3D"_blank">michal.orzel@amd.com</a>&gt;<br>
<br>
I&#39;ll do the commit msg adjustment when committing.<br>
<br>
~Michal<br>
<br>
</blockquote></div>

--000000000000d7779d065fd68ede--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:12:24 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:12:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479941.1683839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOEN-0002rZ-QA; Mon, 09 Nov 2026 12:12:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479941.1683839; Mon, 09 Nov 2026 12:12:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOEN-0002rS-Mx; Mon, 09 Nov 2026 12:12:11 +0000
Received: by outflank-mailman (input) for mailman id 1479941;
 Mon, 09 Nov 2026 12:12:10 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQOEM-0002rM-F9
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:12:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOEL-00Dxzk-ND
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:12:09 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1b899-e002-0a2a0a5209dd-0a2a4509b4a8-8
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:12:09 +0100
Received: from [52.101.43.30]
 (helo=SJ2PR03CU001.outbound.protection.outlook.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1b892-be1a-0a2a45090019-34652b1e0857-4
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:12:04 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BN5PR03MB8111.namprd03.prod.outlook.com (2603:10b6:408:2ab::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 12:12:00 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 12:12:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=WdXO2yjxvv4fvv5tpZjo14o4TtKHXJEGXuJXhQn+XU0ur3iQHv3XA25AMJQmjYHu+N8QtfFOEE2pZlyBN4e2bSeGTtj277c9OBw0LEQdSYSLSjS0odJ5/lRNbSt6fBFd8qMfFoi8hUQ/WTOa98YNzz2BQDwAZ134Y7DImTHteY8mpIQ641oPlEMbiEPg8RF3jfuxJB80d1bja3ZpJWNnOxHRJRWeWx8+c1m+HvyhTbBr/KH1cAlGZT+x6y6PLJbqhhRWaqbuR/I1qwGoZ82EY/gJTCJeJoPmldbIsYwOhNPutXKIlwQgNtcDQlDyCQkI+GEUkjgOkqynNLJT8KBKmw==
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=6oqk1oiG2+lagwnQT9xYbsTlLVcAyDLGEes14eZnORk=;
 b=DiVHzVZbiltpe9gebwp9e+5oGEb1VZ57QkUhjTSCL0ryvaiUF42jMaZephnM2eQlvQp3vBwdvlocS1QF8IsOjbD7uxQeA0Ik/qUR/rBJO22vOMwtb+IXguzCFTvwMQC3ea9EjEBbhw5cCAi361l6SIBSU0vDZXnecJFIhoxyHB4FknKyBtHe2Te+/aOT6iQndesx/cqfsrT7onSPVzld49Syi0j9Cmve3Wso2WhwQGOMYdTYCXX8AZktbMJUM9U2n+pDdIwhiPnxQ7eNy90//vHlhCHiWQ0geNJzD5PCYq3RIL0imWv1oK+M1CeHROfzP4NxBDXlRGQYR3ap9XPlNg==
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=6oqk1oiG2+lagwnQT9xYbsTlLVcAyDLGEes14eZnORk=;
 b=x15ZAxgM7pSReV1pLe51DVmX46//MVI5TJOzQvm7MafivhrjQBHf2e7LWzWdFjJmHmVVvRFWnLBgPqfF28vmz/yitZ3/3GyO6kC1fyToO2DR3yw317K6eDKKcsYOYm3K9m8Tgh4GgSxnvgTVHDOb2skwC+Xtzi/v9mjCnj5XwYg=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <2c3e53f0-c4e4-4242-aa59-f3ee12a16590@citrix.com>
Date: Mon, 9 Nov 2026 12:11:56 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Guillaume Thouvenin <guillaume.thouvenin@vates.tech>,
 Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH] tools/ocaml: Fix cleaning bindings test
To: Andrii Sultanov <andriy.sultanov@vates.tech>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20261106231732.482518-1-jason.andryuk@amd.com>
 <0037995b-dea1-42d6-85ac-cfa7719762a3@citrix.com>
 <936b4d91-cb3c-4be5-9945-4c150afbec3a@amd.com>
 <1794213821.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@vates.tech>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <1794213821.8631fc262581453bbf619ec5b2062170.1a1bf7a3b52000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0213.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a5::20) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BN5PR03MB8111:EE_
X-MS-Office365-Filtering-Correlation-Id: 06c14213-afda-46f9-9b97-08df3e5aa832
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|366016|1800799024|11063799006|4143699003|56012099006|261021123027099003|261021121427099003|261022075727099003|261022105027099003|261009223027099003|261026140227099003|261026121527099003|261028144727099003|261102123227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	47YFWQgIuR07KQjnLmQyiVZiZsBHqUagyuLvR9szDt1McApxsTF7wWNiTDaQ2UVR19fzUac2NWTDlNwoMPEGReG0EewBb3VTH544RmQ19H9ebbj1Sof6uL4AqeblNTfTT5wxLqKFJ8nol9KFaX4S+PDJi8FMpB7TGqCywhX0rH/DyNOeuWi/vHV4UgxCaJjrXr3JHQobezm28VuycIiT10aneY4tLCdBMJBR9l+unNcKS871/kenimZunpvvvFi3xhQSuwPE+tjzdMoJD1kRgt1nQkeJy/8gsCaktGPdYzPjkotyMQ4JtMu8+8Nj747EqVYJ2K3tb7ggf844edkQHHRLmrZ45rgFuwt01pP+GFqFjpPK6phfOKcNXzALBqDsWmEFhzpy4807ZeH7I/8MBdDXYKC2n/1PC7nP7PaCGKWcMWmFazZncC+IFfMrW9XXULhixyzQ9DTRhBXGoXD6kMxAgkQh4XRe0Xdd8HS6A+goxVE+wo/udAX57+CSrtLFRZ14wAjfPDU6YZoamkQS1SpTDp3BnvPzjYfadBgE5iqq/pXMQtAh7U1zEiDgfT4AFsgSrhr7ElaGNQJGkOoi+V0y1Ije1x1ragt99OoocwXBlFzbrP/vfIc8Eh37gu2YphiI+8jrQ7pVFz7H0z7iLzA4E92LoRqF4sQVyLn1CLQ=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(366016)(1800799024)(11063799006)(4143699003)(56012099006)(261021123027099003)(261021121427099003)(261022075727099003)(261022105027099003)(261009223027099003)(261026140227099003)(261026121527099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bDJKVHhrYUk5dnNWVVkycXhaUitmeHJrUFVPRzRnYXJEejNLT3hZZjRGbTQ1?=
 =?utf-8?B?cVhNUWtNaUNlZkxrUGlKdVVPR0ZPbEw5OWZrVnlCbGM5TmlQbWpVc2dncGpZ?=
 =?utf-8?B?WFJUeE9DMkplajNOS293ZXMrZWVNTFZNVWsrTUVXcnBtVWF1VDVrYzlVRWlG?=
 =?utf-8?B?OFhldlJHa3I1Z0Y1Q0lpMDd3eWVjZ1Q5ZmdBbEV3Z0V0ZFJCeVlZeW45M0JP?=
 =?utf-8?B?Y2p5dGV6TWQrUFBmdUhpUlpHdGdVUWlmdUFqWHBnRjlhQUEzSm51WlZCdzlq?=
 =?utf-8?B?YTM3dzBHZUNpZWlFNlhCYlUyQTh1SjEzTnVhZjVpbGNYVkxUbmZtYlAycFlr?=
 =?utf-8?B?UlcwVTdXNVV2OXRITFBCNG9NNk1kVkxTYTducmdHc2tNaENhRHRpemR4UzdI?=
 =?utf-8?B?a2svUU1LSStWOTRkUmpQTy9VRjR1YXpGd3J4R3grYkpwRWx1VURmMi95NTEx?=
 =?utf-8?B?Z1BiZTlJZVNjUFk0c2phdjJuS2d3amUwTDVKSVNpeEVIei91WDNUMUtCekZJ?=
 =?utf-8?B?OUk5SmdxS0RPVGU3K1BjQTUyKzZUMFg1WWVDSW94QkdZQzRpQ3NOU1VPQ0xw?=
 =?utf-8?B?VGV5RTJoN2tnSndBK1IzOG5UbXN3ZUppUkpqaDFzUTk2VitRank5ZW4zWUc4?=
 =?utf-8?B?SUcwL3IrYTNvZHNaSHM2cFFpaFZMMjkvdGQwVVRYSmtKZmZhRE4yVHJ0OWND?=
 =?utf-8?B?TzhDZHIvbG9tZzcvb2hiOGlDeEZ0emN1Vm1qQWJKRDNBbWVFQjFmK3NEbDlw?=
 =?utf-8?B?a1dVWCs3NmNsaGgxazQxaDQzSDV3R0NLREt6WnhUK0pxOVd6WDRUYldaTUM4?=
 =?utf-8?B?N3dKYjBKbUhZbXdKWE1SQWVTUit2dGYxTEZuRGJ5ejBZdmxsSGVBTWFwTkVv?=
 =?utf-8?B?dW50Q092SXZaa2lRL1p3OUQwUTIzQTUwY3lPNEpPR1MwQVhScjI5ZTZ4WTJn?=
 =?utf-8?B?aDdIMGVER0sxeU4vb0pzVlFEbGxBcmRCQW1CQzlEQWczcktHbVVRTGtnNTlQ?=
 =?utf-8?B?VEtSZytDekpNZHd2aG1LbXdBbi9qTjZnbHUwWTFvUlBQVUF4dnYyNkhhYTEy?=
 =?utf-8?B?bjhOaWFjSnZLSUZ4RHZxUElCRWZDWWFPMTNNcjFiUTYxZmlPTE4wWVF4NG1h?=
 =?utf-8?B?NG9jVVNYbVlndEMwT2VlbmlwemNkVXI1NjVUNnY0U3ZUS3Z1YzFacmpTT3Z4?=
 =?utf-8?B?aXV0Z0dCb0NaQXlLWWZOc011d0dsT21xTUZrTG1HdEZwaUU3TW5OQjdxWjlr?=
 =?utf-8?B?UnhQUHJRRHExOXV6OWpJVGxUU09IVHBUSXFTWGhUUFhuZGlyd3lyTlI4Y3JV?=
 =?utf-8?B?eFp5SGVkZkk1Q3ZRZUtHVE1EVDJZNm1XM2xVeGk0eUdDU0pkMXhxVXhsRzdh?=
 =?utf-8?B?dHMvYW1PTEh0U0t0SkUzaFpWdHpWSWhwZjFydGV1dk1vNFA2QVhkZ0VKWHF1?=
 =?utf-8?B?NVNMTFAyUjJJckhTUGxNR3VxeEdldjZvaDlFdGJZTzFRMnN3WnVWN21KMzV2?=
 =?utf-8?B?SEpaUzBXTGUrWXlDMnUvaGY1M015NFVCLytYY3JidXpaMGU0NVhSY0FmVFAw?=
 =?utf-8?B?M0R2T0dSc1VWZldKakI1T1phV0Y0U3FBd2Q4Mlc3WFY2S3dNaW5ZVElFQ3Nk?=
 =?utf-8?B?bS9lT2tCNmNHK0g5KzZjcGtaTm1iVmFFUDZDUWdkeFRTU0NCa3h3TFBuYTlR?=
 =?utf-8?B?ZnlFYm9YS1ZhUUs1WEFIZ2srWHlVSnZRUFVDS1RCNzlWbTFON1NhTjJxVkhV?=
 =?utf-8?B?RDI1S2Fic2o4UmtiYVZVSWpVMDc4OW5hQzR2bnpLY1dYSUVIcTd3SjBmRHFx?=
 =?utf-8?B?RzBoanVCY3J1SlRjdlhneUVJakljWWZ5T00xNmw5a0tlSmRoTGQzWm8vMXV5?=
 =?utf-8?B?UjBmbUUwZ1lsVGFsa0ZweTB0MzJQRWlRc2k1WDBBVVl5bFh0SjVyZ3BWZGor?=
 =?utf-8?B?SHRpZW94SGJTWkRwTjhsUXp5TlcyVTVRRnRPeWd1R2xPWmhidXYyMUNtWGxJ?=
 =?utf-8?B?d3hySkNrSWhoL3VSL3lQVHR1UXYyd3JhVU1kcXZSTXZzcTBOdUI0dVByNVQ3?=
 =?utf-8?B?Nk9uaktscTZ3czFVSlBOdi9QSjdCaUJYVCtNRXo1cTBhS1hMQVpTMTRubGk4?=
 =?utf-8?B?TWh3b2lyYjBHa3ZHNEZMa2Z0bkxuZE9iUVNuaURBZmptQm8xSGVlb2lDanB6?=
 =?utf-8?B?a1pnTjVpbWoyeGp5L2VKUmZxMFZsbXNDYWFUOVVyMzl2S3Foam0yTndvVU1t?=
 =?utf-8?B?Y29wNlRNYjByUTg0L01RRDV5YmttR3hNU1pyczd2VTVHeUVFNmtEYXd2MjZ1?=
 =?utf-8?B?Z2hEMEl1Tm55a2dKdWkwRFAvZXdmQjZRWXdDSElVVHNwL1JzMlAwQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 06c14213-afda-46f9-9b97-08df3e5aa832
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 12:12:00.1876
 (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: NNmha/6PJqRlkpHN/PKAH4AqpBm04iHcfFwc8GaC4dPLtnuPqWF/PH9eYSyEbCIFXpD2ExqoNLM7zM3kHHeFDaSq5j8D6W6c3X6drokXYLM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR03MB8111
X-purgate-ID: tlsNG-bad1c0/1794226324-BD2CC034-80005476/0/0
X-purgate-type: clean
X-purgate-size: 1404

On 09/11/2026 8:43 am, Andrii Sultanov wrote:
> On 11/7/26 00:11, Jason Andryuk wrote:
>
>> On 2026-11-06 18:19, Andrew Cooper wrote:
>>> On 06/11/2026 11:17 pm, Jason Andryuk wrote:
>>>> make clean fails in the bindings tests:
>>>>
>>>> make[7]: Entering directory '/home/amd/xen/tools/ocaml/tests/bindings'
>>>> rm -f .*.d *.o *.so *.a *.cmo *.cmi *.cma *.cmx *.cmxa *.cmxs
>>>> *.annot *.spot *.spit unix.cmxa -ccopt -L -ccopt ....
>>>> rm: invalid option -- 'c'
>>>> Try 'rm --help' for more information.
>>>>
>>>> Split the compiler flags out of the LIBS variable, since LIBS is
>>>> passed
>>>> to rm.  The individual *.cxma files are deleted in their respective
>>>> directories.
>>>>
>>>> Fixes: d97847e858f1 ("tools/ocaml: Gitlab CI test for bindings")
>>>> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
>>>
>>> Lovely...  Sorry for breaking this.
>>>
>>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>
>> Thanks.  I just double checked and unix.cmxa isn't in the directory
>> on a successful build.  So the whole thing could be moved to LIBFLAGS
>> or a suitable name.
>>
>> Regards,
>> Jason
>
> Could we follow tools/ocaml/xenstored/Makefile further and
> move to BINDINGSLIBS or something like that?
>

Yeah, lets do that.  It keeps it firmly away from variable names which
have common meanings.

I'll fix up on commit.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:26:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:26:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479950.1683847 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOSN-00055P-Td; Mon, 09 Nov 2026 12:26:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479950.1683847; Mon, 09 Nov 2026 12:26:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOSN-00055I-R6; Mon, 09 Nov 2026 12:26:39 +0000
Received: by outflank-mailman (input) for mailman id 1479950;
 Mon, 09 Nov 2026 12:26:39 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <yhlee@isslab.korea.ac.kr>) id 1xQOSM-00055C-LH
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:26:39 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOSL-003obI-2M
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:26:37 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bbf2-2eae-0a2a0a5409dd-0a2a450cb26e-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:26:36 +0100
Received: from [209.85.215.171] (helo=mail-pg1-f171.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bb46-f479-0a2a450c0019-d155d7abc8b6-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:23:35 +0100
Received: by mail-pg1-f171.google.com with SMTP id
 41be03b00d2f7-cdb681de50eso215414a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:23:35 -0800 (PST)
Received: from yhlee-960QFG.Davolink
 ([2406:5900:1044:110c:3d70:1891:1a66:b169])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3b127912d62sm6836905a91.11.2026.11.09.04.23.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:23:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=isslab-korea-ac-kr.20260707.gappssmtp.com header.i="@isslab-korea-ac-kr.20260707.gappssmtp.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isslab-korea-ac-kr.20260707.gappssmtp.com; s=20260707; t=1794227014; x=1794831814; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=I1mjq6MyeA/h9ILt+jeLEku3zY9kIcs3gn2aPes0dRk=;
        b=PtDx28ru6azKqHTZjrK/lWTd1ubu8uKI01FUP5ROxpEeHH+Z4QysmRdmlSmstfm5sf
         40HhboIk4k+PJt4rSi/NWEFibjhGJ3E3qqbYZSett2SwJorEBuARfEfzOhNoGKAHckvU
         ehs5Ch++6AF8tkGHhIcMcQF2uAQ83k6cN3DFXDLpF8e+wo2WwG+ftIVFDUSJyM5ri9ry
         srbIrS3u0I5oinkWtK3lGR6mxU8P/HNynd7JXLRKtMLaieTUQgGrK55PHdsTO/qZy609
         DHgU33/YvV21J7QjTwStUe2DNbMk+VNHIeluXGU2xjWR9GuIXN7nP+Vii0XOkWbU1atA
         DbWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794227014; x=1794831814;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=I1mjq6MyeA/h9ILt+jeLEku3zY9kIcs3gn2aPes0dRk=;
        b=ZAcYFfwTnlXifFZAfVzyFcrebR3AC8I61v1UJHJAn2FiHvycjEPdyj+5nEbLfcpCpb
         OS0Zz3+rbt7d8DPMSJ0vS0veAwT2IxI9mAWZ9kpwuIUGDu59hm0ty+U4A8TOACAB6oAG
         BN1uMcXM6BNMQAW9/9UYJjTh/ksFHnB7Odle0VgtOcsZBl7RG+WwlzXhxaxGP5FjcDgK
         I20L4vDa3P+t97710qKUxXy1UI7SfFXNJ5/pSoxmKWLmFjhrVQ2S30sDdkVjZH0y1TrE
         9rCeCZghFKidqLHatCKOQxQAYQ2OQmpzCXBtnspQGeGm9vgf4PgFbIhM+Q3G1SUe64gP
         1VQg==
X-Forwarded-Encrypted: i=1; AL+hErEDRzNzB2NF5wx2ULgyZYmyAqcYyFPYJ4fxtKqlki0MdO91khSeZt7ADJeNZ7d1CD3bq45LWjMU6vM=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/ZtnePlW0LVewDT7NsxEdL18BcIZrWUMRQGWehMxef7h21bqRr
	5fZRCRpt1BfWgJTX3ztQcwc9/jGZ1/ZEGPmkkhJHFR3WlaN/ja48sa74NEOv4stsYHw=
X-Gm-Gg: AYBFou2oYhDx6CKg20RZDA/4nzl2sKHPG+DWP2uVazYsQqCCMEw6oekixhOql97oDOS
	Oz8ZBo966chh9mhuZ+6Evc0tssGAuhx7aMht9ZLhlyD/bNQEIN2/lMVzU8Yk91z0vOOXdCYdupz
	mBWXHXzJGo9Q67FKbCi0NuE+SIF6tkdtPmS5rh8zJLR3fwOJ66P7CxUWEnU0pxwRfkhYZ0n+IBT
	Kg7KHbEAJNsayyFBVb5wTYQYVaIOQ7Z1x75GXUzPE6URO5KNL3kxpwCbke0SnCWm7zahhJDGaUe
	MgFcC0gLE95ASOt9XnjsLpHIrxS8Ts9WqwLA5r5c0PyqFgeyMgPwuUGhhXP17Z067UoNgRgG0/G
	9ERMEQMzUGl1npfbVMiWF5yGuu0LsKnyOLwXNB4ipRBvi3JLnZrbqKIQGH/fX9/58TbVfSLFba9
	xLFY+/sWHGU14UcTc7oDWi0yMpsjIuPMGnQfwTNpIGbe3CSlvvNqkANaC28lvHvx3C1H+sbwB18
	wA1kTUTshir8Xv0tHGPcm887+TJ20wx+mSfW4NbFzaTvg3Scd4UPN9YveDM6ZYOI7efiC7HRVts
	zynAnEUiJzaZ8FUdwF1YWlxcWMULssiBSmWp1Vf5YirGmcdMeymaEiHog6o54ggHgcN4rO/ssPB
	ONJ/G7LXj3OvkZy/QhQV3QUGWAztGOaw2rHZE09ZsIIPdBBQHfGQq4StycDE=
X-Received: by 2002:a17:90b:3dcd:b0:3b0:b35e:b373 with SMTP id 98e67ed59e1d1-3b12d0e71famr3766813a91.4.1794227014043;
        Mon, 09 Nov 2026 04:23:34 -0800 (PST)
From: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	boris.ostrovsky@oracle.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: [PATCH 0/2] xen/pvcalls: fix the backend error path and a workqueue leak
Date: Mon,  9 Nov 2026 21:23:22 +0900
Message-ID: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1794227016-51B35A5B-3773BBD8/13/0
X-purgate-type: clean
X-purgate-size: 929

1/2: every error path in pvcalls_new_active_socket() runs list_del() on a
{NULL, NULL} list_head, holding socket_lock.  2/2: the per-socket workqueue
is never destroyed.  A frontend reaches 1/2 with one bad ring_order and 2/2
by connecting and releasing sockets in a loop.  Nested-Xen lab: 5 of 5
cells oops as shipped and 0 of 5 patched, a normal connect moves the same
bytes both ways on both arms, and backend/pvcalls/<domid>/0/state after
teardown reads 4 before and 6 after.  Reported to the Xen security team
first; PVCalls is not security supported, so posting here as suggested.

Yehyeong Lee (2):
  xen/pvcalls: unwind pvcalls_new_active_socket() step by step
  xen/pvcalls: destroy the per-socket workqueue on release

 drivers/xen/pvcalls-back.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)


base-commit: 7475ea8b58616b33c04afb976cf0fbaad9dd63fb
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:26:45 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:26:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479951.1683856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOSS-0005I7-3S; Mon, 09 Nov 2026 12:26:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479951.1683856; Mon, 09 Nov 2026 12:26:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOSS-0005I0-0v; Mon, 09 Nov 2026 12:26:44 +0000
Received: by outflank-mailman (input) for mailman id 1479951;
 Mon, 09 Nov 2026 12:26:42 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <yhlee@isslab.korea.ac.kr>) id 1xQOSQ-0005Hm-Jz
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:26:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOSQ-003of7-0w
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:26:42 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bbfa-bab6-0a2a0a5309dd-0a2a45059e20-18
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:26:41 +0100
Received: from [209.85.216.43] (helo=mail-pj1-f43.google.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bb4b-4cb1-0a2a45050019-d155d82be044-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:23:40 +0100
Received: by mail-pj1-f43.google.com with SMTP id
 98e67ed59e1d1-3ae7626d14aso330888a91.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:23:40 -0800 (PST)
Received: from yhlee-960QFG.Davolink
 ([2406:5900:1044:110c:3d70:1891:1a66:b169])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3b127912d62sm6836905a91.11.2026.11.09.04.23.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:23:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=isslab-korea-ac-kr.20260707.gappssmtp.com header.i="@isslab-korea-ac-kr.20260707.gappssmtp.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isslab-korea-ac-kr.20260707.gappssmtp.com; s=20260707; t=1794227019; x=1794831819; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=MdOqoOEupQFbfi4QuNxY8pxCO+41UFytiQ7mtp1SJ10=;
        b=KfTQZtuWcd8psAEeksLDeAa2CN+sTobr2LE7UzB1DRYvQYzYw9YfdxKxsmgiY8dl7+
         KeVcPNoktmJ1dASobt7D3yIV8bljAFwSyBsFK0Rxh9iZS7RmDoIrYK8QbGDQX/riHjVQ
         x7NpUDB6Vi2+/+XpE2J9OCdXLU1KHEJt9Ldbkpu+R+Su/CcSeJd+eL5AbTyLVafoXsz6
         L3iddhKgMR8NWhkBtWEEdYefnyjNzIKy2IICuRIKip1Kki5lzA2XnNShtrEfbm4LqXyH
         mg3czQPrAM1pseR02XJIjyIrnjJxYEdamdkqKS6cxsPgah02pl386Qxg1rTmZDbOBb68
         KHZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794227019; x=1794831819;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=MdOqoOEupQFbfi4QuNxY8pxCO+41UFytiQ7mtp1SJ10=;
        b=easdZfwd36D/dz4U/ZW3Sh0HXWAEgCi53Zp2p65DulU3XzWHsAKVJ0Ngjji/WUFRVY
         3qliMMwIGeL6j8faescCm1dW/p6ebZaP4UfcOoyucXduqODclWMxSCzLsQYIvUJJnsiB
         7u0s5spgEpDNOqPk1KP5eq5AY9um1G2HEHWeI7/ZTFxMmMuKuKLWueWDI0FcOTjPddjz
         qPq6hKHhb252KZqykkJJBUpHOZrHA27DQBgZItzk2plw8gdrb4jkY6mSbdTzV055eZtG
         RWYagto7PrqHxrK964yovReBkmWk8gkYBF00Iw00Hh2vO6FaP+mNm2TYbAUgAUqj1pdq
         unXA==
X-Forwarded-Encrypted: i=1; AL+hErEtDLNcR4YTu6o316GyYMuWJWEENn0QFf2F/YAfrc0vWAw0pv/XEApanV7Dr7ABZGPE9x2bWPx/vSE=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9iTKGK8IDODGPj1y0unAQVG6cEK7nBU0BdLHISSQ0VU9+JL9Ae
	VAfZwzOSd0Zr5OwaUq6o7EW3ujCTGS3djRj+6aXwDSeHMIdDPa40wRys/IEK+LdS8DA=
X-Gm-Gg: AYBFou0cNRkhGYjXKwzI2/YimJkQs85q11HQ0sUC18uVeA2jN68HUSqnSKQWh5XVLwg
	7HkuF2nMjFC18/yWrdwDtbqzeVWATqx62que1VIX8ZMj04Ca6huepp0XOwlHVLbd+X6FzKPazLN
	bz2jMnyIq0BQUsJKvACqgbrgSx8u7VbEM06cx1V3UYVQ70YHOe2pJTigGUr2hMuO9h1KB8ja9t0
	ijPSt5COO4RjG8N1HuzW5rojv1giv9/Wi5bJ/1nARowu2O2E0wp6o/35n22oTi5oxFoMODkH+DV
	swDlJlB5WLwYRtj/xAnVH8hSyJw11SHXcMmVFYfdcZDjc43we1aJt/qIIfaSD0VRsK5xnm2D0wJ
	eWo8gVZyn2MHD+cNnNTQ1tCzZZ12MMoS4ByunBMCduBWyoaikNW2Gj43/1/IJcHtAj8phMXP2l7
	IG8oNzery1YBRllDgSxrjkZIZj8SHjd4I4TmSZ1I0cUK2Ar7Z+QyzMwx0o+1ErgFWHSTfrBeaBU
	9vXj9SrYHYEPrkyedJhpOjfh5d+I8pml3Ea0YvAIbpHOvSUVRCOhYxunNhaEFssJi/MCuRQCJMk
	sc4wkMlWIFCXryfAsSQOpHEjaCxZO9lP3IAxhWYIcBx0pT6mPpMd2Uikri3q3bFLE5IYgNoxEqB
	Js4JgcQNozgOgzXVk6ysK2Zqp1bkxDTPrSprCUg==
X-Received: by 2002:a17:90b:2547:b0:3ac:8af9:4a77 with SMTP id 98e67ed59e1d1-3b12d4204e3mr3448890a91.10.1794227018821;
        Mon, 09 Nov 2026 04:23:38 -0800 (PST)
From: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	boris.ostrovsky@oracle.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: [PATCH 2/2] xen/pvcalls: destroy the per-socket workqueue on release
Date: Mon,  9 Nov 2026 21:23:24 +0900
Message-ID: <20261109122324.30134-3-yhlee@isslab.korea.ac.kr>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr>
References: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1794227020-734BC2A1-868A180F/13/0
X-purgate-type: clean
X-purgate-size: 1504

pvcalls_new_active_socket() gives every active socket its own ordered
workqueue:

	map->ioworker.wq = alloc_ordered_workqueue("pvcalls_io", 0);

and nothing ever destroys it.  pvcalls_back_release_active() flushes
map->ioworker.register_work and frees map, but the workqueue and its
pool_workqueues stay allocated, so a frontend leaks a workqueue per socket
it connects and releases - a loop a guest can run as long as it likes.

Destroy it after the IRQ is unbound, so no new work can be queued, and
before map is freed.  pvcalls_back_ioworker() takes no locks, in
particular not fedata->socket_lock, which the backend_disconnect() caller
holds here, so draining it from this point is safe; the flush_work() just
above already has the same requirement.

Fixes: 5db4d286a8ef ("xen/pvcalls: implement connect command")
Cc: stable@vger.kernel.org
Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
---
 drivers/xen/pvcalls-back.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index dcefa91a40cd05..27aa06289a7b92 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -456,6 +456,7 @@ static int pvcalls_back_release_active(struct xenbus_device *dev,
 	xenbus_unmap_ring_vfree(dev, map->bytes);
 	xenbus_unmap_ring_vfree(dev, (void *)map->ring);
 	unbind_from_irqhandler(map->irq, map);
+	destroy_workqueue(map->ioworker.wq);
 
 	sock_release(map->sock);
 	kfree(map);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:35:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:35:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479965.1683865 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQObJ-0007Xw-T6; Mon, 09 Nov 2026 12:35:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479965.1683865; Mon, 09 Nov 2026 12:35:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQObJ-0007Xp-QB; Mon, 09 Nov 2026 12:35:53 +0000
Received: by outflank-mailman (input) for mailman id 1479965;
 Mon, 09 Nov 2026 12:35:52 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQObI-0007Xh-Dg
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:35:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQObH-00E2A8-G4
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:35:51 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1be0f-e002-0a2a0a5209dd-0a2a4502c036-46
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:35:51 +0100
Received: from [209.85.218.50] (helo=mail-ej1-f50.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1be27-6ca4-0a2a45020019-d155da32e8a7-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:35:51 +0100
Received: by mail-ej1-f50.google.com with SMTP id
 a640c23a62f3a-c3f04e0e65fso110641166b.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:35:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d6a4ae2f7sm163580266b.51.2026.11.09.04.35.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 04:35:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794227751; x=1794832551; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=a7gLySX+k4X+4xSSXNG+TYiO93SwjQOFP5vq7/zYcDI=;
        b=HIHoq8dBOTibHTByDOS1gXCdS3ninOGYaGuxCVh+OsmiDuihYDu2tcPG5vy3lbDYhd
         SzTVqsxABBqFrUWyewpHj4WeOSbXlvh2WXXGKClSCvVW/6VInnAb8iuZbWNXmp+lAdqI
         HYOPlbzkPX/f/EFghPK9HhpsUHVHkNnVkYcz0TDRUVQffLghD7EJp+E9al55SZuOR5L+
         YG8AjSALsDFDgTNz8if9N90lImEWFkJmDk2Vk+atrwSeY4DmIRViDpqfDHTpkHQD7T7D
         2kCnyorsSe30v3Cr79yu20dX07cdBhdr+CbWoJYWzHoJEZ884AdeABeCVOsjJDNfhq5w
         Zxcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794227751; x=1794832551;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=a7gLySX+k4X+4xSSXNG+TYiO93SwjQOFP5vq7/zYcDI=;
        b=qkGuO1Az3vEubFeOPqjHeX6SSMwDYhos+exHJeg684uPLrnOt1xirhu9gmC6JcjVJb
         LHhuVqDGaefijiplnZmukUCxJOwFUGK+p2AcTzvTNtGLjyMM2H6okwkrtmXo7mAbkJ4z
         mknBDcwiuDcOQytVeH5zTJ68SN4ummDW26coeM0TihkCDSozrnldovbf5fRvDYXO6e/M
         GHKYIX+eJ2DNw+uXu/qY/oTjW+W9RrWuhFuYxBsci0lUaqGajwtQgJmYFAku6j973jMR
         Zo4v9sKiHyxHC94Y4GQ7D1V6AQcizhcq5Hfw3w3zWKmA5Etn+keufWVpq5mGYnXwjE2a
         xWLA==
X-Gm-Message-State: APuU4Z8fg1wSk2791qm6YxX8yO0Cm9s3P+PRbZNPauoj+he0d//ADQ0X
	ZAYa7NYStheJqvLMBsuW3iIYgI8r7U6Ly+VON/J1PTnNrRynzRny2DSZw/kiIHhjdw==
X-Gm-Gg: AYBFou3Bsri5vv4wtOBQU38y1DwCVE0SdHealjCXrwHBKjtN41QpEox0MiMVB2M89Xm
	AQ54gWjLsZoap9T+qu2UKDDKY+HkkJR30aKTnEslgSUcwrj5ZQc735y23BgoXd0NH+8HAucz6Je
	1iW3iNzMnl+DMPG7ZkelAlY1tLILSIbVD/e8lkWlqQEljjHYsqHw3EhVsVFFI0GEr/NpySwaFf3
	q8HIf2BS9VTU5uKSiesW/enZpFLfcIngOqWcjbo/2V4HUG30Xo+ynF7NmQXEcHjaG7mvXGpHPa9
	raNH+ODvLZYZ6VQkWecfdt4cFzKUiz4g683XMKGaStKPGekNPqEAqk1msaqsmvjTRsB9tGHactE
	Y/vGDx/av/4Ovs1Ec85G4RZNabvhqG/3yWIrpqMbNNllOAGaQETcRzLqjq4jzek/1m5bf3ZHwgr
	mGlXFrv6MLmSiUukmQruZQLiGTIwx0G8KrDCfGmQhxnAa/oXele52hSiSIx7QI21HjXyR5lB1Co
	6CGSQHwY9o2rgNBUO9dl9obsKE+EK+9iAhyTq6KTJIGDP5jPN1F9P+jAJjmqHEHBpSUro4QbDYu
	gZfmCI0Xu+MqAPFKENImQUASzPEC2jM4AR107yo3xcBU0r2GAUDKtvjMC7A37PJRN5hQt1DCe6k
	4S0lrMGqlWxA51gEHWUUsw6jMZQ5umaFTy8O/uA==
X-Received: by 2002:a17:906:d550:b0:c3f:a728:b437 with SMTP id a640c23a62f3a-c4d6ddbf213mr294381066b.45.1794227750865;
        Mon, 09 Nov 2026 04:35:50 -0800 (PST)
Message-ID: <70b2744a-a75b-4375-91ef-0d1c8a4ec807@suse.com>
Date: Mon, 9 Nov 2026 13:35:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: compile out __set_fixmap_x() when not needed
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Teddy Astie <teddy.astie@vates.tech>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
 <72b9f0c1-94d0-4e87-bcc3-d1c49baead0d@suse.com>
 <629945f7492fbb65d1378ea05d1cf43d@bugseng.com>
 <26698add-7103-4d64-84ff-af40ac9c4fe8@suse.com>
 <866c42195d447dcf1e7ad1192645020c@bugseng.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <866c42195d447dcf1e7ad1192645020c@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1794227751-30FCE2AC-4C832D55/10/78276251493
X-purgate-type: spam
X-purgate-size: 3368

On 09.11.2026 11:50, Nicola Vetrini wrote:
> On 2026-11-09 10:04, Jan Beulich wrote:
>> On 07.11.2026 08:23, Nicola Vetrini wrote:
>>> On 2026-11-03 12:28, Jan Beulich wrote:
>>>> On 03.11.2026 10:42, Jan Beulich wrote:
>>>>> Only HYPERV_GUEST has a need for an executable fixmap, so with that
>>>>> option
>>>>> unset __set_fixmap_x() (and l1_fixmap_x[] in turn) is unreachable.
>>>>> Address
>>>>> this Misra rule 2.1 violation by introduction ofa new FIXMAP_X 
>>>>> Kconfig
>>>>> setting.
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>> ---
>>>>> Why is __set_fixmap_x() not found by Eclair as a rule 2.1 violation 
>>>>> in
>>>>> the
>>>>> x86_64-amd job?
>>>>
>>>> Same question actually for both functions converted to static by [1].
>>>> This
>>>> apparently being a wider problem, are we (again / still) having an
>>>> issue
>>>> with the scanning of the linking steps?
>>>>
>>>> Jan
>>>>
>>>> [1] 
>>>> https://lists.xen.org/archives/html/xen-devel/2026-10/msg01537.html
>>>
>>> It was a Xen project decision not to consider for R2.1 functions that
>>> are never referenced: you can see in
>>> "automation/eclair_analysis/ECLAIR/deviations.ecl". Of course that is
>>> reversible and I am in favour of not hiding those violations, but the
>>> rationale for the justification that was given is that the compiler 
>>> will
>>> indeed DCE those:
>>>
>>>     * - R2.1
>>>       - The compiler implementation guarantees that the unreachable 
>>> code
>>> is
>>>         removed. Constant expressions and unreachable branches of if 
>>> and
>>> switch
>>>         statements are expected.
>>>       - Tagged as `safe` for ECLAIR.
>>
>> For the cases at hand (and then likely many more) the compiler doesn't 
>> DCE
>> anything. Imo the wording here is completely bogus. It may say "If the
>> compiler implementation guarantees ..." Which it might do for static
>> functions, but aiui without LTO it never will for non-static ones.
>>
> 
> I'm not saying the configuration is good as is. Ideally that should be 
> removed or restricted to static functions and the likely newly present 
> violations triaged.
> 
>> Then I'm also puzzled by the deviations.ecl entry:
>>
>> -doc_begin="The compiler implementation guarantees that the unreachable 
>> code is removed.
>> Constant expressions and unreachable branches of if and switch 
>> statements are expected."
>> -config=MC3A2.R2.1,+reports={safe,"first_area(^.*has an 
>> invariantly.*$)"}
>> -config=MC3A2.R2.1,+reports={safe,"first_area(^.*incompatible with 
>> labeled statement$)"}
>> -doc_end
>>
>> First - these are two different deviations, and hence imo should be two
>> separate entries. More important here though is that I can't connect 
>> the
>> two config= lines to the deviation of unreferenced non-static 
>> functions.
>> There's nothing "... has an invariantly ..."  or "... incompatible with
>> labeled statement ..." there? How would the full diagnostic for an
>> unreferenced global function (or data item) look like?
> 
> These two have nothing do do with functions never referenced indeed: the 
> rule is about unreachable code in general, of which functions that are 
> never called is just a subcase.

Yet then in your earlier mail which part of deviations.ecl did you refer
to?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:42:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:42:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479974.1683875 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOhO-0001B2-Je; Mon, 09 Nov 2026 12:42:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479974.1683875; Mon, 09 Nov 2026 12:42:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOhO-0001Av-Gq; Mon, 09 Nov 2026 12:42:10 +0000
Received: by outflank-mailman (input) for mailman id 1479974;
 Mon, 09 Nov 2026 12:42:09 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQOhN-0001Ap-3X
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:42:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOhM-00Ak3V-2A
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:42:08 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1bf94-8faa-0a2a0a5109dd-0a2a4506afaa-20
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:42:07 +0100
Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1bf9f-195a-0a2a45060019-d155802ac4f8-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:42:07 +0100
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4a214af2076so5785915e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:42:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b8fdda3358sm138916945e9.0.2026.11.09.04.42.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 04:42:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794228127; x=1794832927; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=PWAkjgKEuy30rsbX4ruys9NTfOjE0KttuEY3xINJAXY=;
        b=SnsL61DMHo2lpSYgsXTFxMzCjIviiCry25fz5cFTeW/BJBLm4hmOu3GA0eM+MLM8zM
         nEq5rnRTD8Q7F44qYPDFlxPMG9cdxeeeHv7p329OIRq4CtFfwWg6H+vvgcqbu2KT7k6T
         48F5dHetmi4yMXtcxsfjSckaH3xcZtpPBJfenjxfE+I55zw8F8A97QrP8go2V3a/Z+3K
         BSYlOvVvCQuyqP9AWuit4to3WRI5CQpDU9Z04q3PGw4WGh8qKAFNUmtx14lHxPzdkQdt
         zw65J0tj+jJCuZEFJ31Gc7CPzODmmcyALgmRMNg2e+ybAQkTlE3/ClEDDRWraKwOu7/a
         9BYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794228127; x=1794832927;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=PWAkjgKEuy30rsbX4ruys9NTfOjE0KttuEY3xINJAXY=;
        b=IxzPg4p+KHt0M+iVmFxKpzEv/VMB4TTAO2CD9tKEizblZavyOgdC79Zr/lC47rNOxU
         A2TDiyJx2mjHaV1/9MPZo7A1+U8JoIcTwk2SPux6eaXT87y86oLvzRmeYxE2siOa1pFe
         5bRadZ7Fv97GjAJtnuD/P41xwSK8FjR+4vYLgHqni7cFK5WucGitS9ZTEnk1Vop5G9vc
         m6pbfe1zwhtiEzwp5wMsTZqgKzEhIb3X/Ar1NzckV7uQ8a2V+SDYzzrgjcAZWgZrhe/7
         mNMcz6Ja5yFdCNHQOyBA2CFeRy0jhX5KBEcCOblN2C+9Hz6BKM30DNfp4JfDiQev5Sie
         YZEg==
X-Forwarded-Encrypted: i=1; AL+hErE9QewtR+VhnUB7jOQREtvQYRr/YDxlfWMk+TIRNt/A//luym1VhspNQNMjPOMkQKKQAlNE91Ev+9Q=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8zSNWSfMWP8ECU/cqp/9hblNHWXHhqHS8CfIE8E0+8CBMkwJIZ
	yQLHaYSLNDUrKvpjm3EnLe1oNw73xrGv3UjHZjaBqOot6GGdnl/9PYJ77mjcZ+i4Pg==
X-Gm-Gg: AYBFou0tyhs87f+rEWDNh20rgOKpYxFOWTg4THOXKAL00sLzIPv9Tv/DrCzV6n3GQi/
	hj9J7nLqwr2Jx5cdgZxILrUNZJokvyeI1ote7qNEGbVYNV2TREcVOVl1jgmfaqqJ8d5HrTby1ny
	Y0ARl4tCweNjTuP8x9bEmAzW3fAMo2vAdcSP48pN5n5REIUNeU9UpKrtoYKqYZQwA1pDJTn1gBS
	kNBQnrute4+dHduk8TrMurPZXjp518rkzt4A2Jd8AdKTSxekwtOX18vVaD/UzQ5BBJR+i3oW8RG
	ktAHc24Rm0bd81iiNte/JPZ8+msF97tLR/oGZ8kIV+N3a77j/ldBLz89shQJIApGxXeD1CXs9ap
	He9BLLn9NeVUgwVSn4NqKoJhs3h9NfMYt8azCPFHpTEQkGrAY1UHV39QSitRGYrxN2eTU11yRiq
	yY6H1JrBIPAhTHCleSOVzyUNDVWYnvbHccQHkORvO3cHQfUP7cnA813hvlIw79uPbGHBjJ4PsvD
	JyFJ25WCYBv4KwftlWZRYqLe2eUddgcVQ/t4KzJ02a8KPb3qtv5307u8MEr7plBZjzPDIFcxH3k
	5EDnKNd3CJnxaXL6T1mn9DF6FBnVW98Vx09/fKowLsUMDQ382ocSwnzZpaITiRBwJ9PEN8nbGOI
	SAPc46vypLZ0932w=
X-Received: by 2002:a05:600c:46d3:b0:4a2:cbe:bec2 with SMTP id 5b1f17b1804b1-4b963c9197cmr76280525e9.32.1794228127130;
        Mon, 09 Nov 2026 04:42:07 -0800 (PST)
Message-ID: <0d760a94-2a93-4958-b6d1-939372afb07c@suse.com>
Date: Mon, 9 Nov 2026 13:42:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 4/6] arm/sysctl: Implement cpu hotplug ops
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
 <92f0934ebdc79687f6007f83ec04bf8001f1e0cd.1794222015.git.mykyta_poturai@epam.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <92f0934ebdc79687f6007f83ec04bf8001f1e0cd.1794222015.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1794228127-F607177B-F6CD4B37/10/78276251493
X-purgate-type: spam
X-purgate-size: 665

On 09.11.2026 12:12, Mykyta Poturai wrote:
> SMT-disable enforcement check is moved into a separate
> architecture-specific function.
> 
> For now this operations only support Arm64. For proper Arm32 support,
> there needs to be a mechanism to free per-cpu page tables, allocated in
> init_domheap_mappings. Also, hotplug is not supported if ITS enabled,
> and partially supported FFA, or TEE is enabled, as they use non-static
> IRQ actions.
> 
> Remove ifdef guards for x86 in flask, as cpu hotplug is now
> supported on more architectures.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:42:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:42:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479980.1683884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOht-0001Zl-Qs; Mon, 09 Nov 2026 12:42:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479980.1683884; Mon, 09 Nov 2026 12:42:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOht-0001Ze-OK; Mon, 09 Nov 2026 12:42:41 +0000
Received: by outflank-mailman (input) for mailman id 1479980;
 Mon, 09 Nov 2026 12:42:41 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <yhlee@isslab.korea.ac.kr>) id 1xQOht-0001ZX-6y
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:42:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOhs-007ZbR-Jv
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:42:40 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bfb4-bab6-0a2a0a5309dd-0a2a4506c0b8-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:42:39 +0100
Received: from [209.85.216.48] (helo=mail-pj1-f48.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bb49-195a-0a2a45060019-d155d830b04d-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:23:38 +0100
Received: by mail-pj1-f48.google.com with SMTP id
 98e67ed59e1d1-3b147e06befso282729a91.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:23:38 -0800 (PST)
Received: from yhlee-960QFG.Davolink
 ([2406:5900:1044:110c:3d70:1891:1a66:b169])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3b127912d62sm6836905a91.11.2026.11.09.04.23.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:23:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=isslab-korea-ac-kr.20260707.gappssmtp.com header.i="@isslab-korea-ac-kr.20260707.gappssmtp.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isslab-korea-ac-kr.20260707.gappssmtp.com; s=20260707; t=1794227016; x=1794831816; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=1vcgV08xYKH0g5nt/nWVsU3QDB7VewTUh+uDf63N1EY=;
        b=XbKL1XGg/Dm9BfquBIVJ30TiEpEEzPXffuIQMLwzbPgrLYTctbWA4s6C13zQPy49/b
         p1NPPQnidLYgTMotTQo/LMXipj9qbM/meFuNBZDLwew0D/mEkcfq45bHgSAqy+BgrGOl
         DlX9ToOV0prG62IcuPH+cbi8clUrPbq5rkPo1thlE8FZ1frzux2gQ9s6R9LW29DfyDf/
         WfHE2TnEAGfYvDkbEqNTRMQzZQ3L7wJaOzX7vitOwaTiPkRoELXtO4ZhJ1crYBllPFQ/
         +EBucASQxz6Nras0vec+VZegIR+U1Xpyf0aeoUn4/U8ipPOhx4dLneDjM4NnpU2APxKr
         Kuog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794227016; x=1794831816;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=1vcgV08xYKH0g5nt/nWVsU3QDB7VewTUh+uDf63N1EY=;
        b=R/Q2gPQlRZU29+NCfK5CxyOqgiD3z4r6sQbys9pv9W8cHbul1ZhKngyyj6k8ZsWHza
         Sl7asUGpXNq23RIqkrq0A7gv8YJfKZT+IaL9IeKXUr7aDNli5PzhVJ0bHmZTTZTsuRko
         x4kekORtt2sH09ZV9v6ojU6Rfe/Kr3DA3KIb7c5aVTO2AbSdYDhObu843CLhA1REc02+
         ODGEw4+12VDokepDLdSjiaG6Ca4XNUJo1Hnu9sDnFAlxdjZo40Zx7kTULCa8Bn17vMoY
         +oOOwiiUfVAHzYvD2yc/JHBECA2kDTIfNbQ0aN72gWoZjI8TW5tj5jT0Uoz5kbt/f8vF
         kVIQ==
X-Forwarded-Encrypted: i=1; AL+hErEfN4eK0hu3QfOgXqht7NqjikSYMwEPZegsolS3/+PAeHcWFO4bpV1FaAEiwc38LRKA7/0m1JhDCGQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z8RdBp/iSH+8uE1U72h26/9kXGjZMvpPXSTVLphBIo/YaKmE+f4
	DabJS4yIZ8IaOAEWo2BmTivz06AKC2rWTZLle7gizNiouyKGWUVY12Imr8X008KAXEA=
X-Gm-Gg: AYBFou1EeklEn75orMnsynvB8ucW0sYs2Ka9X42ynMjiWPNNkxcfJxAdStlgOL7/EuR
	xIMPaUhFnDbGBFjLTz+b3PphOgUDa4xQZXi1FuYctdBCIwJjYTsB9QAzEaXsxH6fz0WFjjw3dmF
	RkRvsAGrVHZ5ivLs0kyiodasqkOPGpgZiebbO26NSOYXvDzIcudo3wg44uKbBztVBRcm9X/lueB
	ddCYijBgdKbQVZdJPHNoivlBA4RXSy6B8Ct29DAO6qVdftj6vcQNBmX+waKA3KmsuSDduNzzLSi
	axH2MvfeUhu0MLcn6xxEYJNhbFrEH1yRN47UohOUspagC70Xqnq41U4jE3xDh5c4kgBwNw7C2hy
	yuzSJQ1z6Ds/HqVJszvFgh17ePwGUfruOZIxn0XbiGwec5cSHSU/sVVuBWPuMnHlU11vFGZfmug
	8ngwxih+n6kehQQ1u67XL+hedSMc1KA0lYCR2KiRRQqsWqSs2teq4fsqHZInLEhLmqNDOC5ZuRS
	dLbUufPwhxjMZ+HZsB0eHDDNDQ4cm85w5PvgO4QeY8GLmFJwqF9pNGF+ow1j5lMVSQSwWJG9G9O
	CqxK3umfbBFOs86MmpGw7LEE1eAWH5ZOuw9jipRTbcFqDnpCMkYo9StLntaL12+B61dx0cN/IEj
	p+wX9w8UrSu7YpwGlLrFoOe5c5IzKis53Rj6zaA==
X-Received: by 2002:a17:90b:5285:b0:3ac:7c52:fb04 with SMTP id 98e67ed59e1d1-3b12d43b32dmr3413278a91.44.1794227016472;
        Mon, 09 Nov 2026 04:23:36 -0800 (PST)
From: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
To: jgross@suse.com,
	sstabellini@kernel.org
Cc: oleksandr_tyshchenko@epam.com,
	boris.ostrovsky@oracle.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: [PATCH 1/2] xen/pvcalls: unwind pvcalls_new_active_socket() step by step
Date: Mon,  9 Nov 2026 21:23:23 +0900
Message-ID: <20261109122324.30134-2-yhlee@isslab.korea.ac.kr>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr>
References: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-16d1c6/1794227018-FD00977B-5E448DDA/10/78177266408
X-purgate-type: clean
X-purgate-size: 7003

Every error path in pvcalls_new_active_socket() jumps to one shared label
that does list_del(&map->list) and then hands map to
pvcalls_back_release_active().  But map comes from kzalloc() and its
list_head is only published at the very end of the function, after the last
of those jumps:

	down(&fedata->socket_lock);
	list_add_tail(&map->list, &fedata->socket_mappings);
	up(&fedata->socket_lock);

so on the error path map->list is still {NULL, NULL} and __list_del()
writes through a NULL pointer.

A frontend gets there with one value it owns: the ring_order field of the
page it granted.  Anything above MAX_RING_ORDER takes the second goto, and
nothing else in the function has run by then.

The result is an oops in whichever context handled the request - the
pvcalls-back threaded IRQ handler for PVCALLS_CONNECT, mappass->wq for
PVCALLS_ACCEPT - and because it happens after down(&fedata->socket_lock)
that semaphore is never released, so every later operation on the frontend
blocks on it and the backend never completes backend_disconnect().  (With
CONFIG_DEBUG_LIST the list_del() only reports and returns, and
pvcalls_back_release_active() then runs on a map whose irq is still 0 and
whose bytes, ioworker.wq and saved_data_ready are all NULL.)

A frontend asking for ring_order 5, on a dom0 built with KASAN
(the request was issued by a test-only change to the frontend):

[  133.728877] pvcalls_new_active_socket frontend requested ring_order 5, which is > MAX (4)
[  133.732868] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] SMP KASAN NOPTI
[  133.737910] KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
[  133.741666] CPU: 0 UID: 0 PID: 133 Comm: irq/39-pvcalls- Not tainted 7.3.0-kCTLblk2-15482-g21a7f44fd076-dirty #1 PREEMPT(full)
[  133.746986] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[  133.751512] RIP: 0010:pvcalls_new_active_socket+0x821/0xb90
[  133.754237] Code: 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 f6 01 00 00 48 8d 79 08 4c 8b 6b 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 14 02 00 00 4c 89 ea 4c 89 69 08 48 b8 00 00 00
[  133.763126] RSP: 0018:ffffc900004afb38 EFLAGS: 00010202
[  133.765861] RAX: dffffc0000000000 RBX: ffff88810886c900 RCX: 0000000000000000
[  133.769348] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000008
[  133.772787] RBP: 1ffff92000095f6b R08: 0000000000000001 R09: fffff52000095f58
[  133.776260] R10: 0000000000000003 R11: ffff888100077320 R12: ffff88810858b410
[  133.779823] R13: 0000000000000000 R14: ffff88810858b460 R15: ffff88810858b400
[  133.783382] FS:  0000000000000000(0000) GS:ffff8881b034c000(0000) knlGS:0000000000000000
[  133.787351] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  133.790308] CR2: 00000000006042c0 CR3: 0000000108400001 CR4: 0000000000770ef0
[  133.793822] PKRU: 55555554
[  133.795347] Call Trace:
[  133.796778]  <TASK>
[  133.798082]  ? __pfx_pvcalls_new_active_socket+0x10/0x10
[  133.800801]  ? security_socket_post_create+0x4d/0x60
[  133.803275]  ? release_sock+0x1a/0x1d0
[  133.805182]  pvcalls_back_event+0x1b09/0x23e0
[  133.807431]  ? __pfx_pvcalls_back_event+0x10/0x10
[  133.809814]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
[  133.812251]  ? __pfx_pvcalls_back_event+0x10/0x10
[  133.814554]  irq_thread_fn+0x86/0x150
[  133.816468]  irq_thread+0x2da/0x580
[  133.818363]  ? __pfx_irq_thread_fn+0x10/0x10
[  133.820586]  ? __pfx_irq_thread+0x10/0x10
[  133.822670]  ? __kthread_parkme+0x88/0x170
[  133.824803]  ? __pfx_irq_thread+0x10/0x10
[  133.827153]  ? __pfx_irq_thread+0x10/0x10
[  133.829304]  kthread+0x2c8/0x3b0
[  133.831176]  ? recalc_sigpending+0x15c/0x1e0
[  133.833570]  ? __pfx_kthread+0x10/0x10
[  133.835572]  ret_from_fork+0x373/0x5b0
[  133.837581]  ? __pfx_ret_from_fork+0x10/0x10
[  133.839978]  ? __switch_to+0x3c4/0xb40
[  133.841984]  ? __pfx_kthread+0x10/0x10
[  133.843970]  ret_from_fork_asm+0x1a/0x30
[  133.846031]  </TASK>
[  133.847420] Modules linked in:
[  133.849240] ---[ end trace 0000000000000000 ]---

Give each failure its own label, so that only resources that were actually
acquired are released and the list the map was never added to is left
alone.  The map is not published anywhere at that point, so the error path
needs no socket_lock at all.  sock_release() stays in the callee on every
error path, the way
commit 8fafac202d18 ("xen/pvcalls-back: fix double frees with pvcalls_new_active_socket()")
arranged it.

Fixes: 5db4d286a8ef ("xen/pvcalls: implement connect command")
Cc: stable@vger.kernel.org
Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
---
 drivers/xen/pvcalls-back.c | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index ba62651a7f338b..dcefa91a40cd05 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -337,7 +337,7 @@ static struct sock_mapping *pvcalls_new_active_socket(
 
 	ret = xenbus_map_ring_valloc(fedata->dev, &ref, 1, &page);
 	if (ret < 0)
-		goto out;
+		goto out_map;
 	map->ring = page;
 	map->ring_order = map->ring->ring_order;
 	/* first read the order, then map the data ring */
@@ -345,19 +345,19 @@ static struct sock_mapping *pvcalls_new_active_socket(
 	if (map->ring_order > MAX_RING_ORDER) {
 		pr_warn("%s frontend requested ring_order %u, which is > MAX (%u)\n",
 				__func__, map->ring_order, MAX_RING_ORDER);
-		goto out;
+		goto out_unmap_ring;
 	}
 	ret = xenbus_map_ring_valloc(fedata->dev, map->ring->ref,
 				     (1 << map->ring_order), &page);
 	if (ret < 0)
-		goto out;
+		goto out_unmap_ring;
 	map->bytes = page;
 
 	ret = bind_interdomain_evtchn_to_irqhandler_lateeoi(
 			fedata->dev, evtchn,
 			pvcalls_back_conn_event, 0, "pvcalls-backend", map);
 	if (ret < 0)
-		goto out;
+		goto out_unmap_bytes;
 	map->irq = ret;
 
 	map->data.in = map->bytes;
@@ -365,7 +365,7 @@ static struct sock_mapping *pvcalls_new_active_socket(
 
 	map->ioworker.wq = alloc_ordered_workqueue("pvcalls_io", 0);
 	if (!map->ioworker.wq)
-		goto out;
+		goto out_unbind;
 	atomic_set(&map->io, 1);
 	INIT_WORK(&map->ioworker.register_work,	pvcalls_back_ioworker);
 
@@ -381,11 +381,16 @@ static struct sock_mapping *pvcalls_new_active_socket(
 	write_unlock_bh(&map->sock->sk->sk_callback_lock);
 
 	return map;
-out:
-	down(&fedata->socket_lock);
-	list_del(&map->list);
-	pvcalls_back_release_active(fedata->dev, fedata, map);
-	up(&fedata->socket_lock);
+
+out_unbind:
+	unbind_from_irqhandler(map->irq, map);
+out_unmap_bytes:
+	xenbus_unmap_ring_vfree(fedata->dev, map->bytes);
+out_unmap_ring:
+	xenbus_unmap_ring_vfree(fedata->dev, (void *)map->ring);
+out_map:
+	sock_release(sock);
+	kfree(map);
 	return NULL;
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:46:13 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:46:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1479992.1683918 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOlI-0002Lm-Gu; Mon, 09 Nov 2026 12:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1479992.1683918; Mon, 09 Nov 2026 12:46:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOlI-0002Lf-DU; Mon, 09 Nov 2026 12:46:12 +0000
Received: by outflank-mailman (input) for mailman id 1479992;
 Mon, 09 Nov 2026 12:46:10 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <yhlee@isslab.korea.ac.kr>) id 1xQOlG-0002LZ-Ne
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:46:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOlF-003tJt-T9
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:46:09 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1c08e-e002-0a2a0a5209dd-0a2a4502901c-16
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:46:09 +0100
Received: from [209.85.214.179] (helo=mail-pl1-f179.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <yhlee@isslab.korea.ac.kr>)
 id 6af1bc17-6ca4-0a2a45020019-d155d6b3bc9a-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:27:04 +0100
Received: by mail-pl1-f179.google.com with SMTP id
 d9443c01a7336-2ea7987517aso4147685ad.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:27:04 -0800 (PST)
Received: from yhlee-960QFG.Davolink
 ([2406:5900:1044:110c:3d70:1891:1a66:b169])
 by smtp.gmail.com with ESMTPSA id
 d9443c01a7336-2ed81734d95sm9934985ad.65.2026.11.09.04.26.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:27:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=isslab-korea-ac-kr.20260707.gappssmtp.com header.i="@isslab-korea-ac-kr.20260707.gappssmtp.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isslab-korea-ac-kr.20260707.gappssmtp.com; s=20260707; t=1794227222; x=1794832022; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=auUowkHUVqWY9moHr++cNLc5S5EI9m+OJlbauxvV4NY=;
        b=lyNBKbNcz565ax5RgSTtO1MJVlC7cyTNskqs1NRVq07TpJs7yoiUMTMJATHWkMuSi5
         2BlVqQTkDcBUQP3AC+9vKg8i5Mc59IyBLUYI2Gk54iCqwLlF+45nsM/PyjGgKA1KvaJ3
         xKpBNGZMN7Y135xqXKSDAAsSSJulXIW/7iVRyzbsWd2eZT3kCktASrPaN2ajaXS9BPIy
         ZUfFPt4OqDtcWG64wuZRk0zXOPq3luD9370iIXXi/WLzlBgMupfnqRuU6Q4pit2MQGIN
         h7LwdHK6KiCP1SM/OEokRdsqLgajg6n53IvZwQhI+eo33owpQhQbDgzeuqcNTYa54s7d
         TJ9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794227222; x=1794832022;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=auUowkHUVqWY9moHr++cNLc5S5EI9m+OJlbauxvV4NY=;
        b=ib28LRB5DFCPHmxinB8OZyc+KMrlbp+ubK/k81c+BoVUvKbiTppGFauWxuyz/rV3qM
         Voi6XGq8Wn0S4SGGsI45A6ZNQsTghPTgeJzNngy2FRgQYBgmNOESqhl5aAMvgvPgGTRR
         9nIRGbjm6c1az0ZAdVDkf0edoXeQD1aELrzvlHIJl1C7jX0Bd5X9PLgwlxAY1l1KbLco
         95Nn2Awcb4BmEeVDbA559qqxCw19R4ed4IsO+YmeTi08OErkztLWL8dajBL8BKakirhH
         qgoPPT+o4KQNcBUQ7dOagNSHsiTyUC8gEicNziwRP49n22P1DOQN/IezFvdqPGUm0M6h
         Djpg==
X-Forwarded-Encrypted: i=1; AL+hErEXY07lpo0kdxq5aGC349w9EZOVzheIkVrbcWk9F6LNzbL6woQN/NnW59/OhCXNpIbd4k2Rl5UlkUw=@lists.xenproject.org
X-Gm-Message-State: APuU4Z90zfiP2LUOPZUJUrckYXBsK3/9kebarsf3czn0x4zGIPRHRVSa
	FMkfCTdLSoZxLhRmarEUMIYrUt1Y/wlHt4uZG6aOTVfnQ4R6XwdjV8qss7bMdxRvnjM=
X-Gm-Gg: AYBFou29xvyVAVxlD9VaF7aurJ9F70/BGVUl/sSVFvi47nxdNqqUNz4XPJXka+/agNg
	Z+4B6e9nBuK57dUvYYdAPrDLtlWW2hJPEXY9OiYqiA3ZX8iICQENwlel4Zkk+bNlj7OJklw0sDn
	x8O0naZ4hPM0lg7isCHPEd9pvMT8g7QnmYMm2WQhRxfDbK9zWzeD9bpGjFlPTMEPnuo1mzKw0GN
	GvYc7zJyoKUjoJaAGmNqkyYEbux53tRHuBsL5VAQQ6XYo9m3qewFrZHyX0T/uMN3HZbNKbZi/NH
	mz/y0CM59AXnV5l29qqnqLX1Pr11VDd4Ne3X03IxarNUBpyewuMh3dIoN0T7aVFfRTEsFdj+GoW
	IevATInESrIPY3/woIECt6w6evSAuYxQvHwTBjlj4xmSwFwEOKEZrmbjDXsNQC2N6OjUnEFwqbW
	vt4eoUmMXvD5rbrOLNAOrsXGpvZrcp2Wj4uS3o79NLrCu+Ti0kxWUO/JQh0Qh26IQkg+umMCqcy
	3DHGDORJDCExAcxG5F36zWITDe5ULlGQsrIc63M4lVxpbg5MZGTMCPlmNWg/rpBFQU2nclUHWi7
	8AH8hHKyKVAyRSAYnEBr6+79mEYmR0vBisHLqDtVqqkT7iuofaQOpMHsxX6mg2xc4F8a1O1W30s
	NRYrc5gj/rH5hiOL+ZSyU20Y/e/AUBmyvQ5hSz6zpdk+/yMXCmjlyMwG22hs=
X-Received: by 2002:a17:902:d547:b0:2ed:2305:5244 with SMTP id d9443c01a7336-2ed8379d007mr36355115ad.46.1794227222400;
        Mon, 09 Nov 2026 04:27:02 -0800 (PST)
From: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
To: jgross@suse.com
Cc: sstabellini@kernel.org,
	oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org,
	linux-scsi@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	martin.petersen@oracle.com,
	stable@vger.kernel.org
Subject: [PATCH] xen/scsiback: unbind the IRQ before draining in-flight requests
Date: Mon,  9 Nov 2026 21:26:54 +0900
Message-ID: <20261109122654.30859-1-yhlee@isslab.korea.ac.kr>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-720697/1794227224-67EBB2AC-8640F6A0/10/78177266408
X-purgate-type: clean
X-purgate-size: 8623

scsiback_disconnect() drains the in-flight count before stopping the only
thing that can raise it.  scsiback_cmd_exec() (xen-scsiback.c:426) runs in
the backend's threaded IRQ handler, so a request can be admitted just after
wait_event() has seen zero, and its response is written later from target
core context by scsiback_send_response() (:347) - after the ring has been
unmapped, and on the scsiback_remove() path (:1268-1280) after kfree(info).

xen-blkback and xen-netback stop their request processing first:
kthread_stop() before reading ring->inflight
(xen-blkback/xenbus.c:290-304), and the kthreads and napi before
unbinding and unmapping (xen-netback/interface.c:673-700).

Unbind and clear info->irq before the drain: nothing is admitted once the
handler is gone, and the ring stays mapped until the drain finishes.  The
notify at the end of scsiback_send_response() is then a no-op, because
notify_remote_via_irq() resolves irq 0 through evtchn_from_irq() to port 0,
which VALID_EVTCHN() rejects (events_base.c:539-545, :411-421).

Reproduced in a nested-Xen lab with KASAN.  Reaching the window needed two
test-only usleep_range() delays, one after wait_event() returns and one at
the top of scsiback_do_resp_with_sense() once the teardown has started.
With both off neither arm produced anything in 4 rounds each; with both on
the unpatched driver crashed in 6 of 6 valid cells, the patched in 0 of 7:

[  168.546709] BUG: KASAN: vmalloc-out-of-bounds in scsiback_send_response+0x516/0x5d0
[  168.551012] Write of size 4 at addr ffffc900000230a4 by task kworker/0:1/11
[  168.554757]
[  168.555908] CPU: 0 UID: 0 PID: 11 Comm: kworker/0:1 Not tainted 7.3.0-kCTLblk2-15482-g21a7f44fd076-dirty #10 PREEMPT(full)
[  168.555914] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[  168.555918] Workqueue: target_completion target_complete_ok_work
[  168.555939] Call Trace:
[  168.555946]  <TASK>
[  168.555949]  dump_stack_lvl+0x64/0x80
[  168.555958]  print_report+0xd0/0x630
[  168.555966]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
[  168.555978]  ? scsiback_send_response+0x516/0x5d0
[  168.555983]  kasan_report+0xce/0x100
[  168.555988]  ? scsiback_send_response+0x516/0x5d0
[  168.555992]  scsiback_send_response+0x516/0x5d0
[  168.555997]  ? __pfx_scsiback_send_response+0x10/0x10
[  168.556001]  scsiback_do_resp_with_sense+0x87/0x230
[  168.556007]  scsiback_cmd_done+0xc0/0x290
[  168.556011]  ? update_cfs_rq_load_avg+0x5a/0x560
[  168.556023]  scsiback_queue_status+0xd3/0x100
[  168.556028]  target_complete_ok_work+0x467/0xc30
[  168.556032]  ? __pfx_target_complete_ok_work+0x10/0x10
[  168.556036]  ? put_prev_task_fair+0x44d/0xa30
[  168.556039]  ? finish_task_switch.isra.0+0x1d9/0xa70
[  168.556047]  process_one_work+0x697/0x1060
[  168.556052]  ? __pfx___schedule+0x10/0x10
[  168.556058]  ? __pfx_process_one_work+0x10/0x10
[  168.556061]  ? _raw_spin_lock_irq+0x86/0xe0
[  168.556065]  ? __pfx_target_complete_ok_work+0x10/0x10
[  168.556069]  ? assign_work+0x11d/0x370
[  168.556074]  worker_thread+0x45b/0xd10
[  168.556078]  ? __pfx_worker_thread+0x10/0x10
[  168.556081]  ? __pfx_worker_thread+0x10/0x10
[  168.556083]  kthread+0x2c8/0x3b0
[  168.556090]  ? recalc_sigpending+0x15c/0x1e0
[  168.556094]  ? __pfx_kthread+0x10/0x10
[  168.556098]  ret_from_fork+0x373/0x5b0
[  168.556104]  ? __pfx_ret_from_fork+0x10/0x10
[  168.556107]  ? __switch_to+0x3c4/0xb40
[  168.556115]  ? __pfx_kthread+0x10/0x10
[  168.556120]  ret_from_fork_asm+0x1a/0x30
[  168.556127]  </TASK>
[  168.556129]
[  168.639704] The buggy address belongs to a vmalloc virtual mapping
[  168.642324] Memory state around the buggy address:
[  168.644439]  ffffc90000022f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
[  168.647698]  ffffc90000023000: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
[  168.650951] >ffffc90000023080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
[  168.669199]                                ^
[  168.671056]  ffffc90000023100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
[  168.674050]  ffffc90000023180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
[  168.676974] ==================================================================

[  168.682117] BUG: unable to handle page fault for address: ffffc900000230a4
[  168.684784] #PF: supervisor write access in kernel mode
[  168.686797] #PF: error_code(0x0002) - not-present page
[  168.688797] PGD 100000067 P4D 100000067 PUD 10019c067 PMD 1001a1067 PTE 0
[  168.691319] Oops: Oops: 0002 [#1] SMP KASAN NOPTI
[  168.693246] CPU: 0 UID: 0 PID: 11 Comm: kworker/0:1 Tainted: G    B                7.3.0-kCTLblk2-15482-g21a7f44fd076-dirty #10 PREEMPT(full)
[  168.699142] Tainted: [B]=BAD_PAGE
[  168.700896] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[  168.705056] Workqueue: target_completion target_complete_ok_work
[  168.707701] RIP: 0010:scsiback_send_response+0x1b6/0x5d0
[  168.710147] Code: 48 89 f8 83 e0 07 83 c0 03 40 38 f0 7c 09 40 84 f6 0f 85 60 03 00 00 48 89 d8 48 c1 e0 06 48 29 d8 48 c1 e0 02 48 8d 7c 01 40 <89> 94 01 a4 00 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1
[  168.718883] RSP: 0018:ffffc900000bfaa0 EFLAGS: 00010046
[  168.721447] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffc90000023000
[  168.724785] RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffc90000023040
[  168.727913] RBP: ffff88810a4a7238 R08: 0000000000000246 R09: fffffbfff0de2638
[  168.730938] R10: ffffffff86f131c7 R11: ffff888100077320 R12: 1ffff92000017f59
[  168.733902] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88810a6de200
[  168.736874] FS:  0000000000000000(0000) GS:ffff8881b034d000(0000) knlGS:0000000000000000
[  168.740171] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  168.742490] CR2: ffffc900000230a4 CR3: 0000000103271005 CR4: 0000000000770ef0
[  168.745350] PKRU: 55555554
[  168.746577] Call Trace:
[  168.747772]  <TASK>
[  168.748872]  ? __pfx_scsiback_send_response+0x10/0x10
[  168.751022]  scsiback_do_resp_with_sense+0x87/0x230
[  168.753109]  scsiback_cmd_done+0xc0/0x290
[  168.754847]  ? update_cfs_rq_load_avg+0x5a/0x560
[  168.756782]  scsiback_queue_status+0xd3/0x100
[  168.758630]  target_complete_ok_work+0x467/0xc30
[  168.760556]  ? __pfx_target_complete_ok_work+0x10/0x10
[  168.762644]  ? put_prev_task_fair+0x44d/0xa30
[  168.764512]  ? finish_task_switch.isra.0+0x1d9/0xa70
[  168.766584]  process_one_work+0x697/0x1060
[  168.768282]  ? __pfx___schedule+0x10/0x10
[  168.769973]  ? __pfx_process_one_work+0x10/0x10
[  168.771880]  ? _raw_spin_lock_irq+0x86/0xe0
[  168.773599]  ? __pfx_target_complete_ok_work+0x10/0x10
[  168.775721]  ? assign_work+0x11d/0x370
[  168.777324]  worker_thread+0x45b/0xd10
[  168.778899]  ? __pfx_worker_thread+0x10/0x10
[  168.780648]  ? __pfx_worker_thread+0x10/0x10
[  168.782415]  kthread+0x2c8/0x3b0
[  168.783877]  ? recalc_sigpending+0x15c/0x1e0
[  168.785697]  ? __pfx_kthread+0x10/0x10
[  168.787218]  ret_from_fork+0x373/0x5b0
[  168.788752]  ? __pfx_ret_from_fork+0x10/0x10
[  168.790500]  ? __switch_to+0x3c4/0xb40
[  168.792029]  ? __pfx_kthread+0x10/0x10
[  168.793555]  ret_from_fork_asm+0x1a/0x30
[  168.795180]  </TASK>
[  168.796205] Modules linked in:
[  168.797596] CR2: ffffc900000230a4
[  168.799084] ---[ end trace 0000000000000000 ]---

Fixes: d9d660f6e562 ("xen-scsiback: Add Xen PV SCSI backend driver")
Cc: stable@vger.kernel.org
Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
---
Reported to the Xen security team first; xen-scsiback is not security supported, so posting here as suggested.

 drivers/xen/xen-scsiback.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c
index c7036e0e41bda1..647a3c7e2a2b39 100644
--- a/drivers/xen/xen-scsiback.c
+++ b/drivers/xen/xen-scsiback.c
@@ -603,11 +603,13 @@ static int scsiback_gnttab_data_map(struct vscsiif_request *ring_req,
 
 static void scsiback_disconnect(struct vscsibk_info *info)
 {
+	/* Stop admitting requests before draining the in-flight ones. */
+	unbind_from_irqhandler(info->irq, info);
+	info->irq = 0;
+
 	wait_event(info->waiting_to_free,
 		atomic_read(&info->nr_unreplied_reqs) == 0);
 
-	unbind_from_irqhandler(info->irq, info);
-	info->irq = 0;
 	xenbus_unmap_ring_vfree(info->dev, info->ring.sring);
 }
 

base-commit: 7475ea8b58616b33c04afb976cf0fbaad9dd63fb
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:49:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:49:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480002.1683926 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOoi-0003CE-1a; Mon, 09 Nov 2026 12:49:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480002.1683926; Mon, 09 Nov 2026 12:49:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOoh-0003C7-Ub; Mon, 09 Nov 2026 12:49:43 +0000
Received: by outflank-mailman (input) for mailman id 1480002;
 Mon, 09 Nov 2026 12:49:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQOoh-0003Br-0j
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:49:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOog-00EeAx-61
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:49:42 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1c155-2eae-0a2a0a5409dd-0a2a450cb856-22
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:49:42 +0100
Received: from [209.85.221.43] (helo=mail-wr1-f43.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1c165-f479-0a2a450c0019-d155dd2ba44c-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:49:41 +0100
Received: by mail-wr1-f43.google.com with SMTP id
 ffacd0b85a97d-490f38e9688so668966f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:49:41 -0800 (PST)
Received: from fedora (user-109-243-65-71.play-internet.pl. [109.243.65.71])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597e00d75sm9617856f8f.58.2026.11.09.04.49.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:49:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794228581; x=1794833381; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=N841khkHhAPXfNTfzF7oSFOLBbW+P+AviUYYuCqufzU=;
        b=cXz5qgbBdKs5wdRWYx4jfuRlUR4MypUetogQFlOgNvf6SEim2lsFhVLA293S26G0k8
         Sa5BjzENMek/vK168xxLhLB592hH4+njGrLlpb0teXD3hX3/BQCjtbODgaLW3U+/cPFA
         IMJhjh2FytsQmWGpJk5cRNCbhggQr86ELVSxdMreorGgWfxMdl7ZmMUyB6bwSb5kY4WM
         m3CrQkPbISvkHSzus8WHUIfMcvuRbVqIics4qTJ/IIjF5dCpz5JhmZLWzdjZKWeSMuXv
         0VVTupiBGLcs4/DbNdEOr9MhNi4tSEgjYhGGLW6hHNHREC/blLaBYhrSltpTxQ1Wa/s2
         XAUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794228581; x=1794833381;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=N841khkHhAPXfNTfzF7oSFOLBbW+P+AviUYYuCqufzU=;
        b=XJTtUM/fQngP95hzgP1cncJFoiVMjQehv6JW61OHN6ZSl1iliPGmTiot7mR9LUS+fv
         kOv98nattul+9M6x7v9qiLTvkG4BIFi+g9jiLuOy8wrPyfnjpJNZwU1m8k72O57vT9f7
         +5APbZHrV6CwNEuMOKDnz/aD5myEGjSMUbW1jjPkCdyHab9tisviM8Uz23i1L5qxF2ei
         wll8dpdNKQzYAKAY5XUVaE+fBjr948QvoXLNw3+x1mNhkITjbUTVKIJ4w6wGq9hDbyBQ
         /Eah+VYzc9lXeZgn8rcpTJfN9seO/4ho9F1lRGLiNuZFy6AnsTDFjEAzv0E/Fued+VcK
         z0Kw==
X-Gm-Message-State: APuU4Z/sF051Er7Lzi1vgtOELmeGmv3ZJVfvURTkggrFjVX2GF33TqVZ
	dnhmpAFKIP98IYDUV7hcu76aA/AAb7bK5GUkBFc+i6vTq/sttNDU0AgdRq1X/Q==
X-Gm-Gg: AYBFou1OsYz5Ipj+Pg3GCNHRLFDhu/AQ2jmPWUxjh9PTQuQREzIcoaracOtxEcxkVY6
	p+OU1M4a6aHF0xgi5jhzmnnjjVOznX2/K5eIoDVzZ+W7/BxpZPW0DQwUhbtUpDhiOsJn6oMrNjF
	6uxLAE8gQBTX6c9IAKbR8cfqjVDQnQXKr9dfsQiZNDhSLW7+r4fGUenqPj/7n2kPNhBzCik5wDV
	TDhFW3msAZtI55lI0Q90E0WaXw2BGuH1pSemMRXAEQ2g1sYrK7aLKHA7nGYwdpo7ee1pdrqezOt
	lQO4WFF8HUTYtPyMJRICaCI3P596ZruPw3JR9i+2iwV9vxsyMDRh1pY6YCA+pmjQLuOlbwnRd7j
	HHESWsmjABuLZGpG5CSMV3KHpGnRIlQBliw7LBwc4xFYUg8hiOQgGHNj/U7KLCbnjdd87kbAb0L
	oVt14gquU65ZZdZ1efah0qFqf16anGehXgAz1YKjZB4HP+nCO1u8TsmynOr0vlZvBQhMMaXt9CT
	uWqGJSHlV/UszAbO0oTx5HVYg3YJFidj56o+KHeyn9xxCdd5XzgxWS3GSQBaQ9a7Cz5Nr9QzpdP
	+7d2SACRarsQVPoO3MdimcA7l+ubeABV9+EHtvAUUVR9x+ZsIARUa/mFbSEKmoT5QqsBLg==
X-Received: by 2002:a5d:588b:0:b0:492:3f98:5070 with SMTP id ffacd0b85a97d-49589c3e776mr7533906f8f.12.1794228580917;
        Mon, 09 Nov 2026 04:49:40 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 1/2] xen/riscv: skip disabled CPU nodes when probing ISA extensions
Date: Mon,  9 Nov 2026 13:49:36 +0100
Message-ID: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.56.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1794228581-52132A5B-6FB5CC84/10/73395122804
X-purgate-type: spam
X-purgate-size: 1309

riscv_fill_hwcap_from_isa_string() intersects the riscv,isa of every CPU
node under /cpus, including the ones with status = "disabled". Such a
hart is never used by Xen, yet it can still remove extensions from the
host ISA: e.g. a disabled hart without the H extension makes Xen panic
with "Xen requires extension: h", even though every hart Xen runs on
implements it.

Skip CPU nodes which aren't available.

Fixes: f74ebf58b518 ("xen/riscv: identify specific ISA supported by cpu")
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/cpufeature.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/arch/riscv/cpufeature.c b/xen/arch/riscv/cpufeature.c
index dff590f68a30..c4983ccdf3da 100644
--- a/xen/arch/riscv/cpufeature.c
+++ b/xen/arch/riscv/cpufeature.c
@@ -477,6 +477,13 @@ static void __init riscv_fill_hwcap_from_isa_string(void)
         if ( !dt_device_type_is_equal(cpu, "cpu") )
             continue;
 
+        /*
+         * A disabled hart is never used by Xen, so it must not restrict
+         * the set of extensions available to it.
+         */
+        if ( !dt_device_is_available(cpu) )
+            continue;
+
         if ( dt_get_cpuid_from_node(cpu, &cpuid) < 0 )
             continue;
 
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 12:49:47 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 12:49:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480003.1683935 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOoj-0003Oh-8o; Mon, 09 Nov 2026 12:49:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480003.1683935; Mon, 09 Nov 2026 12:49:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQOoj-0003Oa-55; Mon, 09 Nov 2026 12:49:45 +0000
Received: by outflank-mailman (input) for mailman id 1480003;
 Mon, 09 Nov 2026 12:49:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQOoh-0003Bs-5f
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 12:49:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQOog-00EeAx-I6
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:49:42 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1c155-2eae-0a2a0a5409dd-0a2a450cb856-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:49:42 +0100
Received: from [209.85.221.41] (helo=mail-wr1-f41.google.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1c166-f479-0a2a450c0019-d155dd29d072-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 13:49:42 +0100
Received: by mail-wr1-f41.google.com with SMTP id
 ffacd0b85a97d-48e20ed3b9dso726002f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 04:49:42 -0800 (PST)
Received: from fedora (user-109-243-65-71.play-internet.pl. [109.243.65.71])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597e00d75sm9617856f8f.58.2026.11.09.04.49.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 04:49:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794228582; x=1794833382; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=bwF9Dj8giABPcMeVhSJdbQUe4yVDcsmUQnbwOfJ5mWs=;
        b=NXdzfbxX/bB0AbkX/Hv51+ekRe17DX3tHlZjXzA5W0t8NaOazB2EyzOaM80L/waGcW
         FNU1Do3uYu4iIgBNeWravwO4Q2WdlPGOvMAeADk6DBE4NGON66GjtErBcIzshH+7uVN0
         JTuHjHROpHANBL04WzEj+iW2FfAQGzwJkLfBtuoYfDyHGcw3tN7RuzVYXIQwwTZXgxIP
         8YDt1qxZ3Jk5RcM4zwQkE0bfknoBgNiKKQGlJOMLygWthZHEx8MUcBlodHoGyzPdt5gD
         X0LQFnbXyxeswyEULJZoVA6CP7RmtbmES6S7tCAHkVv5bZJoVEfUjOvANdttMwi1zsi6
         tf+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794228582; x=1794833382;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to:content-type;
        bh=bwF9Dj8giABPcMeVhSJdbQUe4yVDcsmUQnbwOfJ5mWs=;
        b=ltbSExN0t600ZRi08AvNARvd03KcfC1ZCZKfMoACdVKE6HbJQdGt/nS5hevZA7fQAH
         ydhSo4tSLI1fFV21XgXqTstq09wMv2BvPPoI0dM/7xTOjoW12hPjqsLdhP/RU7PRczq/
         /+Z+95KpmfnagzrCbUOysCcEV1kVw3ifhNXYNHJj+yJ6ZFVGwHW0A3A5ThbWeOHVPYi3
         NMyREzI96L7aNFMihOUQwmiBom5+M5Ji/t65dqgX7psgRLm8kZSvG54KRY3+MBZ9Qnb2
         pFnU5ka3J9MvsSv0kGKZqDsB8zgeWydPo414MSFrtX78V49NuiZrr3+6NQ8WXG0qYgc0
         LMpA==
X-Gm-Message-State: APuU4Z/Ag1u8ZGoCstvAwO7TO7sMCsVeFUR2wwr5yIR06jj9bPbHUCHY
	9X0qzM6wsPm8Pal06PrKGZVXfsdsnYTGh6RBEMFrAUHliswZhksDfbC3kCDjEA==
X-Gm-Gg: AYBFou214gEjwANIypJGP/QRVx1icBXHmiRonwzqzTM+p3gwUHEUNNNiFN4SzmY0K1H
	ZrCiQIFpZOh9zr/3c5KyUoeQxsyyB8sKAQDyNwuxG4NfyrxKz6+SZDp/7lN6xP8yj1Z1PurfwDi
	JcP61MlJqVI5ue5NBGMrIziYM6n3EHkbLuf8BLdhrRb4a44JjDyIjtwuksX7H93OfJJvNtuHo4j
	n8w3bFTW3VLaC3ZIOvSwpI/oNVUyg8FQf9MjUdbptHiVgewegjyP68Gis5JhkLbONow8E5csBSl
	RVsqidvzdcqzKwz89BiiHkglAX9VO8BVsz6P/IB8ecE4gabPkJP7V8qFR+uBiWjaY0lpIfh5xAv
	J8Kb/g196ahqs6zrP8WXPa0T/PJTNDwL2fljJobXHutX9fFD7dSeFtXAEfj7fDWOXoNSpdxHGI2
	+6gybBo37hdCt5fY2PTbjhKDSarnaLpn2XbyX9HVy0wzhJ9O2cKlqqnh6uYx9/Um47/smyzAv77
	4llT+6ypeCmoMKbMpssAVNcxKQD2kz9jWBfzOQQoGKHpof2uEqZ1sVvxZK/2ZI+3E5en0wA8mG/
	+TyTpYmtWlvKu9alxbCR6oxDwUy7kcM0Gbs8Q82U5s6skbOoHdXLPQTjWGlAMCwEOPlU
X-Received: by 2002:a05:6000:41dc:b0:48d:f996:1814 with SMTP id ffacd0b85a97d-4958d5e4e2fmr7387934f8f.57.1794228581910;
        Mon, 09 Nov 2026 04:49:41 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Baptiste Le Duc <baptiste.le-duc@vates.tech>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 2/2] xen/riscv: fix the base ISA checks in riscv_isa_parse_string()
Date: Mon,  9 Nov 2026 13:49:37 +0100
Message-ID: <20261109124937.78186-2-oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.56.0
In-Reply-To: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d25034/1794228582-030D9A5B-92A429C3/10/73395122804
X-purgate-type: spam
X-purgate-size: 1580

riscv_isa_parse_string() is meant to reject a riscv,isa string which
doesn't start with "rv32" or "rv64" (depending on Xen's bitness), but
the checks are written with && instead of ||, so a string is rejected
only when both characters of a pair are wrong. As a result, e.g.
"xv64i" or "rv62i" is accepted on RV64. Also, for a string as short as
"rv", isa[3] is read past the terminating NUL.

Use || so that each character is checked.

Fixes: f74ebf58b518 ("xen/riscv: identify specific ISA supported by cpu")
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/cpufeature.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/riscv/cpufeature.c b/xen/arch/riscv/cpufeature.c
index c4983ccdf3da..495cf3f655ba 100644
--- a/xen/arch/riscv/cpufeature.c
+++ b/xen/arch/riscv/cpufeature.c
@@ -261,14 +261,14 @@ static void __init match_isa_ext(const char *name, const char *name_end,
 static int __init riscv_isa_parse_string(const char *isa,
                                          unsigned long *out_bitmap)
 {
-    if ( (isa[0] != 'r') && (isa[1] != 'v') )
+    if ( (isa[0] != 'r') || (isa[1] != 'v') )
         return -EINVAL;
 
 #if defined(CONFIG_RISCV_32)
-    if ( isa[2] != '3' && isa[3] != '2' )
+    if ( (isa[2] != '3') || (isa[3] != '2') )
         return -EINVAL;
 #elif defined(CONFIG_RISCV_64)
-    if ( isa[2] != '6' && isa[3] != '4' )
+    if ( (isa[2] != '6') || (isa[3] != '4') )
         return -EINVAL;
 #else
 # error "unsupported RISC-V bitness"
-- 
2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:07:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:07:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480018.1683943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP5K-0007X3-HX; Mon, 09 Nov 2026 13:06:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480018.1683943; Mon, 09 Nov 2026 13:06:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP5K-0007Ww-Ej; Mon, 09 Nov 2026 13:06:54 +0000
Received: by outflank-mailman (input) for mailman id 1480018;
 Mon, 09 Nov 2026 13:06:52 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <mst@redhat.com>) id 1xQP5I-0007Wq-HM
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:06:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP5H-007SdI-QU
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:06:51 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <mst@redhat.com>)
 id 6af1c549-2eae-0a2a0a5409dd-0a2a45038c08-38
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:06:51 +0100
Received: from [170.10.129.124] (helo=us-smtp-delivery-124.mimecast.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <mst@redhat.com>)
 id 6af1c56a-fae8-0a2a45030019-aa0a817c7633-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:06:51 +0100
Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com
 [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-131-pBRmjVDgOZa92Wb7SLEkDg-1; Mon, 09 Nov 2026 08:06:48 -0500
Received: by mail-ej1-f69.google.com with SMTP id
 a640c23a62f3a-c4d4d132bbeso91555466b.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:06:48 -0800 (PST)
Received: from redhat.com ([2a0d:6fc0:1511:2900:ff37:b35c:a97:952d])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-c4d69f9384csm168299566b.13.2026.11.09.05.06.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 05:06:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1794229610;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=Ala+oDARam9VyrCVVd83FiqqzQ26GgOylxTttfV+xTA=;
	b=UXmcXJOtilHFjGvwez6rO6q+AbZFLoTde0Y511FZa8Lb1Ab7Lbiewhz5vCV0eEA7Nz7xDA
	A34uvJHDfl2e8bxZcRRR4hqBGi7MDd+AImCsbElrXtnX9MNkW6wqAu+HeVd0jcVCzvVv/X
	0mIn02WplMqjvTFwaiUbo3BrR6zDdRM=
X-MC-Unique: pBRmjVDgOZa92Wb7SLEkDg-1
X-Mimecast-MFC-AGG-ID: pBRmjVDgOZa92Wb7SLEkDg_1794229608
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229608; x=1794834408;
        h=in-reply-to:content-disposition:content-type:mime-version
         :references:message-id:subject:cc:to:from:date:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=Ala+oDARam9VyrCVVd83FiqqzQ26GgOylxTttfV+xTA=;
        b=nfT5wFhRyaWlX4XZ9BwNi0Vc7q/0qvCAi2ul1kgzRgaCEP0zSwW/q56/qwV9vjbIjj
         aeBpT7WqntoubCRlUFprwO8t/ZPNu7uahBKGeeHNMxDQd+ig5truaZ51jRlRx2iyFBkr
         ka1yxIU6I0znfAYj1/X0NQY64bNb2mSCdqdtQPw6RjlKppnE73X96SGke7uXIR/0mpGV
         yUV2jESiKozymhdRgPrq8iuw31WFbser14h+q69ASFs0sKvrwMzBFA4PaOmH8tUGt5JI
         2liIGeSmbm+J1zhfpSY6ecCiwY0i85aHoxquJpcTdCB/yliif0fgbQfYIhX34jVzcEhg
         ArSQ==
X-Forwarded-Encrypted: i=1; AL+hErHjbzQ7l5thom3w0ijQ2l4DZD7FPdtMa5Qot3eXcVGeqtict/9MEeWwF8CAcIY3ZuQdzPR+pLLRoro=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+IOp35oiGsq/WHH0bpK4ePJpsj3SnRF0TYapIiv0SfG/SduTat
	fuwJwWxgG6HNZHwKMyrBtFACCDoogE0tuqtPzONwx0hpR3dmAYFkHQKGky4pZoxFuQT7uOyXWFP
	d2Mtj3o2hX9kgF6ZLmuwNzqj2zNPoWLM6B5y+/umlqdpcmAqyCLGC4xU7Pc1uQl4KwY2l
X-Gm-Gg: AYBFou0BldCVR2aWXz8ojAiAxwlYS6x1yx5o0HORgBtbR82OHwW55EGVVW7erAI0GeW
	ohrDJYSqZ46orbA3FjNFW8/WLmdVv3EOwLEZrz0HznRItkylWBgptDdQ1ub48e7I5HLqHAL2uuf
	2ynCiA0KXCSMafDW+bOijyOHyOVQRRAdcXBhP3GHg8tauguEcTAxznVTqVakoyjyfE2XEyfEzDg
	mRHaJT8jZavJmRaMwB4AJ5vi+dVag+JJE2I5fJ5DVaAMxyMlS64xfcezBMQqK8yVKGCGztHBTsn
	Pr+dcjO3WuAXndBP8g5qA8eSIsAnWCUv3KLMqE3ZpCtqhYcr81Rnx4HOKefOS1Xu4Z9x95JuONp
	yKYpZkzRRYU614FtLMUmrlT/C8aZ34GIFXTlFIT7T
X-Received: by 2002:a17:907:18c3:b0:c25:f7db:4bec with SMTP id a640c23a62f3a-c4d6db5760cmr321582666b.18.1794229607392;
        Mon, 09 Nov 2026 05:06:47 -0800 (PST)
X-Received: by 2002:a17:907:18c3:b0:c25:f7db:4bec with SMTP id a640c23a62f3a-c4d6db5760cmr321574566b.18.1794229606674;
        Mon, 09 Nov 2026 05:06:46 -0800 (PST)
Date: Mon, 9 Nov 2026 08:06:38 -0500
From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Madhavan Srinivasan <maddy@linux.ibm.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>,
	Shrikanth Hegde <sshegde@linux.ibm.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
	Jason Wang <jasowangio@gmail.com>,
	Eugenio =?iso-8859-1?Q?P=E9rez?= <eperezma@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Jarkko Sakkinen <jarkko@kernel.org>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, x86@kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>, Jan Kara <jack@suse.com>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <stephen.smalley.work@gmail.com>,
	Ondrej =?utf-8?B?TW9zbsOhxI1law==?= <omosnacek@gmail.com>,
	Joel Stanley <joel@jms.id.au>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Ryan Chen <ryan_chen@aspeedtech.com>,
	Billy Tsai <billy_tsai@aspeedtech.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Abel Vesa <abelvesa@kernel.org>, Jens Wiklander <jenswi@kernel.org>,
	Sumit Garg <sumit.garg@kernel.org>,
	Scott Branden <scott.branden@broadcom.com>,
	Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Richard Cochran <richardcochran@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev,
	linux-sgx@vger.kernel.org, selinux@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org,
	linux-arm-msm@vger.kernel.org, op-tee@lists.trustedfirmware.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH 14/14] vhost-vdpa: convert mmap hook to mmap_prepare
Message-ID: <20261109080616-mutt-send-email-mst@kernel.org>
References: <20261105-late-2026-mmap_prepare-v1-0-c56aadfbab8a@kernel.org>
 <20261105-late-2026-mmap_prepare-v1-14-c56aadfbab8a@kernel.org>
MIME-Version: 1.0
In-Reply-To: <20261105-late-2026-mmap_prepare-v1-14-c56aadfbab8a@kernel.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-MFC-PROC-ID: JMOyTaCruMAXiUYSerI2Fti_VvvnCws3-nqbcyULA4o_1794229608
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-purgate-ID: tlsNG-33051d/1794229611-6D0D94E9-CF549194/35/111497
X-purgate-type: clean
X-purgate-size: 2780

On Thu, Nov 05, 2026 at 09:05:45PM +0000, Lorenzo Stoakes (ARM) wrote:
> Move from the deprecated mmap hook to the new mmap_prepare hook. The hook
> only validates the request and sets the VMA flags, operations and page
> protection.
> 
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>


Acked-by: Michael S. Tsirkin <mst@redhat.com>

Who's merging this, me?
> ---
>  drivers/vhost/vdpa.c | 23 ++++++++++++-----------
>  1 file changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index ff7d90719171..993b2d7c8927 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -1573,19 +1573,19 @@ static const struct vm_operations_struct vhost_vdpa_vm_ops = {
>  	.fault = vhost_vdpa_fault,
>  };
>  
> -static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
> +static int vhost_vdpa_mmap_prepare(struct vm_area_desc *desc)
>  {
> -	struct vhost_vdpa *v = vma->vm_file->private_data;
> +	struct vhost_vdpa *v = desc->file->private_data;
>  	struct vdpa_device *vdpa = v->vdpa;
>  	const struct vdpa_config_ops *ops = vdpa->config;
>  	struct vdpa_notification_area notify;
> -	unsigned long index = vma->vm_pgoff;
> +	unsigned long index = desc->pgoff;
>  
> -	if (vma->vm_end - vma->vm_start != PAGE_SIZE)
> +	if (vma_desc_size(desc) != PAGE_SIZE)
>  		return -EINVAL;
> -	if ((vma->vm_flags & VM_SHARED) == 0)
> +	if (!vma_desc_test(desc, VMA_SHARED_BIT))
>  		return -EINVAL;
> -	if (vma->vm_flags & VM_READ)
> +	if (vma_desc_test(desc, VMA_READ_BIT))
>  		return -EINVAL;
>  	if (!ops->get_vq_notification)
>  		return -ENOTSUPP;
> @@ -1598,12 +1598,13 @@ static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
>  		return -EINVAL;
>  	if (notify.addr & (PAGE_SIZE - 1))
>  		return -EINVAL;
> -	if (vma->vm_end - vma->vm_start != notify.size)
> +	if (vma_desc_size(desc) != notify.size)
>  		return -ENOTSUPP;
>  
> -	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
> -	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
> -	vma->vm_ops = &vhost_vdpa_vm_ops;
> +	desc->page_prot = pgprot_noncached(desc->page_prot);
> +	vma_desc_set_flags(desc, VMA_IO_BIT, VMA_PFNMAP_BIT, VMA_DONTEXPAND_BIT,
> +			   VMA_DONTDUMP_BIT);
> +	desc->vm_ops = &vhost_vdpa_vm_ops;
>  	return 0;
>  }
>  #endif /* CONFIG_MMU */
> @@ -1615,7 +1616,7 @@ static const struct file_operations vhost_vdpa_fops = {
>  	.write_iter	= vhost_vdpa_chr_write_iter,
>  	.unlocked_ioctl	= vhost_vdpa_unlocked_ioctl,
>  #ifdef CONFIG_MMU
> -	.mmap		= vhost_vdpa_mmap,
> +	.mmap_prepare	= vhost_vdpa_mmap_prepare,
>  #endif /* CONFIG_MMU */
>  	.compat_ioctl	= compat_ptr_ioctl,
>  };
> 
> -- 
> 2.56.0



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:07:30 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:07:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480023.1683952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP5u-0007vR-PX; Mon, 09 Nov 2026 13:07:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480023.1683952; Mon, 09 Nov 2026 13:07:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP5u-0007uV-Md; Mon, 09 Nov 2026 13:07:30 +0000
Received: by outflank-mailman (input) for mailman id 1480023;
 Mon, 09 Nov 2026 13:07:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQP5u-0007u3-1r
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:07:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP5t-002rOT-79
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:07:29 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c57e-bab6-0a2a0a5309dd-0a2a4502b2ee-32
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:07:29 +0100
Received: from [209.85.128.46] (helo=mail-wm1-f46.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c58e-6ca4-0a2a45020019-d155802ebd26-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:07:26 +0100
Received: by mail-wm1-f46.google.com with SMTP id
 5b1f17b1804b1-4a4d7ae1ae9so7523545e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:07:26 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb272f5sm240933215e9.15.2026.11.09.05.07.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:07:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:Autocrypt:Content-Language:Cc:To:Subject:From:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229646; x=1794834446; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to
         :cc:subject:date:message-id:reply-to:content-type;
        bh=3R7NupMc2lCg+/pdJmDIfs3OJ68ffldwbjuDmgWU7T0=;
        b=Csm50TaIHpHVf8l9HSjeGrsr2Tu8/xorwLpx8vuK1v3Djyd1edetnsDjiaBMnUHjqo
         TxhXtU2UQZJ1WylGg8HTIUqyNVAXFwPzBgYBdzLI2obl1K5A5zavm2d3QUJT9TTRuBF2
         /biAF4MjTB9l2jpKR96Tjeq6D2ZLG1F2vN+pFBxpRnY+gySDMtT/NzWdB6RIoa6wS+RC
         9s+MDfg795WOmJyipMXjDij3S3cF3k46K3VSKjM6HOlWhkboBg6UYrCR5v0mZtfJh5CQ
         ahHB6cfMDImfeEwdeeZSppdjbnqUuKlFgIFN89fhMCNR3kVFj8RWJEEq/DzcXZ48RFzA
         wPpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229646; x=1794834446;
        h=content-transfer-encoding:content-type:autocrypt:content-language
         :cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=3R7NupMc2lCg+/pdJmDIfs3OJ68ffldwbjuDmgWU7T0=;
        b=SZ1x4YFqzSvrQLsZJGhqHyHQtYLtyCWSJsTwq8w4cxQJDCg06apU2MOURimoDcXO2h
         GVBbfsHFIqC1kJEPehFj2sHMGzhmxwJ5KcnZq6CZj8OwNAB9zFyd6cxqeq6prVBVt5md
         +5Wfkn+piEXK1+u8erBOwpAeeazDKOv61ARNps2/2GvDV5t+PAnSnPC/T+h2GttErqBm
         hBgGZ/5cv76dEgFQ+ihhf9ffiOaIkViFdkwTAhSbRyZ46QbeQMlB4jWJWl0Ws4NkVk9B
         +gSmZhViDmsIz8TNfzOP7FTJQxX1jJGkvQglY1Hi2Z9p6kmYjD48n45K9sVtuEpLeMJK
         BAlQ==
X-Gm-Message-State: APuU4Z//LSg5wbgUrwo6fs5FKqM6YGxinGw+2E2KsCVJnplPa1eJrBSK
	MC7pORj7Pjnlq5l1FxPRb2hyRJGmNLGrNgQIJTCQkP65+MXKGC/DsxWrWfxAOkMj1W6QC55vgds
	izwuqkw==
X-Gm-Gg: AYBFou35dwgwvVNhtz/ccTGErNquTGwqkUWfNR8YhtuTQ/VEIOhOXN2TCSqaUF3QTMr
	TqC1EZ4ydsVGfn7WcbPni7p2129PhdJb+S7vJy2Ci4uncgkDWDaFOHSokBUFtIjjUP5q8kKCbYN
	FNfakdZfiGDO8VNLJi2qpFJxR/4MK5//2Mfz/ZQ9SvvdpDLD5IUMTJ2OqI8cUxd+SdcKL+1I8Pz
	J02L8pjrjeBZtT2JZRUzDHKoY7u0t86TAFMzNthk27uZEvZrrBh3M1KCRsj/s0glYCIcdDUBqIA
	uGJqDevqDA/KA/Sp2yESgwz0Ak2rVWEGKTAGJhf7tmDV9tS2nSYCP753SrVv3m1Tr4YMGywXCq4
	zXhr1JAMb/EuKopC1DiZVlAF1P7frb8o9Mj3kAdLvjgv7pMU/ytDFHbGNvca5Iszum0SxlBgv04
	hRmYcmRM66VbjXqe61aZGe+XyiW1/O0XxIhjJRgxqAm3RiAiJHQ9sHxBC3hyUm9s9IZgfR6MNdB
	u1W+TpToIm7uAxZg0Dt/9yu2lEMgp+LFWKYzGvMul+9x60TpSNLM1YguMayX38bk9vin3+o24GB
	QoHscTM1Hw6S+s3b735nMVo8hJN+dKa2xSuW7xppvYMKIC7idT16haHdvur4Mc+PJ3vcuEMhgTh
	uN/BSFGc6xFopsPN8
X-Received: by 2002:a05:600c:3b03:b0:4a1:d97e:cd60 with SMTP id 5b1f17b1804b1-4b963c6c875mr73492705e9.16.1794229645885;
        Mon, 09 Nov 2026 05:07:25 -0800 (PST)
Message-ID: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Date: Mon, 9 Nov 2026 14:07:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v5 0/4] x86: CET-SS related adjustments
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1794229646-F0AA52AC-B870C612/10/78276251493
X-purgate-type: spam
X-purgate-size: 473

One might think of this as follow-on to XSA-451, but that's not quite
the right order of events.

There are a few open aspects; see in particular the final patch.

v5 addresses review feedback on just the 1st patch; the other three are
unchanged from v4.

1: record SSP at non-guest entry points
2: traps: use entry_ssp in fixup_exception_return()
3: traps: reduce indentation in fixup_exception_return()
4: prefer shadow stack for producing call traces

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:08:08 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:08:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480033.1683962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP6U-0008Sb-4Q; Mon, 09 Nov 2026 13:08:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480033.1683962; Mon, 09 Nov 2026 13:08:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP6U-0008SS-18; Mon, 09 Nov 2026 13:08:06 +0000
Received: by outflank-mailman (input) for mailman id 1480033;
 Mon, 09 Nov 2026 13:08:05 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQP6T-0008SC-4G
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:08:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP6S-003xok-H9
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:08:04 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5a5-8faa-0a2a0a5109dd-0a2a4508a774-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:04 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5b4-f659-0a2a45080019-d155dd2db196-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:04 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-492fcbfaa87so541100f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:08:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-49597d0a775sm10792976f8f.55.2026.11.09.05.08.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:08:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229684; x=1794834484; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=SecZZq9fuPHvRmh1WvuUmmfIbPjJb6Pt5XQ5H/cNAmk=;
        b=Jm7fTvFZ4Io7lDN5PpEzx90t0ttaA4JPFy0dFKNiUZDItlXOOUvfPU28BLmXTdB7H/
         m4Z08ZhSSe/xva6Fp/cgwIYR/Bb2Ya7pArnIYMfpxHU8tl7EHh+a9cy6Y083ZGx50RII
         gDo9gymRnDRMop6KtLKdNkgWJ2hXfyxhGc5RLKF3ilhAXSldYTqyZXPq7pVUQG5gikwu
         nZDfI5db7FkSYgdk0vmn50Wa3dx6R8YJUWQ5jhhN/UvKrLf49/9a3Q9aNuH7PJkSPTNA
         +4Zacr96tAyfzx8J1yKyHyBzNFfMrYyBSW3qjMhE7eqeGoTzZ8XfuyUoIERzwOIbTFwq
         rBVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229684; x=1794834484;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=SecZZq9fuPHvRmh1WvuUmmfIbPjJb6Pt5XQ5H/cNAmk=;
        b=E11B6I8Me8MPDlqAp44Tjv8QZLBScLp5gon3Lq/PahXwCF4swl+J9jAcRKvaW+HZNt
         /wWEiPgd4hoa1QM/ZEhOnGSHhEF7XXxbDmTy3QchqUdmfCYtzP18E5oxBm47Zegj70C/
         Wl1YAWmGmKSnoe/9Z0Vlpmj2Ix82TVRmVD3LG5tYi/OcnWu6ZSorJCGcltrN1Uq9JS+v
         5AFwIHTx6XXD01htwROLTB7X75AdoVjGGfYIxEvnrLjyn6Vt3FJZgznkBuJXo9QenKzk
         D0uRbT5Apl5wQhFWOX96R63iXPWY/2upcqyLp1yWiOnu8mUDVxTZLrzCcpDWAfYxOlWe
         RWpg==
X-Gm-Message-State: APuU4Z9sktpYHNrq6oybyfSij2t5Tw0Z+8V3/0UsFtScG6MqqUaLBIUE
	YzPk1x+aSAOCcaJp+3zP26+Qe/4nOF0ReH52741TrcOjl7OcbewNzornoQXjf5SX1MGgfl6vUP/
	i6MRXNQ==
X-Gm-Gg: AYBFou126YBvBNxQSingCfOiZy9s9x9UzhfXuY6w+OMMpILj5HmD5qajvbCWzzK3yeV
	aZCQgKx/saC+coa5G2FRpn5LTxDuO4ostze3EgBtoRoZms1wAhuSoNGjJ6VjsLtdOV1GPSt1ifZ
	b0uizO9YhmqfnLL7RLIO0l8gDSpE5dxOmYsvot0aNHKkSiWZSrLIFIC0QJYI7RB0PuQf9WeaRmq
	L9NYooPpIcsRfmqp02VvfGb4mJPAmr7+r8CFDNysE+3dk6EJzmHsNUrDo52/gdnxeWeZpjrfC5u
	+vNwVZBGqzt+EWxA8zP8LqqllCVpQWhEcIQOEnj8Wb+CxJWLwb3s/4x9XQkBQBaeTk8kOX0AOmg
	fuSaFtTEfDb3qd4+AkTw7A3Ti+QWwrzgXO++o2mII5vlcX+IvZmX1aLb+Ybj8478li8xxBenTnk
	9poefaMRJri4mXbF3rjD+zEh0Ntrq1GuaNNAHTGLcOarQFTwoYFQiwJMZieVod11IWR1raMvC+b
	0psbgp3JJ9e4awtd6DJknpi70XRekqZcDkBY2uhsdYLw3cIRYY8kYWhy8BOTICWTju+chdbx5cS
	kWXztGGJiLttu39ZhAtjtseD5w73zj1i6NG4nHvkaycsy7E91Rbm2AexuHAwFVpHb0qJNkEfU/J
	nBA==
X-Received: by 2002:a05:6000:25ea:b0:490:2d81:ccbb with SMTP id ffacd0b85a97d-49584e3dccbmr7579686f8f.52.1794229683646;
        Mon, 09 Nov 2026 05:08:03 -0800 (PST)
Message-ID: <2b348885-fb2d-420f-8f71-81e3a9c836af@suse.com>
Date: Mon, 9 Nov 2026 14:08:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 1/4] x86: record SSP at non-guest entry points
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1794229684-CE74387B-49275601/10/78276251493
X-purgate-type: spam
X-purgate-size: 2764

We will want to use that value for call trace generation, and likely
also to eliminate the somewhat fragile shadow stack searching done in
fixup_exception_return(). For those purposes, guest-only entry points do
not need to record that value.

To keep the saving code simple, record our own SSP that corresponds to
an exception frame, pointing to the top of the shadow stack counterpart
of what the CPU has saved on the regular stack. Consuming code can then
work its way from there.

In SAVE_ALL / RESTORE_ALL simply drop the use of UREGS_r15. We want the
full size in all cases, so what exactly the top-of-stack field is going
to be (whose UREGS_* is 0 anyway) doesn't matter this much there. This
way we don't need to distinguish between XEN_SHSTK=y and XEN_SHSTK=n.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v5: Drop ssp parameter of PUSH_AND_CLEAR_GPRS again.
v4: Re-base.
v3: Put new field at the front of struct cpu_user_regs.
v2: Add comment ahead of SAVE_ALL. Add comma between its parameters.
    Re-base.

--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -259,12 +259,19 @@ static always_inline void stac(void)
         xor   %r14d, %r14d
         push  %r15
         xor   %r15d, %r15d
+#ifdef CONFIG_XEN_SHSTK
+        rdsspq %rcx
+        push  %rcx
+#endif
 .endm
 
 /*
  * POP GPRs from a UREGS_* frame on the stack.  Does not modify flags.
  */
 .macro POP_GPRS skip_rax=0
+#ifdef CONFIG_XEN_SHSTK
+        pop   %rcx
+#endif
         pop   %r15
         pop   %r14
         pop   %r13
--- a/xen/arch/x86/include/asm/cpu-user-regs.h
+++ b/xen/arch/x86/include/asm/cpu-user-regs.h
@@ -11,6 +11,15 @@
  */
 struct cpu_user_regs
 {
+#ifdef CONFIG_XEN_SHSTK
+    /*
+     * This points _at_ the corresponding shadow stack frame; it is _not_ the
+     * outer context's SSP.  That, if the outer context has CET-SS enabled,
+     * is stored in the top slot of the pointed to shadow stack.
+     */
+    uint64_t entry_ssp;
+#endif
+
     union { uint64_t r15;    uint32_t r15d;   uint16_t r15w;  uint8_t r15b; };
     union { uint64_t r14;    uint32_t r14d;   uint16_t r14w;  uint8_t r14b; };
     union { uint64_t r13;    uint32_t r13d;   uint16_t r13w;  uint8_t r13b; };
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -57,6 +57,9 @@ void __dummy__(void)
     OFFSET(UREGS_eflags, struct cpu_user_regs, rflags);
     OFFSET(UREGS_rsp, struct cpu_user_regs, rsp);
     OFFSET(UREGS_ss, struct cpu_user_regs, ss);
+#ifdef CONFIG_XEN_SHSTK
+    OFFSET(UREGS_entry_ssp, struct cpu_user_regs, entry_ssp);
+#endif
     DEFINE(UREGS_kernel_sizeof, sizeof(struct cpu_user_regs));
     BLANK();
 



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:08:31 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:08:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480039.1683972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP6t-0000Wy-BZ; Mon, 09 Nov 2026 13:08:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480039.1683972; Mon, 09 Nov 2026 13:08:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP6t-0000Wq-7k; Mon, 09 Nov 2026 13:08:31 +0000
Received: by outflank-mailman (input) for mailman id 1480039;
 Mon, 09 Nov 2026 13:08:29 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQP6r-0000U6-KW
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:08:29 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP6r-007emB-19
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:08:29 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5bf-bab6-0a2a0a5309dd-0a2a4507d41c-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:28 +0100
Received: from [209.85.128.51] (helo=mail-wm1-f51.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5cb-b4ea-0a2a45070019-d1558033e434-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:28 +0100
Received: by mail-wm1-f51.google.com with SMTP id
 5b1f17b1804b1-4a35a60499eso6289365e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:08:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b76cbdb9cdsm194886635e9.1.2026.11.09.05.08.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:08:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229707; x=1794834507; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=MgcXWj5vqnP+4zvYUktX5k7TuUXNjhHYEeS80l/cLOs=;
        b=GatG4V6Oyrx0EZ4NbrFbsYKBtSKWu+Mm93yja4qQMqyHRdeSFsbfZy9x+JX7EvfgUp
         GL8OWjdLwXVjT55Cul886OOxiAz+gWAhwbS1tvVQ1sEfRydpO7WLlncyILGiIjReFoSG
         fBjZtBM4TL2cd6CE1K12AI6VznE1uoUyrNGBxCWgD/rBA0LM/gdTItF72JCtXNheDqfO
         DYiD9T7jp4vL1ilWvOXLTGyvcL3QhkSD5X1QpdlFpCIlDD+uVzqdZZHiH1ak6qTZXpAf
         g263JMqIOSViZ+v3b01JgycSQdA1vQoLv39GAMaZIwGfMMY24tXWF6+Fra3PkxfjPq3u
         O7bA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229707; x=1794834507;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=MgcXWj5vqnP+4zvYUktX5k7TuUXNjhHYEeS80l/cLOs=;
        b=BHYn70eCB3i+7d6Kbn+Z1RfogoKmQMP06Z1WLNHPdow0KYZE3OMsgqyTEGKTy5Sd8f
         FvcQp6UywAnjNvipMhEaAkQ1X9IXsSV+s7h5qAN2aRT58uGZnF0SLufdifkG5BAMede/
         dRpUupTASW1HIM3OCLPUplnxK8/9AWlPlV3MOWyHixUBv7eBBx4q9njFC287gSFpUF6N
         zITLdG9nLxUGjYY9+WOz9ZJnbDeh9I1eoh+QuWTPqGR4JZ56TYa/TZrWeGs0np4vayzN
         I6/KpyNJrwk/bkLVddb8Kiy+2kZfiocfHKwW9tRK9Ys2qpHnZa0ZAAiq9IWVyfOdU56R
         RThQ==
X-Gm-Message-State: APuU4Z9K8WdoBfIsI4jJc8Bz0a5Lga39FdjN7IboXwqIFlKik8sl9X/6
	0RtUwla3L+3dRdtIiVymPph8Oq4VcH4o4swnukWbw9RgGJ6zOwDK7m3jDPJYu5HcTQxJ0nIn+0n
	xpsGUqQ==
X-Gm-Gg: AYBFou1/kxtIHLAr/aRxYxkhYugvs9dAHf5OWCSidHmLXYYmYLTirBymnofHH2C1RbA
	/E8v0rN1335MqnSySlF6QyBpgtW4CdHEILU3/ZzoUydtYJyr+v8fR1baMB2MFuX/mUts0QB3ytZ
	KTQZ9DcKZRFntzEmDMGfx12lHqFe0LLitr0u+u0fY0vg1GH4jIfB8g0ny5UiT/cc2l92DYU1K1Q
	bGl4ba9UnpEWiKLkMQE/JmoOPhUZ1JdNzjmW60TvJ9TegGeAinjxGgNwAC3qDcAMNMh5KAd1L9w
	yZwSflrRs1DJrN+IGS186VDWh9hWJWFqVBuSaKJWAY3mdnBtCDzLm/aQRed2hIAQwwrDmEkmorh
	gWXPXSY2towM5FFU0kpg6tZUjH0W3y06Lh1Gc7H1lMhZhGH6Osb5k0kFSO/zsSXoPo6Xa6ApRo1
	u+xkcqtYPk1zVPGD0S+X5UtR2fig80z22DkrckzkPMCTrULHLJNTvS0nkFLQqndUqU/CFnNJUxj
	NX4SE7oFmM9l5zjbZXjJc9ijEUTVvD7e5PB9EBNels9rOcdV5XcnW3CWLvVKfYxjVQYg85pRtQx
	C7C9S0eCfTJYC6aFdzKjtV1SKplkotSI90W5RL+2yZ+SxJEsqS+E2vAPihiMKgT6RgvbaLIfjMQ
	Q+gJGIee5xeeyPEg=
X-Received: by 2002:a05:600c:1906:b0:4af:79ee:f660 with SMTP id 5b1f17b1804b1-4b963c8153cmr71863165e9.31.1794229707510;
        Mon, 09 Nov 2026 05:08:27 -0800 (PST)
Message-ID: <edcf7f03-183b-4fae-bea1-d938e95a7eaa@suse.com>
Date: Mon, 9 Nov 2026 14:08:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 2/4] x86/traps: use entry_ssp in fixup_exception_return()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-ef75cf/1794229708-358C1AE4-2863B18D/10/78276251493
X-purgate-type: spam
X-purgate-size: 5932

With the value recorded on entry there's no need anymore to go hunt for
the respective exception frame on the shadow stack. By deriving "ptr"
from that field (without any offset), it then ends up pointing one slot
lower than before. Therefore all array indexes need incrementing, nicely
doing away with all the negative ones.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Indentation of the prior inner (but not innermost) if()'s body is
deliberately left untouched, to aid review. It'll be adjusted in a
separate follow-on patch.
---
v3: Relax the first BUG_ON().
v2: IS_ENABLED() -> #ifdef. Re-base.

--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -690,19 +690,6 @@ unsigned long get_stack_trace_bottom(uns
     }
 }
 
-static unsigned long get_shstk_bottom(unsigned long sp)
-{
-    /* SAF-11-safe */
-    switch ( get_stack_page(sp) )
-    {
-#ifdef CONFIG_XEN_SHSTK
-    case 0:  return ROUNDUP(sp, IST_SHSTK_SIZE) - sizeof(unsigned long);
-    case 5:  return ROUNDUP(sp, PAGE_SIZE)      - sizeof(unsigned long);
-#endif
-    default: return sp - sizeof(unsigned long);
-    }
-}
-
 unsigned long get_stack_dump_bottom(unsigned long sp)
 {
     switch ( get_stack_page(sp) )
@@ -1187,26 +1174,29 @@ void asmlinkage noreturn do_unhandled_tr
 static void fixup_exception_return(struct cpu_user_regs *regs,
                                    unsigned long fixup, unsigned long stub_ra)
 {
-    if ( IS_ENABLED(CONFIG_XEN_SHSTK) )
+#ifdef CONFIG_XEN_SHSTK
     {
-        unsigned long ssp, *ptr, *base;
+        unsigned long ssp = rdssp();
 
-        if ( (ssp = rdssp()) == SSP_NO_SHSTK )
-            goto shstk_done;
+        if ( ssp != SSP_NO_SHSTK )
+        {
+            unsigned long *ptr = _p(regs->entry_ssp);
+            unsigned long primary_shstk =
+                (ssp & ~(STACK_SIZE - 1)) +
+                (PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE - 8;
 
-        ptr = _p(ssp);
-        base = _p(get_shstk_bottom(ssp));
+            BUG_ON((regs->entry_ssp ^ primary_shstk) >>
+                   (PAGE_SHIFT + STACK_ORDER));
 
-        for ( ; ptr < base; ++ptr )
-        {
             /*
-             * Search for %rip.  The shstk currently looks like this:
+             * The shstk currently looks like this:
              *
              *   tok  [Supervisor token, == &tok | BUSY, only with FRED inactive]
              *   ...  [Pointed to by SSP for most exceptions, empty in IST cases]
              *   %cs  [== regs->cs]
              *   %rip [== regs->rip]
-             *   SSP  [Likely points to 3 slots higher, above %cs]
+             *   SSP  [Pointed to by entry_ssp; Likely points to 3 slots
+             *         higher, above %cs]
              *   ...  [call tree to this function, likely 2/3 slots]
              *
              * and we want to overwrite %rip with fixup.  There are two
@@ -1219,13 +1209,10 @@ static void fixup_exception_return(struc
              *
              * Check for both regs->rip and regs->cs matching.
              */
-            if ( ptr[0] == regs->rip && ptr[1] == regs->cs )
-            {
-                unsigned long primary_shstk =
-                    (ssp & ~(STACK_SIZE - 1)) +
-                    (PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE - 8;
+            BUG_ON(ptr[1] != regs->rip || ptr[2] != regs->cs);
 
-                wrss(fixup, ptr);
+            {
+                wrss(fixup, &ptr[1]);
 
                 if ( !stub_ra )
                     goto shstk_done;
@@ -1242,7 +1229,7 @@ static void fixup_exception_return(struc
                  * - if we're on an IST stack, we need to increment the
                  *   original SSP.
                  */
-                BUG_ON((ptr[-1] ^ primary_shstk) >> PAGE_SHIFT);
+                BUG_ON((ptr[0] ^ primary_shstk) >> PAGE_SHIFT);
 
                 if ( (ssp ^ primary_shstk) >> PAGE_SHIFT )
                 {
@@ -1251,39 +1238,30 @@ static void fixup_exception_return(struc
                      * addresses actually match.  Then increment the interrupted
                      * context's SSP.
                      */
-                    BUG_ON(stub_ra != *(unsigned long*)ptr[-1]);
-                    wrss(ptr[-1] + 8, &ptr[-1]);
+                    BUG_ON(stub_ra != *(unsigned long*)ptr[0]);
+                    wrss(ptr[0] + 8, &ptr[0]);
                     goto shstk_done;
                 }
 
                 /* Make sure the two return addresses actually match. */
-                BUG_ON(stub_ra != ptr[2]);
+                BUG_ON(stub_ra != ptr[3]);
 
                 /* Move exception frame, updating SSP there. */
-                wrss(ptr[1], &ptr[2]); /* %cs */
-                wrss(ptr[0], &ptr[1]); /* %rip */
-                wrss(ptr[-1] + 8, &ptr[0]); /* SSP */
+                wrss(ptr[2], &ptr[3]); /* %cs */
+                wrss(ptr[1], &ptr[2]); /* %rip */
+                wrss(ptr[0] + 8, &ptr[1]); /* SSP */
 
                 /* Move all newer entries. */
-                while ( --ptr != _p(ssp) )
-                    wrss(ptr[-1], &ptr[0]);
+                while ( ptr-- != _p(ssp) )
+                    wrss(ptr[0], &ptr[1]);
 
                 /* Finally account for our own stack having shifted up. */
                 asm volatile ( "incsspd %0" :: "r" (2) );
-
-                goto shstk_done;
             }
         }
-
-        /*
-         * We failed to locate and fix up the shadow IRET frame.  This could
-         * be due to shadow stack corruption, or bad logic above.  We cannot
-         * continue executing the interrupted context.
-         */
-        BUG();
-
     }
  shstk_done:
+#endif /* CONFIG_XEN_SHSTK */
 
     /* Fixup the regular stack. */
     regs->rip = fixup;



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:08:51 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480044.1683979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP7D-0000xx-Hr; Mon, 09 Nov 2026 13:08:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480044.1683979; Mon, 09 Nov 2026 13:08:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP7D-0000xq-EQ; Mon, 09 Nov 2026 13:08:51 +0000
Received: by outflank-mailman (input) for mailman id 1480044;
 Mon, 09 Nov 2026 13:08:50 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQP7C-0000xR-1I
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:08:50 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP7B-003y5h-EM
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:08:49 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5d4-8faa-0a2a0a5109dd-0a2a4502d7fe-40
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:49 +0100
Received: from [209.85.221.44] (helo=mail-wr1-f44.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5e1-6ca4-0a2a45020019-d155dd2cf077-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:08:49 +0100
Received: by mail-wr1-f44.google.com with SMTP id
 ffacd0b85a97d-491971ac844so820372f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:08:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90ee249d3sm144512205e9.7.2026.11.09.05.08.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:08:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229729; x=1794834529; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=kWNN+CSvpz5vv5zgWaxbE6Boj6ISxZgPbPxn4bWn+ns=;
        b=FPGv6Z+w/YU0ez+XvH0IYpRbcDVkfvWsuW2KWHh8kNkiNU/3pYwbM8Ah+ZXzc46vwX
         oj3g+Dd3is1paSufOp3QDIavH25lQ+Oe2tMIjqF306plaWzUoHxrhtReiIfhHlTJEFVN
         lDrGwiHFKXm1WGtigeq0eq6AbZoXS5TsPs/J+9MiIaAyDzOZ6u+4XfjbmnPxUXlxWkjE
         6B3oYUZIKgxQ803ixCl4mMCnzNdG9HG1b6SO+JCooAxGTgSlVGXyzdUaQXWuHlzlh3Ch
         sicIW5/9Dm9bPyINHEcmgUl0s3n+vHG4npUHFM9/pxdRwrDHoDVbIy7o2BxFTaCOrxZy
         zw1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229729; x=1794834529;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=kWNN+CSvpz5vv5zgWaxbE6Boj6ISxZgPbPxn4bWn+ns=;
        b=YUUs2VNLtSCWQFNMrRDfP4NUAIXO/hQUg10AFmbw0ENz9T95khCTa01d7f8nlGoKlj
         DWuoAIIt6AGSt/tBEzLkxI7mMuVO0NO1g/WP74qWIl+WpK0I5T5JcC8iWJb1aQ/4H/Kd
         9JBAxwqEXZMzjNdzTuZA3TRU5SJ0nPONA1s/bRjCbPgLqiXAz5/mCLwvgdGPFf6f9GVQ
         8KAEspOiZpiC/j/DhCljFpULeoYPm7kSCyH5QcBoINsMdrrX04Cklad0gMb645mAW05Z
         QTbXy1ay+UDwz3HO7I1vM4NVLHjnPJUtQLjPU8MwRsdcMWwqhBgm15b8dVVZbZBeWjVb
         i+uQ==
X-Gm-Message-State: APuU4Z+o1fF4H/zXGvsuKKrPDmavA1fWgjiR/bGwFZ3S9NGDjtTpaiNN
	RhQ05RhhroV+QWcVh7xizXaeyxRerzy1IE4FDL8j1VZrItj12gnnABIIMPnxzjlkzu43sa53jLU
	vskEAtA==
X-Gm-Gg: AYBFou2AKUk4dWZvgJ8tPJg7JJquFT6YAobRREe45p4EzrwQ0x70uH+a42fjc8IZtIH
	Bs6Ehy9ylzGYYpk9s9GXBxRgbU6XhzH94sUey+Qjx+aJvQg/+1rBa20JJ9a0K4oGdLqF4+cR4De
	D8ss2dyMfppoJ5UATzyWGXj8TREDUfMmWHrRYEVoTH7U5UCtC2BG5hS54jDHTfPy3dl4ewXDMoY
	UH6fMSF5LFZd5vaG/dJ9O0ettk1O60sCNw5kSDnYu3qjU+kriNVlkvxzKkWa6/MJCFLYPwyjRAz
	4PQFktbpA4FZqEpwtY1sL02CT6mtahZFEYJL7w4H2TzGN4bS1B/Aaa8QV6V3e63Hgbg9yr0FhD1
	n7qjQgs8AiOfOIjR5nNUAOYsviSgk10g/mmoRMITmrwW2iI34Rk6DNKIPrWCklITZmV0tuftBrw
	n1B8zMCFcD/vCHAenL17Ogb67+1E+B5bal6VCJfldBv+RvD39O474MnfEAxuMeo5czoKfXn9cjI
	3iVlsV9LEoedPkmnWunpyT7g+QSwzVpLrhT375ZrutvEG1ztBDQwMR+u2gdOw3AfTjNPiedyLkx
	LtLtN7f8SNuEKFMeCVnPezPsSEesx4H7Vzp0xfMnPtuCe+Jfb44MGW2xrHJCeLrKTwqIWt+JAKC
	xY8HbTrLbYf3uK+k3
X-Received: by 2002:a05:600c:1c02:b0:4a2:74f:46c1 with SMTP id 5b1f17b1804b1-4b9633cee71mr91387225e9.8.1794229728618;
        Mon, 09 Nov 2026 05:08:48 -0800 (PST)
Message-ID: <6df9553e-af02-4c82-80c8-5b34dd7e919e@suse.com>
Date: Mon, 9 Nov 2026 14:08:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 3/4] x86/traps: reduce indentation in
 fixup_exception_return()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1794229729-F32B12AC-3877A60C/10/78276251493
X-purgate-type: spam
X-purgate-size: 7461

The earlier "x86/traps: use entry_ssp in fixup_exception_return()" left
unnecessary scopes and hence unnecessarily deep indentation. While that
was intentional (to improve readabilirty of the diff), rectify this now.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
v4: New.

--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1175,90 +1175,86 @@ static void fixup_exception_return(struc
                                    unsigned long fixup, unsigned long stub_ra)
 {
 #ifdef CONFIG_XEN_SHSTK
+    unsigned long ssp = rdssp();
+
+    if ( ssp != SSP_NO_SHSTK )
     {
-        unsigned long ssp = rdssp();
+        unsigned long *ptr = _p(regs->entry_ssp);
+        unsigned long primary_shstk =
+            (ssp & ~(STACK_SIZE - 1)) +
+            (PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE - 8;
+
+        BUG_ON((regs->entry_ssp ^ primary_shstk) >>
+               (PAGE_SHIFT + STACK_ORDER));
+
+        /*
+         * The shstk currently looks like this:
+         *
+         *   tok  [Supervisor token, == &tok | BUSY, only with FRED inactive]
+         *   ...  [Pointed to by SSP for most exceptions, empty in IST cases]
+         *   %cs  [== regs->cs]
+         *   %rip [== regs->rip]
+         *   SSP  [Pointed to by entry_ssp; Likely points to 3 slots
+         *         higher, above %cs]
+         *   ...  [call tree to this function, likely 2/3 slots]
+         *
+         * and we want to overwrite %rip with fixup.  There are two
+         * complications:
+         *   1) We cant depend on SSP values, because they won't differ by
+         *      3 slots if the exception is taken on an IST stack.
+         *   2) There are synthetic (unrealistic but not impossible)
+         *      scenarios where %rip can end up in the call tree to this
+         *      function, so we can't check against regs->rip alone.
+         *
+         * Check for both regs->rip and regs->cs matching.
+         */
+        BUG_ON(ptr[1] != regs->rip || ptr[2] != regs->cs);
+
+        wrss(fixup, &ptr[1]);
+
+        if ( !stub_ra )
+            goto shstk_done;
+
+        /*
+         * Stub recovery ought to happen only when the outer context
+         * was on the main shadow stack.  We need to also "pop" the
+         * stub's return address from the interrupted context's shadow
+         * stack.  That is,
+         * - if we're still on the main stack, we need to move the
+         *   entire stack (up to and including the exception frame)
+         *   up by one slot, incrementing the original SSP in the
+         *   exception frame,
+         * - if we're on an IST stack, we need to increment the
+         *   original SSP.
+         */
+        BUG_ON((ptr[0] ^ primary_shstk) >> PAGE_SHIFT);
 
-        if ( ssp != SSP_NO_SHSTK )
+        if ( (ssp ^ primary_shstk) >> PAGE_SHIFT )
         {
-            unsigned long *ptr = _p(regs->entry_ssp);
-            unsigned long primary_shstk =
-                (ssp & ~(STACK_SIZE - 1)) +
-                (PRIMARY_SHSTK_SLOT + 1) * PAGE_SIZE - 8;
-
-            BUG_ON((regs->entry_ssp ^ primary_shstk) >>
-                   (PAGE_SHIFT + STACK_ORDER));
-
             /*
-             * The shstk currently looks like this:
-             *
-             *   tok  [Supervisor token, == &tok | BUSY, only with FRED inactive]
-             *   ...  [Pointed to by SSP for most exceptions, empty in IST cases]
-             *   %cs  [== regs->cs]
-             *   %rip [== regs->rip]
-             *   SSP  [Pointed to by entry_ssp; Likely points to 3 slots
-             *         higher, above %cs]
-             *   ...  [call tree to this function, likely 2/3 slots]
-             *
-             * and we want to overwrite %rip with fixup.  There are two
-             * complications:
-             *   1) We cant depend on SSP values, because they won't differ by
-             *      3 slots if the exception is taken on an IST stack.
-             *   2) There are synthetic (unrealistic but not impossible)
-             *      scenarios where %rip can end up in the call tree to this
-             *      function, so we can't check against regs->rip alone.
-             *
-             * Check for both regs->rip and regs->cs matching.
+             * We're on an IST stack.  First make sure the two return
+             * addresses actually match.  Then increment the interrupted
+             * context's SSP.
              */
-            BUG_ON(ptr[1] != regs->rip || ptr[2] != regs->cs);
+            BUG_ON(stub_ra != *(unsigned long*)ptr[0]);
+            wrss(ptr[0] + 8, &ptr[0]);
+            goto shstk_done;
+        }
 
-            {
-                wrss(fixup, &ptr[1]);
+        /* Make sure the two return addresses actually match. */
+        BUG_ON(stub_ra != ptr[3]);
 
-                if ( !stub_ra )
-                    goto shstk_done;
+        /* Move exception frame, updating SSP there. */
+        wrss(ptr[2], &ptr[3]); /* %cs */
+        wrss(ptr[1], &ptr[2]); /* %rip */
+        wrss(ptr[0] + 8, &ptr[1]); /* SSP */
+
+        /* Move all newer entries. */
+        while ( ptr-- != _p(ssp) )
+            wrss(ptr[0], &ptr[1]);
 
-                /*
-                 * Stub recovery ought to happen only when the outer context
-                 * was on the main shadow stack.  We need to also "pop" the
-                 * stub's return address from the interrupted context's shadow
-                 * stack.  That is,
-                 * - if we're still on the main stack, we need to move the
-                 *   entire stack (up to and including the exception frame)
-                 *   up by one slot, incrementing the original SSP in the
-                 *   exception frame,
-                 * - if we're on an IST stack, we need to increment the
-                 *   original SSP.
-                 */
-                BUG_ON((ptr[0] ^ primary_shstk) >> PAGE_SHIFT);
-
-                if ( (ssp ^ primary_shstk) >> PAGE_SHIFT )
-                {
-                    /*
-                     * We're on an IST stack.  First make sure the two return
-                     * addresses actually match.  Then increment the interrupted
-                     * context's SSP.
-                     */
-                    BUG_ON(stub_ra != *(unsigned long*)ptr[0]);
-                    wrss(ptr[0] + 8, &ptr[0]);
-                    goto shstk_done;
-                }
-
-                /* Make sure the two return addresses actually match. */
-                BUG_ON(stub_ra != ptr[3]);
-
-                /* Move exception frame, updating SSP there. */
-                wrss(ptr[2], &ptr[3]); /* %cs */
-                wrss(ptr[1], &ptr[2]); /* %rip */
-                wrss(ptr[0] + 8, &ptr[1]); /* SSP */
-
-                /* Move all newer entries. */
-                while ( ptr-- != _p(ssp) )
-                    wrss(ptr[0], &ptr[1]);
-
-                /* Finally account for our own stack having shifted up. */
-                asm volatile ( "incsspd %0" :: "r" (2) );
-            }
-        }
+        /* Finally account for our own stack having shifted up. */
+        asm volatile ( "incsspd %0" :: "r" (2) );
     }
  shstk_done:
 #endif /* CONFIG_XEN_SHSTK */



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:09:18 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:09:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480052.1683988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP7c-0001YT-Sr; Mon, 09 Nov 2026 13:09:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480052.1683988; Mon, 09 Nov 2026 13:09:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQP7c-0001YM-QI; Mon, 09 Nov 2026 13:09:16 +0000
Received: by outflank-mailman (input) for mailman id 1480052;
 Mon, 09 Nov 2026 13:09:14 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQP7a-0001WD-Me
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:09:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQP7a-00E8fp-3I
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:09:14 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5f4-bab6-0a2a0a5309dd-0a2a4503c872-14
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:09:14 +0100
Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c5f6-fae8-0a2a45030019-d155802cd8e5-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:09:10 +0100
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-4a210470b49so5993505e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:09:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7e6eca30asm238392435e9.7.2026.11.09.05.09.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:09:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229750; x=1794834550; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:from:to:cc:subject:date:message-id
         :reply-to:content-type;
        bh=y40rikzKdW41I0gcKC+jqL54qXX/dn+hAUR30HB1xyE=;
        b=DKRhCHqXXdSJKro64NcOClKf7cHrgS1RLh2F6LViifY9AWlJVi/02FLdF49OW0F+SV
         KjljLrgcs2ibtFJ8/zwO/UEFG/kOaEii0gJGldmviHd85Z/8p+Aqh63JQFLYgwBkOsxa
         OWJLzgbU0G8dB9YfhP+iQ+bqutbtaZThBMiiK/y6y12ogKA+c71r0LBaypoWTxp2AkdG
         Tkrk5sA3MnByRbEzLpNNpK/IcetRRlm0HIQeXuTDc8lbe2U4tgn3Z/uf4nb0fx6m4LpM
         6E13/E01ZoFqpM2qEpb6yRMYLnMFNFVJ/wffch1S/+CIohX1yEb2NItZMLeTCJl4qL2B
         yVRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229750; x=1794834550;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt
         :content-language:references:cc:to:from:subject:user-agent
         :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to:content-type;
        bh=y40rikzKdW41I0gcKC+jqL54qXX/dn+hAUR30HB1xyE=;
        b=anhNirGYwI64mWmOV02UrTzg2ZX7zJG6cQqCR0H/lzgXPg/nlZDPHYrgHWNAgNQN8t
         TScpFBjnlPmIhaLGDa1c1M2NGPPTOA7VI/SLeq72KbqWAa9CRhKRqWnp4UDBOvUGZ1SN
         K16gZ1D5Q60xFqrFm3cm5VKlOD2NmiBHl7A68f7rgMdTOPTgLMdeOmsgAu2GWaQy/ucV
         EcZYkLmoGH/0i2gB/0Hfj+r+ZFc+kGWp4akfLgFS9pHSyVzw8PNMX9TMe/Nc/WGwh0h9
         spWFRKTvtA36974ermMRwMZEvqMb3v5L252tSGjzVMobxCdt461hiP8oIEgwEGV4nY4f
         tcFg==
X-Gm-Message-State: APuU4Z8kQIiYKyolgnV/k32IuMlJss6rZphwFRO9r8vR6nFKkvZEcdsL
	pXapVgus8mDIRMwqpJ8Q2NZ9xTsxarn7GD0jB22a2Ngk15TM57jeEFARDFlXcl39ZZfJ5dOwjKv
	+5LuKCA==
X-Gm-Gg: AYBFou0k8KpcmdMmjzJj5KQuWQW39vfDGV1qZ2TQPdg4GA5V0cn+D5YP+v755JmvZLm
	QHXP2sDaC/bHHVLJ8PzOHc3Qn3/kWyB9voG6t+ojzXUkM74psUvhOe7c/v23gn9bPRBiaznZU/n
	xFHqytOsPfUgYeytD+JZzMBlXisbt7UdFJ+aUbUQcaBQiI4f5PiYiiU5w3BxQoUtdchHQ+WxRPF
	mRGbOZc0aI4MVHfrHCPya7+t71+JiCfiT09a61HJ0/meWl8XJTv1rmws9sZ9ERlT6sNee3ALv/5
	8rJcVB88X8VDIaWRxCCxS6jqUP+UK/s1xO3sdF4IM9X/czDR1Zo/3UG7RK77HJHn8HAmgPL3mhI
	wDXzmJH9mkPYdQatP0lW5WRJtJGcPtBvFf911C5oP9fa6jnWHletP/Va7RH9TDiDN+3l11lhBk3
	S/5qNfL7QrCmlw5nUb4qVhWxzF8lSeMd76pcMuYnYeSTPc1cPt5Jcx0vCu9YtjPBGtJxwNQTixO
	yOS3c4fA4q3nhjUEzjk62a6GUAH/yR72zc9dPMNQNnYJNBsaOZh1HYQcUACH0qjUX8F3oGiHOp+
	d8HNRIkns96/pynka02V0HSX+C2fCFIXSCFU5uTp7mmj5aTZHfskosl5ZtkABwv9woXg++WQPQZ
	DYrD0aGRtHMuAWr4=
X-Received: by 2002:a05:600c:3148:b0:4b7:dc0:89c with SMTP id 5b1f17b1804b1-4b963c88bd6mr79037015e9.32.1794229749743;
        Mon, 09 Nov 2026 05:09:09 -0800 (PST)
Message-ID: <bfec463b-a4dd-4a4a-bafb-c596f83630a1@suse.com>
Date: Mon, 9 Nov 2026 14:09:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 4/4] x86: prefer shadow stack for producing call traces
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
References: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1794229750-760FE4E9-3413C342/10/78276251493
X-purgate-type: spam
X-purgate-size: 4605

Shadow stacks contain little more than return addresses, and they in
particular allow precise call traces also with FRAME_POINTER=n:

(XEN) Xen call trace:
(XEN)    [<ffff82d04032d730>] R extable.c#search_one_extable+0x70/0x73
(XEN)    [<ffff82d04032d802>] C search_exception_table+0xc2/0x177
(XEN)    [<ffff82d040358378>] C traps.c#extable_fixup.isra.0+0x18/0x6c
(XEN)    [<ffff82d040358e3b>] C do_invalid_op+0xab/0x106
(XEN)    [<ffff82d040201d98>] C x86_64/entry.S#handle_exception_saved+0x88/0xf4
(XEN)    [<ffff82d07fffe044>] E ffff82d07fffe044
(XEN)    [<ffff82d040412db0>] C stub_selftest+0xd0/0x168
(XEN)    [<ffff82d0403508d6>] C setup.c#init_done+0x116/0x15a

as opposed to this counterpart (earlier during the same boot, before CET
is enabled):

(XEN) Xen call trace:
(XEN)    [<ffff82d04032d730>] R extable.c#search_one_extable+0x70/0x73
(XEN)    [<ffff82d04032d802>] S search_exception_table+0xc2/0x177
(XEN)    [<ffff82d040358378>] S traps.c#extable_fixup.isra.0+0x18/0x6c
(XEN)    [<ffff82d040358e3b>] S do_invalid_op+0xab/0x106
(XEN)    [<ffff82d040201d98>] S x86_64/entry.S#handle_exception_saved+0x88/0xf4
(XEN)    [<ffff82d040412db0>] S stub_selftest+0xd0/0x168
(XEN)    [<ffff82d0403d0cc9>] S do_initcalls+0x29/0x38
(XEN)    [<ffff82d04041adf2>] S __start_xen+0x1c72/0x2235
(XEN)    [<ffff82d040288a57>] S __high_start+0xb7/0xc0

(note the entirely missing entry for the stub itself [1]; sadly there are
no stray entries there).

[1] Arguably we could teach FRAME_POINTER=n traces to recognize stubs as
    well. But not FRAME_POINTER=y ones. In fact, what's missing there
    isn't the stub itself, but (of course) its immediate caller.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
While the 'E' for exception frames is probably okay, I'm not overly
happy with the 'C' (for CET). I would have preferred 'S' (for shadow),
but we use that character already.

As an alternative to suppressing output for the top level exception
frame, adding the new code ahead of the 'R' output line (and then also
ahead of the stack top read) could be considered.

Quite likely a number of other uses of is_active_kernel_text() also want
amending with in_stub().
---
v3: Correct "link to other shadow stack" check. Don't log a line for the
    (impossible) PV case. Add example stack trace to description.
v2: IS_ENABLED() -> #ifdef. Re-base.

--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -48,6 +48,7 @@
 #include <asm/shared.h>
 #include <asm/shstk.h>
 #include <asm/smp.h>
+#include <asm/stubs.h>
 #include <asm/system.h>
 #include <asm/traps.h>
 #include <asm/uaccess.h>
@@ -705,6 +706,13 @@ unsigned long get_stack_dump_bottom(unsi
     }
 }
 
+#ifdef CONFIG_XEN_SHSTK
+static bool in_stub(unsigned long addr)
+{
+    return !((this_cpu(stubs.addr) ^ addr) >> STUB_BUF_SHIFT);
+}
+#endif
+
 #if !defined(CONFIG_FRAME_POINTER)
 
 /*
@@ -797,6 +805,49 @@ static void show_trace(const struct cpu_
          !is_active_kernel_text(tos) )
         printk("   [<%p>] R %pS\n", _p(regs->rip), _p(regs->rip));
 
+#ifdef CONFIG_XEN_SHSTK
+    if ( rdssp() != SSP_NO_SHSTK )
+    {
+        const unsigned long *ptr = _p(regs->entry_ssp);
+        unsigned int n;
+
+        for ( n = 0; (unsigned long)ptr & (PAGE_SIZE - sizeof(*ptr)); ++n )
+        {
+            unsigned long val = *ptr;
+
+            if ( is_active_kernel_text(val) || in_stub(val) )
+            {
+                /* Normal return address entry.  */
+                printk("   [<%p>] C %pS\n", _p(val), _p(val));
+                ++ptr;
+            }
+            else if ( !((val ^ (unsigned long)ptr) >>
+                        (PAGE_SHIFT + STACK_ORDER)) )
+            {
+                if ( val & (sizeof(val) - 1) )
+                {
+                    /* Most likely a supervisor token. */
+                    break;
+                }
+
+                /*
+                 * Ought to be a hypervisor interruption frame.  But don't
+                 * (re)log the current frame's %rip.
+                 */
+                if ( n || ptr[1] != regs->rip )
+                    printk("   [<%p>] E %pS\n", _p(ptr[1]), _p(ptr[1]));
+                ptr = _p(val);
+            }
+            else /* Bogus. */
+                break;
+        }
+
+        /* Fall back to legacy stack trace if nothing was logged at all. */
+        if ( n )
+            return;
+    }
+#endif /* CONFIG_XEN_SHSTK */
+
     if ( fault )
     {
         printk("   [Fault on access]\n");



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:12:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:12:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480063.1683997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPB1-0003ZF-A6; Mon, 09 Nov 2026 13:12:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480063.1683997; Mon, 09 Nov 2026 13:12:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPB1-0003Z8-7X; Mon, 09 Nov 2026 13:12:47 +0000
Received: by outflank-mailman (input) for mailman id 1480063;
 Mon, 09 Nov 2026 13:12:45 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPAz-0003Z0-RH
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:12:45 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPAy-009YOa-P9
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:12:44 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c6c8-2eae-0a2a0a5409dd-0a2a4506ac54-18
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:12:44 +0100
Received: from [209.85.128.41] (helo=mail-wm1-f41.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c6cc-195a-0a2a45060019-d1558029b5d9-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:12:44 +0100
Received: by mail-wm1-f41.google.com with SMTP id
 5b1f17b1804b1-4a215e64962so9960015e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:12:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90ee1ddc7sm190113985e9.4.2026.11.09.05.12.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:12:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794229964; x=1794834764; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=136uhxPk379z7YDVnl2+yXJHtB0apmVaFro3g56GSGo=;
        b=M4kZldO2GTx+9ymbXgouJ37yYY/geq5r+gS3HVh+mlWP8rkZsjzYrNMr94ArJSC/1b
         RCbGKApYYJtNuVnJMi059PCqBBpeyYSwC+g+f83Fv9AW/Nr9eRiacc0G7xLj+VFw8sXt
         WLg+LNpMTSuiz/5zhtUHMCsPME2h/h+t+hwRDl8Yj/xAkzvONsH3MOaaNczYgTuPJgE+
         VZor88ZRFErdj+3yLE6+Zl2qfaS1F7dCk2NXU7FoO4Y12OdEmby/J1ITTObeIplXOWa8
         Gp49o76E+55Yr1h7v9hADxrNfAmPCSV1tQSHyoRUk6bB9fiEEo7eBIjEvOotFs79QJ6k
         i+Xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794229964; x=1794834764;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=136uhxPk379z7YDVnl2+yXJHtB0apmVaFro3g56GSGo=;
        b=kBrqGAOvjL4Ubcb2sLgO7lxeG221h/4+5extasoND9RPSvppWVOdIqLelZhpKlJmrc
         Ojg0YdFTmbgXzXqmbRpeefPWnEJk/8Bj7Mk6nvnvSR37wceN3UfYXj1uJ7zd+mM+eAju
         zkvgneiAlaBY4Wcd9cvcBFpSdWKP49xCf2ovFfPyuF4pr8W6cKtek8VexHZksS10Qr1W
         505YYc+LKTm24DUcW3G7K1ivm7nTZEJdGfk6WHXVLPy81jQ7y41HSP6WmtwEbFTP/leZ
         qw1p9RdBjYoCuBqyLtDU/pMxqtZoFzDWkxiaIPfKf6ByAYl8ZENgHArfOdzV8bJ18zpk
         ZTjw==
X-Forwarded-Encrypted: i=1; AL+hErEX9ApMA59p+wNfL1jLYmKcEDDi++b3KEGnamt+kVuyFEGD8/gaeoER45W+Q723FqPtXnPnB6hOKmo=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+1lxFV8ygBzvAVxT/veg7xtUwNALXqfuInV3qlba0Jdwb4s97o
	JSZs5CbOR0g7RPK6sbVtpYfqJAbUpLyzrIrwOwdOWrNteb9ZpqbBr8Az3RkVGKwy4Rut1P5lXQz
	I7QM/AQ==
X-Gm-Gg: AYBFou2/VkYTxrLTkQeox8Bx8diMNB31FbuUwd7yeWuKlRNRzO+H62QYEUySLbb/UEg
	vJVoBOio4jhpeZLyZNqqG8zuj6C8yvHIEHnYP/qz+d7LrPb3ZmSe+r1h7D1404gifJ7b8Pl9SL6
	5zHDhHxGJnUgS0mn/81DsOurEfD+ZEbwep8BZDJj6eZ2nQ2AZf6jBgmuesaBIGCPSL1LSss35Zm
	SBXeUOif/ypPbHYbUD2Z+pSqomIIgRUyJNRysKdbUFvVU36DJIlHRNmZsYnUc1hQ0qf2dPtwxsA
	kuZ784J2JMbyaxfPbiologycJX/lf9RbVX85Uc458HqpyXEOWktuC3U/SZ2qphisyWHIF39hnU1
	k4B1h6qVJTxZYLg7mqAxl9Cy5HGJ1G/bVT5Z0tGt/KrVZQO0qNFdenCgN1G9bhql/vsoC7bFaBD
	kwFOexzC1CPrurzwNAv+PzS9rXwdNRO1D//sxtGPCPXxcsx8I3SdlztMruWlG0o44xitDbOHRwS
	7mLSZpP9z70m2BKnV5WoT8NJZPHcgCA7FiBxUcRLhG1rHue5gs6H8en1Hcofdef7uw8of6jsV6q
	K5nv9IBYQfpruPOh8wwGz68AaZzERtRx0g60tmpfLWlBuJGp3J4SvTY9eMBI+3pgJ94SbpL2amd
	/7Yea8HLjQfN7DtTnr+YAR3rU+91rlcGslXCROQ==
X-Received: by 2002:a05:600c:37c3:b0:4a3:5991:718 with SMTP id 5b1f17b1804b1-4b963c87b5cmr70865915e9.16.1794229964125;
        Mon, 09 Nov 2026 05:12:44 -0800 (PST)
Message-ID: <cffe924b-031d-48af-926d-47d57777e079@suse.com>
Date: Mon, 9 Nov 2026 14:12:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/riscv: align header inclusion guards with
 CODING_STYLE
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Connor Davis <connojdavis@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 xen-devel@lists.xenproject.org
References: <20261105150336.25751-1-oleksii.kurochko@gmail.com>
 <573590f0-1a94-4113-a76c-3ae644bebdff@suse.com>
 <8c2b7338-e65b-4d14-af62-9f300e2becb5@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8c2b7338-e65b-4d14-af62-9f300e2becb5@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1794229964-F78CB77B-F8B10D70/10/78276251493
X-purgate-type: spam
X-purgate-size: 2196

On 05.11.2026 16:56, Oleksii Kurochko wrote:
> 
> 
> On 11/5/26 4:44 PM, Jan Beulich wrote:
>> On 05.11.2026 16:03, Oleksii Kurochko wrote:
>>> Commit 7abea85c9f12 ("CODING_STYLE: Updated header guard
>>> recommendations") changed the recommended naming of inclusion guards
>>> for arch-specific headers to <arch>_<something>_H. Most RISC-V headers
>>> still use the ASM__RISCV__<FILENAME>_H form required by the previous
>>> rules, and a few use ASM_RISCV_<FILENAME>_H, which follows neither.
>>>
>>> Rename the guards to RISCV_<SOMETHING>_H. While doing so, also fix two
>>> guards which don't match their file names: extable.h used
>>> ASM__RISCV__ASM_EXTABLE_H and intc.h used the misspelt
>>> ASM__RISCV__INTERRUPT_CONTOLLER_H. For riscv_encoding.h, don't repeat
>>> the architecture name and use RISCV_ENCODING_H.
>>
>> I'd recommend against that. If you want this tag, renamed the file as
>> well. Otherwise stick to the naming rules.
>>
>>> No functional change.
>>>
>>> Assisted-by: Claude-Code:claude-opus-5-5
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>
>> With the above (and possibly also the below) adjustment(s)
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>> Which way to make the adjustment you will need to indicate. Changing the
>> tag identifier can be done while committing. If you want to rename the
>> file, I could drop that one hunk from here while committing. Please
>> indicate intentions.
> 
> I think I prefer then to follow the naming rules and name tag identifier 
> as RISCV_RISCV_ENCODING_H.
>>
>>> --- a/xen/arch/riscv/include/asm/vsbi.h
>>> +++ b/xen/arch/riscv/include/asm/vsbi.h
>>> @@ -1,7 +1,7 @@
>>>   /* SPDX-License-Identifier:  GPL-2.0-only */
>>>   
>>> -#ifndef ASM_RISCV_VSBI_H
>>> -#define ASM_RISCV_VSBI_H
>>> +#ifndef RISCV_VSBI_H
>>> +#define RISCV_VSBI_H
>>>   
>>>   struct cpu_user_regs;
>>>   
>>
>> I think at this occasion the #endif also wants to gain the usual comment.
> 
> Oh, missed that.
> 
> I will appreciate if it could be done during committing.

Done, including two further instances of the same kind that I had missed the
first time through.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:15:12 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:15:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480069.1684007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPDK-0004JY-Md; Mon, 09 Nov 2026 13:15:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480069.1684007; Mon, 09 Nov 2026 13:15:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPDK-0004JR-JN; Mon, 09 Nov 2026 13:15:10 +0000
Received: by outflank-mailman (input) for mailman id 1480069;
 Mon, 09 Nov 2026 13:15:09 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPDJ-0004J5-Tl
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:15:09 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPDJ-00BLMg-AR
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:15:09 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c74b-e002-0a2a0a5209dd-0a2a4508abb6-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:15:09 +0100
Received: from [209.85.128.45] (helo=mail-wm1-f45.google.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c75d-f659-0a2a45080019-d155802da4b9-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:15:09 +0100
Received: by mail-wm1-f45.google.com with SMTP id
 5b1f17b1804b1-4a549cd7fd2so8211445e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:15:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90ee2b8c0sm153000975e9.9.2026.11.09.05.15.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:15:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794230109; x=1794834909; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=aIkCufykn8diluHb5HdIQsqXWbdM1k5wsakH+PzPdHs=;
        b=PawTRnjXk/Db/VevlGHhhrmMEizGREK3GDP8HqCd2CqEWCOQDe/nMDhPXz/7ZykQLw
         SHBDpt6guq0hz+nxVHF381YeLu81VAWflY/FvUjgQ4/2ztT0KyGv3aeyoxe9O4GkqLvv
         j9XvSOdkI4Tjp+3ezksYAFfrgD9c0nnqk5IeSwJJd4LwzY+kFM5/+rpYpqWU4nbATRa9
         cVou9qcJNjm0/XoH/5IgsNybcuA8w9fpMG2lFtzXimk+Yv1mNox/a7PNszt6kEmyVmmi
         w17LkVJf1U9XMT/xI0xR7sobRs88+glswfHCPrdK45Ostv3x2ua7++W+jtxVV3SlbnMO
         iBiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794230109; x=1794834909;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=aIkCufykn8diluHb5HdIQsqXWbdM1k5wsakH+PzPdHs=;
        b=bzuxansGSvlATU2dp6TvGgGA6jL8MYJwOIF9cOHlUZeDQ0IOoNvvsPkN/5J/FHIyq7
         0Qlb9QX7IKlmhqWdUA/3+pEJY/p5mDlnbDOT0XNWfBvFdKoCCCYBrZLq0OMrMEc5iMS6
         TJCSasj/H4HuoKUhb30xyyhuDCCkkD78hd4VtMkxnz5mzwTD610dOe0ZEoJQ+kzc5Kaw
         ZrNz3RuR+eF1iTGVpOdMwOdmEj9CNIcEv2230cgYyBv2HN/FeetYfdCHHyNymAgi+Wu4
         ddWegR5ZSK6XEyYjZBz0HZpkg17xP8WfZm3rfScVDbxc6y9Xa9GhWKrmwhiy6UxdoQR0
         uTpw==
X-Forwarded-Encrypted: i=1; AL+hErFQfoffWa3IbU/wQ2LIXisywo8/BHgBODtgnuilIHUaH5EM75j6MXBEtTC2kXJVfJdexBqSHQUTGLQ=@lists.xenproject.org
X-Gm-Message-State: APuU4Z937XP6c+uGAxtWTdKrjsDAefod+7DGgdII55W1MrPiZnNlaWCb
	1ai+6tymz/L3FQZ3jKWpJ+zR8COLpQt2l6iKN1LVtEinPfWBR3vP2fDBGmdC+/Khdg==
X-Gm-Gg: AYBFou281NAzcfv6Lgt1jiocsO6onj6N29AqT4NcorTS87dAu6KJYgESP0/L6xKrwll
	FCH/BkUDyIp0LDOHFMKl96pc4BZytvvDfBkHMbYrgbp85tJPIWvQZPg1PXjdZ5iS4M+/oadDS8X
	f9Kh4g8IFLYlSqIg95Re0Cd8f73Yr4nYQkM0+BG4qSLhM3nQhBxOIYCdSwSIOML0a/pIYnufXuc
	Tjper/snm/k0BdO6Yp4qP8XNmSQrcv3SZj8j+TCmjDz/tEk/zhZbSedGjIP49lmicMdcCcUusmw
	QiCr3p7IWIurB49p6NE/v6Akno7XXt69eh7EMFeZKf3OWCeY6NkhPTqh68fCvqFsBkiJaRsa2P9
	Yj6ladugXOVvdpBNMW9oBnftdBPaFhSe+pOEUbonq9cK62cE0Efeptd8QmHOUsbLYl8Eaz5O+vw
	yjqXQkP1xLbV+Ge8khiTsgBOApmH7oxoE4p6Xd/yv4L4DonakWsZlIL+G4CNPOUh8uMbxElO8aL
	Llq34pmDVGCDhsSpU5hwDEFZqkOhl3PV94cZAqFIt0X0IxPHWluhWv5E8OD9543rKT+sH1aeB0W
	Cl566YTaVxRTTaHAbx8pEN3SaLUzs9PYpqB54kLcXV1Cn3XfFyWGqmOiaeCSAIjig33rrQBJPyi
	TxCHnismL75Q7RewJ
X-Received: by 2002:a05:600c:8705:b0:49e:6581:7baf with SMTP id 5b1f17b1804b1-4b94d75ecbbmr78222165e9.2.1794230108535;
        Mon, 09 Nov 2026 05:15:08 -0800 (PST)
Message-ID: <a348cc62-8952-48cd-9185-991849360a02@suse.com>
Date: Mon, 9 Nov 2026 14:15:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/svm: Rework VMCB comments
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Teddy Astie <teddy.astie@vates.tech>, Jason Andryuk <jason.andryuk@amd.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>, Denis Mukhin <dmukhin@ford.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20261109113745.2840610-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261109113745.2840610-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-c1860d/1794230109-CC77387B-D2C74F8D/10/78276251493
X-purgate-type: spam
X-purgate-size: 379

On 09.11.2026 12:37, Andrew Cooper wrote:
> Identify the cleanbits by name as well as number.  For single reserved fields,
> use an anonymous bitfield to reduce the number of res names.  Use 3-diget
> offsets consistently for offsets.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:16:43 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:16:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480077.1684017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPEn-0004q2-VU; Mon, 09 Nov 2026 13:16:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480077.1684017; Mon, 09 Nov 2026 13:16:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPEn-0004ps-Rr; Mon, 09 Nov 2026 13:16:41 +0000
Received: by outflank-mailman (input) for mailman id 1480077;
 Mon, 09 Nov 2026 13:16:41 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPEn-0004pk-41
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:16:41 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPEm-007VAa-Gr
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:16:40 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c7b2-8faa-0a2a0a5109dd-0a2a4503d4fe-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:16:40 +0100
Received: from [209.85.128.53] (helo=mail-wm1-f53.google.com)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c7b7-fae8-0a2a45030019-d1558035ec36-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:16:40 +0100
Received: by mail-wm1-f53.google.com with SMTP id
 5b1f17b1804b1-4a2d6d01ecbso4846555e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:16:39 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b79501bdedsm147514265e9.3.2026.11.09.05.16.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:16:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794230199; x=1794834999; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=JVdZsM9yHnk8thbSju40rrnpQnLwEEl4e8YgDqbWhTI=;
        b=d1uU4VRehKcwfiKjSVc6WZ5zWzVvchyVlKv/Pfl9Y5ItcJ+Yy+7CF4OvsL90kRcIU7
         256sOYH4hJS/IFNRFGYFIHUS+xnK1g9dhUxb/O6dxNHoNCuCqaJ3vvulCCZhFmCWJJUH
         bR4Txw5s18oetsgcnBLPW/TIi1nTvc8BXtVh1xDZ162u2MdTNv/0SRN83C2rUr9tSV2R
         ZR0HvzOLEJ/FuL3/GRH40rnrhFEqFKXNak+xo9tojKXAc+Uem5Gdar+OWmGD2KOorOkU
         NZHAlAyywj1gC0LGyEI+sdvE5Vb/2Q+JnahpTjvOSavSlI/Hspi4sOHLCZlyYv9UBbgo
         DDww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794230199; x=1794834999;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=JVdZsM9yHnk8thbSju40rrnpQnLwEEl4e8YgDqbWhTI=;
        b=yawgXLGKe0LJBvLgrSHVp6zS741ko0PBHi6BraH7/eNauLG2qTAdIN9QVTKKsSpiCO
         3WXr+g5101Mo98aImrSdLpGpXp1Vw2a+WoT3uyG7YqKOuxu9x+r6pFnHaCidiEwiQYP0
         F5p9T/tb0j/VyjL12PE4iZmKoEbJJc5V7XGJXqWtuZ+el4097nxWXxSLJi44i912+6mO
         W91Gr9Bvb1oFq2yALOFos4d9CPeBDbb2I9m3SbZDzEPTHvMlxixjaIAcLilH9p/kkldc
         4Lg6rb8Wntc62VoYzSmvDIuoiINZs8tLkttKRMzssd/yqmmfwsmiElkfGQ87+DaoTO7l
         4Vxw==
X-Forwarded-Encrypted: i=1; AL+hErGLiFUqc5mDeDZuDZq1QL0Yb6xWXuceLV5SMXfWFXQruvzbRsofk9Ly1986QNgTfkuvo9bHBT05zWg=@lists.xenproject.org
X-Gm-Message-State: APuU4Z/twDkgntflDaC8XY6QLZUkQc1fiWzBupLSsCT23WS3jMuwPqu0
	SIxEnkVBTYVoQVT7Ej+rGxfIkqbqTYzgoGJyYvnXpEYYtmX3g5yzm2qkE+d2Eovdyw==
X-Gm-Gg: AYBFou1Ink+hWw+QmJjtqb5NVbHDuDreLYLR8ZnShUQq0joph/pwHGzZQOfxIf6Ldes
	2VmkL48UAam5vA7KNSpE1gOYQhRWHXL5XckxufNcbtHy0NA94+sik7rxP4c+bi+Yv/JOsOIeSpA
	EJ/6i4i0BXPtw+Jh/HDsVTpL+XrlYZO3N/ejgHlLYyVDEYTVAIcY6F7vf9q5gNxbCfkWUAuf0jF
	+gmlFMVtoqClph5w2otVugkhoaLt9pRZ/FN5fdkzGLk00/GXcdm+LP2KuNyVAdn3tp+bH1sWQ/i
	QflebDUNhOgBfgRPn7klkxX4nTHyGIeE9rectv8vU6dStJr5P3VHTCO7mFGD0uiYEWp/pwPIGh9
	GyzXPDj73gUULTo60JIvjE0weRf3wjl6k9smzNcvZGzVCMkuYy5R7NazShaA2JKsaPglx/0lp0x
	RTDSrhhuMADjdfjIN0GuF/4KgAvRhN7xZu6/St6a4ztGTQfIYJJYHKEkM/G/w84QvpG+OvgsG7h
	C3XeMeuibuodb0zkLbd0bptWozb7Q0eEtWVLj0e2iKXwW+EATiKDlA/JlgTU1eWnaeimJSmN6gr
	tnYSexyBj1ymhS2DseIoRhLl+099qQO2+nr2wm7pV4yKODM/TgiRu97ozqKOirJ+lgP4bdRXDs4
	BfL5+GRLDSkvUHpm2
X-Received: by 2002:a05:600c:3492:b0:4a2:133:45e1 with SMTP id 5b1f17b1804b1-4b963c7ce07mr70096745e9.24.1794230199526;
        Mon, 09 Nov 2026 05:16:39 -0800 (PST)
Message-ID: <31b70011-02c0-42b5-84b7-110b6e7d3931@suse.com>
Date: Mon, 9 Nov 2026 14:16:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/2] xen/riscv: skip disabled CPU nodes when probing
 ISA extensions
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-33051d/1794230200-6C2E04E9-F3B2E21A/10/78276251493
X-purgate-type: spam
X-purgate-size: 671

On 09.11.2026 13:49, Oleksii Kurochko wrote:
> riscv_fill_hwcap_from_isa_string() intersects the riscv,isa of every CPU
> node under /cpus, including the ones with status = "disabled". Such a
> hart is never used by Xen, yet it can still remove extensions from the
> host ISA: e.g. a disabled hart without the H extension makes Xen panic
> with "Xen requires extension: h", even though every hart Xen runs on
> implements it.
> 
> Skip CPU nodes which aren't available.
> 
> Fixes: f74ebf58b518 ("xen/riscv: identify specific ISA supported by cpu")
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:17:05 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:17:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480082.1684026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPFA-0005Er-9G; Mon, 09 Nov 2026 13:17:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480082.1684026; Mon, 09 Nov 2026 13:17:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPFA-0005Ek-5n; Mon, 09 Nov 2026 13:17:04 +0000
Received: by outflank-mailman (input) for mailman id 1480082;
 Mon, 09 Nov 2026 13:17:03 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPF8-0005EF-W5
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:17:02 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPF8-00EjSF-99
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:17:02 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c7c8-8faa-0a2a0a5109dd-0a2a450692a4-28
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:17:02 +0100
Received: from [209.85.221.45] (helo=mail-wr1-f45.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c7ce-195a-0a2a45060019-d155dd2dbc7a-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:17:02 +0100
Received: by mail-wr1-f45.google.com with SMTP id
 ffacd0b85a97d-4922dbcee23so436683f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:17:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-495b90701c7sm12346989f8f.10.2026.11.09.05.16.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:17:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794230222; x=1794835022; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=ieHRxlDlyFdh38OSj+4230Tq/jvsP+VKfp8Ury5pRHk=;
        b=KvefuuVtb/3lB6y5jYVV1B2oFmDBFvTlyjnXBSKMk/GYoY1YTMFsVg/hxTYmZQSQHU
         DPJ0Tz96I8lr2xLLRkxch/GtfgtmkV2sTfyILmDKfXj0B6tIlGdvmPgfvt4AQ4Ezi8sa
         s9ccxyhg4AJv5rbmy44Cn20mBAU+UkcRp+q7R5PW0UU4ks14dGfnNUDy8BxBM1fV6yrl
         jSMBc7Qp3hAEU8NYd+Dqc83aHC5LoAS27dOnFicEFEVV2/nZgLdt/P82MCO5HQ04hA49
         R+wKMh8ij5EkH+GGBXpcbjfNpGL1l1OOcAOBzYArj9LG/Ji0+ewCV0GTVPnJ0T8zug+u
         dL+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794230222; x=1794835022;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=ieHRxlDlyFdh38OSj+4230Tq/jvsP+VKfp8Ury5pRHk=;
        b=0JQYa43FZQucliKJP8e+JTd57VAg9wBu48sWqXyODszRbcMv8xY/s/QwCuE8FRXnoR
         TIIU2tiuGAOStIRbuqfnofOVDIOBJZQd4SVnV5mealeiZRMoSJjOQqwp7oes187zqcfx
         Rg6f4wC9Mu3iyePsQMJBP39g/NeW117MQSfFlQ5Lv6wYc0jJg2xB0VBoG9HFn95uw/4X
         p+A/tGCFMKNOnXpeY3iRONPrMJeXOLw/CNDsgr2YQKyr8klgCaGJOiYAo4wO7q4v76Ga
         5yEeC/bulqawnShHUXowiVboRkpfGiCDs3PJe3WFS8clYCAsmtWEBE5oM3uTebQzOMgD
         hH6Q==
X-Forwarded-Encrypted: i=1; AL+hErGWyUOxVX4Gq5yg9t1g0mcSrSWvYAjRQ+xjXxttvZ1JeHmfTKU81EKxt6thbYow2tSvEWq5a++Acy4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z9tzI/wA/R3JNzeckAPCLsPhRdfneB83j7R2J82PDJGxVnoyHhY
	ytTXMXT0Z9upYqeXxGOgn06c4h2IDC0ChX6w4UMOiIUBKSdLfWmTLhMsneYwZTxx3A==
X-Gm-Gg: AYBFou3YHCan3Elkt5sCYfSY6QQbiKbZKPPoJKHgd0R9AzwAALxIF+gpUmiBUrae8Mz
	gQQ/lCNM9xlcckRn8I8Pcp3xu3c7T6nSWnHQloP0eSjRonR3vwJVUvokkS0O5NMNlcr/DXCWJMj
	Icp/ZL9zTocGe6U16jG5EPMWuRDb7M/Wqs4B2sgY3L2sxwaGjzud7fZ6vtj0wRAVUwCe1CnQGA1
	5EQkhU52RMtAuxdgNMnWE7LCyYvGSBIHEe17JUrIQQGGCEXyRnidIW1LW02Vj1KQem4/rK8lDjJ
	oXuQznzPVQNpfHHTodhFw8+ve5Qq6ZwsAGfM+hn0YrtNcbC0g9r7mEb6dcnvsZhtql+dg1Yz2L0
	hRC3VLdUNiMlfY0GXdPR+wiHnPt48+FfFdsIg0rFroGvhC1abc3Cfoo5gX8tAR1GLLnZUoCsw+v
	UYCRrMkd7SA0liOogZkIWlN6ybsaysRKPWj8vuZqjlQkOqg7wYASbUZNdSdTxKOT0S2HilfyKQE
	52yOpWuRr+imzbWxSo8ADDjyG10Q13RQAd1a+s146Xql3OndunSTnIvRpKFfTUutUS8EXkjZlLg
	n8pDhctzi2l9niUs6lrgUK6RrMDXDbqg5MoEYgtVSyxwSvD+fShcl5zHgs842mRTmRwA8Y2KEE7
	Q+koxestB7s8e+zvH
X-Received: by 2002:a05:6000:1884:b0:491:3fdd:af42 with SMTP id ffacd0b85a97d-49583b0a5bcmr8109512f8f.37.1794230221617;
        Mon, 09 Nov 2026 05:17:01 -0800 (PST)
Message-ID: <893e0793-22a2-471d-a1f3-c20bab97cfd7@suse.com>
Date: Mon, 9 Nov 2026 14:16:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/2] xen/riscv: fix the base ISA checks in
 riscv_isa_parse_string()
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Baptiste Le Duc <baptiste.le-duc@vates.tech>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
 <20261109124937.78186-2-oleksii.kurochko@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20261109124937.78186-2-oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1794230222-FDC0F77B-6D97AD56/10/78276251493
X-purgate-type: spam
X-purgate-size: 697

On 09.11.2026 13:49, Oleksii Kurochko wrote:
> riscv_isa_parse_string() is meant to reject a riscv,isa string which
> doesn't start with "rv32" or "rv64" (depending on Xen's bitness), but
> the checks are written with && instead of ||, so a string is rejected
> only when both characters of a pair are wrong. As a result, e.g.
> "xv64i" or "rv62i" is accepted on RV64. Also, for a string as short as
> "rv", isa[3] is read past the terminating NUL.
> 
> Use || so that each character is checked.
> 
> Fixes: f74ebf58b518 ("xen/riscv: identify specific ISA supported by cpu")
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:19:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:19:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480092.1684034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPHO-0006GG-Jp; Mon, 09 Nov 2026 13:19:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480092.1684034; Mon, 09 Nov 2026 13:19:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPHO-0006G9-Gi; Mon, 09 Nov 2026 13:19:22 +0000
Received: by outflank-mailman (input) for mailman id 1480092;
 Mon, 09 Nov 2026 13:19:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPHM-0006G2-MY
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:19:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPHL-002tJC-OE
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:19:19 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c853-2eae-0a2a0a5409dd-0a2a4502c308-24
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:19:19 +0100
Received: from [209.85.221.52] (helo=mail-wr1-f52.google.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jbeulich@suse.com>)
 id 6af1c857-6ca4-0a2a45020019-d155dd34d8ff-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:19:19 +0100
Received: by mail-wr1-f52.google.com with SMTP id
 ffacd0b85a97d-490c1d337d8so606612f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 05:19:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb272f5sm241662115e9.15.2026.11.09.05.19.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 05:19:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1794230359; x=1794835159; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=/Zx8UACefTraWTRj47RXGAOfPy/dMTVuymF/oIiT1sQ=;
        b=FYAplkPhwmgTKdCyGFKgGbo/mPz/bOOB+s6QfGdTUZhAcqbzitxYTUtKXrSXWgHqu5
         UxrB+oaaxtIeoaA3fVqawEIOJMlClc8IFCA8Pd7p8xywnpvMtJtfV1Lh+i9SywZz1mes
         B5tJlHTjr9T/fkxx4My/2NoGIEomfSu7ZNnXMh+n/3W6sBTmEc+Ah2UOh7jj8bEVntui
         yrRbGlfGEPF/kvS0cnY94fVesFKSVmDF8y3eEgQi8oBdXEBk7M0rrFysX+XMvJ7IZkmg
         Wys/BcnLIDNSuKqkA11KERHYTPmrh5JBmJncQuP8cl07Vfauh/9OVcVTMJOZRZ33Jlei
         OUjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794230359; x=1794835159;
        h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=/Zx8UACefTraWTRj47RXGAOfPy/dMTVuymF/oIiT1sQ=;
        b=ntzSiGXJMoUZ2Ebq1OeSc8+n4a2UZvlSfRGpzcwd+tXNq11M44nrN7k7VDoFI33GLv
         DIERQuOGrJUbfFVnGRosEVWvlrYbeYORgzhDu0AsbG8VvDDxcDrNB1NeizLvjNnxflOD
         jYgMrj7nyYu6+i+g7Fg7qCy6N+m1LnWKIyuJf+vgehS9z5JG7n+NVjcr4FYtLwTaDUVr
         RLIMamy+HaIPO0Kk7KrbD2AEN9rCUK03AyRAS0S0xIVW58bzLpKmCiEr65zD6E3SpUZa
         VeufoaSYrDSkqeVyPsGUSPBH/3mlxd398cGasUkHZ92CdnApaq5mi8oWUIRj/sPDjw0o
         qnrw==
X-Gm-Message-State: APuU4Z8gG7J9cODaKwFcXG7pe6qL2mMIFmRjQ+YWDHwRFsO2+H68cIfF
	3Bhxfl0rpRYquUiJqUCJo1/NbzNCyqiKmljpbfbmrwH1zdPlsXDQUdPgm3KswfzG5w==
X-Gm-Gg: AYBFou1SCX3jmCWbL/Pxn8srEO5S0+z+PqwrhXiMbc/CwZL/LdSjQdmYZ2hF+5tquCU
	SDvKqk/w/MulBc1XERqRyAEABjKWXwmtf+XtaZlWVVcldN/rg++LHygB0fNuxQ4HxkRPiHjym3g
	YdXMa5o94AGFZchW3fdmc3p4VzM0THxpBtuyr40cdpkS2XUPJ6ic/X/WiCwXH9oS1Zkd4GW+k67
	QTjctKUpG6wQur6B8X0fNFPQZpuNF8hUiW3M8sdEjMShfLSY7KfKX4g5snRLcCrY3za6CNUXKnG
	IM+90LKeIlMPU74m/G/PsQNj54+joIydHK4xgjxHsJfA9sHZRfRDre26ym+GHqb3SFzzttu8Ntk
	zs285lqM5rl5+7Tv9hTewWRGq54nbm3w6iJOi/FSHhJFouX5N/mtMRm1Kmk0zenXUl1d64h8XwM
	z+hNSOt8XBwdYVauYdgEZ9OjCr4Tkjgn0NDgLeXlQrjFJwDZSjcu/gCJM2gntT8YFv5aLi+b0iA
	yZ0wQGdX61R9DZki4paPziLAvw/F0uTRcFNj95taVRL1tgoXSTtn23QskV/Ogy17VtCSNtf+7t9
	I+Xkx5eplPvGJ7mzsa/s0nsotrsV057dWXoWWZ8eNUmTFiNwK6+sb8bOcdqz55uTxfOgl90c87+
	CznNi25dxzZbd7C0=
X-Received: by 2002:a05:600c:4e87:b0:4b8:fdd8:f2c9 with SMTP id 5b1f17b1804b1-4b963c8b968mr70699065e9.35.1794230359015;
        Mon, 09 Nov 2026 05:19:19 -0800 (PST)
Message-ID: <abc874bc-a74b-434f-a741-be17bcf87da6@suse.com>
Date: Mon, 9 Nov 2026 14:19:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: compile out __set_fixmap_x() when not needed
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Teddy Astie <teddy.astie@vates.tech>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <575ae8b4-4541-4537-90af-b5bfea2ae68b@suse.com>
 <72b9f0c1-94d0-4e87-bcc3-d1c49baead0d@suse.com>
 <629945f7492fbb65d1378ea05d1cf43d@bugseng.com>
 <26698add-7103-4d64-84ff-af40ac9c4fe8@suse.com>
 <866c42195d447dcf1e7ad1192645020c@bugseng.com>
 <70b2744a-a75b-4375-91ef-0d1c8a4ec807@suse.com>
 <4e4da00684a134616cbb697ea71c62cc@bugseng.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <4e4da00684a134616cbb697ea71c62cc@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-720697/1794230359-662A92AC-662B4CA6/10/78276251493
X-purgate-type: spam
X-purgate-size: 4137

On 09.11.2026 13:51, Nicola Vetrini wrote:
> On 2026-11-09 13:35, Jan Beulich wrote:
>> On 09.11.2026 11:50, Nicola Vetrini wrote:
>>> On 2026-11-09 10:04, Jan Beulich wrote:
>>>> On 07.11.2026 08:23, Nicola Vetrini wrote:
>>>>> On 2026-11-03 12:28, Jan Beulich wrote:
>>>>>> On 03.11.2026 10:42, Jan Beulich wrote:
>>>>>>> Only HYPERV_GUEST has a need for an executable fixmap, so with 
>>>>>>> that
>>>>>>> option
>>>>>>> unset __set_fixmap_x() (and l1_fixmap_x[] in turn) is unreachable.
>>>>>>> Address
>>>>>>> this Misra rule 2.1 violation by introduction ofa new FIXMAP_X
>>>>>>> Kconfig
>>>>>>> setting.
>>>>>>>
>>>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>>>> ---
>>>>>>> Why is __set_fixmap_x() not found by Eclair as a rule 2.1 
>>>>>>> violation
>>>>>>> in
>>>>>>> the
>>>>>>> x86_64-amd job?
>>>>>>
>>>>>> Same question actually for both functions converted to static by 
>>>>>> [1].
>>>>>> This
>>>>>> apparently being a wider problem, are we (again / still) having an
>>>>>> issue
>>>>>> with the scanning of the linking steps?
>>>>>>
>>>>>> Jan
>>>>>>
>>>>>> [1]
>>>>>> https://lists.xen.org/archives/html/xen-devel/2026-10/msg01537.html
>>>>>
>>>>> It was a Xen project decision not to consider for R2.1 functions 
>>>>> that
>>>>> are never referenced: you can see in
>>>>> "automation/eclair_analysis/ECLAIR/deviations.ecl". Of course that 
>>>>> is
>>>>> reversible and I am in favour of not hiding those violations, but 
>>>>> the
>>>>> rationale for the justification that was given is that the compiler
>>>>> will
>>>>> indeed DCE those:
>>>>>
>>>>>     * - R2.1
>>>>>       - The compiler implementation guarantees that the unreachable
>>>>> code
>>>>> is
>>>>>         removed. Constant expressions and unreachable branches of if
>>>>> and
>>>>> switch
>>>>>         statements are expected.
>>>>>       - Tagged as `safe` for ECLAIR.
>>>>
>>>> For the cases at hand (and then likely many more) the compiler 
>>>> doesn't
>>>> DCE
>>>> anything. Imo the wording here is completely bogus. It may say "If 
>>>> the
>>>> compiler implementation guarantees ..." Which it might do for static
>>>> functions, but aiui without LTO it never will for non-static ones.
>>>>
>>>
>>> I'm not saying the configuration is good as is. Ideally that should be
>>> removed or restricted to static functions and the likely newly present
>>> violations triaged.
>>>
>>>> Then I'm also puzzled by the deviations.ecl entry:
>>>>
>>>> -doc_begin="The compiler implementation guarantees that the 
>>>> unreachable
>>>> code is removed.
>>>> Constant expressions and unreachable branches of if and switch
>>>> statements are expected."
>>>> -config=MC3A2.R2.1,+reports={safe,"first_area(^.*has an
>>>> invariantly.*$)"}
>>>> -config=MC3A2.R2.1,+reports={safe,"first_area(^.*incompatible with
>>>> labeled statement$)"}
>>>> -doc_end
>>>>
>>>> First - these are two different deviations, and hence imo should be 
>>>> two
>>>> separate entries. More important here though is that I can't connect
>>>> the
>>>> two config= lines to the deviation of unreferenced non-static
>>>> functions.
>>>> There's nothing "... has an invariantly ..."  or "... incompatible 
>>>> with
>>>> labeled statement ..." there? How would the full diagnostic for an
>>>> unreferenced global function (or data item) look like?
>>>
>>> These two have nothing do do with functions never referenced indeed: 
>>> the
>>> rule is about unreachable code in general, of which functions that are
>>> never called is just a subcase.
>>
>> Yet then in your earlier mail which part of deviations.ecl did you 
>> refer
>> to?
>>
> 
> Sorry, I assumed I had pasted it [1], but forgot:
> 
> -doc_begin="Some functions are intended to be not referenced."
> -config=MC3A2.R2.1,+reports={deliberate,"first_area(^.*is never 
> referenced$)"}
> -doc_end
> 
> this bit specifically is about both static and non-static functions

Oh, I see. Since this deviation is unspecific as to static / non-static,
I didn't think it was the one relevant here.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:21:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:21:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480099.1684043 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPJb-00080R-Up; Mon, 09 Nov 2026 13:21:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480099.1684043; Mon, 09 Nov 2026 13:21:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPJb-00080K-Rx; Mon, 09 Nov 2026 13:21:39 +0000
Received: by outflank-mailman (input) for mailman id 1480099;
 Mon, 09 Nov 2026 13:21:38 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQPJa-000800-C6
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:21:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPJZ-007WTf-Oi
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:21:37 +0100
Received: from [10.42.69.3] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c078a9b4000403d@swg.vates.tech>)
 id 6af1c8dc-2eae-0a2a0a5409dd-0a2a450391d0-18
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:21:37 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c078a9b4000403d@swg.vates.tech>)
 id 6af1c8e0-fae8-0a2a45030019-b9ff1c2295c7-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:21:37 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c078a9b4000403d.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 13:21:35 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 7BE5481D8C;
 Mon,  9 Nov 2026 14:21:34 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=DCfN4hNO2P3E0knuMp7S4giXFNyYsJG337uOnF5yqFU=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=BcKV9GeUksnh362ts2hgSOKxcJnUU8aZj4NNc23d83iXVoC3zoqL65FkEH+ETkJceCxjf64Zf
 tI7TeG2237BoWgSDIx5sN+egWTFYl+aOKWbJ/+z23eczHOqLmOlWdt+Z4+DyE5FTIzlDDYCIFAm
 c6d6SYUrDJjkTHBByaoTJfImqPNYa9Ms+E5fHhxvOV130MHn9+jtswVTgj6j+9vI2GJWSvcwfnA
 TyMH3iKLT46VZ4ZyDIiV7wWTYlOUDcwy0E4IjOjQAQAe/aex3jwKS1B7+WnhKEOjy+zEZPkBQH5
 EP0/BnaIOoetnujfOztlUzJKE1mNw95bE4XqRwTaLdQg==
X-Zone-Loop: 50f6742e624558adfa9338b2f2ce79c152e88452b85c
x-campaign-type: default
x-transaction-id: 4ffafb88-d163-4c0f-b663-ccacdf9bcbb7
x-swg-uid: 01-601c4b90-c115-4f62-900b-2f2f550ba754
X-Mailer: Sweego
Message-ID:
 <1794230495.8631fc262581453bbf619ec5b2062170.1a1c078a9b4000403d@vates.tech>
x-swg-bid: 1794230495.8631fc262581453bbf619ec5b2062170.1a1c078a9b4000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v1 2/2] xen/riscv: fix the base ISA checks in
 riscv_isa_parse_string()
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <20261109124937.78186-2-oleksii.kurochko@gmail.com>
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
 <20261109124937.78186-2-oleksii.kurochko@gmail.com>
Date: Mon, 09 Nov 2026 14:21:27 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1794230489; l=627;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=S+XSMQXsFbMJ6/vj/TXTmxwRR5c1T/0OF3p9riRN6mI=;
 b=ANJfa+pb8HQqcyy655hceVq1JaUcUhxatKxQE9Y6hZGnNhA8kaYMHRK2VwLaTOXJenUUbjoPN
 p4zzHmwHgaoBSZswqyV1XCJiEEoNG+OA4jw2Qq/SIZ6bvOPtZ877Cdc
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794230494769
X-purgate-ID: tlsNG-33051d/1794230497-772F54E9-1B95326E/10/73395122804
X-purgate-type: spam
X-purgate-size: 627

On Mon, 09 Nov 2026 13:49:37 +0100, Oleksii Kurochko <oleksii.kurochko@gmail.com> wrote:
> riscv_isa_parse_string() is meant to reject a riscv,isa string which
> doesn't start with "rv32" or "rv64" (depending on Xen's bitness), but
> the checks are written with && instead of ||, so a string is rejected
> only when both characters of a pair are wrong. As a result, e.g.
> "xv64i" or "rv62i" is accepted on RV64. Also, for a string as short as
> "rv", isa[3] is read past the terminating NUL.
> 
> [...]

Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:24:09 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:24:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480111.1684064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPM0-0000QR-EL; Mon, 09 Nov 2026 13:24:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480111.1684064; Mon, 09 Nov 2026 13:24:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPM0-0000QK-BV; Mon, 09 Nov 2026 13:24:08 +0000
Received: by outflank-mailman (input) for mailman id 1480111;
 Mon, 09 Nov 2026 13:24:07 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@swg.vates.tech>)
 id 1xQPLz-0000Q8-7A
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:24:07 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPLy-00EBpy-Jw
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:24:06 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@swg.vates.tech>)
 id 6af1c971-e002-0a2a0a5209dd-0a2a4501a228-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:24:06 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@swg.vates.tech>)
 id 6af1c976-5984-0a2a45010019-b9ff1c23a9f9-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:24:06 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c07ae3e2000403d.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 13:24:01 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id BE50C820A7;
 Mon,  9 Nov 2026 14:24:00 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=MfpxWyIDg2r/1ySix/7BetfFau302AhSlmLHQ1eucWw=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=XscDFnSFT7V5NvIolQff7BeS2cmrJu6lhWg8Ykq+PqZF87/NO1eOSQuuL+5EwlcPBeXYchYOh
 X1O/eSwVI8ynHGPiFQV4yElXmzDY676ras1F/6Wfrbkrd81f3fZ4CASKq5hfM22sQSc3uOXtB4z
 VXPJMvtGftKSdZ79vHGe7EfTlabblS1yKltqIcBAi1dobJ3beCqmrrpbnEPbS6it/it/5sbfyQd
 TWKqJoYmreVo3Jg4hfWA+uJMhTNVTWMdaWKHYJWMEL4i+Q2NlpJcD3c1+LQcFv7y7DvN96NfUwc
 MJv4D5x27UNOXqC867YXFmQAaWUmlOm5J8zP97tPRfKg==
X-Zone-Loop: 4daad24f9feeaff2613212de9a2eea8f86ae50f1c156
x-campaign-type: default
x-transaction-id: ae8b8c9c-907d-4caa-a003-a7d3870deefd
x-swg-uid: 01-dc84dd9b-a53d-48fa-8f13-73218dffdefe
X-Mailer: Sweego
Message-ID:
 <1794230641.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@vates.tech>
x-swg-bid: 1794230641.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v1 1/2] xen/riscv: skip disabled CPU nodes when probing
 ISA extensions
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
 Alistair Francis <alistair.francis@wdc.com>, 
 Baptiste Le Duc <baptiste.le-duc@vates.tech>, 
 Connor Davis <connojdavis@gmail.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger@xenproject.org>, 
 Stefano Stabellini <sstabellini@kernel.org>
In-Reply-To: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
Date: Mon, 09 Nov 2026 14:23:54 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1794230635; l=791;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=9gM9E41Bn1gQr34D/XKC4EpngYRXMGgMH0TY8apTBkQ=;
 b=fPx16xaNmPfTFydoYSr6iPjLr/hKxI0V8ch1QKogk1kgsP+P5D2jIoGw3QSmG0ItlMYvj+MR2
 SqJBsv4iCUfBbeQkeB2V2IiiHipgcqVW7+FdHviSxyd3rdaw2P5KotU
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794230640956
X-purgate-ID: tlsNG-d62444/1794230646-C4B45757-2EB8EC9F/0/0
X-purgate-type: clean
X-purgate-size: 791

> riscv_fill_hwcap_from_isa_string() intersects the riscv,isa of every CPU
> node under /cpus, including the ones with status = "disabled". Such a
> hart is never used by Xen, yet it can still remove extensions from the
> host ISA: e.g. a disabled hart without the H extension makes Xen panic
> with "Xen requires extension: h", even though every hart Xen runs on
> implements it.
> 
> Skip CPU nodes which aren't available.

has_isa_extensions_property() still walks the disabled nodes, so the two
loops over /cpus now disagree on which harts count. Rather than adding
the check loop by loop, can we filter them in one place, e.g. with a 
dt_for_each_available_child_node() iterator, so no /cpus walk sees a disabled
hart?

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:56:40 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:56:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480131.1684096 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPrM-0007BW-7Z; Mon, 09 Nov 2026 13:56:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480131.1684096; Mon, 09 Nov 2026 13:56:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPrM-0007BP-4p; Mon, 09 Nov 2026 13:56:32 +0000
Received: by outflank-mailman (input) for mailman id 1480131;
 Mon, 09 Nov 2026 13:56:30 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQPrK-0007BJ-Bt
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:56:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPrJ-0048QX-Hz
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:56:29 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d105-e002-0a2a0a5209dd-0a2a45068830-18
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:56:29 +0100
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d10d-195a-0a2a45060019-c387df83b7de-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:56:29 +0100
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id A157E1F385;
 Mon,  9 Nov 2026 13:56:27 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 591EB13319;
 Mon,  9 Nov 2026 13:56:27 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id wyPDCgvR8WqrRwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 13:56:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794232589; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=vY2bmS2bCYm6lslVpJ4EMskhujeQne8u0qjJFO+VKxc=;
	b=OAKJHNoKL6i7Sqks4u7MvQZseJPvvoy9sStuLAiFfFjNrtRYlU49rn2bceMoAJRBBZZbBR
	HVHxrtflpZyPZ1Skg668hMCec20xSITLB5y/vQ6vwid4o3dSfWg8dxYBQnRovEi7Tyb/Li
	Ck/6lBcfVPxeYR/Ihamr4oueY+ZxsEU=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=nEzsNzEZ
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794232587; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=vY2bmS2bCYm6lslVpJ4EMskhujeQne8u0qjJFO+VKxc=;
	b=nEzsNzEZ+DesEYoOwXkVrOqE0phvXxC+cex7dMcLMWM89/czpkV6UGq5OecbLZvLDd93xW
	Mb9WV/0wTcbVEesrxs3cTSMNl0rwkjbnyCpd+debF8Ov5heXDYOahpBkfsLaPtWaovhVGh
	EHFWJhPu1Y9FsIr8YZ4lyKvzgMPnHo4=
Message-ID: <50795de6-002b-4c86-833d-30381153ec4f@suse.com>
Date: Mon, 9 Nov 2026 14:56:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/platform-pci: Disable device before releasing PCI
 regions
To: Teshan Kannangara <tpk.teshan@gmail.com>
Cc: sstabellini@kernel.org, oleksandr_tyshchenko@epam.com,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
References: <20261013053614.1337340-1-tpk.teshan@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261013053614.1337340-1-tpk.teshan@gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------1iZSMvoyGNRStrKC30yjZxCk"
X-Spamd-Result: default: False [-9.81 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_SPAM_LONG(2.19)[0.626];
	SIGNED_PGP(-2.00)[];
	SUSPICIOUS_RECIPS(1.50)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	MX_GOOD(-0.01)[];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	FREEMAIL_TO(0.00)[gmail.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MID_RHS_MATCH_FROM(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	TAGGED_RCPT(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:email,suse.com:dkim]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spam-Score: -9.81
X-Spam-Level: 
X-Rspamd-Queue-Id: A157E1F385
X-purgate-ID: tlsNG-16d1c6/1794232589-FEA7477B-C9993E43/35/110847
X-purgate-type: clean
X-purgate-size: 4260

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------1iZSMvoyGNRStrKC30yjZxCk
Content-Type: multipart/mixed; boundary="------------OeG3cEpWprxMspHHwqWpbNgT";
 protected-headers="v1"; hp="clear"
Message-ID: <50795de6-002b-4c86-833d-30381153ec4f@suse.com>
Date: Mon, 9 Nov 2026 14:56:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/platform-pci: Disable device before releasing PCI
 regions
To: Teshan Kannangara <tpk.teshan@gmail.com>
Cc: sstabellini@kernel.org, oleksandr_tyshchenko@epam.com,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
References: <20261013053614.1337340-1-tpk.teshan@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261013053614.1337340-1-tpk.teshan@gmail.com>

--------------OeG3cEpWprxMspHHwqWpbNgT
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMTMuMTAuMjYgMDc6MzYsIFRlc2hhbiBLYW5uYW5nYXJhIHdyb3RlOg0KPiAgICAgVGhl
IHByb2JlIGVycm9yIHBhdGhzIHJlbGVhc2UgdGhlIFBDSSByZWdpb25zIGJlZm9yZSBkaXNh
YmxpbmcgdGhlDQo+ICAgICBkZXZpY2UuIERvY3VtZW50YXRpb24vUENJL3BjaS5yc3Qgc3Bl
Y2lmaWVzIHRoYXQgZHJpdmVycyBzaG91bGQgZGlzYWJsZQ0KPiAgICAgdGhlIGRldmljZSBi
ZWZvcmUgcmVsZWFzaW5nIGl0cyByZWdpb25zIHRvIHByZXZlbnQgZGV2aWNlcyBmcm9tDQo+
ICAgICBjb2xsaWRpbmcgb24gdGhlIHNhbWUgYWRkcmVzcyByYW5nZS4NCj4gDQo+ICAgICBU
cmFjayBzdWNjZXNzZnVsbHkgcmVxdWVzdGVkIEJBUnMgaW4gYSBiaXRtYXNrIGFuZCB1c2Ug
YSBjb21tb24gY2xlYW51cA0KPiAgICAgcGF0aCB0byBkaXNhYmxlIHRoZSBkZXZpY2UgYmVm
b3JlIHJlbGVhc2luZyB0aG9zZSByZWdpb25zLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogVGVz
aGFuIEthbm5hbmdhcmEgPHRway50ZXNoYW5AZ21haWwuY29tPg0KUmV2aWV3ZWQtYnk6IEp1
ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVyZ2VuDQo=

--------------OeG3cEpWprxMspHHwqWpbNgT--

--------------1iZSMvoyGNRStrKC30yjZxCk
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrx0QoFAwAAAAAACgkQsN6d1ii/Ey8L
Gwf+Ocl2N/2xZdRwwE15aNh8SrKQemvbEq+I60nKuJfyBgvKFAlGeVGbIC3bZXfCVmiORZPa1Kf8
hDFef88sMabyVIwAxXq/yzs3zXDcV1BtXvkjgbAN/2mVBnUfV2g9gIgi1M+PxvXev1h85FqMr60B
QZDCF9vpEfl2sn+pj/iCJjirO8/jCGh9Ia6bkIPwuuuOFfqmQULhqdtJnxU3ngXl1F9VgYUGgnfd
pka69eqmZjbsAUOnqd5Lv23dhQBcxdL1SCHQNURIrNkuDKQmqEPyr9lN+L5bIw/9g/NxijwbiW7M
BDNDsWvU0+FxebPcTBrQvrM5DwCSYZDHkVr80anXWg==
=ZTia
-----END PGP SIGNATURE-----

--------------1iZSMvoyGNRStrKC30yjZxCk--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 13:59:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 13:59:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480141.1684106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPuf-0007yX-Kf; Mon, 09 Nov 2026 13:59:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480141.1684106; Mon, 09 Nov 2026 13:59:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQPuf-0007yQ-HP; Mon, 09 Nov 2026 13:59:57 +0000
Received: by outflank-mailman (input) for mailman id 1480141;
 Mon, 09 Nov 2026 13:59:56 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQPue-0007yE-6q
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 13:59:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQPud-00AzO1-Jp
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:59:55 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d1cb-2eae-0a2a0a5409dd-0a2a4501d4e0-40
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:59:55 +0100
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d1db-5984-0a2a45010019-c387df83b1d2-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:59:55 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 010C81F7B4;
 Mon,  9 Nov 2026 13:59:55 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9FB5313319;
 Mon,  9 Nov 2026 13:59:54 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id zW2CHdrR8WpjSwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 13:59:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794232795; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=46LqWRC6n8IeQOh9l5R4G3PrE/IS98MbYrGH+Aw/mjA=;
	b=HuMRaeag313BJFLrZsVyclG0iamtQDRRWCZnw5jPbklZNsxhj9eTd0h5ACSsUKOzbuQkm5
	xraYwwqT5+FalHiMwqsdafBb79DoHYD1Cf7/8MPKWm4Rt3hqZVlt/pK8I5K1OKWkjuYjvm
	S1dFhzWPxrwMpNyqLcXWSj7cddEzH0s=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794232795; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=46LqWRC6n8IeQOh9l5R4G3PrE/IS98MbYrGH+Aw/mjA=;
	b=HuMRaeag313BJFLrZsVyclG0iamtQDRRWCZnw5jPbklZNsxhj9eTd0h5ACSsUKOzbuQkm5
	xraYwwqT5+FalHiMwqsdafBb79DoHYD1Cf7/8MPKWm4Rt3hqZVlt/pK8I5K1OKWkjuYjvm
	S1dFhzWPxrwMpNyqLcXWSj7cddEzH0s=
Message-ID: <bf23dd76-e8e5-44a7-a30d-4a5a8fd30c34@suse.com>
Date: Mon, 9 Nov 2026 14:59:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gntdev: fix deadlock between map ioctl and mmap
To: Andrey Misiurov <andrey.misyrov@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Wentao Liang <vulab@iscas.ac.cn>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org, stable@vger.kernel.org
References: <20261013170745.583279-1-andrey.misyrov@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261013170745.583279-1-andrey.misyrov@gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------QNmPN2tRh9ZvgFftFCKcLcWs"
X-Spam-Flag: NO
X-Spam-Level: 
X-Spamd-Result: default: False [-8.34 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.45)[0.985];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	SUSPICIOUS_RECIPS(1.50)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	ARC_NA(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	URIBL_BLOCKED(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FREEMAIL_TO(0.00)[gmail.com,kernel.org];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RCVD_TLS_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	TAGGED_RCPT(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[7];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -8.34
X-purgate-ID: tlsNG-d62444/1794232795-1F063757-DB0DFDC2/35/110847
X-purgate-type: clean
X-purgate-size: 6168

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------QNmPN2tRh9ZvgFftFCKcLcWs
Content-Type: multipart/mixed; boundary="------------S7MRI164uabaQAZq0HufeLHW";
 protected-headers="v1"; hp="clear"
Message-ID: <bf23dd76-e8e5-44a7-a30d-4a5a8fd30c34@suse.com>
Date: Mon, 9 Nov 2026 14:59:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gntdev: fix deadlock between map ioctl and mmap
To: Andrey Misiurov <andrey.misyrov@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Wentao Liang <vulab@iscas.ac.cn>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org, stable@vger.kernel.org
References: <20261013170745.583279-1-andrey.misyrov@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261013170745.583279-1-andrey.misyrov@gmail.com>

--------------S7MRI164uabaQAZq0HufeLHW
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMTMuMTAuMjYgMTk6MDcsIEFuZHJleSBNaXNpdXJvdiB3cm90ZToNCj4gQ29tbWl0IDQ1
Y2ExYWZlMmZkMSAoInhlbi9nbnRkZXY6IGZpeCBlcnJvciBoYW5kbGluZyBpbiBpb2N0bCIp
IG1vdmVkDQo+IGNvcHlfdG9fdXNlcigpIGluIGdudGRldl9pb2N0bF9tYXBfZ3JhbnRfcmVm
KCkgdW5kZXIgcHJpdi0+bG9jay4gQQ0KPiBmYXVsdCBpbiBjb3B5X3RvX3VzZXIoKSB0YWtl
cyBtbWFwX2xvY2ssIHdoaWxlIGdudGRldl9tbWFwKCkgaXMgY2FsbGVkDQo+IHdpdGggbW1h
cF9sb2NrIGhlbGQgYW5kIHRha2VzIHByaXYtPmxvY2s6DQo+IA0KPiAgICBpb2N0bCB0aHJl
YWQgICAgICAgICAgICAgICAgICAgICAgICBtbWFwIHRocmVhZA0KPiAgICBtdXRleF9sb2Nr
KCZwcml2LT5sb2NrKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtbWFwX3dyaXRlX2xvY2sobW0pDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdudGRldl9tbWFwKCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdXRleF9sb2NrKCZwcml2LT5sb2NrKQ0KPiAgICBjb3B5X3RvX3Vz
ZXIoKSBmYXVsdHMNCj4gICAgICBtbWFwX3JlYWRfbG9jayhtbSkNCj4gDQo+IFJlcHJvZHVj
ZWQgb24gRGViaWFuIDYuMTIuMTExIGluIGEgWGVuIGd1ZXN0LCB3aXRoIHRoZSBpb2N0bCBh
cmd1bWVudA0KPiBvbiBhIE1BUF9QUklWQVRFIGZpbGUgcGFnZSB0aGF0IGhhcyBub3QgYmVl
biB3cml0dGVuIHlldC4gc3lzcnEtdzoNCj4gDQo+ICAgIHRhc2s6cmVwcm8gc3RhdGU6RCBz
dGFjazowIHBpZDo0NDc5IHRnaWQ6NDQ3NyBwcGlkOjEgZmxhZ3M6MHgwMDAwMDAwMA0KPiAg
ICAgcndzZW1fZG93bl9yZWFkX3Nsb3dwYXRoKzB4MjVjLzB4NDgwDQo+ICAgICBkb3duX3Jl
YWRfa2lsbGFibGUrMHg0OC8weGMwDQo+ICAgICBsb2NrX21tX2FuZF9maW5kX3ZtYSsweDk2
LzB4MjUwDQo+ICAgICBkb191c2VyX2FkZHJfZmF1bHQrMHgxMmQvMHg2MjANCj4gICAgIGV4
Y19wYWdlX2ZhdWx0KzB4N2UvMHgxODANCj4gICAgIGFzbV9leGNfcGFnZV9mYXVsdCsweDI2
LzB4MzANCj4gICAgIF9jb3B5X3RvX3VzZXIrMHgzNi8weDUwDQo+ICAgICBnbnRkZXZfaW9j
dGwrMHgzYjkvMHhhMDAgW3hlbl9nbnRkZXZdDQo+ICAgICBfX3g2NF9zeXNfaW9jdGwrMHg5
Ny8weGMwDQo+ICAgIHRhc2s6cmVwcm8gc3RhdGU6RCBzdGFjazowIHBpZDo0NDgwIHRnaWQ6
NDQ3NyBwcGlkOjEgZmxhZ3M6MHgwMDAwMDAwMA0KPiAgICAgX19tdXRleF9sb2NrLmNvbnN0
cHJvcC4wKzB4NDFiLzB4NzIwDQo+ICAgICBnbnRkZXZfbW1hcCsweDRkLzB4MzMwIFt4ZW5f
Z250ZGV2XQ0KPiAgICAgX19tbWFwX3JlZ2lvbisweDY5Ny8weGIxMA0KPiAgICAgbW1hcF9y
ZWdpb24rMHg3OC8weGEwDQo+ICAgICBkb19tbWFwKzB4NDVkLzB4NjMwDQo+ICAgICB2bV9t
bWFwX3Bnb2ZmKzB4ZjgvMHgxYzANCj4gDQo+IERyb3AgcHJpdi0+bG9jayBiZWZvcmUgY29w
eV90b191c2VyKCkgYWdhaW4uIE9uIGZhaWx1cmUsIHJlLXRha2UgaXQNCj4gYW5kIHJlbW92
ZSB0aGUgbWFwIGJ5IGluZGV4LCBhcyBJT0NUTF9HTlRERVZfVU5NQVBfR1JBTlRfUkVGIGRv
ZXMsDQo+IHNpbmNlIGFub3RoZXIgdGhyZWFkIG1heSBoYXZlIHVubWFwcGVkIGl0IG1lYW53
aGlsZS4NCj4gDQo+IEZpeGVzOiA0NWNhMWFmZTJmZDEgKCJ4ZW4vZ250ZGV2OiBmaXggZXJy
b3IgaGFuZGxpbmcgaW4gaW9jdGwiKQ0KPiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZw0K
PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgTWlzaXVyb3YgPGFuZHJleS5taXN5cm92QGdtYWls
LmNvbT4NClJldmlld2VkLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQoN
Cg0KSnVlcmdlbg0K

--------------S7MRI164uabaQAZq0HufeLHW--

--------------QNmPN2tRh9ZvgFftFCKcLcWs
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrx0doFAwAAAAAACgkQsN6d1ii/Ey9P
tgf+LyqAgIvGovFfy0uFymW+Y4EyTAn3/+7DFLJVtyioaavNnU9b0fvurc1f+XTcXp5g2QiFaU2Y
DVIbaOU9CsZG8BW468Htscljm7yzyhfNxniJqxVKmsgNRZKZMpnpSPABbCSZT6MkHRIiKEwJCUyd
fkIl9G4KdW3f+OKlpqnT/kXEAE2B5kf+JggZHkDnixGp6Fql2pqrA7vDrwA6CKz5P0Ctg9zOg9OB
mZWHHrI4UWhPhFNj+y3zdKjoUNQZOdZS5ybB1FmtwbI+PMhngA/jwWtvsSlsO4BNqd7bqIZP4gSB
RRtjVIKTMiubirk1cyhjHxyPigHfabtkovoI8yUnMg==
=pRR8
-----END PGP SIGNATURE-----

--------------QNmPN2tRh9ZvgFftFCKcLcWs--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:07:36 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:07:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480150.1684114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQ20-0001d3-B9; Mon, 09 Nov 2026 14:07:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480150.1684114; Mon, 09 Nov 2026 14:07:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQ20-0001cu-7z; Mon, 09 Nov 2026 14:07:32 +0000
Received: by outflank-mailman (input) for mailman id 1480150;
 Mon, 09 Nov 2026 14:07:31 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ross.lagerwall@citrix.com>) id 1xQQ1y-0001cd-MC
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:07:30 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQ1x-0032f6-KD
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:07:29 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af1d39a-e002-0a2a0a5209dd-0a2a450195ee-30
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:07:29 +0100
Received: from [52.101.48.24]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af1d39f-5984-0a2a45010019-34653018aad8-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:07:29 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by DSVPR03MB989290.namprd03.prod.outlook.com (2603:10b6:8:3ac::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 14:07:26 +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.0592.012; Mon, 9 Nov 2026
 14:07:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=NjM4imooFNUHTc7hAbVppf9LFz3KlmGT4n8EzFQIhm1rVFaAQoxihTntLOkhiYW1hxapG9IDyZQpFsn18NHIUDESsd0jJ27qJwxwoG47HHGX3wuDhxF1NJGggMhiPWrXP6eW39f72J3GM+cxhd/kgfMJWNREJCGSSCWKN6gqaDgQK3U/DDgPYhxkCOQsQb/7YVeLKy6e+zyAXG8SAyxwYPGzlSQFKiUQLh6f8NnDN1su7u3IwMjzeczDnguEVfJd0N+BQi7fu2td6aLWf1zksJBWY4YgI06rfQ2+UEuFAacytlp6KK3u+d3IsuNgQW5xAW1VRMu/8JUq2cB9VQmuYg==
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=Ge5LluQn6Pgo3xDEJjLrpqHmBt/nmKHzFMO9QBaIf5s=;
 b=rY4+9J+ZvadG2YlgDOj6/yN24X6UB2Q8SUVFEnpsHo0R9aFH+VLSLYm6lk3fyTj/7FC86EzzV0s92sYp0kyjrC+gOxW7cgt6v6Lnv41XT7KGqPVjG70GHsWk1VWSvGOhC35ayDH7sKV3CSprK3MdEyZpWVsyYpDep47XuYIaPoDq8QjHmcn7f9OqCXQE8uA1M37zhNvN0abSNgPQpCRa9xWsXPdiO2z7KjvwBapMXUl8n2l7+5uUPMPhe6LGBvS+vpae4L6wLMhSa0nblAnlA5KEiwNbjEf2NA8edbpdvEyVFbNwv6q4uLXwfaUo1xwybvBqAVFv7RDheN8y9BDiBw==
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=Ge5LluQn6Pgo3xDEJjLrpqHmBt/nmKHzFMO9QBaIf5s=;
 b=ngOHmrcQuvNAl150nAGyNyoSK5QdHCah0sE8pgw4XjCb06yY/JdfoICXMdmSMlSHpnoEWOFE3aeTqfNmrxVFDrz1oykiLB59vFIGcAlCKOyrvIRndyF4XgdfWreLap/ow4bn0GIpi/x5Z4HxohSWQAT1XCg0YuhHkvRFjf89LQo=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <2341fc44-3a2d-4f0e-9b77-e39bb539a0cb@citrix.com>
Date: Mon, 9 Nov 2026 14:07:19 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 22/28] x86/hvm: avic: ensure SVM AVIC supports xAPIC
 operation only
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-23-dmukhin@ford.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <20261105013347.719392-23-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0610.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:314::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_|DSVPR03MB989290:EE_
X-MS-Office365-Filtering-Correlation-Id: e052118d-00a7-48ff-5873-08df3e6ac836
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|366016|1800799024|11063799006|4143699003|56012099006|261021121427099003|261021123027099003|261022105027099003|261009223027099003|261026121527099003|261026140227099003|261028144727099003|261102123227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	AD7Uj6DgA6XTJwSMzNTP2VoerJGxAsmEQ3zGHsnxFdmQSmszWssDvjoL4VuaLkPEsljfEX5krrpfVtUZ37B+40bkuK1vozmXHduAK4PUg2L2aEbuLWcMX9gQLxZ2d9HI87LD2IEURfYnitihQfCZSQCAOfPeEWZVuaZqx4TxBOHBDS52kS/aoqOgkzzda/QtBfVoejpAevAewQgKsgEQKqeaKV/Nl6admVPCNbd++RenUPh3jq3A9B8r3iBXudn9Ehhb5lbCY3Smq2CqTY/8gG4F5TENsZtP0ay5zH562Ak/NY1xT6PbbnLcVyX7LZI0sdxiAWI2RvTESplmBOctyhtQ6VWS9h1V8mPptd7nUkZ36FxVMwH1ZFNEEr6NadBKAUULwiZlLtBDyAZ4kIAtU6W+PX51083RIdvCKV1hXi7nfxXvNSWzwzDFaHTFU/CrIIDPhjqs3e5DDa/wgkTvKIhvFoOFbW2XkpJz67Fh2/R5LmpomwsO0Xz7y0NQkPT4d8LeQHpI49IH0yY3a7N51F7XZQu1m+ap53ZwKh+8frtRaaeA9oJvcVRrM2DTFyBP+Ixn2FTN6ZmsEmkD+u4Bh+/RVvqz1Ium3Ox3SEYWdlZDdV6R6hTZjy4vIfYP8VlE1gJOhDcDz7jiMbVrtSZVqC/y1kWiXxymMI3P4A6bfzY=
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)(23010399003)(376014)(366016)(1800799024)(11063799006)(4143699003)(56012099006)(261021121427099003)(261021123027099003)(261022105027099003)(261009223027099003)(261026121527099003)(261026140227099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WXZqelE1V1llaXJHSzFzb2xHSkJjbUtsL2lnOHRlT1FnL0h1MHhoK2FmYkVr?=
 =?utf-8?B?Qkl2NDhyb0FvWm9xQzBWWjhqM1FqS2tPZnVMaTJDL0VqQWlWQWQzN2ZCVi8w?=
 =?utf-8?B?bGpmTFRFbm9LendmbWZITkZEK2psRVRQQ0lKU1QwbFJEeWU0VmVDbFRLM3lB?=
 =?utf-8?B?a2RLNWhJejdZUDRjS0Zha2pBc21nZG1BM3JOOGhDT0xJSEhLanlGeUdTdEo2?=
 =?utf-8?B?MWV4VGFYN0tnd05pUXdnclEyUXZUdkNBRWFGSjFDYmpQZGVqcDlVS2hzUHls?=
 =?utf-8?B?WnB6R05nYkNhamxBamxlRmxmVE1lNzRhTWVMOTNVaWF1MEJxRHhjUWgwZEFp?=
 =?utf-8?B?c1pYTzF2WDc0eEhQS0t3bmlFZ0RsZjMzcWFyVXQ4SDE2a0dVbHNEVDErQkRW?=
 =?utf-8?B?bWh3VjVsN3RoSVNCZUhvUW9SZEw2U1YzS2RlTzlRczBZVXRiaWlGZDB5a256?=
 =?utf-8?B?S0dNenVDbTc0YmZhR3I5ZnJVemJMV0l6Ujh1KzlGd1cxR2liZUlwNEZ0b1VU?=
 =?utf-8?B?TG1aWWVDOFVEQWJCbzJtMVdUVWEzb0p4L3ZLTERKREZtaW9kUm5YbVRmTFR5?=
 =?utf-8?B?WHNzQzhLb0V5Y01ody8ya2lLakI5NEdWNFU0d0lZRGZrTVdQZUtML2UyRzJv?=
 =?utf-8?B?L3ZrZlZWM2NlRTU4L1Zndk1ZT2Q3bm5XR2VtYTdPU25YOUxhbnVvbFNtQ3Vp?=
 =?utf-8?B?aEVWQmMzTkptL2V3UTFPc2MwNWpMZk9TeC9YampGYk95TjJleXB0RkF1VWtE?=
 =?utf-8?B?RjBua3JiUFFUY3Bnc1QwMlpCSjBLVHBMcUlsdFBkSUU1bFo0UThKSkFObjVq?=
 =?utf-8?B?TllPNWIrczNXUWx0Sml6akErMXl1cmRzOTBrMXJNd0JnRVBMaDlxTkxWWm1R?=
 =?utf-8?B?dXVLWTQ4VStHdkpmUTVoUGFJTW8rcEdqc1JGaU5UTEh4YjhWZWNHdGZUczRM?=
 =?utf-8?B?Y3pmeUZFdWNEV1JlejBWbGM1NXlnbFE2ZHJXMmNZRHA3aUsyeVcxTkxPVVA2?=
 =?utf-8?B?RmVSNk5ZZFp4Y012UC9PUndJeklrWGtybE5GSTFwVmk4M1dadU1CQk0xRlhv?=
 =?utf-8?B?K21CT1FRd3dUL09TaXl6SVB5THpvK2xQU014TG5kYkZoYXpYVkhWQUlsZTVp?=
 =?utf-8?B?NU1hbXFtQldBMWZxNWp1VUhpRkc0SDZlNFlLTllHWFFlVHZLRWpvMUNLeFI1?=
 =?utf-8?B?eGVsOTBHWVY4SGF6a2tsT2wyZ1FLRWR0THJrZHpiUDJZQWVjeEJYbTZ3WmJB?=
 =?utf-8?B?M1VtYzBpTGdzSjViZVdXazdXMmxycE9yNGNzSi9kSU9RTCtrZ01FcFpsU0Qw?=
 =?utf-8?B?c2liTWQ3dDNKQW5XZm1sZnIvS2ozalF6cWRSVFlhS3Q1cVY4WnpoQUQ5UStK?=
 =?utf-8?B?T1pkUjFQcDNhL1VPaklqUUJTN3NGdkdNQ2xvUmFsSlQ4ZEZNekN1WGlqRFRU?=
 =?utf-8?B?WXZyYlBQTlB0SytJdTRDMVZaYmVNVllRWVduZFdOUXdwQU85dmVDWUhvMjc0?=
 =?utf-8?B?U1M2b1U3ZnVpdHM2c1BiSzBRUXkwbnJoWUxsa0FYRjFlS3pGb0hHNVcyMWkv?=
 =?utf-8?B?L2c3OUYwcEhxaXdSa0JlRTJKNDMrR2xsSmFmY3l1TW5mQ01LZ2ZWOUhPMytB?=
 =?utf-8?B?b0lCRjhZUU9IdjRzVDluektNSzhTNE9lRVh4bDRCTG9HT1ZaQlZmVFV1VkhE?=
 =?utf-8?B?TmFwMG5Hc21TU0xoWUNKQ2RkRmo5K0QwNm51YjdVNGIvZnZRUmk2MGxiaVJy?=
 =?utf-8?B?NUw4aEd0d0VQY0k2SGpwdzdhQ24vc3YvaW1udVpOOWdDbFB0c244SnJ4bjV0?=
 =?utf-8?B?enRhSlBPRWFBM1NLcXhadzdXWEZuVnljcXZwWmJDVjNyb3FWNDlXMUlITEVC?=
 =?utf-8?B?T0hEOFp1YmxoSEpTdFQrclJhTURDUnlaUGx0eUplcEpvTXFzWkNZV0ZiRDVy?=
 =?utf-8?B?OVgwWEM2QWxGYlo5b1RNcnZJNkNpeUZMOUIrSlYxN3ptQUVaWGdKSVV1b3VJ?=
 =?utf-8?B?aE45SHdoUVdrWTZZT0hDL3g0K1NNWnpEUjF0bm96Yy91bGtFYnhpOGtoRGly?=
 =?utf-8?B?c1ZkSWs4eEdrZ0Z2Skd2Ym9aMWNMZDJETEdkM3RvZE9QZjZpdm5sMm5EQWlT?=
 =?utf-8?B?clp1Kzg5Vk9LQ3J2WFBTYm1KRThNbk1XakhnTlN5bHhURHBENFNuWGFzZFdD?=
 =?utf-8?B?K1FCdFhzV25EWDFCVXV3UlBkdDJORGFmUU55OWdTeXpsbkVUYnBYZW10OE1u?=
 =?utf-8?B?N21qaGhLT2tYUXRtUmNYOXVGU3Zna2FCSUFvd05WMmtvNG5LOU5EVDkwYmtw?=
 =?utf-8?B?WlhtdlZ2Mk05eGY1V3EvSEZiSHlzNVNZY2Q1YnBUUXArbkVZQmhxRFpNbjlV?=
 =?utf-8?Q?x3IAaleE7eBYRbvg=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e052118d-00a7-48ff-5873-08df3e6ac836
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 14:07:25.7559
 (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: 4ev/lgJHsT8I73Qtk0i42ZMCHUw2pdCaGnaUW+9XJ8vR+XNrA/c0etRFAnmHhvHPL7RzrQrvoOr4fTBgp4GZQUeq558igSrDHbP7Qdd2ot0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSVPR03MB989290
X-purgate-ID: tlsNG-d62444/1794233249-BF66C757-F3CF06B5/0/0
X-purgate-type: clean
X-purgate-size: 1290

On 11/5/26 1:33 AM, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> xAVIC does not support x2APIC operation (yet).
> 
> Until x2APIC mode is supported, don't advertise x2APIC to HVM
> guests when SVM AVIC is enabled.
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>   xen/arch/x86/cpu-policy.c          |  3 ++-
>   xen/arch/x86/hvm/svm/svm.c         | 12 ++++++++++++
>   xen/arch/x86/hvm/vmx/vmx.c         |  4 ++++
>   xen/arch/x86/include/asm/hvm/hvm.h | 15 ++++++++++++++-
>   4 files changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> index 48a3185eed8d..ca9b1a523570 100644
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -764,7 +764,8 @@ static void __init calculate_hvm_max_policy(void)
>        * (x2)APIC isn't enabled.
>        */
>       __set_bit(X86_FEATURE_APIC, fs);
> -    __set_bit(X86_FEATURE_X2APIC, fs);
> +    if ( hvm_x2apic_supported() )
> +        __set_bit(X86_FEATURE_X2APIC, fs);

Perhaps this is moot given Andrew's comment, but on my host the X2APIC feature
bit is already enabled by inheriting from the host policy so this doesn't have
the desired effect and X2APIC is still exposed to the guest.

Ross


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:08:15 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:08:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480156.1684123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQ2h-000298-NT; Mon, 09 Nov 2026 14:08:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480156.1684123; Mon, 09 Nov 2026 14:08:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQ2h-000291-KN; Mon, 09 Nov 2026 14:08:15 +0000
Received: by outflank-mailman (input) for mailman id 1480156;
 Mon, 09 Nov 2026 14:08:14 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQQ2g-00028k-3Q
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:08:14 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQ2f-00EuGE-8U
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:08:13 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d3c2-8faa-0a2a0a5109dd-0a2a4501893c-46
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:08:13 +0100
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d3cc-5984-0a2a45010019-c387df83a666-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:08:13 +0100
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 6DDA81F7BE;
 Mon,  9 Nov 2026 14:08:12 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2B32A13319;
 Mon,  9 Nov 2026 14:08:12 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id wRT1AMzT8Wr+UwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 14:08:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794233292; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=mvBjR3MYi22ZHQt6NabZHmYpSUVvK97IMFAZaD9Hq2Y=;
	b=Ahp1d7q+SrGa6YfvLHnXsobFmsaMp4SgS4Nit8mkI2TYRJ70wNCpkNZHIisFDxst2Qdw1n
	LKy6AaPh9l80LvbwzcDxyupsQ5X5zIr5y9uK+41giwapcwHmVp9USUkRJcyp0et7rkEAsh
	gj2ekhInsonptNBb/pGhtPaE7bKE4Rk=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Ahp1d7q+
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794233292; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=mvBjR3MYi22ZHQt6NabZHmYpSUVvK97IMFAZaD9Hq2Y=;
	b=Ahp1d7q+SrGa6YfvLHnXsobFmsaMp4SgS4Nit8mkI2TYRJ70wNCpkNZHIisFDxst2Qdw1n
	LKy6AaPh9l80LvbwzcDxyupsQ5X5zIr5y9uK+41giwapcwHmVp9USUkRJcyp0et7rkEAsh
	gj2ekhInsonptNBb/pGhtPaE7bKE4Rk=
Message-ID: <9d473783-5121-426e-94eb-01a920b0fc0b@suse.com>
Date: Mon, 9 Nov 2026 15:08:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH Linux v4 5/5] xen: Add new Xen pv-op pte_get_and_clear
To: Kevin Lampis <kevin.lampis@citrix.com>, xen-devel@lists.xenproject.org
Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger@xenproject.org,
 teddy.astie@vates.tech
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-6-kevin.lampis@citrix.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261016164815.3109065-6-kevin.lampis@citrix.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------wZgRuptndfxSsFLvaP0v0JQd"
X-Rspamd-Queue-Id: 6DDA81F7BE
X-Spam-Level: 
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Flag: NO
X-Spamd-Result: default: False [-10.15 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.35)[0.958];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	MX_GOOD(-0.01)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	DKIM_TRACE(0.00)[suse.com:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:email,imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -10.15
X-purgate-ID: tlsNG-d62444/1794233293-1F063757-659ADD9D/35/110847
X-purgate-type: clean
X-purgate-size: 4092

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------wZgRuptndfxSsFLvaP0v0JQd
Content-Type: multipart/mixed; boundary="------------hIXTE0tWrIZ7d61hNVKqw0Wk";
 protected-headers="v1"; hp="clear"
Message-ID: <9d473783-5121-426e-94eb-01a920b0fc0b@suse.com>
Date: Mon, 9 Nov 2026 15:08:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH Linux v4 5/5] xen: Add new Xen pv-op pte_get_and_clear
To: Kevin Lampis <kevin.lampis@citrix.com>, xen-devel@lists.xenproject.org
Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger@xenproject.org,
 teddy.astie@vates.tech
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-6-kevin.lampis@citrix.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261016164815.3109065-6-kevin.lampis@citrix.com>

--------------hIXTE0tWrIZ7d61hNVKqw0Wk
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMTYuMTAuMjYgMTg6NDgsIEtldmluIExhbXBpcyB3cm90ZToNCj4gSWYgWGVuIHN1cHBv
cnRzIFhFTkZFQVRfbW11X3B0X3VwZGF0ZV9zd2FwLCB1c2UgdGhlIG5ldw0KPiBNTVVfUFRf
VVBEQVRFX1NXQVAgaW5zdGVhZCBvZiBuYXRpdmVfcHRlcF9nZXRfYW5kX2NsZWFyKCkuIFRo
aXMgYXZvaWRzDQo+IHRoZSBwYWdldGFibGUgd3JpdGUgdHJhcHBpbmcgZm9yIGVtdWxhdGlv
bi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEtldmluIExhbXBpcyA8a2V2aW4ubGFtcGlzQGNp
dHJpeC5jb20+DQpSZXZpZXdlZC1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
Pg0KDQpJJ2xsIHRha2UgdGhpcyBhZnRlciB0aGUgWGVuLXNpZGUgcHVibGljIGhlYWRlciBy
ZWxhdGVkIHBhdGNoIGhhcyBiZWVuDQp0YWtlbi4NCg0KDQpKdWVyZ2VuDQo=

--------------hIXTE0tWrIZ7d61hNVKqw0Wk--

--------------wZgRuptndfxSsFLvaP0v0JQd
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrx08sFAwAAAAAACgkQsN6d1ii/Ey/W
Igf/QHfji9Dy2XQ/DMmYHYeS5a+crdZGcXxNTrULWYn06hsJQisEdUkJA/lgCVjVJOdIcshxnKuf
F49ov+RfRDQLnK8RMDpBufwoRD+JDhr4iNfV0vO2QNGrzAFJLrzUrl2NotAjlRhU2esNrfrtKkks
yyl/H30FJ1iSf21dQaMtqoIgJu4fPhif/oCv//ZsjLZVvHgomLQoFc45JzHr5RG4yK4Q5tJPu1xw
2+liktoEezPC5P5HF6uiKzDbq6bZsIYN5EaO2q1sjVxsOqKs3yP0tc/KFPvGtobmIhQrWquzNkjW
HXynNKq9GBp8qVIOgmg5jozoFx8VSlApuz7bhF0OQQ==
=McoM
-----END PGP SIGNATURE-----

--------------wZgRuptndfxSsFLvaP0v0JQd--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:26:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:26:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480172.1684133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQKa-0006KE-68; Mon, 09 Nov 2026 14:26:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480172.1684133; Mon, 09 Nov 2026 14:26:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQKa-0006K7-2v; Mon, 09 Nov 2026 14:26:44 +0000
Received: by outflank-mailman (input) for mailman id 1480172;
 Mon, 09 Nov 2026 14:26:42 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ross.lagerwall@citrix.com>) id 1xQQKY-0006K1-8s
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:26:42 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQKX-00Ez9O-L8
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:26:41 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af1d816-e002-0a2a0a5209dd-0a2a450acc32-34
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:26:41 +0100
Received: from [52.101.46.43]
 (helo=CO1PR03CU002.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af1d81f-f2d2-0a2a450a0019-34652e2b391c-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:26:41 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by DSSPR03MB989189.namprd03.prod.outlook.com (2603:10b6:8:375::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 14:26:37 +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.0592.012; Mon, 9 Nov 2026
 14:26:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=AsZb93IbsagnxblXfDJIT+/tEe8bUlA8XqmHr4hneDMymDomRmTBcCmYuI1dNCj8St1TsrIeYMu03RLgXBUMCuVFGHFLm0PAhEVKRBhjNLVD6OC+rvYMGvs5mrBLaUayJ3vP9h/8ed9YbD7iR8/yGqVCxb1ZkBz2IEBBPed+fXe8WSRY5YRdH9mg6sF800FlWTKGj8TJ5KITh16UEJ4Thcv1ZgLyNQtiUzSLSr5/2ZuUC19oR+aDCAnoedUW3o9wK/Vf+noSXQu/rVXFtn3AtjNwLN/1wEzpTWSVkhgJSIcayj2tojthF46GI6a3a3UDztjvUjD7AqIVFC+RooiC7Q==
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=kLqC/2brOXWuIvQGplGN134ubFIUqk+AhHUSWOEAOXg=;
 b=Tzcqd2i9mbJzARyNEfzYqN/yxtZ+0aBkAkw/IX+21wY+O4jzAY2AkixXwg6YGVdoS4kPV4xUIrsg7+3jQLAQemMrugr40EOuIND/2maaIZUAFPngFC4g4Mp8D0r8ixvBqj3Vez6r49rDB+BycG6OMRIpbIcsPYmvQh6CGXGNQU6s4FAgeUXcrSsL5eyKrmQsVcrWrSygk6KP1C2ciO/Hzrc0b7qoM1+7qM4tT7RKErTpdMaCzTMFpApCmeuhxD38wpemuq0U9D0WEu7h/hvvOEPgo4qR6JipL3pW7wcsEqBNYj+RsAvW7rwd5uK9RhhspIK+DmnYSSnXtnIsT1WUig==
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=kLqC/2brOXWuIvQGplGN134ubFIUqk+AhHUSWOEAOXg=;
 b=WLpFlxaMsBLO9bv7K0uMGv0HCvh1rLTRlvSPBXM32KUOrPEIxLcGWz7F8wa36ZYXbDaWyNV1obTdPlntX6XzQ3CNj8E+MUJLveQ/yX5h0OZx0uDf1bsrPMFNgL+nDRr9+BiDNiO1SFT6gxCTbJpUYQNbwi/Ce/rIW2qZ0LHfexQ=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <3fe5acca-7d8b-4736-9f46-78c6934cf41b@citrix.com>
Date: Mon, 9 Nov 2026 14:26:33 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 07/28] x86/hvm: avic: add VMCB state initialization
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-8-dmukhin@ford.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <20261105013347.719392-8-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0254.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:371::15) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|DSSPR03MB989189:EE_
X-MS-Office365-Filtering-Correlation-Id: 940a2ded-91ab-4f1b-fe0e-08df3e6d76c2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|11063799006|4143699003|56012099006|261026121527099003|261021123027099003|261021121427099003|261022075727099003|261022105027099003|261009223027099003|261026140227099003|261028144727099003|261102123227099003|10067099003|18002099003|22082099003|6133799003;
X-Microsoft-Antispam-Message-Info:
	A9zMYTOdcPDreCSRWR97bE7UQ36FKF/U4DLf+hlZKNjAcogRnlh5z/Y5LodyQnjdQqctoohxI+vtrYpgjvKc81OK2Q1jkVehKPwsnQG4uCXiK9FYddyIDUaNroQxvzmvDYKqYQm8vLsC721HH/aR5d1vGIiySBXet2uDeSWG6zrFHIrsvt2e+DDjodTty70hA9EkpVwZJTv+VTCruUgYpdUbxH6UyP8sSE1f4QeoHTX2kenqHYxCwsJ1s8OOoEVhGz7LU3xAM/8fqPe7GyyhS/Sd1+pVy9FIyWE+L8ch9i7MASU8Ze8k8zmTdKRK60HzajSHkLdKUJGFTYzr8eGk1NPjRnrwKCuXbjwHnTTRD1wHROydIHIdK45PB6j3hV5XlTrFQTJnJ7fNINBKTjVko4s9DaLDsH2jDZN2F/RztsIvStJO9Jz+HjK+anMXfJECwjAPCPsnzStSahW8jFrkI2Dzu2smbM1gcVnwPt9oU7SMGaIp2rhtn3liEErRUIEoJdJJGAxSUp6eLZ5zdbOrPvuROMOrQnYGIDZa1qdnTMw4wscnqKnfJc7Jmn9tNovwMmNzhx2907l1IiwzKwpmCpuydwQpGD5Smh5AYbd7L4MGXHL074Ec3NxUmXDDLJT9ncUDEcTBRhshrm95iVVnkvKG6SFapMIEJroSuNRUVew=
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)(23010399003)(366016)(1800799024)(11063799006)(4143699003)(56012099006)(261026121527099003)(261021123027099003)(261021121427099003)(261022075727099003)(261022105027099003)(261009223027099003)(261026140227099003)(261028144727099003)(261102123227099003)(10067099003)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MEl3M2hzMnUvK3I3RG83dnZMRzFUcDdtT21hVlJoRlZCbzZUOHZMQlk2SzQy?=
 =?utf-8?B?a0plTk9PcElkckZFbUYwYURML1FBVDRVbFZlVUNaMzB5Z29WZGsyUDE5cmxs?=
 =?utf-8?B?MExqMDBnUGJDS2owbUpWTEhKV0NSeTdRR2M3a3JQZG9weXJwTTRIOStYeUdS?=
 =?utf-8?B?YVpRZFViUVd3eFlJMTkrQ2VBZEZWa1NXK2lFcWJjR0xjQW91QXBYWVJZc1Vv?=
 =?utf-8?B?RnVUVHlSSm1OOWpzRlJiRjhVZ3RvejIrNmNMRy9ycEZmT1dCMlpiY1I1TGFX?=
 =?utf-8?B?UWlvUUQxUE5TOCtTODB4cHo1S1RzN3RGNVJIa3dBaU1FekVJdVUzcFBZSDI4?=
 =?utf-8?B?N2tOOUZyRnlpcGxGZmd0VWc2R0d4WXh3RXpta2JQM0VKY0VBbnQ2NFV3dEE4?=
 =?utf-8?B?Skw5ZTZXMm1DWVBZb3NBaHVOT3M0KzJEWk1JNG55T3Y3cVdYUiswZlVRdmdt?=
 =?utf-8?B?bjllZjhCR0NSTDdya3p5am0wTXhMZGVEWVlaL0hPMDJncmVvTXFTYmVVSVEx?=
 =?utf-8?B?VklwQnJucEkwSjBxamtkKzlQeGYramsyZVhxTW5Oa1QraXVRTXg0dUl2K01n?=
 =?utf-8?B?VGRsRzNIclczZVpTMFliR0E1bmF6cW5Fc0NZUFl6bDExaTNlOVNheWZXSVBz?=
 =?utf-8?B?WGErT3RLejZFbkRqKzZoSmU4QkJZZTBmaHU5em1aYThySllERlJjdk8rSEJH?=
 =?utf-8?B?dFVTK25zMWFUZnJLKzBvbER6V0N3WnNmcWRSaVJrb1RCYm1WOWxrUUFjZ1Q5?=
 =?utf-8?B?c1h5UVlRREZadXMwM01sMGZ3K1d1L1ZraXFDcDJXaTYvcHdQY1Vlb2Y1Q3Fv?=
 =?utf-8?B?M1psMUtqa3JGb2NIb3NuR3R2STNVQ1k3SkVITEpBWlowZFVrOHRPOEptVEt1?=
 =?utf-8?B?YmYvTmNRd1ZldElaVXlXaU85NVd3QWo5ZlhSN1JNTXF5RWdQem1adUJQa3Za?=
 =?utf-8?B?VkoxSEI0cGpZUlhmdjM1RGp0Wk5zbzFVTW9sZWZ4NXN0ZStYR0g5bzA0R28v?=
 =?utf-8?B?QWdKOTFNaEg4MnZXNWlpZmNDRTZuWmRzT05RRnBqSjZNUGljZVRmdE9QL05N?=
 =?utf-8?B?MFltQU1KWDNnVUtyNlByUFJib0tRRGNKRnVxeVNGOStobll5cFZjVTlXVUQ2?=
 =?utf-8?B?cVNCZk9QUjUyaDJ2dnhXOFNnWWc4ZzltYWd3OXErRlRUMXpHQnM0UGNlMXF2?=
 =?utf-8?B?djVJTTNVN3JmRXRCRHFuZ280OFRsaWpqb2FoT080WEFndDR5elIwaEdidmNx?=
 =?utf-8?B?Qm1iMXp0NVZZb0Q0OFVRTnVBWFUzOWJEWnAraW5UdUtqZjJlMGJ5alVVQTEw?=
 =?utf-8?B?Y0NXaVYzOUpGc01vODRRRmU0M2JKMTJvbmRZaDR6amRPMlg3UThGU2lTNHN2?=
 =?utf-8?B?R1FXK1lJdy9kZkNibDYzWkhMRVp4UFAwb25iMW4yeXRUelZieStuTTB0cTVM?=
 =?utf-8?B?NjY4NzFhSzlzN2VaMlRxTXhZOTduRmUzbGVMRFdsM1FHVXo0RnMwZmR6VnhM?=
 =?utf-8?B?R1dGWmc2QUZndWU5TVVWdHZNM3VKRlhTRU4xYTBLOVRubEQzTnJlQkhmOHlG?=
 =?utf-8?B?eUxrYlczQUQyeDErRFBKbVpGSThNKzVoOGJWbHplN3pKNHlQcHJYa1BZTEUx?=
 =?utf-8?B?ZW9wdU1mQk5La2JkK3lyQlM4ZmN2dUxVcDFmaVR0QUZxQjJxS0w3amFVN1V1?=
 =?utf-8?B?b09TdDBUcnVUcjlMUGFubFZkTVloWmc0UDkydzduekFlamRwK2h0Y1A5UFhl?=
 =?utf-8?B?MzFENEJaOXVkRUQzNTY3MEhvV1EvYU03V01JS1lEbVlNeWtIam1rRDRuVmJp?=
 =?utf-8?B?TndEK1k4eThUS1BjMG5YaW1GTmw1M3Z2RkpRcjRRVzV3WGQwRE04UUNpY3RR?=
 =?utf-8?B?eTFnMHpkV1VrNzhIZzJFZnZPSzJTVVFTbnAwYWwxQStHdjFTQ29CaTJYeHd0?=
 =?utf-8?B?Tk1WZkhsMjdrVmc1YkdtdjZCbkxHcFlIZEFBVmJ1VHN4RWt1TXdCVkRzZU5V?=
 =?utf-8?B?aVF3VmVaOEJXc0IzWFYzcjZLdWJjbGNBUXo0OVFaT0JzOHM3aGt2ZWJSd1FG?=
 =?utf-8?B?MGlzV3BMVVRnY2ZZcVhleGhkUk9EUTk0ZmpCMXRKUG5PU0ZXQzFUT2FqdDJt?=
 =?utf-8?B?MVZxZ0V2ZDdiNjFZcWlyWnRWVUtmTlE4Mmt5V3NQUldrVFd2K1I2Z3Nwb0xW?=
 =?utf-8?B?dkZ4bUxpeXdtOXo2QUZCWTJLYVM2WDRXOGJnTm9qTGJLVDBEaG81cUVITjQ5?=
 =?utf-8?B?eUtEYlZBSHVLY0RwV0g0SkdUVnhic1VQQnV4VUpFSHIrQWUrbUdWVXdyQWNx?=
 =?utf-8?B?MGlQV0JGaUVsclRMVGs4cGpYK0JySmFwRldydkllelQ5N3EvajMvUitqTVpB?=
 =?utf-8?Q?mWE5g+TJ6yt6tiU4=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 940a2ded-91ab-4f1b-fe0e-08df3e6d76c2
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 14:26:37.5483
 (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: ioKcn80ftwPd8hwwnEkfW003wWyQd6maZ7ttT6KIfZUrPBNTDZc8I3N5uleVTeS6Q/slC6FIHpy8MnySVd6n7+ER0wnPtezjky7mLEfmaQk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSSPR03MB989189
X-purgate-ID: tlsNG-4011c0/1794234401-4B2D8CFC-940FA80F/0/0
X-purgate-type: clean
X-purgate-size: 3278

On 11/5/26 1:33 AM, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Update SVM VMCB with AVIC-related data types as per [1].
> 
> Install AVIC backing page and logical/physical APIC ID tables mappings
> into VMCB.
> 
> Set VMCB 'avic_enable' bit to 1 in case of successful initialization.
> 
> [1] AMD APM Volumes 1-5 "15.29 Advanced Virtual Interrupt Controller".
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>   xen/arch/x86/hvm/svm/avic.c | 110 ++++++++++++++++++++++++++++++++++++
>   xen/arch/x86/hvm/svm/avic.h |   3 +
>   xen/arch/x86/hvm/svm/vmcb.c |   7 +++
>   xen/arch/x86/hvm/svm/vmcb.h |  19 +++++--
>   4 files changed, 135 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
> index 2c0e113ae34e..bc98661a7057 100644
> --- a/xen/arch/x86/hvm/svm/avic.c
> +++ b/xen/arch/x86/hvm/svm/avic.c
> @@ -9,6 +9,16 @@
>   #include <xen/param.h>
>   
>   #include "avic.h"
> +#include "vmcb.h"
> +
> +#define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK        GENMASK_ULL(51, 12U)
> +#define AVIC_PHYSICAL_ID_TABLE_SIZE_MASK                (0xFFULL)
> +
> +/*
> + * For AVIC, the max index allowed for physical APIC ID table is 0xfe (254), as
> + * 0xff is a broadcast to all CPUs, i.e. can't be targeted individually.
> + */
> +#define AVIC_MAX_PHYSICAL_ID                            (0xFEU)
>   
>   bool __read_mostly svm_avic_enable;
>   
> @@ -125,6 +135,106 @@ void svm_avic_domain_relinquish_resources(struct domain *d)
>       }
>   }
>   
> +static bool avic_vcpu_supported(struct vcpu *v)
> +{
> +    struct domain *d = v->domain;
> +    unsigned int id;
> +
> +    if ( !svm_avic_enable || !has_vlapic(d) )
> +        return false;
> +
> +    if ( d->max_vcpus * 2 >= AVIC_PHYSICAL_ID_TABLE_SIZE_MASK )
> +    {
> +        gprintk(XENLOG_WARNING,
> +                "%pv: AVIC: unsupported domain max_vcpus %u\n",
> +                v, d->max_vcpus);
> +        return false;
> +    }
> +
> +    id = GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID));
> +    if ( id > AVIC_MAX_PHYSICAL_ID )
> +    {
> +        gprintk(XENLOG_WARNING,
> +                "%pv: AVIC: unsupported APIC ID %u\n",
> +                v, id);
> +        return false;
> +    }
> +
> +    return true;
> +}
> +
> +static void avic_vcpu_enable(const struct vcpu *v, bool enable)
> +{
> +    const struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    struct vmcb_struct *vmcb = sv->vmcb;
> +
> +    vmcb->_vintr.fields.x2avic_enable = 0;
> +    vmcb->_vintr.fields.avic_enable = enable;
> +    vmcb->cleanbits.avic = 0;
> +
> +    printk(XENLOG_INFO
> +           "%pv: AVIC: %s: apic_id=%#x avic_physical_id=%#"PRIx64" max_vcpus=%u\n",
> +           v,
> +           enable ? "enable" : "disable",
> +           GET_xAPIC_ID(vlapic_reg_read(v, APIC_ID)),
> +           sv->avic_physical_id ? ACCESS_ONCE(*sv->avic_physical_id) :
> +                                  0xDEADDEADUL,
> +           v->domain->max_vcpus);
> +}

This is called from svm_avic_vmcb_destroy() which may be called after
domain_relinquish_resources(). Dereferencing avic_physical_id hits a page
fault since the page is already unmapped by then.

Ross


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:34:26 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:34:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480181.1684143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQRy-00005C-TF; Mon, 09 Nov 2026 14:34:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480181.1684143; Mon, 09 Nov 2026 14:34:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQRy-000050-PU; Mon, 09 Nov 2026 14:34:22 +0000
Received: by outflank-mailman (input) for mailman id 1480181;
 Mon, 09 Nov 2026 14:34:21 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <jgross@suse.com>) id 1xQQRw-00004u-S2
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:34:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQRw-007wdD-8c
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:34:20 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d9e5-e002-0a2a0a5209dd-0a2a4509e4a6-26
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:34:20 +0100
Received: from [195.135.223.131] (helo=smtp-out2.suse.de)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <jgross@suse.com>)
 id 6af1d9eb-be1a-0a2a45090019-c387df83b35e-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:34:20 +0100
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id A23FF1F7D3;
 Mon,  9 Nov 2026 14:34:19 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 51F6B13302;
 Mon,  9 Nov 2026 14:34:19 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id yZQpCuvZ8WpVbwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 09 Nov 2026 14:34:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"; dkim=pass header.s=susede1 header.d=suse.com header.i="@suse.com" header.h="From:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References:Autocrypt"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794234859; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=sbQeRA9CyuaW6m9In+TZM2sSG7ONA1E5yT6bD+DtiWs=;
	b=k+Pct609C3thKWd/TrGv4fpsQaihxAd1Cij5SQgzB7EEs73bvNTuCSXFQub6S/mYLNIaRS
	xm9NkjKcjgvmYCHIMdbL+wSh5X6mNBXdQf03IC303CPD+VaoyXQ14+zn5uCFvJkb1nJd4i
	d+blGkSZ8VeV01T0P6iFKhtLLxrYcF8=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1794234859; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=sbQeRA9CyuaW6m9In+TZM2sSG7ONA1E5yT6bD+DtiWs=;
	b=k+Pct609C3thKWd/TrGv4fpsQaihxAd1Cij5SQgzB7EEs73bvNTuCSXFQub6S/mYLNIaRS
	xm9NkjKcjgvmYCHIMdbL+wSh5X6mNBXdQf03IC303CPD+VaoyXQ14+zn5uCFvJkb1nJd4i
	d+blGkSZ8VeV01T0P6iFKhtLLxrYcF8=
Message-ID: <70378f23-69f3-4bb0-885e-54c29daa6ddf@suse.com>
Date: Mon, 9 Nov 2026 15:34:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/privcmd: fix double free when an irqfd is shut down
 twice
To: Qihang <q.h.hack.winter@gmail.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Viresh Kumar <viresh.kumar@linaro.org>, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
References: <20261101163251.55099-1-q.h.hack.winter@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261101163251.55099-1-q.h.hack.winter@gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------irHP4tZJaDGSfvWack0JzJWj"
X-Spamd-Result: default: False [-8.33 / 50.00];
	SUSE_INTERNAL_BYPASS(-9.00)[];
	NEURAL_SPAM_LONG(3.46)[0.989];
	BAYES_HAM(-3.00)[100.00%];
	SIGNED_PGP(-2.00)[];
	SUSPICIOUS_RECIPS(1.50)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	XM_UA_NO_VERSION(0.01)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	ARC_NA(0.00)[];
	FREEMAIL_TO(0.00)[gmail.com,lists.xenproject.org];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:~];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RCVD_TLS_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	TAGGED_RCPT(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[7];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -8.33
X-Spam-Level: 
X-Spam-Flag: NO
X-purgate-ID: tlsNG-bad1c0/1794234860-BDEC6034-7568A9BD/35/110847
X-purgate-type: clean
X-purgate-size: 7756

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------irHP4tZJaDGSfvWack0JzJWj
Content-Type: multipart/mixed; boundary="------------LJdOSRNSFiDYYnLxyVj8lk7L";
 protected-headers="v1"; hp="clear"
Message-ID: <70378f23-69f3-4bb0-885e-54c29daa6ddf@suse.com>
Date: Mon, 9 Nov 2026 15:34:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/privcmd: fix double free when an irqfd is shut down
 twice
To: Qihang <q.h.hack.winter@gmail.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Viresh Kumar <viresh.kumar@linaro.org>, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
References: <20261101163251.55099-1-q.h.hack.winter@gmail.com>
Content-Language: en-US
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <20261101163251.55099-1-q.h.hack.winter@gmail.com>

--------------LJdOSRNSFiDYYnLxyVj8lk7L
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDEuMTEuMjYgMTc6MzIsIFFpaGFuZyB3cm90ZToNCj4gaXJxZmRfZGVhY3RpdmF0ZSgp
IHRha2VzIHRoZSBpcnFmZCBvZmYgaXJxZmRzX2xpc3QgYW5kIHF1ZXVlcw0KPiBpcnFmZF9z
aHV0ZG93bigpLiAgcXVldWVfd29yaygpIGlzIG5vdCBhIG9uY2Utb25seSBnYXRlOiBpdCBy
ZWZ1c2VzIHRvDQo+IGVucXVldWUgYSB3b3JrIGl0ZW0gb25seSB3aGlsZSBXT1JLX1NUUlVD
VF9QRU5ESU5HIGlzIHNldCwgYW5kDQo+IHByb2Nlc3Nfb25lX3dvcmsoKSBjbGVhcnMgdGhh
dCBiaXQgYmVmb3JlIGl0IGNhbGxzIHRoZSB3b3JrIGZ1bmN0aW9uLiAgU28NCj4gbm90aGlu
ZyByZWNvcmRzIHRoYXQgdGhlIHNodXRkb3duIHdvcmsgaGFzIGFscmVhZHkgYmVlbiBxdWV1
ZWQsIGFuZA0KPiBub3RoaW5nIHByb3RlY3RzIHRoZSB3aW5kb3cgYmV0d2VlbiB0aGUgc3Rh
cnQgb2YgaXJxZmRfc2h1dGRvd24oKSBhbmQgdGhlDQo+IGtmcmVlKCkgYXQgaXRzIGVuZC4N
Cj4gDQo+IFR3byBwYXRocyBjYWxsIGlycWZkX2RlYWN0aXZhdGUoKSBmb3IgdGhlIHNhbWUg
aXJxZmQ6DQo+IA0KPiAgICAtIHByaXZjbWRfaXJxZmRfZGVhc3NpZ24oKSwgZnJvbSB0aGUg
UFJJVkNNRF9JUlFGRF9GTEFHX0RFQVNTSUdOIGlvY3RsOw0KPiANCj4gICAgLSBpcnFmZF93
YWtldXAoKSwgd2l0aCBFUE9MTEhVUCBzZXQsIHdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIHRv
IHRoZQ0KPiAgICAgIGV2ZW50ZmQgZmlsZSBnb2VzIGF3YXksIHdoaWNoIHJ1bnMgd2FrZV91
cF9wb2xsKCZjdHgtPndxaCwgRVBPTExIVVApDQo+ICAgICAgZnJvbSBldmVudGZkX3JlbGVh
c2UoKS4NCj4gDQo+IGlycWZkc19sb2NrIHNlcmlhbGlzZXMgdGhlIHR3byBjYWxscywgYnV0
IGl0IGRvZXMgbm90IG1ha2UgdGhlIHNlY29uZCBvbmUNCj4gYSBuby1vcCwgYW5kIGV2ZW50
ZmRfY3R4X2ZkZ2V0KCkgdGFrZXMgYSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50ZmRfY3R4LA0K
PiBub3QgdG8gdGhlIHN0cnVjdCBmaWxlLCBzbyB0aGUgbGFzdCBmZCBjYW4gc3RpbGwgYmUg
Y2xvc2VkIHdoaWxlIHRoZQ0KPiBpb2N0bCBpcyBydW5uaW5nOg0KPiANCj4gICAgQ1BVMCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVTENCj4gDQo+ICAgIGV2ZW50ZmRf
Y3R4X2ZkZ2V0KCkNCj4gICAgc3Bpbl9sb2NrKGlycWZkc19sb2NrKQ0KPiAgICBsaXN0X2Rl
bF9pbml0KCZraXJxZmQtPmxpc3QpDQo+ICAgIHF1ZXVlX3dvcmsoJmtpcnFmZC0+c2h1dGRv
d24pICAgICAgICBjbG9zZShmZCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnRmZF9yZWxlYXNlKCkNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3YWtlX3VwX3BvbGwoRVBPTExIVVApDQo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlycWZkX3dha2V1cCgpDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fbG9jayhp
cnFmZHNfbG9jaykNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXJxZmRfZGVhY3RpdmF0ZSgpIGFnYWluDQo+IA0KPiBJZiB0aGUgd29yayBpdGVtIGhh
cyBhbHJlYWR5IHN0YXJ0ZWQgYnkgdGhlbiwgaXRzIHBlbmRpbmcgYml0IGhhcyBiZWVuDQo+
IGNsZWFyZWQgYW5kIHRoZSBzZWNvbmQgcXVldWVfd29yaygpIHN1Y2NlZWRzLiAgaXJxZmRf
c2h1dGRvd24oKSB0aGVuIHJ1bnMNCj4gdHdpY2UsIHNvIGV2ZW50ZmRfY3R4X3JlbW92ZV93
YWl0X3F1ZXVlKCksIGV2ZW50ZmRfY3R4X3B1dCgpIGFuZCBrZnJlZSgpDQo+IGVhY2ggaGl0
IHRoZSBzYW1lIG9iamVjdCBhIHNlY29uZCB0aW1lOyBhbmQgd2hlbiB0aGUgc2Vjb25kIHF1
ZXVlX3dvcmsoKQ0KPiBsYW5kcyBhZnRlciB0aGUgaXJxZmQgaGFzIGJlZW4gZnJlZWQsIHRo
ZSB3b3JrcXVldWUgbGlzdCBvcGVyYXRpb25zIHdyaXRlDQo+IHRvIGZyZWVkIG1lbW9yeS4N
Cj4gDQo+IHZpcnQva3ZtL2V2ZW50ZmQuYyBoYXMgdGhlIHNhbWUgdHdvIGNhbGxlcnMgYW5k
IGhhcyBoYWQgdGhpcyBndWFyZCBzaW5jZQ0KPiB0aGUgb3JpZ2luYWwgaXJxZmQgc3VwcG9y
dCAoNzIxZWVjYmY0ZmU5OSk6IGlycWZkX3dha2V1cCgpIGNhbGxzDQo+IGlycWZkX2RlYWN0
aXZhdGUoKSBvbmx5IGlmIGlycWZkX2lzX2FjdGl2ZSgpLiAgVGhlIGNvbW1lbnQgdGhlcmUg
ZXhwbGFpbnMNCj4gd2h5IHRoYXQgaXMgZW5vdWdoOiB0aGUgb3RoZXIgc2lkZSBkZWFjdGl2
YXRlcyB0aGUgaXJxZmQgYmVmb3JlIGl0IHRha2VzDQo+IGl0IG9mZiB0aGUgd2FpdHF1ZXVl
LCBhbmQgaXJxZmRfc2h1dGRvd24oKSBuZWVkcyB0aGUgd2FpdHF1ZXVlIGxvY2ssDQo+IHdo
aWNoIHRoaXMgY2FsbGJhY2sgaG9sZHMsIHNvIHRoZSBpcnFmZCBjYW5ub3QgYmUgZnJlZWQg
dW5kZXIgaXQuDQo+IA0KPiBEbyB0aGUgc2FtZSBoZXJlLiAgbGlzdF9kZWxfaW5pdCgpIGxl
YXZlcyB0aGUgbGlzdCBoZWFkIGVtcHR5IGFuZCB0aGUNCj4gaXJxZmQgc3RheXMgb2ZmIHRo
ZSBsaXN0IHVudGlsIGtmcmVlKCksIHNvIGl0IHNlcnZlcyBhcyBhIG9uZS13YXkNCj4gImFj
dGl2ZSIgZmxhZy4gIFRoZSB0ZXN0IGlzIGluIGlycWZkX2RlYWN0aXZhdGUoKSByYXRoZXIg
dGhhbiBpbg0KPiBpcnFmZF93YWtldXAoKSBiZWNhdXNlIHByaXZjbWRfaXJxZmRfZGVhc3Np
Z24oKSB3YWxrcyBpcnFmZHNfbGlzdCBhbmQgY2FuDQo+IHRoZXJlZm9yZSBuZXZlciByZWFj
aCBhbiBpbmFjdGl2ZSBpcnFmZDsgb25seSB0aGUgd2FrZXVwIHBhdGggY2FuLCBhbmQgYQ0K
PiBzaW5nbGUgdGVzdCBjb3ZlcnMgYm90aCBjYWxsZXJzLg0KPiANCj4gRml4ZXM6IGY4OTQx
ZTZjNGM3MTIgKCJ4ZW46IHByaXZjbWQ6IEFkZCBzdXBwb3J0IGZvciBpcnFmZCIpDQo+IENj
OiBzdGFibGVAdmdlci5rZXJuZWwub3JnDQo+IFNpZ25lZC1vZmYtYnk6IFFpaGFuZyA8cS5o
LmhhY2sud2ludGVyQGdtYWlsLmNvbT4NClJldmlld2VkLWJ5OiBKdWVyZ2VuIEdyb3NzIDxq
Z3Jvc3NAc3VzZS5jb20+DQoNCg0KSnVlcmdlbg0K

--------------LJdOSRNSFiDYYnLxyVj8lk7L--

--------------irHP4tZJaDGSfvWack0JzJWj
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmrx2eoFAwAAAAAACgkQsN6d1ii/Ey9l
Owf9FQNftOSZW39cuV9bYiEP5AmoSV//5Nkl6+r6jVT3XLCjqeoWLU156ftxZf/byLZ14sw3Spvc
n/wFPPXrVNoJ/a/W/Mr5X7POz7T51t4hbVQkeoXNwuYVO7Gz0s58WMpMvTUadhl5lDMEX+8ZaWst
icXUYy/yVUNwpJbwdT42c3Wxfli2S3NDT2XwJMTTxPoaBxh/7C0cLt691QohbzHwYMsu2HEhJdWa
oLoyb13btCEoORLJLaZNK4ZP/4YwIaYZ+Ede4eAquCGzPELJiBfMCUJSA27loSwS+3AWL+huF2O3
PEEmw47nxrfvYrsRG43UVEoXoaPMKxwllJcMrVv6Kw==
=mh3Z
-----END PGP SIGNATURE-----

--------------irHP4tZJaDGSfvWack0JzJWj--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:37:58 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:37:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480190.1684151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQVP-0000ge-Ef; Mon, 09 Nov 2026 14:37:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480190.1684151; Mon, 09 Nov 2026 14:37:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQVP-0000gX-Ba; Mon, 09 Nov 2026 14:37:55 +0000
Received: by outflank-mailman (input) for mailman id 1480190;
 Mon, 09 Nov 2026 14:37:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Michal.Orzel@amd.com>) id 1xQQVN-0000gF-LD
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:37:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQVM-0037fV-Qz
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:37:52 +0100
Received: from [10.42.69.12] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1daad-8faa-0a2a0a5109dd-0a2a450c9fba-48
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:37:52 +0100
Received: from [52.101.201.24]
 (helo=PH7PR06CU001.outbound.protection.outlook.com)
 by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Michal.Orzel@amd.com>)
 id 6af1dabe-f479-0a2a450c0019-3465c9180c39-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:37:52 +0100
Received: from SJ0PR03CA0173.namprd03.prod.outlook.com (2603:10b6:a03:338::28)
 by SA1PR12MB999084.namprd12.prod.outlook.com (2603:10b6:806:4a1::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 14:37:46 +0000
Received: from BY1PEPF0001AE17.namprd04.prod.outlook.com
 (2603:10b6:a03:338:cafe::a5) by SJ0PR03CA0173.outlook.office365.com
 (2603:10b6:a03:338::28) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.21.496.5 via Frontend Transport; Mon, 9
 Nov 2026 14:37:46 +0000
Received: from satlexmb07.amd.com (165.204.84.17) by
 BY1PEPF0001AE17.mail.protection.outlook.com (10.167.242.107) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.21.615.4 via Frontend Transport; Mon, 9 Nov 2026 14:37:45 +0000
Received: from satlexmb07.amd.com (10.181.42.216) 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.53; Mon, 9 Nov
 2026 08:37:45 -0600
Received: from [192.168.31.141] (10.180.168.240) by satlexmb07.amd.com
 (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.53 via Frontend
 Transport; Mon, 9 Nov 2026 08:37:43 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.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=LjQnjGCM8it9HprfObV4LSkQXVaaEsyYNET0rr8DOOz+HE4CBhJJlNFv22BLyRuUS+67M6FE3TsPq9R/h/6ncWC+pBA6keFMlEZQ+v55L1tLok3AzlWQzb8/6cFvGfjQadgHLtfENAMTmXwAs3BBWUuBxwwdOspEBW0ycKiWt04Ng4fjo7KRpOtC5N/1FI8AkpXGi+qMRPpEe5t6Tq/E8AuHbSy6/CwIsDs9ecKMfCpPmGBTKvMx/BzjKIpixy8DkS/Olq26Ccl9/tYC2tKjm4Oyd4V6VUcxDob3EP3UvXbGnw1e3Ys1ZnEfmXHdWimEtZgEAwfSPBCNmAeZiAE8Qg==
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=BIZU04lTnhq7EXyrBoEjHzWp+Bt1aT/8gZ7UOoxj/X0=;
 b=IE55ZUF1Qz4LUMCYvEOly2Q1q9O3SsWgl+2ByKlvLVFF1vy9JhS42z5pGHmDWNiw/wFiwZOON45Bqh0I9FLhNFkKef66t5jUf+ef01+2tlE4dpUq2RRCoor8koQWQqSjmjnjwQ4xE2bpYXi9YDQMhm1I0VEV5zjyT2spmW/apizoJx9WFY/htWNV0RWBXYYlnF9rRCcL32ffdwgWqz1+loYqT7tAE9vxSldBPqd4J2+ceOeEf/ZCH3+1YM8W7GZrUdEKm+GOfmigbull+ADrUWTZi7noAKF5U784Fw5lOlsWXQ8OnvFbrAvbv7MJpYEQukIpaIxcIogAhNyUt5UNug==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=BIZU04lTnhq7EXyrBoEjHzWp+Bt1aT/8gZ7UOoxj/X0=;
 b=W+AT7qAprigKb83GVRMcNL8mKfpjOBqWooZs3Gr+4rrZ/bKRmnqL0w4Cb17Ij2DThUwcoYmGJuf+UqXEAghXoVTQOLzxnMQakg/vtb9+DxCsE27qHN9YmyvsYzomDHhrxCOcernU5avYQyzxeeeqnFBs78t/J7XKz/j9XdLogkI=
X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; 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
Message-ID: <e58463ae-40a7-45ed-8e53-bfb26e7d259c@amd.com>
Date: Mon, 9 Nov 2026 15:37:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arch/arm: Correcting comment typos across
 xen/arch/arm
To: Andrew Precious <andrewprecious388@gmail.com>
CC: <xen-devel@lists.xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Jens Wiklander <jenswi@kernel.org>
References: <20261105112627.235207-1-andrewprecious388@gmail.com>
 <c5cdef09-08da-426a-b005-d73112c6b9b1@amd.com>
 <CAF14T9k4nz5gdz2jvRGZ7b7Ju2nJqzETmRHr6boAZFHHpGg1BQ@mail.gmail.com>
From: "Orzel, Michal" <michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <CAF14T9k4nz5gdz2jvRGZ7b7Ju2nJqzETmRHr6boAZFHHpGg1BQ@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE17:EE_|SA1PR12MB999084:EE_
X-MS-Office365-Filtering-Correlation-Id: 6f97c3ef-f542-4db5-dbff-08df3e6f0543
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|23010399003|36860700016|82310400026|10067099003|11063799006|4143699003|56012099006|261022105027099003|261026140227099003|261026121527099003|261028144727099003|18002099003|22082099003;
X-Microsoft-Antispam-Message-Info:
	DpPgbCp+PNauLc2/sSKzXISpfiPKm51K0XB+1niJPTo4Q8dnkJuQIXluX62ryFRKdgSo0k1sEB0tNkczvxEKbuXN56WwYfHepzKsEr3HK2qnTblCu1ksfztSCuxirzNkM/OvxzYWE/iYfHx58eJzLUgqGPT8b7Hsbmr+608yz2gAD05023UrlHvqL740ZESFBXigwAYGe0Go0aOLDSytrgZJkZ69LgzV5d0GS9vETzbtzvna/aQGQreElehDAjjnBM2GZfFq2T4tlzMLGTnC1Omdc5y+T4OBubNFMtHnNSZMByttWqi1t41JksbzY9hE/hf/8cCJp+gDiMPA8iyDLGV/D1OsVCxvqoPCc7UvvubeX5QF5wEHY7x9gAwWxYYmQuxZs1L6wSbP7d2oQNzaIMTIJEZq2gTw5OUcVTLISgOD/mfkDlffX70hsglx1BgZaN3OHeKD51cs9dBb+cSQ6MPnamywOGLxBHP0AHmnxyueKo9wTd754JKgCScOkVe9sMIVmXL8283kSxfh+1YQAcHsBazM+YSZ4bmWIVj6X1pfd7DV7eLAWDVE7+dEVqEQBUvLJHyHOkoaBNMoMr3k5hAQ62UAEqedJGuC/lCJaHEBuswC251vT/7/r0wBjss2FmAsq9QsnKyJjU6ZSbK/FOcCETZE6Pu7g7tnuMQgcjt1qVI7u0OFfjkPfWxZwEsIgMPWHWiXZ01SnsJyB7pJuQ==
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)(376014)(23010399003)(36860700016)(82310400026)(10067099003)(11063799006)(4143699003)(56012099006)(261022105027099003)(261026140227099003)(261026121527099003)(261028144727099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	TlxoAqcH4g/5n6d+YVnAbMTBUmgazLqS15mJUkNo2HRyil4yjd1gBuK1DmoROqkVdgCkwByB//0AID20q64Ir7I09KCifN3Dmt3JWMBaOgYr3XvfeYP0uNoFQ6x4CVSfD7UYasLyCxsrs8nFCjF8syKwsKfh/++Cvm47QMBUzpcoFGs4vwYUQNJnoN0sjpYuhTW/r5hvBRT43GjIkgMQEVOvPr2xI+FaaZqqz7y6G8vkewD3MF2+Yp4YOrF2DVWjCm9oox8AuTqz0m+4pWbovTEtTddNXKKyhGMKI2qsE0uxgjWBvUaWq0EzWJsydBSVO/7tdoCHRAd9mIt21N5n6qq+E1DCvbZRw/Z/TGy4Dauo2WTmo3GrF8ss84ib807sQH8UOeJQ8aEjo1qSMAN1FSL320z2/G51TONK2yzhUew7t0MsSRVAqSBjkfCj+KfP
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 14:37:45.9248
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f97c3ef-f542-4db5-dbff-08df3e6f0543
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:
	BY1PEPF0001AE17.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB999084
X-purgate-ID: tlsNG-d25034/1794235072-51538A5B-06C6990A/0/0
X-purgate-type: clean
X-purgate-size: 1948



On 09-Nov-26 12:49, Andrew Precious wrote:
> Thanks for response
> 
>> Scanning Xen using codespell for typo matches I have found:
>> 1. Xen native project sources: 3303 typos
> Is this hypervisor only or entire Xen repo?
> 
> Entire Xen project repo - 3303 typos
> Hypervisor code only has - 351 typos
That's good and hypervisor code is what I would start with...

> 
> However the scanner can be tweaked to ignore/include areas
> such as code pulled from linux source trees and 3rd party stubdoms.
... having this in mind i.e. we don't want to modify files for which we first
require a submission to the relevant project and then to backport the patch to Xen.

~Michal

> 
> On Mon, Nov 9, 2026 at 10:28 AM Orzel, Michal <michal.orzel@amd.com
> <mailto:michal.orzel@amd.com>> wrote:
> 
> 
> 
>     On 05-Nov-26 12:26, Andrew Mbugua wrote:
>     > No functional change.
>     >
>     The below text should be put after "---", given that this is not the information
>     that should end up in a committed patch.
> 
>     > I have been making typo corrections across a variety of files
>     >
>     > Scanning Xen using codespell for typo matches I have found:
>     > 1. Xen native project sources: 3303 typos
>     Is this hypervisor only or entire Xen repo?
> 
>     > 2. Qemu Tree - 4908 typos
>     >
>     > Reasons for corrections:
>     > 1. Keeping the codebase clean,concise for future documentation generation
>     > 2. Just because typos seem minor doesnt mean that corrections should be
>     ignored,
>     > while correcting these errors may not be pedantic I think its essential in
>     > keeping things claan and more readable.
>     I don't mind patches like this one, so thanks for the contribution:
>     Reviewed-by: Michal Orzel <michal.orzel@amd.com <mailto:michal.orzel@amd.com>>
> 
>     I'll do the commit msg adjustment when committing.
> 
>     ~Michal
> 



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:40:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:40:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480196.1684160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQXa-0002Ml-Qn; Mon, 09 Nov 2026 14:40:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480196.1684160; Mon, 09 Nov 2026 14:40:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQXa-0002Md-Ni; Mon, 09 Nov 2026 14:40:10 +0000
Received: by outflank-mailman (input) for mailman id 1480196;
 Mon, 09 Nov 2026 14:40:10 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQQXa-0002MS-6P
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:40:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQXZ-009pff-8A
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:40:09 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1db47-8faa-0a2a0a5109dd-0a2a4506b8da-6
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:40:09 +0100
Received: from [209.85.128.47] (helo=mail-wm1-f47.google.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1db49-195a-0a2a45060019-d155802fade0-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:40:09 +0100
Received: by mail-wm1-f47.google.com with SMTP id
 5b1f17b1804b1-4b79502c27aso9835615e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 06:40:09 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b7efb0d7a7sm231633855e9.9.2026.11.09.06.40.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 06:40:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794235208; x=1794840008; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=l3ucCX7WTiep3oeA6fzEc1EUZZTClmyuuB1UgYYrLbA=;
        b=QeXwkVxMwyZbH8Dl9gWcuR96ZfQdhztTj39SZGquxKZWJoODpRXu4cvHdAiZBdhPLI
         uTo1pZGdyN4JiKbclGeniR5KP5eRXDq0NWojxhvEeOVVRVhQvWXJDKc3RV5omxkv5j6B
         ePdoGgDHy+13FYHEnV44NtikFU6gd+mZ5oo79Yz9J9RSPDazLqxw5CrfnsyuxlWGlTY/
         6ZuSFzUNGtQwzIovPd0lFHO0lQo1bzXN2lkyH0ByXXAx52UAzk8A9kh9qvW7OOg+CsO3
         UgSku0afmGdwugMK5WLGIychVddSz/Rr7bVF4k43YKbfudRwOgFu3i8gvmxRrpKIqQvl
         c7qQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794235208; x=1794840008;
        h=content-transfer-encoding:content-type:in-reply-to:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=l3ucCX7WTiep3oeA6fzEc1EUZZTClmyuuB1UgYYrLbA=;
        b=N1ZuRxuIardu7VeBsDbVct9Ui0BnAFZGDLItP/uldhzoNt0D3+YulvFMO6wF8c0HAI
         9Vl0edSeqP9U1/B/rq3DJNUEVJg/RaGoLbIpiwfJJYY+KoCA1wM9qEvY8ARgYmiRzwir
         dX/qymba1gsJfTn0WWVtG8qFRTwsBLnJeY+GNqQfKVXTFrYLiS57OJDPToRmcCrkpT1U
         1Y+xEh11dQWu86IlVIsxk08rZGKZTrFnfX7H/G/ThkdvTI0+nFo86GUOhkiFbm6Dt03K
         AS4QzypzGEz47Ci48lS94niNr6kMM2SLDNdu0KccYEQJ+UrzPIKJOIpqcSQkUwkkw+xS
         uW+w==
X-Gm-Message-State: APuU4Z9MD5XMfhYd9D+N5rUJzsgyhCP8zsujFomVKfQPfudJLKU85ewj
	enY56pMQtWKWQJHYkWCYXHug93wcXFhRp+fgIcJczedwFGw1h1zn5ef0
X-Gm-Gg: AYBFou3i0FXK74uigfpJjsz1q6AkT+fLFpPt7I1rAU0C3M/JePUg82i8epmZpS14VVO
	VofZdHwqI55ZxgkKW6QHl6I9nJMD0NkS+ctO+nyKH21b+YtE78agU3tz9zqbqwLpPATCZIO6YV/
	VMR8FZOYy8j2NIRDWDc9+TjJA2X7xZKUz2j8VYfba/Mk28X+Pj2Rzqfkzkot4oA49Ye1JMgfuv5
	jdt/afKM7xLYNdqo0p443PqKKEruTeZkVAvzihmXFyMM0FBpKLWn8T8Jh++HseXvjMlzwYkJwQG
	eycwF1k8aQwim2xBcSREtjJPAYr94HycHIaDUZkpTUqcjySXa1nX6KZWfyQVbu1ZQ4ZPKGJe8QN
	RqLlV8dANfUgIlQ7UB+VcLAo8ZEazIaf3ubEbmycbstujiCsa3mVb8nypXl96EdmVHaSIvgoR17
	NKE9EE/jVaTvOge7FwQWVNlcKHQut59WRZILnBWhNZ3WIhNeh/Bp0CaA4BYFuICrLeW32gmeFk+
	GjbQjO/mUgq4U5tCCgJ1DQg2GuxCKOweG4sPyFMva1g7f+NdW3bc8FrNmoSat8Gi18BRoCCRQm9
	WwfcznQ8FvGCURXKvIUgDB6P0mrlkW9KYlEEi7HnbAou4qKS4clCDeegly1Q4agIWeMyLLqrIa7
	JPA==
X-Received: by 2002:a05:600c:3107:b0:4b6:540d:6317 with SMTP id 5b1f17b1804b1-4b960da5deamr80806015e9.12.1794235208469;
        Mon, 09 Nov 2026 06:40:08 -0800 (PST)
Message-ID: <2622fdc9-8242-4088-b0b9-c78d43ee8f1b@gmail.com>
Date: Mon, 9 Nov 2026 15:40:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/2] xen/riscv: skip disabled CPU nodes when probing
 ISA extensions
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
 <1794230641.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@vates.tech>
Content-Language: en-US
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
In-Reply-To: <1794230641.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@vates.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-16d1c6/1794235209-1FECC77B-1F3D8C39/10/73395122804
X-purgate-type: spam
X-purgate-size: 1734



On 11/9/26 2:23 PM, Baptiste Le Duc wrote:
>> riscv_fill_hwcap_from_isa_string() intersects the riscv,isa of every CPU
>> node under /cpus, including the ones with status = "disabled". Such a
>> hart is never used by Xen, yet it can still remove extensions from the
>> host ISA: e.g. a disabled hart without the H extension makes Xen panic
>> with "Xen requires extension: h", even though every hart Xen runs on
>> implements it.
>>
>> Skip CPU nodes which aren't available.
> 
> has_isa_extensions_property() still walks the disabled nodes, so the two
> loops over /cpus now disagree on which harts count. Rather than adding
> the check loop by loop, can we filter them in one place, e.g. with a
> dt_for_each_available_child_node() iterator, so no /cpus walk sees a disabled
> hart?
> 

I missed updating has_isa_extensions_property() because I had Cristian 
Andrei's patch in mind, which adds support for the riscv,isa-extensions 
property (the patch isn't published to ML). This function will be 
completely dropped as part of that work.

So, until that patch is published, it would probably be better to add an 
additional check to has_isa_extensions_property().

Regarding the question of whether to use 
dt_for_each_available_child_node(), I don't see many use cases for it 
beyond this particular one. There are also plenty of cases where it's 
perfectly fine for a node to be disabled and still parsed, so I'm not 
entirely convinced that we need this change now.

Let's just add an explicit check to has_isa_extensions_property() for 
now. Are you okay with that or still think it'll be better to introduce 
dt_for_each_available_child_node() specifically for this case?

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:52:33 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:52:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480206.1684169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQjS-0004Pa-T2; Mon, 09 Nov 2026 14:52:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480206.1684169; Mon, 09 Nov 2026 14:52:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQjS-0004PT-Pk; Mon, 09 Nov 2026 14:52:26 +0000
Received: by outflank-mailman (input) for mailman id 1480206;
 Mon, 09 Nov 2026 14:52:25 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1xQQjR-0004PN-EX
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:52:25 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQjP-00ESuu-Ll
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:52:23 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6af1de1e-2eae-0a2a0a5409dd-0a2a450a9110-12
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:52:23 +0100
Received: from [202.12.124.146] (helo=fout-b3-smtp.messagingengine.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6af1de25-f2d2-0a2a450a0019-ca0c7c92dd5b-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:52:22 +0100
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfout.stl.internal (Postfix) with ESMTP id 491C11D000E8
 for <xen-devel@lists.xenproject.org>; Mon,  9 Nov 2026 09:52:21 -0500 (EST)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Mon, 09 Nov 2026 09:52:21 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 9 Nov 2026 09:52:19 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm2 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm3 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1794235940;
	 x=1794322340; bh=ZLpsXXWL6+IxY/9EEYT/XhLy6j+mxHN18XE6OIHFJQM=; b=
	SJxLqwaNucKUCYO1qEzpZU+4QzYWf8szThRD2tYWzfSefemhLrSNVVAEhqHw3QO2
	ZvzgNKqtoA/0FVJiTG5h3Vice+CCxtxVRUHZ4CS5Rd6L4kFICf/x+hXeVvGiHNsp
	sRTVPS6qie82w8XfUJod4C3xYig7lKfqS9f1uuL8WAZxU6EELEp6RckpW9fjPLNB
	ZasNmF2pKHrB0MVDgKz2U0j1FPZgGJJbUrJZTeVp9Y+2EMtM3VhHAkHeOfBh/7Rz
	hfKsZVqm4oJg8K2yacpDh3yAVayuvCIoT3n3sEKh3KPMGVoqwBsIQhWnuEzYz6xB
	YqPHCQ4cKDL7bq/bM+Ngbg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=
	1794235940; x=1794322340; bh=ZLpsXXWL6+IxY/9EEYT/XhLy6j+mxHN18XE
	6OIHFJQM=; b=Q7ux24OkSbekt/H1shF+4YprEiW/SCLdw4mv59BqOHLgi3pweMO
	z/WiElqPw0lJ8NGD532F5UQfOsjH9MLOacJaPCylJOW5IMhmna3w9TMtfwzOIold
	2q10zAJoAXGOoqABDNzMN/9bHtuWbhbB37wPda+7tipRSNxiCbZad+DT/3LAA+Jt
	XrtdcAMu1l/UbdahKz8GMxTvpO9FeGOHq/viRKB4ptKKp+cxjmx6YczXRkVRZFo4
	L42sepAeY/bLlFD8M9FQAQMHW98jbk7vKIT0MK459kEUddjD4rlZauls1/KzWjoF
	rgaVs+35dIpb9LmuPoFYkrhpv/hPnL2RqlA==
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=sign d=invisiblethingslab.com a=rsa-sha256;
DKIM2-Signature: i=1; m=1; t=1794235940; d=invisiblethingslab.com;
	mf=PG1hcm1hcmVrQGludmlzaWJsZXRoaW5nc2xhYi5jb20+;
	rt=PHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4=;
	s=fm2:rsa-sha256:RMcr4mNZXyHQavKkX/vGZMSkJby+Pq5KdTUoM07nBNyIK54
	g7EdAtWuOnJe3H/M+hVdPBhQ91UyTp8mIjoIzExf79vyrX1Bv46NaaxpKsFK069G
	ZF5UCeWaO8Ne5vuKH+cQBrqDGNPmpLee1Ovp8q0Bri1KELKvc0eVYJgjFubYay1y
	VPvJ+lekp0tEcEVS8Mi2oad1mNFSydT3jF3HpICFY3/lhGehGdhGOB+ty7D0rBPp
	dkZg5O5HjVXBEbq9hjZ1HFINsWUp+T5apamLokxgRcb+5Z4cwwkKUQWDm+FYqhUb
	4iK9TOonXQwq9GanNYzr0WK3eOmEdthMMaGI1Fg==;
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=mi-m=1; hc=12;
	hn=cc,content-disposition,content-type,date,feedback-id,from,
	in-reply-to,message-id,mime-version,references,subject,to;
Message-Instance: m=1; h=sha256:e/4zs73J1X3pN1CbnbYjwURMR7hv9MVGZrblgOMhgic=:lRIo3dvOulfs0N7VdbozhmPgjeAtMiYS4GUpr1Mvax8=;
X-ME-Sender: <xms:JN7xaoEKSR4lZ9GXhXWv7OWN2ItQwxPAKErK_Fua5Um7ZH0k6C_e7A>
    <xme:JN7xajljQxCvvA2JMcQk28iGuUHMzlLEk62Mrd0Nn7ufieJCgSLLTdLb-ngn9HB3G
    yb7oXoBOrNG6H8xP2_TR8osBXRRfa12o9X4N8tKhGxT4L68Ryg>
X-ME-Received: <xmr:JN7xakZRpknQVN3wKdCqdDGOmyaodsRJSd62daRJC_3ZIlxH27F63ZyOJLcuIre2a_I4BLrxoPwAbGRwA_4DrCAsjvgWk1np50xER3zhCKo>
X-ME-Proxy-Cause: dmFkZTGAKBM1wXtterCMCKqOCPseJgEbF6lVSmDpVDO46aajt+l/2GeUuyrdt73vCAG+im
    m1e3MWkvOKXb0EVwdfE/zkJsCTxsybk7FxZE1Ap4JZ1dr/3a4NuZ/lN7EcV41DkSs0KLyF
    LMS5SXUrenqMF5Hqot4/7YD8tB24gS7QtFriSZdrHjNjIvXCF5JfzjEfqZMs4ciw1rFiDa
    LyXYf3fGv7XGMFNHu5jZzdLCx6XubBCK03PU0LuuS2hbHoql6Qzgh1ZxtPV/RdUrAkJ09O
    zsm0sEsJlO9jIY/ZSWE0LCu5PgFvnO/Cp3iGdNJ0ywGBB/wzWNYwAushxLHqzQZr9pY0uE
    EFD9xcNF41k1AtQL5bWAhw1+bAyw5ZhFqZLbuUCC5YXCP0bHxZeWmK8msRfWGuExE/0vRV
    dHQ6s6F/xVA6wo3H2mThYAYehDNrr0WS0De8TvISs4lAALe+ihurxig1jdweHd4ORn21nW
    MEBCftjPP/x7KxvQeCtmMZjR5kpaVXSUr4Aphc7rqHqt7XomKYFkLq/7oIKbQWsUEFOkSf
    sH9sW14A9mojjTt3MISVnWytUExXYqpO5JvabwqY1L5f9d3YOB8UYmlgHOFAHi/ytSFaT+
    7MgpJvdaN/ECGH8CqHJ5gomTDwcWkLksQVF0yp6QW405nQY0zYrPhNAKUvcA
X-ME-Proxy: <xmx:JN7xagHtDPiCY20_RVxcrcNMSRRRfXqyQvy2iklr9lu6tAVPKG78sA>
    <xmx:JN7xatKjEN3j5lLuBOsuI_LqYtNjW_zAduZO79CAN3E1SjDebj9e-g>
    <xmx:JN7xajPMKYf-vG67t7mexIo7pCp8NrxnC8QRBLUtlbfoQqPKaVjPiQ>
    <xmx:JN7xalkfIAfJ0ldq0-oQzLZQ_z8zJPqORtHNYnu7n4DdjsR5G_RJTA>
    <xmx:JN7xarxi1_QjLXSKYPZgB5XhGdEyrSNqm2ZI_7xqFs0fgT1MfWeSaU2P>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 9 Nov 2026 15:52:17 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Anandu Padinhare <Anandu.Padinhare@electrifex.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/EFI: fix padding of EDD strings
Message-ID: <avHeITupUgK01tiT@mail-itl>
References: <MA5PR01MB11455822E04DAC972F77A25A7FD772@MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="G5dl/i/OVL3tyrXM"
Content-Disposition: inline
In-Reply-To: <MA5PR01MB11455822E04DAC972F77A25A7FD772@MA5PR01MB11455.INDPRD01.PROD.OUTLOOK.COM>
X-purgate-ID: tlsNG-4011c0/1794235943-5A5DBCFC-59C7083C/0/0
X-purgate-type: clean
X-purgate-size: 2594

--G5dl/i/OVL3tyrXM
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 9 Nov 2026 15:52:17 +0100
From: Marek =?utf-8?B?PT91dGYtOD9RP01hcmN6eWtvd3NraS1HPUMzPUIzcmVja2k/PQ==?= <marmarek@invisiblethingslab.com>
To: Anandu Padinhare <Anandu.Padinhare@electrifex.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?PT91dGYtOD9CP1RXOXVic09wPz0=?= <roger@xenproject.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] x86/EFI: fix padding of EDD strings

On Thu, Nov 05, 2026 at 09:10:28AM +0000, Anandu Padinhare wrote:
> edd_put_string() decrements n in its copy loop condition even when the
> loop terminates because the end of the source string was reached.  The
> padding loop then writes one space too few, leaving the final byte of
> the field untouched (zero, as boot_edd_info[] lives in .bss).  On an EFI
> boot this yields e.g. a host bus type of "PCI\0" and an interface type
> of "ATAPI  \0", whereas BIOSes space-pad these fields (SeaBIOS reports
> "PCI " and "ATA     ").
>=20
> Furthermore, if the string exactly filled the field, n would wrap to
> SIZE_MAX after the copy loop and the padding loop would write past the
> end of the field.  No caller currently passes such a string.
>=20
> Only decrement n when a character was actually copied.  While touching
> the function, also correct its indentation.
>=20
> Fixes: 51f03ec421fb ("x86-64/EFI: construct EDD data from device path pro=
tocol information")
> Assisted-by: Claude
> Signed-off-by: Anandu Padinhare <Anandu.Padinhare@electrifex.com>

Reviewed-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--G5dl/i/OVL3tyrXM
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmrx3iEACgkQ24/THMrX
1yz/dAf/U8qzTY44XV7U44SvWSfowet06inwoU1+nQy1gHnAxNn74QS91v73QoqE
wKJ24vOqnN+hSiC+SOrY1/DG0yaU32mEL435/kq437VZXQ0rIyr09WvRy/gcztkM
Gb9R8QUQVj0vEa/MM8INb1lI6DXaEXzLCRwN5orIVqnb+ZPWuWkALlYSRWMfioSG
LEo+0obv313UEU0jAgNQtAcqik3+77EAnCk92lvP9dhlTbx0GwCzbmYCpt5H2bkV
O6aZbAUXGOmMtu9jZrP4WMWwdPvq+rvNsjOIsxskEeidIz8J/K9ts1OTug3BrxjL
pfsXhOs/6sZOfJuyfsaa+pcCapBlJw==
=CRaj
-----END PGP SIGNATURE-----

--G5dl/i/OVL3tyrXM--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:58:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:58:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480214.1684178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQoo-0005Od-DJ; Mon, 09 Nov 2026 14:57:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480214.1684178; Mon, 09 Nov 2026 14:57:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQoo-0005OW-AT; Mon, 09 Nov 2026 14:57:58 +0000
Received: by outflank-mailman (input) for mailman id 1480214;
 Mon, 09 Nov 2026 14:57:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d0cd62000403d@swg.vates.tech>)
 id 1xQQom-0005OF-R1
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:57:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQom-004JZs-0t
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:57:56 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d0cd62000403d@swg.vates.tech>)
 id 6af1df61-bab6-0a2a0a5309dd-0a2a4509b43c-36
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:57:55 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d0cd62000403d@swg.vates.tech>)
 id 6af1df73-be1a-0a2a45090019-b9ff1c23a087-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:57:55 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c0d0cd62000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 14:57:51 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 1386082191;
 Mon,  9 Nov 2026 15:57:51 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=o0lfqTwCf1N+PscNT4QvCibY7SxKauPhgfpJ0dhSFm8=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=QRDKYxLtKl2nDtA2xh2B/dNSWtqyYGt6uhZw4Kf8PEumrGYJYrix3pTyIt5enCIKwyaCyEQ+I
 3uqlKphV06uRrfTDxwLyE+4VkzgLYsQlBJTm2voIjF/KFNGKrHwuUJoF2qeqxKiWXGwQxEFEZZ0
 Ra+R/vXeGKB9K/ezUWGtzm9vBDmTslrt+N0ENxPEO7qXU4E3bQJvfhBO7f4luDEGW8fWBNBw9eF
 gyFy5TA8yOPShn39t8limTphpOr8GTL2eXltdyWqLn4BB7aD6v03pJxTwQEZWt0RZALMdeJFcV1
 gVHBCKi9W9MHCa96vdAOMN8O4/WYH9u0soJFnWBpHI4A==
X-Zone-Loop: bb6345a7797a1f3564b7693820f405c839dd2a546fde
x-campaign-type: default
x-transaction-id: bb7611df-1746-4ca8-93d4-c0b17bdfd913
x-swg-uid: 01-762b211a-3453-4dcf-869b-5f5af7168dae
X-Mailer: Sweego
Message-ID:
 <1794236272.8631fc262581453bbf619ec5b2062170.1a1c0d0cd62000403d@vates.tech>
x-swg-bid: 1794236272.8631fc262581453bbf619ec5b2062170.1a1c0d0cd62000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Subject: Re: [PATCH v7 2/3] xen/mm: Introduce NUMA-aware memory claim sets
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: xen-devel@lists.xenproject.org, 
 Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <ddcc692d642aaf6dec84dcdb17ebaf2b8c09c7b0.1778272036.git.bernhard.kaindl@citrix.com>
References: <cover.1778272036.git.bernhard.kaindl@citrix.com>
 <ddcc692d642aaf6dec84dcdb17ebaf2b8c09c7b0.1778272036.git.bernhard.kaindl@citrix.com>
Date: Mon, 09 Nov 2026 15:57:44 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1794236265; l=24306;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=MIhhFCBwbx/vqq4f/IiP3pVyiFfFiQ4gWX1AO8OYnvA=;
 b=v8zj3Ud37pF21cO6gNsNAqFzLx+p4t6v3yCe+LkWUfEtClD+evUXf+KrMTWNOV4yEyA8nXVXe
 WYBivR0+w+vB1co2h0V+k5Hv3uUv1Wk94aIWwnj8YKuHQOaOdccyqg+
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794236271270
X-purgate-ID: tlsNG-bad1c0/1794236275-BC6CA034-EC17B86D/0/0
X-purgate-type: clean
X-purgate-size: 24306

Hi Bernhard,

Thanks for the patch! At ~500 changed lines it is hard to review in one
go. Could you split it into smaller patches, ideally under 200 lines
each? For instance:

  1. domain_{set,get}_claim_entries(), with XENMEM_claim_pages and
     domain_kill() converted to it,
  2. per-node claim accounting in the allocator (claimed_pages[],
     d->claims[], redeeming in alloc_heap_pages()/get_free_buddy()),
  3. restoring the claim invariants on page offlining,
  4. the new XEN_DOMCTL_claim_memory (public header, domctl, XSM),
  5. the xc_domain_claim_memory() wrapper in libxenctrl.

Some comments below :)

> This commit extends Xen's memory claim design to support installing claim
> sets spanning multiple NUMA nodes atomically. As Roger Pau Monné suggested:
> 
>   Ideally, we would need to introduce a new hypercall that allows
>   making claims from multiple nodes in a single locked region, as to
>   ensure success or failure in an atomic way.
> 
Quoting a mail in the commit message seems unusual in Xen. Credit should
go in a tag as a Suggested-by trailer, and the motivation could simply be
stated, e.g.:

  Installing per-node claims one by one is not atomic: a request may
  succeed on some nodes and fail on others. Introduce a hypercall
  that installs a set of claims spanning multiple nodes under a single
  lock, so that it either fully succeeds or fully fails.

> A claim set can contain multiple node-specific claims and a host-wide
> claim for memory that may come from any NUMA node. The new domctl
> installs the full claim set atomically, and the allocator is updated
> so that claim checks and claim consumption follow the new semantics.
> 
> This adds:
> 
> 1. installing multi-node claim sets atomically,
> 2. protecting claimed pages from other claim requests and allocations, and
> 3. redeeming held claims when satisfying allocations.

"redeem" is used throughout the patch (here, in alloc_heap_pages()
and in the public header) but never defined. Could you add a sentence
saying what it means? E.g.:

  Redeeming a claim means consuming it through allocation: each page
  allocated to the domain decreases its claim by one. This differs from
  releasing a claim, which drops it without any allocation.
> 
> Legacy XENMEM_claim_pages behaviour is preserved; the interface is
> deprecated and superseded by XEN_DOMCTL_claim_memory.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@citrix.com>

> ---
> The v7 design document submitted ahead of this series may help with review.
> It explains the background, design rationale, and implementation details.
> 
> Rendered version: https://xen.kaindl.dev/claims-v7-design/designs/claims
Very useful, thanks!
> [ ... 44 lines skipped ... ]
> diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
> index 01c0669c88..f78e085dd7 100644
> --- a/tools/libs/ctrl/xc_domain.c
> +++ b/tools/libs/ctrl/xc_domain.c
> @@ -1070,6 +1070,34 @@ int xc_domain_remove_from_physmap(xc_interface *xch,
>      return xc_memory_op(xch, XENMEM_remove_from_physmap, &xrfp, sizeof(xrfp));
>  }
>  
> +/* Set or get memory claims for a domain. */

This comment may not be needed: the function is already documented in
the header file.

> [ ... 26 lines skipped ... ]
> +/* XENMEM_claim_pages is deprecated; use xc_domain_claim_memory() instead. */

Shouldn't XENMEM_claim_pages then be formally deprecated, e.g. with a
warning when it is used? I don't know whether Xen has such a practice,
but it would notify users without breaking the hypercall ABI.

>  int xc_domain_claim_pages(xc_interface *xch,
>                                 uint32_t domid,
>                                 unsigned long nr_pages)

> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index bb9e210c28..8cb4241b05 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -1319,7 +1319,10 @@ int domain_kill(struct domain *d)
>          rspin_barrier(&d->domain_lock);
>          argo_destroy(d);
>          vnuma_destroy(d->vnuma);
> -        domain_set_outstanding_pages(d, 0);
> +        /* Release all outstanding claims of the domain. */
> +        domain_set_claim_entries(d, 1, &(xen_memory_claim_t){
> +            .target = XEN_DOMCTL_CLAIM_MEMORY_HOST, .pages = 0,
> +        });
Installing an empty host-wide claim to release everything works, but the
reader has to go through domain_set_claim_entries() to see that it can't
fail and ends up in release_existing. Could page_alloc.c instead export a
small domain_release_claims(d) helper, taking the locks and calling
domain_recall_node_claims() + domain_release_host_claims()? That keeps the
release helpers static and makes this call self-explanatory.

> [ ... 3 lines skipped ... ]
> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> index 93738931c5..391f256f01 100644
> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -51,6 +51,57 @@ static int xenctl_bitmap_to_nodemask(nodemask_t *nodemask,
>                                     MAX_NUMNODES);
>  }
>  
> +/* Set or get memory claims for a domain. */
> +static int claim_memory(struct domain *d,
> +                        struct xen_domctl_claim_memory *uinfo, bool *copyback)
> +{
> +    xen_memory_claim_t *entries;
> +    int rc = -EFAULT;
> +
> +    /* Reject LLC coloring; alloc_color_heap_page() does not handle claims. */
> +    if ( llc_coloring_enabled )
> +        return -EOPNOTSUPP;
> +
> +    switch ( uinfo->mode )
> +    {
> +    case XEN_DOMCTL_CLAIM_MEMORY_SET:
> +        if ( !uinfo->nr_entries )
> +            return -EINVAL;
> +        if ( uinfo->nr_entries > MAX_NUMNODES + 1 )
> +            return -E2BIG;
> +        break;
> +    case XEN_DOMCTL_CLAIM_MEMORY_GET:
> +        if ( uinfo->nr_entries > MAX_NUMNODES + 1 )
> +            uinfo->nr_entries = MAX_NUMNODES + 1;
> +        break;
> +    default:
> +        return -EOPNOTSUPP;
> +    }
> +    if ( d->is_dying )
> +        return -ESRCH;
> +
> +    entries = xmalloc_array(xen_memory_claim_t, uinfo->nr_entries);
> +    if ( entries == NULL )

Nit: !entries.

> +        return -ENOMEM;
> +
> +    switch ( uinfo->mode )
> +    {
> +    case XEN_DOMCTL_CLAIM_MEMORY_SET:
> +        if ( !copy_from_guest(entries, uinfo->claim_set, uinfo->nr_entries) )
> +            rc = domain_set_claim_entries(d, uinfo->nr_entries, entries);
> +        break;
> +    case XEN_DOMCTL_CLAIM_MEMORY_GET:
> +        rc = domain_get_claim_entries(d, &uinfo->nr_entries, entries);
> +        *copyback = true;
> +        if ( !rc && copy_to_guest(uinfo->claim_set, entries,
> +                                  uinfo->nr_entries) )
> +            rc = -EFAULT;
> +        break;
> +    }
> +    xfree(entries);
> +    return rc;

Blank line before the final return.

> [ ... 128 lines skipped ... ]
> @@ -858,6 +805,253 @@ static void check_and_stop_scrub(struct page_info *head)
>      }
>  }
>  
> +/* Release claims from the host-wide claims pool of the domain. */
> +static unsigned long domain_release_host_claims(struct domain *d,
> +                                                unsigned long release)
> +{
> +    unsigned long host_wide_claims;
> +
> +    ASSERT(d->outstanding_pages >= d->node_claims);
> +    host_wide_claims = d->outstanding_pages - d->node_claims;
> +
> +    if ( release > host_wide_claims )
> +        release = host_wide_claims;
> +
> +    ASSERT(release <= outstanding_claims);
> +
> +    outstanding_claims -= release;
> +    d->outstanding_pages -= release;
> +
> +    return release;
> +}
> +
> +/* Release claims from the node-specific claims pool of the domain. */
> +static unsigned long domain_release_node_claims(
I'm a bit confused by the naming of domain_release_node_claims() and
domain_recall_node_claims(): both release node claims, the only
difference being that the former targets one given node while the
latter walks all nodes. I'd suggest naming them after that:

    domain_release_node_claim(d, node, pages);  /* one given node */
    domain_release_any_node_claims(d, pages);   /* any node */

> +    struct domain *d, nodeid_t node, unsigned long release)

Nit: the parameters fit when aligned after the (, like
domain_release_host_claims() above.

> [ ... 42 lines skipped ... ]
> +/* Get claim entries for the outstanding claims of a domain. */
> +int domain_get_claim_entries(struct domain *d, uint32_t *nr_entries,
> +                             xen_memory_claim_t *entries)
> +{
> +    unsigned int needed_entries = 1, max_entries = *nr_entries;
> +    nodeid_t node;
> +
> +    /* If max_entries is 0, only the number of needed entries is returned. */
> +    if ( max_entries )
> +    {
> +        memset(entries, 0, sizeof(*entries) * max_entries);
> +        entries[0].target = XEN_DOMCTL_CLAIM_MEMORY_HOST;
> +    }
> +
> +    spin_lock(&heap_lock);
> +    if ( max_entries )
> +    {
> +        ASSERT(d->outstanding_pages >= d->node_claims);
> +        entries[0].pages = d->outstanding_pages - d->node_claims;
> +    }
> +
> +    for_each_online_node ( node )
> +    {
> +        if ( !d->claims[node] )
> +            continue;
> +
> +        if ( needed_entries < max_entries )
> +        {
> +            entries[needed_entries].target = node;
> +            entries[needed_entries].pages = d->claims[node];
> +        }
> +        needed_entries++;
> +    }
> +    spin_unlock(&heap_lock);
> +    *nr_entries = needed_entries;
> +    return needed_entries <= max_entries ? 0 : -ERANGE;

Blank line before the final return.

> +}
> +
> +/* Validate a set of claim records and install it if valid. */
> +int domain_set_claim_entries(struct domain *d, uint32_t nr_entries,
> +                             const xen_memory_claim_t *claim_set)
> +{
> +    uint64_t avail_pages, request, node_requests = 0, host_requests = 0;

I think native types would fit better for avail_pages and request. What
about:

    unsigned long avail_pages, request;
    uint64_t node_requests = 0, host_requests = 0;

The accumulators can stay uint64_t: node_requests + host_requests +
domain_tot_pages(d) can exceed UINT_MAX, which would not fit in a 32-bit
unsigned long.

With that, you would need to add this check just before
`request = claim_set[i].pages`, since `pages` is a uint64_t, to make sure
there is no narrowing conversion:

    if ( claim_set[i].pages > d->max_pages )
        goto out;

As d->max_pages is an unsigned int, claim_set[i].pages is then
guaranteed to fit in request.

> +    nodemask_t nodes;
> +    uint32_t node;

And here:

    unsigned int node;

> +    int ret = -EINVAL;
> +    bool host_request_seen = false, legacy_semantics = false;
> +
I think it would be worth stating nr_entries != 0 as a precondition, or
adding a check:

    if ( !nr_entries )
        return ret;

I understand the only caller, claim_memory(), already checks it, but with
nr_entries == 0 this function silently goes to release_existing and drops
all existing claims, which a future caller may not expect.

> +    /*
> +     * Two locks are needed here:
> +     *  - d->page_alloc_lock: protects accesses to d->{tot,max,extra}_pages.
> +     *  - heap_lock: protects accesses to total_avail_pages, node_avail_pages,
> +     *    avail[], scrub state and all total and node-specific claim counters.
> +     */
> +    nrspin_lock(&d->page_alloc_lock);
> +    spin_lock(&heap_lock);
> +
> +    /*
> +     * Phase 1: Check and process the individual claim entries. Check
> +     * the node-specific claim requests, and validate them against the
> +     * available memory. Track legacy and host-wide claim requests and
> +     * prepare validation of the combined claims in Phase 2.
> +     */
> +    nodes_clear(nodes);
> +    for ( uint32_t i = 0; i < nr_entries; i++ )

Nit: unsigned int would fit better for i. Also, avail_pages, request and
node are only used inside the loops, so their scope can be reduced.

> +    {
> +        node = claim_set[i].target;
> +        request = claim_set[i].pages;
> +
> +        if ( claim_set[i].cmd ) /* Reserved for possible future use. */
> +            goto out;
> +
> +        switch ( node )
> +        {
> +        case XEN_DOMCTL_CLAIM_MEMORY_LEGACY:
> +            legacy_semantics = true;
> +            fallthrough;
> +        case XEN_DOMCTL_CLAIM_MEMORY_HOST:
> +            if ( host_request_seen ) /* Only one host-wide request allowed. */

Nit: maybe a gdprintk() here, so the caller can tell why the request
was rejected?

> +                goto out;
> +
> +            host_request_seen = true;
> +            host_requests = request;
> +            continue;
> +        }

Missing default label here (MISRA C:2012 Rule 16.4):

        default:
            break;

> +
> +        /* Node-specific claim. */
> +        if ( node >= MAX_NUMNODES || !node_online(node) )
> +        {
> +            ret = -ENOENT; /* Node not valid or not online. */
> +            goto out;
> +        }
> +
> +        if ( nodemask_test(node, &nodes) ) /* Only one request per node. */
> +            goto out;
> +        node_set(node, nodes);
> +
> +        ASSERT(node_avail_pages[node] >= claimed_pages[node]);
> +        avail_pages = node_avail_pages[node] - claimed_pages[node];
> +
Nit: could you add a short comment explaining why d->claims[node] is
added back? Something like:

    /* The new claim replaces the domain's current one on this node. */

> +        if ( request > avail_pages + d->claims[node] )
> +        {
> +            ret = -ENOMEM; /* Request exceeds available memory on node. */
> +            goto out;
> +        }

I'm not sure a comment describing behaviour that happens later makes
sense here.

> +        node_requests += request; /* The combined total is checked below. */
> +    }
> +
> +    /*
> +     * Phase 2: Validate the combined claim set.
> +     * Apply legacy semantics if needed, then check that the total fits
> +     * within d->max_pages and within the available unclaimed heap memory.
> +     * A zero new-claim request is a pure release; skip validation entirely.
> +     */
> +    if ( legacy_semantics )
> +    {
> +        if ( node_requests )

Shouldn't there be a debug trace saying that node-specific requests are not
supported with legacy semantics?

> +            goto out;
> +
> +        if ( !host_requests )
> +            goto release_existing;
> +
> +        /*
> +         * Legacy semantics require the request to exceed the current
> +         * allocation; the request is then reduced by the current allocation.
> +         * Existing outstanding claims are not allowed.
> +         */
> +        if ( d->outstanding_pages ||
> +             host_requests <= domain_tot_pages(d) )

This fits on one line.

> +            goto out;
> +
> +        host_requests -= domain_tot_pages(d);
> +    }
> +    else if ( !host_requests && !node_requests )
> +        goto release_existing;
> +
> +    /* Ensure new claims plus domain_tot_pages() fit into d->max_pages. */
> +    if ( host_requests > d->max_pages ||
> +         node_requests > d->max_pages - host_requests ||
> +         node_requests + host_requests + domain_tot_pages(d) > d->max_pages )
> +        goto out;


With the per-entry check suggested above:

    if ( claim_set[i].pages > d->max_pages )
        goto out;

each entry is at most UINT_MAX, so:
- host_requests <= UINT_MAX, as it comes from a single entry;
- domain_tot_pages(d) <= UINT_MAX;
- node_requests <= MAX_NUMNODES * UINT_MAX, as there is at most one
  entry per node. With MAX_NUMNODES = 64, that is below 2^38.

The sum is computed in uint64_t, since node_requests is a uint64_t, and
stays below 2^39, so it can't overflow. The first two conditions only
guard against that overflow and are implied by the third one, so this
can be reduced to:

    if ( node_requests + host_requests + domain_tot_pages(d) > d->max_pages )
        goto out;

> +
> +    /* Ensure new claims fit in the total unclaimed heap memory. */
> +    ASSERT(total_avail_pages >= outstanding_claims);
> +    if ( node_requests + host_requests >
> +         (total_avail_pages - outstanding_claims) + d->outstanding_pages )
> +    {
> +        /* New claims would exceed available unclaimed memory. */
> +        ret = -ENOMEM;
> +        goto out;
> +    }

Nit: a local would make this easier to read, e.g.:

    unsigned long unclaimed = total_avail_pages - outstanding_claims;

> +
> + release_existing:
> +    /* Phase 3: Remove the old claims before installing the new claims. */
> +    domain_recall_node_claims(d, d->node_claims);
> +    domain_release_host_claims(d, d->outstanding_pages);
> +    ASSERT(!d->node_claims && !d->outstanding_pages);
> +
> +    /* Phase 4: Install new node-specific and host-wide claims. */
> +    d->node_claims = node_requests;
> +    d->outstanding_pages = host_requests + node_requests;
> +    outstanding_claims += d->outstanding_pages;
> +
> +    /* Phase 5: Install the individual node claims. */
> +    for ( uint32_t i = 0; i < nr_entries; i++ )

Nit: unsigned int here too.

> +    {
> +        node = claim_set[i].target;
> +        request = claim_set[i].pages;
> +        if ( node >= MAX_NUMNODES ) /* Skip non-node claim targets. */
> +            continue;
> +
> +        ASSERT(!d->claims[node]);
> +        d->claims[node] = request;
> +        claimed_pages[node] += request;
> +    }
> +    ret = 0;
> + out:
> +    spin_unlock(&heap_lock);
> +    nrspin_unlock(&d->page_alloc_lock);
> +    return ret;

Blank line before the label and before the final return.

> +}
> +
>  static struct page_info *get_free_buddy(unsigned int zone_lo,
>                                          unsigned int zone_hi,
>                                          unsigned int order, unsigned int memflags,
> @@ -907,6 +1101,18 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
>       */
>      for ( ; ; )
>      {
> +        unsigned long avail_pages;
> +
> +        ASSERT(node_avail_pages[node] >= claimed_pages[node]);
> +        avail_pages = node_avail_pages[node] - claimed_pages[node];
> +
> +        if ( d && !(memflags & MEMF_no_refcount) )
> +            avail_pages += d->claims[node];
> +
> +        /* Skip this node if memory and claims do not permit this request. */
> +        if ( avail_pages < (1UL << order) )

Nit: 1UL << order is now used twice per node iteration (here and in the
avail[node][zone] check below). What about a local, as alloc_heap_pages()
already does:

    unsigned long request = 1UL << order;

> [ ... 13 lines skipped ... ]
> @@ -1047,13 +1254,13 @@ static struct page_info *alloc_heap_pages(
>          }
>      }
>  
> -    ASSERT(avail[node][zone] >= request);
> -    avail[node][zone] -= request;
> -    ASSERT(total_avail_pages >= request);
> -    total_avail_pages -= request;
> -    ASSERT(node_avail_pages[node] >= request);
> -    node_avail_pages[node] -= request;
> -
> +    /*
> +     * Ensure the domain's claims are fully redeemed before deducting
> +     * the allocation from the page counters, otherwise the host or the
> +     * node might be left with more claims than available pages. This would
> +     * break the invariants claimed_pages[node] <= node_avail_pages[node]
> +     * and outstanding_claims <= total_avail_pages.
> +     */
>      if ( d && d->outstanding_pages && !(memflags & MEMF_no_refcount) )
>      {
>          /*
> @@ -1071,13 +1278,34 @@ static struct page_info *alloc_heap_pages(
>           * the domain being destroyed before creation is finished.  Losing part
>           * of the claim makes no difference.
>           */
> -        unsigned long outstanding = min(d->outstanding_pages + 0UL, request);
> +        unsigned long redeem = min(d->outstanding_pages + 0UL, request);
> +
> +        BUG_ON(redeem > outstanding_claims);
> +
> +        /* Maintain invariant: claimed_pages[node] <= node_avail_pages[node] */
> +        redeem -= domain_release_node_claims(d, node, redeem);
>  
> -        BUG_ON(outstanding > outstanding_claims);
> -        outstanding_claims -= outstanding;
> -        d->outstanding_pages -= outstanding;
> +        if ( redeem )
> +        {
> +            /*
> +             * Maintain the invariant outstanding_claims <= total_avail_pages:
> +             * Redeem from the host-wide claims pool and if needed from other
> +             * nodes' claims pools to maintain that outstanding_claims do not
> +             * exceed total_avail_pages after deducting the allocation.

Nit: this repeats the outstanding_claims <= total_avail_pages statement
from the first line. I'd trim it to:

            /*
             * Redeem from the host-wide claims pool and, if needed, from
             * other nodes' claims pools to keep outstanding_claims <=
             * total_avail_pages after deducting the allocation.
             */

> [ ... 25 lines skipped ... ]
> @@ -1256,6 +1485,43 @@ static int reserve_offlined_page(struct page_info *head)
>          count++;
>      }
>  
> +    /* Offlining pages may violate claim invariants; restore them if needed. */

Which invariants, and in which case does offlining break them? I can work
it out because I'm reading the series in order, but someone reading this
code once it's committed won't have that context. Please spell both out
here, or in the commit message.

> [ ... 39 lines skipped ... ]
> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> index 8f6708c0a7..352d7095c9 100644
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -1276,6 +1276,42 @@ struct xen_domctl_get_domain_state {
>      uint64_t unique_id;      /* Unique domain identifier. */
>  };
>  
> +struct xen_memory_claim {
> +    uint64_aligned_t pages; /* Number of pages to claim. */
> +    uint32_t target;        /* NUMA node or special target constant. */
> +    uint32_t cmd;           /* Reserved, must be zero. */
> +};
> +typedef struct xen_memory_claim xen_memory_claim_t;
> +DEFINE_XEN_GUEST_HANDLE(xen_memory_claim_t);
> +
> +/* Special claim targets for the target field of xen_memory_claim_t. */
> +#define XEN_DOMCTL_CLAIM_MEMORY_HOST     0x80000000U /* Host-wide claims. */
> +#define XEN_DOMCTL_CLAIM_MEMORY_LEGACY   0x40000000U /* Legacy semantics. */

How did you choose these values? IMO the rationale belongs in the commit
message.

> [ ... 44 lines skipped ... ]
> diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
> index bd9fc37b52..086334af05 100644
> --- a/xen/include/public/memory.h
> +++ b/xen/include/public/memory.h
> @@ -569,6 +569,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_sharing_op_t);
>   * for 10, only 7 additional pages are claimed.
>   *
>   * Caller must be privileged or the hypercall fails.
> + *
> + * Note: This hypercall is superseded by XEN_DOMCTL_claim_memory.

Same question as for xc_domain_claim_pages() above: should
XENMEM_claim_pages emit a deprecation warning?

> [ ... 27 lines skipped ... ]
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index 00db1da12f..f671e0c4c7 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -419,6 +419,10 @@ struct domain
>      unsigned int     xenheap_pages;     /* pages allocated from Xen heap */
>      /* Pages claimed but not possessed, protected by global heap_lock. */
>      unsigned int     outstanding_pages;
> +    unsigned int     node_claims;       /* Sum of per-node claims. */
> +    /* Domain objects use dedicated pages, leaving room for per-node claims. */
> +    unsigned int     claims[MAX_NUMNODES]; /* Per-NUMA-node claims. */
> +

Stray blank line added in the middle of the field group.

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 14:59:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 14:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480224.1684187 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQqg-0006Do-R8; Mon, 09 Nov 2026 14:59:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480224.1684187; Mon, 09 Nov 2026 14:59:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQqg-0006Dh-Nh; Mon, 09 Nov 2026 14:59:54 +0000
Received: by outflank-mailman (input) for mailman id 1480224;
 Mon, 09 Nov 2026 14:59:53 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d29c61000403d@swg.vates.tech>)
 id 1xQQqf-0006DU-KR
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 14:59:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQqf-003Biw-1C
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:59:53 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d29c61000403d@swg.vates.tech>)
 id 6af1dfe4-8faa-0a2a0a5109dd-0a2a450bb474-6
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:59:52 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0d29c61000403d@swg.vates.tech>)
 id 6af1dfe8-b7e8-0a2a450b0019-b9ff1c238425-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 15:59:52 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c0d29c61000403d.006 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 14:59:50 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id A524D81FBB;
 Mon,  9 Nov 2026 15:59:49 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=2aXD1mWuZKOOVJkRBdyVRF4SXZGOkvKWJOssClgep3o=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=pwTIvm1nWzu5xl5MthbaevJRZPauCuFhuJkB+nASrqt/lwx0PrZVnnbUlyDVMtld5qrTP7SKA
 8dlKrj8QOgr2zV/VH5fMMJNFwb/MryPfmgAQ/a0HZ/bfefTSFUy06eajn9I2BSLJc3jAEajOLhO
 S/1uzwuAPHZr2RmqPQOoKp3nrXbshZwtG+DiaxOunlgR4aA6zW9xNYBmpi7rmc3bQFjxozjYdu/
 B2SG2oC66ecLsBvWrpQ4xYoqitz3RYS0hOHKrmJFB3OfQlNF2qTVEuOe8xjeYAvk7vdI+vjn1w9
 EWrDoylKIRdWB0Y9IQlSoKHLT0RPu9CJrmv4SJZN8Jug==
X-Zone-Loop: 75a4e56549b8f458bdaa799b795583a81108de7e8b2c
x-campaign-type: default
x-transaction-id: 6d401c6b-9cd7-48d7-a641-6a7ddaef551f
x-swg-uid: 01-8f2751f0-ae94-4794-9f91-0131d4fcb218
X-Mailer: Sweego
Message-ID:
 <1794236390.8631fc262581453bbf619ec5b2062170.1a1c0d29c61000403d@vates.tech>
x-swg-bid: 1794236390.8631fc262581453bbf619ec5b2062170.1a1c0d29c61000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 9 Nov 2026 15:59:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/2] xen/riscv: skip disabled CPU nodes when probing
 ISA extensions
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20261109124937.78186-1-oleksii.kurochko@gmail.com>
 <1794230641.8631fc262581453bbf619ec5b2062170.1a1c07ae3e2000403d@vates.tech>
 <2622fdc9-8242-4088-b0b9-c78d43ee8f1b@gmail.com>
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Content-Language: en-US
Autocrypt: addr=baptiste.le-duc@vates.tech; keydata=
 xsBNBGoPSX8BCADSuTikqW3FD4mscQugY1thRaKlIhcJ2G9YCWYXAlp+xosvTlzfIftOZZim
 750MLvyKtLPkQzB6TZtFZBiexSraaF/MdDKRTT5DcVa3r7ZnHgqMclWlPa4ioysS4yFcJanL
 cyNOT7HUFvIdirMMqiViedfYtS0GORPBBPVISD6ClMz3ecHIxqllfq9CHYQn4amKEfHmh6tm
 Rufo4Gjl6x8cUFZZlRQf+aCmUzdSPA0P5u3sueYH1uEz4w/jbD53MlKqzCvxUeOsfS2swTQA
 6mS9jIgOjNadpUTOzKfDHMgFirtG+HFpm45Nwp6KQizxgDVOfTnOfVHm5Gwqm3ETl9y5ABEB
 AAHNPEJhcHRpc3RlIExlIER1YyAoVmF0ZXMgWXViaWtleSkgPGJhcHRpc3RlLmxlLWR1Y0B2
 YXRlcy50ZWNoPsLAjgQTAQoAOBYhBGiSJ6HgW88MgT/gfu2Cu2XL9M6QBQJqD0l/AhsDBQsJ
 CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO2Cu2XL9M6QuMcH/ihiy/Nrxp919AmY0ENnc0NK
 r/2LDvW/hrX4FfbpxAmrGmQ7MU1aQTk0JDbfcsG8OYH6wO5sqnXb1gz50YrEdpfVSbHz5YTZ
 EhDIxE4g7NrvJZh3Qc0m0CAyjYTNHen7J6olVaCMjrOH7uRHUYZ7Pl3am9mZosfLmez/aWJO
 a6ihQxBXHI75brlk1teIURkep2kP7P0Flmfl4cA//saREoTF7GXCtjOSQk/xg8PP0Sswqp5G
 TdJptn3FQn6lAzfz0eFSYqkaoX2c2k1MDa7o+UX9cfGPL8ybMKnYkasLxck6eOWGJWf+YTrm
 ga/r0kBaftmqNDgt5nI2jNTDwZcT9g3OwE0Eag9JfwEIAM6IWbuBSvz+erv27oGDDpo8M6Fp
 dGUvft7v+WceHUfxiXpYFx9qgIU6XGy6y+3lJMAvNcltS8DuhioqMlfKRSYGKZlpliY65dNP
 557IuM4ctVJ+I9CVclvv9eahARQKgF5auLJAAlvGSmU+ufNvlwTUmLIRcrPviTmB6X5jJYc+
 fiNeyI0HcsgcN21C0r62tUCypuZ+vgEJXw2bx1V8mVGZKxdGJPh58QF6kRK+xmd4kEComLGV
 BeM6BcVOtEjDcGNC0tLhXb0p9g1Ys55iA8sd6s4WacyolW2J6rwmcOkjiWexWw1caYgIWAV1
 004M3gwUaOz0dGq2i7HQ0AiVfVkAEQEAAcLAdgQYAQoAIBYhBGiSJ6HgW88MgT/gfu2Cu2XL
 9M6QBQJqD0l/AhsMAAoJEO2Cu2XL9M6QovYH/RjstyL5o/V5K74ylBtz0j5t3pLX5JKbwApi
 656rGgDdqElImyvvZppNMl/mgHNzvxmfFAhJXnSX9f1fqVEQKOGEhLUastnl/ssBiE5x7btM
 V0GAffxXbXJZbVv4b/DI+gVrOPc2YXlVwruapvTZNtD3hqPrkjrmq5WTtGR2loIVSe62hmh0
 BGD2Fy79b/hYWyBqhayPBEjwGW75u4/yn+Yqy1PgG3hIcvg7GSuT3akhHZSB2Mbguzcoyf9Q
 DJl6t33JxPRkkNrEdkPPmRlQCTSiUkVjKqMDF3jlINWsJ5t4jKFsNF91ksdw7aQgiX+tQIpE
 ugMC1NuNi5dDGip66bw=
In-Reply-To: <2622fdc9-8242-4088-b0b9-c78d43ee8f1b@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794236389878
X-purgate-ID: tlsNG-42698a/1794236392-19EC69EA-7A5C331B/0/0
X-purgate-type: clean
X-purgate-size: 1973



On 11/9/26 3:40 PM, Oleksii Kurochko wrote:
> 
> 
> On 11/9/26 2:23 PM, Baptiste Le Duc wrote:
>>> riscv_fill_hwcap_from_isa_string() intersects the riscv,isa of every CPU
>>> node under /cpus, including the ones with status = "disabled". Such a
>>> hart is never used by Xen, yet it can still remove extensions from the
>>> host ISA: e.g. a disabled hart without the H extension makes Xen panic
>>> with "Xen requires extension: h", even though every hart Xen runs on
>>> implements it.
>>>
>>> Skip CPU nodes which aren't available.
>>
>> has_isa_extensions_property() still walks the disabled nodes, so the two
>> loops over /cpus now disagree on which harts count. Rather than adding
>> the check loop by loop, can we filter them in one place, e.g. with a
>> dt_for_each_available_child_node() iterator, so no /cpus walk sees a 
>> disabled
>> hart?
>>
> 
> I missed updating has_isa_extensions_property() because I had Cristian 
> Andrei's patch in mind, which adds support for the riscv,isa-extensions 
> property (the patch isn't published to ML). This function will be 
> completely dropped as part of that work.
Oh okay I didn't know that.
> So, until that patch is published, it would probably be better to add an 
> additional check to has_isa_extensions_property().
> 
> Regarding the question of whether to use 
> dt_for_each_available_child_node(), I don't see many use cases for it 
> beyond this particular one. There are also plenty of cases where it's 
> perfectly fine for a node to be disabled and still parsed, so I'm not 
> entirely convinced that we need this change now.
> 
> Let's just add an explicit check to has_isa_extensions_property() for 
> now. Are you okay with that or still think it'll be better to introduce 
> dt_for_each_available_child_node() specifically for this case?
Fine with me. If more cases show up later, we can introduce
dt_for_each_available_child_node() then.
> 
> ~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:01:07 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:01:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480230.1684196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQrq-0007ow-2x; Mon, 09 Nov 2026 15:01:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480230.1684196; Mon, 09 Nov 2026 15:01:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQrq-0007op-05; Mon, 09 Nov 2026 15:01:06 +0000
Received: by outflank-mailman (input) for mailman id 1480230;
 Mon, 09 Nov 2026 15:01:04 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQQrn-0007oN-Rc
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:01:03 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQrn-00828u-8S
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:01:03 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1e025-2eae-0a2a0a5409dd-0a2a4507c592-42
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:01:03 +0100
Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <oleksii.kurochko@gmail.com>)
 id 6af1e02f-b4ea-0a2a45070019-d1558036e96e-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:01:03 +0100
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-4a2167bd087so9763275e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 07:01:03 -0800 (PST)
Received: from [192.168.1.6] (user-109-243-65-71.play-internet.pl.
 [109.243.65.71]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4b90f10c701sm138316425e9.11.2026.11.09.07.01.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 09 Nov 2026 07:01:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Content-Language:References:Cc:To:From:Subject:User-Agent:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794236462; x=1794841262; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to:content-type;
        bh=GYMtx1+UE7FqTGOzyZm0e927UNQLYRi6PMl48Gx7L9k=;
        b=k3qG/lGkb7tPQxtGYKoQXodAzSm6oxnUVEMrP0ZT+TLFjsNweiryK0ewRtMVRRyezM
         941e6izX6CQQORPrMVxa0Tp7PSzkS4Df3I6RMdgeyIKyCNR5+s623yCyLVUqKFBuXDUK
         8tKzY1W6+/T3bH6P+bZCmVyD6XEpmOHLW06la7sFRaPJRt3krSEL2S5yXGkOIU9e79Ki
         yvkw/N6EGI+H/tbdnmEmmS/nLzt/tMS2/wMPxri/Hci3vP/saju4dQUPYVAHgoNMMSgr
         Wa3T1mluHbv+Toa0BPdBwT20al6zXIlvk0gn4b5k7uSZG+7pD33g4bZK9kJgufkvxOe9
         556g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794236462; x=1794841262;
        h=content-transfer-encoding:content-type:in-reply-to:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to:content-type;
        bh=GYMtx1+UE7FqTGOzyZm0e927UNQLYRi6PMl48Gx7L9k=;
        b=Y6PfS5Q8O1Jj6iNgNoGYPryVpfIfipKDxfpV6LnoIXxOHrgydiaZ/pH2+TK0sHljQc
         lMH4/LCgTDgNHu2Fg2/mrHcdld38sfIwonuUWhpjkzw8umjeD1iroLbQeINpu0FTex3K
         NI39ASpoElCJbubOLthewEJIa7935rY5QUNcVzGAFeRtBdAuuwT7W/bWk17rbqzRGUPb
         zXgHsV41pjfH0zwakHGLmQsy/1ED8lxSPM534cZtroOyodhxBrAvaMnSdYhJVw1H+05S
         GvSI7bfBacCQNipbnH1AbedBFhzj4evPEsROgms3e8hwdvklRNDCxV7v1whG/0cx557v
         JqXw==
X-Gm-Message-State: APuU4Z+MGP4t2cuVC3KefAfbU/Jq/JdsOEtvO5eA5y9Rl2uxlYvWi8rG
	AIbpPRHSLNMzchC9FN/MOnWb9axTjv7I/hCVhYJMdB27GFaSS028or89
X-Gm-Gg: AYBFou218OYUpb9M+GGCtaGHs6Y6788jpaRuoQq7v95R9BrRNdW5YUXQeu7o/TJ4LSo
	8Lxq9UokJA1Ytu/13lfIWCqJQQH75ZeSeI7yyWKUzuBEcLVXVUzFaDaENuFedOu7dv/1eSGIe2D
	m5OHjp+nFdQUuF+ndA8VbDIYErkdabW+bbcgVIInnM9AUqdJmHpwsmxYrZaHAnIPTQ8+zHMd+Ns
	/D0MHQezMbptUyBx4RMUMjioeCOz0NrnDFedq4P7gKNsndKLp8E2uQcEZb8NWYQb8BAHkLNJz5V
	TOQrK0dmhHG4tbTAySC84Zv+ggbP0TZshkSFLvPCgvzjuMnqgYSWsjmWS9fvjTb569+Zv0EnRrd
	31LHCjU++NxvBROnTN77b4GaJVWPCRnPACPi/a8NFOTqRsGS39r1MF/KkixcXx69/PqPSBqwC2i
	ooI1jlVhwlvl/mmUbTJFrMCccIHrVyriek4pYR8Zvfj2Xp0YyobLuRV5dMrMzEuSqYfe/gmkil1
	bIHhB6ghH/dBnU6GtF8z6pjzygVsZih6umgc6nx7HdBcPobabTou+1ehCJlhWcoZPPzKHlgvR+U
	+f5MGHcaold1XXxTvBhNFNaMnd5t7ZIhD+QYHpAV2/fCH8vHIPxI6nyD9GfggO/hmQOima1MzkY
	v
X-Received: by 2002:a05:600c:83c8:b0:4a3:18ca:806 with SMTP id 5b1f17b1804b1-4b963c6bc6amr73973005e9.20.1794236462241;
        Mon, 09 Nov 2026 07:01:02 -0800 (PST)
Message-ID: <17fe3d2b-8d48-4926-ae4c-14fedf74ea8a@gmail.com>
Date: Mon, 9 Nov 2026 16:01:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/39] xen/riscv: remap interrupts to new IMSIC VS-file
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Romain Caritey <Romain.Caritey@microchip.com>,
 Zheng Zhang <zhangzheng@iscas.ac.cn>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <45011daea86267b8f4b707bc7de6357b0712fb08.1790779209.git.oleksii.kurochko@gmail.com>
 <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
 <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
 <1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@vates.tech>
 <294b2a3f-ba42-4e04-afa1-ee56ffe7133b@gmail.com>
Content-Language: en-US
In-Reply-To: <294b2a3f-ba42-4e04-afa1-ee56ffe7133b@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1794236463-37AD0AE4-0B5A0DB8/10/73395122804
X-purgate-type: spam
X-purgate-size: 5179



On 11/9/26 11:19 AM, Oleksii Kurochko wrote:
> 
> 
> On 11/6/26 2:26 PM, Baptiste Le Duc wrote:
>> On 2026-11-05 17:57 +0100, Oleksii Kurochko wrote:
>>> [ ... 52 lines skipped ... ]
>>>
>>>> At this point vgein_assign()
>>>> is still BUG_ON("unimplemented") too, so none of the new code can
>>>> actually run, and the error path can't be reviewed against the real
>>>> vgein_release().
>>>>
>>>> Also, until "introduce IMSIC h/w interrupt file attaching to vcpu", no
>>>> vCPU ever owns a h/w file, so imsic_migrate_vcpu() can only hit the
>>>> CPU_NONE check.
>>>>
>>>> Wouldn't it be simpler to move the two already-acked patches and the
>>>> attach first, so that no stubs are needed and each migration step is
>>>> written against its real callees when it lands:
>>>> - Add basic VGEIN management for AIA guests (real vgein_assign() and
>>>>     vgein_release(); the reason for the explicit cpu argument of
>>>>     vgein_release() would then have to go into this commit message)
>>>> - Map IMSIC interrupt file for vCPUs (real imsic_map_guest_file())
>>>
>>> I think I have such order before and it was changed becuase for locks in
>>> the first patch it wasn't enough context to understand if they are
>>> needed or not.
>>>
>>>> - Implement continue_new_vcpu() and set hstatus.VSXL
>>>> - Attach a h/w interrupt file to a vCPU on its first run, introducing
>>>>     imsic_vsfile_acquire() and imsic_update_state() with their first 
>>>> user
>>>>     (acquire, vaplic_reconfigure_target(), set hstatus.VGEIN)
>>>> - Prepare new IMSIC VS-file (on top of imsic_vsfile_acquire())
>>>> - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
>>>> - Remap interrupts to the new IMSIC VS-file (APLIC retarget + sync)
>>>> - Save/clear old VS-file, restore, SGEI wake-up as today
>>>>
>>>> A side benefit: attach no longer has to be squeezed into the finished
>>>> migration code, so imsic_vsfile_move() with its first_attach argument
>>>> and the goto set_vgein go away. Attach stays a plain sequence, and
>>>> imsic_migrate_vcpu() simply reuses imsic_vsfile_acquire().
>>>
>>> I'm fine with that order. It does mean that "add basic VGEIN management"
>>> and "map IMSIC interrupt file for vCPUs" introduce functions whose first
>>> user only comes with the attach patch a few patches later. If that's
>>> acceptable, I'll add a post-commit note to each of them saying where the
>>> functions get used (as IIUC, they will first introduced and then used in
>>> later patches).
>>>
>> Yes, the post-commit notes are fine with me. IMO it's better to introduce
>> the real functions before their first caller, even if that caller only
>> lands a few patches later, than to write callers against stubs. That way
>> each migration step is written against its real callees, and the order
>> follows how IMSIC actually works: a vCPU gets a file on its first run,
>> and only then can that file be migrated.
>>
>> The locks in the VGEIN patch would then get a real user a few patches
>> later (the attach patch), and that patch's commit message can explain
>> why they are needed.
>>
>> What do you think of something like this, after "introduce
>> vaplic_reconfigure_target()"?
>>
>> - Set the guest's XLEN explicitly in hstatus.VSXL (moved before
>>    continue_new_vcpu(), with the vcpu_set_vsxl() call added to its stub,
>>    so that no commit enters a guest with an undefined VSXL)
>> - Implement continue_new_vcpu()
>> - Add basic VGEIN management for AIA guests (acked; the commit message
>>    would have to explain the explicit cpu argument of vgein_release())

Would you be okay with such explanation:

vgein_release() takes the pCPU the VGEIN belongs to explicitly rather
than relying on v->processor, as the two may differ: a vCPU moved to
another pCPU has to release the VGEIN of the pCPU it leaves, while
v->processor already names the new one. As the bitmap of a pCPU may thus
be changed from another pCPU, it is protected by a lock.

I tried to write in the way as it is requirement to API rather than a 
description of the code which will be introduced later somewhere in "=== 
migration"

~ Oleksii

>> - Map IMSIC interrupt file for vCPUs (acked)
>> - Attach a h/w interrupt file to a vCPU on its first run, introducing
>>    imsic_vsfile_acquire() and imsic_update_state() with their first user
>> === migration
>> - Implement APLIC-IMSIC-hart sync barrier for vCPU migration
>> - Remap interrupts to the new IMSIC VS-file ("Prepare new IMSIC VS-file"
>>    folded in, as with imsic_vsfile_acquire() already there it is reduced
>>    to a single call)
>> - Save and clear the old IMSIC VS-file on vCPU migration
>> - Restore register state in the new IMSIC VS-file
>> - Wake up a descheduled vCPU on a guest external interrupt (last, as it
>>    arms HGEIE in imsic_migrate_vcpu() and clears it in
>>    imsic_vsfile_local_read_clear())
>>
>> But I'm not an expert in patch series management, so I may be wrong.
> 
> Let's see how it works. I'll try to reshuffle the patches as suggested.
> 
> Thanks for the suggestion!




From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:08:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:08:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480239.1684205 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQz2-0000Je-O6; Mon, 09 Nov 2026 15:08:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480239.1684205; Mon, 09 Nov 2026 15:08:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQQz2-0000JX-LJ; Mon, 09 Nov 2026 15:08:32 +0000
Received: by outflank-mailman (input) for mailman id 1480239;
 Mon, 09 Nov 2026 15:08:31 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQQz0-0000JC-U7
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:08:31 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQQyz-00EWEG-P4
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:08:29 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1e1dc-bab6-0a2a0a5309dd-0a2a450ab62c-36
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:08:29 +0100
Received: from [40.107.208.70]
 (helo=PH0PR06CU001.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1e1eb-f2d2-0a2a450a0019-286bd046ab9e-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:08:29 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by AT6PR03MB251506.namprd03.prod.outlook.com (2603:10b6:170:113::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 15:08:26 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 15:08:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=BjiuboTBGnt8XMDTp74oo/F2n/EoprtE3Cy5umrvEHELw4jpcQMq6AszsTW/WW84r2KxE8vjm9jQGM0QsqhxRTYAgg6US1bUVvKAEY3XPHREcUmqL4+yl3j9YQBjNjK2sfDkVGe9szZbbPACVHFxDRQVXNaGu6AGulocfa83C2OmgvBfbM+TZo8s1cV7awzASgfewHgFU4TCYpJ6AlqQAUTZIv6QARYEEVxrCDDUbrYY7AB7g1dTjdk1miMSmAZf4FzfuWteA/QNFVlfLOTcm2Dh2/cIlpd2/rbzK3fhl/pOdXBv4MnpV1l3XKJhzFAWGmFFmrbfOfRzCkdYg4J0Lg==
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=eOUXDmJyg2Z2Ve16omnUS6yfpwDjj/yhrhUDBEjAdiw=;
 b=Ke0b035PCLbwoymeTi+Y+wPSyPPeasE7Vgx2ubesR5v+haFenqrokeOUtLhQYpqhbnAHhS+5YcvyjS4tyfcC6XawDvixGenTyFk3NqCwXimRFBQZuYDCektO0Chp2odl40RYHnawn4VhPmJ8cmgWRsbtE+qgwdKkXh+SJ++FLfZzsw1frMxG8v39LA1aegSEsIs6VNfgFxQGKSbjxqxjsa8aWAijp0Gpo/1Ml6wJvm6dZjAhVeq06QZXABQnlDGjeUuK8lbE4ZWB+l+sR2zW+Y9Fy+iBF01dKWHSMg7AHg6hbUokN8CA0tlZvtBSaJggmWUNknl975uVuq61Zvdj9A==
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=eOUXDmJyg2Z2Ve16omnUS6yfpwDjj/yhrhUDBEjAdiw=;
 b=XOdc1zlmCO8rbBth9fpswSFTRKcvdIKxy+DSQjWcYGTujt3agzPENQloljOaUqxr+eM7R4HpAr+Vj1fF3Wo1w1XmAKSocF0tX1nCwjvl8v48I0pZu6XoavMRFcn2MQAQNOFQISg+0YkB3kCfV7wYEY/Pmu3FfCQzis/uQE/Nxn4=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <34f76982-4c7e-47b8-ac6e-31d41ce08702@citrix.com>
Date: Mon, 9 Nov 2026 15:08:21 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jason.andryuk@amd.com,
 jbeulich@suse.com, roger@xenproject.org, teddy.astie@vates.tech,
 dmukhin@xen.org
Subject: Re: [PATCH v1 19/28] x86/hvm: avic: enable SVM AVIC statistics
 reporting
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-20-dmukhin@ford.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261105013347.719392-20-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0186.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a4::11) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|AT6PR03MB251506:EE_
X-MS-Office365-Filtering-Correlation-Id: 38c17849-82bc-43ce-2574-08df3e734db7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|6133799003|10067099003|4143699003|11063799006|261102123227099003|261022075727099003|56012099006|261021121427099003;
X-Microsoft-Antispam-Message-Info:
	o9jphOmBOdTWrost6G4y5+ZwrZOJ+DO8RNt41pHQca6yqWi4gEoEffB1ilRExJPEG/4J5lw51KMJcKl2WeizIHkPryf9lGXlc2BZILc24mbnpjKL5zyZx9sGFJ63XbzCeb7kYM162ehdjCg0RfqxglQtvKzpZ2b3NY5p5I39+FXpHKWIgMa2/fTmY7e/ww1s5h12TVzGhDHXZ+FimoNA2a4blByp6YoJYv2ukgVtEtdUYhfPjtJbXkH8pN3dhln/Ym/dKigiZo3bCKKTO9lF/FjpesdhCzzcQlRCrbVumyY+/ZzDQOhNGM4/byWeQRD/CVYyq83MBtoZIBHwE7iUF1MBuxQT8euLnE2ulNqiPtcMXswmPhmCLgJ0DofrekB2P6kFWZ4a5lupz/IreViOPGGfKUvO82AY2LJjjUhekint//0a4JHffr4852MsPdLOCZOSyjmlWzBTNlTtdX0Oq9dtxtjQjVdSAe2zK8XRyDhnoL8A/m5b+wymTU8xt3YSf4LFH8OyaB5z6rzsqacZVji7BbEk+Muv4Gyd9CbaU925xjea0vrj+xQ/jCTCEXBoN/dEtFiK7BdWf+ANzt974aR1dS5rB0uY6wiL5Www7BhRkk9NzzxcfQocqyihcvV7FpuqQtYX9oQrqzFYLiqnieqQVn+7jl7nYAUuf8I09CY=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(4143699003)(11063799006)(261102123227099003)(261022075727099003)(56012099006)(261021121427099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZmJsRFkvMmVkNEhmZmJUZmZZZWt1UUJIcVRiaEVZMHJ6Wkl5VVdTbGIrOFBD?=
 =?utf-8?B?T3RCQVl1cXJUSUxUVUYzajlOKzVUdlJrb0srNW41M1RGTm1qTXBETjZJTFlt?=
 =?utf-8?B?M1BDUVNWWkZRa0JoaytnNUlFbmUwS0tjZUJaTUtyT0J3S2xEYkdrbUV1eW5M?=
 =?utf-8?B?S25TRTJoUTJGaldRcG5CZUFPc0tjS1IwMDgxUC9xY0hvaEVib0dXRlFIelUx?=
 =?utf-8?B?QnNyOW1tc1dBV0kvZjM2S1JMYTlZeHlEK0dPYjNmaUpQZkhLc1AvSnY4bkta?=
 =?utf-8?B?dnNTdkFxY0IyendhWEhOT3B5WGpxL3dZRWVnd1JJSUE5UDNXd09wUlNFUGd6?=
 =?utf-8?B?ZDhwTTAzRzN6Z2NpNEwraHhyc1krY3JWNGI5OWpxUWcvanQvTVdLVnAyNFJX?=
 =?utf-8?B?YkZDMWVtRlVGbXFxU3hEbG1hWHhFRUxsNXEvaHpvcC9pZ2owL1VBWlZHNDda?=
 =?utf-8?B?VHJ2V21oeXUveTZOdnhmTmxIZ042SmkrUGRBTUlaR1NyN3QybVJLdWRwWmtO?=
 =?utf-8?B?SVUvclFwZUJUcHhocDFZams4K1I5RHFIbTFJbllQWVZGQXVkc25JRUM5QWU2?=
 =?utf-8?B?cDBzblhwcWJEKzRkOTgrenV2MnZLMlVxeEkyRmVkcUxxOHVJVHcvbzBtZUx6?=
 =?utf-8?B?eEpBRS9VNlpLVFhyQXdabmhrOFpWay9qKzYyVzZiRVNVTkw1L2VYQXdsOXJ0?=
 =?utf-8?B?N0NGV1RZaGJaM2VoVkl5aDVScFlwYXpWdUJYVnBoN3J1bHJqZEpmd2RSSDZi?=
 =?utf-8?B?d0ZKQy9NT2NubXE0czNKbDdxZXlXTmczbzhMSi96aTRUUzhlZVZpUnZkR2tK?=
 =?utf-8?B?M2RTdk51cHFYa3g4bzVCaDhOTDN0STNYSGJobnV2ZnlmL1BhaEZDYWxpbnhX?=
 =?utf-8?B?WGRQQnN0WCtXV1JCWmFGQVVNbUY2NkNtdU5TNkh6N0R4QkRmaFpla3cxQzdx?=
 =?utf-8?B?M2YxOEFGcExRRWpBQ0xJdTdiU1RMWjNFRDZNejVlM1JNbGFCVnArWW9oUjBr?=
 =?utf-8?B?Z0Y2NWYyTFVUV1lJS054VzRQV3RPcnhFNng3ZHh6VksyYmF0aVg4Qzl2U3ZC?=
 =?utf-8?B?NUZqRXliTm9kRUxEajJXbkZWZFlxQnB0TkRtM1RhT1F0cmN6MlVVaTVESnU2?=
 =?utf-8?B?Rk5STHlPek9WTk9STnZtT1RVakpWa2h3eC9FQSt3dE1nWjlIUlpFNmRSSC9a?=
 =?utf-8?B?MVVCSGs5VUFNcTZiVEMxUEFWVU13Z3BHRDhQMFJBeTJXUXRyM3dXQVBUcXB0?=
 =?utf-8?B?S0E4R2pRNy9NSC85UEFNaGx0bytYWFoxT0RycUpROVNvSGl1VW5iMk1qRDA5?=
 =?utf-8?B?aTd5QlFxblViWHphd1AwMUJwalhKT2V2eFcyd0RxR3dvL3FOOHhCbnRLczBY?=
 =?utf-8?B?aWFNcnAwNVQ1T2xubVpiQ1FCQW1uR1BxQk4yMkkxRUJLTjU0Nkg3cVdBVUxW?=
 =?utf-8?B?K3ZCa3pWMGJWUmVPMG5IbUlaTWtaa3owbnRoeEdIRGhXb3Q2SUt3WHhoZmVk?=
 =?utf-8?B?TVAwdzFWelJYaGZWaElZVGtnbzZETFZrWDBYbUN4YnFyOTBDbkhrZ0crNWRo?=
 =?utf-8?B?REdZVHJYdVc5QTV0OVl3cjZRWkxPSHlnWmhFanRZbUE2Z2grZGo1aUdLbzFB?=
 =?utf-8?B?QWxwc3poQ0NSanl1QnZ6SGhvdFVQY25oZEpPdm1kNFdtL1MzbXdxYjZpaFNa?=
 =?utf-8?B?ZnlQaUFzVXBXV0NpL3FBTitFNVRSYXoza29kaEJmSkRRREJ0YUNXS2hvVXJR?=
 =?utf-8?B?dVR1WTBKRHlTT2NMRUtIdEdLajNMaXFxbVVCS01KQkRxaWZ1RjZGckJlTU91?=
 =?utf-8?B?QUpLZDRlNzA4STFDT3ptVmRiTkllN2hKK1hDY2tYTWV0c2QvM3duV3N3Vnk4?=
 =?utf-8?B?cTAyQWFrcVlkaDZ6SXFpVGZubjIxdkJ6elBIMU5neTh6RzJZT2VHckFUc3Iw?=
 =?utf-8?B?cGMyT0ZZL3h0eUxQMm9CN25RaVlJRFU3aWpkSThWZHl5cXZmRzNRRWljQVBa?=
 =?utf-8?B?ai9VcjhiQzFJVUc0d0ZXbFJHUDhFcTJibzhiOVNzZXdMTzVuWXBxN1pwdUtX?=
 =?utf-8?B?MHBRenBvRTVEdVRiZ0Rjd0UzT292dVF3d0I1MDUwN3VyaTIvUWVOODdpSndH?=
 =?utf-8?B?N0JsekJEVU1UbHc3d1BhRE1idnU0cDBJS1hYZk0xcmhJclR4emZHTUswRkZ1?=
 =?utf-8?B?OW1id3VIV2hRZmxvUGpmaGh1R2xER2dnQTRZZU9FdzRwRDM3MHNraklxNXFP?=
 =?utf-8?B?U1R3TzVYSEJ6aDZvTGxnQ0RRRkFJUDNIRjVoeW1saDcxaXhRQWdTREtpWWdG?=
 =?utf-8?B?Smo1TXdMT0tmam5ZSjdVZjFuMU16NXlVOE9HSkgrTGQ3alg2QWtuQT09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 38c17849-82bc-43ce-2574-08df3e734db7
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 15:08:25.6683
 (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: iDJb1s1zpRlH380yno5RGqNhU5AVKAMZLRlQfZmok3J4Pb2gi6aP1BBLzOuM12WIrNba67bdtAXG5x4p66cEMxp7ddwQVB5mvo7Ac9qyvWw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT6PR03MB251506
X-purgate-ID: tlsNG-4011c0/1794236909-4BED2CFC-0007A3FD/0/0
X-purgate-type: clean
X-purgate-size: 388

On 05/11/2026 1:33 am, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
>
> Introduce performance counters for AVIC.
>
> Enable statistics reporing via new 'dump_posted_intr' mechanism.
>
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>

Xen has CONFIG_PERF_COUNTERS already.

Please see about using those, rather than inventing an ad-hoc mechanism.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:11:23 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:11:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480246.1684214 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQR1m-000289-6e; Mon, 09 Nov 2026 15:11:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480246.1684214; Mon, 09 Nov 2026 15:11:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQR1m-00027x-3y; Mon, 09 Nov 2026 15:11:22 +0000
Received: by outflank-mailman (input) for mailman id 1480246;
 Mon, 09 Nov 2026 15:11:21 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <marmarek@invisiblethingslab.com>) id 1xQR1k-00027l-Rp
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:11:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQR1j-00BBVa-Tr
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:11:20 +0100
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6af1e296-e002-0a2a0a5209dd-0a2a45049474-2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:11:19 +0100
Received: from [202.12.124.146] (helo=fout-b3-smtp.messagingengine.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <marmarek@invisiblethingslab.com>)
 id 6af1e296-b57f-0a2a45040019-ca0c7c92eac3-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:11:19 +0100
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
 by mailfout.stl.internal (Postfix) with ESMTP id 275B51D0019B
 for <xen-devel@lists.xenproject.org>; Mon,  9 Nov 2026 10:11:18 -0500 (EST)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-02.internal (MEProxy); Mon, 09 Nov 2026 10:11:18 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 9 Nov 2026 10:11:15 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm2 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm3 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1794237077;
	 x=1794323477; bh=Nd+fRP9whILnYPUlZQfICgG7JtYs+TR4N7HOnq8DRdk=; b=
	K896862vXnSdEyyhzPQ/AEzrw7RgATIS3U5GFkAN5Fzp+ktHcVfjDPuvFlu/VVtD
	JNIYPMVETUBCDd/4fN8jXZjcI7PLl1eFkWv+9xy2TtFZOkepP1T3FNQRw7mHDzsr
	+PM08vyuMrDRRRoS1cqTP3ho2Z+sgl02VlyWmlboUxGe5cDd2sN5aNblOd799BJx
	DsfYERXJ4MiO1Mh9X/CS/oVLyJ3uBcdz0bqOgRAZxcb+SsHAmCUtqeOuaNiLGVGH
	0PDceztthj1+kzhDoM1xPxxRhobfBAlIWzPy7EdAYTVXOWPYAr29hp8nCKxR31fS
	khUedMALcUqIl2Dk1z7lDA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=
	1794237077; x=1794323477; bh=Nd+fRP9whILnYPUlZQfICgG7JtYs+TR4N7H
	Onq8DRdk=; b=qhrqgFD4Ngl2H3RV8t9HxFVQvqfNlKa9ltlfSMGA6NjKpTuqipV
	PL0XgHVWRp/0nH7h1U9GQK3VAYZRIfQl5AxL3h2EW4nPJfAbLnu/NyNrJMTdaQzP
	UVe1hn1PK68AI8g682aIJZ6Ip1MTC6we5GID55wt5qdXbjGCfSn5N6ykJ08iayks
	oit23SSdMOoXelbBXFHnH7q8q8qz1o7amfNRH9f4jObby5mnVI2dot+6ke2ZFVmb
	OUnGi3iHeb0oS70jGpHex9bbQ9lhOSF6Q/1WGzSPscwRPlRuGt8A49RYtRR5hunp
	VUuoMyFU8Ufpr9rLFjtOttKxP4feRhYGx4A==
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=sign d=invisiblethingslab.com a=rsa-sha256;
DKIM2-Signature: i=1; m=1; t=1794237077; d=invisiblethingslab.com;
	mf=PG1hcm1hcmVrQGludmlzaWJsZXRoaW5nc2xhYi5jb20+;
	rt=PHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4=;
	s=fm2:rsa-sha256:GuP8rh4mMZmR/nt95Lfs7OLP4OPF5aGUvQDW6kLFOPqCuFk
	Zzm/ThOKpf5JyuCIpVBdLCCZMi+dRv1o5yKGaVIL86WCfJTnZlH6u5A1tWrW5DQu
	ZfhQg5RVucJKEKVYbTGqt1+qmRjKdARyeQO+tkVHLqD2RSm/n5aJaQI+CoGEUSPA
	MWwTGmzin8mgzeUkc9IHfRZWPwuGGEH2wjkonIX8KB8QhpwJlb2p0L5jZCf5u+MC
	7/sqJ9XpW137lLpVvqY588ztarBVN8j+GE5IInTzwCmnpWYSzyJU4WSaYkMz2jTH
	/cyEu6OixdP1swne/RvNxoBVj0hTNHTgnOJIIHw==;
X-DKIM2-Info: draft=ietf-dkim-dkim2-spec-09;
	repo=github.com/dkim2wg/interop; date=2026-11-03; sw=lmtpprox;
	action=mi-m=1; hc=12;
	hn=cc,content-disposition,content-type,date,feedback-id,from,
	in-reply-to,message-id,mime-version,references,subject,to;
Message-Instance: m=1; h=sha256:chz5SuMpke/YNteJKMrKgB6bCTJeu0LsX+TW1VdQJRA=:8sieIUTzEqsQ8Abwz2sXKuTlSp7usZPsv38mrNtd9/0=;
X-ME-Sender: <xms:leLxaiCCHsS-gCA_GqgshqFhc-yOtvMCE0OWeYefgUuyNlzRiyqn5Q>
    <xme:leLxaoWSl1zzyb4_v-mXCdR1V6ESbAnsTodzAUQ21RAw_O--9DVfIiu2he7c3WQMO
    ijVc6aAePodrfAJBSFl4m8meRg7O2g8Efbf0cagexSWlhnLVQ0>
X-ME-Received: <xmr:leLxag8aGstRB662mRVHohDmIb3Ay5ev2Pcrk4jkmsWbp8Tak9CPus4pK2jgq3APpFmN7PgbUxjNppAsG3eW5CGBAWTSFnX1iIEUN74w6q8>
X-ME-Proxy-Cause: dmFkZTFE392SYlY+fcZkcyT3ehmOEPFko1/oPZynWn6jTMhHDUIpM/XbUStHJRV+IJBPth
    WUcC8YBKhNjbLouCsOS/cAxsJAMOmIBx4x93kiC+ylv+PvlBN6Lwvx4ejTlrKT7LAEwYP4
    qOJLIU8GOZJO+whtXWWKxZKvHOUyuKlgrM2o+Co/o04uVGT6YQIEW4DrpxVFcsd86TbiDK
    yVxt8Box3rThkMfCU7IDzP4iLMR6lG6BeMIIkQLJePxbjTl9B6i8yy1VGSwIvALsYVuesO
    pqQeKtWCZnBEp4iAN33QIRo/cjrTnCC7AbGa9+s13DFTK1vUtC7JQxazrx0+G4ghJVMaR1
    3Tvzx6XNZSqDhocXjpvNyTXpN09hI0IpZA6WYaRa43Z8U7rxlf48q6Qr7gIeO3Ml3RJbbA
    0LRpGTwWS3K3tlxm663vkYzVuQsIL55d2PlBEXuoKvkYDTcAni+YeXC5fMvTWZuSLC8Jpx
    U+xg1BKSL2SMhbF3SndlzkC/uDxgLRUrNEa7hu9KiJlccF2+TgKRlJ2olXmihDWE7n3NFN
    Z01+cltl1C9vwq0OCFsUVrmbe7EbIkaUoxhFqtnOcZHyVvmzBxA+HIOBoeqnoJM9KHCjhG
    DjSi5AzIFRreYfPVMtwFx5p13mncu00wCazKYR+tyA+eqI9oAzrDQyKFcePQ
X-ME-Proxy: <xmx:leLxaqTPCCgRe0fQE3OyId1oAfmRJTYsQWziPb7eKTUtVI2-H8_Hew>
    <xmx:leLxalRXCODIca8-S2g-Pho1t6kQ_F9B1rprJ7IhKVINcQpxJ6DTBg>
    <xmx:leLxam54cWZKrS7RogPljkzN9JrUlW68kzRS6pg9X47ZD6aBTXotig>
    <xmx:leLxaqUohMMCKguuRtJ-mGd5WHdwBOSATEqtcThV68eUSrIWU4fXoA>
    <xmx:leLxakFwE8UUg2ON7KUAz0MpgrAkxela-6OjuiBiSa7C-SGu_5HvmqgY>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 9 Nov 2026 16:11:13 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] xen/efi: Handle efi_memmap with Xen relocating itself
Message-ID: <avHikdwM2wR-GpON@mail-itl>
References: <20261106231818.482564-1-jason.andryuk@amd.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="NjfjfO8wFjKcFDro"
Content-Disposition: inline
In-Reply-To: <20261106231818.482564-1-jason.andryuk@amd.com>
X-purgate-ID: tlsNG-ebf023/1794237079-51ED6B50-FD825C25/0/0
X-purgate-type: clean
X-purgate-size: 5442

--NjfjfO8wFjKcFDro
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 9 Nov 2026 16:11:13 +0100
From: Marek =?utf-8?B?PT91dGYtOD9RP01hcmN6eWtvd3NraS1HPUMzPUIzcmVja2k/PQ==?= <marmarek@invisiblethingslab.com>
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?PT91dGYtOD9CP1RXOXVic09wPz0=?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>
Subject: Re: [PATCH] xen/efi: Handle efi_memmap with Xen relocating itself

On Fri, Nov 06, 2026 at 06:18:18PM -0500, Jason Andryuk wrote:
> With Xen booting via Multiboot2/GRUB on an EFI platform, and modified to
> use MULTIBOOT2_LOAD_PREFERENCE_LOW, Xen relocates itself with
> move_xen().
>=20
> However a PVH dom0 shows:
> kernel: Failed to lookup header 0x77ffd000 in Xen memory map: error -3
> kernel: ACPI=3D0x77ffd000
>=20
> ... for all the Xen efi memory map lookups.  Dumping the memory map at
> runtime showed it was scrubbed.  Because Xen relocated itself, the
> original physical address referenced through a directmap address goes
> stale.
>=20
> Add efi_arch_mmap_buffer_virt() to convert from the initial value to an
> appropriate runtime value.  ARM uses Boot Services AllocatePool(), so it
> must continue to use DIRECTMAP_VIRT_START.
>=20
> For x86, we use an offset into the loaded Xen binary at the time of the
> call and add the to XEN_VIRT_START.  ebmalloc() allocates from the Xen
> image memory, so it moves during relocation.  xen_phys_start is set for
> xen.efi in efi_exit_boot(), but not for xen.gz, so it cannot be used
> Use `lea __image_base__(%rip)` to get the current load address, and use
> that to calculate the offset into the Xen image.  That offset is also
> valid from XEN_VIRT_START.
>=20
> Fixes: c5b9805bc1f7 ("efi: create new early memory allocator")
> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>

I did not tested this, but looks correct:
Reviewed-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

> ---
> I think it could be seen without MULTIBOOT2_LOAD_PREFERENCE_LOW if xen
> chose to relocate itself.  But since grub usually loads xen high, it
> doesn't relocate itself.
> ---
>  xen/arch/arm/efi/efi-boot.h |  5 +++++
>  xen/arch/x86/efi/efi-boot.h | 10 ++++++++++
>  xen/common/efi/boot.c       |  2 +-
>  3 files changed, 16 insertions(+), 1 deletion(-)
>=20
> diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
> index 069cc68b0a..717bd8d607 100644
> --- a/xen/arch/arm/efi/efi-boot.h
> +++ b/xen/arch/arm/efi/efi-boot.h
> @@ -449,6 +449,11 @@ static void *__init efi_arch_allocate_mmap_buffer(UI=
NTN map_size)
>      return ptr;
>  }
> =20
> +static void *__init efi_arch_mmap_buffer_virt(void *ptr)
> +{
> +    return ptr + DIRECTMAP_VIRT_START;
> +}
> +
>  static void __init efi_arch_edd(void)
>  {
>  }
> diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
> index d738b839ee..ffc277ccfd 100644
> --- a/xen/arch/x86/efi/efi-boot.h
> +++ b/xen/arch/x86/efi/efi-boot.h
> @@ -224,6 +224,16 @@ static void *__init efi_arch_allocate_mmap_buffer(UI=
NTN map_size)
>      return ebmalloc(map_size);
>  }
> =20
> +static void *__init efi_arch_mmap_buffer_virt(void *ptr)
> +{
> +    unsigned long load_base;
> +
> +    /* RIP-relative address is the current Xen load address. */
> +    asm("lea __image_base__(%%rip), %0" : "=3Dr" (load_base));
> +
> +    return ptr - load_base + XEN_VIRT_START;
> +}
> +
>  static void __init efi_arch_pre_exit_boot(void)
>  {
>      if ( !trampoline_phys )
> diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
> index 89b5831691..5396bad7a5 100644
> --- a/xen/common/efi/boot.c
> +++ b/xen/common/efi/boot.c
> @@ -1425,8 +1425,8 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHa=
ndle, EFI_SYSTEM_TABLE *Syste
>      /* Adjust pointers into EFI. */
>      efi_ct =3D (const void *)efi_ct + DIRECTMAP_VIRT_START;
>      efi_rs =3D (const void *)efi_rs + DIRECTMAP_VIRT_START;
> -    efi_memmap =3D (void *)efi_memmap + DIRECTMAP_VIRT_START;
>      efi_fw_vendor =3D (const void *)efi_fw_vendor + DIRECTMAP_VIRT_START;
> +    efi_memmap =3D efi_arch_mmap_buffer_virt(efi_memmap);
>  }
> =20
>  /* SAF-1-safe */
> --=20
> 2.34.1
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--NjfjfO8wFjKcFDro
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmrx4pEACgkQ24/THMrX
1yxMRwf+MeRnbd48+hnxrSMOuEF/P3YQjU9JQ0YCcSnBj+cl8y0HU18V09wlLcmr
GCT7mVpC4IbeuKWpJ82YJj/sKUSFE0ULQTGkK5nYEsK2oxy42eoHhD1qTrrMFZgW
aFpC2oLwDAHQxLX2c0kT+Ei/LYba+VohUZY3Rivinm8lJRWR9yph9mrRj4tenVLy
t+uDEHlgFI5lnMtNkdUeJEPhOJGBSVQThuUMJ8TAytu/IWatmqJQlasLu4QBUS0W
1el0q6Vt6tN/7f9znI2upDnRCJOiRCb6t+qlYv2Fh3zn0qwsWHDuvbMqrStIHlkf
B2zAV+B5eaW2qgsPtFLWvY7gPNeSkw==
=HgJX
-----END PGP SIGNATURE-----

--NjfjfO8wFjKcFDro--


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:22:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:22:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480261.1684223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRCb-0004VU-4B; Mon, 09 Nov 2026 15:22:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480261.1684223; Mon, 09 Nov 2026 15:22:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRCb-0004VN-1J; Mon, 09 Nov 2026 15:22:33 +0000
Received: by outflank-mailman (input) for mailman id 1480261;
 Mon, 09 Nov 2026 15:22:32 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0e75539000403d@swg.vates.tech>)
 id 1xQRCa-0004VH-7i
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:22:32 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQRCZ-009yBA-39
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:22:31 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0e75539000403d@swg.vates.tech>)
 id 6af1e537-bab6-0a2a0a5309dd-0a2a4506ca42-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:22:31 +0100
Received: from [185.255.28.35] (helo=prod-mta-13-02.swg-srv.net)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0e75539000403d@swg.vates.tech>)
 id 6af1e536-195a-0a2a45060019-b9ff1c23911b-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:22:30 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-02.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c0e75539000403d.001 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 15:22:28 +0000
Received: from [192.168.1.52] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 00F0581CDC
 for <xen-devel@lists.xenproject.org>; Mon,  9 Nov 2026 16:22:27 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=uSMBe9Lg5LmrTKUirt02A7ljUKbmyPQudO3IPhv1/so=;
 h=from:subject:date:message-id:to:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=ZRuJUOh/Tgje65dbUxGxJOIZwo77JtBzCA6kHhQXjbm/zlqcL92LAkp/FfCoi36HWQqN8WH2I
 ozC81/SYkFcK254jCxJcIdORoNM1aLzFEaD0okdX+oVH1a3RX+XefyBIDrY0q6P1MMYDDGiBrVF
 Tx6a5baQloyLx+MH41yZM7uswVd06jFajjIN89XeCGoYqIGm62Ui+eeo7dttzlkONnBgigi+6eD
 QrRtcNzQercp88aUVHPJFmHM/pAu2v0Hokf2axIVHM1cDu3mahHynGfbT8i4W5ogvl4acltUdOV
 m4wpKBljza31DqUNn0N2h8PfwaCPhIOF0dqCg6KNd2uA==
X-Zone-Loop: 601e8cda1237830f3f1ba8a86f5e38b9a4eb334eb061
x-campaign-type: default
x-transaction-id: 863fa99b-d75d-4945-a06f-2ba01fb28e77
x-swg-uid: 01-7e290151-fc1a-4c92-b9c2-758640ad2f0a
X-Mailer: Sweego
Message-ID:
 <1794237748.8631fc262581453bbf619ec5b2062170.1a1c0e75539000403d@vates.tech>
x-swg-bid: 1794237748.8631fc262581453bbf619ec5b2062170.1a1c0e75539000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
Date: Mon, 9 Nov 2026 16:22:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/39] xen/riscv: remap interrupts to new IMSIC VS-file
To: xen-devel@lists.xenproject.org
References: <cover.1790779209.git.oleksii.kurochko@gmail.com>
 <45011daea86267b8f4b707bc7de6357b0712fb08.1790779209.git.oleksii.kurochko@gmail.com>
 <1793023599.8631fc262581453bbf619ec5b2062170.1a17888e252000f79f@vates.tech>
 <d272b357-b5cc-42e6-9a84-753f361ad278@gmail.com>
 <1793971568.8631fc262581453bbf619ec5b2062170.1a1b109bd79000403d@vates.tech>
 <294b2a3f-ba42-4e04-afa1-ee56ffe7133b@gmail.com>
 <17fe3d2b-8d48-4926-ae4c-14fedf74ea8a@gmail.com>
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
Content-Language: en-US
Autocrypt: addr=baptiste.le-duc@vates.tech; keydata=
 xsBNBGoPSX8BCADSuTikqW3FD4mscQugY1thRaKlIhcJ2G9YCWYXAlp+xosvTlzfIftOZZim
 750MLvyKtLPkQzB6TZtFZBiexSraaF/MdDKRTT5DcVa3r7ZnHgqMclWlPa4ioysS4yFcJanL
 cyNOT7HUFvIdirMMqiViedfYtS0GORPBBPVISD6ClMz3ecHIxqllfq9CHYQn4amKEfHmh6tm
 Rufo4Gjl6x8cUFZZlRQf+aCmUzdSPA0P5u3sueYH1uEz4w/jbD53MlKqzCvxUeOsfS2swTQA
 6mS9jIgOjNadpUTOzKfDHMgFirtG+HFpm45Nwp6KQizxgDVOfTnOfVHm5Gwqm3ETl9y5ABEB
 AAHNPEJhcHRpc3RlIExlIER1YyAoVmF0ZXMgWXViaWtleSkgPGJhcHRpc3RlLmxlLWR1Y0B2
 YXRlcy50ZWNoPsLAjgQTAQoAOBYhBGiSJ6HgW88MgT/gfu2Cu2XL9M6QBQJqD0l/AhsDBQsJ
 CAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO2Cu2XL9M6QuMcH/ihiy/Nrxp919AmY0ENnc0NK
 r/2LDvW/hrX4FfbpxAmrGmQ7MU1aQTk0JDbfcsG8OYH6wO5sqnXb1gz50YrEdpfVSbHz5YTZ
 EhDIxE4g7NrvJZh3Qc0m0CAyjYTNHen7J6olVaCMjrOH7uRHUYZ7Pl3am9mZosfLmez/aWJO
 a6ihQxBXHI75brlk1teIURkep2kP7P0Flmfl4cA//saREoTF7GXCtjOSQk/xg8PP0Sswqp5G
 TdJptn3FQn6lAzfz0eFSYqkaoX2c2k1MDa7o+UX9cfGPL8ybMKnYkasLxck6eOWGJWf+YTrm
 ga/r0kBaftmqNDgt5nI2jNTDwZcT9g3OwE0Eag9JfwEIAM6IWbuBSvz+erv27oGDDpo8M6Fp
 dGUvft7v+WceHUfxiXpYFx9qgIU6XGy6y+3lJMAvNcltS8DuhioqMlfKRSYGKZlpliY65dNP
 557IuM4ctVJ+I9CVclvv9eahARQKgF5auLJAAlvGSmU+ufNvlwTUmLIRcrPviTmB6X5jJYc+
 fiNeyI0HcsgcN21C0r62tUCypuZ+vgEJXw2bx1V8mVGZKxdGJPh58QF6kRK+xmd4kEComLGV
 BeM6BcVOtEjDcGNC0tLhXb0p9g1Ys55iA8sd6s4WacyolW2J6rwmcOkjiWexWw1caYgIWAV1
 004M3gwUaOz0dGq2i7HQ0AiVfVkAEQEAAcLAdgQYAQoAIBYhBGiSJ6HgW88MgT/gfu2Cu2XL
 9M6QBQJqD0l/AhsMAAoJEO2Cu2XL9M6QovYH/RjstyL5o/V5K74ylBtz0j5t3pLX5JKbwApi
 656rGgDdqElImyvvZppNMl/mgHNzvxmfFAhJXnSX9f1fqVEQKOGEhLUastnl/ssBiE5x7btM
 V0GAffxXbXJZbVv4b/DI+gVrOPc2YXlVwruapvTZNtD3hqPrkjrmq5WTtGR2loIVSe62hmh0
 BGD2Fy79b/hYWyBqhayPBEjwGW75u4/yn+Yqy1PgG3hIcvg7GSuT3akhHZSB2Mbguzcoyf9Q
 DJl6t33JxPRkkNrEdkPPmRlQCTSiUkVjKqMDF3jlINWsJ5t4jKFsNF91ksdw7aQgiX+tQIpE
 ugMC1NuNi5dDGip66bw=
In-Reply-To: <17fe3d2b-8d48-4926-ae4c-14fedf74ea8a@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794237748043
X-purgate-ID: tlsNG-16d1c6/1794237751-F687577B-C300925B/0/0
X-purgate-type: clean
X-purgate-size: 639



On 11/9/26 4:02 PM, Oleksii Kurochko wrote:
> Would you be okay with such explanation:
> 
> vgein_release() takes the pCPU the VGEIN belongs to explicitly rather
> than relying on v->processor, as the two may differ: a vCPU moved to
> another pCPU has to release the VGEIN of the pCPU it leaves, while
> v->processor already names the new one. As the bitmap of a pCPU may thus
> be changed from another pCPU, it is protected by a lock.
> 
> I tried to write in the way as it is requirement to API rather than a 
> description of the code which will be introduced later somewhere in "=== 
> migration"
LGTM!
> ~ Oleksii



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:24:37 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:24:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480269.1684232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQREa-0005Dz-F8; Mon, 09 Nov 2026 15:24:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480269.1684232; Mon, 09 Nov 2026 15:24:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQREa-0005Dr-Bm; Mon, 09 Nov 2026 15:24:36 +0000
Received: by outflank-mailman (input) for mailman id 1480269;
 Mon, 09 Nov 2026 15:24:34 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQREY-0005DJ-Jx
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:24:34 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQREX-004O8z-Q4
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:24:33 +0100
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1e59d-2eae-0a2a0a5409dd-0a2a4502951e-38
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:24:33 +0100
Received: from [52.101.85.6]
 (helo=BYAPR05CU005.outbound.protection.outlook.com)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1e5af-6ca4-0a2a45020019-34655506dd29-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:24:32 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA6PR03MB8000.namprd03.prod.outlook.com (2603:10b6:806:42f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 15:24:29 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 15:24:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=oj+Uu8FV+73lclDiBsAMcGE/w6LVPKzcyxfm88l29J9OXuFYDo91WKeefHqEK6nPMs/EYOTN6ifoECtWkvMhdzoNgroWgAin31HdDo6eox/fclYdllmpdSGKh9Zj/KfaqKkTNCXB5FQi0xEnQtQ6sGbtu+GVdZW/NHHbBN7IbzTCBqQVJb750fVxHvW5qfa8WIb9TsbYJ8GzCjUgbyJc5N6J7LX0sOACIeKFo7RBP9Y11DTB6PBdaoKjlgnALCOVLXP8yZ6lxRSug8bQ0CXNOfR+t/Zq+MKqb+w8DzK0j8a7qnGXAQtKOA78YWcHGGiUONJH3DlLeM5KIHk/24BSLg==
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=9bZNplKRRRnkkBx2EIY3wvJUVvyDK8glfRxVjYFGw4k=;
 b=I7IaRUW03En6/XH0hc9t3//gVuc6QuX3e+Ra2u/G+jllerG4qYODYO+6BRggyZqlB7r9zBgz7Dv3upSL5z9MVYQdqeFyIHfMpnpO+xzHVijQ19lYK7D56L+XgBULghod08kTboaYyXkf8vdRloAtkDcyBUGMAxKZfyT8WqRIRZh2ZnT7/4+0I+qa5ZRv8Vs6n/CbQjGsDl/iUFKoqEWjudsP0kIvGRUDeN/w2cMY/GdaAkgRg01lBsvgkxqJz16pSk22Oimib8lXWkbopT4WPqQzxQXjJRP3oFZpU07DEZEJsF8flLutM72ds1530PyahXE66EExlypO+XB9DlINCA==
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=9bZNplKRRRnkkBx2EIY3wvJUVvyDK8glfRxVjYFGw4k=;
 b=VsSg8YQFiugFImz7OipfWTQokplWfoCWagGbAahdSp6HDNdNmpcpygWmOvnJPU8JovfYnrVAVYqZeNORXgDW2ZprnV4Mb2JVAJeLyHWX8zduSGve01UPj92d0quIMPR8feC1JC3cfvK3qJWkEyJAaS+sGZL+Ay40pF4Dpil8kTQ=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <e62245b7-0510-4e18-8789-045726f113cd@citrix.com>
Date: Mon, 9 Nov 2026 15:24:18 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech
Subject: Re: [PATCH v4 1/5] x86: extend update_intpte() to support atomic
 get-and-update
To: Kevin Lampis <kevin.lampis@citrix.com>, xen-devel@lists.xenproject.org
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-2-kevin.lampis@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261016164815.3109065-2-kevin.lampis@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0223.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a6::12) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA6PR03MB8000:EE_
X-MS-Office365-Filtering-Correlation-Id: fba99f5b-9d5b-44ca-ca58-08df3e758bd6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|22082099003|18002099003|10067099003|4143699003|11063799006|261102123227099003|56012099006|261021123027099003|261021121427099003|261026121527099003|261009223027099003;
X-Microsoft-Antispam-Message-Info:
	Z/ulIEub9eb09UOsdcj9A6aY5A7S4+/Ry6iqkCw42Rz1531EqG1eMLoUw/eBvU2CIhWRoRacWYaDHtVcbwziFQnYUo+jQW2yhBvW+Uor1M2IsBr+jdAMRiZoaJ3WRMPAAxHyiLJsVC7oFPkbSkoSOm2YnVH4C9g68porSVhYMXsvExnmuCGuAxB8gQx3S2JbEgPX4MM4iNW6rFes1AH6LsTxS31rkRuEYt4xQZWEkUhTPNHfGFDkJrPj7G9q7U0Swr+4YHayx0BSqQKIYDav7i7wnONHGTDdTQe5rXogpof8+O1G4577fYPVCeTWsZvRdtXSnSjS8Q6p3I4wxhx6APHmL+kQaCZDDL/jIUapVkWWnTm5eZC9WH6Pf8QR8ol0dCttlb0PAGZ3SNVKjC6ltMRiVScY59s3YjldDZOYj5E/d9xuXx8FY9zNCl7CsxuYfpylgLk9evd6zekZqIfHCPEm7FLvH+WQedEZ1Ng0Iqo5vlfwe5ibK9VUnqZ9eCGjO/BEh1YDRduHg9BSPyQYQBEVRzJZ5T+J307krZY2mrv6Lz2l5bcPEqBpfsFZ+5TVFLGglHpQGKipLBpDGu1EwdLGHr55y648/ANBnHPlBjzxlRVDdHJqBJqlH6meQ1G+9mzA9dtHmfwR7kS8XnGnDg==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(22082099003)(18002099003)(10067099003)(4143699003)(11063799006)(261102123227099003)(56012099006)(261021123027099003)(261021121427099003)(261026121527099003)(261009223027099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MWVWbFY3V0V4eTJTWXlhck9sc0dBQnlQNERabm00SnM0ZmQ2WmxUWHVSSnhn?=
 =?utf-8?B?VXhnTjZhWEVMR2lTR2FmSjVveU5mRElZekEyZ01WVFZwWXVPeFVPYUw5ZUpQ?=
 =?utf-8?B?allMeEhITE1VQ3M3bnNjcjNPVVQzRlRlZ3E2aUtOUzBrRmhVUHlldWhzbmlm?=
 =?utf-8?B?K2hJOFVMYVJQcDhMQ2M2blMxbFdxUnFDV1FUcWxzNXozOUJmUjMxd1BnYkdG?=
 =?utf-8?B?TmcvNytSQkxJdmY5VVEzUlVPbHE2dVFIT1J0dkpUZUp5Ty9tS0NIUjFNWmZ4?=
 =?utf-8?B?QVE4RUFPMDdRclYyKyt4eVlSQ3ZyYVJJK1FRU28zTHRlZXlmcmFlMS96QTVZ?=
 =?utf-8?B?SGo1TG5TU2k2T0FZdGxMekhVMTRIcnVVTnZQU0U5b1VDakJPK1FCRWtkUGZI?=
 =?utf-8?B?cVhidXBwR2ZEbTlNYVpJM3VocHJ6aXppRnhMend5RlpiSzRFSWtib01oMTBO?=
 =?utf-8?B?eCtORWQyVGlpMnJXQ0h5bFRVS3dSaFlBc3VXdGZYZFVwb0JwYXFQR1RQSjYv?=
 =?utf-8?B?eE5WMDZ2UGpvb2x4THdKSzJzSDBySmhvMHdJdWo4YzU2eStPaldxSWlOT09L?=
 =?utf-8?B?WHVtdFNtaVpLcXU2Rm9LeDJ4cjNTNzRKaHN4bU4rdWxvNldYYUl4blgrclVy?=
 =?utf-8?B?a21PdENxMUFkbUQ4N2x5cEowVGJJUFVNYkxySmVjMnNMT2d6WU5QTG1kOG12?=
 =?utf-8?B?T0hIeWJZbUs0bENKWmlkMEJ1OHlWdEtiSnVRM1lPWDMzMnpaS2lyejRkMUVt?=
 =?utf-8?B?aDRFUENwTEh2cHI0RkFoKzlVZDBQR3JCeDRWdEFJYTZiT1lPOVBidnoxMDhR?=
 =?utf-8?B?blh0WFJkS0Q5YWczOFRDdXFXYlZiWW0vbTgrUlFoMFhQU0JIU1ptN2NubGRp?=
 =?utf-8?B?aDlnUHRWRnJPSXdMMGtkZnMvWCtpN2xJVGNGK0NBdVZhZlVwNzR0akQ1Tktz?=
 =?utf-8?B?WFFWeFpYQzA3cWZUdkRmZ2liY2svOTI1a1hJYjZpdERGNzlYYURXbjA5TW1p?=
 =?utf-8?B?cFM3dTgxUURLVEpQWTZHOXFsUVZWRW1rRlhGeTl3WmpCeUdTNU5UOVJwcG5s?=
 =?utf-8?B?b25jU2pCelZTS2s2MnVUVkNpNC9ZN2V5RkNlelpZeHFYTVQ5OGJzR24zT3B5?=
 =?utf-8?B?SjZ4LytudVRmL1N3aXV4MGd2NmV6bHJXYmd5QXhiOHg1Y1YyVFFDWCtReWto?=
 =?utf-8?B?Q3MvUFFWMGlldWZwQ29mTVhKbnVIN05JNGJqWENRdEUxZWVYUi8zT1BZUG1o?=
 =?utf-8?B?Z2UwTXc5Zkc1cWFZZ2FLbGlENFlhYlFBMnlLaVJ0ZldiV2M5UkdIYjRVWXV1?=
 =?utf-8?B?K1BTb2cxQmgya0w2T3FBUlg2R016RkNwOGVrd3ZkT3hQQTBvOFhTQU5CUzMv?=
 =?utf-8?B?MTIyS2pBcHBIdlNhdFlPUnloZndRYktoTlluSDdFeGhsS25MbkNaeUpRZUZQ?=
 =?utf-8?B?RE5rU2Iwb05XRHVXSU83endnZFJHWDV5WE15Ny9IbVhKRHhWdnlqRTJIM3c2?=
 =?utf-8?B?MFZyMlpxZkIzSWtETEV5QXNPTlRsZWl3cWlKNEJHa01TdTJrV1Jpay9DRlpC?=
 =?utf-8?B?NTAyMi9uWHZrSmo1L3g0NlV2VlB6SldrS2ZXSEVoejd5K1A2NWpvUkR2ck1y?=
 =?utf-8?B?YWpFc3F3VUM1RGZLSS9WNnB0bDFNbVdhQWk0TUwycnRNQ3FLRlU3WUlLL3Rl?=
 =?utf-8?B?Z0VNL3R0YkRvMHA0NGZ4bFgzRjBxU0FCZlo1cjk3dHNIOU4reGN5ck9velNX?=
 =?utf-8?B?Y0dpQWM3bmdWNkF3aGhMWkUyTTBHWitLeFU0cmpNdjc3bU01WHZsWDREa2Ru?=
 =?utf-8?B?cTkxNmVkRFJrNFBxUHJIVjZlR3FpTFBUZG9vQklIUUdJSE1XWFVYYi81SlVn?=
 =?utf-8?B?bGE4MmNNRmlncUN2NHFlZ291M1g1bFpFYkhxUXEyczZmTldKVk9aSUtzN21s?=
 =?utf-8?B?R1UveE0yaGUzaHViOE1rdzc4czYzS1FiZlp0QndNcnE4RDZTNVpud1hWeGNN?=
 =?utf-8?B?SkJQM1NoaEdqbEVBUndqNjYrSEk5elRha0syV0JhZkdpNjhTbU9UR3hyanJJ?=
 =?utf-8?B?VGVTazNyakpNMjRyYzR4bmNNWko5UWZaRDBWRnRINUx0Z2w2NGIrenJyT21x?=
 =?utf-8?B?USt1ak5LUEJoQ3hRMC81TDFQOVdGamcyUDlpYzZlSmd5T3laL0FuTjFWYlYx?=
 =?utf-8?B?SmRXQ2J6MEdLb09SejZPSVczOFA3UkhBbEc1UU9JbDJFUjU1ZDhSVEpyc2ll?=
 =?utf-8?B?KzRSYU1KZ0hvUUZ2Y0J3cXJpa3h4ZDdqRmFORGNyWTMrM1JpWTZXbHBLbnFx?=
 =?utf-8?B?Z242ZmZDVkZFSE4wUTYxc3hZOG5UUjBnWCtRUE1seUN4aW90UDNjZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fba99f5b-9d5b-44ca-ca58-08df3e758bd6
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 15:24:28.8796
 (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: /Ossg3eEZ/FhN8rhDVxfhVrx1dmOWtUC98fd+gKlnNstVCfQ5gGImL4QE+SaGlOT3QQPqDF2tSCejLLudXgsuFfzej00+O1uMlvFO9C7CYA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR03MB8000
X-purgate-ID: tlsNG-720697/1794237873-313CC2AC-0D83E476/0/0
X-purgate-type: clean
X-purgate-size: 1793

On 16/10/2026 5:48 pm, Kevin Lampis wrote:
> The update_intpte() now accepts a new swap flag and if set
> returns the old pte value.
>
> No functional change for existing callers.
>
> Signed-off-by: Kevin Lampis <kevin.lampis@citrix.com>
> ---
> Changes in v4:
> - Remove UPDATE_ENTRY_SWAP
> - Don't move the backslashes in UPDATE_ENTRY
>
> Changes in v3:
> - Return 0 in the paging_write_guest_entry() case (update_intpte)
> - Add UPDATE_ENTRY_SWAP to convert return value to correct type
>
> Changes in v2:
> - Add new PTE_UPDATE_SWAP flag instead of a bool argument
> - Return the old pte value instead of turning `old` into an out pointer
> ---
>  xen/arch/x86/pv/mm.h | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h
> index bfee0feb7b21..381a0e25b986 100644
> --- a/xen/arch/x86/pv/mm.h
> +++ b/xen/arch/x86/pv/mm.h
> @@ -64,16 +64,22 @@ static inline intpte_t paging_cmpxchg_guest_entry(
>  
>  #define PTE_UPDATE_PRESERVE_AD  (1u << 0)
>  #define PTE_UPDATE_NO_TRANSLATE (1u << 1)
> +#define PTE_UPDATE_SWAP         (1u << 2)
>  
>  /*
>   * How to write an entry to the guest pagetables.
> + * If the SWAP flag is set then does an atomic swap and returns the old PTE
> + * value, otherwise returns 0.

This isn't quite true.  It will also return the old PTE for PRESERVE_AD,
and unconditionally in debug builds which set PTE_UPDATE_WITH_CMPXCHG.

I'd be tempted to just finish the sentence at "value."   SWAP is the
only one we care about giving a guarantee of a return, and the other
cases are far easier to see from looking at the function rather than
attempting to describe in the comment.

I can fix this up on commit if you're happy.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 15:39:14 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 15:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480276.1684241 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRSY-0007lW-MI; Mon, 09 Nov 2026 15:39:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480276.1684241; Mon, 09 Nov 2026 15:39:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRSY-0007lP-JJ; Mon, 09 Nov 2026 15:39:02 +0000
Received: by outflank-mailman (input) for mailman id 1480276;
 Mon, 09 Nov 2026 15:39:01 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0f65b65000403d@swg.vates.tech>)
 id 1xQRSX-0007lC-DC
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 15:39:01 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQRSW-00A1f0-B2
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:39:00 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0f65b65000403d@swg.vates.tech>)
 id 6af1e90b-2eae-0a2a0a5409dd-0a2a4509d8ac-30
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:39:00 +0100
Received: from [185.255.28.34] (helo=prod-mta-13-01.swg-srv.net)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from
 <prod-mta-13.8631fc262581453bbf619ec5b2062170.1a1c0f65b65000403d@swg.vates.tech>)
 id 6af1e913-be1a-0a2a45090019-b9ff1c22b70f-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 16:39:00 +0100
Received: from mail2.vates.fr ([37.26.189.201] mail2.vates.fr)
 (Authenticated sender:
 8631fc262581453bbf619ec5b2062170/smtp/7773de5a-2839-4720-82ee-e06722ae1d3e)
 by prod-mta-13-01.swg-srv.net (ZoneMTA - prod-mta-13) with ESMTPSA id
 1a1c0f65b65000403d.007 for <xen-devel@lists.xenproject.org>
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Mon, 09 Nov 2026 15:38:53 +0000
Received: from [100.68.94.6] (areims-651-1-80-194.w90-18.abo.wanadoo.fr
 [90.18.187.194]) (Authenticated sender: baptiste.le-duc)
 by mail2.vates.fr (Postfix) with ESMTPSA id 6F7118012E;
 Mon,  9 Nov 2026 16:38:52 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=vates.tech header.i="@vates.tech" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References:Feedback-ID"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
 q=dns/txt; s=selector1; bh=98U0mkewvjjOqMX7QV7RfffEf2ijQLV0ugwIJ+BGr2c=;
 h=from:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references:feedback-id;
 b=gDT+KWt7A9BTF54Woo+KeZsG1jWbamcdbLF8SiwXc0g50ASHzH7KUtjV8bs87+L37l7+nSo2w
 pqdND8LjYbAef6Qu/pqNqI+vABKPnnIdpzdQxjjiQdtq5lV0oNyz4M83q7tFSUg4O6Wc0UKKVXh
 0vzkqvZtaI0RLi3Y1ooFNVZO2GKtFmbmcje8p6RRb+AwO6QJAdqHvFbb++diCCUkSuY3ULjZcqH
 UFNuqda3Hk2e9ZBWCOcNALY3QBy4ciC52juVbodWzVnnhoM3RijAutsK3swNpqCqPLBR9iCykcU
 jMMXONvtwQa0Eclv2Y04EbnFdyXZWHCT4Usw9waBFQ9w==
X-Zone-Loop: bfd1624eb8e1eda7fcde018f29a87ae855346d551af8
x-campaign-type: default
x-transaction-id: 9fa28102-1319-47d3-824f-df9b0fdea727
x-swg-uid: 01-821f684a-a4ba-4954-b292-06939cbdc61d
X-Mailer: Sweego
Message-ID:
 <1794238733.8631fc262581453bbf619ec5b2062170.1a1c0f65b65000403d@vates.tech>
x-swg-bid: 1794238733.8631fc262581453bbf619ec5b2062170.1a1c0f65b65000403d
Feedback-ID: default:8631fc262581453bbf619ec5b2062170:Sweego
x-campaign-id: default
x-client-id: 8631fc262581453bbf619ec5b2062170
X-Originating-IP: [37.26.189.201]
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Re: [PATCH v7 1/3] xen/mm: Introduce per-node free page counter
From: Baptiste Le Duc <baptiste.le-duc@vates.tech>
To: Bernhard Kaindl <bernhard.kaindl@citrix.com>
Cc: xen-devel@lists.xenproject.org, 
 Andrew Cooper <andrew.cooper3@citrix.com>, 
 Anthony PERARD <anthony.perard@vates.tech>, 
 Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Julien Grall <julien@xen.org>, 
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, 
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
In-Reply-To: <a0b83b0781319009c3862389469dc59db59e0b29.1778272036.git.bernhard.kaindl@citrix.com>
References: <cover.1778272036.git.bernhard.kaindl@citrix.com>
 <a0b83b0781319009c3862389469dc59db59e0b29.1778272036.git.bernhard.kaindl@citrix.com>
Date: Mon, 09 Nov 2026 16:38:45 +0100
X-Developer-Signature: v=1; a=ed25519-sha256; t=1794238727; l=492;
 i=baptiste.le-duc@vates.tech; s=20260810; h=from:subject:message-id;
 bh=34rk53i0/dLhlw7aAdZs219r0K8iiPgDDqN14NJckbw=;
 b=DwEtssSAziKxqcg4MtpMzxYBk/oQQvtjjzqfZf4uhUD6skguFpkYe0K3UpXuNrVtws5O45nin
 FEE41R9z6NkAu+qrnw8R9eZOXONqy1x/7kYjG0HLqF3mnPa8tYtjlVh
X-Developer-Key: i=baptiste.le-duc@vates.tech; a=ed25519;
 pk=N+BbdvMXRzrCuX/ieh4RWodiAKcLNvI+KjflcZ0oXCo=
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1794238732614
X-purgate-ID: tlsNG-bad1c0/1794238740-FC411034-BC1567D3/0/0
X-purgate-type: clean
X-purgate-size: 492

On Fri, 08 May 2026 21:27:57 +0100, Bernhard Kaindl <bernhard.kaindl@citrix.com> wrote:
> Add node_avail_pages[], updated under heap_lock in sync with
> avail[node][zone] to cache the per-node sum of free pages.
> 
> Use it in avail_node_heap_pages() to avoid summing all zones on each
> call. Guard it with nodeid < MAX_NUMNODES and node_online(nodeid).
> 
> 
> [...]

Reviewed-by: Baptiste Le Duc <baptiste.le-duc@vates.tech>

-- 
Baptiste Le Duc <baptiste.le-duc@vates.tech>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 16:06:56 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 16:06:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480285.1684251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRtR-0005ZH-NI; Mon, 09 Nov 2026 16:06:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480285.1684251; Mon, 09 Nov 2026 16:06:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQRtR-0005ZA-K3; Mon, 09 Nov 2026 16:06:49 +0000
Received: by outflank-mailman (input) for mailman id 1480285;
 Mon, 09 Nov 2026 16:06:48 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <kevin.lampis@citrix.com>) id 1xQRtP-0005Z4-TP
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:06:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQRtO-004V8E-SN
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:06:46 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <kevin.lampis@citrix.com>)
 id 6af1ef86-8faa-0a2a0a5109dd-0a2a4508e51a-24
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 17:06:46 +0100
Received: from [40.107.209.43]
 (helo=PH8PR06CU001.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <kevin.lampis@citrix.com>)
 id 6af1ef95-f659-0a2a45080019-286bd12b5e79-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 17:06:46 +0100
Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8)
 by PH0PR03MB5878.namprd03.prod.outlook.com (2603:10b6:510:34::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 16:06:43 +0000
Received: from BY1PR03MB7996.namprd03.prod.outlook.com
 ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com
 ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 16:06:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=kTXgq/TY28GsmL6A0k272O1m7hkc4Bo8XS9eR3Wfv4OVQNZiMrK0JAKmXkViBqecSvTCpsOhBXIZdB0IZolpCKSOOy3JahPn9ihXYxoMXnwN/yJAULcO2UYpMigRhRF62SEfn2OSV/OwRhGXu9QGgJEtYFtbaLia+f+sCX33Y9eQiW+v/v9+VhZqVsPZ4k2gMPoj9eS5gQUX0jl6btArjGG4GNNRUEhB1f8A1E742rd5c0L9HfOH/NzSyDIV6Tksn90P0U0yAr3Jaa8X52ZcXPQM/EifFXnu9neepyTJXtB0rPlUR5YAvxQc4725q/NHh1hBCOWjtSgldW/PfjY6Dg==
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=BrBbg9qeRNTGjbHN/zoZou3tzMWl+pK0l51KwI7ES9Q=;
 b=HvcYL3JLwpgfBtTUirMbd8FB/xQnoiA9HEIeOf04peksQEsz9z84EEOI3/wT7cycopdPS5ZDP4fR7vSUvU+1kebS82r3A3Pr3AZH3bueyvGp3hk3DKmzTzQXiGIlhbT/dXksyxaMqlOnQvleSxBqYDf/CqqYU2XZ0bxjzS4gs6YjXM/JMEq0atkceUYmclv45bXu0Pwn+DyG7VWLdnZSXgn4iy3+h4Qs0mevOb37WfP3X+o3YcX9tHsabZJqSRZRnyzDL0r6Ri07QwiFL1TZcP6QfIawuMLtw4cOZrrFI54OjvegE4B8XZ1XB0cewBzKv1FJUlrybWZYUWOgyczlMg==
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=BrBbg9qeRNTGjbHN/zoZou3tzMWl+pK0l51KwI7ES9Q=;
 b=lf7Ug5XR0a06yoYCxcT1xfrFFP3qmOnp/mHB1NY0FU1yuCAqGX1ZLnFnNL9eC1Fmz+/JyrD2QPvRJPhHdsT3Mcf32QCiVS/QW56/4cQm6XIPIE9HJn8sMq8U16C2kAn9r90LGSappLUbZViWyKYJfLxJVni0jAUZMU5K412xj5M=
From: Kevin Lampis <kevin.lampis@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: "jbeulich@suse.com" <jbeulich@suse.com>, "roger@xenproject.org"
	<roger@xenproject.org>, "teddy.astie@vates.tech" <teddy.astie@vates.tech>
Subject: Re: [PATCH v4 1/5] x86: extend update_intpte() to support atomic
 get-and-update
Thread-Topic: [PATCH v4 1/5] x86: extend update_intpte() to support atomic
 get-and-update
Thread-Index: AQHdXY3RINolFVW7cESfMxyPtk2hkrcmAaoAgAALdDY=
Date: Mon, 9 Nov 2026 16:06:43 +0000
Message-ID:
 <BY1PR03MB7996CAE748F45AA16ABD3EEBF3732@BY1PR03MB7996.namprd03.prod.outlook.com>
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-2-kevin.lampis@citrix.com>
 <e62245b7-0510-4e18-8789-045726f113cd@citrix.com>
In-Reply-To: <e62245b7-0510-4e18-8789-045726f113cd@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BY1PR03MB7996:EE_|PH0PR03MB5878:EE_
x-ms-office365-filtering-correlation-id: 20bd1e6b-2117-44b7-cb2a-08df3e7b72ab
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|22082099003|18002099003|10067099003|38070700021|4143699003|11063799006|56012099006;
x-microsoft-antispam-message-info:
 AB0HFCHt17Ad/kZBXSub/5A1Q16hNxYC0z6Nv8Tt4/mreu9qyh5Rg2KtlyA2/7WE8Qoj48Pfdk1dbFZ77bkJSHjuGLLgVzngNLjncJGi+upFqxgKeDK/nm3lKuf8VenUkVICEx/jrjhvZACrs9zpZjlBo0x3LgTSMfpcyl53+e+It4rJ8z8xFas6sOqp0Ih6lxwaE4H11aIPzF3fohJm7IJcODnvfX3cqvof+g/XVi63TSJ6Usm0MRRbK0i/zjmkIZ6AOIX8TNDw88Nnn+b1+Cikh9d7KHzWgWJ08sV0Er+EpmaoYWU96Kl2b+GoxR8xHK7czSpZhZisCMCOansO90uBcR2PusYenirm6O/I0m1PqriaoGN7vnApFpOj2nPoDyVsUNIloskwq2WkcJVmg03laOcz3jCnz/HilNn/Ef6DAqmzYYjaq7gulfmSSFyYqojXkn7iVSU++8EgJbhCPgzRzKlBmUsBYdeDWoNBKpSIxFV8L6ycsDTcJndAMue6XsaV+Cht+mmQ7pYf3g+sEiqAFIppMX64iHEnwiooqRZQyAaz9Ge7SdbDD+EkFNWmMFmSK5AwblkZoqnp5FE83vKlv3dB4/UyfZGk4x0Bkam5LiP+NUxryiGYYW3WsVGs1OdlnidxfUzwaxdkLo+tCZntKcIB2LjYTGyAnlHDBlgbPqlMm9F4wwPU0Nbwkv1K3qmQYk34/m1byOho73zUdQ==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(22082099003)(18002099003)(10067099003)(38070700021)(4143699003)(11063799006)(56012099006);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?ts4jd15AmItaZeejExNdkfdwxFIsTv3KubKVBjPF5AYPOLDV7E5bYd0S8e?=
 =?iso-8859-1?Q?reI3MyDy02j6uIe2a0PPCh76usb0cvmLZk/8/m4BQ7PgB35K5nOYNGVwYN?=
 =?iso-8859-1?Q?3j2y/2mva7irR8KW1PRtPNDKk1nEFgjm9yf8LRXKDjtqbge3U3KdCDCJ0E?=
 =?iso-8859-1?Q?kFvQVvw8kc56Bqt/3c+XOcxtOGmZ60hsnw1T77EYJ0WF44CekiharcTWq6?=
 =?iso-8859-1?Q?JjmTWG9KfMND6CLNdiEaqZzziz7zRQOLEMsfKAdq8HKmVrYxpcyU2fB25F?=
 =?iso-8859-1?Q?tmCd5RMGNes4drbo9Vd7GN+KQyNQ8dL/4DT1i1vAAu0ncUvlHJdTW2dJvt?=
 =?iso-8859-1?Q?duiZo3RPlOHgKags0pA+fACR6hHKBYBjqilH8YYFYXYnFPcgN7cAaYNJnE?=
 =?iso-8859-1?Q?Z8js6pRSFXtfouAaHSqLF/b4g0ocqAvZdIm3lx+u+/zM/h36ryKgFvRzH4?=
 =?iso-8859-1?Q?7LdLDFKdIwKPLYS1TNQGE+rYBFzsqv+QQcp8tD4W3HcXDKUpMEPbP4yboj?=
 =?iso-8859-1?Q?rMXSGo69P5DbOdt8IjooxX7Sznzwg/2iXGYCT3+5ob1qIZrI7I0xRhqYEx?=
 =?iso-8859-1?Q?VEGtmyk7WN0P48tPpp/Gm6bflA81FEJlGfgCAcEMCaRG0AgjJx4yqgSVNK?=
 =?iso-8859-1?Q?8vFVU9naW7pA8HL1EkVYMk3McrdvOBJO9o2HjhwQvJyR+UADZsqayW7xW7?=
 =?iso-8859-1?Q?4avBZHzV4K8DpUFxFNmImyG/Cihu2g+2wcmIL8XMVHgx11J1+30vn5u3AQ?=
 =?iso-8859-1?Q?ak1m9xwzOcCtWI14nK20hKloEVesyE36cPHCJ0qHTl2vZ5wsrL4PTlfK8g?=
 =?iso-8859-1?Q?mk4KMECXWE3MA3V2F4JW6EY7gf1aUc8XDLcw9eYZjCB4Xlg2CgS6GkU4r3?=
 =?iso-8859-1?Q?i4dKPf744ECndnLrGnODN7ti3DUBjvdz0ZnjmWE0Ukk9xOXUSeZlb7AgaK?=
 =?iso-8859-1?Q?K4KPZf9Tho9xH022A9qtVlWKhIE1jbSaxVzlqVIXaKIT5pz/Xr10EqOoZE?=
 =?iso-8859-1?Q?SUZjXKiV8yYYPqnroAxtd6XSXD8eLIOb69gTf0XIfNNpVQEn1trvf/MoYe?=
 =?iso-8859-1?Q?JR33KXeMN+MDyMk6l75TJHAobIkNj+qVqjNOPJH6fbvZbsJdarU0Ju1avl?=
 =?iso-8859-1?Q?fCaoK5xyWXBewEa9FxGULd2oQ/ckrnQu01svUmEpoh9qebILD+7qJemOfp?=
 =?iso-8859-1?Q?9vjizapfk67TCa0vrKFq7999CJSGO1BV09ji7HGrRuEocpzkzd1W9ufA+3?=
 =?iso-8859-1?Q?kHnIhTTDood7jB2ihbsrOC45dv1xGNx4pbm28X1KLyKrPFy7KDCnw4wj9f?=
 =?iso-8859-1?Q?F06Ozs4J/dH1wf4CeOxK4928mLvXlVSfDiFZV08W8bnuSnF2LO08nAI0TO?=
 =?iso-8859-1?Q?aMz/d/WfdDWj931yPsGyddTaxTWEdYqeiOTED/+msgTU57k3ehR8mAtG0y?=
 =?iso-8859-1?Q?2eBcEB4XLh/VTCteeG972igT366Ta5nyzksEvgE5fKIL+aNlH8m/ub65Di?=
 =?iso-8859-1?Q?B38H6GqpDzDX2f7hJXwkAcJVXE3ejz6JJl1ZRVN20n01IKfnyRxUhSrbTe?=
 =?iso-8859-1?Q?VDJND6uu4ojHFruRy6P6i9lEZvF8JL95Ioxa8FJowCiS7Rg2mRoBhRXF3d?=
 =?iso-8859-1?Q?Zxk3asFCByR0L7mgwCCmzIydKNxBNdJbhbWQNtfA8XRS5Z5kFLicLZdVhv?=
 =?iso-8859-1?Q?I8NicL3wHohNDx/sR7CBBFvCSIxqDKz2q2cChaY0ioLNy94aN7/x2beHZV?=
 =?iso-8859-1?Q?9moamoGqS91FAnt4vRBbEQzd1Y0nfzgVLn1R1d9ZNUpFuk?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 20bd1e6b-2117-44b7-cb2a-08df3e7b72ab
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 16:06:43.5365
 (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: Za+0ltMEaFRATgHgjyZgNkJEMjaTCyvCbEZOPfHnhyte7sUaSXeoYqtdPFNz2oNkKViRP8JV1w2w+Ou70+pyVA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5878
X-purgate-ID: tlsNG-c1860d/1794240406-DFAD487B-DF678047/0/0
X-purgate-type: clean
X-purgate-size: 87

>I can fix this up on commit if you're happy.=0A=
=0A=
Thank you. Please go ahead.=


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 16:13:57 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 16:13:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480294.1684259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQS0H-0007ee-C0; Mon, 09 Nov 2026 16:13:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480294.1684259; Mon, 09 Nov 2026 16:13:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQS0H-0007eX-93; Mon, 09 Nov 2026 16:13:53 +0000
Received: by outflank-mailman (input) for mailman id 1480294;
 Mon, 09 Nov 2026 16:13:52 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQS0F-0007e3-Nn
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 16:13:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQS0D-008EjN-D2
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:13:49 +0100
Received: from [10.42.69.10] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1f123-bab6-0a2a0a5309dd-0a2a450a9560-48
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 17:13:49 +0100
Received: from [52.101.52.8]
 (helo=BL2PR02CU003.outbound.protection.outlook.com)
 by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af1f13a-f2d2-0a2a450a0019-346534081491-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 17:13:48 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by BY1PR03MB7825.namprd03.prod.outlook.com (2603:10b6:a03:5b1::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 16:13:44 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 16:13:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=xLDFHZBPUTki6qgqysvZaVfMPE8p09TRWGlLM0CE5wBZcGpHlDTlEgsLt4jhqBlxby3bxYd/ACd7I/lf2/qro1YxNNBjVAXUTMWGYsT5Mj+12yUe1d6mJ/FRnob1gDeGXwhz8/lG2U4svvlLru8NJecR+SsL7uIzGVSaUE5xg1zR2Kt2c22Xbez4bKL2ARkd5U9nOgn9CJMqJ7XvaQIDKVcHNGECnIzmXUyq6NAbH3bir0DYcNJ04fet678+Mi+AGC0uXdn92IiMB/HLSV4thomtZPZkLLj9k9N4s5Tfr1QKaCBRm2Ldz1ibOmSL4PTSYnpslZ8HKLBCKtgwzpzFTQ==
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=Jv2kkxomwYHk4S99qXz+sjlhkA0UMbkQkSgmA6dxhzg=;
 b=AhEOCJQ3karA6k39K+R1g973WczIF4VIpC0rAbrYCbz0siy+SaOjwHbFO0GBGXtbAPHhSaL9LlJWhbnrQLwE655uRG6GZE3G0yVLo6kz3caNewp8PmEdR4G57GfguWHZbeFssavcPdPs93TWQE6KwwXGvGdnT55XKLvSB297OjLSJsXQ+0mX/hbpUrdCoPM9q9sFUc90bX54ND+b7e4vFVVUc6fzOU3poqPMb6z6+0EGWTuzE7dYHwWq2i3TCUue4VYWDzhkXYEhL43QPde88apSNtcu9AMYK+EKd8u+0TICkL7tVwuOT747KIsmMWBZOfclf7E4NAGqcPUISfYhMg==
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=Jv2kkxomwYHk4S99qXz+sjlhkA0UMbkQkSgmA6dxhzg=;
 b=kiosOXN2pMmJYb0Z23RSFIq3jOmoxcJE1Xp0WNPffrEX+8aoZ7vBqKec1Nz8Yfl3EVgMi4TAlJl198zR/czinsVzIRC681uwq4+NTDI9cmbaaVHWXhnJp4xXxMLdDv1dVK2/afx9PW7+HHDOUWHBhkgE8sZmSuAfoIU0zU2WWds=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <4f585dab-4e55-4223-bddb-65d145382612@citrix.com>
Date: Mon, 9 Nov 2026 16:13:40 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 2/5] x86: extend mod_l*_entry() to optionally return
 the old PTE value
To: chunjie.zhu@citrix.com, kevin.lampis@citrix.com
References: <20261016164815.3109065-3-kevin.lampis@citrix.com>
 <20261020023400.295707-1-chunjie.zhu@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261020023400.295707-1-chunjie.zhu@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0024.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:151::11) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|BY1PR03MB7825:EE_
X-MS-Office365-Filtering-Correlation-Id: 86cde255-1372-4a15-3c5e-08df3e7c6d29
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|376014|23010399003|1800799024|11063799006|4143699003|56012099006|261021121427099003|261021123027099003|261022075727099003|261022105027099003|261009223027099003|261026140227099003|261026121527099003|261028144727099003|261102123227099003|10067099003|22082099003|18002099003|3023799007;
X-Microsoft-Antispam-Message-Info:
	WD2eMw8w6C8h6SVrOpRUXMEyKF9BKzo4iYnHAKHdRGAvxNzG8zt6Uf5Sez+ujTp/iPk/xmvOQf6TaeVoNdIFdxqVxl8ZhY5MLPe8yIO/aiJPYshTBvCcXQ3Qjy9IhBeG8PuyGE9QkGP5eAR/pQQ4TyZ00P3RMDWCWDRt2yeOQ0Vle76dHsvNMrDrWVQwXkLZ8JjwDicuv0ykdlu4Fbhqj5FanM4RppY+KcJ+v0tvTgn/c1mQ47zG2Mx5GCQWWzJEe52qBzpKAO2oMgtsaSIIabefHGjz3i5yVRR+ms0H3aXIksrHPOa9mkgFBTHsq1gzSCy/ZtXzI+wSVpvH6bIXvOFMGQJLg/aazUVW6EFzPfMbRQeAVQIlvZAycPmAC44+u3BTVeljyE3jD9Xy3eMAV+SBI0ZFpXTp3CgTUrqEvkY7XtFuxuJB0a0JZMF41+V99tVRO1+WQomciKqLWKSAO4/5QyXDp2+bxd81ZUJF8Is1vagcwZ4HW8Q3Qe6MVtQplQHFRu52i9mRKQt6Wiw8ZVUPxIsis9Lu7q1/3O3YsW9HNtYA9PNX/tbtPVNeHIGCQ+Wgrh2NXkKKiK73HNHiaiCsTfNfUKqk3Pd9JsLgXxh6hq6N7phhUd4aqks6FTdQo3HaTGskTDobGlpnfv8j2w3VOTYXTpVTWjP5uIc78dU=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(23010399003)(1800799024)(11063799006)(4143699003)(56012099006)(261021121427099003)(261021123027099003)(261022075727099003)(261022105027099003)(261009223027099003)(261026140227099003)(261026121527099003)(261028144727099003)(261102123227099003)(10067099003)(22082099003)(18002099003)(3023799007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WGluMTIzTG1HSDVleUVtZTlvQW4wMll6MEJ0WTJlTHBsb0JQZGpxSHVjSUJI?=
 =?utf-8?B?dHpRL3BNSytzY3ZpYnNqbzV3UmYxVll3VzRDbzhUNEpCSkQxbzlCQkN5bjB4?=
 =?utf-8?B?UER6dlpvSFZGaG5MQVhmSHZjblN4aGpjNkZjUnFHYjJZOHJzU0Z3VGdmK2xN?=
 =?utf-8?B?dnlZRjg4VTFwZGdhYkliMjl5UWlSeE9GOElUU2srNC9pOEp2SXhUS3JNMWFR?=
 =?utf-8?B?OGNRK0JEZVFXd08xaFVSUjZ1SlhUaDFRbUFmendBOVVESWJDd1RkeU5zNlRq?=
 =?utf-8?B?QTIvRnRtQjF0TEd3dFN0VEkzeFRKRHVSdElVaU55RzBNRTB3dlBSbGlVN1c1?=
 =?utf-8?B?Q3pZQkxPeVRLSFVIZ3VuTkpXSlBXY0ZvVlVBb3FnaFAzZXpadUNMcnd0RE5C?=
 =?utf-8?B?N1lyKzZrWVBxSkQ1ZElhZlpvWDErSm9la2o0OEFGRmJLMnFmdndWYlhVNEVU?=
 =?utf-8?B?a0VFdlg2elFabFRlNUFXK1NPQkh0SXNtLytGakNlMTJPTDZqNWxMQVJTU01S?=
 =?utf-8?B?Snd1cTZvTVkyTThXeDlqL1NWa2gxZVNibHZVSkFnVGVYUFZ5KzNrUGdiTlk4?=
 =?utf-8?B?dnN0NUx4UkpzRHllZnVIRnY5NmNQc1E1Ni9SZXU4ekZMWEVWcUVuOEVJSXZt?=
 =?utf-8?B?TzVIcEhHeWJjd1dDbDQ1MWZteHBmWVVCTjhYNEV1TFNLT3NUNEE1Rml4Wkhi?=
 =?utf-8?B?NmRMOStzemtPS2xadDMvZi9PMnZIWHhobUpiaVdFdDFJQW5PK0xVaVdQSDhZ?=
 =?utf-8?B?dHlUeGtpZTBZb0JlK3R6NmdkWERybDhXV1hqd05rNlJoZ04xUkJ5M0hsN1Jm?=
 =?utf-8?B?aU1BVGV0cEszdVBMYlc1WWFFUGgwc29zMXNCbENrMmpBZXg2L1JtY0IrQ3hP?=
 =?utf-8?B?Q293d3BERGVjYWFISkZlMnMzN0lHRDJaQmFPclVOUGlGeUlQOXUvRkV6UWZ4?=
 =?utf-8?B?M3ladDl6bWYvRjRTT2M1WFMzL1NYOHlhYzBPcmxFQUU3eXBQb1k3NmZiRzB0?=
 =?utf-8?B?bnh3bDhnS1VpQ1NpMW4xc0Q2SkxUc2lKMlc5bXMveHp5OEdhbDQ5Y3dDQVlq?=
 =?utf-8?B?NDM3bmhnekZpZUlvQTliY3JuL3p5QzVlREdJS0Zxd3owT2NOVlFmVi9ERkY0?=
 =?utf-8?B?K2ZUbG4wbjQ1MTExWk9Dc2hPOW85M1hvZ0EyMWlHVDhsRk5pcUx3SENpSmN1?=
 =?utf-8?B?Yzc3ZkNHV3ZRTVh4bWlCREw1U0kvV0VqemE2WVlYM2hUWnliRnMzNk9QSFo1?=
 =?utf-8?B?RXYySUkzLzVmc0VaZW43c3d1eTFvZTBVQ3dkUlk2RkZsU3M2ZGN2eEJpYVkr?=
 =?utf-8?B?c1J2WnJadjF1UkE3NG93cVhNWG1TYURJckowclk2Q1lRVk5iYVhMSTZNNXhD?=
 =?utf-8?B?YkZHbThSaTFVeEorcW9RcERwMjZTbW5uL0ZUUUtUTmxSOGZVVGtFOUxsTGQv?=
 =?utf-8?B?VDRiNVErQW8rOEhWMjhtaUdwa01sYjFldkQxOVNpdng1QTkyZWJjWDdKUHZE?=
 =?utf-8?B?VG5kOGduZDZKUEp1MnRRSDUrbUFqREFHbi80MjhzV0U1eHg1Q3JlOXJDVGZx?=
 =?utf-8?B?dXl3TFluTGovdy8yaklQSHBrRXBDLzhtVTVjTHVReXRMMFAxVGthTC8ydVpR?=
 =?utf-8?B?YzRIZHdweDJnZGg5NDh5OFg2SDJ3cVRBN0REUXNBVTBaM0dFK0RrYTlFdEpj?=
 =?utf-8?B?RUV1eWRPOEU4blJTOU9jWi9TWmI3R1Z1b1RxQVRQd0FYWk5NeEJXVTdrZkda?=
 =?utf-8?B?cUJObzQ5Q2FUeUI5MHQ2NmxNZzFmRFlYOGhoSUFzK013RXU5UzFxOTE0QTU0?=
 =?utf-8?B?STRiZkZPaHd4VzVBZ3BVa3o3VGE0VzFmVzdKdzkzTFNjOVhwbEtLVHpSQzJq?=
 =?utf-8?B?T1MwTVQ3TXBTYmtlN2hBbG1Ba0ZQK2laTFlYV25ER1ZGZ0Z1OXdjUmVOYUlI?=
 =?utf-8?B?c0RFbXF6UkEvbGxvYys3N3pxbWpnZlpuNCtkSWZiODVYbkltM05ham5qb1JU?=
 =?utf-8?B?SlVIUXJ0SU0wcW5XRzVRbkZnYm9KRE80cHVLQzJ0Tk55Q1dOSFFRVG0yeFl3?=
 =?utf-8?B?MVYxY1ZyVXJEQm9CYloyVEdCb1NTcnBWdUJaeDIrT3N0YW1xcTcvSFBOU1JT?=
 =?utf-8?B?cndxb2kzWVdnUlFSam53S3cyWkE5a3lsak1mR2d5YjZRSE85bzhuR2hyY1p2?=
 =?utf-8?B?Z0s0aDRmdDNpbWV2UTdzMUpZT3ZLaERpVkpiT0ZkVHRLYTBZTkp5MlpVVTFr?=
 =?utf-8?B?cllHQ1ZVKzZTVFhDM1htQVE3RVc4OXlhbkgxWjQya0VFZXkzOHVoMmtYRDBM?=
 =?utf-8?B?T2pVemZqMzlMTlo3R3ZseXZxSDlUMGVGQXFadExON0lYSDdXbGxidz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 86cde255-1372-4a15-3c5e-08df3e7c6d29
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 16:13:43.9180
 (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: JyaR9hIVb9gRUGV6Wk1Rc40eSPy6RCA05nr8PdGQf1bef+RumQCCyiJj2rPmj/+RzRdxah9pTJe9HA5xKrRyy0Z7MaKJHfp1VygkEsvAH6s=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB7825
X-purgate-ID: tlsNG-4011c0/1794240828-4BAD4CFC-8FD6C947/0/0
X-purgate-type: clean
X-purgate-size: 4935

On 20/10/2026 3:34 am, chunjie.zhu@citrix.com wrote:
> On Fri, Oct 16, 2026 at 05:48:12 PM, Kevin Lampis <kevin.lampis@citrix.com> wrote:
>
>> Calling mod_l*_entry() with a valid ol*e_out pointer will do atomic
>> CMPXCHG to set the new pte value and return the old pte value through
>> the ol*e_out pointer. If the ol*e_out pointer is NULL then old behavior
>> is preserved.
>>
>> Signed-off-by: Kevin Lampis <kevin.lampis@citrix.com>
>> ---
>> Changes in v4:
>> - Refactor how UPDATE_ENTRY is used
>> - Update commit message to specify CMPXCHG instead of xchg
>>
>> Changes in v3:
>> - Add swap to mod_l{2,3,4}_entry()
>>
>> Changes in v2:
>> - UPDATE_ENTRY now returns the old pte value instead of using an out
>>   pointer
>> ---
>>  xen/arch/x86/mm.c | 106 ++++++++++++++++++++++++++++++++++++----------
>>  1 file changed, 84 insertions(+), 22 deletions(-)
>>
>> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
>> index e42cd33c0d09..609c8595a487 100644
>> --- a/xen/arch/x86/mm.c
>> +++ b/xen/arch/x86/mm.c
>> @@ -2193,7 +2193,8 @@ static void l3t_unlock(struct page_info *page)
>>  /* Update the L1 entry at pl1e to new value nl1e. */
>>  static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
>>                          mfn_t gl1mfn, unsigned int update_flags,
>> -                        struct vcpu *pt_vcpu, struct domain *pg_dom)
>> +                        struct vcpu *pt_vcpu, struct domain *pg_dom,
>> +                        l1_pgentry_t *ol1e_out)
>>  {
>>      l1_pgentry_t ol1e = l1e_read(pl1e);
>>      struct domain *pt_dom = pt_vcpu->domain;
>> @@ -2254,7 +2255,11 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
>>          /* Fast path for sufficiently-similar mappings. */
>>          if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) )
>>          {
>> -            UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags);
>> +            intpte_t old = UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu,
>> +                                        update_flags);
>> +            if ( ol1e_out )
>> +                *ol1e_out = l1e_from_intpte(old);
>> +
> Same "intpte_t old = UPDATE_ENTRY(); if ( olNe_out ) ..." code block is now
> repeated three times in each of mod_l{1,2,3,4}_entry().
>
> Alternatively, a single local variable per function, assigned at each call
> site and copied out once at the end. Does this avoid the duplication?

This is a bit repetitive, but there's no easy way to merge all 3
UPDATE_ENTRY() in each function.

Given this:

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index a1b7770db0f8..99d4d87e177b 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -2408,7 +2408,6 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
 {
     struct domain *d = vcpu->domain;
     l4_pgentry_t ol4e;
-    int rc = 0;
 
     if ( unlikely(!is_guest_l4_slot(d, pgentry_ptr_to_slot(pl4e))) )
     {
@@ -2421,6 +2420,8 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
 
     if ( l4e_get_flags(nl4e) & _PAGE_PRESENT )
     {
+        int rc;
+
         if ( unlikely(l4e_get_flags(nl4e) & L4_DISALLOW_MASK) )
         {
             gdprintk(XENLOG_WARNING, "Bad L4 flags %x\n",
@@ -2440,17 +2441,14 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
         rc = get_page_from_l4e(nl4e, mfn, d, 0);
         if ( unlikely(rc < 0) )
             return rc;
-        rc = 0;
-
-        UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
     }
     else if ( pv_l1tf_check_l4e(d, nl4e) )
         return -ERESTART;
-    else
-        UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
+
+    UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
 
     put_page_from_l4e(ol4e, mfn, PTF_defer);
-    return rc;
+    return 0;
 }
 #endif /* CONFIG_PV */


we can at least turn 3 into 2, which bloat-o-meter says removes an
alarming amount of code:

    add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-165 (-165)
    Function                                     old     new   delta
    mod_l4_entry.cold                             39      31      -8
    mod_l4_entry                                 917     760    -157


That in turn means this patch only doubles up.

I'm pretty certain that the get_page_from_l?e() calls can't return a
positive number on these paths.  The one case I've found returning a
positive number is in iommu_legacy_{un,}map() but we don't pass
IOMMUF_preempt in and only operate on single pages.


Removing the final duplicate would require something like a bool
"dont_put" which is set in the !l4e_has_changed() path, but I think that
makes things more complicated rather than less.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 17:39:59 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 17:39:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480320.1684279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTLN-0004wk-DU; Mon, 09 Nov 2026 17:39:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480320.1684279; Mon, 09 Nov 2026 17:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTLN-0004wd-Ag; Mon, 09 Nov 2026 17:39:45 +0000
Received: by outflank-mailman (input) for mailman id 1480320;
 Mon, 09 Nov 2026 17:39:43 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQTLL-0004wO-Mc
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:39:43 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQTLK-00AJgw-Qw
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:39:42 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af20538-e002-0a2a0a5209dd-0a2a4507deaa-36
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:39:42 +0100
Received: from [52.101.48.49]
 (helo=MW6PR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af2055b-b4ea-0a2a45070019-346530317718-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:39:42 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by LV4PPFCDEAADB6B.namprd03.prod.outlook.com
 (2603:10b6:40f:fc02::21a) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 9 Nov
 2026 17:39:37 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 17:39:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=FQyD0l+zPPwV9pA4CqUCcx19NR8bj3hNRgdGnddA4h6pQJpDUdQror1s3AI1znc1gbQQkFtUo8mL38wPqEOhBElFgCSBKIJFj7P5Gb2skPKM19t6BPVviGsvlRht11kr7q6mGbtyWpyO1fqqWthJomBysACiK805dsWwqybntwEo0tJ+M0+fGJW3D3eDJG/VQAJgi8pRonLYIFmBbiDkLkPeIvcbCjviIXfBfqaeApT5Xos6epohdoRKZr4McY1ldHB42rZlGOtuyJDudst1k3vHaANxtiTLAFAqCSFE194fWWmGNLDVB6bPQvU9SLdCqVF6m+XIG0W0UxCV27SPdA==
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=1s3pdATWxJcyXwwoyb22xBD4nf5oF77Eurm584jQ85U=;
 b=huapEtd5fB2dWSz03YlL0Mwaa/82ys2L00eg1Y8ifritDoAfeVmUVnxRfkO5oH6TWEAIGfgb3vjnO4HZg3obHKw7t2rTZ2Ie4iHqF9cKglzG7c8q/NeacaCBMoLcobYC0TAQ7kpdtIHsR8Uvsnc3RVD1mcIKcdXszuZ5NRlEIdCuLvSR5RW/lE4T7nlNUQYYDnpXGIKCzvH0/dvt3yL0Tlmw5MAl+MbgqPYesgeN9AIk3K5DKk5NwNtcz6ELY/V0uyRqLdlqmB87kavh6HDMAkXsSVa9BIV5IiI//PRX24TpqTJFiZnvP7yN1/rWFVuLrC3GAtGJG3mjXhZ605IepA==
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=1s3pdATWxJcyXwwoyb22xBD4nf5oF77Eurm584jQ85U=;
 b=on6k3/NzOv2+78boLXLNijn2BHGifdpZZVMYA+SURC0tdu9aY05fMPkpFIEZlaT3KBQxONf6DpAK6PGpCQJiii6K9IhJOvV3+d6VOorRnDh6149IfzorqWS+54xyrs1YGHpWDPjlm5rkd/w8D+v5rkMS5RLpva/bo/FUZWCU0N4=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <d1bde892-c515-4272-bea0-7350a79eb621@citrix.com>
Date: Mon, 9 Nov 2026 17:39:33 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech
Subject: Re: [PATCH v4 3/5] x86: extend do_mmu_update() to support returning
 the old PTE value
To: Kevin Lampis <kevin.lampis@citrix.com>, xen-devel@lists.xenproject.org
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-4-kevin.lampis@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261016164815.3109065-4-kevin.lampis@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3P189CA0002.EURP189.PROD.OUTLOOK.COM
 (2603:10a6:102:52::7) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|LV4PPFCDEAADB6B:EE_
X-MS-Office365-Filtering-Correlation-Id: 1a43909f-fa46-4e47-272a-08df3e886d0e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|6133799003|10067099003|22082099003|18002099003|56012099006|261102123227099003|261022113327099003|261102124527099003|261022075727099003|261026121527099003|261021121427099003|261009223027099003|11063799006|260925021311599003|260925022911599003|4143699003|260925021911599003;
X-Microsoft-Antispam-Message-Info:
	y6uhQZggomOwIAE+C1KV+YNtZSQwUYILs1E9RmopAK4fdVAbNhAahUpLRZfwVZN1NlOVjwPDi6mDolOLMKDo9zwNSj2RUMONBz6vXxbw6fNRWlg/NYJQx2GXz29XfiYZscAZqILIrC6C/c1ch8OUWg5omXdlrw4pvjDfekls0m4tbZ9OFAETdV6GNLHYgTxI1SWfQlxVTX/grJK0qrKoNjFIF82XrMzfN1RR+CrgebjRbfyuzCcxgVfHN6nk6Omsft/ENjNgOXSGCtVxz790oM0/yeF9x5Ynu1Mon/p11X9OZ4b3KBZFGcFcLLDrhHQH+R4PtQ5JNCMVa/R+tHoI2ciXCegyY1S9ctS9pRalbU/4KYwuZRAXoSn5/ngolODh8/PKzwfrNmYFZduo94pBv7GuQoMZbHe0hDGNLrSIX9dMyNl3EpbgjQF/ZxXSvjWhc4lrKTK+zSk87aVRUp+Gj3ZCGAN/5a9wW5hL/ndpAg5N0a/Dm6krYQ4C3DaUsTHvZqPlUT3jaX9BKJGSR5mltaQuUsPj66SG9omHz18w5bIRY2/kJPjs6ugPa4Y2Uy7eujjZmwK9/8KKPhcoJruf/Uq+NXldTR43llGc3kBs8SnCneyvYu8Q1NMk76zznkzQ37yFUuVroSheGC6suBVzSdy1wV91bWo/sZurU87evQ8=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(6133799003)(10067099003)(22082099003)(18002099003)(56012099006)(261102123227099003)(261022113327099003)(261102124527099003)(261022075727099003)(261026121527099003)(261021121427099003)(261009223027099003)(11063799006)(260925021311599003)(260925022911599003)(4143699003)(260925021911599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cUhVQUVRb0QyMEZLeXI4N25KY2E4bmVMM0J3WFhiMzArUkd1SEY1RE92elgw?=
 =?utf-8?B?ZjBNMHZYUWRJNFEzbTVYN2NjbzhyK3g4bjlDaU5qalNxelpLYkFjSzFMUEE3?=
 =?utf-8?B?VStlVFFwRTZHWCs4d2ZaZzRseGJNQnRGWnQ0ditrd1pBM0RhY25VK0tSNzVq?=
 =?utf-8?B?c29qWXdGTFBEWjlWY2pJTDVUK0dkZTFRVXJ6b2RUQlY0MURtRzRrS3o2cGtt?=
 =?utf-8?B?NEpDcTM1Z3FmWmRjQ21wcnl6cWpEY25CK3pSVjNRbjROTWRZamsvei9TTGcw?=
 =?utf-8?B?SmlOOVFZSS93NXNKaWhQUnc1VVBuQVloditRTlNTekVZZ3RVa0FXeFI0MU9r?=
 =?utf-8?B?QlRKTnEzVzRmZ1I3d1FaTjZVNTdFVXpUellrOVZSQWNmaXZaNGxNc1ZyQTgy?=
 =?utf-8?B?bFVkMWhMeWU5Q0M3Zmw0QjJtN0NaOTg2Y2tXZGtKaWMwU09TaE5pV3huald0?=
 =?utf-8?B?WWxyU1c0TXphSnZQS0g4WnJhOFdhenQ5WGZjMWR1STNDZGJSL3M0Q2xvRm1p?=
 =?utf-8?B?bkJqa3dJS0FNRVFqd2J0d1R6aS9Ob280bFJ1bEdVbHRleU92MnU1d2tYcE9t?=
 =?utf-8?B?a0NSUmRMc3pGNG5POHJjOStVLzZYOFkwR0JmeFcwSFF2MGtSUlBWUjk2bDdS?=
 =?utf-8?B?WkZQS1lUamRWbGkyZWJtZWJXdUJtelQ4bk8zU0NhQU1GQ0t5Ym5UUUxRdjlz?=
 =?utf-8?B?bmZVUHM4OFJxWnp5WUo0dFhsZkUxL3RvU3pxelR0YkNXcE9VVVFsNkJOZHUx?=
 =?utf-8?B?TlVNY0tPaVJIMUUzd01GS1FmSG1ZSVRUbSt2ajRlVFdJemR2a3VuNnVkbWhS?=
 =?utf-8?B?bXkzNHRaeGJOcGZTRGMvSy9Ca2s4bHV3Tk96a204cHAvVnpXTG5leDVUMWlh?=
 =?utf-8?B?UTN5WGJUUVpZNGVHbTIzY0REb1NGYmdmOEhTcXZYYk53TE8xV01oY0R6R2E0?=
 =?utf-8?B?L1h0MnQvQ25xQldHcUpUcTFNSzVMdkFOOWRZZnhoL0s5KzdTN3VXaDF6WVpq?=
 =?utf-8?B?b1lEQVBOdFFRMXBhK1RrWnplRUtZcFFXR3l3SjlBcDVQOHNiNzhFNmR0ZFF1?=
 =?utf-8?B?R0ZmZEZnNjJZSG1UWHVBS1g4aTRmK2NaSm9aZ0gvOHVWclV3QWdRVWFEQlVr?=
 =?utf-8?B?c2dtTmd2ZFFBdDhIcjN6MEdPbE0wTkc0YkxVK2ZVeWlSKzc2Y3VFMGdxTWsw?=
 =?utf-8?B?anJHanF5VVoydm9GeUMrYnZWOWNUa3hyQytsQ3BBTmVWd0pEdVZBZGFLOE4v?=
 =?utf-8?B?TTMzOVRDRld6TGFQd1ZsMGJVazZoWEZjYnh5VzEvZjNMMVozbDlvWUhkcERs?=
 =?utf-8?B?cnlNazBaUm41YmdnMG5LVktESHliUVdvQUFoVTRCZEVKbURVcGZHUzVDT3Jk?=
 =?utf-8?B?RS9vQjVWR1NtdVhpRE5PWEtmcTJ5WjVETll5RnlPdDBXOGpMQ2tmV21jRXlt?=
 =?utf-8?B?VTdGVm1tdXVmbFVFQWdDMXp4MVFERmxlV254MHNSUVNnK1pSNkNSQTFCdnk3?=
 =?utf-8?B?TU4zQi9QTXZwVDBPODBTUjBtVmJGN3Z6bDgwOWw4RHJPRExybHUrV3NxRlhi?=
 =?utf-8?B?WUdJRm5CUzZOcE5yYlozRndQMHNZemJQL3RSQVQvYjNCeWpWLzZkSUR6VENk?=
 =?utf-8?B?WmovWGVSQ2ZqMG9xYUhzRlI0aW1nV3VwTnFpa2M2d2lzOUhZQTZHb3pBR3Fu?=
 =?utf-8?B?RDd1S2twWG1mUlFNSUF1ZlNZY2xYbElYSm9FWDJvdnk2OGY5UG1BWnNlV25w?=
 =?utf-8?B?NmZEanRtbi9pdWdYSGZ5azNDcjFCV2gyazY1NVl4cFlDNEMrT2IwUHRGRjVL?=
 =?utf-8?B?eFdzV3ZiZVpMb2ZOTnplMWtsV2U3YTdyaWludEx6R09rMThWVUN6SFFsWmQv?=
 =?utf-8?B?UVRTbVlyRmVrYjB3RjBBRFlJaEk2UXVHN05ZMS9INDFJOVRxK0UzWUlyMVJI?=
 =?utf-8?B?SGhOWk1tVzQrbEFMdTlmWktQTlI2WFVCN2V2bEZiWWVhL0xSVjc4NzlxM1Ir?=
 =?utf-8?B?d3pjaExOS2JHKzI4ZVpvTU5Pc2tVbzR3MzREb1hHR2hYVFNEcGFOYjk0VTVn?=
 =?utf-8?B?K3JtRmFydnpUS2VZRkxRR3VQbkVjbjh5UW1HYlR4V243T044VlFiZlJjM0tp?=
 =?utf-8?B?Y3ZOektjRmY2TlNkZzQzSG55Q2RnbzcrQlAvcTcxSU1tSlpNRkNUeXA4VnZV?=
 =?utf-8?B?Q1hiVEZiZVNwdytDNHM2bzlyYStVNnMzei8rWndxM0hSTlpETDJzYWpuWHl2?=
 =?utf-8?B?MXhENzl5ditSTUQwVnpSNGN0dkt2WS8wejRHK3djNm41dksxOStseFBiajI4?=
 =?utf-8?B?WUtQTFU5RjBNcUN5Mm1ZQTlSZWF6UTZqSk9yWDZrcXhUTWpWUnNCdz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1a43909f-fa46-4e47-272a-08df3e886d0e
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 17:39:37.7764
 (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: Z2h+ZtI3tHT6XJrTvpDMn6BeXt5SEmLQOhEviRKbUNOqeXPhXrKVWMo6G1Hgx6weVog1E/haW8xmkgjy6cOvv0NPDbxruk9CzMd50RpM7E8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV4PPFCDEAADB6B
X-purgate-ID: tlsNG-ef75cf/1794245982-37AD0AE4-4BA7F057/0/0
X-purgate-type: clean
X-purgate-size: 2762

On 16/10/2026 5:48 pm, Kevin Lampis wrote:
> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
> index 609c8595a487..ab09e0703da4 100644
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -4212,37 +4213,80 @@ long do_mmu_update(
>                       update_flags = PTE_UPDATE_PRESERVE_AD;
>                  else if ( cmd == MMU_PT_UPDATE_NO_TRANSLATE )
>                       update_flags = PTE_UPDATE_NO_TRANSLATE;
> +                else if ( cmd == MMU_PT_UPDATE_SWAP )
> +                     update_flags = PTE_UPDATE_SWAP;
>  
>                  switch ( page->u.inuse.type_info & PGT_type_mask )
>                  {
>                  case PGT_l1_page_table:

{

> +                    l1_pgentry_t ol1e = {};
>                      rc = mod_l1_entry(va, l1e_from_intpte(req.val), mfn,
> -                                      update_flags, v, pg_owner, NULL);
> +                                      update_flags, v, pg_owner, &ol1e);
> +
> +                    if ( !rc && cmd == MMU_PT_UPDATE_SWAP )
> +                    {
> +                        req.val = ol1e.l1;
> +                        if ( unlikely(copy_to_guest(ureqs, &req, 1)) )
> +                            rc = -EFAULT;
> +                    }

}

You need braces, otherwise:

arch/x86/mm.c:4227:21: error: label followed by a declaration is a C23 extension [-Werror,-Wc23-extensions]
 4227 |                     l1_pgentry_t ol1e = {};
      |                     ^


It's also a MISRA violation.

https://gitlab.com/xen-project/hardware/xen-staging/-/pipelines/3046070649

>                      break;
>  
>                  case PGT_l2_page_table:
> +                    l2_pgentry_t ol2e = {};
> +
>                      if ( unlikely(pg_owner != pt_owner) )
>                          break;
> +
>                      rc = mod_l2_entry(va, l2e_from_intpte(req.val), mfn,
> -                                      update_flags, v, NULL);
> +                                      update_flags, v, &ol2e);
> +
> +                    if ( !rc && cmd == MMU_PT_UPDATE_SWAP )
> +                    {
> +                        req.val = ol2e.l2;
> +                        if ( unlikely(copy_to_guest(ureqs, &req, 1)) )
> +                            rc = -EFAULT;
> +                    }
> +
>                      if ( !rc )
>                          flush_linear_pt = true;

You must set flush_linear_pt based on the success of mod_l2_entry()
before potentially clobbering rc with -EFAULT.

As this logic stands, it's an easy privilege escalation into Xen, by
causing Xen to skip a safety TLB flush.


Other than these two, everything looks in order.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 17:41:39 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 17:41:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480326.1684288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTNB-0006ao-OJ; Mon, 09 Nov 2026 17:41:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480326.1684288; Mon, 09 Nov 2026 17:41:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTNB-0006ah-LG; Mon, 09 Nov 2026 17:41:37 +0000
Received: by outflank-mailman (input) for mailman id 1480326;
 Mon, 09 Nov 2026 17:41:36 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQTN9-0006Zz-Uc
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:41:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQTN9-008CCW-4Q
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:41:35 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af205cf-8faa-0a2a0a5109dd-0a2a4507e88c-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:41:35 +0100
Received: from [40.93.196.8]
 (helo=SA9PR02CU001.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af205cd-b4ea-0a2a45070019-285dc4086f3b-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:41:34 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA1PR03MB6466.namprd03.prod.outlook.com (2603:10b6:806:1c1::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 17:41:31 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 17:41:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=QKwNBlaQBC2Pi2tA7NdIkMGnnzRRyzAloxuW3YGohd4WBohcGuZRVEVLodONJBAD+nlMHQ/1igCuLjKBUdh4vra6AIHYpO0vW/VXd3DG994vNygD+qzxUMaC/wqOQ0A83IOgFt77rpSDAhUQ+DuUBlOP64tTw4fXWMP63rAHY02EwOh2KjLCWOBqIMrgwi2dVp50oLxqtj2H9+mL+15VxsuMJe+HvnBm5NPue+yyDre+ItGgkPBrvawuXlFoc2jVEWCiKxxY1KxAC2td7Bhn5XrOvGtppC9nTyKvvkmTqVH/+wTPnPdOOpuTyfcKM0F6HgcSFdyEq9vfBfhuEkHd2A==
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=PwCI3OlFqKRN0yjz7cRP5YurQqT2tlEMLnrulWg4NY4=;
 b=bVDXXtJcO95VWkWv7nL0ErDmR3zTHZzOaDNLczd6Hl72aqWZWpmdX/yGI6SjMai/+6HdrhXjZRcQUA/DkfGwkStHezzByDMSzpgf6ENkY8zxQaBHKfLl0RGOmL2OABf1xvqPsELkD8E6iJzwc/hiSpi5Tw6v4HJmtFhpok0whR/ySNFjXn/7u7j7/wV4JOaMVtAaoL7JdfA2yDT9Cm5oax13qfPQgPsmhoyMYjLWZV1F2zSNuSuVC9dJEV25P3Tv6u2xYVP7BYO5wTT2tvwcEOaOnhglUhuaplBIF6Kv03P7h97LOI06zVVsS1zJrkRPf3igM51Nw/Jlu8lEJoSc2Q==
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=PwCI3OlFqKRN0yjz7cRP5YurQqT2tlEMLnrulWg4NY4=;
 b=Y6j/Q42hx8BNXMHwF9GEnmBQKDDCTlYIfk4rczK9ytThZ1GDGJXisHw3qlFCbiREWXYqIzCATFbutwclZ1ogyuJrTT6PEtdUqN14zQ4QzDD1QrG0KdNxZkKBoRF3nh4FuM/+tIiirmQdk6FyDCuDTtffqg+guCD99N6ETSshkUI=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <ba6859a8-8fb5-44d5-9189-b19d606c4216@citrix.com>
Date: Mon, 9 Nov 2026 17:41:27 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 2/5] x86: extend mod_l*_entry() to optionally return
 the old PTE value
To: chunjie.zhu@citrix.com, kevin.lampis@citrix.com
References: <20261016164815.3109065-3-kevin.lampis@citrix.com>
 <20261020023400.295707-1-chunjie.zhu@citrix.com>
 <4f585dab-4e55-4223-bddb-65d145382612@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <4f585dab-4e55-4223-bddb-65d145382612@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PR3P189CA0007.EURP189.PROD.OUTLOOK.COM
 (2603:10a6:102:52::12) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA1PR03MB6466:EE_
X-MS-Office365-Filtering-Correlation-Id: 8111938e-5cff-455d-b487-08df3e88b0a1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|22082099003|18002099003|10067099003|3023799007|4143699003|11063799006|5023799004|261009223027099003|261026121527099003|261028144727099003|261102123227099003|56012099006|261022105027099003|261022075727099003|261021123027099003|261021121427099003|261026140227099003|260925021911599003|260925021311599003|260925022911599003;
X-Microsoft-Antispam-Message-Info:
	REcZl2f3xO1nB1P0EEW+earBZrD12y7mh6VYAzVZy0fTzQ/pxiWLEx/MRP/Qg/ahKslffrp3CWQ+g02tNQmWix4YMbIpw45jrNmTG+rp6xUgATSN2zP8jE32DXpZ/ojp5gt2mUPy3ylmF3ShY8lbk3G+K/S/Z6GvDwmmaUQOS7q7n6G94bYVNOD49Gfs2Zyh+lyEjw+w8kGlvYiWZETCmvcKP0GP+kioSb8CiC3WRRvBrNjapMLbX7qknMugJweSNEg1scUFHSSOr1bKoTdfAh7gCBQQBA593fjSErNCisCj1Pkg0LEqP/EnDIaM16i4B5kQfLRKOaZlkrMNbp1tp9PLGBIZ1P9sc4mLPlk9WPe7oy4DboXMT+ZwjO+pZg4+wELJdvGfJ81mRjrPf/P/57ngT3+faOez6CZCVJcaEQHUIAPsxO4G6fpeN6ZDvGQcYioMUF0GPkowhoR2XquvWDFxbMFdRITcCG4PY16LgCnBUiGi7c3OzWoef4INe+Kg5isDJ9zIS0J6C3Jf6KwSnf8N2skKH10XxciCBWjg98hz9zhbvUobg4CUmdHrYRiiX0/Se2HU8IOr41hofMjupdvhALGD2zhmZH6OSG7xYKtJGjrJo45JCVf6yJUD/YqgPbidGmVHJhwgLtnZuilDugKAqwIWwNlbuKLTxuV2pHM=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(22082099003)(18002099003)(10067099003)(3023799007)(4143699003)(11063799006)(5023799004)(261009223027099003)(261026121527099003)(261028144727099003)(261102123227099003)(56012099006)(261022105027099003)(261022075727099003)(261021123027099003)(261021121427099003)(261026140227099003)(260925021911599003)(260925021311599003)(260925022911599003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?K1ZVOWJaNkFkNllya2pza2hRdjVxTFgrMW9uSFRqMVJ4dUgyTDE4czNlUEV0?=
 =?utf-8?B?Y25KSzdaZFIzYmRXS1FDMzFTYm51YzREZmJ4QWhzbG1KeGJnWDFEZVlVeUVI?=
 =?utf-8?B?NkNycjZmYUdjMiszQ09XVkhkeDRHa0FzTHA5bTljNnBIV0NxK29NRWtMT0Vm?=
 =?utf-8?B?aUhaVThWcnhGdEJRRkR4VjQwc0NGdnhLU3BHS2JRRjRQY1pLRVlzdVU5aksr?=
 =?utf-8?B?d1NsVFJNZmJMZHNyRUZFMFl0ejdpZU1neGk1bjZGTW90b1hhcU9UMXUydmxz?=
 =?utf-8?B?QzZLM3ZrdGNvSVR6NGY5V2k5ZTYzVmo4R1Y4TG9QVDNuRFh6S0UxbGRxdjB5?=
 =?utf-8?B?VUNyNG9pYnBVV3V0T1IxdGtIeS9yTm1NMldOb0RPUXhiY1BXWHdGTmVPRDJQ?=
 =?utf-8?B?S1dnUURkYUxoNmpwSHVWb3I1akM2VXVYSDdGT0E3am9iV1NlaXJUcHNVaUc0?=
 =?utf-8?B?enprYWlqQk5OdGFBcURnOENmV1Z5OHFYV2hmbE1aYjk4cmk0WXZwd3hkMy9x?=
 =?utf-8?B?ZE94UFBDa3NtUW9XMzY2WWN6MXNETjBIb202am0zTlJ6NEdyMzl5R0x1cm5v?=
 =?utf-8?B?RVdOZUkxZjVvNDd1OERiUXRyQ0RoaFRyK3RiTW5kN1AzY1NmZ3hOYTNKanZB?=
 =?utf-8?B?SFhTRXpyRGUrZXQycFpsaEZybXc2OElXTjFFamFYWmQ5NzBIdUcxbFRzVmNx?=
 =?utf-8?B?SU5GMW1rWC9qRVJRSlBENjh1dWxLZnFUOWwxNWlRcjRsQW82ZjZnNjROV3NW?=
 =?utf-8?B?NDB2dWluOFhoclZTTHliK3c5Um5PQzBscU03aGxnR1IxUWxyRTRYZG4vdFhZ?=
 =?utf-8?B?QWZTUjdXeEhMZEhvVkY5U1V3MXhZVjVaNFFMSkhvclRGUE5GZ2NudjY5MTVY?=
 =?utf-8?B?M1FsVmVlVGY4R09iVDk2VmhWek02RjczQ0JJMlBBR2xob0VQQVNTZWxoZHV6?=
 =?utf-8?B?ZW1QVXBkNEhuY0RFZzFSR3MvQTYzYmNMUHlPWFlMRWVYSlUzektaSGVObFE4?=
 =?utf-8?B?TzBNbnR6YmJOWE1WMXJQcnZSSnY4TUxiYldHbEtRSFB6QWdHTGxjdnBGbW9J?=
 =?utf-8?B?UmhWcElsdDJBRzhDUVMyOTZYRWhwN3JrQy9jUE9PWGpoK1g4Yy9IMEx1cENN?=
 =?utf-8?B?STNIWGNrV2g3akZkTnRkYzI5eEtyVHJ1bUJLbmZoVnNrWkt1RllZNDZwVzV1?=
 =?utf-8?B?ZlNsVmNsZllKZzBIYWp1REpVbHhYaklYOWxLWEpVMkdhRGVIam5nVjdhbWRW?=
 =?utf-8?B?TFl2T0NiK1lxZEZwd2JaRFJ6QmErQmtYTE14ZHo4Zk9IU3B6cWlPUjIxZEJL?=
 =?utf-8?B?MkR5c3dqdHhZUGQrSHgzMTFlOU9KdnVjbFNpTXpzdjR2akJBbS9ZU1lZZDZq?=
 =?utf-8?B?VEVuRXhhK2xSZlVqYnNDblRHUXhOQytYR09GdTN5dXAxbitzc2dGRWpCTm1F?=
 =?utf-8?B?YnFmOFBJWUxkbWI3UWExdGcwNG9JK25aZlh6QitrdWx5UmJwRWU2TWxGUzN5?=
 =?utf-8?B?cnFkd0RmUVlQQXhucWdoYlVZOXBCTDFqRXlxc3ArZGtDSHlZdW8xRVVvdlcv?=
 =?utf-8?B?WCtOd1BKdldKUG9tdTEraVZCaGM5d1hzZkdWOUU0dys1cWdXQytJRzkwQjhI?=
 =?utf-8?B?RjdiUWk5MGkxWlhXMDdmZzVDdDhFaTJXSmMrOWQ5UHRHRXVmMjRyMDZCR2Q0?=
 =?utf-8?B?L1FQZ1V6Tk4yK1NLOVF0OVFPRGVFWENLc0gxYjdaNnE5bVAzTm9WbW9PL2dm?=
 =?utf-8?B?VkhrbVdaeDVETFhTRitqL2xvaytRd2NOVExaaFFlS2txblRHSkVMUCtORTJT?=
 =?utf-8?B?empVaWpkMlFzQTUxMjlFWTJnZG5kWUZZVUM2UHZnYWd3WVdzZ25TNk9MeU50?=
 =?utf-8?B?YU91aE9sdW52N3A4d0ZvRXFSdzZ2NHBFZW42L1Qwb1plaEJOdSt4UlZ1aEs2?=
 =?utf-8?B?c1MvZmx5VFN5ZlNYRnorRzNhN3d1Q2cwL2JXYW9uNmRZVE05QWoyTzI2S3dT?=
 =?utf-8?B?N3g5MXNDb2lDWDR1SUMyZEswL1lXckdUOUZleHV1T0VXMXZMVjRzcWo2SUhi?=
 =?utf-8?B?OWxCc2tvdm1pRTAvNmtUMUx4NnNaY1pTWForWDRuV2JwYkxXcUxML0plMThi?=
 =?utf-8?B?K3J5ZWU2L3htVzNERm4vdHVlemFqVXd1R01NRmJOSHFGUmpubUYwUzJPUHZo?=
 =?utf-8?B?a25uRisvV3g0dHc2YXBEbERMKzNabUlTOXA0dGRoN1haNTF2QVd4MEpYRmRt?=
 =?utf-8?B?QkJxS3k4bmp0L3Bnb0F0NDg4WkVsRVYxR2NSNXhWdzI4R3B0WENPV0E0dDQ0?=
 =?utf-8?B?amdHSUlENjRJNGxhSFVOSlRQK0xOenNpM1JZTjA5am1hczBqK0k3dz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8111938e-5cff-455d-b487-08df3e88b0a1
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 17:41:31.0503
 (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: 7yA0H9GQ7DyTPGYNAyThNmElQR1gAuiiFQQK1AWZFiRRVQ35W0LuzPdionDNSQTw6pIw7vQ2UH4IshM2YSee0+l0FUd8ABNgJN923IRIrBs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6466
X-purgate-ID: tlsNG-ef75cf/1794246095-A56C2AE4-38DA5F3A/0/0
X-purgate-type: clean
X-purgate-size: 5250

On 09/11/2026 4:13 pm, Andrew Cooper wrote:
> On 20/10/2026 3:34 am, chunjie.zhu@citrix.com wrote:
>> On Fri, Oct 16, 2026 at 05:48:12 PM, Kevin Lampis <kevin.lampis@citrix.com> wrote:
>>
>>> Calling mod_l*_entry() with a valid ol*e_out pointer will do atomic
>>> CMPXCHG to set the new pte value and return the old pte value through
>>> the ol*e_out pointer. If the ol*e_out pointer is NULL then old behavior
>>> is preserved.
>>>
>>> Signed-off-by: Kevin Lampis <kevin.lampis@citrix.com>
>>> ---
>>> Changes in v4:
>>> - Refactor how UPDATE_ENTRY is used
>>> - Update commit message to specify CMPXCHG instead of xchg
>>>
>>> Changes in v3:
>>> - Add swap to mod_l{2,3,4}_entry()
>>>
>>> Changes in v2:
>>> - UPDATE_ENTRY now returns the old pte value instead of using an out
>>>   pointer
>>> ---
>>>  xen/arch/x86/mm.c | 106 ++++++++++++++++++++++++++++++++++++----------
>>>  1 file changed, 84 insertions(+), 22 deletions(-)
>>>
>>> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
>>> index e42cd33c0d09..609c8595a487 100644
>>> --- a/xen/arch/x86/mm.c
>>> +++ b/xen/arch/x86/mm.c
>>> @@ -2193,7 +2193,8 @@ static void l3t_unlock(struct page_info *page)
>>>  /* Update the L1 entry at pl1e to new value nl1e. */
>>>  static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
>>>                          mfn_t gl1mfn, unsigned int update_flags,
>>> -                        struct vcpu *pt_vcpu, struct domain *pg_dom)
>>> +                        struct vcpu *pt_vcpu, struct domain *pg_dom,
>>> +                        l1_pgentry_t *ol1e_out)
>>>  {
>>>      l1_pgentry_t ol1e = l1e_read(pl1e);
>>>      struct domain *pt_dom = pt_vcpu->domain;
>>> @@ -2254,7 +2255,11 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
>>>          /* Fast path for sufficiently-similar mappings. */
>>>          if ( !l1e_has_changed(ol1e, nl1e, ~FASTPATH_FLAG_WHITELIST) )
>>>          {
>>> -            UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu, update_flags);
>>> +            intpte_t old = UPDATE_ENTRY(l1, pl1e, ol1e, nl1e, gl1mfn, pt_vcpu,
>>> +                                        update_flags);
>>> +            if ( ol1e_out )
>>> +                *ol1e_out = l1e_from_intpte(old);
>>> +
>> Same "intpte_t old = UPDATE_ENTRY(); if ( olNe_out ) ..." code block is now
>> repeated three times in each of mod_l{1,2,3,4}_entry().
>>
>> Alternatively, a single local variable per function, assigned at each call
>> site and copied out once at the end. Does this avoid the duplication?
> This is a bit repetitive, but there's no easy way to merge all 3
> UPDATE_ENTRY() in each function.
>
> Given this:
>
> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
> index a1b7770db0f8..99d4d87e177b 100644
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -2408,7 +2408,6 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
>  {
>      struct domain *d = vcpu->domain;
>      l4_pgentry_t ol4e;
> -    int rc = 0;
>  
>      if ( unlikely(!is_guest_l4_slot(d, pgentry_ptr_to_slot(pl4e))) )
>      {
> @@ -2421,6 +2420,8 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
>  
>      if ( l4e_get_flags(nl4e) & _PAGE_PRESENT )
>      {
> +        int rc;
> +
>          if ( unlikely(l4e_get_flags(nl4e) & L4_DISALLOW_MASK) )
>          {
>              gdprintk(XENLOG_WARNING, "Bad L4 flags %x\n",
> @@ -2440,17 +2441,14 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
>          rc = get_page_from_l4e(nl4e, mfn, d, 0);
>          if ( unlikely(rc < 0) )
>              return rc;
> -        rc = 0;
> -
> -        UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
>      }
>      else if ( pv_l1tf_check_l4e(d, nl4e) )
>          return -ERESTART;
> -    else
> -        UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
> +
> +    UPDATE_ENTRY(l4, pl4e, ol4e, nl4e, mfn, vcpu, update_flags);
>  
>      put_page_from_l4e(ol4e, mfn, PTF_defer);
> -    return rc;
> +    return 0;
>  }
>  #endif /* CONFIG_PV */
>
>
> we can at least turn 3 into 2, which bloat-o-meter says removes an
> alarming amount of code:
>
>     add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-165 (-165)
>     Function                                     old     new   delta
>     mod_l4_entry.cold                             39      31      -8
>     mod_l4_entry                                 917     760    -157
>
>
> That in turn means this patch only doubles up.
>
> I'm pretty certain that the get_page_from_l?e() calls can't return a
> positive number on these paths.  The one case I've found returning a
> positive number is in iommu_legacy_{un,}map() but we don't pass
> IOMMUF_preempt in and only operate on single pages.

In the Gitlab run, I put in ASSERT()s to this effect, and nothing
exploded during real testing.

https://gitlab.com/xen-project/hardware/xen-staging/-/pipelines/3046070649

Anyway, I think an intermediate patch rearranging each of mod_l?_entry()
in the above way will be a good move.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 17:42:55 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 17:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480335.1684299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTOQ-0007B9-5n; Mon, 09 Nov 2026 17:42:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480335.1684299; Mon, 09 Nov 2026 17:42:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTOQ-0007B0-1K; Mon, 09 Nov 2026 17:42:54 +0000
Received: by outflank-mailman (input) for mailman id 1480335;
 Mon, 09 Nov 2026 17:42:52 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrew.cooper@citrix.com>) id 1xQTOO-0007As-PS
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:42:52 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQTON-00FVRE-VU
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:42:51 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af205cf-8faa-0a2a0a5109dd-0a2a4507e88c-48
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:42:51 +0100
Received: from [52.101.53.31]
 (helo=BL0PR03CU003.outbound.protection.outlook.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af20619-b4ea-0a2a45070019-3465351fca98-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:42:51 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by SA1PR03MB6466.namprd03.prod.outlook.com (2603:10b6:806:1c1::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 17:42:47 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 17:42:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=TeFdmL+MOTFTel0kn5fkl5uswA/32cH4EfMXStv88L+oW9sni8rDZnVtNqca/t6oUBoQnQuXWAwZgDjI5MbzWUjg5OjRY9NNAGN16g7Opc1T1vpSdkG5waM0qJAb7LjcQzHXqZstenMk6JmnxJ4UgTY/66KFDXpa+h1fhe9/k7Apm56yqU65BtCBwC6N4hhgV5PE7RjVDmM168WX+xFGgyOi+5l61J872p8h14g46Yy7kvqTevySLCtY9hDDGvJ7oLtpiTI6CvJYhDDL8KkP5laLtn28nL2UyrTLxR/u1m7RM06aL7tklPcPmrsHm7DJJtwBGYEx4xtWdLX3stQoPQ==
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=ceRJ3HuTEPqGx7XGA5r7CBjb0EDwCbdjuykBo28g6CU=;
 b=uvq9RZZgUSKisonZ9gOG34SOVBG+3ghhxyfVpkwDX2kpIWPaN+Y1mTG1DAFkKdQV6AKOIyFjsjhn0LebkWWkT5bEnxG11FdfwYPn+YP/oufQPi8igaMd+xgxIHPRF3sWCkW45rBj3kHPp/elz2mtumwdzh8UYuGOTd+gpyaJ0xzNCd2nSLzvh94TcgQxxPLS0JimvdRVztIhFrAsz475NEVvY3gt87DXKOA7gJpJwVJYyi8Dkmpl+rhlx5jnl41YfHLsJmGhZnQzBtpq+lVcH1qjiC3dknTR1iIZw7kya5PlHv7XYHENe34gvIiQ3B52kf8P0dpBD9lWxAgGZzwjYg==
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=ceRJ3HuTEPqGx7XGA5r7CBjb0EDwCbdjuykBo28g6CU=;
 b=H77fstpJ8t92R3IiYpCppMibVkr9yTGIfiwaykqWApj2iNOsIIqwsLBWWpKj2/3ybOK6fI+BoEwwOUuoQ+W/w8akeX8+J5VyvytYK0IqbOb4767blnGLdBbJeR+RBsC+W+i2sL8Awz4fyyz8kaz/fKPqNwFwTuX0ImBBsW/vsXk=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <f20e272c-d5c2-4224-8a7c-5b91cd2383af@citrix.com>
Date: Mon, 9 Nov 2026 17:42:43 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech
Subject: Re: [PATCH v4 4/5] x86: New feature flag XENFEAT_mmu_pt_update_swap.
To: Kevin Lampis <kevin.lampis@citrix.com>, xen-devel@lists.xenproject.org
References: <20261016164815.3109065-1-kevin.lampis@citrix.com>
 <20261016164815.3109065-5-kevin.lampis@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20261016164815.3109065-5-kevin.lampis@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0086.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:349::17) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|SA1PR03MB6466:EE_
X-MS-Office365-Filtering-Correlation-Id: fbc5c675-1c6f-4118-6c77-08df3e88de01
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|23010399003|376014|22082099003|18002099003|6133799003|10067099003|4143699003|11063799006|261102123227099003|56012099006|261021121427099003;
X-Microsoft-Antispam-Message-Info:
	0/GDY0/ps5ipYqQGAbUSX9R/zPhl9B9xgiTuLLwkGkK8Z9HfMQ8LJjhm/UOjnuRA6gdERP6JgeHDuRSb8OpByKm/0uoyF8vDoqMKOCLvaWsh5Jo9rmIDrO6cUY0OtSSAArzJWU0w+QvMgFB7sSX6c30xkGFE5RllDLHzWoDcdfKDvTtKIoSxzHh0BYrHQLg40itpy+f77vOZlMLV45GT7IQ1Js9Lsf1ZQdY4z2VAa5uanG8hivLaGXcxYWomdRfZciX6jK4gdGum7a2/UaBGLbXG4v5/IZd4lIFeNGV8sqLpU2pk1qItcMPnyM6Nh9ERGw0wD4B/YiFLVW79xiRoV/1st6sMh+jImd1vwu6DddlVno5CjvgS8rgXyfmStFa57fgl3R3g5d7KhutF61hdY/GM6o4r3/ssiFsw24DD6FDnBX1DOaQs1ly4fie4anAtidcdedYMicQevQLEGVGg36cHQRcgpxiJvLp2X01ihlGNJGMh156Mwjd8pPqQgLA4Cu1WwlHAA2xX4P1lXgaRwgKJ2SHCcB7HfmLjTUIPxr/43BPekjSESAi72lQ3kPdHz6ncuMUtL0Sq6P0GEngzn0q0hXYJuD7PhdM049DragkfJDRv9cWJylmRTwb3H/9JOvwh3PzAkwi7R3dU7Ji8OhHYtnGJ6afLN9mvVO42lv4=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(22082099003)(18002099003)(6133799003)(10067099003)(4143699003)(11063799006)(261102123227099003)(56012099006)(261021121427099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bXpHQ2VoOHBLbG5pc2xhcWxCUXlob3E2VHdVU0VucGhUWlhhR1NaczJGNkw1?=
 =?utf-8?B?ek91aHVlOUpvTmdrOGUzdWJSYmpzV3JXN0FwcytWOHJJU1ZuVEtDdG43Tk1k?=
 =?utf-8?B?MmlpcGhzQzJHbkRuR1ZFMTJzQjYrOHhMQ1VFd0UrbTlIT2xtT3VSWmdnaWp1?=
 =?utf-8?B?a2pzQ05TMkhsL3JFU2ZIb2tPeDZBUFBua29NYWVhbVlCTkgyN1NoVlFpWENO?=
 =?utf-8?B?WW55STNxU3EvWXlHVTNqNEZocm1jb1Raa1J5Uy9vd05QNHE3cEZXU2hmeWda?=
 =?utf-8?B?WVBabEo1MXN5c2lEL0lJMUd1bm40eFRVTm0weDF1cXdySDg0VWthcUF0SUxY?=
 =?utf-8?B?ZytqNEUrNzNFbHF4bHVsczFrOWNTWGRQRGtxUEZuUzE1RVJLTitrRVY3MnFk?=
 =?utf-8?B?a2FiMVZkQnVPby9SUlJNWmg1MDA3QXBDbytUcjR5UFVGNUJUYktmQmg1cUEr?=
 =?utf-8?B?REFkR0pMRnY4bVNWNk4xYWhJSFE4dkJ4Sk9RY1dFOTFGODYza0x3d29LenFt?=
 =?utf-8?B?VE1yRUNnWEc1TFEvR0l1eXlJVnE0RFU5QWNDUzdDQTJRd0VTa1gzRjFqL1BS?=
 =?utf-8?B?OWY2SmlWaXdkV0RCNkZIb3NSQXdGV0ZkRUo1RzlWRXVzeU1peFBPU3NaRis5?=
 =?utf-8?B?b2paRmFkZTV0SCt4LzRhd0JJdysxbXl6VXVRRkNVMGJpYjZNZmdKWXYwNUJo?=
 =?utf-8?B?NFpRN1AxTlQ0VW14TEZoR0RBRHpmMFNWYkwxeGZrbEFLamtxWUt2QVEybFo4?=
 =?utf-8?B?cmRZT0xGVG1VT2dJSllwWXZsWmxCRW1kYjJ1QnJlNjl6dGZpWCtDeXRyaitK?=
 =?utf-8?B?M3A1QmFjU080a1NPMHI4VDBRa2tHTmJyckhZYlNaOXZ1QzRMVTlBYVV1eTRP?=
 =?utf-8?B?VWYvNVBTYXF1bmsyS2RqdFFON1ZBL1h3MFZKN0NSQk51c0FweXpXWE1meVdu?=
 =?utf-8?B?Y3J5UjZORjZ2KzNWcXBGTUZpMUtlbVc3LzNzQXQ1ZzJuV1pQRjluZFdlWXBK?=
 =?utf-8?B?REF2RmJsYlpDY0EwcmNjTlFsbjlsSm9EUW83S1ExYmZXbGFTc09FRW0xK2lo?=
 =?utf-8?B?Vjl3YjdUUEZsWUJOQ1pXbEJOU1hPWFNXNmxjK2FCbXVLa0R6OHlXNnBxK1dI?=
 =?utf-8?B?a3lYTWd2WDNFYXZiVTBPUE1NZFRXajhYMGl3SGpobVk4cmxRVWxHcjhYUWE0?=
 =?utf-8?B?UXIrdXh3YUpKTGZGTnBtSHhNajhCMzd1Y3VtZXpvOWNvZEwzMWNycno0Qytl?=
 =?utf-8?B?ZDZ0WUpoRExxYnNPdFJOTWlmS3hPbVdUWXUrb3J5K09GRkpWTkt6eHIyMjBD?=
 =?utf-8?B?UTVXUXdjTkp3UGp0VTlndEJuRURrWDB4UEpjaTRBVW4xUHdybWJpNFlobVYw?=
 =?utf-8?B?eU9BVkUrNXJPZm9xbHBxRithbks1d3A2RHVzSG81VC90MGxtN0xzVFc0eTZn?=
 =?utf-8?B?WTZVWVlweGtoTDNpQ2NSUW44RWFhS2xsbXd0dnhIVC9UOER4MjMyVWZqZjZm?=
 =?utf-8?B?OUp2aWV0UkJDcTRRQWdnUk1BZzEzSnJCeWZmTXZhSlpVRVpsZitqVFBKV1E3?=
 =?utf-8?B?MXJtTytBdlg1VVV6U201Nmo5RGJoUHpiVDBRVm1zenBzVjJMclVqVTRhRmF1?=
 =?utf-8?B?cW9ZOEY3YW1zT2VSTVRvaDl4bzEyZHhGOHY3UGIyT3JoSEVNWjFsSS9hTVNy?=
 =?utf-8?B?a25ERXhmTTEzVXNwRHNRYS80T1RRSGpqdzlZOW5kQXREajU2TnZtT0hjRy81?=
 =?utf-8?B?NXltcDhyN0lIbXJ2K0VWZ0hRTnExZTBwU1lwV2w5VldtOGZsc2RtV3F6NWFH?=
 =?utf-8?B?MGVTUTJhMGZaWG9PeUsxOVBaeE8vZ204alIwUlIrWmhtSFNzWGFRVFhEZjNm?=
 =?utf-8?B?L2R6MTRjSzJMYmt6WGd6ckNXYzBEQ0JWcTl2dkZ4NUZnOVNWdTNIZkUwVTg3?=
 =?utf-8?B?RSt4ekF5N3hCQTg2NjBBYW16Ym81ZFlWZlFEWGN1QWcvNjM3akROTEtXSjlT?=
 =?utf-8?B?OHlHYlI2Q0RlZVc4ZjFhVUNLQThJaEs5S2g1WHJjb1ZkN0M1eU5UR3F4STBx?=
 =?utf-8?B?M1hFK2pCRC9PNnNQQnU3Tm5GRFMrZnVzMldHSER6Sjd2ckhCMnNEUE0yV211?=
 =?utf-8?B?dmlvaEdnOGVIYmpvSGpsMEdORHRUZStRVlFEL0NzYXdSbnpUUFlCSVFGOHpi?=
 =?utf-8?B?S1kxNHRaS1Y0YWNHQTlzVEJvbGtMVmJ2K211K1FKUjJkQVJGZTlZbkg3SzJi?=
 =?utf-8?B?Z29vK0tFL1U5ZFhwSzBhQ3JQNE4vTTFmZTV4ZEJNb1Z6c01pVWZyM1htRWZS?=
 =?utf-8?B?dDlJQ1Nrd2ZnMEE3Mm9YTExpQ2gvZWVkNC9HNlRzbXBPYldQTWlvZz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fbc5c675-1c6f-4118-6c77-08df3e88de01
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 17:42:47.1663
 (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: 2pB6ykwnJslI/eZdvlry6QijbHA+ObgRENZ0cf3OvHkrJurL1Q/WNiuAZ26nWnR4FwQxUclEDefiGOeoFEnpF3hGNPtZ5ExS8uv0Ug9WiOM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6466
X-purgate-ID: tlsNG-ef75cf/1794246171-A7AD0AE4-171E4998/0/0
X-purgate-type: clean
X-purgate-size: 322

On 16/10/2026 5:48 pm, Kevin Lampis wrote:
> Signed-off-by: Kevin Lampis <kevin.lampis@citrix.com>

This wants folding into the previous patch.  Otherwise there's a
boundary where the hypercall exists but isn't reported.

The prior patch is more simple than earlier revisions, so merging will
be fine.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 17:55:17 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 17:55:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480343.1684307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTaK-0000wq-3w; Mon, 09 Nov 2026 17:55:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480343.1684307; Mon, 09 Nov 2026 17:55:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTaK-0000wj-1O; Mon, 09 Nov 2026 17:55:12 +0000
Received: by outflank-mailman (input) for mailman id 1480343;
 Mon, 09 Nov 2026 17:55:10 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQTaI-0000wd-Je
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 17:55:10 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQTaI-00FX8z-0R
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:55:10 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6af208a4-8faa-0a2a0a5109dd-0a2a4507dd4e-46
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:55:09 +0100
Received: from [209.85.128.48] (helo=mail-wm1-f48.google.com)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper3@citrix.com>)
 id 6af208fd-b4ea-0a2a45070019-d1558030f0de-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 18:55:09 +0100
Received: by mail-wm1-f48.google.com with SMTP id
 5b1f17b1804b1-4a35d5d4a20so14351065e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 09:55:09 -0800 (PST)
Received: from localhost.localdomain (host-78-146-248-75.as13285.net.
 [78.146.248.75]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4ba02005762sm3522145e9.2.2026.11.09.09.55.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 09:55:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=citrix.com header.i="@citrix.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1794246909; x=1794851709; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=KRTqIsbDsF6i34pvfC1qpwoAKoKnkdFenpwq0H1eY6k=;
        b=TaGLgBtc3m1fo9M77jGlmHu7lAJ+dCnQ0S7tlyZWmF6SQTD4hV2rrnR77Bb11MLLcJ
         zr3e4kDSza3XujAL8Y8jSipChWPWx4SUh2KLLgSpkKCS8zq7vF4gR1twT5IGB+LzGDLr
         LUlZq2b7GRmzoqIps43kTOl8sCXKV5kCX+GcQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794246909; x=1794851709;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=KRTqIsbDsF6i34pvfC1qpwoAKoKnkdFenpwq0H1eY6k=;
        b=Eco+3mnYBSxSJPedXnZxrjwuQ4+i4q5nGsBDxKvUQ1tIFK8tOVY6Kap9qu+0mPoEnZ
         a3Qp8glq9MI8t6EtAMdJIuIz185IztqOX2Iqd86eYVv96EMH6Lgb7ZeoJ5FxPoWjASfJ
         ZT80kYv9ICe2xQSO+T51vnzFVr1kMYgAdczI07qyPXzSs3N7+4P67BZiLy/UmKNwdY52
         WhMrYFEyOnv+K6U8yCRZ13CyHVmyH+SkxBdT9VvKOCDxCuFchbdqccVGxH9KWNHbYbW0
         R0ovfqUEzTQhT1Cw3z4U9AJb+tcpk59rnSzWoAokPI/ITj7eKcNGm3MKL1OCnrzSggO2
         QeAA==
X-Gm-Message-State: APuU4Z8xYOaX95h957KN0c+CQAwebQOt1DJaWB3ipgDtH38Ex2gytOyw
	VegFLRS37Rr+zdvyP4UKYQ+OQ2yd4x//zEHWMCuFGLw4Ii+/mmJPQvWMgPE88pFeZNbKW1mtgD7
	Q1Iey5QU=
X-Gm-Gg: AYBFou0d4AZfAzqv3yEvWIlGOxv4jXEPTQ2HMBdQd0EFMC3hrt+ZI6DMGSodVqLgMNO
	Usk3vbQm7BlzzgTtuEFIkpK1Z8vT7koIfJoHNHt/4pxCrCEYPgtzHIGEoFcKyczvrR2crXu1ntN
	lAjYD1ADYnPqt72CZqH9u2+csaly89vCkTuBjVAlhTiDqda0kbnII7gwJMy/jSx2tvTSGhzxtyE
	BAfzNZwV4L2PurQoE+Aoi/AOqNNQXMafkCKKXgK2XZ2lWD/dcXwvwUihGidbg1PhRJB/w+pdkqS
	DHP7wZX0s4YNjMXVKAKmFEuvVtqXd3gKbbbQeTEV53r3glV4hwr1gSQN3kDnAvYgXJJp/KcVmS1
	f6z9v5OdZKoQdKVCf0g9rHFBJwHMlbI1aIBSYADDTqxsTMyfNWiOsTTOlBuZND9v9wh6kKjgxql
	OJU/aU3qF/8izIReRBkfmP0iu+jPvAWBpnAXPzqCwVO6WeIKcaDdLJQ89KP/HN+UnWxto2xhODq
	xa1E5loOpPvPjD5XmgyfCOEuWoDuFmY9WovPqMngtdI2y0A8GM3bkkj3TSNyzItyULOH+pqHSAg
	o0jAOjyNZAKiBLasf7zB+vRdDNwUzqX+AcsnKF6qCfON8qaaeTGLCB6t4nyzAWdSW/QnFMTsesp
	jYj8=
X-Received: by 2002:a05:600c:3e88:b0:4b0:bc65:b9b5 with SMTP id 5b1f17b1804b1-4b963c8809emr85594455e9.35.1794246909064;
        Mon, 09 Nov 2026 09:55:09 -0800 (PST)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger@xenproject.org>,
	Teddy Astie <teddy.astie@vates.tech>,
	Jason Andryuk <jason.andryuk@amd.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Denis Mukhin <dmukhin@ford.com>
Subject: [PATCH] x86/svm: Drop 'struct' from the vmcb_struct type
Date: Mon,  9 Nov 2026 17:55:06 +0000
Message-Id: <20261109175506.2965263-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-ef75cf/1794246909-342F4AE4-063D6BB5/10/78276251493
X-purgate-type: spam
X-purgate-size: 29668

This is just a waste of space seeing as it is acompanied by a struct keyword.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <jbeulich@suse.com>
CC: Roger Pau Monné <roger@xenproject.org>
CC: Teddy Astie <teddy.astie@vates.tech>
CC: Jason Andryuk <jason.andryuk@amd.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Denis Mukhin <dmukhin@ford.com>
---
 xen/arch/x86/hvm/svm/asid.c              |  2 +-
 xen/arch/x86/hvm/svm/emulate.c           |  2 +-
 xen/arch/x86/hvm/svm/intr.c              | 10 +--
 xen/arch/x86/hvm/svm/nestedsvm.c         | 36 +++++------
 xen/arch/x86/hvm/svm/svm.c               | 82 ++++++++++++------------
 xen/arch/x86/hvm/svm/vmcb.c              | 16 ++---
 xen/arch/x86/hvm/svm/vmcb.h              | 16 ++---
 xen/arch/x86/include/asm/hvm/svm-types.h |  2 +-
 xen/arch/x86/x86_64/asm-offsets.c        |  2 +-
 9 files changed, 84 insertions(+), 84 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/asid.c b/xen/arch/x86/hvm/svm/asid.c
index 53aa5d05125f..c8d86938d178 100644
--- a/xen/arch/x86/hvm/svm/asid.c
+++ b/xen/arch/x86/hvm/svm/asid.c
@@ -29,7 +29,7 @@ void svm_asid_init(const struct cpuinfo_x86 *c)
 void svm_asid_handle_vmrun(void)
 {
     struct vcpu *curr = current;
-    struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = curr->arch.hvm.svm.vmcb;
     struct hvm_vcpu_asid *p_asid =
         nestedhvm_vcpu_in_guestmode(curr)
         ? &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm.n1asid;
diff --git a/xen/arch/x86/hvm/svm/emulate.c b/xen/arch/x86/hvm/svm/emulate.c
index 1f5436c8ea5d..e392b2a7586b 100644
--- a/xen/arch/x86/hvm/svm/emulate.c
+++ b/xen/arch/x86/hvm/svm/emulate.c
@@ -18,7 +18,7 @@
 
 static unsigned long svm_nextrip_insn_length(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( !cpu_has_svm_nrips )
         return 0;
diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 0d807fb768af..11fdac3b9d6b 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -29,7 +29,7 @@
 
 static void svm_inject_nmi(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     vintr_t vintr = vmcb_get_vintr(vmcb);
     uint32_t general1_intercepts;
     intinfo_t event;
@@ -60,7 +60,7 @@ static void svm_inject_nmi(struct vcpu *v)
 
 static void svm_inject_intr(struct vcpu *v, int vector)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     intinfo_t event;
 
     event.raw = 0;
@@ -74,7 +74,7 @@ static void svm_inject_intr(struct vcpu *v, int vector)
 
 static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     uint32_t general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     vintr_t intr;
 
@@ -86,7 +86,7 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
 
         if ( nv->nv_vmentry_pending )
         {
-            struct vmcb_struct *gvmcb = nv->nv_vvmcx;
+            struct vmcb *gvmcb = nv->nv_vvmcx;
 
             /* check if l1 guest injects interrupt into l2 guest via vintr.
              * return here or l2 guest looses interrupts, otherwise.
@@ -134,7 +134,7 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
 void asmlinkage svm_intr_assist(void)
 {
     struct vcpu *v = current;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct hvm_intack intack;
     enum hvm_intblk intblk;
 
diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index 610c8c213cf2..81cae929dd05 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -165,7 +165,7 @@ static int nsvm_vcpu_hostsave(struct vcpu *v, unsigned int inst_len)
 {
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
-    struct vmcb_struct *n1vmcb;
+    struct vmcb *n1vmcb;
 
     n1vmcb = nv->nv_n1vmcx;
     ASSERT(n1vmcb != NULL);
@@ -190,7 +190,7 @@ static int nsvm_vcpu_hostsave(struct vcpu *v, unsigned int inst_len)
 static int nsvm_vcpu_hostrestore(struct vcpu *v, struct cpu_user_regs *regs)
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
-    struct vmcb_struct *n1vmcb, *n2vmcb;
+    struct vmcb *n1vmcb, *n2vmcb;
     int rc;
 
     n1vmcb = nv->nv_n1vmcx;
@@ -271,8 +271,8 @@ static int nsvm_vmrun_permissionmap(struct vcpu *v)
     struct svm_vcpu *arch_svm = &v->arch.hvm.svm;
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
-    struct vmcb_struct *ns_vmcb = nv->nv_vvmcx;
-    struct vmcb_struct *host_vmcb = arch_svm->vmcb;
+    struct vmcb *ns_vmcb = nv->nv_vvmcx;
+    struct vmcb *host_vmcb = arch_svm->vmcb;
     unsigned long *ns_msrpm_ptr;
     unsigned int i;
     enum hvm_translation_result ret;
@@ -331,7 +331,7 @@ static int nsvm_vmrun_permissionmap(struct vcpu *v)
 }
 
 static void nestedsvm_vmcb_set_nestedp2m(struct vcpu *v,
-    struct vmcb_struct *vvmcb, struct vmcb_struct *n2vmcb)
+    struct vmcb *vvmcb, struct vmcb *n2vmcb)
 {
     struct p2m_domain *p2m;
 
@@ -350,7 +350,7 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *ns_vmcb, *n1vmcb, *n2vmcb;
+    struct vmcb *ns_vmcb, *n1vmcb, *n2vmcb;
     vmcbcleanbits_t clean = {};
     int rc;
 
@@ -610,7 +610,7 @@ nsvm_vcpu_vmentry(struct vcpu *v, struct cpu_user_regs *regs,
     int ret;
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *ns_vmcb;
+    struct vmcb *ns_vmcb;
 
     ns_vmcb = nv->nv_vvmcx;
     ASSERT(ns_vmcb != NULL);
@@ -720,8 +720,8 @@ nsvm_vcpu_vmexit_inject(struct vcpu *v, struct cpu_user_regs *regs,
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *ns_vmcb;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *ns_vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( vmcb->_vintr.vgif_en )
         vmcb->_vintr.gif = false;
@@ -808,7 +808,7 @@ nsvm_vmcb_guest_intercepts_msr(unsigned long *msr_bitmap,
 }
 
 static int
-nsvm_vmcb_guest_intercepts_ioio(struct vmcb_struct *vmcb)
+nsvm_vmcb_guest_intercepts_ioio(struct vmcb *vmcb)
 {
     unsigned long gfn = vmcb->_iopm_base_pa >> PAGE_SHIFT;
     unsigned long *io_bitmap;
@@ -859,7 +859,7 @@ nsvm_vmcb_guest_intercepts_exitcode(struct vcpu *v,
     uint64_t exit_bits;
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *ns_vmcb = nv->nv_vvmcx;
+    struct vmcb *ns_vmcb = nv->nv_vvmcx;
     enum nestedhvm_vmexits vmexits;
 
     switch ( exitcode )
@@ -948,8 +948,8 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v, struct cpu_user_regs *regs)
 {
     struct nestedvcpu *nv = &vcpu_nestedhvm(v);
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *ns_vmcb = nv->nv_vvmcx;
-    struct vmcb_struct *n2vmcb = nv->nv_n2vmcx;
+    struct vmcb *ns_vmcb = nv->nv_vvmcx;
+    struct vmcb *n2vmcb = nv->nv_n2vmcx;
 
     svm_vmsave_pa(nv->nv_n1vmcx_pa);
 
@@ -1157,7 +1157,7 @@ enum hvm_intblk cf_check nsvm_intr_blocked(struct vcpu *v)
 
     if ( nestedhvm_vcpu_in_guestmode(v) )
     {
-        struct vmcb_struct *n2vmcb = nv->nv_n2vmcx;
+        struct vmcb *n2vmcb = nv->nv_n2vmcx;
 
         if ( svm->ns_hostflags.vintrmask && !svm->ns_hostflags.rflagsif )
             return hvm_intblk_rflags_ie;
@@ -1196,7 +1196,7 @@ nestedsvm_vmexit_defer(struct vcpu *v,
     uint64_t exitcode, uint64_t exitinfo1, uint64_t exitinfo2)
 {
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( vmcb->_vintr.vgif_en )
         vmcb->_vintr.gif = false;
@@ -1458,7 +1458,7 @@ bool
 nestedsvm_gif_isset(struct vcpu *v)
 {
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     /* get the vmcb gif value if using vgif */
     if ( vmcb->_vintr.vgif_en )
@@ -1491,7 +1491,7 @@ void svm_vmexit_do_stgi(struct cpu_user_regs *regs, struct vcpu *v)
 
 void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int inst_len;
     uint32_t general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     vintr_t intr;
@@ -1523,7 +1523,7 @@ void svm_vmexit_do_clgi(struct cpu_user_regs *regs, struct vcpu *v)
  */
 void svm_nested_features_on_efer_update(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct nestedsvm *svm = &vcpu_nestedsvm(v);
     u32 general2_intercepts;
     vintr_t vintr;
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 9a319e762555..bfca1eda4af5 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -56,7 +56,7 @@ u32 svm_feature_flags;
 static DEFINE_PER_CPU_READ_MOSTLY(paddr_t, hsa);
 static DEFINE_PER_CPU_READ_MOSTLY(paddr_t, host_vmcb);
 #ifdef CONFIG_PV
-static DEFINE_PER_CPU(struct vmcb_struct *, host_vmcb_va);
+static DEFINE_PER_CPU(struct vmcb *, host_vmcb_va);
 #endif
 
 static bool amd_erratum383_found __read_mostly;
@@ -107,7 +107,7 @@ static void cf_check svm_cpu_down(void)
 static void cf_check svm_update_guest_cr(
     struct vcpu *v, unsigned int cr, unsigned int flags)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     uint64_t value;
 
     switch ( cr )
@@ -177,7 +177,7 @@ static void cf_check svm_update_guest_cr(
 
 static void cf_check svm_update_guest_efer(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     unsigned long guest_efer = v->arch.hvm.guest_efer,
         xen_efer = read_efer();
 
@@ -262,7 +262,7 @@ static void cf_check svm_enable_msr_interception(struct domain *d, uint32_t msr)
 
 static void svm_save_dr(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int flag_dr_dirty = v->arch.hvm.flag_dr_dirty;
 
     if ( !flag_dr_dirty )
@@ -297,7 +297,7 @@ static void svm_save_dr(struct vcpu *v)
     v->arch.dr7   = vmcb_get_dr7(vmcb);
 }
 
-static void __restore_debug_registers(struct vmcb_struct *vmcb, struct vcpu *v)
+static void __restore_debug_registers(struct vmcb *vmcb, struct vcpu *v)
 {
     if ( v->arch.hvm.flag_dr_dirty )
         return;
@@ -344,7 +344,7 @@ static void __restore_debug_registers(struct vmcb_struct *vmcb, struct vcpu *v)
  */
 static void svm_restore_dr(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( unlikely(v->arch.dr7 & DR7_ACTIVE_MASK) )
         __restore_debug_registers(vmcb, v);
@@ -352,7 +352,7 @@ static void svm_restore_dr(struct vcpu *v)
 
 static int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( vmcb->event_inj.v &&
          hvm_event_needs_reinjection(vmcb->event_inj.type,
@@ -368,7 +368,7 @@ static int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
 static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
 {
     struct page_info *page = NULL;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct p2m_domain *p2m = p2m_get_hostp2m(v->domain);
 
     if ( c->pending_valid )
@@ -443,7 +443,7 @@ static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
 
 static void svm_save_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     data->sysenter_cs      = vmcb->sysenter_cs;
     data->sysenter_esp     = vmcb->sysenter_esp;
@@ -457,7 +457,7 @@ static void svm_save_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
 
 static void svm_load_cpu_state(struct vcpu *v, struct hvm_hw_cpu *data)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     vmcb->lstar        = data->msr_lstar;
     vmcb->star         = data->msr_star;
@@ -492,7 +492,7 @@ static int cf_check svm_load_vmcb_ctxt(struct vcpu *v, struct hvm_hw_cpu *ctxt)
 
 static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int intr_shadow = 0;
 
     if ( vmcb->int_stat.intr_shadow )
@@ -509,7 +509,7 @@ static unsigned cf_check int svm_get_interrupt_shadow(struct vcpu *v)
 static void cf_check svm_set_interrupt_shadow(
     struct vcpu *v, unsigned int intr_shadow)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     bool block_nmi = intr_shadow & HVM_INTR_SHADOW_NMI;
     vintr_t vintr = vmcb_get_vintr(vmcb);
 
@@ -535,7 +535,7 @@ static void cf_check svm_set_interrupt_shadow(
 
 static int cf_check svm_guest_x86_mode(struct vcpu *v)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( unlikely(!(v->arch.hvm.guest_cr[0] & X86_CR0_PE)) )
         return X86_MODE_REAL;
@@ -549,7 +549,7 @@ static int cf_check svm_guest_x86_mode(struct vcpu *v)
 static void cf_check svm_cpuid_policy_changed(struct vcpu *v)
 {
     struct svm_vcpu *svm = &v->arch.hvm.svm;
-    struct vmcb_struct *vmcb = svm->vmcb;
+    struct vmcb *vmcb = svm->vmcb;
     const struct cpu_policy *cp = v->domain->arch.cpu_policy;
     u32 bitmap = vmcb_get_exception_intercepts(vmcb);
 
@@ -608,7 +608,7 @@ static unsigned int cf_check svm_get_cpl(struct vcpu *v)
 static void cf_check svm_get_segment_register(
     struct vcpu *v, enum x86_segment seg, struct segment_register *reg)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     ASSERT((v == current) || !vcpu_runnable(v));
 
@@ -654,7 +654,7 @@ static void cf_check svm_get_segment_register(
 static void cf_check svm_set_segment_register(
     struct vcpu *v, enum x86_segment seg, struct segment_register *reg)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     ASSERT((v == current) || !vcpu_runnable(v));
 
@@ -724,7 +724,7 @@ static void cf_check svm_set_segment_register(
 
 static int cf_check svm_set_guest_pat(struct vcpu *v, u64 gpat)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( paging_mode_shadow(v->domain) )
         return 0;
@@ -735,7 +735,7 @@ static int cf_check svm_set_guest_pat(struct vcpu *v, u64 gpat)
 
 static int cf_check svm_get_guest_pat(struct vcpu *v, u64 *gpat)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( paging_mode_shadow(v->domain) )
         return 0;
@@ -746,8 +746,8 @@ static int cf_check svm_get_guest_pat(struct vcpu *v, u64 *gpat)
 
 static void cf_check svm_set_tsc_offset(struct vcpu *v, uint64_t offset)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
-    struct vmcb_struct *n1vmcb, *n2vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *n1vmcb, *n2vmcb;
     uint64_t n2_tsc_offset = 0;
     struct domain *d = v->domain;
 
@@ -772,7 +772,7 @@ static void cf_check svm_set_tsc_offset(struct vcpu *v, uint64_t offset)
 
 static void cf_check svm_set_rdtsc_exiting(struct vcpu *v, bool enable)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     u32 general2_intercepts = vmcb_get_general2_intercepts(vmcb);
 
@@ -793,7 +793,7 @@ static void cf_check svm_set_rdtsc_exiting(struct vcpu *v, bool enable)
 static void cf_check svm_set_descriptor_access_exiting(
     struct vcpu *v, bool enable)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
     u32 mask = GENERAL1_INTERCEPT_IDTR_READ | GENERAL1_INTERCEPT_GDTR_READ
             | GENERAL1_INTERCEPT_LDTR_READ | GENERAL1_INTERCEPT_TR_READ
@@ -811,7 +811,7 @@ static void cf_check svm_set_descriptor_access_exiting(
 
 static unsigned int cf_check svm_get_insn_bytes(struct vcpu *v, uint8_t *buf)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int len = v->arch.hvm.svm.cached_insn_len;
 
     if ( len != 0 )
@@ -927,7 +927,7 @@ static void cf_check svm_ctxt_switch_to(struct vcpu *v)
 static void noreturn cf_check svm_do_resume(void)
 {
     struct vcpu *v = current;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     bool debug_state = (v->domain->debugger_attached ||
                         v->domain->arch.monitor.software_breakpoint_enabled ||
                         v->domain->arch.monitor.debug_exception_enabled);
@@ -977,7 +977,7 @@ void asmlinkage svm_vmenter_helper(void)
 {
     const struct cpu_user_regs *regs = guest_cpu_user_regs();
     struct vcpu *curr = current;
-    struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = curr->arch.hvm.svm.vmcb;
 
     ASSERT(hvmemul_cache_disabled(curr));
 
@@ -1127,7 +1127,7 @@ static void cf_check svm_vcpu_destroy(struct vcpu *v)
 static void svm_emul_swint_injection(struct x86_event *event)
 {
     struct vcpu *curr = current;
-    const struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
+    const struct vmcb *vmcb = curr->arch.hvm.svm.vmcb;
     const struct cpu_user_regs *regs = guest_cpu_user_regs();
     unsigned int trap = event->vector, type = event->type;
     unsigned int fault = X86_EXC_GP, ec = 0;
@@ -1235,7 +1235,7 @@ static void svm_emul_swint_injection(struct x86_event *event)
 static void cf_check svm_inject_event(const struct x86_event *event)
 {
     struct vcpu *curr = current;
-    struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = curr->arch.hvm.svm.vmcb;
     intinfo_t eventinj = vmcb->event_inj;
     struct x86_event _event = *event;
     struct cpu_user_regs *regs = guest_cpu_user_regs();
@@ -1453,7 +1453,7 @@ static void svm_init_erratum_383(const struct cpuinfo_x86 *c)
 #ifdef CONFIG_PV
 void svm_load_segs_prefetch(void)
 {
-    const struct vmcb_struct *vmcb = this_cpu(host_vmcb_va);
+    const struct vmcb *vmcb = this_cpu(host_vmcb_va);
 
     if ( vmcb )
         /*
@@ -1469,7 +1469,7 @@ bool svm_load_segs(unsigned int ldt_ents, unsigned long ldt_base,
                    unsigned long gs_shadow)
 {
     unsigned int cpu = smp_processor_id();
-    struct vmcb_struct *vmcb = per_cpu(host_vmcb_va, cpu);
+    struct vmcb *vmcb = per_cpu(host_vmcb_va, cpu);
 
     if ( unlikely(!vmcb) )
         return false;
@@ -1638,7 +1638,7 @@ static void svm_do_nested_pgfault(struct vcpu *v,
 }
 
 static void svm_vmexit_do_cr_access(
-    struct vmcb_struct *vmcb, struct cpu_user_regs *regs)
+    struct vmcb *vmcb, struct cpu_user_regs *regs)
 {
     int gp, cr, dir, rc;
 
@@ -1656,7 +1656,7 @@ static void svm_vmexit_do_cr_access(
 
 static void svm_dr_access(struct vcpu *v, struct cpu_user_regs *regs)
 {
-    struct vmcb_struct *vmcb = vcpu_nestedhvm(v).nv_n1vmcx;
+    struct vmcb *vmcb = vcpu_nestedhvm(v).nv_n1vmcx;
 
     TRACE(TRC_HVM_DR_WRITE);
     __restore_debug_registers(vmcb, v);
@@ -1667,7 +1667,7 @@ static int cf_check svm_msr_read_intercept(
 {
     struct vcpu *v = current;
     const struct domain *d = v->domain;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     const struct nestedsvm *nsvm = &vcpu_nestedsvm(v);
     uint64_t tmp;
 
@@ -1858,7 +1858,7 @@ static int cf_check svm_msr_write_intercept(
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct nestedsvm *nsvm = &vcpu_nestedsvm(v);
 
     switch ( msr )
@@ -2064,7 +2064,7 @@ static void svm_do_msr_access(struct cpu_user_regs *regs)
         hvm_inject_hw_exception(X86_EXC_GP, 0);
 }
 
-static void svm_vmexit_do_hlt(struct vmcb_struct *vmcb,
+static void svm_vmexit_do_hlt(struct vmcb *vmcb,
                               struct cpu_user_regs *regs)
 {
     unsigned int inst_len;
@@ -2163,7 +2163,7 @@ nsvm_get_nvmcb_page(struct vcpu *v, uint64_t vmcbaddr)
 }
 
 static void
-svm_vmexit_do_vmload(struct vmcb_struct *vmcb,
+svm_vmexit_do_vmload(struct vmcb *vmcb,
                      struct cpu_user_regs *regs,
                      struct vcpu *v, uint64_t vmcbaddr)
 {
@@ -2198,7 +2198,7 @@ svm_vmexit_do_vmload(struct vmcb_struct *vmcb,
 }
 
 static void
-svm_vmexit_do_vmsave(struct vmcb_struct *vmcb,
+svm_vmexit_do_vmsave(struct vmcb *vmcb,
                      struct cpu_user_regs *regs,
                      struct vcpu *v, uint64_t vmcbaddr)
 {
@@ -2321,7 +2321,7 @@ static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear)
 static bool cf_check svm_get_pending_event(
     struct vcpu *v, struct x86_event *info)
 {
-    const struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
 
     if ( !vmcb->event_inj.v )
         return false;
@@ -2336,7 +2336,7 @@ static bool cf_check svm_get_pending_event(
 static uint64_t cf_check svm_get_reg(struct vcpu *v, unsigned int reg)
 {
     struct vcpu *curr = current;
-    const struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    const struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct domain *d = v->domain;
 
     switch ( reg )
@@ -2359,7 +2359,7 @@ static uint64_t cf_check svm_get_reg(struct vcpu *v, unsigned int reg)
 
 static void cf_check svm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 {
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     struct domain *d = v->domain;
 
     switch ( reg )
@@ -2511,7 +2511,7 @@ void asmlinkage svm_vmexit_handler(void)
     struct cpu_user_regs *regs = guest_cpu_user_regs();
     uint64_t exit_reason;
     struct vcpu *v = current;
-    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
+    struct vmcb *vmcb = v->arch.hvm.svm.vmcb;
     int insn_len;
     vintr_t intr;
     bool vcpu_guestmode = false;
@@ -2563,7 +2563,7 @@ void asmlinkage svm_vmexit_handler(void)
     {
         enum nestedhvm_vmexits nsret;
         struct nestedvcpu *nv = &vcpu_nestedhvm(v);
-        struct vmcb_struct *ns_vmcb = nv->nv_vvmcx;
+        struct vmcb *ns_vmcb = nv->nv_vvmcx;
         uint64_t exitinfo1, exitinfo2;
 
         paging_update_nestedmode(v);
diff --git a/xen/arch/x86/hvm/svm/vmcb.c b/xen/arch/x86/hvm/svm/vmcb.c
index 91b9581a2e34..65b7bdf92587 100644
--- a/xen/arch/x86/hvm/svm/vmcb.c
+++ b/xen/arch/x86/hvm/svm/vmcb.c
@@ -23,9 +23,9 @@
 #include "svm.h"
 #include "vmcb.h"
 
-struct vmcb_struct *alloc_vmcb(void)
+struct vmcb *alloc_vmcb(void)
 {
-    struct vmcb_struct *vmcb;
+    struct vmcb *vmcb;
 
     vmcb = alloc_xenheap_page();
     if ( vmcb == NULL )
@@ -38,7 +38,7 @@ struct vmcb_struct *alloc_vmcb(void)
     return vmcb;
 }
 
-void free_vmcb(struct vmcb_struct *vmcb)
+void free_vmcb(struct vmcb *vmcb)
 {
     free_xenheap_page(vmcb);
 }
@@ -47,7 +47,7 @@ void free_vmcb(struct vmcb_struct *vmcb)
 static int construct_vmcb(struct vcpu *v)
 {
     struct svm_vcpu *svm = &v->arch.hvm.svm;
-    struct vmcb_struct *vmcb = svm->vmcb;
+    struct vmcb *vmcb = svm->vmcb;
 
     vmcb->_general1_intercepts =
         GENERAL1_INTERCEPT_INTR        | GENERAL1_INTERCEPT_NMI         |
@@ -250,7 +250,7 @@ static void svm_dump_sel(const char *name, const struct segment_register *s)
            name, s->sel, s->attr, s->limit, s->base);
 }
 
-void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
+void svm_vmcb_dump(const char *from, const struct vmcb *vmcb)
 {
     struct vcpu *curr = current;
 
@@ -263,7 +263,7 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
 
     printk("Dumping guest's current state at %s...\n", from);
     printk("Size of VMCB = %zu, paddr = %"PRIpaddr", vaddr = %p\n",
-           sizeof(struct vmcb_struct), virt_to_maddr(vmcb), vmcb);
+           sizeof(struct vmcb), virt_to_maddr(vmcb), vmcb);
 
     printk("cr_intercepts = %#x dr_intercepts = %#x "
            "exception_intercepts = %#x\n",
@@ -328,7 +328,7 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
 }
 
 bool svm_vmcb_isvalid(
-    const char *from, const struct vmcb_struct *vmcb, const struct vcpu *v,
+    const char *from, const struct vmcb *vmcb, const struct vcpu *v,
     bool verbose)
 {
     bool ret = false; /* ok */
@@ -443,7 +443,7 @@ void __init setup_vmcb_dump(void)
 
 static void __init __maybe_unused build_assertions(void)
 {
-    struct vmcb_struct vmcb;
+    struct vmcb vmcb;
 
     /* Build-time check of the VMCB layout. */
     BUILD_BUG_ON(sizeof(vmcb) != PAGE_SIZE);
diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 9d89ce44fe55..ba10ff985440 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -383,7 +383,7 @@ typedef union
 #define IOPM_SIZE   (12 * 1024)
 #define MSRPM_SIZE  (8  * 1024)
 
-struct vmcb_struct {
+struct vmcb {
     /* Control area */
     uint32_t _cr_intercepts;             /* 0x000 - Clean.intercepts(0) */
     uint32_t _dr_intercepts;             /* 0x004   | */
@@ -536,15 +536,15 @@ struct vmcb_struct {
     uint64_t res18[291];
 };
 
-struct vmcb_struct *alloc_vmcb(void);
-void free_vmcb(struct vmcb_struct *vmcb);
+struct vmcb *alloc_vmcb(void);
+void free_vmcb(struct vmcb *vmcb);
 
 int  svm_create_vmcb(struct vcpu *v);
 void svm_destroy_vmcb(struct vcpu *v);
 
 void setup_vmcb_dump(void);
-void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb);
-bool svm_vmcb_isvalid(const char *from, const struct vmcb_struct *vmcb,
+void svm_vmcb_dump(const char *from, const struct vmcb *vmcb);
+bool svm_vmcb_isvalid(const char *from, const struct vmcb *vmcb,
                       const struct vcpu *v, bool verbose);
 
 /*
@@ -553,20 +553,20 @@ bool svm_vmcb_isvalid(const char *from, const struct vmcb_struct *vmcb,
 
 #define VMCB_ACCESSORS_(name, type, cleanbit)     \
 static inline void                                \
-vmcb_set_ ## name(struct vmcb_struct *vmcb,       \
+vmcb_set_ ## name(struct vmcb *vmcb,              \
                   type value)                     \
 {                                                 \
     vmcb->_ ## name = value;                      \
     vmcb->cleanbits.cleanbit = false;             \
 }                                                 \
 static inline type                                \
-vmcb_get_ ## name(const struct vmcb_struct *vmcb) \
+vmcb_get_ ## name(const struct vmcb *vmcb)        \
 {                                                 \
     return vmcb->_ ## name;                       \
 }
 
 #define VMCB_ACCESSORS(name, cleanbit) \
-    VMCB_ACCESSORS_(name, typeof(((struct vmcb_struct){})._ ## name), cleanbit)
+    VMCB_ACCESSORS_(name, typeof(((struct vmcb){})._ ## name), cleanbit)
 
 VMCB_ACCESSORS(cr_intercepts, intercepts)
 VMCB_ACCESSORS(dr_intercepts, intercepts)
diff --git a/xen/arch/x86/include/asm/hvm/svm-types.h b/xen/arch/x86/include/asm/hvm/svm-types.h
index 71427b3c11d1..3475ed6a06db 100644
--- a/xen/arch/x86/include/asm/hvm/svm-types.h
+++ b/xen/arch/x86/include/asm/hvm/svm-types.h
@@ -18,7 +18,7 @@ struct svm_domain {
 };
 
 struct svm_vcpu {
-    struct vmcb_struct *vmcb;
+    struct vmcb *vmcb;
     unsigned long *msrpm;
     uint64_t vmcb_pa;
     int     launch_core;
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index ce5e7aae16cd..904a9b512d23 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -139,7 +139,7 @@ void __dummy__(void)
 #endif
 
 #ifdef CONFIG_AMD_SVM
-    OFFSET(VMCB_int_stat, struct vmcb_struct, int_stat);
+    OFFSET(VMCB_int_stat, struct vmcb, int_stat);
     BLANK();
 #endif
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Nov 09 18:06:32 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 18:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480352.1684316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTlE-0003G3-7b; Mon, 09 Nov 2026 18:06:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480352.1684316; Mon, 09 Nov 2026 18:06:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQTlE-0003Fw-4G; Mon, 09 Nov 2026 18:06:28 +0000
Received: by outflank-mailman (input) for mailman id 1480352;
 Mon, 09 Nov 2026 18:06:27 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ross.lagerwall@citrix.com>) id 1xQTlD-0003Fq-E1
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:06:27 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQTlC-00EySo-F7
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 19:06:26 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af20b98-bab6-0a2a0a5309dd-0a2a4508e6ee-10
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:06:26 +0100
Received: from [40.93.194.70]
 (helo=SN4PR0501CU005.outbound.protection.outlook.com)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <ross.lagerwall@citrix.com>)
 id 6af20ba0-f659-0a2a45080019-285dc246b05d-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:06:26 +0100
Received: from CH8PR03MB8274.namprd03.prod.outlook.com (2603:10b6:610:2ba::5)
 by FT1PR03MB991367.namprd03.prod.outlook.com (2603:10b6:170:3c::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 18:06:22 +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.0592.012; Mon, 9 Nov 2026
 18:06:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=jt/zrZ7F2XTR9DSPIKiMWkvlfa0FqKOu2cg/H/rBHcBKKAs0xnq+gX5p6Hw1UYd+wg39NnbAh+BfHgrvSsdTE8YUoolDg3EvQ4l4gdKD3Mw8RyiCP0iVwyvOBBRcAUaeigqDoWbDUCdghHfMF4Zc+4YjUaa5lBMTZ86NU8J5DTRLaLHDH5xItIMDTfjSp5PQic1h2wlMor/55irUyV3/wZWlcjSqFc3MBCDwrji+iicDynOUZ++1W5xUKy/L1JeR1gIFGrEpijcIuhoCwv9dFR/ZbqoyMJwXyhXMDRMYOrQT9hla59X36j39GznQirECGmXe338cULZ9mrK4Oh5pfw==
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=zDRfaJWeM0bVB0lFA1s5os81FJFcEqozshfArd7oFMQ=;
 b=WslRdr1fL34GPboCAPHbuQ5T7RwSMNhqyKIhhy7B3LcTPhKRAHWsAsU/I5PY90S2CDV9oCY32catBMVfgjFzSfQ5h5fwP2igu5zx9764wO20+eJCbTumSzi1snoK4mwTVBSeEOHXrVT9ZhQVb/gtHusHGdU+7rU+9+G2y3S2vPgywJeriMt2zcnHSE+rcJhDgqe80nGOwIrS5QhbMpnxo6fmw/CMugGOK56rq4apRgzoBV8t8IdIs6DSQofGbyWcC7DMjN6P1rbYIz/0uPcQWMNl7D0jFIDLOOvxPWqbCxr+NUQ77Q5WkwHCaAYwGI1YKib9GcxxkJgWS/xWXyRlEQ==
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=zDRfaJWeM0bVB0lFA1s5os81FJFcEqozshfArd7oFMQ=;
 b=KtPWxBZfdX3C8QLsaPzfaCPdcx0jNio8XZFyrhWVn34UgwmoOak822mgZQw7NwYcSZvsJsZlJZP1v6ONrP/hAMKLQe00gAHpaTH9MfunLKImToy6BcVi4NFUA70ythNLcL/JDxkyhwmO3dt/FRdhD8lZPubjDnocG6luOAel3pc=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <3b170ba5-f29d-45da-baae-56b5522bb304@citrix.com>
Date: Mon, 9 Nov 2026 18:06:17 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 17/28] x86/hvm: avic: route interrupt delivery to vCPU
To: dmukhin@ford.com, xen-devel@lists.xenproject.org
Cc: andrew.cooper3@citrix.com, jason.andryuk@amd.com, jbeulich@suse.com,
 roger@xenproject.org, teddy.astie@vates.tech, dmukhin@xen.org
References: <20261105013347.719392-1-dmukhin@ford.com>
 <20261105013347.719392-18-dmukhin@ford.com>
Content-Language: en-US
From: Ross Lagerwall <ross.lagerwall@citrix.com>
In-Reply-To: <20261105013347.719392-18-dmukhin@ford.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO2P123CA0098.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:139::13) To CH8PR03MB8274.namprd03.prod.outlook.com
 (2603:10b6:610:2ba::5)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8274:EE_|FT1PR03MB991367:EE_
X-MS-Office365-Filtering-Correlation-Id: 8faae10a-2264-4a08-b2b0-08df3e8c2960
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|11063799006|261021121427099003|261009223027099003|56012099006|261021123027099003|261022105027099003|261022075727099003|261026140227099003|261026121527099003|261028144727099003|4143699003|261102123227099003|18002099003|22082099003|10067099003;
X-Microsoft-Antispam-Message-Info:
	X1JyPnKAl5PgVlQDVPqKwLHqh9MoreOmh4CJqd5bVHUYdcI+Sz44QpmtlvN9fLD8pw+QSSiI12JZ13ZFVRUQRTmtvLsoGwoQ8PuIo+xgHb4n16sX85z4hHgfAEjoOmUyhGib3FAlQ/GC324P4xl+Z/lt6u3KA5G0f/hQQRNf3TTUtp/9FCzfdHli0eoX5qlmuH6WcsgiUM0dnFAaYTyfDkPQ3rTQ3WWXVz83nL0UqbOj5Ptk7hKhBUksZFH9f+CdTy4y2ksH7pQA7riv+DbeJ/GGlTFBe8MLGKvlLxiU/aPag9L+FmlhPFclbnp53Yi8oohkeoZw/vDlCAOy0n2GRKt2CWvYdnuglcfLui53v3duIA6ycvLSKfi5FTv0bgBl/pf3QN5Sw0QVJr8YXNFcmZ+4ADq1t7kOZw4pH2LVoBFKVNJRkzVerAL8lHz/EHng8xs4a5xElAJmnsTA+XEAvJLOXb9oWVLnmSxt7cr91a9hD8bFd0EbedtWl6vq2HC0x8nOWKgq67AptsK4SVa5cJy1Dd2ZC/PxTi7pcqGSf4MKOsVwEbD83B0qH4hcQWSo9pqkMUwR4FIiYVmJyub0gp7KmZSxVLXdf2uV4E4aTqTwcRvwaiY/zlO6VIHVR4hzacVzceclrGbD5YvPjTNAPxeI7pcxE9xVE0kyWQbdUMI=
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)(366016)(1800799024)(376014)(23010399003)(11063799006)(261021121427099003)(261009223027099003)(56012099006)(261021123027099003)(261022105027099003)(261022075727099003)(261026140227099003)(261026121527099003)(261028144727099003)(4143699003)(261102123227099003)(18002099003)(22082099003)(10067099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?T3FQbjVMbldtbVRsNjl6ck1KbCs3eWRQMmVGeGNvNWx3Z3VlREg2a1JSRGJv?=
 =?utf-8?B?WU94d1pXRi8wNkh1OVo0RFBSNTl1c3R0Qkx1aXVlSU5hOUIzWGFiK29BMmhk?=
 =?utf-8?B?cTFSVFZnOTZueHFmaFBSSFpKcnNteVdpWnIyejVRTkplUXNSYVFieW9SL0Zt?=
 =?utf-8?B?bVludmwxeVZ0aFcyV3BLS2FCSGhPV1Z2U3lxLzhRMDZNSEZ1b0g4QXg3ZVhp?=
 =?utf-8?B?cjVnSVZtMEYxbHlrekcxV2hIdytiN1dORDd3eWFyOTc5VUFtaS9jZ29PWWR2?=
 =?utf-8?B?UFpSeTBCcW5hbEI4YnVmS2xvNkcxUnJUYUdqRTg1alB5eHpRcTU3Y1M4VjZQ?=
 =?utf-8?B?VGVTU0x3OTJYVlN3WlFoeS9IZ3lqTUNoakdoVlB2U1kyamlxYVQvbkJ3Z2RM?=
 =?utf-8?B?bGYrZG8vaVV5dyt1U0ZpTldtUTIyWEl5N1g4VnhqdlBJL0h4YjUwWXY0Z3hk?=
 =?utf-8?B?NXV0aVhVMVUwdCs3bzdEWlpGRUlWVlcyd1VyTmhnSzU4Yk5aUkw4UmR6OWpz?=
 =?utf-8?B?ZmVBWXNFS1Bmak5LOXl1ZmhLUDl3RGNwNCszd1Zma2JUSHQ0QXJNSHp3Z2xa?=
 =?utf-8?B?a1V1SzNNVVNVYmlsV1J5S2J2WGhKa05xSzMvQzlyZDh1ZUoyZXlOajJXRDRD?=
 =?utf-8?B?VFdwM3FWQUpsV0NWRHhkU3NrWlNLUDRGSXgyeUZVRklZcHowRmp1R1dQc0hz?=
 =?utf-8?B?OFp4QWZFL0lwZGR0WDNuSlY5V2F3bTh3SG5RM200REtXU2lSNzA3ak9FTWRO?=
 =?utf-8?B?MDdTbGZKVWppZXJ6RjNwY1NJaS9reWxBb1FVV1hXbFIrc0F6azNpUk1TckhV?=
 =?utf-8?B?YzJvMWJCejkreVFMRDFxeHkvUFlCdDR1NGRxT0RXbXpyajhBMUJ1M3NRWnlj?=
 =?utf-8?B?TjZZam5hNUU3QjRFMFNDMGpNaEx0K0Y3V1NCWURsYVNtQ3pZeFpqWFI1OVZR?=
 =?utf-8?B?ZFN0Q0dOWitWcWkxejlKTDYxQk9WemNvc2h6c3BmM1RTTU9Pem1OQk9yR3Fp?=
 =?utf-8?B?RDJaMVJuZERmMGlRL1ZlL1Q2N0tCMXVzUTdVNTlrNHpiN0c2VHRPYlpvNE56?=
 =?utf-8?B?Zkx6bFNRRVpZQlNIVnBibmVTczBvRStIWEREVDJKajV0enJUbmtCaW9zTFBW?=
 =?utf-8?B?YjVjNXFpMVlBQ2ZIMHd3T21tRDZnOCtkcDU2K2c3SDBVRHVjZzJUeFRZT0Jr?=
 =?utf-8?B?Y3lPa0hVTXozbDlXVFJ4akZmQ2xtVnNMU3dQNVpqeXNQNFVzc2d4T1dVcGMr?=
 =?utf-8?B?Zjh5Z2N6SEJWZzdIQmdLL2NCY2p2SWE0bVM0aFlxazZGd1o1OXBTRFRZT1k2?=
 =?utf-8?B?Y3VlZ3BweWdwbTdUZXFZM0pmWkR4RDBYT0VyUUZOc3IzaWlXSkE3OU96Z2o5?=
 =?utf-8?B?bkl3Vk1Kdy9Yalk1am95ZkxDRVZRZ1NQTk9aQm9Idm0zK1QxN3VBVCt1cXEz?=
 =?utf-8?B?NGJxeWs3SHZtNmNoczlOSFF3VVpHQi8vVUw1Q24vbjZiQTlUa2xnM3JKbGdj?=
 =?utf-8?B?eFllZ1JtYWVCQzFON1hXcE5Lb2JnMW9Ed0M1L0E2MlBwQVVEWGh0UE9PNW9j?=
 =?utf-8?B?ZWlobDgyV2EyMXo1aG1ZejNWNXlINytwRTRaeEZMUVlEVHNRNCs4cHU1SFdC?=
 =?utf-8?B?dHJibkhMaDgzNERPSjdxZWkxbXJCeEdFbEcxejZIQ0JoNy9uYkJrWXFmUVRk?=
 =?utf-8?B?NGJjQjQ1WUlvSkE2dE9WU3ExNWx5RXliVVVRVDhUVWpIdkppR1F5eE9rRkhG?=
 =?utf-8?B?VGlweE1wUWlUbTdySTNFQWpaL0l3ZXRUY01MZ3NrRlJhUEozbFY0Z3RWajdk?=
 =?utf-8?B?RHdWdUNMTjk3T3ZvYVUvbk15VWtIR1hjWG1BWmNXeldjT25OMVNuamZ6eFh0?=
 =?utf-8?B?QndTY3laZ0cxNTRRTndxTWxCeE9LNy92bFl2elNnQXBhbXduenBBUEVsNnY5?=
 =?utf-8?B?Q2pqT2FpVzlmZEJvZHdrZDdRTHIwWDZmTU5vL1MxZW5zOUZxSVpQMGlFVWR4?=
 =?utf-8?B?c3BMMkRTTWJQU2FZbUNWL1BnVmtVa1dBRjhnU1ZvVzd6RDhCdGNKY1Fndk9o?=
 =?utf-8?B?WHkyVWtXazRSRUhmT2prVGtZRktFaHZ4d1I2TXdHcitrT2QwZFFwNnUyeDRU?=
 =?utf-8?B?MFpBSFd5cmxyRitvNHZhTkNnL3BlUm90QUZsSlp5Ry9oeG5Ua3dhVVhLQ2FS?=
 =?utf-8?B?L3J0MUpGdkhWWG5uWFdXTW1Rd1krQTUvZWRlTXFab25VOU15b0k3TmtZdzZO?=
 =?utf-8?B?cklreldFeXZaU1Y3NktFUjBIQnlDWVJtWXNCeWk0cmxYbGFBVXdDTEtCRXhk?=
 =?utf-8?B?QmVFSXk4ZTlCeWZsUm5yNkRWMHpIZjVUVE5KcE1UMzRpa1BwLzlTM080SERk?=
 =?utf-8?Q?FbrXrbLnYAdTTgiY=3D?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8faae10a-2264-4a08-b2b0-08df3e8c2960
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8274.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 18:06:22.1533
 (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: 6ZWTuKDbqnIu3BQjfMDg61Vzsp8Dbn1/wm9htnjjr7bi3RAgiQh2IfRMJfQ+peGJsgtUfUK4GKwAUhZbxWoRQbTiPfHQy4baqfU8VScTR84=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FT1PR03MB991367
X-purgate-ID: tlsNG-c1860d/1794247586-CCB7187B-E6950F49/0/0
X-purgate-type: clean
X-purgate-size: 9417

On 11/5/26 1:33 AM, dmukhin@ford.com wrote:
> From: Denis Mukhin <dmukhin@ford.com>
> 
> Enabling AVIC implicitly disables the V_IRQ, V_INTR_PRIO, V_IGN_TPR,
> and V_INTR_VECTOR fields in the VMCB Control Word.
> 
> Introduce new interrupt injection code via AVIC backing page.
> 
> Essentially, that is handling of 'IsRunning' bit in physical APIC ID
> table entry: it needs to be in sync with the scheduled vCPU. Shadow
> the state to work around hardware not perceiving 'IsRunning' bit.
> 
> Add new doorbell MSR to accelerate IPI emulation. The MSR can be used
> for posting interrupts from hypervisor to the guest (e.g. event
> channels).
> 
> Signed-off-by: Denis Mukhin <dmukhin@ford.com>
> ---
>   xen/arch/x86/hvm/svm/avic.c              | 156 +++++++++++++++++++++++
>   xen/arch/x86/hvm/svm/avic.h              |  17 +++
>   xen/arch/x86/hvm/svm/intr.c              |   9 ++
>   xen/arch/x86/hvm/svm/svm.c               |  32 +++++
>   xen/arch/x86/include/asm/hvm/svm-types.h |   2 +
>   xen/arch/x86/include/asm/msr-index.h     |   1 +
>   6 files changed, 217 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/svm/avic.c b/xen/arch/x86/hvm/svm/avic.c
> index 18a814871133..0bcab0465227 100644
> --- a/xen/arch/x86/hvm/svm/avic.c
> +++ b/xen/arch/x86/hvm/svm/avic.c
> @@ -33,6 +33,8 @@
>   #define AVIC_MAX_PHYSICAL_ID                            (0xFEU)
>   
>   bool __read_mostly svm_avic_enable;
> +unsigned int __read_mostly svm_avic_features = AVIC_HW_ISRUNNING |
> +                                               AVIC_DOORBELL_MSR;
>   
>   static const char __section(".bss.page_aligned.const") __aligned(PAGE_SIZE)
>       avic_apic_access_page[PAGE_SIZE];
> @@ -50,6 +52,11 @@ static int cf_check avic_parse_cmdline(const char *s)
>       {
>           svm_avic_enable = true;
>       }
> +    else if ( !strcmp(s, "nodoorbell") )
> +    {
> +        svm_avic_enable = true;
> +        svm_avic_features &= ~AVIC_DOORBELL_MSR;
> +    }
>       else
>       {
>           return -EINVAL;
> @@ -228,6 +235,7 @@ int svm_avic_vmcb_create(struct vcpu *v)
>       entry |= AVIC_PHYSICAL_ID_ENTRY_VALID_MASK;
>   
>       ACCESS_ONCE(*sv->avic_physical_id) = entry;
> +    ACCESS_ONCE(sv->avic_shadow_id) = entry;
>   
>       avic_vcpu_enable(v, true);
>   
> @@ -248,6 +256,102 @@ void svm_avic_vmcb_destroy(struct vcpu *v)
>       vmcb->avic_vapic_bar = 0;
>   }
>   
> +static void avic_vcpu_set_cpu(struct vcpu *v)
> +{
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    unsigned apic_id = cpu_data[v->processor].apicid;
> +    uint64_t entry;
> +
> +    BUG_ON(sv->avic_physical_id == NULL);
> +    ASSERT(!(apic_id & ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK));
> +
> +    entry = ACCESS_ONCE(sv->avic_shadow_id);
> +    entry &= ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK;
> +    entry |= apic_id;
> +
> +    ACCESS_ONCE(*sv->avic_physical_id) = entry;
> +
> +    ACCESS_ONCE(sv->avic_shadow_id) = entry;
> +}
> +
> +static void avic_vcpu_set_running(struct vcpu *v)
> +{
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    uint64_t entry;
> +
> +    BUG_ON(sv->avic_physical_id == NULL);
> +
> +    entry = ACCESS_ONCE(sv->avic_shadow_id);
> +    entry |= AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK;
> +
> +    /* Shadow IsRunning state update. */
> +    ACCESS_ONCE(sv->avic_shadow_id) = entry;
> +
> +    /*
> +     * If hardware has problems detecting IsRunning (erratum 1235)
> +     * keep IsRunning in the shadow entry only.
> +     */
> +    if ( svm_avic_features & AVIC_HW_ISRUNNING )
> +        ACCESS_ONCE(*sv->avic_physical_id) = entry;
> +}
> +
> +static void avic_vcpu_clear_running(struct vcpu *v)
> +{
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    unsigned apic_id = cpu_data[v->processor].apicid;
> +    uint64_t entry;
> +
> +    BUG_ON(sv->avic_physical_id == NULL);
> +    ASSERT(!(apic_id & ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK));
> +
> +    entry = ACCESS_ONCE(sv->avic_shadow_id);
> +    entry &= ~AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK;
> +
> +    /*
> +     * If hardware has problems detecting IsRunning (erratum 1235)
> +     * keep IsRunning in the shadow entry only.
> +     */
> +    if ( svm_avic_features & AVIC_HW_ISRUNNING )
> +        ACCESS_ONCE(*sv->avic_physical_id) = entry;
> +
> +    /* Shadow IsRunning state update. */
> +    ACCESS_ONCE(sv->avic_shadow_id) = entry;
> +}
> +
> +/* vCPU enters blocking state. */
> +void svm_avic_vcpu_block(struct vcpu *v)
> +{
> +    avic_vcpu_clear_running(v);
> +}
> +
> +/* vCPU is preparing to resume guest execution. */
> +void svm_avic_vcpu_resume(struct vcpu *v)
> +{
> +    avic_vcpu_set_running(v);
> +}
> +
> +/* vCPU is being assigned a new pCPU. */
> +void svm_avic_vcpu_switch_to(struct vcpu *v)
> +{
> +    avic_vcpu_set_cpu(v);
> +}
> +
> +/* vCPU is being removed from a pCPU. */
> +void svm_avic_vcpu_switch_from(struct vcpu *v)
> +{
> +    avic_vcpu_clear_running(v);
> +}
> +
> +bool svm_avic_vcpu_enabled(const struct vcpu *v)
> +{
> +    const struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    const struct vmcb_struct *vmcb = sv->vmcb;
> +
> +    ASSERT(!(vmcb->_vintr.fields.x2avic_enable));
> +
> +    return vmcb->_vintr.fields.avic_enable;
> +}
> +
>   /*
>    * Handle the AVIC_INCOMP_IPI #VMEXIT when AVIC is enabled.
>    *
> @@ -546,6 +650,58 @@ void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs)
>           hvm_emulate_one_vm_event(EMUL_KIND_NORMAL, X86_EXC_UD, X86_EVENT_NO_EC);
>   }
>   
> +static void avic_deliver_posted_intr(struct vcpu *v)
> +{
> +    struct svm_vcpu *sv = &v->arch.hvm.svm;
> +    uint64_t entry;
> +    unsigned int apicid;
> +
> +    smp_mb();
> +
> +    entry = ACCESS_ONCE(sv->avic_shadow_id);
> +
> +    if ( !(entry & AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK) )
> +        return;
> +
> +    /*
> +     * Some AMD systems (e.g. Zen5 Family 26 (0x1a), Model 36 (0x24)) have
> +     * broken remote notification via doorbell MSR.
> +     * Fallback to brute force, if requested.
> +     */
> +    if ( svm_avic_features & AVIC_DOORBELL_MSR )
> +    {
> +        apicid = entry & AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK;
> +
> +        /* Ensure the pending interrupt wakes vCPU. */
> +        vcpu_unblock(v);
> +
> +        /*
> +         * AMD APM, 5.29.8.2 Doorbell Mechanism
> +         * The serializing semantics of WRMSR are relaxed when writing to
> +         * the Doorbell Register.
> +         */
> +        wrmsrl(MSR_AMD_AVIC_DOORBELL, apicid);
> +    }
> +    else
> +    {
> +        vcpu_kick(v);
> +    }
> +}
> +
> +void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector)
> +{
> +    ASSERT(v != current);
> +
> +    if ( svm_avic_vcpu_enabled(v) )
> +    {
> +        avic_deliver_posted_intr(v);
> +    }
> +    else
> +    {
> +        vcpu_kick(v);
> +    }
> +}
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/x86/hvm/svm/avic.h b/xen/arch/x86/hvm/svm/avic.h
> index f9ff3ffc9346..098924925e89 100644
> --- a/xen/arch/x86/hvm/svm/avic.h
> +++ b/xen/arch/x86/hvm/svm/avic.h
> @@ -6,6 +6,15 @@
>   #ifndef __SVM_AVIC_H__
>   #define __SVM_AVIC_H__
>   
> +#include <xen/const.h>
> +
> +/* Known AVIC hardware quirks. */
> +enum {
> +    AVIC_HW_ISRUNNING       = BIT(0, U),    /* See erratum 1235 */
> +    AVIC_DOORBELL_MSR       = BIT(1, U),    /* Remote vCPU notification OK */
> +};
> +
> +extern unsigned int svm_avic_features;
>   extern bool svm_avic_enable;
>   
>   int svm_avic_domain_initialise(struct domain *d);
> @@ -17,4 +26,12 @@ void svm_avic_vmcb_destroy(struct vcpu *v);
>   void svm_avic_vmexit_incomp_ipi(struct cpu_user_regs *regs);
>   void svm_avic_vmexit_noaccel(struct cpu_user_regs *regs);
>   
> +bool svm_avic_vcpu_enabled(const struct vcpu *v);
> +void svm_avic_vcpu_block(struct vcpu *v);
> +void svm_avic_vcpu_resume(struct vcpu *v);
> +void svm_avic_vcpu_switch_to(struct vcpu *v);
> +void svm_avic_vcpu_switch_from(struct vcpu *v);
> +
> +void cf_check svm_avic_hvm_deliver_posted_intr(struct vcpu *v, uint8_t vector);
> +
>   #endif /* __SVM_AVIC_H__ */
> diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
> index 1d39f25e5209..9cceca704a91 100644
> --- a/xen/arch/x86/hvm/svm/intr.c
> +++ b/xen/arch/x86/hvm/svm/intr.c
> @@ -24,6 +24,7 @@
>   #include <public/hvm/ioreq.h>
>   #include <xen/domain_page.h>
>   
> +#include "avic.h"
>   #include "nestedhvm.h"
>   #include "vmcb.h"
>   
> @@ -80,6 +81,14 @@ static void svm_enable_intr_window(struct vcpu *v, struct hvm_intack intack)
>   
>       ASSERT(intack.source != hvm_intsrc_none);
>   
> +    if ( svm_avic_vcpu_enabled(v) )
> +        /*
> +         * AVIC delivers pending LAPIC interrupts from the backing page
> +         * when the guest becomes interruptible, no need to arm the legacy
> +         * V_IRQ/VINTR interrupt-window mechanism.
> +         */
> +        return;
> +

In this case, don't you miss out the call to pt_intr_post() that would normally
happen?

With this patch series applied, OVMF reliably hangs for me. Adding in a call to
pt_intr_post() lets it get as far as Linux booting (but not fully booting up
successfully).

Ross


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 18:31:06 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 18:31:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480361.1684325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQU8w-0008Sr-UP; Mon, 09 Nov 2026 18:30:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480361.1684325; Mon, 09 Nov 2026 18:30:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQU8w-0008Sk-RY; Mon, 09 Nov 2026 18:30:58 +0000
Received: by outflank-mailman (input) for mailman id 1480361;
 Mon, 09 Nov 2026 18:30:57 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92) id 1xQU8v-0008SX-7t
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:30:57 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQU8u-003fH2-7q
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 19:30:56 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af21150-bab6-0a2a0a5309dd-0a2a4505e336-14
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:30:56 +0100
Received: from [52.101.61.37]
 (helo=DM1PR04CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <andrew.cooper@citrix.com>)
 id 6af2115e-4cb1-0a2a45050019-34653d2550b9-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:30:55 +0100
Received: from CH8PR03MB8275.namprd03.prod.outlook.com (2603:10b6:610:2b9::7)
 by EAYPR03MB989301.namprd03.prod.outlook.com (2603:10b6:303:2cc::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Mon, 9 Nov
 2026 18:30:52 +0000
Received: from CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37]) by CH8PR03MB8275.namprd03.prod.outlook.com
 ([fe80::a70d:dc32:bba8:ce37%4]) with mapi id 15.21.0592.012; Mon, 9 Nov 2026
 18:30:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
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=T71Eq5X9sRhuRlQSE+4s47Vg5ia53YWsR6iOONGb+YjwkLgrrTqKwrYi3d9REjYKxsL4aMoRWwzaPlxoIHAs6NeZINaDcuiENMNYyN+TdDiCfe3nzmdHqDuQMj63mg9o2xFefsd0vZ9dPIdzjjHHFrvqT5387/qypha1M/c8rOTePMYT3ZpDyMtl3PsY/R08U2IaoAdHZo+zhlbb8h+7GO0CBn5cX4ifnhoyfCm+OtMQhtkI52dSlv6Tymv7RU8b7V27qFI0Oisq31Rx3mYHfAO3CKKusds1ZACSFxzuLwGwrip8ck9q7LQv2GhD6JSG+mDryq/uI1XoocJfigi+dw==
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=97GKxAv5gSvIci8N9tZm3p4PXK1kcV2i68YVNNgpcSo=;
 b=wq1xEVDd5osdnz82mjdlcvhP6ulwy4nkyAp8OnlQtJPNzAy+42nhn9/KI445YqPXB/bOKdTi4i7lxZsCz4cCSaeHUgjoG49/FLH73cvYDqEpK3E/DXm2zlpTjqH9APvfvHV0O2O/eYWTSo6PMayCms7XyGNmLp6ucA48UhqfLeGatgzQ3NTTCP2vOy0POwzF7mp4seyjngm17TGeJ6kgIGQtnEdlfU2Dzji6d8+ernc4h8eov2q9FkOPgQxPspd4CF9QGAKeHPGNecDk0ign0ZEDWM5FwLymc59B6FlK9X3lyKZtBvud8V0q/60Eu6b7G9hkbEc2UmQPz2X2LhkxHA==
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=97GKxAv5gSvIci8N9tZm3p4PXK1kcV2i68YVNNgpcSo=;
 b=rB3HGbuY/Zh26/5b5/KLljI3XzZOjGOwRgP554mWOuZrRrGvXPqhfuQ4XWj5Ah/w+xnexDaf7a8fWQd1B3ihYaH1DclmweK2QUPNWBRZMU9HFKrfWVWAD77/w6Avh9t0Et5XzS+dehl3IKbYyT2zFwvd0dO0ptyW8HNnVNJgML4=
Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
Message-ID: <bcf961ee-f947-4115-bf92-716b4b2bf9e3@citrix.com>
Date: Mon, 9 Nov 2026 18:30:48 +0000
User-Agent: Mozilla Thunderbird
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger@xenproject.org>
Subject: Re: [PATCH v5 1/4] x86: record SSP at non-guest entry points
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <d0de0425-a0fd-4ced-9768-ff102b953a22@suse.com>
 <2b348885-fb2d-420f-8f71-81e3a9c836af@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <2b348885-fb2d-420f-8f71-81e3a9c836af@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO6P123CA0051.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:310::7) To CH8PR03MB8275.namprd03.prod.outlook.com
 (2603:10b6:610:2b9::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH8PR03MB8275:EE_|EAYPR03MB989301:EE_
X-MS-Office365-Filtering-Correlation-Id: 1870722c-940a-482e-f5f4-08df3e8f95d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|22082099003|18002099003|10067099003|3023799007|4143699003|11063799006|261102123227099003|56012099006|261022105027099003|261021121427099003|261026140227099003|261009223027099003|261028144727099003|261026121527099003;
X-Microsoft-Antispam-Message-Info:
	m7MYoga9mcuL0LY259bVzIZOcjnGbR9xQ0PKm+lW631/Si8nSsAplCUjrpTQtscLr/nCVU+htZm58aIhdjk1u1wHViH6tcsQdCDFIwskyYgxvL1VIU+T+bTBwxAVynLMpSgkNH8gubCgid5fcdGpsPtu3LVaF+CyjUcQyoXwx/ol5p3DPyNQmwTXLnGlT0pVcCT9jTWP+MyiWPDyz/t4KjasuRF0UbhWi4WHM6+HitFP7z4Q2Bd3ju8jlQoxJV8CgNTj86w/setFpSV+PxpomQWWaQe0rzI+pVGn+8WRWJKDWncw2jlNq/DwYHZp3tpn65fXwFnw2A8nIk1WiZ7LYiV+c2wlRRlma2HdEbcn8Wp59vEnpnIz9JYsBG9vCeHWsZDdJ7V/ksonl+8x1CiTj7GDBEBsNSJKvhftAkf7qvxXpGiZhE+gE9f35tqoH8WeKs9IJVQUNo/owKFQ7ve/PTJOPa0DtrwFWOhLd/Gu6JcVJTp42610IgBVebaW05Df05RXl6WQLxnBImIQcsYSrLQB8QQ8K1msIk+JeJGa28Fta3OsncMzaq40Cpit0aeYj5dKjJswfkztHA16htcUDarwHyx+a0UMRtRHrIsSbNnahWdsc9W9xRYsTh7Y2g4JSWMyVnlxyH4PMwgjIc72ou3rUtv8azUYtAz+Da41jgg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH8PR03MB8275.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(22082099003)(18002099003)(10067099003)(3023799007)(4143699003)(11063799006)(261102123227099003)(56012099006)(261022105027099003)(261021121427099003)(261026140227099003)(261009223027099003)(261028144727099003)(261026121527099003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ektuazRxVUhVazhud08wQzk1a0dtNms1bkgwTWt4Ky9TSy96YjJBVnJybXRL?=
 =?utf-8?B?TjR3bWhCakhramQ5NGFlZFgxQW9CbUV0TnZEMDFaS2FvaWhNNUgrdi95VnRX?=
 =?utf-8?B?OGlkdW1NdGhTRzY2NWVJQUswMlRzcVNtUDIrVXcwY3I0L24yS2l1UkI0MEsx?=
 =?utf-8?B?U3p4UjVmdm9sdmxqeTZLdlhQQWUrTXFsRGdQV1VxVXYxL0hiMk9acnM0cCtL?=
 =?utf-8?B?RVlHckVzKzllYTIxbno1QUpCd0NFYXBUaU5UaVFJakQ4TUdsd2duMUtVQVRz?=
 =?utf-8?B?Zkt0RTNvdjFPTm9JaGVMTXZma3R2YVNwcGxwM1JqN0F2YXBGTG55cC8yZ0Vh?=
 =?utf-8?B?b3RvYUM2YzNBS2hhOWZxTE1oT1BFZy9KcU5sZ3k1VzVaQmI2Rlh2eG5PZ0dm?=
 =?utf-8?B?OTBZbDg4dFYwWFNoUXV4bjRUbTkvczZZUWh0SS9kS0gzOXArNFM2YUJ0dHNJ?=
 =?utf-8?B?U1RaOGRidWEwZVJJdUJvc2Znc2FidkdPei9URDBkZnpoZTkvNFBENThCbC9P?=
 =?utf-8?B?TGk1Ti9XNVFDUUxYYjFValhmVjRFWVFrQ2h6SytPQ294bFlaOVBUOUdadHdn?=
 =?utf-8?B?eHJZWWFzbUhXY3VmdVNza1dPenJLa0lHOFVJZTVwQlNCdTMyWkdrcTN2Zk5F?=
 =?utf-8?B?c0lVOWRPbDQraFZFeDM0Ymx4MWhFcS9uVkhZWldndkJaWkpQUFFOWmtpNHRH?=
 =?utf-8?B?K0xlWms0encwWlc1R1RzaFFpY0VPSk1oZC9EOGxnSmx2KzVOa1Z6K1UxNlRz?=
 =?utf-8?B?TDhGb0FQaXlrWjJFdVlnSytkZlR6WGI4QmFyYzlhSXQ0V2hhL0F6Y3JKQi9G?=
 =?utf-8?B?Y2lWVFNvQlpQRXJtM2J4OW1TSGRYbm91dDdCT1AzblRDQ0xiNkJoZU5jeVdV?=
 =?utf-8?B?VGVsTjZWVDIxaHlsa1hFN2djY3Q2d3UvNnFWV1IzQXV4dmxVbFNaeElOZVlC?=
 =?utf-8?B?emxFY1Q2OFdpVnlSSSt4eFdaSkhTcWhDaHpGaVM4aWV4WGhoRkdLZXBtTFRm?=
 =?utf-8?B?TnFCa0Y2ZllOcFAxTHU2NEdpQUxjUUpDK0Q4OWpYWlhYV1JPd0p5THV3Y3Rm?=
 =?utf-8?B?YmlRb0JFMUFmRjlyT1BFYmhyVFE4VVhPdWhHeWY5NVN3M0hSU1JUUHRQbkVn?=
 =?utf-8?B?NktkWEh3SHpUYWdwb2tDWnRTVCtjVFVsZndreG9jVGViamp4bWJvT2NJeGdo?=
 =?utf-8?B?Mng4bDI2UlI1ZWJhSndsZEppK0R2bDV1RGdWS2daL21Ba21waUgvT29mK29k?=
 =?utf-8?B?VUdoRjZOdU5rdmlNSU5qV3RUam9YVXRyS2pBd0d2UU4vRjVvSGJNcllycTRh?=
 =?utf-8?B?aXNLL2FNN3pzU0Y3cTZKWmhtTmtLRmJjQVBPdDNLS2NhOWR2MjBnRllJTjNC?=
 =?utf-8?B?VkZoeVpqUnFabkc4QU8vcE9VSWk5L3BCVUhPdHN6SUtGakR2UE8xbmZKWU5n?=
 =?utf-8?B?aUJobEdTL2UyY0ZQN1VPRy9YZ2x3SDcyVmRUVUlIVjNsTkhpSno2NDUxUTEv?=
 =?utf-8?B?OFcyK0tudzl5c3Q5WDYyWlBBMDNkQW1Hb082QmRTUlgrdC8yVnNMak16ZHZu?=
 =?utf-8?B?VWtuQkdSSXRGd0g5a2Y3cGoyN0dsQlBCZzVlSzBseVJFd3p4dkg4YjdxWUhH?=
 =?utf-8?B?M2ZTemJObWdheFpwc21peEtiUEdRQVFmRzNkQk1nZzlaMmJvK2pKdnlzSzlJ?=
 =?utf-8?B?cG9RUXE3cE8zNWhzWFh4OUlUcVQ4eHpob2ZEbnozNEkwOGJqSWhNNWtHM2tQ?=
 =?utf-8?B?ZU5nNUJSNU9qc1hWNS9GOGFGc25pRGl1ZlhBWlJxUVZpdjcxajVBaTlGeXcx?=
 =?utf-8?B?YkVrcC96UXBiWkswTGJCaXd0S051ZkpwVDZIY3RVVXhNR1V4VWpGU3AyalYr?=
 =?utf-8?B?TVZmSDVMaXVSS0ZCRmkyaGFxUXJGQ2dOMUZramhFSHB3ZnJrYkFTYzNRZlpk?=
 =?utf-8?B?aWhibXRSMjJHNWtwUjBJcnU2VGE1UFBKYS9RTHAraHN0Vzk2Ri9yczQ4Z0ZQ?=
 =?utf-8?B?T3R3WGh6UldvUDRLc2RQTkF6cWJSUERGNlNOYml2OU5waEozT2ZEbmViVHZ0?=
 =?utf-8?B?L2lYTlNoOGh2UlBzZStXNWhxNDM4SHJGdW1KV2Y2NTRWak1VVzJNeDRlSnpN?=
 =?utf-8?B?UjBrb05HZW9xVEJuNklSa3psYUZDY054clpaczA5QnFaTXhkQWtINmlMK2Ja?=
 =?utf-8?B?YSs0US9JSzdDOXYzdDVGMzBlSUxtT2VYaWpvWlJ0OHl2enZKb0NHSnMrSXJN?=
 =?utf-8?B?YzR1VFJWdlQ4YkVabmNCQmUvTnZuK1NBQWtCTFVoYzgrdVgxNGVYWGVpRis3?=
 =?utf-8?B?TVF1QnllRzhQTGVkV3J2SjFUS2tEdDYwN1loRVpQSlptOFVGNW9idz09?=
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1870722c-940a-482e-f5f4-08df3e8f95d8
X-MS-Exchange-CrossTenant-AuthSource: CH8PR03MB8275.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2026 18:30:52.6045
 (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: d3eJi7+l1A4gt2TLCsUh+iS5IVf4uSHM/xVvpka3sSpP/Sv6RbJtEoWC+r8o2Jr1EpbNt2UjpjWssnEaepvEUqIJiL9MoJjC/EUnWthhRlg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: EAYPR03MB989301
X-purgate-ID: tlsNG-c201ff/1794249056-714AC2A1-6A405A52/10/78276251493
X-purgate-type: spam
X-purgate-size: 1908

On 09/11/2026 1:08 pm, Jan Beulich wrote:
> We will want to use that value for call trace generation, and likely
> also to eliminate the somewhat fragile shadow stack searching done in
> fixup_exception_return(). For those purposes, guest-only entry points do
> not need to record that value.
>
> To keep the saving code simple, record our own SSP that corresponds to
> an exception frame, pointing to the top of the shadow stack counterpart
> of what the CPU has saved on the regular stack. Consuming code can then
> work its way from there.
>
> In SAVE_ALL / RESTORE_ALL simply drop the use of UREGS_r15. We want the
> full size in all cases, so what exactly the top-of-stack field is going
> to be (whose UREGS_* is 0 anyway) doesn't matter this much there. This
> way we don't need to distinguish between XEN_SHSTK=y and XEN_SHSTK=n.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

The code is now fine, but the commit message is quite stale.

You need to drop "non-guest" in at least two places, and change
SAVE_ALL/RESTORE_ALL.  In fact that whole final paragraph can go.

With the commit message suitably adjusted, Reviewed-by: Andrew Cooper
<andrew.cooper3@citrix.com>

> ---
> v5: Drop ssp parameter of PUSH_AND_CLEAR_GPRS again.
> v4: Re-base.
> v3: Put new field at the front of struct cpu_user_regs.
> v2: Add comment ahead of SAVE_ALL. Add comma between its parameters.
>     Re-base.
>
> --- a/xen/arch/x86/include/asm/asm_defns.h
> +++ b/xen/arch/x86/include/asm/asm_defns.h
> @@ -259,12 +259,19 @@ static always_inline void stac(void)
>          xor   %r14d, %r14d
>          push  %r15
>          xor   %r15d, %r15d
> +#ifdef CONFIG_XEN_SHSTK
> +        rdsspq %rcx
> +        push  %rcx
> +#endif

It might be worth having /* Zero (from above) if CET-SS is not enabled
*/ on the push here to make it clear what value is stored.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 18:44:03 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 18:44:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480374.1684334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQULT-0002Q1-2z; Mon, 09 Nov 2026 18:43:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480374.1684334; Mon, 09 Nov 2026 18:43:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQULS-0002Pu-W5; Mon, 09 Nov 2026 18:43:54 +0000
Received: by outflank-mailman (input) for mailman id 1480374;
 Mon, 09 Nov 2026 18:43:53 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <m.v.b@runbox.com>) id 1xQULQ-0002Po-Bv
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 18:43:53 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQULP-008KHd-Bx
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 19:43:51 +0100
Received: from [10.42.69.11] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <m.v.b@runbox.com>)
 id 6af21433-e002-0a2a0a5209dd-0a2a450bded6-44
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:43:50 +0100
Received: from [185.226.149.37] (helo=mailtransmit04.runbox.com)
 by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <m.v.b@runbox.com>)
 id 6af21465-b7e8-0a2a450b0019-b9e29525d400-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 19:43:50 +0100
Received: from mailtransmit02.runbox ([10.9.9.162] helo=aibo.runbox.com)
 by mailtransmit04.runbox.com with esmtps (TLS1.2) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93)
 (envelope-from <m.v.b@runbox.com>)
 id 1xQUL4-00DZYI-Px; Mon, 09 Nov 2026 19:43:30 +0100
Received: from [10.9.9.73] (helo=submission02.runbox)
 by mailtransmit02.runbox with esmtp (Exim 4.86_2)
 (envelope-from <m.v.b@runbox.com>)
 id 1xQUKa-0004D0-VI; Mon, 09 Nov 2026 19:43:01 +0100
Received: by submission02.runbox with esmtpsa [Authenticated ID (536975)]
 (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.95) id 1xQUKJ-00DckN-Bo; Mon, 09 Nov 2026 19:42:43 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=runbox.com header.i="@runbox.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:References:Cc:To:Subject:From:MIME-Version:Date:Message-ID"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com;
	 s=selector1; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References
	:Cc:To:Subject:From:MIME-Version:Date:Message-ID;
	bh=da11Hl37urAgXVs2QJqiBOsIxcQzXPZKoHryymoOheY=; b=VSonogeaVwrcJihCTyhQfzij8C
	elBF0spskqW9NzZmR4pFpcg/iiUuzTIpIdef8MxHPluh13A5C0DUa8XMgKigjeMZ62tBUV6ahyd43
	4kJEf8C4AxtzVtqYNZYpuLHDtLrQNZj8i7nq41+sfBKjs/LE9lhjHtke260cJDAqn70ehgHrGyazG
	6/bQsNaLW5aWAGyxLCtkDBCKSge49jZN+Q/4g+L1SjaaHfbKP7sKvD6aZEJJYtjaz4EDRloXMt7yg
	2dE2vh3tKpPMbXEsoObeMwwekpJWKTULl5BB4ZrNxRt2QaNafXZ8RYL5zDXIdIfaT/pij1yGXKEZu
	xCNO721g==;
Message-ID: <d2577859-1468-4892-af5b-7912aabd402a@runbox.com>
Date: Mon, 9 Nov 2026 10:42:32 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: "M. Vefa Bicakci" <m.v.b@runbox.com>
Subject: Re: [PATCH] x86/xen: Fix lazy MMU pause count wrap-around
To: Juergen Gross <jgross@suse.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>,
 Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
 Peter Zijlstra <peterz@infradead.org>, Juri Lelli <juri.lelli@redhat.com>,
 Vincent Guittot <vincent.guittot@linaro.org>,
 Dietmar Eggemann <dietmar.eggemann@arm.com>,
 Steven Rostedt <rostedt@goodmis.org>, Ben Segall <bsegall@google.com>,
 Mel Gorman <mgorman@suse.de>, Valentin Schneider <vschneid@redhat.com>,
 K Prateek Nayak <kprateek.nayak@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
References: <20261102-xen-lazy-mmu-v1-1-d99a3050b76d@runbox.com>
 <36064075-fbf0-40ac-8448-60bd36ad2a28@suse.com>
Content-Language: en-US
In-Reply-To: <36064075-fbf0-40ac-8448-60bd36ad2a28@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-ID: tlsNG-42698a/1794249830-188C99EA-D4746B66/0/0
X-purgate-type: clean
X-purgate-size: 7027

On 2026-11-09 01:40, Juergen Gross wrote:

> On 02.11.26 16:31, M. Vefa Bicakci wrote:
>> Commit bec6f41a6fe5 ("x86/xen: Get rid of last XEN_LAZY_MMU uses")
>> unintentionally prevents the activation of lazy MMU mode for most tasks
>> running on Xen PV VMs (including dom0).
>>
>> That commit made xen_end_context_switch() call
>> __task_lazy_mmu_mode_resume() with the task being switched to. However,
>> the latter function decrements the pause_count field of the task without
>> checking whether that task's lazy MMU mode was paused or not. A task
>> being switched to for the first time has never been switched from, so
>> attempting to resume lazy MMU mode can wrap-around (underflow) the
>> pause_count from 0 to 255 (U8_MAX).
>>
>> Furthermore, the non-zero pause_count is copied to child tasks at fork,
>> so all descendants (including the idle tasks of the non-boot CPUs)
>> inherit the non-zero pause_count. This prevents enabling lazy MMU mode
>> for them, because lazy_mmu_mode_enable() does not do anything when
>> pause_count is non-zero.
>>
>> Hence, call __task_lazy_mmu_mode_resume() from xen_end_context_switch()
>> only if lazy MMU mode was paused.
>>
>> This issue was discovered with CONFIG_DEBUG_VM=y, which enables
>> pause_count underflow and overflow warnings. In the examples quoted
>> below, the first warning shows the underflow with PID 1. The second
>> warning shows the overflow from 255 (U8_MAX) to 0, also for PID 1, as
>> indicated by the same RDI register value.
>>
>> Example pause_count underflow warning:
>>
>>    WARNING: include/linux/pgtable.h:362 at xen_end_context_switch+0x4e/0x60, CPU#0: swapper/0/0
>>    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 7.2.4-1 #2 PREEMPT(full)
>>    RIP: e030:xen_end_context_switch+0x4e/0x60
>>    ...
>>    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888004930000
>>
>> Note: The PID is shown as 0 above, because current_task is updated in
>> __switch_to() after arch_end_context_switch(). arch_end_context_switch()
>> calls xen_end_context_switch() indirectly.
>>
>> Example pause_count overflow warning:
>>
>>    WARNING: include/linux/pgtable.h:319 at xen_start_context_switch+0x64/0x70, CPU#0: swapper/0/1
>>    CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G        W  7.2.4-1 #2 PREEMPT(full)
>>    ...
>>    RIP: e030:xen_start_context_switch+0x64/0x70
>>    ...
>>    RDX: 0000000000000000 RSI: 0000000013f7894d RDI: ffff888004930000
>>    ...
>>    Call Trace:
>>     <TASK>
>>     __schedule+0x36a/0x1a90
>>     schedule+0x27/0xa0
>>     schedule_timeout+0xbd/0x100
>>     __wait_for_common+0x97/0x1b0
>>     wait_for_completion_killable+0x24/0x40
>>     __kthread_create_on_node+0x13e/0x240
>>     kthread_create_worker_on_node+0xee/0x1c0
>>     workqueue_init+0x26/0x420
>>     kernel_init_freeable+0x101/0x360
>>     kernel_init+0x1a/0x130
>>     ret_from_fork+0x2b0/0x340
>>     ret_from_fork_asm+0x1a/0x30
>>     </TASK>
>>
>> Fixes: bec6f41a6fe5 ("x86/xen: Get rid of last XEN_LAZY_MMU uses")
>> Cc: stable@vger.kernel.org # 7.2.x
>> Signed-off-by: M. Vefa Bicakci <m.v.b@runbox.com>
>> ---
>> === Testing notes ===
>> This commit was tested with kernel v7.3-16755-gd135ab453a74 and v7.4-rc1
>> with a domU PV VM, and versions from v7.2.4 to v7.2.14 with dom0 and
>> domU PV VMs running on Xen v4.19.5. CONFIG_DEBUG_VM=y was set for all
>> tests, and no warnings were observed.
>>
>> === Debugging notes ===
>> For debugging, I instrumented xen_start_context_switch(),
>> xen_end_context_switch() and copy_process(), and I confirmed that the
>> inherited pause_count value is decremented for each level of the process
>> tree, starting from 255.
>>
>> === Credits ===
>> The patch was hand-written, but the commit message was polished with a
>> few rounds of LLM review.
>> ---
>>   arch/x86/xen/enlighten_pv.c | 10 +++++++++-
>>   include/linux/sched.h       | 19 +++++++++++++++++++
>>   2 files changed, 28 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
>> index c5117a7730d6..68f8a977999b 100644
>> --- a/arch/x86/xen/enlighten_pv.c
>> +++ b/arch/x86/xen/enlighten_pv.c
>> @@ -431,7 +431,15 @@ static void xen_end_context_switch(struct task_struct *next)
>>         xen_mc_flush();
>>       this_cpu_write(xen_cpu_lazy_mode, false);
>> -    __task_lazy_mmu_mode_resume(next);
>> +
>> +    /*
>> +     * A newly created task can be switched to without ever having been
>> +     * switched from, so it will not have a prior lazy MMU pause to undo
>> +     * from xen_start_context_switch(). Hence, resume lazy MMU only if it
>> +     * was paused.
>> +     */
>> +    if (__task_lazy_mmu_mode_paused(next))
>> +        __task_lazy_mmu_mode_resume(next);
>>   }
>>     static unsigned long xen_store_tr(void)
>> diff --git a/include/linux/sched.h b/include/linux/sched.h
>> index 1c93da75226e..3f9341f1f827 100644
>> --- a/include/linux/sched.h
>> +++ b/include/linux/sched.h
>> @@ -1791,6 +1791,25 @@ static inline bool is_lazy_mmu_mode_active(void)
>>         return __task_lazy_mmu_mode_active(current);
>>   }
>> +
>> +/**
>> + * __task_lazy_mmu_mode_paused() - Return a task's lazy MMU mode pause state
>> + * @tsk: The task to check.
>> + *
>> + * Test whether @tsk has its lazy MMU mode state set to paused
>> + * (i.e., pause_count > 0).
>> + *
>> + * This function is intended for architectures that implement the lazy MMU
>> + * mode; it must not be called from generic code.
>> + *
>> + * Return: Whether task @tsk has paused lazy MMU mode.
>> + */
>> +static inline bool __task_lazy_mmu_mode_paused(struct task_struct *tsk)
>> +{
>> +    struct lazy_mmu_state *state = &tsk->lazy_mmu_state;
>> +
>> +    return state->pause_count > 0;
>> +}
>>   #endif
>>     extern struct pid __rcu *cad_pid;
> Thanks for finding this issue.

Thanks for taking the time to review and provide feedback!

> While your patch is fixing the problem, I'd prefer fixing the root cause:
> When setting up a new struct task_struct, the initial lazy_mmu_state state
> should be initialized accordingly. This would require another lazy_mmu_state
> hook for initializing it, probably via a simple static_call(). Xen could use
> that for setting the pause count to 1.
> 
> At the same time __task_lazy_mmu_mode_resume() should probably WARN() if
> the pause count is 0 already and NOT decrement the pause count.
> 
> Thoughts?

I agree that your proposed approach is indeed more elegant.

To confirm my understanding: Setting every new task's pause count to 1
will ensure that the first context switch into that task will not underflow
the pause count. Also, making __task_lazy_mmu_mode_resume() return early
with a warning if the pause_count is already zero would guard against
encountering the same issue again.

Do you intend to take this on, or would you like me to take a stab at this?

Thank you,

Vefa


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 19:54:41 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 19:54:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480398.1684343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQVRk-0005pL-Ut; Mon, 09 Nov 2026 19:54:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480398.1684343; Mon, 09 Nov 2026 19:54:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQVRk-0005pE-S5; Mon, 09 Nov 2026 19:54:28 +0000
Received: by outflank-mailman (input) for mailman id 1480398;
 Mon, 09 Nov 2026 19:54:26 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=985f=I7=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 1xQVRi-0005p8-LF
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 19:54:26 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQVRh-00AZGT-IK
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 20:54:25 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <SRS0=985f=I7=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 6af224f1-e002-0a2a0a5209dd-0a2a45089834-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 20:54:25 +0100
Received: from [121.127.44.73] (helo=smtp.forwardemail.net)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <SRS0=985f=I7=ubuntu.com=enr0n@fe-bounces.ubuntu.com>)
 id 6af224f0-f659-0a2a45080019-797f2c493c51-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 20:54:25 +0100
Received: by mail-ua1-f70.google.com with SMTP id
 a1e0cc1a2514c-9986f6528fdso1118194241.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 11:54:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=fe-953a8a3ca9 header.d=ubuntu.com header.i="@ubuntu.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ubuntu.com;
 h=Content-Transfer-Encoding: Content-Type: Cc: To: Subject: Message-ID:
 Date: From: In-Reply-To: References: MIME-Version; q=dns/txt;
 s=fe-953a8a3ca9; t=1794254064;
 bh=IOCFYNciQHvtx08cpYRCyLbxi38Uywvz020WtE4frjk=;
 b=bMcOYkzJGLA2pSUTO8dtuiuMAWBAolUJEhYUPBUelJuPvKIPoW2o+igW7akFxKBdSaD/Mvxt2
 4ZO9kqx/O9WFmdEi8IrImId5/nprBZxQEDlLhDHXTXCtTwEFU1ymfQK72oceCtD4Lu8PvCgVyLJ
 lexDwyZih3FTv1O42j40TC9joJdWZ9gH7fo4xzTXgN1WgWoveN3fS11qQSwck/A/9rNlKKWfCid
 BUIb71oYdkJVkGFvF894Ekb6s0+Lrx46f+ubh5uFuQFX2rHqugpe6URC/kNn7glfadMkKVQI8yK
 7gP9p4NEOu5X6zaprVZ6N/Md6KSpvgeHyMJUmMp3B45w==
X-Forward-Email-ID: 6af224ed8d9afc9f40a4fd84
X-Forward-Email-Sender: rfc822; enr0n@ubuntu.com, smtp.forwardemail.net,
 121.127.44.73
X-Forward-Email-Version: 2.19.18
X-Forward-Email-Website: https://forwardemail.net
X-Complaints-To: abuse@forwardemail.net
X-Report-Abuse: abuse@forwardemail.net
X-Report-Abuse-To: abuse@forwardemail.net
X-Gm-Message-State: APuU4Z+dwp5OuMjnxgwwCI8q4V4tBdcgZHOwRa/1EmGmZSvBne5MgNW4
	43PAMnjdIaW6tX+vXHdF2YqrK/cux1Pv0GTbu1qqeqT+ONNWToNCXxYdtUh3ZB/osh1b0M+j5RR
	jjlvi5BelcYhOAYxAavVWjfK5E8DBb0sNCV3fzuV6TcWgIaJJXWAVZVF0wkeGgUgN+L3Rsvu1II
	E5+ZBz4lqv8D+Rv2pq/xE30uV/XSVojCVylnS5SS1V9JDlp/RFlyGhLUnCa2o=
X-Gm-Gg: AYBFou22O6bnDla4j7Oje0Hs8zKCZSsOCjbkXDE5s6gxxGnma8KdipZTJNbK2dteGyR
	jtqvjUKxeohYT/cuUaWwgnklzqLoW07NVVXQg4A5kVx1bmDBGXMBmxv/fVT/7UU33CwQ6pWWhrz
	W8ZBCc6GTYa4YOaJwAhDCETeaBkaxj02fHL18V/Hjz+LArRNrmvUqH4zQ=
X-Received: by 2002:a05:6102:149d:b0:7cb:bd9b:4873 with SMTP id ada2fe7eead31-7d30111d350mr200843137.21.1794254059927;
        Mon, 09 Nov 2026 11:54:19 -0800 (PST)
X-Received: by 2002:a05:6102:149d:b0:7cb:bd9b:4873 with SMTP id
 ada2fe7eead31-7d30111d350mr200840137.21.1794254059730; Mon, 09 Nov 2026
 11:54:19 -0800 (PST)
MIME-Version: 1.0
References: <20261106231526.482418-1-jason.andryuk@amd.com> <20261106231526.482418-4-jason.andryuk@amd.com>
In-Reply-To: <20261106231526.482418-4-jason.andryuk@amd.com>
From: Nick Rosbrook <enr0n@ubuntu.com>
Date: Mon, 9 Nov 2026 14:54:08 -0500
X-Gmail-Original-Message-ID: <CAEN5XSEMV0TaDmJGDtgr3qqBSVsNEvTAwCod33_nR_30+OE8LA@mail.gmail.com>
X-Gm-Features: AclHuK8655NMtlE3Zag2nV3trwLE63OlWXNbCPyvA5ZE8NPYqQJA4mcVhU0oclU
Message-ID: <CAEN5XSEMV0TaDmJGDtgr3qqBSVsNEvTAwCod33_nR_30+OE8LA@mail.gmail.com>
Subject: Re: [PATCH 3/4] tools/libxl: add emulated TPM support backed by swtpm
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: xen-devel@lists.xenproject.org, Anthony PERARD <anthony.perard@vates.tech>, 
	George Dunlap <gwd@xenproject.org>, Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-c1860d/1794254065-CD74B87B-16760373/0/0
X-purgate-type: clean
X-purgate-size: 1496

On Fri, Nov 6, 2026 at 6:15=E2=80=AFPM Jason Andryuk <jason.andryuk@amd.com=
> wrote:
>
> Add support for an emulated TPM.  QEMU emulates the device and uses
> swtpm for the backend.  swtpm is started first and QEMU connects to it.
>
> Add the xl.cfg options are:
> tpm_version
> tpm_statedir
> tpm_statefile
> tpm_interface
> tpm_loglevel
> tpm_swtpm_override
>
> When tpm_version is absent, no TPM is configured.  tpm_version must be 1
> or 2, and exactly one of tpm_statedir or tpm_statefile must be
> specified.  tpm_statefile is only supported for swtpm 0.7 and later, so
> tpm_statedir is provided for compatiblity.  tpm_interface can be either
> tis or crb.  tpm_loglevel is passed to swtpm when non-zero, with swtpm
> logging to /var/log/xen/swtpm-<domain>.log.  tpm_swtpm_override specifies
> the swtpm executable path; otherwise swtpm is found via PATH.
>
> On x86, TPM 1.2 only supports TIS, while TPM 2.0 may use either and
> defaults to CRB.
>
> libxl typically tracks spawned daemons through xenstore keys - like QEMU
> writing its "state" key as "running".  swtpm does not write to
> xenstores, so that is not used.  Instead the daemon is launched first
> and then QEMU launches and connects to it.  If there is a failure,
> the QEMU log messages will list tpm in the error message.
>
> `interface` is a Go keyword, so the binding generator needs to specify
> that.
>

For the tools/golang changes:

Acked-by: Nick Rosbrook <enr0n@ubuntu.com>


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 22:30:27 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 22:30:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480441.1684352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQXsT-0005ju-75; Mon, 09 Nov 2026 22:30:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480441.1684352; Mon, 09 Nov 2026 22:30:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQXsT-0005jn-4Q; Mon, 09 Nov 2026 22:30:13 +0000
Received: by outflank-mailman (input) for mailman id 1480441;
 Mon, 09 Nov 2026 22:30:11 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <irogers@google.com>) id 1xQXsQ-0005jW-VW
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 22:30:11 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQXsQ-00C3AJ-4T
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 23:30:10 +0100
Received: from [10.42.69.9] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <irogers@google.com>)
 id 6af24972-e002-0a2a0a5209dd-0a2a4509b452-0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 23:30:10 +0100
Received: from [209.85.160.173] (helo=mail-qt1-f173.google.com)
 by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <irogers@google.com>)
 id 6af24971-be1a-0a2a45090019-d155a0ad9127-3
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 23:30:09 +0100
Received: by mail-qt1-f173.google.com with SMTP id
 d75a77b69052e-535f598d126so39731cf.1
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 14:30:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=google.com header.i="@google.com" header.h="Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
ARC-Seal: i=1; a=rsa-sha256; t=1794263408; cv=none;
        d=google.com; s=arc-20260327;
        b=fJNbN6G5xcnBfxIQxqqqMpis0T+ySwGeWXET8uvybylMG1tOxjm+mRwrNGPXyc/X3g
         bp71xE1Ch7etqtijqzYoTgz1S4/ClklsR0PzD5VfhLpkf7APlazuapn8QOTB/IxRZj+W
         V/lOh1ZUo3b1fNdMW6Rmq7j51FPv0TC468xG0Nn3KnId2daqMXDmz1no4A4QRgEIpnV7
         LI7xnacxXAWcby9L7o3sdgqHlUzXIYyY+ldB/5YFLErSxY3044AXx6T8aNhHRGC44HlI
         0MkldA45SnCtD2fKsPxgXHVTJ+q/RavGr90Swj+EvVooNChxytlGZwWS8mrltL2j2kSA
         J9xw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:dkim-signature;
        bh=S6J9qhUwfhfejNNDnNi/t39zME3R/+tshu3QmKCryWs=;
        fh=wGlH6owyz56d8d1N2OQXFqJvOmG9yCLb9N3kRuWzNAw=;
        b=V9yh4HM9n6IYJUMoMEv/oJ2tJuCDggLoWwtMCQCmHD3Kos4I4yzZNzcJ3fA+nsIimJ
         dD0nGjvdG/fe/szNVIhSTSBFnz1icO+NocJykursnMlcBatBIKxQHF7Tz5qAsnvulOKI
         f+R2SQlSJ1h2wU3iivS5HkkuIyFKCtDT+aZCG3OJ2LXhWoVhN7RhHBq52vT7jbd+1LB1
         piaK18E0Jjf5oS3m72/GLbFZ//4LYF1sjECXrG27JvZpOxqJ5SlA9R8UIU3mteY3upfU
         Qv7H7Gv24gYy0M9Zu+W1jlXwICrELQJpPuFViKxNsc1957rgdVF9QeN3IW6rYIimSIG7
         EgTg==;
        darn=lists.xenproject.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20260707; t=1794263408; x=1794868208; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=S6J9qhUwfhfejNNDnNi/t39zME3R/+tshu3QmKCryWs=;
        b=Kt8CmQfx8xPjC32xppqKIEKLiE7TqO072XQO6D1pS8U01BNmSPiwcbWfADWbU4FlNL
         5lQMduX1pzuhtAbdIMZZnZ9OzqF7M/upwNFnZ18gYyzxh39PZv3lG1gLxF2INTPQ60XW
         XYcnGmZQB2KXf8rYZLfjbQ1ar9QLt2jlTYzwCUkyWqnAUofL4pQQpQKog+dB4qYd0DBX
         7OgjSbXyO+WWNyKS7PuhC/Rs0Ha6V7WwAyhdf6ZHlamkXv4Oi0zSVy/Zas6J2bcde6sV
         N6MLmEffWmnMs4W/SAGgKjupjqAVkn5aHataFGTgkLiBcxyES34PApmWfuabZg/Z5C7n
         Mddw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794263408; x=1794868208;
        h=content-transfer-encoding:content-type:cc:to:subject:message-id
         :date:from:in-reply-to:references:mime-version:x-gm-gg
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=S6J9qhUwfhfejNNDnNi/t39zME3R/+tshu3QmKCryWs=;
        b=P+rs6Ze8tbeAtjM9/S6RjxAo0UHHdcPR1RLw7vZzpTRY51byOyPx5z0akMv3o3JuW/
         3H6z+pcCezg9yPW5Pk2fOCvjsNKxwW8DXSYs8ILaL+it9ywHoWZZlvabl2rYrT5JlG1g
         +oDxX2qGZ7figRbUTRMsHc+HO3l5+W73XUdRXrKSanCohFUQiZxIqJDj307tcQ+mvmH1
         TySeBW2hd9U7HFnQi1t5HF0yw5Yugzb2XxbErO6HdrVD81TmQ+K+QiX0B5xF++zYjk1H
         afr7jTJarwFLLcr/+JXaF10MzrviokeeEj6oQJ5uy1dG8rJCrmt5El+qXfPI2LI99sRq
         Jveg==
X-Forwarded-Encrypted: i=1; AL+hErFwbKak4Lr3POX4IIVdiC17O3UWUFWA54f6EqurHGWshyBhT4SiUYT3G/x6LVAozO4s/aM+XLqJPW4=@lists.xenproject.org
X-Gm-Message-State: APuU4Z+uAhr84UOFF5xNvsJN24MNWWzTNTqHMkbRmX81kbgkiXzDpKEv
	uf719MTcyU0vQZ4oXGSbQONn9g+sTaut9qkB9iKT9Il9aE7euxlnX/PWGwXFlBwPR0XG+J6Htlv
	GKjJ+/BwGaPUfq04zrlGDQLOBxXSuNrqM8uK4KR3D
X-Gm-Gg: AYBFou3TcP//9MODi1is75bvbSikSPg20L6FQd+KBZduUzEkK0aonAVdwbda2a2n6TB
	9V7UXQ2QIJR6ia/7aAbZWiXWn83ngNrNebTTpKlFfVMQUsoz+P+hOccUdvZvRHt344qeSFsdkl0
	ecDCzJrMLwWpOivJSrRB2MEXNKglFe1WxWTU63iqjYguIPTAD8ehkbdbJ+WtOQnsfcIl9EX4tZZ
	RDLlg/KC9BOSZyuQw7QsvTU1G2oA8Awg5qrYPQ3X838RPMEA9XzEtOxTDZ0F6IoxOWpKztz7B47
	0yt0mhU54gijBB6rrRcLzxpaYIA1mOl13yhNZCuXwSa3msSxQIO7mCFl/MPonFtVBpWHB0hyvRK
	FdshwPSWX0IQozXqiwKnua7BREi9rNFDur79j0WlZ9LHgPkv16E63v4BFa0mty1c1lb8=
X-Received: by 2002:a05:622a:1b16:b0:530:e00f:7768 with SMTP id
 d75a77b69052e-555290bb288mr6464421cf.0.1794263407457; Mon, 09 Nov 2026
 14:30:07 -0800 (PST)
MIME-Version: 1.0
References: <20261108223913.3624571-1-irogers@google.com> <20261108223913.3624571-7-irogers@google.com>
 <b8d171de-52fe-474e-96db-d119840c6240@suse.com>
In-Reply-To: <b8d171de-52fe-474e-96db-d119840c6240@suse.com>
From: Ian Rogers <irogers@google.com>
Date: Mon, 9 Nov 2026 14:29:55 -0800
X-Gm-Features: AclHuK-dlWDp0B4FdK6V9QBR5LM_sA67_T-19O3ovPwDJ5RdBpzojQ18ICzxF_E
Message-ID: <CAP-5=fXd640kfaR+soPdiEV2mfqCPGDANCt04KzaXBphYP4Htg@mail.gmail.com>
Subject: Re: [PATCH v3 6/9] xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type
To: Juergen Gross <jgross@suse.com>
Cc: Danilo Krummrich <dakr@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
	Kees Cook <kees@kernel.org>, Miguel Ojeda <ojeda@kernel.org>, 
	"Rafael J . Wysocki" <rafael@kernel.org>, Madhavan Srinivasan <maddy@linux.ibm.com>, 
	Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>, 
	Christophe Leroy <chleroy@kernel.org>, Nayna Jain <nayna@linux.ibm.com>, 
	Srish Srinivasan <ssrish@linux.ibm.com>, Mimi Zohar <zohar@linux.ibm.com>, 
	Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, 
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Stefano Stabellini <sstabellini@kernel.org>, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Nathan Chancellor <nathan@kernel.org>, 
	Nick Desaulniers <ndesaulniers@google.com>, Viresh Kumar <viresh.kumar@linaro.org>, 
	Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>, Alexander Aring <aahringo@redhat.com>, 
	Felix Kuehling <felix.kuehling@amd.com>, =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Zhihao Cheng <chengzhihao1@huawei.com>, Sumanth Korikkar <sumanthk@linux.ibm.com>, 
	Bill Wendling <morbo@google.com>, Justin Stitt <justinstitt@google.com>, driver-core@lists.linux.dev, 
	llvm@lists.linux.dev, linux-hardening@vger.kernel.org, 
	linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, 
	linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org, 
	linuxppc-dev@lists.ozlabs.org, linux-sh@vger.kernel.org, 
	linux-s390@vger.kernel.org, gfs2@lists.linux.dev, 
	xen-devel@lists.xenproject.org, linux-mtd@lists.infradead.org, 
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, 
	linux-kernel@vger.kernel.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-purgate-ID: tlsNG-bad1c0/1794263410-3B2DC034-44252426/0/0
X-purgate-type: clean
X-purgate-size: 2796

On Sun, Nov 8, 2026 at 10:56=E2=80=AFPM Juergen Gross <jgross@suse.com> wro=
te:
>
> On 08.11.26 23:39, Ian Rogers wrote:
> > hypervisor_init() in drivers/base/hypervisor.c creates hypervisor_kobj
> > with kobject_create_and_add() (which allocates a dynamic kobject using
> > dynamic_kobj_ktype), and hypervisor_subsys_init() in
> > drivers/xen/sys-hypervisor.c then overwrites hypervisor_kobj->ktype wit=
h
> > &hyp_sysfs_kobj_type, which had no .release callback.
> >
> > Add hyp_sysfs_release() calling kfree(kobj) to preserve the dynamic
> > kobject release behavior.
> >
> > Fixes: cff7e81b3dd7 ("xen: add /sys/hypervisor support")
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
> >   drivers/xen/sys-hypervisor.c | 6 ++++++
> >   1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.=
c
> > index 91923242a5ae..0e8a2cd69fd6 100644
> > --- a/drivers/xen/sys-hypervisor.c
> > +++ b/drivers/xen/sys-hypervisor.c
> > @@ -659,7 +659,13 @@ static const struct sysfs_ops hyp_sysfs_ops =3D {
> >       .store =3D hyp_sysfs_store,
> >   };
> >
> > +static void hyp_sysfs_release(struct kobject *kobj)
> > +{
> > +     kfree(kobj);
> > +}
> > +
> >   static const struct kobj_type hyp_sysfs_kobj_type =3D {
> > +     .release =3D hyp_sysfs_release,
> >       .sysfs_ops =3D &hyp_sysfs_ops,
> >   };
> >
>
> Wouldn't it make sense to have a common function for just kfree(kobj)?
>
> In your series there are 3 instances of .release just doing kfree(kobj).
>
> In case this is not wanted or with using the suggested common .release
> helper you can add my
>
> Reviewed-by: Juergen Gross <jgross@suse.com>

Thanks Juergen!

lib/kobject.c already has a static dynamic_kobj_release() that does
this (and there are ~15 other places in the tree open-coding a static
kfree(kobj) release wrapper), so include/linux/kobject.h +
lib/kobject.c would be the natural home if we exported one.

I kept them as local static functions here for two reasons:

1. Patches 2/9, 3/9, and 6/9 carry Fixes: tags, and keeping the small
   local callbacks avoids a dependency on a new driver-core export for
   backports.
2. Since kobjects are normally embedded in a larger struct and freed via
   container_of(), I wasn't sure whether Greg and Danilo would view an
   exported kfree(kobj) release helper (especially alongside
   __must_init) as an invitation for misuse on embedded kobjects.

Unless Greg or Danilo would like dynamic_kobj_release() (or similar)
exported now, I'll plan to keep the local callbacks for this series
and can send a follow-up cleanup for the tree-wide callers if
driver-core maintainers think a shared helper makes sense.

Thanks,
Ian

>
>
> Juergen


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 23:33:44 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 23:33:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480460.1684361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQYrc-000767-Ia; Mon, 09 Nov 2026 23:33:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480460.1684361; Mon, 09 Nov 2026 23:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQYrc-00075y-El; Mon, 09 Nov 2026 23:33:24 +0000
Received: by outflank-mailman (input) for mailman id 1480460;
 Mon, 09 Nov 2026 23:33:23 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xQYrb-00075s-4D
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 23:33:23 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQYra-005LHH-1z
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 00:33:22 +0100
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6af25831-8faa-0a2a0a5109dd-0a2a4505a866-16
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 00:33:22 +0100
Received: from [52.101.66.88]
 (helo=DUZPR83CU001.outbound.protection.outlook.com)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6af25841-4cb1-0a2a45050019-34654258efc4-3
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 00:33:21 +0100
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com (2603:10a6:803:113::29)
 by VI0PR03MB10567.eurprd03.prod.outlook.com (2603:10a6:800:209::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 23:33:18 +0000
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48]) by VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48%4]) with mapi id 15.21.0592.009; Mon, 9 Nov 2026
 23:33:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=CLNf3LUYUXF403z04mmOiYwP+xcFE/rJrHb1+itJP6wBsncIPLafgS3kOmbKrmPLRiaMt9IjCOoOCyzmrW+f8QFpHAeAnUBrjjcDusANT3kUntBuBvhz8FHjawiBa9LfYdUmzO2HscuXFbATAWkLMHHAMTsRz01GqGZsMIafVwnjC3/vOrFi/gZpWRfiCif0MHzu9KuVhVEtHws7LnklL4g3+Qlqi2+BCb8kfSEiHwrC/5H0Q2J3mNx2b+PSAx11jw30sjnmKpcFoTWqP5LUGSLffxuwAeu9QSFtn3lh+H3fTGP6zZkZJED2r+SLDOPmCYvesKvN9QakFJq4WbJRkA==
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=OqbLtNPeKUG3sbMbomxLILyTNr6bYCEx4SwYYCPtNBU=;
 b=uX+/ilaI1Bp0/KnSgHZH4hmqvnqZNmdqfB6VsVxeYoqVGEf5/REm2LW8eUU5vLCIqp8kRaEOYncscm2Ef5N9zor0/P2ASrJ7Q7hxblC2loVUa6ed9c4VfdRyV+93Z+42bt1UqwmeU34/CSO91hDZ0YEQkjs1IsBkbxEGXqOxeaTantTd7CCF5QVKPi3K6IVjuIVuCNRJ8dVnrU5QVjWp/dQHibzYm18nzIVsB8d1ArT57J4SZTfhomLOg5Obi2D6AKJKMSJDgwyhCCFqa2KH8mF120kInrftDbxtBAhCzR2lA5dt6RmHhdCWOi8XPn55kbtrLVQxdRdrRgcqQC+Dew==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OqbLtNPeKUG3sbMbomxLILyTNr6bYCEx4SwYYCPtNBU=;
 b=frPb76M8o3CrVGweO0Aov8II5qrYSMPaJaou/u8rwHhuQEehKoN54+j+/+j0k1+VBVSuNl8N4xCntOKv4d9jG8gikiZxqO6SezvDV7c+Uz0TE8dVnqVomfqMCePPQjvIhL2pA6BawHorcGL+JQ1Vub+tMS9bFEvMObU50V+Oly5PDp9tPWUJUg1O1pkCrwZ7j7Kb99NKSvgnYq4jg53rfNqEXc1pnYxbrfCZi6hRKbqQmi8djOfVIBkikQyfjgAXs+WdHZ/JdAjCssvZJrBL0EIyLo2dPhl6z5NNioz0RCZ+THGGwfOxcaThnY7SysPl3krgap8cnqcCej750a+HpA==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand
 Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Jan Beulich <jbeulich@suse.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Teddy Astie
	<teddy.astie@vates.tech>, "Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v11 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Topic: [PATCH v11 4/6] arm/sysctl: Implement cpu hotplug ops
Thread-Index: AQHdcDtBoVh5LglfoUK4qwkhtTMAmg==
Date: Mon, 9 Nov 2026 23:33:18 +0000
Message-ID: <871p8teg1v.fsf@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
	<92f0934ebdc79687f6007f83ec04bf8001f1e0cd.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To:
 <92f0934ebdc79687f6007f83ec04bf8001f1e0cd.1794222015.git.mykyta_poturai@epam.com>
	(Mykyta Poturai's message of "Mon, 9 Nov 2026 11:12:49 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: VE1PR03MB6078:EE_|VI0PR03MB10567:EE_
x-ms-office365-filtering-correlation-id: 133d41ae-8e96-4d3a-56aa-08df3eb9d59e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|7416014|376014|1800799024|366016|42112799006|38070700021|261028144727099003|4143699003|11063799006|261022105027099003|261021123027099003|261021121427099003|56012099006|261009223027099003|261026121527099003|261026140227099003|261102123227099003|10067099003|22082099003|18002099003|10063799003;
x-microsoft-antispam-message-info:
 ZfoHCPaViCKzPXo2wS20YClYsL64vmBQ0DYT2tdo3q97tZIDdXgJ3vQMRfmut5yrXywVqDyYVLeJf6YwPNn/oNoEvF6cOwXculEkwRAKQPDK2rDdQgYmh6pNg3fGnHqducMny3p+CpTF2ti78Lcy2GRYOLPsp4mr9rVbsZhFV/TQQjqdLZzudNlBU5xKA1/v+85xA0Ti6vJmXsl8Ek/XgqOpOvmvU9UpslCU7qDZt7pwHTemQf1+6uvMHjMz7k8BYvktOgux5tvXTaMkdYu1M96uJikZL8oO+1V3LRFsa+OODIQbCTnJUYaE5PlLZUvDqOA7PyvBaeGTQuKLP1aQN4BggzgqnyQ2jjNNAAbIH9K08noZyS8UIY/LP8tsLkcaT0M2cvHP/1zx5ZALAolIPFXZIhCEJo9lG3SoFivdFPlHm8plpM9q2PX/4skyltBk+6f8ie+PQQsU5Och4Sw5N+7yfWkghlH1SPFQasZoM8flOMp+nBQ3lDBuQRjMXg14A41rfgiYg+CJh/G6EpzoyfK7rPMSvduYs76kJ/xtM9yRdis9te2eq33R/roa8xUKtvxD15GizeMvubXJQ5Ui4hVNKAqOY18Xs4ayOFFTtOyuaEoaF7OaztyLai2sNOdF6NPKO4qsAEqAxFrsAma/DrkCmGzdIZMXy1xbp5HtJ5XN8TyjI+Fu8WyyTbwkSLXgQt1CKUe+13UH4Z78M1usep5joXyvLHGc7jnd++xQmh8=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR03MB6078.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(7416014)(376014)(1800799024)(366016)(42112799006)(38070700021)(261028144727099003)(4143699003)(11063799006)(261022105027099003)(261021123027099003)(261021121427099003)(56012099006)(261009223027099003)(261026121527099003)(261026140227099003)(261102123227099003)(10067099003)(22082099003)(18002099003)(10063799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?aHVkdE1zaTFDWFllbCttS3hMV3FQbUVsMS9xQUJUSGFhcCtsQ2VaUUlLcllt?=
 =?utf-8?B?Y2UvRDRnM0lZOHdoVC9WTVd1c0c1RUJmUy9MSEU0TmpGOXVnSXVrOTJUaXNm?=
 =?utf-8?B?NHFGY3RTWGxRM1VwRTIxaU51L0M5amRQaEFzWjY2aUQybExKRm1LY2ZtWTFn?=
 =?utf-8?B?aFRPMHNFaHpvcnJRam9HamlsZjdTbDdIaEpwVExwc2NTeHMwdC9pcHY2KzFj?=
 =?utf-8?B?Z0R6am9iVFptQWpwdng3QWIrcHFENlJaWm9WRDB1aGdHNFlxRXhYaWpBSEoy?=
 =?utf-8?B?d1ZPQ2VVU0NFMVlzMnFqbHJETWtucUVxVFFlYzVGN1lvemcwVEFTTHV6bkhM?=
 =?utf-8?B?OFAwTElhTUkvWWtsQ0t1dy95QUI3Smh1bTRkMVBPUi95ZjJaV1ZUWHVsM1VR?=
 =?utf-8?B?WlpZYUlQRUtFV1RRWGhLOWZtNlZaWnBUdC9zMGt5SmtTTmVZQ2ZRQU1EZ1ZH?=
 =?utf-8?B?V0FsU00vR2x2WVlIK0lnRTU0TFltNlhtczVDaWd4VHJkL2J2Zlhod3psWFQy?=
 =?utf-8?B?T3FTZmtrWHU1R0hEaFQ4RzAxZlFlUjkvejN1am95b3VOTVRUTEpZOFRtWWRQ?=
 =?utf-8?B?OUd3NlRaQ3lvNWNKMnFZYTZjMncxQmtNZC9LREpIV0xPRU1UbXN5Z1JFLzgw?=
 =?utf-8?B?RmZBU203dGlMK0M5ZjlIVnFNL2dEMlE4NGNaTlI3SmNzRXdaYjJjaE1UcjFX?=
 =?utf-8?B?UkxXVTJNbWNZOVVyMzh5dU1vL2h3T3d3d0g5VWVaYlpEUktlc09tV21NNnpI?=
 =?utf-8?B?MFRYNmswdWVuZUlWM2o2c3pqenptWHJGUWVDN2wwdE05aTYxQ29sTjVzOXBD?=
 =?utf-8?B?SG1uaTh0TGJNT2NTaGc2OUJaYStRMWtSWGl3YVd0Uk9BR09EYmwxb1dibzVI?=
 =?utf-8?B?K2IzMklxNmZXdUZXRmZBMkV1RU5mcmhBZFRDU2ZOTU9RUG1lV3pRSlp5RHFh?=
 =?utf-8?B?a3JEYTFOeEhkcWQ0UGFablJCcmd2YzcxcXZRWTl5SzJBNC9UemJEUzdCQ1Rx?=
 =?utf-8?B?QkVML1lQaCszaTh1cElMZHk1V0ZId2pzSlc2V3BKKzY1RVVFWlQrdjR0ZndZ?=
 =?utf-8?B?eStTMS9RS1N5WEtJWEVEVHQ2c2dpUzRPWFN4SHA1NGkzMTlGVFlySnVISG5Q?=
 =?utf-8?B?VlVXUGdqdzdENlpIbERyd1YrN1pla0ZvZ3BJTTkwUkhTK1p1TmgxUHB1dU9D?=
 =?utf-8?B?QVN2aUMwK2NTTG96ZkJpS2RtbXp2bk9qNFNobzNLeWVXdEo3WFVMNkxyc0JM?=
 =?utf-8?B?dUMwVWJBRUZmUElkdktiU3lyQlJjOVRTM01MdnJoODIwTjAwMTVvQTE0MXYy?=
 =?utf-8?B?RkErZndmWE1UK0N6aTZMWWdmZjFMWTE3TGxENGlkME1aNXlWZkdFT0NHdmdv?=
 =?utf-8?B?RUlMZjhNQTYvMy9CWUVRbzNIbzE2UWVVemttdko1emFla0RYU2J2NmtCWDRk?=
 =?utf-8?B?ZmZaNW9uMlNVK0pIRWZOL1RDWUFQMXdCOVJibTZ6ZnZaNld2VkxMNWpoSFdl?=
 =?utf-8?B?ZWRUN3RnMGU3UEFvbUxqYmVPSVpOb0NPdUErVExHQzNsd1ppYUQ3T3preVVO?=
 =?utf-8?B?MWtQeU5hTmFLQVovc2JuQURyQWdxYTZqTy9WOU1mbUpiWFJvcy9DY09zUVJQ?=
 =?utf-8?B?OEdzWVFHbmZNUkNIVHJCTDFHNERTc3JTdWRyU29Fd3IvYUZFUU8yYzNsWEtL?=
 =?utf-8?B?SWY2eEZteTA3cndMUkhaR0FZTkVKRndEZXlNZU1BTzdib1Y5dHk2RUd4eFJU?=
 =?utf-8?B?RjlQcVkvRXF6SG5BOFJiZlYyZ0o0dXhpT2RFRk9wQVZid1BGTGpnMFVqTExq?=
 =?utf-8?B?TEJMbk1RcWxrWFpJR0FlaEtYNm94ZUcxazhveWFEVXdJK0RMMjdoR2hHQTB2?=
 =?utf-8?B?OGpKOVNXU2FZODZMUnN2ZDc2NWNzaXNiVGZkdVRjRmRhQU9yLzl4NnE5bFJ4?=
 =?utf-8?B?YklLUXlneG11VlgzcTVIcll3RmdJYW12aXBqaWNBMUw4eUNKUmxDSlBxczUy?=
 =?utf-8?B?UHd6akIrbThUejBDbG5QTlM4aXpncWVjbEd3aHFaakVyY3dMTTlzNW9zcFAw?=
 =?utf-8?B?M0taTHBUWmVrN0tBa2w0dVRlYWY3SzNPc2NuTVdnUUZqSzd4Wi9DRTRaZ2Uy?=
 =?utf-8?B?YWcrSy9UeWt6Ni9yU1BQbnBuMWFxd3lMOUdTLzczeUVObitjSW5TTE1WSENW?=
 =?utf-8?B?T2Mxa05ZbDVVY1Foa3duaTlmRnBzVU9OYi9LWFp0bE1zdHlxN0R3N0dCdEQ1?=
 =?utf-8?B?b2wycERPNlZtbGdzRlVzUWp2TStuYnd1a1BJdTBiMnhDMndSWE5ySEtCSGha?=
 =?utf-8?B?M3J1b3VDN0hmdXZYTDlVc01xdnJHRjZ5Mzk0alowZVhhb2MzQVljUHhIQTF3?=
 =?utf-8?Q?ukF97R+G97hu/Hhk=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: VE1PR03MB6078.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 133d41ae-8e96-4d3a-56aa-08df3eb9d59e
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 23:33:18.2826
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: BmmElu1QOyBhh4FM9VIwU+eRdIgMKJnZCbuSSVoNWKjSzrlNd6aZdJmyzcwfgfgVTuALx8U4AH0v2E1PF/WaQAdMpH3n5aI9dsnwmN2SwRE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10567
X-purgate-ID: tlsNG-c201ff/1794267201-714AC2A1-87E973C8/0/0
X-purgate-type: clean
X-purgate-size: 15614

SGkgTXlreXRhLA0KDQpNeWt5dGEgUG90dXJhaSA8TXlreXRhX1BvdHVyYWlAZXBhbS5jb20+IHdy
aXRlczoNCg0KPiBTTVQtZGlzYWJsZSBlbmZvcmNlbWVudCBjaGVjayBpcyBtb3ZlZCBpbnRvIGEg
c2VwYXJhdGUNCj4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZ1bmN0aW9uLg0KPg0KPiBGb3Igbm93
IHRoaXMgb3BlcmF0aW9ucyBvbmx5IHN1cHBvcnQgQXJtNjQuIEZvciBwcm9wZXIgQXJtMzIgc3Vw
cG9ydCwNCj4gdGhlcmUgbmVlZHMgdG8gYmUgYSBtZWNoYW5pc20gdG8gZnJlZSBwZXItY3B1IHBh
Z2UgdGFibGVzLCBhbGxvY2F0ZWQgaW4NCj4gaW5pdF9kb21oZWFwX21hcHBpbmdzLiBBbHNvLCBo
b3RwbHVnIGlzIG5vdCBzdXBwb3J0ZWQgaWYgSVRTIGVuYWJsZWQsDQo+IGFuZCBwYXJ0aWFsbHkg
c3VwcG9ydGVkIEZGQSwgb3IgVEVFIGlzIGVuYWJsZWQsIGFzIHRoZXkgdXNlIG5vbi1zdGF0aWMN
Cj4gSVJRIGFjdGlvbnMuDQo+DQo+IFJlbW92ZSBpZmRlZiBndWFyZHMgZm9yIHg4NiBpbiBmbGFz
aywgYXMgY3B1IGhvdHBsdWcgaXMgbm93DQo+IHN1cHBvcnRlZCBvbiBtb3JlIGFyY2hpdGVjdHVy
ZXMuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IE15a3l0YSBQb3R1cmFpIDxteWt5dGFfcG90dXJhaUBl
cGFtLmNvbT4NCg0KUmV2aWV3ZWQtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFi
Y2h1a0BlcGFtLmNvbT4NCg0KPiAtLS0NCj4gdjEwLT52MTE6DQo+ICogYWRkIEhBU19DUFVfT05M
SU5FX09GRkxJTkUga25vYg0KPg0KPiB2OS0+djEwOg0KPiAqIHJlbmFtZSBhcmNoX2NwdV9jYW5f
c3RheV9vbmxpbmUgdG8gYXJjaF9jcHVfa2VlcF9vbmxpbmUNCj4gKiBkcm9wIHRoZSBzaW5nbGUt
dXNlIGhwX29wIGFuZCBoY3B1IHZhcmlhYmxlcw0KPiAqIG1ha2UgQ1BVX09OTElORV9PRkZMSU5F
IGRlcGVuZCBvbiAhVEVFLCBhcyBGRkEgYW5kIFRFRSB1c2Ugbm9uLXN0YXRpYw0KPiAgIElSUSBh
Y3Rpb25zDQo+DQo+IHY4LT52OToNCj4gKiBzaW1wbGlmeSBkZXBlbmRlbmNpZXMgb2YgY29uZmln
IENQVV9PTkxJTkVfT0ZGTElORSBhZ2Fpbg0KPiAqIHJlYmFzZWQgb3ZlIFhTQS00OTkNCj4NCj4g
djctPnY4Og0KPiAqIHNpbXBsaWZ5IGRlcGVuZGVuY2llcyBvZiBjb25maWcgQ1BVX09OTElORV9P
RkZMSU5FDQo+DQo+IHY2LT52NzoNCj4gKiB1c2UgSVNfRU5BQkxFRCBpc3RlYWQgb2YgaWZkZWYg
aW4gbW9yZSBwbGFjZXMNCj4gKiByZW1vdmUgdW5uZWRlZCB2YXJpYWJsZXMNCj4gKiBtb3JlIGV4
cGxpY2l0IGZhbGx0aHJvdWdoIGluIGRvX3N5c2N0bA0KPg0KPiB2NS0+djY6DQo+ICogZml4IHN0
eWxlIGlzc3Vlcw0KPiAqIHJlbmFtZSBhcmNoX3NtdF9jcHVfZGlzYWJsZSAtPiBhcmNoX2NwdV9j
YW5fc3RheV9vbmxpbmUgYW5kIGludmVydCB0aGUNCj4gbG9naWMNCj4gKiB1c2UgSVNfRU5BQkxF
RCBpc3RlYWQgb2YgaWZkZWYNCj4gKiByZW1vdmUgZXhwbGljaXQgbGlzdCBhZiBhcmNoLXNwZWNp
ZmljIFNZU0NUTF9DUFVfSE9UUExVR18qIG9wdGlvbnMNCj4gZnJvbSB0aGUgY29tbW9uIGhhbmRs
ZXINCj4gKiBmaXggZmxhc2sgaXNzdWUNCj4NCj4gdjQtPnY1Og0KPiAqIG1vdmUgaGFuZGxpbmcg
dG8gY29tbW9uIGNvZGUNCj4gKiByZW5hbWUgY29uZmlnIHRvIENQVV9IT1RQVUcNCj4gKiBtZXJn
ZSB3aXRoICJzbXA6IE1vdmUgY3B1X3VwL2Rvd24gaGVscGVycyB0byBjb21tb24gY29kZSINCj4N
Cj4gdjMtPnY0Og0KPiAqIGRvbid0IHJlaW1wbGVtZW50IGNwdV91cC9kb3duIGhlbHBlcnMNCj4g
KiBhZGQgS2NvbmZpZyBvcHRpb24NCj4gKiBmaXh1cCBmb3JtYXR0aW5nDQo+DQo+IHYyLT52MzoN
Cj4gKiBubyBjaGFuZ2VzDQo+DQo+IHYxLT52MjoNCj4gKiByZW1vdmUgU01UIG9wcw0KPiAqIHJl
bW92ZSBjcHUgPT0gMCBjaGVja3MNCj4gKiBhZGQgWFNNIGhvb2tzDQo+ICogb25seSBpbXBsZW1l
bnQgZm9yIDY0Yml0IEFybQ0KPiAtLS0NCj4gIHhlbi9hcmNoL2FybS9LY29uZmlnICAgICAgICAg
ICB8ICAxICsNCj4gIHhlbi9hcmNoL2FybS9zbXAuYyAgICAgICAgICAgICB8IDExICsrKysrKysr
KysrDQo+ICB4ZW4vYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgfCAgMSArDQo+ICB4ZW4vYXJj
aC94ODYvaW5jbHVkZS9hc20vc21wLmggfCAgMyAtLS0NCj4gIHhlbi9hcmNoL3g4Ni9zbXAuYyAg
ICAgICAgICAgICB8IDM0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgeGVu
L2FyY2gveDg2L3N5c2N0bC5jICAgICAgICAgIHwgMTEgKysrKy0tLS0tLS0NCj4gIHhlbi9jb21t
b24vS2NvbmZpZyAgICAgICAgICAgICB8ICA3ICsrKysrLS0NCj4gIHhlbi9jb21tb24vc21wLmMg
ICAgICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4g
IHhlbi9jb21tb24vc3lzY3RsLmMgICAgICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysNCj4gIHhlbi9pbmNsdWRlL3hlbi9zbXAuaCAgICAgICAgICB8ICA2ICsrKysr
Kw0KPiAgeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgIHwgIDIgKy0NCj4gIDExIGZpbGVz
IGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0t
Z2l0IGEveGVuL2FyY2gvYXJtL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZw0KPiBpbmRl
eCBiOWM1YzQwNjc4Li40NTY5Yzc2NjE1IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vS2Nv
bmZpZw0KPiArKysgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZw0KPiBAQCAtNyw2ICs3LDcgQEAgY29u
ZmlnIEFSTV82NA0KPiAgCWRlZl9ib29sIHkNCj4gIAlkZXBlbmRzIG9uICFBUk1fMzINCj4gIAlz
ZWxlY3QgNjRCSVQNCj4gKwlzZWxlY3QgSEFTX0NQVV9PTkxJTkVfT0ZGTElORSBpZiAhSEFTX0lU
UyAmJiAhVEVFDQo+ICAJc2VsZWN0IEhBU19ET01BSU5fVFlQRQ0KPiAgCXNlbGVjdCBIQVNfRkFT
VF9NVUxUSVBMWQ0KPiAgCXNlbGVjdCBIQVNfVlBDSV9HVUVTVF9TVVBQT1JUIGlmIFBDSV9QQVNT
VEhST1VHSA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3NtcC5jIGIveGVuL2FyY2gvYXJt
L3NtcC5jDQo+IGluZGV4IGIzNzI0NzIxODguLmY4NGYyMTczNTkgMTAwNjQ0DQo+IC0tLSBhL3hl
bi9hcmNoL2FybS9zbXAuYw0KPiArKysgYi94ZW4vYXJjaC9hcm0vc21wLmMNCj4gQEAgLTQ0LDYg
KzQ0LDE3IEBAIHZvaWQgc21wX3NlbmRfY2FsbF9mdW5jdGlvbl9tYXNrKGNvbnN0IGNwdW1hc2tf
dCAqbWFzaykNCj4gICAgICB9DQo+ICB9DQo+ICANCj4gKyNpZmRlZiBDT05GSUdfQ1BVX09OTElO
RV9PRkZMSU5FDQo+ICsvKg0KPiArICogV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgU01UIG9u
IEFSTSBzbyB3ZSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGxvZ2ljIGZvcg0KPiArICogQ1BVIGRp
c2FibGluZw0KPiArICovDQo+ICtib29sIGFyY2hfY3B1X2tlZXBfb25saW5lKHVuc2lnbmVkIGlu
dCBjcHUpDQo+ICt7DQo+ICsgICAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsjZW5kaWYNCj4gKw0K
PiAgLyoNCj4gICAqIExvY2FsIHZhcmlhYmxlczoNCj4gICAqIG1vZGU6IEMNCj4gZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni9LY29uZmlnIGIveGVuL2FyY2gveDg2L0tjb25maWcNCj4gaW5kZXgg
ZTU1MzVhYzQ4NC4uZTVlMzEzNDAyMiAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L0tjb25m
aWcNCj4gKysrIGIveGVuL2FyY2gveDg2L0tjb25maWcNCj4gQEAgLTE3LDYgKzE3LDcgQEAgY29u
ZmlnIFg4Ng0KPiAgCXNlbGVjdCBIQVNfQUxURVJOQVRJVkUNCj4gIAlzZWxlY3QgSEFTX0NPTVBB
VA0KPiAgCXNlbGVjdCBIQVNfQ1BVRlJFUQ0KPiArCXNlbGVjdCBIQVNfQ1BVX09OTElORV9PRkZM
SU5FDQo+ICAJc2VsZWN0IEhBU19ESVQNCj4gIAlzZWxlY3QgSEFTX0VIQ0kNCj4gIAlzZWxlY3Qg
SEFTX0VYX1RBQkxFDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21w
LmggYi94ZW4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgNCj4gaW5kZXggNTcyYjM5YjAxYy4u
NmMzMzU2N2NiNSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5o
DQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaA0KPiBAQCAtNDQsOSArNDQs
NiBAQCBpbnQgY3B1X2FkZCh1aW50MzJfdCBhcGljX2lkLCB1aW50MzJfdCBhY3BpX2lkLCB1aW50
MzJfdCBweG0pOw0KPiAgDQo+ICB2b2lkIF9fc3RvcF90aGlzX2NwdSh2b2lkKTsNCj4gIA0KPiAt
bG9uZyBjZl9jaGVjayBjcHVfdXBfaGVscGVyKHZvaWQgKmRhdGEpOw0KPiAtbG9uZyBjZl9jaGVj
ayBjcHVfZG93bl9oZWxwZXIodm9pZCAqZGF0YSk7DQo+IC0NCj4gIGxvbmcgY2ZfY2hlY2sgY29y
ZV9wYXJraW5nX2hlbHBlcih2b2lkICpkYXRhKTsNCj4gIGJvb2wgY29yZV9wYXJraW5nX3JlbW92
ZSh1bnNpZ25lZCBpbnQgY3B1KTsNCj4gIHVpbnQzMl90IGdldF9jdXJfaWRsZV9udW1zKHZvaWQp
Ow0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NtcC5jIGIveGVuL2FyY2gveDg2L3NtcC5j
DQo+IGluZGV4IGUzYzRjMGQ1ZTAuLmI1NmQ4ZGZkMzYgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNo
L3g4Ni9zbXAuYw0KPiArKysgYi94ZW4vYXJjaC94ODYvc21wLmMNCj4gQEAgLTQxNywzNyArNDE3
LDkgQEAgdm9pZCBjZl9jaGVjayBjYWxsX2Z1bmN0aW9uX2ludGVycnVwdCh2b2lkKQ0KPiAgfQ0K
PiAgDQo+ICAjaWZkZWYgQ09ORklHX0NQVV9PTkxJTkVfT0ZGTElORQ0KPiAtbG9uZyBjZl9jaGVj
ayBjcHVfdXBfaGVscGVyKHZvaWQgKmRhdGEpDQo+ICtib29sIGFyY2hfY3B1X2tlZXBfb25saW5l
KHVuc2lnbmVkIGludCBjcHUpDQo+ICB7DQo+IC0gICAgdW5zaWduZWQgaW50IGNwdSA9ICh1bnNp
Z25lZCBsb25nKWRhdGE7DQo+IC0gICAgaW50IHJldCA9IGNwdV91cChjcHUpOw0KPiAtDQo+IC0g
ICAgLyogSGF2ZSBvbmUgbW9yZSBnbyBvbiBFQlVTWS4gKi8NCj4gLSAgICBpZiAoIHJldCA9PSAt
RUJVU1kgKQ0KPiAtICAgICAgICByZXQgPSBjcHVfdXAoY3B1KTsNCj4gLQ0KPiAtICAgIGlmICgg
IXJldCAmJiAhb3B0X3NtdCAmJg0KPiAtICAgICAgICAgY3B1X2RhdGFbY3B1XS5jb21wdXRlX3Vu
aXRfaWQgPT0gSU5WQUxJRF9DVUlEICYmDQo+IC0gICAgICAgICBjcHVtYXNrX3dlaWdodChwZXJf
Y3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpID4gMSApDQo+IC0gICAgew0KPiAtICAgICAgICBy
ZXQgPSBjcHVfZG93bl9oZWxwZXIoZGF0YSk7DQo+IC0gICAgICAgIGlmICggcmV0ICkNCj4gLSAg
ICAgICAgICAgIHByaW50aygiQ291bGQgbm90IHJlLW9mZmxpbmUgQ1BVJXUgKCVkKVxuIiwgY3B1
LCByZXQpOw0KPiAtICAgICAgICBlbHNlDQo+IC0gICAgICAgICAgICByZXQgPSAtRVBFUk07DQo+
IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIHJldDsNCj4gLX0NCj4gLQ0KPiAtbG9uZyBjZl9j
aGVjayBjcHVfZG93bl9oZWxwZXIodm9pZCAqZGF0YSkNCj4gLXsNCj4gLSAgICBpbnQgY3B1ID0g
KHVuc2lnbmVkIGxvbmcpZGF0YTsNCj4gLSAgICBpbnQgcmV0ID0gY3B1X2Rvd24oY3B1KTsNCj4g
LQ0KPiAtICAgIC8qIEhhdmUgb25lIG1vcmUgZ28gb24gRUJVU1kuICovDQo+IC0gICAgaWYgKCBy
ZXQgPT0gLUVCVVNZICkNCj4gLSAgICAgICAgcmV0ID0gY3B1X2Rvd24oY3B1KTsNCj4gLSAgICBy
ZXR1cm4gcmV0Ow0KPiArICAgIHJldHVybiBvcHRfc210IHx8IGNwdV9kYXRhW2NwdV0uY29tcHV0
ZV91bml0X2lkICE9IElOVkFMSURfQ1VJRCB8fA0KPiArICAgICAgICAgICBjcHVtYXNrX3dlaWdo
dChwZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpIDw9IDE7DQo+ICB9DQo+ICAjZW5kaWYN
Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9hcmNoL3g4Ni9zeXNj
dGwuYw0KPiBpbmRleCAxMGQ0ODVlNjMzLi5hNDI1NGJlYWJiIDEwMDY0NA0KPiAtLS0gYS94ZW4v
YXJjaC94ODYvc3lzY3RsLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jDQo+IEBAIC0x
MjEsMTMgKzEyMSwxMyBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKA0KPiAgDQo+ICAgICAgY2FzZSBY
RU5fU1lTQ1RMX2NwdV9ob3RwbHVnOg0KPiAgICAgIHsNCj4gLSAgICAgICAgdW5zaWduZWQgaW50
IGNwdSA9IHN5c2N0bC0+dS5jcHVfaG90cGx1Zy5jcHU7DQo+ICAgICAgICAgIHVuc2lnbmVkIGlu
dCBvcCAgPSBzeXNjdGwtPnUuY3B1X2hvdHBsdWcub3A7DQo+ICAgICAgICAgIGxvbmcgKCpmbiko
dm9pZCAqZGF0YSk7DQo+ICAgICAgICAgIHZvaWQgKmhjcHU7DQo+ICANCj4gICAgICAgICAgaWYg
KCAhSVNfRU5BQkxFRChDT05GSUdfQ1BVX09OTElORV9PRkZMSU5FKSApDQo+ICAgICAgICAgIHsN
Cj4gKyAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOw0KPiAgICAgICAgICAgICAgcmV0
ID0gLUVPUE5PVFNVUFA7DQo+ICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgfQ0KPiBA
QCAtMTM1LDEzICsxMzUsMTAgQEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgNCj4gICAgICAgICAgc3dp
dGNoICggb3AgKQ0KPiAgICAgICAgICB7DQo+ICAgICAgICAgIGNhc2UgWEVOX1NZU0NUTF9DUFVf
SE9UUExVR19PTkxJTkU6DQo+IC0gICAgICAgICAgICBmbiA9IGNwdV91cF9oZWxwZXI7DQo+IC0g
ICAgICAgICAgICBoY3B1ID0gX3AoY3B1KTsNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtDQo+
ICAgICAgICAgIGNhc2UgWEVOX1NZU0NUTF9DUFVfSE9UUExVR19PRkZMSU5FOg0KPiAtICAgICAg
ICAgICAgZm4gPSBjcHVfZG93bl9oZWxwZXI7DQo+IC0gICAgICAgICAgICBoY3B1ID0gX3AoY3B1
KTsNCj4gKyAgICAgICAgICAgIC8qIEhhbmRsZWQgYnkgY29tbW9uIGNvZGUgKi8NCj4gKyAgICAg
ICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOw0KPiArICAgICAgICAgICAgcmV0ID0gLUVPUE5P
VFNVUFA7DQo+ICAgICAgICAgICAgICBicmVhazsNCj4gIA0KPiAgICAgICAgICBjYXNlIFhFTl9T
WVNDVExfQ1BVX0hPVFBMVUdfU01UX0VOQUJMRToNCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v
S2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZw0KPiBpbmRleCA1NzEzZGMxZjljLi5mMWM3OGIw
YWM3IDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL0tjb25maWcNCj4gKysrIGIveGVuL2NvbW1v
bi9LY29uZmlnDQo+IEBAIC0xMjEsNiArMTIxLDkgQEAgY29uZmlnIEhBU19BTFRFUk5BVElWRQ0K
PiAgY29uZmlnIEhBU19DT01QQVQNCj4gIAlib29sDQo+ICANCj4gK2NvbmZpZyBIQVNfQ1BVX09O
TElORV9PRkZMSU5FDQo+ICsJYm9vbA0KPiArDQo+ICBjb25maWcgSEFTX0RFVklDRV9UUkVFX0RJ
U0NPVkVSWQ0KPiAgCWJvb2wNCj4gIAlzZWxlY3QgREVWSUNFX1RSRUVfUEFSU0UNCj4gQEAgLTY0
OCw4ICs2NTEsOCBAQCBjb25maWcgU1lTVEVNX1NVU1BFTkQNCj4gIA0KPiAgY29uZmlnIENQVV9P
TkxJTkVfT0ZGTElORQ0KPiAgCWJvb2wgIkNQVSBvbmxpbmUvb2ZmbGluZSBzdXBwb3J0IiBpZiBF
WFBFUlQNCj4gLQlkZXBlbmRzIG9uIFg4Ng0KPiAtCWRlZmF1bHQgeQ0KPiArCWRlcGVuZHMgb24g
SEFTX0NQVV9PTkxJTkVfT0ZGTElORQ0KPiArCWRlZmF1bHQgWDg2DQo+ICAJaGVscA0KPiAgCSAg
RW5hYmxlIHN1cHBvcnQgZm9yIGJyaW5naW5nIENQVXMgb25saW5lIGFuZCBvZmZsaW5lIGF0IHJ1
bnRpbWUuIE9uDQo+ICAJICBYODYgdGhpcyBpcyByZXF1aXJlZCBmb3IgZGlzYWJsaW5nIFNNVC4N
Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc21wLmMgYi94ZW4vY29tbW9uL3NtcC5jDQo+IGlu
ZGV4IGEwMTFmNTQxZjEuLmFmNTMyZDQ4NzMgMTAwNjQ0DQo+IC0tLSBhL3hlbi9jb21tb24vc21w
LmMNCj4gKysrIGIveGVuL2NvbW1vbi9zbXAuYw0KPiBAQCAtMTYsNiArMTYsNyBAQA0KPiAgICog
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gICAqLw0KPiAg
DQo+ICsjaW5jbHVkZSA8eGVuL2NwdS5oPg0KPiAgI2luY2x1ZGUgPGFzbS9oYXJkaXJxLmg+DQo+
ICAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KPiAgI2luY2x1ZGUgPHhlbi9zcGlubG9jay5o
Pg0KPiBAQCAtMTA0LDYgKzEwNSw0MCBAQCB2b2lkIHNtcF9jYWxsX2Z1bmN0aW9uX2ludGVycnVw
dCh2b2lkKQ0KPiAgICAgIGlycV9leGl0KCk7DQo+ICB9DQo+ICANCj4gKyNpZmRlZiBDT05GSUdf
Q1BVX09OTElORV9PRkZMSU5FDQo+ICtsb25nIGNmX2NoZWNrIGNwdV91cF9oZWxwZXIodm9pZCAq
ZGF0YSkNCj4gK3sNCj4gKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gKHVuc2lnbmVkIGxvbmcpZGF0
YTsNCj4gKyAgICBpbnQgcmV0ID0gY3B1X3VwKGNwdSk7DQo+ICsNCj4gKyAgICAvKiBIYXZlIG9u
ZSBtb3JlIGdvIG9uIEVCVVNZLiAqLw0KPiArICAgIGlmICggcmV0ID09IC1FQlVTWSApDQo+ICsg
ICAgICAgIHJldCA9IGNwdV91cChjcHUpOw0KPiArDQo+ICsgICAgaWYgKCAhcmV0ICYmICFhcmNo
X2NwdV9rZWVwX29ubGluZShjcHUpICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHJldCA9IGNwdV9k
b3duX2hlbHBlcihkYXRhKTsNCj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPiArICAgICAgICAgICAg
cHJpbnRrKCJDb3VsZCBub3QgcmUtb2ZmbGluZSBDUFUldSAoJWQpXG4iLCBjcHUsIHJldCk7DQo+
ICsgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgIHJldCA9IC1FUEVSTTsNCj4gKyAgICB9DQo+
ICsNCj4gKyAgICByZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtsb25nIGNmX2NoZWNrIGNwdV9k
b3duX2hlbHBlcih2b2lkICpkYXRhKQ0KPiArew0KPiArICAgIHVuc2lnbmVkIGludCBjcHUgPSAo
dW5zaWduZWQgbG9uZylkYXRhOw0KPiArICAgIGludCByZXQgPSBjcHVfZG93bihjcHUpOw0KPiAr
DQo+ICsgICAgLyogSGF2ZSBvbmUgbW9yZSBnbyBvbiBFQlVTWS4gKi8NCj4gKyAgICBpZiAoIHJl
dCA9PSAtRUJVU1kgKQ0KPiArICAgICAgICByZXQgPSBjcHVfZG93bihjcHUpOw0KPiArICAgIHJl
dHVybiByZXQ7DQo+ICt9DQo+ICsjZW5kaWYgLyogQ09ORklHX0NQVV9PTkxJTkVfT0ZGTElORSAq
Lw0KPiArDQo+ICAvKg0KPiAgICogTG9jYWwgdmFyaWFibGVzOg0KPiAgICogbW9kZTogQw0KPiBk
aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMNCj4g
aW5kZXggOGZiNWZmMGFmMy4uZGQyMWI2ZmY3ZSAxMDA2NDQNCj4gLS0tIGEveGVuL2NvbW1vbi9z
eXNjdGwuYw0KPiArKysgYi94ZW4vY29tbW9uL3N5c2N0bC5jDQo+IEBAIC00NzUsNiArNDc1LDM4
IEBAIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX3N5c2N0bF90KSB1
X3N5c2N0bCkNCj4gICAgICAgICAgICAgIGNvcHliYWNrID0gMTsNCj4gICAgICAgICAgYnJlYWs7
DQo+ICANCj4gKyAgICBjYXNlIFhFTl9TWVNDVExfY3B1X2hvdHBsdWc6DQo+ICsgICAgew0KPiAr
ICAgICAgICBsb25nICgqZm4pKHZvaWQgKmRhdGEpOw0KPiArDQo+ICsgICAgICAgIHJldCA9IC1F
T1BOT1RTVVBQOw0KPiArICAgICAgICBpZiAoICFJU19FTkFCTEVEKENPTkZJR19DUFVfT05MSU5F
X09GRkxJTkUpICkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIHN3aXRj
aCAoIG9wLT51LmNwdV9ob3RwbHVnLm9wICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICBjYXNl
IFhFTl9TWVNDVExfQ1BVX0hPVFBMVUdfT05MSU5FOg0KPiArICAgICAgICAgICAgZm4gPSBjcHVf
dXBfaGVscGVyOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgY2FzZSBY
RU5fU1lTQ1RMX0NQVV9IT1RQTFVHX09GRkxJTkU6DQo+ICsgICAgICAgICAgICBmbiA9IGNwdV9k
b3duX2hlbHBlcjsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIGRlZmF1
bHQ6DQo+ICsgICAgICAgICAgICBmbiA9IE5VTEw7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4g
KyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIGlmICggZm4gKQ0KPiArICAgICAgICB7DQo+ICsg
ICAgICAgICAgICByZXQgPSBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KDAsIGZuLCBfcChvcC0+
dS5jcHVfaG90cGx1Zy5jcHUpKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICB9
DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgICAgIC8qIFVzZSB0aGUgYXJjaCBoYW5kbGVyIGZvciBj
YXNlcyBub3QgaGFuZGxlZCBoZXJlICovDQo+ICsgICAgICAgIGZhbGx0aHJvdWdoOw0KPiAgICAg
IGRlZmF1bHQ6DQo+ICAgICAgICAgIHJldCA9IGFyY2hfZG9fc3lzY3RsKG9wLCB1X3N5c2N0bCk7
DQo+ICAgICAgICAgIGNvcHliYWNrID0gMDsNCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl
bi9zbXAuaCBiL3hlbi9pbmNsdWRlL3hlbi9zbXAuaA0KPiBpbmRleCAyY2E5ZmYxYmZjLi42YzAx
MWQ3M2VmIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vc21wLmgNCj4gKysrIGIveGVu
L2luY2x1ZGUveGVuL3NtcC5oDQo+IEBAIC03Niw0ICs3NiwxMCBAQCBleHRlcm4gdm9pZCAqc3Rh
Y2tfYmFzZVtOUl9DUFVTXTsNCj4gIHZvaWQgaW5pdGlhbGl6ZV9jcHVfZGF0YSh1bnNpZ25lZCBp
bnQgY3B1KTsNCj4gIGludCBzZXR1cF9jcHVfcm9vdF9wZ3QodW5zaWduZWQgaW50IGNwdSk7DQo+
ICANCj4gKyNpZmRlZiBDT05GSUdfQ1BVX09OTElORV9PRkZMSU5FDQo+ICtib29sIGFyY2hfY3B1
X2tlZXBfb25saW5lKHVuc2lnbmVkIGludCBjcHUpOw0KPiArI2VuZGlmDQo+ICtsb25nIGNmX2No
ZWNrIGNwdV91cF9oZWxwZXIodm9pZCAqZGF0YSk7DQo+ICtsb25nIGNmX2NoZWNrIGNwdV9kb3du
X2hlbHBlcih2b2lkICpkYXRhKTsNCj4gKw0KPiAgI2VuZGlmIC8qIF9fWEVOX1NNUF9IX18gKi8N
Cj4gZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9v
a3MuYw0KPiBpbmRleCBkNjViYTBhZWFlLi5hMWVlZDMwOWI0IDEwMDY0NA0KPiAtLS0gYS94ZW4v
eHNtL2ZsYXNrL2hvb2tzLmMNCj4gKysrIGIveGVuL3hzbS9mbGFzay9ob29rcy5jDQo+IEBAIC05
NTcsNyArOTU3LDcgQEAgc3RhdGljIGludCBjZl9jaGVjayBmbGFza19zeXNjdGwoY29uc3Qgc3Ry
dWN0IHhlbl9zeXNjdGwgKm9wKQ0KPiAgICAgIGNhc2UgWEVOX1NZU0NUTF9nZXRkb21haW5pbmZv
bGlzdDoNCj4gICAgICAgICAgcmV0dXJuIGZsYXNrX2dldGRvbWFpbmluZm8oZG9tX3hlbik7DQo+
ICANCj4gLSNpZmRlZiBDT05GSUdfWDg2DQo+ICsjaWZkZWYgQ09ORklHX0NQVV9PTkxJTkVfT0ZG
TElORQ0KPiAgICAgIGNhc2UgWEVOX1NZU0NUTF9jcHVfaG90cGx1ZzoNCj4gICAgICAgICAgc3dp
dGNoICggb3AtPnUuY3B1X2hvdHBsdWcub3AgKQ0KPiAgICAgICAgICB7DQoNCi0tIA0KV0JSLCBW
b2xvZHlteXI=


From xen-devel-bounces@lists.xenproject.org Mon Nov 09 23:38:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 09 Nov 2026 23:38:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480471.1684370 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQYwr-0007qA-85; Mon, 09 Nov 2026 23:38:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480471.1684370; Mon, 09 Nov 2026 23:38:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQYwr-0007q3-5W; Mon, 09 Nov 2026 23:38:49 +0000
Received: by outflank-mailman (input) for mailman id 1480471;
 Mon, 09 Nov 2026 23:38:48 +0000
Received: from mx.expurgate.net ([194.145.224.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <Volodymyr_Babchuk@epam.com>) id 1xQYwq-0007pl-Aw
 for xen-devel@lists.xenproject.org; Mon, 09 Nov 2026 23:38:48 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQYwp-008ojk-GQ
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 00:38:47 +0100
Received: from [10.42.69.6] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6af2594c-8faa-0a2a0a5109dd-0a2a4506901a-34
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 00:38:47 +0100
Received: from [52.101.65.142]
 (helo=DU2PR03CU002.outbound.protection.outlook.com)
 by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <Volodymyr_Babchuk@epam.com>)
 id 6af25986-195a-0a2a45060019-3465418eceb8-4
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 00:38:47 +0100
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com (2603:10a6:803:113::29)
 by VI0PR03MB10567.eurprd03.prod.outlook.com (2603:10a6:800:209::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.12; Mon, 9 Nov
 2026 23:38:44 +0000
Received: from VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48]) by VE1PR03MB6078.eurprd03.prod.outlook.com
 ([fe80::4722:b91:9b24:ee48%4]) with mapi id 15.21.0592.009; Mon, 9 Nov 2026
 23:38:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.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=Hzu5/F2Dulbond2Qm7ss47ExxGnkWNzsfTdb+Qcd0G/zlbn8pf6pKMJyWz7aUxTp/1lm27n6Uu51qf4mpBzaCMXqWFoegfK1L0U95605nTNeJufNlxRlwv6JpTvBj8UbQn8BanGPC/jhbcU8FLg41V7qxQft53XpRn+od7nIkZNgKRepHoUQiaxK5U6nT6elST6x3AmaL9gkKy6aDIDX/6Tp2pmxUU7oULiHa2MYZeOboeAJOZU4pPkAN+w9SOduHynUa/9i8Ybnx9HWD//yJLYfWHuot8AYY/SC3nY3jv2PN9sIWsJfIh/1yhRuhdU+he+tlUtgCBovUwXqFxA0+A==
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=i4cLwG16XlNpnDiz/wJYHhlpRGZpYfEKm9hcM0WWfs4=;
 b=CMhywG8pShtz2AxV8O34pe4e2IN+F1RmPOtxU2WQDaI+8k/PPWoNPgyYHpjCHj8gMIW52S7fHjC8FgVtGNI/Tb+dj/2hkVy1d/p+67V8Axyw2rZr68GvNQ7hKn6IhOeQtoes8x+TcCYLvjaCy332hxaNTXiQff6MyHb0VmsLKueTxLX5OYvGw8P2cb5O8sAXIfjkJ5pKvnUme6exvly3OBqFCPNuQ5thsrn7ThIREmOyCAxcyfvDgauyAjaaZdZjbSAbz43NDw6TSmMLV1SaLaMhTU5LaLgPTmz6p/tO3PmZkQvs05LWKd/lmZEVMsbW7mJU+DP0shAAknRLqkImDA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=i4cLwG16XlNpnDiz/wJYHhlpRGZpYfEKm9hcM0WWfs4=;
 b=ZOHB6qWxzi2nuAWkFb8ej16JSzu5mHylm3oNRjCIBvaM4vNw+0vEqxHnaOe1EQSvRuN7vHymti7Mx0dlODsaHnpAh4gAVxy39MYvM2CWfEiAsGMlGLz1V4ApnrwJWBP+EmnaJYOYj4nvUtl4c3KiYq4jTB2LIw55GDESxMYWNSiRHyxmI9mO4F9R6TMpbh0XrybZYh9k2G12VcKbQZDZbFFKsIbC+TK1aGmpnI5W944kSRwtZTfY1wwHi1qPm93K7qVpX9RgQ7CLpmXHuDtzddGl+ZYsI5xihFjotQcuu2pvCF89UyfeqVD6hhGYVwn+cZ5mY0ThqpFQtTsHZLHQtg==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Anthony PERARD
	<anthony.perard@vates.tech>, Michal Orzel <michal.orzel@amd.com>, Jan Beulich
	<jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger@xenproject.org>, Stefano
 Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v11 6/6] docs: Document CPU hotplug
Thread-Topic: [PATCH v11 6/6] docs: Document CPU hotplug
Thread-Index: AQHdcDtO8MUZhkc6jkm6vG/XjR44FQ==
Date: Mon, 9 Nov 2026 23:38:43 +0000
Message-ID: <87se19d18d.fsf@epam.com>
References: <cover.1794222015.git.mykyta_poturai@epam.com>
	<b29769962099a9d5ff14b879b87a588ed2e96665.1794222015.git.mykyta_poturai@epam.com>
In-Reply-To:
 <b29769962099a9d5ff14b879b87a588ed2e96665.1794222015.git.mykyta_poturai@epam.com>
	(Mykyta Poturai's message of "Mon, 9 Nov 2026 11:12:49 +0000")
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: mu4e 1.14.3; emacs 30.2
authentication-results: mx.microsoft.com 1; dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: VE1PR03MB6078:EE_|VI0PR03MB10567:EE_
x-ms-office365-filtering-correlation-id: 7f1faca1-ee9c-4d10-fadb-08df3eba97a9
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|23010399003|376014|1800799024|366016|42112799006|38070700021|261028144727099003|260925021311599003|260925021911599003|260925022911599003|4143699003|11063799006|261022105027099003|261021121427099003|56012099006|261022075727099003|261009223027099003|261026121527099003|261026140227099003|261102123227099003|10067099003|22082099003|18002099003|6133799003;
x-microsoft-antispam-message-info:
 uj+vU02H0SzHXDqN264N65pNqdAE5cHpGUxozwRnFMtc8vSZu+n8ElWOpiynLsaWm29wrhd8S15B6SHS1W8RyUtKri76QBHO1UCFl8nxaCD8dRoLrv8VgSmSq27mGP/AyBPlTRC1Qx3fWP/Pfpl9pdPklIb5yRRr0jOTFEmz/54GmsDKugOp3J/ZVJV880wlgWerFTKelPSoM4+6KN7d2UctWlsKkLgEI7fdWsYhdv6UMw6fY9SVnX3bH+jgQKuv3pPvweSrsCnbvC5gjmHC4LJWRKDmSRHemnTNtQp+ti9hEjQpt4Y0QG6BJUbbbKDsTR+LdH1Uk/xnjGoO/NgKV1/W0Cx9fNMO48esNkKH6O4lWSUwTYfrSBPvWLWxxOlYa+Uo+Iaiy47MYo1Epcqi/TY5tZiRwHDn94Wb6/9X30WJSQPKWQ5n4mEgB6NgejOtEYFJly9POW4jRvj5OU5L3o6ANG3076CvldUqPYiJ2CPNitaBA0LhkCVvj+af+t+ZhjGwMsF0vf4j6fLJlC3OqcaWiz8fJTqtjwYqGYsRe5pEApsK3QvdLrceC+NziEmji0jGbdAqqFCpY8FloKEO922cw2MAVDrI4FE4+hUimzZnuNBsctbZnf0X+sd/O+XTP1Qn5Ldub6XK8+NK9Urn06Y22UhJe5ZnpTXjdHWlpYGqm/k9gXVFlOdWAwWrlK5EPT+uD85kF6KBl6m+xabi0ALIhpl5uFeVECy9s7W+jek=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR03MB6078.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(1800799024)(366016)(42112799006)(38070700021)(261028144727099003)(260925021311599003)(260925021911599003)(260925022911599003)(4143699003)(11063799006)(261022105027099003)(261021121427099003)(56012099006)(261022075727099003)(261009223027099003)(261026121527099003)(261026140227099003)(261102123227099003)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?S1NyYkphOHB1RUxZaXhKVDFYOGE5ejNzNW14aWJSUEtEUHorMFpyQ09Tb3Ru?=
 =?utf-8?B?aWJQWWFhR3lCWng5Z2FTS05sM3R2aXc2c3hGenRpRUtCZ3RyQWxjNnNrM1Zv?=
 =?utf-8?B?QU1wblQ0ZUlIcGVHditBTnF4UlliQ0h6U2h1d094RVEvSHJTQkFLMUI0clNx?=
 =?utf-8?B?U1JUZkxFbkpHYVdSNmZYaU1mVzNIOHRQZ0ZWL2pSTlcra2JxMkN3ZXpYVmlN?=
 =?utf-8?B?bmJ3ZGNjekFXck1IcnE5SUtLL3RabkU4Vk1BRTk1Y3FVc3U3dVZtUTRuN2lE?=
 =?utf-8?B?eFBJZmg4dGhoTnlOcW1UQ3lnR2ZhT1kvdTRzZG9oN3o0ZU9yYzhOMjlFcXpM?=
 =?utf-8?B?dXcwQTF3dGRnNUoveWs5Z0lXYWdCYy84NGtaZ1hPQm9qVFk0eXpXTTBKUTJh?=
 =?utf-8?B?T0Z5UUVPV0Jla1BRRk1qK3RSSTN4MzBta3FYVHRia2FaUWxjWGdQaTMxQnY4?=
 =?utf-8?B?eFI0ZVczZzU3TFdvem9tWGRUYlZnQVh2SURrOVlTU3d1cklScUEvWWxXUVFV?=
 =?utf-8?B?ZGZpQ3JjckF6UmhsejExZDA1VWtuaW16RlNqQ0Q5aDFrbWIxNXpkRHlLSG9y?=
 =?utf-8?B?OHdacklmNW1DSjhIc0Z4clVzRUJ1MjcwOStKcThERWdxckpFNTFtaTVaL2dQ?=
 =?utf-8?B?N09YeTl2TmlsMHFobmhPVGVybGoya082TlFHM0hwYWgvd3N3YmxHVUc0RXpY?=
 =?utf-8?B?RkhSRjE5aUsxSVI1SlB1bGhrWFgyODhJelVwNW8yQWkvWGNLZXFlQnUvbTND?=
 =?utf-8?B?cjBSaklNU2dsQUpuMjliOGdRZzZ4aVhPSEFHYUVBSFhwRDJxNjJqSTBiOUdO?=
 =?utf-8?B?WE9vNmxtUC81Zy9BTlhLM2Z1UEJHOHZVazdOaEVLdGYvRnJ6RVkwbzZWM21N?=
 =?utf-8?B?OE1LVVV5TEliYjNaTUdMbkZteTBnZjFYa3lIOEpzclorTGppOVRTVVFaYkNp?=
 =?utf-8?B?aFJkRzQxNzFGYWRiTkFmbVpjSy9LNWI2YTJRd2dFb2lEREticmlISWsxb1Vz?=
 =?utf-8?B?NEZUd2piV2pFdXRNbVVjMDQ3MjVCZk8xZUxCT2RPbkh0MjlpUnlCRHRoTDJj?=
 =?utf-8?B?NGpwRUM3K3N2WnEya082aGM3TE9ZNHJyVjR6c2wwcmE5N1p4SXYvZDNrNjZZ?=
 =?utf-8?B?TURteTNaRlJqQzc0S1NQZzM5bzVKT1VyVXJNQzlSaitIVFIvR1JTS0x5dEYw?=
 =?utf-8?B?WTBwSXNVQjkvSmFyZ3F2bDA2dXhjT1g2T20vTHVOZHlraGFLN2hVR01wNzJs?=
 =?utf-8?B?Tmp0eld6RllWcDBmV0hiNURNNkl3MSthd1cwOE1uMVJSQXhRcnhUcFcvUXFx?=
 =?utf-8?B?Sks4cTZ4SCs2SEIzMTZUWVl3dUpiSjZEYUdqY2hkL1NJcFN6QzhwTEsvMUFC?=
 =?utf-8?B?S2M3REZlRUVnUjYrQlpvNXl4bjBWeDU3RkMyVC8rU1kxTXZZVnhzUXVzb2FI?=
 =?utf-8?B?TTVFeHkyTldqb0pjK09HdDhPV3JUdllLVCtXSmdBNWJYZjQ1VEFmYXRKTXNT?=
 =?utf-8?B?M0xiRHNjN0s0UXY1Y1pwaGVYZFkxSldMQVd0N1YwMWJIbnpwQlBHSFF6YVAz?=
 =?utf-8?B?Z1h3NEtxQS9wZm5XcGVueUdIQzZ6UFgxR1lNdElLV25PaTVEbnhnZ1pqWnZu?=
 =?utf-8?B?OVdlY2NpOXRGU1RXbnBpbGlRNXBjaWhBQ3g5WVR0bFRaY0NGTjV5b25FVlYx?=
 =?utf-8?B?SFBLaFo1aXA4QmZ3bitRenFEcmxZZitqOTRwVzZwWlpIcWFBUTFiVjJKbXdv?=
 =?utf-8?B?RXAxZjV6cnNvcTI1YUsyNERHRW40UDZBbkNxRS9VUHNkUDNHdkM2TUh2NFFr?=
 =?utf-8?B?TlVpb2FvS3A5OTdQdnYxSDVlREJZNHgwVkZPTDQwSXRXNlpFM3JjWVByLzAw?=
 =?utf-8?B?NlkrdGRrdEM3NWlWMkZhcFVjTHFpbG1RcDl2ajUxLzNZeHJJeVhQZkVEczd5?=
 =?utf-8?B?cVNObkpzZFJBNHpUMGRDaWllOW1KaXNPdnpzbHJodlZLSytRWEc4NW4yQysx?=
 =?utf-8?B?aHFpVE83TEFIS1kvMjZMeTJUeXlKNXhsQW93MXFHcEtEd0VXdHZwS0Z6SENk?=
 =?utf-8?B?L0tIVnNLWHhETnIxK1cxQkl5c2xNcHFDbGZhTCtpdlR2RWFrNkE3UHkzcU1o?=
 =?utf-8?B?ZzU1T1FJcGl1eStYZGF2VDFTcGF5aktRM05lK3loREJrZGVzS3NMYlU1YWFW?=
 =?utf-8?B?ZEhDc0YxV2FzZmJRTmZ4ZHVNcmdJRHRxcFZsOS9lY1NFK1loSWNteU1FZ0Nr?=
 =?utf-8?B?WmFWUnZHd3ZYN2VTeTBubHlHRWJ3MXBrMThNUTh1akZNbUNxbDZtdkNIZ1kw?=
 =?utf-8?B?b21NV2lrUzB4d3pHRlF3dE0wTjMrQkFpTHdCMVJXZlVVU3c2WUdjTlljWHdk?=
 =?utf-8?Q?hDBFoIV18badQIuQ=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: VE1PR03MB6078.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7f1faca1-ee9c-4d10-fadb-08df3eba97a9
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2026 23:38:43.8834
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 5tQM7fpzY62VUWzuEFnJo34Qdj2koRz0FBh1ExUmrdadO6hdQn9okTLxRE4mhVgTbVicW3hlQNYu6flhJYI+Zup9TWgYlu5w0cSYr5Dbf+Q=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10567
X-purgate-ID: tlsNG-16d1c6/1794267527-FD00977B-0ECDB1BD/0/0
X-purgate-type: clean
X-purgate-size: 6636

SGksDQoNCk15a3l0YSBQb3R1cmFpIDxNeWt5dGFfUG90dXJhaUBlcGFtLmNvbT4gd3JpdGVzOg0K
DQo+IFNpZ25lZC1vZmYtYnk6IE15a3l0YSBQb3R1cmFpIDxteWt5dGFfcG90dXJhaUBlcGFtLmNv
bT4NCg0KUmV2aWV3ZWQtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFiY2h1a0Bl
cGFtLmNvbT4NCg0KPiAtLS0NCj4gdjEwLT52MTE6DQo+ICogc3luYyB3aXRoIGxhdGVzdCBjaGFu
Z2VzDQo+DQo+IHY5LT52MTA6DQo+ICogZXhwbGFpbiB0aGUgYWN0dWFsIElUUyBpbmNvbXBhdGli
aWxpdHkNCj4gKiBzYXkgRkZBIGFuZCBURUUgYXJlIGluY29tcGF0aWJsZSwgbWF0Y2hpbmcgdGhl
IEtjb25maWcgZGVwZW5kZW5jeQ0KPg0KPiB2OC0+djk6DQo+ICogbm8gY2hhbmdlcw0KPg0KPiB2
Ny0+djg6DQo+ICogcmVtb3ZlIHN1cHBvcnQgc3RhdHVzIHVwZGF0ZQ0KPiAqIHVwZGF0ZSBjb25m
aWcgb3B0aW9uIG5hbWUNCj4NCj4gdjYtPnY3Og0KPiAqIGFkZCB0ZXN0aW5nIGFuZCBsaW1pdGF0
aW9ucw0KPg0KPiB2NS0+djY6DQo+ICogbm8gY2hhbmdlcw0KPg0KPiB2NC0+djU6DQo+ICogcy9z
dXBwb3J0ZWQvaW1wbGVtZW50ZWQvDQo+ICogdXBkYXRlIFNVUFBPUlQubWQNCj4NCj4gdjMtPnY0
Og0KPiAqIHVwZGF0ZSBjb25maWd1cmF0aW9uIHNlY3Rpb24NCj4NCj4gdjItPnYzOg0KPiAqIHBh
dGNoIGludHJvZHVjZWQNCj4gLS0tDQo+ICBkb2NzL21pc2MvY3B1LWhvdHBsdWcudHh0IHwgMTAy
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAxIGZpbGUgY2hhbmdl
ZCwgMTAyIGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL21pc2MvY3B1
LWhvdHBsdWcudHh0DQo+DQo+IGRpZmYgLS1naXQgYS9kb2NzL21pc2MvY3B1LWhvdHBsdWcudHh0
IGIvZG9jcy9taXNjL2NwdS1ob3RwbHVnLnR4dA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp
bmRleCAwMDAwMDAwMDAwLi5lMWI0NzRjYTY5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZG9j
cy9taXNjL2NwdS1ob3RwbHVnLnR4dA0KPiBAQCAtMCwwICsxLDEwMiBAQA0KPiArQ1BVIEhvdHBs
dWcNCj4gKz09PT09PT09PT09DQo+ICsNCj4gK0NQVSBob3RwbHVnIGlzIGEgZmVhdHVyZSB0aGF0
IGFsbG93cyBwQ1BVIGNvcmVzIHRvIGJlIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBhDQo+ICty
dW5uaW5nIHN5c3RlbSB3aXRob3V0IHJlcXVpcmluZyBhIHJlYm9vdC4gSXQgaXMgaW1wbGVtZW50
ZWQgb24geDg2IGFuZCBBcm02NA0KPiArYXJjaGl0ZWN0dXJlcy4NCj4gKw0KPiArSW1wbGVtZW50
YXRpb24gRGV0YWlscw0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtDUFUgaG90
cGx1ZyBpcyBpbXBsZW1lbnRlZCB0aHJvdWdoIHRoZSBgWEVOX1NZU0NUTF9DUFVfSE9UUExVR18q
YCBzeXNjdGwgY2FsbHMuDQo+ICtUaGUgc3BlY2lmaWMgY2FsbHMgYXJlOg0KPiArDQo+ICstIGBY
RU5fU1lTQ1RMX0NQVV9IT1RQTFVHX09OTElORWA6IEJyaW5ncyBhIHBDUFUgb25saW5lDQo+ICst
IGBYRU5fU1lTQ1RMX0NQVV9IT1RQTFVHX09GRkxJTkVgOiBUYWtlcyBhIHBDUFUgb2ZmbGluZQ0K
PiArLSBgWEVOX1NZU0NUTF9DUFVfSE9UUExVR19TTVRfRU5BQkxFYDogRW5hYmxlcyBTTVQgdGhy
ZWFkcyAoeDg2IG9ubHkpDQo+ICstIGBYRU5fU1lTQ1RMX0NQVV9IT1RQTFVHX1NNVF9ESVNBQkxF
YDogRGlzYWJsZXMgU01UIHRocmVhZHMgKHg4NiBvbmx5KQ0KPiArDQo+ICtBbGwgY29yZXMgY2Fu
IGJlIGRpc2FibGVkLCBhc3N1bWluZyBoYXJkd2FyZSBzdXBwb3J0LCBleGNlcHQgZm9yIHRoZSBi
b290IGNvcmUuDQo+ICtTeXNjdGwgY2FsbHMgYXJlIHJvdXRlZCB0byB0aGUgYm9vdCBjb3JlIGJl
Zm9yZSBkb2luZyBhbnkgYWN0dWFsIHVwL2Rvd24NCj4gK29wZXJhdGlvbnMgb24gb3RoZXIgY29y
ZXMuDQo+ICsNCj4gK0lmIHRoZXJlIGFyZSBYZW4tYm91bmQgaW50ZXJydXB0cyBwaW5uZWQgdG8g
dGhlIHBDUFUgYmVpbmcgb2ZmbGluZWQsIHRoZXkgd2lsbA0KPiArYmUgYXV0b21hdGljYWxseSBt
aWdyYXRlZCB0byBvdGhlciBvbmxpbmUgcENQVXMuIEludGVycnVwdHMgdXNlZCBieSBndWVzdA0K
PiArZG9tYWlucyBhcmUgaGFuZGxlZCBieSB0aGUgc2NoZWR1bGVyIHdoZW4gaXQgcmVzY2hlZHVs
ZXMgdGhlIHZDUFVzIHRvIGEgbmV3LA0KPiArb25saW5lLCBwQ1BVLiBXaGVuIGEgcENQVSBpcyBi
ZWluZyBvbmxpbmVkLCBzb21lIFhlbi1ib3VuZCBpbnRlcnJ1cHRzIHdpbGwgZ2V0DQo+ICtyZWRp
c3RyaWJ1dGVkIHRvIHRoZSBuZXdseSBvbmxpbmVkIHBDUFUgdG8gcHJldmVudCBpbWJhbGFuY2Uu
DQo+ICsNCj4gK0lmIHBDUFUgYmVpbmcgb2ZmbGluZWQgaGFzIHNvbWUgdkNQVXMgcGlubmVkIHRv
IGl0LCB0aGV5IHdpbGwgYmUgYXV0b21hdGljYWxseQ0KPiArdW5waW5uZWQgYW5kIG1pZ3JhdGVk
IHRvIG90aGVyIG9ubGluZSBwQ1BVcy4NCj4gKw0KPiArTGltaXRhdGlvbnMNCj4gKy0tLS0tLS0t
LS0tDQo+ICsNCj4gK09uIEFybTY0IGNwdSBob3RwbHVnIGlzIGN1cnJlbnRseSBub3QgY29tcGF0
aWJsZSB3aXRoIHRoZSBJVFM6IHRoZSBwZXItQ1BVIExQSQ0KPiArcGVuZGluZyB0YWJsZSBhbmQg
R0lDUl9DVExSLkVuYWJsZUxQSXMgYXJlIHNldCB1cCBvbmNlIGF0IGJvb3QgYW5kIGFyZSBub3QN
Cj4gK3JlLXVzYWJsZSwgc28gb25saW5pbmcgYSBwQ1BVIGEgc2Vjb25kIHRpbWUgZmFpbHMuDQo+
ICsNCj4gK09uIEFybTY0IGl0IGlzIGFsc28gbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgRkZBIGFu
ZCBURUUgbWVkaWF0b3JzLCBhcyBib3RoIHVzZQ0KPiArbm9uLXN0YXRpYyBJUlEgYWN0aW9ucy4N
Cj4gKw0KPiArQ29uZmlndXJhdGlvbg0KPiArLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtDUFUgaG90
cGx1ZyBzdXBwb3J0IGluIFhlbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBDT05GSUdfQ1BVX09OTElO
RV9PRkZMSU5FDQo+ICtLY29uZmlnIG9wdGlvbiwgd2hpY2ggcmVxdWlyZXMgRVhQRVJUIGFuZCBk
ZXBlbmRzIG9uIEhBU19DUFVfT05MSU5FX09GRkxJTkUuDQo+ICtIQVNfQ1BVX09OTElORV9PRkZM
SU5FIGlzIHNlbGVjdGVkIGJ5IHg4NiwgYW5kIGJ5IEFybTY0IHdoZW4gbmVpdGhlciBJVFMgbm9y
DQo+ICtURUUgc3VwcG9ydCBpcyBlbmFibGVkLiBUaGUgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVm
YXVsdCBvbiB4ODYgYW5kIGRpc2FibGVkDQo+ICtieSBkZWZhdWx0IG9uIEFybTY0Lg0KPiArDQo+
ICtUaGUgeGVuLWhwdG9vbCB1c2Vyc3BhY2UgdG9vbCBpcyBidWlsdCB1bmNvbmRpdGlvbmFsbHku
DQo+ICsNCj4gK1VzYWdlDQo+ICstLS0tLQ0KPiArDQo+ICtEaXNhYmxlIGNvcmU6DQo+ICsNCj4g
KyQgeGVuLWhwdG9vbCBjcHUtb2ZmbGluZSAyDQo+ICtQcmVwYXJlIHRvIG9mZmxpbmUgQ1BVIDIN
Cj4gKyhYRU4pIFJlbW92aW5nIGNwdSAyIGZyb20gcnVucXVldWUgMA0KPiArQ1BVIDIgb2ZmbGlu
ZWQgc3VjY2Vzc2Z1bGx5DQo+ICsNCj4gK0VuYWJsZSBjb3JlOg0KPiArDQo+ICskIHhlbi1ocHRv
b2wgY3B1LW9ubGluZSAyDQo+ICtQcmVwYXJlIHRvIG9ubGluZSBDUFUgMg0KPiArKFhFTikgQnJp
bmdpbmcgdXAgQ1BVMg0KPiArKFhFTikgR0lDdjM6IENQVTI6IEZvdW5kIHJlZGlzdHJpYnV0b3Ig
aW4gcmVnaW9uIDAgQDAwMDAwYTAwNDAwNWMwMDANCj4gKyhYRU4pIENQVTI6IEd1ZXN0IGF0b21p
Y3Mgd2lsbCB0cnkgMSB0aW1lcyBiZWZvcmUgcGF1c2luZyB0aGUgZG9tYWluDQo+ICsoWEVOKSBD
UFUgMiBib290ZWQuDQo+ICsoWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMA0KPiArQ1BV
IDIgb25saW5lZCBzdWNjZXNzZnVsbHkNCj4gKw0KPiArRGlzYWJsaW5nIGEgY29yZSB3aXRoIHBp
bm5lZCB2Q1BVczoNCj4gKw0KPiArJCB4bCB2Y3B1LXBpbiAwIDMgMyAzDQo+ICskIHhsIHZjcHUt
cGluIDAgMiAzIDMNCj4gKyQgeGwgdmNwdS1waW4gMCAxIDMgMw0KPiArJCB4bCB2Y3B1LXBpbiAw
IDAgMyAzDQo+ICskIHhlbi1ocHRvb2wgY3B1LW9mZmxpbmUgMw0KPiArUHJlcGFyZSB0byBvZmZs
aW5lIENQVSAzDQo+ICsoWEVOKSBCcmVha2luZyBhZmZpbml0eSBmb3IgZDB2MA0KPiArKFhFTikg
QnJlYWtpbmcgYWZmaW5pdHkgZm9yIGQwdjENCj4gKyhYRU4pIEJyZWFraW5nIGFmZmluaXR5IGZv
ciBkMHYyDQo+ICsoWEVOKSBCcmVha2luZyBhZmZpbml0eSBmb3IgZDB2Mw0KPiArKFhFTikgUmVt
b3ZpbmcgY3B1IDMgZnJvbSBydW5xdWV1ZSAwDQo+ICtDUFUgMyBvZmZsaW5lZCBzdWNjZXNzZnVs
bHkNCj4gKw0KPiArVGVzdGluZw0KPiArLS0tLS0tLQ0KPiArDQo+ICtUaGUgQ1BVIGhvdHBsdWcg
ZmVhdHVyZSBoYXMgYmVlbiB0ZXN0ZWQgb24gYm90aCB4ODYgYW5kIEFybTY0IFFFTVUgc2V0dXBz
IGFuZCBvbg0KPiArUi1DYXIgR2VuNSAoQXJtNjQpIGhhcmR3YXJlLg0KPiArDQo+ICtUaGUgdGVz
dHMgaW5jbHVkZWQ6DQo+ICstIE9mZmxpbmluZyBhbmQgb25saW5pbmcgY29yZXMgd2l0aCBubyBw
aW5uZWQgdkNQVXMNCj4gKy0gT2ZmbGluaW5nIGNvcmVzIHdpdGggcGlubmVkIHZDUFVzDQo+ICst
IE9mZmxpbmluZyBjb3JlcyB3aXRoIFhlbi1ib3VuZCBpbnRlcnJ1cHRzDQo+ICstIE9mZmxpbmlu
ZyBhbGwgY29yZXMgZXhjZXB0IHRoZSBib290IGNvcmUNCj4gKy0gT2ZmbGluaW5nIHRoZSBib290
IGNvcmUgKGV4cGVjdGVkIHRvIGZhaWwpDQo+ICstIEVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgU01U
IHRocmVhZHMgKHg4NiBvbmx5KQ0KPiArLSBPZmZsaW5pbmcgY29yZXMgdG8gd2hpY2ggZ3Vlc3Rz
IHdpdGggcGFzc3Rocm91Z2ggZGV2aWNlcyBhcmUgcGlubmVkDQoNCi0tIA0KV0JSLCBWb2xvZHlt
eXI=


From xen-devel-bounces@lists.xenproject.org Tue Nov 10 01:00:52 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 10 Nov 2026 01:00:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480502.1684378 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQaE4-0001MC-20; Tue, 10 Nov 2026 01:00:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480502.1684378; Tue, 10 Nov 2026 01:00:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQaE3-0001LX-Ve; Tue, 10 Nov 2026 01:00:39 +0000
Received: by outflank-mailman (input) for mailman id 1480502;
 Tue, 10 Nov 2026 01:00:38 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <sstabellini@kernel.org>) id 1xQaE2-0000pL-O5
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 01:00:38 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQaE1-00B32o-Qw
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 02:00:37 +0100
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6af26c68-8faa-0a2a0a5109dd-0a2a4508cb26-48
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 02:00:37 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6af26bc3-f659-0a2a45080019-aceafc1fc056-3
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 01:56:37 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id AB68544D04;
 Tue, 10 Nov 2026 00:56:35 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 76F921F008A1;
 Tue, 10 Nov 2026 00:56:34 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:cc:Subject:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1794272195;
	bh=POYNQ8UFORjsZSBOAZpmVOdf956zxHeg9590atUMmfM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References;
	b=DLwdMFW/60LVnTLa0yQmFg0tJx5vXiCHVmG3eQvGbHS3Idmk3+SseDFBk4e4QF6db
	 QGhyDVdv2TP7uE6I7XG/AK58MazhLRnlCZ5IuW+IA6DhA5bLWD/ACaImWurFZy0tQz
	 lG0sil3FGULB2pGRmHFZtabyVEjLG1JEgXDwUhr7Ds+JfrM4HvX/XQnnIh6+HycLwT
	 PjlB5wVDGsd8SFJO8h51aceVX/oB5ajpAbcSzJ1OiF2SPzAMsPLPlO4hwHFHxz2rJF
	 tOrhtc7ad9zvKgBlPUII/yBcXSRUtAqULMSVRHxrRdbVxmN/lbj6eJxUfYj0lJyQdy
	 SPIVp3mRgcmJA==
Date: Mon, 9 Nov 2026 16:56:33 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
To: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
cc: jgross@suse.com, sstabellini@kernel.org, oleksandr_tyshchenko@epam.com, 
    boris.ostrovsky@oracle.com, xen-devel@lists.xenproject.org, 
    linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH 2/2] xen/pvcalls: destroy the per-socket workqueue on
 release
In-Reply-To: <20261109122324.30134-3-yhlee@isslab.korea.ac.kr>
Message-ID: <604a9832-80ac-107c-b36f-4bb338519cbc@kernel.org>
References: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr> <20261109122324.30134-3-yhlee@isslab.korea.ac.kr>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-c1860d/1794272197-D534D87B-649FF1C0/13/0
X-purgate-type: clean
X-purgate-size: 1764

On Mon, 9 Nov 2026, Yehyeong Lee wrote:
> pvcalls_new_active_socket() gives every active socket its own ordered
> workqueue:
> 
> 	map->ioworker.wq = alloc_ordered_workqueue("pvcalls_io", 0);
> 
> and nothing ever destroys it.  pvcalls_back_release_active() flushes
> map->ioworker.register_work and frees map, but the workqueue and its
> pool_workqueues stay allocated, so a frontend leaks a workqueue per socket
> it connects and releases - a loop a guest can run as long as it likes.
> 
> Destroy it after the IRQ is unbound, so no new work can be queued, and
> before map is freed.  pvcalls_back_ioworker() takes no locks, in
> particular not fedata->socket_lock, which the backend_disconnect() caller
> holds here, so draining it from this point is safe; the flush_work() just
> above already has the same requirement.
> 
> Fixes: 5db4d286a8ef ("xen/pvcalls: implement connect command")
> Cc: stable@vger.kernel.org
> Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
> ---
>  drivers/xen/pvcalls-back.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
> index dcefa91a40cd05..27aa06289a7b92 100644
> --- a/drivers/xen/pvcalls-back.c
> +++ b/drivers/xen/pvcalls-back.c
> @@ -456,6 +456,7 @@ static int pvcalls_back_release_active(struct xenbus_device *dev,
>  	xenbus_unmap_ring_vfree(dev, map->bytes);
>  	xenbus_unmap_ring_vfree(dev, (void *)map->ring);
>  	unbind_from_irqhandler(map->irq, map);
> +	destroy_workqueue(map->ioworker.wq);

Please move the call to destroy_workqueue() just after flush_work().
With that:

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


>  	sock_release(map->sock);
>  	kfree(map);
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Nov 10 01:00:53 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 10 Nov 2026 01:00:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480503.1684388 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQaEH-0006ES-9r; Tue, 10 Nov 2026 01:00:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480503.1684388; Tue, 10 Nov 2026 01:00:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQaEH-0006DH-5w; Tue, 10 Nov 2026 01:00:53 +0000
Received: by outflank-mailman (input) for mailman id 1480503;
 Tue, 10 Nov 2026 01:00:51 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <sstabellini@kernel.org>) id 1xQaEF-0005T5-Oc
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 01:00:51 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQaEE-005TvQ-Qr
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 02:00:50 +0100
Received: from [10.42.69.7] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6af26c9e-e002-0a2a0a5209dd-0a2a4507b9ae-44
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 02:00:50 +0100
Received: from [172.234.252.31] (helo=sea.source.kernel.org)
 by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <sstabellini@kernel.org>)
 id 6af26b94-b4ea-0a2a45070019-aceafc1fd1cc-3
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 01:55:50 +0100
Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18])
 by sea.source.kernel.org (Postfix) with ESMTP id 282EA43B00;
 Tue, 10 Nov 2026 00:55:48 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6181F1F0089F;
 Tue, 10 Nov 2026 00:55:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=k20260515 header.d=kernel.org header.i="@kernel.org" header.h="Date:From:To:cc:Subject:In-Reply-To:References"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org;
	s=k20260515; t=1794272148;
	bh=tCP/BC0jUaw6Y5fj0yPnd1o00wgvXnuPjFl02415l9k=;
	h=Date:From:To:cc:Subject:In-Reply-To:References;
	b=XNiuUceqk3L2p2KPKQklGQdAjkJTVzA6TAqtL4PcxVJ4vR8kt0jwE4o08ziwbC+Zr
	 11axFoSob/OPEzGeMnjHePbwlBYdEq4pQuQ3KdTzNlvWSQoCRfaOyPYFmozwgiwtUB
	 tyU0vacGeKJ3Vy1ooOxIU531K599yBCXxRtcf4lY+chsmQ/uAeClwAO6KwSF+4yYhc
	 /U31QxkSgno7L5T8B1M3kyov2f/ek3uf/X30QbZ+JD4xjXY/xcB1SnLknHKXN47bpu
	 /dG66PiinK5FHFOnCUbK4p97Gkmgzx8ekdZhKnLubFpjEGw+vaEEeyT1od9COSrWrd
	 xSNI3b0zGXkQQ==
Date: Mon, 9 Nov 2026 16:55:45 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
To: Yehyeong Lee <yhlee@isslab.korea.ac.kr>
cc: jgross@suse.com, sstabellini@kernel.org, oleksandr_tyshchenko@epam.com, 
    boris.ostrovsky@oracle.com, xen-devel@lists.xenproject.org, 
    linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH 1/2] xen/pvcalls: unwind pvcalls_new_active_socket() step
 by step
In-Reply-To: <20261109122324.30134-2-yhlee@isslab.korea.ac.kr>
Message-ID: <ce00c906-e984-4363-a2cf-447d21339a67@kernel.org>
References: <20261109122324.30134-1-yhlee@isslab.korea.ac.kr> <20261109122324.30134-2-yhlee@isslab.korea.ac.kr>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-purgate-ID: tlsNG-ef75cf/1794272150-A56C2AE4-9A048A24/13/0
X-purgate-type: clean
X-purgate-size: 5047

On Mon, 9 Nov 2026, Yehyeong Lee wrote:
> Every error path in pvcalls_new_active_socket() jumps to one shared label
> that does list_del(&map->list) and then hands map to
> pvcalls_back_release_active().  But map comes from kzalloc() and its
> list_head is only published at the very end of the function, after the last
> of those jumps:
> 
> 	down(&fedata->socket_lock);
> 	list_add_tail(&map->list, &fedata->socket_mappings);
> 	up(&fedata->socket_lock);
> 
> so on the error path map->list is still {NULL, NULL} and __list_del()
> writes through a NULL pointer.
> 
> A frontend gets there with one value it owns: the ring_order field of the
> page it granted.  Anything above MAX_RING_ORDER takes the second goto, and
> nothing else in the function has run by then.
> 
> The result is an oops in whichever context handled the request - the
> pvcalls-back threaded IRQ handler for PVCALLS_CONNECT, mappass->wq for
> PVCALLS_ACCEPT - and because it happens after down(&fedata->socket_lock)
> that semaphore is never released, so every later operation on the frontend
> blocks on it and the backend never completes backend_disconnect().  (With
> CONFIG_DEBUG_LIST the list_del() only reports and returns, and
> pvcalls_back_release_active() then runs on a map whose irq is still 0 and
> whose bytes, ioworker.wq and saved_data_ready are all NULL.)
> 
> A frontend asking for ring_order 5, on a dom0 built with KASAN
> (the request was issued by a test-only change to the frontend):
> 
> [  133.728877] pvcalls_new_active_socket frontend requested ring_order 5, which is > MAX (4)
> [  133.732868] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] SMP KASAN NOPTI
> [  133.737910] KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
> [  133.741666] CPU: 0 UID: 0 PID: 133 Comm: irq/39-pvcalls- Not tainted 7.3.0-kCTLblk2-15482-g21a7f44fd076-dirty #1 PREEMPT(full)
> [  133.746986] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
> [  133.751512] RIP: 0010:pvcalls_new_active_socket+0x821/0xb90
> [  133.754237] Code: 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 f6 01 00 00 48 8d 79 08 4c 8b 6b 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 14 02 00 00 4c 89 ea 4c 89 69 08 48 b8 00 00 00
> [  133.763126] RSP: 0018:ffffc900004afb38 EFLAGS: 00010202
> [  133.765861] RAX: dffffc0000000000 RBX: ffff88810886c900 RCX: 0000000000000000
> [  133.769348] RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000008
> [  133.772787] RBP: 1ffff92000095f6b R08: 0000000000000001 R09: fffff52000095f58
> [  133.776260] R10: 0000000000000003 R11: ffff888100077320 R12: ffff88810858b410
> [  133.779823] R13: 0000000000000000 R14: ffff88810858b460 R15: ffff88810858b400
> [  133.783382] FS:  0000000000000000(0000) GS:ffff8881b034c000(0000) knlGS:0000000000000000
> [  133.787351] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  133.790308] CR2: 00000000006042c0 CR3: 0000000108400001 CR4: 0000000000770ef0
> [  133.793822] PKRU: 55555554
> [  133.795347] Call Trace:
> [  133.796778]  <TASK>
> [  133.798082]  ? __pfx_pvcalls_new_active_socket+0x10/0x10
> [  133.800801]  ? security_socket_post_create+0x4d/0x60
> [  133.803275]  ? release_sock+0x1a/0x1d0
> [  133.805182]  pvcalls_back_event+0x1b09/0x23e0
> [  133.807431]  ? __pfx_pvcalls_back_event+0x10/0x10
> [  133.809814]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
> [  133.812251]  ? __pfx_pvcalls_back_event+0x10/0x10
> [  133.814554]  irq_thread_fn+0x86/0x150
> [  133.816468]  irq_thread+0x2da/0x580
> [  133.818363]  ? __pfx_irq_thread_fn+0x10/0x10
> [  133.820586]  ? __pfx_irq_thread+0x10/0x10
> [  133.822670]  ? __kthread_parkme+0x88/0x170
> [  133.824803]  ? __pfx_irq_thread+0x10/0x10
> [  133.827153]  ? __pfx_irq_thread+0x10/0x10
> [  133.829304]  kthread+0x2c8/0x3b0
> [  133.831176]  ? recalc_sigpending+0x15c/0x1e0
> [  133.833570]  ? __pfx_kthread+0x10/0x10
> [  133.835572]  ret_from_fork+0x373/0x5b0
> [  133.837581]  ? __pfx_ret_from_fork+0x10/0x10
> [  133.839978]  ? __switch_to+0x3c4/0xb40
> [  133.841984]  ? __pfx_kthread+0x10/0x10
> [  133.843970]  ret_from_fork_asm+0x1a/0x30
> [  133.846031]  </TASK>
> [  133.847420] Modules linked in:
> [  133.849240] ---[ end trace 0000000000000000 ]---
> 
> Give each failure its own label, so that only resources that were actually
> acquired are released and the list the map was never added to is left
> alone.  The map is not published anywhere at that point, so the error path
> needs no socket_lock at all.  sock_release() stays in the callee on every
> error path, the way
> commit 8fafac202d18 ("xen/pvcalls-back: fix double frees with pvcalls_new_active_socket()")
> arranged it.
> 
> Fixes: 5db4d286a8ef ("xen/pvcalls: implement connect command")
> Cc: stable@vger.kernel.org
> Signed-off-by: Yehyeong Lee <yhlee@isslab.korea.ac.kr>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>



From xen-devel-bounces@lists.xenproject.org Tue Nov 10 04:58:21 2026
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 10 Nov 2026 04:58:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1480633.1684396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQdvr-0003sn-89; Tue, 10 Nov 2026 04:58:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1480633.1684396; Tue, 10 Nov 2026 04:58:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1xQdvr-0003sf-52; Tue, 10 Nov 2026 04:58:07 +0000
Received: by outflank-mailman (input) for mailman id 1480633;
 Tue, 10 Nov 2026 04:58:05 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <balaandeguefrancoislionnel@gmail.com>)
 id 1xQdvp-0003sZ-Du
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 04:58:05 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1xQdvo-00BQ09-Cc
 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 05:58:04 +0100
Received: from [10.42.69.1] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <balaandeguefrancoislionnel@gmail.com>)
 id 6af2a408-8faa-0a2a0a5109dd-0a2a4501b79c-48
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 05:58:04 +0100
Received: from [209.85.128.178] (helo=mail-yw1-f178.google.com)
 by tlsNG-d62444.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <balaandeguefrancoislionnel@gmail.com>)
 id 6af2a45b-5984-0a2a45010019-d15580b2e4d7-3
 for <xen-devel@lists.xenproject.org>; Tue, 10 Nov 2026 05:58:04 +0100
Received: by mail-yw1-f178.google.com with SMTP id
 00721157ae682-8b31261e8a9so12124607b3.0
 for <xen-devel@lists.xenproject.org>; Mon, 09 Nov 2026 20:58:04 -0800 (PST)
Received: from bala-Latitude-5580.. ([41.190.227.250])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-8b3933a06c0sm11585217b3.13.2026.11.09.20.57.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 09 Nov 2026 20:58:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20260707 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20260707; t=1794286683; x=1794891483; darn=lists.xenproject.org;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to
         :content-type;
        bh=SK/6LHmaequHmsxieO7lbFh/5uPaBdJlkU34obL4mhQ=;
        b=TtL+85E5xI7EyHbZE/naclu2yBOTfyElE4/xAfQrdZFmiLYoUAK3vNCYdzBgLr7wWx
         +ZlFpEF4hK0f/bvroY8oH0ZBU5E3vGJp+bAgxm8jDOLfXqJMwVhbix/RNn+B9JwTq1AU
         0cyCfaeGh+ulh4GrQb7nM60zxDWHDmHzGpDoyleu0KYebNDHK/PtyL5c07cqdDUrUMyI
         XSZW1v90lrJqkS9Sc1QchcelYMRp7E0XWD0icFrZFbj0R2/UXwlqMEkBbFLj5XL6c9T1
         DRlSz8T0TGqPapsTPKUKLoSrkVqNfX+ZvFDhD2mkGyMumUIly4u7XzchKO3l9QuHizSH
         mrjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20260707; t=1794286683; x=1794891483;
        h=content-transfer-encoding:content-type:mime-version:message-id:date
         :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
         :date:message-id:reply-to:content-type;
        bh=SK/6LHmaequHmsxieO7lbFh/5uPaBdJlkU34obL4mhQ=;
        b=iFJeAvW24oO3xTOQjU7voRkLu/LxRJsuuMu4PXRxiCefFYjLc7UXtwgh5MEbNd/5jC
         7VBJEZfC1JquZ6ie1yQ24qupbmy50TzaYoAOGgg8ryzSUOsOQ+0rPeQ5NI7H6nTMqsKE
         8Gi9FcNR4qAUFldm2pDf4vwuqnDUtypAVeKB94YHvOpQIp+4+Jc+P3jDLfMVhurxBze1
         0nrUzUSMEhY6tHxWU1prPDg6Ul05ZjKt4mw0npam7TG7K0aEHZ60kRWwcVBIXC5BKOlD
         Njk5ckyyYdgcc6E2ycjH/E3Opq6JCMYETkdtigvYY8Xra4XXIfE015anpkvSK+xfvlaO
         qfjw==
X-Gm-Message-State: APuU4Z8kq1U+SJzRqAu5EMoHWLWUbh3AtxkcNq/Oyqz2V0fMQ6Eg1b7p
	Wo1dKRlAWJfplcpSfB7NmIroKLBX/VwsnshNCU5dqiaPMcri164TFNWHjK3n/Q==
X-Gm-Gg: AYBFou1OJXpwjza0ahyjb4aWgXoqBP7dvyQE9wZYhp744zTeyfJBq358FOHmtPyhwXv
	xlsMmFLaYM+aFekVSLxj57zFMEV8Zqb0nxF0D8quPL+QhUECwgYXcJZaHyR5U0C5wjn4ePb2veC
	gCJH44whTaOUZdRzDZAXW/MHLT2y/azfGi3PwwuBlPbEer4mP9hps0K60VDn+/D3g+9sCv3K++c
	VA/VrVwlaYqe2Qz2tTyZ1DCn3Rq50u0Pwp2yrIM2gL7YZAqEcyRQLXz6yTPaaL2Ov1eRXQIStMg
	QdG+HIYyuuwjR0IbHogHp+UhM2csI5Inoh67YaqlQXuoCvO8kNrSPCkPY4vPwPUMmhuU0EQdxvJ
	O/j7LCA0xAmwIeBtMaahhHP00npd5/2298KsGQv+0Sqhb+15hpl2e8lKb0YKI2AG2eQ5iUoGfVv
	yFOmsZVHk6nYS1wu2YOm2GLMNfpm+4ljtA9Tos7iBryKIR8QMXnLl+bpwgQtkjhHEjH7yztpnyX
	n33eiXWPvUtPzauEPZuVUtRL0WMTG8hi3Svkii5MzQesIU3M0sdh4k+Q6kEspNjpJOQaHnS/cb7
	5eQ1PLuohZArYNLPOimcxAVqblM3rxOu/zVaxi1s+gSzBtzDAIh3MunE+2GQ+8U=
X-Received: by 2002:a05:690c:c4e6:b0:8b3:1390:fc1a with SMTP id 00721157ae682-8b39280fdd0mr11748127b3.2.1794286682823;
        Mon, 09 Nov 2026 20:58:02 -0800 (PST)
From: =?UTF-8?q?Bala=20Andegue=20Fran=C3=A7ois=20Lionnel?= <balaandeguefrancoislionnel@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH] docs/man: fix typo in xl.1
Date: Tue, 10 Nov 2026 05:57:30 +0100
Message-Id: <20261110045730.433737-1-balaandeguefrancoislionnel@gmail.com>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-d62444/1794286684-1FC69757-F617DCBB/0/0
X-purgate-type: clean
X-purgate-size: 1477

Fix the misspelling "coniguration" -> "configuration" in the
description of the -D option of both "xl migrate" and "xl save".

Found with codespell. No functional change.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Bala Andegue François Lionnel <balaandeguefrancoislionnel@gmail.com>
---
 docs/man/xl.1.pod.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/man/xl.1.pod.in b/docs/man/xl.1.pod.in
index 51405f4e3341..8964811e8917 100644
--- a/docs/man/xl.1.pod.in
+++ b/docs/man/xl.1.pod.in
@@ -494,7 +494,7 @@ Leave the domain on the receive side paused after migration.
 
 =item B<-D>
 
-Preserve the B<domain-id> in the domain coniguration that is transferred
+Preserve the B<domain-id> in the domain configuration that is transferred
 such that it will be identical on the destination host, unless that
 configuration is overridden using the B<-C> option. Note that it is not
 possible to use this option for a 'localhost' migration.
@@ -707,7 +707,7 @@ Leave the domain paused after creating the snapshot.
 
 =item B<-D>
 
-Preserve the B<domain-id> in the domain coniguration that is embedded in
+Preserve the B<domain-id> in the domain configuration that is embedded in
 the state file such that it will be identical when the domain is restored,
 unless that configuration is overridden. (See the B<restore> operation
 above).

base-commit: a5c26d0e73d4cde7c4620ea43cbd82ba7b2af02e
-- 
2.39.2



